[
  {
    "path": ".github/workflows/codeql-analysis.yml",
    "content": "name: \"CodeQL\"\n\non:\n  push:\n  pull_request:\n  schedule:\n    - cron: '39 17 * * 1'\n\njobs:\n  analyze:\n    name: Analyze\n    runs-on: ubuntu-latest\n    permissions:\n      actions: read\n      contents: read\n      security-events: write\n\n    strategy:\n      fail-fast: false\n      matrix:\n        language: [ 'java' ]\n\n    steps:\n    - name: Checkout repository\n      uses: actions/checkout@v4\n    - name: Cache\n      uses: actions/cache@v4\n      with:\n        path: ~/.m2/repository\n        key: ${{ matrix.os }}-maven-${{ hashFiles('**/pom.xml') }}\n        restore-keys: |\n          ${{ matrix.os }}-maven-\n    # Initializes the CodeQL tools for scanning.\n    - name: Initialize CodeQL\n      uses: github/codeql-action/init@v3\n      with:\n        languages: ${{ matrix.language }}\n    - name: Autobuild\n      uses: github/codeql-action/autobuild@v3\n    - name: Perform CodeQL Analysis\n      uses: github/codeql-action/analyze@v3\n"
  },
  {
    "path": ".github/workflows/esi.yml",
    "content": "name: Esi\n\non:\n  push:\n  schedule:\n    # Daily @ 8:44\n    - cron:  '44 8 * * *'\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n    - name: Checkout\n      uses: actions/checkout@v4\n    - name: Cache\n      uses: actions/cache@v4\n      with:\n        path: ~/.m2/repository\n        key: build-${{ hashFiles('**/pom.xml') }}\n        restore-keys: |\n          build-\n    - name: JDK\n      uses: actions/setup-java@v2\n      with:\n        distribution: 'temurin'\n        java-version: 8\n    - name: Build with Maven\n      env:\n        SSO_CLIENT_ID: ${{ secrets.SSO_CLIENT_ID }}\n        SSO_REFRESH_TOKEN: ${{ secrets.SSO_REFRESH_TOKEN }}\n      run: mvn -Dtest=EsiDeprecationOnlineTest test\n    - name: Send discord notification for new release\n      if: failure()\n      env:\n        DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}\n      uses: Ilshidur/action-discord@cf9b729d74ae8cd2de75a32a02594d4d4a1d4a77\n      with:\n        args: ':exclamation: eve-esi library needs to be updated'"
  },
  {
    "path": ".github/workflows/tests.yml",
    "content": "name: Tests\n\non: [push, pull_request]\n\njobs:\n  build:\n    runs-on: ${{ matrix.os }}\n    strategy:\n      matrix:\n        os: [macOS-latest, ubuntu-latest, windows-latest]\n        java: [ 8, 11, 17 ]\n    name: ${{ matrix.os }} (Java ${{ matrix.java }})\n    steps:\n    - name: Checkout\n      uses: actions/checkout@v4\n    - name: Cache\n      uses: actions/cache@v4\n      with:\n        path: ~/.m2/repository\n        key: ${{ matrix.os }}-maven-${{ hashFiles('**/pom.xml') }}\n        restore-keys: |\n          ${{ matrix.os }}-maven-\n    - name: JDK\n      uses: actions/setup-java@v2\n      with:\n        distribution: 'temurin'\n        java-version: ${{ matrix.java }}\n    - name: Build with Maven\n      env:\n        SSO_CLIENT_ID: ${{ secrets.SSO_CLIENT_ID }}\n        SSO_REFRESH_TOKEN: ${{ secrets.SSO_REFRESH_TOKEN }}\n      run: mvn -B package --file pom.xml -P skip-online-tests\n"
  },
  {
    "path": ".gitignore",
    "content": ".idea\n.vscode\ntarget\nnbactions.xml\njeveassets.log\nnbproject\nnb-configuration.xml\nnbactions*.xml\njeveassets1.log"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Git Checkout #\n\nWe usually work in two branches:\n  * New Features:  \nhttps://github.com/GoldenGnu/jeveassets/tree/develop\n  * Bug Fixes:  \nhttps://github.com/GoldenGnu/jeveassets/tree/main\n\nIt's **strongly** advised to make a new branch for each PR in your own fork\n\n# Git Clone #\n\nhttps://github.com/GoldenGnu/jeveassets.git\n\n# Compile #\n\nWe compile with the latest version of Oracle Java SE 8 (Yes, still using Java 8).\n\n## Netbeans ##\n\nOpen the project and compile (F11)\n\n## Other IDEs ##\n\nI only use NetBeans. Feel free to make a PR with instructions\n\n# Coding Guidelines #\n\n  * We use tab and not space. Be sure to disable \"expand tabs to space\" in your IDE.\n  * Swing JComponent variable names should have leading \"j\". Ex.: `jMyTable`\n  * No other variable names should use [Systems Hungarian](https://en.wikipedia.org/wiki/Hungarian_notation)\n\n# Contribute #\n\nWe are looking for (in random order):\n  * Documentation\n  * Java Programmers\n  * Dedicated Testers\n  * Translators\n\nIf you want to join the project contract `goldengnu` on the [jEveAssets Discord server](https://discord.gg/8kYZvbM) (PMs welcome).\n"
  },
  {
    "path": "changelog.txt",
    "content": "\n\n               ########             #####   \n               ########            #######  \n               ###                ###   ### \n             # ######## #  # #### ######### #### #### #### ##### ####\n               ######## #  # #    ######### #    #    #      #   #\n             # ###      #  # #### ###   ### #### #### ####   #   ####\n             # ######## #### #    ###   ###    #    # #      #      #\n             # ########  ##  #### ###   ### #### #### ####   #   ####\n             #\n           ###    #### #  # #### #  # #### #### #    #### ####\n                  #    #  # #  # ## # #    #    #    #  # #\n                  #    #### #### #### # ## #### #    #  # # ##\n                  #    #  # #  # # ## #  # #    #    #  # #  #\n                  #### #  # #  # #  # #### #### #### #### ####\n\n________________________________________________________________________________\n_8.1.2__________________________________________________________________________\n\nBug Fixes:\n-Stockpile locations was empty (issue #572)\n\n________________________________________________________________________________\n_8.1.1__________________________________________________________________________\n\nBug Fixes:\n-Bad update logic for the industry jobs time left column\n-Duplicate implants in the assets tool\n\n________________________________________________________________________________\n_8.1.0__________________________________________________________________________\n\nNew Features:\n-Added tree map to the assets and overview tools (by Ansirane Solette)\n-Add journal presets and chart (by Ansirane Solette)\n-Added new loyalty points tool (issue #48)\n-Added new npc standing tool (characters and corporations)\n-Added new skill plans tool with import functionality (by WildGear)\n-Added new agents tool\n-Added shopping list button to the group bar in the table\n-Allow adding multiple filters from the same column at once\n-Save current sorting\n-Added jump clones to assets (issue #39)\n-Added clones group in the location tree\n-Added avoid filters to the jump columns\n-Added eve market browser to the lookup menu\n-Added jita space to the lookup menu\n-Added eveconomy to the lookup menu\n-Added Quantum Anomaly loyalty points store to the lookup menu\n-Added time left column to the industry jobs tool\n-Added option to open eve gatecamp check when setting in-game route\n-Lazy initialization of tools (optional, on by default)\n\nChanged:\n-Use \" to escape SQL identifiers (instead of `)\n-Save html and sql text files as UTF-8\n-Removed lazy blacksmith from the lookup menu\n\nBug Fixes:\n-Refresh token can be null (after character transfers) (issue #570)\n-Workaround for esi contract items rate limit\n-AssetsToolSettingsPanel always trigger full update\n-Repaint filter panel on color scheme changes\n-Mining export never worked\n-Unable to load column filter in the reprocessed and price changes tools\n-Fixed duplicates in skills\n-Routing start system didn't work with stations\n-EditableListModel had bad logic\n-Adding subpiles didn't update the stockpile items\n-Stockpile zero of zero shows red (issue #553)\n-Slots statusbar manufacturing max had the wrong tooltip\n-SQL export should use NULL for null values (issue #558)\n\nCode:\n-Updated eve-esi library to version 7.0.0 (2025-09-30)\n-Updated pricing library to version 3.1.2 (updated janice locations)\n\n________________________________________________________________________________\n_8.0.3__________________________________________________________________________\n\nNew Features:\n-Added eve market browser to the lookup menu\n-Added jita space to the lookup menu\n\nBug Fixes:\n-Price update would sometimes fail due to a rounding error\n-Add support for global plex market region to fuzzwork price source\n-Added global plex market region support to outbid\n-Duplicates in account balances  (BugID: 1323)\n\n________________________________________________________________________________\n_8.0.2__________________________________________________________________________\n\nBug Fixes:\n-Static files should not be file locked (Issue #528)\n-Handle when os locks are not supported (Issue #528)\n-Ignore duplicates in the skills table (BugId: 1315)\n-Outbid could have the wrong color for types in multiple regions\n\n________________________________________________________________________________\n_8.0.1__________________________________________________________________________\n\nNew Features:\n-Added OS file locks (may help prevent errors when syncing data to the cloud)\n\nBug Fixes:\n-Fixed CtD because of duplicated assets and mining logs\n-Fixed CtD due to empty tables (users will need to restore a backup)\n-Archived industry jobs now count as done (again)\n\nCode:\n-Add 30 seconds delay to esi cache expiry to avoid stale responses\n-Ensure crash on OutOfMemoryError when updating\n-Moved clones and clone implants to their own table\n\n________________________________________________________________________________\n_8.0.0__________________________________________________________________________\n\nNew Features:\n-Import routes from system names/ids in routing tool (Issue #475)\n-Moved stockpile and reprocessing import format selecting to the import dialog\n-Save profile data in SQLite\n-Include plugged implants in assets and tracker (Issue #124)\n-Automatic naming for loadout EFT export (Issue #471)\n-Added dotlan lookup link to system on region map\n-Added contract count to the statusbar (Issue #513)\n\nBug Fixes:\n-Dotlan constellation lookup didn't replace space\n-Blueprint runs rounding did not match fuzzwork and IPH\n-Fixed how flags are handled in the tracker edit dialog\n-Tracker assets containers not in the correct corp hangar division (Issue #519)\n\nCode:\n-Added email to user agent (thanks to the ccp esi team for making this matter!)\n\n________________________________________________________________________________\n_7.9.4__________________________________________________________________________\n\nBug Fixes:\n-CtD in the stockpile tool (NPE)\n-CtD when sorting columns (NPE/ISE)\n\n________________________________________________________________________________\n_7.9.3__________________________________________________________________________\n\nBug Fixes:\n-Loadout eft export doesn't handle charges (Issue #498) [Tsuro Tsero]\n-Made string columns sorting case insensitive (Issue  #506)\n-Importing tracker data replaced existing data\n-Made stockpile match all differentiate between bpc and runs\n-Stockpile shopping list counted own items double if also in subpile\n\nCode:\n-Optimized JCustomFileChooser (reduced startup time)\n-Update eve-esi to 5.0.0 (removed esi bookmarks)\n-Updated logback to 1.3.15\n-Updated slf4j to 2.0.16\n\n________________________________________________________________________________\n_7.9.2__________________________________________________________________________\n\nBug Fixes:\n-Stockpiles collapsing after adding item (Issue #497)\n\nCode:\n-Optimization of FilterMatcher (Optional, on by default)\n\n________________________________________________________________________________\n_7.9.1__________________________________________________________________________\n\nBug Fixes:\n-Added contract locations to my stockpile locations\n-Stockpile my locations contained delivered industry jobs locations\n-Corporation contract assets owner is now an option: char/corp/both (Issue #476)\n-Changed http to https in multiple places (contributed by Salartarium)\n-Reprocessed grand total should never have a color\n-Reprocessed value and color box was wrong\n-Mining graph/tracker owners list is not sorted (Issue #491)\n-Tracker assets location filter others node didn't work (Issue #485)\n-Tracker add new locations selected is never saved (Issue#488)\n-Remember what screen to open on (Issue #462)\n-noformula and nojumps cli arguments not working (Issue #492)\n-Fixed everef lookup to point to the correct url\n-Stockpile groups behave incorrectly with filters (Issue #484)\n-Ensure stockpile cell is visible after being expanded\n-Industry jobs assets use the wrong location\n-Ensure reprocess settings are valid\n-Flagstring attribute was never saved/loaded for assets and blueprints\n-Expired contracts are not included in tracker/assets (Issue #473)\n-Stockpile industry copy jobs now output both BPCs and Runs (Issue #482)\n-Fixed a typo (Issue #479)\n-Delivered industry jobs was included in assets and stockpiles (Issue #480)\n-Stockpile target column truncation (Issue #467)\n-Price history use tick scale of selected items (Issue #466)\n-Contract/Industry jobs assets was not updated on status change by users\n\nChanged:\n-Reduced throughput for public market orders to 100\n-Removed contract status expired and added archived\n\nCode:\n-Minor optimization of the stockpile tool\n-Updated sqlite to 3.41.2.2\n-Updated logback to 1.2.13\n-Updated prices library to 3.1.1 (Issue #469)\n-Updated eve-esi library to 4.9.0\n\n________________________________________________________________________________\n_7.9.0__________________________________________________________________________\n\nNew Features:\n-Keep original name when cloning stockpiles (contributed by Ed Thelleres)\n-Show/Hide container ItemID in the Assets and Tree tools\n-Lock tool tabs\n-Stockpile can now hide the subpile tree\n-Play sound when outbid data can be updated again\n-Stockpiles shopping list CSV/Spreadsheet format\n-Added TypeID column to the materials tool\n-Added Tags column to the journal tool\n-Added Tags column to the transactions tool\n-Stockpile matching/contains all for assets\n-Added commodity category to the materials tool\n-Added corporation wallet division 1-7 columns to the isk tool\n-Added price changes tool\n-Added date values to formula columns\n-Save industry jobs history (optional, on by default)\n-Get missing item data from EveRef (data not in ESI)\n-Added packaged volume column to the assets and tree tools\n-Added link to jEveAssets discord server\n\nBug Fixes:\n-Industry Jobs blueprints show as output material\n-Stockpile group editing would sometimes lead to visual artifacts\n-Stockpile target column sometimes truncate editable numbers\n-Overflow in Formula/Jumps/Tags menus\n-Lookup menu Eve Tycoon used the wrong link\n-Fixed reactions calculations (contributed by Ed Thelleres)\n-Subpile count in the stockpile shopping list was always zero\n-Tags was bold on first render\n-CtD when importing stockpile text into new/rename stockpile\n-CtD in the stockpile tool (BugID 1074 & 1076)\n\nChanged:\n-Removed EveMarketer from the lookup menu\n-Replaced lazy-blacksmith.space with lzb.eveskillboard.com in lookup menu\n-Sort stockpile shopping list by name\n-Improved account import usability\n\nCode:\n-Update multiple missing items at the same time\n\n________________________________________________________________________________\n_7.8.1__________________________________________________________________________\n\nBug Fixes:\n-Removed outbid auto-update due to impact on esi\n-Added advanced contracting to the slots tool (Reported by MagnarM)\n\n________________________________________________________________________________\n_7.8.0__________________________________________________________________________\n\nNew Features:\n-Rename Stockpile Groups (Issue #379)\n-Group multiple stockpiles (Issue #377)\n-Delete multiple stockpiles (Issue #377)\n-Added income/expenditure/total to the journal statusbar (Issue #17)\n-Import systems to the routing tool (Issue #208)\n-Sorting contract columns now sort the contract groups too (Issue #374)\n-Added ore/ice/gas to the materials tool (Issue #391)\n-Made each group optional in the materials tool (Issue #391)\n-Added reprocessed/manufacturing columns to the contracts tool (Issue #412)\n-Import eve fitting xml to stockpiles (Issue #382)\n-Added output volume column to the industry jobs tool (Issue #418)\n-Different color for orders outbid by your own orders (Issue #416)\n-Added option to ignore multiplier for stockpile items (Issue #411)\n-Added owned column to industry jobs/market orders/contracts\n\nBug Fixes:\n-Update table cell on stockpile delete\n-Reprocessed count/account name/stockpile multiplier require enter (Issue #410)\n-Stockpile menu wasn't updating on stockpile rename\n-Added expired status to contracts (Issue #415)\n-PB materials added to stockpiles are rounded up (Issue #413)\n\nChanged:\n-Removed evemarketer.com API as a market price source\n\nCode:\n-Added fail-safe for endless outbid update loop on error\n\n________________________________________________________________________________\n_7.7.0__________________________________________________________________________\n\nNew Features:\n-Added corporation mining ledger (Issue #371)\n-Added wallet division column to the market orders tool (Issue #375)\n-Added completed by column to the industry jobs tool (Issue #389)\n-Allow users to add their own mp3 files for sound alerts (Issue #378)\n-Manufacturing price column to assets/tree/items/market orders (Issue #138)\n-Made the stockpile dialog for adding manufacturing materials more detailed\n-Retry invalid accounts from the account manager\n-Added options for more visible chart colors (Issue #387 & #404)\n-Added tooltips for filter buttons\n\nBug Fixes:\n-Stockpile total for transaction and contract columns showed wrong value\n-Ensure adding to the reprocessed tool is always great than zero\n-Industry jobs default filters didn't include cancelled/reverted (Issue #399)\n-Stockpile menu could overflow (Issue #381)\n-Shopping list and subpiles didn't work with \"matching all\" (Issue #403)\n\nChanged:\n-Made it more obvious that reprocessed count is editable\n-Made it more obvious that stockpile multiplier and target cells are editable\n-Removed evepraisal from the lookup menu\n\nCode:\n-Moved reprocessed price to the item class (Issue #373)\n-Changed audio format from wave to mp3 (Issue #378)\n\n________________________________________________________________________________\n_7.6.2__________________________________________________________________________\n\nBug Fixes:\n-Corporation accounts did not work\n-Price History remained empty after adding items\n-Tracker Show icon was not correct on startup\n-Mining Graph showed wrong values with multiple mining characters\n\nCode:\n-Updated eve-esi to 4.8.1\n\n________________________________________________________________________________\n_7.6.1__________________________________________________________________________\n\nBug Fixes:\n-Mining Graph entries was not sorted by date\n\n________________________________________________________________________________\n_7.6.0__________________________________________________________________________\n\nNew Features:\n-Added character mining ledger (graph and log) (Issue #20)\n-Added a new tool with character skills (Issue #345)\n-Added stockpile groups (issue #321)\n-Stockpile import now have BPO/PBC/Runs/Materials options (issue #357)\n-Use item count when add to stockpiles (contributed by Boran Lordsworth)\n-Added volume packaged column to the items tool\n-Allowed subpile total rows to be column sorted (issue #352)\n-Added slot type column to the assets/tree/stockpile/items tools (Issue #89)\n-Added charge size column to the assets/tree/stockpile/items tools (Issue #89)\n-Play sound when industry jobs are completed. Off by default (Issue #293)\n-Play sound when outbid data is updated. Off by default (Issue #287)\n-Added next x hours/days date filters (Issue #246)\n-Chart date labels are now scaled according to the shown range (Issue #356)\n\nBug Fixes:\n-Fixed buttons shapes in separator tables with the FlatLAF\n-Editing accounts did not update the scopes\n\nChanged:\n-Market orders and transaction volume columns now use packaged volume\n\n________________________________________________________________________________\n_7.5.0__________________________________________________________________________\n\nNew Features:\n-Streamlined stockpile import and added import into stockpile (Issue #228)\n-Including sub items are now optional for stockpile flag filters (Issue #358) \n-Added SellMin/BuyMax columns to the stockpile tool (Issue #365)\n-Added Volume/SellMin/BuyMax columns to the market orders tool (Issue #365 #364)\n-Added journal menu for finding related transactions/contracts/industry jobs\n-Added context column to the journal\n-Added Transaction ID column to the Transactions tool\n-Added Order ID column to the Market Orders tool\n-Added Job ID column to the Industry Jobs tool\n\nBug Fixes:\n-Fixed a bug in include sub container filter (always included subs) \n-Ignore leading/trailing white space on stockpile text import\n-Stockpile contracts match all wasn't working (Issue #266)\n-Fix for \"Contract not public\" and \"Contract not found\" errors (Issue #360)\n-Fixed concurrency problem in ApiIdConverter.getItemUpdate()\n\nChanged:\n-Hide zeroes that are stand-in for no data on subpiles rows in stockpile tool\n\nCode:\n-Switch to using the affiliation and names endpoints\n-Removed the contract price API (Thanks to Rihan for hosting it for so long)\n\n________________________________________________________________________________\n_7.4.0__________________________________________________________________________\n\nNew Features:\n-Added evemissioneer.com to the lookup menu (Issue #351)\n-Added option only including contracts with all the stockpile items (Issue #266)\n-Blueprint copying output as assets (Optional, off by default)\n-Set status for Contracts and Market Orders no longer in ESI (Issue #349)\n-Added Stockpile filter for industry job duration (Issue #348)\n-Added volume column to the Transaction tool (Issue #350)\n-Added Completed Date and Paused Date columns to the Industry Jobs tool\n-Added import to the reprocessing tool (Issue #335)\n-Display total minerals (minerals*count) in the reprocessed tool (Issue #302)\n-Added avg/count/max/min of selected numeric cells/column to the table menu\n-Added market orders and contracts to the slots tool (Issue #347)\n-Added Availability column to the contracts tool (Public or Private)\n\nChanged:\n-Improved the ToolTip for the Transaction Margin columns\n-Only include industry jobs if not delivered to assets yet\n\nBug Fixes:\n-Handle space and comma thousands separators when editing in tables (Issue #344)\n-Added sum table menu tooltip (was null)\n-Fixed table header not resizing on sorting (if the table didn't change)\n-Fixed StatusPanel icon labels having the copy tooltip + handle dynamic icons\n-Fixed Stockpile text import/export\n-Do not try to update public market orders with invalid accounts\n-Exclude invalid accounts from structure updates\n\n________________________________________________________________________________\n_7.3.2__________________________________________________________________________\n\nBug Fixes:\n-Fixed NPE crash in FilterManager (BugID: 1028, 1029)\n\n________________________________________________________________________________\n_7.3.1__________________________________________________________________________\n\nBug Fixes:\n-Fixed NPE in MyIndustryJob from MyBlueprint (Issue #342)\n\n________________________________________________________________________________\n_7.3.0__________________________________________________________________________\n\nNew Features:\n-Added filters to the Overview Tool (Issue #336)\n-Added Janice as a price source (Issue #328)\n-Price History (Issue #76)\n-Added category column to stockpile table (contributed by Lazaren)\n-Added various values to the industry slots tool statusbar (Issue #337)\n-Added various values to the industry slots tool table popup menu (Issue #337)\n-Added various values to the contracts tool statusbar (Issue #333)\n-Added various values to the contracts tool table popup menu (Issue #132)\n-You can now copy statusbar values by clicking on them\n-Added tool tips explain you can click to copy to the info menu and statusbar\n-Added Context Type and Context ID columns to the Journal tool\n-Added ContractID and RecordID columns to the Contracts Tool\n-Added Market Value and Market Price columns to the Contracts Tool\n-Added ItemID/Runs/ME/TE columns to the Contracts Tool (only public contracts)\n-The tracker tool now have prices for blueprints in public contracts\n-Added placeholder examples for filter import (Issue #282) \n-Improved market details character selection in the Stockpile tool (Issue #307)\n-Added mnemonic to the main menu\n-Added available label to stockpile separator row (Issue #341)\n\nBug Fixes:\n-Ignore profiles with invalid names\n-Include private structures in the contract appraisal settings reset on save\n-Refining equipment option did not accept decimal values (Issue #340)\n\nChanged:\n-Made the business tool menu a bit nicer\n-Added warning message when hitting the maximum of 25000 blueprints\n-Better warning for orders in unknown locations on outbid update (Issue #327)\n-Show warning when Nahimic Overlay is detected (Issue #313)\n\nCode:\n-Update eve-esi to 4.7.0\n-Optimized table main menu to only be updated before showing\n-Updates from setting changes now only update what is needed (Issue #334)\n-Added info level to UpdateTask (Used by \"NOT ALLOWED YET\")\n-Replaced OSXadapter with FlatDesktop from flatlaf  (Issue #329) \n\n________________________________________________________________________________\n_7.2.1__________________________________________________________________________\n\nBug Fixes:\n-Stockpile did not work with BPCs and runs\n\n________________________________________________________________________________\n_7.2.0__________________________________________________________________________\n\nNew Features:\n-Added configurable colors to the industry jobs activity column\n-Adding account automatically update existing account authorization (Issue #306)\n-Separated ore and scrapmetal reprocessing calculations/settings (Issue #312)\n-Added buttons to open the online manual (Stockpile/Table Filters/Settings)\n-Added Eve Tycoon to the lookup menu\n\nBug Fixes:\n-CLI -droptable -createtable -extended are always true (Issue #310)\n-CLI tableName is always a empty string, DROP TABLE IF EXISTS `` (Issue #310)\n-If sqlTableName is set in the GUI, It's not used for CLI export (Issue #310)\n-Fixed issues with CLI updates for multiple profiles\n-Fixed delay between starting update and the update window showing (Issue #319)\n-Fixed public market orders update progress finishing at 80% progress\n-Fixed Industry Jobs having the wrong default filters (was Transactions filters)\n-Fixed CLI export logging\n-Fixed the current filter never being displayed as empty \n-Overview export using current view (should use all)\n-Fixed an old bug where Settings dialog would resize after being shown \n-Fixed painting outside the EDT in JMainTab/MarketOrdersTab/RoutingTab\n\nChanged:\n-Improved the reprocessing settings GUI\n-Slightly better CLI help message\n-The Stockpile dialog now better convey that selecting an include is required\n-Show warning before updating outbid data with orders in unknown locations\n-Made most toolbars more compressible and normalized icon buttons width \n-Changed help menu to point to the wiki and wiki's feedback and help\n\nCode:\n-Optimized stockpile New/Clone/Delete/Import/Hide/Show\n-Optimized subpile updates in the stockpile tool\n-Upgraded maven plugins to make it work with Java 17 (contributed by Burberius)\n-Updated all the wiki links to the new site: https://wiki.jeveassets.org\n-Refactored ProfileManager/Profile/ProfileWriter/ProfileReader to be more OOP\n-Added test to ensure dev build is always off (false)\n-Ensure profile names are never duplicated\n-Better error logging for ESI errors\n\n________________________________________________________________________________\n_7.1.1__________________________________________________________________________\n\nBug Fixes:\n-Unable to export default filters\n-Can not reset columns\n-Fixed number formatting for CSV and HTML export\n-Exporting from the GUI did not use the filter and column options\n-Fixed export and filtering for formula and jump columns \n-Added option to exclude formula and jump columns from the CLI\n-Force valid separator/column options when exporting from the GUI\n\n________________________________________________________________________________\n_7.1.0__________________________________________________________________________\n\nNew Features:\n-Added CLI for exporting table data (Issue #270)\n-Tool tabs can now be rearranged by dragging the tabs (issue #298)\n-Tool tabs can now be reopen with [ctrl|command] + [shift] + t (issue #298)\n-Make a Add button in the Reprocessed tool (Issue #297 - contributed by Inoruuk)\n-Added Output Name column to the industry jobs tool (Issue #294)\n-Hide stockpile from stockpile menu (Issue #300)\n\nChanged:\n-Change character/corporation selection in the AccountImportDialog to a ComboBox\n-Allow manually enabling the eve.nikr.net account import workaround\n\nCode:\n-Updated slf4j library to 1.7.36\n-Updated logback library to 1.2.10\n-Updated jfreechart library to 1.5.3\n-Updated LGoodDatePicker library to 11.2.1\n-Updated sqlite-jdbc library to 3.36.0.3\n-Updated EvalEx library to 2.7\n\nBug Fixes:\n-Updatable didn't check for skill updates\n-ItemsWriter saved base price as double, ItemsReader expected long\n-Made SingleInstance handle headless mode\n-Possible fix for ClassCastException in StockpileItemDialog (BugId: 995)\n-Possible fix for publicMarketOrders cache time being incorrect\n\n________________________________________________________________________________\n_7.0.0__________________________________________________________________________\n\nNew Features:\n-Added support for more multibuy formats (contributed by madetara)\n-Added 'Added date' columns to Transactions/Journal tool (Issue #269)\n-Highlight recent changes in the Market Orders tool (Issue #265)\n-Highlight new items in Assets/Journal/Transactions tool (Issue #269)\n-Save contract history (optional, on be default) (Issue #258)\n-Table menu: Select ship in the Fitting Tool from Assets/Tree Tools (Issue #264)\n-Allow renaming assets in the Tree tool\n-Added Required and Owned options for the Stockpiles shopping list (Issue #235)\n-Added placeholder examples for Stockpile imports (Issue #276)\n-Added Type Name column to Assets/Tree tools (Hidden by default, issue #181)\n-Added Item Name column to Assets/Tree tools (Hidden by default, issue #181)\n-Made Market Details column's button clickable with the space key (Issue #137)\n-Added Market Details column to the Stockpile tool (Issue #256)\n-Added Average Transaction Price column to the Stockpile tool (Issue #256)\n-Add Job Cost column to Industry Jobs (Issue #284, contributed by Kaylee Syntax)\n\nChanged:\n-Use AutoCompleteSupport Filter Mode Contains (Issue #274)\n-Show critical error messages always on top\n\nCode:\n-Updated FlatLaf library to 1.6.4\n-Updated eve-esi library to 4.6.1\n-Fixed lgtm.com alerts (issue #275)\n\nBug Fixes:\n-Fixed a case where the changed theme colors was not applied\n-Fixed changing color settings triggering an eventList update when not needed\n-Fixed wrong class types in TableFormats (BugId:  969, 971, 972, 979 and more)\n-Fixed tree table sorting columns really slowly\n-Fixed settings being saved while columns was being moved\n-Fixed NPE in XPDefaultRenderer (JDK-6429812, BugId: 959, Issue #279)\n-Fixed system look and feel being listed twice in the color settings\n-CDE/Motif did not have windows Copy/Paste/Cut/Select All shortcuts\n-Fixed Market Detail column's button rendering on various look and feels\n-Fixed NPE in FlatTitlePane (BugId: 980, Issue #281)\n-Journal is missing entries (Issue #218, Fixed in ESI by CCP! <3)\n-Possible fix for CtD on when setting a new price (Issue #277)\n-Fixed CtD before warning for \"in zip file\" and \"library missing\" was shown\n-Fixed jEveAssets losing focus when loading/creating profiles\n-Fixed meta and tech level for esi updated items\n-Added missing read lock for FilterList when updating statusbar\n\n________________________________________________________________________________\n_6.9.6__________________________________________________________________________\n\nBug Fixes:\n-Possible fix for CtD (BugID: 973, 974, 975, 976, 977, 978)\n\nChanged:\n-Ships are now included in their own totals in the Tree Tool (Issue #271)\n\n________________________________________________________________________________\n_6.9.5__________________________________________________________________________\n\nBug Fixes:\n-Removed incorrect column tooltip for formula columns\n-Formula columns did not work with infinity decimals (1.333) AGAIN! (Issue #268)\n-Exporting table data used disabled filters resulting in incomplete output\n\nCode:\n-Updated eve-esi library to version 4.6.0 (fixing account update)\n\n________________________________________________________________________________\n_6.9.4__________________________________________________________________________\n\nBug Fixes:\n-Fixed tree tool totals (parent items, statusbar, table menu)\n-Fixed Formula columns not working with results like 1.333...\n-Fixed price update failing (now fail when 25% of all price are zero, was 10%)\n-Table menu sum did not work correct for values between 0.0 and 1.0 (Ex: 0.14)\n\nCode:\n-Better handling of error throwables during update\n-Optimized Tree tool collapse and expand all\n-Hopefully fixed very slow sorting with many active filters in the Tree tool \n\n________________________________________________________________________________\n_6.9.3__________________________________________________________________________\n\nBug Fixes:\n-Formula column precision was set to 7 (now use unlimited)\n-Tree tool was missing icons for Planetary Industry\n-Stockpile total row did not work correctly with formula columns (Issue #261)\n-Fixed ArithmeticException in EnumTableFormatAdaptor (BugId: 951, 952)\n\nCode:\n-Updated eve-esi to version 4.5.0\n\n________________________________________________________________________________\n_6.9.2__________________________________________________________________________\n\nBug Fixes:\n-NullPointerException in ExportDialog (BugId: 948, 949)\n-Fixed Formula columns export\n-Export column selection list not enabled when selected after restart\n\n________________________________________________________________________________\n_6.9.1__________________________________________________________________________\n\nChanged:\n-Removed zKillboard/HammerTime structure update (Both are dead)\n\nCode:\n-Simplified SettingsUpdateListener calls\n\nBug Fixes:\n-NPE in ColumnManager (BugId: 941, 947)\n-Filter logic is not updated when switching between numeric/string/date columns\n-Fixed IllegalArgumentException in JFormulaDialog (BugId: 944)\n-Loading filter with formula/jump column crashes jEveAssets (BugId: 943, 942)\n-Restoring current filter failed for filters with formula/jump columns\n-Fixed StringIndexOutOfBoundsException in JFormulaDialog (BugID: 946)\n\n________________________________________________________________________________\n_6.9.0__________________________________________________________________________\n\nNew Features:\n-As complete a restore at relaunch as possible (Issue #216) [Dultas]\n-Formula Columns (Issue #45)\n-Added evecookbook.com to the lookup menu\n-Added locationID column to the Assets tool (Issue #257)\n\nChanged:\n-Made Midpoint price fallback on a single price if one of the prices is zero\n\nCode:\n-Updated eve-esi library to version 4.4.0\n\nBug Fixes:\n-NPE from IndustryJob.getProductTypeID() (BugID: 901, 921)\n-Fix non extended sql inserts not working [Dultas]\n-SQL export doubles now use 2 decimals (Issue #252) [Dultas]\n-Active ships 2nd+ level children didn't have the right locationID\n-Partial fix for TaskDialog never being garbage collected\n\n________________________________________________________________________________\n_6.8.0__________________________________________________________________________\n\nNew Features:\n-Added current location and ship columns to Industry Slot and Isk (by Dutlas)\n-Added system and constellation columns to all tools with a location column\n-Added constellation view to Overview\n-Added constellations to zKillboard and Dotlan location lookup\n-Added constellations to Stockpile locations\n\nBug Fixes:\n-Fix spelling error in Tracker delete-item warning (by jhmartin)\n-NPE in AssetAddedData.getAdd() (BugID: 893)\n-Outbid did not handle equal prices\n-Market order outbid was never being cleared of old entries (Issue #239)\n-Fixed Transactions Profit % column giving the wrong value\n-Better handle when price APIs return zero prices\n-Industry Slots won't load filters (Issue #242)\n-New columns at the end of the TableFormat was added at the wrong index\n-Ensured Copy, Paste, Cut, and Select All shortcuts works on a Mac (Issue #243)\n-Fixed corporation transactions wallet division incorrectly showing division 1\n\n________________________________________________________________________________\n_6.7.1__________________________________________________________________________\n\nBug Fixes:\n-Crash when copying from tables (BugID: 883, 884, 888, 889)\n-Possible fix for AIOOBE crash in StockpileDialog (BugID: 887)\n-Deleting a stockpile did not work correctly for subpiles\n-Subpiles was missing items (Thanks to Lak Moore)\n\n________________________________________________________________________________\n_6.7.0__________________________________________________________________________\n\nNew Features:\n-Add Blueprint materials (with ME) as Stockpile items (Issue #182)\n-Changeable color for completed/delivered Industry Jobs (Issue #190)\n-Added Dark Nimbus look and feel\n-Added toggle all for Tracker skill points filter dialog\n-Include hidden stockpiles in Export (Issue #211)\n-Added Outbid delta column to the Market Order tool (Issue #204)\n-Added Group column to the Market Orders tool (Issue #220)\n-Added Market Price/Margin/Profit columns to the Market Orders tool (Issue #222)\n-Highlight Market Orders prior to expiring (Issue #219)\n-Highlight Market Orders with remaining quantity below x percent (Issue #225)\n\nChanged:\n-Better tool tip for the Market detail column\n-Added tool tip label for the market orders JComboBoxes\n-Stockpile \"my locations\" no longer include closed market order locations\n-Routing start system is now select via an auto completed JComboBox (Issue #209)\n-Export DATETIME instead of DATE in SQL Export (Issue #215)\n-Added thousand separator to HTML export numbers\n\nCode:\n-Updated eve-esi to 4.2.0\n-Made Lookup menu links testable\n\nBug Fixes:\n-Fixed the width for Tracker skill points filter dialog\n-NumberValue sub classes not respecting the copy decimal separator (Issue #195)\n-Better look and feel preview (Now use previewed LAF height)\n-Include \"jEveAssets\" in error and update message dialogs\n-All column filters could not be saved/loaded\n-Overview Tool did not display any data when opened on startup (work from menu)\n-Workaround JTextField with backgrounds on Nimbus look and feel\n-Prevent updating outbid when there is no active orders\n-MarketLog import did not use the latest outbid data\n-Fixed Overview table menu not work with groups\n-Update Khon.Space to Lazy-Blacksmith (Issue #217)\n\n________________________________________________________________________________\n_6.6.3__________________________________________________________________________\n\nNew Features:\n-Added option to change decimal separator used when copying (Issue #195)\n-Greatly improved the GUI on the Nimbus and GTK+ (Linux) look and feels\n-Improved the GUI on all look and feels\n\nChanged:\n-Better error message for invalid authorization (JWT is null) (Issue #193)\n-Better warning message for \"waiting for cache to expire\"\n-Stockpile include now start blank (forcing discovery of the options)\n\nCode:\n-Updated eve-esi to 4.1.0\n-Updated all 3rd party libraries to the latest version \n\nBug Fixes:\n-Skill point filter was always adding 5m (now it just enforce 5m minimum)\n-NPE in FilterMatcher (BugId: 850)\n-Components size was not adjusted to LAF\n-Missing constructor for ContractPriceItem on Java 14 (BugId: 854)\n-Fixed default market orders table sort order\n-Incorrectly mark some assets and stockpile items as blueprints\n-Save/load invalid account state\n-Only run Faction Warfare once on update\n-Fixed khon.space invention lookup not working for blueprints\n-Removed eve-marketdata.com and evemarkethelper.net from the lookup menu\n-Checks periodical if the marketlogs directory exist (if missing on startup)\n\n________________________________________________________________________________\n_6.6.2__________________________________________________________________________\n\nNew Features:\n-Added stockpile multiplier and subpile target in the shopping list (Issue #189)\n\nChanged:\n-Subpiles are now include when hidden (Issue #188)\n\nBug Fixes:\n-Industry Slots did not include corporation jobs\n\n________________________________________________________________________________\n_6.6.1__________________________________________________________________________\n\nNew Features:\n-Skill point filters are now shared between the Isk and Tracker (Issue #187)\n\nBug Fixes:\n-Stockpile did not handle editing correctly (Issue #186)\n\n________________________________________________________________________________\n_6.6.0__________________________________________________________________________\n\nNew Features:\n-Use ZKillboard's Structure API\n-Transaction Margin (Issue #153)\n-New Tool: Industry Slots (Issue #179)\n-Added skill points value to Tracker and Isk Tools (Issue #116)\n-Import/Export Routes (Issue #167)\n-Cascading Stockpiles AKA Subpiles (Issue #141)\n-Toggle reprocessing colors on toolbar Assets/Tree (Issue #151)\n-Add Transaction Filter Table Menu (Issue #165)\n\nCode:\n-Updated pricing library to 2.1.2\n\nBug Fixes:\n-Bad layout in SettingsDialog when opened the first time on some look and feels\n-Ask before overwriting a route when saving and order saved routes alphabetical\n-Stockpile EFT import ignore loaded charges (Issue #154)\n\n________________________________________________________________________________\n_6.5.1__________________________________________________________________________\n\nBug Fixes:\n-Unable to delete/edit stockpile entries (Issue #176) [Thanks to Nickand87]\n\n________________________________________________________________________________\n_6.5.0__________________________________________________________________________\n\nNew Features:\n-BPC colors can now be changed (Issue #150)\n-Added assets colors to the tree table\n-Better GUI on the color settings panel (tested on Ubuntu and Windows)\n-Improved math for Transaction Profit/Price columns (Issue #152)\n-Added option to select what price to use for profit calculations\n-Added ToolTips to a lot of columns\n-Changeable Look and Feel + Dark Theme (Issue #66)\n-Faction warfare system ownership column to Assets/Tree\n-Added Reprocessed price column to Market Orders tool\n-Stockpile match installer for industry jobs (Issue #164)\n\nChanged:\n-Stockpiles are now sorted case-insensitive\n\nCode:\n-Updated dom4j library to 2.1.3 (security vulnerability)\n-Updated eve-esi to 4.0.0 (major change: all enums can now be null)\n\nBug Fixes:\n-Possible fix for outbid count being wrong (Issue #158)\n-Possible fix for account error JWT is null (Issue #171)\n-Contracts Appraisal API failing when including private structures (Issue #172)\n-Outbid range for sell orders always used region (Issue #170)\n-Made StatusPanel.progressStatus thread safe (BugID: 830)\n-Fixed Market Orders export having a bad value for Market Details column\n-Possible fix for Stockpile CtD (BugId: 833)\n-Ensure outbid doesn't have outdated data (Possible fix for #158 and #170)\n\n________________________________________________________________________________\n_6.4.1__________________________________________________________________________\n\nBug Fixes:\n-Isk/Values best fitted ship including stacks of ships\n-Use universe/names less (since it's being unstable)\n-Fixed unexpected end of JSON input: Use JWT (Issue #163)\n-Ensure public market orders are unique (Issue #158)\n\n________________________________________________________________________________\n_6.4.0__________________________________________________________________________\n\nNew Features:\n-Customizable colors\n-Colorblind friendly color theme\n-Tracker: Edit the order of generated routes\n-Tracker: Added Logarithmic scaling (linear still default)\n-Tracker: Remember selected owners between restarts and updates\n-Added ToolTips to Outbid $/Outbid #/Market Details columns\n-Added SUM of selection/column to the table menu\n-Duplicate filter entries\n-Warning levels for updates\n-Added update warning for missing corporation roles\n-Improved setting dialog GUI on ubuntu\n-Serve html response on SSO callback url instead of redirecting to eve.nikr.net\n\nCode:\n-Updated to routing 2.0.0 and graph 2.0.0 (both now support generics)\n\nBug Fixes:\n-TaskDialog move a tiny bit when showing/hiding errors\n-Stockpile import had never ending loop of asking what stockpile to import\n-Made Stockpile text import more resilient to crashing (BugID: 800)\n-Made MarketLog import more resilient to crashing (BugID: 823)\n-Made Xml reader more resilient to crashing (BugID: 822, 821, 820, 819)\n\n________________________________________________________________________________\n_6.3.2__________________________________________________________________________\n\nBug Fixes:\n-Normalized apostrophe, quotes, and hyphen symbols for filters\n-Assets names update doesn't include all valid items (Issue #130)\n-Fixed crash to desktop when copying to the clipboard (BugID: 818)\n\n________________________________________________________________________________\n_6.3.1__________________________________________________________________________\n\nBug Fixes:\n-Fixed edited accounts using the old access token\n-Fixed market details column not handling corporation orders\n\n________________________________________________________________________________\n_6.3.0__________________________________________________________________________\n\nNew Features:\n-Market Orders: Use Public Market Orders to find outbid orders\n-Market Orders: Added Market Details column\n(Button opens market details in-game and copy fixed price to clipboard)\n-Market Orders: Automatically read Marketlogs exports\n(Find outbid orders and copy fixed price to clipboard)\n-Market Orders: Added Edits column\n-Select tool to show at startup or restore tools from last session\n-Support LowSec and NullSec regions as price sources locations\n\nCode:\n-Updated to eve-esi-3.7.0\n\nBug Fixes:\n-Fixed tracker popup menu getting more and more useless separators\n-Better error messages for citadel updates\n\n________________________________________________________________________________\n_6.2.4__________________________________________________________________________\n\nBug Fixes:\n-Fixed splash screen falsely claiming to be a dev build\n\n________________________________________________________________________________\n_6.2.3__________________________________________________________________________\n\nBug Fixes:\n-Assets update fails with ships in the frigate escape bay (Thanks to Ashterothi)\n\n________________________________________________________________________________\n_6.2.2__________________________________________________________________________\n\nBug Fixes:\n-Fixed crash to desktop when exporting SQL (Thanks to Neugeniko)\n\n________________________________________________________________________________\n_6.2.1__________________________________________________________________________\n\nBug Fixes:\n-Fixed crash to desktop in Contracts/Stockpile (thanks to Dak Torin)\n\n________________________________________________________________________________\n_6.2.0__________________________________________________________________________\n\nNew Features:\n-Tree now preserve expanded state on update\n-Added Market Orders column: Issued (first known issued date)\n-Added Market Orders column: TypeID\n-Added Market Orders column: Broker's Fee\n-Added Transaction column: Profit/percent/price\n-Added Transaction column: Tax\n-Added Export/Import Stockpiles as Text\n-Added broker's fee and tax to the table menu selection info\n-You can now copy selection info from the table menu by clicking the menu item\n-Added support for column header tooltips \n-Added tooltip to jumps column headers\n\nChanged:\n-Transactions Value column now include tax\n-Copyright updated to 2020\n-Market Orders column: Issued renamed Updated (last known issued date)\n\nCode:\n-Fixed memory leak in MyLocation/Citadel\n\nBug Fixes:\n-Possible fix for duplicated value in the tree tool\n-Better BPO detection for Industry Jobs\n-Runs column does not match with the value \"BPO\". Only match \"-1\"\n\n________________________________________________________________________________\n_6.1.3__________________________________________________________________________\n\nChanged:\n-Removed EveKit (Accounts can be migrated to ESI)\n\nBug Fixes:\n-Fixed update error on Java 11+ (SSLHandshakeException because of forced SSLv3)\n\n________________________________________________________________________________\n_6.1.2__________________________________________________________________________\n\nCode:\n-Use characters/affiliation instead of characters/{character_id} (faster)\n-Use universe/names instead of corporations/{corporation_id} (faster)\n\n________________________________________________________________________________\n_6.1.1__________________________________________________________________________\n\nBug Fixes:\n-Structure updates was failing on 404\n-Better handling of fatal errors during updates\n-Possible fix for market orders never closed\n\nChanged:\n-Added wiki links\n\n________________________________________________________________________________\n_6.1.0__________________________________________________________________________\n\nNew Features:\n-Update missing item data from ESI (not all item data is available via ESI, yet)\n-Tracker: Use asset prices for sell orders (Optional, off by default)\n-Tree tool: Added more groups\n-Tree tool: Container types show totals of sup items\n-Stockpiles: Show/Hide Stockpiles per Profile\n-Keep the splash screen open after dismissing an update dialog\n-Better error message for OutOfMemoryErrors\n\nBug Fixes:\n-Fixed duplicates in the Tree Tool\n-Better handling of multiple profiles in the tracker\n\nCode:\n-Better support for package managers\n-Updated evekit library to 6.0.0\n-Updated eve-esi library to 3.3.0\n-Updated contracts-pricing library to 2.0.0\n\n________________________________________________________________________________\n_6.0.4__________________________________________________________________________\n\nBug Fixes:\n-Could not add new accounts (not working with IPv6, now force IPv4)\n\n________________________________________________________________________________\n_6.0.3__________________________________________________________________________\n\nBug Fixes:\n-Did not respect the expires header on empty items in the Contract Appraisal API\n\n________________________________________________________________________________\n_6.0.2__________________________________________________________________________\n\nBug Fixes:\n-Fixed CtD (NPE) in Tree and Stockpile Tools (BugID: 755, 756, 757, 758, 759)\n-Fixed missing contract prices in the Tree tool\n-Stockpile did not respect BPC contract price settings\n\nChanged:\n-Industry Jobs output column now show total runs when copying\n\n________________________________________________________________________________\n_6.0.1__________________________________________________________________________\n\nNew Features:\n-Send feedback to the Contract Appraisal API\n-Prices for BPCs and BP runs in the stockpile\n-Added \"New\" update option for Contract Appraisal\n\nBug Fixes:\n-Can not set BPC price\n-Incorrect update time for Contract Appraisal (sometimes missing a day)\n\n________________________________________________________________________________\n_6.0.0__________________________________________________________________________\n\nNew Features:\n-Added Contracts Appraisal API\n-Regular Expression Filter\n-Added Planetary Facilities\n-Added undo/redo to all text components\n-Better planetary assets integration throughout the program\n\nBug Fixes:\n-Stockpile always showed location all\n-Excluded planets from the routing tool and UI menu (not valid destinations)\n-Possible fix for BugId: 750\n\nChanged:\n-Tracker now ignore sell orders that is still in assets (to avoid duplicates)\n\nCode:\n-Optimization of the Routing and Overview tools\n-Fixed issues found by LGTM.com\n-Better Uncaught Exception Handling\n-Better error handling for JSon reading and writing (BugId: 744)\n-Fixed problem with Java 11 and Java 12 (still primarily developed on Java 8)\n\n________________________________________________________________________________\n_5.9.0__________________________________________________________________________\n\nNew Features:\n-Added meta column to the stockpile\n-Update from the command line (with -backgroundupdate)\n-Use Bookmark endpoints to resolve structures (require new scope)\n-Planetary Assets (require new scope)\n-Multibuy export in the stockpiles shopping list\n-Eve multibuy export in the Copy+ menu\n-Blueprint Runs in the Stockpile tool\n-Evepraisal in the loopup menu\n-Adam4EVE in the lookup menu\n-Eve-MarketData in the lookup menu\n-eve-hub in the lookup menu\n-evemarkethelper in the lookup menu\n-khon.space in the lookup menu\n\nBug Fixes:\n-Fixed system names in pricing regions selector. (Contributed by AnrDaemon) o7\n-Fix for Bug ID: 739 (thread safety)\n\nChanged:\n-Removed eve-markets from the lookup menu (dead)\n\nCode:\n-Better retry logic for ESI requests\n-Updated EveKit library to 5.0.1\n-Updated eve-esi to 3.2.0 (major improvements)\n-Updated pricing to 2.1.1\n\n________________________________________________________________________________\n_5.8.2__________________________________________________________________________\n\nBug Fixes:\n-ESI structure import stops on 404 errors\n-Minor improvement to thread safety on update\n\n________________________________________________________________________________\n_5.8.1__________________________________________________________________________\n\nNew Features:\n-Added fuzzwork as a price data source\n\nBug Fixes:\n-Fixed price updates continuing download after canceled\n\nChanged:\n-Removed eve-marketdata as a price source and from the lookup menu\n-Prioritize user and esi citadel data over hammerti.me\n\nCode:\n-Updated eve-esi to 2.4.0\n-Updated pricing library to 2.0.0\n\nNotes:\n-Give the fuzzwork price source a try. It's lightning fast.\n\n________________________________________________________________________________\n_5.8.0__________________________________________________________________________\n\nNew Features:\n-Improved Stockpile filters\n-Advanced Filters (OR groups)\n-Added zKillboard item database to the lookup menu\n-Added EVE Ref item database to the lookup menu\n\nBug Fixes:\n-Crash: NPE in JMenuUI (BugID: 708)\n-Corporation market orders on characters in the isk/values/tracker tools\n\nCode:\n-Moved asset added data to SQLite\n\n________________________________________________________________________________\n_5.7.4__________________________________________________________________________\n\nBug Fixes:\n-Better handling of EveKit updates\n\n________________________________________________________________________________\n_5.7.3__________________________________________________________________________\n\nBug Fixes:\n-All packed assets now have the correct volume (require latest data update)\n-Better handling of corrupted settings and profile files\n-Better handling of invalid ESI accounts (auth failures)\n-Settings not saved when adding items to the stockpiles\n\nCode:\n-Updated eve-esi to 2.3.5 (URL encoding fixed)\n\n________________________________________________________________________________\n_5.7.2__________________________________________________________________________\n\nBug Fixes:\n-ESI import showed invalid account before authorizing on the EVE SSO web site\n-ESI workaround for universe names not resolving faction ids\n-Overview displayed wrong system/region for systems\n-Wrong count of total rows in some tools\n-Date filter equals/before/after did not match correctly\n-Column name was not always fully visible when sorted\n-Tracker asset filter selecting and filtering was not working correctly\n-Fixed two crash bugs (BugID: 693 and 687)\n\nChanged:\n-Always show output value in table (table menu and statusbar unchanged)\n-Ask to include all tracker asset filter locations (once)\n-Delete unused library files\n\nOptimizations:\n-Column resizing (All tools with tables - also faster filtering)\n-Materials Tool\n-Separator Table (Stockpile/Contracts/Materials/Reprocessing/Loadout)\n\nCode:\n-Updated eve-esi to 2.3.4 (Use PKCE, instead of client secret)\n\n________________________________________________________________________________\n_5.7.1__________________________________________________________________________\n\nBug Fixes:\n-Fixed crash when opening the Tree tool (BugId: 681, 682, 683, 684)\n-Container column was not updated when changing asset names\n-Would not always use the newest data\n-Fixed error with name updates (faction ids)\n\n________________________________________________________________________________\n_5.7.0__________________________________________________________________________\n\nNew Features:\n-Major optimization of settings IO\n-Allow unchecking all unknown locations in the tracker assets filter\n-Tracker assets filter search\n-Import tracker data from file\n-Added issued by column to market orders\n-Updated jmemory (Warn on 32bit Java and better error messages)\n-Now run with jmemory after update (if jmemory was used to start jEveAssets)\n-More memory optimiaztions\n-Better handling of structure assets\n\nBug Fixes:\n-Tracker purge removed too much\n-Asset safety is not an unknown location\n\n________________________________________________________________________________\n_5.6.0__________________________________________________________________________\n\nNew Features:\n-Added Fuzzwork Blueprint Calculator to the Lookup menu\n-Added Fuzzwork Market to the Lookup menu\n-Added Eve Info item database to the Lookup menu\n-Delete known invalid tracker asset locations\n-Major Memory Optimizations\n-CPU Optimization of Tracker, Routing, Ship Fittings, Stockpile\n\nBug Fixes:\n-Industry Jobs Assets was missing ME/TE/RUNS and had wrong BPO/BPC\n-Workaround for deleted PI structures\n\nChanged:\n-Removed Eve-Central from the lookup menu\n-Removed Conquerable Stations\n-Ignore Wormhole and Abyssal locations in the routing tool\n\n________________________________________________________________________________\n_5.5.1__________________________________________________________________________\n\nNew Features:\n-Backup files are now zipped\n\nBug Fixes:\n-Failed to exit when a minimized update was running\n-ESI Contract Items failed with 404\n-Stockpile manufacturing did not include reactions\n-Workaround for ESI universe/names not supporting factions\n-Better handling of profiles (including a bug fix and optimization)\n\n________________________________________________________________________________\n_5.5.0__________________________________________________________________________\n\nBug Fixes:\n-New logic to ensure uniqueness of Journal and Transactions\n-Possible fix for tracker problems\n-Don't try to update active ship via EveKit for corporations\n\nChanged:\n-Removed support for the now dead XmlAPI\n-Increased the amount of times ESI retries from 1 to 3\n-Update error message from \"Not allowed yet\" to \"Waiting for cache to expire\"\n-Added warning when EveKit accounts have invalid ESI auth\n-Workaround for 9e18 locations\n\nCode:\n-Updated eve-esi to 2.1.8\n-Updated EveKit to 2.4.0.2\n\n________________________________________________________________________________\n_5.4.3__________________________________________________________________________\n\nCode:\n-Updated EveKit library to 2.4.0 (ESI data model)\n-Updated EveAPI library to 7.0.4\n-Updated eve-esi library to 2.1.5\n\n________________________________________________________________________________\n_5.4.2__________________________________________________________________________\n\nBug Fixes:\n-Fixed bug introduced in 5.4.1 (BugId: 641/642/644)\n\n________________________________________________________________________________\n_5.4.1__________________________________________________________________________\n\nNew Features:\n-Get closed Market Orders from ESI (new endpoints)\n\nBug Fixes:\n-Fixed a few bugs (BugId: 635 and 631)\n\nChanged:\n-Split Market Orders quantity into two columns (easier export)\n\n________________________________________________________________________________\n_5.4.0__________________________________________________________________________\n\nNew Features:\n-Added Manufacturing/Reactions output to the Assets tool (Optional)\n-Added shopping list and eve multibuy import to the stockpile\n\nBug Fixes:\n-Stockpile Shopping List did not distinguish between BPC and BPO\n-Industry Jobs in the assets list now have the correct flag\n\nCode:\n-Updated glazedlists to 1.11.0\n-Updated eve-esi to 2.0.2 (fix missing contracts - x-pages)\n\n________________________________________________________________________________\n_5.3.0__________________________________________________________________________\n\nNew Features:\n-Added count to Transactions statusbar and popup menu.\n-Added difference between start and end date to the Tracker tool statusbar \n-Last X Hours filter\n-Unknown locations in the tracker are now resolved by citadel/structure updates\n-Lookup for fuzzwork item database\n-Structure update and EveKit tracker import can now be done in the background\n\nBug Fixes:\n-Old Market Orders from the XmlAPI was never marked as done\n-ESI error limit did not handle negative wait values\n-Filter cache was not updated after adding/removing Tags\n-Stockpile Export/Import could duplicate Tags\n\nCode:\n-Warn about assets with bugged locations\n-Better handling of settings update failure\n-Updated JFreeChart to version 1.5.0 (Fix a few problems)\n-Updated EveKit library to 4.0.2\n-Updated eve-esi to 2.0.0\n\n________________________________________________________________________________\n_5.2.0__________________________________________________________________________\n\nNew Features:\n-Added Export in EFT format in Ship Fittings Tool\n-ESI UI: Lookup owners in-game\n-Routing: Added stations\n-Routing: Save/Load calculated routes\n-Routing: Add locations from other tools\n-Check for program/data updates once an hour and show result on the statusbar\n\nBug Fixes:\n-Splash screen disappear before frame is shown\n-Market Orders missing from Stockpile\n-Settings closed when pressing Apply\n-Ignore empty fittings when exporting all fittings to Eve XML fittings format\n-Fixed locations menus (again)\n-Fixed BugID: 620\n-Possible fix for BugID: 622 621\n-Possible fix for BugID 326\n\nChanged:\n-A few Routing GUI improvements\n-Added Cargo to Eve XML Fittings export\n\nCode:\n-Updated eve-esi-dev to 1.4.9 (use Double for ISK values)\n\n________________________________________________________________________________\n_5.1.1__________________________________________________________________________\n\nBug Fixes:\n-ClassCastException in StockpileItemDialog (BugID: 615)\n-Fixed Eve XML fittings export format to be compatible with pyfa\n-Tree Tool locations values was wrong\n-Fixed minor issue with the window settings\n-Possible fix for Issue #24 (BugID: 616)\n-Journal error code 500 (ESI Bug FIx)\n-ESI singleton bug (missing: container/ship names, fittings - ESI Bug FIx)\n\nCode:\n-Memory Optimization\n-Use the dev version of ESI (eve-esi-dev - fix the singleton bug)\n\n________________________________________________________________________________\n_5.1.0__________________________________________________________________________\n\nNew Features:\n-Assets: Include active ship in space (ESI)\n-Table Menu: Open in-game market/contract windows and set waypoint\n-Routing Tool: Set in-game waypoints\n-Support reactions in Industry Jobs and Stockpile (counted as manufacturing)\n-Added more options to the structure update\n\nBug Fixes:\n-Jumps menu clear was not working\n-Jump columns was sometimes empty\n-Editing unknown locations in the overview tool did not work\n-Fixed a lot of issues with menus that use locations\n-Industry Jobs Reactions was marked incorrectly\n-Industry Jobs now count canceled and reverted as delivered\n-Better BPO detection for Industry Jobs\n-Disabled filter was included when exporting\n-Fixed Journal update errors (ESI bug fix)\n\nChanged\n-Better Account Manager user interface\n-Better column selection in the export dialog\n\nCode:\n-Better uncaught exception handling\n-Update eve-esi to 1.4.6\n\n________________________________________________________________________________\n_5.0.5__________________________________________________________________________\n\nBug Fixes:\n-Contracts was missing names/locations after update\n-420 in corporation contract items (rate limit)\n-Industry Job reactions was not being marked correctly\n\nChanged:\n-Updated the help menu to be more helpful\n\nCode:\n-Updated eve-esi to 1.4.4\n-Optimized filtering (with cache)\n\n________________________________________________________________________________\n_5.0.4__________________________________________________________________________\n\nBug Fixes:\n-Industry jobs was missing reactions activity (Failed update)\n-Tracker related crash bugs\n-Structure update failed on Java 9\n-Citadels was being incorrectly marked\n-Profiles was not being saved on shown change\n-Workaround for crash bug with BugID: 492 (Java Bug)\n-Fixed problem with Industry Jobs locations\n\nChanged:\n-Better GUI for the structure update\n\nCode:\n-Update jFreeChart to 1.0.19\n\n________________________________________________________________________________\n_5.0.3__________________________________________________________________________\n\nNew Features:\n-Location Settings\n-Export/Import ESI Keys\n\nBug Fixes:\n-Fixed the bugs introduced in 5.0.2\n\nCode:\n-Optimized update of dynamic values (Asset Names/Prices/Locations)\n\n________________________________________________________________________________\n_5.0.2__________________________________________________________________________\n\nNew Features:\n-Now shows an animation while doing lengthy tasks\n\nBug Fixes:\n-Fixed CtD when changing profile\n-Fixed a few bugs related to price updates (BugID: 559, 558)\n-Possible fix for XML loading bugs (BugID: 548,  564, 563)\n-Fixed contracts NPE (BugID: 561, 557, 561, 560)\n-Fixed ESI corporation contract items update failure (BugID: 555, 565)\n-Fixed ESI structure update failure\n-Could not reset user locations\n\nChanged:\n-Now mark ESI market orders no longer in the return as Unknown\n-ESI Structure updates have been move to Its own update window\n\nCode:\n-Increased the maximum log size\n-Updated EveAPI library to 7.0.2\n-Updated Pricing library 1.8.0\n-Update jmemory to 3.0.0\n\n________________________________________________________________________________\n_5.0.1__________________________________________________________________________\n\nNew Features:\n-Added EveMarketer to lookup menu\n\nBug Fixes:\n-Ignore trained skill\n-Missing names (again and again)\n-Manually close ESI orders when they're removed from the return (Workaround)\n-Contract Items and Assets incorrectly marked as BPO (Workaround)\n-Orders have wrong owner (when both character and corporation order is present)\n-Better handling of headless Java\n-Workaround for Desktop.browse\n-Fixed another issue with adding ESI accounts\n-Duplicate assets\n-Possible fix for errors when updating ESI Contract Items\n-Possible fix for 502 in ESI Structure endpoint\n\n________________________________________________________________________________\n_5.0.0__________________________________________________________________________\n\nNew Features:\n-Support for ESI Corporation accounts\n\nBug Fixes:\n-Fixed missing names (BugID: 542, 544, 546)\n-Fixed the compatibility issue with Java 9 (BugID: 545, 547)\n-Possible fixed for NPE in JContractsTable (BugID: 551)\n-A few minor bug fixes\n\nCode:\n-Better error handling (again)\n\n________________________________________________________________________________\n_4.5.2__________________________________________________________________________\n\nBug Fixes:\n-Fixed missing names\n-Updated BPO/BPC detection code\n-Better error handling for update threads\n-Better handling of cancel while updating\n-Better ESI error limit support\n-Made RawConverter thread safe\n-Better ESI migration warning\n\n________________________________________________________________________________\n_4.5.1__________________________________________________________________________\n\nBug Fixes:\n-Fixed Market orders duplicates\n-Fixed transactions fail to convert float to integer\n-Fixed NPE in ProfileWriter (BugID: 539)\n-Fixed NPE in AbstractEsiGetter \n-Fixed NPE in MyIndustryJob (BugID: 541)\n-Possible fix to NPE in UpdateTask (BugID: 540)\n-Possible fix for universe/names errors (BugID: 542)\n\nCode:\n-Updated eve-esi library to 1.4.1\n\n________________________________________________________________________________\n_4.5.0__________________________________________________________________________\n\nNew Features:\n-Support for ESI characters (shorter cache times, with a few exceptions)\n-Update ESI/EveKit/EveAPI in threads (faster updates)\n-Added support for evemarketer.com as a price source\n\nCode:\n-Completely new data backend with support for EveAPI/EveKit/ESI\n\n________________________________________________________________________________\n_4.1.5__________________________________________________________________________\n\nBug Fixes:\n-ESI was not working\n\nChanged:\n-Eve-Central is disabled (Will use Eve-MarketData instead)\n\n________________________________________________________________________________\n_4.1.4__________________________________________________________________________\n\nBug Fixes:\n-Failed price updates set all prices to zero (pricing library)\n-Better handling of corrupted setting/profile files\n\nCode:\n-Updated pricing library\n-Updated ESI library\n-Faster price updates (pricing library)\n\n________________________________________________________________________________\n_4.1.3__________________________________________________________________________\n\nNew Features:\n-Added support for basic proxy authentication\n\nChanged:\n-New forum thread\n\nBug Fixes:\n-Fixed proxy support (everything now use the proxy settings)\n-Fixed Eve-MarketData support\n-ESI accounts never expire\n-Fixed two crash bugs and a few of minor ones\n\n________________________________________________________________________________\n_4.1.2__________________________________________________________________________\n\nBug Fixes:\n-Workaround for java crash: https://bugs.openjdk.java.net/browse/JDK-8179014\n-Ignore itemIDs in the structure endpoint\n\nCode:\n-Better logging for API updates\n\n________________________________________________________________________________\n_4.1.1__________________________________________________________________________\n\nBug Fixes:\n-Stockpile manufacturing jobs used blueprint TypeID instead of product typeID\n-Update Dialog showed wrong update times (included accounts without permission)\n\n________________________________________________________________________________\n_4.1.0__________________________________________________________________________\n\nNew Features:\n-ESI structure endpoint (Resolve structure names, optional)\n-Tracker: You can now add notes (Limitation: 1 note per day)\n-Stockpile: Tags (just like in the Assets tool)\n-Stockpile: Shopping list allow you to hide items above X% full\n\nChanged:\n-Rearranged the tool menu\n-Creates backup of data when a new version is run for the first time\n-Made the citadel update more resilient to errors\n-Use https for updates and bug reports\n-Stockpile: Optimized\n-Assets: Type count column now counts BPO and BPC separately \n\nBug Fixes:\n-Account import: Better handling of cancel and previous\n-Stockpile: Shopping list did not include contract items\n-Tree: Containers and ships was missing if their children was filtered out\n-Tree: Category tool had unknown locations for items without a location\n-Stockpile: All blueprints match both BPC and BPO\n\n________________________________________________________________________________\n_4.0.1__________________________________________________________________________\n\nCode:\n-Stockpile Optimization\n\nBug Fixes:\n-Journals and Transactions are missing\n-Better handling of account editing\n-Fixed reprocessing calculation\n\n________________________________________________________________________________\n_4.0.0__________________________________________________________________________\n\nNew Features:\n-EveKit support\n-Import tracker data from EveKit\n-Rename unknown locations\n-Added unknown locations and citadels to the stockpile tool\n-Lookup all locations for items with multiple locations (Stockpile/Contracts)\n-Added option to use stronger colors\n-Show time until the the first and last account can be updated\n\nChanged:\n-Made it easier to reactivate expired accounts\n-You can now copy the error message from the update dialog\n-The Citadel API is now cached at my server\n\nBug Fixes:\n-Profiles was not saved on creation\n-Removed wrecks from the Assets Tool\n-Fixed ISK per Hour import\n\nCode:\n-Moved to glazed list 1.10\n\n________________________________________________________________________________\n_3.1.4__________________________________________________________________________\n\nBug Fixes:\n-All Market Order/Journal/Transaction history deleted on update\n\n________________________________________________________________________________\n_3.1.3__________________________________________________________________________\n\nChanged:\n-Assets API to only use flat list now\n\nBug Fixes:\n-Fixed warning from citadel API\n-Fixed citadel API progress display\n\nCode:\n-Updated EveAPI to 7.0.1\n\n________________________________________________________________________________\n_3.1.2__________________________________________________________________________\n\nNew Features:\n-Enabled GZip support for the pricing library (faster price update)\n\nBug Fixes:\n-Better error handling for the the stop.hammerti.me.uk citadel API\n\nKnown issues:\n-Blueprint in contracts are always marked as BPC (API Bug)\n\n________________________________________________________________________________\n_3.1.1__________________________________________________________________________\n\nBug Fixes:\n-Better integration of the stop.hammerti.me.uk citadel API\n\nKnown issues:\n-Blueprint in contracts are always marked as BPC (API Bug)\n\n________________________________________________________________________________\n_3.1.0__________________________________________________________________________\n\nNew Features:\n-Added support for getting assets in citadels\n-Added blueprint runs to Assets and Tree tools\n-Added reset to QuickDate in the tracker tool\n-Added option to hide zero in the tracker tool \n\nChanged\n-Stockpile: Hide the column text for excluded count columns\n-Removed eve-online wiki from lookup menu\n-Updated credits.txt and about dialog\n\nBug Fixes:\n-Bought contracts always included in stockpile\n\nKnown issues:\n-Blueprint in contracts are always marked as BPC (API Bug)\n\n________________________________________________________________________________\n_3.0.4__________________________________________________________________________\n\nBug Fixes:\n-JAutoCompleteDialog never set strict\n-JDropDownButton component must be showing on screen (BugID 420 & 281)\n-Do not try to get expired market orders from the API\n\nChanged:\n-Excluded \"Escrows To Cover\" from the tracker total\n\nCode:\n-Updated EVEAPI to the latest version\n-Better error messages for uncaught exceptions\n-Moved from jCalendar to LGoodDatePicker\n\nKnown issues:\n-Assets in citadels are not included in the API (Workaround in the works)\n-Blueprint in contracts are always marked as BPC (API Bug)\n\n________________________________________________________________________________\n_3.0.3__________________________________________________________________________\n\nBug Fixes:\n-Fixed problem with updating contracts in citadels\n-Fixed problem with reading AccessMask in ProfileReader\n-The price cache time was not loaded on startup\n\nCode:\n-Better handling of old versions of Java\n\nKnown issues:\n-Assets in citadels are not included in the API (API Bug)\n-Blueprint in contracts are always marked as BPC (API Bug)\n\n________________________________________________________________________________\n_3.0.2__________________________________________________________________________\n\nBug Fixes:\n-Possible fixes for following bugs with BugID: 281, 412, 406, 403\n-Fixed crash when removing multiple avoid system from the routing tool\n-Old market orders are never marked as completed (BugID 410)\n-Better handling of missing data and library files\n-Warning when trying to run jEveAssets from inside the zip file\n\nChanged:\n-Blueprints in contracts now use PBC value (zero). See bellow...\n\nKnown issues:\n-Assets in citadels are not included in the API (API Bug)\n-Blueprint in contracts are always marked as BPC (API Bug)\n \n________________________________________________________________________________\n_3.0.1__________________________________________________________________________\n\nBug Fixes:\n-Possible fix for bugID: 397 (ArrayIndexOutOfBoundsException)\n-Bug Fix: Journal and Transaction were missing valid duplicates\n\n________________________________________________________________________________\n_3.0.0__________________________________________________________________________\n\nNew Features:\n-Transactions: Added average price to status bar and popup menu\n-Market Orders: Added history\n-Market Orders: Added last opposite transaction price/profit/percent columns\n-Tracker: Total now only include selected values (Include/Exclude)\n-Stockpile: Export/Import to xml\n-Import/Export Filters\n-More user friendly import of text\n-Price Update Options (All/New/None)\n-Jump columns (via table menu)\n-Release updates via installer\n-Stockpile: Exclude Location\n-Stockpile: Added contracts\n-Industry Jobs: Added count to status bar and popup menu\n-Tracker/Isk/Values: Added contracts\n-Tracker: Added Location/Corporation Hangar and Wallet Division filters\n\nChanged:\n-Use the latest version of EVEAPI\n-Moved to Java 8: require Java 8 to run (will still compile on Java 7 JDK)\n\nBug Fixes:\n-Contracts: kept old data after updating from the API\n-Fixed a lot of GUI problems on Linux (Unity/GNOME/KDE)\n-File locks was not working correctly\n-Transactions failed to update\n\n________________________________________________________________________________\n_2.10.5_________________________________________________________________________\n\nChanged:\n-Added User Agent to HTTP requests (Global)\n-Safer backup and restore of settings files\n-Don't update missing prices on startup (price 1.4.0)\n-Changed jUpdate download location (To make sure we have write access)\n\nBug Fixes:\n-AIOOB EnumTableFormatAdaptor (Critical)\n-FilterSave deadlock read lock (Critical)\n-IllegalArgumentException in SeparatorList (Critical)\n-Stockpile table colors did not working with the default value\n-Buy/Sell Transaction columns are not grayed out when exclude\n-Reprocessed grand total remove button not disabled\n-Removed dead lookup links\n-Settings -> Window: The order of JTextField are illogical\n-Stockpile Dialog are not updated before shown (Empty location fields)\n\n________________________________________________________________________________\n_2.10.4_________________________________________________________________________\n\nBug Fixes:\n-Possible fix for IllegalArgument in getLocalFile() (BugID: 284 and 179)\n-ConcurrentModificationException in HashMap constructor (BugID: 202 and 282)\n-NullPointerException in ProfileWriter (BugID: 285)\n\n________________________________________________________________________________\n_2.10.3_________________________________________________________________________\n\nChanged:\n-Changed Google Code links to GitHub\n-Minor optimization to stockpile tool\n-Updated Glazed Lists library to 1.9.1\n-Removed eve.addicts.nl\n\nBug Fixes:\n-Added Glazed list read locks (could fix some bugs or not)\n-Save eve fittings (wrong type name)\n-Race condition when updating (tracker point creation)\n-Settings was not saved after deleting stockpile\n-ArrayIndexOutOfBounds in EnumTableFormatAdaptor\n\n________________________________________________________________________________\n_2.10.2_________________________________________________________________________\n\nBug Fixes:\n-Saving Journal/Transactions history didn't work\n-Profile was not always saved when changed in Account Manager\n\n________________________________________________________________________________\n_2.10.1_________________________________________________________________________\n\nBug Fixes:\n-Possible fix for Update/ISK/Tracker/Values bug\n\n________________________________________________________________________________\n_2.10.0_________________________________________________________________________\n\nNew Features:\n-Blueprints API (Asset/Tree/Industry: ME/TE & BPC/BPO)\n-Added profiles filter to the Tracker tool\n-Added option to delete data point for all owners\n-Added Contract Collateral to the Isk/Values/Tracker tools\n\nChanged:\n-Changed the font and formating of the Tracker tool chart\n-Now remove owner from the Tracker when the last data point is deleted\n\nBug Fixes:\n-Fixed date format in the Tracker Tool\n\n________________________________________________________________________________\n_2.9.1__________________________________________________________________________\n\nBug Fixes:\n-Bad layout in the tracker tool\n-Reprocessing calculations for items\n\n________________________________________________________________________________\n_2.9.0__________________________________________________________________________\n\nNew Features:\n-Stockpile: Adjustable percentage grouping\n-Tracker: Multiple characters select\n-Date filter: Last X Days\n\nBug Fixes:\n-Updated reprocessing to the latest formula and fixed reprocessing skills\n-Accounts was not saved when deleted/added\n\n________________________________________________________________________________\n_2.8.7__________________________________________________________________________\n\nChanged:\n-Assets converted from industry jobs are now always marked as BPC\n\nBug Fixes:\n-Industry Jobs Output Count/Value was not working (Thanks to Busje Komt Zo)\n-Tracker manufacturing was always zero (Same bug as above)\n-Crashed when filters contained removed columns (Thanks to Uber Pie)\n\n________________________________________________________________________________\n_2.8.6__________________________________________________________________________\n\nChanged:\n-Static data updated to Crius 1.0.0\n-Removed PE/ME from industry jobs and assets (no longer part of the API)\n-Removed BPO/PBC from industry jobs (no longer part of the API)\n\nBug Fixes:\n-Industry Jobs was not updating (due to API changes)\n\n________________________________________________________________________________\n_2.8.5__________________________________________________________________________\n\nChanged:\n-Static data updated to Kronos 1.0.0\n\nBug Fixes:\n-Auto update could fail before asked to update\n\n________________________________________________________________________________\n_2.8.4__________________________________________________________________________\n\nNew Features:\n-New bug report dialog\n-Added new column: 'Installer' to the Industry Job Tool\n\nChanged:\n-Better API Update error messages\n\nBug Fixes:\n-Settings was not saved when editing or deleting Tracker data point\n-Settings was not saved when changing Stockpile Target or Multiplier\n-Contracts owners was not updated correct\n\n________________________________________________________________________________\n_2.8.3__________________________________________________________________________\n\nChanged:\n-Better auto update code (update jupdate.jar and validate downloaded files)\n\nSource:\n-Deploy: Upload release automatic\n\nNotes:\nThe new auto update code will only be used\nwhen updating from 2.8.3 to any later version.\nUpdating to 2.8.3 will still use the old code.\n\n________________________________________________________________________________\n_2.8.2__________________________________________________________________________\n\nBug Fixes:\n-Routing Mutation 2-opt and Crossover does not work\n\n________________________________________________________________________________\n_2.8.1__________________________________________________________________________\n\nBug Fixes:\n-Possible fix for BugID: 3, 4, 5, 6\n\n________________________________________________________________________________\n_2.8.0__________________________________________________________________________\n\nNew Features:\n-Tree Tool Sorting\n-Routing: Avoid System (By name or security)\n-Industry Jobs: Manufacturing Output Value\n-Assets: ME/PE columns\n-Added time to date columns\n-Added simple bug reporting tool\n-Added auto update tool (program and static data)\n\nChanged:\n-Date format is now ISO 8601: yyyy-MM-dd (Warning: May break your filters)\n-Updated static data to Rubicon 1.3.0.95173\n-Now save settings when they are changed (disable with \"-lazysave\")\n\nBug Fixes:\n-StackOverflowError (PaddingTableCellRenderer)\n\n________________________________________________________________________________\n_2.7.3__________________________________________________________________________\n\nChanged:\n-Updated static data to Rubicon 1.0.4.93577\n-Api Keys: Assets access is now optional\n-Updated eve toolkit copyright\n\nBug Fixes:\n-Current filter name not displayed\n-BPO shown as BPC\n\n________________________________________________________________________________\n_2.7.2__________________________________________________________________________\n\nNew Features:\n-New Contract Column: Status\n\nBug Fixes:\n-Assets included completed contracts \n-Empty accounts was hidden in account manager\n\n________________________________________________________________________________\n_2.7.1__________________________________________________________________________\n\nChanged:\n-Save history for Transactions and Journal (Optional - on by default)\n-Support for EVE API HTTP errors (Invalid accounts)\n-Updated static data to Rubicon 1.0.93082\n\nBug Fixes:\n-Java 6 could prevent jEveAssets from exiting\n-Copying from Materials/Loadouts/Overview tables now include all columns\n-Copying from tables added an extra newline at the end\n-Stockpile EFT Import could not import drones\n-Transaction and Journal now supports API walking (Thanks Yinmatook)\n\n________________________________________________________________________________\n_2.7.0__________________________________________________________________________\n\nNew Features:\n-New Tool: Wallet Journal\n-New Tool: Tree (Assets by location or category)\n-Tool Views (Save/load column presets - works with export as well)\n-Added manufacturing to Isk and Tracker tools\n-Added Export to Materials, Ship Loadouts, and Overview tools\n-Export: Html formatting and in game browser links (both optional)\n-Export: Use table sort order\n-New Assets/Tree/Overview column: isk/m3 (Contributed by Saulvin - Thanks!)\n-Stockpile: Advanced filters (Multiple locations/owners/containers/flags)\n-Added tags to the Asset and Tree tools\n-Use base price for PBOs (Optional tech 1/tech 2)\n-Stockpile: Added transactions (Items bought/sold after last asset update)\n-Stockpile: Now accepts decimals (always rounded to ceiling)\n\nChanged:\n-Export greatly improved\n-Table Copy: Now use the shown value\n\nBug Fixes:\n-Stockpile shopping list could count the same item multiple times\n-Stockpile: Editing items would leave duplicate items\n\n________________________________________________________________________________\n_2.6.3__________________________________________________________________________\n\nBug Fixes:\n-Packaged ships showed unpacked volume and vice versa (Thanks llllSeraphimllll)\n\n________________________________________________________________________________\n_2.6.2__________________________________________________________________________\n\nChanged:\n-Updated static data to Odyssey 1.1.91288\n\n________________________________________________________________________________\n_2.6.1__________________________________________________________________________\n\nBug Fixes:\n-Active industry jobs incorrectly marked BPO as BPC in the asset tool\n-More minor bug fixes\n\nChanged:\n-Updated static data to Odyssey 1.0.9.89602\n\n________________________________________________________________________________\n_2.6.0__________________________________________________________________________\n\nNew Features:\n-New Tool: Wallet Transactions (by Ima Sohmbadi) \n-Routing: Major overhaul\n-Assets: Rename Container\n-Account Import: Error handling\n-Stockpile: Import shopping list from \"Eve ISK Per Hour\"\n-Tracker: Edit data points\n-Items: Reprocessed Column\n-Optimized many parts of jEveAssets\n-Many more minor changes and bug fixes\n\nChanged:\n-Better handling of multiple instances of jEveAssets\n-Library: Updated Glazed Lists to 1.9.0\n-Library: Updated EVEAPI to the latest version\n-Source: Major cleanup of the source code\n-Source: Made it easy to checkout and compile (maven.nikr.net)\n\n________________________________________________________________________________\n_2.5.4__________________________________________________________________________\n\nChanged:\n-Updated static data to Odyssey 1.0.89097\n\n________________________________________________________________________________\n_2.5.3__________________________________________________________________________\n\nBug Fixes:\n-API Bug: The contract API returns alien contracts (Temp ban fix)\n-Export Bug: Changing the decimal separator was ignored until next export\n\nChanged:\n-Updated static data to Retribution 1.1.84566\n\n________________________________________________________________________________\n_2.5.2__________________________________________________________________________\n\nNew Features:\n-Added \"None\" container label\n\nBug Fixes:\n-Industry Jobs failed to update\n\n________________________________________________________________________________\n_2.5.1__________________________________________________________________________\n\nBug Fixes:\n-Export: Deselecting columns caused a crash\n\n________________________________________________________________________________\n_2.5.0__________________________________________________________________________\n\nNew Features:\n-New Tool: Tracker\n-New Tool: Reprocessed\n-New Tool: Contracts\n-New Tool: Isk\n-New Asset column: Added date\n-More resilient table selection and expand/collapse state\n-Stockpile: Add To now merge items instead of overwriting\n-Major optimization of Stockpile Add/Edit/Delete\n-A lot of other optimization!\n-Some minor bug fixes\n\nNote:\nYou need to update your API Keys to include contracts\n\n________________________________________________________________________________\n_2.4.4__________________________________________________________________________\n\nBug Fixes:\n-Fixed table corruption on OpenJDK (Thanks to Jan)\n-Items Tool got a new icon\n\nChanged:\n-Updated static data to Retribution 1.0.7.463858\n\n________________________________________________________________________________\n_2.4.3__________________________________________________________________________\n\nBug Fixes:\n-Crash when sorting stockpile. (Thanks to Mysterion eXe)\n\n________________________________________________________________________________\n_2.4.2__________________________________________________________________________\n\nBug Fixes:\n-Eve-Central: Can not update price data (Thanks Carten)\n\n________________________________________________________________________________\n_2.4.1__________________________________________________________________________\n\nBug Fixes:\n-Stockpile ignored everything except typeID\n\n________________________________________________________________________________\n_2.4.0__________________________________________________________________________\n\nNew Features:\n-Export: Use tool column selection and order\n-Export: Html & SQL export\n-Tables: Save column width (Auto resize off)\n-Stockpile: Distinction betwen BPC and BPO\n-Reprocessed Colors: Zero = Gray\n-New Columns: Reprocessed & Price Difference (Value & Percent)\n-New Columns: Market Orders price\n-Overview: Load asset filter\n-Stockpile: Shopping list for multiple stockpiles\n-Stockpile: Add to stockpile - can be used to merge (multiple selection)\n-Better UI for custom Price/Name (multiple selection - prices only)\n-Price Data: Reprocessed Price selectable seperate\n\nChanged:\n-Updated static data to Inferno 1.2.76477\n\nBug Fixes:\n-Stockpile included non-active orders\n-GMT mixup\n-IPv6 connection failure (force IPv4)\n-Some minor bug fixes and optimization\n\n________________________________________________________________________________\n_2.3.0__________________________________________________________________________\n\nNew Features:\n-Added \"Selection Information\" to all tables menus\n-Added info to the Overview statusbar\n-Added Station/System selection to the price sources that support it\n-Added eve.addicts.nl as price source\n-Added percentile/5% to all price sources\n\nChanged:\n-The stockpile statusbar now show values for shown item (not for all items)\n\nBug Fixes:\n-Fixed bug: CSV export: New filter is not available\n-Fixed bug: Incompatible with Java 6u33 & 7u5 (Thank you Flaming Candle!)\n-Fixed bug: Hide/show columns could crash the program\n-A lot of minor bug fixes\n\n________________________________________________________________________________\n_2.2.0__________________________________________________________________________\n\nNew Features:\n-New Tool: Items (items database)\n-Table menu now works with multiple selection\n-Added EveMarketeer (As price source and to the lookup menu)\n-Added Eve Addicts to the lookup menu (eve.addicts.nl)\n-Market Orders: Added info to the statusbar\n-Industry Jobs: Added invention success to the statusbar\n-Stockpile: Added percent full column\n-Hide/show columns now has Its own dialog\n-Market Orders: Joined the Buy and Sell table\n-Market Orders/Industry Jobs: Added some predefined filters\n-Filter Manager: Can now delete multiple items at once\n-Eve-MarketData: Added support for region selection\n-Added better program icons (for windows 7 taskbar etc.)\n-Added Flag path (as suggested by Scrapyard Bob)\n-Added window Always On Top option\n-Stockpile: Added table sorting\n-Assets: Added reprocessed value to the statusbar\n-Assets: Added Buy Orders (Optional) (Sell orders are now optional as well)\n\nChanged:\n-Removed support for prices.c0rporation.com\n-CSV Export: Now remember selected columns (again)\n-Tables: Columns auto resizing is now optional (again)\n-Highlight selected row(s) now work on all filter tools\n-Only filter on enter now works again and for all filter tools\n-Static data updated to Inferno 1.0.70633\n\nBug Fixes:\n-Fixed a rare bug in the save filter dialog (text was locked)\n-Fixed a translation bug in Price Data Settings\n\n________________________________________________________________________________\n_2.1.2__________________________________________________________________________\n\nChanged:\n-Static date updated to Escalation 1.0.0\n\n________________________________________________________________________________\n_2.1.1__________________________________________________________________________\n\nBug Fixes:\n-CSV Export: Saved/Current Filter is broken\n-Load Filter: Scroll when needed (Also work with mouse wheel)\n\n________________________________________________________________________________\n_2.1.0__________________________________________________________________________\n\nNew Features:\n-Stockpile: Shopping List (With percent full)\n-Stockpile: Added labels for Location/Owner/Minimum Percent Full\n-Stockpile: EFT import\n-Separator Table: double click to expand/collapse\n-Materials: Moved summary to the top\n-Materials: Added total for stations\n-Materials: Added price column\n-Materials: You can now collapse/expand locations\n-Assets: Added Tech column (Meta is can now be compared as a number)\n\nBug Fixes:\n-Stockpile: Cancel refresh stockpile list\n-CSV Export: Line Delimiter was not added correct...\n-CSV Export: Float & Integer always had dot as decimal separator \n\nChanged:\n-Static date updated to Crucible 1.6.0\n\n________________________________________________________________________________\n_2.0.0__________________________________________________________________________\n\nNew Features:\n-Date filtering (Before/After/Equals etc.)\n-Added CSV export to Industry Jobs, Market Orders, Stockpile\n-Added customizable columns to Industry Jobs, Market Orders, Stockpile\n-Added filtering to Industry Jobs, Market Orders, Stockpile\n-Industry Jobs: Added new column \"Region\"\n-Assets: Added new column \"Total Volume\"\n-Market Orders: Added new columns \"Issued\", \"Owner\", \"Region\"\n\nKnown Issues:\n-Missiles are named wrong\n\n________________________________________________________________________________\n_1.9.2__________________________________________________________________________\n\nNew Features:\n-Stockpile: Use table menu to edit items\n-Stockpile: Remember collapsed/expanded state when updating\n-Stockpile: Now sort by group before name\n-Stockpile: Assets focus (Optional)\n-Stockpile: Color coding (Optional)\n-Stockpile: Performance optimization\n\nBug Fixes:\n-Stockpile: Items can be added twice\n\nChanged:\n-Static data Updated to Crucible 1.0.0\n\n________________________________________________________________________________\n_1.9.1__________________________________________________________________________\n\nBug Fixes:\n-Offices shown as !27\n-Stockpile: Corporation items is not added properly\n-Stockpile: Offices items is not added properly\n\n________________________________________________________________________________\n_1.9.0__________________________________________________________________________\n\nNew Features:\n-New Tool: Stockpile\n\n________________________________________________________________________________\n_1.8.1__________________________________________________________________________\n\nBug Fixes:\n-Now compatible Java 7 (and Java 6)\n-Materials, Ship Loadouts, and Account Management now use less CPU\n-Meta column is now filtered correct (again)\n-Settings.bac is now restored automatically (again)\n\n________________________________________________________________________________\n_1.8.0__________________________________________________________________________\n\nNew Features:\n-Overview: Added buttons for views (Instead of the ComboBox) \n-Overview: Added Security column \n-Assets: Much better filtering of numbers\n-Assets: Added Singleton Column\n-Industry Jobs: Active/Ready/Pending\n-Materials: Added PI materials (optional)\n-Third mouse button close tab\n-Load Filter: CTRL+Click now adds filter instead of overwriting existing filter\n-Remember CSV Export settings\n\nChanged:\n-Static data Updated to Incarna 1.1.0\n\nBug Fixes:\n-Fixed settings dialog height on XFCE 4\n\n________________________________________________________________________________\n_1.7.3__________________________________________________________________________\n\nNew Features:\n-Now use the new Customizable API keys (CAKe)\n-Automatically mark blueprints as BPO/BPC (except for market orders)\n\nChanged:\n-Static data updated to Incarna 1.0.0\n\n________________________________________________________________________________\n_1.7.2__________________________________________________________________________\n\nBug Fixes:\n-Fixed bug that made it impossible to edit price of an item more then once\n\nChanged:\n-Faction prices from prices.c0rporation.com are now optional\n-Update dialog now use \"Today\" instead of the weekday name (when eligible)\n-Now Hide the profile name in the window title, when there is only one profile\n\n________________________________________________________________________________\n_1.7.1__________________________________________________________________________\n\nBug Fixes:\n-Fix bug that made all faction prices zero\n-Possible fixed for the StackOverflowError (Issue 146)\n-Minor optimization\n\n________________________________________________________________________________\n_1.7.0__________________________________________________________________________\n\nNew Features:\n-Hide Filters\n-AssetFilter On/Off\n-Overview to Routing coupling\n-Faster Overview Groups\n-Faction Prices (prices.c0rporation.com)\n-Set price for BPC\n-Isk-to-cover\n-Progress monitor when updating price data on startup\n-Merge Filters\n\nChanged:\n-Updated the set price/name GUI\n-Save settings after updating\n-A lot of i18n\n\n________________________________________________________________________________\n_1.6.4__________________________________________________________________________\n\nBug Fixes:\n-Fixed missing buttons in the import dialog (Mac Only)\n-Fixed crash bug in the Industry Jobs tool (When sorting by Activity or Status)\n-Fixed meta column sorting\n-Fixed bug that made upgrading from very early version impossible\n\nChanged:\n-Removed Eve-Metrics and Added Eve-Marketdata\n-Updated static data to Incursion 1.1.0.37959\n-Now use EVEAPI 3.0.0 (https!)\n-Made the yellow cell background darker\n\n________________________________________________________________________________\n_1.6.3__________________________________________________________________________\n\nBug Fixes:\n-Better handling of price data updates.\n\nChanged:\n-Updated the static data to Incursion 1.0.1.37657\n\n________________________________________________________________________________\n_1.6.2__________________________________________________________________________\n\nBug Fixes:\n-MaterialsTab: All corporation materials was ignored\n\n________________________________________________________________________________\n_1.6.1__________________________________________________________________________\n\nNew Features:\n-Lookup locations and items on popular eve websites (from the table menu)\n-Material and Ship Loadout tools have been overhauled\n-Now compatible with the new 64bit inventory changes\n\nChanged:\n-Better handling of the price data update\n-A lot of behind the scene changes\n\nBug Fixes:\n-jeveassets.log is in the wrong location (Mac only)\n-Packaged ships now have the correct volume\n-Materials tool contained duplicates in the summary\n\n________________________________________________________________________________\n_1.5.0__________________________________________________________________________\n\n-Tools are now tabs in the main window\n-New Tool: Overview\n-Now use slf4J and log4j to log events and errors\n-New layout for the Account Manager\n-New layout for the Updating Dialog\n-Numerous bug fixes and minor changes\n\n________________________________________________________________________________\n_1.4.1__________________________________________________________________________\n\nBug fixes:\n-Routing: Brute Force don't return shortest route (Issue 85)\n-Conquerable stations are never saved (Issue 98)\n\n________________________________________________________________________________\n_1.4.0__________________________________________________________________________\n\nNew Features:\n-Profiles\n-New API update system (You select what to update)\n-Enhanced support for mac os x environments\n-Program update notifications\n-New settings dialog layout\n-User settable reprocess efficiency\n-New special \"sell or reprocess\" color scheme\n-Rolling log (prevent the log from ever getting to large)\n-New pricing option \"Midpoint\" (sell min + buy max) / 2\n-New Column: Reprocessed Value (reprocessed price * count)\n-Meta Column: Now works as a the other number columns\n-Asset names can now be changed\n-Industry Jobs and Market Orders dialogs are now resizable\n-New API import dialog\n-Now use EVEAPI 2.0.0 (library)\n\nBug fixes:\n-Many minor bug fixes...\n\n________________________________________________________________________________\n_1.3.0__________________________________________________________________________\n\nNew Features:\n-New Tool: Routing - Find the shortest route between multiple asset locations\n\n________________________________________________________________________________\n_1.2.3__________________________________________________________________________\n\nNew Features:\n-Now ignore update timer if the Api Proxy is set\n\nBug fixes:\n-Possible fix for crash bug in JCustomFileChooser (Java Bug)\n-Better memory management\n-Fix minor display bug\n-Better log output\n\n________________________________________________________________________________\n_1.2.2__________________________________________________________________________\n\nBug fixes:\n-Fixed bug that would crash jEveAssets when updating assets (industry jobs)\n-Fixed bug that ignored the update timer for industry jobs\n\nKnown Issues:\n-The holiday gift show up as !XXXX\n\n________________________________________________________________________________\n_1.2.1__________________________________________________________________________\n\nNew Features:\n-Now backup settings files (on save)\n\nBug fixes:\n-Fix bug that would sometimes hide industry jobs and market orders\n-Fixed bug that would crash jEveAssets when updating assets (holiday gift bug)\n\nKnown Issues:\n-The holiday gift show up as !XXXX\n________________________________________________________________________________\n_1.2.0__________________________________________________________________________\n\nNew Features:\n-Added market orders tool\n-Added industry jobs tool\n-Now retain window position/size on restart\n-Added a label to the toolbar that show the current filter\n-Now show the eve server time on the statusbar\n-The security column now have the filter modes: \"Great than\" and \"Less than\"\n-Price data from both eve-metrics and eve-central (Candles pricing library)\n-Added more options to the API Manager\n-The table now save the selection on update\n-Added the ability highlight the selected row\n-The price field in price settings, now have focus when adding a new price\n\nBug fixes:\n-JTextField swing bug (workaround)\n-New assets have no price (from Market Orders/Industry Jobs)\n-Conquerable Stations locations get error string\n\n________________________________________________________________________________\n_1.1.0__________________________________________________________________________\n\nNew Features:\n-Added hide/show columns to the main menu\n-Better error messages when Updating assets\n-New layout for about dialog\n-The default eve-central price can now be changed\n-Added new filter modes: Greater/Less then column (compare two columns)\n-API keys can now be changed after they have been added\n-Filtering is now only triggered when no keys have been pressed for 500ms\n-Now automatically mark blueprints that have been used as copy/original \n-All settings are now in the same dialog\n-Improved the way progress is showed when updating assets and price data\n-New dialog key bindings: Escape cancel and enter saves\n-Industry jobs: Now adds blueprints in use to the asset list\n-Market orders: now adds remaining items from sell orders to the assets list\n-Portable setting: save all files in program directory (see FAQ)\n-New Column: Reprocessed value\n-New Column: System security status\n-Added volume to statusbar and table popup menu\n\nBug fixes:\n-Fixed bug with invalid proxy settings\n-Fixed bug with pos and industry jobs\n-Fixed bug in save filter dialog\n\n________________________________________________________________________________\n_1.0.0__________________________________________________________________________\n\nFirst stable release...\n________________________________________________________________________________\n________________________________________________________________________________"
  },
  {
    "path": "checkstyle.xml",
    "content": "<?xml version=\"1.0\"?>\r\n<!DOCTYPE module PUBLIC\r\n          \"-//Puppy Crawl//DTD Check Configuration 1.3//EN\"\r\n          \"http://www.puppycrawl.com/dtds/configuration_1_3.dtd\">\r\n\r\n<!--\r\n\r\n  Checkstyle configuration that checks the sun coding conventions from:\r\n\r\n    - the Java Language Specification at\r\n      http://java.sun.com/docs/books/jls/second_edition/html/index.html\r\n\r\n    - the Sun Code Conventions at http://java.sun.com/docs/codeconv/\r\n\r\n    - the Javadoc guidelines at\r\n      http://java.sun.com/j2se/javadoc/writingdoccomments/index.html\r\n\r\n    - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html\r\n\r\n    - some best practices\r\n\r\n  Checkstyle is very configurable. Be sure to read the documentation at\r\n  http://checkstyle.sf.net (or in your downloaded distribution).\r\n\r\n  Most Checks are configurable, be sure to consult the documentation.\r\n\r\n  To completely disable a check, just comment it out or delete it from the file.\r\n\r\n  Finally, it is worth reading the documentation.\r\n\r\n-->\r\n\r\n<module name=\"Checker\">\r\n    <!--\r\n        If you set the basedir property below, then all reported file\r\n        names will be relative to the specified directory. See\r\n        http://checkstyle.sourceforge.net/5.x/config.html#Checker\r\n\r\n        <property name=\"basedir\" value=\"${basedir}\"/>\r\n    -->\r\n\r\n    <!-- Checks that a package-info.java file exists for each package.   -->\r\n    <!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocPackage -->\r\n    <!--<module name=\"JavadocPackage\"/>                                  -->\r\n\r\n    <!-- Checks whether files end with a new line.                        -->\r\n    <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->\r\n    <module name=\"NewlineAtEndOfFile\">\r\n\t\t<property name=\"lineSeparator\" value=\"lf\"/>\r\n\t</module>\r\n\r\n    <!-- Checks that property files contain the same keys.         -->\r\n    <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->\r\n    <module name=\"Translation\"/>\r\n    \r\n    <!-- Checks for Size Violations.                    -->\r\n    <!-- See http://checkstyle.sf.net/config_sizes.html -->\r\n    <module name=\"FileLength\"/>\r\n    \r\n    <!-- Checks for whitespace                               -->\r\n    <!-- See http://checkstyle.sf.net/config_whitespace.html -->\r\n    <!--<module name=\"FileTabCharacter\"/>                    -->\r\n\r\n    <!-- Miscellaneous other checks.                   -->\r\n    <!-- See http://checkstyle.sf.net/config_misc.html -->\r\n    <module name=\"RegexpSingleline\">\r\n       <property name=\"format\" value=\"\\s+$\"/>\r\n       <property name=\"minimum\" value=\"0\"/>\r\n       <property name=\"maximum\" value=\"0\"/>\r\n       <property name=\"message\" value=\"Line has trailing spaces.\"/>\r\n    </module>\r\n\t<module name=\"RegexpSingleline\">\r\n       <property name=\"format\" value=\"[ ]{4,}\"/>\r\n       <property name=\"minimum\" value=\"0\"/>\r\n       <property name=\"maximum\" value=\"0\"/>\r\n       <property name=\"message\" value=\"Line has none-tab spaces.\"/>\r\n    </module>\r\n\r\n    <module name=\"TreeWalker\">\r\n\r\n        <!-- Checks for Javadoc comments.                     -->\r\n        <!-- See http://checkstyle.sf.net/config_javadoc.html -->\r\n        <!--<module name=\"JavadocMethod\"/>                    -->\r\n        <!--<module name=\"JavadocType\"/>                      -->\r\n        <!--<module name=\"JavadocVariable\"/>                  -->\r\n        <module name=\"JavadocStyle\"/>\r\n\r\n\r\n        <!-- Checks for Naming Conventions.                  -->\r\n        <!-- See http://checkstyle.sf.net/config_naming.html -->\r\n        <module name=\"ConstantName\"/>\r\n        <module name=\"LocalFinalVariableName\"/>\r\n        <module name=\"LocalVariableName\"/>\r\n        <module name=\"MemberName\"/>\r\n        <module name=\"MethodName\"/>\r\n        <module name=\"PackageName\"/>\r\n        <module name=\"ParameterName\"/>\r\n        <module name=\"StaticVariableName\"/>\r\n        <module name=\"TypeName\"/>\r\n\r\n\r\n        <!-- Checks for Headers                                -->\r\n        <!-- See http://checkstyle.sf.net/config_header.html   -->\r\n        <!-- <module name=\"Header\">                            -->\r\n            <!-- The follow property value demonstrates the ability     -->\r\n            <!-- to have access to ANT properties. In this case it uses -->\r\n            <!-- the ${basedir} property to allow Checkstyle to be run  -->\r\n            <!-- from any directory within a project. See property      -->\r\n            <!-- expansion,                                             -->\r\n            <!-- http://checkstyle.sf.net/config.html#properties        -->\r\n            <!-- <property                                              -->\r\n            <!--     name=\"headerFile\"                                  -->\r\n            <!--     value=\"${basedir}/java.header\"/>                   -->\r\n        <!-- </module> -->\r\n\r\n        <!-- Following interprets the header file as regular expressions. -->\r\n        <!-- <module name=\"RegexpHeader\"/>                                -->\r\n\r\n\r\n        <!-- Checks for imports                              -->\r\n        <!-- See http://checkstyle.sf.net/config_import.html -->\r\n        <!--<module name=\"AvoidStarImport\"/>-->\r\n        <module name=\"IllegalImport\"/> <!-- defaults to sun.* packages -->\r\n        <module name=\"RedundantImport\"/>\r\n        <module name=\"UnusedImports\"/>\r\n\r\n\r\n        <!-- Checks for Size Violations.                    -->\r\n        <!-- See http://checkstyle.sf.net/config_sizes.html -->\r\n        <!--<module name=\"LineLength\"/>                     -->\r\n        <module name=\"MethodLength\"/>\r\n        <module name=\"ParameterNumber\"/>\r\n\r\n\r\n        <!-- Checks for whitespace                               -->\r\n        <!-- See http://checkstyle.sf.net/config_whitespace.html -->\r\n        <module name=\"EmptyForIteratorPad\"/>\r\n        <module name=\"GenericWhitespace\"/>\r\n        <module name=\"MethodParamPad\"/>\r\n        <module name=\"NoWhitespaceAfter\"/>\r\n        <module name=\"NoWhitespaceBefore\"/>\r\n        <module name=\"OperatorWrap\"/>\r\n        <module name=\"ParenPad\"/>\r\n        <module name=\"TypecastParenPad\"/>\r\n        <module name=\"WhitespaceAfter\"/>\r\n        <module name=\"WhitespaceAround\"/>\r\n\r\n\r\n        <!-- Modifier Checks                                    -->\r\n        <!-- See http://checkstyle.sf.net/config_modifiers.html -->\r\n        <module name=\"ModifierOrder\"/>\r\n        <module name=\"RedundantModifier\"/>\r\n\r\n\r\n        <!-- Checks for blocks. You know, those {}'s         -->\r\n        <!-- See http://checkstyle.sf.net/config_blocks.html -->\r\n        <module name=\"AvoidNestedBlocks\"/>\r\n        <module name=\"EmptyBlock\"/>\r\n        <module name=\"LeftCurly\"/>\r\n        <module name=\"NeedBraces\"/>\r\n        <module name=\"RightCurly\"/>\r\n\r\n\r\n        <!-- Checks for common coding problems               -->\r\n        <!-- See http://checkstyle.sf.net/config_coding.html -->\r\n        <module name=\"AvoidInlineConditionals\"/>\r\n        <module name=\"DoubleCheckedLocking\"/>    <!-- MY FAVOURITE -->\r\n        <module name=\"EmptyStatement\"/>\r\n        <module name=\"EqualsHashCode\"/>\r\n\t\t<module name=\"HiddenField\">\r\n\t\t\t<property name=\"ignoreConstructorParameter\" value=\"true\"/>\r\n\t\t\t<property name=\"ignoreSetter\" value=\"true\"/>\r\n\t\t</module>\r\n        <module name=\"IllegalInstantiation\"/>\r\n        <module name=\"InnerAssignment\"/>\r\n        <!--<module name=\"MagicNumber\"/>-->\r\n        <module name=\"MissingSwitchDefault\"/>\r\n        <module name=\"RedundantThrows\"/>\r\n        <module name=\"SimplifyBooleanExpression\"/>\r\n        <module name=\"SimplifyBooleanReturn\"/>\r\n\r\n        <!-- Checks for class design                         -->\r\n        <!-- See http://checkstyle.sf.net/config_design.html -->\r\n        <!--<module name=\"DesignForExtension\"/>-->\r\n        <module name=\"FinalClass\"/>\r\n        <module name=\"HideUtilityClassConstructor\"/>\r\n        <module name=\"InterfaceIsType\"/>\r\n        <module name=\"VisibilityModifier\"/>\r\n\r\n\r\n        <!-- Miscellaneous other checks.                   -->\r\n        <!-- See http://checkstyle.sf.net/config_misc.html -->\r\n        <module name=\"ArrayTypeStyle\"/>\r\n        <module name=\"FinalParameters\"/>\r\n        <module name=\"TodoComment\"/>\r\n        <module name=\"UpperEll\"/>\r\n\r\n    </module>\r\n\r\n</module>\r\n"
  },
  {
    "path": "credits.txt",
    "content": "\r\n\r\n               ########             #####   \r\n               ########            #######  \r\n               ###                ###   ### \r\n             # ######## #  # #### ######### #### #### #### ##### ####\r\n               ######## #  # #    ######### #    #    #      #   #\r\n             # ###      #  # #### ###   ### #### #### ####   #   ####\r\n             # ######## #### #    ###   ###    #    # #      #      #\r\n             # ########  ##  #### ###   ### #### #### ####   #   ####\r\n             #\r\n           ###         #### #### #### ###  ### ##### ####\r\n                       #    #  # #    #  #  #    #   #\r\n                       #    #### #### #  #  #    #   ####\r\n                       #    # #  #    #  #  #    #      #\r\n                       #### #  # #### ###  ###   #   ####\r\n\r\n________________________________________________________________________________\r\n_CONTRIBUTORS___________________________________________________________________\r\n\r\nDevelopers:\r\n  Niklas Kyster Rasmussen (Golden Gnu)\r\n  Dultas\r\n  Tsuro Tsero\r\n\r\nTester:\r\n  Huzid\r\n\r\nContributors:\r\n  Flaming Candle\r\n  Jochen Bedersdorfer\r\n  TryfanMan\r\n  Jan\r\n  Ima Sohmbadi\r\n  Saulvin\r\n  AnrDaemon\r\n  Madetara (Ray Kavier)\r\n  Kaylee Syntax\r\n  Inoruuk\r\n  Burberius\r\n  Lazaren\r\n  Boran Lordsworth\r\n  Ed Thelleres\r\n  Salartarium\r\n  WildGear\r\n  snipereagle1\r\n  Ansirane Solette\r\n\r\nRetired Testers:\r\n  Varo Jan\r\n  Scrapyard Bob\r\n  Johann Hemphill\r\n  Tomasz (kitsibas) Wiktorski\r\n\r\n________________________________________________________________________________\r\n_SPECIAL_THANKS_________________________________________________________________\r\n\r\njEveAssets is heavily based on the user interface in EVE Asset Manager\r\n\r\nCopyright:\r\n  William J. Rogers\r\n\r\nLink:\r\n  http://wiki.heavyduck.com/EveAssetManager\r\n\r\nLicense:\r\n  GNU Lesser General Public License (http://www.gnu.org/licenses/lgpl.html)\r\n\r\n________________________________________________________________________________\r\n_EVE-ONLINE_____________________________________________________________________\r\n\r\njEveAssets use EVE-Online API and SDE\r\n\r\nLink:\r\n  Main site: https://www.eveonline.com\r\n  SDE: https://developers.eveonline.com/docs/services/sde/\r\n  API: https://developers.eveonline.com/api-explorer\r\n\r\nSDE License:\r\n  ©CCP hf. All rights reserved. Used with permission.\r\n\r\n________________________________________________________________________________\r\n_FUZZWORK_______________________________________________________________________\r\n\r\njEveAssets use the Fuzzwork API to get price data\r\n\r\nLink:\r\n  https://market.fuzzwork.co.uk/api\r\n\r\n________________________________________________________________________________\r\n_JANICE_________________________________________________________________________\r\n\r\njEveAssets use the Janice API to get price data\r\n\r\nLink:\r\n  https://janice.e-351.com/api/rest/docs/index.html\r\n\r\n________________________________________________________________________________\r\n_ZKILLBOARD_____________________________________________________________________\r\n\r\njEveAssets use zKillboard API to get price history\r\n\r\nLink:\r\n  https://github.com/zKillboard/zKillboard/wiki/API-(Prices)\r\n\r\n________________________________________________________________________________\r\n_EVE_REF________________________________________________________________________\r\n\r\njEveAssets use Reference Data API to get missing item data\r\n\r\nLink:\r\n  https://docs.everef.net/datasets/reference-data.html\r\n\r\n________________________________________________________________________________\r\n_HOBOLEAKS______________________________________________________________________\r\n\r\njEveAssets use Hoboleaks Data Export via EVE Ref to get missing item data\r\n\r\nLink:\r\n  https://sde.hoboleaks.space\r\n\r\n________________________________________________________________________________\r\n_SILK_ICONS_____________________________________________________________________\r\n\r\njEveAssets use Silk Icons from famfamfam.com\r\n\r\nCopyright:\r\n  Mark James\r\n\r\nLink:\r\n  http://www.famfamfam.com/lab/icons/silk\r\n\r\nLicense:\r\n  Creative Commons Attribution 3.0 License\r\n  http://creativecommons.org/licenses/by/3.0\r\n\r\n________________________________________________________________________________\r\n_GLAZED_LISTS___________________________________________________________________\r\n\r\njEveAssets use Glazed Lists to sort and filter tables\r\n\r\nLink:\r\n  http://publicobject.com/glazedlists\r\n\r\nLicense:\r\n  GNU Lesser General Public License (http://www.gnu.org/licenses/lgpl.html)\r\n  Mozilla Public License (http://www.mozilla.org/MPL/MPL-1.1.html)\r\n\r\n________________________________________________________________________________\r\n_SUPER_CSV______________________________________________________________________\r\n\r\njEveAssets use Super CSV to export CSV\r\n\r\nLink:\r\n  http://super-csv.github.io/super-csv\r\n\r\nLicense:\r\n  Apache License (http://www.apache.org/licenses/LICENSE-2.0)\r\n\r\n________________________________________________________________________________\r\n_EVE-ESI________________________________________________________________________\r\n\r\njEveAssets use eve-esi to get data from ESI\r\n\r\nLink:\r\n  https://github.com/burberius/eve-esi\r\n\r\nLicense:\r\n  Apache License (http://www.apache.org/licenses/LICENSE-2.0)\r\n\r\n________________________________________________________________________________\r\n_PRICING________________________________________________________________________\r\n\r\njEveAssets use the Pricing library to get price data\r\n\r\nLink:\r\n  https://github.com/GoldenGnu/price\r\n\r\nLicense:\r\n  GNU General Public License (http://www.gnu.org/copyleft/gpl.html)\r\n\r\n________________________________________________________________________________\r\n_ROUTING________________________________________________________________________\r\n\r\njEveAssets use the Routing library in the routing tool\r\n\r\nLink:\r\n  https://github.com/GoldenGnu/routing\r\n\r\nLicense:\r\n  GNU General Public License (http://www.gnu.org/copyleft/gpl.html)\r\n\r\n________________________________________________________________________________\r\n_GRAPH__________________________________________________________________________\r\n\r\nEveAssets use the Graph library in the routing tool\r\n\r\nLink:\r\n  https://github.com/GoldenGnu/graph\r\n\r\nLicense:\r\n  GNU General Public License (http://www.gnu.org/copyleft/gpl.html)\r\n\r\n________________________________________________________________________________\r\n_TRANSLATIONS___________________________________________________________________\r\n\r\njEveAssets use the Translations library for i18n\r\n\r\nLink:\r\n  https://github.com/GoldenGnu/translations\r\n\r\nLicense:\r\n  GNU General Public License (http://www.gnu.org/copyleft/gpl.html)\r\n\r\n________________________________________________________________________________\r\n_SLF4J__________________________________________________________________________\r\n\r\njEveAssets use SLF4J as logging facade\r\n\r\nLink:\r\n  http://www.slf4j.org\r\n\r\nLicense:\r\n  MIT License (http://en.wikipedia.org/wiki/MIT_License)\r\n\r\n________________________________________________________________________________\r\n_LOGBACK________________________________________________________________________\r\n\r\njEveAssets use logback to log events and errors\r\n\r\nLink:\r\n  https://logback.qos.ch\r\n\r\nLicense:\r\n  GNU Lesser General Public License (http://www.gnu.org/licenses/lgpl.html)\r\n\r\n________________________________________________________________________________\r\n_SQLITE_________________________________________________________________________\r\n\r\njEveAssets use SQLite for database storage\r\n\r\nLink:\r\n  https://github.com/xerial/sqlite-jdbc\r\n\r\nLicense:\r\n  Apache License (http://www.apache.org/licenses/LICENSE-2.0)\r\n\r\n________________________________________________________________________________\r\n_JUNIT__________________________________________________________________________\r\n\r\njEveAssets use JUnit for unit testing\r\n\r\nLink:\r\n  http://junit.org\r\n\r\nLicense:\r\n  Eclipse Public License (https://junit.org/junit4/license.html)\r\n\r\n________________________________________________________________________________\r\n_LGOODDATEPICKER________________________________________________________________\r\n\r\njEveAssets use JCalendar to get user input as a Date\r\n\r\nLink:\r\n  https://github.com/LGoodDatePicker/LGoodDatePicker\r\n\r\nLicense:\r\n  MIT License (http://en.wikipedia.org/wiki/MIT_License)\r\n\r\n________________________________________________________________________________\r\n_JFREECHART_____________________________________________________________________\r\n\r\njEveAssets use JFreeChart to make charts\r\n\r\nLink:\r\n  http://www.jfree.org/jfreechart\r\n\r\nLicense:\r\n  GNU Lesser General Public License (http://www.gnu.org/licenses/lgpl.html)\r\n\r\n________________________________________________________________________________\r\n_FLATLAF _______________________________________________________________________\r\n\r\njEveAssets use FlatLaf for themes and enhanced support for mac os x environments\r\n\r\nLink:\r\n  https://www.formdev.com/flatlaf\r\n\r\nLicense:\r\n  Apache License (http://www.apache.org/licenses/LICENSE-2.0)\r\n\r\n________________________________________________________________________________\r\n_EVALEX_________________________________________________________________________\r\n\r\njEveAssets use EvalEx for formula columns\r\n\r\nLink:\r\n  https://github.com/uklimaschewski/EvalEx\r\n\r\nLicense:\r\n  MIT License (http://en.wikipedia.org/wiki/MIT_License)\r\n\r\n________________________________________________________________________________\r\n_PICOCLI________________________________________________________________________\r\n\r\njEveAssets use Picocli for the CLI\r\n\r\nLink:\r\n  https://picocli.info\r\n\r\nLicense:\r\n  Apache License (http://www.apache.org/licenses/LICENSE-2.0)\r\n\r\n________________________________________________________________________________\r\n_COPYRIGHT______________________________________________________________________\r\n\r\nCopyright 2009-2026 Contributors (see above)\r\n\r\njEveAssets is free software; you can redistribute it and/or\r\nmodify it under the terms of the GNU General Public License\r\nas published by the Free Software Foundation; either version 2\r\nof the License, or (at your option) any later version.\r\n\r\njEveAssets is distributed in the hope that it will be useful,\r\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\r\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\nGNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License\r\nalong with jEveAssets; if not, write to the Free Software\r\nFoundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n\r\nEVE ONLINE COPYRIGHT NOTICE:\r\nEVE Online and the EVE logo are the registered trademarks of CCP hf. All rights\r\nare reserved worldwide. All other trademarks are the property of their\r\nrespective owners. EVE Online, the EVE logo, EVE and all associated logos and \r\ndesigns are the intellectual property of CCP hf. All artwork, screenshots,\r\ncharacters, vehicles, storylines, world facts or other recognizable features\r\nof the intellectual property relating to these trademarks are likewise the\r\nintellectual property of CCP hf. CCP hf. has granted permission to jEveAssets\r\nto use EVE Online and all associated logos and designs for promotional and\r\ninformation purposes in this program but does not endorse, and is not in any\r\nway affiliated with, jEveAsset. CCP is in no way responsible for the content\r\non or functioning of this website, nor can it be liable for any damage arising\r\nfrom the use of this website.\r\n\r\n________________________________________________________________________________\r\n________________________________________________________________________________\r\n\r\n"
  },
  {
    "path": "data/agents.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\r\n<rows>\r\n    <!--Generated from Eve Online Toolkit. ©CCP hf. All rights reserved. Used with permission.-->\r\n    <row agent=\"Antaken Kamola\" agentid=\"3008416\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"1\" locationid=\"60000004\" locator=\"false\"/>\r\n    <row agent=\"Ansalakko Hosiwa\" agentid=\"3008417\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"1\" locationid=\"60000259\" locator=\"false\"/>\r\n    <row agent=\"Ansanaisen Eskonainen\" agentid=\"3008418\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"1\" locationid=\"60000262\" locator=\"false\"/>\r\n    <row agent=\"Apas Atshatairos\" agentid=\"3008419\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"2\" locationid=\"60000268\" locator=\"true\"/>\r\n    <row agent=\"Appi Intaa\" agentid=\"3008420\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"2\" locationid=\"60000265\" locator=\"false\"/>\r\n    <row agent=\"Aoken Molehanen\" agentid=\"3008421\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000196\" locator=\"false\"/>\r\n    <row agent=\"Unsen Ikunola\" agentid=\"3008422\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"2\" locationid=\"60000184\" locator=\"true\"/>\r\n    <row agent=\"Vakkebando Obanmaka\" agentid=\"3008423\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"3\" locationid=\"60000187\" locator=\"true\"/>\r\n    <row agent=\"Tennolen Okogairos\" agentid=\"3008424\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"1\" locationid=\"60000190\" locator=\"true\"/>\r\n    <row agent=\"Iesa Pauljala\" agentid=\"3008425\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"2\" locationid=\"60000193\" locator=\"true\"/>\r\n    <row agent=\"Eskajus Tasabeshi\" agentid=\"3008426\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000199\" locator=\"false\"/>\r\n    <row agent=\"Inta Iwalarto\" agentid=\"3008427\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"3\" locationid=\"60000220\" locator=\"false\"/>\r\n    <row agent=\"Saksen Hakin\" agentid=\"3008428\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"1\" locationid=\"60000232\" locator=\"false\"/>\r\n    <row agent=\"Visika Tuonerainen\" agentid=\"3008429\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000226\" locator=\"false\"/>\r\n    <row agent=\"Aratano Sabachi\" agentid=\"3008430\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000235\" locator=\"false\"/>\r\n    <row agent=\"Raunio Halisa\" agentid=\"3008431\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000223\" locator=\"false\"/>\r\n    <row agent=\"Jamon Outo\" agentid=\"3008432\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000229\" locator=\"true\"/>\r\n    <row agent=\"Vikuken Ursainio\" agentid=\"3008433\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"2\" locationid=\"60000076\" locator=\"false\"/>\r\n    <row agent=\"Ailma Saimunen\" agentid=\"3008434\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"4\" locationid=\"60000082\" locator=\"false\"/>\r\n    <row agent=\"Ruumi Pivas\" agentid=\"3008435\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000088\" locator=\"false\"/>\r\n    <row agent=\"Toshanakka Tuimoras\" agentid=\"3008436\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"3\" locationid=\"60000091\" locator=\"false\"/>\r\n    <row agent=\"Vappola Obaken\" agentid=\"3008437\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"4\" locationid=\"60000079\" locator=\"false\"/>\r\n    <row agent=\"Suksisto Handagemi\" agentid=\"3008438\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"3\" locationid=\"60000085\" locator=\"false\"/>\r\n    <row agent=\"Unenailen Okiri\" agentid=\"3008439\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000160\" locator=\"false\"/>\r\n    <row agent=\"Umunmaa Kovanen\" agentid=\"3008440\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"3\" locationid=\"60000163\" locator=\"true\"/>\r\n    <row agent=\"Ishaturi Nimmoda\" agentid=\"3008441\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"2\" locationid=\"60000148\" locator=\"false\"/>\r\n    <row agent=\"Okamainen Nikkoshin\" agentid=\"3008442\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"1\" locationid=\"60000154\" locator=\"false\"/>\r\n    <row agent=\"Shisminen Uusunen\" agentid=\"3008443\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"4\" locationid=\"60000151\" locator=\"false\"/>\r\n    <row agent=\"Kain Marrishi\" agentid=\"3008444\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000157\" locator=\"false\"/>\r\n    <row agent=\"Paarubei To\" agentid=\"3008445\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000025\" locator=\"true\"/>\r\n    <row agent=\"Arken Paara\" agentid=\"3008446\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"2\" locationid=\"60000034\" locator=\"false\"/>\r\n    <row agent=\"Nagunitimo Sakehama\" agentid=\"3008447\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"4\" locationid=\"60000022\" locator=\"false\"/>\r\n    <row agent=\"Akavera Okamaa\" agentid=\"3008448\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000037\" locator=\"false\"/>\r\n    <row agent=\"Edashi Ylikuro\" agentid=\"3008449\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"1\" locationid=\"60000028\" locator=\"false\"/>\r\n    <row agent=\"Sukkenen Shiriken\" agentid=\"3008450\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"4\" locationid=\"60000031\" locator=\"false\"/>\r\n    <row agent=\"Ichino Iesemi\" agentid=\"3008451\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"1\" locationid=\"60000010\" locator=\"false\"/>\r\n    <row agent=\"Kirlilen Aina\" agentid=\"3008452\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"2\" locationid=\"60000016\" locator=\"false\"/>\r\n    <row agent=\"Watalenen Tokaala\" agentid=\"3008453\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"1\" locationid=\"60000019\" locator=\"false\"/>\r\n    <row agent=\"Kigora Ylomainen\" agentid=\"3008454\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"2\" locationid=\"60000007\" locator=\"false\"/>\r\n    <row agent=\"Piertalen Tano\" agentid=\"3008455\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"1\" locationid=\"60000013\" locator=\"false\"/>\r\n    <row agent=\"Yanumano Jaterjutti\" agentid=\"3008456\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"4\" locationid=\"60000067\" locator=\"false\"/>\r\n    <row agent=\"Murikomo Narekoso\" agentid=\"3008457\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000058\" locator=\"false\"/>\r\n    <row agent=\"Arjus Ohbesa\" agentid=\"3008458\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000064\" locator=\"false\"/>\r\n    <row agent=\"Oravas Rappalen\" agentid=\"3008459\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"1\" locationid=\"60000070\" locator=\"false\"/>\r\n    <row agent=\"Wara Odanas\" agentid=\"3008460\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"3\" locationid=\"60000073\" locator=\"true\"/>\r\n    <row agent=\"Ihumakka Kottanen\" agentid=\"3008461\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"3\" locationid=\"60000061\" locator=\"false\"/>\r\n    <row agent=\"Oksilo Oganda\" agentid=\"3008462\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"2\" locationid=\"60000040\" locator=\"false\"/>\r\n    <row agent=\"Kentanen Shinagimi\" agentid=\"3008463\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"4\" locationid=\"60000043\" locator=\"false\"/>\r\n    <row agent=\"Kakkiken Ahtamainen\" agentid=\"3008464\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"2\" locationid=\"60000055\" locator=\"false\"/>\r\n    <row agent=\"Tintoh Hino\" agentid=\"3008465\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"2\" locationid=\"60000052\" locator=\"false\"/>\r\n    <row agent=\"Mamonaitoh Oichidomon\" agentid=\"3008466\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"1\" locationid=\"60000049\" locator=\"false\"/>\r\n    <row agent=\"Okkamon Ohmamon\" agentid=\"3008467\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"3\" locationid=\"60000046\" locator=\"false\"/>\r\n    <row agent=\"Uppila Vuokiken\" agentid=\"3008468\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000094\" locator=\"false\"/>\r\n    <row agent=\"Haan Okaras\" agentid=\"3008469\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000109\" locator=\"false\"/>\r\n    <row agent=\"Inikas Taskaila\" agentid=\"3008470\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"2\" locationid=\"60000100\" locator=\"false\"/>\r\n    <row agent=\"Iwachida Otamon\" agentid=\"3008471\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"2\" locationid=\"60000106\" locator=\"false\"/>\r\n    <row agent=\"Ogishaima Onaneri\" agentid=\"3008472\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"3\" locationid=\"60000097\" locator=\"true\"/>\r\n    <row agent=\"Onesutsu Morikka\" agentid=\"3008473\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"1\" locationid=\"60000103\" locator=\"false\"/>\r\n    <row agent=\"Ichosima Kakkaho\" agentid=\"3008474\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"2\" locationid=\"60000241\" locator=\"false\"/>\r\n    <row agent=\"Ausmunen Poikka\" agentid=\"3008475\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"2\" locationid=\"60000247\" locator=\"false\"/>\r\n    <row agent=\"Isosemi Aokinen\" agentid=\"3008476\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"2\" locationid=\"60000253\" locator=\"false\"/>\r\n    <row agent=\"Ausmanas Ari\" agentid=\"3008477\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000238\" locator=\"true\"/>\r\n    <row agent=\"Aurogas Inoras\" agentid=\"3008478\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000244\" locator=\"false\"/>\r\n    <row agent=\"Aurovuo Hitimo\" agentid=\"3008479\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000250\" locator=\"true\"/>\r\n    <row agent=\"Vikuken Imata\" agentid=\"3008480\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000139\" locator=\"false\"/>\r\n    <row agent=\"Iesaken Ohti\" agentid=\"3008481\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"1\" locationid=\"60000145\" locator=\"false\"/>\r\n    <row agent=\"Ijinen Nakikonto\" agentid=\"3008482\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000136\" locator=\"false\"/>\r\n    <row agent=\"Haakamon Ponusiemi\" agentid=\"3008483\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"4\" locationid=\"60000130\" locator=\"true\"/>\r\n    <row agent=\"Banninaisen Virjekaita\" agentid=\"3008484\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000142\" locator=\"false\"/>\r\n    <row agent=\"Bastaras Enahtila\" agentid=\"3008485\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"1\" locationid=\"60000133\" locator=\"false\"/>\r\n    <row agent=\"Edononi Tanskamon\" agentid=\"3008486\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"4\" locationid=\"60000178\" locator=\"false\"/>\r\n    <row agent=\"Kaurelen Hakkomogas\" agentid=\"3008487\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"3\" locationid=\"60000172\" locator=\"false\"/>\r\n    <row agent=\"Pyysaro Avvas\" agentid=\"3008488\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000169\" locator=\"false\"/>\r\n    <row agent=\"Roikkaraitoh Kakkola\" agentid=\"3008489\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"3\" locationid=\"60000175\" locator=\"true\"/>\r\n    <row agent=\"Isaila Motsen\" agentid=\"3008490\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"2\" locationid=\"60000166\" locator=\"false\"/>\r\n    <row agent=\"Vila Irkas\" agentid=\"3008491\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000181\" locator=\"false\"/>\r\n    <row agent=\"Isudakken Reima\" agentid=\"3008492\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"1\" locationid=\"60000112\" locator=\"false\"/>\r\n    <row agent=\"Oijila Haanjuro\" agentid=\"3008493\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"3\" locationid=\"60000124\" locator=\"false\"/>\r\n    <row agent=\"Ullen Murikomo\" agentid=\"3008494\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"1\" locationid=\"60000127\" locator=\"false\"/>\r\n    <row agent=\"Uetamiras Auritoh\" agentid=\"3008495\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"4\" locationid=\"60000115\" locator=\"true\"/>\r\n    <row agent=\"Orseken Aandu\" agentid=\"3008496\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000118\" locator=\"false\"/>\r\n    <row agent=\"Ijoluori Kaishoyoemon\" agentid=\"3008497\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000121\" locator=\"false\"/>\r\n    <row agent=\"Nomillala Asenen\" agentid=\"3008498\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"1\" locationid=\"60000214\" locator=\"false\"/>\r\n    <row agent=\"Naida Nuukka\" agentid=\"3008499\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"1\" locationid=\"60000205\" locator=\"false\"/>\r\n    <row agent=\"Imaka Paalvalen\" agentid=\"3008501\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"3\" locationid=\"60000208\" locator=\"false\"/>\r\n    <row agent=\"Hadunomi Sikopala\" agentid=\"3008502\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"3\" locationid=\"60000211\" locator=\"false\"/>\r\n    <row agent=\"Pieras Rallolen\" agentid=\"3008503\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"2\" locationid=\"60000217\" locator=\"false\"/>\r\n    <row agent=\"Ahanada Nutsu\" agentid=\"3008504\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"3\" locationid=\"60000256\" locator=\"false\"/>\r\n    <row agent=\"Shinulaito Ontaa\" agentid=\"3008505\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"2\" locationid=\"60000271\" locator=\"false\"/>\r\n    <row agent=\"Asetarmon Okelela\" agentid=\"3008506\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"1\" locationid=\"60000274\" locator=\"false\"/>\r\n    <row agent=\"Asha Nama\" agentid=\"3008507\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"4\" locationid=\"60000283\" locator=\"true\"/>\r\n    <row agent=\"Asenemi Urawarras\" agentid=\"3008508\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"4\" locationid=\"60000286\" locator=\"false\"/>\r\n    <row agent=\"Asata Doisoro\" agentid=\"3008509\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"4\" locationid=\"60000289\" locator=\"false\"/>\r\n    <row agent=\"Aariwa Isera\" agentid=\"3008510\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"2\" locationid=\"60000292\" locator=\"true\"/>\r\n    <row agent=\"Airada Ikagonji\" agentid=\"3008511\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"2\" locationid=\"60000298\" locator=\"true\"/>\r\n    <row agent=\"Pikken Sasiyobei\" agentid=\"3008512\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"2\" locationid=\"60000295\" locator=\"false\"/>\r\n    <row agent=\"Isunmaa Hyyhenda\" agentid=\"3008513\" agenttypeid=\"8\" corporationid=\"1000003\" divisionid=\"22\" level=\"5\" locationid=\"60000277\" locator=\"false\"/>\r\n    <row agent=\"Korakila Mashin\" agentid=\"3008514\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"2\" locationid=\"60000280\" locator=\"false\"/>\r\n    <row agent=\"Itanala Oila\" agentid=\"3008515\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"3\" locationid=\"60000301\" locator=\"true\"/>\r\n    <row agent=\"Inkozaitoh Niruda\" agentid=\"3008516\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"4\" locationid=\"60000304\" locator=\"true\"/>\r\n    <row agent=\"Eskajus Ayuki\" agentid=\"3008517\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"4\" locationid=\"60000307\" locator=\"false\"/>\r\n    <row agent=\"Marelar Umian\" agentid=\"3008518\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"24\" level=\"1\" locationid=\"60007732\" locator=\"true\"/>\r\n    <row agent=\"Igu Hudi\" agentid=\"3008519\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"3\" locationid=\"60007738\" locator=\"true\"/>\r\n    <row agent=\"Atudad Morni\" agentid=\"3008520\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"1\" locationid=\"60007735\" locator=\"false\"/>\r\n    <row agent=\"Bona Sasfal\" agentid=\"3008521\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"24\" level=\"2\" locationid=\"60007762\" locator=\"false\"/>\r\n    <row agent=\"Artimielia Neraza\" agentid=\"3008522\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"3\" locationid=\"60007765\" locator=\"true\"/>\r\n    <row agent=\"Zach Dormondan\" agentid=\"3008523\" agenttypeid=\"8\" corporationid=\"1000078\" divisionid=\"22\" level=\"5\" locationid=\"60007759\" locator=\"false\"/>\r\n    <row agent=\"Samak Nardaz\" agentid=\"3008524\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"1\" locationid=\"60007750\" locator=\"false\"/>\r\n    <row agent=\"Artamya Sane\" agentid=\"3008525\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"24\" level=\"2\" locationid=\"60007756\" locator=\"true\"/>\r\n    <row agent=\"Goram Lizta\" agentid=\"3008526\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"3\" locationid=\"60007753\" locator=\"true\"/>\r\n    <row agent=\"Nenshikih Rinreh\" agentid=\"3008527\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"4\" locationid=\"60007747\" locator=\"false\"/>\r\n    <row agent=\"Danera Hirnun\" agentid=\"3008528\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"2\" locationid=\"60007741\" locator=\"false\"/>\r\n    <row agent=\"Seyvami Amol\" agentid=\"3008529\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"2\" locationid=\"60007744\" locator=\"false\"/>\r\n    <row agent=\"Ahni Fahama\" agentid=\"3008530\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"1\" locationid=\"60007768\" locator=\"false\"/>\r\n    <row agent=\"Rima Temira\" agentid=\"3008531\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"3\" locationid=\"60007771\" locator=\"true\"/>\r\n    <row agent=\"Honis Nimedaz\" agentid=\"3008532\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"3\" locationid=\"60007777\" locator=\"false\"/>\r\n    <row agent=\"Yanoyal Irahir\" agentid=\"3008533\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"3\" locationid=\"60007774\" locator=\"true\"/>\r\n    <row agent=\"Hareydar Hesal\" agentid=\"3008534\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"2\" locationid=\"60007849\" locator=\"true\"/>\r\n    <row agent=\"Ebneloum Anes\" agentid=\"3008535\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"3\" locationid=\"60007840\" locator=\"true\"/>\r\n    <row agent=\"Lalmesras Todana\" agentid=\"3008536\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"2\" locationid=\"60007843\" locator=\"false\"/>\r\n    <row agent=\"Shanyi Urkham\" agentid=\"3008537\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"1\" locationid=\"60007846\" locator=\"true\"/>\r\n    <row agent=\"Choga Bahyahi\" agentid=\"3008538\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"2\" locationid=\"60007864\" locator=\"true\"/>\r\n    <row agent=\"Nardir Linakin\" agentid=\"3008539\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"2\" locationid=\"60007870\" locator=\"true\"/>\r\n    <row agent=\"Gousar Sihtata\" agentid=\"3008540\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"2\" locationid=\"60007873\" locator=\"false\"/>\r\n    <row agent=\"Fareer Malkila\" agentid=\"3008541\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"1\" locationid=\"60007867\" locator=\"true\"/>\r\n    <row agent=\"Kahtin Khahsel\" agentid=\"3008542\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"1\" locationid=\"60007828\" locator=\"false\"/>\r\n    <row agent=\"Sharroon Rarala\" agentid=\"3008543\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"1\" locationid=\"60007831\" locator=\"true\"/>\r\n    <row agent=\"Tamata Iareb\" agentid=\"3008544\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"3\" locationid=\"60007834\" locator=\"true\"/>\r\n    <row agent=\"Shabrapa Dubahar\" agentid=\"3008545\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"2\" locationid=\"60007837\" locator=\"false\"/>\r\n    <row agent=\"Chozal Yodurios\" agentid=\"3008546\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"2\" locationid=\"60007852\" locator=\"true\"/>\r\n    <row agent=\"Cankihma Azhgabid\" agentid=\"3008547\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"3\" locationid=\"60007858\" locator=\"true\"/>\r\n    <row agent=\"Sezeni Bezbode\" agentid=\"3008548\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"4\" locationid=\"60007855\" locator=\"true\"/>\r\n    <row agent=\"Diam Sabidag\" agentid=\"3008549\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"1\" locationid=\"60007861\" locator=\"false\"/>\r\n    <row agent=\"Batehran Kemdiya\" agentid=\"3008550\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"4\" locationid=\"60007804\" locator=\"true\"/>\r\n    <row agent=\"Ezal Araz\" agentid=\"3008551\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"2\" locationid=\"60007807\" locator=\"false\"/>\r\n    <row agent=\"Puhtesh Niusa\" agentid=\"3008552\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"4\" locationid=\"60007813\" locator=\"true\"/>\r\n    <row agent=\"Shabiri Arul\" agentid=\"3008553\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"2\" locationid=\"60007810\" locator=\"true\"/>\r\n    <row agent=\"Zoke Eredlis\" agentid=\"3008554\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"2\" locationid=\"60007819\" locator=\"true\"/>\r\n    <row agent=\"Malabapt Ove\" agentid=\"3008555\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"2\" locationid=\"60007825\" locator=\"true\"/>\r\n    <row agent=\"Sanzuch Rah\" agentid=\"3008556\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"2\" locationid=\"60007816\" locator=\"false\"/>\r\n    <row agent=\"Ladisa Mobit\" agentid=\"3008557\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"2\" locationid=\"60007822\" locator=\"false\"/>\r\n    <row agent=\"Shelata Nayab\" agentid=\"3008558\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"1\" locationid=\"60007780\" locator=\"true\"/>\r\n    <row agent=\"Yapan Aka\" agentid=\"3008559\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"2\" locationid=\"60007786\" locator=\"true\"/>\r\n    <row agent=\"Ozaya Barimam\" agentid=\"3008560\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"4\" locationid=\"60007783\" locator=\"true\"/>\r\n    <row agent=\"Yomada Atour\" agentid=\"3008561\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"2\" locationid=\"60007789\" locator=\"true\"/>\r\n    <row agent=\"Machal Asesamy\" agentid=\"3008562\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"2\" locationid=\"60007885\" locator=\"false\"/>\r\n    <row agent=\"Kaym Amemih\" agentid=\"3008563\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"4\" locationid=\"60007879\" locator=\"false\"/>\r\n    <row agent=\"Barmass Belasiad\" agentid=\"3008564\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"3\" locationid=\"60007882\" locator=\"false\"/>\r\n    <row agent=\"Nirkun Mese\" agentid=\"3008565\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"2\" locationid=\"60007876\" locator=\"false\"/>\r\n    <row agent=\"Imomara Gib\" agentid=\"3008566\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"2\" locationid=\"60007795\" locator=\"true\"/>\r\n    <row agent=\"Talane Zierer\" agentid=\"3008567\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"3\" locationid=\"60007801\" locator=\"true\"/>\r\n    <row agent=\"Bela Nureles\" agentid=\"3008568\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"2\" locationid=\"60007792\" locator=\"false\"/>\r\n    <row agent=\"Dekrata Abes\" agentid=\"3008569\" agenttypeid=\"8\" corporationid=\"1000079\" divisionid=\"22\" level=\"5\" locationid=\"60007798\" locator=\"false\"/>\r\n    <row agent=\"Pooner Kielish\" agentid=\"3008570\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007888\" locator=\"true\"/>\r\n    <row agent=\"Absoom Masel\" agentid=\"3008571\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"3\" locationid=\"60007999\" locator=\"false\"/>\r\n    <row agent=\"Subomous Arraz\" agentid=\"3008572\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"2\" locationid=\"60008002\" locator=\"true\"/>\r\n    <row agent=\"Sigathim Alurva\" agentid=\"3008573\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"22\" level=\"2\" locationid=\"60008005\" locator=\"true\"/>\r\n    <row agent=\"Apharud Sragu\" agentid=\"3008574\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"2\" locationid=\"60007996\" locator=\"true\"/>\r\n    <row agent=\"Pijil Pedfi\" agentid=\"3008575\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007897\" locator=\"true\"/>\r\n    <row agent=\"Atoram Shukonren\" agentid=\"3008576\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007894\" locator=\"false\"/>\r\n    <row agent=\"Namai Manir\" agentid=\"3008577\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007891\" locator=\"false\"/>\r\n    <row agent=\"Sanopi Ilik\" agentid=\"3008578\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007966\" locator=\"false\"/>\r\n    <row agent=\"Shizemteh Rasabe\" agentid=\"3008579\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007960\" locator=\"false\"/>\r\n    <row agent=\"Pintat Panai\" agentid=\"3008580\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"3\" locationid=\"60007969\" locator=\"true\"/>\r\n    <row agent=\"Kourim Mooh\" agentid=\"3008581\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"2\" locationid=\"60007963\" locator=\"true\"/>\r\n    <row agent=\"Mulu Batnu\" agentid=\"3008582\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"3\" locationid=\"60007984\" locator=\"true\"/>\r\n    <row agent=\"Nada Samahi\" agentid=\"3008583\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"22\" level=\"2\" locationid=\"60007990\" locator=\"false\"/>\r\n    <row agent=\"Gith Pamar\" agentid=\"3008584\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007993\" locator=\"false\"/>\r\n    <row agent=\"Phasas Mynuma\" agentid=\"3008585\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"3\" locationid=\"60007987\" locator=\"false\"/>\r\n    <row agent=\"Athasho Manad\" agentid=\"3008586\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007924\" locator=\"true\"/>\r\n    <row agent=\"Jafshi Nihans\" agentid=\"3008587\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"22\" level=\"1\" locationid=\"60007933\" locator=\"false\"/>\r\n    <row agent=\"Pahranat Mehatoor\" agentid=\"3008588\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"4\" locationid=\"60007927\" locator=\"true\"/>\r\n    <row agent=\"Landhya Yural\" agentid=\"3008589\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007930\" locator=\"true\"/>\r\n    <row agent=\"Loranan Selobnub\" agentid=\"3008590\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"4\" locationid=\"60007945\" locator=\"true\"/>\r\n    <row agent=\"Orri Jalet\" agentid=\"3008591\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"4\" locationid=\"60007936\" locator=\"false\"/>\r\n    <row agent=\"Sanasna Adiam\" agentid=\"3008592\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"22\" level=\"3\" locationid=\"60007939\" locator=\"true\"/>\r\n    <row agent=\"Goun Ghoohka\" agentid=\"3008593\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"22\" level=\"3\" locationid=\"60007942\" locator=\"false\"/>\r\n    <row agent=\"Jissi Rahmogheb\" agentid=\"3008594\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"2\" locationid=\"60007954\" locator=\"false\"/>\r\n    <row agent=\"Shobhena Yoonareyd\" agentid=\"3008595\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"4\" locationid=\"60007951\" locator=\"true\"/>\r\n    <row agent=\"Baala Memiru\" agentid=\"3008596\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"2\" locationid=\"60007948\" locator=\"false\"/>\r\n    <row agent=\"Sarahav Ahmach\" agentid=\"3008597\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007957\" locator=\"true\"/>\r\n    <row agent=\"Mood Elhim\" agentid=\"3008598\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"2\" locationid=\"60007900\" locator=\"false\"/>\r\n    <row agent=\"Hecala Jiradal\" agentid=\"3008599\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"2\" locationid=\"60007903\" locator=\"true\"/>\r\n    <row agent=\"Mulata Siminu\" agentid=\"3008600\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"22\" level=\"3\" locationid=\"60007906\" locator=\"true\"/>\r\n    <row agent=\"Gakeli Zailkamirat\" agentid=\"3008601\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"22\" level=\"3\" locationid=\"60007909\" locator=\"true\"/>\r\n    <row agent=\"Tehi Norersi\" agentid=\"3008602\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"3\" locationid=\"60007978\" locator=\"true\"/>\r\n    <row agent=\"Zulih Yesten\" agentid=\"3008603\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"22\" level=\"1\" locationid=\"60007981\" locator=\"true\"/>\r\n    <row agent=\"Bierohr Rarrodaka\" agentid=\"3008604\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"22\" level=\"1\" locationid=\"60007972\" locator=\"false\"/>\r\n    <row agent=\"Borvah Goumis\" agentid=\"3008605\" agenttypeid=\"8\" corporationid=\"1000080\" divisionid=\"22\" level=\"5\" locationid=\"60007975\" locator=\"false\"/>\r\n    <row agent=\"Netzang Noredjol\" agentid=\"3008606\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"2\" locationid=\"60007921\" locator=\"false\"/>\r\n    <row agent=\"Yalka Mamdaya\" agentid=\"3008607\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"22\" level=\"2\" locationid=\"60007915\" locator=\"false\"/>\r\n    <row agent=\"Osas Ovan\" agentid=\"3008608\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"2\" locationid=\"60007918\" locator=\"false\"/>\r\n    <row agent=\"Naz Murviro\" agentid=\"3008609\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"22\" level=\"4\" locationid=\"60007912\" locator=\"true\"/>\r\n    <row agent=\"Arat Samas\" agentid=\"3008610\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"22\" level=\"1\" locationid=\"60008008\" locator=\"false\"/>\r\n    <row agent=\"Chamag Darami\" agentid=\"3008611\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"1\" locationid=\"60008026\" locator=\"false\"/>\r\n    <row agent=\"Norma Uredaz\" agentid=\"3008612\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"2\" locationid=\"60008020\" locator=\"false\"/>\r\n    <row agent=\"Mafsizan Lebai\" agentid=\"3008613\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"2\" locationid=\"60008029\" locator=\"false\"/>\r\n    <row agent=\"Yasheri Mida\" agentid=\"3008614\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"2\" locationid=\"60008023\" locator=\"false\"/>\r\n    <row agent=\"Manalud Khnin\" agentid=\"3008615\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"22\" level=\"2\" locationid=\"60008047\" locator=\"false\"/>\r\n    <row agent=\"Naheha Soza\" agentid=\"3008616\" agenttypeid=\"8\" corporationid=\"1000081\" divisionid=\"24\" level=\"5\" locationid=\"60008050\" locator=\"false\"/>\r\n    <row agent=\"Petashih Rark\" agentid=\"3008617\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"1\" locationid=\"60008053\" locator=\"true\"/>\r\n    <row agent=\"Bittanshal Anagh\" agentid=\"3008618\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"2\" locationid=\"60008044\" locator=\"true\"/>\r\n    <row agent=\"Arthal Arisi\" agentid=\"3008619\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"2\" locationid=\"60008041\" locator=\"true\"/>\r\n    <row agent=\"Arion Erbamait\" agentid=\"3008620\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"22\" level=\"4\" locationid=\"60008032\" locator=\"true\"/>\r\n    <row agent=\"Maeemlie Kebeyatiri\" agentid=\"3008621\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"2\" locationid=\"60008035\" locator=\"true\"/>\r\n    <row agent=\"Irabam Tobi\" agentid=\"3008622\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"4\" locationid=\"60008038\" locator=\"true\"/>\r\n    <row agent=\"Psen Mardon\" agentid=\"3008623\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"22\" level=\"4\" locationid=\"60008089\" locator=\"false\"/>\r\n    <row agent=\"Pakefarit Kotiston\" agentid=\"3008624\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"2\" locationid=\"60008080\" locator=\"false\"/>\r\n    <row agent=\"Khahran Sragu\" agentid=\"3008625\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"1\" locationid=\"60008086\" locator=\"false\"/>\r\n    <row agent=\"Ohrof Hunis\" agentid=\"3008626\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"22\" level=\"4\" locationid=\"60008083\" locator=\"true\"/>\r\n    <row agent=\"Rarmesu Chomyah\" agentid=\"3008627\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"4\" locationid=\"60008074\" locator=\"false\"/>\r\n    <row agent=\"Keneka Aremyi\" agentid=\"3008628\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"3\" locationid=\"60008068\" locator=\"false\"/>\r\n    <row agent=\"Arerar Hajaphron\" agentid=\"3008629\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"22\" level=\"4\" locationid=\"60008077\" locator=\"true\"/>\r\n    <row agent=\"Nidebora Lahnara\" agentid=\"3008630\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"22\" level=\"4\" locationid=\"60008071\" locator=\"true\"/>\r\n    <row agent=\"Sibahbam Mehnih\" agentid=\"3008631\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"22\" level=\"3\" locationid=\"60008107\" locator=\"true\"/>\r\n    <row agent=\"Binada Chutsya\" agentid=\"3008632\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"22\" level=\"3\" locationid=\"60008113\" locator=\"true\"/>\r\n    <row agent=\"Huro Itmu\" agentid=\"3008633\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"1\" locationid=\"60008104\" locator=\"false\"/>\r\n    <row agent=\"Ahvasa Aulin\" agentid=\"3008634\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"2\" locationid=\"60008110\" locator=\"true\"/>\r\n    <row agent=\"Brara Yastet\" agentid=\"3008635\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"22\" level=\"4\" locationid=\"60008056\" locator=\"true\"/>\r\n    <row agent=\"Drirshoran Eltis\" agentid=\"3008636\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"2\" locationid=\"60008059\" locator=\"true\"/>\r\n    <row agent=\"Rova Amareh\" agentid=\"3008637\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"1\" locationid=\"60008065\" locator=\"false\"/>\r\n    <row agent=\"Horshandas Seitam\" agentid=\"3008638\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"1\" locationid=\"60008062\" locator=\"false\"/>\r\n    <row agent=\"Bishos Narzash\" agentid=\"3008639\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"3\" locationid=\"60008014\" locator=\"true\"/>\r\n    <row agent=\"Ravya Drakiereh\" agentid=\"3008640\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"4\" locationid=\"60008011\" locator=\"true\"/>\r\n    <row agent=\"Aslech Chedo\" agentid=\"3008641\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"1\" locationid=\"60008017\" locator=\"false\"/>\r\n    <row agent=\"Hahin Abnum\" agentid=\"3008642\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"22\" level=\"2\" locationid=\"60008116\" locator=\"false\"/>\r\n    <row agent=\"Kebamoum Ahvar\" agentid=\"3008643\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"4\" locationid=\"60008125\" locator=\"true\"/>\r\n    <row agent=\"Paraden Chidah\" agentid=\"3008644\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"22\" level=\"3\" locationid=\"60008119\" locator=\"false\"/>\r\n    <row agent=\"Mishriji Adamil\" agentid=\"3008645\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"2\" locationid=\"60008122\" locator=\"false\"/>\r\n    <row agent=\"Opoud Innan\" agentid=\"3008646\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"22\" level=\"2\" locationid=\"60008098\" locator=\"true\"/>\r\n    <row agent=\"Natehrnund Pelarne\" agentid=\"3008647\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"1\" locationid=\"60008101\" locator=\"false\"/>\r\n    <row agent=\"Talidal Aurad\" agentid=\"3008648\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"22\" level=\"4\" locationid=\"60008092\" locator=\"false\"/>\r\n    <row agent=\"Loun Uphret\" agentid=\"3008649\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"3\" locationid=\"60008095\" locator=\"true\"/>\r\n    <row agent=\"Fislir Maddam\" agentid=\"3008650\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"22\" level=\"1\" locationid=\"60008128\" locator=\"false\"/>\r\n    <row agent=\"Ataru Sehshi\" agentid=\"3008651\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"22\" level=\"3\" locationid=\"60008230\" locator=\"true\"/>\r\n    <row agent=\"Ordize Riraba\" agentid=\"3008652\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"1\" locationid=\"60008224\" locator=\"false\"/>\r\n    <row agent=\"Arheh Aman\" agentid=\"3008653\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"2\" locationid=\"60008227\" locator=\"false\"/>\r\n    <row agent=\"Hessiehan Chemilip\" agentid=\"3008654\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"22\" level=\"2\" locationid=\"60008233\" locator=\"true\"/>\r\n    <row agent=\"Hepeta Bis\" agentid=\"3008655\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"2\" locationid=\"60008134\" locator=\"true\"/>\r\n    <row agent=\"Babenir Takaso\" agentid=\"3008656\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"4\" locationid=\"60008131\" locator=\"true\"/>\r\n    <row agent=\"Alkarnour Raa\" agentid=\"3008657\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"4\" locationid=\"60008137\" locator=\"true\"/>\r\n    <row agent=\"Shasha Hifa\" agentid=\"3008658\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"1\" locationid=\"60008212\" locator=\"true\"/>\r\n    <row agent=\"Anayoud Hehyoorath\" agentid=\"3008659\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"2\" locationid=\"60008215\" locator=\"false\"/>\r\n    <row agent=\"Koored Maires\" agentid=\"3008660\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"3\" locationid=\"60008218\" locator=\"true\"/>\r\n    <row agent=\"Dakiribi Yamaden\" agentid=\"3008661\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"22\" level=\"1\" locationid=\"60008221\" locator=\"false\"/>\r\n    <row agent=\"Barva Barishena\" agentid=\"3008662\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"1\" locationid=\"60008188\" locator=\"false\"/>\r\n    <row agent=\"Habi Ghamri\" agentid=\"3008663\" agenttypeid=\"8\" corporationid=\"1000082\" divisionid=\"24\" level=\"5\" locationid=\"60008191\" locator=\"false\"/>\r\n    <row agent=\"Galiahervan Hiasan\" agentid=\"3008664\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"22\" level=\"1\" locationid=\"60008197\" locator=\"false\"/>\r\n    <row agent=\"Onpi Safaner\" agentid=\"3008665\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"3\" locationid=\"60008194\" locator=\"false\"/>\r\n    <row agent=\"Shakah Yah\" agentid=\"3008666\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"1\" locationid=\"60008164\" locator=\"false\"/>\r\n    <row agent=\"Falian Khivad\" agentid=\"3008667\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"3\" locationid=\"60008167\" locator=\"true\"/>\r\n    <row agent=\"Chana Andichouz\" agentid=\"3008668\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"2\" locationid=\"60008173\" locator=\"false\"/>\r\n    <row agent=\"Ahayen Mulya\" agentid=\"3008669\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"1\" locationid=\"60008170\" locator=\"false\"/>\r\n    <row agent=\"Abendebi Noama\" agentid=\"3008670\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"22\" level=\"3\" locationid=\"60008152\" locator=\"false\"/>\r\n    <row agent=\"Ahroun Sinkhevir\" agentid=\"3008671\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"2\" locationid=\"60008161\" locator=\"false\"/>\r\n    <row agent=\"Nazed Dirva\" agentid=\"3008672\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"22\" level=\"1\" locationid=\"60008155\" locator=\"true\"/>\r\n    <row agent=\"Maheesab Vatiu\" agentid=\"3008673\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"3\" locationid=\"60008158\" locator=\"true\"/>\r\n    <row agent=\"Zaruh Pirusafa\" agentid=\"3008674\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"4\" locationid=\"60008200\" locator=\"true\"/>\r\n    <row agent=\"Ghosh Sadmiahas\" agentid=\"3008675\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"3\" locationid=\"60008209\" locator=\"false\"/>\r\n    <row agent=\"Kasote Kana\" agentid=\"3008676\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"4\" locationid=\"60008206\" locator=\"true\"/>\r\n    <row agent=\"Abian Serira\" agentid=\"3008677\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"2\" locationid=\"60008203\" locator=\"true\"/>\r\n    <row agent=\"Tokodan Yoti\" agentid=\"3008678\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"1\" locationid=\"60008149\" locator=\"false\"/>\r\n    <row agent=\"Oshu Ghaty\" agentid=\"3008679\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"22\" level=\"1\" locationid=\"60008140\" locator=\"false\"/>\r\n    <row agent=\"Ayoo Posar\" agentid=\"3008680\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"4\" locationid=\"60008143\" locator=\"true\"/>\r\n    <row agent=\"Biru Gasavak\" agentid=\"3008681\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"22\" level=\"4\" locationid=\"60008146\" locator=\"false\"/>\r\n    <row agent=\"Care Naskad\" agentid=\"3008682\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"1\" locationid=\"60008176\" locator=\"false\"/>\r\n    <row agent=\"Ikhtaz Zaiden\" agentid=\"3008683\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"3\" locationid=\"60008179\" locator=\"true\"/>\r\n    <row agent=\"Armanad Hokaba\" agentid=\"3008684\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"1\" locationid=\"60008182\" locator=\"true\"/>\r\n    <row agent=\"Ihrda Goram\" agentid=\"3008685\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"22\" level=\"4\" locationid=\"60008185\" locator=\"true\"/>\r\n    <row agent=\"Bushid Shahni\" agentid=\"3008686\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"3\" locationid=\"60008245\" locator=\"true\"/>\r\n    <row agent=\"Gamis Pena\" agentid=\"3008687\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"2\" locationid=\"60008239\" locator=\"false\"/>\r\n    <row agent=\"Madekhti Ahayen\" agentid=\"3008688\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"22\" level=\"4\" locationid=\"60008242\" locator=\"false\"/>\r\n    <row agent=\"Edel Roh\" agentid=\"3008689\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"1\" locationid=\"60008236\" locator=\"true\"/>\r\n    <row agent=\"Bingavam Ashkal\" agentid=\"3008690\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008248\" locator=\"false\"/>\r\n    <row agent=\"Sohich Alave\" agentid=\"3008691\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008332\" locator=\"true\"/>\r\n    <row agent=\"Lahnina Aslech\" agentid=\"3008692\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"4\" locationid=\"60008335\" locator=\"true\"/>\r\n    <row agent=\"Gyakager Aresh\" agentid=\"3008693\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"2\" locationid=\"60008338\" locator=\"true\"/>\r\n    <row agent=\"Shimu Chamemi\" agentid=\"3008694\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008341\" locator=\"true\"/>\r\n    <row agent=\"Aulem Ason\" agentid=\"3008695\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008254\" locator=\"true\"/>\r\n    <row agent=\"Thanabi Mona\" agentid=\"3008696\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"4\" locationid=\"60008257\" locator=\"true\"/>\r\n    <row agent=\"Imafa Snamshasan\" agentid=\"3008697\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008251\" locator=\"false\"/>\r\n    <row agent=\"Bayuka Iasah\" agentid=\"3008698\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"4\" locationid=\"60008302\" locator=\"true\"/>\r\n    <row agent=\"Zigh Taheenen\" agentid=\"3008699\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"4\" locationid=\"60008296\" locator=\"true\"/>\r\n    <row agent=\"Shochu Nabah\" agentid=\"3008700\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008299\" locator=\"true\"/>\r\n    <row agent=\"Mekashtad Fambun\" agentid=\"3008701\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008305\" locator=\"true\"/>\r\n    <row agent=\"Arpah Tarel\" agentid=\"3008702\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008344\" locator=\"false\"/>\r\n    <row agent=\"Nag Payah\" agentid=\"3008703\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"2\" locationid=\"60008347\" locator=\"true\"/>\r\n    <row agent=\"Gardasstar Yishinoon\" agentid=\"3008704\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"2\" locationid=\"60008353\" locator=\"true\"/>\r\n    <row agent=\"Meni Siparne\" agentid=\"3008705\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"4\" locationid=\"60008350\" locator=\"false\"/>\r\n    <row agent=\"Laran Semottoriku\" agentid=\"3008706\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008284\" locator=\"true\"/>\r\n    <row agent=\"Sirita Komosa\" agentid=\"3008707\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008290\" locator=\"true\"/>\r\n    <row agent=\"Navare Akand\" agentid=\"3008708\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008287\" locator=\"false\"/>\r\n    <row agent=\"Kainkan Shobrafa\" agentid=\"3008709\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"2\" locationid=\"60008293\" locator=\"false\"/>\r\n    <row agent=\"Dethahal Naavar\" agentid=\"3008710\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"4\" locationid=\"60008314\" locator=\"true\"/>\r\n    <row agent=\"Arira Barahan\" agentid=\"3008711\" agenttypeid=\"8\" corporationid=\"1000083\" divisionid=\"22\" level=\"5\" locationid=\"60008308\" locator=\"false\"/>\r\n    <row agent=\"Raniyoun Kormen\" agentid=\"3008712\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"2\" locationid=\"60008311\" locator=\"true\"/>\r\n    <row agent=\"Gada Kati\" agentid=\"3008713\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008317\" locator=\"true\"/>\r\n    <row agent=\"Mozat Kartan\" agentid=\"3008714\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"2\" locationid=\"60008323\" locator=\"false\"/>\r\n    <row agent=\"Sannisu Thoji\" agentid=\"3008715\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"2\" locationid=\"60008320\" locator=\"true\"/>\r\n    <row agent=\"Samin Chisara\" agentid=\"3008716\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008326\" locator=\"false\"/>\r\n    <row agent=\"Dayera Ezras\" agentid=\"3008717\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008329\" locator=\"false\"/>\r\n    <row agent=\"Mebhiyen Ranaka\" agentid=\"3008718\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008260\" locator=\"true\"/>\r\n    <row agent=\"Ehal Darmazaf\" agentid=\"3008719\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"4\" locationid=\"60008269\" locator=\"true\"/>\r\n    <row agent=\"Kazem Chomyah\" agentid=\"3008720\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008266\" locator=\"false\"/>\r\n    <row agent=\"Ebira Manera\" agentid=\"3008721\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"2\" locationid=\"60008263\" locator=\"false\"/>\r\n    <row agent=\"Nada Phalind\" agentid=\"3008722\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008278\" locator=\"false\"/>\r\n    <row agent=\"Shanna Laban\" agentid=\"3008723\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008272\" locator=\"true\"/>\r\n    <row agent=\"Chaiga Sumy\" agentid=\"3008724\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"4\" locationid=\"60008275\" locator=\"true\"/>\r\n    <row agent=\"Harda Nedada\" agentid=\"3008725\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"4\" locationid=\"60008281\" locator=\"true\"/>\r\n    <row agent=\"Shika Ginanis\" agentid=\"3008726\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"2\" locationid=\"60008356\" locator=\"false\"/>\r\n    <row agent=\"Khash Youn\" agentid=\"3008727\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"2\" locationid=\"60008365\" locator=\"false\"/>\r\n    <row agent=\"Bomana Elchen\" agentid=\"3008728\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008359\" locator=\"false\"/>\r\n    <row agent=\"Adodi Jares\" agentid=\"3008729\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"2\" locationid=\"60008362\" locator=\"false\"/>\r\n    <row agent=\"Bahda Berdih\" agentid=\"3008730\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008368\" locator=\"true\"/>\r\n    <row agent=\"Zanes Ilayai\" agentid=\"3008731\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"22\" level=\"2\" locationid=\"60008422\" locator=\"true\"/>\r\n    <row agent=\"Yapera Fissi\" agentid=\"3008732\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008419\" locator=\"true\"/>\r\n    <row agent=\"Mides Hathah\" agentid=\"3008733\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008416\" locator=\"false\"/>\r\n    <row agent=\"Nayeri Shushi\" agentid=\"3008734\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"4\" locationid=\"60008425\" locator=\"true\"/>\r\n    <row agent=\"Avenid Voohah\" agentid=\"3008735\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"3\" locationid=\"60008371\" locator=\"true\"/>\r\n    <row agent=\"Ananya Mahir\" agentid=\"3008736\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"22\" level=\"4\" locationid=\"60008377\" locator=\"true\"/>\r\n    <row agent=\"Atair Dinelu\" agentid=\"3008737\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008374\" locator=\"false\"/>\r\n    <row agent=\"Alaz Chaktaren\" agentid=\"3008738\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008431\" locator=\"true\"/>\r\n    <row agent=\"Orda Sand\" agentid=\"3008739\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008428\" locator=\"false\"/>\r\n    <row agent=\"Bognan Andrarad\" agentid=\"3008740\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"22\" level=\"2\" locationid=\"60008437\" locator=\"false\"/>\r\n    <row agent=\"Hounatad Mezan\" agentid=\"3008741\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"22\" level=\"1\" locationid=\"60008434\" locator=\"true\"/>\r\n    <row agent=\"Kiskin Nonon\" agentid=\"3008742\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008413\" locator=\"false\"/>\r\n    <row agent=\"Kirul Butaroob\" agentid=\"3008743\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008404\" locator=\"true\"/>\r\n    <row agent=\"Goum Mimian\" agentid=\"3008744\" agenttypeid=\"8\" corporationid=\"1000084\" divisionid=\"24\" level=\"5\" locationid=\"60008407\" locator=\"false\"/>\r\n    <row agent=\"Obron Chajma\" agentid=\"3008745\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"3\" locationid=\"60008410\" locator=\"true\"/>\r\n    <row agent=\"Omdan Jehasar\" agentid=\"3008746\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"22\" level=\"3\" locationid=\"60008464\" locator=\"true\"/>\r\n    <row agent=\"Partod Darmete\" agentid=\"3008747\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"22\" level=\"4\" locationid=\"60008470\" locator=\"true\"/>\r\n    <row agent=\"Ghaisa Manot\" agentid=\"3008748\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008473\" locator=\"false\"/>\r\n    <row agent=\"Sathepadi Nahyeen\" agentid=\"3008749\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008467\" locator=\"false\"/>\r\n    <row agent=\"Majamar Abouloun\" agentid=\"3008750\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008380\" locator=\"false\"/>\r\n    <row agent=\"Kasonia Lahror\" agentid=\"3008751\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008383\" locator=\"false\"/>\r\n    <row agent=\"Gornoon Mezankhenij\" agentid=\"3008752\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"3\" locationid=\"60008389\" locator=\"true\"/>\r\n    <row agent=\"Ajayi Ahih\" agentid=\"3008753\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008386\" locator=\"true\"/>\r\n    <row agent=\"Esala Azen\" agentid=\"3008754\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008446\" locator=\"false\"/>\r\n    <row agent=\"Yahrneaz Nelamou\" agentid=\"3008755\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"22\" level=\"3\" locationid=\"60008443\" locator=\"true\"/>\r\n    <row agent=\"Kahiaresh Neziel\" agentid=\"3008756\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008440\" locator=\"false\"/>\r\n    <row agent=\"Baphio Babeta\" agentid=\"3008757\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008449\" locator=\"false\"/>\r\n    <row agent=\"Yithmi Magnu\" agentid=\"3008758\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008479\" locator=\"true\"/>\r\n    <row agent=\"Akenul Moutid\" agentid=\"3008759\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008485\" locator=\"true\"/>\r\n    <row agent=\"Zalemad Nouhevoh\" agentid=\"3008760\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008476\" locator=\"false\"/>\r\n    <row agent=\"Tim Barma\" agentid=\"3008761\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"3\" locationid=\"60008482\" locator=\"false\"/>\r\n    <row agent=\"Onil Aviakil\" agentid=\"3008762\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"3\" locationid=\"60008455\" locator=\"false\"/>\r\n    <row agent=\"Sahindem Shefan\" agentid=\"3008763\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008461\" locator=\"false\"/>\r\n    <row agent=\"Hokshmi Aramin\" agentid=\"3008764\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"4\" locationid=\"60008452\" locator=\"true\"/>\r\n    <row agent=\"Djabak Lahtami\" agentid=\"3008765\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"3\" locationid=\"60008458\" locator=\"true\"/>\r\n    <row agent=\"Mirose Sahalondri\" agentid=\"3008766\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008392\" locator=\"true\"/>\r\n    <row agent=\"Sapi Nayhah\" agentid=\"3008767\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"3\" locationid=\"60008398\" locator=\"true\"/>\r\n    <row agent=\"Nabobeh Sarwed\" agentid=\"3008768\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008401\" locator=\"false\"/>\r\n    <row agent=\"Shartimih Khalabnar\" agentid=\"3008769\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008395\" locator=\"false\"/>\r\n    <row agent=\"Bavadon Gali\" agentid=\"3008770\" agenttypeid=\"2\" corporationid=\"1000085\" divisionid=\"22\" level=\"2\" locationid=\"60008491\" locator=\"false\"/>\r\n    <row agent=\"Nehrnah Gorouyar\" agentid=\"3008771\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"1\" locationid=\"60008494\" locator=\"false\"/>\r\n    <row agent=\"Hilala Yasalek\" agentid=\"3008772\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"1\" locationid=\"60008521\" locator=\"false\"/>\r\n    <row agent=\"Niadek Emanad\" agentid=\"3008773\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"2\" locationid=\"60008527\" locator=\"true\"/>\r\n    <row agent=\"Bamara Garisas\" agentid=\"3008774\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"4\" locationid=\"60008518\" locator=\"false\"/>\r\n    <row agent=\"Diada Hundron\" agentid=\"3008775\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"2\" locationid=\"60008524\" locator=\"false\"/>\r\n    <row agent=\"Sarviyi Sou\" agentid=\"3008776\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"3\" locationid=\"60008500\" locator=\"false\"/>\r\n    <row agent=\"Sibih Akhmoh\" agentid=\"3008777\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"2\" locationid=\"60008503\" locator=\"false\"/>\r\n    <row agent=\"Natousha Mithier\" agentid=\"3008778\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"2\" locationid=\"60008497\" locator=\"false\"/>\r\n    <row agent=\"Zooh Ouder\" agentid=\"3008779\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"2\" locationid=\"60008551\" locator=\"false\"/>\r\n    <row agent=\"Eboum Ermicha\" agentid=\"3008780\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"2\" locationid=\"60008542\" locator=\"false\"/>\r\n    <row agent=\"Dep Fata\" agentid=\"3008781\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"2\" locationid=\"60008545\" locator=\"false\"/>\r\n    <row agent=\"Kukhra Naeellie\" agentid=\"3008782\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"2\" locationid=\"60008548\" locator=\"false\"/>\r\n    <row agent=\"Akath Sihrzim\" agentid=\"3008783\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"1\" locationid=\"60008536\" locator=\"true\"/>\r\n    <row agent=\"Sehrbi Hepoud\" agentid=\"3008784\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"1\" locationid=\"60008530\" locator=\"false\"/>\r\n    <row agent=\"Hooran Pinihr\" agentid=\"3008785\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"4\" locationid=\"60008533\" locator=\"true\"/>\r\n    <row agent=\"Taridor Bovi\" agentid=\"3008786\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"1\" locationid=\"60008539\" locator=\"false\"/>\r\n    <row agent=\"Pazoo Arayya\" agentid=\"3008787\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"1\" locationid=\"60008509\" locator=\"false\"/>\r\n    <row agent=\"Dahyaron Lahara\" agentid=\"3008788\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"4\" locationid=\"60008515\" locator=\"false\"/>\r\n    <row agent=\"Hemtalasi Hemotri\" agentid=\"3008789\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"1\" locationid=\"60008506\" locator=\"false\"/>\r\n    <row agent=\"Afodir Jarver\" agentid=\"3008790\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"3\" locationid=\"60008512\" locator=\"false\"/>\r\n    <row agent=\"Azhdan Bovamih\" agentid=\"3008791\" agenttypeid=\"8\" corporationid=\"1000086\" divisionid=\"24\" level=\"5\" locationid=\"60008566\" locator=\"false\"/>\r\n    <row agent=\"Lomdor Ayas\" agentid=\"3008792\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"1\" locationid=\"60008569\" locator=\"false\"/>\r\n    <row agent=\"Mayir Ajonar\" agentid=\"3008793\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"3\" locationid=\"60008572\" locator=\"false\"/>\r\n    <row agent=\"Maires Shahyanikh\" agentid=\"3008794\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"3\" locationid=\"60008575\" locator=\"false\"/>\r\n    <row agent=\"Yerora Absaned\" agentid=\"3008795\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"1\" locationid=\"60008578\" locator=\"false\"/>\r\n    <row agent=\"Ansan Yoosstet\" agentid=\"3008796\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"1\" locationid=\"60008584\" locator=\"false\"/>\r\n    <row agent=\"Teni Garea\" agentid=\"3008797\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"4\" locationid=\"60008581\" locator=\"false\"/>\r\n    <row agent=\"Elnotyan Pem\" agentid=\"3008798\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"3\" locationid=\"60008587\" locator=\"false\"/>\r\n    <row agent=\"Zia Mesghoh\" agentid=\"3008799\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"4\" locationid=\"60008602\" locator=\"true\"/>\r\n    <row agent=\"Pireash Khavesa\" agentid=\"3008800\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"3\" locationid=\"60008611\" locator=\"false\"/>\r\n    <row agent=\"Ubardu Nuhafshen\" agentid=\"3008801\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"1\" locationid=\"60008608\" locator=\"false\"/>\r\n    <row agent=\"Heena Kinulia\" agentid=\"3008802\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"2\" locationid=\"60008605\" locator=\"false\"/>\r\n    <row agent=\"Eba Nodra\" agentid=\"3008803\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"2\" locationid=\"60008554\" locator=\"false\"/>\r\n    <row agent=\"Mankoor Safilouz\" agentid=\"3008804\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"2\" locationid=\"60008557\" locator=\"true\"/>\r\n    <row agent=\"Thanikhtid Farorad\" agentid=\"3008805\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"1\" locationid=\"60008563\" locator=\"false\"/>\r\n    <row agent=\"Tizeli Ebthad\" agentid=\"3008806\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"2\" locationid=\"60008560\" locator=\"false\"/>\r\n    <row agent=\"Gai Charil\" agentid=\"3008807\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"2\" locationid=\"60008596\" locator=\"false\"/>\r\n    <row agent=\"Lobrup Simeka\" agentid=\"3008808\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"2\" locationid=\"60008590\" locator=\"false\"/>\r\n    <row agent=\"Vanel Kheed\" agentid=\"3008809\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"1\" locationid=\"60008593\" locator=\"false\"/>\r\n    <row agent=\"Kherarabadi Ubigh\" agentid=\"3008810\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"1\" locationid=\"60008599\" locator=\"false\"/>\r\n    <row agent=\"Fosha Dyrer\" agentid=\"3008811\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"22\" level=\"1\" locationid=\"60008614\" locator=\"false\"/>\r\n    <row agent=\"Yimla Bashakru\" agentid=\"3008812\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"22\" level=\"4\" locationid=\"60008623\" locator=\"false\"/>\r\n    <row agent=\"Pevalir Kereka\" agentid=\"3008813\" agenttypeid=\"8\" corporationid=\"1000087\" divisionid=\"22\" level=\"5\" locationid=\"60008626\" locator=\"false\"/>\r\n    <row agent=\"Pamih Unnirgous\" agentid=\"3008814\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"22\" level=\"2\" locationid=\"60008629\" locator=\"false\"/>\r\n    <row agent=\"Bouras Gakeli\" agentid=\"3008815\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"22\" level=\"2\" locationid=\"60008620\" locator=\"true\"/>\r\n    <row agent=\"Molnahr Fehyagh\" agentid=\"3008816\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"22\" level=\"1\" locationid=\"60008617\" locator=\"false\"/>\r\n    <row agent=\"Bamtusha Ahrdia\" agentid=\"3008817\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"22\" level=\"2\" locationid=\"60008641\" locator=\"false\"/>\r\n    <row agent=\"Krafeus Ghivaz\" agentid=\"3008818\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"22\" level=\"1\" locationid=\"60008644\" locator=\"false\"/>\r\n    <row agent=\"Banseran Nelda\" agentid=\"3008819\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"24\" level=\"4\" locationid=\"60008647\" locator=\"false\"/>\r\n    <row agent=\"Harza Jibutas\" agentid=\"3008820\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"22\" level=\"3\" locationid=\"60008632\" locator=\"false\"/>\r\n    <row agent=\"Pivoon Thagayom\" agentid=\"3008821\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"24\" level=\"4\" locationid=\"60008635\" locator=\"false\"/>\r\n    <row agent=\"Mormie Efaki\" agentid=\"3008822\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"24\" level=\"2\" locationid=\"60008638\" locator=\"true\"/>\r\n    <row agent=\"Semilbaz Chibi\" agentid=\"3008823\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"24\" level=\"1\" locationid=\"60008650\" locator=\"false\"/>\r\n    <row agent=\"Khema Soyyelab\" agentid=\"3008824\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"22\" level=\"2\" locationid=\"60008668\" locator=\"false\"/>\r\n    <row agent=\"Avel Sounilier\" agentid=\"3008825\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"24\" level=\"4\" locationid=\"60008671\" locator=\"true\"/>\r\n    <row agent=\"Hemigh Amalah\" agentid=\"3008826\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"24\" level=\"3\" locationid=\"60008674\" locator=\"true\"/>\r\n    <row agent=\"Zefaramen Sadiri\" agentid=\"3008827\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"22\" level=\"1\" locationid=\"60008659\" locator=\"false\"/>\r\n    <row agent=\"Kazama Dima\" agentid=\"3008828\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"22\" level=\"4\" locationid=\"60008665\" locator=\"true\"/>\r\n    <row agent=\"Gasuk Oshat\" agentid=\"3008829\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"24\" level=\"3\" locationid=\"60008662\" locator=\"false\"/>\r\n    <row agent=\"Samas Nirla\" agentid=\"3008830\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"22\" level=\"3\" locationid=\"60008656\" locator=\"true\"/>\r\n    <row agent=\"Gakhireh Aboh\" agentid=\"3008831\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"22\" level=\"2\" locationid=\"60008653\" locator=\"false\"/>\r\n    <row agent=\"Pareh Mere\" agentid=\"3008832\" agenttypeid=\"8\" corporationid=\"1000088\" divisionid=\"24\" level=\"5\" locationid=\"60008677\" locator=\"false\"/>\r\n    <row agent=\"Zamon Assaus\" agentid=\"3008833\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"24\" level=\"2\" locationid=\"60008680\" locator=\"true\"/>\r\n    <row agent=\"Garbiran Vardali\" agentid=\"3008834\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"24\" level=\"1\" locationid=\"60008683\" locator=\"false\"/>\r\n    <row agent=\"Apra Alahma\" agentid=\"3008835\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"24\" level=\"1\" locationid=\"60008686\" locator=\"false\"/>\r\n    <row agent=\"Gahta Nakan\" agentid=\"3008836\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"22\" level=\"2\" locationid=\"60008716\" locator=\"false\"/>\r\n    <row agent=\"Chankoh Mizzerba\" agentid=\"3008837\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"22\" level=\"2\" locationid=\"60008719\" locator=\"false\"/>\r\n    <row agent=\"Lenau Ganeme\" agentid=\"3008838\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"24\" level=\"1\" locationid=\"60008713\" locator=\"false\"/>\r\n    <row agent=\"Nurveh Mermazgab\" agentid=\"3008839\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"22\" level=\"4\" locationid=\"60008692\" locator=\"true\"/>\r\n    <row agent=\"Arasat Boulhera\" agentid=\"3008840\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"24\" level=\"3\" locationid=\"60008689\" locator=\"false\"/>\r\n    <row agent=\"Ahnuni Mirder\" agentid=\"3008841\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"22\" level=\"3\" locationid=\"60008698\" locator=\"true\"/>\r\n    <row agent=\"Akart Zaltu\" agentid=\"3008842\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"22\" level=\"2\" locationid=\"60008695\" locator=\"false\"/>\r\n    <row agent=\"Makaser Amorih\" agentid=\"3008843\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"22\" level=\"3\" locationid=\"60008701\" locator=\"false\"/>\r\n    <row agent=\"Nussend Mahle\" agentid=\"3008844\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"22\" level=\"1\" locationid=\"60008704\" locator=\"false\"/>\r\n    <row agent=\"Ahan Hemirin\" agentid=\"3008845\" agenttypeid=\"8\" corporationid=\"1000089\" divisionid=\"22\" level=\"5\" locationid=\"60008707\" locator=\"false\"/>\r\n    <row agent=\"Sorpen Bonorahel\" agentid=\"3008846\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"24\" level=\"3\" locationid=\"60008710\" locator=\"false\"/>\r\n    <row agent=\"Bairshir Umam\" agentid=\"3008847\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"22\" level=\"1\" locationid=\"60008722\" locator=\"false\"/>\r\n    <row agent=\"Abben Jafshi\" agentid=\"3008848\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"22\" level=\"3\" locationid=\"60008752\" locator=\"false\"/>\r\n    <row agent=\"Odesatu Yatichar\" agentid=\"3008849\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"22\" level=\"3\" locationid=\"60008755\" locator=\"false\"/>\r\n    <row agent=\"Samsem Shila\" agentid=\"3008850\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"22\" level=\"1\" locationid=\"60008749\" locator=\"false\"/>\r\n    <row agent=\"Bidelcher Natirbek\" agentid=\"3008851\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"22\" level=\"2\" locationid=\"60008740\" locator=\"false\"/>\r\n    <row agent=\"Tagana Moshu\" agentid=\"3008852\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"22\" level=\"2\" locationid=\"60008743\" locator=\"false\"/>\r\n    <row agent=\"Fuli Eloriel\" agentid=\"3008853\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"22\" level=\"4\" locationid=\"60008746\" locator=\"true\"/>\r\n    <row agent=\"Sufala Srasrararz\" agentid=\"3008854\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"24\" level=\"1\" locationid=\"60008725\" locator=\"false\"/>\r\n    <row agent=\"Hoorazood Bikan\" agentid=\"3008855\" agenttypeid=\"8\" corporationid=\"1000090\" divisionid=\"24\" level=\"5\" locationid=\"60008728\" locator=\"false\"/>\r\n    <row agent=\"Nardir Sanima\" agentid=\"3008856\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"22\" level=\"1\" locationid=\"60008731\" locator=\"false\"/>\r\n    <row agent=\"Arshos Hul\" agentid=\"3008857\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"24\" level=\"2\" locationid=\"60008734\" locator=\"true\"/>\r\n    <row agent=\"Orri Ormot\" agentid=\"3008858\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"22\" level=\"2\" locationid=\"60008737\" locator=\"false\"/>\r\n    <row agent=\"Ohtar Defsunun\" agentid=\"3008859\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"24\" level=\"1\" locationid=\"60008758\" locator=\"false\"/>\r\n    <row agent=\"Ramah Fesrar\" agentid=\"3008860\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"22\" level=\"2\" locationid=\"60008767\" locator=\"false\"/>\r\n    <row agent=\"Tegi Jesalout\" agentid=\"3008861\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"22\" level=\"3\" locationid=\"60008773\" locator=\"true\"/>\r\n    <row agent=\"Fakah Assad\" agentid=\"3008862\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"22\" level=\"1\" locationid=\"60008770\" locator=\"false\"/>\r\n    <row agent=\"Farela Laresh\" agentid=\"3008863\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"24\" level=\"1\" locationid=\"60008764\" locator=\"false\"/>\r\n    <row agent=\"Yootolk Sudhi\" agentid=\"3008864\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"24\" level=\"4\" locationid=\"60008761\" locator=\"false\"/>\r\n    <row agent=\"Jafi Asa\" agentid=\"3008865\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"22\" level=\"4\" locationid=\"60008779\" locator=\"false\"/>\r\n    <row agent=\"Sakitsidendri Rafsadah\" agentid=\"3008866\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"24\" level=\"2\" locationid=\"60008776\" locator=\"true\"/>\r\n    <row agent=\"Tzati Khodja\" agentid=\"3008867\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"22\" level=\"1\" locationid=\"60008782\" locator=\"true\"/>\r\n    <row agent=\"Ires Orva\" agentid=\"3008868\" agenttypeid=\"8\" corporationid=\"1000091\" divisionid=\"24\" level=\"5\" locationid=\"60008785\" locator=\"false\"/>\r\n    <row agent=\"Siktinu Verk\" agentid=\"3008869\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"24\" level=\"2\" locationid=\"60008788\" locator=\"false\"/>\r\n    <row agent=\"Shagit Louh\" agentid=\"3008870\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"24\" level=\"1\" locationid=\"60008791\" locator=\"false\"/>\r\n    <row agent=\"Avenoz Sadna\" agentid=\"3008871\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008794\" locator=\"false\"/>\r\n    <row agent=\"Opoumouh Bemarah\" agentid=\"3008872\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"22\" level=\"1\" locationid=\"60008881\" locator=\"false\"/>\r\n    <row agent=\"Segemarali Assehion\" agentid=\"3008873\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008878\" locator=\"false\"/>\r\n    <row agent=\"Sahnora Zhanya\" agentid=\"3008874\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"2\" locationid=\"60008884\" locator=\"false\"/>\r\n    <row agent=\"Rosht Abrikoum\" agentid=\"3008875\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"3\" locationid=\"60008887\" locator=\"true\"/>\r\n    <row agent=\"Rorekoo Kehrati\" agentid=\"3008876\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"2\" locationid=\"60008905\" locator=\"true\"/>\r\n    <row agent=\"Joshoun Niser\" agentid=\"3008877\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"2\" locationid=\"60008911\" locator=\"false\"/>\r\n    <row agent=\"Jariz Ohrzel\" agentid=\"3008878\" agenttypeid=\"8\" corporationid=\"1000092\" divisionid=\"24\" level=\"5\" locationid=\"60008902\" locator=\"false\"/>\r\n    <row agent=\"Tishama Mafe\" agentid=\"3008879\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"3\" locationid=\"60008908\" locator=\"true\"/>\r\n    <row agent=\"Yarohrat Adehzala\" agentid=\"3008880\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"22\" level=\"3\" locationid=\"60008872\" locator=\"false\"/>\r\n    <row agent=\"Ked Adodanes\" agentid=\"3008881\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"22\" level=\"2\" locationid=\"60008869\" locator=\"true\"/>\r\n    <row agent=\"Dassad Khuhrdat\" agentid=\"3008882\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"22\" level=\"3\" locationid=\"60008866\" locator=\"false\"/>\r\n    <row agent=\"Lig Uaneyad\" agentid=\"3008883\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"2\" locationid=\"60008875\" locator=\"false\"/>\r\n    <row agent=\"Sharir Baibenoh\" agentid=\"3008884\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"2\" locationid=\"60008803\" locator=\"true\"/>\r\n    <row agent=\"Almerak Yemous\" agentid=\"3008885\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"22\" level=\"2\" locationid=\"60008797\" locator=\"true\"/>\r\n    <row agent=\"Barah Numrarat\" agentid=\"3008886\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"2\" locationid=\"60008800\" locator=\"false\"/>\r\n    <row agent=\"Chilela Armaiah\" agentid=\"3008887\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"2\" locationid=\"60008854\" locator=\"false\"/>\r\n    <row agent=\"Emah Gubala\" agentid=\"3008888\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"22\" level=\"3\" locationid=\"60008860\" locator=\"true\"/>\r\n    <row agent=\"Hefsa Niyibal\" agentid=\"3008889\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008863\" locator=\"false\"/>\r\n    <row agent=\"Kerumela Bordan\" agentid=\"3008890\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008857\" locator=\"false\"/>\r\n    <row agent=\"Folika Fiyotis\" agentid=\"3008891\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"4\" locationid=\"60008815\" locator=\"false\"/>\r\n    <row agent=\"Yiranasa Chonna\" agentid=\"3008892\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008812\" locator=\"false\"/>\r\n    <row agent=\"Itmu Jarmak\" agentid=\"3008893\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008806\" locator=\"false\"/>\r\n    <row agent=\"Khoor Nerdeh\" agentid=\"3008894\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"2\" locationid=\"60008809\" locator=\"false\"/>\r\n    <row agent=\"Kiventar Iris\" agentid=\"3008895\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"2\" locationid=\"60008830\" locator=\"false\"/>\r\n    <row agent=\"Galarsia Mararq\" agentid=\"3008896\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"22\" level=\"2\" locationid=\"60008836\" locator=\"false\"/>\r\n    <row agent=\"Yoob Hiveda\" agentid=\"3008897\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008839\" locator=\"false\"/>\r\n    <row agent=\"Chelodera Hurmumi\" agentid=\"3008898\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"4\" locationid=\"60008833\" locator=\"true\"/>\r\n    <row agent=\"Chodha Tapa\" agentid=\"3008899\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"3\" locationid=\"60008851\" locator=\"false\"/>\r\n    <row agent=\"Efil Kheba\" agentid=\"3008900\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"4\" locationid=\"60008842\" locator=\"false\"/>\r\n    <row agent=\"Esme Messa\" agentid=\"3008901\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008845\" locator=\"false\"/>\r\n    <row agent=\"Sindrah Osaeed\" agentid=\"3008902\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"22\" level=\"1\" locationid=\"60008848\" locator=\"false\"/>\r\n    <row agent=\"Kehalin Yairar\" agentid=\"3008903\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"2\" locationid=\"60008899\" locator=\"false\"/>\r\n    <row agent=\"Hessiehan Pasrit\" agentid=\"3008904\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"3\" locationid=\"60008893\" locator=\"false\"/>\r\n    <row agent=\"Asseen Arah\" agentid=\"3008905\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"2\" locationid=\"60008890\" locator=\"false\"/>\r\n    <row agent=\"Chaph Piviasen\" agentid=\"3008906\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"2\" locationid=\"60008896\" locator=\"true\"/>\r\n    <row agent=\"Lonenria Fina\" agentid=\"3008907\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"3\" locationid=\"60008821\" locator=\"false\"/>\r\n    <row agent=\"Peshi Khiznor\" agentid=\"3008908\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"3\" locationid=\"60008818\" locator=\"true\"/>\r\n    <row agent=\"Yurzif Houb\" agentid=\"3008909\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"2\" locationid=\"60008827\" locator=\"true\"/>\r\n    <row agent=\"Jarhisi Joah\" agentid=\"3008910\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"2\" locationid=\"60008824\" locator=\"false\"/>\r\n    <row agent=\"Ahtoud Umor\" agentid=\"3008911\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"1\" locationid=\"60008914\" locator=\"false\"/>\r\n    <row agent=\"Masta Nemarz\" agentid=\"3008912\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"1\" locationid=\"60008974\" locator=\"false\"/>\r\n    <row agent=\"Urotak Jibila\" agentid=\"3008913\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"2\" locationid=\"60008980\" locator=\"true\"/>\r\n    <row agent=\"Kohaskhach Rales\" agentid=\"3008914\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"4\" locationid=\"60008977\" locator=\"false\"/>\r\n    <row agent=\"Sahmon Yabiani\" agentid=\"3008915\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"22\" level=\"2\" locationid=\"60008983\" locator=\"false\"/>\r\n    <row agent=\"Almananeg Erafeke\" agentid=\"3008916\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"2\" locationid=\"60008950\" locator=\"false\"/>\r\n    <row agent=\"Monoth Khianasha\" agentid=\"3008917\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"4\" locationid=\"60008956\" locator=\"false\"/>\r\n    <row agent=\"Narshandyn Pehibiz\" agentid=\"3008918\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"3\" locationid=\"60008953\" locator=\"false\"/>\r\n    <row agent=\"Angohmateh Jibila\" agentid=\"3008919\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"2\" locationid=\"60008959\" locator=\"true\"/>\r\n    <row agent=\"Damaini Sahrazed\" agentid=\"3008920\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"2\" locationid=\"60008932\" locator=\"false\"/>\r\n    <row agent=\"Gashozoo Hefaka\" agentid=\"3008921\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"2\" locationid=\"60008935\" locator=\"false\"/>\r\n    <row agent=\"Abiam Chahrnian\" agentid=\"3008922\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"3\" locationid=\"60008926\" locator=\"false\"/>\r\n    <row agent=\"Lerje Hamiar\" agentid=\"3008923\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"22\" level=\"2\" locationid=\"60008929\" locator=\"false\"/>\r\n    <row agent=\"Hoz Onsula\" agentid=\"3008924\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"4\" locationid=\"60008998\" locator=\"false\"/>\r\n    <row agent=\"Badhul Khon\" agentid=\"3008925\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"2\" locationid=\"60009004\" locator=\"false\"/>\r\n    <row agent=\"Mankoor Bat\" agentid=\"3008926\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"2\" locationid=\"60009007\" locator=\"false\"/>\r\n    <row agent=\"Oshih Lalmesras\" agentid=\"3008927\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"1\" locationid=\"60009001\" locator=\"false\"/>\r\n    <row agent=\"Aphashat Bier\" agentid=\"3008928\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"4\" locationid=\"60008920\" locator=\"true\"/>\r\n    <row agent=\"Habthen Humadi\" agentid=\"3008929\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"22\" level=\"1\" locationid=\"60008917\" locator=\"false\"/>\r\n    <row agent=\"Ashzal Khianasha\" agentid=\"3008930\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"2\" locationid=\"60008923\" locator=\"true\"/>\r\n    <row agent=\"Moorve Alat\" agentid=\"3008931\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"1\" locationid=\"60008995\" locator=\"false\"/>\r\n    <row agent=\"Amis Arvadan\" agentid=\"3008932\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"4\" locationid=\"60008989\" locator=\"false\"/>\r\n    <row agent=\"Saame Marver\" agentid=\"3008933\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"2\" locationid=\"60008986\" locator=\"false\"/>\r\n    <row agent=\"Afeus Sasrame\" agentid=\"3008934\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"22\" level=\"3\" locationid=\"60008992\" locator=\"false\"/>\r\n    <row agent=\"Tuzilo Zhada\" agentid=\"3008935\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"22\" level=\"4\" locationid=\"60008941\" locator=\"true\"/>\r\n    <row agent=\"Ja Urka\" agentid=\"3008936\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"2\" locationid=\"60008944\" locator=\"false\"/>\r\n    <row agent=\"Chemaz Sesmas\" agentid=\"3008937\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"22\" level=\"3\" locationid=\"60008947\" locator=\"false\"/>\r\n    <row agent=\"Toumzie Fusi\" agentid=\"3008938\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"1\" locationid=\"60008938\" locator=\"false\"/>\r\n    <row agent=\"Rasazih Arja\" agentid=\"3008939\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"2\" locationid=\"60008965\" locator=\"false\"/>\r\n    <row agent=\"Madisa Tadabram\" agentid=\"3008940\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"1\" locationid=\"60008968\" locator=\"false\"/>\r\n    <row agent=\"Sahmotir Makshmi\" agentid=\"3008941\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"1\" locationid=\"60008971\" locator=\"false\"/>\r\n    <row agent=\"Datna Jesebal\" agentid=\"3008942\" agenttypeid=\"8\" corporationid=\"1000093\" divisionid=\"24\" level=\"5\" locationid=\"60008962\" locator=\"false\"/>\r\n    <row agent=\"Dufidiah Shach\" agentid=\"3008943\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"1\" locationid=\"60009010\" locator=\"false\"/>\r\n    <row agent=\"Salir Qeshal\" agentid=\"3008944\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"3\" locationid=\"60009019\" locator=\"false\"/>\r\n    <row agent=\"Avair Ayaidi\" agentid=\"3008945\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"22\" level=\"3\" locationid=\"60009013\" locator=\"false\"/>\r\n    <row agent=\"Fori Mossas\" agentid=\"3008946\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"2\" locationid=\"60009016\" locator=\"true\"/>\r\n    <row agent=\"Arody Tinja\" agentid=\"3008947\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"1\" locationid=\"60009031\" locator=\"false\"/>\r\n    <row agent=\"Aroum Yarunas\" agentid=\"3008948\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"3\" locationid=\"60009028\" locator=\"false\"/>\r\n    <row agent=\"Nirges Omshin\" agentid=\"3008949\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"2\" locationid=\"60009022\" locator=\"false\"/>\r\n    <row agent=\"Feknisa Kamyeka\" agentid=\"3008950\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"4\" locationid=\"60009025\" locator=\"false\"/>\r\n    <row agent=\"Joolille Ekanckbrault\" agentid=\"3008951\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"1\" locationid=\"60009034\" locator=\"false\"/>\r\n    <row agent=\"Groothese Larloolis\" agentid=\"3008952\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009298\" locator=\"false\"/>\r\n    <row agent=\"Baernoudts Isirrare\" agentid=\"3008953\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009292\" locator=\"true\"/>\r\n    <row agent=\"Odumeria Amattens\" agentid=\"3008954\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"4\" locationid=\"60009091\" locator=\"true\"/>\r\n    <row agent=\"Oleritte Allebin\" agentid=\"3008955\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009121\" locator=\"false\"/>\r\n    <row agent=\"Yvosenne Avarter\" agentid=\"3008956\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009118\" locator=\"false\"/>\r\n    <row agent=\"Ilivel Esmecet\" agentid=\"3008957\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009115\" locator=\"false\"/>\r\n    <row agent=\"Ossel Cymerouf\" agentid=\"3008958\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009112\" locator=\"false\"/>\r\n    <row agent=\"Ayst Alaenzaner\" agentid=\"3008959\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"4\" locationid=\"60009115\" locator=\"false\"/>\r\n    <row agent=\"Conardier Nimestre\" agentid=\"3008960\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"1\" locationid=\"60009106\" locator=\"false\"/>\r\n    <row agent=\"Rhovolle Odaelloles\" agentid=\"3008961\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009049\" locator=\"true\"/>\r\n    <row agent=\"Esseraulin Amere\" agentid=\"3008962\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"4\" locationid=\"60009043\" locator=\"false\"/>\r\n    <row agent=\"Olmart Yolelle\" agentid=\"3008963\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009040\" locator=\"false\"/>\r\n    <row agent=\"Yrens Dallot\" agentid=\"3008964\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"1\" locationid=\"60009037\" locator=\"false\"/>\r\n    <row agent=\"Asserens Allomieves\" agentid=\"3008965\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009046\" locator=\"false\"/>\r\n    <row agent=\"Ancenare Jeanglia\" agentid=\"3008966\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009178\" locator=\"false\"/>\r\n    <row agent=\"Sirillaute Zottyn\" agentid=\"3008967\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009193\" locator=\"true\"/>\r\n    <row agent=\"Ambetter Teille\" agentid=\"3008968\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009181\" locator=\"false\"/>\r\n    <row agent=\"Sarante Destroodt\" agentid=\"3008969\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009187\" locator=\"false\"/>\r\n    <row agent=\"Blune Odoulreles\" agentid=\"3008970\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009184\" locator=\"false\"/>\r\n    <row agent=\"Nitiron Allone\" agentid=\"3008971\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009190\" locator=\"false\"/>\r\n    <row agent=\"Coverie Ygymet\" agentid=\"3008972\" agenttypeid=\"8\" corporationid=\"1000094\" divisionid=\"22\" level=\"5\" locationid=\"60009250\" locator=\"false\"/>\r\n    <row agent=\"Mesteur Urres\" agentid=\"3008973\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009259\" locator=\"false\"/>\r\n    <row agent=\"Cirgnard Girles\" agentid=\"3008974\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009265\" locator=\"false\"/>\r\n    <row agent=\"Ariot Baelazaenber\" agentid=\"3008975\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"4\" locationid=\"60009253\" locator=\"false\"/>\r\n    <row agent=\"Yolerard Posperot\" agentid=\"3008976\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009262\" locator=\"true\"/>\r\n    <row agent=\"Viscebins Reditteau\" agentid=\"3008977\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009256\" locator=\"false\"/>\r\n    <row agent=\"Gaudent Slasschevret\" agentid=\"3008978\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009220\" locator=\"false\"/>\r\n    <row agent=\"Alline Henebene\" agentid=\"3008979\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009229\" locator=\"true\"/>\r\n    <row agent=\"Losavale Giralle\" agentid=\"3008980\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009214\" locator=\"false\"/>\r\n    <row agent=\"Orviddore Anchallarie\" agentid=\"3008981\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"2\" locationid=\"60009217\" locator=\"false\"/>\r\n    <row agent=\"Fanalabbe Vaydaerer\" agentid=\"3008982\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"1\" locationid=\"60009226\" locator=\"false\"/>\r\n    <row agent=\"Callere Maittintes\" agentid=\"3008983\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009223\" locator=\"false\"/>\r\n    <row agent=\"Beunsteste Molon\" agentid=\"3008984\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009232\" locator=\"false\"/>\r\n    <row agent=\"Mitresigier Ellienne\" agentid=\"3008985\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"3\" locationid=\"60009235\" locator=\"false\"/>\r\n    <row agent=\"Arlier Othyn\" agentid=\"3008986\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009238\" locator=\"true\"/>\r\n    <row agent=\"Joyssetta Garin\" agentid=\"3008987\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009241\" locator=\"true\"/>\r\n    <row agent=\"Yrton Araunet\" agentid=\"3008988\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"4\" locationid=\"60009244\" locator=\"false\"/>\r\n    <row agent=\"Ekorecke Amattens\" agentid=\"3008989\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"4\" locationid=\"60009247\" locator=\"true\"/>\r\n    <row agent=\"Ergre Pielevieve\" agentid=\"3008990\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009271\" locator=\"false\"/>\r\n    <row agent=\"Yveure Arnelelle\" agentid=\"3008991\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009283\" locator=\"false\"/>\r\n    <row agent=\"Outtel Arrion\" agentid=\"3008992\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"2\" locationid=\"60009280\" locator=\"false\"/>\r\n    <row agent=\"Blarlerrier Odrel\" agentid=\"3008993\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"4\" locationid=\"60009274\" locator=\"false\"/>\r\n    <row agent=\"Foun Augne\" agentid=\"3008994\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009277\" locator=\"false\"/>\r\n    <row agent=\"Moerrasarzay Lassin\" agentid=\"3008995\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009268\" locator=\"false\"/>\r\n    <row agent=\"Karcard Loict\" agentid=\"3008996\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009124\" locator=\"false\"/>\r\n    <row agent=\"Eule Averasin\" agentid=\"3008997\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"4\" locationid=\"60009127\" locator=\"true\"/>\r\n    <row agent=\"Grinault Cique\" agentid=\"3008998\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009130\" locator=\"true\"/>\r\n    <row agent=\"Brurphenber Allmon\" agentid=\"3008999\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009136\" locator=\"false\"/>\r\n    <row agent=\"Solles Alagne\" agentid=\"3009000\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009139\" locator=\"true\"/>\r\n    <row agent=\"Auntes Alselbosier\" agentid=\"3009001\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009133\" locator=\"false\"/>\r\n    <row agent=\"Anvent Folnempanne\" agentid=\"3009002\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009052\" locator=\"true\"/>\r\n    <row agent=\"Atsy Eloittechon\" agentid=\"3009003\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009067\" locator=\"false\"/>\r\n    <row agent=\"Vralle Ysone\" agentid=\"3009004\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"4\" locationid=\"60009055\" locator=\"false\"/>\r\n    <row agent=\"Guyotghen Hercheem\" agentid=\"3009005\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009058\" locator=\"false\"/>\r\n    <row agent=\"Pormaines Fleunove\" agentid=\"3009006\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009061\" locator=\"false\"/>\r\n    <row agent=\"Agrite Vysscheles\" agentid=\"3009007\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009064\" locator=\"true\"/>\r\n    <row agent=\"Doritte Sybbolia\" agentid=\"3009008\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009148\" locator=\"false\"/>\r\n    <row agent=\"Estie Rolle\" agentid=\"3009009\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009142\" locator=\"false\"/>\r\n    <row agent=\"Bildecaina Riveau\" agentid=\"3009010\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009145\" locator=\"false\"/>\r\n    <row agent=\"Ossel Oryerchiron\" agentid=\"3009011\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009151\" locator=\"false\"/>\r\n    <row agent=\"Aucier Prayl\" agentid=\"3009012\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009157\" locator=\"false\"/>\r\n    <row agent=\"Crens Ekare\" agentid=\"3009013\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"4\" locationid=\"60009154\" locator=\"true\"/>\r\n    <row agent=\"Adedaire Elerouc\" agentid=\"3009014\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009163\" locator=\"false\"/>\r\n    <row agent=\"Yveche Amanckbraert\" agentid=\"3009015\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009160\" locator=\"true\"/>\r\n    <row agent=\"Deremeur Falloullon\" agentid=\"3009016\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009175\" locator=\"false\"/>\r\n    <row agent=\"Dact Anzalolie\" agentid=\"3009017\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009169\" locator=\"true\"/>\r\n    <row agent=\"Erdacan Folacadie\" agentid=\"3009018\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009172\" locator=\"false\"/>\r\n    <row agent=\"Mollin Arnancere\" agentid=\"3009019\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009166\" locator=\"false\"/>\r\n    <row agent=\"Rougnyes Drye\" agentid=\"3009020\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009202\" locator=\"false\"/>\r\n    <row agent=\"Ansiraire Ecier\" agentid=\"3009021\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"4\" locationid=\"60009208\" locator=\"false\"/>\r\n    <row agent=\"Vancent Olediart\" agentid=\"3009022\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009211\" locator=\"false\"/>\r\n    <row agent=\"Meurch Cletrullier\" agentid=\"3009023\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009196\" locator=\"true\"/>\r\n    <row agent=\"Rodochon Walulle\" agentid=\"3009024\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"4\" locationid=\"60009199\" locator=\"false\"/>\r\n    <row agent=\"Breeraere Ahresiere\" agentid=\"3009025\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009205\" locator=\"false\"/>\r\n    <row agent=\"Agou Derwycx\" agentid=\"3009026\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009289\" locator=\"false\"/>\r\n    <row agent=\"Pocriere Orvanne\" agentid=\"3009027\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"4\" locationid=\"60009295\" locator=\"true\"/>\r\n    <row agent=\"Aubalyu Lola\" agentid=\"3009028\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009301\" locator=\"false\"/>\r\n    <row agent=\"Pingeron Oenync\" agentid=\"3009029\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009286\" locator=\"false\"/>\r\n    <row agent=\"Tameroy Bengot\" agentid=\"3009030\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"1\" locationid=\"60009079\" locator=\"false\"/>\r\n    <row agent=\"Lausalle Alsenoge\" agentid=\"3009031\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009073\" locator=\"false\"/>\r\n    <row agent=\"Emmette Orvavaerer\" agentid=\"3009032\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009076\" locator=\"false\"/>\r\n    <row agent=\"Got Sansalard\" agentid=\"3009033\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009085\" locator=\"false\"/>\r\n    <row agent=\"Joysbin Edmezette\" agentid=\"3009034\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009082\" locator=\"false\"/>\r\n    <row agent=\"Aunier Houvare\" agentid=\"3009035\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009070\" locator=\"false\"/>\r\n    <row agent=\"Assye Fenere\" agentid=\"3009036\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009088\" locator=\"false\"/>\r\n    <row agent=\"Adrey Aunnoi\" agentid=\"3009037\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"2\" locationid=\"60009097\" locator=\"false\"/>\r\n    <row agent=\"Mobber Gooneeter\" agentid=\"3009038\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009100\" locator=\"false\"/>\r\n    <row agent=\"Vos Attare\" agentid=\"3009039\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009094\" locator=\"true\"/>\r\n    <row agent=\"Chamames Evetille\" agentid=\"3009040\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009103\" locator=\"true\"/>\r\n    <row agent=\"Isaine Mandie\" agentid=\"3009041\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"1\" locationid=\"60009304\" locator=\"false\"/>\r\n    <row agent=\"Baspament Dorompiere\" agentid=\"3009042\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"1\" locationid=\"60009391\" locator=\"false\"/>\r\n    <row agent=\"Saonellieu Municlune\" agentid=\"3009043\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"2\" locationid=\"60009394\" locator=\"true\"/>\r\n    <row agent=\"Riselgale Vemere\" agentid=\"3009044\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"4\" locationid=\"60009397\" locator=\"false\"/>\r\n    <row agent=\"Zonelle Sazenoinnon\" agentid=\"3009045\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"4\" locationid=\"60009388\" locator=\"true\"/>\r\n    <row agent=\"Avovence Deusserunes\" agentid=\"3009046\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"2\" locationid=\"60009367\" locator=\"true\"/>\r\n    <row agent=\"Brelette Thilpanorcer\" agentid=\"3009047\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"3\" locationid=\"60009370\" locator=\"false\"/>\r\n    <row agent=\"Melever Algindole\" agentid=\"3009048\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"3\" locationid=\"60009373\" locator=\"false\"/>\r\n    <row agent=\"Emmette Geoneymene\" agentid=\"3009049\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"4\" locationid=\"60009364\" locator=\"true\"/>\r\n    <row agent=\"Guire Letta\" agentid=\"3009050\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"3\" locationid=\"60009415\" locator=\"true\"/>\r\n    <row agent=\"Ekerussche Olarault\" agentid=\"3009051\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"2\" locationid=\"60009421\" locator=\"true\"/>\r\n    <row agent=\"Marisselle Memana\" agentid=\"3009052\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"4\" locationid=\"60009418\" locator=\"false\"/>\r\n    <row agent=\"Herrent Gaudent\" agentid=\"3009053\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"2\" locationid=\"60009412\" locator=\"false\"/>\r\n    <row agent=\"Algoze Meminave\" agentid=\"3009054\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"2\" locationid=\"60009340\" locator=\"false\"/>\r\n    <row agent=\"Pesier Deugghoteren\" agentid=\"3009055\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"3\" locationid=\"60009343\" locator=\"false\"/>\r\n    <row agent=\"Dedotte Emmalaute\" agentid=\"3009056\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"2\" locationid=\"60009346\" locator=\"true\"/>\r\n    <row agent=\"Raynsins Bruffreglin\" agentid=\"3009057\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"1\" locationid=\"60009349\" locator=\"true\"/>\r\n    <row agent=\"Auralle Rorcires\" agentid=\"3009058\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"3\" locationid=\"60009361\" locator=\"true\"/>\r\n    <row agent=\"Afresouret Isiene\" agentid=\"3009059\" agenttypeid=\"8\" corporationid=\"1000095\" divisionid=\"22\" level=\"5\" locationid=\"60009352\" locator=\"false\"/>\r\n    <row agent=\"Odairgilen Algesoire\" agentid=\"3009060\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"4\" locationid=\"60009358\" locator=\"false\"/>\r\n    <row agent=\"Charante Dastrecal\" agentid=\"3009061\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"2\" locationid=\"60009355\" locator=\"false\"/>\r\n    <row agent=\"Ardaggherier Essytace\" agentid=\"3009062\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"2\" locationid=\"60009313\" locator=\"true\"/>\r\n    <row agent=\"Fouinotere Elastault\" agentid=\"3009063\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"1\" locationid=\"60009307\" locator=\"false\"/>\r\n    <row agent=\"Bloir Abolia\" agentid=\"3009064\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"1\" locationid=\"60009310\" locator=\"false\"/>\r\n    <row agent=\"Graget Duvence\" agentid=\"3009065\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"4\" locationid=\"60009325\" locator=\"false\"/>\r\n    <row agent=\"Assens Deona\" agentid=\"3009066\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"3\" locationid=\"60009316\" locator=\"true\"/>\r\n    <row agent=\"Challelle Eloede\" agentid=\"3009067\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"2\" locationid=\"60009319\" locator=\"false\"/>\r\n    <row agent=\"Hootant Thilpanorcer\" agentid=\"3009068\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"1\" locationid=\"60009322\" locator=\"false\"/>\r\n    <row agent=\"Charie Onckee\" agentid=\"3009069\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"1\" locationid=\"60009376\" locator=\"false\"/>\r\n    <row agent=\"Seinnault Heirleux\" agentid=\"3009070\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"1\" locationid=\"60009385\" locator=\"false\"/>\r\n    <row agent=\"Amailly Echilemy\" agentid=\"3009071\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"1\" locationid=\"60009382\" locator=\"false\"/>\r\n    <row agent=\"Armouttaine Olelie\" agentid=\"3009072\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"2\" locationid=\"60009379\" locator=\"false\"/>\r\n    <row agent=\"Manoede Egier\" agentid=\"3009073\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"4\" locationid=\"60009328\" locator=\"true\"/>\r\n    <row agent=\"Fayetesore Alemens\" agentid=\"3009074\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"4\" locationid=\"60009337\" locator=\"false\"/>\r\n    <row agent=\"Eustron Fayet\" agentid=\"3009075\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"4\" locationid=\"60009334\" locator=\"false\"/>\r\n    <row agent=\"Aladet Merlenciene\" agentid=\"3009076\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"3\" locationid=\"60009331\" locator=\"false\"/>\r\n    <row agent=\"Lurts Asly\" agentid=\"3009077\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"2\" locationid=\"60009403\" locator=\"false\"/>\r\n    <row agent=\"Cournouts Ophene\" agentid=\"3009078\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"3\" locationid=\"60009409\" locator=\"true\"/>\r\n    <row agent=\"Ghele Motheluse\" agentid=\"3009079\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"2\" locationid=\"60009400\" locator=\"false\"/>\r\n    <row agent=\"Elalan Vroering\" agentid=\"3009080\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"1\" locationid=\"60009406\" locator=\"false\"/>\r\n    <row agent=\"Lympia Vanisson\" agentid=\"3009081\" agenttypeid=\"2\" corporationid=\"1000096\" divisionid=\"22\" level=\"4\" locationid=\"60009427\" locator=\"false\"/>\r\n    <row agent=\"Obalyu Juvone\" agentid=\"3009082\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"1\" locationid=\"60009430\" locator=\"false\"/>\r\n    <row agent=\"Gollelle Veselleque\" agentid=\"3009083\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"2\" locationid=\"60009523\" locator=\"true\"/>\r\n    <row agent=\"Cavauvon Haatephaeslan\" agentid=\"3009084\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"1\" locationid=\"60009517\" locator=\"false\"/>\r\n    <row agent=\"Bereque Uce\" agentid=\"3009085\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"2\" locationid=\"60009514\" locator=\"false\"/>\r\n    <row agent=\"Gille Miroodt\" agentid=\"3009086\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"1\" locationid=\"60009520\" locator=\"false\"/>\r\n    <row agent=\"Juttarnard Apouttemes\" agentid=\"3009087\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"1\" locationid=\"60009433\" locator=\"false\"/>\r\n    <row agent=\"Iliete Janydens\" agentid=\"3009088\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"4\" locationid=\"60009439\" locator=\"false\"/>\r\n    <row agent=\"Venelles Ardt\" agentid=\"3009089\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"1\" locationid=\"60009436\" locator=\"false\"/>\r\n    <row agent=\"Warts Aboleur\" agentid=\"3009090\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"4\" locationid=\"60009496\" locator=\"true\"/>\r\n    <row agent=\"Slavraert Ashtibouton\" agentid=\"3009091\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"3\" locationid=\"60009490\" locator=\"false\"/>\r\n    <row agent=\"Wasteronne Echibaver\" agentid=\"3009092\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"2\" locationid=\"60009493\" locator=\"true\"/>\r\n    <row agent=\"Yvanckbraert Chensene\" agentid=\"3009093\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"3\" locationid=\"60009499\" locator=\"true\"/>\r\n    <row agent=\"Ollmue Adulyn\" agentid=\"3009094\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"1\" locationid=\"60009532\" locator=\"false\"/>\r\n    <row agent=\"Rodille Distel\" agentid=\"3009095\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"2\" locationid=\"60009535\" locator=\"false\"/>\r\n    <row agent=\"Votane Essoule\" agentid=\"3009096\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"2\" locationid=\"60009526\" locator=\"false\"/>\r\n    <row agent=\"Archerlaert Oguere\" agentid=\"3009097\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"2\" locationid=\"60009529\" locator=\"false\"/>\r\n    <row agent=\"Boinget Orloges\" agentid=\"3009098\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"1\" locationid=\"60009541\" locator=\"false\"/>\r\n    <row agent=\"Dau Rolloure\" agentid=\"3009099\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"2\" locationid=\"60009547\" locator=\"false\"/>\r\n    <row agent=\"Durrac Macresiaen\" agentid=\"3009100\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"1\" locationid=\"60009538\" locator=\"false\"/>\r\n    <row agent=\"Couvette Olair\" agentid=\"3009101\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"1\" locationid=\"60009544\" locator=\"false\"/>\r\n    <row agent=\"Fonseric Auldier\" agentid=\"3009102\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"1\" locationid=\"60009448\" locator=\"false\"/>\r\n    <row agent=\"Audasueur Diere\" agentid=\"3009103\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"1\" locationid=\"60009442\" locator=\"false\"/>\r\n    <row agent=\"Boodacievres Nobeges\" agentid=\"3009104\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"1\" locationid=\"60009445\" locator=\"false\"/>\r\n    <row agent=\"Jare Searavrette\" agentid=\"3009105\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"2\" locationid=\"60009451\" locator=\"false\"/>\r\n    <row agent=\"Heillaert Audarne\" agentid=\"3009106\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"3\" locationid=\"60009508\" locator=\"false\"/>\r\n    <row agent=\"Mottin Muelsouranne\" agentid=\"3009107\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"2\" locationid=\"60009505\" locator=\"true\"/>\r\n    <row agent=\"Rellin Cachtenaude\" agentid=\"3009108\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"1\" locationid=\"60009502\" locator=\"false\"/>\r\n    <row agent=\"Angher Azyne\" agentid=\"3009109\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"1\" locationid=\"60009511\" locator=\"false\"/>\r\n    <row agent=\"Buratour Apaury\" agentid=\"3009110\" agenttypeid=\"8\" corporationid=\"1000097\" divisionid=\"23\" level=\"5\" locationid=\"60009475\" locator=\"false\"/>\r\n    <row agent=\"Albalyu Purlieu\" agentid=\"3009111\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"3\" locationid=\"60009469\" locator=\"true\"/>\r\n    <row agent=\"Poltelle Muebles\" agentid=\"3009112\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"1\" locationid=\"60009472\" locator=\"false\"/>\r\n    <row agent=\"Vleyzine Espodolf\" agentid=\"3009113\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"4\" locationid=\"60009466\" locator=\"false\"/>\r\n    <row agent=\"Fleusc Amolezer\" agentid=\"3009114\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"3\" locationid=\"60009487\" locator=\"false\"/>\r\n    <row agent=\"Elelot Preaux\" agentid=\"3009115\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"2\" locationid=\"60009478\" locator=\"false\"/>\r\n    <row agent=\"Elerie Vlordt\" agentid=\"3009116\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"1\" locationid=\"60009481\" locator=\"false\"/>\r\n    <row agent=\"Panpere Orpaert\" agentid=\"3009117\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"3\" locationid=\"60009484\" locator=\"true\"/>\r\n    <row agent=\"Gaerooman Dhooris\" agentid=\"3009118\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"3\" locationid=\"60009454\" locator=\"false\"/>\r\n    <row agent=\"Wenarielves Daustraert\" agentid=\"3009119\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"1\" locationid=\"60009457\" locator=\"false\"/>\r\n    <row agent=\"Andrarde Ybier\" agentid=\"3009120\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"2\" locationid=\"60009460\" locator=\"false\"/>\r\n    <row agent=\"Oust Breeriest\" agentid=\"3009122\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"1\" locationid=\"60009550\" locator=\"false\"/>\r\n    <row agent=\"Creltenier Eyghelet\" agentid=\"3009123\" agenttypeid=\"8\" corporationid=\"1000098\" divisionid=\"23\" level=\"5\" locationid=\"60009661\" locator=\"false\"/>\r\n    <row agent=\"Ossches Oslie\" agentid=\"3009124\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"2\" locationid=\"60009568\" locator=\"true\"/>\r\n    <row agent=\"Rouland Dullaerdt\" agentid=\"3009125\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"3\" locationid=\"60009571\" locator=\"true\"/>\r\n    <row agent=\"Laglotes Chrinard\" agentid=\"3009126\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"2\" locationid=\"60009580\" locator=\"false\"/>\r\n    <row agent=\"Labaerdt Ararezer\" agentid=\"3009127\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"4\" locationid=\"60009574\" locator=\"false\"/>\r\n    <row agent=\"Stie Dire\" agentid=\"3009128\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"1\" locationid=\"60009577\" locator=\"false\"/>\r\n    <row agent=\"Vaysseyrcer Antrye\" agentid=\"3009129\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"2\" locationid=\"60009583\" locator=\"false\"/>\r\n    <row agent=\"Genchivare Zertavenne\" agentid=\"3009130\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"3\" locationid=\"60009646\" locator=\"true\"/>\r\n    <row agent=\"Nanimout Jucieves\" agentid=\"3009131\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"2\" locationid=\"60009640\" locator=\"true\"/>\r\n    <row agent=\"Bruune Stienne\" agentid=\"3009132\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"1\" locationid=\"60009643\" locator=\"false\"/>\r\n    <row agent=\"Adier Issie\" agentid=\"3009133\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"1\" locationid=\"60009649\" locator=\"false\"/>\r\n    <row agent=\"Afraustin Enore\" agentid=\"3009134\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"2\" locationid=\"60009652\" locator=\"true\"/>\r\n    <row agent=\"Thessordin Haude\" agentid=\"3009135\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"2\" locationid=\"60009655\" locator=\"false\"/>\r\n    <row agent=\"Basteeles Encke\" agentid=\"3009136\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"2\" locationid=\"60009712\" locator=\"true\"/>\r\n    <row agent=\"Rayle Andomel\" agentid=\"3009137\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"2\" locationid=\"60009724\" locator=\"false\"/>\r\n    <row agent=\"Helle Roon\" agentid=\"3009138\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"1\" locationid=\"60009715\" locator=\"false\"/>\r\n    <row agent=\"Weyllaenalle Airblou\" agentid=\"3009139\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"3\" locationid=\"60009727\" locator=\"true\"/>\r\n    <row agent=\"Aernelaert Pinssier\" agentid=\"3009140\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"1\" locationid=\"60009718\" locator=\"false\"/>\r\n    <row agent=\"Peselien Ennel\" agentid=\"3009141\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"1\" locationid=\"60009721\" locator=\"false\"/>\r\n    <row agent=\"Fette Aleartener\" agentid=\"3009142\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"1\" locationid=\"60009559\" locator=\"true\"/>\r\n    <row agent=\"Saissore Evavarin\" agentid=\"3009143\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"2\" locationid=\"60009562\" locator=\"false\"/>\r\n    <row agent=\"Comparaert Ancbeu\" agentid=\"3009144\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"2\" locationid=\"60009553\" locator=\"false\"/>\r\n    <row agent=\"Ostes Zoenceliris\" agentid=\"3009145\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"2\" locationid=\"60009556\" locator=\"false\"/>\r\n    <row agent=\"Acharanza Moorne\" agentid=\"3009146\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"1\" locationid=\"60009565\" locator=\"false\"/>\r\n    <row agent=\"Cocier Riesves\" agentid=\"3009147\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"3\" locationid=\"60009607\" locator=\"false\"/>\r\n    <row agent=\"Aisnellina Alottins\" agentid=\"3009148\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"3\" locationid=\"60009610\" locator=\"false\"/>\r\n    <row agent=\"Auls Baslitte\" agentid=\"3009149\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"22\" level=\"1\" locationid=\"60009604\" locator=\"false\"/>\r\n    <row agent=\"Vriessche Anzete\" agentid=\"3009150\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"4\" locationid=\"60009613\" locator=\"false\"/>\r\n    <row agent=\"Auntoi Mantenault\" agentid=\"3009151\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"3\" locationid=\"60009616\" locator=\"false\"/>\r\n    <row agent=\"Jaen Oursinault\" agentid=\"3009152\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"22\" level=\"3\" locationid=\"60009619\" locator=\"false\"/>\r\n    <row agent=\"Waldrell Losschyve\" agentid=\"3009153\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"1\" locationid=\"60009598\" locator=\"false\"/>\r\n    <row agent=\"Oraveval Bempiery\" agentid=\"3009154\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"1\" locationid=\"60009601\" locator=\"false\"/>\r\n    <row agent=\"Albrey Audanolle\" agentid=\"3009155\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"2\" locationid=\"60009586\" locator=\"false\"/>\r\n    <row agent=\"Ahrirlyne Bous\" agentid=\"3009156\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"1\" locationid=\"60009589\" locator=\"false\"/>\r\n    <row agent=\"Covette Chestebene\" agentid=\"3009157\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"3\" locationid=\"60009592\" locator=\"false\"/>\r\n    <row agent=\"Attelle Avere\" agentid=\"3009158\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"4\" locationid=\"60009595\" locator=\"false\"/>\r\n    <row agent=\"Apamoote Dovrin\" agentid=\"3009159\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"4\" locationid=\"60009682\" locator=\"false\"/>\r\n    <row agent=\"Dra Cren\" agentid=\"3009160\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"3\" locationid=\"60009685\" locator=\"false\"/>\r\n    <row agent=\"Abuette Ciraden\" agentid=\"3009161\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"2\" locationid=\"60009676\" locator=\"false\"/>\r\n    <row agent=\"Annins Codirgnard\" agentid=\"3009162\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"3\" locationid=\"60009679\" locator=\"true\"/>\r\n    <row agent=\"Olcard Dehette\" agentid=\"3009163\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"3\" locationid=\"60009688\" locator=\"true\"/>\r\n    <row agent=\"Celync Layn\" agentid=\"3009164\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"22\" level=\"2\" locationid=\"60009691\" locator=\"true\"/>\r\n    <row agent=\"Abuette Yoladent\" agentid=\"3009165\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"2\" locationid=\"60009703\" locator=\"false\"/>\r\n    <row agent=\"Allesmarie Pour\" agentid=\"3009166\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"2\" locationid=\"60009700\" locator=\"false\"/>\r\n    <row agent=\"Anguraere Ambetyn\" agentid=\"3009167\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"22\" level=\"2\" locationid=\"60009706\" locator=\"false\"/>\r\n    <row agent=\"Errye Aurapes\" agentid=\"3009168\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"1\" locationid=\"60009697\" locator=\"true\"/>\r\n    <row agent=\"Aisnirault Heiles\" agentid=\"3009169\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"2\" locationid=\"60009694\" locator=\"false\"/>\r\n    <row agent=\"Schellan Arnon\" agentid=\"3009170\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"3\" locationid=\"60009709\" locator=\"false\"/>\r\n    <row agent=\"Berlimaute Ekaeroose\" agentid=\"3009171\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"3\" locationid=\"60009622\" locator=\"false\"/>\r\n    <row agent=\"Audere Esmoreures\" agentid=\"3009172\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"22\" level=\"4\" locationid=\"60009628\" locator=\"false\"/>\r\n    <row agent=\"Sadereron Ombre\" agentid=\"3009173\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"3\" locationid=\"60009637\" locator=\"false\"/>\r\n    <row agent=\"Emmare Edmiculle\" agentid=\"3009174\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"2\" locationid=\"60009625\" locator=\"false\"/>\r\n    <row agent=\"Columiarset Trayn\" agentid=\"3009175\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"1\" locationid=\"60009631\" locator=\"false\"/>\r\n    <row agent=\"Baus Balenne\" agentid=\"3009176\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"1\" locationid=\"60009634\" locator=\"true\"/>\r\n    <row agent=\"Grinarel Toubaison\" agentid=\"3009177\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"1\" locationid=\"60009667\" locator=\"false\"/>\r\n    <row agent=\"Ameron Yvorin\" agentid=\"3009178\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"3\" locationid=\"60009670\" locator=\"false\"/>\r\n    <row agent=\"Mordiene Etins\" agentid=\"3009179\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"2\" locationid=\"60009673\" locator=\"false\"/>\r\n    <row agent=\"Quiratain Quiratain\" agentid=\"3009180\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"2\" locationid=\"60009658\" locator=\"false\"/>\r\n    <row agent=\"Masnese Ormazyne\" agentid=\"3009181\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"1\" locationid=\"60009664\" locator=\"false\"/>\r\n    <row agent=\"Beber Cloesmant\" agentid=\"3009182\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"1\" locationid=\"60009730\" locator=\"false\"/>\r\n    <row agent=\"Tragenire Neylloullon\" agentid=\"3009183\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"1\" locationid=\"60009757\" locator=\"false\"/>\r\n    <row agent=\"Charmes Palinard\" agentid=\"3009184\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"1\" locationid=\"60009754\" locator=\"false\"/>\r\n    <row agent=\"Oullaerdt Besserilier\" agentid=\"3009185\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"1\" locationid=\"60009760\" locator=\"false\"/>\r\n    <row agent=\"Orvecel Aubenouel\" agentid=\"3009186\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"3\" locationid=\"60009763\" locator=\"true\"/>\r\n    <row agent=\"Scane Orsanere\" agentid=\"3009187\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"4\" locationid=\"60009769\" locator=\"false\"/>\r\n    <row agent=\"Mavoserer Asschel\" agentid=\"3009188\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"2\" locationid=\"60009766\" locator=\"false\"/>\r\n    <row agent=\"Dhoorcare Viridette\" agentid=\"3009189\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"2\" locationid=\"60009772\" locator=\"false\"/>\r\n    <row agent=\"Reschard Groelande\" agentid=\"3009190\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"2\" locationid=\"60009775\" locator=\"false\"/>\r\n    <row agent=\"Stetille Amimolie\" agentid=\"3009191\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"24\" level=\"3\" locationid=\"60009778\" locator=\"true\"/>\r\n    <row agent=\"Mayeninc Tinpant\" agentid=\"3009192\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"3\" locationid=\"60009781\" locator=\"true\"/>\r\n    <row agent=\"Aloret Relisiertan\" agentid=\"3009193\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"2\" locationid=\"60009787\" locator=\"false\"/>\r\n    <row agent=\"Aydoteaux Essyn\" agentid=\"3009194\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"1\" locationid=\"60009784\" locator=\"false\"/>\r\n    <row agent=\"Lirmarne Besches\" agentid=\"3009195\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"3\" locationid=\"60009733\" locator=\"false\"/>\r\n    <row agent=\"Comante Cliette\" agentid=\"3009196\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"24\" level=\"2\" locationid=\"60009736\" locator=\"false\"/>\r\n    <row agent=\"Ainuregt Joghorare\" agentid=\"3009197\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"24\" level=\"3\" locationid=\"60009739\" locator=\"false\"/>\r\n    <row agent=\"Ivoncane Viuep\" agentid=\"3009198\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"1\" locationid=\"60009847\" locator=\"true\"/>\r\n    <row agent=\"Bles Porelotta\" agentid=\"3009199\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"2\" locationid=\"60009841\" locator=\"false\"/>\r\n    <row agent=\"Coommarecque Lalolles\" agentid=\"3009200\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"4\" locationid=\"60009838\" locator=\"true\"/>\r\n    <row agent=\"Egloennan Pelbelion\" agentid=\"3009201\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"1\" locationid=\"60009844\" locator=\"false\"/>\r\n    <row agent=\"Asselagne Chevre\" agentid=\"3009202\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"3\" locationid=\"60009745\" locator=\"false\"/>\r\n    <row agent=\"Vallalorges Sauntrene\" agentid=\"3009203\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"4\" locationid=\"60009751\" locator=\"true\"/>\r\n    <row agent=\"Aurrier Sormoure\" agentid=\"3009204\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"24\" level=\"2\" locationid=\"60009748\" locator=\"false\"/>\r\n    <row agent=\"Cooctenuton Lellevoire\" agentid=\"3009205\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"3\" locationid=\"60009742\" locator=\"false\"/>\r\n    <row agent=\"Ardelins Jafavel\" agentid=\"3009206\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"3\" locationid=\"60009829\" locator=\"true\"/>\r\n    <row agent=\"Candsosene Loot\" agentid=\"3009207\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"2\" locationid=\"60009826\" locator=\"false\"/>\r\n    <row agent=\"Adalyler Parnella\" agentid=\"3009208\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"3\" locationid=\"60009832\" locator=\"false\"/>\r\n    <row agent=\"Avymel Brevier\" agentid=\"3009209\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"2\" locationid=\"60009835\" locator=\"false\"/>\r\n    <row agent=\"Languvier Tardenes\" agentid=\"3009210\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"1\" locationid=\"60009820\" locator=\"false\"/>\r\n    <row agent=\"Andolelle Callimarne\" agentid=\"3009211\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"4\" locationid=\"60009814\" locator=\"true\"/>\r\n    <row agent=\"Chamamere Meere\" agentid=\"3009212\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"4\" locationid=\"60009823\" locator=\"true\"/>\r\n    <row agent=\"Archeralle Brullaert\" agentid=\"3009213\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"2\" locationid=\"60009817\" locator=\"false\"/>\r\n    <row agent=\"Deort Heytlique\" agentid=\"3009214\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"1\" locationid=\"60009811\" locator=\"false\"/>\r\n    <row agent=\"Zalloronde Aymynouel\" agentid=\"3009215\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"1\" locationid=\"60009808\" locator=\"false\"/>\r\n    <row agent=\"Algette Ansotte\" agentid=\"3009216\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"3\" locationid=\"60009802\" locator=\"true\"/>\r\n    <row agent=\"Dauteau Fouil\" agentid=\"3009217\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"2\" locationid=\"60009805\" locator=\"false\"/>\r\n    <row agent=\"Aidesins Aerchirault\" agentid=\"3009218\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"2\" locationid=\"60009799\" locator=\"false\"/>\r\n    <row agent=\"Rhin Ottin\" agentid=\"3009219\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"2\" locationid=\"60009790\" locator=\"false\"/>\r\n    <row agent=\"Claulanghe Meniger\" agentid=\"3009220\" agenttypeid=\"8\" corporationid=\"1000099\" divisionid=\"22\" level=\"5\" locationid=\"60009793\" locator=\"false\"/>\r\n    <row agent=\"Audaille Pron\" agentid=\"3009221\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"1\" locationid=\"60009796\" locator=\"false\"/>\r\n    <row agent=\"Vionnoreau Trillicon\" agentid=\"3009222\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"1\" locationid=\"60009850\" locator=\"false\"/>\r\n    <row agent=\"Yvokin Fou\" agentid=\"3009223\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"2\" locationid=\"60009886\" locator=\"false\"/>\r\n    <row agent=\"Afour Albyne\" agentid=\"3009224\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"1\" locationid=\"60009889\" locator=\"false\"/>\r\n    <row agent=\"Defone Scorcier\" agentid=\"3009225\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60009979\" locator=\"false\"/>\r\n    <row agent=\"Orlaetter Eulo\" agentid=\"3009226\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60009985\" locator=\"false\"/>\r\n    <row agent=\"Ommore Aymevins\" agentid=\"3009227\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60009988\" locator=\"false\"/>\r\n    <row agent=\"Ofstilotte Attella\" agentid=\"3009228\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60009976\" locator=\"false\"/>\r\n    <row agent=\"Andoulonne Vyrrelanpin\" agentid=\"3009229\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"4\" locationid=\"60009982\" locator=\"false\"/>\r\n    <row agent=\"Farmes Albuerges\" agentid=\"3009230\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"2\" locationid=\"60009991\" locator=\"false\"/>\r\n    <row agent=\"Arouckesin Doi\" agentid=\"3009231\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"3\" locationid=\"60010078\" locator=\"true\"/>\r\n    <row agent=\"Dorne Bengot\" agentid=\"3009232\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"1\" locationid=\"60010066\" locator=\"false\"/>\r\n    <row agent=\"Olmel Nabeter\" agentid=\"3009233\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"2\" locationid=\"60010072\" locator=\"false\"/>\r\n    <row agent=\"Ivenckbrault Gremmichel\" agentid=\"3009234\" agenttypeid=\"8\" corporationid=\"1000100\" divisionid=\"23\" level=\"5\" locationid=\"60010069\" locator=\"false\"/>\r\n    <row agent=\"Alins Pitendthompin\" agentid=\"3009235\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"3\" locationid=\"60010081\" locator=\"false\"/>\r\n    <row agent=\"Ashtounelle Gaenloovitte\" agentid=\"3009236\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"4\" locationid=\"60010075\" locator=\"false\"/>\r\n    <row agent=\"Ardoroule Ophone\" agentid=\"3009237\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"1\" locationid=\"60010048\" locator=\"false\"/>\r\n    <row agent=\"Maenedier Gallot\" agentid=\"3009238\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60010057\" locator=\"false\"/>\r\n    <row agent=\"Deanaiton Durrac\" agentid=\"3009239\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"4\" locationid=\"60010051\" locator=\"true\"/>\r\n    <row agent=\"Scourt Allougles\" agentid=\"3009240\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60010054\" locator=\"true\"/>\r\n    <row agent=\"Serdenoella Duster\" agentid=\"3009241\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60010060\" locator=\"false\"/>\r\n    <row agent=\"Cryrcier Yrca\" agentid=\"3009242\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"1\" locationid=\"60010063\" locator=\"false\"/>\r\n    <row agent=\"Aussent Ekingare\" agentid=\"3009243\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60009958\" locator=\"false\"/>\r\n    <row agent=\"Mouttolouis Houvers\" agentid=\"3009244\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"3\" locationid=\"60009961\" locator=\"false\"/>\r\n    <row agent=\"Ygemette Ellettilier\" agentid=\"3009245\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60009964\" locator=\"true\"/>\r\n    <row agent=\"Garavitte Assattyn\" agentid=\"3009246\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"1\" locationid=\"60009973\" locator=\"false\"/>\r\n    <row agent=\"Cherbanye Baine\" agentid=\"3009247\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"1\" locationid=\"60009967\" locator=\"false\"/>\r\n    <row agent=\"Tria Asant\" agentid=\"3009248\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"2\" locationid=\"60009970\" locator=\"false\"/>\r\n    <row agent=\"Chore Denvonne\" agentid=\"3009249\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"2\" locationid=\"60010102\" locator=\"false\"/>\r\n    <row agent=\"Evaux Tourtli\" agentid=\"3009250\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"2\" locationid=\"60010108\" locator=\"false\"/>\r\n    <row agent=\"Tespithou Etlain\" agentid=\"3009251\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60010114\" locator=\"false\"/>\r\n    <row agent=\"Duria Zarraert\" agentid=\"3009252\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60010117\" locator=\"false\"/>\r\n    <row agent=\"Bessoteaux Trayn\" agentid=\"3009253\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"2\" locationid=\"60010105\" locator=\"false\"/>\r\n    <row agent=\"Osmarbon Timestre\" agentid=\"3009254\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"1\" locationid=\"60010111\" locator=\"false\"/>\r\n    <row agent=\"Orole Amaret\" agentid=\"3009255\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60009862\" locator=\"false\"/>\r\n    <row agent=\"Armahieu Dalogne\" agentid=\"3009256\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60009865\" locator=\"false\"/>\r\n    <row agent=\"Derdianne Aineveu\" agentid=\"3009257\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"1\" locationid=\"60009859\" locator=\"false\"/>\r\n    <row agent=\"Bruysene Apilles\" agentid=\"3009258\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"1\" locationid=\"60009853\" locator=\"false\"/>\r\n    <row agent=\"Delennotte Deloettan\" agentid=\"3009259\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"1\" locationid=\"60009856\" locator=\"false\"/>\r\n    <row agent=\"Lefroxalier Odainnelet\" agentid=\"3009260\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60010030\" locator=\"false\"/>\r\n    <row agent=\"Aloles Ronssant\" agentid=\"3009261\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60010045\" locator=\"false\"/>\r\n    <row agent=\"Vynardieu Fulle\" agentid=\"3009262\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"3\" locationid=\"60010033\" locator=\"false\"/>\r\n    <row agent=\"Essures Mect\" agentid=\"3009263\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"1\" locationid=\"60010036\" locator=\"false\"/>\r\n    <row agent=\"Doolleernes Enalalon\" agentid=\"3009264\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"1\" locationid=\"60010039\" locator=\"false\"/>\r\n    <row agent=\"Mermene Wirtnard\" agentid=\"3009265\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"3\" locationid=\"60010042\" locator=\"false\"/>\r\n    <row agent=\"Adrebelle Jaredaille\" agentid=\"3009266\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"4\" locationid=\"60009952\" locator=\"false\"/>\r\n    <row agent=\"Durastrand Lartalle\" agentid=\"3009267\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60009955\" locator=\"false\"/>\r\n    <row agent=\"Soeilenuse Aerer\" agentid=\"3009268\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"2\" locationid=\"60009943\" locator=\"false\"/>\r\n    <row agent=\"Echane Dunvier\" agentid=\"3009269\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60009946\" locator=\"false\"/>\r\n    <row agent=\"Caramel Async\" agentid=\"3009270\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60009949\" locator=\"false\"/>\r\n    <row agent=\"Espumer Bunanet\" agentid=\"3009271\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"4\" locationid=\"60009940\" locator=\"false\"/>\r\n    <row agent=\"Rebbois Hanzirier\" agentid=\"3009272\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"4\" locationid=\"60010099\" locator=\"true\"/>\r\n    <row agent=\"Audasueur Arnustene\" agentid=\"3009273\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60010084\" locator=\"false\"/>\r\n    <row agent=\"Bloutte Colockes\" agentid=\"3009274\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"4\" locationid=\"60010087\" locator=\"false\"/>\r\n    <row agent=\"Heuron Patecaere\" agentid=\"3009275\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60010090\" locator=\"false\"/>\r\n    <row agent=\"Monave Groo\" agentid=\"3009276\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"3\" locationid=\"60010093\" locator=\"false\"/>\r\n    <row agent=\"Manbier Ommenne\" agentid=\"3009277\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"1\" locationid=\"60010096\" locator=\"false\"/>\r\n    <row agent=\"Vavanique Ivident\" agentid=\"3009278\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"4\" locationid=\"60009883\" locator=\"true\"/>\r\n    <row agent=\"Mollarync Alecarel\" agentid=\"3009279\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60009871\" locator=\"false\"/>\r\n    <row agent=\"Bivecon Anste\" agentid=\"3009280\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"4\" locationid=\"60009874\" locator=\"true\"/>\r\n    <row agent=\"Astre Daensavette\" agentid=\"3009281\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"2\" locationid=\"60009868\" locator=\"false\"/>\r\n    <row agent=\"Sarluhevier Dustalon\" agentid=\"3009282\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60009880\" locator=\"true\"/>\r\n    <row agent=\"Jeocanet Dalleauda\" agentid=\"3009283\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"3\" locationid=\"60009877\" locator=\"true\"/>\r\n    <row agent=\"Deltes Maleterel\" agentid=\"3009284\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"4\" locationid=\"60009910\" locator=\"false\"/>\r\n    <row agent=\"Aurerie Antene\" agentid=\"3009285\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"1\" locationid=\"60009919\" locator=\"false\"/>\r\n    <row agent=\"Pagemevel Riggheriene\" agentid=\"3009286\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60009913\" locator=\"false\"/>\r\n    <row agent=\"Lolledanier Junnevendon\" agentid=\"3009287\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"1\" locationid=\"60009904\" locator=\"false\"/>\r\n    <row agent=\"Bauwinon Biels\" agentid=\"3009288\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60009907\" locator=\"false\"/>\r\n    <row agent=\"Debese Roghewer\" agentid=\"3009289\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60009916\" locator=\"false\"/>\r\n    <row agent=\"Buene Stontroller\" agentid=\"3009290\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"2\" locationid=\"60010024\" locator=\"false\"/>\r\n    <row agent=\"Failanard Lefanivel\" agentid=\"3009291\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60010021\" locator=\"false\"/>\r\n    <row agent=\"Beel Bulle\" agentid=\"3009292\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"2\" locationid=\"60010012\" locator=\"false\"/>\r\n    <row agent=\"Kaspant Cavalnaert\" agentid=\"3009293\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60010015\" locator=\"false\"/>\r\n    <row agent=\"Traude Seinaesen\" agentid=\"3009294\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"4\" locationid=\"60010018\" locator=\"false\"/>\r\n    <row agent=\"Ayle Varkoliette\" agentid=\"3009295\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60010027\" locator=\"false\"/>\r\n    <row agent=\"Fruynghermant Boin\" agentid=\"3009296\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"4\" locationid=\"60009928\" locator=\"true\"/>\r\n    <row agent=\"Alpielanda Plampsen\" agentid=\"3009297\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"1\" locationid=\"60009922\" locator=\"false\"/>\r\n    <row agent=\"Brere Bette\" agentid=\"3009298\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60009925\" locator=\"false\"/>\r\n    <row agent=\"Comergheem Pamovais\" agentid=\"3009299\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60009931\" locator=\"false\"/>\r\n    <row agent=\"Janninck Claynins\" agentid=\"3009300\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"4\" locationid=\"60009934\" locator=\"true\"/>\r\n    <row agent=\"Aymirot Compsier\" agentid=\"3009301\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"1\" locationid=\"60009937\" locator=\"false\"/>\r\n    <row agent=\"Grateldale Jayet\" agentid=\"3009302\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60009994\" locator=\"false\"/>\r\n    <row agent=\"Riesves Boricon\" agentid=\"3009303\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"4\" locationid=\"60010009\" locator=\"true\"/>\r\n    <row agent=\"Rirsturiere Hordane\" agentid=\"3009304\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"1\" locationid=\"60010000\" locator=\"false\"/>\r\n    <row agent=\"Thormonnie Ivonis\" agentid=\"3009305\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60009997\" locator=\"false\"/>\r\n    <row agent=\"Guy Jeartlait\" agentid=\"3009306\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"4\" locationid=\"60010006\" locator=\"false\"/>\r\n    <row agent=\"Odeure Estibane\" agentid=\"3009307\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60010003\" locator=\"true\"/>\r\n    <row agent=\"Estorand Aurlaerdt\" agentid=\"3009308\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"3\" locationid=\"60009901\" locator=\"false\"/>\r\n    <row agent=\"Clel Elaert\" agentid=\"3009309\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60009895\" locator=\"false\"/>\r\n    <row agent=\"Ains Apant\" agentid=\"3009310\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60009892\" locator=\"false\"/>\r\n    <row agent=\"Pallysseult Genereau\" agentid=\"3009311\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"4\" locationid=\"60009898\" locator=\"true\"/>\r\n    <row agent=\"Irrie Ambettin\" agentid=\"3009312\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"1\" locationid=\"60010120\" locator=\"false\"/>\r\n    <row agent=\"Bardoen Alariese\" agentid=\"3009313\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"4\" locationid=\"60010195\" locator=\"true\"/>\r\n    <row agent=\"Veur Venbaert\" agentid=\"3009314\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"1\" locationid=\"60010192\" locator=\"false\"/>\r\n    <row agent=\"Buillaerdt Violebins\" agentid=\"3009315\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"3\" locationid=\"60010282\" locator=\"false\"/>\r\n    <row agent=\"Ageina Amoullever\" agentid=\"3009316\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"22\" level=\"3\" locationid=\"60010285\" locator=\"true\"/>\r\n    <row agent=\"Gasschies Ordt\" agentid=\"3009317\" agenttypeid=\"8\" corporationid=\"1000101\" divisionid=\"18\" level=\"5\" locationid=\"60010267\" locator=\"false\"/>\r\n    <row agent=\"Loiceloittin Arier\" agentid=\"3009318\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"1\" locationid=\"60010273\" locator=\"false\"/>\r\n    <row agent=\"Gheretins Artave\" agentid=\"3009319\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"2\" locationid=\"60010270\" locator=\"false\"/>\r\n    <row agent=\"Emmire Esmoote\" agentid=\"3009320\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"3\" locationid=\"60010264\" locator=\"false\"/>\r\n    <row agent=\"Rhinier Gheretins\" agentid=\"3009321\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"1\" locationid=\"60010159\" locator=\"false\"/>\r\n    <row agent=\"Ganouel Chatanede\" agentid=\"3009322\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"1\" locationid=\"60010162\" locator=\"false\"/>\r\n    <row agent=\"Orsetta Lexmoreau\" agentid=\"3009323\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"1\" locationid=\"60010165\" locator=\"false\"/>\r\n    <row agent=\"Jobise Esmallon\" agentid=\"3009324\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"22\" level=\"1\" locationid=\"60010156\" locator=\"false\"/>\r\n    <row agent=\"Dunlavonnis Oelant\" agentid=\"3009325\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"3\" locationid=\"60010207\" locator=\"false\"/>\r\n    <row agent=\"Aderon Arde\" agentid=\"3009326\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"1\" locationid=\"60010210\" locator=\"false\"/>\r\n    <row agent=\"Wedrel Allillare\" agentid=\"3009327\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"24\" level=\"3\" locationid=\"60010213\" locator=\"true\"/>\r\n    <row agent=\"Hefer Rye\" agentid=\"3009328\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"22\" level=\"2\" locationid=\"60010204\" locator=\"true\"/>\r\n    <row agent=\"Clel Syctonerier\" agentid=\"3009329\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"4\" locationid=\"60010198\" locator=\"false\"/>\r\n    <row agent=\"Tyl Amiette\" agentid=\"3009330\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"3\" locationid=\"60010201\" locator=\"false\"/>\r\n    <row agent=\"Bresnync Speedele\" agentid=\"3009331\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"1\" locationid=\"60010240\" locator=\"false\"/>\r\n    <row agent=\"Yvaviene Sladams\" agentid=\"3009332\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"22\" level=\"1\" locationid=\"60010243\" locator=\"true\"/>\r\n    <row agent=\"Darolevre Verac\" agentid=\"3009333\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"24\" level=\"3\" locationid=\"60010246\" locator=\"true\"/>\r\n    <row agent=\"Pocriere Bappitler\" agentid=\"3009334\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"1\" locationid=\"60010249\" locator=\"false\"/>\r\n    <row agent=\"Anserguria Clue\" agentid=\"3009335\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"1\" locationid=\"60010183\" locator=\"false\"/>\r\n    <row agent=\"Plandolis Lylouron\" agentid=\"3009336\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"3\" locationid=\"60010180\" locator=\"false\"/>\r\n    <row agent=\"Lacriveau Besches\" agentid=\"3009337\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"2\" locationid=\"60010186\" locator=\"false\"/>\r\n    <row agent=\"Vloert Osel\" agentid=\"3009338\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"1\" locationid=\"60010189\" locator=\"false\"/>\r\n    <row agent=\"Saurtier Blagnardel\" agentid=\"3009339\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"24\" level=\"2\" locationid=\"60010168\" locator=\"true\"/>\r\n    <row agent=\"Audemoy Anchave\" agentid=\"3009340\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"22\" level=\"2\" locationid=\"60010171\" locator=\"false\"/>\r\n    <row agent=\"Autes Gelloure\" agentid=\"3009341\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"1\" locationid=\"60010174\" locator=\"true\"/>\r\n    <row agent=\"Boillemamas Beenwalelle\" agentid=\"3009342\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"2\" locationid=\"60010177\" locator=\"false\"/>\r\n    <row agent=\"Flonaige Munda\" agentid=\"3009343\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"2\" locationid=\"60010291\" locator=\"false\"/>\r\n    <row agent=\"Nelesse Nerrene\" agentid=\"3009344\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"2\" locationid=\"60010297\" locator=\"false\"/>\r\n    <row agent=\"Meltevaine Orlafrer\" agentid=\"3009345\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"3\" locationid=\"60010294\" locator=\"false\"/>\r\n    <row agent=\"Clie Bempiery\" agentid=\"3009346\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"2\" locationid=\"60010288\" locator=\"false\"/>\r\n    <row agent=\"Ansotte Melania\" agentid=\"3009347\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"1\" locationid=\"60010252\" locator=\"false\"/>\r\n    <row agent=\"Calloux Thyneger\" agentid=\"3009348\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"4\" locationid=\"60010258\" locator=\"true\"/>\r\n    <row agent=\"Dhoyesechare Granughe\" agentid=\"3009349\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"4\" locationid=\"60010255\" locator=\"false\"/>\r\n    <row agent=\"Beet Wireruet\" agentid=\"3009350\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"4\" locationid=\"60010261\" locator=\"true\"/>\r\n    <row agent=\"Maylilore Pepin\" agentid=\"3009351\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"2\" locationid=\"60010219\" locator=\"true\"/>\r\n    <row agent=\"Wemire Ghynosseil\" agentid=\"3009352\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"1\" locationid=\"60010216\" locator=\"false\"/>\r\n    <row agent=\"Hoys Claywire\" agentid=\"3009353\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"2\" locationid=\"60010222\" locator=\"false\"/>\r\n    <row agent=\"Ebrens Set\" agentid=\"3009354\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"3\" locationid=\"60010225\" locator=\"false\"/>\r\n    <row agent=\"Iville Pimmoraine\" agentid=\"3009355\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"1\" locationid=\"60010126\" locator=\"false\"/>\r\n    <row agent=\"Isaugnedan Presetin\" agentid=\"3009356\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"2\" locationid=\"60010123\" locator=\"false\"/>\r\n    <row agent=\"Masalle Ambrette\" agentid=\"3009357\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"3\" locationid=\"60010129\" locator=\"true\"/>\r\n    <row agent=\"Aunes Isolette\" agentid=\"3009358\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"2\" locationid=\"60010144\" locator=\"false\"/>\r\n    <row agent=\"Sonnon Amberel\" agentid=\"3009359\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"1\" locationid=\"60010150\" locator=\"false\"/>\r\n    <row agent=\"Auzue Amailly\" agentid=\"3009360\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"1\" locationid=\"60010153\" locator=\"false\"/>\r\n    <row agent=\"Emmare Walulle\" agentid=\"3009361\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"1\" locationid=\"60010147\" locator=\"false\"/>\r\n    <row agent=\"Auret Yvaldier\" agentid=\"3009362\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"2\" locationid=\"60010141\" locator=\"false\"/>\r\n    <row agent=\"Muync Diololle\" agentid=\"3009363\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"3\" locationid=\"60010132\" locator=\"false\"/>\r\n    <row agent=\"Abins Apere\" agentid=\"3009364\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"2\" locationid=\"60010138\" locator=\"false\"/>\r\n    <row agent=\"Pelbelion Durpel\" agentid=\"3009365\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"3\" locationid=\"60010135\" locator=\"true\"/>\r\n    <row agent=\"Aube Wedrel\" agentid=\"3009366\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"4\" locationid=\"60010228\" locator=\"false\"/>\r\n    <row agent=\"Akins Demeria\" agentid=\"3009367\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"1\" locationid=\"60010231\" locator=\"false\"/>\r\n    <row agent=\"Orlevreze Charloller\" agentid=\"3009368\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"4\" locationid=\"60010234\" locator=\"false\"/>\r\n    <row agent=\"Hurell Barcier\" agentid=\"3009369\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"3\" locationid=\"60010237\" locator=\"true\"/>\r\n    <row agent=\"Avocones Roella\" agentid=\"3009370\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"2\" locationid=\"60010279\" locator=\"false\"/>\r\n    <row agent=\"Yvandele Benic\" agentid=\"3009371\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"3\" locationid=\"60010276\" locator=\"false\"/>\r\n    <row agent=\"Pauren Aubyrasse\" agentid=\"3009372\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"1\" locationid=\"60010300\" locator=\"false\"/>\r\n    <row agent=\"Harcarin Angamuere\" agentid=\"3009373\" agenttypeid=\"4\" corporationid=\"1000102\" divisionid=\"18\" level=\"1\" locationid=\"60010387\" locator=\"false\"/>\r\n    <row agent=\"Bamon Enoit\" agentid=\"3009374\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"23\" level=\"1\" locationid=\"60010384\" locator=\"false\"/>\r\n    <row agent=\"Aid Hieur\" agentid=\"3009375\" agenttypeid=\"4\" corporationid=\"1000102\" divisionid=\"18\" level=\"3\" locationid=\"60010381\" locator=\"true\"/>\r\n    <row agent=\"Diles Ilatove\" agentid=\"3009376\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"23\" level=\"2\" locationid=\"60010348\" locator=\"true\"/>\r\n    <row agent=\"Afrincon Hueset\" agentid=\"3009377\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"22\" level=\"1\" locationid=\"60010351\" locator=\"false\"/>\r\n    <row agent=\"Houvire Takaerne\" agentid=\"3009378\" agenttypeid=\"4\" corporationid=\"1000102\" divisionid=\"18\" level=\"3\" locationid=\"60010345\" locator=\"false\"/>\r\n    <row agent=\"Garlilis Arle\" agentid=\"3009379\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"22\" level=\"2\" locationid=\"60010321\" locator=\"true\"/>\r\n    <row agent=\"Pant Arbone\" agentid=\"3009380\" agenttypeid=\"4\" corporationid=\"1000102\" divisionid=\"18\" level=\"2\" locationid=\"60010324\" locator=\"false\"/>\r\n    <row agent=\"Humilehan Roi\" agentid=\"3009382\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"23\" level=\"1\" locationid=\"60010309\" locator=\"false\"/>\r\n    <row agent=\"Veve Caramel\" agentid=\"3009383\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"23\" level=\"2\" locationid=\"60010315\" locator=\"false\"/>\r\n    <row agent=\"Albencyers Yvese\" agentid=\"3009384\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"23\" level=\"1\" locationid=\"60010312\" locator=\"false\"/>\r\n    <row agent=\"Maillede Aurot\" agentid=\"3009385\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"23\" level=\"2\" locationid=\"60010357\" locator=\"false\"/>\r\n    <row agent=\"Adeset Elfin\" agentid=\"3009386\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"23\" level=\"1\" locationid=\"60010360\" locator=\"true\"/>\r\n    <row agent=\"Violebins Galapon\" agentid=\"3009387\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"22\" level=\"2\" locationid=\"60010354\" locator=\"false\"/>\r\n    <row agent=\"Rilune Larlelie\" agentid=\"3009388\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"23\" level=\"1\" locationid=\"60010327\" locator=\"false\"/>\r\n    <row agent=\"Jouey Nobariene\" agentid=\"3009389\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"23\" level=\"2\" locationid=\"60010330\" locator=\"false\"/>\r\n    <row agent=\"Mastance Seillaerdt\" agentid=\"3009390\" agenttypeid=\"4\" corporationid=\"1000102\" divisionid=\"18\" level=\"4\" locationid=\"60010333\" locator=\"false\"/>\r\n    <row agent=\"Buvesone Balluemene\" agentid=\"3009391\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"23\" level=\"3\" locationid=\"60010375\" locator=\"true\"/>\r\n    <row agent=\"Allawille Bunchousse\" agentid=\"3009392\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"23\" level=\"2\" locationid=\"60010372\" locator=\"false\"/>\r\n    <row agent=\"Junnader Crucarne\" agentid=\"3009393\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"22\" level=\"4\" locationid=\"60010378\" locator=\"false\"/>\r\n    <row agent=\"Lean Fene\" agentid=\"3009394\" agenttypeid=\"4\" corporationid=\"1000102\" divisionid=\"18\" level=\"1\" locationid=\"60010369\" locator=\"false\"/>\r\n    <row agent=\"Tirlan Meuvrezaryn\" agentid=\"3009395\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"22\" level=\"2\" locationid=\"60010363\" locator=\"false\"/>\r\n    <row agent=\"Apouttemes Lonraires\" agentid=\"3009396\" agenttypeid=\"4\" corporationid=\"1000102\" divisionid=\"18\" level=\"2\" locationid=\"60010366\" locator=\"false\"/>\r\n    <row agent=\"Vlan Peloelus\" agentid=\"3009397\" agenttypeid=\"4\" corporationid=\"1000102\" divisionid=\"18\" level=\"4\" locationid=\"60010303\" locator=\"true\"/>\r\n    <row agent=\"Espidoure Malenut\" agentid=\"3009398\" agenttypeid=\"4\" corporationid=\"1000102\" divisionid=\"18\" level=\"2\" locationid=\"60010306\" locator=\"false\"/>\r\n    <row agent=\"Ornargot Annins\" agentid=\"3009399\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"23\" level=\"1\" locationid=\"60010339\" locator=\"false\"/>\r\n    <row agent=\"Zobydene Manc\" agentid=\"3009400\" agenttypeid=\"4\" corporationid=\"1000102\" divisionid=\"18\" level=\"2\" locationid=\"60010342\" locator=\"false\"/>\r\n    <row agent=\"Bourgyes Jootan\" agentid=\"3009401\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"22\" level=\"1\" locationid=\"60010336\" locator=\"false\"/>\r\n    <row agent=\"Ilcke Aylle\" agentid=\"3009402\" agenttypeid=\"2\" corporationid=\"1000103\" divisionid=\"23\" level=\"2\" locationid=\"60010393\" locator=\"false\"/>\r\n    <row agent=\"Jamaert Stroure\" agentid=\"3009403\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"24\" level=\"1\" locationid=\"60010396\" locator=\"false\"/>\r\n    <row agent=\"Ogne Angenaules\" agentid=\"3009404\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"1\" locationid=\"60010456\" locator=\"false\"/>\r\n    <row agent=\"Etlain Ommasterye\" agentid=\"3009405\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"3\" locationid=\"60010459\" locator=\"false\"/>\r\n    <row agent=\"Gramaert Rulaert\" agentid=\"3009408\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"24\" level=\"4\" locationid=\"60010414\" locator=\"false\"/>\r\n    <row agent=\"Arnasent Aurmont\" agentid=\"3009409\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"3\" locationid=\"60010417\" locator=\"true\"/>\r\n    <row agent=\"Deuverin Ogorard\" agentid=\"3009410\" agenttypeid=\"8\" corporationid=\"1000104\" divisionid=\"24\" level=\"5\" locationid=\"60010474\" locator=\"false\"/>\r\n    <row agent=\"Honnolia Waungvande\" agentid=\"3009411\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"2\" locationid=\"60010477\" locator=\"false\"/>\r\n    <row agent=\"Ekare Amie\" agentid=\"3009412\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"2\" locationid=\"60010408\" locator=\"true\"/>\r\n    <row agent=\"Bietinievres Patsectiers\" agentid=\"3009413\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"2\" locationid=\"60010411\" locator=\"false\"/>\r\n    <row agent=\"Coella Chetirgrullin\" agentid=\"3009414\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"24\" level=\"2\" locationid=\"60010450\" locator=\"true\"/>\r\n    <row agent=\"Cohemitte Grinarel\" agentid=\"3009415\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"2\" locationid=\"60010453\" locator=\"false\"/>\r\n    <row agent=\"Steine Bourynes\" agentid=\"3009416\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"2\" locationid=\"60010432\" locator=\"false\"/>\r\n    <row agent=\"Prollenget Audodart\" agentid=\"3009417\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"24\" level=\"2\" locationid=\"60010435\" locator=\"true\"/>\r\n    <row agent=\"Ghele Wousterier\" agentid=\"3009418\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"2\" locationid=\"60010480\" locator=\"false\"/>\r\n    <row agent=\"Sansallelle Varaert\" agentid=\"3009419\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"24\" level=\"4\" locationid=\"60010483\" locator=\"false\"/>\r\n    <row agent=\"Enauweyle Lermenlieu\" agentid=\"3009420\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"4\" locationid=\"60010471\" locator=\"true\"/>\r\n    <row agent=\"Auretins Ovaert\" agentid=\"3009421\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"1\" locationid=\"60010468\" locator=\"false\"/>\r\n    <row agent=\"Taenive Achtens\" agentid=\"3009422\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"3\" locationid=\"60010447\" locator=\"false\"/>\r\n    <row agent=\"Valt Frarel\" agentid=\"3009423\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"24\" level=\"3\" locationid=\"60010444\" locator=\"false\"/>\r\n    <row agent=\"Claynese Hoyessot\" agentid=\"3009424\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"24\" level=\"1\" locationid=\"60010462\" locator=\"true\"/>\r\n    <row agent=\"Stranders Achtan\" agentid=\"3009425\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"1\" locationid=\"60010465\" locator=\"false\"/>\r\n    <row agent=\"Pienordanne Dellerite\" agentid=\"3009426\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"1\" locationid=\"60010405\" locator=\"false\"/>\r\n    <row agent=\"Blala Vancent\" agentid=\"3009427\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"1\" locationid=\"60010402\" locator=\"false\"/>\r\n    <row agent=\"Alleline Annins\" agentid=\"3009428\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"1\" locationid=\"60010423\" locator=\"false\"/>\r\n    <row agent=\"Esseraimer Amoen\" agentid=\"3009429\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"24\" level=\"1\" locationid=\"60010420\" locator=\"false\"/>\r\n    <row agent=\"Wifrerante Vaydaerer\" agentid=\"3009430\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"24\" level=\"2\" locationid=\"60010426\" locator=\"false\"/>\r\n    <row agent=\"Fobvraert Leckerot\" agentid=\"3009431\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"4\" locationid=\"60010429\" locator=\"true\"/>\r\n    <row agent=\"Amaeroure Atlaurjaere\" agentid=\"3009432\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"3\" locationid=\"60010399\" locator=\"false\"/>\r\n    <row agent=\"Vingaire Malalle\" agentid=\"3009433\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"1\" locationid=\"60010486\" locator=\"false\"/>\r\n    <row agent=\"Doullenne Alleron\" agentid=\"3009434\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"1\" locationid=\"60010492\" locator=\"false\"/>\r\n    <row agent=\"Pessoen Ladistier\" agentid=\"3009435\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"4\" locationid=\"60010495\" locator=\"false\"/>\r\n    <row agent=\"Omoen Bonnare\" agentid=\"3009436\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"3\" locationid=\"60010504\" locator=\"true\"/>\r\n    <row agent=\"Euroque Meribene\" agentid=\"3009437\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"3\" locationid=\"60010507\" locator=\"true\"/>\r\n    <row agent=\"Coene Wagnere\" agentid=\"3009438\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"2\" locationid=\"60010522\" locator=\"false\"/>\r\n    <row agent=\"Rosostrard Slassulle\" agentid=\"3009439\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"3\" locationid=\"60010525\" locator=\"false\"/>\r\n    <row agent=\"Lanninck Scoullard\" agentid=\"3009440\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"24\" level=\"1\" locationid=\"60010558\" locator=\"false\"/>\r\n    <row agent=\"Rairthie Choutte\" agentid=\"3009441\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"1\" locationid=\"60010561\" locator=\"false\"/>\r\n    <row agent=\"Froil Vellan\" agentid=\"3009442\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"4\" locationid=\"60010537\" locator=\"false\"/>\r\n    <row agent=\"Galotyne Adent\" agentid=\"3009443\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"2\" locationid=\"60010534\" locator=\"false\"/>\r\n    <row agent=\"Octanneve Ametens\" agentid=\"3009444\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"1\" locationid=\"60010510\" locator=\"false\"/>\r\n    <row agent=\"Abber Defurman\" agentid=\"3009445\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"2\" locationid=\"60010513\" locator=\"false\"/>\r\n    <row agent=\"Arnanbane Ravacesel\" agentid=\"3009446\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"2\" locationid=\"60010570\" locator=\"false\"/>\r\n    <row agent=\"Vertorinc Jarverwel\" agentid=\"3009447\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"1\" locationid=\"60010573\" locator=\"true\"/>\r\n    <row agent=\"Lauvrende Heyfriroler\" agentid=\"3009448\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"1\" locationid=\"60010540\" locator=\"false\"/>\r\n    <row agent=\"Mattebaert Vyne\" agentid=\"3009449\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"4\" locationid=\"60010543\" locator=\"false\"/>\r\n    <row agent=\"Masoutte Crecetins\" agentid=\"3009450\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"2\" locationid=\"60010489\" locator=\"false\"/>\r\n    <row agent=\"Aiges Blayme\" agentid=\"3009451\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"1\" locationid=\"60010546\" locator=\"false\"/>\r\n    <row agent=\"Pecsins Ivier\" agentid=\"3009452\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"2\" locationid=\"60010549\" locator=\"true\"/>\r\n    <row agent=\"Abake Scech\" agentid=\"3009453\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"2\" locationid=\"60010552\" locator=\"false\"/>\r\n    <row agent=\"Bakkarault Brevier\" agentid=\"3009454\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"3\" locationid=\"60010555\" locator=\"false\"/>\r\n    <row agent=\"Asnia Atleraetan\" agentid=\"3009455\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"3\" locationid=\"60010519\" locator=\"false\"/>\r\n    <row agent=\"Arevync Olemina\" agentid=\"3009456\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"24\" level=\"2\" locationid=\"60010516\" locator=\"true\"/>\r\n    <row agent=\"Hornelirlis Alonon\" agentid=\"3009457\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"2\" locationid=\"60010531\" locator=\"false\"/>\r\n    <row agent=\"Achoure Ahreres\" agentid=\"3009458\" agenttypeid=\"8\" corporationid=\"1000105\" divisionid=\"22\" level=\"5\" locationid=\"60010528\" locator=\"false\"/>\r\n    <row agent=\"Lanvale Thilotte\" agentid=\"3009459\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"2\" locationid=\"60010501\" locator=\"false\"/>\r\n    <row agent=\"Guilin Bouil\" agentid=\"3009460\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"1\" locationid=\"60010498\" locator=\"false\"/>\r\n    <row agent=\"Ganoure Deria\" agentid=\"3009461\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"1\" locationid=\"60010564\" locator=\"false\"/>\r\n    <row agent=\"Saussay Raouschilard\" agentid=\"3009462\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"24\" level=\"1\" locationid=\"60010567\" locator=\"false\"/>\r\n    <row agent=\"Jorredel Mautene\" agentid=\"3009463\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"1\" locationid=\"60010576\" locator=\"false\"/>\r\n    <row agent=\"Annon Adeladie\" agentid=\"3009464\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"3\" locationid=\"60010582\" locator=\"true\"/>\r\n    <row agent=\"Fauselynck Aernonnire\" agentid=\"3009465\" agenttypeid=\"8\" corporationid=\"1000106\" divisionid=\"22\" level=\"5\" locationid=\"60010585\" locator=\"false\"/>\r\n    <row agent=\"Ophaghener Auroulde\" agentid=\"3009466\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"2\" locationid=\"60010606\" locator=\"false\"/>\r\n    <row agent=\"Hammianne Aurmeersch\" agentid=\"3009467\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"3\" locationid=\"60010609\" locator=\"false\"/>\r\n    <row agent=\"Aulleem Monatave\" agentid=\"3009468\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"1\" locationid=\"60010600\" locator=\"false\"/>\r\n    <row agent=\"Stalocline Assye\" agentid=\"3009469\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"2\" locationid=\"60010603\" locator=\"false\"/>\r\n    <row agent=\"Ellosant Ongve\" agentid=\"3009470\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"4\" locationid=\"60010624\" locator=\"false\"/>\r\n    <row agent=\"Allilieres Merrore\" agentid=\"3009471\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"2\" locationid=\"60010627\" locator=\"false\"/>\r\n    <row agent=\"Aboy Ophilamon\" agentid=\"3009472\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"1\" locationid=\"60010618\" locator=\"false\"/>\r\n    <row agent=\"Lauvrende Cesattene\" agentid=\"3009473\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"4\" locationid=\"60010621\" locator=\"false\"/>\r\n    <row agent=\"Moveval Polirine\" agentid=\"3009474\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"3\" locationid=\"60010594\" locator=\"false\"/>\r\n    <row agent=\"Bunbaviette Marittine\" agentid=\"3009475\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"4\" locationid=\"60010597\" locator=\"false\"/>\r\n    <row agent=\"Arnetraert Brelerc\" agentid=\"3009476\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"2\" locationid=\"60010579\" locator=\"true\"/>\r\n    <row agent=\"Antree Essoennan\" agentid=\"3009477\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"1\" locationid=\"60010588\" locator=\"false\"/>\r\n    <row agent=\"Aymaloyal Carlery\" agentid=\"3009478\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"2\" locationid=\"60010591\" locator=\"false\"/>\r\n    <row agent=\"Alpicard Pernaeneve\" agentid=\"3009479\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"2\" locationid=\"60010630\" locator=\"false\"/>\r\n    <row agent=\"Rueminck Dusselitte\" agentid=\"3009480\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"2\" locationid=\"60010633\" locator=\"false\"/>\r\n    <row agent=\"Ameron Symnes\" agentid=\"3009481\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"2\" locationid=\"60010612\" locator=\"true\"/>\r\n    <row agent=\"Arnoux Obesync\" agentid=\"3009482\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"1\" locationid=\"60010615\" locator=\"false\"/>\r\n    <row agent=\"Ognye Sancenard\" agentid=\"3009483\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"1\" locationid=\"60010636\" locator=\"true\"/>\r\n    <row agent=\"Anzattune Symanche\" agentid=\"3009484\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"2\" locationid=\"60010714\" locator=\"false\"/>\r\n    <row agent=\"Vleys Atrync\" agentid=\"3009485\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"24\" level=\"2\" locationid=\"60010717\" locator=\"false\"/>\r\n    <row agent=\"Maursey Ardaelter\" agentid=\"3009486\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"1\" locationid=\"60010702\" locator=\"false\"/>\r\n    <row agent=\"Allalleniel Avaneel\" agentid=\"3009487\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"3\" locationid=\"60010705\" locator=\"false\"/>\r\n    <row agent=\"Lagemorne Lallerordon\" agentid=\"3009488\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"2\" locationid=\"60010666\" locator=\"false\"/>\r\n    <row agent=\"Aldrawitte Clear\" agentid=\"3009489\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"4\" locationid=\"60010669\" locator=\"true\"/>\r\n    <row agent=\"Aurme Aernanaert\" agentid=\"3009490\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"2\" locationid=\"60010675\" locator=\"false\"/>\r\n    <row agent=\"Jabbepin Burlaert\" agentid=\"3009491\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"24\" level=\"3\" locationid=\"60010672\" locator=\"false\"/>\r\n    <row agent=\"Kergagoncer Houfriellan\" agentid=\"3009492\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"3\" locationid=\"60010696\" locator=\"true\"/>\r\n    <row agent=\"Coligent Laler\" agentid=\"3009493\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"2\" locationid=\"60010699\" locator=\"false\"/>\r\n    <row agent=\"Ciloroial Evacone\" agentid=\"3009494\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"24\" level=\"2\" locationid=\"60010663\" locator=\"false\"/>\r\n    <row agent=\"Devalon Nobreler\" agentid=\"3009495\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"4\" locationid=\"60010660\" locator=\"true\"/>\r\n    <row agent=\"Racie Audaden\" agentid=\"3009496\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"3\" locationid=\"60010639\" locator=\"false\"/>\r\n    <row agent=\"Ormendedier Upheve\" agentid=\"3009497\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"1\" locationid=\"60010642\" locator=\"false\"/>\r\n    <row agent=\"Mavrotta Lasnovins\" agentid=\"3009498\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"3\" locationid=\"60010645\" locator=\"false\"/>\r\n    <row agent=\"Gallusiene Heylmetomet\" agentid=\"3009499\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"1\" locationid=\"60010690\" locator=\"false\"/>\r\n    <row agent=\"Wyrocque Grelibert\" agentid=\"3009500\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"24\" level=\"2\" locationid=\"60010693\" locator=\"false\"/>\r\n    <row agent=\"Flogedine Erdia\" agentid=\"3009501\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"2\" locationid=\"60010678\" locator=\"false\"/>\r\n    <row agent=\"Euvon Allelluc\" agentid=\"3009502\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"2\" locationid=\"60010681\" locator=\"false\"/>\r\n    <row agent=\"Ornel Ambramotte\" agentid=\"3009503\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"24\" level=\"1\" locationid=\"60010723\" locator=\"false\"/>\r\n    <row agent=\"Gifrelebier Dermier\" agentid=\"3009504\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"2\" locationid=\"60010720\" locator=\"true\"/>\r\n    <row agent=\"Aymaloyal Saggherwey\" agentid=\"3009505\" agenttypeid=\"8\" corporationid=\"1000107\" divisionid=\"22\" level=\"5\" locationid=\"60010708\" locator=\"false\"/>\r\n    <row agent=\"Blolilan Odire\" agentid=\"3009506\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"24\" level=\"4\" locationid=\"60010711\" locator=\"true\"/>\r\n    <row agent=\"Housevel Aliguet\" agentid=\"3009507\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"24\" level=\"2\" locationid=\"60010654\" locator=\"false\"/>\r\n    <row agent=\"Yvevet Reyfritenne\" agentid=\"3009508\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"2\" locationid=\"60010657\" locator=\"false\"/>\r\n    <row agent=\"Tameroy Crerite\" agentid=\"3009509\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"3\" locationid=\"60010684\" locator=\"false\"/>\r\n    <row agent=\"Estime Hovrelaert\" agentid=\"3009510\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"2\" locationid=\"60010687\" locator=\"false\"/>\r\n    <row agent=\"Gaunia Octeyncaere\" agentid=\"3009511\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"4\" locationid=\"60010648\" locator=\"true\"/>\r\n    <row agent=\"Harc Ambertin\" agentid=\"3009512\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"24\" level=\"3\" locationid=\"60010651\" locator=\"false\"/>\r\n    <row agent=\"Docararde Edmerent\" agentid=\"3009513\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"1\" locationid=\"60010726\" locator=\"false\"/>\r\n    <row agent=\"Alisson Vioncheriler\" agentid=\"3009514\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"23\" level=\"2\" locationid=\"60010822\" locator=\"false\"/>\r\n    <row agent=\"Eburch Esalion\" agentid=\"3009515\" agenttypeid=\"8\" corporationid=\"1000108\" divisionid=\"24\" level=\"5\" locationid=\"60010819\" locator=\"false\"/>\r\n    <row agent=\"Dovaille Auters\" agentid=\"3009516\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"23\" level=\"1\" locationid=\"60010816\" locator=\"false\"/>\r\n    <row agent=\"Achalle Ryhedier\" agentid=\"3009517\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"22\" level=\"3\" locationid=\"60010807\" locator=\"true\"/>\r\n    <row agent=\"Arbra Esmecet\" agentid=\"3009518\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"2\" locationid=\"60010810\" locator=\"false\"/>\r\n    <row agent=\"Reysetouttes Lornache\" agentid=\"3009519\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"23\" level=\"3\" locationid=\"60010813\" locator=\"true\"/>\r\n    <row agent=\"Avapanne Alelyncke\" agentid=\"3009520\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"1\" locationid=\"60010843\" locator=\"false\"/>\r\n    <row agent=\"Alpetane Jolloge\" agentid=\"3009521\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"1\" locationid=\"60010846\" locator=\"false\"/>\r\n    <row agent=\"Malayme Eldiart\" agentid=\"3009522\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"1\" locationid=\"60010849\" locator=\"false\"/>\r\n    <row agent=\"Vientes Zuler\" agentid=\"3009523\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"2\" locationid=\"60010792\" locator=\"false\"/>\r\n    <row agent=\"Afdier Couster\" agentid=\"3009524\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"1\" locationid=\"60010789\" locator=\"false\"/>\r\n    <row agent=\"Kuerne Amungher\" agentid=\"3009525\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"2\" locationid=\"60010795\" locator=\"false\"/>\r\n    <row agent=\"Saluvon Ekeneron\" agentid=\"3009526\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"1\" locationid=\"60010852\" locator=\"false\"/>\r\n    <row agent=\"Artenne Preldent\" agentid=\"3009527\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"23\" level=\"4\" locationid=\"60010855\" locator=\"false\"/>\r\n    <row agent=\"Beddery Ghyllenne\" agentid=\"3009528\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"1\" locationid=\"60010858\" locator=\"false\"/>\r\n    <row agent=\"Brens Tilpourel\" agentid=\"3009529\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"23\" level=\"1\" locationid=\"60010804\" locator=\"false\"/>\r\n    <row agent=\"Valeppaert Daoullon\" agentid=\"3009530\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"3\" locationid=\"60010798\" locator=\"false\"/>\r\n    <row agent=\"Aussa Than\" agentid=\"3009531\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"22\" level=\"3\" locationid=\"60010801\" locator=\"false\"/>\r\n    <row agent=\"Hedoubel Crens\" agentid=\"3009532\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"23\" level=\"3\" locationid=\"60010732\" locator=\"true\"/>\r\n    <row agent=\"Losietes Cronart\" agentid=\"3009533\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"2\" locationid=\"60010729\" locator=\"false\"/>\r\n    <row agent=\"Cooleemina Wiranstoure\" agentid=\"3009534\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"22\" level=\"2\" locationid=\"60010744\" locator=\"false\"/>\r\n    <row agent=\"Chostins Gaenloovitte\" agentid=\"3009535\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"3\" locationid=\"60010747\" locator=\"false\"/>\r\n    <row agent=\"Adrel Tevatier\" agentid=\"3009536\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"23\" level=\"4\" locationid=\"60010750\" locator=\"false\"/>\r\n    <row agent=\"Bedepant Flor\" agentid=\"3009537\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"4\" locationid=\"60010771\" locator=\"false\"/>\r\n    <row agent=\"Pongheronne Camena\" agentid=\"3009538\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"22\" level=\"4\" locationid=\"60010774\" locator=\"true\"/>\r\n    <row agent=\"Froyer Jaec\" agentid=\"3009539\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"23\" level=\"2\" locationid=\"60010777\" locator=\"false\"/>\r\n    <row agent=\"Orollede Praylt\" agentid=\"3009540\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"23\" level=\"2\" locationid=\"60010741\" locator=\"false\"/>\r\n    <row agent=\"Alemel Agerin\" agentid=\"3009541\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"2\" locationid=\"60010738\" locator=\"false\"/>\r\n    <row agent=\"Coleron Dosevale\" agentid=\"3009542\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"22\" level=\"3\" locationid=\"60010735\" locator=\"false\"/>\r\n    <row agent=\"Lalie Cussal\" agentid=\"3009543\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"22\" level=\"2\" locationid=\"60010753\" locator=\"false\"/>\r\n    <row agent=\"Ytee Ponebins\" agentid=\"3009544\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"22\" level=\"4\" locationid=\"60010759\" locator=\"false\"/>\r\n    <row agent=\"Arcent Eullaerdt\" agentid=\"3009545\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"22\" level=\"1\" locationid=\"60010756\" locator=\"false\"/>\r\n    <row agent=\"Ophaestores Omain\" agentid=\"3009546\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"3\" locationid=\"60010828\" locator=\"false\"/>\r\n    <row agent=\"Madoure Ysoron\" agentid=\"3009547\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"23\" level=\"3\" locationid=\"60010825\" locator=\"true\"/>\r\n    <row agent=\"Estre Ignoure\" agentid=\"3009548\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"23\" level=\"2\" locationid=\"60010831\" locator=\"false\"/>\r\n    <row agent=\"Menges Mellencourt\" agentid=\"3009549\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"22\" level=\"2\" locationid=\"60010780\" locator=\"false\"/>\r\n    <row agent=\"Mammon Denvonne\" agentid=\"3009550\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"2\" locationid=\"60010783\" locator=\"false\"/>\r\n    <row agent=\"Chrirentine Erdocoure\" agentid=\"3009551\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"23\" level=\"4\" locationid=\"60010768\" locator=\"true\"/>\r\n    <row agent=\"Avagher Crerant\" agentid=\"3009552\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"23\" level=\"2\" locationid=\"60010768\" locator=\"true\"/>\r\n    <row agent=\"Carpon Onck\" agentid=\"3009553\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"22\" level=\"1\" locationid=\"60010765\" locator=\"true\"/>\r\n    <row agent=\"Herirlier Auvrolaert\" agentid=\"3009555\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"1\" locationid=\"60010834\" locator=\"false\"/>\r\n    <row agent=\"Alhot Fomtelot\" agentid=\"3009556\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"2\" locationid=\"60010837\" locator=\"false\"/>\r\n    <row agent=\"Buinie Feritte\" agentid=\"3009557\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"23\" level=\"1\" locationid=\"60010840\" locator=\"false\"/>\r\n    <row agent=\"Obalanes Ardarette\" agentid=\"3009558\" agenttypeid=\"4\" corporationid=\"1000109\" divisionid=\"18\" level=\"1\" locationid=\"60010861\" locator=\"false\"/>\r\n    <row agent=\"Ancevence Achelasse\" agentid=\"3009559\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"22\" level=\"3\" locationid=\"60010894\" locator=\"false\"/>\r\n    <row agent=\"Gryncelbois Erris\" agentid=\"3009560\" agenttypeid=\"4\" corporationid=\"1000109\" divisionid=\"18\" level=\"3\" locationid=\"60010888\" locator=\"false\"/>\r\n    <row agent=\"Brorsch Ilerie\" agentid=\"3009561\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"22\" level=\"3\" locationid=\"60010891\" locator=\"true\"/>\r\n    <row agent=\"Ambelane Lean\" agentid=\"3009562\" agenttypeid=\"8\" corporationid=\"1000109\" divisionid=\"22\" level=\"5\" locationid=\"60010948\" locator=\"false\"/>\r\n    <row agent=\"Cylelle Sloure\" agentid=\"3009563\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"22\" level=\"4\" locationid=\"60010945\" locator=\"false\"/>\r\n    <row agent=\"Arnanon Eynie\" agentid=\"3009564\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"22\" level=\"3\" locationid=\"60010942\" locator=\"false\"/>\r\n    <row agent=\"Afria Edmiette\" agentid=\"3009565\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"22\" level=\"4\" locationid=\"60010930\" locator=\"false\"/>\r\n    <row agent=\"Rias Luisauir\" agentid=\"3009566\" agenttypeid=\"4\" corporationid=\"1000109\" divisionid=\"18\" level=\"4\" locationid=\"60010924\" locator=\"false\"/>\r\n    <row agent=\"Freder Aernelaert\" agentid=\"3009567\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"22\" level=\"4\" locationid=\"60010927\" locator=\"true\"/>\r\n    <row agent=\"Brens Devalon\" agentid=\"3009568\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"22\" level=\"3\" locationid=\"60010867\" locator=\"false\"/>\r\n    <row agent=\"Melie Gheyr\" agentid=\"3009569\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"22\" level=\"2\" locationid=\"60010864\" locator=\"true\"/>\r\n    <row agent=\"Alserore Allelery\" agentid=\"3009570\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"22\" level=\"4\" locationid=\"60010915\" locator=\"true\"/>\r\n    <row agent=\"Rayle Amerique\" agentid=\"3009571\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"22\" level=\"2\" locationid=\"60010921\" locator=\"false\"/>\r\n    <row agent=\"Audamia Bourgaredyn\" agentid=\"3009572\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"22\" level=\"2\" locationid=\"60010918\" locator=\"true\"/>\r\n    <row agent=\"Havrylallin Eurt\" agentid=\"3009573\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"24\" level=\"3\" locationid=\"60010879\" locator=\"false\"/>\r\n    <row agent=\"Rilz Annaschaert\" agentid=\"3009574\" agenttypeid=\"4\" corporationid=\"1000109\" divisionid=\"18\" level=\"1\" locationid=\"60010882\" locator=\"false\"/>\r\n    <row agent=\"Nayette Rorena\" agentid=\"3009575\" agenttypeid=\"4\" corporationid=\"1000109\" divisionid=\"18\" level=\"1\" locationid=\"60010885\" locator=\"false\"/>\r\n    <row agent=\"Lenia Geditte\" agentid=\"3009576\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"22\" level=\"3\" locationid=\"60010903\" locator=\"false\"/>\r\n    <row agent=\"Oirlair Arroy\" agentid=\"3009577\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"22\" level=\"1\" locationid=\"60010897\" locator=\"true\"/>\r\n    <row agent=\"Ollon Dumes\" agentid=\"3009578\" agenttypeid=\"4\" corporationid=\"1000109\" divisionid=\"18\" level=\"1\" locationid=\"60010900\" locator=\"false\"/>\r\n    <row agent=\"Porchomette Chandrard\" agentid=\"3009579\" agenttypeid=\"4\" corporationid=\"1000109\" divisionid=\"18\" level=\"2\" locationid=\"60010906\" locator=\"false\"/>\r\n    <row agent=\"Eussa Arlon\" agentid=\"3009580\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"24\" level=\"1\" locationid=\"60010912\" locator=\"false\"/>\r\n    <row agent=\"Aynstie Wentisagnel\" agentid=\"3009581\" agenttypeid=\"4\" corporationid=\"1000109\" divisionid=\"18\" level=\"3\" locationid=\"60010909\" locator=\"false\"/>\r\n    <row agent=\"Aleyvriman Elgent\" agentid=\"3009582\" agenttypeid=\"4\" corporationid=\"1000109\" divisionid=\"18\" level=\"3\" locationid=\"60010933\" locator=\"false\"/>\r\n    <row agent=\"Arberner Gouc\" agentid=\"3009583\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"24\" level=\"1\" locationid=\"60010939\" locator=\"false\"/>\r\n    <row agent=\"Agrelieres Argre\" agentid=\"3009584\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"22\" level=\"1\" locationid=\"60010936\" locator=\"false\"/>\r\n    <row agent=\"Bostiers Oderyncke\" agentid=\"3009585\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"24\" level=\"1\" locationid=\"60010870\" locator=\"false\"/>\r\n    <row agent=\"Ruborraude Eyghelet\" agentid=\"3009586\" agenttypeid=\"4\" corporationid=\"1000109\" divisionid=\"18\" level=\"4\" locationid=\"60010873\" locator=\"false\"/>\r\n    <row agent=\"Lugerer Ameurthe\" agentid=\"3009587\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"24\" level=\"2\" locationid=\"60010876\" locator=\"true\"/>\r\n    <row agent=\"Bautamps Yolalotte\" agentid=\"3009588\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60010951\" locator=\"false\"/>\r\n    <row agent=\"Delmoler Motmonnie\" agentid=\"3009589\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60011029\" locator=\"true\"/>\r\n    <row agent=\"Jamaert Wey\" agentid=\"3009590\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60011038\" locator=\"false\"/>\r\n    <row agent=\"Arble Entel\" agentid=\"3009591\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"4\" locationid=\"60011026\" locator=\"false\"/>\r\n    <row agent=\"Gaenloovitte Demette\" agentid=\"3009592\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60011023\" locator=\"true\"/>\r\n    <row agent=\"Aufay Hurrimoult\" agentid=\"3009593\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60011032\" locator=\"false\"/>\r\n    <row agent=\"Mobrault Adratins\" agentid=\"3009594\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60011035\" locator=\"false\"/>\r\n    <row agent=\"Elelere Albunel\" agentid=\"3009595\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60011101\" locator=\"false\"/>\r\n    <row agent=\"Wyrocque Badeneque\" agentid=\"3009596\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"4\" locationid=\"60011107\" locator=\"false\"/>\r\n    <row agent=\"Erdocoure Botane\" agentid=\"3009597\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"4\" locationid=\"60011095\" locator=\"true\"/>\r\n    <row agent=\"Amaungheron Agorante\" agentid=\"3009598\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60011098\" locator=\"false\"/>\r\n    <row agent=\"Lyfdevos Armaviere\" agentid=\"3009599\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60011104\" locator=\"false\"/>\r\n    <row agent=\"Arbame Vimereau\" agentid=\"3009600\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60011110\" locator=\"false\"/>\r\n    <row agent=\"Brubelle Hessieuwe\" agentid=\"3009601\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"3\" locationid=\"60011113\" locator=\"true\"/>\r\n    <row agent=\"Antfe Ratillose\" agentid=\"3009602\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"3\" locationid=\"60011128\" locator=\"false\"/>\r\n    <row agent=\"Poriguier Vainste\" agentid=\"3009603\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"4\" locationid=\"60011122\" locator=\"false\"/>\r\n    <row agent=\"Crillottain Betton\" agentid=\"3009604\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"4\" locationid=\"60011125\" locator=\"true\"/>\r\n    <row agent=\"Lympia Oisiree\" agentid=\"3009605\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"4\" locationid=\"60011116\" locator=\"true\"/>\r\n    <row agent=\"Abue Bruttande\" agentid=\"3009606\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60011119\" locator=\"false\"/>\r\n    <row agent=\"Arnastere Aurgier\" agentid=\"3009607\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"3\" locationid=\"60011059\" locator=\"false\"/>\r\n    <row agent=\"Ivalier Paen\" agentid=\"3009608\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"3\" locationid=\"60011065\" locator=\"true\"/>\r\n    <row agent=\"Vevennitte Allottes\" agentid=\"3009609\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60011062\" locator=\"false\"/>\r\n    <row agent=\"Araverie Annacel\" agentid=\"3009610\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60011068\" locator=\"false\"/>\r\n    <row agent=\"Piedie Chaffryriene\" agentid=\"3009611\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60011074\" locator=\"false\"/>\r\n    <row agent=\"Ponelalie Sabenaret\" agentid=\"3009612\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"3\" locationid=\"60011071\" locator=\"true\"/>\r\n    <row agent=\"Horbomais Jonenor\" agentid=\"3009613\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60011041\" locator=\"false\"/>\r\n    <row agent=\"Hos Inier\" agentid=\"3009614\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60011044\" locator=\"false\"/>\r\n    <row agent=\"Pier Vesevecer\" agentid=\"3009615\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60011047\" locator=\"false\"/>\r\n    <row agent=\"Anzires Alate\" agentid=\"3009616\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60011056\" locator=\"false\"/>\r\n    <row agent=\"Locherghen Kersolis\" agentid=\"3009617\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60011053\" locator=\"false\"/>\r\n    <row agent=\"Fofstalle Camenlieu\" agentid=\"3009618\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60011050\" locator=\"false\"/>\r\n    <row agent=\"Eys Osmagne\" agentid=\"3009619\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"3\" locationid=\"60010954\" locator=\"false\"/>\r\n    <row agent=\"Riselgale Inault\" agentid=\"3009620\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60010963\" locator=\"false\"/>\r\n    <row agent=\"Afromanne Therckosiere\" agentid=\"3009621\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"3\" locationid=\"60010960\" locator=\"true\"/>\r\n    <row agent=\"Vitte Vilinnon\" agentid=\"3009622\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60010957\" locator=\"false\"/>\r\n    <row agent=\"Irlier Mounch\" agentid=\"3009623\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"4\" locationid=\"60010966\" locator=\"false\"/>\r\n    <row agent=\"Eura Meure\" agentid=\"3009624\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60010999\" locator=\"false\"/>\r\n    <row agent=\"Amoderia Alamel\" agentid=\"3009625\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"3\" locationid=\"60010987\" locator=\"false\"/>\r\n    <row agent=\"Orone Algana\" agentid=\"3009626\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60010993\" locator=\"false\"/>\r\n    <row agent=\"Orasse Vidotere\" agentid=\"3009627\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"3\" locationid=\"60011002\" locator=\"false\"/>\r\n    <row agent=\"Rorralachies Leonavor\" agentid=\"3009628\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60010990\" locator=\"false\"/>\r\n    <row agent=\"Iverie Henoiltet\" agentid=\"3009629\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60010996\" locator=\"false\"/>\r\n    <row agent=\"Gie Alloviene\" agentid=\"3009630\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60011008\" locator=\"false\"/>\r\n    <row agent=\"Marjamette Alanault\" agentid=\"3009631\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60011017\" locator=\"false\"/>\r\n    <row agent=\"Mahieu Blie\" agentid=\"3009632\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60011014\" locator=\"true\"/>\r\n    <row agent=\"Aminghere Cotlamaert\" agentid=\"3009633\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60011011\" locator=\"false\"/>\r\n    <row agent=\"Paen Vediere\" agentid=\"3009634\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60011020\" locator=\"false\"/>\r\n    <row agent=\"Gaecoudel Afriraurer\" agentid=\"3009635\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60011005\" locator=\"false\"/>\r\n    <row agent=\"Albroralle Onfranotte\" agentid=\"3009636\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"4\" locationid=\"60010969\" locator=\"false\"/>\r\n    <row agent=\"Illadie Elemite\" agentid=\"3009637\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"3\" locationid=\"60010975\" locator=\"false\"/>\r\n    <row agent=\"Chanarana Yvatus\" agentid=\"3009638\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60010984\" locator=\"true\"/>\r\n    <row agent=\"Abake Paunssy\" agentid=\"3009639\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60010972\" locator=\"false\"/>\r\n    <row agent=\"Parts Claucanins\" agentid=\"3009640\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60010978\" locator=\"false\"/>\r\n    <row agent=\"Beborres Apamoote\" agentid=\"3009641\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60010981\" locator=\"false\"/>\r\n    <row agent=\"Canisere Houviron\" agentid=\"3009642\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"3\" locationid=\"60011092\" locator=\"false\"/>\r\n    <row agent=\"Tivianne Brere\" agentid=\"3009643\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"3\" locationid=\"60011080\" locator=\"false\"/>\r\n    <row agent=\"Loillaintes Thoun\" agentid=\"3009644\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"4\" locationid=\"60011086\" locator=\"true\"/>\r\n    <row agent=\"Breye Albryralle\" agentid=\"3009645\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"3\" locationid=\"60011077\" locator=\"false\"/>\r\n    <row agent=\"Tranard Arnoche\" agentid=\"3009646\" agenttypeid=\"8\" corporationid=\"1000110\" divisionid=\"22\" level=\"5\" locationid=\"60011089\" locator=\"false\"/>\r\n    <row agent=\"Grolt Aulle\" agentid=\"3009647\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"4\" locationid=\"60011083\" locator=\"false\"/>\r\n    <row agent=\"Rebbois Vreau\" agentid=\"3009648\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"24\" level=\"1\" locationid=\"60011131\" locator=\"true\"/>\r\n    <row agent=\"Sorgard Caullon\" agentid=\"3009649\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"4\" locationid=\"60011152\" locator=\"true\"/>\r\n    <row agent=\"Rosane Ynck\" agentid=\"3009650\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011149\" locator=\"true\"/>\r\n    <row agent=\"Bouscain Bougnisarin\" agentid=\"3009651\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011257\" locator=\"false\"/>\r\n    <row agent=\"Cadegier Aubrottore\" agentid=\"3009652\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011260\" locator=\"false\"/>\r\n    <row agent=\"Orsognave Abene\" agentid=\"3009653\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011251\" locator=\"false\"/>\r\n    <row agent=\"Tean Vayle\" agentid=\"3009654\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"4\" locationid=\"60011254\" locator=\"false\"/>\r\n    <row agent=\"Anwyns Caroivrin\" agentid=\"3009655\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011212\" locator=\"false\"/>\r\n    <row agent=\"Dewnellin Biels\" agentid=\"3009656\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"4\" locationid=\"60011203\" locator=\"true\"/>\r\n    <row agent=\"Janyrance Aques\" agentid=\"3009657\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011209\" locator=\"false\"/>\r\n    <row agent=\"Tirfer Bappenalle\" agentid=\"3009658\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"4\" locationid=\"60011206\" locator=\"false\"/>\r\n    <row agent=\"Tulet Anselon\" agentid=\"3009659\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011143\" locator=\"true\"/>\r\n    <row agent=\"Aernerault Reyrlouttes\" agentid=\"3009660\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011146\" locator=\"false\"/>\r\n    <row agent=\"Orviddore Dawerckhengot\" agentid=\"3009661\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011176\" locator=\"false\"/>\r\n    <row agent=\"Reditteau Oursagnire\" agentid=\"3009664\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"4\" locationid=\"60011167\" locator=\"false\"/>\r\n    <row agent=\"Mousore Ambiertes\" agentid=\"3009665\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011302\" locator=\"false\"/>\r\n    <row agent=\"Agalle Auralle\" agentid=\"3009666\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011299\" locator=\"false\"/>\r\n    <row agent=\"Chentchraert Falollone\" agentid=\"3009667\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"3\" locationid=\"60011305\" locator=\"false\"/>\r\n    <row agent=\"Albootella Ekare\" agentid=\"3009668\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011308\" locator=\"false\"/>\r\n    <row agent=\"Anzalolie Erme\" agentid=\"3009669\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"4\" locationid=\"60011161\" locator=\"false\"/>\r\n    <row agent=\"Ophalire Abins\" agentid=\"3009670\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"3\" locationid=\"60011164\" locator=\"true\"/>\r\n    <row agent=\"Calsesirier Asselle\" agentid=\"3009671\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011158\" locator=\"true\"/>\r\n    <row agent=\"Wyrocque Gouey\" agentid=\"3009672\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011155\" locator=\"false\"/>\r\n    <row agent=\"Myennitte Alpymer\" agentid=\"3009673\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011290\" locator=\"false\"/>\r\n    <row agent=\"Janninck Aydet\" agentid=\"3009674\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011293\" locator=\"false\"/>\r\n    <row agent=\"Chrare Aydet\" agentid=\"3009675\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011296\" locator=\"false\"/>\r\n    <row agent=\"Buedoupon Arique\" agentid=\"3009676\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"4\" locationid=\"60011287\" locator=\"true\"/>\r\n    <row agent=\"Ongve Essarette\" agentid=\"3009677\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"4\" locationid=\"60011185\" locator=\"false\"/>\r\n    <row agent=\"Neyrtetolle Exaserin\" agentid=\"3009678\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011188\" locator=\"false\"/>\r\n    <row agent=\"Ysorancke Azuritte\" agentid=\"3009679\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"4\" locationid=\"60011182\" locator=\"false\"/>\r\n    <row agent=\"Bourens Boingaroix\" agentid=\"3009680\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011179\" locator=\"false\"/>\r\n    <row agent=\"Halmante Kelaeys\" agentid=\"3009681\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"3\" locationid=\"60011263\" locator=\"false\"/>\r\n    <row agent=\"Ancirris Cololoisa\" agentid=\"3009682\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"3\" locationid=\"60011266\" locator=\"false\"/>\r\n    <row agent=\"Adames Astre\" agentid=\"3009683\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"4\" locationid=\"60011269\" locator=\"false\"/>\r\n    <row agent=\"Olelie Tralidmel\" agentid=\"3009684\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011272\" locator=\"false\"/>\r\n    <row agent=\"Gollelle Thormonnie\" agentid=\"3009685\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"3\" locationid=\"60011137\" locator=\"true\"/>\r\n    <row agent=\"Arrion Lastegghem\" agentid=\"3009686\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"24\" level=\"1\" locationid=\"60011134\" locator=\"false\"/>\r\n    <row agent=\"Oune Aires\" agentid=\"3009687\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"24\" level=\"1\" locationid=\"60011140\" locator=\"false\"/>\r\n    <row agent=\"Olarault Rollorotte\" agentid=\"3009688\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011275\" locator=\"false\"/>\r\n    <row agent=\"Mitendrittan Eglerique\" agentid=\"3009689\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"3\" locationid=\"60011278\" locator=\"false\"/>\r\n    <row agent=\"Allync Fliet\" agentid=\"3009690\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"4\" locationid=\"60011281\" locator=\"true\"/>\r\n    <row agent=\"Vivarie Ainou\" agentid=\"3009691\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011284\" locator=\"false\"/>\r\n    <row agent=\"Goivin Amanan\" agentid=\"3009692\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"3\" locationid=\"60011215\" locator=\"false\"/>\r\n    <row agent=\"Evotes Fiert\" agentid=\"3009693\" agenttypeid=\"8\" corporationid=\"1000111\" divisionid=\"22\" level=\"5\" locationid=\"60011218\" locator=\"false\"/>\r\n    <row agent=\"Leoroilete Ashtucer\" agentid=\"3009694\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011221\" locator=\"false\"/>\r\n    <row agent=\"Blour Nitte\" agentid=\"3009695\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"24\" level=\"4\" locationid=\"60011224\" locator=\"false\"/>\r\n    <row agent=\"Racrot Releminck\" agentid=\"3009696\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011200\" locator=\"false\"/>\r\n    <row agent=\"Lalx Soil\" agentid=\"3009697\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011197\" locator=\"false\"/>\r\n    <row agent=\"Govrercard Veffort\" agentid=\"3009698\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011194\" locator=\"false\"/>\r\n    <row agent=\"Boulainose Porolbier\" agentid=\"3009699\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011191\" locator=\"false\"/>\r\n    <row agent=\"Crucarne Odeune\" agentid=\"3009700\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011242\" locator=\"false\"/>\r\n    <row agent=\"Mavrenelois Aeghe\" agentid=\"3009701\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"3\" locationid=\"60011245\" locator=\"false\"/>\r\n    <row agent=\"Brouneva Foldette\" agentid=\"3009702\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011248\" locator=\"false\"/>\r\n    <row agent=\"Memanoutte Fircal\" agentid=\"3009703\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"3\" locationid=\"60011239\" locator=\"false\"/>\r\n    <row agent=\"Ogoure Hare\" agentid=\"3009704\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011227\" locator=\"false\"/>\r\n    <row agent=\"Echibaver Noise\" agentid=\"3009705\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011233\" locator=\"false\"/>\r\n    <row agent=\"Clos Avanevon\" agentid=\"3009706\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"3\" locationid=\"60011236\" locator=\"false\"/>\r\n    <row agent=\"Almie Ardonsele\" agentid=\"3009707\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011230\" locator=\"false\"/>\r\n    <row agent=\"Ausmaert Baver\" agentid=\"3009708\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"24\" level=\"1\" locationid=\"60011311\" locator=\"false\"/>\r\n    <row agent=\"Asmier Rurmonlieu\" agentid=\"3009709\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"3\" locationid=\"60011320\" locator=\"false\"/>\r\n    <row agent=\"Andrie Delleliot\" agentid=\"3009710\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"3\" locationid=\"60011317\" locator=\"false\"/>\r\n    <row agent=\"Wire Cherere\" agentid=\"3009711\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"24\" level=\"4\" locationid=\"60011347\" locator=\"false\"/>\r\n    <row agent=\"Alurel Aciane\" agentid=\"3009712\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"3\" locationid=\"60011350\" locator=\"true\"/>\r\n    <row agent=\"Aurriest Olain\" agentid=\"3009713\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"4\" locationid=\"60011365\" locator=\"true\"/>\r\n    <row agent=\"Avynes Gelluire\" agentid=\"3009714\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"1\" locationid=\"60011368\" locator=\"false\"/>\r\n    <row agent=\"Roubuenet Kole\" agentid=\"3009715\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"1\" locationid=\"60011344\" locator=\"true\"/>\r\n    <row agent=\"Pallinoncher Harere\" agentid=\"3009716\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"4\" locationid=\"60011341\" locator=\"true\"/>\r\n    <row agent=\"Altre Lollina\" agentid=\"3009717\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"2\" locationid=\"60011329\" locator=\"false\"/>\r\n    <row agent=\"Aessen Ancille\" agentid=\"3009718\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"3\" locationid=\"60011332\" locator=\"true\"/>\r\n    <row agent=\"Mivent Gastomitte\" agentid=\"3009719\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"1\" locationid=\"60011356\" locator=\"false\"/>\r\n    <row agent=\"Ostailitte Ashtolairer\" agentid=\"3009720\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"2\" locationid=\"60011353\" locator=\"true\"/>\r\n    <row agent=\"Agrastyn Kues\" agentid=\"3009721\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"3\" locationid=\"60011326\" locator=\"true\"/>\r\n    <row agent=\"Fengaralle Groelande\" agentid=\"3009722\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"2\" locationid=\"60011323\" locator=\"false\"/>\r\n    <row agent=\"Romene Belagers\" agentid=\"3009723\" agenttypeid=\"8\" corporationid=\"1000112\" divisionid=\"22\" level=\"5\" locationid=\"60011332\" locator=\"false\"/>\r\n    <row agent=\"Dalle Audre\" agentid=\"3009724\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"2\" locationid=\"60011335\" locator=\"true\"/>\r\n    <row agent=\"Orsovrin Slie\" agentid=\"3009725\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"2\" locationid=\"60011338\" locator=\"false\"/>\r\n    <row agent=\"Lachorier Woucompeau\" agentid=\"3009726\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"24\" level=\"3\" locationid=\"60011359\" locator=\"false\"/>\r\n    <row agent=\"Gayle Alenille\" agentid=\"3009727\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"1\" locationid=\"60011362\" locator=\"false\"/>\r\n    <row agent=\"Ysannync Yvoorlalin\" agentid=\"3009728\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011371\" locator=\"false\"/>\r\n    <row agent=\"Dhoorcare Atlulle\" agentid=\"3009729\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011374\" locator=\"false\"/>\r\n    <row agent=\"Sanghe Carrenner\" agentid=\"3009730\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"3\" locationid=\"60011377\" locator=\"true\"/>\r\n    <row agent=\"Dealake Eulasen\" agentid=\"3009731\" agenttypeid=\"8\" corporationid=\"1000113\" divisionid=\"22\" level=\"5\" locationid=\"60011470\" locator=\"false\"/>\r\n    <row agent=\"Florvaert Bleverie\" agentid=\"3009732\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011473\" locator=\"false\"/>\r\n    <row agent=\"Quesne Ogoure\" agentid=\"3009733\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"3\" locationid=\"60011476\" locator=\"false\"/>\r\n    <row agent=\"Lalie Braire\" agentid=\"3009734\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011491\" locator=\"false\"/>\r\n    <row agent=\"Odoirouve Orviene\" agentid=\"3009735\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"3\" locationid=\"60011494\" locator=\"false\"/>\r\n    <row agent=\"Delet Yvevet\" agentid=\"3009736\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"2\" locationid=\"60011488\" locator=\"false\"/>\r\n    <row agent=\"Alonaert Adyttier\" agentid=\"3009737\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"4\" locationid=\"60011464\" locator=\"true\"/>\r\n    <row agent=\"Cholle Eppied\" agentid=\"3009738\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"3\" locationid=\"60011461\" locator=\"false\"/>\r\n    <row agent=\"Durlanveyne Indritte\" agentid=\"3009739\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"2\" locationid=\"60011467\" locator=\"true\"/>\r\n    <row agent=\"Abin Turavanon\" agentid=\"3009740\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"2\" locationid=\"60011395\" locator=\"true\"/>\r\n    <row agent=\"Artanbine Pecourt\" agentid=\"3009741\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"4\" locationid=\"60011389\" locator=\"true\"/>\r\n    <row agent=\"Elinore Saluvon\" agentid=\"3009742\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"3\" locationid=\"60011392\" locator=\"false\"/>\r\n    <row agent=\"Challet Ardelooris\" agentid=\"3009743\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011446\" locator=\"false\"/>\r\n    <row agent=\"Ermon Ararezer\" agentid=\"3009744\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"2\" locationid=\"60011443\" locator=\"false\"/>\r\n    <row agent=\"Cloic Atlolas\" agentid=\"3009745\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"2\" locationid=\"60011449\" locator=\"true\"/>\r\n    <row agent=\"Misouvon Iques\" agentid=\"3009746\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"2\" locationid=\"60011479\" locator=\"true\"/>\r\n    <row agent=\"Rarie Rollose\" agentid=\"3009747\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"3\" locationid=\"60011482\" locator=\"false\"/>\r\n    <row agent=\"Charballe Allare\" agentid=\"3009748\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"3\" locationid=\"60011485\" locator=\"true\"/>\r\n    <row agent=\"Vyne Fartlois\" agentid=\"3009749\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"2\" locationid=\"60011398\" locator=\"false\"/>\r\n    <row agent=\"Possare Demman\" agentid=\"3009750\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"2\" locationid=\"60011401\" locator=\"false\"/>\r\n    <row agent=\"Vampoudel Armattin\" agentid=\"3009751\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"2\" locationid=\"60011404\" locator=\"false\"/>\r\n    <row agent=\"Xarasier Proun\" agentid=\"3009752\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011497\" locator=\"true\"/>\r\n    <row agent=\"Allilieres Ley\" agentid=\"3009753\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"3\" locationid=\"60011503\" locator=\"false\"/>\r\n    <row agent=\"Amivel Jans\" agentid=\"3009754\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"3\" locationid=\"60011500\" locator=\"false\"/>\r\n    <row agent=\"Zuen Carlune\" agentid=\"3009755\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"3\" locationid=\"60011386\" locator=\"true\"/>\r\n    <row agent=\"Sacuttaere Chasmiot\" agentid=\"3009756\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"2\" locationid=\"60011380\" locator=\"false\"/>\r\n    <row agent=\"Comeniennan Charteau\" agentid=\"3009757\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"4\" locationid=\"60011383\" locator=\"false\"/>\r\n    <row agent=\"Aestou Croubs\" agentid=\"3009758\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011434\" locator=\"false\"/>\r\n    <row agent=\"Baust Alanckbrault\" agentid=\"3009759\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011440\" locator=\"false\"/>\r\n    <row agent=\"Covais Audadet\" agentid=\"3009760\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"2\" locationid=\"60011437\" locator=\"false\"/>\r\n    <row agent=\"Bresent Aussier\" agentid=\"3009761\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"24\" level=\"1\" locationid=\"60011410\" locator=\"false\"/>\r\n    <row agent=\"Elaille Rounon\" agentid=\"3009762\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"4\" locationid=\"60011407\" locator=\"true\"/>\r\n    <row agent=\"Egheyns Vrierbins\" agentid=\"3009763\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"24\" level=\"1\" locationid=\"60011413\" locator=\"false\"/>\r\n    <row agent=\"Blies Atte\" agentid=\"3009764\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"2\" locationid=\"60011431\" locator=\"true\"/>\r\n    <row agent=\"Presetin Phinenes\" agentid=\"3009765\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"4\" locationid=\"60011425\" locator=\"false\"/>\r\n    <row agent=\"Ayse Marnelelle\" agentid=\"3009766\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"2\" locationid=\"60011428\" locator=\"true\"/>\r\n    <row agent=\"Armaine Herene\" agentid=\"3009767\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011455\" locator=\"false\"/>\r\n    <row agent=\"Yndt Marirscard\" agentid=\"3009768\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"4\" locationid=\"60011458\" locator=\"false\"/>\r\n    <row agent=\"Atlycet Gillahuene\" agentid=\"3009769\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"3\" locationid=\"60011452\" locator=\"false\"/>\r\n    <row agent=\"Cacottet Daruelet\" agentid=\"3009770\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"2\" locationid=\"60011416\" locator=\"false\"/>\r\n    <row agent=\"Varsters Aleyde\" agentid=\"3009771\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"2\" locationid=\"60011422\" locator=\"false\"/>\r\n    <row agent=\"Mort Harner\" agentid=\"3009772\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011419\" locator=\"true\"/>\r\n    <row agent=\"Ophelame Aubalin\" agentid=\"3009773\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"22\" level=\"1\" locationid=\"60011506\" locator=\"false\"/>\r\n    <row agent=\"Jayenne Orvere\" agentid=\"3009774\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"22\" level=\"2\" locationid=\"60011542\" locator=\"false\"/>\r\n    <row agent=\"Aubulle Maimanne\" agentid=\"3009775\" agenttypeid=\"8\" corporationid=\"1000114\" divisionid=\"22\" level=\"5\" locationid=\"60011545\" locator=\"false\"/>\r\n    <row agent=\"Andt Ossche\" agentid=\"3009776\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"24\" level=\"1\" locationid=\"60011554\" locator=\"false\"/>\r\n    <row agent=\"Olotiers Karroux\" agentid=\"3009777\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"24\" level=\"1\" locationid=\"60011557\" locator=\"false\"/>\r\n    <row agent=\"Assoi Ekelane\" agentid=\"3009778\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"24\" level=\"4\" locationid=\"60011509\" locator=\"false\"/>\r\n    <row agent=\"Vydreris Henneque\" agentid=\"3009779\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"22\" level=\"2\" locationid=\"60011548\" locator=\"false\"/>\r\n    <row agent=\"Cauvers Bris\" agentid=\"3009780\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"22\" level=\"3\" locationid=\"60011551\" locator=\"false\"/>\r\n    <row agent=\"Albatoulon Blaerd\" agentid=\"3009781\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"22\" level=\"1\" locationid=\"60011512\" locator=\"false\"/>\r\n    <row agent=\"Coleeres Avocort\" agentid=\"3009782\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"22\" level=\"4\" locationid=\"60011515\" locator=\"true\"/>\r\n    <row agent=\"Boulbrens Keirevardt\" agentid=\"3009783\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"22\" level=\"1\" locationid=\"60011536\" locator=\"false\"/>\r\n    <row agent=\"Hompserain Avais\" agentid=\"3009784\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"22\" level=\"2\" locationid=\"60011539\" locator=\"false\"/>\r\n    <row agent=\"Groun Sintchrottier\" agentid=\"3009785\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"22\" level=\"4\" locationid=\"60011524\" locator=\"false\"/>\r\n    <row agent=\"Nulia Holle\" agentid=\"3009786\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"24\" level=\"2\" locationid=\"60011527\" locator=\"false\"/>\r\n    <row agent=\"Echarbins Lelaert\" agentid=\"3009787\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"24\" level=\"4\" locationid=\"60011530\" locator=\"true\"/>\r\n    <row agent=\"Agrenienes Zumpbaerse\" agentid=\"3009788\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"24\" level=\"4\" locationid=\"60011533\" locator=\"false\"/>\r\n    <row agent=\"Garecque Lyndroutte\" agentid=\"3009789\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"22\" level=\"1\" locationid=\"60011521\" locator=\"false\"/>\r\n    <row agent=\"Gictes Archeralle\" agentid=\"3009790\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"22\" level=\"3\" locationid=\"60011518\" locator=\"false\"/>\r\n    <row agent=\"Lexmoreau Oloure\" agentid=\"3009791\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"22\" level=\"3\" locationid=\"60011560\" locator=\"false\"/>\r\n    <row agent=\"Trititel Elarerie\" agentid=\"3009792\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"22\" level=\"2\" locationid=\"60011563\" locator=\"true\"/>\r\n    <row agent=\"Austant Lange\" agentid=\"3009793\" agenttypeid=\"3\" corporationid=\"1000115\" divisionid=\"22\" level=\"1\" locationid=\"60011566\" locator=\"false\"/>\r\n    <row agent=\"Auzue Estisen\" agentid=\"3009794\" agenttypeid=\"2\" corporationid=\"1000115\" divisionid=\"22\" level=\"4\" locationid=\"60011584\" locator=\"false\"/>\r\n    <row agent=\"Megnyve Charis\" agentid=\"3009795\" agenttypeid=\"8\" corporationid=\"1000115\" divisionid=\"22\" level=\"5\" locationid=\"60011593\" locator=\"false\"/>\r\n    <row agent=\"Ancye Egghonelle\" agentid=\"3009796\" agenttypeid=\"2\" corporationid=\"1000115\" divisionid=\"22\" level=\"1\" locationid=\"60011578\" locator=\"false\"/>\r\n    <row agent=\"Huvertet Cherore\" agentid=\"3009797\" agenttypeid=\"2\" corporationid=\"1000115\" divisionid=\"22\" level=\"3\" locationid=\"60011569\" locator=\"false\"/>\r\n    <row agent=\"Baider Austret\" agentid=\"3009798\" agenttypeid=\"2\" corporationid=\"1000115\" divisionid=\"22\" level=\"4\" locationid=\"60011572\" locator=\"false\"/>\r\n    <row agent=\"Muvinare Enins\" agentid=\"3009799\" agenttypeid=\"2\" corporationid=\"1000115\" divisionid=\"22\" level=\"2\" locationid=\"60011590\" locator=\"true\"/>\r\n    <row agent=\"Afretleroy Olarault\" agentid=\"3009800\" agenttypeid=\"2\" corporationid=\"1000115\" divisionid=\"22\" level=\"1\" locationid=\"60011590\" locator=\"true\"/>\r\n    <row agent=\"Plose Oraneles\" agentid=\"3009801\" agenttypeid=\"2\" corporationid=\"1000115\" divisionid=\"22\" level=\"2\" locationid=\"60011581\" locator=\"false\"/>\r\n    <row agent=\"Rirvelan Cyrynier\" agentid=\"3009802\" agenttypeid=\"2\" corporationid=\"1000115\" divisionid=\"22\" level=\"1\" locationid=\"60011587\" locator=\"false\"/>\r\n    <row agent=\"Wadis Chene\" agentid=\"3009803\" agenttypeid=\"2\" corporationid=\"1000116\" divisionid=\"22\" level=\"4\" locationid=\"60011599\" locator=\"true\"/>\r\n    <row agent=\"Aydefroy Brechalle\" agentid=\"3009804\" agenttypeid=\"2\" corporationid=\"1000117\" divisionid=\"22\" level=\"4\" locationid=\"60011605\" locator=\"false\"/>\r\n    <row agent=\"Noettirekel Ysorancke\" agentid=\"3009805\" agenttypeid=\"2\" corporationid=\"1000118\" divisionid=\"22\" level=\"4\" locationid=\"60011611\" locator=\"false\"/>\r\n    <row agent=\"Olanne Grasternes\" agentid=\"3009806\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"1\" locationid=\"60011614\" locator=\"true\"/>\r\n    <row agent=\"Duhotolie Wicilla\" agentid=\"3009807\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"2\" locationid=\"60011716\" locator=\"false\"/>\r\n    <row agent=\"Arnadelau Auvergne\" agentid=\"3009808\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"1\" locationid=\"60011713\" locator=\"false\"/>\r\n    <row agent=\"Alarancke Vesnync\" agentid=\"3009809\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"3\" locationid=\"60011710\" locator=\"true\"/>\r\n    <row agent=\"Bay Baul\" agentid=\"3009810\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"1\" locationid=\"60011719\" locator=\"false\"/>\r\n    <row agent=\"Hampuere Ambrea\" agentid=\"3009811\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"1\" locationid=\"60011677\" locator=\"false\"/>\r\n    <row agent=\"Dellerite Auffrel\" agentid=\"3009812\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"3\" locationid=\"60011680\" locator=\"true\"/>\r\n    <row agent=\"Arsant Acke\" agentid=\"3009813\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"3\" locationid=\"60011683\" locator=\"false\"/>\r\n    <row agent=\"Rattinck Elelleem\" agentid=\"3009814\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"1\" locationid=\"60011674\" locator=\"false\"/>\r\n    <row agent=\"Astoirron Carrenner\" agentid=\"3009815\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"3\" locationid=\"60011626\" locator=\"false\"/>\r\n    <row agent=\"Ayne Prerie\" agentid=\"3009816\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"2\" locationid=\"60011629\" locator=\"true\"/>\r\n    <row agent=\"Patier Eyron\" agentid=\"3009817\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"1\" locationid=\"60011632\" locator=\"false\"/>\r\n    <row agent=\"Vlalesette Vocque\" agentid=\"3009818\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"1\" locationid=\"60011635\" locator=\"false\"/>\r\n    <row agent=\"Launsier Laye\" agentid=\"3009819\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"4\" locationid=\"60011689\" locator=\"true\"/>\r\n    <row agent=\"Eglournel Tevore\" agentid=\"3009820\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"2\" locationid=\"60011686\" locator=\"true\"/>\r\n    <row agent=\"Alomas Acent\" agentid=\"3009821\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"2\" locationid=\"60011695\" locator=\"true\"/>\r\n    <row agent=\"Mervelaert Pattasel\" agentid=\"3009822\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"3\" locationid=\"60011692\" locator=\"false\"/>\r\n    <row agent=\"Loot Astyroure\" agentid=\"3009823\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"4\" locationid=\"60011659\" locator=\"true\"/>\r\n    <row agent=\"Arnollin Bribert\" agentid=\"3009824\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"3\" locationid=\"60011656\" locator=\"false\"/>\r\n    <row agent=\"Jorerout Aunon\" agentid=\"3009825\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"4\" locationid=\"60011650\" locator=\"true\"/>\r\n    <row agent=\"Zanisale Virrelina\" agentid=\"3009826\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"4\" locationid=\"60011653\" locator=\"true\"/>\r\n    <row agent=\"Pocrel Ornargot\" agentid=\"3009827\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"3\" locationid=\"60011701\" locator=\"true\"/>\r\n    <row agent=\"Maulckaert Reysetouttes\" agentid=\"3009828\" agenttypeid=\"8\" corporationid=\"1000119\" divisionid=\"22\" level=\"5\" locationid=\"60011707\" locator=\"false\"/>\r\n    <row agent=\"Madelanda Parblagas\" agentid=\"3009829\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"4\" locationid=\"60011704\" locator=\"false\"/>\r\n    <row agent=\"Larsch Braut\" agentid=\"3009830\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"1\" locationid=\"60011698\" locator=\"false\"/>\r\n    <row agent=\"Lame Hetymmon\" agentid=\"3009831\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"3\" locationid=\"60011641\" locator=\"false\"/>\r\n    <row agent=\"Egliller Dasbrulier\" agentid=\"3009832\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"4\" locationid=\"60011644\" locator=\"true\"/>\r\n    <row agent=\"Osmarbon Impsie\" agentid=\"3009833\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"3\" locationid=\"60011638\" locator=\"true\"/>\r\n    <row agent=\"Awel Emmalaute\" agentid=\"3009834\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"4\" locationid=\"60011647\" locator=\"true\"/>\r\n    <row agent=\"Assalurie Voilidier\" agentid=\"3009835\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"3\" locationid=\"60011731\" locator=\"false\"/>\r\n    <row agent=\"Starella Alakaert\" agentid=\"3009836\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"3\" locationid=\"60011722\" locator=\"true\"/>\r\n    <row agent=\"Amanckbrault Octienne\" agentid=\"3009837\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"2\" locationid=\"60011725\" locator=\"false\"/>\r\n    <row agent=\"Vysena Cavin\" agentid=\"3009838\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"4\" locationid=\"60011728\" locator=\"true\"/>\r\n    <row agent=\"Eloede Ambekel\" agentid=\"3009839\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"1\" locationid=\"60011617\" locator=\"false\"/>\r\n    <row agent=\"Anchave Vienlomandie\" agentid=\"3009840\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"2\" locationid=\"60011623\" locator=\"false\"/>\r\n    <row agent=\"Pausent Ansin\" agentid=\"3009841\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"2\" locationid=\"60011620\" locator=\"true\"/>\r\n    <row agent=\"Lorchaert Schend\" agentid=\"3009842\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"3\" locationid=\"60011662\" locator=\"false\"/>\r\n    <row agent=\"Aurelie Orvinelle\" agentid=\"3009843\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"2\" locationid=\"60011665\" locator=\"true\"/>\r\n    <row agent=\"Alocenet Arnelon\" agentid=\"3009844\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"1\" locationid=\"60011668\" locator=\"false\"/>\r\n    <row agent=\"Atlay Arand\" agentid=\"3009845\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"3\" locationid=\"60011671\" locator=\"true\"/>\r\n    <row agent=\"Charie Octienne\" agentid=\"3009846\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011734\" locator=\"false\"/>\r\n    <row agent=\"Amieu Eynie\" agentid=\"3009847\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011788\" locator=\"false\"/>\r\n    <row agent=\"Houruene Mocaraille\" agentid=\"3009848\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"22\" level=\"4\" locationid=\"60011797\" locator=\"false\"/>\r\n    <row agent=\"Yhou Ekarnard\" agentid=\"3009849\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"3\" locationid=\"60011800\" locator=\"false\"/>\r\n    <row agent=\"Paiesint Juritte\" agentid=\"3009850\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"22\" level=\"4\" locationid=\"60011794\" locator=\"true\"/>\r\n    <row agent=\"Blalt Appoi\" agentid=\"3009851\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"4\" locationid=\"60011791\" locator=\"false\"/>\r\n    <row agent=\"Omune Rilleririan\" agentid=\"3009852\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"3\" locationid=\"60011803\" locator=\"true\"/>\r\n    <row agent=\"Erocque Fintere\" agentid=\"3009853\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011848\" locator=\"false\"/>\r\n    <row agent=\"Amarulyn Carnoirese\" agentid=\"3009854\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"3\" locationid=\"60011854\" locator=\"true\"/>\r\n    <row agent=\"Befstey Bourd\" agentid=\"3009855\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"3\" locationid=\"60011857\" locator=\"false\"/>\r\n    <row agent=\"Javenins Angelle\" agentid=\"3009856\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011851\" locator=\"true\"/>\r\n    <row agent=\"Poucke Ourd\" agentid=\"3009857\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011842\" locator=\"true\"/>\r\n    <row agent=\"Brinalle Noutte\" agentid=\"3009858\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"4\" locationid=\"60011887\" locator=\"true\"/>\r\n    <row agent=\"Alync Oraveval\" agentid=\"3009859\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011752\" locator=\"false\"/>\r\n    <row agent=\"Omesere Gaunellieu\" agentid=\"3009860\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"22\" level=\"2\" locationid=\"60011755\" locator=\"false\"/>\r\n    <row agent=\"Stans Callor\" agentid=\"3009861\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"4\" locationid=\"60011761\" locator=\"false\"/>\r\n    <row agent=\"Asly Tarmas\" agentid=\"3009862\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"22\" level=\"1\" locationid=\"60011764\" locator=\"false\"/>\r\n    <row agent=\"Indt Aimeguier\" agentid=\"3009863\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011758\" locator=\"true\"/>\r\n    <row agent=\"Ansonelle Parts\" agentid=\"3009864\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011767\" locator=\"false\"/>\r\n    <row agent=\"Houre Hazaerdt\" agentid=\"3009865\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011812\" locator=\"false\"/>\r\n    <row agent=\"Buroghe Vanaillot\" agentid=\"3009866\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011818\" locator=\"false\"/>\r\n    <row agent=\"Dusene Alirener\" agentid=\"3009867\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011809\" locator=\"false\"/>\r\n    <row agent=\"Iluelle Oloque\" agentid=\"3009868\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"3\" locationid=\"60011815\" locator=\"true\"/>\r\n    <row agent=\"Pontryvel Borgier\" agentid=\"3009869\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"4\" locationid=\"60011806\" locator=\"true\"/>\r\n    <row agent=\"Afruvin Angenger\" agentid=\"3009870\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011821\" locator=\"false\"/>\r\n    <row agent=\"Hoo Ghes\" agentid=\"3009871\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011893\" locator=\"false\"/>\r\n    <row agent=\"Helbrorand Segengiere\" agentid=\"3009872\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011878\" locator=\"false\"/>\r\n    <row agent=\"Aidarard Achatin\" agentid=\"3009873\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011890\" locator=\"false\"/>\r\n    <row agent=\"Maison Orinonet\" agentid=\"3009874\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"4\" locationid=\"60011881\" locator=\"false\"/>\r\n    <row agent=\"Baesen Gre\" agentid=\"3009875\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011884\" locator=\"false\"/>\r\n    <row agent=\"Destaseke Zertavenne\" agentid=\"3009876\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"4\" locationid=\"60011887\" locator=\"true\"/>\r\n    <row agent=\"Wimpes Airou\" agentid=\"3009877\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011770\" locator=\"true\"/>\r\n    <row agent=\"Tostrere Allelare\" agentid=\"3009878\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"22\" level=\"2\" locationid=\"60011782\" locator=\"true\"/>\r\n    <row agent=\"Ruerrotta Cins\" agentid=\"3009879\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011779\" locator=\"false\"/>\r\n    <row agent=\"Ivalier Agattault\" agentid=\"3009880\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"22\" level=\"1\" locationid=\"60011785\" locator=\"false\"/>\r\n    <row agent=\"Saralle Mammon\" agentid=\"3009881\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011773\" locator=\"false\"/>\r\n    <row agent=\"Gererique Opheles\" agentid=\"3009882\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011776\" locator=\"false\"/>\r\n    <row agent=\"Pillius Douls\" agentid=\"3009883\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011824\" locator=\"false\"/>\r\n    <row agent=\"Acanitte Archeralle\" agentid=\"3009884\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"3\" locationid=\"60011830\" locator=\"true\"/>\r\n    <row agent=\"Cavanard Bolle\" agentid=\"3009885\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011833\" locator=\"false\"/>\r\n    <row agent=\"Dingue Farressent\" agentid=\"3009886\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011836\" locator=\"false\"/>\r\n    <row agent=\"Clanac Aitree\" agentid=\"3009887\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"3\" locationid=\"60011839\" locator=\"false\"/>\r\n    <row agent=\"Anges Vyrier\" agentid=\"3009888\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011827\" locator=\"true\"/>\r\n    <row agent=\"Ardorele Minaeghe\" agentid=\"3009889\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"3\" locationid=\"60011749\" locator=\"true\"/>\r\n    <row agent=\"Dillesse Cloesmant\" agentid=\"3009890\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"22\" level=\"2\" locationid=\"60011746\" locator=\"false\"/>\r\n    <row agent=\"Railbeuse Soeillindre\" agentid=\"3009891\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011737\" locator=\"false\"/>\r\n    <row agent=\"Zwendt Brinalle\" agentid=\"3009892\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011740\" locator=\"false\"/>\r\n    <row agent=\"Pomouber Eyl\" agentid=\"3009893\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011743\" locator=\"true\"/>\r\n    <row agent=\"Saonellieu Baerse\" agentid=\"3009894\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"4\" locationid=\"60011866\" locator=\"true\"/>\r\n    <row agent=\"Thirtirare Allettine\" agentid=\"3009895\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011908\" locator=\"true\"/>\r\n    <row agent=\"Chabaine Orladet\" agentid=\"3009896\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"3\" locationid=\"60011905\" locator=\"true\"/>\r\n    <row agent=\"Stasylace Ambesene\" agentid=\"3009897\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"4\" locationid=\"60011896\" locator=\"true\"/>\r\n    <row agent=\"Anteson Ranchel\" agentid=\"3009898\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"4\" locationid=\"60011902\" locator=\"true\"/>\r\n    <row agent=\"Sunnac Mostetaux\" agentid=\"3009899\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"22\" level=\"1\" locationid=\"60011911\" locator=\"true\"/>\r\n    <row agent=\"Bunarolie Vetanailles\" agentid=\"3009900\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011875\" locator=\"false\"/>\r\n    <row agent=\"Eladette Gelarbese\" agentid=\"3009901\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"3\" locationid=\"60011872\" locator=\"true\"/>\r\n    <row agent=\"Oribelon Grinacanne\" agentid=\"3009903\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"3\" locationid=\"60011860\" locator=\"true\"/>\r\n    <row agent=\"Aide Lerrilla\" agentid=\"3009904\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"22\" level=\"3\" locationid=\"60011863\" locator=\"true\"/>\r\n    <row agent=\"Esate Binck\" agentid=\"3009905\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011869\" locator=\"false\"/>\r\n    <row agent=\"Carane Poi\" agentid=\"3009906\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"1\" locationid=\"60011914\" locator=\"false\"/>\r\n    <row agent=\"Setiges Hustiquier\" agentid=\"3009907\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"3\" locationid=\"60011923\" locator=\"true\"/>\r\n    <row agent=\"Molilier Daneque\" agentid=\"3009908\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"22\" level=\"2\" locationid=\"60011926\" locator=\"false\"/>\r\n    <row agent=\"Ormalon Gien\" agentid=\"3009909\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"3\" locationid=\"60011929\" locator=\"false\"/>\r\n    <row agent=\"Amerique Jostalie\" agentid=\"3009910\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"1\" locationid=\"60011983\" locator=\"true\"/>\r\n    <row agent=\"Lalie Thilriegitte\" agentid=\"3009911\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"2\" locationid=\"60011977\" locator=\"false\"/>\r\n    <row agent=\"Sye Bruelle\" agentid=\"3009912\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"1\" locationid=\"60011980\" locator=\"false\"/>\r\n    <row agent=\"Sois Orsane\" agentid=\"3009913\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"22\" level=\"1\" locationid=\"60011998\" locator=\"true\"/>\r\n    <row agent=\"Harquier Foutte\" agentid=\"3009914\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"1\" locationid=\"60011995\" locator=\"true\"/>\r\n    <row agent=\"Menivare Aleau\" agentid=\"3009915\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"3\" locationid=\"60012001\" locator=\"true\"/>\r\n    <row agent=\"Annaire Oflia\" agentid=\"3009916\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"4\" locationid=\"60011953\" locator=\"true\"/>\r\n    <row agent=\"Chammegestin Allote\" agentid=\"3009917\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"4\" locationid=\"60011950\" locator=\"true\"/>\r\n    <row agent=\"Guynnier Densseurthe\" agentid=\"3009918\" agenttypeid=\"8\" corporationid=\"1000121\" divisionid=\"22\" level=\"5\" locationid=\"60011956\" locator=\"false\"/>\r\n    <row agent=\"Zanere Aertan\" agentid=\"3009919\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"22\" level=\"1\" locationid=\"60011992\" locator=\"false\"/>\r\n    <row agent=\"Reynon Aret\" agentid=\"3009920\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"1\" locationid=\"60011989\" locator=\"false\"/>\r\n    <row agent=\"Farcon Fitte\" agentid=\"3009921\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"3\" locationid=\"60011986\" locator=\"true\"/>\r\n    <row agent=\"Emmeget Athonise\" agentid=\"3009922\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"1\" locationid=\"60011917\" locator=\"false\"/>\r\n    <row agent=\"Rerlerante Aute\" agentid=\"3009923\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"2\" locationid=\"60011920\" locator=\"false\"/>\r\n    <row agent=\"Bustene Detere\" agentid=\"3009924\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"2\" locationid=\"60011935\" locator=\"true\"/>\r\n    <row agent=\"Essongeria Dhaserulle\" agentid=\"3009925\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"2\" locationid=\"60011932\" locator=\"true\"/>\r\n    <row agent=\"Ophollise Eura\" agentid=\"3009926\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"2\" locationid=\"60011938\" locator=\"true\"/>\r\n    <row agent=\"Bolbaert Ervier\" agentid=\"3009929\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"2\" locationid=\"60011971\" locator=\"true\"/>\r\n    <row agent=\"Azotte Lornache\" agentid=\"3009930\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"2\" locationid=\"60011941\" locator=\"true\"/>\r\n    <row agent=\"Rarcannync Hualeritte\" agentid=\"3009931\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"3\" locationid=\"60011944\" locator=\"true\"/>\r\n    <row agent=\"Essana Crue\" agentid=\"3009932\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"1\" locationid=\"60011947\" locator=\"true\"/>\r\n    <row agent=\"Ennard Famparault\" agentid=\"3009933\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"2\" locationid=\"60011965\" locator=\"true\"/>\r\n    <row agent=\"Ghonvet Edmelles\" agentid=\"3009934\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"3\" locationid=\"60011959\" locator=\"false\"/>\r\n    <row agent=\"Etoure Chaere\" agentid=\"3009935\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"22\" level=\"2\" locationid=\"60011962\" locator=\"false\"/>\r\n    <row agent=\"Brune Fallakin\" agentid=\"3009936\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"1\" locationid=\"60012004\" locator=\"false\"/>\r\n    <row agent=\"Asent Arresel\" agentid=\"3009937\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"2\" locationid=\"60012034\" locator=\"true\"/>\r\n    <row agent=\"Municlune Enault\" agentid=\"3009938\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"2\" locationid=\"60012031\" locator=\"false\"/>\r\n    <row agent=\"Aynstie Aulleem\" agentid=\"3009939\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"1\" locationid=\"60012037\" locator=\"false\"/>\r\n    <row agent=\"Esourdaris Adodoure\" agentid=\"3009940\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"3\" locationid=\"60012028\" locator=\"false\"/>\r\n    <row agent=\"Flelirrere Lhuillorelle\" agentid=\"3009941\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"4\" locationid=\"60012043\" locator=\"true\"/>\r\n    <row agent=\"Girmilaere Enault\" agentid=\"3009942\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"2\" locationid=\"60012046\" locator=\"true\"/>\r\n    <row agent=\"Omeres Ralielan\" agentid=\"3009943\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"2\" locationid=\"60012040\" locator=\"false\"/>\r\n    <row agent=\"Kaspette Octiren\" agentid=\"3009944\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"1\" locationid=\"60012049\" locator=\"true\"/>\r\n    <row agent=\"Alebeke Searbene\" agentid=\"3009945\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"1\" locationid=\"60012112\" locator=\"true\"/>\r\n    <row agent=\"Alubbin Achasse\" agentid=\"3009946\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"1\" locationid=\"60012118\" locator=\"false\"/>\r\n    <row agent=\"Gerner Ahrasire\" agentid=\"3009947\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"2\" locationid=\"60012121\" locator=\"false\"/>\r\n    <row agent=\"Olain Bambelard\" agentid=\"3009948\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"2\" locationid=\"60012115\" locator=\"true\"/>\r\n    <row agent=\"Fanason Xalotte\" agentid=\"3009949\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"4\" locationid=\"60012061\" locator=\"true\"/>\r\n    <row agent=\"Autet Therckosiere\" agentid=\"3009950\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"2\" locationid=\"60012055\" locator=\"true\"/>\r\n    <row agent=\"Gitille Agraton\" agentid=\"3009951\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"1\" locationid=\"60012058\" locator=\"false\"/>\r\n    <row agent=\"Tarthelois Davreche\" agentid=\"3009952\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"2\" locationid=\"60012052\" locator=\"true\"/>\r\n    <row agent=\"Odencia Oustrain\" agentid=\"3009953\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"1\" locationid=\"60012076\" locator=\"true\"/>\r\n    <row agent=\"Fomidoorne Esseron\" agentid=\"3009954\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"4\" locationid=\"60012079\" locator=\"true\"/>\r\n    <row agent=\"Miere Inghetoirin\" agentid=\"3009955\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"2\" locationid=\"60012082\" locator=\"true\"/>\r\n    <row agent=\"Galapon Jumarckonchel\" agentid=\"3009956\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"3\" locationid=\"60012085\" locator=\"true\"/>\r\n    <row agent=\"Arnanthyn Balelle\" agentid=\"3009957\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"2\" locationid=\"60012016\" locator=\"false\"/>\r\n    <row agent=\"Yvarie Bubadairpes\" agentid=\"3009958\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"2\" locationid=\"60012019\" locator=\"true\"/>\r\n    <row agent=\"Stie Quellirance\" agentid=\"3009959\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"3\" locationid=\"60012025\" locator=\"false\"/>\r\n    <row agent=\"Amenckbraert Gettenonier\" agentid=\"3009960\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"2\" locationid=\"60012022\" locator=\"false\"/>\r\n    <row agent=\"Mallon Charteau\" agentid=\"3009961\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"3\" locationid=\"60012091\" locator=\"true\"/>\r\n    <row agent=\"Goins Mide\" agentid=\"3009962\" agenttypeid=\"8\" corporationid=\"1000122\" divisionid=\"22\" level=\"5\" locationid=\"60012088\" locator=\"false\"/>\r\n    <row agent=\"Fleullare Losschyve\" agentid=\"3009963\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"2\" locationid=\"60012094\" locator=\"true\"/>\r\n    <row agent=\"Sirmiene Claussesnard\" agentid=\"3009964\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"2\" locationid=\"60012097\" locator=\"false\"/>\r\n    <row agent=\"Lancis Aurtin\" agentid=\"3009965\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"1\" locationid=\"60012007\" locator=\"true\"/>\r\n    <row agent=\"Acia Coul\" agentid=\"3009967\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"2\" locationid=\"60012010\" locator=\"true\"/>\r\n    <row agent=\"Argnie Masnet\" agentid=\"3009968\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"2\" locationid=\"60012067\" locator=\"false\"/>\r\n    <row agent=\"Aelleem Ferettain\" agentid=\"3009969\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"2\" locationid=\"60012070\" locator=\"false\"/>\r\n    <row agent=\"Ageins Bonailles\" agentid=\"3009970\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"2\" locationid=\"60012073\" locator=\"false\"/>\r\n    <row agent=\"Maullidybel Metlirene\" agentid=\"3009971\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"1\" locationid=\"60012064\" locator=\"true\"/>\r\n    <row agent=\"Auvy Aurch\" agentid=\"3009972\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"1\" locationid=\"60012109\" locator=\"true\"/>\r\n    <row agent=\"Alene Guirmeranes\" agentid=\"3009973\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"1\" locationid=\"60012103\" locator=\"false\"/>\r\n    <row agent=\"Ghyrlelle Aydeguier\" agentid=\"3009974\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"2\" locationid=\"60012100\" locator=\"true\"/>\r\n    <row agent=\"Syrrole Wrumps\" agentid=\"3009975\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"4\" locationid=\"60012106\" locator=\"true\"/>\r\n    <row agent=\"Kobernulf Monnur\" agentid=\"3009976\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"1\" locationid=\"60012124\" locator=\"false\"/>\r\n    <row agent=\"Blartulla Eksmon\" agentid=\"3009977\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"2\" locationid=\"60012127\" locator=\"true\"/>\r\n    <row agent=\"Ary Olmeke\" agentid=\"3009978\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"2\" locationid=\"60012154\" locator=\"false\"/>\r\n    <row agent=\"Siddalard Odhidik\" agentid=\"3009979\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"4\" locationid=\"60012157\" locator=\"false\"/>\r\n    <row agent=\"Ilulf Worg\" agentid=\"3009980\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"3\" locationid=\"60012172\" locator=\"false\"/>\r\n    <row agent=\"Halbriden Hettad\" agentid=\"3009981\" agenttypeid=\"8\" corporationid=\"1000123\" divisionid=\"24\" level=\"5\" locationid=\"60012175\" locator=\"false\"/>\r\n    <row agent=\"Ornur Roszurald\" agentid=\"3009982\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"3\" locationid=\"60012163\" locator=\"true\"/>\r\n    <row agent=\"Ons Gubeber\" agentid=\"3009983\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"4\" locationid=\"60012160\" locator=\"false\"/>\r\n    <row agent=\"Hegnedan Aldelrind\" agentid=\"3009984\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"3\" locationid=\"60012148\" locator=\"true\"/>\r\n    <row agent=\"Ealdrekard Tiatesulf\" agentid=\"3009985\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"22\" level=\"3\" locationid=\"60012151\" locator=\"false\"/>\r\n    <row agent=\"Tarine Jatur\" agentid=\"3009986\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"1\" locationid=\"60012169\" locator=\"false\"/>\r\n    <row agent=\"Amukur Wahn\" agentid=\"3009987\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"2\" locationid=\"60012166\" locator=\"false\"/>\r\n    <row agent=\"Navittus Sildbena\" agentid=\"3009988\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"1\" locationid=\"60012145\" locator=\"false\"/>\r\n    <row agent=\"Ilsur Elda\" agentid=\"3009989\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"2\" locationid=\"60012142\" locator=\"true\"/>\r\n    <row agent=\"Notena Jodilur\" agentid=\"3009990\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"2\" locationid=\"60012178\" locator=\"false\"/>\r\n    <row agent=\"Oddirsolf Arnur\" agentid=\"3009991\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"1\" locationid=\"60012181\" locator=\"true\"/>\r\n    <row agent=\"Ladweisur Aldorim\" agentid=\"3009992\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"2\" locationid=\"60012136\" locator=\"false\"/>\r\n    <row agent=\"Sildebetur Aredeborg\" agentid=\"3009993\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"1\" locationid=\"60012139\" locator=\"false\"/>\r\n    <row agent=\"Orward Eolmulf\" agentid=\"3009994\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"4\" locationid=\"60012133\" locator=\"true\"/>\r\n    <row agent=\"Orkar Arnadi\" agentid=\"3009995\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"4\" locationid=\"60012130\" locator=\"true\"/>\r\n    <row agent=\"Tashotsu Verhinila\" agentid=\"3009996\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"1\" locationid=\"60012211\" locator=\"false\"/>\r\n    <row agent=\"Hageken Saasokainen\" agentid=\"3009997\" agenttypeid=\"8\" corporationid=\"1000124\" divisionid=\"24\" level=\"5\" locationid=\"60012187\" locator=\"false\"/>\r\n    <row agent=\"Wins Allever\" agentid=\"3009998\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"4\" locationid=\"60012184\" locator=\"true\"/>\r\n    <row agent=\"Eitasena Annidhar\" agentid=\"3009999\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"4\" locationid=\"60012247\" locator=\"true\"/>\r\n    <row agent=\"Ardarvet Odinier\" agentid=\"3010000\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"4\" locationid=\"60012190\" locator=\"false\"/>\r\n    <row agent=\"Reikka Akatervo\" agentid=\"3010001\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"4\" locationid=\"60012196\" locator=\"true\"/>\r\n    <row agent=\"Menarten Rashagh\" agentid=\"3010002\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"1\" locationid=\"60012250\" locator=\"false\"/>\r\n    <row agent=\"Moiras Olkkena\" agentid=\"3010003\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"2\" locationid=\"60012253\" locator=\"true\"/>\r\n    <row agent=\"Ospold Hjorpauren\" agentid=\"3010004\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"22\" level=\"2\" locationid=\"60012193\" locator=\"false\"/>\r\n    <row agent=\"Gorn Erpidik\" agentid=\"3010005\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"2\" locationid=\"60012199\" locator=\"false\"/>\r\n    <row agent=\"Ardarette Mesbiles\" agentid=\"3010006\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"22\" level=\"4\" locationid=\"60012202\" locator=\"true\"/>\r\n    <row agent=\"Ienola Uokio\" agentid=\"3010007\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"1\" locationid=\"60012205\" locator=\"true\"/>\r\n    <row agent=\"Skiadore Kerane\" agentid=\"3010008\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"1\" locationid=\"60012208\" locator=\"false\"/>\r\n    <row agent=\"Tourtli Hanoure\" agentid=\"3010009\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"3\" locationid=\"60012217\" locator=\"true\"/>\r\n    <row agent=\"Ria Anbell\" agentid=\"3010010\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"1\" locationid=\"60012214\" locator=\"false\"/>\r\n    <row agent=\"Plachotte Ayls\" agentid=\"3010011\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"1\" locationid=\"60012220\" locator=\"false\"/>\r\n    <row agent=\"Pavisailen Kokkumioka\" agentid=\"3010012\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"3\" locationid=\"60012226\" locator=\"true\"/>\r\n    <row agent=\"Salmediad Kanira\" agentid=\"3010013\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"4\" locationid=\"60012223\" locator=\"true\"/>\r\n    <row agent=\"Adens Falet\" agentid=\"3010014\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"3\" locationid=\"60012232\" locator=\"true\"/>\r\n    <row agent=\"Edilkam Silera\" agentid=\"3010015\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"1\" locationid=\"60012235\" locator=\"false\"/>\r\n    <row agent=\"Sirdalada Hantundad\" agentid=\"3010016\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"2\" locationid=\"60012229\" locator=\"false\"/>\r\n    <row agent=\"Haca Reliari\" agentid=\"3010017\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"2\" locationid=\"60012241\" locator=\"false\"/>\r\n    <row agent=\"Haderold Vigraluin\" agentid=\"3010018\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"3\" locationid=\"60012244\" locator=\"true\"/>\r\n    <row agent=\"Emfant Handriveau\" agentid=\"3010019\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"1\" locationid=\"60012238\" locator=\"true\"/>\r\n    <row agent=\"Songilo Kytitta\" agentid=\"3010020\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012256\" locator=\"false\"/>\r\n    <row agent=\"Hutnen Iksoi\" agentid=\"3010021\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"24\" level=\"2\" locationid=\"60012295\" locator=\"false\"/>\r\n    <row agent=\"Uvret Adrallegier\" agentid=\"3010022\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"24\" level=\"2\" locationid=\"60012304\" locator=\"true\"/>\r\n    <row agent=\"Itrauan Edeirik\" agentid=\"3010023\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012328\" locator=\"false\"/>\r\n    <row agent=\"Gothan Anas\" agentid=\"3010025\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012331\" locator=\"false\"/>\r\n    <row agent=\"Kashokada Shintushairos\" agentid=\"3010026\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012340\" locator=\"false\"/>\r\n    <row agent=\"Ambeldere Mittant\" agentid=\"3010027\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012343\" locator=\"false\"/>\r\n    <row agent=\"Uuko Pielen\" agentid=\"3010028\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012334\" locator=\"true\"/>\r\n    <row agent=\"Geld Odling\" agentid=\"3010029\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"4\" locationid=\"60012457\" locator=\"true\"/>\r\n    <row agent=\"Nalenzo Kreust\" agentid=\"3010030\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012460\" locator=\"false\"/>\r\n    <row agent=\"Manzan Ajonar\" agentid=\"3010031\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012454\" locator=\"false\"/>\r\n    <row agent=\"Eastig Gurodur\" agentid=\"3010032\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012469\" locator=\"false\"/>\r\n    <row agent=\"Frirbensdarken Eadwune\" agentid=\"3010033\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012463\" locator=\"false\"/>\r\n    <row agent=\"Igmulf Herenbeier\" agentid=\"3010034\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"3\" locationid=\"60012418\" locator=\"false\"/>\r\n    <row agent=\"Erosund Eurwadur\" agentid=\"3010035\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012430\" locator=\"false\"/>\r\n    <row agent=\"Pyrvanen Orpiainen\" agentid=\"3010036\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012433\" locator=\"false\"/>\r\n    <row agent=\"Kaukera Livala\" agentid=\"3010037\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012421\" locator=\"false\"/>\r\n    <row agent=\"Valganzo Geittikulf\" agentid=\"3010038\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"3\" locationid=\"60012424\" locator=\"false\"/>\r\n    <row agent=\"Martoyou Ioanad\" agentid=\"3010039\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012427\" locator=\"true\"/>\r\n    <row agent=\"Wara Totama\" agentid=\"3010040\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"4\" locationid=\"60012502\" locator=\"true\"/>\r\n    <row agent=\"Kilkkuken Mallen\" agentid=\"3010041\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"24\" level=\"3\" locationid=\"60012490\" locator=\"false\"/>\r\n    <row agent=\"Sau Sefon\" agentid=\"3010042\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"3\" locationid=\"60012499\" locator=\"false\"/>\r\n    <row agent=\"Sisutulf Arvolard\" agentid=\"3010043\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012505\" locator=\"false\"/>\r\n    <row agent=\"Gatinover Etrinn\" agentid=\"3010044\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"24\" level=\"1\" locationid=\"60012496\" locator=\"false\"/>\r\n    <row agent=\"Tiet Ebunden\" agentid=\"3010045\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"3\" locationid=\"60012511\" locator=\"true\"/>\r\n    <row agent=\"Tera Orpela\" agentid=\"3010046\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012514\" locator=\"false\"/>\r\n    <row agent=\"Todgert Soduin\" agentid=\"3010047\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"4\" locationid=\"60012523\" locator=\"true\"/>\r\n    <row agent=\"Ariki Ternamaa\" agentid=\"3010048\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012508\" locator=\"false\"/>\r\n    <row agent=\"Borjer Hiehti\" agentid=\"3010049\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012517\" locator=\"true\"/>\r\n    <row agent=\"Skiatena Lartigen\" agentid=\"3010050\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"3\" locationid=\"60012520\" locator=\"false\"/>\r\n    <row agent=\"Skolokuin Honulf\" agentid=\"3010051\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"4\" locationid=\"60012373\" locator=\"false\"/>\r\n    <row agent=\"Kivas Odaka\" agentid=\"3010052\" agenttypeid=\"8\" corporationid=\"1000125\" divisionid=\"22\" level=\"5\" locationid=\"60012367\" locator=\"false\"/>\r\n    <row agent=\"Jodemund Astuin\" agentid=\"3010053\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"3\" locationid=\"60012370\" locator=\"false\"/>\r\n    <row agent=\"Gutanilfur Vengjengit\" agentid=\"3010054\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"4\" locationid=\"60012379\" locator=\"true\"/>\r\n    <row agent=\"Aranaga Koshi\" agentid=\"3010055\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012364\" locator=\"true\"/>\r\n    <row agent=\"Vohi Mafe\" agentid=\"3010056\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"24\" level=\"2\" locationid=\"60012376\" locator=\"false\"/>\r\n    <row agent=\"Jomiru Nobina\" agentid=\"3010057\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"24\" level=\"1\" locationid=\"60012466\" locator=\"true\"/>\r\n    <row agent=\"Foni Yeeramoun\" agentid=\"3010058\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"3\" locationid=\"60012493\" locator=\"true\"/>\r\n    <row agent=\"Boruet Lhuilon\" agentid=\"3010059\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012355\" locator=\"true\"/>\r\n    <row agent=\"Metienan Otou\" agentid=\"3010060\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"24\" level=\"3\" locationid=\"60012358\" locator=\"false\"/>\r\n    <row agent=\"Okogairos Jaarashin\" agentid=\"3010061\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012361\" locator=\"true\"/>\r\n    <row agent=\"Gabadem Zhikrah\" agentid=\"3010062\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012346\" locator=\"false\"/>\r\n    <row agent=\"Moorve Miradama\" agentid=\"3010063\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"4\" locationid=\"60012349\" locator=\"false\"/>\r\n    <row agent=\"Carcanaques Bytaninck\" agentid=\"3010064\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"24\" level=\"3\" locationid=\"60012352\" locator=\"false\"/>\r\n    <row agent=\"Eydre Arnanotte\" agentid=\"3010065\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012286\" locator=\"true\"/>\r\n    <row agent=\"Kuonamaiken Matsatoh\" agentid=\"3010066\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012277\" locator=\"false\"/>\r\n    <row agent=\"Batjunsur Eurtrik\" agentid=\"3010067\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"24\" level=\"1\" locationid=\"60012289\" locator=\"false\"/>\r\n    <row agent=\"Bish Ponahyai\" agentid=\"3010068\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"3\" locationid=\"60012274\" locator=\"true\"/>\r\n    <row agent=\"Anzillaques Azomiese\" agentid=\"3010069\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"24\" level=\"4\" locationid=\"60012283\" locator=\"false\"/>\r\n    <row agent=\"Kagumada Uemiras\" agentid=\"3010070\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012439\" locator=\"false\"/>\r\n    <row agent=\"Bemmneke Olilmod\" agentid=\"3010071\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"3\" locationid=\"60012442\" locator=\"false\"/>\r\n    <row agent=\"Lola Perame\" agentid=\"3010072\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"3\" locationid=\"60012445\" locator=\"false\"/>\r\n    <row agent=\"Aedalard Armin\" agentid=\"3010073\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012448\" locator=\"true\"/>\r\n    <row agent=\"Obara Yoemoro\" agentid=\"3010074\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012451\" locator=\"false\"/>\r\n    <row agent=\"Mizzerba Jeket\" agentid=\"3010075\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012436\" locator=\"true\"/>\r\n    <row agent=\"Ende Ingvalara\" agentid=\"3010076\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012406\" locator=\"false\"/>\r\n    <row agent=\"Pekkakaanen Teromaki\" agentid=\"3010077\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"3\" locationid=\"60012409\" locator=\"false\"/>\r\n    <row agent=\"Eunon Hey\" agentid=\"3010078\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"24\" level=\"1\" locationid=\"60012400\" locator=\"false\"/>\r\n    <row agent=\"Feik Trirtulfruldin\" agentid=\"3010079\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012415\" locator=\"false\"/>\r\n    <row agent=\"Ohaa Venichino\" agentid=\"3010080\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012280\" locator=\"false\"/>\r\n    <row agent=\"Modaze Ganidil\" agentid=\"3010081\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012403\" locator=\"false\"/>\r\n    <row agent=\"Bavash Nargika\" agentid=\"3010082\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012412\" locator=\"false\"/>\r\n    <row agent=\"Tenemel Mosteve\" agentid=\"3010083\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012382\" locator=\"false\"/>\r\n    <row agent=\"Eilbavik Ornhar\" agentid=\"3010084\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"3\" locationid=\"60012394\" locator=\"false\"/>\r\n    <row agent=\"Iemola Ueshagi\" agentid=\"3010085\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012391\" locator=\"false\"/>\r\n    <row agent=\"Hongalar Audurleinn\" agentid=\"3010086\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"24\" level=\"3\" locationid=\"60012385\" locator=\"false\"/>\r\n    <row agent=\"Sveruvard Smilfdolt\" agentid=\"3010087\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012397\" locator=\"false\"/>\r\n    <row agent=\"Allain Chrisnelleur\" agentid=\"3010088\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"24\" level=\"1\" locationid=\"60012388\" locator=\"false\"/>\r\n    <row agent=\"Gefa Joamma\" agentid=\"3010089\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"4\" locationid=\"60012484\" locator=\"false\"/>\r\n    <row agent=\"Aroshi Tammesaiken\" agentid=\"3010090\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"24\" level=\"3\" locationid=\"60012475\" locator=\"false\"/>\r\n    <row agent=\"Nerid Thasinaz\" agentid=\"3010091\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012487\" locator=\"true\"/>\r\n    <row agent=\"Alakgur Arnmalber\" agentid=\"3010092\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012271\" locator=\"false\"/>\r\n    <row agent=\"Atad Sosteinn\" agentid=\"3010093\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012472\" locator=\"false\"/>\r\n    <row agent=\"Emiron Odigron\" agentid=\"3010094\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012478\" locator=\"false\"/>\r\n    <row agent=\"Iijanairos Oishansen\" agentid=\"3010095\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"3\" locationid=\"60012481\" locator=\"true\"/>\r\n    <row agent=\"Shahshin Bourz\" agentid=\"3010096\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012265\" locator=\"false\"/>\r\n    <row agent=\"Shikuras Wikevas\" agentid=\"3010097\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012268\" locator=\"false\"/>\r\n    <row agent=\"Ventfin Allerdirier\" agentid=\"3010098\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"24\" level=\"2\" locationid=\"60012259\" locator=\"true\"/>\r\n    <row agent=\"Henelain Aradoh\" agentid=\"3010099\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012262\" locator=\"false\"/>\r\n    <row agent=\"Erazako Steltbulfer\" agentid=\"3010100\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"24\" level=\"2\" locationid=\"60012307\" locator=\"false\"/>\r\n    <row agent=\"Joshoun Harafa\" agentid=\"3010101\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"24\" level=\"1\" locationid=\"60012292\" locator=\"false\"/>\r\n    <row agent=\"Armulf Ozelbreinn\" agentid=\"3010102\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012298\" locator=\"false\"/>\r\n    <row agent=\"Darwaedur Abeildefder\" agentid=\"3010103\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"24\" level=\"1\" locationid=\"60012301\" locator=\"false\"/>\r\n    <row agent=\"Arasat Afuan\" agentid=\"3010104\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"24\" level=\"2\" locationid=\"60012313\" locator=\"false\"/>\r\n    <row agent=\"Palkiba Jakri\" agentid=\"3010105\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"24\" level=\"2\" locationid=\"60012322\" locator=\"true\"/>\r\n    <row agent=\"Onga Adosede\" agentid=\"3010106\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"3\" locationid=\"60012310\" locator=\"false\"/>\r\n    <row agent=\"Nievaken Onula\" agentid=\"3010107\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012316\" locator=\"false\"/>\r\n    <row agent=\"Agattault Gerleset\" agentid=\"3010108\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012319\" locator=\"false\"/>\r\n    <row agent=\"Purodagas Ponto\" agentid=\"3010109\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012325\" locator=\"false\"/>\r\n    <row agent=\"Alfroren Agitta\" agentid=\"3010110\" agenttypeid=\"2\" corporationid=\"1000126\" divisionid=\"24\" level=\"1\" locationid=\"60012526\" locator=\"false\"/>\r\n    <row agent=\"Olgard Krur\" agentid=\"3010111\" agenttypeid=\"8\" corporationid=\"1000126\" divisionid=\"24\" level=\"5\" locationid=\"60012547\" locator=\"false\"/>\r\n    <row agent=\"Lulmuna Eilirmuald\" agentid=\"3010112\" agenttypeid=\"2\" corporationid=\"1000126\" divisionid=\"22\" level=\"4\" locationid=\"60012541\" locator=\"false\"/>\r\n    <row agent=\"Ellinald Afagnus\" agentid=\"3010113\" agenttypeid=\"2\" corporationid=\"1000126\" divisionid=\"22\" level=\"1\" locationid=\"60012544\" locator=\"false\"/>\r\n    <row agent=\"Hendik Golmuald\" agentid=\"3010114\" agenttypeid=\"2\" corporationid=\"1000126\" divisionid=\"24\" level=\"1\" locationid=\"60012535\" locator=\"false\"/>\r\n    <row agent=\"Imulia Aeduin\" agentid=\"3010115\" agenttypeid=\"2\" corporationid=\"1000126\" divisionid=\"24\" level=\"3\" locationid=\"60012529\" locator=\"true\"/>\r\n    <row agent=\"Adamegod Krizokil\" agentid=\"3010116\" agenttypeid=\"2\" corporationid=\"1000126\" divisionid=\"22\" level=\"2\" locationid=\"60012532\" locator=\"false\"/>\r\n    <row agent=\"Baud Alradulf\" agentid=\"3010117\" agenttypeid=\"2\" corporationid=\"1000126\" divisionid=\"24\" level=\"1\" locationid=\"60012538\" locator=\"false\"/>\r\n    <row agent=\"Beomilar Brettirdur\" agentid=\"3010118\" agenttypeid=\"2\" corporationid=\"1000126\" divisionid=\"24\" level=\"2\" locationid=\"60012553\" locator=\"false\"/>\r\n    <row agent=\"Avren Atune\" agentid=\"3010119\" agenttypeid=\"2\" corporationid=\"1000126\" divisionid=\"22\" level=\"3\" locationid=\"60012550\" locator=\"false\"/>\r\n    <row agent=\"Orvyllerier Allerande\" agentid=\"3010120\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"1\" locationid=\"60012556\" locator=\"false\"/>\r\n    <row agent=\"Penchareel Orlede\" agentid=\"3010121\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"3\" locationid=\"60012559\" locator=\"false\"/>\r\n    <row agent=\"Alsinnave Fanason\" agentid=\"3010122\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"3\" locationid=\"60012577\" locator=\"true\"/>\r\n    <row agent=\"Kaikka Peunato\" agentid=\"3010123\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"4\" locationid=\"60012574\" locator=\"true\"/>\r\n    <row agent=\"Olonashi Kommeras\" agentid=\"3010124\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"4\" locationid=\"60012568\" locator=\"true\"/>\r\n    <row agent=\"Assa Ponto\" agentid=\"3010125\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"2\" locationid=\"60012571\" locator=\"false\"/>\r\n    <row agent=\"Jannanette Brunalle\" agentid=\"3010126\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"22\" level=\"2\" locationid=\"60012565\" locator=\"false\"/>\r\n    <row agent=\"Vepas Minimala\" agentid=\"3010127\" agenttypeid=\"8\" corporationid=\"1000127\" divisionid=\"24\" level=\"5\" locationid=\"60012562\" locator=\"false\"/>\r\n    <row agent=\"Paere Ambelbique\" agentid=\"3010128\" agenttypeid=\"2\" corporationid=\"1000129\" divisionid=\"23\" level=\"1\" locationid=\"60012583\" locator=\"true\"/>\r\n    <row agent=\"Dyettilda Isoulphinan\" agentid=\"3010129\" agenttypeid=\"2\" corporationid=\"1000129\" divisionid=\"22\" level=\"2\" locationid=\"60012586\" locator=\"false\"/>\r\n    <row agent=\"Bougale Baille\" agentid=\"3010130\" agenttypeid=\"2\" corporationid=\"1000129\" divisionid=\"23\" level=\"4\" locationid=\"60012589\" locator=\"true\"/>\r\n    <row agent=\"Arberine Artenne\" agentid=\"3010131\" agenttypeid=\"2\" corporationid=\"1000129\" divisionid=\"23\" level=\"3\" locationid=\"60012592\" locator=\"false\"/>\r\n    <row agent=\"Xarcampeau Afroconte\" agentid=\"3010132\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012595\" locator=\"false\"/>\r\n    <row agent=\"Toraruni Hroitintur\" agentid=\"3010133\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"2\" locationid=\"60012715\" locator=\"false\"/>\r\n    <row agent=\"Onnaja Piri\" agentid=\"3010134\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"2\" locationid=\"60012712\" locator=\"true\"/>\r\n    <row agent=\"Lozdod Pousel\" agentid=\"3010135\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"4\" locationid=\"60012667\" locator=\"true\"/>\r\n    <row agent=\"Ignaman Angidina\" agentid=\"3010136\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"1\" locationid=\"60012670\" locator=\"false\"/>\r\n    <row agent=\"Balmires Agrelins\" agentid=\"3010137\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"2\" locationid=\"60012673\" locator=\"false\"/>\r\n    <row agent=\"Dozales Julake\" agentid=\"3010138\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012622\" locator=\"false\"/>\r\n    <row agent=\"Toukareen Anoosh\" agentid=\"3010139\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"2\" locationid=\"60012628\" locator=\"false\"/>\r\n    <row agent=\"Inesmir Jimud\" agentid=\"3010140\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"4\" locationid=\"60012652\" locator=\"true\"/>\r\n    <row agent=\"Jorredel Xalotte\" agentid=\"3010141\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"1\" locationid=\"60012724\" locator=\"false\"/>\r\n    <row agent=\"Ozadol Narionen\" agentid=\"3010142\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"2\" locationid=\"60012727\" locator=\"false\"/>\r\n    <row agent=\"Wettin Adhar\" agentid=\"3010143\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"2\" locationid=\"60012649\" locator=\"false\"/>\r\n    <row agent=\"Tuivaseiken Sapala\" agentid=\"3010144\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"2\" locationid=\"60012652\" locator=\"false\"/>\r\n    <row agent=\"Dosson Amailly\" agentid=\"3010145\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"2\" locationid=\"60012655\" locator=\"false\"/>\r\n    <row agent=\"Seintah Panaded\" agentid=\"3010146\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"3\" locationid=\"60012631\" locator=\"false\"/>\r\n    <row agent=\"Evertfage Hefreidik\" agentid=\"3010147\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"2\" locationid=\"60012634\" locator=\"false\"/>\r\n    <row agent=\"Arechar Amranin\" agentid=\"3010148\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"2\" locationid=\"60012637\" locator=\"true\"/>\r\n    <row agent=\"Atligner Villousse\" agentid=\"3010149\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012709\" locator=\"true\"/>\r\n    <row agent=\"Obanari Yloken\" agentid=\"3010150\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"2\" locationid=\"60012703\" locator=\"false\"/>\r\n    <row agent=\"Bimener Manissan\" agentid=\"3010151\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012706\" locator=\"false\"/>\r\n    <row agent=\"Essarette Ekay\" agentid=\"3010152\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012688\" locator=\"false\"/>\r\n    <row agent=\"Derraucet Espire\" agentid=\"3010153\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012685\" locator=\"true\"/>\r\n    <row agent=\"Oijelvas Hahjenavas\" agentid=\"3010154\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012691\" locator=\"false\"/>\r\n    <row agent=\"Oishenen Nalvola\" agentid=\"3010155\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"3\" locationid=\"60012658\" locator=\"true\"/>\r\n    <row agent=\"Puon Olkkenen\" agentid=\"3010156\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012661\" locator=\"false\"/>\r\n    <row agent=\"Verk Favasb\" agentid=\"3010157\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"4\" locationid=\"60012664\" locator=\"false\"/>\r\n    <row agent=\"Espetorre Doussiegnes\" agentid=\"3010158\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"3\" locationid=\"60012682\" locator=\"false\"/>\r\n    <row agent=\"Julckeerame Dalledaury\" agentid=\"3010159\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012676\" locator=\"false\"/>\r\n    <row agent=\"Lauld Reinerakin\" agentid=\"3010160\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012679\" locator=\"false\"/>\r\n    <row agent=\"Junkka Aivuken\" agentid=\"3010161\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"1\" locationid=\"60012694\" locator=\"false\"/>\r\n    <row agent=\"Bielaki Siveenna\" agentid=\"3010162\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"2\" locationid=\"60012700\" locator=\"true\"/>\r\n    <row agent=\"Annida Ruokajainen\" agentid=\"3010163\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012697\" locator=\"false\"/>\r\n    <row agent=\"Uadez Gothan\" agentid=\"3010164\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012607\" locator=\"false\"/>\r\n    <row agent=\"Maalna Garkan\" agentid=\"3010165\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"3\" locationid=\"60012604\" locator=\"false\"/>\r\n    <row agent=\"Ishemi Valvas\" agentid=\"3010166\" agenttypeid=\"8\" corporationid=\"1000130\" divisionid=\"24\" level=\"5\" locationid=\"60012610\" locator=\"false\"/>\r\n    <row agent=\"Mekamireki Fedas\" agentid=\"3010167\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"4\" locationid=\"60012613\" locator=\"true\"/>\r\n    <row agent=\"Fliet Duleleur\" agentid=\"3010168\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012616\" locator=\"false\"/>\r\n    <row agent=\"Eglerin Lina\" agentid=\"3010169\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012619\" locator=\"false\"/>\r\n    <row agent=\"Kappas Runjalen\" agentid=\"3010170\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"2\" locationid=\"60012646\" locator=\"true\"/>\r\n    <row agent=\"Honoliri Irhi\" agentid=\"3010171\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"1\" locationid=\"60012643\" locator=\"false\"/>\r\n    <row agent=\"Riavo Neliker\" agentid=\"3010172\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"4\" locationid=\"60012640\" locator=\"false\"/>\r\n    <row agent=\"Auranaras Oitvio\" agentid=\"3010173\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"2\" locationid=\"60012718\" locator=\"false\"/>\r\n    <row agent=\"Vove Apyson\" agentid=\"3010174\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"3\" locationid=\"60012598\" locator=\"false\"/>\r\n    <row agent=\"Abnum Josianta\" agentid=\"3010175\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"3\" locationid=\"60012601\" locator=\"false\"/>\r\n    <row agent=\"Kiljavas Yaskasen\" agentid=\"3010176\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"4\" locationid=\"60012625\" locator=\"true\"/>\r\n    <row agent=\"Audodart Brunckennac\" agentid=\"3010177\" agenttypeid=\"3\" corporationid=\"1000131\" divisionid=\"22\" level=\"1\" locationid=\"60012733\" locator=\"false\"/>\r\n    <row agent=\"Mersinier Attailly\" agentid=\"3010178\" agenttypeid=\"5\" corporationid=\"1000132\" divisionid=\"22\" level=\"2\" locationid=\"60012739\" locator=\"false\"/>\r\n    <row agent=\"Atterin Barrie\" agentid=\"3010179\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"22\" level=\"1\" locationid=\"60012778\" locator=\"false\"/>\r\n    <row agent=\"Ardia Skolf\" agentid=\"3010180\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"22\" level=\"2\" locationid=\"60012742\" locator=\"true\"/>\r\n    <row agent=\"Motain Tesschye\" agentid=\"3010181\" agenttypeid=\"8\" corporationid=\"1000133\" divisionid=\"22\" level=\"5\" locationid=\"60012745\" locator=\"false\"/>\r\n    <row agent=\"Estur Agdald\" agentid=\"3010182\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"24\" level=\"4\" locationid=\"60012748\" locator=\"true\"/>\r\n    <row agent=\"Mante Juttotier\" agentid=\"3010183\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"23\" level=\"4\" locationid=\"60012751\" locator=\"false\"/>\r\n    <row agent=\"Kuun Vakaara\" agentid=\"3010184\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"22\" level=\"3\" locationid=\"60012757\" locator=\"true\"/>\r\n    <row agent=\"Eitu Somo\" agentid=\"3010185\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"23\" level=\"2\" locationid=\"60012754\" locator=\"true\"/>\r\n    <row agent=\"Ayng Pawel\" agentid=\"3010186\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"22\" level=\"2\" locationid=\"60012763\" locator=\"false\"/>\r\n    <row agent=\"Harlania Armand\" agentid=\"3010187\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"22\" level=\"2\" locationid=\"60012760\" locator=\"false\"/>\r\n    <row agent=\"Yomrousi Esarsin\" agentid=\"3010188\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"22\" level=\"2\" locationid=\"60012766\" locator=\"true\"/>\r\n    <row agent=\"Eramaid Yomsion\" agentid=\"3010189\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"23\" level=\"3\" locationid=\"60012769\" locator=\"true\"/>\r\n    <row agent=\"Sutratger Lurbasgi\" agentid=\"3010190\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"22\" level=\"2\" locationid=\"60012772\" locator=\"true\"/>\r\n    <row agent=\"Itkeri Shasai\" agentid=\"3010191\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"22\" level=\"4\" locationid=\"60012775\" locator=\"false\"/>\r\n    <row agent=\"Sassainen Namon\" agentid=\"3010192\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"24\" level=\"4\" locationid=\"60012781\" locator=\"true\"/>\r\n    <row agent=\"Tamabehe Hakesan\" agentid=\"3010193\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"22\" level=\"2\" locationid=\"60012784\" locator=\"true\"/>\r\n    <row agent=\"Otsusen Isseras\" agentid=\"3010194\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"23\" level=\"1\" locationid=\"60012787\" locator=\"false\"/>\r\n    <row agent=\"Ahremen Arkah\" agentid=\"3010195\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"2\" locationid=\"60014943\" locator=\"true\"/>\r\n    <row agent=\"Hut Itola\" agentid=\"3010196\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"24\" level=\"1\" locationid=\"60012859\" locator=\"false\"/>\r\n    <row agent=\"Anen Onilola\" agentid=\"3010197\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"23\" level=\"2\" locationid=\"60012796\" locator=\"true\"/>\r\n    <row agent=\"Ashanala Akkipas\" agentid=\"3010198\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"23\" level=\"1\" locationid=\"60012802\" locator=\"false\"/>\r\n    <row agent=\"Koshitaija Itonpaa\" agentid=\"3010199\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"22\" level=\"2\" locationid=\"60012799\" locator=\"false\"/>\r\n    <row agent=\"Okawari Oisi\" agentid=\"3010200\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"24\" level=\"1\" locationid=\"60012805\" locator=\"false\"/>\r\n    <row agent=\"Tuihtamon Iwamela\" agentid=\"3010201\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"23\" level=\"2\" locationid=\"60012808\" locator=\"false\"/>\r\n    <row agent=\"Tokkitainen Ansoken\" agentid=\"3010202\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"23\" level=\"3\" locationid=\"60012811\" locator=\"false\"/>\r\n    <row agent=\"Rohmunji Arhu\" agentid=\"3010203\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"24\" level=\"1\" locationid=\"60012814\" locator=\"false\"/>\r\n    <row agent=\"Arma Nornen\" agentid=\"3010204\" agenttypeid=\"8\" corporationid=\"1000135\" divisionid=\"23\" level=\"5\" locationid=\"60012817\" locator=\"false\"/>\r\n    <row agent=\"Fukkuliala Aako\" agentid=\"3010205\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"24\" level=\"3\" locationid=\"60012820\" locator=\"false\"/>\r\n    <row agent=\"Saura Torochi\" agentid=\"3010206\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"23\" level=\"4\" locationid=\"60012829\" locator=\"false\"/>\r\n    <row agent=\"Matsatoh Okamaa\" agentid=\"3010207\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"23\" level=\"2\" locationid=\"60012823\" locator=\"true\"/>\r\n    <row agent=\"Kakkiainen Okokka\" agentid=\"3010208\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"23\" level=\"2\" locationid=\"60012826\" locator=\"false\"/>\r\n    <row agent=\"Plotola Auki\" agentid=\"3010209\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"22\" level=\"2\" locationid=\"60012835\" locator=\"false\"/>\r\n    <row agent=\"Kurmanen Ienola\" agentid=\"3010210\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"24\" level=\"2\" locationid=\"60012832\" locator=\"false\"/>\r\n    <row agent=\"Paatsosen Hara\" agentid=\"3010211\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"22\" level=\"2\" locationid=\"60012838\" locator=\"false\"/>\r\n    <row agent=\"Shin Koikas\" agentid=\"3010212\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"24\" level=\"1\" locationid=\"60012841\" locator=\"true\"/>\r\n    <row agent=\"Kuumenaakko Liksen\" agentid=\"3010213\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"24\" level=\"2\" locationid=\"60012844\" locator=\"false\"/>\r\n    <row agent=\"Paukonsuo Ihoya\" agentid=\"3010214\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"24\" level=\"1\" locationid=\"60012847\" locator=\"false\"/>\r\n    <row agent=\"Raikanen Uehiro\" agentid=\"3010215\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"24\" level=\"3\" locationid=\"60012850\" locator=\"true\"/>\r\n    <row agent=\"Solula Sizawa\" agentid=\"3010216\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"23\" level=\"1\" locationid=\"60012853\" locator=\"false\"/>\r\n    <row agent=\"Haakari Renta\" agentid=\"3010217\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"23\" level=\"3\" locationid=\"60012856\" locator=\"false\"/>\r\n    <row agent=\"Uesi Irei\" agentid=\"3010218\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"22\" level=\"1\" locationid=\"60012862\" locator=\"false\"/>\r\n    <row agent=\"Asine Hitama\" agentid=\"3010219\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"24\" level=\"4\" locationid=\"60012865\" locator=\"false\"/>\r\n    <row agent=\"Amuene Mollalier\" agentid=\"3010220\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"1\" locationid=\"60012910\" locator=\"false\"/>\r\n    <row agent=\"Ochirel Tadhqin\" agentid=\"3010221\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"1\" locationid=\"60012868\" locator=\"false\"/>\r\n    <row agent=\"Aloongeves Ambelane\" agentid=\"3010222\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"1\" locationid=\"60012871\" locator=\"false\"/>\r\n    <row agent=\"Brynn Jerdola\" agentid=\"3010223\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"4\" locationid=\"60012874\" locator=\"true\"/>\r\n    <row agent=\"Gezmi Ribnirk\" agentid=\"3010224\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"22\" level=\"2\" locationid=\"60012877\" locator=\"false\"/>\r\n    <row agent=\"Ogmer Uttold\" agentid=\"3010225\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"3\" locationid=\"60012880\" locator=\"false\"/>\r\n    <row agent=\"Ancholer Cochargeins\" agentid=\"3010226\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"2\" locationid=\"60012883\" locator=\"false\"/>\r\n    <row agent=\"Eleldgrilfur Erada\" agentid=\"3010227\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"2\" locationid=\"60012886\" locator=\"true\"/>\r\n    <row agent=\"Uetuka Vekasmukka\" agentid=\"3010228\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"2\" locationid=\"60012889\" locator=\"true\"/>\r\n    <row agent=\"Orartault Uphanel\" agentid=\"3010229\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"1\" locationid=\"60012892\" locator=\"false\"/>\r\n    <row agent=\"Cormack Vaaja\" agentid=\"3010230\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"4\" locationid=\"60012895\" locator=\"true\"/>\r\n    <row agent=\"Unenailen Aaranen\" agentid=\"3010231\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"2\" locationid=\"60012898\" locator=\"false\"/>\r\n    <row agent=\"Agasid Aulin\" agentid=\"3010232\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"3\" locationid=\"60012901\" locator=\"false\"/>\r\n    <row agent=\"Setele Schellan\" agentid=\"3010233\" agenttypeid=\"8\" corporationid=\"1000136\" divisionid=\"24\" level=\"5\" locationid=\"60012907\" locator=\"false\"/>\r\n    <row agent=\"Tzira Chankinu\" agentid=\"3010234\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"4\" locationid=\"60012904\" locator=\"true\"/>\r\n    <row agent=\"Kangegod Eindrerold\" agentid=\"3010235\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"4\" locationid=\"60012913\" locator=\"true\"/>\r\n    <row agent=\"Dihyat Jabounahr\" agentid=\"3010236\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60012916\" locator=\"false\"/>\r\n    <row agent=\"Euralfage Todsildus\" agentid=\"3010237\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"4\" locationid=\"60013027\" locator=\"true\"/>\r\n    <row agent=\"Aveau Datchenese\" agentid=\"3010238\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"2\" locationid=\"60013030\" locator=\"true\"/>\r\n    <row agent=\"Harvingur Gerremur\" agentid=\"3010239\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60013024\" locator=\"true\"/>\r\n    <row agent=\"Sart Ollgur\" agentid=\"3010240\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60012949\" locator=\"false\"/>\r\n    <row agent=\"Irpara Sigathim\" agentid=\"3010241\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"3\" locationid=\"60012943\" locator=\"true\"/>\r\n    <row agent=\"Eigar Okirsder\" agentid=\"3010242\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60012946\" locator=\"true\"/>\r\n    <row agent=\"Ferbhy Nara\" agentid=\"3010243\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"3\" locationid=\"60013012\" locator=\"false\"/>\r\n    <row agent=\"Kenare Jurrechant\" agentid=\"3010244\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"2\" locationid=\"60013006\" locator=\"false\"/>\r\n    <row agent=\"Hajokka Ati\" agentid=\"3010245\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"2\" locationid=\"60013009\" locator=\"false\"/>\r\n    <row agent=\"Adarald Ugge\" agentid=\"3010246\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"4\" locationid=\"60013042\" locator=\"true\"/>\r\n    <row agent=\"Imota Sanoya\" agentid=\"3010247\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60013048\" locator=\"false\"/>\r\n    <row agent=\"Jeman Khegbakish\" agentid=\"3010248\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"2\" locationid=\"60013045\" locator=\"true\"/>\r\n    <row agent=\"Jumaisha Sicongabafa\" agentid=\"3010249\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60013033\" locator=\"true\"/>\r\n    <row agent=\"Mouraya Ankadan\" agentid=\"3010250\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"4\" locationid=\"60013036\" locator=\"false\"/>\r\n    <row agent=\"Asinar Nazta\" agentid=\"3010251\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"4\" locationid=\"60013039\" locator=\"true\"/>\r\n    <row agent=\"Maekima Tsujeri\" agentid=\"3010252\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"3\" locationid=\"60012982\" locator=\"false\"/>\r\n    <row agent=\"Eves Obarmant\" agentid=\"3010253\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"2\" locationid=\"60012985\" locator=\"false\"/>\r\n    <row agent=\"Julgerting Hvagasand\" agentid=\"3010254\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"3\" locationid=\"60012979\" locator=\"false\"/>\r\n    <row agent=\"Takanen Tuoranen\" agentid=\"3010255\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"3\" locationid=\"60012964\" locator=\"false\"/>\r\n    <row agent=\"End Baltera\" agentid=\"3010256\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"3\" locationid=\"60012967\" locator=\"true\"/>\r\n    <row agent=\"Rahadalon Nokimur\" agentid=\"3010257\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60012961\" locator=\"false\"/>\r\n    <row agent=\"Hadakan Sisi\" agentid=\"3010258\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"3\" locationid=\"60012970\" locator=\"false\"/>\r\n    <row agent=\"Fegh Aviantal\" agentid=\"3010259\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"2\" locationid=\"60012976\" locator=\"false\"/>\r\n    <row agent=\"Charan Shebula\" agentid=\"3010260\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"2\" locationid=\"60012973\" locator=\"false\"/>\r\n    <row agent=\"Ikalainen Onnola\" agentid=\"3010261\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60012937\" locator=\"true\"/>\r\n    <row agent=\"Redmereau Jaelaerdt\" agentid=\"3010262\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"3\" locationid=\"60012940\" locator=\"true\"/>\r\n    <row agent=\"Birt Estenieves\" agentid=\"3010263\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60012934\" locator=\"false\"/>\r\n    <row agent=\"Irosa Neriadams\" agentid=\"3010264\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"2\" locationid=\"60012958\" locator=\"false\"/>\r\n    <row agent=\"Yomsion Azen\" agentid=\"3010265\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"3\" locationid=\"60012952\" locator=\"true\"/>\r\n    <row agent=\"Ohamon Inkinen\" agentid=\"3010266\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"4\" locationid=\"60012955\" locator=\"true\"/>\r\n    <row agent=\"Kentz Ekonori\" agentid=\"3010267\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"3\" locationid=\"60013003\" locator=\"true\"/>\r\n    <row agent=\"Haram Goskaktar\" agentid=\"3010268\" agenttypeid=\"8\" corporationid=\"1000137\" divisionid=\"24\" level=\"5\" locationid=\"60013000\" locator=\"false\"/>\r\n    <row agent=\"Knutedder Aborin\" agentid=\"3010269\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"4\" locationid=\"60012997\" locator=\"true\"/>\r\n    <row agent=\"Ishiras Kiniruta\" agentid=\"3010270\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"4\" locationid=\"60013015\" locator=\"true\"/>\r\n    <row agent=\"Petsiken Ichosira\" agentid=\"3010271\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60013018\" locator=\"true\"/>\r\n    <row agent=\"Jaasinen Ohinila\" agentid=\"3010272\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"2\" locationid=\"60013021\" locator=\"false\"/>\r\n    <row agent=\"Etamala Handa\" agentid=\"3010273\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60012922\" locator=\"false\"/>\r\n    <row agent=\"Omilfgasi Anninar\" agentid=\"3010274\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"2\" locationid=\"60012919\" locator=\"false\"/>\r\n    <row agent=\"Anchel Lanenier\" agentid=\"3010275\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"3\" locationid=\"60012994\" locator=\"false\"/>\r\n    <row agent=\"Tantoseisen Kakkichi\" agentid=\"3010276\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"4\" locationid=\"60012988\" locator=\"false\"/>\r\n    <row agent=\"Hamunala Rairos\" agentid=\"3010277\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60012991\" locator=\"false\"/>\r\n    <row agent=\"Octiclene Sinille\" agentid=\"3010278\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60012931\" locator=\"false\"/>\r\n    <row agent=\"Ikansur Haenobiber\" agentid=\"3010279\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"4\" locationid=\"60012925\" locator=\"true\"/>\r\n    <row agent=\"Zomili Mabahian\" agentid=\"3010280\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60012928\" locator=\"true\"/>\r\n    <row agent=\"Afrire Arbattolie\" agentid=\"3010281\" agenttypeid=\"2\" corporationid=\"1000138\" divisionid=\"24\" level=\"1\" locationid=\"60013069\" locator=\"true\"/>\r\n    <row agent=\"Tobias Kruzhor\" agentid=\"3010282\" agenttypeid=\"8\" corporationid=\"1000138\" divisionid=\"24\" level=\"5\" locationid=\"60013051\" locator=\"false\"/>\r\n    <row agent=\"Gotan Kreiss\" agentid=\"3010283\" agenttypeid=\"2\" corporationid=\"1000138\" divisionid=\"24\" level=\"3\" locationid=\"60013054\" locator=\"true\"/>\r\n    <row agent=\"Wedrel Strollant\" agentid=\"3010284\" agenttypeid=\"2\" corporationid=\"1000138\" divisionid=\"24\" level=\"2\" locationid=\"60013057\" locator=\"false\"/>\r\n    <row agent=\"Meild Sond\" agentid=\"3010285\" agenttypeid=\"2\" corporationid=\"1000138\" divisionid=\"24\" level=\"4\" locationid=\"60013060\" locator=\"false\"/>\r\n    <row agent=\"Dankar Efnart\" agentid=\"3010286\" agenttypeid=\"2\" corporationid=\"1000138\" divisionid=\"24\" level=\"3\" locationid=\"60013063\" locator=\"false\"/>\r\n    <row agent=\"Mizuro Cybon\" agentid=\"3010287\" agenttypeid=\"2\" corporationid=\"1000138\" divisionid=\"24\" level=\"4\" locationid=\"60013066\" locator=\"false\"/>\r\n    <row agent=\"Rilesen Duihlin\" agentid=\"3010288\" agenttypeid=\"2\" corporationid=\"1000138\" divisionid=\"24\" level=\"1\" locationid=\"60013072\" locator=\"false\"/>\r\n    <row agent=\"Arenur Hroitintur\" agentid=\"3010289\" agenttypeid=\"2\" corporationid=\"1000139\" divisionid=\"22\" level=\"2\" locationid=\"60013078\" locator=\"false\"/>\r\n    <row agent=\"Stold Gidmuger\" agentid=\"3010290\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"24\" level=\"1\" locationid=\"60013081\" locator=\"false\"/>\r\n    <row agent=\"Tolavudar Rurlufini\" agentid=\"3010291\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013147\" locator=\"false\"/>\r\n    <row agent=\"Evoom Ostosh\" agentid=\"3010292\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013222\" locator=\"false\"/>\r\n    <row agent=\"Oilja Aljus\" agentid=\"3010293\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"3\" locationid=\"60013162\" locator=\"false\"/>\r\n    <row agent=\"Clans Sunnac\" agentid=\"3010294\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"4\" locationid=\"60013153\" locator=\"false\"/>\r\n    <row agent=\"Amuelloris Ronchelin\" agentid=\"3010295\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"3\" locationid=\"60013159\" locator=\"false\"/>\r\n    <row agent=\"Ettold Arga\" agentid=\"3010296\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"3\" locationid=\"60013156\" locator=\"true\"/>\r\n    <row agent=\"Brastame Aroche\" agentid=\"3010297\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013117\" locator=\"false\"/>\r\n    <row agent=\"Uimomaitoh Sahtogas\" agentid=\"3010298\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013123\" locator=\"false\"/>\r\n    <row agent=\"Thonielan Gallusiene\" agentid=\"3010299\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"1\" locationid=\"60013126\" locator=\"false\"/>\r\n    <row agent=\"Riltulla Reswora\" agentid=\"3010300\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"3\" locationid=\"60013120\" locator=\"true\"/>\r\n    <row agent=\"Gunesulf Ateken\" agentid=\"3010301\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013150\" locator=\"false\"/>\r\n    <row agent=\"Funaila Asomato\" agentid=\"3010302\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"4\" locationid=\"60013144\" locator=\"false\"/>\r\n    <row agent=\"Clout Kuers\" agentid=\"3010303\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"3\" locationid=\"60013141\" locator=\"false\"/>\r\n    <row agent=\"Ieras Peittaakko\" agentid=\"3010304\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"1\" locationid=\"60013105\" locator=\"false\"/>\r\n    <row agent=\"Yifan Sabiva\" agentid=\"3010305\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"3\" locationid=\"60013108\" locator=\"false\"/>\r\n    <row agent=\"Shoranes Heeraz\" agentid=\"3010306\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"1\" locationid=\"60013111\" locator=\"false\"/>\r\n    <row agent=\"Mataria Ekta\" agentid=\"3010307\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013114\" locator=\"false\"/>\r\n    <row agent=\"Molleur Delmeranten\" agentid=\"3010308\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"3\" locationid=\"60013180\" locator=\"false\"/>\r\n    <row agent=\"Ohmantumaa Punkyoemon\" agentid=\"3010309\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013186\" locator=\"false\"/>\r\n    <row agent=\"Oluchilan Vlecht\" agentid=\"3010310\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"3\" locationid=\"60013177\" locator=\"false\"/>\r\n    <row agent=\"Tuulonen Haikenaras\" agentid=\"3010311\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"1\" locationid=\"60013183\" locator=\"false\"/>\r\n    <row agent=\"Skjor Rormodik\" agentid=\"3010312\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"1\" locationid=\"60013204\" locator=\"false\"/>\r\n    <row agent=\"Shinsema Cherislam\" agentid=\"3010313\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013210\" locator=\"false\"/>\r\n    <row agent=\"Uldizo Agmur\" agentid=\"3010314\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"4\" locationid=\"60013207\" locator=\"false\"/>\r\n    <row agent=\"Waretta Agand\" agentid=\"3010315\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"4\" locationid=\"60013201\" locator=\"true\"/>\r\n    <row agent=\"Pon Ruumi\" agentid=\"3010316\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013084\" locator=\"true\"/>\r\n    <row agent=\"Furmint Akaza\" agentid=\"3010317\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013087\" locator=\"false\"/>\r\n    <row agent=\"Pourdiac Abbaert\" agentid=\"3010318\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013090\" locator=\"false\"/>\r\n    <row agent=\"Annakku Kuola\" agentid=\"3010319\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"1\" locationid=\"60013129\" locator=\"true\"/>\r\n    <row agent=\"Kalbilur Wamimber\" agentid=\"3010320\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"3\" locationid=\"60013132\" locator=\"false\"/>\r\n    <row agent=\"Snahna Rifa\" agentid=\"3010321\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"1\" locationid=\"60013138\" locator=\"true\"/>\r\n    <row agent=\"Haltz Uistard\" agentid=\"3010322\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013135\" locator=\"false\"/>\r\n    <row agent=\"Nilinaiken Korika\" agentid=\"3010323\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"1\" locationid=\"60013168\" locator=\"false\"/>\r\n    <row agent=\"Sasento Jovvakko\" agentid=\"3010324\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"3\" locationid=\"60013171\" locator=\"false\"/>\r\n    <row agent=\"Hayabier Akezen\" agentid=\"3010325\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"3\" locationid=\"60013174\" locator=\"true\"/>\r\n    <row agent=\"Komora Uniainenin\" agentid=\"3010326\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"3\" locationid=\"60013165\" locator=\"false\"/>\r\n    <row agent=\"Nein Moradur\" agentid=\"3010327\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"1\" locationid=\"60013237\" locator=\"false\"/>\r\n    <row agent=\"Winako Akold\" agentid=\"3010328\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"1\" locationid=\"60013246\" locator=\"false\"/>\r\n    <row agent=\"Oksanas Ieyoshadan\" agentid=\"3010329\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013240\" locator=\"false\"/>\r\n    <row agent=\"Polarala Opiai\" agentid=\"3010330\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"3\" locationid=\"60013243\" locator=\"false\"/>\r\n    <row agent=\"Jammalgen Rekurdan\" agentid=\"3010331\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"4\" locationid=\"60013234\" locator=\"false\"/>\r\n    <row agent=\"Alasore Gesevieve\" agentid=\"3010332\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013231\" locator=\"false\"/>\r\n    <row agent=\"Ardalainer Gemarche\" agentid=\"3010333\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"3\" locationid=\"60013225\" locator=\"false\"/>\r\n    <row agent=\"Witolf Ellulf\" agentid=\"3010334\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"1\" locationid=\"60013228\" locator=\"false\"/>\r\n    <row agent=\"Dagiker Warhemmo\" agentid=\"3010335\" agenttypeid=\"8\" corporationid=\"1000140\" divisionid=\"22\" level=\"5\" locationid=\"60013195\" locator=\"false\"/>\r\n    <row agent=\"Eitar Karkirdard\" agentid=\"3010336\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"4\" locationid=\"60013192\" locator=\"false\"/>\r\n    <row agent=\"Absaned Upat\" agentid=\"3010337\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"3\" locationid=\"60013189\" locator=\"false\"/>\r\n    <row agent=\"Wimander Geridal\" agentid=\"3010338\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013198\" locator=\"false\"/>\r\n    <row agent=\"Atens Karson\" agentid=\"3010339\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"1\" locationid=\"60013252\" locator=\"false\"/>\r\n    <row agent=\"Hedelbert Aldrat\" agentid=\"3010340\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013258\" locator=\"false\"/>\r\n    <row agent=\"Sini Hadonoo\" agentid=\"3010341\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013255\" locator=\"false\"/>\r\n    <row agent=\"Attek Eurkulf\" agentid=\"3010342\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013249\" locator=\"false\"/>\r\n    <row agent=\"Autinen Ahitoh\" agentid=\"3010343\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"3\" locationid=\"60013102\" locator=\"false\"/>\r\n    <row agent=\"Inolala Uchinuda\" agentid=\"3010344\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"3\" locationid=\"60013096\" locator=\"true\"/>\r\n    <row agent=\"Armotte Begninck\" agentid=\"3010345\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"1\" locationid=\"60013099\" locator=\"false\"/>\r\n    <row agent=\"Palark Bashkive\" agentid=\"3010346\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013093\" locator=\"false\"/>\r\n    <row agent=\"Pesteya Ziraze\" agentid=\"3010347\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013213\" locator=\"false\"/>\r\n    <row agent=\"Obavette Locherghen\" agentid=\"3010348\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"1\" locationid=\"60013219\" locator=\"false\"/>\r\n    <row agent=\"Hyononeki Armon\" agentid=\"3010349\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"3\" locationid=\"60013216\" locator=\"true\"/>\r\n    <row agent=\"Ichinita Kuunkumala\" agentid=\"3010350\" agenttypeid=\"2\" corporationid=\"1000141\" divisionid=\"23\" level=\"3\" locationid=\"60013261\" locator=\"true\"/>\r\n    <row agent=\"Deta Nithi\" agentid=\"3010351\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"24\" level=\"1\" locationid=\"60013264\" locator=\"false\"/>\r\n    <row agent=\"Kykeshi Shais\" agentid=\"3010352\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"22\" level=\"3\" locationid=\"60013291\" locator=\"true\"/>\r\n    <row agent=\"Erkamainen Ravuo\" agentid=\"3010353\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"22\" level=\"2\" locationid=\"60013288\" locator=\"false\"/>\r\n    <row agent=\"Paaralen Sotiro\" agentid=\"3010354\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"24\" level=\"1\" locationid=\"60013267\" locator=\"false\"/>\r\n    <row agent=\"Dasiosa Toumi\" agentid=\"3010355\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"24\" level=\"4\" locationid=\"60013345\" locator=\"false\"/>\r\n    <row agent=\"Barma Eltis\" agentid=\"3010356\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"23\" level=\"2\" locationid=\"60013342\" locator=\"false\"/>\r\n    <row agent=\"Fanere Voespant\" agentid=\"3010357\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"24\" level=\"1\" locationid=\"60013294\" locator=\"false\"/>\r\n    <row agent=\"Anttiken Itila\" agentid=\"3010358\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"22\" level=\"3\" locationid=\"60013297\" locator=\"false\"/>\r\n    <row agent=\"Sanumo Sumomada\" agentid=\"3010359\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"23\" level=\"1\" locationid=\"60013321\" locator=\"false\"/>\r\n    <row agent=\"Kanin Yedaph\" agentid=\"3010360\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"24\" level=\"2\" locationid=\"60013318\" locator=\"false\"/>\r\n    <row agent=\"Oguras Eskanen\" agentid=\"3010361\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"23\" level=\"1\" locationid=\"60013309\" locator=\"false\"/>\r\n    <row agent=\"Yinuru Enolachah\" agentid=\"3010362\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"22\" level=\"4\" locationid=\"60013306\" locator=\"true\"/>\r\n    <row agent=\"Asahal Eradana\" agentid=\"3010363\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"22\" level=\"1\" locationid=\"60013324\" locator=\"false\"/>\r\n    <row agent=\"Eurmana Engerstar\" agentid=\"3010364\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"23\" level=\"3\" locationid=\"60013327\" locator=\"false\"/>\r\n    <row agent=\"Tacalu Myri\" agentid=\"3010365\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"22\" level=\"3\" locationid=\"60013303\" locator=\"false\"/>\r\n    <row agent=\"Kinkyonen Hashinouras\" agentid=\"3010366\" agenttypeid=\"8\" corporationid=\"1000142\" divisionid=\"24\" level=\"5\" locationid=\"60013300\" locator=\"false\"/>\r\n    <row agent=\"Uhis Houb\" agentid=\"3010367\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"22\" level=\"4\" locationid=\"60013282\" locator=\"false\"/>\r\n    <row agent=\"Leigukelm Iddold\" agentid=\"3010368\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"22\" level=\"2\" locationid=\"60013285\" locator=\"false\"/>\r\n    <row agent=\"Siliker Svagnegnot\" agentid=\"3010369\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"24\" level=\"4\" locationid=\"60013273\" locator=\"true\"/>\r\n    <row agent=\"Halfgar Orsur\" agentid=\"3010370\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"22\" level=\"1\" locationid=\"60013270\" locator=\"false\"/>\r\n    <row agent=\"Manarainen Rotta\" agentid=\"3010371\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"24\" level=\"1\" locationid=\"60013351\" locator=\"false\"/>\r\n    <row agent=\"Hihrin Afazin\" agentid=\"3010372\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"22\" level=\"1\" locationid=\"60013348\" locator=\"false\"/>\r\n    <row agent=\"Alenour Akosmoud\" agentid=\"3010373\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"22\" level=\"2\" locationid=\"60013330\" locator=\"false\"/>\r\n    <row agent=\"Achoghu Choosha\" agentid=\"3010374\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"24\" level=\"2\" locationid=\"60013333\" locator=\"true\"/>\r\n    <row agent=\"Kuharah Abral\" agentid=\"3010375\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"24\" level=\"3\" locationid=\"60013336\" locator=\"true\"/>\r\n    <row agent=\"Jabhi Tehnud\" agentid=\"3010376\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"22\" level=\"2\" locationid=\"60013339\" locator=\"false\"/>\r\n    <row agent=\"Kemini Astastez\" agentid=\"3010377\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"23\" level=\"1\" locationid=\"60013312\" locator=\"false\"/>\r\n    <row agent=\"Avonon Lasire\" agentid=\"3010378\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"22\" level=\"2\" locationid=\"60013315\" locator=\"false\"/>\r\n    <row agent=\"Aetrald Ravensdad\" agentid=\"3010379\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"23\" level=\"3\" locationid=\"60013276\" locator=\"false\"/>\r\n    <row agent=\"Amirker Analven\" agentid=\"3010380\" agenttypeid=\"2\" corporationid=\"1000142\" divisionid=\"23\" level=\"2\" locationid=\"60013279\" locator=\"false\"/>\r\n    <row agent=\"Hoostemiron Allane\" agentid=\"3010381\" agenttypeid=\"2\" corporationid=\"1000144\" divisionid=\"22\" level=\"1\" locationid=\"60013357\" locator=\"false\"/>\r\n    <row agent=\"Muteltaine Autrou\" agentid=\"3010382\" agenttypeid=\"2\" corporationid=\"1000144\" divisionid=\"22\" level=\"3\" locationid=\"60013360\" locator=\"false\"/>\r\n    <row agent=\"Fusbenne Attens\" agentid=\"3010383\" agenttypeid=\"2\" corporationid=\"1000144\" divisionid=\"22\" level=\"2\" locationid=\"60013363\" locator=\"false\"/>\r\n    <row agent=\"Mesybier Echard\" agentid=\"3010384\" agenttypeid=\"8\" corporationid=\"1000144\" divisionid=\"22\" level=\"5\" locationid=\"60013366\" locator=\"false\"/>\r\n    <row agent=\"Chattinck Lalycer\" agentid=\"3010385\" agenttypeid=\"2\" corporationid=\"1000144\" divisionid=\"22\" level=\"4\" locationid=\"60013369\" locator=\"true\"/>\r\n    <row agent=\"Aranza Seyron\" agentid=\"3010386\" agenttypeid=\"2\" corporationid=\"1000144\" divisionid=\"22\" level=\"3\" locationid=\"60013372\" locator=\"true\"/>\r\n    <row agent=\"Benvodis Androy\" agentid=\"3010387\" agenttypeid=\"2\" corporationid=\"1000144\" divisionid=\"22\" level=\"4\" locationid=\"60013375\" locator=\"false\"/>\r\n    <row agent=\"Vepithou Bekkyere\" agentid=\"3010388\" agenttypeid=\"2\" corporationid=\"1000144\" divisionid=\"22\" level=\"2\" locationid=\"60013378\" locator=\"false\"/>\r\n    <row agent=\"Anais Montvlyrtier\" agentid=\"3010389\" agenttypeid=\"2\" corporationid=\"1000145\" divisionid=\"22\" level=\"1\" locationid=\"60013381\" locator=\"false\"/>\r\n    <row agent=\"Aspant Sairuttire\" agentid=\"3010390\" agenttypeid=\"2\" corporationid=\"1000145\" divisionid=\"23\" level=\"3\" locationid=\"60013384\" locator=\"false\"/>\r\n    <row agent=\"Venere Tolle\" agentid=\"3010391\" agenttypeid=\"2\" corporationid=\"1000145\" divisionid=\"22\" level=\"4\" locationid=\"60013387\" locator=\"false\"/>\r\n    <row agent=\"Fluekele Arrodet\" agentid=\"3010392\" agenttypeid=\"2\" corporationid=\"1000145\" divisionid=\"24\" level=\"2\" locationid=\"60013390\" locator=\"true\"/>\r\n    <row agent=\"Daeritte Yvegot\" agentid=\"3010393\" agenttypeid=\"2\" corporationid=\"1000145\" divisionid=\"22\" level=\"3\" locationid=\"60013393\" locator=\"false\"/>\r\n    <row agent=\"Soeilenuse Cempescain\" agentid=\"3010394\" agenttypeid=\"8\" corporationid=\"1000145\" divisionid=\"23\" level=\"5\" locationid=\"60013396\" locator=\"false\"/>\r\n    <row agent=\"Sadereron Tande\" agentid=\"3010395\" agenttypeid=\"2\" corporationid=\"1000145\" divisionid=\"22\" level=\"2\" locationid=\"60013399\" locator=\"false\"/>\r\n    <row agent=\"Buin Archyrseult\" agentid=\"3010396\" agenttypeid=\"2\" corporationid=\"1000145\" divisionid=\"22\" level=\"2\" locationid=\"60013402\" locator=\"true\"/>\r\n    <row agent=\"Elacan Artalin\" agentid=\"3010397\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"1\" locationid=\"60013405\" locator=\"false\"/>\r\n    <row agent=\"Avoralie Cente\" agentid=\"3010398\" agenttypeid=\"8\" corporationid=\"1000146\" divisionid=\"24\" level=\"5\" locationid=\"60013408\" locator=\"false\"/>\r\n    <row agent=\"Ivorchaert Brawette\" agentid=\"3010399\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"3\" locationid=\"60013417\" locator=\"false\"/>\r\n    <row agent=\"Sogeria Ronchelin\" agentid=\"3010400\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"22\" level=\"1\" locationid=\"60013420\" locator=\"false\"/>\r\n    <row agent=\"Janeille Esteller\" agentid=\"3010401\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"2\" locationid=\"60013441\" locator=\"false\"/>\r\n    <row agent=\"Planeris Balyu\" agentid=\"3010402\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"4\" locationid=\"60013444\" locator=\"true\"/>\r\n    <row agent=\"Autlue Dissel\" agentid=\"3010403\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"4\" locationid=\"60013411\" locator=\"true\"/>\r\n    <row agent=\"Allolins Odalanne\" agentid=\"3010404\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"4\" locationid=\"60013414\" locator=\"false\"/>\r\n    <row agent=\"Aubulle Sougnieurck\" agentid=\"3010405\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"3\" locationid=\"60013462\" locator=\"true\"/>\r\n    <row agent=\"Pasitte Essarette\" agentid=\"3010406\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"2\" locationid=\"60013459\" locator=\"false\"/>\r\n    <row agent=\"Geripiette Ergiers\" agentid=\"3010407\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"22\" level=\"3\" locationid=\"60013435\" locator=\"true\"/>\r\n    <row agent=\"Gidrine Slassulle\" agentid=\"3010408\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"2\" locationid=\"60013438\" locator=\"false\"/>\r\n    <row agent=\"Railloux Saonellympe\" agentid=\"3010409\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"4\" locationid=\"60013453\" locator=\"true\"/>\r\n    <row agent=\"Ailer Heydieles\" agentid=\"3010410\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"4\" locationid=\"60013456\" locator=\"true\"/>\r\n    <row agent=\"Brouneva Daria\" agentid=\"3010411\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"4\" locationid=\"60013426\" locator=\"true\"/>\r\n    <row agent=\"Ancaunnouge Alillon\" agentid=\"3010412\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"2\" locationid=\"60013423\" locator=\"true\"/>\r\n    <row agent=\"Timsieuwe Weyllaenalle\" agentid=\"3010413\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"1\" locationid=\"60013429\" locator=\"false\"/>\r\n    <row agent=\"Doufecteau Pettinck\" agentid=\"3010414\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"4\" locationid=\"60013432\" locator=\"false\"/>\r\n    <row agent=\"Cosson Amarancke\" agentid=\"3010415\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"1\" locationid=\"60013447\" locator=\"false\"/>\r\n    <row agent=\"Moledune Hevinivis\" agentid=\"3010416\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"4\" locationid=\"60013450\" locator=\"true\"/>\r\n    <row agent=\"Espirose Andreditte\" agentid=\"3010417\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"1\" locationid=\"60013465\" locator=\"false\"/>\r\n    <row agent=\"Dursatsins Thirsier\" agentid=\"3010418\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"4\" locationid=\"60013468\" locator=\"false\"/>\r\n    <row agent=\"Fre Soulobert\" agentid=\"3010419\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"3\" locationid=\"60013471\" locator=\"false\"/>\r\n    <row agent=\"Arnanare Anchel\" agentid=\"3010420\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"4\" locationid=\"60013549\" locator=\"true\"/>\r\n    <row agent=\"Vediere Baider\" agentid=\"3010421\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"1\" locationid=\"60013552\" locator=\"false\"/>\r\n    <row agent=\"Rourts Lanercheve\" agentid=\"3010422\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"1\" locationid=\"60013546\" locator=\"true\"/>\r\n    <row agent=\"Edmanan Vattaux\" agentid=\"3010423\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"3\" locationid=\"60013519\" locator=\"true\"/>\r\n    <row agent=\"Bemps Latault\" agentid=\"3010424\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"2\" locationid=\"60013522\" locator=\"false\"/>\r\n    <row agent=\"Aurmia Cariot\" agentid=\"3010425\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"1\" locationid=\"60013525\" locator=\"false\"/>\r\n    <row agent=\"Rhoun Attens\" agentid=\"3010426\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"3\" locationid=\"60013492\" locator=\"false\"/>\r\n    <row agent=\"Emeersch Georreroron\" agentid=\"3010427\" agenttypeid=\"8\" corporationid=\"1000147\" divisionid=\"24\" level=\"5\" locationid=\"60013495\" locator=\"false\"/>\r\n    <row agent=\"Wissier Isschau\" agentid=\"3010428\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"3\" locationid=\"60013498\" locator=\"false\"/>\r\n    <row agent=\"Indregulle Mabenere\" agentid=\"3010429\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"4\" locationid=\"60013540\" locator=\"false\"/>\r\n    <row agent=\"Ertlie Gere\" agentid=\"3010430\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"4\" locationid=\"60013537\" locator=\"true\"/>\r\n    <row agent=\"Biessche Cienc\" agentid=\"3010431\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"3\" locationid=\"60013543\" locator=\"false\"/>\r\n    <row agent=\"Chamaert Oillard\" agentid=\"3010432\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"3\" locationid=\"60013534\" locator=\"false\"/>\r\n    <row agent=\"Hedarilot Faurent\" agentid=\"3010433\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"3\" locationid=\"60013531\" locator=\"false\"/>\r\n    <row agent=\"Agrelins Odene\" agentid=\"3010434\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"2\" locationid=\"60013528\" locator=\"false\"/>\r\n    <row agent=\"Ancemel Baliaerdt\" agentid=\"3010435\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"2\" locationid=\"60013489\" locator=\"false\"/>\r\n    <row agent=\"Gilalis Vastinck\" agentid=\"3010436\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"2\" locationid=\"60013483\" locator=\"false\"/>\r\n    <row agent=\"Noutte Cauvers\" agentid=\"3010437\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"2\" locationid=\"60013486\" locator=\"false\"/>\r\n    <row agent=\"Rhin Dovaille\" agentid=\"3010438\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"4\" locationid=\"60013474\" locator=\"false\"/>\r\n    <row agent=\"Heneque Mornodire\" agentid=\"3010439\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"1\" locationid=\"60013480\" locator=\"true\"/>\r\n    <row agent=\"Prerebot Husel\" agentid=\"3010440\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"3\" locationid=\"60013477\" locator=\"true\"/>\r\n    <row agent=\"Mavalle Annennire\" agentid=\"3010441\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"1\" locationid=\"60013510\" locator=\"false\"/>\r\n    <row agent=\"Ahroillaine Erion\" agentid=\"3010442\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"4\" locationid=\"60013513\" locator=\"true\"/>\r\n    <row agent=\"Antonede Alst\" agentid=\"3010443\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"1\" locationid=\"60013516\" locator=\"false\"/>\r\n    <row agent=\"Amytier Lallateblan\" agentid=\"3010444\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"3\" locationid=\"60013504\" locator=\"false\"/>\r\n    <row agent=\"Karontrunger Yvavenis\" agentid=\"3010445\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"4\" locationid=\"60013501\" locator=\"false\"/>\r\n    <row agent=\"Dhanders Failanard\" agentid=\"3010446\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"4\" locationid=\"60013507\" locator=\"false\"/>\r\n    <row agent=\"Malirscoure Antgy\" agentid=\"3010447\" agenttypeid=\"3\" corporationid=\"1000149\" divisionid=\"24\" level=\"1\" locationid=\"60013555\" locator=\"false\"/>\r\n    <row agent=\"Peydeh Ebneloum\" agentid=\"3010448\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"24\" level=\"1\" locationid=\"60013600\" locator=\"false\"/>\r\n    <row agent=\"Outa Jusen\" agentid=\"3010449\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"24\" level=\"3\" locationid=\"60013603\" locator=\"false\"/>\r\n    <row agent=\"Skiasten Bonerand\" agentid=\"3010450\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"24\" level=\"1\" locationid=\"60013558\" locator=\"true\"/>\r\n    <row agent=\"Tzotrek Paraden\" agentid=\"3010451\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"24\" level=\"3\" locationid=\"60013561\" locator=\"true\"/>\r\n    <row agent=\"Tjor Pidgur\" agentid=\"3010452\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"24\" level=\"4\" locationid=\"60013579\" locator=\"false\"/>\r\n    <row agent=\"Penille Amalene\" agentid=\"3010453\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"24\" level=\"2\" locationid=\"60013630\" locator=\"true\"/>\r\n    <row agent=\"Ornljer Vannokard\" agentid=\"3010454\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"24\" level=\"3\" locationid=\"60013627\" locator=\"true\"/>\r\n    <row agent=\"Tona Arativim\" agentid=\"3010455\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"24\" level=\"3\" locationid=\"60013633\" locator=\"false\"/>\r\n    <row agent=\"Suisonakka Okilen\" agentid=\"3010456\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"24\" level=\"2\" locationid=\"60013591\" locator=\"false\"/>\r\n    <row agent=\"Litaka Hagas\" agentid=\"3010457\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"24\" level=\"2\" locationid=\"60013609\" locator=\"true\"/>\r\n    <row agent=\"Cobelle Onet\" agentid=\"3010458\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"24\" level=\"2\" locationid=\"60013612\" locator=\"false\"/>\r\n    <row agent=\"Huren Juld\" agentid=\"3010459\" agenttypeid=\"8\" corporationid=\"1000149\" divisionid=\"24\" level=\"5\" locationid=\"60013588\" locator=\"false\"/>\r\n    <row agent=\"Yonkkamon Kuro\" agentid=\"3010460\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"24\" level=\"1\" locationid=\"60013564\" locator=\"true\"/>\r\n    <row agent=\"Osmaystaere Tattonaert\" agentid=\"3010461\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"22\" level=\"3\" locationid=\"60013570\" locator=\"false\"/>\r\n    <row agent=\"Palmaa Rinkalen\" agentid=\"3010462\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"24\" level=\"3\" locationid=\"60013567\" locator=\"false\"/>\r\n    <row agent=\"Jepa Rerana\" agentid=\"3010463\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"24\" level=\"2\" locationid=\"60013636\" locator=\"false\"/>\r\n    <row agent=\"Hayls Cantchrefrier\" agentid=\"3010464\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"22\" level=\"2\" locationid=\"60013606\" locator=\"false\"/>\r\n    <row agent=\"Riruna Anrus\" agentid=\"3010465\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"24\" level=\"1\" locationid=\"60013573\" locator=\"false\"/>\r\n    <row agent=\"Enkold Knilf\" agentid=\"3010466\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"24\" level=\"2\" locationid=\"60013576\" locator=\"true\"/>\r\n    <row agent=\"Annitidwik Engvi\" agentid=\"3010467\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"24\" level=\"1\" locationid=\"60013621\" locator=\"true\"/>\r\n    <row agent=\"Dach Jarathofa\" agentid=\"3010468\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"24\" level=\"4\" locationid=\"60013618\" locator=\"false\"/>\r\n    <row agent=\"Eidard Vakulur\" agentid=\"3010469\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"24\" level=\"2\" locationid=\"60013624\" locator=\"false\"/>\r\n    <row agent=\"Arondsur Bakolinzo\" agentid=\"3010470\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"24\" level=\"4\" locationid=\"60013597\" locator=\"true\"/>\r\n    <row agent=\"Nuo Lien\" agentid=\"3010471\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"24\" level=\"1\" locationid=\"60013594\" locator=\"false\"/>\r\n    <row agent=\"Tantaiken Elonen\" agentid=\"3010472\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"24\" level=\"4\" locationid=\"60013615\" locator=\"true\"/>\r\n    <row agent=\"Yatarder Siharkhail\" agentid=\"3010473\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"22\" level=\"2\" locationid=\"60013582\" locator=\"true\"/>\r\n    <row agent=\"Visatoh Iepi\" agentid=\"3010474\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"24\" level=\"4\" locationid=\"60013585\" locator=\"true\"/>\r\n    <row agent=\"Areru Areh\" agentid=\"3010475\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"22\" level=\"3\" locationid=\"60013639\" locator=\"true\"/>\r\n    <row agent=\"Dubesune Egheyns\" agentid=\"3010476\" agenttypeid=\"2\" corporationid=\"1000149\" divisionid=\"24\" level=\"4\" locationid=\"60013642\" locator=\"false\"/>\r\n    <row agent=\"Okolen Rauranmaa\" agentid=\"3010477\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"22\" level=\"1\" locationid=\"60013645\" locator=\"false\"/>\r\n    <row agent=\"Chaere Jeart\" agentid=\"3010478\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"22\" level=\"4\" locationid=\"60013654\" locator=\"false\"/>\r\n    <row agent=\"Totrana Muttokon\" agentid=\"3010479\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"22\" level=\"3\" locationid=\"60013660\" locator=\"false\"/>\r\n    <row agent=\"Lugannald Ameinko\" agentid=\"3010480\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"2\" locationid=\"60013657\" locator=\"true\"/>\r\n    <row agent=\"Abazeluc Cameruet\" agentid=\"3010481\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"2\" locationid=\"60013648\" locator=\"false\"/>\r\n    <row agent=\"Hiemalen Ahorakka\" agentid=\"3010482\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"3\" locationid=\"60013651\" locator=\"false\"/>\r\n    <row agent=\"Yvevet Atlertolier\" agentid=\"3010483\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"2\" locationid=\"60013699\" locator=\"false\"/>\r\n    <row agent=\"Fernur Heteder\" agentid=\"3010484\" agenttypeid=\"3\" corporationid=\"1000150\" divisionid=\"24\" level=\"1\" locationid=\"60013702\" locator=\"false\"/>\r\n    <row agent=\"Luveinodi Elbaud\" agentid=\"3010485\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"2\" locationid=\"60013708\" locator=\"false\"/>\r\n    <row agent=\"Jonagulf Eslan\" agentid=\"3010486\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"1\" locationid=\"60013711\" locator=\"false\"/>\r\n    <row agent=\"Konjus Okolen\" agentid=\"3010487\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"2\" locationid=\"60013714\" locator=\"false\"/>\r\n    <row agent=\"Tean Dennesene\" agentid=\"3010488\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"3\" locationid=\"60013705\" locator=\"true\"/>\r\n    <row agent=\"Ualdiran Fedetrist\" agentid=\"3010489\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"22\" level=\"3\" locationid=\"60013789\" locator=\"true\"/>\r\n    <row agent=\"Sonyaken Ukechi\" agentid=\"3010490\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"22\" level=\"1\" locationid=\"60013801\" locator=\"false\"/>\r\n    <row agent=\"Wlfharn Erorbert\" agentid=\"3010491\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"3\" locationid=\"60013795\" locator=\"true\"/>\r\n    <row agent=\"Armah Bagharoo\" agentid=\"3010492\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"2\" locationid=\"60013792\" locator=\"false\"/>\r\n    <row agent=\"Immarenen Aiga\" agentid=\"3010493\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"2\" locationid=\"60013798\" locator=\"true\"/>\r\n    <row agent=\"Zenki Hangond\" agentid=\"3010494\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"2\" locationid=\"60013804\" locator=\"false\"/>\r\n    <row agent=\"Hakatiz Gantalan\" agentid=\"3010495\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"3\" locationid=\"60013807\" locator=\"false\"/>\r\n    <row agent=\"Ingirden Geik\" agentid=\"3010496\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"22\" level=\"1\" locationid=\"60013813\" locator=\"false\"/>\r\n    <row agent=\"Aghirya Erul\" agentid=\"3010497\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"22\" level=\"2\" locationid=\"60013816\" locator=\"true\"/>\r\n    <row agent=\"Geltokur Kolldur\" agentid=\"3010498\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"1\" locationid=\"60013819\" locator=\"true\"/>\r\n    <row agent=\"Olanzo Gogefren\" agentid=\"3010499\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"2\" locationid=\"60013810\" locator=\"true\"/>\r\n    <row agent=\"Haisuras Tonkiainen\" agentid=\"3010500\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"22\" level=\"2\" locationid=\"60013822\" locator=\"false\"/>\r\n    <row agent=\"Myennitte Laldellins\" agentid=\"3010501\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"22\" level=\"4\" locationid=\"60013717\" locator=\"false\"/>\r\n    <row agent=\"Aikelwalo Sodalrat\" agentid=\"3010502\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"4\" locationid=\"60013723\" locator=\"false\"/>\r\n    <row agent=\"Muellairault Ivaere\" agentid=\"3010503\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"22\" level=\"4\" locationid=\"60013729\" locator=\"false\"/>\r\n    <row agent=\"Melnih Masara\" agentid=\"3010504\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"22\" level=\"4\" locationid=\"60013720\" locator=\"false\"/>\r\n    <row agent=\"Alikatsen Kunkkenen\" agentid=\"3010505\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"1\" locationid=\"60013726\" locator=\"false\"/>\r\n    <row agent=\"Brulle Heluene\" agentid=\"3010506\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"4\" locationid=\"60013732\" locator=\"true\"/>\r\n    <row agent=\"Mitte Archone\" agentid=\"3010507\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"2\" locationid=\"60013780\" locator=\"true\"/>\r\n    <row agent=\"Urid Aetar\" agentid=\"3010508\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"4\" locationid=\"60013774\" locator=\"false\"/>\r\n    <row agent=\"Vlandsontal Caunnie\" agentid=\"3010509\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"22\" level=\"3\" locationid=\"60013783\" locator=\"false\"/>\r\n    <row agent=\"Yobnasa Sehrnaz\" agentid=\"3010510\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"22\" level=\"3\" locationid=\"60013771\" locator=\"false\"/>\r\n    <row agent=\"Nadsa Zimse\" agentid=\"3010511\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"3\" locationid=\"60013777\" locator=\"false\"/>\r\n    <row agent=\"Annel Kjaend\" agentid=\"3010512\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"2\" locationid=\"60013786\" locator=\"false\"/>\r\n    <row agent=\"Kera Ashida\" agentid=\"3010513\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"22\" level=\"2\" locationid=\"60013738\" locator=\"true\"/>\r\n    <row agent=\"Muyumuja Ishabara\" agentid=\"3010514\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"1\" locationid=\"60013750\" locator=\"false\"/>\r\n    <row agent=\"Gosha Pouna\" agentid=\"3010515\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"2\" locationid=\"60013735\" locator=\"false\"/>\r\n    <row agent=\"Aranakka Ruukin\" agentid=\"3010516\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"22\" level=\"1\" locationid=\"60013747\" locator=\"false\"/>\r\n    <row agent=\"Otuo Mivora\" agentid=\"3010517\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"22\" level=\"1\" locationid=\"60013741\" locator=\"false\"/>\r\n    <row agent=\"Inaari Tasvas\" agentid=\"3010518\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"3\" locationid=\"60013744\" locator=\"false\"/>\r\n    <row agent=\"Uviai Iralen\" agentid=\"3010519\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"4\" locationid=\"60013759\" locator=\"false\"/>\r\n    <row agent=\"Ladonssund Ohtagur\" agentid=\"3010520\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"22\" level=\"2\" locationid=\"60013762\" locator=\"false\"/>\r\n    <row agent=\"Hamoushekh Khass\" agentid=\"3010521\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"2\" locationid=\"60013765\" locator=\"true\"/>\r\n    <row agent=\"Sisala Thouni\" agentid=\"3010522\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"1\" locationid=\"60013756\" locator=\"false\"/>\r\n    <row agent=\"Zake Zesia\" agentid=\"3010523\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"1\" locationid=\"60013753\" locator=\"false\"/>\r\n    <row agent=\"Ruolanen Pietela\" agentid=\"3010524\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"4\" locationid=\"60013768\" locator=\"true\"/>\r\n    <row agent=\"Ittoh Okonda\" agentid=\"3010525\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"4\" locationid=\"60013681\" locator=\"false\"/>\r\n    <row agent=\"Borgind Pom\" agentid=\"3010526\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"22\" level=\"2\" locationid=\"60013687\" locator=\"false\"/>\r\n    <row agent=\"Harnhandar Suid\" agentid=\"3010527\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"22\" level=\"2\" locationid=\"60013693\" locator=\"false\"/>\r\n    <row agent=\"Ludbiko Godetur\" agentid=\"3010528\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"1\" locationid=\"60013696\" locator=\"false\"/>\r\n    <row agent=\"Kalmaran Dophar\" agentid=\"3010529\" agenttypeid=\"8\" corporationid=\"1000150\" divisionid=\"22\" level=\"5\" locationid=\"60013684\" locator=\"false\"/>\r\n    <row agent=\"Benencel Crielere\" agentid=\"3010530\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"22\" level=\"2\" locationid=\"60013690\" locator=\"false\"/>\r\n    <row agent=\"Bunya Hatsu\" agentid=\"3010531\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"22\" level=\"2\" locationid=\"60013666\" locator=\"false\"/>\r\n    <row agent=\"Romene Iseladie\" agentid=\"3010532\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"22\" level=\"1\" locationid=\"60013672\" locator=\"false\"/>\r\n    <row agent=\"Hallur Ingabert\" agentid=\"3010533\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"4\" locationid=\"60013678\" locator=\"false\"/>\r\n    <row agent=\"Eldgrekis Atren\" agentid=\"3010534\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"22\" level=\"4\" locationid=\"60013663\" locator=\"false\"/>\r\n    <row agent=\"Tadakeh Souredan\" agentid=\"3010535\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"2\" locationid=\"60013675\" locator=\"false\"/>\r\n    <row agent=\"Ornenel Encbe\" agentid=\"3010536\" agenttypeid=\"2\" corporationid=\"1000150\" divisionid=\"24\" level=\"3\" locationid=\"60013669\" locator=\"true\"/>\r\n    <row agent=\"Shes Saal\" agentid=\"3010537\" agenttypeid=\"2\" corporationid=\"1000152\" divisionid=\"22\" level=\"1\" locationid=\"60013828\" locator=\"false\"/>\r\n    <row agent=\"Navai Nayot\" agentid=\"3010538\" agenttypeid=\"2\" corporationid=\"1000152\" divisionid=\"24\" level=\"1\" locationid=\"60013837\" locator=\"false\"/>\r\n    <row agent=\"Khudiga Omas\" agentid=\"3010539\" agenttypeid=\"2\" corporationid=\"1000152\" divisionid=\"24\" level=\"2\" locationid=\"60013840\" locator=\"false\"/>\r\n    <row agent=\"Tona Hasal\" agentid=\"3010540\" agenttypeid=\"2\" corporationid=\"1000152\" divisionid=\"24\" level=\"2\" locationid=\"60013855\" locator=\"false\"/>\r\n    <row agent=\"Kiusa Temasi\" agentid=\"3010541\" agenttypeid=\"2\" corporationid=\"1000152\" divisionid=\"22\" level=\"3\" locationid=\"60013843\" locator=\"true\"/>\r\n    <row agent=\"Eqi Arataragh\" agentid=\"3010542\" agenttypeid=\"2\" corporationid=\"1000152\" divisionid=\"22\" level=\"1\" locationid=\"60013849\" locator=\"false\"/>\r\n    <row agent=\"Araniad Ashwan\" agentid=\"3010543\" agenttypeid=\"8\" corporationid=\"1000152\" divisionid=\"24\" level=\"5\" locationid=\"60013846\" locator=\"false\"/>\r\n    <row agent=\"Oyu Hielia\" agentid=\"3010544\" agenttypeid=\"2\" corporationid=\"1000152\" divisionid=\"24\" level=\"4\" locationid=\"60013831\" locator=\"false\"/>\r\n    <row agent=\"Anuf Buse\" agentid=\"3010545\" agenttypeid=\"2\" corporationid=\"1000152\" divisionid=\"22\" level=\"3\" locationid=\"60013852\" locator=\"false\"/>\r\n    <row agent=\"Kekah Votchehmal\" agentid=\"3010546\" agenttypeid=\"2\" corporationid=\"1000152\" divisionid=\"22\" level=\"4\" locationid=\"60013834\" locator=\"false\"/>\r\n    <row agent=\"Winsako Estram\" agentid=\"3010547\" agenttypeid=\"2\" corporationid=\"1000154\" divisionid=\"23\" level=\"1\" locationid=\"60013861\" locator=\"false\"/>\r\n    <row agent=\"Wirurad Ankgur\" agentid=\"3010548\" agenttypeid=\"2\" corporationid=\"1000154\" divisionid=\"23\" level=\"3\" locationid=\"60013867\" locator=\"true\"/>\r\n    <row agent=\"Trangvatold Notelm\" agentid=\"3010549\" agenttypeid=\"2\" corporationid=\"1000154\" divisionid=\"23\" level=\"4\" locationid=\"60013870\" locator=\"false\"/>\r\n    <row agent=\"Aelar Angils\" agentid=\"3010550\" agenttypeid=\"2\" corporationid=\"1000154\" divisionid=\"23\" level=\"2\" locationid=\"60013864\" locator=\"true\"/>\r\n    <row agent=\"Bomerin Anteres\" agentid=\"3010551\" agenttypeid=\"2\" corporationid=\"1000155\" divisionid=\"24\" level=\"1\" locationid=\"60013873\" locator=\"false\"/>\r\n    <row agent=\"Saranami Aarnanen\" agentid=\"3010552\" agenttypeid=\"2\" corporationid=\"1000155\" divisionid=\"22\" level=\"3\" locationid=\"60013891\" locator=\"false\"/>\r\n    <row agent=\"Kakur Evollolf\" agentid=\"3010553\" agenttypeid=\"2\" corporationid=\"1000155\" divisionid=\"22\" level=\"1\" locationid=\"60013894\" locator=\"false\"/>\r\n    <row agent=\"Boutte Isolette\" agentid=\"3010554\" agenttypeid=\"2\" corporationid=\"1000155\" divisionid=\"22\" level=\"1\" locationid=\"60013921\" locator=\"false\"/>\r\n    <row agent=\"Ladooda Oshnu\" agentid=\"3010555\" agenttypeid=\"2\" corporationid=\"1000155\" divisionid=\"23\" level=\"2\" locationid=\"60013924\" locator=\"true\"/>\r\n    <row agent=\"Iivanamon Okagairos\" agentid=\"3010556\" agenttypeid=\"8\" corporationid=\"1000155\" divisionid=\"23\" level=\"5\" locationid=\"60013876\" locator=\"false\"/>\r\n    <row agent=\"Shiraski Pie\" agentid=\"3010557\" agenttypeid=\"2\" corporationid=\"1000155\" divisionid=\"22\" level=\"1\" locationid=\"60013909\" locator=\"false\"/>\r\n    <row agent=\"Muvolailen Uchono\" agentid=\"3010558\" agenttypeid=\"2\" corporationid=\"1000155\" divisionid=\"22\" level=\"1\" locationid=\"60013912\" locator=\"false\"/>\r\n    <row agent=\"Valen Kingato\" agentid=\"3010559\" agenttypeid=\"2\" corporationid=\"1000155\" divisionid=\"22\" level=\"1\" locationid=\"60013888\" locator=\"false\"/>\r\n    <row agent=\"Idomon Otnen\" agentid=\"3010560\" agenttypeid=\"2\" corporationid=\"1000155\" divisionid=\"24\" level=\"3\" locationid=\"60013885\" locator=\"false\"/>\r\n    <row agent=\"Setamana Helvas\" agentid=\"3010561\" agenttypeid=\"2\" corporationid=\"1000155\" divisionid=\"23\" level=\"1\" locationid=\"60013897\" locator=\"false\"/>\r\n    <row agent=\"Borokle Teodasen\" agentid=\"3010562\" agenttypeid=\"2\" corporationid=\"1000155\" divisionid=\"23\" level=\"2\" locationid=\"60013900\" locator=\"false\"/>\r\n    <row agent=\"Wlfreier Ongrold\" agentid=\"3010563\" agenttypeid=\"2\" corporationid=\"1000155\" divisionid=\"22\" level=\"1\" locationid=\"60013879\" locator=\"true\"/>\r\n    <row agent=\"Nipoukandeh Chirire\" agentid=\"3010564\" agenttypeid=\"2\" corporationid=\"1000155\" divisionid=\"22\" level=\"4\" locationid=\"60013882\" locator=\"false\"/>\r\n    <row agent=\"Aertelm Gudelbod\" agentid=\"3010565\" agenttypeid=\"2\" corporationid=\"1000155\" divisionid=\"22\" level=\"3\" locationid=\"60013927\" locator=\"false\"/>\r\n    <row agent=\"Ohtrik Energur\" agentid=\"3010566\" agenttypeid=\"2\" corporationid=\"1000155\" divisionid=\"23\" level=\"4\" locationid=\"60013930\" locator=\"true\"/>\r\n    <row agent=\"Bavilen Kheen\" agentid=\"3010567\" agenttypeid=\"2\" corporationid=\"1000155\" divisionid=\"23\" level=\"1\" locationid=\"60013918\" locator=\"false\"/>\r\n    <row agent=\"Oirtio Sabaneushi\" agentid=\"3010568\" agenttypeid=\"2\" corporationid=\"1000155\" divisionid=\"23\" level=\"4\" locationid=\"60013915\" locator=\"false\"/>\r\n    <row agent=\"Gufrolf Wibrahard\" agentid=\"3010569\" agenttypeid=\"2\" corporationid=\"1000155\" divisionid=\"22\" level=\"3\" locationid=\"60013906\" locator=\"false\"/>\r\n    <row agent=\"Norazan Ifsan\" agentid=\"3010570\" agenttypeid=\"2\" corporationid=\"1000155\" divisionid=\"23\" level=\"1\" locationid=\"60013903\" locator=\"false\"/>\r\n    <row agent=\"Namater Abereta\" agentid=\"3010571\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"1\" locationid=\"60013933\" locator=\"false\"/>\r\n    <row agent=\"Umid Ashain\" agentid=\"3010572\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"2\" locationid=\"60013936\" locator=\"true\"/>\r\n    <row agent=\"Momabah Pindan\" agentid=\"3010573\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"4\" locationid=\"60013975\" locator=\"true\"/>\r\n    <row agent=\"Errava Mareyi\" agentid=\"3010574\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"22\" level=\"3\" locationid=\"60013978\" locator=\"true\"/>\r\n    <row agent=\"Sineru Yamedar\" agentid=\"3010575\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"2\" locationid=\"60013981\" locator=\"false\"/>\r\n    <row agent=\"Toyosha Garana\" agentid=\"3010576\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"2\" locationid=\"60013984\" locator=\"false\"/>\r\n    <row agent=\"Uhria Sigis\" agentid=\"3010577\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"22\" level=\"2\" locationid=\"60013990\" locator=\"false\"/>\r\n    <row agent=\"Aphah Jadata\" agentid=\"3010578\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"2\" locationid=\"60013987\" locator=\"true\"/>\r\n    <row agent=\"Abrikoum Aman\" agentid=\"3010579\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"4\" locationid=\"60013960\" locator=\"true\"/>\r\n    <row agent=\"Merades Rothen\" agentid=\"3010580\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"1\" locationid=\"60013957\" locator=\"false\"/>\r\n    <row agent=\"Baid Bammohy\" agentid=\"3010581\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"3\" locationid=\"60013951\" locator=\"false\"/>\r\n    <row agent=\"Naladon Falie\" agentid=\"3010582\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"1\" locationid=\"60013954\" locator=\"false\"/>\r\n    <row agent=\"Mengol Taral\" agentid=\"3010583\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"1\" locationid=\"60013969\" locator=\"true\"/>\r\n    <row agent=\"Khifomek Cheshamah\" agentid=\"3010584\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"4\" locationid=\"60013972\" locator=\"true\"/>\r\n    <row agent=\"Hohli Bokarrad\" agentid=\"3010585\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"4\" locationid=\"60013966\" locator=\"false\"/>\r\n    <row agent=\"Rarami Asaphasa\" agentid=\"3010586\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"3\" locationid=\"60013963\" locator=\"true\"/>\r\n    <row agent=\"Shimag Ralnamun\" agentid=\"3010587\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"4\" locationid=\"60013948\" locator=\"true\"/>\r\n    <row agent=\"Okarema Nefra\" agentid=\"3010588\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"2\" locationid=\"60013945\" locator=\"false\"/>\r\n    <row agent=\"Demen Khooznan\" agentid=\"3010589\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"2\" locationid=\"60013939\" locator=\"false\"/>\r\n    <row agent=\"Meor Varuna\" agentid=\"3010590\" agenttypeid=\"8\" corporationid=\"1000156\" divisionid=\"24\" level=\"5\" locationid=\"60013942\" locator=\"false\"/>\r\n    <row agent=\"Voura Situnen\" agentid=\"3010591\" agenttypeid=\"2\" corporationid=\"1000158\" divisionid=\"24\" level=\"1\" locationid=\"60013996\" locator=\"false\"/>\r\n    <row agent=\"Kojosiya Inaya\" agentid=\"3010592\" agenttypeid=\"2\" corporationid=\"1000158\" divisionid=\"22\" level=\"4\" locationid=\"60014023\" locator=\"true\"/>\r\n    <row agent=\"Agiddlellur Askandsolhar\" agentid=\"3010593\" agenttypeid=\"2\" corporationid=\"1000158\" divisionid=\"24\" level=\"2\" locationid=\"60014020\" locator=\"false\"/>\r\n    <row agent=\"Elason Bulnellieu\" agentid=\"3010594\" agenttypeid=\"2\" corporationid=\"1000158\" divisionid=\"22\" level=\"2\" locationid=\"60014029\" locator=\"false\"/>\r\n    <row agent=\"Ortur Abbaber\" agentid=\"3010595\" agenttypeid=\"2\" corporationid=\"1000158\" divisionid=\"24\" level=\"4\" locationid=\"60014026\" locator=\"false\"/>\r\n    <row agent=\"Osskur Kilfdag\" agentid=\"3010596\" agenttypeid=\"2\" corporationid=\"1000158\" divisionid=\"22\" level=\"2\" locationid=\"60013999\" locator=\"false\"/>\r\n    <row agent=\"Dommund Sogfelur\" agentid=\"3010597\" agenttypeid=\"2\" corporationid=\"1000158\" divisionid=\"22\" level=\"2\" locationid=\"60014014\" locator=\"false\"/>\r\n    <row agent=\"Abail Pohla\" agentid=\"3010598\" agenttypeid=\"2\" corporationid=\"1000158\" divisionid=\"22\" level=\"2\" locationid=\"60014017\" locator=\"false\"/>\r\n    <row agent=\"Kaveidur Gebroled\" agentid=\"3010599\" agenttypeid=\"2\" corporationid=\"1000158\" divisionid=\"22\" level=\"4\" locationid=\"60014038\" locator=\"true\"/>\r\n    <row agent=\"Koikoriki Omae\" agentid=\"3010600\" agenttypeid=\"2\" corporationid=\"1000158\" divisionid=\"22\" level=\"2\" locationid=\"60014041\" locator=\"false\"/>\r\n    <row agent=\"Karras Ikerino\" agentid=\"3010601\" agenttypeid=\"2\" corporationid=\"1000158\" divisionid=\"22\" level=\"1\" locationid=\"60014002\" locator=\"false\"/>\r\n    <row agent=\"Kezine Bassi\" agentid=\"3010602\" agenttypeid=\"2\" corporationid=\"1000158\" divisionid=\"22\" level=\"2\" locationid=\"60014005\" locator=\"false\"/>\r\n    <row agent=\"Thayafu Adarya\" agentid=\"3010603\" agenttypeid=\"8\" corporationid=\"1000158\" divisionid=\"22\" level=\"5\" locationid=\"60014032\" locator=\"false\"/>\r\n    <row agent=\"Maeed Azzed\" agentid=\"3010604\" agenttypeid=\"2\" corporationid=\"1000158\" divisionid=\"24\" level=\"1\" locationid=\"60014035\" locator=\"false\"/>\r\n    <row agent=\"Jesahek Psaken\" agentid=\"3010605\" agenttypeid=\"2\" corporationid=\"1000158\" divisionid=\"22\" level=\"1\" locationid=\"60014044\" locator=\"false\"/>\r\n    <row agent=\"Khnos Osas\" agentid=\"3010606\" agenttypeid=\"2\" corporationid=\"1000158\" divisionid=\"24\" level=\"1\" locationid=\"60014047\" locator=\"false\"/>\r\n    <row agent=\"Feryi Jennim\" agentid=\"3010607\" agenttypeid=\"2\" corporationid=\"1000158\" divisionid=\"22\" level=\"3\" locationid=\"60014008\" locator=\"false\"/>\r\n    <row agent=\"Yoomah Yenthera\" agentid=\"3010608\" agenttypeid=\"2\" corporationid=\"1000158\" divisionid=\"24\" level=\"4\" locationid=\"60014011\" locator=\"true\"/>\r\n    <row agent=\"Aurore Beyne\" agentid=\"3010609\" agenttypeid=\"2\" corporationid=\"1000158\" divisionid=\"24\" level=\"1\" locationid=\"60014050\" locator=\"false\"/>\r\n    <row agent=\"Vavene Orlodalle\" agentid=\"3010610\" agenttypeid=\"2\" corporationid=\"1000158\" divisionid=\"22\" level=\"4\" locationid=\"60014053\" locator=\"true\"/>\r\n    <row agent=\"Teurodedik Eodlan\" agentid=\"3010611\" agenttypeid=\"4\" corporationid=\"1000160\" divisionid=\"18\" level=\"1\" locationid=\"60014059\" locator=\"false\"/>\r\n    <row agent=\"Saerdald Oblikkur\" agentid=\"3010612\" agenttypeid=\"4\" corporationid=\"1000160\" divisionid=\"18\" level=\"2\" locationid=\"60014071\" locator=\"true\"/>\r\n    <row agent=\"Riluko Esbjavik\" agentid=\"3010613\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"22\" level=\"1\" locationid=\"60014074\" locator=\"false\"/>\r\n    <row agent=\"Alfrulf Adinagitta\" agentid=\"3010614\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"23\" level=\"4\" locationid=\"60014095\" locator=\"true\"/>\r\n    <row agent=\"Kidakaestur Isangrede\" agentid=\"3010615\" agenttypeid=\"4\" corporationid=\"1000160\" divisionid=\"18\" level=\"1\" locationid=\"60014098\" locator=\"false\"/>\r\n    <row agent=\"Freakmikar Fomanko\" agentid=\"3010616\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"22\" level=\"3\" locationid=\"60014137\" locator=\"false\"/>\r\n    <row agent=\"Anondik Sorogur\" agentid=\"3010617\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"22\" level=\"4\" locationid=\"60014140\" locator=\"true\"/>\r\n    <row agent=\"Askilhar Hreurn\" agentid=\"3010618\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"24\" level=\"3\" locationid=\"60014068\" locator=\"true\"/>\r\n    <row agent=\"Hog Hakeonari\" agentid=\"3010619\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"22\" level=\"4\" locationid=\"60014065\" locator=\"true\"/>\r\n    <row agent=\"Mannekar Daleder\" agentid=\"3010620\" agenttypeid=\"4\" corporationid=\"1000160\" divisionid=\"18\" level=\"1\" locationid=\"60014062\" locator=\"false\"/>\r\n    <row agent=\"Matilhelm Bodadur\" agentid=\"3010621\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"24\" level=\"3\" locationid=\"60014134\" locator=\"true\"/>\r\n    <row agent=\"Onabemur Attar\" agentid=\"3010622\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"22\" level=\"2\" locationid=\"60014131\" locator=\"false\"/>\r\n    <row agent=\"Alfrald Enstulf\" agentid=\"3010623\" agenttypeid=\"8\" corporationid=\"1000160\" divisionid=\"24\" level=\"5\" locationid=\"60014143\" locator=\"false\"/>\r\n    <row agent=\"Eladizo Ansfriken\" agentid=\"3010624\" agenttypeid=\"4\" corporationid=\"1000160\" divisionid=\"18\" level=\"2\" locationid=\"60014146\" locator=\"false\"/>\r\n    <row agent=\"Knuginzo Jeritta\" agentid=\"3010625\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"22\" level=\"4\" locationid=\"60014110\" locator=\"true\"/>\r\n    <row agent=\"Adela Eskavert\" agentid=\"3010626\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"22\" level=\"1\" locationid=\"60014107\" locator=\"true\"/>\r\n    <row agent=\"Eadled Edo\" agentid=\"3010627\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"22\" level=\"1\" locationid=\"60014092\" locator=\"false\"/>\r\n    <row agent=\"Elmwo Askelef\" agentid=\"3010628\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"22\" level=\"2\" locationid=\"60014089\" locator=\"true\"/>\r\n    <row agent=\"Aruko Villakard\" agentid=\"3010629\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"24\" level=\"4\" locationid=\"60014122\" locator=\"true\"/>\r\n    <row agent=\"Friss Asreva\" agentid=\"3010630\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"23\" level=\"1\" locationid=\"60014119\" locator=\"false\"/>\r\n    <row agent=\"Vudobrauan Hralm\" agentid=\"3010631\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"24\" level=\"4\" locationid=\"60014077\" locator=\"false\"/>\r\n    <row agent=\"Sigmakidi Tottalfill\" agentid=\"3010632\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"23\" level=\"1\" locationid=\"60014080\" locator=\"false\"/>\r\n    <row agent=\"Odilulf Isalolf\" agentid=\"3010633\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"23\" level=\"2\" locationid=\"60014125\" locator=\"false\"/>\r\n    <row agent=\"Edrei Hemolifer\" agentid=\"3010634\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"24\" level=\"4\" locationid=\"60014128\" locator=\"false\"/>\r\n    <row agent=\"Rirokton Togmur\" agentid=\"3010635\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"22\" level=\"4\" locationid=\"60014083\" locator=\"true\"/>\r\n    <row agent=\"Endit Irolf\" agentid=\"3010636\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"24\" level=\"2\" locationid=\"60014086\" locator=\"false\"/>\r\n    <row agent=\"Amlusming Wyrd\" agentid=\"3010637\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"24\" level=\"1\" locationid=\"60014101\" locator=\"false\"/>\r\n    <row agent=\"Ebiluard Stylera\" agentid=\"3010638\" agenttypeid=\"4\" corporationid=\"1000160\" divisionid=\"18\" level=\"1\" locationid=\"60014104\" locator=\"false\"/>\r\n    <row agent=\"Ebasger Arsvald\" agentid=\"3010639\" agenttypeid=\"4\" corporationid=\"1000160\" divisionid=\"18\" level=\"2\" locationid=\"60014116\" locator=\"false\"/>\r\n    <row agent=\"Rildboko Ereid\" agentid=\"3010640\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"23\" level=\"4\" locationid=\"60014113\" locator=\"false\"/>\r\n    <row agent=\"Afsur Omblur\" agentid=\"3010641\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"1\" locationid=\"60014149\" locator=\"false\"/>\r\n    <row agent=\"Nabania Psankan\" agentid=\"3010642\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"3\" locationid=\"60014221\" locator=\"true\"/>\r\n    <row agent=\"Ikaine Juuronaiken\" agentid=\"3010643\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"1\" locationid=\"60014224\" locator=\"false\"/>\r\n    <row agent=\"Eding Tjek\" agentid=\"3010644\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"2\" locationid=\"60014227\" locator=\"false\"/>\r\n    <row agent=\"Achtes Rille\" agentid=\"3010645\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"1\" locationid=\"60014230\" locator=\"true\"/>\r\n    <row agent=\"Jalshinden Agis\" agentid=\"3010646\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"2\" locationid=\"60014233\" locator=\"false\"/>\r\n    <row agent=\"Oessync Molder\" agentid=\"3010647\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"1\" locationid=\"60014236\" locator=\"false\"/>\r\n    <row agent=\"Blolilan Assochaere\" agentid=\"3010648\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"4\" locationid=\"60014182\" locator=\"false\"/>\r\n    <row agent=\"Mashi Zadanu\" agentid=\"3010649\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"1\" locationid=\"60014176\" locator=\"true\"/>\r\n    <row agent=\"Utrisen Hono\" agentid=\"3010650\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"1\" locationid=\"60014179\" locator=\"false\"/>\r\n    <row agent=\"Itanala Airelen\" agentid=\"3010651\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"1\" locationid=\"60014266\" locator=\"false\"/>\r\n    <row agent=\"Ajai Akio\" agentid=\"3010652\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"1\" locationid=\"60014269\" locator=\"true\"/>\r\n    <row agent=\"Groelande Erckee\" agentid=\"3010653\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"1\" locationid=\"60014272\" locator=\"false\"/>\r\n    <row agent=\"Egand Gerremur\" agentid=\"3010654\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"3\" locationid=\"60014152\" locator=\"true\"/>\r\n    <row agent=\"Lird Herako\" agentid=\"3010655\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"3\" locationid=\"60014155\" locator=\"false\"/>\r\n    <row agent=\"Pierramitte Desebvrillot\" agentid=\"3010656\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"1\" locationid=\"60014164\" locator=\"false\"/>\r\n    <row agent=\"Mendia Natrair\" agentid=\"3010657\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"2\" locationid=\"60014158\" locator=\"false\"/>\r\n    <row agent=\"Anchauttes Cleyn\" agentid=\"3010658\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"3\" locationid=\"60014161\" locator=\"false\"/>\r\n    <row agent=\"Hyykiala Futtari\" agentid=\"3010659\" agenttypeid=\"8\" corporationid=\"1000161\" divisionid=\"22\" level=\"5\" locationid=\"60014206\" locator=\"false\"/>\r\n    <row agent=\"Asunula Aarikken\" agentid=\"3010660\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"4\" locationid=\"60014203\" locator=\"false\"/>\r\n    <row agent=\"Meugenlieu Lede\" agentid=\"3010661\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"2\" locationid=\"60014209\" locator=\"true\"/>\r\n    <row agent=\"Ukkegas Otatoh\" agentid=\"3010662\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"1\" locationid=\"60014185\" locator=\"false\"/>\r\n    <row agent=\"Woligabet Gungvidi\" agentid=\"3010663\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"3\" locationid=\"60014188\" locator=\"false\"/>\r\n    <row agent=\"Redolund Modrold\" agentid=\"3010664\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"2\" locationid=\"60014191\" locator=\"true\"/>\r\n    <row agent=\"Mouh Matyed\" agentid=\"3010665\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"4\" locationid=\"60014257\" locator=\"true\"/>\r\n    <row agent=\"Jedira Mesar\" agentid=\"3010666\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"2\" locationid=\"60014263\" locator=\"true\"/>\r\n    <row agent=\"Etymet Aesen\" agentid=\"3010667\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"1\" locationid=\"60014260\" locator=\"true\"/>\r\n    <row agent=\"Daduner Tayllanch\" agentid=\"3010668\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"4\" locationid=\"60014167\" locator=\"true\"/>\r\n    <row agent=\"Geinekur Arvekar\" agentid=\"3010669\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"1\" locationid=\"60014170\" locator=\"false\"/>\r\n    <row agent=\"Pazi Jimiruh\" agentid=\"3010670\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"1\" locationid=\"60014173\" locator=\"false\"/>\r\n    <row agent=\"Oren Aesbad\" agentid=\"3010671\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"2\" locationid=\"60014245\" locator=\"false\"/>\r\n    <row agent=\"Edusen Friens\" agentid=\"3010672\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"4\" locationid=\"60014242\" locator=\"false\"/>\r\n    <row agent=\"Udman Gunonbjer\" agentid=\"3010673\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"4\" locationid=\"60014239\" locator=\"true\"/>\r\n    <row agent=\"Erdur Hjedt\" agentid=\"3010674\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"3\" locationid=\"60014218\" locator=\"false\"/>\r\n    <row agent=\"Oddeldaktar Sorsdaltur\" agentid=\"3010675\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"1\" locationid=\"60014212\" locator=\"false\"/>\r\n    <row agent=\"Apiencaron Athellaert\" agentid=\"3010676\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"3\" locationid=\"60014215\" locator=\"false\"/>\r\n    <row agent=\"Geidulf Virmako\" agentid=\"3010677\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"2\" locationid=\"60014278\" locator=\"false\"/>\r\n    <row agent=\"Detere Zanisale\" agentid=\"3010678\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"3\" locationid=\"60014275\" locator=\"true\"/>\r\n    <row agent=\"Aecht Beel\" agentid=\"3010679\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"4\" locationid=\"60014281\" locator=\"false\"/>\r\n    <row agent=\"Vinolfid Harmirkar\" agentid=\"3010680\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"1\" locationid=\"60014248\" locator=\"false\"/>\r\n    <row agent=\"Okenieto Aulinken\" agentid=\"3010681\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"4\" locationid=\"60014254\" locator=\"false\"/>\r\n    <row agent=\"Agala Ilques\" agentid=\"3010682\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"1\" locationid=\"60014251\" locator=\"true\"/>\r\n    <row agent=\"Ainoutte Oursinault\" agentid=\"3010683\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"1\" locationid=\"60014194\" locator=\"false\"/>\r\n    <row agent=\"Taintanen Kisovas\" agentid=\"3010684\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"2\" locationid=\"60014197\" locator=\"false\"/>\r\n    <row agent=\"Athet Artehan\" agentid=\"3010685\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"2\" locationid=\"60014200\" locator=\"false\"/>\r\n    <row agent=\"Sirlorette Ouellelle\" agentid=\"3010686\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"1\" locationid=\"60014284\" locator=\"true\"/>\r\n    <row agent=\"Orsegnel Virault\" agentid=\"3010687\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014326\" locator=\"true\"/>\r\n    <row agent=\"Ardaelloure Loon\" agentid=\"3010688\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"1\" locationid=\"60014329\" locator=\"false\"/>\r\n    <row agent=\"Brokara Ryver\" agentid=\"3010689\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014350\" locator=\"false\"/>\r\n    <row agent=\"Damaini Jusemet\" agentid=\"3010690\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"1\" locationid=\"60014353\" locator=\"false\"/>\r\n    <row agent=\"Odgund Wimfren\" agentid=\"3010691\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"3\" locationid=\"60014305\" locator=\"false\"/>\r\n    <row agent=\"Rochah Mafah\" agentid=\"3010692\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"2\" locationid=\"60014302\" locator=\"false\"/>\r\n    <row agent=\"Chelm Soran\" agentid=\"3010693\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014356\" locator=\"false\"/>\r\n    <row agent=\"Fotine Anilla\" agentid=\"3010694\" agenttypeid=\"8\" corporationid=\"1000162\" divisionid=\"24\" level=\"5\" locationid=\"60014359\" locator=\"false\"/>\r\n    <row agent=\"Oishonen Sano\" agentid=\"3010695\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"3\" locationid=\"60014287\" locator=\"false\"/>\r\n    <row agent=\"Selynne Mardakar\" agentid=\"3010696\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014293\" locator=\"false\"/>\r\n    <row agent=\"Luratene Edmoure\" agentid=\"3010697\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"2\" locationid=\"60014290\" locator=\"false\"/>\r\n    <row agent=\"Eystana Auspur\" agentid=\"3010698\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"3\" locationid=\"60014296\" locator=\"true\"/>\r\n    <row agent=\"Armirrot Ingheroule\" agentid=\"3010699\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014299\" locator=\"true\"/>\r\n    <row agent=\"Situnen Nanmaa\" agentid=\"3010700\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"1\" locationid=\"60014341\" locator=\"false\"/>\r\n    <row agent=\"Amidier Ponchiette\" agentid=\"3010701\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"2\" locationid=\"60014338\" locator=\"false\"/>\r\n    <row agent=\"Mifra Savsousi\" agentid=\"3010702\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"1\" locationid=\"60014317\" locator=\"false\"/>\r\n    <row agent=\"Ohinen Uvi\" agentid=\"3010703\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"1\" locationid=\"60014314\" locator=\"false\"/>\r\n    <row agent=\"Aubier Pelfin\" agentid=\"3010704\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"2\" locationid=\"60014371\" locator=\"false\"/>\r\n    <row agent=\"Wrezere Mivellaers\" agentid=\"3010705\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"2\" locationid=\"60014368\" locator=\"false\"/>\r\n    <row agent=\"Roire Aubonard\" agentid=\"3010706\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014311\" locator=\"false\"/>\r\n    <row agent=\"Irsti Gotlenur\" agentid=\"3010707\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"1\" locationid=\"60014308\" locator=\"false\"/>\r\n    <row agent=\"Micoreullon Ramme\" agentid=\"3010708\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014335\" locator=\"false\"/>\r\n    <row agent=\"Avagnel Vifrobahnel\" agentid=\"3010709\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"1\" locationid=\"60014332\" locator=\"true\"/>\r\n    <row agent=\"Dardicent Herirlier\" agentid=\"3010710\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"2\" locationid=\"60014344\" locator=\"false\"/>\r\n    <row agent=\"Adwe Stulf\" agentid=\"3010711\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"1\" locationid=\"60014347\" locator=\"false\"/>\r\n    <row agent=\"Neliker Shahoun\" agentid=\"3010712\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"3\" locationid=\"60014362\" locator=\"false\"/>\r\n    <row agent=\"Pilbralie Aloutte\" agentid=\"3010713\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"2\" locationid=\"60014365\" locator=\"false\"/>\r\n    <row agent=\"Shittari Inakawa\" agentid=\"3010714\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"2\" locationid=\"60014320\" locator=\"false\"/>\r\n    <row agent=\"Nokane Tuotela\" agentid=\"3010715\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"2\" locationid=\"60014323\" locator=\"false\"/>\r\n    <row agent=\"Askuldur Kafruger\" agentid=\"3010716\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"24\" level=\"1\" locationid=\"60014374\" locator=\"false\"/>\r\n    <row agent=\"Gotreda Hrein\" agentid=\"3010717\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"3\" locationid=\"60014437\" locator=\"false\"/>\r\n    <row agent=\"Ondanold Olsar\" agentid=\"3010718\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"24\" level=\"2\" locationid=\"60014434\" locator=\"false\"/>\r\n    <row agent=\"Ikostur Itur\" agentid=\"3010719\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"1\" locationid=\"60014461\" locator=\"false\"/>\r\n    <row agent=\"Meirlar Hogstossen\" agentid=\"3010720\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"2\" locationid=\"60014458\" locator=\"false\"/>\r\n    <row agent=\"Wlbrok Olvika\" agentid=\"3010721\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"1\" locationid=\"60014407\" locator=\"false\"/>\r\n    <row agent=\"Tobekarulf Fadvamund\" agentid=\"3010722\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"2\" locationid=\"60014404\" locator=\"false\"/>\r\n    <row agent=\"Ulotta Relm\" agentid=\"3010723\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"1\" locationid=\"60014422\" locator=\"false\"/>\r\n    <row agent=\"Apset Odiber\" agentid=\"3010724\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"24\" level=\"1\" locationid=\"60014452\" locator=\"true\"/>\r\n    <row agent=\"Odmo Engisi\" agentid=\"3010725\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"2\" locationid=\"60014425\" locator=\"false\"/>\r\n    <row agent=\"Elaef Armelur\" agentid=\"3010726\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"3\" locationid=\"60014455\" locator=\"true\"/>\r\n    <row agent=\"Grewlf Audari\" agentid=\"3010727\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"2\" locationid=\"60014377\" locator=\"false\"/>\r\n    <row agent=\"Uanslironel Egding\" agentid=\"3010728\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"24\" level=\"4\" locationid=\"60014383\" locator=\"true\"/>\r\n    <row agent=\"Hronjedrik Algat\" agentid=\"3010729\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"24\" level=\"4\" locationid=\"60014380\" locator=\"false\"/>\r\n    <row agent=\"Harven Taven\" agentid=\"3010730\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"24\" level=\"3\" locationid=\"60014428\" locator=\"false\"/>\r\n    <row agent=\"Asbran Tolgaven\" agentid=\"3010731\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"24\" level=\"2\" locationid=\"60014431\" locator=\"false\"/>\r\n    <row agent=\"Atgand Reud\" agentid=\"3010732\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"2\" locationid=\"60014395\" locator=\"false\"/>\r\n    <row agent=\"Odurstur Atana\" agentid=\"3010733\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"24\" level=\"2\" locationid=\"60014392\" locator=\"false\"/>\r\n    <row agent=\"Ivinlen Aetakur\" agentid=\"3010734\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"4\" locationid=\"60014401\" locator=\"false\"/>\r\n    <row agent=\"Fondedmini Serg\" agentid=\"3010735\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"24\" level=\"3\" locationid=\"60014398\" locator=\"true\"/>\r\n    <row agent=\"Odboko Vir\" agentid=\"3010736\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"2\" locationid=\"60014389\" locator=\"false\"/>\r\n    <row agent=\"Stelur Aremold\" agentid=\"3010737\" agenttypeid=\"8\" corporationid=\"1000163\" divisionid=\"22\" level=\"5\" locationid=\"60014386\" locator=\"false\"/>\r\n    <row agent=\"Engader Wlfhorl\" agentid=\"3010738\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"2\" locationid=\"60014443\" locator=\"false\"/>\r\n    <row agent=\"Gei Kadlotta\" agentid=\"3010739\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"2\" locationid=\"60014440\" locator=\"false\"/>\r\n    <row agent=\"Lavamogar Einur\" agentid=\"3010740\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"24\" level=\"1\" locationid=\"60014446\" locator=\"false\"/>\r\n    <row agent=\"Zeir Gumonot\" agentid=\"3010741\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"4\" locationid=\"60014449\" locator=\"true\"/>\r\n    <row agent=\"Fenugur Askold\" agentid=\"3010742\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"2\" locationid=\"60014416\" locator=\"false\"/>\r\n    <row agent=\"Hurgtur Arike\" agentid=\"3010743\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"24\" level=\"2\" locationid=\"60014419\" locator=\"false\"/>\r\n    <row agent=\"Agirtad Metardror\" agentid=\"3010744\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"24\" level=\"2\" locationid=\"60014410\" locator=\"false\"/>\r\n    <row agent=\"Sydweine Ardreas\" agentid=\"3010745\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"24\" level=\"1\" locationid=\"60014413\" locator=\"false\"/>\r\n    <row agent=\"Lialuala Pentuter\" agentid=\"3010746\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"24\" level=\"1\" locationid=\"60014464\" locator=\"false\"/>\r\n    <row agent=\"Andiksdagber Kademulf\" agentid=\"3010747\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"4\" locationid=\"60014527\" locator=\"false\"/>\r\n    <row agent=\"Meksenulf Ekgaker\" agentid=\"3010748\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"1\" locationid=\"60014533\" locator=\"false\"/>\r\n    <row agent=\"Chigas Pomari\" agentid=\"3010749\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"1\" locationid=\"60014530\" locator=\"false\"/>\r\n    <row agent=\"Niviler Astaran\" agentid=\"3010750\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"24\" level=\"4\" locationid=\"60014470\" locator=\"true\"/>\r\n    <row agent=\"Gerskur Hrinz\" agentid=\"3010751\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"2\" locationid=\"60014467\" locator=\"false\"/>\r\n    <row agent=\"Ukbashe Multamod\" agentid=\"3010752\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"2\" locationid=\"60014548\" locator=\"false\"/>\r\n    <row agent=\"Ormalban Euruilat\" agentid=\"3010753\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"3\" locationid=\"60014551\" locator=\"false\"/>\r\n    <row agent=\"Tantami Sakulito\" agentid=\"3010754\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"24\" level=\"3\" locationid=\"60014545\" locator=\"false\"/>\r\n    <row agent=\"Tashiken Hunttanen\" agentid=\"3010755\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"1\" locationid=\"60014509\" locator=\"false\"/>\r\n    <row agent=\"Tekomozu Taikio\" agentid=\"3010756\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"2\" locationid=\"60014512\" locator=\"false\"/>\r\n    <row agent=\"Ogena Out\" agentid=\"3010757\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"4\" locationid=\"60014515\" locator=\"false\"/>\r\n    <row agent=\"Angireque Vippiron\" agentid=\"3010758\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"24\" level=\"4\" locationid=\"60014521\" locator=\"false\"/>\r\n    <row agent=\"Deemos Komoubi\" agentid=\"3010759\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"4\" locationid=\"60014518\" locator=\"true\"/>\r\n    <row agent=\"Honaldur Amangrald\" agentid=\"3010760\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"1\" locationid=\"60014524\" locator=\"false\"/>\r\n    <row agent=\"Baldrelner Beraert\" agentid=\"3010761\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"4\" locationid=\"60014485\" locator=\"false\"/>\r\n    <row agent=\"Poillin Ignerotta\" agentid=\"3010762\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"1\" locationid=\"60014482\" locator=\"false\"/>\r\n    <row agent=\"Shadakhbos Irieh\" agentid=\"3010763\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"24\" level=\"2\" locationid=\"60014488\" locator=\"true\"/>\r\n    <row agent=\"Kahken Uura\" agentid=\"3010764\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"3\" locationid=\"60014554\" locator=\"false\"/>\r\n    <row agent=\"Shuhola Oritie\" agentid=\"3010765\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"24\" level=\"4\" locationid=\"60014560\" locator=\"true\"/>\r\n    <row agent=\"Habiela Darali\" agentid=\"3010766\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"2\" locationid=\"60014557\" locator=\"false\"/>\r\n    <row agent=\"Vernazi Attem\" agentid=\"3010767\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"2\" locationid=\"60014563\" locator=\"false\"/>\r\n    <row agent=\"Snahian Hihsa\" agentid=\"3010768\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"1\" locationid=\"60014566\" locator=\"false\"/>\r\n    <row agent=\"Karodan Nietira\" agentid=\"3010769\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"24\" level=\"4\" locationid=\"60014569\" locator=\"false\"/>\r\n    <row agent=\"Olbran Arneka\" agentid=\"3010770\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"2\" locationid=\"60014572\" locator=\"false\"/>\r\n    <row agent=\"Ahrairbaine Boullotames\" agentid=\"3010771\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"24\" level=\"2\" locationid=\"60014578\" locator=\"false\"/>\r\n    <row agent=\"Poure Thoure\" agentid=\"3010772\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"4\" locationid=\"60014575\" locator=\"false\"/>\r\n    <row agent=\"Gillon Bryngete\" agentid=\"3010773\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"1\" locationid=\"60014581\" locator=\"false\"/>\r\n    <row agent=\"Cle Vaufer\" agentid=\"3010774\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"2\" locationid=\"60014584\" locator=\"true\"/>\r\n    <row agent=\"Ivoldart Rolt\" agentid=\"3010775\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"2\" locationid=\"60014587\" locator=\"false\"/>\r\n    <row agent=\"Ittant Bottorellon\" agentid=\"3010776\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"1\" locationid=\"60014590\" locator=\"false\"/>\r\n    <row agent=\"Herbomur Antikelm\" agentid=\"3010777\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"2\" locationid=\"60014593\" locator=\"true\"/>\r\n    <row agent=\"Atonder Oldbias\" agentid=\"3010778\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"3\" locationid=\"60014596\" locator=\"false\"/>\r\n    <row agent=\"Hasi Matshi\" agentid=\"3010779\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"1\" locationid=\"60014539\" locator=\"false\"/>\r\n    <row agent=\"Goggert Innolf\" agentid=\"3010780\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"2\" locationid=\"60014542\" locator=\"false\"/>\r\n    <row agent=\"Engata Lirfur\" agentid=\"3010781\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"4\" locationid=\"60014536\" locator=\"false\"/>\r\n    <row agent=\"Krirden Audulden\" agentid=\"3010782\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"24\" level=\"2\" locationid=\"60014500\" locator=\"false\"/>\r\n    <row agent=\"Okseroila Risku\" agentid=\"3010783\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"2\" locationid=\"60014503\" locator=\"false\"/>\r\n    <row agent=\"Blelle Aegheem\" agentid=\"3010784\" agenttypeid=\"8\" corporationid=\"1000164\" divisionid=\"22\" level=\"5\" locationid=\"60014506\" locator=\"false\"/>\r\n    <row agent=\"Auslay Dermesbeyne\" agentid=\"3010785\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"3\" locationid=\"60014479\" locator=\"false\"/>\r\n    <row agent=\"Toilen Korvas\" agentid=\"3010786\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"24\" level=\"1\" locationid=\"60014473\" locator=\"false\"/>\r\n    <row agent=\"Araqi Ildir\" agentid=\"3010787\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"2\" locationid=\"60014476\" locator=\"false\"/>\r\n    <row agent=\"Ongjer Odida\" agentid=\"3010788\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"24\" level=\"2\" locationid=\"60014494\" locator=\"false\"/>\r\n    <row agent=\"Liatter Eldrek\" agentid=\"3010789\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"22\" level=\"1\" locationid=\"60014497\" locator=\"false\"/>\r\n    <row agent=\"Keltz Sotana\" agentid=\"3010790\" agenttypeid=\"2\" corporationid=\"1000164\" divisionid=\"24\" level=\"2\" locationid=\"60014491\" locator=\"false\"/>\r\n    <row agent=\"Houla Seiradih\" agentid=\"3010791\" agenttypeid=\"3\" corporationid=\"1000165\" divisionid=\"22\" level=\"1\" locationid=\"60014599\" locator=\"false\"/>\r\n    <row agent=\"Jaynara Nozu\" agentid=\"3010792\" agenttypeid=\"2\" corporationid=\"1000165\" divisionid=\"22\" level=\"2\" locationid=\"60014620\" locator=\"false\"/>\r\n    <row agent=\"Yotana Mahir\" agentid=\"3010793\" agenttypeid=\"2\" corporationid=\"1000165\" divisionid=\"22\" level=\"1\" locationid=\"60014605\" locator=\"false\"/>\r\n    <row agent=\"Rabhaneh Ojer\" agentid=\"3010794\" agenttypeid=\"2\" corporationid=\"1000165\" divisionid=\"22\" level=\"3\" locationid=\"60014608\" locator=\"true\"/>\r\n    <row agent=\"Dotath Saal\" agentid=\"3010795\" agenttypeid=\"2\" corporationid=\"1000165\" divisionid=\"22\" level=\"4\" locationid=\"60014611\" locator=\"false\"/>\r\n    <row agent=\"Neasa Tabier\" agentid=\"3010796\" agenttypeid=\"2\" corporationid=\"1000165\" divisionid=\"22\" level=\"2\" locationid=\"60014614\" locator=\"false\"/>\r\n    <row agent=\"Nekhaz Corelot\" agentid=\"3010797\" agenttypeid=\"8\" corporationid=\"1000165\" divisionid=\"22\" level=\"5\" locationid=\"60014617\" locator=\"false\"/>\r\n    <row agent=\"Giran Soldi\" agentid=\"3010798\" agenttypeid=\"2\" corporationid=\"1000165\" divisionid=\"22\" level=\"4\" locationid=\"60014623\" locator=\"true\"/>\r\n    <row agent=\"Kavavsaf Gari\" agentid=\"3010799\" agenttypeid=\"2\" corporationid=\"1000165\" divisionid=\"22\" level=\"1\" locationid=\"60014626\" locator=\"false\"/>\r\n    <row agent=\"Somarkia Ubar\" agentid=\"3010800\" agenttypeid=\"2\" corporationid=\"1000165\" divisionid=\"22\" level=\"3\" locationid=\"60014602\" locator=\"false\"/>\r\n    <row agent=\"Lidafa Maga\" agentid=\"3010801\" agenttypeid=\"3\" corporationid=\"1000166\" divisionid=\"22\" level=\"1\" locationid=\"60014629\" locator=\"false\"/>\r\n    <row agent=\"Ehan Handi\" agentid=\"3010802\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"2\" locationid=\"60014635\" locator=\"true\"/>\r\n    <row agent=\"Apunar Atoosh\" agentid=\"3010803\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"4\" locationid=\"60014644\" locator=\"false\"/>\r\n    <row agent=\"Khadonevedu Nibainkier\" agentid=\"3010804\" agenttypeid=\"8\" corporationid=\"1000166\" divisionid=\"22\" level=\"5\" locationid=\"60014653\" locator=\"false\"/>\r\n    <row agent=\"Semah Sheila\" agentid=\"3010805\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"2\" locationid=\"60014638\" locator=\"false\"/>\r\n    <row agent=\"Delabet Adiam\" agentid=\"3010806\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"2\" locationid=\"60014632\" locator=\"false\"/>\r\n    <row agent=\"Eredlis Kheen\" agentid=\"3010807\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"2\" locationid=\"60014641\" locator=\"false\"/>\r\n    <row agent=\"Cardohzon Aneri\" agentid=\"3010808\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"3\" locationid=\"60014647\" locator=\"true\"/>\r\n    <row agent=\"Narol Holhana\" agentid=\"3010809\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"2\" locationid=\"60014656\" locator=\"false\"/>\r\n    <row agent=\"Bridi Tenegh\" agentid=\"3010810\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"3\" locationid=\"60014650\" locator=\"false\"/>\r\n    <row agent=\"Toiniainen Omu\" agentid=\"3010811\" agenttypeid=\"3\" corporationid=\"1000167\" divisionid=\"22\" level=\"1\" locationid=\"60014659\" locator=\"false\"/>\r\n    <row agent=\"Aibi Okseroila\" agentid=\"3010812\" agenttypeid=\"2\" corporationid=\"1000167\" divisionid=\"22\" level=\"4\" locationid=\"60014686\" locator=\"false\"/>\r\n    <row agent=\"Kokitaira Tsutara\" agentid=\"3010813\" agenttypeid=\"2\" corporationid=\"1000167\" divisionid=\"22\" level=\"2\" locationid=\"60014671\" locator=\"true\"/>\r\n    <row agent=\"Uunse Has\" agentid=\"3010814\" agenttypeid=\"2\" corporationid=\"1000167\" divisionid=\"22\" level=\"4\" locationid=\"60014662\" locator=\"false\"/>\r\n    <row agent=\"Kamaala Uehashi\" agentid=\"3010815\" agenttypeid=\"2\" corporationid=\"1000167\" divisionid=\"22\" level=\"4\" locationid=\"60014680\" locator=\"true\"/>\r\n    <row agent=\"Asaken Pietkane\" agentid=\"3010816\" agenttypeid=\"2\" corporationid=\"1000167\" divisionid=\"22\" level=\"4\" locationid=\"60014674\" locator=\"true\"/>\r\n    <row agent=\"Utrigas Oikilen\" agentid=\"3010817\" agenttypeid=\"2\" corporationid=\"1000167\" divisionid=\"22\" level=\"3\" locationid=\"60014665\" locator=\"false\"/>\r\n    <row agent=\"Katusen Nukanata\" agentid=\"3010818\" agenttypeid=\"2\" corporationid=\"1000167\" divisionid=\"22\" level=\"2\" locationid=\"60014677\" locator=\"false\"/>\r\n    <row agent=\"Isaken Sarkeda\" agentid=\"3010819\" agenttypeid=\"2\" corporationid=\"1000167\" divisionid=\"22\" level=\"2\" locationid=\"60014683\" locator=\"true\"/>\r\n    <row agent=\"Osie Ohmahailen\" agentid=\"3010820\" agenttypeid=\"8\" corporationid=\"1000167\" divisionid=\"22\" level=\"5\" locationid=\"60014668\" locator=\"false\"/>\r\n    <row agent=\"Apenette Cadelanne\" agentid=\"3010821\" agenttypeid=\"3\" corporationid=\"1000168\" divisionid=\"22\" level=\"1\" locationid=\"60014689\" locator=\"false\"/>\r\n    <row agent=\"Aunia Assie\" agentid=\"3010822\" agenttypeid=\"2\" corporationid=\"1000168\" divisionid=\"22\" level=\"3\" locationid=\"60014692\" locator=\"false\"/>\r\n    <row agent=\"Bouey Sadereron\" agentid=\"3010823\" agenttypeid=\"8\" corporationid=\"1000168\" divisionid=\"22\" level=\"5\" locationid=\"60014716\" locator=\"false\"/>\r\n    <row agent=\"Andarane Ringilaille\" agentid=\"3010824\" agenttypeid=\"2\" corporationid=\"1000168\" divisionid=\"22\" level=\"1\" locationid=\"60014698\" locator=\"false\"/>\r\n    <row agent=\"Contaire Ossins\" agentid=\"3010825\" agenttypeid=\"2\" corporationid=\"1000168\" divisionid=\"22\" level=\"2\" locationid=\"60014701\" locator=\"false\"/>\r\n    <row agent=\"Enoittinon Givelle\" agentid=\"3010826\" agenttypeid=\"2\" corporationid=\"1000168\" divisionid=\"22\" level=\"4\" locationid=\"60014707\" locator=\"false\"/>\r\n    <row agent=\"Yvesque Gronssyn\" agentid=\"3010827\" agenttypeid=\"2\" corporationid=\"1000168\" divisionid=\"22\" level=\"4\" locationid=\"60014710\" locator=\"false\"/>\r\n    <row agent=\"Bureneque Heyssinodis\" agentid=\"3010828\" agenttypeid=\"2\" corporationid=\"1000168\" divisionid=\"22\" level=\"2\" locationid=\"60014713\" locator=\"false\"/>\r\n    <row agent=\"Yvelle Adraille\" agentid=\"3010829\" agenttypeid=\"2\" corporationid=\"1000168\" divisionid=\"22\" level=\"3\" locationid=\"60014704\" locator=\"false\"/>\r\n    <row agent=\"Guyotghen Adoudel\" agentid=\"3010830\" agenttypeid=\"2\" corporationid=\"1000168\" divisionid=\"22\" level=\"2\" locationid=\"60014695\" locator=\"false\"/>\r\n    <row agent=\"Gian Rouppon\" agentid=\"3010832\" agenttypeid=\"8\" corporationid=\"1000169\" divisionid=\"22\" level=\"5\" locationid=\"60014740\" locator=\"false\"/>\r\n    <row agent=\"Esalion Lay\" agentid=\"3010833\" agenttypeid=\"2\" corporationid=\"1000169\" divisionid=\"22\" level=\"3\" locationid=\"60014743\" locator=\"false\"/>\r\n    <row agent=\"Anseneque Ermagne\" agentid=\"3010834\" agenttypeid=\"2\" corporationid=\"1000169\" divisionid=\"22\" level=\"4\" locationid=\"60014734\" locator=\"true\"/>\r\n    <row agent=\"Trodovine Rieres\" agentid=\"3010835\" agenttypeid=\"2\" corporationid=\"1000169\" divisionid=\"22\" level=\"4\" locationid=\"60014725\" locator=\"false\"/>\r\n    <row agent=\"Armailitte Alonckbraert\" agentid=\"3010836\" agenttypeid=\"2\" corporationid=\"1000169\" divisionid=\"22\" level=\"2\" locationid=\"60014746\" locator=\"false\"/>\r\n    <row agent=\"Ekorecke Anchauttes\" agentid=\"3010837\" agenttypeid=\"2\" corporationid=\"1000169\" divisionid=\"22\" level=\"1\" locationid=\"60014737\" locator=\"false\"/>\r\n    <row agent=\"Ivonalle Galelare\" agentid=\"3010838\" agenttypeid=\"2\" corporationid=\"1000169\" divisionid=\"22\" level=\"2\" locationid=\"60014731\" locator=\"false\"/>\r\n    <row agent=\"Pilotte Hourille\" agentid=\"3010839\" agenttypeid=\"2\" corporationid=\"1000169\" divisionid=\"22\" level=\"3\" locationid=\"60014722\" locator=\"false\"/>\r\n    <row agent=\"Bedavardt Cadie\" agentid=\"3010840\" agenttypeid=\"2\" corporationid=\"1000169\" divisionid=\"22\" level=\"4\" locationid=\"60014728\" locator=\"true\"/>\r\n    <row agent=\"Jonnora Osagard\" agentid=\"3010841\" agenttypeid=\"3\" corporationid=\"1000170\" divisionid=\"22\" level=\"1\" locationid=\"60014749\" locator=\"false\"/>\r\n    <row agent=\"Adatter Aedin\" agentid=\"3010842\" agenttypeid=\"2\" corporationid=\"1000170\" divisionid=\"22\" level=\"3\" locationid=\"60014770\" locator=\"false\"/>\r\n    <row agent=\"Afgit Agiko\" agentid=\"3010843\" agenttypeid=\"2\" corporationid=\"1000170\" divisionid=\"22\" level=\"4\" locationid=\"60014758\" locator=\"false\"/>\r\n    <row agent=\"Idungel Austrenald\" agentid=\"3010844\" agenttypeid=\"2\" corporationid=\"1000170\" divisionid=\"22\" level=\"4\" locationid=\"60014767\" locator=\"true\"/>\r\n    <row agent=\"Oppur Aulrand\" agentid=\"3010845\" agenttypeid=\"2\" corporationid=\"1000170\" divisionid=\"22\" level=\"3\" locationid=\"60015038\" locator=\"false\"/>\r\n    <row agent=\"Aunirad Fegill\" agentid=\"3010846\" agenttypeid=\"8\" corporationid=\"1000170\" divisionid=\"22\" level=\"5\" locationid=\"60014761\" locator=\"false\"/>\r\n    <row agent=\"Egtrik Libold\" agentid=\"3010847\" agenttypeid=\"2\" corporationid=\"1000170\" divisionid=\"22\" level=\"2\" locationid=\"60014755\" locator=\"false\"/>\r\n    <row agent=\"Hraderiko Wlfrurd\" agentid=\"3010848\" agenttypeid=\"2\" corporationid=\"1000170\" divisionid=\"22\" level=\"2\" locationid=\"60014773\" locator=\"false\"/>\r\n    <row agent=\"Argi Yngvigur\" agentid=\"3010849\" agenttypeid=\"2\" corporationid=\"1000170\" divisionid=\"22\" level=\"3\" locationid=\"60014764\" locator=\"false\"/>\r\n    <row agent=\"Arnake Tadiko\" agentid=\"3010850\" agenttypeid=\"2\" corporationid=\"1000170\" divisionid=\"22\" level=\"2\" locationid=\"60014776\" locator=\"false\"/>\r\n    <row agent=\"Gukarla Beldad\" agentid=\"3010851\" agenttypeid=\"3\" corporationid=\"1000171\" divisionid=\"22\" level=\"1\" locationid=\"60014779\" locator=\"false\"/>\r\n    <row agent=\"Fider Tolelskorsur\" agentid=\"3010852\" agenttypeid=\"2\" corporationid=\"1000171\" divisionid=\"22\" level=\"2\" locationid=\"60014806\" locator=\"false\"/>\r\n    <row agent=\"Guvera Lovedia\" agentid=\"3010853\" agenttypeid=\"2\" corporationid=\"1000171\" divisionid=\"22\" level=\"4\" locationid=\"60014800\" locator=\"true\"/>\r\n    <row agent=\"Stunringsmur Sveruvard\" agentid=\"3010854\" agenttypeid=\"2\" corporationid=\"1000171\" divisionid=\"22\" level=\"2\" locationid=\"60014788\" locator=\"false\"/>\r\n    <row agent=\"Haen Astrarald\" agentid=\"3010855\" agenttypeid=\"2\" corporationid=\"1000171\" divisionid=\"22\" level=\"4\" locationid=\"60014791\" locator=\"false\"/>\r\n    <row agent=\"Filbrofur Admur\" agentid=\"3010856\" agenttypeid=\"8\" corporationid=\"1000171\" divisionid=\"22\" level=\"5\" locationid=\"60014797\" locator=\"false\"/>\r\n    <row agent=\"Gadulman Wulenbjon\" agentid=\"3010857\" agenttypeid=\"2\" corporationid=\"1000171\" divisionid=\"22\" level=\"1\" locationid=\"60014782\" locator=\"true\"/>\r\n    <row agent=\"Fasskeflur Orba\" agentid=\"3010858\" agenttypeid=\"2\" corporationid=\"1000171\" divisionid=\"22\" level=\"3\" locationid=\"60014803\" locator=\"false\"/>\r\n    <row agent=\"Krigasand Eytteinn\" agentid=\"3010859\" agenttypeid=\"2\" corporationid=\"1000171\" divisionid=\"22\" level=\"3\" locationid=\"60014785\" locator=\"true\"/>\r\n    <row agent=\"Getonsur Irkold\" agentid=\"3010860\" agenttypeid=\"2\" corporationid=\"1000171\" divisionid=\"22\" level=\"2\" locationid=\"60014794\" locator=\"true\"/>\r\n    <row agent=\"Orber Letava\" agentid=\"3010861\" agenttypeid=\"3\" corporationid=\"1000172\" divisionid=\"22\" level=\"1\" locationid=\"60014809\" locator=\"false\"/>\r\n    <row agent=\"Sel Habresia\" agentid=\"3010862\" agenttypeid=\"2\" corporationid=\"1000172\" divisionid=\"22\" level=\"2\" locationid=\"60014836\" locator=\"true\"/>\r\n    <row agent=\"Stoss Odatrik\" agentid=\"3010863\" agenttypeid=\"8\" corporationid=\"1000172\" divisionid=\"22\" level=\"5\" locationid=\"60014821\" locator=\"false\"/>\r\n    <row agent=\"Burtuli Oltolf\" agentid=\"3010864\" agenttypeid=\"2\" corporationid=\"1000172\" divisionid=\"22\" level=\"4\" locationid=\"60014815\" locator=\"false\"/>\r\n    <row agent=\"Lirlurad Wlfhod\" agentid=\"3010865\" agenttypeid=\"2\" corporationid=\"1000172\" divisionid=\"22\" level=\"1\" locationid=\"60014824\" locator=\"false\"/>\r\n    <row agent=\"Aikarla Renatikkin\" agentid=\"3010866\" agenttypeid=\"2\" corporationid=\"1000172\" divisionid=\"22\" level=\"3\" locationid=\"60014833\" locator=\"false\"/>\r\n    <row agent=\"Rogimer Gufrolf\" agentid=\"3010867\" agenttypeid=\"2\" corporationid=\"1000172\" divisionid=\"22\" level=\"4\" locationid=\"60014827\" locator=\"true\"/>\r\n    <row agent=\"Kagnelar Arstin\" agentid=\"3010868\" agenttypeid=\"2\" corporationid=\"1000172\" divisionid=\"22\" level=\"2\" locationid=\"60014818\" locator=\"false\"/>\r\n    <row agent=\"Wedeiken Oddeldaktar\" agentid=\"3010869\" agenttypeid=\"2\" corporationid=\"1000172\" divisionid=\"22\" level=\"4\" locationid=\"60014812\" locator=\"false\"/>\r\n    <row agent=\"Egbindur Treodeskar\" agentid=\"3010870\" agenttypeid=\"2\" corporationid=\"1000172\" divisionid=\"22\" level=\"1\" locationid=\"60014830\" locator=\"false\"/>\r\n    <row agent=\"Aikaras Heyntonen\" agentid=\"3010871\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000310\" locator=\"false\"/>\r\n    <row agent=\"Ozanami Suroma\" agentid=\"3010872\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"2\" locationid=\"60000400\" locator=\"false\"/>\r\n    <row agent=\"Eratoh Vistoya\" agentid=\"3010873\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"4\" locationid=\"60000397\" locator=\"false\"/>\r\n    <row agent=\"Samivesti Iivonas\" agentid=\"3010874\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000394\" locator=\"false\"/>\r\n    <row agent=\"Santera Nami\" agentid=\"3010875\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"2\" locationid=\"60000403\" locator=\"true\"/>\r\n    <row agent=\"Nitaka Aoki\" agentid=\"3010876\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"2\" locationid=\"60000367\" locator=\"false\"/>\r\n    <row agent=\"Isamila Aurila\" agentid=\"3010877\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"3\" locationid=\"60000421\" locator=\"false\"/>\r\n    <row agent=\"Iemuken Aakuwa\" agentid=\"3010878\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"24\" level=\"1\" locationid=\"60000322\" locator=\"false\"/>\r\n    <row agent=\"Okamainen Niuranto\" agentid=\"3010879\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"24\" level=\"1\" locationid=\"60000358\" locator=\"false\"/>\r\n    <row agent=\"Lihken Ogemi\" agentid=\"3010882\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"3\" locationid=\"60000385\" locator=\"true\"/>\r\n    <row agent=\"Oyonela Oguken\" agentid=\"3010883\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"2\" locationid=\"60000388\" locator=\"false\"/>\r\n    <row agent=\"Ruonio Sutenela\" agentid=\"3010884\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"2\" locationid=\"60000352\" locator=\"false\"/>\r\n    <row agent=\"Oikeras Siyoniki\" agentid=\"3010885\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"3\" locationid=\"60000346\" locator=\"false\"/>\r\n    <row agent=\"Ylojus Onereki\" agentid=\"3010887\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"3\" locationid=\"60000349\" locator=\"false\"/>\r\n    <row agent=\"Ochoras Ueha\" agentid=\"3010888\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000373\" locator=\"false\"/>\r\n    <row agent=\"Ushinokka Nindenen\" agentid=\"3010889\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000379\" locator=\"false\"/>\r\n    <row agent=\"Ylarita Ryeki\" agentid=\"3010890\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"4\" locationid=\"60000376\" locator=\"true\"/>\r\n    <row agent=\"Iji Kiyura\" agentid=\"3010891\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000370\" locator=\"false\"/>\r\n    <row agent=\"Vautemi Huunashin\" agentid=\"3010892\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000334\" locator=\"false\"/>\r\n    <row agent=\"Kauniainen Oho\" agentid=\"3010893\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000337\" locator=\"false\"/>\r\n    <row agent=\"Olkkosen Iras\" agentid=\"3010894\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000343\" locator=\"false\"/>\r\n    <row agent=\"Kakiainen Okanata\" agentid=\"3010895\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000340\" locator=\"false\"/>\r\n    <row agent=\"Ahtamon Varhila\" agentid=\"3010896\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"3\" locationid=\"60000319\" locator=\"false\"/>\r\n    <row agent=\"Ihikano Kuppas\" agentid=\"3010897\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000313\" locator=\"true\"/>\r\n    <row agent=\"Tatkashin Shunawairos\" agentid=\"3010898\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"3\" locationid=\"60000316\" locator=\"false\"/>\r\n    <row agent=\"Ouranienen Ikkoini\" agentid=\"3010899\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000322\" locator=\"false\"/>\r\n    <row agent=\"Uoyera Miltoh\" agentid=\"3010900\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000325\" locator=\"false\"/>\r\n    <row agent=\"Erinen Veikoyera\" agentid=\"3010901\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000328\" locator=\"false\"/>\r\n    <row agent=\"Kuotanen Kabara\" agentid=\"3010902\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"3\" locationid=\"60000331\" locator=\"true\"/>\r\n    <row agent=\"Oyami Kapumara\" agentid=\"3010903\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"3\" locationid=\"60000409\" locator=\"true\"/>\r\n    <row agent=\"Nigirada Antu\" agentid=\"3010904\" agenttypeid=\"8\" corporationid=\"1000004\" divisionid=\"22\" level=\"5\" locationid=\"60000412\" locator=\"false\"/>\r\n    <row agent=\"Haras Sichono\" agentid=\"3010905\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"3\" locationid=\"60000406\" locator=\"true\"/>\r\n    <row agent=\"Ourohuras Auttavas\" agentid=\"3010906\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000415\" locator=\"true\"/>\r\n    <row agent=\"Nabatanen Ourakiken\" agentid=\"3010907\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"3\" locationid=\"60000427\" locator=\"false\"/>\r\n    <row agent=\"Notaraka Ysen\" agentid=\"3010908\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"2\" locationid=\"60000421\" locator=\"false\"/>\r\n    <row agent=\"Yanedoinen Kie\" agentid=\"3010909\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"2\" locationid=\"60000424\" locator=\"false\"/>\r\n    <row agent=\"Nela Huska\" agentid=\"3010910\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000418\" locator=\"false\"/>\r\n    <row agent=\"Shishai Samanuni\" agentid=\"3010911\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"22\" level=\"1\" locationid=\"60000430\" locator=\"false\"/>\r\n    <row agent=\"Suisonakka Teiroma\" agentid=\"3010912\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"1\" locationid=\"60000532\" locator=\"false\"/>\r\n    <row agent=\"Hirento Raikkanen\" agentid=\"3010913\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"24\" level=\"2\" locationid=\"60000529\" locator=\"false\"/>\r\n    <row agent=\"Hohala Surkkinas\" agentid=\"3010914\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"3\" locationid=\"60000526\" locator=\"false\"/>\r\n    <row agent=\"Tika Avu\" agentid=\"3010915\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"24\" level=\"1\" locationid=\"60000577\" locator=\"true\"/>\r\n    <row agent=\"Oinokjus Airkio\" agentid=\"3010918\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"22\" level=\"4\" locationid=\"60000574\" locator=\"false\"/>\r\n    <row agent=\"Rakkadan Haukono\" agentid=\"3010919\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"2\" locationid=\"60000580\" locator=\"true\"/>\r\n    <row agent=\"Nannaras Arma\" agentid=\"3010920\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"24\" level=\"2\" locationid=\"60000589\" locator=\"false\"/>\r\n    <row agent=\"Ishi Paalokoiras\" agentid=\"3010921\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"24\" level=\"2\" locationid=\"60000496\" locator=\"false\"/>\r\n    <row agent=\"Akichiya Reussilen\" agentid=\"3010922\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"3\" locationid=\"60000493\" locator=\"false\"/>\r\n    <row agent=\"Oppa Raiskatoh\" agentid=\"3010923\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"1\" locationid=\"60000499\" locator=\"false\"/>\r\n    <row agent=\"Vankanen Utrasen\" agentid=\"3010924\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"1\" locationid=\"60000484\" locator=\"true\"/>\r\n    <row agent=\"Okasvio Uittigas\" agentid=\"3010927\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"22\" level=\"1\" locationid=\"60000592\" locator=\"false\"/>\r\n    <row agent=\"Kommiluola Punori\" agentid=\"3010928\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"24\" level=\"2\" locationid=\"60000601\" locator=\"false\"/>\r\n    <row agent=\"Aiga Paunashin\" agentid=\"3010929\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"22\" level=\"1\" locationid=\"60000607\" locator=\"false\"/>\r\n    <row agent=\"Oraa Gohtiras\" agentid=\"3010930\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"2\" locationid=\"60000598\" locator=\"false\"/>\r\n    <row agent=\"Sichono Onama\" agentid=\"3010931\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"1\" locationid=\"60000595\" locator=\"true\"/>\r\n    <row agent=\"Vitamala Ylila\" agentid=\"3010932\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"4\" locationid=\"60000604\" locator=\"false\"/>\r\n    <row agent=\"Piervapio Suehuma\" agentid=\"3010933\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"2\" locationid=\"60000475\" locator=\"false\"/>\r\n    <row agent=\"Ichinita Musalula\" agentid=\"3010934\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"24\" level=\"1\" locationid=\"60000481\" locator=\"false\"/>\r\n    <row agent=\"Arjus Kemashuka\" agentid=\"3010935\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"24\" level=\"2\" locationid=\"60000472\" locator=\"false\"/>\r\n    <row agent=\"Hovoila Iesasen\" agentid=\"3010936\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"24\" level=\"1\" locationid=\"60000466\" locator=\"false\"/>\r\n    <row agent=\"Onuori Orala\" agentid=\"3010937\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"3\" locationid=\"60000469\" locator=\"true\"/>\r\n    <row agent=\"Eskalen Elmaa\" agentid=\"3010938\" agenttypeid=\"8\" corporationid=\"1000005\" divisionid=\"23\" level=\"5\" locationid=\"60000478\" locator=\"false\"/>\r\n    <row agent=\"Totavuo Ahupittoh\" agentid=\"3010939\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"22\" level=\"1\" locationid=\"60000547\" locator=\"false\"/>\r\n    <row agent=\"Atnen Shotisto\" agentid=\"3010940\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"22\" level=\"3\" locationid=\"60000550\" locator=\"false\"/>\r\n    <row agent=\"Honuken Damogainen\" agentid=\"3010941\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"24\" level=\"2\" locationid=\"60000538\" locator=\"false\"/>\r\n    <row agent=\"Sebando Neri\" agentid=\"3010942\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"2\" locationid=\"60000541\" locator=\"false\"/>\r\n    <row agent=\"Ayua Vasala\" agentid=\"3010943\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"22\" level=\"1\" locationid=\"60000544\" locator=\"false\"/>\r\n    <row agent=\"Yutukio Isalen\" agentid=\"3010944\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"2\" locationid=\"60000553\" locator=\"false\"/>\r\n    <row agent=\"Auro Pussinieras\" agentid=\"3010947\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"1\" locationid=\"60000565\" locator=\"false\"/>\r\n    <row agent=\"Eskaari Okikko\" agentid=\"3010948\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"2\" locationid=\"60000568\" locator=\"false\"/>\r\n    <row agent=\"Niya Akesma\" agentid=\"3010949\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"2\" locationid=\"60000571\" locator=\"true\"/>\r\n    <row agent=\"Kehtuainen Uehunen\" agentid=\"3010950\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"4\" locationid=\"60000562\" locator=\"true\"/>\r\n    <row agent=\"Ontaa Itarino\" agentid=\"3010951\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"2\" locationid=\"60000433\" locator=\"false\"/>\r\n    <row agent=\"Heitalvaari Hodanomi\" agentid=\"3010952\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"1\" locationid=\"60000436\" locator=\"true\"/>\r\n    <row agent=\"Kobakori Otsiainen\" agentid=\"3010953\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"1\" locationid=\"60000445\" locator=\"false\"/>\r\n    <row agent=\"Risalo Ottaa\" agentid=\"3010954\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"2\" locationid=\"60000439\" locator=\"false\"/>\r\n    <row agent=\"Itamo Ake\" agentid=\"3010955\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"1\" locationid=\"60000442\" locator=\"false\"/>\r\n    <row agent=\"Takiloma Ohvari\" agentid=\"3010956\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"22\" level=\"2\" locationid=\"60000448\" locator=\"true\"/>\r\n    <row agent=\"Autiras Yuatoh\" agentid=\"3010957\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"24\" level=\"1\" locationid=\"60000466\" locator=\"false\"/>\r\n    <row agent=\"Ylandoki Ishinila\" agentid=\"3010958\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"4\" locationid=\"60000475\" locator=\"true\"/>\r\n    <row agent=\"Ohvola Manjus\" agentid=\"3010959\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"24\" level=\"1\" locationid=\"60000454\" locator=\"false\"/>\r\n    <row agent=\"Oikara Salkkaa\" agentid=\"3010960\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"4\" locationid=\"60000472\" locator=\"false\"/>\r\n    <row agent=\"Oksoinio Niromochi\" agentid=\"3010961\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"24\" level=\"2\" locationid=\"60000460\" locator=\"false\"/>\r\n    <row agent=\"Putkamon Kibayasu\" agentid=\"3010962\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"22\" level=\"1\" locationid=\"60000502\" locator=\"false\"/>\r\n    <row agent=\"Pintama Soribainen\" agentid=\"3010963\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"22\" level=\"4\" locationid=\"60000505\" locator=\"false\"/>\r\n    <row agent=\"Pomanoue Kuski\" agentid=\"3010964\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"1\" locationid=\"60000517\" locator=\"true\"/>\r\n    <row agent=\"Sakkanaka Haakkigo\" agentid=\"3010965\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"3\" locationid=\"60000508\" locator=\"false\"/>\r\n    <row agent=\"Ailen Saakuka\" agentid=\"3010966\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"24\" level=\"4\" locationid=\"60000511\" locator=\"false\"/>\r\n    <row agent=\"Aatoh Ahtushin\" agentid=\"3010967\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"24\" level=\"1\" locationid=\"60000514\" locator=\"false\"/>\r\n    <row agent=\"Iitima Kisodairos\" agentid=\"3010968\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"24\" level=\"4\" locationid=\"60000535\" locator=\"false\"/>\r\n    <row agent=\"Gu Ueshuda\" agentid=\"3010969\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"2\" locationid=\"60000523\" locator=\"false\"/>\r\n    <row agent=\"Viesimi Toilumioya\" agentid=\"3010970\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"2\" locationid=\"60000520\" locator=\"true\"/>\r\n    <row agent=\"Ronen Vuorisainen\" agentid=\"3010971\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"23\" level=\"1\" locationid=\"60000610\" locator=\"true\"/>\r\n    <row agent=\"Taginami Osiri\" agentid=\"3010972\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"23\" level=\"4\" locationid=\"60000637\" locator=\"false\"/>\r\n    <row agent=\"Heisanne Issanen\" agentid=\"3010973\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"23\" level=\"1\" locationid=\"60000640\" locator=\"false\"/>\r\n    <row agent=\"Aivolen Lisika\" agentid=\"3010974\" agenttypeid=\"8\" corporationid=\"1000006\" divisionid=\"23\" level=\"5\" locationid=\"60000643\" locator=\"false\"/>\r\n    <row agent=\"Shikkanda Kaukala\" agentid=\"3010975\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"23\" level=\"3\" locationid=\"60000613\" locator=\"false\"/>\r\n    <row agent=\"Hilen Ekomuta\" agentid=\"3010976\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"23\" level=\"4\" locationid=\"60000616\" locator=\"true\"/>\r\n    <row agent=\"Norkiras Isaziwa\" agentid=\"3010977\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"23\" level=\"2\" locationid=\"60000631\" locator=\"false\"/>\r\n    <row agent=\"Ora Aarawaiki\" agentid=\"3010980\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"23\" level=\"2\" locationid=\"60000622\" locator=\"false\"/>\r\n    <row agent=\"Avu Olunatsu\" agentid=\"3010981\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"23\" level=\"1\" locationid=\"60000619\" locator=\"false\"/>\r\n    <row agent=\"Sakutima Yara\" agentid=\"3010982\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"23\" level=\"2\" locationid=\"60000625\" locator=\"false\"/>\r\n    <row agent=\"Tomakuma Tsukaya\" agentid=\"3010983\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"1\" locationid=\"60000646\" locator=\"false\"/>\r\n    <row agent=\"Oijeshonen Isotiomaa\" agentid=\"3010984\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"2\" locationid=\"60000691\" locator=\"false\"/>\r\n    <row agent=\"Otuvas Ylitoh\" agentid=\"3010985\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"2\" locationid=\"60000685\" locator=\"false\"/>\r\n    <row agent=\"Inikko Samanuni\" agentid=\"3010986\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"24\" level=\"1\" locationid=\"60000682\" locator=\"false\"/>\r\n    <row agent=\"Han Taltanen\" agentid=\"3010987\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"3\" locationid=\"60000688\" locator=\"false\"/>\r\n    <row agent=\"Tolen Rainakaaja\" agentid=\"3010988\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"3\" locationid=\"60000649\" locator=\"false\"/>\r\n    <row agent=\"Sori Tuotuninen\" agentid=\"3010989\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"2\" locationid=\"60000652\" locator=\"false\"/>\r\n    <row agent=\"Aluri Yanaguno\" agentid=\"3010990\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"24\" level=\"4\" locationid=\"60000655\" locator=\"true\"/>\r\n    <row agent=\"Ylamaa Soljaken\" agentid=\"3010991\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"24\" level=\"3\" locationid=\"60000754\" locator=\"true\"/>\r\n    <row agent=\"Ke Kakuruka\" agentid=\"3010992\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"2\" locationid=\"60000757\" locator=\"false\"/>\r\n    <row agent=\"Vasala Akochi\" agentid=\"3010993\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"1\" locationid=\"60000763\" locator=\"false\"/>\r\n    <row agent=\"Panen Konihela\" agentid=\"3010994\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"2\" locationid=\"60000760\" locator=\"false\"/>\r\n    <row agent=\"Jukinoue Jurechi\" agentid=\"3010995\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"1\" locationid=\"60000709\" locator=\"false\"/>\r\n    <row agent=\"Hetsen Bukken\" agentid=\"3010998\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"4\" locationid=\"60000715\" locator=\"false\"/>\r\n    <row agent=\"Okichoshi Ekura\" agentid=\"3010999\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"3\" locationid=\"60000733\" locator=\"true\"/>\r\n    <row agent=\"Rakonainen Antalen\" agentid=\"3011000\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"1\" locationid=\"60000730\" locator=\"false\"/>\r\n    <row agent=\"Aizagenen Arozainen\" agentid=\"3011001\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"1\" locationid=\"60000736\" locator=\"false\"/>\r\n    <row agent=\"Alavuo Suukkunen\" agentid=\"3011002\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"4\" locationid=\"60000739\" locator=\"true\"/>\r\n    <row agent=\"Aranoisen Orpoila\" agentid=\"3011003\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"3\" locationid=\"60000751\" locator=\"false\"/>\r\n    <row agent=\"Hoshoda Uminishi\" agentid=\"3011004\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"3\" locationid=\"60000742\" locator=\"false\"/>\r\n    <row agent=\"Itima Ikaala\" agentid=\"3011005\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"4\" locationid=\"60000745\" locator=\"true\"/>\r\n    <row agent=\"Suokko Mitalen\" agentid=\"3011006\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"2\" locationid=\"60000748\" locator=\"false\"/>\r\n    <row agent=\"Asenemi Nama\" agentid=\"3011007\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"1\" locationid=\"60000664\" locator=\"false\"/>\r\n    <row agent=\"Huukka Aarnosen\" agentid=\"3011008\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"2\" locationid=\"60000658\" locator=\"true\"/>\r\n    <row agent=\"Otuniki Tekken\" agentid=\"3011009\" agenttypeid=\"8\" corporationid=\"1000007\" divisionid=\"24\" level=\"5\" locationid=\"60000667\" locator=\"false\"/>\r\n    <row agent=\"Aihakagas Korkukka\" agentid=\"3011010\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"3\" locationid=\"60000661\" locator=\"false\"/>\r\n    <row agent=\"Nisen Nirputsairos\" agentid=\"3011011\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"2\" locationid=\"60000679\" locator=\"false\"/>\r\n    <row agent=\"Rainela Inaro\" agentid=\"3011012\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"3\" locationid=\"60000670\" locator=\"false\"/>\r\n    <row agent=\"Tenpaa Hyynita\" agentid=\"3011013\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"1\" locationid=\"60000673\" locator=\"false\"/>\r\n    <row agent=\"Nuulkata Junkka\" agentid=\"3011014\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"1\" locationid=\"60000676\" locator=\"false\"/>\r\n    <row agent=\"Undai Kankadoishi\" agentid=\"3011015\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"2\" locationid=\"60000703\" locator=\"true\"/>\r\n    <row agent=\"Kaipia Reppola\" agentid=\"3011016\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"3\" locationid=\"60000697\" locator=\"false\"/>\r\n    <row agent=\"Ikai Uosarodan\" agentid=\"3011017\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"2\" locationid=\"60000700\" locator=\"false\"/>\r\n    <row agent=\"Wabe Vitie\" agentid=\"3011018\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"2\" locationid=\"60000694\" locator=\"false\"/>\r\n    <row agent=\"Ichinita Nous\" agentid=\"3011019\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"1\" locationid=\"60000718\" locator=\"false\"/>\r\n    <row agent=\"Naras Sawalola\" agentid=\"3011020\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"1\" locationid=\"60000724\" locator=\"true\"/>\r\n    <row agent=\"Okio Odai\" agentid=\"3011021\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"2\" locationid=\"60000727\" locator=\"false\"/>\r\n    <row agent=\"Saatoma Kien\" agentid=\"3011022\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"3\" locationid=\"60000721\" locator=\"false\"/>\r\n    <row agent=\"Karokainen Irawa\" agentid=\"3011023\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"24\" level=\"1\" locationid=\"60000766\" locator=\"false\"/>\r\n    <row agent=\"Rutilo Omieto\" agentid=\"3011024\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"4\" locationid=\"60000784\" locator=\"true\"/>\r\n    <row agent=\"Satsu Mikakka\" agentid=\"3011025\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"4\" locationid=\"60000790\" locator=\"true\"/>\r\n    <row agent=\"Ishogachi Kazorose\" agentid=\"3011026\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"1\" locationid=\"60000787\" locator=\"false\"/>\r\n    <row agent=\"Okuro Petsiken\" agentid=\"3011027\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"1\" locationid=\"60000844\" locator=\"false\"/>\r\n    <row agent=\"Arise Alana\" agentid=\"3011028\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"2\" locationid=\"60000841\" locator=\"true\"/>\r\n    <row agent=\"Vesuroma Nautio\" agentid=\"3011029\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"4\" locationid=\"60000838\" locator=\"true\"/>\r\n    <row agent=\"Iijanairos Kous\" agentid=\"3011030\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"24\" level=\"2\" locationid=\"60000772\" locator=\"false\"/>\r\n    <row agent=\"Poitekkoda Hutsinius\" agentid=\"3011031\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"24\" level=\"2\" locationid=\"60000769\" locator=\"false\"/>\r\n    <row agent=\"Isela Irki\" agentid=\"3011032\" agenttypeid=\"8\" corporationid=\"1000008\" divisionid=\"23\" level=\"5\" locationid=\"60000811\" locator=\"false\"/>\r\n    <row agent=\"Kusen Raunuta\" agentid=\"3011033\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"24\" level=\"2\" locationid=\"60000814\" locator=\"true\"/>\r\n    <row agent=\"Tokaka Sakinukka\" agentid=\"3011034\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"2\" locationid=\"60000817\" locator=\"false\"/>\r\n    <row agent=\"Vion Ekken\" agentid=\"3011035\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"1\" locationid=\"60000775\" locator=\"false\"/>\r\n    <row agent=\"Pakuras Ishatsu\" agentid=\"3011036\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"1\" locationid=\"60000778\" locator=\"false\"/>\r\n    <row agent=\"Ramara Huotoras\" agentid=\"3011037\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"2\" locationid=\"60000781\" locator=\"true\"/>\r\n    <row agent=\"Abagairos Otukuya\" agentid=\"3011038\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"22\" level=\"3\" locationid=\"60000802\" locator=\"false\"/>\r\n    <row agent=\"Uuhatoh Yokoni\" agentid=\"3011039\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"3\" locationid=\"60000808\" locator=\"false\"/>\r\n    <row agent=\"Juunigaishi Okumi\" agentid=\"3011040\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"4\" locationid=\"60000805\" locator=\"true\"/>\r\n    <row agent=\"Rasavas Funuruoto\" agentid=\"3011041\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"22\" level=\"2\" locationid=\"60000823\" locator=\"false\"/>\r\n    <row agent=\"Minatiken Savalenta\" agentid=\"3011042\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"24\" level=\"3\" locationid=\"60000826\" locator=\"false\"/>\r\n    <row agent=\"Etsen Ihinota\" agentid=\"3011043\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"2\" locationid=\"60000820\" locator=\"false\"/>\r\n    <row agent=\"Turmesen Taksaken\" agentid=\"3011044\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"1\" locationid=\"60000793\" locator=\"false\"/>\r\n    <row agent=\"Multola Nikkaken\" agentid=\"3011045\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"2\" locationid=\"60000796\" locator=\"false\"/>\r\n    <row agent=\"Jenus Totsitoh\" agentid=\"3011046\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"2\" locationid=\"60000799\" locator=\"true\"/>\r\n    <row agent=\"Egaruopas Umunmaa\" agentid=\"3011047\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"3\" locationid=\"60000850\" locator=\"false\"/>\r\n    <row agent=\"Ohio Aivolen\" agentid=\"3011048\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"3\" locationid=\"60000847\" locator=\"false\"/>\r\n    <row agent=\"Okkalen Erakko\" agentid=\"3011049\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"3\" locationid=\"60000853\" locator=\"false\"/>\r\n    <row agent=\"Saskitanen Kusuta\" agentid=\"3011050\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"2\" locationid=\"60000832\" locator=\"false\"/>\r\n    <row agent=\"Kaitalen Ronken\" agentid=\"3011051\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"1\" locationid=\"60000835\" locator=\"false\"/>\r\n    <row agent=\"Kantsatoh Mittitoh\" agentid=\"3011052\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"2\" locationid=\"60000829\" locator=\"false\"/>\r\n    <row agent=\"Takashi Shioken\" agentid=\"3011053\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"1\" locationid=\"60000856\" locator=\"false\"/>\r\n    <row agent=\"Antugaira Furiainen\" agentid=\"3011054\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"2\" locationid=\"60000919\" locator=\"false\"/>\r\n    <row agent=\"Yloruga Ouranienen\" agentid=\"3011055\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"23\" level=\"4\" locationid=\"60000916\" locator=\"false\"/>\r\n    <row agent=\"Hamiras Uona\" agentid=\"3011056\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"1\" locationid=\"60000925\" locator=\"false\"/>\r\n    <row agent=\"Iivaskuras Tausonen\" agentid=\"3011057\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"23\" level=\"1\" locationid=\"60000922\" locator=\"false\"/>\r\n    <row agent=\"Ushota Mullanpaa\" agentid=\"3011058\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"23\" level=\"3\" locationid=\"60000913\" locator=\"false\"/>\r\n    <row agent=\"Tsusata Marvonen\" agentid=\"3011059\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"23\" level=\"4\" locationid=\"60000907\" locator=\"true\"/>\r\n    <row agent=\"Uoyunaras Jokkalaila\" agentid=\"3011060\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"23\" level=\"1\" locationid=\"60000904\" locator=\"false\"/>\r\n    <row agent=\"Okinala Kahtaras\" agentid=\"3011061\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"23\" level=\"1\" locationid=\"60000910\" locator=\"false\"/>\r\n    <row agent=\"Ansoro Viritie\" agentid=\"3011062\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"2\" locationid=\"60000874\" locator=\"false\"/>\r\n    <row agent=\"Arochi Syn\" agentid=\"3011063\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"23\" level=\"2\" locationid=\"60000877\" locator=\"false\"/>\r\n    <row agent=\"Numo Humo\" agentid=\"3011064\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"23\" level=\"1\" locationid=\"60000868\" locator=\"false\"/>\r\n    <row agent=\"Nistoya Papala\" agentid=\"3011065\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"23\" level=\"2\" locationid=\"60000871\" locator=\"false\"/>\r\n    <row agent=\"Ykken Alanama\" agentid=\"3011066\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"4\" locationid=\"60000973\" locator=\"false\"/>\r\n    <row agent=\"Ijenen Nusasaisen\" agentid=\"3011067\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"23\" level=\"2\" locationid=\"60000964\" locator=\"false\"/>\r\n    <row agent=\"Yatsiainen Hankkama\" agentid=\"3011069\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"23\" level=\"1\" locationid=\"60000967\" locator=\"false\"/>\r\n    <row agent=\"Urpanen Aranuri\" agentid=\"3011070\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"4\" locationid=\"60000937\" locator=\"false\"/>\r\n    <row agent=\"Gotibera Kanamola\" agentid=\"3011071\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"2\" locationid=\"60000895\" locator=\"true\"/>\r\n    <row agent=\"Iberato Inama\" agentid=\"3011072\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"4\" locationid=\"60000901\" locator=\"true\"/>\r\n    <row agent=\"Puisinen Kojaken\" agentid=\"3011073\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"2\" locationid=\"60000898\" locator=\"false\"/>\r\n    <row agent=\"Outoras Saisima\" agentid=\"3011074\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"2\" locationid=\"60000955\" locator=\"false\"/>\r\n    <row agent=\"Uittalen Tima\" agentid=\"3011075\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"23\" level=\"2\" locationid=\"60000958\" locator=\"false\"/>\r\n    <row agent=\"Kayagainen Arinichi\" agentid=\"3011078\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"3\" locationid=\"60000940\" locator=\"true\"/>\r\n    <row agent=\"Tuimmamon Onalila\" agentid=\"3011079\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"1\" locationid=\"60000943\" locator=\"false\"/>\r\n    <row agent=\"Kaanashin Hikaruta\" agentid=\"3011080\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"3\" locationid=\"60000949\" locator=\"false\"/>\r\n    <row agent=\"Rashoyemi Okiainepas\" agentid=\"3011081\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"3\" locationid=\"60000946\" locator=\"true\"/>\r\n    <row agent=\"Nuun Surula\" agentid=\"3011082\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"1\" locationid=\"60000880\" locator=\"false\"/>\r\n    <row agent=\"Ohmanin Natuneni\" agentid=\"3011083\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"23\" level=\"1\" locationid=\"60000883\" locator=\"false\"/>\r\n    <row agent=\"Hen Vierishairos\" agentid=\"3011084\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"2\" locationid=\"60000886\" locator=\"false\"/>\r\n    <row agent=\"Yoschoya Veskamon\" agentid=\"3011085\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"1\" locationid=\"60000889\" locator=\"false\"/>\r\n    <row agent=\"Inainshatsu Onelari\" agentid=\"3011086\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"23\" level=\"1\" locationid=\"60000931\" locator=\"false\"/>\r\n    <row agent=\"Andan Kuumi\" agentid=\"3011087\" agenttypeid=\"8\" corporationid=\"1000009\" divisionid=\"23\" level=\"5\" locationid=\"60000937\" locator=\"false\"/>\r\n    <row agent=\"Yuasa Veinalen\" agentid=\"3011088\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"2\" locationid=\"60000928\" locator=\"false\"/>\r\n    <row agent=\"Ketsen Tuulola\" agentid=\"3011089\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"23\" level=\"1\" locationid=\"60000934\" locator=\"false\"/>\r\n    <row agent=\"Pusuoya Kini\" agentid=\"3011090\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"23\" level=\"1\" locationid=\"60000862\" locator=\"false\"/>\r\n    <row agent=\"Inaida Futtari\" agentid=\"3011091\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"23\" level=\"2\" locationid=\"60000859\" locator=\"false\"/>\r\n    <row agent=\"Aviai Penen\" agentid=\"3011092\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"3\" locationid=\"60000865\" locator=\"true\"/>\r\n    <row agent=\"Uuris Oinen\" agentid=\"3011093\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"1\" locationid=\"60000976\" locator=\"false\"/>\r\n    <row agent=\"Igase Kairatoh\" agentid=\"3011094\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"3\" locationid=\"60000994\" locator=\"false\"/>\r\n    <row agent=\"Eerala Airimainas\" agentid=\"3011095\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"1\" locationid=\"60001000\" locator=\"false\"/>\r\n    <row agent=\"Nalvola Nimmoda\" agentid=\"3011096\" agenttypeid=\"4\" corporationid=\"1000010\" divisionid=\"18\" level=\"3\" locationid=\"60001003\" locator=\"true\"/>\r\n    <row agent=\"Noi Kugisa\" agentid=\"3011097\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"1\" locationid=\"60001123\" locator=\"false\"/>\r\n    <row agent=\"Tasimuri Saskalen\" agentid=\"3011098\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"3\" locationid=\"60001129\" locator=\"false\"/>\r\n    <row agent=\"Iena Pahalo\" agentid=\"3011099\" agenttypeid=\"4\" corporationid=\"1000010\" divisionid=\"18\" level=\"2\" locationid=\"60001132\" locator=\"true\"/>\r\n    <row agent=\"Kituola Asunomo\" agentid=\"3011100\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"2\" locationid=\"60001126\" locator=\"false\"/>\r\n    <row agent=\"Uotaji Oksen\" agentid=\"3011101\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"2\" locationid=\"60001120\" locator=\"false\"/>\r\n    <row agent=\"Airata Hagas\" agentid=\"3011102\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"2\" locationid=\"60001135\" locator=\"false\"/>\r\n    <row agent=\"Hiekilen Iltaa\" agentid=\"3011103\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"2\" locationid=\"60001057\" locator=\"false\"/>\r\n    <row agent=\"Sauleken Matsatoh\" agentid=\"3011104\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"4\" locationid=\"60001060\" locator=\"false\"/>\r\n    <row agent=\"Marttatoh Tiukiski\" agentid=\"3011105\" agenttypeid=\"4\" corporationid=\"1000010\" divisionid=\"18\" level=\"1\" locationid=\"60001063\" locator=\"false\"/>\r\n    <row agent=\"Uopa Etsilen\" agentid=\"3011106\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"1\" locationid=\"60001054\" locator=\"false\"/>\r\n    <row agent=\"Pia Ashutahtoh\" agentid=\"3011107\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"2\" locationid=\"60001051\" locator=\"false\"/>\r\n    <row agent=\"Urpa Sorkakaiken\" agentid=\"3011108\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"3\" locationid=\"60001048\" locator=\"false\"/>\r\n    <row agent=\"Pesabato Hirri\" agentid=\"3011109\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"1\" locationid=\"60000982\" locator=\"false\"/>\r\n    <row agent=\"Urpaken Sylinaimon\" agentid=\"3011110\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"2\" locationid=\"60000985\" locator=\"false\"/>\r\n    <row agent=\"Hamimaitoh Asanishi\" agentid=\"3011111\" agenttypeid=\"4\" corporationid=\"1000010\" divisionid=\"18\" level=\"2\" locationid=\"60000988\" locator=\"false\"/>\r\n    <row agent=\"Artaja Ininerva\" agentid=\"3011112\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"1\" locationid=\"60000991\" locator=\"false\"/>\r\n    <row agent=\"Hakkonnonmaa Kunken\" agentid=\"3011113\" agenttypeid=\"4\" corporationid=\"1000010\" divisionid=\"18\" level=\"3\" locationid=\"60000979\" locator=\"false\"/>\r\n    <row agent=\"Miit Oijertojus\" agentid=\"3011114\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"1\" locationid=\"60001078\" locator=\"false\"/>\r\n    <row agent=\"Kibayasu Jimmulen\" agentid=\"3011115\" agenttypeid=\"4\" corporationid=\"1000010\" divisionid=\"18\" level=\"4\" locationid=\"60001081\" locator=\"false\"/>\r\n    <row agent=\"Notsu Keikira\" agentid=\"3011116\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"4\" locationid=\"60001069\" locator=\"false\"/>\r\n    <row agent=\"Sirkkari Kapumara\" agentid=\"3011117\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"1\" locationid=\"60001066\" locator=\"false\"/>\r\n    <row agent=\"Uotaja Aalma\" agentid=\"3011118\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"2\" locationid=\"60001075\" locator=\"false\"/>\r\n    <row agent=\"Josameto Abagawa\" agentid=\"3011119\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"2\" locationid=\"60001072\" locator=\"false\"/>\r\n    <row agent=\"Koluoto Kintevas\" agentid=\"3011120\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"3\" locationid=\"60001084\" locator=\"true\"/>\r\n    <row agent=\"Naras Makkolen\" agentid=\"3011121\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"1\" locationid=\"60001087\" locator=\"false\"/>\r\n    <row agent=\"Me Ohmitoh\" agentid=\"3011122\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"2\" locationid=\"60001090\" locator=\"false\"/>\r\n    <row agent=\"Manamuwa Kurrisen\" agentid=\"3011123\" agenttypeid=\"4\" corporationid=\"1000010\" divisionid=\"18\" level=\"1\" locationid=\"60001099\" locator=\"false\"/>\r\n    <row agent=\"Suresen Uotenen\" agentid=\"3011124\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"1\" locationid=\"60001096\" locator=\"false\"/>\r\n    <row agent=\"Sakama Arikaiken\" agentid=\"3011125\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"1\" locationid=\"60001093\" locator=\"false\"/>\r\n    <row agent=\"Ohvenen Toitaris\" agentid=\"3011126\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"4\" locationid=\"60001141\" locator=\"true\"/>\r\n    <row agent=\"Kayekali Alikibo\" agentid=\"3011127\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"1\" locationid=\"60001147\" locator=\"false\"/>\r\n    <row agent=\"Sinyonen Nilteras\" agentid=\"3011128\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"1\" locationid=\"60001150\" locator=\"false\"/>\r\n    <row agent=\"Vo Kannomon\" agentid=\"3011129\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"4\" locationid=\"60001144\" locator=\"false\"/>\r\n    <row agent=\"Vuohtara Akarichi\" agentid=\"3011130\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"2\" locationid=\"60001153\" locator=\"true\"/>\r\n    <row agent=\"Saira Kubiseri\" agentid=\"3011131\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"2\" locationid=\"60001138\" locator=\"false\"/>\r\n    <row agent=\"Ansamon Ohbanamon\" agentid=\"3011132\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"4\" locationid=\"60001024\" locator=\"true\"/>\r\n    <row agent=\"Aakiwa Idakara\" agentid=\"3011133\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"2\" locationid=\"60001012\" locator=\"false\"/>\r\n    <row agent=\"Sikoda Aivappas\" agentid=\"3011134\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"2\" locationid=\"60001015\" locator=\"false\"/>\r\n    <row agent=\"Makkanen Allanen\" agentid=\"3011135\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"2\" locationid=\"60001018\" locator=\"false\"/>\r\n    <row agent=\"Alanti Erkkami\" agentid=\"3011136\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"3\" locationid=\"60001021\" locator=\"true\"/>\r\n    <row agent=\"Yanelius Obaintukka\" agentid=\"3011137\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"1\" locationid=\"60001027\" locator=\"false\"/>\r\n    <row agent=\"Okanori Oinasen\" agentid=\"3011138\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"1\" locationid=\"60001108\" locator=\"false\"/>\r\n    <row agent=\"Pannevas Uumi\" agentid=\"3011139\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"3\" locationid=\"60001102\" locator=\"false\"/>\r\n    <row agent=\"Tokka Tadamanoi\" agentid=\"3011140\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"3\" locationid=\"60001105\" locator=\"false\"/>\r\n    <row agent=\"Asken Kuusamon\" agentid=\"3011141\" agenttypeid=\"4\" corporationid=\"1000010\" divisionid=\"18\" level=\"2\" locationid=\"60001117\" locator=\"true\"/>\r\n    <row agent=\"Iesada Issune\" agentid=\"3011142\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"2\" locationid=\"60001111\" locator=\"false\"/>\r\n    <row agent=\"Shimano Uusasheken\" agentid=\"3011143\" agenttypeid=\"4\" corporationid=\"1000010\" divisionid=\"18\" level=\"2\" locationid=\"60001114\" locator=\"false\"/>\r\n    <row agent=\"Ansenen Ekarailen\" agentid=\"3011144\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"4\" locationid=\"60001216\" locator=\"true\"/>\r\n    <row agent=\"Kaivonpaa Tuikakino\" agentid=\"3011145\" agenttypeid=\"4\" corporationid=\"1000010\" divisionid=\"18\" level=\"2\" locationid=\"60001222\" locator=\"false\"/>\r\n    <row agent=\"Heitunen Vaalonen\" agentid=\"3011146\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"3\" locationid=\"60001213\" locator=\"true\"/>\r\n    <row agent=\"Rairuken Sokukoma\" agentid=\"3011147\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"1\" locationid=\"60001225\" locator=\"false\"/>\r\n    <row agent=\"Soukesen Akkadan\" agentid=\"3011148\" agenttypeid=\"8\" corporationid=\"1000010\" divisionid=\"23\" level=\"5\" locationid=\"60001219\" locator=\"false\"/>\r\n    <row agent=\"Itras Ezikori\" agentid=\"3011149\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"2\" locationid=\"60001210\" locator=\"false\"/>\r\n    <row agent=\"Sutagaitoh Sanda\" agentid=\"3011150\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"2\" locationid=\"60001192\" locator=\"false\"/>\r\n    <row agent=\"Homokoilen Kattanen\" agentid=\"3011151\" agenttypeid=\"4\" corporationid=\"1000010\" divisionid=\"18\" level=\"1\" locationid=\"60001207\" locator=\"false\"/>\r\n    <row agent=\"Vanochi Sawa\" agentid=\"3011152\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"3\" locationid=\"60001195\" locator=\"true\"/>\r\n    <row agent=\"Ienonanen Sitsigainen\" agentid=\"3011153\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"1\" locationid=\"60001201\" locator=\"false\"/>\r\n    <row agent=\"Vasti Sashobaira\" agentid=\"3011154\" agenttypeid=\"4\" corporationid=\"1000010\" divisionid=\"18\" level=\"3\" locationid=\"60001204\" locator=\"false\"/>\r\n    <row agent=\"Aarumamon Kichi\" agentid=\"3011155\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"3\" locationid=\"60001198\" locator=\"false\"/>\r\n    <row agent=\"Utilusa Nurose\" agentid=\"3011156\" agenttypeid=\"4\" corporationid=\"1000010\" divisionid=\"18\" level=\"1\" locationid=\"60001189\" locator=\"false\"/>\r\n    <row agent=\"Asilato Kalolula\" agentid=\"3011157\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"2\" locationid=\"60001180\" locator=\"false\"/>\r\n    <row agent=\"Sainori Uura\" agentid=\"3011158\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"2\" locationid=\"60001186\" locator=\"false\"/>\r\n    <row agent=\"Najus Funtari\" agentid=\"3011159\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"1\" locationid=\"60001174\" locator=\"false\"/>\r\n    <row agent=\"Anzaki Uesimaanen\" agentid=\"3011160\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"3\" locationid=\"60001177\" locator=\"false\"/>\r\n    <row agent=\"Garnen Knaakaras\" agentid=\"3011161\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"1\" locationid=\"60001183\" locator=\"false\"/>\r\n    <row agent=\"Skidochi Huorola\" agentid=\"3011162\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"4\" locationid=\"60001033\" locator=\"false\"/>\r\n    <row agent=\"Shitonata Makeraka\" agentid=\"3011163\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"3\" locationid=\"60001036\" locator=\"false\"/>\r\n    <row agent=\"Penakka Ichinada\" agentid=\"3011164\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"2\" locationid=\"60001042\" locator=\"true\"/>\r\n    <row agent=\"Nakelaiken Obanmaka\" agentid=\"3011165\" agenttypeid=\"4\" corporationid=\"1000010\" divisionid=\"18\" level=\"4\" locationid=\"60001045\" locator=\"false\"/>\r\n    <row agent=\"Mimetsoma Ichidama\" agentid=\"3011166\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"2\" locationid=\"60001030\" locator=\"false\"/>\r\n    <row agent=\"Angai Poltela\" agentid=\"3011167\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"2\" locationid=\"60001039\" locator=\"false\"/>\r\n    <row agent=\"Muutaras Huomaila\" agentid=\"3011168\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"2\" locationid=\"60001156\" locator=\"false\"/>\r\n    <row agent=\"Tamppoiras Auni\" agentid=\"3011169\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"2\" locationid=\"60001162\" locator=\"false\"/>\r\n    <row agent=\"Utraki Oksikka\" agentid=\"3011170\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"1\" locationid=\"60001168\" locator=\"false\"/>\r\n    <row agent=\"Erkkonen Rakka\" agentid=\"3011171\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"1\" locationid=\"60001159\" locator=\"false\"/>\r\n    <row agent=\"Tsukaya Tertakko\" agentid=\"3011172\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"2\" locationid=\"60001171\" locator=\"false\"/>\r\n    <row agent=\"Aanai Walvalin\" agentid=\"3011173\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"1\" locationid=\"60001165\" locator=\"false\"/>\r\n    <row agent=\"Vuorio Sarmaras\" agentid=\"3011174\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"3\" locationid=\"60001228\" locator=\"false\"/>\r\n    <row agent=\"Isavaisen Ogyonin\" agentid=\"3011175\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"1\" locationid=\"60001234\" locator=\"false\"/>\r\n    <row agent=\"Paakadan Uotadan\" agentid=\"3011176\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"4\" locationid=\"60001240\" locator=\"false\"/>\r\n    <row agent=\"Onaila Valen\" agentid=\"3011177\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"2\" locationid=\"60001231\" locator=\"false\"/>\r\n    <row agent=\"Tsuka Otsami\" agentid=\"3011178\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"2\" locationid=\"60001237\" locator=\"false\"/>\r\n    <row agent=\"Isitei Tannonaisen\" agentid=\"3011179\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"2\" locationid=\"60001243\" locator=\"false\"/>\r\n    <row agent=\"Asitei Adunen\" agentid=\"3011180\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"3\" locationid=\"60001006\" locator=\"true\"/>\r\n    <row agent=\"Oba Uetamiras\" agentid=\"3011181\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"2\" locationid=\"60000997\" locator=\"false\"/>\r\n    <row agent=\"Kikkutakka Orji\" agentid=\"3011182\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"1\" locationid=\"60001009\" locator=\"false\"/>\r\n    <row agent=\"Kinakka Vie\" agentid=\"3011183\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"1\" locationid=\"60001246\" locator=\"false\"/>\r\n    <row agent=\"Shirvala Nakkatoh\" agentid=\"3011184\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"24\" level=\"3\" locationid=\"60001252\" locator=\"true\"/>\r\n    <row agent=\"Asiai Anzatoh\" agentid=\"3011185\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"2\" locationid=\"60001414\" locator=\"false\"/>\r\n    <row agent=\"Tsutachoda Saigomon\" agentid=\"3011186\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"2\" locationid=\"60001420\" locator=\"false\"/>\r\n    <row agent=\"Sastigas Kuhtataiken\" agentid=\"3011187\" agenttypeid=\"8\" corporationid=\"1000011\" divisionid=\"24\" level=\"5\" locationid=\"60001423\" locator=\"false\"/>\r\n    <row agent=\"Erninen Ranttika\" agentid=\"3011188\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"3\" locationid=\"60001417\" locator=\"true\"/>\r\n    <row agent=\"Otasira Elanugi\" agentid=\"3011189\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"2\" locationid=\"60001387\" locator=\"true\"/>\r\n    <row agent=\"Alirila Kiomi\" agentid=\"3011190\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"4\" locationid=\"60001378\" locator=\"false\"/>\r\n    <row agent=\"Pasmelen Reppola\" agentid=\"3011191\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"2\" locationid=\"60001381\" locator=\"false\"/>\r\n    <row agent=\"Kolvas Atso\" agentid=\"3011192\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"1\" locationid=\"60001384\" locator=\"false\"/>\r\n    <row agent=\"Kileliri Kuramoichi\" agentid=\"3011193\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"1\" locationid=\"60001294\" locator=\"false\"/>\r\n    <row agent=\"Ishadan Korvenin\" agentid=\"3011194\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"2\" locationid=\"60001297\" locator=\"true\"/>\r\n    <row agent=\"Kukakka Utriken\" agentid=\"3011195\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"1\" locationid=\"60001300\" locator=\"false\"/>\r\n    <row agent=\"Harskaken Kolandainen\" agentid=\"3011196\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"3\" locationid=\"60001303\" locator=\"false\"/>\r\n    <row agent=\"Eyo Ansoro\" agentid=\"3011197\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"2\" locationid=\"60001408\" locator=\"false\"/>\r\n    <row agent=\"Musokka Ishisomo\" agentid=\"3011198\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"24\" level=\"2\" locationid=\"60001402\" locator=\"false\"/>\r\n    <row agent=\"Kaikka Mavolava\" agentid=\"3011199\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"2\" locationid=\"60001405\" locator=\"false\"/>\r\n    <row agent=\"Hierada Onti\" agentid=\"3011200\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"24\" level=\"1\" locationid=\"60001411\" locator=\"false\"/>\r\n    <row agent=\"Nala Tukken\" agentid=\"3011201\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"2\" locationid=\"60001330\" locator=\"true\"/>\r\n    <row agent=\"Sohomaa Lyyrimila\" agentid=\"3011202\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"2\" locationid=\"60001336\" locator=\"false\"/>\r\n    <row agent=\"Itino Odushioka\" agentid=\"3011203\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"3\" locationid=\"60001333\" locator=\"true\"/>\r\n    <row agent=\"Kokitaira Vaakko\" agentid=\"3011204\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"2\" locationid=\"60001339\" locator=\"true\"/>\r\n    <row agent=\"Alijula Inaari\" agentid=\"3011205\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"1\" locationid=\"60001255\" locator=\"false\"/>\r\n    <row agent=\"Isurada Visolala\" agentid=\"3011206\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"3\" locationid=\"60001249\" locator=\"true\"/>\r\n    <row agent=\"Hakkasen Sen\" agentid=\"3011207\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"1\" locationid=\"60001318\" locator=\"false\"/>\r\n    <row agent=\"Turegasa Unonikko\" agentid=\"3011208\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"1\" locationid=\"60001321\" locator=\"false\"/>\r\n    <row agent=\"Suzakainen Inokakka\" agentid=\"3011209\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"4\" locationid=\"60001327\" locator=\"false\"/>\r\n    <row agent=\"Saakanen Nakkomo\" agentid=\"3011210\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"2\" locationid=\"60001324\" locator=\"false\"/>\r\n    <row agent=\"Saakkatoh Oja\" agentid=\"3011211\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"3\" locationid=\"60001264\" locator=\"true\"/>\r\n    <row agent=\"Uokaa Saikamon\" agentid=\"3011212\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"24\" level=\"2\" locationid=\"60001261\" locator=\"false\"/>\r\n    <row agent=\"Ukelula Itama\" agentid=\"3011213\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"2\" locationid=\"60001267\" locator=\"false\"/>\r\n    <row agent=\"Tius Mirtoh\" agentid=\"3011214\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"2\" locationid=\"60001258\" locator=\"false\"/>\r\n    <row agent=\"Akatervo Pemmiya\" agentid=\"3011215\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"1\" locationid=\"60001309\" locator=\"false\"/>\r\n    <row agent=\"Ekietola Oite\" agentid=\"3011216\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"2\" locationid=\"60001312\" locator=\"false\"/>\r\n    <row agent=\"Hamunala Ozino\" agentid=\"3011217\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"2\" locationid=\"60001315\" locator=\"true\"/>\r\n    <row agent=\"Osunen Karjiras\" agentid=\"3011218\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"2\" locationid=\"60001306\" locator=\"false\"/>\r\n    <row agent=\"Ahtaara Arubera\" agentid=\"3011219\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"2\" locationid=\"60001348\" locator=\"false\"/>\r\n    <row agent=\"Utranuolen Jesone\" agentid=\"3011220\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"3\" locationid=\"60001351\" locator=\"false\"/>\r\n    <row agent=\"Ogas Akuras\" agentid=\"3011221\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"4\" locationid=\"60001345\" locator=\"true\"/>\r\n    <row agent=\"Kotatainen Toksen\" agentid=\"3011222\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"3\" locationid=\"60001342\" locator=\"true\"/>\r\n    <row agent=\"Hastanen Huukka\" agentid=\"3011223\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"3\" locationid=\"60001366\" locator=\"true\"/>\r\n    <row agent=\"Mikasa Satmoras\" agentid=\"3011224\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"3\" locationid=\"60001372\" locator=\"true\"/>\r\n    <row agent=\"Tashoken Heynojus\" agentid=\"3011225\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"1\" locationid=\"60001369\" locator=\"false\"/>\r\n    <row agent=\"Ikkawa Kaarokin\" agentid=\"3011226\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"1\" locationid=\"60001375\" locator=\"false\"/>\r\n    <row agent=\"Saakkimuka Ishaken\" agentid=\"3011227\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"3\" locationid=\"60001282\" locator=\"false\"/>\r\n    <row agent=\"Hakkomon Mikolala\" agentid=\"3011228\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"1\" locationid=\"60001288\" locator=\"false\"/>\r\n    <row agent=\"Oijelvas Iesipiras\" agentid=\"3011229\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"2\" locationid=\"60001291\" locator=\"false\"/>\r\n    <row agent=\"Uusamon Haanen\" agentid=\"3011230\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"2\" locationid=\"60001285\" locator=\"false\"/>\r\n    <row agent=\"Enari Onuomi\" agentid=\"3011231\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"24\" level=\"3\" locationid=\"60001354\" locator=\"false\"/>\r\n    <row agent=\"Iltoh Uppuken\" agentid=\"3011232\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"3\" locationid=\"60001363\" locator=\"false\"/>\r\n    <row agent=\"Reilen Oshomi\" agentid=\"3011233\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"2\" locationid=\"60001357\" locator=\"false\"/>\r\n    <row agent=\"Jamara Tuopio\" agentid=\"3011234\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"1\" locationid=\"60001360\" locator=\"false\"/>\r\n    <row agent=\"Inkura Uusolanen\" agentid=\"3011235\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"1\" locationid=\"60001270\" locator=\"false\"/>\r\n    <row agent=\"Ketsanen Arvanen\" agentid=\"3011236\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"24\" level=\"2\" locationid=\"60001279\" locator=\"false\"/>\r\n    <row agent=\"Arenmaa Kasoki\" agentid=\"3011237\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"1\" locationid=\"60001273\" locator=\"false\"/>\r\n    <row agent=\"Orma Risarenta\" agentid=\"3011238\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"4\" locationid=\"60001276\" locator=\"false\"/>\r\n    <row agent=\"Alalen Paakayuatoh\" agentid=\"3011239\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"3\" locationid=\"60001390\" locator=\"true\"/>\r\n    <row agent=\"Kasarala Ippojus\" agentid=\"3011240\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"1\" locationid=\"60001393\" locator=\"false\"/>\r\n    <row agent=\"Alloras Erone\" agentid=\"3011241\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"2\" locationid=\"60001396\" locator=\"false\"/>\r\n    <row agent=\"Assa Vikken\" agentid=\"3011242\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"3\" locationid=\"60001399\" locator=\"false\"/>\r\n    <row agent=\"Suras Kuikka\" agentid=\"3011243\" agenttypeid=\"2\" corporationid=\"1000012\" divisionid=\"24\" level=\"1\" locationid=\"60001426\" locator=\"false\"/>\r\n    <row agent=\"Nabatanen Kokatoiken\" agentid=\"3011244\" agenttypeid=\"2\" corporationid=\"1000012\" divisionid=\"23\" level=\"2\" locationid=\"60001429\" locator=\"false\"/>\r\n    <row agent=\"Karaka Yansen\" agentid=\"3011245\" agenttypeid=\"2\" corporationid=\"1000012\" divisionid=\"23\" level=\"4\" locationid=\"60001432\" locator=\"false\"/>\r\n    <row agent=\"Uloken Isamoto\" agentid=\"3011246\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"23\" level=\"1\" locationid=\"60001435\" locator=\"false\"/>\r\n    <row agent=\"Astenaisen Seras\" agentid=\"3011247\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"23\" level=\"1\" locationid=\"60001483\" locator=\"false\"/>\r\n    <row agent=\"Airatomon Ishomada\" agentid=\"3011248\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"23\" level=\"2\" locationid=\"60001486\" locator=\"false\"/>\r\n    <row agent=\"Yaras Notsen\" agentid=\"3011249\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"23\" level=\"1\" locationid=\"60001480\" locator=\"false\"/>\r\n    <row agent=\"Nansinen Tuon\" agentid=\"3011250\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"23\" level=\"2\" locationid=\"60001462\" locator=\"false\"/>\r\n    <row agent=\"Ago Andataila\" agentid=\"3011251\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"23\" level=\"1\" locationid=\"60001468\" locator=\"false\"/>\r\n    <row agent=\"Kusken Otiai\" agentid=\"3011252\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"23\" level=\"4\" locationid=\"60001465\" locator=\"true\"/>\r\n    <row agent=\"Inuken Hakodan\" agentid=\"3011253\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"23\" level=\"2\" locationid=\"60001516\" locator=\"true\"/>\r\n    <row agent=\"Kuhata Susilakko\" agentid=\"3011254\" agenttypeid=\"8\" corporationid=\"1000013\" divisionid=\"23\" level=\"5\" locationid=\"60001501\" locator=\"false\"/>\r\n    <row agent=\"Nanmaa Haraila\" agentid=\"3011255\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"22\" level=\"3\" locationid=\"60001522\" locator=\"true\"/>\r\n    <row agent=\"Tasira Vaken\" agentid=\"3011256\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"23\" level=\"4\" locationid=\"60001498\" locator=\"false\"/>\r\n    <row agent=\"Asanas Sanoya\" agentid=\"3011257\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"23\" level=\"1\" locationid=\"60001504\" locator=\"false\"/>\r\n    <row agent=\"Vilukki Ihora\" agentid=\"3011258\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"23\" level=\"1\" locationid=\"60001501\" locator=\"false\"/>\r\n    <row agent=\"Arichi Asakai\" agentid=\"3011259\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"23\" level=\"2\" locationid=\"60001492\" locator=\"false\"/>\r\n    <row agent=\"Sirkkari Isikida\" agentid=\"3011260\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"23\" level=\"2\" locationid=\"60001489\" locator=\"false\"/>\r\n    <row agent=\"Adan Inuleri\" agentid=\"3011261\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"23\" level=\"1\" locationid=\"60001495\" locator=\"false\"/>\r\n    <row agent=\"Talila Koluoto\" agentid=\"3011262\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"23\" level=\"4\" locationid=\"60001474\" locator=\"false\"/>\r\n    <row agent=\"Raulilainen Umunainen\" agentid=\"3011264\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"23\" level=\"2\" locationid=\"60001477\" locator=\"false\"/>\r\n    <row agent=\"Amuniemi Furanen\" agentid=\"3011265\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"23\" level=\"1\" locationid=\"60001441\" locator=\"false\"/>\r\n    <row agent=\"Kuurtalen Yatolila\" agentid=\"3011266\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"23\" level=\"4\" locationid=\"60001438\" locator=\"false\"/>\r\n    <row agent=\"Yorpas Soukkonen\" agentid=\"3011267\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"23\" level=\"4\" locationid=\"60001507\" locator=\"true\"/>\r\n    <row agent=\"Rinteras Jimigata\" agentid=\"3011268\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"22\" level=\"3\" locationid=\"60001513\" locator=\"true\"/>\r\n    <row agent=\"Anttagas Usena\" agentid=\"3011269\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"22\" level=\"2\" locationid=\"60001510\" locator=\"false\"/>\r\n    <row agent=\"Akimo Oksen\" agentid=\"3011270\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"23\" level=\"1\" locationid=\"60001453\" locator=\"false\"/>\r\n    <row agent=\"Tokaka Junsen\" agentid=\"3011271\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"22\" level=\"3\" locationid=\"60001459\" locator=\"false\"/>\r\n    <row agent=\"Ruotilaito Semmenen\" agentid=\"3011272\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"23\" level=\"1\" locationid=\"60001456\" locator=\"false\"/>\r\n    <row agent=\"Sirkkari Aano\" agentid=\"3011273\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"22\" level=\"2\" locationid=\"60001447\" locator=\"false\"/>\r\n    <row agent=\"Aakalen Naniro\" agentid=\"3011274\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"23\" level=\"1\" locationid=\"60001444\" locator=\"false\"/>\r\n    <row agent=\"Nai Isa\" agentid=\"3011275\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"22\" level=\"2\" locationid=\"60001450\" locator=\"true\"/>\r\n    <row agent=\"Kouyonen Kaimienen\" agentid=\"3011276\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"1\" locationid=\"60001525\" locator=\"false\"/>\r\n    <row agent=\"Higawiri Uokkio\" agentid=\"3011277\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"2\" locationid=\"60001534\" locator=\"false\"/>\r\n    <row agent=\"Amio Naki\" agentid=\"3011278\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"1\" locationid=\"60001537\" locator=\"false\"/>\r\n    <row agent=\"Kakka Kosama\" agentid=\"3011279\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"2\" locationid=\"60001540\" locator=\"false\"/>\r\n    <row agent=\"Kunkkasen Maekanaiki\" agentid=\"3011280\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"3\" locationid=\"60001543\" locator=\"false\"/>\r\n    <row agent=\"Hivas Aummi\" agentid=\"3011281\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"2\" locationid=\"60001546\" locator=\"true\"/>\r\n    <row agent=\"Veinalen Yamatumi\" agentid=\"3011282\" agenttypeid=\"8\" corporationid=\"1000014\" divisionid=\"22\" level=\"5\" locationid=\"60001642\" locator=\"false\"/>\r\n    <row agent=\"Otsio Suko\" agentid=\"3011283\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"4\" locationid=\"60001636\" locator=\"false\"/>\r\n    <row agent=\"Auvonen Tavosen\" agentid=\"3011284\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"2\" locationid=\"60001639\" locator=\"false\"/>\r\n    <row agent=\"Aakko Tasiwa\" agentid=\"3011285\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"1\" locationid=\"60001633\" locator=\"false\"/>\r\n    <row agent=\"Kan Kuukila\" agentid=\"3011286\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"1\" locationid=\"60001591\" locator=\"false\"/>\r\n    <row agent=\"Aikolen Rautatsakka\" agentid=\"3011287\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"4\" locationid=\"60001594\" locator=\"false\"/>\r\n    <row agent=\"Hirpula Asagas\" agentid=\"3011288\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"2\" locationid=\"60001585\" locator=\"true\"/>\r\n    <row agent=\"Ruumi Oni\" agentid=\"3011289\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"2\" locationid=\"60001588\" locator=\"true\"/>\r\n    <row agent=\"Aukkaa Livonochi\" agentid=\"3011290\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"2\" locationid=\"60001621\" locator=\"true\"/>\r\n    <row agent=\"Vetabaisen Iivinonen\" agentid=\"3011291\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"2\" locationid=\"60001627\" locator=\"true\"/>\r\n    <row agent=\"Visvas Ekunori\" agentid=\"3011292\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"1\" locationid=\"60001630\" locator=\"false\"/>\r\n    <row agent=\"Endekaras Etsekin\" agentid=\"3011293\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"3\" locationid=\"60001624\" locator=\"true\"/>\r\n    <row agent=\"Isunen Oralukka\" agentid=\"3011294\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"2\" locationid=\"60001576\" locator=\"false\"/>\r\n    <row agent=\"Rossiainen Aanai\" agentid=\"3011295\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"4\" locationid=\"60001582\" locator=\"true\"/>\r\n    <row agent=\"Reilamon Asoinamo\" agentid=\"3011296\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"24\" level=\"1\" locationid=\"60001573\" locator=\"false\"/>\r\n    <row agent=\"Ruokalonto Ooki\" agentid=\"3011297\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"2\" locationid=\"60001579\" locator=\"false\"/>\r\n    <row agent=\"Pukegainen Kalolula\" agentid=\"3011298\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"2\" locationid=\"60001549\" locator=\"false\"/>\r\n    <row agent=\"Porveken Maramuri\" agentid=\"3011299\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"2\" locationid=\"60001558\" locator=\"true\"/>\r\n    <row agent=\"Retroken Tari\" agentid=\"3011300\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"2\" locationid=\"60001552\" locator=\"true\"/>\r\n    <row agent=\"Upparas Dan\" agentid=\"3011301\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"2\" locationid=\"60001555\" locator=\"false\"/>\r\n    <row agent=\"Tihitie Masasailen\" agentid=\"3011302\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"2\" locationid=\"60001561\" locator=\"false\"/>\r\n    <row agent=\"Orano Dantumi\" agentid=\"3011303\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"2\" locationid=\"60001564\" locator=\"false\"/>\r\n    <row agent=\"Kouvo Hagas\" agentid=\"3011304\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"3\" locationid=\"60001567\" locator=\"false\"/>\r\n    <row agent=\"Kasoki Uma\" agentid=\"3011305\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"3\" locationid=\"60001570\" locator=\"false\"/>\r\n    <row agent=\"Inagomo Ibirula\" agentid=\"3011306\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"4\" locationid=\"60001597\" locator=\"true\"/>\r\n    <row agent=\"Oji Haulieras\" agentid=\"3011307\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"2\" locationid=\"60001606\" locator=\"false\"/>\r\n    <row agent=\"Erkkeras Kiyura\" agentid=\"3011308\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"1\" locationid=\"60001600\" locator=\"false\"/>\r\n    <row agent=\"Rashanuoto Haukono\" agentid=\"3011309\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"1\" locationid=\"60001603\" locator=\"false\"/>\r\n    <row agent=\"Mumken Haanapas\" agentid=\"3011311\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"3\" locationid=\"60001612\" locator=\"false\"/>\r\n    <row agent=\"Mimala Raiskatoh\" agentid=\"3011312\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"1\" locationid=\"60001615\" locator=\"false\"/>\r\n    <row agent=\"Katokka Kollen\" agentid=\"3011313\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"3\" locationid=\"60001609\" locator=\"false\"/>\r\n    <row agent=\"Enna Knaatanen\" agentid=\"3011314\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"2\" locationid=\"60001528\" locator=\"false\"/>\r\n    <row agent=\"Edanata Aribusa\" agentid=\"3011315\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"2\" locationid=\"60001531\" locator=\"false\"/>\r\n    <row agent=\"Ebunero Nila\" agentid=\"3011316\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"1\" locationid=\"60001645\" locator=\"false\"/>\r\n    <row agent=\"Saaluken Kankiainen\" agentid=\"3011317\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"3\" locationid=\"60001648\" locator=\"false\"/>\r\n    <row agent=\"Tobirida Eistoken\" agentid=\"3011318\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"2\" locationid=\"60001651\" locator=\"false\"/>\r\n    <row agent=\"Lyyrakemi Mormon\" agentid=\"3011319\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"2\" locationid=\"60001654\" locator=\"false\"/>\r\n    <row agent=\"Airata Mion\" agentid=\"3011320\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"2\" locationid=\"60001717\" locator=\"false\"/>\r\n    <row agent=\"Aoken Pieppatoh\" agentid=\"3011321\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"2\" locationid=\"60001720\" locator=\"false\"/>\r\n    <row agent=\"Shotsayuata Aharas\" agentid=\"3011322\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"4\" locationid=\"60001723\" locator=\"false\"/>\r\n    <row agent=\"Kukkiainen Endateinen\" agentid=\"3011323\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"3\" locationid=\"60001726\" locator=\"true\"/>\r\n    <row agent=\"Fuwalama Kokoliri\" agentid=\"3011324\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"4\" locationid=\"60001663\" locator=\"false\"/>\r\n    <row agent=\"Sakama Ruurlamon\" agentid=\"3011325\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"2\" locationid=\"60001657\" locator=\"false\"/>\r\n    <row agent=\"Memaja Aritie\" agentid=\"3011326\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"3\" locationid=\"60001660\" locator=\"true\"/>\r\n    <row agent=\"Ichoda Fukikaga\" agentid=\"3011327\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"4\" locationid=\"60001666\" locator=\"true\"/>\r\n    <row agent=\"Ipas Ueshuskatoh\" agentid=\"3011328\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"2\" locationid=\"60001711\" locator=\"false\"/>\r\n    <row agent=\"Tarovila Ebai\" agentid=\"3011329\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"2\" locationid=\"60001708\" locator=\"false\"/>\r\n    <row agent=\"Taljus Kanaari\" agentid=\"3011330\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"1\" locationid=\"60001705\" locator=\"false\"/>\r\n    <row agent=\"Banninaisen Fuji\" agentid=\"3011331\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"2\" locationid=\"60001714\" locator=\"false\"/>\r\n    <row agent=\"Hayeda Anen\" agentid=\"3011332\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"2\" locationid=\"60001738\" locator=\"false\"/>\r\n    <row agent=\"Uuhaken Ineshi\" agentid=\"3011333\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"2\" locationid=\"60001732\" locator=\"false\"/>\r\n    <row agent=\"Asola Huoma\" agentid=\"3011334\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"2\" locationid=\"60001729\" locator=\"false\"/>\r\n    <row agent=\"Yanoda Akinen\" agentid=\"3011335\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"4\" locationid=\"60001735\" locator=\"true\"/>\r\n    <row agent=\"Nirputsairos Koniras\" agentid=\"3011336\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"2\" locationid=\"60001672\" locator=\"false\"/>\r\n    <row agent=\"Surila Knaatanen\" agentid=\"3011337\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"1\" locationid=\"60001669\" locator=\"true\"/>\r\n    <row agent=\"Mutanen Otsaras\" agentid=\"3011338\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"2\" locationid=\"60001675\" locator=\"false\"/>\r\n    <row agent=\"Tykigi Haimulen\" agentid=\"3011339\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"2\" locationid=\"60001678\" locator=\"false\"/>\r\n    <row agent=\"Autanen Rauraluola\" agentid=\"3011340\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"1\" locationid=\"60001756\" locator=\"false\"/>\r\n    <row agent=\"Hoishi Aununen\" agentid=\"3011341\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"3\" locationid=\"60001753\" locator=\"false\"/>\r\n    <row agent=\"Sumilima Hamunala\" agentid=\"3011342\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"1\" locationid=\"60001759\" locator=\"false\"/>\r\n    <row agent=\"Mahtista Osala\" agentid=\"3011343\" agenttypeid=\"8\" corporationid=\"1000015\" divisionid=\"23\" level=\"5\" locationid=\"60001762\" locator=\"false\"/>\r\n    <row agent=\"Itala Aibi\" agentid=\"3011344\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"1\" locationid=\"60001702\" locator=\"true\"/>\r\n    <row agent=\"Marukaiken Mamareki\" agentid=\"3011345\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"1\" locationid=\"60001696\" locator=\"false\"/>\r\n    <row agent=\"Hyononeki Taskiraki\" agentid=\"3011346\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"1\" locationid=\"60001699\" locator=\"false\"/>\r\n    <row agent=\"Funaila Hisonamo\" agentid=\"3011347\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"2\" locationid=\"60001693\" locator=\"false\"/>\r\n    <row agent=\"Erunumaa Hotta\" agentid=\"3011348\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"2\" locationid=\"60001681\" locator=\"false\"/>\r\n    <row agent=\"Takomaa Helanevas\" agentid=\"3011349\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"3\" locationid=\"60001687\" locator=\"false\"/>\r\n    <row agent=\"Kos Ogyaras\" agentid=\"3011350\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"4\" locationid=\"60001690\" locator=\"false\"/>\r\n    <row agent=\"Kintura Massiken\" agentid=\"3011351\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"2\" locationid=\"60001684\" locator=\"true\"/>\r\n    <row agent=\"Sassainen Aizakonen\" agentid=\"3011352\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"1\" locationid=\"60001744\" locator=\"false\"/>\r\n    <row agent=\"Ekulela Alasa\" agentid=\"3011353\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"4\" locationid=\"60001750\" locator=\"false\"/>\r\n    <row agent=\"Aokamon Tsutara\" agentid=\"3011354\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"2\" locationid=\"60001741\" locator=\"false\"/>\r\n    <row agent=\"Aralusa Isugas\" agentid=\"3011355\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"1\" locationid=\"60001747\" locator=\"false\"/>\r\n    <row agent=\"Koyata Mibitei\" agentid=\"3011356\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"24\" level=\"1\" locationid=\"60001765\" locator=\"false\"/>\r\n    <row agent=\"Elaruka Ikra\" agentid=\"3011357\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"22\" level=\"2\" locationid=\"60001807\" locator=\"true\"/>\r\n    <row agent=\"Ihoura Tahken\" agentid=\"3011358\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"22\" level=\"1\" locationid=\"60001810\" locator=\"false\"/>\r\n    <row agent=\"Hagaira Inzi\" agentid=\"3011359\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"22\" level=\"2\" locationid=\"60001801\" locator=\"true\"/>\r\n    <row agent=\"Vira Kortsegas\" agentid=\"3011360\" agenttypeid=\"8\" corporationid=\"1000016\" divisionid=\"22\" level=\"5\" locationid=\"60001804\" locator=\"false\"/>\r\n    <row agent=\"Ankai Kankadoishi\" agentid=\"3011361\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"22\" level=\"2\" locationid=\"60001783\" locator=\"true\"/>\r\n    <row agent=\"Halkkoiken Jakanerva\" agentid=\"3011362\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"24\" level=\"3\" locationid=\"60001786\" locator=\"true\"/>\r\n    <row agent=\"Askamon Amamala\" agentid=\"3011363\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"22\" level=\"2\" locationid=\"60001798\" locator=\"false\"/>\r\n    <row agent=\"Hameki Joshin\" agentid=\"3011364\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"22\" level=\"1\" locationid=\"60001795\" locator=\"false\"/>\r\n    <row agent=\"Raultalainen Aiko\" agentid=\"3011365\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"22\" level=\"4\" locationid=\"60001780\" locator=\"true\"/>\r\n    <row agent=\"Tanamailen Areinoki\" agentid=\"3011366\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"22\" level=\"1\" locationid=\"60001777\" locator=\"false\"/>\r\n    <row agent=\"Auvenen Saarnio\" agentid=\"3011367\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"24\" level=\"1\" locationid=\"60001816\" locator=\"true\"/>\r\n    <row agent=\"Kokukaiken Antisen\" agentid=\"3011368\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"22\" level=\"4\" locationid=\"60001813\" locator=\"false\"/>\r\n    <row agent=\"Knaatanen Mulanta\" agentid=\"3011369\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"24\" level=\"2\" locationid=\"60001768\" locator=\"true\"/>\r\n    <row agent=\"Oijertojus Noki\" agentid=\"3011370\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"22\" level=\"1\" locationid=\"60001819\" locator=\"false\"/>\r\n    <row agent=\"Suras Haasoshainen\" agentid=\"3011371\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"24\" level=\"2\" locationid=\"60001822\" locator=\"true\"/>\r\n    <row agent=\"Akarichi Kogamala\" agentid=\"3011372\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"22\" level=\"3\" locationid=\"60001789\" locator=\"false\"/>\r\n    <row agent=\"Onnomon Aarlunen\" agentid=\"3011373\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"22\" level=\"1\" locationid=\"60001792\" locator=\"false\"/>\r\n    <row agent=\"Noksawa Heimune\" agentid=\"3011374\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"22\" level=\"2\" locationid=\"60001774\" locator=\"false\"/>\r\n    <row agent=\"Paahainen Aasti\" agentid=\"3011375\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"22\" level=\"3\" locationid=\"60001771\" locator=\"true\"/>\r\n    <row agent=\"Tuikakino Katashainen\" agentid=\"3011376\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001825\" locator=\"false\"/>\r\n    <row agent=\"Kaparas Saikanen\" agentid=\"3011377\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"2\" locationid=\"60001831\" locator=\"true\"/>\r\n    <row agent=\"Tantima Kiukko\" agentid=\"3011378\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001930\" locator=\"false\"/>\r\n    <row agent=\"Ma Kassen\" agentid=\"3011379\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"3\" locationid=\"60001921\" locator=\"false\"/>\r\n    <row agent=\"Kaskovuo Kuri\" agentid=\"3011380\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"4\" locationid=\"60001924\" locator=\"false\"/>\r\n    <row agent=\"Rekuloho Moirutami\" agentid=\"3011381\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"4\" locationid=\"60001927\" locator=\"true\"/>\r\n    <row agent=\"Soravuo Assen\" agentid=\"3011382\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"3\" locationid=\"60001951\" locator=\"false\"/>\r\n    <row agent=\"Kashuken Eralen\" agentid=\"3011383\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001954\" locator=\"false\"/>\r\n    <row agent=\"Umadara Oturomi\" agentid=\"3011384\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001945\" locator=\"false\"/>\r\n    <row agent=\"Pakimato Kein\" agentid=\"3011385\" agenttypeid=\"8\" corporationid=\"1000017\" divisionid=\"22\" level=\"5\" locationid=\"60001948\" locator=\"false\"/>\r\n    <row agent=\"Nakkelen Vaupero\" agentid=\"3011386\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001828\" locator=\"false\"/>\r\n    <row agent=\"Oharaga Tarkko\" agentid=\"3011387\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"3\" locationid=\"60001834\" locator=\"true\"/>\r\n    <row agent=\"Aarakaarto Harskaken\" agentid=\"3011388\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001873\" locator=\"false\"/>\r\n    <row agent=\"Navala Izora\" agentid=\"3011389\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001879\" locator=\"false\"/>\r\n    <row agent=\"Niurihokka Okanini\" agentid=\"3011390\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001882\" locator=\"false\"/>\r\n    <row agent=\"Sukakki Vaanen\" agentid=\"3011391\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"2\" locationid=\"60001876\" locator=\"false\"/>\r\n    <row agent=\"Ooki Uchonen\" agentid=\"3011392\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001900\" locator=\"false\"/>\r\n    <row agent=\"Hitodan Setsepailen\" agentid=\"3011393\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"2\" locationid=\"60001903\" locator=\"false\"/>\r\n    <row agent=\"Kovas Yartenaima\" agentid=\"3011394\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001906\" locator=\"true\"/>\r\n    <row agent=\"Kossitoh Atshonen\" agentid=\"3011395\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"2\" locationid=\"60001897\" locator=\"false\"/>\r\n    <row agent=\"Hokkiras Paaseraisen\" agentid=\"3011396\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"4\" locationid=\"60001996\" locator=\"true\"/>\r\n    <row agent=\"Kiainti Sutkamaa\" agentid=\"3011397\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"3\" locationid=\"60001999\" locator=\"false\"/>\r\n    <row agent=\"Tetarumi Ahakka\" agentid=\"3011399\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"2\" locationid=\"60001993\" locator=\"false\"/>\r\n    <row agent=\"Pira Kaltonen\" agentid=\"3011400\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"2\" locationid=\"60001840\" locator=\"false\"/>\r\n    <row agent=\"Ursarinen Aakiwa\" agentid=\"3011401\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"3\" locationid=\"60001843\" locator=\"false\"/>\r\n    <row agent=\"Adashami Hankkama\" agentid=\"3011402\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"4\" locationid=\"60001846\" locator=\"false\"/>\r\n    <row agent=\"Kakamada Susiya\" agentid=\"3011403\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"3\" locationid=\"60001837\" locator=\"false\"/>\r\n    <row agent=\"Kulkkinen Alti\" agentid=\"3011404\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"4\" locationid=\"60001864\" locator=\"false\"/>\r\n    <row agent=\"Okila Kavas\" agentid=\"3011405\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001867\" locator=\"false\"/>\r\n    <row agent=\"Saisima Anokai\" agentid=\"3011406\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"2\" locationid=\"60001861\" locator=\"false\"/>\r\n    <row agent=\"Nukanata Amatura\" agentid=\"3011407\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001870\" locator=\"false\"/>\r\n    <row agent=\"Manekila Uisen\" agentid=\"3011408\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"3\" locationid=\"60001885\" locator=\"true\"/>\r\n    <row agent=\"Abuta Hiekilen\" agentid=\"3011409\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001891\" locator=\"false\"/>\r\n    <row agent=\"Varvala Osa\" agentid=\"3011410\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"4\" locationid=\"60001894\" locator=\"false\"/>\r\n    <row agent=\"Arvalo Ho\" agentid=\"3011411\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"2\" locationid=\"60001888\" locator=\"false\"/>\r\n    <row agent=\"Kolmon Chiskanen\" agentid=\"3011412\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"4\" locationid=\"60001939\" locator=\"false\"/>\r\n    <row agent=\"Miniviras Ilkke\" agentid=\"3011413\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001933\" locator=\"false\"/>\r\n    <row agent=\"Oinu Nunetago\" agentid=\"3011414\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"4\" locationid=\"60001936\" locator=\"true\"/>\r\n    <row agent=\"Ruunamon Ieyarai\" agentid=\"3011415\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001942\" locator=\"false\"/>\r\n    <row agent=\"Kogas Uoken\" agentid=\"3011416\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"2\" locationid=\"60001852\" locator=\"true\"/>\r\n    <row agent=\"Erkkilen Era\" agentid=\"3011417\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"2\" locationid=\"60001858\" locator=\"false\"/>\r\n    <row agent=\"Eratsaka Osha\" agentid=\"3011418\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"4\" locationid=\"60001849\" locator=\"false\"/>\r\n    <row agent=\"Akeri Inisoho\" agentid=\"3011419\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001855\" locator=\"false\"/>\r\n    <row agent=\"Yanaguno Asine\" agentid=\"3011420\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"2\" locationid=\"60001984\" locator=\"false\"/>\r\n    <row agent=\"Penolaanen Ihamada\" agentid=\"3011421\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001981\" locator=\"false\"/>\r\n    <row agent=\"Saskiken Ookaka\" agentid=\"3011422\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001987\" locator=\"false\"/>\r\n    <row agent=\"Rijokka Rairtomaa\" agentid=\"3011423\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"3\" locationid=\"60001990\" locator=\"true\"/>\r\n    <row agent=\"Orsanakka Hun\" agentid=\"3011424\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"2\" locationid=\"60001909\" locator=\"false\"/>\r\n    <row agent=\"Urpara Nashirai\" agentid=\"3011425\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"3\" locationid=\"60001912\" locator=\"true\"/>\r\n    <row agent=\"Hien Kaparas\" agentid=\"3011426\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001918\" locator=\"false\"/>\r\n    <row agent=\"Immuri Outabe\" agentid=\"3011427\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"4\" locationid=\"60001915\" locator=\"false\"/>\r\n    <row agent=\"Tahtiainen Kalato\" agentid=\"3011428\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"2\" locationid=\"60001975\" locator=\"false\"/>\r\n    <row agent=\"Sannas Ozinaro\" agentid=\"3011429\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"2\" locationid=\"60001972\" locator=\"false\"/>\r\n    <row agent=\"Hike Tugora\" agentid=\"3011430\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"3\" locationid=\"60001978\" locator=\"false\"/>\r\n    <row agent=\"Onereki Uoyaki\" agentid=\"3011431\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"4\" locationid=\"60001969\" locator=\"true\"/>\r\n    <row agent=\"Joukka Ourajanen\" agentid=\"3011432\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"3\" locationid=\"60001966\" locator=\"true\"/>\r\n    <row agent=\"Oriaineras Ohvari\" agentid=\"3011433\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001957\" locator=\"false\"/>\r\n    <row agent=\"Herpalen Pikoila\" agentid=\"3011434\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"4\" locationid=\"60001963\" locator=\"true\"/>\r\n    <row agent=\"Rishenen Oijanen\" agentid=\"3011435\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001960\" locator=\"false\"/>\r\n    <row agent=\"Annomainen Verupas\" agentid=\"3011436\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"1\" locationid=\"60002005\" locator=\"false\"/>\r\n    <row agent=\"Ake Sainen\" agentid=\"3011437\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"1\" locationid=\"60002047\" locator=\"false\"/>\r\n    <row agent=\"Tadaniki Pokka\" agentid=\"3011438\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"4\" locationid=\"60002050\" locator=\"false\"/>\r\n    <row agent=\"Oksylaanen Orenen\" agentid=\"3011439\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"4\" locationid=\"60002059\" locator=\"false\"/>\r\n    <row agent=\"Hyastilen Tetvolen\" agentid=\"3011440\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"2\" locationid=\"60002062\" locator=\"false\"/>\r\n    <row agent=\"Maskiainen Olkkunen\" agentid=\"3011441\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"4\" locationid=\"60002014\" locator=\"true\"/>\r\n    <row agent=\"Ylama Saziras\" agentid=\"3011442\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"4\" locationid=\"60002011\" locator=\"true\"/>\r\n    <row agent=\"Sanlalaila Alerela\" agentid=\"3011443\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"3\" locationid=\"60002038\" locator=\"true\"/>\r\n    <row agent=\"Koivarairos Orma\" agentid=\"3011444\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"1\" locationid=\"60002035\" locator=\"false\"/>\r\n    <row agent=\"Taneri Ohkanen\" agentid=\"3011445\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"2\" locationid=\"60002008\" locator=\"false\"/>\r\n    <row agent=\"Saila Sunmaa\" agentid=\"3011446\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"1\" locationid=\"60002017\" locator=\"true\"/>\r\n    <row agent=\"Moineri Kortilailen\" agentid=\"3011447\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"4\" locationid=\"60002020\" locator=\"false\"/>\r\n    <row agent=\"Aiga Ylala\" agentid=\"3011448\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"2\" locationid=\"60002053\" locator=\"false\"/>\r\n    <row agent=\"Akiai Tayukainen\" agentid=\"3011449\" agenttypeid=\"8\" corporationid=\"1000018\" divisionid=\"22\" level=\"5\" locationid=\"60002056\" locator=\"false\"/>\r\n    <row agent=\"Nonniainen Hanaida\" agentid=\"3011450\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"4\" locationid=\"60002026\" locator=\"true\"/>\r\n    <row agent=\"Peranida Purtomoki\" agentid=\"3011451\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"3\" locationid=\"60002023\" locator=\"true\"/>\r\n    <row agent=\"Jatate Hiravo\" agentid=\"3011452\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"1\" locationid=\"60002029\" locator=\"false\"/>\r\n    <row agent=\"Etsatei Yada\" agentid=\"3011453\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"2\" locationid=\"60002032\" locator=\"false\"/>\r\n    <row agent=\"Immonairos Iros\" agentid=\"3011454\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"1\" locationid=\"60002041\" locator=\"true\"/>\r\n    <row agent=\"Torimanoi Vittoh\" agentid=\"3011455\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"1\" locationid=\"60002044\" locator=\"false\"/>\r\n    <row agent=\"Eronpaa Aaromon\" agentid=\"3011456\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"1\" locationid=\"60002065\" locator=\"false\"/>\r\n    <row agent=\"Orulen Arala\" agentid=\"3011457\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"2\" locationid=\"60002116\" locator=\"false\"/>\r\n    <row agent=\"Pokireda Kummitoimon\" agentid=\"3011458\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"1\" locationid=\"60002122\" locator=\"false\"/>\r\n    <row agent=\"Ekulela Siakkawai\" agentid=\"3011459\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"4\" locationid=\"60002113\" locator=\"false\"/>\r\n    <row agent=\"Olkkenen Osa\" agentid=\"3011460\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"1\" locationid=\"60002119\" locator=\"false\"/>\r\n    <row agent=\"Sakehama Kannainen\" agentid=\"3011461\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"2\" locationid=\"60002173\" locator=\"false\"/>\r\n    <row agent=\"Kannanen Harpas\" agentid=\"3011462\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"3\" locationid=\"60002176\" locator=\"true\"/>\r\n    <row agent=\"Ohmolen Uoro\" agentid=\"3011463\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"22\" level=\"2\" locationid=\"60002179\" locator=\"false\"/>\r\n    <row agent=\"Kangas Suori\" agentid=\"3011464\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"2\" locationid=\"60002182\" locator=\"false\"/>\r\n    <row agent=\"Ikkari Yakin\" agentid=\"3011465\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"24\" level=\"1\" locationid=\"60002152\" locator=\"false\"/>\r\n    <row agent=\"Ichomala Nakilola\" agentid=\"3011466\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"2\" locationid=\"60002149\" locator=\"false\"/>\r\n    <row agent=\"Ariken Kutsu\" agentid=\"3011467\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"2\" locationid=\"60002158\" locator=\"true\"/>\r\n    <row agent=\"Itkonen Ato\" agentid=\"3011468\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"24\" level=\"2\" locationid=\"60002155\" locator=\"false\"/>\r\n    <row agent=\"Kukayaki Ukkila\" agentid=\"3011469\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"3\" locationid=\"60002227\" locator=\"false\"/>\r\n    <row agent=\"Ya Alhunaya\" agentid=\"3011470\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"4\" locationid=\"60002230\" locator=\"false\"/>\r\n    <row agent=\"Uminami Ozanen\" agentid=\"3011471\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"22\" level=\"3\" locationid=\"60002224\" locator=\"false\"/>\r\n    <row agent=\"Kinachi Hepimeki\" agentid=\"3011472\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"24\" level=\"4\" locationid=\"60002221\" locator=\"true\"/>\r\n    <row agent=\"Karnuras Ulalima\" agentid=\"3011473\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"3\" locationid=\"60002215\" locator=\"false\"/>\r\n    <row agent=\"Heinulaila Suola\" agentid=\"3011474\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"2\" locationid=\"60002209\" locator=\"false\"/>\r\n    <row agent=\"Nittara Hikkoken\" agentid=\"3011475\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"24\" level=\"2\" locationid=\"60002212\" locator=\"false\"/>\r\n    <row agent=\"Areneni Utalola\" agentid=\"3011476\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"22\" level=\"3\" locationid=\"60002218\" locator=\"false\"/>\r\n    <row agent=\"Shuhola Aularoila\" agentid=\"3011477\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"24\" level=\"4\" locationid=\"60002236\" locator=\"false\"/>\r\n    <row agent=\"Ahudoki Imola\" agentid=\"3011478\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"1\" locationid=\"60002233\" locator=\"false\"/>\r\n    <row agent=\"Maaltula Akora\" agentid=\"3011480\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"24\" level=\"4\" locationid=\"60002239\" locator=\"true\"/>\r\n    <row agent=\"Kaseshita Vuorila\" agentid=\"3011481\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"3\" locationid=\"60002068\" locator=\"true\"/>\r\n    <row agent=\"Aikawa Ren\" agentid=\"3011482\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"2\" locationid=\"60002071\" locator=\"false\"/>\r\n    <row agent=\"Ekise Koruda\" agentid=\"3011483\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"3\" locationid=\"60002074\" locator=\"false\"/>\r\n    <row agent=\"Toma Iwahira\" agentid=\"3011484\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"3\" locationid=\"60002164\" locator=\"true\"/>\r\n    <row agent=\"Arunmaa Limmamon\" agentid=\"3011485\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"2\" locationid=\"60002170\" locator=\"false\"/>\r\n    <row agent=\"Nuosiken Raulmanen\" agentid=\"3011486\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"2\" locationid=\"60002167\" locator=\"false\"/>\r\n    <row agent=\"Kabe Haunanen\" agentid=\"3011487\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"1\" locationid=\"60002161\" locator=\"false\"/>\r\n    <row agent=\"Aumi Amachi\" agentid=\"3011488\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"24\" level=\"1\" locationid=\"60002185\" locator=\"false\"/>\r\n    <row agent=\"Tuotoh Kanaari\" agentid=\"3011489\" agenttypeid=\"8\" corporationid=\"1000019\" divisionid=\"18\" level=\"5\" locationid=\"60002188\" locator=\"false\"/>\r\n    <row agent=\"Huunashin Varnen\" agentid=\"3011490\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"22\" level=\"3\" locationid=\"60002191\" locator=\"false\"/>\r\n    <row agent=\"Poirmavas Isoya\" agentid=\"3011491\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"3\" locationid=\"60002194\" locator=\"false\"/>\r\n    <row agent=\"Lonpaa Aivoli\" agentid=\"3011492\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"4\" locationid=\"60002083\" locator=\"false\"/>\r\n    <row agent=\"Ippas Tojawara\" agentid=\"3011493\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"24\" level=\"2\" locationid=\"60002077\" locator=\"false\"/>\r\n    <row agent=\"Viritie Arata\" agentid=\"3011494\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"3\" locationid=\"60002086\" locator=\"false\"/>\r\n    <row agent=\"Maksesen Ruulula\" agentid=\"3011495\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"3\" locationid=\"60002080\" locator=\"false\"/>\r\n    <row agent=\"Ila Pavira\" agentid=\"3011496\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"2\" locationid=\"60002125\" locator=\"false\"/>\r\n    <row agent=\"Tasuda Iwataya\" agentid=\"3011497\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"1\" locationid=\"60002134\" locator=\"false\"/>\r\n    <row agent=\"Versanen Osoni\" agentid=\"3011498\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"2\" locationid=\"60002128\" locator=\"false\"/>\r\n    <row agent=\"Tetsome Vatsivas\" agentid=\"3011499\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"22\" level=\"3\" locationid=\"60002131\" locator=\"false\"/>\r\n    <row agent=\"Sarulailen Oinokjus\" agentid=\"3011500\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"24\" level=\"2\" locationid=\"60002095\" locator=\"true\"/>\r\n    <row agent=\"Kotsiainen Unenailen\" agentid=\"3011501\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"2\" locationid=\"60002098\" locator=\"false\"/>\r\n    <row agent=\"Kemiloto Kiwa\" agentid=\"3011502\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"24\" level=\"1\" locationid=\"60002089\" locator=\"false\"/>\r\n    <row agent=\"Puukkoraka Runjalen\" agentid=\"3011503\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"24\" level=\"4\" locationid=\"60002092\" locator=\"false\"/>\r\n    <row agent=\"Raussinen Hastoh\" agentid=\"3011504\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"1\" locationid=\"60002197\" locator=\"false\"/>\r\n    <row agent=\"Saakkatoh Okanami\" agentid=\"3011505\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"24\" level=\"3\" locationid=\"60002203\" locator=\"false\"/>\r\n    <row agent=\"Arpoken Okakola\" agentid=\"3011506\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"1\" locationid=\"60002200\" locator=\"false\"/>\r\n    <row agent=\"Hyononeki Maan\" agentid=\"3011507\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"2\" locationid=\"60002206\" locator=\"false\"/>\r\n    <row agent=\"Ruunuken Vulli\" agentid=\"3011508\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"22\" level=\"4\" locationid=\"60002101\" locator=\"false\"/>\r\n    <row agent=\"Tsilo Ralttilo\" agentid=\"3011509\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"24\" level=\"4\" locationid=\"60002104\" locator=\"false\"/>\r\n    <row agent=\"Aulamon Ahtulen\" agentid=\"3011510\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"3\" locationid=\"60002107\" locator=\"false\"/>\r\n    <row agent=\"Marrada Itonula\" agentid=\"3011511\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"24\" level=\"4\" locationid=\"60002110\" locator=\"true\"/>\r\n    <row agent=\"Inkojus Kassugaiki\" agentid=\"3011512\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"22\" level=\"3\" locationid=\"60002137\" locator=\"true\"/>\r\n    <row agent=\"Isantani Igas\" agentid=\"3011513\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"1\" locationid=\"60002140\" locator=\"false\"/>\r\n    <row agent=\"Ylomaa Isen\" agentid=\"3011514\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"1\" locationid=\"60002143\" locator=\"false\"/>\r\n    <row agent=\"Hosoras Ieyahomon\" agentid=\"3011515\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"22\" level=\"3\" locationid=\"60002146\" locator=\"false\"/>\r\n    <row agent=\"Suonio Erkola\" agentid=\"3011516\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"24\" level=\"1\" locationid=\"60002245\" locator=\"false\"/>\r\n    <row agent=\"Erokura Mikata\" agentid=\"3011517\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"1\" locationid=\"60002284\" locator=\"false\"/>\r\n    <row agent=\"Yantiken Olkkushin\" agentid=\"3011518\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"2\" locationid=\"60002281\" locator=\"true\"/>\r\n    <row agent=\"Ozomawa Fursira\" agentid=\"3011519\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"4\" locationid=\"60002287\" locator=\"false\"/>\r\n    <row agent=\"Okila Tsurvalen\" agentid=\"3011520\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"2\" locationid=\"60002290\" locator=\"false\"/>\r\n    <row agent=\"Urishainen Ati\" agentid=\"3011521\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"2\" locationid=\"60002278\" locator=\"false\"/>\r\n    <row agent=\"Arameki Kulmonuola\" agentid=\"3011522\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"1\" locationid=\"60002272\" locator=\"false\"/>\r\n    <row agent=\"Moikkoshin Ebashin\" agentid=\"3011523\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"3\" locationid=\"60002269\" locator=\"true\"/>\r\n    <row agent=\"Sakkatokka Limsen\" agentid=\"3011524\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"4\" locationid=\"60002275\" locator=\"true\"/>\r\n    <row agent=\"Anttanen Aksen\" agentid=\"3011525\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"4\" locationid=\"60002359\" locator=\"false\"/>\r\n    <row agent=\"Elanoda Popas\" agentid=\"3011526\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"4\" locationid=\"60002353\" locator=\"false\"/>\r\n    <row agent=\"Ahtamon Pavanakka\" agentid=\"3011527\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"3\" locationid=\"60002356\" locator=\"false\"/>\r\n    <row agent=\"Ure Kasenumi\" agentid=\"3011528\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"2\" locationid=\"60002362\" locator=\"true\"/>\r\n    <row agent=\"Tatsari Vaheda\" agentid=\"3011529\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"4\" locationid=\"60002305\" locator=\"false\"/>\r\n    <row agent=\"Mislolen Issazainen\" agentid=\"3011530\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"3\" locationid=\"60002308\" locator=\"false\"/>\r\n    <row agent=\"Kokanogi Hayeda\" agentid=\"3011531\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"4\" locationid=\"60002311\" locator=\"false\"/>\r\n    <row agent=\"Itila Varavola\" agentid=\"3011532\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"1\" locationid=\"60002314\" locator=\"true\"/>\r\n    <row agent=\"Umunmaa Korakela\" agentid=\"3011533\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"24\" level=\"1\" locationid=\"60002248\" locator=\"false\"/>\r\n    <row agent=\"Panakiya Nakkilen\" agentid=\"3011534\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"4\" locationid=\"60002251\" locator=\"false\"/>\r\n    <row agent=\"Tattilen Ylandoki\" agentid=\"3011535\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"2\" locationid=\"60002254\" locator=\"false\"/>\r\n    <row agent=\"Olonashi Nokka\" agentid=\"3011536\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"3\" locationid=\"60002317\" locator=\"false\"/>\r\n    <row agent=\"Karas Tsurvalen\" agentid=\"3011537\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"2\" locationid=\"60002323\" locator=\"true\"/>\r\n    <row agent=\"Kantoh Putolen\" agentid=\"3011538\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"4\" locationid=\"60002320\" locator=\"true\"/>\r\n    <row agent=\"Arila Okanen\" agentid=\"3011539\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"1\" locationid=\"60002326\" locator=\"false\"/>\r\n    <row agent=\"Korsosen Etsalen\" agentid=\"3011540\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"4\" locationid=\"60002341\" locator=\"false\"/>\r\n    <row agent=\"Paara Nikkaken\" agentid=\"3011541\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"2\" locationid=\"60002344\" locator=\"false\"/>\r\n    <row agent=\"Ojai Arokarri\" agentid=\"3011542\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"2\" locationid=\"60002347\" locator=\"false\"/>\r\n    <row agent=\"Pyynola Isamioken\" agentid=\"3011543\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"2\" locationid=\"60002350\" locator=\"false\"/>\r\n    <row agent=\"Mervas Erjus\" agentid=\"3011545\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"1\" locationid=\"60002296\" locator=\"false\"/>\r\n    <row agent=\"Harroken Shinunula\" agentid=\"3011546\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"3\" locationid=\"60002299\" locator=\"false\"/>\r\n    <row agent=\"Mulanta Kikuyaki\" agentid=\"3011547\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"1\" locationid=\"60002302\" locator=\"false\"/>\r\n    <row agent=\"Eistenen Arveras\" agentid=\"3011548\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"3\" locationid=\"60002338\" locator=\"true\"/>\r\n    <row agent=\"Uusamon Egoshi\" agentid=\"3011549\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"2\" locationid=\"60002332\" locator=\"false\"/>\r\n    <row agent=\"Armie Hinashushi\" agentid=\"3011550\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"1\" locationid=\"60002329\" locator=\"false\"/>\r\n    <row agent=\"Hielukka Kajanainen\" agentid=\"3011551\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"3\" locationid=\"60002335\" locator=\"true\"/>\r\n    <row agent=\"Itirikko Innishi\" agentid=\"3011552\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"1\" locationid=\"60002263\" locator=\"false\"/>\r\n    <row agent=\"Kariwa Eistaken\" agentid=\"3011553\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"2\" locationid=\"60002266\" locator=\"false\"/>\r\n    <row agent=\"Kotkamatsu Millomon\" agentid=\"3011554\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"2\" locationid=\"60002260\" locator=\"false\"/>\r\n    <row agent=\"Aivira Ogimo\" agentid=\"3011555\" agenttypeid=\"8\" corporationid=\"1000020\" divisionid=\"22\" level=\"5\" locationid=\"60002257\" locator=\"false\"/>\r\n    <row agent=\"Teis Shusiainen\" agentid=\"3011556\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"22\" level=\"1\" locationid=\"60002368\" locator=\"false\"/>\r\n    <row agent=\"Ikra Egara\" agentid=\"3011557\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"23\" level=\"1\" locationid=\"60002422\" locator=\"false\"/>\r\n    <row agent=\"Isoma Juhenius\" agentid=\"3011558\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"22\" level=\"2\" locationid=\"60002425\" locator=\"false\"/>\r\n    <row agent=\"Atshurai Sasiekko\" agentid=\"3011559\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"22\" level=\"3\" locationid=\"60002377\" locator=\"false\"/>\r\n    <row agent=\"Paakadan Konken\" agentid=\"3011560\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"22\" level=\"4\" locationid=\"60002374\" locator=\"true\"/>\r\n    <row agent=\"Hotutani Akukiri\" agentid=\"3011561\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"22\" level=\"1\" locationid=\"60002371\" locator=\"false\"/>\r\n    <row agent=\"Ootoh Litiura\" agentid=\"3011562\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"23\" level=\"1\" locationid=\"60002416\" locator=\"false\"/>\r\n    <row agent=\"Ueshisen Orane\" agentid=\"3011563\" agenttypeid=\"8\" corporationid=\"1000022\" divisionid=\"23\" level=\"5\" locationid=\"60002377\" locator=\"false\"/>\r\n    <row agent=\"Ranttika Mirmiken\" agentid=\"3011564\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"22\" level=\"1\" locationid=\"60002407\" locator=\"false\"/>\r\n    <row agent=\"Tsupamon Aloto\" agentid=\"3011565\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"22\" level=\"3\" locationid=\"60002404\" locator=\"true\"/>\r\n    <row agent=\"Olkkosen Mitokka\" agentid=\"3011566\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"22\" level=\"3\" locationid=\"60002386\" locator=\"true\"/>\r\n    <row agent=\"Semmenen Isokava\" agentid=\"3011567\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"22\" level=\"3\" locationid=\"60002389\" locator=\"false\"/>\r\n    <row agent=\"Konkomatsu Pahula\" agentid=\"3011568\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"22\" level=\"3\" locationid=\"60002392\" locator=\"false\"/>\r\n    <row agent=\"Ibaras Suomo\" agentid=\"3011569\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"23\" level=\"2\" locationid=\"60002395\" locator=\"false\"/>\r\n    <row agent=\"Tykigi Okanula\" agentid=\"3011570\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"22\" level=\"3\" locationid=\"60002398\" locator=\"false\"/>\r\n    <row agent=\"Oyeneki Shittoh\" agentid=\"3011571\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"22\" level=\"1\" locationid=\"60002401\" locator=\"false\"/>\r\n    <row agent=\"Roikunen Tsuvarachi\" agentid=\"3011572\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"22\" level=\"3\" locationid=\"60002383\" locator=\"false\"/>\r\n    <row agent=\"Hakin Ookirai\" agentid=\"3011573\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"22\" level=\"2\" locationid=\"60002380\" locator=\"false\"/>\r\n    <row agent=\"Tubara Inaken\" agentid=\"3011574\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"22\" level=\"4\" locationid=\"60002413\" locator=\"false\"/>\r\n    <row agent=\"Iseto Airasen\" agentid=\"3011575\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"23\" level=\"2\" locationid=\"60002410\" locator=\"true\"/>\r\n    <row agent=\"Pukkala Janmaa\" agentid=\"3011576\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002428\" locator=\"false\"/>\r\n    <row agent=\"Jais Watiken\" agentid=\"3011577\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"3\" locationid=\"60002437\" locator=\"false\"/>\r\n    <row agent=\"Yomon Narika\" agentid=\"3011578\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"4\" locationid=\"60002440\" locator=\"false\"/>\r\n    <row agent=\"Arochi Aivula\" agentid=\"3011579\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"1\" locationid=\"60002482\" locator=\"false\"/>\r\n    <row agent=\"Yahutola Oissio\" agentid=\"3011580\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002488\" locator=\"true\"/>\r\n    <row agent=\"Tokinala Sela\" agentid=\"3011581\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002446\" locator=\"false\"/>\r\n    <row agent=\"Otetula Kilkkuken\" agentid=\"3011582\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002452\" locator=\"false\"/>\r\n    <row agent=\"Alonaga Saisio\" agentid=\"3011583\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002455\" locator=\"false\"/>\r\n    <row agent=\"Joukoras Rimaremi\" agentid=\"3011584\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002458\" locator=\"true\"/>\r\n    <row agent=\"Hoiksanen Shitsu\" agentid=\"3011585\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"3\" locationid=\"60002461\" locator=\"false\"/>\r\n    <row agent=\"Hintanen Tasiwa\" agentid=\"3011586\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002449\" locator=\"false\"/>\r\n    <row agent=\"Jakka Imaka\" agentid=\"3011587\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002545\" locator=\"false\"/>\r\n    <row agent=\"Paranaki Vandenen\" agentid=\"3011588\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002536\" locator=\"false\"/>\r\n    <row agent=\"Ogomi Eroken\" agentid=\"3011589\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002539\" locator=\"false\"/>\r\n    <row agent=\"Paatsomaito Ogikito\" agentid=\"3011590\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002548\" locator=\"false\"/>\r\n    <row agent=\"Ylomainen Asairtakka\" agentid=\"3011591\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"3\" locationid=\"60002542\" locator=\"false\"/>\r\n    <row agent=\"Raishumailen Nelula\" agentid=\"3011592\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"4\" locationid=\"60002551\" locator=\"false\"/>\r\n    <row agent=\"Horolaala Tyken\" agentid=\"3011593\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002569\" locator=\"false\"/>\r\n    <row agent=\"Penoksa Upposen\" agentid=\"3011594\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002557\" locator=\"false\"/>\r\n    <row agent=\"Ieyashionen Ahteri\" agentid=\"3011595\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002563\" locator=\"false\"/>\r\n    <row agent=\"Kara Ueshano\" agentid=\"3011596\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"4\" locationid=\"60002554\" locator=\"true\"/>\r\n    <row agent=\"Asetila Ikishano\" agentid=\"3011597\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002560\" locator=\"false\"/>\r\n    <row agent=\"Kanikko Kora\" agentid=\"3011598\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"4\" locationid=\"60002566\" locator=\"false\"/>\r\n    <row agent=\"Ukras Kawiki\" agentid=\"3011599\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002668\" locator=\"false\"/>\r\n    <row agent=\"Auras Umenen\" agentid=\"3011600\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002671\" locator=\"false\"/>\r\n    <row agent=\"Hissaras Aragas\" agentid=\"3011601\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002665\" locator=\"true\"/>\r\n    <row agent=\"Kikera Hetulato\" agentid=\"3011602\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002674\" locator=\"true\"/>\r\n    <row agent=\"Hoken Isikesu\" agentid=\"3011603\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"4\" locationid=\"60002677\" locator=\"true\"/>\r\n    <row agent=\"Nimala Puori\" agentid=\"3011604\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002662\" locator=\"false\"/>\r\n    <row agent=\"Santera Mimiraila\" agentid=\"3011605\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002686\" locator=\"false\"/>\r\n    <row agent=\"Pakko Sakanin\" agentid=\"3011606\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002680\" locator=\"false\"/>\r\n    <row agent=\"Kurrisen Arinuomo\" agentid=\"3011607\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002689\" locator=\"false\"/>\r\n    <row agent=\"Suokakko Niwazino\" agentid=\"3011608\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002683\" locator=\"true\"/>\r\n    <row agent=\"Vannanen Iijata\" agentid=\"3011609\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"3\" locationid=\"60002692\" locator=\"true\"/>\r\n    <row agent=\"Otvas Linachi\" agentid=\"3011610\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002695\" locator=\"false\"/>\r\n    <row agent=\"Yoemmono Tatimala\" agentid=\"3011611\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002590\" locator=\"false\"/>\r\n    <row agent=\"Nikkizaiki Nukka\" agentid=\"3011612\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002596\" locator=\"false\"/>\r\n    <row agent=\"Naninen Hiraken\" agentid=\"3011613\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002599\" locator=\"true\"/>\r\n    <row agent=\"Tavanula Saari\" agentid=\"3011614\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002593\" locator=\"false\"/>\r\n    <row agent=\"Otsulen Sapala\" agentid=\"3011615\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002602\" locator=\"true\"/>\r\n    <row agent=\"Oikanda Rokila\" agentid=\"3011616\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002605\" locator=\"false\"/>\r\n    <row agent=\"Ohki Okki\" agentid=\"3011617\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002626\" locator=\"false\"/>\r\n    <row agent=\"Huomaila Kebashi\" agentid=\"3011618\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002629\" locator=\"true\"/>\r\n    <row agent=\"Varppavas Hirmaken\" agentid=\"3011619\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002632\" locator=\"false\"/>\r\n    <row agent=\"Vistoya Taranogas\" agentid=\"3011620\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002635\" locator=\"false\"/>\r\n    <row agent=\"Patsaka Valmodan\" agentid=\"3011621\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002641\" locator=\"true\"/>\r\n    <row agent=\"Huovinni Jama\" agentid=\"3011622\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002638\" locator=\"false\"/>\r\n    <row agent=\"Sohokka Aketiya\" agentid=\"3011623\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002476\" locator=\"false\"/>\r\n    <row agent=\"Muras Ohvalainen\" agentid=\"3011624\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002479\" locator=\"false\"/>\r\n    <row agent=\"Povula Valelin\" agentid=\"3011625\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"4\" locationid=\"60002464\" locator=\"true\"/>\r\n    <row agent=\"Rilmivaira Uusuwaiken\" agentid=\"3011626\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002470\" locator=\"false\"/>\r\n    <row agent=\"Fukkenukka Kola\" agentid=\"3011627\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"3\" locationid=\"60002473\" locator=\"false\"/>\r\n    <row agent=\"Koinas Ha\" agentid=\"3011628\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"3\" locationid=\"60002467\" locator=\"false\"/>\r\n    <row agent=\"Iivonen Ametera\" agentid=\"3011629\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002614\" locator=\"false\"/>\r\n    <row agent=\"Moi Senota\" agentid=\"3011630\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002608\" locator=\"false\"/>\r\n    <row agent=\"Ilken Akakiomaa\" agentid=\"3011631\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002611\" locator=\"false\"/>\r\n    <row agent=\"Satimi Pukrukela\" agentid=\"3011632\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"3\" locationid=\"60002617\" locator=\"false\"/>\r\n    <row agent=\"Tira Paakkodan\" agentid=\"3011633\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002620\" locator=\"false\"/>\r\n    <row agent=\"Ichinumi Toilinala\" agentid=\"3011634\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002623\" locator=\"false\"/>\r\n    <row agent=\"Oilari Oineshin\" agentid=\"3011635\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002500\" locator=\"false\"/>\r\n    <row agent=\"Olkkanen Umikka\" agentid=\"3011636\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002503\" locator=\"false\"/>\r\n    <row agent=\"Seda Kushanula\" agentid=\"3011637\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002509\" locator=\"false\"/>\r\n    <row agent=\"Vassen Rusken\" agentid=\"3011638\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002506\" locator=\"false\"/>\r\n    <row agent=\"Vaisen Kyskasakka\" agentid=\"3011639\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002512\" locator=\"false\"/>\r\n    <row agent=\"Isawara Erkkeras\" agentid=\"3011640\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"4\" locationid=\"60002515\" locator=\"false\"/>\r\n    <row agent=\"Koshotela Gemppiras\" agentid=\"3011641\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"3\" locationid=\"60002650\" locator=\"true\"/>\r\n    <row agent=\"Asabe Otukuya\" agentid=\"3011642\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"4\" locationid=\"60002659\" locator=\"true\"/>\r\n    <row agent=\"Honiomi Supasen\" agentid=\"3011643\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"3\" locationid=\"60002647\" locator=\"false\"/>\r\n    <row agent=\"Yorkkaitoh Ochiriemi\" agentid=\"3011644\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"4\" locationid=\"60002653\" locator=\"true\"/>\r\n    <row agent=\"Hirtamon Onirvura\" agentid=\"3011645\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002644\" locator=\"false\"/>\r\n    <row agent=\"Ikita Jusken\" agentid=\"3011646\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"4\" locationid=\"60002656\" locator=\"false\"/>\r\n    <row agent=\"Puskiainen Chirunava\" agentid=\"3011647\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002518\" locator=\"false\"/>\r\n    <row agent=\"Narmaken Kovaras\" agentid=\"3011648\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002533\" locator=\"true\"/>\r\n    <row agent=\"Karras Ikkola\" agentid=\"3011649\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002527\" locator=\"false\"/>\r\n    <row agent=\"Astanen Saskava\" agentid=\"3011650\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"4\" locationid=\"60002530\" locator=\"false\"/>\r\n    <row agent=\"Egino Erashin\" agentid=\"3011651\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002524\" locator=\"false\"/>\r\n    <row agent=\"Mugora Akatervo\" agentid=\"3011652\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002521\" locator=\"true\"/>\r\n    <row agent=\"Sikupula Iivasunen\" agentid=\"3011653\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002584\" locator=\"false\"/>\r\n    <row agent=\"Airivas Ichomala\" agentid=\"3011654\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"3\" locationid=\"60002587\" locator=\"false\"/>\r\n    <row agent=\"Tarawa Elola\" agentid=\"3011655\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002572\" locator=\"false\"/>\r\n    <row agent=\"Okadoma Shikkashin\" agentid=\"3011656\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002578\" locator=\"false\"/>\r\n    <row agent=\"Iju Elarola\" agentid=\"3011657\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"4\" locationid=\"60002581\" locator=\"true\"/>\r\n    <row agent=\"Haima Toilotainen\" agentid=\"3011658\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002575\" locator=\"false\"/>\r\n    <row agent=\"Abata Kojelainen\" agentid=\"3011659\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002431\" locator=\"true\"/>\r\n    <row agent=\"Sautitara Munevailen\" agentid=\"3011661\" agenttypeid=\"8\" corporationid=\"1000023\" divisionid=\"22\" level=\"5\" locationid=\"60002443\" locator=\"false\"/>\r\n    <row agent=\"Kahala Okilen\" agentid=\"3011662\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"1\" locationid=\"60002485\" locator=\"false\"/>\r\n    <row agent=\"Niuchi Sobaseki\" agentid=\"3011663\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"1\" locationid=\"60002491\" locator=\"false\"/>\r\n    <row agent=\"Alaoutitoh Hevulainen\" agentid=\"3011664\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"1\" locationid=\"60002497\" locator=\"false\"/>\r\n    <row agent=\"Ourinainen Ebata\" agentid=\"3011665\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"3\" locationid=\"60002494\" locator=\"true\"/>\r\n    <row agent=\"Kaka Rachi\" agentid=\"3011666\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"1\" locationid=\"60002698\" locator=\"false\"/>\r\n    <row agent=\"Tatsoras Eerolilen\" agentid=\"3011667\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"2\" locationid=\"60002716\" locator=\"true\"/>\r\n    <row agent=\"Selen Iwalula\" agentid=\"3011668\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"3\" locationid=\"60002719\" locator=\"false\"/>\r\n    <row agent=\"Tokkitoh Saasanmaa\" agentid=\"3011669\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"2\" locationid=\"60002722\" locator=\"true\"/>\r\n    <row agent=\"Nemeri Iwara\" agentid=\"3011670\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"3\" locationid=\"60002701\" locator=\"false\"/>\r\n    <row agent=\"Kaimon Ininerva\" agentid=\"3011671\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"4\" locationid=\"60002704\" locator=\"false\"/>\r\n    <row agent=\"Sakila Etanen\" agentid=\"3011672\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"4\" locationid=\"60002710\" locator=\"true\"/>\r\n    <row agent=\"Vakkibasen Pinuta\" agentid=\"3011673\" agenttypeid=\"8\" corporationid=\"1000024\" divisionid=\"22\" level=\"5\" locationid=\"60002707\" locator=\"false\"/>\r\n    <row agent=\"Askalaisen Oni\" agentid=\"3011674\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"1\" locationid=\"60002713\" locator=\"false\"/>\r\n    <row agent=\"Kirase Nupiroda\" agentid=\"3011675\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"3\" locationid=\"60002731\" locator=\"true\"/>\r\n    <row agent=\"Ihukio Hinpas\" agentid=\"3011676\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"2\" locationid=\"60002725\" locator=\"false\"/>\r\n    <row agent=\"Ohminen Saskora\" agentid=\"3011677\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"1\" locationid=\"60002728\" locator=\"false\"/>\r\n    <row agent=\"Kauliken Uusazoken\" agentid=\"3011678\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"1\" locationid=\"60002734\" locator=\"true\"/>\r\n    <row agent=\"Tuunani Tamarri\" agentid=\"3011679\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"1\" locationid=\"60002887\" locator=\"false\"/>\r\n    <row agent=\"Wuompelen Nosara\" agentid=\"3011680\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"1\" locationid=\"60002803\" locator=\"false\"/>\r\n    <row agent=\"Kantonen Haarsanen\" agentid=\"3011681\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"2\" locationid=\"60002797\" locator=\"true\"/>\r\n    <row agent=\"Paranen Haskallio\" agentid=\"3011682\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"2\" locationid=\"60002800\" locator=\"false\"/>\r\n    <row agent=\"Niemi Terpala\" agentid=\"3011683\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"3\" locationid=\"60002788\" locator=\"false\"/>\r\n    <row agent=\"Vienari Puumon\" agentid=\"3011684\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"3\" locationid=\"60002791\" locator=\"false\"/>\r\n    <row agent=\"Juma Roikikasvio\" agentid=\"3011685\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"1\" locationid=\"60002794\" locator=\"false\"/>\r\n    <row agent=\"Batoh Ichiraiken\" agentid=\"3011686\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"2\" locationid=\"60002866\" locator=\"true\"/>\r\n    <row agent=\"Ozisami Mahoken\" agentid=\"3011687\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"3\" locationid=\"60002872\" locator=\"true\"/>\r\n    <row agent=\"Netsalakka Arilen\" agentid=\"3011688\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"3\" locationid=\"60002875\" locator=\"false\"/>\r\n    <row agent=\"Tartoken Nosen\" agentid=\"3011689\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"3\" locationid=\"60002869\" locator=\"false\"/>\r\n    <row agent=\"Aakonoshin Piertalen\" agentid=\"3011690\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"4\" locationid=\"60002860\" locator=\"true\"/>\r\n    <row agent=\"Hotvas Velenamo\" agentid=\"3011691\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"1\" locationid=\"60002863\" locator=\"false\"/>\r\n    <row agent=\"Aula Koitonen\" agentid=\"3011692\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"2\" locationid=\"60002752\" locator=\"false\"/>\r\n    <row agent=\"Ilta Majala\" agentid=\"3011693\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"1\" locationid=\"60002758\" locator=\"false\"/>\r\n    <row agent=\"Igase Visola\" agentid=\"3011694\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"3\" locationid=\"60002764\" locator=\"true\"/>\r\n    <row agent=\"Sanagechi Kuikara\" agentid=\"3011695\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"1\" locationid=\"60002755\" locator=\"false\"/>\r\n    <row agent=\"Inavala Egaruopas\" agentid=\"3011696\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"2\" locationid=\"60002761\" locator=\"false\"/>\r\n    <row agent=\"Oinorolen Ocho\" agentid=\"3011697\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"2\" locationid=\"60002767\" locator=\"true\"/>\r\n    <row agent=\"Palumola Kaarvonen\" agentid=\"3011698\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"1\" locationid=\"60002773\" locator=\"false\"/>\r\n    <row agent=\"Rammeki Jushin\" agentid=\"3011699\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"1\" locationid=\"60002776\" locator=\"false\"/>\r\n    <row agent=\"Tanashaiken Aurila\" agentid=\"3011700\" agenttypeid=\"8\" corporationid=\"1000025\" divisionid=\"23\" level=\"5\" locationid=\"60002782\" locator=\"false\"/>\r\n    <row agent=\"Illen Hasunmaa\" agentid=\"3011701\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"1\" locationid=\"60002770\" locator=\"false\"/>\r\n    <row agent=\"Sirvula Isinen\" agentid=\"3011702\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"2\" locationid=\"60002779\" locator=\"false\"/>\r\n    <row agent=\"Eskauchi Koiltawailen\" agentid=\"3011703\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"4\" locationid=\"60002785\" locator=\"true\"/>\r\n    <row agent=\"Parttamon Anha\" agentid=\"3011704\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"2\" locationid=\"60002836\" locator=\"true\"/>\r\n    <row agent=\"Vaittanen Uesharas\" agentid=\"3011705\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"4\" locationid=\"60002827\" locator=\"true\"/>\r\n    <row agent=\"Kasata Kuulemonmaa\" agentid=\"3011706\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"4\" locationid=\"60002824\" locator=\"false\"/>\r\n    <row agent=\"Honen Alti\" agentid=\"3011707\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"2\" locationid=\"60002833\" locator=\"false\"/>\r\n    <row agent=\"Shitula Akama\" agentid=\"3011708\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"1\" locationid=\"60002830\" locator=\"false\"/>\r\n    <row agent=\"Hietoken Tuken\" agentid=\"3011709\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"2\" locationid=\"60002839\" locator=\"false\"/>\r\n    <row agent=\"Oilenen Inuki\" agentid=\"3011710\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"4\" locationid=\"60002746\" locator=\"true\"/>\r\n    <row agent=\"Keikira Pakkashin\" agentid=\"3011711\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"2\" locationid=\"60002737\" locator=\"true\"/>\r\n    <row agent=\"Ichinita Huovatero\" agentid=\"3011712\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"4\" locationid=\"60002743\" locator=\"false\"/>\r\n    <row agent=\"Suskeino Pomari\" agentid=\"3011713\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"2\" locationid=\"60002749\" locator=\"true\"/>\r\n    <row agent=\"Akkaras Shigakarri\" agentid=\"3011714\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"4\" locationid=\"60002740\" locator=\"true\"/>\r\n    <row agent=\"Sorkakaala Viura\" agentid=\"3011715\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"3\" locationid=\"60002806\" locator=\"false\"/>\r\n    <row agent=\"Arajailen Korinen\" agentid=\"3011716\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"2\" locationid=\"60002809\" locator=\"false\"/>\r\n    <row agent=\"Tonneki Villasen\" agentid=\"3011717\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"3\" locationid=\"60002818\" locator=\"false\"/>\r\n    <row agent=\"Irsen Otinada\" agentid=\"3011718\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"1\" locationid=\"60002812\" locator=\"true\"/>\r\n    <row agent=\"Mikolala Paarosen\" agentid=\"3011719\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"2\" locationid=\"60002821\" locator=\"false\"/>\r\n    <row agent=\"Kukkoluoma Joksimo\" agentid=\"3011720\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"2\" locationid=\"60002815\" locator=\"false\"/>\r\n    <row agent=\"Keilen Watashama\" agentid=\"3011721\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"2\" locationid=\"60002854\" locator=\"true\"/>\r\n    <row agent=\"Koikiainen Okijerva\" agentid=\"3011722\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"1\" locationid=\"60002857\" locator=\"false\"/>\r\n    <row agent=\"Uranen Surtilen\" agentid=\"3011723\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"2\" locationid=\"60002845\" locator=\"false\"/>\r\n    <row agent=\"Akitamo Funtari\" agentid=\"3011724\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"2\" locationid=\"60002842\" locator=\"false\"/>\r\n    <row agent=\"Kotsiliola Panshin\" agentid=\"3011725\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"3\" locationid=\"60002848\" locator=\"false\"/>\r\n    <row agent=\"Kokken Tankitainen\" agentid=\"3011726\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"1\" locationid=\"60002851\" locator=\"false\"/>\r\n    <row agent=\"Kollamon Okichoshi\" agentid=\"3011727\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"3\" locationid=\"60002911\" locator=\"true\"/>\r\n    <row agent=\"Nannanshainen Ibotela\" agentid=\"3011728\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"2\" locationid=\"60002896\" locator=\"false\"/>\r\n    <row agent=\"Sienatsu Arenpaa\" agentid=\"3011729\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"1\" locationid=\"60002908\" locator=\"false\"/>\r\n    <row agent=\"Kamaala Ononala\" agentid=\"3011730\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"1\" locationid=\"60002902\" locator=\"false\"/>\r\n    <row agent=\"Omae Adora\" agentid=\"3011731\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"1\" locationid=\"60002905\" locator=\"false\"/>\r\n    <row agent=\"Sirotova Uesi\" agentid=\"3011732\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"3\" locationid=\"60002899\" locator=\"false\"/>\r\n    <row agent=\"Mislolen Paukukaiken\" agentid=\"3011734\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"2\" locationid=\"60002893\" locator=\"false\"/>\r\n    <row agent=\"Hisailvorri Heisatailen\" agentid=\"3011735\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"2\" locationid=\"60002878\" locator=\"false\"/>\r\n    <row agent=\"Kiras Vintoh\" agentid=\"3011736\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"3\" locationid=\"60002890\" locator=\"true\"/>\r\n    <row agent=\"Miskavas Ichonen\" agentid=\"3011737\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"1\" locationid=\"60002881\" locator=\"false\"/>\r\n    <row agent=\"Tuoralen Kaavala\" agentid=\"3011738\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"1\" locationid=\"60002914\" locator=\"false\"/>\r\n    <row agent=\"Sawalola Hevulainen\" agentid=\"3011739\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"3\" locationid=\"60002998\" locator=\"false\"/>\r\n    <row agent=\"Tsultinumi Takoshada\" agentid=\"3011740\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"2\" locationid=\"60003001\" locator=\"false\"/>\r\n    <row agent=\"Hoshikila Yarela\" agentid=\"3011741\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"2\" locationid=\"60003004\" locator=\"false\"/>\r\n    <row agent=\"Immuri Nistoya\" agentid=\"3011742\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"2\" locationid=\"60003007\" locator=\"false\"/>\r\n    <row agent=\"Haapio Aarnalen\" agentid=\"3011743\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"3\" locationid=\"60003004\" locator=\"true\"/>\r\n    <row agent=\"Ralken Aikinen\" agentid=\"3011744\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"3\" locationid=\"60003013\" locator=\"false\"/>\r\n    <row agent=\"Tarovila Tarpas\" agentid=\"3011745\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"2\" locationid=\"60002950\" locator=\"false\"/>\r\n    <row agent=\"Katken Shitaluma\" agentid=\"3011746\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"3\" locationid=\"60002956\" locator=\"true\"/>\r\n    <row agent=\"Hageken Ieri\" agentid=\"3011747\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"3\" locationid=\"60002977\" locator=\"false\"/>\r\n    <row agent=\"Tokken Ga\" agentid=\"3011748\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"2\" locationid=\"60002980\" locator=\"false\"/>\r\n    <row agent=\"Harkkiainen Airai\" agentid=\"3011749\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"1\" locationid=\"60002974\" locator=\"false\"/>\r\n    <row agent=\"Torvas Kojaken\" agentid=\"3011750\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"3\" locationid=\"60002983\" locator=\"false\"/>\r\n    <row agent=\"Haakamaitoh Manekila\" agentid=\"3011751\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"3\" locationid=\"60002971\" locator=\"true\"/>\r\n    <row agent=\"Mori Eroda\" agentid=\"3011752\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"4\" locationid=\"60002965\" locator=\"true\"/>\r\n    <row agent=\"Akashi Iivalen\" agentid=\"3011753\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"1\" locationid=\"60002962\" locator=\"false\"/>\r\n    <row agent=\"Keuchi Adomago\" agentid=\"3011754\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"3\" locationid=\"60002968\" locator=\"false\"/>\r\n    <row agent=\"Ossen Unonen\" agentid=\"3011755\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"2\" locationid=\"60002926\" locator=\"false\"/>\r\n    <row agent=\"Sundan Ebenoshi\" agentid=\"3011756\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"3\" locationid=\"60002929\" locator=\"false\"/>\r\n    <row agent=\"Hunttanen Amasen\" agentid=\"3011757\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"3\" locationid=\"60002932\" locator=\"true\"/>\r\n    <row agent=\"Uesa Kurtsunen\" agentid=\"3011758\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"2\" locationid=\"60002935\" locator=\"false\"/>\r\n    <row agent=\"Kariemi Tankitainen\" agentid=\"3011759\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"3\" locationid=\"60002920\" locator=\"false\"/>\r\n    <row agent=\"Asosainen Umachi\" agentid=\"3011760\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"4\" locationid=\"60002923\" locator=\"false\"/>\r\n    <row agent=\"Haitnanmaa Jishadan\" agentid=\"3011761\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"2\" locationid=\"60002917\" locator=\"false\"/>\r\n    <row agent=\"Tuuraleto Ibubota\" agentid=\"3011762\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"1\" locationid=\"60003013\" locator=\"false\"/>\r\n    <row agent=\"Veiriya Santo\" agentid=\"3011763\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"3\" locationid=\"60003019\" locator=\"false\"/>\r\n    <row agent=\"Tamo Heinulaila\" agentid=\"3011764\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"4\" locationid=\"60003010\" locator=\"true\"/>\r\n    <row agent=\"Ippara Orsaisio\" agentid=\"3011765\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"3\" locationid=\"60003016\" locator=\"true\"/>\r\n    <row agent=\"Fu Alameya\" agentid=\"3011766\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"4\" locationid=\"60002941\" locator=\"false\"/>\r\n    <row agent=\"Veinepas Mattila\" agentid=\"3011767\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"1\" locationid=\"60002938\" locator=\"false\"/>\r\n    <row agent=\"Tsusonda Kolkkoken\" agentid=\"3011768\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"2\" locationid=\"60002944\" locator=\"true\"/>\r\n    <row agent=\"Nilen Koinahaila\" agentid=\"3011769\" agenttypeid=\"8\" corporationid=\"1000026\" divisionid=\"22\" level=\"5\" locationid=\"60002947\" locator=\"false\"/>\r\n    <row agent=\"Hirtalen Umonoi\" agentid=\"3011770\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"2\" locationid=\"60003031\" locator=\"true\"/>\r\n    <row agent=\"Kihtukainen Onegas\" agentid=\"3011771\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"4\" locationid=\"60003022\" locator=\"true\"/>\r\n    <row agent=\"Syhken Ylina\" agentid=\"3011772\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"2\" locationid=\"60003025\" locator=\"false\"/>\r\n    <row agent=\"Ahvaken Tommii\" agentid=\"3011773\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"1\" locationid=\"60003028\" locator=\"false\"/>\r\n    <row agent=\"Tananola Naninen\" agentid=\"3011774\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"3\" locationid=\"60002986\" locator=\"false\"/>\r\n    <row agent=\"Kamela Ittaunio\" agentid=\"3011775\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"1\" locationid=\"60002992\" locator=\"false\"/>\r\n    <row agent=\"Paatonen Aromiwa\" agentid=\"3011776\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"2\" locationid=\"60002995\" locator=\"false\"/>\r\n    <row agent=\"Raurisen Ohmanin\" agentid=\"3011777\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"2\" locationid=\"60002989\" locator=\"true\"/>\r\n    <row agent=\"Nenmaa Hemara\" agentid=\"3011779\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"24\" level=\"2\" locationid=\"60003067\" locator=\"false\"/>\r\n    <row agent=\"Wahmiras Edamon\" agentid=\"3011780\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"24\" level=\"4\" locationid=\"60003061\" locator=\"false\"/>\r\n    <row agent=\"Halmaganda Aaho\" agentid=\"3011781\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"22\" level=\"3\" locationid=\"60003064\" locator=\"true\"/>\r\n    <row agent=\"Tashatsu Arula\" agentid=\"3011782\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"22\" level=\"3\" locationid=\"60003082\" locator=\"true\"/>\r\n    <row agent=\"Geshozura Manoi\" agentid=\"3011783\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"24\" level=\"3\" locationid=\"60003079\" locator=\"false\"/>\r\n    <row agent=\"Wakkinen Puramaya\" agentid=\"3011784\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"24\" level=\"1\" locationid=\"60003085\" locator=\"false\"/>\r\n    <row agent=\"Atshonen Soiken\" agentid=\"3011785\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"24\" level=\"3\" locationid=\"60003106\" locator=\"false\"/>\r\n    <row agent=\"Tormalaiken Machiro\" agentid=\"3011786\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"22\" level=\"4\" locationid=\"60003109\" locator=\"false\"/>\r\n    <row agent=\"Isila Imazaiken\" agentid=\"3011787\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"22\" level=\"2\" locationid=\"60003112\" locator=\"false\"/>\r\n    <row agent=\"Kiomi Inanumaa\" agentid=\"3011788\" agenttypeid=\"8\" corporationid=\"1000027\" divisionid=\"22\" level=\"5\" locationid=\"60003109\" locator=\"false\"/>\r\n    <row agent=\"Tukumo Tuukka\" agentid=\"3011789\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"22\" level=\"3\" locationid=\"60003106\" locator=\"false\"/>\r\n    <row agent=\"Itima Ohmoganen\" agentid=\"3011790\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"24\" level=\"2\" locationid=\"60003058\" locator=\"false\"/>\r\n    <row agent=\"Arkono Ishegas\" agentid=\"3011792\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"22\" level=\"4\" locationid=\"60003040\" locator=\"true\"/>\r\n    <row agent=\"Kalakaaras Alamola\" agentid=\"3011793\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"24\" level=\"4\" locationid=\"60003049\" locator=\"false\"/>\r\n    <row agent=\"Erkkenen Uchinala\" agentid=\"3011794\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"24\" level=\"2\" locationid=\"60003046\" locator=\"true\"/>\r\n    <row agent=\"Kaila Ietsio\" agentid=\"3011795\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"24\" level=\"4\" locationid=\"60003043\" locator=\"false\"/>\r\n    <row agent=\"Okakko Nantomon\" agentid=\"3011796\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"24\" level=\"3\" locationid=\"60003073\" locator=\"true\"/>\r\n    <row agent=\"Matkuwa Moras\" agentid=\"3011797\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"24\" level=\"1\" locationid=\"60003070\" locator=\"false\"/>\r\n    <row agent=\"Vin Vattoh\" agentid=\"3011798\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"22\" level=\"1\" locationid=\"60003076\" locator=\"false\"/>\r\n    <row agent=\"Asinoro Hanaruwa\" agentid=\"3011799\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"24\" level=\"4\" locationid=\"60003118\" locator=\"false\"/>\r\n    <row agent=\"Shi Ochiya\" agentid=\"3011800\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"24\" level=\"2\" locationid=\"60003088\" locator=\"true\"/>\r\n    <row agent=\"Rotsuda Kekkomsa\" agentid=\"3011801\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"22\" level=\"2\" locationid=\"60003091\" locator=\"false\"/>\r\n    <row agent=\"Adomago Karjus\" agentid=\"3011802\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"22\" level=\"1\" locationid=\"60003115\" locator=\"false\"/>\r\n    <row agent=\"Maltoras Hiskatoh\" agentid=\"3011803\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"22\" level=\"4\" locationid=\"60003121\" locator=\"true\"/>\r\n    <row agent=\"Kahmaken Wamonen\" agentid=\"3011804\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"22\" level=\"1\" locationid=\"60003118\" locator=\"false\"/>\r\n    <row agent=\"Inanen Hakkonus\" agentid=\"3011805\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"22\" level=\"3\" locationid=\"60003100\" locator=\"true\"/>\r\n    <row agent=\"Ninkkakas Alari\" agentid=\"3011806\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"22\" level=\"3\" locationid=\"60003103\" locator=\"true\"/>\r\n    <row agent=\"Renen Kirtikko\" agentid=\"3011807\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"22\" level=\"2\" locationid=\"60003097\" locator=\"false\"/>\r\n    <row agent=\"Valtoh Pa\" agentid=\"3011808\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"24\" level=\"1\" locationid=\"60003124\" locator=\"false\"/>\r\n    <row agent=\"Shihanen Sagudora\" agentid=\"3011809\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"24\" level=\"1\" locationid=\"60003151\" locator=\"false\"/>\r\n    <row agent=\"Ishimieto Vairosen\" agentid=\"3011810\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"22\" level=\"2\" locationid=\"60003148\" locator=\"false\"/>\r\n    <row agent=\"Ajeleto Ulen\" agentid=\"3011811\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"24\" level=\"4\" locationid=\"60003139\" locator=\"false\"/>\r\n    <row agent=\"Kontomon Morppanen\" agentid=\"3011812\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"22\" level=\"3\" locationid=\"60003136\" locator=\"false\"/>\r\n    <row agent=\"Olosen Kistigas\" agentid=\"3011813\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"22\" level=\"2\" locationid=\"60003145\" locator=\"false\"/>\r\n    <row agent=\"Ponkenen Magutatoh\" agentid=\"3011814\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"22\" level=\"3\" locationid=\"60003142\" locator=\"false\"/>\r\n    <row agent=\"Arino Autinen\" agentid=\"3011815\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"22\" level=\"2\" locationid=\"60003175\" locator=\"false\"/>\r\n    <row agent=\"Olakokka Ieyoshadan\" agentid=\"3011816\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"22\" level=\"3\" locationid=\"60003172\" locator=\"true\"/>\r\n    <row agent=\"Eramoda Sosusuro\" agentid=\"3011817\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"22\" level=\"4\" locationid=\"60003178\" locator=\"false\"/>\r\n    <row agent=\"Hikka Silvas\" agentid=\"3011818\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"22\" level=\"2\" locationid=\"60003181\" locator=\"false\"/>\r\n    <row agent=\"Sula Kate\" agentid=\"3011819\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"24\" level=\"1\" locationid=\"60003154\" locator=\"false\"/>\r\n    <row agent=\"Oiras Varas\" agentid=\"3011820\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"22\" level=\"2\" locationid=\"60003157\" locator=\"false\"/>\r\n    <row agent=\"Alurila Hitsunen\" agentid=\"3011821\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"22\" level=\"2\" locationid=\"60003127\" locator=\"false\"/>\r\n    <row agent=\"Anzaima Raganula\" agentid=\"3011822\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"22\" level=\"2\" locationid=\"60003160\" locator=\"false\"/>\r\n    <row agent=\"Tanokairos Haila\" agentid=\"3011823\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"22\" level=\"3\" locationid=\"60003163\" locator=\"false\"/>\r\n    <row agent=\"Dagi Pahtami\" agentid=\"3011824\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"22\" level=\"4\" locationid=\"60003166\" locator=\"true\"/>\r\n    <row agent=\"Reisen Ienakkamon\" agentid=\"3011825\" agenttypeid=\"8\" corporationid=\"1000028\" divisionid=\"22\" level=\"5\" locationid=\"60003169\" locator=\"false\"/>\r\n    <row agent=\"Elalen Heinnonen\" agentid=\"3011826\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"22\" level=\"3\" locationid=\"60003130\" locator=\"false\"/>\r\n    <row agent=\"Autinen Shioksagai\" agentid=\"3011827\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"24\" level=\"2\" locationid=\"60003133\" locator=\"false\"/>\r\n    <row agent=\"Josachoya Isheda\" agentid=\"3011828\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"24\" level=\"1\" locationid=\"60003184\" locator=\"false\"/>\r\n    <row agent=\"Vikumaa Palken\" agentid=\"3011829\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"22\" level=\"2\" locationid=\"60003226\" locator=\"false\"/>\r\n    <row agent=\"Arai Suosaken\" agentid=\"3011830\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"24\" level=\"4\" locationid=\"60003229\" locator=\"false\"/>\r\n    <row agent=\"Kakalin Ursaasio\" agentid=\"3011831\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"22\" level=\"2\" locationid=\"60003238\" locator=\"false\"/>\r\n    <row agent=\"Onodora Veiriya\" agentid=\"3011832\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"22\" level=\"1\" locationid=\"60003241\" locator=\"false\"/>\r\n    <row agent=\"Taya Sorila\" agentid=\"3011833\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"22\" level=\"2\" locationid=\"60003208\" locator=\"false\"/>\r\n    <row agent=\"Kukkankasvio Kalmon\" agentid=\"3011834\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"24\" level=\"2\" locationid=\"60003211\" locator=\"false\"/>\r\n    <row agent=\"Kilori Otnen\" agentid=\"3011835\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"22\" level=\"2\" locationid=\"60003190\" locator=\"false\"/>\r\n    <row agent=\"Edara Tolaskita\" agentid=\"3011836\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"22\" level=\"3\" locationid=\"60003193\" locator=\"false\"/>\r\n    <row agent=\"Ritsakanen Arichi\" agentid=\"3011837\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"22\" level=\"1\" locationid=\"60003187\" locator=\"false\"/>\r\n    <row agent=\"Bakkata Jouragainen\" agentid=\"3011838\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"22\" level=\"1\" locationid=\"60003220\" locator=\"false\"/>\r\n    <row agent=\"Techono Pesin\" agentid=\"3011839\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"22\" level=\"4\" locationid=\"60003223\" locator=\"false\"/>\r\n    <row agent=\"Yabanuta Anashi\" agentid=\"3011840\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"22\" level=\"2\" locationid=\"60003199\" locator=\"false\"/>\r\n    <row agent=\"Kakukainen Urho\" agentid=\"3011841\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"24\" level=\"1\" locationid=\"60003196\" locator=\"true\"/>\r\n    <row agent=\"Hishanimo Kidurouchi\" agentid=\"3011842\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"22\" level=\"4\" locationid=\"60003232\" locator=\"false\"/>\r\n    <row agent=\"Aurunen Ijaris\" agentid=\"3011843\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"24\" level=\"3\" locationid=\"60003235\" locator=\"false\"/>\r\n    <row agent=\"Anniainen Aizaris\" agentid=\"3011844\" agenttypeid=\"8\" corporationid=\"1000029\" divisionid=\"22\" level=\"5\" locationid=\"60003217\" locator=\"false\"/>\r\n    <row agent=\"Takinta Hut\" agentid=\"3011845\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"22\" level=\"1\" locationid=\"60003214\" locator=\"false\"/>\r\n    <row agent=\"Nasuwari Litoh\" agentid=\"3011846\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"22\" level=\"2\" locationid=\"60003202\" locator=\"false\"/>\r\n    <row agent=\"Arameki Ulalari\" agentid=\"3011847\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"24\" level=\"3\" locationid=\"60003205\" locator=\"true\"/>\r\n    <row agent=\"Shunkoken Pojus\" agentid=\"3011848\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"24\" level=\"1\" locationid=\"60003244\" locator=\"false\"/>\r\n    <row agent=\"Kompiras Ylontai\" agentid=\"3011849\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"24\" level=\"3\" locationid=\"60003247\" locator=\"false\"/>\r\n    <row agent=\"Okanaka Ahvoken\" agentid=\"3011850\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"22\" level=\"2\" locationid=\"60003298\" locator=\"false\"/>\r\n    <row agent=\"Ursinen Tovari\" agentid=\"3011851\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"22\" level=\"3\" locationid=\"60003301\" locator=\"false\"/>\r\n    <row agent=\"Huutokonen Huoya\" agentid=\"3011852\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"22\" level=\"2\" locationid=\"60003322\" locator=\"false\"/>\r\n    <row agent=\"Josasaya Nagas\" agentid=\"3011853\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"24\" level=\"3\" locationid=\"60003325\" locator=\"false\"/>\r\n    <row agent=\"Peunolakka Heimune\" agentid=\"3011854\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"22\" level=\"1\" locationid=\"60003307\" locator=\"false\"/>\r\n    <row agent=\"Eromo Outikenen\" agentid=\"3011855\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"24\" level=\"2\" locationid=\"60003304\" locator=\"false\"/>\r\n    <row agent=\"Nupiroda Upi\" agentid=\"3011856\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"24\" level=\"4\" locationid=\"60003259\" locator=\"false\"/>\r\n    <row agent=\"Olkkogas Aranato\" agentid=\"3011857\" agenttypeid=\"8\" corporationid=\"1000030\" divisionid=\"22\" level=\"5\" locationid=\"60003256\" locator=\"false\"/>\r\n    <row agent=\"Hysinala Uimuken\" agentid=\"3011858\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"22\" level=\"4\" locationid=\"60003328\" locator=\"false\"/>\r\n    <row agent=\"Nelvanen Horitzawa\" agentid=\"3011859\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"22\" level=\"1\" locationid=\"60003331\" locator=\"false\"/>\r\n    <row agent=\"Aruwira Kaskovuo\" agentid=\"3011860\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"22\" level=\"4\" locationid=\"60003292\" locator=\"true\"/>\r\n    <row agent=\"Huukoshin Salulen\" agentid=\"3011861\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"22\" level=\"1\" locationid=\"60003295\" locator=\"false\"/>\r\n    <row agent=\"Uuhigoken Isato\" agentid=\"3011862\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"22\" level=\"1\" locationid=\"60003286\" locator=\"false\"/>\r\n    <row agent=\"Ruutakin Isaala\" agentid=\"3011863\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"22\" level=\"2\" locationid=\"60003289\" locator=\"false\"/>\r\n    <row agent=\"Outonen Molken\" agentid=\"3011864\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"22\" level=\"4\" locationid=\"60003274\" locator=\"true\"/>\r\n    <row agent=\"Paatakko Noyata\" agentid=\"3011865\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"22\" level=\"2\" locationid=\"60003277\" locator=\"false\"/>\r\n    <row agent=\"Yutukio Bara\" agentid=\"3011866\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"22\" level=\"1\" locationid=\"60003319\" locator=\"false\"/>\r\n    <row agent=\"Akiras Issota\" agentid=\"3011867\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"22\" level=\"3\" locationid=\"60003316\" locator=\"false\"/>\r\n    <row agent=\"Osio Nama\" agentid=\"3011868\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"22\" level=\"2\" locationid=\"60003313\" locator=\"false\"/>\r\n    <row agent=\"Iesakko Ihira\" agentid=\"3011869\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"24\" level=\"2\" locationid=\"60003310\" locator=\"false\"/>\r\n    <row agent=\"Pumenen Mokuwa\" agentid=\"3011870\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"22\" level=\"2\" locationid=\"60003268\" locator=\"false\"/>\r\n    <row agent=\"Uehuma Ulvas\" agentid=\"3011871\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"24\" level=\"1\" locationid=\"60003271\" locator=\"true\"/>\r\n    <row agent=\"Vainela Vuorlusin\" agentid=\"3011872\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"24\" level=\"3\" locationid=\"60003262\" locator=\"true\"/>\r\n    <row agent=\"Aarunpanen Arta\" agentid=\"3011873\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"24\" level=\"2\" locationid=\"60003265\" locator=\"false\"/>\r\n    <row agent=\"Atei Kojelainen\" agentid=\"3011874\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"22\" level=\"4\" locationid=\"60003280\" locator=\"false\"/>\r\n    <row agent=\"Erkinen Yoembora\" agentid=\"3011875\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"24\" level=\"3\" locationid=\"60003283\" locator=\"false\"/>\r\n    <row agent=\"Petayemi Kainokai\" agentid=\"3011876\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"22\" level=\"4\" locationid=\"60003253\" locator=\"true\"/>\r\n    <row agent=\"Alanala Okselen\" agentid=\"3011877\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"24\" level=\"1\" locationid=\"60003250\" locator=\"false\"/>\r\n    <row agent=\"Nashokoda Pekumatken\" agentid=\"3011878\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"1\" locationid=\"60003334\" locator=\"false\"/>\r\n    <row agent=\"Sumpiras Notarula\" agentid=\"3011879\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"2\" locationid=\"60003337\" locator=\"true\"/>\r\n    <row agent=\"Isava Haakkurava\" agentid=\"3011880\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"2\" locationid=\"60003349\" locator=\"false\"/>\r\n    <row agent=\"Hien Karnuras\" agentid=\"3011881\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"4\" locationid=\"60003346\" locator=\"false\"/>\r\n    <row agent=\"Ika Uuhikken\" agentid=\"3011882\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"2\" locationid=\"60003364\" locator=\"true\"/>\r\n    <row agent=\"Sitsen Ahtamon\" agentid=\"3011883\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"2\" locationid=\"60003367\" locator=\"false\"/>\r\n    <row agent=\"Sironius Okasono\" agentid=\"3011884\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"22\" level=\"3\" locationid=\"60003361\" locator=\"false\"/>\r\n    <row agent=\"Shaita Etsoro\" agentid=\"3011885\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"1\" locationid=\"60003358\" locator=\"false\"/>\r\n    <row agent=\"Julila Imaa\" agentid=\"3011886\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"22\" level=\"2\" locationid=\"60003388\" locator=\"false\"/>\r\n    <row agent=\"Mayaki Okoneda\" agentid=\"3011887\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"2\" locationid=\"60003391\" locator=\"true\"/>\r\n    <row agent=\"Imeri Ahtaa\" agentid=\"3011888\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"1\" locationid=\"60003352\" locator=\"false\"/>\r\n    <row agent=\"Narakala Saariken\" agentid=\"3011889\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"2\" locationid=\"60003355\" locator=\"true\"/>\r\n    <row agent=\"Enitouvo Erkonoi\" agentid=\"3011890\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"3\" locationid=\"60003370\" locator=\"false\"/>\r\n    <row agent=\"Aivoras Ahtainio\" agentid=\"3011891\" agenttypeid=\"8\" corporationid=\"1000031\" divisionid=\"22\" level=\"5\" locationid=\"60003373\" locator=\"false\"/>\r\n    <row agent=\"Palimoila Obachi\" agentid=\"3011892\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"2\" locationid=\"60003385\" locator=\"false\"/>\r\n    <row agent=\"Alikara Nuori\" agentid=\"3011893\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"3\" locationid=\"60003382\" locator=\"false\"/>\r\n    <row agent=\"Uemuda Watalenen\" agentid=\"3011894\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"3\" locationid=\"60003343\" locator=\"false\"/>\r\n    <row agent=\"Itunala Unonen\" agentid=\"3011895\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"1\" locationid=\"60003340\" locator=\"false\"/>\r\n    <row agent=\"Oksitei Uminami\" agentid=\"3011896\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"2\" locationid=\"60003379\" locator=\"false\"/>\r\n    <row agent=\"Gorttalen Tandoiras\" agentid=\"3011897\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"4\" locationid=\"60003376\" locator=\"true\"/>\r\n    <row agent=\"Surjinen Hakomairos\" agentid=\"3011898\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"22\" level=\"1\" locationid=\"60003394\" locator=\"false\"/>\r\n    <row agent=\"Sanoras Shia\" agentid=\"3011899\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"22\" level=\"2\" locationid=\"60003397\" locator=\"false\"/>\r\n    <row agent=\"Iidayamon Sattaya\" agentid=\"3011900\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"24\" level=\"3\" locationid=\"60003442\" locator=\"false\"/>\r\n    <row agent=\"Venonaila Sukkajus\" agentid=\"3011901\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"24\" level=\"2\" locationid=\"60003445\" locator=\"true\"/>\r\n    <row agent=\"Salen Kuokka\" agentid=\"3011902\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"22\" level=\"2\" locationid=\"60003415\" locator=\"false\"/>\r\n    <row agent=\"Tukken Oilamo\" agentid=\"3011903\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"22\" level=\"3\" locationid=\"60003412\" locator=\"false\"/>\r\n    <row agent=\"Peuvalolen Ubito\" agentid=\"3011904\" agenttypeid=\"8\" corporationid=\"1000032\" divisionid=\"22\" level=\"5\" locationid=\"60003424\" locator=\"false\"/>\r\n    <row agent=\"Moikallio Garnen\" agentid=\"3011905\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"24\" level=\"3\" locationid=\"60003427\" locator=\"true\"/>\r\n    <row agent=\"Ogyuma Ebenailen\" agentid=\"3011906\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"22\" level=\"4\" locationid=\"60003430\" locator=\"false\"/>\r\n    <row agent=\"Aaho Ruus\" agentid=\"3011907\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"22\" level=\"4\" locationid=\"60003433\" locator=\"true\"/>\r\n    <row agent=\"Airusen Ueshuneva\" agentid=\"3011908\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"22\" level=\"3\" locationid=\"60003409\" locator=\"false\"/>\r\n    <row agent=\"Yuhama Yuas\" agentid=\"3011909\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"22\" level=\"2\" locationid=\"60003406\" locator=\"true\"/>\r\n    <row agent=\"Puola Wirashoda\" agentid=\"3011910\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"22\" level=\"2\" locationid=\"60003403\" locator=\"false\"/>\r\n    <row agent=\"Sukki Tano\" agentid=\"3011911\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"22\" level=\"2\" locationid=\"60003400\" locator=\"false\"/>\r\n    <row agent=\"Ris Suokko\" agentid=\"3011912\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"22\" level=\"4\" locationid=\"60003439\" locator=\"false\"/>\r\n    <row agent=\"Jama Ranta\" agentid=\"3011913\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"24\" level=\"1\" locationid=\"60003436\" locator=\"false\"/>\r\n    <row agent=\"Tsunaras Rautataitoh\" agentid=\"3011914\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"22\" level=\"1\" locationid=\"60003418\" locator=\"false\"/>\r\n    <row agent=\"Korjiki Porkala\" agentid=\"3011915\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"22\" level=\"1\" locationid=\"60003421\" locator=\"false\"/>\r\n    <row agent=\"Gakoho Jiksokainen\" agentid=\"3011916\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"22\" level=\"2\" locationid=\"60003451\" locator=\"false\"/>\r\n    <row agent=\"Hakin Aritate\" agentid=\"3011917\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"22\" level=\"2\" locationid=\"60003448\" locator=\"false\"/>\r\n    <row agent=\"Kai Etashanko\" agentid=\"3011918\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003454\" locator=\"false\"/>\r\n    <row agent=\"Rauskajus Taskiainen\" agentid=\"3011919\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003592\" locator=\"false\"/>\r\n    <row agent=\"Itela Vepas\" agentid=\"3011920\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"1\" locationid=\"60003580\" locator=\"false\"/>\r\n    <row agent=\"Onaa Nomon\" agentid=\"3011921\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003586\" locator=\"false\"/>\r\n    <row agent=\"Abora Poikka\" agentid=\"3011922\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003589\" locator=\"false\"/>\r\n    <row agent=\"Kokoreto Kosinaki\" agentid=\"3011923\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"1\" locationid=\"60003484\" locator=\"false\"/>\r\n    <row agent=\"Auvulatoh Vaira\" agentid=\"3011924\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"4\" locationid=\"60003475\" locator=\"false\"/>\r\n    <row agent=\"Hatoh Yoma\" agentid=\"3011925\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"2\" locationid=\"60003487\" locator=\"false\"/>\r\n    <row agent=\"Fusinela Ihara\" agentid=\"3011926\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003472\" locator=\"false\"/>\r\n    <row agent=\"Ylamaa Knala\" agentid=\"3011927\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003481\" locator=\"true\"/>\r\n    <row agent=\"Toranota Onelari\" agentid=\"3011928\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003478\" locator=\"false\"/>\r\n    <row agent=\"Paaltomo Onin\" agentid=\"3011929\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003679\" locator=\"false\"/>\r\n    <row agent=\"Poloteinen Intaa\" agentid=\"3011930\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003520\" locator=\"false\"/>\r\n    <row agent=\"Yaskisen Peeratoh\" agentid=\"3011931\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"1\" locationid=\"60003679\" locator=\"false\"/>\r\n    <row agent=\"Sulkkenas Aizara\" agentid=\"3011932\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003685\" locator=\"true\"/>\r\n    <row agent=\"Uutuo Ohmata\" agentid=\"3011933\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003457\" locator=\"false\"/>\r\n    <row agent=\"Herras Soirikinen\" agentid=\"3011934\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"4\" locationid=\"60003682\" locator=\"true\"/>\r\n    <row agent=\"Sarmaras Uimuken\" agentid=\"3011935\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003685\" locator=\"false\"/>\r\n    <row agent=\"Ishasina Suokka\" agentid=\"3011936\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003676\" locator=\"false\"/>\r\n    <row agent=\"Orpas Rewira\" agentid=\"3011937\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"4\" locationid=\"60003679\" locator=\"true\"/>\r\n    <row agent=\"Vappulen Aurogas\" agentid=\"3011938\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"2\" locationid=\"60003670\" locator=\"false\"/>\r\n    <row agent=\"Vastakku Shiken\" agentid=\"3011939\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003673\" locator=\"false\"/>\r\n    <row agent=\"Isaala Alta\" agentid=\"3011940\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"1\" locationid=\"60003601\" locator=\"false\"/>\r\n    <row agent=\"Tuolovas Koliraya\" agentid=\"3011941\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003613\" locator=\"false\"/>\r\n    <row agent=\"Okenada Ansala\" agentid=\"3011942\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"2\" locationid=\"60003598\" locator=\"false\"/>\r\n    <row agent=\"Shitunen Vajus\" agentid=\"3011943\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003604\" locator=\"false\"/>\r\n    <row agent=\"Inamo Imaala\" agentid=\"3011944\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"2\" locationid=\"60003607\" locator=\"true\"/>\r\n    <row agent=\"Otinada Isi\" agentid=\"3011945\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003610\" locator=\"false\"/>\r\n    <row agent=\"Oinola Pilakanta\" agentid=\"3011946\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003628\" locator=\"false\"/>\r\n    <row agent=\"Orsanakka Immivas\" agentid=\"3011947\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"4\" locationid=\"60003631\" locator=\"true\"/>\r\n    <row agent=\"Uittigas Isonola\" agentid=\"3011948\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"3\" locationid=\"60003616\" locator=\"true\"/>\r\n    <row agent=\"Userala Yakela\" agentid=\"3011949\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003619\" locator=\"false\"/>\r\n    <row agent=\"Oima Iziwaitoh\" agentid=\"3011950\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003622\" locator=\"false\"/>\r\n    <row agent=\"Shionkanainen Aiti\" agentid=\"3011951\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003625\" locator=\"false\"/>\r\n    <row agent=\"Rula Hotvas\" agentid=\"3011952\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"1\" locationid=\"60003715\" locator=\"false\"/>\r\n    <row agent=\"Haraila Aruta\" agentid=\"3011953\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003718\" locator=\"true\"/>\r\n    <row agent=\"Onnola Kalakune\" agentid=\"3011954\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003709\" locator=\"false\"/>\r\n    <row agent=\"Hitalula Ibechi\" agentid=\"3011955\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003706\" locator=\"false\"/>\r\n    <row agent=\"Ahvaho Iidonen\" agentid=\"3011956\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"4\" locationid=\"60003712\" locator=\"true\"/>\r\n    <row agent=\"Shishanen Ishinoki\" agentid=\"3011957\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"4\" locationid=\"60003721\" locator=\"true\"/>\r\n    <row agent=\"Yantoh Pilo\" agentid=\"3011958\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003565\" locator=\"true\"/>\r\n    <row agent=\"Karo Shotisto\" agentid=\"3011959\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003577\" locator=\"true\"/>\r\n    <row agent=\"Kunkkoja Hotvas\" agentid=\"3011960\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003562\" locator=\"false\"/>\r\n    <row agent=\"Kurniainen Eratsaka\" agentid=\"3011961\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"2\" locationid=\"60003568\" locator=\"true\"/>\r\n    <row agent=\"Aroki Uetu\" agentid=\"3011962\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"4\" locationid=\"60003571\" locator=\"false\"/>\r\n    <row agent=\"Tuivatoh Isonasken\" agentid=\"3011963\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003574\" locator=\"false\"/>\r\n    <row agent=\"Olkkosen Saisima\" agentid=\"3011964\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"4\" locationid=\"60003559\" locator=\"false\"/>\r\n    <row agent=\"Suorasin Ukanata\" agentid=\"3011965\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"3\" locationid=\"60003544\" locator=\"false\"/>\r\n    <row agent=\"Sikoda Elaoutiras\" agentid=\"3011966\" agenttypeid=\"8\" corporationid=\"1000033\" divisionid=\"22\" level=\"5\" locationid=\"60003547\" locator=\"false\"/>\r\n    <row agent=\"Karunani Haura\" agentid=\"3011967\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003550\" locator=\"false\"/>\r\n    <row agent=\"Tanibu Kittavas\" agentid=\"3011968\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"2\" locationid=\"60003553\" locator=\"true\"/>\r\n    <row agent=\"Kuori Miromaa\" agentid=\"3011969\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"4\" locationid=\"60003556\" locator=\"true\"/>\r\n    <row agent=\"Yoemmono Ahtaa\" agentid=\"3011970\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003523\" locator=\"false\"/>\r\n    <row agent=\"Aokigenen Ugata\" agentid=\"3011971\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"4\" locationid=\"60003514\" locator=\"false\"/>\r\n    <row agent=\"Fukkuseilen Toin\" agentid=\"3011972\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003508\" locator=\"true\"/>\r\n    <row agent=\"Aunaken Okakaita\" agentid=\"3011973\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003511\" locator=\"false\"/>\r\n    <row agent=\"Vi Saariski\" agentid=\"3011974\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"2\" locationid=\"60003520\" locator=\"false\"/>\r\n    <row agent=\"Suon Autio\" agentid=\"3011975\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003517\" locator=\"false\"/>\r\n    <row agent=\"Olkkalin Haatilieto\" agentid=\"3011976\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003634\" locator=\"false\"/>\r\n    <row agent=\"Koirusen Hi\" agentid=\"3011977\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003640\" locator=\"false\"/>\r\n    <row agent=\"Kesheda Soravuo\" agentid=\"3011978\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003646\" locator=\"false\"/>\r\n    <row agent=\"Haitoh Askuo\" agentid=\"3011979\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"3\" locationid=\"60003643\" locator=\"true\"/>\r\n    <row agent=\"Santasen Korturas\" agentid=\"3011980\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003637\" locator=\"false\"/>\r\n    <row agent=\"Akiainavas Uunko\" agentid=\"3011981\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003649\" locator=\"false\"/>\r\n    <row agent=\"Vuonolailen Onnuro\" agentid=\"3011982\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"2\" locationid=\"60003652\" locator=\"true\"/>\r\n    <row agent=\"Sornen Shi\" agentid=\"3011983\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003655\" locator=\"false\"/>\r\n    <row agent=\"Marsuras Jurvala\" agentid=\"3011984\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003661\" locator=\"true\"/>\r\n    <row agent=\"Kuskitoh Asinoro\" agentid=\"3011985\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003664\" locator=\"false\"/>\r\n    <row agent=\"Tulala Sirikka\" agentid=\"3011986\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003658\" locator=\"false\"/>\r\n    <row agent=\"Huovalve Heikkulainen\" agentid=\"3011987\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003667\" locator=\"false\"/>\r\n    <row agent=\"Okikko Rohmunji\" agentid=\"3011989\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"1\" locationid=\"60003538\" locator=\"false\"/>\r\n    <row agent=\"Asunmaa Tutiri\" agentid=\"3011990\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"2\" locationid=\"60003541\" locator=\"false\"/>\r\n    <row agent=\"Kenkkaken Vapas\" agentid=\"3011991\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003532\" locator=\"false\"/>\r\n    <row agent=\"Etsuonio Kattolen\" agentid=\"3011992\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003529\" locator=\"false\"/>\r\n    <row agent=\"Okenama Nieltaken\" agentid=\"3011993\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"1\" locationid=\"60003526\" locator=\"false\"/>\r\n    <row agent=\"Abanen Artaya\" agentid=\"3011994\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"2\" locationid=\"60003493\" locator=\"false\"/>\r\n    <row agent=\"Hela Tashotsu\" agentid=\"3011995\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"4\" locationid=\"60003502\" locator=\"true\"/>\r\n    <row agent=\"Tantoyoemon Amateri\" agentid=\"3011996\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"2\" locationid=\"60003499\" locator=\"false\"/>\r\n    <row agent=\"Suvinila Tashin\" agentid=\"3011997\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003496\" locator=\"true\"/>\r\n    <row agent=\"Ausmuras Nai\" agentid=\"3011998\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"2\" locationid=\"60003505\" locator=\"false\"/>\r\n    <row agent=\"Dahtoh Atshonen\" agentid=\"3011999\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003490\" locator=\"false\"/>\r\n    <row agent=\"Mintano Kannainen\" agentid=\"3012000\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"3\" locationid=\"60003691\" locator=\"true\"/>\r\n    <row agent=\"Enovirta Akras\" agentid=\"3012001\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003697\" locator=\"false\"/>\r\n    <row agent=\"Ranttika Irjuta\" agentid=\"3012002\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003688\" locator=\"false\"/>\r\n    <row agent=\"Mitila Vikayara\" agentid=\"3012003\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003700\" locator=\"true\"/>\r\n    <row agent=\"Tashemochi Veilamaa\" agentid=\"3012004\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003694\" locator=\"false\"/>\r\n    <row agent=\"Ieyata Oijari\" agentid=\"3012005\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"4\" locationid=\"60003703\" locator=\"false\"/>\r\n    <row agent=\"Sainnugas Kaitalen\" agentid=\"3012006\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"4\" locationid=\"60003595\" locator=\"true\"/>\r\n    <row agent=\"Umizainen Oshomi\" agentid=\"3012007\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003583\" locator=\"false\"/>\r\n    <row agent=\"Aivuken Kirvira\" agentid=\"3012008\" agenttypeid=\"2\" corporationid=\"1000034\" divisionid=\"24\" level=\"1\" locationid=\"60003724\" locator=\"false\"/>\r\n    <row agent=\"Ausmilen Ukkenen\" agentid=\"3012009\" agenttypeid=\"2\" corporationid=\"1000034\" divisionid=\"22\" level=\"4\" locationid=\"60003751\" locator=\"true\"/>\r\n    <row agent=\"Peramaki Uotiri\" agentid=\"3012010\" agenttypeid=\"2\" corporationid=\"1000034\" divisionid=\"24\" level=\"2\" locationid=\"60003730\" locator=\"false\"/>\r\n    <row agent=\"Itken Hodan\" agentid=\"3012011\" agenttypeid=\"8\" corporationid=\"1000034\" divisionid=\"22\" level=\"5\" locationid=\"60003736\" locator=\"false\"/>\r\n    <row agent=\"Paarinela Siakkawai\" agentid=\"3012012\" agenttypeid=\"2\" corporationid=\"1000034\" divisionid=\"24\" level=\"4\" locationid=\"60003739\" locator=\"true\"/>\r\n    <row agent=\"Shas Erhi\" agentid=\"3012013\" agenttypeid=\"2\" corporationid=\"1000034\" divisionid=\"22\" level=\"2\" locationid=\"60003733\" locator=\"false\"/>\r\n    <row agent=\"Narmon Riki\" agentid=\"3012014\" agenttypeid=\"2\" corporationid=\"1000034\" divisionid=\"22\" level=\"3\" locationid=\"60003742\" locator=\"true\"/>\r\n    <row agent=\"Ibatei Askawa\" agentid=\"3012015\" agenttypeid=\"2\" corporationid=\"1000034\" divisionid=\"24\" level=\"1\" locationid=\"60003745\" locator=\"false\"/>\r\n    <row agent=\"Isikano Pyyrvonami\" agentid=\"3012016\" agenttypeid=\"2\" corporationid=\"1000034\" divisionid=\"24\" level=\"1\" locationid=\"60003727\" locator=\"false\"/>\r\n    <row agent=\"Sikakainen Arishi\" agentid=\"3012017\" agenttypeid=\"2\" corporationid=\"1000034\" divisionid=\"22\" level=\"1\" locationid=\"60003748\" locator=\"false\"/>\r\n    <row agent=\"Ogyura Unao\" agentid=\"3012018\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003754\" locator=\"true\"/>\r\n    <row agent=\"Uedamon Ahvinen\" agentid=\"3012020\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"3\" locationid=\"60003802\" locator=\"true\"/>\r\n    <row agent=\"Outaka Okiembunya\" agentid=\"3012021\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"1\" locationid=\"60003919\" locator=\"false\"/>\r\n    <row agent=\"Kaavala Kehtolen\" agentid=\"3012022\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003931\" locator=\"false\"/>\r\n    <row agent=\"Kiripas Oyurakka\" agentid=\"3012023\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003928\" locator=\"true\"/>\r\n    <row agent=\"Ikomari Kobara\" agentid=\"3012024\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003922\" locator=\"false\"/>\r\n    <row agent=\"Ozanero Voiras\" agentid=\"3012025\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003829\" locator=\"false\"/>\r\n    <row agent=\"Manttaken Hakaira\" agentid=\"3012026\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003832\" locator=\"true\"/>\r\n    <row agent=\"Missomon Riki\" agentid=\"3012027\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003835\" locator=\"false\"/>\r\n    <row agent=\"Okaseilen Fukashi\" agentid=\"3012028\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"3\" locationid=\"60003841\" locator=\"true\"/>\r\n    <row agent=\"Hakadura Otora\" agentid=\"3012029\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"2\" locationid=\"60003838\" locator=\"false\"/>\r\n    <row agent=\"Orayuata Paanenen\" agentid=\"3012030\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"3\" locationid=\"60003826\" locator=\"true\"/>\r\n    <row agent=\"Inuki Onilola\" agentid=\"3012031\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"3\" locationid=\"60003868\" locator=\"false\"/>\r\n    <row agent=\"Joutalen Ohorala\" agentid=\"3012032\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"3\" locationid=\"60003877\" locator=\"true\"/>\r\n    <row agent=\"Ahiras Kartavo\" agentid=\"3012033\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"1\" locationid=\"60003862\" locator=\"false\"/>\r\n    <row agent=\"Otsasen Saunorainen\" agentid=\"3012034\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"1\" locationid=\"60003871\" locator=\"false\"/>\r\n    <row agent=\"Keitunen Sakkunen\" agentid=\"3012035\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"1\" locationid=\"60003874\" locator=\"false\"/>\r\n    <row agent=\"Yahutola Sokka\" agentid=\"3012036\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"3\" locationid=\"60003865\" locator=\"false\"/>\r\n    <row agent=\"Upi Inimita\" agentid=\"3012037\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003880\" locator=\"true\"/>\r\n    <row agent=\"Kakkagainen Jakamaa\" agentid=\"3012038\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"2\" locationid=\"60003889\" locator=\"true\"/>\r\n    <row agent=\"Kazara Kankiainen\" agentid=\"3012039\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003892\" locator=\"false\"/>\r\n    <row agent=\"Kiken Yuatakkeimo\" agentid=\"3012040\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003895\" locator=\"true\"/>\r\n    <row agent=\"Santenpaa Fusura\" agentid=\"3012041\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"3\" locationid=\"60003883\" locator=\"true\"/>\r\n    <row agent=\"Vitaima Ishashi\" agentid=\"3012042\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003886\" locator=\"false\"/>\r\n    <row agent=\"Pukka Shotsu\" agentid=\"3012043\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003814\" locator=\"false\"/>\r\n    <row agent=\"Harkima Partoh\" agentid=\"3012044\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"2\" locationid=\"60003817\" locator=\"false\"/>\r\n    <row agent=\"Mastakomon Hamon\" agentid=\"3012045\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"1\" locationid=\"60003820\" locator=\"false\"/>\r\n    <row agent=\"Shikibato Kiruola\" agentid=\"3012046\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"4\" locationid=\"60003811\" locator=\"true\"/>\r\n    <row agent=\"Uittaras Jakawaki\" agentid=\"3012047\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60003823\" locator=\"true\"/>\r\n    <row agent=\"Pemigas Hekken\" agentid=\"3012048\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"3\" locationid=\"60003808\" locator=\"true\"/>\r\n    <row agent=\"Motsu Ititeimo\" agentid=\"3012049\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"3\" locationid=\"60003820\" locator=\"false\"/>\r\n    <row agent=\"Velmudainen Tykigi\" agentid=\"3012050\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003910\" locator=\"true\"/>\r\n    <row agent=\"Sanashi Naun\" agentid=\"3012051\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"1\" locationid=\"60003904\" locator=\"false\"/>\r\n    <row agent=\"Olama Rammeki\" agentid=\"3012052\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"3\" locationid=\"60003799\" locator=\"false\"/>\r\n    <row agent=\"Orsiainen Iiva\" agentid=\"3012053\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003913\" locator=\"true\"/>\r\n    <row agent=\"Asaken Mormon\" agentid=\"3012054\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"1\" locationid=\"60003901\" locator=\"false\"/>\r\n    <row agent=\"Otamon Heiminen\" agentid=\"3012057\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003853\" locator=\"false\"/>\r\n    <row agent=\"Ohmora Rautolen\" agentid=\"3012058\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003844\" locator=\"false\"/>\r\n    <row agent=\"Sutono Hatanata\" agentid=\"3012059\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003856\" locator=\"true\"/>\r\n    <row agent=\"Uusuras Sokuvera\" agentid=\"3012060\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003859\" locator=\"true\"/>\r\n    <row agent=\"Tiukiski Elulen\" agentid=\"3012061\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003805\" locator=\"false\"/>\r\n    <row agent=\"Osoi Isento\" agentid=\"3012062\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"3\" locationid=\"60003790\" locator=\"false\"/>\r\n    <row agent=\"Nachi Havahori\" agentid=\"3012063\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"2\" locationid=\"60003793\" locator=\"true\"/>\r\n    <row agent=\"Shistalen Kenda\" agentid=\"3012064\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003802\" locator=\"false\"/>\r\n    <row agent=\"Kimuruola Sitsudan\" agentid=\"3012065\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003796\" locator=\"false\"/>\r\n    <row agent=\"Kilimeya Otireya\" agentid=\"3012066\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003799\" locator=\"false\"/>\r\n    <row agent=\"Mivola Kovotie\" agentid=\"3012067\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003772\" locator=\"true\"/>\r\n    <row agent=\"Natakko Saijimo\" agentid=\"3012068\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60003853\" locator=\"true\"/>\r\n    <row agent=\"Kakogonda Uemuda\" agentid=\"3012069\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003784\" locator=\"true\"/>\r\n    <row agent=\"Tormalaiken Auho\" agentid=\"3012070\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003781\" locator=\"false\"/>\r\n    <row agent=\"Onami Oinistosen\" agentid=\"3012071\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003778\" locator=\"false\"/>\r\n    <row agent=\"Sius Tarjuras\" agentid=\"3012072\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003787\" locator=\"false\"/>\r\n    <row agent=\"Vintteken Napas\" agentid=\"3012073\" agenttypeid=\"8\" corporationid=\"1000035\" divisionid=\"24\" level=\"5\" locationid=\"60003763\" locator=\"false\"/>\r\n    <row agent=\"Konolana Tsunibaka\" agentid=\"3012074\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"2\" locationid=\"60003922\" locator=\"true\"/>\r\n    <row agent=\"Tevarula Nisuwa\" agentid=\"3012075\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003889\" locator=\"false\"/>\r\n    <row agent=\"Koikaski Uika\" agentid=\"3012076\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003766\" locator=\"false\"/>\r\n    <row agent=\"Roki Kaurinen\" agentid=\"3012077\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003769\" locator=\"false\"/>\r\n    <row agent=\"Hahtodan Onuoto\" agentid=\"3012078\" agenttypeid=\"2\" corporationid=\"1000036\" divisionid=\"22\" level=\"4\" locationid=\"60003937\" locator=\"true\"/>\r\n    <row agent=\"Kuga Aitsai\" agentid=\"3012079\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"24\" level=\"1\" locationid=\"60003940\" locator=\"false\"/>\r\n    <row agent=\"Iska Arjo\" agentid=\"3012080\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"24\" level=\"2\" locationid=\"60003946\" locator=\"false\"/>\r\n    <row agent=\"Itkiras Reppola\" agentid=\"3012081\" agenttypeid=\"8\" corporationid=\"1000037\" divisionid=\"22\" level=\"5\" locationid=\"60003949\" locator=\"false\"/>\r\n    <row agent=\"Aizagenen Pemmiya\" agentid=\"3012082\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"24\" level=\"1\" locationid=\"60003943\" locator=\"false\"/>\r\n    <row agent=\"Uusori Vapalmaa\" agentid=\"3012083\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"22\" level=\"3\" locationid=\"60003955\" locator=\"false\"/>\r\n    <row agent=\"Tattiainen Siraski\" agentid=\"3012084\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"24\" level=\"3\" locationid=\"60003952\" locator=\"false\"/>\r\n    <row agent=\"Menji Arviri\" agentid=\"3012085\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"24\" level=\"4\" locationid=\"60003958\" locator=\"true\"/>\r\n    <row agent=\"Ohmihtavuo Haskatoh\" agentid=\"3012086\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"24\" level=\"1\" locationid=\"60003961\" locator=\"false\"/>\r\n    <row agent=\"Pontimawa Ozugas\" agentid=\"3012087\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"1\" locationid=\"60003964\" locator=\"false\"/>\r\n    <row agent=\"Amateri Likkuni\" agentid=\"3012088\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"1\" locationid=\"60003967\" locator=\"true\"/>\r\n    <row agent=\"Okotomi Arvoras\" agentid=\"3012089\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"2\" locationid=\"60003970\" locator=\"false\"/>\r\n    <row agent=\"Okuhori Anttulen\" agentid=\"3012090\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"22\" level=\"4\" locationid=\"60003991\" locator=\"true\"/>\r\n    <row agent=\"Jurken Nihanailen\" agentid=\"3012091\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"2\" locationid=\"60003994\" locator=\"false\"/>\r\n    <row agent=\"Tastoh Kaaserinen\" agentid=\"3012092\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"3\" locationid=\"60003997\" locator=\"false\"/>\r\n    <row agent=\"Eborimi Shiskala\" agentid=\"3012093\" agenttypeid=\"8\" corporationid=\"1000038\" divisionid=\"24\" level=\"5\" locationid=\"60003982\" locator=\"false\"/>\r\n    <row agent=\"Vankanen Yuken\" agentid=\"3012094\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"2\" locationid=\"60003985\" locator=\"true\"/>\r\n    <row agent=\"Aletola Ochinokka\" agentid=\"3012095\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"2\" locationid=\"60003988\" locator=\"true\"/>\r\n    <row agent=\"Kauntora Itkaku\" agentid=\"3012096\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"4\" locationid=\"60003973\" locator=\"true\"/>\r\n    <row agent=\"Sakkin Vesomaiken\" agentid=\"3012097\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"3\" locationid=\"60003976\" locator=\"true\"/>\r\n    <row agent=\"Kakynen Voitamo\" agentid=\"3012098\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"2\" locationid=\"60003979\" locator=\"true\"/>\r\n    <row agent=\"Kynnen Elomon\" agentid=\"3012099\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"1\" locationid=\"60004000\" locator=\"false\"/>\r\n    <row agent=\"Tormalaiken Malarainen\" agentid=\"3012100\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"22\" level=\"3\" locationid=\"60004012\" locator=\"false\"/>\r\n    <row agent=\"Ishena Pierigas\" agentid=\"3012101\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"3\" locationid=\"60004039\" locator=\"true\"/>\r\n    <row agent=\"Okalen Okima\" agentid=\"3012102\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"22\" level=\"4\" locationid=\"60004015\" locator=\"false\"/>\r\n    <row agent=\"Ruosen Kalanen\" agentid=\"3012103\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"3\" locationid=\"60004021\" locator=\"false\"/>\r\n    <row agent=\"Kogas Mieroshi\" agentid=\"3012104\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"22\" level=\"3\" locationid=\"60004027\" locator=\"false\"/>\r\n    <row agent=\"Kitkontailen Pahumaa\" agentid=\"3012105\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"2\" locationid=\"60004030\" locator=\"false\"/>\r\n    <row agent=\"Aittio Otesawa\" agentid=\"3012106\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"1\" locationid=\"60004033\" locator=\"false\"/>\r\n    <row agent=\"Ylitula Shonisen\" agentid=\"3012108\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"1\" locationid=\"60004009\" locator=\"false\"/>\r\n    <row agent=\"Iesalinen Kuotalaisen\" agentid=\"3012109\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"2\" locationid=\"60004003\" locator=\"true\"/>\r\n    <row agent=\"Airuta Heimune\" agentid=\"3012110\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"3\" locationid=\"60004030\" locator=\"true\"/>\r\n    <row agent=\"Millanpaa Nisuwa\" agentid=\"3012111\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"4\" locationid=\"60004039\" locator=\"false\"/>\r\n    <row agent=\"Molehanen Piertalen\" agentid=\"3012112\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"22\" level=\"2\" locationid=\"60004036\" locator=\"true\"/>\r\n    <row agent=\"Osala Iskio\" agentid=\"3012113\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"3\" locationid=\"60004042\" locator=\"true\"/>\r\n    <row agent=\"Koskanaiken Vilima\" agentid=\"3012114\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"1\" locationid=\"60004045\" locator=\"true\"/>\r\n    <row agent=\"Astitoh Ake\" agentid=\"3012115\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"1\" locationid=\"60004048\" locator=\"false\"/>\r\n    <row agent=\"Samalela Kikera\" agentid=\"3012116\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"2\" locationid=\"60004066\" locator=\"true\"/>\r\n    <row agent=\"Peunolakka Konkomatsu\" agentid=\"3012117\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"2\" locationid=\"60004069\" locator=\"true\"/>\r\n    <row agent=\"Oilja Okui\" agentid=\"3012118\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"2\" locationid=\"60004072\" locator=\"true\"/>\r\n    <row agent=\"Hirtoh Sawa\" agentid=\"3012119\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"3\" locationid=\"60004054\" locator=\"true\"/>\r\n    <row agent=\"Innamon Sula\" agentid=\"3012120\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"3\" locationid=\"60004051\" locator=\"false\"/>\r\n    <row agent=\"Jukkizaras Varppavas\" agentid=\"3012121\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"3\" locationid=\"60004075\" locator=\"false\"/>\r\n    <row agent=\"Midamawa Raunomailen\" agentid=\"3012122\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"22\" level=\"4\" locationid=\"60004081\" locator=\"true\"/>\r\n    <row agent=\"Ekasvio Oshomi\" agentid=\"3012123\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"4\" locationid=\"60004078\" locator=\"false\"/>\r\n    <row agent=\"Onalila Asela\" agentid=\"3012124\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"1\" locationid=\"60004057\" locator=\"false\"/>\r\n    <row agent=\"Inala Igunen\" agentid=\"3012125\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"2\" locationid=\"60004063\" locator=\"false\"/>\r\n    <row agent=\"Hindamainen Milkina\" agentid=\"3012126\" agenttypeid=\"8\" corporationid=\"1000040\" divisionid=\"24\" level=\"5\" locationid=\"60004060\" locator=\"false\"/>\r\n    <row agent=\"Iivinonen Konkinen\" agentid=\"3012127\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"22\" level=\"1\" locationid=\"60004084\" locator=\"false\"/>\r\n    <row agent=\"Ohviken Ininaga\" agentid=\"3012128\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004234\" locator=\"false\"/>\r\n    <row agent=\"Arvasaras Tuumi\" agentid=\"3012129\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004240\" locator=\"false\"/>\r\n    <row agent=\"Auvilen Oshukata\" agentid=\"3012130\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004087\" locator=\"true\"/>\r\n    <row agent=\"Kadan Aino\" agentid=\"3012131\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004090\" locator=\"false\"/>\r\n    <row agent=\"Uiski Sakkatokka\" agentid=\"3012132\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004096\" locator=\"false\"/>\r\n    <row agent=\"Yankanutsu Huurama\" agentid=\"3012133\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"4\" locationid=\"60004099\" locator=\"true\"/>\r\n    <row agent=\"Haattiekko Oshukata\" agentid=\"3012134\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004093\" locator=\"false\"/>\r\n    <row agent=\"Ieyodan Ahomon\" agentid=\"3012135\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004162\" locator=\"false\"/>\r\n    <row agent=\"Viken Antilen\" agentid=\"3012136\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004165\" locator=\"false\"/>\r\n    <row agent=\"Vas Enken\" agentid=\"3012137\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004168\" locator=\"false\"/>\r\n    <row agent=\"Visvas Uoyera\" agentid=\"3012138\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004159\" locator=\"false\"/>\r\n    <row agent=\"Ubarastoh Haarkela\" agentid=\"3012139\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"3\" locationid=\"60004156\" locator=\"false\"/>\r\n    <row agent=\"Onulisa Aboraala\" agentid=\"3012140\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004171\" locator=\"false\"/>\r\n    <row agent=\"Kuolen Runashatsu\" agentid=\"3012141\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004120\" locator=\"true\"/>\r\n    <row agent=\"Kitoh Erishi\" agentid=\"3012142\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"3\" locationid=\"60004126\" locator=\"true\"/>\r\n    <row agent=\"Itakairos Ohbesa\" agentid=\"3012143\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004123\" locator=\"false\"/>\r\n    <row agent=\"Wasken Talo\" agentid=\"3012144\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004132\" locator=\"true\"/>\r\n    <row agent=\"Obanari Kachomala\" agentid=\"3012145\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004129\" locator=\"false\"/>\r\n    <row agent=\"Veis Kingato\" agentid=\"3012146\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004135\" locator=\"false\"/>\r\n    <row agent=\"Yo Varas\" agentid=\"3012147\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"3\" locationid=\"60004228\" locator=\"false\"/>\r\n    <row agent=\"Mandan Oittiken\" agentid=\"3012148\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"3\" locationid=\"60004237\" locator=\"true\"/>\r\n    <row agent=\"Panase Aruwira\" agentid=\"3012149\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004243\" locator=\"false\"/>\r\n    <row agent=\"Arishi Huulanen\" agentid=\"3012150\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"22\" level=\"4\" locationid=\"60004231\" locator=\"true\"/>\r\n    <row agent=\"Iekka Katiken\" agentid=\"3012151\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004213\" locator=\"false\"/>\r\n    <row agent=\"Shigakarri Niromochi\" agentid=\"3012152\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"3\" locationid=\"60004222\" locator=\"false\"/>\r\n    <row agent=\"Aronuta Ichimusa\" agentid=\"3012153\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004216\" locator=\"false\"/>\r\n    <row agent=\"Tsunala Hitama\" agentid=\"3012154\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004219\" locator=\"true\"/>\r\n    <row agent=\"Ahtairo Vilima\" agentid=\"3012155\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"22\" level=\"2\" locationid=\"60004225\" locator=\"false\"/>\r\n    <row agent=\"Akaras Iidanen\" agentid=\"3012156\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004210\" locator=\"false\"/>\r\n    <row agent=\"Ekinen Pakken\" agentid=\"3012157\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"22\" level=\"4\" locationid=\"60004246\" locator=\"false\"/>\r\n    <row agent=\"Hakkasen Ekami\" agentid=\"3012158\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"3\" locationid=\"60004252\" locator=\"false\"/>\r\n    <row agent=\"Ippas Jokiwa\" agentid=\"3012159\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004255\" locator=\"false\"/>\r\n    <row agent=\"Hotisku Sogas\" agentid=\"3012160\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"4\" locationid=\"60004249\" locator=\"true\"/>\r\n    <row agent=\"Asukaila Sirigainen\" agentid=\"3012161\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004258\" locator=\"false\"/>\r\n    <row agent=\"Jas Uittatoh\" agentid=\"3012162\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004261\" locator=\"false\"/>\r\n    <row agent=\"Vakin Gan\" agentid=\"3012163\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004207\" locator=\"false\"/>\r\n    <row agent=\"Haalonen Outila\" agentid=\"3012164\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"3\" locationid=\"60004198\" locator=\"false\"/>\r\n    <row agent=\"Kakukainen Kittavas\" agentid=\"3012165\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"4\" locationid=\"60004192\" locator=\"true\"/>\r\n    <row agent=\"Heikaremi Otio\" agentid=\"3012166\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004195\" locator=\"true\"/>\r\n    <row agent=\"Auvahanen Akuras\" agentid=\"3012167\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"4\" locationid=\"60004204\" locator=\"false\"/>\r\n    <row agent=\"Mastoh Ahtulen\" agentid=\"3012168\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"3\" locationid=\"60004201\" locator=\"false\"/>\r\n    <row agent=\"Orkko Arasmaa\" agentid=\"3012169\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"4\" locationid=\"60004138\" locator=\"true\"/>\r\n    <row agent=\"Korasen Poipirtaka\" agentid=\"3012170\" agenttypeid=\"8\" corporationid=\"1000041\" divisionid=\"22\" level=\"5\" locationid=\"60004144\" locator=\"false\"/>\r\n    <row agent=\"Auluras Toila\" agentid=\"3012171\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"22\" level=\"4\" locationid=\"60004147\" locator=\"false\"/>\r\n    <row agent=\"Solanato Eeroya\" agentid=\"3012172\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"3\" locationid=\"60004141\" locator=\"false\"/>\r\n    <row agent=\"Aikuta Sosala\" agentid=\"3012174\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"22\" level=\"2\" locationid=\"60004153\" locator=\"true\"/>\r\n    <row agent=\"Yara Aokannitoh\" agentid=\"3012175\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004114\" locator=\"false\"/>\r\n    <row agent=\"Huorone Itka\" agentid=\"3012176\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"22\" level=\"1\" locationid=\"60004102\" locator=\"true\"/>\r\n    <row agent=\"Kuutseki Hartenen\" agentid=\"3012177\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"3\" locationid=\"60004105\" locator=\"false\"/>\r\n    <row agent=\"Elaruka Kanda\" agentid=\"3012178\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004111\" locator=\"false\"/>\r\n    <row agent=\"Rautakka Aureken\" agentid=\"3012179\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004117\" locator=\"true\"/>\r\n    <row agent=\"Yotera Siras\" agentid=\"3012180\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"22\" level=\"1\" locationid=\"60004108\" locator=\"false\"/>\r\n    <row agent=\"Iksi Kykeshi\" agentid=\"3012181\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"4\" locationid=\"60004180\" locator=\"true\"/>\r\n    <row agent=\"Koyara Uemintoh\" agentid=\"3012182\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"3\" locationid=\"60004189\" locator=\"true\"/>\r\n    <row agent=\"Kakaga Alaoutanen\" agentid=\"3012183\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004174\" locator=\"false\"/>\r\n    <row agent=\"Arvaras Abera\" agentid=\"3012184\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"3\" locationid=\"60004177\" locator=\"false\"/>\r\n    <row agent=\"Kuonnaken Momon\" agentid=\"3012185\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004183\" locator=\"true\"/>\r\n    <row agent=\"Oikuken Ozinola\" agentid=\"3012186\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"22\" level=\"1\" locationid=\"60004186\" locator=\"false\"/>\r\n    <row agent=\"Halunoto Siakramon\" agentid=\"3012187\" agenttypeid=\"2\" corporationid=\"1000042\" divisionid=\"22\" level=\"1\" locationid=\"60004264\" locator=\"true\"/>\r\n    <row agent=\"Ariken Kahtoh\" agentid=\"3012188\" agenttypeid=\"2\" corporationid=\"1000042\" divisionid=\"24\" level=\"3\" locationid=\"60004267\" locator=\"false\"/>\r\n    <row agent=\"Uvas Noma\" agentid=\"3012189\" agenttypeid=\"2\" corporationid=\"1000042\" divisionid=\"24\" level=\"2\" locationid=\"60004270\" locator=\"false\"/>\r\n    <row agent=\"Oyurakka Jirtaras\" agentid=\"3012190\" agenttypeid=\"2\" corporationid=\"1000042\" divisionid=\"24\" level=\"3\" locationid=\"60004291\" locator=\"false\"/>\r\n    <row agent=\"Kaimon Aheras\" agentid=\"3012191\" agenttypeid=\"8\" corporationid=\"1000042\" divisionid=\"24\" level=\"5\" locationid=\"60004294\" locator=\"false\"/>\r\n    <row agent=\"Otanida Iivaskuras\" agentid=\"3012192\" agenttypeid=\"2\" corporationid=\"1000042\" divisionid=\"24\" level=\"2\" locationid=\"60004297\" locator=\"true\"/>\r\n    <row agent=\"Papas Yatshinen\" agentid=\"3012194\" agenttypeid=\"2\" corporationid=\"1000042\" divisionid=\"24\" level=\"3\" locationid=\"60004285\" locator=\"true\"/>\r\n    <row agent=\"Vesuri Varvailen\" agentid=\"3012195\" agenttypeid=\"2\" corporationid=\"1000042\" divisionid=\"24\" level=\"4\" locationid=\"60004288\" locator=\"false\"/>\r\n    <row agent=\"Helvokuola Kunikuwa\" agentid=\"3012196\" agenttypeid=\"2\" corporationid=\"1000042\" divisionid=\"24\" level=\"1\" locationid=\"60004273\" locator=\"false\"/>\r\n    <row agent=\"Hittanpaa Vaankalen\" agentid=\"3012197\" agenttypeid=\"2\" corporationid=\"1000042\" divisionid=\"24\" level=\"3\" locationid=\"60004279\" locator=\"true\"/>\r\n    <row agent=\"Tonen Erkinen\" agentid=\"3012198\" agenttypeid=\"2\" corporationid=\"1000042\" divisionid=\"22\" level=\"2\" locationid=\"60004276\" locator=\"true\"/>\r\n    <row agent=\"Tiga Kaitivas\" agentid=\"3012199\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"1\" locationid=\"60004300\" locator=\"true\"/>\r\n    <row agent=\"Aokasa Dahtoh\" agentid=\"3012200\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"4\" locationid=\"60004366\" locator=\"true\"/>\r\n    <row agent=\"Amonen Tekkaniras\" agentid=\"3012201\" agenttypeid=\"8\" corporationid=\"1000043\" divisionid=\"24\" level=\"5\" locationid=\"60004363\" locator=\"false\"/>\r\n    <row agent=\"Saira Sontemko\" agentid=\"3012202\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"3\" locationid=\"60004360\" locator=\"false\"/>\r\n    <row agent=\"Ayanen Tsutuomi\" agentid=\"3012203\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"22\" level=\"3\" locationid=\"60004369\" locator=\"false\"/>\r\n    <row agent=\"Karsoneshi Outusen\" agentid=\"3012204\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004372\" locator=\"true\"/>\r\n    <row agent=\"Tokkanen Hisken\" agentid=\"3012205\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"22\" level=\"1\" locationid=\"60004381\" locator=\"false\"/>\r\n    <row agent=\"Oite Pie\" agentid=\"3012206\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"4\" locationid=\"60004378\" locator=\"false\"/>\r\n    <row agent=\"Iitoh Honnamaiken\" agentid=\"3012207\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"1\" locationid=\"60004375\" locator=\"true\"/>\r\n    <row agent=\"Matoh Aketiya\" agentid=\"3012208\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"1\" locationid=\"60004402\" locator=\"false\"/>\r\n    <row agent=\"Kekanato Heiraitoh\" agentid=\"3012209\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004405\" locator=\"true\"/>\r\n    <row agent=\"Ichiainegas Uppe\" agentid=\"3012210\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"3\" locationid=\"60004399\" locator=\"true\"/>\r\n    <row agent=\"Umuvari Abeinima\" agentid=\"3012211\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"4\" locationid=\"60004396\" locator=\"true\"/>\r\n    <row agent=\"Okokka Aunki\" agentid=\"3012212\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"1\" locationid=\"60004342\" locator=\"false\"/>\r\n    <row agent=\"Akkoneken Ruoken\" agentid=\"3012213\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"3\" locationid=\"60004339\" locator=\"true\"/>\r\n    <row agent=\"Isvi Ernuori\" agentid=\"3012214\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004345\" locator=\"false\"/>\r\n    <row agent=\"Atshodan Keirsaa\" agentid=\"3012215\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004336\" locator=\"true\"/>\r\n    <row agent=\"Sakkikainen Akada\" agentid=\"3012216\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"4\" locationid=\"60004309\" locator=\"false\"/>\r\n    <row agent=\"Kilori Alateima\" agentid=\"3012217\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"3\" locationid=\"60004393\" locator=\"false\"/>\r\n    <row agent=\"Kakugi Antalen\" agentid=\"3012218\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"4\" locationid=\"60004384\" locator=\"true\"/>\r\n    <row agent=\"Puuri Mokken\" agentid=\"3012219\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"3\" locationid=\"60004390\" locator=\"false\"/>\r\n    <row agent=\"Nakuri Onugas\" agentid=\"3012220\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004324\" locator=\"false\"/>\r\n    <row agent=\"Arushin Kanda\" agentid=\"3012221\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"22\" level=\"2\" locationid=\"60004327\" locator=\"true\"/>\r\n    <row agent=\"Kuga Masamon\" agentid=\"3012222\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"22\" level=\"3\" locationid=\"60004330\" locator=\"true\"/>\r\n    <row agent=\"Heiljahailen Ueni\" agentid=\"3012223\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"22\" level=\"2\" locationid=\"60004333\" locator=\"true\"/>\r\n    <row agent=\"Tuonerainen Ahvonin\" agentid=\"3012224\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004312\" locator=\"false\"/>\r\n    <row agent=\"Vainen Nuonilen\" agentid=\"3012225\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"3\" locationid=\"60004321\" locator=\"true\"/>\r\n    <row agent=\"Savataltoh Parnazaisen\" agentid=\"3012226\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"3\" locationid=\"60004318\" locator=\"true\"/>\r\n    <row agent=\"Kehtolen Katsuken\" agentid=\"3012227\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"3\" locationid=\"60004315\" locator=\"true\"/>\r\n    <row agent=\"Ebura Hyotani\" agentid=\"3012228\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004354\" locator=\"false\"/>\r\n    <row agent=\"Vasala Utradan\" agentid=\"3012229\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004351\" locator=\"false\"/>\r\n    <row agent=\"Eratsaka Ogyonin\" agentid=\"3012230\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"4\" locationid=\"60004357\" locator=\"true\"/>\r\n    <row agent=\"Saurio Huomaila\" agentid=\"3012231\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004348\" locator=\"false\"/>\r\n    <row agent=\"Kusen Abiken\" agentid=\"3012232\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004411\" locator=\"true\"/>\r\n    <row agent=\"Ohmala Valen\" agentid=\"3012233\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004414\" locator=\"true\"/>\r\n    <row agent=\"Ogas Kalmamon\" agentid=\"3012234\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004408\" locator=\"true\"/>\r\n    <row agent=\"Oisma Pukuwakai\" agentid=\"3012235\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"22\" level=\"3\" locationid=\"60004417\" locator=\"false\"/>\r\n    <row agent=\"Paanenen Ondo\" agentid=\"3012236\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004306\" locator=\"false\"/>\r\n    <row agent=\"Ranatoh Tesen\" agentid=\"3012237\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"22\" level=\"2\" locationid=\"60004309\" locator=\"false\"/>\r\n    <row agent=\"Muyeroiken Issegairos\" agentid=\"3012238\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004303\" locator=\"false\"/>\r\n    <row agent=\"Ylora Rukila\" agentid=\"3012239\" agenttypeid=\"3\" corporationid=\"1000044\" divisionid=\"22\" level=\"1\" locationid=\"60004420\" locator=\"false\"/>\r\n    <row agent=\"Paaseraisen Nosidoma\" agentid=\"3012240\" agenttypeid=\"8\" corporationid=\"1000044\" divisionid=\"22\" level=\"5\" locationid=\"60004441\" locator=\"false\"/>\r\n    <row agent=\"Natima Iijala\" agentid=\"3012241\" agenttypeid=\"2\" corporationid=\"1000044\" divisionid=\"22\" level=\"2\" locationid=\"60004435\" locator=\"false\"/>\r\n    <row agent=\"Kamanoi Onnajus\" agentid=\"3012242\" agenttypeid=\"2\" corporationid=\"1000044\" divisionid=\"22\" level=\"4\" locationid=\"60004444\" locator=\"false\"/>\r\n    <row agent=\"Naninen Heisatailen\" agentid=\"3012243\" agenttypeid=\"2\" corporationid=\"1000044\" divisionid=\"22\" level=\"4\" locationid=\"60004426\" locator=\"false\"/>\r\n    <row agent=\"Olkkuras Tarkko\" agentid=\"3012244\" agenttypeid=\"2\" corporationid=\"1000044\" divisionid=\"22\" level=\"2\" locationid=\"60015003\" locator=\"true\"/>\r\n    <row agent=\"Varppavas Kamekera\" agentid=\"3012245\" agenttypeid=\"2\" corporationid=\"1000044\" divisionid=\"22\" level=\"2\" locationid=\"60004429\" locator=\"false\"/>\r\n    <row agent=\"Vairosen Ikkola\" agentid=\"3012246\" agenttypeid=\"2\" corporationid=\"1000044\" divisionid=\"22\" level=\"3\" locationid=\"60004426\" locator=\"true\"/>\r\n    <row agent=\"Nisto Asalova\" agentid=\"3012247\" agenttypeid=\"2\" corporationid=\"1000044\" divisionid=\"22\" level=\"2\" locationid=\"60004441\" locator=\"true\"/>\r\n    <row agent=\"Iidoras Tammesaiken\" agentid=\"3012248\" agenttypeid=\"2\" corporationid=\"1000044\" divisionid=\"22\" level=\"3\" locationid=\"60004438\" locator=\"true\"/>\r\n    <row agent=\"Ukkolen Heimunka\" agentid=\"3012249\" agenttypeid=\"3\" corporationid=\"1000045\" divisionid=\"22\" level=\"1\" locationid=\"60004450\" locator=\"false\"/>\r\n    <row agent=\"Korkahienen Keino\" agentid=\"3012250\" agenttypeid=\"2\" corporationid=\"1000045\" divisionid=\"22\" level=\"2\" locationid=\"60004462\" locator=\"false\"/>\r\n    <row agent=\"Poiken Onegas\" agentid=\"3012251\" agenttypeid=\"2\" corporationid=\"1000045\" divisionid=\"22\" level=\"3\" locationid=\"60004459\" locator=\"false\"/>\r\n    <row agent=\"Misikullen Kanatonen\" agentid=\"3012252\" agenttypeid=\"2\" corporationid=\"1000045\" divisionid=\"22\" level=\"1\" locationid=\"60004474\" locator=\"false\"/>\r\n    <row agent=\"Dain Alasunda\" agentid=\"3012253\" agenttypeid=\"2\" corporationid=\"1000045\" divisionid=\"22\" level=\"3\" locationid=\"60004468\" locator=\"true\"/>\r\n    <row agent=\"Uusonen Liuttijairos\" agentid=\"3012254\" agenttypeid=\"2\" corporationid=\"1000045\" divisionid=\"22\" level=\"4\" locationid=\"60004465\" locator=\"false\"/>\r\n    <row agent=\"Mohitie Amon\" agentid=\"3012255\" agenttypeid=\"2\" corporationid=\"1000045\" divisionid=\"22\" level=\"1\" locationid=\"60004471\" locator=\"false\"/>\r\n    <row agent=\"Iriganda Tiga\" agentid=\"3012257\" agenttypeid=\"8\" corporationid=\"1000045\" divisionid=\"22\" level=\"5\" locationid=\"60004468\" locator=\"false\"/>\r\n    <row agent=\"Senda Korpi\" agentid=\"3012258\" agenttypeid=\"2\" corporationid=\"1000045\" divisionid=\"22\" level=\"3\" locationid=\"60004456\" locator=\"false\"/>\r\n    <row agent=\"Ludik Heska\" agentid=\"3012259\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"24\" level=\"1\" locationid=\"60004480\" locator=\"false\"/>\r\n    <row agent=\"Tunn Finskakar\" agentid=\"3012260\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"22\" level=\"3\" locationid=\"60004507\" locator=\"true\"/>\r\n    <row agent=\"Surefgen Dalanard\" agentid=\"3012261\" agenttypeid=\"8\" corporationid=\"1000046\" divisionid=\"24\" level=\"5\" locationid=\"60004513\" locator=\"false\"/>\r\n    <row agent=\"Noboring Aptogaban\" agentid=\"3012262\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"24\" level=\"4\" locationid=\"60004510\" locator=\"false\"/>\r\n    <row agent=\"Ewlang Eode\" agentid=\"3012263\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"24\" level=\"3\" locationid=\"60004483\" locator=\"false\"/>\r\n    <row agent=\"Klolf Eldsund\" agentid=\"3012264\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"22\" level=\"2\" locationid=\"60004486\" locator=\"true\"/>\r\n    <row agent=\"Kvarl Indald\" agentid=\"3012265\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"22\" level=\"2\" locationid=\"60004504\" locator=\"true\"/>\r\n    <row agent=\"Loldrir Asdur\" agentid=\"3012266\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"24\" level=\"2\" locationid=\"60004498\" locator=\"false\"/>\r\n    <row agent=\"Ofylur Woligabet\" agentid=\"3012267\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"24\" level=\"4\" locationid=\"60004501\" locator=\"true\"/>\r\n    <row agent=\"Frololard Reiddeider\" agentid=\"3012268\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"24\" level=\"1\" locationid=\"60004495\" locator=\"false\"/>\r\n    <row agent=\"Arbias Allfran\" agentid=\"3012269\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"24\" level=\"2\" locationid=\"60004489\" locator=\"false\"/>\r\n    <row agent=\"Egyrlen Agattolf\" agentid=\"3012270\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"24\" level=\"1\" locationid=\"60004492\" locator=\"false\"/>\r\n    <row agent=\"Rinsutidur Rildboko\" agentid=\"3012271\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"24\" level=\"1\" locationid=\"60004516\" locator=\"true\"/>\r\n    <row agent=\"Arnriger Anner\" agentid=\"3012272\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"24\" level=\"3\" locationid=\"60004519\" locator=\"false\"/>\r\n    <row agent=\"Eatellef Edar\" agentid=\"3012273\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"24\" level=\"1\" locationid=\"60004522\" locator=\"false\"/>\r\n    <row agent=\"Austrene Aedald\" agentid=\"3012274\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"22\" level=\"1\" locationid=\"60004543\" locator=\"false\"/>\r\n    <row agent=\"Odor Bonnvekin\" agentid=\"3012275\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"24\" level=\"4\" locationid=\"60004546\" locator=\"false\"/>\r\n    <row agent=\"Rudoko Salkur\" agentid=\"3012276\" agenttypeid=\"8\" corporationid=\"1000047\" divisionid=\"24\" level=\"5\" locationid=\"60004549\" locator=\"false\"/>\r\n    <row agent=\"Rerd Oloniden\" agentid=\"3012277\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"24\" level=\"1\" locationid=\"60004525\" locator=\"false\"/>\r\n    <row agent=\"Attar Gekilard\" agentid=\"3012278\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"22\" level=\"2\" locationid=\"60004531\" locator=\"false\"/>\r\n    <row agent=\"Herveiker Eurten\" agentid=\"3012279\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"22\" level=\"3\" locationid=\"60004528\" locator=\"false\"/>\r\n    <row agent=\"Arher Ellovik\" agentid=\"3012280\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"24\" level=\"2\" locationid=\"60004540\" locator=\"true\"/>\r\n    <row agent=\"Alfudar Otolf\" agentid=\"3012281\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"24\" level=\"3\" locationid=\"60004534\" locator=\"false\"/>\r\n    <row agent=\"Tatkeker Rignering\" agentid=\"3012282\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"24\" level=\"3\" locationid=\"60004537\" locator=\"false\"/>\r\n    <row agent=\"Varulard Reit\" agentid=\"3012283\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"24\" level=\"1\" locationid=\"60004552\" locator=\"false\"/>\r\n    <row agent=\"Hettere Guvera\" agentid=\"3012284\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"22\" level=\"4\" locationid=\"60004555\" locator=\"false\"/>\r\n    <row agent=\"Arbjan Tolangranner\" agentid=\"3012285\" agenttypeid=\"8\" corporationid=\"1000048\" divisionid=\"22\" level=\"5\" locationid=\"60004558\" locator=\"false\"/>\r\n    <row agent=\"Hordelena Ingaudur\" agentid=\"3012286\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"24\" level=\"3\" locationid=\"60004582\" locator=\"false\"/>\r\n    <row agent=\"Eumlard Afran\" agentid=\"3012287\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"24\" level=\"4\" locationid=\"60004585\" locator=\"false\"/>\r\n    <row agent=\"Mikunnur Kyndeflar\" agentid=\"3012288\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"24\" level=\"1\" locationid=\"60004579\" locator=\"true\"/>\r\n    <row agent=\"Ambell Fjell\" agentid=\"3012289\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"24\" level=\"1\" locationid=\"60004570\" locator=\"false\"/>\r\n    <row agent=\"Ernard Tontolt\" agentid=\"3012290\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"24\" level=\"2\" locationid=\"60004573\" locator=\"false\"/>\r\n    <row agent=\"Alrinror Eornren\" agentid=\"3012291\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"22\" level=\"4\" locationid=\"60004576\" locator=\"true\"/>\r\n    <row agent=\"Kolmeter Ealdjer\" agentid=\"3012292\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"22\" level=\"2\" locationid=\"60004567\" locator=\"false\"/>\r\n    <row agent=\"Letava Aldastmelden\" agentid=\"3012293\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"22\" level=\"3\" locationid=\"60004564\" locator=\"true\"/>\r\n    <row agent=\"Annes Rilesen\" agentid=\"3012294\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"24\" level=\"4\" locationid=\"60004561\" locator=\"false\"/>\r\n    <row agent=\"Bjerd Erand\" agentid=\"3012295\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"1\" locationid=\"60004588\" locator=\"false\"/>\r\n    <row agent=\"Vodber Svaken\" agentid=\"3012296\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"3\" locationid=\"60004591\" locator=\"true\"/>\r\n    <row agent=\"Einulfolf Amunnjorn\" agentid=\"3012297\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"2\" locationid=\"60004594\" locator=\"false\"/>\r\n    <row agent=\"Inset Raul\" agentid=\"3012298\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"22\" level=\"2\" locationid=\"60004618\" locator=\"false\"/>\r\n    <row agent=\"Gang Lullikia\" agentid=\"3012299\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"3\" locationid=\"60004615\" locator=\"false\"/>\r\n    <row agent=\"Tylurid Alduko\" agentid=\"3012300\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"4\" locationid=\"60004621\" locator=\"false\"/>\r\n    <row agent=\"Vengendolf Emblard\" agentid=\"3012301\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"4\" locationid=\"60004597\" locator=\"false\"/>\r\n    <row agent=\"Alger Masratran\" agentid=\"3012302\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"1\" locationid=\"60004603\" locator=\"false\"/>\r\n    <row agent=\"Sispur Silbander\" agentid=\"3012303\" agenttypeid=\"8\" corporationid=\"1000049\" divisionid=\"24\" level=\"5\" locationid=\"60004600\" locator=\"false\"/>\r\n    <row agent=\"Rerumold Hudwin\" agentid=\"3012304\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"2\" locationid=\"60004609\" locator=\"false\"/>\r\n    <row agent=\"Dunidi Ritokas\" agentid=\"3012305\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"4\" locationid=\"60004612\" locator=\"false\"/>\r\n    <row agent=\"Duld Hindelvid\" agentid=\"3012306\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"1\" locationid=\"60004606\" locator=\"true\"/>\r\n    <row agent=\"Megnetta Gamilia\" agentid=\"3012307\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"1\" locationid=\"60004624\" locator=\"false\"/>\r\n    <row agent=\"Einger Kammittur\" agentid=\"3012308\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"2\" locationid=\"60004693\" locator=\"true\"/>\r\n    <row agent=\"Herbusten Urlan\" agentid=\"3012309\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"1\" locationid=\"60004684\" locator=\"false\"/>\r\n    <row agent=\"Hlervolget Dronetta\" agentid=\"3012310\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"2\" locationid=\"60004690\" locator=\"false\"/>\r\n    <row agent=\"Bengedik Tokel\" agentid=\"3012312\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"4\" locationid=\"60004723\" locator=\"true\"/>\r\n    <row agent=\"Amengjersus Edari\" agentid=\"3012313\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"3\" locationid=\"60004720\" locator=\"false\"/>\r\n    <row agent=\"Arlufur Nadila\" agentid=\"3012314\" agenttypeid=\"8\" corporationid=\"1000050\" divisionid=\"24\" level=\"5\" locationid=\"60004726\" locator=\"false\"/>\r\n    <row agent=\"Kraggelur Osbruron\" agentid=\"3012315\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"2\" locationid=\"60004729\" locator=\"false\"/>\r\n    <row agent=\"Andendulf Bealbjelfur\" agentid=\"3012317\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"3\" locationid=\"60004654\" locator=\"false\"/>\r\n    <row agent=\"Olfhar Brettirdur\" agentid=\"3012318\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"2\" locationid=\"60004657\" locator=\"false\"/>\r\n    <row agent=\"Asri Edba\" agentid=\"3012319\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"3\" locationid=\"60004648\" locator=\"true\"/>\r\n    <row agent=\"Adelgild Bran\" agentid=\"3012320\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"2\" locationid=\"60004678\" locator=\"true\"/>\r\n    <row agent=\"Saell Azuko\" agentid=\"3012321\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"3\" locationid=\"60004672\" locator=\"false\"/>\r\n    <row agent=\"Erobard Otgodar\" agentid=\"3012322\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"4\" locationid=\"60004681\" locator=\"false\"/>\r\n    <row agent=\"Hattolf Rartolbera\" agentid=\"3012323\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"2\" locationid=\"60004735\" locator=\"true\"/>\r\n    <row agent=\"Odoko Eorpweturan\" agentid=\"3012324\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"2\" locationid=\"60004732\" locator=\"false\"/>\r\n    <row agent=\"Helgatild Lianuard\" agentid=\"3012325\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"2\" locationid=\"60004741\" locator=\"false\"/>\r\n    <row agent=\"Odingill Reiradur\" agentid=\"3012326\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"1\" locationid=\"60004738\" locator=\"true\"/>\r\n    <row agent=\"Goverard Verake\" agentid=\"3012327\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"2\" locationid=\"60004627\" locator=\"false\"/>\r\n    <row agent=\"Tomena Rannolf\" agentid=\"3012328\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"4\" locationid=\"60004630\" locator=\"false\"/>\r\n    <row agent=\"Jurband Atirsand\" agentid=\"3012329\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"3\" locationid=\"60004633\" locator=\"false\"/>\r\n    <row agent=\"Eurwelo Udmulf\" agentid=\"3012330\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"1\" locationid=\"60004636\" locator=\"false\"/>\r\n    <row agent=\"Ille Orard\" agentid=\"3012331\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"1\" locationid=\"60004675\" locator=\"false\"/>\r\n    <row agent=\"Megnetta Bjolf\" agentid=\"3012332\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"1\" locationid=\"60004639\" locator=\"false\"/>\r\n    <row agent=\"Endsand Kort\" agentid=\"3012333\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"2\" locationid=\"60004642\" locator=\"false\"/>\r\n    <row agent=\"Arnidold Egitrard\" agentid=\"3012334\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"3\" locationid=\"60004645\" locator=\"true\"/>\r\n    <row agent=\"Rodela Onuguranko\" agentid=\"3012335\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"1\" locationid=\"60004663\" locator=\"false\"/>\r\n    <row agent=\"Kaeduteuk Hobelhar\" agentid=\"3012336\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"1\" locationid=\"60004669\" locator=\"false\"/>\r\n    <row agent=\"Ottursdulmur Ingmatorn\" agentid=\"3012337\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"2\" locationid=\"60004660\" locator=\"false\"/>\r\n    <row agent=\"Tor Eureit\" agentid=\"3012338\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"4\" locationid=\"60004666\" locator=\"true\"/>\r\n    <row agent=\"Eganderd Namitaden\" agentid=\"3012339\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"3\" locationid=\"60004702\" locator=\"false\"/>\r\n    <row agent=\"Lafrat Edungsuard\" agentid=\"3012340\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"2\" locationid=\"60004705\" locator=\"false\"/>\r\n    <row agent=\"Antorn Magbjolfur\" agentid=\"3012341\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"3\" locationid=\"60004696\" locator=\"false\"/>\r\n    <row agent=\"Luigenir Elbart\" agentid=\"3012342\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"2\" locationid=\"60004699\" locator=\"true\"/>\r\n    <row agent=\"Einello Einaldad\" agentid=\"3012343\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"3\" locationid=\"60004714\" locator=\"false\"/>\r\n    <row agent=\"Gjasund Hilfhurmur\" agentid=\"3012344\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"1\" locationid=\"60004717\" locator=\"false\"/>\r\n    <row agent=\"Rutadulf Hilsenaef\" agentid=\"3012345\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"4\" locationid=\"60004708\" locator=\"false\"/>\r\n    <row agent=\"Drovora Egiber\" agentid=\"3012346\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"1\" locationid=\"60004711\" locator=\"false\"/>\r\n    <row agent=\"Atlivald Steirata\" agentid=\"3012347\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004744\" locator=\"false\"/>\r\n    <row agent=\"Tatetur Eyleinn\" agentid=\"3012348\" agenttypeid=\"8\" corporationid=\"1000051\" divisionid=\"24\" level=\"5\" locationid=\"60004762\" locator=\"false\"/>\r\n    <row agent=\"Ildus Gang\" agentid=\"3012349\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004765\" locator=\"true\"/>\r\n    <row agent=\"Hadako Hatard\" agentid=\"3012350\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"4\" locationid=\"60004768\" locator=\"true\"/>\r\n    <row agent=\"Unze Svir\" agentid=\"3012351\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"22\" level=\"1\" locationid=\"60004774\" locator=\"true\"/>\r\n    <row agent=\"Bo Odruband\" agentid=\"3012352\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004771\" locator=\"true\"/>\r\n    <row agent=\"Krotting Avegel\" agentid=\"3012353\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"4\" locationid=\"60004777\" locator=\"true\"/>\r\n    <row agent=\"Sistran Hednur\" agentid=\"3012354\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"4\" locationid=\"60004807\" locator=\"true\"/>\r\n    <row agent=\"Irn Ofaenur\" agentid=\"3012355\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"3\" locationid=\"60004810\" locator=\"false\"/>\r\n    <row agent=\"Ratadure Oltber\" agentid=\"3012356\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"22\" level=\"2\" locationid=\"60004813\" locator=\"false\"/>\r\n    <row agent=\"Agirtad Dotudink\" agentid=\"3012357\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"4\" locationid=\"60004801\" locator=\"true\"/>\r\n    <row agent=\"Gostodar Ryrede\" agentid=\"3012358\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004804\" locator=\"false\"/>\r\n    <row agent=\"Hadbendeko Lulkraka\" agentid=\"3012359\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"22\" level=\"2\" locationid=\"60004798\" locator=\"true\"/>\r\n    <row agent=\"Emilia Arngur\" agentid=\"3012360\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004912\" locator=\"false\"/>\r\n    <row agent=\"Uptadir Herveiker\" agentid=\"3012361\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004915\" locator=\"true\"/>\r\n    <row agent=\"Smeild Guldit\" agentid=\"3012362\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"22\" level=\"3\" locationid=\"60004921\" locator=\"true\"/>\r\n    <row agent=\"Einsur Tovuli\" agentid=\"3012363\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004918\" locator=\"false\"/>\r\n    <row agent=\"Grigynwik Nadveilur\" agentid=\"3012364\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004906\" locator=\"false\"/>\r\n    <row agent=\"Heder Idmur\" agentid=\"3012365\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004909\" locator=\"true\"/>\r\n    <row agent=\"Hjomoneli Belmemer\" agentid=\"3012366\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"3\" locationid=\"60004792\" locator=\"true\"/>\r\n    <row agent=\"Aslungsur Ganolf\" agentid=\"3012367\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"4\" locationid=\"60004795\" locator=\"true\"/>\r\n    <row agent=\"Ernaltur Emandsine\" agentid=\"3012368\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"4\" locationid=\"60004786\" locator=\"true\"/>\r\n    <row agent=\"Swaslor Blevimold\" agentid=\"3012369\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004780\" locator=\"false\"/>\r\n    <row agent=\"Manneiri Rimbrumulf\" agentid=\"3012370\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"4\" locationid=\"60004783\" locator=\"true\"/>\r\n    <row agent=\"Hilrisi Annoke\" agentid=\"3012371\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004789\" locator=\"false\"/>\r\n    <row agent=\"Nondh Gotlenur\" agentid=\"3012372\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004879\" locator=\"true\"/>\r\n    <row agent=\"Ormandons Grinsdikild\" agentid=\"3012373\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004885\" locator=\"false\"/>\r\n    <row agent=\"Ingmeken Aunirad\" agentid=\"3012374\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004876\" locator=\"true\"/>\r\n    <row agent=\"Ungbrard Kalfren\" agentid=\"3012375\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004873\" locator=\"true\"/>\r\n    <row agent=\"Asgrolfige Stikiker\" agentid=\"3012376\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004882\" locator=\"true\"/>\r\n    <row agent=\"Hradhiko Ongiko\" agentid=\"3012377\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004870\" locator=\"false\"/>\r\n    <row agent=\"Odhusen Eysur\" agentid=\"3012378\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004816\" locator=\"true\"/>\r\n    <row agent=\"Kagori Alvober\" agentid=\"3012379\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"22\" level=\"1\" locationid=\"60004819\" locator=\"false\"/>\r\n    <row agent=\"Egbilolf Gerg\" agentid=\"3012380\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"4\" locationid=\"60004822\" locator=\"true\"/>\r\n    <row agent=\"Varstet Atus\" agentid=\"3012381\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"4\" locationid=\"60004831\" locator=\"true\"/>\r\n    <row agent=\"Guddik Badengaud\" agentid=\"3012382\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004828\" locator=\"false\"/>\r\n    <row agent=\"Knjuttewlf Letava\" agentid=\"3012383\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004825\" locator=\"false\"/>\r\n    <row agent=\"Ertulf Rehsmerold\" agentid=\"3012384\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"22\" level=\"4\" locationid=\"60004756\" locator=\"false\"/>\r\n    <row agent=\"Rnmeksuvsur Lanikur\" agentid=\"3012385\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"3\" locationid=\"60004747\" locator=\"false\"/>\r\n    <row agent=\"Gatgisi Kornher\" agentid=\"3012386\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004759\" locator=\"false\"/>\r\n    <row agent=\"Treur Tuin\" agentid=\"3012387\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"3\" locationid=\"60004750\" locator=\"true\"/>\r\n    <row agent=\"Vir Honn\" agentid=\"3012388\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"4\" locationid=\"60004753\" locator=\"false\"/>\r\n    <row agent=\"Ottylur Vleirg\" agentid=\"3012389\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004903\" locator=\"false\"/>\r\n    <row agent=\"Oldi Hent\" agentid=\"3012390\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004891\" locator=\"false\"/>\r\n    <row agent=\"Egbindur Bleimor\" agentid=\"3012391\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004897\" locator=\"true\"/>\r\n    <row agent=\"Artoren Aegbald\" agentid=\"3012392\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004900\" locator=\"true\"/>\r\n    <row agent=\"Steddil Ingeiker\" agentid=\"3012393\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004888\" locator=\"true\"/>\r\n    <row agent=\"Husk Faband\" agentid=\"3012394\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"3\" locationid=\"60004894\" locator=\"true\"/>\r\n    <row agent=\"Larnkard Sagalo\" agentid=\"3012395\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"3\" locationid=\"60004852\" locator=\"true\"/>\r\n    <row agent=\"Sildebetur Gulalin\" agentid=\"3012396\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"3\" locationid=\"60004858\" locator=\"false\"/>\r\n    <row agent=\"Eadwagen Girg\" agentid=\"3012397\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004864\" locator=\"true\"/>\r\n    <row agent=\"Savadeikur Elbe\" agentid=\"3012398\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004855\" locator=\"true\"/>\r\n    <row agent=\"Ameikur Idald\" agentid=\"3012399\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"3\" locationid=\"60004861\" locator=\"true\"/>\r\n    <row agent=\"Irt Malmadwik\" agentid=\"3012400\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004867\" locator=\"true\"/>\r\n    <row agent=\"Gellustur Betulen\" agentid=\"3012401\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"22\" level=\"4\" locationid=\"60004840\" locator=\"true\"/>\r\n    <row agent=\"Isidren Hren\" agentid=\"3012402\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"22\" level=\"1\" locationid=\"60004846\" locator=\"false\"/>\r\n    <row agent=\"Ivowik Huneimina\" agentid=\"3012403\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004849\" locator=\"true\"/>\r\n    <row agent=\"Iften Binkbidard\" agentid=\"3012404\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"22\" level=\"2\" locationid=\"60004843\" locator=\"true\"/>\r\n    <row agent=\"Felt Svaken\" agentid=\"3012406\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004834\" locator=\"false\"/>\r\n    <row agent=\"Elindmulf Eta\" agentid=\"3012407\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60004924\" locator=\"false\"/>\r\n    <row agent=\"Eskar Aerdar\" agentid=\"3012408\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"2\" locationid=\"60005002\" locator=\"false\"/>\r\n    <row agent=\"Sted Eisur\" agentid=\"3012409\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"4\" locationid=\"60004996\" locator=\"false\"/>\r\n    <row agent=\"Ortnosand Konari\" agentid=\"3012410\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"2\" locationid=\"60005005\" locator=\"false\"/>\r\n    <row agent=\"Atill Akbeier\" agentid=\"3012411\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"1\" locationid=\"60004999\" locator=\"false\"/>\r\n    <row agent=\"Askuldur Almegila\" agentid=\"3012412\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"2\" locationid=\"60004981\" locator=\"true\"/>\r\n    <row agent=\"Ormikur Govadulf\" agentid=\"3012413\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"2\" locationid=\"60004975\" locator=\"false\"/>\r\n    <row agent=\"Esbi Hrofrogedur\" agentid=\"3012414\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"3\" locationid=\"60004972\" locator=\"false\"/>\r\n    <row agent=\"Adaflulf Sormike\" agentid=\"3012415\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"1\" locationid=\"60004978\" locator=\"true\"/>\r\n    <row agent=\"Adotunur Alikur\" agentid=\"3012416\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"4\" locationid=\"60004984\" locator=\"false\"/>\r\n    <row agent=\"Gugate Eldber\" agentid=\"3012417\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"2\" locationid=\"60004990\" locator=\"false\"/>\r\n    <row agent=\"Eltrik Hedater\" agentid=\"3012418\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"2\" locationid=\"60004987\" locator=\"false\"/>\r\n    <row agent=\"Vifvedia Alfgert\" agentid=\"3012419\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60004993\" locator=\"false\"/>\r\n    <row agent=\"Hadbundired Afuran\" agentid=\"3012420\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"3\" locationid=\"60005035\" locator=\"false\"/>\r\n    <row agent=\"Ebesur Sirbold\" agentid=\"3012421\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60005038\" locator=\"false\"/>\r\n    <row agent=\"Ansfrodar Siramer\" agentid=\"3012422\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60005032\" locator=\"false\"/>\r\n    <row agent=\"Ualda Gergred\" agentid=\"3012423\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60005041\" locator=\"false\"/>\r\n    <row agent=\"Oaldald Ornatber\" agentid=\"3012424\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"2\" locationid=\"60005017\" locator=\"false\"/>\r\n    <row agent=\"Berlolf Adiduin\" agentid=\"3012425\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"4\" locationid=\"60005014\" locator=\"true\"/>\r\n    <row agent=\"Olfard Hribelard\" agentid=\"3012426\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"2\" locationid=\"60005008\" locator=\"false\"/>\r\n    <row agent=\"Dorautori Umbram\" agentid=\"3012427\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60005011\" locator=\"false\"/>\r\n    <row agent=\"Eremar Hefleflor\" agentid=\"3012428\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"2\" locationid=\"60004960\" locator=\"false\"/>\r\n    <row agent=\"Gussbjer Padhelm\" agentid=\"3012429\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"2\" locationid=\"60004963\" locator=\"false\"/>\r\n    <row agent=\"Gusnulber Ingriker\" agentid=\"3012430\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"1\" locationid=\"60004969\" locator=\"false\"/>\r\n    <row agent=\"Todellard Ealsted\" agentid=\"3012431\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"4\" locationid=\"60004966\" locator=\"false\"/>\r\n    <row agent=\"Mektaduin Harbubert\" agentid=\"3012432\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60004930\" locator=\"false\"/>\r\n    <row agent=\"Kils Anfruin\" agentid=\"3012433\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60004927\" locator=\"false\"/>\r\n    <row agent=\"Ollia Evuksdiko\" agentid=\"3012434\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"3\" locationid=\"60004933\" locator=\"false\"/>\r\n    <row agent=\"Gulfrabrad Olmimold\" agentid=\"3012435\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"4\" locationid=\"60004942\" locator=\"false\"/>\r\n    <row agent=\"Eldi Rilstirson\" agentid=\"3012436\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"1\" locationid=\"60004945\" locator=\"false\"/>\r\n    <row agent=\"Aunorina Erkel\" agentid=\"3012437\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60004936\" locator=\"false\"/>\r\n    <row agent=\"Ulyrmur Halvosher\" agentid=\"3012438\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"2\" locationid=\"60004939\" locator=\"true\"/>\r\n    <row agent=\"Eodhans Sarode\" agentid=\"3012439\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"3\" locationid=\"60005029\" locator=\"true\"/>\r\n    <row agent=\"Adiko Kammittur\" agentid=\"3012440\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"1\" locationid=\"60005020\" locator=\"false\"/>\r\n    <row agent=\"Gognalfur Besaber\" agentid=\"3012441\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"3\" locationid=\"60005026\" locator=\"true\"/>\r\n    <row agent=\"Wallekon Kortadaken\" agentid=\"3012442\" agenttypeid=\"8\" corporationid=\"1000052\" divisionid=\"24\" level=\"5\" locationid=\"60005023\" locator=\"false\"/>\r\n    <row agent=\"Paselan Klotgast\" agentid=\"3012443\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"3\" locationid=\"60004948\" locator=\"false\"/>\r\n    <row agent=\"Alranbjondan Fraer\" agentid=\"3012444\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"1\" locationid=\"60004951\" locator=\"false\"/>\r\n    <row agent=\"Varstet Gadoko\" agentid=\"3012445\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60004954\" locator=\"false\"/>\r\n    <row agent=\"Leusten Nidmakon\" agentid=\"3012446\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"2\" locationid=\"60004957\" locator=\"false\"/>\r\n    <row agent=\"Arnbjukin Egmur\" agentid=\"3012447\" agenttypeid=\"2\" corporationid=\"1000053\" divisionid=\"24\" level=\"1\" locationid=\"60005044\" locator=\"false\"/>\r\n    <row agent=\"Imber Renatikkin\" agentid=\"3012448\" agenttypeid=\"2\" corporationid=\"1000053\" divisionid=\"22\" level=\"4\" locationid=\"60005047\" locator=\"true\"/>\r\n    <row agent=\"Avesber Arrud\" agentid=\"3012449\" agenttypeid=\"2\" corporationid=\"1000053\" divisionid=\"24\" level=\"2\" locationid=\"60005050\" locator=\"true\"/>\r\n    <row agent=\"Ludalerad Teolisi\" agentid=\"3012450\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005053\" locator=\"true\"/>\r\n    <row agent=\"Uinkin Hrul\" agentid=\"3012451\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"4\" locationid=\"60005140\" locator=\"true\"/>\r\n    <row agent=\"Nildukur Surelnolf\" agentid=\"3012452\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"4\" locationid=\"60005146\" locator=\"true\"/>\r\n    <row agent=\"Hjef Ungur\" agentid=\"3012453\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005056\" locator=\"true\"/>\r\n    <row agent=\"Isbongar Eryldar\" agentid=\"3012454\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"4\" locationid=\"60005194\" locator=\"true\"/>\r\n    <row agent=\"Olubet Hesogeda\" agentid=\"3012455\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005191\" locator=\"true\"/>\r\n    <row agent=\"Hronn Erlemar\" agentid=\"3012456\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005185\" locator=\"true\"/>\r\n    <row agent=\"Isolmur Aeditide\" agentid=\"3012457\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005188\" locator=\"false\"/>\r\n    <row agent=\"Skiks Alfotada\" agentid=\"3012458\" agenttypeid=\"8\" corporationid=\"1000054\" divisionid=\"24\" level=\"5\" locationid=\"60005197\" locator=\"false\"/>\r\n    <row agent=\"Menfortur Demoron\" agentid=\"3012459\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005206\" locator=\"true\"/>\r\n    <row agent=\"Ergrad Amelsolf\" agentid=\"3012460\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"4\" locationid=\"60005200\" locator=\"true\"/>\r\n    <row agent=\"Bynshar Bendald\" agentid=\"3012461\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005203\" locator=\"true\"/>\r\n    <row agent=\"Leumolsan Fivinald\" agentid=\"3012462\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005068\" locator=\"false\"/>\r\n    <row agent=\"Florrik Hufn\" agentid=\"3012463\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"4\" locationid=\"60005071\" locator=\"false\"/>\r\n    <row agent=\"Ansbivand Boe\" agentid=\"3012464\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"4\" locationid=\"60005074\" locator=\"true\"/>\r\n    <row agent=\"Uilgirin Gudadard\" agentid=\"3012465\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005065\" locator=\"false\"/>\r\n    <row agent=\"Atenfrik Fivoldold\" agentid=\"3012466\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005128\" locator=\"true\"/>\r\n    <row agent=\"Ingreilen Nanjefdori\" agentid=\"3012467\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005131\" locator=\"true\"/>\r\n    <row agent=\"Ogvar Dreik\" agentid=\"3012468\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005134\" locator=\"true\"/>\r\n    <row agent=\"Eadwilo Filstar\" agentid=\"3012469\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005125\" locator=\"false\"/>\r\n    <row agent=\"Oltander Frid\" agentid=\"3012470\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005092\" locator=\"false\"/>\r\n    <row agent=\"Satehan Skialar\" agentid=\"3012471\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005095\" locator=\"true\"/>\r\n    <row agent=\"Emblur Ginbatur\" agentid=\"3012472\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005089\" locator=\"false\"/>\r\n    <row agent=\"Welukenur Annodi\" agentid=\"3012473\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005098\" locator=\"true\"/>\r\n    <row agent=\"Satisund Odbeldur\" agentid=\"3012474\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005221\" locator=\"true\"/>\r\n    <row agent=\"Amerik Akrufur\" agentid=\"3012475\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005227\" locator=\"true\"/>\r\n    <row agent=\"Odils Elde\" agentid=\"3012476\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005230\" locator=\"false\"/>\r\n    <row agent=\"Audurleinn Tiatulf\" agentid=\"3012477\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005224\" locator=\"true\"/>\r\n    <row agent=\"Wudgurtar Eindranodur\" agentid=\"3012478\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005182\" locator=\"false\"/>\r\n    <row agent=\"Rurgolti Word\" agentid=\"3012479\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"4\" locationid=\"60005173\" locator=\"true\"/>\r\n    <row agent=\"Kotokuin Edwirset\" agentid=\"3012480\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005176\" locator=\"true\"/>\r\n    <row agent=\"Mikbegoli Lytager\" agentid=\"3012481\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005179\" locator=\"false\"/>\r\n    <row agent=\"Ongunbjer Hetinold\" agentid=\"3012482\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005209\" locator=\"false\"/>\r\n    <row agent=\"Felodako Blurt\" agentid=\"3012483\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005218\" locator=\"true\"/>\r\n    <row agent=\"Agar Edemur\" agentid=\"3012484\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005212\" locator=\"false\"/>\r\n    <row agent=\"Linger Lagar\" agentid=\"3012485\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005215\" locator=\"true\"/>\r\n    <row agent=\"Analven Arad\" agentid=\"3012486\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005215\" locator=\"true\"/>\r\n    <row agent=\"Waninna Orlasi\" agentid=\"3012487\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005152\" locator=\"false\"/>\r\n    <row agent=\"Rodovald Avorsand\" agentid=\"3012488\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005158\" locator=\"false\"/>\r\n    <row agent=\"Erolfetton Wier\" agentid=\"3012489\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005149\" locator=\"false\"/>\r\n    <row agent=\"Andamulbunur Odoko\" agentid=\"3012490\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"4\" locationid=\"60005143\" locator=\"false\"/>\r\n    <row agent=\"Ansbuko Hjadder\" agentid=\"3012491\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005137\" locator=\"true\"/>\r\n    <row agent=\"Tentdreinn Arolf\" agentid=\"3012492\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005101\" locator=\"false\"/>\r\n    <row agent=\"Erleinur Ondgrulf\" agentid=\"3012493\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005104\" locator=\"false\"/>\r\n    <row agent=\"Wlfrur Brydoker\" agentid=\"3012494\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005110\" locator=\"false\"/>\r\n    <row agent=\"Annokagur Reland\" agentid=\"3012495\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005107\" locator=\"true\"/>\r\n    <row agent=\"Nolm Helala\" agentid=\"3012496\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005113\" locator=\"true\"/>\r\n    <row agent=\"Atoldulf Waninna\" agentid=\"3012497\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005122\" locator=\"false\"/>\r\n    <row agent=\"Happeter Venansur\" agentid=\"3012498\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"4\" locationid=\"60005119\" locator=\"true\"/>\r\n    <row agent=\"Styllkar Bradurald\" agentid=\"3012499\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005116\" locator=\"false\"/>\r\n    <row agent=\"Emoria Bear\" agentid=\"3012500\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005161\" locator=\"false\"/>\r\n    <row agent=\"Ovoli Alhold\" agentid=\"3012501\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005164\" locator=\"false\"/>\r\n    <row agent=\"Aellike Erobsdin\" agentid=\"3012502\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005170\" locator=\"true\"/>\r\n    <row agent=\"Heia Andidan\" agentid=\"3012503\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005167\" locator=\"false\"/>\r\n    <row agent=\"Dadunur Iggadnur\" agentid=\"3012504\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005086\" locator=\"false\"/>\r\n    <row agent=\"Eggeldold Oakka\" agentid=\"3012505\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005080\" locator=\"false\"/>\r\n    <row agent=\"Egostard Habad\" agentid=\"3012506\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005083\" locator=\"false\"/>\r\n    <row agent=\"Arnstalok Harodaber\" agentid=\"3012507\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005077\" locator=\"false\"/>\r\n    <row agent=\"Austrelur Pessur\" agentid=\"3012508\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005062\" locator=\"true\"/>\r\n    <row agent=\"Onfrard Gundrammon\" agentid=\"3012509\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005059\" locator=\"true\"/>\r\n    <row agent=\"Ats Odebeinn\" agentid=\"3012510\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005233\" locator=\"false\"/>\r\n    <row agent=\"Hegaldi Jelm\" agentid=\"3012511\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005239\" locator=\"false\"/>\r\n    <row agent=\"Sker Isolstur\" agentid=\"3012512\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"2\" locationid=\"60005242\" locator=\"false\"/>\r\n    <row agent=\"Eistar Karkirdard\" agentid=\"3012513\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"24\" level=\"2\" locationid=\"60005254\" locator=\"false\"/>\r\n    <row agent=\"Sweird Solendus\" agentid=\"3012514\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"4\" locationid=\"60005260\" locator=\"false\"/>\r\n    <row agent=\"Dalfrim Obbi\" agentid=\"3012515\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"2\" locationid=\"60005251\" locator=\"false\"/>\r\n    <row agent=\"Issana Lupanda\" agentid=\"3012516\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"22\" level=\"2\" locationid=\"60005263\" locator=\"false\"/>\r\n    <row agent=\"Egdald Urt\" agentid=\"3012517\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005257\" locator=\"false\"/>\r\n    <row agent=\"Kolmeter Bengikold\" agentid=\"3012518\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"2\" locationid=\"60005266\" locator=\"false\"/>\r\n    <row agent=\"Frord Smilnialin\" agentid=\"3012519\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005245\" locator=\"true\"/>\r\n    <row agent=\"Andgulin Rasovert\" agentid=\"3012520\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005248\" locator=\"false\"/>\r\n    <row agent=\"Treollenur Eymkur\" agentid=\"3012521\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005236\" locator=\"false\"/>\r\n    <row agent=\"Mind Aulfard\" agentid=\"3012522\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005395\" locator=\"true\"/>\r\n    <row agent=\"Erolkold Torune\" agentid=\"3012523\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"24\" level=\"1\" locationid=\"60005398\" locator=\"false\"/>\r\n    <row agent=\"Alolur Ernst\" agentid=\"3012524\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005410\" locator=\"false\"/>\r\n    <row agent=\"Huttelm Eilikkur\" agentid=\"3012525\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005401\" locator=\"true\"/>\r\n    <row agent=\"Vidokfa Eindrala\" agentid=\"3012526\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"4\" locationid=\"60005404\" locator=\"false\"/>\r\n    <row agent=\"Ustori Uikin\" agentid=\"3012527\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005407\" locator=\"false\"/>\r\n    <row agent=\"Hefreidik Oftuin\" agentid=\"3012528\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005269\" locator=\"false\"/>\r\n    <row agent=\"Engamber Atani\" agentid=\"3012529\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"4\" locationid=\"60005272\" locator=\"true\"/>\r\n    <row agent=\"Lufstar Mekentelm\" agentid=\"3012530\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005278\" locator=\"false\"/>\r\n    <row agent=\"Adlebard Hjarald\" agentid=\"3012531\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"2\" locationid=\"60005275\" locator=\"false\"/>\r\n    <row agent=\"Arladur Tongofur\" agentid=\"3012532\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"22\" level=\"1\" locationid=\"60005281\" locator=\"false\"/>\r\n    <row agent=\"Babanulf Kerane\" agentid=\"3012533\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"24\" level=\"4\" locationid=\"60005284\" locator=\"true\"/>\r\n    <row agent=\"Torder Larboken\" agentid=\"3012534\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005341\" locator=\"false\"/>\r\n    <row agent=\"Esbjell Witalrald\" agentid=\"3012535\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005344\" locator=\"false\"/>\r\n    <row agent=\"Ongred Embrifur\" agentid=\"3012536\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005350\" locator=\"false\"/>\r\n    <row agent=\"Enskan Eytteinn\" agentid=\"3012537\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"2\" locationid=\"60005356\" locator=\"false\"/>\r\n    <row agent=\"Urigbrin Evruko\" agentid=\"3012538\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"24\" level=\"2\" locationid=\"60005353\" locator=\"true\"/>\r\n    <row agent=\"Fragard Orber\" agentid=\"3012539\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"24\" level=\"3\" locationid=\"60005347\" locator=\"true\"/>\r\n    <row agent=\"Illane Austriromur\" agentid=\"3012540\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"4\" locationid=\"60005359\" locator=\"false\"/>\r\n    <row agent=\"Fran Streinard\" agentid=\"3012541\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"24\" level=\"3\" locationid=\"60005365\" locator=\"true\"/>\r\n    <row agent=\"Eurnkar Haram\" agentid=\"3012542\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005371\" locator=\"false\"/>\r\n    <row agent=\"Alkwe Reidesar\" agentid=\"3012543\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005374\" locator=\"false\"/>\r\n    <row agent=\"Frirt Zaruna\" agentid=\"3012544\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005362\" locator=\"false\"/>\r\n    <row agent=\"Eronber Ergriok\" agentid=\"3012545\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"2\" locationid=\"60005368\" locator=\"false\"/>\r\n    <row agent=\"Radergidi Krud\" agentid=\"3012546\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"2\" locationid=\"60005287\" locator=\"false\"/>\r\n    <row agent=\"Etrauan Karkapti\" agentid=\"3012547\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"4\" locationid=\"60005290\" locator=\"true\"/>\r\n    <row agent=\"Oktur Gozeiride\" agentid=\"3012548\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005293\" locator=\"false\"/>\r\n    <row agent=\"Hatolur Balledia\" agentid=\"3012549\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"2\" locationid=\"60005296\" locator=\"false\"/>\r\n    <row agent=\"Nekorard Hjodellar\" agentid=\"3012550\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"4\" locationid=\"60005299\" locator=\"false\"/>\r\n    <row agent=\"Veitt Eitar\" agentid=\"3012551\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"4\" locationid=\"60005302\" locator=\"false\"/>\r\n    <row agent=\"Goin Larboken\" agentid=\"3012552\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005305\" locator=\"false\"/>\r\n    <row agent=\"Albi Sonur\" agentid=\"3012553\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"2\" locationid=\"60005308\" locator=\"true\"/>\r\n    <row agent=\"Alfa Raut\" agentid=\"3012554\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005314\" locator=\"false\"/>\r\n    <row agent=\"Daleder Hedring\" agentid=\"3012555\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"2\" locationid=\"60005317\" locator=\"false\"/>\r\n    <row agent=\"Engeli Elvand\" agentid=\"3012556\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"4\" locationid=\"60005320\" locator=\"false\"/>\r\n    <row agent=\"Autolbard Arbrid\" agentid=\"3012557\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"24\" level=\"3\" locationid=\"60005311\" locator=\"false\"/>\r\n    <row agent=\"Gogageillirmer Eisi\" agentid=\"3012558\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"2\" locationid=\"60005332\" locator=\"false\"/>\r\n    <row agent=\"Gaunelur Malbrund\" agentid=\"3012559\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005335\" locator=\"false\"/>\r\n    <row agent=\"Kreust On\" agentid=\"3012560\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"24\" level=\"1\" locationid=\"60005338\" locator=\"false\"/>\r\n    <row agent=\"Astluin Lisugdolf\" agentid=\"3012561\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"4\" locationid=\"60005329\" locator=\"false\"/>\r\n    <row agent=\"Eomalfur Aslofsdimmon\" agentid=\"3012562\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005323\" locator=\"true\"/>\r\n    <row agent=\"Kaker Meinaborg\" agentid=\"3012563\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005326\" locator=\"false\"/>\r\n    <row agent=\"Benresur Enmoin\" agentid=\"3012564\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"24\" level=\"2\" locationid=\"60005377\" locator=\"false\"/>\r\n    <row agent=\"Marerlur Simnika\" agentid=\"3012565\" agenttypeid=\"8\" corporationid=\"1000055\" divisionid=\"23\" level=\"5\" locationid=\"60005386\" locator=\"false\"/>\r\n    <row agent=\"Wedbrik Badidovar\" agentid=\"3012566\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"24\" level=\"2\" locationid=\"60005383\" locator=\"true\"/>\r\n    <row agent=\"Edgelken Uilguko\" agentid=\"3012567\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"24\" level=\"4\" locationid=\"60005389\" locator=\"true\"/>\r\n    <row agent=\"Atare Erand\" agentid=\"3012568\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"4\" locationid=\"60005380\" locator=\"false\"/>\r\n    <row agent=\"Warvodold Eodo\" agentid=\"3012569\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"2\" locationid=\"60005392\" locator=\"true\"/>\r\n    <row agent=\"Esbi Aggand\" agentid=\"3012570\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"1\" locationid=\"60005413\" locator=\"false\"/>\r\n    <row agent=\"Bremmur Ensen\" agentid=\"3012571\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"2\" locationid=\"60005593\" locator=\"false\"/>\r\n    <row agent=\"Arngur Frar\" agentid=\"3012572\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"3\" locationid=\"60005596\" locator=\"true\"/>\r\n    <row agent=\"Gudkogi Aellelar\" agentid=\"3012573\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"2\" locationid=\"60005599\" locator=\"false\"/>\r\n    <row agent=\"Aelrersand Huger\" agentid=\"3012574\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"3\" locationid=\"60005608\" locator=\"true\"/>\r\n    <row agent=\"Urkolf Hignotta\" agentid=\"3012575\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"1\" locationid=\"60005602\" locator=\"false\"/>\r\n    <row agent=\"Eigulf Kadrarolf\" agentid=\"3012576\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"3\" locationid=\"60005605\" locator=\"false\"/>\r\n    <row agent=\"Hrolerren Genoruin\" agentid=\"3012577\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"3\" locationid=\"60005452\" locator=\"false\"/>\r\n    <row agent=\"Adeirik Kloribjar\" agentid=\"3012578\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"1\" locationid=\"60005455\" locator=\"false\"/>\r\n    <row agent=\"Hildogur Eymanduard\" agentid=\"3012579\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"1\" locationid=\"60005458\" locator=\"false\"/>\r\n    <row agent=\"Ollsteinn Svaflur\" agentid=\"3012580\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"3\" locationid=\"60005464\" locator=\"false\"/>\r\n    <row agent=\"Wangerber Aslukur\" agentid=\"3012581\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"3\" locationid=\"60005449\" locator=\"true\"/>\r\n    <row agent=\"Kifruge Egengulf\" agentid=\"3012582\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"3\" locationid=\"60005461\" locator=\"false\"/>\r\n    <row agent=\"Odward Ego\" agentid=\"3012583\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"2\" locationid=\"60005653\" locator=\"true\"/>\r\n    <row agent=\"Betalulf Ilmer\" agentid=\"3012584\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"2\" locationid=\"60005647\" locator=\"true\"/>\r\n    <row agent=\"Mataban Aeldar\" agentid=\"3012585\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"3\" locationid=\"60005650\" locator=\"true\"/>\r\n    <row agent=\"Adelder Histatold\" agentid=\"3012586\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"2\" locationid=\"60005656\" locator=\"false\"/>\r\n    <row agent=\"Ominnard Havartard\" agentid=\"3012587\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"3\" locationid=\"60005662\" locator=\"false\"/>\r\n    <row agent=\"Ladbeinzo Rolelund\" agentid=\"3012588\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"2\" locationid=\"60005659\" locator=\"true\"/>\r\n    <row agent=\"Jodgauren Olmeigar\" agentid=\"3012589\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"2\" locationid=\"60005668\" locator=\"false\"/>\r\n    <row agent=\"Wamimber Eidalren\" agentid=\"3012590\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"4\" locationid=\"60005680\" locator=\"true\"/>\r\n    <row agent=\"Ingveveka Aelhedur\" agentid=\"3012591\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"2\" locationid=\"60005671\" locator=\"true\"/>\r\n    <row agent=\"Mangolfeim Hogstossen\" agentid=\"3012592\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"1\" locationid=\"60005674\" locator=\"false\"/>\r\n    <row agent=\"Asomar Todber\" agentid=\"3012593\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"2\" locationid=\"60005665\" locator=\"false\"/>\r\n    <row agent=\"Olsirtur Alalene\" agentid=\"3012594\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"3\" locationid=\"60005677\" locator=\"false\"/>\r\n    <row agent=\"Skashelden Iron\" agentid=\"3012595\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"2\" locationid=\"60005473\" locator=\"false\"/>\r\n    <row agent=\"Witundald Adduin\" agentid=\"3012596\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"1\" locationid=\"60005467\" locator=\"false\"/>\r\n    <row agent=\"Estelm Vudugbad\" agentid=\"3012597\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"4\" locationid=\"60005470\" locator=\"false\"/>\r\n    <row agent=\"Huvingel Elf\" agentid=\"3012598\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"3\" locationid=\"60005476\" locator=\"false\"/>\r\n    <row agent=\"Gagnali Hakekur\" agentid=\"3012599\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"1\" locationid=\"60005482\" locator=\"true\"/>\r\n    <row agent=\"Band Elehdinn\" agentid=\"3012600\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"4\" locationid=\"60005479\" locator=\"true\"/>\r\n    <row agent=\"Skuind Aettad\" agentid=\"3012601\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"3\" locationid=\"60005614\" locator=\"false\"/>\r\n    <row agent=\"Toldoko Atrard\" agentid=\"3012602\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"2\" locationid=\"60005620\" locator=\"false\"/>\r\n    <row agent=\"Jedindrat Merogar\" agentid=\"3012603\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"2\" locationid=\"60005623\" locator=\"true\"/>\r\n    <row agent=\"Frat Benkina\" agentid=\"3012604\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"1\" locationid=\"60005611\" locator=\"false\"/>\r\n    <row agent=\"Aego Videda\" agentid=\"3012605\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"2\" locationid=\"60005617\" locator=\"false\"/>\r\n    <row agent=\"Fodoko Eyldur\" agentid=\"3012606\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"3\" locationid=\"60005626\" locator=\"false\"/>\r\n    <row agent=\"Odhillafnur Avindisur\" agentid=\"3012607\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"1\" locationid=\"60005563\" locator=\"false\"/>\r\n    <row agent=\"Toridar Adden\" agentid=\"3012608\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"2\" locationid=\"60005566\" locator=\"false\"/>\r\n    <row agent=\"Wlestrald Bugnegrit\" agentid=\"3012609\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"2\" locationid=\"60005557\" locator=\"false\"/>\r\n    <row agent=\"Aflur Gulhikur\" agentid=\"3012610\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"3\" locationid=\"60005560\" locator=\"false\"/>\r\n    <row agent=\"Mitylen Aetofrens\" agentid=\"3012611\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"2\" locationid=\"60005569\" locator=\"false\"/>\r\n    <row agent=\"Evrina Odboko\" agentid=\"3012612\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"2\" locationid=\"60005572\" locator=\"false\"/>\r\n    <row agent=\"Oran Afstuin\" agentid=\"3012613\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"3\" locationid=\"60005419\" locator=\"true\"/>\r\n    <row agent=\"Olsettur Teoren\" agentid=\"3012614\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"3\" locationid=\"60005425\" locator=\"true\"/>\r\n    <row agent=\"Allund Uttolf\" agentid=\"3012615\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"3\" locationid=\"60005428\" locator=\"true\"/>\r\n    <row agent=\"Olsagard Enguflod\" agentid=\"3012616\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"4\" locationid=\"60005416\" locator=\"true\"/>\r\n    <row agent=\"Arngur Idulf\" agentid=\"3012617\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"2\" locationid=\"60005422\" locator=\"false\"/>\r\n    <row agent=\"Ensi Ranjorn\" agentid=\"3012618\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"4\" locationid=\"60005536\" locator=\"false\"/>\r\n    <row agent=\"Idrolf Hrer\" agentid=\"3012619\" agenttypeid=\"8\" corporationid=\"1000056\" divisionid=\"23\" level=\"5\" locationid=\"60005530\" locator=\"false\"/>\r\n    <row agent=\"Eirtulf Eadrika\" agentid=\"3012620\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"3\" locationid=\"60005533\" locator=\"false\"/>\r\n    <row agent=\"Elsamer Adwa\" agentid=\"3012621\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"1\" locationid=\"60005521\" locator=\"false\"/>\r\n    <row agent=\"Aurmuald Katamuko\" agentid=\"3012622\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"1\" locationid=\"60005524\" locator=\"false\"/>\r\n    <row agent=\"Amognvasa Evukulf\" agentid=\"3012623\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"4\" locationid=\"60005527\" locator=\"false\"/>\r\n    <row agent=\"Eitasena Hesker\" agentid=\"3012624\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"3\" locationid=\"60005434\" locator=\"true\"/>\r\n    <row agent=\"Tarurard Golgen\" agentid=\"3012625\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"1\" locationid=\"60005431\" locator=\"false\"/>\r\n    <row agent=\"Ernsteber Krandin\" agentid=\"3012626\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"2\" locationid=\"60005437\" locator=\"false\"/>\r\n    <row agent=\"Isuggven Steisgrider\" agentid=\"3012627\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"3\" locationid=\"60005443\" locator=\"false\"/>\r\n    <row agent=\"Bamfurmulf Govuden\" agentid=\"3012628\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"2\" locationid=\"60005446\" locator=\"false\"/>\r\n    <row agent=\"Ongidi Eurboder\" agentid=\"3012629\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"3\" locationid=\"60005440\" locator=\"false\"/>\r\n    <row agent=\"Oraekja Blorata\" agentid=\"3012630\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"2\" locationid=\"60005503\" locator=\"false\"/>\r\n    <row agent=\"Alpur Stanuard\" agentid=\"3012631\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"1\" locationid=\"60005506\" locator=\"false\"/>\r\n    <row agent=\"Oldrold Wallulban\" agentid=\"3012632\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"4\" locationid=\"60005509\" locator=\"false\"/>\r\n    <row agent=\"Hurtasur Reyspander\" agentid=\"3012633\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"1\" locationid=\"60005512\" locator=\"false\"/>\r\n    <row agent=\"Steirtfisar Hadunold\" agentid=\"3012634\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"1\" locationid=\"60005515\" locator=\"false\"/>\r\n    <row agent=\"Foroligen Blillane\" agentid=\"3012635\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"2\" locationid=\"60005518\" locator=\"false\"/>\r\n    <row agent=\"Germemoin Gind\" agentid=\"3012636\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"4\" locationid=\"60005539\" locator=\"true\"/>\r\n    <row agent=\"Wei Auner\" agentid=\"3012637\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"3\" locationid=\"60005542\" locator=\"false\"/>\r\n    <row agent=\"Aldolbod Adran\" agentid=\"3012638\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"2\" locationid=\"60005545\" locator=\"false\"/>\r\n    <row agent=\"Geldare Akegnvelram\" agentid=\"3012639\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"1\" locationid=\"60005548\" locator=\"false\"/>\r\n    <row agent=\"Bemhineri Larisi\" agentid=\"3012640\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"2\" locationid=\"60005551\" locator=\"true\"/>\r\n    <row agent=\"Aelfur Andirid\" agentid=\"3012641\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"3\" locationid=\"60005554\" locator=\"true\"/>\r\n    <row agent=\"Beltard Fibemulf\" agentid=\"3012642\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"1\" locationid=\"60005638\" locator=\"false\"/>\r\n    <row agent=\"Omnolfan Pialt\" agentid=\"3012643\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"1\" locationid=\"60005635\" locator=\"false\"/>\r\n    <row agent=\"Skaer Bernild\" agentid=\"3012644\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"1\" locationid=\"60005629\" locator=\"false\"/>\r\n    <row agent=\"Asgidur Hilfrald\" agentid=\"3012645\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"3\" locationid=\"60005632\" locator=\"true\"/>\r\n    <row agent=\"Fihaedur Teud\" agentid=\"3012646\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"1\" locationid=\"60005641\" locator=\"false\"/>\r\n    <row agent=\"Wikodlin Aren\" agentid=\"3012647\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"1\" locationid=\"60005644\" locator=\"false\"/>\r\n    <row agent=\"Antuilin Sikandi\" agentid=\"3012648\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"1\" locationid=\"60005500\" locator=\"false\"/>\r\n    <row agent=\"Ninzilo Belirhar\" agentid=\"3012649\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"1\" locationid=\"60005485\" locator=\"false\"/>\r\n    <row agent=\"Onirlinzo Emendred\" agentid=\"3012650\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"3\" locationid=\"60005491\" locator=\"false\"/>\r\n    <row agent=\"Sakold Gnarn\" agentid=\"3012651\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"1\" locationid=\"60005497\" locator=\"true\"/>\r\n    <row agent=\"Wlbrok Albokite\" agentid=\"3012652\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"2\" locationid=\"60005488\" locator=\"false\"/>\r\n    <row agent=\"Muan Flosiden\" agentid=\"3012653\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"1\" locationid=\"60005494\" locator=\"false\"/>\r\n    <row agent=\"Redurosso Sotana\" agentid=\"3012654\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"2\" locationid=\"60005575\" locator=\"false\"/>\r\n    <row agent=\"Erulf Eudar\" agentid=\"3012655\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"1\" locationid=\"60005581\" locator=\"false\"/>\r\n    <row agent=\"Avald Teuttewlf\" agentid=\"3012656\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"1\" locationid=\"60005587\" locator=\"true\"/>\r\n    <row agent=\"Onnold Effonir\" agentid=\"3012657\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"1\" locationid=\"60005590\" locator=\"false\"/>\r\n    <row agent=\"Hank Argo\" agentid=\"3012658\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"23\" level=\"3\" locationid=\"60005578\" locator=\"false\"/>\r\n    <row agent=\"Kasukell Bjaren\" agentid=\"3012659\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"4\" locationid=\"60005584\" locator=\"false\"/>\r\n    <row agent=\"Andur Oaldald\" agentid=\"3012660\" agenttypeid=\"4\" corporationid=\"1000057\" divisionid=\"18\" level=\"1\" locationid=\"60005683\" locator=\"false\"/>\r\n    <row agent=\"Oten Kekkikber\" agentid=\"3012661\" agenttypeid=\"4\" corporationid=\"1000057\" divisionid=\"18\" level=\"1\" locationid=\"60005689\" locator=\"false\"/>\r\n    <row agent=\"Adrald Evalfolf\" agentid=\"3012662\" agenttypeid=\"4\" corporationid=\"1000057\" divisionid=\"18\" level=\"2\" locationid=\"60005686\" locator=\"false\"/>\r\n    <row agent=\"Bogekur Alpur\" agentid=\"3012663\" agenttypeid=\"8\" corporationid=\"1000057\" divisionid=\"18\" level=\"5\" locationid=\"60005701\" locator=\"false\"/>\r\n    <row agent=\"Urondsuard Wititur\" agentid=\"3012664\" agenttypeid=\"4\" corporationid=\"1000057\" divisionid=\"18\" level=\"1\" locationid=\"60005707\" locator=\"false\"/>\r\n    <row agent=\"Husk Alfur\" agentid=\"3012665\" agenttypeid=\"4\" corporationid=\"1000057\" divisionid=\"18\" level=\"1\" locationid=\"60005704\" locator=\"false\"/>\r\n    <row agent=\"Aldilbet Sotisarin\" agentid=\"3012666\" agenttypeid=\"4\" corporationid=\"1000057\" divisionid=\"18\" level=\"4\" locationid=\"60005710\" locator=\"false\"/>\r\n    <row agent=\"Zeireinn Olruin\" agentid=\"3012667\" agenttypeid=\"4\" corporationid=\"1000057\" divisionid=\"18\" level=\"2\" locationid=\"60005713\" locator=\"false\"/>\r\n    <row agent=\"Beomilar Ofakilur\" agentid=\"3012668\" agenttypeid=\"4\" corporationid=\"1000057\" divisionid=\"18\" level=\"3\" locationid=\"60005716\" locator=\"false\"/>\r\n    <row agent=\"Uolbeta Teonusude\" agentid=\"3012669\" agenttypeid=\"4\" corporationid=\"1000057\" divisionid=\"18\" level=\"1\" locationid=\"60005698\" locator=\"false\"/>\r\n    <row agent=\"Amattold Ullbjell\" agentid=\"3012670\" agenttypeid=\"4\" corporationid=\"1000057\" divisionid=\"18\" level=\"2\" locationid=\"60005692\" locator=\"true\"/>\r\n    <row agent=\"Agar Edonbald\" agentid=\"3012671\" agenttypeid=\"4\" corporationid=\"1000057\" divisionid=\"18\" level=\"2\" locationid=\"60005695\" locator=\"false\"/>\r\n    <row agent=\"Snall Eoror\" agentid=\"3012672\" agenttypeid=\"2\" corporationid=\"1000058\" divisionid=\"22\" level=\"2\" locationid=\"60005722\" locator=\"false\"/>\r\n    <row agent=\"Adelhar Atelar\" agentid=\"3012673\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"24\" level=\"1\" locationid=\"60005725\" locator=\"false\"/>\r\n    <row agent=\"Bulban Benteinn\" agentid=\"3012674\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"23\" level=\"2\" locationid=\"60005728\" locator=\"true\"/>\r\n    <row agent=\"Beginzur Wettin\" agentid=\"3012675\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"22\" level=\"2\" locationid=\"60005731\" locator=\"false\"/>\r\n    <row agent=\"Adilfert Abina\" agentid=\"3012676\" agenttypeid=\"8\" corporationid=\"1000059\" divisionid=\"23\" level=\"5\" locationid=\"60005755\" locator=\"false\"/>\r\n    <row agent=\"Lert Aldorsen\" agentid=\"3012677\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"23\" level=\"2\" locationid=\"60005758\" locator=\"false\"/>\r\n    <row agent=\"Ingugar Nontin\" agentid=\"3012678\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"23\" level=\"3\" locationid=\"60005752\" locator=\"false\"/>\r\n    <row agent=\"Sakold Ortmur\" agentid=\"3012679\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"22\" level=\"4\" locationid=\"60005734\" locator=\"false\"/>\r\n    <row agent=\"Arngredin Gutard\" agentid=\"3012680\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"24\" level=\"1\" locationid=\"60005737\" locator=\"false\"/>\r\n    <row agent=\"Azanbilla Kastomar\" agentid=\"3012681\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"22\" level=\"2\" locationid=\"60005740\" locator=\"false\"/>\r\n    <row agent=\"Willungur Ogmur\" agentid=\"3012682\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"24\" level=\"2\" locationid=\"60005743\" locator=\"false\"/>\r\n    <row agent=\"Hjad Wisper\" agentid=\"3012683\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"22\" level=\"2\" locationid=\"60005746\" locator=\"false\"/>\r\n    <row agent=\"Olfgur Hurava\" agentid=\"3012684\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"23\" level=\"3\" locationid=\"60005749\" locator=\"true\"/>\r\n    <row agent=\"Arfran Eurtrald\" agentid=\"3012685\" agenttypeid=\"2\" corporationid=\"1000060\" divisionid=\"22\" level=\"1\" locationid=\"60005761\" locator=\"false\"/>\r\n    <row agent=\"Totedur Anjell\" agentid=\"3012686\" agenttypeid=\"2\" corporationid=\"1000060\" divisionid=\"22\" level=\"2\" locationid=\"60005764\" locator=\"true\"/>\r\n    <row agent=\"Ranniko Islabsdald\" agentid=\"3012687\" agenttypeid=\"2\" corporationid=\"1000060\" divisionid=\"22\" level=\"4\" locationid=\"60005767\" locator=\"true\"/>\r\n    <row agent=\"Oswosmer Markela\" agentid=\"3012688\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60005770\" locator=\"false\"/>\r\n    <row agent=\"Maradit Eyrtgur\" agentid=\"3012689\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005773\" locator=\"false\"/>\r\n    <row agent=\"Odboster Akold\" agentid=\"3012690\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60005863\" locator=\"false\"/>\r\n    <row agent=\"Berkrungur Kird\" agentid=\"3012691\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"2\" locationid=\"60005869\" locator=\"false\"/>\r\n    <row agent=\"Teurik Parkell\" agentid=\"3012692\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005875\" locator=\"true\"/>\r\n    <row agent=\"Ozur Gusnulber\" agentid=\"3012693\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"2\" locationid=\"60005848\" locator=\"false\"/>\r\n    <row agent=\"Horbengoted Stiert\" agentid=\"3012694\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005845\" locator=\"false\"/>\r\n    <row agent=\"Sinslomer Arnilfar\" agentid=\"3012695\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005851\" locator=\"false\"/>\r\n    <row agent=\"Gekmund Belbjolder\" agentid=\"3012696\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"2\" locationid=\"60005854\" locator=\"true\"/>\r\n    <row agent=\"Stedalur Anbald\" agentid=\"3012697\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"2\" locationid=\"60005857\" locator=\"true\"/>\r\n    <row agent=\"Sukur Ofoden\" agentid=\"3012698\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"2\" locationid=\"60005842\" locator=\"false\"/>\r\n    <row agent=\"Zallellulf Bestevar\" agentid=\"3012699\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60005794\" locator=\"false\"/>\r\n    <row agent=\"Atad Arla\" agentid=\"3012700\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60005788\" locator=\"false\"/>\r\n    <row agent=\"Fensokkan Onustrunda\" agentid=\"3012701\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60005800\" locator=\"false\"/>\r\n    <row agent=\"Zeireinn Elfrekur\" agentid=\"3012702\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"4\" locationid=\"60005791\" locator=\"true\"/>\r\n    <row agent=\"Kakur Alollolf\" agentid=\"3012703\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"2\" locationid=\"60005797\" locator=\"false\"/>\r\n    <row agent=\"Hardutram Ontbald\" agentid=\"3012704\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"3\" locationid=\"60005803\" locator=\"true\"/>\r\n    <row agent=\"Fomalia Sverbrald\" agentid=\"3012705\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"3\" locationid=\"60006007\" locator=\"false\"/>\r\n    <row agent=\"Pedonsar Tialgar\" agentid=\"3012706\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60006010\" locator=\"true\"/>\r\n    <row agent=\"Erlemer Hegelin\" agentid=\"3012710\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60006019\" locator=\"false\"/>\r\n    <row agent=\"Anshedis Morane\" agentid=\"3012711\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"3\" locationid=\"60005833\" locator=\"false\"/>\r\n    <row agent=\"Bjolfolf Hodinur\" agentid=\"3012712\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"3\" locationid=\"60005824\" locator=\"false\"/>\r\n    <row agent=\"Boledia Katefert\" agentid=\"3012713\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60005839\" locator=\"false\"/>\r\n    <row agent=\"Asmindil Eylilur\" agentid=\"3012714\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"2\" locationid=\"60005827\" locator=\"false\"/>\r\n    <row agent=\"Doldeko Teursen\" agentid=\"3012715\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60005830\" locator=\"true\"/>\r\n    <row agent=\"Odlululf Suarin\" agentid=\"3012716\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"2\" locationid=\"60005836\" locator=\"true\"/>\r\n    <row agent=\"Aelfron Gak\" agentid=\"3012717\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"3\" locationid=\"60005968\" locator=\"false\"/>\r\n    <row agent=\"Osweilur Vegeldur\" agentid=\"3012718\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"1\" locationid=\"60005974\" locator=\"false\"/>\r\n    <row agent=\"Adisbren Statenrik\" agentid=\"3012719\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60005980\" locator=\"true\"/>\r\n    <row agent=\"Togtulker Witer\" agentid=\"3012720\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60005983\" locator=\"true\"/>\r\n    <row agent=\"Klen Hakielin\" agentid=\"3012721\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60005971\" locator=\"false\"/>\r\n    <row agent=\"Egota Sinssillar\" agentid=\"3012722\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005977\" locator=\"false\"/>\r\n    <row agent=\"Lar Ingegolf\" agentid=\"3012723\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"3\" locationid=\"60005809\" locator=\"false\"/>\r\n    <row agent=\"Adwin Agirtad\" agentid=\"3012724\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005815\" locator=\"false\"/>\r\n    <row agent=\"Aevombell Ebunden\" agentid=\"3012725\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005812\" locator=\"true\"/>\r\n    <row agent=\"Stirht Wutagen\" agentid=\"3012726\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"2\" locationid=\"60005821\" locator=\"false\"/>\r\n    <row agent=\"Harrodik Lem\" agentid=\"3012727\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005806\" locator=\"true\"/>\r\n    <row agent=\"Klokadur Ido\" agentid=\"3012728\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"2\" locationid=\"60005818\" locator=\"false\"/>\r\n    <row agent=\"Sallgrevar Olsurard\" agentid=\"3012729\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"2\" locationid=\"60006001\" locator=\"false\"/>\r\n    <row agent=\"Treur Uns\" agentid=\"3012730\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"2\" locationid=\"60005995\" locator=\"false\"/>\r\n    <row agent=\"Erudlin Lurang\" agentid=\"3012731\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"3\" locationid=\"60005986\" locator=\"false\"/>\r\n    <row agent=\"Arnbjukin Aden\" agentid=\"3012732\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"2\" locationid=\"60005989\" locator=\"false\"/>\r\n    <row agent=\"Rilfgrin Haniakare\" agentid=\"3012733\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60005992\" locator=\"false\"/>\r\n    <row agent=\"Aldinold Erada\" agentid=\"3012734\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005998\" locator=\"true\"/>\r\n    <row agent=\"Wenter Semilia\" agentid=\"3012735\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"2\" locationid=\"60005953\" locator=\"false\"/>\r\n    <row agent=\"Gudutkard Lisugdolf\" agentid=\"3012736\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005956\" locator=\"true\"/>\r\n    <row agent=\"Rirokton Teons\" agentid=\"3012737\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"2\" locationid=\"60005959\" locator=\"false\"/>\r\n    <row agent=\"Otramer Bafrolwik\" agentid=\"3012738\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005950\" locator=\"false\"/>\r\n    <row agent=\"Bleistmulf Adirvert\" agentid=\"3012739\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60005965\" locator=\"false\"/>\r\n    <row agent=\"Lallalisur Skudukulf\" agentid=\"3012740\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"2\" locationid=\"60005962\" locator=\"true\"/>\r\n    <row agent=\"Egnel Hagenzo\" agentid=\"3012741\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60005923\" locator=\"false\"/>\r\n    <row agent=\"Annalfur Walfredard\" agentid=\"3012742\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005929\" locator=\"false\"/>\r\n    <row agent=\"Jursegmana Manban\" agentid=\"3012743\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"3\" locationid=\"60005917\" locator=\"true\"/>\r\n    <row agent=\"Vesine Tamekamur\" agentid=\"3012744\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005926\" locator=\"false\"/>\r\n    <row agent=\"Higekiakgar Vakmerger\" agentid=\"3012745\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"3\" locationid=\"60005914\" locator=\"false\"/>\r\n    <row agent=\"Ansfriken Aetedar\" agentid=\"3012746\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"2\" locationid=\"60005920\" locator=\"false\"/>\r\n    <row agent=\"Ulruilek Jalena\" agentid=\"3012747\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005932\" locator=\"false\"/>\r\n    <row agent=\"Lysseigen Koggitta\" agentid=\"3012748\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"2\" locationid=\"60005941\" locator=\"false\"/>\r\n    <row agent=\"Gummotana Ebolfer\" agentid=\"3012749\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60005947\" locator=\"false\"/>\r\n    <row agent=\"Slals Raunard\" agentid=\"3012750\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"2\" locationid=\"60005944\" locator=\"false\"/>\r\n    <row agent=\"Skaulmur Lorntekel\" agentid=\"3012751\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005938\" locator=\"true\"/>\r\n    <row agent=\"Wlfendeldik Irfrik\" agentid=\"3012752\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"3\" locationid=\"60005935\" locator=\"false\"/>\r\n    <row agent=\"Toldori Bensar\" agentid=\"3012753\" agenttypeid=\"8\" corporationid=\"1000061\" divisionid=\"22\" level=\"5\" locationid=\"60005893\" locator=\"false\"/>\r\n    <row agent=\"Reidolf Enald\" agentid=\"3012754\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60005878\" locator=\"false\"/>\r\n    <row agent=\"Wlbrand Erkamin\" agentid=\"3012755\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60005890\" locator=\"false\"/>\r\n    <row agent=\"Uangar Kogadgill\" agentid=\"3012756\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005881\" locator=\"true\"/>\r\n    <row agent=\"Rodukar Einorgeri\" agentid=\"3012757\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60005884\" locator=\"false\"/>\r\n    <row agent=\"Eddauger Eugino\" agentid=\"3012758\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"2\" locationid=\"60005887\" locator=\"false\"/>\r\n    <row agent=\"Gorella Galedia\" agentid=\"3012759\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"2\" locationid=\"60005785\" locator=\"false\"/>\r\n    <row agent=\"Ottarsten Klen\" agentid=\"3012760\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005776\" locator=\"false\"/>\r\n    <row agent=\"Friens Drur\" agentid=\"3012761\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"4\" locationid=\"60005782\" locator=\"false\"/>\r\n    <row agent=\"Ivediok Hedrand\" agentid=\"3012762\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005779\" locator=\"false\"/>\r\n    <row agent=\"Kratide Aldiko\" agentid=\"3012763\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60006025\" locator=\"false\"/>\r\n    <row agent=\"Frendh Lanssuna\" agentid=\"3012764\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"2\" locationid=\"60006031\" locator=\"false\"/>\r\n    <row agent=\"Hektilget Rarlard\" agentid=\"3012765\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"2\" locationid=\"60006037\" locator=\"false\"/>\r\n    <row agent=\"Adden Alkwaer\" agentid=\"3012766\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"4\" locationid=\"60006028\" locator=\"false\"/>\r\n    <row agent=\"Elettan Adlistar\" agentid=\"3012767\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60006022\" locator=\"false\"/>\r\n    <row agent=\"Anstian Eymkur\" agentid=\"3012768\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"3\" locationid=\"60006034\" locator=\"false\"/>\r\n    <row agent=\"Aeswa Erdokar\" agentid=\"3012769\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005896\" locator=\"true\"/>\r\n    <row agent=\"Datitur Erien\" agentid=\"3012770\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"3\" locationid=\"60005908\" locator=\"true\"/>\r\n    <row agent=\"Todenur Histatold\" agentid=\"3012771\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005911\" locator=\"true\"/>\r\n    <row agent=\"Fusnasber Kavonemur\" agentid=\"3012772\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005899\" locator=\"false\"/>\r\n    <row agent=\"Yldik Ulyrmur\" agentid=\"3012773\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005902\" locator=\"false\"/>\r\n    <row agent=\"Erkikur Astraetin\" agentid=\"3012774\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"2\" locationid=\"60005905\" locator=\"false\"/>\r\n    <row agent=\"Olondulf Marmagur\" agentid=\"3012775\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"4\" locationid=\"60005860\" locator=\"false\"/>\r\n    <row agent=\"Omneke Egelbad\" agentid=\"3012776\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"2\" locationid=\"60005866\" locator=\"false\"/>\r\n    <row agent=\"Uansa Adgrian\" agentid=\"3012777\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"3\" locationid=\"60005872\" locator=\"true\"/>\r\n    <row agent=\"Kronketild Hadumulf\" agentid=\"3012778\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"24\" level=\"1\" locationid=\"60006040\" locator=\"false\"/>\r\n    <row agent=\"Gurneider Bei\" agentid=\"3012779\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"3\" locationid=\"60006085\" locator=\"true\"/>\r\n    <row agent=\"Wideko Leduget\" agentid=\"3012780\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"1\" locationid=\"60006082\" locator=\"false\"/>\r\n    <row agent=\"Arnhad Egnat\" agentid=\"3012781\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"3\" locationid=\"60006070\" locator=\"true\"/>\r\n    <row agent=\"Bydaren Illard\" agentid=\"3012782\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"4\" locationid=\"60006073\" locator=\"true\"/>\r\n    <row agent=\"Hagotta Klesund\" agentid=\"3012783\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"2\" locationid=\"60006046\" locator=\"false\"/>\r\n    <row agent=\"Erold Albimer\" agentid=\"3012784\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"3\" locationid=\"60006049\" locator=\"false\"/>\r\n    <row agent=\"Esko Hermyke\" agentid=\"3012785\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"3\" locationid=\"60006055\" locator=\"true\"/>\r\n    <row agent=\"Dantbeinn Tros\" agentid=\"3012786\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"4\" locationid=\"60006052\" locator=\"false\"/>\r\n    <row agent=\"Erfrim Hreld\" agentid=\"3012787\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"2\" locationid=\"60006061\" locator=\"false\"/>\r\n    <row agent=\"Reldirad Akbias\" agentid=\"3012788\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"4\" locationid=\"60006058\" locator=\"false\"/>\r\n    <row agent=\"Redirin Ilgert\" agentid=\"3012789\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"1\" locationid=\"60006088\" locator=\"false\"/>\r\n    <row agent=\"Aelwara Duld\" agentid=\"3012790\" agenttypeid=\"8\" corporationid=\"1000062\" divisionid=\"22\" level=\"5\" locationid=\"60006091\" locator=\"false\"/>\r\n    <row agent=\"Warn Urbegund\" agentid=\"3012791\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"3\" locationid=\"60006094\" locator=\"true\"/>\r\n    <row agent=\"Hobelur Lundiggur\" agentid=\"3012792\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"4\" locationid=\"60006097\" locator=\"false\"/>\r\n    <row agent=\"Eweldagger Gerbold\" agentid=\"3012793\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"2\" locationid=\"60006067\" locator=\"false\"/>\r\n    <row agent=\"Hammikfrad Eyfrata\" agentid=\"3012794\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"3\" locationid=\"60006064\" locator=\"true\"/>\r\n    <row agent=\"Bofjekar Eileikar\" agentid=\"3012795\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"3\" locationid=\"60006043\" locator=\"false\"/>\r\n    <row agent=\"Wandar Rarfani\" agentid=\"3012796\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"4\" locationid=\"60006079\" locator=\"false\"/>\r\n    <row agent=\"Angren Erhan\" agentid=\"3012797\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"1\" locationid=\"60006076\" locator=\"false\"/>\r\n    <row agent=\"Jur Nijay\" agentid=\"3012798\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"1\" locationid=\"60006100\" locator=\"false\"/>\r\n    <row agent=\"Bama Lierku\" agentid=\"3012799\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"24\" level=\"3\" locationid=\"60006154\" locator=\"false\"/>\r\n    <row agent=\"Marari Abayi\" agentid=\"3012800\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"4\" locationid=\"60006148\" locator=\"false\"/>\r\n    <row agent=\"Kimebu Andiav\" agentid=\"3012801\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"3\" locationid=\"60006151\" locator=\"true\"/>\r\n    <row agent=\"Risad Arappan\" agentid=\"3012802\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"2\" locationid=\"60006157\" locator=\"false\"/>\r\n    <row agent=\"Asomi Ebad\" agentid=\"3012803\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"2\" locationid=\"60006106\" locator=\"false\"/>\r\n    <row agent=\"Yamrih Sezhga\" agentid=\"3012804\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"2\" locationid=\"60006103\" locator=\"true\"/>\r\n    <row agent=\"Velmi Yomsasa\" agentid=\"3012805\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"2\" locationid=\"60006109\" locator=\"true\"/>\r\n    <row agent=\"Ehmuh Akhsohar\" agentid=\"3012806\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"2\" locationid=\"60006196\" locator=\"false\"/>\r\n    <row agent=\"Koohech Sadisah\" agentid=\"3012807\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"3\" locationid=\"60006205\" locator=\"false\"/>\r\n    <row agent=\"Mersan Avorah\" agentid=\"3012808\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"2\" locationid=\"60006199\" locator=\"false\"/>\r\n    <row agent=\"Farimla Yarvanu\" agentid=\"3012809\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"2\" locationid=\"60006202\" locator=\"true\"/>\r\n    <row agent=\"Karva Ahrenon\" agentid=\"3012810\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"1\" locationid=\"60006208\" locator=\"true\"/>\r\n    <row agent=\"Pakova Modun\" agentid=\"3012811\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"3\" locationid=\"60006214\" locator=\"false\"/>\r\n    <row agent=\"Metmeye Obonyabu\" agentid=\"3012812\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"2\" locationid=\"60006211\" locator=\"false\"/>\r\n    <row agent=\"Kafeus Antha\" agentid=\"3012813\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"24\" level=\"2\" locationid=\"60006217\" locator=\"false\"/>\r\n    <row agent=\"Terma Tesh\" agentid=\"3012814\" agenttypeid=\"8\" corporationid=\"1000063\" divisionid=\"23\" level=\"5\" locationid=\"60006160\" locator=\"false\"/>\r\n    <row agent=\"Razbanil Gemami\" agentid=\"3012815\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"4\" locationid=\"60006169\" locator=\"false\"/>\r\n    <row agent=\"Avenra Camalla\" agentid=\"3012816\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"1\" locationid=\"60006163\" locator=\"false\"/>\r\n    <row agent=\"Charoun Dethahal\" agentid=\"3012817\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"3\" locationid=\"60006166\" locator=\"false\"/>\r\n    <row agent=\"Shuhken Nareni\" agentid=\"3012818\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"1\" locationid=\"60006145\" locator=\"false\"/>\r\n    <row agent=\"Nase Subateni\" agentid=\"3012819\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"24\" level=\"1\" locationid=\"60006136\" locator=\"false\"/>\r\n    <row agent=\"Gala Hakesan\" agentid=\"3012820\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"4\" locationid=\"60006139\" locator=\"false\"/>\r\n    <row agent=\"Yora Namoona\" agentid=\"3012821\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"2\" locationid=\"60006142\" locator=\"false\"/>\r\n    <row agent=\"Dahyaron Zatah\" agentid=\"3012822\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"24\" level=\"4\" locationid=\"60006187\" locator=\"true\"/>\r\n    <row agent=\"Ihrnin Pasirga\" agentid=\"3012823\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"1\" locationid=\"60006193\" locator=\"false\"/>\r\n    <row agent=\"Chedo Atem\" agentid=\"3012824\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"24\" level=\"3\" locationid=\"60006184\" locator=\"true\"/>\r\n    <row agent=\"Uchian Daziasa\" agentid=\"3012825\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"1\" locationid=\"60006190\" locator=\"false\"/>\r\n    <row agent=\"Seevath Zamila\" agentid=\"3012826\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"2\" locationid=\"60006121\" locator=\"false\"/>\r\n    <row agent=\"Jindang Cimmisa\" agentid=\"3012827\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"3\" locationid=\"60006112\" locator=\"false\"/>\r\n    <row agent=\"Azzah Kanira\" agentid=\"3012828\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"1\" locationid=\"60006115\" locator=\"false\"/>\r\n    <row agent=\"Nasub Basta\" agentid=\"3012829\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"2\" locationid=\"60006118\" locator=\"false\"/>\r\n    <row agent=\"Ashyou Nasi\" agentid=\"3012830\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"1\" locationid=\"60006172\" locator=\"true\"/>\r\n    <row agent=\"Dasa Shemlas\" agentid=\"3012831\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"24\" level=\"3\" locationid=\"60006178\" locator=\"false\"/>\r\n    <row agent=\"Hahya Area\" agentid=\"3012832\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"24\" level=\"2\" locationid=\"60006175\" locator=\"false\"/>\r\n    <row agent=\"Ihres Tzirre\" agentid=\"3012833\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"3\" locationid=\"60006181\" locator=\"true\"/>\r\n    <row agent=\"Hemirin Thava\" agentid=\"3012834\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"2\" locationid=\"60006124\" locator=\"false\"/>\r\n    <row agent=\"Memass Tahara\" agentid=\"3012835\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"3\" locationid=\"60006130\" locator=\"false\"/>\r\n    <row agent=\"Mabai Efeh\" agentid=\"3012836\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"3\" locationid=\"60006127\" locator=\"false\"/>\r\n    <row agent=\"Usagbu Kanari\" agentid=\"3012837\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"4\" locationid=\"60006133\" locator=\"true\"/>\r\n    <row agent=\"Aruna Kerden\" agentid=\"3012838\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"1\" locationid=\"60006220\" locator=\"false\"/>\r\n    <row agent=\"Harmana Hefitasu\" agentid=\"3012839\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"22\" level=\"4\" locationid=\"60006226\" locator=\"true\"/>\r\n    <row agent=\"Ranhil Ghath\" agentid=\"3012840\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"1\" locationid=\"60006232\" locator=\"false\"/>\r\n    <row agent=\"Zasma Mimime\" agentid=\"3012841\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"2\" locationid=\"60006229\" locator=\"false\"/>\r\n    <row agent=\"Shach Meliri\" agentid=\"3012842\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"22\" level=\"2\" locationid=\"60006223\" locator=\"true\"/>\r\n    <row agent=\"Pisarpir Rooshan\" agentid=\"3012843\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"4\" locationid=\"60006235\" locator=\"false\"/>\r\n    <row agent=\"Mesen Ghathmik\" agentid=\"3012844\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"2\" locationid=\"60006316\" locator=\"false\"/>\r\n    <row agent=\"Qerray Cherti\" agentid=\"3012845\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"4\" locationid=\"60006313\" locator=\"true\"/>\r\n    <row agent=\"Hoteviba Balete\" agentid=\"3012846\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"3\" locationid=\"60006310\" locator=\"false\"/>\r\n    <row agent=\"Mesar Arart\" agentid=\"3012847\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"22\" level=\"2\" locationid=\"60006319\" locator=\"true\"/>\r\n    <row agent=\"Jafit Kaph\" agentid=\"3012848\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"22\" level=\"2\" locationid=\"60006322\" locator=\"false\"/>\r\n    <row agent=\"Ababa Ilnan\" agentid=\"3012849\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"2\" locationid=\"60006325\" locator=\"false\"/>\r\n    <row agent=\"Zasrike Poona\" agentid=\"3012850\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"1\" locationid=\"60006259\" locator=\"false\"/>\r\n    <row agent=\"Arayya Ilayai\" agentid=\"3012851\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"1\" locationid=\"60006265\" locator=\"false\"/>\r\n    <row agent=\"Ashrat Mod\" agentid=\"3012852\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"3\" locationid=\"60006256\" locator=\"false\"/>\r\n    <row agent=\"Rinalbab Sakuna\" agentid=\"3012853\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"22\" level=\"1\" locationid=\"60006262\" locator=\"false\"/>\r\n    <row agent=\"Kheed Hakpark\" agentid=\"3012854\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"1\" locationid=\"60006268\" locator=\"false\"/>\r\n    <row agent=\"Dinsiad Taulam\" agentid=\"3012855\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"22\" level=\"2\" locationid=\"60006271\" locator=\"false\"/>\r\n    <row agent=\"Marma Jada\" agentid=\"3012856\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"1\" locationid=\"60006373\" locator=\"false\"/>\r\n    <row agent=\"Ilisaferz Jihrahan\" agentid=\"3012857\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"1\" locationid=\"60006364\" locator=\"false\"/>\r\n    <row agent=\"Sevan Gamis\" agentid=\"3012858\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"22\" level=\"2\" locationid=\"60006370\" locator=\"true\"/>\r\n    <row agent=\"Fura Joaca\" agentid=\"3012859\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"1\" locationid=\"60006376\" locator=\"false\"/>\r\n    <row agent=\"Khadboud Bin\" agentid=\"3012860\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"2\" locationid=\"60006367\" locator=\"false\"/>\r\n    <row agent=\"Trana Arvab\" agentid=\"3012861\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"3\" locationid=\"60006379\" locator=\"false\"/>\r\n    <row agent=\"Iasah Keginu\" agentid=\"3012862\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"4\" locationid=\"60006304\" locator=\"false\"/>\r\n    <row agent=\"Girned Suzihyaz\" agentid=\"3012863\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"3\" locationid=\"60006292\" locator=\"false\"/>\r\n    <row agent=\"Etsyah Labih\" agentid=\"3012864\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"1\" locationid=\"60006295\" locator=\"false\"/>\r\n    <row agent=\"Sharzad Eramikagh\" agentid=\"3012865\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"22\" level=\"4\" locationid=\"60006298\" locator=\"false\"/>\r\n    <row agent=\"Aher Shevooz\" agentid=\"3012866\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"3\" locationid=\"60006301\" locator=\"false\"/>\r\n    <row agent=\"Ivooda Gamusa\" agentid=\"3012867\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"4\" locationid=\"60006307\" locator=\"true\"/>\r\n    <row agent=\"Raleya Inkaseemie\" agentid=\"3012868\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"1\" locationid=\"60006346\" locator=\"false\"/>\r\n    <row agent=\"Pedoorah Dedan\" agentid=\"3012869\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"1\" locationid=\"60006349\" locator=\"false\"/>\r\n    <row agent=\"Harvestih Maji\" agentid=\"3012870\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"22\" level=\"1\" locationid=\"60006352\" locator=\"false\"/>\r\n    <row agent=\"Ramerar Serot\" agentid=\"3012871\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"22\" level=\"2\" locationid=\"60006355\" locator=\"false\"/>\r\n    <row agent=\"Puswa Bonaskan\" agentid=\"3012872\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"3\" locationid=\"60006358\" locator=\"false\"/>\r\n    <row agent=\"Areez Alnernouh\" agentid=\"3012873\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"22\" level=\"2\" locationid=\"60006361\" locator=\"false\"/>\r\n    <row agent=\"Thappa Neesher\" agentid=\"3012874\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"2\" locationid=\"60006331\" locator=\"false\"/>\r\n    <row agent=\"Zegon Gairdefe\" agentid=\"3012875\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"2\" locationid=\"60006334\" locator=\"false\"/>\r\n    <row agent=\"Nevooman Soscam\" agentid=\"3012876\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"22\" level=\"1\" locationid=\"60006337\" locator=\"true\"/>\r\n    <row agent=\"Yekatah Naman\" agentid=\"3012877\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"4\" locationid=\"60006328\" locator=\"true\"/>\r\n    <row agent=\"Tid Amruros\" agentid=\"3012878\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"2\" locationid=\"60006340\" locator=\"false\"/>\r\n    <row agent=\"Taireyi Tilam\" agentid=\"3012879\" agenttypeid=\"8\" corporationid=\"1000064\" divisionid=\"23\" level=\"5\" locationid=\"60006343\" locator=\"false\"/>\r\n    <row agent=\"Deen Madselkika\" agentid=\"3012880\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"1\" locationid=\"60006238\" locator=\"true\"/>\r\n    <row agent=\"Sihsad Aphuka\" agentid=\"3012881\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"4\" locationid=\"60006250\" locator=\"true\"/>\r\n    <row agent=\"Erghir Paja\" agentid=\"3012882\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"2\" locationid=\"60006241\" locator=\"false\"/>\r\n    <row agent=\"Bummiri Nadaneh\" agentid=\"3012883\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"4\" locationid=\"60006244\" locator=\"false\"/>\r\n    <row agent=\"Yoti Yahta\" agentid=\"3012884\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"1\" locationid=\"60006247\" locator=\"false\"/>\r\n    <row agent=\"Jalshinden Sharemi\" agentid=\"3012885\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"4\" locationid=\"60006253\" locator=\"false\"/>\r\n    <row agent=\"Zaiden Tatsa\" agentid=\"3012886\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"2\" locationid=\"60006277\" locator=\"false\"/>\r\n    <row agent=\"Jesahek Garan\" agentid=\"3012887\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"22\" level=\"2\" locationid=\"60006280\" locator=\"false\"/>\r\n    <row agent=\"Araral Joase\" agentid=\"3012888\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"2\" locationid=\"60006274\" locator=\"false\"/>\r\n    <row agent=\"Kilures Massih\" agentid=\"3012889\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"1\" locationid=\"60006283\" locator=\"false\"/>\r\n    <row agent=\"Buza Bubsama\" agentid=\"3012890\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"1\" locationid=\"60006286\" locator=\"true\"/>\r\n    <row agent=\"Path Almananeg\" agentid=\"3012891\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"2\" locationid=\"60006289\" locator=\"true\"/>\r\n    <row agent=\"Lipreneh Bela\" agentid=\"3012892\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"2\" locationid=\"60006382\" locator=\"false\"/>\r\n    <row agent=\"Shiv Fasi\" agentid=\"3012893\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"1\" locationid=\"60006388\" locator=\"false\"/>\r\n    <row agent=\"Uanersen Ashenout\" agentid=\"3012894\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"4\" locationid=\"60006394\" locator=\"false\"/>\r\n    <row agent=\"Hadah Bulidar\" agentid=\"3012895\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"22\" level=\"1\" locationid=\"60006391\" locator=\"false\"/>\r\n    <row agent=\"Noama Toomaniar\" agentid=\"3012896\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"4\" locationid=\"60006397\" locator=\"true\"/>\r\n    <row agent=\"Arveler Ihra\" agentid=\"3012897\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"1\" locationid=\"60006385\" locator=\"false\"/>\r\n    <row agent=\"Vorayi Hina\" agentid=\"3012898\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"24\" level=\"1\" locationid=\"60006400\" locator=\"false\"/>\r\n    <row agent=\"Zindahy Olnabim\" agentid=\"3012899\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"24\" level=\"1\" locationid=\"60006484\" locator=\"false\"/>\r\n    <row agent=\"Huthin Maja\" agentid=\"3012900\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"1\" locationid=\"60006487\" locator=\"false\"/>\r\n    <row agent=\"Shehset Aven\" agentid=\"3012901\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"4\" locationid=\"60006550\" locator=\"false\"/>\r\n    <row agent=\"Banaka Mayani\" agentid=\"3012902\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"2\" locationid=\"60006547\" locator=\"false\"/>\r\n    <row agent=\"Khadark Danel\" agentid=\"3012903\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"1\" locationid=\"60006526\" locator=\"false\"/>\r\n    <row agent=\"Pouyi Karesha\" agentid=\"3012904\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"2\" locationid=\"60006520\" locator=\"true\"/>\r\n    <row agent=\"Gideka Mabebu\" agentid=\"3012905\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"4\" locationid=\"60006529\" locator=\"true\"/>\r\n    <row agent=\"Ashon Adanda\" agentid=\"3012906\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"2\" locationid=\"60006523\" locator=\"false\"/>\r\n    <row agent=\"Odreluk Edit\" agentid=\"3012907\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"2\" locationid=\"60006508\" locator=\"false\"/>\r\n    <row agent=\"Donsenia Gamzol\" agentid=\"3012908\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"2\" locationid=\"60006514\" locator=\"true\"/>\r\n    <row agent=\"Ekin Auriryom\" agentid=\"3012909\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"24\" level=\"1\" locationid=\"60006517\" locator=\"false\"/>\r\n    <row agent=\"Msafsan Zilattir\" agentid=\"3012910\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"2\" locationid=\"60006511\" locator=\"false\"/>\r\n    <row agent=\"Jihrahan Niyarrakaka\" agentid=\"3012911\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"1\" locationid=\"60006436\" locator=\"false\"/>\r\n    <row agent=\"Noubipin Nodrafshus\" agentid=\"3012912\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"4\" locationid=\"60006442\" locator=\"true\"/>\r\n    <row agent=\"Ghaimi Hazaza\" agentid=\"3012913\" agenttypeid=\"8\" corporationid=\"1000065\" divisionid=\"24\" level=\"5\" locationid=\"60006445\" locator=\"false\"/>\r\n    <row agent=\"Sousri Unnoba\" agentid=\"3012914\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"3\" locationid=\"60006439\" locator=\"true\"/>\r\n    <row agent=\"Ranahis Moumou\" agentid=\"3012915\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"1\" locationid=\"60006556\" locator=\"false\"/>\r\n    <row agent=\"Gelamem Yabastna\" agentid=\"3012916\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"3\" locationid=\"60006559\" locator=\"false\"/>\r\n    <row agent=\"Rezini Ehrokiah\" agentid=\"3012917\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"4\" locationid=\"60006562\" locator=\"false\"/>\r\n    <row agent=\"Aramin Tarid\" agentid=\"3012918\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"24\" level=\"4\" locationid=\"60006565\" locator=\"true\"/>\r\n    <row agent=\"Anomun Sasama\" agentid=\"3012919\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"2\" locationid=\"60006406\" locator=\"true\"/>\r\n    <row agent=\"Latari Vahsha\" agentid=\"3012920\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"24\" level=\"1\" locationid=\"60006409\" locator=\"false\"/>\r\n    <row agent=\"Sahmotir Sobir\" agentid=\"3012921\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"24\" level=\"4\" locationid=\"60006403\" locator=\"true\"/>\r\n    <row agent=\"Baze Atsa\" agentid=\"3012922\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"24\" level=\"2\" locationid=\"60006412\" locator=\"true\"/>\r\n    <row agent=\"Temer Ihomit\" agentid=\"3012923\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"2\" locationid=\"60006421\" locator=\"false\"/>\r\n    <row agent=\"Ernait Antha\" agentid=\"3012924\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"1\" locationid=\"60006415\" locator=\"false\"/>\r\n    <row agent=\"Mosis Chizzima\" agentid=\"3012925\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"2\" locationid=\"60006418\" locator=\"true\"/>\r\n    <row agent=\"Rodani Orgihna\" agentid=\"3012926\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"2\" locationid=\"60006451\" locator=\"false\"/>\r\n    <row agent=\"Kamarbha Gaha\" agentid=\"3012927\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"1\" locationid=\"60006457\" locator=\"false\"/>\r\n    <row agent=\"Nazaisa Yarvanu\" agentid=\"3012928\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"3\" locationid=\"60006454\" locator=\"false\"/>\r\n    <row agent=\"Amshod Shithen\" agentid=\"3012929\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"1\" locationid=\"60006448\" locator=\"false\"/>\r\n    <row agent=\"Avingazit Shalah\" agentid=\"3012930\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"24\" level=\"4\" locationid=\"60006568\" locator=\"true\"/>\r\n    <row agent=\"Moomban Alouzar\" agentid=\"3012931\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"3\" locationid=\"60006574\" locator=\"true\"/>\r\n    <row agent=\"Leng Ahra\" agentid=\"3012932\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"1\" locationid=\"60006577\" locator=\"false\"/>\r\n    <row agent=\"Ihih Souli\" agentid=\"3012933\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"24\" level=\"4\" locationid=\"60006571\" locator=\"true\"/>\r\n    <row agent=\"Pakazdeem Melad\" agentid=\"3012934\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"2\" locationid=\"60006493\" locator=\"true\"/>\r\n    <row agent=\"Adevid Romomeh\" agentid=\"3012935\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"2\" locationid=\"60006490\" locator=\"false\"/>\r\n    <row agent=\"Nania Phasas\" agentid=\"3012936\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"1\" locationid=\"60006424\" locator=\"false\"/>\r\n    <row agent=\"Pavana Innoor\" agentid=\"3012937\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"3\" locationid=\"60006430\" locator=\"false\"/>\r\n    <row agent=\"Khelirerasa Yifa\" agentid=\"3012938\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"24\" level=\"3\" locationid=\"60006433\" locator=\"false\"/>\r\n    <row agent=\"Fehela Zassalou\" agentid=\"3012939\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"1\" locationid=\"60006427\" locator=\"false\"/>\r\n    <row agent=\"Eband Semasserire\" agentid=\"3012940\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"3\" locationid=\"60006463\" locator=\"false\"/>\r\n    <row agent=\"Zamadi Halada\" agentid=\"3012941\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"2\" locationid=\"60006466\" locator=\"false\"/>\r\n    <row agent=\"Panu Iosos\" agentid=\"3012942\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"1\" locationid=\"60006469\" locator=\"false\"/>\r\n    <row agent=\"Iavsar Thohas\" agentid=\"3012943\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"3\" locationid=\"60006460\" locator=\"false\"/>\r\n    <row agent=\"Hamiahoor Kou\" agentid=\"3012944\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"2\" locationid=\"60006496\" locator=\"false\"/>\r\n    <row agent=\"Sassanan Jerour\" agentid=\"3012945\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"4\" locationid=\"60006499\" locator=\"false\"/>\r\n    <row agent=\"Shahmani Damoh\" agentid=\"3012946\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"2\" locationid=\"60006505\" locator=\"false\"/>\r\n    <row agent=\"Parges Astu\" agentid=\"3012947\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"2\" locationid=\"60006502\" locator=\"false\"/>\r\n    <row agent=\"Ashabes Taheli\" agentid=\"3012948\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"1\" locationid=\"60006535\" locator=\"false\"/>\r\n    <row agent=\"Ovat Ikora\" agentid=\"3012949\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"1\" locationid=\"60006541\" locator=\"false\"/>\r\n    <row agent=\"Chanamu Arhat\" agentid=\"3012950\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"1\" locationid=\"60006532\" locator=\"false\"/>\r\n    <row agent=\"Jacheed Yalia\" agentid=\"3012951\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"2\" locationid=\"60006538\" locator=\"false\"/>\r\n    <row agent=\"Yahiad Joas\" agentid=\"3012952\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"1\" locationid=\"60006472\" locator=\"false\"/>\r\n    <row agent=\"Odeta Madoman\" agentid=\"3012953\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"1\" locationid=\"60006475\" locator=\"false\"/>\r\n    <row agent=\"Kooreng Lami\" agentid=\"3012954\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"3\" locationid=\"60006478\" locator=\"false\"/>\r\n    <row agent=\"Ekoshame Taselem\" agentid=\"3012955\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"2\" locationid=\"60006481\" locator=\"true\"/>\r\n    <row agent=\"Aviantal Neme\" agentid=\"3012956\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"2\" locationid=\"60006544\" locator=\"false\"/>\r\n    <row agent=\"Naka Tona\" agentid=\"3012957\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"1\" locationid=\"60006553\" locator=\"false\"/>\r\n    <row agent=\"Naruppad Shiamsar\" agentid=\"3012958\" agenttypeid=\"2\" corporationid=\"1000066\" divisionid=\"24\" level=\"1\" locationid=\"60006580\" locator=\"false\"/>\r\n    <row agent=\"Zatamaka Bammohy\" agentid=\"3012959\" agenttypeid=\"2\" corporationid=\"1000066\" divisionid=\"22\" level=\"2\" locationid=\"60006598\" locator=\"false\"/>\r\n    <row agent=\"Mengoul Yak\" agentid=\"3012960\" agenttypeid=\"2\" corporationid=\"1000066\" divisionid=\"22\" level=\"1\" locationid=\"60006601\" locator=\"false\"/>\r\n    <row agent=\"Mibayeh Arsheh\" agentid=\"3012961\" agenttypeid=\"2\" corporationid=\"1000066\" divisionid=\"22\" level=\"2\" locationid=\"60006604\" locator=\"false\"/>\r\n    <row agent=\"Ipar Abityeda\" agentid=\"3012962\" agenttypeid=\"2\" corporationid=\"1000066\" divisionid=\"22\" level=\"2\" locationid=\"60006586\" locator=\"false\"/>\r\n    <row agent=\"Keseya Falian\" agentid=\"3012963\" agenttypeid=\"4\" corporationid=\"1000066\" divisionid=\"18\" level=\"2\" locationid=\"60006583\" locator=\"false\"/>\r\n    <row agent=\"Marasa Mehankhi\" agentid=\"3012964\" agenttypeid=\"2\" corporationid=\"1000066\" divisionid=\"22\" level=\"4\" locationid=\"60006592\" locator=\"true\"/>\r\n    <row agent=\"Sanjerou Umenod\" agentid=\"3012965\" agenttypeid=\"2\" corporationid=\"1000066\" divisionid=\"22\" level=\"3\" locationid=\"60006589\" locator=\"false\"/>\r\n    <row agent=\"Khiandih Horadran\" agentid=\"3012966\" agenttypeid=\"2\" corporationid=\"1000066\" divisionid=\"22\" level=\"1\" locationid=\"60006595\" locator=\"false\"/>\r\n    <row agent=\"Mahrded Mareer\" agentid=\"3012967\" agenttypeid=\"2\" corporationid=\"1000066\" divisionid=\"22\" level=\"3\" locationid=\"60006607\" locator=\"true\"/>\r\n    <row agent=\"Fidi Folan\" agentid=\"3012968\" agenttypeid=\"2\" corporationid=\"1000066\" divisionid=\"22\" level=\"4\" locationid=\"60006610\" locator=\"false\"/>\r\n    <row agent=\"Argoramed Barermam\" agentid=\"3012969\" agenttypeid=\"8\" corporationid=\"1000066\" divisionid=\"24\" level=\"5\" locationid=\"60006613\" locator=\"false\"/>\r\n    <row agent=\"Boraru Dotath\" agentid=\"3012970\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"1\" locationid=\"60006616\" locator=\"false\"/>\r\n    <row agent=\"Karmih Kaman\" agentid=\"3012971\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"2\" locationid=\"60006727\" locator=\"false\"/>\r\n    <row agent=\"Nokhoni Pasio\" agentid=\"3012972\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"4\" locationid=\"60006730\" locator=\"true\"/>\r\n    <row agent=\"Befshen Hunia\" agentid=\"3012973\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"4\" locationid=\"60006724\" locator=\"false\"/>\r\n    <row agent=\"Thoran Zeraru\" agentid=\"3012974\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"2\" locationid=\"60006733\" locator=\"false\"/>\r\n    <row agent=\"Jastu Hemirin\" agentid=\"3012975\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"1\" locationid=\"60006694\" locator=\"false\"/>\r\n    <row agent=\"Kartan Osaeed\" agentid=\"3012976\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"2\" locationid=\"60006697\" locator=\"false\"/>\r\n    <row agent=\"Sragu Hatar\" agentid=\"3012977\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"2\" locationid=\"60006688\" locator=\"false\"/>\r\n    <row agent=\"Tasara Athasho\" agentid=\"3012978\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"2\" locationid=\"60006691\" locator=\"false\"/>\r\n    <row agent=\"Shimu Bhiakhan\" agentid=\"3012979\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"3\" locationid=\"60006619\" locator=\"false\"/>\r\n    <row agent=\"Hezima Metsyahr\" agentid=\"3012980\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"4\" locationid=\"60006622\" locator=\"false\"/>\r\n    <row agent=\"Semtaph Arzieh\" agentid=\"3012981\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"2\" locationid=\"60006625\" locator=\"false\"/>\r\n    <row agent=\"Charta Arot\" agentid=\"3012982\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"2\" locationid=\"60006652\" locator=\"false\"/>\r\n    <row agent=\"Yapetou Piki\" agentid=\"3012983\" agenttypeid=\"8\" corporationid=\"1000067\" divisionid=\"24\" level=\"5\" locationid=\"60006655\" locator=\"false\"/>\r\n    <row agent=\"Ikemin Sandanat\" agentid=\"3012984\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"2\" locationid=\"60006661\" locator=\"true\"/>\r\n    <row agent=\"Azen Ankigher\" agentid=\"3012985\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"1\" locationid=\"60006658\" locator=\"false\"/>\r\n    <row agent=\"Pouphass Kabo\" agentid=\"3012986\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"1\" locationid=\"60006712\" locator=\"false\"/>\r\n    <row agent=\"Shazhdas Ajonar\" agentid=\"3012987\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"3\" locationid=\"60006715\" locator=\"false\"/>\r\n    <row agent=\"Malatha Sherit\" agentid=\"3012988\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"2\" locationid=\"60006718\" locator=\"true\"/>\r\n    <row agent=\"Watoden Atton\" agentid=\"3012989\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"3\" locationid=\"60006721\" locator=\"false\"/>\r\n    <row agent=\"Nakid Yazakeb\" agentid=\"3012990\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"2\" locationid=\"60006667\" locator=\"false\"/>\r\n    <row agent=\"Jilaz Firo\" agentid=\"3012991\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"3\" locationid=\"60006670\" locator=\"false\"/>\r\n    <row agent=\"Hendri Eriona\" agentid=\"3012992\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"1\" locationid=\"60006673\" locator=\"false\"/>\r\n    <row agent=\"Mehraka Irush\" agentid=\"3012993\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"3\" locationid=\"60006664\" locator=\"false\"/>\r\n    <row agent=\"Aimal Erza\" agentid=\"3012994\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"1\" locationid=\"60006682\" locator=\"false\"/>\r\n    <row agent=\"Ahzi Osaeed\" agentid=\"3012995\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"3\" locationid=\"60006676\" locator=\"true\"/>\r\n    <row agent=\"Fassara Shehila\" agentid=\"3012996\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"4\" locationid=\"60006679\" locator=\"true\"/>\r\n    <row agent=\"At Aredan\" agentid=\"3012997\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"2\" locationid=\"60006685\" locator=\"false\"/>\r\n    <row agent=\"Etalaid Pajteh\" agentid=\"3012998\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"1\" locationid=\"60006646\" locator=\"false\"/>\r\n    <row agent=\"Momekoun Sekas\" agentid=\"3012999\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"2\" locationid=\"60006649\" locator=\"false\"/>\r\n    <row agent=\"Agalen Ilisaferz\" agentid=\"3013000\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"1\" locationid=\"60006643\" locator=\"false\"/>\r\n    <row agent=\"Zimse Akarran\" agentid=\"3013001\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"1\" locationid=\"60006640\" locator=\"false\"/>\r\n    <row agent=\"Mahnishi Thubaim\" agentid=\"3013002\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"4\" locationid=\"60006628\" locator=\"false\"/>\r\n    <row agent=\"Burili Donenem\" agentid=\"3013003\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"3\" locationid=\"60006637\" locator=\"false\"/>\r\n    <row agent=\"Hirasez Nedin\" agentid=\"3013004\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"3\" locationid=\"60006631\" locator=\"false\"/>\r\n    <row agent=\"Tzahri Veki\" agentid=\"3013005\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"3\" locationid=\"60006634\" locator=\"false\"/>\r\n    <row agent=\"Asonem Mezoot\" agentid=\"3013006\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"2\" locationid=\"60006700\" locator=\"false\"/>\r\n    <row agent=\"Shila Msina\" agentid=\"3013007\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"1\" locationid=\"60006706\" locator=\"false\"/>\r\n    <row agent=\"Jaliri Gavan\" agentid=\"3013008\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"2\" locationid=\"60006709\" locator=\"false\"/>\r\n    <row agent=\"Akhinan Pazapi\" agentid=\"3013009\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"1\" locationid=\"60006703\" locator=\"false\"/>\r\n    <row agent=\"Iscar Neden\" agentid=\"3013010\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"23\" level=\"1\" locationid=\"60006736\" locator=\"false\"/>\r\n    <row agent=\"Domous Jashzieh\" agentid=\"3013011\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"23\" level=\"4\" locationid=\"60006739\" locator=\"false\"/>\r\n    <row agent=\"Sohadoor Noona\" agentid=\"3013012\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"23\" level=\"3\" locationid=\"60006742\" locator=\"false\"/>\r\n    <row agent=\"Inoohion Eveh\" agentid=\"3013013\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"23\" level=\"3\" locationid=\"60006745\" locator=\"true\"/>\r\n    <row agent=\"Ibed Bemoumouf\" agentid=\"3013014\" agenttypeid=\"8\" corporationid=\"1000068\" divisionid=\"23\" level=\"5\" locationid=\"60006748\" locator=\"false\"/>\r\n    <row agent=\"Sarrir Rimai\" agentid=\"3013015\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"22\" level=\"2\" locationid=\"60006751\" locator=\"false\"/>\r\n    <row agent=\"Elna Unirdi\" agentid=\"3013016\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"23\" level=\"4\" locationid=\"60006763\" locator=\"false\"/>\r\n    <row agent=\"Ralchen Nakoon\" agentid=\"3013017\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"23\" level=\"1\" locationid=\"60006769\" locator=\"false\"/>\r\n    <row agent=\"Mani Atep\" agentid=\"3013018\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"23\" level=\"2\" locationid=\"60006766\" locator=\"false\"/>\r\n    <row agent=\"Haromi Ovat\" agentid=\"3013019\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"23\" level=\"3\" locationid=\"60006757\" locator=\"false\"/>\r\n    <row agent=\"Asoone Parmana\" agentid=\"3013020\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"23\" level=\"1\" locationid=\"60006760\" locator=\"false\"/>\r\n    <row agent=\"Ertosh Elnah\" agentid=\"3013021\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"23\" level=\"4\" locationid=\"60006754\" locator=\"true\"/>\r\n    <row agent=\"Muhmar Roda\" agentid=\"3013022\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"1\" locationid=\"60006772\" locator=\"false\"/>\r\n    <row agent=\"Nere Chagasal\" agentid=\"3013023\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"2\" locationid=\"60006883\" locator=\"false\"/>\r\n    <row agent=\"Zalmer Shara\" agentid=\"3013024\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"24\" level=\"2\" locationid=\"60006886\" locator=\"false\"/>\r\n    <row agent=\"Sapar Farorad\" agentid=\"3013025\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"24\" level=\"3\" locationid=\"60006880\" locator=\"false\"/>\r\n    <row agent=\"Beri Galted\" agentid=\"3013026\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"24\" level=\"1\" locationid=\"60006856\" locator=\"false\"/>\r\n    <row agent=\"Mariu Karia\" agentid=\"3013027\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"22\" level=\"2\" locationid=\"60006853\" locator=\"false\"/>\r\n    <row agent=\"Shikmi Vazemun\" agentid=\"3013028\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"2\" locationid=\"60006859\" locator=\"false\"/>\r\n    <row agent=\"Neirang Shoondas\" agentid=\"3013029\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"3\" locationid=\"60006844\" locator=\"false\"/>\r\n    <row agent=\"Reki Shushayahlou\" agentid=\"3013030\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"2\" locationid=\"60006847\" locator=\"false\"/>\r\n    <row agent=\"Mufamuri Aleka\" agentid=\"3013031\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"24\" level=\"2\" locationid=\"60006850\" locator=\"false\"/>\r\n    <row agent=\"Shena Gashula\" agentid=\"3013032\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"1\" locationid=\"60006778\" locator=\"false\"/>\r\n    <row agent=\"Mairil Sarileh\" agentid=\"3013033\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"24\" level=\"2\" locationid=\"60006775\" locator=\"false\"/>\r\n    <row agent=\"Mariam Iaokin\" agentid=\"3013034\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"2\" locationid=\"60006808\" locator=\"true\"/>\r\n    <row agent=\"Yargeh Mazehit\" agentid=\"3013035\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"22\" level=\"4\" locationid=\"60006814\" locator=\"false\"/>\r\n    <row agent=\"Pani Mis\" agentid=\"3013036\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"4\" locationid=\"60006811\" locator=\"false\"/>\r\n    <row agent=\"Sahia Mikase\" agentid=\"3013037\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"2\" locationid=\"60006832\" locator=\"false\"/>\r\n    <row agent=\"Kiadi Sharada\" agentid=\"3013038\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"3\" locationid=\"60006826\" locator=\"true\"/>\r\n    <row agent=\"Yoduzer Afsha\" agentid=\"3013039\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"1\" locationid=\"60006829\" locator=\"false\"/>\r\n    <row agent=\"Zesrada Halake\" agentid=\"3013040\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"2\" locationid=\"60006784\" locator=\"false\"/>\r\n    <row agent=\"Armanad Restid\" agentid=\"3013041\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"2\" locationid=\"60006787\" locator=\"false\"/>\r\n    <row agent=\"Hanushod Maru\" agentid=\"3013042\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"2\" locationid=\"60006781\" locator=\"false\"/>\r\n    <row agent=\"Anad Hobrork\" agentid=\"3013043\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"24\" level=\"4\" locationid=\"60006904\" locator=\"false\"/>\r\n    <row agent=\"Mihbanal Arveyil\" agentid=\"3013044\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"24\" level=\"2\" locationid=\"60006898\" locator=\"false\"/>\r\n    <row agent=\"Chalhakabk Menatrah\" agentid=\"3013045\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"2\" locationid=\"60006901\" locator=\"false\"/>\r\n    <row agent=\"Ram Oshal\" agentid=\"3013046\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"2\" locationid=\"60006874\" locator=\"false\"/>\r\n    <row agent=\"Javira Fonoush\" agentid=\"3013047\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"22\" level=\"4\" locationid=\"60006871\" locator=\"false\"/>\r\n    <row agent=\"Khethemandoo Heilash\" agentid=\"3013048\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"2\" locationid=\"60006877\" locator=\"false\"/>\r\n    <row agent=\"Harlashen Nakari\" agentid=\"3013049\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"24\" level=\"3\" locationid=\"60006835\" locator=\"false\"/>\r\n    <row agent=\"Youd Maruke\" agentid=\"3013050\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"24\" level=\"3\" locationid=\"60006838\" locator=\"true\"/>\r\n    <row agent=\"Rahyah Ohsheh\" agentid=\"3013051\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"3\" locationid=\"60006841\" locator=\"true\"/>\r\n    <row agent=\"Jofan Akmate\" agentid=\"3013052\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"24\" level=\"1\" locationid=\"60006799\" locator=\"false\"/>\r\n    <row agent=\"Mouki Omigiav\" agentid=\"3013053\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"22\" level=\"2\" locationid=\"60006805\" locator=\"false\"/>\r\n    <row agent=\"Oloug Dakha\" agentid=\"3013054\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"1\" locationid=\"60006802\" locator=\"false\"/>\r\n    <row agent=\"Chaiti Kurhik\" agentid=\"3013055\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"3\" locationid=\"60006817\" locator=\"false\"/>\r\n    <row agent=\"Kazzi Chatra\" agentid=\"3013056\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"3\" locationid=\"60006823\" locator=\"true\"/>\r\n    <row agent=\"Senzait Peyvabit\" agentid=\"3013057\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"3\" locationid=\"60006820\" locator=\"false\"/>\r\n    <row agent=\"Tilnar Bhoosh\" agentid=\"3013058\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"2\" locationid=\"60006862\" locator=\"true\"/>\r\n    <row agent=\"Gala Tasrel\" agentid=\"3013059\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"3\" locationid=\"60006868\" locator=\"false\"/>\r\n    <row agent=\"Nustich Rakolyor\" agentid=\"3013060\" agenttypeid=\"8\" corporationid=\"1000069\" divisionid=\"23\" level=\"5\" locationid=\"60006865\" locator=\"false\"/>\r\n    <row agent=\"Harhiri Udive\" agentid=\"3013061\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"3\" locationid=\"60006889\" locator=\"true\"/>\r\n    <row agent=\"Benura Annaeel\" agentid=\"3013062\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"1\" locationid=\"60006895\" locator=\"false\"/>\r\n    <row agent=\"Dede Aphrez\" agentid=\"3013063\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"2\" locationid=\"60006892\" locator=\"false\"/>\r\n    <row agent=\"Benura Hinnol\" agentid=\"3013064\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"1\" locationid=\"60006793\" locator=\"false\"/>\r\n    <row agent=\"Areru Arelim\" agentid=\"3013065\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"1\" locationid=\"60006796\" locator=\"false\"/>\r\n    <row agent=\"Snosha Ashafet\" agentid=\"3013066\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"4\" locationid=\"60006790\" locator=\"false\"/>\r\n    <row agent=\"Sharbedi Cherad\" agentid=\"3013067\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"1\" locationid=\"60006907\" locator=\"true\"/>\r\n    <row agent=\"Gara Nielon\" agentid=\"3013068\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"2\" locationid=\"60006916\" locator=\"false\"/>\r\n    <row agent=\"Alad Sabounrang\" agentid=\"3013069\" agenttypeid=\"8\" corporationid=\"1000070\" divisionid=\"23\" level=\"5\" locationid=\"60006919\" locator=\"false\"/>\r\n    <row agent=\"Saru Mataka\" agentid=\"3013070\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"4\" locationid=\"60006922\" locator=\"false\"/>\r\n    <row agent=\"Mafa Ghalbomen\" agentid=\"3013071\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"3\" locationid=\"60006925\" locator=\"false\"/>\r\n    <row agent=\"Pelmiti Bovi\" agentid=\"3013072\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"3\" locationid=\"60006931\" locator=\"false\"/>\r\n    <row agent=\"Azedi Jihyetu\" agentid=\"3013073\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"1\" locationid=\"60006928\" locator=\"false\"/>\r\n    <row agent=\"Shart Ahrzusoh\" agentid=\"3013074\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"1\" locationid=\"60006910\" locator=\"false\"/>\r\n    <row agent=\"Jeth Yehru\" agentid=\"3013075\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"3\" locationid=\"60006913\" locator=\"true\"/>\r\n    <row agent=\"Snosha Sormarouz\" agentid=\"3013076\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"2\" locationid=\"60006934\" locator=\"false\"/>\r\n    <row agent=\"Naphi Ahnin\" agentid=\"3013077\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"3\" locationid=\"60006937\" locator=\"true\"/>\r\n    <row agent=\"Namail Jasi\" agentid=\"3013078\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"4\" locationid=\"60006940\" locator=\"false\"/>\r\n    <row agent=\"Quibih Sivaven\" agentid=\"3013079\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"22\" level=\"1\" locationid=\"60006943\" locator=\"false\"/>\r\n    <row agent=\"Mabat Araza\" agentid=\"3013080\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"22\" level=\"3\" locationid=\"60006964\" locator=\"false\"/>\r\n    <row agent=\"Sussik Nunema\" agentid=\"3013081\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"22\" level=\"4\" locationid=\"60006961\" locator=\"false\"/>\r\n    <row agent=\"Uchat Aharalel\" agentid=\"3013082\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"22\" level=\"3\" locationid=\"60006994\" locator=\"false\"/>\r\n    <row agent=\"Yithmi Vis\" agentid=\"3013083\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"24\" level=\"2\" locationid=\"60006991\" locator=\"true\"/>\r\n    <row agent=\"Abrikoum Arvarz\" agentid=\"3013084\" agenttypeid=\"8\" corporationid=\"1000071\" divisionid=\"22\" level=\"5\" locationid=\"60006958\" locator=\"false\"/>\r\n    <row agent=\"Molabon Jadak\" agentid=\"3013085\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"22\" level=\"2\" locationid=\"60006955\" locator=\"true\"/>\r\n    <row agent=\"Chishazam Jiradal\" agentid=\"3013086\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"22\" level=\"2\" locationid=\"60006979\" locator=\"false\"/>\r\n    <row agent=\"Aded Heresa\" agentid=\"3013087\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"22\" level=\"1\" locationid=\"60006982\" locator=\"false\"/>\r\n    <row agent=\"Okoka Jehninth\" agentid=\"3013088\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"22\" level=\"2\" locationid=\"60006946\" locator=\"false\"/>\r\n    <row agent=\"Hirvala Ganidil\" agentid=\"3013089\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"24\" level=\"2\" locationid=\"60006949\" locator=\"false\"/>\r\n    <row agent=\"Arehma Ahizah\" agentid=\"3013090\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"24\" level=\"3\" locationid=\"60006952\" locator=\"false\"/>\r\n    <row agent=\"Aliana Serolel\" agentid=\"3013091\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"22\" level=\"4\" locationid=\"60006973\" locator=\"false\"/>\r\n    <row agent=\"Iaokib Uanen\" agentid=\"3013092\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"22\" level=\"2\" locationid=\"60006976\" locator=\"false\"/>\r\n    <row agent=\"Shiho Akarran\" agentid=\"3013093\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"22\" level=\"2\" locationid=\"60006997\" locator=\"false\"/>\r\n    <row agent=\"Ershirar Khalshec\" agentid=\"3013094\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"22\" level=\"3\" locationid=\"60007000\" locator=\"false\"/>\r\n    <row agent=\"Pamamer Yitamos\" agentid=\"3013095\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"22\" level=\"4\" locationid=\"60006970\" locator=\"false\"/>\r\n    <row agent=\"Ansasos Hihara\" agentid=\"3013096\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"22\" level=\"3\" locationid=\"60006967\" locator=\"true\"/>\r\n    <row agent=\"Amarah Kasa\" agentid=\"3013097\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"22\" level=\"4\" locationid=\"60006985\" locator=\"false\"/>\r\n    <row agent=\"Tava Manozat\" agentid=\"3013098\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"22\" level=\"1\" locationid=\"60006988\" locator=\"false\"/>\r\n    <row agent=\"Gidleshata Nos\" agentid=\"3013099\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"1\" locationid=\"60007003\" locator=\"true\"/>\r\n    <row agent=\"Himos Patayi\" agentid=\"3013100\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"4\" locationid=\"60007087\" locator=\"false\"/>\r\n    <row agent=\"Shimaya Fislir\" agentid=\"3013101\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007075\" locator=\"false\"/>\r\n    <row agent=\"Bah Shastina\" agentid=\"3013102\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"2\" locationid=\"60007072\" locator=\"false\"/>\r\n    <row agent=\"Shoukalla Itshad\" agentid=\"3013103\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"4\" locationid=\"60007057\" locator=\"true\"/>\r\n    <row agent=\"Sheyora Noasi\" agentid=\"3013104\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"3\" locationid=\"60007063\" locator=\"false\"/>\r\n    <row agent=\"Astarat Savena\" agentid=\"3013105\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007069\" locator=\"false\"/>\r\n    <row agent=\"Atetian Neyan\" agentid=\"3013106\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"2\" locationid=\"60007093\" locator=\"true\"/>\r\n    <row agent=\"Ofarad Surase\" agentid=\"3013107\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007099\" locator=\"false\"/>\r\n    <row agent=\"Tamera Bakhbalath\" agentid=\"3013108\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"2\" locationid=\"60007105\" locator=\"false\"/>\r\n    <row agent=\"Srasha Jiniron\" agentid=\"3013109\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"2\" locationid=\"60007096\" locator=\"false\"/>\r\n    <row agent=\"Tivam Sudaga\" agentid=\"3013110\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007102\" locator=\"false\"/>\r\n    <row agent=\"Mania Cana\" agentid=\"3013111\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007108\" locator=\"false\"/>\r\n    <row agent=\"Mah Bazadod\" agentid=\"3013112\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007078\" locator=\"false\"/>\r\n    <row agent=\"Unab Vegina\" agentid=\"3013113\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"4\" locationid=\"60007084\" locator=\"true\"/>\r\n    <row agent=\"Timeor Otash\" agentid=\"3013114\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"4\" locationid=\"60007081\" locator=\"true\"/>\r\n    <row agent=\"Sharza Sashkofa\" agentid=\"3013115\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"2\" locationid=\"60007090\" locator=\"true\"/>\r\n    <row agent=\"Ihah Nieren\" agentid=\"3013116\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007132\" locator=\"false\"/>\r\n    <row agent=\"Jera Satash\" agentid=\"3013117\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"4\" locationid=\"60007144\" locator=\"true\"/>\r\n    <row agent=\"Avoser Yarat\" agentid=\"3013118\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007141\" locator=\"false\"/>\r\n    <row agent=\"Dians Erkoun\" agentid=\"3013119\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007138\" locator=\"false\"/>\r\n    <row agent=\"Seil Bedinat\" agentid=\"3013120\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007135\" locator=\"false\"/>\r\n    <row agent=\"Fesse Imadan\" agentid=\"3013121\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"2\" locationid=\"60007129\" locator=\"false\"/>\r\n    <row agent=\"Azalai Arous\" agentid=\"3013122\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007156\" locator=\"true\"/>\r\n    <row agent=\"Malaya Shova\" agentid=\"3013123\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"4\" locationid=\"60007153\" locator=\"false\"/>\r\n    <row agent=\"Zar Bipima\" agentid=\"3013124\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007147\" locator=\"false\"/>\r\n    <row agent=\"Vassa Sedaman\" agentid=\"3013125\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"2\" locationid=\"60007150\" locator=\"true\"/>\r\n    <row agent=\"Psoone Abenria\" agentid=\"3013126\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007159\" locator=\"false\"/>\r\n    <row agent=\"Sushan Vardi\" agentid=\"3013127\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007162\" locator=\"false\"/>\r\n    <row agent=\"Afar Yimla\" agentid=\"3013128\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007165\" locator=\"false\"/>\r\n    <row agent=\"Kiari Zadena\" agentid=\"3013130\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"2\" locationid=\"60007171\" locator=\"false\"/>\r\n    <row agent=\"Jamsas Tavesa\" agentid=\"3013131\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007168\" locator=\"false\"/>\r\n    <row agent=\"Anul Sormin\" agentid=\"3013132\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"2\" locationid=\"60007177\" locator=\"false\"/>\r\n    <row agent=\"Ekaris Mibama\" agentid=\"3013133\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"2\" locationid=\"60007180\" locator=\"false\"/>\r\n    <row agent=\"Aboum Bhizheba\" agentid=\"3013134\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007042\" locator=\"false\"/>\r\n    <row agent=\"Sesentha Amafat\" agentid=\"3013135\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"4\" locationid=\"60007039\" locator=\"false\"/>\r\n    <row agent=\"Balas Akila\" agentid=\"3013136\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007051\" locator=\"false\"/>\r\n    <row agent=\"Firvoon Abar\" agentid=\"3013137\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"4\" locationid=\"60007048\" locator=\"false\"/>\r\n    <row agent=\"Appakir Arshar\" agentid=\"3013138\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"2\" locationid=\"60007054\" locator=\"false\"/>\r\n    <row agent=\"Zocanshaph Animala\" agentid=\"3013139\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"4\" locationid=\"60007045\" locator=\"true\"/>\r\n    <row agent=\"Tzunda Bamuna\" agentid=\"3013140\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007021\" locator=\"false\"/>\r\n    <row agent=\"Neda Kehour\" agentid=\"3013141\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"2\" locationid=\"60007030\" locator=\"true\"/>\r\n    <row agent=\"Bonaskan Inoohion\" agentid=\"3013142\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"4\" locationid=\"60007036\" locator=\"true\"/>\r\n    <row agent=\"Sinabeh Shunayarefi\" agentid=\"3013143\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"2\" locationid=\"60007024\" locator=\"false\"/>\r\n    <row agent=\"Istan Amsoun\" agentid=\"3013144\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"2\" locationid=\"60007033\" locator=\"false\"/>\r\n    <row agent=\"Giama Esion\" agentid=\"3013145\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007027\" locator=\"false\"/>\r\n    <row agent=\"Hanbirt Amoya\" agentid=\"3013146\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"2\" locationid=\"60007126\" locator=\"false\"/>\r\n    <row agent=\"Fosena Batehran\" agentid=\"3013147\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"2\" locationid=\"60007117\" locator=\"true\"/>\r\n    <row agent=\"Sibe Kilak\" agentid=\"3013148\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"2\" locationid=\"60007120\" locator=\"false\"/>\r\n    <row agent=\"Kemza Hoos\" agentid=\"3013149\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"4\" locationid=\"60007114\" locator=\"true\"/>\r\n    <row agent=\"Loustan Tzemari\" agentid=\"3013150\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"4\" locationid=\"60007123\" locator=\"true\"/>\r\n    <row agent=\"Narto Ankadan\" agentid=\"3013151\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"2\" locationid=\"60007111\" locator=\"false\"/>\r\n    <row agent=\"Kabani Evon\" agentid=\"3013152\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"1\" locationid=\"60007015\" locator=\"false\"/>\r\n    <row agent=\"Zahosa Pekh\" agentid=\"3013153\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"4\" locationid=\"60007018\" locator=\"true\"/>\r\n    <row agent=\"Rada Eswarer\" agentid=\"3013154\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"4\" locationid=\"60007009\" locator=\"true\"/>\r\n    <row agent=\"Suzihyaz Kanyesim\" agentid=\"3013155\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"4\" locationid=\"60007006\" locator=\"true\"/>\r\n    <row agent=\"Sahr Rapourer\" agentid=\"3013156\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"2\" locationid=\"60007012\" locator=\"false\"/>\r\n    <row agent=\"Kherari Variandooh\" agentid=\"3013157\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"4\" locationid=\"60007066\" locator=\"true\"/>\r\n    <row agent=\"Ahooh Forari\" agentid=\"3013158\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007060\" locator=\"false\"/>\r\n    <row agent=\"Sharbha Pamezoka\" agentid=\"3013159\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"24\" level=\"1\" locationid=\"60007183\" locator=\"false\"/>\r\n    <row agent=\"Mamafen Arjad\" agentid=\"3013160\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"3\" locationid=\"60007240\" locator=\"false\"/>\r\n    <row agent=\"Shahoun Siharkhail\" agentid=\"3013161\" agenttypeid=\"8\" corporationid=\"1000073\" divisionid=\"22\" level=\"5\" locationid=\"60007237\" locator=\"false\"/>\r\n    <row agent=\"Joradsee Shom\" agentid=\"3013162\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"2\" locationid=\"60007216\" locator=\"false\"/>\r\n    <row agent=\"Sehraza Kusil\" agentid=\"3013163\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"4\" locationid=\"60007213\" locator=\"false\"/>\r\n    <row agent=\"Rerana Maina\" agentid=\"3013164\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"4\" locationid=\"60007225\" locator=\"true\"/>\r\n    <row agent=\"Marveziad Fohtar\" agentid=\"3013165\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"3\" locationid=\"60007228\" locator=\"false\"/>\r\n    <row agent=\"Inikid Uthib\" agentid=\"3013166\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"2\" locationid=\"60007210\" locator=\"true\"/>\r\n    <row agent=\"Izia Tariri\" agentid=\"3013167\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"1\" locationid=\"60007207\" locator=\"true\"/>\r\n    <row agent=\"Girned Reliari\" agentid=\"3013168\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"1\" locationid=\"60007204\" locator=\"false\"/>\r\n    <row agent=\"Ahnaf Jalebe\" agentid=\"3013169\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"2\" locationid=\"60007201\" locator=\"false\"/>\r\n    <row agent=\"Neshios Nabhah\" agentid=\"3013170\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"1\" locationid=\"60007234\" locator=\"false\"/>\r\n    <row agent=\"Akhtih Tammiru\" agentid=\"3013171\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"2\" locationid=\"60007231\" locator=\"false\"/>\r\n    <row agent=\"Alet Senaun\" agentid=\"3013172\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"4\" locationid=\"60007222\" locator=\"false\"/>\r\n    <row agent=\"Akhem Karedfi\" agentid=\"3013173\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"2\" locationid=\"60007219\" locator=\"false\"/>\r\n    <row agent=\"Ladri Mabele\" agentid=\"3013174\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"3\" locationid=\"60007186\" locator=\"false\"/>\r\n    <row agent=\"Fakh Fatimob\" agentid=\"3013175\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"2\" locationid=\"60007198\" locator=\"true\"/>\r\n    <row agent=\"Gavaha Ganaphthir\" agentid=\"3013176\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"2\" locationid=\"60007195\" locator=\"false\"/>\r\n    <row agent=\"Ian Gandibah\" agentid=\"3013177\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"1\" locationid=\"60007189\" locator=\"false\"/>\r\n    <row agent=\"Shimu Senemou\" agentid=\"3013178\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"2\" locationid=\"60007192\" locator=\"false\"/>\r\n    <row agent=\"Ifsan Vimoubat\" agentid=\"3013179\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"1\" locationid=\"60007243\" locator=\"false\"/>\r\n    <row agent=\"Mozzidit Bumi\" agentid=\"3013180\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"1\" locationid=\"60007507\" locator=\"false\"/>\r\n    <row agent=\"Filti Gasodeno\" agentid=\"3013181\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"1\" locationid=\"60007372\" locator=\"false\"/>\r\n    <row agent=\"Nukhre Ashoras\" agentid=\"3013182\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"3\" locationid=\"60007375\" locator=\"false\"/>\r\n    <row agent=\"Saranan Sechas\" agentid=\"3013183\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007369\" locator=\"false\"/>\r\n    <row agent=\"Zosstine Shanyi\" agentid=\"3013184\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"3\" locationid=\"60007381\" locator=\"false\"/>\r\n    <row agent=\"Olah Shalair\" agentid=\"3013185\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"2\" locationid=\"60007378\" locator=\"false\"/>\r\n    <row agent=\"Mabta Muhnim\" agentid=\"3013186\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"2\" locationid=\"60007315\" locator=\"true\"/>\r\n    <row agent=\"Sedni Matsyoo\" agentid=\"3013187\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007318\" locator=\"false\"/>\r\n    <row agent=\"Kilie Giadirun\" agentid=\"3013188\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"3\" locationid=\"60007321\" locator=\"false\"/>\r\n    <row agent=\"Nagin Kahbashi\" agentid=\"3013189\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"3\" locationid=\"60007330\" locator=\"false\"/>\r\n    <row agent=\"Sucha Ehnetaim\" agentid=\"3013190\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"1\" locationid=\"60007324\" locator=\"false\"/>\r\n    <row agent=\"Zanka Ariara\" agentid=\"3013191\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"1\" locationid=\"60007327\" locator=\"false\"/>\r\n    <row agent=\"Janir Sirala\" agentid=\"3013192\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"3\" locationid=\"60007423\" locator=\"false\"/>\r\n    <row agent=\"Hahaler Ahber\" agentid=\"3013193\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007429\" locator=\"false\"/>\r\n    <row agent=\"Eltis Babith\" agentid=\"3013194\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007426\" locator=\"false\"/>\r\n    <row agent=\"Misman Yeron\" agentid=\"3013195\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007432\" locator=\"false\"/>\r\n    <row agent=\"Gebem Geedio\" agentid=\"3013196\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"2\" locationid=\"60007435\" locator=\"false\"/>\r\n    <row agent=\"Bokeva Dadbaila\" agentid=\"3013197\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"1\" locationid=\"60007438\" locator=\"false\"/>\r\n    <row agent=\"Avarih Marun\" agentid=\"3013198\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"1\" locationid=\"60007312\" locator=\"false\"/>\r\n    <row agent=\"Narourandan Dasa\" agentid=\"3013199\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"3\" locationid=\"60007297\" locator=\"true\"/>\r\n    <row agent=\"Ihyin Cai\" agentid=\"3013200\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007306\" locator=\"false\"/>\r\n    <row agent=\"Rindoban Endranib\" agentid=\"3013201\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"1\" locationid=\"60007300\" locator=\"false\"/>\r\n    <row agent=\"Onad Arvab\" agentid=\"3013202\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"1\" locationid=\"60007309\" locator=\"false\"/>\r\n    <row agent=\"Bodia Murzi\" agentid=\"3013203\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"4\" locationid=\"60007303\" locator=\"true\"/>\r\n    <row agent=\"Gholmeles Partet\" agentid=\"3013204\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"1\" locationid=\"60007294\" locator=\"false\"/>\r\n    <row agent=\"Madaren Panora\" agentid=\"3013205\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"4\" locationid=\"60007279\" locator=\"false\"/>\r\n    <row agent=\"Korandoz Nabala\" agentid=\"3013206\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"2\" locationid=\"60007285\" locator=\"false\"/>\r\n    <row agent=\"Shatal Sayim\" agentid=\"3013207\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007282\" locator=\"false\"/>\r\n    <row agent=\"Mimi Sirya\" agentid=\"3013208\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"4\" locationid=\"60007288\" locator=\"true\"/>\r\n    <row agent=\"Rannoze Afemieh\" agentid=\"3013209\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"4\" locationid=\"60007291\" locator=\"true\"/>\r\n    <row agent=\"Ziharu Fosha\" agentid=\"3013210\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"1\" locationid=\"60007261\" locator=\"false\"/>\r\n    <row agent=\"Seroosen Pildia\" agentid=\"3013211\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"3\" locationid=\"60007264\" locator=\"false\"/>\r\n    <row agent=\"Ides Airon\" agentid=\"3013212\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"2\" locationid=\"60007276\" locator=\"false\"/>\r\n    <row agent=\"Amshafah Sihi\" agentid=\"3013213\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"3\" locationid=\"60007267\" locator=\"false\"/>\r\n    <row agent=\"Rekan Naloran\" agentid=\"3013214\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"3\" locationid=\"60007270\" locator=\"true\"/>\r\n    <row agent=\"Nedipar Mashkehi\" agentid=\"3013215\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"2\" locationid=\"60007273\" locator=\"false\"/>\r\n    <row agent=\"Pilb Somule\" agentid=\"3013216\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"3\" locationid=\"60007477\" locator=\"false\"/>\r\n    <row agent=\"Badano Ioshzes\" agentid=\"3013217\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007480\" locator=\"false\"/>\r\n    <row agent=\"Arlair Mazoro\" agentid=\"3013218\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"1\" locationid=\"60007483\" locator=\"false\"/>\r\n    <row agent=\"Oviza Moumar\" agentid=\"3013219\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007486\" locator=\"false\"/>\r\n    <row agent=\"Fura Jakootmieh\" agentid=\"3013220\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"4\" locationid=\"60007489\" locator=\"false\"/>\r\n    <row agent=\"Adrih Famtem\" agentid=\"3013221\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"2\" locationid=\"60007492\" locator=\"false\"/>\r\n    <row agent=\"Chaken Heydmar\" agentid=\"3013222\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"2\" locationid=\"60007333\" locator=\"false\"/>\r\n    <row agent=\"Neasb Onganta\" agentid=\"3013223\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"2\" locationid=\"60007339\" locator=\"true\"/>\r\n    <row agent=\"Garbiran Amshanob\" agentid=\"3013224\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"1\" locationid=\"60007342\" locator=\"false\"/>\r\n    <row agent=\"Poustam Nakri\" agentid=\"3013225\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"4\" locationid=\"60007345\" locator=\"false\"/>\r\n    <row agent=\"Taftas Pesutshimen\" agentid=\"3013226\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"2\" locationid=\"60007336\" locator=\"false\"/>\r\n    <row agent=\"Shukhbib Kheyyopens\" agentid=\"3013227\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"2\" locationid=\"60007348\" locator=\"false\"/>\r\n    <row agent=\"Bosi Brala\" agentid=\"3013228\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007441\" locator=\"false\"/>\r\n    <row agent=\"Mekashtad Gomrazi\" agentid=\"3013229\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"4\" locationid=\"60007444\" locator=\"false\"/>\r\n    <row agent=\"Olon Soud\" agentid=\"3013230\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"3\" locationid=\"60007453\" locator=\"false\"/>\r\n    <row agent=\"Poozzas Esh\" agentid=\"3013231\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"1\" locationid=\"60007447\" locator=\"false\"/>\r\n    <row agent=\"Mahza Esalabah\" agentid=\"3013232\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007450\" locator=\"false\"/>\r\n    <row agent=\"Moobelanu Savi\" agentid=\"3013233\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"4\" locationid=\"60007456\" locator=\"true\"/>\r\n    <row agent=\"Uhas Ireran\" agentid=\"3013234\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007465\" locator=\"false\"/>\r\n    <row agent=\"Qinouh Jarshih\" agentid=\"3013235\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"1\" locationid=\"60007471\" locator=\"false\"/>\r\n    <row agent=\"Kanozul Heva\" agentid=\"3013236\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"4\" locationid=\"60007462\" locator=\"true\"/>\r\n    <row agent=\"Ganiad Mimen\" agentid=\"3013237\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"1\" locationid=\"60007468\" locator=\"false\"/>\r\n    <row agent=\"Darin Rakhshah\" agentid=\"3013238\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"1\" locationid=\"60007474\" locator=\"false\"/>\r\n    <row agent=\"Oman Khalshec\" agentid=\"3013239\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"1\" locationid=\"60007459\" locator=\"false\"/>\r\n    <row agent=\"Yanal Ahyasma\" agentid=\"3013240\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"4\" locationid=\"60007417\" locator=\"false\"/>\r\n    <row agent=\"Bekmi Arira\" agentid=\"3013241\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"2\" locationid=\"60007411\" locator=\"false\"/>\r\n    <row agent=\"Bheskagor Akekaz\" agentid=\"3013242\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"4\" locationid=\"60007414\" locator=\"true\"/>\r\n    <row agent=\"Allad Bikan\" agentid=\"3013243\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007405\" locator=\"true\"/>\r\n    <row agent=\"Lirmairz Ehanias\" agentid=\"3013244\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"3\" locationid=\"60007408\" locator=\"false\"/>\r\n    <row agent=\"Ahdanep Damini\" agentid=\"3013245\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"1\" locationid=\"60007420\" locator=\"false\"/>\r\n    <row agent=\"Sheseretiyi Atted\" agentid=\"3013246\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"3\" locationid=\"60007387\" locator=\"true\"/>\r\n    <row agent=\"Arjam Aneri\" agentid=\"3013247\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"1\" locationid=\"60007402\" locator=\"false\"/>\r\n    <row agent=\"Ansad Zema\" agentid=\"3013248\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"4\" locationid=\"60007396\" locator=\"false\"/>\r\n    <row agent=\"Sedaman Bankizak\" agentid=\"3013249\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"3\" locationid=\"60007393\" locator=\"true\"/>\r\n    <row agent=\"Haboulan Roda\" agentid=\"3013250\" agenttypeid=\"8\" corporationid=\"1000074\" divisionid=\"23\" level=\"5\" locationid=\"60007399\" locator=\"false\"/>\r\n    <row agent=\"Zephan Tania\" agentid=\"3013251\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007390\" locator=\"true\"/>\r\n    <row agent=\"Zahrenin Eshuk\" agentid=\"3013252\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007246\" locator=\"false\"/>\r\n    <row agent=\"Porsharrah Analha\" agentid=\"3013253\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007252\" locator=\"false\"/>\r\n    <row agent=\"Olan Firda\" agentid=\"3013254\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"2\" locationid=\"60007255\" locator=\"false\"/>\r\n    <row agent=\"Goda Azaha\" agentid=\"3013255\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"2\" locationid=\"60007258\" locator=\"false\"/>\r\n    <row agent=\"Sure Geshai\" agentid=\"3013256\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"2\" locationid=\"60007249\" locator=\"true\"/>\r\n    <row agent=\"Ashek Irthan\" agentid=\"3013257\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"1\" locationid=\"60007354\" locator=\"false\"/>\r\n    <row agent=\"Mourrene Versa\" agentid=\"3013258\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007357\" locator=\"false\"/>\r\n    <row agent=\"Zindob Pamamun\" agentid=\"3013259\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"2\" locationid=\"60007366\" locator=\"false\"/>\r\n    <row agent=\"Ososi Honah\" agentid=\"3013260\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"1\" locationid=\"60007351\" locator=\"true\"/>\r\n    <row agent=\"Namooma Kinarbhi\" agentid=\"3013261\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007360\" locator=\"false\"/>\r\n    <row agent=\"Semsa Shavar\" agentid=\"3013262\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"2\" locationid=\"60007363\" locator=\"false\"/>\r\n    <row agent=\"Laghimara Adon\" agentid=\"3013263\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"2\" locationid=\"60007504\" locator=\"false\"/>\r\n    <row agent=\"Jehsuli Barrabi\" agentid=\"3013264\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"1\" locationid=\"60007501\" locator=\"true\"/>\r\n    <row agent=\"Shakora Ronarnad\" agentid=\"3013265\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"2\" locationid=\"60007510\" locator=\"false\"/>\r\n    <row agent=\"Eyil Ihulin\" agentid=\"3013266\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007495\" locator=\"true\"/>\r\n    <row agent=\"Biashzah Sigali\" agentid=\"3013267\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007498\" locator=\"false\"/>\r\n    <row agent=\"Kahbashi Zodavani\" agentid=\"3013268\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"1\" locationid=\"60007384\" locator=\"false\"/>\r\n    <row agent=\"Ghosh Arali\" agentid=\"3013269\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"24\" level=\"1\" locationid=\"60007513\" locator=\"false\"/>\r\n    <row agent=\"Shanamim Mashi\" agentid=\"3013270\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007573\" locator=\"false\"/>\r\n    <row agent=\"Hamechu Nirinu\" agentid=\"3013271\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007516\" locator=\"false\"/>\r\n    <row agent=\"Namaled Shokpad\" agentid=\"3013272\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"24\" level=\"1\" locationid=\"60007522\" locator=\"false\"/>\r\n    <row agent=\"Arehda Ketinan\" agentid=\"3013273\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"4\" locationid=\"60007636\" locator=\"false\"/>\r\n    <row agent=\"Qeraz Manima\" agentid=\"3013274\" agenttypeid=\"8\" corporationid=\"1000075\" divisionid=\"22\" level=\"5\" locationid=\"60007639\" locator=\"false\"/>\r\n    <row agent=\"Keproh Comadu\" agentid=\"3013275\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007633\" locator=\"false\"/>\r\n    <row agent=\"Kheski Mamya\" agentid=\"3013276\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007642\" locator=\"false\"/>\r\n    <row agent=\"Bamadah Sheymel\" agentid=\"3013277\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"3\" locationid=\"60007684\" locator=\"false\"/>\r\n    <row agent=\"Benai Clamura\" agentid=\"3013278\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007687\" locator=\"false\"/>\r\n    <row agent=\"Kame Yuninrea\" agentid=\"3013279\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007690\" locator=\"false\"/>\r\n    <row agent=\"Thisb Intahra\" agentid=\"3013280\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"4\" locationid=\"60007681\" locator=\"false\"/>\r\n    <row agent=\"Clonbim Shomare\" agentid=\"3013281\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007546\" locator=\"false\"/>\r\n    <row agent=\"Jarerit Mis\" agentid=\"3013282\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"3\" locationid=\"60007537\" locator=\"true\"/>\r\n    <row agent=\"Argin Absaned\" agentid=\"3013283\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007540\" locator=\"false\"/>\r\n    <row agent=\"Mesura Arshin\" agentid=\"3013284\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007543\" locator=\"true\"/>\r\n    <row agent=\"Reymta Ahalin\" agentid=\"3013285\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"4\" locationid=\"60007621\" locator=\"false\"/>\r\n    <row agent=\"Chadla Herorad\" agentid=\"3013286\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007630\" locator=\"false\"/>\r\n    <row agent=\"Bankan Rassit\" agentid=\"3013287\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"3\" locationid=\"60007627\" locator=\"true\"/>\r\n    <row agent=\"Piveenie Aurthik\" agentid=\"3013288\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"4\" locationid=\"60007624\" locator=\"true\"/>\r\n    <row agent=\"Vesalol Sousanun\" agentid=\"3013289\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007525\" locator=\"false\"/>\r\n    <row agent=\"Fahama Safilouz\" agentid=\"3013290\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"4\" locationid=\"60007531\" locator=\"true\"/>\r\n    <row agent=\"Samond Asuchana\" agentid=\"3013291\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"4\" locationid=\"60007528\" locator=\"false\"/>\r\n    <row agent=\"Yadoon Sussal\" agentid=\"3013292\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007534\" locator=\"true\"/>\r\n    <row agent=\"Idhqinil Arbeh\" agentid=\"3013293\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007666\" locator=\"true\"/>\r\n    <row agent=\"Be Serot\" agentid=\"3013294\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007660\" locator=\"false\"/>\r\n    <row agent=\"Pihi Alim\" agentid=\"3013295\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"3\" locationid=\"60007663\" locator=\"false\"/>\r\n    <row agent=\"Armiralab Nareraka\" agentid=\"3013296\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007657\" locator=\"false\"/>\r\n    <row agent=\"Rash Jeme\" agentid=\"3013297\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007576\" locator=\"false\"/>\r\n    <row agent=\"Eroroyi Utmami\" agentid=\"3013298\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007579\" locator=\"false\"/>\r\n    <row agent=\"Varghin Mis\" agentid=\"3013299\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"24\" level=\"2\" locationid=\"60007582\" locator=\"false\"/>\r\n    <row agent=\"Lamelkah Shomi\" agentid=\"3013300\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007645\" locator=\"false\"/>\r\n    <row agent=\"Fonberis Aselar\" agentid=\"3013301\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007651\" locator=\"true\"/>\r\n    <row agent=\"Rorekoo Atanad\" agentid=\"3013302\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007654\" locator=\"false\"/>\r\n    <row agent=\"Mekhsa Tazadaz\" agentid=\"3013303\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007648\" locator=\"false\"/>\r\n    <row agent=\"Zhorer Merouli\" agentid=\"3013304\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"3\" locationid=\"60007561\" locator=\"false\"/>\r\n    <row agent=\"Onod Khuhzian\" agentid=\"3013305\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007567\" locator=\"false\"/>\r\n    <row agent=\"Amafala Khurelem\" agentid=\"3013306\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007564\" locator=\"false\"/>\r\n    <row agent=\"Zelimal Hasamel\" agentid=\"3013307\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007570\" locator=\"false\"/>\r\n    <row agent=\"Karnabar Marat\" agentid=\"3013308\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007588\" locator=\"true\"/>\r\n    <row agent=\"Minir Kopoumtahr\" agentid=\"3013309\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"3\" locationid=\"60007591\" locator=\"false\"/>\r\n    <row agent=\"Cheshamah Natzilmer\" agentid=\"3013310\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007594\" locator=\"false\"/>\r\n    <row agent=\"Hasrara Ad\" agentid=\"3013311\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007585\" locator=\"false\"/>\r\n    <row agent=\"Lendalir Senpi\" agentid=\"3013312\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"4\" locationid=\"60007675\" locator=\"false\"/>\r\n    <row agent=\"Chama Tabar\" agentid=\"3013313\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"3\" locationid=\"60007672\" locator=\"false\"/>\r\n    <row agent=\"Galed Admamma\" agentid=\"3013314\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"3\" locationid=\"60007669\" locator=\"false\"/>\r\n    <row agent=\"Deeman Katy\" agentid=\"3013315\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"3\" locationid=\"60007678\" locator=\"false\"/>\r\n    <row agent=\"Jihyetu Miehia\" agentid=\"3013316\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007606\" locator=\"false\"/>\r\n    <row agent=\"Hilaim Kafshaz\" agentid=\"3013317\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"4\" locationid=\"60007597\" locator=\"true\"/>\r\n    <row agent=\"Gaku Patri\" agentid=\"3013318\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007600\" locator=\"false\"/>\r\n    <row agent=\"Imeshasa Favez\" agentid=\"3013319\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"24\" level=\"1\" locationid=\"60007603\" locator=\"false\"/>\r\n    <row agent=\"Ahmobah Hethiba\" agentid=\"3013320\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"24\" level=\"1\" locationid=\"60007555\" locator=\"false\"/>\r\n    <row agent=\"Siraki Chebi\" agentid=\"3013321\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007549\" locator=\"false\"/>\r\n    <row agent=\"Kheen Hahbira\" agentid=\"3013322\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"24\" level=\"4\" locationid=\"60007552\" locator=\"false\"/>\r\n    <row agent=\"Zhevara Marbon\" agentid=\"3013323\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"3\" locationid=\"60007558\" locator=\"false\"/>\r\n    <row agent=\"Rasdri Sierosh\" agentid=\"3013324\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007618\" locator=\"true\"/>\r\n    <row agent=\"Dunha Ghirida\" agentid=\"3013325\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007612\" locator=\"false\"/>\r\n    <row agent=\"Damsia Chadla\" agentid=\"3013326\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"4\" locationid=\"60007609\" locator=\"true\"/>\r\n    <row agent=\"Sobariad Rahonan\" agentid=\"3013327\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007615\" locator=\"false\"/>\r\n    <row agent=\"Hareera Vebriand\" agentid=\"3013328\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007519\" locator=\"false\"/>\r\n    <row agent=\"Soskes Ifodun\" agentid=\"3013329\" agenttypeid=\"2\" corporationid=\"1000076\" divisionid=\"22\" level=\"1\" locationid=\"60007693\" locator=\"false\"/>\r\n    <row agent=\"Himusstiad Shamiri\" agentid=\"3013330\" agenttypeid=\"2\" corporationid=\"1000076\" divisionid=\"22\" level=\"2\" locationid=\"60007699\" locator=\"false\"/>\r\n    <row agent=\"Arzad Yatuki\" agentid=\"3013331\" agenttypeid=\"2\" corporationid=\"1000076\" divisionid=\"22\" level=\"4\" locationid=\"60007696\" locator=\"true\"/>\r\n    <row agent=\"Nuponi Nimedaz\" agentid=\"3013332\" agenttypeid=\"3\" corporationid=\"1000077\" divisionid=\"22\" level=\"1\" locationid=\"60007702\" locator=\"false\"/>\r\n    <row agent=\"Irnin Hakouga\" agentid=\"3013333\" agenttypeid=\"2\" corporationid=\"1000077\" divisionid=\"22\" level=\"3\" locationid=\"60007711\" locator=\"false\"/>\r\n    <row agent=\"Koored Zainah\" agentid=\"3013334\" agenttypeid=\"8\" corporationid=\"1000077\" divisionid=\"22\" level=\"5\" locationid=\"60007729\" locator=\"false\"/>\r\n    <row agent=\"Asanot Goulah\" agentid=\"3013335\" agenttypeid=\"2\" corporationid=\"1000077\" divisionid=\"22\" level=\"4\" locationid=\"60007726\" locator=\"false\"/>\r\n    <row agent=\"Debated Yavsehi\" agentid=\"3013336\" agenttypeid=\"2\" corporationid=\"1000077\" divisionid=\"22\" level=\"1\" locationid=\"60007717\" locator=\"false\"/>\r\n    <row agent=\"Zunarus Aziarvar\" agentid=\"3013337\" agenttypeid=\"2\" corporationid=\"1000077\" divisionid=\"22\" level=\"2\" locationid=\"60007705\" locator=\"false\"/>\r\n    <row agent=\"Sucha Ajman\" agentid=\"3013338\" agenttypeid=\"2\" corporationid=\"1000077\" divisionid=\"22\" level=\"3\" locationid=\"60007708\" locator=\"true\"/>\r\n    <row agent=\"Jarezi Oleben\" agentid=\"3013339\" agenttypeid=\"2\" corporationid=\"1000077\" divisionid=\"22\" level=\"4\" locationid=\"60007723\" locator=\"false\"/>\r\n    <row agent=\"Jelnezem Nemphad\" agentid=\"3013340\" agenttypeid=\"2\" corporationid=\"1000077\" divisionid=\"22\" level=\"2\" locationid=\"60007714\" locator=\"false\"/>\r\n    <row agent=\"Azaph Dafuan\" agentid=\"3013341\" agenttypeid=\"2\" corporationid=\"1000077\" divisionid=\"22\" level=\"4\" locationid=\"60007720\" locator=\"true\"/>\r\n    <row agent=\"Kavala Ahtitaras\" agentid=\"3013350\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"4\" locationid=\"60000004\" locator=\"false\"/>\r\n    <row agent=\"Kogaras Okayumi\" agentid=\"3013351\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"1\" locationid=\"60000256\" locator=\"false\"/>\r\n    <row agent=\"Kiri Saaranen\" agentid=\"3013352\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"3\" locationid=\"60000118\" locator=\"true\"/>\r\n    <row agent=\"Kirpala Jorvunen\" agentid=\"3013353\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"1\" locationid=\"60000061\" locator=\"false\"/>\r\n    <row agent=\"Kishomi Rutokka\" agentid=\"3013354\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"2\" locationid=\"60000163\" locator=\"false\"/>\r\n    <row agent=\"Izoon Wanimbem\" agentid=\"3013355\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"1\" locationid=\"60007192\" locator=\"false\"/>\r\n    <row agent=\"Iranir Kiventar\" agentid=\"3013356\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"3\" locationid=\"60007222\" locator=\"true\"/>\r\n    <row agent=\"Irnal Kile\" agentid=\"3013357\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"4\" locationid=\"60007219\" locator=\"false\"/>\r\n    <row agent=\"Irmalin Mastou\" agentid=\"3013358\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"1\" locationid=\"60007240\" locator=\"false\"/>\r\n    <row agent=\"Irush Padihan\" agentid=\"3013359\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"1\" locationid=\"60007336\" locator=\"false\"/>\r\n    <row agent=\"Inagi Hanavi\" agentid=\"3013360\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"2\" locationid=\"60007345\" locator=\"false\"/>\r\n    <row agent=\"Inap Aghirya\" agentid=\"3013361\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"3\" locationid=\"60007357\" locator=\"true\"/>\r\n    <row agent=\"Intahra Bashkai\" agentid=\"3013362\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"4\" locationid=\"60007312\" locator=\"true\"/>\r\n    <row agent=\"Inyam Sheph\" agentid=\"3013363\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"1\" locationid=\"60007477\" locator=\"false\"/>\r\n    <row agent=\"Ipref Thirida\" agentid=\"3013364\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007564\" locator=\"false\"/>\r\n    <row agent=\"Hatole Shanah\" agentid=\"3013365\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"3\" locationid=\"60007570\" locator=\"false\"/>\r\n    <row agent=\"Hayido Ahminoh\" agentid=\"3013366\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007666\" locator=\"false\"/>\r\n    <row agent=\"Haziye Tararan\" agentid=\"3013367\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"4\" locationid=\"60007600\" locator=\"true\"/>\r\n    <row agent=\"Lila Ilih\" agentid=\"3013368\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007519\" locator=\"true\"/>\r\n    <row agent=\"Hasateem Beshriri\" agentid=\"3013369\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"3\" locationid=\"60007735\" locator=\"true\"/>\r\n    <row agent=\"Hasira Yarnis\" agentid=\"3013370\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"1\" locationid=\"60007759\" locator=\"true\"/>\r\n    <row agent=\"Hatenkhi Bekmi\" agentid=\"3013371\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"1\" locationid=\"60007738\" locator=\"false\"/>\r\n    <row agent=\"Hanba Arshah\" agentid=\"3013372\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"2\" locationid=\"60007744\" locator=\"true\"/>\r\n    <row agent=\"Esescama Marveziad\" agentid=\"3013373\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"4\" locationid=\"60007747\" locator=\"false\"/>\r\n    <row agent=\"Harhi Missal\" agentid=\"3013374\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"1\" locationid=\"60007870\" locator=\"false\"/>\r\n    <row agent=\"Halaka Pazata\" agentid=\"3013375\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"1\" locationid=\"60007771\" locator=\"true\"/>\r\n    <row agent=\"Haldon Gashula\" agentid=\"3013376\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"4\" locationid=\"60007792\" locator=\"true\"/>\r\n    <row agent=\"Kebedap Sardirih\" agentid=\"3013377\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"2\" locationid=\"60007849\" locator=\"false\"/>\r\n    <row agent=\"Edja Lahras\" agentid=\"3013378\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"3\" locationid=\"60007789\" locator=\"true\"/>\r\n    <row agent=\"Hammem Nonatan\" agentid=\"3013379\" agenttypeid=\"2\" corporationid=\"1000076\" divisionid=\"22\" level=\"4\" locationid=\"60007696\" locator=\"false\"/>\r\n    <row agent=\"Hamu Ershar\" agentid=\"3013380\" agenttypeid=\"2\" corporationid=\"1000076\" divisionid=\"22\" level=\"1\" locationid=\"60007699\" locator=\"false\"/>\r\n    <row agent=\"Hobi Sobariad\" agentid=\"3013381\" agenttypeid=\"2\" corporationid=\"1000077\" divisionid=\"22\" level=\"3\" locationid=\"60007711\" locator=\"false\"/>\r\n    <row agent=\"Hodura Mamouda\" agentid=\"3013382\" agenttypeid=\"2\" corporationid=\"1000077\" divisionid=\"22\" level=\"1\" locationid=\"60007717\" locator=\"false\"/>\r\n    <row agent=\"Hokshmi Gimela\" agentid=\"3013383\" agenttypeid=\"2\" corporationid=\"1000077\" divisionid=\"22\" level=\"4\" locationid=\"60007714\" locator=\"false\"/>\r\n    <row agent=\"Hokaba Azmob\" agentid=\"3013384\" agenttypeid=\"2\" corporationid=\"1000077\" divisionid=\"22\" level=\"2\" locationid=\"60007708\" locator=\"false\"/>\r\n    <row agent=\"Homisa Ussa\" agentid=\"3013385\" agenttypeid=\"2\" corporationid=\"1000077\" divisionid=\"22\" level=\"1\" locationid=\"60007729\" locator=\"false\"/>\r\n    <row agent=\"Horanias Zoba\" agentid=\"3013386\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"2\" locationid=\"60007927\" locator=\"true\"/>\r\n    <row agent=\"Hihrzoot Sohefema\" agentid=\"3013387\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007891\" locator=\"false\"/>\r\n    <row agent=\"Hih Vanasou\" agentid=\"3013388\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"22\" level=\"3\" locationid=\"60007909\" locator=\"false\"/>\r\n    <row agent=\"Hih Ophenan\" agentid=\"3013389\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007993\" locator=\"true\"/>\r\n    <row agent=\"Hirasez Malite\" agentid=\"3013390\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"1\" locationid=\"60008095\" locator=\"true\"/>\r\n    <row agent=\"Hirizan Azaib\" agentid=\"3013391\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"4\" locationid=\"60008044\" locator=\"true\"/>\r\n    <row agent=\"Hirtsorel Rassi\" agentid=\"3013392\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"22\" level=\"2\" locationid=\"60008059\" locator=\"true\"/>\r\n    <row agent=\"Hisha Jalni\" agentid=\"3013393\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"3\" locationid=\"60008035\" locator=\"false\"/>\r\n    <row agent=\"Hetarga Khahruh\" agentid=\"3013394\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"1\" locationid=\"60008038\" locator=\"true\"/>\r\n    <row agent=\"Eyrre Ildjorn\" agentid=\"3013395\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"4\" locationid=\"60006076\" locator=\"true\"/>\r\n    <row agent=\"Gargrandi Melvagiko\" agentid=\"3013396\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"2\" locationid=\"60006064\" locator=\"false\"/>\r\n    <row agent=\"Andrin Gongumur\" agentid=\"3013397\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"1\" locationid=\"60006052\" locator=\"false\"/>\r\n    <row agent=\"Tendfran Aertur\" agentid=\"3013398\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"1\" locationid=\"60006079\" locator=\"false\"/>\r\n    <row agent=\"Jarerit Nendah\" agentid=\"3013399\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"24\" level=\"2\" locationid=\"60006178\" locator=\"true\"/>\r\n    <row agent=\"Nadu Tzuku\" agentid=\"3013400\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"4\" locationid=\"60006127\" locator=\"false\"/>\r\n    <row agent=\"Aphor Esubara\" agentid=\"3013401\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"1\" locationid=\"60006205\" locator=\"false\"/>\r\n    <row agent=\"Alinda Zeremshat\" agentid=\"3013402\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"1\" locationid=\"60006145\" locator=\"true\"/>\r\n    <row agent=\"Gekooma Otakod\" agentid=\"3013403\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"3\" locationid=\"60006193\" locator=\"true\"/>\r\n    <row agent=\"Gaknem Emirion\" agentid=\"3013404\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"22\" level=\"2\" locationid=\"60006361\" locator=\"true\"/>\r\n    <row agent=\"Tharva Zarvinis\" agentid=\"3013405\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"1\" locationid=\"60006370\" locator=\"true\"/>\r\n    <row agent=\"Garmasi Samooh\" agentid=\"3013406\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"22\" level=\"4\" locationid=\"60006322\" locator=\"false\"/>\r\n    <row agent=\"Yolitsa Erviam\" agentid=\"3013407\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"1\" locationid=\"60006235\" locator=\"false\"/>\r\n    <row agent=\"Kudfa Qeritan\" agentid=\"3013408\" agenttypeid=\"4\" corporationid=\"1000064\" divisionid=\"18\" level=\"3\" locationid=\"60006283\" locator=\"false\"/>\r\n    <row agent=\"Apha Pez\" agentid=\"3013409\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"1\" locationid=\"60006535\" locator=\"false\"/>\r\n    <row agent=\"Kazeli Dohrucan\" agentid=\"3013410\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"3\" locationid=\"60006430\" locator=\"false\"/>\r\n    <row agent=\"Maderi Sarmah\" agentid=\"3013411\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"24\" level=\"4\" locationid=\"60006502\" locator=\"false\"/>\r\n    <row agent=\"Zaisa Fehet\" agentid=\"3013412\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"1\" locationid=\"60006505\" locator=\"false\"/>\r\n    <row agent=\"Julantar Amindasi\" agentid=\"3013413\" agenttypeid=\"2\" corporationid=\"1000066\" divisionid=\"22\" level=\"3\" locationid=\"60006601\" locator=\"true\"/>\r\n    <row agent=\"Maliamma Teb\" agentid=\"3013414\" agenttypeid=\"2\" corporationid=\"1000066\" divisionid=\"24\" level=\"2\" locationid=\"60006583\" locator=\"false\"/>\r\n    <row agent=\"Tzeya Ivah\" agentid=\"3013415\" agenttypeid=\"2\" corporationid=\"1000066\" divisionid=\"24\" level=\"1\" locationid=\"60006586\" locator=\"false\"/>\r\n    <row agent=\"Merdu Afat\" agentid=\"3013416\" agenttypeid=\"2\" corporationid=\"1000066\" divisionid=\"22\" level=\"4\" locationid=\"60006598\" locator=\"false\"/>\r\n    <row agent=\"Gurulayv Irzikh\" agentid=\"3013417\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"1\" locationid=\"60006655\" locator=\"true\"/>\r\n    <row agent=\"Safanan Ature\" agentid=\"3013418\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"4\" locationid=\"60006712\" locator=\"false\"/>\r\n    <row agent=\"Shatechas Serahe\" agentid=\"3013419\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"1\" locationid=\"60006688\" locator=\"false\"/>\r\n    <row agent=\"Luromooh Meraba\" agentid=\"3013420\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"2\" locationid=\"60006667\" locator=\"false\"/>\r\n    <row agent=\"Essid Engleker\" agentid=\"3013421\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"3\" locationid=\"60006679\" locator=\"true\"/>\r\n    <row agent=\"Gofrat Rondralass\" agentid=\"3013422\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"23\" level=\"2\" locationid=\"60006766\" locator=\"true\"/>\r\n    <row agent=\"Garan Taleged\" agentid=\"3013423\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"23\" level=\"4\" locationid=\"60006757\" locator=\"true\"/>\r\n    <row agent=\"Zoon Neyan\" agentid=\"3013424\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"23\" level=\"3\" locationid=\"60006745\" locator=\"true\"/>\r\n    <row agent=\"Goshad Sharroon\" agentid=\"3013425\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"23\" level=\"1\" locationid=\"60006763\" locator=\"true\"/>\r\n    <row agent=\"Iswah Hadami\" agentid=\"3013426\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"23\" level=\"1\" locationid=\"60006760\" locator=\"false\"/>\r\n    <row agent=\"Mariakezdam Boas\" agentid=\"3013427\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"1\" locationid=\"60006805\" locator=\"false\"/>\r\n    <row agent=\"Azie Arza\" agentid=\"3013428\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"3\" locationid=\"60006892\" locator=\"false\"/>\r\n    <row agent=\"Dubahar Veche\" agentid=\"3013429\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"24\" level=\"4\" locationid=\"60006808\" locator=\"false\"/>\r\n    <row agent=\"Gihayen Ririva\" agentid=\"3013430\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"1\" locationid=\"60006799\" locator=\"false\"/>\r\n    <row agent=\"Mirina Yanu\" agentid=\"3013431\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"2\" locationid=\"60006817\" locator=\"false\"/>\r\n    <row agent=\"Guma Namihena\" agentid=\"3013432\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"4\" locationid=\"60006916\" locator=\"false\"/>\r\n    <row agent=\"Yehandid Shar\" agentid=\"3013433\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"2\" locationid=\"60006931\" locator=\"false\"/>\r\n    <row agent=\"Fasaral Hanavi\" agentid=\"3013434\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"1\" locationid=\"60006928\" locator=\"false\"/>\r\n    <row agent=\"Murata Sechan\" agentid=\"3013435\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"3\" locationid=\"60006910\" locator=\"true\"/>\r\n    <row agent=\"Sucha Elmi\" agentid=\"3013436\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"22\" level=\"1\" locationid=\"60006958\" locator=\"false\"/>\r\n    <row agent=\"Mal Quibih\" agentid=\"3013437\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"22\" level=\"2\" locationid=\"60006970\" locator=\"true\"/>\r\n    <row agent=\"Nare Osrer\" agentid=\"3013438\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"22\" level=\"3\" locationid=\"60006955\" locator=\"false\"/>\r\n    <row agent=\"Fanadhqer Gadjos\" agentid=\"3013439\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"22\" level=\"1\" locationid=\"60006988\" locator=\"false\"/>\r\n    <row agent=\"Alani Gaprah\" agentid=\"3013440\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"2\" locationid=\"60007174\" locator=\"false\"/>\r\n    <row agent=\"Fovihi Abaliki\" agentid=\"3013441\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"3\" locationid=\"60007120\" locator=\"false\"/>\r\n    <row agent=\"Ubijady Emieh\" agentid=\"3013442\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007108\" locator=\"false\"/>\r\n    <row agent=\"Sataus Sohuda\" agentid=\"3013443\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007111\" locator=\"true\"/>\r\n    <row agent=\"Kansine Hanau\" agentid=\"3013444\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"4\" locationid=\"60007015\" locator=\"false\"/>\r\n    <row agent=\"Oserin Suldren\" agentid=\"3013445\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005077\" locator=\"true\"/>\r\n    <row agent=\"Elgyltran Adlen\" agentid=\"3013446\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"4\" locationid=\"60005227\" locator=\"false\"/>\r\n    <row agent=\"Odauden Hitukur\" agentid=\"3013447\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005116\" locator=\"true\"/>\r\n    <row agent=\"Meksobias Adhard\" agentid=\"3013448\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005074\" locator=\"false\"/>\r\n    <row agent=\"Eurik Tirn\" agentid=\"3013449\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005119\" locator=\"false\"/>\r\n    <row agent=\"Aldatold Eoro\" agentid=\"3013450\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005242\" locator=\"false\"/>\r\n    <row agent=\"Steddil Audorgeir\" agentid=\"3013451\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"4\" locationid=\"60005386\" locator=\"true\"/>\r\n    <row agent=\"Uinteinn Budaula\" agentid=\"3013452\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005254\" locator=\"false\"/>\r\n    <row agent=\"Avuner Hed\" agentid=\"3013453\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"2\" locationid=\"60005395\" locator=\"false\"/>\r\n    <row agent=\"Gokestar Kotvoman\" agentid=\"3013454\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005257\" locator=\"false\"/>\r\n    <row agent=\"Aetaksan Reitufung\" agentid=\"3013455\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"4\" locationid=\"60005599\" locator=\"false\"/>\r\n    <row agent=\"Eirsen Arg\" agentid=\"3013456\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"2\" locationid=\"60005431\" locator=\"false\"/>\r\n    <row agent=\"Ensden Eofalvard\" agentid=\"3013457\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"1\" locationid=\"60005449\" locator=\"false\"/>\r\n    <row agent=\"Wingvontzen Urata\" agentid=\"3013458\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"3\" locationid=\"60005503\" locator=\"false\"/>\r\n    <row agent=\"Artwin Rorhuko\" agentid=\"3013459\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"1\" locationid=\"60005497\" locator=\"false\"/>\r\n    <row agent=\"Mardore Haunelfard\" agentid=\"3013460\" agenttypeid=\"4\" corporationid=\"1000057\" divisionid=\"18\" level=\"1\" locationid=\"60005686\" locator=\"false\"/>\r\n    <row agent=\"Heidirdria Bord\" agentid=\"3013461\" agenttypeid=\"4\" corporationid=\"1000057\" divisionid=\"18\" level=\"4\" locationid=\"60005701\" locator=\"true\"/>\r\n    <row agent=\"Teurodedik Uarmelo\" agentid=\"3013462\" agenttypeid=\"4\" corporationid=\"1000057\" divisionid=\"18\" level=\"3\" locationid=\"60005689\" locator=\"false\"/>\r\n    <row agent=\"Gratwonsdinnur Kjadeland\" agentid=\"3013463\" agenttypeid=\"4\" corporationid=\"1000057\" divisionid=\"18\" level=\"1\" locationid=\"60005695\" locator=\"false\"/>\r\n    <row agent=\"Meinigefur Hemattulf\" agentid=\"3013464\" agenttypeid=\"2\" corporationid=\"1000058\" divisionid=\"24\" level=\"1\" locationid=\"60005722\" locator=\"false\"/>\r\n    <row agent=\"Traer Artgert\" agentid=\"3013465\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"23\" level=\"1\" locationid=\"60005755\" locator=\"false\"/>\r\n    <row agent=\"Hedald Reptemur\" agentid=\"3013466\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"23\" level=\"3\" locationid=\"60005752\" locator=\"false\"/>\r\n    <row agent=\"Arrald Arilfer\" agentid=\"3013467\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"24\" level=\"1\" locationid=\"60005737\" locator=\"false\"/>\r\n    <row agent=\"Forrilur Sastrentad\" agentid=\"3013468\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"24\" level=\"4\" locationid=\"60005740\" locator=\"true\"/>\r\n    <row agent=\"Orudhold Sidreke\" agentid=\"3013469\" agenttypeid=\"2\" corporationid=\"1000060\" divisionid=\"22\" level=\"3\" locationid=\"60005767\" locator=\"true\"/>\r\n    <row agent=\"Ilsdald Manban\" agentid=\"3013470\" agenttypeid=\"2\" corporationid=\"1000060\" divisionid=\"22\" level=\"2\" locationid=\"60005764\" locator=\"true\"/>\r\n    <row agent=\"Sing Gelbjer\" agentid=\"3013471\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"2\" locationid=\"60005929\" locator=\"false\"/>\r\n    <row agent=\"Sasadi Erhtulf\" agentid=\"3013472\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005878\" locator=\"false\"/>\r\n    <row agent=\"Iddolf Frie\" agentid=\"3013473\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"1\" locationid=\"60005953\" locator=\"true\"/>\r\n    <row agent=\"Jubrelfur Adanher\" agentid=\"3013474\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60005794\" locator=\"false\"/>\r\n    <row agent=\"Ebutter Grord\" agentid=\"3013475\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"3\" locationid=\"60005809\" locator=\"true\"/>\r\n    <row agent=\"Jaapukka Yushi\" agentid=\"3013476\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004243\" locator=\"true\"/>\r\n    <row agent=\"Tsumine Okkubo\" agentid=\"3013477\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"3\" locationid=\"60004087\" locator=\"true\"/>\r\n    <row agent=\"Jokiwa Inukiomaa\" agentid=\"3013478\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004114\" locator=\"false\"/>\r\n    <row agent=\"Haitshaken Utraine\" agentid=\"3013479\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004111\" locator=\"true\"/>\r\n    <row agent=\"Paaralen Aitio\" agentid=\"3013480\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"4\" locationid=\"60004096\" locator=\"true\"/>\r\n    <row agent=\"Maratani Tsagai\" agentid=\"3013481\" agenttypeid=\"2\" corporationid=\"1000042\" divisionid=\"24\" level=\"1\" locationid=\"60004294\" locator=\"false\"/>\r\n    <row agent=\"Obunama Pikkinen\" agentid=\"3013482\" agenttypeid=\"2\" corporationid=\"1000042\" divisionid=\"22\" level=\"2\" locationid=\"60004291\" locator=\"false\"/>\r\n    <row agent=\"Annaa Hoyokaima\" agentid=\"3013483\" agenttypeid=\"2\" corporationid=\"1000042\" divisionid=\"24\" level=\"4\" locationid=\"60004270\" locator=\"true\"/>\r\n    <row agent=\"Kohmara Arinuomo\" agentid=\"3013484\" agenttypeid=\"2\" corporationid=\"1000042\" divisionid=\"24\" level=\"1\" locationid=\"60004273\" locator=\"false\"/>\r\n    <row agent=\"Ahonda Elamira\" agentid=\"3013485\" agenttypeid=\"2\" corporationid=\"1000042\" divisionid=\"24\" level=\"3\" locationid=\"60004285\" locator=\"true\"/>\r\n    <row agent=\"Isvi Otonheinen\" agentid=\"3013486\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"1\" locationid=\"60004417\" locator=\"true\"/>\r\n    <row agent=\"Kilimeya Hodanomi\" agentid=\"3013487\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"1\" locationid=\"60004333\" locator=\"false\"/>\r\n    <row agent=\"Ienola Andan\" agentid=\"3013488\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"4\" locationid=\"60004351\" locator=\"false\"/>\r\n    <row agent=\"Raulmanen Iivonas\" agentid=\"3013489\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"3\" locationid=\"60004345\" locator=\"true\"/>\r\n    <row agent=\"Virvinen Shon\" agentid=\"3013490\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"22\" level=\"2\" locationid=\"60004381\" locator=\"false\"/>\r\n    <row agent=\"Satoras Jukuokka\" agentid=\"3013491\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"3\" locationid=\"60000277\" locator=\"false\"/>\r\n    <row agent=\"Tiuken Keimaara\" agentid=\"3013492\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"1\" locationid=\"60000304\" locator=\"true\"/>\r\n    <row agent=\"Ashakotsu Aruta\" agentid=\"3013493\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"2\" locationid=\"60000280\" locator=\"false\"/>\r\n    <row agent=\"Isimakken Kalmanen\" agentid=\"3013494\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"4\" locationid=\"60000292\" locator=\"true\"/>\r\n    <row agent=\"Alakela Sintoh\" agentid=\"3013495\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"1\" locationid=\"60000283\" locator=\"false\"/>\r\n    <row agent=\"Ikala Iijotsadan\" agentid=\"3013496\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000418\" locator=\"false\"/>\r\n    <row agent=\"Ausio Arpala\" agentid=\"3013498\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000385\" locator=\"false\"/>\r\n    <row agent=\"Aihmi Antiainen\" agentid=\"3013499\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"3\" locationid=\"60000316\" locator=\"false\"/>\r\n    <row agent=\"Ashataalen Kaitsiras\" agentid=\"3013500\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"2\" locationid=\"60000370\" locator=\"false\"/>\r\n    <row agent=\"Nienekaila Dain\" agentid=\"3013501\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"2\" locationid=\"60000541\" locator=\"false\"/>\r\n    <row agent=\"Kuonnaken Ugas\" agentid=\"3013503\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"4\" locationid=\"60000568\" locator=\"false\"/>\r\n    <row agent=\"Arvoras Kabira\" agentid=\"3013506\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"23\" level=\"3\" locationid=\"60000637\" locator=\"true\"/>\r\n    <row agent=\"Kokken Sosumo\" agentid=\"3013507\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"23\" level=\"1\" locationid=\"60000643\" locator=\"false\"/>\r\n    <row agent=\"Yuasalen Gerita\" agentid=\"3013508\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"23\" level=\"2\" locationid=\"60000625\" locator=\"true\"/>\r\n    <row agent=\"Kuhmeto Nallanen\" agentid=\"3013509\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"3\" locationid=\"60000700\" locator=\"false\"/>\r\n    <row agent=\"Raulalailen Runashatsu\" agentid=\"3013510\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"4\" locationid=\"60000703\" locator=\"true\"/>\r\n    <row agent=\"Ihira Uravo\" agentid=\"3013511\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"1\" locationid=\"60000724\" locator=\"false\"/>\r\n    <row agent=\"Kojaimo Sienatsu\" agentid=\"3013512\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"1\" locationid=\"60000730\" locator=\"false\"/>\r\n    <row agent=\"Soikiainen Verupas\" agentid=\"3013514\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"3\" locationid=\"60000787\" locator=\"false\"/>\r\n    <row agent=\"Urpiluola Hishenji\" agentid=\"3013515\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"1\" locationid=\"60000805\" locator=\"false\"/>\r\n    <row agent=\"Suitanen Kakasai\" agentid=\"3013516\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"2\" locationid=\"60000784\" locator=\"false\"/>\r\n    <row agent=\"Gohtiras Uova\" agentid=\"3013517\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"1\" locationid=\"60000796\" locator=\"false\"/>\r\n    <row agent=\"Omu Endonen\" agentid=\"3013519\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"4\" locationid=\"60000880\" locator=\"true\"/>\r\n    <row agent=\"Soukka Okirami\" agentid=\"3013520\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"3\" locationid=\"60000919\" locator=\"false\"/>\r\n    <row agent=\"Elukilkka Okagairos\" agentid=\"3013521\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"1\" locationid=\"60000973\" locator=\"false\"/>\r\n    <row agent=\"Mitokka Etsantamaa\" agentid=\"3013523\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"4\" locationid=\"60001195\" locator=\"true\"/>\r\n    <row agent=\"Meyemera Selima\" agentid=\"3013524\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"2\" locationid=\"60001003\" locator=\"true\"/>\r\n    <row agent=\"Hormon Kyskasakka\" agentid=\"3013525\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"1\" locationid=\"60001054\" locator=\"false\"/>\r\n    <row agent=\"Ahtakkirai Seimaya\" agentid=\"3013526\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"1\" locationid=\"60001186\" locator=\"false\"/>\r\n    <row agent=\"Laasatainen Jais\" agentid=\"3013527\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"3\" locationid=\"60001240\" locator=\"true\"/>\r\n    <row agent=\"Rouchinela Kultuvas\" agentid=\"3013528\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"3\" locationid=\"60001363\" locator=\"false\"/>\r\n    <row agent=\"Aako Iju\" agentid=\"3013529\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"1\" locationid=\"60001267\" locator=\"false\"/>\r\n    <row agent=\"Gakoho Mawigechi\" agentid=\"3013530\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"4\" locationid=\"60001393\" locator=\"true\"/>\r\n    <row agent=\"Ihankia Kainirjailen\" agentid=\"3013531\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"23\" level=\"2\" locationid=\"60001357\" locator=\"false\"/>\r\n    <row agent=\"Sakutima Asko\" agentid=\"3013532\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"1\" locationid=\"60001339\" locator=\"false\"/>\r\n    <row agent=\"Inima Yakalen\" agentid=\"3013533\" agenttypeid=\"2\" corporationid=\"1000012\" divisionid=\"24\" level=\"1\" locationid=\"60001432\" locator=\"false\"/>\r\n    <row agent=\"Nahtepas Tsora\" agentid=\"3013534\" agenttypeid=\"2\" corporationid=\"1000012\" divisionid=\"23\" level=\"4\" locationid=\"60001429\" locator=\"true\"/>\r\n    <row agent=\"Aikanipas Nilteras\" agentid=\"3013535\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"22\" level=\"2\" locationid=\"60001510\" locator=\"false\"/>\r\n    <row agent=\"Nani Hananeri\" agentid=\"3013536\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"22\" level=\"1\" locationid=\"60001450\" locator=\"false\"/>\r\n    <row agent=\"Kazakoto Yloruga\" agentid=\"3013537\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"23\" level=\"1\" locationid=\"60001492\" locator=\"false\"/>\r\n    <row agent=\"Sawikainen Otsulen\" agentid=\"3013538\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"23\" level=\"3\" locationid=\"60001441\" locator=\"false\"/>\r\n    <row agent=\"Tattabando Anttunen\" agentid=\"3013539\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"24\" level=\"4\" locationid=\"60001453\" locator=\"true\"/>\r\n    <row agent=\"Koslomaa Tuisula\" agentid=\"3013540\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"3\" locationid=\"60001534\" locator=\"false\"/>\r\n    <row agent=\"Uoyano Okasvio\" agentid=\"3013541\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"1\" locationid=\"60001603\" locator=\"false\"/>\r\n    <row agent=\"Huma Itunala\" agentid=\"3013542\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"23\" level=\"4\" locationid=\"60001642\" locator=\"false\"/>\r\n    <row agent=\"Hiemivalen Amara\" agentid=\"3013543\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"24\" level=\"1\" locationid=\"60001576\" locator=\"false\"/>\r\n    <row agent=\"Iijala Unala\" agentid=\"3013544\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"2\" locationid=\"60001627\" locator=\"true\"/>\r\n    <row agent=\"Asukaila Appas\" agentid=\"3013545\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"24\" level=\"3\" locationid=\"60001753\" locator=\"false\"/>\r\n    <row agent=\"Kikui Vaira\" agentid=\"3013546\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"1\" locationid=\"60001711\" locator=\"false\"/>\r\n    <row agent=\"Rikokula Pelokainen\" agentid=\"3013547\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"4\" locationid=\"60001726\" locator=\"false\"/>\r\n    <row agent=\"Oitko Shiomiken\" agentid=\"3013548\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"1\" locationid=\"60001717\" locator=\"false\"/>\r\n    <row agent=\"Kegetelo Utrosen\" agentid=\"3013549\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"23\" level=\"2\" locationid=\"60001672\" locator=\"false\"/>\r\n    <row agent=\"Natsisainen Kepanova\" agentid=\"3013550\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"22\" level=\"1\" locationid=\"60001810\" locator=\"true\"/>\r\n    <row agent=\"Tarpas Isara\" agentid=\"3013551\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"22\" level=\"2\" locationid=\"60001804\" locator=\"false\"/>\r\n    <row agent=\"Uchinushi Tetarumi\" agentid=\"3013552\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"22\" level=\"1\" locationid=\"60001819\" locator=\"false\"/>\r\n    <row agent=\"Iesala Uorvaa\" agentid=\"3013553\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"22\" level=\"3\" locationid=\"60001792\" locator=\"false\"/>\r\n    <row agent=\"Vautaras Hakkonus\" agentid=\"3013554\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"24\" level=\"4\" locationid=\"60001822\" locator=\"false\"/>\r\n    <row agent=\"Ekunori Rilola\" agentid=\"3013555\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"3\" locationid=\"60001930\" locator=\"false\"/>\r\n    <row agent=\"Saapialen Shitikko\" agentid=\"3013556\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001843\" locator=\"false\"/>\r\n    <row agent=\"Buyakielen Tahvulen\" agentid=\"3013557\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001906\" locator=\"true\"/>\r\n    <row agent=\"Waras Haasoshainen\" agentid=\"3013558\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"4\" locationid=\"60001924\" locator=\"true\"/>\r\n    <row agent=\"Asenemi Piekoyashi\" agentid=\"3013559\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"2\" locationid=\"60001864\" locator=\"false\"/>\r\n    <row agent=\"Vestakka Taitaken\" agentid=\"3013560\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"2\" locationid=\"60002008\" locator=\"true\"/>\r\n    <row agent=\"Takazono Orumi\" agentid=\"3013561\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"1\" locationid=\"60002014\" locator=\"false\"/>\r\n    <row agent=\"Nelmedainen Haallaken\" agentid=\"3013562\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"3\" locationid=\"60002020\" locator=\"true\"/>\r\n    <row agent=\"Nimpalius Iharami\" agentid=\"3013563\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"1\" locationid=\"60002041\" locator=\"true\"/>\r\n    <row agent=\"Raisairos Yakuola\" agentid=\"3013564\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"4\" locationid=\"60002059\" locator=\"true\"/>\r\n    <row agent=\"Umoda Hentogaira\" agentid=\"3013565\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"24\" level=\"3\" locationid=\"60002071\" locator=\"false\"/>\r\n    <row agent=\"Asanen Naikka\" agentid=\"3013566\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"22\" level=\"4\" locationid=\"60002212\" locator=\"false\"/>\r\n    <row agent=\"Iena Tano\" agentid=\"3013568\" agenttypeid=\"4\" corporationid=\"1000019\" divisionid=\"18\" level=\"1\" locationid=\"60002188\" locator=\"false\"/>\r\n    <row agent=\"Hasukimi Orpela\" agentid=\"3013569\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"4\" locationid=\"60002284\" locator=\"true\"/>\r\n    <row agent=\"Deurasa Sullaraitoh\" agentid=\"3013570\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"2\" locationid=\"60002347\" locator=\"true\"/>\r\n    <row agent=\"Venkami Tannanmaa\" agentid=\"3013571\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"1\" locationid=\"60002314\" locator=\"false\"/>\r\n    <row agent=\"Burmeda Ikkola\" agentid=\"3013572\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"3\" locationid=\"60002323\" locator=\"false\"/>\r\n    <row agent=\"Kasen Ampas\" agentid=\"3013573\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"1\" locationid=\"60002311\" locator=\"false\"/>\r\n    <row agent=\"Ihimari Ado\" agentid=\"3013574\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"24\" level=\"1\" locationid=\"60002395\" locator=\"false\"/>\r\n    <row agent=\"Kakalin Ilpa\" agentid=\"3013575\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"22\" level=\"2\" locationid=\"60002371\" locator=\"true\"/>\r\n    <row agent=\"Akanula Kera\" agentid=\"3013576\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"23\" level=\"4\" locationid=\"60002413\" locator=\"false\"/>\r\n    <row agent=\"Simanen Heirtoma\" agentid=\"3013577\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"22\" level=\"3\" locationid=\"60002380\" locator=\"false\"/>\r\n    <row agent=\"Asinoro Karmon\" agentid=\"3013578\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"4\" locationid=\"60002476\" locator=\"false\"/>\r\n    <row agent=\"Amsen Kulen\" agentid=\"3013579\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002578\" locator=\"false\"/>\r\n    <row agent=\"Tiga Shitula\" agentid=\"3013580\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"3\" locationid=\"60002692\" locator=\"false\"/>\r\n    <row agent=\"Ieva Omaken\" agentid=\"3013581\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002509\" locator=\"false\"/>\r\n    <row agent=\"Mujaila Yleken\" agentid=\"3013582\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002533\" locator=\"false\"/>\r\n    <row agent=\"Pukegainen Nusonen\" agentid=\"3013583\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"3\" locationid=\"60002722\" locator=\"true\"/>\r\n    <row agent=\"Shas Mugitoh\" agentid=\"3013584\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"1\" locationid=\"60002713\" locator=\"false\"/>\r\n    <row agent=\"Inaken Onnelen\" agentid=\"3013585\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"4\" locationid=\"60002707\" locator=\"false\"/>\r\n    <row agent=\"Inomata Sokukoma\" agentid=\"3013586\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"1\" locationid=\"60002731\" locator=\"false\"/>\r\n    <row agent=\"Atshanen Irjaken\" agentid=\"3013587\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"2\" locationid=\"60002704\" locator=\"false\"/>\r\n    <row agent=\"Arkeshi Irjaken\" agentid=\"3013588\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"4\" locationid=\"60002770\" locator=\"false\"/>\r\n    <row agent=\"Hinnen Akonoinen\" agentid=\"3013589\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"3\" locationid=\"60002902\" locator=\"true\"/>\r\n    <row agent=\"Aumio Kuppanen\" agentid=\"3013590\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"1\" locationid=\"60002869\" locator=\"false\"/>\r\n    <row agent=\"Uitzi Ase\" agentid=\"3013591\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"1\" locationid=\"60002794\" locator=\"false\"/>\r\n    <row agent=\"Hitsunen Raurimi\" agentid=\"3013592\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"23\" level=\"2\" locationid=\"60002755\" locator=\"false\"/>\r\n    <row agent=\"Riuranen Nila\" agentid=\"3013593\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"2\" locationid=\"60002935\" locator=\"true\"/>\r\n    <row agent=\"Okkiemi Mivalve\" agentid=\"3013594\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"3\" locationid=\"60003004\" locator=\"true\"/>\r\n    <row agent=\"Inikko Sirsashainen\" agentid=\"3013595\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"1\" locationid=\"60002992\" locator=\"true\"/>\r\n    <row agent=\"Ueminen Okkato\" agentid=\"3013596\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"4\" locationid=\"60003028\" locator=\"false\"/>\r\n    <row agent=\"Orane Munevailen\" agentid=\"3013597\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"1\" locationid=\"60003010\" locator=\"false\"/>\r\n    <row agent=\"Vari Unti\" agentid=\"3013598\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"22\" level=\"3\" locationid=\"60003082\" locator=\"false\"/>\r\n    <row agent=\"Venogas Kaserino\" agentid=\"3013599\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"22\" level=\"4\" locationid=\"60003106\" locator=\"false\"/>\r\n    <row agent=\"Outabe Turttuvas\" agentid=\"3013600\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"22\" level=\"1\" locationid=\"60003085\" locator=\"false\"/>\r\n    <row agent=\"Tsukaya Ippatoh\" agentid=\"3013601\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"24\" level=\"1\" locationid=\"60003112\" locator=\"false\"/>\r\n    <row agent=\"Porichi Akajairos\" agentid=\"3013602\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"22\" level=\"2\" locationid=\"60003061\" locator=\"false\"/>\r\n    <row agent=\"Palmaa Sawa\" agentid=\"3013603\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"22\" level=\"1\" locationid=\"60003175\" locator=\"false\"/>\r\n    <row agent=\"Jun Etsatei\" agentid=\"3013604\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"22\" level=\"2\" locationid=\"60003142\" locator=\"false\"/>\r\n    <row agent=\"Vanunaima Antamaa\" agentid=\"3013605\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"22\" level=\"1\" locationid=\"60003178\" locator=\"false\"/>\r\n    <row agent=\"Patesobe Omokka\" agentid=\"3013606\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"24\" level=\"4\" locationid=\"60003136\" locator=\"false\"/>\r\n    <row agent=\"Vilkko Reikatoh\" agentid=\"3013607\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"24\" level=\"3\" locationid=\"60003172\" locator=\"true\"/>\r\n    <row agent=\"Ylomo Tuomi\" agentid=\"3013608\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"22\" level=\"4\" locationid=\"60003208\" locator=\"false\"/>\r\n    <row agent=\"Shihayashi Kaistaken\" agentid=\"3013609\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"22\" level=\"3\" locationid=\"60003199\" locator=\"false\"/>\r\n    <row agent=\"Tugo Maljanen\" agentid=\"3013610\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"22\" level=\"2\" locationid=\"60003214\" locator=\"false\"/>\r\n    <row agent=\"Asela Etasen\" agentid=\"3013611\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"22\" level=\"1\" locationid=\"60003235\" locator=\"true\"/>\r\n    <row agent=\"Onima Asogaitoh\" agentid=\"3013612\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"24\" level=\"1\" locationid=\"60003211\" locator=\"false\"/>\r\n    <row agent=\"Hitolailen Harenen\" agentid=\"3013613\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"24\" level=\"1\" locationid=\"60003319\" locator=\"false\"/>\r\n    <row agent=\"Ayeroilen Shuras\" agentid=\"3013614\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"22\" level=\"3\" locationid=\"60003292\" locator=\"false\"/>\r\n    <row agent=\"Kouyonen Sandan\" agentid=\"3013615\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"24\" level=\"4\" locationid=\"60003277\" locator=\"false\"/>\r\n    <row agent=\"Hormon Vitaima\" agentid=\"3013616\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"24\" level=\"1\" locationid=\"60003253\" locator=\"false\"/>\r\n    <row agent=\"Navila Kosikko\" agentid=\"3013617\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"22\" level=\"2\" locationid=\"60003313\" locator=\"false\"/>\r\n    <row agent=\"Henen Asosainen\" agentid=\"3013618\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"3\" locationid=\"60003367\" locator=\"true\"/>\r\n    <row agent=\"Ahtiainen Pevas\" agentid=\"3013619\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"22\" level=\"2\" locationid=\"60003385\" locator=\"false\"/>\r\n    <row agent=\"Aizakonen Notoras\" agentid=\"3013620\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"1\" locationid=\"60003346\" locator=\"false\"/>\r\n    <row agent=\"Jukkizaras Aboraala\" agentid=\"3013621\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"4\" locationid=\"60003358\" locator=\"true\"/>\r\n    <row agent=\"Isawara Kammon\" agentid=\"3013622\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"22\" level=\"1\" locationid=\"60003355\" locator=\"false\"/>\r\n    <row agent=\"Aarnalen Livonochi\" agentid=\"3013623\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"22\" level=\"1\" locationid=\"60003412\" locator=\"false\"/>\r\n    <row agent=\"Tsama Kurikoni\" agentid=\"3013624\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"22\" level=\"4\" locationid=\"60003436\" locator=\"true\"/>\r\n    <row agent=\"Shatsu Heilanen\" agentid=\"3013625\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"22\" level=\"2\" locationid=\"60003442\" locator=\"false\"/>\r\n    <row agent=\"Umutala Ohmamon\" agentid=\"3013626\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"22\" level=\"1\" locationid=\"60003439\" locator=\"false\"/>\r\n    <row agent=\"Oraa Ranola\" agentid=\"3013627\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"22\" level=\"3\" locationid=\"60003403\" locator=\"false\"/>\r\n    <row agent=\"Inunoshi Ouchontanen\" agentid=\"3013628\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003700\" locator=\"false\"/>\r\n    <row agent=\"Uesti Rappalen\" agentid=\"3013629\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003526\" locator=\"false\"/>\r\n    <row agent=\"Pauraken Yasa\" agentid=\"3013630\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"22\" level=\"4\" locationid=\"60003652\" locator=\"true\"/>\r\n    <row agent=\"Samesa Kiramochi\" agentid=\"3013631\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003574\" locator=\"false\"/>\r\n    <row agent=\"Haanakiemi Tokazima\" agentid=\"3013632\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003556\" locator=\"false\"/>\r\n    <row agent=\"Hakodan Tia\" agentid=\"3013633\" agenttypeid=\"2\" corporationid=\"1000034\" divisionid=\"22\" level=\"1\" locationid=\"60003748\" locator=\"false\"/>\r\n    <row agent=\"Iesa Suokinainen\" agentid=\"3013634\" agenttypeid=\"2\" corporationid=\"1000034\" divisionid=\"24\" level=\"4\" locationid=\"60003739\" locator=\"true\"/>\r\n    <row agent=\"Eki Notta\" agentid=\"3013635\" agenttypeid=\"2\" corporationid=\"1000034\" divisionid=\"24\" level=\"2\" locationid=\"60003733\" locator=\"true\"/>\r\n    <row agent=\"Tennen Inato\" agentid=\"3013636\" agenttypeid=\"2\" corporationid=\"1000034\" divisionid=\"22\" level=\"3\" locationid=\"60003751\" locator=\"true\"/>\r\n    <row agent=\"Atiai Obani\" agentid=\"3013637\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003790\" locator=\"false\"/>\r\n    <row agent=\"Okasa Kookkalen\" agentid=\"3013638\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003892\" locator=\"false\"/>\r\n    <row agent=\"Atshodan Kiraski\" agentid=\"3013639\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003805\" locator=\"false\"/>\r\n    <row agent=\"Seltino Ehken\" agentid=\"3013640\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"3\" locationid=\"60003841\" locator=\"true\"/>\r\n    <row agent=\"Toras Egassuo\" agentid=\"3013641\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60003787\" locator=\"false\"/>\r\n    <row agent=\"Onki Aizagenen\" agentid=\"3013642\" agenttypeid=\"2\" corporationid=\"1000141\" divisionid=\"23\" level=\"1\" locationid=\"60013261\" locator=\"false\"/>\r\n    <row agent=\"Vola Nousela\" agentid=\"3013643\" agenttypeid=\"2\" corporationid=\"1000036\" divisionid=\"24\" level=\"2\" locationid=\"60003937\" locator=\"true\"/>\r\n    <row agent=\"Okage Sukarala\" agentid=\"3013644\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"24\" level=\"4\" locationid=\"60003961\" locator=\"true\"/>\r\n    <row agent=\"Verupas Bagino\" agentid=\"3013645\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"24\" level=\"1\" locationid=\"60003952\" locator=\"false\"/>\r\n    <row agent=\"Onno Akova\" agentid=\"3013646\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"24\" level=\"3\" locationid=\"60003943\" locator=\"true\"/>\r\n    <row agent=\"Olonashi Sahtokka\" agentid=\"3013647\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"24\" level=\"2\" locationid=\"60003955\" locator=\"false\"/>\r\n    <row agent=\"Hiustinen Kantee\" agentid=\"3013648\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"2\" locationid=\"60003994\" locator=\"true\"/>\r\n    <row agent=\"Lipetenen Anttovas\" agentid=\"3013649\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"1\" locationid=\"60003997\" locator=\"false\"/>\r\n    <row agent=\"Sunada Aaltusen\" agentid=\"3013650\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"3\" locationid=\"60003976\" locator=\"true\"/>\r\n    <row agent=\"Uuhura Arikari\" agentid=\"3013651\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"4\" locationid=\"60003985\" locator=\"false\"/>\r\n    <row agent=\"Tsutara Yorsen\" agentid=\"3013652\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"22\" level=\"4\" locationid=\"60004027\" locator=\"true\"/>\r\n    <row agent=\"Tuka Tuulola\" agentid=\"3013653\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"2\" locationid=\"60004033\" locator=\"true\"/>\r\n    <row agent=\"Danani Jomon\" agentid=\"3013654\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"3\" locationid=\"60004015\" locator=\"false\"/>\r\n    <row agent=\"Kihtukainen Etsanen\" agentid=\"3013655\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"1\" locationid=\"60004030\" locator=\"false\"/>\r\n    <row agent=\"Taksaken Ihoya\" agentid=\"3013656\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"1\" locationid=\"60004078\" locator=\"false\"/>\r\n    <row agent=\"Kustiken Ikalmala\" agentid=\"3013657\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"4\" locationid=\"60004057\" locator=\"false\"/>\r\n    <row agent=\"Maaskonen Okkiemi\" agentid=\"3013658\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"22\" level=\"1\" locationid=\"60004081\" locator=\"false\"/>\r\n    <row agent=\"Ihamailen Bassunen\" agentid=\"3013659\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"22\" level=\"3\" locationid=\"60004060\" locator=\"true\"/>\r\n    <row agent=\"Ruutu Kubira\" agentid=\"3013660\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"2\" locationid=\"60004051\" locator=\"true\"/>\r\n    <row agent=\"Oziki Asazaiken\" agentid=\"3013661\" agenttypeid=\"2\" corporationid=\"1000044\" divisionid=\"22\" level=\"1\" locationid=\"60004444\" locator=\"false\"/>\r\n    <row agent=\"Kalakune Ozama\" agentid=\"3013662\" agenttypeid=\"2\" corporationid=\"1000044\" divisionid=\"22\" level=\"2\" locationid=\"60004441\" locator=\"false\"/>\r\n    <row agent=\"Seitsatei Mutanuma\" agentid=\"3013663\" agenttypeid=\"2\" corporationid=\"1000044\" divisionid=\"22\" level=\"3\" locationid=\"60004435\" locator=\"true\"/>\r\n    <row agent=\"Versanen Yarida\" agentid=\"3013664\" agenttypeid=\"2\" corporationid=\"1000044\" divisionid=\"22\" level=\"4\" locationid=\"60004429\" locator=\"true\"/>\r\n    <row agent=\"Ogunuchi Tikkira\" agentid=\"3013665\" agenttypeid=\"2\" corporationid=\"1000044\" divisionid=\"22\" level=\"1\" locationid=\"60004426\" locator=\"false\"/>\r\n    <row agent=\"Tikkira Auvoken\" agentid=\"3013666\" agenttypeid=\"2\" corporationid=\"1000045\" divisionid=\"22\" level=\"2\" locationid=\"60004459\" locator=\"false\"/>\r\n    <row agent=\"Ruukiken Ittoh\" agentid=\"3013667\" agenttypeid=\"2\" corporationid=\"1000045\" divisionid=\"22\" level=\"1\" locationid=\"60004456\" locator=\"false\"/>\r\n    <row agent=\"Sazonemi Oilja\" agentid=\"3013668\" agenttypeid=\"2\" corporationid=\"1000045\" divisionid=\"22\" level=\"4\" locationid=\"60004462\" locator=\"false\"/>\r\n    <row agent=\"Ishaken Viskami\" agentid=\"3013669\" agenttypeid=\"2\" corporationid=\"1000045\" divisionid=\"22\" level=\"1\" locationid=\"60004468\" locator=\"false\"/>\r\n    <row agent=\"Egesulf Drorald\" agentid=\"3013670\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"24\" level=\"2\" locationid=\"60004510\" locator=\"false\"/>\r\n    <row agent=\"Eatter Askonger\" agentid=\"3013671\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"24\" level=\"1\" locationid=\"60004489\" locator=\"false\"/>\r\n    <row agent=\"Eirulf Vagaldi\" agentid=\"3013672\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"24\" level=\"4\" locationid=\"60004486\" locator=\"false\"/>\r\n    <row agent=\"Avald Irpa\" agentid=\"3013673\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"24\" level=\"1\" locationid=\"60004507\" locator=\"false\"/>\r\n    <row agent=\"Heskidi Rammilder\" agentid=\"3013674\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"24\" level=\"3\" locationid=\"60004495\" locator=\"false\"/>\r\n    <row agent=\"Banaren Otter\" agentid=\"3013675\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"24\" level=\"1\" locationid=\"60004537\" locator=\"false\"/>\r\n    <row agent=\"Tatveger Gurtirtad\" agentid=\"3013676\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"24\" level=\"1\" locationid=\"60004549\" locator=\"false\"/>\r\n    <row agent=\"Ansbiget Ega\" agentid=\"3013677\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"24\" level=\"4\" locationid=\"60004525\" locator=\"false\"/>\r\n    <row agent=\"Omekitur Modilkron\" agentid=\"3013678\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"24\" level=\"3\" locationid=\"60004540\" locator=\"false\"/>\r\n    <row agent=\"Gollin Harnhandar\" agentid=\"3013679\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"24\" level=\"2\" locationid=\"60004531\" locator=\"false\"/>\r\n    <row agent=\"Rornsberon Astrartoda\" agentid=\"3013680\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"24\" level=\"2\" locationid=\"60004579\" locator=\"true\"/>\r\n    <row agent=\"Nivesodold Tirt\" agentid=\"3013681\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"24\" level=\"4\" locationid=\"60004573\" locator=\"true\"/>\r\n    <row agent=\"Jaend Kurnhulber\" agentid=\"3013682\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"22\" level=\"1\" locationid=\"60004567\" locator=\"false\"/>\r\n    <row agent=\"Utgert Holtold\" agentid=\"3013683\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"22\" level=\"3\" locationid=\"60004576\" locator=\"false\"/>\r\n    <row agent=\"Engran Ogen\" agentid=\"3013684\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"24\" level=\"1\" locationid=\"60004582\" locator=\"false\"/>\r\n    <row agent=\"Paungekur Eyjerleinn\" agentid=\"3013685\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"4\" locationid=\"60004609\" locator=\"false\"/>\r\n    <row agent=\"Karljoskin Engriok\" agentid=\"3013686\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"3\" locationid=\"60004603\" locator=\"true\"/>\r\n    <row agent=\"Asmiko Andgemora\" agentid=\"3013687\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"2\" locationid=\"60004597\" locator=\"false\"/>\r\n    <row agent=\"Agdennur Wettin\" agentid=\"3013688\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"1\" locationid=\"60004621\" locator=\"false\"/>\r\n    <row agent=\"Gotfrik Arkulf\" agentid=\"3013689\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"1\" locationid=\"60004600\" locator=\"false\"/>\r\n    <row agent=\"Eatinduard Frisiggo\" agentid=\"3013690\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"2\" locationid=\"60004627\" locator=\"false\"/>\r\n    <row agent=\"Erlelinni Bjarad\" agentid=\"3013691\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"1\" locationid=\"60004726\" locator=\"false\"/>\r\n    <row agent=\"Hurakuin Eviadad\" agentid=\"3013692\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"3\" locationid=\"60004636\" locator=\"true\"/>\r\n    <row agent=\"Hannballen Ofalerad\" agentid=\"3013693\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"1\" locationid=\"60004660\" locator=\"false\"/>\r\n    <row agent=\"Faloldar Alfstard\" agentid=\"3013694\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"22\" level=\"4\" locationid=\"60004639\" locator=\"false\"/>\r\n    <row agent=\"Aestrik Kinheri\" agentid=\"3013695\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"22\" level=\"3\" locationid=\"60004834\" locator=\"false\"/>\r\n    <row agent=\"Orien Talt\" agentid=\"3013696\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004876\" locator=\"true\"/>\r\n    <row agent=\"Oldit Sandadden\" agentid=\"3013697\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004801\" locator=\"false\"/>\r\n    <row agent=\"Aldbian Okalsteinn\" agentid=\"3013698\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"22\" level=\"4\" locationid=\"60004840\" locator=\"true\"/>\r\n    <row agent=\"Hapen Eystilus\" agentid=\"3013699\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004906\" locator=\"true\"/>\r\n    <row agent=\"Alfingrund Kodahle\" agentid=\"3013700\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"4\" locationid=\"60005038\" locator=\"true\"/>\r\n    <row agent=\"Fankina Ekgegulf\" agentid=\"3013701\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"2\" locationid=\"60004963\" locator=\"false\"/>\r\n    <row agent=\"Jorbadold Golfortere\" agentid=\"3013702\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"1\" locationid=\"60004948\" locator=\"false\"/>\r\n    <row agent=\"Audodus Uridden\" agentid=\"3013703\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"1\" locationid=\"60005032\" locator=\"false\"/>\r\n    <row agent=\"Tanridad Ansolhad\" agentid=\"3013704\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"3\" locationid=\"60004936\" locator=\"false\"/>\r\n    <row agent=\"Iksmur Aggert\" agentid=\"3013705\" agenttypeid=\"2\" corporationid=\"1000053\" divisionid=\"24\" level=\"1\" locationid=\"60005050\" locator=\"false\"/>\r\n    <row agent=\"Weigogget Tigigel\" agentid=\"3013706\" agenttypeid=\"2\" corporationid=\"1000053\" divisionid=\"22\" level=\"3\" locationid=\"60005047\" locator=\"true\"/>\r\n    <row agent=\"Asclue Malyncke\" agentid=\"3013707\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"2\" locationid=\"60010216\" locator=\"false\"/>\r\n    <row agent=\"Saluvon Brilbrault\" agentid=\"3013708\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"4\" locationid=\"60010219\" locator=\"false\"/>\r\n    <row agent=\"Purlieu Guy\" agentid=\"3013709\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"22\" level=\"1\" locationid=\"60010171\" locator=\"false\"/>\r\n    <row agent=\"Bourard Yvenckbrault\" agentid=\"3013710\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"1\" locationid=\"60010270\" locator=\"true\"/>\r\n    <row agent=\"Ranasenne Vinck\" agentid=\"3013711\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"22\" level=\"3\" locationid=\"60010243\" locator=\"true\"/>\r\n    <row agent=\"Marjamette Arronne\" agentid=\"3013712\" agenttypeid=\"4\" corporationid=\"1000102\" divisionid=\"18\" level=\"1\" locationid=\"60010372\" locator=\"false\"/>\r\n    <row agent=\"Dolacier Jarret\" agentid=\"3013713\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"23\" level=\"1\" locationid=\"60010348\" locator=\"false\"/>\r\n    <row agent=\"Rau Ancounghen\" agentid=\"3013714\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"23\" level=\"3\" locationid=\"60010312\" locator=\"false\"/>\r\n    <row agent=\"Argre Derwycx\" agentid=\"3013715\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"23\" level=\"4\" locationid=\"60010324\" locator=\"false\"/>\r\n    <row agent=\"Mesch Ouc\" agentid=\"3013716\" agenttypeid=\"4\" corporationid=\"1000102\" divisionid=\"18\" level=\"2\" locationid=\"60010333\" locator=\"false\"/>\r\n    <row agent=\"Yveusnages Elelle\" agentid=\"3013717\" agenttypeid=\"2\" corporationid=\"1000103\" divisionid=\"23\" level=\"3\" locationid=\"60010393\" locator=\"false\"/>\r\n    <row agent=\"Egghoolleere Maneque\" agentid=\"3013719\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"24\" level=\"1\" locationid=\"60010477\" locator=\"false\"/>\r\n    <row agent=\"Tertlaert Auste\" agentid=\"3013720\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"4\" locationid=\"60010405\" locator=\"false\"/>\r\n    <row agent=\"Mallemette Amberghe\" agentid=\"3013721\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"2\" locationid=\"60010450\" locator=\"false\"/>\r\n    <row agent=\"Illallolie Dutier\" agentid=\"3013722\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"24\" level=\"1\" locationid=\"60010456\" locator=\"false\"/>\r\n    <row agent=\"Goteau Amondes\" agentid=\"3013723\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"1\" locationid=\"60010543\" locator=\"true\"/>\r\n    <row agent=\"Baemedier Andenget\" agentid=\"3013724\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"4\" locationid=\"60010558\" locator=\"false\"/>\r\n    <row agent=\"Jearlamais Danaert\" agentid=\"3013725\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"2\" locationid=\"60010534\" locator=\"false\"/>\r\n    <row agent=\"Surrency Afruvin\" agentid=\"3013726\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"3\" locationid=\"60010498\" locator=\"true\"/>\r\n    <row agent=\"Oirard Roirs\" agentid=\"3013727\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"22\" level=\"1\" locationid=\"60010564\" locator=\"false\"/>\r\n    <row agent=\"Were Amare\" agentid=\"3013728\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"2\" locationid=\"60010678\" locator=\"false\"/>\r\n    <row agent=\"Chalenet Plarrovon\" agentid=\"3013729\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"24\" level=\"4\" locationid=\"60010687\" locator=\"true\"/>\r\n    <row agent=\"Atris Dubesune\" agentid=\"3013730\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"1\" locationid=\"60010684\" locator=\"true\"/>\r\n    <row agent=\"Weeles Illette\" agentid=\"3013731\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"1\" locationid=\"60010642\" locator=\"true\"/>\r\n    <row agent=\"Aechteroodt Leonardieu\" agentid=\"3013732\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"3\" locationid=\"60010699\" locator=\"false\"/>\r\n    <row agent=\"Ossoen Gesevieve\" agentid=\"3013733\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"2\" locationid=\"60010627\" locator=\"true\"/>\r\n    <row agent=\"Malenyn Olemy\" agentid=\"3013734\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"3\" locationid=\"60010579\" locator=\"false\"/>\r\n    <row agent=\"Aframens Agaleta\" agentid=\"3013735\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"1\" locationid=\"60010624\" locator=\"false\"/>\r\n    <row agent=\"Aernoltene Piliette\" agentid=\"3013736\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"1\" locationid=\"60010597\" locator=\"false\"/>\r\n    <row agent=\"Ahriene Phinard\" agentid=\"3013737\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"4\" locationid=\"60010612\" locator=\"false\"/>\r\n    <row agent=\"Lornautare Allaina\" agentid=\"3013738\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"23\" level=\"2\" locationid=\"60010750\" locator=\"false\"/>\r\n    <row agent=\"Aurecque Marbette\" agentid=\"3013739\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"3\" locationid=\"60010744\" locator=\"false\"/>\r\n    <row agent=\"Swaur Blarier\" agentid=\"3013740\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"23\" level=\"1\" locationid=\"60010822\" locator=\"false\"/>\r\n    <row agent=\"Yvave Faystierouck\" agentid=\"3013741\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"1\" locationid=\"60010735\" locator=\"false\"/>\r\n    <row agent=\"Dolende Nardieu\" agentid=\"3013742\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"4\" locationid=\"60011104\" locator=\"false\"/>\r\n    <row agent=\"Bre Arbochtet\" agentid=\"3013743\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60011044\" locator=\"false\"/>\r\n    <row agent=\"Caur Janvirignel\" agentid=\"3013744\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60011005\" locator=\"false\"/>\r\n    <row agent=\"Sairuttire Arcourt\" agentid=\"3013745\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60011080\" locator=\"false\"/>\r\n    <row agent=\"Crierync Artoelloure\" agentid=\"3013746\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"3\" locationid=\"60011050\" locator=\"true\"/>\r\n    <row agent=\"Sitaleere Beene\" agentid=\"3013747\" agenttypeid=\"4\" corporationid=\"1000109\" divisionid=\"18\" level=\"4\" locationid=\"60010927\" locator=\"true\"/>\r\n    <row agent=\"Grict Tholere\" agentid=\"3013748\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"22\" level=\"1\" locationid=\"60010948\" locator=\"false\"/>\r\n    <row agent=\"Vivanier Amaert\" agentid=\"3013749\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"22\" level=\"1\" locationid=\"60010933\" locator=\"false\"/>\r\n    <row agent=\"Houruene Obenckbroodt\" agentid=\"3013750\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"22\" level=\"2\" locationid=\"60010930\" locator=\"false\"/>\r\n    <row agent=\"Charie Porelotta\" agentid=\"3013751\" agenttypeid=\"4\" corporationid=\"1000109\" divisionid=\"18\" level=\"3\" locationid=\"60010912\" locator=\"false\"/>\r\n    <row agent=\"Malirout Charteau\" agentid=\"3013752\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"3\" locationid=\"60009397\" locator=\"false\"/>\r\n    <row agent=\"Momel Ivenckbrouck\" agentid=\"3013753\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"1\" locationid=\"60009334\" locator=\"false\"/>\r\n    <row agent=\"Slavraert Hasier\" agentid=\"3013754\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"2\" locationid=\"60009325\" locator=\"false\"/>\r\n    <row agent=\"Eurancke Elst\" agentid=\"3013755\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"1\" locationid=\"60009316\" locator=\"false\"/>\r\n    <row agent=\"Adeset Avagnier\" agentid=\"3013756\" agenttypeid=\"2\" corporationid=\"1000096\" divisionid=\"22\" level=\"3\" locationid=\"60009427\" locator=\"false\"/>\r\n    <row agent=\"Armant Britlarcier\" agentid=\"3013757\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"3\" locationid=\"60009454\" locator=\"true\"/>\r\n    <row agent=\"Mayeninc Rolmain\" agentid=\"3013758\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"4\" locationid=\"60009445\" locator=\"false\"/>\r\n    <row agent=\"Voise Anchattel\" agentid=\"3013759\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"2\" locationid=\"60009502\" locator=\"false\"/>\r\n    <row agent=\"Rairaine Haatenne\" agentid=\"3013760\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"1\" locationid=\"60009457\" locator=\"false\"/>\r\n    <row agent=\"Xanremuene Loinon\" agentid=\"3013761\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"1\" locationid=\"60009508\" locator=\"true\"/>\r\n    <row agent=\"Amoorne Amaloque\" agentid=\"3013762\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"1\" locationid=\"60009556\" locator=\"false\"/>\r\n    <row agent=\"Aunchaert Elyrere\" agentid=\"3013763\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"4\" locationid=\"60009610\" locator=\"false\"/>\r\n    <row agent=\"Coene Slavraert\" agentid=\"3013764\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"1\" locationid=\"60009658\" locator=\"false\"/>\r\n    <row agent=\"Julorotta Steemaere\" agentid=\"3013765\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"2\" locationid=\"60009568\" locator=\"false\"/>\r\n    <row agent=\"Onins Gyollelle\" agentid=\"3013766\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"22\" level=\"3\" locationid=\"60009577\" locator=\"true\"/>\r\n    <row agent=\"Noeravryn Warvoere\" agentid=\"3013767\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"2\" locationid=\"60009814\" locator=\"true\"/>\r\n    <row agent=\"Ghyroles Echesonon\" agentid=\"3013768\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"24\" level=\"1\" locationid=\"60009736\" locator=\"false\"/>\r\n    <row agent=\"Doveryks Canson\" agentid=\"3013769\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"1\" locationid=\"60009793\" locator=\"false\"/>\r\n    <row agent=\"Muebles Athartault\" agentid=\"3013770\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"4\" locationid=\"60009808\" locator=\"false\"/>\r\n    <row agent=\"Veserot Edminouner\" agentid=\"3013771\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"4\" locationid=\"60010039\" locator=\"false\"/>\r\n    <row agent=\"Cestille Oducier\" agentid=\"3013772\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"1\" locationid=\"60009919\" locator=\"false\"/>\r\n    <row agent=\"Azuritte Vifrobahnel\" agentid=\"3013773\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60009982\" locator=\"false\"/>\r\n    <row agent=\"Erostault Rosabvrollis\" agentid=\"3013774\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60010075\" locator=\"false\"/>\r\n    <row agent=\"Amanckbraert Chamemout\" agentid=\"3013775\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60009880\" locator=\"false\"/>\r\n    <row agent=\"Ninsas Badun\" agentid=\"3013776\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"2\" locationid=\"60008167\" locator=\"false\"/>\r\n    <row agent=\"Aforsa Mazinen\" agentid=\"3013777\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"22\" level=\"1\" locationid=\"60008242\" locator=\"false\"/>\r\n    <row agent=\"Kontradyr Gadeh\" agentid=\"3013778\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"3\" locationid=\"60008245\" locator=\"true\"/>\r\n    <row agent=\"Edami Dantan\" agentid=\"3013779\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"4\" locationid=\"60008164\" locator=\"true\"/>\r\n    <row agent=\"Yaphal Mahle\" agentid=\"3013780\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"1\" locationid=\"60008182\" locator=\"false\"/>\r\n    <row agent=\"Ginhada Rotaveru\" agentid=\"3013781\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008281\" locator=\"false\"/>\r\n    <row agent=\"Arab Afivad\" agentid=\"3013782\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008254\" locator=\"true\"/>\r\n    <row agent=\"Sanamar Mesimu\" agentid=\"3013783\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"2\" locationid=\"60008287\" locator=\"false\"/>\r\n    <row agent=\"Kurain Machedah\" agentid=\"3013784\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"4\" locationid=\"60008275\" locator=\"true\"/>\r\n    <row agent=\"Satna Chadura\" agentid=\"3013785\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008347\" locator=\"false\"/>\r\n    <row agent=\"Ravin Mehnih\" agentid=\"3013786\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"22\" level=\"4\" locationid=\"60008413\" locator=\"true\"/>\r\n    <row agent=\"Oyoorad Harah\" agentid=\"3013787\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008431\" locator=\"true\"/>\r\n    <row agent=\"Abiar Sodhooh\" agentid=\"3013788\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008422\" locator=\"true\"/>\r\n    <row agent=\"Zatsyaki Zageban\" agentid=\"3013789\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"3\" locationid=\"60008482\" locator=\"false\"/>\r\n    <row agent=\"Ajenian Asoone\" agentid=\"3013790\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008443\" locator=\"true\"/>\r\n    <row agent=\"Homya Kimas\" agentid=\"3013791\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"1\" locationid=\"60008584\" locator=\"false\"/>\r\n    <row agent=\"Herou Ruhti\" agentid=\"3013792\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"1\" locationid=\"60008512\" locator=\"false\"/>\r\n    <row agent=\"Gudidya Shalinilena\" agentid=\"3013793\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"4\" locationid=\"60008533\" locator=\"true\"/>\r\n    <row agent=\"Riasan Sussal\" agentid=\"3013794\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"2\" locationid=\"60008545\" locator=\"true\"/>\r\n    <row agent=\"Kuti Seme\" agentid=\"3013795\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"3\" locationid=\"60008497\" locator=\"false\"/>\r\n    <row agent=\"Wamera Ahrzia\" agentid=\"3013796\" agenttypeid=\"2\" corporationid=\"1000085\" divisionid=\"22\" level=\"2\" locationid=\"60008491\" locator=\"false\"/>\r\n    <row agent=\"Yuravar Azbos\" agentid=\"3013797\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"24\" level=\"1\" locationid=\"60008680\" locator=\"false\"/>\r\n    <row agent=\"Rakhshah Kieram\" agentid=\"3013798\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"22\" level=\"3\" locationid=\"60008659\" locator=\"true\"/>\r\n    <row agent=\"Boassie Savan\" agentid=\"3013799\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"24\" level=\"2\" locationid=\"60008671\" locator=\"true\"/>\r\n    <row agent=\"Pomik Haromi\" agentid=\"3013800\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"24\" level=\"4\" locationid=\"60008674\" locator=\"false\"/>\r\n    <row agent=\"Fisha Gimamin\" agentid=\"3013801\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"22\" level=\"2\" locationid=\"60008632\" locator=\"false\"/>\r\n    <row agent=\"Banjana Yotana\" agentid=\"3013802\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"24\" level=\"1\" locationid=\"60008635\" locator=\"false\"/>\r\n    <row agent=\"Bubsama Hothomouh\" agentid=\"3013803\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"22\" level=\"1\" locationid=\"60008617\" locator=\"false\"/>\r\n    <row agent=\"Ahrantoon Gyaidak\" agentid=\"3013804\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"22\" level=\"3\" locationid=\"60008629\" locator=\"false\"/>\r\n    <row agent=\"Poom Abambo\" agentid=\"3013805\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"22\" level=\"4\" locationid=\"60008641\" locator=\"true\"/>\r\n    <row agent=\"Ahka Dolir\" agentid=\"3013806\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"24\" level=\"1\" locationid=\"60008698\" locator=\"false\"/>\r\n    <row agent=\"Bardih Detzcha\" agentid=\"3013807\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"22\" level=\"1\" locationid=\"60008713\" locator=\"false\"/>\r\n    <row agent=\"Chanpereshou Satetah\" agentid=\"3013808\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"22\" level=\"2\" locationid=\"60008710\" locator=\"false\"/>\r\n    <row agent=\"Zehmost Alte\" agentid=\"3013809\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"22\" level=\"4\" locationid=\"60008716\" locator=\"true\"/>\r\n    <row agent=\"Akouh Hishmich\" agentid=\"3013810\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"22\" level=\"3\" locationid=\"60008692\" locator=\"true\"/>\r\n    <row agent=\"Gunzaza Johakhzam\" agentid=\"3013811\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"24\" level=\"1\" locationid=\"60008725\" locator=\"false\"/>\r\n    <row agent=\"Enarem Okah\" agentid=\"3013812\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"22\" level=\"4\" locationid=\"60008749\" locator=\"false\"/>\r\n    <row agent=\"Palaimen Aseni\" agentid=\"3013813\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"22\" level=\"1\" locationid=\"60008740\" locator=\"true\"/>\r\n    <row agent=\"Tathaza Manamy\" agentid=\"3013814\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"22\" level=\"2\" locationid=\"60008755\" locator=\"false\"/>\r\n    <row agent=\"Irush Emroh\" agentid=\"3013815\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"22\" level=\"3\" locationid=\"60008728\" locator=\"true\"/>\r\n    <row agent=\"Ershol Arajah\" agentid=\"3013816\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"24\" level=\"1\" locationid=\"60008764\" locator=\"false\"/>\r\n    <row agent=\"Nardiarang Kaloye\" agentid=\"3013817\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"24\" level=\"3\" locationid=\"60008776\" locator=\"true\"/>\r\n    <row agent=\"Karridoo Gachat\" agentid=\"3013818\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"24\" level=\"2\" locationid=\"60008761\" locator=\"false\"/>\r\n    <row agent=\"Camal Evian\" agentid=\"3013819\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"22\" level=\"4\" locationid=\"60008779\" locator=\"false\"/>\r\n    <row agent=\"Reranat Kamathah\" agentid=\"3013820\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"22\" level=\"1\" locationid=\"60008767\" locator=\"false\"/>\r\n    <row agent=\"Tiyad Kanora\" agentid=\"3013821\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"3\" locationid=\"60008911\" locator=\"true\"/>\r\n    <row agent=\"Lidarbha Onzi\" agentid=\"3013822\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008806\" locator=\"false\"/>\r\n    <row agent=\"Fassikiel Poozrarariz\" agentid=\"3013823\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008881\" locator=\"false\"/>\r\n    <row agent=\"Aven Aurar\" agentid=\"3013824\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"2\" locationid=\"60008884\" locator=\"false\"/>\r\n    <row agent=\"Yasri Paghisi\" agentid=\"3013825\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"4\" locationid=\"60008995\" locator=\"false\"/>\r\n    <row agent=\"Sagan Aurthen\" agentid=\"3013826\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"1\" locationid=\"60009001\" locator=\"false\"/>\r\n    <row agent=\"Nouta Dahiva\" agentid=\"3013827\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"22\" level=\"1\" locationid=\"60008992\" locator=\"false\"/>\r\n    <row agent=\"Sharrikh Ozuden\" agentid=\"3013828\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"2\" locationid=\"60008968\" locator=\"true\"/>\r\n    <row agent=\"Varatsyi Asaiah\" agentid=\"3013829\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"3\" locationid=\"60009004\" locator=\"false\"/>\r\n    <row agent=\"Eleris Hararin\" agentid=\"3013830\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"4\" locationid=\"60009058\" locator=\"false\"/>\r\n    <row agent=\"Roulphin Yvace\" agentid=\"3013831\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009184\" locator=\"false\"/>\r\n    <row agent=\"Sciete Chaneve\" agentid=\"3013832\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"1\" locationid=\"60009202\" locator=\"false\"/>\r\n    <row agent=\"Monave Derdianne\" agentid=\"3013833\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009259\" locator=\"false\"/>\r\n    <row agent=\"Balyu Cachtenaude\" agentid=\"3013834\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009190\" locator=\"true\"/>\r\n    <row agent=\"Armia Bano\" agentid=\"3013835\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"1\" locationid=\"60014302\" locator=\"false\"/>\r\n    <row agent=\"Deon Mashkam\" agentid=\"3013836\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014314\" locator=\"false\"/>\r\n    <row agent=\"Gratwonsdinnur Hudrolber\" agentid=\"3013837\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"1\" locationid=\"60014326\" locator=\"false\"/>\r\n    <row agent=\"Yvapant Andrarde\" agentid=\"3013838\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"3\" locationid=\"60014365\" locator=\"true\"/>\r\n    <row agent=\"Gretkold Halturkar\" agentid=\"3013839\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"24\" level=\"3\" locationid=\"60014419\" locator=\"false\"/>\r\n    <row agent=\"Isondulf Ateurdarder\" agentid=\"3013840\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"2\" locationid=\"60014452\" locator=\"false\"/>\r\n    <row agent=\"Aestorn Triat\" agentid=\"3013841\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"4\" locationid=\"60014389\" locator=\"false\"/>\r\n    <row agent=\"Godeko Ingefsrik\" agentid=\"3013842\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"1\" locationid=\"60014398\" locator=\"false\"/>\r\n    <row agent=\"Ongrad Ornljorn\" agentid=\"3013843\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"24\" level=\"1\" locationid=\"60014455\" locator=\"false\"/>\r\n    <row agent=\"Octeves Dorompiere\" agentid=\"3013844\" agenttypeid=\"2\" corporationid=\"1000168\" divisionid=\"22\" level=\"1\" locationid=\"60014713\" locator=\"false\"/>\r\n    <row agent=\"Reyrolauston Gauloleur\" agentid=\"3013845\" agenttypeid=\"2\" corporationid=\"1000168\" divisionid=\"22\" level=\"2\" locationid=\"60014695\" locator=\"false\"/>\r\n    <row agent=\"Arneche Yvonier\" agentid=\"3013846\" agenttypeid=\"2\" corporationid=\"1000168\" divisionid=\"22\" level=\"4\" locationid=\"60014692\" locator=\"true\"/>\r\n    <row agent=\"Wamenier Aurriest\" agentid=\"3013847\" agenttypeid=\"2\" corporationid=\"1000168\" divisionid=\"22\" level=\"3\" locationid=\"60014701\" locator=\"false\"/>\r\n    <row agent=\"Aubonard Vessiment\" agentid=\"3013848\" agenttypeid=\"2\" corporationid=\"1000168\" divisionid=\"22\" level=\"1\" locationid=\"60014716\" locator=\"false\"/>\r\n    <row agent=\"Nemarz Anzalaisio\" agentid=\"3013849\" agenttypeid=\"2\" corporationid=\"1000165\" divisionid=\"22\" level=\"3\" locationid=\"60014602\" locator=\"false\"/>\r\n    <row agent=\"Roneira Shathmen\" agentid=\"3013850\" agenttypeid=\"2\" corporationid=\"1000165\" divisionid=\"22\" level=\"2\" locationid=\"60014617\" locator=\"false\"/>\r\n    <row agent=\"Hooson Mozzara\" agentid=\"3013851\" agenttypeid=\"2\" corporationid=\"1000165\" divisionid=\"22\" level=\"4\" locationid=\"60014611\" locator=\"false\"/>\r\n    <row agent=\"Abuliad Prait\" agentid=\"3013852\" agenttypeid=\"2\" corporationid=\"1000165\" divisionid=\"22\" level=\"1\" locationid=\"60014623\" locator=\"false\"/>\r\n    <row agent=\"Satoras Uuhatoh\" agentid=\"3013853\" agenttypeid=\"2\" corporationid=\"1000167\" divisionid=\"22\" level=\"1\" locationid=\"60014671\" locator=\"false\"/>\r\n    <row agent=\"Heis Isokava\" agentid=\"3013854\" agenttypeid=\"2\" corporationid=\"1000167\" divisionid=\"22\" level=\"2\" locationid=\"60014674\" locator=\"false\"/>\r\n    <row agent=\"Suuriainen Ichosima\" agentid=\"3013855\" agenttypeid=\"2\" corporationid=\"1000167\" divisionid=\"22\" level=\"3\" locationid=\"60014683\" locator=\"false\"/>\r\n    <row agent=\"Khakhayi Fikh\" agentid=\"3013857\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"4\" locationid=\"60014638\" locator=\"true\"/>\r\n    <row agent=\"Ziriert Onyobi\" agentid=\"3013858\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"2\" locationid=\"60014650\" locator=\"true\"/>\r\n    <row agent=\"Enaun Marbanah\" agentid=\"3013859\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"1\" locationid=\"60014653\" locator=\"false\"/>\r\n    <row agent=\"Atrol Ragni\" agentid=\"3013860\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"1\" locationid=\"60014635\" locator=\"false\"/>\r\n    <row agent=\"Emmeler Louvelle\" agentid=\"3013861\" agenttypeid=\"2\" corporationid=\"1000169\" divisionid=\"22\" level=\"3\" locationid=\"60014728\" locator=\"false\"/>\r\n    <row agent=\"Doursidelle Avenel\" agentid=\"3013862\" agenttypeid=\"2\" corporationid=\"1000169\" divisionid=\"22\" level=\"1\" locationid=\"60014722\" locator=\"false\"/>\r\n    <row agent=\"Dire Serin\" agentid=\"3013863\" agenttypeid=\"2\" corporationid=\"1000169\" divisionid=\"22\" level=\"2\" locationid=\"60014734\" locator=\"false\"/>\r\n    <row agent=\"Dalt Bounsieulx\" agentid=\"3013864\" agenttypeid=\"2\" corporationid=\"1000169\" divisionid=\"22\" level=\"4\" locationid=\"60014725\" locator=\"false\"/>\r\n    <row agent=\"Knunstittan Brounuse\" agentid=\"3013865\" agenttypeid=\"2\" corporationid=\"1000169\" divisionid=\"22\" level=\"1\" locationid=\"60014743\" locator=\"false\"/>\r\n    <row agent=\"Andyrkur Hrast\" agentid=\"3013866\" agenttypeid=\"2\" corporationid=\"1000170\" divisionid=\"22\" level=\"1\" locationid=\"60014767\" locator=\"false\"/>\r\n    <row agent=\"Wirammur Isasdahle\" agentid=\"3013867\" agenttypeid=\"2\" corporationid=\"1000170\" divisionid=\"22\" level=\"3\" locationid=\"60014761\" locator=\"false\"/>\r\n    <row agent=\"Grirselfar Useram\" agentid=\"3013868\" agenttypeid=\"2\" corporationid=\"1000170\" divisionid=\"22\" level=\"2\" locationid=\"60014758\" locator=\"true\"/>\r\n    <row agent=\"Arnidold Etby\" agentid=\"3013869\" agenttypeid=\"2\" corporationid=\"1000170\" divisionid=\"22\" level=\"1\" locationid=\"60015038\" locator=\"false\"/>\r\n    <row agent=\"Olfard Eppjer\" agentid=\"3013870\" agenttypeid=\"2\" corporationid=\"1000170\" divisionid=\"22\" level=\"4\" locationid=\"60014755\" locator=\"false\"/>\r\n    <row agent=\"Folene Earoar\" agentid=\"3013871\" agenttypeid=\"2\" corporationid=\"1000171\" divisionid=\"22\" level=\"1\" locationid=\"60014782\" locator=\"false\"/>\r\n    <row agent=\"Arnsterik Fror\" agentid=\"3013872\" agenttypeid=\"2\" corporationid=\"1000171\" divisionid=\"22\" level=\"1\" locationid=\"60014806\" locator=\"false\"/>\r\n    <row agent=\"Varl Sirekur\" agentid=\"3013873\" agenttypeid=\"2\" corporationid=\"1000171\" divisionid=\"22\" level=\"4\" locationid=\"60014800\" locator=\"false\"/>\r\n    <row agent=\"Katild Arneigen\" agentid=\"3013874\" agenttypeid=\"2\" corporationid=\"1000171\" divisionid=\"22\" level=\"3\" locationid=\"60014791\" locator=\"true\"/>\r\n    <row agent=\"Sukiggulf Gudutkard\" agentid=\"3013875\" agenttypeid=\"2\" corporationid=\"1000171\" divisionid=\"22\" level=\"2\" locationid=\"60014803\" locator=\"false\"/>\r\n    <row agent=\"Brakur Ondgert\" agentid=\"3013876\" agenttypeid=\"2\" corporationid=\"1000172\" divisionid=\"22\" level=\"3\" locationid=\"60014812\" locator=\"false\"/>\r\n    <row agent=\"Wilirdur Erobsdin\" agentid=\"3013877\" agenttypeid=\"2\" corporationid=\"1000172\" divisionid=\"22\" level=\"1\" locationid=\"60014833\" locator=\"false\"/>\r\n    <row agent=\"Titrutolf Eurwimur\" agentid=\"3013878\" agenttypeid=\"2\" corporationid=\"1000172\" divisionid=\"22\" level=\"2\" locationid=\"60014821\" locator=\"false\"/>\r\n    <row agent=\"Anar Elselfur\" agentid=\"3013879\" agenttypeid=\"2\" corporationid=\"1000172\" divisionid=\"22\" level=\"4\" locationid=\"60014815\" locator=\"false\"/>\r\n    <row agent=\"Batoda Gangmidur\" agentid=\"3013880\" agenttypeid=\"2\" corporationid=\"1000172\" divisionid=\"22\" level=\"1\" locationid=\"60014836\" locator=\"false\"/>\r\n    <row agent=\"Groete Nilalle\" agentid=\"3013881\" agenttypeid=\"2\" corporationid=\"1000144\" divisionid=\"24\" level=\"4\" locationid=\"60013372\" locator=\"false\"/>\r\n    <row agent=\"Guispon Meganier\" agentid=\"3013882\" agenttypeid=\"2\" corporationid=\"1000144\" divisionid=\"22\" level=\"3\" locationid=\"60013369\" locator=\"false\"/>\r\n    <row agent=\"Toubuelin Dalledaury\" agentid=\"3013883\" agenttypeid=\"2\" corporationid=\"1000144\" divisionid=\"22\" level=\"1\" locationid=\"60013366\" locator=\"false\"/>\r\n    <row agent=\"Ombre Pelinoure\" agentid=\"3013884\" agenttypeid=\"2\" corporationid=\"1000144\" divisionid=\"22\" level=\"2\" locationid=\"60013360\" locator=\"false\"/>\r\n    <row agent=\"Erieves Orvecel\" agentid=\"3013885\" agenttypeid=\"2\" corporationid=\"1000144\" divisionid=\"24\" level=\"1\" locationid=\"60013363\" locator=\"false\"/>\r\n    <row agent=\"Borrin Aubonnie\" agentid=\"3013886\" agenttypeid=\"2\" corporationid=\"1000145\" divisionid=\"24\" level=\"3\" locationid=\"60013396\" locator=\"false\"/>\r\n    <row agent=\"Batere Auron\" agentid=\"3013887\" agenttypeid=\"2\" corporationid=\"1000145\" divisionid=\"22\" level=\"1\" locationid=\"60013387\" locator=\"false\"/>\r\n    <row agent=\"Beedaener Handriveau\" agentid=\"3013888\" agenttypeid=\"2\" corporationid=\"1000145\" divisionid=\"22\" level=\"2\" locationid=\"60013402\" locator=\"false\"/>\r\n    <row agent=\"Nirocque Pantaruene\" agentid=\"3013889\" agenttypeid=\"2\" corporationid=\"1000145\" divisionid=\"22\" level=\"4\" locationid=\"60013399\" locator=\"true\"/>\r\n    <row agent=\"Heine Dalmon\" agentid=\"3013890\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"1\" locationid=\"60013447\" locator=\"false\"/>\r\n    <row agent=\"Hummire Gaunt\" agentid=\"3013891\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"4\" locationid=\"60013423\" locator=\"true\"/>\r\n    <row agent=\"Casschaemena Eurawyns\" agentid=\"3013892\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"2\" locationid=\"60013411\" locator=\"false\"/>\r\n    <row agent=\"Alieu Brummier\" agentid=\"3013893\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"22\" level=\"3\" locationid=\"60013441\" locator=\"true\"/>\r\n    <row agent=\"Aillaerdt Stane\" agentid=\"3013894\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"3\" locationid=\"60013543\" locator=\"false\"/>\r\n    <row agent=\"Cloul Soeillindre\" agentid=\"3013895\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"2\" locationid=\"60013516\" locator=\"true\"/>\r\n    <row agent=\"Amoderia Beneure\" agentid=\"3013896\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"1\" locationid=\"60013492\" locator=\"false\"/>\r\n    <row agent=\"Maic Cynneteyle\" agentid=\"3013897\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"1\" locationid=\"60013486\" locator=\"true\"/>\r\n    <row agent=\"Agrele Anneu\" agentid=\"3013898\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"4\" locationid=\"60013552\" locator=\"false\"/>\r\n    <row agent=\"Fomtelot Ques\" agentid=\"3013899\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"3\" locationid=\"60011308\" locator=\"true\"/>\r\n    <row agent=\"Raute Oetou\" agentid=\"3013900\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011251\" locator=\"true\"/>\r\n    <row agent=\"Desmelles Machovret\" agentid=\"3013901\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011242\" locator=\"false\"/>\r\n    <row agent=\"Huvertet Eudette\" agentid=\"3013902\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"24\" level=\"4\" locationid=\"60011221\" locator=\"true\"/>\r\n    <row agent=\"Vydamme Ryaerde\" agentid=\"3013903\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011164\" locator=\"false\"/>\r\n    <row agent=\"Broen Agattault\" agentid=\"3013904\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"2\" locationid=\"60011344\" locator=\"false\"/>\r\n    <row agent=\"Gessegholair Alostant\" agentid=\"3013905\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"4\" locationid=\"60011338\" locator=\"false\"/>\r\n    <row agent=\"Yndt Astarrulier\" agentid=\"3013906\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"3\" locationid=\"60011350\" locator=\"false\"/>\r\n    <row agent=\"Cachtenaude Allaraeren\" agentid=\"3013907\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"1\" locationid=\"60011347\" locator=\"false\"/>\r\n    <row agent=\"Bakyer Badeneque\" agentid=\"3013908\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"1\" locationid=\"60011332\" locator=\"false\"/>\r\n    <row agent=\"Aurbrout Fleustoluene\" agentid=\"3013909\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011470\" locator=\"false\"/>\r\n    <row agent=\"Moreque Serlier\" agentid=\"3013910\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011461\" locator=\"false\"/>\r\n    <row agent=\"Adille Marjamette\" agentid=\"3013911\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"2\" locationid=\"60011491\" locator=\"true\"/>\r\n    <row agent=\"Yviescarus Anzoellan\" agentid=\"3013912\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"4\" locationid=\"60011440\" locator=\"false\"/>\r\n    <row agent=\"Charel Arroy\" agentid=\"3013913\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"3\" locationid=\"60011479\" locator=\"true\"/>\r\n    <row agent=\"Madoure Egghelant\" agentid=\"3013914\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"22\" level=\"4\" locationid=\"60011518\" locator=\"false\"/>\r\n    <row agent=\"Aussey Alitte\" agentid=\"3013915\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"22\" level=\"1\" locationid=\"60011563\" locator=\"false\"/>\r\n    <row agent=\"Barere Beemereirtes\" agentid=\"3013916\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"22\" level=\"3\" locationid=\"60011524\" locator=\"false\"/>\r\n    <row agent=\"Ornel Dance\" agentid=\"3013917\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"24\" level=\"2\" locationid=\"60011527\" locator=\"false\"/>\r\n    <row agent=\"Deroutte Clanelle\" agentid=\"3013918\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"22\" level=\"1\" locationid=\"60011539\" locator=\"false\"/>\r\n    <row agent=\"Dhoyerenore Ambrotte\" agentid=\"3013919\" agenttypeid=\"2\" corporationid=\"1000115\" divisionid=\"22\" level=\"4\" locationid=\"60011590\" locator=\"true\"/>\r\n    <row agent=\"Arnorin Arele\" agentid=\"3013920\" agenttypeid=\"2\" corporationid=\"1000115\" divisionid=\"22\" level=\"3\" locationid=\"60011572\" locator=\"false\"/>\r\n    <row agent=\"Coormette Duster\" agentid=\"3013921\" agenttypeid=\"2\" corporationid=\"1000115\" divisionid=\"22\" level=\"1\" locationid=\"60011581\" locator=\"false\"/>\r\n    <row agent=\"Broen Azer\" agentid=\"3013922\" agenttypeid=\"2\" corporationid=\"1000115\" divisionid=\"22\" level=\"2\" locationid=\"60011584\" locator=\"false\"/>\r\n    <row agent=\"Raille Cornalaere\" agentid=\"3013923\" agenttypeid=\"2\" corporationid=\"1000115\" divisionid=\"22\" level=\"1\" locationid=\"60011590\" locator=\"true\"/>\r\n    <row agent=\"Bella Medoure\" agentid=\"3013924\" agenttypeid=\"2\" corporationid=\"1000116\" divisionid=\"22\" level=\"1\" locationid=\"60011599\" locator=\"false\"/>\r\n    <row agent=\"Gamanne Adaulleler\" agentid=\"3013925\" agenttypeid=\"2\" corporationid=\"1000117\" divisionid=\"22\" level=\"2\" locationid=\"60011605\" locator=\"false\"/>\r\n    <row agent=\"Lacidille Auggie\" agentid=\"3013926\" agenttypeid=\"2\" corporationid=\"1000118\" divisionid=\"22\" level=\"1\" locationid=\"60011611\" locator=\"false\"/>\r\n    <row agent=\"Agovin Jarvasattin\" agentid=\"3013927\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"2\" locationid=\"60011632\" locator=\"true\"/>\r\n    <row agent=\"Ophaeghe Aufer\" agentid=\"3013928\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"4\" locationid=\"60011620\" locator=\"true\"/>\r\n    <row agent=\"Mismes Corines\" agentid=\"3013929\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"1\" locationid=\"60011731\" locator=\"false\"/>\r\n    <row agent=\"Enegute Olannuse\" agentid=\"3013930\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"3\" locationid=\"60011623\" locator=\"true\"/>\r\n    <row agent=\"Abonenet Orlettavier\" agentid=\"3013931\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"1\" locationid=\"60011647\" locator=\"false\"/>\r\n    <row agent=\"Ladezzoen Alogheris\" agentid=\"3013932\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011797\" locator=\"false\"/>\r\n    <row agent=\"Armimieres Beltant\" agentid=\"3013933\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011854\" locator=\"false\"/>\r\n    <row agent=\"Aliguet Amaneve\" agentid=\"3013934\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"3\" locationid=\"60011878\" locator=\"true\"/>\r\n    <row agent=\"Etinckbrault Brancke\" agentid=\"3013935\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"22\" level=\"4\" locationid=\"60011830\" locator=\"false\"/>\r\n    <row agent=\"Ancharie Airt\" agentid=\"3013936\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011902\" locator=\"true\"/>\r\n    <row agent=\"Breau Wellivel\" agentid=\"3013937\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"1\" locationid=\"60011944\" locator=\"false\"/>\r\n    <row agent=\"Bumotte Bolerant\" agentid=\"3013938\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"2\" locationid=\"60011980\" locator=\"false\"/>\r\n    <row agent=\"Anseneque Porrolitte\" agentid=\"3013940\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"1\" locationid=\"60011923\" locator=\"false\"/>\r\n    <row agent=\"Lallencard Agrengalier\" agentid=\"3013941\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"4\" locationid=\"60011983\" locator=\"true\"/>\r\n    <row agent=\"Aymetant Odette\" agentid=\"3013942\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"1\" locationid=\"60012052\" locator=\"false\"/>\r\n    <row agent=\"Amidier Pinsine\" agentid=\"3013943\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"4\" locationid=\"60012088\" locator=\"true\"/>\r\n    <row agent=\"Ellosant Puetecier\" agentid=\"3013944\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"1\" locationid=\"60012091\" locator=\"true\"/>\r\n    <row agent=\"Preralle Esogier\" agentid=\"3013945\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"3\" locationid=\"60012121\" locator=\"true\"/>\r\n    <row agent=\"Rachesiaen Achaufrores\" agentid=\"3013946\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"2\" locationid=\"60012094\" locator=\"true\"/>\r\n    <row agent=\"Sirkild Teriner\" agentid=\"3013947\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"3\" locationid=\"60012139\" locator=\"true\"/>\r\n    <row agent=\"Grie Baun\" agentid=\"3013948\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"1\" locationid=\"60012133\" locator=\"false\"/>\r\n    <row agent=\"Bragesar Asgureven\" agentid=\"3013949\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"1\" locationid=\"60012145\" locator=\"false\"/>\r\n    <row agent=\"Helusdere Yrmeko\" agentid=\"3013950\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"22\" level=\"2\" locationid=\"60012166\" locator=\"false\"/>\r\n    <row agent=\"Eidarjorn Aembald\" agentid=\"3013951\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"22\" level=\"4\" locationid=\"60012151\" locator=\"true\"/>\r\n    <row agent=\"Sundara Fedrusi\" agentid=\"3013952\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"3\" locationid=\"60012253\" locator=\"true\"/>\r\n    <row agent=\"Saga Taniu\" agentid=\"3013953\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"22\" level=\"2\" locationid=\"60012244\" locator=\"true\"/>\r\n    <row agent=\"Slurard Wlbresk\" agentid=\"3013954\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"1\" locationid=\"60012235\" locator=\"true\"/>\r\n    <row agent=\"Manmon Aralila\" agentid=\"3013955\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"22\" level=\"4\" locationid=\"60012205\" locator=\"true\"/>\r\n    <row agent=\"Egghenync Larmante\" agentid=\"3013956\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"1\" locationid=\"60012226\" locator=\"false\"/>\r\n    <row agent=\"Samunuri Aumo\" agentid=\"3013957\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"3\" locationid=\"60012313\" locator=\"true\"/>\r\n    <row agent=\"Aedar Kollorage\" agentid=\"3013958\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"24\" level=\"4\" locationid=\"60012466\" locator=\"true\"/>\r\n    <row agent=\"Malasaiken Ero\" agentid=\"3013959\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012502\" locator=\"false\"/>\r\n    <row agent=\"Jafin Silchi\" agentid=\"3013960\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012277\" locator=\"false\"/>\r\n    <row agent=\"Gols Eisutrus\" agentid=\"3013961\" agenttypeid=\"5\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012493\" locator=\"false\"/>\r\n    <row agent=\"Aldasiven On\" agentid=\"3013962\" agenttypeid=\"2\" corporationid=\"1000126\" divisionid=\"22\" level=\"3\" locationid=\"60012550\" locator=\"false\"/>\r\n    <row agent=\"Grord Bekengot\" agentid=\"3013963\" agenttypeid=\"2\" corporationid=\"1000126\" divisionid=\"24\" level=\"2\" locationid=\"60012544\" locator=\"false\"/>\r\n    <row agent=\"Aengako Tatanur\" agentid=\"3013964\" agenttypeid=\"2\" corporationid=\"1000126\" divisionid=\"24\" level=\"1\" locationid=\"60012532\" locator=\"true\"/>\r\n    <row agent=\"Unuter Hureirik\" agentid=\"3013965\" agenttypeid=\"2\" corporationid=\"1000126\" divisionid=\"24\" level=\"4\" locationid=\"60012553\" locator=\"false\"/>\r\n    <row agent=\"Thon Eney\" agentid=\"3013966\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"4\" locationid=\"60012559\" locator=\"true\"/>\r\n    <row agent=\"Alatain Chascher\" agentid=\"3013967\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"22\" level=\"1\" locationid=\"60012574\" locator=\"false\"/>\r\n    <row agent=\"Omailly Vleyzine\" agentid=\"3013968\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"2\" locationid=\"60012577\" locator=\"true\"/>\r\n    <row agent=\"Natuneni Moinen\" agentid=\"3013969\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"1\" locationid=\"60012565\" locator=\"false\"/>\r\n    <row agent=\"Aluse Melfabier\" agentid=\"3013970\" agenttypeid=\"2\" corporationid=\"1000129\" divisionid=\"23\" level=\"4\" locationid=\"60012592\" locator=\"true\"/>\r\n    <row agent=\"Airfeu Stiers\" agentid=\"3013971\" agenttypeid=\"2\" corporationid=\"1000129\" divisionid=\"23\" level=\"2\" locationid=\"60012589\" locator=\"false\"/>\r\n    <row agent=\"Menlieu Isalalle\" agentid=\"3013972\" agenttypeid=\"2\" corporationid=\"1000129\" divisionid=\"23\" level=\"3\" locationid=\"60012586\" locator=\"false\"/>\r\n    <row agent=\"Sakulito Suitanen\" agentid=\"3013973\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012718\" locator=\"false\"/>\r\n    <row agent=\"Vampant Antyles\" agentid=\"3013974\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"4\" locationid=\"60012694\" locator=\"false\"/>\r\n    <row agent=\"Titrutolf Haluarin\" agentid=\"3013975\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"3\" locationid=\"60012607\" locator=\"false\"/>\r\n    <row agent=\"Bidiram Zaserkhareh\" agentid=\"3013976\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"1\" locationid=\"60012721\" locator=\"false\"/>\r\n    <row agent=\"Aurovuo Tohanala\" agentid=\"3013977\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"2\" locationid=\"60012601\" locator=\"false\"/>\r\n    <row agent=\"Kuholen Hatsashin\" agentid=\"3013978\" agenttypeid=\"5\" corporationid=\"1000132\" divisionid=\"22\" level=\"1\" locationid=\"60012739\" locator=\"false\"/>\r\n    <row agent=\"Puuruoma Alken\" agentid=\"3013979\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"22\" level=\"1\" locationid=\"60012766\" locator=\"false\"/>\r\n    <row agent=\"Syntger Averna\" agentid=\"3013980\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"22\" level=\"2\" locationid=\"60012784\" locator=\"false\"/>\r\n    <row agent=\"Wlfelfstolf Eidarjorn\" agentid=\"3013981\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"23\" level=\"1\" locationid=\"60012787\" locator=\"false\"/>\r\n    <row agent=\"Pirghelaspon Falancke\" agentid=\"3013982\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"22\" level=\"3\" locationid=\"60012760\" locator=\"false\"/>\r\n    <row agent=\"Ganeme Rarmah\" agentid=\"3013983\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"1\" locationid=\"60014942\" locator=\"false\"/>\r\n    <row agent=\"Igase Yoe\" agentid=\"3013984\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"23\" level=\"1\" locationid=\"60012820\" locator=\"false\"/>\r\n    <row agent=\"Ohmagainen Uesaro\" agentid=\"3013985\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"22\" level=\"3\" locationid=\"60012808\" locator=\"false\"/>\r\n    <row agent=\"Alenen Isaala\" agentid=\"3013986\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"23\" level=\"2\" locationid=\"60012799\" locator=\"false\"/>\r\n    <row agent=\"Sunika Hopara\" agentid=\"3013987\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"23\" level=\"4\" locationid=\"60012823\" locator=\"false\"/>\r\n    <row agent=\"Scabriger Fitault\" agentid=\"3013988\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"1\" locationid=\"60012898\" locator=\"false\"/>\r\n    <row agent=\"Anemi Liel\" agentid=\"3013989\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"22\" level=\"4\" locationid=\"60012874\" locator=\"true\"/>\r\n    <row agent=\"Marat Sophib\" agentid=\"3013990\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"1\" locationid=\"60012901\" locator=\"true\"/>\r\n    <row agent=\"Pingeron Creurmon\" agentid=\"3013991\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"2\" locationid=\"60012904\" locator=\"false\"/>\r\n    <row agent=\"Karouyan Zirsem\" agentid=\"3013992\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"3\" locationid=\"60012877\" locator=\"false\"/>\r\n    <row agent=\"Ukkegas Ichoya\" agentid=\"3013993\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60012931\" locator=\"false\"/>\r\n    <row agent=\"Okalala Egurekken\" agentid=\"3013994\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60012922\" locator=\"false\"/>\r\n    <row agent=\"Eran Hargsvemur\" agentid=\"3013995\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"4\" locationid=\"60013012\" locator=\"true\"/>\r\n    <row agent=\"Ahmaala Putsaine\" agentid=\"3013996\" agenttypeid=\"5\" corporationid=\"1000137\" divisionid=\"24\" level=\"3\" locationid=\"60012976\" locator=\"true\"/>\r\n    <row agent=\"Hakim Stormare\" agentid=\"3013997\" agenttypeid=\"2\" corporationid=\"1000138\" divisionid=\"24\" level=\"4\" locationid=\"60013072\" locator=\"false\"/>\r\n    <row agent=\"Counascune Octere\" agentid=\"3013998\" agenttypeid=\"2\" corporationid=\"1000138\" divisionid=\"22\" level=\"2\" locationid=\"60013051\" locator=\"false\"/>\r\n    <row agent=\"Asgoven Yrminur\" agentid=\"3013999\" agenttypeid=\"2\" corporationid=\"1000138\" divisionid=\"24\" level=\"3\" locationid=\"60013066\" locator=\"false\"/>\r\n    <row agent=\"Shabah Nih\" agentid=\"3014000\" agenttypeid=\"2\" corporationid=\"1000138\" divisionid=\"24\" level=\"1\" locationid=\"60013054\" locator=\"false\"/>\r\n    <row agent=\"Enmoin Odafritsus\" agentid=\"3014001\" agenttypeid=\"2\" corporationid=\"1000138\" divisionid=\"24\" level=\"1\" locationid=\"60013057\" locator=\"false\"/>\r\n    <row agent=\"Saalovaila Auviken\" agentid=\"3014002\" agenttypeid=\"2\" corporationid=\"1000139\" divisionid=\"22\" level=\"1\" locationid=\"60013078\" locator=\"false\"/>\r\n    <row agent=\"Irabam Shesi\" agentid=\"3014003\" agenttypeid=\"2\" corporationid=\"1000152\" divisionid=\"22\" level=\"2\" locationid=\"60013849\" locator=\"false\"/>\r\n    <row agent=\"Babeta Dah\" agentid=\"3014004\" agenttypeid=\"2\" corporationid=\"1000152\" divisionid=\"22\" level=\"1\" locationid=\"60013834\" locator=\"false\"/>\r\n    <row agent=\"Yenelatah Arahre\" agentid=\"3014005\" agenttypeid=\"2\" corporationid=\"1000152\" divisionid=\"22\" level=\"4\" locationid=\"60013837\" locator=\"false\"/>\r\n    <row agent=\"Garkah Gast\" agentid=\"3014006\" agenttypeid=\"2\" corporationid=\"1000152\" divisionid=\"24\" level=\"1\" locationid=\"60013855\" locator=\"true\"/>\r\n    <row agent=\"Kinger Aknoun\" agentid=\"3014007\" agenttypeid=\"2\" corporationid=\"1000152\" divisionid=\"22\" level=\"3\" locationid=\"60013846\" locator=\"true\"/>\r\n    <row agent=\"Evungvert Stylera\" agentid=\"3014008\" agenttypeid=\"2\" corporationid=\"1000154\" divisionid=\"23\" level=\"1\" locationid=\"60013867\" locator=\"false\"/>\r\n    <row agent=\"Greretard Vudori\" agentid=\"3014009\" agenttypeid=\"2\" corporationid=\"1000154\" divisionid=\"24\" level=\"4\" locationid=\"60013864\" locator=\"false\"/>\r\n    <row agent=\"Eymadald Vetten\" agentid=\"3014010\" agenttypeid=\"2\" corporationid=\"1000154\" divisionid=\"23\" level=\"3\" locationid=\"60013870\" locator=\"true\"/>\r\n    <row agent=\"Ashessa Vebahra\" agentid=\"3014011\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"4\" locationid=\"60013972\" locator=\"false\"/>\r\n    <row agent=\"Kiaki Aramhahah\" agentid=\"3014012\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"3\" locationid=\"60013936\" locator=\"true\"/>\r\n    <row agent=\"Larvoor Gattepa\" agentid=\"3014013\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"1\" locationid=\"60013948\" locator=\"false\"/>\r\n    <row agent=\"Anark Bandu\" agentid=\"3014014\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"2\" locationid=\"60013954\" locator=\"true\"/>\r\n    <row agent=\"Zhesseyd Davesghad\" agentid=\"3014015\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"22\" level=\"1\" locationid=\"60013966\" locator=\"true\"/>\r\n    <row agent=\"Abbalvar Onabemur\" agentid=\"3014016\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"24\" level=\"2\" locationid=\"60014137\" locator=\"false\"/>\r\n    <row agent=\"Ansel Holmstur\" agentid=\"3014017\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"22\" level=\"3\" locationid=\"60014095\" locator=\"false\"/>\r\n    <row agent=\"Einur Allget\" agentid=\"3014018\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"22\" level=\"1\" locationid=\"60014131\" locator=\"false\"/>\r\n    <row agent=\"Onnold Beil\" agentid=\"3014019\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"23\" level=\"1\" locationid=\"60014068\" locator=\"false\"/>\r\n    <row agent=\"Oggand Viftuin\" agentid=\"3014020\" agenttypeid=\"4\" corporationid=\"1000160\" divisionid=\"18\" level=\"4\" locationid=\"60014062\" locator=\"false\"/>\r\n    <row agent=\"Kaemunadik Betenindus\" agentid=\"3014021\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"1\" locationid=\"60014230\" locator=\"false\"/>\r\n    <row agent=\"Hishenji Ichoda\" agentid=\"3014022\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"2\" locationid=\"60014170\" locator=\"false\"/>\r\n    <row agent=\"Regerik Freygulo\" agentid=\"3014023\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"3\" locationid=\"60014161\" locator=\"false\"/>\r\n    <row agent=\"Skomener Effotber\" agentid=\"3014024\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"4\" locationid=\"60014233\" locator=\"false\"/>\r\n    <row agent=\"Offugen Baldbald\" agentid=\"3014025\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"1\" locationid=\"60014263\" locator=\"false\"/>\r\n    <row agent=\"Jufwert Skatgomulf\" agentid=\"3014026\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004864\" locator=\"false\"/>\r\n    <row agent=\"Lartigen Gas\" agentid=\"3014027\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"3\" locationid=\"60004852\" locator=\"false\"/>\r\n    <row agent=\"Leudesund Edwilo\" agentid=\"3014028\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004909\" locator=\"false\"/>\r\n    <row agent=\"Morhold Sert\" agentid=\"3014029\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004861\" locator=\"false\"/>\r\n    <row agent=\"Nendezo Hulenedur\" agentid=\"3014030\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004861\" locator=\"false\"/>\r\n    <row agent=\"Muton Sviad\" agentid=\"3014031\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"3\" locationid=\"60004783\" locator=\"false\"/>\r\n    <row agent=\"Nerwolfur Svengakulf\" agentid=\"3014032\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"4\" locationid=\"60004849\" locator=\"false\"/>\r\n    <row agent=\"Obbet Edalden\" agentid=\"3014033\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004765\" locator=\"false\"/>\r\n    <row agent=\"Marbranner Piasangrei\" agentid=\"3014034\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004771\" locator=\"false\"/>\r\n    <row agent=\"Maltraki Girt\" agentid=\"3014035\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004873\" locator=\"false\"/>\r\n    <row agent=\"Marilor Iddur\" agentid=\"3014037\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004747\" locator=\"false\"/>\r\n    <row agent=\"Meinaborg Siflogur\" agentid=\"3014038\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004846\" locator=\"false\"/>\r\n    <row agent=\"Mikbegoli Hakk\" agentid=\"3014039\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004783\" locator=\"false\"/>\r\n    <row agent=\"Mensin Adgrian\" agentid=\"3014040\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004897\" locator=\"false\"/>\r\n    <row agent=\"Okaelle Eikka\" agentid=\"3014041\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004843\" locator=\"false\"/>\r\n    <row agent=\"Olgired Ongrard\" agentid=\"3014042\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"4\" locationid=\"60004903\" locator=\"false\"/>\r\n    <row agent=\"Oldwin Ebbita\" agentid=\"3014043\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"3\" locationid=\"60004804\" locator=\"false\"/>\r\n    <row agent=\"Ollsteinn Algild\" agentid=\"3014044\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"4\" locationid=\"60004822\" locator=\"false\"/>\r\n    <row agent=\"Omma Eadwane\" agentid=\"3014045\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004912\" locator=\"false\"/>\r\n    <row agent=\"Oltrulf Wemer\" agentid=\"3014046\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004810\" locator=\"false\"/>\r\n    <row agent=\"Oddintelm Atfrad\" agentid=\"3014047\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004915\" locator=\"false\"/>\r\n    <row agent=\"Odalher Gerdnirkur\" agentid=\"3014048\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004867\" locator=\"false\"/>\r\n    <row agent=\"Odinzur Rutuver\" agentid=\"3014049\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"4\" locationid=\"60004888\" locator=\"false\"/>\r\n    <row agent=\"Ofakilur Amora\" agentid=\"3014050\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004780\" locator=\"false\"/>\r\n    <row agent=\"Odrakur Salfgekur\" agentid=\"3014051\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004750\" locator=\"false\"/>\r\n    <row agent=\"Ogeilo Eidad\" agentid=\"3014052\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004852\" locator=\"false\"/>\r\n    <row agent=\"Osbrik Tassiften\" agentid=\"3014053\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004762\" locator=\"false\"/>\r\n    <row agent=\"Otar Arnider\" agentid=\"3014054\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004903\" locator=\"false\"/>\r\n    <row agent=\"Paldbomson Oluldold\" agentid=\"3014055\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004843\" locator=\"false\"/>\r\n    <row agent=\"Petilman Aldengar\" agentid=\"3014056\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004882\" locator=\"false\"/>\r\n    <row agent=\"Ongrold Orwold\" agentid=\"3014057\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"4\" locationid=\"60004789\" locator=\"false\"/>\r\n    <row agent=\"Onalfolf Nitulf\" agentid=\"3014058\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004762\" locator=\"false\"/>\r\n    <row agent=\"Onnlur Krildedgand\" agentid=\"3014059\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"4\" locationid=\"60004831\" locator=\"false\"/>\r\n    <row agent=\"Oriren Amansulf\" agentid=\"3014060\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004876\" locator=\"false\"/>\r\n    <row agent=\"Ordbet Geguftorn\" agentid=\"3014061\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004762\" locator=\"false\"/>\r\n    <row agent=\"Ornljorn Egennat\" agentid=\"3014062\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"3\" locationid=\"60004807\" locator=\"false\"/>\r\n    <row agent=\"Rirauren Etan\" agentid=\"3014063\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004888\" locator=\"false\"/>\r\n    <row agent=\"Rodukar Eorgulf\" agentid=\"3014064\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"3\" locationid=\"60004876\" locator=\"false\"/>\r\n    <row agent=\"Rpiseker Rember\" agentid=\"3014065\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004795\" locator=\"false\"/>\r\n    <row agent=\"Ronuken Baudold\" agentid=\"3014066\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004750\" locator=\"false\"/>\r\n    <row agent=\"Runn Joldwakel\" agentid=\"3014067\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004864\" locator=\"false\"/>\r\n    <row agent=\"Raldoran Irfrik\" agentid=\"3014068\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004750\" locator=\"false\"/>\r\n    <row agent=\"Rebrarbera Anfrold\" agentid=\"3014069\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004762\" locator=\"false\"/>\r\n    <row agent=\"Rartolbera Silbrodgit\" agentid=\"3014070\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004795\" locator=\"false\"/>\r\n    <row agent=\"Bomnikar Riaf\" agentid=\"3014071\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60005014\" locator=\"false\"/>\r\n    <row agent=\"Dulinar Nerhoger\" agentid=\"3014072\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"3\" locationid=\"60004927\" locator=\"false\"/>\r\n    <row agent=\"Immogard Amamon\" agentid=\"3014073\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60005008\" locator=\"false\"/>\r\n    <row agent=\"Olsyngur Hegita\" agentid=\"3014074\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60005023\" locator=\"false\"/>\r\n    <row agent=\"Ingefsrik Orgur\" agentid=\"3014075\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"3\" locationid=\"60004936\" locator=\"false\"/>\r\n    <row agent=\"Gurtan Bedokfa\" agentid=\"3014076\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"2\" locationid=\"60004954\" locator=\"false\"/>\r\n    <row agent=\"Medolulf Oron\" agentid=\"3014077\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"3\" locationid=\"60005008\" locator=\"false\"/>\r\n    <row agent=\"Gugirgolf Vulveban\" agentid=\"3014078\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"3\" locationid=\"60004948\" locator=\"false\"/>\r\n    <row agent=\"Kurodgar Eylalber\" agentid=\"3014079\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60004930\" locator=\"false\"/>\r\n    <row agent=\"Rugnus Lunar\" agentid=\"3014080\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60005017\" locator=\"false\"/>\r\n    <row agent=\"Hagatbold Saeldar\" agentid=\"3014081\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"2\" locationid=\"60004942\" locator=\"false\"/>\r\n    <row agent=\"Eganderd Itti\" agentid=\"3014082\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"2\" locationid=\"60005020\" locator=\"false\"/>\r\n    <row agent=\"Fodunur Elloder\" agentid=\"3014083\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"3\" locationid=\"60004987\" locator=\"false\"/>\r\n    <row agent=\"Atandin Rervedia\" agentid=\"3014084\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60005029\" locator=\"false\"/>\r\n    <row agent=\"Ololder Leungen\" agentid=\"3014085\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"3\" locationid=\"60004966\" locator=\"false\"/>\r\n    <row agent=\"Sahlorens Blitegeri\" agentid=\"3014086\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60004975\" locator=\"false\"/>\r\n    <row agent=\"Egulbard Hadorulf\" agentid=\"3014087\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"3\" locationid=\"60004984\" locator=\"false\"/>\r\n    <row agent=\"Gusiko Or\" agentid=\"3014088\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"2\" locationid=\"60004942\" locator=\"false\"/>\r\n    <row agent=\"Eoldald Tuf\" agentid=\"3014089\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"2\" locationid=\"60004942\" locator=\"false\"/>\r\n    <row agent=\"Seill Goroke\" agentid=\"3014090\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"3\" locationid=\"60005032\" locator=\"false\"/>\r\n    <row agent=\"Melodar Odmana\" agentid=\"3014091\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"2\" locationid=\"60004993\" locator=\"false\"/>\r\n    <row agent=\"Arngreder Bruldsedald\" agentid=\"3014092\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"2\" locationid=\"60004963\" locator=\"false\"/>\r\n    <row agent=\"Emizo Hiserman\" agentid=\"3014093\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"4\" locationid=\"60004930\" locator=\"false\"/>\r\n    <row agent=\"Askigur Fsodired\" agentid=\"3014094\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60005032\" locator=\"false\"/>\r\n    <row agent=\"Tiatulf Klortalmar\" agentid=\"3014095\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"3\" locationid=\"60004999\" locator=\"false\"/>\r\n    <row agent=\"Eresia Eskold\" agentid=\"3014096\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60005011\" locator=\"false\"/>\r\n    <row agent=\"Hedaron Eukar\" agentid=\"3014097\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60005008\" locator=\"false\"/>\r\n    <row agent=\"Mangeiri Otrimund\" agentid=\"3014098\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60004996\" locator=\"false\"/>\r\n    <row agent=\"Vedulef Gekelgala\" agentid=\"3014099\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"2\" locationid=\"60005020\" locator=\"false\"/>\r\n    <row agent=\"Vetesin Ylmban\" agentid=\"3014100\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"3\" locationid=\"60004966\" locator=\"false\"/>\r\n    <row agent=\"Volm Kargrulhan\" agentid=\"3014101\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60005005\" locator=\"false\"/>\r\n    <row agent=\"Ongauker Amistvilma\" agentid=\"3014102\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"4\" locationid=\"60004948\" locator=\"false\"/>\r\n    <row agent=\"Bernurkil Utri\" agentid=\"3014103\" agenttypeid=\"2\" corporationid=\"1000053\" divisionid=\"22\" level=\"2\" locationid=\"60005044\" locator=\"false\"/>\r\n    <row agent=\"Urerland Brulakidi\" agentid=\"3014105\" agenttypeid=\"2\" corporationid=\"1000053\" divisionid=\"22\" level=\"2\" locationid=\"60005044\" locator=\"false\"/>\r\n    <row agent=\"Kenwulo Odinsken\" agentid=\"3014106\" agenttypeid=\"2\" corporationid=\"1000053\" divisionid=\"22\" level=\"3\" locationid=\"60005044\" locator=\"false\"/>\r\n    <row agent=\"Orard Wlfheng\" agentid=\"3014107\" agenttypeid=\"2\" corporationid=\"1000053\" divisionid=\"22\" level=\"2\" locationid=\"60005044\" locator=\"false\"/>\r\n    <row agent=\"Sveag Oggring\" agentid=\"3014108\" agenttypeid=\"2\" corporationid=\"1000053\" divisionid=\"24\" level=\"1\" locationid=\"60005044\" locator=\"false\"/>\r\n    <row agent=\"Pategegur Dindrand\" agentid=\"3014109\" agenttypeid=\"2\" corporationid=\"1000053\" divisionid=\"24\" level=\"1\" locationid=\"60005044\" locator=\"false\"/>\r\n    <row agent=\"Entelm Arfa\" agentid=\"3014110\" agenttypeid=\"2\" corporationid=\"1000053\" divisionid=\"22\" level=\"3\" locationid=\"60005044\" locator=\"false\"/>\r\n    <row agent=\"Sarlen Lidekoug\" agentid=\"3014111\" agenttypeid=\"2\" corporationid=\"1000053\" divisionid=\"22\" level=\"3\" locationid=\"60005044\" locator=\"false\"/>\r\n    <row agent=\"Harlesten Hrareinn\" agentid=\"3014112\" agenttypeid=\"2\" corporationid=\"1000053\" divisionid=\"24\" level=\"1\" locationid=\"60005044\" locator=\"false\"/>\r\n    <row agent=\"Vels Bjolf\" agentid=\"3014113\" agenttypeid=\"2\" corporationid=\"1000053\" divisionid=\"22\" level=\"4\" locationid=\"60005044\" locator=\"false\"/>\r\n    <row agent=\"Gitegur Geolfans\" agentid=\"3014114\" agenttypeid=\"2\" corporationid=\"1000053\" divisionid=\"22\" level=\"3\" locationid=\"60005044\" locator=\"false\"/>\r\n    <row agent=\"Stigetera Fomminden\" agentid=\"3014115\" agenttypeid=\"2\" corporationid=\"1000053\" divisionid=\"22\" level=\"2\" locationid=\"60005044\" locator=\"false\"/>\r\n    <row agent=\"Alkmar Vatroldur\" agentid=\"3014116\" agenttypeid=\"2\" corporationid=\"1000053\" divisionid=\"24\" level=\"2\" locationid=\"60005050\" locator=\"false\"/>\r\n    <row agent=\"Danfrard Olindold\" agentid=\"3014117\" agenttypeid=\"2\" corporationid=\"1000053\" divisionid=\"24\" level=\"2\" locationid=\"60005050\" locator=\"false\"/>\r\n    <row agent=\"Guffimur Gedur\" agentid=\"3014118\" agenttypeid=\"2\" corporationid=\"1000053\" divisionid=\"24\" level=\"3\" locationid=\"60005047\" locator=\"false\"/>\r\n    <row agent=\"Kastulf Gelfiven\" agentid=\"3014119\" agenttypeid=\"2\" corporationid=\"1000053\" divisionid=\"22\" level=\"3\" locationid=\"60005047\" locator=\"false\"/>\r\n    <row agent=\"Skjer Feirt\" agentid=\"3014120\" agenttypeid=\"2\" corporationid=\"1000053\" divisionid=\"22\" level=\"2\" locationid=\"60005047\" locator=\"false\"/>\r\n    <row agent=\"Koskuna Jutager\" agentid=\"3014121\" agenttypeid=\"2\" corporationid=\"1000053\" divisionid=\"24\" level=\"1\" locationid=\"60005047\" locator=\"false\"/>\r\n    <row agent=\"Artjell Tonari\" agentid=\"3014122\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005155\" locator=\"false\"/>\r\n    <row agent=\"Eadik Orkel\" agentid=\"3014123\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005122\" locator=\"false\"/>\r\n    <row agent=\"Treir Honnelfaed\" agentid=\"3014124\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005137\" locator=\"false\"/>\r\n    <row agent=\"Redek Teurulf\" agentid=\"3014125\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005137\" locator=\"false\"/>\r\n    <row agent=\"Aetittard Irme\" agentid=\"3014126\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005101\" locator=\"false\"/>\r\n    <row agent=\"Lunudin Reilulf\" agentid=\"3014127\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005104\" locator=\"false\"/>\r\n    <row agent=\"Ullbjell Dynnorrau\" agentid=\"3014128\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005053\" locator=\"false\"/>\r\n    <row agent=\"Akaren Buneflur\" agentid=\"3014129\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005077\" locator=\"false\"/>\r\n    <row agent=\"Orbrek Wibod\" agentid=\"3014130\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005110\" locator=\"false\"/>\r\n    <row agent=\"Annve Hoddoren\" agentid=\"3014131\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005218\" locator=\"false\"/>\r\n    <row agent=\"Stembakedur Jotane\" agentid=\"3014132\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005197\" locator=\"false\"/>\r\n    <row agent=\"Agodurik Gantari\" agentid=\"3014133\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005080\" locator=\"false\"/>\r\n    <row agent=\"Ansel Reirokur\" agentid=\"3014134\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005140\" locator=\"false\"/>\r\n    <row agent=\"Hnaelbarik Sveirana\" agentid=\"3014135\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005143\" locator=\"false\"/>\r\n    <row agent=\"Oldwin Abren\" agentid=\"3014136\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005161\" locator=\"false\"/>\r\n    <row agent=\"Bjongausen Agnake\" agentid=\"3014137\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"4\" locationid=\"60005179\" locator=\"false\"/>\r\n    <row agent=\"Hesledia Aldafwik\" agentid=\"3014138\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005191\" locator=\"false\"/>\r\n    <row agent=\"Abririk Goggert\" agentid=\"3014139\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005191\" locator=\"false\"/>\r\n    <row agent=\"Ardia Albundsan\" agentid=\"3014140\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005068\" locator=\"false\"/>\r\n    <row agent=\"Guluna Sibratold\" agentid=\"3014141\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005206\" locator=\"false\"/>\r\n    <row agent=\"Wlbrirt Bedoda\" agentid=\"3014142\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005065\" locator=\"false\"/>\r\n    <row agent=\"Bedangel Appold\" agentid=\"3014143\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005143\" locator=\"false\"/>\r\n    <row agent=\"Azorsund Erkaegur\" agentid=\"3014144\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005167\" locator=\"false\"/>\r\n    <row agent=\"Ollulf Ealfrulf\" agentid=\"3014145\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"4\" locationid=\"60005125\" locator=\"false\"/>\r\n    <row agent=\"Heteder Teudekil\" agentid=\"3014146\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005146\" locator=\"false\"/>\r\n    <row agent=\"Wilder Eikar\" agentid=\"3014147\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005221\" locator=\"false\"/>\r\n    <row agent=\"Otuin Eghild\" agentid=\"3014148\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005140\" locator=\"false\"/>\r\n    <row agent=\"Vanulard Inard\" agentid=\"3014149\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005098\" locator=\"false\"/>\r\n    <row agent=\"Kirg Ulrerulf\" agentid=\"3014150\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005062\" locator=\"false\"/>\r\n    <row agent=\"Wlfhask Gudbungur\" agentid=\"3014151\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005119\" locator=\"false\"/>\r\n    <row agent=\"Hamugur Kuann\" agentid=\"3014152\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005065\" locator=\"false\"/>\r\n    <row agent=\"Jalmstin Olwo\" agentid=\"3014153\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"2\" locationid=\"60005407\" locator=\"false\"/>\r\n    <row agent=\"Aunur Goretard\" agentid=\"3014154\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005233\" locator=\"false\"/>\r\n    <row agent=\"Evuttur Ofoker\" agentid=\"3014155\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"2\" locationid=\"60005380\" locator=\"false\"/>\r\n    <row agent=\"Braridur Baldansune\" agentid=\"3014156\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005287\" locator=\"false\"/>\r\n    <row agent=\"Luksoko Hrolerren\" agentid=\"3014157\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005317\" locator=\"false\"/>\r\n    <row agent=\"Adosede Aldast\" agentid=\"3014158\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005293\" locator=\"false\"/>\r\n    <row agent=\"Eteinn Olsofur\" agentid=\"3014159\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"2\" locationid=\"60005275\" locator=\"false\"/>\r\n    <row agent=\"Appold Eiren\" agentid=\"3014160\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005293\" locator=\"false\"/>\r\n    <row agent=\"Halfreinn Idediok\" agentid=\"3014161\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005329\" locator=\"false\"/>\r\n    <row agent=\"Hengeinur Amaria\" agentid=\"3014162\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"2\" locationid=\"60005317\" locator=\"false\"/>\r\n    <row agent=\"Atanholt Stelrakur\" agentid=\"3014163\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"2\" locationid=\"60005341\" locator=\"false\"/>\r\n    <row agent=\"Gannera Tand\" agentid=\"3014164\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005296\" locator=\"false\"/>\r\n    <row agent=\"Aulfard Rern\" agentid=\"3014165\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"2\" locationid=\"60005242\" locator=\"false\"/>\r\n    <row agent=\"Teugukonir Skaumbigur\" agentid=\"3014166\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"4\" locationid=\"60005329\" locator=\"false\"/>\r\n    <row agent=\"Illan Asgulf\" agentid=\"3014167\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005302\" locator=\"false\"/>\r\n    <row agent=\"Modrold Ortnakur\" agentid=\"3014168\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005380\" locator=\"false\"/>\r\n    <row agent=\"Halderi Sidulfo\" agentid=\"3014169\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005233\" locator=\"false\"/>\r\n    <row agent=\"Jollsreinn Gront\" agentid=\"3014170\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005362\" locator=\"false\"/>\r\n    <row agent=\"Arnkoken Eukten\" agentid=\"3014171\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005392\" locator=\"false\"/>\r\n    <row agent=\"Bjae Taven\" agentid=\"3014172\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005242\" locator=\"false\"/>\r\n    <row agent=\"Tadbifur Ludikaber\" agentid=\"3014173\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005299\" locator=\"false\"/>\r\n    <row agent=\"Bumerdald Gannera\" agentid=\"3014174\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"2\" locationid=\"60005290\" locator=\"false\"/>\r\n    <row agent=\"Folvik Renn\" agentid=\"3014175\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"4\" locationid=\"60005317\" locator=\"false\"/>\r\n    <row agent=\"Arsden Sturtoli\" agentid=\"3014176\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005350\" locator=\"false\"/>\r\n    <row agent=\"Skierinren Freatlidur\" agentid=\"3014177\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"2\" locationid=\"60005287\" locator=\"false\"/>\r\n    <row agent=\"Einungen Aelfeger\" agentid=\"3014178\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005329\" locator=\"false\"/>\r\n    <row agent=\"Abi Wlbrelh\" agentid=\"3014179\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"4\" locationid=\"60005296\" locator=\"false\"/>\r\n    <row agent=\"Afgit Kirgibad\" agentid=\"3014180\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"4\" locationid=\"60005350\" locator=\"false\"/>\r\n    <row agent=\"Koddestia Wlbrand\" agentid=\"3014181\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"2\" locationid=\"60005242\" locator=\"false\"/>\r\n    <row agent=\"Uttolf Benesuna\" agentid=\"3014182\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005296\" locator=\"false\"/>\r\n    <row agent=\"Etens Eikar\" agentid=\"3014183\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"4\" locationid=\"60005287\" locator=\"false\"/>\r\n    <row agent=\"Hedrulus Ulfengur\" agentid=\"3014184\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005368\" locator=\"false\"/>\r\n    <row agent=\"Rigongugo Ganeli\" agentid=\"3014185\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005308\" locator=\"false\"/>\r\n    <row agent=\"Sold Aellongart\" agentid=\"3014186\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005392\" locator=\"false\"/>\r\n    <row agent=\"Hendodam Kjaend\" agentid=\"3014187\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005266\" locator=\"false\"/>\r\n    <row agent=\"Winniki Uttindar\" agentid=\"3014188\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005290\" locator=\"false\"/>\r\n    <row agent=\"Heskidi Tomeider\" agentid=\"3014189\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"22\" level=\"3\" locationid=\"60005257\" locator=\"false\"/>\r\n    <row agent=\"Oddelulf Destlukur\" agentid=\"3014190\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"22\" level=\"3\" locationid=\"60005335\" locator=\"false\"/>\r\n    <row agent=\"Ninmelan Mondmugur\" agentid=\"3014191\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"22\" level=\"2\" locationid=\"60005311\" locator=\"false\"/>\r\n    <row agent=\"Innolf Tobageli\" agentid=\"3014192\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"22\" level=\"1\" locationid=\"60005284\" locator=\"false\"/>\r\n    <row agent=\"Birhartatten Asund\" agentid=\"3014193\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"22\" level=\"3\" locationid=\"60005329\" locator=\"false\"/>\r\n    <row agent=\"Erlige Arvavid\" agentid=\"3014194\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"22\" level=\"3\" locationid=\"60005353\" locator=\"false\"/>\r\n    <row agent=\"Ost Egnaef\" agentid=\"3014195\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"22\" level=\"1\" locationid=\"60005242\" locator=\"false\"/>\r\n    <row agent=\"Fraf Erus\" agentid=\"3014196\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"22\" level=\"1\" locationid=\"60005269\" locator=\"false\"/>\r\n    <row agent=\"Eilinsuard Andomellur\" agentid=\"3014197\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"22\" level=\"3\" locationid=\"60005263\" locator=\"false\"/>\r\n    <row agent=\"Aikellulf Raudadard\" agentid=\"3014198\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"3\" locationid=\"60005434\" locator=\"false\"/>\r\n    <row agent=\"Edreid Lurmur\" agentid=\"3014199\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"3\" locationid=\"60005545\" locator=\"false\"/>\r\n    <row agent=\"Huren Hir\" agentid=\"3014200\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"4\" locationid=\"60005494\" locator=\"false\"/>\r\n    <row agent=\"Gnia Ebrunur\" agentid=\"3014201\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"2\" locationid=\"60005557\" locator=\"false\"/>\r\n    <row agent=\"Akredold Teir\" agentid=\"3014202\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"2\" locationid=\"60005416\" locator=\"false\"/>\r\n    <row agent=\"Siramer Aldynbjar\" agentid=\"3014203\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"2\" locationid=\"60005509\" locator=\"false\"/>\r\n    <row agent=\"Gadagufert Svetestet\" agentid=\"3014204\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"1\" locationid=\"60005599\" locator=\"false\"/>\r\n    <row agent=\"Adrek Reigeko\" agentid=\"3014205\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"3\" locationid=\"60005593\" locator=\"false\"/>\r\n    <row agent=\"Malfit Bermedard\" agentid=\"3014206\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"2\" locationid=\"60005455\" locator=\"false\"/>\r\n    <row agent=\"Wutild Alikia\" agentid=\"3014207\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"2\" locationid=\"60005452\" locator=\"false\"/>\r\n    <row agent=\"Atige Otrin\" agentid=\"3014208\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"2\" locationid=\"60005524\" locator=\"false\"/>\r\n    <row agent=\"Zakt Alvald\" agentid=\"3014209\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"2\" locationid=\"60005635\" locator=\"false\"/>\r\n    <row agent=\"Brattawold Redber\" agentid=\"3014210\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"1\" locationid=\"60005467\" locator=\"false\"/>\r\n    <row agent=\"Eindolf Fer\" agentid=\"3014211\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"4\" locationid=\"60005566\" locator=\"false\"/>\r\n    <row agent=\"Olikia Ergreid\" agentid=\"3014212\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"3\" locationid=\"60005524\" locator=\"false\"/>\r\n    <row agent=\"Gettogur Aemoin\" agentid=\"3014213\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"3\" locationid=\"60005635\" locator=\"false\"/>\r\n    <row agent=\"Ewelfill Eskar\" agentid=\"3014214\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"2\" locationid=\"60005650\" locator=\"false\"/>\r\n    <row agent=\"Erorbert Andslar\" agentid=\"3014215\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"2\" locationid=\"60005434\" locator=\"false\"/>\r\n    <row agent=\"Liallemann Askanher\" agentid=\"3014216\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"1\" locationid=\"60005578\" locator=\"false\"/>\r\n    <row agent=\"Marviduin Eigen\" agentid=\"3014217\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"1\" locationid=\"60005656\" locator=\"false\"/>\r\n    <row agent=\"Svamenzo Onibrard\" agentid=\"3014218\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"3\" locationid=\"60005539\" locator=\"false\"/>\r\n    <row agent=\"Hinember Vattosbod\" agentid=\"3014219\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"2\" locationid=\"60005452\" locator=\"false\"/>\r\n    <row agent=\"Badik Skangt\" agentid=\"3014220\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"2\" locationid=\"60005671\" locator=\"false\"/>\r\n    <row agent=\"Oswosmer Yrmasgur\" agentid=\"3014221\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"1\" locationid=\"60005560\" locator=\"false\"/>\r\n    <row agent=\"Rervedia Adgrat\" agentid=\"3014222\" agenttypeid=\"4\" corporationid=\"1000056\" divisionid=\"18\" level=\"4\" locationid=\"60005629\" locator=\"false\"/>\r\n    <row agent=\"Herd Autur\" agentid=\"3014223\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"2\" locationid=\"60005626\" locator=\"false\"/>\r\n    <row agent=\"Ansoko Uruten\" agentid=\"3014224\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"1\" locationid=\"60005674\" locator=\"false\"/>\r\n    <row agent=\"Mydere Tonnender\" agentid=\"3014225\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"1\" locationid=\"60005611\" locator=\"false\"/>\r\n    <row agent=\"Ebryrand Imarmulf\" agentid=\"3014226\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"1\" locationid=\"60005434\" locator=\"false\"/>\r\n    <row agent=\"Hodrold Erdrin\" agentid=\"3014227\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"1\" locationid=\"60005485\" locator=\"false\"/>\r\n    <row agent=\"Eymennulf Hafetild\" agentid=\"3014228\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"24\" level=\"1\" locationid=\"60005422\" locator=\"false\"/>\r\n    <row agent=\"Gertuken Aluin\" agentid=\"3014229\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"2\" locationid=\"60005527\" locator=\"false\"/>\r\n    <row agent=\"Hasbildik Odgalard\" agentid=\"3014230\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"2\" locationid=\"60005647\" locator=\"false\"/>\r\n    <row agent=\"Albomulf Ninmuna\" agentid=\"3014231\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"1\" locationid=\"60005473\" locator=\"false\"/>\r\n    <row agent=\"Otbald Minginald\" agentid=\"3014232\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"1\" locationid=\"60005431\" locator=\"false\"/>\r\n    <row agent=\"Abbagur Sikenwik\" agentid=\"3014233\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"2\" locationid=\"60005641\" locator=\"false\"/>\r\n    <row agent=\"Skirn Hjonur\" agentid=\"3014234\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"3\" locationid=\"60005680\" locator=\"false\"/>\r\n    <row agent=\"Omnonur Leoluber\" agentid=\"3014235\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"1\" locationid=\"60005482\" locator=\"false\"/>\r\n    <row agent=\"Gedeget Hradhiko\" agentid=\"3014236\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"1\" locationid=\"60005629\" locator=\"false\"/>\r\n    <row agent=\"Orn Bennolar\" agentid=\"3014237\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"3\" locationid=\"60005527\" locator=\"false\"/>\r\n    <row agent=\"Sveard Banniskore\" agentid=\"3014238\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"2\" locationid=\"60005515\" locator=\"false\"/>\r\n    <row agent=\"Ualtrigilat Roguli\" agentid=\"3014239\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"1\" locationid=\"60005545\" locator=\"false\"/>\r\n    <row agent=\"Aitakan Reinsdar\" agentid=\"3014240\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"2\" locationid=\"60005671\" locator=\"false\"/>\r\n    <row agent=\"Raddelur Marilhard\" agentid=\"3014241\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"1\" locationid=\"60005566\" locator=\"false\"/>\r\n    <row agent=\"Jael Onnlir\" agentid=\"3014242\" agenttypeid=\"2\" corporationid=\"1000056\" divisionid=\"22\" level=\"3\" locationid=\"60005515\" locator=\"false\"/>\r\n    <row agent=\"Sirfortur Ofarter\" agentid=\"3014243\" agenttypeid=\"2\" corporationid=\"1000057\" divisionid=\"22\" level=\"3\" locationid=\"60005716\" locator=\"false\"/>\r\n    <row agent=\"Sarbeko Ordor\" agentid=\"3014244\" agenttypeid=\"2\" corporationid=\"1000057\" divisionid=\"22\" level=\"2\" locationid=\"60005716\" locator=\"false\"/>\r\n    <row agent=\"Arrald Beol\" agentid=\"3014245\" agenttypeid=\"2\" corporationid=\"1000057\" divisionid=\"22\" level=\"1\" locationid=\"60005704\" locator=\"false\"/>\r\n    <row agent=\"Gogoreimar Herbjens\" agentid=\"3014246\" agenttypeid=\"2\" corporationid=\"1000057\" divisionid=\"22\" level=\"1\" locationid=\"60005716\" locator=\"false\"/>\r\n    <row agent=\"Adbrand Ellosakse\" agentid=\"3014247\" agenttypeid=\"2\" corporationid=\"1000057\" divisionid=\"22\" level=\"2\" locationid=\"60005695\" locator=\"false\"/>\r\n    <row agent=\"Fibemulf Lurikur\" agentid=\"3014248\" agenttypeid=\"2\" corporationid=\"1000057\" divisionid=\"22\" level=\"1\" locationid=\"60005713\" locator=\"false\"/>\r\n    <row agent=\"Jarsk Drald\" agentid=\"3014249\" agenttypeid=\"2\" corporationid=\"1000057\" divisionid=\"24\" level=\"3\" locationid=\"60005713\" locator=\"false\"/>\r\n    <row agent=\"Illan Jaeld\" agentid=\"3014250\" agenttypeid=\"2\" corporationid=\"1000057\" divisionid=\"24\" level=\"2\" locationid=\"60005686\" locator=\"false\"/>\r\n    <row agent=\"Letreid Aunared\" agentid=\"3014251\" agenttypeid=\"2\" corporationid=\"1000057\" divisionid=\"24\" level=\"2\" locationid=\"60005689\" locator=\"false\"/>\r\n    <row agent=\"Atter Atakar\" agentid=\"3014252\" agenttypeid=\"2\" corporationid=\"1000057\" divisionid=\"24\" level=\"2\" locationid=\"60005698\" locator=\"false\"/>\r\n    <row agent=\"Hineneko Erpesen\" agentid=\"3014253\" agenttypeid=\"2\" corporationid=\"1000057\" divisionid=\"24\" level=\"2\" locationid=\"60005689\" locator=\"false\"/>\r\n    <row agent=\"Varn Reideber\" agentid=\"3014254\" agenttypeid=\"2\" corporationid=\"1000057\" divisionid=\"24\" level=\"4\" locationid=\"60005710\" locator=\"false\"/>\r\n    <row agent=\"Hormold Orard\" agentid=\"3014255\" agenttypeid=\"2\" corporationid=\"1000057\" divisionid=\"24\" level=\"1\" locationid=\"60005704\" locator=\"false\"/>\r\n    <row agent=\"Gadolf Dengvilsin\" agentid=\"3014256\" agenttypeid=\"2\" corporationid=\"1000057\" divisionid=\"24\" level=\"1\" locationid=\"60005710\" locator=\"false\"/>\r\n    <row agent=\"Widolden Akfi\" agentid=\"3014257\" agenttypeid=\"2\" corporationid=\"1000057\" divisionid=\"24\" level=\"1\" locationid=\"60005686\" locator=\"false\"/>\r\n    <row agent=\"Melanael Herlsestus\" agentid=\"3014258\" agenttypeid=\"2\" corporationid=\"1000058\" divisionid=\"22\" level=\"3\" locationid=\"60005722\" locator=\"false\"/>\r\n    <row agent=\"Jandh Odhillafnur\" agentid=\"3014259\" agenttypeid=\"2\" corporationid=\"1000058\" divisionid=\"22\" level=\"3\" locationid=\"60005722\" locator=\"false\"/>\r\n    <row agent=\"Fabrilter Eigur\" agentid=\"3014260\" agenttypeid=\"2\" corporationid=\"1000058\" divisionid=\"22\" level=\"2\" locationid=\"60005719\" locator=\"false\"/>\r\n    <row agent=\"Anfri Sorver\" agentid=\"3014261\" agenttypeid=\"2\" corporationid=\"1000058\" divisionid=\"22\" level=\"2\" locationid=\"60005719\" locator=\"false\"/>\r\n    <row agent=\"Aeva Regela\" agentid=\"3014262\" agenttypeid=\"2\" corporationid=\"1000058\" divisionid=\"24\" level=\"1\" locationid=\"60005722\" locator=\"false\"/>\r\n    <row agent=\"Ankar Eodren\" agentid=\"3014263\" agenttypeid=\"2\" corporationid=\"1000058\" divisionid=\"22\" level=\"2\" locationid=\"60005719\" locator=\"false\"/>\r\n    <row agent=\"Frelf Laer\" agentid=\"3014264\" agenttypeid=\"2\" corporationid=\"1000058\" divisionid=\"22\" level=\"2\" locationid=\"60005719\" locator=\"false\"/>\r\n    <row agent=\"Nagalti Vuifnker\" agentid=\"3014265\" agenttypeid=\"2\" corporationid=\"1000058\" divisionid=\"22\" level=\"3\" locationid=\"60005719\" locator=\"false\"/>\r\n    <row agent=\"Andraldit Rogidi\" agentid=\"3014266\" agenttypeid=\"2\" corporationid=\"1000058\" divisionid=\"24\" level=\"1\" locationid=\"60005719\" locator=\"false\"/>\r\n    <row agent=\"Ausleinn Stelrakur\" agentid=\"3014267\" agenttypeid=\"2\" corporationid=\"1000058\" divisionid=\"22\" level=\"2\" locationid=\"60005722\" locator=\"false\"/>\r\n    <row agent=\"Andgadad Geguftorn\" agentid=\"3014268\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"24\" level=\"3\" locationid=\"60005737\" locator=\"false\"/>\r\n    <row agent=\"Laert Tigigel\" agentid=\"3014269\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"24\" level=\"2\" locationid=\"60005749\" locator=\"false\"/>\r\n    <row agent=\"Harelkmes Kuls\" agentid=\"3014270\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"24\" level=\"3\" locationid=\"60005737\" locator=\"false\"/>\r\n    <row agent=\"Maldgekes Bedegen\" agentid=\"3014271\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"24\" level=\"1\" locationid=\"60005755\" locator=\"false\"/>\r\n    <row agent=\"Telbuldur Ristitluin\" agentid=\"3014272\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"24\" level=\"3\" locationid=\"60005755\" locator=\"false\"/>\r\n    <row agent=\"Weloda Onarulimmo\" agentid=\"3014273\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"24\" level=\"2\" locationid=\"60005755\" locator=\"false\"/>\r\n    <row agent=\"Irt Gadatild\" agentid=\"3014274\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"24\" level=\"1\" locationid=\"60005752\" locator=\"false\"/>\r\n    <row agent=\"Saevenur Teirg\" agentid=\"3014275\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"23\" level=\"2\" locationid=\"60005755\" locator=\"false\"/>\r\n    <row agent=\"Ebasger Engroran\" agentid=\"3014276\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"23\" level=\"1\" locationid=\"60005752\" locator=\"false\"/>\r\n    <row agent=\"Rangudny Streinard\" agentid=\"3014277\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"23\" level=\"2\" locationid=\"60005755\" locator=\"false\"/>\r\n    <row agent=\"Aland Gufrasa\" agentid=\"3014278\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"23\" level=\"2\" locationid=\"60005755\" locator=\"false\"/>\r\n    <row agent=\"Husgenar Odugfar\" agentid=\"3014279\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"22\" level=\"1\" locationid=\"60005743\" locator=\"false\"/>\r\n    <row agent=\"Gunelrat Gifn\" agentid=\"3014280\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"22\" level=\"3\" locationid=\"60005746\" locator=\"false\"/>\r\n    <row agent=\"Ninidi Ormezo\" agentid=\"3014281\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"22\" level=\"2\" locationid=\"60005746\" locator=\"false\"/>\r\n    <row agent=\"Grakidald Skolf\" agentid=\"3014282\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"22\" level=\"3\" locationid=\"60005725\" locator=\"false\"/>\r\n    <row agent=\"Agnael Ekard\" agentid=\"3014283\" agenttypeid=\"2\" corporationid=\"1000059\" divisionid=\"22\" level=\"2\" locationid=\"60005743\" locator=\"false\"/>\r\n    <row agent=\"Opporold Toglakar\" agentid=\"3014284\" agenttypeid=\"2\" corporationid=\"1000060\" divisionid=\"22\" level=\"1\" locationid=\"60005764\" locator=\"false\"/>\r\n    <row agent=\"Arkorn Jofnuard\" agentid=\"3014285\" agenttypeid=\"2\" corporationid=\"1000060\" divisionid=\"22\" level=\"2\" locationid=\"60005767\" locator=\"false\"/>\r\n    <row agent=\"Wallekon Aresia\" agentid=\"3014286\" agenttypeid=\"2\" corporationid=\"1000060\" divisionid=\"22\" level=\"1\" locationid=\"60005764\" locator=\"false\"/>\r\n    <row agent=\"Nanerinn Esonur\" agentid=\"3014287\" agenttypeid=\"2\" corporationid=\"1000060\" divisionid=\"22\" level=\"2\" locationid=\"60005767\" locator=\"false\"/>\r\n    <row agent=\"Odbavert Flost\" agentid=\"3014288\" agenttypeid=\"2\" corporationid=\"1000060\" divisionid=\"24\" level=\"1\" locationid=\"60005767\" locator=\"false\"/>\r\n    <row agent=\"Vadari Ingvalara\" agentid=\"3014289\" agenttypeid=\"2\" corporationid=\"1000060\" divisionid=\"24\" level=\"2\" locationid=\"60005761\" locator=\"false\"/>\r\n    <row agent=\"Rantaten Gongarid\" agentid=\"3014290\" agenttypeid=\"2\" corporationid=\"1000060\" divisionid=\"24\" level=\"3\" locationid=\"60005761\" locator=\"false\"/>\r\n    <row agent=\"Deunbard Ambran\" agentid=\"3014291\" agenttypeid=\"2\" corporationid=\"1000060\" divisionid=\"24\" level=\"2\" locationid=\"60005761\" locator=\"false\"/>\r\n    <row agent=\"Oguko Lef\" agentid=\"3014292\" agenttypeid=\"2\" corporationid=\"1000060\" divisionid=\"24\" level=\"2\" locationid=\"60005761\" locator=\"false\"/>\r\n    <row agent=\"Nogniduin Firtadur\" agentid=\"3014293\" agenttypeid=\"2\" corporationid=\"1000060\" divisionid=\"24\" level=\"3\" locationid=\"60005761\" locator=\"false\"/>\r\n    <row agent=\"Eorlan Arnkenur\" agentid=\"3014294\" agenttypeid=\"2\" corporationid=\"1000060\" divisionid=\"24\" level=\"1\" locationid=\"60005767\" locator=\"false\"/>\r\n    <row agent=\"Aelfeten Rong\" agentid=\"3014295\" agenttypeid=\"2\" corporationid=\"1000060\" divisionid=\"23\" level=\"4\" locationid=\"60005761\" locator=\"false\"/>\r\n    <row agent=\"Oddbjens Hagori\" agentid=\"3014296\" agenttypeid=\"2\" corporationid=\"1000060\" divisionid=\"23\" level=\"4\" locationid=\"60005767\" locator=\"false\"/>\r\n    <row agent=\"Embaland Rorsteri\" agentid=\"3014297\" agenttypeid=\"2\" corporationid=\"1000060\" divisionid=\"22\" level=\"1\" locationid=\"60005764\" locator=\"false\"/>\r\n    <row agent=\"Alestus Aetilfer\" agentid=\"3014298\" agenttypeid=\"2\" corporationid=\"1000060\" divisionid=\"22\" level=\"1\" locationid=\"60005764\" locator=\"false\"/>\r\n    <row agent=\"Aetotgur Duihlin\" agentid=\"3014299\" agenttypeid=\"2\" corporationid=\"1000060\" divisionid=\"22\" level=\"1\" locationid=\"60005767\" locator=\"false\"/>\r\n    <row agent=\"Avendsar Ingeset\" agentid=\"3014300\" agenttypeid=\"2\" corporationid=\"1000060\" divisionid=\"22\" level=\"1\" locationid=\"60005767\" locator=\"false\"/>\r\n    <row agent=\"Alranhild Latbrika\" agentid=\"3014301\" agenttypeid=\"2\" corporationid=\"1000060\" divisionid=\"22\" level=\"3\" locationid=\"60005764\" locator=\"false\"/>\r\n    <row agent=\"Agrik Ade\" agentid=\"3014302\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"1\" locationid=\"60005797\" locator=\"false\"/>\r\n    <row agent=\"Avesber Aendur\" agentid=\"3014303\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"1\" locationid=\"60005998\" locator=\"false\"/>\r\n    <row agent=\"Hargirsen Tialund\" agentid=\"3014304\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"2\" locationid=\"60005998\" locator=\"false\"/>\r\n    <row agent=\"Hastmena Augur\" agentid=\"3014305\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"2\" locationid=\"60005842\" locator=\"false\"/>\r\n    <row agent=\"Egomako Ivafsolf\" agentid=\"3014306\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"2\" locationid=\"60006028\" locator=\"false\"/>\r\n    <row agent=\"Ingar Ats\" agentid=\"3014307\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"2\" locationid=\"60005842\" locator=\"false\"/>\r\n    <row agent=\"Teudalur Tad\" agentid=\"3014308\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"3\" locationid=\"60005890\" locator=\"false\"/>\r\n    <row agent=\"Lulukelm Frirbensdarken\" agentid=\"3014309\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"3\" locationid=\"60006007\" locator=\"false\"/>\r\n    <row agent=\"Gurard Arrud\" agentid=\"3014310\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"2\" locationid=\"60005983\" locator=\"false\"/>\r\n    <row agent=\"Svalmkudver Wikena\" agentid=\"3014311\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"4\" locationid=\"60005812\" locator=\"false\"/>\r\n    <row agent=\"Eudat Hetetta\" agentid=\"3014312\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"4\" locationid=\"60005776\" locator=\"false\"/>\r\n    <row agent=\"Telf Hibrolfar\" agentid=\"3014313\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"1\" locationid=\"60005869\" locator=\"false\"/>\r\n    <row agent=\"Vegbjaren Rorkulo\" agentid=\"3014314\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"1\" locationid=\"60005839\" locator=\"false\"/>\r\n    <row agent=\"Olseinar Alranbjondan\" agentid=\"3014315\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"1\" locationid=\"60005908\" locator=\"false\"/>\r\n    <row agent=\"Wlfhund Brabard\" agentid=\"3014316\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"1\" locationid=\"60005959\" locator=\"false\"/>\r\n    <row agent=\"Girkidi Agorvert\" agentid=\"3014317\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"1\" locationid=\"60005977\" locator=\"false\"/>\r\n    <row agent=\"Meirruttur Rendela\" agentid=\"3014318\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"3\" locationid=\"60005917\" locator=\"false\"/>\r\n    <row agent=\"Dunidi Tolenni\" agentid=\"3014319\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"1\" locationid=\"60005827\" locator=\"false\"/>\r\n    <row agent=\"Buldiok Wedafur\" agentid=\"3014320\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"2\" locationid=\"60005917\" locator=\"false\"/>\r\n    <row agent=\"Sungino Bea\" agentid=\"3014321\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"1\" locationid=\"60005965\" locator=\"false\"/>\r\n    <row agent=\"Iktard Uptadir\" agentid=\"3014322\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"2\" locationid=\"60005974\" locator=\"false\"/>\r\n    <row agent=\"Reiluvovin Uanslagard\" agentid=\"3014323\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"2\" locationid=\"60005980\" locator=\"false\"/>\r\n    <row agent=\"Gann Eurboder\" agentid=\"3014324\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"3\" locationid=\"60005788\" locator=\"false\"/>\r\n    <row agent=\"Elmstet Albrinneka\" agentid=\"3014325\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"3\" locationid=\"60005803\" locator=\"false\"/>\r\n    <row agent=\"Willgrad Hlededolf\" agentid=\"3014326\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"1\" locationid=\"60006010\" locator=\"false\"/>\r\n    <row agent=\"Bodila Gokilia\" agentid=\"3014327\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"1\" locationid=\"60005776\" locator=\"false\"/>\r\n    <row agent=\"Eubald Erkabren\" agentid=\"3014328\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"1\" locationid=\"60005893\" locator=\"false\"/>\r\n    <row agent=\"Fibemulf Fideiri\" agentid=\"3014329\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"2\" locationid=\"60006007\" locator=\"false\"/>\r\n    <row agent=\"Ebeigrottan Gregirder\" agentid=\"3014330\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"2\" locationid=\"60005950\" locator=\"false\"/>\r\n    <row agent=\"Bumerdald Aetvald\" agentid=\"3014331\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"3\" locationid=\"60005857\" locator=\"false\"/>\r\n    <row agent=\"Eitleinn Olardulf\" agentid=\"3014332\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"1\" locationid=\"60005893\" locator=\"false\"/>\r\n    <row agent=\"Skonotta Avonsar\" agentid=\"3014333\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"3\" locationid=\"60006007\" locator=\"false\"/>\r\n    <row agent=\"Elden Darningur\" agentid=\"3014334\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"2\" locationid=\"60005860\" locator=\"false\"/>\r\n    <row agent=\"Uder Fokandar\" agentid=\"3014335\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"3\" locationid=\"60006037\" locator=\"false\"/>\r\n    <row agent=\"Hol Jafasus\" agentid=\"3014336\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"2\" locationid=\"60005848\" locator=\"false\"/>\r\n    <row agent=\"Autalduin Gitamer\" agentid=\"3014337\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"3\" locationid=\"60005812\" locator=\"false\"/>\r\n    <row agent=\"Egorgenur Idangsake\" agentid=\"3014339\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"2\" locationid=\"60005785\" locator=\"false\"/>\r\n    <row agent=\"Kugenur Engisi\" agentid=\"3014340\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"4\" locationid=\"60005821\" locator=\"false\"/>\r\n    <row agent=\"Aldolbod Gaginzo\" agentid=\"3014341\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"3\" locationid=\"60005923\" locator=\"false\"/>\r\n    <row agent=\"Dusdassin Altmulf\" agentid=\"3014342\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"1\" locationid=\"60005989\" locator=\"false\"/>\r\n    <row agent=\"Bushelrid Knjurletgel\" agentid=\"3014344\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"3\" locationid=\"60005968\" locator=\"false\"/>\r\n    <row agent=\"Briladila Orlard\" agentid=\"3014345\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"2\" locationid=\"60005845\" locator=\"false\"/>\r\n    <row agent=\"Ankar Rufgalfan\" agentid=\"3014346\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"24\" level=\"2\" locationid=\"60005800\" locator=\"false\"/>\r\n    <row agent=\"Teonulf Teolfer\" agentid=\"3014347\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"1\" locationid=\"60006046\" locator=\"false\"/>\r\n    <row agent=\"Bodila Amblolf\" agentid=\"3014348\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"2\" locationid=\"60006094\" locator=\"false\"/>\r\n    <row agent=\"Borenrin Agrik\" agentid=\"3014349\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"4\" locationid=\"60006058\" locator=\"false\"/>\r\n    <row agent=\"Gondh Gurwuker\" agentid=\"3014350\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"1\" locationid=\"60006094\" locator=\"false\"/>\r\n    <row agent=\"Jaed Ardnald\" agentid=\"3014351\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"3\" locationid=\"60006049\" locator=\"false\"/>\r\n    <row agent=\"Loron Gend\" agentid=\"3014352\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"2\" locationid=\"60006052\" locator=\"false\"/>\r\n    <row agent=\"Alad Jepali\" agentid=\"3014353\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"2\" locationid=\"60006130\" locator=\"false\"/>\r\n    <row agent=\"Tadaru Jeh\" agentid=\"3014354\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"2\" locationid=\"60006136\" locator=\"false\"/>\r\n    <row agent=\"Chatoba Saloti\" agentid=\"3014355\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"24\" level=\"4\" locationid=\"60006202\" locator=\"false\"/>\r\n    <row agent=\"Ekad Ghasorar\" agentid=\"3014356\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"24\" level=\"2\" locationid=\"60006124\" locator=\"false\"/>\r\n    <row agent=\"Motna Pamynir\" agentid=\"3014357\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"24\" level=\"3\" locationid=\"60006208\" locator=\"false\"/>\r\n    <row agent=\"Monasa Prokrime\" agentid=\"3014358\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"24\" level=\"2\" locationid=\"60006148\" locator=\"false\"/>\r\n    <row agent=\"Hezaghi Aseba\" agentid=\"3014359\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"24\" level=\"2\" locationid=\"60006166\" locator=\"false\"/>\r\n    <row agent=\"Fasanal Petadel\" agentid=\"3014360\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"24\" level=\"1\" locationid=\"60006184\" locator=\"false\"/>\r\n    <row agent=\"Jabaki Kiari\" agentid=\"3014361\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"24\" level=\"1\" locationid=\"60006157\" locator=\"false\"/>\r\n    <row agent=\"Marsab Shanora\" agentid=\"3014362\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"2\" locationid=\"60006199\" locator=\"false\"/>\r\n    <row agent=\"Disti Nad\" agentid=\"3014363\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"2\" locationid=\"60006160\" locator=\"false\"/>\r\n    <row agent=\"Mia Nirela\" agentid=\"3014364\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"3\" locationid=\"60006178\" locator=\"false\"/>\r\n    <row agent=\"Azimouh Hamse\" agentid=\"3014365\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"4\" locationid=\"60006148\" locator=\"false\"/>\r\n    <row agent=\"Jineni Buja\" agentid=\"3014366\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"1\" locationid=\"60006214\" locator=\"false\"/>\r\n    <row agent=\"Keba Karino\" agentid=\"3014367\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"4\" locationid=\"60006130\" locator=\"false\"/>\r\n    <row agent=\"Bemarah Rokiber\" agentid=\"3014368\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"3\" locationid=\"60006106\" locator=\"false\"/>\r\n    <row agent=\"Biru Tamdon\" agentid=\"3014369\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"3\" locationid=\"60006196\" locator=\"false\"/>\r\n    <row agent=\"Gheen Sadenu\" agentid=\"3014370\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"2\" locationid=\"60006193\" locator=\"false\"/>\r\n    <row agent=\"Tsouba Touli\" agentid=\"3014371\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"2\" locationid=\"60006205\" locator=\"false\"/>\r\n    <row agent=\"Sheyda Garisas\" agentid=\"3014372\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"2\" locationid=\"60006190\" locator=\"false\"/>\r\n    <row agent=\"Semou Zaseznad\" agentid=\"3014373\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"3\" locationid=\"60006181\" locator=\"false\"/>\r\n    <row agent=\"Mazottoo Lahdad\" agentid=\"3014374\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"3\" locationid=\"60006184\" locator=\"false\"/>\r\n    <row agent=\"Tunbam Shavias\" agentid=\"3014375\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"1\" locationid=\"60006202\" locator=\"false\"/>\r\n    <row agent=\"Ovafak Matamar\" agentid=\"3014376\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"3\" locationid=\"60006205\" locator=\"false\"/>\r\n    <row agent=\"Iriran Jodi\" agentid=\"3014377\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"3\" locationid=\"60006151\" locator=\"false\"/>\r\n    <row agent=\"Fastalar Akhwed\" agentid=\"3014378\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"3\" locationid=\"60006190\" locator=\"false\"/>\r\n    <row agent=\"Sierosh Bulidar\" agentid=\"3014379\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"4\" locationid=\"60006103\" locator=\"false\"/>\r\n    <row agent=\"Bibat Malisa\" agentid=\"3014380\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"1\" locationid=\"60006118\" locator=\"false\"/>\r\n    <row agent=\"Amzia Rianerq\" agentid=\"3014381\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"1\" locationid=\"60006181\" locator=\"false\"/>\r\n    <row agent=\"Alran Tabu\" agentid=\"3014382\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"2\" locationid=\"60006205\" locator=\"false\"/>\r\n    <row agent=\"Axami Namiritsya\" agentid=\"3014383\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"22\" level=\"3\" locationid=\"60006127\" locator=\"false\"/>\r\n    <row agent=\"Nessih Mikhir\" agentid=\"3014384\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"22\" level=\"3\" locationid=\"60006226\" locator=\"false\"/>\r\n    <row agent=\"Beromi Arrolid\" agentid=\"3014385\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"22\" level=\"1\" locationid=\"60006391\" locator=\"false\"/>\r\n    <row agent=\"Maktina Obasa\" agentid=\"3014386\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"22\" level=\"4\" locationid=\"60006319\" locator=\"false\"/>\r\n    <row agent=\"Mieri Tabier\" agentid=\"3014387\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"22\" level=\"3\" locationid=\"60006319\" locator=\"false\"/>\r\n    <row agent=\"Kitaba Eza\" agentid=\"3014388\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"1\" locationid=\"60006385\" locator=\"false\"/>\r\n    <row agent=\"Zohradin Odap\" agentid=\"3014389\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"3\" locationid=\"60006268\" locator=\"false\"/>\r\n    <row agent=\"Hahida Timyasun\" agentid=\"3014390\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"1\" locationid=\"60006232\" locator=\"false\"/>\r\n    <row agent=\"Mageeren Nafisu\" agentid=\"3014391\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"2\" locationid=\"60006289\" locator=\"false\"/>\r\n    <row agent=\"Fesht Samourin\" agentid=\"3014392\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"2\" locationid=\"60006235\" locator=\"false\"/>\r\n    <row agent=\"Mesghoh Huchmib\" agentid=\"3014393\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"3\" locationid=\"60006220\" locator=\"false\"/>\r\n    <row agent=\"Hahviba Jafalkou\" agentid=\"3014394\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"2\" locationid=\"60006352\" locator=\"false\"/>\r\n    <row agent=\"Demuror Moum\" agentid=\"3014395\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"2\" locationid=\"60006337\" locator=\"false\"/>\r\n    <row agent=\"Odeha Snamimen\" agentid=\"3014396\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"2\" locationid=\"60006274\" locator=\"false\"/>\r\n    <row agent=\"Fatani Shethaya\" agentid=\"3014397\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"2\" locationid=\"60006232\" locator=\"false\"/>\r\n    <row agent=\"Hiavedem Tirin\" agentid=\"3014398\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"2\" locationid=\"60006397\" locator=\"false\"/>\r\n    <row agent=\"Yasonar Anoh\" agentid=\"3014399\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"4\" locationid=\"60006277\" locator=\"false\"/>\r\n    <row agent=\"Shozas Oshavel\" agentid=\"3014400\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"1\" locationid=\"60006265\" locator=\"false\"/>\r\n    <row agent=\"Barama Bandi\" agentid=\"3014401\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"2\" locationid=\"60006319\" locator=\"false\"/>\r\n    <row agent=\"Savimtus Ahnestait\" agentid=\"3014402\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"2\" locationid=\"60006343\" locator=\"false\"/>\r\n    <row agent=\"Nogis Nararah\" agentid=\"3014403\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"1\" locationid=\"60006268\" locator=\"false\"/>\r\n    <row agent=\"Gata Raboker\" agentid=\"3014404\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"1\" locationid=\"60006379\" locator=\"false\"/>\r\n    <row agent=\"Javani Palkiba\" agentid=\"3014405\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"3\" locationid=\"60006223\" locator=\"false\"/>\r\n    <row agent=\"Amsid Sibih\" agentid=\"3014406\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"2\" locationid=\"60006388\" locator=\"false\"/>\r\n    <row agent=\"Bhakinah Soumoz\" agentid=\"3014407\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"2\" locationid=\"60006376\" locator=\"false\"/>\r\n    <row agent=\"Obayen Kathuskah\" agentid=\"3014408\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"24\" level=\"3\" locationid=\"60006226\" locator=\"false\"/>\r\n    <row agent=\"Khoor Yamema\" agentid=\"3014409\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"2\" locationid=\"60006307\" locator=\"false\"/>\r\n    <row agent=\"Gabk Timeyu\" agentid=\"3014410\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"3\" locationid=\"60006289\" locator=\"false\"/>\r\n    <row agent=\"Tazbenya Alardar\" agentid=\"3014411\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"2\" locationid=\"60006304\" locator=\"false\"/>\r\n    <row agent=\"Kiamieh Arraba\" agentid=\"3014412\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"1\" locationid=\"60006304\" locator=\"false\"/>\r\n    <row agent=\"Adabai Afon\" agentid=\"3014413\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"4\" locationid=\"60006307\" locator=\"false\"/>\r\n    <row agent=\"Padin Onsooh\" agentid=\"3014414\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"1\" locationid=\"60006397\" locator=\"false\"/>\r\n    <row agent=\"Kherarabadi Aimam\" agentid=\"3014415\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"2\" locationid=\"60006286\" locator=\"false\"/>\r\n    <row agent=\"Sahoka Somarkia\" agentid=\"3014416\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"2\" locationid=\"60006304\" locator=\"false\"/>\r\n    <row agent=\"Sehrnan Kimas\" agentid=\"3014417\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"3\" locationid=\"60006379\" locator=\"false\"/>\r\n    <row agent=\"Jayhshel Lieh\" agentid=\"3014418\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"2\" locationid=\"60006289\" locator=\"false\"/>\r\n    <row agent=\"Senadav Mierisi\" agentid=\"3014419\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"1\" locationid=\"60006289\" locator=\"false\"/>\r\n    <row agent=\"Rooh Fuztadoh\" agentid=\"3014420\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"1\" locationid=\"60006376\" locator=\"false\"/>\r\n    <row agent=\"Ondas Joradsee\" agentid=\"3014421\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"2\" locationid=\"60006304\" locator=\"false\"/>\r\n    <row agent=\"Finena Ralever\" agentid=\"3014422\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"4\" locationid=\"60006376\" locator=\"false\"/>\r\n    <row agent=\"Morka Shoumi\" agentid=\"3014423\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"2\" locationid=\"60006397\" locator=\"false\"/>\r\n    <row agent=\"Samainiz Izimer\" agentid=\"3014424\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"1\" locationid=\"60006379\" locator=\"false\"/>\r\n    <row agent=\"Garana Yamaden\" agentid=\"3014425\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"3\" locationid=\"60006289\" locator=\"false\"/>\r\n    <row agent=\"Efshan Gadse\" agentid=\"3014426\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"4\" locationid=\"60006340\" locator=\"false\"/>\r\n    <row agent=\"Thanikhtid Isror\" agentid=\"3014427\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"2\" locationid=\"60006397\" locator=\"false\"/>\r\n    <row agent=\"Arizam Kinya\" agentid=\"3014428\" agenttypeid=\"2\" corporationid=\"1000064\" divisionid=\"23\" level=\"2\" locationid=\"60006397\" locator=\"false\"/>\r\n    <row agent=\"Cila Saeed\" agentid=\"3014429\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"24\" level=\"3\" locationid=\"60006556\" locator=\"false\"/>\r\n    <row agent=\"Kimeshan Arzirmur\" agentid=\"3014430\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"24\" level=\"3\" locationid=\"60006517\" locator=\"false\"/>\r\n    <row agent=\"Armafat Kiari\" agentid=\"3014431\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"24\" level=\"2\" locationid=\"60006445\" locator=\"false\"/>\r\n    <row agent=\"Zoke Birantin\" agentid=\"3014432\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"24\" level=\"1\" locationid=\"60006412\" locator=\"false\"/>\r\n    <row agent=\"Hout Hoba\" agentid=\"3014433\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"24\" level=\"1\" locationid=\"60006415\" locator=\"false\"/>\r\n    <row agent=\"Onzal Artamya\" agentid=\"3014434\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"2\" locationid=\"60006460\" locator=\"false\"/>\r\n    <row agent=\"Tiranan Sanzak\" agentid=\"3014435\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"3\" locationid=\"60006541\" locator=\"false\"/>\r\n    <row agent=\"Taanart Senadav\" agentid=\"3014436\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"2\" locationid=\"60006481\" locator=\"false\"/>\r\n    <row agent=\"Takigbem Zaimeth\" agentid=\"3014437\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"2\" locationid=\"60006442\" locator=\"false\"/>\r\n    <row agent=\"Vandacha Niamphar\" agentid=\"3014438\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"2\" locationid=\"60006454\" locator=\"false\"/>\r\n    <row agent=\"Gakib Ghasorar\" agentid=\"3014439\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"24\" level=\"4\" locationid=\"60006460\" locator=\"false\"/>\r\n    <row agent=\"Unevak Naloran\" agentid=\"3014440\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"24\" level=\"2\" locationid=\"60006436\" locator=\"false\"/>\r\n    <row agent=\"Afsediam Telamshes\" agentid=\"3014441\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"24\" level=\"3\" locationid=\"60006478\" locator=\"false\"/>\r\n    <row agent=\"Zioshol Nood\" agentid=\"3014442\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"24\" level=\"2\" locationid=\"60006442\" locator=\"false\"/>\r\n    <row agent=\"Sehan Mahieheen\" agentid=\"3014443\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"24\" level=\"2\" locationid=\"60006460\" locator=\"false\"/>\r\n    <row agent=\"Dertisht Ajmin\" agentid=\"3014444\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"2\" locationid=\"60006436\" locator=\"false\"/>\r\n    <row agent=\"Baba Rarami\" agentid=\"3014445\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"3\" locationid=\"60006529\" locator=\"false\"/>\r\n    <row agent=\"Koreri Abian\" agentid=\"3014446\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"1\" locationid=\"60006541\" locator=\"false\"/>\r\n    <row agent=\"Chetin Besrelo\" agentid=\"3014447\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"3\" locationid=\"60006436\" locator=\"false\"/>\r\n    <row agent=\"Bottim Higania\" agentid=\"3014448\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"1\" locationid=\"60006436\" locator=\"false\"/>\r\n    <row agent=\"Fenimabali Zavonik\" agentid=\"3014449\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"1\" locationid=\"60006496\" locator=\"false\"/>\r\n    <row agent=\"Jopri Rayl\" agentid=\"3014450\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"2\" locationid=\"60006529\" locator=\"false\"/>\r\n    <row agent=\"Obouz Tegayiv\" agentid=\"3014451\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"1\" locationid=\"60006541\" locator=\"false\"/>\r\n    <row agent=\"Khanes Dini\" agentid=\"3014452\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"3\" locationid=\"60006460\" locator=\"false\"/>\r\n    <row agent=\"Amdi Hurmek\" agentid=\"3014453\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"1\" locationid=\"60006436\" locator=\"false\"/>\r\n    <row agent=\"Kondiah Sib\" agentid=\"3014454\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"2\" locationid=\"60006436\" locator=\"false\"/>\r\n    <row agent=\"Sabidag Pizteed\" agentid=\"3014455\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"3\" locationid=\"60006436\" locator=\"false\"/>\r\n    <row agent=\"Banjana Goud\" agentid=\"3014456\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"2\" locationid=\"60006541\" locator=\"false\"/>\r\n    <row agent=\"Jeme Asorerid\" agentid=\"3014457\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"3\" locationid=\"60006481\" locator=\"false\"/>\r\n    <row agent=\"Agahen Firolar\" agentid=\"3014458\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"2\" locationid=\"60006481\" locator=\"false\"/>\r\n    <row agent=\"Shatehrah Baph\" agentid=\"3014459\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"1\" locationid=\"60006496\" locator=\"false\"/>\r\n    <row agent=\"Alran Sherita\" agentid=\"3014460\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"22\" level=\"2\" locationid=\"60006541\" locator=\"false\"/>\r\n    <row agent=\"Khousi Malma\" agentid=\"3014461\" agenttypeid=\"2\" corporationid=\"1000066\" divisionid=\"22\" level=\"1\" locationid=\"60006598\" locator=\"false\"/>\r\n    <row agent=\"Uanirok Darnir\" agentid=\"3014462\" agenttypeid=\"2\" corporationid=\"1000066\" divisionid=\"24\" level=\"4\" locationid=\"60006586\" locator=\"false\"/>\r\n    <row agent=\"Sedma Aps\" agentid=\"3014463\" agenttypeid=\"2\" corporationid=\"1000066\" divisionid=\"22\" level=\"2\" locationid=\"60006601\" locator=\"false\"/>\r\n    <row agent=\"Anit Landel\" agentid=\"3014464\" agenttypeid=\"2\" corporationid=\"1000066\" divisionid=\"22\" level=\"2\" locationid=\"60006613\" locator=\"false\"/>\r\n    <row agent=\"Eveh Pomar\" agentid=\"3014465\" agenttypeid=\"4\" corporationid=\"1000066\" divisionid=\"18\" level=\"3\" locationid=\"60006607\" locator=\"false\"/>\r\n    <row agent=\"Gatan Falboudih\" agentid=\"3014466\" agenttypeid=\"4\" corporationid=\"1000066\" divisionid=\"18\" level=\"3\" locationid=\"60006592\" locator=\"false\"/>\r\n    <row agent=\"Bikan Uanen\" agentid=\"3014467\" agenttypeid=\"4\" corporationid=\"1000066\" divisionid=\"18\" level=\"3\" locationid=\"60006586\" locator=\"false\"/>\r\n    <row agent=\"Yonal Janonah\" agentid=\"3014468\" agenttypeid=\"4\" corporationid=\"1000066\" divisionid=\"18\" level=\"2\" locationid=\"60006604\" locator=\"false\"/>\r\n    <row agent=\"Guhden Hahran\" agentid=\"3014469\" agenttypeid=\"4\" corporationid=\"1000066\" divisionid=\"18\" level=\"1\" locationid=\"60006580\" locator=\"false\"/>\r\n    <row agent=\"Abenar Zindob\" agentid=\"3014470\" agenttypeid=\"4\" corporationid=\"1000066\" divisionid=\"18\" level=\"1\" locationid=\"60006589\" locator=\"false\"/>\r\n    <row agent=\"Bouf Chelul\" agentid=\"3014471\" agenttypeid=\"4\" corporationid=\"1000066\" divisionid=\"18\" level=\"2\" locationid=\"60006589\" locator=\"false\"/>\r\n    <row agent=\"Anatha Houn\" agentid=\"3014472\" agenttypeid=\"4\" corporationid=\"1000066\" divisionid=\"18\" level=\"1\" locationid=\"60006586\" locator=\"false\"/>\r\n    <row agent=\"Fened Mazelen\" agentid=\"3014473\" agenttypeid=\"4\" corporationid=\"1000066\" divisionid=\"18\" level=\"2\" locationid=\"60006586\" locator=\"false\"/>\r\n    <row agent=\"Parud Vakirokiki\" agentid=\"3014474\" agenttypeid=\"4\" corporationid=\"1000066\" divisionid=\"18\" level=\"3\" locationid=\"60006604\" locator=\"false\"/>\r\n    <row agent=\"Sahmat Doshu\" agentid=\"3014475\" agenttypeid=\"4\" corporationid=\"1000066\" divisionid=\"18\" level=\"2\" locationid=\"60006580\" locator=\"false\"/>\r\n    <row agent=\"Nikpipa Amben\" agentid=\"3014476\" agenttypeid=\"4\" corporationid=\"1000066\" divisionid=\"18\" level=\"2\" locationid=\"60006604\" locator=\"false\"/>\r\n    <row agent=\"Assilik Nelayira\" agentid=\"3014477\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"1\" locationid=\"60006646\" locator=\"false\"/>\r\n    <row agent=\"Diosa Respes\" agentid=\"3014478\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"1\" locationid=\"60006646\" locator=\"false\"/>\r\n    <row agent=\"Eveh Nahsazroma\" agentid=\"3014479\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"3\" locationid=\"60006712\" locator=\"false\"/>\r\n    <row agent=\"Nambouk Memi\" agentid=\"3014480\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"1\" locationid=\"60006697\" locator=\"false\"/>\r\n    <row agent=\"Riana Mananen\" agentid=\"3014481\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"1\" locationid=\"60006628\" locator=\"false\"/>\r\n    <row agent=\"Lena Hamse\" agentid=\"3014482\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"1\" locationid=\"60006634\" locator=\"false\"/>\r\n    <row agent=\"Magafshah Egemur\" agentid=\"3014483\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"2\" locationid=\"60006709\" locator=\"false\"/>\r\n    <row agent=\"Chari Zarkafa\" agentid=\"3014484\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"2\" locationid=\"60006721\" locator=\"false\"/>\r\n    <row agent=\"Falarga Pemmid\" agentid=\"3014485\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"3\" locationid=\"60006715\" locator=\"false\"/>\r\n    <row agent=\"Balete Magad\" agentid=\"3014486\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"1\" locationid=\"60006622\" locator=\"false\"/>\r\n    <row agent=\"Zarghin Shika\" agentid=\"3014487\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"2\" locationid=\"60006652\" locator=\"false\"/>\r\n    <row agent=\"Sagar Hovoten\" agentid=\"3014488\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"2\" locationid=\"60006661\" locator=\"false\"/>\r\n    <row agent=\"Rira Abhuh\" agentid=\"3014489\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"3\" locationid=\"60006667\" locator=\"false\"/>\r\n    <row agent=\"Amiam Hafa\" agentid=\"3014490\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"2\" locationid=\"60006700\" locator=\"false\"/>\r\n    <row agent=\"Velara Tasule\" agentid=\"3014491\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"1\" locationid=\"60006688\" locator=\"false\"/>\r\n    <row agent=\"Bekh Maiahlai\" agentid=\"3014492\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"2\" locationid=\"60006646\" locator=\"false\"/>\r\n    <row agent=\"Chezhgirar Gekooma\" agentid=\"3014493\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"2\" locationid=\"60006667\" locator=\"false\"/>\r\n    <row agent=\"Mashar Anez\" agentid=\"3014494\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"1\" locationid=\"60006724\" locator=\"false\"/>\r\n    <row agent=\"Fakhzim Handriu\" agentid=\"3014495\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"2\" locationid=\"60006664\" locator=\"false\"/>\r\n    <row agent=\"Metmeon Pisarpir\" agentid=\"3014496\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"4\" locationid=\"60006628\" locator=\"false\"/>\r\n    <row agent=\"Abtou Abiar\" agentid=\"3014497\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"1\" locationid=\"60006649\" locator=\"false\"/>\r\n    <row agent=\"Hamoba Bashakru\" agentid=\"3014498\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"1\" locationid=\"60006697\" locator=\"false\"/>\r\n    <row agent=\"Meyous Gana\" agentid=\"3014499\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"3\" locationid=\"60006688\" locator=\"false\"/>\r\n    <row agent=\"Arzieh Tarvia\" agentid=\"3014500\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"2\" locationid=\"60006724\" locator=\"false\"/>\r\n    <row agent=\"Gadah Nageli\" agentid=\"3014501\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"2\" locationid=\"60006679\" locator=\"false\"/>\r\n    <row agent=\"Nanja Yeden\" agentid=\"3014502\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"1\" locationid=\"60006712\" locator=\"false\"/>\r\n    <row agent=\"Appakir Dahzika\" agentid=\"3014503\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"3\" locationid=\"60006646\" locator=\"false\"/>\r\n    <row agent=\"Auraghah Aronnil\" agentid=\"3014504\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"1\" locationid=\"60006700\" locator=\"false\"/>\r\n    <row agent=\"Ghagoh Saphthar\" agentid=\"3014505\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"3\" locationid=\"60006688\" locator=\"false\"/>\r\n    <row agent=\"Minata Khasra\" agentid=\"3014506\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"3\" locationid=\"60006727\" locator=\"false\"/>\r\n    <row agent=\"Passum Sisidri\" agentid=\"3014507\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"3\" locationid=\"60006640\" locator=\"false\"/>\r\n    <row agent=\"Miel Karouyan\" agentid=\"3014508\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"22\" level=\"2\" locationid=\"60006739\" locator=\"false\"/>\r\n    <row agent=\"Fararouz Chamume\" agentid=\"3014509\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"22\" level=\"2\" locationid=\"60006760\" locator=\"false\"/>\r\n    <row agent=\"Kaira Vona\" agentid=\"3014510\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"22\" level=\"1\" locationid=\"60006760\" locator=\"false\"/>\r\n    <row agent=\"Hofuan Heli\" agentid=\"3014511\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"22\" level=\"2\" locationid=\"60006760\" locator=\"false\"/>\r\n    <row agent=\"Bamadak Orabasash\" agentid=\"3014512\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"22\" level=\"3\" locationid=\"60006754\" locator=\"false\"/>\r\n    <row agent=\"Ibeb Hakht\" agentid=\"3014513\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"24\" level=\"3\" locationid=\"60006748\" locator=\"false\"/>\r\n    <row agent=\"Onakou Bidanshan\" agentid=\"3014514\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"24\" level=\"3\" locationid=\"60006739\" locator=\"false\"/>\r\n    <row agent=\"Gimit Jenina\" agentid=\"3014515\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"24\" level=\"2\" locationid=\"60006736\" locator=\"false\"/>\r\n    <row agent=\"Mouka Heeraz\" agentid=\"3014516\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"24\" level=\"2\" locationid=\"60006763\" locator=\"false\"/>\r\n    <row agent=\"Rirayim Gezmi\" agentid=\"3014517\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"24\" level=\"1\" locationid=\"60006754\" locator=\"false\"/>\r\n    <row agent=\"Nerduken Mahmaf\" agentid=\"3014518\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"24\" level=\"2\" locationid=\"60006760\" locator=\"false\"/>\r\n    <row agent=\"Bahoon Pavadod\" agentid=\"3014519\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"22\" level=\"2\" locationid=\"60006769\" locator=\"false\"/>\r\n    <row agent=\"Sibenu Dakhaci\" agentid=\"3014520\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"22\" level=\"1\" locationid=\"60006739\" locator=\"false\"/>\r\n    <row agent=\"Seduhi Mihraha\" agentid=\"3014521\" agenttypeid=\"2\" corporationid=\"1000068\" divisionid=\"22\" level=\"3\" locationid=\"60006760\" locator=\"false\"/>\r\n    <row agent=\"Daphiti Kesiam\" agentid=\"3014522\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"24\" level=\"1\" locationid=\"60006841\" locator=\"false\"/>\r\n    <row agent=\"Mamdasan Hoghosh\" agentid=\"3014523\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"24\" level=\"2\" locationid=\"60006880\" locator=\"false\"/>\r\n    <row agent=\"Mour Pissara\" agentid=\"3014524\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"24\" level=\"2\" locationid=\"60006895\" locator=\"false\"/>\r\n    <row agent=\"Mahork Ohyah\" agentid=\"3014525\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"1\" locationid=\"60006844\" locator=\"false\"/>\r\n    <row agent=\"Panda Ladraner\" agentid=\"3014526\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"2\" locationid=\"60006862\" locator=\"false\"/>\r\n    <row agent=\"Ihah Pokafen\" agentid=\"3014527\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"3\" locationid=\"60006820\" locator=\"false\"/>\r\n    <row agent=\"Pinarab Garisas\" agentid=\"3014528\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"4\" locationid=\"60006790\" locator=\"false\"/>\r\n    <row agent=\"Darda Bipra\" agentid=\"3014529\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"2\" locationid=\"60006883\" locator=\"false\"/>\r\n    <row agent=\"Babenar Ziakiehr\" agentid=\"3014530\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"22\" level=\"3\" locationid=\"60006886\" locator=\"false\"/>\r\n    <row agent=\"Jusemet Cir\" agentid=\"3014531\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"22\" level=\"1\" locationid=\"60006802\" locator=\"false\"/>\r\n    <row agent=\"Jeka Uanivon\" agentid=\"3014532\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"22\" level=\"1\" locationid=\"60006793\" locator=\"false\"/>\r\n    <row agent=\"Azah Horim\" agentid=\"3014533\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"22\" level=\"2\" locationid=\"60006868\" locator=\"false\"/>\r\n    <row agent=\"Niyarrakaka Zoliana\" agentid=\"3014534\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"22\" level=\"1\" locationid=\"60006895\" locator=\"false\"/>\r\n    <row agent=\"Sedlai Zepasi\" agentid=\"3014535\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"22\" level=\"1\" locationid=\"60006814\" locator=\"false\"/>\r\n    <row agent=\"Kirul Nannum\" agentid=\"3014536\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"22\" level=\"2\" locationid=\"60006784\" locator=\"false\"/>\r\n    <row agent=\"Kahmass Nahiara\" agentid=\"3014537\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"22\" level=\"1\" locationid=\"60006841\" locator=\"false\"/>\r\n    <row agent=\"Rotaveru Ladi\" agentid=\"3014538\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"22\" level=\"1\" locationid=\"60006847\" locator=\"false\"/>\r\n    <row agent=\"Saman Numarkher\" agentid=\"3014539\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"24\" level=\"2\" locationid=\"60006928\" locator=\"false\"/>\r\n    <row agent=\"Nibebratandra Miri\" agentid=\"3014540\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"24\" level=\"2\" locationid=\"60006934\" locator=\"false\"/>\r\n    <row agent=\"Mumari Emelkimik\" agentid=\"3014541\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"24\" level=\"2\" locationid=\"60006937\" locator=\"false\"/>\r\n    <row agent=\"Shooh Manyiphem\" agentid=\"3014542\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"24\" level=\"2\" locationid=\"60006934\" locator=\"false\"/>\r\n    <row agent=\"Jayn Bart\" agentid=\"3014543\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"24\" level=\"2\" locationid=\"60006937\" locator=\"false\"/>\r\n    <row agent=\"Fima Madjuran\" agentid=\"3014544\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"24\" level=\"2\" locationid=\"60006922\" locator=\"false\"/>\r\n    <row agent=\"Bareshom Abambo\" agentid=\"3014545\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"3\" locationid=\"60006925\" locator=\"false\"/>\r\n    <row agent=\"Gattepa Can\" agentid=\"3014546\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"2\" locationid=\"60006907\" locator=\"false\"/>\r\n    <row agent=\"Rabaidio Garmasi\" agentid=\"3014547\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"2\" locationid=\"60006934\" locator=\"false\"/>\r\n    <row agent=\"Dideedah Amoura\" agentid=\"3014548\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"3\" locationid=\"60006934\" locator=\"false\"/>\r\n    <row agent=\"Shila Aliliz\" agentid=\"3014549\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"1\" locationid=\"60006907\" locator=\"false\"/>\r\n    <row agent=\"Danege Gane\" agentid=\"3014550\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"4\" locationid=\"60006907\" locator=\"false\"/>\r\n    <row agent=\"Anarit Yooh\" agentid=\"3014551\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"2\" locationid=\"60006907\" locator=\"false\"/>\r\n    <row agent=\"Emieh Ranumyai\" agentid=\"3014552\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"2\" locationid=\"60006937\" locator=\"false\"/>\r\n    <row agent=\"Arshon Chutsya\" agentid=\"3014553\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"4\" locationid=\"60006937\" locator=\"false\"/>\r\n    <row agent=\"Hebanden Ahrbal\" agentid=\"3014554\" agenttypeid=\"2\" corporationid=\"1000070\" divisionid=\"23\" level=\"2\" locationid=\"60006931\" locator=\"false\"/>\r\n    <row agent=\"Pamamun Routa\" agentid=\"3014555\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"24\" level=\"4\" locationid=\"60006952\" locator=\"false\"/>\r\n    <row agent=\"Batman Dohdaci\" agentid=\"3014556\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"24\" level=\"2\" locationid=\"60006985\" locator=\"false\"/>\r\n    <row agent=\"Ranni Ganema\" agentid=\"3014557\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"24\" level=\"2\" locationid=\"60006979\" locator=\"false\"/>\r\n    <row agent=\"Danulaf Sierniya\" agentid=\"3014558\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"24\" level=\"3\" locationid=\"60006961\" locator=\"false\"/>\r\n    <row agent=\"Saranan Wanouh\" agentid=\"3014559\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"24\" level=\"2\" locationid=\"60006964\" locator=\"false\"/>\r\n    <row agent=\"Apash Joskart\" agentid=\"3014560\" agenttypeid=\"2\" corporationid=\"1000071\" divisionid=\"24\" level=\"2\" locationid=\"60006991\" locator=\"false\"/>\r\n    <row agent=\"Irari Jatara\" agentid=\"3014561\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"3\" locationid=\"60007090\" locator=\"false\"/>\r\n    <row agent=\"Rieresh Bhahrnet\" agentid=\"3014562\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"3\" locationid=\"60007075\" locator=\"false\"/>\r\n    <row agent=\"Jaynerk Lanoh\" agentid=\"3014563\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"2\" locationid=\"60007156\" locator=\"false\"/>\r\n    <row agent=\"Nalda Rasteed\" agentid=\"3014564\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"2\" locationid=\"60007132\" locator=\"false\"/>\r\n    <row agent=\"Erayud Noranal\" agentid=\"3014565\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"1\" locationid=\"60007138\" locator=\"false\"/>\r\n    <row agent=\"Fesse Mibe\" agentid=\"3014566\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"2\" locationid=\"60007078\" locator=\"false\"/>\r\n    <row agent=\"Merouli Erabsez\" agentid=\"3014567\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"1\" locationid=\"60007075\" locator=\"false\"/>\r\n    <row agent=\"Masral Fathen\" agentid=\"3014568\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"1\" locationid=\"60007153\" locator=\"false\"/>\r\n    <row agent=\"Ehmuh Domous\" agentid=\"3014569\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"4\" locationid=\"60007051\" locator=\"false\"/>\r\n    <row agent=\"Vitoo Knakhier\" agentid=\"3014570\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"2\" locationid=\"60007099\" locator=\"false\"/>\r\n    <row agent=\"Bhandi Qerray\" agentid=\"3014571\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"1\" locationid=\"60007180\" locator=\"false\"/>\r\n    <row agent=\"Edoot Lifu\" agentid=\"3014572\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"2\" locationid=\"60007063\" locator=\"false\"/>\r\n    <row agent=\"Detunid Metmeon\" agentid=\"3014573\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"2\" locationid=\"60007102\" locator=\"false\"/>\r\n    <row agent=\"Lamberk Seepheha\" agentid=\"3014574\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"3\" locationid=\"60007138\" locator=\"false\"/>\r\n    <row agent=\"Kuzime Aurechil\" agentid=\"3014575\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"1\" locationid=\"60007054\" locator=\"false\"/>\r\n    <row agent=\"Joasa Asabal\" agentid=\"3014576\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"4\" locationid=\"60007180\" locator=\"false\"/>\r\n    <row agent=\"Davindra Gazishes\" agentid=\"3014577\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"3\" locationid=\"60007099\" locator=\"false\"/>\r\n    <row agent=\"Zhakid Touli\" agentid=\"3014578\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"2\" locationid=\"60007018\" locator=\"false\"/>\r\n    <row agent=\"Hudi Sivairam\" agentid=\"3014579\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"1\" locationid=\"60007012\" locator=\"false\"/>\r\n    <row agent=\"Eredlis Atshadoz\" agentid=\"3014580\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"2\" locationid=\"60007117\" locator=\"false\"/>\r\n    <row agent=\"Arafaya Sechani\" agentid=\"3014581\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"3\" locationid=\"60007114\" locator=\"false\"/>\r\n    <row agent=\"Dari Pareh\" agentid=\"3014582\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"4\" locationid=\"60007138\" locator=\"false\"/>\r\n    <row agent=\"Amoram Heka\" agentid=\"3014583\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"1\" locationid=\"60007012\" locator=\"false\"/>\r\n    <row agent=\"Fesht Rardera\" agentid=\"3014584\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007063\" locator=\"false\"/>\r\n    <row agent=\"Ammaken Ahri\" agentid=\"3014585\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"2\" locationid=\"60007069\" locator=\"false\"/>\r\n    <row agent=\"Ikpa Khni\" agentid=\"3014586\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"2\" locationid=\"60007132\" locator=\"false\"/>\r\n    <row agent=\"Purvamreh Hadi\" agentid=\"3014587\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"24\" level=\"1\" locationid=\"60007018\" locator=\"false\"/>\r\n    <row agent=\"Ayah Maeed\" agentid=\"3014588\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007060\" locator=\"false\"/>\r\n    <row agent=\"Mervan Shakai\" agentid=\"3014589\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"4\" locationid=\"60007123\" locator=\"false\"/>\r\n    <row agent=\"Nirbhi Zara\" agentid=\"3014590\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007057\" locator=\"false\"/>\r\n    <row agent=\"Ehtina Yanutchert\" agentid=\"3014591\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007021\" locator=\"false\"/>\r\n    <row agent=\"Hisa Urayya\" agentid=\"3014592\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"3\" locationid=\"60007132\" locator=\"false\"/>\r\n    <row agent=\"Taidecar Memutek\" agentid=\"3014593\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"3\" locationid=\"60007084\" locator=\"false\"/>\r\n    <row agent=\"Fehnabre Ithara\" agentid=\"3014594\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007054\" locator=\"false\"/>\r\n    <row agent=\"Vilaya Maanas\" agentid=\"3014595\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007108\" locator=\"false\"/>\r\n    <row agent=\"Adee Ehnar\" agentid=\"3014596\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"3\" locationid=\"60007108\" locator=\"false\"/>\r\n    <row agent=\"Adamrepun Sararik\" agentid=\"3014597\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007132\" locator=\"false\"/>\r\n    <row agent=\"Mahara Shadara\" agentid=\"3014598\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"3\" locationid=\"60007042\" locator=\"false\"/>\r\n    <row agent=\"Doora Zifsork\" agentid=\"3014599\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007114\" locator=\"false\"/>\r\n    <row agent=\"Habnosh Ohrim\" agentid=\"3014600\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007135\" locator=\"false\"/>\r\n    <row agent=\"Mazamoh Pesimar\" agentid=\"3014601\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"3\" locationid=\"60007162\" locator=\"false\"/>\r\n    <row agent=\"Kourim Shabifi\" agentid=\"3014602\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"2\" locationid=\"60007099\" locator=\"false\"/>\r\n    <row agent=\"Wildigia Tarbuta\" agentid=\"3014603\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007168\" locator=\"false\"/>\r\n    <row agent=\"Peyd Abam\" agentid=\"3014604\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"2\" locationid=\"60007036\" locator=\"false\"/>\r\n    <row agent=\"Abnar Shiriru\" agentid=\"3014605\" agenttypeid=\"2\" corporationid=\"1000072\" divisionid=\"22\" level=\"3\" locationid=\"60007105\" locator=\"false\"/>\r\n    <row agent=\"Arzieh Irkafan\" agentid=\"3014606\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"24\" level=\"2\" locationid=\"60007207\" locator=\"false\"/>\r\n    <row agent=\"Zesia Chebha\" agentid=\"3014607\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"24\" level=\"2\" locationid=\"60007201\" locator=\"false\"/>\r\n    <row agent=\"Dahin Tafsas\" agentid=\"3014608\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"24\" level=\"3\" locationid=\"60007192\" locator=\"false\"/>\r\n    <row agent=\"Tatah Panye\" agentid=\"3014609\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"3\" locationid=\"60007192\" locator=\"false\"/>\r\n    <row agent=\"Khana Airshaz\" agentid=\"3014610\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"1\" locationid=\"60007213\" locator=\"false\"/>\r\n    <row agent=\"Ash Femai\" agentid=\"3014611\" agenttypeid=\"2\" corporationid=\"1000073\" divisionid=\"22\" level=\"3\" locationid=\"60007198\" locator=\"false\"/>\r\n    <row agent=\"Afemieh Etshan\" agentid=\"3014612\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"3\" locationid=\"60007351\" locator=\"false\"/>\r\n    <row agent=\"Kinkad Moutid\" agentid=\"3014613\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"3\" locationid=\"60007480\" locator=\"false\"/>\r\n    <row agent=\"Sachumad Shoon\" agentid=\"3014614\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007372\" locator=\"false\"/>\r\n    <row agent=\"Esalabah Lafasad\" agentid=\"3014615\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007477\" locator=\"false\"/>\r\n    <row agent=\"Sarichen Ateh\" agentid=\"3014616\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"1\" locationid=\"60007354\" locator=\"false\"/>\r\n    <row agent=\"Ananam Besuda\" agentid=\"3014617\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"1\" locationid=\"60007441\" locator=\"false\"/>\r\n    <row agent=\"Hisazu Soshepa\" agentid=\"3014618\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007360\" locator=\"false\"/>\r\n    <row agent=\"Rildisa Nahrazi\" agentid=\"3014619\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"3\" locationid=\"60007252\" locator=\"false\"/>\r\n    <row agent=\"Hollaniu Shirarkhis\" agentid=\"3014620\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007408\" locator=\"false\"/>\r\n    <row agent=\"Erudemi Obere\" agentid=\"3014621\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"3\" locationid=\"60007288\" locator=\"false\"/>\r\n    <row agent=\"Ekham Liahin\" agentid=\"3014622\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"3\" locationid=\"60007357\" locator=\"false\"/>\r\n    <row agent=\"Roni Mesghoh\" agentid=\"3014623\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"2\" locationid=\"60007288\" locator=\"false\"/>\r\n    <row agent=\"Shirshocin Mamdiaveh\" agentid=\"3014624\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"3\" locationid=\"60007300\" locator=\"false\"/>\r\n    <row agent=\"Shali Usahed\" agentid=\"3014625\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"22\" level=\"4\" locationid=\"60007429\" locator=\"false\"/>\r\n    <row agent=\"Adid Bafebha\" agentid=\"3014626\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"1\" locationid=\"60007477\" locator=\"false\"/>\r\n    <row agent=\"Ahana Radod\" agentid=\"3014627\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"2\" locationid=\"60007483\" locator=\"false\"/>\r\n    <row agent=\"Ihmib Adenrel\" agentid=\"3014628\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"4\" locationid=\"60007387\" locator=\"false\"/>\r\n    <row agent=\"Yahrar Jeda\" agentid=\"3014629\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"1\" locationid=\"60007420\" locator=\"false\"/>\r\n    <row agent=\"Tamzeroz Hamihi\" agentid=\"3014630\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"1\" locationid=\"60007387\" locator=\"false\"/>\r\n    <row agent=\"Subateni Enalod\" agentid=\"3014631\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"2\" locationid=\"60007366\" locator=\"false\"/>\r\n    <row agent=\"Shazih Telarghet\" agentid=\"3014632\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"1\" locationid=\"60007411\" locator=\"false\"/>\r\n    <row agent=\"Yehinnu Mahbi\" agentid=\"3014633\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"2\" locationid=\"60007312\" locator=\"false\"/>\r\n    <row agent=\"Irthep Almerak\" agentid=\"3014634\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"2\" locationid=\"60007351\" locator=\"false\"/>\r\n    <row agent=\"Bihla Fesorz\" agentid=\"3014635\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"4\" locationid=\"60007471\" locator=\"false\"/>\r\n    <row agent=\"Lobrup Magnaba\" agentid=\"3014636\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"3\" locationid=\"60007468\" locator=\"false\"/>\r\n    <row agent=\"Zalemad Uanirok\" agentid=\"3014637\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"1\" locationid=\"60007429\" locator=\"false\"/>\r\n    <row agent=\"Pavari Essid\" agentid=\"3014638\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"2\" locationid=\"60007345\" locator=\"false\"/>\r\n    <row agent=\"Theymsa Kihat\" agentid=\"3014639\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"3\" locationid=\"60007267\" locator=\"false\"/>\r\n    <row agent=\"Ghooza Sehe\" agentid=\"3014640\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"4\" locationid=\"60007384\" locator=\"false\"/>\r\n    <row agent=\"Eveh Vasrayi\" agentid=\"3014641\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"2\" locationid=\"60007444\" locator=\"false\"/>\r\n    <row agent=\"Allisi Pirunara\" agentid=\"3014642\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"2\" locationid=\"60007393\" locator=\"false\"/>\r\n    <row agent=\"Atmiel Hakarvin\" agentid=\"3014643\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"1\" locationid=\"60007327\" locator=\"false\"/>\r\n    <row agent=\"Mahna Jemah\" agentid=\"3014644\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"3\" locationid=\"60007264\" locator=\"false\"/>\r\n    <row agent=\"Seema Sharemi\" agentid=\"3014645\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"1\" locationid=\"60007471\" locator=\"false\"/>\r\n    <row agent=\"Raliarogh Lanaphthiz\" agentid=\"3014646\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"1\" locationid=\"60007450\" locator=\"false\"/>\r\n    <row agent=\"Nati Uzda\" agentid=\"3014647\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"2\" locationid=\"60007366\" locator=\"false\"/>\r\n    <row agent=\"Gusru Gakeli\" agentid=\"3014648\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"2\" locationid=\"60007492\" locator=\"false\"/>\r\n    <row agent=\"Savi Sota\" agentid=\"3014649\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"3\" locationid=\"60007399\" locator=\"false\"/>\r\n    <row agent=\"Chutsya Gaswa\" agentid=\"3014650\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"2\" locationid=\"60007294\" locator=\"false\"/>\r\n    <row agent=\"Da Ahiyin\" agentid=\"3014651\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"4\" locationid=\"60007438\" locator=\"false\"/>\r\n    <row agent=\"Yalka Arsah\" agentid=\"3014652\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"3\" locationid=\"60007258\" locator=\"false\"/>\r\n    <row agent=\"Zah Embe\" agentid=\"3014653\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"4\" locationid=\"60007255\" locator=\"false\"/>\r\n    <row agent=\"Simashki Ebom\" agentid=\"3014654\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"24\" level=\"1\" locationid=\"60007489\" locator=\"false\"/>\r\n    <row agent=\"Satash Sora\" agentid=\"3014655\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"1\" locationid=\"60007330\" locator=\"false\"/>\r\n    <row agent=\"Oyeman Jesa\" agentid=\"3014656\" agenttypeid=\"2\" corporationid=\"1000074\" divisionid=\"23\" level=\"1\" locationid=\"60007420\" locator=\"false\"/>\r\n    <row agent=\"Atout Sheroo\" agentid=\"3014657\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"24\" level=\"3\" locationid=\"60007519\" locator=\"false\"/>\r\n    <row agent=\"Seymahr Sandar\" agentid=\"3014658\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"24\" level=\"1\" locationid=\"60007603\" locator=\"false\"/>\r\n    <row agent=\"Neiltalarel Atanra\" agentid=\"3014659\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"24\" level=\"2\" locationid=\"60007678\" locator=\"false\"/>\r\n    <row agent=\"Zatah Ides\" agentid=\"3014660\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"24\" level=\"1\" locationid=\"60007528\" locator=\"false\"/>\r\n    <row agent=\"Sebi Chadara\" agentid=\"3014661\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"24\" level=\"3\" locationid=\"60007558\" locator=\"false\"/>\r\n    <row agent=\"Nalvasti Jafi\" agentid=\"3014662\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"24\" level=\"4\" locationid=\"60007540\" locator=\"false\"/>\r\n    <row agent=\"Shina Amahif\" agentid=\"3014663\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"24\" level=\"4\" locationid=\"60007552\" locator=\"false\"/>\r\n    <row agent=\"Chajma Atima\" agentid=\"3014664\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"3\" locationid=\"60007609\" locator=\"false\"/>\r\n    <row agent=\"Cherq Nadem\" agentid=\"3014665\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007615\" locator=\"false\"/>\r\n    <row agent=\"Magu Akis\" agentid=\"3014666\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007684\" locator=\"false\"/>\r\n    <row agent=\"Panana Malbia\" agentid=\"3014667\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"24\" level=\"1\" locationid=\"60007549\" locator=\"false\"/>\r\n    <row agent=\"Assazoot Nifshed\" agentid=\"3014668\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007615\" locator=\"false\"/>\r\n    <row agent=\"Reraka Hemakid\" agentid=\"3014669\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"3\" locationid=\"60007546\" locator=\"false\"/>\r\n    <row agent=\"Kasara Vamelu\" agentid=\"3014670\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"4\" locationid=\"60007678\" locator=\"false\"/>\r\n    <row agent=\"Faneh Neyi\" agentid=\"3014671\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007681\" locator=\"false\"/>\r\n    <row agent=\"Emdun Badmi\" agentid=\"3014672\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007666\" locator=\"false\"/>\r\n    <row agent=\"Goud Albun\" agentid=\"3014673\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007594\" locator=\"false\"/>\r\n    <row agent=\"Moumomoos Suhbomar\" agentid=\"3014674\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007681\" locator=\"false\"/>\r\n    <row agent=\"Ainashez Nishah\" agentid=\"3014675\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"4\" locationid=\"60007549\" locator=\"false\"/>\r\n    <row agent=\"Mofa Neburab\" agentid=\"3014676\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007684\" locator=\"false\"/>\r\n    <row agent=\"Nizamil Kazzi\" agentid=\"3014677\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"4\" locationid=\"60007678\" locator=\"false\"/>\r\n    <row agent=\"Ehimurdad Helma\" agentid=\"3014678\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007684\" locator=\"false\"/>\r\n    <row agent=\"Yapan Nunra\" agentid=\"3014679\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007675\" locator=\"false\"/>\r\n    <row agent=\"Matimar Maana\" agentid=\"3014680\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007621\" locator=\"false\"/>\r\n    <row agent=\"Maziman Etarib\" agentid=\"3014681\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007669\" locator=\"false\"/>\r\n    <row agent=\"Marmaron Medeor\" agentid=\"3014682\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007552\" locator=\"false\"/>\r\n    <row agent=\"Persi Kuniandihr\" agentid=\"3014683\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007609\" locator=\"false\"/>\r\n    <row agent=\"Ninail Manartad\" agentid=\"3014684\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"3\" locationid=\"60007564\" locator=\"false\"/>\r\n    <row agent=\"Dishi Isatri\" agentid=\"3014685\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007564\" locator=\"false\"/>\r\n    <row agent=\"Haba Mintof\" agentid=\"3014686\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007597\" locator=\"false\"/>\r\n    <row agent=\"Neyi Karooh\" agentid=\"3014687\" agenttypeid=\"2\" corporationid=\"1000075\" divisionid=\"22\" level=\"4\" locationid=\"60007621\" locator=\"false\"/>\r\n    <row agent=\"Barthakar Cherq\" agentid=\"3014688\" agenttypeid=\"2\" corporationid=\"1000076\" divisionid=\"22\" level=\"2\" locationid=\"60007696\" locator=\"false\"/>\r\n    <row agent=\"Jaynerk Aurthes\" agentid=\"3014689\" agenttypeid=\"2\" corporationid=\"1000076\" divisionid=\"22\" level=\"1\" locationid=\"60007693\" locator=\"false\"/>\r\n    <row agent=\"Seymar Ghilih\" agentid=\"3014690\" agenttypeid=\"2\" corporationid=\"1000076\" divisionid=\"22\" level=\"2\" locationid=\"60007696\" locator=\"false\"/>\r\n    <row agent=\"Gamzol Altas\" agentid=\"3014691\" agenttypeid=\"2\" corporationid=\"1000076\" divisionid=\"22\" level=\"1\" locationid=\"60007696\" locator=\"false\"/>\r\n    <row agent=\"Nomena Rilera\" agentid=\"3014692\" agenttypeid=\"2\" corporationid=\"1000076\" divisionid=\"22\" level=\"3\" locationid=\"60007696\" locator=\"false\"/>\r\n    <row agent=\"Anolher Rarmesu\" agentid=\"3014693\" agenttypeid=\"2\" corporationid=\"1000076\" divisionid=\"22\" level=\"3\" locationid=\"60007693\" locator=\"false\"/>\r\n    <row agent=\"Mettid Badiadi\" agentid=\"3014694\" agenttypeid=\"2\" corporationid=\"1000076\" divisionid=\"22\" level=\"3\" locationid=\"60007699\" locator=\"false\"/>\r\n    <row agent=\"Hami Fem\" agentid=\"3014695\" agenttypeid=\"2\" corporationid=\"1000076\" divisionid=\"22\" level=\"1\" locationid=\"60007699\" locator=\"false\"/>\r\n    <row agent=\"Vorayi Roma\" agentid=\"3014696\" agenttypeid=\"2\" corporationid=\"1000076\" divisionid=\"22\" level=\"2\" locationid=\"60007699\" locator=\"false\"/>\r\n    <row agent=\"Olana Amirda\" agentid=\"3014697\" agenttypeid=\"2\" corporationid=\"1000076\" divisionid=\"22\" level=\"3\" locationid=\"60007699\" locator=\"false\"/>\r\n    <row agent=\"Psamatu Desu\" agentid=\"3014698\" agenttypeid=\"2\" corporationid=\"1000076\" divisionid=\"22\" level=\"2\" locationid=\"60007699\" locator=\"false\"/>\r\n    <row agent=\"Khouya Pava\" agentid=\"3014699\" agenttypeid=\"2\" corporationid=\"1000076\" divisionid=\"22\" level=\"3\" locationid=\"60007699\" locator=\"false\"/>\r\n    <row agent=\"Biandan Orsharah\" agentid=\"3014700\" agenttypeid=\"2\" corporationid=\"1000076\" divisionid=\"22\" level=\"2\" locationid=\"60007699\" locator=\"false\"/>\r\n    <row agent=\"Supha Murzi\" agentid=\"3014701\" agenttypeid=\"2\" corporationid=\"1000076\" divisionid=\"22\" level=\"2\" locationid=\"60007699\" locator=\"false\"/>\r\n    <row agent=\"Anthan Nasiher\" agentid=\"3014702\" agenttypeid=\"2\" corporationid=\"1000076\" divisionid=\"22\" level=\"2\" locationid=\"60007699\" locator=\"false\"/>\r\n    <row agent=\"Ghoohe Habari\" agentid=\"3014703\" agenttypeid=\"2\" corporationid=\"1000076\" divisionid=\"22\" level=\"1\" locationid=\"60007699\" locator=\"false\"/>\r\n    <row agent=\"Akotoon Nolirz\" agentid=\"3014704\" agenttypeid=\"2\" corporationid=\"1000076\" divisionid=\"22\" level=\"3\" locationid=\"60007693\" locator=\"false\"/>\r\n    <row agent=\"Ion Kaisrirt\" agentid=\"3014705\" agenttypeid=\"2\" corporationid=\"1000076\" divisionid=\"22\" level=\"3\" locationid=\"60007699\" locator=\"false\"/>\r\n    <row agent=\"Shilama Khachmolen\" agentid=\"3014706\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"4\" locationid=\"60007747\" locator=\"false\"/>\r\n    <row agent=\"Kuzime Dafuan\" agentid=\"3014707\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"4\" locationid=\"60007741\" locator=\"false\"/>\r\n    <row agent=\"Nurirtchas Enda\" agentid=\"3014708\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"4\" locationid=\"60007735\" locator=\"false\"/>\r\n    <row agent=\"Afua Magasi\" agentid=\"3014709\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"2\" locationid=\"60007747\" locator=\"false\"/>\r\n    <row agent=\"Lalaveec Talane\" agentid=\"3014710\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"1\" locationid=\"60007759\" locator=\"false\"/>\r\n    <row agent=\"Ashi Serva\" agentid=\"3014711\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"2\" locationid=\"60007738\" locator=\"false\"/>\r\n    <row agent=\"Mararq Asesamy\" agentid=\"3014712\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"2\" locationid=\"60007744\" locator=\"false\"/>\r\n    <row agent=\"Naurerej Anded\" agentid=\"3014713\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"3\" locationid=\"60007759\" locator=\"false\"/>\r\n    <row agent=\"Koun Ahraghen\" agentid=\"3014714\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"1\" locationid=\"60007765\" locator=\"false\"/>\r\n    <row agent=\"Kur Tsouban\" agentid=\"3014715\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"2\" locationid=\"60007738\" locator=\"false\"/>\r\n    <row agent=\"Sikhshi Rashi\" agentid=\"3014716\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"3\" locationid=\"60007747\" locator=\"false\"/>\r\n    <row agent=\"Murti Onor\" agentid=\"3014717\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"1\" locationid=\"60007738\" locator=\"false\"/>\r\n    <row agent=\"Adrir Arshon\" agentid=\"3014718\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"2\" locationid=\"60007759\" locator=\"false\"/>\r\n    <row agent=\"Moki Hamiahoor\" agentid=\"3014719\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"3\" locationid=\"60007738\" locator=\"false\"/>\r\n    <row agent=\"Lameh Ensel\" agentid=\"3014720\" agenttypeid=\"2\" corporationid=\"1000078\" divisionid=\"22\" level=\"1\" locationid=\"60007747\" locator=\"false\"/>\r\n    <row agent=\"Ephaneen Oner\" agentid=\"3014721\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"2\" locationid=\"60007873\" locator=\"false\"/>\r\n    <row agent=\"Obas Shure\" agentid=\"3014722\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"2\" locationid=\"60007780\" locator=\"false\"/>\r\n    <row agent=\"Chihna Kobam\" agentid=\"3014723\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"1\" locationid=\"60007831\" locator=\"false\"/>\r\n    <row agent=\"Gavarian Murata\" agentid=\"3014724\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"3\" locationid=\"60007816\" locator=\"false\"/>\r\n    <row agent=\"Soldi Serir\" agentid=\"3014725\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"2\" locationid=\"60007852\" locator=\"false\"/>\r\n    <row agent=\"Tapporem Kielish\" agentid=\"3014726\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"2\" locationid=\"60007825\" locator=\"false\"/>\r\n    <row agent=\"Hularkar Dotefi\" agentid=\"3014727\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"3\" locationid=\"60007855\" locator=\"false\"/>\r\n    <row agent=\"Aurejet Anyadal\" agentid=\"3014728\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"3\" locationid=\"60007822\" locator=\"false\"/>\r\n    <row agent=\"Erul Avadil\" agentid=\"3014729\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"3\" locationid=\"60007780\" locator=\"false\"/>\r\n    <row agent=\"Taki Aleb\" agentid=\"3014730\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"4\" locationid=\"60007858\" locator=\"false\"/>\r\n    <row agent=\"Makshma Ihdozro\" agentid=\"3014731\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"1\" locationid=\"60007792\" locator=\"false\"/>\r\n    <row agent=\"Niar Sooman\" agentid=\"3014732\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"1\" locationid=\"60007792\" locator=\"false\"/>\r\n    <row agent=\"Tzakabi Hudhqi\" agentid=\"3014733\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"3\" locationid=\"60007816\" locator=\"false\"/>\r\n    <row agent=\"Patamikah Nizierush\" agentid=\"3014734\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"2\" locationid=\"60007855\" locator=\"false\"/>\r\n    <row agent=\"Thirshusah Naraza\" agentid=\"3014735\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"1\" locationid=\"60007852\" locator=\"false\"/>\r\n    <row agent=\"Ukbashe Inat\" agentid=\"3014736\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"4\" locationid=\"60007882\" locator=\"false\"/>\r\n    <row agent=\"Pokavon Eleym\" agentid=\"3014737\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"3\" locationid=\"60007825\" locator=\"false\"/>\r\n    <row agent=\"Ehmaba Gashozoo\" agentid=\"3014738\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"3\" locationid=\"60007861\" locator=\"false\"/>\r\n    <row agent=\"Hira Jonra\" agentid=\"3014739\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"3\" locationid=\"60007819\" locator=\"false\"/>\r\n    <row agent=\"Simi Binou\" agentid=\"3014740\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"1\" locationid=\"60007792\" locator=\"false\"/>\r\n    <row agent=\"Mut Emelkimik\" agentid=\"3014741\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"1\" locationid=\"60007879\" locator=\"false\"/>\r\n    <row agent=\"Lirmanou Tekaima\" agentid=\"3014742\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"2\" locationid=\"60007777\" locator=\"false\"/>\r\n    <row agent=\"Peshira Barrabi\" agentid=\"3014743\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"2\" locationid=\"60007774\" locator=\"false\"/>\r\n    <row agent=\"Kaishod Erah\" agentid=\"3014744\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"24\" level=\"1\" locationid=\"60007807\" locator=\"false\"/>\r\n    <row agent=\"Ased Ibar\" agentid=\"3014745\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"3\" locationid=\"60007876\" locator=\"false\"/>\r\n    <row agent=\"Ronok Ramerar\" agentid=\"3014746\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"2\" locationid=\"60007843\" locator=\"false\"/>\r\n    <row agent=\"Nalbofu Aulem\" agentid=\"3014747\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"2\" locationid=\"60007840\" locator=\"false\"/>\r\n    <row agent=\"Harona Prurz\" agentid=\"3014748\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"1\" locationid=\"60007876\" locator=\"false\"/>\r\n    <row agent=\"Hihba Patri\" agentid=\"3014749\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"2\" locationid=\"60007816\" locator=\"false\"/>\r\n    <row agent=\"Vatsyar Eswarer\" agentid=\"3014750\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"2\" locationid=\"60007876\" locator=\"false\"/>\r\n    <row agent=\"Thamih Urikh\" agentid=\"3014751\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"2\" locationid=\"60007780\" locator=\"false\"/>\r\n    <row agent=\"Armoo Sarkal\" agentid=\"3014752\" agenttypeid=\"2\" corporationid=\"1000079\" divisionid=\"22\" level=\"2\" locationid=\"60007852\" locator=\"false\"/>\r\n    <row agent=\"Odakor Zahrenin\" agentid=\"3014753\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"22\" level=\"2\" locationid=\"60008005\" locator=\"false\"/>\r\n    <row agent=\"Nutzcha Fodathez\" agentid=\"3014754\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"22\" level=\"1\" locationid=\"60007942\" locator=\"false\"/>\r\n    <row agent=\"Dinataz Soodaph\" agentid=\"3014755\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"2\" locationid=\"60007966\" locator=\"false\"/>\r\n    <row agent=\"Yarahad Eleriza\" agentid=\"3014756\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007963\" locator=\"false\"/>\r\n    <row agent=\"Charata Sasaha\" agentid=\"3014757\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"2\" locationid=\"60007975\" locator=\"false\"/>\r\n    <row agent=\"Nadmu Rakoon\" agentid=\"3014758\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"2\" locationid=\"60007933\" locator=\"false\"/>\r\n    <row agent=\"Atzeri Jikuram\" agentid=\"3014759\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007888\" locator=\"false\"/>\r\n    <row agent=\"Saner Solbata\" agentid=\"3014760\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007960\" locator=\"false\"/>\r\n    <row agent=\"Hamole Aluh\" agentid=\"3014761\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"3\" locationid=\"60007969\" locator=\"false\"/>\r\n    <row agent=\"Mirena Rarmah\" agentid=\"3014762\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"2\" locationid=\"60007918\" locator=\"false\"/>\r\n    <row agent=\"Afuan Pouda\" agentid=\"3014763\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"2\" locationid=\"60007969\" locator=\"false\"/>\r\n    <row agent=\"Clakhwen Anchoh\" agentid=\"3014764\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"3\" locationid=\"60007912\" locator=\"false\"/>\r\n    <row agent=\"Vanel Mahmadat\" agentid=\"3014765\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007951\" locator=\"false\"/>\r\n    <row agent=\"Adartazir Shazhdas\" agentid=\"3014766\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"2\" locationid=\"60007939\" locator=\"false\"/>\r\n    <row agent=\"Nibi Lanil\" agentid=\"3014767\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"3\" locationid=\"60007906\" locator=\"false\"/>\r\n    <row agent=\"Ihuh Pinshind\" agentid=\"3014768\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"2\" locationid=\"60007933\" locator=\"false\"/>\r\n    <row agent=\"Irbim Mulir\" agentid=\"3014769\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007948\" locator=\"false\"/>\r\n    <row agent=\"Shabura Nelayira\" agentid=\"3014770\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"2\" locationid=\"60007894\" locator=\"false\"/>\r\n    <row agent=\"Idema Tabindra\" agentid=\"3014771\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"2\" locationid=\"60007972\" locator=\"false\"/>\r\n    <row agent=\"Erafeke Ivah\" agentid=\"3014772\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007996\" locator=\"false\"/>\r\n    <row agent=\"Adoodyam Ghassis\" agentid=\"3014773\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"2\" locationid=\"60007897\" locator=\"false\"/>\r\n    <row agent=\"Athimhen Birz\" agentid=\"3014774\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"2\" locationid=\"60007984\" locator=\"false\"/>\r\n    <row agent=\"Salbar Sohuda\" agentid=\"3014775\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"4\" locationid=\"60007951\" locator=\"false\"/>\r\n    <row agent=\"Athmi Chedho\" agentid=\"3014776\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"3\" locationid=\"60007912\" locator=\"false\"/>\r\n    <row agent=\"Mengol Zane\" agentid=\"3014777\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007948\" locator=\"false\"/>\r\n    <row agent=\"Hepeta Tarvia\" agentid=\"3014778\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"4\" locationid=\"60007963\" locator=\"false\"/>\r\n    <row agent=\"Kuram Laina\" agentid=\"3014779\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"2\" locationid=\"60007939\" locator=\"false\"/>\r\n    <row agent=\"Miak Jiveeshath\" agentid=\"3014780\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007948\" locator=\"false\"/>\r\n    <row agent=\"Anreh Gaknem\" agentid=\"3014781\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"3\" locationid=\"60007972\" locator=\"false\"/>\r\n    <row agent=\"Vehia Rindhyat\" agentid=\"3014782\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"3\" locationid=\"60007939\" locator=\"false\"/>\r\n    <row agent=\"Omzi Basob\" agentid=\"3014783\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007945\" locator=\"false\"/>\r\n    <row agent=\"Noranim Reyi\" agentid=\"3014784\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007972\" locator=\"false\"/>\r\n    <row agent=\"Mandra Vezaba\" agentid=\"3014785\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"2\" locationid=\"60008008\" locator=\"false\"/>\r\n    <row agent=\"Lieh Hanih\" agentid=\"3014786\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"3\" locationid=\"60008014\" locator=\"false\"/>\r\n    <row agent=\"Salarjon Peskaneb\" agentid=\"3014787\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"1\" locationid=\"60008014\" locator=\"false\"/>\r\n    <row agent=\"Karmih Abeh\" agentid=\"3014788\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"2\" locationid=\"60008089\" locator=\"false\"/>\r\n    <row agent=\"Kori Narto\" agentid=\"3014789\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"1\" locationid=\"60008056\" locator=\"false\"/>\r\n    <row agent=\"Yahyerer Hamen\" agentid=\"3014790\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"2\" locationid=\"60008110\" locator=\"false\"/>\r\n    <row agent=\"Aria Ahikuli\" agentid=\"3014791\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"3\" locationid=\"60008038\" locator=\"false\"/>\r\n    <row agent=\"Gabu Hunzofim\" agentid=\"3014792\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"3\" locationid=\"60008032\" locator=\"false\"/>\r\n    <row agent=\"Massun Galame\" agentid=\"3014793\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"2\" locationid=\"60008038\" locator=\"false\"/>\r\n    <row agent=\"Kataliam Mamarat\" agentid=\"3014794\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"24\" level=\"3\" locationid=\"60008101\" locator=\"false\"/>\r\n    <row agent=\"Ahzelan Nelket\" agentid=\"3014795\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"1\" locationid=\"60008110\" locator=\"false\"/>\r\n    <row agent=\"Fidri Yoomah\" agentid=\"3014796\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"3\" locationid=\"60008059\" locator=\"false\"/>\r\n    <row agent=\"Adiar Kore\" agentid=\"3014797\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"3\" locationid=\"60008062\" locator=\"false\"/>\r\n    <row agent=\"Chamya Isatri\" agentid=\"3014798\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"1\" locationid=\"60008119\" locator=\"false\"/>\r\n    <row agent=\"Hibami Axami\" agentid=\"3014799\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"3\" locationid=\"60008104\" locator=\"false\"/>\r\n    <row agent=\"Alanac Anjedin\" agentid=\"3014800\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"1\" locationid=\"60008077\" locator=\"false\"/>\r\n    <row agent=\"Ziare Damaya\" agentid=\"3014801\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"1\" locationid=\"60008122\" locator=\"false\"/>\r\n    <row agent=\"Nerara Etiar\" agentid=\"3014802\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"4\" locationid=\"60008122\" locator=\"false\"/>\r\n    <row agent=\"Avabi Hakarvin\" agentid=\"3014803\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"1\" locationid=\"60008062\" locator=\"false\"/>\r\n    <row agent=\"Mere Letim\" agentid=\"3014804\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"2\" locationid=\"60008101\" locator=\"false\"/>\r\n    <row agent=\"Nedetim Hanushod\" agentid=\"3014805\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"2\" locationid=\"60008041\" locator=\"false\"/>\r\n    <row agent=\"Hetevom Eredarid\" agentid=\"3014806\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"1\" locationid=\"60008026\" locator=\"false\"/>\r\n    <row agent=\"Kalon Sihrnum\" agentid=\"3014807\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"4\" locationid=\"60008050\" locator=\"false\"/>\r\n    <row agent=\"Atsa Inoohion\" agentid=\"3014808\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"2\" locationid=\"60008044\" locator=\"false\"/>\r\n    <row agent=\"Hasira Nevig\" agentid=\"3014809\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"1\" locationid=\"60008059\" locator=\"false\"/>\r\n    <row agent=\"Malaka Enash\" agentid=\"3014810\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"3\" locationid=\"60008071\" locator=\"false\"/>\r\n    <row agent=\"Assel Sionhura\" agentid=\"3014811\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"2\" locationid=\"60008125\" locator=\"false\"/>\r\n    <row agent=\"Nana Ehbilum\" agentid=\"3014812\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"1\" locationid=\"60008077\" locator=\"false\"/>\r\n    <row agent=\"Ahna Mabat\" agentid=\"3014813\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"2\" locationid=\"60008056\" locator=\"false\"/>\r\n    <row agent=\"Jechas Tasara\" agentid=\"3014814\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"4\" locationid=\"60008011\" locator=\"false\"/>\r\n    <row agent=\"Hifa Tasata\" agentid=\"3014815\" agenttypeid=\"2\" corporationid=\"1000081\" divisionid=\"23\" level=\"1\" locationid=\"60008044\" locator=\"false\"/>\r\n    <row agent=\"Shetata Gideka\" agentid=\"3014816\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"3\" locationid=\"60008161\" locator=\"false\"/>\r\n    <row agent=\"Bedoom Rafaner\" agentid=\"3014817\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"4\" locationid=\"60008143\" locator=\"false\"/>\r\n    <row agent=\"Mahtennita Hamiahoor\" agentid=\"3014818\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"1\" locationid=\"60008209\" locator=\"false\"/>\r\n    <row agent=\"Nakounir Sashni\" agentid=\"3014819\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"2\" locationid=\"60008158\" locator=\"false\"/>\r\n    <row agent=\"Aneng Tzashrah\" agentid=\"3014820\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"3\" locationid=\"60008164\" locator=\"false\"/>\r\n    <row agent=\"Massad Eroud\" agentid=\"3014821\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"2\" locationid=\"60008182\" locator=\"false\"/>\r\n    <row agent=\"Baldeda Marum\" agentid=\"3014822\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"2\" locationid=\"60008188\" locator=\"false\"/>\r\n    <row agent=\"Ninoubi Bairal\" agentid=\"3014823\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"2\" locationid=\"60008152\" locator=\"false\"/>\r\n    <row agent=\"Mammazin Paral\" agentid=\"3014824\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"2\" locationid=\"60008194\" locator=\"false\"/>\r\n    <row agent=\"Oham Zhebba\" agentid=\"3014825\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"4\" locationid=\"60008218\" locator=\"false\"/>\r\n    <row agent=\"Nurveh Ahlan\" agentid=\"3014826\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"2\" locationid=\"60008206\" locator=\"false\"/>\r\n    <row agent=\"Tankohrima Toon\" agentid=\"3014827\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"3\" locationid=\"60008182\" locator=\"false\"/>\r\n    <row agent=\"Paghinar Ghanyu\" agentid=\"3014828\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"3\" locationid=\"60008209\" locator=\"false\"/>\r\n    <row agent=\"Zungiah Selimi\" agentid=\"3014829\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"4\" locationid=\"60008134\" locator=\"false\"/>\r\n    <row agent=\"Ziana Nemanib\" agentid=\"3014830\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"1\" locationid=\"60008200\" locator=\"false\"/>\r\n    <row agent=\"Amour Souyaleti\" agentid=\"3014831\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"2\" locationid=\"60008176\" locator=\"false\"/>\r\n    <row agent=\"Aviama Masalihi\" agentid=\"3014832\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"1\" locationid=\"60008176\" locator=\"false\"/>\r\n    <row agent=\"Mohas Pardin\" agentid=\"3014833\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"1\" locationid=\"60008149\" locator=\"false\"/>\r\n    <row agent=\"Vizi Cami\" agentid=\"3014834\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"2\" locationid=\"60008218\" locator=\"false\"/>\r\n    <row agent=\"Amemla Darkhaf\" agentid=\"3014835\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"1\" locationid=\"60008182\" locator=\"false\"/>\r\n    <row agent=\"Senisi Fenimabali\" agentid=\"3014836\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"2\" locationid=\"60008242\" locator=\"false\"/>\r\n    <row agent=\"Dasa Pure\" agentid=\"3014837\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"3\" locationid=\"60008221\" locator=\"false\"/>\r\n    <row agent=\"Tava Jopri\" agentid=\"3014838\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"1\" locationid=\"60008167\" locator=\"false\"/>\r\n    <row agent=\"Bilni Zat\" agentid=\"3014839\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"1\" locationid=\"60008230\" locator=\"false\"/>\r\n    <row agent=\"Baraithang Shoosoh\" agentid=\"3014840\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"1\" locationid=\"60008194\" locator=\"false\"/>\r\n    <row agent=\"Nun Bafa\" agentid=\"3014841\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"1\" locationid=\"60008158\" locator=\"false\"/>\r\n    <row agent=\"Avara Rish\" agentid=\"3014842\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"3\" locationid=\"60008194\" locator=\"false\"/>\r\n    <row agent=\"Javira Bimada\" agentid=\"3014843\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"2\" locationid=\"60008194\" locator=\"false\"/>\r\n    <row agent=\"Dioshah Yanucor\" agentid=\"3014844\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"22\" level=\"2\" locationid=\"60008194\" locator=\"false\"/>\r\n    <row agent=\"Bivira Peyman\" agentid=\"3014845\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"1\" locationid=\"60008233\" locator=\"false\"/>\r\n    <row agent=\"Gaswa Idaf\" agentid=\"3014846\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"22\" level=\"2\" locationid=\"60008218\" locator=\"false\"/>\r\n    <row agent=\"Yalka Ragni\" agentid=\"3014847\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008365\" locator=\"false\"/>\r\n    <row agent=\"Fukurin Itas\" agentid=\"3014848\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008299\" locator=\"false\"/>\r\n    <row agent=\"Manaras Arvartoul\" agentid=\"3014849\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"4\" locationid=\"60008311\" locator=\"false\"/>\r\n    <row agent=\"Mareerieh Nofiz\" agentid=\"3014850\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008341\" locator=\"false\"/>\r\n    <row agent=\"Ghizirin Neriadams\" agentid=\"3014851\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"2\" locationid=\"60008284\" locator=\"false\"/>\r\n    <row agent=\"Nehren Thapahrban\" agentid=\"3014852\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008338\" locator=\"false\"/>\r\n    <row agent=\"Ashzed Anrashael\" agentid=\"3014853\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008284\" locator=\"false\"/>\r\n    <row agent=\"Kavadiri Evan\" agentid=\"3014854\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008347\" locator=\"false\"/>\r\n    <row agent=\"Lasikhra Salisa\" agentid=\"3014855\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"2\" locationid=\"60008347\" locator=\"false\"/>\r\n    <row agent=\"Kevsobe Nissath\" agentid=\"3014856\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008320\" locator=\"false\"/>\r\n    <row agent=\"Mana Nafara\" agentid=\"3014857\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008254\" locator=\"false\"/>\r\n    <row agent=\"Yoot Pona\" agentid=\"3014858\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"2\" locationid=\"60008365\" locator=\"false\"/>\r\n    <row agent=\"Amumsar Avach\" agentid=\"3014859\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008266\" locator=\"false\"/>\r\n    <row agent=\"Noubipin Molty\" agentid=\"3014860\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008314\" locator=\"false\"/>\r\n    <row agent=\"Idehkike Zembier\" agentid=\"3014861\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008308\" locator=\"false\"/>\r\n    <row agent=\"Shinsema Madomi\" agentid=\"3014862\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"2\" locationid=\"60008359\" locator=\"false\"/>\r\n    <row agent=\"Akhwed Krung\" agentid=\"3014863\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008260\" locator=\"false\"/>\r\n    <row agent=\"Shivena Vemefil\" agentid=\"3014864\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008335\" locator=\"false\"/>\r\n    <row agent=\"Mali Ubiaha\" agentid=\"3014865\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008284\" locator=\"false\"/>\r\n    <row agent=\"Urjamal Arety\" agentid=\"3014866\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008359\" locator=\"false\"/>\r\n    <row agent=\"Rasdri Azgob\" agentid=\"3014867\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008335\" locator=\"false\"/>\r\n    <row agent=\"Buroja Kezti\" agentid=\"3014868\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008290\" locator=\"false\"/>\r\n    <row agent=\"Luchar Mahtennita\" agentid=\"3014869\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008338\" locator=\"false\"/>\r\n    <row agent=\"Zambana Kherari\" agentid=\"3014870\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008311\" locator=\"false\"/>\r\n    <row agent=\"Odeta Khna\" agentid=\"3014871\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"2\" locationid=\"60008263\" locator=\"false\"/>\r\n    <row agent=\"Heyosi Arbur\" agentid=\"3014872\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"2\" locationid=\"60008260\" locator=\"false\"/>\r\n    <row agent=\"Brara Nod\" agentid=\"3014873\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008320\" locator=\"false\"/>\r\n    <row agent=\"Akniz Satery\" agentid=\"3014874\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"2\" locationid=\"60008290\" locator=\"false\"/>\r\n    <row agent=\"Araz Ehrob\" agentid=\"3014875\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008311\" locator=\"false\"/>\r\n    <row agent=\"Tesan Ummares\" agentid=\"3014876\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008269\" locator=\"false\"/>\r\n    <row agent=\"Pakatun Toozarot\" agentid=\"3014877\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"3\" locationid=\"60008395\" locator=\"false\"/>\r\n    <row agent=\"Ginori Nun\" agentid=\"3014878\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"4\" locationid=\"60008416\" locator=\"false\"/>\r\n    <row agent=\"Aim Nibi\" agentid=\"3014879\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008461\" locator=\"false\"/>\r\n    <row agent=\"Miza Assorgouz\" agentid=\"3014880\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"3\" locationid=\"60008452\" locator=\"false\"/>\r\n    <row agent=\"Shetis Akabantan\" agentid=\"3014881\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"3\" locationid=\"60008404\" locator=\"false\"/>\r\n    <row agent=\"Omzi Rahaleh\" agentid=\"3014882\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008437\" locator=\"false\"/>\r\n    <row agent=\"Bashkive Arenit\" agentid=\"3014883\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008425\" locator=\"false\"/>\r\n    <row agent=\"Gutestna Amalir\" agentid=\"3014884\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008398\" locator=\"false\"/>\r\n    <row agent=\"Fuli Ihon\" agentid=\"3014885\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008482\" locator=\"false\"/>\r\n    <row agent=\"Rechuh Mabat\" agentid=\"3014886\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008434\" locator=\"false\"/>\r\n    <row agent=\"Ahmar Teni\" agentid=\"3014887\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008437\" locator=\"false\"/>\r\n    <row agent=\"Zarisri Chooh\" agentid=\"3014888\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"4\" locationid=\"60008419\" locator=\"false\"/>\r\n    <row agent=\"Mintaki Knankes\" agentid=\"3014889\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008380\" locator=\"false\"/>\r\n    <row agent=\"Irer Bairshir\" agentid=\"3014890\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"3\" locationid=\"60008401\" locator=\"false\"/>\r\n    <row agent=\"Nirela Tzara\" agentid=\"3014891\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"4\" locationid=\"60008422\" locator=\"false\"/>\r\n    <row agent=\"Binoda Zunarus\" agentid=\"3014892\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008416\" locator=\"false\"/>\r\n    <row agent=\"Poumad Unsiel\" agentid=\"3014893\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008428\" locator=\"false\"/>\r\n    <row agent=\"Pavari Naeed\" agentid=\"3014894\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008371\" locator=\"false\"/>\r\n    <row agent=\"Sireyi Pasru\" agentid=\"3014895\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008389\" locator=\"false\"/>\r\n    <row agent=\"Ashela Emoyu\" agentid=\"3014896\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008434\" locator=\"false\"/>\r\n    <row agent=\"Heshuma Ussa\" agentid=\"3014897\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008374\" locator=\"false\"/>\r\n    <row agent=\"Izesami Arbur\" agentid=\"3014898\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008479\" locator=\"false\"/>\r\n    <row agent=\"Cora Nidhan\" agentid=\"3014899\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008395\" locator=\"false\"/>\r\n    <row agent=\"Fasri Horshandas\" agentid=\"3014900\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008431\" locator=\"false\"/>\r\n    <row agent=\"Qeritan Dantan\" agentid=\"3014901\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008428\" locator=\"false\"/>\r\n    <row agent=\"Kuli Ebon\" agentid=\"3014902\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008431\" locator=\"false\"/>\r\n    <row agent=\"Azih Joelrie\" agentid=\"3014903\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008431\" locator=\"false\"/>\r\n    <row agent=\"Komosa Yithmi\" agentid=\"3014904\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008479\" locator=\"false\"/>\r\n    <row agent=\"Hekhem Moranour\" agentid=\"3014905\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008431\" locator=\"false\"/>\r\n    <row agent=\"Seroroon Shier\" agentid=\"3014906\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"3\" locationid=\"60008386\" locator=\"false\"/>\r\n    <row agent=\"Ekah Selobnub\" agentid=\"3014907\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"2\" locationid=\"60008374\" locator=\"false\"/>\r\n    <row agent=\"Sechah Jissi\" agentid=\"3014908\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"4\" locationid=\"60008482\" locator=\"false\"/>\r\n    <row agent=\"Fagu Sarordana\" agentid=\"3014909\" agenttypeid=\"2\" corporationid=\"1000085\" divisionid=\"22\" level=\"2\" locationid=\"60008491\" locator=\"false\"/>\r\n    <row agent=\"Savalusa Siahbad\" agentid=\"3014910\" agenttypeid=\"2\" corporationid=\"1000085\" divisionid=\"22\" level=\"3\" locationid=\"60008491\" locator=\"false\"/>\r\n    <row agent=\"Camoul Hinda\" agentid=\"3014911\" agenttypeid=\"2\" corporationid=\"1000085\" divisionid=\"22\" level=\"4\" locationid=\"60008491\" locator=\"false\"/>\r\n    <row agent=\"Megne Arams\" agentid=\"3014912\" agenttypeid=\"2\" corporationid=\"1000085\" divisionid=\"22\" level=\"2\" locationid=\"60008491\" locator=\"false\"/>\r\n    <row agent=\"Nolma Kirepuh\" agentid=\"3014913\" agenttypeid=\"2\" corporationid=\"1000085\" divisionid=\"22\" level=\"1\" locationid=\"60008491\" locator=\"false\"/>\r\n    <row agent=\"Ehne Emelkimik\" agentid=\"3014914\" agenttypeid=\"2\" corporationid=\"1000085\" divisionid=\"22\" level=\"2\" locationid=\"60008491\" locator=\"false\"/>\r\n    <row agent=\"Denkiheh Caranepa\" agentid=\"3014915\" agenttypeid=\"2\" corporationid=\"1000085\" divisionid=\"22\" level=\"1\" locationid=\"60008491\" locator=\"false\"/>\r\n    <row agent=\"Zamadi Vilmali\" agentid=\"3014916\" agenttypeid=\"2\" corporationid=\"1000085\" divisionid=\"24\" level=\"1\" locationid=\"60008491\" locator=\"false\"/>\r\n    <row agent=\"Dandan Nuhdi\" agentid=\"3014917\" agenttypeid=\"2\" corporationid=\"1000085\" divisionid=\"24\" level=\"2\" locationid=\"60008488\" locator=\"false\"/>\r\n    <row agent=\"Chebi Sadesooh\" agentid=\"3014918\" agenttypeid=\"2\" corporationid=\"1000085\" divisionid=\"22\" level=\"3\" locationid=\"60008488\" locator=\"false\"/>\r\n    <row agent=\"Choshen Almitha\" agentid=\"3014919\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"2\" locationid=\"60008599\" locator=\"false\"/>\r\n    <row agent=\"Sadhqish Sanerih\" agentid=\"3014920\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"3\" locationid=\"60008527\" locator=\"false\"/>\r\n    <row agent=\"Manera Faba\" agentid=\"3014921\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"2\" locationid=\"60008587\" locator=\"false\"/>\r\n    <row agent=\"Tayourmirt Yothatek\" agentid=\"3014922\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"1\" locationid=\"60008593\" locator=\"false\"/>\r\n    <row agent=\"Parara Erzoh\" agentid=\"3014923\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"4\" locationid=\"60008509\" locator=\"false\"/>\r\n    <row agent=\"Zaprafi Chadla\" agentid=\"3014924\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"1\" locationid=\"60008584\" locator=\"false\"/>\r\n    <row agent=\"Marado Anim\" agentid=\"3014925\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"2\" locationid=\"60008539\" locator=\"false\"/>\r\n    <row agent=\"Efadetin Zasikh\" agentid=\"3014926\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"1\" locationid=\"60008530\" locator=\"false\"/>\r\n    <row agent=\"Borir Sehoob\" agentid=\"3014927\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"3\" locationid=\"60008590\" locator=\"false\"/>\r\n    <row agent=\"Yasez Shudra\" agentid=\"3014928\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"2\" locationid=\"60008509\" locator=\"false\"/>\r\n    <row agent=\"Vamdigeen Ahain\" agentid=\"3014929\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"3\" locationid=\"60008521\" locator=\"false\"/>\r\n    <row agent=\"Amery Muthan\" agentid=\"3014930\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"4\" locationid=\"60008506\" locator=\"false\"/>\r\n    <row agent=\"Hani Teprary\" agentid=\"3014931\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"1\" locationid=\"60008596\" locator=\"false\"/>\r\n    <row agent=\"Ohah Sechani\" agentid=\"3014932\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"1\" locationid=\"60008551\" locator=\"false\"/>\r\n    <row agent=\"Fikuss Hareera\" agentid=\"3014933\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"22\" level=\"1\" locationid=\"60008563\" locator=\"false\"/>\r\n    <row agent=\"Jarizza Hitaza\" agentid=\"3014934\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"4\" locationid=\"60008548\" locator=\"false\"/>\r\n    <row agent=\"Sharvavin Jahrzachan\" agentid=\"3014935\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"3\" locationid=\"60008494\" locator=\"false\"/>\r\n    <row agent=\"Gatasil Kamsi\" agentid=\"3014936\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"2\" locationid=\"60008581\" locator=\"false\"/>\r\n    <row agent=\"Ensier Patzcha\" agentid=\"3014937\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"1\" locationid=\"60008581\" locator=\"false\"/>\r\n    <row agent=\"Tis Moom\" agentid=\"3014938\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"2\" locationid=\"60008530\" locator=\"false\"/>\r\n    <row agent=\"Bie Sholva\" agentid=\"3014939\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"1\" locationid=\"60008530\" locator=\"false\"/>\r\n    <row agent=\"Fada Shooh\" agentid=\"3014940\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"2\" locationid=\"60008506\" locator=\"false\"/>\r\n    <row agent=\"Parouz Tzira\" agentid=\"3014941\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"1\" locationid=\"60008548\" locator=\"false\"/>\r\n    <row agent=\"Marmed Odadi\" agentid=\"3014942\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"2\" locationid=\"60008500\" locator=\"false\"/>\r\n    <row agent=\"Hanuka Khisegi\" agentid=\"3014943\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"3\" locationid=\"60008527\" locator=\"false\"/>\r\n    <row agent=\"Salimeg Inasa\" agentid=\"3014944\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"2\" locationid=\"60008575\" locator=\"false\"/>\r\n    <row agent=\"Thayafu Nenirid\" agentid=\"3014945\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"2\" locationid=\"60008569\" locator=\"false\"/>\r\n    <row agent=\"Asonaf Goulah\" agentid=\"3014946\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"3\" locationid=\"60008551\" locator=\"false\"/>\r\n    <row agent=\"Kianavina Yinayma\" agentid=\"3014947\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"4\" locationid=\"60008557\" locator=\"false\"/>\r\n    <row agent=\"Harviz Dazih\" agentid=\"3014948\" agenttypeid=\"2\" corporationid=\"1000086\" divisionid=\"24\" level=\"1\" locationid=\"60008497\" locator=\"false\"/>\r\n    <row agent=\"Sindalat Yolitsa\" agentid=\"3014949\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"22\" level=\"2\" locationid=\"60008638\" locator=\"false\"/>\r\n    <row agent=\"Isastime Nuboliyen\" agentid=\"3014950\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"22\" level=\"4\" locationid=\"60008620\" locator=\"false\"/>\r\n    <row agent=\"Ghisha Namiamoon\" agentid=\"3014951\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"22\" level=\"3\" locationid=\"60008644\" locator=\"false\"/>\r\n    <row agent=\"Deorta Ahmin\" agentid=\"3014952\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"22\" level=\"1\" locationid=\"60008632\" locator=\"false\"/>\r\n    <row agent=\"Ebour Herarouh\" agentid=\"3014953\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"22\" level=\"3\" locationid=\"60008617\" locator=\"false\"/>\r\n    <row agent=\"Malite Shassal\" agentid=\"3014954\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"22\" level=\"1\" locationid=\"60008614\" locator=\"false\"/>\r\n    <row agent=\"Barthij Idremid\" agentid=\"3014955\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"24\" level=\"3\" locationid=\"60008647\" locator=\"false\"/>\r\n    <row agent=\"Bodaran Sadad\" agentid=\"3014956\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"24\" level=\"2\" locationid=\"60008635\" locator=\"false\"/>\r\n    <row agent=\"Kahmi Zalyo\" agentid=\"3014957\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"24\" level=\"1\" locationid=\"60008641\" locator=\"false\"/>\r\n    <row agent=\"Shegibi Zhedara\" agentid=\"3014958\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"24\" level=\"2\" locationid=\"60008623\" locator=\"false\"/>\r\n    <row agent=\"Sakabur Nabihmah\" agentid=\"3014959\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"24\" level=\"1\" locationid=\"60008617\" locator=\"false\"/>\r\n    <row agent=\"Rabhaneh Avabab\" agentid=\"3014960\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"24\" level=\"1\" locationid=\"60008629\" locator=\"false\"/>\r\n    <row agent=\"Moranour Kom\" agentid=\"3014961\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"24\" level=\"4\" locationid=\"60008632\" locator=\"false\"/>\r\n    <row agent=\"Ashken Enaeel\" agentid=\"3014962\" agenttypeid=\"2\" corporationid=\"1000087\" divisionid=\"24\" level=\"2\" locationid=\"60008614\" locator=\"false\"/>\r\n    <row agent=\"Donenem Sahmu\" agentid=\"3014963\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"24\" level=\"2\" locationid=\"60008683\" locator=\"false\"/>\r\n    <row agent=\"Zamas Anagh\" agentid=\"3014964\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"24\" level=\"2\" locationid=\"60008683\" locator=\"false\"/>\r\n    <row agent=\"Amteh Fela\" agentid=\"3014965\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"24\" level=\"3\" locationid=\"60008683\" locator=\"false\"/>\r\n    <row agent=\"Bano Rarpa\" agentid=\"3014966\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"24\" level=\"2\" locationid=\"60008665\" locator=\"false\"/>\r\n    <row agent=\"Asesb Fesit\" agentid=\"3014967\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"24\" level=\"2\" locationid=\"60008677\" locator=\"false\"/>\r\n    <row agent=\"Sene Lizta\" agentid=\"3014968\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"24\" level=\"1\" locationid=\"60008653\" locator=\"false\"/>\r\n    <row agent=\"Zeremasa Nisouman\" agentid=\"3014969\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"24\" level=\"1\" locationid=\"60008671\" locator=\"false\"/>\r\n    <row agent=\"Darnena Anjedin\" agentid=\"3014970\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"24\" level=\"1\" locationid=\"60008650\" locator=\"false\"/>\r\n    <row agent=\"Roona Salarjon\" agentid=\"3014971\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"24\" level=\"3\" locationid=\"60008662\" locator=\"false\"/>\r\n    <row agent=\"Shoufa Hasamel\" agentid=\"3014972\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"24\" level=\"1\" locationid=\"60008668\" locator=\"false\"/>\r\n    <row agent=\"Shatarvim Arondimi\" agentid=\"3014973\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"24\" level=\"3\" locationid=\"60008659\" locator=\"false\"/>\r\n    <row agent=\"Kavoki Qerast\" agentid=\"3014974\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"24\" level=\"2\" locationid=\"60008677\" locator=\"false\"/>\r\n    <row agent=\"Horvi Zisouz\" agentid=\"3014975\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"24\" level=\"1\" locationid=\"60008665\" locator=\"false\"/>\r\n    <row agent=\"Pekena Mizzerba\" agentid=\"3014976\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"24\" level=\"1\" locationid=\"60008677\" locator=\"false\"/>\r\n    <row agent=\"Kerdia Shalah\" agentid=\"3014977\" agenttypeid=\"2\" corporationid=\"1000088\" divisionid=\"24\" level=\"3\" locationid=\"60008677\" locator=\"false\"/>\r\n    <row agent=\"Yaphal Ahsod\" agentid=\"3014978\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"24\" level=\"1\" locationid=\"60008686\" locator=\"false\"/>\r\n    <row agent=\"Nektek Youmsou\" agentid=\"3014979\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"22\" level=\"2\" locationid=\"60008710\" locator=\"false\"/>\r\n    <row agent=\"Ashmod Chieh\" agentid=\"3014980\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"22\" level=\"4\" locationid=\"60008701\" locator=\"false\"/>\r\n    <row agent=\"Shahyan Lalissin\" agentid=\"3014981\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"22\" level=\"3\" locationid=\"60008713\" locator=\"false\"/>\r\n    <row agent=\"Foba Tash\" agentid=\"3014982\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"22\" level=\"3\" locationid=\"60008716\" locator=\"false\"/>\r\n    <row agent=\"Nofni Padichier\" agentid=\"3014983\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"22\" level=\"2\" locationid=\"60008686\" locator=\"false\"/>\r\n    <row agent=\"Vasrayi Lideved\" agentid=\"3014984\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"24\" level=\"2\" locationid=\"60008707\" locator=\"false\"/>\r\n    <row agent=\"Mamiakie Nesta\" agentid=\"3014985\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"24\" level=\"4\" locationid=\"60008707\" locator=\"false\"/>\r\n    <row agent=\"Pou Lala\" agentid=\"3014986\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"24\" level=\"2\" locationid=\"60008707\" locator=\"false\"/>\r\n    <row agent=\"Kokoup Kamita\" agentid=\"3014987\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"24\" level=\"4\" locationid=\"60008707\" locator=\"false\"/>\r\n    <row agent=\"Noya Nahefah\" agentid=\"3014988\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"24\" level=\"1\" locationid=\"60008707\" locator=\"false\"/>\r\n    <row agent=\"Ebas Judra\" agentid=\"3014989\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"24\" level=\"2\" locationid=\"60008707\" locator=\"false\"/>\r\n    <row agent=\"Runsisa Tehdem\" agentid=\"3014990\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"24\" level=\"2\" locationid=\"60008701\" locator=\"false\"/>\r\n    <row agent=\"Enal Hanyah\" agentid=\"3014991\" agenttypeid=\"2\" corporationid=\"1000089\" divisionid=\"24\" level=\"2\" locationid=\"60008710\" locator=\"false\"/>\r\n    <row agent=\"Amama Kheheni\" agentid=\"3014992\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"22\" level=\"2\" locationid=\"60008746\" locator=\"false\"/>\r\n    <row agent=\"Tivika Varva\" agentid=\"3014993\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"22\" level=\"2\" locationid=\"60008737\" locator=\"false\"/>\r\n    <row agent=\"Bedaliba Izon\" agentid=\"3014994\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"22\" level=\"3\" locationid=\"60008749\" locator=\"false\"/>\r\n    <row agent=\"Srirerar Ahrur\" agentid=\"3014995\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"22\" level=\"1\" locationid=\"60008746\" locator=\"false\"/>\r\n    <row agent=\"Anud Houzirer\" agentid=\"3014996\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"22\" level=\"2\" locationid=\"60008746\" locator=\"false\"/>\r\n    <row agent=\"Mobetarano Epin\" agentid=\"3014997\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"22\" level=\"2\" locationid=\"60008749\" locator=\"false\"/>\r\n    <row agent=\"Memesad Omshol\" agentid=\"3014998\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"24\" level=\"1\" locationid=\"60008734\" locator=\"false\"/>\r\n    <row agent=\"Adreyi Ezion\" agentid=\"3014999\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"24\" level=\"3\" locationid=\"60008734\" locator=\"false\"/>\r\n    <row agent=\"Soodaph Aulem\" agentid=\"3015000\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"24\" level=\"1\" locationid=\"60008725\" locator=\"false\"/>\r\n    <row agent=\"Jaylani Chenaba\" agentid=\"3015001\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"24\" level=\"3\" locationid=\"60008752\" locator=\"false\"/>\r\n    <row agent=\"Sannisu Ifoha\" agentid=\"3015002\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"24\" level=\"2\" locationid=\"60008755\" locator=\"false\"/>\r\n    <row agent=\"Marun Adrah\" agentid=\"3015003\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"24\" level=\"1\" locationid=\"60008755\" locator=\"false\"/>\r\n    <row agent=\"Madia Yapera\" agentid=\"3015004\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"24\" level=\"3\" locationid=\"60008752\" locator=\"false\"/>\r\n    <row agent=\"Zhoun Zasissobona\" agentid=\"3015005\" agenttypeid=\"2\" corporationid=\"1000090\" divisionid=\"24\" level=\"3\" locationid=\"60008755\" locator=\"false\"/>\r\n    <row agent=\"Mabera Mohra\" agentid=\"3015006\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"22\" level=\"1\" locationid=\"60008773\" locator=\"false\"/>\r\n    <row agent=\"Asharin Selashi\" agentid=\"3015007\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"22\" level=\"2\" locationid=\"60008782\" locator=\"false\"/>\r\n    <row agent=\"Sharenisali Sirjariad\" agentid=\"3015008\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"24\" level=\"1\" locationid=\"60008764\" locator=\"false\"/>\r\n    <row agent=\"Dina Avoser\" agentid=\"3015009\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"22\" level=\"3\" locationid=\"60008761\" locator=\"false\"/>\r\n    <row agent=\"Taridor Khiknizi\" agentid=\"3015010\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"22\" level=\"3\" locationid=\"60008764\" locator=\"false\"/>\r\n    <row agent=\"Fash Umsaboun\" agentid=\"3015011\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"22\" level=\"1\" locationid=\"60008785\" locator=\"false\"/>\r\n    <row agent=\"Chalashtut Banjana\" agentid=\"3015012\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"22\" level=\"1\" locationid=\"60008779\" locator=\"false\"/>\r\n    <row agent=\"Ashek Ohtouh\" agentid=\"3015013\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"22\" level=\"2\" locationid=\"60008779\" locator=\"false\"/>\r\n    <row agent=\"Hadal Ivooh\" agentid=\"3015014\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"22\" level=\"2\" locationid=\"60008770\" locator=\"false\"/>\r\n    <row agent=\"Labrefu Jilu\" agentid=\"3015015\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"24\" level=\"3\" locationid=\"60008785\" locator=\"false\"/>\r\n    <row agent=\"Agad Fayela\" agentid=\"3015016\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"24\" level=\"1\" locationid=\"60008773\" locator=\"false\"/>\r\n    <row agent=\"Ekatan Yamarada\" agentid=\"3015017\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"24\" level=\"2\" locationid=\"60008770\" locator=\"false\"/>\r\n    <row agent=\"Joppa Atzi\" agentid=\"3015018\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"24\" level=\"2\" locationid=\"60008764\" locator=\"false\"/>\r\n    <row agent=\"Zirazil Nabobeh\" agentid=\"3015019\" agenttypeid=\"2\" corporationid=\"1000091\" divisionid=\"24\" level=\"1\" locationid=\"60008791\" locator=\"false\"/>\r\n    <row agent=\"Fajachouh Esrame\" agentid=\"3015020\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008851\" locator=\"false\"/>\r\n    <row agent=\"Ushtef Akezen\" agentid=\"3015021\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008857\" locator=\"false\"/>\r\n    <row agent=\"Tofaheh Askhat\" agentid=\"3015022\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"2\" locationid=\"60008812\" locator=\"false\"/>\r\n    <row agent=\"Dadatal Zaviam\" agentid=\"3015023\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008905\" locator=\"false\"/>\r\n    <row agent=\"Yeshman Ahrdod\" agentid=\"3015024\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008860\" locator=\"false\"/>\r\n    <row agent=\"Heesehr Hiadass\" agentid=\"3015025\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"2\" locationid=\"60008857\" locator=\"false\"/>\r\n    <row agent=\"Fareer Shakah\" agentid=\"3015026\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008869\" locator=\"false\"/>\r\n    <row agent=\"Sehoob Asomiah\" agentid=\"3015027\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008881\" locator=\"false\"/>\r\n    <row agent=\"Shanten Bahoon\" agentid=\"3015028\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008803\" locator=\"false\"/>\r\n    <row agent=\"Garushzib Hurmek\" agentid=\"3015029\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008839\" locator=\"false\"/>\r\n    <row agent=\"Andasti Fakh\" agentid=\"3015030\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"2\" locationid=\"60008842\" locator=\"false\"/>\r\n    <row agent=\"Mayofah Umod\" agentid=\"3015031\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008827\" locator=\"false\"/>\r\n    <row agent=\"Mirena Dirara\" agentid=\"3015032\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"2\" locationid=\"60008851\" locator=\"false\"/>\r\n    <row agent=\"Zalen Ghasha\" agentid=\"3015033\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"3\" locationid=\"60008863\" locator=\"false\"/>\r\n    <row agent=\"Mih Runit\" agentid=\"3015034\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"4\" locationid=\"60008866\" locator=\"false\"/>\r\n    <row agent=\"Nosodnis Sahamar\" agentid=\"3015035\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"3\" locationid=\"60008830\" locator=\"false\"/>\r\n    <row agent=\"Priaki Adyana\" agentid=\"3015036\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008902\" locator=\"false\"/>\r\n    <row agent=\"Ahrnimed Hali\" agentid=\"3015037\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"3\" locationid=\"60008881\" locator=\"false\"/>\r\n    <row agent=\"Rahli Jadata\" agentid=\"3015038\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008845\" locator=\"false\"/>\r\n    <row agent=\"Bedinat Latari\" agentid=\"3015039\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008884\" locator=\"false\"/>\r\n    <row agent=\"Areram Fiti\" agentid=\"3015040\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008821\" locator=\"false\"/>\r\n    <row agent=\"Yala Jishki\" agentid=\"3015041\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"3\" locationid=\"60008851\" locator=\"false\"/>\r\n    <row agent=\"Anosh Harnin\" agentid=\"3015042\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"4\" locationid=\"60008878\" locator=\"false\"/>\r\n    <row agent=\"Othahes Hahyil\" agentid=\"3015043\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"2\" locationid=\"60008809\" locator=\"false\"/>\r\n    <row agent=\"Sadhqish Ebidan\" agentid=\"3015044\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"3\" locationid=\"60008824\" locator=\"false\"/>\r\n    <row agent=\"Fotrih Seevadin\" agentid=\"3015045\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"3\" locationid=\"60008884\" locator=\"false\"/>\r\n    <row agent=\"Nudam Zephan\" agentid=\"3015046\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008851\" locator=\"false\"/>\r\n    <row agent=\"Soubie Anas\" agentid=\"3015047\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008827\" locator=\"false\"/>\r\n    <row agent=\"Ashtot Payai\" agentid=\"3015048\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008842\" locator=\"false\"/>\r\n    <row agent=\"Arina Raamalar\" agentid=\"3015049\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"3\" locationid=\"60008794\" locator=\"false\"/>\r\n    <row agent=\"Jersani Hanab\" agentid=\"3015050\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"3\" locationid=\"60008851\" locator=\"false\"/>\r\n    <row agent=\"Zushkat Aphibtouh\" agentid=\"3015051\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"4\" locationid=\"60008812\" locator=\"false\"/>\r\n    <row agent=\"Tamigh Zahalou\" agentid=\"3015052\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"3\" locationid=\"60008911\" locator=\"false\"/>\r\n    <row agent=\"Zehbani Kita\" agentid=\"3015053\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"1\" locationid=\"60008971\" locator=\"false\"/>\r\n    <row agent=\"Pildia Aroka\" agentid=\"3015054\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"2\" locationid=\"60008920\" locator=\"false\"/>\r\n    <row agent=\"Jurever Yuliane\" agentid=\"3015055\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"1\" locationid=\"60008917\" locator=\"false\"/>\r\n    <row agent=\"Alelam Banela\" agentid=\"3015056\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"2\" locationid=\"60009022\" locator=\"false\"/>\r\n    <row agent=\"Buheshan Migekeni\" agentid=\"3015057\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"2\" locationid=\"60008971\" locator=\"false\"/>\r\n    <row agent=\"Samshek Taronzac\" agentid=\"3015058\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"4\" locationid=\"60008989\" locator=\"false\"/>\r\n    <row agent=\"Urmohra Aria\" agentid=\"3015059\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"2\" locationid=\"60008962\" locator=\"false\"/>\r\n    <row agent=\"Jandrouhr Saanara\" agentid=\"3015060\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"3\" locationid=\"60008914\" locator=\"false\"/>\r\n    <row agent=\"Velezri Ureda\" agentid=\"3015061\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"3\" locationid=\"60009025\" locator=\"false\"/>\r\n    <row agent=\"Magah Rahzan\" agentid=\"3015062\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"3\" locationid=\"60008944\" locator=\"false\"/>\r\n    <row agent=\"Padam Yanabas\" agentid=\"3015063\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"2\" locationid=\"60008950\" locator=\"false\"/>\r\n    <row agent=\"Irmalin Yis\" agentid=\"3015064\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"3\" locationid=\"60008920\" locator=\"false\"/>\r\n    <row agent=\"Rumeci Asarour\" agentid=\"3015065\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"1\" locationid=\"60008956\" locator=\"false\"/>\r\n    <row agent=\"Ourarot Oshiye\" agentid=\"3015066\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"3\" locationid=\"60008959\" locator=\"false\"/>\r\n    <row agent=\"Acol Yarwema\" agentid=\"3015067\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"4\" locationid=\"60008914\" locator=\"false\"/>\r\n    <row agent=\"Riraba Hishias\" agentid=\"3015068\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"1\" locationid=\"60008923\" locator=\"false\"/>\r\n    <row agent=\"Panora Peloum\" agentid=\"3015069\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"3\" locationid=\"60008917\" locator=\"false\"/>\r\n    <row agent=\"Rigaraz Vashkah\" agentid=\"3015070\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"1\" locationid=\"60008974\" locator=\"false\"/>\r\n    <row agent=\"Ashyal Sit\" agentid=\"3015071\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"1\" locationid=\"60008944\" locator=\"false\"/>\r\n    <row agent=\"Sarafanin Arapri\" agentid=\"3015072\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"1\" locationid=\"60009010\" locator=\"false\"/>\r\n    <row agent=\"Zashada Gebase\" agentid=\"3015073\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"4\" locationid=\"60008938\" locator=\"false\"/>\r\n    <row agent=\"Hanek Sabirahr\" agentid=\"3015074\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"2\" locationid=\"60008953\" locator=\"false\"/>\r\n    <row agent=\"Doohes Aphou\" agentid=\"3015075\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"1\" locationid=\"60008974\" locator=\"false\"/>\r\n    <row agent=\"Azdekayh Kiber\" agentid=\"3015076\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"1\" locationid=\"60008995\" locator=\"false\"/>\r\n    <row agent=\"Assez Zasoukh\" agentid=\"3015077\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"2\" locationid=\"60008929\" locator=\"false\"/>\r\n    <row agent=\"Rasi Olasas\" agentid=\"3015078\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"4\" locationid=\"60008935\" locator=\"false\"/>\r\n    <row agent=\"Gasouman Lebayir\" agentid=\"3015079\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"3\" locationid=\"60009028\" locator=\"false\"/>\r\n    <row agent=\"Kaseevet Esraran\" agentid=\"3015080\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"2\" locationid=\"60008977\" locator=\"false\"/>\r\n    <row agent=\"Noghy Kiru\" agentid=\"3015081\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"1\" locationid=\"60008941\" locator=\"false\"/>\r\n    <row agent=\"Shissa Sareneh\" agentid=\"3015082\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"3\" locationid=\"60009010\" locator=\"false\"/>\r\n    <row agent=\"Yulai Maeedan\" agentid=\"3015083\" agenttypeid=\"2\" corporationid=\"1000093\" divisionid=\"24\" level=\"3\" locationid=\"60008932\" locator=\"false\"/>\r\n    <row agent=\"Maromerie Gelemon\" agentid=\"3015084\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009043\" locator=\"false\"/>\r\n    <row agent=\"Eyghotelle Tabulia\" agentid=\"3015085\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009052\" locator=\"false\"/>\r\n    <row agent=\"Loiceloittin Auvrolaert\" agentid=\"3015086\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009220\" locator=\"false\"/>\r\n    <row agent=\"Thirtant Anzinnere\" agentid=\"3015087\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009274\" locator=\"false\"/>\r\n    <row agent=\"Arnales Delmoler\" agentid=\"3015088\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009160\" locator=\"false\"/>\r\n    <row agent=\"Andomel Elaeflelan\" agentid=\"3015089\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009289\" locator=\"false\"/>\r\n    <row agent=\"Armassane Camon\" agentid=\"3015090\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009250\" locator=\"false\"/>\r\n    <row agent=\"Giltiere Lorsel\" agentid=\"3015091\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009064\" locator=\"false\"/>\r\n    <row agent=\"Arnettylier Eulancke\" agentid=\"3015092\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009079\" locator=\"false\"/>\r\n    <row agent=\"Marette Falane\" agentid=\"3015093\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009136\" locator=\"false\"/>\r\n    <row agent=\"Estavoire Ostrie\" agentid=\"3015094\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009145\" locator=\"false\"/>\r\n    <row agent=\"Anciniamet Patecaere\" agentid=\"3015095\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009127\" locator=\"false\"/>\r\n    <row agent=\"Vaydaerer Allyttel\" agentid=\"3015096\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"4\" locationid=\"60009190\" locator=\"false\"/>\r\n    <row agent=\"Gua Mochalle\" agentid=\"3015097\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009094\" locator=\"false\"/>\r\n    <row agent=\"Moy Huldier\" agentid=\"3015098\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"4\" locationid=\"60009181\" locator=\"false\"/>\r\n    <row agent=\"Osmyller Geremerie\" agentid=\"3015099\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009052\" locator=\"false\"/>\r\n    <row agent=\"Grouniers Inghonalle\" agentid=\"3015100\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009289\" locator=\"false\"/>\r\n    <row agent=\"Lonnard Dages\" agentid=\"3015101\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009205\" locator=\"false\"/>\r\n    <row agent=\"Echone Zay\" agentid=\"3015102\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009079\" locator=\"false\"/>\r\n    <row agent=\"Tompsanon Livainon\" agentid=\"3015103\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009277\" locator=\"false\"/>\r\n    <row agent=\"Ansylelle Bourtimenon\" agentid=\"3015104\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"4\" locationid=\"60009280\" locator=\"false\"/>\r\n    <row agent=\"Boc Sameere\" agentid=\"3015105\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009049\" locator=\"false\"/>\r\n    <row agent=\"Brybier Arylere\" agentid=\"3015106\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"1\" locationid=\"60009121\" locator=\"false\"/>\r\n    <row agent=\"Otier Briete\" agentid=\"3015107\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009190\" locator=\"false\"/>\r\n    <row agent=\"Aderot Mailloux\" agentid=\"3015108\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009112\" locator=\"false\"/>\r\n    <row agent=\"Ysse Gorsievose\" agentid=\"3015109\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009289\" locator=\"false\"/>\r\n    <row agent=\"Auvie Vemere\" agentid=\"3015110\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009118\" locator=\"false\"/>\r\n    <row agent=\"Alpicard Alezitte\" agentid=\"3015111\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"2\" locationid=\"60009052\" locator=\"false\"/>\r\n    <row agent=\"Challondin Aesscher\" agentid=\"3015112\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"2\" locationid=\"60009136\" locator=\"false\"/>\r\n    <row agent=\"Echollaert Azuritte\" agentid=\"3015113\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"3\" locationid=\"60009193\" locator=\"false\"/>\r\n    <row agent=\"Elelins Schylst\" agentid=\"3015114\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"1\" locationid=\"60009082\" locator=\"false\"/>\r\n    <row agent=\"Jarck Dentchroose\" agentid=\"3015115\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"2\" locationid=\"60009160\" locator=\"false\"/>\r\n    <row agent=\"Eveynel Daerne\" agentid=\"3015116\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"3\" locationid=\"60009232\" locator=\"false\"/>\r\n    <row agent=\"Walesine Arnarique\" agentid=\"3015117\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"2\" locationid=\"60009112\" locator=\"false\"/>\r\n    <row agent=\"Isande Anzer\" agentid=\"3015118\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"2\" locationid=\"60009154\" locator=\"false\"/>\r\n    <row agent=\"Hiballan Eugethyn\" agentid=\"3015119\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"2\" locationid=\"60009121\" locator=\"false\"/>\r\n    <row agent=\"Bulolles Osmaystaere\" agentid=\"3015120\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"1\" locationid=\"60009082\" locator=\"false\"/>\r\n    <row agent=\"Jearbette Yron\" agentid=\"3015121\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"3\" locationid=\"60009058\" locator=\"false\"/>\r\n    <row agent=\"Delille Doi\" agentid=\"3015122\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"3\" locationid=\"60009148\" locator=\"false\"/>\r\n    <row agent=\"Bosceque Lellevoire\" agentid=\"3015123\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"1\" locationid=\"60009262\" locator=\"false\"/>\r\n    <row agent=\"Demer Vevodeel\" agentid=\"3015124\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"2\" locationid=\"60009265\" locator=\"false\"/>\r\n    <row agent=\"Teaux Jorler\" agentid=\"3015125\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"3\" locationid=\"60009070\" locator=\"false\"/>\r\n    <row agent=\"Arnallote Ausbe\" agentid=\"3015126\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"1\" locationid=\"60009082\" locator=\"false\"/>\r\n    <row agent=\"Suvaere Oloere\" agentid=\"3015127\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"3\" locationid=\"60009151\" locator=\"false\"/>\r\n    <row agent=\"Reau Dummiger\" agentid=\"3015128\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"1\" locationid=\"60009214\" locator=\"false\"/>\r\n    <row agent=\"Dadienes Lange\" agentid=\"3015129\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"2\" locationid=\"60009400\" locator=\"false\"/>\r\n    <row agent=\"Eves Firiman\" agentid=\"3015130\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"2\" locationid=\"60009391\" locator=\"false\"/>\r\n    <row agent=\"Voil Doppepuette\" agentid=\"3015131\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"1\" locationid=\"60009349\" locator=\"false\"/>\r\n    <row agent=\"Chrirena Girault\" agentid=\"3015132\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"2\" locationid=\"60009373\" locator=\"false\"/>\r\n    <row agent=\"Dalbruette Archore\" agentid=\"3015133\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"2\" locationid=\"60009403\" locator=\"false\"/>\r\n    <row agent=\"Lordt Annonon\" agentid=\"3015134\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"3\" locationid=\"60009370\" locator=\"false\"/>\r\n    <row agent=\"Echarbins Arbra\" agentid=\"3015135\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"4\" locationid=\"60009382\" locator=\"false\"/>\r\n    <row agent=\"Massytorain Ophelame\" agentid=\"3015136\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"2\" locationid=\"60009367\" locator=\"false\"/>\r\n    <row agent=\"Ardennyn Violebins\" agentid=\"3015137\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"2\" locationid=\"60009385\" locator=\"false\"/>\r\n    <row agent=\"Weriette Albovarie\" agentid=\"3015138\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"2\" locationid=\"60009370\" locator=\"false\"/>\r\n    <row agent=\"Miniette Rirghenes\" agentid=\"3015139\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"2\" locationid=\"60009400\" locator=\"false\"/>\r\n    <row agent=\"Chamoles Coempant\" agentid=\"3015140\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"2\" locationid=\"60009319\" locator=\"false\"/>\r\n    <row agent=\"Oirlin Darolevre\" agentid=\"3015141\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"2\" locationid=\"60009421\" locator=\"false\"/>\r\n    <row agent=\"Orleurmon Isovalle\" agentid=\"3015142\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"2\" locationid=\"60009391\" locator=\"false\"/>\r\n    <row agent=\"Benier Gaun\" agentid=\"3015143\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"1\" locationid=\"60009403\" locator=\"false\"/>\r\n    <row agent=\"Pesalet Clout\" agentid=\"3015144\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"1\" locationid=\"60009343\" locator=\"false\"/>\r\n    <row agent=\"Brassier Alurel\" agentid=\"3015145\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"1\" locationid=\"60009337\" locator=\"false\"/>\r\n    <row agent=\"Aminel Volydele\" agentid=\"3015146\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"3\" locationid=\"60009328\" locator=\"false\"/>\r\n    <row agent=\"Aminnard Stensaine\" agentid=\"3015147\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"3\" locationid=\"60009352\" locator=\"false\"/>\r\n    <row agent=\"Hoyessot Arcourt\" agentid=\"3015148\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"2\" locationid=\"60009322\" locator=\"false\"/>\r\n    <row agent=\"Vlayn Aille\" agentid=\"3015149\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"1\" locationid=\"60009352\" locator=\"false\"/>\r\n    <row agent=\"Marele Etone\" agentid=\"3015150\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"1\" locationid=\"60009352\" locator=\"false\"/>\r\n    <row agent=\"Drele Hussevris\" agentid=\"3015151\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"2\" locationid=\"60009385\" locator=\"false\"/>\r\n    <row agent=\"Cobanssesnel Audyteaux\" agentid=\"3015152\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"3\" locationid=\"60009397\" locator=\"false\"/>\r\n    <row agent=\"Aydt Brere\" agentid=\"3015153\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"1\" locationid=\"60009415\" locator=\"false\"/>\r\n    <row agent=\"Onfraville Aurme\" agentid=\"3015154\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"1\" locationid=\"60009364\" locator=\"false\"/>\r\n    <row agent=\"Antena Varattet\" agentid=\"3015155\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"2\" locationid=\"60009352\" locator=\"false\"/>\r\n    <row agent=\"Atlaldelier Adone\" agentid=\"3015156\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"1\" locationid=\"60009382\" locator=\"false\"/>\r\n    <row agent=\"Trerron Raecer\" agentid=\"3015157\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"2\" locationid=\"60009358\" locator=\"false\"/>\r\n    <row agent=\"Mompont Odoris\" agentid=\"3015158\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"3\" locationid=\"60009418\" locator=\"false\"/>\r\n    <row agent=\"Speedele Dutier\" agentid=\"3015159\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"1\" locationid=\"60009334\" locator=\"false\"/>\r\n    <row agent=\"Haatephaeslan Mamorgnins\" agentid=\"3015160\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"2\" locationid=\"60009391\" locator=\"false\"/>\r\n    <row agent=\"Denssartin Poillin\" agentid=\"3015161\" agenttypeid=\"2\" corporationid=\"1000096\" divisionid=\"24\" level=\"1\" locationid=\"60009424\" locator=\"false\"/>\r\n    <row agent=\"Baut Ashtoron\" agentid=\"3015162\" agenttypeid=\"2\" corporationid=\"1000096\" divisionid=\"24\" level=\"2\" locationid=\"60009427\" locator=\"false\"/>\r\n    <row agent=\"Boudart Hellanes\" agentid=\"3015163\" agenttypeid=\"2\" corporationid=\"1000096\" divisionid=\"22\" level=\"3\" locationid=\"60009424\" locator=\"false\"/>\r\n    <row agent=\"Osmomonne Lameron\" agentid=\"3015164\" agenttypeid=\"2\" corporationid=\"1000096\" divisionid=\"22\" level=\"3\" locationid=\"60009427\" locator=\"false\"/>\r\n    <row agent=\"Estonnel Yolelis\" agentid=\"3015165\" agenttypeid=\"2\" corporationid=\"1000096\" divisionid=\"22\" level=\"3\" locationid=\"60009424\" locator=\"false\"/>\r\n    <row agent=\"Jaere Autrou\" agentid=\"3015166\" agenttypeid=\"2\" corporationid=\"1000096\" divisionid=\"22\" level=\"1\" locationid=\"60009427\" locator=\"false\"/>\r\n    <row agent=\"Tircharer Booleemere\" agentid=\"3015167\" agenttypeid=\"2\" corporationid=\"1000096\" divisionid=\"22\" level=\"1\" locationid=\"60009427\" locator=\"false\"/>\r\n    <row agent=\"Algindole Aurrent\" agentid=\"3015168\" agenttypeid=\"2\" corporationid=\"1000096\" divisionid=\"22\" level=\"2\" locationid=\"60009424\" locator=\"false\"/>\r\n    <row agent=\"Almaud Cherron\" agentid=\"3015169\" agenttypeid=\"2\" corporationid=\"1000096\" divisionid=\"22\" level=\"1\" locationid=\"60009427\" locator=\"false\"/>\r\n    <row agent=\"Brarerbert Defone\" agentid=\"3015170\" agenttypeid=\"2\" corporationid=\"1000096\" divisionid=\"22\" level=\"3\" locationid=\"60009427\" locator=\"false\"/>\r\n    <row agent=\"Jobelaeller Mallin\" agentid=\"3015171\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"3\" locationid=\"60009505\" locator=\"false\"/>\r\n    <row agent=\"Verier Gilenbel\" agentid=\"3015172\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"3\" locationid=\"60009538\" locator=\"false\"/>\r\n    <row agent=\"Atheles Aurtey\" agentid=\"3015173\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"2\" locationid=\"60009529\" locator=\"false\"/>\r\n    <row agent=\"Ostes Ormailly\" agentid=\"3015174\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"2\" locationid=\"60009478\" locator=\"false\"/>\r\n    <row agent=\"Sesarboque Ampe\" agentid=\"3015175\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"3\" locationid=\"60009460\" locator=\"false\"/>\r\n    <row agent=\"Julake Struullomme\" agentid=\"3015176\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"1\" locationid=\"60009535\" locator=\"false\"/>\r\n    <row agent=\"Ossins Maunc\" agentid=\"3015177\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"1\" locationid=\"60009544\" locator=\"false\"/>\r\n    <row agent=\"Eyt Agarecke\" agentid=\"3015178\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"1\" locationid=\"60009487\" locator=\"false\"/>\r\n    <row agent=\"Grastiene Borieres\" agentid=\"3015179\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"1\" locationid=\"60009505\" locator=\"false\"/>\r\n    <row agent=\"Patier Adolin\" agentid=\"3015180\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"2\" locationid=\"60009460\" locator=\"false\"/>\r\n    <row agent=\"Asvy Clant\" agentid=\"3015181\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"3\" locationid=\"60009436\" locator=\"false\"/>\r\n    <row agent=\"Araencheres Eppied\" agentid=\"3015182\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"1\" locationid=\"60009523\" locator=\"false\"/>\r\n    <row agent=\"Allomant Isolette\" agentid=\"3015183\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"2\" locationid=\"60009523\" locator=\"false\"/>\r\n    <row agent=\"Ellosant Odier\" agentid=\"3015184\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"1\" locationid=\"60009454\" locator=\"false\"/>\r\n    <row agent=\"Aisnanaert Seyngoropus\" agentid=\"3015185\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"3\" locationid=\"60009448\" locator=\"false\"/>\r\n    <row agent=\"Aete Amoullorel\" agentid=\"3015186\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"3\" locationid=\"60009532\" locator=\"false\"/>\r\n    <row agent=\"Bangherorlon Alaralle\" agentid=\"3015187\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"3\" locationid=\"60009433\" locator=\"false\"/>\r\n    <row agent=\"Becaloutte Dellasisier\" agentid=\"3015188\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"3\" locationid=\"60009535\" locator=\"false\"/>\r\n    <row agent=\"Voilidier Kere\" agentid=\"3015189\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"3\" locationid=\"60009478\" locator=\"false\"/>\r\n    <row agent=\"Isoire Yvesque\" agentid=\"3015190\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"1\" locationid=\"60009460\" locator=\"false\"/>\r\n    <row agent=\"Vellaroutte Vaur\" agentid=\"3015191\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"3\" locationid=\"60009481\" locator=\"false\"/>\r\n    <row agent=\"Artey Sprieve\" agentid=\"3015192\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"3\" locationid=\"60009514\" locator=\"false\"/>\r\n    <row agent=\"Orvance Poirt\" agentid=\"3015193\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"3\" locationid=\"60009520\" locator=\"false\"/>\r\n    <row agent=\"Aideria Faille\" agentid=\"3015194\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"2\" locationid=\"60009433\" locator=\"false\"/>\r\n    <row agent=\"Prondoule Allync\" agentid=\"3015195\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"2\" locationid=\"60009538\" locator=\"false\"/>\r\n    <row agent=\"Breneque Lareau\" agentid=\"3015196\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"2\" locationid=\"60009445\" locator=\"false\"/>\r\n    <row agent=\"Arboose Gavance\" agentid=\"3015198\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"3\" locationid=\"60009430\" locator=\"false\"/>\r\n    <row agent=\"Alittane Zelois\" agentid=\"3015199\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"3\" locationid=\"60009538\" locator=\"false\"/>\r\n    <row agent=\"Xavette Varsters\" agentid=\"3015200\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"4\" locationid=\"60009529\" locator=\"false\"/>\r\n    <row agent=\"Armette Mayen\" agentid=\"3015201\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"1\" locationid=\"60009439\" locator=\"false\"/>\r\n    <row agent=\"Chalune Evaert\" agentid=\"3015202\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"3\" locationid=\"60009640\" locator=\"false\"/>\r\n    <row agent=\"Ghyselare Elemone\" agentid=\"3015203\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"2\" locationid=\"60009667\" locator=\"false\"/>\r\n    <row agent=\"Adoomminel Hassake\" agentid=\"3015204\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"2\" locationid=\"60009595\" locator=\"false\"/>\r\n    <row agent=\"Standormier Gholeke\" agentid=\"3015205\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"1\" locationid=\"60009697\" locator=\"false\"/>\r\n    <row agent=\"Anning Ire\" agentid=\"3015206\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"1\" locationid=\"60009697\" locator=\"false\"/>\r\n    <row agent=\"Allertenier Ancina\" agentid=\"3015207\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"1\" locationid=\"60009586\" locator=\"false\"/>\r\n    <row agent=\"Alserore Eugacard\" agentid=\"3015208\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"3\" locationid=\"60009610\" locator=\"false\"/>\r\n    <row agent=\"Astenel Ysiette\" agentid=\"3015209\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"3\" locationid=\"60009571\" locator=\"false\"/>\r\n    <row agent=\"Adewede Ambrante\" agentid=\"3015210\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"2\" locationid=\"60009622\" locator=\"false\"/>\r\n    <row agent=\"Actee Doldapant\" agentid=\"3015211\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"2\" locationid=\"60009640\" locator=\"false\"/>\r\n    <row agent=\"Olorraert Meltevaine\" agentid=\"3015212\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"4\" locationid=\"60009724\" locator=\"false\"/>\r\n    <row agent=\"Catalenne Delmoler\" agentid=\"3015213\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"2\" locationid=\"60009664\" locator=\"false\"/>\r\n    <row agent=\"Augier Cue\" agentid=\"3015214\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"2\" locationid=\"60009718\" locator=\"false\"/>\r\n    <row agent=\"Agnier Weyr\" agentid=\"3015215\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"4\" locationid=\"60009592\" locator=\"false\"/>\r\n    <row agent=\"Aciane Malanoure\" agentid=\"3015216\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"1\" locationid=\"60009589\" locator=\"false\"/>\r\n    <row agent=\"Vynneve Osmischiels\" agentid=\"3015217\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"4\" locationid=\"60009592\" locator=\"false\"/>\r\n    <row agent=\"Annaclaert Milson\" agentid=\"3015218\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"4\" locationid=\"60009592\" locator=\"false\"/>\r\n    <row agent=\"Bradolle Carlan\" agentid=\"3015219\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"3\" locationid=\"60009625\" locator=\"false\"/>\r\n    <row agent=\"Dasaner Abbaert\" agentid=\"3015220\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"1\" locationid=\"60009670\" locator=\"false\"/>\r\n    <row agent=\"Amavene Ylle\" agentid=\"3015221\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"1\" locationid=\"60009724\" locator=\"false\"/>\r\n    <row agent=\"Paies Emer\" agentid=\"3015222\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"3\" locationid=\"60009694\" locator=\"false\"/>\r\n    <row agent=\"Mosteneye Allainbaine\" agentid=\"3015223\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"1\" locationid=\"60009652\" locator=\"false\"/>\r\n    <row agent=\"Ident Orsovrin\" agentid=\"3015224\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"3\" locationid=\"60009625\" locator=\"false\"/>\r\n    <row agent=\"Here Crecetins\" agentid=\"3015225\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"3\" locationid=\"60009586\" locator=\"false\"/>\r\n    <row agent=\"Griles Alment\" agentid=\"3015226\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"1\" locationid=\"60009631\" locator=\"false\"/>\r\n    <row agent=\"Ducedier Retta\" agentid=\"3015227\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"1\" locationid=\"60009652\" locator=\"false\"/>\r\n    <row agent=\"Roose Empbie\" agentid=\"3015228\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"1\" locationid=\"60009721\" locator=\"false\"/>\r\n    <row agent=\"Wiresscherlin Barrerie\" agentid=\"3015229\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"2\" locationid=\"60009613\" locator=\"false\"/>\r\n    <row agent=\"Wenarielves Zettins\" agentid=\"3015230\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"2\" locationid=\"60009664\" locator=\"false\"/>\r\n    <row agent=\"Causon Naghesier\" agentid=\"3015231\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"22\" level=\"3\" locationid=\"60009706\" locator=\"false\"/>\r\n    <row agent=\"Ophennes Alooctirac\" agentid=\"3015232\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"22\" level=\"2\" locationid=\"60009568\" locator=\"false\"/>\r\n    <row agent=\"Armibaine Chour\" agentid=\"3015233\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"1\" locationid=\"60009655\" locator=\"false\"/>\r\n    <row agent=\"Guemtel Pinorire\" agentid=\"3015234\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"22\" level=\"1\" locationid=\"60009709\" locator=\"false\"/>\r\n    <row agent=\"Momel Haussel\" agentid=\"3015235\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"22\" level=\"2\" locationid=\"60009646\" locator=\"false\"/>\r\n    <row agent=\"Dentchroose Grassirer\" agentid=\"3015236\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"22\" level=\"1\" locationid=\"60009568\" locator=\"false\"/>\r\n    <row agent=\"Hecharokel Chitte\" agentid=\"3015237\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"22\" level=\"1\" locationid=\"60009682\" locator=\"false\"/>\r\n    <row agent=\"Cras Benirgnerron\" agentid=\"3015238\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"22\" level=\"3\" locationid=\"60009592\" locator=\"false\"/>\r\n    <row agent=\"Oluchilan Birt\" agentid=\"3015239\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"22\" level=\"3\" locationid=\"60009700\" locator=\"false\"/>\r\n    <row agent=\"Metimare Sermisner\" agentid=\"3015240\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"22\" level=\"2\" locationid=\"60009586\" locator=\"false\"/>\r\n    <row agent=\"Trenck Larcacraine\" agentid=\"3015241\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"22\" level=\"1\" locationid=\"60009676\" locator=\"false\"/>\r\n    <row agent=\"Bottorevier Audyteaux\" agentid=\"3015242\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"22\" level=\"3\" locationid=\"60009706\" locator=\"false\"/>\r\n    <row agent=\"Yolawelle Viette\" agentid=\"3015243\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"22\" level=\"3\" locationid=\"60009613\" locator=\"false\"/>\r\n    <row agent=\"Freye Strodmont\" agentid=\"3015244\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"22\" level=\"1\" locationid=\"60009667\" locator=\"false\"/>\r\n    <row agent=\"Zwart Chrimede\" agentid=\"3015245\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"22\" level=\"2\" locationid=\"60009616\" locator=\"false\"/>\r\n    <row agent=\"Buriette Ayllaerdt\" agentid=\"3015246\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"1\" locationid=\"60009643\" locator=\"false\"/>\r\n    <row agent=\"Oellins Ardocane\" agentid=\"3015247\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"1\" locationid=\"60009823\" locator=\"false\"/>\r\n    <row agent=\"Jeoffroi Phinenes\" agentid=\"3015248\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"3\" locationid=\"60009793\" locator=\"false\"/>\r\n    <row agent=\"Sorilles Eulenia\" agentid=\"3015249\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"4\" locationid=\"60009775\" locator=\"false\"/>\r\n    <row agent=\"Sonnon Allenceque\" agentid=\"3015250\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"4\" locationid=\"60009835\" locator=\"false\"/>\r\n    <row agent=\"Raute Ellomon\" agentid=\"3015251\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"22\" level=\"1\" locationid=\"60009793\" locator=\"false\"/>\r\n    <row agent=\"Phisene Algoure\" agentid=\"3015252\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"24\" level=\"2\" locationid=\"60009739\" locator=\"false\"/>\r\n    <row agent=\"Banckes Fetogaille\" agentid=\"3015253\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"24\" level=\"2\" locationid=\"60009823\" locator=\"false\"/>\r\n    <row agent=\"Bermelande Winciballe\" agentid=\"3015254\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"24\" level=\"1\" locationid=\"60009847\" locator=\"false\"/>\r\n    <row agent=\"Aglue Lalelbrattan\" agentid=\"3015255\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"4\" locationid=\"60009802\" locator=\"false\"/>\r\n    <row agent=\"Ibert Moer\" agentid=\"3015256\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"1\" locationid=\"60009844\" locator=\"false\"/>\r\n    <row agent=\"Uphonges Chamfirifres\" agentid=\"3015257\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"1\" locationid=\"60009769\" locator=\"false\"/>\r\n    <row agent=\"Flothemes Canestille\" agentid=\"3015258\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"3\" locationid=\"60009760\" locator=\"false\"/>\r\n    <row agent=\"Alaverie Arbimane\" agentid=\"3015259\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"1\" locationid=\"60009766\" locator=\"false\"/>\r\n    <row agent=\"Moclinamaud Aulnier\" agentid=\"3015260\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"3\" locationid=\"60009787\" locator=\"false\"/>\r\n    <row agent=\"Swaur Espanchet\" agentid=\"3015261\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"3\" locationid=\"60009847\" locator=\"false\"/>\r\n    <row agent=\"Annille Jaschercis\" agentid=\"3015262\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"3\" locationid=\"60009781\" locator=\"false\"/>\r\n    <row agent=\"Buvesone Arnorrirain\" agentid=\"3015263\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"1\" locationid=\"60009847\" locator=\"false\"/>\r\n    <row agent=\"Alace Clos\" agentid=\"3015264\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"1\" locationid=\"60009748\" locator=\"false\"/>\r\n    <row agent=\"Archaerger Quitier\" agentid=\"3015265\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"1\" locationid=\"60009814\" locator=\"false\"/>\r\n    <row agent=\"Marsch Albray\" agentid=\"3015266\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"2\" locationid=\"60009811\" locator=\"false\"/>\r\n    <row agent=\"Erris Dovienne\" agentid=\"3015267\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"2\" locationid=\"60009775\" locator=\"false\"/>\r\n    <row agent=\"Yole Tusoron\" agentid=\"3015268\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"3\" locationid=\"60009730\" locator=\"false\"/>\r\n    <row agent=\"Evaux Fouismocort\" agentid=\"3015269\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"1\" locationid=\"60009751\" locator=\"false\"/>\r\n    <row agent=\"Neymele Chatanede\" agentid=\"3015270\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"2\" locationid=\"60009760\" locator=\"false\"/>\r\n    <row agent=\"Arghe Rousbyrcon\" agentid=\"3015271\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"2\" locationid=\"60009772\" locator=\"false\"/>\r\n    <row agent=\"Apienne Neunomais\" agentid=\"3015272\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"2\" locationid=\"60009760\" locator=\"false\"/>\r\n    <row agent=\"Elloutteine Coon\" agentid=\"3015273\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"3\" locationid=\"60009805\" locator=\"false\"/>\r\n    <row agent=\"Ansare Saissoure\" agentid=\"3015274\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"1\" locationid=\"60009736\" locator=\"false\"/>\r\n    <row agent=\"Outtattere Reyttel\" agentid=\"3015275\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"3\" locationid=\"60009832\" locator=\"false\"/>\r\n    <row agent=\"Elois Ancine\" agentid=\"3015276\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"4\" locationid=\"60009742\" locator=\"false\"/>\r\n    <row agent=\"Quesne Mautene\" agentid=\"3015277\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"2\" locationid=\"60009757\" locator=\"false\"/>\r\n    <row agent=\"Araire Mubates\" agentid=\"3015278\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"3\" locationid=\"60009838\" locator=\"false\"/>\r\n    <row agent=\"Beene Algintal\" agentid=\"3015279\" agenttypeid=\"2\" corporationid=\"1000099\" divisionid=\"23\" level=\"4\" locationid=\"60009793\" locator=\"false\"/>\r\n    <row agent=\"Menace Bairene\" agentid=\"3015280\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60009916\" locator=\"false\"/>\r\n    <row agent=\"Muedeghoorris Aernorault\" agentid=\"3015281\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60009988\" locator=\"false\"/>\r\n    <row agent=\"Adratins Afstee\" agentid=\"3015282\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60010114\" locator=\"false\"/>\r\n    <row agent=\"Andamaere Thonzore\" agentid=\"3015283\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60010009\" locator=\"false\"/>\r\n    <row agent=\"Eregnaert Peau\" agentid=\"3015284\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60010045\" locator=\"false\"/>\r\n    <row agent=\"Erieves Ermonuse\" agentid=\"3015285\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60010114\" locator=\"false\"/>\r\n    <row agent=\"Oralan Alins\" agentid=\"3015286\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60009988\" locator=\"false\"/>\r\n    <row agent=\"Dune Mirmueren\" agentid=\"3015287\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"4\" locationid=\"60010045\" locator=\"false\"/>\r\n    <row agent=\"Warckhonins Audelalle\" agentid=\"3015288\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60009862\" locator=\"false\"/>\r\n    <row agent=\"Vienlomandie Wact\" agentid=\"3015289\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60009988\" locator=\"false\"/>\r\n    <row agent=\"Agencourt Ambrulle\" agentid=\"3015290\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"4\" locationid=\"60009916\" locator=\"false\"/>\r\n    <row agent=\"Ornonique Besserilier\" agentid=\"3015291\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60010009\" locator=\"false\"/>\r\n    <row agent=\"Cloic Broyer\" agentid=\"3015292\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60009883\" locator=\"false\"/>\r\n    <row agent=\"Osmarbon Bumotte\" agentid=\"3015293\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60009988\" locator=\"false\"/>\r\n    <row agent=\"Famparault Viridette\" agentid=\"3015294\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60009883\" locator=\"false\"/>\r\n    <row agent=\"Haurment Aurecque\" agentid=\"3015295\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60009862\" locator=\"false\"/>\r\n    <row agent=\"Tougnel Malphenace\" agentid=\"3015296\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60009988\" locator=\"false\"/>\r\n    <row agent=\"Assonave Amocevis\" agentid=\"3015297\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60009916\" locator=\"false\"/>\r\n    <row agent=\"Erdane Retta\" agentid=\"3015298\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60010114\" locator=\"false\"/>\r\n    <row agent=\"Jammiette Ophene\" agentid=\"3015299\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60009862\" locator=\"false\"/>\r\n    <row agent=\"Aunt Astotoerus\" agentid=\"3015300\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60010114\" locator=\"false\"/>\r\n    <row agent=\"Anpes Crebbaerone\" agentid=\"3015301\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60009871\" locator=\"false\"/>\r\n    <row agent=\"Bongerier Aistrou\" agentid=\"3015302\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60009850\" locator=\"false\"/>\r\n    <row agent=\"Hallerer Vairt\" agentid=\"3015303\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60010075\" locator=\"false\"/>\r\n    <row agent=\"Ertlie Lancolellis\" agentid=\"3015304\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60009949\" locator=\"false\"/>\r\n    <row agent=\"Maravarie Tyrsavoie\" agentid=\"3015305\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60009865\" locator=\"false\"/>\r\n    <row agent=\"Allelluc Etubell\" agentid=\"3015306\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"4\" locationid=\"60009922\" locator=\"false\"/>\r\n    <row agent=\"Lieu Alsecan\" agentid=\"3015307\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60010081\" locator=\"false\"/>\r\n    <row agent=\"Olaerdt Eruildofin\" agentid=\"3015308\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60009982\" locator=\"false\"/>\r\n    <row agent=\"Almaud Rembieres\" agentid=\"3015309\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"4\" locationid=\"60009856\" locator=\"false\"/>\r\n    <row agent=\"Togghelerier Aessou\" agentid=\"3015310\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"4\" locationid=\"60010072\" locator=\"false\"/>\r\n    <row agent=\"Dossier Acirater\" agentid=\"3015311\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"1\" locationid=\"60009967\" locator=\"false\"/>\r\n    <row agent=\"Prot Yons\" agentid=\"3015312\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"3\" locationid=\"60010111\" locator=\"false\"/>\r\n    <row agent=\"Marecque Quilbrard\" agentid=\"3015313\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"1\" locationid=\"60010036\" locator=\"false\"/>\r\n    <row agent=\"Arblee Jusveghe\" agentid=\"3015314\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"2\" locationid=\"60010039\" locator=\"false\"/>\r\n    <row agent=\"Roillaa Grot\" agentid=\"3015315\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"2\" locationid=\"60009865\" locator=\"false\"/>\r\n    <row agent=\"Allonger Auntrier\" agentid=\"3015316\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60010045\" locator=\"false\"/>\r\n    <row agent=\"Callezene Ambettault\" agentid=\"3015317\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60010045\" locator=\"false\"/>\r\n    <row agent=\"Craille Quinivent\" agentid=\"3015318\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60009883\" locator=\"false\"/>\r\n    <row agent=\"Vertorinc Leoroilete\" agentid=\"3015319\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60010045\" locator=\"false\"/>\r\n    <row agent=\"Ste Wirreque\" agentid=\"3015320\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"2\" locationid=\"60010009\" locator=\"false\"/>\r\n    <row agent=\"Cereque Vetynon\" agentid=\"3015321\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"3\" locationid=\"60010045\" locator=\"false\"/>\r\n    <row agent=\"Halertan Blan\" agentid=\"3015322\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"4\" locationid=\"60009862\" locator=\"false\"/>\r\n    <row agent=\"Thellain Arovais\" agentid=\"3015323\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60009865\" locator=\"false\"/>\r\n    <row agent=\"Ellomon Aryns\" agentid=\"3015324\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60009865\" locator=\"false\"/>\r\n    <row agent=\"Defry Blarlacan\" agentid=\"3015325\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"24\" level=\"2\" locationid=\"60010189\" locator=\"false\"/>\r\n    <row agent=\"Olettiers Appaert\" agentid=\"3015326\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"24\" level=\"2\" locationid=\"60010270\" locator=\"false\"/>\r\n    <row agent=\"Byrcenne Allende\" agentid=\"3015327\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"24\" level=\"2\" locationid=\"60010120\" locator=\"false\"/>\r\n    <row agent=\"Perdel Baustiste\" agentid=\"3015328\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"24\" level=\"3\" locationid=\"60010210\" locator=\"false\"/>\r\n    <row agent=\"Vlanregnes Annotane\" agentid=\"3015329\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"24\" level=\"2\" locationid=\"60010216\" locator=\"false\"/>\r\n    <row agent=\"Daesmarecque Isovalle\" agentid=\"3015330\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"24\" level=\"1\" locationid=\"60010180\" locator=\"false\"/>\r\n    <row agent=\"Ashtucer Alonaert\" agentid=\"3015331\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"24\" level=\"4\" locationid=\"60010162\" locator=\"false\"/>\r\n    <row agent=\"Doppepuette Ciete\" agentid=\"3015332\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"4\" locationid=\"60010192\" locator=\"false\"/>\r\n    <row agent=\"Dentchroose Audaille\" agentid=\"3015333\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"1\" locationid=\"60010147\" locator=\"false\"/>\r\n    <row agent=\"Bouveseuston Orvyllerier\" agentid=\"3015334\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"1\" locationid=\"60010120\" locator=\"false\"/>\r\n    <row agent=\"Gouey Orvempare\" agentid=\"3015335\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"1\" locationid=\"60010132\" locator=\"false\"/>\r\n    <row agent=\"Blaysene Rhin\" agentid=\"3015336\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"1\" locationid=\"60010153\" locator=\"false\"/>\r\n    <row agent=\"Roomfennan Ambettin\" agentid=\"3015337\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"2\" locationid=\"60010207\" locator=\"false\"/>\r\n    <row agent=\"Boungyes Ronier\" agentid=\"3015338\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"2\" locationid=\"60010180\" locator=\"false\"/>\r\n    <row agent=\"Avelelle Aubyrasse\" agentid=\"3015339\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"3\" locationid=\"60010162\" locator=\"false\"/>\r\n    <row agent=\"Pesteneye Onfraville\" agentid=\"3015340\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"1\" locationid=\"60010252\" locator=\"false\"/>\r\n    <row agent=\"Aets Auretin\" agentid=\"3015341\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"2\" locationid=\"60010228\" locator=\"false\"/>\r\n    <row agent=\"Auflaerdt Blala\" agentid=\"3015342\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"1\" locationid=\"60010207\" locator=\"false\"/>\r\n    <row agent=\"Virrelina Exenaert\" agentid=\"3015343\" agenttypeid=\"4\" corporationid=\"1000101\" divisionid=\"18\" level=\"2\" locationid=\"60010282\" locator=\"false\"/>\r\n    <row agent=\"Andassiree Bretyllync\" agentid=\"3015344\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"22\" level=\"2\" locationid=\"60010198\" locator=\"false\"/>\r\n    <row agent=\"Yonnetault Vaur\" agentid=\"3015345\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"22\" level=\"2\" locationid=\"60010273\" locator=\"false\"/>\r\n    <row agent=\"Chanottain Azatain\" agentid=\"3015346\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"22\" level=\"2\" locationid=\"60010159\" locator=\"false\"/>\r\n    <row agent=\"Junsoraert Auvy\" agentid=\"3015347\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"22\" level=\"2\" locationid=\"60010159\" locator=\"false\"/>\r\n    <row agent=\"Iseladie Encet\" agentid=\"3015348\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"22\" level=\"1\" locationid=\"60010195\" locator=\"false\"/>\r\n    <row agent=\"Ambramotte Ryllygnier\" agentid=\"3015349\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"22\" level=\"3\" locationid=\"60010129\" locator=\"false\"/>\r\n    <row agent=\"Marylckorler Aette\" agentid=\"3015350\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"22\" level=\"2\" locationid=\"60010261\" locator=\"false\"/>\r\n    <row agent=\"Rayle Feveiles\" agentid=\"3015351\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"22\" level=\"2\" locationid=\"60010270\" locator=\"false\"/>\r\n    <row agent=\"Orvolle Algamone\" agentid=\"3015352\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"22\" level=\"1\" locationid=\"60010273\" locator=\"false\"/>\r\n    <row agent=\"Galotyne Ongvia\" agentid=\"3015353\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"22\" level=\"3\" locationid=\"60010234\" locator=\"false\"/>\r\n    <row agent=\"Vyrrelanpin Murchelis\" agentid=\"3015354\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"22\" level=\"1\" locationid=\"60010273\" locator=\"false\"/>\r\n    <row agent=\"Angalle Matour\" agentid=\"3015355\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"22\" level=\"1\" locationid=\"60010147\" locator=\"false\"/>\r\n    <row agent=\"Edent Ystre\" agentid=\"3015356\" agenttypeid=\"4\" corporationid=\"1000102\" divisionid=\"18\" level=\"2\" locationid=\"60010375\" locator=\"false\"/>\r\n    <row agent=\"Allouppaire Chaldisemeur\" agentid=\"3015357\" agenttypeid=\"4\" corporationid=\"1000102\" divisionid=\"18\" level=\"3\" locationid=\"60010348\" locator=\"false\"/>\r\n    <row agent=\"Hille Hillutes\" agentid=\"3015358\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"22\" level=\"2\" locationid=\"60010360\" locator=\"false\"/>\r\n    <row agent=\"Juritte Gravonere\" agentid=\"3015359\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"22\" level=\"1\" locationid=\"60010312\" locator=\"false\"/>\r\n    <row agent=\"Ghyltrella Caurfer\" agentid=\"3015360\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"22\" level=\"1\" locationid=\"60010378\" locator=\"false\"/>\r\n    <row agent=\"Ailer Dullere\" agentid=\"3015361\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"22\" level=\"2\" locationid=\"60010318\" locator=\"false\"/>\r\n    <row agent=\"Ahreres Aminnard\" agentid=\"3015362\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"22\" level=\"3\" locationid=\"60010303\" locator=\"false\"/>\r\n    <row agent=\"Ornelin Bridarete\" agentid=\"3015363\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"22\" level=\"2\" locationid=\"60010354\" locator=\"false\"/>\r\n    <row agent=\"Auvyncke Orarain\" agentid=\"3015364\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"22\" level=\"1\" locationid=\"60010339\" locator=\"false\"/>\r\n    <row agent=\"Jonare Fleulenne\" agentid=\"3015365\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"22\" level=\"2\" locationid=\"60010375\" locator=\"false\"/>\r\n    <row agent=\"Avilan Wamare\" agentid=\"3015366\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"22\" level=\"3\" locationid=\"60010354\" locator=\"false\"/>\r\n    <row agent=\"Aec Fonulique\" agentid=\"3015367\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"22\" level=\"2\" locationid=\"60010330\" locator=\"false\"/>\r\n    <row agent=\"Tendrille Tear\" agentid=\"3015368\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"22\" level=\"1\" locationid=\"60010321\" locator=\"false\"/>\r\n    <row agent=\"Malirout Candsosene\" agentid=\"3015369\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"22\" level=\"1\" locationid=\"60010321\" locator=\"false\"/>\r\n    <row agent=\"Londenzoen Duman\" agentid=\"3015370\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"22\" level=\"2\" locationid=\"60010363\" locator=\"false\"/>\r\n    <row agent=\"Kale Vemaeren\" agentid=\"3015371\" agenttypeid=\"2\" corporationid=\"1000103\" divisionid=\"24\" level=\"2\" locationid=\"60010393\" locator=\"false\"/>\r\n    <row agent=\"Malotte Laraert\" agentid=\"3015372\" agenttypeid=\"2\" corporationid=\"1000103\" divisionid=\"24\" level=\"4\" locationid=\"60010390\" locator=\"false\"/>\r\n    <row agent=\"Halier Atterin\" agentid=\"3015373\" agenttypeid=\"2\" corporationid=\"1000103\" divisionid=\"23\" level=\"3\" locationid=\"60010393\" locator=\"false\"/>\r\n    <row agent=\"Odoulreles Edmette\" agentid=\"3015374\" agenttypeid=\"2\" corporationid=\"1000103\" divisionid=\"23\" level=\"1\" locationid=\"60010393\" locator=\"false\"/>\r\n    <row agent=\"Andones Mayllue\" agentid=\"3015375\" agenttypeid=\"2\" corporationid=\"1000103\" divisionid=\"23\" level=\"2\" locationid=\"60010393\" locator=\"false\"/>\r\n    <row agent=\"Rau Weyllaenalle\" agentid=\"3015376\" agenttypeid=\"2\" corporationid=\"1000103\" divisionid=\"24\" level=\"1\" locationid=\"60010390\" locator=\"false\"/>\r\n    <row agent=\"Chersines Cait\" agentid=\"3015377\" agenttypeid=\"2\" corporationid=\"1000103\" divisionid=\"22\" level=\"4\" locationid=\"60010393\" locator=\"false\"/>\r\n    <row agent=\"Heillaert Cridemotte\" agentid=\"3015378\" agenttypeid=\"2\" corporationid=\"1000103\" divisionid=\"22\" level=\"4\" locationid=\"60010390\" locator=\"false\"/>\r\n    <row agent=\"Chapel Aubola\" agentid=\"3015379\" agenttypeid=\"2\" corporationid=\"1000103\" divisionid=\"22\" level=\"3\" locationid=\"60010393\" locator=\"false\"/>\r\n    <row agent=\"Berentes Byrcenne\" agentid=\"3015380\" agenttypeid=\"2\" corporationid=\"1000103\" divisionid=\"22\" level=\"1\" locationid=\"60010390\" locator=\"false\"/>\r\n    <row agent=\"Cusel Viriette\" agentid=\"3015381\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"24\" level=\"4\" locationid=\"60010396\" locator=\"false\"/>\r\n    <row agent=\"Angonon Rulie\" agentid=\"3015382\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"24\" level=\"2\" locationid=\"60010414\" locator=\"false\"/>\r\n    <row agent=\"Oine Bosceque\" agentid=\"3015383\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"2\" locationid=\"60010399\" locator=\"false\"/>\r\n    <row agent=\"Anshal Vineseille\" agentid=\"3015384\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"1\" locationid=\"60010426\" locator=\"false\"/>\r\n    <row agent=\"Edminaire Caretyn\" agentid=\"3015385\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"1\" locationid=\"60010408\" locator=\"false\"/>\r\n    <row agent=\"Allore Comante\" agentid=\"3015386\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"24\" level=\"2\" locationid=\"60010504\" locator=\"false\"/>\r\n    <row agent=\"Angymonne Kanardin\" agentid=\"3015387\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"24\" level=\"3\" locationid=\"60010570\" locator=\"false\"/>\r\n    <row agent=\"Mya Nieurmestre\" agentid=\"3015388\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"24\" level=\"4\" locationid=\"60010507\" locator=\"false\"/>\r\n    <row agent=\"Botirgnetris Amane\" agentid=\"3015389\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"24\" level=\"2\" locationid=\"60010498\" locator=\"false\"/>\r\n    <row agent=\"Ayldrie Ekaeroose\" agentid=\"3015390\" agenttypeid=\"2\" corporationid=\"1000105\" divisionid=\"24\" level=\"4\" locationid=\"60010546\" locator=\"false\"/>\r\n    <row agent=\"Grocrerdier Autto\" agentid=\"3015391\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"3\" locationid=\"60010594\" locator=\"false\"/>\r\n    <row agent=\"Catrefroeck Virrent\" agentid=\"3015392\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"2\" locationid=\"60010594\" locator=\"false\"/>\r\n    <row agent=\"Prerie Adille\" agentid=\"3015393\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"4\" locationid=\"60010588\" locator=\"false\"/>\r\n    <row agent=\"Hounlesse Hafrana\" agentid=\"3015394\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"1\" locationid=\"60010627\" locator=\"false\"/>\r\n    <row agent=\"Ophenckbraert Ysevette\" agentid=\"3015395\" agenttypeid=\"2\" corporationid=\"1000106\" divisionid=\"22\" level=\"1\" locationid=\"60010600\" locator=\"false\"/>\r\n    <row agent=\"Andanes Octerin\" agentid=\"3015396\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"2\" locationid=\"60010672\" locator=\"false\"/>\r\n    <row agent=\"Malotte Cryne\" agentid=\"3015397\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"22\" level=\"1\" locationid=\"60010645\" locator=\"false\"/>\r\n    <row agent=\"Lolie Arbirelle\" agentid=\"3015398\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"24\" level=\"2\" locationid=\"60010645\" locator=\"false\"/>\r\n    <row agent=\"Thier Joon\" agentid=\"3015399\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"24\" level=\"3\" locationid=\"60010687\" locator=\"false\"/>\r\n    <row agent=\"Mazuere Vyllocoure\" agentid=\"3015400\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"24\" level=\"1\" locationid=\"60010714\" locator=\"false\"/>\r\n    <row agent=\"Achonckbraert Iverie\" agentid=\"3015401\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"1\" locationid=\"60010822\" locator=\"false\"/>\r\n    <row agent=\"Amberaulot Waude\" agentid=\"3015402\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"1\" locationid=\"60010819\" locator=\"false\"/>\r\n    <row agent=\"Keirevardt Merdonenouf\" agentid=\"3015403\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"1\" locationid=\"60010801\" locator=\"false\"/>\r\n    <row agent=\"Acanitte Gerloet\" agentid=\"3015404\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"23\" level=\"2\" locationid=\"60010822\" locator=\"false\"/>\r\n    <row agent=\"Avrue Obarmant\" agentid=\"3015405\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"23\" level=\"3\" locationid=\"60010804\" locator=\"false\"/>\r\n    <row agent=\"Aymynouel Chaland\" agentid=\"3015406\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"23\" level=\"2\" locationid=\"60010741\" locator=\"false\"/>\r\n    <row agent=\"Traude Sensittant\" agentid=\"3015407\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"23\" level=\"2\" locationid=\"60010786\" locator=\"false\"/>\r\n    <row agent=\"Hourbane Bolmolie\" agentid=\"3015408\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"22\" level=\"2\" locationid=\"60010780\" locator=\"false\"/>\r\n    <row agent=\"Vlillirier Fosse\" agentid=\"3015409\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"22\" level=\"2\" locationid=\"60010807\" locator=\"false\"/>\r\n    <row agent=\"Olienchemet Elaetoure\" agentid=\"3015410\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"22\" level=\"2\" locationid=\"60010780\" locator=\"false\"/>\r\n    <row agent=\"Ekelizer Elemone\" agentid=\"3015411\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"1\" locationid=\"60010780\" locator=\"false\"/>\r\n    <row agent=\"Aiglissale Zales\" agentid=\"3015412\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"22\" level=\"1\" locationid=\"60010807\" locator=\"false\"/>\r\n    <row agent=\"Bars Evetille\" agentid=\"3015413\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"1\" locationid=\"60010780\" locator=\"false\"/>\r\n    <row agent=\"Aritte Aist\" agentid=\"3015414\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"22\" level=\"2\" locationid=\"60010780\" locator=\"false\"/>\r\n    <row agent=\"Geremerie Roulphin\" agentid=\"3015415\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"22\" level=\"1\" locationid=\"60010765\" locator=\"false\"/>\r\n    <row agent=\"Aleneyde Daullou\" agentid=\"3015416\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"22\" level=\"2\" locationid=\"60010807\" locator=\"false\"/>\r\n    <row agent=\"Adye Afradare\" agentid=\"3015417\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"22\" level=\"2\" locationid=\"60010780\" locator=\"false\"/>\r\n    <row agent=\"Gollain Direrie\" agentid=\"3015418\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"24\" level=\"1\" locationid=\"60010912\" locator=\"false\"/>\r\n    <row agent=\"Ilotelle Yveure\" agentid=\"3015419\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"24\" level=\"3\" locationid=\"60010870\" locator=\"false\"/>\r\n    <row agent=\"Veil Brassier\" agentid=\"3015420\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"24\" level=\"2\" locationid=\"60010933\" locator=\"false\"/>\r\n    <row agent=\"Rollizite Hoormettin\" agentid=\"3015421\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"24\" level=\"2\" locationid=\"60010909\" locator=\"false\"/>\r\n    <row agent=\"Ste Brime\" agentid=\"3015422\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"24\" level=\"3\" locationid=\"60010873\" locator=\"false\"/>\r\n    <row agent=\"Moes Aildart\" agentid=\"3015423\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"24\" level=\"3\" locationid=\"60010894\" locator=\"false\"/>\r\n    <row agent=\"Gronssyn Falonitan\" agentid=\"3015424\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"24\" level=\"1\" locationid=\"60010879\" locator=\"false\"/>\r\n    <row agent=\"Maubert Elalolie\" agentid=\"3015425\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"24\" level=\"2\" locationid=\"60010915\" locator=\"false\"/>\r\n    <row agent=\"Emeersch Alpylaener\" agentid=\"3015426\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"24\" level=\"2\" locationid=\"60010897\" locator=\"false\"/>\r\n    <row agent=\"Muerlins Velomane\" agentid=\"3015427\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"24\" level=\"2\" locationid=\"60010933\" locator=\"false\"/>\r\n    <row agent=\"Assiettes Vallomaert\" agentid=\"3015428\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"24\" level=\"2\" locationid=\"60010939\" locator=\"false\"/>\r\n    <row agent=\"Aurtin Anzellaert\" agentid=\"3015429\" agenttypeid=\"2\" corporationid=\"1000109\" divisionid=\"24\" level=\"2\" locationid=\"60010876\" locator=\"false\"/>\r\n    <row agent=\"Josvis Veveranne\" agentid=\"3015430\" agenttypeid=\"4\" corporationid=\"1000109\" divisionid=\"18\" level=\"4\" locationid=\"60010921\" locator=\"false\"/>\r\n    <row agent=\"Oerman Aroo\" agentid=\"3015431\" agenttypeid=\"4\" corporationid=\"1000109\" divisionid=\"18\" level=\"2\" locationid=\"60010948\" locator=\"false\"/>\r\n    <row agent=\"Maulckaert Arje\" agentid=\"3015432\" agenttypeid=\"4\" corporationid=\"1000109\" divisionid=\"18\" level=\"2\" locationid=\"60014860\" locator=\"false\"/>\r\n    <row agent=\"Morier Arnoirende\" agentid=\"3015433\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"24\" level=\"4\" locationid=\"60010963\" locator=\"false\"/>\r\n    <row agent=\"Odoule Maline\" agentid=\"3015434\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"24\" level=\"3\" locationid=\"60011035\" locator=\"false\"/>\r\n    <row agent=\"Failecouller Adratalle\" agentid=\"3015435\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"24\" level=\"3\" locationid=\"60011095\" locator=\"false\"/>\r\n    <row agent=\"Gryve Auwi\" agentid=\"3015436\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"24\" level=\"4\" locationid=\"60011095\" locator=\"false\"/>\r\n    <row agent=\"Stontroller Feramon\" agentid=\"3015437\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"24\" level=\"3\" locationid=\"60011014\" locator=\"false\"/>\r\n    <row agent=\"Boillaert Fettycet\" agentid=\"3015438\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"24\" level=\"2\" locationid=\"60011077\" locator=\"false\"/>\r\n    <row agent=\"Latindthenges Oruse\" agentid=\"3015439\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"24\" level=\"1\" locationid=\"60011050\" locator=\"false\"/>\r\n    <row agent=\"Heuvane Maultrau\" agentid=\"3015440\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"24\" level=\"1\" locationid=\"60011020\" locator=\"false\"/>\r\n    <row agent=\"Meletienne Plalere\" agentid=\"3015441\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"24\" level=\"2\" locationid=\"60011113\" locator=\"false\"/>\r\n    <row agent=\"Arau Turtel\" agentid=\"3015442\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"24\" level=\"2\" locationid=\"60011056\" locator=\"false\"/>\r\n    <row agent=\"Deget Charettane\" agentid=\"3015443\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"24\" level=\"2\" locationid=\"60011107\" locator=\"false\"/>\r\n    <row agent=\"Anzore Leneur\" agentid=\"3015444\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"24\" level=\"2\" locationid=\"60010981\" locator=\"false\"/>\r\n    <row agent=\"Allolonne Rulbier\" agentid=\"3015445\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"24\" level=\"2\" locationid=\"60011125\" locator=\"false\"/>\r\n    <row agent=\"Calle Amberille\" agentid=\"3015446\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"24\" level=\"1\" locationid=\"60011047\" locator=\"false\"/>\r\n    <row agent=\"Arnaullen Pemitilla\" agentid=\"3015447\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"24\" level=\"3\" locationid=\"60011062\" locator=\"false\"/>\r\n    <row agent=\"Astay Eviane\" agentid=\"3015448\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"24\" level=\"2\" locationid=\"60010966\" locator=\"false\"/>\r\n    <row agent=\"Menlieu Geina\" agentid=\"3015449\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"24\" level=\"2\" locationid=\"60011062\" locator=\"false\"/>\r\n    <row agent=\"Sta Eburch\" agentid=\"3015450\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"24\" level=\"3\" locationid=\"60011107\" locator=\"false\"/>\r\n    <row agent=\"Orsauctin Oleson\" agentid=\"3015451\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"24\" level=\"3\" locationid=\"60011095\" locator=\"false\"/>\r\n    <row agent=\"Orecier Aglien\" agentid=\"3015452\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"24\" level=\"1\" locationid=\"60011011\" locator=\"false\"/>\r\n    <row agent=\"Atlairbot Lolledanier\" agentid=\"3015453\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"24\" level=\"2\" locationid=\"60011071\" locator=\"false\"/>\r\n    <row agent=\"Yvetrync Bethorckhonnon\" agentid=\"3015454\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"24\" level=\"1\" locationid=\"60011053\" locator=\"false\"/>\r\n    <row agent=\"Ala Marsch\" agentid=\"3015455\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60011098\" locator=\"false\"/>\r\n    <row agent=\"Chattinck Vevere\" agentid=\"3015456\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60011059\" locator=\"false\"/>\r\n    <row agent=\"Auba Crollonier\" agentid=\"3015457\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60011107\" locator=\"false\"/>\r\n    <row agent=\"Loutte Andsie\" agentid=\"3015458\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"3\" locationid=\"60011122\" locator=\"false\"/>\r\n    <row agent=\"Enssie Auretins\" agentid=\"3015459\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60011071\" locator=\"false\"/>\r\n    <row agent=\"Mannync Jarault\" agentid=\"3015460\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"4\" locationid=\"60011008\" locator=\"false\"/>\r\n    <row agent=\"Asques Deluerel\" agentid=\"3015461\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60011119\" locator=\"false\"/>\r\n    <row agent=\"Osmaessen Gamine\" agentid=\"3015462\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60010987\" locator=\"false\"/>\r\n    <row agent=\"Cadille Mette\" agentid=\"3015463\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"3\" locationid=\"60011041\" locator=\"false\"/>\r\n    <row agent=\"Ommunghele Etins\" agentid=\"3015464\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60011011\" locator=\"false\"/>\r\n    <row agent=\"Alserette Covygier\" agentid=\"3015465\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60011086\" locator=\"false\"/>\r\n    <row agent=\"Alosotte Vassisabois\" agentid=\"3015466\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60010978\" locator=\"false\"/>\r\n    <row agent=\"Tuniage Orenckbrault\" agentid=\"3015467\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60011113\" locator=\"false\"/>\r\n    <row agent=\"Attamette Raoulin\" agentid=\"3015468\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60011047\" locator=\"false\"/>\r\n    <row agent=\"Scourt Burroote\" agentid=\"3015469\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60011050\" locator=\"false\"/>\r\n    <row agent=\"Amieu Espetant\" agentid=\"3015470\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60010969\" locator=\"false\"/>\r\n    <row agent=\"Yonvaerdt Fewederia\" agentid=\"3015471\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60010972\" locator=\"false\"/>\r\n    <row agent=\"Caerne Zurier\" agentid=\"3015472\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"3\" locationid=\"60010987\" locator=\"false\"/>\r\n    <row agent=\"Ilallese Itte\" agentid=\"3015473\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"4\" locationid=\"60011053\" locator=\"false\"/>\r\n    <row agent=\"Apamoote Welle\" agentid=\"3015474\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"2\" locationid=\"60011020\" locator=\"false\"/>\r\n    <row agent=\"Ormaert Zetreler\" agentid=\"3015475\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"3\" locationid=\"60011017\" locator=\"false\"/>\r\n    <row agent=\"Olican Ligghere\" agentid=\"3015476\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"4\" locationid=\"60011083\" locator=\"false\"/>\r\n    <row agent=\"Vavinnis Carlan\" agentid=\"3015477\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"3\" locationid=\"60011128\" locator=\"false\"/>\r\n    <row agent=\"Scheesere Osmalene\" agentid=\"3015478\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"24\" level=\"1\" locationid=\"60011299\" locator=\"false\"/>\r\n    <row agent=\"Estattore Brayn\" agentid=\"3015480\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"24\" level=\"2\" locationid=\"60011281\" locator=\"false\"/>\r\n    <row agent=\"Witastroure Bellaine\" agentid=\"3015481\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"24\" level=\"3\" locationid=\"60011212\" locator=\"false\"/>\r\n    <row agent=\"Hevoraussel Odune\" agentid=\"3015482\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"24\" level=\"1\" locationid=\"60011215\" locator=\"false\"/>\r\n    <row agent=\"Caramel Anssie\" agentid=\"3015483\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"24\" level=\"3\" locationid=\"60011203\" locator=\"false\"/>\r\n    <row agent=\"Amollaert Ornoton\" agentid=\"3015485\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"24\" level=\"2\" locationid=\"60011233\" locator=\"false\"/>\r\n    <row agent=\"Purlieu Puzuene\" agentid=\"3015486\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"24\" level=\"4\" locationid=\"60011308\" locator=\"false\"/>\r\n    <row agent=\"Arnatune Illoutilly\" agentid=\"3015487\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"24\" level=\"3\" locationid=\"60011248\" locator=\"false\"/>\r\n    <row agent=\"Hoysmebonnie Doinarreau\" agentid=\"3015488\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"24\" level=\"3\" locationid=\"60011233\" locator=\"false\"/>\r\n    <row agent=\"Ogidel Phisene\" agentid=\"3015489\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"24\" level=\"3\" locationid=\"60011239\" locator=\"false\"/>\r\n    <row agent=\"Empse Ophaeghe\" agentid=\"3015490\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"24\" level=\"1\" locationid=\"60011182\" locator=\"false\"/>\r\n    <row agent=\"Stiers Anteson\" agentid=\"3015491\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"24\" level=\"2\" locationid=\"60011179\" locator=\"false\"/>\r\n    <row agent=\"Archannaert Euls\" agentid=\"3015493\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"24\" level=\"2\" locationid=\"60011146\" locator=\"false\"/>\r\n    <row agent=\"Blostrer Annolieles\" agentid=\"3015494\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"24\" level=\"1\" locationid=\"60011227\" locator=\"false\"/>\r\n    <row agent=\"Moclinamaud Tiste\" agentid=\"3015495\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"24\" level=\"3\" locationid=\"60011140\" locator=\"false\"/>\r\n    <row agent=\"Ardollique Isavergne\" agentid=\"3015497\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"24\" level=\"1\" locationid=\"60011242\" locator=\"false\"/>\r\n    <row agent=\"Parerer Lancis\" agentid=\"3015498\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"4\" locationid=\"60011191\" locator=\"false\"/>\r\n    <row agent=\"Amanere Yvylier\" agentid=\"3015499\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011272\" locator=\"false\"/>\r\n    <row agent=\"Mactalaury Jurmorand\" agentid=\"3015500\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011239\" locator=\"false\"/>\r\n    <row agent=\"Veraneque Ysel\" agentid=\"3015501\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"24\" level=\"1\" locationid=\"60011140\" locator=\"false\"/>\r\n    <row agent=\"Avellain Rordon\" agentid=\"3015502\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011200\" locator=\"false\"/>\r\n    <row agent=\"Esampant Menck\" agentid=\"3015503\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011212\" locator=\"false\"/>\r\n    <row agent=\"Chrillette Walenalle\" agentid=\"3015504\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011185\" locator=\"false\"/>\r\n    <row agent=\"Ranchel Jovromarain\" agentid=\"3015505\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"4\" locationid=\"60011185\" locator=\"false\"/>\r\n    <row agent=\"Commoutel Faynosite\" agentid=\"3015506\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"3\" locationid=\"60011167\" locator=\"false\"/>\r\n    <row agent=\"Geterau Volckeel\" agentid=\"3015507\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011236\" locator=\"false\"/>\r\n    <row agent=\"Rhoniette Amalois\" agentid=\"3015508\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011140\" locator=\"false\"/>\r\n    <row agent=\"Junnader Erout\" agentid=\"3015509\" agenttypeid=\"2\" corporationid=\"1000111\" divisionid=\"22\" level=\"2\" locationid=\"60011308\" locator=\"false\"/>\r\n    <row agent=\"Chrimorency Alieu\" agentid=\"3015510\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"24\" level=\"2\" locationid=\"60011323\" locator=\"false\"/>\r\n    <row agent=\"Ilete Cynlorard\" agentid=\"3015511\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"24\" level=\"1\" locationid=\"60011326\" locator=\"false\"/>\r\n    <row agent=\"Hadeene Blomeur\" agentid=\"3015512\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"24\" level=\"3\" locationid=\"60011332\" locator=\"false\"/>\r\n    <row agent=\"Hemparich Mormoen\" agentid=\"3015513\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"24\" level=\"4\" locationid=\"60011344\" locator=\"false\"/>\r\n    <row agent=\"Alailon Dauttin\" agentid=\"3015514\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"1\" locationid=\"60011359\" locator=\"false\"/>\r\n    <row agent=\"Erdegnodeel Cloun\" agentid=\"3015515\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"2\" locationid=\"60011380\" locator=\"false\"/>\r\n    <row agent=\"Sortet Stelande\" agentid=\"3015516\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"2\" locationid=\"60011380\" locator=\"false\"/>\r\n    <row agent=\"Chrireval Elallet\" agentid=\"3015517\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"4\" locationid=\"60011425\" locator=\"false\"/>\r\n    <row agent=\"Peselien Ronier\" agentid=\"3015518\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011497\" locator=\"false\"/>\r\n    <row agent=\"Wynierres Enegute\" agentid=\"3015519\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011458\" locator=\"false\"/>\r\n    <row agent=\"Orvilese Charfer\" agentid=\"3015520\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011395\" locator=\"false\"/>\r\n    <row agent=\"Alalabel Ofstes\" agentid=\"3015521\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"2\" locationid=\"60011419\" locator=\"false\"/>\r\n    <row agent=\"Boutte Dire\" agentid=\"3015522\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011482\" locator=\"false\"/>\r\n    <row agent=\"Muedeghoorris Dehette\" agentid=\"3015523\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011443\" locator=\"false\"/>\r\n    <row agent=\"Dobranelle Aullia\" agentid=\"3015524\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"24\" level=\"1\" locationid=\"60011404\" locator=\"false\"/>\r\n    <row agent=\"Marne Agesyrel\" agentid=\"3015525\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"3\" locationid=\"60011449\" locator=\"false\"/>\r\n    <row agent=\"Colet Zoenceliris\" agentid=\"3015526\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"4\" locationid=\"60011389\" locator=\"false\"/>\r\n    <row agent=\"Aihe Roncandon\" agentid=\"3015527\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011491\" locator=\"false\"/>\r\n    <row agent=\"Ancia Dosille\" agentid=\"3015528\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"4\" locationid=\"60011446\" locator=\"false\"/>\r\n    <row agent=\"Echerain Fette\" agentid=\"3015529\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"2\" locationid=\"60011452\" locator=\"false\"/>\r\n    <row agent=\"Iluelle Stie\" agentid=\"3015530\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"3\" locationid=\"60011467\" locator=\"false\"/>\r\n    <row agent=\"Ivymotte Droselory\" agentid=\"3015531\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"24\" level=\"3\" locationid=\"60011563\" locator=\"false\"/>\r\n    <row agent=\"Apunier Swee\" agentid=\"3015532\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"24\" level=\"3\" locationid=\"60011563\" locator=\"false\"/>\r\n    <row agent=\"Agregnavier Rorsavoie\" agentid=\"3015533\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"24\" level=\"1\" locationid=\"60011524\" locator=\"false\"/>\r\n    <row agent=\"Oetan Andyn\" agentid=\"3015534\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"24\" level=\"1\" locationid=\"60011515\" locator=\"false\"/>\r\n    <row agent=\"Pasmenzuere Atterer\" agentid=\"3015535\" agenttypeid=\"2\" corporationid=\"1000114\" divisionid=\"24\" level=\"2\" locationid=\"60011563\" locator=\"false\"/>\r\n    <row agent=\"Thuire Dercoucon\" agentid=\"3015536\" agenttypeid=\"2\" corporationid=\"1000116\" divisionid=\"22\" level=\"4\" locationid=\"60011596\" locator=\"false\"/>\r\n    <row agent=\"Endt Strovare\" agentid=\"3015537\" agenttypeid=\"2\" corporationid=\"1000116\" divisionid=\"22\" level=\"2\" locationid=\"60011596\" locator=\"false\"/>\r\n    <row agent=\"Slareue Alinier\" agentid=\"3015538\" agenttypeid=\"2\" corporationid=\"1000116\" divisionid=\"24\" level=\"3\" locationid=\"60011596\" locator=\"false\"/>\r\n    <row agent=\"Ophaghener Erquilenne\" agentid=\"3015539\" agenttypeid=\"2\" corporationid=\"1000116\" divisionid=\"24\" level=\"3\" locationid=\"60011599\" locator=\"false\"/>\r\n    <row agent=\"Posmon Nirocque\" agentid=\"3015540\" agenttypeid=\"2\" corporationid=\"1000116\" divisionid=\"24\" level=\"2\" locationid=\"60011599\" locator=\"false\"/>\r\n    <row agent=\"Frotiers Orecque\" agentid=\"3015541\" agenttypeid=\"2\" corporationid=\"1000116\" divisionid=\"24\" level=\"2\" locationid=\"60011599\" locator=\"false\"/>\r\n    <row agent=\"Voge Yolalie\" agentid=\"3015542\" agenttypeid=\"2\" corporationid=\"1000116\" divisionid=\"24\" level=\"3\" locationid=\"60011596\" locator=\"false\"/>\r\n    <row agent=\"Ayderitte Estibiese\" agentid=\"3015543\" agenttypeid=\"2\" corporationid=\"1000116\" divisionid=\"24\" level=\"2\" locationid=\"60011596\" locator=\"false\"/>\r\n    <row agent=\"Corillis Achtes\" agentid=\"3015544\" agenttypeid=\"2\" corporationid=\"1000116\" divisionid=\"24\" level=\"3\" locationid=\"60011599\" locator=\"false\"/>\r\n    <row agent=\"Alarnoche Criellyllync\" agentid=\"3015545\" agenttypeid=\"2\" corporationid=\"1000117\" divisionid=\"22\" level=\"4\" locationid=\"60011602\" locator=\"false\"/>\r\n    <row agent=\"Elage Rienne\" agentid=\"3015546\" agenttypeid=\"2\" corporationid=\"1000117\" divisionid=\"22\" level=\"2\" locationid=\"60011605\" locator=\"false\"/>\r\n    <row agent=\"Avoler Bufourber\" agentid=\"3015547\" agenttypeid=\"2\" corporationid=\"1000117\" divisionid=\"22\" level=\"1\" locationid=\"60011602\" locator=\"false\"/>\r\n    <row agent=\"Elelle Hose\" agentid=\"3015548\" agenttypeid=\"2\" corporationid=\"1000117\" divisionid=\"22\" level=\"1\" locationid=\"60011602\" locator=\"false\"/>\r\n    <row agent=\"Atloncevier Faille\" agentid=\"3015549\" agenttypeid=\"2\" corporationid=\"1000117\" divisionid=\"24\" level=\"3\" locationid=\"60011602\" locator=\"false\"/>\r\n    <row agent=\"Ignoitton Siveslet\" agentid=\"3015550\" agenttypeid=\"2\" corporationid=\"1000117\" divisionid=\"24\" level=\"2\" locationid=\"60011605\" locator=\"false\"/>\r\n    <row agent=\"Yonnyllere Ashtemes\" agentid=\"3015551\" agenttypeid=\"2\" corporationid=\"1000117\" divisionid=\"24\" level=\"4\" locationid=\"60011605\" locator=\"false\"/>\r\n    <row agent=\"Arbaeller Hieul\" agentid=\"3015552\" agenttypeid=\"2\" corporationid=\"1000117\" divisionid=\"24\" level=\"2\" locationid=\"60011602\" locator=\"false\"/>\r\n    <row agent=\"Aulmont Meis\" agentid=\"3015553\" agenttypeid=\"2\" corporationid=\"1000117\" divisionid=\"24\" level=\"2\" locationid=\"60011602\" locator=\"false\"/>\r\n    <row agent=\"Ignoure Audesiaen\" agentid=\"3015554\" agenttypeid=\"2\" corporationid=\"1000117\" divisionid=\"24\" level=\"4\" locationid=\"60011605\" locator=\"false\"/>\r\n    <row agent=\"Inghetende Loseryn\" agentid=\"3015555\" agenttypeid=\"2\" corporationid=\"1000118\" divisionid=\"24\" level=\"1\" locationid=\"60011611\" locator=\"false\"/>\r\n    <row agent=\"Minneliot Allate\" agentid=\"3015556\" agenttypeid=\"2\" corporationid=\"1000118\" divisionid=\"24\" level=\"4\" locationid=\"60011608\" locator=\"false\"/>\r\n    <row agent=\"Pretmiedane Ortney\" agentid=\"3015557\" agenttypeid=\"2\" corporationid=\"1000118\" divisionid=\"24\" level=\"3\" locationid=\"60011611\" locator=\"false\"/>\r\n    <row agent=\"Aurachette Evausel\" agentid=\"3015558\" agenttypeid=\"2\" corporationid=\"1000118\" divisionid=\"24\" level=\"1\" locationid=\"60011608\" locator=\"false\"/>\r\n    <row agent=\"Dutesoellan Lamedyn\" agentid=\"3015559\" agenttypeid=\"2\" corporationid=\"1000118\" divisionid=\"24\" level=\"1\" locationid=\"60011611\" locator=\"false\"/>\r\n    <row agent=\"Aurme Letta\" agentid=\"3015560\" agenttypeid=\"2\" corporationid=\"1000118\" divisionid=\"24\" level=\"1\" locationid=\"60011608\" locator=\"false\"/>\r\n    <row agent=\"Ilcke Malenyn\" agentid=\"3015561\" agenttypeid=\"2\" corporationid=\"1000118\" divisionid=\"24\" level=\"3\" locationid=\"60011611\" locator=\"false\"/>\r\n    <row agent=\"Astillelie Plert\" agentid=\"3015562\" agenttypeid=\"2\" corporationid=\"1000118\" divisionid=\"24\" level=\"2\" locationid=\"60011608\" locator=\"false\"/>\r\n    <row agent=\"Emmelan Tumane\" agentid=\"3015563\" agenttypeid=\"2\" corporationid=\"1000118\" divisionid=\"24\" level=\"1\" locationid=\"60011608\" locator=\"false\"/>\r\n    <row agent=\"Maviryne Adent\" agentid=\"3015564\" agenttypeid=\"2\" corporationid=\"1000118\" divisionid=\"24\" level=\"2\" locationid=\"60011608\" locator=\"false\"/>\r\n    <row agent=\"Muestone Veille\" agentid=\"3015565\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"3\" locationid=\"60011731\" locator=\"false\"/>\r\n    <row agent=\"Ormittonier Romene\" agentid=\"3015566\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"2\" locationid=\"60011653\" locator=\"false\"/>\r\n    <row agent=\"Veanne Tarsenouve\" agentid=\"3015567\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"2\" locationid=\"60011671\" locator=\"false\"/>\r\n    <row agent=\"Erevon Ertau\" agentid=\"3015568\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"1\" locationid=\"60011686\" locator=\"false\"/>\r\n    <row agent=\"Doure Purlieu\" agentid=\"3015569\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"4\" locationid=\"60011671\" locator=\"false\"/>\r\n    <row agent=\"Auntges Frobyer\" agentid=\"3015570\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"3\" locationid=\"60011650\" locator=\"false\"/>\r\n    <row agent=\"Grananyve Lalfaerer\" agentid=\"3015571\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"1\" locationid=\"60011662\" locator=\"false\"/>\r\n    <row agent=\"Ommymmolie Saonevoonnis\" agentid=\"3015572\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"3\" locationid=\"60011662\" locator=\"false\"/>\r\n    <row agent=\"Claul Ardoroule\" agentid=\"3015573\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"1\" locationid=\"60011671\" locator=\"false\"/>\r\n    <row agent=\"Naille Asman\" agentid=\"3015574\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"1\" locationid=\"60011632\" locator=\"false\"/>\r\n    <row agent=\"Gaslelane Foun\" agentid=\"3015575\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"4\" locationid=\"60011701\" locator=\"false\"/>\r\n    <row agent=\"Auvent Hartscoene\" agentid=\"3015576\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"4\" locationid=\"60011626\" locator=\"false\"/>\r\n    <row agent=\"Telnau Crucarne\" agentid=\"3015577\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"2\" locationid=\"60011629\" locator=\"false\"/>\r\n    <row agent=\"Oruse Abenckbraert\" agentid=\"3015578\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"3\" locationid=\"60011629\" locator=\"false\"/>\r\n    <row agent=\"Osmomonne Virettan\" agentid=\"3015579\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"3\" locationid=\"60011635\" locator=\"false\"/>\r\n    <row agent=\"Cochinchalle Alonaert\" agentid=\"3015580\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"4\" locationid=\"60011701\" locator=\"false\"/>\r\n    <row agent=\"Lomferent Nottarrelle\" agentid=\"3015581\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"1\" locationid=\"60011722\" locator=\"false\"/>\r\n    <row agent=\"Waraison Annaclaert\" agentid=\"3015582\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"1\" locationid=\"60011614\" locator=\"false\"/>\r\n    <row agent=\"Carcanaques Estavoire\" agentid=\"3015583\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"3\" locationid=\"60011626\" locator=\"false\"/>\r\n    <row agent=\"Tent Ranarceque\" agentid=\"3015584\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"2\" locationid=\"60011695\" locator=\"false\"/>\r\n    <row agent=\"Azotte Bylbactelle\" agentid=\"3015585\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"2\" locationid=\"60011698\" locator=\"false\"/>\r\n    <row agent=\"Preer Hullaert\" agentid=\"3015586\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"2\" locationid=\"60011626\" locator=\"false\"/>\r\n    <row agent=\"Azer Condylavier\" agentid=\"3015587\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"2\" locationid=\"60011719\" locator=\"false\"/>\r\n    <row agent=\"Yvempont Jecenare\" agentid=\"3015588\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"4\" locationid=\"60011728\" locator=\"false\"/>\r\n    <row agent=\"Prot Lerveine\" agentid=\"3015589\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"2\" locationid=\"60011683\" locator=\"false\"/>\r\n    <row agent=\"Wellivel Goorgherecal\" agentid=\"3015590\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"24\" level=\"2\" locationid=\"60011614\" locator=\"false\"/>\r\n    <row agent=\"Moutte Movexis\" agentid=\"3015591\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"2\" locationid=\"60011704\" locator=\"false\"/>\r\n    <row agent=\"Maunc Alesier\" agentid=\"3015592\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"1\" locationid=\"60011725\" locator=\"false\"/>\r\n    <row agent=\"Rhivrarene Descenalle\" agentid=\"3015593\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"2\" locationid=\"60011626\" locator=\"false\"/>\r\n    <row agent=\"Alomand Emmelan\" agentid=\"3015594\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"2\" locationid=\"60011713\" locator=\"false\"/>\r\n    <row agent=\"Stalocline Fotasel\" agentid=\"3015595\" agenttypeid=\"2\" corporationid=\"1000119\" divisionid=\"22\" level=\"3\" locationid=\"60011701\" locator=\"false\"/>\r\n    <row agent=\"Xalotte Agaulaina\" agentid=\"3015596\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"22\" level=\"3\" locationid=\"60011902\" locator=\"false\"/>\r\n    <row agent=\"Aussa Colare\" agentid=\"3015597\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"22\" level=\"1\" locationid=\"60011902\" locator=\"false\"/>\r\n    <row agent=\"Erizette Modolelie\" agentid=\"3015598\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"22\" level=\"1\" locationid=\"60011854\" locator=\"false\"/>\r\n    <row agent=\"Arminelle Vroorde\" agentid=\"3015599\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"22\" level=\"1\" locationid=\"60011905\" locator=\"false\"/>\r\n    <row agent=\"Anrent Aurlaerdt\" agentid=\"3015600\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"22\" level=\"1\" locationid=\"60011788\" locator=\"false\"/>\r\n    <row agent=\"Dultiver Doos\" agentid=\"3015601\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"22\" level=\"4\" locationid=\"60011773\" locator=\"false\"/>\r\n    <row agent=\"Baspament Scheletune\" agentid=\"3015602\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"22\" level=\"2\" locationid=\"60011812\" locator=\"false\"/>\r\n    <row agent=\"Derretirout Sannalle\" agentid=\"3015603\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"22\" level=\"3\" locationid=\"60011905\" locator=\"false\"/>\r\n    <row agent=\"Voie Avaymet\" agentid=\"3015604\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"22\" level=\"3\" locationid=\"60011905\" locator=\"false\"/>\r\n    <row agent=\"Charinalle Sauntrene\" agentid=\"3015605\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"22\" level=\"1\" locationid=\"60011902\" locator=\"false\"/>\r\n    <row agent=\"Yvacain Sirmiene\" agentid=\"3015606\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"22\" level=\"1\" locationid=\"60011812\" locator=\"false\"/>\r\n    <row agent=\"Aystret Ansolotte\" agentid=\"3015607\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011770\" locator=\"false\"/>\r\n    <row agent=\"Ancia Sere\" agentid=\"3015608\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011791\" locator=\"false\"/>\r\n    <row agent=\"Metserel Aungvie\" agentid=\"3015609\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011773\" locator=\"false\"/>\r\n    <row agent=\"Zoelounore Arnanwaert\" agentid=\"3015610\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011740\" locator=\"false\"/>\r\n    <row agent=\"Vessiment Bommenlieu\" agentid=\"3015611\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011893\" locator=\"false\"/>\r\n    <row agent=\"Oetou Broin\" agentid=\"3015612\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011767\" locator=\"false\"/>\r\n    <row agent=\"Muene Larloolis\" agentid=\"3015613\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011815\" locator=\"false\"/>\r\n    <row agent=\"Cyrabier Aicer\" agentid=\"3015614\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"3\" locationid=\"60011869\" locator=\"false\"/>\r\n    <row agent=\"Chaffryriene Orvollaert\" agentid=\"3015615\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"3\" locationid=\"60011770\" locator=\"false\"/>\r\n    <row agent=\"Hecharokel Dolondtherver\" agentid=\"3015616\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"3\" locationid=\"60011788\" locator=\"false\"/>\r\n    <row agent=\"Bryn Deget\" agentid=\"3015617\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"3\" locationid=\"60011821\" locator=\"false\"/>\r\n    <row agent=\"Daut Elleilette\" agentid=\"3015618\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"3\" locationid=\"60011809\" locator=\"false\"/>\r\n    <row agent=\"Albavieres Caictenne\" agentid=\"3015619\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011782\" locator=\"false\"/>\r\n    <row agent=\"Andrille Egledent\" agentid=\"3015620\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"3\" locationid=\"60011803\" locator=\"false\"/>\r\n    <row agent=\"Malillier Epied\" agentid=\"3015621\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011872\" locator=\"false\"/>\r\n    <row agent=\"Eusschon Esoutte\" agentid=\"3015622\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011788\" locator=\"false\"/>\r\n    <row agent=\"Monarique Vysscheles\" agentid=\"3015623\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011857\" locator=\"false\"/>\r\n    <row agent=\"Kueres Malayme\" agentid=\"3015624\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"4\" locationid=\"60011872\" locator=\"false\"/>\r\n    <row agent=\"Balrille Plavers\" agentid=\"3015625\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011911\" locator=\"false\"/>\r\n    <row agent=\"Mallore Banchette\" agentid=\"3015626\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"3\" locationid=\"60011815\" locator=\"false\"/>\r\n    <row agent=\"Mau Aginnault\" agentid=\"3015627\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011830\" locator=\"false\"/>\r\n    <row agent=\"Menlieu Priessche\" agentid=\"3015628\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"3\" locationid=\"60011908\" locator=\"false\"/>\r\n    <row agent=\"Moolis Aulbie\" agentid=\"3015629\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"4\" locationid=\"60011848\" locator=\"false\"/>\r\n    <row agent=\"Algana Pongheronne\" agentid=\"3015630\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011782\" locator=\"false\"/>\r\n    <row agent=\"Jeanne Molilerin\" agentid=\"3015631\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011833\" locator=\"false\"/>\r\n    <row agent=\"Albarer Vantvlyssier\" agentid=\"3015632\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011911\" locator=\"false\"/>\r\n    <row agent=\"Ellomon Audates\" agentid=\"3015633\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011785\" locator=\"false\"/>\r\n    <row agent=\"Cloellire Moncitant\" agentid=\"3015634\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011794\" locator=\"false\"/>\r\n    <row agent=\"Duvence Oche\" agentid=\"3015635\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011830\" locator=\"false\"/>\r\n    <row agent=\"Sonnon Acanitte\" agentid=\"3015636\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011779\" locator=\"false\"/>\r\n    <row agent=\"Isoryn Adraille\" agentid=\"3015637\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011821\" locator=\"false\"/>\r\n    <row agent=\"Ance Achaber\" agentid=\"3015638\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011905\" locator=\"false\"/>\r\n    <row agent=\"Molotye Alpancourt\" agentid=\"3015639\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011905\" locator=\"false\"/>\r\n    <row agent=\"Brumelasse Alanalle\" agentid=\"3015640\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011776\" locator=\"false\"/>\r\n    <row agent=\"Adune Melubier\" agentid=\"3015641\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"1\" locationid=\"60011980\" locator=\"false\"/>\r\n    <row agent=\"Flayen Eus\" agentid=\"3015642\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"3\" locationid=\"60011989\" locator=\"false\"/>\r\n    <row agent=\"Aille Ellis\" agentid=\"3015643\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"2\" locationid=\"60011935\" locator=\"false\"/>\r\n    <row agent=\"Leckerot Gottins\" agentid=\"3015644\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"2\" locationid=\"60011941\" locator=\"false\"/>\r\n    <row agent=\"Buitasotte Dire\" agentid=\"3015645\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"1\" locationid=\"60011992\" locator=\"false\"/>\r\n    <row agent=\"Chaland Coleeres\" agentid=\"3015646\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"3\" locationid=\"60011995\" locator=\"false\"/>\r\n    <row agent=\"Huernella Arbattolie\" agentid=\"3015648\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"3\" locationid=\"60011941\" locator=\"false\"/>\r\n    <row agent=\"Boinget Fettere\" agentid=\"3015649\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"3\" locationid=\"60011986\" locator=\"false\"/>\r\n    <row agent=\"Sivanne Fluerarard\" agentid=\"3015650\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"2\" locationid=\"60011917\" locator=\"false\"/>\r\n    <row agent=\"Witte Sorgard\" agentid=\"3015651\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"3\" locationid=\"60011953\" locator=\"false\"/>\r\n    <row agent=\"Thomatayle Groon\" agentid=\"3015652\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"2\" locationid=\"60011977\" locator=\"false\"/>\r\n    <row agent=\"Aurtie Ogidel\" agentid=\"3015653\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"3\" locationid=\"60011998\" locator=\"false\"/>\r\n    <row agent=\"Thererie Kelbene\" agentid=\"3015654\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"2\" locationid=\"60011935\" locator=\"false\"/>\r\n    <row agent=\"Lersoctier Albier\" agentid=\"3015655\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"1\" locationid=\"60011932\" locator=\"false\"/>\r\n    <row agent=\"Albyne Odedier\" agentid=\"3015656\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"1\" locationid=\"60012106\" locator=\"false\"/>\r\n    <row agent=\"Peleron Eurmon\" agentid=\"3015657\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"1\" locationid=\"60012055\" locator=\"false\"/>\r\n    <row agent=\"Mairanard Hetymmon\" agentid=\"3015658\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"4\" locationid=\"60012079\" locator=\"false\"/>\r\n    <row agent=\"Angyneve Dercavell\" agentid=\"3015659\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"4\" locationid=\"60012028\" locator=\"false\"/>\r\n    <row agent=\"Vroennureene Cleyn\" agentid=\"3015660\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"1\" locationid=\"60012100\" locator=\"false\"/>\r\n    <row agent=\"Jullynes Romene\" agentid=\"3015661\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"4\" locationid=\"60012034\" locator=\"false\"/>\r\n    <row agent=\"Conchelle Creau\" agentid=\"3015662\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"3\" locationid=\"60012028\" locator=\"false\"/>\r\n    <row agent=\"Amboisande Alloviene\" agentid=\"3015663\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"2\" locationid=\"60012037\" locator=\"false\"/>\r\n    <row agent=\"Auvrillene Chanottain\" agentid=\"3015664\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"3\" locationid=\"60012022\" locator=\"false\"/>\r\n    <row agent=\"Perkelins Adritelle\" agentid=\"3015665\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"1\" locationid=\"60012088\" locator=\"false\"/>\r\n    <row agent=\"Sermisner Anzalolie\" agentid=\"3015666\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"2\" locationid=\"60012058\" locator=\"false\"/>\r\n    <row agent=\"Parment Jeart\" agentid=\"3015667\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"3\" locationid=\"60012058\" locator=\"false\"/>\r\n    <row agent=\"Dealake Ancerard\" agentid=\"3015668\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"3\" locationid=\"60012040\" locator=\"false\"/>\r\n    <row agent=\"Bonc Alais\" agentid=\"3015669\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"3\" locationid=\"60012040\" locator=\"false\"/>\r\n    <row agent=\"Dharraluelle Artenac\" agentid=\"3015670\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"3\" locationid=\"60012091\" locator=\"false\"/>\r\n    <row agent=\"Sonnibel Aulloi\" agentid=\"3015671\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"4\" locationid=\"60012079\" locator=\"false\"/>\r\n    <row agent=\"Sisserune Pourpes\" agentid=\"3015672\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"4\" locationid=\"60012034\" locator=\"false\"/>\r\n    <row agent=\"Vrierbins Archevieves\" agentid=\"3015673\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"2\" locationid=\"60012031\" locator=\"false\"/>\r\n    <row agent=\"Brelette Broulluse\" agentid=\"3015674\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"1\" locationid=\"60012076\" locator=\"false\"/>\r\n    <row agent=\"Brourmart Aubolia\" agentid=\"3015675\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"2\" locationid=\"60012052\" locator=\"false\"/>\r\n    <row agent=\"Attey Auberulle\" agentid=\"3015676\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"2\" locationid=\"60012112\" locator=\"false\"/>\r\n    <row agent=\"Rolettes Malalane\" agentid=\"3015677\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"3\" locationid=\"60012013\" locator=\"false\"/>\r\n    <row agent=\"Croicavent Municlune\" agentid=\"3015678\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"2\" locationid=\"60012007\" locator=\"false\"/>\r\n    <row agent=\"Albettare Changeceptan\" agentid=\"3015679\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"2\" locationid=\"60012082\" locator=\"false\"/>\r\n    <row agent=\"Ciner Oitou\" agentid=\"3015680\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"2\" locationid=\"60012058\" locator=\"false\"/>\r\n    <row agent=\"Ammand Atladotte\" agentid=\"3015681\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"3\" locationid=\"60012121\" locator=\"false\"/>\r\n    <row agent=\"Capmadantin Chrirena\" agentid=\"3015682\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"3\" locationid=\"60012040\" locator=\"false\"/>\r\n    <row agent=\"Ylle Aurle\" agentid=\"3015683\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"4\" locationid=\"60012097\" locator=\"false\"/>\r\n    <row agent=\"Orlanore Duwalle\" agentid=\"3015684\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"4\" locationid=\"60012055\" locator=\"false\"/>\r\n    <row agent=\"Algarenne Rildraret\" agentid=\"3015685\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"1\" locationid=\"60012097\" locator=\"false\"/>\r\n    <row agent=\"Louistorand Oinon\" agentid=\"3015686\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"3\" locationid=\"60012085\" locator=\"false\"/>\r\n    <row agent=\"Fettycet Gorsievose\" agentid=\"3015687\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"1\" locationid=\"60012016\" locator=\"false\"/>\r\n    <row agent=\"Madonushi Huutsogaitoh\" agentid=\"3015688\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"1\" locationid=\"60012163\" locator=\"false\"/>\r\n    <row agent=\"Fitsyoo Valou\" agentid=\"3015689\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"2\" locationid=\"60012151\" locator=\"false\"/>\r\n    <row agent=\"Arelstulda Hendenher\" agentid=\"3015690\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"3\" locationid=\"60012172\" locator=\"false\"/>\r\n    <row agent=\"Kesheda Geras\" agentid=\"3015691\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"1\" locationid=\"60012127\" locator=\"false\"/>\r\n    <row agent=\"Maganen Uuta\" agentid=\"3015692\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"2\" locationid=\"60012169\" locator=\"false\"/>\r\n    <row agent=\"Viukamaa Ansalen\" agentid=\"3015693\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"4\" locationid=\"60012223\" locator=\"false\"/>\r\n    <row agent=\"Rukehnad Bitat\" agentid=\"3015694\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"3\" locationid=\"60012244\" locator=\"false\"/>\r\n    <row agent=\"Yon Ketiruma\" agentid=\"3015695\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"1\" locationid=\"60012220\" locator=\"false\"/>\r\n    <row agent=\"Tuvuo Mallonen\" agentid=\"3015696\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"1\" locationid=\"60012235\" locator=\"false\"/>\r\n    <row agent=\"Alas Oshal\" agentid=\"3015697\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"3\" locationid=\"60012241\" locator=\"false\"/>\r\n    <row agent=\"Alcon Bamerene\" agentid=\"3015698\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"3\" locationid=\"60012202\" locator=\"false\"/>\r\n    <row agent=\"Kampamon Oluneto\" agentid=\"3015699\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"3\" locationid=\"60012241\" locator=\"false\"/>\r\n    <row agent=\"Ikudur Ludefaelfar\" agentid=\"3015700\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"1\" locationid=\"60012232\" locator=\"false\"/>\r\n    <row agent=\"Jusanes Araletet\" agentid=\"3015701\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"1\" locationid=\"60012196\" locator=\"false\"/>\r\n    <row agent=\"Ossur Eradald\" agentid=\"3015702\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"2\" locationid=\"60012193\" locator=\"false\"/>\r\n    <row agent=\"Kakkurala Okio\" agentid=\"3015703\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"3\" locationid=\"60012199\" locator=\"false\"/>\r\n    <row agent=\"Givelle Berille\" agentid=\"3015704\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"3\" locationid=\"60012199\" locator=\"false\"/>\r\n    <row agent=\"Bakshma Deka\" agentid=\"3015705\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"3\" locationid=\"60012202\" locator=\"false\"/>\r\n    <row agent=\"Wabertchaf Fusunir\" agentid=\"3015706\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"3\" locationid=\"60012205\" locator=\"false\"/>\r\n    <row agent=\"Saas Kewiri\" agentid=\"3015707\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"3\" locationid=\"60012199\" locator=\"false\"/>\r\n    <row agent=\"Vivumar Elargand\" agentid=\"3015708\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"1\" locationid=\"60012508\" locator=\"false\"/>\r\n    <row agent=\"Petsolen Oksarkovuo\" agentid=\"3015709\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"2\" locationid=\"60012436\" locator=\"false\"/>\r\n    <row agent=\"Mentide Oralstur\" agentid=\"3015710\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"3\" locationid=\"60012451\" locator=\"false\"/>\r\n    <row agent=\"Arkur Perida\" agentid=\"3015711\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"1\" locationid=\"60012520\" locator=\"false\"/>\r\n    <row agent=\"Puellin Jeanne\" agentid=\"3015712\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"1\" locationid=\"60012343\" locator=\"false\"/>\r\n    <row agent=\"Hewydgand Toddauden\" agentid=\"3015713\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"3\" locationid=\"60012277\" locator=\"false\"/>\r\n    <row agent=\"Vonni Laasatainen\" agentid=\"3015714\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"2\" locationid=\"60012298\" locator=\"false\"/>\r\n    <row agent=\"Eudene Minx\" agentid=\"3015715\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"1\" locationid=\"60012451\" locator=\"false\"/>\r\n    <row agent=\"Eurce Armemner\" agentid=\"3015716\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"3\" locationid=\"60012301\" locator=\"false\"/>\r\n    <row agent=\"Reliari Loustan\" agentid=\"3015717\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"3\" locationid=\"60012334\" locator=\"false\"/>\r\n    <row agent=\"Bessoteaux Lennanlot\" agentid=\"3015718\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"3\" locationid=\"60012280\" locator=\"false\"/>\r\n    <row agent=\"Ergnyur Gregirder\" agentid=\"3015719\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"2\" locationid=\"60012385\" locator=\"false\"/>\r\n    <row agent=\"Nakken Ukas\" agentid=\"3015720\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"2\" locationid=\"60012271\" locator=\"false\"/>\r\n    <row agent=\"Tien Aideken\" agentid=\"3015721\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"2\" locationid=\"60012301\" locator=\"false\"/>\r\n    <row agent=\"Komora Ursineras\" agentid=\"3015722\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"2\" locationid=\"60012334\" locator=\"false\"/>\r\n    <row agent=\"Ahimachi Sunamo\" agentid=\"3015723\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"2\" locationid=\"60012463\" locator=\"false\"/>\r\n    <row agent=\"Anareri Acon\" agentid=\"3015724\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"1\" locationid=\"60012256\" locator=\"false\"/>\r\n    <row agent=\"Votie Ueti\" agentid=\"3015725\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"3\" locationid=\"60012292\" locator=\"false\"/>\r\n    <row agent=\"Kaaneto Kuokkaa\" agentid=\"3015726\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"3\" locationid=\"60012346\" locator=\"false\"/>\r\n    <row agent=\"Asi Ahtainio\" agentid=\"3015727\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"3\" locationid=\"60012397\" locator=\"false\"/>\r\n    <row agent=\"Rasazih Dellessam\" agentid=\"3015728\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"2\" locationid=\"60012382\" locator=\"false\"/>\r\n    <row agent=\"Sunamo Ijaris\" agentid=\"3015729\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"3\" locationid=\"60012454\" locator=\"false\"/>\r\n    <row agent=\"Ambellite Archoner\" agentid=\"3015730\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"3\" locationid=\"60012466\" locator=\"false\"/>\r\n    <row agent=\"Rio Korkukka\" agentid=\"3015731\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"1\" locationid=\"60012403\" locator=\"false\"/>\r\n    <row agent=\"Marlebod Ofeden\" agentid=\"3015732\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"4\" locationid=\"60012352\" locator=\"false\"/>\r\n    <row agent=\"Ardasta Taredi\" agentid=\"3015734\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"2\" locationid=\"60012376\" locator=\"false\"/>\r\n    <row agent=\"Sottar Karbera\" agentid=\"3015735\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"1\" locationid=\"60012376\" locator=\"false\"/>\r\n    <row agent=\"Beddelver Afur\" agentid=\"3015736\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"1\" locationid=\"60012295\" locator=\"false\"/>\r\n    <row agent=\"Aunou Jareliellan\" agentid=\"3015737\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"3\" locationid=\"60012274\" locator=\"false\"/>\r\n    <row agent=\"Alpere Scael\" agentid=\"3015738\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"1\" locationid=\"60012466\" locator=\"false\"/>\r\n    <row agent=\"Toipinen Kakakela\" agentid=\"3015739\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"2\" locationid=\"60012283\" locator=\"false\"/>\r\n    <row agent=\"Auntges Yvore\" agentid=\"3015740\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"2\" locationid=\"60012334\" locator=\"false\"/>\r\n    <row agent=\"Chozal Kenamben\" agentid=\"3015741\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"2\" locationid=\"60012334\" locator=\"false\"/>\r\n    <row agent=\"Psazi Varehnema\" agentid=\"3015742\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"3\" locationid=\"60012403\" locator=\"false\"/>\r\n    <row agent=\"Obuchi Shikamaa\" agentid=\"3015743\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"22\" level=\"4\" locationid=\"60012505\" locator=\"false\"/>\r\n    <row agent=\"Eastig Gokottar\" agentid=\"3015744\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012502\" locator=\"false\"/>\r\n    <row agent=\"Dalanard Genundrehtar\" agentid=\"3015745\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012451\" locator=\"false\"/>\r\n    <row agent=\"Huoya Tashotsu\" agentid=\"3015746\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012505\" locator=\"false\"/>\r\n    <row agent=\"Andanki Miyufah\" agentid=\"3015747\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012286\" locator=\"false\"/>\r\n    <row agent=\"Virkkanen Tunen\" agentid=\"3015748\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"22\" level=\"3\" locationid=\"60012430\" locator=\"false\"/>\r\n    <row agent=\"Tuonainen Katagas\" agentid=\"3015749\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"22\" level=\"3\" locationid=\"60012271\" locator=\"false\"/>\r\n    <row agent=\"Manjani Abed\" agentid=\"3015750\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012286\" locator=\"false\"/>\r\n    <row agent=\"Cinnon Istault\" agentid=\"3015751\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012412\" locator=\"false\"/>\r\n    <row agent=\"Irkafan Sah\" agentid=\"3015752\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"22\" level=\"2\" locationid=\"60012412\" locator=\"false\"/>\r\n    <row agent=\"Osse Oldee\" agentid=\"3015753\" agenttypeid=\"2\" corporationid=\"1000126\" divisionid=\"24\" level=\"1\" locationid=\"60012529\" locator=\"false\"/>\r\n    <row agent=\"Agal Joelebam\" agentid=\"3015754\" agenttypeid=\"2\" corporationid=\"1000126\" divisionid=\"24\" level=\"1\" locationid=\"60012529\" locator=\"false\"/>\r\n    <row agent=\"Oswik Alkwe\" agentid=\"3015755\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"1\" locationid=\"60012571\" locator=\"false\"/>\r\n    <row agent=\"Ermund Hargran\" agentid=\"3015756\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"2\" locationid=\"60012568\" locator=\"false\"/>\r\n    <row agent=\"Raveeva Astihr\" agentid=\"3015757\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"2\" locationid=\"60012559\" locator=\"false\"/>\r\n    <row agent=\"Seyel Vakirokiki\" agentid=\"3015758\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"2\" locationid=\"60012562\" locator=\"false\"/>\r\n    <row agent=\"Estamel Tharchon\" agentid=\"3015759\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"3\" locationid=\"60012559\" locator=\"false\"/>\r\n    <row agent=\"Elillan Audel\" agentid=\"3015760\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"1\" locationid=\"60012568\" locator=\"false\"/>\r\n    <row agent=\"Hieyora Nalvas\" agentid=\"3015761\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"1\" locationid=\"60012565\" locator=\"false\"/>\r\n    <row agent=\"Takoshada Ugai\" agentid=\"3015762\" agenttypeid=\"2\" corporationid=\"1000128\" divisionid=\"24\" level=\"2\" locationid=\"60012580\" locator=\"false\"/>\r\n    <row agent=\"Achasse Osmereure\" agentid=\"3015763\" agenttypeid=\"2\" corporationid=\"1000128\" divisionid=\"24\" level=\"1\" locationid=\"60012580\" locator=\"false\"/>\r\n    <row agent=\"Jaymamera Mayer\" agentid=\"3015764\" agenttypeid=\"2\" corporationid=\"1000128\" divisionid=\"24\" level=\"2\" locationid=\"60012580\" locator=\"false\"/>\r\n    <row agent=\"Hedledia Hrinz\" agentid=\"3015765\" agenttypeid=\"2\" corporationid=\"1000128\" divisionid=\"24\" level=\"2\" locationid=\"60012580\" locator=\"false\"/>\r\n    <row agent=\"Maittintes Espou\" agentid=\"3015766\" agenttypeid=\"2\" corporationid=\"1000128\" divisionid=\"24\" level=\"1\" locationid=\"60012580\" locator=\"false\"/>\r\n    <row agent=\"Jasolbold Adralkhan\" agentid=\"3015767\" agenttypeid=\"2\" corporationid=\"1000128\" divisionid=\"24\" level=\"2\" locationid=\"60012580\" locator=\"false\"/>\r\n    <row agent=\"Hjon Slurnerger\" agentid=\"3015768\" agenttypeid=\"2\" corporationid=\"1000129\" divisionid=\"24\" level=\"2\" locationid=\"60012583\" locator=\"false\"/>\r\n    <row agent=\"Nase Bekour\" agentid=\"3015769\" agenttypeid=\"2\" corporationid=\"1000129\" divisionid=\"24\" level=\"2\" locationid=\"60012586\" locator=\"false\"/>\r\n    <row agent=\"Golst Genituder\" agentid=\"3015770\" agenttypeid=\"2\" corporationid=\"1000129\" divisionid=\"24\" level=\"2\" locationid=\"60012592\" locator=\"false\"/>\r\n    <row agent=\"Agutigur Aetangur\" agentid=\"3015771\" agenttypeid=\"2\" corporationid=\"1000129\" divisionid=\"24\" level=\"2\" locationid=\"60012583\" locator=\"false\"/>\r\n    <row agent=\"Fehnabre Banamdaz\" agentid=\"3015772\" agenttypeid=\"2\" corporationid=\"1000129\" divisionid=\"24\" level=\"3\" locationid=\"60012589\" locator=\"false\"/>\r\n    <row agent=\"Yngveibad Askardald\" agentid=\"3015773\" agenttypeid=\"2\" corporationid=\"1000129\" divisionid=\"24\" level=\"2\" locationid=\"60012583\" locator=\"false\"/>\r\n    <row agent=\"Edgelken Onnam\" agentid=\"3015774\" agenttypeid=\"2\" corporationid=\"1000129\" divisionid=\"22\" level=\"2\" locationid=\"60012586\" locator=\"false\"/>\r\n    <row agent=\"Yarnen Haura\" agentid=\"3015775\" agenttypeid=\"2\" corporationid=\"1000129\" divisionid=\"22\" level=\"2\" locationid=\"60012586\" locator=\"false\"/>\r\n    <row agent=\"Ozino Okami\" agentid=\"3015776\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"3\" locationid=\"60012682\" locator=\"false\"/>\r\n    <row agent=\"Inanoon Lishkarrah\" agentid=\"3015777\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"2\" locationid=\"60012673\" locator=\"false\"/>\r\n    <row agent=\"Arviak Sasuk\" agentid=\"3015778\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012700\" locator=\"false\"/>\r\n    <row agent=\"Wirtale Ruelouvin\" agentid=\"3015779\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"3\" locationid=\"60012706\" locator=\"false\"/>\r\n    <row agent=\"Breild Efi\" agentid=\"3015780\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"3\" locationid=\"60012601\" locator=\"false\"/>\r\n    <row agent=\"Upas Raisairos\" agentid=\"3015781\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"3\" locationid=\"60012601\" locator=\"false\"/>\r\n    <row agent=\"Zhoun Shadia\" agentid=\"3015782\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012664\" locator=\"false\"/>\r\n    <row agent=\"Daoullon Thorweselle\" agentid=\"3015783\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"2\" locationid=\"60012595\" locator=\"false\"/>\r\n    <row agent=\"Pourpes Andonore\" agentid=\"3015784\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"3\" locationid=\"60012646\" locator=\"false\"/>\r\n    <row agent=\"Amiksunta Ronkukoren\" agentid=\"3015785\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"1\" locationid=\"60012595\" locator=\"false\"/>\r\n    <row agent=\"Kaitra Etalaid\" agentid=\"3015786\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"1\" locationid=\"60012637\" locator=\"false\"/>\r\n    <row agent=\"Rulie Isoryn\" agentid=\"3015787\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"1\" locationid=\"60012670\" locator=\"false\"/>\r\n    <row agent=\"Ongvia Caun\" agentid=\"3015788\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"2\" locationid=\"60012637\" locator=\"false\"/>\r\n    <row agent=\"Elittive Alillere\" agentid=\"3015789\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"1\" locationid=\"60012646\" locator=\"false\"/>\r\n    <row agent=\"Masarq Itas\" agentid=\"3015790\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"1\" locationid=\"60012595\" locator=\"false\"/>\r\n    <row agent=\"Kindahah Rand\" agentid=\"3015791\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"1\" locationid=\"60012595\" locator=\"false\"/>\r\n    <row agent=\"Brel Flores\" agentid=\"3015792\" agenttypeid=\"2\" corporationid=\"1000131\" divisionid=\"22\" level=\"3\" locationid=\"60012730\" locator=\"false\"/>\r\n    <row agent=\"Jehasar Laddira\" agentid=\"3015793\" agenttypeid=\"2\" corporationid=\"1000131\" divisionid=\"22\" level=\"2\" locationid=\"60012730\" locator=\"false\"/>\r\n    <row agent=\"Fatoo Sabasa\" agentid=\"3015794\" agenttypeid=\"2\" corporationid=\"1000131\" divisionid=\"22\" level=\"1\" locationid=\"60012730\" locator=\"false\"/>\r\n    <row agent=\"Svetestet Illa\" agentid=\"3015795\" agenttypeid=\"2\" corporationid=\"1000131\" divisionid=\"22\" level=\"2\" locationid=\"60012730\" locator=\"false\"/>\r\n    <row agent=\"Clamura Doona\" agentid=\"3015796\" agenttypeid=\"2\" corporationid=\"1000131\" divisionid=\"22\" level=\"2\" locationid=\"60012730\" locator=\"false\"/>\r\n    <row agent=\"Ishamon Edanata\" agentid=\"3015797\" agenttypeid=\"2\" corporationid=\"1000131\" divisionid=\"22\" level=\"1\" locationid=\"60012730\" locator=\"false\"/>\r\n    <row agent=\"Placx Bonneau\" agentid=\"3015798\" agenttypeid=\"2\" corporationid=\"1000131\" divisionid=\"22\" level=\"4\" locationid=\"60012730\" locator=\"false\"/>\r\n    <row agent=\"Beflur Olosi\" agentid=\"3015799\" agenttypeid=\"2\" corporationid=\"1000131\" divisionid=\"22\" level=\"2\" locationid=\"60012733\" locator=\"false\"/>\r\n    <row agent=\"Akada Jukkallio\" agentid=\"3015800\" agenttypeid=\"2\" corporationid=\"1000131\" divisionid=\"22\" level=\"2\" locationid=\"60012733\" locator=\"false\"/>\r\n    <row agent=\"Kajus Hadan\" agentid=\"3015801\" agenttypeid=\"2\" corporationid=\"1000131\" divisionid=\"22\" level=\"3\" locationid=\"60012730\" locator=\"false\"/>\r\n    <row agent=\"Lihkenen Erkkanen\" agentid=\"3015802\" agenttypeid=\"2\" corporationid=\"1000131\" divisionid=\"22\" level=\"1\" locationid=\"60012733\" locator=\"false\"/>\r\n    <row agent=\"Chalir Jasson\" agentid=\"3015803\" agenttypeid=\"2\" corporationid=\"1000132\" divisionid=\"22\" level=\"3\" locationid=\"60012739\" locator=\"false\"/>\r\n    <row agent=\"Karvaken Tantari\" agentid=\"3015804\" agenttypeid=\"2\" corporationid=\"1000132\" divisionid=\"22\" level=\"3\" locationid=\"60012736\" locator=\"false\"/>\r\n    <row agent=\"Komala Arinta\" agentid=\"3015805\" agenttypeid=\"2\" corporationid=\"1000132\" divisionid=\"22\" level=\"2\" locationid=\"60012736\" locator=\"false\"/>\r\n    <row agent=\"Koskanaiken Airai\" agentid=\"3015806\" agenttypeid=\"2\" corporationid=\"1000132\" divisionid=\"24\" level=\"1\" locationid=\"60012739\" locator=\"false\"/>\r\n    <row agent=\"Rayla Netho\" agentid=\"3015807\" agenttypeid=\"2\" corporationid=\"1000132\" divisionid=\"24\" level=\"2\" locationid=\"60012736\" locator=\"false\"/>\r\n    <row agent=\"Tololf Golmuald\" agentid=\"3015808\" agenttypeid=\"2\" corporationid=\"1000132\" divisionid=\"24\" level=\"2\" locationid=\"60012736\" locator=\"false\"/>\r\n    <row agent=\"Almulf Retmeier\" agentid=\"3015809\" agenttypeid=\"2\" corporationid=\"1000132\" divisionid=\"22\" level=\"3\" locationid=\"60012739\" locator=\"false\"/>\r\n    <row agent=\"Sart Ateine\" agentid=\"3015810\" agenttypeid=\"2\" corporationid=\"1000132\" divisionid=\"22\" level=\"1\" locationid=\"60012736\" locator=\"false\"/>\r\n    <row agent=\"Misaba Nunema\" agentid=\"3015811\" agenttypeid=\"2\" corporationid=\"1000132\" divisionid=\"24\" level=\"2\" locationid=\"60012736\" locator=\"false\"/>\r\n    <row agent=\"Estanoiret Heyvelore\" agentid=\"3015812\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"24\" level=\"3\" locationid=\"60012784\" locator=\"false\"/>\r\n    <row agent=\"Bedeltran Orte\" agentid=\"3015813\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"23\" level=\"2\" locationid=\"60012787\" locator=\"false\"/>\r\n    <row agent=\"Ebelfur Uilgeldald\" agentid=\"3015814\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"23\" level=\"3\" locationid=\"60012787\" locator=\"false\"/>\r\n    <row agent=\"Endart Jasoo\" agentid=\"3015815\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"23\" level=\"1\" locationid=\"60012787\" locator=\"false\"/>\r\n    <row agent=\"Odhyri Suselgi\" agentid=\"3015816\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"23\" level=\"4\" locationid=\"60012787\" locator=\"false\"/>\r\n    <row agent=\"Saute Germelleur\" agentid=\"3015817\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"23\" level=\"1\" locationid=\"60012787\" locator=\"false\"/>\r\n    <row agent=\"Raysere Giant\" agentid=\"3015818\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"3\" locationid=\"60014951\" locator=\"false\"/>\r\n    <row agent=\"Ahtadaken Kies\" agentid=\"3015819\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"1\" locationid=\"60014945\" locator=\"false\"/>\r\n    <row agent=\"Tarmori Trabboul\" agentid=\"3015820\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"2\" locationid=\"60014952\" locator=\"false\"/>\r\n    <row agent=\"Hooran Davesghad\" agentid=\"3015821\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"2\" locationid=\"60014946\" locator=\"false\"/>\r\n    <row agent=\"Draclira Merlonne\" agentid=\"3015822\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"4\" locationid=\"60014944\" locator=\"false\"/>\r\n    <row agent=\"Tairei Namazoth\" agentid=\"3015823\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"3\" locationid=\"60014947\" locator=\"false\"/>\r\n    <row agent=\"Arikola Isegas\" agentid=\"3015824\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"2\" locationid=\"60014941\" locator=\"false\"/>\r\n    <row agent=\"Ezion Rochah\" agentid=\"3015825\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"1\" locationid=\"60014949\" locator=\"false\"/>\r\n    <row agent=\"Liaret Gallareue\" agentid=\"3015826\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"2\" locationid=\"60014950\" locator=\"false\"/>\r\n    <row agent=\"Fetz Atlede\" agentid=\"3015827\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"22\" level=\"3\" locationid=\"60014940\" locator=\"false\"/>\r\n    <row agent=\"Taimere Demaunier\" agentid=\"3015828\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"24\" level=\"1\" locationid=\"60012832\" locator=\"false\"/>\r\n    <row agent=\"Streiber Guggonel\" agentid=\"3015829\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"24\" level=\"1\" locationid=\"60012841\" locator=\"false\"/>\r\n    <row agent=\"Flodbralron Svagirger\" agentid=\"3015830\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"24\" level=\"3\" locationid=\"60012823\" locator=\"false\"/>\r\n    <row agent=\"Kamos Patu\" agentid=\"3015831\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"24\" level=\"1\" locationid=\"60012823\" locator=\"false\"/>\r\n    <row agent=\"Amaurin Abamier\" agentid=\"3015832\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"24\" level=\"2\" locationid=\"60012859\" locator=\"false\"/>\r\n    <row agent=\"Tuvan Orth\" agentid=\"3015833\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"24\" level=\"4\" locationid=\"60012799\" locator=\"false\"/>\r\n    <row agent=\"Uala Saevenur\" agentid=\"3015834\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"24\" level=\"2\" locationid=\"60012850\" locator=\"false\"/>\r\n    <row agent=\"Lahti Kinachi\" agentid=\"3015835\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"24\" level=\"1\" locationid=\"60012808\" locator=\"false\"/>\r\n    <row agent=\"Doun Mantenault\" agentid=\"3015836\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"24\" level=\"1\" locationid=\"60012850\" locator=\"false\"/>\r\n    <row agent=\"Senota Liurtonen\" agentid=\"3015837\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"22\" level=\"1\" locationid=\"60012826\" locator=\"false\"/>\r\n    <row agent=\"Hussiyi Andir\" agentid=\"3015838\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"22\" level=\"2\" locationid=\"60012856\" locator=\"false\"/>\r\n    <row agent=\"Laliane Amamare\" agentid=\"3015839\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"22\" level=\"3\" locationid=\"60012817\" locator=\"false\"/>\r\n    <row agent=\"Ippatoh Kawakura\" agentid=\"3015840\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"22\" level=\"2\" locationid=\"60012832\" locator=\"false\"/>\r\n    <row agent=\"Egomo Murmanen\" agentid=\"3015841\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"22\" level=\"4\" locationid=\"60012844\" locator=\"false\"/>\r\n    <row agent=\"Heirt Argand\" agentid=\"3015842\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"22\" level=\"2\" locationid=\"60012865\" locator=\"false\"/>\r\n    <row agent=\"Liafedifur Aelruken\" agentid=\"3015843\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"22\" level=\"3\" locationid=\"60012850\" locator=\"false\"/>\r\n    <row agent=\"Nuyonen Tomon\" agentid=\"3015844\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"3\" locationid=\"60012886\" locator=\"false\"/>\r\n    <row agent=\"Aunas Marthia\" agentid=\"3015845\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"1\" locationid=\"60012892\" locator=\"false\"/>\r\n    <row agent=\"Haredolf Engilund\" agentid=\"3015846\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"3\" locationid=\"60012895\" locator=\"false\"/>\r\n    <row agent=\"Sidabula Javandri\" agentid=\"3015847\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"2\" locationid=\"60012901\" locator=\"false\"/>\r\n    <row agent=\"Gunonbjer Hagmulf\" agentid=\"3015848\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"2\" locationid=\"60012898\" locator=\"false\"/>\r\n    <row agent=\"Tiberge Hek\" agentid=\"3015849\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"2\" locationid=\"60012907\" locator=\"false\"/>\r\n    <row agent=\"Handagemi Ohinila\" agentid=\"3015850\" agenttypeid=\"2\" corporationid=\"1000137\" divisionid=\"24\" level=\"3\" locationid=\"60013024\" locator=\"false\"/>\r\n    <row agent=\"Banniskore Zabulugi\" agentid=\"3015851\" agenttypeid=\"2\" corporationid=\"1000137\" divisionid=\"24\" level=\"4\" locationid=\"60012946\" locator=\"false\"/>\r\n    <row agent=\"Venjanen Oittiken\" agentid=\"3015852\" agenttypeid=\"2\" corporationid=\"1000137\" divisionid=\"24\" level=\"2\" locationid=\"60012976\" locator=\"false\"/>\r\n    <row agent=\"Satsonen Okuka\" agentid=\"3015853\" agenttypeid=\"2\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60013003\" locator=\"false\"/>\r\n    <row agent=\"Shikkoken Onalila\" agentid=\"3015854\" agenttypeid=\"2\" corporationid=\"1000137\" divisionid=\"24\" level=\"2\" locationid=\"60012991\" locator=\"false\"/>\r\n    <row agent=\"Bostolie Misisal\" agentid=\"3015855\" agenttypeid=\"2\" corporationid=\"1000137\" divisionid=\"24\" level=\"2\" locationid=\"60012961\" locator=\"false\"/>\r\n    <row agent=\"Annaris Koniroma\" agentid=\"3015856\" agenttypeid=\"2\" corporationid=\"1000137\" divisionid=\"24\" level=\"3\" locationid=\"60012964\" locator=\"false\"/>\r\n    <row agent=\"Airshaz Lashkai\" agentid=\"3015857\" agenttypeid=\"2\" corporationid=\"1000137\" divisionid=\"24\" level=\"3\" locationid=\"60013042\" locator=\"false\"/>\r\n    <row agent=\"Ipeman Psarana\" agentid=\"3015858\" agenttypeid=\"2\" corporationid=\"1000137\" divisionid=\"24\" level=\"2\" locationid=\"60012922\" locator=\"false\"/>\r\n    <row agent=\"Anglonal Teyd\" agentid=\"3015859\" agenttypeid=\"2\" corporationid=\"1000137\" divisionid=\"24\" level=\"2\" locationid=\"60012940\" locator=\"false\"/>\r\n    <row agent=\"Tidooress Momohsa\" agentid=\"3015860\" agenttypeid=\"2\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60012988\" locator=\"false\"/>\r\n    <row agent=\"Adrey Chammery\" agentid=\"3015861\" agenttypeid=\"2\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60012952\" locator=\"false\"/>\r\n    <row agent=\"Oinistosen Somo\" agentid=\"3015862\" agenttypeid=\"2\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60013012\" locator=\"false\"/>\r\n    <row agent=\"Sazenoinnon Oede\" agentid=\"3015863\" agenttypeid=\"2\" corporationid=\"1000137\" divisionid=\"24\" level=\"2\" locationid=\"60012919\" locator=\"false\"/>\r\n    <row agent=\"Ponen Inaro\" agentid=\"3015864\" agenttypeid=\"2\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60013012\" locator=\"false\"/>\r\n    <row agent=\"Arnimer Eingard\" agentid=\"3015865\" agenttypeid=\"2\" corporationid=\"1000137\" divisionid=\"24\" level=\"2\" locationid=\"60012970\" locator=\"false\"/>\r\n    <row agent=\"Shitrunabu Airki\" agentid=\"3015866\" agenttypeid=\"2\" corporationid=\"1000137\" divisionid=\"24\" level=\"3\" locationid=\"60013048\" locator=\"false\"/>\r\n    <row agent=\"Padoona Aghmayan\" agentid=\"3015867\" agenttypeid=\"2\" corporationid=\"1000138\" divisionid=\"24\" level=\"1\" locationid=\"60013072\" locator=\"false\"/>\r\n    <row agent=\"Brurphenber Arbysalle\" agentid=\"3015868\" agenttypeid=\"2\" corporationid=\"1000139\" divisionid=\"22\" level=\"3\" locationid=\"60013075\" locator=\"false\"/>\r\n    <row agent=\"Vetira Kuon\" agentid=\"3015869\" agenttypeid=\"2\" corporationid=\"1000139\" divisionid=\"22\" level=\"2\" locationid=\"60013075\" locator=\"false\"/>\r\n    <row agent=\"Asood Baswika\" agentid=\"3015870\" agenttypeid=\"2\" corporationid=\"1000139\" divisionid=\"22\" level=\"3\" locationid=\"60013075\" locator=\"false\"/>\r\n    <row agent=\"Podemiene Romonlieu\" agentid=\"3015871\" agenttypeid=\"2\" corporationid=\"1000139\" divisionid=\"22\" level=\"1\" locationid=\"60013075\" locator=\"false\"/>\r\n    <row agent=\"Uemivolen Rautolen\" agentid=\"3015872\" agenttypeid=\"2\" corporationid=\"1000139\" divisionid=\"24\" level=\"4\" locationid=\"60013078\" locator=\"false\"/>\r\n    <row agent=\"Elahassen Jachi\" agentid=\"3015873\" agenttypeid=\"2\" corporationid=\"1000139\" divisionid=\"24\" level=\"2\" locationid=\"60013075\" locator=\"false\"/>\r\n    <row agent=\"Veraneque Dhormaert\" agentid=\"3015874\" agenttypeid=\"2\" corporationid=\"1000139\" divisionid=\"22\" level=\"2\" locationid=\"60013078\" locator=\"false\"/>\r\n    <row agent=\"Fatudeh Atanra\" agentid=\"3015875\" agenttypeid=\"2\" corporationid=\"1000139\" divisionid=\"22\" level=\"2\" locationid=\"60013078\" locator=\"false\"/>\r\n    <row agent=\"Exie Lavolires\" agentid=\"3015876\" agenttypeid=\"2\" corporationid=\"1000139\" divisionid=\"22\" level=\"3\" locationid=\"60013078\" locator=\"false\"/>\r\n    <row agent=\"Amlerik Aldori\" agentid=\"3015877\" agenttypeid=\"2\" corporationid=\"1000139\" divisionid=\"22\" level=\"3\" locationid=\"60013078\" locator=\"false\"/>\r\n    <row agent=\"Anit Baprada\" agentid=\"3015878\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"1\" locationid=\"60013126\" locator=\"false\"/>\r\n    <row agent=\"Sakiseta Natzilmer\" agentid=\"3015879\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"1\" locationid=\"60013249\" locator=\"false\"/>\r\n    <row agent=\"Putokka Kuon\" agentid=\"3015880\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"1\" locationid=\"60013102\" locator=\"false\"/>\r\n    <row agent=\"Idin Tondidur\" agentid=\"3015881\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"1\" locationid=\"60013156\" locator=\"false\"/>\r\n    <row agent=\"Prosensel Bubadairpes\" agentid=\"3015882\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"3\" locationid=\"60013147\" locator=\"false\"/>\r\n    <row agent=\"Kautsuo Onamon\" agentid=\"3015883\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"24\" level=\"2\" locationid=\"60013180\" locator=\"false\"/>\r\n    <row agent=\"Gettogur Elleinar\" agentid=\"3015884\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"24\" level=\"1\" locationid=\"60013204\" locator=\"false\"/>\r\n    <row agent=\"Vilinnon Endrue\" agentid=\"3015885\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"24\" level=\"1\" locationid=\"60013222\" locator=\"false\"/>\r\n    <row agent=\"Nartamoh Iaokih\" agentid=\"3015886\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"24\" level=\"3\" locationid=\"60013168\" locator=\"false\"/>\r\n    <row agent=\"Adaunel Malirscoure\" agentid=\"3015887\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"24\" level=\"2\" locationid=\"60013111\" locator=\"false\"/>\r\n    <row agent=\"Isuki Kutarola\" agentid=\"3015888\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"24\" level=\"3\" locationid=\"60013159\" locator=\"false\"/>\r\n    <row agent=\"Vaukko Lihken\" agentid=\"3015889\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"24\" level=\"4\" locationid=\"60013252\" locator=\"false\"/>\r\n    <row agent=\"Rormuksin Ardger\" agentid=\"3015890\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"24\" level=\"2\" locationid=\"60013147\" locator=\"false\"/>\r\n    <row agent=\"Bintema Medile\" agentid=\"3015891\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"24\" level=\"2\" locationid=\"60013120\" locator=\"false\"/>\r\n    <row agent=\"Fririndan Unze\" agentid=\"3015892\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"24\" level=\"3\" locationid=\"60013198\" locator=\"false\"/>\r\n    <row agent=\"Oledrik Redunels\" agentid=\"3015893\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"24\" level=\"3\" locationid=\"60013126\" locator=\"false\"/>\r\n    <row agent=\"Ehu Karjataimon\" agentid=\"3015894\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"24\" level=\"1\" locationid=\"60013183\" locator=\"false\"/>\r\n    <row agent=\"Garisa Ashafet\" agentid=\"3015895\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"24\" level=\"2\" locationid=\"60013198\" locator=\"false\"/>\r\n    <row agent=\"Oksisoinen Maskomon\" agentid=\"3015896\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"24\" level=\"2\" locationid=\"60013237\" locator=\"false\"/>\r\n    <row agent=\"Stagfer Bind\" agentid=\"3015897\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"24\" level=\"2\" locationid=\"60013120\" locator=\"false\"/>\r\n    <row agent=\"Uptigen Kronger\" agentid=\"3015898\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"24\" level=\"2\" locationid=\"60013087\" locator=\"false\"/>\r\n    <row agent=\"Aeda Iluin\" agentid=\"3015899\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"24\" level=\"1\" locationid=\"60013153\" locator=\"false\"/>\r\n    <row agent=\"Aihenken Moinolen\" agentid=\"3015900\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"24\" level=\"3\" locationid=\"60013105\" locator=\"false\"/>\r\n    <row agent=\"Ishatonpaa Rijokka\" agentid=\"3015901\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"24\" level=\"1\" locationid=\"60013102\" locator=\"false\"/>\r\n    <row agent=\"Lo Hus\" agentid=\"3015902\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013114\" locator=\"false\"/>\r\n    <row agent=\"Sitsudan Yartenaima\" agentid=\"3015903\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013087\" locator=\"false\"/>\r\n    <row agent=\"Jineas Hilela\" agentid=\"3015904\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"3\" locationid=\"60013087\" locator=\"false\"/>\r\n    <row agent=\"Bjoravid Esbrirana\" agentid=\"3015905\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"1\" locationid=\"60013228\" locator=\"false\"/>\r\n    <row agent=\"Kartaka Jaalumaa\" agentid=\"3015906\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"1\" locationid=\"60013228\" locator=\"false\"/>\r\n    <row agent=\"Semsahee Avarep\" agentid=\"3015907\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"24\" level=\"1\" locationid=\"60013087\" locator=\"false\"/>\r\n    <row agent=\"Teurik Holfhynur\" agentid=\"3015908\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"24\" level=\"1\" locationid=\"60013087\" locator=\"false\"/>\r\n    <row agent=\"Terlanne Airbres\" agentid=\"3015909\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"4\" locationid=\"60013090\" locator=\"false\"/>\r\n    <row agent=\"Unkodiario Aurar\" agentid=\"3015910\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013114\" locator=\"false\"/>\r\n    <row agent=\"Daseiber Audistulf\" agentid=\"3015911\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013090\" locator=\"false\"/>\r\n    <row agent=\"Tendrille Dauroleinnes\" agentid=\"3015912\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"2\" locationid=\"60013087\" locator=\"false\"/>\r\n    <row agent=\"Uista Kelonkainen\" agentid=\"3015913\" agenttypeid=\"2\" corporationid=\"1000140\" divisionid=\"22\" level=\"3\" locationid=\"60013120\" locator=\"false\"/>\r\n    <row agent=\"Nunadhqin Tanyi\" agentid=\"3015914\" agenttypeid=\"2\" corporationid=\"1000141\" divisionid=\"24\" level=\"1\" locationid=\"60013261\" locator=\"false\"/>\r\n    <row agent=\"Maherden Raneera\" agentid=\"3015915\" agenttypeid=\"2\" corporationid=\"1000141\" divisionid=\"22\" level=\"1\" locationid=\"60013261\" locator=\"false\"/>\r\n    <row agent=\"Hamabairos Ohkanen\" agentid=\"3015916\" agenttypeid=\"2\" corporationid=\"1000141\" divisionid=\"22\" level=\"2\" locationid=\"60013261\" locator=\"false\"/>\r\n    <row agent=\"Teid Dananald\" agentid=\"3015917\" agenttypeid=\"2\" corporationid=\"1000141\" divisionid=\"22\" level=\"2\" locationid=\"60013261\" locator=\"false\"/>\r\n    <row agent=\"Tatoh Okkamon\" agentid=\"3015918\" agenttypeid=\"2\" corporationid=\"1000143\" divisionid=\"24\" level=\"3\" locationid=\"60013354\" locator=\"false\"/>\r\n    <row agent=\"Egbogi Lurstanhelm\" agentid=\"3015919\" agenttypeid=\"2\" corporationid=\"1000143\" divisionid=\"24\" level=\"3\" locationid=\"60013354\" locator=\"false\"/>\r\n    <row agent=\"Esoutte Denaert\" agentid=\"3015920\" agenttypeid=\"2\" corporationid=\"1000143\" divisionid=\"24\" level=\"4\" locationid=\"60013354\" locator=\"false\"/>\r\n    <row agent=\"Tashin Ernabaita\" agentid=\"3015921\" agenttypeid=\"2\" corporationid=\"1000143\" divisionid=\"22\" level=\"3\" locationid=\"60013354\" locator=\"false\"/>\r\n    <row agent=\"Soeilenire Dibinore\" agentid=\"3015922\" agenttypeid=\"2\" corporationid=\"1000143\" divisionid=\"22\" level=\"1\" locationid=\"60013354\" locator=\"false\"/>\r\n    <row agent=\"Tara Rushi\" agentid=\"3015923\" agenttypeid=\"2\" corporationid=\"1000143\" divisionid=\"24\" level=\"2\" locationid=\"60013354\" locator=\"false\"/>\r\n    <row agent=\"Iserisken Ramada\" agentid=\"3015924\" agenttypeid=\"2\" corporationid=\"1000144\" divisionid=\"24\" level=\"1\" locationid=\"60013378\" locator=\"false\"/>\r\n    <row agent=\"Kamode Atard\" agentid=\"3015925\" agenttypeid=\"2\" corporationid=\"1000144\" divisionid=\"24\" level=\"1\" locationid=\"60013360\" locator=\"false\"/>\r\n    <row agent=\"Louis Stiers\" agentid=\"3015926\" agenttypeid=\"2\" corporationid=\"1000144\" divisionid=\"24\" level=\"2\" locationid=\"60013372\" locator=\"false\"/>\r\n    <row agent=\"Lange Derchitant\" agentid=\"3015927\" agenttypeid=\"2\" corporationid=\"1000144\" divisionid=\"22\" level=\"1\" locationid=\"60013360\" locator=\"false\"/>\r\n    <row agent=\"Aundur Mulenzo\" agentid=\"3015928\" agenttypeid=\"2\" corporationid=\"1000145\" divisionid=\"22\" level=\"4\" locationid=\"60013393\" locator=\"false\"/>\r\n    <row agent=\"Aldolbod Alrogast\" agentid=\"3015929\" agenttypeid=\"2\" corporationid=\"1000145\" divisionid=\"22\" level=\"4\" locationid=\"60013384\" locator=\"false\"/>\r\n    <row agent=\"Vendrenade Ihe\" agentid=\"3015930\" agenttypeid=\"2\" corporationid=\"1000145\" divisionid=\"23\" level=\"3\" locationid=\"60013399\" locator=\"false\"/>\r\n    <row agent=\"Alarus Taroix\" agentid=\"3015931\" agenttypeid=\"2\" corporationid=\"1000145\" divisionid=\"23\" level=\"1\" locationid=\"60013399\" locator=\"false\"/>\r\n    <row agent=\"Oure Collamanne\" agentid=\"3015932\" agenttypeid=\"2\" corporationid=\"1000145\" divisionid=\"23\" level=\"3\" locationid=\"60013387\" locator=\"false\"/>\r\n    <row agent=\"Atur Aeskana\" agentid=\"3015933\" agenttypeid=\"2\" corporationid=\"1000145\" divisionid=\"22\" level=\"2\" locationid=\"60013393\" locator=\"false\"/>\r\n    <row agent=\"Abegias Elteroumie\" agentid=\"3015934\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"4\" locationid=\"60013408\" locator=\"false\"/>\r\n    <row agent=\"Odrongrald Atorasi\" agentid=\"3015935\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"3\" locationid=\"60013420\" locator=\"false\"/>\r\n    <row agent=\"Shishkarie Uatir\" agentid=\"3015936\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"2\" locationid=\"60013450\" locator=\"false\"/>\r\n    <row agent=\"Asohela Hehkonen\" agentid=\"3015937\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"4\" locationid=\"60013423\" locator=\"false\"/>\r\n    <row agent=\"Soltokka Oineshin\" agentid=\"3015938\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"3\" locationid=\"60013459\" locator=\"false\"/>\r\n    <row agent=\"Ogurino Uetamaa\" agentid=\"3015939\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"1\" locationid=\"60013408\" locator=\"false\"/>\r\n    <row agent=\"Arkell Tatetur\" agentid=\"3015940\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"2\" locationid=\"60013528\" locator=\"false\"/>\r\n    <row agent=\"Bomerin Joghorare\" agentid=\"3015941\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"2\" locationid=\"60013474\" locator=\"false\"/>\r\n    <row agent=\"Aronah Aziah\" agentid=\"3015942\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"2\" locationid=\"60013486\" locator=\"false\"/>\r\n    <row agent=\"Eviane Arorin\" agentid=\"3015943\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"2\" locationid=\"60013477\" locator=\"false\"/>\r\n    <row agent=\"Gungran Stelur\" agentid=\"3015944\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"1\" locationid=\"60013480\" locator=\"false\"/>\r\n    <row agent=\"Aishio Arilalmon\" agentid=\"3015945\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"3\" locationid=\"60013516\" locator=\"false\"/>\r\n    <row agent=\"Chilela Kandash\" agentid=\"3015946\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"3\" locationid=\"60013546\" locator=\"false\"/>\r\n    <row agent=\"Gagentrent Annonon\" agentid=\"3015947\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"1\" locationid=\"60013495\" locator=\"false\"/>\r\n    <row agent=\"Araline Fleudette\" agentid=\"3015948\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"1\" locationid=\"60013471\" locator=\"false\"/>\r\n    <row agent=\"Uosaras Kattinen\" agentid=\"3015949\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"1\" locationid=\"60013534\" locator=\"false\"/>\r\n    <row agent=\"Stigmalo Andal\" agentid=\"3015950\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"2\" locationid=\"60013534\" locator=\"false\"/>\r\n    <row agent=\"Chalandre Debussche\" agentid=\"3015951\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"2\" locationid=\"60013516\" locator=\"false\"/>\r\n    <row agent=\"Angast Leg\" agentid=\"3015952\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"2\" locationid=\"60013477\" locator=\"false\"/>\r\n    <row agent=\"Urwald Gogimund\" agentid=\"3015953\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"3\" locationid=\"60013519\" locator=\"false\"/>\r\n    <row agent=\"Orochi Niganaya\" agentid=\"3015954\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"1\" locationid=\"60013534\" locator=\"false\"/>\r\n    <row agent=\"Danen Oiluri\" agentid=\"3015955\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"22\" level=\"1\" locationid=\"60012313\" locator=\"false\"/>\r\n    <row agent=\"Paranen Pakkada\" agentid=\"3015956\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"22\" level=\"2\" locationid=\"60008338\" locator=\"false\"/>\r\n    <row agent=\"Wistufolf Medori\" agentid=\"3015957\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"22\" level=\"3\" locationid=\"60002536\" locator=\"false\"/>\r\n    <row agent=\"Claynins Jafavel\" agentid=\"3015958\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"22\" level=\"4\" locationid=\"60003346\" locator=\"false\"/>\r\n    <row agent=\"Fuken Hautsanashi\" agentid=\"3015959\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"22\" level=\"1\" locationid=\"60003415\" locator=\"false\"/>\r\n    <row agent=\"Alnal Taireyi\" agentid=\"3015960\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"22\" level=\"1\" locationid=\"60006097\" locator=\"false\"/>\r\n    <row agent=\"Atoth Yahatem\" agentid=\"3015961\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"22\" level=\"4\" locationid=\"60010594\" locator=\"false\"/>\r\n    <row agent=\"Dugleranshal Possare\" agentid=\"3015962\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"22\" level=\"2\" locationid=\"60010558\" locator=\"false\"/>\r\n    <row agent=\"Asu Torskairos\" agentid=\"3015963\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"22\" level=\"2\" locationid=\"60002059\" locator=\"false\"/>\r\n    <row agent=\"Veitt Tjodiswik\" agentid=\"3015964\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"22\" level=\"2\" locationid=\"60008530\" locator=\"false\"/>\r\n    <row agent=\"Menaert Strodmont\" agentid=\"3015965\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"22\" level=\"3\" locationid=\"60014119\" locator=\"false\"/>\r\n    <row agent=\"Engild Freadinger\" agentid=\"3015966\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"24\" level=\"3\" locationid=\"60003595\" locator=\"false\"/>\r\n    <row agent=\"Jabha Konakan\" agentid=\"3015967\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"24\" level=\"2\" locationid=\"60014077\" locator=\"false\"/>\r\n    <row agent=\"Soikka Otsotsu\" agentid=\"3015968\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"24\" level=\"1\" locationid=\"60001933\" locator=\"false\"/>\r\n    <row agent=\"Hararin Yvone\" agentid=\"3015970\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"24\" level=\"1\" locationid=\"60002659\" locator=\"false\"/>\r\n    <row agent=\"Veirainen Naresa\" agentid=\"3015971\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"24\" level=\"1\" locationid=\"60002413\" locator=\"false\"/>\r\n    <row agent=\"Saatoma Hirmaken\" agentid=\"3015972\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"24\" level=\"2\" locationid=\"60006355\" locator=\"false\"/>\r\n    <row agent=\"Loasuner Gokkerke\" agentid=\"3015973\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"24\" level=\"3\" locationid=\"60006037\" locator=\"false\"/>\r\n    <row agent=\"Fisten Akulf\" agentid=\"3015974\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"24\" level=\"4\" locationid=\"60008500\" locator=\"false\"/>\r\n    <row agent=\"Melfabier Crint\" agentid=\"3015975\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"24\" level=\"2\" locationid=\"60014131\" locator=\"false\"/>\r\n    <row agent=\"Sodrana Chad\" agentid=\"3015976\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"24\" level=\"3\" locationid=\"60012532\" locator=\"false\"/>\r\n    <row agent=\"Aulanen Kimaka\" agentid=\"3015977\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"24\" level=\"2\" locationid=\"60012319\" locator=\"false\"/>\r\n    <row agent=\"Nala Tanada\" agentid=\"3015978\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"24\" level=\"4\" locationid=\"60010897\" locator=\"false\"/>\r\n    <row agent=\"Ikkairo Kuikara\" agentid=\"3015979\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"24\" level=\"3\" locationid=\"60003451\" locator=\"false\"/>\r\n    <row agent=\"Vienes Adaine\" agentid=\"3015981\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"22\" level=\"3\" locationid=\"60001153\" locator=\"false\"/>\r\n    <row agent=\"Viggholon Olenckbrouck\" agentid=\"3015983\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"22\" level=\"2\" locationid=\"60010744\" locator=\"false\"/>\r\n    <row agent=\"Assilot Patalle\" agentid=\"3015984\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"22\" level=\"1\" locationid=\"60001063\" locator=\"false\"/>\r\n    <row agent=\"Chelul Cherti\" agentid=\"3015985\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"22\" level=\"2\" locationid=\"60013270\" locator=\"false\"/>\r\n    <row agent=\"Tiuken Ikka\" agentid=\"3015987\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"22\" level=\"3\" locationid=\"60011080\" locator=\"false\"/>\r\n    <row agent=\"Okarasa Okanula\" agentid=\"3015988\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"22\" level=\"2\" locationid=\"60006085\" locator=\"false\"/>\r\n    <row agent=\"Kakkichi Alasa\" agentid=\"3015989\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"22\" level=\"3\" locationid=\"60002644\" locator=\"false\"/>\r\n    <row agent=\"Ankanauroy Assehion\" agentid=\"3015990\" agenttypeid=\"2\" corporationid=\"1000148\" divisionid=\"22\" level=\"3\" locationid=\"60007735\" locator=\"false\"/>\r\n    <row agent=\"Ahtamaa Visken\" agentid=\"3015991\" agenttypeid=\"2\" corporationid=\"1000151\" divisionid=\"24\" level=\"3\" locationid=\"60013825\" locator=\"false\"/>\r\n    <row agent=\"Ake Wagas\" agentid=\"3015992\" agenttypeid=\"2\" corporationid=\"1000151\" divisionid=\"22\" level=\"2\" locationid=\"60013825\" locator=\"false\"/>\r\n    <row agent=\"Ohulainen Pesabato\" agentid=\"3015993\" agenttypeid=\"4\" corporationid=\"1000151\" divisionid=\"18\" level=\"2\" locationid=\"60013825\" locator=\"false\"/>\r\n    <row agent=\"Reigen Ornolfer\" agentid=\"3015994\" agenttypeid=\"4\" corporationid=\"1000151\" divisionid=\"18\" level=\"2\" locationid=\"60013825\" locator=\"false\"/>\r\n    <row agent=\"Katitera Ongrik\" agentid=\"3015995\" agenttypeid=\"2\" corporationid=\"1000151\" divisionid=\"22\" level=\"3\" locationid=\"60013825\" locator=\"false\"/>\r\n    <row agent=\"Istede Heldur\" agentid=\"3015996\" agenttypeid=\"2\" corporationid=\"1000152\" divisionid=\"24\" level=\"2\" locationid=\"60013834\" locator=\"false\"/>\r\n    <row agent=\"Vinkuski Tekkinashi\" agentid=\"3015997\" agenttypeid=\"2\" corporationid=\"1000153\" divisionid=\"24\" level=\"1\" locationid=\"60013858\" locator=\"false\"/>\r\n    <row agent=\"Sartheron Folle\" agentid=\"3015998\" agenttypeid=\"2\" corporationid=\"1000153\" divisionid=\"23\" level=\"1\" locationid=\"60013858\" locator=\"false\"/>\r\n    <row agent=\"Egino Aranata\" agentid=\"3015999\" agenttypeid=\"2\" corporationid=\"1000153\" divisionid=\"23\" level=\"2\" locationid=\"60013858\" locator=\"false\"/>\r\n    <row agent=\"Laldellins Bassobins\" agentid=\"3016000\" agenttypeid=\"2\" corporationid=\"1000153\" divisionid=\"23\" level=\"1\" locationid=\"60013858\" locator=\"false\"/>\r\n    <row agent=\"Manban Laremund\" agentid=\"3016001\" agenttypeid=\"2\" corporationid=\"1000153\" divisionid=\"23\" level=\"4\" locationid=\"60013858\" locator=\"false\"/>\r\n    <row agent=\"Kalvas Vuotikiura\" agentid=\"3016002\" agenttypeid=\"2\" corporationid=\"1000153\" divisionid=\"22\" level=\"2\" locationid=\"60013858\" locator=\"false\"/>\r\n    <row agent=\"Arak Bitatun\" agentid=\"3016003\" agenttypeid=\"2\" corporationid=\"1000154\" divisionid=\"24\" level=\"1\" locationid=\"60013861\" locator=\"false\"/>\r\n    <row agent=\"Minduh Mombin\" agentid=\"3016004\" agenttypeid=\"2\" corporationid=\"1000154\" divisionid=\"24\" level=\"1\" locationid=\"60013861\" locator=\"false\"/>\r\n    <row agent=\"Virara Abai\" agentid=\"3016005\" agenttypeid=\"2\" corporationid=\"1000154\" divisionid=\"24\" level=\"2\" locationid=\"60013867\" locator=\"false\"/>\r\n    <row agent=\"Aswahkikin Sonzad\" agentid=\"3016006\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"1\" locationid=\"60013969\" locator=\"false\"/>\r\n    <row agent=\"Rong Hiserman\" agentid=\"3016007\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"3\" locationid=\"60013969\" locator=\"false\"/>\r\n    <row agent=\"Hiavedem Pamba\" agentid=\"3016008\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"2\" locationid=\"60013939\" locator=\"false\"/>\r\n    <row agent=\"Marar Rishi\" agentid=\"3016009\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"2\" locationid=\"60013945\" locator=\"false\"/>\r\n    <row agent=\"Bahdidan Jaynerk\" agentid=\"3016010\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"3\" locationid=\"60013981\" locator=\"false\"/>\r\n    <row agent=\"Dralle Arson\" agentid=\"3016011\" agenttypeid=\"2\" corporationid=\"1000157\" divisionid=\"22\" level=\"2\" locationid=\"60013993\" locator=\"false\"/>\r\n    <row agent=\"Engardin Trahad\" agentid=\"3016012\" agenttypeid=\"2\" corporationid=\"1000157\" divisionid=\"22\" level=\"3\" locationid=\"60013993\" locator=\"false\"/>\r\n    <row agent=\"Essbet Tittori\" agentid=\"3016013\" agenttypeid=\"2\" corporationid=\"1000157\" divisionid=\"24\" level=\"2\" locationid=\"60013993\" locator=\"false\"/>\r\n    <row agent=\"Onlar Skadidsar\" agentid=\"3016014\" agenttypeid=\"2\" corporationid=\"1000157\" divisionid=\"24\" level=\"2\" locationid=\"60013993\" locator=\"false\"/>\r\n    <row agent=\"Achi Astenaisen\" agentid=\"3016015\" agenttypeid=\"2\" corporationid=\"1000157\" divisionid=\"24\" level=\"1\" locationid=\"60013993\" locator=\"false\"/>\r\n    <row agent=\"Ersi Argrik\" agentid=\"3016016\" agenttypeid=\"2\" corporationid=\"1000157\" divisionid=\"22\" level=\"1\" locationid=\"60013993\" locator=\"false\"/>\r\n    <row agent=\"Ebembald Belber\" agentid=\"3016017\" agenttypeid=\"2\" corporationid=\"1000159\" divisionid=\"22\" level=\"2\" locationid=\"60014056\" locator=\"false\"/>\r\n    <row agent=\"Khadoo Janateh\" agentid=\"3016018\" agenttypeid=\"2\" corporationid=\"1000159\" divisionid=\"22\" level=\"2\" locationid=\"60014056\" locator=\"false\"/>\r\n    <row agent=\"Rotteras Asaniri\" agentid=\"3016019\" agenttypeid=\"2\" corporationid=\"1000159\" divisionid=\"24\" level=\"2\" locationid=\"60014056\" locator=\"false\"/>\r\n    <row agent=\"Ohvajuuri Ahama\" agentid=\"3016020\" agenttypeid=\"2\" corporationid=\"1000159\" divisionid=\"24\" level=\"2\" locationid=\"60014056\" locator=\"false\"/>\r\n    <row agent=\"Riserakko Isenairos\" agentid=\"3016021\" agenttypeid=\"2\" corporationid=\"1000159\" divisionid=\"22\" level=\"2\" locationid=\"60014056\" locator=\"false\"/>\r\n    <row agent=\"Aleneyde Bauttier\" agentid=\"3016022\" agenttypeid=\"2\" corporationid=\"1000159\" divisionid=\"22\" level=\"1\" locationid=\"60014056\" locator=\"false\"/>\r\n    <row agent=\"Osgalolf Osoksund\" agentid=\"3016023\" agenttypeid=\"2\" corporationid=\"1000159\" divisionid=\"22\" level=\"2\" locationid=\"60014056\" locator=\"false\"/>\r\n    <row agent=\"Krissbjulen Isekoug\" agentid=\"3016024\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"23\" level=\"4\" locationid=\"60014062\" locator=\"false\"/>\r\n    <row agent=\"Arel Pardin\" agentid=\"3016025\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"23\" level=\"2\" locationid=\"60014101\" locator=\"false\"/>\r\n    <row agent=\"Aminel Aliliron\" agentid=\"3016026\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"23\" level=\"1\" locationid=\"60014128\" locator=\"false\"/>\r\n    <row agent=\"Hurodsi Azba\" agentid=\"3016027\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"23\" level=\"3\" locationid=\"60014074\" locator=\"false\"/>\r\n    <row agent=\"Holiaerdt Amaungheron\" agentid=\"3016028\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"23\" level=\"2\" locationid=\"60014098\" locator=\"false\"/>\r\n    <row agent=\"Autter Ilare\" agentid=\"3016029\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"2\" locationid=\"60014236\" locator=\"false\"/>\r\n    <row agent=\"Galovane Mannemaine\" agentid=\"3016030\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"1\" locationid=\"60014200\" locator=\"false\"/>\r\n    <row agent=\"Olediko Loguttur\" agentid=\"3016031\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"3\" locationid=\"60014239\" locator=\"false\"/>\r\n    <row agent=\"Aillon Ermenne\" agentid=\"3016032\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"3\" locationid=\"60014272\" locator=\"false\"/>\r\n    <row agent=\"Hidakara Hisonamo\" agentid=\"3016033\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"2\" locationid=\"60014245\" locator=\"false\"/>\r\n    <row agent=\"Tattonaert Angerjeneur\" agentid=\"3016034\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"1\" locationid=\"60014197\" locator=\"false\"/>\r\n    <row agent=\"Rima Pagh\" agentid=\"3016035\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"2\" locationid=\"60014278\" locator=\"false\"/>\r\n    <row agent=\"Raneshat Anthar\" agentid=\"3016036\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"1\" locationid=\"60014278\" locator=\"false\"/>\r\n    <row agent=\"Orvane Agerin\" agentid=\"3016037\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"3\" locationid=\"60014224\" locator=\"false\"/>\r\n    <row agent=\"Moi Fungabaiken\" agentid=\"3016038\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"3\" locationid=\"60014227\" locator=\"false\"/>\r\n    <row agent=\"Nuse Louis\" agentid=\"3016039\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"1\" locationid=\"60014281\" locator=\"false\"/>\r\n    <row agent=\"Mallelver Weldunus\" agentid=\"3016040\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"3\" locationid=\"60014281\" locator=\"false\"/>\r\n    <row agent=\"Chemiese Cargire\" agentid=\"3016041\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"3\" locationid=\"60014182\" locator=\"false\"/>\r\n    <row agent=\"Surin Efur\" agentid=\"3016042\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"1\" locationid=\"60014218\" locator=\"false\"/>\r\n    <row agent=\"Wangle Apoum\" agentid=\"3016043\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"4\" locationid=\"60014182\" locator=\"false\"/>\r\n    <row agent=\"Eifer Blaeinner\" agentid=\"3016044\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"3\" locationid=\"60014311\" locator=\"false\"/>\r\n    <row agent=\"Tazadaz Dardamen\" agentid=\"3016045\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"2\" locationid=\"60014326\" locator=\"false\"/>\r\n    <row agent=\"Boque Egghore\" agentid=\"3016046\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"1\" locationid=\"60014293\" locator=\"false\"/>\r\n    <row agent=\"Rahoshi Ichinumo\" agentid=\"3016047\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"3\" locationid=\"60014347\" locator=\"false\"/>\r\n    <row agent=\"Alselire Melaboillin\" agentid=\"3016048\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"3\" locationid=\"60014320\" locator=\"false\"/>\r\n    <row agent=\"Hami Chalit\" agentid=\"3016049\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"3\" locationid=\"60014299\" locator=\"false\"/>\r\n    <row agent=\"Kaura Vaaja\" agentid=\"3016050\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"24\" level=\"1\" locationid=\"60014461\" locator=\"false\"/>\r\n    <row agent=\"Bournerches Agorante\" agentid=\"3016051\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"24\" level=\"3\" locationid=\"60014449\" locator=\"false\"/>\r\n    <row agent=\"Modire Isaugnedan\" agentid=\"3016052\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"24\" level=\"3\" locationid=\"60014374\" locator=\"false\"/>\r\n    <row agent=\"Rimbrumulf Earulf\" agentid=\"3016053\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"24\" level=\"2\" locationid=\"60014461\" locator=\"false\"/>\r\n    <row agent=\"Gegalen Bengebried\" agentid=\"3016054\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"24\" level=\"2\" locationid=\"60014440\" locator=\"false\"/>\r\n    <row agent=\"Ukkuo Moichi\" agentid=\"3016055\" agenttypeid=\"2\" corporationid=\"1000165\" divisionid=\"22\" level=\"1\" locationid=\"60014602\" locator=\"false\"/>\r\n    <row agent=\"Shalanu Kiereend\" agentid=\"3016056\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"1\" locationid=\"60014653\" locator=\"false\"/>\r\n    <row agent=\"Mailisaulgot Ghelain\" agentid=\"3016057\" agenttypeid=\"2\" corporationid=\"1000167\" divisionid=\"22\" level=\"2\" locationid=\"60014662\" locator=\"false\"/>\r\n    <row agent=\"Itkeken Nenidochi\" agentid=\"3016058\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000169\" locator=\"false\"/>\r\n    <row agent=\"Pasken Torniainen\" agentid=\"3016059\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000130\" locator=\"false\"/>\r\n    <row agent=\"Unaa Kogachi\" agentid=\"3016060\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000172\" locator=\"false\"/>\r\n    <row agent=\"Yaholuri Kativola\" agentid=\"3016061\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000169\" locator=\"false\"/>\r\n    <row agent=\"Kikkoshi Ohvalainen\" agentid=\"3016062\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"3\" locationid=\"60000085\" locator=\"false\"/>\r\n    <row agent=\"Aanu Munatoh\" agentid=\"3016063\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000100\" locator=\"false\"/>\r\n    <row agent=\"Paltoshaitoh Aloto\" agentid=\"3016064\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"3\" locationid=\"60000031\" locator=\"false\"/>\r\n    <row agent=\"Ekala Heimakkoinen\" agentid=\"3016065\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000115\" locator=\"false\"/>\r\n    <row agent=\"Sielalen Ochoshi\" agentid=\"3016066\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000010\" locator=\"false\"/>\r\n    <row agent=\"Amonen Oganainen\" agentid=\"3016067\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000226\" locator=\"false\"/>\r\n    <row agent=\"Uusugas Oikama\" agentid=\"3016068\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"3\" locationid=\"60000076\" locator=\"false\"/>\r\n    <row agent=\"Tauhoken Enemi\" agentid=\"3016069\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"3\" locationid=\"60000115\" locator=\"false\"/>\r\n    <row agent=\"Isula Okiainidan\" agentid=\"3016070\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000031\" locator=\"false\"/>\r\n    <row agent=\"Iniwachi Outuni\" agentid=\"3016071\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000040\" locator=\"false\"/>\r\n    <row agent=\"Arkasikka Orananjus\" agentid=\"3016072\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000256\" locator=\"false\"/>\r\n    <row agent=\"Sondamokka Tekira\" agentid=\"3016073\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000193\" locator=\"false\"/>\r\n    <row agent=\"Pekolainen Enoveinen\" agentid=\"3016074\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000247\" locator=\"false\"/>\r\n    <row agent=\"Koura Arikiri\" agentid=\"3016075\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"3\" locationid=\"60000079\" locator=\"false\"/>\r\n    <row agent=\"Natirumo Shitalo\" agentid=\"3016076\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000115\" locator=\"false\"/>\r\n    <row agent=\"Innomainen Muukka\" agentid=\"3016077\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000160\" locator=\"false\"/>\r\n    <row agent=\"Isadaka Karsolen\" agentid=\"3016078\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000187\" locator=\"false\"/>\r\n    <row agent=\"Pimalen Himirairos\" agentid=\"3016079\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000208\" locator=\"false\"/>\r\n    <row agent=\"Matsazaitoh Hon\" agentid=\"3016080\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000265\" locator=\"false\"/>\r\n    <row agent=\"Okkiemi Eruhara\" agentid=\"3016081\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"1\" locationid=\"60000190\" locator=\"false\"/>\r\n    <row agent=\"Uusuras Kosikko\" agentid=\"3016082\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000115\" locator=\"false\"/>\r\n    <row agent=\"Junoniki Sizakela\" agentid=\"3016083\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"23\" level=\"2\" locationid=\"60000082\" locator=\"false\"/>\r\n    <row agent=\"Savilen Tasuola\" agentid=\"3016084\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"2\" locationid=\"60000079\" locator=\"false\"/>\r\n    <row agent=\"Kenda Ysi\" agentid=\"3016085\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"2\" locationid=\"60000250\" locator=\"false\"/>\r\n    <row agent=\"Kundan Aaltusen\" agentid=\"3016086\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"1\" locationid=\"60000028\" locator=\"false\"/>\r\n    <row agent=\"Isunoki Olorokka\" agentid=\"3016087\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"2\" locationid=\"60000250\" locator=\"false\"/>\r\n    <row agent=\"Arna Visika\" agentid=\"3016088\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"3\" locationid=\"60000016\" locator=\"false\"/>\r\n    <row agent=\"Kuotanen Jusen\" agentid=\"3016089\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"1\" locationid=\"60000232\" locator=\"false\"/>\r\n    <row agent=\"Sotken Motsen\" agentid=\"3016090\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"24\" level=\"1\" locationid=\"60000190\" locator=\"false\"/>\r\n    <row agent=\"Vaitoh Okiken\" agentid=\"3016091\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"2\" locationid=\"60000064\" locator=\"false\"/>\r\n    <row agent=\"Akinoma Nimpalius\" agentid=\"3016092\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"1\" locationid=\"60000214\" locator=\"false\"/>\r\n    <row agent=\"Satama Rekuloho\" agentid=\"3016093\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"2\" locationid=\"60000259\" locator=\"false\"/>\r\n    <row agent=\"Shinshunen Raigaken\" agentid=\"3016094\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"3\" locationid=\"60000163\" locator=\"false\"/>\r\n    <row agent=\"Oksarkovuo Aseluri\" agentid=\"3016095\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"3\" locationid=\"60000055\" locator=\"false\"/>\r\n    <row agent=\"Tannen Orpasen\" agentid=\"3016096\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"2\" locationid=\"60000208\" locator=\"false\"/>\r\n    <row agent=\"Ebiraho Ippeken\" agentid=\"3016097\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"2\" locationid=\"60000145\" locator=\"false\"/>\r\n    <row agent=\"Vattoh Oinorolen\" agentid=\"3016098\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"3\" locationid=\"60000136\" locator=\"false\"/>\r\n    <row agent=\"Vieseri Tolanala\" agentid=\"3016099\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"2\" locationid=\"60000226\" locator=\"false\"/>\r\n    <row agent=\"Vieskamon Purodagas\" agentid=\"3016100\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"3\" locationid=\"60000214\" locator=\"false\"/>\r\n    <row agent=\"Sunji Hara\" agentid=\"3016101\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"2\" locationid=\"60000199\" locator=\"false\"/>\r\n    <row agent=\"Hyn Erkolaavut\" agentid=\"3016102\" agenttypeid=\"2\" corporationid=\"1000002\" divisionid=\"22\" level=\"2\" locationid=\"60000190\" locator=\"false\"/>\r\n    <row agent=\"Vouras Haanechi\" agentid=\"3016103\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"2\" locationid=\"60000280\" locator=\"false\"/>\r\n    <row agent=\"Vintaala Alakela\" agentid=\"3016104\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"2\" locationid=\"60000286\" locator=\"false\"/>\r\n    <row agent=\"Keskamaa Yoskala\" agentid=\"3016105\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"3\" locationid=\"60000286\" locator=\"false\"/>\r\n    <row agent=\"Soitatoh Okano\" agentid=\"3016106\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"2\" locationid=\"60000295\" locator=\"false\"/>\r\n    <row agent=\"Shitammi Ikkoo\" agentid=\"3016107\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"1\" locationid=\"60000280\" locator=\"false\"/>\r\n    <row agent=\"Raaruken Asula\" agentid=\"3016108\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"2\" locationid=\"60000286\" locator=\"false\"/>\r\n    <row agent=\"Hakibaitoh Ris\" agentid=\"3016109\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"2\" locationid=\"60000283\" locator=\"false\"/>\r\n    <row agent=\"Ookasashin Parttamon\" agentid=\"3016110\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"1\" locationid=\"60000304\" locator=\"false\"/>\r\n    <row agent=\"Paatakko Aokasainen\" agentid=\"3016111\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"2\" locationid=\"60000277\" locator=\"false\"/>\r\n    <row agent=\"Ausmaras Kankadoishi\" agentid=\"3016112\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"1\" locationid=\"60000277\" locator=\"false\"/>\r\n    <row agent=\"Hiekilen Ahodoiken\" agentid=\"3016113\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"4\" locationid=\"60000280\" locator=\"false\"/>\r\n    <row agent=\"Taivila Sumilima\" agentid=\"3016114\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"2\" locationid=\"60000301\" locator=\"false\"/>\r\n    <row agent=\"Jakka Konala\" agentid=\"3016115\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"4\" locationid=\"60000298\" locator=\"false\"/>\r\n    <row agent=\"Arimula Ashekainen\" agentid=\"3016116\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"1\" locationid=\"60000277\" locator=\"false\"/>\r\n    <row agent=\"Solilen Sarulailen\" agentid=\"3016117\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"2\" locationid=\"60000292\" locator=\"false\"/>\r\n    <row agent=\"Aida Tsatei\" agentid=\"3016118\" agenttypeid=\"2\" corporationid=\"1000003\" divisionid=\"22\" level=\"2\" locationid=\"60000283\" locator=\"false\"/>\r\n    <row agent=\"Uehiro Pe\" agentid=\"3016119\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000373\" locator=\"false\"/>\r\n    <row agent=\"Hahjenavas Santasen\" agentid=\"3016120\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000415\" locator=\"false\"/>\r\n    <row agent=\"Airos Yanshamon\" agentid=\"3016121\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"4\" locationid=\"60000322\" locator=\"false\"/>\r\n    <row agent=\"Uchineto Akarichi\" agentid=\"3016122\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000427\" locator=\"false\"/>\r\n    <row agent=\"Kotsada Motsen\" agentid=\"3016123\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"3\" locationid=\"60000376\" locator=\"false\"/>\r\n    <row agent=\"Arma Wagakuwa\" agentid=\"3016124\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"2\" locationid=\"60000373\" locator=\"false\"/>\r\n    <row agent=\"Suvasemi Ohkuya\" agentid=\"3016125\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"3\" locationid=\"60000424\" locator=\"false\"/>\r\n    <row agent=\"Knaaninen Ibura\" agentid=\"3016126\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"2\" locationid=\"60000379\" locator=\"false\"/>\r\n    <row agent=\"Okoneda Otonen\" agentid=\"3016127\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"3\" locationid=\"60000397\" locator=\"false\"/>\r\n    <row agent=\"Karvalaisen Anturas\" agentid=\"3016128\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"2\" locationid=\"60000349\" locator=\"false\"/>\r\n    <row agent=\"Kirtikko Aaraken\" agentid=\"3016129\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"24\" level=\"1\" locationid=\"60000358\" locator=\"false\"/>\r\n    <row agent=\"Haario Notta\" agentid=\"3016130\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"2\" locationid=\"60000331\" locator=\"false\"/>\r\n    <row agent=\"Shinnukimi Jummito\" agentid=\"3016131\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"2\" locationid=\"60000322\" locator=\"false\"/>\r\n    <row agent=\"Kootatoh Otonheinen\" agentid=\"3016132\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000331\" locator=\"false\"/>\r\n    <row agent=\"Kodamailen Oijari\" agentid=\"3016133\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"2\" locationid=\"60000400\" locator=\"false\"/>\r\n    <row agent=\"Naki Vikkiras\" agentid=\"3016134\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000403\" locator=\"false\"/>\r\n    <row agent=\"Tuka Moya\" agentid=\"3016135\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"2\" locationid=\"60000415\" locator=\"false\"/>\r\n    <row agent=\"Vaalemainen Suenen\" agentid=\"3016136\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"4\" locationid=\"60000370\" locator=\"false\"/>\r\n    <row agent=\"Heitikka Erovuo\" agentid=\"3016137\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000340\" locator=\"false\"/>\r\n    <row agent=\"Kaisaya Venichino\" agentid=\"3016138\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"24\" level=\"1\" locationid=\"60000334\" locator=\"false\"/>\r\n    <row agent=\"Arasmaa Elaa\" agentid=\"3016139\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"3\" locationid=\"60000352\" locator=\"false\"/>\r\n    <row agent=\"Unaa Rain\" agentid=\"3016140\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000319\" locator=\"false\"/>\r\n    <row agent=\"Olunatsu Kivinala\" agentid=\"3016141\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"3\" locationid=\"60000352\" locator=\"false\"/>\r\n    <row agent=\"Adazai Turas\" agentid=\"3016142\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000328\" locator=\"false\"/>\r\n    <row agent=\"Kamasaji Mahtiainen\" agentid=\"3016143\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000343\" locator=\"false\"/>\r\n    <row agent=\"Urawarras Arainiki\" agentid=\"3016144\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000343\" locator=\"false\"/>\r\n    <row agent=\"Rakkadan Mieltinen\" agentid=\"3016145\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"3\" locationid=\"60000319\" locator=\"false\"/>\r\n    <row agent=\"Ookilen Nakila\" agentid=\"3016146\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000418\" locator=\"false\"/>\r\n    <row agent=\"Homon Nikkasi\" agentid=\"3016147\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"2\" locationid=\"60000376\" locator=\"false\"/>\r\n    <row agent=\"Ylala Oittelen\" agentid=\"3016148\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000349\" locator=\"false\"/>\r\n    <row agent=\"Hasaziras Isemi\" agentid=\"3016149\" agenttypeid=\"2\" corporationid=\"1000004\" divisionid=\"22\" level=\"2\" locationid=\"60000409\" locator=\"false\"/>\r\n    <row agent=\"Pukegainen Ansunainen\" agentid=\"3016150\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"24\" level=\"3\" locationid=\"60000448\" locator=\"false\"/>\r\n    <row agent=\"Olen Tukka\" agentid=\"3016151\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"24\" level=\"1\" locationid=\"60000514\" locator=\"false\"/>\r\n    <row agent=\"Yanttainen Vinttenen\" agentid=\"3016152\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"24\" level=\"2\" locationid=\"60000472\" locator=\"false\"/>\r\n    <row agent=\"Ikai Arkatomon\" agentid=\"3016153\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"24\" level=\"2\" locationid=\"60000478\" locator=\"false\"/>\r\n    <row agent=\"Wamon Huokagainen\" agentid=\"3016154\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"24\" level=\"1\" locationid=\"60000523\" locator=\"false\"/>\r\n    <row agent=\"Saziras Kuletokka\" agentid=\"3016155\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"22\" level=\"1\" locationid=\"60000604\" locator=\"false\"/>\r\n    <row agent=\"Yanakka Multano\" agentid=\"3016156\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"22\" level=\"3\" locationid=\"60000580\" locator=\"false\"/>\r\n    <row agent=\"Aulinken Paaltara\" agentid=\"3016157\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"22\" level=\"4\" locationid=\"60000523\" locator=\"false\"/>\r\n    <row agent=\"Jakanerva Tuomo\" agentid=\"3016158\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"22\" level=\"3\" locationid=\"60000454\" locator=\"false\"/>\r\n    <row agent=\"Eistasen Tokkoskawa\" agentid=\"3016159\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"22\" level=\"3\" locationid=\"60000505\" locator=\"false\"/>\r\n    <row agent=\"Obeshi Sokukoma\" agentid=\"3016160\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"22\" level=\"2\" locationid=\"60000433\" locator=\"false\"/>\r\n    <row agent=\"Murikomo Uimomaitoh\" agentid=\"3016161\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"22\" level=\"3\" locationid=\"60000505\" locator=\"false\"/>\r\n    <row agent=\"Yonoraita Immeri\" agentid=\"3016162\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"22\" level=\"2\" locationid=\"60000448\" locator=\"false\"/>\r\n    <row agent=\"Asin Togami\" agentid=\"3016163\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"22\" level=\"3\" locationid=\"60000529\" locator=\"false\"/>\r\n    <row agent=\"Pierigas Ookilanen\" agentid=\"3016165\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"22\" level=\"3\" locationid=\"60000589\" locator=\"false\"/>\r\n    <row agent=\"Ruotkaishi Karjiras\" agentid=\"3016166\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"22\" level=\"1\" locationid=\"60000439\" locator=\"false\"/>\r\n    <row agent=\"Hakodan Getasori\" agentid=\"3016167\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"22\" level=\"2\" locationid=\"60000568\" locator=\"false\"/>\r\n    <row agent=\"Aatvi Nupiroda\" agentid=\"3016168\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"24\" level=\"1\" locationid=\"60000457\" locator=\"false\"/>\r\n    <row agent=\"Kappas Hayono\" agentid=\"3016169\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"3\" locationid=\"60000550\" locator=\"false\"/>\r\n    <row agent=\"Tsunasila Nanmaa\" agentid=\"3016170\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"2\" locationid=\"60000517\" locator=\"false\"/>\r\n    <row agent=\"Haskatoh Ihimela\" agentid=\"3016171\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"1\" locationid=\"60000538\" locator=\"false\"/>\r\n    <row agent=\"Hu Annetainen\" agentid=\"3016172\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"2\" locationid=\"60000541\" locator=\"false\"/>\r\n    <row agent=\"Ruoken Malala\" agentid=\"3016173\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"2\" locationid=\"60000529\" locator=\"false\"/>\r\n    <row agent=\"Liukalen Sezinada\" agentid=\"3016174\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"2\" locationid=\"60000439\" locator=\"false\"/>\r\n    <row agent=\"Siurua Aurio\" agentid=\"3016175\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"3\" locationid=\"60000526\" locator=\"false\"/>\r\n    <row agent=\"Panala Aimo\" agentid=\"3016176\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"2\" locationid=\"60000523\" locator=\"false\"/>\r\n    <row agent=\"Haro Honnamaiken\" agentid=\"3016177\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"24\" level=\"1\" locationid=\"60000448\" locator=\"false\"/>\r\n    <row agent=\"Ahviala Ijaris\" agentid=\"3016178\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"3\" locationid=\"60000430\" locator=\"false\"/>\r\n    <row agent=\"Musalikka Sarkata\" agentid=\"3016180\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"3\" locationid=\"60000493\" locator=\"false\"/>\r\n    <row agent=\"Asitei Hykkota\" agentid=\"3016181\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"2\" locationid=\"60000514\" locator=\"false\"/>\r\n    <row agent=\"Numo Tarkko\" agentid=\"3016182\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"3\" locationid=\"60000592\" locator=\"false\"/>\r\n    <row agent=\"Iwaken Uimashin\" agentid=\"3016183\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"2\" locationid=\"60000511\" locator=\"false\"/>\r\n    <row agent=\"Taituka Ralttilo\" agentid=\"3016184\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"4\" locationid=\"60000544\" locator=\"false\"/>\r\n    <row agent=\"Siakramon Tasti\" agentid=\"3016185\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"2\" locationid=\"60000439\" locator=\"false\"/>\r\n    <row agent=\"Ylorala Outaken\" agentid=\"3016186\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"1\" locationid=\"60000508\" locator=\"false\"/>\r\n    <row agent=\"Otsidaiken Hela\" agentid=\"3016187\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"3\" locationid=\"60000547\" locator=\"false\"/>\r\n    <row agent=\"Putano Aarapas\" agentid=\"3016188\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"3\" locationid=\"60000538\" locator=\"false\"/>\r\n    <row agent=\"Seloroki Raurisen\" agentid=\"3016189\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"2\" locationid=\"60000481\" locator=\"false\"/>\r\n    <row agent=\"Immuri Utrainio\" agentid=\"3016190\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"2\" locationid=\"60000484\" locator=\"false\"/>\r\n    <row agent=\"Amppe Karapia\" agentid=\"3016191\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"3\" locationid=\"60000565\" locator=\"false\"/>\r\n    <row agent=\"Rikima Hyykoda\" agentid=\"3016192\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"2\" locationid=\"60000433\" locator=\"false\"/>\r\n    <row agent=\"Nozimbo Makiriemi\" agentid=\"3016193\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"1\" locationid=\"60000589\" locator=\"false\"/>\r\n    <row agent=\"Katsen Motikka\" agentid=\"3016194\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"4\" locationid=\"60000541\" locator=\"false\"/>\r\n    <row agent=\"Suosanen Kilkkigas\" agentid=\"3016195\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"2\" locationid=\"60000433\" locator=\"false\"/>\r\n    <row agent=\"Utrojaaken Maratani\" agentid=\"3016196\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"23\" level=\"1\" locationid=\"60000571\" locator=\"false\"/>\r\n    <row agent=\"Rahoshi Sikama\" agentid=\"3016197\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"24\" level=\"1\" locationid=\"60000640\" locator=\"false\"/>\r\n    <row agent=\"Araka Eramoda\" agentid=\"3016198\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"24\" level=\"1\" locationid=\"60000631\" locator=\"false\"/>\r\n    <row agent=\"Onata Haya\" agentid=\"3016199\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"24\" level=\"1\" locationid=\"60000610\" locator=\"false\"/>\r\n    <row agent=\"Oivas Tuotoh\" agentid=\"3016200\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"24\" level=\"1\" locationid=\"60000637\" locator=\"false\"/>\r\n    <row agent=\"Tonduzainen Malkkuras\" agentid=\"3016201\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"24\" level=\"3\" locationid=\"60000610\" locator=\"false\"/>\r\n    <row agent=\"Okuchida Tantami\" agentid=\"3016203\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"23\" level=\"2\" locationid=\"60000637\" locator=\"false\"/>\r\n    <row agent=\"Hiemalen Orpila\" agentid=\"3016204\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"23\" level=\"2\" locationid=\"60000640\" locator=\"false\"/>\r\n    <row agent=\"Hasheshi Iwira\" agentid=\"3016205\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"23\" level=\"1\" locationid=\"60000640\" locator=\"false\"/>\r\n    <row agent=\"Isalen Oittakko\" agentid=\"3016206\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"23\" level=\"2\" locationid=\"60000616\" locator=\"false\"/>\r\n    <row agent=\"Varnen Aikinen\" agentid=\"3016207\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"23\" level=\"2\" locationid=\"60000637\" locator=\"false\"/>\r\n    <row agent=\"Ainka Hovirri\" agentid=\"3016208\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"23\" level=\"1\" locationid=\"60000613\" locator=\"false\"/>\r\n    <row agent=\"Oyonela Kovapio\" agentid=\"3016209\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"23\" level=\"2\" locationid=\"60000616\" locator=\"false\"/>\r\n    <row agent=\"Saksa Heiranisto\" agentid=\"3016210\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"23\" level=\"1\" locationid=\"60000616\" locator=\"false\"/>\r\n    <row agent=\"Nimachiro Orseken\" agentid=\"3016211\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"23\" level=\"1\" locationid=\"60000643\" locator=\"false\"/>\r\n    <row agent=\"Nogokoku Mikamara\" agentid=\"3016212\" agenttypeid=\"2\" corporationid=\"1000006\" divisionid=\"23\" level=\"2\" locationid=\"60000640\" locator=\"false\"/>\r\n    <row agent=\"Uittakka Ueharis\" agentid=\"3016213\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"24\" level=\"3\" locationid=\"60000658\" locator=\"false\"/>\r\n    <row agent=\"Puroto Ichokoda\" agentid=\"3016214\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"24\" level=\"2\" locationid=\"60000736\" locator=\"false\"/>\r\n    <row agent=\"Daras Utrola\" agentid=\"3016215\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"24\" level=\"3\" locationid=\"60000709\" locator=\"false\"/>\r\n    <row agent=\"Jitkavaja Ninsen\" agentid=\"3016216\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"24\" level=\"1\" locationid=\"60000736\" locator=\"false\"/>\r\n    <row agent=\"Kipanen Uesti\" agentid=\"3016217\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"24\" level=\"3\" locationid=\"60000703\" locator=\"false\"/>\r\n    <row agent=\"Furskeshin Yasmon\" agentid=\"3016220\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"4\" locationid=\"60000721\" locator=\"false\"/>\r\n    <row agent=\"Asiken Chinalala\" agentid=\"3016221\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"3\" locationid=\"60000715\" locator=\"false\"/>\r\n    <row agent=\"Koras Kitama\" agentid=\"3016222\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"2\" locationid=\"60000727\" locator=\"false\"/>\r\n    <row agent=\"Akova Totama\" agentid=\"3016223\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"1\" locationid=\"60000646\" locator=\"false\"/>\r\n    <row agent=\"Himppairos Livala\" agentid=\"3016224\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"4\" locationid=\"60000721\" locator=\"false\"/>\r\n    <row agent=\"Raulilainen Oikilusen\" agentid=\"3016225\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"1\" locationid=\"60000742\" locator=\"false\"/>\r\n    <row agent=\"Kuramoichi Todanairos\" agentid=\"3016226\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"4\" locationid=\"60000742\" locator=\"false\"/>\r\n    <row agent=\"Aarnagas Midamawa\" agentid=\"3016227\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"3\" locationid=\"60000727\" locator=\"false\"/>\r\n    <row agent=\"Ekimo Otiaineras\" agentid=\"3016228\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"1\" locationid=\"60000697\" locator=\"false\"/>\r\n    <row agent=\"Egurekken Heri\" agentid=\"3016229\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"3\" locationid=\"60000697\" locator=\"false\"/>\r\n    <row agent=\"Oimmo Niukuka\" agentid=\"3016230\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"2\" locationid=\"60000742\" locator=\"false\"/>\r\n    <row agent=\"Tuonainen Sarmaras\" agentid=\"3016231\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"3\" locationid=\"60000745\" locator=\"false\"/>\r\n    <row agent=\"Rilen Varmon\" agentid=\"3016232\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"2\" locationid=\"60000742\" locator=\"false\"/>\r\n    <row agent=\"Otagas Satsiainen\" agentid=\"3016233\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"3\" locationid=\"60000646\" locator=\"false\"/>\r\n    <row agent=\"Arunmaa Sorila\" agentid=\"3016234\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"3\" locationid=\"60000745\" locator=\"false\"/>\r\n    <row agent=\"Sannen Shiwari\" agentid=\"3016236\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"1\" locationid=\"60000715\" locator=\"false\"/>\r\n    <row agent=\"Asakiomaa Itamainen\" agentid=\"3016237\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"2\" locationid=\"60000727\" locator=\"false\"/>\r\n    <row agent=\"Ruukarainen Ichiya\" agentid=\"3016238\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"3\" locationid=\"60000646\" locator=\"false\"/>\r\n    <row agent=\"Hakkunnada Mamonaitoh\" agentid=\"3016239\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"2\" locationid=\"60000724\" locator=\"false\"/>\r\n    <row agent=\"Ishunala Uotanen\" agentid=\"3016240\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"4\" locationid=\"60000724\" locator=\"false\"/>\r\n    <row agent=\"Auttiras Odera\" agentid=\"3016241\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"1\" locationid=\"60000664\" locator=\"false\"/>\r\n    <row agent=\"Yamala Ahmalen\" agentid=\"3016242\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"3\" locationid=\"60000646\" locator=\"false\"/>\r\n    <row agent=\"Moitulanto Kormon\" agentid=\"3016243\" agenttypeid=\"2\" corporationid=\"1000007\" divisionid=\"23\" level=\"2\" locationid=\"60000715\" locator=\"false\"/>\r\n    <row agent=\"Jomimita Mala\" agentid=\"3016244\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"24\" level=\"3\" locationid=\"60000778\" locator=\"false\"/>\r\n    <row agent=\"Ylomon Ukebaitoh\" agentid=\"3016245\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"24\" level=\"1\" locationid=\"60000829\" locator=\"false\"/>\r\n    <row agent=\"Sirsashainen Olvas\" agentid=\"3016246\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"3\" locationid=\"60000832\" locator=\"false\"/>\r\n    <row agent=\"Olkkalen Kairuga\" agentid=\"3016247\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"1\" locationid=\"60000775\" locator=\"false\"/>\r\n    <row agent=\"Kontiainen Takkan\" agentid=\"3016248\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"3\" locationid=\"60000835\" locator=\"false\"/>\r\n    <row agent=\"Vanturas Etsuga\" agentid=\"3016249\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"2\" locationid=\"60000793\" locator=\"false\"/>\r\n    <row agent=\"Nalula Hamunala\" agentid=\"3016250\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"3\" locationid=\"60000835\" locator=\"false\"/>\r\n    <row agent=\"Obinen Hakken\" agentid=\"3016251\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"3\" locationid=\"60000781\" locator=\"false\"/>\r\n    <row agent=\"Kiah Pikka\" agentid=\"3016252\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"2\" locationid=\"60000853\" locator=\"false\"/>\r\n    <row agent=\"Heima Etsie\" agentid=\"3016253\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"1\" locationid=\"60000781\" locator=\"false\"/>\r\n    <row agent=\"Amada Irjela\" agentid=\"3016254\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"4\" locationid=\"60000853\" locator=\"false\"/>\r\n    <row agent=\"Pila Oijunen\" agentid=\"3016255\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"2\" locationid=\"60000796\" locator=\"false\"/>\r\n    <row agent=\"Itakito Osunen\" agentid=\"3016256\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"4\" locationid=\"60000793\" locator=\"false\"/>\r\n    <row agent=\"Aokivairos Suukomon\" agentid=\"3016257\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"23\" level=\"3\" locationid=\"60000805\" locator=\"false\"/>\r\n    <row agent=\"Idetaala Ukkuo\" agentid=\"3016258\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"22\" level=\"2\" locationid=\"60000841\" locator=\"false\"/>\r\n    <row agent=\"Hitsen Aruta\" agentid=\"3016259\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"22\" level=\"3\" locationid=\"60000820\" locator=\"false\"/>\r\n    <row agent=\"Urpatoh Tavas\" agentid=\"3016260\" agenttypeid=\"2\" corporationid=\"1000008\" divisionid=\"22\" level=\"2\" locationid=\"60000823\" locator=\"false\"/>\r\n    <row agent=\"Malkikka Linachi\" agentid=\"3016261\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"23\" level=\"3\" locationid=\"60000862\" locator=\"false\"/>\r\n    <row agent=\"Takkolinne Kobosuri\" agentid=\"3016263\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"23\" level=\"2\" locationid=\"60000916\" locator=\"false\"/>\r\n    <row agent=\"Saaljala Ekiwairos\" agentid=\"3016264\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"23\" level=\"1\" locationid=\"60000883\" locator=\"false\"/>\r\n    <row agent=\"Ansila Katseri\" agentid=\"3016265\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"23\" level=\"3\" locationid=\"60000883\" locator=\"false\"/>\r\n    <row agent=\"Huorola Myyhera\" agentid=\"3016266\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"23\" level=\"2\" locationid=\"60000907\" locator=\"false\"/>\r\n    <row agent=\"Orukka Sossakin\" agentid=\"3016267\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"23\" level=\"1\" locationid=\"60000859\" locator=\"false\"/>\r\n    <row agent=\"Inawaki Raken\" agentid=\"3016268\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"23\" level=\"3\" locationid=\"60000931\" locator=\"false\"/>\r\n    <row agent=\"Sidasen Amasen\" agentid=\"3016269\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"1\" locationid=\"60000946\" locator=\"false\"/>\r\n    <row agent=\"Huhakairos Shittoh\" agentid=\"3016270\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"3\" locationid=\"60000946\" locator=\"false\"/>\r\n    <row agent=\"Kaaleskailen Engas\" agentid=\"3016271\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"2\" locationid=\"60000973\" locator=\"false\"/>\r\n    <row agent=\"Solanato Kajewaiki\" agentid=\"3016272\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"2\" locationid=\"60000919\" locator=\"false\"/>\r\n    <row agent=\"Vikayara Soukka\" agentid=\"3016273\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"1\" locationid=\"60000946\" locator=\"false\"/>\r\n    <row agent=\"Porhila Huken\" agentid=\"3016274\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"1\" locationid=\"60000865\" locator=\"false\"/>\r\n    <row agent=\"Milkawa Toila\" agentid=\"3016275\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"2\" locationid=\"60000940\" locator=\"false\"/>\r\n    <row agent=\"Tsumashama Pemmiya\" agentid=\"3016276\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"1\" locationid=\"60000919\" locator=\"false\"/>\r\n    <row agent=\"Soukesen Reppola\" agentid=\"3016277\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"1\" locationid=\"60000919\" locator=\"false\"/>\r\n    <row agent=\"Uminas Komanula\" agentid=\"3016278\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"3\" locationid=\"60000940\" locator=\"false\"/>\r\n    <row agent=\"Otsidaiken Samalela\" agentid=\"3016279\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"2\" locationid=\"60000928\" locator=\"false\"/>\r\n    <row agent=\"Erjus Narlen\" agentid=\"3016280\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"2\" locationid=\"60000940\" locator=\"false\"/>\r\n    <row agent=\"Kietirenta Ouradan\" agentid=\"3016281\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"2\" locationid=\"60000973\" locator=\"false\"/>\r\n    <row agent=\"Akipara Semmenen\" agentid=\"3016282\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"2\" locationid=\"60000973\" locator=\"false\"/>\r\n    <row agent=\"Kasvio Inetama\" agentid=\"3016283\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"3\" locationid=\"60000928\" locator=\"false\"/>\r\n    <row agent=\"Aakio Elakarppi\" agentid=\"3016284\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"2\" locationid=\"60000859\" locator=\"false\"/>\r\n    <row agent=\"Jumeken Kakochi\" agentid=\"3016285\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"2\" locationid=\"60000958\" locator=\"false\"/>\r\n    <row agent=\"Ozomawa Jindaken\" agentid=\"3016286\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"1\" locationid=\"60000937\" locator=\"false\"/>\r\n    <row agent=\"Shiomiken Asiai\" agentid=\"3016287\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"4\" locationid=\"60000865\" locator=\"false\"/>\r\n    <row agent=\"Mihtoh Ohmolen\" agentid=\"3016288\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"2\" locationid=\"60000928\" locator=\"false\"/>\r\n    <row agent=\"Okama Shiotintaitoh\" agentid=\"3016289\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"1\" locationid=\"60000934\" locator=\"false\"/>\r\n    <row agent=\"Epas Hopara\" agentid=\"3016290\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"1\" locationid=\"60000865\" locator=\"false\"/>\r\n    <row agent=\"Ahusen Malavanas\" agentid=\"3016291\" agenttypeid=\"2\" corporationid=\"1000009\" divisionid=\"22\" level=\"3\" locationid=\"60000859\" locator=\"false\"/>\r\n    <row agent=\"Niteloho Koirolen\" agentid=\"3016292\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"4\" locationid=\"60001042\" locator=\"false\"/>\r\n    <row agent=\"Onamela Kirase\" agentid=\"3016293\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"1\" locationid=\"60001186\" locator=\"false\"/>\r\n    <row agent=\"Karas Savataltoh\" agentid=\"3016294\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"1\" locationid=\"60000988\" locator=\"false\"/>\r\n    <row agent=\"Mien Ouchokaisen\" agentid=\"3016295\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"1\" locationid=\"60001036\" locator=\"false\"/>\r\n    <row agent=\"Amaari Siainki\" agentid=\"3016296\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"4\" locationid=\"60001156\" locator=\"false\"/>\r\n    <row agent=\"Heyata Aunuri\" agentid=\"3016297\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"1\" locationid=\"60001225\" locator=\"false\"/>\r\n    <row agent=\"Utrasen Aatvi\" agentid=\"3016298\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"3\" locationid=\"60001057\" locator=\"false\"/>\r\n    <row agent=\"Kakkurala Mukaoka\" agentid=\"3016299\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"2\" locationid=\"60001102\" locator=\"false\"/>\r\n    <row agent=\"Kurmaru Auvulatoh\" agentid=\"3016300\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"3\" locationid=\"60001210\" locator=\"false\"/>\r\n    <row agent=\"Hius Imila\" agentid=\"3016301\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"4\" locationid=\"60001090\" locator=\"false\"/>\r\n    <row agent=\"Saaninen Ahomon\" agentid=\"3016302\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"4\" locationid=\"60001198\" locator=\"false\"/>\r\n    <row agent=\"Ouvia Haananen\" agentid=\"3016303\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"3\" locationid=\"60001057\" locator=\"false\"/>\r\n    <row agent=\"Kukanundan Vapalmaa\" agentid=\"3016304\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"1\" locationid=\"60001120\" locator=\"false\"/>\r\n    <row agent=\"Kalasano Hora\" agentid=\"3016305\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"3\" locationid=\"60000985\" locator=\"false\"/>\r\n    <row agent=\"Uda Ozora\" agentid=\"3016306\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"1\" locationid=\"60001030\" locator=\"false\"/>\r\n    <row agent=\"Ukkegas Vajokka\" agentid=\"3016307\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"23\" level=\"2\" locationid=\"60001180\" locator=\"false\"/>\r\n    <row agent=\"Ichinumo Noutelen\" agentid=\"3016308\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"2\" locationid=\"60001027\" locator=\"false\"/>\r\n    <row agent=\"Kan Aarninen\" agentid=\"3016309\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"2\" locationid=\"60001027\" locator=\"false\"/>\r\n    <row agent=\"Holkiainen Aluoma\" agentid=\"3016310\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"2\" locationid=\"60001171\" locator=\"false\"/>\r\n    <row agent=\"Kunonen Miit\" agentid=\"3016311\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"3\" locationid=\"60001042\" locator=\"false\"/>\r\n    <row agent=\"Yamon Kuras\" agentid=\"3016312\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"3\" locationid=\"60001027\" locator=\"false\"/>\r\n    <row agent=\"Oziki Perrukainen\" agentid=\"3016313\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"1\" locationid=\"60001171\" locator=\"false\"/>\r\n    <row agent=\"Verhinila Marusama\" agentid=\"3016314\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"2\" locationid=\"60001150\" locator=\"false\"/>\r\n    <row agent=\"Olkkiken Sikiwa\" agentid=\"3016315\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"1\" locationid=\"60001171\" locator=\"false\"/>\r\n    <row agent=\"Karto Rokka\" agentid=\"3016316\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"1\" locationid=\"60001150\" locator=\"false\"/>\r\n    <row agent=\"Kigora Akashi\" agentid=\"3016317\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"3\" locationid=\"60001027\" locator=\"false\"/>\r\n    <row agent=\"Ourunolen Makkuwiri\" agentid=\"3016318\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"3\" locationid=\"60001042\" locator=\"false\"/>\r\n    <row agent=\"Ahtoja Ichisugi\" agentid=\"3016319\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"4\" locationid=\"60001150\" locator=\"false\"/>\r\n    <row agent=\"Eppas Makkolen\" agentid=\"3016320\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"1\" locationid=\"60001150\" locator=\"false\"/>\r\n    <row agent=\"Iminula Waskilanto\" agentid=\"3016321\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"1\" locationid=\"60001042\" locator=\"false\"/>\r\n    <row agent=\"Ozira Aalma\" agentid=\"3016322\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"3\" locationid=\"60001027\" locator=\"false\"/>\r\n    <row agent=\"Tikko Ueharis\" agentid=\"3016323\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"2\" locationid=\"60001027\" locator=\"false\"/>\r\n    <row agent=\"Ieyaki Aunka\" agentid=\"3016324\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"2\" locationid=\"60001171\" locator=\"false\"/>\r\n    <row agent=\"Kirila Akon\" agentid=\"3016325\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"1\" locationid=\"60001042\" locator=\"false\"/>\r\n    <row agent=\"Saraki Ohkiras\" agentid=\"3016326\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"3\" locationid=\"60001171\" locator=\"false\"/>\r\n    <row agent=\"Isora Nomaa\" agentid=\"3016327\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"3\" locationid=\"60001027\" locator=\"false\"/>\r\n    <row agent=\"Kisihada Okila\" agentid=\"3016328\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"4\" locationid=\"60001186\" locator=\"false\"/>\r\n    <row agent=\"Eramaa Huunuras\" agentid=\"3016329\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"2\" locationid=\"60001042\" locator=\"false\"/>\r\n    <row agent=\"Punen Kaarikama\" agentid=\"3016330\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"1\" locationid=\"60001186\" locator=\"false\"/>\r\n    <row agent=\"Kunda Ruukarainen\" agentid=\"3016331\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"1\" locationid=\"60001171\" locator=\"false\"/>\r\n    <row agent=\"Dahtoh Alieto\" agentid=\"3016332\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"1\" locationid=\"60001042\" locator=\"false\"/>\r\n    <row agent=\"Kayenen Erasen\" agentid=\"3016333\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"1\" locationid=\"60001186\" locator=\"false\"/>\r\n    <row agent=\"Pekki Mataken\" agentid=\"3016334\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"2\" locationid=\"60001042\" locator=\"false\"/>\r\n    <row agent=\"Igenobe Saasanmaa\" agentid=\"3016335\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"3\" locationid=\"60001150\" locator=\"false\"/>\r\n    <row agent=\"Ralemula Veroto\" agentid=\"3016336\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"22\" level=\"2\" locationid=\"60001186\" locator=\"false\"/>\r\n    <row agent=\"Savela Isa\" agentid=\"3016337\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"24\" level=\"1\" locationid=\"60001294\" locator=\"false\"/>\r\n    <row agent=\"Kouhanen Tallaja\" agentid=\"3016338\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"24\" level=\"3\" locationid=\"60001258\" locator=\"false\"/>\r\n    <row agent=\"Talakka Vauhilen\" agentid=\"3016339\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"24\" level=\"2\" locationid=\"60001390\" locator=\"false\"/>\r\n    <row agent=\"Halmaganda Oravuo\" agentid=\"3016340\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"4\" locationid=\"60001300\" locator=\"false\"/>\r\n    <row agent=\"Iivonnen Tastaralen\" agentid=\"3016341\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"1\" locationid=\"60001285\" locator=\"false\"/>\r\n    <row agent=\"Sienatsu Kitoras\" agentid=\"3016342\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"2\" locationid=\"60001393\" locator=\"false\"/>\r\n    <row agent=\"Haario Uokaa\" agentid=\"3016343\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"2\" locationid=\"60001261\" locator=\"false\"/>\r\n    <row agent=\"Heiskaras Mogikura\" agentid=\"3016344\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"2\" locationid=\"60001423\" locator=\"false\"/>\r\n    <row agent=\"Makkanto Mutanuma\" agentid=\"3016345\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"1\" locationid=\"60001384\" locator=\"false\"/>\r\n    <row agent=\"Kajari Shoma\" agentid=\"3016346\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"1\" locationid=\"60001399\" locator=\"false\"/>\r\n    <row agent=\"Ohbuta Eramoda\" agentid=\"3016347\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"1\" locationid=\"60001375\" locator=\"false\"/>\r\n    <row agent=\"Hananumo Orulen\" agentid=\"3016348\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"2\" locationid=\"60001261\" locator=\"false\"/>\r\n    <row agent=\"Urpiluola Tuken\" agentid=\"3016349\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"4\" locationid=\"60001288\" locator=\"false\"/>\r\n    <row agent=\"Sajusaki Tuivanaitoh\" agentid=\"3016350\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"1\" locationid=\"60001414\" locator=\"false\"/>\r\n    <row agent=\"Linilen Toivas\" agentid=\"3016351\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"3\" locationid=\"60001300\" locator=\"false\"/>\r\n    <row agent=\"Ikara Osharaki\" agentid=\"3016352\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"2\" locationid=\"60001399\" locator=\"false\"/>\r\n    <row agent=\"Areinoki Onima\" agentid=\"3016353\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"4\" locationid=\"60001300\" locator=\"false\"/>\r\n    <row agent=\"Mavila Nasonakko\" agentid=\"3016354\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"1\" locationid=\"60001312\" locator=\"false\"/>\r\n    <row agent=\"Umanen Airuken\" agentid=\"3016355\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"4\" locationid=\"60001354\" locator=\"false\"/>\r\n    <row agent=\"Haanjuro Ukanukka\" agentid=\"3016356\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"3\" locationid=\"60001408\" locator=\"false\"/>\r\n    <row agent=\"Sada Nakashami\" agentid=\"3016357\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"1\" locationid=\"60001327\" locator=\"false\"/>\r\n    <row agent=\"Hasoras Viraki\" agentid=\"3016358\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"2\" locationid=\"60001405\" locator=\"false\"/>\r\n    <row agent=\"Kakuwuori Veis\" agentid=\"3016359\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"1\" locationid=\"60001252\" locator=\"false\"/>\r\n    <row agent=\"Fune Parovuja\" agentid=\"3016360\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"4\" locationid=\"60001264\" locator=\"false\"/>\r\n    <row agent=\"Riteima Eyo\" agentid=\"3016361\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"3\" locationid=\"60001282\" locator=\"false\"/>\r\n    <row agent=\"Okonoja Naakko\" agentid=\"3016362\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"2\" locationid=\"60001267\" locator=\"false\"/>\r\n    <row agent=\"Obuchi Koja\" agentid=\"3016363\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"1\" locationid=\"60001297\" locator=\"false\"/>\r\n    <row agent=\"Sittoh Vieseri\" agentid=\"3016364\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"2\" locationid=\"60001297\" locator=\"false\"/>\r\n    <row agent=\"Otesawa Kosokaski\" agentid=\"3016365\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"3\" locationid=\"60001342\" locator=\"false\"/>\r\n    <row agent=\"Ishugaisen Tsuwisaya\" agentid=\"3016366\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"3\" locationid=\"60001348\" locator=\"false\"/>\r\n    <row agent=\"Karvalaisen Kuukka\" agentid=\"3016367\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"22\" level=\"3\" locationid=\"60001399\" locator=\"false\"/>\r\n    <row agent=\"Raurigonda Hykanima\" agentid=\"3016368\" agenttypeid=\"2\" corporationid=\"1000012\" divisionid=\"23\" level=\"2\" locationid=\"60001432\" locator=\"false\"/>\r\n    <row agent=\"Hakken Mata\" agentid=\"3016369\" agenttypeid=\"2\" corporationid=\"1000012\" divisionid=\"23\" level=\"2\" locationid=\"60001429\" locator=\"false\"/>\r\n    <row agent=\"Tsunala Nimmoda\" agentid=\"3016370\" agenttypeid=\"2\" corporationid=\"1000012\" divisionid=\"24\" level=\"1\" locationid=\"60001426\" locator=\"false\"/>\r\n    <row agent=\"Tatkashin Kontomon\" agentid=\"3016371\" agenttypeid=\"2\" corporationid=\"1000012\" divisionid=\"23\" level=\"4\" locationid=\"60001426\" locator=\"false\"/>\r\n    <row agent=\"Ikewaiken Ochokela\" agentid=\"3016372\" agenttypeid=\"2\" corporationid=\"1000012\" divisionid=\"24\" level=\"1\" locationid=\"60001426\" locator=\"false\"/>\r\n    <row agent=\"Sagai Tatuya\" agentid=\"3016373\" agenttypeid=\"2\" corporationid=\"1000012\" divisionid=\"24\" level=\"1\" locationid=\"60001426\" locator=\"false\"/>\r\n    <row agent=\"Eranen Mumoto\" agentid=\"3016374\" agenttypeid=\"2\" corporationid=\"1000012\" divisionid=\"24\" level=\"1\" locationid=\"60001432\" locator=\"false\"/>\r\n    <row agent=\"Rausmaa Kitera\" agentid=\"3016375\" agenttypeid=\"2\" corporationid=\"1000012\" divisionid=\"22\" level=\"2\" locationid=\"60001429\" locator=\"false\"/>\r\n    <row agent=\"Reiloken Tatimala\" agentid=\"3016376\" agenttypeid=\"2\" corporationid=\"1000012\" divisionid=\"22\" level=\"4\" locationid=\"60001426\" locator=\"false\"/>\r\n    <row agent=\"Kajikkila Araki\" agentid=\"3016377\" agenttypeid=\"2\" corporationid=\"1000012\" divisionid=\"24\" level=\"1\" locationid=\"60001429\" locator=\"false\"/>\r\n    <row agent=\"Kaarvonen Aizama\" agentid=\"3016378\" agenttypeid=\"2\" corporationid=\"1000012\" divisionid=\"22\" level=\"3\" locationid=\"60001432\" locator=\"false\"/>\r\n    <row agent=\"Huorone Resakka\" agentid=\"3016379\" agenttypeid=\"2\" corporationid=\"1000012\" divisionid=\"22\" level=\"3\" locationid=\"60001432\" locator=\"false\"/>\r\n    <row agent=\"Putokka Ohomala\" agentid=\"3016380\" agenttypeid=\"2\" corporationid=\"1000012\" divisionid=\"22\" level=\"3\" locationid=\"60001432\" locator=\"false\"/>\r\n    <row agent=\"Toranota Paarinela\" agentid=\"3016381\" agenttypeid=\"2\" corporationid=\"1000012\" divisionid=\"22\" level=\"2\" locationid=\"60001429\" locator=\"false\"/>\r\n    <row agent=\"Okakko Kokatoiken\" agentid=\"3016382\" agenttypeid=\"2\" corporationid=\"1000012\" divisionid=\"22\" level=\"4\" locationid=\"60001426\" locator=\"false\"/>\r\n    <row agent=\"Kanita Velkkairos\" agentid=\"3016383\" agenttypeid=\"2\" corporationid=\"1000012\" divisionid=\"22\" level=\"2\" locationid=\"60001426\" locator=\"false\"/>\r\n    <row agent=\"Kamken Arunmaa\" agentid=\"3016384\" agenttypeid=\"2\" corporationid=\"1000012\" divisionid=\"24\" level=\"1\" locationid=\"60001432\" locator=\"false\"/>\r\n    <row agent=\"Nihkuljakka Kuntaja\" agentid=\"3016385\" agenttypeid=\"2\" corporationid=\"1000012\" divisionid=\"24\" level=\"1\" locationid=\"60001426\" locator=\"false\"/>\r\n    <row agent=\"Mazawa Eerala\" agentid=\"3016386\" agenttypeid=\"2\" corporationid=\"1000012\" divisionid=\"24\" level=\"1\" locationid=\"60001426\" locator=\"false\"/>\r\n    <row agent=\"Eistinen Wabe\" agentid=\"3016387\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"24\" level=\"2\" locationid=\"60001519\" locator=\"false\"/>\r\n    <row agent=\"Vaakonen Kaka\" agentid=\"3016388\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"24\" level=\"1\" locationid=\"60001492\" locator=\"false\"/>\r\n    <row agent=\"Vartagesa Aiskio\" agentid=\"3016389\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"24\" level=\"2\" locationid=\"60001435\" locator=\"false\"/>\r\n    <row agent=\"Makeraka Hapinen\" agentid=\"3016390\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"24\" level=\"2\" locationid=\"60001444\" locator=\"false\"/>\r\n    <row agent=\"Aizama Juljukalmon\" agentid=\"3016391\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"22\" level=\"2\" locationid=\"60001510\" locator=\"false\"/>\r\n    <row agent=\"Mikakiemi Ishada\" agentid=\"3016392\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"22\" level=\"1\" locationid=\"60001486\" locator=\"false\"/>\r\n    <row agent=\"Mumimala Kamo\" agentid=\"3016393\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"22\" level=\"2\" locationid=\"60001495\" locator=\"false\"/>\r\n    <row agent=\"Amila Akujainen\" agentid=\"3016394\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"22\" level=\"4\" locationid=\"60001447\" locator=\"false\"/>\r\n    <row agent=\"Heimoto Hikalavuo\" agentid=\"3016395\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"22\" level=\"4\" locationid=\"60001468\" locator=\"false\"/>\r\n    <row agent=\"Jovvakko Airas\" agentid=\"3016396\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"22\" level=\"1\" locationid=\"60001465\" locator=\"false\"/>\r\n    <row agent=\"Ashoruda Maan\" agentid=\"3016397\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"22\" level=\"2\" locationid=\"60001501\" locator=\"false\"/>\r\n    <row agent=\"Totsikka Enakiri\" agentid=\"3016398\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"22\" level=\"3\" locationid=\"60001483\" locator=\"false\"/>\r\n    <row agent=\"Yoroshaitoh Arameki\" agentid=\"3016399\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"22\" level=\"2\" locationid=\"60001492\" locator=\"false\"/>\r\n    <row agent=\"Abata Kavalala\" agentid=\"3016400\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"22\" level=\"1\" locationid=\"60001507\" locator=\"false\"/>\r\n    <row agent=\"Javonen Haakari\" agentid=\"3016401\" agenttypeid=\"2\" corporationid=\"1000013\" divisionid=\"22\" level=\"4\" locationid=\"60001495\" locator=\"false\"/>\r\n    <row agent=\"Outabe Akova\" agentid=\"3016402\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"24\" level=\"2\" locationid=\"60001621\" locator=\"false\"/>\r\n    <row agent=\"Raala Uchomida\" agentid=\"3016403\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"24\" level=\"2\" locationid=\"60001606\" locator=\"false\"/>\r\n    <row agent=\"Alurami Konokkokka\" agentid=\"3016404\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"24\" level=\"1\" locationid=\"60001546\" locator=\"false\"/>\r\n    <row agent=\"Irjunen Sakeima\" agentid=\"3016405\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"24\" level=\"2\" locationid=\"60001579\" locator=\"false\"/>\r\n    <row agent=\"Ruontamon Itisuuras\" agentid=\"3016406\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"24\" level=\"1\" locationid=\"60001642\" locator=\"false\"/>\r\n    <row agent=\"Wakomon Fungabaiken\" agentid=\"3016407\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"24\" level=\"2\" locationid=\"60001591\" locator=\"false\"/>\r\n    <row agent=\"Apas Teis\" agentid=\"3016408\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"24\" level=\"3\" locationid=\"60001552\" locator=\"false\"/>\r\n    <row agent=\"Kakanen Maloras\" agentid=\"3016409\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"24\" level=\"4\" locationid=\"60001558\" locator=\"false\"/>\r\n    <row agent=\"Arpora Pyrata\" agentid=\"3016410\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"2\" locationid=\"60001636\" locator=\"false\"/>\r\n    <row agent=\"Misamera Pelvas\" agentid=\"3016411\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"1\" locationid=\"60001633\" locator=\"false\"/>\r\n    <row agent=\"Kumachi Miravo\" agentid=\"3016412\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"4\" locationid=\"60001540\" locator=\"false\"/>\r\n    <row agent=\"Airassaken Plorala\" agentid=\"3016413\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"1\" locationid=\"60001564\" locator=\"false\"/>\r\n    <row agent=\"Vassen Toiken\" agentid=\"3016414\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"2\" locationid=\"60001588\" locator=\"false\"/>\r\n    <row agent=\"Myyhera Genolen\" agentid=\"3016415\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"2\" locationid=\"60001585\" locator=\"false\"/>\r\n    <row agent=\"Hikka Tahvulen\" agentid=\"3016416\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"3\" locationid=\"60001558\" locator=\"false\"/>\r\n    <row agent=\"Pielen Oishukaikka\" agentid=\"3016417\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"4\" locationid=\"60001621\" locator=\"false\"/>\r\n    <row agent=\"Minimala Pyynola\" agentid=\"3016418\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"1\" locationid=\"60001552\" locator=\"false\"/>\r\n    <row agent=\"Heynotsu Oishonen\" agentid=\"3016419\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"1\" locationid=\"60001540\" locator=\"false\"/>\r\n    <row agent=\"Umizainen Kassenen\" agentid=\"3016420\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"1\" locationid=\"60001636\" locator=\"false\"/>\r\n    <row agent=\"Selala Oltta\" agentid=\"3016421\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"2\" locationid=\"60001636\" locator=\"false\"/>\r\n    <row agent=\"Tsuhtala Tannemichi\" agentid=\"3016422\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"3\" locationid=\"60001552\" locator=\"false\"/>\r\n    <row agent=\"Saiponas Matsikka\" agentid=\"3016423\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"1\" locationid=\"60001609\" locator=\"false\"/>\r\n    <row agent=\"Naken Aribusa\" agentid=\"3016424\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"1\" locationid=\"60001633\" locator=\"false\"/>\r\n    <row agent=\"Uuhigoken Imaka\" agentid=\"3016426\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"1\" locationid=\"60001639\" locator=\"false\"/>\r\n    <row agent=\"Paaronen Ahtogaiken\" agentid=\"3016427\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"2\" locationid=\"60001633\" locator=\"false\"/>\r\n    <row agent=\"Shintovas Inaala\" agentid=\"3016428\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"1\" locationid=\"60001639\" locator=\"false\"/>\r\n    <row agent=\"Morukka Ozanero\" agentid=\"3016429\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"2\" locationid=\"60001633\" locator=\"false\"/>\r\n    <row agent=\"Martoja Navala\" agentid=\"3016430\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"1\" locationid=\"60001570\" locator=\"false\"/>\r\n    <row agent=\"Penununen Vuotiras\" agentid=\"3016431\" agenttypeid=\"2\" corporationid=\"1000014\" divisionid=\"22\" level=\"3\" locationid=\"60001570\" locator=\"false\"/>\r\n    <row agent=\"Otaranta Sucgamon\" agentid=\"3016433\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"24\" level=\"3\" locationid=\"60001678\" locator=\"false\"/>\r\n    <row agent=\"Shirmagae Raskanen\" agentid=\"3016434\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"24\" level=\"3\" locationid=\"60001645\" locator=\"false\"/>\r\n    <row agent=\"Eziken Orsu\" agentid=\"3016435\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"24\" level=\"2\" locationid=\"60001744\" locator=\"false\"/>\r\n    <row agent=\"Saltoh Sutkamaa\" agentid=\"3016436\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"24\" level=\"3\" locationid=\"60001672\" locator=\"false\"/>\r\n    <row agent=\"Tomachi Uotolen\" agentid=\"3016437\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"24\" level=\"1\" locationid=\"60001681\" locator=\"false\"/>\r\n    <row agent=\"Tiurokka Isheya\" agentid=\"3016438\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"24\" level=\"1\" locationid=\"60001648\" locator=\"false\"/>\r\n    <row agent=\"Kulen Uoma\" agentid=\"3016439\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"24\" level=\"2\" locationid=\"60001744\" locator=\"false\"/>\r\n    <row agent=\"Pantosaiken Erashin\" agentid=\"3016440\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"4\" locationid=\"60001729\" locator=\"false\"/>\r\n    <row agent=\"Akilala Jas\" agentid=\"3016441\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"3\" locationid=\"60001690\" locator=\"false\"/>\r\n    <row agent=\"Kartaja Huorone\" agentid=\"3016442\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"3\" locationid=\"60001711\" locator=\"false\"/>\r\n    <row agent=\"Ouchonen Kurola\" agentid=\"3016443\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"24\" level=\"4\" locationid=\"60001696\" locator=\"false\"/>\r\n    <row agent=\"Nuntoru Soussaken\" agentid=\"3016444\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"24\" level=\"4\" locationid=\"60001687\" locator=\"false\"/>\r\n    <row agent=\"Suko Pekewara\" agentid=\"3016445\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"24\" level=\"3\" locationid=\"60001690\" locator=\"false\"/>\r\n    <row agent=\"Tanatsu Alomoinen\" agentid=\"3016446\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"24\" level=\"1\" locationid=\"60001696\" locator=\"false\"/>\r\n    <row agent=\"Rauriainen Pyynola\" agentid=\"3016447\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"24\" level=\"2\" locationid=\"60001735\" locator=\"false\"/>\r\n    <row agent=\"Uminishi Ozama\" agentid=\"3016448\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"24\" level=\"2\" locationid=\"60001747\" locator=\"false\"/>\r\n    <row agent=\"Pamon Korkkimo\" agentid=\"3016449\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"24\" level=\"3\" locationid=\"60001690\" locator=\"false\"/>\r\n    <row agent=\"Aretarkka Aakalen\" agentid=\"3016450\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"24\" level=\"3\" locationid=\"60001687\" locator=\"false\"/>\r\n    <row agent=\"Tamota Outalaakko\" agentid=\"3016451\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"1\" locationid=\"60001735\" locator=\"false\"/>\r\n    <row agent=\"Veinalen Elonko\" agentid=\"3016452\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"1\" locationid=\"60001720\" locator=\"false\"/>\r\n    <row agent=\"Ozara Hieletukka\" agentid=\"3016453\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"1\" locationid=\"60001735\" locator=\"false\"/>\r\n    <row agent=\"Teken Isimo\" agentid=\"3016454\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"1\" locationid=\"60001762\" locator=\"false\"/>\r\n    <row agent=\"Onavirpio Asorela\" agentid=\"3016455\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"1\" locationid=\"60001720\" locator=\"false\"/>\r\n    <row agent=\"Kuwa Hanteya\" agentid=\"3016456\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"4\" locationid=\"60001750\" locator=\"false\"/>\r\n    <row agent=\"Kimerela Okanela\" agentid=\"3016457\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"1\" locationid=\"60001648\" locator=\"false\"/>\r\n    <row agent=\"Furalen Uroki\" agentid=\"3016458\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"4\" locationid=\"60001735\" locator=\"false\"/>\r\n    <row agent=\"Onnokai Ishodaki\" agentid=\"3016459\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"1\" locationid=\"60001729\" locator=\"false\"/>\r\n    <row agent=\"Kovuo Egara\" agentid=\"3016460\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"2\" locationid=\"60001687\" locator=\"false\"/>\r\n    <row agent=\"Fungas Hautsagainen\" agentid=\"3016461\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"1\" locationid=\"60001672\" locator=\"false\"/>\r\n    <row agent=\"Kaljolen Haussi\" agentid=\"3016462\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"2\" locationid=\"60001729\" locator=\"false\"/>\r\n    <row agent=\"Koski Uisa\" agentid=\"3016463\" agenttypeid=\"2\" corporationid=\"1000015\" divisionid=\"22\" level=\"1\" locationid=\"60001651\" locator=\"false\"/>\r\n    <row agent=\"Roinanaksa Ashamakka\" agentid=\"3016464\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"22\" level=\"2\" locationid=\"60001816\" locator=\"false\"/>\r\n    <row agent=\"Hirtalen Sirichi\" agentid=\"3016465\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"22\" level=\"1\" locationid=\"60001786\" locator=\"false\"/>\r\n    <row agent=\"Kanta Wiromaa\" agentid=\"3016466\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"22\" level=\"1\" locationid=\"60001816\" locator=\"false\"/>\r\n    <row agent=\"Rautiainen Koslokka\" agentid=\"3016467\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"22\" level=\"1\" locationid=\"60001786\" locator=\"false\"/>\r\n    <row agent=\"Kimmeto Majus\" agentid=\"3016468\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"22\" level=\"2\" locationid=\"60001816\" locator=\"false\"/>\r\n    <row agent=\"Momaari Ogemi\" agentid=\"3016469\" agenttypeid=\"2\" corporationid=\"1000016\" divisionid=\"22\" level=\"3\" locationid=\"60001816\" locator=\"false\"/>\r\n    <row agent=\"Aunaa Sakka\" agentid=\"3016470\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"3\" locationid=\"60001885\" locator=\"false\"/>\r\n    <row agent=\"Kun Mirtoh\" agentid=\"3016471\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"3\" locationid=\"60001981\" locator=\"false\"/>\r\n    <row agent=\"Rumaa Saltomon\" agentid=\"3016472\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"3\" locationid=\"60001834\" locator=\"false\"/>\r\n    <row agent=\"Hagaimo Tuuljanen\" agentid=\"3016473\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"2\" locationid=\"60001990\" locator=\"false\"/>\r\n    <row agent=\"Ynen Kassigainen\" agentid=\"3016474\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001900\" locator=\"false\"/>\r\n    <row agent=\"Kojosiya Oksitei\" agentid=\"3016475\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001843\" locator=\"false\"/>\r\n    <row agent=\"Aberas Rakinen\" agentid=\"3016476\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001912\" locator=\"false\"/>\r\n    <row agent=\"Kaskilen Kaartenen\" agentid=\"3016477\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"2\" locationid=\"60001963\" locator=\"false\"/>\r\n    <row agent=\"Yokasen Onniainen\" agentid=\"3016478\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"2\" locationid=\"60001930\" locator=\"false\"/>\r\n    <row agent=\"Jila Antturas\" agentid=\"3016479\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"3\" locationid=\"60001840\" locator=\"false\"/>\r\n    <row agent=\"Mimetsoma Jaasinen\" agentid=\"3016480\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001921\" locator=\"false\"/>\r\n    <row agent=\"Homachono Sarmaras\" agentid=\"3016481\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"22\" level=\"2\" locationid=\"60001945\" locator=\"false\"/>\r\n    <row agent=\"Otsalainen Alalomo\" agentid=\"3016482\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"24\" level=\"2\" locationid=\"60001975\" locator=\"false\"/>\r\n    <row agent=\"Itkumo Amppe\" agentid=\"3016483\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"24\" level=\"1\" locationid=\"60001843\" locator=\"false\"/>\r\n    <row agent=\"Kikosuda Isha\" agentid=\"3016484\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"24\" level=\"3\" locationid=\"60001837\" locator=\"false\"/>\r\n    <row agent=\"Linachi Kion\" agentid=\"3016485\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"24\" level=\"2\" locationid=\"60001969\" locator=\"false\"/>\r\n    <row agent=\"Uesin Artaja\" agentid=\"3016486\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"24\" level=\"2\" locationid=\"60001957\" locator=\"false\"/>\r\n    <row agent=\"Raikora Kannen\" agentid=\"3016487\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"24\" level=\"2\" locationid=\"60001849\" locator=\"false\"/>\r\n    <row agent=\"Ahvenen Risku\" agentid=\"3016488\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"24\" level=\"1\" locationid=\"60001975\" locator=\"false\"/>\r\n    <row agent=\"Sokkalen Oraliola\" agentid=\"3016489\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"24\" level=\"1\" locationid=\"60001864\" locator=\"false\"/>\r\n    <row agent=\"Heinulaila Yaris\" agentid=\"3016490\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"24\" level=\"1\" locationid=\"60001948\" locator=\"false\"/>\r\n    <row agent=\"Mitoh Kantatoh\" agentid=\"3016491\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"24\" level=\"1\" locationid=\"60001972\" locator=\"false\"/>\r\n    <row agent=\"Vuorvanen Ueshuda\" agentid=\"3016492\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"24\" level=\"3\" locationid=\"60001888\" locator=\"false\"/>\r\n    <row agent=\"Ashomon Otanen\" agentid=\"3016493\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"24\" level=\"1\" locationid=\"60001885\" locator=\"false\"/>\r\n    <row agent=\"Nurashaisen Jaasaken\" agentid=\"3016494\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"24\" level=\"1\" locationid=\"60001834\" locator=\"false\"/>\r\n    <row agent=\"Akkitoh Inulumo\" agentid=\"3016495\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"24\" level=\"1\" locationid=\"60001933\" locator=\"false\"/>\r\n    <row agent=\"Akkatoh Vijouchi\" agentid=\"3016496\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"24\" level=\"1\" locationid=\"60001924\" locator=\"false\"/>\r\n    <row agent=\"Kuski Koukka\" agentid=\"3016497\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"24\" level=\"2\" locationid=\"60001933\" locator=\"false\"/>\r\n    <row agent=\"Uosula Iwaras\" agentid=\"3016498\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"24\" level=\"1\" locationid=\"60001831\" locator=\"false\"/>\r\n    <row agent=\"Saigunen Pilakanta\" agentid=\"3016499\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"24\" level=\"3\" locationid=\"60001885\" locator=\"false\"/>\r\n    <row agent=\"Itkula Ahupittoh\" agentid=\"3016500\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"24\" level=\"4\" locationid=\"60001885\" locator=\"false\"/>\r\n    <row agent=\"Tachomon Velenamo\" agentid=\"3016501\" agenttypeid=\"2\" corporationid=\"1000017\" divisionid=\"24\" level=\"4\" locationid=\"60001969\" locator=\"false\"/>\r\n    <row agent=\"Ozino Haimulen\" agentid=\"3016502\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"1\" locationid=\"60002053\" locator=\"false\"/>\r\n    <row agent=\"Niltasen Onuori\" agentid=\"3016503\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"3\" locationid=\"60002041\" locator=\"false\"/>\r\n    <row agent=\"Higawiri Ban\" agentid=\"3016504\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"1\" locationid=\"60002020\" locator=\"false\"/>\r\n    <row agent=\"Unachi Molemaimon\" agentid=\"3016505\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"1\" locationid=\"60002059\" locator=\"false\"/>\r\n    <row agent=\"Ibeshi Keirsaa\" agentid=\"3016506\" agenttypeid=\"2\" corporationid=\"1000018\" divisionid=\"22\" level=\"1\" locationid=\"60002044\" locator=\"false\"/>\r\n    <row agent=\"Konuoma Kavuo\" agentid=\"3016507\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"24\" level=\"3\" locationid=\"60002134\" locator=\"false\"/>\r\n    <row agent=\"Ohvalainen Mawigechi\" agentid=\"3016508\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"24\" level=\"1\" locationid=\"60002173\" locator=\"false\"/>\r\n    <row agent=\"Kuori Tuih\" agentid=\"3016509\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"24\" level=\"2\" locationid=\"60002077\" locator=\"false\"/>\r\n    <row agent=\"Ikasari Mihaken\" agentid=\"3016510\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"24\" level=\"1\" locationid=\"60002215\" locator=\"false\"/>\r\n    <row agent=\"Aihonshomon Oshunala\" agentid=\"3016511\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"24\" level=\"1\" locationid=\"60002158\" locator=\"false\"/>\r\n    <row agent=\"Isunumi Kogamari\" agentid=\"3016512\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"24\" level=\"4\" locationid=\"60002146\" locator=\"false\"/>\r\n    <row agent=\"Somon Mukochi\" agentid=\"3016513\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"3\" locationid=\"60002122\" locator=\"false\"/>\r\n    <row agent=\"Nakkito Haisuras\" agentid=\"3016514\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"3\" locationid=\"60002092\" locator=\"false\"/>\r\n    <row agent=\"Mulkin Kylmabe\" agentid=\"3016515\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"2\" locationid=\"60002227\" locator=\"false\"/>\r\n    <row agent=\"Uma Haralato\" agentid=\"3016516\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"3\" locationid=\"60002119\" locator=\"false\"/>\r\n    <row agent=\"Ralirashi Okimo\" agentid=\"3016517\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"4\" locationid=\"60002200\" locator=\"false\"/>\r\n    <row agent=\"Lisika Sutenela\" agentid=\"3016518\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"1\" locationid=\"60002080\" locator=\"false\"/>\r\n    <row agent=\"Suvinila Pivas\" agentid=\"3016520\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"2\" locationid=\"60002119\" locator=\"false\"/>\r\n    <row agent=\"Rehtumi Ukkuo\" agentid=\"3016521\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"2\" locationid=\"60002149\" locator=\"false\"/>\r\n    <row agent=\"Attoh Akalartoh\" agentid=\"3016522\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"1\" locationid=\"60002113\" locator=\"false\"/>\r\n    <row agent=\"Naisto Vala\" agentid=\"3016523\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"24\" level=\"1\" locationid=\"60002179\" locator=\"false\"/>\r\n    <row agent=\"Isekato Hontaras\" agentid=\"3016524\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"2\" locationid=\"60002158\" locator=\"false\"/>\r\n    <row agent=\"Itso Kazakoto\" agentid=\"3016525\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"4\" locationid=\"60002191\" locator=\"false\"/>\r\n    <row agent=\"Tanala Inavala\" agentid=\"3016526\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"2\" locationid=\"60002170\" locator=\"false\"/>\r\n    <row agent=\"Jiksokainen Ursarinen\" agentid=\"3016527\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"2\" locationid=\"60002086\" locator=\"false\"/>\r\n    <row agent=\"Oriai Ochoras\" agentid=\"3016528\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"3\" locationid=\"60002143\" locator=\"false\"/>\r\n    <row agent=\"Sutelomon Sima\" agentid=\"3016529\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"3\" locationid=\"60002134\" locator=\"false\"/>\r\n    <row agent=\"Ruus Nikkasi\" agentid=\"3016530\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"4\" locationid=\"60002098\" locator=\"false\"/>\r\n    <row agent=\"Akichiya Futumi\" agentid=\"3016531\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"3\" locationid=\"60002077\" locator=\"false\"/>\r\n    <row agent=\"Okila Majvorri\" agentid=\"3016532\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"2\" locationid=\"60002119\" locator=\"false\"/>\r\n    <row agent=\"Mikiteimo Hekken\" agentid=\"3016533\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"2\" locationid=\"60002140\" locator=\"false\"/>\r\n    <row agent=\"Tawalen Vuoskasairos\" agentid=\"3016534\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"3\" locationid=\"60002197\" locator=\"false\"/>\r\n    <row agent=\"Oksen Fusago\" agentid=\"3016535\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"2\" locationid=\"60002176\" locator=\"false\"/>\r\n    <row agent=\"Juunigaishi Outoshin\" agentid=\"3016536\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"1\" locationid=\"60002224\" locator=\"false\"/>\r\n    <row agent=\"Shatsu Todaki\" agentid=\"3016537\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"2\" locationid=\"60002188\" locator=\"false\"/>\r\n    <row agent=\"Ohio Taskaras\" agentid=\"3016538\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"2\" locationid=\"60002077\" locator=\"false\"/>\r\n    <row agent=\"Aulinen Kekoken\" agentid=\"3016539\" agenttypeid=\"2\" corporationid=\"1000019\" divisionid=\"23\" level=\"4\" locationid=\"60002104\" locator=\"false\"/>\r\n    <row agent=\"Tuuraleto Hisilala\" agentid=\"3016540\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"2\" locationid=\"60002323\" locator=\"false\"/>\r\n    <row agent=\"Gonevalo Nakkatoh\" agentid=\"3016541\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"1\" locationid=\"60002362\" locator=\"false\"/>\r\n    <row agent=\"Mikata Polarala\" agentid=\"3016542\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"2\" locationid=\"60002323\" locator=\"false\"/>\r\n    <row agent=\"Tigas Soramata\" agentid=\"3016543\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"2\" locationid=\"60002323\" locator=\"false\"/>\r\n    <row agent=\"Ichomala Ouchiras\" agentid=\"3016544\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"24\" level=\"1\" locationid=\"60002272\" locator=\"false\"/>\r\n    <row agent=\"Ehu Vantoh\" agentid=\"3016545\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"24\" level=\"3\" locationid=\"60002299\" locator=\"false\"/>\r\n    <row agent=\"Vain Yoroshaitoh\" agentid=\"3016546\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"24\" level=\"2\" locationid=\"60002329\" locator=\"false\"/>\r\n    <row agent=\"Aidonen Elotora\" agentid=\"3016547\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"24\" level=\"2\" locationid=\"60002272\" locator=\"false\"/>\r\n    <row agent=\"Suntumainen Otsadan\" agentid=\"3016548\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"24\" level=\"3\" locationid=\"60002332\" locator=\"false\"/>\r\n    <row agent=\"Rotta Aiko\" agentid=\"3016549\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"24\" level=\"2\" locationid=\"60002350\" locator=\"false\"/>\r\n    <row agent=\"Turppo Futsen\" agentid=\"3016550\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"24\" level=\"1\" locationid=\"60002263\" locator=\"false\"/>\r\n    <row agent=\"Outoras Ajanen\" agentid=\"3016551\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"24\" level=\"1\" locationid=\"60002326\" locator=\"false\"/>\r\n    <row agent=\"Ohkipas Askaras\" agentid=\"3016553\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"3\" locationid=\"60002323\" locator=\"false\"/>\r\n    <row agent=\"Raustilo Nesenoilen\" agentid=\"3016554\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"24\" level=\"3\" locationid=\"60002356\" locator=\"false\"/>\r\n    <row agent=\"Korkunaiken Havaras\" agentid=\"3016555\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"24\" level=\"2\" locationid=\"60002362\" locator=\"false\"/>\r\n    <row agent=\"Ukkoken Toshusai\" agentid=\"3016556\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"24\" level=\"2\" locationid=\"60002302\" locator=\"false\"/>\r\n    <row agent=\"Ga Suomonoksa\" agentid=\"3016557\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"24\" level=\"2\" locationid=\"60002296\" locator=\"false\"/>\r\n    <row agent=\"Taksabe Jishadan\" agentid=\"3016558\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"1\" locationid=\"60002305\" locator=\"false\"/>\r\n    <row agent=\"Kajayeda Ernalen\" agentid=\"3016559\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"3\" locationid=\"60002266\" locator=\"false\"/>\r\n    <row agent=\"Arvalen Reurmanen\" agentid=\"3016560\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"4\" locationid=\"60002317\" locator=\"false\"/>\r\n    <row agent=\"Ookirai Kurkashin\" agentid=\"3016561\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"2\" locationid=\"60002263\" locator=\"false\"/>\r\n    <row agent=\"Oichontiras Chikaroda\" agentid=\"3016562\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"3\" locationid=\"60002254\" locator=\"false\"/>\r\n    <row agent=\"Shitsu Ashoma\" agentid=\"3016563\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"2\" locationid=\"60002287\" locator=\"false\"/>\r\n    <row agent=\"Virtoh Raukomon\" agentid=\"3016564\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"3\" locationid=\"60002263\" locator=\"false\"/>\r\n    <row agent=\"Irras Unanaitoh\" agentid=\"3016565\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"1\" locationid=\"60002266\" locator=\"false\"/>\r\n    <row agent=\"Airatomon Kidurouchi\" agentid=\"3016566\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"2\" locationid=\"60002299\" locator=\"false\"/>\r\n    <row agent=\"Hageken Ku\" agentid=\"3016567\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"2\" locationid=\"60002335\" locator=\"false\"/>\r\n    <row agent=\"Ansunainen Miken\" agentid=\"3016568\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"1\" locationid=\"60002326\" locator=\"false\"/>\r\n    <row agent=\"Anuken Urpalen\" agentid=\"3016569\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"4\" locationid=\"60002299\" locator=\"false\"/>\r\n    <row agent=\"Kiukkaa Virtoh\" agentid=\"3016570\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"1\" locationid=\"60002347\" locator=\"false\"/>\r\n    <row agent=\"Irila Issakai\" agentid=\"3016571\" agenttypeid=\"4\" corporationid=\"1000020\" divisionid=\"18\" level=\"3\" locationid=\"60002245\" locator=\"false\"/>\r\n    <row agent=\"Egata Haarvei\" agentid=\"3016572\" agenttypeid=\"2\" corporationid=\"1000021\" divisionid=\"22\" level=\"3\" locationid=\"60002365\" locator=\"false\"/>\r\n    <row agent=\"Shama Tamogas\" agentid=\"3016573\" agenttypeid=\"2\" corporationid=\"1000021\" divisionid=\"22\" level=\"1\" locationid=\"60002365\" locator=\"false\"/>\r\n    <row agent=\"Itkumo Mihishima\" agentid=\"3016574\" agenttypeid=\"2\" corporationid=\"1000021\" divisionid=\"24\" level=\"2\" locationid=\"60002365\" locator=\"false\"/>\r\n    <row agent=\"Abokaipia Kusoni\" agentid=\"3016575\" agenttypeid=\"2\" corporationid=\"1000021\" divisionid=\"24\" level=\"2\" locationid=\"60002365\" locator=\"false\"/>\r\n    <row agent=\"Tsunanela Aite\" agentid=\"3016576\" agenttypeid=\"2\" corporationid=\"1000021\" divisionid=\"22\" level=\"1\" locationid=\"60002365\" locator=\"false\"/>\r\n    <row agent=\"Akuteinen Tamiya\" agentid=\"3016577\" agenttypeid=\"2\" corporationid=\"1000021\" divisionid=\"22\" level=\"2\" locationid=\"60002365\" locator=\"false\"/>\r\n    <row agent=\"Kuotalaisen Hamabairos\" agentid=\"3016578\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"23\" level=\"2\" locationid=\"60002389\" locator=\"false\"/>\r\n    <row agent=\"Hevas Muvila\" agentid=\"3016579\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"23\" level=\"4\" locationid=\"60002401\" locator=\"false\"/>\r\n    <row agent=\"Endoras Sointamon\" agentid=\"3016580\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"23\" level=\"2\" locationid=\"60002374\" locator=\"false\"/>\r\n    <row agent=\"Hotami Kohjus\" agentid=\"3016581\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"23\" level=\"2\" locationid=\"60002413\" locator=\"false\"/>\r\n    <row agent=\"Naukko Shimala\" agentid=\"3016582\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"23\" level=\"1\" locationid=\"60002374\" locator=\"false\"/>\r\n    <row agent=\"Harenala Oinartiken\" agentid=\"3016583\" agenttypeid=\"2\" corporationid=\"1000022\" divisionid=\"23\" level=\"4\" locationid=\"60002410\" locator=\"false\"/>\r\n    <row agent=\"Ahlen Vainela\" agentid=\"3016584\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"2\" locationid=\"60002470\" locator=\"false\"/>\r\n    <row agent=\"Pattoh Koppiro\" agentid=\"3016585\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"3\" locationid=\"60002479\" locator=\"false\"/>\r\n    <row agent=\"Oshasai Tanhala\" agentid=\"3016586\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"1\" locationid=\"60002524\" locator=\"false\"/>\r\n    <row agent=\"Junsen Suyata\" agentid=\"3016587\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"2\" locationid=\"60002563\" locator=\"false\"/>\r\n    <row agent=\"Oikiras Vakawaki\" agentid=\"3016588\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"3\" locationid=\"60002581\" locator=\"false\"/>\r\n    <row agent=\"Massiken Ochisawa\" agentid=\"3016589\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"2\" locationid=\"60002596\" locator=\"false\"/>\r\n    <row agent=\"Ohmorainen Orporas\" agentid=\"3016590\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"1\" locationid=\"60002560\" locator=\"false\"/>\r\n    <row agent=\"Valtoh Kanenen\" agentid=\"3016591\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"3\" locationid=\"60002638\" locator=\"false\"/>\r\n    <row agent=\"Seima Asutelo\" agentid=\"3016592\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"3\" locationid=\"60002590\" locator=\"false\"/>\r\n    <row agent=\"Piekko Tananola\" agentid=\"3016593\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"2\" locationid=\"60002518\" locator=\"false\"/>\r\n    <row agent=\"Otula Uemishenen\" agentid=\"3016594\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"1\" locationid=\"60002638\" locator=\"false\"/>\r\n    <row agent=\"Osmon Okula\" agentid=\"3016595\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"1\" locationid=\"60002515\" locator=\"false\"/>\r\n    <row agent=\"Valemata Susilakko\" agentid=\"3016596\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"3\" locationid=\"60002515\" locator=\"false\"/>\r\n    <row agent=\"Sappureilen Uminishi\" agentid=\"3016597\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"2\" locationid=\"60002581\" locator=\"false\"/>\r\n    <row agent=\"Muvila Milkina\" agentid=\"3016598\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"2\" locationid=\"60002446\" locator=\"false\"/>\r\n    <row agent=\"Kaurmoras Uesilen\" agentid=\"3016599\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"2\" locationid=\"60002521\" locator=\"false\"/>\r\n    <row agent=\"Inunen Yajairo\" agentid=\"3016600\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"3\" locationid=\"60002611\" locator=\"false\"/>\r\n    <row agent=\"Nuken Suitonen\" agentid=\"3016601\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"3\" locationid=\"60002428\" locator=\"false\"/>\r\n    <row agent=\"Harkuma Aidanen\" agentid=\"3016602\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"2\" locationid=\"60002581\" locator=\"false\"/>\r\n    <row agent=\"Yarela Ohio\" agentid=\"3016604\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"2\" locationid=\"60002452\" locator=\"false\"/>\r\n    <row agent=\"Tera Kasola\" agentid=\"3016605\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"1\" locationid=\"60002512\" locator=\"false\"/>\r\n    <row agent=\"Tela Alieto\" agentid=\"3016606\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"1\" locationid=\"60002554\" locator=\"false\"/>\r\n    <row agent=\"Urala Se\" agentid=\"3016607\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"3\" locationid=\"60002656\" locator=\"false\"/>\r\n    <row agent=\"Uraarala Kigiken\" agentid=\"3016608\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"1\" locationid=\"60002566\" locator=\"false\"/>\r\n    <row agent=\"Itamo Ishaida\" agentid=\"3016609\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"2\" locationid=\"60002563\" locator=\"false\"/>\r\n    <row agent=\"Kukuta Furena\" agentid=\"3016610\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"1\" locationid=\"60002548\" locator=\"false\"/>\r\n    <row agent=\"Vin Menen\" agentid=\"3016611\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"1\" locationid=\"60002515\" locator=\"false\"/>\r\n    <row agent=\"Pivas Oishami\" agentid=\"3016612\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002548\" locator=\"false\"/>\r\n    <row agent=\"Sigoshioka Okio\" agentid=\"3016613\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002671\" locator=\"false\"/>\r\n    <row agent=\"Tokkitainen Talokela\" agentid=\"3016614\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002611\" locator=\"false\"/>\r\n    <row agent=\"Oilulin Pisato\" agentid=\"3016615\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"3\" locationid=\"60002440\" locator=\"false\"/>\r\n    <row agent=\"Tekomon Shenji\" agentid=\"3016616\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002578\" locator=\"false\"/>\r\n    <row agent=\"Mochi Isken\" agentid=\"3016617\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002674\" locator=\"false\"/>\r\n    <row agent=\"Alato Tokkitoh\" agentid=\"3016618\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002458\" locator=\"false\"/>\r\n    <row agent=\"Kurtamailen Livala\" agentid=\"3016619\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002680\" locator=\"false\"/>\r\n    <row agent=\"Kamadainen Tokinaris\" agentid=\"3016620\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002617\" locator=\"false\"/>\r\n    <row agent=\"Entti Kama\" agentid=\"3016621\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002581\" locator=\"false\"/>\r\n    <row agent=\"Mervas Kabetoila\" agentid=\"3016622\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002467\" locator=\"false\"/>\r\n    <row agent=\"Ohulainen Ban\" agentid=\"3016623\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002560\" locator=\"false\"/>\r\n    <row agent=\"Akesma Ubura\" agentid=\"3016624\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"3\" locationid=\"60002626\" locator=\"false\"/>\r\n    <row agent=\"Riki Tsutola\" agentid=\"3016625\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002527\" locator=\"false\"/>\r\n    <row agent=\"Airusen Orsunen\" agentid=\"3016626\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"3\" locationid=\"60002503\" locator=\"false\"/>\r\n    <row agent=\"Kauniainen Kundanin\" agentid=\"3016627\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"3\" locationid=\"60002611\" locator=\"false\"/>\r\n    <row agent=\"Eskanen Paatavainen\" agentid=\"3016628\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"2\" locationid=\"60002485\" locator=\"false\"/>\r\n    <row agent=\"Halvas Isato\" agentid=\"3016629\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"24\" level=\"1\" locationid=\"60002731\" locator=\"false\"/>\r\n    <row agent=\"Tattikko Hollalaila\" agentid=\"3016630\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"24\" level=\"1\" locationid=\"60002728\" locator=\"false\"/>\r\n    <row agent=\"Puitsatoh Ansiainen\" agentid=\"3016631\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"24\" level=\"2\" locationid=\"60002725\" locator=\"false\"/>\r\n    <row agent=\"Satama Asenmaa\" agentid=\"3016632\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"1\" locationid=\"60002719\" locator=\"false\"/>\r\n    <row agent=\"Renin Heleneto\" agentid=\"3016633\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"1\" locationid=\"60002728\" locator=\"false\"/>\r\n    <row agent=\"Hetulato Enna\" agentid=\"3016634\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"2\" locationid=\"60002728\" locator=\"false\"/>\r\n    <row agent=\"Mikori Aulvio\" agentid=\"3016635\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"4\" locationid=\"60002728\" locator=\"false\"/>\r\n    <row agent=\"Inoki Siltunainen\" agentid=\"3016636\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"3\" locationid=\"60002716\" locator=\"false\"/>\r\n    <row agent=\"Imaja Saisio\" agentid=\"3016637\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"2\" locationid=\"60002731\" locator=\"false\"/>\r\n    <row agent=\"Tiusmulen Sinimenji\" agentid=\"3016638\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"2\" locationid=\"60002707\" locator=\"false\"/>\r\n    <row agent=\"Aideken Nierobairos\" agentid=\"3016639\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"2\" locationid=\"60002719\" locator=\"false\"/>\r\n    <row agent=\"Renin Kunkkoja\" agentid=\"3016640\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"4\" locationid=\"60002701\" locator=\"false\"/>\r\n    <row agent=\"Ogedora Koishi\" agentid=\"3016641\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"1\" locationid=\"60002701\" locator=\"false\"/>\r\n    <row agent=\"Aivira Erkkanen\" agentid=\"3016642\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"3\" locationid=\"60002701\" locator=\"false\"/>\r\n    <row agent=\"Poukinen Ukilen\" agentid=\"3016643\" agenttypeid=\"2\" corporationid=\"1000024\" divisionid=\"22\" level=\"1\" locationid=\"60002728\" locator=\"false\"/>\r\n    <row agent=\"Kovapio Kamporailen\" agentid=\"3016644\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"1\" locationid=\"60002788\" locator=\"false\"/>\r\n    <row agent=\"Visolala Poura\" agentid=\"3016645\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"3\" locationid=\"60002770\" locator=\"false\"/>\r\n    <row agent=\"Kisada Oinekken\" agentid=\"3016646\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"3\" locationid=\"60002902\" locator=\"false\"/>\r\n    <row agent=\"Asalola Uesa\" agentid=\"3016647\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"2\" locationid=\"60002905\" locator=\"false\"/>\r\n    <row agent=\"Akas Otsiainen\" agentid=\"3016648\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"2\" locationid=\"60002779\" locator=\"false\"/>\r\n    <row agent=\"Pyyrota Arada\" agentid=\"3016649\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"2\" locationid=\"60002740\" locator=\"false\"/>\r\n    <row agent=\"Egonala Asimara\" agentid=\"3016650\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"2\" locationid=\"60002776\" locator=\"false\"/>\r\n    <row agent=\"Horas Purkka\" agentid=\"3016651\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"4\" locationid=\"60002785\" locator=\"false\"/>\r\n    <row agent=\"Tanorola Ohmalen\" agentid=\"3016652\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"2\" locationid=\"60002761\" locator=\"false\"/>\r\n    <row agent=\"Ova Asmi\" agentid=\"3016653\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"2\" locationid=\"60002734\" locator=\"false\"/>\r\n    <row agent=\"Soshin Ieyetsomon\" agentid=\"3016654\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"3\" locationid=\"60002893\" locator=\"false\"/>\r\n    <row agent=\"Aizaken Shusiainen\" agentid=\"3016655\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"4\" locationid=\"60002803\" locator=\"false\"/>\r\n    <row agent=\"Ahtela Anttasen\" agentid=\"3016656\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"2\" locationid=\"60002749\" locator=\"false\"/>\r\n    <row agent=\"Akuu Onochi\" agentid=\"3016657\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"1\" locationid=\"60002749\" locator=\"false\"/>\r\n    <row agent=\"Tiuh Onneken\" agentid=\"3016658\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"2\" locationid=\"60002848\" locator=\"false\"/>\r\n    <row agent=\"Antama Ronnen\" agentid=\"3016659\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"3\" locationid=\"60002836\" locator=\"false\"/>\r\n    <row agent=\"Yoembora Airami\" agentid=\"3016660\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"2\" locationid=\"60002752\" locator=\"false\"/>\r\n    <row agent=\"Veisto Tivalo\" agentid=\"3016661\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"3\" locationid=\"60002752\" locator=\"false\"/>\r\n    <row agent=\"Mamanoi Jenus\" agentid=\"3016662\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"3\" locationid=\"60002758\" locator=\"false\"/>\r\n    <row agent=\"Aratani Endagas\" agentid=\"3016663\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"1\" locationid=\"60002866\" locator=\"false\"/>\r\n    <row agent=\"Okie Kaseri\" agentid=\"3016664\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"2\" locationid=\"60002788\" locator=\"false\"/>\r\n    <row agent=\"Pemmiya Peskara\" agentid=\"3016665\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"2\" locationid=\"60002881\" locator=\"false\"/>\r\n    <row agent=\"Pyysaro Onnomon\" agentid=\"3016666\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"2\" locationid=\"60002734\" locator=\"false\"/>\r\n    <row agent=\"Iidormanen Iesala\" agentid=\"3016667\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"2\" locationid=\"60002824\" locator=\"false\"/>\r\n    <row agent=\"Halulen Heinulaila\" agentid=\"3016668\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"1\" locationid=\"60002905\" locator=\"false\"/>\r\n    <row agent=\"Otakai Ashe\" agentid=\"3016669\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"4\" locationid=\"60002890\" locator=\"false\"/>\r\n    <row agent=\"Nakkin Onilesvuo\" agentid=\"3016671\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"2\" locationid=\"60002851\" locator=\"false\"/>\r\n    <row agent=\"Ila Limmamon\" agentid=\"3016672\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"1\" locationid=\"60002887\" locator=\"false\"/>\r\n    <row agent=\"Veinepas Yarai\" agentid=\"3016673\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"2\" locationid=\"60002911\" locator=\"false\"/>\r\n    <row agent=\"Egawiri Mossabusen\" agentid=\"3016674\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"3\" locationid=\"60002830\" locator=\"false\"/>\r\n    <row agent=\"Mivalve Kun\" agentid=\"3016675\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"2\" locationid=\"60002815\" locator=\"false\"/>\r\n    <row agent=\"Tashudan Shizomi\" agentid=\"3016676\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"1\" locationid=\"60002911\" locator=\"false\"/>\r\n    <row agent=\"Omijarske Pauriainen\" agentid=\"3016677\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"3\" locationid=\"60002890\" locator=\"false\"/>\r\n    <row agent=\"Yarjonoisen Koshamagae\" agentid=\"3016679\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"1\" locationid=\"60002830\" locator=\"false\"/>\r\n    <row agent=\"Hurakka Eksa\" agentid=\"3016680\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"3\" locationid=\"60002815\" locator=\"false\"/>\r\n    <row agent=\"Shisanela Poraila\" agentid=\"3016681\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"3\" locationid=\"60002773\" locator=\"false\"/>\r\n    <row agent=\"Paakata Urpara\" agentid=\"3016682\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"1\" locationid=\"60002788\" locator=\"false\"/>\r\n    <row agent=\"Penaka Mogenainen\" agentid=\"3016683\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"1\" locationid=\"60002866\" locator=\"false\"/>\r\n    <row agent=\"Poiras Alaila\" agentid=\"3016684\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"2\" locationid=\"60002737\" locator=\"false\"/>\r\n    <row agent=\"Areyara Vartoh\" agentid=\"3016685\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"22\" level=\"2\" locationid=\"60002800\" locator=\"false\"/>\r\n    <row agent=\"Tuon Koimota\" agentid=\"3016686\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"3\" locationid=\"60002803\" locator=\"false\"/>\r\n    <row agent=\"Ichoriya Orailoho\" agentid=\"3016687\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"3\" locationid=\"60002890\" locator=\"false\"/>\r\n    <row agent=\"Heitoya Oshanala\" agentid=\"3016688\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"3\" locationid=\"60002890\" locator=\"false\"/>\r\n    <row agent=\"Akoniomaa Juukkuoma\" agentid=\"3016689\" agenttypeid=\"2\" corporationid=\"1000025\" divisionid=\"24\" level=\"3\" locationid=\"60002782\" locator=\"false\"/>\r\n    <row agent=\"Aragas Ohmamon\" agentid=\"3016690\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"1\" locationid=\"60003031\" locator=\"false\"/>\r\n    <row agent=\"Roila Haikenaras\" agentid=\"3016691\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"3\" locationid=\"60002962\" locator=\"false\"/>\r\n    <row agent=\"Rammeki Ruon\" agentid=\"3016692\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"2\" locationid=\"60002983\" locator=\"false\"/>\r\n    <row agent=\"Hertukka Yonskosen\" agentid=\"3016693\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"3\" locationid=\"60003001\" locator=\"false\"/>\r\n    <row agent=\"Uotoh Soganoto\" agentid=\"3016694\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"1\" locationid=\"60002938\" locator=\"false\"/>\r\n    <row agent=\"Asaki Ogora\" agentid=\"3016695\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"3\" locationid=\"60002998\" locator=\"false\"/>\r\n    <row agent=\"Onami Sundan\" agentid=\"3016696\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"2\" locationid=\"60002935\" locator=\"false\"/>\r\n    <row agent=\"Nallaken Ylama\" agentid=\"3016697\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"1\" locationid=\"60003022\" locator=\"false\"/>\r\n    <row agent=\"Hakkomogas Heimune\" agentid=\"3016698\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"3\" locationid=\"60002986\" locator=\"false\"/>\r\n    <row agent=\"Imaala Toipas\" agentid=\"3016699\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"1\" locationid=\"60002962\" locator=\"false\"/>\r\n    <row agent=\"Hannaken Shonen\" agentid=\"3016700\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"2\" locationid=\"60002914\" locator=\"false\"/>\r\n    <row agent=\"Tabanachi Pojus\" agentid=\"3016701\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"1\" locationid=\"60002971\" locator=\"false\"/>\r\n    <row agent=\"Chin Irjalamon\" agentid=\"3016702\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"1\" locationid=\"60002986\" locator=\"false\"/>\r\n    <row agent=\"Uraa Ueni\" agentid=\"3016703\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"1\" locationid=\"60002938\" locator=\"false\"/>\r\n    <row agent=\"Yahutola Unen\" agentid=\"3016704\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"1\" locationid=\"60002989\" locator=\"false\"/>\r\n    <row agent=\"Shiyegamo Kuutsula\" agentid=\"3016705\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"2\" locationid=\"60002995\" locator=\"false\"/>\r\n    <row agent=\"Shintushin Alpa\" agentid=\"3016706\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"2\" locationid=\"60002935\" locator=\"false\"/>\r\n    <row agent=\"Hiyuda Nelvanen\" agentid=\"3016707\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"1\" locationid=\"60003022\" locator=\"false\"/>\r\n    <row agent=\"Hoshikila Nilen\" agentid=\"3016708\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"4\" locationid=\"60003019\" locator=\"false\"/>\r\n    <row agent=\"Ouchokaisen Unpas\" agentid=\"3016709\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"2\" locationid=\"60002926\" locator=\"false\"/>\r\n    <row agent=\"Koski Pu\" agentid=\"3016710\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"2\" locationid=\"60003016\" locator=\"false\"/>\r\n    <row agent=\"Havaras Uuhenen\" agentid=\"3016711\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"1\" locationid=\"60002914\" locator=\"false\"/>\r\n    <row agent=\"Juljukalmon Nallanen\" agentid=\"3016712\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"3\" locationid=\"60002995\" locator=\"false\"/>\r\n    <row agent=\"Aradaki Povas\" agentid=\"3016713\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"1\" locationid=\"60002935\" locator=\"false\"/>\r\n    <row agent=\"Ausmunen Karantala\" agentid=\"3016714\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"1\" locationid=\"60003028\" locator=\"false\"/>\r\n    <row agent=\"Auniras Omaa\" agentid=\"3016715\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"1\" locationid=\"60002983\" locator=\"false\"/>\r\n    <row agent=\"Hirenaiken Tarula\" agentid=\"3016716\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"1\" locationid=\"60002941\" locator=\"false\"/>\r\n    <row agent=\"Soriemi Kasenumi\" agentid=\"3016717\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"2\" locationid=\"60003013\" locator=\"false\"/>\r\n    <row agent=\"Okima Kikui\" agentid=\"3016718\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"3\" locationid=\"60002956\" locator=\"false\"/>\r\n    <row agent=\"Soskalama Ullen\" agentid=\"3016719\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"4\" locationid=\"60002956\" locator=\"false\"/>\r\n    <row agent=\"Yatsitei Ha\" agentid=\"3016720\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"1\" locationid=\"60002968\" locator=\"false\"/>\r\n    <row agent=\"Bivira Noriti\" agentid=\"3016721\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"22\" level=\"1\" locationid=\"60003121\" locator=\"false\"/>\r\n    <row agent=\"Arekin Kaskovuo\" agentid=\"3016722\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"24\" level=\"1\" locationid=\"60003067\" locator=\"false\"/>\r\n    <row agent=\"Erasen Uuhenen\" agentid=\"3016723\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"24\" level=\"1\" locationid=\"60003097\" locator=\"false\"/>\r\n    <row agent=\"Lahnina Esala\" agentid=\"3016724\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"24\" level=\"2\" locationid=\"60003115\" locator=\"false\"/>\r\n    <row agent=\"Ririva Ebon\" agentid=\"3016725\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"24\" level=\"2\" locationid=\"60003121\" locator=\"false\"/>\r\n    <row agent=\"Amirker Honer\" agentid=\"3016726\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"24\" level=\"2\" locationid=\"60003112\" locator=\"false\"/>\r\n    <row agent=\"Deni Raraine\" agentid=\"3016728\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"22\" level=\"4\" locationid=\"60003121\" locator=\"false\"/>\r\n    <row agent=\"Eurilluin Josisen\" agentid=\"3016729\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"24\" level=\"1\" locationid=\"60003052\" locator=\"false\"/>\r\n    <row agent=\"Afaba Shatechas\" agentid=\"3016730\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"22\" level=\"1\" locationid=\"60003109\" locator=\"false\"/>\r\n    <row agent=\"Argnie Alrot\" agentid=\"3016731\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"22\" level=\"2\" locationid=\"60003112\" locator=\"false\"/>\r\n    <row agent=\"Mumine Dalamoure\" agentid=\"3016734\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"22\" level=\"1\" locationid=\"60003088\" locator=\"false\"/>\r\n    <row agent=\"Annolf Elendad\" agentid=\"3016735\" agenttypeid=\"2\" corporationid=\"1000027\" divisionid=\"22\" level=\"1\" locationid=\"60003043\" locator=\"false\"/>\r\n    <row agent=\"Oikavas Tarawa\" agentid=\"3016736\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"22\" level=\"4\" locationid=\"60003139\" locator=\"false\"/>\r\n    <row agent=\"Alalomo Mainsaken\" agentid=\"3016737\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"22\" level=\"1\" locationid=\"60003133\" locator=\"false\"/>\r\n    <row agent=\"Katoro Nierkomaa\" agentid=\"3016738\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"22\" level=\"2\" locationid=\"60003163\" locator=\"false\"/>\r\n    <row agent=\"Ernisen Korkunaiken\" agentid=\"3016739\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"22\" level=\"2\" locationid=\"60003163\" locator=\"false\"/>\r\n    <row agent=\"Ieski Has\" agentid=\"3016740\" agenttypeid=\"2\" corporationid=\"1000028\" divisionid=\"22\" level=\"4\" locationid=\"60003160\" locator=\"false\"/>\r\n    <row agent=\"Okegi Togenuri\" agentid=\"3016741\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"22\" level=\"3\" locationid=\"60003184\" locator=\"false\"/>\r\n    <row agent=\"Hasheshi Sistoh\" agentid=\"3016742\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"22\" level=\"3\" locationid=\"60003223\" locator=\"false\"/>\r\n    <row agent=\"Kaatervo Kotsiainen\" agentid=\"3016743\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"22\" level=\"3\" locationid=\"60003241\" locator=\"false\"/>\r\n    <row agent=\"Tonaima Tobirida\" agentid=\"3016744\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"22\" level=\"1\" locationid=\"60003187\" locator=\"false\"/>\r\n    <row agent=\"Noki Vesorola\" agentid=\"3016745\" agenttypeid=\"2\" corporationid=\"1000029\" divisionid=\"22\" level=\"3\" locationid=\"60003235\" locator=\"false\"/>\r\n    <row agent=\"Anzomi Vaun\" agentid=\"3016746\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"24\" level=\"3\" locationid=\"60003322\" locator=\"false\"/>\r\n    <row agent=\"Erila Husanailen\" agentid=\"3016747\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"24\" level=\"4\" locationid=\"60003292\" locator=\"false\"/>\r\n    <row agent=\"Aranata Amsa\" agentid=\"3016748\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"24\" level=\"2\" locationid=\"60003322\" locator=\"false\"/>\r\n    <row agent=\"Hora Ritomari\" agentid=\"3016749\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"24\" level=\"1\" locationid=\"60003250\" locator=\"false\"/>\r\n    <row agent=\"Haakari Lyyrimila\" agentid=\"3016750\" agenttypeid=\"2\" corporationid=\"1000030\" divisionid=\"24\" level=\"2\" locationid=\"60003283\" locator=\"false\"/>\r\n    <row agent=\"Sulahula Sagai\" agentid=\"3016751\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"2\" locationid=\"60003376\" locator=\"false\"/>\r\n    <row agent=\"Koiken Sekadama\" agentid=\"3016752\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"2\" locationid=\"60003343\" locator=\"false\"/>\r\n    <row agent=\"Heinnonen Tarpanen\" agentid=\"3016753\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"3\" locationid=\"60003343\" locator=\"false\"/>\r\n    <row agent=\"Tantoseisen Yusanani\" agentid=\"3016754\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"1\" locationid=\"60003376\" locator=\"false\"/>\r\n    <row agent=\"Ketanuni Reda\" agentid=\"3016755\" agenttypeid=\"2\" corporationid=\"1000031\" divisionid=\"24\" level=\"2\" locationid=\"60003346\" locator=\"false\"/>\r\n    <row agent=\"Varanen Enna\" agentid=\"3016756\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"24\" level=\"2\" locationid=\"60003403\" locator=\"false\"/>\r\n    <row agent=\"Otaliotoh Koyoma\" agentid=\"3016757\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"24\" level=\"2\" locationid=\"60003400\" locator=\"false\"/>\r\n    <row agent=\"Horas Ieyaki\" agentid=\"3016758\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"24\" level=\"2\" locationid=\"60003442\" locator=\"false\"/>\r\n    <row agent=\"Tomugo Nattotolen\" agentid=\"3016759\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"24\" level=\"1\" locationid=\"60003418\" locator=\"false\"/>\r\n    <row agent=\"Anken Aronainen\" agentid=\"3016760\" agenttypeid=\"2\" corporationid=\"1000032\" divisionid=\"24\" level=\"4\" locationid=\"60003424\" locator=\"false\"/>\r\n    <row agent=\"Kuurinen Mastakomon\" agentid=\"3016761\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003580\" locator=\"false\"/>\r\n    <row agent=\"Verttolen Suori\" agentid=\"3016762\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003523\" locator=\"false\"/>\r\n    <row agent=\"Ylonen Gemppiras\" agentid=\"3016763\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003715\" locator=\"false\"/>\r\n    <row agent=\"Erapia Moirkunen\" agentid=\"3016764\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003586\" locator=\"false\"/>\r\n    <row agent=\"Kuksen Heiminen\" agentid=\"3016765\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003568\" locator=\"false\"/>\r\n    <row agent=\"Kihumaa Doisoro\" agentid=\"3016766\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003568\" locator=\"false\"/>\r\n    <row agent=\"Tattiainen Maekanen\" agentid=\"3016767\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003532\" locator=\"false\"/>\r\n    <row agent=\"Nolikka Rane\" agentid=\"3016768\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003664\" locator=\"false\"/>\r\n    <row agent=\"Parsara Hakkiainen\" agentid=\"3016769\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003475\" locator=\"false\"/>\r\n    <row agent=\"Saalovaila Hageken\" agentid=\"3016770\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003547\" locator=\"false\"/>\r\n    <row agent=\"Vannanen Santitsenmaa\" agentid=\"3016771\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003583\" locator=\"false\"/>\r\n    <row agent=\"Karas Erkkamon\" agentid=\"3016772\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003559\" locator=\"false\"/>\r\n    <row agent=\"Aaromon Karjamailen\" agentid=\"3016773\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003484\" locator=\"false\"/>\r\n    <row agent=\"Yakura Inokakka\" agentid=\"3016774\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003490\" locator=\"false\"/>\r\n    <row agent=\"Nientunin Vataseri\" agentid=\"3016775\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003502\" locator=\"false\"/>\r\n    <row agent=\"Rida Moso\" agentid=\"3016776\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003670\" locator=\"false\"/>\r\n    <row agent=\"Inileri Ochikoro\" agentid=\"3016777\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003718\" locator=\"false\"/>\r\n    <row agent=\"Oksuken Seriya\" agentid=\"3016778\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"4\" locationid=\"60003526\" locator=\"false\"/>\r\n    <row agent=\"Immivas Purata\" agentid=\"3016779\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003685\" locator=\"false\"/>\r\n    <row agent=\"Ogomutsu Anttunen\" agentid=\"3016780\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"4\" locationid=\"60003616\" locator=\"false\"/>\r\n    <row agent=\"Rautanen Orushika\" agentid=\"3016781\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003517\" locator=\"false\"/>\r\n    <row agent=\"Saraka Kuhtataiken\" agentid=\"3016782\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003664\" locator=\"false\"/>\r\n    <row agent=\"Izama Pukakada\" agentid=\"3016783\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"4\" locationid=\"60003622\" locator=\"false\"/>\r\n    <row agent=\"Natirumo Arva\" agentid=\"3016784\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003676\" locator=\"false\"/>\r\n    <row agent=\"Heyntoyoemon Mashin\" agentid=\"3016785\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003652\" locator=\"false\"/>\r\n    <row agent=\"Hykanima Vaukarieto\" agentid=\"3016786\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003700\" locator=\"false\"/>\r\n    <row agent=\"Tuunani Ikomari\" agentid=\"3016787\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003598\" locator=\"false\"/>\r\n    <row agent=\"Ohmojus Horolairos\" agentid=\"3016788\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003478\" locator=\"false\"/>\r\n    <row agent=\"Puskiainen Huomaila\" agentid=\"3016789\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003616\" locator=\"false\"/>\r\n    <row agent=\"Panshin Mojila\" agentid=\"3016790\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003571\" locator=\"false\"/>\r\n    <row agent=\"Tojawara Hiras\" agentid=\"3016791\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003541\" locator=\"false\"/>\r\n    <row agent=\"Kommeras Wakkinen\" agentid=\"3016792\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003457\" locator=\"false\"/>\r\n    <row agent=\"Unanaitoh Elonko\" agentid=\"3016793\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003670\" locator=\"false\"/>\r\n    <row agent=\"Ursinatsu Ahorakka\" agentid=\"3016794\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003682\" locator=\"false\"/>\r\n    <row agent=\"Mahken Kautilen\" agentid=\"3016795\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003589\" locator=\"false\"/>\r\n    <row agent=\"Karunani Vekasu\" agentid=\"3016796\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"4\" locationid=\"60003676\" locator=\"false\"/>\r\n    <row agent=\"Seloroki Atnen\" agentid=\"3016797\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003601\" locator=\"false\"/>\r\n    <row agent=\"Otinaka Ruon\" agentid=\"3016798\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003499\" locator=\"false\"/>\r\n    <row agent=\"Orkka Okokoiken\" agentid=\"3016799\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003607\" locator=\"false\"/>\r\n    <row agent=\"Yartenaima Shinyekasvas\" agentid=\"3016800\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003595\" locator=\"false\"/>\r\n    <row agent=\"Vuojunanen Jenus\" agentid=\"3016801\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"2\" locationid=\"60003478\" locator=\"false\"/>\r\n    <row agent=\"Iwiken Matkuwa\" agentid=\"3016802\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"3\" locationid=\"60003709\" locator=\"false\"/>\r\n    <row agent=\"Kukiseki Milvaaras\" agentid=\"3016803\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"4\" locationid=\"60003508\" locator=\"false\"/>\r\n    <row agent=\"Muukasai Uosala\" agentid=\"3016804\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003634\" locator=\"false\"/>\r\n    <row agent=\"Sohtanainen Aurosen\" agentid=\"3016805\" agenttypeid=\"2\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003712\" locator=\"false\"/>\r\n    <row agent=\"Shinnukimi Terpala\" agentid=\"3016806\" agenttypeid=\"2\" corporationid=\"1000034\" divisionid=\"24\" level=\"1\" locationid=\"60003727\" locator=\"false\"/>\r\n    <row agent=\"Tsurkuma Koruda\" agentid=\"3016807\" agenttypeid=\"2\" corporationid=\"1000034\" divisionid=\"24\" level=\"2\" locationid=\"60003733\" locator=\"false\"/>\r\n    <row agent=\"Honnamaiken Ienumaa\" agentid=\"3016808\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"3\" locationid=\"60003772\" locator=\"false\"/>\r\n    <row agent=\"Ousia Ikoskio\" agentid=\"3016809\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"1\" locationid=\"60003910\" locator=\"false\"/>\r\n    <row agent=\"Kutatala Ikao\" agentid=\"3016810\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"3\" locationid=\"60003814\" locator=\"false\"/>\r\n    <row agent=\"Sigoshioka Uona\" agentid=\"3016811\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"1\" locationid=\"60003931\" locator=\"false\"/>\r\n    <row agent=\"Teikitsu Oiniken\" agentid=\"3016812\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"2\" locationid=\"60003775\" locator=\"false\"/>\r\n    <row agent=\"Anken Takinius\" agentid=\"3016813\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"2\" locationid=\"60003766\" locator=\"false\"/>\r\n    <row agent=\"Oburuotio Uchiainelen\" agentid=\"3016814\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"1\" locationid=\"60003772\" locator=\"false\"/>\r\n    <row agent=\"Tuga Nato\" agentid=\"3016815\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003754\" locator=\"false\"/>\r\n    <row agent=\"Ho Movakko\" agentid=\"3016816\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"3\" locationid=\"60003790\" locator=\"false\"/>\r\n    <row agent=\"Sigechiro Onzo\" agentid=\"3016817\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003796\" locator=\"false\"/>\r\n    <row agent=\"Wi Tsuruma\" agentid=\"3016818\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"3\" locationid=\"60003820\" locator=\"false\"/>\r\n    <row agent=\"Olorokka Arkonen\" agentid=\"3016819\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"3\" locationid=\"60003790\" locator=\"false\"/>\r\n    <row agent=\"Asamala Akiainavas\" agentid=\"3016820\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003808\" locator=\"false\"/>\r\n    <row agent=\"Kartaja Minaka\" agentid=\"3016821\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003778\" locator=\"false\"/>\r\n    <row agent=\"Okazi Upa\" agentid=\"3016823\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60003913\" locator=\"false\"/>\r\n    <row agent=\"Okada Laah\" agentid=\"3016824\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003766\" locator=\"false\"/>\r\n    <row agent=\"Morpala Sasuola\" agentid=\"3016825\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003814\" locator=\"false\"/>\r\n    <row agent=\"Kurnelen Jukenairos\" agentid=\"3016826\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003907\" locator=\"false\"/>\r\n    <row agent=\"Kukka Huo\" agentid=\"3016827\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003892\" locator=\"false\"/>\r\n    <row agent=\"Nakkilen Utonoma\" agentid=\"3016828\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"3\" locationid=\"60003763\" locator=\"false\"/>\r\n    <row agent=\"Shittari Yansen\" agentid=\"3016829\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003841\" locator=\"false\"/>\r\n    <row agent=\"Etseras Kulesa\" agentid=\"3016830\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003871\" locator=\"false\"/>\r\n    <row agent=\"Pavisailen Aokinisen\" agentid=\"3016831\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60003784\" locator=\"false\"/>\r\n    <row agent=\"Oksarkovuo Ahviala\" agentid=\"3016832\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60003886\" locator=\"false\"/>\r\n    <row agent=\"Purkkoken Honuken\" agentid=\"3016833\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003829\" locator=\"false\"/>\r\n    <row agent=\"Haras Vikkito\" agentid=\"3016834\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60003865\" locator=\"false\"/>\r\n    <row agent=\"Hie Vandanela\" agentid=\"3016835\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003874\" locator=\"false\"/>\r\n    <row agent=\"Auni Heinen\" agentid=\"3016836\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60003856\" locator=\"false\"/>\r\n    <row agent=\"Inawaki Ashomon\" agentid=\"3016837\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003907\" locator=\"false\"/>\r\n    <row agent=\"Pois Ouchiras\" agentid=\"3016838\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"3\" locationid=\"60003919\" locator=\"false\"/>\r\n    <row agent=\"Jukosoni Kauniki\" agentid=\"3016839\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003916\" locator=\"false\"/>\r\n    <row agent=\"Asalova Iella\" agentid=\"3016840\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60003931\" locator=\"false\"/>\r\n    <row agent=\"Arkiras Airilen\" agentid=\"3016841\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60003895\" locator=\"false\"/>\r\n    <row agent=\"Ano Pruya\" agentid=\"3016842\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003754\" locator=\"false\"/>\r\n    <row agent=\"Ikagonji Uranen\" agentid=\"3016843\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003910\" locator=\"false\"/>\r\n    <row agent=\"Hartoh Otaranta\" agentid=\"3016844\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003931\" locator=\"false\"/>\r\n    <row agent=\"Iwaya Sippeskallio\" agentid=\"3016845\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003910\" locator=\"false\"/>\r\n    <row agent=\"Ruukagami Yhmi\" agentid=\"3016846\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003910\" locator=\"false\"/>\r\n    <row agent=\"Kikosuda Partoh\" agentid=\"3016847\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60015146\" locator=\"false\"/>\r\n    <row agent=\"Ahtaras Auta\" agentid=\"3016848\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003928\" locator=\"false\"/>\r\n    <row agent=\"Anzosukka Ibaras\" agentid=\"3016849\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"3\" locationid=\"60003778\" locator=\"false\"/>\r\n    <row agent=\"Ihala Ozunailen\" agentid=\"3016850\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003799\" locator=\"false\"/>\r\n    <row agent=\"Isiga Vesen\" agentid=\"3016851\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"3\" locationid=\"60003826\" locator=\"false\"/>\r\n    <row agent=\"Harenen Oksuken\" agentid=\"3016852\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003877\" locator=\"false\"/>\r\n    <row agent=\"Sishanuta Nalvula\" agentid=\"3016853\" agenttypeid=\"2\" corporationid=\"1000036\" divisionid=\"24\" level=\"2\" locationid=\"60003934\" locator=\"false\"/>\r\n    <row agent=\"Kishida Uchoda\" agentid=\"3016854\" agenttypeid=\"2\" corporationid=\"1000036\" divisionid=\"24\" level=\"1\" locationid=\"60003937\" locator=\"false\"/>\r\n    <row agent=\"Rampiro Herlen\" agentid=\"3016855\" agenttypeid=\"2\" corporationid=\"1000036\" divisionid=\"24\" level=\"1\" locationid=\"60003937\" locator=\"false\"/>\r\n    <row agent=\"Kirvas Manninen\" agentid=\"3016856\" agenttypeid=\"2\" corporationid=\"1000036\" divisionid=\"24\" level=\"2\" locationid=\"60003937\" locator=\"false\"/>\r\n    <row agent=\"Noremala Hankkama\" agentid=\"3016857\" agenttypeid=\"2\" corporationid=\"1000036\" divisionid=\"24\" level=\"1\" locationid=\"60003934\" locator=\"false\"/>\r\n    <row agent=\"Nituma Rainakaila\" agentid=\"3016858\" agenttypeid=\"2\" corporationid=\"1000036\" divisionid=\"24\" level=\"2\" locationid=\"60003937\" locator=\"false\"/>\r\n    <row agent=\"Aarnaras Wasken\" agentid=\"3016859\" agenttypeid=\"2\" corporationid=\"1000036\" divisionid=\"24\" level=\"4\" locationid=\"60003934\" locator=\"false\"/>\r\n    <row agent=\"Pahtadan Rihtola\" agentid=\"3016860\" agenttypeid=\"2\" corporationid=\"1000036\" divisionid=\"24\" level=\"1\" locationid=\"60003937\" locator=\"false\"/>\r\n    <row agent=\"Ailma Visanova\" agentid=\"3016861\" agenttypeid=\"2\" corporationid=\"1000036\" divisionid=\"24\" level=\"2\" locationid=\"60003934\" locator=\"false\"/>\r\n    <row agent=\"Paakata Aboraala\" agentid=\"3016862\" agenttypeid=\"2\" corporationid=\"1000036\" divisionid=\"24\" level=\"2\" locationid=\"60003934\" locator=\"false\"/>\r\n    <row agent=\"Sarojikka Tokaka\" agentid=\"3016863\" agenttypeid=\"2\" corporationid=\"1000036\" divisionid=\"24\" level=\"1\" locationid=\"60003937\" locator=\"false\"/>\r\n    <row agent=\"Kottetaira Tairulaisen\" agentid=\"3016864\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"24\" level=\"3\" locationid=\"60003952\" locator=\"false\"/>\r\n    <row agent=\"Hikkiras Julasala\" agentid=\"3016865\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"24\" level=\"1\" locationid=\"60003952\" locator=\"false\"/>\r\n    <row agent=\"Iidastoh Uki\" agentid=\"3016866\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"24\" level=\"2\" locationid=\"60003946\" locator=\"false\"/>\r\n    <row agent=\"Koivarairos Raan\" agentid=\"3016867\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"24\" level=\"4\" locationid=\"60003949\" locator=\"false\"/>\r\n    <row agent=\"Aario Ichoda\" agentid=\"3016868\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"24\" level=\"3\" locationid=\"60003949\" locator=\"false\"/>\r\n    <row agent=\"Najila Ichiainegas\" agentid=\"3016869\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"2\" locationid=\"60003964\" locator=\"false\"/>\r\n    <row agent=\"Kuokkaa Anki\" agentid=\"3016870\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"3\" locationid=\"60003985\" locator=\"false\"/>\r\n    <row agent=\"Kaimon Kawitsuonen\" agentid=\"3016871\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"2\" locationid=\"60003982\" locator=\"false\"/>\r\n    <row agent=\"Bassunen Ihori\" agentid=\"3016872\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"3\" locationid=\"60003985\" locator=\"false\"/>\r\n    <row agent=\"Aidaken Hopara\" agentid=\"3016873\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"2\" locationid=\"60003970\" locator=\"false\"/>\r\n    <row agent=\"Iruwa Asakibo\" agentid=\"3016874\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"1\" locationid=\"60003976\" locator=\"false\"/>\r\n    <row agent=\"Auna Ijamia\" agentid=\"3016875\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"2\" locationid=\"60003967\" locator=\"false\"/>\r\n    <row agent=\"Kommiluola Kaitsinen\" agentid=\"3016876\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"2\" locationid=\"60003982\" locator=\"false\"/>\r\n    <row agent=\"Itatoh Isanori\" agentid=\"3016877\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"4\" locationid=\"60003994\" locator=\"false\"/>\r\n    <row agent=\"Tustagas Aatoh\" agentid=\"3016878\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"1\" locationid=\"60003970\" locator=\"false\"/>\r\n    <row agent=\"Alinen Tannanmaa\" agentid=\"3016879\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"1\" locationid=\"60003967\" locator=\"false\"/>\r\n    <row agent=\"Suoriola Orpa\" agentid=\"3016880\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"2\" locationid=\"60003991\" locator=\"false\"/>\r\n    <row agent=\"Eloma Keikaken\" agentid=\"3016881\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"3\" locationid=\"60003991\" locator=\"false\"/>\r\n    <row agent=\"Aimon Olkkogas\" agentid=\"3016882\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"2\" locationid=\"60003991\" locator=\"false\"/>\r\n    <row agent=\"Mommatoh Tsupamon\" agentid=\"3016883\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"3\" locationid=\"60003991\" locator=\"false\"/>\r\n    <row agent=\"Sukkajus Hesinpikko\" agentid=\"3016884\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"2\" locationid=\"60003964\" locator=\"false\"/>\r\n    <row agent=\"Piertalen Enanama\" agentid=\"3016885\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"4\" locationid=\"60003985\" locator=\"false\"/>\r\n    <row agent=\"Vasanen Vahoras\" agentid=\"3016886\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"4\" locationid=\"60004045\" locator=\"false\"/>\r\n    <row agent=\"Sino Ahtuken\" agentid=\"3016888\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"2\" locationid=\"60004039\" locator=\"false\"/>\r\n    <row agent=\"Kakka Potkanen\" agentid=\"3016889\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"1\" locationid=\"60004042\" locator=\"false\"/>\r\n    <row agent=\"Aariwa Tenanochi\" agentid=\"3016890\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"1\" locationid=\"60004006\" locator=\"false\"/>\r\n    <row agent=\"Samon Antula\" agentid=\"3016892\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"2\" locationid=\"60004015\" locator=\"false\"/>\r\n    <row agent=\"Sakokaida Ahitaitoh\" agentid=\"3016893\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"4\" locationid=\"60004027\" locator=\"false\"/>\r\n    <row agent=\"Mervanen Akia\" agentid=\"3016894\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"1\" locationid=\"60004003\" locator=\"false\"/>\r\n    <row agent=\"Shikkoken Kilkkigas\" agentid=\"3016895\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"2\" locationid=\"60004039\" locator=\"false\"/>\r\n    <row agent=\"Kasiravuo Yansen\" agentid=\"3016896\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"2\" locationid=\"60004015\" locator=\"false\"/>\r\n    <row agent=\"Ahmala Arawaiken\" agentid=\"3016897\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"1\" locationid=\"60004000\" locator=\"false\"/>\r\n    <row agent=\"Akonaitoh Kaimpamon\" agentid=\"3016898\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"2\" locationid=\"60004033\" locator=\"false\"/>\r\n    <row agent=\"Kovula Ylatera\" agentid=\"3016899\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"2\" locationid=\"60004045\" locator=\"false\"/>\r\n    <row agent=\"Irma Aatoh\" agentid=\"3016900\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"3\" locationid=\"60004015\" locator=\"false\"/>\r\n    <row agent=\"Saijimo Ukkuken\" agentid=\"3016901\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"1\" locationid=\"60004036\" locator=\"false\"/>\r\n    <row agent=\"Eralikken Tila\" agentid=\"3016902\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"2\" locationid=\"60004012\" locator=\"false\"/>\r\n    <row agent=\"Kasata Mavila\" agentid=\"3016903\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"2\" locationid=\"60004018\" locator=\"false\"/>\r\n    <row agent=\"Nonsukairos Omajiki\" agentid=\"3016904\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"3\" locationid=\"60004027\" locator=\"false\"/>\r\n    <row agent=\"Sutamaa Artanen\" agentid=\"3016905\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"2\" locationid=\"60004033\" locator=\"false\"/>\r\n    <row agent=\"Hurtela Himazara\" agentid=\"3016906\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"3\" locationid=\"60004027\" locator=\"false\"/>\r\n    <row agent=\"Saun Otsusen\" agentid=\"3016907\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"1\" locationid=\"60004018\" locator=\"false\"/>\r\n    <row agent=\"Harkuma Uesimaanen\" agentid=\"3016908\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"4\" locationid=\"60004045\" locator=\"false\"/>\r\n    <row agent=\"Heikama Toikiainen\" agentid=\"3016909\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"3\" locationid=\"60004045\" locator=\"false\"/>\r\n    <row agent=\"Yanakka Ijinen\" agentid=\"3016910\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"2\" locationid=\"60004045\" locator=\"false\"/>\r\n    <row agent=\"Ibaranto Kanakila\" agentid=\"3016911\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"2\" locationid=\"60004042\" locator=\"false\"/>\r\n    <row agent=\"Ylaken Kate\" agentid=\"3016912\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"2\" locationid=\"60004003\" locator=\"false\"/>\r\n    <row agent=\"Mativanto Inalanne\" agentid=\"3016913\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"3\" locationid=\"60004003\" locator=\"false\"/>\r\n    <row agent=\"Mimetsoma Akarvola\" agentid=\"3016914\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"3\" locationid=\"60004030\" locator=\"false\"/>\r\n    <row agent=\"Kalala Aurobe\" agentid=\"3016915\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"3\" locationid=\"60004003\" locator=\"false\"/>\r\n    <row agent=\"Aruwira Kaipunrela\" agentid=\"3016916\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"1\" locationid=\"60004072\" locator=\"false\"/>\r\n    <row agent=\"Petsolen Akanarkka\" agentid=\"3016917\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"3\" locationid=\"60004057\" locator=\"false\"/>\r\n    <row agent=\"Kovaras Onuoto\" agentid=\"3016918\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"1\" locationid=\"60004054\" locator=\"false\"/>\r\n    <row agent=\"Kaganen Arilalmon\" agentid=\"3016919\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"1\" locationid=\"60004069\" locator=\"false\"/>\r\n    <row agent=\"Vekasu Tomugo\" agentid=\"3016920\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"3\" locationid=\"60004072\" locator=\"false\"/>\r\n    <row agent=\"Kansen Terilato\" agentid=\"3016921\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"3\" locationid=\"60004072\" locator=\"false\"/>\r\n    <row agent=\"Arji Kotilori\" agentid=\"3016922\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"1\" locationid=\"60004081\" locator=\"false\"/>\r\n    <row agent=\"Juulvaras Kaljolen\" agentid=\"3016923\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"3\" locationid=\"60004054\" locator=\"false\"/>\r\n    <row agent=\"Asaniri Reirvenen\" agentid=\"3016924\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"1\" locationid=\"60004075\" locator=\"false\"/>\r\n    <row agent=\"Orpakku Urhi\" agentid=\"3016925\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"4\" locationid=\"60004075\" locator=\"false\"/>\r\n    <row agent=\"Koisuken Ve\" agentid=\"3016926\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"1\" locationid=\"60004072\" locator=\"false\"/>\r\n    <row agent=\"Alinita Innomainen\" agentid=\"3016927\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"1\" locationid=\"60004057\" locator=\"false\"/>\r\n    <row agent=\"Roikikasvio Kautsuo\" agentid=\"3016928\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"2\" locationid=\"60004075\" locator=\"false\"/>\r\n    <row agent=\"Pukakada Ve\" agentid=\"3016929\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"1\" locationid=\"60004054\" locator=\"false\"/>\r\n    <row agent=\"Hatsen Koiromon\" agentid=\"3016930\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"3\" locationid=\"60004057\" locator=\"false\"/>\r\n    <row agent=\"Akujainen Hivas\" agentid=\"3016931\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"4\" locationid=\"60004054\" locator=\"false\"/>\r\n    <row agent=\"Liatter Tusalmer\" agentid=\"3016932\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"3\" locationid=\"60004114\" locator=\"false\"/>\r\n    <row agent=\"Eyfrollolf Arnbjukin\" agentid=\"3016933\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004183\" locator=\"false\"/>\r\n    <row agent=\"Codolle Ellatoules\" agentid=\"3016934\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004216\" locator=\"false\"/>\r\n    <row agent=\"Mabahian Onoben\" agentid=\"3016935\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"3\" locationid=\"60004102\" locator=\"false\"/>\r\n    <row agent=\"Pyyrvonami Sannekura\" agentid=\"3016936\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004177\" locator=\"false\"/>\r\n    <row agent=\"Ytsa Okuremi\" agentid=\"3016937\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004111\" locator=\"false\"/>\r\n    <row agent=\"Andromenne Osmurlem\" agentid=\"3016938\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004195\" locator=\"false\"/>\r\n    <row agent=\"Heima Anzomon\" agentid=\"3016939\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"3\" locationid=\"60004138\" locator=\"false\"/>\r\n    <row agent=\"Charoron Goisin\" agentid=\"3016940\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004225\" locator=\"false\"/>\r\n    <row agent=\"Aldbet Konsune\" agentid=\"3016941\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004255\" locator=\"false\"/>\r\n    <row agent=\"Ininaga Vilkko\" agentid=\"3016942\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004231\" locator=\"false\"/>\r\n    <row agent=\"Konoi Siekko\" agentid=\"3016943\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"3\" locationid=\"60004198\" locator=\"false\"/>\r\n    <row agent=\"Gute Aufrie\" agentid=\"3016944\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004129\" locator=\"false\"/>\r\n    <row agent=\"Mavirique Bram\" agentid=\"3016945\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004225\" locator=\"false\"/>\r\n    <row agent=\"Vechene Andyn\" agentid=\"3016946\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004219\" locator=\"false\"/>\r\n    <row agent=\"Shiotintaitoh Navirola\" agentid=\"3016947\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"3\" locationid=\"60004120\" locator=\"false\"/>\r\n    <row agent=\"Reflina Erlulf\" agentid=\"3016948\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004126\" locator=\"false\"/>\r\n    <row agent=\"Chaden Jere\" agentid=\"3016949\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004246\" locator=\"false\"/>\r\n    <row agent=\"Corredan Steine\" agentid=\"3016950\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004198\" locator=\"false\"/>\r\n    <row agent=\"Ameroisen Kuori\" agentid=\"3016951\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"4\" locationid=\"60004210\" locator=\"false\"/>\r\n    <row agent=\"Paryu Aher\" agentid=\"3016952\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"3\" locationid=\"60004141\" locator=\"false\"/>\r\n    <row agent=\"Ayami Ishirainen\" agentid=\"3016953\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004225\" locator=\"false\"/>\r\n    <row agent=\"Garmone Austers\" agentid=\"3016954\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004180\" locator=\"false\"/>\r\n    <row agent=\"Ufal Hema\" agentid=\"3016955\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"3\" locationid=\"60004159\" locator=\"false\"/>\r\n    <row agent=\"Hagata Uihidgar\" agentid=\"3016956\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004180\" locator=\"false\"/>\r\n    <row agent=\"Mamren Bothijas\" agentid=\"3016957\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004168\" locator=\"false\"/>\r\n    <row agent=\"Korolur Itur\" agentid=\"3016958\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004165\" locator=\"false\"/>\r\n    <row agent=\"Icard Vacymoutte\" agentid=\"3016959\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004129\" locator=\"false\"/>\r\n    <row agent=\"Von Anttusen\" agentid=\"3016960\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004108\" locator=\"false\"/>\r\n    <row agent=\"Kikh Kharannud\" agentid=\"3016961\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004213\" locator=\"false\"/>\r\n    <row agent=\"Samiwa Konkinen\" agentid=\"3016962\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004090\" locator=\"false\"/>\r\n    <row agent=\"Arubera Navikila\" agentid=\"3016963\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004201\" locator=\"false\"/>\r\n    <row agent=\"Eilper Alfelar\" agentid=\"3016964\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004183\" locator=\"false\"/>\r\n    <row agent=\"Aimi Tastakekken\" agentid=\"3016965\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004237\" locator=\"false\"/>\r\n    <row agent=\"Coroutte Amenouve\" agentid=\"3016966\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004084\" locator=\"false\"/>\r\n    <row agent=\"Meben Okoka\" agentid=\"3016968\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004258\" locator=\"false\"/>\r\n    <row agent=\"Ovanher Eyminnael\" agentid=\"3016969\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"3\" locationid=\"60004135\" locator=\"false\"/>\r\n    <row agent=\"Ochikaipia Hevulainen\" agentid=\"3016970\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004138\" locator=\"false\"/>\r\n    <row agent=\"Penolaanen Kokka\" agentid=\"3016971\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"4\" locationid=\"60004087\" locator=\"false\"/>\r\n    <row agent=\"Musokka Ookilen\" agentid=\"3016972\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"4\" locationid=\"60004201\" locator=\"false\"/>\r\n    <row agent=\"Mulleroder Meimanfroe\" agentid=\"3016973\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004243\" locator=\"false\"/>\r\n    <row agent=\"Ruphichan Kahefi\" agentid=\"3016974\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004159\" locator=\"false\"/>\r\n    <row agent=\"Bunarolie Elettare\" agentid=\"3016975\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"2\" locationid=\"60004213\" locator=\"false\"/>\r\n    <row agent=\"Nelir Bomsia\" agentid=\"3016976\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004192\" locator=\"false\"/>\r\n    <row agent=\"Ahtavairos Nuotonalen\" agentid=\"3016977\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"1\" locationid=\"60004411\" locator=\"false\"/>\r\n    <row agent=\"Kaukko Ario\" agentid=\"3016978\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004375\" locator=\"false\"/>\r\n    <row agent=\"Sointamon Irva\" agentid=\"3016979\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"3\" locationid=\"60004408\" locator=\"false\"/>\r\n    <row agent=\"Ulalima Asaken\" agentid=\"3016980\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"1\" locationid=\"60004408\" locator=\"false\"/>\r\n    <row agent=\"Tumaa Oraala\" agentid=\"3016981\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004315\" locator=\"false\"/>\r\n    <row agent=\"Manmaa Umenen\" agentid=\"3016982\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"4\" locationid=\"60004369\" locator=\"false\"/>\r\n    <row agent=\"Keinagaisen Keima\" agentid=\"3016983\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004378\" locator=\"false\"/>\r\n    <row agent=\"Itera Olakokka\" agentid=\"3016984\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"1\" locationid=\"60004306\" locator=\"false\"/>\r\n    <row agent=\"Asuvira Asanishi\" agentid=\"3016985\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004324\" locator=\"false\"/>\r\n    <row agent=\"Ahtitaras Yasken\" agentid=\"3016986\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004378\" locator=\"false\"/>\r\n    <row agent=\"Kapenami Kousuki\" agentid=\"3016987\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004396\" locator=\"false\"/>\r\n    <row agent=\"Tomaroinen Vainio\" agentid=\"3016988\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004405\" locator=\"false\"/>\r\n    <row agent=\"Inaa Entti\" agentid=\"3016989\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004408\" locator=\"false\"/>\r\n    <row agent=\"Henken Litiura\" agentid=\"3016990\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"4\" locationid=\"60004360\" locator=\"false\"/>\r\n    <row agent=\"Hola Hottatoh\" agentid=\"3016991\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"3\" locationid=\"60004354\" locator=\"false\"/>\r\n    <row agent=\"Anttiken Perahota\" agentid=\"3016992\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"1\" locationid=\"60004369\" locator=\"false\"/>\r\n    <row agent=\"Minnen Pannoinen\" agentid=\"3016993\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"1\" locationid=\"60004387\" locator=\"false\"/>\r\n    <row agent=\"Chinnamon Aarlanen\" agentid=\"3016994\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"3\" locationid=\"60004405\" locator=\"false\"/>\r\n    <row agent=\"Aumon Fukkiainen\" agentid=\"3016995\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"1\" locationid=\"60004306\" locator=\"false\"/>\r\n    <row agent=\"Musanari Kimuruola\" agentid=\"3016996\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004375\" locator=\"false\"/>\r\n    <row agent=\"Uvonarkka Makkanto\" agentid=\"3016997\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004309\" locator=\"false\"/>\r\n    <row agent=\"Ashin Puvenen\" agentid=\"3016998\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"4\" locationid=\"60004327\" locator=\"false\"/>\r\n    <row agent=\"Skitichida Arikko\" agentid=\"3016999\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"3\" locationid=\"60004408\" locator=\"false\"/>\r\n    <row agent=\"Atshanen Sakki\" agentid=\"3017000\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004312\" locator=\"false\"/>\r\n    <row agent=\"Kin Tanaida\" agentid=\"3017001\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004378\" locator=\"false\"/>\r\n    <row agent=\"Ylima Ogikito\" agentid=\"3017002\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004378\" locator=\"false\"/>\r\n    <row agent=\"Tohvalieto Outarvas\" agentid=\"3017003\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004342\" locator=\"false\"/>\r\n    <row agent=\"Omon Mekichi\" agentid=\"3017004\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004351\" locator=\"false\"/>\r\n    <row agent=\"Horvira Shirito\" agentid=\"3017005\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004378\" locator=\"false\"/>\r\n    <row agent=\"Shikoma Kapenami\" agentid=\"3017006\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004342\" locator=\"false\"/>\r\n    <row agent=\"Inogainen Shinatsu\" agentid=\"3017007\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"1\" locationid=\"60004354\" locator=\"false\"/>\r\n    <row agent=\"Arkonen Itala\" agentid=\"3017008\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"2\" locationid=\"60004312\" locator=\"false\"/>\r\n    <row agent=\"Monen Shurken\" agentid=\"3017009\" agenttypeid=\"2\" corporationid=\"1000045\" divisionid=\"22\" level=\"1\" locationid=\"60004462\" locator=\"false\"/>\r\n    <row agent=\"Saererinur Tvenjer\" agentid=\"3017010\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"24\" level=\"3\" locationid=\"60004489\" locator=\"false\"/>\r\n    <row agent=\"Einuard Arnruver\" agentid=\"3017011\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"24\" level=\"2\" locationid=\"60004489\" locator=\"false\"/>\r\n    <row agent=\"Narmanhold Grirselfar\" agentid=\"3017012\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"24\" level=\"4\" locationid=\"60004489\" locator=\"false\"/>\r\n    <row agent=\"Urdrik Abrold\" agentid=\"3017013\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"24\" level=\"2\" locationid=\"60004489\" locator=\"false\"/>\r\n    <row agent=\"Bod Alfilur\" agentid=\"3017014\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"24\" level=\"4\" locationid=\"60004489\" locator=\"false\"/>\r\n    <row agent=\"Trens Felkmar\" agentid=\"3017015\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"24\" level=\"2\" locationid=\"60004489\" locator=\"false\"/>\r\n    <row agent=\"Krirt Urlur\" agentid=\"3017016\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"24\" level=\"2\" locationid=\"60004489\" locator=\"false\"/>\r\n    <row agent=\"Askagandad Eissulf\" agentid=\"3017017\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"24\" level=\"3\" locationid=\"60004489\" locator=\"false\"/>\r\n    <row agent=\"Freagulfer Halane\" agentid=\"3017018\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"22\" level=\"1\" locationid=\"60004495\" locator=\"false\"/>\r\n    <row agent=\"Wildendar Lullunar\" agentid=\"3017019\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"22\" level=\"2\" locationid=\"60004507\" locator=\"false\"/>\r\n    <row agent=\"Beriki Neldettotil\" agentid=\"3017020\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"22\" level=\"2\" locationid=\"60004504\" locator=\"false\"/>\r\n    <row agent=\"Skagmedur Teidreilur\" agentid=\"3017021\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"22\" level=\"1\" locationid=\"60004513\" locator=\"false\"/>\r\n    <row agent=\"Elloder Aptannoftur\" agentid=\"3017022\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"22\" level=\"4\" locationid=\"60004489\" locator=\"false\"/>\r\n    <row agent=\"Atbi Enonotur\" agentid=\"3017023\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"22\" level=\"4\" locationid=\"60004498\" locator=\"false\"/>\r\n    <row agent=\"Arnkatzur Jaetantur\" agentid=\"3017024\" agenttypeid=\"2\" corporationid=\"1000046\" divisionid=\"22\" level=\"2\" locationid=\"60004483\" locator=\"false\"/>\r\n    <row agent=\"Esbrike Adleine\" agentid=\"3017025\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"24\" level=\"4\" locationid=\"60004540\" locator=\"false\"/>\r\n    <row agent=\"Undinder Hingur\" agentid=\"3017026\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"24\" level=\"1\" locationid=\"60004543\" locator=\"false\"/>\r\n    <row agent=\"Tols Ingisolf\" agentid=\"3017027\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"24\" level=\"3\" locationid=\"60004531\" locator=\"false\"/>\r\n    <row agent=\"Pauremalor Stiremulf\" agentid=\"3017028\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"24\" level=\"1\" locationid=\"60004549\" locator=\"false\"/>\r\n    <row agent=\"Aldag Julroken\" agentid=\"3017029\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"24\" level=\"2\" locationid=\"60004516\" locator=\"false\"/>\r\n    <row agent=\"Illbet Gedovand\" agentid=\"3017030\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"24\" level=\"2\" locationid=\"60004531\" locator=\"false\"/>\r\n    <row agent=\"Atenbjan Aedgur\" agentid=\"3017031\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"24\" level=\"2\" locationid=\"60004534\" locator=\"false\"/>\r\n    <row agent=\"Elmo Bjarg\" agentid=\"3017032\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"24\" level=\"2\" locationid=\"60004549\" locator=\"false\"/>\r\n    <row agent=\"Ebbelor Tongofur\" agentid=\"3017033\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"24\" level=\"1\" locationid=\"60004522\" locator=\"false\"/>\r\n    <row agent=\"Kalalfert Einnur\" agentid=\"3017034\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"24\" level=\"2\" locationid=\"60004534\" locator=\"false\"/>\r\n    <row agent=\"Hatakori Jaenn\" agentid=\"3017035\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"22\" level=\"1\" locationid=\"60004522\" locator=\"false\"/>\r\n    <row agent=\"Ladekopin Arnkorin\" agentid=\"3017036\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"22\" level=\"4\" locationid=\"60004516\" locator=\"false\"/>\r\n    <row agent=\"Fredit Hesrotta\" agentid=\"3017037\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"22\" level=\"1\" locationid=\"60004537\" locator=\"false\"/>\r\n    <row agent=\"Orgrud Tyr\" agentid=\"3017038\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"22\" level=\"1\" locationid=\"60004531\" locator=\"false\"/>\r\n    <row agent=\"Hiridokfa Herginer\" agentid=\"3017039\" agenttypeid=\"2\" corporationid=\"1000047\" divisionid=\"22\" level=\"1\" locationid=\"60004549\" locator=\"false\"/>\r\n    <row agent=\"Erkimbad Alkeren\" agentid=\"3017040\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"24\" level=\"3\" locationid=\"60004552\" locator=\"false\"/>\r\n    <row agent=\"Oddesulf Keriget\" agentid=\"3017041\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"24\" level=\"3\" locationid=\"60004579\" locator=\"false\"/>\r\n    <row agent=\"Abina Bagulosi\" agentid=\"3017042\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"24\" level=\"2\" locationid=\"60004585\" locator=\"false\"/>\r\n    <row agent=\"Gelegaud Jammalgen\" agentid=\"3017043\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"24\" level=\"1\" locationid=\"60004570\" locator=\"false\"/>\r\n    <row agent=\"Kald Evratren\" agentid=\"3017044\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"24\" level=\"1\" locationid=\"60004573\" locator=\"false\"/>\r\n    <row agent=\"Euten Aplur\" agentid=\"3017045\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"24\" level=\"1\" locationid=\"60004570\" locator=\"false\"/>\r\n    <row agent=\"Niraranko Eilwalef\" agentid=\"3017046\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"24\" level=\"3\" locationid=\"60004585\" locator=\"false\"/>\r\n    <row agent=\"Eng Hrelst\" agentid=\"3017047\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"24\" level=\"1\" locationid=\"60004585\" locator=\"false\"/>\r\n    <row agent=\"Usuntild Ofotring\" agentid=\"3017048\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"24\" level=\"3\" locationid=\"60004573\" locator=\"false\"/>\r\n    <row agent=\"Boksraugur Arnoko\" agentid=\"3017049\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"22\" level=\"3\" locationid=\"60004552\" locator=\"false\"/>\r\n    <row agent=\"Hedizo Ludefaelfar\" agentid=\"3017050\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"22\" level=\"3\" locationid=\"60004555\" locator=\"false\"/>\r\n    <row agent=\"Ondida Arunar\" agentid=\"3017051\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"22\" level=\"3\" locationid=\"60004552\" locator=\"false\"/>\r\n    <row agent=\"Eggraror Leuren\" agentid=\"3017052\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"22\" level=\"3\" locationid=\"60004561\" locator=\"false\"/>\r\n    <row agent=\"Hilur Bladerand\" agentid=\"3017053\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"22\" level=\"2\" locationid=\"60004564\" locator=\"false\"/>\r\n    <row agent=\"Vangitta Og\" agentid=\"3017054\" agenttypeid=\"2\" corporationid=\"1000048\" divisionid=\"22\" level=\"1\" locationid=\"60004570\" locator=\"false\"/>\r\n    <row agent=\"Kalifljasmur Eindremirek\" agentid=\"3017055\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"4\" locationid=\"60004597\" locator=\"false\"/>\r\n    <row agent=\"Huslavard Alfikan\" agentid=\"3017056\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"1\" locationid=\"60004588\" locator=\"false\"/>\r\n    <row agent=\"Kaer Aginia\" agentid=\"3017057\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"3\" locationid=\"60004609\" locator=\"false\"/>\r\n    <row agent=\"Adilbjorn Hilfhurmur\" agentid=\"3017058\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"3\" locationid=\"60004609\" locator=\"false\"/>\r\n    <row agent=\"Akrada Toksdakber\" agentid=\"3017059\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"1\" locationid=\"60004588\" locator=\"false\"/>\r\n    <row agent=\"Alfroren Karsteinn\" agentid=\"3017060\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"3\" locationid=\"60004621\" locator=\"false\"/>\r\n    <row agent=\"Bustatber Velsalran\" agentid=\"3017061\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"2\" locationid=\"60004588\" locator=\"false\"/>\r\n    <row agent=\"Rember Esmur\" agentid=\"3017062\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"1\" locationid=\"60004588\" locator=\"false\"/>\r\n    <row agent=\"Oskold Einitur\" agentid=\"3017063\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"3\" locationid=\"60004618\" locator=\"false\"/>\r\n    <row agent=\"Einuard Erkeber\" agentid=\"3017064\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"3\" locationid=\"60004615\" locator=\"false\"/>\r\n    <row agent=\"Haftildar Honledok\" agentid=\"3017065\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"2\" locationid=\"60004588\" locator=\"false\"/>\r\n    <row agent=\"Agdelger Ruflaner\" agentid=\"3017066\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"4\" locationid=\"60004615\" locator=\"false\"/>\r\n    <row agent=\"Berizo Hidada\" agentid=\"3017067\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"22\" level=\"2\" locationid=\"60004603\" locator=\"false\"/>\r\n    <row agent=\"Wislur Amirkengar\" agentid=\"3017068\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"22\" level=\"2\" locationid=\"60004597\" locator=\"false\"/>\r\n    <row agent=\"Aetangur Aldast\" agentid=\"3017069\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"1\" locationid=\"60004738\" locator=\"false\"/>\r\n    <row agent=\"Alfsteinn Berokuard\" agentid=\"3017070\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"3\" locationid=\"60004684\" locator=\"false\"/>\r\n    <row agent=\"Bjok Eirtulf\" agentid=\"3017071\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"2\" locationid=\"60004675\" locator=\"false\"/>\r\n    <row agent=\"Hjodelhar Wlfhand\" agentid=\"3017072\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"3\" locationid=\"60004675\" locator=\"false\"/>\r\n    <row agent=\"Boleraka Edumin\" agentid=\"3017073\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"2\" locationid=\"60004630\" locator=\"false\"/>\r\n    <row agent=\"Astar Freir\" agentid=\"3017074\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"2\" locationid=\"60004681\" locator=\"false\"/>\r\n    <row agent=\"Enaef Mynssetmur\" agentid=\"3017075\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"4\" locationid=\"60004684\" locator=\"false\"/>\r\n    <row agent=\"Ozur Arfrog\" agentid=\"3017076\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"1\" locationid=\"60004726\" locator=\"false\"/>\r\n    <row agent=\"Alonsbad Bird\" agentid=\"3017077\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"3\" locationid=\"60004738\" locator=\"false\"/>\r\n    <row agent=\"Asgidur Haeludari\" agentid=\"3017078\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"1\" locationid=\"60004738\" locator=\"false\"/>\r\n    <row agent=\"Aksenber Savadeikur\" agentid=\"3017079\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"4\" locationid=\"60004675\" locator=\"false\"/>\r\n    <row agent=\"Etren Askagandad\" agentid=\"3017080\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"2\" locationid=\"60004681\" locator=\"false\"/>\r\n    <row agent=\"Odrermer Erlibbad\" agentid=\"3017081\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"1\" locationid=\"60004630\" locator=\"false\"/>\r\n    <row agent=\"Ormikur Gralfrekelm\" agentid=\"3017082\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"2\" locationid=\"60004675\" locator=\"false\"/>\r\n    <row agent=\"Tever Ongidulf\" agentid=\"3017083\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"4\" locationid=\"60004684\" locator=\"false\"/>\r\n    <row agent=\"Oluko Austroteder\" agentid=\"3017084\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"3\" locationid=\"60004726\" locator=\"false\"/>\r\n    <row agent=\"Hotuna Trund\" agentid=\"3017085\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"1\" locationid=\"60004726\" locator=\"false\"/>\r\n    <row agent=\"Asgulf Vadida\" agentid=\"3017086\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"1\" locationid=\"60004684\" locator=\"false\"/>\r\n    <row agent=\"Vilk Meinevedar\" agentid=\"3017087\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"2\" locationid=\"60004726\" locator=\"false\"/>\r\n    <row agent=\"Bedala Upper\" agentid=\"3017088\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"3\" locationid=\"60004684\" locator=\"false\"/>\r\n    <row agent=\"Elambell Amursvald\" agentid=\"3017089\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"4\" locationid=\"60004726\" locator=\"false\"/>\r\n    <row agent=\"Geltolf Sostold\" agentid=\"3017090\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"2\" locationid=\"60004693\" locator=\"false\"/>\r\n    <row agent=\"Atimaseggo Brit\" agentid=\"3017091\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"4\" locationid=\"60004654\" locator=\"false\"/>\r\n    <row agent=\"Arngur Vuindlund\" agentid=\"3017092\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"3\" locationid=\"60004633\" locator=\"false\"/>\r\n    <row agent=\"Aptogaban Hrartalfar\" agentid=\"3017093\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"1\" locationid=\"60004648\" locator=\"false\"/>\r\n    <row agent=\"Elkard Oland\" agentid=\"3017094\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"2\" locationid=\"60004645\" locator=\"false\"/>\r\n    <row agent=\"Vador Rorrauan\" agentid=\"3017095\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"2\" locationid=\"60004732\" locator=\"false\"/>\r\n    <row agent=\"Reigetter Arnogar\" agentid=\"3017096\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"2\" locationid=\"60004690\" locator=\"false\"/>\r\n    <row agent=\"Endfrold Rokadard\" agentid=\"3017097\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"3\" locationid=\"60004714\" locator=\"false\"/>\r\n    <row agent=\"Edrus Iger\" agentid=\"3017098\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"2\" locationid=\"60004648\" locator=\"false\"/>\r\n    <row agent=\"Arbet Nindregrid\" agentid=\"3017099\" agenttypeid=\"2\" corporationid=\"1000050\" divisionid=\"24\" level=\"4\" locationid=\"60004624\" locator=\"false\"/>\r\n    <row agent=\"Reau Rachesiaen\" agentid=\"3017100\" agenttypeid=\"4\" corporationid=\"1000154\" divisionid=\"18\" level=\"3\" locationid=\"60013867\" locator=\"false\"/>\r\n    <row agent=\"Pucherie Pidis\" agentid=\"3017101\" agenttypeid=\"4\" corporationid=\"1000154\" divisionid=\"18\" level=\"3\" locationid=\"60013867\" locator=\"false\"/>\r\n    <row agent=\"Kara Takin\" agentid=\"3017103\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"1\" locationid=\"60014935\" locator=\"false\"/>\r\n    <row agent=\"Utrisen Tsukkilen\" agentid=\"3017107\" agenttypeid=\"6\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002647\" locator=\"false\"/>\r\n    <row agent=\"Vafaya Mansonoun\" agentid=\"3017108\" agenttypeid=\"6\" corporationid=\"1000088\" divisionid=\"24\" level=\"1\" locationid=\"60008674\" locator=\"false\"/>\r\n    <row agent=\"Urpisto Aritate\" agentid=\"3017109\" agenttypeid=\"6\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004228\" locator=\"false\"/>\r\n    <row agent=\"Unjashah Firmak\" agentid=\"3017110\" agenttypeid=\"6\" corporationid=\"1000073\" divisionid=\"22\" level=\"1\" locationid=\"60007198\" locator=\"false\"/>\r\n    <row agent=\"Urara Oshuhad\" agentid=\"3017111\" agenttypeid=\"6\" corporationid=\"1000091\" divisionid=\"24\" level=\"1\" locationid=\"60008764\" locator=\"false\"/>\r\n    <row agent=\"Ushokera Pisto\" agentid=\"3017112\" agenttypeid=\"6\" corporationid=\"1000013\" divisionid=\"23\" level=\"1\" locationid=\"60001516\" locator=\"false\"/>\r\n    <row agent=\"Uidvard Einello\" agentid=\"3017113\" agenttypeid=\"6\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005275\" locator=\"false\"/>\r\n    <row agent=\"Vemmulf Vingeiri\" agentid=\"3017114\" agenttypeid=\"6\" corporationid=\"1000047\" divisionid=\"24\" level=\"1\" locationid=\"60004537\" locator=\"false\"/>\r\n    <row agent=\"Vessolen Huunakailen\" agentid=\"3017115\" agenttypeid=\"6\" corporationid=\"1000005\" divisionid=\"24\" level=\"1\" locationid=\"60000457\" locator=\"false\"/>\r\n    <row agent=\"Vettulen Ashata\" agentid=\"3017116\" agenttypeid=\"6\" corporationid=\"1000010\" divisionid=\"23\" level=\"1\" locationid=\"60001051\" locator=\"false\"/>\r\n    <row agent=\"Yefurol Patahour\" agentid=\"3017117\" agenttypeid=\"6\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008263\" locator=\"false\"/>\r\n    <row agent=\"Famton Hoboma\" agentid=\"3017118\" agenttypeid=\"6\" corporationid=\"1000069\" divisionid=\"23\" level=\"1\" locationid=\"60006772\" locator=\"false\"/>\r\n    <row agent=\"Vautaras Osiai\" agentid=\"3017119\" agenttypeid=\"6\" corporationid=\"1000025\" divisionid=\"23\" level=\"1\" locationid=\"60002887\" locator=\"false\"/>\r\n    <row agent=\"Veinen Hyastilen\" agentid=\"3017120\" agenttypeid=\"6\" corporationid=\"1000011\" divisionid=\"22\" level=\"1\" locationid=\"60001312\" locator=\"false\"/>\r\n    <row agent=\"Yamyen Gazos\" agentid=\"3017121\" agenttypeid=\"6\" corporationid=\"1000079\" divisionid=\"22\" level=\"1\" locationid=\"60007858\" locator=\"false\"/>\r\n    <row agent=\"Voge Elleilette\" agentid=\"3017122\" agenttypeid=\"6\" corporationid=\"1000144\" divisionid=\"22\" level=\"1\" locationid=\"60013369\" locator=\"false\"/>\r\n    <row agent=\"Ertlie Jayet\" agentid=\"3017123\" agenttypeid=\"6\" corporationid=\"1000102\" divisionid=\"22\" level=\"1\" locationid=\"60010378\" locator=\"false\"/>\r\n    <row agent=\"Vennen Okagairos\" agentid=\"3017124\" agenttypeid=\"6\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003907\" locator=\"false\"/>\r\n    <row agent=\"Vepas Hapinen\" agentid=\"3017125\" agenttypeid=\"6\" corporationid=\"1000136\" divisionid=\"24\" level=\"1\" locationid=\"60012898\" locator=\"false\"/>\r\n    <row agent=\"Elanpaa Nituma\" agentid=\"3017126\" agenttypeid=\"6\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002464\" locator=\"false\"/>\r\n    <row agent=\"Viresoutte Ellionelle\" agentid=\"3017127\" agenttypeid=\"6\" corporationid=\"1000109\" divisionid=\"24\" level=\"1\" locationid=\"60010897\" locator=\"false\"/>\r\n    <row agent=\"Vircune Gais\" agentid=\"3017128\" agenttypeid=\"6\" corporationid=\"1000169\" divisionid=\"22\" level=\"1\" locationid=\"60014740\" locator=\"false\"/>\r\n    <row agent=\"Viuep Torisare\" agentid=\"3017129\" agenttypeid=\"6\" corporationid=\"1000109\" divisionid=\"22\" level=\"1\" locationid=\"60010861\" locator=\"false\"/>\r\n    <row agent=\"Yakartchal Maana\" agentid=\"3017130\" agenttypeid=\"6\" corporationid=\"1000082\" divisionid=\"24\" level=\"1\" locationid=\"60008182\" locator=\"false\"/>\r\n    <row agent=\"Avi Numa\" agentid=\"3017131\" agenttypeid=\"6\" corporationid=\"1000027\" divisionid=\"22\" level=\"1\" locationid=\"60003106\" locator=\"false\"/>\r\n    <row agent=\"Vevenier Galle\" agentid=\"3017132\" agenttypeid=\"6\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009172\" locator=\"false\"/>\r\n    <row agent=\"Urdrerban Erhad\" agentid=\"3017133\" agenttypeid=\"6\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005194\" locator=\"false\"/>\r\n    <row agent=\"Urtolf Artuna\" agentid=\"3017134\" agenttypeid=\"6\" corporationid=\"1000055\" divisionid=\"24\" level=\"1\" locationid=\"60005389\" locator=\"false\"/>\r\n    <row agent=\"Vieglau Nouelemane\" agentid=\"3017135\" agenttypeid=\"6\" corporationid=\"1000135\" divisionid=\"24\" level=\"1\" locationid=\"60012820\" locator=\"false\"/>\r\n    <row agent=\"Xadul Sebaze\" agentid=\"3017136\" agenttypeid=\"6\" corporationid=\"1000087\" divisionid=\"22\" level=\"1\" locationid=\"60008644\" locator=\"false\"/>\r\n    <row agent=\"Xiad Kheftane\" agentid=\"3017137\" agenttypeid=\"6\" corporationid=\"1000156\" divisionid=\"22\" level=\"1\" locationid=\"60013966\" locator=\"false\"/>\r\n    <row agent=\"Sysbrenins Carecanne\" agentid=\"3017138\" agenttypeid=\"6\" corporationid=\"1000094\" divisionid=\"24\" level=\"1\" locationid=\"60009034\" locator=\"false\"/>\r\n    <row agent=\"Uittisen Yortonen\" agentid=\"3017139\" agenttypeid=\"6\" corporationid=\"1000005\" divisionid=\"23\" level=\"1\" locationid=\"60000541\" locator=\"false\"/>\r\n    <row agent=\"Iddur Gulako\" agentid=\"3017140\" agenttypeid=\"6\" corporationid=\"1000056\" divisionid=\"24\" level=\"1\" locationid=\"60005419\" locator=\"false\"/>\r\n    <row agent=\"Tidran Mozah\" agentid=\"3017141\" agenttypeid=\"6\" corporationid=\"1000063\" divisionid=\"22\" level=\"1\" locationid=\"60006103\" locator=\"false\"/>\r\n    <row agent=\"Tens Makbema\" agentid=\"3017143\" agenttypeid=\"6\" corporationid=\"1000086\" divisionid=\"22\" level=\"1\" locationid=\"60008596\" locator=\"false\"/>\r\n    <row agent=\"Oishumi Soiken\" agentid=\"3017144\" agenttypeid=\"6\" corporationid=\"1000125\" divisionid=\"24\" level=\"1\" locationid=\"60012322\" locator=\"false\"/>\r\n    <row agent=\"Otsiainen Kaarokin\" agentid=\"3017145\" agenttypeid=\"6\" corporationid=\"1000014\" divisionid=\"23\" level=\"1\" locationid=\"60001555\" locator=\"false\"/>\r\n    <row agent=\"Tesh Amyermun\" agentid=\"3017146\" agenttypeid=\"6\" corporationid=\"1000072\" divisionid=\"24\" level=\"1\" locationid=\"60007018\" locator=\"false\"/>\r\n    <row agent=\"Asuru Chudaya\" agentid=\"3017147\" agenttypeid=\"6\" corporationid=\"1000082\" divisionid=\"24\" level=\"1\" locationid=\"60008152\" locator=\"false\"/>\r\n    <row agent=\"Tairainen Tolola\" agentid=\"3017148\" agenttypeid=\"6\" corporationid=\"1000027\" divisionid=\"22\" level=\"1\" locationid=\"60003076\" locator=\"false\"/>\r\n    <row agent=\"Tohanala Pukegainen\" agentid=\"3017149\" agenttypeid=\"6\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004204\" locator=\"false\"/>\r\n    <row agent=\"Testavuo Versisto\" agentid=\"3017150\" agenttypeid=\"6\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60013003\" locator=\"false\"/>\r\n    <row agent=\"Nihi Kashih\" agentid=\"3017151\" agenttypeid=\"6\" corporationid=\"1000071\" divisionid=\"22\" level=\"1\" locationid=\"60006964\" locator=\"false\"/>\r\n    <row agent=\"Coelx Ilrer\" agentid=\"3017152\" agenttypeid=\"6\" corporationid=\"1000102\" divisionid=\"22\" level=\"1\" locationid=\"60010339\" locator=\"false\"/>\r\n    <row agent=\"Taza Ohrota\" agentid=\"3017153\" agenttypeid=\"6\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008449\" locator=\"false\"/>\r\n    <row agent=\"Paurwaert Assaron\" agentid=\"3017154\" agenttypeid=\"6\" corporationid=\"1000112\" divisionid=\"22\" level=\"1\" locationid=\"60011350\" locator=\"false\"/>\r\n    <row agent=\"Haddusen Oldi\" agentid=\"3017155\" agenttypeid=\"6\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60004942\" locator=\"false\"/>\r\n    <row agent=\"Anzaima Ashunen\" agentid=\"3017156\" agenttypeid=\"6\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001906\" locator=\"false\"/>\r\n    <row agent=\"Tammiru Ahdoo\" agentid=\"3017157\" agenttypeid=\"6\" corporationid=\"1000067\" divisionid=\"24\" level=\"1\" locationid=\"60006712\" locator=\"false\"/>\r\n    <row agent=\"Shitiras Tesoku\" agentid=\"3017158\" agenttypeid=\"6\" corporationid=\"1000030\" divisionid=\"22\" level=\"1\" locationid=\"60003277\" locator=\"false\"/>\r\n    <row agent=\"Ubarastoh Kodunokka\" agentid=\"3017159\" agenttypeid=\"6\" corporationid=\"1000045\" divisionid=\"22\" level=\"1\" locationid=\"60004471\" locator=\"false\"/>\r\n    <row agent=\"Zannur Ebramber\" agentid=\"3017160\" agenttypeid=\"6\" corporationid=\"1000057\" divisionid=\"24\" level=\"1\" locationid=\"60005710\" locator=\"false\"/>\r\n    <row agent=\"Reyrlivelin Eveyne\" agentid=\"3017161\" agenttypeid=\"6\" corporationid=\"1000099\" divisionid=\"23\" level=\"1\" locationid=\"60009736\" locator=\"false\"/>\r\n    <row agent=\"Burik Ilmer\" agentid=\"3017162\" agenttypeid=\"6\" corporationid=\"1000061\" divisionid=\"24\" level=\"1\" locationid=\"60005950\" locator=\"false\"/>\r\n    <row agent=\"Udhias Sheila\" agentid=\"3017163\" agenttypeid=\"6\" corporationid=\"1000073\" divisionid=\"22\" level=\"1\" locationid=\"60007192\" locator=\"false\"/>\r\n    <row agent=\"Ufsen Jistan\" agentid=\"3017164\" agenttypeid=\"6\" corporationid=\"1000074\" divisionid=\"24\" level=\"1\" locationid=\"60007366\" locator=\"false\"/>\r\n    <row agent=\"Triscallion Egghenches\" agentid=\"3017165\" agenttypeid=\"6\" corporationid=\"1000147\" divisionid=\"22\" level=\"1\" locationid=\"60013477\" locator=\"false\"/>\r\n    <row agent=\"Alloullen Toucard\" agentid=\"3017166\" agenttypeid=\"6\" corporationid=\"1000095\" divisionid=\"24\" level=\"1\" locationid=\"60009370\" locator=\"false\"/>\r\n    <row agent=\"Essarienan Aurager\" agentid=\"3017167\" agenttypeid=\"6\" corporationid=\"1000094\" divisionid=\"24\" level=\"1\" locationid=\"60009082\" locator=\"false\"/>\r\n    <row agent=\"Zahneyi Masimih\" agentid=\"3017168\" agenttypeid=\"6\" corporationid=\"1000065\" divisionid=\"22\" level=\"1\" locationid=\"60006496\" locator=\"false\"/>\r\n    <row agent=\"Nienekaila Jun\" agentid=\"3017169\" agenttypeid=\"6\" corporationid=\"1000019\" divisionid=\"24\" level=\"1\" locationid=\"60002134\" locator=\"false\"/>\r\n    <row agent=\"Agiesseson Slaleger\" agentid=\"3017170\" agenttypeid=\"6\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011752\" locator=\"false\"/>\r\n    <row agent=\"Shikanibu Kiukka\" agentid=\"3017171\" agenttypeid=\"6\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000094\" locator=\"false\"/>\r\n    <row agent=\"Immenen Antu\" agentid=\"3017172\" agenttypeid=\"6\" corporationid=\"1000015\" divisionid=\"22\" level=\"1\" locationid=\"60001735\" locator=\"false\"/>\r\n    <row agent=\"Ferwel Odamaert\" agentid=\"3017173\" agenttypeid=\"6\" corporationid=\"1000111\" divisionid=\"24\" level=\"1\" locationid=\"60011239\" locator=\"false\"/>\r\n    <row agent=\"Torlafderi Steimur\" agentid=\"3017174\" agenttypeid=\"6\" corporationid=\"1000170\" divisionid=\"22\" level=\"1\" locationid=\"60014776\" locator=\"false\"/>\r\n    <row agent=\"Gungeiri Heleldar\" agentid=\"3017175\" agenttypeid=\"6\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60004927\" locator=\"false\"/>\r\n    <row agent=\"Arnermes Soldis\" agentid=\"3017176\" agenttypeid=\"6\" corporationid=\"1000104\" divisionid=\"22\" level=\"1\" locationid=\"60010417\" locator=\"false\"/>\r\n    <row agent=\"Konora Onaten\" agentid=\"3017177\" agenttypeid=\"6\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60005845\" locator=\"false\"/>\r\n    <row agent=\"Abesinon Haneret\" agentid=\"3017178\" agenttypeid=\"6\" corporationid=\"1000104\" divisionid=\"24\" level=\"1\" locationid=\"60010450\" locator=\"false\"/>\r\n    <row agent=\"Teberer Enive\" agentid=\"3017179\" agenttypeid=\"6\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011482\" locator=\"false\"/>\r\n    <row agent=\"Tearsitamer Gere\" agentid=\"3017180\" agenttypeid=\"6\" corporationid=\"1000098\" divisionid=\"24\" level=\"1\" locationid=\"60009556\" locator=\"false\"/>\r\n    <row agent=\"Shen Koronen\" agentid=\"3017181\" agenttypeid=\"6\" corporationid=\"1000002\" divisionid=\"24\" level=\"1\" locationid=\"60000196\" locator=\"false\"/>\r\n    <row agent=\"Aidaken Ouriken\" agentid=\"3017182\" agenttypeid=\"6\" corporationid=\"1000161\" divisionid=\"22\" level=\"1\" locationid=\"60014224\" locator=\"false\"/>\r\n    <row agent=\"Mounssou Sorvenne\" agentid=\"3017183\" agenttypeid=\"6\" corporationid=\"1000098\" divisionid=\"23\" level=\"1\" locationid=\"60009700\" locator=\"false\"/>\r\n    <row agent=\"Layah Ramaku\" agentid=\"3017184\" agenttypeid=\"6\" corporationid=\"1000081\" divisionid=\"23\" level=\"1\" locationid=\"60008023\" locator=\"false\"/>\r\n    <row agent=\"Talt Belk\" agentid=\"3017185\" agenttypeid=\"6\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005053\" locator=\"false\"/>\r\n    <row agent=\"Moeneninck Orepel\" agentid=\"3017186\" agenttypeid=\"6\" corporationid=\"1000119\" divisionid=\"22\" level=\"1\" locationid=\"60011701\" locator=\"false\"/>\r\n    <row agent=\"Ollder Trangvatold\" agentid=\"3017187\" agenttypeid=\"6\" corporationid=\"1000057\" divisionid=\"24\" level=\"1\" locationid=\"60005695\" locator=\"false\"/>\r\n    <row agent=\"Pian Atloncevier\" agentid=\"3017188\" agenttypeid=\"6\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011854\" locator=\"false\"/>\r\n    <row agent=\"Ventesanen Okuda\" agentid=\"3017189\" agenttypeid=\"6\" corporationid=\"1000003\" divisionid=\"22\" level=\"1\" locationid=\"60000304\" locator=\"false\"/>\r\n    <row agent=\"Stivirik Fretenlin\" agentid=\"3017190\" agenttypeid=\"6\" corporationid=\"1000052\" divisionid=\"22\" level=\"1\" locationid=\"60005035\" locator=\"false\"/>\r\n    <row agent=\"Santo Otsasen\" agentid=\"3017191\" agenttypeid=\"6\" corporationid=\"1000003\" divisionid=\"22\" level=\"1\" locationid=\"60000289\" locator=\"false\"/>\r\n    <row agent=\"Eganderd Agast\" agentid=\"3017192\" agenttypeid=\"6\" corporationid=\"1000056\" divisionid=\"23\" level=\"1\" locationid=\"60005674\" locator=\"false\"/>\r\n    <row agent=\"Hahagi Ashek\" agentid=\"3017193\" agenttypeid=\"6\" corporationid=\"1000069\" divisionid=\"23\" level=\"1\" locationid=\"60006805\" locator=\"false\"/>\r\n    <row agent=\"Haussier Eruet\" agentid=\"3017194\" agenttypeid=\"6\" corporationid=\"1000103\" divisionid=\"22\" level=\"1\" locationid=\"60010393\" locator=\"false\"/>\r\n    <row agent=\"Imnolholt Harundio\" agentid=\"3017195\" agenttypeid=\"6\" corporationid=\"1000170\" divisionid=\"22\" level=\"1\" locationid=\"60014770\" locator=\"false\"/>\r\n    <row agent=\"Dedotte Aindou\" agentid=\"3017196\" agenttypeid=\"6\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011215\" locator=\"false\"/>\r\n    <row agent=\"Sope Nemsin\" agentid=\"3017197\" agenttypeid=\"6\" corporationid=\"1000074\" divisionid=\"24\" level=\"1\" locationid=\"60007483\" locator=\"false\"/>\r\n    <row agent=\"Varossi Ohmahailen\" agentid=\"3017198\" agenttypeid=\"6\" corporationid=\"1000025\" divisionid=\"23\" level=\"1\" locationid=\"60002857\" locator=\"false\"/>\r\n    <row agent=\"Toikka Pestoken\" agentid=\"3017199\" agenttypeid=\"6\" corporationid=\"1000008\" divisionid=\"23\" level=\"1\" locationid=\"60000805\" locator=\"false\"/>\r\n    <row agent=\"Sodaille Aultier\" agentid=\"3017200\" agenttypeid=\"6\" corporationid=\"1000097\" divisionid=\"24\" level=\"1\" locationid=\"60009535\" locator=\"false\"/>\r\n    <row agent=\"Edadat Amlout\" agentid=\"3017201\" agenttypeid=\"6\" corporationid=\"1000073\" divisionid=\"22\" level=\"1\" locationid=\"60007240\" locator=\"false\"/>\r\n    <row agent=\"Ohbota Maiken\" agentid=\"3017202\" agenttypeid=\"6\" corporationid=\"1000007\" divisionid=\"24\" level=\"1\" locationid=\"60000754\" locator=\"false\"/>\r\n    <row agent=\"Sisarmuz Refem\" agentid=\"3017203\" agenttypeid=\"6\" corporationid=\"1000063\" divisionid=\"23\" level=\"1\" locationid=\"60006166\" locator=\"false\"/>\r\n    <row agent=\"Ilken Yagamies\" agentid=\"3017204\" agenttypeid=\"6\" corporationid=\"1000008\" divisionid=\"24\" level=\"1\" locationid=\"60000811\" locator=\"false\"/>\r\n    <row agent=\"Pagemevel Mallore\" agentid=\"3017205\" agenttypeid=\"6\" corporationid=\"1000135\" divisionid=\"23\" level=\"1\" locationid=\"60012811\" locator=\"false\"/>\r\n    <row agent=\"Gatniya Chamu\" agentid=\"3017206\" agenttypeid=\"6\" corporationid=\"1000063\" divisionid=\"22\" level=\"1\" locationid=\"60006214\" locator=\"false\"/>\r\n    <row agent=\"Palenelia Marnel\" agentid=\"3017207\" agenttypeid=\"6\" corporationid=\"1000098\" divisionid=\"23\" level=\"1\" locationid=\"60009613\" locator=\"false\"/>\r\n    <row agent=\"Eranthare Alillere\" agentid=\"3017208\" agenttypeid=\"6\" corporationid=\"1000107\" divisionid=\"24\" level=\"1\" locationid=\"60010687\" locator=\"false\"/>\r\n    <row agent=\"Raigaken Arakenda\" agentid=\"3017209\" agenttypeid=\"6\" corporationid=\"1000127\" divisionid=\"24\" level=\"1\" locationid=\"60012559\" locator=\"false\"/>\r\n    <row agent=\"Ueharainen Oikavas\" agentid=\"3017210\" agenttypeid=\"6\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004246\" locator=\"false\"/>\r\n    <row agent=\"Arbaneyde Archoreau\" agentid=\"3017211\" agenttypeid=\"6\" corporationid=\"1000114\" divisionid=\"24\" level=\"1\" locationid=\"60011509\" locator=\"false\"/>\r\n    <row agent=\"Ohvalainen Kudasen\" agentid=\"3017212\" agenttypeid=\"6\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000076\" locator=\"false\"/>\r\n    <row agent=\"Indregulle Pandthinchel\" agentid=\"3017213\" agenttypeid=\"6\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011395\" locator=\"false\"/>\r\n    <row agent=\"Tehurita Hijo\" agentid=\"3017214\" agenttypeid=\"6\" corporationid=\"1000034\" divisionid=\"24\" level=\"1\" locationid=\"60003727\" locator=\"false\"/>\r\n    <row agent=\"Idara Kouras\" agentid=\"3017215\" agenttypeid=\"6\" corporationid=\"1000010\" divisionid=\"24\" level=\"1\" locationid=\"60001024\" locator=\"false\"/>\r\n    <row agent=\"Teikoras Uehiro\" agentid=\"3017216\" agenttypeid=\"6\" corporationid=\"1000009\" divisionid=\"23\" level=\"1\" locationid=\"60000967\" locator=\"false\"/>\r\n    <row agent=\"Mibayeh Messeran\" agentid=\"3017217\" agenttypeid=\"6\" corporationid=\"1000073\" divisionid=\"22\" level=\"1\" locationid=\"60007216\" locator=\"false\"/>\r\n    <row agent=\"Laldjan Tolomer\" agentid=\"3017218\" agenttypeid=\"6\" corporationid=\"1000154\" divisionid=\"23\" level=\"1\" locationid=\"60013867\" locator=\"false\"/>\r\n    <row agent=\"Uunse Matsikka\" agentid=\"3017219\" agenttypeid=\"6\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000226\" locator=\"false\"/>\r\n    <row agent=\"Eurbagen Ildbod\" agentid=\"3017220\" agenttypeid=\"6\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005173\" locator=\"false\"/>\r\n    <row agent=\"Ilonette Denckerooghe\" agentid=\"3017221\" agenttypeid=\"6\" corporationid=\"1000098\" divisionid=\"24\" level=\"1\" locationid=\"60009679\" locator=\"false\"/>\r\n    <row agent=\"Vartalmar Haniko\" agentid=\"3017222\" agenttypeid=\"6\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005095\" locator=\"false\"/>\r\n    <row agent=\"Dabie Kalangin\" agentid=\"3017223\" agenttypeid=\"6\" corporationid=\"1000086\" divisionid=\"24\" level=\"1\" locationid=\"60008584\" locator=\"false\"/>\r\n    <row agent=\"Fungabaiken Risalo\" agentid=\"3017224\" agenttypeid=\"6\" corporationid=\"1000124\" divisionid=\"24\" level=\"1\" locationid=\"60012238\" locator=\"false\"/>\r\n    <row agent=\"Kahazen Kuzek\" agentid=\"3017225\" agenttypeid=\"6\" corporationid=\"1000064\" divisionid=\"23\" level=\"1\" locationid=\"60006379\" locator=\"false\"/>\r\n    <row agent=\"Sladams Houruene\" agentid=\"3017226\" agenttypeid=\"6\" corporationid=\"1000114\" divisionid=\"22\" level=\"1\" locationid=\"60011518\" locator=\"false\"/>\r\n    <row agent=\"Tennjorn Avilur\" agentid=\"3017227\" agenttypeid=\"6\" corporationid=\"1000163\" divisionid=\"22\" level=\"1\" locationid=\"60014401\" locator=\"false\"/>\r\n    <row agent=\"Exalecel Ellebitte\" agentid=\"3017228\" agenttypeid=\"6\" corporationid=\"1000112\" divisionid=\"22\" level=\"1\" locationid=\"60011359\" locator=\"false\"/>\r\n    <row agent=\"Ranmaa Obai\" agentid=\"3017229\" agenttypeid=\"6\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003595\" locator=\"false\"/>\r\n    <row agent=\"Vuokaida Oinarri\" agentid=\"3017230\" agenttypeid=\"6\" corporationid=\"1000032\" divisionid=\"24\" level=\"1\" locationid=\"60003442\" locator=\"false\"/>\r\n    <row agent=\"Ermerin Armorotte\" agentid=\"3017231\" agenttypeid=\"6\" corporationid=\"1000120\" divisionid=\"22\" level=\"1\" locationid=\"60011812\" locator=\"false\"/>\r\n    <row agent=\"Hoydemoerman Schepont\" agentid=\"3017232\" agenttypeid=\"6\" corporationid=\"1000100\" divisionid=\"24\" level=\"1\" locationid=\"60009901\" locator=\"false\"/>\r\n    <row agent=\"Kimebu Hamole\" agentid=\"3017233\" agenttypeid=\"6\" corporationid=\"1000063\" divisionid=\"22\" level=\"1\" locationid=\"60006178\" locator=\"false\"/>\r\n    <row agent=\"Heerash Fagu\" agentid=\"3017234\" agenttypeid=\"6\" corporationid=\"1000069\" divisionid=\"23\" level=\"1\" locationid=\"60006790\" locator=\"false\"/>\r\n    <row agent=\"Tsama Ovonitsu\" agentid=\"3017235\" agenttypeid=\"6\" corporationid=\"1000002\" divisionid=\"22\" level=\"1\" locationid=\"60000115\" locator=\"false\"/>\r\n    <row agent=\"Tormonen Yananala\" agentid=\"3017236\" agenttypeid=\"6\" corporationid=\"1000019\" divisionid=\"23\" level=\"1\" locationid=\"60002140\" locator=\"false\"/>\r\n    <row agent=\"Roial Agrengalier\" agentid=\"3017237\" agenttypeid=\"6\" corporationid=\"1000102\" divisionid=\"23\" level=\"1\" locationid=\"60010330\" locator=\"false\"/>\r\n    <row agent=\"Andunen Ikanainen\" agentid=\"3017238\" agenttypeid=\"6\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000040\" locator=\"false\"/>\r\n    <row agent=\"Ankold Falf\" agentid=\"3017239\" agenttypeid=\"6\" corporationid=\"1000154\" divisionid=\"23\" level=\"1\" locationid=\"60013864\" locator=\"false\"/>\r\n    <row agent=\"Penakka Kukakka\" agentid=\"3017240\" agenttypeid=\"6\" corporationid=\"1000022\" divisionid=\"23\" level=\"1\" locationid=\"60002413\" locator=\"false\"/>\r\n    <row agent=\"Riraille Yvamaert\" agentid=\"3017241\" agenttypeid=\"6\" corporationid=\"1000102\" divisionid=\"22\" level=\"1\" locationid=\"60010351\" locator=\"false\"/>\r\n    <row agent=\"Silladin Rarnedur\" agentid=\"3017242\" agenttypeid=\"6\" corporationid=\"1000056\" divisionid=\"22\" level=\"1\" locationid=\"60005608\" locator=\"false\"/>\r\n    <row agent=\"Basaten Egnild\" agentid=\"3017243\" agenttypeid=\"6\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60004987\" locator=\"false\"/>\r\n    <row agent=\"Euns Sirmeneille\" agentid=\"3017244\" agenttypeid=\"6\" corporationid=\"1000122\" divisionid=\"24\" level=\"1\" locationid=\"60012025\" locator=\"false\"/>\r\n    <row agent=\"Hvanakard Azanbilla\" agentid=\"3017245\" agenttypeid=\"6\" corporationid=\"1000052\" divisionid=\"22\" level=\"1\" locationid=\"60004969\" locator=\"false\"/>\r\n    <row agent=\"Doore Adevid\" agentid=\"3017246\" agenttypeid=\"6\" corporationid=\"1000064\" divisionid=\"22\" level=\"1\" locationid=\"60006298\" locator=\"false\"/>\r\n    <row agent=\"Jurhek Koonaros\" agentid=\"3017247\" agenttypeid=\"6\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008320\" locator=\"false\"/>\r\n    <row agent=\"Abehr Tadakeh\" agentid=\"3017248\" agenttypeid=\"6\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007126\" locator=\"false\"/>\r\n    <row agent=\"Suitonen Nikirai\" agentid=\"3017249\" agenttypeid=\"6\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002431\" locator=\"false\"/>\r\n    <row agent=\"Hasukimi Kikkesen\" agentid=\"3017250\" agenttypeid=\"6\" corporationid=\"1000011\" divisionid=\"22\" level=\"1\" locationid=\"60001288\" locator=\"false\"/>\r\n    <row agent=\"Sahistik Epoosion\" agentid=\"3017251\" agenttypeid=\"6\" corporationid=\"1000067\" divisionid=\"23\" level=\"1\" locationid=\"60006670\" locator=\"false\"/>\r\n    <row agent=\"Ogyanen Ha\" agentid=\"3017252\" agenttypeid=\"6\" corporationid=\"1000022\" divisionid=\"22\" level=\"1\" locationid=\"60002401\" locator=\"false\"/>\r\n    <row agent=\"Shoph Shekhta\" agentid=\"3017253\" agenttypeid=\"6\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008422\" locator=\"false\"/>\r\n    <row agent=\"Saevebell Wennemar\" agentid=\"3017254\" agenttypeid=\"6\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004780\" locator=\"false\"/>\r\n    <row agent=\"Hasilob Nansoud\" agentid=\"3017255\" agenttypeid=\"6\" corporationid=\"1000065\" divisionid=\"23\" level=\"1\" locationid=\"60006511\" locator=\"false\"/>\r\n    <row agent=\"Msash Liel\" agentid=\"3017256\" agenttypeid=\"6\" corporationid=\"1000092\" divisionid=\"24\" level=\"1\" locationid=\"60008860\" locator=\"false\"/>\r\n    <row agent=\"Vibogi Ekting\" agentid=\"3017257\" agenttypeid=\"6\" corporationid=\"1000056\" divisionid=\"23\" level=\"1\" locationid=\"60005524\" locator=\"false\"/>\r\n    <row agent=\"Nosodnis Kaphim\" agentid=\"3017258\" agenttypeid=\"6\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007024\" locator=\"false\"/>\r\n    <row agent=\"Gephil Shanamim\" agentid=\"3017259\" agenttypeid=\"6\" corporationid=\"1000091\" divisionid=\"22\" level=\"1\" locationid=\"60008767\" locator=\"false\"/>\r\n    <row agent=\"Hanterola Puitamaa\" agentid=\"3017260\" agenttypeid=\"6\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003703\" locator=\"false\"/>\r\n    <row agent=\"Yvymerel Nimestre\" agentid=\"3017261\" agenttypeid=\"6\" corporationid=\"1000138\" divisionid=\"24\" level=\"1\" locationid=\"60013054\" locator=\"false\"/>\r\n    <row agent=\"Tyngidolf Aurtur\" agentid=\"3017262\" agenttypeid=\"6\" corporationid=\"1000061\" divisionid=\"24\" level=\"1\" locationid=\"60005872\" locator=\"false\"/>\r\n    <row agent=\"Armain Zuette\" agentid=\"3017263\" agenttypeid=\"6\" corporationid=\"1000105\" divisionid=\"22\" level=\"1\" locationid=\"60010573\" locator=\"false\"/>\r\n    <row agent=\"Bare Shavachas\" agentid=\"3017264\" agenttypeid=\"6\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008317\" locator=\"false\"/>\r\n    <row agent=\"Kadeber Orward\" agentid=\"3017265\" agenttypeid=\"6\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004849\" locator=\"false\"/>\r\n    <row agent=\"Hizako Istida\" agentid=\"3017266\" agenttypeid=\"6\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005206\" locator=\"false\"/>\r\n    <row agent=\"Olore Avylync\" agentid=\"3017267\" agenttypeid=\"6\" corporationid=\"1000099\" divisionid=\"22\" level=\"1\" locationid=\"60009823\" locator=\"false\"/>\r\n    <row agent=\"Amendreinn Asgurard\" agentid=\"3017268\" agenttypeid=\"6\" corporationid=\"1000154\" divisionid=\"24\" level=\"1\" locationid=\"60013861\" locator=\"false\"/>\r\n    <row agent=\"Ozirdo Tahur\" agentid=\"3017269\" agenttypeid=\"6\" corporationid=\"1000063\" divisionid=\"22\" level=\"1\" locationid=\"60006184\" locator=\"false\"/>\r\n    <row agent=\"Benkina Meiteinn\" agentid=\"3017270\" agenttypeid=\"6\" corporationid=\"1000162\" divisionid=\"24\" level=\"1\" locationid=\"60014347\" locator=\"false\"/>\r\n    <row agent=\"Mangunsulf Ihtor\" agentid=\"3017271\" agenttypeid=\"6\" corporationid=\"1000056\" divisionid=\"23\" level=\"1\" locationid=\"60005578\" locator=\"false\"/>\r\n    <row agent=\"Alemirer Estanoiret\" agentid=\"3017272\" agenttypeid=\"6\" corporationid=\"1000144\" divisionid=\"24\" level=\"1\" locationid=\"60013360\" locator=\"false\"/>\r\n    <row agent=\"Acherie Aeleem\" agentid=\"3017273\" agenttypeid=\"6\" corporationid=\"1000107\" divisionid=\"22\" level=\"1\" locationid=\"60010720\" locator=\"false\"/>\r\n    <row agent=\"Bruspin Pemmune\" agentid=\"3017274\" agenttypeid=\"6\" corporationid=\"1000101\" divisionid=\"23\" level=\"1\" locationid=\"60010294\" locator=\"false\"/>\r\n    <row agent=\"Aelruken Arlund\" agentid=\"3017275\" agenttypeid=\"6\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60005971\" locator=\"false\"/>\r\n    <row agent=\"Yotihota Mikamo\" agentid=\"3017276\" agenttypeid=\"6\" corporationid=\"1000016\" divisionid=\"22\" level=\"1\" locationid=\"60001804\" locator=\"false\"/>\r\n    <row agent=\"Sidooha Akambia\" agentid=\"3017277\" agenttypeid=\"6\" corporationid=\"1000065\" divisionid=\"22\" level=\"1\" locationid=\"60006523\" locator=\"false\"/>\r\n    <row agent=\"Orsaken Pakkonen\" agentid=\"3017278\" agenttypeid=\"6\" corporationid=\"1000016\" divisionid=\"22\" level=\"1\" locationid=\"60001771\" locator=\"false\"/>\r\n    <row agent=\"Estalette Chieve\" agentid=\"3017279\" agenttypeid=\"6\" corporationid=\"1000102\" divisionid=\"22\" level=\"1\" locationid=\"60010354\" locator=\"false\"/>\r\n    <row agent=\"Habalu Taidecar\" agentid=\"3017280\" agenttypeid=\"6\" corporationid=\"1000070\" divisionid=\"23\" level=\"1\" locationid=\"60006922\" locator=\"false\"/>\r\n    <row agent=\"Saisima Ishokera\" agentid=\"3017281\" agenttypeid=\"6\" corporationid=\"1000004\" divisionid=\"22\" level=\"1\" locationid=\"60000331\" locator=\"false\"/>\r\n    <row agent=\"Rarsk Rkinbiko\" agentid=\"3017282\" agenttypeid=\"6\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005101\" locator=\"false\"/>\r\n    <row agent=\"Brarel Orollede\" agentid=\"3017283\" agenttypeid=\"6\" corporationid=\"1000121\" divisionid=\"22\" level=\"1\" locationid=\"60011998\" locator=\"false\"/>\r\n    <row agent=\"Ichiken Rumatoh\" agentid=\"3017284\" agenttypeid=\"6\" corporationid=\"1000041\" divisionid=\"24\" level=\"1\" locationid=\"60004168\" locator=\"false\"/>\r\n    <row agent=\"Chamarthe Amarulyn\" agentid=\"3017285\" agenttypeid=\"6\" corporationid=\"1000099\" divisionid=\"22\" level=\"1\" locationid=\"60009772\" locator=\"false\"/>\r\n    <row agent=\"Roussogetan Weyssilenne\" agentid=\"3017286\" agenttypeid=\"6\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012262\" locator=\"false\"/>\r\n    <row agent=\"Allanalle Feun\" agentid=\"3017287\" agenttypeid=\"6\" corporationid=\"1000095\" divisionid=\"22\" level=\"1\" locationid=\"60009385\" locator=\"false\"/>\r\n    <row agent=\"Seghenth Valmu\" agentid=\"3017288\" agenttypeid=\"6\" corporationid=\"1000081\" divisionid=\"24\" level=\"1\" locationid=\"60008035\" locator=\"false\"/>\r\n    <row agent=\"Mabai Aty\" agentid=\"3017289\" agenttypeid=\"6\" corporationid=\"1000134\" divisionid=\"24\" level=\"1\" locationid=\"60014952\" locator=\"false\"/>\r\n    <row agent=\"Esmerainon Adoutte\" agentid=\"3017290\" agenttypeid=\"6\" corporationid=\"1000145\" divisionid=\"22\" level=\"1\" locationid=\"60013393\" locator=\"false\"/>\r\n    <row agent=\"Auroroial Lonchenoire\" agentid=\"3017291\" agenttypeid=\"6\" corporationid=\"1000146\" divisionid=\"24\" level=\"1\" locationid=\"60013423\" locator=\"false\"/>\r\n    <row agent=\"Versa Poothala\" agentid=\"3017292\" agenttypeid=\"6\" corporationid=\"1000063\" divisionid=\"22\" level=\"1\" locationid=\"60006118\" locator=\"false\"/>\r\n    <row agent=\"Sotah Imya\" agentid=\"3017293\" agenttypeid=\"6\" corporationid=\"1000079\" divisionid=\"24\" level=\"1\" locationid=\"60007789\" locator=\"false\"/>\r\n    <row agent=\"Odibert Aubolia\" agentid=\"3017294\" agenttypeid=\"6\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012523\" locator=\"false\"/>\r\n    <row agent=\"Toonat Zacani\" agentid=\"3017296\" agenttypeid=\"6\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007093\" locator=\"false\"/>\r\n    <row agent=\"Unranuldegur Odbeldur\" agentid=\"3017297\" agenttypeid=\"6\" corporationid=\"1000048\" divisionid=\"22\" level=\"1\" locationid=\"60004564\" locator=\"false\"/>\r\n    <row agent=\"Eimmulf Agdila\" agentid=\"3017298\" agenttypeid=\"6\" corporationid=\"1000124\" divisionid=\"24\" level=\"1\" locationid=\"60012205\" locator=\"false\"/>\r\n    <row agent=\"Albidoldur Anssus\" agentid=\"3017299\" agenttypeid=\"6\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005167\" locator=\"false\"/>\r\n    <row agent=\"Troure Sweyst\" agentid=\"3017300\" agenttypeid=\"6\" corporationid=\"1000130\" divisionid=\"24\" level=\"1\" locationid=\"60012595\" locator=\"false\"/>\r\n    <row agent=\"Porsi Manamy\" agentid=\"3017301\" agenttypeid=\"6\" corporationid=\"1000074\" divisionid=\"23\" level=\"1\" locationid=\"60007411\" locator=\"false\"/>\r\n    <row agent=\"Adyedli Banad\" agentid=\"3017302\" agenttypeid=\"6\" corporationid=\"1000063\" divisionid=\"23\" level=\"1\" locationid=\"60006142\" locator=\"false\"/>\r\n    <row agent=\"Atye Derdin\" agentid=\"3017303\" agenttypeid=\"6\" corporationid=\"1000101\" divisionid=\"23\" level=\"1\" locationid=\"60010282\" locator=\"false\"/>\r\n    <row agent=\"Caspynaere Veyn\" agentid=\"3017304\" agenttypeid=\"6\" corporationid=\"1000100\" divisionid=\"23\" level=\"1\" locationid=\"60010066\" locator=\"false\"/>\r\n    <row agent=\"Enduras Rinen\" agentid=\"3017305\" agenttypeid=\"6\" corporationid=\"1000010\" divisionid=\"23\" level=\"1\" locationid=\"60001126\" locator=\"false\"/>\r\n    <row agent=\"Alfodan Iskel\" agentid=\"3017306\" agenttypeid=\"6\" corporationid=\"1000050\" divisionid=\"24\" level=\"1\" locationid=\"60004705\" locator=\"false\"/>\r\n    <row agent=\"Ashokon Bofazan\" agentid=\"3017307\" agenttypeid=\"6\" corporationid=\"1000082\" divisionid=\"24\" level=\"1\" locationid=\"60008164\" locator=\"false\"/>\r\n    <row agent=\"Kensa Srasrararz\" agentid=\"3017308\" agenttypeid=\"6\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008371\" locator=\"false\"/>\r\n    <row agent=\"Oraki Tami\" agentid=\"3017309\" agenttypeid=\"6\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001993\" locator=\"false\"/>\r\n    <row agent=\"Embod Raededuden\" agentid=\"3017310\" agenttypeid=\"6\" corporationid=\"1000061\" divisionid=\"24\" level=\"1\" locationid=\"60005812\" locator=\"false\"/>\r\n    <row agent=\"Torlaber Orgel\" agentid=\"3017311\" agenttypeid=\"6\" corporationid=\"1000056\" divisionid=\"23\" level=\"1\" locationid=\"60005458\" locator=\"false\"/>\r\n    <row agent=\"Aria Sharabim\" agentid=\"3017312\" agenttypeid=\"6\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008338\" locator=\"false\"/>\r\n    <row agent=\"Aakonoshin Kivila\" agentid=\"3017313\" agenttypeid=\"6\" corporationid=\"1000043\" divisionid=\"24\" level=\"1\" locationid=\"60004315\" locator=\"false\"/>\r\n    <row agent=\"Yveve Ammain\" agentid=\"3017314\" agenttypeid=\"6\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60013015\" locator=\"false\"/>\r\n    <row agent=\"Tuoritoh Airiken\" agentid=\"3017315\" agenttypeid=\"6\" corporationid=\"1000127\" divisionid=\"24\" level=\"1\" locationid=\"60012562\" locator=\"false\"/>\r\n    <row agent=\"Hakakuoken Ulaa\" agentid=\"3017316\" agenttypeid=\"6\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001909\" locator=\"false\"/>\r\n    <row agent=\"Kanenen Vasala\" agentid=\"3017317\" agenttypeid=\"6\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60012988\" locator=\"false\"/>\r\n    <row agent=\"Elelle Aysie\" agentid=\"3017318\" agenttypeid=\"6\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60010984\" locator=\"false\"/>\r\n    <row agent=\"Abalyu Frooll\" agentid=\"3017319\" agenttypeid=\"6\" corporationid=\"1000105\" divisionid=\"22\" level=\"1\" locationid=\"60010498\" locator=\"false\"/>\r\n    <row agent=\"Dubattes Ommagainon\" agentid=\"3017320\" agenttypeid=\"6\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009253\" locator=\"false\"/>\r\n    <row agent=\"Sassanan Lila\" agentid=\"3017321\" agenttypeid=\"6\" corporationid=\"1000087\" divisionid=\"22\" level=\"1\" locationid=\"60008623\" locator=\"false\"/>\r\n    <row agent=\"Hansa Anuf\" agentid=\"3017322\" agenttypeid=\"6\" corporationid=\"1000085\" divisionid=\"24\" level=\"1\" locationid=\"60008488\" locator=\"false\"/>\r\n    <row agent=\"Brinsermeur Cobiette\" agentid=\"3017323\" agenttypeid=\"6\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011308\" locator=\"false\"/>\r\n    <row agent=\"Reitsato Uemiras\" agentid=\"3017324\" agenttypeid=\"6\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002677\" locator=\"false\"/>\r\n    <row agent=\"Ueda Uesharas\" agentid=\"3017325\" agenttypeid=\"6\" corporationid=\"1000029\" divisionid=\"22\" level=\"1\" locationid=\"60003223\" locator=\"false\"/>\r\n    <row agent=\"Elakimo Narika\" agentid=\"3017326\" agenttypeid=\"6\" corporationid=\"1000128\" divisionid=\"24\" level=\"1\" locationid=\"60012580\" locator=\"false\"/>\r\n    <row agent=\"Erdaron Ware\" agentid=\"3017327\" agenttypeid=\"6\" corporationid=\"1000146\" divisionid=\"22\" level=\"1\" locationid=\"60013441\" locator=\"false\"/>\r\n    <row agent=\"Aviantal Malama\" agentid=\"3017328\" agenttypeid=\"6\" corporationid=\"1000077\" divisionid=\"22\" level=\"1\" locationid=\"60007711\" locator=\"false\"/>\r\n    <row agent=\"Austranerid Ladrulf\" agentid=\"3017329\" agenttypeid=\"6\" corporationid=\"1000056\" divisionid=\"22\" level=\"1\" locationid=\"60005482\" locator=\"false\"/>\r\n    <row agent=\"Zalloronde Algogille\" agentid=\"3017330\" agenttypeid=\"6\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011872\" locator=\"false\"/>\r\n    <row agent=\"Agaussamel Alion\" agentid=\"3017331\" agenttypeid=\"6\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60010114\" locator=\"false\"/>\r\n    <row agent=\"Aliman Kahtas\" agentid=\"3017332\" agenttypeid=\"6\" corporationid=\"1000093\" divisionid=\"24\" level=\"1\" locationid=\"60008914\" locator=\"false\"/>\r\n    <row agent=\"Anokai Reilanen\" agentid=\"3017333\" agenttypeid=\"6\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002614\" locator=\"false\"/>\r\n    <row agent=\"Huttetuldan Scael\" agentid=\"3017334\" agenttypeid=\"6\" corporationid=\"1000108\" divisionid=\"24\" level=\"1\" locationid=\"60010792\" locator=\"false\"/>\r\n    <row agent=\"Dyerene Vlondt\" agentid=\"3017335\" agenttypeid=\"6\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012604\" locator=\"false\"/>\r\n    <row agent=\"Oullaerdt Froreden\" agentid=\"3017336\" agenttypeid=\"6\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60010993\" locator=\"false\"/>\r\n    <row agent=\"Allicuere Ancbye\" agentid=\"3017337\" agenttypeid=\"6\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012652\" locator=\"false\"/>\r\n    <row agent=\"Aulyn Miguelin\" agentid=\"3017338\" agenttypeid=\"6\" corporationid=\"1000094\" divisionid=\"24\" level=\"1\" locationid=\"60009121\" locator=\"false\"/>\r\n    <row agent=\"Aice Baerangalle\" agentid=\"3017339\" agenttypeid=\"6\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011833\" locator=\"false\"/>\r\n    <row agent=\"Alaba Aramhahah\" agentid=\"3017340\" agenttypeid=\"6\" corporationid=\"1000156\" divisionid=\"24\" level=\"1\" locationid=\"60013936\" locator=\"false\"/>\r\n    <row agent=\"Vertuka Saskashin\" agentid=\"3017341\" agenttypeid=\"6\" corporationid=\"1000007\" divisionid=\"24\" level=\"1\" locationid=\"60000655\" locator=\"false\"/>\r\n    <row agent=\"Suneroki Kuruta\" agentid=\"3017342\" agenttypeid=\"6\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002638\" locator=\"false\"/>\r\n    <row agent=\"Idomaaja Ulinato\" agentid=\"3017343\" agenttypeid=\"6\" corporationid=\"1000162\" divisionid=\"24\" level=\"1\" locationid=\"60014290\" locator=\"false\"/>\r\n    <row agent=\"Metlinael Wettin\" agentid=\"3017344\" agenttypeid=\"6\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005341\" locator=\"false\"/>\r\n    <row agent=\"Vrierreve Archovarie\" agentid=\"3017345\" agenttypeid=\"6\" corporationid=\"1000161\" divisionid=\"23\" level=\"1\" locationid=\"60014233\" locator=\"false\"/>\r\n    <row agent=\"Oloni Akta\" agentid=\"3017346\" agenttypeid=\"6\" corporationid=\"1000075\" divisionid=\"24\" level=\"1\" locationid=\"60007540\" locator=\"false\"/>\r\n    <row agent=\"Iranen Ralirashi\" agentid=\"3017347\" agenttypeid=\"6\" corporationid=\"1000161\" divisionid=\"23\" level=\"1\" locationid=\"60014173\" locator=\"false\"/>\r\n    <row agent=\"Hahli Ibash\" agentid=\"3017348\" agenttypeid=\"6\" corporationid=\"1000074\" divisionid=\"23\" level=\"1\" locationid=\"60007345\" locator=\"false\"/>\r\n    <row agent=\"Ukio Ansenen\" agentid=\"3017349\" agenttypeid=\"6\" corporationid=\"1000019\" divisionid=\"24\" level=\"1\" locationid=\"60002179\" locator=\"false\"/>\r\n    <row agent=\"Kalon Andet\" agentid=\"3017350\" agenttypeid=\"6\" corporationid=\"1000065\" divisionid=\"22\" level=\"1\" locationid=\"60006460\" locator=\"false\"/>\r\n    <row agent=\"Peyiri Ahmoh\" agentid=\"3017351\" agenttypeid=\"6\" corporationid=\"1000069\" divisionid=\"24\" level=\"1\" locationid=\"60006886\" locator=\"false\"/>\r\n    <row agent=\"Gelloure Pezires\" agentid=\"3017352\" agenttypeid=\"6\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009178\" locator=\"false\"/>\r\n    <row agent=\"Ookilen Uimomaitoh\" agentid=\"3017353\" agenttypeid=\"6\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003718\" locator=\"false\"/>\r\n    <row agent=\"Sihan Zama\" agentid=\"3017354\" agenttypeid=\"6\" corporationid=\"1000068\" divisionid=\"23\" level=\"1\" locationid=\"60006736\" locator=\"false\"/>\r\n    <row agent=\"Gralrerrout Tarcere\" agentid=\"3017355\" agenttypeid=\"6\" corporationid=\"1000094\" divisionid=\"24\" level=\"1\" locationid=\"60009148\" locator=\"false\"/>\r\n    <row agent=\"Coret Avatien\" agentid=\"3017356\" agenttypeid=\"6\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011419\" locator=\"false\"/>\r\n    <row agent=\"Nagit Fuh\" agentid=\"3017357\" agenttypeid=\"6\" corporationid=\"1000077\" divisionid=\"22\" level=\"1\" locationid=\"60007723\" locator=\"false\"/>\r\n    <row agent=\"Allachard Melie\" agentid=\"3017358\" agenttypeid=\"6\" corporationid=\"1000102\" divisionid=\"22\" level=\"1\" locationid=\"60010321\" locator=\"false\"/>\r\n    <row agent=\"Ahviala Sajanius\" agentid=\"3017359\" agenttypeid=\"6\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001837\" locator=\"false\"/>\r\n    <row agent=\"Haatsieraert Taroix\" agentid=\"3017360\" agenttypeid=\"6\" corporationid=\"1000108\" divisionid=\"24\" level=\"1\" locationid=\"60010852\" locator=\"false\"/>\r\n    <row agent=\"Ahrzia Adona\" agentid=\"3017361\" agenttypeid=\"6\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007531\" locator=\"false\"/>\r\n    <row agent=\"Nupiroda Rumatoh\" agentid=\"3017362\" agenttypeid=\"6\" corporationid=\"1000002\" divisionid=\"22\" level=\"1\" locationid=\"60000136\" locator=\"false\"/>\r\n    <row agent=\"Isanadnis Bedi\" agentid=\"3017363\" agenttypeid=\"6\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007657\" locator=\"false\"/>\r\n    <row agent=\"Atrald Eiswulf\" agentid=\"3017364\" agenttypeid=\"6\" corporationid=\"1000126\" divisionid=\"24\" level=\"1\" locationid=\"60012529\" locator=\"false\"/>\r\n    <row agent=\"Aekelm Ontbald\" agentid=\"3017365\" agenttypeid=\"6\" corporationid=\"1000059\" divisionid=\"22\" level=\"1\" locationid=\"60005743\" locator=\"false\"/>\r\n    <row agent=\"Wic Odorne\" agentid=\"3017366\" agenttypeid=\"6\" corporationid=\"1000162\" divisionid=\"24\" level=\"1\" locationid=\"60014332\" locator=\"false\"/>\r\n    <row agent=\"Zetre Vest\" agentid=\"3017367\" agenttypeid=\"6\" corporationid=\"1000073\" divisionid=\"24\" level=\"1\" locationid=\"60007201\" locator=\"false\"/>\r\n    <row agent=\"Essegaines Edmalere\" agentid=\"3017368\" agenttypeid=\"6\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012637\" locator=\"false\"/>\r\n    <row agent=\"Itoreya Kakkichi\" agentid=\"3017369\" agenttypeid=\"6\" corporationid=\"1000010\" divisionid=\"23\" level=\"1\" locationid=\"60001045\" locator=\"false\"/>\r\n    <row agent=\"Zegali Edih\" agentid=\"3017370\" agenttypeid=\"6\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007597\" locator=\"false\"/>\r\n    <row agent=\"Selah Nidi\" agentid=\"3017371\" agenttypeid=\"6\" corporationid=\"1000065\" divisionid=\"22\" level=\"1\" locationid=\"60006442\" locator=\"false\"/>\r\n    <row agent=\"Perrukainen Artoja\" agentid=\"3017372\" agenttypeid=\"6\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002518\" locator=\"false\"/>\r\n    <row agent=\"Gatsya Tagana\" agentid=\"3017373\" agenttypeid=\"6\" corporationid=\"1000067\" divisionid=\"23\" level=\"1\" locationid=\"60006730\" locator=\"false\"/>\r\n    <row agent=\"Asabe Aribusa\" agentid=\"3017374\" agenttypeid=\"6\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60012949\" locator=\"false\"/>\r\n    <row agent=\"Apie Lachounel\" agentid=\"3017375\" agenttypeid=\"6\" corporationid=\"1000135\" divisionid=\"24\" level=\"1\" locationid=\"60012847\" locator=\"false\"/>\r\n    <row agent=\"Fagah Utmar\" agentid=\"3017376\" agenttypeid=\"6\" corporationid=\"1000064\" divisionid=\"23\" level=\"1\" locationid=\"60006349\" locator=\"false\"/>\r\n    <row agent=\"Besindolf Ade\" agentid=\"3017377\" agenttypeid=\"6\" corporationid=\"1000160\" divisionid=\"22\" level=\"1\" locationid=\"60014140\" locator=\"false\"/>\r\n    <row agent=\"Aunirunen Arai\" agentid=\"3017378\" agenttypeid=\"6\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012472\" locator=\"false\"/>\r\n    <row agent=\"Yvalaert Saston\" agentid=\"3017379\" agenttypeid=\"6\" corporationid=\"1000094\" divisionid=\"24\" level=\"1\" locationid=\"60009232\" locator=\"false\"/>\r\n    <row agent=\"Colelie Abone\" agentid=\"3017380\" agenttypeid=\"6\" corporationid=\"1000135\" divisionid=\"22\" level=\"1\" locationid=\"60012856\" locator=\"false\"/>\r\n    <row agent=\"Efshan Usra\" agentid=\"3017381\" agenttypeid=\"6\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007078\" locator=\"false\"/>\r\n    <row agent=\"Aice Braectemaere\" agentid=\"3017382\" agenttypeid=\"6\" corporationid=\"1000105\" divisionid=\"22\" level=\"1\" locationid=\"60010528\" locator=\"false\"/>\r\n    <row agent=\"Urpalen Tureken\" agentid=\"3017383\" agenttypeid=\"6\" corporationid=\"1000007\" divisionid=\"24\" level=\"1\" locationid=\"60000703\" locator=\"false\"/>\r\n    <row agent=\"Bevyreret Elerouc\" agentid=\"3017384\" agenttypeid=\"6\" corporationid=\"1000111\" divisionid=\"24\" level=\"1\" locationid=\"60011140\" locator=\"false\"/>\r\n    <row agent=\"Amalfast Rilmimold\" agentid=\"3017385\" agenttypeid=\"6\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004906\" locator=\"false\"/>\r\n    <row agent=\"Arauridi Annolpron\" agentid=\"3017386\" agenttypeid=\"6\" corporationid=\"1000061\" divisionid=\"24\" level=\"1\" locationid=\"60005917\" locator=\"false\"/>\r\n    <row agent=\"Hjoltorn Adreurik\" agentid=\"3017387\" agenttypeid=\"6\" corporationid=\"1000061\" divisionid=\"24\" level=\"1\" locationid=\"60005827\" locator=\"false\"/>\r\n    <row agent=\"Sujarento Livala\" agentid=\"3017388\" agenttypeid=\"6\" corporationid=\"1000011\" divisionid=\"22\" level=\"1\" locationid=\"60001414\" locator=\"false\"/>\r\n    <row agent=\"Mavalle Voirt\" agentid=\"3017389\" agenttypeid=\"6\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011167\" locator=\"false\"/>\r\n    <row agent=\"Demen Arjera\" agentid=\"3017390\" agenttypeid=\"6\" corporationid=\"1000093\" divisionid=\"24\" level=\"1\" locationid=\"60008986\" locator=\"false\"/>\r\n    <row agent=\"Saira Ikku\" agentid=\"3017391\" agenttypeid=\"6\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003814\" locator=\"false\"/>\r\n    <row agent=\"Fiba Salat\" agentid=\"3017392\" agenttypeid=\"6\" corporationid=\"1000067\" divisionid=\"23\" level=\"1\" locationid=\"60006700\" locator=\"false\"/>\r\n    <row agent=\"Ajanen Arpoken\" agentid=\"3017393\" agenttypeid=\"6\" corporationid=\"1000030\" divisionid=\"24\" level=\"1\" locationid=\"60003253\" locator=\"false\"/>\r\n    <row agent=\"Cumemare Chrisnelleur\" agentid=\"3017394\" agenttypeid=\"6\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011494\" locator=\"false\"/>\r\n    <row agent=\"Sazaira Kiras\" agentid=\"3017395\" agenttypeid=\"6\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002554\" locator=\"false\"/>\r\n    <row agent=\"Mollenes Gazeleke\" agentid=\"3017396\" agenttypeid=\"6\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60012961\" locator=\"false\"/>\r\n    <row agent=\"Fukkenukka Vaaliola\" agentid=\"3017397\" agenttypeid=\"6\" corporationid=\"1000010\" divisionid=\"22\" level=\"1\" locationid=\"60001006\" locator=\"false\"/>\r\n    <row agent=\"Azez Errava\" agentid=\"3017398\" agenttypeid=\"6\" corporationid=\"1000152\" divisionid=\"24\" level=\"1\" locationid=\"60013831\" locator=\"false\"/>\r\n    <row agent=\"Upuo Ichisakko\" agentid=\"3017399\" agenttypeid=\"6\" corporationid=\"1000033\" divisionid=\"22\" level=\"1\" locationid=\"60003616\" locator=\"false\"/>\r\n    <row agent=\"Khinsah Hakban\" agentid=\"3017400\" agenttypeid=\"6\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007168\" locator=\"false\"/>\r\n    <row agent=\"Arnagar Alkonsund\" agentid=\"3017401\" agenttypeid=\"6\" corporationid=\"1000163\" divisionid=\"24\" level=\"1\" locationid=\"60014374\" locator=\"false\"/>\r\n    <row agent=\"Ognye Samain\" agentid=\"3017402\" agenttypeid=\"6\" corporationid=\"1000107\" divisionid=\"24\" level=\"1\" locationid=\"60010654\" locator=\"false\"/>\r\n    <row agent=\"Saganson Odengsolf\" agentid=\"3017403\" agenttypeid=\"6\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005251\" locator=\"false\"/>\r\n    <row agent=\"Moken Jihukaila\" agentid=\"3017404\" agenttypeid=\"6\" corporationid=\"1000011\" divisionid=\"22\" level=\"1\" locationid=\"60001300\" locator=\"false\"/>\r\n    <row agent=\"Ash Zulih\" agentid=\"3017405\" agenttypeid=\"6\" corporationid=\"1000068\" divisionid=\"22\" level=\"1\" locationid=\"60006769\" locator=\"false\"/>\r\n    <row agent=\"Harmomies Kuntaja\" agentid=\"3017406\" agenttypeid=\"6\" corporationid=\"1000161\" divisionid=\"23\" level=\"1\" locationid=\"60014194\" locator=\"false\"/>\r\n    <row agent=\"Maken Akori\" agentid=\"3017407\" agenttypeid=\"6\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003559\" locator=\"false\"/>\r\n    <row agent=\"Aftar Brelgard\" agentid=\"3017408\" agenttypeid=\"6\" corporationid=\"1000056\" divisionid=\"23\" level=\"1\" locationid=\"60005620\" locator=\"false\"/>\r\n    <row agent=\"Illur Simagen\" agentid=\"3017409\" agenttypeid=\"6\" corporationid=\"1000056\" divisionid=\"22\" level=\"1\" locationid=\"60005566\" locator=\"false\"/>\r\n    <row agent=\"Ludbanno Raurntsur\" agentid=\"3017410\" agenttypeid=\"6\" corporationid=\"1000161\" divisionid=\"23\" level=\"1\" locationid=\"60014176\" locator=\"false\"/>\r\n    <row agent=\"Nashrat Tedanken\" agentid=\"3017411\" agenttypeid=\"6\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007951\" locator=\"false\"/>\r\n    <row agent=\"Kamporailen Hoyera\" agentid=\"3017412\" agenttypeid=\"6\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001921\" locator=\"false\"/>\r\n    <row agent=\"Kalela Merfedinn\" agentid=\"3017413\" agenttypeid=\"6\" corporationid=\"1000123\" divisionid=\"24\" level=\"1\" locationid=\"60012166\" locator=\"false\"/>\r\n    <row agent=\"Bolfrard Oakka\" agentid=\"3017414\" agenttypeid=\"6\" corporationid=\"1000056\" divisionid=\"23\" level=\"1\" locationid=\"60005434\" locator=\"false\"/>\r\n    <row agent=\"Isbubald Bligerold\" agentid=\"3017415\" agenttypeid=\"6\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012298\" locator=\"false\"/>\r\n    <row agent=\"Meket Moniyyuku\" agentid=\"3017416\" agenttypeid=\"6\" corporationid=\"1000092\" divisionid=\"22\" level=\"1\" locationid=\"60008836\" locator=\"false\"/>\r\n    <row agent=\"Chemare Arafaya\" agentid=\"3017417\" agenttypeid=\"6\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007921\" locator=\"false\"/>\r\n    <row agent=\"Westes Pacheteur\" agentid=\"3017418\" agenttypeid=\"6\" corporationid=\"1000125\" divisionid=\"24\" level=\"1\" locationid=\"60012436\" locator=\"false\"/>\r\n    <row agent=\"Otsusen Eni\" agentid=\"3017419\" agenttypeid=\"6\" corporationid=\"1000010\" divisionid=\"23\" level=\"1\" locationid=\"60001066\" locator=\"false\"/>\r\n    <row agent=\"Arell Yollaert\" agentid=\"3017420\" agenttypeid=\"6\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60010015\" locator=\"false\"/>\r\n    <row agent=\"Daous Allycere\" agentid=\"3017421\" agenttypeid=\"6\" corporationid=\"1000104\" divisionid=\"24\" level=\"1\" locationid=\"60010456\" locator=\"false\"/>\r\n    <row agent=\"Ararot Seepheha\" agentid=\"3017422\" agenttypeid=\"6\" corporationid=\"1000088\" divisionid=\"24\" level=\"1\" locationid=\"60008680\" locator=\"false\"/>\r\n    <row agent=\"Luren Engano\" agentid=\"3017423\" agenttypeid=\"6\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005125\" locator=\"false\"/>\r\n    <row agent=\"Ahrnot Tairash\" agentid=\"3017424\" agenttypeid=\"6\" corporationid=\"1000091\" divisionid=\"24\" level=\"1\" locationid=\"60008785\" locator=\"false\"/>\r\n    <row agent=\"Irvam Shappi\" agentid=\"3017425\" agenttypeid=\"6\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008284\" locator=\"false\"/>\r\n    <row agent=\"Lomdor Merou\" agentid=\"3017426\" agenttypeid=\"6\" corporationid=\"1000064\" divisionid=\"22\" level=\"1\" locationid=\"60006280\" locator=\"false\"/>\r\n    <row agent=\"Henoone Jerveh\" agentid=\"3017427\" agenttypeid=\"6\" corporationid=\"1000152\" divisionid=\"24\" level=\"1\" locationid=\"60013834\" locator=\"false\"/>\r\n    <row agent=\"Zaruna Honledok\" agentid=\"3017428\" agenttypeid=\"6\" corporationid=\"1000048\" divisionid=\"22\" level=\"1\" locationid=\"60004576\" locator=\"false\"/>\r\n    <row agent=\"Magesdur Belder\" agentid=\"3017429\" agenttypeid=\"6\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004891\" locator=\"false\"/>\r\n    <row agent=\"Avalaert Lentroutte\" agentid=\"3017430\" agenttypeid=\"6\" corporationid=\"1000161\" divisionid=\"23\" level=\"1\" locationid=\"60014263\" locator=\"false\"/>\r\n    <row agent=\"Albrald Herveiker\" agentid=\"3017431\" agenttypeid=\"6\" corporationid=\"1000163\" divisionid=\"22\" level=\"1\" locationid=\"60014443\" locator=\"false\"/>\r\n    <row agent=\"Aider Atay\" agentid=\"3017432\" agenttypeid=\"6\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009283\" locator=\"false\"/>\r\n    <row agent=\"Oninarkka Soyamoilen\" agentid=\"3017433\" agenttypeid=\"6\" corporationid=\"1000125\" divisionid=\"24\" level=\"1\" locationid=\"60012334\" locator=\"false\"/>\r\n    <row agent=\"Asson Eules\" agentid=\"3017434\" agenttypeid=\"6\" corporationid=\"1000147\" divisionid=\"24\" level=\"1\" locationid=\"60013510\" locator=\"false\"/>\r\n    <row agent=\"Hoom Ner\" agentid=\"3017435\" agenttypeid=\"6\" corporationid=\"1000065\" divisionid=\"23\" level=\"1\" locationid=\"60006451\" locator=\"false\"/>\r\n    <row agent=\"Sirogi Virmako\" agentid=\"3017436\" agenttypeid=\"6\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60005989\" locator=\"false\"/>\r\n    <row agent=\"Nausi Ekit\" agentid=\"3017437\" agenttypeid=\"6\" corporationid=\"1000069\" divisionid=\"23\" level=\"1\" locationid=\"60006877\" locator=\"false\"/>\r\n    <row agent=\"Poirt Zemavore\" agentid=\"3017438\" agenttypeid=\"6\" corporationid=\"1000107\" divisionid=\"22\" level=\"1\" locationid=\"60010675\" locator=\"false\"/>\r\n    <row agent=\"Vatoring Ramesen\" agentid=\"3017439\" agenttypeid=\"6\" corporationid=\"1000163\" divisionid=\"22\" level=\"1\" locationid=\"60014437\" locator=\"false\"/>\r\n    <row agent=\"Emormulf Trinkruntur\" agentid=\"3017440\" agenttypeid=\"6\" corporationid=\"1000049\" divisionid=\"24\" level=\"1\" locationid=\"60004594\" locator=\"false\"/>\r\n    <row agent=\"Marelan Kehtai\" agentid=\"3017441\" agenttypeid=\"6\" corporationid=\"1000065\" divisionid=\"23\" level=\"1\" locationid=\"60006493\" locator=\"false\"/>\r\n    <row agent=\"Eusgar Atbrold\" agentid=\"3017442\" agenttypeid=\"6\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005137\" locator=\"false\"/>\r\n    <row agent=\"Isoulphinan Assauranne\" agentid=\"3017443\" agenttypeid=\"6\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009220\" locator=\"false\"/>\r\n    <row agent=\"Amafi Loun\" agentid=\"3017444\" agenttypeid=\"6\" corporationid=\"1000064\" divisionid=\"23\" level=\"1\" locationid=\"60006313\" locator=\"false\"/>\r\n    <row agent=\"Alikatsen Kuukkalen\" agentid=\"3017445\" agenttypeid=\"6\" corporationid=\"1000162\" divisionid=\"24\" level=\"1\" locationid=\"60014329\" locator=\"false\"/>\r\n    <row agent=\"Iwaya Naukko\" agentid=\"3017446\" agenttypeid=\"6\" corporationid=\"1000157\" divisionid=\"24\" level=\"1\" locationid=\"60013993\" locator=\"false\"/>\r\n    <row agent=\"Hottari Kaskoraima\" agentid=\"3017448\" agenttypeid=\"6\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000061\" locator=\"false\"/>\r\n    <row agent=\"Eloleper Aessen\" agentid=\"3017449\" agenttypeid=\"6\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011257\" locator=\"false\"/>\r\n    <row agent=\"Houruene Cis\" agentid=\"3017450\" agenttypeid=\"6\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011236\" locator=\"false\"/>\r\n    <row agent=\"Aulari Akujainen\" agentid=\"3017451\" agenttypeid=\"6\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000037\" locator=\"false\"/>\r\n    <row agent=\"Kukumo Ienalalen\" agentid=\"3017452\" agenttypeid=\"6\" corporationid=\"1000161\" divisionid=\"23\" level=\"1\" locationid=\"60014266\" locator=\"false\"/>\r\n    <row agent=\"Hingali Kromuraka\" agentid=\"3017453\" agenttypeid=\"6\" corporationid=\"1000056\" divisionid=\"23\" level=\"1\" locationid=\"60005491\" locator=\"false\"/>\r\n    <row agent=\"Shafrak Seswek\" agentid=\"3017454\" agenttypeid=\"6\" corporationid=\"1000065\" divisionid=\"23\" level=\"1\" locationid=\"60006430\" locator=\"false\"/>\r\n    <row agent=\"Gollelle Lanercheve\" agentid=\"3017455\" agenttypeid=\"6\" corporationid=\"1000095\" divisionid=\"22\" level=\"1\" locationid=\"60009391\" locator=\"false\"/>\r\n    <row agent=\"Himeine Souvarie\" agentid=\"3017456\" agenttypeid=\"6\" corporationid=\"1000105\" divisionid=\"22\" level=\"1\" locationid=\"60010522\" locator=\"false\"/>\r\n    <row agent=\"Kima Evir\" agentid=\"3017457\" agenttypeid=\"6\" corporationid=\"1000093\" divisionid=\"24\" level=\"1\" locationid=\"60009010\" locator=\"false\"/>\r\n    <row agent=\"Selestes Aruru\" agentid=\"3017458\" agenttypeid=\"6\" corporationid=\"1000065\" divisionid=\"24\" level=\"1\" locationid=\"60006568\" locator=\"false\"/>\r\n    <row agent=\"Alason Ormairsaire\" agentid=\"3017459\" agenttypeid=\"6\" corporationid=\"1000145\" divisionid=\"22\" level=\"1\" locationid=\"60013402\" locator=\"false\"/>\r\n    <row agent=\"Fofoteaux Jafavel\" agentid=\"3017460\" agenttypeid=\"6\" corporationid=\"1000107\" divisionid=\"22\" level=\"1\" locationid=\"60010645\" locator=\"false\"/>\r\n    <row agent=\"Emalia Igmaggvongur\" agentid=\"3017461\" agenttypeid=\"6\" corporationid=\"1000050\" divisionid=\"24\" level=\"1\" locationid=\"60004657\" locator=\"false\"/>\r\n    <row agent=\"Ahtwin Skias\" agentid=\"3017462\" agenttypeid=\"6\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60006019\" locator=\"false\"/>\r\n    <row agent=\"Yeta Ahzah\" agentid=\"3017463\" agenttypeid=\"6\" corporationid=\"1000080\" divisionid=\"22\" level=\"1\" locationid=\"60007933\" locator=\"false\"/>\r\n    <row agent=\"Orane Ueshano\" agentid=\"3017464\" agenttypeid=\"6\" corporationid=\"1000011\" divisionid=\"22\" level=\"1\" locationid=\"60001264\" locator=\"false\"/>\r\n    <row agent=\"Aldokolf Albuldjan\" agentid=\"3017465\" agenttypeid=\"6\" corporationid=\"1000163\" divisionid=\"24\" level=\"1\" locationid=\"60014431\" locator=\"false\"/>\r\n    <row agent=\"Aalio Tsukuras\" agentid=\"3017466\" agenttypeid=\"6\" corporationid=\"1000019\" divisionid=\"23\" level=\"1\" locationid=\"60002083\" locator=\"false\"/>\r\n    <row agent=\"Gavamer Ambessitien\" agentid=\"3017467\" agenttypeid=\"6\" corporationid=\"1000108\" divisionid=\"24\" level=\"1\" locationid=\"60010849\" locator=\"false\"/>\r\n    <row agent=\"Wireruet Yrier\" agentid=\"3017468\" agenttypeid=\"6\" corporationid=\"1000101\" divisionid=\"22\" level=\"1\" locationid=\"60010195\" locator=\"false\"/>\r\n    <row agent=\"Onti Isida\" agentid=\"3017469\" agenttypeid=\"6\" corporationid=\"1000011\" divisionid=\"23\" level=\"1\" locationid=\"60001390\" locator=\"false\"/>\r\n    <row agent=\"Areb Bharvi\" agentid=\"3017470\" agenttypeid=\"6\" corporationid=\"1000166\" divisionid=\"22\" level=\"1\" locationid=\"60014656\" locator=\"false\"/>\r\n    <row agent=\"Gingire Anchave\" agentid=\"3017471\" agenttypeid=\"6\" corporationid=\"1000144\" divisionid=\"22\" level=\"1\" locationid=\"60013363\" locator=\"false\"/>\r\n    <row agent=\"Hunngur Urbrard\" agentid=\"3017472\" agenttypeid=\"6\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012370\" locator=\"false\"/>\r\n    <row agent=\"Igyo Kotsiainen\" agentid=\"3017473\" agenttypeid=\"6\" corporationid=\"1000011\" divisionid=\"22\" level=\"1\" locationid=\"60001408\" locator=\"false\"/>\r\n    <row agent=\"Hoel Broin\" agentid=\"3017474\" agenttypeid=\"6\" corporationid=\"1000117\" divisionid=\"24\" level=\"1\" locationid=\"60011605\" locator=\"false\"/>\r\n    <row agent=\"Vertuka Ishayama\" agentid=\"3017475\" agenttypeid=\"6\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002689\" locator=\"false\"/>\r\n    <row agent=\"Puusaken Edutakka\" agentid=\"3017476\" agenttypeid=\"6\" corporationid=\"1000014\" divisionid=\"23\" level=\"1\" locationid=\"60001624\" locator=\"false\"/>\r\n    <row agent=\"Vuokamaa Aaromon\" agentid=\"3017477\" agenttypeid=\"6\" corporationid=\"1000125\" divisionid=\"24\" level=\"1\" locationid=\"60012277\" locator=\"false\"/>\r\n    <row agent=\"Maila Tama\" agentid=\"3017478\" agenttypeid=\"6\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003634\" locator=\"false\"/>\r\n    <row agent=\"Olasas Fatimob\" agentid=\"3017479\" agenttypeid=\"6\" corporationid=\"1000069\" divisionid=\"24\" level=\"1\" locationid=\"60006856\" locator=\"false\"/>\r\n    <row agent=\"Gokkerke Kranar\" agentid=\"3017480\" agenttypeid=\"6\" corporationid=\"1000056\" divisionid=\"23\" level=\"1\" locationid=\"60005539\" locator=\"false\"/>\r\n    <row agent=\"Imine Hauranoilen\" agentid=\"3017481\" agenttypeid=\"6\" corporationid=\"1000017\" divisionid=\"24\" level=\"1\" locationid=\"60001933\" locator=\"false\"/>\r\n    <row agent=\"Pirtora Isuoma\" agentid=\"3017482\" agenttypeid=\"6\" corporationid=\"1000033\" divisionid=\"22\" level=\"1\" locationid=\"60003541\" locator=\"false\"/>\r\n    <row agent=\"Aarapas Ogunuchi\" agentid=\"3017483\" agenttypeid=\"6\" corporationid=\"1000010\" divisionid=\"23\" level=\"1\" locationid=\"60001111\" locator=\"false\"/>\r\n    <row agent=\"Grevor Atlolas\" agentid=\"3017484\" agenttypeid=\"6\" corporationid=\"1000104\" divisionid=\"24\" level=\"1\" locationid=\"60010435\" locator=\"false\"/>\r\n    <row agent=\"Arand Aret\" agentid=\"3017485\" agenttypeid=\"6\" corporationid=\"1000130\" divisionid=\"24\" level=\"1\" locationid=\"60012694\" locator=\"false\"/>\r\n    <row agent=\"Correl Tare\" agentid=\"3017486\" agenttypeid=\"6\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012673\" locator=\"false\"/>\r\n    <row agent=\"Fagah Nazdirer\" agentid=\"3017487\" agenttypeid=\"6\" corporationid=\"1000152\" divisionid=\"22\" level=\"1\" locationid=\"60013843\" locator=\"false\"/>\r\n    <row agent=\"Pasa Pintama\" agentid=\"3017488\" agenttypeid=\"6\" corporationid=\"1000023\" divisionid=\"24\" level=\"1\" locationid=\"60002548\" locator=\"false\"/>\r\n    <row agent=\"Gostadin Atirsand\" agentid=\"3017489\" agenttypeid=\"6\" corporationid=\"1000056\" divisionid=\"23\" level=\"1\" locationid=\"60005638\" locator=\"false\"/>\r\n    <row agent=\"Peneciete Mouttolouis\" agentid=\"3017490\" agenttypeid=\"6\" corporationid=\"1000133\" divisionid=\"22\" level=\"1\" locationid=\"60012766\" locator=\"false\"/>\r\n    <row agent=\"Hadami Uhru\" agentid=\"3017491\" agenttypeid=\"6\" corporationid=\"1000074\" divisionid=\"24\" level=\"1\" locationid=\"60007501\" locator=\"false\"/>\r\n    <row agent=\"Ilotelle Algette\" agentid=\"3017492\" agenttypeid=\"6\" corporationid=\"1000129\" divisionid=\"24\" level=\"1\" locationid=\"60012583\" locator=\"false\"/>\r\n    <row agent=\"Okalanta Talonoya\" agentid=\"3017493\" agenttypeid=\"6\" corporationid=\"1000010\" divisionid=\"22\" level=\"1\" locationid=\"60001171\" locator=\"false\"/>\r\n    <row agent=\"Patira Tahmasen\" agentid=\"3017494\" agenttypeid=\"6\" corporationid=\"1000125\" divisionid=\"24\" level=\"1\" locationid=\"60012466\" locator=\"false\"/>\r\n    <row agent=\"Krusbrolf Sirofige\" agentid=\"3017495\" agenttypeid=\"6\" corporationid=\"1000163\" divisionid=\"22\" level=\"1\" locationid=\"60014425\" locator=\"false\"/>\r\n    <row agent=\"Vendalek Manneiri\" agentid=\"3017496\" agenttypeid=\"6\" corporationid=\"1000046\" divisionid=\"24\" level=\"1\" locationid=\"60004501\" locator=\"false\"/>\r\n    <row agent=\"Kaljus Kuomanen\" agentid=\"3017497\" agenttypeid=\"6\" corporationid=\"1000031\" divisionid=\"24\" level=\"1\" locationid=\"60003349\" locator=\"false\"/>\r\n    <row agent=\"Olmaland Unsfreinn\" agentid=\"3017498\" agenttypeid=\"6\" corporationid=\"1000163\" divisionid=\"24\" level=\"1\" locationid=\"60014461\" locator=\"false\"/>\r\n    <row agent=\"Dalgenod Hjatidik\" agentid=\"3017499\" agenttypeid=\"6\" corporationid=\"1000160\" divisionid=\"22\" level=\"1\" locationid=\"60014107\" locator=\"false\"/>\r\n    <row agent=\"Pelbelion Octalange\" agentid=\"3017500\" agenttypeid=\"6\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011200\" locator=\"false\"/>\r\n    <row agent=\"Yvocel Albiller\" agentid=\"3017501\" agenttypeid=\"6\" corporationid=\"1000101\" divisionid=\"23\" level=\"1\" locationid=\"60010249\" locator=\"false\"/>\r\n    <row agent=\"Kuoma Aikitao\" agentid=\"3017502\" agenttypeid=\"6\" corporationid=\"1000125\" divisionid=\"24\" level=\"1\" locationid=\"60012382\" locator=\"false\"/>\r\n    <row agent=\"Shia Aradaki\" agentid=\"3017503\" agenttypeid=\"6\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60012937\" locator=\"false\"/>\r\n    <row agent=\"Aicer Emmalor\" agentid=\"3017504\" agenttypeid=\"6\" corporationid=\"1000146\" divisionid=\"24\" level=\"1\" locationid=\"60013459\" locator=\"false\"/>\r\n    <row agent=\"Bashi Nendashed\" agentid=\"3017505\" agenttypeid=\"6\" corporationid=\"1000075\" divisionid=\"24\" level=\"1\" locationid=\"60007549\" locator=\"false\"/>\r\n    <row agent=\"Soirinen Putsaine\" agentid=\"3017506\" agenttypeid=\"6\" corporationid=\"1000010\" divisionid=\"22\" level=\"1\" locationid=\"60001153\" locator=\"false\"/>\r\n    <row agent=\"Ouchonas Ashuken\" agentid=\"3017507\" agenttypeid=\"6\" corporationid=\"1000019\" divisionid=\"24\" level=\"1\" locationid=\"60002215\" locator=\"false\"/>\r\n    <row agent=\"Umika Keimaara\" agentid=\"3017508\" agenttypeid=\"6\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001990\" locator=\"false\"/>\r\n    <row agent=\"Raun Hittanpaa\" agentid=\"3017509\" agenttypeid=\"6\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001963\" locator=\"false\"/>\r\n    <row agent=\"Sushonji Inukiomaa\" agentid=\"3017510\" agenttypeid=\"6\" corporationid=\"1000010\" divisionid=\"24\" level=\"1\" locationid=\"60001225\" locator=\"false\"/>\r\n    <row agent=\"Mecline Keleine\" agentid=\"3017511\" agenttypeid=\"6\" corporationid=\"1000147\" divisionid=\"24\" level=\"1\" locationid=\"60013492\" locator=\"false\"/>\r\n    <row agent=\"Agangur Abbunbjer\" agentid=\"3017512\" agenttypeid=\"6\" corporationid=\"1000160\" divisionid=\"24\" level=\"1\" locationid=\"60014122\" locator=\"false\"/>\r\n    <row agent=\"Arota Koramaa\" agentid=\"3017513\" agenttypeid=\"6\" corporationid=\"1000162\" divisionid=\"24\" level=\"1\" locationid=\"60014299\" locator=\"false\"/>\r\n    <row agent=\"Ansone Chascher\" agentid=\"3017514\" agenttypeid=\"6\" corporationid=\"1000115\" divisionid=\"22\" level=\"1\" locationid=\"60011587\" locator=\"false\"/>\r\n    <row agent=\"Mohakhzieh Rakban\" agentid=\"3017515\" agenttypeid=\"6\" corporationid=\"1000086\" divisionid=\"24\" level=\"1\" locationid=\"60008506\" locator=\"false\"/>\r\n    <row agent=\"Bappenalle Ygola\" agentid=\"3017516\" agenttypeid=\"6\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012625\" locator=\"false\"/>\r\n    <row agent=\"Uktiad Atin\" agentid=\"3017517\" agenttypeid=\"6\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007594\" locator=\"false\"/>\r\n    <row agent=\"Arajah Jerrama\" agentid=\"3017518\" agenttypeid=\"6\" corporationid=\"1000064\" divisionid=\"24\" level=\"1\" locationid=\"60006385\" locator=\"false\"/>\r\n    <row agent=\"Piak Misamera\" agentid=\"3017519\" agenttypeid=\"6\" corporationid=\"1000019\" divisionid=\"23\" level=\"1\" locationid=\"60002200\" locator=\"false\"/>\r\n    <row agent=\"Tikasida Ayohimo\" agentid=\"3017520\" agenttypeid=\"6\" corporationid=\"1000033\" divisionid=\"22\" level=\"1\" locationid=\"60003568\" locator=\"false\"/>\r\n    <row agent=\"Ofnel Atange\" agentid=\"3017521\" agenttypeid=\"6\" corporationid=\"1000056\" divisionid=\"24\" level=\"1\" locationid=\"60005662\" locator=\"false\"/>\r\n    <row agent=\"Paarjalen Huukera\" agentid=\"3017522\" agenttypeid=\"6\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000157\" locator=\"false\"/>\r\n    <row agent=\"Uphassens Overt\" agentid=\"3017523\" agenttypeid=\"6\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60009949\" locator=\"false\"/>\r\n    <row agent=\"Supas Ronen\" agentid=\"3017524\" agenttypeid=\"6\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000250\" locator=\"false\"/>\r\n    <row agent=\"Irvahka Leran\" agentid=\"3017525\" agenttypeid=\"6\" corporationid=\"1000093\" divisionid=\"24\" level=\"1\" locationid=\"60009028\" locator=\"false\"/>\r\n    <row agent=\"Luvald Anfrard\" agentid=\"3017526\" agenttypeid=\"6\" corporationid=\"1000056\" divisionid=\"22\" level=\"1\" locationid=\"60005512\" locator=\"false\"/>\r\n    <row agent=\"Arviskar Sivarulf\" agentid=\"3017527\" agenttypeid=\"6\" corporationid=\"1000163\" divisionid=\"22\" level=\"1\" locationid=\"60014452\" locator=\"false\"/>\r\n    <row agent=\"Dihnih Semakhboul\" agentid=\"3017528\" agenttypeid=\"6\" corporationid=\"1000065\" divisionid=\"23\" level=\"1\" locationid=\"60006559\" locator=\"false\"/>\r\n    <row agent=\"Fratt Asmurdik\" agentid=\"3017529\" agenttypeid=\"6\" corporationid=\"1000050\" divisionid=\"22\" level=\"1\" locationid=\"60004708\" locator=\"false\"/>\r\n    <row agent=\"Hurubod Ellur\" agentid=\"3017530\" agenttypeid=\"6\" corporationid=\"1000123\" divisionid=\"24\" level=\"1\" locationid=\"60012172\" locator=\"false\"/>\r\n    <row agent=\"Savura Isuta\" agentid=\"3017531\" agenttypeid=\"6\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001858\" locator=\"false\"/>\r\n    <row agent=\"Adille Chapel\" agentid=\"3017532\" agenttypeid=\"6\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012640\" locator=\"false\"/>\r\n    <row agent=\"Rilreka Rervedia\" agentid=\"3017533\" agenttypeid=\"6\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005077\" locator=\"false\"/>\r\n    <row agent=\"Saikasen Ienakkonen\" agentid=\"3017534\" agenttypeid=\"6\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001894\" locator=\"false\"/>\r\n    <row agent=\"Arnkoken Alolberta\" agentid=\"3017535\" agenttypeid=\"6\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60005893\" locator=\"false\"/>\r\n    <row agent=\"Uphallant Blalie\" agentid=\"3017536\" agenttypeid=\"6\" corporationid=\"1000107\" divisionid=\"22\" level=\"1\" locationid=\"60010669\" locator=\"false\"/>\r\n    <row agent=\"Monosetta Aurulelle\" agentid=\"3017537\" agenttypeid=\"6\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011467\" locator=\"false\"/>\r\n    <row agent=\"Aubonnie Divalone\" agentid=\"3017538\" agenttypeid=\"6\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011380\" locator=\"false\"/>\r\n    <row agent=\"Afet Jokhmemar\" agentid=\"3017539\" agenttypeid=\"6\" corporationid=\"1000081\" divisionid=\"22\" level=\"1\" locationid=\"60008089\" locator=\"false\"/>\r\n    <row agent=\"Almananeg Mafsez\" agentid=\"3017540\" agenttypeid=\"6\" corporationid=\"1000072\" divisionid=\"22\" level=\"1\" locationid=\"60007135\" locator=\"false\"/>\r\n    <row agent=\"Canson Alarare\" agentid=\"3017541\" agenttypeid=\"6\" corporationid=\"1000105\" divisionid=\"22\" level=\"1\" locationid=\"60010534\" locator=\"false\"/>\r\n    <row agent=\"Ashaida Kitsalen\" agentid=\"3017542\" agenttypeid=\"6\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003658\" locator=\"false\"/>\r\n    <row agent=\"Juttel Jalleloet\" agentid=\"3017543\" agenttypeid=\"6\" corporationid=\"1000136\" divisionid=\"24\" level=\"1\" locationid=\"60012868\" locator=\"false\"/>\r\n    <row agent=\"Viellesille Compeau\" agentid=\"3017544\" agenttypeid=\"6\" corporationid=\"1000094\" divisionid=\"24\" level=\"1\" locationid=\"60009202\" locator=\"false\"/>\r\n    <row agent=\"Seeva Osrer\" agentid=\"3017545\" agenttypeid=\"6\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007669\" locator=\"false\"/>\r\n    <row agent=\"Aetuking Todeko\" agentid=\"3017546\" agenttypeid=\"6\" corporationid=\"1000052\" divisionid=\"24\" level=\"1\" locationid=\"60005020\" locator=\"false\"/>\r\n    <row agent=\"Moul Forgi\" agentid=\"3017547\" agenttypeid=\"6\" corporationid=\"1000074\" divisionid=\"23\" level=\"1\" locationid=\"60007291\" locator=\"false\"/>\r\n    <row agent=\"Kuonnajus Uusenaikka\" agentid=\"3017548\" agenttypeid=\"6\" corporationid=\"1000010\" divisionid=\"23\" level=\"1\" locationid=\"60001180\" locator=\"false\"/>\r\n    <row agent=\"Oltander Silfirber\" agentid=\"3017549\" agenttypeid=\"6\" corporationid=\"1000062\" divisionid=\"22\" level=\"1\" locationid=\"60006049\" locator=\"false\"/>\r\n    <row agent=\"Eitorkur Ormin\" agentid=\"3017550\" agenttypeid=\"6\" corporationid=\"1000123\" divisionid=\"24\" level=\"1\" locationid=\"60012151\" locator=\"false\"/>\r\n    <row agent=\"Neiria Isollin\" agentid=\"3017551\" agenttypeid=\"6\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011497\" locator=\"false\"/>\r\n    <row agent=\"Brissellot Looligietres\" agentid=\"3017552\" agenttypeid=\"6\" corporationid=\"1000100\" divisionid=\"24\" level=\"1\" locationid=\"60010084\" locator=\"false\"/>\r\n    <row agent=\"Hadiko Ambreber\" agentid=\"3017553\" agenttypeid=\"6\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005071\" locator=\"false\"/>\r\n    <row agent=\"Bestera Sikeban\" agentid=\"3017554\" agenttypeid=\"6\" corporationid=\"1000126\" divisionid=\"22\" level=\"1\" locationid=\"60012544\" locator=\"false\"/>\r\n    <row agent=\"Kashanen Abei\" agentid=\"3017555\" agenttypeid=\"6\" corporationid=\"1000002\" divisionid=\"23\" level=\"1\" locationid=\"60000181\" locator=\"false\"/>\r\n    <row agent=\"Osmomonne Arje\" agentid=\"3017556\" agenttypeid=\"6\" corporationid=\"1000135\" divisionid=\"23\" level=\"1\" locationid=\"60012826\" locator=\"false\"/>\r\n    <row agent=\"Ovo Iras\" agentid=\"3017557\" agenttypeid=\"6\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003502\" locator=\"false\"/>\r\n    <row agent=\"Rontenaef Maturat\" agentid=\"3017558\" agenttypeid=\"6\" corporationid=\"1000160\" divisionid=\"22\" level=\"1\" locationid=\"60014083\" locator=\"false\"/>\r\n    <row agent=\"Ruutenen Yortika\" agentid=\"3017559\" agenttypeid=\"6\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001975\" locator=\"false\"/>\r\n    <row agent=\"Abber Mect\" agentid=\"3017560\" agenttypeid=\"6\" corporationid=\"1000122\" divisionid=\"24\" level=\"1\" locationid=\"60012073\" locator=\"false\"/>\r\n    <row agent=\"Burlaert Grateldale\" agentid=\"3017561\" agenttypeid=\"6\" corporationid=\"1000097\" divisionid=\"23\" level=\"1\" locationid=\"60009475\" locator=\"false\"/>\r\n    <row agent=\"Etonori Ikamera\" agentid=\"3017562\" agenttypeid=\"6\" corporationid=\"1000011\" divisionid=\"23\" level=\"1\" locationid=\"60001339\" locator=\"false\"/>\r\n    <row agent=\"Geripiette Harc\" agentid=\"3017563\" agenttypeid=\"6\" corporationid=\"1000112\" divisionid=\"22\" level=\"1\" locationid=\"60011335\" locator=\"false\"/>\r\n    <row agent=\"Machasnaye Andoulonne\" agentid=\"3017564\" agenttypeid=\"6\" corporationid=\"1000108\" divisionid=\"24\" level=\"1\" locationid=\"60010738\" locator=\"false\"/>\r\n    <row agent=\"Heireshin Oisen\" agentid=\"3017565\" agenttypeid=\"6\" corporationid=\"1000002\" divisionid=\"22\" level=\"1\" locationid=\"60000208\" locator=\"false\"/>\r\n    <row agent=\"Logholis Brekorne\" agentid=\"3017566\" agenttypeid=\"6\" corporationid=\"1000101\" divisionid=\"23\" level=\"1\" locationid=\"60010183\" locator=\"false\"/>\r\n    <row agent=\"Tiebestad Argand\" agentid=\"3017567\" agenttypeid=\"6\" corporationid=\"1000160\" divisionid=\"23\" level=\"1\" locationid=\"60014095\" locator=\"false\"/>\r\n    <row agent=\"Asto Eyga\" agentid=\"3017568\" agenttypeid=\"6\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60013027\" locator=\"false\"/>\r\n    <row agent=\"Harushainen Yodan\" agentid=\"3017569\" agenttypeid=\"6\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002605\" locator=\"false\"/>\r\n    <row agent=\"Fle Javesquet\" agentid=\"3017570\" agenttypeid=\"6\" corporationid=\"1000161\" divisionid=\"23\" level=\"1\" locationid=\"60014251\" locator=\"false\"/>\r\n    <row agent=\"Prokrime Theymsa\" agentid=\"3017571\" agenttypeid=\"6\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007630\" locator=\"false\"/>\r\n    <row agent=\"Amungard Eurorker\" agentid=\"3017572\" agenttypeid=\"6\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005317\" locator=\"false\"/>\r\n    <row agent=\"Voukunen Oichoniras\" agentid=\"3017573\" agenttypeid=\"6\" corporationid=\"1000133\" divisionid=\"22\" level=\"1\" locationid=\"60012760\" locator=\"false\"/>\r\n    <row agent=\"Ygenia Orlogne\" agentid=\"3017574\" agenttypeid=\"6\" corporationid=\"1000105\" divisionid=\"22\" level=\"1\" locationid=\"60010543\" locator=\"false\"/>\r\n    <row agent=\"Azoenberon Lalelbrattan\" agentid=\"3017575\" agenttypeid=\"6\" corporationid=\"1000107\" divisionid=\"22\" level=\"1\" locationid=\"60010696\" locator=\"false\"/>\r\n    <row agent=\"Aimeman Wesschannis\" agentid=\"3017576\" agenttypeid=\"6\" corporationid=\"1000147\" divisionid=\"22\" level=\"1\" locationid=\"60013546\" locator=\"false\"/>\r\n    <row agent=\"Ancia Bolle\" agentid=\"3017577\" agenttypeid=\"6\" corporationid=\"1000135\" divisionid=\"24\" level=\"1\" locationid=\"60012832\" locator=\"false\"/>\r\n    <row agent=\"Poshih Assandedub\" agentid=\"3017578\" agenttypeid=\"6\" corporationid=\"1000074\" divisionid=\"22\" level=\"1\" locationid=\"60007450\" locator=\"false\"/>\r\n    <row agent=\"Aelostre Vlanelle\" agentid=\"3017579\" agenttypeid=\"6\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011296\" locator=\"false\"/>\r\n    <row agent=\"Frot Sirikizo\" agentid=\"3017580\" agenttypeid=\"6\" corporationid=\"1000160\" divisionid=\"24\" level=\"1\" locationid=\"60014104\" locator=\"false\"/>\r\n    <row agent=\"Oursallise Granette\" agentid=\"3017581\" agenttypeid=\"6\" corporationid=\"1000138\" divisionid=\"24\" level=\"1\" locationid=\"60013072\" locator=\"false\"/>\r\n    <row agent=\"Molea Sigaza\" agentid=\"3017582\" agenttypeid=\"6\" corporationid=\"1000088\" divisionid=\"24\" level=\"1\" locationid=\"60008650\" locator=\"false\"/>\r\n    <row agent=\"Bennolar Eitter\" agentid=\"3017583\" agenttypeid=\"6\" corporationid=\"1000163\" divisionid=\"24\" level=\"1\" locationid=\"60014419\" locator=\"false\"/>\r\n    <row agent=\"Mandra Gadest\" agentid=\"3017584\" agenttypeid=\"6\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008365\" locator=\"false\"/>\r\n    <row agent=\"Kokanima Urhinita\" agentid=\"3017585\" agenttypeid=\"6\" corporationid=\"1000023\" divisionid=\"24\" level=\"1\" locationid=\"60002515\" locator=\"false\"/>\r\n    <row agent=\"Paltoh Turppo\" agentid=\"3017586\" agenttypeid=\"6\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001945\" locator=\"false\"/>\r\n    <row agent=\"Khakia Ahrnin\" agentid=\"3017587\" agenttypeid=\"6\" corporationid=\"1000065\" divisionid=\"22\" level=\"1\" locationid=\"60006478\" locator=\"false\"/>\r\n    <row agent=\"Aussier Ronier\" agentid=\"3017588\" agenttypeid=\"6\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60010054\" locator=\"false\"/>\r\n    <row agent=\"Wimpes Marthyn\" agentid=\"3017589\" agenttypeid=\"6\" corporationid=\"1000105\" divisionid=\"22\" level=\"1\" locationid=\"60010549\" locator=\"false\"/>\r\n    <row agent=\"Vaskinen Amonen\" agentid=\"3017590\" agenttypeid=\"6\" corporationid=\"1000161\" divisionid=\"22\" level=\"1\" locationid=\"60014242\" locator=\"false\"/>\r\n    <row agent=\"Aclie Audesiaen\" agentid=\"3017591\" agenttypeid=\"6\" corporationid=\"1000108\" divisionid=\"24\" level=\"1\" locationid=\"60010771\" locator=\"false\"/>\r\n    <row agent=\"Stayme Estovove\" agentid=\"3017592\" agenttypeid=\"6\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011284\" locator=\"false\"/>\r\n    <row agent=\"Tari Ampas\" agentid=\"3017593\" agenttypeid=\"6\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60012952\" locator=\"false\"/>\r\n    <row agent=\"Manaraz Ratuze\" agentid=\"3017594\" agenttypeid=\"6\" corporationid=\"1000065\" divisionid=\"23\" level=\"1\" locationid=\"60006544\" locator=\"false\"/>\r\n    <row agent=\"Lolluse Aufe\" agentid=\"3017595\" agenttypeid=\"6\" corporationid=\"1000107\" divisionid=\"22\" level=\"1\" locationid=\"60010714\" locator=\"false\"/>\r\n    <row agent=\"Borieres Heves\" agentid=\"3017596\" agenttypeid=\"6\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011455\" locator=\"false\"/>\r\n    <row agent=\"Ludosand Marbranner\" agentid=\"3017597\" agenttypeid=\"6\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012493\" locator=\"false\"/>\r\n    <row agent=\"Nafomeh Zarvanar\" agentid=\"3017598\" agenttypeid=\"6\" corporationid=\"1000074\" divisionid=\"22\" level=\"1\" locationid=\"60007372\" locator=\"false\"/>\r\n    <row agent=\"Pamoo Hebthi\" agentid=\"3017599\" agenttypeid=\"6\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007576\" locator=\"false\"/>\r\n    <row agent=\"Benvis Oursay\" agentid=\"3017600\" agenttypeid=\"6\" corporationid=\"1000162\" divisionid=\"24\" level=\"1\" locationid=\"60014284\" locator=\"false\"/>\r\n    <row agent=\"Allay Sasibilon\" agentid=\"3017601\" agenttypeid=\"6\" corporationid=\"1000107\" divisionid=\"24\" level=\"1\" locationid=\"60010693\" locator=\"false\"/>\r\n    <row agent=\"Abaessiman Vloure\" agentid=\"3017602\" agenttypeid=\"6\" corporationid=\"1000104\" divisionid=\"22\" level=\"1\" locationid=\"60010465\" locator=\"false\"/>\r\n    <row agent=\"Srirerar Enam\" agentid=\"3017603\" agenttypeid=\"6\" corporationid=\"1000156\" divisionid=\"24\" level=\"1\" locationid=\"60013951\" locator=\"false\"/>\r\n    <row agent=\"Bemmar Imartin\" agentid=\"3017604\" agenttypeid=\"6\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008458\" locator=\"false\"/>\r\n    <row agent=\"Ventuainen Oraki\" agentid=\"3017605\" agenttypeid=\"6\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001867\" locator=\"false\"/>\r\n    <row agent=\"Rari Kebahba\" agentid=\"3017606\" agenttypeid=\"6\" corporationid=\"1000069\" divisionid=\"22\" level=\"1\" locationid=\"60006868\" locator=\"false\"/>\r\n    <row agent=\"Larabier Jargregare\" agentid=\"3017607\" agenttypeid=\"6\" corporationid=\"1000119\" divisionid=\"22\" level=\"1\" locationid=\"60011674\" locator=\"false\"/>\r\n    <row agent=\"Askulf Togletted\" agentid=\"3017608\" agenttypeid=\"6\" corporationid=\"1000126\" divisionid=\"24\" level=\"1\" locationid=\"60012532\" locator=\"false\"/>\r\n    <row agent=\"Ilahed Gimehi\" agentid=\"3017609\" agenttypeid=\"6\" corporationid=\"1000156\" divisionid=\"24\" level=\"1\" locationid=\"60013948\" locator=\"false\"/>\r\n    <row agent=\"Ryaerd Azonchant\" agentid=\"3017610\" agenttypeid=\"6\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012418\" locator=\"false\"/>\r\n    <row agent=\"Berlenaert Uphevier\" agentid=\"3017611\" agenttypeid=\"6\" corporationid=\"1000101\" divisionid=\"23\" level=\"1\" locationid=\"60010234\" locator=\"false\"/>\r\n    <row agent=\"Mallar Userene\" agentid=\"3017612\" agenttypeid=\"6\" corporationid=\"1000163\" divisionid=\"22\" level=\"1\" locationid=\"60014386\" locator=\"false\"/>\r\n    <row agent=\"Horkkisen Katala\" agentid=\"3017613\" agenttypeid=\"6\" corporationid=\"1000030\" divisionid=\"24\" level=\"1\" locationid=\"60003319\" locator=\"false\"/>\r\n    <row agent=\"Amaura Therestrens\" agentid=\"3017614\" agenttypeid=\"6\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012355\" locator=\"false\"/>\r\n    <row agent=\"Krigasand Eran\" agentid=\"3017615\" agenttypeid=\"6\" corporationid=\"1000123\" divisionid=\"24\" level=\"1\" locationid=\"60012133\" locator=\"false\"/>\r\n    <row agent=\"Gavarian Noutamam\" agentid=\"3017616\" agenttypeid=\"6\" corporationid=\"1000069\" divisionid=\"23\" level=\"1\" locationid=\"60006901\" locator=\"false\"/>\r\n    <row agent=\"Eler Beennore\" agentid=\"3017617\" agenttypeid=\"6\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60009958\" locator=\"false\"/>\r\n    <row agent=\"Kaaslakaitoh Mieltinen\" agentid=\"3017618\" agenttypeid=\"6\" corporationid=\"1000125\" divisionid=\"24\" level=\"1\" locationid=\"60012403\" locator=\"false\"/>\r\n    <row agent=\"Orares Allolonne\" agentid=\"3017619\" agenttypeid=\"6\" corporationid=\"1000130\" divisionid=\"24\" level=\"1\" locationid=\"60012721\" locator=\"false\"/>\r\n    <row agent=\"Wilarette Allarard\" agentid=\"3017620\" agenttypeid=\"6\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012709\" locator=\"false\"/>\r\n    <row agent=\"Alusane Gheileruerles\" agentid=\"3017621\" agenttypeid=\"6\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012685\" locator=\"false\"/>\r\n    <row agent=\"Touriac Esmeusnon\" agentid=\"3017622\" agenttypeid=\"6\" corporationid=\"1000108\" divisionid=\"23\" level=\"1\" locationid=\"60010816\" locator=\"false\"/>\r\n    <row agent=\"Eitorkur Ebersulf\" agentid=\"3017623\" agenttypeid=\"6\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60012976\" locator=\"false\"/>\r\n    <row agent=\"Ido Bjaltrir\" agentid=\"3017624\" agenttypeid=\"6\" corporationid=\"1000163\" divisionid=\"24\" level=\"1\" locationid=\"60014410\" locator=\"false\"/>\r\n    <row agent=\"Ridwadad Gurnidad\" agentid=\"3017625\" agenttypeid=\"6\" corporationid=\"1000160\" divisionid=\"22\" level=\"1\" locationid=\"60014089\" locator=\"false\"/>\r\n    <row agent=\"Seka Chatyif\" agentid=\"3017626\" agenttypeid=\"6\" corporationid=\"1000065\" divisionid=\"23\" level=\"1\" locationid=\"60006418\" locator=\"false\"/>\r\n    <row agent=\"Okara Wakomon\" agentid=\"3017627\" agenttypeid=\"6\" corporationid=\"1000030\" divisionid=\"24\" level=\"1\" locationid=\"60003262\" locator=\"false\"/>\r\n    <row agent=\"Ashkah Merikhbab\" agentid=\"3017628\" agenttypeid=\"6\" corporationid=\"1000152\" divisionid=\"24\" level=\"1\" locationid=\"60013855\" locator=\"false\"/>\r\n    <row agent=\"Ouse Ponne\" agentid=\"3017629\" agenttypeid=\"6\" corporationid=\"1000111\" divisionid=\"24\" level=\"1\" locationid=\"60011146\" locator=\"false\"/>\r\n    <row agent=\"Haredolf Ilbad\" agentid=\"3017630\" agenttypeid=\"6\" corporationid=\"1000160\" divisionid=\"22\" level=\"1\" locationid=\"60014077\" locator=\"false\"/>\r\n    <row agent=\"Haskur Lurmur\" agentid=\"3017631\" agenttypeid=\"6\" corporationid=\"1000160\" divisionid=\"23\" level=\"1\" locationid=\"60014128\" locator=\"false\"/>\r\n    <row agent=\"Sitotama Hontenen\" agentid=\"3017632\" agenttypeid=\"6\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60013033\" locator=\"false\"/>\r\n    <row agent=\"Veldestode Krirnot\" agentid=\"3017633\" agenttypeid=\"6\" corporationid=\"1000123\" divisionid=\"24\" level=\"1\" locationid=\"60012160\" locator=\"false\"/>\r\n    <row agent=\"Wourt Amine\" agentid=\"3017634\" agenttypeid=\"6\" corporationid=\"1000168\" divisionid=\"22\" level=\"1\" locationid=\"60014707\" locator=\"false\"/>\r\n    <row agent=\"Ivemier Restek\" agentid=\"3017635\" agenttypeid=\"6\" corporationid=\"1000075\" divisionid=\"22\" level=\"1\" locationid=\"60007570\" locator=\"false\"/>\r\n    <row agent=\"Tsukalen Kogas\" agentid=\"3017636\" agenttypeid=\"6\" corporationid=\"1000019\" divisionid=\"23\" level=\"1\" locationid=\"60002224\" locator=\"false\"/>\r\n    <row agent=\"Adezo Odmorsand\" agentid=\"3017637\" agenttypeid=\"6\" corporationid=\"1000170\" divisionid=\"22\" level=\"1\" locationid=\"60014764\" locator=\"false\"/>\r\n    <row agent=\"Ausur Narmanhold\" agentid=\"3017638\" agenttypeid=\"6\" corporationid=\"1000163\" divisionid=\"24\" level=\"1\" locationid=\"60014392\" locator=\"false\"/>\r\n    <row agent=\"Ifve Aise\" agentid=\"3017639\" agenttypeid=\"6\" corporationid=\"1000105\" divisionid=\"22\" level=\"1\" locationid=\"60010555\" locator=\"false\"/>\r\n    <row agent=\"Nolendrarlin Vairaine\" agentid=\"3017640\" agenttypeid=\"6\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012664\" locator=\"false\"/>\r\n    <row agent=\"Toredron Hjadder\" agentid=\"3017641\" agenttypeid=\"6\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005149\" locator=\"false\"/>\r\n    <row agent=\"Egghomousel Coucard\" agentid=\"3017642\" agenttypeid=\"6\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011179\" locator=\"false\"/>\r\n    <row agent=\"Atras Ayanamo\" agentid=\"3017643\" agenttypeid=\"6\" corporationid=\"1000127\" divisionid=\"24\" level=\"1\" locationid=\"60012577\" locator=\"false\"/>\r\n    <row agent=\"Saguda Svallin\" agentid=\"3017644\" agenttypeid=\"6\" corporationid=\"1000126\" divisionid=\"24\" level=\"1\" locationid=\"60012553\" locator=\"false\"/>\r\n    <row agent=\"Frebebert Arngrikon\" agentid=\"3017645\" agenttypeid=\"6\" corporationid=\"1000163\" divisionid=\"22\" level=\"1\" locationid=\"60014449\" locator=\"false\"/>\r\n    <row agent=\"Allifrate Alavitte\" agentid=\"3017646\" agenttypeid=\"6\" corporationid=\"1000147\" divisionid=\"22\" level=\"1\" locationid=\"60013507\" locator=\"false\"/>\r\n    <row agent=\"Ingizo Fraer\" agentid=\"3017647\" agenttypeid=\"6\" corporationid=\"1000050\" divisionid=\"24\" level=\"1\" locationid=\"60004669\" locator=\"false\"/>\r\n    <row agent=\"Rondredwik Oferkar\" agentid=\"3017648\" agenttypeid=\"6\" corporationid=\"1000171\" divisionid=\"22\" level=\"1\" locationid=\"60014806\" locator=\"false\"/>\r\n    <row agent=\"Kisovas Aarattoh\" agentid=\"3017649\" agenttypeid=\"6\" corporationid=\"1000161\" divisionid=\"23\" level=\"1\" locationid=\"60014191\" locator=\"false\"/>\r\n    <row agent=\"Aungie Evolorer\" agentid=\"3017650\" agenttypeid=\"6\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009301\" locator=\"false\"/>\r\n    <row agent=\"Sirstuin Bedrigtur\" agentid=\"3017651\" agenttypeid=\"6\" corporationid=\"1000126\" divisionid=\"22\" level=\"1\" locationid=\"60012541\" locator=\"false\"/>\r\n    <row agent=\"Areye Apouttemes\" agentid=\"3017652\" agenttypeid=\"6\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011446\" locator=\"false\"/>\r\n    <row agent=\"Hakerienne Chabeque\" agentid=\"3017653\" agenttypeid=\"6\" corporationid=\"1000113\" divisionid=\"22\" level=\"1\" locationid=\"60011437\" locator=\"false\"/>\r\n    <row agent=\"Reyfritenne Albuse\" agentid=\"3017654\" agenttypeid=\"6\" corporationid=\"1000169\" divisionid=\"22\" level=\"1\" locationid=\"60014743\" locator=\"false\"/>\r\n    <row agent=\"Aurlaerdt Andreralle\" agentid=\"3017655\" agenttypeid=\"6\" corporationid=\"1000100\" divisionid=\"24\" level=\"1\" locationid=\"60010039\" locator=\"false\"/>\r\n    <row agent=\"Baila Chevi\" agentid=\"3017656\" agenttypeid=\"6\" corporationid=\"1000071\" divisionid=\"22\" level=\"1\" locationid=\"60007000\" locator=\"false\"/>\r\n    <row agent=\"Berentes Echolade\" agentid=\"3017657\" agenttypeid=\"6\" corporationid=\"1000104\" divisionid=\"24\" level=\"1\" locationid=\"60010474\" locator=\"false\"/>\r\n    <row agent=\"Alusemer Avennere\" agentid=\"3017658\" agenttypeid=\"6\" corporationid=\"1000104\" divisionid=\"22\" level=\"1\" locationid=\"60010423\" locator=\"false\"/>\r\n    <row agent=\"Rerakin Velsalran\" agentid=\"3017659\" agenttypeid=\"6\" corporationid=\"1000123\" divisionid=\"24\" level=\"1\" locationid=\"60012181\" locator=\"false\"/>\r\n    <row agent=\"Atlangeins Seyngoropus\" agentid=\"3017660\" agenttypeid=\"6\" corporationid=\"1000108\" divisionid=\"23\" level=\"1\" locationid=\"60010825\" locator=\"false\"/>\r\n    <row agent=\"Thorgore Benckere\" agentid=\"3017661\" agenttypeid=\"6\" corporationid=\"1000104\" divisionid=\"22\" level=\"1\" locationid=\"60010402\" locator=\"false\"/>\r\n    <row agent=\"Ladlanal Safol\" agentid=\"3017662\" agenttypeid=\"6\" corporationid=\"1000156\" divisionid=\"24\" level=\"1\" locationid=\"60013987\" locator=\"false\"/>\r\n    <row agent=\"Hapt Taleged\" agentid=\"3017663\" agenttypeid=\"6\" corporationid=\"1000156\" divisionid=\"24\" level=\"1\" locationid=\"60013975\" locator=\"false\"/>\r\n    <row agent=\"Emmeler Evacone\" agentid=\"3017664\" agenttypeid=\"6\" corporationid=\"1000129\" divisionid=\"23\" level=\"1\" locationid=\"60012592\" locator=\"false\"/>\r\n    <row agent=\"Orlerant Maryliettes\" agentid=\"3017665\" agenttypeid=\"6\" corporationid=\"1000105\" divisionid=\"24\" level=\"1\" locationid=\"60010504\" locator=\"false\"/>\r\n    <row agent=\"Acainoure Archapus\" agentid=\"3017666\" agenttypeid=\"6\" corporationid=\"1000135\" divisionid=\"24\" level=\"1\" locationid=\"60012799\" locator=\"false\"/>\r\n    <row agent=\"Aistroux Ganerot\" agentid=\"3017667\" agenttypeid=\"6\" corporationid=\"1000101\" divisionid=\"23\" level=\"1\" locationid=\"60010177\" locator=\"false\"/>\r\n    <row agent=\"Hurulla Arkus\" agentid=\"3017668\" agenttypeid=\"6\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005215\" locator=\"false\"/>\r\n    <row agent=\"Sidafard Ergsver\" agentid=\"3017669\" agenttypeid=\"6\" corporationid=\"1000160\" divisionid=\"23\" level=\"1\" locationid=\"60014146\" locator=\"false\"/>\r\n    <row agent=\"Musinner Hotalda\" agentid=\"3017670\" agenttypeid=\"6\" corporationid=\"1000126\" divisionid=\"24\" level=\"1\" locationid=\"60012547\" locator=\"false\"/>\r\n    <row agent=\"Arewachi Oluo\" agentid=\"3017671\" agenttypeid=\"6\" corporationid=\"1000127\" divisionid=\"24\" level=\"1\" locationid=\"60012571\" locator=\"false\"/>\r\n    <row agent=\"Tatoh Tuokuken\" agentid=\"3017672\" agenttypeid=\"6\" corporationid=\"1000030\" divisionid=\"22\" level=\"1\" locationid=\"60003292\" locator=\"false\"/>\r\n    <row agent=\"Oilenen Yozira\" agentid=\"3017673\" agenttypeid=\"6\" corporationid=\"1000162\" divisionid=\"24\" level=\"1\" locationid=\"60014338\" locator=\"false\"/>\r\n    <row agent=\"Alpedurch Soulobert\" agentid=\"3017674\" agenttypeid=\"6\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012616\" locator=\"false\"/>\r\n    <row agent=\"Nabi Kakrema\" agentid=\"3017675\" agenttypeid=\"6\" corporationid=\"1000090\" divisionid=\"22\" level=\"1\" locationid=\"60008740\" locator=\"false\"/>\r\n    <row agent=\"Korkahienen Mentatsaikka\" agentid=\"3017676\" agenttypeid=\"6\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60012931\" locator=\"false\"/>\r\n    <row agent=\"Arnmetosi Tinowine\" agentid=\"3017677\" agenttypeid=\"6\" corporationid=\"1000163\" divisionid=\"22\" level=\"1\" locationid=\"60014404\" locator=\"false\"/>\r\n    <row agent=\"Jodagert Adezo\" agentid=\"3017678\" agenttypeid=\"6\" corporationid=\"1000046\" divisionid=\"24\" level=\"1\" locationid=\"60004492\" locator=\"false\"/>\r\n    <row agent=\"Annomall Eori\" agentid=\"3017679\" agenttypeid=\"6\" corporationid=\"1000160\" divisionid=\"24\" level=\"1\" locationid=\"60014131\" locator=\"false\"/>\r\n    <row agent=\"Oullen Strovare\" agentid=\"3017680\" agenttypeid=\"6\" corporationid=\"1000137\" divisionid=\"24\" level=\"1\" locationid=\"60012979\" locator=\"false\"/>\r\n    <row agent=\"Nelt Elivia\" agentid=\"3017681\" agenttypeid=\"6\" corporationid=\"1000160\" divisionid=\"23\" level=\"1\" locationid=\"60014074\" locator=\"false\"/>\r\n    <row agent=\"Overt Trine\" agentid=\"3017682\" agenttypeid=\"6\" corporationid=\"1000130\" divisionid=\"22\" level=\"1\" locationid=\"60012712\" locator=\"false\"/>\r\n    <row agent=\"Matralada Atlaldbenkur\" agentid=\"3017683\" agenttypeid=\"6\" corporationid=\"1000049\" divisionid=\"24\" level=\"1\" locationid=\"60004615\" locator=\"false\"/>\r\n    <row agent=\"Aide Javandrercer\" agentid=\"3017684\" agenttypeid=\"6\" corporationid=\"1000108\" divisionid=\"22\" level=\"1\" locationid=\"60010756\" locator=\"false\"/>\r\n    <row agent=\"Abenckbraert Ormand\" agentid=\"3017685\" agenttypeid=\"6\" corporationid=\"1000105\" divisionid=\"22\" level=\"1\" locationid=\"60010495\" locator=\"false\"/>\r\n    <row agent=\"Hornara Hefaed\" agentid=\"3017686\" agenttypeid=\"6\" corporationid=\"1000160\" divisionid=\"23\" level=\"1\" locationid=\"60014116\" locator=\"false\"/>\r\n    <row agent=\"Azi Muj\" agentid=\"3017687\" agenttypeid=\"6\" corporationid=\"1000065\" divisionid=\"23\" level=\"1\" locationid=\"60006535\" locator=\"false\"/>\r\n    <row agent=\"Dettesaire Boureye\" agentid=\"3017688\" agenttypeid=\"6\" corporationid=\"1000161\" divisionid=\"22\" level=\"1\" locationid=\"60014218\" locator=\"false\"/>\r\n    <row agent=\"Vlue Hoyessot\" agentid=\"3017689\" agenttypeid=\"6\" corporationid=\"1000101\" divisionid=\"23\" level=\"1\" locationid=\"60010141\" locator=\"false\"/>\r\n    <row agent=\"Ridmuanar Uridden\" agentid=\"3017690\" agenttypeid=\"6\" corporationid=\"1000163\" divisionid=\"24\" level=\"1\" locationid=\"60014383\" locator=\"false\"/>\r\n    <row agent=\"Dursirinier Sucilevre\" agentid=\"3017691\" agenttypeid=\"6\" corporationid=\"1000146\" divisionid=\"24\" level=\"1\" locationid=\"60013432\" locator=\"false\"/>\r\n    <row agent=\"Trois Dedemon\" agentid=\"3017692\" agenttypeid=\"6\" corporationid=\"1000108\" divisionid=\"24\" level=\"1\" locationid=\"60010810\" locator=\"false\"/>\r\n    <row agent=\"Schereau Aurot\" agentid=\"3017693\" agenttypeid=\"6\" corporationid=\"1000107\" divisionid=\"22\" level=\"1\" locationid=\"60010708\" locator=\"false\"/>\r\n    <row agent=\"Sate Riri\" agentid=\"3017694\" agenttypeid=\"6\" corporationid=\"1000152\" divisionid=\"22\" level=\"1\" locationid=\"60013837\" locator=\"false\"/>\r\n    <row agent=\"Takken Ezara\" agentid=\"3017695\" agenttypeid=\"6\" corporationid=\"1000030\" divisionid=\"22\" level=\"1\" locationid=\"60003331\" locator=\"false\"/>\r\n    <row agent=\"Tihred Bamiar\" agentid=\"3017696\" agenttypeid=\"6\" corporationid=\"1000069\" divisionid=\"23\" level=\"1\" locationid=\"60006826\" locator=\"false\"/>\r\n    <row agent=\"Malohe Anse\" agentid=\"3017697\" agenttypeid=\"6\" corporationid=\"1000165\" divisionid=\"22\" level=\"1\" locationid=\"60014605\" locator=\"false\"/>\r\n    <row agent=\"Rira Reppi\" agentid=\"3017698\" agenttypeid=\"6\" corporationid=\"1000166\" divisionid=\"22\" level=\"1\" locationid=\"60014635\" locator=\"false\"/>\r\n    <row agent=\"Jara Kumora\" agentid=\"3017699\" agenttypeid=\"2\" corporationid=\"1000128\" divisionid=\"24\" level=\"3\" locationid=\"60012580\" locator=\"false\"/>\r\n    <row agent=\"Turek Mayon\" agentid=\"3017700\" agenttypeid=\"2\" corporationid=\"1000128\" divisionid=\"24\" level=\"4\" locationid=\"60012580\" locator=\"false\"/>\r\n    <row agent=\"Desmin Kuto\" agentid=\"3017701\" agenttypeid=\"2\" corporationid=\"1000132\" divisionid=\"24\" level=\"3\" locationid=\"60012739\" locator=\"false\"/>\r\n    <row agent=\"Kaleph Nomi\" agentid=\"3017702\" agenttypeid=\"2\" corporationid=\"1000132\" divisionid=\"24\" level=\"4\" locationid=\"60012736\" locator=\"false\"/>\r\n    <row agent=\"Uinaya Tokaryi\" agentid=\"3017703\" agenttypeid=\"2\" corporationid=\"1000141\" divisionid=\"22\" level=\"4\" locationid=\"60013261\" locator=\"false\"/>\r\n    <row agent=\"Palephia Nurreuka\" agentid=\"3017704\" agenttypeid=\"2\" corporationid=\"1000151\" divisionid=\"24\" level=\"4\" locationid=\"60013825\" locator=\"false\"/>\r\n    <row agent=\"Gara Minsk\" agentid=\"3017705\" agenttypeid=\"2\" corporationid=\"1000157\" divisionid=\"24\" level=\"4\" locationid=\"60013993\" locator=\"false\"/>\r\n    <row agent=\"Lara Mesi\" agentid=\"3017706\" agenttypeid=\"2\" corporationid=\"1000159\" divisionid=\"24\" level=\"4\" locationid=\"60014056\" locator=\"false\"/>\r\n    <row agent=\"Hetora Miritan\" agentid=\"3017709\" agenttypeid=\"2\" corporationid=\"1000021\" divisionid=\"24\" level=\"4\" locationid=\"60002365\" locator=\"false\"/>\r\n    <row agent=\"Hegomir Torstan\" agentid=\"3017710\" agenttypeid=\"2\" corporationid=\"1000058\" divisionid=\"22\" level=\"4\" locationid=\"60005719\" locator=\"false\"/>\r\n    <row agent=\"Soutte Eglerin\" agentid=\"3017711\" agenttypeid=\"8\" corporationid=\"1000116\" divisionid=\"22\" level=\"1\" locationid=\"60011596\" locator=\"false\"/>\r\n    <row agent=\"Moelitte Aurtha\" agentid=\"3017712\" agenttypeid=\"8\" corporationid=\"1000101\" divisionid=\"22\" level=\"1\" locationid=\"60010156\" locator=\"false\"/>\r\n    <row agent=\"Ces Eusnard\" agentid=\"3017713\" agenttypeid=\"8\" corporationid=\"1000108\" divisionid=\"24\" level=\"1\" locationid=\"60010783\" locator=\"false\"/>\r\n    <row agent=\"Rorede Saston\" agentid=\"3017714\" agenttypeid=\"8\" corporationid=\"1000114\" divisionid=\"24\" level=\"1\" locationid=\"60011533\" locator=\"false\"/>\r\n    <row agent=\"Beau Weeles\" agentid=\"3017715\" agenttypeid=\"8\" corporationid=\"1000114\" divisionid=\"24\" level=\"1\" locationid=\"60011521\" locator=\"false\"/>\r\n    <row agent=\"Baustiste Perckhevin\" agentid=\"3017716\" agenttypeid=\"8\" corporationid=\"1000109\" divisionid=\"24\" level=\"1\" locationid=\"60010873\" locator=\"false\"/>\r\n    <row agent=\"Louel Teste\" agentid=\"3017717\" agenttypeid=\"8\" corporationid=\"1000105\" divisionid=\"22\" level=\"1\" locationid=\"60010516\" locator=\"false\"/>\r\n    <row agent=\"Gastomitte Gien\" agentid=\"3017718\" agenttypeid=\"8\" corporationid=\"1000114\" divisionid=\"24\" level=\"1\" locationid=\"60011515\" locator=\"false\"/>\r\n    <row agent=\"Elarie Dette\" agentid=\"3017719\" agenttypeid=\"8\" corporationid=\"1000098\" divisionid=\"24\" level=\"1\" locationid=\"60009667\" locator=\"false\"/>\r\n    <row agent=\"Antaldet Arnarienan\" agentid=\"3017720\" agenttypeid=\"8\" corporationid=\"1000114\" divisionid=\"24\" level=\"1\" locationid=\"60011527\" locator=\"false\"/>\r\n    <row agent=\"Asent Boust\" agentid=\"3017721\" agenttypeid=\"8\" corporationid=\"1000109\" divisionid=\"22\" level=\"1\" locationid=\"60010903\" locator=\"false\"/>\r\n    <row agent=\"Halmante Thoure\" agentid=\"3017722\" agenttypeid=\"8\" corporationid=\"1000114\" divisionid=\"24\" level=\"1\" locationid=\"60011536\" locator=\"false\"/>\r\n    <row agent=\"Haldeel Crain\" agentid=\"3017723\" agenttypeid=\"8\" corporationid=\"1000105\" divisionid=\"22\" level=\"1\" locationid=\"60010486\" locator=\"false\"/>\r\n    <row agent=\"Clandre Ormitte\" agentid=\"3017724\" agenttypeid=\"8\" corporationid=\"1000114\" divisionid=\"24\" level=\"1\" locationid=\"60011509\" locator=\"false\"/>\r\n    <row agent=\"Allene Phisene\" agentid=\"3017725\" agenttypeid=\"8\" corporationid=\"1000101\" divisionid=\"23\" level=\"1\" locationid=\"60010126\" locator=\"false\"/>\r\n    <row agent=\"Alirener Matelle\" agentid=\"3017726\" agenttypeid=\"8\" corporationid=\"1000105\" divisionid=\"22\" level=\"1\" locationid=\"60010513\" locator=\"false\"/>\r\n    <row agent=\"Edmoure Edye\" agentid=\"3017727\" agenttypeid=\"8\" corporationid=\"1000114\" divisionid=\"24\" level=\"1\" locationid=\"60011542\" locator=\"false\"/>\r\n    <row agent=\"Niere Spriman\" agentid=\"3017728\" agenttypeid=\"8\" corporationid=\"1000109\" divisionid=\"22\" level=\"1\" locationid=\"60010924\" locator=\"false\"/>\r\n    <row agent=\"Daen Alalett\" agentid=\"3017729\" agenttypeid=\"8\" corporationid=\"1000117\" divisionid=\"22\" level=\"1\" locationid=\"60011602\" locator=\"false\"/>\r\n    <row agent=\"Boullin Aurkorn\" agentid=\"3017730\" agenttypeid=\"8\" corporationid=\"1000104\" divisionid=\"24\" level=\"1\" locationid=\"60010447\" locator=\"false\"/>\r\n    <row agent=\"Aurkorn Pinssier\" agentid=\"3017731\" agenttypeid=\"8\" corporationid=\"1000121\" divisionid=\"24\" level=\"1\" locationid=\"60011965\" locator=\"false\"/>\r\n    <row agent=\"Weraroix Ellirune\" agentid=\"3017732\" agenttypeid=\"8\" corporationid=\"1000104\" divisionid=\"24\" level=\"1\" locationid=\"60010399\" locator=\"false\"/>\r\n    <row agent=\"Beaudoin Courel\" agentid=\"3017733\" agenttypeid=\"8\" corporationid=\"1000102\" divisionid=\"22\" level=\"1\" locationid=\"60010369\" locator=\"false\"/>\r\n    <row agent=\"Orsetton Brere\" agentid=\"3017734\" agenttypeid=\"8\" corporationid=\"1000099\" divisionid=\"24\" level=\"1\" locationid=\"60009790\" locator=\"false\"/>\r\n    <row agent=\"Albre Unck\" agentid=\"3017735\" agenttypeid=\"8\" corporationid=\"1000104\" divisionid=\"24\" level=\"1\" locationid=\"60010480\" locator=\"false\"/>\r\n    <row agent=\"Eglicia Orvaneva\" agentid=\"3017736\" agenttypeid=\"8\" corporationid=\"1000121\" divisionid=\"24\" level=\"1\" locationid=\"60011950\" locator=\"false\"/>\r\n    <row agent=\"Ermelen Albre\" agentid=\"3017737\" agenttypeid=\"8\" corporationid=\"1000102\" divisionid=\"22\" level=\"1\" locationid=\"60010354\" locator=\"false\"/>\r\n    <row agent=\"Beborres Funck\" agentid=\"3017738\" agenttypeid=\"8\" corporationid=\"1000104\" divisionid=\"24\" level=\"1\" locationid=\"60010471\" locator=\"false\"/>\r\n    <row agent=\"Ancere Jonerel\" agentid=\"3017739\" agenttypeid=\"8\" corporationid=\"1000102\" divisionid=\"22\" level=\"1\" locationid=\"60010327\" locator=\"false\"/>\r\n    <row agent=\"Ancellatian Actee\" agentid=\"3017740\" agenttypeid=\"8\" corporationid=\"1000097\" divisionid=\"24\" level=\"1\" locationid=\"60009469\" locator=\"false\"/>\r\n    <row agent=\"Orel Eulte\" agentid=\"3017741\" agenttypeid=\"8\" corporationid=\"1000121\" divisionid=\"24\" level=\"1\" locationid=\"60011998\" locator=\"false\"/>\r\n    <row agent=\"Orepel Douns\" agentid=\"3017742\" agenttypeid=\"8\" corporationid=\"1000106\" divisionid=\"22\" level=\"1\" locationid=\"60010591\" locator=\"false\"/>\r\n    <row agent=\"Gillard Vittenyn\" agentid=\"3017743\" agenttypeid=\"8\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60011107\" locator=\"false\"/>\r\n    <row agent=\"Artoveche Blain\" agentid=\"3017744\" agenttypeid=\"8\" corporationid=\"1000104\" divisionid=\"24\" level=\"1\" locationid=\"60010453\" locator=\"false\"/>\r\n    <row agent=\"Astier Turcoy\" agentid=\"3017745\" agenttypeid=\"8\" corporationid=\"1000121\" divisionid=\"24\" level=\"1\" locationid=\"60011926\" locator=\"false\"/>\r\n    <row agent=\"Mobber Angycel\" agentid=\"3017746\" agenttypeid=\"8\" corporationid=\"1000102\" divisionid=\"22\" level=\"1\" locationid=\"60010381\" locator=\"false\"/>\r\n    <row agent=\"Dellasisier Chave\" agentid=\"3017747\" agenttypeid=\"8\" corporationid=\"1000122\" divisionid=\"24\" level=\"1\" locationid=\"60012004\" locator=\"false\"/>\r\n    <row agent=\"Chalien Urres\" agentid=\"3017748\" agenttypeid=\"8\" corporationid=\"1000112\" divisionid=\"22\" level=\"1\" locationid=\"60011362\" locator=\"false\"/>\r\n    <row agent=\"Espetorre Girane\" agentid=\"3017749\" agenttypeid=\"8\" corporationid=\"1000118\" divisionid=\"24\" level=\"1\" locationid=\"60011611\" locator=\"false\"/>\r\n    <row agent=\"Dalmon Teyrs\" agentid=\"3017750\" agenttypeid=\"8\" corporationid=\"1000122\" divisionid=\"24\" level=\"1\" locationid=\"60012103\" locator=\"false\"/>\r\n    <row agent=\"Elles Agatier\" agentid=\"3017751\" agenttypeid=\"8\" corporationid=\"1000095\" divisionid=\"24\" level=\"1\" locationid=\"60009409\" locator=\"false\"/>\r\n    <row agent=\"Pery Mompont\" agentid=\"3017752\" agenttypeid=\"8\" corporationid=\"1000111\" divisionid=\"22\" level=\"1\" locationid=\"60011206\" locator=\"false\"/>\r\n    <row agent=\"Veyn Vares\" agentid=\"3017753\" agenttypeid=\"8\" corporationid=\"1000122\" divisionid=\"24\" level=\"1\" locationid=\"60012085\" locator=\"false\"/>\r\n    <row agent=\"Kercke Alelolle\" agentid=\"3017754\" agenttypeid=\"8\" corporationid=\"1000112\" divisionid=\"22\" level=\"1\" locationid=\"60011332\" locator=\"false\"/>\r\n    <row agent=\"Maudmier Ibert\" agentid=\"3017755\" agenttypeid=\"8\" corporationid=\"1000095\" divisionid=\"22\" level=\"1\" locationid=\"60009325\" locator=\"false\"/>\r\n    <row agent=\"Alelolle Tesandon\" agentid=\"3017756\" agenttypeid=\"8\" corporationid=\"1000122\" divisionid=\"24\" level=\"1\" locationid=\"60012022\" locator=\"false\"/>\r\n    <row agent=\"Teyrs Naspegier\" agentid=\"3017757\" agenttypeid=\"8\" corporationid=\"1000112\" divisionid=\"22\" level=\"1\" locationid=\"60011326\" locator=\"false\"/>\r\n    <row agent=\"Crelene Arnorin\" agentid=\"3017758\" agenttypeid=\"8\" corporationid=\"1000094\" divisionid=\"24\" level=\"1\" locationid=\"60009061\" locator=\"false\"/>\r\n    <row agent=\"Jac Abbre\" agentid=\"3017759\" agenttypeid=\"8\" corporationid=\"1000122\" divisionid=\"24\" level=\"1\" locationid=\"60012055\" locator=\"false\"/>\r\n    <row agent=\"Ibert Vors\" agentid=\"3017760\" agenttypeid=\"8\" corporationid=\"1000112\" divisionid=\"22\" level=\"1\" locationid=\"60011320\" locator=\"false\"/>\r\n    <row agent=\"Beritte Broin\" agentid=\"3017761\" agenttypeid=\"8\" corporationid=\"1000095\" divisionid=\"24\" level=\"1\" locationid=\"60009313\" locator=\"false\"/>\r\n    <row agent=\"Doos Mavise\" agentid=\"3017762\" agenttypeid=\"8\" corporationid=\"1000122\" divisionid=\"24\" level=\"1\" locationid=\"60012115\" locator=\"false\"/>\r\n    <row agent=\"Lamor Wyslolet\" agentid=\"3017763\" agenttypeid=\"8\" corporationid=\"1000094\" divisionid=\"22\" level=\"1\" locationid=\"60009046\" locator=\"false\"/>\r\n    <row agent=\"Vocole Craenc\" agentid=\"3017764\" agenttypeid=\"8\" corporationid=\"1000095\" divisionid=\"24\" level=\"1\" locationid=\"60009364\" locator=\"false\"/>\r\n    <row agent=\"Armoussyere Chorlarel\" agentid=\"3017765\" agenttypeid=\"6\" corporationid=\"1000160\" divisionid=\"22\" level=\"1\" locationid=\"60014077\" locator=\"false\"/>\r\n    <row agent=\"Arancier Ailart\" agentid=\"3017766\" agenttypeid=\"6\" corporationid=\"1000106\" divisionid=\"22\" level=\"1\" locationid=\"60010594\" locator=\"false\"/>\r\n    <row agent=\"Arornur Ewoksdokfa\" agentid=\"3017767\" agenttypeid=\"6\" corporationid=\"1000033\" divisionid=\"24\" level=\"1\" locationid=\"60003595\" locator=\"false\"/>\r\n    <row agent=\"Eistomon Karas\" agentid=\"3017768\" agenttypeid=\"6\" corporationid=\"1000010\" divisionid=\"22\" level=\"1\" locationid=\"60001063\" locator=\"false\"/>\r\n    <row agent=\"Archallan Ophanawer\" agentid=\"3017769\" agenttypeid=\"6\" corporationid=\"1000032\" divisionid=\"24\" level=\"1\" locationid=\"60003451\" locator=\"false\"/>\r\n    <row agent=\"Ary Welfken\" agentid=\"3017770\" agenttypeid=\"6\" corporationid=\"1000086\" divisionid=\"22\" level=\"1\" locationid=\"60008530\" locator=\"false\"/>\r\n    <row agent=\"Elonaya Irki\" agentid=\"3017771\" agenttypeid=\"6\" corporationid=\"1000109\" divisionid=\"24\" level=\"1\" locationid=\"60010897\" locator=\"false\"/>\r\n    <row agent=\"Arbell Amanckbrault\" agentid=\"3017772\" agenttypeid=\"6\" corporationid=\"1000150\" divisionid=\"24\" level=\"1\" locationid=\"60013819\" locator=\"false\"/>\r\n    <row agent=\"Arturselfor Hedanar\" agentid=\"3017773\" agenttypeid=\"6\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002536\" locator=\"false\"/>\r\n    <row agent=\"Elanila Pyyrilen\" agentid=\"3017774\" agenttypeid=\"6\" corporationid=\"1000126\" divisionid=\"24\" level=\"1\" locationid=\"60012532\" locator=\"false\"/>\r\n    <row agent=\"Hannonas Rashanuoto\" agentid=\"3017775\" agenttypeid=\"6\" corporationid=\"1000023\" divisionid=\"22\" level=\"1\" locationid=\"60002644\" locator=\"false\"/>\r\n    <row agent=\"Bangen Henjer\" agentid=\"3017776\" agenttypeid=\"6\" corporationid=\"1000062\" divisionid=\"22\" level=\"1\" locationid=\"60006085\" locator=\"false\"/>\r\n    <row agent=\"Astres Agyla\" agentid=\"3017777\" agenttypeid=\"6\" corporationid=\"1000125\" divisionid=\"22\" level=\"1\" locationid=\"60012313\" locator=\"false\"/>\r\n    <row agent=\"Paen Karolene\" agentid=\"3017778\" agenttypeid=\"6\" corporationid=\"1000105\" divisionid=\"22\" level=\"1\" locationid=\"60010558\" locator=\"false\"/>\r\n    <row agent=\"Harskaken Askiras\" agentid=\"3017779\" agenttypeid=\"6\" corporationid=\"1000150\" divisionid=\"24\" level=\"1\" locationid=\"60013753\" locator=\"false\"/>\r\n    <row agent=\"Harpas Mitagaki\" agentid=\"3017780\" agenttypeid=\"6\" corporationid=\"1000142\" divisionid=\"22\" level=\"1\" locationid=\"60013270\" locator=\"false\"/>\r\n    <row agent=\"Bauloveka Annolgel\" agentid=\"3017781\" agenttypeid=\"6\" corporationid=\"1000018\" divisionid=\"22\" level=\"1\" locationid=\"60002059\" locator=\"false\"/>\r\n    <row agent=\"Haraila Taltadan\" agentid=\"3017782\" agenttypeid=\"6\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60011080\" locator=\"false\"/>\r\n    <row agent=\"Atlairbot Auspaert\" agentid=\"3017783\" agenttypeid=\"6\" corporationid=\"1000078\" divisionid=\"22\" level=\"1\" locationid=\"60007735\" locator=\"false\"/>\r\n    <row agent=\"Wirenard Aechtalaert\" agentid=\"3017784\" agenttypeid=\"6\" corporationid=\"1000010\" divisionid=\"22\" level=\"1\" locationid=\"60001153\" locator=\"false\"/>\r\n    <row agent=\"Hasunmaa Onamela\" agentid=\"3017785\" agenttypeid=\"6\" corporationid=\"1000017\" divisionid=\"24\" level=\"1\" locationid=\"60001933\" locator=\"false\"/>\r\n    <row agent=\"Ijeki Wari\" agentid=\"3017786\" agenttypeid=\"6\" corporationid=\"1000031\" divisionid=\"24\" level=\"1\" locationid=\"60003346\" locator=\"false\"/>\r\n    <row agent=\"Atluette Vilvelrard\" agentid=\"3017787\" agenttypeid=\"6\" corporationid=\"1000032\" divisionid=\"24\" level=\"1\" locationid=\"60003415\" locator=\"false\"/>\r\n    <row agent=\"Bensdezur Tiretta\" agentid=\"3017788\" agenttypeid=\"6\" corporationid=\"1000150\" divisionid=\"24\" level=\"1\" locationid=\"60013666\" locator=\"false\"/>\r\n    <row agent=\"Ollolf Boddagdur\" agentid=\"3017789\" agenttypeid=\"6\" corporationid=\"1000108\" divisionid=\"24\" level=\"1\" locationid=\"60010744\" locator=\"false\"/>\r\n    <row agent=\"Heikama Arikaka\" agentid=\"3017790\" agenttypeid=\"6\" corporationid=\"1000022\" divisionid=\"22\" level=\"1\" locationid=\"60002413\" locator=\"false\"/>\r\n    <row agent=\"Hegamon Kinurassi\" agentid=\"3017791\" agenttypeid=\"6\" corporationid=\"1000160\" divisionid=\"24\" level=\"1\" locationid=\"60014131\" locator=\"false\"/>\r\n    <row agent=\"Ero Torimanoi\" agentid=\"3017792\" agenttypeid=\"6\" corporationid=\"1000064\" divisionid=\"24\" level=\"1\" locationid=\"60006355\" locator=\"false\"/>\r\n    <row agent=\"Arorin Chatcholaert\" agentid=\"3017793\" agenttypeid=\"6\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008338\" locator=\"false\"/>\r\n    <row agent=\"Atugur Erkidgar\" agentid=\"3017794\" agenttypeid=\"6\" corporationid=\"1000062\" divisionid=\"22\" level=\"1\" locationid=\"60006097\" locator=\"false\"/>\r\n    <row agent=\"Arodninc Odellaert\" agentid=\"3017795\" agenttypeid=\"6\" corporationid=\"1000150\" divisionid=\"24\" level=\"1\" locationid=\"60013804\" locator=\"false\"/>\r\n    <row agent=\"Funtemi Edoki\" agentid=\"3017796\" agenttypeid=\"6\" corporationid=\"1000160\" divisionid=\"22\" level=\"1\" locationid=\"60014119\" locator=\"false\"/>\r\n    <row agent=\"Funtataras Kaukko\" agentid=\"3017797\" agenttypeid=\"6\" corporationid=\"1000061\" divisionid=\"24\" level=\"1\" locationid=\"60006037\" locator=\"false\"/>\r\n    <row agent=\"Ebidan Muthatah\" agentid=\"3017798\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"4\" locationid=\"60007948\" locator=\"false\"/>\r\n    <row agent=\"Ibal Claini\" agentid=\"3017799\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"4\" locationid=\"60007957\" locator=\"false\"/>\r\n    <row agent=\"Kuherez Nirdin\" agentid=\"3017800\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"4\" locationid=\"60008266\" locator=\"false\"/>\r\n    <row agent=\"Gohid Enaun\" agentid=\"3017801\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"4\" locationid=\"60008263\" locator=\"false\"/>\r\n    <row agent=\"Melmaja Gaku\" agentid=\"3017802\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"4\" locationid=\"60008449\" locator=\"false\"/>\r\n    <row agent=\"Dasim Panoumid\" agentid=\"3017803\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"4\" locationid=\"60008839\" locator=\"false\"/>\r\n    <row agent=\"Saal Uredaz\" agentid=\"3017804\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"4\" locationid=\"60008899\" locator=\"false\"/>\r\n    <row agent=\"Parges Namu\" agentid=\"3017805\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"4\" locationid=\"60008890\" locator=\"false\"/>\r\n    <row agent=\"Nebasobaz Aktakan\" agentid=\"3017806\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"4\" locationid=\"60008896\" locator=\"false\"/>\r\n    <row agent=\"Bangallia Benc\" agentid=\"3017807\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"4\" locationid=\"60009256\" locator=\"false\"/>\r\n    <row agent=\"Aurel Ounel\" agentid=\"3017808\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"4\" locationid=\"60009379\" locator=\"false\"/>\r\n    <row agent=\"Wimpes Dire\" agentid=\"3017809\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"4\" locationid=\"60009400\" locator=\"false\"/>\r\n    <row agent=\"Austrier Ginardieu\" agentid=\"3017810\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"4\" locationid=\"60009406\" locator=\"false\"/>\r\n    <row agent=\"Blaute Boullin\" agentid=\"3017811\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"4\" locationid=\"60009544\" locator=\"false\"/>\r\n    <row agent=\"Blie Ignoget\" agentid=\"3017812\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"4\" locationid=\"60009661\" locator=\"false\"/>\r\n    <row agent=\"Neirgadoget Rachesiaen\" agentid=\"3017813\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"4\" locationid=\"60009658\" locator=\"false\"/>\r\n    <row agent=\"Ockeel Alarie\" agentid=\"3017814\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"4\" locationid=\"60009664\" locator=\"false\"/>\r\n    <row agent=\"Orvalone Sylloet\" agentid=\"3017815\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"4\" locationid=\"60010036\" locator=\"false\"/>\r\n    <row agent=\"Pomesschenchon Vytter\" agentid=\"3017816\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"4\" locationid=\"60010270\" locator=\"false\"/>\r\n    <row agent=\"Dinchel Drouwerft\" agentid=\"3017817\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"4\" locationid=\"60010174\" locator=\"false\"/>\r\n    <row agent=\"Claysson Broutrollard\" agentid=\"3017820\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"4\" locationid=\"60010477\" locator=\"false\"/>\r\n    <row agent=\"Arant Euronne\" agentid=\"3017821\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"4\" locationid=\"60010402\" locator=\"false\"/>\r\n    <row agent=\"Dosette Gauneve\" agentid=\"3017822\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"24\" level=\"4\" locationid=\"60010693\" locator=\"false\"/>\r\n    <row agent=\"Bauwinon Bonailles\" agentid=\"3017823\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"4\" locationid=\"60010855\" locator=\"false\"/>\r\n    <row agent=\"Couvette Achet\" agentid=\"3017824\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"4\" locationid=\"60010951\" locator=\"false\"/>\r\n    <row agent=\"Trate Gallareue\" agentid=\"3017825\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"4\" locationid=\"60011353\" locator=\"false\"/>\r\n    <row agent=\"Achotte Cars\" agentid=\"3017826\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"4\" locationid=\"60011371\" locator=\"false\"/>\r\n    <row agent=\"Perckhevin Aussie\" agentid=\"3017827\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"4\" locationid=\"60011437\" locator=\"false\"/>\r\n    <row agent=\"Roysen Oleritte\" agentid=\"3017828\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"4\" locationid=\"60011971\" locator=\"false\"/>\r\n    <row agent=\"Tireres Egghetlate\" agentid=\"3017829\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"4\" locationid=\"60012112\" locator=\"false\"/>\r\n    <row agent=\"Surirer Chabaine\" agentid=\"3017830\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"4\" locationid=\"60012067\" locator=\"false\"/>\r\n    <row agent=\"Clordilen Allyttel\" agentid=\"3017831\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"4\" locationid=\"60012064\" locator=\"false\"/>\r\n    <row agent=\"Ogen Arnsbusel\" agentid=\"3017832\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"4\" locationid=\"60012166\" locator=\"false\"/>\r\n    <row agent=\"Lar Bengedgot\" agentid=\"3017833\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"4\" locationid=\"60012178\" locator=\"false\"/>\r\n    <row agent=\"Onkar Erkikur\" agentid=\"3017834\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"4\" locationid=\"60012136\" locator=\"false\"/>\r\n    <row agent=\"Herila Ashnan\" agentid=\"3017835\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"4\" locationid=\"60007936\" locator=\"false\"/>\r\n    <row agent=\"Amarah Ehsarat\" agentid=\"3017836\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"4\" locationid=\"60007957\" locator=\"false\"/>\r\n    <row agent=\"Nefra Apamun\" agentid=\"3017837\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"4\" locationid=\"60008266\" locator=\"false\"/>\r\n    <row agent=\"Chappa Fovnagh\" agentid=\"3017838\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"4\" locationid=\"60008263\" locator=\"false\"/>\r\n    <row agent=\"Ahvasa Aradoh\" agentid=\"3017839\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"4\" locationid=\"60008449\" locator=\"false\"/>\r\n    <row agent=\"Teryi Jatrad\" agentid=\"3017840\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"4\" locationid=\"60008839\" locator=\"false\"/>\r\n    <row agent=\"Choga Fanar\" agentid=\"3017841\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"4\" locationid=\"60008899\" locator=\"false\"/>\r\n    <row agent=\"Ourkhar Nansin\" agentid=\"3017842\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"4\" locationid=\"60008890\" locator=\"false\"/>\r\n    <row agent=\"Nore Merdu\" agentid=\"3017843\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"4\" locationid=\"60008896\" locator=\"false\"/>\r\n    <row agent=\"Potillot Cokasschant\" agentid=\"3017844\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"4\" locationid=\"60009256\" locator=\"false\"/>\r\n    <row agent=\"Aimele Alsarmer\" agentid=\"3017845\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"4\" locationid=\"60009379\" locator=\"false\"/>\r\n    <row agent=\"Molame Odette\" agentid=\"3017846\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"4\" locationid=\"60009400\" locator=\"false\"/>\r\n    <row agent=\"Benshalier Adare\" agentid=\"3017847\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"4\" locationid=\"60009406\" locator=\"false\"/>\r\n    <row agent=\"Thisylese Caurckhe\" agentid=\"3017848\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"4\" locationid=\"60009544\" locator=\"false\"/>\r\n    <row agent=\"Lomart Therckosiere\" agentid=\"3017849\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"4\" locationid=\"60009661\" locator=\"false\"/>\r\n    <row agent=\"Lauvrende Colaerdt\" agentid=\"3017850\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"4\" locationid=\"60009658\" locator=\"false\"/>\r\n    <row agent=\"Ambrelle Bolanel\" agentid=\"3017851\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"4\" locationid=\"60009664\" locator=\"false\"/>\r\n    <row agent=\"Pessulle Prehonel\" agentid=\"3017852\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"4\" locationid=\"60010036\" locator=\"false\"/>\r\n    <row agent=\"Eleges Ghetuttault\" agentid=\"3017853\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"4\" locationid=\"60010270\" locator=\"false\"/>\r\n    <row agent=\"Alentene Tameroy\" agentid=\"3017854\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"4\" locationid=\"60010174\" locator=\"false\"/>\r\n    <row agent=\"Poulver Olalet\" agentid=\"3017857\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"4\" locationid=\"60010477\" locator=\"false\"/>\r\n    <row agent=\"Pienordanne Dance\" agentid=\"3017858\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"4\" locationid=\"60010402\" locator=\"false\"/>\r\n    <row agent=\"Hefremier Orsolle\" agentid=\"3017859\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"24\" level=\"4\" locationid=\"60010693\" locator=\"false\"/>\r\n    <row agent=\"Penagier Rieres\" agentid=\"3017860\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"4\" locationid=\"60010804\" locator=\"false\"/>\r\n    <row agent=\"Bette Merlenciene\" agentid=\"3017861\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"4\" locationid=\"60010951\" locator=\"false\"/>\r\n    <row agent=\"Olacente Fampon\" agentid=\"3017862\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"4\" locationid=\"60011353\" locator=\"false\"/>\r\n    <row agent=\"Adaerne Villousse\" agentid=\"3017863\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"4\" locationid=\"60011371\" locator=\"false\"/>\r\n    <row agent=\"Avalle Casnattins\" agentid=\"3017864\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"4\" locationid=\"60011437\" locator=\"false\"/>\r\n    <row agent=\"Hey Saldissot\" agentid=\"3017865\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"4\" locationid=\"60011971\" locator=\"false\"/>\r\n    <row agent=\"Aciane Rulie\" agentid=\"3017866\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"4\" locationid=\"60012112\" locator=\"false\"/>\r\n    <row agent=\"Pulle Ware\" agentid=\"3017867\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"4\" locationid=\"60012067\" locator=\"false\"/>\r\n    <row agent=\"Venteetalle Elenia\" agentid=\"3017868\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"4\" locationid=\"60012064\" locator=\"false\"/>\r\n    <row agent=\"Elanden Golinur\" agentid=\"3017869\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"4\" locationid=\"60012166\" locator=\"false\"/>\r\n    <row agent=\"Augeir Uska\" agentid=\"3017870\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"4\" locationid=\"60012178\" locator=\"false\"/>\r\n    <row agent=\"Mannekar Evulfur\" agentid=\"3017871\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"4\" locationid=\"60012136\" locator=\"false\"/>\r\n    <row agent=\"Hilsenaef Uandrigotur\" agentid=\"3017872\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"4\" locationid=\"60012187\" locator=\"false\"/>\r\n    <row agent=\"Konirila Pierenta\" agentid=\"3017873\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"4\" locationid=\"60012208\" locator=\"false\"/>\r\n    <row agent=\"Ramaku Basta\" agentid=\"3017874\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"4\" locationid=\"60012220\" locator=\"false\"/>\r\n    <row agent=\"Niitkanus Mentunen\" agentid=\"3017875\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"4\" locationid=\"60012235\" locator=\"false\"/>\r\n    <row agent=\"Asher Sirvar\" agentid=\"3017876\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"4\" locationid=\"60012496\" locator=\"false\"/>\r\n    <row agent=\"Dacella Adoutte\" agentid=\"3017877\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"4\" locationid=\"60012376\" locator=\"false\"/>\r\n    <row agent=\"Oinarri Oishami\" agentid=\"3017878\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"22\" level=\"4\" locationid=\"60012565\" locator=\"false\"/>\r\n    <row agent=\"Ogemi Unenailen\" agentid=\"3017879\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"4\" locationid=\"60012562\" locator=\"false\"/>\r\n    <row agent=\"Ilrer Thielbrync\" agentid=\"3017880\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"4\" locationid=\"60012610\" locator=\"false\"/>\r\n    <row agent=\"Kninyon Senan\" agentid=\"3017881\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"23\" level=\"4\" locationid=\"60012754\" locator=\"false\"/>\r\n    <row agent=\"Vendrenade Azay\" agentid=\"3017882\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"23\" level=\"4\" locationid=\"60012796\" locator=\"false\"/>\r\n    <row agent=\"Lintere Jarverwel\" agentid=\"3017883\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"23\" level=\"4\" locationid=\"60012802\" locator=\"false\"/>\r\n    <row agent=\"Chalotte Audocella\" agentid=\"3017884\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"22\" level=\"4\" locationid=\"60012838\" locator=\"false\"/>\r\n    <row agent=\"Lanusice Cososson\" agentid=\"3017885\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"4\" locationid=\"60012868\" locator=\"false\"/>\r\n    <row agent=\"Ekonori Agber\" agentid=\"3017886\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"4\" locationid=\"60012871\" locator=\"false\"/>\r\n    <row agent=\"Uruchoshi Arutarkka\" agentid=\"3017887\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"4\" locationid=\"60012883\" locator=\"false\"/>\r\n    <row agent=\"Betilda Klet\" agentid=\"3017888\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"4\" locationid=\"60012898\" locator=\"false\"/>\r\n    <row agent=\"Blambemostrisper Uigo\" agentid=\"3017889\" agenttypeid=\"2\" corporationid=\"1000138\" divisionid=\"24\" level=\"4\" locationid=\"60013051\" locator=\"false\"/>\r\n    <row agent=\"Apouttemes Baustiste\" agentid=\"3017890\" agenttypeid=\"2\" corporationid=\"1000144\" divisionid=\"22\" level=\"4\" locationid=\"60013357\" locator=\"false\"/>\r\n    <row agent=\"Forecque Wennier\" agentid=\"3017891\" agenttypeid=\"2\" corporationid=\"1000144\" divisionid=\"22\" level=\"4\" locationid=\"60013378\" locator=\"false\"/>\r\n    <row agent=\"Dubbin Alpuellin\" agentid=\"3017892\" agenttypeid=\"2\" corporationid=\"1000145\" divisionid=\"22\" level=\"4\" locationid=\"60013381\" locator=\"false\"/>\r\n    <row agent=\"Avelet Vlielync\" agentid=\"3017893\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"4\" locationid=\"60013405\" locator=\"false\"/>\r\n    <row agent=\"Pelle Courdorecque\" agentid=\"3017894\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"4\" locationid=\"60013429\" locator=\"false\"/>\r\n    <row agent=\"Rotineque Tenemel\" agentid=\"3017895\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"4\" locationid=\"60013465\" locator=\"false\"/>\r\n    <row agent=\"Alenckbroodt Ellinaicon\" agentid=\"3017896\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"4\" locationid=\"60013528\" locator=\"false\"/>\r\n    <row agent=\"Bradolle Ogulier\" agentid=\"3017897\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"4\" locationid=\"60013486\" locator=\"false\"/>\r\n    <row agent=\"Arpi Kana\" agentid=\"3017898\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"22\" level=\"4\" locationid=\"60013990\" locator=\"false\"/>\r\n    <row agent=\"Peyiri Penira\" agentid=\"3017899\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"4\" locationid=\"60013987\" locator=\"false\"/>\r\n    <row agent=\"Mizara Lamas\" agentid=\"3017900\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"4\" locationid=\"60013945\" locator=\"false\"/>\r\n    <row agent=\"Gekkembad Vendalek\" agentid=\"3017901\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"22\" level=\"4\" locationid=\"60014089\" locator=\"false\"/>\r\n    <row agent=\"Antugaira Vanoruwa\" agentid=\"3017902\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"4\" locationid=\"60014179\" locator=\"false\"/>\r\n    <row agent=\"Harvanen Sikkama\" agentid=\"3017903\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"4\" locationid=\"60014266\" locator=\"false\"/>\r\n    <row agent=\"Yenthera Jonah\" agentid=\"3017904\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"4\" locationid=\"60014269\" locator=\"false\"/>\r\n    <row agent=\"Vuik Arnbjukin\" agentid=\"3017905\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"4\" locationid=\"60014164\" locator=\"false\"/>\r\n    <row agent=\"Onnjar Arnulten\" agentid=\"3017906\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"4\" locationid=\"60014206\" locator=\"false\"/>\r\n    <row agent=\"Bhenna Erkoun\" agentid=\"3017907\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"4\" locationid=\"60014185\" locator=\"false\"/>\r\n    <row agent=\"Emsur Gold\" agentid=\"3017908\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"4\" locationid=\"60014191\" locator=\"false\"/>\r\n    <row agent=\"Lacmotet Queloteyne\" agentid=\"3017909\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"4\" locationid=\"60014245\" locator=\"false\"/>\r\n    <row agent=\"Taken Tarttavas\" agentid=\"3017910\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"4\" locationid=\"60014278\" locator=\"false\"/>\r\n    <row agent=\"Ane Delience\" agentid=\"3017911\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"4\" locationid=\"60014194\" locator=\"false\"/>\r\n    <row agent=\"Enginnur Hekunda\" agentid=\"3017912\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"4\" locationid=\"60014197\" locator=\"false\"/>\r\n    <row agent=\"Eskirdar Teir\" agentid=\"3017913\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014329\" locator=\"false\"/>\r\n    <row agent=\"Tiet Saggilo\" agentid=\"3017914\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014302\" locator=\"false\"/>\r\n    <row agent=\"Oineshin Ienalalen\" agentid=\"3017915\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014359\" locator=\"false\"/>\r\n    <row agent=\"Laymeersch Elloloupin\" agentid=\"3017916\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014290\" locator=\"false\"/>\r\n    <row agent=\"Svurk Ronuken\" agentid=\"3017917\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014341\" locator=\"false\"/>\r\n    <row agent=\"Ursaras Koirola\" agentid=\"3017918\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014317\" locator=\"false\"/>\r\n    <row agent=\"Blistatyn Cabairon\" agentid=\"3017919\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014368\" locator=\"false\"/>\r\n    <row agent=\"Abosrima Faril\" agentid=\"3017920\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014308\" locator=\"false\"/>\r\n    <row agent=\"Born Embekorn\" agentid=\"3017921\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014332\" locator=\"false\"/>\r\n    <row agent=\"Fald Bangotur\" agentid=\"3017922\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"4\" locationid=\"60014422\" locator=\"false\"/>\r\n    <row agent=\"Dadunur Irgrand\" agentid=\"3017923\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"24\" level=\"4\" locationid=\"60014377\" locator=\"false\"/>\r\n    <row agent=\"Auditwin Abinsolf\" agentid=\"3017924\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"4\" locationid=\"60014440\" locator=\"false\"/>\r\n    <row agent=\"Guli Khetseh\" agentid=\"3017925\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"4\" locationid=\"60014635\" locator=\"false\"/>\r\n    <row agent=\"Ania Ojtoud\" agentid=\"3017926\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"4\" locationid=\"60014656\" locator=\"false\"/>\r\n    <row agent=\"Tolalula Pavisailen\" agentid=\"3017928\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"4\" locationid=\"60002686\" locator=\"false\"/>\r\n    <row agent=\"Heitunen Uusita\" agentid=\"3017929\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"4\" locationid=\"60002521\" locator=\"false\"/>\r\n    <row agent=\"Vunstede Maddondrangur\" agentid=\"3017930\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"4\" locationid=\"60004975\" locator=\"false\"/>\r\n    <row agent=\"Sisikolf Onalgar\" agentid=\"3017931\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"4\" locationid=\"60004969\" locator=\"false\"/>\r\n    <row agent=\"Gongeko Ulbrard\" agentid=\"3017932\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"4\" locationid=\"60005275\" locator=\"false\"/>\r\n    <row agent=\"Gummoke Eurdbald\" agentid=\"3017933\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005905\" locator=\"false\"/>\r\n    <row agent=\"Bjod Gusedt\" agentid=\"3017934\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"4\" locationid=\"60006082\" locator=\"false\"/>\r\n    <row agent=\"Moutanaza Nodami\" agentid=\"3017935\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"4\" locationid=\"60006121\" locator=\"false\"/>\r\n    <row agent=\"Shuhas Hosh\" agentid=\"3017936\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"4\" locationid=\"60006451\" locator=\"false\"/>\r\n    <row agent=\"Thiarer Itharen\" agentid=\"3017937\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"4\" locationid=\"60006457\" locator=\"false\"/>\r\n    <row agent=\"Puhia Marnoda\" agentid=\"3017938\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"4\" locationid=\"60006448\" locator=\"false\"/>\r\n    <row agent=\"Zith Gane\" agentid=\"3017939\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"4\" locationid=\"60006490\" locator=\"false\"/>\r\n    <row agent=\"Vaghezon Maina\" agentid=\"3017940\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"4\" locationid=\"60006652\" locator=\"false\"/>\r\n    <row agent=\"Neesher Shetoun\" agentid=\"3017941\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"4\" locationid=\"60006655\" locator=\"false\"/>\r\n    <row agent=\"Shardasteh Surilaver\" agentid=\"3017942\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"4\" locationid=\"60006661\" locator=\"false\"/>\r\n    <row agent=\"Sinosi Itmend\" agentid=\"3017943\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"4\" locationid=\"60006658\" locator=\"false\"/>\r\n    <row agent=\"Urerti Kiber\" agentid=\"3017944\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"4\" locationid=\"60006802\" locator=\"false\"/>\r\n    <row agent=\"Shapisin Mafshaza\" agentid=\"3017945\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"4\" locationid=\"60006655\" locator=\"false\"/>\r\n    <row agent=\"Joysbin Reque\" agentid=\"3017947\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"24\" level=\"4\" locationid=\"60010477\" locator=\"false\"/>\r\n    <row agent=\"Arabeton Erdoerroure\" agentid=\"3017948\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"4\" locationid=\"60009658\" locator=\"false\"/>\r\n    <row agent=\"Almananeg Shenton\" agentid=\"3017949\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014302\" locator=\"false\"/>\r\n    <row agent=\"Erun Varaki\" agentid=\"3017950\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"4\" locationid=\"60014635\" locator=\"false\"/>\r\n    <row agent=\"Volaert Aulon\" agentid=\"3017951\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"4\" locationid=\"60013486\" locator=\"false\"/>\r\n    <row agent=\"Wadarolf Silzansur\" agentid=\"3017952\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"22\" level=\"4\" locationid=\"60012166\" locator=\"false\"/>\r\n    <row agent=\"Kihjuri Marochi\" agentid=\"3017953\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"4\" locationid=\"60012565\" locator=\"false\"/>\r\n    <row agent=\"Wilakiater Odur\" agentid=\"3017954\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"4\" locationid=\"60012898\" locator=\"false\"/>\r\n    <row agent=\"Kakalin Ogomutsu\" agentid=\"3017955\" agenttypeid=\"2\" corporationid=\"1000138\" divisionid=\"22\" level=\"4\" locationid=\"60013051\" locator=\"false\"/>\r\n    <row agent=\"Askela Leukustin\" agentid=\"3017956\" agenttypeid=\"2\" corporationid=\"1000138\" divisionid=\"24\" level=\"4\" locationid=\"60013057\" locator=\"false\"/>\r\n    <row agent=\"Hrast Uttur\" agentid=\"3017957\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"4\" locationid=\"60004975\" locator=\"false\"/>\r\n    <row agent=\"Onur Albast\" agentid=\"3017958\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"4\" locationid=\"60005275\" locator=\"false\"/>\r\n    <row agent=\"Adaz Tedanih\" agentid=\"3017959\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"4\" locationid=\"60006652\" locator=\"false\"/>\r\n    <row agent=\"Famas Khaseh\" agentid=\"3017960\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"4\" locationid=\"60006661\" locator=\"false\"/>\r\n    <row agent=\"Bima Rassosa\" agentid=\"3017961\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"22\" level=\"4\" locationid=\"60006802\" locator=\"false\"/>\r\n    <row agent=\"Inthan Vezhgar\" agentid=\"3017962\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"4\" locationid=\"60007972\" locator=\"false\"/>\r\n    <row agent=\"Piyed Nishoo\" agentid=\"3017963\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"4\" locationid=\"60007900\" locator=\"false\"/>\r\n    <row agent=\"Traroh Narouri\" agentid=\"3017964\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"4\" locationid=\"60007996\" locator=\"false\"/>\r\n    <row agent=\"Manama Orabout\" agentid=\"3017965\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"4\" locationid=\"60008266\" locator=\"false\"/>\r\n    <row agent=\"Srora Tamezah\" agentid=\"3017966\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"4\" locationid=\"60008263\" locator=\"false\"/>\r\n    <row agent=\"Idiad Inhira\" agentid=\"3017967\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"4\" locationid=\"60008839\" locator=\"false\"/>\r\n    <row agent=\"Hoyere Devrille\" agentid=\"3017968\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"4\" locationid=\"60009400\" locator=\"false\"/>\r\n    <row agent=\"Parotte Boungvers\" agentid=\"3017969\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"4\" locationid=\"60009400\" locator=\"false\"/>\r\n    <row agent=\"Emmacieves Coriault\" agentid=\"3017970\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"4\" locationid=\"60009544\" locator=\"false\"/>\r\n    <row agent=\"Ardorele Estaunitte\" agentid=\"3017971\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"4\" locationid=\"60009664\" locator=\"false\"/>\r\n    <row agent=\"Colace Groes\" agentid=\"3017972\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"4\" locationid=\"60009664\" locator=\"false\"/>\r\n    <row agent=\"Oinet Wiriruettes\" agentid=\"3017973\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"4\" locationid=\"60010036\" locator=\"false\"/>\r\n    <row agent=\"Eshwil Jassa\" agentid=\"3017974\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"4\" locationid=\"60007987\" locator=\"false\"/>\r\n    <row agent=\"Thohas Idehkike\" agentid=\"3017975\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"4\" locationid=\"60007957\" locator=\"false\"/>\r\n    <row agent=\"Hafavi Khemainan\" agentid=\"3017976\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"4\" locationid=\"60008266\" locator=\"false\"/>\r\n    <row agent=\"Agah Khana\" agentid=\"3017977\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"4\" locationid=\"60008263\" locator=\"false\"/>\r\n    <row agent=\"Sazakhtid Nalfir\" agentid=\"3017978\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"4\" locationid=\"60008449\" locator=\"false\"/>\r\n    <row agent=\"Mida Sezi\" agentid=\"3017979\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"4\" locationid=\"60008839\" locator=\"false\"/>\r\n    <row agent=\"Mansimi Kez\" agentid=\"3017980\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"4\" locationid=\"60008899\" locator=\"false\"/>\r\n    <row agent=\"Ghapha Ghazzaki\" agentid=\"3017981\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"4\" locationid=\"60008890\" locator=\"false\"/>\r\n    <row agent=\"Kakimsia Niamphar\" agentid=\"3017982\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"4\" locationid=\"60008896\" locator=\"false\"/>\r\n    <row agent=\"Yolindre Plulle\" agentid=\"3017983\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"24\" level=\"4\" locationid=\"60009256\" locator=\"false\"/>\r\n    <row agent=\"Clon Bruysene\" agentid=\"3017984\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"4\" locationid=\"60009379\" locator=\"false\"/>\r\n    <row agent=\"Orthe Olarault\" agentid=\"3017985\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"4\" locationid=\"60009400\" locator=\"false\"/>\r\n    <row agent=\"Atins Nerrene\" agentid=\"3017986\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"4\" locationid=\"60009406\" locator=\"false\"/>\r\n    <row agent=\"Falinnuse Ardiciedan\" agentid=\"3017987\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"4\" locationid=\"60009544\" locator=\"false\"/>\r\n    <row agent=\"Aubiette Matebier\" agentid=\"3017988\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"4\" locationid=\"60009661\" locator=\"false\"/>\r\n    <row agent=\"Griles Kerlela\" agentid=\"3017989\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"4\" locationid=\"60009658\" locator=\"false\"/>\r\n    <row agent=\"Pucomette Ommasterye\" agentid=\"3017990\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"4\" locationid=\"60009664\" locator=\"false\"/>\r\n    <row agent=\"Muvinare Bourler\" agentid=\"3017991\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"4\" locationid=\"60010036\" locator=\"false\"/>\r\n    <row agent=\"Dalbruette Yverens\" agentid=\"3017992\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"4\" locationid=\"60010270\" locator=\"false\"/>\r\n    <row agent=\"Setta Muere\" agentid=\"3017993\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"4\" locationid=\"60010174\" locator=\"false\"/>\r\n    <row agent=\"Saston Aidarard\" agentid=\"3017996\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"4\" locationid=\"60010477\" locator=\"false\"/>\r\n    <row agent=\"Acharie Wirtale\" agentid=\"3017997\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"4\" locationid=\"60010402\" locator=\"false\"/>\r\n    <row agent=\"Enia Faulilandt\" agentid=\"3017998\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"24\" level=\"4\" locationid=\"60010693\" locator=\"false\"/>\r\n    <row agent=\"Rolettes Ambettone\" agentid=\"3017999\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"4\" locationid=\"60010801\" locator=\"false\"/>\r\n    <row agent=\"Mael Lasyn\" agentid=\"3018000\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"4\" locationid=\"60010951\" locator=\"false\"/>\r\n    <row agent=\"Grasternes Ahrairbaine\" agentid=\"3018001\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"4\" locationid=\"60011353\" locator=\"false\"/>\r\n    <row agent=\"Aurocque Bappenalle\" agentid=\"3018002\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"4\" locationid=\"60011371\" locator=\"false\"/>\r\n    <row agent=\"Ponnildel Anfroy\" agentid=\"3018003\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"4\" locationid=\"60011437\" locator=\"false\"/>\r\n    <row agent=\"Laulbrent Catelnau\" agentid=\"3018004\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"4\" locationid=\"60011971\" locator=\"false\"/>\r\n    <row agent=\"Groete Cickore\" agentid=\"3018005\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"4\" locationid=\"60012112\" locator=\"false\"/>\r\n    <row agent=\"Chonettane Schenere\" agentid=\"3018006\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"4\" locationid=\"60012067\" locator=\"false\"/>\r\n    <row agent=\"Echoris Blagnardel\" agentid=\"3018007\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"4\" locationid=\"60012064\" locator=\"false\"/>\r\n    <row agent=\"Moganur Uilrerir\" agentid=\"3018008\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"4\" locationid=\"60012166\" locator=\"false\"/>\r\n    <row agent=\"Kanrin Sillod\" agentid=\"3018009\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"4\" locationid=\"60012178\" locator=\"false\"/>\r\n    <row agent=\"Ulrokere Kavukefer\" agentid=\"3018010\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"4\" locationid=\"60012136\" locator=\"false\"/>\r\n    <row agent=\"Djeras Iratri\" agentid=\"3018011\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"4\" locationid=\"60012187\" locator=\"false\"/>\r\n    <row agent=\"Tellevare Viedelle\" agentid=\"3018012\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"4\" locationid=\"60012220\" locator=\"false\"/>\r\n    <row agent=\"Austretulf Gondur\" agentid=\"3018013\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"4\" locationid=\"60012235\" locator=\"false\"/>\r\n    <row agent=\"Shitud Nibhit\" agentid=\"3018014\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"4\" locationid=\"60012496\" locator=\"false\"/>\r\n    <row agent=\"Sikiltokka Kivila\" agentid=\"3018015\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"22\" level=\"4\" locationid=\"60012565\" locator=\"false\"/>\r\n    <row agent=\"Hanaruwa Oittenen\" agentid=\"3018016\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"4\" locationid=\"60012562\" locator=\"false\"/>\r\n    <row agent=\"Chararie Madene\" agentid=\"3018017\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"4\" locationid=\"60012610\" locator=\"false\"/>\r\n    <row agent=\"Uihider Ergund\" agentid=\"3018018\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"22\" level=\"4\" locationid=\"60012742\" locator=\"false\"/>\r\n    <row agent=\"Daneragi Adhard\" agentid=\"3018019\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"22\" level=\"4\" locationid=\"60012745\" locator=\"false\"/>\r\n    <row agent=\"Silellmarlyn Apanoire\" agentid=\"3018020\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"23\" level=\"4\" locationid=\"60012796\" locator=\"false\"/>\r\n    <row agent=\"Ysater Collamare\" agentid=\"3018021\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"23\" level=\"4\" locationid=\"60012802\" locator=\"false\"/>\r\n    <row agent=\"Afruvin Olerie\" agentid=\"3018022\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"22\" level=\"4\" locationid=\"60012838\" locator=\"false\"/>\r\n    <row agent=\"Iarinyud Hama\" agentid=\"3018023\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"4\" locationid=\"60012868\" locator=\"false\"/>\r\n    <row agent=\"Inimita Ogonuda\" agentid=\"3018024\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"4\" locationid=\"60012871\" locator=\"false\"/>\r\n    <row agent=\"Tazeh Charmok\" agentid=\"3018025\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"4\" locationid=\"60012883\" locator=\"false\"/>\r\n    <row agent=\"Erelger Dodori\" agentid=\"3018026\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"4\" locationid=\"60012898\" locator=\"false\"/>\r\n    <row agent=\"Sila Aajai\" agentid=\"3018027\" agenttypeid=\"2\" corporationid=\"1000138\" divisionid=\"24\" level=\"4\" locationid=\"60013057\" locator=\"false\"/>\r\n    <row agent=\"Ornettault Zarlere\" agentid=\"3018028\" agenttypeid=\"2\" corporationid=\"1000144\" divisionid=\"22\" level=\"4\" locationid=\"60013357\" locator=\"false\"/>\r\n    <row agent=\"Wellalain Mordiene\" agentid=\"3018029\" agenttypeid=\"2\" corporationid=\"1000144\" divisionid=\"22\" level=\"4\" locationid=\"60013378\" locator=\"false\"/>\r\n    <row agent=\"Parmedent Chareve\" agentid=\"3018030\" agenttypeid=\"2\" corporationid=\"1000145\" divisionid=\"22\" level=\"4\" locationid=\"60013381\" locator=\"false\"/>\r\n    <row agent=\"Enalalon Achaert\" agentid=\"3018031\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"4\" locationid=\"60013405\" locator=\"false\"/>\r\n    <row agent=\"Camatrire Adodoure\" agentid=\"3018032\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"4\" locationid=\"60013429\" locator=\"false\"/>\r\n    <row agent=\"Wafelle Allottive\" agentid=\"3018033\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"4\" locationid=\"60013465\" locator=\"false\"/>\r\n    <row agent=\"Mamianne Haet\" agentid=\"3018034\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"4\" locationid=\"60013528\" locator=\"false\"/>\r\n    <row agent=\"Couneriese Meuldia\" agentid=\"3018035\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"4\" locationid=\"60013486\" locator=\"false\"/>\r\n    <row agent=\"Cabeki Ardan\" agentid=\"3018036\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"22\" level=\"4\" locationid=\"60013990\" locator=\"false\"/>\r\n    <row agent=\"Abouh Isin\" agentid=\"3018037\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"4\" locationid=\"60013987\" locator=\"false\"/>\r\n    <row agent=\"Iranarans Shofsheer\" agentid=\"3018038\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"4\" locationid=\"60013945\" locator=\"false\"/>\r\n    <row agent=\"Simnika Trululf\" agentid=\"3018039\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"22\" level=\"4\" locationid=\"60014089\" locator=\"false\"/>\r\n    <row agent=\"Gunetur Odermar\" agentid=\"3018040\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"4\" locationid=\"60014236\" locator=\"false\"/>\r\n    <row agent=\"Helma Shakara\" agentid=\"3018041\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"4\" locationid=\"60014179\" locator=\"false\"/>\r\n    <row agent=\"Namyeh Davindra\" agentid=\"3018042\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"4\" locationid=\"60014269\" locator=\"false\"/>\r\n    <row agent=\"Rollose Angomenne\" agentid=\"3018043\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"4\" locationid=\"60014164\" locator=\"false\"/>\r\n    <row agent=\"Orsi Alutola\" agentid=\"3018044\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"4\" locationid=\"60014206\" locator=\"false\"/>\r\n    <row agent=\"Bynshar Katugumur\" agentid=\"3018045\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"4\" locationid=\"60014191\" locator=\"false\"/>\r\n    <row agent=\"Te Tinsdener\" agentid=\"3018046\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"4\" locationid=\"60014260\" locator=\"false\"/>\r\n    <row agent=\"Uadek Oleyoor\" agentid=\"3018047\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"4\" locationid=\"60014245\" locator=\"false\"/>\r\n    <row agent=\"Kavuo Taltara\" agentid=\"3018048\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"4\" locationid=\"60014278\" locator=\"false\"/>\r\n    <row agent=\"Wikgekard Raudelsen\" agentid=\"3018049\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"4\" locationid=\"60014197\" locator=\"false\"/>\r\n    <row agent=\"Humadi Ansasos\" agentid=\"3018050\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014302\" locator=\"false\"/>\r\n    <row agent=\"Nos Nihah\" agentid=\"3018051\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014359\" locator=\"false\"/>\r\n    <row agent=\"Lhuilon Hesier\" agentid=\"3018052\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014290\" locator=\"false\"/>\r\n    <row agent=\"Adaine Aylet\" agentid=\"3018053\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014341\" locator=\"false\"/>\r\n    <row agent=\"Lhuirerie Egghoollan\" agentid=\"3018054\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014338\" locator=\"false\"/>\r\n    <row agent=\"Ihra Likora\" agentid=\"3018055\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014317\" locator=\"false\"/>\r\n    <row agent=\"Audanie Amue\" agentid=\"3018056\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014368\" locator=\"false\"/>\r\n    <row agent=\"Aufay Thecettier\" agentid=\"3018057\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014308\" locator=\"false\"/>\r\n    <row agent=\"Orages Ardarman\" agentid=\"3018058\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014332\" locator=\"false\"/>\r\n    <row agent=\"Cherron Assune\" agentid=\"3018059\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014323\" locator=\"false\"/>\r\n    <row agent=\"Asbraker Dagemund\" agentid=\"3018060\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"4\" locationid=\"60014422\" locator=\"false\"/>\r\n    <row agent=\"Gif Iggylfur\" agentid=\"3018061\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"24\" level=\"4\" locationid=\"60014377\" locator=\"false\"/>\r\n    <row agent=\"Remerien Adilren\" agentid=\"3018062\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"4\" locationid=\"60014440\" locator=\"false\"/>\r\n    <row agent=\"Iler Namiritsya\" agentid=\"3018063\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"4\" locationid=\"60014635\" locator=\"false\"/>\r\n    <row agent=\"Gorreedle Mahya\" agentid=\"3018064\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"4\" locationid=\"60014656\" locator=\"false\"/>\r\n    <row agent=\"Amylama Netsanen\" agentid=\"3018066\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"4\" locationid=\"60002686\" locator=\"false\"/>\r\n    <row agent=\"Vasen Aikoro\" agentid=\"3018067\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"4\" locationid=\"60002521\" locator=\"false\"/>\r\n    <row agent=\"Gugelene Fralf\" agentid=\"3018068\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"4\" locationid=\"60004975\" locator=\"false\"/>\r\n    <row agent=\"Eilusgen Kjalf\" agentid=\"3018069\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"4\" locationid=\"60004969\" locator=\"false\"/>\r\n    <row agent=\"Uptesand Kridald\" agentid=\"3018070\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"4\" locationid=\"60005275\" locator=\"false\"/>\r\n    <row agent=\"Ortolt Togabet\" agentid=\"3018071\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"4\" locationid=\"60005905\" locator=\"false\"/>\r\n    <row agent=\"Aflur Dambard\" agentid=\"3018072\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"4\" locationid=\"60006082\" locator=\"false\"/>\r\n    <row agent=\"Neshios Yanurah\" agentid=\"3018073\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"4\" locationid=\"60006121\" locator=\"false\"/>\r\n    <row agent=\"Ushnozem Jamas\" agentid=\"3018074\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"4\" locationid=\"60006451\" locator=\"false\"/>\r\n    <row agent=\"Illi Nutemar\" agentid=\"3018075\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"4\" locationid=\"60006457\" locator=\"false\"/>\r\n    <row agent=\"Sourola Selada\" agentid=\"3018076\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"4\" locationid=\"60006448\" locator=\"false\"/>\r\n    <row agent=\"Thana Nahiroos\" agentid=\"3018077\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"4\" locationid=\"60006490\" locator=\"false\"/>\r\n    <row agent=\"Soohlie Esala\" agentid=\"3018078\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"4\" locationid=\"60006652\" locator=\"false\"/>\r\n    <row agent=\"Malaka Kad\" agentid=\"3018079\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"4\" locationid=\"60006655\" locator=\"false\"/>\r\n    <row agent=\"Memati Sounilier\" agentid=\"3018080\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"4\" locationid=\"60006661\" locator=\"false\"/>\r\n    <row agent=\"Onalomu Ghundila\" agentid=\"3018081\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"4\" locationid=\"60006658\" locator=\"false\"/>\r\n    <row agent=\"Norma Miehia\" agentid=\"3018082\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"4\" locationid=\"60006802\" locator=\"false\"/>\r\n    <row agent=\"Fanemem Paryo\" agentid=\"3018083\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"4\" locationid=\"60006655\" locator=\"false\"/>\r\n    <row agent=\"Jort Finon\" agentid=\"3018085\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"24\" level=\"4\" locationid=\"60010477\" locator=\"false\"/>\r\n    <row agent=\"Aubidart Barechon\" agentid=\"3018086\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"4\" locationid=\"60009658\" locator=\"false\"/>\r\n    <row agent=\"Hivoten Aggur\" agentid=\"3018087\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014302\" locator=\"false\"/>\r\n    <row agent=\"Anglin Atabosah\" agentid=\"3018088\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"4\" locationid=\"60014635\" locator=\"false\"/>\r\n    <row agent=\"Wente Aisnanaert\" agentid=\"3018089\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"4\" locationid=\"60013486\" locator=\"false\"/>\r\n    <row agent=\"Hermiko Eiteklur\" agentid=\"3018090\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"22\" level=\"4\" locationid=\"60012166\" locator=\"false\"/>\r\n    <row agent=\"Ingendan Hinuger\" agentid=\"3018091\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"4\" locationid=\"60012235\" locator=\"false\"/>\r\n    <row agent=\"Orsanen Sidanenkin\" agentid=\"3018092\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"4\" locationid=\"60012565\" locator=\"false\"/>\r\n    <row agent=\"Totafar Albradam\" agentid=\"3018093\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"4\" locationid=\"60012898\" locator=\"false\"/>\r\n    <row agent=\"Tiuruata Maura\" agentid=\"3018094\" agenttypeid=\"2\" corporationid=\"1000138\" divisionid=\"22\" level=\"4\" locationid=\"60013051\" locator=\"false\"/>\r\n    <row agent=\"Gaustold Aksenber\" agentid=\"3018095\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"4\" locationid=\"60004975\" locator=\"false\"/>\r\n    <row agent=\"Nanavig Rollinni\" agentid=\"3018096\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"4\" locationid=\"60005275\" locator=\"false\"/>\r\n    <row agent=\"Jubban Ifada\" agentid=\"3018097\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"4\" locationid=\"60006652\" locator=\"false\"/>\r\n    <row agent=\"Bemihra Datna\" agentid=\"3018098\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"4\" locationid=\"60006661\" locator=\"false\"/>\r\n    <row agent=\"Khohema Adjar\" agentid=\"3018099\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"22\" level=\"4\" locationid=\"60006802\" locator=\"false\"/>\r\n    <row agent=\"Yomada Kinarbhi\" agentid=\"3018100\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"4\" locationid=\"60007948\" locator=\"false\"/>\r\n    <row agent=\"Iashah Maylapen\" agentid=\"3018101\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"4\" locationid=\"60007945\" locator=\"false\"/>\r\n    <row agent=\"Kiskin Tzemyre\" agentid=\"3018102\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"3\" locationid=\"60007918\" locator=\"false\"/>\r\n    <row agent=\"Jalni Jatha\" agentid=\"3018103\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"4\" locationid=\"60008266\" locator=\"false\"/>\r\n    <row agent=\"Asichan Mekoma\" agentid=\"3018104\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"4\" locationid=\"60008263\" locator=\"false\"/>\r\n    <row agent=\"Apanake Namaryai\" agentid=\"3018105\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"4\" locationid=\"60008839\" locator=\"false\"/>\r\n    <row agent=\"Bavet Possamer\" agentid=\"3018106\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"4\" locationid=\"60009400\" locator=\"false\"/>\r\n    <row agent=\"Elehoet Slear\" agentid=\"3018107\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"4\" locationid=\"60009400\" locator=\"false\"/>\r\n    <row agent=\"Audaerne Jucissire\" agentid=\"3018108\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"4\" locationid=\"60009544\" locator=\"false\"/>\r\n    <row agent=\"Albrille Echonckbrault\" agentid=\"3018109\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"4\" locationid=\"60009664\" locator=\"false\"/>\r\n    <row agent=\"Uphennare Poroteau\" agentid=\"3018110\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"4\" locationid=\"60009664\" locator=\"false\"/>\r\n    <row agent=\"Cyrynier Ophalese\" agentid=\"3018111\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"4\" locationid=\"60010036\" locator=\"false\"/>\r\n    <row agent=\"Vagnobine Angayllon\" agentid=\"3018112\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"24\" level=\"4\" locationid=\"60010270\" locator=\"false\"/>\r\n    <row agent=\"Eyghonard Vache\" agentid=\"3018113\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"22\" level=\"4\" locationid=\"60010270\" locator=\"false\"/>\r\n    <row agent=\"Covianne Compsier\" agentid=\"3018114\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"22\" level=\"4\" locationid=\"60010363\" locator=\"false\"/>\r\n    <row agent=\"Paittes Mocer\" agentid=\"3018115\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"4\" locationid=\"60012112\" locator=\"false\"/>\r\n    <row agent=\"Sagalo Roltard\" agentid=\"3018116\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"4\" locationid=\"60012220\" locator=\"false\"/>\r\n    <row agent=\"Sang Mohun\" agentid=\"3018117\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"4\" locationid=\"60012235\" locator=\"false\"/>\r\n    <row agent=\"Haatoluppa Arkeshi\" agentid=\"3018118\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"4\" locationid=\"60012562\" locator=\"false\"/>\r\n    <row agent=\"Kakkise Verataila\" agentid=\"3018119\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"4\" locationid=\"60012565\" locator=\"false\"/>\r\n    <row agent=\"Bordt Slaroyes\" agentid=\"3018120\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"4\" locationid=\"60012898\" locator=\"false\"/>\r\n    <row agent=\"Winulle Vairlitte\" agentid=\"3018121\" agenttypeid=\"2\" corporationid=\"1000144\" divisionid=\"24\" level=\"4\" locationid=\"60013378\" locator=\"false\"/>\r\n    <row agent=\"Dewnellin Larie\" agentid=\"3018122\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"4\" locationid=\"60013528\" locator=\"false\"/>\r\n    <row agent=\"Brybbier Tarartault\" agentid=\"3018123\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"4\" locationid=\"60013486\" locator=\"false\"/>\r\n    <row agent=\"Partod Arjera\" agentid=\"3018125\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"4\" locationid=\"60013945\" locator=\"false\"/>\r\n    <row agent=\"Chiru Maherden\" agentid=\"3018126\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"4\" locationid=\"60014236\" locator=\"false\"/>\r\n    <row agent=\"Kiskela Gem\" agentid=\"3018127\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"4\" locationid=\"60014245\" locator=\"false\"/>\r\n    <row agent=\"Inapira Hevas\" agentid=\"3018128\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"4\" locationid=\"60014197\" locator=\"false\"/>\r\n    <row agent=\"Farkaradus Uansledus\" agentid=\"3018129\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"4\" locationid=\"60014278\" locator=\"false\"/>\r\n    <row agent=\"Erntur Situdiok\" agentid=\"3018130\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"4\" locationid=\"60014278\" locator=\"false\"/>\r\n    <row agent=\"Gokulerik Sitrulf\" agentid=\"3018131\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"24\" level=\"4\" locationid=\"60014440\" locator=\"false\"/>\r\n    <row agent=\"Ahanen Rukonsuo\" agentid=\"3018132\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"4\" locationid=\"60002521\" locator=\"false\"/>\r\n    <row agent=\"Utren Akrada\" agentid=\"3018133\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"4\" locationid=\"60005275\" locator=\"false\"/>\r\n    <row agent=\"Harish Hulori\" agentid=\"3018134\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"4\" locationid=\"60008263\" locator=\"false\"/>\r\n    <row agent=\"Isuma Munebainen\" agentid=\"3018135\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"4\" locationid=\"60012898\" locator=\"false\"/>\r\n    <row agent=\"Jabha Dinuhar\" agentid=\"3018136\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"4\" locationid=\"60008449\" locator=\"false\"/>\r\n    <row agent=\"Halstuin Egnald\" agentid=\"3018137\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"4\" locationid=\"60004969\" locator=\"false\"/>\r\n    <row agent=\"Aakie Sekichi\" agentid=\"3018138\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"4\" locationid=\"60012562\" locator=\"false\"/>\r\n    <row agent=\"Nija Zufa\" agentid=\"3018139\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014290\" locator=\"false\"/>\r\n    <row agent=\"Uptore Lommnersin\" agentid=\"3018140\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014332\" locator=\"false\"/>\r\n    <row agent=\"Norgette Mangyrier\" agentid=\"3018141\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"4\" locationid=\"60014194\" locator=\"false\"/>\r\n    <row agent=\"Mottenaef Arlsand\" agentid=\"3018142\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"4\" locationid=\"60012166\" locator=\"false\"/>\r\n    <row agent=\"Amil Aregen\" agentid=\"3018143\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"4\" locationid=\"60006451\" locator=\"false\"/>\r\n    <row agent=\"Estalphave Arrayllaere\" agentid=\"3018144\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"4\" locationid=\"60010849\" locator=\"false\"/>\r\n    <row agent=\"Shushayahlou Ghath\" agentid=\"3018145\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"4\" locationid=\"60014656\" locator=\"false\"/>\r\n    <row agent=\"Aernoltene Alallard\" agentid=\"3018146\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"24\" level=\"4\" locationid=\"60010693\" locator=\"false\"/>\r\n    <row agent=\"Atattur Wilelan\" agentid=\"3018147\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"22\" level=\"4\" locationid=\"60014089\" locator=\"false\"/>\r\n    <row agent=\"Hodembard Alkmon\" agentid=\"3018148\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"4\" locationid=\"60014191\" locator=\"false\"/>\r\n    <row agent=\"Mispilaury Mannemaine\" agentid=\"3018149\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"4\" locationid=\"60011437\" locator=\"false\"/>\r\n    <row agent=\"Aclie Ostingele\" agentid=\"3018150\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"4\" locationid=\"60010402\" locator=\"false\"/>\r\n    <row agent=\"Burja Seghar\" agentid=\"3018151\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"4\" locationid=\"60013987\" locator=\"false\"/>\r\n    <row agent=\"Senemou Vaini\" agentid=\"3018152\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014338\" locator=\"false\"/>\r\n    <row agent=\"Altecir Sineru\" agentid=\"3018153\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"4\" locationid=\"60014635\" locator=\"false\"/>\r\n    <row agent=\"Agouteh Nenafu\" agentid=\"3018154\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"3\" locationid=\"60007948\" locator=\"false\"/>\r\n    <row agent=\"Meona Qirnona\" agentid=\"3018155\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"3\" locationid=\"60007957\" locator=\"false\"/>\r\n    <row agent=\"Siz Choyes\" agentid=\"3018156\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008266\" locator=\"false\"/>\r\n    <row agent=\"Anahseri Tenegh\" agentid=\"3018157\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008263\" locator=\"false\"/>\r\n    <row agent=\"Hamen Banela\" agentid=\"3018158\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"3\" locationid=\"60008449\" locator=\"false\"/>\r\n    <row agent=\"Samdit Ahail\" agentid=\"3018159\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"3\" locationid=\"60008839\" locator=\"false\"/>\r\n    <row agent=\"Pamynir Terloul\" agentid=\"3018160\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"3\" locationid=\"60008899\" locator=\"false\"/>\r\n    <row agent=\"Abnar Rorap\" agentid=\"3018161\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"3\" locationid=\"60008890\" locator=\"false\"/>\r\n    <row agent=\"Ashmarir Naita\" agentid=\"3018162\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"3\" locationid=\"60008896\" locator=\"false\"/>\r\n    <row agent=\"Vallomaert Aimequier\" agentid=\"3018163\" agenttypeid=\"2\" corporationid=\"1000094\" divisionid=\"22\" level=\"3\" locationid=\"60009256\" locator=\"false\"/>\r\n    <row agent=\"Leoroilete Kereille\" agentid=\"3018164\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"3\" locationid=\"60009379\" locator=\"false\"/>\r\n    <row agent=\"Vlandsontal Agalle\" agentid=\"3018165\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"3\" locationid=\"60009400\" locator=\"false\"/>\r\n    <row agent=\"Wincain Baescemette\" agentid=\"3018166\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"22\" level=\"3\" locationid=\"60009406\" locator=\"false\"/>\r\n    <row agent=\"Octerterier Werfault\" agentid=\"3018167\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"23\" level=\"3\" locationid=\"60009544\" locator=\"false\"/>\r\n    <row agent=\"Yngla Marosier\" agentid=\"3018168\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"3\" locationid=\"60009661\" locator=\"false\"/>\r\n    <row agent=\"Banisausnet Agouguere\" agentid=\"3018169\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"24\" level=\"3\" locationid=\"60009658\" locator=\"false\"/>\r\n    <row agent=\"Ivirrot Atlasaine\" agentid=\"3018170\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"3\" locationid=\"60009664\" locator=\"false\"/>\r\n    <row agent=\"Ounzyns Farrese\" agentid=\"3018171\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"23\" level=\"3\" locationid=\"60010036\" locator=\"false\"/>\r\n    <row agent=\"Oettant Tean\" agentid=\"3018172\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"3\" locationid=\"60010270\" locator=\"false\"/>\r\n    <row agent=\"Aubaerse Oruet\" agentid=\"3018173\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"23\" level=\"3\" locationid=\"60010174\" locator=\"false\"/>\r\n    <row agent=\"Barolle Cochtenere\" agentid=\"3018174\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"22\" level=\"3\" locationid=\"60010363\" locator=\"false\"/>\r\n    <row agent=\"Yvane Armemon\" agentid=\"3018176\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"3\" locationid=\"60010477\" locator=\"false\"/>\r\n    <row agent=\"Mettore Cherie\" agentid=\"3018177\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"3\" locationid=\"60010402\" locator=\"false\"/>\r\n    <row agent=\"Brinalle Mosalles\" agentid=\"3018178\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"24\" level=\"3\" locationid=\"60010693\" locator=\"false\"/>\r\n    <row agent=\"Esmecet Boystin\" agentid=\"3018179\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"3\" locationid=\"60010798\" locator=\"false\"/>\r\n    <row agent=\"Penchareel Cletrullier\" agentid=\"3018180\" agenttypeid=\"2\" corporationid=\"1000110\" divisionid=\"22\" level=\"3\" locationid=\"60010951\" locator=\"false\"/>\r\n    <row agent=\"Agrastyn Maloque\" agentid=\"3018181\" agenttypeid=\"2\" corporationid=\"1000112\" divisionid=\"22\" level=\"3\" locationid=\"60011353\" locator=\"false\"/>\r\n    <row agent=\"Lealin Airt\" agentid=\"3018182\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"3\" locationid=\"60011371\" locator=\"false\"/>\r\n    <row agent=\"Archalis Aesci\" agentid=\"3018183\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"3\" locationid=\"60011437\" locator=\"false\"/>\r\n    <row agent=\"Ararie Telolle\" agentid=\"3018184\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"3\" locationid=\"60011971\" locator=\"false\"/>\r\n    <row agent=\"Knullier Freal\" agentid=\"3018185\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"3\" locationid=\"60012112\" locator=\"false\"/>\r\n    <row agent=\"Becettiers Matterault\" agentid=\"3018186\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"3\" locationid=\"60012067\" locator=\"false\"/>\r\n    <row agent=\"Carvaire Cet\" agentid=\"3018187\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"22\" level=\"3\" locationid=\"60012064\" locator=\"false\"/>\r\n    <row agent=\"Arnawora Notena\" agentid=\"3018188\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"3\" locationid=\"60012166\" locator=\"false\"/>\r\n    <row agent=\"Ongeta Hegemur\" agentid=\"3018189\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"3\" locationid=\"60012178\" locator=\"false\"/>\r\n    <row agent=\"Ornarljodhan Jolraki\" agentid=\"3018190\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"3\" locationid=\"60012136\" locator=\"false\"/>\r\n    <row agent=\"Auvenen Misenmaa\" agentid=\"3018191\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"3\" locationid=\"60012208\" locator=\"false\"/>\r\n    <row agent=\"Arthan Mehyah\" agentid=\"3018192\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"3\" locationid=\"60012220\" locator=\"false\"/>\r\n    <row agent=\"Vaunt Aloongeves\" agentid=\"3018193\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"3\" locationid=\"60012235\" locator=\"false\"/>\r\n    <row agent=\"Andir Manbin\" agentid=\"3018194\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"3\" locationid=\"60012496\" locator=\"false\"/>\r\n    <row agent=\"Ahe Jardad\" agentid=\"3018195\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"3\" locationid=\"60012376\" locator=\"false\"/>\r\n    <row agent=\"Iskaa Shimala\" agentid=\"3018196\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"22\" level=\"3\" locationid=\"60012565\" locator=\"false\"/>\r\n    <row agent=\"Yoskala Osharento\" agentid=\"3018197\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"3\" locationid=\"60012562\" locator=\"false\"/>\r\n    <row agent=\"Stie Allacis\" agentid=\"3018198\" agenttypeid=\"2\" corporationid=\"1000130\" divisionid=\"24\" level=\"3\" locationid=\"60012610\" locator=\"false\"/>\r\n    <row agent=\"Agigaux Zulenne\" agentid=\"3018199\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"22\" level=\"3\" locationid=\"60012742\" locator=\"false\"/>\r\n    <row agent=\"Buldebsdanner Audotluin\" agentid=\"3018200\" agenttypeid=\"2\" corporationid=\"1000133\" divisionid=\"22\" level=\"3\" locationid=\"60012745\" locator=\"false\"/>\r\n    <row agent=\"Oill Velecite\" agentid=\"3018201\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"23\" level=\"3\" locationid=\"60012796\" locator=\"false\"/>\r\n    <row agent=\"Auba Heymminegher\" agentid=\"3018202\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"23\" level=\"3\" locationid=\"60012802\" locator=\"false\"/>\r\n    <row agent=\"Buifforelle Navepage\" agentid=\"3018203\" agenttypeid=\"2\" corporationid=\"1000135\" divisionid=\"22\" level=\"3\" locationid=\"60012838\" locator=\"false\"/>\r\n    <row agent=\"Sab Fekri\" agentid=\"3018204\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"3\" locationid=\"60012868\" locator=\"false\"/>\r\n    <row agent=\"Thared Arot\" agentid=\"3018205\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"3\" locationid=\"60012871\" locator=\"false\"/>\r\n    <row agent=\"Patreli Sineram\" agentid=\"3018206\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"3\" locationid=\"60012883\" locator=\"false\"/>\r\n    <row agent=\"Haldoko Egudrolf\" agentid=\"3018207\" agenttypeid=\"2\" corporationid=\"1000138\" divisionid=\"24\" level=\"3\" locationid=\"60013051\" locator=\"false\"/>\r\n    <row agent=\"Isajita Saaskiekko\" agentid=\"3018208\" agenttypeid=\"2\" corporationid=\"1000138\" divisionid=\"24\" level=\"3\" locationid=\"60013057\" locator=\"false\"/>\r\n    <row agent=\"Frollimmes Gois\" agentid=\"3018209\" agenttypeid=\"2\" corporationid=\"1000144\" divisionid=\"22\" level=\"3\" locationid=\"60013357\" locator=\"false\"/>\r\n    <row agent=\"Wamecel Odeune\" agentid=\"3018210\" agenttypeid=\"2\" corporationid=\"1000144\" divisionid=\"22\" level=\"3\" locationid=\"60013378\" locator=\"false\"/>\r\n    <row agent=\"Trierouck Olediart\" agentid=\"3018211\" agenttypeid=\"2\" corporationid=\"1000145\" divisionid=\"22\" level=\"3\" locationid=\"60013381\" locator=\"false\"/>\r\n    <row agent=\"Janckee Houfriellan\" agentid=\"3018212\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"3\" locationid=\"60013405\" locator=\"false\"/>\r\n    <row agent=\"Archattirain Haseverie\" agentid=\"3018213\" agenttypeid=\"2\" corporationid=\"1000146\" divisionid=\"24\" level=\"3\" locationid=\"60013429\" locator=\"false\"/>\r\n    <row agent=\"Esmittault Quitier\" agentid=\"3018214\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"3\" locationid=\"60013465\" locator=\"false\"/>\r\n    <row agent=\"Dovrin Vellaroutte\" agentid=\"3018215\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"3\" locationid=\"60013528\" locator=\"false\"/>\r\n    <row agent=\"Amane Audocella\" agentid=\"3018216\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"24\" level=\"3\" locationid=\"60013486\" locator=\"false\"/>\r\n    <row agent=\"Salera Okhous\" agentid=\"3018217\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"22\" level=\"3\" locationid=\"60013990\" locator=\"false\"/>\r\n    <row agent=\"Lamul Gudidya\" agentid=\"3018218\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"3\" locationid=\"60013987\" locator=\"false\"/>\r\n    <row agent=\"Imazoraz Ihulin\" agentid=\"3018219\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"3\" locationid=\"60013945\" locator=\"false\"/>\r\n    <row agent=\"Bjord Helkerkite\" agentid=\"3018220\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"22\" level=\"3\" locationid=\"60014089\" locator=\"false\"/>\r\n    <row agent=\"Uuni Ogoto\" agentid=\"3018221\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"3\" locationid=\"60014236\" locator=\"false\"/>\r\n    <row agent=\"Ygier Avere\" agentid=\"3018222\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"3\" locationid=\"60014179\" locator=\"false\"/>\r\n    <row agent=\"Osoi Okinaya\" agentid=\"3018223\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"3\" locationid=\"60014266\" locator=\"false\"/>\r\n    <row agent=\"Phinenes Suspellier\" agentid=\"3018224\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"3\" locationid=\"60014269\" locator=\"false\"/>\r\n    <row agent=\"Kizhgam Yoora\" agentid=\"3018225\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"3\" locationid=\"60014164\" locator=\"false\"/>\r\n    <row agent=\"Ameinko Hanfrobert\" agentid=\"3018226\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"3\" locationid=\"60014206\" locator=\"false\"/>\r\n    <row agent=\"Amli Appoom\" agentid=\"3018227\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"3\" locationid=\"60014191\" locator=\"false\"/>\r\n    <row agent=\"Alanti Ykko\" agentid=\"3018228\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"3\" locationid=\"60014260\" locator=\"false\"/>\r\n    <row agent=\"Tusantaitoh Ihonukai\" agentid=\"3018229\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"3\" locationid=\"60014245\" locator=\"false\"/>\r\n    <row agent=\"Saponeil Melaram\" agentid=\"3018230\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"3\" locationid=\"60014194\" locator=\"false\"/>\r\n    <row agent=\"Dhaurent Movexis\" agentid=\"3018231\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"3\" locationid=\"60014197\" locator=\"false\"/>\r\n    <row agent=\"Shantru Jikounou\" agentid=\"3018232\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"3\" locationid=\"60014329\" locator=\"false\"/>\r\n    <row agent=\"Massun Sahbalara\" agentid=\"3018233\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"3\" locationid=\"60014302\" locator=\"false\"/>\r\n    <row agent=\"Rebi Sobari\" agentid=\"3018234\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"3\" locationid=\"60014341\" locator=\"false\"/>\r\n    <row agent=\"Nareraka Shakara\" agentid=\"3018235\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"3\" locationid=\"60014338\" locator=\"false\"/>\r\n    <row agent=\"Mezoot Fekh\" agentid=\"3018236\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"3\" locationid=\"60014317\" locator=\"false\"/>\r\n    <row agent=\"Iverie Lafisques\" agentid=\"3018237\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"3\" locationid=\"60014368\" locator=\"false\"/>\r\n    <row agent=\"Aldurald Ornatber\" agentid=\"3018238\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"3\" locationid=\"60014308\" locator=\"false\"/>\r\n    <row agent=\"Oriainesen Pala\" agentid=\"3018239\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"3\" locationid=\"60014332\" locator=\"false\"/>\r\n    <row agent=\"Hilduard Hrotabias\" agentid=\"3018240\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"3\" locationid=\"60014422\" locator=\"false\"/>\r\n    <row agent=\"Hjodelhar Berhwendan\" agentid=\"3018241\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"3\" locationid=\"60014377\" locator=\"false\"/>\r\n    <row agent=\"Radurald Noside\" agentid=\"3018242\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"22\" level=\"3\" locationid=\"60014440\" locator=\"false\"/>\r\n    <row agent=\"Makahit Mierech\" agentid=\"3018243\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"3\" locationid=\"60014635\" locator=\"false\"/>\r\n    <row agent=\"Amas Aulin\" agentid=\"3018244\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"3\" locationid=\"60014656\" locator=\"false\"/>\r\n    <row agent=\"Malen Motaro\" agentid=\"3018246\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"3\" locationid=\"60002686\" locator=\"false\"/>\r\n    <row agent=\"Verataila Hashinko\" agentid=\"3018247\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"22\" level=\"3\" locationid=\"60002521\" locator=\"false\"/>\r\n    <row agent=\"Hiburulf Odhukkard\" agentid=\"3018248\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"3\" locationid=\"60004975\" locator=\"false\"/>\r\n    <row agent=\"Enset Olenhar\" agentid=\"3018249\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"3\" locationid=\"60004969\" locator=\"false\"/>\r\n    <row agent=\"Eyrmar Anrik\" agentid=\"3018250\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005275\" locator=\"false\"/>\r\n    <row agent=\"Infrigur Genundrehtar\" agentid=\"3018251\" agenttypeid=\"2\" corporationid=\"1000061\" divisionid=\"22\" level=\"3\" locationid=\"60005905\" locator=\"false\"/>\r\n    <row agent=\"Hargrit Engokulf\" agentid=\"3018252\" agenttypeid=\"2\" corporationid=\"1000062\" divisionid=\"22\" level=\"3\" locationid=\"60006082\" locator=\"false\"/>\r\n    <row agent=\"Jemangah Melata\" agentid=\"3018253\" agenttypeid=\"2\" corporationid=\"1000063\" divisionid=\"23\" level=\"3\" locationid=\"60006121\" locator=\"false\"/>\r\n    <row agent=\"Vakadi Saal\" agentid=\"3018254\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"3\" locationid=\"60006451\" locator=\"false\"/>\r\n    <row agent=\"Ashyar Ahesoh\" agentid=\"3018255\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"3\" locationid=\"60006457\" locator=\"false\"/>\r\n    <row agent=\"Shebnen Nameku\" agentid=\"3018256\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"3\" locationid=\"60006448\" locator=\"false\"/>\r\n    <row agent=\"Kannaka Abegias\" agentid=\"3018257\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"3\" locationid=\"60006490\" locator=\"false\"/>\r\n    <row agent=\"Uadir Meorva\" agentid=\"3018258\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"3\" locationid=\"60006652\" locator=\"false\"/>\r\n    <row agent=\"Ondirias Hamahon\" agentid=\"3018259\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"3\" locationid=\"60006655\" locator=\"false\"/>\r\n    <row agent=\"Fumu Erasouh\" agentid=\"3018260\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"3\" locationid=\"60006661\" locator=\"false\"/>\r\n    <row agent=\"Mula Agha\" agentid=\"3018261\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"3\" locationid=\"60006658\" locator=\"false\"/>\r\n    <row agent=\"Thadra Hareh\" agentid=\"3018262\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"23\" level=\"3\" locationid=\"60006802\" locator=\"false\"/>\r\n    <row agent=\"Shavias Jiveeshath\" agentid=\"3018263\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"23\" level=\"3\" locationid=\"60006655\" locator=\"false\"/>\r\n    <row agent=\"Ryssacier Lorumier\" agentid=\"3018265\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"24\" level=\"3\" locationid=\"60010477\" locator=\"false\"/>\r\n    <row agent=\"Allurel Irot\" agentid=\"3018266\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"3\" locationid=\"60009658\" locator=\"false\"/>\r\n    <row agent=\"Okamola Karto\" agentid=\"3018267\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"3\" locationid=\"60014302\" locator=\"false\"/>\r\n    <row agent=\"Odap Jolammaz\" agentid=\"3018268\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"3\" locationid=\"60014635\" locator=\"false\"/>\r\n    <row agent=\"Hanckere Octirant\" agentid=\"3018269\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"3\" locationid=\"60013486\" locator=\"false\"/>\r\n    <row agent=\"Storadik Julgatur\" agentid=\"3018270\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"22\" level=\"3\" locationid=\"60012166\" locator=\"false\"/>\r\n    <row agent=\"Palunard Fralf\" agentid=\"3018271\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"3\" locationid=\"60012235\" locator=\"false\"/>\r\n    <row agent=\"Panola Paatama\" agentid=\"3018272\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"3\" locationid=\"60012565\" locator=\"false\"/>\r\n    <row agent=\"Rora Pulina\" agentid=\"3018273\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"3\" locationid=\"60012898\" locator=\"false\"/>\r\n    <row agent=\"Maman Ahasta\" agentid=\"3018274\" agenttypeid=\"2\" corporationid=\"1000138\" divisionid=\"22\" level=\"3\" locationid=\"60013051\" locator=\"false\"/>\r\n    <row agent=\"Pilouled Donoohtolb\" agentid=\"3018275\" agenttypeid=\"2\" corporationid=\"1000138\" divisionid=\"24\" level=\"3\" locationid=\"60013057\" locator=\"false\"/>\r\n    <row agent=\"Hertambrolf Erund\" agentid=\"3018276\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"24\" level=\"3\" locationid=\"60004975\" locator=\"false\"/>\r\n    <row agent=\"Marteber Hasleman\" agentid=\"3018277\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005275\" locator=\"false\"/>\r\n    <row agent=\"Narai Bahra\" agentid=\"3018278\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"24\" level=\"3\" locationid=\"60006652\" locator=\"false\"/>\r\n    <row agent=\"Baha Amundala\" agentid=\"3018279\" agenttypeid=\"2\" corporationid=\"1000067\" divisionid=\"22\" level=\"3\" locationid=\"60006661\" locator=\"false\"/>\r\n    <row agent=\"Memrid Siera\" agentid=\"3018280\" agenttypeid=\"2\" corporationid=\"1000069\" divisionid=\"22\" level=\"3\" locationid=\"60006802\" locator=\"false\"/>\r\n    <row agent=\"Yarhi Aseni\" agentid=\"3018281\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"3\" locationid=\"60007948\" locator=\"false\"/>\r\n    <row agent=\"Resaphu Niraloud\" agentid=\"3018282\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"3\" locationid=\"60007948\" locator=\"false\"/>\r\n    <row agent=\"Pez Ershirar\" agentid=\"3018283\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"3\" locationid=\"60007948\" locator=\"false\"/>\r\n    <row agent=\"Alran Asorerid\" agentid=\"3018284\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008266\" locator=\"false\"/>\r\n    <row agent=\"Kosel Hakarvin\" agentid=\"3018285\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008263\" locator=\"false\"/>\r\n    <row agent=\"Chakipani Arneman\" agentid=\"3018286\" agenttypeid=\"2\" corporationid=\"1000092\" divisionid=\"24\" level=\"3\" locationid=\"60008839\" locator=\"false\"/>\r\n    <row agent=\"Pediart Auget\" agentid=\"3018287\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"3\" locationid=\"60009400\" locator=\"false\"/>\r\n    <row agent=\"Wyslolet Condylavier\" agentid=\"3018288\" agenttypeid=\"2\" corporationid=\"1000095\" divisionid=\"24\" level=\"3\" locationid=\"60009400\" locator=\"false\"/>\r\n    <row agent=\"Frarel Aporer\" agentid=\"3018289\" agenttypeid=\"2\" corporationid=\"1000097\" divisionid=\"24\" level=\"3\" locationid=\"60009544\" locator=\"false\"/>\r\n    <row agent=\"Ailbe Audodart\" agentid=\"3018290\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"3\" locationid=\"60009664\" locator=\"false\"/>\r\n    <row agent=\"Aymetant Audemoy\" agentid=\"3018291\" agenttypeid=\"2\" corporationid=\"1000098\" divisionid=\"23\" level=\"3\" locationid=\"60009664\" locator=\"false\"/>\r\n    <row agent=\"Esmeusnon Aframens\" agentid=\"3018292\" agenttypeid=\"2\" corporationid=\"1000100\" divisionid=\"24\" level=\"3\" locationid=\"60010036\" locator=\"false\"/>\r\n    <row agent=\"Pruydiere Buelbrie\" agentid=\"3018293\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"24\" level=\"3\" locationid=\"60010270\" locator=\"false\"/>\r\n    <row agent=\"Elakere Erge\" agentid=\"3018294\" agenttypeid=\"2\" corporationid=\"1000101\" divisionid=\"22\" level=\"3\" locationid=\"60010270\" locator=\"false\"/>\r\n    <row agent=\"Janomeches Helaverie\" agentid=\"3018296\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"3\" locationid=\"60012112\" locator=\"false\"/>\r\n    <row agent=\"Esmallon Alpaulles\" agentid=\"3018297\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"3\" locationid=\"60012220\" locator=\"false\"/>\r\n    <row agent=\"Blagnardel Betton\" agentid=\"3018298\" agenttypeid=\"2\" corporationid=\"1000124\" divisionid=\"24\" level=\"3\" locationid=\"60012235\" locator=\"false\"/>\r\n    <row agent=\"Uokko Jindaken\" agentid=\"3018299\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"3\" locationid=\"60012376\" locator=\"false\"/>\r\n    <row agent=\"Sortet Oelt\" agentid=\"3018300\" agenttypeid=\"2\" corporationid=\"1000125\" divisionid=\"24\" level=\"3\" locationid=\"60012376\" locator=\"false\"/>\r\n    <row agent=\"Shiralukka Veroto\" agentid=\"3018301\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"3\" locationid=\"60012562\" locator=\"false\"/>\r\n    <row agent=\"Mijuta Etonori\" agentid=\"3018302\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"3\" locationid=\"60012565\" locator=\"false\"/>\r\n    <row agent=\"Yddet Aslion\" agentid=\"3018303\" agenttypeid=\"2\" corporationid=\"1000144\" divisionid=\"24\" level=\"3\" locationid=\"60013378\" locator=\"false\"/>\r\n    <row agent=\"Aure Oune\" agentid=\"3018304\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"3\" locationid=\"60013528\" locator=\"false\"/>\r\n    <row agent=\"Andenoules Wysalan\" agentid=\"3018305\" agenttypeid=\"2\" corporationid=\"1000147\" divisionid=\"22\" level=\"3\" locationid=\"60013486\" locator=\"false\"/>\r\n    <row agent=\"Nedetim Doorgarekap\" agentid=\"3018307\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"3\" locationid=\"60013945\" locator=\"false\"/>\r\n    <row agent=\"Kuruta Ozuwara\" agentid=\"3018308\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"3\" locationid=\"60014236\" locator=\"false\"/>\r\n    <row agent=\"Bebbeta Oton\" agentid=\"3018309\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"3\" locationid=\"60014245\" locator=\"false\"/>\r\n    <row agent=\"Albeleeles Moedamia\" agentid=\"3018310\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"3\" locationid=\"60014197\" locator=\"false\"/>\r\n    <row agent=\"Havaira Voiras\" agentid=\"3018311\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"24\" level=\"3\" locationid=\"60014278\" locator=\"false\"/>\r\n    <row agent=\"Kessaha Memara\" agentid=\"3018312\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"22\" level=\"3\" locationid=\"60014278\" locator=\"false\"/>\r\n    <row agent=\"Orluin Harakold\" agentid=\"3018313\" agenttypeid=\"2\" corporationid=\"1000163\" divisionid=\"24\" level=\"3\" locationid=\"60014440\" locator=\"false\"/>\r\n    <row agent=\"Waras Soshuyeda\" agentid=\"3018314\" agenttypeid=\"2\" corporationid=\"1000023\" divisionid=\"24\" level=\"3\" locationid=\"60002521\" locator=\"false\"/>\r\n    <row agent=\"Hyrd Hisskela\" agentid=\"3018315\" agenttypeid=\"2\" corporationid=\"1000055\" divisionid=\"23\" level=\"3\" locationid=\"60005275\" locator=\"false\"/>\r\n    <row agent=\"Rassi Tendhyes\" agentid=\"3018316\" agenttypeid=\"2\" corporationid=\"1000083\" divisionid=\"22\" level=\"3\" locationid=\"60008263\" locator=\"false\"/>\r\n    <row agent=\"Arted Fehya\" agentid=\"3018317\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"3\" locationid=\"60012898\" locator=\"false\"/>\r\n    <row agent=\"Gahta Zahashir\" agentid=\"3018318\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"3\" locationid=\"60008449\" locator=\"false\"/>\r\n    <row agent=\"Gakkadik Egengulf\" agentid=\"3018319\" agenttypeid=\"2\" corporationid=\"1000052\" divisionid=\"22\" level=\"3\" locationid=\"60004969\" locator=\"false\"/>\r\n    <row agent=\"Muskinen Edara\" agentid=\"3018320\" agenttypeid=\"2\" corporationid=\"1000127\" divisionid=\"24\" level=\"3\" locationid=\"60012562\" locator=\"false\"/>\r\n    <row agent=\"Couneriese Dergoraert\" agentid=\"3018321\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"3\" locationid=\"60014290\" locator=\"false\"/>\r\n    <row agent=\"Wilaerdt Chalabrier\" agentid=\"3018322\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"3\" locationid=\"60014332\" locator=\"false\"/>\r\n    <row agent=\"Ankit Telora\" agentid=\"3018323\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"3\" locationid=\"60014194\" locator=\"false\"/>\r\n    <row agent=\"Rpirmilfelbod Arnranher\" agentid=\"3018324\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"3\" locationid=\"60012166\" locator=\"false\"/>\r\n    <row agent=\"Mahaz Iaokin\" agentid=\"3018325\" agenttypeid=\"2\" corporationid=\"1000065\" divisionid=\"23\" level=\"3\" locationid=\"60006451\" locator=\"false\"/>\r\n    <row agent=\"Idin Abo\" agentid=\"3018326\" agenttypeid=\"2\" corporationid=\"1000162\" divisionid=\"24\" level=\"3\" locationid=\"60014329\" locator=\"false\"/>\r\n    <row agent=\"Phoren Amalah\" agentid=\"3018327\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"3\" locationid=\"60014266\" locator=\"false\"/>\r\n    <row agent=\"Saiserlise Fradalbin\" agentid=\"3018328\" agenttypeid=\"2\" corporationid=\"1000108\" divisionid=\"24\" level=\"3\" locationid=\"60010849\" locator=\"false\"/>\r\n    <row agent=\"Peladi Rorafi\" agentid=\"3018329\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"3\" locationid=\"60014656\" locator=\"false\"/>\r\n    <row agent=\"Daredard Atrald\" agentid=\"3018330\" agenttypeid=\"2\" corporationid=\"1000136\" divisionid=\"24\" level=\"3\" locationid=\"60012868\" locator=\"false\"/>\r\n    <row agent=\"Doi Codolle\" agentid=\"3018331\" agenttypeid=\"2\" corporationid=\"1000107\" divisionid=\"24\" level=\"3\" locationid=\"60010693\" locator=\"false\"/>\r\n    <row agent=\"Frarilsolf Klaevik\" agentid=\"3018332\" agenttypeid=\"2\" corporationid=\"1000160\" divisionid=\"22\" level=\"3\" locationid=\"60014089\" locator=\"false\"/>\r\n    <row agent=\"Oriainekas Oishanen\" agentid=\"3018333\" agenttypeid=\"2\" corporationid=\"1000161\" divisionid=\"23\" level=\"3\" locationid=\"60014191\" locator=\"false\"/>\r\n    <row agent=\"Erdiellan Avaymet\" agentid=\"3018334\" agenttypeid=\"2\" corporationid=\"1000113\" divisionid=\"22\" level=\"3\" locationid=\"60011437\" locator=\"false\"/>\r\n    <row agent=\"Leckerot Scheravele\" agentid=\"3018335\" agenttypeid=\"2\" corporationid=\"1000104\" divisionid=\"22\" level=\"3\" locationid=\"60010402\" locator=\"false\"/>\r\n    <row agent=\"Akhsohar Hanikoud\" agentid=\"3018336\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"3\" locationid=\"60013987\" locator=\"false\"/>\r\n    <row agent=\"Thazhga Nafomeh\" agentid=\"3018337\" agenttypeid=\"2\" corporationid=\"1000166\" divisionid=\"22\" level=\"3\" locationid=\"60014635\" locator=\"false\"/>\r\n    <row agent=\"Hansu Turu\" agentid=\"3018343\" agenttypeid=\"8\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001825\" locator=\"false\"/>\r\n    <row agent=\"Retin Ariato\" agentid=\"3018344\" agenttypeid=\"8\" corporationid=\"1000011\" divisionid=\"24\" level=\"2\" locationid=\"60001246\" locator=\"false\"/>\r\n    <row agent=\"Tekirye Awazhen\" agentid=\"3018345\" agenttypeid=\"8\" corporationid=\"1000036\" divisionid=\"24\" level=\"3\" locationid=\"60003934\" locator=\"false\"/>\r\n    <row agent=\"Yru Hatamei\" agentid=\"3018346\" agenttypeid=\"8\" corporationid=\"1000037\" divisionid=\"24\" level=\"3\" locationid=\"60003940\" locator=\"false\"/>\r\n    <row agent=\"Ryuki Sakkaro\" agentid=\"3018347\" agenttypeid=\"8\" corporationid=\"1000003\" divisionid=\"22\" level=\"1\" locationid=\"60000274\" locator=\"false\"/>\r\n    <row agent=\"Hota Makachi\" agentid=\"3018348\" agenttypeid=\"8\" corporationid=\"1000006\" divisionid=\"23\" level=\"2\" locationid=\"60000610\" locator=\"false\"/>\r\n    <row agent=\"Ukanno Mottoya\" agentid=\"3018349\" agenttypeid=\"8\" corporationid=\"1000031\" divisionid=\"24\" level=\"1\" locationid=\"60003334\" locator=\"false\"/>\r\n    <row agent=\"Istei Poyri\" agentid=\"3018350\" agenttypeid=\"8\" corporationid=\"1000017\" divisionid=\"24\" level=\"2\" locationid=\"60001825\" locator=\"false\"/>\r\n    <row agent=\"Kusan Niemenen\" agentid=\"3018351\" agenttypeid=\"8\" corporationid=\"1000007\" divisionid=\"23\" level=\"1\" locationid=\"60000646\" locator=\"false\"/>\r\n    <row agent=\"Sokei Kirku\" agentid=\"3018352\" agenttypeid=\"8\" corporationid=\"1000004\" divisionid=\"22\" level=\"2\" locationid=\"60000310\" locator=\"false\"/>\r\n    <row agent=\"Oniya Arkimo\" agentid=\"3018353\" agenttypeid=\"8\" corporationid=\"1000020\" divisionid=\"24\" level=\"2\" locationid=\"60002245\" locator=\"false\"/>\r\n    <row agent=\"Tadaku Riutta\" agentid=\"3018354\" agenttypeid=\"8\" corporationid=\"1000127\" divisionid=\"24\" level=\"3\" locationid=\"60012556\" locator=\"false\"/>\r\n    <row agent=\"Rauta Taihti\" agentid=\"3018355\" agenttypeid=\"8\" corporationid=\"1000020\" divisionid=\"24\" level=\"3\" locationid=\"60002245\" locator=\"false\"/>\r\n    <row agent=\"Matani Jitainen\" agentid=\"3018357\" agenttypeid=\"8\" corporationid=\"1000020\" divisionid=\"22\" level=\"1\" locationid=\"60002245\" locator=\"false\"/>\r\n    <row agent=\"Kaiya Tuuri\" agentid=\"3018358\" agenttypeid=\"8\" corporationid=\"1000037\" divisionid=\"24\" level=\"2\" locationid=\"60003940\" locator=\"false\"/>\r\n    <row agent=\"Midoki Urigamu\" agentid=\"3018359\" agenttypeid=\"8\" corporationid=\"1000022\" divisionid=\"22\" level=\"3\" locationid=\"60002368\" locator=\"false\"/>\r\n    <row agent=\"Tenu Sayto\" agentid=\"3018360\" agenttypeid=\"8\" corporationid=\"1000003\" divisionid=\"22\" level=\"3\" locationid=\"60000274\" locator=\"false\"/>\r\n    <row agent=\"Raidon Setala\" agentid=\"3018361\" agenttypeid=\"8\" corporationid=\"1000031\" divisionid=\"24\" level=\"2\" locationid=\"60003334\" locator=\"false\"/>\r\n    <row agent=\"Mikaio Hekkiren\" agentid=\"3018362\" agenttypeid=\"8\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001825\" locator=\"false\"/>\r\n    <row agent=\"Daitsu Ikonen\" agentid=\"3018363\" agenttypeid=\"8\" corporationid=\"1000019\" divisionid=\"22\" level=\"2\" locationid=\"60002065\" locator=\"false\"/>\r\n    <row agent=\"Ikimara Hochi\" agentid=\"3018364\" agenttypeid=\"8\" corporationid=\"1000029\" divisionid=\"22\" level=\"3\" locationid=\"60003184\" locator=\"false\"/>\r\n    <row agent=\"Ratan Saturi\" agentid=\"3018365\" agenttypeid=\"8\" corporationid=\"1000003\" divisionid=\"22\" level=\"4\" locationid=\"60000274\" locator=\"false\"/>\r\n    <row agent=\"Akira Helkelen\" agentid=\"3018366\" agenttypeid=\"8\" corporationid=\"1000016\" divisionid=\"22\" level=\"3\" locationid=\"60001765\" locator=\"false\"/>\r\n    <row agent=\"Mika Etsuya\" agentid=\"3018367\" agenttypeid=\"8\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003754\" locator=\"false\"/>\r\n    <row agent=\"Krakan Rost\" agentid=\"3018368\" agenttypeid=\"8\" corporationid=\"1000124\" divisionid=\"24\" level=\"3\" locationid=\"60012211\" locator=\"false\"/>\r\n    <row agent=\"Tida Aikato\" agentid=\"3018369\" agenttypeid=\"8\" corporationid=\"1000002\" divisionid=\"24\" level=\"1\" locationid=\"60000004\" locator=\"false\"/>\r\n    <row agent=\"Anou Dechien\" agentid=\"3018370\" agenttypeid=\"8\" corporationid=\"1000124\" divisionid=\"24\" level=\"2\" locationid=\"60012211\" locator=\"false\"/>\r\n    <row agent=\"Skurk Tekkurs\" agentid=\"3018371\" agenttypeid=\"8\" corporationid=\"1000124\" divisionid=\"24\" level=\"2\" locationid=\"60012211\" locator=\"false\"/>\r\n    <row agent=\"Jali Tanaka\" agentid=\"3018372\" agenttypeid=\"8\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60003754\" locator=\"false\"/>\r\n    <row agent=\"Manu Anekoji\" agentid=\"3018373\" agenttypeid=\"8\" corporationid=\"1000009\" divisionid=\"23\" level=\"3\" locationid=\"60000856\" locator=\"false\"/>\r\n    <row agent=\"Aisha Gojivi\" agentid=\"3018374\" agenttypeid=\"8\" corporationid=\"1000025\" divisionid=\"24\" level=\"3\" locationid=\"60002734\" locator=\"false\"/>\r\n    <row agent=\"Mirmon Gorgoz\" agentid=\"3018375\" agenttypeid=\"8\" corporationid=\"1000062\" divisionid=\"22\" level=\"2\" locationid=\"60006040\" locator=\"false\"/>\r\n    <row agent=\"Siringwe Opainen\" agentid=\"3018376\" agenttypeid=\"8\" corporationid=\"1000127\" divisionid=\"24\" level=\"3\" locationid=\"60012556\" locator=\"false\"/>\r\n    <row agent=\"Yoko Pihrava\" agentid=\"3018377\" agenttypeid=\"8\" corporationid=\"1000025\" divisionid=\"23\" level=\"1\" locationid=\"60002734\" locator=\"false\"/>\r\n    <row agent=\"Helmi Nakamuta\" agentid=\"3018378\" agenttypeid=\"8\" corporationid=\"1000009\" divisionid=\"22\" level=\"2\" locationid=\"60000856\" locator=\"false\"/>\r\n    <row agent=\"Yka Katori\" agentid=\"3018379\" agenttypeid=\"8\" corporationid=\"1000127\" divisionid=\"24\" level=\"3\" locationid=\"60012556\" locator=\"false\"/>\r\n    <row agent=\"Kielo Suruki\" agentid=\"3018380\" agenttypeid=\"8\" corporationid=\"1000037\" divisionid=\"24\" level=\"4\" locationid=\"60003940\" locator=\"false\"/>\r\n    <row agent=\"Maro Yama\" agentid=\"3018381\" agenttypeid=\"8\" corporationid=\"1000035\" divisionid=\"24\" level=\"3\" locationid=\"60003754\" locator=\"false\"/>\r\n    <row agent=\"Seti Adakita\" agentid=\"3018382\" agenttypeid=\"8\" corporationid=\"1000017\" divisionid=\"24\" level=\"4\" locationid=\"60001825\" locator=\"false\"/>\r\n    <row agent=\"Tapio Nobayashi\" agentid=\"3018383\" agenttypeid=\"8\" corporationid=\"1000009\" divisionid=\"23\" level=\"2\" locationid=\"60000856\" locator=\"false\"/>\r\n    <row agent=\"Junko Karpela\" agentid=\"3018384\" agenttypeid=\"8\" corporationid=\"1000127\" divisionid=\"24\" level=\"3\" locationid=\"60012556\" locator=\"false\"/>\r\n    <row agent=\"Tatsuo Rahkamo\" agentid=\"3018385\" agenttypeid=\"8\" corporationid=\"1000141\" divisionid=\"22\" level=\"1\" locationid=\"60013261\" locator=\"false\"/>\r\n    <row agent=\"Rie Nissiken\" agentid=\"3018386\" agenttypeid=\"8\" corporationid=\"1000127\" divisionid=\"22\" level=\"2\" locationid=\"60012556\" locator=\"false\"/>\r\n    <row agent=\"Arato Sirkya\" agentid=\"3018387\" agenttypeid=\"8\" corporationid=\"1000127\" divisionid=\"24\" level=\"3\" locationid=\"60012556\" locator=\"false\"/>\r\n    <row agent=\"Chichiro Rati\" agentid=\"3018388\" agenttypeid=\"8\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60003754\" locator=\"false\"/>\r\n    <row agent=\"Yochuko Eskaila\" agentid=\"3018389\" agenttypeid=\"8\" corporationid=\"1000036\" divisionid=\"22\" level=\"4\" locationid=\"60003934\" locator=\"false\"/>\r\n    <row agent=\"Jilhya Aurio\" agentid=\"3018390\" agenttypeid=\"8\" corporationid=\"1000008\" divisionid=\"23\" level=\"3\" locationid=\"60000766\" locator=\"false\"/>\r\n    <row agent=\"Fumiku Viljanen\" agentid=\"3018391\" agenttypeid=\"8\" corporationid=\"1000045\" divisionid=\"22\" level=\"2\" locationid=\"60004450\" locator=\"false\"/>\r\n    <row agent=\"Kochi Utrainen\" agentid=\"3018392\" agenttypeid=\"8\" corporationid=\"1000032\" divisionid=\"22\" level=\"3\" locationid=\"60003394\" locator=\"false\"/>\r\n    <row agent=\"Kazue Otalen\" agentid=\"3018393\" agenttypeid=\"8\" corporationid=\"1000127\" divisionid=\"24\" level=\"3\" locationid=\"60012556\" locator=\"false\"/>\r\n    <row agent=\"Goru Nikainen\" agentid=\"3018394\" agenttypeid=\"8\" corporationid=\"1000017\" divisionid=\"22\" level=\"3\" locationid=\"60001825\" locator=\"false\"/>\r\n    <row agent=\"Tamoko Raytio\" agentid=\"3018395\" agenttypeid=\"8\" corporationid=\"1000020\" divisionid=\"22\" level=\"3\" locationid=\"60002245\" locator=\"false\"/>\r\n    <row agent=\"Hitami Magye\" agentid=\"3018396\" agenttypeid=\"8\" corporationid=\"1000032\" divisionid=\"22\" level=\"3\" locationid=\"60003394\" locator=\"false\"/>\r\n    <row agent=\"Chiku Koronen\" agentid=\"3018397\" agenttypeid=\"8\" corporationid=\"1000034\" divisionid=\"24\" level=\"4\" locationid=\"60003724\" locator=\"false\"/>\r\n    <row agent=\"Hotaru Ahti\" agentid=\"3018398\" agenttypeid=\"8\" corporationid=\"1000006\" divisionid=\"23\" level=\"4\" locationid=\"60000610\" locator=\"false\"/>\r\n    <row agent=\"Arvo Watanen\" agentid=\"3018399\" agenttypeid=\"8\" corporationid=\"1000045\" divisionid=\"22\" level=\"3\" locationid=\"60004450\" locator=\"false\"/>\r\n    <row agent=\"Mintu Oshima\" agentid=\"3018400\" agenttypeid=\"8\" corporationid=\"1000018\" divisionid=\"22\" level=\"3\" locationid=\"60002005\" locator=\"false\"/>\r\n    <row agent=\"Varma Fujimo\" agentid=\"3018401\" agenttypeid=\"8\" corporationid=\"1000020\" divisionid=\"22\" level=\"4\" locationid=\"60002245\" locator=\"false\"/>\r\n    <row agent=\"Taru Kubona\" agentid=\"3018402\" agenttypeid=\"8\" corporationid=\"1000032\" divisionid=\"24\" level=\"1\" locationid=\"60003394\" locator=\"false\"/>\r\n    <row agent=\"Noru Kanerva\" agentid=\"3018403\" agenttypeid=\"8\" corporationid=\"1000018\" divisionid=\"22\" level=\"2\" locationid=\"60002005\" locator=\"false\"/>\r\n    <row agent=\"Eteri Tazaki\" agentid=\"3018404\" agenttypeid=\"8\" corporationid=\"1000037\" divisionid=\"24\" level=\"3\" locationid=\"60003940\" locator=\"false\"/>\r\n    <row agent=\"Ryoke Aura\" agentid=\"3018405\" agenttypeid=\"8\" corporationid=\"1000023\" divisionid=\"22\" level=\"3\" locationid=\"60002428\" locator=\"false\"/>\r\n    <row agent=\"Satu Sagimoro\" agentid=\"3018406\" agenttypeid=\"8\" corporationid=\"1000141\" divisionid=\"22\" level=\"4\" locationid=\"60013261\" locator=\"false\"/>\r\n    <row agent=\"Elmu Wakomi\" agentid=\"3018407\" agenttypeid=\"8\" corporationid=\"1000036\" divisionid=\"24\" level=\"4\" locationid=\"60003934\" locator=\"false\"/>\r\n    <row agent=\"Zabonn Michi\" agentid=\"3018408\" agenttypeid=\"8\" corporationid=\"1000008\" divisionid=\"23\" level=\"4\" locationid=\"60000766\" locator=\"false\"/>\r\n    <row agent=\"Them Burkur\" agentid=\"3018409\" agenttypeid=\"8\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005053\" locator=\"false\"/>\r\n    <row agent=\"Kraimir Mork\" agentid=\"3018410\" agenttypeid=\"8\" corporationid=\"1000062\" divisionid=\"22\" level=\"1\" locationid=\"60006040\" locator=\"false\"/>\r\n    <row agent=\"Dalkar Kersos\" agentid=\"3018411\" agenttypeid=\"8\" corporationid=\"1000047\" divisionid=\"24\" level=\"3\" locationid=\"60004516\" locator=\"false\"/>\r\n    <row agent=\"Penda Rakken\" agentid=\"3018412\" agenttypeid=\"8\" corporationid=\"1000050\" divisionid=\"24\" level=\"2\" locationid=\"60004624\" locator=\"false\"/>\r\n    <row agent=\"Tzumi Pokkolen\" agentid=\"3018413\" agenttypeid=\"8\" corporationid=\"1000007\" divisionid=\"23\" level=\"1\" locationid=\"60000646\" locator=\"false\"/>\r\n    <row agent=\"Mitsu Hekken\" agentid=\"3018414\" agenttypeid=\"8\" corporationid=\"1000025\" divisionid=\"24\" level=\"2\" locationid=\"60002734\" locator=\"false\"/>\r\n    <row agent=\"Sinogor Nitrut\" agentid=\"3018415\" agenttypeid=\"8\" corporationid=\"1000051\" divisionid=\"24\" level=\"2\" locationid=\"60004744\" locator=\"false\"/>\r\n    <row agent=\"Vlas Takson\" agentid=\"3018416\" agenttypeid=\"8\" corporationid=\"1000053\" divisionid=\"22\" level=\"2\" locationid=\"60005044\" locator=\"false\"/>\r\n    <row agent=\"Beris Nitrus\" agentid=\"3018417\" agenttypeid=\"8\" corporationid=\"1000139\" divisionid=\"24\" level=\"1\" locationid=\"60013075\" locator=\"false\"/>\r\n    <row agent=\"Godun Sakt\" agentid=\"3018418\" agenttypeid=\"8\" corporationid=\"1000058\" divisionid=\"22\" level=\"3\" locationid=\"60005719\" locator=\"false\"/>\r\n    <row agent=\"Misnik Sarbaert\" agentid=\"3018419\" agenttypeid=\"8\" corporationid=\"1000160\" divisionid=\"22\" level=\"3\" locationid=\"60014059\" locator=\"false\"/>\r\n    <row agent=\"Hinrich Tekrawhol\" agentid=\"3018420\" agenttypeid=\"8\" corporationid=\"1000160\" divisionid=\"23\" level=\"3\" locationid=\"60014059\" locator=\"false\"/>\r\n    <row agent=\"Temer Rugaert\" agentid=\"3018421\" agenttypeid=\"8\" corporationid=\"1000046\" divisionid=\"24\" level=\"2\" locationid=\"60004480\" locator=\"false\"/>\r\n    <row agent=\"Schebach Korten\" agentid=\"3018422\" agenttypeid=\"8\" corporationid=\"1000046\" divisionid=\"24\" level=\"3\" locationid=\"60004480\" locator=\"false\"/>\r\n    <row agent=\"Dagras Kutill\" agentid=\"3018423\" agenttypeid=\"8\" corporationid=\"1000046\" divisionid=\"24\" level=\"3\" locationid=\"60004480\" locator=\"false\"/>\r\n    <row agent=\"Eutor Jogmundt\" agentid=\"3018424\" agenttypeid=\"8\" corporationid=\"1000055\" divisionid=\"23\" level=\"2\" locationid=\"60005233\" locator=\"false\"/>\r\n    <row agent=\"Krak Hakkars\" agentid=\"3018425\" agenttypeid=\"8\" corporationid=\"1000051\" divisionid=\"24\" level=\"3\" locationid=\"60004744\" locator=\"false\"/>\r\n    <row agent=\"Poreg Murchor\" agentid=\"3018426\" agenttypeid=\"8\" corporationid=\"1000051\" divisionid=\"24\" level=\"4\" locationid=\"60004744\" locator=\"false\"/>\r\n    <row agent=\"Abotur Kverkinn\" agentid=\"3018427\" agenttypeid=\"8\" corporationid=\"1000048\" divisionid=\"24\" level=\"2\" locationid=\"60004552\" locator=\"false\"/>\r\n    <row agent=\"Sungur Tyrfin\" agentid=\"3018428\" agenttypeid=\"8\" corporationid=\"1000057\" divisionid=\"22\" level=\"3\" locationid=\"60005683\" locator=\"false\"/>\r\n    <row agent=\"Ekdit Spitek\" agentid=\"3018429\" agenttypeid=\"8\" corporationid=\"1000053\" divisionid=\"22\" level=\"2\" locationid=\"60005044\" locator=\"false\"/>\r\n    <row agent=\"Robikk Gurmurkur\" agentid=\"3018430\" agenttypeid=\"8\" corporationid=\"1000062\" divisionid=\"22\" level=\"3\" locationid=\"60006040\" locator=\"false\"/>\r\n    <row agent=\"Keita Stokk\" agentid=\"3018431\" agenttypeid=\"8\" corporationid=\"1000047\" divisionid=\"24\" level=\"3\" locationid=\"60004516\" locator=\"false\"/>\r\n    <row agent=\"Fara Bokh\" agentid=\"3018432\" agenttypeid=\"8\" corporationid=\"1000061\" divisionid=\"22\" level=\"1\" locationid=\"60005770\" locator=\"false\"/>\r\n    <row agent=\"Nassor Tromkurt\" agentid=\"3018433\" agenttypeid=\"8\" corporationid=\"1000136\" divisionid=\"24\" level=\"4\" locationid=\"60012910\" locator=\"false\"/>\r\n    <row agent=\"Tarak Horkund\" agentid=\"3018434\" agenttypeid=\"8\" corporationid=\"1000049\" divisionid=\"24\" level=\"3\" locationid=\"60004588\" locator=\"false\"/>\r\n    <row agent=\"Sifor Patrenn\" agentid=\"3018435\" agenttypeid=\"8\" corporationid=\"1000159\" divisionid=\"22\" level=\"3\" locationid=\"60014056\" locator=\"false\"/>\r\n    <row agent=\"Ramakell Tikrest\" agentid=\"3018436\" agenttypeid=\"8\" corporationid=\"1000048\" divisionid=\"24\" level=\"3\" locationid=\"60004552\" locator=\"false\"/>\r\n    <row agent=\"Rozor Mothrus\" agentid=\"3018437\" agenttypeid=\"8\" corporationid=\"1000049\" divisionid=\"24\" level=\"3\" locationid=\"60005683\" locator=\"false\"/>\r\n    <row agent=\"Akraun Maertigor\" agentid=\"3018438\" agenttypeid=\"8\" corporationid=\"1000059\" divisionid=\"24\" level=\"2\" locationid=\"60005725\" locator=\"false\"/>\r\n    <row agent=\"Mwaku Ristiger\" agentid=\"3018439\" agenttypeid=\"8\" corporationid=\"1000050\" divisionid=\"24\" level=\"3\" locationid=\"60004624\" locator=\"false\"/>\r\n    <row agent=\"Bukar Robaerger\" agentid=\"3018440\" agenttypeid=\"8\" corporationid=\"1000049\" divisionid=\"22\" level=\"3\" locationid=\"60004588\" locator=\"false\"/>\r\n    <row agent=\"Fynnir Torsont\" agentid=\"3018441\" agenttypeid=\"8\" corporationid=\"1000130\" divisionid=\"24\" level=\"3\" locationid=\"60012595\" locator=\"false\"/>\r\n    <row agent=\"Nabur Verkort\" agentid=\"3018442\" agenttypeid=\"8\" corporationid=\"1000049\" divisionid=\"24\" level=\"3\" locationid=\"60004588\" locator=\"false\"/>\r\n    <row agent=\"Mattheu Rochet\" agentid=\"3018443\" agenttypeid=\"8\" corporationid=\"1000114\" divisionid=\"22\" level=\"2\" locationid=\"60011506\" locator=\"false\"/>\r\n    <row agent=\"Nina Darrchien\" agentid=\"3018444\" agenttypeid=\"8\" corporationid=\"1000159\" divisionid=\"22\" level=\"2\" locationid=\"60014056\" locator=\"false\"/>\r\n    <row agent=\"Tauma Rikkiryo\" agentid=\"3018445\" agenttypeid=\"8\" corporationid=\"1000032\" divisionid=\"24\" level=\"1\" locationid=\"60003394\" locator=\"false\"/>\r\n    <row agent=\"Moma Hatram\" agentid=\"3018446\" agenttypeid=\"8\" corporationid=\"1000071\" divisionid=\"24\" level=\"3\" locationid=\"60006943\" locator=\"false\"/>\r\n    <row agent=\"Remy Ouche\" agentid=\"3018447\" agenttypeid=\"8\" corporationid=\"1000058\" divisionid=\"22\" level=\"2\" locationid=\"60005719\" locator=\"false\"/>\r\n    <row agent=\"Suky Karkinen\" agentid=\"3018448\" agenttypeid=\"8\" corporationid=\"1000034\" divisionid=\"24\" level=\"3\" locationid=\"60003724\" locator=\"false\"/>\r\n    <row agent=\"Madri Asshala\" agentid=\"3018449\" agenttypeid=\"8\" corporationid=\"1000074\" divisionid=\"24\" level=\"4\" locationid=\"60007243\" locator=\"false\"/>\r\n    <row agent=\"Aradin Ucham\" agentid=\"3018450\" agenttypeid=\"8\" corporationid=\"1000082\" divisionid=\"24\" level=\"3\" locationid=\"60008128\" locator=\"false\"/>\r\n    <row agent=\"Nafrid Sharum\" agentid=\"3018451\" agenttypeid=\"8\" corporationid=\"1000091\" divisionid=\"24\" level=\"2\" locationid=\"60008758\" locator=\"false\"/>\r\n    <row agent=\"Souze Kolkore\" agentid=\"3018452\" agenttypeid=\"8\" corporationid=\"1000019\" divisionid=\"23\" level=\"4\" locationid=\"60002065\" locator=\"false\"/>\r\n    <row agent=\"Mazed Karadom\" agentid=\"3018453\" agenttypeid=\"8\" corporationid=\"1000074\" divisionid=\"22\" level=\"4\" locationid=\"60007243\" locator=\"false\"/>\r\n    <row agent=\"Damos Ossiam\" agentid=\"3018454\" agenttypeid=\"8\" corporationid=\"1000089\" divisionid=\"22\" level=\"4\" locationid=\"60008686\" locator=\"false\"/>\r\n    <row agent=\"Beduim Quereg\" agentid=\"3018455\" agenttypeid=\"8\" corporationid=\"1000088\" divisionid=\"24\" level=\"3\" locationid=\"60008650\" locator=\"false\"/>\r\n    <row agent=\"Sydri Namian\" agentid=\"3018456\" agenttypeid=\"8\" corporationid=\"1000064\" divisionid=\"23\" level=\"4\" locationid=\"60006220\" locator=\"false\"/>\r\n    <row agent=\"Baal Zargor\" agentid=\"3018457\" agenttypeid=\"8\" corporationid=\"1000084\" divisionid=\"22\" level=\"4\" locationid=\"60008368\" locator=\"false\"/>\r\n    <row agent=\"Akemon Tolan\" agentid=\"3018458\" agenttypeid=\"8\" corporationid=\"1000084\" divisionid=\"22\" level=\"4\" locationid=\"60008368\" locator=\"false\"/>\r\n    <row agent=\"Barou Lardoss\" agentid=\"3018459\" agenttypeid=\"8\" corporationid=\"1000097\" divisionid=\"23\" level=\"4\" locationid=\"60009430\" locator=\"false\"/>\r\n    <row agent=\"Karo Zulak\" agentid=\"3018460\" agenttypeid=\"8\" corporationid=\"1000084\" divisionid=\"24\" level=\"4\" locationid=\"60008368\" locator=\"false\"/>\r\n    <row agent=\"Makra Ozman\" agentid=\"3018461\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"3\" locationid=\"60014944\" locator=\"false\"/>\r\n    <row agent=\"Ethral Perchevan\" agentid=\"3018462\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"3\" locationid=\"60014946\" locator=\"false\"/>\r\n    <row agent=\"Aram Ishtan\" agentid=\"3018463\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"4\" locationid=\"60014950\" locator=\"false\"/>\r\n    <row agent=\"Nathrim Kazar\" agentid=\"3018464\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"1\" locationid=\"60014943\" locator=\"false\"/>\r\n    <row agent=\"Korimor Rakk\" agentid=\"3018465\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"1\" locationid=\"60014942\" locator=\"false\"/>\r\n    <row agent=\"Melam Sarakim\" agentid=\"3018466\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"2\" locationid=\"60014949\" locator=\"false\"/>\r\n    <row agent=\"Sedir Drama\" agentid=\"3018467\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"3\" locationid=\"60014940\" locator=\"false\"/>\r\n    <row agent=\"Hadim Qafir\" agentid=\"3018468\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"22\" level=\"1\" locationid=\"60014941\" locator=\"false\"/>\r\n    <row agent=\"Turem Zidirre\" agentid=\"3018469\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"22\" level=\"1\" locationid=\"60014947\" locator=\"false\"/>\r\n    <row agent=\"Ferid Domron\" agentid=\"3018470\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"22\" level=\"2\" locationid=\"60014951\" locator=\"false\"/>\r\n    <row agent=\"Odrus Yakari\" agentid=\"3018471\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"22\" level=\"4\" locationid=\"60014948\" locator=\"false\"/>\r\n    <row agent=\"Ryhad Sethrim\" agentid=\"3018472\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"1\" locationid=\"60014945\" locator=\"false\"/>\r\n    <row agent=\"Lagrossa Mytil\" agentid=\"3018473\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"3\" locationid=\"60014942\" locator=\"false\"/>\r\n    <row agent=\"Sakem Komal\" agentid=\"3018474\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"4\" locationid=\"60014952\" locator=\"false\"/>\r\n    <row agent=\"Hazli Tamarom\" agentid=\"3018475\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"1\" locationid=\"60014948\" locator=\"false\"/>\r\n    <row agent=\"Querik Dafoz\" agentid=\"3018476\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"2\" locationid=\"60014951\" locator=\"false\"/>\r\n    <row agent=\"Jalar Berabal\" agentid=\"3018477\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"3\" locationid=\"60014944\" locator=\"false\"/>\r\n    <row agent=\"Sylus Sitranik\" agentid=\"3018478\" agenttypeid=\"2\" corporationid=\"1000134\" divisionid=\"24\" level=\"4\" locationid=\"60014941\" locator=\"false\"/>\r\n    <row agent=\"Jippon Frain\" agentid=\"3018479\" agenttypeid=\"8\" corporationid=\"1000046\" divisionid=\"24\" level=\"4\" locationid=\"60004480\" locator=\"false\"/>\r\n    <row agent=\"Hakno Lekan\" agentid=\"3018480\" agenttypeid=\"8\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004744\" locator=\"false\"/>\r\n    <row agent=\"Apheta Zenakon\" agentid=\"3018481\" agenttypeid=\"8\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004744\" locator=\"false\"/>\r\n    <row agent=\"Jachael Menson\" agentid=\"3018482\" agenttypeid=\"8\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004744\" locator=\"false\"/>\r\n    <row agent=\"Jaak Rozake\" agentid=\"3018485\" agenttypeid=\"8\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011734\" locator=\"false\"/>\r\n    <row agent=\"Beteux Maron\" agentid=\"3018486\" agenttypeid=\"8\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011734\" locator=\"false\"/>\r\n    <row agent=\"Wenda Lamort\" agentid=\"3018487\" agenttypeid=\"8\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011734\" locator=\"false\"/>\r\n    <row agent=\"Demi Lazerus\" agentid=\"3018488\" agenttypeid=\"8\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008368\" locator=\"false\"/>\r\n    <row agent=\"Nikmar Jyran\" agentid=\"3018489\" agenttypeid=\"8\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008368\" locator=\"false\"/>\r\n    <row agent=\"Taspar Zolankor\" agentid=\"3018490\" agenttypeid=\"8\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008368\" locator=\"false\"/>\r\n    <row agent=\"Vaktan Sido\" agentid=\"3018491\" agenttypeid=\"8\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003754\" locator=\"false\"/>\r\n    <row agent=\"Rokuza Taman\" agentid=\"3018492\" agenttypeid=\"8\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003754\" locator=\"false\"/>\r\n    <row agent=\"Peeta Waikon\" agentid=\"3018493\" agenttypeid=\"8\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003754\" locator=\"false\"/>\r\n    <row agent=\"Kaiko Maina\" agentid=\"3018494\" agenttypeid=\"8\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60003754\" locator=\"false\"/>\r\n    <row agent=\"Emma Tharkin\" agentid=\"3018495\" agenttypeid=\"8\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60003754\" locator=\"false\"/>\r\n    <row agent=\"Zoun Makui\" agentid=\"3018496\" agenttypeid=\"8\" corporationid=\"1000031\" divisionid=\"24\" level=\"4\" locationid=\"60003334\" locator=\"false\"/>\r\n    <row agent=\"Mutama Czeik\" agentid=\"3018497\" agenttypeid=\"8\" corporationid=\"1000051\" divisionid=\"24\" level=\"4\" locationid=\"60004744\" locator=\"false\"/>\r\n    <row agent=\"Thora Norn\" agentid=\"3018498\" agenttypeid=\"8\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004744\" locator=\"false\"/>\r\n    <row agent=\"Makor Desto\" agentid=\"3018499\" agenttypeid=\"8\" corporationid=\"1000050\" divisionid=\"24\" level=\"4\" locationid=\"60004624\" locator=\"false\"/>\r\n    <row agent=\"Thora Desto\" agentid=\"3018500\" agenttypeid=\"8\" corporationid=\"1000051\" divisionid=\"24\" level=\"4\" locationid=\"60004744\" locator=\"false\"/>\r\n    <row agent=\"Jordan Usquen\" agentid=\"3018501\" agenttypeid=\"8\" corporationid=\"1000120\" divisionid=\"24\" level=\"4\" locationid=\"60011734\" locator=\"false\"/>\r\n    <row agent=\"Babalu Wrezka\" agentid=\"3018502\" agenttypeid=\"8\" corporationid=\"1000120\" divisionid=\"24\" level=\"4\" locationid=\"60011734\" locator=\"false\"/>\r\n    <row agent=\"Timmothy Sawyr\" agentid=\"3018503\" agenttypeid=\"8\" corporationid=\"1000117\" divisionid=\"24\" level=\"4\" locationid=\"60011602\" locator=\"false\"/>\r\n    <row agent=\"Mandor Neek\" agentid=\"3018504\" agenttypeid=\"8\" corporationid=\"1000084\" divisionid=\"24\" level=\"4\" locationid=\"60008368\" locator=\"false\"/>\r\n    <row agent=\"Jeeta Neek\" agentid=\"3018505\" agenttypeid=\"8\" corporationid=\"1000084\" divisionid=\"24\" level=\"4\" locationid=\"60008368\" locator=\"false\"/>\r\n    <row agent=\"Zaestra Kuramor\" agentid=\"3018506\" agenttypeid=\"8\" corporationid=\"1000086\" divisionid=\"24\" level=\"4\" locationid=\"60008494\" locator=\"false\"/>\r\n    <row agent=\"Piren Schuman\" agentid=\"3018507\" agenttypeid=\"8\" corporationid=\"1000086\" divisionid=\"24\" level=\"1\" locationid=\"60008494\" locator=\"false\"/>\r\n    <row agent=\"Skami Zarton\" agentid=\"3018508\" agenttypeid=\"8\" corporationid=\"1000124\" divisionid=\"24\" level=\"5\" locationid=\"60012211\" locator=\"false\"/>\r\n    <row agent=\"Numa Fashit\" agentid=\"3018509\" agenttypeid=\"8\" corporationid=\"1000124\" divisionid=\"24\" level=\"5\" locationid=\"60012211\" locator=\"false\"/>\r\n    <row agent=\"Kardimo Menka\" agentid=\"3018510\" agenttypeid=\"8\" corporationid=\"1000138\" divisionid=\"24\" level=\"4\" locationid=\"60013069\" locator=\"false\"/>\r\n    <row agent=\"Pol Pat\" agentid=\"3018511\" agenttypeid=\"8\" corporationid=\"1000127\" divisionid=\"24\" level=\"4\" locationid=\"60012556\" locator=\"false\"/>\r\n    <row agent=\"Jakuzi Makar\" agentid=\"3018512\" agenttypeid=\"8\" corporationid=\"1000127\" divisionid=\"24\" level=\"4\" locationid=\"60012556\" locator=\"false\"/>\r\n    <row agent=\"Ippana Maltyr\" agentid=\"3018513\" agenttypeid=\"8\" corporationid=\"1000127\" divisionid=\"24\" level=\"4\" locationid=\"60012556\" locator=\"false\"/>\r\n    <row agent=\"Jaquon Jalibar\" agentid=\"3018514\" agenttypeid=\"8\" corporationid=\"1000157\" divisionid=\"24\" level=\"4\" locationid=\"60013993\" locator=\"false\"/>\r\n    <row agent=\"Luthetion Preque\" agentid=\"3018515\" agenttypeid=\"8\" corporationid=\"1000157\" divisionid=\"24\" level=\"4\" locationid=\"60013993\" locator=\"false\"/>\r\n    <row agent=\"Hara Lafleur\" agentid=\"3018516\" agenttypeid=\"8\" corporationid=\"1000157\" divisionid=\"24\" level=\"4\" locationid=\"60013993\" locator=\"false\"/>\r\n    <row agent=\"Miguel Maktar\" agentid=\"3018517\" agenttypeid=\"8\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014284\" locator=\"false\"/>\r\n    <row agent=\"Karhoum Ykta\" agentid=\"3018518\" agenttypeid=\"8\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014284\" locator=\"false\"/>\r\n    <row agent=\"Ophana Zett\" agentid=\"3018519\" agenttypeid=\"8\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014284\" locator=\"false\"/>\r\n    <row agent=\"Farak Kali\" agentid=\"3018520\" agenttypeid=\"8\" corporationid=\"1000134\" divisionid=\"24\" level=\"4\" locationid=\"60014943\" locator=\"false\"/>\r\n    <row agent=\"Unnaya Mafir\" agentid=\"3018521\" agenttypeid=\"8\" corporationid=\"1000134\" divisionid=\"24\" level=\"4\" locationid=\"60014943\" locator=\"false\"/>\r\n    <row agent=\"Sari Arkhi\" agentid=\"3018522\" agenttypeid=\"8\" corporationid=\"1000134\" divisionid=\"24\" level=\"4\" locationid=\"60014943\" locator=\"false\"/>\r\n    <row agent=\"Madibe Arnadi\" agentid=\"3018523\" agenttypeid=\"8\" corporationid=\"1000123\" divisionid=\"24\" level=\"4\" locationid=\"60012124\" locator=\"false\"/>\r\n    <row agent=\"Tori Aman\" agentid=\"3018524\" agenttypeid=\"8\" corporationid=\"1000156\" divisionid=\"24\" level=\"4\" locationid=\"60013933\" locator=\"false\"/>\r\n    <row agent=\"Hakkuna Baille\" agentid=\"3018525\" agenttypeid=\"8\" corporationid=\"1000129\" divisionid=\"24\" level=\"4\" locationid=\"60012583\" locator=\"false\"/>\r\n    <row agent=\"Teston Hrinz\" agentid=\"3018526\" agenttypeid=\"8\" corporationid=\"1000128\" divisionid=\"24\" level=\"4\" locationid=\"60012580\" locator=\"false\"/>\r\n    <row agent=\"Zaknar Cente\" agentid=\"3018527\" agenttypeid=\"8\" corporationid=\"1000146\" divisionid=\"24\" level=\"4\" locationid=\"60013405\" locator=\"false\"/>\r\n    <row agent=\"Bakkla Viftuin\" agentid=\"3018528\" agenttypeid=\"8\" corporationid=\"1000160\" divisionid=\"24\" level=\"4\" locationid=\"60014059\" locator=\"false\"/>\r\n    <row agent=\"Minas Iksan\" agentid=\"3018529\" agenttypeid=\"8\" corporationid=\"1000084\" divisionid=\"24\" level=\"4\" locationid=\"60008368\" locator=\"false\"/>\r\n    <row agent=\"Oggiin Kalda\" agentid=\"3018530\" agenttypeid=\"8\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005053\" locator=\"false\"/>\r\n    <row agent=\"Nuo Tuotura\" agentid=\"3018531\" agenttypeid=\"8\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60003754\" locator=\"false\"/>\r\n    <row agent=\"Zama Fedas\" agentid=\"3018532\" agenttypeid=\"8\" corporationid=\"1000156\" divisionid=\"24\" level=\"4\" locationid=\"60013933\" locator=\"false\"/>\r\n    <row agent=\"Nirt Kondur\" agentid=\"3018533\" agenttypeid=\"8\" corporationid=\"1000051\" divisionid=\"24\" level=\"4\" locationid=\"60004744\" locator=\"false\"/>\r\n    <row agent=\"Krard Wengalill\" agentid=\"3018534\" agenttypeid=\"8\" corporationid=\"1000123\" divisionid=\"24\" level=\"4\" locationid=\"60012124\" locator=\"false\"/>\r\n    <row agent=\"Ison Tiadala\" agentid=\"3018535\" agenttypeid=\"8\" corporationid=\"1000051\" divisionid=\"24\" level=\"4\" locationid=\"60004744\" locator=\"false\"/>\r\n    <row agent=\"Fassara Nazarut\" agentid=\"3018536\" agenttypeid=\"8\" corporationid=\"1000084\" divisionid=\"22\" level=\"4\" locationid=\"60008368\" locator=\"false\"/>\r\n    <row agent=\"Aville Ancare\" agentid=\"3018537\" agenttypeid=\"8\" corporationid=\"1000120\" divisionid=\"22\" level=\"4\" locationid=\"60011734\" locator=\"false\"/>\r\n    <row agent=\"Daemire Adamia\" agentid=\"3018538\" agenttypeid=\"8\" corporationid=\"1000129\" divisionid=\"24\" level=\"4\" locationid=\"60012583\" locator=\"false\"/>\r\n    <row agent=\"Wirdar Erazako\" agentid=\"3018539\" agenttypeid=\"8\" corporationid=\"1000051\" divisionid=\"22\" level=\"4\" locationid=\"60004744\" locator=\"false\"/>\r\n    <row agent=\"Jannegiers Estacan\" agentid=\"3018540\" agenttypeid=\"8\" corporationid=\"1000115\" divisionid=\"22\" level=\"1\" locationid=\"60011566\" locator=\"false\"/>\r\n    <row agent=\"Preaux Gallot\" agentid=\"3018541\" agenttypeid=\"8\" corporationid=\"1000115\" divisionid=\"22\" level=\"2\" locationid=\"60011566\" locator=\"false\"/>\r\n    <row agent=\"Astroo Opeau\" agentid=\"3018542\" agenttypeid=\"8\" corporationid=\"1000115\" divisionid=\"22\" level=\"3\" locationid=\"60011566\" locator=\"false\"/>\r\n    <row agent=\"Pattok Nortul\" agentid=\"3018543\" agenttypeid=\"8\" corporationid=\"1000163\" divisionid=\"22\" level=\"1\" locationid=\"60014374\" locator=\"false\"/>\r\n    <row agent=\"Krester Rupptofs\" agentid=\"3018544\" agenttypeid=\"8\" corporationid=\"1000163\" divisionid=\"22\" level=\"3\" locationid=\"60014374\" locator=\"false\"/>\r\n    <row agent=\"Iliere Angetyn\" agentid=\"3018545\" agenttypeid=\"8\" corporationid=\"1000163\" divisionid=\"22\" level=\"2\" locationid=\"60014374\" locator=\"false\"/>\r\n    <row agent=\"Seysire Akoto\" agentid=\"3018546\" agenttypeid=\"8\" corporationid=\"1000011\" divisionid=\"24\" level=\"1\" locationid=\"60001246\" locator=\"false\"/>\r\n    <row agent=\"Nabu Rikkolen\" agentid=\"3018547\" agenttypeid=\"8\" corporationid=\"1000011\" divisionid=\"24\" level=\"2\" locationid=\"60001246\" locator=\"false\"/>\r\n    <row agent=\"Tahni Arkiso\" agentid=\"3018548\" agenttypeid=\"8\" corporationid=\"1000011\" divisionid=\"24\" level=\"3\" locationid=\"60001246\" locator=\"false\"/>\r\n    <row agent=\"Marika Hokoru\" agentid=\"3018549\" agenttypeid=\"8\" corporationid=\"1000011\" divisionid=\"22\" level=\"3\" locationid=\"60001246\" locator=\"false\"/>\r\n    <row agent=\"Onobi Rekkai\" agentid=\"3018550\" agenttypeid=\"8\" corporationid=\"1000011\" divisionid=\"24\" level=\"4\" locationid=\"60001246\" locator=\"false\"/>\r\n    <row agent=\"Trex Ameisoure\" agentid=\"3018551\" agenttypeid=\"8\" corporationid=\"1000133\" divisionid=\"22\" level=\"2\" locationid=\"60012778\" locator=\"false\"/>\r\n    <row agent=\"Ystvia Lamuette\" agentid=\"3018552\" agenttypeid=\"8\" corporationid=\"1000115\" divisionid=\"22\" level=\"2\" locationid=\"60011566\" locator=\"false\"/>\r\n    <row agent=\"Croir Arghe\" agentid=\"3018553\" agenttypeid=\"8\" corporationid=\"1000115\" divisionid=\"22\" level=\"4\" locationid=\"60011566\" locator=\"false\"/>\r\n    <row agent=\"Pandon Ardillan\" agentid=\"3018554\" agenttypeid=\"8\" corporationid=\"1000107\" divisionid=\"24\" level=\"2\" locationid=\"60010636\" locator=\"false\"/>\r\n    <row agent=\"Drusk Amakkit\" agentid=\"3018555\" agenttypeid=\"8\" corporationid=\"1000160\" divisionid=\"18\" level=\"3\" locationid=\"60014059\" locator=\"false\"/>\r\n    <row agent=\"Wrtuk Formur\" agentid=\"3018556\" agenttypeid=\"8\" corporationid=\"1000163\" divisionid=\"24\" level=\"4\" locationid=\"60014374\" locator=\"false\"/>\r\n    <row agent=\"Lardimort Rasnik\" agentid=\"3018557\" agenttypeid=\"8\" corporationid=\"1000056\" divisionid=\"18\" level=\"2\" locationid=\"60005413\" locator=\"false\"/>\r\n    <row agent=\"Tagrina Angi\" agentid=\"3018558\" agenttypeid=\"8\" corporationid=\"1000046\" divisionid=\"24\" level=\"3\" locationid=\"60004480\" locator=\"false\"/>\r\n    <row agent=\"Kaeg Zkaen\" agentid=\"3018559\" agenttypeid=\"8\" corporationid=\"1000126\" divisionid=\"24\" level=\"3\" locationid=\"60012526\" locator=\"false\"/>\r\n    <row agent=\"Karmane Ban\" agentid=\"3018560\" agenttypeid=\"8\" corporationid=\"1000011\" divisionid=\"24\" level=\"1\" locationid=\"60001246\" locator=\"false\"/>\r\n    <row agent=\"Fam Kishemas\" agentid=\"3018561\" agenttypeid=\"8\" corporationid=\"1000084\" divisionid=\"24\" level=\"4\" locationid=\"60008368\" locator=\"false\"/>\r\n    <row agent=\"Esordik Mitt\" agentid=\"3018562\" agenttypeid=\"8\" corporationid=\"1000051\" divisionid=\"24\" level=\"4\" locationid=\"60004744\" locator=\"false\"/>\r\n    <row agent=\"Aakeo Oshaima\" agentid=\"3018563\" agenttypeid=\"8\" corporationid=\"1000011\" divisionid=\"24\" level=\"2\" locationid=\"60001246\" locator=\"false\"/>\r\n    <row agent=\"Veko Tallaja\" agentid=\"3018564\" agenttypeid=\"8\" corporationid=\"1000011\" divisionid=\"24\" level=\"2\" locationid=\"60001246\" locator=\"false\"/>\r\n    <row agent=\"Gara Kort\" agentid=\"3018565\" agenttypeid=\"8\" corporationid=\"1000042\" divisionid=\"24\" level=\"4\" locationid=\"60004264\" locator=\"false\"/>\r\n    <row agent=\"Eron Hoyere\" agentid=\"3018566\" agenttypeid=\"8\" corporationid=\"1000102\" divisionid=\"22\" level=\"2\" locationid=\"60010300\" locator=\"false\"/>\r\n    <row agent=\"Ardoen Dasaner\" agentid=\"3018567\" agenttypeid=\"8\" corporationid=\"1000102\" divisionid=\"22\" level=\"2\" locationid=\"60010300\" locator=\"false\"/>\r\n    <row agent=\"Onreun Coen\" agentid=\"3018568\" agenttypeid=\"8\" corporationid=\"1000121\" divisionid=\"24\" level=\"3\" locationid=\"60011914\" locator=\"false\"/>\r\n    <row agent=\"Nilla Elermare\" agentid=\"3018569\" agenttypeid=\"8\" corporationid=\"1000102\" divisionid=\"22\" level=\"3\" locationid=\"60010300\" locator=\"false\"/>\r\n    <row agent=\"Aminn Flosin\" agentid=\"3018570\" agenttypeid=\"8\" corporationid=\"1000102\" divisionid=\"22\" level=\"3\" locationid=\"60010300\" locator=\"false\"/>\r\n    <row agent=\"Schabs Xalot\" agentid=\"3018571\" agenttypeid=\"8\" corporationid=\"1000102\" divisionid=\"23\" level=\"3\" locationid=\"60010300\" locator=\"false\"/>\r\n    <row agent=\"Ampsin Achippon\" agentid=\"3018572\" agenttypeid=\"8\" corporationid=\"1000099\" divisionid=\"23\" level=\"4\" locationid=\"60009730\" locator=\"false\"/>\r\n    <row agent=\"Bartezo Maphante\" agentid=\"3018573\" agenttypeid=\"8\" corporationid=\"1000069\" divisionid=\"24\" level=\"3\" locationid=\"60006772\" locator=\"false\"/>\r\n    <row agent=\"Manel Kador\" agentid=\"3018574\" agenttypeid=\"8\" corporationid=\"1000087\" divisionid=\"24\" level=\"1\" locationid=\"60008614\" locator=\"false\"/>\r\n    <row agent=\"Drone Mind\" agentid=\"3018575\" agenttypeid=\"8\" corporationid=\"1000129\" divisionid=\"22\" level=\"1\" locationid=\"60012730\" locator=\"false\"/>\r\n    <row agent=\"Nossa Farad\" agentid=\"3018576\" agenttypeid=\"8\" corporationid=\"1000087\" divisionid=\"24\" level=\"3\" locationid=\"60008614\" locator=\"false\"/>\r\n    <row agent=\"Odan Poun\" agentid=\"3018577\" agenttypeid=\"8\" corporationid=\"1000084\" divisionid=\"24\" level=\"3\" locationid=\"60008248\" locator=\"false\"/>\r\n    <row agent=\"Ader Finn\" agentid=\"3018578\" agenttypeid=\"8\" corporationid=\"1000083\" divisionid=\"22\" level=\"1\" locationid=\"60008248\" locator=\"false\"/>\r\n    <row agent=\"Kofur Karveran\" agentid=\"3018579\" agenttypeid=\"8\" corporationid=\"1000087\" divisionid=\"24\" level=\"4\" locationid=\"60008614\" locator=\"false\"/>\r\n    <row agent=\"Pomari Maara\" agentid=\"3018580\" agenttypeid=\"8\" corporationid=\"1000044\" divisionid=\"22\" level=\"1\" locationid=\"60004420\" locator=\"false\"/>\r\n    <row agent=\"Hosiwo Onima\" agentid=\"3018581\" agenttypeid=\"8\" corporationid=\"1000045\" divisionid=\"22\" level=\"1\" locationid=\"60004450\" locator=\"false\"/>\r\n    <row agent=\"Nakkito Ihadechi\" agentid=\"3018582\" agenttypeid=\"8\" corporationid=\"1000167\" divisionid=\"22\" level=\"1\" locationid=\"60014659\" locator=\"false\"/>\r\n    <row agent=\"Furas Vaupero\" agentid=\"3018583\" agenttypeid=\"8\" corporationid=\"1000035\" divisionid=\"22\" level=\"1\" locationid=\"60003754\" locator=\"false\"/>\r\n    <row agent=\"Jerva Vantoh\" agentid=\"3018584\" agenttypeid=\"8\" corporationid=\"1000031\" divisionid=\"24\" level=\"1\" locationid=\"60003334\" locator=\"false\"/>\r\n    <row agent=\"Jeka Vantoh\" agentid=\"3018585\" agenttypeid=\"8\" corporationid=\"1000031\" divisionid=\"24\" level=\"1\" locationid=\"60003334\" locator=\"false\"/>\r\n    <row agent=\"Ontaa Jila\" agentid=\"3018586\" agenttypeid=\"8\" corporationid=\"1000020\" divisionid=\"24\" level=\"1\" locationid=\"60002245\" locator=\"false\"/>\r\n    <row agent=\"Erudin Hanka\" agentid=\"3018587\" agenttypeid=\"8\" corporationid=\"1000016\" divisionid=\"24\" level=\"1\" locationid=\"60001765\" locator=\"false\"/>\r\n    <row agent=\"Onmi Mara\" agentid=\"3018588\" agenttypeid=\"8\" corporationid=\"1000010\" divisionid=\"24\" level=\"1\" locationid=\"60000976\" locator=\"false\"/>\r\n    <row agent=\"Yrmek Penola\" agentid=\"3018589\" agenttypeid=\"8\" corporationid=\"1000032\" divisionid=\"24\" level=\"1\" locationid=\"60003403\" locator=\"false\"/>\r\n    <row agent=\"Irsen Alaja\" agentid=\"3018590\" agenttypeid=\"8\" corporationid=\"1000032\" divisionid=\"24\" level=\"1\" locationid=\"60003403\" locator=\"false\"/>\r\n    <row agent=\"Cora Chaktaren\" agentid=\"3018591\" agenttypeid=\"8\" corporationid=\"1000084\" divisionid=\"24\" level=\"3\" locationid=\"60008368\" locator=\"false\"/>\r\n    <row agent=\"Zar Forari\" agentid=\"3018592\" agenttypeid=\"8\" corporationid=\"1000072\" divisionid=\"22\" level=\"4\" locationid=\"60007003\" locator=\"false\"/>\r\n    <row agent=\"Zach Himun\" agentid=\"3018593\" agenttypeid=\"8\" corporationid=\"1000086\" divisionid=\"22\" level=\"4\" locationid=\"60007732\" locator=\"false\"/>\r\n    <row agent=\"Enanato Imeri\" agentid=\"3018594\" agenttypeid=\"8\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001831\" locator=\"false\"/>\r\n    <row agent=\"Hann Najus\" agentid=\"3018595\" agenttypeid=\"8\" corporationid=\"1000017\" divisionid=\"22\" level=\"1\" locationid=\"60001825\" locator=\"false\"/>\r\n    <row agent=\"Samora Miven\" agentid=\"3018596\" agenttypeid=\"8\" corporationid=\"1000025\" divisionid=\"24\" level=\"1\" locationid=\"60002821\" locator=\"false\"/>\r\n    <row agent=\"Iole Radin\" agentid=\"3018598\" agenttypeid=\"8\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011749\" locator=\"false\"/>\r\n    <row agent=\"Ansa Vanonari\" agentid=\"3018599\" agenttypeid=\"8\" corporationid=\"1000108\" divisionid=\"22\" level=\"1\" locationid=\"60010729\" locator=\"false\"/>\r\n    <row agent=\"Ihanani Oksen\" agentid=\"3018600\" agenttypeid=\"8\" corporationid=\"1000101\" divisionid=\"22\" level=\"1\" locationid=\"60010210\" locator=\"false\"/>\r\n    <row agent=\"Salena Kihten\" agentid=\"3018601\" agenttypeid=\"8\" corporationid=\"1000169\" divisionid=\"22\" level=\"1\" locationid=\"60014725\" locator=\"false\"/>\r\n    <row agent=\"Petsiken Ashur\" agentid=\"3018602\" agenttypeid=\"8\" corporationid=\"1000168\" divisionid=\"22\" level=\"1\" locationid=\"60014695\" locator=\"false\"/>\r\n    <row agent=\"Hulen Tsaka\" agentid=\"3018603\" agenttypeid=\"8\" corporationid=\"1000115\" divisionid=\"22\" level=\"1\" locationid=\"60011590\" locator=\"false\"/>\r\n    <row agent=\"Ammargal Detrone\" agentid=\"3018604\" agenttypeid=\"8\" corporationid=\"1000086\" divisionid=\"24\" level=\"4\" locationid=\"60008494\" locator=\"false\"/>\r\n    <row agent=\"Aullem Cammala\" agentid=\"3018605\" agenttypeid=\"8\" corporationid=\"1000063\" divisionid=\"23\" level=\"3\" locationid=\"60006100\" locator=\"false\"/>\r\n    <row agent=\"Ossa Blaus\" agentid=\"3018606\" agenttypeid=\"8\" corporationid=\"1000109\" divisionid=\"24\" level=\"1\" locationid=\"60010909\" locator=\"false\"/>\r\n    <row agent=\"Lorchaert Brounave\" agentid=\"3018607\" agenttypeid=\"8\" corporationid=\"1000100\" divisionid=\"22\" level=\"1\" locationid=\"60009922\" locator=\"false\"/>\r\n    <row agent=\"Ley Serine\" agentid=\"3018608\" agenttypeid=\"8\" corporationid=\"1000119\" divisionid=\"22\" level=\"1\" locationid=\"60011614\" locator=\"false\"/>\r\n    <row agent=\"Ley Serene\" agentid=\"3018609\" agenttypeid=\"8\" corporationid=\"1000119\" divisionid=\"24\" level=\"1\" locationid=\"60011614\" locator=\"false\"/>\r\n    <row agent=\"Isila Asturi\" agentid=\"3018610\" agenttypeid=\"8\" corporationid=\"1000044\" divisionid=\"22\" level=\"1\" locationid=\"60015004\" locator=\"false\"/>\r\n    <row agent=\"Tan Akelaires\" agentid=\"3018611\" agenttypeid=\"8\" corporationid=\"1000045\" divisionid=\"22\" level=\"1\" locationid=\"60004456\" locator=\"false\"/>\r\n    <row agent=\"Nirhaka Imaya\" agentid=\"3018612\" agenttypeid=\"8\" corporationid=\"1000167\" divisionid=\"22\" level=\"1\" locationid=\"60014680\" locator=\"false\"/>\r\n    <row agent=\"Half Triat\" agentid=\"3018613\" agenttypeid=\"8\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004759\" locator=\"false\"/>\r\n    <row agent=\"Arnerii Siskoug\" agentid=\"3018614\" agenttypeid=\"8\" corporationid=\"1000172\" divisionid=\"22\" level=\"1\" locationid=\"60014833\" locator=\"false\"/>\r\n    <row agent=\"Kririt Kalpur\" agentid=\"3018615\" agenttypeid=\"8\" corporationid=\"1000170\" divisionid=\"22\" level=\"1\" locationid=\"60014749\" locator=\"false\"/>\r\n    <row agent=\"Kririt Kalur\" agentid=\"3018616\" agenttypeid=\"8\" corporationid=\"1000170\" divisionid=\"22\" level=\"1\" locationid=\"60014773\" locator=\"false\"/>\r\n    <row agent=\"Eszur Eslin\" agentid=\"3018617\" agenttypeid=\"8\" corporationid=\"1000171\" divisionid=\"22\" level=\"1\" locationid=\"60014782\" locator=\"false\"/>\r\n    <row agent=\"Hakar Ogok\" agentid=\"3018618\" agenttypeid=\"8\" corporationid=\"1000056\" divisionid=\"24\" level=\"1\" locationid=\"60005419\" locator=\"false\"/>\r\n    <row agent=\"Eslin Stein\" agentid=\"3018619\" agenttypeid=\"8\" corporationid=\"1000053\" divisionid=\"24\" level=\"1\" locationid=\"60009109\" locator=\"false\"/>\r\n    <row agent=\"Vilhara Vit\" agentid=\"3018620\" agenttypeid=\"8\" corporationid=\"1000048\" divisionid=\"24\" level=\"1\" locationid=\"60004552\" locator=\"false\"/>\r\n    <row agent=\"Thumal Ebotiz\" agentid=\"3018621\" agenttypeid=\"8\" corporationid=\"1000073\" divisionid=\"24\" level=\"3\" locationid=\"60007183\" locator=\"false\"/>\r\n    <row agent=\"Hetras Dakumon\" agentid=\"3018622\" agenttypeid=\"8\" corporationid=\"1000065\" divisionid=\"24\" level=\"2\" locationid=\"60006400\" locator=\"false\"/>\r\n    <row agent=\"Benur Errus\" agentid=\"3018623\" agenttypeid=\"8\" corporationid=\"1000060\" divisionid=\"22\" level=\"1\" locationid=\"60005761\" locator=\"false\"/>\r\n    <row agent=\"Evika Deng\" agentid=\"3018624\" agenttypeid=\"8\" corporationid=\"1000047\" divisionid=\"24\" level=\"1\" locationid=\"60004516\" locator=\"false\"/>\r\n    <row agent=\"Ain Ikani\" agentid=\"3018625\" agenttypeid=\"8\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008431\" locator=\"false\"/>\r\n    <row agent=\"Perak Shokal\" agentid=\"3018626\" agenttypeid=\"8\" corporationid=\"1000165\" divisionid=\"22\" level=\"1\" locationid=\"60015019\" locator=\"false\"/>\r\n    <row agent=\"Hamiji Onar\" agentid=\"3018627\" agenttypeid=\"8\" corporationid=\"1000166\" divisionid=\"22\" level=\"1\" locationid=\"60014653\" locator=\"false\"/>\r\n    <row agent=\"Aliana Sanzuch\" agentid=\"3018628\" agenttypeid=\"8\" corporationid=\"1000077\" divisionid=\"22\" level=\"1\" locationid=\"60007726\" locator=\"false\"/>\r\n    <row agent=\"Ilia Abazen\" agentid=\"3018629\" agenttypeid=\"8\" corporationid=\"1000064\" divisionid=\"23\" level=\"1\" locationid=\"60006364\" locator=\"false\"/>\r\n    <row agent=\"Korini Nakan\" agentid=\"3018630\" agenttypeid=\"8\" corporationid=\"1000088\" divisionid=\"24\" level=\"1\" locationid=\"60008668\" locator=\"false\"/>\r\n    <row agent=\"Kanori Agored\" agentid=\"3018631\" agenttypeid=\"8\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007888\" locator=\"false\"/>\r\n    <row agent=\"Utaka Orasa\" agentid=\"3018632\" agenttypeid=\"8\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008374\" locator=\"false\"/>\r\n    <row agent=\"Ormon Parsik\" agentid=\"3018633\" agenttypeid=\"8\" corporationid=\"1000093\" divisionid=\"24\" level=\"3\" locationid=\"60008914\" locator=\"false\"/>\r\n    <row agent=\"Sheroz Amokin\" agentid=\"3018634\" agenttypeid=\"8\" corporationid=\"1000063\" divisionid=\"23\" level=\"4\" locationid=\"60006100\" locator=\"false\"/>\r\n    <row agent=\"Nosha Ahnin\" agentid=\"3018635\" agenttypeid=\"8\" corporationid=\"1000087\" divisionid=\"24\" level=\"3\" locationid=\"60008614\" locator=\"false\"/>\r\n    <row agent=\"Nosha Ahninn\" agentid=\"3018636\" agenttypeid=\"8\" corporationid=\"1000087\" divisionid=\"24\" level=\"1\" locationid=\"60008614\" locator=\"false\"/>\r\n    <row agent=\"gasd asdfas\" agentid=\"3018637\" agenttypeid=\"8\" corporationid=\"1000089\" divisionid=\"24\" level=\"1\" locationid=\"60008686\" locator=\"false\"/>\r\n    <row agent=\"Stem Robikar\" agentid=\"3018638\" agenttypeid=\"8\" corporationid=\"1000071\" divisionid=\"24\" level=\"2\" locationid=\"60006943\" locator=\"false\"/>\r\n    <row agent=\"Torval Kerth\" agentid=\"3018639\" agenttypeid=\"8\" corporationid=\"1000064\" divisionid=\"22\" level=\"3\" locationid=\"60006220\" locator=\"false\"/>\r\n    <row agent=\"Amir Arshah\" agentid=\"3018640\" agenttypeid=\"8\" corporationid=\"1000065\" divisionid=\"22\" level=\"3\" locationid=\"60006400\" locator=\"false\"/>\r\n    <row agent=\"Chari Shakai\" agentid=\"3018641\" agenttypeid=\"8\" corporationid=\"1000075\" divisionid=\"22\" level=\"2\" locationid=\"60007513\" locator=\"false\"/>\r\n    <row agent=\"Sebast Mathon\" agentid=\"3018642\" agenttypeid=\"8\" corporationid=\"1000115\" divisionid=\"22\" level=\"3\" locationid=\"60011566\" locator=\"false\"/>\r\n    <row agent=\"Thakor Udokas\" agentid=\"3018643\" agenttypeid=\"8\" corporationid=\"1000077\" divisionid=\"22\" level=\"2\" locationid=\"60007702\" locator=\"false\"/>\r\n    <row agent=\"The Curator\" agentid=\"3018644\" agenttypeid=\"8\" corporationid=\"1000093\" divisionid=\"22\" level=\"3\" locationid=\"60008914\" locator=\"false\"/>\r\n    <row agent=\"Korhonomi Oti\" agentid=\"3018645\" agenttypeid=\"8\" corporationid=\"1000044\" divisionid=\"22\" level=\"1\" locationid=\"60004420\" locator=\"false\"/>\r\n    <row agent=\"Tillen Matsu\" agentid=\"3018646\" agenttypeid=\"8\" corporationid=\"1000045\" divisionid=\"22\" level=\"1\" locationid=\"60004450\" locator=\"false\"/>\r\n    <row agent=\"Autaris Pia\" agentid=\"3018647\" agenttypeid=\"8\" corporationid=\"1000167\" divisionid=\"22\" level=\"1\" locationid=\"60014659\" locator=\"false\"/>\r\n    <row agent=\"Kikko Roisen\" agentid=\"3018648\" agenttypeid=\"8\" corporationid=\"1000018\" divisionid=\"22\" level=\"1\" locationid=\"60000766\" locator=\"false\"/>\r\n    <row agent=\"Avrue Auz\" agentid=\"3018649\" agenttypeid=\"8\" corporationid=\"1000101\" divisionid=\"22\" level=\"1\" locationid=\"60010216\" locator=\"false\"/>\r\n    <row agent=\"Mamo Guerre\" agentid=\"3018650\" agenttypeid=\"8\" corporationid=\"1000110\" divisionid=\"24\" level=\"1\" locationid=\"60010951\" locator=\"false\"/>\r\n    <row agent=\"Gisi Akoom\" agentid=\"3018651\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"4\" locationid=\"60012790\" locator=\"false\"/>\r\n    <row agent=\"Hazara Nat\" agentid=\"3018652\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"4\" locationid=\"60012793\" locator=\"false\"/>\r\n    <row agent=\"Fodathez Teryi\" agentid=\"3018653\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"3\" locationid=\"60012793\" locator=\"false\"/>\r\n    <row agent=\"Perorurasa Yaddi\" agentid=\"3018654\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"3\" locationid=\"60012790\" locator=\"false\"/>\r\n    <row agent=\"Boismevier Mals\" agentid=\"3018655\" agenttypeid=\"8\" corporationid=\"1000102\" divisionid=\"22\" level=\"1\" locationid=\"60010300\" locator=\"false\"/>\r\n    <row agent=\"Mamin Choonka\" agentid=\"3018656\" agenttypeid=\"8\" corporationid=\"1000088\" divisionid=\"24\" level=\"1\" locationid=\"60008650\" locator=\"false\"/>\r\n    <row agent=\"Arizam Gimit\" agentid=\"3018658\" agenttypeid=\"8\" corporationid=\"1000081\" divisionid=\"24\" level=\"1\" locationid=\"60008026\" locator=\"false\"/>\r\n    <row agent=\"Shafra Gulias\" agentid=\"3018659\" agenttypeid=\"8\" corporationid=\"1000153\" divisionid=\"24\" level=\"1\" locationid=\"60013858\" locator=\"false\"/>\r\n    <row agent=\"Sevan Fagided\" agentid=\"3018660\" agenttypeid=\"8\" corporationid=\"1000156\" divisionid=\"22\" level=\"1\" locationid=\"60013933\" locator=\"false\"/>\r\n    <row agent=\"Hefaka Chubid\" agentid=\"3018661\" agenttypeid=\"8\" corporationid=\"1000156\" divisionid=\"22\" level=\"1\" locationid=\"60013933\" locator=\"false\"/>\r\n    <row agent=\"Etien Duloure\" agentid=\"3018662\" agenttypeid=\"8\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60010951\" locator=\"false\"/>\r\n    <row agent=\"Vausitte Yrier\" agentid=\"3018663\" agenttypeid=\"8\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60010951\" locator=\"false\"/>\r\n    <row agent=\"Maray Ygier\" agentid=\"3018664\" agenttypeid=\"8\" corporationid=\"1000110\" divisionid=\"22\" level=\"1\" locationid=\"60010951\" locator=\"false\"/>\r\n    <row agent=\"Aviekko Ta\" agentid=\"3018666\" agenttypeid=\"8\" corporationid=\"1000018\" divisionid=\"22\" level=\"1\" locationid=\"60002017\" locator=\"false\"/>\r\n    <row agent=\"Ichoro Hinalairos\" agentid=\"3018667\" agenttypeid=\"8\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003754\" locator=\"false\"/>\r\n    <row agent=\"Pinala Adala\" agentid=\"3018668\" agenttypeid=\"8\" corporationid=\"1000046\" divisionid=\"24\" level=\"1\" locationid=\"60004486\" locator=\"false\"/>\r\n    <row agent=\"Rilbedur Tjar\" agentid=\"3018669\" agenttypeid=\"8\" corporationid=\"1000046\" divisionid=\"24\" level=\"1\" locationid=\"60004480\" locator=\"false\"/>\r\n    <row agent=\"West Ludorim\" agentid=\"3018670\" agenttypeid=\"8\" corporationid=\"1000046\" divisionid=\"24\" level=\"1\" locationid=\"60004480\" locator=\"false\"/>\r\n    <row agent=\"Albedur Vatzako\" agentid=\"3018671\" agenttypeid=\"8\" corporationid=\"1000046\" divisionid=\"24\" level=\"1\" locationid=\"60004480\" locator=\"false\"/>\r\n    <row agent=\"Vari Satilela\" agentid=\"3018672\" agenttypeid=\"8\" corporationid=\"1000044\" divisionid=\"22\" level=\"1\" locationid=\"60004420\" locator=\"false\"/>\r\n    <row agent=\"Logut Akell\" agentid=\"3018673\" agenttypeid=\"8\" corporationid=\"1000048\" divisionid=\"22\" level=\"1\" locationid=\"60004552\" locator=\"false\"/>\r\n    <row agent=\"Hlebnar Tonari\" agentid=\"3018674\" agenttypeid=\"8\" corporationid=\"1000048\" divisionid=\"24\" level=\"1\" locationid=\"60004552\" locator=\"false\"/>\r\n    <row agent=\"Insen Bara\" agentid=\"3018675\" agenttypeid=\"8\" corporationid=\"1000045\" divisionid=\"22\" level=\"1\" locationid=\"60004450\" locator=\"false\"/>\r\n    <row agent=\"Sawara Hakonen\" agentid=\"3018676\" agenttypeid=\"8\" corporationid=\"1000167\" divisionid=\"22\" level=\"1\" locationid=\"60014659\" locator=\"false\"/>\r\n    <row agent=\"Rian Sumana\" agentid=\"3018677\" agenttypeid=\"8\" corporationid=\"1000172\" divisionid=\"22\" level=\"1\" locationid=\"60014809\" locator=\"false\"/>\r\n    <row agent=\"Geil Ustegokkur\" agentid=\"3018678\" agenttypeid=\"8\" corporationid=\"1000170\" divisionid=\"22\" level=\"1\" locationid=\"60014749\" locator=\"false\"/>\r\n    <row agent=\"Anuko Hugandur\" agentid=\"3018679\" agenttypeid=\"8\" corporationid=\"1000171\" divisionid=\"22\" level=\"1\" locationid=\"60014779\" locator=\"false\"/>\r\n    <row agent=\"Beruni Soshi\" agentid=\"3018680\" agenttypeid=\"8\" corporationid=\"1000165\" divisionid=\"22\" level=\"1\" locationid=\"60014599\" locator=\"false\"/>\r\n    <row agent=\"Budu Jatrad\" agentid=\"3018681\" agenttypeid=\"8\" corporationid=\"1000166\" divisionid=\"22\" level=\"1\" locationid=\"60014629\" locator=\"false\"/>\r\n    <row agent=\"Nagamac Lava\" agentid=\"3018682\" agenttypeid=\"8\" corporationid=\"1000077\" divisionid=\"22\" level=\"1\" locationid=\"60007702\" locator=\"false\"/>\r\n    <row agent=\"Jarck Feritte\" agentid=\"3018683\" agenttypeid=\"8\" corporationid=\"1000169\" divisionid=\"22\" level=\"1\" locationid=\"60014719\" locator=\"false\"/>\r\n    <row agent=\"Giel Pimmere\" agentid=\"3018684\" agenttypeid=\"8\" corporationid=\"1000168\" divisionid=\"22\" level=\"1\" locationid=\"60014689\" locator=\"false\"/>\r\n    <row agent=\"Muenel Attyn\" agentid=\"3018685\" agenttypeid=\"8\" corporationid=\"1000115\" divisionid=\"22\" level=\"1\" locationid=\"60011566\" locator=\"false\"/>\r\n    <row agent=\"Meves Geria\" agentid=\"3018686\" agenttypeid=\"6\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011866\" locator=\"false\"/>\r\n    <row agent=\"Nagin Dahiva\" agentid=\"3018687\" agenttypeid=\"6\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008422\" locator=\"false\"/>\r\n    <row agent=\"Olin Sacaini\" agentid=\"3018688\" agenttypeid=\"6\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008368\" locator=\"false\"/>\r\n    <row agent=\"Olin Sacainia\" agentid=\"3018689\" agenttypeid=\"6\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60012793\" locator=\"false\"/>\r\n    <row agent=\"Ezia Minaru\" agentid=\"3018690\" agenttypeid=\"6\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008431\" locator=\"false\"/>\r\n    <row agent=\"Prokeh Jesoyan\" agentid=\"3018691\" agenttypeid=\"6\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008467\" locator=\"false\"/>\r\n    <row agent=\"Anan Bharvi\" agentid=\"3018692\" agenttypeid=\"6\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008458\" locator=\"false\"/>\r\n    <row agent=\"Akeva Ibal\" agentid=\"3018693\" agenttypeid=\"6\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008416\" locator=\"false\"/>\r\n    <row agent=\"Shi Aidek\" agentid=\"3018694\" agenttypeid=\"6\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003805\" locator=\"false\"/>\r\n    <row agent=\"Otken Aminishi\" agentid=\"3018695\" agenttypeid=\"6\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003904\" locator=\"false\"/>\r\n    <row agent=\"Rantoh Funkaki\" agentid=\"3018696\" agenttypeid=\"6\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003877\" locator=\"false\"/>\r\n    <row agent=\"Avas Hintinen\" agentid=\"3018697\" agenttypeid=\"6\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003871\" locator=\"false\"/>\r\n    <row agent=\"Ekela Janikia\" agentid=\"3018698\" agenttypeid=\"6\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003856\" locator=\"false\"/>\r\n    <row agent=\"Nouteras Ashata\" agentid=\"3018699\" agenttypeid=\"6\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003916\" locator=\"false\"/>\r\n    <row agent=\"Shaita Arushin\" agentid=\"3018700\" agenttypeid=\"6\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60003895\" locator=\"false\"/>\r\n    <row agent=\"Iloge Zetreler\" agentid=\"3018701\" agenttypeid=\"6\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011782\" locator=\"false\"/>\r\n    <row agent=\"Archee Merlur\" agentid=\"3018702\" agenttypeid=\"6\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011866\" locator=\"false\"/>\r\n    <row agent=\"Clouel Alde\" agentid=\"3018703\" agenttypeid=\"6\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011800\" locator=\"false\"/>\r\n    <row agent=\"Bai Albrande\" agentid=\"3018704\" agenttypeid=\"6\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011893\" locator=\"false\"/>\r\n    <row agent=\"Taira Nuk\" agentid=\"3018705\" agenttypeid=\"6\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011875\" locator=\"false\"/>\r\n    <row agent=\"Anell Ferd\" agentid=\"3018706\" agenttypeid=\"6\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004822\" locator=\"false\"/>\r\n    <row agent=\"Shaka Maryl\" agentid=\"3018707\" agenttypeid=\"6\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004828\" locator=\"false\"/>\r\n    <row agent=\"Toro Makon\" agentid=\"3018708\" agenttypeid=\"6\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004912\" locator=\"false\"/>\r\n    <row agent=\"Munar Dresdan\" agentid=\"3018709\" agenttypeid=\"6\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004879\" locator=\"false\"/>\r\n    <row agent=\"Kharem Lunnard\" agentid=\"3018710\" agenttypeid=\"6\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004864\" locator=\"false\"/>\r\n    <row agent=\"Pakin Tasdar\" agentid=\"3018711\" agenttypeid=\"6\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004771\" locator=\"false\"/>\r\n    <row agent=\"Ylma Longar\" agentid=\"3018712\" agenttypeid=\"6\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004876\" locator=\"false\"/>\r\n    <row agent=\"Airkio Yanjulen\" agentid=\"3018713\" agenttypeid=\"8\" corporationid=\"1000127\" divisionid=\"24\" level=\"4\" locationid=\"60012556\" locator=\"false\"/>\r\n    <row agent=\"Oronata Vion\" agentid=\"3018714\" agenttypeid=\"8\" corporationid=\"1000008\" divisionid=\"24\" level=\"4\" locationid=\"60000766\" locator=\"false\"/>\r\n    <row agent=\"Tomi Hakiro\" agentid=\"3018715\" agenttypeid=\"8\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60003754\" locator=\"false\"/>\r\n    <row agent=\"Knaanin Aranuri\" agentid=\"3018716\" agenttypeid=\"8\" corporationid=\"1000127\" divisionid=\"24\" level=\"4\" locationid=\"60012556\" locator=\"false\"/>\r\n    <row agent=\"Knaaninn Aranuri\" agentid=\"3018717\" agenttypeid=\"7\" corporationid=\"1000127\" divisionid=\"24\" level=\"1\" locationid=\"60012556\" locator=\"false\"/>\r\n    <row agent=\"Isana Dagin\" agentid=\"3018718\" agenttypeid=\"8\" corporationid=\"1000147\" divisionid=\"24\" level=\"4\" locationid=\"60013465\" locator=\"false\"/>\r\n    <row agent=\"Isana Daginn\" agentid=\"3018719\" agenttypeid=\"7\" corporationid=\"1000147\" divisionid=\"24\" level=\"1\" locationid=\"60013465\" locator=\"false\"/>\r\n    <row agent=\"Gue Mouey\" agentid=\"3018720\" agenttypeid=\"8\" corporationid=\"1000145\" divisionid=\"22\" level=\"1\" locationid=\"60013381\" locator=\"false\"/>\r\n    <row agent=\"Fetosa Kanim\" agentid=\"3018721\" agenttypeid=\"8\" corporationid=\"1000127\" divisionid=\"23\" level=\"1\" locationid=\"60000610\" locator=\"false\"/>\r\n    <row agent=\"Vena Saapialen\" agentid=\"3018722\" agenttypeid=\"8\" corporationid=\"1000127\" divisionid=\"23\" level=\"1\" locationid=\"60000610\" locator=\"false\"/>\r\n    <row agent=\"Ocho Shusiian\" agentid=\"3018723\" agenttypeid=\"8\" corporationid=\"1000127\" divisionid=\"23\" level=\"1\" locationid=\"60000610\" locator=\"false\"/>\r\n    <row agent=\"Ozomi Obanen\" agentid=\"3018724\" agenttypeid=\"8\" corporationid=\"1000127\" divisionid=\"23\" level=\"1\" locationid=\"60000610\" locator=\"false\"/>\r\n    <row agent=\"Rakka Tahiri\" agentid=\"3018725\" agenttypeid=\"8\" corporationid=\"1000127\" divisionid=\"24\" level=\"2\" locationid=\"60012556\" locator=\"false\"/>\r\n    <row agent=\"Kara Morato\" agentid=\"3018726\" agenttypeid=\"8\" corporationid=\"1000006\" divisionid=\"23\" level=\"1\" locationid=\"60013261\" locator=\"false\"/>\r\n    <row agent=\"Tehjus Otsini\" agentid=\"3018727\" agenttypeid=\"8\" corporationid=\"1000006\" divisionid=\"23\" level=\"1\" locationid=\"60013261\" locator=\"false\"/>\r\n    <row agent=\"Heiraitah Siakkano\" agentid=\"3018728\" agenttypeid=\"8\" corporationid=\"1000006\" divisionid=\"23\" level=\"1\" locationid=\"60013261\" locator=\"false\"/>\r\n    <row agent=\"Rahli Saronu\" agentid=\"3018729\" agenttypeid=\"8\" corporationid=\"1000070\" divisionid=\"23\" level=\"1\" locationid=\"60006907\" locator=\"false\"/>\r\n    <row agent=\"Enna Ahruneh\" agentid=\"3018730\" agenttypeid=\"8\" corporationid=\"1000070\" divisionid=\"23\" level=\"1\" locationid=\"60006907\" locator=\"false\"/>\r\n    <row agent=\"Desra Nekri\" agentid=\"3018731\" agenttypeid=\"8\" corporationid=\"1000070\" divisionid=\"23\" level=\"1\" locationid=\"60006907\" locator=\"false\"/>\r\n    <row agent=\"Galhar Lahara\" agentid=\"3018732\" agenttypeid=\"8\" corporationid=\"1000070\" divisionid=\"23\" level=\"1\" locationid=\"60006907\" locator=\"false\"/>\r\n    <row agent=\"Marera Arghun\" agentid=\"3018733\" agenttypeid=\"8\" corporationid=\"1000134\" divisionid=\"22\" level=\"1\" locationid=\"60014943\" locator=\"false\"/>\r\n    <row agent=\"Rasa Jaswelu\" agentid=\"3018734\" agenttypeid=\"8\" corporationid=\"1000134\" divisionid=\"22\" level=\"1\" locationid=\"60014943\" locator=\"false\"/>\r\n    <row agent=\"Yoti Haraisha\" agentid=\"3018735\" agenttypeid=\"8\" corporationid=\"1000134\" divisionid=\"22\" level=\"1\" locationid=\"60014943\" locator=\"false\"/>\r\n    <row agent=\"Nemphad Azbias\" agentid=\"3018736\" agenttypeid=\"8\" corporationid=\"1000134\" divisionid=\"22\" level=\"1\" locationid=\"60014943\" locator=\"false\"/>\r\n    <row agent=\"Goligere Debanelis\" agentid=\"3018737\" agenttypeid=\"8\" corporationid=\"1000157\" divisionid=\"22\" level=\"1\" locationid=\"60013993\" locator=\"false\"/>\r\n    <row agent=\"Gomosabin Zerdanne\" agentid=\"3018738\" agenttypeid=\"8\" corporationid=\"1000157\" divisionid=\"22\" level=\"1\" locationid=\"60013993\" locator=\"false\"/>\r\n    <row agent=\"Juvoire Sche\" agentid=\"3018739\" agenttypeid=\"8\" corporationid=\"1000157\" divisionid=\"22\" level=\"1\" locationid=\"60013993\" locator=\"false\"/>\r\n    <row agent=\"Oguet Aene\" agentid=\"3018740\" agenttypeid=\"8\" corporationid=\"1000157\" divisionid=\"22\" level=\"1\" locationid=\"60013993\" locator=\"false\"/>\r\n    <row agent=\"Ravacesel Roque\" agentid=\"3018741\" agenttypeid=\"8\" corporationid=\"1000157\" divisionid=\"22\" level=\"1\" locationid=\"60013993\" locator=\"false\"/>\r\n    <row agent=\"Grisier Challier\" agentid=\"3018742\" agenttypeid=\"8\" corporationid=\"1000097\" divisionid=\"23\" level=\"1\" locationid=\"60009430\" locator=\"false\"/>\r\n    <row agent=\"Binnie Nigolier\" agentid=\"3018743\" agenttypeid=\"8\" corporationid=\"1000097\" divisionid=\"23\" level=\"1\" locationid=\"60009430\" locator=\"false\"/>\r\n    <row agent=\"Mabvrion Atlete\" agentid=\"3018744\" agenttypeid=\"8\" corporationid=\"1000097\" divisionid=\"23\" level=\"1\" locationid=\"60009430\" locator=\"false\"/>\r\n    <row agent=\"Vianes Ounid\" agentid=\"3018745\" agenttypeid=\"8\" corporationid=\"1000124\" divisionid=\"23\" level=\"1\" locationid=\"60014149\" locator=\"false\"/>\r\n    <row agent=\"Horir Firvoon\" agentid=\"3018746\" agenttypeid=\"8\" corporationid=\"1000124\" divisionid=\"23\" level=\"1\" locationid=\"60014149\" locator=\"false\"/>\r\n    <row agent=\"Baftot Asluzof\" agentid=\"3018747\" agenttypeid=\"8\" corporationid=\"1000124\" divisionid=\"23\" level=\"1\" locationid=\"60014149\" locator=\"false\"/>\r\n    <row agent=\"Bollen Odridur\" agentid=\"3018748\" agenttypeid=\"8\" corporationid=\"1000124\" divisionid=\"22\" level=\"1\" locationid=\"60012211\" locator=\"false\"/>\r\n    <row agent=\"Golarad Hjom\" agentid=\"3018749\" agenttypeid=\"8\" corporationid=\"1000124\" divisionid=\"22\" level=\"1\" locationid=\"60012211\" locator=\"false\"/>\r\n    <row agent=\"Urandi Krilin\" agentid=\"3018750\" agenttypeid=\"8\" corporationid=\"1000124\" divisionid=\"24\" level=\"4\" locationid=\"60012211\" locator=\"false\"/>\r\n    <row agent=\"Bleur Hein\" agentid=\"3018751\" agenttypeid=\"8\" corporationid=\"1000124\" divisionid=\"24\" level=\"4\" locationid=\"60012211\" locator=\"false\"/>\r\n    <row agent=\"Lunuin Eurek\" agentid=\"3018752\" agenttypeid=\"8\" corporationid=\"1000138\" divisionid=\"24\" level=\"4\" locationid=\"60013069\" locator=\"false\"/>\r\n    <row agent=\"Henara Vern\" agentid=\"3018753\" agenttypeid=\"8\" corporationid=\"1000136\" divisionid=\"24\" level=\"4\" locationid=\"60012910\" locator=\"false\"/>\r\n    <row agent=\"Kamal Sharadom\" agentid=\"3018754\" agenttypeid=\"8\" corporationid=\"1000136\" divisionid=\"24\" level=\"4\" locationid=\"60012910\" locator=\"false\"/>\r\n    <row agent=\"Shusa Lemihon\" agentid=\"3018755\" agenttypeid=\"8\" corporationid=\"1000136\" divisionid=\"24\" level=\"4\" locationid=\"60012910\" locator=\"false\"/>\r\n    <row agent=\"Shusa Lemihonn\" agentid=\"3018756\" agenttypeid=\"8\" corporationid=\"1000162\" divisionid=\"24\" level=\"1\" locationid=\"60014284\" locator=\"false\"/>\r\n    <row agent=\"Kamal Sharadon\" agentid=\"3018757\" agenttypeid=\"8\" corporationid=\"1000162\" divisionid=\"24\" level=\"1\" locationid=\"60014284\" locator=\"false\"/>\r\n    <row agent=\"Maboula Ahrenon\" agentid=\"3018758\" agenttypeid=\"8\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014284\" locator=\"false\"/>\r\n    <row agent=\"Rerina Tarit\" agentid=\"3018759\" agenttypeid=\"8\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014284\" locator=\"false\"/>\r\n    <row agent=\"Avora Alkas\" agentid=\"3018760\" agenttypeid=\"8\" corporationid=\"1000161\" divisionid=\"23\" level=\"1\" locationid=\"60014149\" locator=\"false\"/>\r\n    <row agent=\"Riluko Hik\" agentid=\"3018761\" agenttypeid=\"8\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005233\" locator=\"false\"/>\r\n    <row agent=\"Zwod Aden\" agentid=\"3018762\" agenttypeid=\"8\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005233\" locator=\"false\"/>\r\n    <row agent=\"Uiswin Aurtur\" agentid=\"3018763\" agenttypeid=\"8\" corporationid=\"1000055\" divisionid=\"23\" level=\"1\" locationid=\"60005233\" locator=\"false\"/>\r\n    <row agent=\"Kakala Ikkawa\" agentid=\"3018764\" agenttypeid=\"8\" corporationid=\"1000010\" divisionid=\"22\" level=\"4\" locationid=\"60000976\" locator=\"false\"/>\r\n    <row agent=\"Erakki Kihuo\" agentid=\"3018765\" agenttypeid=\"8\" corporationid=\"1000010\" divisionid=\"22\" level=\"4\" locationid=\"60000976\" locator=\"false\"/>\r\n    <row agent=\"Erakki Kihu\" agentid=\"3018766\" agenttypeid=\"8\" corporationid=\"1000010\" divisionid=\"23\" level=\"4\" locationid=\"60000976\" locator=\"false\"/>\r\n    <row agent=\"Oduma Pakane\" agentid=\"3018767\" agenttypeid=\"8\" corporationid=\"1000010\" divisionid=\"24\" level=\"4\" locationid=\"60000976\" locator=\"false\"/>\r\n    <row agent=\"Nuomo Kaavunin\" agentid=\"3018768\" agenttypeid=\"8\" corporationid=\"1000010\" divisionid=\"22\" level=\"4\" locationid=\"60000976\" locator=\"false\"/>\r\n    <row agent=\"Lauka Ikunol\" agentid=\"3018769\" agenttypeid=\"8\" corporationid=\"1000010\" divisionid=\"24\" level=\"4\" locationid=\"60000976\" locator=\"false\"/>\r\n    <row agent=\"test dude blah\" agentid=\"3018770\" agenttypeid=\"8\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008368\" locator=\"false\"/>\r\n    <row agent=\"Dorim Fatimar\" agentid=\"3018771\" agenttypeid=\"8\" corporationid=\"1000091\" divisionid=\"24\" level=\"4\" locationid=\"60008758\" locator=\"false\"/>\r\n    <row agent=\"Reqqa Bratesch\" agentid=\"3018772\" agenttypeid=\"8\" corporationid=\"1000091\" divisionid=\"22\" level=\"4\" locationid=\"60008758\" locator=\"false\"/>\r\n    <row agent=\"Kushan Horeat\" agentid=\"3018773\" agenttypeid=\"8\" corporationid=\"1000091\" divisionid=\"22\" level=\"4\" locationid=\"60008758\" locator=\"false\"/>\r\n    <row agent=\"Ragot Parah\" agentid=\"3018774\" agenttypeid=\"8\" corporationid=\"1000091\" divisionid=\"24\" level=\"4\" locationid=\"60008758\" locator=\"false\"/>\r\n    <row agent=\"Nimpor Fatimar\" agentid=\"3018775\" agenttypeid=\"8\" corporationid=\"1000091\" divisionid=\"24\" level=\"4\" locationid=\"60008758\" locator=\"false\"/>\r\n    <row agent=\"Aseri Toras\" agentid=\"3018801\" agenttypeid=\"8\" corporationid=\"1000044\" divisionid=\"22\" level=\"1\" locationid=\"60015001\" locator=\"false\"/>\r\n    <row agent=\"Inola Komo\" agentid=\"3018802\" agenttypeid=\"8\" corporationid=\"1000044\" divisionid=\"22\" level=\"1\" locationid=\"60015002\" locator=\"false\"/>\r\n    <row agent=\"Ogyamoras Jorvunen\" agentid=\"3018803\" agenttypeid=\"8\" corporationid=\"1000044\" divisionid=\"22\" level=\"1\" locationid=\"60015003\" locator=\"false\"/>\r\n    <row agent=\"Nutsu Kummabainen\" agentid=\"3018804\" agenttypeid=\"8\" corporationid=\"1000044\" divisionid=\"22\" level=\"1\" locationid=\"60015004\" locator=\"false\"/>\r\n    <row agent=\"Ohkanen Katamara\" agentid=\"3018805\" agenttypeid=\"8\" corporationid=\"1000045\" divisionid=\"22\" level=\"1\" locationid=\"60015005\" locator=\"false\"/>\r\n    <row agent=\"Kappas Jaki\" agentid=\"3018806\" agenttypeid=\"8\" corporationid=\"1000045\" divisionid=\"22\" level=\"1\" locationid=\"60015006\" locator=\"false\"/>\r\n    <row agent=\"Onno Ichinita\" agentid=\"3018808\" agenttypeid=\"8\" corporationid=\"1000045\" divisionid=\"22\" level=\"1\" locationid=\"60015008\" locator=\"false\"/>\r\n    <row agent=\"Faradana Nobina\" agentid=\"3018809\" agenttypeid=\"8\" corporationid=\"1000077\" divisionid=\"22\" level=\"1\" locationid=\"60015009\" locator=\"false\"/>\r\n    <row agent=\"Futa Rura\" agentid=\"3018810\" agenttypeid=\"8\" corporationid=\"1000077\" divisionid=\"22\" level=\"1\" locationid=\"60015010\" locator=\"false\"/>\r\n    <row agent=\"Haveb Ochirel\" agentid=\"3018811\" agenttypeid=\"8\" corporationid=\"1000077\" divisionid=\"22\" level=\"1\" locationid=\"60015011\" locator=\"false\"/>\r\n    <row agent=\"Hiyi Haga\" agentid=\"3018812\" agenttypeid=\"8\" corporationid=\"1000077\" divisionid=\"22\" level=\"1\" locationid=\"60015012\" locator=\"false\"/>\r\n    <row agent=\"Adirel Vientes\" agentid=\"3018813\" agenttypeid=\"8\" corporationid=\"1000115\" divisionid=\"22\" level=\"1\" locationid=\"60015013\" locator=\"false\"/>\r\n    <row agent=\"Andree Affin\" agentid=\"3018814\" agenttypeid=\"8\" corporationid=\"1000115\" divisionid=\"22\" level=\"1\" locationid=\"60015014\" locator=\"false\"/>\r\n    <row agent=\"Antes Bacremaert\" agentid=\"3018815\" agenttypeid=\"8\" corporationid=\"1000115\" divisionid=\"22\" level=\"1\" locationid=\"60015015\" locator=\"false\"/>\r\n    <row agent=\"Aubrittane Archene\" agentid=\"3018816\" agenttypeid=\"8\" corporationid=\"1000115\" divisionid=\"22\" level=\"1\" locationid=\"60015016\" locator=\"false\"/>\r\n    <row agent=\"Akhwa Meryi\" agentid=\"3018817\" agenttypeid=\"8\" corporationid=\"1000165\" divisionid=\"22\" level=\"1\" locationid=\"60015017\" locator=\"false\"/>\r\n    <row agent=\"Ardav Akra\" agentid=\"3018818\" agenttypeid=\"8\" corporationid=\"1000165\" divisionid=\"22\" level=\"1\" locationid=\"60015018\" locator=\"false\"/>\r\n    <row agent=\"Ashouh Geerna\" agentid=\"3018819\" agenttypeid=\"8\" corporationid=\"1000165\" divisionid=\"22\" level=\"1\" locationid=\"60015019\" locator=\"false\"/>\r\n    <row agent=\"Assat Zutati\" agentid=\"3018820\" agenttypeid=\"8\" corporationid=\"1000165\" divisionid=\"22\" level=\"1\" locationid=\"60015020\" locator=\"false\"/>\r\n    <row agent=\"Mazita Sarodia\" agentid=\"3018821\" agenttypeid=\"8\" corporationid=\"1000166\" divisionid=\"22\" level=\"1\" locationid=\"60015021\" locator=\"false\"/>\r\n    <row agent=\"Memass Hamennod\" agentid=\"3018822\" agenttypeid=\"8\" corporationid=\"1000166\" divisionid=\"22\" level=\"1\" locationid=\"60015022\" locator=\"false\"/>\r\n    <row agent=\"Niser Ashouh\" agentid=\"3018823\" agenttypeid=\"8\" corporationid=\"1000166\" divisionid=\"22\" level=\"1\" locationid=\"60015023\" locator=\"false\"/>\r\n    <row agent=\"Shemah Yohsi\" agentid=\"3018824\" agenttypeid=\"8\" corporationid=\"1000166\" divisionid=\"22\" level=\"1\" locationid=\"60015024\" locator=\"false\"/>\r\n    <row agent=\"Saatigata Osila\" agentid=\"3018827\" agenttypeid=\"8\" corporationid=\"1000167\" divisionid=\"22\" level=\"1\" locationid=\"60015027\" locator=\"false\"/>\r\n    <row agent=\"Aunlier Cridemotte\" agentid=\"3018829\" agenttypeid=\"8\" corporationid=\"1000168\" divisionid=\"22\" level=\"1\" locationid=\"60015029\" locator=\"false\"/>\r\n    <row agent=\"Daemire Cylelle\" agentid=\"3018830\" agenttypeid=\"8\" corporationid=\"1000168\" divisionid=\"22\" level=\"1\" locationid=\"60015030\" locator=\"false\"/>\r\n    <row agent=\"Havere Kelmiler\" agentid=\"3018831\" agenttypeid=\"8\" corporationid=\"1000168\" divisionid=\"22\" level=\"1\" locationid=\"60015031\" locator=\"false\"/>\r\n    <row agent=\"Lacmotet Surmerent\" agentid=\"3018832\" agenttypeid=\"8\" corporationid=\"1000168\" divisionid=\"22\" level=\"1\" locationid=\"60015032\" locator=\"false\"/>\r\n    <row agent=\"Surier Suvaere\" agentid=\"3018833\" agenttypeid=\"8\" corporationid=\"1000169\" divisionid=\"22\" level=\"1\" locationid=\"60015033\" locator=\"false\"/>\r\n    <row agent=\"Trillicon Tousger\" agentid=\"3018834\" agenttypeid=\"8\" corporationid=\"1000169\" divisionid=\"22\" level=\"1\" locationid=\"60015034\" locator=\"false\"/>\r\n    <row agent=\"Vientes Albroralle\" agentid=\"3018835\" agenttypeid=\"8\" corporationid=\"1000169\" divisionid=\"22\" level=\"1\" locationid=\"60015035\" locator=\"false\"/>\r\n    <row agent=\"Yvocque Brardoen\" agentid=\"3018836\" agenttypeid=\"8\" corporationid=\"1000169\" divisionid=\"22\" level=\"1\" locationid=\"60015036\" locator=\"false\"/>\r\n    <row agent=\"Alfiker Maliddar\" agentid=\"3018837\" agenttypeid=\"8\" corporationid=\"1000170\" divisionid=\"22\" level=\"1\" locationid=\"60015037\" locator=\"false\"/>\r\n    <row agent=\"Ansdald Nyragi\" agentid=\"3018838\" agenttypeid=\"8\" corporationid=\"1000170\" divisionid=\"22\" level=\"1\" locationid=\"60015038\" locator=\"false\"/>\r\n    <row agent=\"Bria Arnkorin\" agentid=\"3018839\" agenttypeid=\"8\" corporationid=\"1000170\" divisionid=\"22\" level=\"1\" locationid=\"60015039\" locator=\"false\"/>\r\n    <row agent=\"Evuttur Arpen\" agentid=\"3018840\" agenttypeid=\"8\" corporationid=\"1000170\" divisionid=\"22\" level=\"1\" locationid=\"60015040\" locator=\"false\"/>\r\n    <row agent=\"Firginia Fodelbert\" agentid=\"3018841\" agenttypeid=\"8\" corporationid=\"1000171\" divisionid=\"22\" level=\"1\" locationid=\"60015041\" locator=\"false\"/>\r\n    <row agent=\"Halvuli Alfiker\" agentid=\"3018842\" agenttypeid=\"8\" corporationid=\"1000171\" divisionid=\"22\" level=\"1\" locationid=\"60015042\" locator=\"false\"/>\r\n    <row agent=\"Hebrid Mangarik\" agentid=\"3018843\" agenttypeid=\"8\" corporationid=\"1000171\" divisionid=\"22\" level=\"1\" locationid=\"60015043\" locator=\"false\"/>\r\n    <row agent=\"Herundio Bodweradat\" agentid=\"3018844\" agenttypeid=\"8\" corporationid=\"1000171\" divisionid=\"22\" level=\"1\" locationid=\"60015044\" locator=\"false\"/>\r\n    <row agent=\"Jomodar Infreger\" agentid=\"3018845\" agenttypeid=\"8\" corporationid=\"1000172\" divisionid=\"22\" level=\"1\" locationid=\"60015045\" locator=\"false\"/>\r\n    <row agent=\"Meinevedar Austrudelef\" agentid=\"3018846\" agenttypeid=\"8\" corporationid=\"1000172\" divisionid=\"22\" level=\"1\" locationid=\"60015046\" locator=\"false\"/>\r\n    <row agent=\"Solur Erfar\" agentid=\"3018847\" agenttypeid=\"8\" corporationid=\"1000172\" divisionid=\"22\" level=\"1\" locationid=\"60015047\" locator=\"false\"/>\r\n    <row agent=\"Vimeini Jomodar\" agentid=\"3018848\" agenttypeid=\"8\" corporationid=\"1000172\" divisionid=\"22\" level=\"1\" locationid=\"60015048\" locator=\"false\"/>\r\n    <row agent=\"Yekti Kimebu\" agentid=\"3018849\" agenttypeid=\"8\" corporationid=\"1000134\" divisionid=\"24\" level=\"4\" locationid=\"60014943\" locator=\"false\"/>\r\n    <row agent=\"Pondah Shanjih\" agentid=\"3018850\" agenttypeid=\"8\" corporationid=\"1000134\" divisionid=\"24\" level=\"4\" locationid=\"60014943\" locator=\"false\"/>\r\n    <row agent=\"Charit Rish\" agentid=\"3018851\" agenttypeid=\"8\" corporationid=\"1000134\" divisionid=\"22\" level=\"4\" locationid=\"60014943\" locator=\"false\"/>\r\n    <row agent=\"Neyan Khahsel\" agentid=\"3018852\" agenttypeid=\"8\" corporationid=\"1000134\" divisionid=\"24\" level=\"4\" locationid=\"60014943\" locator=\"false\"/>\r\n    <row agent=\"Kaymotin Gradance\" agentid=\"3018853\" agenttypeid=\"8\" corporationid=\"1000135\" divisionid=\"24\" level=\"4\" locationid=\"60012859\" locator=\"false\"/>\r\n    <row agent=\"Wessette Gauze\" agentid=\"3018854\" agenttypeid=\"8\" corporationid=\"1000135\" divisionid=\"22\" level=\"4\" locationid=\"60012859\" locator=\"false\"/>\r\n    <row agent=\"Bley Oreriel\" agentid=\"3018855\" agenttypeid=\"8\" corporationid=\"1000135\" divisionid=\"24\" level=\"4\" locationid=\"60012859\" locator=\"false\"/>\r\n    <row agent=\"Cliene Veine\" agentid=\"3018856\" agenttypeid=\"8\" corporationid=\"1000135\" divisionid=\"24\" level=\"4\" locationid=\"60012859\" locator=\"false\"/>\r\n    <row agent=\"Jarvas Ladier\" agentid=\"3018857\" agenttypeid=\"8\" corporationid=\"1000135\" divisionid=\"24\" level=\"4\" locationid=\"60012859\" locator=\"false\"/>\r\n    <row agent=\"Marvernois Ruemin\" agentid=\"3018858\" agenttypeid=\"8\" corporationid=\"1000107\" divisionid=\"22\" level=\"4\" locationid=\"60010636\" locator=\"false\"/>\r\n    <row agent=\"Orain Purcour\" agentid=\"3018859\" agenttypeid=\"8\" corporationid=\"1000107\" divisionid=\"22\" level=\"4\" locationid=\"60010636\" locator=\"false\"/>\r\n    <row agent=\"Dars Amene\" agentid=\"3018860\" agenttypeid=\"8\" corporationid=\"1000107\" divisionid=\"22\" level=\"4\" locationid=\"60010636\" locator=\"false\"/>\r\n    <row agent=\"Valedt Midalle\" agentid=\"3018861\" agenttypeid=\"8\" corporationid=\"1000107\" divisionid=\"22\" level=\"4\" locationid=\"60010636\" locator=\"false\"/>\r\n    <row agent=\"Ovon Flac\" agentid=\"3018862\" agenttypeid=\"8\" corporationid=\"1000107\" divisionid=\"24\" level=\"4\" locationid=\"60010636\" locator=\"false\"/>\r\n    <row agent=\"Androver Hnill\" agentid=\"3018863\" agenttypeid=\"8\" corporationid=\"1000052\" divisionid=\"24\" level=\"4\" locationid=\"60004924\" locator=\"false\"/>\r\n    <row agent=\"Akelf Ortar\" agentid=\"3018864\" agenttypeid=\"8\" corporationid=\"1000052\" divisionid=\"24\" level=\"4\" locationid=\"60004924\" locator=\"false\"/>\r\n    <row agent=\"Lafuni Oduntra\" agentid=\"3018865\" agenttypeid=\"8\" corporationid=\"1000052\" divisionid=\"24\" level=\"4\" locationid=\"60004924\" locator=\"false\"/>\r\n    <row agent=\"Sigulo Ansa\" agentid=\"3018866\" agenttypeid=\"8\" corporationid=\"1000052\" divisionid=\"24\" level=\"4\" locationid=\"60004924\" locator=\"false\"/>\r\n    <row agent=\"Ilkur Eiren\" agentid=\"3018867\" agenttypeid=\"8\" corporationid=\"1000052\" divisionid=\"24\" level=\"4\" locationid=\"60004924\" locator=\"false\"/>\r\n    <row agent=\"Dalitat Dakpor\" agentid=\"3018868\" agenttypeid=\"8\" corporationid=\"1000134\" divisionid=\"24\" level=\"4\" locationid=\"60014943\" locator=\"false\"/>\r\n    <row agent=\"Kanmilia Oldit\" agentid=\"3018869\" agenttypeid=\"8\" corporationid=\"1000136\" divisionid=\"24\" level=\"4\" locationid=\"60012910\" locator=\"false\"/>\r\n    <row agent=\"Altan Uigot\" agentid=\"3018870\" agenttypeid=\"8\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005053\" locator=\"false\"/>\r\n    <row agent=\"Frera Elgas\" agentid=\"3018871\" agenttypeid=\"8\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005053\" locator=\"false\"/>\r\n    <row agent=\"Frie Tasmulo\" agentid=\"3018872\" agenttypeid=\"8\" corporationid=\"1000054\" divisionid=\"24\" level=\"2\" locationid=\"60005053\" locator=\"false\"/>\r\n    <row agent=\"Adari Jammalgen\" agentid=\"3018873\" agenttypeid=\"8\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005053\" locator=\"false\"/>\r\n    <row agent=\"Sanderi Ualmun\" agentid=\"3018874\" agenttypeid=\"8\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005053\" locator=\"false\"/>\r\n    <row agent=\"Habad Rokusten\" agentid=\"3018875\" agenttypeid=\"8\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005053\" locator=\"false\"/>\r\n    <row agent=\"Skia Alfota\" agentid=\"3018876\" agenttypeid=\"8\" corporationid=\"1000054\" divisionid=\"24\" level=\"4\" locationid=\"60005053\" locator=\"false\"/>\r\n    <row agent=\"Eget Skovilen\" agentid=\"3018877\" agenttypeid=\"8\" corporationid=\"1000054\" divisionid=\"24\" level=\"4\" locationid=\"60005053\" locator=\"false\"/>\r\n    <row agent=\"Osidei Esama\" agentid=\"3018878\" agenttypeid=\"8\" corporationid=\"1000054\" divisionid=\"24\" level=\"4\" locationid=\"60005053\" locator=\"false\"/>\r\n    <row agent=\"Blique Hazardt\" agentid=\"3018879\" agenttypeid=\"8\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011734\" locator=\"false\"/>\r\n    <row agent=\"Alliot Graferr\" agentid=\"3018880\" agenttypeid=\"8\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011734\" locator=\"false\"/>\r\n    <row agent=\"Mobas Jouey\" agentid=\"3018881\" agenttypeid=\"8\" corporationid=\"1000120\" divisionid=\"24\" level=\"2\" locationid=\"60011734\" locator=\"false\"/>\r\n    <row agent=\"Alon Ahrassine\" agentid=\"3018882\" agenttypeid=\"8\" corporationid=\"1000120\" divisionid=\"24\" level=\"3\" locationid=\"60011734\" locator=\"false\"/>\r\n    <row agent=\"Amatin Chens\" agentid=\"3018883\" agenttypeid=\"8\" corporationid=\"1000120\" divisionid=\"24\" level=\"3\" locationid=\"60011734\" locator=\"false\"/>\r\n    <row agent=\"Fims Artalanche\" agentid=\"3018884\" agenttypeid=\"8\" corporationid=\"1000120\" divisionid=\"24\" level=\"3\" locationid=\"60011734\" locator=\"false\"/>\r\n    <row agent=\"Hana Isourin\" agentid=\"3018885\" agenttypeid=\"8\" corporationid=\"1000120\" divisionid=\"24\" level=\"4\" locationid=\"60011734\" locator=\"false\"/>\r\n    <row agent=\"Carvaire Botesane\" agentid=\"3018886\" agenttypeid=\"8\" corporationid=\"1000120\" divisionid=\"24\" level=\"4\" locationid=\"60011734\" locator=\"false\"/>\r\n    <row agent=\"Oisedia Gync\" agentid=\"3018887\" agenttypeid=\"8\" corporationid=\"1000120\" divisionid=\"24\" level=\"4\" locationid=\"60011734\" locator=\"false\"/>\r\n    <row agent=\"Selate Kalami\" agentid=\"3018888\" agenttypeid=\"8\" corporationid=\"1000080\" divisionid=\"24\" level=\"1\" locationid=\"60007888\" locator=\"false\"/>\r\n    <row agent=\"Jur Zehbani\" agentid=\"3018889\" agenttypeid=\"8\" corporationid=\"1000080\" divisionid=\"24\" level=\"2\" locationid=\"60007888\" locator=\"false\"/>\r\n    <row agent=\"Subin Barama\" agentid=\"3018890\" agenttypeid=\"8\" corporationid=\"1000080\" divisionid=\"24\" level=\"2\" locationid=\"60007888\" locator=\"false\"/>\r\n    <row agent=\"Timafa Esihiz\" agentid=\"3018891\" agenttypeid=\"8\" corporationid=\"1000080\" divisionid=\"24\" level=\"3\" locationid=\"60007888\" locator=\"false\"/>\r\n    <row agent=\"Hatia Madase\" agentid=\"3018892\" agenttypeid=\"8\" corporationid=\"1000080\" divisionid=\"24\" level=\"3\" locationid=\"60007888\" locator=\"false\"/>\r\n    <row agent=\"Odoosh Teroul\" agentid=\"3018893\" agenttypeid=\"8\" corporationid=\"1000080\" divisionid=\"24\" level=\"3\" locationid=\"60007888\" locator=\"false\"/>\r\n    <row agent=\"Matna Meri\" agentid=\"3018894\" agenttypeid=\"8\" corporationid=\"1000080\" divisionid=\"24\" level=\"4\" locationid=\"60007888\" locator=\"false\"/>\r\n    <row agent=\"Juki Khoun\" agentid=\"3018895\" agenttypeid=\"8\" corporationid=\"1000080\" divisionid=\"24\" level=\"4\" locationid=\"60007888\" locator=\"false\"/>\r\n    <row agent=\"Urat Mehrekar\" agentid=\"3018896\" agenttypeid=\"8\" corporationid=\"1000080\" divisionid=\"24\" level=\"4\" locationid=\"60007888\" locator=\"false\"/>\r\n    <row agent=\"Ollen Alulama\" agentid=\"3018897\" agenttypeid=\"8\" corporationid=\"1000039\" divisionid=\"24\" level=\"1\" locationid=\"60004000\" locator=\"false\"/>\r\n    <row agent=\"Ichmari Obesa\" agentid=\"3018898\" agenttypeid=\"8\" corporationid=\"1000039\" divisionid=\"24\" level=\"2\" locationid=\"60004000\" locator=\"false\"/>\r\n    <row agent=\"Kui Hisken\" agentid=\"3018899\" agenttypeid=\"8\" corporationid=\"1000039\" divisionid=\"24\" level=\"2\" locationid=\"60004000\" locator=\"false\"/>\r\n    <row agent=\"Tojawara Saziras\" agentid=\"3018900\" agenttypeid=\"8\" corporationid=\"1000039\" divisionid=\"24\" level=\"3\" locationid=\"60004000\" locator=\"false\"/>\r\n    <row agent=\"Oko Alo\" agentid=\"3018901\" agenttypeid=\"8\" corporationid=\"1000039\" divisionid=\"24\" level=\"3\" locationid=\"60004000\" locator=\"false\"/>\r\n    <row agent=\"Isu Jokaga\" agentid=\"3018902\" agenttypeid=\"8\" corporationid=\"1000039\" divisionid=\"24\" level=\"3\" locationid=\"60004000\" locator=\"false\"/>\r\n    <row agent=\"Ruupas Vonni\" agentid=\"3018903\" agenttypeid=\"8\" corporationid=\"1000039\" divisionid=\"24\" level=\"4\" locationid=\"60004000\" locator=\"false\"/>\r\n    <row agent=\"Ozunoa Poskat\" agentid=\"3018904\" agenttypeid=\"8\" corporationid=\"1000039\" divisionid=\"24\" level=\"4\" locationid=\"60004000\" locator=\"false\"/>\r\n    <row agent=\"Kanouchi Hisama\" agentid=\"3018905\" agenttypeid=\"8\" corporationid=\"1000039\" divisionid=\"24\" level=\"4\" locationid=\"60004000\" locator=\"false\"/>\r\n    <row agent=\"Hazar Arjidsi\" agentid=\"3018906\" agenttypeid=\"8\" corporationid=\"1000123\" divisionid=\"24\" level=\"1\" locationid=\"60012124\" locator=\"false\"/>\r\n    <row agent=\"Sish Iaokih\" agentid=\"3018907\" agenttypeid=\"8\" corporationid=\"1000123\" divisionid=\"24\" level=\"2\" locationid=\"60012124\" locator=\"false\"/>\r\n    <row agent=\"Darabu Harva\" agentid=\"3018908\" agenttypeid=\"8\" corporationid=\"1000123\" divisionid=\"24\" level=\"2\" locationid=\"60012124\" locator=\"false\"/>\r\n    <row agent=\"Derqa Mandame\" agentid=\"3018909\" agenttypeid=\"8\" corporationid=\"1000123\" divisionid=\"24\" level=\"3\" locationid=\"60012124\" locator=\"false\"/>\r\n    <row agent=\"Cimalo Mahnab\" agentid=\"3018910\" agenttypeid=\"8\" corporationid=\"1000123\" divisionid=\"24\" level=\"3\" locationid=\"60012124\" locator=\"false\"/>\r\n    <row agent=\"Bamona Pizteed\" agentid=\"3018911\" agenttypeid=\"8\" corporationid=\"1000123\" divisionid=\"24\" level=\"3\" locationid=\"60012124\" locator=\"false\"/>\r\n    <row agent=\"Rolnia Houmar\" agentid=\"3018912\" agenttypeid=\"8\" corporationid=\"1000123\" divisionid=\"24\" level=\"4\" locationid=\"60012124\" locator=\"false\"/>\r\n    <row agent=\"Migart Anunat\" agentid=\"3018913\" agenttypeid=\"8\" corporationid=\"1000123\" divisionid=\"24\" level=\"4\" locationid=\"60012124\" locator=\"false\"/>\r\n    <row agent=\"Tizeli Reymta\" agentid=\"3018914\" agenttypeid=\"8\" corporationid=\"1000123\" divisionid=\"24\" level=\"4\" locationid=\"60012124\" locator=\"false\"/>\r\n    <row agent=\"Jeremy Tacs\" agentid=\"3018915\" agenttypeid=\"8\" corporationid=\"1000148\" divisionid=\"24\" level=\"2\" locationid=\"60012256\" locator=\"false\"/>\r\n    <row agent=\"Porak Manotan\" agentid=\"3018916\" agenttypeid=\"8\" corporationid=\"1000138\" divisionid=\"24\" level=\"1\" locationid=\"60013069\" locator=\"false\"/>\r\n    <row agent=\"Porrak Manotan\" agentid=\"3018917\" agenttypeid=\"8\" corporationid=\"1000138\" divisionid=\"24\" level=\"1\" locationid=\"60013069\" locator=\"false\"/>\r\n    <row agent=\"Pakar Mensk\" agentid=\"3018918\" agenttypeid=\"8\" corporationid=\"1000138\" divisionid=\"24\" level=\"1\" locationid=\"60013069\" locator=\"false\"/>\r\n    <row agent=\"Atora Bamad\" agentid=\"3018919\" agenttypeid=\"8\" corporationid=\"1000170\" divisionid=\"22\" level=\"1\" locationid=\"60015038\" locator=\"false\"/>\r\n    <row agent=\"Fykalia Adaferid\" agentid=\"3018920\" agenttypeid=\"12\" corporationid=\"1000170\" divisionid=\"28\" level=\"1\" locationid=\"60015037\" locator=\"false\"/>\r\n    <row agent=\"Chakh Madafe\" agentid=\"3018921\" agenttypeid=\"12\" corporationid=\"1000166\" divisionid=\"28\" level=\"1\" locationid=\"60015021\" locator=\"false\"/>\r\n    <row agent=\"Hasier Parcie\" agentid=\"3018923\" agenttypeid=\"12\" corporationid=\"1000168\" divisionid=\"28\" level=\"1\" locationid=\"60015029\" locator=\"false\"/>\r\n    <row agent=\"Zidah Arvo\" agentid=\"3018924\" agenttypeid=\"12\" corporationid=\"1000077\" divisionid=\"27\" level=\"1\" locationid=\"60015010\" locator=\"false\"/>\r\n    <row agent=\"Houve Raennere\" agentid=\"3018926\" agenttypeid=\"12\" corporationid=\"1000169\" divisionid=\"27\" level=\"1\" locationid=\"60015036\" locator=\"false\"/>\r\n    <row agent=\"Uba Virserin\" agentid=\"3018927\" agenttypeid=\"12\" corporationid=\"1000171\" divisionid=\"27\" level=\"1\" locationid=\"60015041\" locator=\"false\"/>\r\n    <row agent=\"Ochishi Veilai\" agentid=\"3018929\" agenttypeid=\"12\" corporationid=\"1000045\" divisionid=\"25\" level=\"1\" locationid=\"60015005\" locator=\"false\"/>\r\n    <row agent=\"Jiekan Jepen\" agentid=\"3018930\" agenttypeid=\"12\" corporationid=\"1000165\" divisionid=\"25\" level=\"1\" locationid=\"60015020\" locator=\"false\"/>\r\n    <row agent=\"Antogase Pandon\" agentid=\"3018931\" agenttypeid=\"12\" corporationid=\"1000115\" divisionid=\"25\" level=\"1\" locationid=\"60015016\" locator=\"false\"/>\r\n    <row agent=\"Dalofer Mattore\" agentid=\"3018932\" agenttypeid=\"12\" corporationid=\"1000172\" divisionid=\"25\" level=\"1\" locationid=\"60015046\" locator=\"false\"/>\r\n    <row agent=\"Christer Fuglesang\" agentid=\"3018934\" agenttypeid=\"8\" corporationid=\"1000148\" divisionid=\"24\" level=\"3\" locationid=\"60012331\" locator=\"false\"/>\r\n    <row agent=\"Ranta Tarumo\" agentid=\"3018935\" agenttypeid=\"12\" corporationid=\"1000167\" divisionid=\"28\" level=\"1\" locationid=\"60015027\" locator=\"false\"/>\r\n    <row agent=\"Abishi Tin\" agentid=\"3018937\" agenttypeid=\"8\" corporationid=\"1000044\" divisionid=\"22\" level=\"1\" locationid=\"60015003\" locator=\"false\"/>\r\n    <row agent=\"Abishi Tian\" agentid=\"3018938\" agenttypeid=\"12\" corporationid=\"1000044\" divisionid=\"27\" level=\"1\" locationid=\"60015001\" locator=\"false\"/>\r\n    <row agent=\"Moodle Doodledoo\" agentid=\"3018953\" agenttypeid=\"8\" corporationid=\"1000135\" divisionid=\"22\" level=\"1\" locationid=\"60014839\" locator=\"false\"/>\r\n    <row agent=\"Fendahl Ashriel\" agentid=\"3018954\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"5\" locationid=\"60012793\" locator=\"false\"/>\r\n    <row agent=\"Lauggunn Sungam\" agentid=\"3018955\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"5\" locationid=\"60008389\" locator=\"false\"/>\r\n    <row agent=\"Issiah Hakn\" agentid=\"3018956\" agenttypeid=\"2\" corporationid=\"1000084\" divisionid=\"24\" level=\"5\" locationid=\"60008446\" locator=\"false\"/>\r\n    <row agent=\"Eymur Bettik\" agentid=\"3018957\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"5\" locationid=\"60004603\" locator=\"false\"/>\r\n    <row agent=\"Otis Norch\" agentid=\"3018958\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"5\" locationid=\"60004600\" locator=\"false\"/>\r\n    <row agent=\"Khassan Warden\" agentid=\"3018959\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"5\" locationid=\"60004792\" locator=\"false\"/>\r\n    <row agent=\"Ragnar Evald\" agentid=\"3018960\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"5\" locationid=\"60004825\" locator=\"false\"/>\r\n    <row agent=\"Vari Nosemi\" agentid=\"3018961\" agenttypeid=\"2\" corporationid=\"1000082\" divisionid=\"24\" level=\"5\" locationid=\"60008149\" locator=\"false\"/>\r\n    <row agent=\"Reptu Gaxhen\" agentid=\"3018962\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"5\" locationid=\"60004855\" locator=\"false\"/>\r\n    <row agent=\"Hojn Trubeflied\" agentid=\"3018963\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"5\" locationid=\"60004894\" locator=\"false\"/>\r\n    <row agent=\"Seri Corsiddia\" agentid=\"3018964\" agenttypeid=\"2\" corporationid=\"1000051\" divisionid=\"24\" level=\"5\" locationid=\"60004885\" locator=\"false\"/>\r\n    <row agent=\"Udba Namhar\" agentid=\"3018965\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"5\" locationid=\"60007927\" locator=\"false\"/>\r\n    <row agent=\"Irtep Moxath\" agentid=\"3018966\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"5\" locationid=\"60012163\" locator=\"false\"/>\r\n    <row agent=\"Elena Shamarll\" agentid=\"3018967\" agenttypeid=\"2\" corporationid=\"1000123\" divisionid=\"24\" level=\"5\" locationid=\"60012175\" locator=\"false\"/>\r\n    <row agent=\"Inuh Fren\" agentid=\"3018968\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"5\" locationid=\"60013972\" locator=\"false\"/>\r\n    <row agent=\"Girn Egnai\" agentid=\"3018969\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"5\" locationid=\"60005113\" locator=\"false\"/>\r\n    <row agent=\"Nai Shopbi\" agentid=\"3018970\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"5\" locationid=\"60005206\" locator=\"false\"/>\r\n    <row agent=\"Ishariel Torash\" agentid=\"3018971\" agenttypeid=\"2\" corporationid=\"1000156\" divisionid=\"24\" level=\"5\" locationid=\"60013966\" locator=\"false\"/>\r\n    <row agent=\"Kagrish Toggam\" agentid=\"3018972\" agenttypeid=\"2\" corporationid=\"1000054\" divisionid=\"24\" level=\"5\" locationid=\"60005077\" locator=\"false\"/>\r\n    <row agent=\"Petur Oskarin\" agentid=\"3018973\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"5\" locationid=\"60003808\" locator=\"false\"/>\r\n    <row agent=\"Eva Ramlih\" agentid=\"3018974\" agenttypeid=\"2\" corporationid=\"1000080\" divisionid=\"24\" level=\"5\" locationid=\"60007951\" locator=\"false\"/>\r\n    <row agent=\"Naan Lekspar\" agentid=\"3018975\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"5\" locationid=\"60003823\" locator=\"false\"/>\r\n    <row agent=\"Elias Mousse\" agentid=\"3018976\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"5\" locationid=\"60012067\" locator=\"false\"/>\r\n    <row agent=\"Typhon Reibver\" agentid=\"3018977\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"5\" locationid=\"60012112\" locator=\"false\"/>\r\n    <row agent=\"Chian Teema\" agentid=\"3018978\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"24\" level=\"5\" locationid=\"60003958\" locator=\"false\"/>\r\n    <row agent=\"Landea Vrankef\" agentid=\"3018979\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"5\" locationid=\"60003976\" locator=\"false\"/>\r\n    <row agent=\"Miharbi Nahk\" agentid=\"3018980\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"5\" locationid=\"60012091\" locator=\"false\"/>\r\n    <row agent=\"Reuvo Thassian\" agentid=\"3018982\" agenttypeid=\"2\" corporationid=\"1000122\" divisionid=\"24\" level=\"5\" locationid=\"60012022\" locator=\"false\"/>\r\n    <row agent=\"Doyo Jaked\" agentid=\"3018983\" agenttypeid=\"2\" corporationid=\"1000040\" divisionid=\"24\" level=\"5\" locationid=\"60004081\" locator=\"false\"/>\r\n    <row agent=\"Yarn Lynch\" agentid=\"3018984\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"5\" locationid=\"60004315\" locator=\"false\"/>\r\n    <row agent=\"Evad Bowman\" agentid=\"3018985\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"5\" locationid=\"60011779\" locator=\"false\"/>\r\n    <row agent=\"Nojana Dyodo\" agentid=\"3018986\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"5\" locationid=\"60004375\" locator=\"false\"/>\r\n    <row agent=\"Cale Greys\" agentid=\"3018987\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"4\" locationid=\"60004408\" locator=\"false\"/>\r\n    <row agent=\"Amme Lynch\" agentid=\"3018988\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"5\" locationid=\"60011887\" locator=\"false\"/>\r\n    <row agent=\"Thanan Derif\" agentid=\"3018989\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"5\" locationid=\"60011782\" locator=\"false\"/>\r\n    <row agent=\"Linead Chambres\" agentid=\"3018990\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"5\" locationid=\"60011890\" locator=\"false\"/>\r\n    <row agent=\"Namielus Ressoh\" agentid=\"3018991\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"5\" locationid=\"60011971\" locator=\"false\"/>\r\n    <row agent=\"Retatia Murae\" agentid=\"3018992\" agenttypeid=\"2\" corporationid=\"1000036\" divisionid=\"24\" level=\"3\" locationid=\"60003934\" locator=\"false\"/>\r\n    <row agent=\"Kristjan Blondal\" agentid=\"3018993\" agenttypeid=\"8\" corporationid=\"1000054\" divisionid=\"24\" level=\"1\" locationid=\"60005053\" locator=\"false\"/>\r\n    <row agent=\"Girn Fasi\" agentid=\"3019001\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"1\" locationid=\"60015054\" locator=\"false\"/>\r\n    <row agent=\"Shiv Ashra\" agentid=\"3019002\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"1\" locationid=\"60015055\" locator=\"true\"/>\r\n    <row agent=\"Eade Sarum\" agentid=\"3019003\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"1\" locationid=\"60015056\" locator=\"false\"/>\r\n    <row agent=\"Yoasi Bene\" agentid=\"3019004\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"1\" locationid=\"60015057\" locator=\"false\"/>\r\n    <row agent=\"Yon Uanen\" agentid=\"3019005\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"1\" locationid=\"60015058\" locator=\"true\"/>\r\n    <row agent=\"Chel Haridn\" agentid=\"3019006\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"1\" locationid=\"60015059\" locator=\"true\"/>\r\n    <row agent=\"Asa Rura\" agentid=\"3019007\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"1\" locationid=\"60015060\" locator=\"true\"/>\r\n    <row agent=\"Jatad Ashoul\" agentid=\"3019008\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"1\" locationid=\"60015061\" locator=\"false\"/>\r\n    <row agent=\"Feruni Mouqe\" agentid=\"3019009\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"1\" locationid=\"60015062\" locator=\"true\"/>\r\n    <row agent=\"Meramass Chini\" agentid=\"3019010\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"1\" locationid=\"60015063\" locator=\"false\"/>\r\n    <row agent=\"Keal Hadji\" agentid=\"3019011\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"1\" locationid=\"60015064\" locator=\"false\"/>\r\n    <row agent=\"Pome Falian\" agentid=\"3019012\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"1\" locationid=\"60015065\" locator=\"true\"/>\r\n    <row agent=\"Marimi Bin\" agentid=\"3019013\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"1\" locationid=\"60015066\" locator=\"false\"/>\r\n    <row agent=\"Ahril Sayht\" agentid=\"3019014\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"1\" locationid=\"60015135\" locator=\"true\"/>\r\n    <row agent=\"Masaja Pesab\" agentid=\"3019015\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"1\" locationid=\"60015136\" locator=\"true\"/>\r\n    <row agent=\"Dakba Fikpoun\" agentid=\"3019016\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"1\" locationid=\"60015137\" locator=\"true\"/>\r\n    <row agent=\"Marucan Arzad\" agentid=\"3019017\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"1\" locationid=\"60015138\" locator=\"false\"/>\r\n    <row agent=\"Bareba Ashase\" agentid=\"3019018\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"2\" locationid=\"60015054\" locator=\"true\"/>\r\n    <row agent=\"Elnag Timyasun\" agentid=\"3019019\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"2\" locationid=\"60015055\" locator=\"true\"/>\r\n    <row agent=\"Saskail Zanpoo\" agentid=\"3019020\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"2\" locationid=\"60015056\" locator=\"true\"/>\r\n    <row agent=\"Raban Mahin\" agentid=\"3019021\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"2\" locationid=\"60015057\" locator=\"true\"/>\r\n    <row agent=\"Jemara Arthafon\" agentid=\"3019022\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"2\" locationid=\"60015058\" locator=\"false\"/>\r\n    <row agent=\"Azazod Moha\" agentid=\"3019023\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"2\" locationid=\"60015059\" locator=\"true\"/>\r\n    <row agent=\"Bitah Papra\" agentid=\"3019024\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"2\" locationid=\"60015060\" locator=\"true\"/>\r\n    <row agent=\"Biandan Koorer\" agentid=\"3019025\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"2\" locationid=\"60015061\" locator=\"true\"/>\r\n    <row agent=\"Fegikuh Marmad\" agentid=\"3019026\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"2\" locationid=\"60015062\" locator=\"true\"/>\r\n    <row agent=\"Helesoh Davesghad\" agentid=\"3019027\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"2\" locationid=\"60015063\" locator=\"true\"/>\r\n    <row agent=\"Gehtas Hamahon\" agentid=\"3019028\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"2\" locationid=\"60015064\" locator=\"true\"/>\r\n    <row agent=\"Veri Aring\" agentid=\"3019029\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"2\" locationid=\"60015065\" locator=\"true\"/>\r\n    <row agent=\"Barazet Sohsani\" agentid=\"3019030\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"2\" locationid=\"60015066\" locator=\"false\"/>\r\n    <row agent=\"Souroush Hiphel\" agentid=\"3019031\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"2\" locationid=\"60015135\" locator=\"true\"/>\r\n    <row agent=\"Kal Sidooha\" agentid=\"3019032\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"2\" locationid=\"60015136\" locator=\"true\"/>\r\n    <row agent=\"Jayhshel Sapalab\" agentid=\"3019033\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"2\" locationid=\"60015137\" locator=\"true\"/>\r\n    <row agent=\"Ninta Tatmare\" agentid=\"3019034\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"2\" locationid=\"60015138\" locator=\"true\"/>\r\n    <row agent=\"Muthatah Zakshmah\" agentid=\"3019035\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"3\" locationid=\"60015054\" locator=\"true\"/>\r\n    <row agent=\"Yadia Itsevyoor\" agentid=\"3019036\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"3\" locationid=\"60015055\" locator=\"true\"/>\r\n    <row agent=\"Ahrosseas Adin\" agentid=\"3019037\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"3\" locationid=\"60015056\" locator=\"true\"/>\r\n    <row agent=\"Charthas Zulih\" agentid=\"3019038\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"3\" locationid=\"60015057\" locator=\"true\"/>\r\n    <row agent=\"Ahmoh Clarelam\" agentid=\"3019039\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"3\" locationid=\"60015058\" locator=\"true\"/>\r\n    <row agent=\"Thirdashah Knoohon\" agentid=\"3019040\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"3\" locationid=\"60015059\" locator=\"true\"/>\r\n    <row agent=\"Amda Sirin\" agentid=\"3019041\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"3\" locationid=\"60015060\" locator=\"false\"/>\r\n    <row agent=\"Eriela Aguh\" agentid=\"3019042\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"3\" locationid=\"60015061\" locator=\"true\"/>\r\n    <row agent=\"Niamphar Torasa\" agentid=\"3019043\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"3\" locationid=\"60015062\" locator=\"true\"/>\r\n    <row agent=\"Sasalan Orshoo\" agentid=\"3019044\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"3\" locationid=\"60015063\" locator=\"false\"/>\r\n    <row agent=\"Betsbi Piris\" agentid=\"3019045\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"3\" locationid=\"60015064\" locator=\"true\"/>\r\n    <row agent=\"Navnok Shazhdas\" agentid=\"3019046\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"3\" locationid=\"60015065\" locator=\"true\"/>\r\n    <row agent=\"Moseleh Nalashanu\" agentid=\"3019047\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"3\" locationid=\"60015066\" locator=\"true\"/>\r\n    <row agent=\"Admal Bambiaraj\" agentid=\"3019048\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"3\" locationid=\"60015135\" locator=\"true\"/>\r\n    <row agent=\"Dadol Sabadeus\" agentid=\"3019049\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"3\" locationid=\"60015136\" locator=\"true\"/>\r\n    <row agent=\"Gakhireh Kurain\" agentid=\"3019050\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"3\" locationid=\"60015137\" locator=\"true\"/>\r\n    <row agent=\"Havng Amoura\" agentid=\"3019051\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"3\" locationid=\"60015138\" locator=\"true\"/>\r\n    <row agent=\"Latsekaun Fihani\" agentid=\"3019052\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"4\" locationid=\"60015054\" locator=\"true\"/>\r\n    <row agent=\"Hajaphron Padji\" agentid=\"3019053\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"4\" locationid=\"60015055\" locator=\"true\"/>\r\n    <row agent=\"Sucha Sasti\" agentid=\"3019054\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"4\" locationid=\"60015056\" locator=\"true\"/>\r\n    <row agent=\"Aliad Sirin\" agentid=\"3019055\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"4\" locationid=\"60015057\" locator=\"false\"/>\r\n    <row agent=\"Narshandyn Enarem\" agentid=\"3019056\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"4\" locationid=\"60015058\" locator=\"true\"/>\r\n    <row agent=\"Guma Rahzan\" agentid=\"3019057\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"4\" locationid=\"60015059\" locator=\"true\"/>\r\n    <row agent=\"Masivod Naloran\" agentid=\"3019058\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"4\" locationid=\"60015060\" locator=\"true\"/>\r\n    <row agent=\"Ahrnan Bamtusha\" agentid=\"3019059\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"4\" locationid=\"60015061\" locator=\"true\"/>\r\n    <row agent=\"Rukakem Minosh\" agentid=\"3019060\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"4\" locationid=\"60015062\" locator=\"true\"/>\r\n    <row agent=\"Bitidi Denkazi\" agentid=\"3019061\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"4\" locationid=\"60015063\" locator=\"true\"/>\r\n    <row agent=\"Femula Nemaryai\" agentid=\"3019062\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"4\" locationid=\"60015064\" locator=\"false\"/>\r\n    <row agent=\"Adab Eznunas\" agentid=\"3019063\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"4\" locationid=\"60015065\" locator=\"true\"/>\r\n    <row agent=\"Mazamoh Noredjol\" agentid=\"3019064\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"4\" locationid=\"60015066\" locator=\"true\"/>\r\n    <row agent=\"Narita Anaba\" agentid=\"3019065\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"4\" locationid=\"60015135\" locator=\"true\"/>\r\n    <row agent=\"Pahadah Rairen\" agentid=\"3019066\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"4\" locationid=\"60015136\" locator=\"true\"/>\r\n    <row agent=\"Oshoshakun Hasha\" agentid=\"3019067\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"4\" locationid=\"60015137\" locator=\"true\"/>\r\n    <row agent=\"Shabra Mikase\" agentid=\"3019068\" agenttypeid=\"9\" corporationid=\"1000179\" divisionid=\"24\" level=\"4\" locationid=\"60015138\" locator=\"true\"/>\r\n    <row agent=\"Kasuki Inchi\" agentid=\"3019069\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"1\" locationid=\"60015067\" locator=\"true\"/>\r\n    <row agent=\"Asi Komo\" agentid=\"3019070\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"1\" locationid=\"60015068\" locator=\"false\"/>\r\n    <row agent=\"Jaki Makura\" agentid=\"3019071\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"1\" locationid=\"60015069\" locator=\"true\"/>\r\n    <row agent=\"Elandi Ku\" agentid=\"3019072\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"1\" locationid=\"60015070\" locator=\"false\"/>\r\n    <row agent=\"Oki Hayeda\" agentid=\"3019073\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"1\" locationid=\"60015071\" locator=\"true\"/>\r\n    <row agent=\"Asho Nokoka\" agentid=\"3019074\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"1\" locationid=\"60015071\" locator=\"true\"/>\r\n    <row agent=\"Kikyu Isaki\" agentid=\"3019075\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"1\" locationid=\"60015073\" locator=\"true\"/>\r\n    <row agent=\"Uru Arvaka\" agentid=\"3019076\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"1\" locationid=\"60015074\" locator=\"false\"/>\r\n    <row agent=\"Isian Bara\" agentid=\"3019077\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"1\" locationid=\"60015075\" locator=\"true\"/>\r\n    <row agent=\"Alona Toris\" agentid=\"3019078\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"1\" locationid=\"60015076\" locator=\"false\"/>\r\n    <row agent=\"Oloni Nikkaken\" agentid=\"3019079\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"1\" locationid=\"60015078\" locator=\"true\"/>\r\n    <row agent=\"Miku Turavulen\" agentid=\"3019080\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"1\" locationid=\"60015079\" locator=\"true\"/>\r\n    <row agent=\"Para Jishade\" agentid=\"3019081\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"1\" locationid=\"60015132\" locator=\"true\"/>\r\n    <row agent=\"Shilu Ekuca\" agentid=\"3019082\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"1\" locationid=\"60015133\" locator=\"true\"/>\r\n    <row agent=\"Ibura Arvusa\" agentid=\"3019083\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"1\" locationid=\"60015134\" locator=\"true\"/>\r\n    <row agent=\"Natasota Ohorala\" agentid=\"3019084\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"2\" locationid=\"60015067\" locator=\"false\"/>\r\n    <row agent=\"Abei Alanushi\" agentid=\"3019085\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"2\" locationid=\"60015068\" locator=\"true\"/>\r\n    <row agent=\"Oikahtolen Vakkimies\" agentid=\"3019086\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"2\" locationid=\"60015069\" locator=\"true\"/>\r\n    <row agent=\"Sorronpaa Uoyennelen\" agentid=\"3019087\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"2\" locationid=\"60015070\" locator=\"false\"/>\r\n    <row agent=\"Shitiras Akichiya\" agentid=\"3019088\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"2\" locationid=\"60015071\" locator=\"true\"/>\r\n    <row agent=\"Tondunin Musisto\" agentid=\"3019089\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"2\" locationid=\"60015072\" locator=\"true\"/>\r\n    <row agent=\"Sursanen Ahti\" agentid=\"3019090\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"2\" locationid=\"60015073\" locator=\"true\"/>\r\n    <row agent=\"Jokkeshainen Okanami\" agentid=\"3019091\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"2\" locationid=\"60015074\" locator=\"false\"/>\r\n    <row agent=\"Aivakkunen Dagi\" agentid=\"3019092\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"2\" locationid=\"60015075\" locator=\"true\"/>\r\n    <row agent=\"Ovilima Koratoh\" agentid=\"3019093\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"2\" locationid=\"60015078\" locator=\"true\"/>\r\n    <row agent=\"Shikkanda Uimavas\" agentid=\"3019094\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"2\" locationid=\"60015079\" locator=\"true\"/>\r\n    <row agent=\"Akipakka Annumanen\" agentid=\"3019095\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"2\" locationid=\"60015132\" locator=\"false\"/>\r\n    <row agent=\"Olkkelen Ochoras\" agentid=\"3019096\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"2\" locationid=\"60015133\" locator=\"true\"/>\r\n    <row agent=\"Sitsu Uotutsoras\" agentid=\"3019097\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"2\" locationid=\"60015134\" locator=\"false\"/>\r\n    <row agent=\"Okanela Ibonagi\" agentid=\"3019098\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"3\" locationid=\"60015067\" locator=\"true\"/>\r\n    <row agent=\"Fujalen Saltanela\" agentid=\"3019099\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"3\" locationid=\"60015068\" locator=\"true\"/>\r\n    <row agent=\"Jemitsui Auvilen\" agentid=\"3019100\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"3\" locationid=\"60015069\" locator=\"false\"/>\r\n    <row agent=\"Aurinen Tuopio\" agentid=\"3019101\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"3\" locationid=\"60015070\" locator=\"true\"/>\r\n    <row agent=\"Oguken Saakkatoh\" agentid=\"3019102\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"3\" locationid=\"60015071\" locator=\"true\"/>\r\n    <row agent=\"Oilinulen Vie\" agentid=\"3019103\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"3\" locationid=\"60015072\" locator=\"true\"/>\r\n    <row agent=\"Ruoheltaima Nindenen\" agentid=\"3019104\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"3\" locationid=\"60015073\" locator=\"false\"/>\r\n    <row agent=\"Heken Ono\" agentid=\"3019105\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"3\" locationid=\"60015074\" locator=\"false\"/>\r\n    <row agent=\"Pous Kanmonen\" agentid=\"3019106\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"3\" locationid=\"60015075\" locator=\"true\"/>\r\n    <row agent=\"Osken Hasaziras\" agentid=\"3019107\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"3\" locationid=\"60015078\" locator=\"true\"/>\r\n    <row agent=\"Roinunoikas Vanonari\" agentid=\"3019108\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"3\" locationid=\"60015079\" locator=\"true\"/>\r\n    <row agent=\"Eso Tokamo\" agentid=\"3019109\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"3\" locationid=\"60015132\" locator=\"true\"/>\r\n    <row agent=\"Tekira Tastakekken\" agentid=\"3019110\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"3\" locationid=\"60015133\" locator=\"false\"/>\r\n    <row agent=\"Uemintoh Okunen\" agentid=\"3019111\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"3\" locationid=\"60015134\" locator=\"true\"/>\r\n    <row agent=\"Taltadan Kaarrinen\" agentid=\"3019112\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"4\" locationid=\"60015067\" locator=\"false\"/>\r\n    <row agent=\"Amiernatsu Milkina\" agentid=\"3019113\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"4\" locationid=\"60015068\" locator=\"true\"/>\r\n    <row agent=\"Ulkka Arateri\" agentid=\"3019114\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"4\" locationid=\"60015069\" locator=\"true\"/>\r\n    <row agent=\"Santadan Nukkuta\" agentid=\"3019115\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"4\" locationid=\"60015070\" locator=\"true\"/>\r\n    <row agent=\"Saun Romakieto\" agentid=\"3019116\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"4\" locationid=\"60015071\" locator=\"true\"/>\r\n    <row agent=\"Kousuki Aikitao\" agentid=\"3019117\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"4\" locationid=\"60015072\" locator=\"true\"/>\r\n    <row agent=\"Neuntonen Hahagas\" agentid=\"3019118\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"4\" locationid=\"60015073\" locator=\"true\"/>\r\n    <row agent=\"Ekomuta Itari\" agentid=\"3019119\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"4\" locationid=\"60015074\" locator=\"true\"/>\r\n    <row agent=\"Montilen Jonota\" agentid=\"3019120\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"4\" locationid=\"60015075\" locator=\"true\"/>\r\n    <row agent=\"Harjakeda Sirichi\" agentid=\"3019121\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"4\" locationid=\"60015078\" locator=\"true\"/>\r\n    <row agent=\"Kiken Oge\" agentid=\"3019122\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"4\" locationid=\"60015079\" locator=\"true\"/>\r\n    <row agent=\"Kunkkainen Uoken\" agentid=\"3019123\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"4\" locationid=\"60015132\" locator=\"true\"/>\r\n    <row agent=\"Iijonen Ishiras\" agentid=\"3019124\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"4\" locationid=\"60015133\" locator=\"true\"/>\r\n    <row agent=\"Reurmanen Aureslen\" agentid=\"3019125\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"4\" locationid=\"60015134\" locator=\"true\"/>\r\n    <row agent=\"Eland Ku\" agentid=\"3019126\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"1\" locationid=\"60015077\" locator=\"true\"/>\r\n    <row agent=\"Saitinen Takotsu\" agentid=\"3019127\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"2\" locationid=\"60015076\" locator=\"true\"/>\r\n    <row agent=\"Nesen Utrisen\" agentid=\"3019128\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"2\" locationid=\"60015077\" locator=\"true\"/>\r\n    <row agent=\"Isida Santonen\" agentid=\"3019129\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"3\" locationid=\"60015076\" locator=\"true\"/>\r\n    <row agent=\"Tamela Ehken\" agentid=\"3019130\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"3\" locationid=\"60015077\" locator=\"true\"/>\r\n    <row agent=\"Tunttaras Inko\" agentid=\"3019131\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"4\" locationid=\"60015076\" locator=\"false\"/>\r\n    <row agent=\"Yokikairos Kasmashainen\" agentid=\"3019132\" agenttypeid=\"9\" corporationid=\"1000180\" divisionid=\"24\" level=\"4\" locationid=\"60015077\" locator=\"true\"/>\r\n    <row agent=\"Giel Afin\" agentid=\"3019133\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"1\" locationid=\"60015080\" locator=\"true\"/>\r\n    <row agent=\"Jark Cryele\" agentid=\"3019134\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"1\" locationid=\"60015081\" locator=\"false\"/>\r\n    <row agent=\"Andre Kell\" agentid=\"3019135\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"1\" locationid=\"60015082\" locator=\"true\"/>\r\n    <row agent=\"Auret Tecie\" agentid=\"3019136\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"1\" locationid=\"60015083\" locator=\"false\"/>\r\n    <row agent=\"Jasis Peral\" agentid=\"3019137\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"1\" locationid=\"60015084\" locator=\"true\"/>\r\n    <row agent=\"Elgeis Dumet\" agentid=\"3019138\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"1\" locationid=\"60015085\" locator=\"true\"/>\r\n    <row agent=\"Char Siterman\" agentid=\"3019139\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"1\" locationid=\"60015086\" locator=\"true\"/>\r\n    <row agent=\"Porch Eyglet\" agentid=\"3019140\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"1\" locationid=\"60015087\" locator=\"false\"/>\r\n    <row agent=\"Chande Aroo\" agentid=\"3019141\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"1\" locationid=\"60015088\" locator=\"true\"/>\r\n    <row agent=\"Yacaque Ferier\" agentid=\"3019142\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"1\" locationid=\"60015089\" locator=\"true\"/>\r\n    <row agent=\"Adirell Suviere\" agentid=\"3019143\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"1\" locationid=\"60015090\" locator=\"true\"/>\r\n    <row agent=\"Rin Audiale\" agentid=\"3019144\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"1\" locationid=\"60015091\" locator=\"true\"/>\r\n    <row agent=\"Emirre Ronier\" agentid=\"3019145\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"1\" locationid=\"60015092\" locator=\"true\"/>\r\n    <row agent=\"Cleil Moote\" agentid=\"3019146\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"1\" locationid=\"60015142\" locator=\"true\"/>\r\n    <row agent=\"Jean Boulel\" agentid=\"3019147\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"1\" locationid=\"60015143\" locator=\"false\"/>\r\n    <row agent=\"Omant Bomegelen\" agentid=\"3019148\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"1\" locationid=\"60015144\" locator=\"true\"/>\r\n    <row agent=\"Penagier Dettelie\" agentid=\"3019149\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"1\" locationid=\"60015145\" locator=\"true\"/>\r\n    <row agent=\"Blent Anseraere\" agentid=\"3019150\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"2\" locationid=\"60015080\" locator=\"true\"/>\r\n    <row agent=\"Pernaeneve Dolondtherver\" agentid=\"3019151\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"2\" locationid=\"60015081\" locator=\"true\"/>\r\n    <row agent=\"Vaille Appaert\" agentid=\"3019152\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"2\" locationid=\"60015082\" locator=\"false\"/>\r\n    <row agent=\"Jeorck Dale\" agentid=\"3019153\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"2\" locationid=\"60015083\" locator=\"true\"/>\r\n    <row agent=\"Olasent Ardoroule\" agentid=\"3019154\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"2\" locationid=\"60015084\" locator=\"true\"/>\r\n    <row agent=\"Albereye Hunere\" agentid=\"3019155\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"2\" locationid=\"60015085\" locator=\"true\"/>\r\n    <row agent=\"Chrilinart Alaunoure\" agentid=\"3019156\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"2\" locationid=\"60015086\" locator=\"true\"/>\r\n    <row agent=\"Turavanon Afranyn\" agentid=\"3019157\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"2\" locationid=\"60015087\" locator=\"true\"/>\r\n    <row agent=\"Onee Hucartelle\" agentid=\"3019158\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"2\" locationid=\"60015088\" locator=\"true\"/>\r\n    <row agent=\"Allerchel Taylbeque\" agentid=\"3019159\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"2\" locationid=\"60015089\" locator=\"true\"/>\r\n    <row agent=\"Vroenchalaere Azemore\" agentid=\"3019160\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"1\" locationid=\"60015090\" locator=\"true\"/>\r\n    <row agent=\"Zort Jetemagne\" agentid=\"3019161\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"2\" locationid=\"60015091\" locator=\"true\"/>\r\n    <row agent=\"Beene Uphonges\" agentid=\"3019162\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"2\" locationid=\"60015092\" locator=\"true\"/>\r\n    <row agent=\"Voise Galle\" agentid=\"3019163\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"2\" locationid=\"60015142\" locator=\"true\"/>\r\n    <row agent=\"Severasse Ays\" agentid=\"3019164\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"2\" locationid=\"60015143\" locator=\"true\"/>\r\n    <row agent=\"Rolenese Azoenberon\" agentid=\"3019165\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"2\" locationid=\"60015144\" locator=\"true\"/>\r\n    <row agent=\"Espidoure Cue\" agentid=\"3019166\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"2\" locationid=\"60015145\" locator=\"false\"/>\r\n    <row agent=\"Moreau Preguter\" agentid=\"3019167\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"3\" locationid=\"60015080\" locator=\"false\"/>\r\n    <row agent=\"Illedoure Juvoire\" agentid=\"3019168\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"3\" locationid=\"60015081\" locator=\"true\"/>\r\n    <row agent=\"Arresel Azollant\" agentid=\"3019169\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"3\" locationid=\"60015082\" locator=\"true\"/>\r\n    <row agent=\"Dulmier Florant\" agentid=\"3019170\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"3\" locationid=\"60015083\" locator=\"true\"/>\r\n    <row agent=\"Larmante True\" agentid=\"3019171\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"3\" locationid=\"60015084\" locator=\"true\"/>\r\n    <row agent=\"Ardannet Chompsotter\" agentid=\"3019172\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"3\" locationid=\"60015085\" locator=\"false\"/>\r\n    <row agent=\"Pinier Proire\" agentid=\"3019173\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"3\" locationid=\"60015086\" locator=\"true\"/>\r\n    <row agent=\"Obacan Ralaener\" agentid=\"3019174\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"3\" locationid=\"60015087\" locator=\"true\"/>\r\n    <row agent=\"Sausnadalle Ayde\" agentid=\"3019175\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"3\" locationid=\"60015088\" locator=\"true\"/>\r\n    <row agent=\"Chanollaire Joyssetta\" agentid=\"3019176\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"3\" locationid=\"60015089\" locator=\"true\"/>\r\n    <row agent=\"Autet Chrillamme\" agentid=\"3019177\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"3\" locationid=\"60015090\" locator=\"true\"/>\r\n    <row agent=\"Gerdecere Audident\" agentid=\"3019178\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"3\" locationid=\"60015091\" locator=\"false\"/>\r\n    <row agent=\"Allottes Aistrou\" agentid=\"3019179\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"3\" locationid=\"60015092\" locator=\"true\"/>\r\n    <row agent=\"Firripon Bouwalle\" agentid=\"3019180\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"3\" locationid=\"60015142\" locator=\"true\"/>\r\n    <row agent=\"Arnelmerie Gers\" agentid=\"3019181\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"3\" locationid=\"60015143\" locator=\"true\"/>\r\n    <row agent=\"Anseraere Gastolie\" agentid=\"3019182\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"3\" locationid=\"60015144\" locator=\"true\"/>\r\n    <row agent=\"Amygnon Celdier\" agentid=\"3019183\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"3\" locationid=\"60015145\" locator=\"true\"/>\r\n    <row agent=\"Lalonne Aerlaerdt\" agentid=\"3019184\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"4\" locationid=\"60015080\" locator=\"true\"/>\r\n    <row agent=\"Chapel Ailloux\" agentid=\"3019185\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"4\" locationid=\"60015081\" locator=\"true\"/>\r\n    <row agent=\"Slens Vert\" agentid=\"3019186\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"4\" locationid=\"60015082\" locator=\"false\"/>\r\n    <row agent=\"Yverens Yvottice\" agentid=\"3019187\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"4\" locationid=\"60015083\" locator=\"true\"/>\r\n    <row agent=\"Piensidulle Ilalyn\" agentid=\"3019188\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"4\" locationid=\"60015084\" locator=\"true\"/>\r\n    <row agent=\"Amonckbraert Ovrell\" agentid=\"3019189\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"4\" locationid=\"60015085\" locator=\"true\"/>\r\n    <row agent=\"Allaciere Achopaire\" agentid=\"3019190\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"4\" locationid=\"60015086\" locator=\"true\"/>\r\n    <row agent=\"Gaull Mounch\" agentid=\"3019191\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"4\" locationid=\"60015087\" locator=\"true\"/>\r\n    <row agent=\"Adames Afie\" agentid=\"3019192\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"4\" locationid=\"60015088\" locator=\"true\"/>\r\n    <row agent=\"Palinard Andorest\" agentid=\"3019193\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"4\" locationid=\"60015089\" locator=\"false\"/>\r\n    <row agent=\"Mamps Aimemer\" agentid=\"3019194\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"4\" locationid=\"60015090\" locator=\"false\"/>\r\n    <row agent=\"Leoroilete Ulier\" agentid=\"3019195\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"4\" locationid=\"60015091\" locator=\"true\"/>\r\n    <row agent=\"Chaimart Ganette\" agentid=\"3019196\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"4\" locationid=\"60015092\" locator=\"true\"/>\r\n    <row agent=\"Detselard Cebrespauze\" agentid=\"3019197\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"4\" locationid=\"60015142\" locator=\"false\"/>\r\n    <row agent=\"Venelles Allolese\" agentid=\"3019198\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"4\" locationid=\"60015143\" locator=\"true\"/>\r\n    <row agent=\"Boncherie Osnins\" agentid=\"3019199\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"4\" locationid=\"60015144\" locator=\"true\"/>\r\n    <row agent=\"Dunier Allellarie\" agentid=\"3019200\" agenttypeid=\"9\" corporationid=\"1000181\" divisionid=\"24\" level=\"4\" locationid=\"60015145\" locator=\"false\"/>\r\n    <row agent=\"Yuss Brigth\" agentid=\"3019201\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"1\" locationid=\"60015093\" locator=\"true\"/>\r\n    <row agent=\"Oten Krah\" agentid=\"3019202\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"1\" locationid=\"60015094\" locator=\"false\"/>\r\n    <row agent=\"Khald Wedafur\" agentid=\"3019203\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"1\" locationid=\"60015095\" locator=\"true\"/>\r\n    <row agent=\"Skal Edonbald\" agentid=\"3019204\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"1\" locationid=\"60015096\" locator=\"true\"/>\r\n    <row agent=\"Skund Manek\" agentid=\"3019205\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"1\" locationid=\"60015097\" locator=\"true\"/>\r\n    <row agent=\"Sharik Thorir\" agentid=\"3019206\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"1\" locationid=\"60015098\" locator=\"false\"/>\r\n    <row agent=\"Jorand Bork\" agentid=\"3019207\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"1\" locationid=\"60015099\" locator=\"true\"/>\r\n    <row agent=\"Filuard Toggam\" agentid=\"3019208\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"1\" locationid=\"60015100\" locator=\"false\"/>\r\n    <row agent=\"Dald Eodlan\" agentid=\"3019209\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"1\" locationid=\"60015101\" locator=\"false\"/>\r\n    <row agent=\"Laus Haqius\" agentid=\"3019210\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"1\" locationid=\"60015102\" locator=\"true\"/>\r\n    <row agent=\"Ahm Olruin\" agentid=\"3019211\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"1\" locationid=\"60015103\" locator=\"false\"/>\r\n    <row agent=\"Nia Alfur\" agentid=\"3019212\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"1\" locationid=\"60015104\" locator=\"true\"/>\r\n    <row agent=\"Virim Shaket\" agentid=\"3019213\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"1\" locationid=\"60015139\" locator=\"false\"/>\r\n    <row agent=\"Avaizo Tear\" agentid=\"3019214\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"1\" locationid=\"60015140\" locator=\"true\"/>\r\n    <row agent=\"Kiri Istanbor\" agentid=\"3019215\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"1\" locationid=\"60015141\" locator=\"true\"/>\r\n    <row agent=\"Bagidold Hedledia\" agentid=\"3019216\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"2\" locationid=\"60015093\" locator=\"false\"/>\r\n    <row agent=\"Aultren Redidold\" agentid=\"3019217\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"2\" locationid=\"60015094\" locator=\"true\"/>\r\n    <row agent=\"Hunk Ingard\" agentid=\"3019218\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"2\" locationid=\"60015095\" locator=\"true\"/>\r\n    <row agent=\"Aldwin Roar\" agentid=\"3019219\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"2\" locationid=\"60015096\" locator=\"true\"/>\r\n    <row agent=\"Ingjaekar Hlondedbad\" agentid=\"3019220\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"2\" locationid=\"60015097\" locator=\"false\"/>\r\n    <row agent=\"Adik Aldalill\" agentid=\"3019221\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"2\" locationid=\"60015098\" locator=\"true\"/>\r\n    <row agent=\"Olpen Atiltrard\" agentid=\"3019222\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"2\" locationid=\"60015099\" locator=\"false\"/>\r\n    <row agent=\"Brof Gakkadik\" agentid=\"3019223\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"2\" locationid=\"60015100\" locator=\"true\"/>\r\n    <row agent=\"Zanmoko Osbrilar\" agentid=\"3019224\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"2\" locationid=\"60015101\" locator=\"true\"/>\r\n    <row agent=\"Guvoli Herpwik\" agentid=\"3019225\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"2\" locationid=\"60015102\" locator=\"true\"/>\r\n    <row agent=\"Anjell Ameko\" agentid=\"3019226\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"2\" locationid=\"60015103\" locator=\"true\"/>\r\n    <row agent=\"Eimmulf Eininder\" agentid=\"3019227\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"2\" locationid=\"60015104\" locator=\"true\"/>\r\n    <row agent=\"Urdrani Rpirmilfelbod\" agentid=\"3019228\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"2\" locationid=\"60015139\" locator=\"true\"/>\r\n    <row agent=\"Ikansur Bangotur\" agentid=\"3019229\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"2\" locationid=\"60015140\" locator=\"true\"/>\r\n    <row agent=\"Sihtur Uanslako\" agentid=\"3019230\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"2\" locationid=\"60015141\" locator=\"true\"/>\r\n    <row agent=\"Tongimund Bediddad\" agentid=\"3019231\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"3\" locationid=\"60015093\" locator=\"true\"/>\r\n    <row agent=\"Isogren Eirunda\" agentid=\"3019232\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"3\" locationid=\"60015094\" locator=\"false\"/>\r\n    <row agent=\"Rorlsar Meskena\" agentid=\"3019233\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"3\" locationid=\"60015095\" locator=\"true\"/>\r\n    <row agent=\"Geigered Warala\" agentid=\"3019234\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"3\" locationid=\"60015096\" locator=\"true\"/>\r\n    <row agent=\"Fusnasber Ovran\" agentid=\"3019235\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"3\" locationid=\"60015097\" locator=\"false\"/>\r\n    <row agent=\"Hetodila Lidenedolf\" agentid=\"3019236\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"3\" locationid=\"60015098\" locator=\"true\"/>\r\n    <row agent=\"Balginia Erbi\" agentid=\"3019237\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"3\" locationid=\"60015099\" locator=\"false\"/>\r\n    <row agent=\"Salfgekur Folleson\" agentid=\"3019238\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"3\" locationid=\"60015100\" locator=\"true\"/>\r\n    <row agent=\"Svalara Ingeiker\" agentid=\"3019239\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"3\" locationid=\"60015101\" locator=\"true\"/>\r\n    <row agent=\"Alnavar Orger\" agentid=\"3019240\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"3\" locationid=\"60015102\" locator=\"true\"/>\r\n    <row agent=\"Amin Aiteband\" agentid=\"3019241\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"3\" locationid=\"60015103\" locator=\"true\"/>\r\n    <row agent=\"Angand Reitufung\" agentid=\"3019242\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"3\" locationid=\"60015104\" locator=\"false\"/>\r\n    <row agent=\"Fredagod Arendei\" agentid=\"3019243\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"3\" locationid=\"60015139\" locator=\"true\"/>\r\n    <row agent=\"Todban Teonsund\" agentid=\"3019244\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"3\" locationid=\"60015140\" locator=\"false\"/>\r\n    <row agent=\"Karuisana Katitera\" agentid=\"3019245\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"3\" locationid=\"60015141\" locator=\"true\"/>\r\n    <row agent=\"Vor Osanher\" agentid=\"3019246\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"4\" locationid=\"60015093\" locator=\"true\"/>\r\n    <row agent=\"Egitrard Edat\" agentid=\"3019247\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"4\" locationid=\"60015094\" locator=\"true\"/>\r\n    <row agent=\"Aldeinur Gidmorater\" agentid=\"3019248\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"4\" locationid=\"60015095\" locator=\"true\"/>\r\n    <row agent=\"Edore Amilgrard\" agentid=\"3019249\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"4\" locationid=\"60015096\" locator=\"true\"/>\r\n    <row agent=\"Ragtvittak Eraleder\" agentid=\"3019250\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"4\" locationid=\"60015097\" locator=\"true\"/>\r\n    <row agent=\"Sissur Glaerir\" agentid=\"3019251\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"4\" locationid=\"60015098\" locator=\"false\"/>\r\n    <row agent=\"Grilrand Waturger\" agentid=\"3019252\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"4\" locationid=\"60015099\" locator=\"true\"/>\r\n    <row agent=\"Sorn Ober\" agentid=\"3019253\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"4\" locationid=\"60015100\" locator=\"true\"/>\r\n    <row agent=\"Oggur Marendei\" agentid=\"3019254\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"4\" locationid=\"60015101\" locator=\"true\"/>\r\n    <row agent=\"Hois Odebeinn\" agentid=\"3019255\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"4\" locationid=\"60015102\" locator=\"true\"/>\r\n    <row agent=\"Wilf Lommnersin\" agentid=\"3019256\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"4\" locationid=\"60015103\" locator=\"true\"/>\r\n    <row agent=\"Hagotta Atiltrard\" agentid=\"3019257\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"4\" locationid=\"60015104\" locator=\"true\"/>\r\n    <row agent=\"Otewlf Rarkakidur\" agentid=\"3019258\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"4\" locationid=\"60015139\" locator=\"true\"/>\r\n    <row agent=\"Deiked Neif\" agentid=\"3019259\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"4\" locationid=\"60015140\" locator=\"false\"/>\r\n    <row agent=\"Jelfhiki Assbet\" agentid=\"3019260\" agenttypeid=\"9\" corporationid=\"1000182\" divisionid=\"24\" level=\"4\" locationid=\"60015141\" locator=\"true\"/>\r\n    <row agent=\"Akiainavas Omaa\" agentid=\"3019261\" agenttypeid=\"2\" corporationid=\"1000010\" divisionid=\"24\" level=\"2\" locationid=\"60015107\" locator=\"false\"/>\r\n    <row agent=\"Maineras Inumairos\" agentid=\"3019266\" agenttypeid=\"2\" corporationid=\"1000011\" divisionid=\"24\" level=\"2\" locationid=\"60015115\" locator=\"true\"/>\r\n    <row agent=\"Huhteken Olai\" agentid=\"3019267\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"1\" locationid=\"60015111\" locator=\"false\"/>\r\n    <row agent=\"Aikolen Tuolimo\" agentid=\"3019268\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"24\" level=\"3\" locationid=\"60015111\" locator=\"true\"/>\r\n    <row agent=\"Unumaara Okamo\" agentid=\"3019269\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"22\" level=\"4\" locationid=\"60015111\" locator=\"false\"/>\r\n    <row agent=\"Kurobei Kitei\" agentid=\"3019270\" agenttypeid=\"2\" corporationid=\"1000020\" divisionid=\"24\" level=\"4\" locationid=\"60015111\" locator=\"true\"/>\r\n    <row agent=\"Vuohtara Unti\" agentid=\"3019271\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"2\" locationid=\"60015114\" locator=\"true\"/>\r\n    <row agent=\"Malola Elava\" agentid=\"3019272\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"2\" locationid=\"60015114\" locator=\"false\"/>\r\n    <row agent=\"Seras Rashoyemi\" agentid=\"3019273\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"2\" locationid=\"60015116\" locator=\"true\"/>\r\n    <row agent=\"Seirela Savirova\" agentid=\"3019274\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"22\" level=\"2\" locationid=\"60015116\" locator=\"false\"/>\r\n    <row agent=\"Uruchoshi Aakuwa\" agentid=\"3019275\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"2\" locationid=\"60015116\" locator=\"true\"/>\r\n    <row agent=\"Konoi Orpalen\" agentid=\"3019276\" agenttypeid=\"2\" corporationid=\"1000026\" divisionid=\"24\" level=\"4\" locationid=\"60015116\" locator=\"false\"/>\r\n    <row agent=\"Onoki Ika\" agentid=\"3019277\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60015106\" locator=\"true\"/>\r\n    <row agent=\"Ansalen Kommon\" agentid=\"3019278\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60015110\" locator=\"false\"/>\r\n    <row agent=\"Sukkenen Harsiainen\" agentid=\"3019279\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60015110\" locator=\"true\"/>\r\n    <row agent=\"Mitinen Tenanochi\" agentid=\"3019280\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60015110\" locator=\"false\"/>\r\n    <row agent=\"Isi Auruwa\" agentid=\"3019281\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"2\" locationid=\"60015117\" locator=\"false\"/>\r\n    <row agent=\"Aniki Shotsu\" agentid=\"3019282\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"3\" locationid=\"60015117\" locator=\"true\"/>\r\n    <row agent=\"Niya Bairas\" agentid=\"3019283\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"3\" locationid=\"60015117\" locator=\"false\"/>\r\n    <row agent=\"Tsukai Hakibaitoh\" agentid=\"3019284\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"3\" locationid=\"60015117\" locator=\"true\"/>\r\n    <row agent=\"Ourojaras Vakkaoka\" agentid=\"3019285\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60015118\" locator=\"true\"/>\r\n    <row agent=\"Haulieras Pirkibo\" agentid=\"3019286\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60015118\" locator=\"true\"/>\r\n    <row agent=\"Oinaki Iras\" agentid=\"3019287\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60015121\" locator=\"true\"/>\r\n    <row agent=\"Waskisen Etsagas\" agentid=\"3019288\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"4\" locationid=\"60015121\" locator=\"false\"/>\r\n    <row agent=\"Endo Ranmaa\" agentid=\"3019289\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"2\" locationid=\"60015121\" locator=\"true\"/>\r\n    <row agent=\"Walanen Ushida\" agentid=\"3019290\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"4\" locationid=\"60015124\" locator=\"true\"/>\r\n    <row agent=\"Valjekailen Kisabaisen\" agentid=\"3019291\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"4\" locationid=\"60015124\" locator=\"true\"/>\r\n    <row agent=\"Isanen Ogedora\" agentid=\"3019292\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"3\" locationid=\"60015125\" locator=\"true\"/>\r\n    <row agent=\"Arikari Aunaa\" agentid=\"3019293\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"4\" locationid=\"60015125\" locator=\"false\"/>\r\n    <row agent=\"Kunken Pis\" agentid=\"3019294\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"5\" locationid=\"60015125\" locator=\"true\"/>\r\n    <row agent=\"Nontatainen Jula\" agentid=\"3019295\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"4\" locationid=\"60015128\" locator=\"true\"/>\r\n    <row agent=\"Yomon Oltta\" agentid=\"3019296\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60015128\" locator=\"true\"/>\r\n    <row agent=\"Akkas Nuumi\" agentid=\"3019297\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"22\" level=\"4\" locationid=\"60015127\" locator=\"false\"/>\r\n    <row agent=\"Nosken Murvas\" agentid=\"3019298\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60015127\" locator=\"false\"/>\r\n    <row agent=\"Tuopio Nartoh\" agentid=\"3019299\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"22\" level=\"3\" locationid=\"60015105\" locator=\"false\"/>\r\n    <row agent=\"Ashaka Korakila\" agentid=\"3019300\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"24\" level=\"1\" locationid=\"60015105\" locator=\"true\"/>\r\n    <row agent=\"Okaida Avio\" agentid=\"3019301\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"24\" level=\"1\" locationid=\"60015105\" locator=\"false\"/>\r\n    <row agent=\"Makkaraisen Uemon\" agentid=\"3019302\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"24\" level=\"4\" locationid=\"60015105\" locator=\"false\"/>\r\n    <row agent=\"Vakkebando Nuukka\" agentid=\"3019303\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"22\" level=\"2\" locationid=\"60015108\" locator=\"false\"/>\r\n    <row agent=\"Puumara Itonpaa\" agentid=\"3019304\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"24\" level=\"1\" locationid=\"60015108\" locator=\"true\"/>\r\n    <row agent=\"Ohkigas Kesheda\" agentid=\"3019305\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"22\" level=\"1\" locationid=\"60015119\" locator=\"false\"/>\r\n    <row agent=\"Aariken Metkima\" agentid=\"3019306\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"22\" level=\"2\" locationid=\"60015129\" locator=\"false\"/>\r\n    <row agent=\"Yuata Ishodaki\" agentid=\"3019307\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"1\" locationid=\"60015109\" locator=\"true\"/>\r\n    <row agent=\"Oshaita Oshasai\" agentid=\"3019308\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"4\" locationid=\"60015109\" locator=\"false\"/>\r\n    <row agent=\"Avi Koshaga\" agentid=\"3019309\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"22\" level=\"4\" locationid=\"60015109\" locator=\"true\"/>\r\n    <row agent=\"Hiemalen Iralaja\" agentid=\"3019310\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"1\" locationid=\"60015113\" locator=\"true\"/>\r\n    <row agent=\"Iesada Jukkizaras\" agentid=\"3019311\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"4\" locationid=\"60015112\" locator=\"true\"/>\r\n    <row agent=\"Gokken Varmon\" agentid=\"3019312\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"22\" level=\"4\" locationid=\"60015122\" locator=\"false\"/>\r\n    <row agent=\"Ikkora Yarvesa\" agentid=\"3019313\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"2\" locationid=\"60015122\" locator=\"true\"/>\r\n    <row agent=\"Ento Inkiken\" agentid=\"3019314\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"22\" level=\"3\" locationid=\"60015130\" locator=\"true\"/>\r\n    <row agent=\"Anen Eppas\" agentid=\"3019315\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"24\" level=\"2\" locationid=\"60015130\" locator=\"true\"/>\r\n    <row agent=\"Kiainga Omuhamo\" agentid=\"3019316\" agenttypeid=\"2\" corporationid=\"1000039\" divisionid=\"22\" level=\"2\" locationid=\"60015130\" locator=\"true\"/>\r\n    <row agent=\"Yukseda Parekaanen\" agentid=\"3019317\" agenttypeid=\"2\" corporationid=\"1000042\" divisionid=\"24\" level=\"3\" locationid=\"60015123\" locator=\"true\"/>\r\n    <row agent=\"Tsagai Ogekara\" agentid=\"3019318\" agenttypeid=\"2\" corporationid=\"1000042\" divisionid=\"24\" level=\"3\" locationid=\"60015126\" locator=\"false\"/>\r\n    <row agent=\"Kaan Junnaken\" agentid=\"3019319\" agenttypeid=\"2\" corporationid=\"1000042\" divisionid=\"24\" level=\"3\" locationid=\"60015126\" locator=\"true\"/>\r\n    <row agent=\"Innari Tanibu\" agentid=\"3019320\" agenttypeid=\"2\" corporationid=\"1000042\" divisionid=\"24\" level=\"3\" locationid=\"60015126\" locator=\"true\"/>\r\n    <row agent=\"Ogyanen Inoheda\" agentid=\"3019321\" agenttypeid=\"2\" corporationid=\"1000042\" divisionid=\"24\" level=\"4\" locationid=\"60015126\" locator=\"false\"/>\r\n    <row agent=\"Shinnen Kultuvas\" agentid=\"3019322\" agenttypeid=\"6\" corporationid=\"1000035\" divisionid=\"24\" level=\"1\" locationid=\"60015110\" locator=\"false\"/>\r\n    <row agent=\"Aheri Shirkkima\" agentid=\"3019323\" agenttypeid=\"6\" corporationid=\"1000011\" divisionid=\"24\" level=\"1\" locationid=\"60015115\" locator=\"false\"/>\r\n    <row agent=\"exploration test\" agentid=\"3019324\" agenttypeid=\"7\" corporationid=\"1000163\" divisionid=\"24\" level=\"1\" locationid=\"60014374\" locator=\"false\"/>\r\n    <row agent=\"exploration\" agentid=\"3019325\" agenttypeid=\"7\" corporationid=\"1000163\" divisionid=\"24\" level=\"1\" locationid=\"60014374\" locator=\"false\"/>\r\n    <row agent=\"hilmirinnn\" agentid=\"3019326\" agenttypeid=\"7\" corporationid=\"1000163\" divisionid=\"24\" level=\"1\" locationid=\"60014374\" locator=\"false\"/>\r\n    <row agent=\"Marihem Dagan\" agentid=\"3019327\" agenttypeid=\"7\" corporationid=\"1000131\" divisionid=\"22\" level=\"1\" locationid=\"60012730\" locator=\"false\"/>\r\n    <row agent=\"Tahaki Karin\" agentid=\"3019328\" agenttypeid=\"7\" corporationid=\"1000131\" divisionid=\"22\" level=\"1\" locationid=\"60012730\" locator=\"false\"/>\r\n    <row agent=\"Loict Mensier\" agentid=\"3019332\" agenttypeid=\"12\" corporationid=\"1000169\" divisionid=\"25\" level=\"1\" locationid=\"60015036\" locator=\"false\"/>\r\n    <row agent=\"Seville Eyron\" agentid=\"3019333\" agenttypeid=\"12\" corporationid=\"1000169\" divisionid=\"28\" level=\"1\" locationid=\"60015036\" locator=\"false\"/>\r\n    <row agent=\"Aernolaert Bruelle\" agentid=\"3019334\" agenttypeid=\"12\" corporationid=\"1000168\" divisionid=\"25\" level=\"1\" locationid=\"60015029\" locator=\"false\"/>\r\n    <row agent=\"Timestre Facent\" agentid=\"3019335\" agenttypeid=\"12\" corporationid=\"1000168\" divisionid=\"27\" level=\"1\" locationid=\"60015029\" locator=\"false\"/>\r\n    <row agent=\"Aswamih Omid\" agentid=\"3019336\" agenttypeid=\"12\" corporationid=\"1000077\" divisionid=\"25\" level=\"1\" locationid=\"60015010\" locator=\"false\"/>\r\n    <row agent=\"Joas Alathema\" agentid=\"3019337\" agenttypeid=\"12\" corporationid=\"1000077\" divisionid=\"28\" level=\"1\" locationid=\"60015010\" locator=\"false\"/>\r\n    <row agent=\"Sherkah Ashek\" agentid=\"3019338\" agenttypeid=\"12\" corporationid=\"1000166\" divisionid=\"27\" level=\"1\" locationid=\"60015021\" locator=\"false\"/>\r\n    <row agent=\"Aldu Nat\" agentid=\"3019339\" agenttypeid=\"12\" corporationid=\"1000166\" divisionid=\"25\" level=\"1\" locationid=\"60015021\" locator=\"false\"/>\r\n    <row agent=\"Voenins Blune\" agentid=\"3019340\" agenttypeid=\"12\" corporationid=\"1000115\" divisionid=\"27\" level=\"1\" locationid=\"60015016\" locator=\"false\"/>\r\n    <row agent=\"Berlimaute Remintgarnes\" agentid=\"3019341\" agenttypeid=\"12\" corporationid=\"1000115\" divisionid=\"28\" level=\"1\" locationid=\"60015016\" locator=\"false\"/>\r\n    <row agent=\"Eurbibad Kird\" agentid=\"3019342\" agenttypeid=\"12\" corporationid=\"1000171\" divisionid=\"25\" level=\"1\" locationid=\"60015041\" locator=\"false\"/>\r\n    <row agent=\"Stird Odetlef\" agentid=\"3019343\" agenttypeid=\"12\" corporationid=\"1000171\" divisionid=\"28\" level=\"1\" locationid=\"60015041\" locator=\"false\"/>\r\n    <row agent=\"Latorfani Aldimund\" agentid=\"3019344\" agenttypeid=\"12\" corporationid=\"1000170\" divisionid=\"25\" level=\"1\" locationid=\"60015037\" locator=\"false\"/>\r\n    <row agent=\"Stedad Yrmori\" agentid=\"3019345\" agenttypeid=\"12\" corporationid=\"1000170\" divisionid=\"27\" level=\"1\" locationid=\"60015037\" locator=\"false\"/>\r\n    <row agent=\"Arninald Beinarakur\" agentid=\"3019346\" agenttypeid=\"12\" corporationid=\"1000172\" divisionid=\"28\" level=\"1\" locationid=\"60015046\" locator=\"false\"/>\r\n    <row agent=\"Harbuko Bedgimund\" agentid=\"3019347\" agenttypeid=\"12\" corporationid=\"1000172\" divisionid=\"27\" level=\"1\" locationid=\"60015046\" locator=\"false\"/>\r\n    <row agent=\"Zhesar Sungestot\" agentid=\"3019348\" agenttypeid=\"12\" corporationid=\"1000165\" divisionid=\"27\" level=\"1\" locationid=\"60015020\" locator=\"false\"/>\r\n    <row agent=\"Zafarara Fari\" agentid=\"3019349\" agenttypeid=\"12\" corporationid=\"1000165\" divisionid=\"28\" level=\"1\" locationid=\"60015020\" locator=\"false\"/>\r\n    <row agent=\"Kokseri Velen\" agentid=\"3019352\" agenttypeid=\"12\" corporationid=\"1000167\" divisionid=\"27\" level=\"1\" locationid=\"60015027\" locator=\"false\"/>\r\n    <row agent=\"Hakkaras Ihora\" agentid=\"3019353\" agenttypeid=\"12\" corporationid=\"1000167\" divisionid=\"25\" level=\"1\" locationid=\"60015027\" locator=\"false\"/>\r\n    <row agent=\"Kirvas Ohvali\" agentid=\"3019354\" agenttypeid=\"12\" corporationid=\"1000045\" divisionid=\"27\" level=\"1\" locationid=\"60015005\" locator=\"false\"/>\r\n    <row agent=\"Ikonaiki Ebora\" agentid=\"3019355\" agenttypeid=\"12\" corporationid=\"1000045\" divisionid=\"28\" level=\"1\" locationid=\"60015005\" locator=\"false\"/>\r\n    <row agent=\"Sister Alitura\" agentid=\"3019356\" agenttypeid=\"10\" corporationid=\"1000130\" divisionid=\"24\" level=\"1\" locationid=\"60012607\" locator=\"false\"/>\r\n    <row agent=\"Delphine Xarasier\" agentid=\"3019358\" agenttypeid=\"10\" corporationid=\"1000101\" divisionid=\"18\" level=\"1\" locationid=\"60010252\" locator=\"false\"/>\r\n    <row agent=\"Immuri Asaka\" agentid=\"3019359\" agenttypeid=\"10\" corporationid=\"1000005\" divisionid=\"24\" level=\"1\" locationid=\"60000541\" locator=\"false\"/>\r\n    <row agent=\"Nachi Koruda\" agentid=\"3019360\" agenttypeid=\"10\" corporationid=\"1000034\" divisionid=\"24\" level=\"1\" locationid=\"60014668\" locator=\"false\"/>\r\n    <row agent=\"Keita Eslin\" agentid=\"3019361\" agenttypeid=\"10\" corporationid=\"1000047\" divisionid=\"24\" level=\"1\" locationid=\"60004516\" locator=\"false\"/>\r\n    <row agent=\"Tarak Erand\" agentid=\"3019362\" agenttypeid=\"10\" corporationid=\"1000049\" divisionid=\"24\" level=\"1\" locationid=\"60004609\" locator=\"false\"/>\r\n    <row agent=\"Dovirch Anselm\" agentid=\"3019363\" agenttypeid=\"10\" corporationid=\"1000126\" divisionid=\"24\" level=\"1\" locationid=\"60012526\" locator=\"false\"/>\r\n    <row agent=\"Doctor Canius\" agentid=\"3019364\" agenttypeid=\"10\" corporationid=\"1000093\" divisionid=\"22\" level=\"1\" locationid=\"60008992\" locator=\"false\"/>\r\n    <row agent=\"Brus Colterne\" agentid=\"3019365\" agenttypeid=\"10\" corporationid=\"1000120\" divisionid=\"24\" level=\"1\" locationid=\"60011734\" locator=\"false\"/>\r\n    <row agent=\"Kitar Ang\" agentid=\"3019366\" agenttypeid=\"10\" corporationid=\"1000051\" divisionid=\"24\" level=\"1\" locationid=\"60004744\" locator=\"false\"/>\r\n    <row agent=\"Lear Evanus\" agentid=\"3019367\" agenttypeid=\"10\" corporationid=\"1000084\" divisionid=\"24\" level=\"1\" locationid=\"60008368\" locator=\"false\"/>\r\n    <row agent=\"Adani Yusev\" agentid=\"3019368\" agenttypeid=\"10\" corporationid=\"1000038\" divisionid=\"24\" level=\"1\" locationid=\"60003964\" locator=\"false\"/>\r\n    <row agent=\"Tevis Jak\" agentid=\"3019369\" agenttypeid=\"10\" corporationid=\"1000129\" divisionid=\"23\" level=\"1\" locationid=\"60012583\" locator=\"false\"/>\r\n    <row agent=\"Pusamon Arnen\" agentid=\"3019370\" agenttypeid=\"12\" corporationid=\"1000044\" divisionid=\"25\" level=\"1\" locationid=\"60015001\" locator=\"false\"/>\r\n    <row agent=\"Yamonen Petihainen\" agentid=\"3019371\" agenttypeid=\"12\" corporationid=\"1000044\" divisionid=\"28\" level=\"1\" locationid=\"60015001\" locator=\"false\"/>\r\n    <row agent=\"Katsen Isha\" agentid=\"3019372\" agenttypeid=\"10\" corporationid=\"1000017\" divisionid=\"24\" level=\"4\" locationid=\"60001831\" locator=\"false\"/>\r\n    <row agent=\"Hunen Arekila\" agentid=\"3019373\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"4\" locationid=\"60004387\" locator=\"false\"/>\r\n    <row agent=\"Asturi Arakenda\" agentid=\"3019375\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"4\" locationid=\"60004414\" locator=\"false\"/>\r\n    <row agent=\"Kodunokka Elakachi\" agentid=\"3019376\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"4\" locationid=\"60004303\" locator=\"false\"/>\r\n    <row agent=\"Uesi Tuomaitoh\" agentid=\"3019377\" agenttypeid=\"2\" corporationid=\"1000005\" divisionid=\"24\" level=\"4\" locationid=\"60000526\" locator=\"true\"/>\r\n    <row agent=\"Jullamo Yarjenaita\" agentid=\"3019379\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"4\" locationid=\"60004342\" locator=\"false\"/>\r\n    <row agent=\"Huras Vuokiras\" agentid=\"3019380\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"4\" locationid=\"60004351\" locator=\"true\"/>\r\n    <row agent=\"Aokinisen Oksira\" agentid=\"3019381\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60003928\" locator=\"false\"/>\r\n    <row agent=\"Urpiluola Samiwa\" agentid=\"3019382\" agenttypeid=\"2\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60003898\" locator=\"false\"/>\r\n    <row agent=\"Vreau Roergette\" agentid=\"3019383\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"4\" locationid=\"60011851\" locator=\"false\"/>\r\n    <row agent=\"Oduma Onnajus\" agentid=\"3019385\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"4\" locationid=\"60004165\" locator=\"false\"/>\r\n    <row agent=\"Apiencaron Flothemes\" agentid=\"3019386\" agenttypeid=\"2\" corporationid=\"1000121\" divisionid=\"24\" level=\"4\" locationid=\"60011965\" locator=\"false\"/>\r\n    <row agent=\"Avele Lelynier\" agentid=\"3019387\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"3\" locationid=\"60011767\" locator=\"false\"/>\r\n    <row agent=\"Criesles Clettame\" agentid=\"3019388\" agenttypeid=\"2\" corporationid=\"1000120\" divisionid=\"24\" level=\"4\" locationid=\"60011908\" locator=\"false\"/>\r\n    <row agent=\"Sotrentaira Isara\" agentid=\"3019389\" agenttypeid=\"2\" corporationid=\"1000037\" divisionid=\"24\" level=\"4\" locationid=\"60015119\" locator=\"false\"/>\r\n    <row agent=\"Laremund Gangulur\" agentid=\"3019392\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"4\" locationid=\"60004621\" locator=\"false\"/>\r\n    <row agent=\"Skartufer Arnor\" agentid=\"3019393\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"3\" locationid=\"60004621\" locator=\"false\"/>\r\n    <row agent=\"Isunas Ykko\" agentid=\"3019394\" agenttypeid=\"2\" corporationid=\"1000038\" divisionid=\"24\" level=\"4\" locationid=\"60003967\" locator=\"false\"/>\r\n    <row agent=\"Gekenda Manedari\" agentid=\"3019395\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"4\" locationid=\"60004618\" locator=\"false\"/>\r\n    <row agent=\"Aursa Kunivuri\" agentid=\"3019396\" agenttypeid=\"10\" corporationid=\"1000023\" divisionid=\"22\" level=\"4\" locationid=\"60002428\" locator=\"false\"/>\r\n    <row agent=\"Suoma Ukkilakka\" agentid=\"3019397\" agenttypeid=\"2\" corporationid=\"1000043\" divisionid=\"24\" level=\"4\" locationid=\"60004354\" locator=\"false\"/>\r\n    <row agent=\"Krar Irwo\" agentid=\"3019398\" agenttypeid=\"2\" corporationid=\"1000049\" divisionid=\"24\" level=\"4\" locationid=\"60004618\" locator=\"false\"/>\r\n    <row agent=\"Kotasen Isanakka\" agentid=\"3019399\" agenttypeid=\"2\" corporationid=\"1000041\" divisionid=\"24\" level=\"4\" locationid=\"60004228\" locator=\"false\"/>\r\n    <row agent=\"Sinas Egassuo\" agentid=\"3019400\" agenttypeid=\"10\" corporationid=\"1000035\" divisionid=\"24\" level=\"4\" locationid=\"60003754\" locator=\"false\"/>\r\n    <row agent=\"Arikio Kuretsu\" agentid=\"3019401\" agenttypeid=\"10\" corporationid=\"1000005\" divisionid=\"24\" level=\"4\" locationid=\"60000526\" locator=\"false\"/>\r\n    <row agent=\"Riff Hebian\" agentid=\"3019402\" agenttypeid=\"10\" corporationid=\"1000084\" divisionid=\"24\" level=\"4\" locationid=\"60008368\" locator=\"false\"/>\r\n    <row agent=\"Celia Aeldern\" agentid=\"3019403\" agenttypeid=\"10\" corporationid=\"1000046\" divisionid=\"24\" level=\"1\" locationid=\"60004504\" locator=\"false\"/>\r\n    <row agent=\"Alfrieda\" agentid=\"3019404\" agenttypeid=\"10\" corporationid=\"1000046\" divisionid=\"24\" level=\"1\" locationid=\"60004480\" locator=\"false\"/>\r\n    <row agent=\"Ademara Aeldern\" agentid=\"3019405\" agenttypeid=\"10\" corporationid=\"1000057\" divisionid=\"24\" level=\"1\" locationid=\"60005683\" locator=\"false\"/>\r\n    <row agent=\"Kandus Sandar\" agentid=\"3019406\" agenttypeid=\"10\" corporationid=\"1000082\" divisionid=\"24\" level=\"4\" locationid=\"60008209\" locator=\"false\"/>\r\n    <row agent=\"Aralin Jick\" agentid=\"3019407\" agenttypeid=\"10\" corporationid=\"1000089\" divisionid=\"24\" level=\"4\" locationid=\"60008689\" locator=\"false\"/>\r\n    <row agent=\"Krethar Mann\" agentid=\"3019408\" agenttypeid=\"10\" corporationid=\"1000162\" divisionid=\"24\" level=\"4\" locationid=\"60014284\" locator=\"false\"/>\r\n    <row agent=\"Gian Parele\" agentid=\"3019409\" agenttypeid=\"10\" corporationid=\"1000105\" divisionid=\"22\" level=\"4\" locationid=\"60010486\" locator=\"false\"/>\r\n    <row agent=\"Eron Viette\" agentid=\"3019410\" agenttypeid=\"10\" corporationid=\"1000105\" divisionid=\"22\" level=\"4\" locationid=\"60010513\" locator=\"false\"/>\r\n    <row agent=\"Arsten Takalo\" agentid=\"3019411\" agenttypeid=\"10\" corporationid=\"1000049\" divisionid=\"24\" level=\"4\" locationid=\"60004588\" locator=\"false\"/>\r\n    <row agent=\"Roineron Aviviere\" agentid=\"3019412\" agenttypeid=\"10\" corporationid=\"1000105\" divisionid=\"24\" level=\"4\" locationid=\"60010486\" locator=\"false\"/>\r\n    <row agent=\"Veine Coructie\" agentid=\"3019413\" agenttypeid=\"10\" corporationid=\"1000107\" divisionid=\"22\" level=\"4\" locationid=\"60010681\" locator=\"false\"/>\r\n    <row agent=\"Mourmarie Mone\" agentid=\"3019414\" agenttypeid=\"10\" corporationid=\"1000121\" divisionid=\"24\" level=\"4\" locationid=\"60011914\" locator=\"false\"/>\r\n    <row agent=\"Karde Romu\" agentid=\"3019415\" agenttypeid=\"10\" corporationid=\"1000082\" divisionid=\"24\" level=\"4\" locationid=\"60008128\" locator=\"false\"/>\r\n    <row agent=\"Haemer Burroote\" agentid=\"3019416\" agenttypeid=\"8\" corporationid=\"1000102\" divisionid=\"22\" level=\"4\" locationid=\"60010300\" locator=\"false\"/>\r\n    <row agent=\"Bruffrer Vria\" agentid=\"3019417\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"4\" locationid=\"60010312\" locator=\"false\"/>\r\n    <row agent=\"Vienlomandie Slace\" agentid=\"3019418\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"4\" locationid=\"60010342\" locator=\"false\"/>\r\n    <row agent=\"Moger Maloys\" agentid=\"3019419\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"4\" locationid=\"60010387\" locator=\"true\"/>\r\n    <row agent=\"Hasbroulone Alolane\" agentid=\"3019420\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"4\" locationid=\"60010375\" locator=\"false\"/>\r\n    <row agent=\"Colelie Dulere\" agentid=\"3019421\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"3\" locationid=\"60010309\" locator=\"true\"/>\r\n    <row agent=\"Diarrala Ommasyn\" agentid=\"3019422\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"3\" locationid=\"60010339\" locator=\"false\"/>\r\n    <row agent=\"Ermettin Surroter\" agentid=\"3019423\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"3\" locationid=\"60010384\" locator=\"true\"/>\r\n    <row agent=\"Frelle Roetlenerer\" agentid=\"3019424\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"3\" locationid=\"60010348\" locator=\"false\"/>\r\n    <row agent=\"Ansonnoteel Aunchot\" agentid=\"3019425\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"2\" locationid=\"60010315\" locator=\"true\"/>\r\n    <row agent=\"Angonson Pessoen\" agentid=\"3019426\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"2\" locationid=\"60010336\" locator=\"false\"/>\r\n    <row agent=\"Rounedent Enegute\" agentid=\"3019427\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"2\" locationid=\"60010300\" locator=\"false\"/>\r\n    <row agent=\"Dixie Tre\" agentid=\"3019428\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"2\" locationid=\"60010381\" locator=\"true\"/>\r\n    <row agent=\"Beliaerdt Guinnon\" agentid=\"3019429\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"2\" locationid=\"60010345\" locator=\"false\"/>\r\n    <row agent=\"Blue Oer\" agentid=\"3019430\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"2\" locationid=\"60010372\" locator=\"false\"/>\r\n    <row agent=\"Lalmurel Cloic\" agentid=\"3019431\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"2\" locationid=\"60010360\" locator=\"false\"/>\r\n    <row agent=\"Hese Pallant\" agentid=\"3019432\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"2\" locationid=\"60010321\" locator=\"true\"/>\r\n    <row agent=\"Belles Ardonienan\" agentid=\"3019433\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"1\" locationid=\"60010309\" locator=\"false\"/>\r\n    <row agent=\"Alloux Lour\" agentid=\"3019434\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"1\" locationid=\"60010339\" locator=\"true\"/>\r\n    <row agent=\"Loorene Hoollecain\" agentid=\"3019435\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"1\" locationid=\"60010303\" locator=\"false\"/>\r\n    <row agent=\"Podineilles Galoriel\" agentid=\"3019436\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"1\" locationid=\"60010387\" locator=\"true\"/>\r\n    <row agent=\"Alebolle Erere\" agentid=\"3019437\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"1\" locationid=\"60010351\" locator=\"false\"/>\r\n    <row agent=\"Medene Meganier\" agentid=\"3019438\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"1\" locationid=\"60010378\" locator=\"false\"/>\r\n    <row agent=\"Kole Harnard\" agentid=\"3019439\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"1\" locationid=\"60010354\" locator=\"false\"/>\r\n    <row agent=\"Lich Vrievync\" agentid=\"3019440\" agenttypeid=\"2\" corporationid=\"1000102\" divisionid=\"24\" level=\"1\" locationid=\"60010318\" locator=\"false\"/>\r\n    <row agent=\"Terrus Harkan\" agentid=\"3019441\" agenttypeid=\"10\" corporationid=\"1000089\" divisionid=\"24\" level=\"4\" locationid=\"60008686\" locator=\"false\"/>\r\n    <row agent=\"Nilf Abruskur\" agentid=\"3019442\" agenttypeid=\"10\" corporationid=\"1000054\" divisionid=\"24\" level=\"4\" locationid=\"60005053\" locator=\"false\"/>\r\n    <row agent=\"Hiva Shesha\" agentid=\"3019443\" agenttypeid=\"10\" corporationid=\"1000047\" divisionid=\"24\" level=\"4\" locationid=\"60004516\" locator=\"false\"/>\r\n    <row agent=\"Ascain Adeset\" agentid=\"3019444\" agenttypeid=\"10\" corporationid=\"1000094\" divisionid=\"22\" level=\"4\" locationid=\"60009175\" locator=\"false\"/>\r\n    <row agent=\"Aire Arryns\" agentid=\"3019445\" agenttypeid=\"12\" corporationid=\"1000165\" divisionid=\"26\" level=\"1\" locationid=\"60015020\" locator=\"false\"/>\r\n    <row agent=\"Ketandia Iosos\" agentid=\"3019446\" agenttypeid=\"12\" corporationid=\"1000166\" divisionid=\"26\" level=\"1\" locationid=\"60015021\" locator=\"false\"/>\r\n    <row agent=\"Raish Okarema\" agentid=\"3019447\" agenttypeid=\"12\" corporationid=\"1000077\" divisionid=\"26\" level=\"1\" locationid=\"60015010\" locator=\"false\"/>\r\n    <row agent=\"Unachi Arikola\" agentid=\"3019448\" agenttypeid=\"12\" corporationid=\"1000044\" divisionid=\"26\" level=\"1\" locationid=\"60015001\" locator=\"false\"/>\r\n    <row agent=\"Chigas Ovoken\" agentid=\"3019449\" agenttypeid=\"12\" corporationid=\"1000167\" divisionid=\"26\" level=\"1\" locationid=\"60015027\" locator=\"false\"/>\r\n    <row agent=\"Rimaremi Tasanen\" agentid=\"3019450\" agenttypeid=\"12\" corporationid=\"1000045\" divisionid=\"26\" level=\"1\" locationid=\"60015005\" locator=\"false\"/>\r\n    <row agent=\"Potillot Mumnier\" agentid=\"3019451\" agenttypeid=\"12\" corporationid=\"1000115\" divisionid=\"26\" level=\"1\" locationid=\"60015016\" locator=\"false\"/>\r\n    <row agent=\"Olarie Lacenten\" agentid=\"3019452\" agenttypeid=\"12\" corporationid=\"1000169\" divisionid=\"26\" level=\"1\" locationid=\"60015036\" locator=\"false\"/>\r\n    <row agent=\"Agalle Vacoloure\" agentid=\"3019453\" agenttypeid=\"12\" corporationid=\"1000168\" divisionid=\"26\" level=\"1\" locationid=\"60015029\" locator=\"false\"/>\r\n    <row agent=\"Albo Onurbad\" agentid=\"3019454\" agenttypeid=\"12\" corporationid=\"1000170\" divisionid=\"26\" level=\"1\" locationid=\"60015037\" locator=\"false\"/>\r\n    <row agent=\"Wettor Fugen\" agentid=\"3019455\" agenttypeid=\"12\" corporationid=\"1000171\" divisionid=\"26\" level=\"1\" locationid=\"60015041\" locator=\"false\"/>\r\n    <row agent=\"Bradondar Alfalur\" agentid=\"3019456\" agenttypeid=\"12\" corporationid=\"1000172\" divisionid=\"26\" level=\"1\" locationid=\"60015046\" locator=\"false\"/>\r\n    <row agent=\"Kori Latamaki\" agentid=\"3019457\" agenttypeid=\"10\" corporationid=\"1000127\" divisionid=\"24\" level=\"3\" locationid=\"60012571\" locator=\"false\"/>\r\n    <row agent=\"Cilis Leglise\" agentid=\"3019458\" agenttypeid=\"10\" corporationid=\"1000127\" divisionid=\"24\" level=\"3\" locationid=\"60012556\" locator=\"false\"/>\r\n    <row agent=\"Irichi Tsunikabda\" agentid=\"3019459\" agenttypeid=\"10\" corporationid=\"1000127\" divisionid=\"24\" level=\"3\" locationid=\"60012577\" locator=\"false\"/>\r\n    <row agent=\"Abdiel Verat\" agentid=\"3019460\" agenttypeid=\"10\" corporationid=\"1000124\" divisionid=\"24\" level=\"3\" locationid=\"60012214\" locator=\"false\"/>\r\n    <row agent=\"Kadeja Dulche\" agentid=\"3019461\" agenttypeid=\"10\" corporationid=\"1000138\" divisionid=\"24\" level=\"3\" locationid=\"60013060\" locator=\"false\"/>\r\n    <row agent=\"Atma Aulato\" agentid=\"3019462\" agenttypeid=\"10\" corporationid=\"1000004\" divisionid=\"22\" level=\"3\" locationid=\"60000310\" locator=\"false\"/>\r\n    <row agent=\"Arment Caute\" agentid=\"3019463\" agenttypeid=\"10\" corporationid=\"1000121\" divisionid=\"24\" level=\"3\" locationid=\"60011914\" locator=\"false\"/>\r\n    <row agent=\"Yada Vinjivas\" agentid=\"3019464\" agenttypeid=\"10\" corporationid=\"1000127\" divisionid=\"24\" level=\"3\" locationid=\"60012556\" locator=\"false\"/>\r\n    <row agent=\"Aton Hordner\" agentid=\"3019465\" agenttypeid=\"10\" corporationid=\"1000054\" divisionid=\"24\" level=\"3\" locationid=\"60005053\" locator=\"false\"/>\r\n    <row agent=\"Arajna Ashia\" agentid=\"3019466\" agenttypeid=\"10\" corporationid=\"1000084\" divisionid=\"24\" level=\"3\" locationid=\"60008368\" locator=\"false\"/>\r\n    <row agent=\"Ellar Stin\" agentid=\"3019467\" agenttypeid=\"10\" corporationid=\"1000138\" divisionid=\"22\" level=\"3\" locationid=\"60012211\" locator=\"false\"/>\r\n    <row agent=\"Hadana Avyer\" agentid=\"3019468\" agenttypeid=\"12\" corporationid=\"1000165\" divisionid=\"29\" level=\"1\" locationid=\"60015020\" locator=\"false\"/>\r\n    <row agent=\"Navai Mosten\" agentid=\"3019469\" agenttypeid=\"12\" corporationid=\"1000166\" divisionid=\"29\" level=\"1\" locationid=\"60015021\" locator=\"false\"/>\r\n    <row agent=\"Kiamarian Nagakoun\" agentid=\"3019470\" agenttypeid=\"12\" corporationid=\"1000077\" divisionid=\"29\" level=\"1\" locationid=\"60015010\" locator=\"false\"/>\r\n    <row agent=\"Shiokala Notaja\" agentid=\"3019471\" agenttypeid=\"12\" corporationid=\"1000044\" divisionid=\"29\" level=\"1\" locationid=\"60015001\" locator=\"false\"/>\r\n    <row agent=\"Ijumachi Vuonolailen\" agentid=\"3019472\" agenttypeid=\"12\" corporationid=\"1000167\" divisionid=\"29\" level=\"1\" locationid=\"60015027\" locator=\"false\"/>\r\n    <row agent=\"Anmon Otsi\" agentid=\"3019473\" agenttypeid=\"12\" corporationid=\"1000045\" divisionid=\"29\" level=\"1\" locationid=\"60015005\" locator=\"false\"/>\r\n    <row agent=\"Ettes Alureel\" agentid=\"3019474\" agenttypeid=\"12\" corporationid=\"1000115\" divisionid=\"29\" level=\"1\" locationid=\"60015016\" locator=\"false\"/>\r\n    <row agent=\"Cala Baliaerdt\" agentid=\"3019475\" agenttypeid=\"12\" corporationid=\"1000169\" divisionid=\"29\" level=\"1\" locationid=\"60015036\" locator=\"false\"/>\r\n    <row agent=\"Gosauvel Aulbres\" agentid=\"3019476\" agenttypeid=\"12\" corporationid=\"1000168\" divisionid=\"29\" level=\"1\" locationid=\"60015029\" locator=\"false\"/>\r\n    <row agent=\"Gonakis Eraettafrin\" agentid=\"3019477\" agenttypeid=\"12\" corporationid=\"1000170\" divisionid=\"29\" level=\"1\" locationid=\"60015037\" locator=\"false\"/>\r\n    <row agent=\"Artgert Ardreas\" agentid=\"3019478\" agenttypeid=\"12\" corporationid=\"1000171\" divisionid=\"29\" level=\"1\" locationid=\"60015041\" locator=\"false\"/>\r\n    <row agent=\"Sut Bjar\" agentid=\"3019479\" agenttypeid=\"12\" corporationid=\"1000172\" divisionid=\"29\" level=\"1\" locationid=\"60015046\" locator=\"false\"/>\r\n    <row agent=\"Karsten Lundham\" agentid=\"3019483\" agenttypeid=\"8\" corporationid=\"1000046\" divisionid=\"24\" level=\"1\" locationid=\"60004480\" locator=\"false\"/>\r\n    <row agent=\"Patrikia Noirild\" agentid=\"3019484\" agenttypeid=\"8\" corporationid=\"1000171\" divisionid=\"22\" level=\"1\" locationid=\"60014779\" locator=\"false\"/>\r\n    <row agent=\"Rohan Shadrak\" agentid=\"3019485\" agenttypeid=\"8\" corporationid=\"1000048\" divisionid=\"24\" level=\"1\" locationid=\"60004552\" locator=\"false\"/>\r\n    <row agent=\"Aura Emrayur\" agentid=\"3019486\" agenttypeid=\"11\" corporationid=\"1000077\" divisionid=\"22\" level=\"1\" locationid=\"60007702\" locator=\"false\"/>\r\n    <row agent=\"Merimeth Sarum\" agentid=\"3019487\" agenttypeid=\"8\" corporationid=\"1000088\" divisionid=\"24\" level=\"4\" locationid=\"60008650\" locator=\"false\"/>\r\n    <row agent=\"Jacus Roden\" agentid=\"3019488\" agenttypeid=\"8\" corporationid=\"1000102\" divisionid=\"24\" level=\"5\" locationid=\"60011599\" locator=\"false\"/>\r\n    <row agent=\"Aura Sehmy\" agentid=\"3019489\" agenttypeid=\"11\" corporationid=\"1000165\" divisionid=\"22\" level=\"1\" locationid=\"60014599\" locator=\"false\"/>\r\n    <row agent=\"Aura Chaven\" agentid=\"3019490\" agenttypeid=\"11\" corporationid=\"1000166\" divisionid=\"22\" level=\"1\" locationid=\"60014629\" locator=\"false\"/>\r\n    <row agent=\"Korako Kosakami\" agentid=\"3019491\" agenttypeid=\"8\" corporationid=\"1000127\" divisionid=\"24\" level=\"5\" locationid=\"60012556\" locator=\"false\"/>\r\n    <row agent=\"Aura Kisogo\" agentid=\"3019492\" agenttypeid=\"11\" corporationid=\"1000167\" divisionid=\"22\" level=\"1\" locationid=\"60014659\" locator=\"false\"/>\r\n    <row agent=\"Aura Amsen\" agentid=\"3019493\" agenttypeid=\"11\" corporationid=\"1000045\" divisionid=\"22\" level=\"1\" locationid=\"60004450\" locator=\"false\"/>\r\n    <row agent=\"Aura Todaki\" agentid=\"3019494\" agenttypeid=\"11\" corporationid=\"1000044\" divisionid=\"22\" level=\"1\" locationid=\"60004420\" locator=\"false\"/>\r\n    <row agent=\"Aura Bourynes\" agentid=\"3019495\" agenttypeid=\"11\" corporationid=\"1000115\" divisionid=\"22\" level=\"1\" locationid=\"60011566\" locator=\"false\"/>\r\n    <row agent=\"Aura Duripant\" agentid=\"3019496\" agenttypeid=\"11\" corporationid=\"1000168\" divisionid=\"22\" level=\"1\" locationid=\"60014689\" locator=\"false\"/>\r\n    <row agent=\"Aura Cistuvaert\" agentid=\"3019497\" agenttypeid=\"11\" corporationid=\"1000169\" divisionid=\"22\" level=\"1\" locationid=\"60014719\" locator=\"false\"/>\r\n    <row agent=\"Aura Hulm\" agentid=\"3019498\" agenttypeid=\"11\" corporationid=\"1000171\" divisionid=\"22\" level=\"1\" locationid=\"60014779\" locator=\"false\"/>\r\n    <row agent=\"Aura Ammold\" agentid=\"3019499\" agenttypeid=\"11\" corporationid=\"1000170\" divisionid=\"22\" level=\"1\" locationid=\"60014749\" locator=\"false\"/>\r\n    <row agent=\"Aura Ryddinjorn\" agentid=\"3019500\" agenttypeid=\"11\" corporationid=\"1000172\" divisionid=\"22\" level=\"1\" locationid=\"60014809\" locator=\"false\"/>\r\n    <row agent=\"Hasaziras Assa\" agentid=\"3019501\" agenttypeid=\"8\" corporationid=\"1000149\" divisionid=\"24\" level=\"1\" locationid=\"60013555\" locator=\"false\"/>\r\n    <row agent=\"IRIS - Amarr\" agentid=\"3020032\" agenttypeid=\"13\" corporationid=\"1000419\" divisionid=\"37\" level=\"1\" locationid=\"60015168\" locator=\"false\"/>\r\n    <row agent=\"IRIS - Jita\" agentid=\"3020034\" agenttypeid=\"13\" corporationid=\"1000419\" divisionid=\"37\" level=\"1\" locationid=\"60015169\" locator=\"false\"/>\r\n    <row agent=\"IRIS - Hek\" agentid=\"3020035\" agenttypeid=\"13\" corporationid=\"1000419\" divisionid=\"37\" level=\"1\" locationid=\"60015171\" locator=\"false\"/>\r\n    <row agent=\"IRIS - Dodixie\" agentid=\"3020036\" agenttypeid=\"13\" corporationid=\"1000419\" divisionid=\"37\" level=\"1\" locationid=\"60015170\" locator=\"false\"/>\r\n    <row agent=\"IRIS - Rens\" agentid=\"3020037\" agenttypeid=\"13\" corporationid=\"1000419\" divisionid=\"37\" level=\"1\" locationid=\"60015172\" locator=\"false\"/>\r\n    <row agent=\"IRIS - Ourapheh\" agentid=\"3020039\" agenttypeid=\"13\" corporationid=\"1000419\" divisionid=\"37\" level=\"1\" locationid=\"60015167\" locator=\"false\"/>\r\n    <row agent=\"IRIS - Amamake\" agentid=\"3020047\" agenttypeid=\"13\" corporationid=\"1000419\" divisionid=\"37\" level=\"1\" locationid=\"60015175\" locator=\"false\"/>\r\n    <row agent=\"IRIS - Assah\" agentid=\"3020048\" agenttypeid=\"13\" corporationid=\"1000419\" divisionid=\"37\" level=\"1\" locationid=\"60015176\" locator=\"false\"/>\r\n    <row agent=\"IRIS - Aubenall\" agentid=\"3020049\" agenttypeid=\"13\" corporationid=\"1000419\" divisionid=\"37\" level=\"1\" locationid=\"60015177\" locator=\"false\"/>\r\n    <row agent=\"IRIS - Yehaba\" agentid=\"3020050\" agenttypeid=\"13\" corporationid=\"1000419\" divisionid=\"37\" level=\"1\" locationid=\"60015178\" locator=\"false\"/>\r\n    <row agent=\"IRIS - Hakonen\" agentid=\"3020051\" agenttypeid=\"13\" corporationid=\"1000419\" divisionid=\"37\" level=\"1\" locationid=\"60015179\" locator=\"false\"/>\r\n    <row agent=\"Elias Peltonnen\" agentid=\"3020089\" agenttypeid=\"10\" corporationid=\"1000276\" divisionid=\"23\" level=\"1\" locationid=\"60015157\" locator=\"false\"/>\r\n</rows>\r\n"
  },
  {
    "path": "data/flags.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\r\n<rows>\r\n    <!--Generated from Eve Online Toolkit. ©CCP hf. All rights reserved. Used with permission.-->\r\n    <row flagid=\"0\" flagname=\"None\" flagtext=\"None\"/>\r\n    <row flagid=\"1\" flagname=\"Wallet\" flagtext=\"Wallet\"/>\r\n    <row flagid=\"2\" flagname=\"Offices\" flagtext=\"OfficeFolder\"/>\r\n    <row flagid=\"3\" flagname=\"Wardrobe\" flagtext=\"Wardrobe\"/>\r\n    <row flagid=\"4\" flagname=\"Hangar\" flagtext=\"Hangar\"/>\r\n    <row flagid=\"5\" flagname=\"Cargo\" flagtext=\"Cargo\"/>\r\n    <row flagid=\"6\" flagname=\"OfficeImpound\" flagtext=\"Impounded Offices\"/>\r\n    <row flagid=\"7\" flagname=\"Skill\" flagtext=\"Skill\"/>\r\n    <row flagid=\"8\" flagname=\"Reward\" flagtext=\"Reward\"/>\r\n    <row flagid=\"11\" flagname=\"LoSlot0\" flagtext=\"Low power slot 1\"/>\r\n    <row flagid=\"12\" flagname=\"LoSlot1\" flagtext=\"Low power slot 2\"/>\r\n    <row flagid=\"13\" flagname=\"LoSlot2\" flagtext=\"Low power slot 3\"/>\r\n    <row flagid=\"14\" flagname=\"LoSlot3\" flagtext=\"Low power slot 4\"/>\r\n    <row flagid=\"15\" flagname=\"LoSlot4\" flagtext=\"Low power slot 5\"/>\r\n    <row flagid=\"16\" flagname=\"LoSlot5\" flagtext=\"Low power slot 6\"/>\r\n    <row flagid=\"17\" flagname=\"LoSlot6\" flagtext=\"Low power slot 7\"/>\r\n    <row flagid=\"18\" flagname=\"LoSlot7\" flagtext=\"Low power slot 8\"/>\r\n    <row flagid=\"19\" flagname=\"MedSlot0\" flagtext=\"Medium power slot 1\"/>\r\n    <row flagid=\"20\" flagname=\"MedSlot1\" flagtext=\"Medium power slot 2\"/>\r\n    <row flagid=\"21\" flagname=\"MedSlot2\" flagtext=\"Medium power slot 3\"/>\r\n    <row flagid=\"22\" flagname=\"MedSlot3\" flagtext=\"Medium power slot 4\"/>\r\n    <row flagid=\"23\" flagname=\"MedSlot4\" flagtext=\"Medium power slot 5\"/>\r\n    <row flagid=\"24\" flagname=\"MedSlot5\" flagtext=\"Medium power slot 6\"/>\r\n    <row flagid=\"25\" flagname=\"MedSlot6\" flagtext=\"Medium power slot 7\"/>\r\n    <row flagid=\"26\" flagname=\"MedSlot7\" flagtext=\"Medium power slot 8\"/>\r\n    <row flagid=\"27\" flagname=\"HiSlot0\" flagtext=\"High power slot 1\"/>\r\n    <row flagid=\"28\" flagname=\"HiSlot1\" flagtext=\"High power slot 2\"/>\r\n    <row flagid=\"29\" flagname=\"HiSlot2\" flagtext=\"High power slot 3\"/>\r\n    <row flagid=\"30\" flagname=\"HiSlot3\" flagtext=\"High power slot 4\"/>\r\n    <row flagid=\"31\" flagname=\"HiSlot4\" flagtext=\"High power slot 5\"/>\r\n    <row flagid=\"32\" flagname=\"HiSlot5\" flagtext=\"High power slot 6\"/>\r\n    <row flagid=\"33\" flagname=\"HiSlot6\" flagtext=\"High power slot 7\"/>\r\n    <row flagid=\"34\" flagname=\"HiSlot7\" flagtext=\"High power slot 8\"/>\r\n    <row flagid=\"35\" flagname=\"Fixed Slot\" flagtext=\"Fixed Slot\"/>\r\n    <row flagid=\"36\" flagname=\"AssetSafety\" flagtext=\"Asset Safety\"/>\r\n    <row flagid=\"56\" flagname=\"Capsule\" flagtext=\"Capsule\"/>\r\n    <row flagid=\"57\" flagname=\"Pilot\" flagtext=\"Pilot\"/>\r\n    <row flagid=\"61\" flagname=\"Skill In Training\" flagtext=\"Skill in training\"/>\r\n    <row flagid=\"62\" flagname=\"CorpMarket\" flagtext=\"Corporation Market Deliveries / Returns\"/>\r\n    <row flagid=\"63\" flagname=\"Locked\" flagtext=\"Locked item, can not be moved unless unlocked\"/>\r\n    <row flagid=\"64\" flagname=\"Unlocked\" flagtext=\"Unlocked item, can be moved\"/>\r\n    <row flagid=\"70\" flagname=\"Office Slot 1\" flagtext=\"Office slot 1\"/>\r\n    <row flagid=\"71\" flagname=\"Office Slot 2\" flagtext=\"Office slot 2\"/>\r\n    <row flagid=\"72\" flagname=\"Office Slot 3\" flagtext=\"Office slot 3\"/>\r\n    <row flagid=\"73\" flagname=\"Office Slot 4\" flagtext=\"Office slot 4\"/>\r\n    <row flagid=\"74\" flagname=\"Office Slot 5\" flagtext=\"Office slot 5\"/>\r\n    <row flagid=\"75\" flagname=\"Office Slot 6\" flagtext=\"Office slot 6\"/>\r\n    <row flagid=\"76\" flagname=\"Office Slot 7\" flagtext=\"Office slot 7\"/>\r\n    <row flagid=\"77\" flagname=\"Office Slot 8\" flagtext=\"Office slot 8\"/>\r\n    <row flagid=\"78\" flagname=\"Office Slot 9\" flagtext=\"Office slot 9\"/>\r\n    <row flagid=\"79\" flagname=\"Office Slot 10\" flagtext=\"Office slot 10\"/>\r\n    <row flagid=\"80\" flagname=\"Office Slot 11\" flagtext=\"Office slot 11\"/>\r\n    <row flagid=\"81\" flagname=\"Office Slot 12\" flagtext=\"Office slot 12\"/>\r\n    <row flagid=\"82\" flagname=\"Office Slot 13\" flagtext=\"Office slot 13\"/>\r\n    <row flagid=\"83\" flagname=\"Office Slot 14\" flagtext=\"Office slot 14\"/>\r\n    <row flagid=\"84\" flagname=\"Office Slot 15\" flagtext=\"Office slot 15\"/>\r\n    <row flagid=\"85\" flagname=\"Office Slot 16\" flagtext=\"Office slot 16\"/>\r\n    <row flagid=\"86\" flagname=\"Bonus\" flagtext=\"Bonus\"/>\r\n    <row flagid=\"87\" flagname=\"DroneBay\" flagtext=\"Drone Bay\"/>\r\n    <row flagid=\"88\" flagname=\"Booster\" flagtext=\"Booster\"/>\r\n    <row flagid=\"89\" flagname=\"Implant\" flagtext=\"Implant\"/>\r\n    <row flagid=\"90\" flagname=\"ShipHangar\" flagtext=\"Ship Hangar\"/>\r\n    <row flagid=\"91\" flagname=\"ShipOffline\" flagtext=\"Ship Offline\"/>\r\n    <row flagid=\"92\" flagname=\"RigSlot0\" flagtext=\"Rig power slot 1\"/>\r\n    <row flagid=\"93\" flagname=\"RigSlot1\" flagtext=\"Rig power slot 2\"/>\r\n    <row flagid=\"94\" flagname=\"RigSlot2\" flagtext=\"Rig power slot 3\"/>\r\n    <row flagid=\"95\" flagname=\"RigSlot3\" flagtext=\"Rig power slot 4\"/>\r\n    <row flagid=\"96\" flagname=\"RigSlot4\" flagtext=\"Rig power slot 5\"/>\r\n    <row flagid=\"97\" flagname=\"RigSlot5\" flagtext=\"Rig power slot 6\"/>\r\n    <row flagid=\"98\" flagname=\"RigSlot6\" flagtext=\"Rig power slot 7\"/>\r\n    <row flagid=\"99\" flagname=\"RigSlot7\" flagtext=\"Rig power slot 8\"/>\r\n    <row flagid=\"115\" flagname=\"CorpSAG1\" flagtext=\"Corp Security Access Group 1\"/>\r\n    <row flagid=\"116\" flagname=\"CorpSAG2\" flagtext=\"Corp Security Access Group 2\"/>\r\n    <row flagid=\"117\" flagname=\"CorpSAG3\" flagtext=\"Corp Security Access Group 3\"/>\r\n    <row flagid=\"118\" flagname=\"CorpSAG4\" flagtext=\"Corp Security Access Group 4\"/>\r\n    <row flagid=\"119\" flagname=\"CorpSAG5\" flagtext=\"Corp Security Access Group 5\"/>\r\n    <row flagid=\"120\" flagname=\"CorpSAG6\" flagtext=\"Corp Security Access Group 6\"/>\r\n    <row flagid=\"121\" flagname=\"CorpSAG7\" flagtext=\"Corp Security Access Group 7\"/>\r\n    <row flagid=\"122\" flagname=\"SecondaryStorage\" flagtext=\"Secondary Storage\"/>\r\n    <row flagid=\"125\" flagname=\"SubSystem0\" flagtext=\"Sub system slot 0\"/>\r\n    <row flagid=\"126\" flagname=\"SubSystem1\" flagtext=\"Sub system slot 1\"/>\r\n    <row flagid=\"127\" flagname=\"SubSystem2\" flagtext=\"Sub system slot 2\"/>\r\n    <row flagid=\"128\" flagname=\"SubSystem3\" flagtext=\"Sub system slot 3\"/>\r\n    <row flagid=\"129\" flagname=\"SubSystem4\" flagtext=\"Sub system slot 4\"/>\r\n    <row flagid=\"130\" flagname=\"SubSystem5\" flagtext=\"Sub system slot 5\"/>\r\n    <row flagid=\"131\" flagname=\"SubSystem6\" flagtext=\"Sub system slot 6\"/>\r\n    <row flagid=\"132\" flagname=\"SubSystem7\" flagtext=\"Sub system slot 7\"/>\r\n    <row flagid=\"133\" flagname=\"SpecializedFuelBay\" flagtext=\"Specialized Fuel Bay\"/>\r\n    <row flagid=\"134\" flagname=\"SpecializedAsteroidHold\" flagtext=\"Specialized Asteroid Hold\"/>\r\n    <row flagid=\"135\" flagname=\"SpecializedGasHold\" flagtext=\"Specialized Gas Hold\"/>\r\n    <row flagid=\"136\" flagname=\"SpecializedMineralHold\" flagtext=\"Specialized Mineral Hold\"/>\r\n    <row flagid=\"137\" flagname=\"SpecializedSalvageHold\" flagtext=\"Specialized Salvage Hold\"/>\r\n    <row flagid=\"138\" flagname=\"SpecializedShipHold\" flagtext=\"Specialized Ship Hold\"/>\r\n    <row flagid=\"139\" flagname=\"SpecializedSmallShipHold\" flagtext=\"Specialized Small Ship Hold\"/>\r\n    <row flagid=\"140\" flagname=\"SpecializedMediumShipHold\" flagtext=\"Specialized Medium Ship Hold\"/>\r\n    <row flagid=\"141\" flagname=\"SpecializedLargeShipHold\" flagtext=\"Specialized Large Ship Hold\"/>\r\n    <row flagid=\"142\" flagname=\"SpecializedIndustrialShipHold\" flagtext=\"Specialized Industrial Ship Hold\"/>\r\n    <row flagid=\"143\" flagname=\"SpecializedAmmoHold\" flagtext=\"Specialized Ammo Hold\"/>\r\n    <row flagid=\"144\" flagname=\"StructureActive\" flagtext=\"Structure Active\"/>\r\n    <row flagid=\"145\" flagname=\"StructureInactive\" flagtext=\"Structure Inactive\"/>\r\n    <row flagid=\"146\" flagname=\"JunkyardReprocessed\" flagtext=\"This item was put into a junkyard through reprocession.\"/>\r\n    <row flagid=\"147\" flagname=\"JunkyardTrashed\" flagtext=\"This item was put into a junkyard through being trashed by its owner.\"/>\r\n    <row flagid=\"148\" flagname=\"SpecializedCommandCenterHold\" flagtext=\"Specialized Command Center Hold\"/>\r\n    <row flagid=\"149\" flagname=\"SpecializedPlanetaryCommoditiesHold\" flagtext=\"Specialized Planetary Commodities Hold\"/>\r\n    <row flagid=\"150\" flagname=\"PlanetSurface\" flagtext=\"Planet Surface\"/>\r\n    <row flagid=\"151\" flagname=\"SpecializedMaterialBay\" flagtext=\"Specialized Material Bay\"/>\r\n    <row flagid=\"152\" flagname=\"DustCharacterDatabank\" flagtext=\"Dust Character Databank\"/>\r\n    <row flagid=\"153\" flagname=\"DustCharacterBattle\" flagtext=\"Dust Character Battle\"/>\r\n    <row flagid=\"154\" flagname=\"QuafeBay\" flagtext=\"Quafe Bay\"/>\r\n    <row flagid=\"155\" flagname=\"FleetHangar\" flagtext=\"Fleet Hangar\"/>\r\n    <row flagid=\"156\" flagname=\"HiddenModifiers\" flagtext=\"Hidden Modifiers\"/>\r\n    <row flagid=\"157\" flagname=\"StructureOffline\" flagtext=\"Structure Offline\"/>\r\n    <row flagid=\"158\" flagname=\"FighterBay\" flagtext=\"Fighter Bay\"/>\r\n    <row flagid=\"159\" flagname=\"FighterTube0\" flagtext=\"Fighter Tube 0\"/>\r\n    <row flagid=\"160\" flagname=\"FighterTube1\" flagtext=\"Fighter Tube 1\"/>\r\n    <row flagid=\"161\" flagname=\"FighterTube2\" flagtext=\"Fighter Tube 2\"/>\r\n    <row flagid=\"162\" flagname=\"FighterTube3\" flagtext=\"Fighter Tube 3\"/>\r\n    <row flagid=\"163\" flagname=\"FighterTube4\" flagtext=\"Fighter Tube 4\"/>\r\n    <row flagid=\"164\" flagname=\"StructureServiceSlot0\" flagtext=\"Structure service slot 1\"/>\r\n    <row flagid=\"165\" flagname=\"StructureServiceSlot1\" flagtext=\"Structure service slot 2\"/>\r\n    <row flagid=\"166\" flagname=\"StructureServiceSlot2\" flagtext=\"Structure service slot 3\"/>\r\n    <row flagid=\"167\" flagname=\"StructureServiceSlot3\" flagtext=\"Structure service slot 4\"/>\r\n    <row flagid=\"168\" flagname=\"StructureServiceSlot4\" flagtext=\"Structure service slot 5\"/>\r\n    <row flagid=\"169\" flagname=\"StructureServiceSlot5\" flagtext=\"Structure service slot 6\"/>\r\n    <row flagid=\"170\" flagname=\"StructureServiceSlot6\" flagtext=\"Structure service slot 7\"/>\r\n    <row flagid=\"171\" flagname=\"StructureServiceSlot7\" flagtext=\"Structure service slot 8\"/>\r\n    <row flagid=\"172\" flagname=\"StructureFuel\" flagtext=\"Structure Fuel\"/>\r\n    <row flagid=\"173\" flagname=\"Deliveries\" flagtext=\"Deliveries\"/>\r\n    <row flagid=\"174\" flagname=\"CrateLoot\" flagtext=\"Crate Loot\"/>\r\n    <row flagid=\"176\" flagname=\"BoosterBay\" flagtext=\"Booster Hold\"/>\r\n    <row flagid=\"177\" flagname=\"SubsystemBay\" flagtext=\"Subsystem Hold\"/>\r\n    <row flagid=\"178\" flagname=\"Raffles\" flagtext=\"Raffles Hangar\"/>\r\n    <row flagid=\"179\" flagname=\"FrigateEscapeBay\" flagtext=\"Frigate escape bay Hangar\"/>\r\n    <row flagid=\"180\" flagname=\"StructureDeedBay\" flagtext=\"Structure Deed Bay\"/>\r\n    <row flagid=\"181\" flagname=\"SpecializedIceHold\" flagtext=\"Specialized Ice Hold\"/>\r\n    <row flagid=\"182\" flagname=\"SpecializedAsteroidHold\" flagtext=\"Specialized Asteroid Hold\"/>\r\n    <row flagid=\"183\" flagname=\"MobileDepot\" flagtext=\"Mobile Depot\"/>\r\n    <row flagid=\"184\" flagname=\"CorpProjectsHangar\" flagtext=\"Corporation Projects Hangar \"/>\r\n    <row flagid=\"185\" flagname=\"ColonyResourcesHold\" flagtext=\"Infrastructure Hold\"/>\r\n    <row flagid=\"186\" flagname=\"MoonMaterialBay\" flagtext=\"Moon Material Bay\"/>\r\n    <row flagid=\"187\" flagname=\"CapsuleerDeliveries\" flagtext=\"Capsuleer Deliveries\"/>\r\n</rows>\r\n"
  },
  {
    "path": "data/jumps.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\r\n<rows>\r\n    <!--Generated from Eve Online Toolkit. ©CCP hf. All rights reserved. Used with permission.-->\r\n    <row from=\"30000001\" to=\"30000003\"/>\r\n    <row from=\"30000001\" to=\"30000005\"/>\r\n    <row from=\"30000001\" to=\"30000007\"/>\r\n    <row from=\"30000002\" to=\"30000005\"/>\r\n    <row from=\"30000002\" to=\"30002973\"/>\r\n    <row from=\"30000003\" to=\"30000001\"/>\r\n    <row from=\"30000003\" to=\"30000007\"/>\r\n    <row from=\"30000003\" to=\"30000052\"/>\r\n    <row from=\"30000003\" to=\"30000084\"/>\r\n    <row from=\"30000004\" to=\"30000005\"/>\r\n    <row from=\"30000004\" to=\"30002509\"/>\r\n    <row from=\"30000005\" to=\"30000001\"/>\r\n    <row from=\"30000005\" to=\"30000002\"/>\r\n    <row from=\"30000005\" to=\"30000004\"/>\r\n    <row from=\"30000005\" to=\"30000032\"/>\r\n    <row from=\"30000006\" to=\"30000008\"/>\r\n    <row from=\"30000006\" to=\"30000023\"/>\r\n    <row from=\"30000007\" to=\"30000001\"/>\r\n    <row from=\"30000007\" to=\"30000003\"/>\r\n    <row from=\"30000007\" to=\"30000008\"/>\r\n    <row from=\"30000008\" to=\"30000006\"/>\r\n    <row from=\"30000008\" to=\"30000007\"/>\r\n    <row from=\"30000008\" to=\"30000057\"/>\r\n    <row from=\"30000008\" to=\"30000076\"/>\r\n    <row from=\"30000009\" to=\"30000010\"/>\r\n    <row from=\"30000010\" to=\"30000009\"/>\r\n    <row from=\"30000010\" to=\"30000011\"/>\r\n    <row from=\"30000010\" to=\"30000013\"/>\r\n    <row from=\"30000011\" to=\"30000010\"/>\r\n    <row from=\"30000011\" to=\"30000038\"/>\r\n    <row from=\"30000012\" to=\"30000013\"/>\r\n    <row from=\"30000012\" to=\"30000073\"/>\r\n    <row from=\"30000013\" to=\"30000010\"/>\r\n    <row from=\"30000013\" to=\"30000012\"/>\r\n    <row from=\"30000013\" to=\"30000014\"/>\r\n    <row from=\"30000013\" to=\"30000015\"/>\r\n    <row from=\"30000013\" to=\"30000016\"/>\r\n    <row from=\"30000014\" to=\"30000013\"/>\r\n    <row from=\"30000014\" to=\"30000090\"/>\r\n    <row from=\"30000014\" to=\"30000098\"/>\r\n    <row from=\"30000015\" to=\"30000013\"/>\r\n    <row from=\"30000015\" to=\"30000018\"/>\r\n    <row from=\"30000015\" to=\"30000046\"/>\r\n    <row from=\"30000015\" to=\"30001047\"/>\r\n    <row from=\"30000016\" to=\"30000013\"/>\r\n    <row from=\"30000017\" to=\"30000018\"/>\r\n    <row from=\"30000017\" to=\"30000020\"/>\r\n    <row from=\"30000017\" to=\"30000022\"/>\r\n    <row from=\"30000018\" to=\"30000015\"/>\r\n    <row from=\"30000018\" to=\"30000017\"/>\r\n    <row from=\"30000019\" to=\"30000022\"/>\r\n    <row from=\"30000020\" to=\"30000017\"/>\r\n    <row from=\"30000021\" to=\"30002770\"/>\r\n    <row from=\"30000021\" to=\"30045328\"/>\r\n    <row from=\"30000022\" to=\"30000017\"/>\r\n    <row from=\"30000022\" to=\"30000019\"/>\r\n    <row from=\"30000023\" to=\"30000006\"/>\r\n    <row from=\"30000023\" to=\"30000024\"/>\r\n    <row from=\"30000023\" to=\"30000030\"/>\r\n    <row from=\"30000024\" to=\"30000023\"/>\r\n    <row from=\"30000024\" to=\"30000025\"/>\r\n    <row from=\"30000024\" to=\"30000027\"/>\r\n    <row from=\"30000024\" to=\"30000028\"/>\r\n    <row from=\"30000025\" to=\"30000024\"/>\r\n    <row from=\"30000025\" to=\"30000026\"/>\r\n    <row from=\"30000025\" to=\"30000027\"/>\r\n    <row from=\"30000025\" to=\"30000028\"/>\r\n    <row from=\"30000026\" to=\"30000025\"/>\r\n    <row from=\"30000026\" to=\"30000028\"/>\r\n    <row from=\"30000026\" to=\"30000029\"/>\r\n    <row from=\"30000026\" to=\"30000030\"/>\r\n    <row from=\"30000027\" to=\"30000024\"/>\r\n    <row from=\"30000027\" to=\"30000025\"/>\r\n    <row from=\"30000027\" to=\"30000028\"/>\r\n    <row from=\"30000028\" to=\"30000024\"/>\r\n    <row from=\"30000028\" to=\"30000025\"/>\r\n    <row from=\"30000028\" to=\"30000026\"/>\r\n    <row from=\"30000028\" to=\"30000027\"/>\r\n    <row from=\"30000028\" to=\"30000064\"/>\r\n    <row from=\"30000029\" to=\"30000026\"/>\r\n    <row from=\"30000029\" to=\"30000030\"/>\r\n    <row from=\"30000030\" to=\"30000023\"/>\r\n    <row from=\"30000030\" to=\"30000026\"/>\r\n    <row from=\"30000030\" to=\"30000029\"/>\r\n    <row from=\"30000030\" to=\"30000112\"/>\r\n    <row from=\"30000031\" to=\"30000033\"/>\r\n    <row from=\"30000031\" to=\"30000035\"/>\r\n    <row from=\"30000032\" to=\"30000005\"/>\r\n    <row from=\"30000032\" to=\"30000033\"/>\r\n    <row from=\"30000032\" to=\"30000034\"/>\r\n    <row from=\"30000033\" to=\"30000031\"/>\r\n    <row from=\"30000033\" to=\"30000032\"/>\r\n    <row from=\"30000034\" to=\"30000032\"/>\r\n    <row from=\"30000035\" to=\"30000031\"/>\r\n    <row from=\"30000035\" to=\"30000036\"/>\r\n    <row from=\"30000035\" to=\"30000114\"/>\r\n    <row from=\"30000036\" to=\"30000035\"/>\r\n    <row from=\"30000036\" to=\"30000037\"/>\r\n    <row from=\"30000037\" to=\"30000036\"/>\r\n    <row from=\"30000037\" to=\"30002508\"/>\r\n    <row from=\"30000038\" to=\"30000011\"/>\r\n    <row from=\"30000038\" to=\"30000039\"/>\r\n    <row from=\"30000038\" to=\"30000040\"/>\r\n    <row from=\"30000038\" to=\"30000043\"/>\r\n    <row from=\"30000039\" to=\"30000038\"/>\r\n    <row from=\"30000039\" to=\"30000040\"/>\r\n    <row from=\"30000039\" to=\"30000041\"/>\r\n    <row from=\"30000040\" to=\"30000038\"/>\r\n    <row from=\"30000040\" to=\"30000039\"/>\r\n    <row from=\"30000040\" to=\"30000043\"/>\r\n    <row from=\"30000041\" to=\"30000039\"/>\r\n    <row from=\"30000041\" to=\"30000042\"/>\r\n    <row from=\"30000042\" to=\"30000041\"/>\r\n    <row from=\"30000043\" to=\"30000038\"/>\r\n    <row from=\"30000043\" to=\"30000040\"/>\r\n    <row from=\"30000043\" to=\"30000100\"/>\r\n    <row from=\"30000044\" to=\"30000045\"/>\r\n    <row from=\"30000044\" to=\"30000046\"/>\r\n    <row from=\"30000045\" to=\"30000044\"/>\r\n    <row from=\"30000045\" to=\"30000046\"/>\r\n    <row from=\"30000045\" to=\"30000048\"/>\r\n    <row from=\"30000045\" to=\"30000049\"/>\r\n    <row from=\"30000046\" to=\"30000015\"/>\r\n    <row from=\"30000046\" to=\"30000044\"/>\r\n    <row from=\"30000046\" to=\"30000045\"/>\r\n    <row from=\"30000046\" to=\"30000047\"/>\r\n    <row from=\"30000046\" to=\"30000048\"/>\r\n    <row from=\"30000047\" to=\"30000046\"/>\r\n    <row from=\"30000047\" to=\"30000050\"/>\r\n    <row from=\"30000048\" to=\"30000045\"/>\r\n    <row from=\"30000048\" to=\"30000046\"/>\r\n    <row from=\"30000048\" to=\"30000106\"/>\r\n    <row from=\"30000049\" to=\"30000045\"/>\r\n    <row from=\"30000050\" to=\"30000047\"/>\r\n    <row from=\"30000051\" to=\"30000052\"/>\r\n    <row from=\"30000051\" to=\"30000053\"/>\r\n    <row from=\"30000051\" to=\"30000056\"/>\r\n    <row from=\"30000051\" to=\"30000109\"/>\r\n    <row from=\"30000052\" to=\"30000003\"/>\r\n    <row from=\"30000052\" to=\"30000051\"/>\r\n    <row from=\"30000052\" to=\"30000053\"/>\r\n    <row from=\"30000052\" to=\"30000054\"/>\r\n    <row from=\"30000052\" to=\"30000055\"/>\r\n    <row from=\"30000053\" to=\"30000051\"/>\r\n    <row from=\"30000053\" to=\"30000052\"/>\r\n    <row from=\"30000054\" to=\"30000052\"/>\r\n    <row from=\"30000054\" to=\"30000055\"/>\r\n    <row from=\"30000055\" to=\"30000052\"/>\r\n    <row from=\"30000055\" to=\"30000054\"/>\r\n    <row from=\"30000056\" to=\"30000051\"/>\r\n    <row from=\"30000057\" to=\"30000008\"/>\r\n    <row from=\"30000057\" to=\"30000058\"/>\r\n    <row from=\"30000057\" to=\"30000061\"/>\r\n    <row from=\"30000057\" to=\"30000068\"/>\r\n    <row from=\"30000058\" to=\"30000057\"/>\r\n    <row from=\"30000058\" to=\"30000059\"/>\r\n    <row from=\"30000058\" to=\"30000068\"/>\r\n    <row from=\"30000058\" to=\"30000105\"/>\r\n    <row from=\"30000059\" to=\"30000058\"/>\r\n    <row from=\"30000059\" to=\"30000060\"/>\r\n    <row from=\"30000060\" to=\"30000059\"/>\r\n    <row from=\"30000060\" to=\"30000062\"/>\r\n    <row from=\"30000060\" to=\"30000063\"/>\r\n    <row from=\"30000060\" to=\"30000065\"/>\r\n    <row from=\"30000061\" to=\"30000057\"/>\r\n    <row from=\"30000062\" to=\"30000060\"/>\r\n    <row from=\"30000062\" to=\"30000065\"/>\r\n    <row from=\"30000062\" to=\"30000067\"/>\r\n    <row from=\"30000063\" to=\"30000060\"/>\r\n    <row from=\"30000063\" to=\"30000064\"/>\r\n    <row from=\"30000063\" to=\"30000069\"/>\r\n    <row from=\"30000064\" to=\"30000028\"/>\r\n    <row from=\"30000064\" to=\"30000063\"/>\r\n    <row from=\"30000064\" to=\"30000066\"/>\r\n    <row from=\"30000064\" to=\"30000069\"/>\r\n    <row from=\"30000065\" to=\"30000060\"/>\r\n    <row from=\"30000065\" to=\"30000062\"/>\r\n    <row from=\"30000065\" to=\"30000067\"/>\r\n    <row from=\"30000065\" to=\"30000118\"/>\r\n    <row from=\"30000066\" to=\"30000064\"/>\r\n    <row from=\"30000066\" to=\"30000069\"/>\r\n    <row from=\"30000067\" to=\"30000062\"/>\r\n    <row from=\"30000067\" to=\"30000065\"/>\r\n    <row from=\"30000068\" to=\"30000057\"/>\r\n    <row from=\"30000068\" to=\"30000058\"/>\r\n    <row from=\"30000069\" to=\"30000063\"/>\r\n    <row from=\"30000069\" to=\"30000064\"/>\r\n    <row from=\"30000069\" to=\"30000066\"/>\r\n    <row from=\"30000070\" to=\"30000073\"/>\r\n    <row from=\"30000070\" to=\"30000074\"/>\r\n    <row from=\"30000070\" to=\"30000075\"/>\r\n    <row from=\"30000070\" to=\"30000085\"/>\r\n    <row from=\"30000071\" to=\"30000074\"/>\r\n    <row from=\"30000072\" to=\"30000074\"/>\r\n    <row from=\"30000072\" to=\"30000075\"/>\r\n    <row from=\"30000072\" to=\"30002982\"/>\r\n    <row from=\"30000073\" to=\"30000012\"/>\r\n    <row from=\"30000073\" to=\"30000070\"/>\r\n    <row from=\"30000073\" to=\"30000085\"/>\r\n    <row from=\"30000074\" to=\"30000070\"/>\r\n    <row from=\"30000074\" to=\"30000071\"/>\r\n    <row from=\"30000074\" to=\"30000072\"/>\r\n    <row from=\"30000074\" to=\"30000075\"/>\r\n    <row from=\"30000075\" to=\"30000070\"/>\r\n    <row from=\"30000075\" to=\"30000072\"/>\r\n    <row from=\"30000075\" to=\"30000074\"/>\r\n    <row from=\"30000075\" to=\"30003703\"/>\r\n    <row from=\"30000076\" to=\"30000008\"/>\r\n    <row from=\"30000076\" to=\"30000077\"/>\r\n    <row from=\"30000076\" to=\"30000079\"/>\r\n    <row from=\"30000077\" to=\"30000076\"/>\r\n    <row from=\"30000077\" to=\"30000078\"/>\r\n    <row from=\"30000077\" to=\"30000080\"/>\r\n    <row from=\"30000078\" to=\"30000077\"/>\r\n    <row from=\"30000078\" to=\"30000080\"/>\r\n    <row from=\"30000079\" to=\"30000076\"/>\r\n    <row from=\"30000080\" to=\"30000077\"/>\r\n    <row from=\"30000080\" to=\"30000078\"/>\r\n    <row from=\"30000080\" to=\"30000081\"/>\r\n    <row from=\"30000081\" to=\"30000080\"/>\r\n    <row from=\"30000082\" to=\"30000083\"/>\r\n    <row from=\"30000082\" to=\"30000084\"/>\r\n    <row from=\"30000082\" to=\"30000085\"/>\r\n    <row from=\"30000083\" to=\"30000082\"/>\r\n    <row from=\"30000083\" to=\"30000087\"/>\r\n    <row from=\"30000084\" to=\"30000003\"/>\r\n    <row from=\"30000084\" to=\"30000082\"/>\r\n    <row from=\"30000084\" to=\"30000086\"/>\r\n    <row from=\"30000085\" to=\"30000070\"/>\r\n    <row from=\"30000085\" to=\"30000073\"/>\r\n    <row from=\"30000085\" to=\"30000082\"/>\r\n    <row from=\"30000085\" to=\"30000086\"/>\r\n    <row from=\"30000085\" to=\"30000107\"/>\r\n    <row from=\"30000086\" to=\"30000084\"/>\r\n    <row from=\"30000086\" to=\"30000085\"/>\r\n    <row from=\"30000087\" to=\"30000083\"/>\r\n    <row from=\"30000087\" to=\"30000088\"/>\r\n    <row from=\"30000088\" to=\"30000087\"/>\r\n    <row from=\"30000089\" to=\"30000090\"/>\r\n    <row from=\"30000089\" to=\"30000091\"/>\r\n    <row from=\"30000089\" to=\"30000092\"/>\r\n    <row from=\"30000090\" to=\"30000014\"/>\r\n    <row from=\"30000090\" to=\"30000089\"/>\r\n    <row from=\"30000090\" to=\"30000093\"/>\r\n    <row from=\"30000091\" to=\"30000089\"/>\r\n    <row from=\"30000092\" to=\"30000089\"/>\r\n    <row from=\"30000092\" to=\"30000094\"/>\r\n    <row from=\"30000093\" to=\"30000090\"/>\r\n    <row from=\"30000094\" to=\"30000092\"/>\r\n    <row from=\"30000095\" to=\"30000097\"/>\r\n    <row from=\"30000095\" to=\"30000102\"/>\r\n    <row from=\"30000096\" to=\"30000097\"/>\r\n    <row from=\"30000097\" to=\"30000095\"/>\r\n    <row from=\"30000097\" to=\"30000096\"/>\r\n    <row from=\"30000097\" to=\"30000098\"/>\r\n    <row from=\"30000097\" to=\"30000100\"/>\r\n    <row from=\"30000098\" to=\"30000014\"/>\r\n    <row from=\"30000098\" to=\"30000097\"/>\r\n    <row from=\"30000098\" to=\"30000099\"/>\r\n    <row from=\"30000098\" to=\"30000102\"/>\r\n    <row from=\"30000099\" to=\"30000098\"/>\r\n    <row from=\"30000099\" to=\"30000101\"/>\r\n    <row from=\"30000099\" to=\"30000102\"/>\r\n    <row from=\"30000099\" to=\"30000103\"/>\r\n    <row from=\"30000100\" to=\"30000043\"/>\r\n    <row from=\"30000100\" to=\"30000097\"/>\r\n    <row from=\"30000101\" to=\"30000099\"/>\r\n    <row from=\"30000101\" to=\"30000103\"/>\r\n    <row from=\"30000101\" to=\"30000105\"/>\r\n    <row from=\"30000102\" to=\"30000095\"/>\r\n    <row from=\"30000102\" to=\"30000098\"/>\r\n    <row from=\"30000102\" to=\"30000099\"/>\r\n    <row from=\"30000102\" to=\"30000104\"/>\r\n    <row from=\"30000103\" to=\"30000099\"/>\r\n    <row from=\"30000103\" to=\"30000101\"/>\r\n    <row from=\"30000104\" to=\"30000102\"/>\r\n    <row from=\"30000105\" to=\"30000058\"/>\r\n    <row from=\"30000105\" to=\"30000101\"/>\r\n    <row from=\"30000106\" to=\"30000048\"/>\r\n    <row from=\"30000106\" to=\"30000107\"/>\r\n    <row from=\"30000106\" to=\"30000109\"/>\r\n    <row from=\"30000107\" to=\"30000085\"/>\r\n    <row from=\"30000107\" to=\"30000106\"/>\r\n    <row from=\"30000107\" to=\"30000108\"/>\r\n    <row from=\"30000107\" to=\"30000110\"/>\r\n    <row from=\"30000107\" to=\"30000111\"/>\r\n    <row from=\"30000108\" to=\"30000107\"/>\r\n    <row from=\"30000108\" to=\"30000111\"/>\r\n    <row from=\"30000109\" to=\"30000051\"/>\r\n    <row from=\"30000109\" to=\"30000106\"/>\r\n    <row from=\"30000109\" to=\"30000110\"/>\r\n    <row from=\"30000109\" to=\"30000111\"/>\r\n    <row from=\"30000110\" to=\"30000107\"/>\r\n    <row from=\"30000110\" to=\"30000109\"/>\r\n    <row from=\"30000111\" to=\"30000107\"/>\r\n    <row from=\"30000111\" to=\"30000108\"/>\r\n    <row from=\"30000111\" to=\"30000109\"/>\r\n    <row from=\"30000112\" to=\"30000030\"/>\r\n    <row from=\"30000112\" to=\"30000113\"/>\r\n    <row from=\"30000112\" to=\"30000118\"/>\r\n    <row from=\"30000113\" to=\"30000112\"/>\r\n    <row from=\"30000113\" to=\"30000114\"/>\r\n    <row from=\"30000113\" to=\"30000115\"/>\r\n    <row from=\"30000113\" to=\"30000116\"/>\r\n    <row from=\"30000113\" to=\"30000117\"/>\r\n    <row from=\"30000114\" to=\"30000035\"/>\r\n    <row from=\"30000114\" to=\"30000113\"/>\r\n    <row from=\"30000114\" to=\"30000115\"/>\r\n    <row from=\"30000114\" to=\"30000116\"/>\r\n    <row from=\"30000114\" to=\"30000117\"/>\r\n    <row from=\"30000115\" to=\"30000113\"/>\r\n    <row from=\"30000115\" to=\"30000114\"/>\r\n    <row from=\"30000115\" to=\"30000116\"/>\r\n    <row from=\"30000115\" to=\"30000117\"/>\r\n    <row from=\"30000116\" to=\"30000113\"/>\r\n    <row from=\"30000116\" to=\"30000114\"/>\r\n    <row from=\"30000116\" to=\"30000115\"/>\r\n    <row from=\"30000116\" to=\"30002395\"/>\r\n    <row from=\"30000117\" to=\"30000113\"/>\r\n    <row from=\"30000117\" to=\"30000114\"/>\r\n    <row from=\"30000117\" to=\"30000115\"/>\r\n    <row from=\"30000117\" to=\"30000118\"/>\r\n    <row from=\"30000117\" to=\"30000943\"/>\r\n    <row from=\"30000118\" to=\"30000065\"/>\r\n    <row from=\"30000118\" to=\"30000112\"/>\r\n    <row from=\"30000118\" to=\"30000117\"/>\r\n    <row from=\"30000119\" to=\"30000120\"/>\r\n    <row from=\"30000119\" to=\"30000121\"/>\r\n    <row from=\"30000119\" to=\"30000123\"/>\r\n    <row from=\"30000119\" to=\"30000124\"/>\r\n    <row from=\"30000119\" to=\"30000125\"/>\r\n    <row from=\"30000119\" to=\"30000140\"/>\r\n    <row from=\"30000120\" to=\"30000119\"/>\r\n    <row from=\"30000120\" to=\"30000122\"/>\r\n    <row from=\"30000121\" to=\"30000119\"/>\r\n    <row from=\"30000122\" to=\"30000120\"/>\r\n    <row from=\"30000123\" to=\"30000119\"/>\r\n    <row from=\"30000124\" to=\"30000119\"/>\r\n    <row from=\"30000125\" to=\"30000119\"/>\r\n    <row from=\"30000126\" to=\"30000128\"/>\r\n    <row from=\"30000126\" to=\"30000131\"/>\r\n    <row from=\"30000127\" to=\"30000128\"/>\r\n    <row from=\"30000127\" to=\"30002788\"/>\r\n    <row from=\"30000128\" to=\"30000126\"/>\r\n    <row from=\"30000128\" to=\"30000127\"/>\r\n    <row from=\"30000128\" to=\"30000130\"/>\r\n    <row from=\"30000129\" to=\"30000130\"/>\r\n    <row from=\"30000129\" to=\"30000139\"/>\r\n    <row from=\"30000129\" to=\"30030141\"/>\r\n    <row from=\"30000130\" to=\"30000128\"/>\r\n    <row from=\"30000130\" to=\"30000129\"/>\r\n    <row from=\"30000131\" to=\"30000126\"/>\r\n    <row from=\"30000131\" to=\"30000146\"/>\r\n    <row from=\"30000131\" to=\"30000153\"/>\r\n    <row from=\"30000132\" to=\"30000133\"/>\r\n    <row from=\"30000132\" to=\"30000134\"/>\r\n    <row from=\"30000132\" to=\"30000138\"/>\r\n    <row from=\"30000133\" to=\"30000132\"/>\r\n    <row from=\"30000133\" to=\"30000138\"/>\r\n    <row from=\"30000133\" to=\"30000145\"/>\r\n    <row from=\"30000133\" to=\"30021407\"/>\r\n    <row from=\"30000134\" to=\"30000132\"/>\r\n    <row from=\"30000134\" to=\"30000135\"/>\r\n    <row from=\"30000134\" to=\"30000136\"/>\r\n    <row from=\"30000134\" to=\"30005196\"/>\r\n    <row from=\"30000135\" to=\"30000134\"/>\r\n    <row from=\"30000135\" to=\"30000136\"/>\r\n    <row from=\"30000135\" to=\"30000137\"/>\r\n    <row from=\"30000136\" to=\"30000134\"/>\r\n    <row from=\"30000136\" to=\"30000135\"/>\r\n    <row from=\"30000136\" to=\"30000137\"/>\r\n    <row from=\"30000137\" to=\"30000135\"/>\r\n    <row from=\"30000137\" to=\"30000136\"/>\r\n    <row from=\"30000138\" to=\"30000132\"/>\r\n    <row from=\"30000138\" to=\"30000133\"/>\r\n    <row from=\"30000138\" to=\"30000142\"/>\r\n    <row from=\"30000138\" to=\"30001379\"/>\r\n    <row from=\"30000139\" to=\"30000129\"/>\r\n    <row from=\"30000139\" to=\"30000141\"/>\r\n    <row from=\"30000139\" to=\"30000144\"/>\r\n    <row from=\"30000139\" to=\"30002791\"/>\r\n    <row from=\"30000139\" to=\"30002802\"/>\r\n    <row from=\"30000140\" to=\"30000119\"/>\r\n    <row from=\"30000140\" to=\"30000142\"/>\r\n    <row from=\"30000140\" to=\"30000144\"/>\r\n    <row from=\"30000140\" to=\"30002780\"/>\r\n    <row from=\"30000141\" to=\"30000139\"/>\r\n    <row from=\"30000142\" to=\"30000138\"/>\r\n    <row from=\"30000142\" to=\"30000140\"/>\r\n    <row from=\"30000142\" to=\"30000143\"/>\r\n    <row from=\"30000142\" to=\"30000144\"/>\r\n    <row from=\"30000142\" to=\"30000145\"/>\r\n    <row from=\"30000142\" to=\"30001363\"/>\r\n    <row from=\"30000142\" to=\"30002780\"/>\r\n    <row from=\"30000143\" to=\"30000142\"/>\r\n    <row from=\"30000143\" to=\"30000144\"/>\r\n    <row from=\"30000143\" to=\"30000145\"/>\r\n    <row from=\"30000143\" to=\"30001379\"/>\r\n    <row from=\"30000144\" to=\"30000139\"/>\r\n    <row from=\"30000144\" to=\"30000140\"/>\r\n    <row from=\"30000144\" to=\"30000142\"/>\r\n    <row from=\"30000144\" to=\"30000143\"/>\r\n    <row from=\"30000144\" to=\"30002642\"/>\r\n    <row from=\"30000145\" to=\"30000133\"/>\r\n    <row from=\"30000145\" to=\"30000142\"/>\r\n    <row from=\"30000145\" to=\"30000143\"/>\r\n    <row from=\"30000145\" to=\"30000156\"/>\r\n    <row from=\"30000145\" to=\"30001393\"/>\r\n    <row from=\"30000145\" to=\"30002754\"/>\r\n    <row from=\"30000146\" to=\"30000131\"/>\r\n    <row from=\"30000146\" to=\"30000147\"/>\r\n    <row from=\"30000146\" to=\"30000148\"/>\r\n    <row from=\"30000147\" to=\"30000146\"/>\r\n    <row from=\"30000147\" to=\"30000150\"/>\r\n    <row from=\"30000148\" to=\"30000146\"/>\r\n    <row from=\"30000148\" to=\"30000149\"/>\r\n    <row from=\"30000148\" to=\"30000152\"/>\r\n    <row from=\"30000149\" to=\"30000148\"/>\r\n    <row from=\"30000149\" to=\"30000151\"/>\r\n    <row from=\"30000150\" to=\"30000147\"/>\r\n    <row from=\"30000150\" to=\"30000152\"/>\r\n    <row from=\"30000151\" to=\"30000149\"/>\r\n    <row from=\"30000151\" to=\"30000173\"/>\r\n    <row from=\"30000152\" to=\"30000148\"/>\r\n    <row from=\"30000152\" to=\"30000150\"/>\r\n    <row from=\"30000152\" to=\"30000159\"/>\r\n    <row from=\"30000153\" to=\"30000131\"/>\r\n    <row from=\"30000153\" to=\"30000154\"/>\r\n    <row from=\"30000153\" to=\"30000155\"/>\r\n    <row from=\"30000153\" to=\"30000156\"/>\r\n    <row from=\"30000154\" to=\"30000153\"/>\r\n    <row from=\"30000154\" to=\"30000155\"/>\r\n    <row from=\"30000154\" to=\"30000156\"/>\r\n    <row from=\"30000155\" to=\"30000153\"/>\r\n    <row from=\"30000155\" to=\"30000154\"/>\r\n    <row from=\"30000155\" to=\"30000158\"/>\r\n    <row from=\"30000156\" to=\"30000145\"/>\r\n    <row from=\"30000156\" to=\"30000153\"/>\r\n    <row from=\"30000156\" to=\"30000154\"/>\r\n    <row from=\"30000157\" to=\"30001372\"/>\r\n    <row from=\"30000157\" to=\"30001445\"/>\r\n    <row from=\"30000157\" to=\"30005005\"/>\r\n    <row from=\"30000158\" to=\"30000155\"/>\r\n    <row from=\"30000158\" to=\"30000165\"/>\r\n    <row from=\"30000158\" to=\"30000180\"/>\r\n    <row from=\"30000159\" to=\"30000152\"/>\r\n    <row from=\"30000159\" to=\"30000160\"/>\r\n    <row from=\"30000159\" to=\"30000161\"/>\r\n    <row from=\"30000160\" to=\"30000159\"/>\r\n    <row from=\"30000160\" to=\"30000161\"/>\r\n    <row from=\"30000160\" to=\"30000163\"/>\r\n    <row from=\"30000161\" to=\"30000159\"/>\r\n    <row from=\"30000161\" to=\"30000160\"/>\r\n    <row from=\"30000161\" to=\"30000162\"/>\r\n    <row from=\"30000162\" to=\"30000161\"/>\r\n    <row from=\"30000162\" to=\"30000163\"/>\r\n    <row from=\"30000163\" to=\"30000160\"/>\r\n    <row from=\"30000163\" to=\"30000162\"/>\r\n    <row from=\"30000163\" to=\"30000164\"/>\r\n    <row from=\"30000163\" to=\"30000186\"/>\r\n    <row from=\"30000164\" to=\"30000163\"/>\r\n    <row from=\"30000164\" to=\"30000195\"/>\r\n    <row from=\"30000165\" to=\"30000158\"/>\r\n    <row from=\"30000165\" to=\"30000166\"/>\r\n    <row from=\"30000165\" to=\"30000167\"/>\r\n    <row from=\"30000166\" to=\"30000165\"/>\r\n    <row from=\"30000166\" to=\"30000167\"/>\r\n    <row from=\"30000166\" to=\"30000168\"/>\r\n    <row from=\"30000167\" to=\"30000165\"/>\r\n    <row from=\"30000167\" to=\"30000166\"/>\r\n    <row from=\"30000167\" to=\"30000168\"/>\r\n    <row from=\"30000167\" to=\"30000170\"/>\r\n    <row from=\"30000168\" to=\"30000166\"/>\r\n    <row from=\"30000168\" to=\"30000167\"/>\r\n    <row from=\"30000168\" to=\"30000169\"/>\r\n    <row from=\"30000168\" to=\"30000171\"/>\r\n    <row from=\"30000169\" to=\"30000168\"/>\r\n    <row from=\"30000169\" to=\"30000171\"/>\r\n    <row from=\"30000169\" to=\"30000172\"/>\r\n    <row from=\"30000169\" to=\"30000194\"/>\r\n    <row from=\"30000170\" to=\"30000167\"/>\r\n    <row from=\"30000171\" to=\"30000168\"/>\r\n    <row from=\"30000171\" to=\"30000169\"/>\r\n    <row from=\"30000172\" to=\"30000169\"/>\r\n    <row from=\"30000173\" to=\"30000151\"/>\r\n    <row from=\"30000173\" to=\"30000174\"/>\r\n    <row from=\"30000173\" to=\"30000175\"/>\r\n    <row from=\"30000173\" to=\"30000178\"/>\r\n    <row from=\"30000174\" to=\"30000173\"/>\r\n    <row from=\"30000174\" to=\"30000176\"/>\r\n    <row from=\"30000174\" to=\"30000178\"/>\r\n    <row from=\"30000175\" to=\"30000173\"/>\r\n    <row from=\"30000175\" to=\"30000178\"/>\r\n    <row from=\"30000175\" to=\"30000179\"/>\r\n    <row from=\"30000176\" to=\"30000174\"/>\r\n    <row from=\"30000176\" to=\"30000177\"/>\r\n    <row from=\"30000177\" to=\"30000176\"/>\r\n    <row from=\"30000178\" to=\"30000173\"/>\r\n    <row from=\"30000178\" to=\"30000174\"/>\r\n    <row from=\"30000178\" to=\"30000175\"/>\r\n    <row from=\"30000178\" to=\"30000188\"/>\r\n    <row from=\"30000179\" to=\"30000175\"/>\r\n    <row from=\"30000180\" to=\"30000158\"/>\r\n    <row from=\"30000180\" to=\"30000181\"/>\r\n    <row from=\"30000180\" to=\"30000182\"/>\r\n    <row from=\"30000181\" to=\"30000180\"/>\r\n    <row from=\"30000181\" to=\"30000183\"/>\r\n    <row from=\"30000181\" to=\"30000185\"/>\r\n    <row from=\"30000182\" to=\"30000180\"/>\r\n    <row from=\"30000182\" to=\"30000184\"/>\r\n    <row from=\"30000182\" to=\"30000187\"/>\r\n    <row from=\"30000183\" to=\"30000181\"/>\r\n    <row from=\"30000184\" to=\"30000182\"/>\r\n    <row from=\"30000185\" to=\"30000181\"/>\r\n    <row from=\"30000185\" to=\"30000186\"/>\r\n    <row from=\"30000186\" to=\"30000163\"/>\r\n    <row from=\"30000186\" to=\"30000185\"/>\r\n    <row from=\"30000186\" to=\"30002440\"/>\r\n    <row from=\"30000187\" to=\"30000182\"/>\r\n    <row from=\"30000188\" to=\"30000178\"/>\r\n    <row from=\"30000188\" to=\"30000189\"/>\r\n    <row from=\"30000188\" to=\"30000194\"/>\r\n    <row from=\"30000189\" to=\"30000188\"/>\r\n    <row from=\"30000189\" to=\"30000190\"/>\r\n    <row from=\"30000189\" to=\"30000191\"/>\r\n    <row from=\"30000189\" to=\"30000194\"/>\r\n    <row from=\"30000190\" to=\"30000189\"/>\r\n    <row from=\"30000190\" to=\"30000191\"/>\r\n    <row from=\"30000190\" to=\"30000193\"/>\r\n    <row from=\"30000190\" to=\"30000194\"/>\r\n    <row from=\"30000191\" to=\"30000189\"/>\r\n    <row from=\"30000191\" to=\"30000190\"/>\r\n    <row from=\"30000191\" to=\"30000194\"/>\r\n    <row from=\"30000192\" to=\"30002079\"/>\r\n    <row from=\"30000192\" to=\"30040141\"/>\r\n    <row from=\"30000193\" to=\"30000190\"/>\r\n    <row from=\"30000193\" to=\"30000201\"/>\r\n    <row from=\"30000194\" to=\"30000169\"/>\r\n    <row from=\"30000194\" to=\"30000188\"/>\r\n    <row from=\"30000194\" to=\"30000189\"/>\r\n    <row from=\"30000194\" to=\"30000190\"/>\r\n    <row from=\"30000194\" to=\"30000191\"/>\r\n    <row from=\"30000195\" to=\"30000164\"/>\r\n    <row from=\"30000195\" to=\"30000196\"/>\r\n    <row from=\"30000196\" to=\"30000195\"/>\r\n    <row from=\"30000196\" to=\"30000197\"/>\r\n    <row from=\"30000196\" to=\"30000200\"/>\r\n    <row from=\"30000197\" to=\"30000196\"/>\r\n    <row from=\"30000197\" to=\"30000198\"/>\r\n    <row from=\"30000197\" to=\"30000199\"/>\r\n    <row from=\"30000198\" to=\"30000197\"/>\r\n    <row from=\"30000198\" to=\"30002355\"/>\r\n    <row from=\"30000199\" to=\"30000197\"/>\r\n    <row from=\"30000199\" to=\"30003446\"/>\r\n    <row from=\"30000200\" to=\"30000196\"/>\r\n    <row from=\"30000200\" to=\"30002062\"/>\r\n    <row from=\"30000200\" to=\"30002475\"/>\r\n    <row from=\"30000201\" to=\"30000193\"/>\r\n    <row from=\"30000201\" to=\"30000202\"/>\r\n    <row from=\"30000202\" to=\"30000201\"/>\r\n    <row from=\"30000202\" to=\"30000203\"/>\r\n    <row from=\"30000202\" to=\"30000204\"/>\r\n    <row from=\"30000202\" to=\"30000207\"/>\r\n    <row from=\"30000203\" to=\"30000202\"/>\r\n    <row from=\"30000203\" to=\"30000207\"/>\r\n    <row from=\"30000204\" to=\"30000202\"/>\r\n    <row from=\"30000204\" to=\"30000205\"/>\r\n    <row from=\"30000205\" to=\"30000204\"/>\r\n    <row from=\"30000205\" to=\"30000250\"/>\r\n    <row from=\"30000205\" to=\"30001448\"/>\r\n    <row from=\"30000206\" to=\"30002652\"/>\r\n    <row from=\"30000206\" to=\"30020141\"/>\r\n    <row from=\"30000207\" to=\"30000202\"/>\r\n    <row from=\"30000207\" to=\"30000203\"/>\r\n    <row from=\"30000208\" to=\"30000211\"/>\r\n    <row from=\"30000208\" to=\"30000213\"/>\r\n    <row from=\"30000208\" to=\"30000214\"/>\r\n    <row from=\"30000209\" to=\"30000212\"/>\r\n    <row from=\"30000209\" to=\"30000214\"/>\r\n    <row from=\"30000209\" to=\"30000242\"/>\r\n    <row from=\"30000210\" to=\"30000212\"/>\r\n    <row from=\"30000210\" to=\"30000222\"/>\r\n    <row from=\"30000211\" to=\"30000208\"/>\r\n    <row from=\"30000211\" to=\"30000213\"/>\r\n    <row from=\"30000212\" to=\"30000209\"/>\r\n    <row from=\"30000212\" to=\"30000210\"/>\r\n    <row from=\"30000212\" to=\"30000214\"/>\r\n    <row from=\"30000212\" to=\"30000289\"/>\r\n    <row from=\"30000213\" to=\"30000208\"/>\r\n    <row from=\"30000213\" to=\"30000211\"/>\r\n    <row from=\"30000213\" to=\"30000268\"/>\r\n    <row from=\"30000214\" to=\"30000208\"/>\r\n    <row from=\"30000214\" to=\"30000209\"/>\r\n    <row from=\"30000214\" to=\"30000212\"/>\r\n    <row from=\"30000215\" to=\"30000216\"/>\r\n    <row from=\"30000215\" to=\"30000217\"/>\r\n    <row from=\"30000215\" to=\"30000219\"/>\r\n    <row from=\"30000215\" to=\"30000251\"/>\r\n    <row from=\"30000216\" to=\"30000215\"/>\r\n    <row from=\"30000216\" to=\"30000219\"/>\r\n    <row from=\"30000216\" to=\"30000221\"/>\r\n    <row from=\"30000217\" to=\"30000215\"/>\r\n    <row from=\"30000217\" to=\"30000218\"/>\r\n    <row from=\"30000217\" to=\"30000220\"/>\r\n    <row from=\"30000217\" to=\"30000221\"/>\r\n    <row from=\"30000218\" to=\"30000217\"/>\r\n    <row from=\"30000219\" to=\"30000215\"/>\r\n    <row from=\"30000219\" to=\"30000216\"/>\r\n    <row from=\"30000220\" to=\"30000217\"/>\r\n    <row from=\"30000221\" to=\"30000216\"/>\r\n    <row from=\"30000221\" to=\"30000217\"/>\r\n    <row from=\"30000222\" to=\"30000210\"/>\r\n    <row from=\"30000222\" to=\"30000223\"/>\r\n    <row from=\"30000223\" to=\"30000222\"/>\r\n    <row from=\"30000223\" to=\"30000224\"/>\r\n    <row from=\"30000224\" to=\"30000223\"/>\r\n    <row from=\"30000224\" to=\"30000225\"/>\r\n    <row from=\"30000225\" to=\"30000224\"/>\r\n    <row from=\"30000225\" to=\"30000226\"/>\r\n    <row from=\"30000225\" to=\"30000274\"/>\r\n    <row from=\"30000225\" to=\"30002421\"/>\r\n    <row from=\"30000226\" to=\"30000225\"/>\r\n    <row from=\"30000226\" to=\"30000227\"/>\r\n    <row from=\"30000226\" to=\"30000280\"/>\r\n    <row from=\"30000227\" to=\"30000226\"/>\r\n    <row from=\"30000227\" to=\"30000295\"/>\r\n    <row from=\"30000228\" to=\"30000232\"/>\r\n    <row from=\"30000228\" to=\"30000233\"/>\r\n    <row from=\"30000228\" to=\"30000235\"/>\r\n    <row from=\"30000229\" to=\"30000230\"/>\r\n    <row from=\"30000229\" to=\"30000231\"/>\r\n    <row from=\"30000229\" to=\"30000247\"/>\r\n    <row from=\"30000230\" to=\"30000229\"/>\r\n    <row from=\"30000230\" to=\"30000232\"/>\r\n    <row from=\"30000231\" to=\"30000229\"/>\r\n    <row from=\"30000232\" to=\"30000228\"/>\r\n    <row from=\"30000232\" to=\"30000230\"/>\r\n    <row from=\"30000232\" to=\"30000234\"/>\r\n    <row from=\"30000232\" to=\"30000237\"/>\r\n    <row from=\"30000233\" to=\"30000228\"/>\r\n    <row from=\"30000233\" to=\"30000235\"/>\r\n    <row from=\"30000233\" to=\"30000236\"/>\r\n    <row from=\"30000234\" to=\"30000232\"/>\r\n    <row from=\"30000235\" to=\"30000228\"/>\r\n    <row from=\"30000235\" to=\"30000233\"/>\r\n    <row from=\"30000236\" to=\"30000233\"/>\r\n    <row from=\"30000237\" to=\"30000232\"/>\r\n    <row from=\"30000238\" to=\"30000239\"/>\r\n    <row from=\"30000238\" to=\"30000242\"/>\r\n    <row from=\"30000238\" to=\"30000243\"/>\r\n    <row from=\"30000238\" to=\"30000263\"/>\r\n    <row from=\"30000239\" to=\"30000238\"/>\r\n    <row from=\"30000239\" to=\"30000240\"/>\r\n    <row from=\"30000240\" to=\"30000239\"/>\r\n    <row from=\"30000240\" to=\"30000241\"/>\r\n    <row from=\"30000240\" to=\"30000242\"/>\r\n    <row from=\"30000240\" to=\"30000243\"/>\r\n    <row from=\"30000241\" to=\"30000240\"/>\r\n    <row from=\"30000241\" to=\"30000253\"/>\r\n    <row from=\"30000242\" to=\"30000209\"/>\r\n    <row from=\"30000242\" to=\"30000238\"/>\r\n    <row from=\"30000242\" to=\"30000240\"/>\r\n    <row from=\"30000243\" to=\"30000238\"/>\r\n    <row from=\"30000243\" to=\"30000240\"/>\r\n    <row from=\"30000244\" to=\"30000245\"/>\r\n    <row from=\"30000244\" to=\"30000246\"/>\r\n    <row from=\"30000244\" to=\"30000247\"/>\r\n    <row from=\"30000244\" to=\"30000249\"/>\r\n    <row from=\"30000245\" to=\"30000244\"/>\r\n    <row from=\"30000245\" to=\"30000247\"/>\r\n    <row from=\"30000246\" to=\"30000244\"/>\r\n    <row from=\"30000246\" to=\"30000249\"/>\r\n    <row from=\"30000246\" to=\"30000253\"/>\r\n    <row from=\"30000247\" to=\"30000229\"/>\r\n    <row from=\"30000247\" to=\"30000244\"/>\r\n    <row from=\"30000247\" to=\"30000245\"/>\r\n    <row from=\"30000247\" to=\"30000864\"/>\r\n    <row from=\"30000248\" to=\"30000251\"/>\r\n    <row from=\"30000248\" to=\"30000253\"/>\r\n    <row from=\"30000249\" to=\"30000244\"/>\r\n    <row from=\"30000249\" to=\"30000246\"/>\r\n    <row from=\"30000249\" to=\"30000252\"/>\r\n    <row from=\"30000249\" to=\"30000253\"/>\r\n    <row from=\"30000250\" to=\"30000205\"/>\r\n    <row from=\"30000250\" to=\"30000252\"/>\r\n    <row from=\"30000251\" to=\"30000215\"/>\r\n    <row from=\"30000251\" to=\"30000248\"/>\r\n    <row from=\"30000252\" to=\"30000249\"/>\r\n    <row from=\"30000252\" to=\"30000250\"/>\r\n    <row from=\"30000252\" to=\"30000256\"/>\r\n    <row from=\"30000253\" to=\"30000241\"/>\r\n    <row from=\"30000253\" to=\"30000246\"/>\r\n    <row from=\"30000253\" to=\"30000248\"/>\r\n    <row from=\"30000253\" to=\"30000249\"/>\r\n    <row from=\"30000254\" to=\"30000255\"/>\r\n    <row from=\"30000254\" to=\"30000256\"/>\r\n    <row from=\"30000254\" to=\"30000257\"/>\r\n    <row from=\"30000254\" to=\"30000260\"/>\r\n    <row from=\"30000255\" to=\"30000254\"/>\r\n    <row from=\"30000255\" to=\"30000257\"/>\r\n    <row from=\"30000255\" to=\"30000258\"/>\r\n    <row from=\"30000255\" to=\"30000259\"/>\r\n    <row from=\"30000256\" to=\"30000252\"/>\r\n    <row from=\"30000256\" to=\"30000254\"/>\r\n    <row from=\"30000257\" to=\"30000254\"/>\r\n    <row from=\"30000257\" to=\"30000255\"/>\r\n    <row from=\"30000258\" to=\"30000255\"/>\r\n    <row from=\"30000259\" to=\"30000255\"/>\r\n    <row from=\"30000259\" to=\"30000260\"/>\r\n    <row from=\"30000260\" to=\"30000254\"/>\r\n    <row from=\"30000260\" to=\"30000259\"/>\r\n    <row from=\"30000261\" to=\"30000262\"/>\r\n    <row from=\"30000261\" to=\"30000263\"/>\r\n    <row from=\"30000261\" to=\"30000264\"/>\r\n    <row from=\"30000262\" to=\"30000261\"/>\r\n    <row from=\"30000262\" to=\"30000263\"/>\r\n    <row from=\"30000263\" to=\"30000238\"/>\r\n    <row from=\"30000263\" to=\"30000261\"/>\r\n    <row from=\"30000263\" to=\"30000262\"/>\r\n    <row from=\"30000263\" to=\"30000265\"/>\r\n    <row from=\"30000264\" to=\"30000261\"/>\r\n    <row from=\"30000264\" to=\"30000301\"/>\r\n    <row from=\"30000265\" to=\"30000263\"/>\r\n    <row from=\"30000265\" to=\"30000266\"/>\r\n    <row from=\"30000266\" to=\"30000265\"/>\r\n    <row from=\"30000266\" to=\"30000267\"/>\r\n    <row from=\"30000267\" to=\"30000266\"/>\r\n    <row from=\"30000267\" to=\"30000871\"/>\r\n    <row from=\"30000268\" to=\"30000213\"/>\r\n    <row from=\"30000268\" to=\"30000269\"/>\r\n    <row from=\"30000269\" to=\"30000268\"/>\r\n    <row from=\"30000269\" to=\"30000270\"/>\r\n    <row from=\"30000269\" to=\"30000271\"/>\r\n    <row from=\"30000270\" to=\"30000269\"/>\r\n    <row from=\"30000270\" to=\"30000272\"/>\r\n    <row from=\"30000271\" to=\"30000269\"/>\r\n    <row from=\"30000272\" to=\"30000270\"/>\r\n    <row from=\"30000272\" to=\"30000273\"/>\r\n    <row from=\"30000273\" to=\"30000272\"/>\r\n    <row from=\"30000274\" to=\"30000225\"/>\r\n    <row from=\"30000274\" to=\"30000275\"/>\r\n    <row from=\"30000275\" to=\"30000274\"/>\r\n    <row from=\"30000275\" to=\"30000276\"/>\r\n    <row from=\"30000276\" to=\"30000275\"/>\r\n    <row from=\"30000276\" to=\"30000277\"/>\r\n    <row from=\"30000277\" to=\"30000276\"/>\r\n    <row from=\"30000277\" to=\"30000278\"/>\r\n    <row from=\"30000277\" to=\"30000279\"/>\r\n    <row from=\"30000278\" to=\"30000277\"/>\r\n    <row from=\"30000279\" to=\"30000277\"/>\r\n    <row from=\"30000280\" to=\"30000226\"/>\r\n    <row from=\"30000280\" to=\"30000281\"/>\r\n    <row from=\"30000281\" to=\"30000280\"/>\r\n    <row from=\"30000281\" to=\"30000282\"/>\r\n    <row from=\"30000282\" to=\"30000281\"/>\r\n    <row from=\"30000282\" to=\"30000283\"/>\r\n    <row from=\"30000282\" to=\"30000287\"/>\r\n    <row from=\"30000283\" to=\"30000282\"/>\r\n    <row from=\"30000283\" to=\"30000284\"/>\r\n    <row from=\"30000283\" to=\"30000286\"/>\r\n    <row from=\"30000284\" to=\"30000283\"/>\r\n    <row from=\"30000284\" to=\"30000285\"/>\r\n    <row from=\"30000284\" to=\"30000286\"/>\r\n    <row from=\"30000285\" to=\"30000284\"/>\r\n    <row from=\"30000285\" to=\"30000288\"/>\r\n    <row from=\"30000286\" to=\"30000283\"/>\r\n    <row from=\"30000286\" to=\"30000284\"/>\r\n    <row from=\"30000286\" to=\"30000323\"/>\r\n    <row from=\"30000287\" to=\"30000282\"/>\r\n    <row from=\"30000288\" to=\"30000285\"/>\r\n    <row from=\"30000288\" to=\"30002479\"/>\r\n    <row from=\"30000289\" to=\"30000212\"/>\r\n    <row from=\"30000289\" to=\"30000290\"/>\r\n    <row from=\"30000289\" to=\"30000291\"/>\r\n    <row from=\"30000290\" to=\"30000289\"/>\r\n    <row from=\"30000290\" to=\"30000292\"/>\r\n    <row from=\"30000290\" to=\"30000299\"/>\r\n    <row from=\"30000291\" to=\"30000289\"/>\r\n    <row from=\"30000291\" to=\"30000292\"/>\r\n    <row from=\"30000291\" to=\"30000293\"/>\r\n    <row from=\"30000292\" to=\"30000290\"/>\r\n    <row from=\"30000292\" to=\"30000291\"/>\r\n    <row from=\"30000292\" to=\"30000294\"/>\r\n    <row from=\"30000293\" to=\"30000291\"/>\r\n    <row from=\"30000294\" to=\"30000292\"/>\r\n    <row from=\"30000295\" to=\"30000227\"/>\r\n    <row from=\"30000295\" to=\"30000296\"/>\r\n    <row from=\"30000295\" to=\"30000298\"/>\r\n    <row from=\"30000296\" to=\"30000295\"/>\r\n    <row from=\"30000296\" to=\"30000297\"/>\r\n    <row from=\"30000296\" to=\"30000298\"/>\r\n    <row from=\"30000297\" to=\"30000296\"/>\r\n    <row from=\"30000297\" to=\"30000299\"/>\r\n    <row from=\"30000298\" to=\"30000295\"/>\r\n    <row from=\"30000298\" to=\"30000296\"/>\r\n    <row from=\"30000298\" to=\"30000300\"/>\r\n    <row from=\"30000299\" to=\"30000290\"/>\r\n    <row from=\"30000299\" to=\"30000297\"/>\r\n    <row from=\"30000299\" to=\"30000307\"/>\r\n    <row from=\"30000300\" to=\"30000298\"/>\r\n    <row from=\"30000301\" to=\"30000264\"/>\r\n    <row from=\"30000301\" to=\"30000302\"/>\r\n    <row from=\"30000301\" to=\"30000303\"/>\r\n    <row from=\"30000301\" to=\"30000304\"/>\r\n    <row from=\"30000302\" to=\"30000301\"/>\r\n    <row from=\"30000302\" to=\"30000303\"/>\r\n    <row from=\"30000302\" to=\"30000304\"/>\r\n    <row from=\"30000303\" to=\"30000301\"/>\r\n    <row from=\"30000303\" to=\"30000302\"/>\r\n    <row from=\"30000303\" to=\"30000899\"/>\r\n    <row from=\"30000304\" to=\"30000301\"/>\r\n    <row from=\"30000304\" to=\"30000302\"/>\r\n    <row from=\"30000304\" to=\"30000305\"/>\r\n    <row from=\"30000305\" to=\"30000304\"/>\r\n    <row from=\"30000305\" to=\"30000306\"/>\r\n    <row from=\"30000306\" to=\"30000305\"/>\r\n    <row from=\"30000307\" to=\"30000299\"/>\r\n    <row from=\"30000307\" to=\"30000308\"/>\r\n    <row from=\"30000307\" to=\"30000309\"/>\r\n    <row from=\"30000308\" to=\"30000307\"/>\r\n    <row from=\"30000308\" to=\"30000309\"/>\r\n    <row from=\"30000308\" to=\"30000310\"/>\r\n    <row from=\"30000308\" to=\"30000312\"/>\r\n    <row from=\"30000308\" to=\"30000898\"/>\r\n    <row from=\"30000309\" to=\"30000307\"/>\r\n    <row from=\"30000309\" to=\"30000308\"/>\r\n    <row from=\"30000309\" to=\"30000310\"/>\r\n    <row from=\"30000310\" to=\"30000308\"/>\r\n    <row from=\"30000310\" to=\"30000309\"/>\r\n    <row from=\"30000310\" to=\"30000311\"/>\r\n    <row from=\"30000310\" to=\"30000312\"/>\r\n    <row from=\"30000310\" to=\"30000313\"/>\r\n    <row from=\"30000311\" to=\"30000310\"/>\r\n    <row from=\"30000311\" to=\"30000312\"/>\r\n    <row from=\"30000311\" to=\"30000313\"/>\r\n    <row from=\"30000311\" to=\"30000314\"/>\r\n    <row from=\"30000312\" to=\"30000308\"/>\r\n    <row from=\"30000312\" to=\"30000310\"/>\r\n    <row from=\"30000312\" to=\"30000311\"/>\r\n    <row from=\"30000312\" to=\"30000313\"/>\r\n    <row from=\"30000313\" to=\"30000310\"/>\r\n    <row from=\"30000313\" to=\"30000311\"/>\r\n    <row from=\"30000313\" to=\"30000312\"/>\r\n    <row from=\"30000313\" to=\"30000320\"/>\r\n    <row from=\"30000314\" to=\"30000311\"/>\r\n    <row from=\"30000314\" to=\"30000315\"/>\r\n    <row from=\"30000315\" to=\"30000314\"/>\r\n    <row from=\"30000315\" to=\"30000316\"/>\r\n    <row from=\"30000316\" to=\"30000315\"/>\r\n    <row from=\"30000316\" to=\"30000317\"/>\r\n    <row from=\"30000317\" to=\"30000316\"/>\r\n    <row from=\"30000317\" to=\"30000318\"/>\r\n    <row from=\"30000317\" to=\"30000319\"/>\r\n    <row from=\"30000318\" to=\"30000317\"/>\r\n    <row from=\"30000318\" to=\"30000319\"/>\r\n    <row from=\"30000318\" to=\"30002470\"/>\r\n    <row from=\"30000319\" to=\"30000317\"/>\r\n    <row from=\"30000319\" to=\"30000318\"/>\r\n    <row from=\"30000319\" to=\"30002825\"/>\r\n    <row from=\"30000320\" to=\"30000313\"/>\r\n    <row from=\"30000320\" to=\"30000321\"/>\r\n    <row from=\"30000320\" to=\"30000322\"/>\r\n    <row from=\"30000320\" to=\"30000323\"/>\r\n    <row from=\"30000321\" to=\"30000320\"/>\r\n    <row from=\"30000321\" to=\"30000322\"/>\r\n    <row from=\"30000321\" to=\"30000323\"/>\r\n    <row from=\"30000321\" to=\"30000324\"/>\r\n    <row from=\"30000322\" to=\"30000320\"/>\r\n    <row from=\"30000322\" to=\"30000321\"/>\r\n    <row from=\"30000322\" to=\"30000323\"/>\r\n    <row from=\"30000322\" to=\"30000324\"/>\r\n    <row from=\"30000323\" to=\"30000286\"/>\r\n    <row from=\"30000323\" to=\"30000320\"/>\r\n    <row from=\"30000323\" to=\"30000321\"/>\r\n    <row from=\"30000323\" to=\"30000322\"/>\r\n    <row from=\"30000324\" to=\"30000321\"/>\r\n    <row from=\"30000324\" to=\"30000322\"/>\r\n    <row from=\"30000324\" to=\"30000325\"/>\r\n    <row from=\"30000325\" to=\"30000324\"/>\r\n    <row from=\"30000420\" to=\"30000421\"/>\r\n    <row from=\"30000420\" to=\"30000422\"/>\r\n    <row from=\"30000421\" to=\"30000420\"/>\r\n    <row from=\"30000421\" to=\"30000422\"/>\r\n    <row from=\"30000421\" to=\"30000423\"/>\r\n    <row from=\"30000422\" to=\"30000420\"/>\r\n    <row from=\"30000422\" to=\"30000421\"/>\r\n    <row from=\"30000422\" to=\"30000423\"/>\r\n    <row from=\"30000423\" to=\"30000421\"/>\r\n    <row from=\"30000423\" to=\"30000422\"/>\r\n    <row from=\"30000423\" to=\"30000424\"/>\r\n    <row from=\"30000424\" to=\"30000423\"/>\r\n    <row from=\"30000424\" to=\"30000425\"/>\r\n    <row from=\"30000425\" to=\"30000424\"/>\r\n    <row from=\"30000425\" to=\"30000426\"/>\r\n    <row from=\"30000426\" to=\"30000425\"/>\r\n    <row from=\"30000427\" to=\"30000428\"/>\r\n    <row from=\"30000427\" to=\"30000429\"/>\r\n    <row from=\"30000428\" to=\"30000427\"/>\r\n    <row from=\"30000428\" to=\"30000429\"/>\r\n    <row from=\"30000428\" to=\"30000430\"/>\r\n    <row from=\"30000428\" to=\"30000431\"/>\r\n    <row from=\"30000428\" to=\"30000432\"/>\r\n    <row from=\"30000429\" to=\"30000427\"/>\r\n    <row from=\"30000429\" to=\"30000428\"/>\r\n    <row from=\"30000430\" to=\"30000428\"/>\r\n    <row from=\"30000430\" to=\"30000431\"/>\r\n    <row from=\"30000430\" to=\"30000432\"/>\r\n    <row from=\"30000431\" to=\"30000428\"/>\r\n    <row from=\"30000431\" to=\"30000430\"/>\r\n    <row from=\"30000432\" to=\"30000428\"/>\r\n    <row from=\"30000432\" to=\"30000430\"/>\r\n    <row from=\"30000433\" to=\"30000434\"/>\r\n    <row from=\"30000433\" to=\"30000458\"/>\r\n    <row from=\"30000434\" to=\"30000433\"/>\r\n    <row from=\"30000434\" to=\"30000435\"/>\r\n    <row from=\"30000434\" to=\"30000436\"/>\r\n    <row from=\"30000435\" to=\"30000434\"/>\r\n    <row from=\"30000435\" to=\"30000438\"/>\r\n    <row from=\"30000436\" to=\"30000434\"/>\r\n    <row from=\"30000436\" to=\"30000437\"/>\r\n    <row from=\"30000437\" to=\"30000436\"/>\r\n    <row from=\"30000438\" to=\"30000435\"/>\r\n    <row from=\"30000438\" to=\"30000439\"/>\r\n    <row from=\"30000439\" to=\"30000438\"/>\r\n    <row from=\"30000439\" to=\"30000603\"/>\r\n    <row from=\"30000440\" to=\"30000441\"/>\r\n    <row from=\"30000440\" to=\"30000442\"/>\r\n    <row from=\"30000440\" to=\"30000443\"/>\r\n    <row from=\"30000441\" to=\"30000440\"/>\r\n    <row from=\"30000441\" to=\"30000442\"/>\r\n    <row from=\"30000441\" to=\"30000445\"/>\r\n    <row from=\"30000441\" to=\"30000455\"/>\r\n    <row from=\"30000442\" to=\"30000440\"/>\r\n    <row from=\"30000442\" to=\"30000441\"/>\r\n    <row from=\"30000443\" to=\"30000440\"/>\r\n    <row from=\"30000443\" to=\"30000444\"/>\r\n    <row from=\"30000444\" to=\"30000443\"/>\r\n    <row from=\"30000444\" to=\"30000466\"/>\r\n    <row from=\"30000444\" to=\"30000492\"/>\r\n    <row from=\"30000445\" to=\"30000441\"/>\r\n    <row from=\"30000445\" to=\"30000838\"/>\r\n    <row from=\"30000446\" to=\"30000447\"/>\r\n    <row from=\"30000446\" to=\"30000448\"/>\r\n    <row from=\"30000446\" to=\"30000450\"/>\r\n    <row from=\"30000446\" to=\"30000452\"/>\r\n    <row from=\"30000447\" to=\"30000446\"/>\r\n    <row from=\"30000447\" to=\"30000472\"/>\r\n    <row from=\"30000448\" to=\"30000446\"/>\r\n    <row from=\"30000448\" to=\"30000449\"/>\r\n    <row from=\"30000448\" to=\"30000581\"/>\r\n    <row from=\"30000449\" to=\"30000448\"/>\r\n    <row from=\"30000449\" to=\"30000451\"/>\r\n    <row from=\"30000450\" to=\"30000446\"/>\r\n    <row from=\"30000450\" to=\"30000451\"/>\r\n    <row from=\"30000451\" to=\"30000449\"/>\r\n    <row from=\"30000451\" to=\"30000450\"/>\r\n    <row from=\"30000452\" to=\"30000446\"/>\r\n    <row from=\"30000452\" to=\"30000453\"/>\r\n    <row from=\"30000453\" to=\"30000452\"/>\r\n    <row from=\"30000453\" to=\"30000485\"/>\r\n    <row from=\"30000454\" to=\"30000455\"/>\r\n    <row from=\"30000454\" to=\"30000459\"/>\r\n    <row from=\"30000455\" to=\"30000441\"/>\r\n    <row from=\"30000455\" to=\"30000454\"/>\r\n    <row from=\"30000455\" to=\"30000544\"/>\r\n    <row from=\"30000456\" to=\"30000457\"/>\r\n    <row from=\"30000456\" to=\"30000459\"/>\r\n    <row from=\"30000457\" to=\"30000456\"/>\r\n    <row from=\"30000457\" to=\"30000458\"/>\r\n    <row from=\"30000458\" to=\"30000433\"/>\r\n    <row from=\"30000458\" to=\"30000457\"/>\r\n    <row from=\"30000458\" to=\"30000779\"/>\r\n    <row from=\"30000459\" to=\"30000454\"/>\r\n    <row from=\"30000459\" to=\"30000456\"/>\r\n    <row from=\"30000459\" to=\"30000461\"/>\r\n    <row from=\"30000460\" to=\"30000461\"/>\r\n    <row from=\"30000460\" to=\"30000462\"/>\r\n    <row from=\"30000460\" to=\"30000464\"/>\r\n    <row from=\"30000460\" to=\"30000465\"/>\r\n    <row from=\"30000461\" to=\"30000459\"/>\r\n    <row from=\"30000461\" to=\"30000460\"/>\r\n    <row from=\"30000462\" to=\"30000460\"/>\r\n    <row from=\"30000462\" to=\"30000463\"/>\r\n    <row from=\"30000463\" to=\"30000462\"/>\r\n    <row from=\"30000463\" to=\"30000502\"/>\r\n    <row from=\"30000464\" to=\"30000460\"/>\r\n    <row from=\"30000465\" to=\"30000460\"/>\r\n    <row from=\"30000466\" to=\"30000444\"/>\r\n    <row from=\"30000466\" to=\"30000467\"/>\r\n    <row from=\"30000467\" to=\"30000466\"/>\r\n    <row from=\"30000467\" to=\"30000468\"/>\r\n    <row from=\"30000468\" to=\"30000467\"/>\r\n    <row from=\"30000468\" to=\"30000469\"/>\r\n    <row from=\"30000468\" to=\"30000470\"/>\r\n    <row from=\"30000469\" to=\"30000468\"/>\r\n    <row from=\"30000469\" to=\"30000471\"/>\r\n    <row from=\"30000470\" to=\"30000468\"/>\r\n    <row from=\"30000471\" to=\"30000469\"/>\r\n    <row from=\"30000471\" to=\"30000479\"/>\r\n    <row from=\"30000472\" to=\"30000447\"/>\r\n    <row from=\"30000472\" to=\"30000473\"/>\r\n    <row from=\"30000472\" to=\"30000475\"/>\r\n    <row from=\"30000473\" to=\"30000472\"/>\r\n    <row from=\"30000473\" to=\"30000474\"/>\r\n    <row from=\"30000473\" to=\"30000475\"/>\r\n    <row from=\"30000474\" to=\"30000473\"/>\r\n    <row from=\"30000475\" to=\"30000472\"/>\r\n    <row from=\"30000475\" to=\"30000473\"/>\r\n    <row from=\"30000475\" to=\"30000476\"/>\r\n    <row from=\"30000476\" to=\"30000475\"/>\r\n    <row from=\"30000476\" to=\"30000477\"/>\r\n    <row from=\"30000476\" to=\"30000478\"/>\r\n    <row from=\"30000477\" to=\"30000476\"/>\r\n    <row from=\"30000477\" to=\"30000478\"/>\r\n    <row from=\"30000477\" to=\"30000500\"/>\r\n    <row from=\"30000478\" to=\"30000476\"/>\r\n    <row from=\"30000478\" to=\"30000477\"/>\r\n    <row from=\"30000478\" to=\"30000508\"/>\r\n    <row from=\"30000478\" to=\"30000514\"/>\r\n    <row from=\"30000479\" to=\"30000471\"/>\r\n    <row from=\"30000479\" to=\"30000480\"/>\r\n    <row from=\"30000479\" to=\"30000481\"/>\r\n    <row from=\"30000479\" to=\"30000483\"/>\r\n    <row from=\"30000480\" to=\"30000479\"/>\r\n    <row from=\"30000480\" to=\"30000482\"/>\r\n    <row from=\"30000481\" to=\"30000479\"/>\r\n    <row from=\"30000482\" to=\"30000480\"/>\r\n    <row from=\"30000482\" to=\"30000483\"/>\r\n    <row from=\"30000483\" to=\"30000479\"/>\r\n    <row from=\"30000483\" to=\"30000482\"/>\r\n    <row from=\"30000483\" to=\"30000484\"/>\r\n    <row from=\"30000483\" to=\"30004878\"/>\r\n    <row from=\"30000484\" to=\"30000483\"/>\r\n    <row from=\"30000484\" to=\"30000498\"/>\r\n    <row from=\"30000485\" to=\"30000453\"/>\r\n    <row from=\"30000485\" to=\"30000486\"/>\r\n    <row from=\"30000485\" to=\"30000487\"/>\r\n    <row from=\"30000486\" to=\"30000485\"/>\r\n    <row from=\"30000486\" to=\"30000489\"/>\r\n    <row from=\"30000487\" to=\"30000485\"/>\r\n    <row from=\"30000487\" to=\"30000488\"/>\r\n    <row from=\"30000487\" to=\"30000490\"/>\r\n    <row from=\"30000488\" to=\"30000487\"/>\r\n    <row from=\"30000488\" to=\"30000490\"/>\r\n    <row from=\"30000489\" to=\"30000486\"/>\r\n    <row from=\"30000490\" to=\"30000487\"/>\r\n    <row from=\"30000490\" to=\"30000488\"/>\r\n    <row from=\"30000490\" to=\"30000491\"/>\r\n    <row from=\"30000491\" to=\"30000490\"/>\r\n    <row from=\"30000491\" to=\"30000492\"/>\r\n    <row from=\"30000492\" to=\"30000444\"/>\r\n    <row from=\"30000492\" to=\"30000491\"/>\r\n    <row from=\"30000492\" to=\"30000493\"/>\r\n    <row from=\"30000492\" to=\"30000509\"/>\r\n    <row from=\"30000493\" to=\"30000492\"/>\r\n    <row from=\"30000493\" to=\"30000521\"/>\r\n    <row from=\"30000494\" to=\"30000495\"/>\r\n    <row from=\"30000494\" to=\"30000844\"/>\r\n    <row from=\"30000495\" to=\"30000494\"/>\r\n    <row from=\"30000495\" to=\"30000496\"/>\r\n    <row from=\"30000496\" to=\"30000495\"/>\r\n    <row from=\"30000496\" to=\"30000497\"/>\r\n    <row from=\"30000497\" to=\"30000496\"/>\r\n    <row from=\"30000497\" to=\"30000498\"/>\r\n    <row from=\"30000498\" to=\"30000484\"/>\r\n    <row from=\"30000498\" to=\"30000497\"/>\r\n    <row from=\"30000498\" to=\"30000499\"/>\r\n    <row from=\"30000499\" to=\"30000498\"/>\r\n    <row from=\"30000500\" to=\"30000477\"/>\r\n    <row from=\"30000500\" to=\"30000501\"/>\r\n    <row from=\"30000500\" to=\"30000505\"/>\r\n    <row from=\"30000501\" to=\"30000500\"/>\r\n    <row from=\"30000501\" to=\"30000502\"/>\r\n    <row from=\"30000501\" to=\"30000503\"/>\r\n    <row from=\"30000502\" to=\"30000463\"/>\r\n    <row from=\"30000502\" to=\"30000501\"/>\r\n    <row from=\"30000503\" to=\"30000501\"/>\r\n    <row from=\"30000503\" to=\"30000504\"/>\r\n    <row from=\"30000503\" to=\"30000506\"/>\r\n    <row from=\"30000504\" to=\"30000503\"/>\r\n    <row from=\"30000504\" to=\"30000505\"/>\r\n    <row from=\"30000504\" to=\"30000507\"/>\r\n    <row from=\"30000505\" to=\"30000500\"/>\r\n    <row from=\"30000505\" to=\"30000504\"/>\r\n    <row from=\"30000506\" to=\"30000503\"/>\r\n    <row from=\"30000507\" to=\"30000504\"/>\r\n    <row from=\"30000508\" to=\"30000478\"/>\r\n    <row from=\"30000508\" to=\"30000509\"/>\r\n    <row from=\"30000508\" to=\"30000510\"/>\r\n    <row from=\"30000508\" to=\"30000511\"/>\r\n    <row from=\"30000509\" to=\"30000492\"/>\r\n    <row from=\"30000509\" to=\"30000508\"/>\r\n    <row from=\"30000509\" to=\"30000510\"/>\r\n    <row from=\"30000509\" to=\"30000511\"/>\r\n    <row from=\"30000510\" to=\"30000508\"/>\r\n    <row from=\"30000510\" to=\"30000509\"/>\r\n    <row from=\"30000511\" to=\"30000508\"/>\r\n    <row from=\"30000511\" to=\"30000509\"/>\r\n    <row from=\"30000511\" to=\"30000512\"/>\r\n    <row from=\"30000512\" to=\"30000511\"/>\r\n    <row from=\"30000512\" to=\"30000513\"/>\r\n    <row from=\"30000513\" to=\"30000512\"/>\r\n    <row from=\"30000513\" to=\"30002181\"/>\r\n    <row from=\"30000514\" to=\"30000478\"/>\r\n    <row from=\"30000514\" to=\"30000515\"/>\r\n    <row from=\"30000514\" to=\"30000516\"/>\r\n    <row from=\"30000515\" to=\"30000514\"/>\r\n    <row from=\"30000515\" to=\"30000517\"/>\r\n    <row from=\"30000516\" to=\"30000514\"/>\r\n    <row from=\"30000516\" to=\"30000518\"/>\r\n    <row from=\"30000516\" to=\"30000519\"/>\r\n    <row from=\"30000517\" to=\"30000515\"/>\r\n    <row from=\"30000518\" to=\"30000516\"/>\r\n    <row from=\"30000518\" to=\"30000519\"/>\r\n    <row from=\"30000518\" to=\"30000520\"/>\r\n    <row from=\"30000519\" to=\"30000516\"/>\r\n    <row from=\"30000519\" to=\"30000518\"/>\r\n    <row from=\"30000519\" to=\"30000520\"/>\r\n    <row from=\"30000520\" to=\"30000518\"/>\r\n    <row from=\"30000520\" to=\"30000519\"/>\r\n    <row from=\"30000520\" to=\"30002163\"/>\r\n    <row from=\"30000521\" to=\"30000493\"/>\r\n    <row from=\"30000521\" to=\"30000522\"/>\r\n    <row from=\"30000521\" to=\"30000523\"/>\r\n    <row from=\"30000522\" to=\"30000521\"/>\r\n    <row from=\"30000523\" to=\"30000521\"/>\r\n    <row from=\"30000523\" to=\"30000524\"/>\r\n    <row from=\"30000523\" to=\"30000525\"/>\r\n    <row from=\"30000523\" to=\"30000526\"/>\r\n    <row from=\"30000524\" to=\"30000523\"/>\r\n    <row from=\"30000525\" to=\"30000523\"/>\r\n    <row from=\"30000525\" to=\"30000527\"/>\r\n    <row from=\"30000526\" to=\"30000523\"/>\r\n    <row from=\"30000527\" to=\"30000525\"/>\r\n    <row from=\"30000527\" to=\"30000528\"/>\r\n    <row from=\"30000527\" to=\"30000839\"/>\r\n    <row from=\"30000528\" to=\"30000527\"/>\r\n    <row from=\"30000529\" to=\"30000530\"/>\r\n    <row from=\"30000529\" to=\"30000534\"/>\r\n    <row from=\"30000529\" to=\"30000544\"/>\r\n    <row from=\"30000529\" to=\"30000557\"/>\r\n    <row from=\"30000530\" to=\"30000529\"/>\r\n    <row from=\"30000530\" to=\"30000531\"/>\r\n    <row from=\"30000530\" to=\"30000534\"/>\r\n    <row from=\"30000530\" to=\"30000535\"/>\r\n    <row from=\"30000531\" to=\"30000530\"/>\r\n    <row from=\"30000531\" to=\"30000532\"/>\r\n    <row from=\"30000531\" to=\"30000533\"/>\r\n    <row from=\"30000531\" to=\"30000536\"/>\r\n    <row from=\"30000532\" to=\"30000531\"/>\r\n    <row from=\"30000532\" to=\"30000537\"/>\r\n    <row from=\"30000533\" to=\"30000531\"/>\r\n    <row from=\"30000533\" to=\"30000598\"/>\r\n    <row from=\"30000534\" to=\"30000529\"/>\r\n    <row from=\"30000534\" to=\"30000530\"/>\r\n    <row from=\"30000534\" to=\"30000536\"/>\r\n    <row from=\"30000534\" to=\"30000538\"/>\r\n    <row from=\"30000535\" to=\"30000530\"/>\r\n    <row from=\"30000535\" to=\"30000557\"/>\r\n    <row from=\"30000536\" to=\"30000531\"/>\r\n    <row from=\"30000536\" to=\"30000534\"/>\r\n    <row from=\"30000536\" to=\"30000557\"/>\r\n    <row from=\"30000537\" to=\"30000532\"/>\r\n    <row from=\"30000537\" to=\"30000596\"/>\r\n    <row from=\"30000538\" to=\"30000534\"/>\r\n    <row from=\"30000539\" to=\"30000542\"/>\r\n    <row from=\"30000540\" to=\"30000543\"/>\r\n    <row from=\"30000540\" to=\"30000544\"/>\r\n    <row from=\"30000540\" to=\"30000773\"/>\r\n    <row from=\"30000541\" to=\"30000545\"/>\r\n    <row from=\"30000542\" to=\"30000539\"/>\r\n    <row from=\"30000542\" to=\"30000543\"/>\r\n    <row from=\"30000542\" to=\"30000773\"/>\r\n    <row from=\"30000543\" to=\"30000540\"/>\r\n    <row from=\"30000543\" to=\"30000542\"/>\r\n    <row from=\"30000543\" to=\"30000763\"/>\r\n    <row from=\"30000544\" to=\"30000455\"/>\r\n    <row from=\"30000544\" to=\"30000529\"/>\r\n    <row from=\"30000544\" to=\"30000540\"/>\r\n    <row from=\"30000544\" to=\"30000545\"/>\r\n    <row from=\"30000545\" to=\"30000541\"/>\r\n    <row from=\"30000545\" to=\"30000544\"/>\r\n    <row from=\"30000546\" to=\"30000547\"/>\r\n    <row from=\"30000546\" to=\"30000548\"/>\r\n    <row from=\"30000546\" to=\"30000549\"/>\r\n    <row from=\"30000546\" to=\"30000558\"/>\r\n    <row from=\"30000547\" to=\"30000546\"/>\r\n    <row from=\"30000547\" to=\"30000549\"/>\r\n    <row from=\"30000547\" to=\"30000600\"/>\r\n    <row from=\"30000548\" to=\"30000546\"/>\r\n    <row from=\"30000548\" to=\"30000550\"/>\r\n    <row from=\"30000549\" to=\"30000546\"/>\r\n    <row from=\"30000549\" to=\"30000547\"/>\r\n    <row from=\"30000549\" to=\"30000551\"/>\r\n    <row from=\"30000550\" to=\"30000548\"/>\r\n    <row from=\"30000550\" to=\"30000551\"/>\r\n    <row from=\"30000551\" to=\"30000549\"/>\r\n    <row from=\"30000551\" to=\"30000550\"/>\r\n    <row from=\"30000552\" to=\"30000554\"/>\r\n    <row from=\"30000552\" to=\"30000555\"/>\r\n    <row from=\"30000552\" to=\"30000557\"/>\r\n    <row from=\"30000552\" to=\"30000774\"/>\r\n    <row from=\"30000553\" to=\"30000554\"/>\r\n    <row from=\"30000553\" to=\"30000562\"/>\r\n    <row from=\"30000554\" to=\"30000552\"/>\r\n    <row from=\"30000554\" to=\"30000553\"/>\r\n    <row from=\"30000554\" to=\"30000610\"/>\r\n    <row from=\"30000554\" to=\"30000680\"/>\r\n    <row from=\"30000554\" to=\"30000681\"/>\r\n    <row from=\"30000555\" to=\"30000552\"/>\r\n    <row from=\"30000555\" to=\"30000556\"/>\r\n    <row from=\"30000556\" to=\"30000555\"/>\r\n    <row from=\"30000556\" to=\"30000594\"/>\r\n    <row from=\"30000557\" to=\"30000529\"/>\r\n    <row from=\"30000557\" to=\"30000535\"/>\r\n    <row from=\"30000557\" to=\"30000536\"/>\r\n    <row from=\"30000557\" to=\"30000552\"/>\r\n    <row from=\"30000558\" to=\"30000546\"/>\r\n    <row from=\"30000558\" to=\"30000560\"/>\r\n    <row from=\"30000558\" to=\"30000588\"/>\r\n    <row from=\"30000559\" to=\"30000562\"/>\r\n    <row from=\"30000559\" to=\"30000593\"/>\r\n    <row from=\"30000560\" to=\"30000558\"/>\r\n    <row from=\"30000560\" to=\"30000562\"/>\r\n    <row from=\"30000561\" to=\"30000562\"/>\r\n    <row from=\"30000561\" to=\"30000563\"/>\r\n    <row from=\"30000562\" to=\"30000553\"/>\r\n    <row from=\"30000562\" to=\"30000559\"/>\r\n    <row from=\"30000562\" to=\"30000560\"/>\r\n    <row from=\"30000562\" to=\"30000561\"/>\r\n    <row from=\"30000563\" to=\"30000561\"/>\r\n    <row from=\"30000563\" to=\"30000564\"/>\r\n    <row from=\"30000563\" to=\"30000679\"/>\r\n    <row from=\"30000564\" to=\"30000563\"/>\r\n    <row from=\"30000565\" to=\"30000566\"/>\r\n    <row from=\"30000565\" to=\"30000568\"/>\r\n    <row from=\"30000565\" to=\"30000569\"/>\r\n    <row from=\"30000565\" to=\"30000570\"/>\r\n    <row from=\"30000566\" to=\"30000565\"/>\r\n    <row from=\"30000566\" to=\"30000568\"/>\r\n    <row from=\"30000566\" to=\"30000570\"/>\r\n    <row from=\"30000566\" to=\"30000605\"/>\r\n    <row from=\"30000567\" to=\"30000568\"/>\r\n    <row from=\"30000567\" to=\"30000569\"/>\r\n    <row from=\"30000567\" to=\"30000571\"/>\r\n    <row from=\"30000568\" to=\"30000565\"/>\r\n    <row from=\"30000568\" to=\"30000566\"/>\r\n    <row from=\"30000568\" to=\"30000567\"/>\r\n    <row from=\"30000568\" to=\"30000569\"/>\r\n    <row from=\"30000568\" to=\"30000570\"/>\r\n    <row from=\"30000568\" to=\"30000664\"/>\r\n    <row from=\"30000569\" to=\"30000565\"/>\r\n    <row from=\"30000569\" to=\"30000567\"/>\r\n    <row from=\"30000569\" to=\"30000568\"/>\r\n    <row from=\"30000569\" to=\"30000571\"/>\r\n    <row from=\"30000570\" to=\"30000565\"/>\r\n    <row from=\"30000570\" to=\"30000566\"/>\r\n    <row from=\"30000570\" to=\"30000568\"/>\r\n    <row from=\"30000570\" to=\"30000730\"/>\r\n    <row from=\"30000571\" to=\"30000567\"/>\r\n    <row from=\"30000571\" to=\"30000569\"/>\r\n    <row from=\"30000572\" to=\"30000573\"/>\r\n    <row from=\"30000572\" to=\"30000575\"/>\r\n    <row from=\"30000572\" to=\"30000576\"/>\r\n    <row from=\"30000572\" to=\"30000579\"/>\r\n    <row from=\"30000573\" to=\"30000572\"/>\r\n    <row from=\"30000573\" to=\"30000574\"/>\r\n    <row from=\"30000573\" to=\"30000576\"/>\r\n    <row from=\"30000574\" to=\"30000573\"/>\r\n    <row from=\"30000575\" to=\"30000572\"/>\r\n    <row from=\"30000575\" to=\"30000576\"/>\r\n    <row from=\"30000575\" to=\"30000577\"/>\r\n    <row from=\"30000576\" to=\"30000572\"/>\r\n    <row from=\"30000576\" to=\"30000573\"/>\r\n    <row from=\"30000576\" to=\"30000575\"/>\r\n    <row from=\"30000577\" to=\"30000575\"/>\r\n    <row from=\"30000578\" to=\"30000580\"/>\r\n    <row from=\"30000579\" to=\"30000572\"/>\r\n    <row from=\"30000579\" to=\"30000581\"/>\r\n    <row from=\"30000579\" to=\"30000583\"/>\r\n    <row from=\"30000579\" to=\"30000584\"/>\r\n    <row from=\"30000579\" to=\"30000586\"/>\r\n    <row from=\"30000580\" to=\"30000578\"/>\r\n    <row from=\"30000580\" to=\"30000582\"/>\r\n    <row from=\"30000580\" to=\"30000585\"/>\r\n    <row from=\"30000580\" to=\"30000586\"/>\r\n    <row from=\"30000581\" to=\"30000448\"/>\r\n    <row from=\"30000581\" to=\"30000579\"/>\r\n    <row from=\"30000582\" to=\"30000580\"/>\r\n    <row from=\"30000582\" to=\"30000586\"/>\r\n    <row from=\"30000583\" to=\"30000579\"/>\r\n    <row from=\"30000583\" to=\"30000584\"/>\r\n    <row from=\"30000583\" to=\"30000663\"/>\r\n    <row from=\"30000584\" to=\"30000579\"/>\r\n    <row from=\"30000584\" to=\"30000583\"/>\r\n    <row from=\"30000585\" to=\"30000580\"/>\r\n    <row from=\"30000585\" to=\"30000586\"/>\r\n    <row from=\"30000585\" to=\"30000599\"/>\r\n    <row from=\"30000586\" to=\"30000579\"/>\r\n    <row from=\"30000586\" to=\"30000580\"/>\r\n    <row from=\"30000586\" to=\"30000582\"/>\r\n    <row from=\"30000586\" to=\"30000585\"/>\r\n    <row from=\"30000587\" to=\"30000588\"/>\r\n    <row from=\"30000587\" to=\"30000590\"/>\r\n    <row from=\"30000588\" to=\"30000558\"/>\r\n    <row from=\"30000588\" to=\"30000587\"/>\r\n    <row from=\"30000588\" to=\"30000589\"/>\r\n    <row from=\"30000588\" to=\"30000716\"/>\r\n    <row from=\"30000589\" to=\"30000588\"/>\r\n    <row from=\"30000589\" to=\"30000591\"/>\r\n    <row from=\"30000589\" to=\"30000592\"/>\r\n    <row from=\"30000590\" to=\"30000587\"/>\r\n    <row from=\"30000591\" to=\"30000589\"/>\r\n    <row from=\"30000592\" to=\"30000589\"/>\r\n    <row from=\"30000593\" to=\"30000559\"/>\r\n    <row from=\"30000593\" to=\"30000594\"/>\r\n    <row from=\"30000593\" to=\"30000595\"/>\r\n    <row from=\"30000594\" to=\"30000556\"/>\r\n    <row from=\"30000594\" to=\"30000593\"/>\r\n    <row from=\"30000594\" to=\"30000595\"/>\r\n    <row from=\"30000594\" to=\"30000597\"/>\r\n    <row from=\"30000595\" to=\"30000593\"/>\r\n    <row from=\"30000595\" to=\"30000594\"/>\r\n    <row from=\"30000595\" to=\"30000596\"/>\r\n    <row from=\"30000595\" to=\"30000597\"/>\r\n    <row from=\"30000596\" to=\"30000537\"/>\r\n    <row from=\"30000596\" to=\"30000595\"/>\r\n    <row from=\"30000596\" to=\"30000597\"/>\r\n    <row from=\"30000596\" to=\"30000598\"/>\r\n    <row from=\"30000597\" to=\"30000594\"/>\r\n    <row from=\"30000597\" to=\"30000595\"/>\r\n    <row from=\"30000597\" to=\"30000596\"/>\r\n    <row from=\"30000598\" to=\"30000533\"/>\r\n    <row from=\"30000598\" to=\"30000596\"/>\r\n    <row from=\"30000599\" to=\"30000585\"/>\r\n    <row from=\"30000599\" to=\"30000600\"/>\r\n    <row from=\"30000599\" to=\"30000602\"/>\r\n    <row from=\"30000600\" to=\"30000547\"/>\r\n    <row from=\"30000600\" to=\"30000599\"/>\r\n    <row from=\"30000600\" to=\"30000601\"/>\r\n    <row from=\"30000601\" to=\"30000600\"/>\r\n    <row from=\"30000601\" to=\"30000604\"/>\r\n    <row from=\"30000602\" to=\"30000599\"/>\r\n    <row from=\"30000602\" to=\"30000603\"/>\r\n    <row from=\"30000603\" to=\"30000439\"/>\r\n    <row from=\"30000603\" to=\"30000602\"/>\r\n    <row from=\"30000604\" to=\"30000601\"/>\r\n    <row from=\"30000605\" to=\"30000566\"/>\r\n    <row from=\"30000605\" to=\"30000606\"/>\r\n    <row from=\"30000606\" to=\"30000605\"/>\r\n    <row from=\"30000606\" to=\"30000607\"/>\r\n    <row from=\"30000607\" to=\"30000606\"/>\r\n    <row from=\"30000607\" to=\"30000608\"/>\r\n    <row from=\"30000607\" to=\"30000609\"/>\r\n    <row from=\"30000608\" to=\"30000607\"/>\r\n    <row from=\"30000608\" to=\"30000610\"/>\r\n    <row from=\"30000609\" to=\"30000607\"/>\r\n    <row from=\"30000610\" to=\"30000554\"/>\r\n    <row from=\"30000610\" to=\"30000608\"/>\r\n    <row from=\"30000611\" to=\"30000615\"/>\r\n    <row from=\"30000611\" to=\"30000616\"/>\r\n    <row from=\"30000611\" to=\"30000618\"/>\r\n    <row from=\"30000612\" to=\"30000615\"/>\r\n    <row from=\"30000612\" to=\"30000626\"/>\r\n    <row from=\"30000613\" to=\"30000614\"/>\r\n    <row from=\"30000613\" to=\"30000616\"/>\r\n    <row from=\"30000614\" to=\"30000613\"/>\r\n    <row from=\"30000614\" to=\"30000630\"/>\r\n    <row from=\"30000615\" to=\"30000611\"/>\r\n    <row from=\"30000615\" to=\"30000612\"/>\r\n    <row from=\"30000616\" to=\"30000611\"/>\r\n    <row from=\"30000616\" to=\"30000613\"/>\r\n    <row from=\"30000617\" to=\"30000620\"/>\r\n    <row from=\"30000617\" to=\"30000621\"/>\r\n    <row from=\"30000617\" to=\"30000622\"/>\r\n    <row from=\"30000617\" to=\"30000623\"/>\r\n    <row from=\"30000618\" to=\"30000611\"/>\r\n    <row from=\"30000618\" to=\"30000619\"/>\r\n    <row from=\"30000618\" to=\"30000621\"/>\r\n    <row from=\"30000619\" to=\"30000618\"/>\r\n    <row from=\"30000619\" to=\"30000620\"/>\r\n    <row from=\"30000619\" to=\"30000821\"/>\r\n    <row from=\"30000620\" to=\"30000617\"/>\r\n    <row from=\"30000620\" to=\"30000619\"/>\r\n    <row from=\"30000620\" to=\"30000623\"/>\r\n    <row from=\"30000621\" to=\"30000617\"/>\r\n    <row from=\"30000621\" to=\"30000618\"/>\r\n    <row from=\"30000622\" to=\"30000617\"/>\r\n    <row from=\"30000622\" to=\"30000762\"/>\r\n    <row from=\"30000623\" to=\"30000617\"/>\r\n    <row from=\"30000623\" to=\"30000620\"/>\r\n    <row from=\"30000624\" to=\"30000625\"/>\r\n    <row from=\"30000624\" to=\"30000628\"/>\r\n    <row from=\"30000624\" to=\"30000631\"/>\r\n    <row from=\"30000625\" to=\"30000624\"/>\r\n    <row from=\"30000625\" to=\"30000626\"/>\r\n    <row from=\"30000626\" to=\"30000612\"/>\r\n    <row from=\"30000626\" to=\"30000625\"/>\r\n    <row from=\"30000626\" to=\"30000627\"/>\r\n    <row from=\"30000626\" to=\"30001000\"/>\r\n    <row from=\"30000627\" to=\"30000626\"/>\r\n    <row from=\"30000627\" to=\"30000629\"/>\r\n    <row from=\"30000628\" to=\"30000624\"/>\r\n    <row from=\"30000628\" to=\"30001542\"/>\r\n    <row from=\"30000629\" to=\"30000627\"/>\r\n    <row from=\"30000630\" to=\"30000614\"/>\r\n    <row from=\"30000630\" to=\"30000631\"/>\r\n    <row from=\"30000631\" to=\"30000624\"/>\r\n    <row from=\"30000631\" to=\"30000630\"/>\r\n    <row from=\"30000631\" to=\"30000632\"/>\r\n    <row from=\"30000632\" to=\"30000631\"/>\r\n    <row from=\"30000632\" to=\"30000633\"/>\r\n    <row from=\"30000632\" to=\"30000636\"/>\r\n    <row from=\"30000633\" to=\"30000632\"/>\r\n    <row from=\"30000633\" to=\"30000634\"/>\r\n    <row from=\"30000634\" to=\"30000633\"/>\r\n    <row from=\"30000634\" to=\"30000635\"/>\r\n    <row from=\"30000634\" to=\"30000636\"/>\r\n    <row from=\"30000635\" to=\"30000634\"/>\r\n    <row from=\"30000635\" to=\"30000637\"/>\r\n    <row from=\"30000636\" to=\"30000632\"/>\r\n    <row from=\"30000636\" to=\"30000634\"/>\r\n    <row from=\"30000637\" to=\"30000635\"/>\r\n    <row from=\"30000637\" to=\"30000638\"/>\r\n    <row from=\"30000638\" to=\"30000637\"/>\r\n    <row from=\"30000638\" to=\"30000639\"/>\r\n    <row from=\"30000638\" to=\"30000640\"/>\r\n    <row from=\"30000638\" to=\"30000641\"/>\r\n    <row from=\"30000639\" to=\"30000638\"/>\r\n    <row from=\"30000639\" to=\"30000641\"/>\r\n    <row from=\"30000639\" to=\"30000649\"/>\r\n    <row from=\"30000640\" to=\"30000638\"/>\r\n    <row from=\"30000640\" to=\"30000642\"/>\r\n    <row from=\"30000641\" to=\"30000638\"/>\r\n    <row from=\"30000641\" to=\"30000639\"/>\r\n    <row from=\"30000642\" to=\"30000640\"/>\r\n    <row from=\"30000642\" to=\"30000643\"/>\r\n    <row from=\"30000643\" to=\"30000642\"/>\r\n    <row from=\"30000643\" to=\"30000644\"/>\r\n    <row from=\"30000643\" to=\"30000645\"/>\r\n    <row from=\"30000644\" to=\"30000643\"/>\r\n    <row from=\"30000644\" to=\"30000646\"/>\r\n    <row from=\"30000645\" to=\"30000643\"/>\r\n    <row from=\"30000646\" to=\"30000644\"/>\r\n    <row from=\"30000646\" to=\"30000647\"/>\r\n    <row from=\"30000646\" to=\"30000648\"/>\r\n    <row from=\"30000647\" to=\"30000646\"/>\r\n    <row from=\"30000647\" to=\"30001773\"/>\r\n    <row from=\"30000648\" to=\"30000646\"/>\r\n    <row from=\"30000648\" to=\"30000823\"/>\r\n    <row from=\"30000649\" to=\"30000639\"/>\r\n    <row from=\"30000649\" to=\"30000650\"/>\r\n    <row from=\"30000649\" to=\"30000651\"/>\r\n    <row from=\"30000650\" to=\"30000649\"/>\r\n    <row from=\"30000650\" to=\"30000652\"/>\r\n    <row from=\"30000650\" to=\"30000653\"/>\r\n    <row from=\"30000651\" to=\"30000649\"/>\r\n    <row from=\"30000651\" to=\"30000654\"/>\r\n    <row from=\"30000652\" to=\"30000650\"/>\r\n    <row from=\"30000652\" to=\"30001581\"/>\r\n    <row from=\"30000653\" to=\"30000650\"/>\r\n    <row from=\"30000653\" to=\"30001804\"/>\r\n    <row from=\"30000654\" to=\"30000651\"/>\r\n    <row from=\"30000654\" to=\"30001753\"/>\r\n    <row from=\"30000655\" to=\"30000657\"/>\r\n    <row from=\"30000655\" to=\"30000658\"/>\r\n    <row from=\"30000655\" to=\"30000662\"/>\r\n    <row from=\"30000655\" to=\"30000671\"/>\r\n    <row from=\"30000656\" to=\"30000658\"/>\r\n    <row from=\"30000656\" to=\"30000661\"/>\r\n    <row from=\"30000656\" to=\"30000665\"/>\r\n    <row from=\"30000656\" to=\"30000668\"/>\r\n    <row from=\"30000656\" to=\"30001019\"/>\r\n    <row from=\"30000657\" to=\"30000655\"/>\r\n    <row from=\"30000657\" to=\"30000659\"/>\r\n    <row from=\"30000657\" to=\"30001001\"/>\r\n    <row from=\"30000657\" to=\"30001029\"/>\r\n    <row from=\"30000658\" to=\"30000655\"/>\r\n    <row from=\"30000658\" to=\"30000656\"/>\r\n    <row from=\"30000658\" to=\"30000659\"/>\r\n    <row from=\"30000658\" to=\"30000671\"/>\r\n    <row from=\"30000658\" to=\"30000721\"/>\r\n    <row from=\"30000659\" to=\"30000657\"/>\r\n    <row from=\"30000659\" to=\"30000658\"/>\r\n    <row from=\"30000659\" to=\"30000660\"/>\r\n    <row from=\"30000659\" to=\"30000691\"/>\r\n    <row from=\"30000660\" to=\"30000659\"/>\r\n    <row from=\"30000660\" to=\"30000665\"/>\r\n    <row from=\"30000661\" to=\"30000656\"/>\r\n    <row from=\"30000662\" to=\"30000655\"/>\r\n    <row from=\"30000662\" to=\"30000664\"/>\r\n    <row from=\"30000663\" to=\"30000583\"/>\r\n    <row from=\"30000663\" to=\"30000664\"/>\r\n    <row from=\"30000664\" to=\"30000568\"/>\r\n    <row from=\"30000664\" to=\"30000662\"/>\r\n    <row from=\"30000664\" to=\"30000663\"/>\r\n    <row from=\"30000665\" to=\"30000656\"/>\r\n    <row from=\"30000665\" to=\"30000660\"/>\r\n    <row from=\"30000666\" to=\"30000667\"/>\r\n    <row from=\"30000666\" to=\"30000668\"/>\r\n    <row from=\"30000666\" to=\"30000926\"/>\r\n    <row from=\"30000666\" to=\"30000939\"/>\r\n    <row from=\"30000667\" to=\"30000666\"/>\r\n    <row from=\"30000667\" to=\"30000673\"/>\r\n    <row from=\"30000668\" to=\"30000656\"/>\r\n    <row from=\"30000668\" to=\"30000666\"/>\r\n    <row from=\"30000668\" to=\"30000669\"/>\r\n    <row from=\"30000669\" to=\"30000668\"/>\r\n    <row from=\"30000669\" to=\"30000670\"/>\r\n    <row from=\"30000669\" to=\"30000671\"/>\r\n    <row from=\"30000670\" to=\"30000669\"/>\r\n    <row from=\"30000670\" to=\"30000678\"/>\r\n    <row from=\"30000670\" to=\"30000732\"/>\r\n    <row from=\"30000671\" to=\"30000655\"/>\r\n    <row from=\"30000671\" to=\"30000658\"/>\r\n    <row from=\"30000671\" to=\"30000669\"/>\r\n    <row from=\"30000671\" to=\"30000697\"/>\r\n    <row from=\"30000672\" to=\"30000673\"/>\r\n    <row from=\"30000672\" to=\"30000675\"/>\r\n    <row from=\"30000672\" to=\"30000676\"/>\r\n    <row from=\"30000673\" to=\"30000667\"/>\r\n    <row from=\"30000673\" to=\"30000672\"/>\r\n    <row from=\"30000673\" to=\"30000674\"/>\r\n    <row from=\"30000673\" to=\"30000677\"/>\r\n    <row from=\"30000674\" to=\"30000673\"/>\r\n    <row from=\"30000674\" to=\"30000677\"/>\r\n    <row from=\"30000675\" to=\"30000672\"/>\r\n    <row from=\"30000676\" to=\"30000672\"/>\r\n    <row from=\"30000676\" to=\"30000677\"/>\r\n    <row from=\"30000677\" to=\"30000673\"/>\r\n    <row from=\"30000677\" to=\"30000674\"/>\r\n    <row from=\"30000677\" to=\"30000676\"/>\r\n    <row from=\"30000678\" to=\"30000670\"/>\r\n    <row from=\"30000678\" to=\"30000682\"/>\r\n    <row from=\"30000678\" to=\"30000683\"/>\r\n    <row from=\"30000678\" to=\"30000684\"/>\r\n    <row from=\"30000679\" to=\"30000563\"/>\r\n    <row from=\"30000679\" to=\"30000683\"/>\r\n    <row from=\"30000679\" to=\"30000730\"/>\r\n    <row from=\"30000680\" to=\"30000554\"/>\r\n    <row from=\"30000680\" to=\"30000681\"/>\r\n    <row from=\"30000680\" to=\"30000682\"/>\r\n    <row from=\"30000680\" to=\"30000704\"/>\r\n    <row from=\"30000680\" to=\"30000792\"/>\r\n    <row from=\"30000681\" to=\"30000554\"/>\r\n    <row from=\"30000681\" to=\"30000680\"/>\r\n    <row from=\"30000681\" to=\"30000717\"/>\r\n    <row from=\"30000682\" to=\"30000678\"/>\r\n    <row from=\"30000682\" to=\"30000680\"/>\r\n    <row from=\"30000683\" to=\"30000678\"/>\r\n    <row from=\"30000683\" to=\"30000679\"/>\r\n    <row from=\"30000684\" to=\"30000678\"/>\r\n    <row from=\"30000684\" to=\"30000710\"/>\r\n    <row from=\"30000685\" to=\"30000686\"/>\r\n    <row from=\"30000685\" to=\"30000689\"/>\r\n    <row from=\"30000686\" to=\"30000685\"/>\r\n    <row from=\"30000686\" to=\"30000688\"/>\r\n    <row from=\"30000687\" to=\"30000690\"/>\r\n    <row from=\"30000687\" to=\"30000722\"/>\r\n    <row from=\"30000688\" to=\"30000686\"/>\r\n    <row from=\"30000688\" to=\"30000690\"/>\r\n    <row from=\"30000688\" to=\"30001021\"/>\r\n    <row from=\"30000689\" to=\"30000685\"/>\r\n    <row from=\"30000690\" to=\"30000687\"/>\r\n    <row from=\"30000690\" to=\"30000688\"/>\r\n    <row from=\"30000691\" to=\"30000659\"/>\r\n    <row from=\"30000691\" to=\"30000694\"/>\r\n    <row from=\"30000691\" to=\"30000695\"/>\r\n    <row from=\"30000692\" to=\"30000693\"/>\r\n    <row from=\"30000692\" to=\"30000695\"/>\r\n    <row from=\"30000693\" to=\"30000692\"/>\r\n    <row from=\"30000693\" to=\"30000696\"/>\r\n    <row from=\"30000694\" to=\"30000691\"/>\r\n    <row from=\"30000694\" to=\"30000695\"/>\r\n    <row from=\"30000695\" to=\"30000691\"/>\r\n    <row from=\"30000695\" to=\"30000692\"/>\r\n    <row from=\"30000695\" to=\"30000694\"/>\r\n    <row from=\"30000696\" to=\"30000693\"/>\r\n    <row from=\"30000697\" to=\"30000671\"/>\r\n    <row from=\"30000697\" to=\"30000698\"/>\r\n    <row from=\"30000697\" to=\"30000699\"/>\r\n    <row from=\"30000697\" to=\"30000701\"/>\r\n    <row from=\"30000697\" to=\"30000721\"/>\r\n    <row from=\"30000698\" to=\"30000697\"/>\r\n    <row from=\"30000699\" to=\"30000697\"/>\r\n    <row from=\"30000699\" to=\"30000700\"/>\r\n    <row from=\"30000699\" to=\"30000701\"/>\r\n    <row from=\"30000699\" to=\"30000721\"/>\r\n    <row from=\"30000700\" to=\"30000699\"/>\r\n    <row from=\"30000700\" to=\"30000701\"/>\r\n    <row from=\"30000700\" to=\"30000702\"/>\r\n    <row from=\"30000700\" to=\"30000722\"/>\r\n    <row from=\"30000701\" to=\"30000697\"/>\r\n    <row from=\"30000701\" to=\"30000699\"/>\r\n    <row from=\"30000701\" to=\"30000700\"/>\r\n    <row from=\"30000702\" to=\"30000700\"/>\r\n    <row from=\"30000703\" to=\"30000704\"/>\r\n    <row from=\"30000703\" to=\"30000705\"/>\r\n    <row from=\"30000703\" to=\"30000706\"/>\r\n    <row from=\"30000703\" to=\"30000707\"/>\r\n    <row from=\"30000703\" to=\"30000978\"/>\r\n    <row from=\"30000704\" to=\"30000680\"/>\r\n    <row from=\"30000704\" to=\"30000703\"/>\r\n    <row from=\"30000704\" to=\"30000705\"/>\r\n    <row from=\"30000705\" to=\"30000703\"/>\r\n    <row from=\"30000705\" to=\"30000704\"/>\r\n    <row from=\"30000705\" to=\"30000707\"/>\r\n    <row from=\"30000706\" to=\"30000703\"/>\r\n    <row from=\"30000706\" to=\"30000708\"/>\r\n    <row from=\"30000706\" to=\"30000787\"/>\r\n    <row from=\"30000707\" to=\"30000703\"/>\r\n    <row from=\"30000707\" to=\"30000705\"/>\r\n    <row from=\"30000707\" to=\"30000708\"/>\r\n    <row from=\"30000708\" to=\"30000706\"/>\r\n    <row from=\"30000708\" to=\"30000707\"/>\r\n    <row from=\"30000709\" to=\"30000710\"/>\r\n    <row from=\"30000709\" to=\"30000711\"/>\r\n    <row from=\"30000709\" to=\"30000712\"/>\r\n    <row from=\"30000710\" to=\"30000684\"/>\r\n    <row from=\"30000710\" to=\"30000709\"/>\r\n    <row from=\"30000710\" to=\"30000714\"/>\r\n    <row from=\"30000711\" to=\"30000709\"/>\r\n    <row from=\"30000711\" to=\"30000712\"/>\r\n    <row from=\"30000712\" to=\"30000709\"/>\r\n    <row from=\"30000712\" to=\"30000711\"/>\r\n    <row from=\"30000712\" to=\"30000713\"/>\r\n    <row from=\"30000713\" to=\"30000712\"/>\r\n    <row from=\"30000713\" to=\"30000789\"/>\r\n    <row from=\"30000714\" to=\"30000710\"/>\r\n    <row from=\"30000715\" to=\"30000717\"/>\r\n    <row from=\"30000715\" to=\"30000718\"/>\r\n    <row from=\"30000715\" to=\"30000719\"/>\r\n    <row from=\"30000716\" to=\"30000588\"/>\r\n    <row from=\"30000716\" to=\"30000718\"/>\r\n    <row from=\"30000717\" to=\"30000681\"/>\r\n    <row from=\"30000717\" to=\"30000715\"/>\r\n    <row from=\"30000718\" to=\"30000715\"/>\r\n    <row from=\"30000718\" to=\"30000716\"/>\r\n    <row from=\"30000718\" to=\"30000720\"/>\r\n    <row from=\"30000719\" to=\"30000715\"/>\r\n    <row from=\"30000719\" to=\"30000720\"/>\r\n    <row from=\"30000720\" to=\"30000718\"/>\r\n    <row from=\"30000720\" to=\"30000719\"/>\r\n    <row from=\"30000720\" to=\"30000774\"/>\r\n    <row from=\"30000721\" to=\"30000658\"/>\r\n    <row from=\"30000721\" to=\"30000697\"/>\r\n    <row from=\"30000721\" to=\"30000699\"/>\r\n    <row from=\"30000721\" to=\"30000722\"/>\r\n    <row from=\"30000721\" to=\"30000725\"/>\r\n    <row from=\"30000721\" to=\"30000729\"/>\r\n    <row from=\"30000722\" to=\"30000687\"/>\r\n    <row from=\"30000722\" to=\"30000700\"/>\r\n    <row from=\"30000722\" to=\"30000721\"/>\r\n    <row from=\"30000722\" to=\"30000723\"/>\r\n    <row from=\"30000722\" to=\"30000724\"/>\r\n    <row from=\"30000722\" to=\"30000727\"/>\r\n    <row from=\"30000723\" to=\"30000722\"/>\r\n    <row from=\"30000724\" to=\"30000722\"/>\r\n    <row from=\"30000725\" to=\"30000721\"/>\r\n    <row from=\"30000725\" to=\"30000726\"/>\r\n    <row from=\"30000725\" to=\"30000729\"/>\r\n    <row from=\"30000726\" to=\"30000725\"/>\r\n    <row from=\"30000726\" to=\"30000729\"/>\r\n    <row from=\"30000727\" to=\"30000722\"/>\r\n    <row from=\"30000727\" to=\"30000728\"/>\r\n    <row from=\"30000728\" to=\"30000727\"/>\r\n    <row from=\"30000729\" to=\"30000721\"/>\r\n    <row from=\"30000729\" to=\"30000725\"/>\r\n    <row from=\"30000729\" to=\"30000726\"/>\r\n    <row from=\"30000730\" to=\"30000570\"/>\r\n    <row from=\"30000730\" to=\"30000679\"/>\r\n    <row from=\"30000730\" to=\"30000731\"/>\r\n    <row from=\"30000730\" to=\"30000732\"/>\r\n    <row from=\"30000730\" to=\"30000734\"/>\r\n    <row from=\"30000731\" to=\"30000730\"/>\r\n    <row from=\"30000732\" to=\"30000670\"/>\r\n    <row from=\"30000732\" to=\"30000730\"/>\r\n    <row from=\"30000732\" to=\"30000733\"/>\r\n    <row from=\"30000732\" to=\"30000734\"/>\r\n    <row from=\"30000733\" to=\"30000732\"/>\r\n    <row from=\"30000733\" to=\"30000735\"/>\r\n    <row from=\"30000734\" to=\"30000730\"/>\r\n    <row from=\"30000734\" to=\"30000732\"/>\r\n    <row from=\"30000734\" to=\"30000735\"/>\r\n    <row from=\"30000735\" to=\"30000733\"/>\r\n    <row from=\"30000735\" to=\"30000734\"/>\r\n    <row from=\"30000736\" to=\"30000739\"/>\r\n    <row from=\"30000736\" to=\"30000760\"/>\r\n    <row from=\"30000737\" to=\"30000741\"/>\r\n    <row from=\"30000738\" to=\"30000742\"/>\r\n    <row from=\"30000739\" to=\"30000736\"/>\r\n    <row from=\"30000739\" to=\"30000740\"/>\r\n    <row from=\"30000740\" to=\"30000739\"/>\r\n    <row from=\"30000740\" to=\"30000741\"/>\r\n    <row from=\"30000740\" to=\"30000742\"/>\r\n    <row from=\"30000741\" to=\"30000737\"/>\r\n    <row from=\"30000741\" to=\"30000740\"/>\r\n    <row from=\"30000742\" to=\"30000738\"/>\r\n    <row from=\"30000742\" to=\"30000740\"/>\r\n    <row from=\"30000742\" to=\"30000831\"/>\r\n    <row from=\"30000743\" to=\"30000745\"/>\r\n    <row from=\"30000743\" to=\"30000747\"/>\r\n    <row from=\"30000743\" to=\"30000749\"/>\r\n    <row from=\"30000743\" to=\"30000756\"/>\r\n    <row from=\"30000744\" to=\"30000745\"/>\r\n    <row from=\"30000745\" to=\"30000743\"/>\r\n    <row from=\"30000745\" to=\"30000744\"/>\r\n    <row from=\"30000745\" to=\"30000746\"/>\r\n    <row from=\"30000746\" to=\"30000745\"/>\r\n    <row from=\"30000746\" to=\"30000747\"/>\r\n    <row from=\"30000747\" to=\"30000743\"/>\r\n    <row from=\"30000747\" to=\"30000746\"/>\r\n    <row from=\"30000747\" to=\"30000748\"/>\r\n    <row from=\"30000747\" to=\"30000749\"/>\r\n    <row from=\"30000748\" to=\"30000747\"/>\r\n    <row from=\"30000749\" to=\"30000743\"/>\r\n    <row from=\"30000749\" to=\"30000747\"/>\r\n    <row from=\"30000750\" to=\"30000751\"/>\r\n    <row from=\"30000750\" to=\"30000756\"/>\r\n    <row from=\"30000751\" to=\"30000750\"/>\r\n    <row from=\"30000751\" to=\"30000752\"/>\r\n    <row from=\"30000751\" to=\"30000755\"/>\r\n    <row from=\"30000752\" to=\"30000751\"/>\r\n    <row from=\"30000752\" to=\"30000754\"/>\r\n    <row from=\"30000753\" to=\"30000755\"/>\r\n    <row from=\"30000753\" to=\"30000824\"/>\r\n    <row from=\"30000754\" to=\"30000752\"/>\r\n    <row from=\"30000755\" to=\"30000751\"/>\r\n    <row from=\"30000755\" to=\"30000753\"/>\r\n    <row from=\"30000756\" to=\"30000743\"/>\r\n    <row from=\"30000756\" to=\"30000750\"/>\r\n    <row from=\"30000756\" to=\"30000757\"/>\r\n    <row from=\"30000756\" to=\"30000759\"/>\r\n    <row from=\"30000757\" to=\"30000756\"/>\r\n    <row from=\"30000757\" to=\"30000758\"/>\r\n    <row from=\"30000757\" to=\"30000759\"/>\r\n    <row from=\"30000757\" to=\"30000762\"/>\r\n    <row from=\"30000758\" to=\"30000757\"/>\r\n    <row from=\"30000758\" to=\"30000761\"/>\r\n    <row from=\"30000758\" to=\"30000763\"/>\r\n    <row from=\"30000759\" to=\"30000756\"/>\r\n    <row from=\"30000759\" to=\"30000757\"/>\r\n    <row from=\"30000759\" to=\"30000760\"/>\r\n    <row from=\"30000759\" to=\"30000762\"/>\r\n    <row from=\"30000760\" to=\"30000736\"/>\r\n    <row from=\"30000760\" to=\"30000759\"/>\r\n    <row from=\"30000761\" to=\"30000758\"/>\r\n    <row from=\"30000761\" to=\"30000763\"/>\r\n    <row from=\"30000761\" to=\"30000777\"/>\r\n    <row from=\"30000762\" to=\"30000622\"/>\r\n    <row from=\"30000762\" to=\"30000757\"/>\r\n    <row from=\"30000762\" to=\"30000759\"/>\r\n    <row from=\"30000762\" to=\"30000764\"/>\r\n    <row from=\"30000763\" to=\"30000543\"/>\r\n    <row from=\"30000763\" to=\"30000758\"/>\r\n    <row from=\"30000763\" to=\"30000761\"/>\r\n    <row from=\"30000764\" to=\"30000762\"/>\r\n    <row from=\"30000764\" to=\"30000767\"/>\r\n    <row from=\"30000764\" to=\"30000768\"/>\r\n    <row from=\"30000765\" to=\"30000766\"/>\r\n    <row from=\"30000765\" to=\"30000767\"/>\r\n    <row from=\"30000766\" to=\"30000765\"/>\r\n    <row from=\"30000766\" to=\"30000767\"/>\r\n    <row from=\"30000766\" to=\"30000768\"/>\r\n    <row from=\"30000766\" to=\"30000769\"/>\r\n    <row from=\"30000767\" to=\"30000764\"/>\r\n    <row from=\"30000767\" to=\"30000765\"/>\r\n    <row from=\"30000767\" to=\"30000766\"/>\r\n    <row from=\"30000767\" to=\"30000769\"/>\r\n    <row from=\"30000768\" to=\"30000764\"/>\r\n    <row from=\"30000768\" to=\"30000766\"/>\r\n    <row from=\"30000769\" to=\"30000766\"/>\r\n    <row from=\"30000769\" to=\"30000767\"/>\r\n    <row from=\"30000769\" to=\"30000814\"/>\r\n    <row from=\"30000770\" to=\"30000772\"/>\r\n    <row from=\"30000770\" to=\"30000773\"/>\r\n    <row from=\"30000770\" to=\"30000780\"/>\r\n    <row from=\"30000771\" to=\"30000775\"/>\r\n    <row from=\"30000772\" to=\"30000770\"/>\r\n    <row from=\"30000772\" to=\"30000773\"/>\r\n    <row from=\"30000772\" to=\"30000775\"/>\r\n    <row from=\"30000772\" to=\"30000776\"/>\r\n    <row from=\"30000772\" to=\"30000784\"/>\r\n    <row from=\"30000773\" to=\"30000540\"/>\r\n    <row from=\"30000773\" to=\"30000542\"/>\r\n    <row from=\"30000773\" to=\"30000770\"/>\r\n    <row from=\"30000773\" to=\"30000772\"/>\r\n    <row from=\"30000773\" to=\"30000774\"/>\r\n    <row from=\"30000774\" to=\"30000552\"/>\r\n    <row from=\"30000774\" to=\"30000720\"/>\r\n    <row from=\"30000774\" to=\"30000773\"/>\r\n    <row from=\"30000775\" to=\"30000771\"/>\r\n    <row from=\"30000775\" to=\"30000772\"/>\r\n    <row from=\"30000775\" to=\"30000803\"/>\r\n    <row from=\"30000776\" to=\"30000772\"/>\r\n    <row from=\"30000777\" to=\"30000761\"/>\r\n    <row from=\"30000777\" to=\"30000778\"/>\r\n    <row from=\"30000777\" to=\"30000782\"/>\r\n    <row from=\"30000778\" to=\"30000777\"/>\r\n    <row from=\"30000778\" to=\"30000779\"/>\r\n    <row from=\"30000778\" to=\"30000782\"/>\r\n    <row from=\"30000778\" to=\"30000797\"/>\r\n    <row from=\"30000779\" to=\"30000458\"/>\r\n    <row from=\"30000779\" to=\"30000778\"/>\r\n    <row from=\"30000779\" to=\"30000780\"/>\r\n    <row from=\"30000780\" to=\"30000770\"/>\r\n    <row from=\"30000780\" to=\"30000779\"/>\r\n    <row from=\"30000780\" to=\"30000782\"/>\r\n    <row from=\"30000781\" to=\"30000782\"/>\r\n    <row from=\"30000781\" to=\"30000791\"/>\r\n    <row from=\"30000782\" to=\"30000777\"/>\r\n    <row from=\"30000782\" to=\"30000778\"/>\r\n    <row from=\"30000782\" to=\"30000780\"/>\r\n    <row from=\"30000782\" to=\"30000781\"/>\r\n    <row from=\"30000783\" to=\"30000788\"/>\r\n    <row from=\"30000783\" to=\"30002301\"/>\r\n    <row from=\"30000784\" to=\"30000772\"/>\r\n    <row from=\"30000784\" to=\"30000785\"/>\r\n    <row from=\"30000784\" to=\"30000786\"/>\r\n    <row from=\"30000784\" to=\"30000787\"/>\r\n    <row from=\"30000785\" to=\"30000784\"/>\r\n    <row from=\"30000785\" to=\"30000788\"/>\r\n    <row from=\"30000785\" to=\"30000810\"/>\r\n    <row from=\"30000786\" to=\"30000784\"/>\r\n    <row from=\"30000786\" to=\"30000788\"/>\r\n    <row from=\"30000786\" to=\"30000794\"/>\r\n    <row from=\"30000787\" to=\"30000706\"/>\r\n    <row from=\"30000787\" to=\"30000784\"/>\r\n    <row from=\"30000787\" to=\"30000788\"/>\r\n    <row from=\"30000788\" to=\"30000783\"/>\r\n    <row from=\"30000788\" to=\"30000785\"/>\r\n    <row from=\"30000788\" to=\"30000786\"/>\r\n    <row from=\"30000788\" to=\"30000787\"/>\r\n    <row from=\"30000789\" to=\"30000713\"/>\r\n    <row from=\"30000789\" to=\"30000790\"/>\r\n    <row from=\"30000789\" to=\"30000793\"/>\r\n    <row from=\"30000790\" to=\"30000789\"/>\r\n    <row from=\"30000790\" to=\"30000791\"/>\r\n    <row from=\"30000790\" to=\"30000792\"/>\r\n    <row from=\"30000790\" to=\"30000793\"/>\r\n    <row from=\"30000791\" to=\"30000781\"/>\r\n    <row from=\"30000791\" to=\"30000790\"/>\r\n    <row from=\"30000791\" to=\"30000792\"/>\r\n    <row from=\"30000791\" to=\"30000795\"/>\r\n    <row from=\"30000792\" to=\"30000680\"/>\r\n    <row from=\"30000792\" to=\"30000790\"/>\r\n    <row from=\"30000792\" to=\"30000791\"/>\r\n    <row from=\"30000793\" to=\"30000789\"/>\r\n    <row from=\"30000793\" to=\"30000790\"/>\r\n    <row from=\"30000793\" to=\"30000794\"/>\r\n    <row from=\"30000794\" to=\"30000786\"/>\r\n    <row from=\"30000794\" to=\"30000793\"/>\r\n    <row from=\"30000794\" to=\"30000795\"/>\r\n    <row from=\"30000795\" to=\"30000791\"/>\r\n    <row from=\"30000795\" to=\"30000794\"/>\r\n    <row from=\"30000796\" to=\"30000797\"/>\r\n    <row from=\"30000797\" to=\"30000778\"/>\r\n    <row from=\"30000797\" to=\"30000796\"/>\r\n    <row from=\"30000797\" to=\"30000798\"/>\r\n    <row from=\"30000797\" to=\"30000799\"/>\r\n    <row from=\"30000798\" to=\"30000797\"/>\r\n    <row from=\"30000798\" to=\"30000800\"/>\r\n    <row from=\"30000799\" to=\"30000797\"/>\r\n    <row from=\"30000800\" to=\"30000798\"/>\r\n    <row from=\"30000800\" to=\"30000801\"/>\r\n    <row from=\"30000801\" to=\"30000800\"/>\r\n    <row from=\"30000802\" to=\"30000803\"/>\r\n    <row from=\"30000802\" to=\"30000804\"/>\r\n    <row from=\"30000803\" to=\"30000775\"/>\r\n    <row from=\"30000803\" to=\"30000802\"/>\r\n    <row from=\"30000804\" to=\"30000802\"/>\r\n    <row from=\"30000804\" to=\"30000805\"/>\r\n    <row from=\"30000804\" to=\"30000806\"/>\r\n    <row from=\"30000805\" to=\"30000804\"/>\r\n    <row from=\"30000806\" to=\"30000804\"/>\r\n    <row from=\"30000806\" to=\"30000807\"/>\r\n    <row from=\"30000807\" to=\"30000806\"/>\r\n    <row from=\"30000808\" to=\"30000809\"/>\r\n    <row from=\"30000808\" to=\"30000810\"/>\r\n    <row from=\"30000808\" to=\"30000811\"/>\r\n    <row from=\"30000808\" to=\"30000812\"/>\r\n    <row from=\"30000809\" to=\"30000808\"/>\r\n    <row from=\"30000809\" to=\"30000812\"/>\r\n    <row from=\"30000809\" to=\"30000813\"/>\r\n    <row from=\"30000810\" to=\"30000785\"/>\r\n    <row from=\"30000810\" to=\"30000808\"/>\r\n    <row from=\"30000811\" to=\"30000808\"/>\r\n    <row from=\"30000812\" to=\"30000808\"/>\r\n    <row from=\"30000812\" to=\"30000809\"/>\r\n    <row from=\"30000812\" to=\"30000813\"/>\r\n    <row from=\"30000813\" to=\"30000809\"/>\r\n    <row from=\"30000813\" to=\"30000812\"/>\r\n    <row from=\"30000813\" to=\"30000837\"/>\r\n    <row from=\"30000814\" to=\"30000769\"/>\r\n    <row from=\"30000814\" to=\"30000815\"/>\r\n    <row from=\"30000815\" to=\"30000814\"/>\r\n    <row from=\"30000815\" to=\"30000816\"/>\r\n    <row from=\"30000815\" to=\"30000817\"/>\r\n    <row from=\"30000816\" to=\"30000815\"/>\r\n    <row from=\"30000816\" to=\"30000818\"/>\r\n    <row from=\"30000817\" to=\"30000815\"/>\r\n    <row from=\"30000818\" to=\"30000816\"/>\r\n    <row from=\"30000818\" to=\"30000819\"/>\r\n    <row from=\"30000818\" to=\"30000821\"/>\r\n    <row from=\"30000819\" to=\"30000818\"/>\r\n    <row from=\"30000819\" to=\"30000820\"/>\r\n    <row from=\"30000820\" to=\"30000819\"/>\r\n    <row from=\"30000820\" to=\"30000821\"/>\r\n    <row from=\"30000820\" to=\"30000822\"/>\r\n    <row from=\"30000821\" to=\"30000619\"/>\r\n    <row from=\"30000821\" to=\"30000818\"/>\r\n    <row from=\"30000821\" to=\"30000820\"/>\r\n    <row from=\"30000821\" to=\"30000823\"/>\r\n    <row from=\"30000822\" to=\"30000820\"/>\r\n    <row from=\"30000822\" to=\"30000830\"/>\r\n    <row from=\"30000823\" to=\"30000648\"/>\r\n    <row from=\"30000823\" to=\"30000821\"/>\r\n    <row from=\"30000824\" to=\"30000753\"/>\r\n    <row from=\"30000824\" to=\"30000825\"/>\r\n    <row from=\"30000825\" to=\"30000824\"/>\r\n    <row from=\"30000825\" to=\"30000826\"/>\r\n    <row from=\"30000826\" to=\"30000825\"/>\r\n    <row from=\"30000826\" to=\"30000827\"/>\r\n    <row from=\"30000827\" to=\"30000826\"/>\r\n    <row from=\"30000827\" to=\"30000828\"/>\r\n    <row from=\"30000828\" to=\"30000827\"/>\r\n    <row from=\"30000828\" to=\"30000829\"/>\r\n    <row from=\"30000828\" to=\"30000830\"/>\r\n    <row from=\"30000829\" to=\"30000828\"/>\r\n    <row from=\"30000829\" to=\"30000830\"/>\r\n    <row from=\"30000829\" to=\"30000845\"/>\r\n    <row from=\"30000830\" to=\"30000822\"/>\r\n    <row from=\"30000830\" to=\"30000828\"/>\r\n    <row from=\"30000830\" to=\"30000829\"/>\r\n    <row from=\"30000831\" to=\"30000742\"/>\r\n    <row from=\"30000831\" to=\"30000832\"/>\r\n    <row from=\"30000831\" to=\"30000834\"/>\r\n    <row from=\"30000832\" to=\"30000831\"/>\r\n    <row from=\"30000832\" to=\"30000833\"/>\r\n    <row from=\"30000833\" to=\"30000832\"/>\r\n    <row from=\"30000833\" to=\"30001563\"/>\r\n    <row from=\"30000834\" to=\"30000831\"/>\r\n    <row from=\"30000834\" to=\"30000835\"/>\r\n    <row from=\"30000835\" to=\"30000834\"/>\r\n    <row from=\"30000835\" to=\"30000836\"/>\r\n    <row from=\"30000836\" to=\"30000835\"/>\r\n    <row from=\"30000836\" to=\"30000837\"/>\r\n    <row from=\"30000837\" to=\"30000813\"/>\r\n    <row from=\"30000837\" to=\"30000836\"/>\r\n    <row from=\"30000838\" to=\"30000445\"/>\r\n    <row from=\"30000838\" to=\"30000839\"/>\r\n    <row from=\"30000839\" to=\"30000527\"/>\r\n    <row from=\"30000839\" to=\"30000838\"/>\r\n    <row from=\"30000839\" to=\"30000840\"/>\r\n    <row from=\"30000840\" to=\"30000839\"/>\r\n    <row from=\"30000840\" to=\"30000841\"/>\r\n    <row from=\"30000841\" to=\"30000840\"/>\r\n    <row from=\"30000841\" to=\"30000842\"/>\r\n    <row from=\"30000842\" to=\"30000841\"/>\r\n    <row from=\"30000842\" to=\"30000843\"/>\r\n    <row from=\"30000843\" to=\"30000842\"/>\r\n    <row from=\"30000843\" to=\"30000844\"/>\r\n    <row from=\"30000844\" to=\"30000494\"/>\r\n    <row from=\"30000844\" to=\"30000843\"/>\r\n    <row from=\"30000844\" to=\"30000845\"/>\r\n    <row from=\"30000845\" to=\"30000829\"/>\r\n    <row from=\"30000845\" to=\"30000844\"/>\r\n    <row from=\"30000846\" to=\"30000848\"/>\r\n    <row from=\"30000846\" to=\"30000861\"/>\r\n    <row from=\"30000847\" to=\"30000848\"/>\r\n    <row from=\"30000847\" to=\"30000850\"/>\r\n    <row from=\"30000848\" to=\"30000846\"/>\r\n    <row from=\"30000848\" to=\"30000847\"/>\r\n    <row from=\"30000848\" to=\"30000849\"/>\r\n    <row from=\"30000848\" to=\"30000850\"/>\r\n    <row from=\"30000848\" to=\"30001447\"/>\r\n    <row from=\"30000849\" to=\"30000848\"/>\r\n    <row from=\"30000849\" to=\"30000850\"/>\r\n    <row from=\"30000849\" to=\"30000851\"/>\r\n    <row from=\"30000850\" to=\"30000847\"/>\r\n    <row from=\"30000850\" to=\"30000848\"/>\r\n    <row from=\"30000850\" to=\"30000849\"/>\r\n    <row from=\"30000851\" to=\"30000849\"/>\r\n    <row from=\"30000852\" to=\"30000856\"/>\r\n    <row from=\"30000853\" to=\"30000854\"/>\r\n    <row from=\"30000853\" to=\"30000856\"/>\r\n    <row from=\"30000853\" to=\"30000860\"/>\r\n    <row from=\"30000853\" to=\"30000862\"/>\r\n    <row from=\"30000854\" to=\"30000853\"/>\r\n    <row from=\"30000854\" to=\"30000856\"/>\r\n    <row from=\"30000854\" to=\"30000859\"/>\r\n    <row from=\"30000854\" to=\"30000860\"/>\r\n    <row from=\"30000854\" to=\"30000886\"/>\r\n    <row from=\"30000855\" to=\"30000856\"/>\r\n    <row from=\"30000855\" to=\"30000859\"/>\r\n    <row from=\"30000856\" to=\"30000852\"/>\r\n    <row from=\"30000856\" to=\"30000853\"/>\r\n    <row from=\"30000856\" to=\"30000854\"/>\r\n    <row from=\"30000856\" to=\"30000855\"/>\r\n    <row from=\"30000856\" to=\"30000860\"/>\r\n    <row from=\"30000857\" to=\"30000858\"/>\r\n    <row from=\"30000857\" to=\"30001963\"/>\r\n    <row from=\"30000858\" to=\"30000857\"/>\r\n    <row from=\"30000858\" to=\"30000860\"/>\r\n    <row from=\"30000858\" to=\"30000879\"/>\r\n    <row from=\"30000858\" to=\"30001261\"/>\r\n    <row from=\"30000859\" to=\"30000854\"/>\r\n    <row from=\"30000859\" to=\"30000855\"/>\r\n    <row from=\"30000860\" to=\"30000853\"/>\r\n    <row from=\"30000860\" to=\"30000854\"/>\r\n    <row from=\"30000860\" to=\"30000856\"/>\r\n    <row from=\"30000860\" to=\"30000858\"/>\r\n    <row from=\"30000861\" to=\"30000846\"/>\r\n    <row from=\"30000861\" to=\"30000863\"/>\r\n    <row from=\"30000861\" to=\"30000866\"/>\r\n    <row from=\"30000862\" to=\"30000853\"/>\r\n    <row from=\"30000862\" to=\"30000866\"/>\r\n    <row from=\"30000863\" to=\"30000861\"/>\r\n    <row from=\"30000863\" to=\"30000864\"/>\r\n    <row from=\"30000864\" to=\"30000247\"/>\r\n    <row from=\"30000864\" to=\"30000863\"/>\r\n    <row from=\"30000864\" to=\"30000865\"/>\r\n    <row from=\"30000865\" to=\"30000864\"/>\r\n    <row from=\"30000865\" to=\"30000867\"/>\r\n    <row from=\"30000866\" to=\"30000861\"/>\r\n    <row from=\"30000866\" to=\"30000862\"/>\r\n    <row from=\"30000866\" to=\"30000877\"/>\r\n    <row from=\"30000867\" to=\"30000865\"/>\r\n    <row from=\"30000867\" to=\"30000868\"/>\r\n    <row from=\"30000867\" to=\"30000871\"/>\r\n    <row from=\"30000868\" to=\"30000867\"/>\r\n    <row from=\"30000868\" to=\"30000869\"/>\r\n    <row from=\"30000868\" to=\"30000870\"/>\r\n    <row from=\"30000869\" to=\"30000868\"/>\r\n    <row from=\"30000869\" to=\"30000870\"/>\r\n    <row from=\"30000870\" to=\"30000868\"/>\r\n    <row from=\"30000870\" to=\"30000869\"/>\r\n    <row from=\"30000870\" to=\"30000871\"/>\r\n    <row from=\"30000871\" to=\"30000267\"/>\r\n    <row from=\"30000871\" to=\"30000867\"/>\r\n    <row from=\"30000871\" to=\"30000870\"/>\r\n    <row from=\"30000871\" to=\"30000872\"/>\r\n    <row from=\"30000871\" to=\"30000894\"/>\r\n    <row from=\"30000872\" to=\"30000871\"/>\r\n    <row from=\"30000872\" to=\"30001281\"/>\r\n    <row from=\"30000873\" to=\"30000875\"/>\r\n    <row from=\"30000874\" to=\"30000875\"/>\r\n    <row from=\"30000875\" to=\"30000873\"/>\r\n    <row from=\"30000875\" to=\"30000874\"/>\r\n    <row from=\"30000875\" to=\"30000877\"/>\r\n    <row from=\"30000876\" to=\"30000877\"/>\r\n    <row from=\"30000876\" to=\"30000878\"/>\r\n    <row from=\"30000877\" to=\"30000866\"/>\r\n    <row from=\"30000877\" to=\"30000875\"/>\r\n    <row from=\"30000877\" to=\"30000876\"/>\r\n    <row from=\"30000878\" to=\"30000876\"/>\r\n    <row from=\"30000879\" to=\"30000858\"/>\r\n    <row from=\"30000879\" to=\"30000880\"/>\r\n    <row from=\"30000879\" to=\"30000881\"/>\r\n    <row from=\"30000880\" to=\"30000879\"/>\r\n    <row from=\"30000880\" to=\"30000882\"/>\r\n    <row from=\"30000880\" to=\"30000885\"/>\r\n    <row from=\"30000881\" to=\"30000879\"/>\r\n    <row from=\"30000882\" to=\"30000880\"/>\r\n    <row from=\"30000882\" to=\"30000883\"/>\r\n    <row from=\"30000883\" to=\"30000882\"/>\r\n    <row from=\"30000883\" to=\"30000884\"/>\r\n    <row from=\"30000884\" to=\"30000883\"/>\r\n    <row from=\"30000885\" to=\"30000880\"/>\r\n    <row from=\"30000886\" to=\"30000854\"/>\r\n    <row from=\"30000886\" to=\"30000887\"/>\r\n    <row from=\"30000887\" to=\"30000886\"/>\r\n    <row from=\"30000887\" to=\"30000888\"/>\r\n    <row from=\"30000887\" to=\"30000889\"/>\r\n    <row from=\"30000887\" to=\"30000891\"/>\r\n    <row from=\"30000888\" to=\"30000887\"/>\r\n    <row from=\"30000888\" to=\"30000889\"/>\r\n    <row from=\"30000889\" to=\"30000887\"/>\r\n    <row from=\"30000889\" to=\"30000888\"/>\r\n    <row from=\"30000889\" to=\"30000890\"/>\r\n    <row from=\"30000889\" to=\"30000891\"/>\r\n    <row from=\"30000890\" to=\"30000889\"/>\r\n    <row from=\"30000890\" to=\"30000891\"/>\r\n    <row from=\"30000890\" to=\"30000893\"/>\r\n    <row from=\"30000891\" to=\"30000887\"/>\r\n    <row from=\"30000891\" to=\"30000889\"/>\r\n    <row from=\"30000891\" to=\"30000890\"/>\r\n    <row from=\"30000891\" to=\"30000892\"/>\r\n    <row from=\"30000892\" to=\"30000891\"/>\r\n    <row from=\"30000893\" to=\"30000890\"/>\r\n    <row from=\"30000894\" to=\"30000871\"/>\r\n    <row from=\"30000894\" to=\"30000895\"/>\r\n    <row from=\"30000895\" to=\"30000894\"/>\r\n    <row from=\"30000895\" to=\"30000896\"/>\r\n    <row from=\"30000896\" to=\"30000895\"/>\r\n    <row from=\"30000896\" to=\"30000897\"/>\r\n    <row from=\"30000896\" to=\"30001348\"/>\r\n    <row from=\"30000897\" to=\"30000896\"/>\r\n    <row from=\"30000897\" to=\"30000898\"/>\r\n    <row from=\"30000898\" to=\"30000308\"/>\r\n    <row from=\"30000898\" to=\"30000897\"/>\r\n    <row from=\"30000898\" to=\"30000899\"/>\r\n    <row from=\"30000899\" to=\"30000303\"/>\r\n    <row from=\"30000899\" to=\"30000898\"/>\r\n    <row from=\"30000900\" to=\"30000904\"/>\r\n    <row from=\"30000900\" to=\"30000905\"/>\r\n    <row from=\"30000900\" to=\"30000964\"/>\r\n    <row from=\"30000901\" to=\"30000902\"/>\r\n    <row from=\"30000901\" to=\"30000923\"/>\r\n    <row from=\"30000902\" to=\"30000901\"/>\r\n    <row from=\"30000902\" to=\"30000903\"/>\r\n    <row from=\"30000903\" to=\"30000902\"/>\r\n    <row from=\"30000903\" to=\"30000905\"/>\r\n    <row from=\"30000903\" to=\"30000942\"/>\r\n    <row from=\"30000904\" to=\"30000900\"/>\r\n    <row from=\"30000904\" to=\"30000949\"/>\r\n    <row from=\"30000904\" to=\"30000971\"/>\r\n    <row from=\"30000905\" to=\"30000900\"/>\r\n    <row from=\"30000905\" to=\"30000903\"/>\r\n    <row from=\"30000906\" to=\"30000909\"/>\r\n    <row from=\"30000906\" to=\"30000977\"/>\r\n    <row from=\"30000907\" to=\"30000908\"/>\r\n    <row from=\"30000907\" to=\"30000909\"/>\r\n    <row from=\"30000907\" to=\"30000910\"/>\r\n    <row from=\"30000907\" to=\"30000938\"/>\r\n    <row from=\"30000908\" to=\"30000907\"/>\r\n    <row from=\"30000908\" to=\"30000909\"/>\r\n    <row from=\"30000908\" to=\"30000910\"/>\r\n    <row from=\"30000908\" to=\"30000927\"/>\r\n    <row from=\"30000909\" to=\"30000906\"/>\r\n    <row from=\"30000909\" to=\"30000907\"/>\r\n    <row from=\"30000909\" to=\"30000908\"/>\r\n    <row from=\"30000910\" to=\"30000907\"/>\r\n    <row from=\"30000910\" to=\"30000908\"/>\r\n    <row from=\"30000910\" to=\"30000911\"/>\r\n    <row from=\"30000911\" to=\"30000910\"/>\r\n    <row from=\"30000912\" to=\"30000913\"/>\r\n    <row from=\"30000912\" to=\"30000914\"/>\r\n    <row from=\"30000912\" to=\"30000917\"/>\r\n    <row from=\"30000912\" to=\"30000919\"/>\r\n    <row from=\"30000912\" to=\"30000941\"/>\r\n    <row from=\"30000913\" to=\"30000912\"/>\r\n    <row from=\"30000913\" to=\"30000914\"/>\r\n    <row from=\"30000913\" to=\"30000916\"/>\r\n    <row from=\"30000913\" to=\"30000917\"/>\r\n    <row from=\"30000913\" to=\"30000923\"/>\r\n    <row from=\"30000914\" to=\"30000912\"/>\r\n    <row from=\"30000914\" to=\"30000913\"/>\r\n    <row from=\"30000914\" to=\"30000915\"/>\r\n    <row from=\"30000915\" to=\"30000914\"/>\r\n    <row from=\"30000915\" to=\"30000962\"/>\r\n    <row from=\"30000915\" to=\"30000989\"/>\r\n    <row from=\"30000916\" to=\"30000913\"/>\r\n    <row from=\"30000917\" to=\"30000912\"/>\r\n    <row from=\"30000917\" to=\"30000913\"/>\r\n    <row from=\"30000918\" to=\"30000920\"/>\r\n    <row from=\"30000918\" to=\"30000922\"/>\r\n    <row from=\"30000918\" to=\"30000924\"/>\r\n    <row from=\"30000918\" to=\"30000957\"/>\r\n    <row from=\"30000918\" to=\"30000994\"/>\r\n    <row from=\"30000919\" to=\"30000912\"/>\r\n    <row from=\"30000919\" to=\"30000925\"/>\r\n    <row from=\"30000919\" to=\"30000926\"/>\r\n    <row from=\"30000920\" to=\"30000918\"/>\r\n    <row from=\"30000920\" to=\"30000923\"/>\r\n    <row from=\"30000920\" to=\"30000924\"/>\r\n    <row from=\"30000921\" to=\"30000924\"/>\r\n    <row from=\"30000921\" to=\"30000925\"/>\r\n    <row from=\"30000921\" to=\"30001020\"/>\r\n    <row from=\"30000922\" to=\"30000918\"/>\r\n    <row from=\"30000922\" to=\"30000924\"/>\r\n    <row from=\"30000923\" to=\"30000901\"/>\r\n    <row from=\"30000923\" to=\"30000913\"/>\r\n    <row from=\"30000923\" to=\"30000920\"/>\r\n    <row from=\"30000924\" to=\"30000918\"/>\r\n    <row from=\"30000924\" to=\"30000920\"/>\r\n    <row from=\"30000924\" to=\"30000921\"/>\r\n    <row from=\"30000924\" to=\"30000922\"/>\r\n    <row from=\"30000924\" to=\"30000993\"/>\r\n    <row from=\"30000925\" to=\"30000919\"/>\r\n    <row from=\"30000925\" to=\"30000921\"/>\r\n    <row from=\"30000926\" to=\"30000666\"/>\r\n    <row from=\"30000926\" to=\"30000919\"/>\r\n    <row from=\"30000927\" to=\"30000908\"/>\r\n    <row from=\"30000927\" to=\"30000928\"/>\r\n    <row from=\"30000927\" to=\"30000935\"/>\r\n    <row from=\"30000928\" to=\"30000927\"/>\r\n    <row from=\"30000928\" to=\"30000929\"/>\r\n    <row from=\"30000929\" to=\"30000928\"/>\r\n    <row from=\"30000929\" to=\"30000930\"/>\r\n    <row from=\"30000929\" to=\"30000932\"/>\r\n    <row from=\"30000930\" to=\"30000929\"/>\r\n    <row from=\"30000930\" to=\"30000931\"/>\r\n    <row from=\"30000930\" to=\"30000932\"/>\r\n    <row from=\"30000931\" to=\"30000930\"/>\r\n    <row from=\"30000932\" to=\"30000929\"/>\r\n    <row from=\"30000932\" to=\"30000930\"/>\r\n    <row from=\"30000932\" to=\"30000933\"/>\r\n    <row from=\"30000932\" to=\"30000934\"/>\r\n    <row from=\"30000933\" to=\"30000932\"/>\r\n    <row from=\"30000933\" to=\"30000934\"/>\r\n    <row from=\"30000933\" to=\"30000947\"/>\r\n    <row from=\"30000934\" to=\"30000932\"/>\r\n    <row from=\"30000934\" to=\"30000933\"/>\r\n    <row from=\"30000934\" to=\"30000935\"/>\r\n    <row from=\"30000935\" to=\"30000927\"/>\r\n    <row from=\"30000935\" to=\"30000934\"/>\r\n    <row from=\"30000936\" to=\"30000937\"/>\r\n    <row from=\"30000936\" to=\"30000939\"/>\r\n    <row from=\"30000936\" to=\"30000940\"/>\r\n    <row from=\"30000936\" to=\"30000941\"/>\r\n    <row from=\"30000937\" to=\"30000936\"/>\r\n    <row from=\"30000937\" to=\"30000938\"/>\r\n    <row from=\"30000937\" to=\"30000941\"/>\r\n    <row from=\"30000938\" to=\"30000907\"/>\r\n    <row from=\"30000938\" to=\"30000937\"/>\r\n    <row from=\"30000939\" to=\"30000666\"/>\r\n    <row from=\"30000939\" to=\"30000936\"/>\r\n    <row from=\"30000940\" to=\"30000936\"/>\r\n    <row from=\"30000941\" to=\"30000912\"/>\r\n    <row from=\"30000941\" to=\"30000936\"/>\r\n    <row from=\"30000941\" to=\"30000937\"/>\r\n    <row from=\"30000942\" to=\"30000903\"/>\r\n    <row from=\"30000942\" to=\"30000943\"/>\r\n    <row from=\"30000942\" to=\"30000944\"/>\r\n    <row from=\"30000943\" to=\"30000117\"/>\r\n    <row from=\"30000943\" to=\"30000942\"/>\r\n    <row from=\"30000943\" to=\"30000944\"/>\r\n    <row from=\"30000944\" to=\"30000942\"/>\r\n    <row from=\"30000944\" to=\"30000943\"/>\r\n    <row from=\"30000944\" to=\"30000945\"/>\r\n    <row from=\"30000944\" to=\"30000946\"/>\r\n    <row from=\"30000945\" to=\"30000944\"/>\r\n    <row from=\"30000945\" to=\"30000948\"/>\r\n    <row from=\"30000946\" to=\"30000944\"/>\r\n    <row from=\"30000946\" to=\"30000947\"/>\r\n    <row from=\"30000947\" to=\"30000933\"/>\r\n    <row from=\"30000947\" to=\"30000946\"/>\r\n    <row from=\"30000948\" to=\"30000945\"/>\r\n    <row from=\"30000949\" to=\"30000904\"/>\r\n    <row from=\"30000949\" to=\"30000950\"/>\r\n    <row from=\"30000950\" to=\"30000949\"/>\r\n    <row from=\"30000950\" to=\"30000951\"/>\r\n    <row from=\"30000951\" to=\"30000950\"/>\r\n    <row from=\"30000951\" to=\"30000952\"/>\r\n    <row from=\"30000952\" to=\"30000951\"/>\r\n    <row from=\"30000952\" to=\"30000953\"/>\r\n    <row from=\"30000952\" to=\"30000954\"/>\r\n    <row from=\"30000953\" to=\"30000952\"/>\r\n    <row from=\"30000954\" to=\"30000952\"/>\r\n    <row from=\"30000954\" to=\"30000955\"/>\r\n    <row from=\"30000955\" to=\"30000954\"/>\r\n    <row from=\"30000955\" to=\"30000983\"/>\r\n    <row from=\"30000956\" to=\"30000957\"/>\r\n    <row from=\"30000956\" to=\"30000958\"/>\r\n    <row from=\"30000956\" to=\"30000962\"/>\r\n    <row from=\"30000956\" to=\"30000963\"/>\r\n    <row from=\"30000957\" to=\"30000918\"/>\r\n    <row from=\"30000957\" to=\"30000956\"/>\r\n    <row from=\"30000957\" to=\"30000962\"/>\r\n    <row from=\"30000958\" to=\"30000956\"/>\r\n    <row from=\"30000958\" to=\"30000959\"/>\r\n    <row from=\"30000958\" to=\"30000961\"/>\r\n    <row from=\"30000959\" to=\"30000958\"/>\r\n    <row from=\"30000959\" to=\"30000960\"/>\r\n    <row from=\"30000960\" to=\"30000959\"/>\r\n    <row from=\"30000961\" to=\"30000958\"/>\r\n    <row from=\"30000962\" to=\"30000915\"/>\r\n    <row from=\"30000962\" to=\"30000956\"/>\r\n    <row from=\"30000962\" to=\"30000957\"/>\r\n    <row from=\"30000962\" to=\"30000963\"/>\r\n    <row from=\"30000963\" to=\"30000956\"/>\r\n    <row from=\"30000963\" to=\"30000962\"/>\r\n    <row from=\"30000964\" to=\"30000900\"/>\r\n    <row from=\"30000964\" to=\"30000965\"/>\r\n    <row from=\"30000964\" to=\"30000967\"/>\r\n    <row from=\"30000965\" to=\"30000964\"/>\r\n    <row from=\"30000965\" to=\"30000966\"/>\r\n    <row from=\"30000965\" to=\"30000968\"/>\r\n    <row from=\"30000966\" to=\"30000965\"/>\r\n    <row from=\"30000966\" to=\"30000967\"/>\r\n    <row from=\"30000966\" to=\"30000969\"/>\r\n    <row from=\"30000967\" to=\"30000964\"/>\r\n    <row from=\"30000967\" to=\"30000966\"/>\r\n    <row from=\"30000967\" to=\"30000969\"/>\r\n    <row from=\"30000968\" to=\"30000965\"/>\r\n    <row from=\"30000969\" to=\"30000966\"/>\r\n    <row from=\"30000969\" to=\"30000967\"/>\r\n    <row from=\"30000969\" to=\"30000970\"/>\r\n    <row from=\"30000970\" to=\"30000969\"/>\r\n    <row from=\"30000970\" to=\"30002420\"/>\r\n    <row from=\"30000971\" to=\"30000904\"/>\r\n    <row from=\"30000971\" to=\"30000972\"/>\r\n    <row from=\"30000972\" to=\"30000971\"/>\r\n    <row from=\"30000972\" to=\"30000973\"/>\r\n    <row from=\"30000972\" to=\"30000974\"/>\r\n    <row from=\"30000973\" to=\"30000972\"/>\r\n    <row from=\"30000973\" to=\"30000975\"/>\r\n    <row from=\"30000974\" to=\"30000972\"/>\r\n    <row from=\"30000975\" to=\"30000973\"/>\r\n    <row from=\"30000975\" to=\"30000976\"/>\r\n    <row from=\"30000976\" to=\"30000975\"/>\r\n    <row from=\"30000977\" to=\"30000906\"/>\r\n    <row from=\"30000977\" to=\"30000978\"/>\r\n    <row from=\"30000977\" to=\"30000980\"/>\r\n    <row from=\"30000978\" to=\"30000703\"/>\r\n    <row from=\"30000978\" to=\"30000977\"/>\r\n    <row from=\"30000978\" to=\"30000979\"/>\r\n    <row from=\"30000978\" to=\"30000982\"/>\r\n    <row from=\"30000979\" to=\"30000978\"/>\r\n    <row from=\"30000979\" to=\"30000981\"/>\r\n    <row from=\"30000979\" to=\"30000982\"/>\r\n    <row from=\"30000980\" to=\"30000977\"/>\r\n    <row from=\"30000981\" to=\"30000979\"/>\r\n    <row from=\"30000981\" to=\"30000995\"/>\r\n    <row from=\"30000982\" to=\"30000978\"/>\r\n    <row from=\"30000982\" to=\"30000979\"/>\r\n    <row from=\"30000983\" to=\"30000955\"/>\r\n    <row from=\"30000983\" to=\"30000984\"/>\r\n    <row from=\"30000984\" to=\"30000983\"/>\r\n    <row from=\"30000984\" to=\"30000985\"/>\r\n    <row from=\"30000985\" to=\"30000984\"/>\r\n    <row from=\"30000985\" to=\"30000986\"/>\r\n    <row from=\"30000986\" to=\"30000985\"/>\r\n    <row from=\"30000986\" to=\"30000987\"/>\r\n    <row from=\"30000986\" to=\"30002375\"/>\r\n    <row from=\"30000987\" to=\"30000986\"/>\r\n    <row from=\"30000987\" to=\"30000988\"/>\r\n    <row from=\"30000988\" to=\"30000987\"/>\r\n    <row from=\"30000989\" to=\"30000915\"/>\r\n    <row from=\"30000989\" to=\"30000990\"/>\r\n    <row from=\"30000989\" to=\"30000991\"/>\r\n    <row from=\"30000989\" to=\"30000992\"/>\r\n    <row from=\"30000989\" to=\"30000994\"/>\r\n    <row from=\"30000990\" to=\"30000989\"/>\r\n    <row from=\"30000990\" to=\"30000992\"/>\r\n    <row from=\"30000991\" to=\"30000989\"/>\r\n    <row from=\"30000991\" to=\"30000993\"/>\r\n    <row from=\"30000991\" to=\"30000994\"/>\r\n    <row from=\"30000992\" to=\"30000989\"/>\r\n    <row from=\"30000992\" to=\"30000990\"/>\r\n    <row from=\"30000992\" to=\"30000993\"/>\r\n    <row from=\"30000993\" to=\"30000924\"/>\r\n    <row from=\"30000993\" to=\"30000991\"/>\r\n    <row from=\"30000993\" to=\"30000992\"/>\r\n    <row from=\"30000993\" to=\"30000994\"/>\r\n    <row from=\"30000994\" to=\"30000918\"/>\r\n    <row from=\"30000994\" to=\"30000989\"/>\r\n    <row from=\"30000994\" to=\"30000991\"/>\r\n    <row from=\"30000994\" to=\"30000993\"/>\r\n    <row from=\"30000995\" to=\"30000981\"/>\r\n    <row from=\"30000995\" to=\"30000996\"/>\r\n    <row from=\"30000996\" to=\"30000995\"/>\r\n    <row from=\"30000996\" to=\"30000997\"/>\r\n    <row from=\"30000996\" to=\"30000999\"/>\r\n    <row from=\"30000997\" to=\"30000996\"/>\r\n    <row from=\"30000997\" to=\"30000998\"/>\r\n    <row from=\"30000997\" to=\"30000999\"/>\r\n    <row from=\"30000998\" to=\"30000997\"/>\r\n    <row from=\"30000998\" to=\"30001000\"/>\r\n    <row from=\"30000999\" to=\"30000996\"/>\r\n    <row from=\"30000999\" to=\"30000997\"/>\r\n    <row from=\"30000999\" to=\"30003471\"/>\r\n    <row from=\"30001000\" to=\"30000626\"/>\r\n    <row from=\"30001000\" to=\"30000998\"/>\r\n    <row from=\"30001000\" to=\"30002489\"/>\r\n    <row from=\"30001001\" to=\"30000657\"/>\r\n    <row from=\"30001001\" to=\"30001002\"/>\r\n    <row from=\"30001001\" to=\"30001005\"/>\r\n    <row from=\"30001001\" to=\"30001031\"/>\r\n    <row from=\"30001001\" to=\"30001035\"/>\r\n    <row from=\"30001002\" to=\"30001001\"/>\r\n    <row from=\"30001002\" to=\"30001003\"/>\r\n    <row from=\"30001002\" to=\"30001004\"/>\r\n    <row from=\"30001002\" to=\"30001005\"/>\r\n    <row from=\"30001003\" to=\"30001002\"/>\r\n    <row from=\"30001003\" to=\"30001006\"/>\r\n    <row from=\"30001004\" to=\"30001002\"/>\r\n    <row from=\"30001005\" to=\"30001001\"/>\r\n    <row from=\"30001005\" to=\"30001002\"/>\r\n    <row from=\"30001006\" to=\"30001003\"/>\r\n    <row from=\"30001007\" to=\"30001009\"/>\r\n    <row from=\"30001007\" to=\"30001013\"/>\r\n    <row from=\"30001008\" to=\"30001009\"/>\r\n    <row from=\"30001008\" to=\"30001012\"/>\r\n    <row from=\"30001009\" to=\"30001007\"/>\r\n    <row from=\"30001009\" to=\"30001008\"/>\r\n    <row from=\"30001009\" to=\"30001010\"/>\r\n    <row from=\"30001009\" to=\"30001155\"/>\r\n    <row from=\"30001010\" to=\"30001009\"/>\r\n    <row from=\"30001010\" to=\"30001011\"/>\r\n    <row from=\"30001010\" to=\"30001012\"/>\r\n    <row from=\"30001010\" to=\"30001014\"/>\r\n    <row from=\"30001010\" to=\"30001015\"/>\r\n    <row from=\"30001011\" to=\"30001010\"/>\r\n    <row from=\"30001011\" to=\"30001012\"/>\r\n    <row from=\"30001011\" to=\"30001014\"/>\r\n    <row from=\"30001011\" to=\"30001019\"/>\r\n    <row from=\"30001012\" to=\"30001008\"/>\r\n    <row from=\"30001012\" to=\"30001010\"/>\r\n    <row from=\"30001012\" to=\"30001011\"/>\r\n    <row from=\"30001013\" to=\"30001007\"/>\r\n    <row from=\"30001014\" to=\"30001010\"/>\r\n    <row from=\"30001014\" to=\"30001011\"/>\r\n    <row from=\"30001014\" to=\"30001015\"/>\r\n    <row from=\"30001015\" to=\"30001010\"/>\r\n    <row from=\"30001015\" to=\"30001014\"/>\r\n    <row from=\"30001016\" to=\"30001018\"/>\r\n    <row from=\"30001016\" to=\"30001019\"/>\r\n    <row from=\"30001016\" to=\"30001020\"/>\r\n    <row from=\"30001017\" to=\"30001019\"/>\r\n    <row from=\"30001017\" to=\"30001025\"/>\r\n    <row from=\"30001018\" to=\"30001016\"/>\r\n    <row from=\"30001018\" to=\"30001021\"/>\r\n    <row from=\"30001019\" to=\"30000656\"/>\r\n    <row from=\"30001019\" to=\"30001011\"/>\r\n    <row from=\"30001019\" to=\"30001016\"/>\r\n    <row from=\"30001019\" to=\"30001017\"/>\r\n    <row from=\"30001020\" to=\"30000921\"/>\r\n    <row from=\"30001020\" to=\"30001016\"/>\r\n    <row from=\"30001020\" to=\"30001041\"/>\r\n    <row from=\"30001021\" to=\"30000688\"/>\r\n    <row from=\"30001021\" to=\"30001018\"/>\r\n    <row from=\"30001021\" to=\"30001032\"/>\r\n    <row from=\"30001022\" to=\"30001026\"/>\r\n    <row from=\"30001023\" to=\"30001025\"/>\r\n    <row from=\"30001023\" to=\"30001027\"/>\r\n    <row from=\"30001024\" to=\"30001026\"/>\r\n    <row from=\"30001024\" to=\"30001028\"/>\r\n    <row from=\"30001025\" to=\"30001017\"/>\r\n    <row from=\"30001025\" to=\"30001023\"/>\r\n    <row from=\"30001025\" to=\"30001026\"/>\r\n    <row from=\"30001026\" to=\"30001022\"/>\r\n    <row from=\"30001026\" to=\"30001024\"/>\r\n    <row from=\"30001026\" to=\"30001025\"/>\r\n    <row from=\"30001026\" to=\"30001028\"/>\r\n    <row from=\"30001027\" to=\"30001023\"/>\r\n    <row from=\"30001028\" to=\"30001024\"/>\r\n    <row from=\"30001028\" to=\"30001026\"/>\r\n    <row from=\"30001028\" to=\"30001044\"/>\r\n    <row from=\"30001029\" to=\"30000657\"/>\r\n    <row from=\"30001029\" to=\"30001031\"/>\r\n    <row from=\"30001030\" to=\"30001032\"/>\r\n    <row from=\"30001031\" to=\"30001001\"/>\r\n    <row from=\"30001031\" to=\"30001029\"/>\r\n    <row from=\"30001031\" to=\"30001032\"/>\r\n    <row from=\"30001031\" to=\"30001033\"/>\r\n    <row from=\"30001032\" to=\"30001021\"/>\r\n    <row from=\"30001032\" to=\"30001030\"/>\r\n    <row from=\"30001032\" to=\"30001031\"/>\r\n    <row from=\"30001033\" to=\"30001031\"/>\r\n    <row from=\"30001033\" to=\"30001034\"/>\r\n    <row from=\"30001033\" to=\"30001035\"/>\r\n    <row from=\"30001034\" to=\"30001033\"/>\r\n    <row from=\"30001035\" to=\"30001001\"/>\r\n    <row from=\"30001035\" to=\"30001033\"/>\r\n    <row from=\"30001036\" to=\"30001041\"/>\r\n    <row from=\"30001037\" to=\"30001039\"/>\r\n    <row from=\"30001037\" to=\"30001042\"/>\r\n    <row from=\"30001038\" to=\"30001041\"/>\r\n    <row from=\"30001038\" to=\"30001042\"/>\r\n    <row from=\"30001039\" to=\"30001037\"/>\r\n    <row from=\"30001039\" to=\"30001040\"/>\r\n    <row from=\"30001039\" to=\"30001041\"/>\r\n    <row from=\"30001040\" to=\"30001039\"/>\r\n    <row from=\"30001041\" to=\"30001020\"/>\r\n    <row from=\"30001041\" to=\"30001036\"/>\r\n    <row from=\"30001041\" to=\"30001038\"/>\r\n    <row from=\"30001041\" to=\"30001039\"/>\r\n    <row from=\"30001041\" to=\"30100000\"/>\r\n    <row from=\"30001042\" to=\"30001037\"/>\r\n    <row from=\"30001042\" to=\"30001038\"/>\r\n    <row from=\"30001042\" to=\"30001043\"/>\r\n    <row from=\"30001043\" to=\"30001042\"/>\r\n    <row from=\"30001044\" to=\"30001028\"/>\r\n    <row from=\"30001044\" to=\"30001045\"/>\r\n    <row from=\"30001044\" to=\"30001046\"/>\r\n    <row from=\"30001045\" to=\"30001044\"/>\r\n    <row from=\"30001045\" to=\"30001047\"/>\r\n    <row from=\"30001045\" to=\"30001048\"/>\r\n    <row from=\"30001046\" to=\"30001044\"/>\r\n    <row from=\"30001046\" to=\"30001047\"/>\r\n    <row from=\"30001046\" to=\"30001049\"/>\r\n    <row from=\"30001047\" to=\"30000015\"/>\r\n    <row from=\"30001047\" to=\"30001045\"/>\r\n    <row from=\"30001047\" to=\"30001046\"/>\r\n    <row from=\"30001048\" to=\"30001045\"/>\r\n    <row from=\"30001048\" to=\"30001050\"/>\r\n    <row from=\"30001049\" to=\"30001046\"/>\r\n    <row from=\"30001050\" to=\"30001048\"/>\r\n    <row from=\"30001050\" to=\"30001170\"/>\r\n    <row from=\"30001051\" to=\"30001052\"/>\r\n    <row from=\"30001051\" to=\"30001053\"/>\r\n    <row from=\"30001051\" to=\"30001054\"/>\r\n    <row from=\"30001051\" to=\"30001066\"/>\r\n    <row from=\"30001052\" to=\"30001051\"/>\r\n    <row from=\"30001052\" to=\"30001054\"/>\r\n    <row from=\"30001053\" to=\"30001051\"/>\r\n    <row from=\"30001053\" to=\"30001055\"/>\r\n    <row from=\"30001054\" to=\"30001051\"/>\r\n    <row from=\"30001054\" to=\"30001052\"/>\r\n    <row from=\"30001054\" to=\"30001056\"/>\r\n    <row from=\"30001055\" to=\"30001053\"/>\r\n    <row from=\"30001055\" to=\"30001109\"/>\r\n    <row from=\"30001056\" to=\"30001054\"/>\r\n    <row from=\"30001056\" to=\"30001091\"/>\r\n    <row from=\"30001056\" to=\"30005099\"/>\r\n    <row from=\"30001057\" to=\"30001058\"/>\r\n    <row from=\"30001057\" to=\"30001059\"/>\r\n    <row from=\"30001057\" to=\"30002851\"/>\r\n    <row from=\"30001058\" to=\"30001057\"/>\r\n    <row from=\"30001058\" to=\"30001061\"/>\r\n    <row from=\"30001059\" to=\"30001057\"/>\r\n    <row from=\"30001059\" to=\"30001060\"/>\r\n    <row from=\"30001060\" to=\"30001059\"/>\r\n    <row from=\"30001060\" to=\"30001062\"/>\r\n    <row from=\"30001061\" to=\"30001058\"/>\r\n    <row from=\"30001062\" to=\"30001060\"/>\r\n    <row from=\"30001062\" to=\"30001127\"/>\r\n    <row from=\"30001062\" to=\"30001140\"/>\r\n    <row from=\"30001063\" to=\"30001064\"/>\r\n    <row from=\"30001063\" to=\"30001065\"/>\r\n    <row from=\"30001063\" to=\"30001066\"/>\r\n    <row from=\"30001063\" to=\"30001146\"/>\r\n    <row from=\"30001064\" to=\"30001063\"/>\r\n    <row from=\"30001064\" to=\"30001065\"/>\r\n    <row from=\"30001064\" to=\"30001067\"/>\r\n    <row from=\"30001065\" to=\"30001063\"/>\r\n    <row from=\"30001065\" to=\"30001064\"/>\r\n    <row from=\"30001065\" to=\"30001068\"/>\r\n    <row from=\"30001066\" to=\"30001051\"/>\r\n    <row from=\"30001066\" to=\"30001063\"/>\r\n    <row from=\"30001066\" to=\"30001102\"/>\r\n    <row from=\"30001067\" to=\"30001064\"/>\r\n    <row from=\"30001068\" to=\"30001065\"/>\r\n    <row from=\"30001068\" to=\"30003183\"/>\r\n    <row from=\"30001068\" to=\"30005094\"/>\r\n    <row from=\"30001069\" to=\"30001070\"/>\r\n    <row from=\"30001069\" to=\"30001071\"/>\r\n    <row from=\"30001069\" to=\"30001073\"/>\r\n    <row from=\"30001069\" to=\"30001079\"/>\r\n    <row from=\"30001070\" to=\"30001069\"/>\r\n    <row from=\"30001070\" to=\"30001103\"/>\r\n    <row from=\"30001071\" to=\"30001069\"/>\r\n    <row from=\"30001071\" to=\"30001072\"/>\r\n    <row from=\"30001071\" to=\"30001073\"/>\r\n    <row from=\"30001072\" to=\"30001071\"/>\r\n    <row from=\"30001073\" to=\"30001069\"/>\r\n    <row from=\"30001073\" to=\"30001071\"/>\r\n    <row from=\"30001073\" to=\"30001074\"/>\r\n    <row from=\"30001074\" to=\"30001073\"/>\r\n    <row from=\"30001074\" to=\"30001132\"/>\r\n    <row from=\"30001075\" to=\"30001076\"/>\r\n    <row from=\"30001075\" to=\"30001081\"/>\r\n    <row from=\"30001075\" to=\"30001117\"/>\r\n    <row from=\"30001076\" to=\"30001075\"/>\r\n    <row from=\"30001076\" to=\"30001081\"/>\r\n    <row from=\"30001076\" to=\"30001082\"/>\r\n    <row from=\"30001077\" to=\"30001078\"/>\r\n    <row from=\"30001077\" to=\"30001080\"/>\r\n    <row from=\"30001078\" to=\"30001077\"/>\r\n    <row from=\"30001078\" to=\"30001081\"/>\r\n    <row from=\"30001079\" to=\"30001069\"/>\r\n    <row from=\"30001079\" to=\"30001082\"/>\r\n    <row from=\"30001080\" to=\"30001077\"/>\r\n    <row from=\"30001080\" to=\"30005088\"/>\r\n    <row from=\"30001081\" to=\"30001075\"/>\r\n    <row from=\"30001081\" to=\"30001076\"/>\r\n    <row from=\"30001081\" to=\"30001078\"/>\r\n    <row from=\"30001082\" to=\"30001076\"/>\r\n    <row from=\"30001082\" to=\"30001079\"/>\r\n    <row from=\"30001082\" to=\"30001126\"/>\r\n    <row from=\"30001083\" to=\"30001084\"/>\r\n    <row from=\"30001083\" to=\"30001085\"/>\r\n    <row from=\"30001083\" to=\"30001086\"/>\r\n    <row from=\"30001083\" to=\"30001087\"/>\r\n    <row from=\"30001084\" to=\"30001083\"/>\r\n    <row from=\"30001084\" to=\"30001088\"/>\r\n    <row from=\"30001084\" to=\"30002850\"/>\r\n    <row from=\"30001085\" to=\"30001083\"/>\r\n    <row from=\"30001086\" to=\"30001083\"/>\r\n    <row from=\"30001086\" to=\"30001087\"/>\r\n    <row from=\"30001087\" to=\"30001083\"/>\r\n    <row from=\"30001087\" to=\"30001086\"/>\r\n    <row from=\"30001087\" to=\"30001130\"/>\r\n    <row from=\"30001088\" to=\"30001084\"/>\r\n    <row from=\"30001088\" to=\"30001089\"/>\r\n    <row from=\"30001088\" to=\"30001090\"/>\r\n    <row from=\"30001089\" to=\"30001088\"/>\r\n    <row from=\"30001089\" to=\"30001090\"/>\r\n    <row from=\"30001090\" to=\"30001088\"/>\r\n    <row from=\"30001090\" to=\"30001089\"/>\r\n    <row from=\"30001091\" to=\"30001056\"/>\r\n    <row from=\"30001091\" to=\"30001092\"/>\r\n    <row from=\"30001091\" to=\"30001093\"/>\r\n    <row from=\"30001091\" to=\"30002309\"/>\r\n    <row from=\"30001092\" to=\"30001091\"/>\r\n    <row from=\"30001092\" to=\"30001095\"/>\r\n    <row from=\"30001092\" to=\"30002309\"/>\r\n    <row from=\"30001093\" to=\"30001091\"/>\r\n    <row from=\"30001093\" to=\"30001094\"/>\r\n    <row from=\"30001094\" to=\"30001093\"/>\r\n    <row from=\"30001094\" to=\"30001096\"/>\r\n    <row from=\"30001095\" to=\"30001092\"/>\r\n    <row from=\"30001096\" to=\"30001094\"/>\r\n    <row from=\"30001097\" to=\"30001098\"/>\r\n    <row from=\"30001097\" to=\"30002837\"/>\r\n    <row from=\"30001098\" to=\"30001097\"/>\r\n    <row from=\"30001098\" to=\"30001099\"/>\r\n    <row from=\"30001098\" to=\"30001100\"/>\r\n    <row from=\"30001099\" to=\"30001098\"/>\r\n    <row from=\"30001099\" to=\"30001100\"/>\r\n    <row from=\"30001100\" to=\"30001098\"/>\r\n    <row from=\"30001100\" to=\"30001099\"/>\r\n    <row from=\"30001100\" to=\"30001101\"/>\r\n    <row from=\"30001100\" to=\"30001102\"/>\r\n    <row from=\"30001101\" to=\"30001100\"/>\r\n    <row from=\"30001101\" to=\"30001102\"/>\r\n    <row from=\"30001102\" to=\"30001066\"/>\r\n    <row from=\"30001102\" to=\"30001100\"/>\r\n    <row from=\"30001102\" to=\"30001101\"/>\r\n    <row from=\"30001103\" to=\"30001070\"/>\r\n    <row from=\"30001103\" to=\"30001104\"/>\r\n    <row from=\"30001104\" to=\"30001103\"/>\r\n    <row from=\"30001104\" to=\"30001105\"/>\r\n    <row from=\"30001104\" to=\"30001106\"/>\r\n    <row from=\"30001104\" to=\"30001108\"/>\r\n    <row from=\"30001105\" to=\"30001104\"/>\r\n    <row from=\"30001106\" to=\"30001104\"/>\r\n    <row from=\"30001106\" to=\"30001107\"/>\r\n    <row from=\"30001107\" to=\"30001106\"/>\r\n    <row from=\"30001107\" to=\"30001108\"/>\r\n    <row from=\"30001107\" to=\"30005147\"/>\r\n    <row from=\"30001108\" to=\"30001104\"/>\r\n    <row from=\"30001108\" to=\"30001107\"/>\r\n    <row from=\"30001109\" to=\"30001055\"/>\r\n    <row from=\"30001109\" to=\"30001110\"/>\r\n    <row from=\"30001109\" to=\"30001113\"/>\r\n    <row from=\"30001109\" to=\"30001115\"/>\r\n    <row from=\"30001110\" to=\"30001109\"/>\r\n    <row from=\"30001110\" to=\"30001111\"/>\r\n    <row from=\"30001110\" to=\"30001112\"/>\r\n    <row from=\"30001111\" to=\"30001110\"/>\r\n    <row from=\"30001111\" to=\"30002346\"/>\r\n    <row from=\"30001112\" to=\"30001110\"/>\r\n    <row from=\"30001112\" to=\"30001114\"/>\r\n    <row from=\"30001112\" to=\"30001116\"/>\r\n    <row from=\"30001113\" to=\"30001109\"/>\r\n    <row from=\"30001113\" to=\"30001115\"/>\r\n    <row from=\"30001114\" to=\"30001112\"/>\r\n    <row from=\"30001114\" to=\"30001551\"/>\r\n    <row from=\"30001115\" to=\"30001109\"/>\r\n    <row from=\"30001115\" to=\"30001113\"/>\r\n    <row from=\"30001116\" to=\"30001112\"/>\r\n    <row from=\"30001117\" to=\"30001075\"/>\r\n    <row from=\"30001117\" to=\"30001118\"/>\r\n    <row from=\"30001117\" to=\"30001119\"/>\r\n    <row from=\"30001117\" to=\"30001124\"/>\r\n    <row from=\"30001118\" to=\"30001117\"/>\r\n    <row from=\"30001118\" to=\"30001124\"/>\r\n    <row from=\"30001118\" to=\"30001125\"/>\r\n    <row from=\"30001119\" to=\"30001117\"/>\r\n    <row from=\"30001119\" to=\"30001120\"/>\r\n    <row from=\"30001119\" to=\"30001122\"/>\r\n    <row from=\"30001120\" to=\"30001119\"/>\r\n    <row from=\"30001120\" to=\"30001121\"/>\r\n    <row from=\"30001120\" to=\"30001122\"/>\r\n    <row from=\"30001120\" to=\"30001123\"/>\r\n    <row from=\"30001121\" to=\"30001120\"/>\r\n    <row from=\"30001121\" to=\"30001122\"/>\r\n    <row from=\"30001121\" to=\"30001123\"/>\r\n    <row from=\"30001122\" to=\"30001119\"/>\r\n    <row from=\"30001122\" to=\"30001120\"/>\r\n    <row from=\"30001122\" to=\"30001121\"/>\r\n    <row from=\"30001123\" to=\"30001120\"/>\r\n    <row from=\"30001123\" to=\"30001121\"/>\r\n    <row from=\"30001124\" to=\"30001117\"/>\r\n    <row from=\"30001124\" to=\"30001118\"/>\r\n    <row from=\"30001125\" to=\"30001118\"/>\r\n    <row from=\"30001126\" to=\"30001082\"/>\r\n    <row from=\"30001126\" to=\"30001127\"/>\r\n    <row from=\"30001126\" to=\"30001130\"/>\r\n    <row from=\"30001126\" to=\"30001131\"/>\r\n    <row from=\"30001127\" to=\"30001062\"/>\r\n    <row from=\"30001127\" to=\"30001126\"/>\r\n    <row from=\"30001127\" to=\"30001128\"/>\r\n    <row from=\"30001128\" to=\"30001127\"/>\r\n    <row from=\"30001128\" to=\"30001129\"/>\r\n    <row from=\"30001129\" to=\"30001128\"/>\r\n    <row from=\"30001130\" to=\"30001087\"/>\r\n    <row from=\"30001130\" to=\"30001126\"/>\r\n    <row from=\"30001130\" to=\"30001131\"/>\r\n    <row from=\"30001131\" to=\"30001126\"/>\r\n    <row from=\"30001131\" to=\"30001130\"/>\r\n    <row from=\"30001132\" to=\"30001074\"/>\r\n    <row from=\"30001132\" to=\"30001133\"/>\r\n    <row from=\"30001132\" to=\"30001134\"/>\r\n    <row from=\"30001132\" to=\"30001135\"/>\r\n    <row from=\"30001132\" to=\"30001137\"/>\r\n    <row from=\"30001132\" to=\"30003186\"/>\r\n    <row from=\"30001133\" to=\"30001132\"/>\r\n    <row from=\"30001133\" to=\"30001134\"/>\r\n    <row from=\"30001133\" to=\"30001135\"/>\r\n    <row from=\"30001134\" to=\"30001132\"/>\r\n    <row from=\"30001134\" to=\"30001133\"/>\r\n    <row from=\"30001134\" to=\"30001137\"/>\r\n    <row from=\"30001135\" to=\"30001132\"/>\r\n    <row from=\"30001135\" to=\"30001133\"/>\r\n    <row from=\"30001135\" to=\"30001136\"/>\r\n    <row from=\"30001135\" to=\"30001139\"/>\r\n    <row from=\"30001135\" to=\"30003186\"/>\r\n    <row from=\"30001136\" to=\"30001135\"/>\r\n    <row from=\"30001136\" to=\"30001138\"/>\r\n    <row from=\"30001137\" to=\"30001132\"/>\r\n    <row from=\"30001137\" to=\"30001134\"/>\r\n    <row from=\"30001137\" to=\"30001138\"/>\r\n    <row from=\"30001138\" to=\"30001136\"/>\r\n    <row from=\"30001138\" to=\"30001137\"/>\r\n    <row from=\"30001138\" to=\"30001139\"/>\r\n    <row from=\"30001139\" to=\"30001135\"/>\r\n    <row from=\"30001139\" to=\"30001138\"/>\r\n    <row from=\"30001140\" to=\"30001062\"/>\r\n    <row from=\"30001140\" to=\"30001141\"/>\r\n    <row from=\"30001140\" to=\"30001142\"/>\r\n    <row from=\"30001140\" to=\"30001143\"/>\r\n    <row from=\"30001141\" to=\"30001140\"/>\r\n    <row from=\"30001141\" to=\"30001142\"/>\r\n    <row from=\"30001141\" to=\"30001143\"/>\r\n    <row from=\"30001141\" to=\"30001144\"/>\r\n    <row from=\"30001142\" to=\"30001140\"/>\r\n    <row from=\"30001142\" to=\"30001141\"/>\r\n    <row from=\"30001142\" to=\"30001144\"/>\r\n    <row from=\"30001143\" to=\"30001140\"/>\r\n    <row from=\"30001143\" to=\"30001141\"/>\r\n    <row from=\"30001143\" to=\"30001145\"/>\r\n    <row from=\"30001143\" to=\"30001146\"/>\r\n    <row from=\"30001144\" to=\"30001141\"/>\r\n    <row from=\"30001144\" to=\"30001142\"/>\r\n    <row from=\"30001144\" to=\"30001146\"/>\r\n    <row from=\"30001145\" to=\"30001143\"/>\r\n    <row from=\"30001146\" to=\"30001063\"/>\r\n    <row from=\"30001146\" to=\"30001143\"/>\r\n    <row from=\"30001146\" to=\"30001144\"/>\r\n    <row from=\"30001147\" to=\"30001148\"/>\r\n    <row from=\"30001147\" to=\"30003189\"/>\r\n    <row from=\"30001148\" to=\"30001147\"/>\r\n    <row from=\"30001148\" to=\"30001149\"/>\r\n    <row from=\"30001148\" to=\"30001150\"/>\r\n    <row from=\"30001149\" to=\"30001148\"/>\r\n    <row from=\"30001150\" to=\"30001148\"/>\r\n    <row from=\"30001150\" to=\"30001151\"/>\r\n    <row from=\"30001151\" to=\"30001150\"/>\r\n    <row from=\"30001151\" to=\"30001152\"/>\r\n    <row from=\"30001152\" to=\"30001151\"/>\r\n    <row from=\"30001153\" to=\"30001158\"/>\r\n    <row from=\"30001153\" to=\"30003709\"/>\r\n    <row from=\"30001154\" to=\"30001157\"/>\r\n    <row from=\"30001154\" to=\"30001160\"/>\r\n    <row from=\"30001155\" to=\"30001009\"/>\r\n    <row from=\"30001155\" to=\"30001156\"/>\r\n    <row from=\"30001155\" to=\"30001157\"/>\r\n    <row from=\"30001156\" to=\"30001155\"/>\r\n    <row from=\"30001156\" to=\"30001162\"/>\r\n    <row from=\"30001157\" to=\"30001154\"/>\r\n    <row from=\"30001157\" to=\"30001155\"/>\r\n    <row from=\"30001157\" to=\"30001163\"/>\r\n    <row from=\"30001158\" to=\"30001153\"/>\r\n    <row from=\"30001158\" to=\"30001160\"/>\r\n    <row from=\"30001158\" to=\"30001161\"/>\r\n    <row from=\"30001159\" to=\"30001162\"/>\r\n    <row from=\"30001159\" to=\"30001197\"/>\r\n    <row from=\"30001159\" to=\"30001252\"/>\r\n    <row from=\"30001160\" to=\"30001154\"/>\r\n    <row from=\"30001160\" to=\"30001158\"/>\r\n    <row from=\"30001161\" to=\"30001158\"/>\r\n    <row from=\"30001161\" to=\"30003883\"/>\r\n    <row from=\"30001162\" to=\"30001156\"/>\r\n    <row from=\"30001162\" to=\"30001159\"/>\r\n    <row from=\"30001162\" to=\"30001198\"/>\r\n    <row from=\"30001163\" to=\"30001157\"/>\r\n    <row from=\"30001163\" to=\"30001165\"/>\r\n    <row from=\"30001164\" to=\"30001166\"/>\r\n    <row from=\"30001164\" to=\"30001167\"/>\r\n    <row from=\"30001164\" to=\"30001168\"/>\r\n    <row from=\"30001165\" to=\"30001163\"/>\r\n    <row from=\"30001165\" to=\"30001167\"/>\r\n    <row from=\"30001166\" to=\"30001164\"/>\r\n    <row from=\"30001166\" to=\"30001167\"/>\r\n    <row from=\"30001166\" to=\"30002118\"/>\r\n    <row from=\"30001167\" to=\"30001164\"/>\r\n    <row from=\"30001167\" to=\"30001165\"/>\r\n    <row from=\"30001167\" to=\"30001166\"/>\r\n    <row from=\"30001167\" to=\"30001169\"/>\r\n    <row from=\"30001168\" to=\"30001164\"/>\r\n    <row from=\"30001168\" to=\"30001169\"/>\r\n    <row from=\"30001168\" to=\"30001171\"/>\r\n    <row from=\"30001168\" to=\"30001194\"/>\r\n    <row from=\"30001169\" to=\"30001167\"/>\r\n    <row from=\"30001169\" to=\"30001168\"/>\r\n    <row from=\"30001169\" to=\"30001178\"/>\r\n    <row from=\"30001170\" to=\"30001050\"/>\r\n    <row from=\"30001170\" to=\"30001171\"/>\r\n    <row from=\"30001170\" to=\"30001172\"/>\r\n    <row from=\"30001171\" to=\"30001168\"/>\r\n    <row from=\"30001171\" to=\"30001170\"/>\r\n    <row from=\"30001171\" to=\"30001173\"/>\r\n    <row from=\"30001171\" to=\"30001175\"/>\r\n    <row from=\"30001172\" to=\"30001170\"/>\r\n    <row from=\"30001172\" to=\"30001174\"/>\r\n    <row from=\"30001172\" to=\"30001175\"/>\r\n    <row from=\"30001173\" to=\"30001171\"/>\r\n    <row from=\"30001173\" to=\"30001182\"/>\r\n    <row from=\"30001174\" to=\"30001172\"/>\r\n    <row from=\"30001175\" to=\"30001171\"/>\r\n    <row from=\"30001175\" to=\"30001172\"/>\r\n    <row from=\"30001176\" to=\"30001177\"/>\r\n    <row from=\"30001176\" to=\"30001178\"/>\r\n    <row from=\"30001177\" to=\"30001176\"/>\r\n    <row from=\"30001177\" to=\"30001179\"/>\r\n    <row from=\"30001178\" to=\"30001169\"/>\r\n    <row from=\"30001178\" to=\"30001176\"/>\r\n    <row from=\"30001179\" to=\"30001177\"/>\r\n    <row from=\"30001179\" to=\"30001180\"/>\r\n    <row from=\"30001180\" to=\"30001179\"/>\r\n    <row from=\"30001180\" to=\"30001181\"/>\r\n    <row from=\"30001181\" to=\"30001180\"/>\r\n    <row from=\"30001181\" to=\"30001205\"/>\r\n    <row from=\"30001182\" to=\"30001173\"/>\r\n    <row from=\"30001182\" to=\"30001183\"/>\r\n    <row from=\"30001182\" to=\"30001184\"/>\r\n    <row from=\"30001182\" to=\"30001185\"/>\r\n    <row from=\"30001183\" to=\"30001182\"/>\r\n    <row from=\"30001183\" to=\"30001184\"/>\r\n    <row from=\"30001183\" to=\"30001187\"/>\r\n    <row from=\"30001184\" to=\"30001182\"/>\r\n    <row from=\"30001184\" to=\"30001183\"/>\r\n    <row from=\"30001184\" to=\"30001185\"/>\r\n    <row from=\"30001185\" to=\"30001182\"/>\r\n    <row from=\"30001185\" to=\"30001184\"/>\r\n    <row from=\"30001185\" to=\"30001186\"/>\r\n    <row from=\"30001186\" to=\"30001185\"/>\r\n    <row from=\"30001187\" to=\"30001183\"/>\r\n    <row from=\"30001188\" to=\"30001193\"/>\r\n    <row from=\"30001188\" to=\"30001194\"/>\r\n    <row from=\"30001189\" to=\"30001191\"/>\r\n    <row from=\"30001189\" to=\"30001194\"/>\r\n    <row from=\"30001190\" to=\"30001192\"/>\r\n    <row from=\"30001190\" to=\"30001195\"/>\r\n    <row from=\"30001191\" to=\"30001189\"/>\r\n    <row from=\"30001191\" to=\"30001195\"/>\r\n    <row from=\"30001192\" to=\"30001190\"/>\r\n    <row from=\"30001192\" to=\"30001193\"/>\r\n    <row from=\"30001192\" to=\"30001196\"/>\r\n    <row from=\"30001193\" to=\"30001188\"/>\r\n    <row from=\"30001193\" to=\"30001192\"/>\r\n    <row from=\"30001193\" to=\"30001197\"/>\r\n    <row from=\"30001194\" to=\"30001168\"/>\r\n    <row from=\"30001194\" to=\"30001188\"/>\r\n    <row from=\"30001194\" to=\"30001189\"/>\r\n    <row from=\"30001195\" to=\"30001190\"/>\r\n    <row from=\"30001195\" to=\"30001191\"/>\r\n    <row from=\"30001196\" to=\"30001192\"/>\r\n    <row from=\"30001196\" to=\"30004808\"/>\r\n    <row from=\"30001197\" to=\"30001159\"/>\r\n    <row from=\"30001197\" to=\"30001193\"/>\r\n    <row from=\"30001198\" to=\"30001162\"/>\r\n    <row from=\"30001198\" to=\"30001199\"/>\r\n    <row from=\"30001198\" to=\"30001203\"/>\r\n    <row from=\"30001198\" to=\"30001204\"/>\r\n    <row from=\"30001199\" to=\"30001198\"/>\r\n    <row from=\"30001199\" to=\"30001200\"/>\r\n    <row from=\"30001199\" to=\"30001201\"/>\r\n    <row from=\"30001199\" to=\"30001202\"/>\r\n    <row from=\"30001200\" to=\"30001199\"/>\r\n    <row from=\"30001200\" to=\"30001201\"/>\r\n    <row from=\"30001200\" to=\"30001204\"/>\r\n    <row from=\"30001200\" to=\"30001831\"/>\r\n    <row from=\"30001201\" to=\"30001199\"/>\r\n    <row from=\"30001201\" to=\"30001200\"/>\r\n    <row from=\"30001202\" to=\"30001199\"/>\r\n    <row from=\"30001202\" to=\"30001219\"/>\r\n    <row from=\"30001203\" to=\"30001198\"/>\r\n    <row from=\"30001203\" to=\"30001213\"/>\r\n    <row from=\"30001204\" to=\"30001198\"/>\r\n    <row from=\"30001204\" to=\"30001200\"/>\r\n    <row from=\"30001205\" to=\"30001181\"/>\r\n    <row from=\"30001205\" to=\"30001206\"/>\r\n    <row from=\"30001205\" to=\"30001207\"/>\r\n    <row from=\"30001205\" to=\"30001209\"/>\r\n    <row from=\"30001206\" to=\"30001205\"/>\r\n    <row from=\"30001206\" to=\"30001208\"/>\r\n    <row from=\"30001206\" to=\"30001231\"/>\r\n    <row from=\"30001207\" to=\"30001205\"/>\r\n    <row from=\"30001208\" to=\"30001206\"/>\r\n    <row from=\"30001209\" to=\"30001205\"/>\r\n    <row from=\"30001209\" to=\"30001210\"/>\r\n    <row from=\"30001210\" to=\"30001209\"/>\r\n    <row from=\"30001210\" to=\"30001211\"/>\r\n    <row from=\"30001210\" to=\"30001212\"/>\r\n    <row from=\"30001211\" to=\"30001210\"/>\r\n    <row from=\"30001212\" to=\"30001210\"/>\r\n    <row from=\"30001213\" to=\"30001203\"/>\r\n    <row from=\"30001213\" to=\"30001214\"/>\r\n    <row from=\"30001214\" to=\"30001213\"/>\r\n    <row from=\"30001214\" to=\"30001215\"/>\r\n    <row from=\"30001214\" to=\"30001216\"/>\r\n    <row from=\"30001214\" to=\"30001218\"/>\r\n    <row from=\"30001215\" to=\"30001214\"/>\r\n    <row from=\"30001215\" to=\"30001216\"/>\r\n    <row from=\"30001216\" to=\"30001214\"/>\r\n    <row from=\"30001216\" to=\"30001215\"/>\r\n    <row from=\"30001216\" to=\"30001217\"/>\r\n    <row from=\"30001216\" to=\"30001218\"/>\r\n    <row from=\"30001217\" to=\"30001216\"/>\r\n    <row from=\"30001217\" to=\"30002583\"/>\r\n    <row from=\"30001218\" to=\"30001214\"/>\r\n    <row from=\"30001218\" to=\"30001216\"/>\r\n    <row from=\"30001219\" to=\"30001202\"/>\r\n    <row from=\"30001219\" to=\"30001220\"/>\r\n    <row from=\"30001220\" to=\"30001219\"/>\r\n    <row from=\"30001220\" to=\"30001221\"/>\r\n    <row from=\"30001220\" to=\"30001222\"/>\r\n    <row from=\"30001220\" to=\"30001224\"/>\r\n    <row from=\"30001221\" to=\"30001220\"/>\r\n    <row from=\"30001221\" to=\"30001222\"/>\r\n    <row from=\"30001222\" to=\"30001220\"/>\r\n    <row from=\"30001222\" to=\"30001221\"/>\r\n    <row from=\"30001222\" to=\"30001223\"/>\r\n    <row from=\"30001223\" to=\"30001222\"/>\r\n    <row from=\"30001223\" to=\"30001238\"/>\r\n    <row from=\"30001224\" to=\"30001220\"/>\r\n    <row from=\"30001224\" to=\"30001225\"/>\r\n    <row from=\"30001225\" to=\"30001224\"/>\r\n    <row from=\"30001225\" to=\"30001241\"/>\r\n    <row from=\"30001226\" to=\"30001227\"/>\r\n    <row from=\"30001226\" to=\"30003707\"/>\r\n    <row from=\"30001227\" to=\"30001226\"/>\r\n    <row from=\"30001227\" to=\"30001228\"/>\r\n    <row from=\"30001227\" to=\"30001234\"/>\r\n    <row from=\"30001228\" to=\"30001227\"/>\r\n    <row from=\"30001228\" to=\"30001229\"/>\r\n    <row from=\"30001228\" to=\"30001230\"/>\r\n    <row from=\"30001229\" to=\"30001228\"/>\r\n    <row from=\"30001230\" to=\"30001228\"/>\r\n    <row from=\"30001230\" to=\"30001231\"/>\r\n    <row from=\"30001231\" to=\"30001206\"/>\r\n    <row from=\"30001231\" to=\"30001230\"/>\r\n    <row from=\"30001232\" to=\"30001233\"/>\r\n    <row from=\"30001232\" to=\"30003715\"/>\r\n    <row from=\"30001233\" to=\"30001232\"/>\r\n    <row from=\"30001233\" to=\"30001234\"/>\r\n    <row from=\"30001233\" to=\"30001235\"/>\r\n    <row from=\"30001234\" to=\"30001227\"/>\r\n    <row from=\"30001234\" to=\"30001233\"/>\r\n    <row from=\"30001234\" to=\"30003722\"/>\r\n    <row from=\"30001235\" to=\"30001233\"/>\r\n    <row from=\"30001235\" to=\"30001236\"/>\r\n    <row from=\"30001235\" to=\"30001237\"/>\r\n    <row from=\"30001236\" to=\"30001235\"/>\r\n    <row from=\"30001236\" to=\"30003721\"/>\r\n    <row from=\"30001236\" to=\"30003781\"/>\r\n    <row from=\"30001237\" to=\"30001235\"/>\r\n    <row from=\"30001238\" to=\"30001223\"/>\r\n    <row from=\"30001238\" to=\"30001239\"/>\r\n    <row from=\"30001239\" to=\"30001238\"/>\r\n    <row from=\"30001239\" to=\"30001240\"/>\r\n    <row from=\"30001239\" to=\"30001241\"/>\r\n    <row from=\"30001240\" to=\"30001239\"/>\r\n    <row from=\"30001240\" to=\"30001242\"/>\r\n    <row from=\"30001241\" to=\"30001225\"/>\r\n    <row from=\"30001241\" to=\"30001239\"/>\r\n    <row from=\"30001242\" to=\"30001240\"/>\r\n    <row from=\"30001242\" to=\"30001243\"/>\r\n    <row from=\"30001243\" to=\"30001242\"/>\r\n    <row from=\"30001243\" to=\"30001244\"/>\r\n    <row from=\"30001244\" to=\"30001243\"/>\r\n    <row from=\"30001244\" to=\"30001245\"/>\r\n    <row from=\"30001245\" to=\"30001244\"/>\r\n    <row from=\"30001245\" to=\"30001246\"/>\r\n    <row from=\"30001246\" to=\"30001245\"/>\r\n    <row from=\"30001246\" to=\"30001247\"/>\r\n    <row from=\"30001246\" to=\"30001248\"/>\r\n    <row from=\"30001247\" to=\"30001246\"/>\r\n    <row from=\"30001247\" to=\"30001248\"/>\r\n    <row from=\"30001247\" to=\"30001249\"/>\r\n    <row from=\"30001248\" to=\"30001246\"/>\r\n    <row from=\"30001248\" to=\"30001247\"/>\r\n    <row from=\"30001248\" to=\"30001249\"/>\r\n    <row from=\"30001248\" to=\"30001252\"/>\r\n    <row from=\"30001249\" to=\"30001247\"/>\r\n    <row from=\"30001249\" to=\"30001248\"/>\r\n    <row from=\"30001249\" to=\"30001250\"/>\r\n    <row from=\"30001249\" to=\"30001251\"/>\r\n    <row from=\"30001250\" to=\"30001249\"/>\r\n    <row from=\"30001250\" to=\"30001251\"/>\r\n    <row from=\"30001251\" to=\"30001249\"/>\r\n    <row from=\"30001251\" to=\"30001250\"/>\r\n    <row from=\"30001251\" to=\"30001253\"/>\r\n    <row from=\"30001252\" to=\"30001159\"/>\r\n    <row from=\"30001252\" to=\"30001248\"/>\r\n    <row from=\"30001253\" to=\"30001251\"/>\r\n    <row from=\"30001253\" to=\"30001254\"/>\r\n    <row from=\"30001254\" to=\"30001253\"/>\r\n    <row from=\"30001254\" to=\"30001255\"/>\r\n    <row from=\"30001254\" to=\"30001256\"/>\r\n    <row from=\"30001255\" to=\"30001254\"/>\r\n    <row from=\"30001255\" to=\"30001256\"/>\r\n    <row from=\"30001255\" to=\"30001257\"/>\r\n    <row from=\"30001256\" to=\"30001254\"/>\r\n    <row from=\"30001256\" to=\"30001255\"/>\r\n    <row from=\"30001256\" to=\"30001258\"/>\r\n    <row from=\"30001257\" to=\"30001255\"/>\r\n    <row from=\"30001257\" to=\"30001258\"/>\r\n    <row from=\"30001258\" to=\"30001256\"/>\r\n    <row from=\"30001258\" to=\"30001257\"/>\r\n    <row from=\"30001258\" to=\"30001259\"/>\r\n    <row from=\"30001259\" to=\"30001258\"/>\r\n    <row from=\"30001259\" to=\"30001260\"/>\r\n    <row from=\"30001260\" to=\"30001259\"/>\r\n    <row from=\"30001260\" to=\"30004009\"/>\r\n    <row from=\"30001261\" to=\"30000858\"/>\r\n    <row from=\"30001261\" to=\"30001262\"/>\r\n    <row from=\"30001262\" to=\"30001261\"/>\r\n    <row from=\"30001262\" to=\"30001263\"/>\r\n    <row from=\"30001262\" to=\"30001264\"/>\r\n    <row from=\"30001263\" to=\"30001262\"/>\r\n    <row from=\"30001263\" to=\"30001264\"/>\r\n    <row from=\"30001263\" to=\"30001265\"/>\r\n    <row from=\"30001264\" to=\"30001262\"/>\r\n    <row from=\"30001264\" to=\"30001263\"/>\r\n    <row from=\"30001264\" to=\"30001267\"/>\r\n    <row from=\"30001265\" to=\"30001263\"/>\r\n    <row from=\"30001265\" to=\"30001266\"/>\r\n    <row from=\"30001266\" to=\"30001265\"/>\r\n    <row from=\"30001266\" to=\"30002889\"/>\r\n    <row from=\"30001267\" to=\"30001264\"/>\r\n    <row from=\"30001267\" to=\"30001268\"/>\r\n    <row from=\"30001268\" to=\"30001267\"/>\r\n    <row from=\"30001268\" to=\"30001269\"/>\r\n    <row from=\"30001269\" to=\"30001268\"/>\r\n    <row from=\"30001269\" to=\"30001270\"/>\r\n    <row from=\"30001269\" to=\"30001273\"/>\r\n    <row from=\"30001269\" to=\"30100000\"/>\r\n    <row from=\"30001270\" to=\"30001269\"/>\r\n    <row from=\"30001270\" to=\"30001271\"/>\r\n    <row from=\"30001270\" to=\"30001273\"/>\r\n    <row from=\"30001271\" to=\"30001270\"/>\r\n    <row from=\"30001271\" to=\"30001272\"/>\r\n    <row from=\"30001272\" to=\"30001271\"/>\r\n    <row from=\"30001272\" to=\"30001273\"/>\r\n    <row from=\"30001272\" to=\"30001274\"/>\r\n    <row from=\"30001272\" to=\"30001292\"/>\r\n    <row from=\"30001273\" to=\"30001269\"/>\r\n    <row from=\"30001273\" to=\"30001270\"/>\r\n    <row from=\"30001273\" to=\"30001272\"/>\r\n    <row from=\"30001273\" to=\"30001280\"/>\r\n    <row from=\"30001273\" to=\"30001286\"/>\r\n    <row from=\"30001274\" to=\"30001272\"/>\r\n    <row from=\"30001274\" to=\"30001275\"/>\r\n    <row from=\"30001275\" to=\"30001274\"/>\r\n    <row from=\"30001275\" to=\"30001276\"/>\r\n    <row from=\"30001276\" to=\"30001275\"/>\r\n    <row from=\"30001276\" to=\"30001277\"/>\r\n    <row from=\"30001277\" to=\"30001276\"/>\r\n    <row from=\"30001277\" to=\"30001278\"/>\r\n    <row from=\"30001278\" to=\"30001277\"/>\r\n    <row from=\"30001278\" to=\"30001279\"/>\r\n    <row from=\"30001279\" to=\"30001278\"/>\r\n    <row from=\"30001280\" to=\"30001273\"/>\r\n    <row from=\"30001280\" to=\"30001281\"/>\r\n    <row from=\"30001280\" to=\"30001282\"/>\r\n    <row from=\"30001280\" to=\"30001283\"/>\r\n    <row from=\"30001280\" to=\"30001284\"/>\r\n    <row from=\"30001281\" to=\"30000872\"/>\r\n    <row from=\"30001281\" to=\"30001280\"/>\r\n    <row from=\"30001282\" to=\"30001280\"/>\r\n    <row from=\"30001282\" to=\"30001283\"/>\r\n    <row from=\"30001282\" to=\"30001284\"/>\r\n    <row from=\"30001283\" to=\"30001280\"/>\r\n    <row from=\"30001283\" to=\"30001282\"/>\r\n    <row from=\"30001283\" to=\"30001284\"/>\r\n    <row from=\"30001283\" to=\"30001285\"/>\r\n    <row from=\"30001284\" to=\"30001280\"/>\r\n    <row from=\"30001284\" to=\"30001282\"/>\r\n    <row from=\"30001284\" to=\"30001283\"/>\r\n    <row from=\"30001284\" to=\"30001285\"/>\r\n    <row from=\"30001285\" to=\"30001283\"/>\r\n    <row from=\"30001285\" to=\"30001284\"/>\r\n    <row from=\"30001286\" to=\"30001273\"/>\r\n    <row from=\"30001286\" to=\"30001287\"/>\r\n    <row from=\"30001286\" to=\"30001290\"/>\r\n    <row from=\"30001287\" to=\"30001286\"/>\r\n    <row from=\"30001287\" to=\"30001288\"/>\r\n    <row from=\"30001288\" to=\"30001287\"/>\r\n    <row from=\"30001288\" to=\"30001289\"/>\r\n    <row from=\"30001288\" to=\"30001300\"/>\r\n    <row from=\"30001289\" to=\"30001288\"/>\r\n    <row from=\"30001289\" to=\"30001290\"/>\r\n    <row from=\"30001290\" to=\"30001286\"/>\r\n    <row from=\"30001290\" to=\"30001289\"/>\r\n    <row from=\"30001290\" to=\"30001291\"/>\r\n    <row from=\"30001291\" to=\"30001290\"/>\r\n    <row from=\"30001292\" to=\"30001272\"/>\r\n    <row from=\"30001292\" to=\"30001293\"/>\r\n    <row from=\"30001292\" to=\"30001294\"/>\r\n    <row from=\"30001292\" to=\"30001296\"/>\r\n    <row from=\"30001292\" to=\"30001299\"/>\r\n    <row from=\"30001293\" to=\"30001292\"/>\r\n    <row from=\"30001293\" to=\"30001294\"/>\r\n    <row from=\"30001293\" to=\"30001295\"/>\r\n    <row from=\"30001294\" to=\"30001292\"/>\r\n    <row from=\"30001294\" to=\"30001293\"/>\r\n    <row from=\"30001295\" to=\"30001293\"/>\r\n    <row from=\"30001295\" to=\"30001296\"/>\r\n    <row from=\"30001295\" to=\"30001297\"/>\r\n    <row from=\"30001296\" to=\"30001292\"/>\r\n    <row from=\"30001296\" to=\"30001295\"/>\r\n    <row from=\"30001296\" to=\"30001299\"/>\r\n    <row from=\"30001297\" to=\"30001295\"/>\r\n    <row from=\"30001297\" to=\"30001298\"/>\r\n    <row from=\"30001298\" to=\"30001297\"/>\r\n    <row from=\"30001299\" to=\"30001292\"/>\r\n    <row from=\"30001299\" to=\"30001296\"/>\r\n    <row from=\"30001300\" to=\"30001288\"/>\r\n    <row from=\"30001300\" to=\"30001301\"/>\r\n    <row from=\"30001301\" to=\"30001300\"/>\r\n    <row from=\"30001301\" to=\"30001302\"/>\r\n    <row from=\"30001302\" to=\"30001301\"/>\r\n    <row from=\"30001302\" to=\"30001303\"/>\r\n    <row from=\"30001303\" to=\"30001302\"/>\r\n    <row from=\"30001303\" to=\"30001304\"/>\r\n    <row from=\"30001303\" to=\"30001324\"/>\r\n    <row from=\"30001304\" to=\"30001303\"/>\r\n    <row from=\"30001304\" to=\"30001305\"/>\r\n    <row from=\"30001305\" to=\"30001304\"/>\r\n    <row from=\"30001305\" to=\"30001306\"/>\r\n    <row from=\"30001305\" to=\"30001307\"/>\r\n    <row from=\"30001305\" to=\"30001315\"/>\r\n    <row from=\"30001306\" to=\"30001305\"/>\r\n    <row from=\"30001306\" to=\"30001307\"/>\r\n    <row from=\"30001306\" to=\"30004310\"/>\r\n    <row from=\"30001307\" to=\"30001305\"/>\r\n    <row from=\"30001307\" to=\"30001306\"/>\r\n    <row from=\"30001307\" to=\"30001308\"/>\r\n    <row from=\"30001308\" to=\"30001307\"/>\r\n    <row from=\"30001308\" to=\"30001309\"/>\r\n    <row from=\"30001309\" to=\"30001308\"/>\r\n    <row from=\"30001309\" to=\"30001310\"/>\r\n    <row from=\"30001309\" to=\"30001312\"/>\r\n    <row from=\"30001309\" to=\"30001314\"/>\r\n    <row from=\"30001310\" to=\"30001309\"/>\r\n    <row from=\"30001310\" to=\"30001311\"/>\r\n    <row from=\"30001310\" to=\"30001313\"/>\r\n    <row from=\"30001310\" to=\"30001337\"/>\r\n    <row from=\"30001311\" to=\"30001310\"/>\r\n    <row from=\"30001312\" to=\"30001309\"/>\r\n    <row from=\"30001312\" to=\"30004369\"/>\r\n    <row from=\"30001313\" to=\"30001310\"/>\r\n    <row from=\"30001314\" to=\"30001309\"/>\r\n    <row from=\"30001314\" to=\"30001331\"/>\r\n    <row from=\"30001315\" to=\"30001305\"/>\r\n    <row from=\"30001315\" to=\"30001316\"/>\r\n    <row from=\"30001315\" to=\"30001317\"/>\r\n    <row from=\"30001315\" to=\"30001322\"/>\r\n    <row from=\"30001316\" to=\"30001315\"/>\r\n    <row from=\"30001316\" to=\"30001318\"/>\r\n    <row from=\"30001316\" to=\"30001320\"/>\r\n    <row from=\"30001316\" to=\"30001321\"/>\r\n    <row from=\"30001317\" to=\"30001315\"/>\r\n    <row from=\"30001317\" to=\"30001321\"/>\r\n    <row from=\"30001318\" to=\"30001316\"/>\r\n    <row from=\"30001318\" to=\"30001319\"/>\r\n    <row from=\"30001319\" to=\"30001318\"/>\r\n    <row from=\"30001319\" to=\"30001320\"/>\r\n    <row from=\"30001319\" to=\"30001321\"/>\r\n    <row from=\"30001320\" to=\"30001316\"/>\r\n    <row from=\"30001320\" to=\"30001319\"/>\r\n    <row from=\"30001320\" to=\"30001321\"/>\r\n    <row from=\"30001321\" to=\"30001316\"/>\r\n    <row from=\"30001321\" to=\"30001317\"/>\r\n    <row from=\"30001321\" to=\"30001319\"/>\r\n    <row from=\"30001321\" to=\"30001320\"/>\r\n    <row from=\"30001321\" to=\"30001322\"/>\r\n    <row from=\"30001322\" to=\"30001315\"/>\r\n    <row from=\"30001322\" to=\"30001321\"/>\r\n    <row from=\"30001322\" to=\"30001323\"/>\r\n    <row from=\"30001322\" to=\"30001344\"/>\r\n    <row from=\"30001323\" to=\"30001322\"/>\r\n    <row from=\"30001323\" to=\"30001350\"/>\r\n    <row from=\"30001324\" to=\"30001303\"/>\r\n    <row from=\"30001324\" to=\"30001325\"/>\r\n    <row from=\"30001324\" to=\"30001326\"/>\r\n    <row from=\"30001325\" to=\"30001324\"/>\r\n    <row from=\"30001325\" to=\"30001327\"/>\r\n    <row from=\"30001325\" to=\"30001329\"/>\r\n    <row from=\"30001326\" to=\"30001324\"/>\r\n    <row from=\"30001327\" to=\"30001325\"/>\r\n    <row from=\"30001327\" to=\"30001328\"/>\r\n    <row from=\"30001327\" to=\"30001329\"/>\r\n    <row from=\"30001327\" to=\"30001330\"/>\r\n    <row from=\"30001328\" to=\"30001327\"/>\r\n    <row from=\"30001328\" to=\"30001329\"/>\r\n    <row from=\"30001329\" to=\"30001325\"/>\r\n    <row from=\"30001329\" to=\"30001327\"/>\r\n    <row from=\"30001329\" to=\"30001328\"/>\r\n    <row from=\"30001329\" to=\"30001330\"/>\r\n    <row from=\"30001330\" to=\"30001327\"/>\r\n    <row from=\"30001330\" to=\"30001329\"/>\r\n    <row from=\"30001330\" to=\"30005189\"/>\r\n    <row from=\"30001331\" to=\"30001314\"/>\r\n    <row from=\"30001331\" to=\"30001332\"/>\r\n    <row from=\"30001331\" to=\"30001333\"/>\r\n    <row from=\"30001332\" to=\"30001331\"/>\r\n    <row from=\"30001332\" to=\"30001334\"/>\r\n    <row from=\"30001333\" to=\"30001331\"/>\r\n    <row from=\"30001333\" to=\"30001336\"/>\r\n    <row from=\"30001334\" to=\"30001332\"/>\r\n    <row from=\"30001334\" to=\"30001335\"/>\r\n    <row from=\"30001335\" to=\"30001334\"/>\r\n    <row from=\"30001336\" to=\"30001333\"/>\r\n    <row from=\"30001336\" to=\"30002920\"/>\r\n    <row from=\"30001337\" to=\"30001310\"/>\r\n    <row from=\"30001337\" to=\"30001338\"/>\r\n    <row from=\"30001337\" to=\"30001339\"/>\r\n    <row from=\"30001337\" to=\"30001340\"/>\r\n    <row from=\"30001338\" to=\"30001337\"/>\r\n    <row from=\"30001338\" to=\"30001341\"/>\r\n    <row from=\"30001339\" to=\"30001337\"/>\r\n    <row from=\"30001340\" to=\"30001337\"/>\r\n    <row from=\"30001341\" to=\"30001338\"/>\r\n    <row from=\"30001341\" to=\"30001342\"/>\r\n    <row from=\"30001341\" to=\"30001343\"/>\r\n    <row from=\"30001342\" to=\"30001341\"/>\r\n    <row from=\"30001343\" to=\"30001341\"/>\r\n    <row from=\"30001344\" to=\"30001322\"/>\r\n    <row from=\"30001344\" to=\"30001345\"/>\r\n    <row from=\"30001344\" to=\"30001348\"/>\r\n    <row from=\"30001345\" to=\"30001344\"/>\r\n    <row from=\"30001345\" to=\"30001346\"/>\r\n    <row from=\"30001345\" to=\"30001347\"/>\r\n    <row from=\"30001345\" to=\"30001349\"/>\r\n    <row from=\"30001346\" to=\"30001345\"/>\r\n    <row from=\"30001346\" to=\"30001347\"/>\r\n    <row from=\"30001346\" to=\"30001348\"/>\r\n    <row from=\"30001346\" to=\"30003612\"/>\r\n    <row from=\"30001347\" to=\"30001345\"/>\r\n    <row from=\"30001347\" to=\"30001346\"/>\r\n    <row from=\"30001348\" to=\"30000896\"/>\r\n    <row from=\"30001348\" to=\"30001344\"/>\r\n    <row from=\"30001348\" to=\"30001346\"/>\r\n    <row from=\"30001348\" to=\"30001349\"/>\r\n    <row from=\"30001349\" to=\"30001345\"/>\r\n    <row from=\"30001349\" to=\"30001348\"/>\r\n    <row from=\"30001349\" to=\"30003657\"/>\r\n    <row from=\"30001350\" to=\"30001323\"/>\r\n    <row from=\"30001350\" to=\"30001351\"/>\r\n    <row from=\"30001350\" to=\"30001352\"/>\r\n    <row from=\"30001351\" to=\"30001350\"/>\r\n    <row from=\"30001351\" to=\"30001353\"/>\r\n    <row from=\"30001352\" to=\"30001350\"/>\r\n    <row from=\"30001353\" to=\"30001351\"/>\r\n    <row from=\"30001353\" to=\"30001354\"/>\r\n    <row from=\"30001353\" to=\"30001355\"/>\r\n    <row from=\"30001354\" to=\"30001353\"/>\r\n    <row from=\"30001355\" to=\"30001353\"/>\r\n    <row from=\"30001356\" to=\"30001358\"/>\r\n    <row from=\"30001356\" to=\"30001361\"/>\r\n    <row from=\"30001356\" to=\"30001388\"/>\r\n    <row from=\"30001357\" to=\"30001358\"/>\r\n    <row from=\"30001357\" to=\"30001359\"/>\r\n    <row from=\"30001357\" to=\"30001360\"/>\r\n    <row from=\"30001358\" to=\"30001356\"/>\r\n    <row from=\"30001358\" to=\"30001357\"/>\r\n    <row from=\"30001359\" to=\"30001357\"/>\r\n    <row from=\"30001360\" to=\"30001357\"/>\r\n    <row from=\"30001361\" to=\"30001356\"/>\r\n    <row from=\"30001361\" to=\"30001383\"/>\r\n    <row from=\"30001361\" to=\"30001394\"/>\r\n    <row from=\"30001362\" to=\"30001363\"/>\r\n    <row from=\"30001362\" to=\"30001374\"/>\r\n    <row from=\"30001362\" to=\"30001377\"/>\r\n    <row from=\"30001363\" to=\"30000142\"/>\r\n    <row from=\"30001363\" to=\"30001362\"/>\r\n    <row from=\"30001363\" to=\"30001364\"/>\r\n    <row from=\"30001363\" to=\"30001389\"/>\r\n    <row from=\"30001363\" to=\"30001393\"/>\r\n    <row from=\"30001363\" to=\"30001405\"/>\r\n    <row from=\"30001364\" to=\"30001363\"/>\r\n    <row from=\"30001364\" to=\"30001365\"/>\r\n    <row from=\"30001364\" to=\"30002753\"/>\r\n    <row from=\"30001364\" to=\"30021392\"/>\r\n    <row from=\"30001365\" to=\"30001364\"/>\r\n    <row from=\"30001365\" to=\"30001366\"/>\r\n    <row from=\"30001365\" to=\"30002753\"/>\r\n    <row from=\"30001366\" to=\"30001365\"/>\r\n    <row from=\"30001366\" to=\"30001367\"/>\r\n    <row from=\"30001366\" to=\"30001391\"/>\r\n    <row from=\"30001367\" to=\"30001366\"/>\r\n    <row from=\"30001367\" to=\"30001382\"/>\r\n    <row from=\"30001367\" to=\"30001443\"/>\r\n    <row from=\"30001368\" to=\"30001369\"/>\r\n    <row from=\"30001368\" to=\"30001370\"/>\r\n    <row from=\"30001368\" to=\"30001371\"/>\r\n    <row from=\"30001368\" to=\"30001389\"/>\r\n    <row from=\"30001368\" to=\"30001400\"/>\r\n    <row from=\"30001369\" to=\"30001368\"/>\r\n    <row from=\"30001369\" to=\"30001373\"/>\r\n    <row from=\"30001370\" to=\"30001368\"/>\r\n    <row from=\"30001370\" to=\"30001411\"/>\r\n    <row from=\"30001370\" to=\"30001412\"/>\r\n    <row from=\"30001371\" to=\"30001368\"/>\r\n    <row from=\"30001371\" to=\"30001415\"/>\r\n    <row from=\"30001372\" to=\"30000157\"/>\r\n    <row from=\"30001372\" to=\"30001445\"/>\r\n    <row from=\"30001373\" to=\"30001369\"/>\r\n    <row from=\"30001374\" to=\"30001362\"/>\r\n    <row from=\"30001374\" to=\"30001375\"/>\r\n    <row from=\"30001374\" to=\"30001376\"/>\r\n    <row from=\"30001374\" to=\"30001377\"/>\r\n    <row from=\"30001374\" to=\"30001389\"/>\r\n    <row from=\"30001374\" to=\"30001410\"/>\r\n    <row from=\"30001375\" to=\"30001374\"/>\r\n    <row from=\"30001375\" to=\"30001376\"/>\r\n    <row from=\"30001375\" to=\"30001378\"/>\r\n    <row from=\"30001375\" to=\"30001404\"/>\r\n    <row from=\"30001376\" to=\"30001374\"/>\r\n    <row from=\"30001376\" to=\"30001375\"/>\r\n    <row from=\"30001376\" to=\"30001379\"/>\r\n    <row from=\"30001376\" to=\"30002813\"/>\r\n    <row from=\"30001377\" to=\"30001362\"/>\r\n    <row from=\"30001377\" to=\"30001374\"/>\r\n    <row from=\"30001377\" to=\"30001379\"/>\r\n    <row from=\"30001377\" to=\"30002781\"/>\r\n    <row from=\"30001377\" to=\"30031407\"/>\r\n    <row from=\"30001378\" to=\"30001375\"/>\r\n    <row from=\"30001378\" to=\"30001392\"/>\r\n    <row from=\"30001378\" to=\"30011392\"/>\r\n    <row from=\"30001379\" to=\"30000138\"/>\r\n    <row from=\"30001379\" to=\"30000143\"/>\r\n    <row from=\"30001379\" to=\"30001376\"/>\r\n    <row from=\"30001379\" to=\"30001377\"/>\r\n    <row from=\"30001379\" to=\"30002752\"/>\r\n    <row from=\"30001379\" to=\"30041407\"/>\r\n    <row from=\"30001380\" to=\"30001382\"/>\r\n    <row from=\"30001380\" to=\"30001384\"/>\r\n    <row from=\"30001380\" to=\"30002754\"/>\r\n    <row from=\"30001381\" to=\"30002797\"/>\r\n    <row from=\"30001381\" to=\"30010141\"/>\r\n    <row from=\"30001382\" to=\"30001367\"/>\r\n    <row from=\"30001382\" to=\"30001380\"/>\r\n    <row from=\"30001382\" to=\"30001383\"/>\r\n    <row from=\"30001382\" to=\"30001384\"/>\r\n    <row from=\"30001383\" to=\"30001361\"/>\r\n    <row from=\"30001383\" to=\"30001382\"/>\r\n    <row from=\"30001383\" to=\"30001385\"/>\r\n    <row from=\"30001384\" to=\"30001380\"/>\r\n    <row from=\"30001384\" to=\"30001382\"/>\r\n    <row from=\"30001384\" to=\"30001385\"/>\r\n    <row from=\"30001385\" to=\"30001383\"/>\r\n    <row from=\"30001385\" to=\"30001384\"/>\r\n    <row from=\"30001386\" to=\"30001389\"/>\r\n    <row from=\"30001386\" to=\"30001391\"/>\r\n    <row from=\"30001387\" to=\"30001389\"/>\r\n    <row from=\"30001387\" to=\"30001390\"/>\r\n    <row from=\"30001388\" to=\"30001356\"/>\r\n    <row from=\"30001388\" to=\"30001391\"/>\r\n    <row from=\"30001388\" to=\"30001402\"/>\r\n    <row from=\"30001388\" to=\"30002758\"/>\r\n    <row from=\"30001389\" to=\"30001363\"/>\r\n    <row from=\"30001389\" to=\"30001368\"/>\r\n    <row from=\"30001389\" to=\"30001374\"/>\r\n    <row from=\"30001389\" to=\"30001386\"/>\r\n    <row from=\"30001389\" to=\"30001387\"/>\r\n    <row from=\"30001389\" to=\"30002754\"/>\r\n    <row from=\"30001390\" to=\"30001387\"/>\r\n    <row from=\"30001391\" to=\"30001366\"/>\r\n    <row from=\"30001391\" to=\"30001386\"/>\r\n    <row from=\"30001391\" to=\"30001388\"/>\r\n    <row from=\"30001391\" to=\"30001394\"/>\r\n    <row from=\"30001392\" to=\"30001378\"/>\r\n    <row from=\"30001392\" to=\"30001393\"/>\r\n    <row from=\"30001393\" to=\"30000145\"/>\r\n    <row from=\"30001393\" to=\"30001363\"/>\r\n    <row from=\"30001393\" to=\"30001392\"/>\r\n    <row from=\"30001393\" to=\"30001394\"/>\r\n    <row from=\"30001393\" to=\"30001395\"/>\r\n    <row from=\"30001394\" to=\"30001361\"/>\r\n    <row from=\"30001394\" to=\"30001391\"/>\r\n    <row from=\"30001394\" to=\"30001393\"/>\r\n    <row from=\"30001394\" to=\"30001395\"/>\r\n    <row from=\"30001394\" to=\"30001396\"/>\r\n    <row from=\"30001395\" to=\"30001393\"/>\r\n    <row from=\"30001395\" to=\"30001394\"/>\r\n    <row from=\"30001395\" to=\"30001396\"/>\r\n    <row from=\"30001395\" to=\"30001397\"/>\r\n    <row from=\"30001396\" to=\"30001394\"/>\r\n    <row from=\"30001396\" to=\"30001395\"/>\r\n    <row from=\"30001396\" to=\"30001397\"/>\r\n    <row from=\"30001397\" to=\"30001395\"/>\r\n    <row from=\"30001397\" to=\"30001396\"/>\r\n    <row from=\"30001398\" to=\"30001401\"/>\r\n    <row from=\"30001398\" to=\"30001416\"/>\r\n    <row from=\"30001398\" to=\"30001421\"/>\r\n    <row from=\"30001399\" to=\"30001400\"/>\r\n    <row from=\"30001399\" to=\"30001401\"/>\r\n    <row from=\"30001399\" to=\"30001403\"/>\r\n    <row from=\"30001400\" to=\"30001368\"/>\r\n    <row from=\"30001400\" to=\"30001399\"/>\r\n    <row from=\"30001400\" to=\"30001401\"/>\r\n    <row from=\"30001400\" to=\"30001402\"/>\r\n    <row from=\"30001401\" to=\"30001398\"/>\r\n    <row from=\"30001401\" to=\"30001399\"/>\r\n    <row from=\"30001401\" to=\"30001400\"/>\r\n    <row from=\"30001402\" to=\"30001388\"/>\r\n    <row from=\"30001402\" to=\"30001400\"/>\r\n    <row from=\"30001403\" to=\"30001399\"/>\r\n    <row from=\"30001403\" to=\"30001424\"/>\r\n    <row from=\"30001403\" to=\"30045324\"/>\r\n    <row from=\"30001404\" to=\"30001375\"/>\r\n    <row from=\"30001404\" to=\"30001405\"/>\r\n    <row from=\"30001404\" to=\"30001406\"/>\r\n    <row from=\"30001404\" to=\"30001408\"/>\r\n    <row from=\"30001404\" to=\"30011407\"/>\r\n    <row from=\"30001405\" to=\"30001363\"/>\r\n    <row from=\"30001405\" to=\"30001404\"/>\r\n    <row from=\"30001405\" to=\"30001406\"/>\r\n    <row from=\"30001405\" to=\"30001407\"/>\r\n    <row from=\"30001405\" to=\"30001408\"/>\r\n    <row from=\"30001406\" to=\"30001404\"/>\r\n    <row from=\"30001406\" to=\"30001405\"/>\r\n    <row from=\"30001406\" to=\"30001408\"/>\r\n    <row from=\"30001407\" to=\"30001405\"/>\r\n    <row from=\"30001408\" to=\"30001404\"/>\r\n    <row from=\"30001408\" to=\"30001405\"/>\r\n    <row from=\"30001408\" to=\"30001406\"/>\r\n    <row from=\"30001408\" to=\"30001409\"/>\r\n    <row from=\"30001409\" to=\"30001408\"/>\r\n    <row from=\"30001410\" to=\"30001374\"/>\r\n    <row from=\"30001410\" to=\"30001411\"/>\r\n    <row from=\"30001411\" to=\"30001370\"/>\r\n    <row from=\"30001411\" to=\"30001410\"/>\r\n    <row from=\"30001411\" to=\"30001412\"/>\r\n    <row from=\"30001412\" to=\"30001370\"/>\r\n    <row from=\"30001412\" to=\"30001411\"/>\r\n    <row from=\"30001412\" to=\"30001414\"/>\r\n    <row from=\"30001413\" to=\"30002411\"/>\r\n    <row from=\"30001413\" to=\"30040141\"/>\r\n    <row from=\"30001414\" to=\"30001412\"/>\r\n    <row from=\"30001414\" to=\"30001415\"/>\r\n    <row from=\"30001415\" to=\"30001371\"/>\r\n    <row from=\"30001415\" to=\"30001414\"/>\r\n    <row from=\"30001416\" to=\"30001398\"/>\r\n    <row from=\"30001416\" to=\"30001417\"/>\r\n    <row from=\"30001416\" to=\"30001418\"/>\r\n    <row from=\"30001417\" to=\"30001416\"/>\r\n    <row from=\"30001417\" to=\"30001419\"/>\r\n    <row from=\"30001417\" to=\"30001421\"/>\r\n    <row from=\"30001418\" to=\"30001416\"/>\r\n    <row from=\"30001419\" to=\"30001417\"/>\r\n    <row from=\"30001419\" to=\"30001420\"/>\r\n    <row from=\"30001419\" to=\"30001423\"/>\r\n    <row from=\"30001420\" to=\"30001419\"/>\r\n    <row from=\"30001420\" to=\"30001421\"/>\r\n    <row from=\"30001420\" to=\"30001422\"/>\r\n    <row from=\"30001421\" to=\"30001398\"/>\r\n    <row from=\"30001421\" to=\"30001417\"/>\r\n    <row from=\"30001421\" to=\"30001420\"/>\r\n    <row from=\"30001421\" to=\"30001423\"/>\r\n    <row from=\"30001421\" to=\"30001430\"/>\r\n    <row from=\"30001422\" to=\"30001420\"/>\r\n    <row from=\"30001422\" to=\"30001437\"/>\r\n    <row from=\"30001423\" to=\"30001419\"/>\r\n    <row from=\"30001423\" to=\"30001421\"/>\r\n    <row from=\"30001424\" to=\"30001403\"/>\r\n    <row from=\"30001424\" to=\"30001425\"/>\r\n    <row from=\"30001425\" to=\"30001424\"/>\r\n    <row from=\"30001425\" to=\"30001426\"/>\r\n    <row from=\"30001426\" to=\"30001425\"/>\r\n    <row from=\"30001426\" to=\"30001427\"/>\r\n    <row from=\"30001427\" to=\"30001426\"/>\r\n    <row from=\"30001427\" to=\"30001428\"/>\r\n    <row from=\"30001428\" to=\"30001427\"/>\r\n    <row from=\"30001428\" to=\"30001429\"/>\r\n    <row from=\"30001429\" to=\"30001428\"/>\r\n    <row from=\"30001429\" to=\"30001984\"/>\r\n    <row from=\"30001430\" to=\"30001421\"/>\r\n    <row from=\"30001430\" to=\"30001431\"/>\r\n    <row from=\"30001431\" to=\"30001430\"/>\r\n    <row from=\"30001431\" to=\"30001432\"/>\r\n    <row from=\"30001432\" to=\"30001431\"/>\r\n    <row from=\"30001432\" to=\"30001433\"/>\r\n    <row from=\"30001432\" to=\"30001434\"/>\r\n    <row from=\"30001433\" to=\"30001432\"/>\r\n    <row from=\"30001434\" to=\"30001432\"/>\r\n    <row from=\"30001434\" to=\"30001435\"/>\r\n    <row from=\"30001435\" to=\"30001434\"/>\r\n    <row from=\"30001435\" to=\"30001436\"/>\r\n    <row from=\"30001435\" to=\"30045315\"/>\r\n    <row from=\"30001436\" to=\"30001435\"/>\r\n    <row from=\"30001437\" to=\"30001422\"/>\r\n    <row from=\"30001437\" to=\"30001438\"/>\r\n    <row from=\"30001438\" to=\"30001437\"/>\r\n    <row from=\"30001438\" to=\"30001439\"/>\r\n    <row from=\"30001438\" to=\"30001440\"/>\r\n    <row from=\"30001439\" to=\"30001438\"/>\r\n    <row from=\"30001439\" to=\"30001440\"/>\r\n    <row from=\"30001439\" to=\"30001441\"/>\r\n    <row from=\"30001440\" to=\"30001438\"/>\r\n    <row from=\"30001440\" to=\"30001439\"/>\r\n    <row from=\"30001440\" to=\"30001441\"/>\r\n    <row from=\"30001440\" to=\"30001442\"/>\r\n    <row from=\"30001440\" to=\"30045310\"/>\r\n    <row from=\"30001441\" to=\"30001439\"/>\r\n    <row from=\"30001441\" to=\"30001440\"/>\r\n    <row from=\"30001441\" to=\"30001442\"/>\r\n    <row from=\"30001442\" to=\"30001440\"/>\r\n    <row from=\"30001442\" to=\"30001441\"/>\r\n    <row from=\"30001442\" to=\"30001990\"/>\r\n    <row from=\"30001443\" to=\"30001367\"/>\r\n    <row from=\"30001443\" to=\"30001444\"/>\r\n    <row from=\"30001444\" to=\"30001443\"/>\r\n    <row from=\"30001444\" to=\"30001446\"/>\r\n    <row from=\"30001445\" to=\"30000157\"/>\r\n    <row from=\"30001445\" to=\"30001372\"/>\r\n    <row from=\"30001445\" to=\"30002737\"/>\r\n    <row from=\"30001446\" to=\"30001444\"/>\r\n    <row from=\"30001446\" to=\"30001447\"/>\r\n    <row from=\"30001446\" to=\"30001448\"/>\r\n    <row from=\"30001447\" to=\"30000848\"/>\r\n    <row from=\"30001447\" to=\"30001446\"/>\r\n    <row from=\"30001447\" to=\"30001448\"/>\r\n    <row from=\"30001448\" to=\"30000205\"/>\r\n    <row from=\"30001448\" to=\"30001446\"/>\r\n    <row from=\"30001448\" to=\"30001447\"/>\r\n    <row from=\"30001526\" to=\"30001528\"/>\r\n    <row from=\"30001526\" to=\"30001531\"/>\r\n    <row from=\"30001526\" to=\"30001566\"/>\r\n    <row from=\"30001527\" to=\"30001528\"/>\r\n    <row from=\"30001527\" to=\"30001529\"/>\r\n    <row from=\"30001527\" to=\"30001530\"/>\r\n    <row from=\"30001528\" to=\"30001526\"/>\r\n    <row from=\"30001528\" to=\"30001527\"/>\r\n    <row from=\"30001528\" to=\"30001532\"/>\r\n    <row from=\"30001528\" to=\"30001546\"/>\r\n    <row from=\"30001529\" to=\"30001527\"/>\r\n    <row from=\"30001529\" to=\"30001532\"/>\r\n    <row from=\"30001529\" to=\"30001580\"/>\r\n    <row from=\"30001530\" to=\"30001527\"/>\r\n    <row from=\"30001531\" to=\"30001526\"/>\r\n    <row from=\"30001532\" to=\"30001528\"/>\r\n    <row from=\"30001532\" to=\"30001529\"/>\r\n    <row from=\"30001532\" to=\"30001542\"/>\r\n    <row from=\"30001533\" to=\"30001534\"/>\r\n    <row from=\"30001533\" to=\"30001539\"/>\r\n    <row from=\"30001533\" to=\"30002336\"/>\r\n    <row from=\"30001534\" to=\"30001533\"/>\r\n    <row from=\"30001534\" to=\"30001535\"/>\r\n    <row from=\"30001534\" to=\"30001536\"/>\r\n    <row from=\"30001535\" to=\"30001534\"/>\r\n    <row from=\"30001535\" to=\"30001539\"/>\r\n    <row from=\"30001535\" to=\"30001548\"/>\r\n    <row from=\"30001535\" to=\"30001554\"/>\r\n    <row from=\"30001536\" to=\"30001534\"/>\r\n    <row from=\"30001536\" to=\"30001538\"/>\r\n    <row from=\"30001536\" to=\"30001540\"/>\r\n    <row from=\"30001536\" to=\"30001562\"/>\r\n    <row from=\"30001537\" to=\"30001539\"/>\r\n    <row from=\"30001538\" to=\"30001536\"/>\r\n    <row from=\"30001539\" to=\"30001533\"/>\r\n    <row from=\"30001539\" to=\"30001535\"/>\r\n    <row from=\"30001539\" to=\"30001537\"/>\r\n    <row from=\"30001540\" to=\"30001536\"/>\r\n    <row from=\"30001540\" to=\"30001568\"/>\r\n    <row from=\"30001541\" to=\"30001542\"/>\r\n    <row from=\"30001541\" to=\"30001543\"/>\r\n    <row from=\"30001541\" to=\"30001544\"/>\r\n    <row from=\"30001541\" to=\"30001565\"/>\r\n    <row from=\"30001542\" to=\"30000628\"/>\r\n    <row from=\"30001542\" to=\"30001532\"/>\r\n    <row from=\"30001542\" to=\"30001541\"/>\r\n    <row from=\"30001543\" to=\"30001541\"/>\r\n    <row from=\"30001543\" to=\"30001547\"/>\r\n    <row from=\"30001544\" to=\"30001541\"/>\r\n    <row from=\"30001544\" to=\"30001545\"/>\r\n    <row from=\"30001545\" to=\"30001544\"/>\r\n    <row from=\"30001545\" to=\"30001546\"/>\r\n    <row from=\"30001546\" to=\"30001528\"/>\r\n    <row from=\"30001546\" to=\"30001545\"/>\r\n    <row from=\"30001547\" to=\"30001543\"/>\r\n    <row from=\"30001548\" to=\"30001535\"/>\r\n    <row from=\"30001548\" to=\"30001549\"/>\r\n    <row from=\"30001549\" to=\"30001548\"/>\r\n    <row from=\"30001549\" to=\"30001550\"/>\r\n    <row from=\"30001550\" to=\"30001549\"/>\r\n    <row from=\"30001550\" to=\"30001551\"/>\r\n    <row from=\"30001550\" to=\"30001552\"/>\r\n    <row from=\"30001550\" to=\"30001553\"/>\r\n    <row from=\"30001551\" to=\"30001114\"/>\r\n    <row from=\"30001551\" to=\"30001550\"/>\r\n    <row from=\"30001552\" to=\"30001550\"/>\r\n    <row from=\"30001553\" to=\"30001550\"/>\r\n    <row from=\"30001553\" to=\"30003253\"/>\r\n    <row from=\"30001554\" to=\"30001535\"/>\r\n    <row from=\"30001554\" to=\"30001555\"/>\r\n    <row from=\"30001555\" to=\"30001554\"/>\r\n    <row from=\"30001555\" to=\"30001556\"/>\r\n    <row from=\"30001555\" to=\"30001558\"/>\r\n    <row from=\"30001556\" to=\"30001555\"/>\r\n    <row from=\"30001556\" to=\"30001557\"/>\r\n    <row from=\"30001557\" to=\"30001556\"/>\r\n    <row from=\"30001557\" to=\"30001560\"/>\r\n    <row from=\"30001558\" to=\"30001555\"/>\r\n    <row from=\"30001558\" to=\"30001559\"/>\r\n    <row from=\"30001559\" to=\"30001558\"/>\r\n    <row from=\"30001559\" to=\"30001597\"/>\r\n    <row from=\"30001560\" to=\"30001557\"/>\r\n    <row from=\"30001561\" to=\"30001564\"/>\r\n    <row from=\"30001561\" to=\"30001565\"/>\r\n    <row from=\"30001561\" to=\"30001567\"/>\r\n    <row from=\"30001562\" to=\"30001536\"/>\r\n    <row from=\"30001562\" to=\"30001566\"/>\r\n    <row from=\"30001563\" to=\"30000833\"/>\r\n    <row from=\"30001563\" to=\"30001567\"/>\r\n    <row from=\"30001563\" to=\"30002366\"/>\r\n    <row from=\"30001564\" to=\"30001561\"/>\r\n    <row from=\"30001564\" to=\"30001565\"/>\r\n    <row from=\"30001564\" to=\"30001567\"/>\r\n    <row from=\"30001565\" to=\"30001541\"/>\r\n    <row from=\"30001565\" to=\"30001561\"/>\r\n    <row from=\"30001565\" to=\"30001564\"/>\r\n    <row from=\"30001565\" to=\"30001566\"/>\r\n    <row from=\"30001565\" to=\"30001569\"/>\r\n    <row from=\"30001566\" to=\"30001526\"/>\r\n    <row from=\"30001566\" to=\"30001562\"/>\r\n    <row from=\"30001566\" to=\"30001565\"/>\r\n    <row from=\"30001566\" to=\"30001567\"/>\r\n    <row from=\"30001567\" to=\"30001561\"/>\r\n    <row from=\"30001567\" to=\"30001563\"/>\r\n    <row from=\"30001567\" to=\"30001564\"/>\r\n    <row from=\"30001567\" to=\"30001566\"/>\r\n    <row from=\"30001568\" to=\"30001540\"/>\r\n    <row from=\"30001568\" to=\"30001569\"/>\r\n    <row from=\"30001568\" to=\"30001570\"/>\r\n    <row from=\"30001569\" to=\"30001565\"/>\r\n    <row from=\"30001569\" to=\"30001568\"/>\r\n    <row from=\"30001569\" to=\"30001572\"/>\r\n    <row from=\"30001570\" to=\"30001568\"/>\r\n    <row from=\"30001570\" to=\"30001571\"/>\r\n    <row from=\"30001570\" to=\"30001572\"/>\r\n    <row from=\"30001570\" to=\"30001592\"/>\r\n    <row from=\"30001571\" to=\"30001570\"/>\r\n    <row from=\"30001571\" to=\"30001572\"/>\r\n    <row from=\"30001571\" to=\"30001573\"/>\r\n    <row from=\"30001571\" to=\"30005100\"/>\r\n    <row from=\"30001571\" to=\"30005185\"/>\r\n    <row from=\"30001572\" to=\"30001569\"/>\r\n    <row from=\"30001572\" to=\"30001570\"/>\r\n    <row from=\"30001572\" to=\"30001571\"/>\r\n    <row from=\"30001572\" to=\"30001574\"/>\r\n    <row from=\"30001572\" to=\"30001743\"/>\r\n    <row from=\"30001573\" to=\"30001571\"/>\r\n    <row from=\"30001574\" to=\"30001572\"/>\r\n    <row from=\"30001574\" to=\"30001575\"/>\r\n    <row from=\"30001575\" to=\"30001574\"/>\r\n    <row from=\"30001575\" to=\"30001576\"/>\r\n    <row from=\"30001575\" to=\"30001577\"/>\r\n    <row from=\"30001576\" to=\"30001575\"/>\r\n    <row from=\"30001576\" to=\"30001577\"/>\r\n    <row from=\"30001576\" to=\"30001578\"/>\r\n    <row from=\"30001577\" to=\"30001575\"/>\r\n    <row from=\"30001577\" to=\"30001576\"/>\r\n    <row from=\"30001578\" to=\"30001576\"/>\r\n    <row from=\"30001578\" to=\"30001579\"/>\r\n    <row from=\"30001579\" to=\"30001578\"/>\r\n    <row from=\"30001580\" to=\"30001529\"/>\r\n    <row from=\"30001580\" to=\"30001581\"/>\r\n    <row from=\"30001580\" to=\"30001582\"/>\r\n    <row from=\"30001580\" to=\"30001583\"/>\r\n    <row from=\"30001581\" to=\"30000652\"/>\r\n    <row from=\"30001581\" to=\"30001580\"/>\r\n    <row from=\"30001581\" to=\"30001585\"/>\r\n    <row from=\"30001582\" to=\"30001580\"/>\r\n    <row from=\"30001582\" to=\"30001583\"/>\r\n    <row from=\"30001582\" to=\"30001584\"/>\r\n    <row from=\"30001583\" to=\"30001580\"/>\r\n    <row from=\"30001583\" to=\"30001582\"/>\r\n    <row from=\"30001583\" to=\"30001584\"/>\r\n    <row from=\"30001584\" to=\"30001582\"/>\r\n    <row from=\"30001584\" to=\"30001583\"/>\r\n    <row from=\"30001584\" to=\"30001753\"/>\r\n    <row from=\"30001585\" to=\"30001581\"/>\r\n    <row from=\"30001586\" to=\"30001587\"/>\r\n    <row from=\"30001586\" to=\"30001588\"/>\r\n    <row from=\"30001586\" to=\"30001589\"/>\r\n    <row from=\"30001586\" to=\"30001591\"/>\r\n    <row from=\"30001586\" to=\"30005103\"/>\r\n    <row from=\"30001587\" to=\"30001586\"/>\r\n    <row from=\"30001587\" to=\"30001588\"/>\r\n    <row from=\"30001587\" to=\"30001589\"/>\r\n    <row from=\"30001588\" to=\"30001586\"/>\r\n    <row from=\"30001588\" to=\"30001587\"/>\r\n    <row from=\"30001588\" to=\"30001589\"/>\r\n    <row from=\"30001588\" to=\"30001590\"/>\r\n    <row from=\"30001589\" to=\"30001586\"/>\r\n    <row from=\"30001589\" to=\"30001587\"/>\r\n    <row from=\"30001589\" to=\"30001588\"/>\r\n    <row from=\"30001590\" to=\"30001588\"/>\r\n    <row from=\"30001590\" to=\"30001809\"/>\r\n    <row from=\"30001591\" to=\"30001586\"/>\r\n    <row from=\"30001592\" to=\"30001570\"/>\r\n    <row from=\"30001592\" to=\"30001593\"/>\r\n    <row from=\"30001592\" to=\"30001594\"/>\r\n    <row from=\"30001592\" to=\"30005185\"/>\r\n    <row from=\"30001593\" to=\"30001592\"/>\r\n    <row from=\"30001594\" to=\"30001592\"/>\r\n    <row from=\"30001594\" to=\"30001595\"/>\r\n    <row from=\"30001595\" to=\"30001594\"/>\r\n    <row from=\"30001595\" to=\"30001596\"/>\r\n    <row from=\"30001595\" to=\"30001597\"/>\r\n    <row from=\"30001596\" to=\"30001595\"/>\r\n    <row from=\"30001596\" to=\"30001597\"/>\r\n    <row from=\"30001597\" to=\"30001559\"/>\r\n    <row from=\"30001597\" to=\"30001595\"/>\r\n    <row from=\"30001597\" to=\"30001596\"/>\r\n    <row from=\"30001644\" to=\"30001645\"/>\r\n    <row from=\"30001644\" to=\"30001646\"/>\r\n    <row from=\"30001644\" to=\"30001647\"/>\r\n    <row from=\"30001645\" to=\"30001644\"/>\r\n    <row from=\"30001645\" to=\"30001646\"/>\r\n    <row from=\"30001645\" to=\"30001647\"/>\r\n    <row from=\"30001645\" to=\"30001662\"/>\r\n    <row from=\"30001646\" to=\"30001644\"/>\r\n    <row from=\"30001646\" to=\"30001645\"/>\r\n    <row from=\"30001646\" to=\"30001648\"/>\r\n    <row from=\"30001646\" to=\"30001649\"/>\r\n    <row from=\"30001646\" to=\"30003485\"/>\r\n    <row from=\"30001647\" to=\"30001644\"/>\r\n    <row from=\"30001647\" to=\"30001645\"/>\r\n    <row from=\"30001647\" to=\"30001656\"/>\r\n    <row from=\"30001647\" to=\"30001669\"/>\r\n    <row from=\"30001647\" to=\"30001681\"/>\r\n    <row from=\"30001648\" to=\"30001646\"/>\r\n    <row from=\"30001649\" to=\"30001646\"/>\r\n    <row from=\"30001649\" to=\"30001653\"/>\r\n    <row from=\"30001650\" to=\"30001652\"/>\r\n    <row from=\"30001650\" to=\"30002210\"/>\r\n    <row from=\"30001651\" to=\"30001652\"/>\r\n    <row from=\"30001651\" to=\"30001653\"/>\r\n    <row from=\"30001651\" to=\"30002278\"/>\r\n    <row from=\"30001651\" to=\"30003490\"/>\r\n    <row from=\"30001652\" to=\"30001650\"/>\r\n    <row from=\"30001652\" to=\"30001651\"/>\r\n    <row from=\"30001652\" to=\"30001653\"/>\r\n    <row from=\"30001652\" to=\"30004091\"/>\r\n    <row from=\"30001652\" to=\"30004149\"/>\r\n    <row from=\"30001653\" to=\"30001649\"/>\r\n    <row from=\"30001653\" to=\"30001651\"/>\r\n    <row from=\"30001653\" to=\"30001652\"/>\r\n    <row from=\"30001653\" to=\"30001654\"/>\r\n    <row from=\"30001653\" to=\"30001655\"/>\r\n    <row from=\"30001654\" to=\"30001653\"/>\r\n    <row from=\"30001654\" to=\"30002263\"/>\r\n    <row from=\"30001655\" to=\"30001653\"/>\r\n    <row from=\"30001655\" to=\"30001675\"/>\r\n    <row from=\"30001656\" to=\"30001647\"/>\r\n    <row from=\"30001656\" to=\"30001657\"/>\r\n    <row from=\"30001656\" to=\"30001659\"/>\r\n    <row from=\"30001657\" to=\"30001656\"/>\r\n    <row from=\"30001657\" to=\"30001658\"/>\r\n    <row from=\"30001657\" to=\"30001659\"/>\r\n    <row from=\"30001658\" to=\"30001657\"/>\r\n    <row from=\"30001658\" to=\"30001729\"/>\r\n    <row from=\"30001658\" to=\"30001734\"/>\r\n    <row from=\"30001659\" to=\"30001656\"/>\r\n    <row from=\"30001659\" to=\"30001657\"/>\r\n    <row from=\"30001659\" to=\"30001660\"/>\r\n    <row from=\"30001660\" to=\"30001659\"/>\r\n    <row from=\"30001660\" to=\"30001661\"/>\r\n    <row from=\"30001661\" to=\"30001660\"/>\r\n    <row from=\"30001662\" to=\"30001645\"/>\r\n    <row from=\"30001662\" to=\"30001663\"/>\r\n    <row from=\"30001662\" to=\"30001665\"/>\r\n    <row from=\"30001662\" to=\"30001666\"/>\r\n    <row from=\"30001663\" to=\"30001662\"/>\r\n    <row from=\"30001663\" to=\"30001664\"/>\r\n    <row from=\"30001663\" to=\"30001666\"/>\r\n    <row from=\"30001663\" to=\"30001668\"/>\r\n    <row from=\"30001664\" to=\"30001663\"/>\r\n    <row from=\"30001665\" to=\"30001662\"/>\r\n    <row from=\"30001665\" to=\"30001667\"/>\r\n    <row from=\"30001666\" to=\"30001662\"/>\r\n    <row from=\"30001666\" to=\"30001663\"/>\r\n    <row from=\"30001666\" to=\"30001667\"/>\r\n    <row from=\"30001667\" to=\"30001665\"/>\r\n    <row from=\"30001667\" to=\"30001666\"/>\r\n    <row from=\"30001667\" to=\"30001668\"/>\r\n    <row from=\"30001667\" to=\"30002219\"/>\r\n    <row from=\"30001668\" to=\"30001663\"/>\r\n    <row from=\"30001668\" to=\"30001667\"/>\r\n    <row from=\"30001668\" to=\"30003561\"/>\r\n    <row from=\"30001669\" to=\"30001647\"/>\r\n    <row from=\"30001669\" to=\"30001670\"/>\r\n    <row from=\"30001669\" to=\"30001671\"/>\r\n    <row from=\"30001670\" to=\"30001669\"/>\r\n    <row from=\"30001670\" to=\"30001671\"/>\r\n    <row from=\"30001670\" to=\"30001694\"/>\r\n    <row from=\"30001671\" to=\"30001669\"/>\r\n    <row from=\"30001671\" to=\"30001670\"/>\r\n    <row from=\"30001671\" to=\"30001672\"/>\r\n    <row from=\"30001671\" to=\"30001674\"/>\r\n    <row from=\"30001671\" to=\"30001700\"/>\r\n    <row from=\"30001671\" to=\"30001701\"/>\r\n    <row from=\"30001671\" to=\"30001722\"/>\r\n    <row from=\"30001671\" to=\"30002282\"/>\r\n    <row from=\"30001672\" to=\"30001671\"/>\r\n    <row from=\"30001672\" to=\"30001673\"/>\r\n    <row from=\"30001672\" to=\"30001687\"/>\r\n    <row from=\"30001672\" to=\"30001733\"/>\r\n    <row from=\"30001673\" to=\"30001672\"/>\r\n    <row from=\"30001673\" to=\"30001674\"/>\r\n    <row from=\"30001673\" to=\"30001716\"/>\r\n    <row from=\"30001674\" to=\"30001671\"/>\r\n    <row from=\"30001674\" to=\"30001673\"/>\r\n    <row from=\"30001674\" to=\"30021672\"/>\r\n    <row from=\"30001675\" to=\"30001655\"/>\r\n    <row from=\"30001675\" to=\"30001676\"/>\r\n    <row from=\"30001675\" to=\"30001677\"/>\r\n    <row from=\"30001675\" to=\"30001678\"/>\r\n    <row from=\"30001675\" to=\"30001680\"/>\r\n    <row from=\"30001676\" to=\"30001675\"/>\r\n    <row from=\"30001676\" to=\"30001679\"/>\r\n    <row from=\"30001676\" to=\"30001680\"/>\r\n    <row from=\"30001677\" to=\"30001675\"/>\r\n    <row from=\"30001677\" to=\"30001678\"/>\r\n    <row from=\"30001677\" to=\"30001694\"/>\r\n    <row from=\"30001677\" to=\"30001700\"/>\r\n    <row from=\"30001678\" to=\"30001675\"/>\r\n    <row from=\"30001678\" to=\"30001677\"/>\r\n    <row from=\"30001678\" to=\"30001679\"/>\r\n    <row from=\"30001678\" to=\"30001680\"/>\r\n    <row from=\"30001678\" to=\"30001729\"/>\r\n    <row from=\"30001679\" to=\"30001676\"/>\r\n    <row from=\"30001679\" to=\"30001678\"/>\r\n    <row from=\"30001680\" to=\"30001675\"/>\r\n    <row from=\"30001680\" to=\"30001676\"/>\r\n    <row from=\"30001680\" to=\"30001678\"/>\r\n    <row from=\"30001680\" to=\"30001687\"/>\r\n    <row from=\"30001680\" to=\"30001708\"/>\r\n    <row from=\"30001681\" to=\"30001647\"/>\r\n    <row from=\"30001681\" to=\"30001682\"/>\r\n    <row from=\"30001681\" to=\"30001685\"/>\r\n    <row from=\"30001681\" to=\"30001686\"/>\r\n    <row from=\"30001682\" to=\"30001681\"/>\r\n    <row from=\"30001682\" to=\"30001683\"/>\r\n    <row from=\"30001682\" to=\"30001685\"/>\r\n    <row from=\"30001682\" to=\"30001686\"/>\r\n    <row from=\"30001683\" to=\"30001682\"/>\r\n    <row from=\"30001683\" to=\"30001684\"/>\r\n    <row from=\"30001684\" to=\"30001683\"/>\r\n    <row from=\"30001685\" to=\"30001681\"/>\r\n    <row from=\"30001685\" to=\"30001682\"/>\r\n    <row from=\"30001685\" to=\"30001686\"/>\r\n    <row from=\"30001686\" to=\"30001681\"/>\r\n    <row from=\"30001686\" to=\"30001682\"/>\r\n    <row from=\"30001686\" to=\"30001685\"/>\r\n    <row from=\"30001687\" to=\"30001672\"/>\r\n    <row from=\"30001687\" to=\"30001680\"/>\r\n    <row from=\"30001687\" to=\"30001688\"/>\r\n    <row from=\"30001687\" to=\"30001708\"/>\r\n    <row from=\"30001688\" to=\"30001687\"/>\r\n    <row from=\"30001688\" to=\"30001689\"/>\r\n    <row from=\"30001688\" to=\"30004098\"/>\r\n    <row from=\"30001689\" to=\"30001688\"/>\r\n    <row from=\"30001689\" to=\"30001690\"/>\r\n    <row from=\"30001690\" to=\"30001689\"/>\r\n    <row from=\"30001690\" to=\"30001691\"/>\r\n    <row from=\"30001690\" to=\"30001692\"/>\r\n    <row from=\"30001691\" to=\"30001690\"/>\r\n    <row from=\"30001691\" to=\"30001693\"/>\r\n    <row from=\"30001691\" to=\"30003858\"/>\r\n    <row from=\"30001692\" to=\"30001690\"/>\r\n    <row from=\"30001692\" to=\"30001715\"/>\r\n    <row from=\"30001693\" to=\"30001691\"/>\r\n    <row from=\"30001694\" to=\"30001670\"/>\r\n    <row from=\"30001694\" to=\"30001677\"/>\r\n    <row from=\"30001694\" to=\"30001695\"/>\r\n    <row from=\"30001694\" to=\"30001696\"/>\r\n    <row from=\"30001695\" to=\"30001694\"/>\r\n    <row from=\"30001695\" to=\"30001696\"/>\r\n    <row from=\"30001695\" to=\"30001697\"/>\r\n    <row from=\"30001695\" to=\"30001698\"/>\r\n    <row from=\"30001695\" to=\"30001699\"/>\r\n    <row from=\"30001696\" to=\"30001694\"/>\r\n    <row from=\"30001696\" to=\"30001695\"/>\r\n    <row from=\"30001696\" to=\"30002216\"/>\r\n    <row from=\"30001697\" to=\"30001695\"/>\r\n    <row from=\"30001697\" to=\"30001698\"/>\r\n    <row from=\"30001698\" to=\"30001695\"/>\r\n    <row from=\"30001698\" to=\"30001697\"/>\r\n    <row from=\"30001698\" to=\"30001707\"/>\r\n    <row from=\"30001699\" to=\"30001695\"/>\r\n    <row from=\"30001700\" to=\"30001671\"/>\r\n    <row from=\"30001700\" to=\"30001677\"/>\r\n    <row from=\"30001700\" to=\"30001701\"/>\r\n    <row from=\"30001700\" to=\"30001702\"/>\r\n    <row from=\"30001701\" to=\"30001671\"/>\r\n    <row from=\"30001701\" to=\"30001700\"/>\r\n    <row from=\"30001701\" to=\"30001702\"/>\r\n    <row from=\"30001701\" to=\"30001703\"/>\r\n    <row from=\"30001701\" to=\"30001704\"/>\r\n    <row from=\"30001701\" to=\"30001722\"/>\r\n    <row from=\"30001702\" to=\"30001700\"/>\r\n    <row from=\"30001702\" to=\"30001701\"/>\r\n    <row from=\"30001702\" to=\"30001707\"/>\r\n    <row from=\"30001703\" to=\"30001701\"/>\r\n    <row from=\"30001703\" to=\"30001705\"/>\r\n    <row from=\"30001703\" to=\"30001706\"/>\r\n    <row from=\"30001704\" to=\"30001701\"/>\r\n    <row from=\"30001705\" to=\"30001703\"/>\r\n    <row from=\"30001705\" to=\"30001727\"/>\r\n    <row from=\"30001706\" to=\"30001703\"/>\r\n    <row from=\"30001707\" to=\"30001698\"/>\r\n    <row from=\"30001707\" to=\"30001702\"/>\r\n    <row from=\"30001708\" to=\"30001680\"/>\r\n    <row from=\"30001708\" to=\"30001687\"/>\r\n    <row from=\"30001708\" to=\"30001709\"/>\r\n    <row from=\"30001708\" to=\"30001710\"/>\r\n    <row from=\"30001708\" to=\"30001711\"/>\r\n    <row from=\"30001709\" to=\"30001708\"/>\r\n    <row from=\"30001709\" to=\"30001710\"/>\r\n    <row from=\"30001710\" to=\"30001708\"/>\r\n    <row from=\"30001710\" to=\"30001709\"/>\r\n    <row from=\"30001710\" to=\"30001711\"/>\r\n    <row from=\"30001710\" to=\"30001714\"/>\r\n    <row from=\"30001711\" to=\"30001708\"/>\r\n    <row from=\"30001711\" to=\"30001710\"/>\r\n    <row from=\"30001711\" to=\"30001712\"/>\r\n    <row from=\"30001711\" to=\"30001713\"/>\r\n    <row from=\"30001711\" to=\"30001715\"/>\r\n    <row from=\"30001712\" to=\"30001711\"/>\r\n    <row from=\"30001713\" to=\"30001711\"/>\r\n    <row from=\"30001713\" to=\"30001714\"/>\r\n    <row from=\"30001713\" to=\"30001715\"/>\r\n    <row from=\"30001714\" to=\"30001710\"/>\r\n    <row from=\"30001714\" to=\"30001713\"/>\r\n    <row from=\"30001715\" to=\"30001692\"/>\r\n    <row from=\"30001715\" to=\"30001711\"/>\r\n    <row from=\"30001715\" to=\"30001713\"/>\r\n    <row from=\"30001716\" to=\"30001673\"/>\r\n    <row from=\"30001716\" to=\"30001717\"/>\r\n    <row from=\"30001716\" to=\"30001718\"/>\r\n    <row from=\"30001717\" to=\"30001716\"/>\r\n    <row from=\"30001717\" to=\"30001718\"/>\r\n    <row from=\"30001718\" to=\"30001716\"/>\r\n    <row from=\"30001718\" to=\"30001717\"/>\r\n    <row from=\"30001718\" to=\"30001719\"/>\r\n    <row from=\"30001719\" to=\"30001718\"/>\r\n    <row from=\"30001719\" to=\"30001720\"/>\r\n    <row from=\"30001719\" to=\"30001721\"/>\r\n    <row from=\"30001720\" to=\"30001719\"/>\r\n    <row from=\"30001720\" to=\"30001721\"/>\r\n    <row from=\"30001721\" to=\"30001719\"/>\r\n    <row from=\"30001721\" to=\"30001720\"/>\r\n    <row from=\"30001721\" to=\"30001957\"/>\r\n    <row from=\"30001722\" to=\"30001671\"/>\r\n    <row from=\"30001722\" to=\"30001701\"/>\r\n    <row from=\"30001722\" to=\"30001723\"/>\r\n    <row from=\"30001722\" to=\"30001727\"/>\r\n    <row from=\"30001722\" to=\"30031672\"/>\r\n    <row from=\"30001723\" to=\"30001722\"/>\r\n    <row from=\"30001723\" to=\"30001724\"/>\r\n    <row from=\"30001723\" to=\"30001725\"/>\r\n    <row from=\"30001723\" to=\"30011672\"/>\r\n    <row from=\"30001724\" to=\"30001723\"/>\r\n    <row from=\"30001724\" to=\"30001726\"/>\r\n    <row from=\"30001724\" to=\"30001727\"/>\r\n    <row from=\"30001725\" to=\"30001723\"/>\r\n    <row from=\"30001726\" to=\"30001724\"/>\r\n    <row from=\"30001726\" to=\"30001728\"/>\r\n    <row from=\"30001727\" to=\"30001705\"/>\r\n    <row from=\"30001727\" to=\"30001722\"/>\r\n    <row from=\"30001727\" to=\"30001724\"/>\r\n    <row from=\"30001728\" to=\"30001726\"/>\r\n    <row from=\"30001729\" to=\"30001658\"/>\r\n    <row from=\"30001729\" to=\"30001678\"/>\r\n    <row from=\"30001729\" to=\"30001730\"/>\r\n    <row from=\"30001729\" to=\"30001731\"/>\r\n    <row from=\"30001729\" to=\"30001732\"/>\r\n    <row from=\"30001730\" to=\"30001729\"/>\r\n    <row from=\"30001730\" to=\"30001731\"/>\r\n    <row from=\"30001730\" to=\"30001732\"/>\r\n    <row from=\"30001730\" to=\"30001733\"/>\r\n    <row from=\"30001731\" to=\"30001729\"/>\r\n    <row from=\"30001731\" to=\"30001730\"/>\r\n    <row from=\"30001731\" to=\"30001732\"/>\r\n    <row from=\"30001731\" to=\"30001733\"/>\r\n    <row from=\"30001732\" to=\"30001729\"/>\r\n    <row from=\"30001732\" to=\"30001730\"/>\r\n    <row from=\"30001732\" to=\"30001731\"/>\r\n    <row from=\"30001732\" to=\"30001733\"/>\r\n    <row from=\"30001733\" to=\"30001672\"/>\r\n    <row from=\"30001733\" to=\"30001730\"/>\r\n    <row from=\"30001733\" to=\"30001731\"/>\r\n    <row from=\"30001733\" to=\"30001732\"/>\r\n    <row from=\"30001733\" to=\"30001734\"/>\r\n    <row from=\"30001734\" to=\"30001658\"/>\r\n    <row from=\"30001734\" to=\"30001733\"/>\r\n    <row from=\"30001734\" to=\"30001735\"/>\r\n    <row from=\"30001734\" to=\"30041672\"/>\r\n    <row from=\"30001735\" to=\"30001734\"/>\r\n    <row from=\"30001735\" to=\"30001736\"/>\r\n    <row from=\"30001735\" to=\"30001737\"/>\r\n    <row from=\"30001735\" to=\"30001738\"/>\r\n    <row from=\"30001736\" to=\"30001735\"/>\r\n    <row from=\"30001736\" to=\"30001742\"/>\r\n    <row from=\"30001737\" to=\"30001735\"/>\r\n    <row from=\"30001737\" to=\"30001739\"/>\r\n    <row from=\"30001738\" to=\"30001735\"/>\r\n    <row from=\"30001738\" to=\"30001740\"/>\r\n    <row from=\"30001739\" to=\"30001737\"/>\r\n    <row from=\"30001739\" to=\"30001741\"/>\r\n    <row from=\"30001740\" to=\"30001738\"/>\r\n    <row from=\"30001741\" to=\"30001739\"/>\r\n    <row from=\"30001742\" to=\"30001736\"/>\r\n    <row from=\"30001742\" to=\"30003726\"/>\r\n    <row from=\"30001743\" to=\"30001572\"/>\r\n    <row from=\"30001743\" to=\"30001744\"/>\r\n    <row from=\"30001743\" to=\"30001797\"/>\r\n    <row from=\"30001743\" to=\"30001802\"/>\r\n    <row from=\"30001744\" to=\"30001743\"/>\r\n    <row from=\"30001744\" to=\"30001745\"/>\r\n    <row from=\"30001744\" to=\"30001746\"/>\r\n    <row from=\"30001745\" to=\"30001744\"/>\r\n    <row from=\"30001745\" to=\"30001747\"/>\r\n    <row from=\"30001745\" to=\"30001749\"/>\r\n    <row from=\"30001746\" to=\"30001744\"/>\r\n    <row from=\"30001746\" to=\"30001748\"/>\r\n    <row from=\"30001747\" to=\"30001745\"/>\r\n    <row from=\"30001747\" to=\"30001748\"/>\r\n    <row from=\"30001748\" to=\"30001746\"/>\r\n    <row from=\"30001748\" to=\"30001747\"/>\r\n    <row from=\"30001748\" to=\"30001755\"/>\r\n    <row from=\"30001749\" to=\"30001745\"/>\r\n    <row from=\"30001749\" to=\"30001750\"/>\r\n    <row from=\"30001750\" to=\"30001749\"/>\r\n    <row from=\"30001750\" to=\"30001751\"/>\r\n    <row from=\"30001750\" to=\"30001754\"/>\r\n    <row from=\"30001751\" to=\"30001750\"/>\r\n    <row from=\"30001751\" to=\"30001752\"/>\r\n    <row from=\"30001751\" to=\"30001753\"/>\r\n    <row from=\"30001752\" to=\"30001751\"/>\r\n    <row from=\"30001753\" to=\"30000654\"/>\r\n    <row from=\"30001753\" to=\"30001584\"/>\r\n    <row from=\"30001753\" to=\"30001751\"/>\r\n    <row from=\"30001754\" to=\"30001750\"/>\r\n    <row from=\"30001755\" to=\"30001748\"/>\r\n    <row from=\"30001755\" to=\"30001756\"/>\r\n    <row from=\"30001755\" to=\"30001758\"/>\r\n    <row from=\"30001756\" to=\"30001755\"/>\r\n    <row from=\"30001756\" to=\"30001757\"/>\r\n    <row from=\"30001757\" to=\"30001756\"/>\r\n    <row from=\"30001757\" to=\"30001759\"/>\r\n    <row from=\"30001758\" to=\"30001755\"/>\r\n    <row from=\"30001758\" to=\"30001761\"/>\r\n    <row from=\"30001759\" to=\"30001757\"/>\r\n    <row from=\"30001759\" to=\"30001760\"/>\r\n    <row from=\"30001760\" to=\"30001759\"/>\r\n    <row from=\"30001760\" to=\"30001761\"/>\r\n    <row from=\"30001761\" to=\"30001758\"/>\r\n    <row from=\"30001761\" to=\"30001760\"/>\r\n    <row from=\"30001761\" to=\"30001762\"/>\r\n    <row from=\"30001762\" to=\"30001761\"/>\r\n    <row from=\"30001762\" to=\"30001763\"/>\r\n    <row from=\"30001762\" to=\"30001764\"/>\r\n    <row from=\"30001762\" to=\"30001765\"/>\r\n    <row from=\"30001763\" to=\"30001762\"/>\r\n    <row from=\"30001763\" to=\"30001764\"/>\r\n    <row from=\"30001763\" to=\"30001767\"/>\r\n    <row from=\"30001764\" to=\"30001762\"/>\r\n    <row from=\"30001764\" to=\"30001763\"/>\r\n    <row from=\"30001764\" to=\"30001766\"/>\r\n    <row from=\"30001765\" to=\"30001762\"/>\r\n    <row from=\"30001765\" to=\"30001825\"/>\r\n    <row from=\"30001766\" to=\"30001764\"/>\r\n    <row from=\"30001767\" to=\"30001763\"/>\r\n    <row from=\"30001767\" to=\"30001768\"/>\r\n    <row from=\"30001768\" to=\"30001767\"/>\r\n    <row from=\"30001768\" to=\"30001769\"/>\r\n    <row from=\"30001768\" to=\"30001771\"/>\r\n    <row from=\"30001768\" to=\"30001772\"/>\r\n    <row from=\"30001768\" to=\"30001824\"/>\r\n    <row from=\"30001769\" to=\"30001768\"/>\r\n    <row from=\"30001769\" to=\"30001770\"/>\r\n    <row from=\"30001770\" to=\"30001769\"/>\r\n    <row from=\"30001770\" to=\"30001771\"/>\r\n    <row from=\"30001771\" to=\"30001768\"/>\r\n    <row from=\"30001771\" to=\"30001770\"/>\r\n    <row from=\"30001771\" to=\"30001795\"/>\r\n    <row from=\"30001772\" to=\"30001768\"/>\r\n    <row from=\"30001772\" to=\"30001773\"/>\r\n    <row from=\"30001773\" to=\"30000647\"/>\r\n    <row from=\"30001773\" to=\"30001772\"/>\r\n    <row from=\"30001774\" to=\"30001775\"/>\r\n    <row from=\"30001774\" to=\"30001776\"/>\r\n    <row from=\"30001774\" to=\"30004164\"/>\r\n    <row from=\"30001775\" to=\"30001774\"/>\r\n    <row from=\"30001775\" to=\"30001779\"/>\r\n    <row from=\"30001776\" to=\"30001774\"/>\r\n    <row from=\"30001776\" to=\"30001777\"/>\r\n    <row from=\"30001776\" to=\"30001778\"/>\r\n    <row from=\"30001777\" to=\"30001776\"/>\r\n    <row from=\"30001777\" to=\"30001778\"/>\r\n    <row from=\"30001777\" to=\"30001789\"/>\r\n    <row from=\"30001778\" to=\"30001776\"/>\r\n    <row from=\"30001778\" to=\"30001777\"/>\r\n    <row from=\"30001779\" to=\"30001775\"/>\r\n    <row from=\"30001779\" to=\"30001780\"/>\r\n    <row from=\"30001780\" to=\"30001779\"/>\r\n    <row from=\"30001780\" to=\"30001781\"/>\r\n    <row from=\"30001780\" to=\"30001782\"/>\r\n    <row from=\"30001781\" to=\"30001780\"/>\r\n    <row from=\"30001781\" to=\"30001783\"/>\r\n    <row from=\"30001781\" to=\"30001805\"/>\r\n    <row from=\"30001782\" to=\"30001780\"/>\r\n    <row from=\"30001783\" to=\"30001781\"/>\r\n    <row from=\"30001783\" to=\"30001784\"/>\r\n    <row from=\"30001783\" to=\"30001785\"/>\r\n    <row from=\"30001783\" to=\"30001787\"/>\r\n    <row from=\"30001784\" to=\"30001783\"/>\r\n    <row from=\"30001784\" to=\"30001786\"/>\r\n    <row from=\"30001785\" to=\"30001783\"/>\r\n    <row from=\"30001786\" to=\"30001784\"/>\r\n    <row from=\"30001787\" to=\"30001783\"/>\r\n    <row from=\"30001787\" to=\"30001788\"/>\r\n    <row from=\"30001788\" to=\"30001787\"/>\r\n    <row from=\"30001789\" to=\"30001777\"/>\r\n    <row from=\"30001789\" to=\"30001790\"/>\r\n    <row from=\"30001789\" to=\"30001794\"/>\r\n    <row from=\"30001790\" to=\"30001789\"/>\r\n    <row from=\"30001790\" to=\"30001791\"/>\r\n    <row from=\"30001790\" to=\"30001792\"/>\r\n    <row from=\"30001790\" to=\"30001793\"/>\r\n    <row from=\"30001791\" to=\"30001790\"/>\r\n    <row from=\"30001792\" to=\"30001790\"/>\r\n    <row from=\"30001792\" to=\"30001793\"/>\r\n    <row from=\"30001793\" to=\"30001790\"/>\r\n    <row from=\"30001793\" to=\"30001792\"/>\r\n    <row from=\"30001793\" to=\"30001794\"/>\r\n    <row from=\"30001794\" to=\"30001789\"/>\r\n    <row from=\"30001794\" to=\"30001793\"/>\r\n    <row from=\"30001794\" to=\"30001795\"/>\r\n    <row from=\"30001795\" to=\"30001771\"/>\r\n    <row from=\"30001795\" to=\"30001794\"/>\r\n    <row from=\"30001796\" to=\"30001797\"/>\r\n    <row from=\"30001796\" to=\"30001798\"/>\r\n    <row from=\"30001796\" to=\"30001799\"/>\r\n    <row from=\"30001796\" to=\"30005178\"/>\r\n    <row from=\"30001797\" to=\"30001743\"/>\r\n    <row from=\"30001797\" to=\"30001796\"/>\r\n    <row from=\"30001797\" to=\"30001798\"/>\r\n    <row from=\"30001797\" to=\"30001800\"/>\r\n    <row from=\"30001797\" to=\"30001802\"/>\r\n    <row from=\"30001798\" to=\"30001796\"/>\r\n    <row from=\"30001798\" to=\"30001797\"/>\r\n    <row from=\"30001799\" to=\"30001796\"/>\r\n    <row from=\"30001799\" to=\"30001801\"/>\r\n    <row from=\"30001800\" to=\"30001797\"/>\r\n    <row from=\"30001800\" to=\"30001802\"/>\r\n    <row from=\"30001801\" to=\"30001799\"/>\r\n    <row from=\"30001802\" to=\"30001743\"/>\r\n    <row from=\"30001802\" to=\"30001797\"/>\r\n    <row from=\"30001802\" to=\"30001800\"/>\r\n    <row from=\"30001802\" to=\"30001803\"/>\r\n    <row from=\"30001803\" to=\"30001802\"/>\r\n    <row from=\"30001803\" to=\"30001804\"/>\r\n    <row from=\"30001804\" to=\"30000653\"/>\r\n    <row from=\"30001804\" to=\"30001803\"/>\r\n    <row from=\"30001805\" to=\"30001781\"/>\r\n    <row from=\"30001805\" to=\"30001806\"/>\r\n    <row from=\"30001806\" to=\"30001805\"/>\r\n    <row from=\"30001806\" to=\"30001807\"/>\r\n    <row from=\"30001806\" to=\"30001808\"/>\r\n    <row from=\"30001806\" to=\"30001809\"/>\r\n    <row from=\"30001807\" to=\"30001806\"/>\r\n    <row from=\"30001807\" to=\"30001808\"/>\r\n    <row from=\"30001807\" to=\"30001810\"/>\r\n    <row from=\"30001808\" to=\"30001806\"/>\r\n    <row from=\"30001808\" to=\"30001807\"/>\r\n    <row from=\"30001808\" to=\"30001809\"/>\r\n    <row from=\"30001809\" to=\"30001590\"/>\r\n    <row from=\"30001809\" to=\"30001806\"/>\r\n    <row from=\"30001809\" to=\"30001808\"/>\r\n    <row from=\"30001810\" to=\"30001807\"/>\r\n    <row from=\"30001810\" to=\"30001811\"/>\r\n    <row from=\"30001811\" to=\"30001810\"/>\r\n    <row from=\"30001811\" to=\"30001812\"/>\r\n    <row from=\"30001811\" to=\"30001813\"/>\r\n    <row from=\"30001811\" to=\"30001814\"/>\r\n    <row from=\"30001812\" to=\"30001811\"/>\r\n    <row from=\"30001812\" to=\"30001815\"/>\r\n    <row from=\"30001812\" to=\"30001816\"/>\r\n    <row from=\"30001813\" to=\"30001811\"/>\r\n    <row from=\"30001813\" to=\"30001814\"/>\r\n    <row from=\"30001814\" to=\"30001811\"/>\r\n    <row from=\"30001814\" to=\"30001813\"/>\r\n    <row from=\"30001814\" to=\"30001825\"/>\r\n    <row from=\"30001815\" to=\"30001812\"/>\r\n    <row from=\"30001815\" to=\"30001817\"/>\r\n    <row from=\"30001816\" to=\"30001812\"/>\r\n    <row from=\"30001816\" to=\"30001818\"/>\r\n    <row from=\"30001817\" to=\"30001815\"/>\r\n    <row from=\"30001818\" to=\"30001816\"/>\r\n    <row from=\"30001818\" to=\"30001819\"/>\r\n    <row from=\"30001818\" to=\"30001820\"/>\r\n    <row from=\"30001819\" to=\"30001818\"/>\r\n    <row from=\"30001819\" to=\"30001821\"/>\r\n    <row from=\"30001820\" to=\"30001818\"/>\r\n    <row from=\"30001821\" to=\"30001819\"/>\r\n    <row from=\"30001821\" to=\"30001822\"/>\r\n    <row from=\"30001822\" to=\"30001821\"/>\r\n    <row from=\"30001822\" to=\"30001823\"/>\r\n    <row from=\"30001822\" to=\"30001824\"/>\r\n    <row from=\"30001823\" to=\"30001822\"/>\r\n    <row from=\"30001824\" to=\"30001768\"/>\r\n    <row from=\"30001824\" to=\"30001822\"/>\r\n    <row from=\"30001825\" to=\"30001765\"/>\r\n    <row from=\"30001825\" to=\"30001814\"/>\r\n    <row from=\"30001825\" to=\"30001826\"/>\r\n    <row from=\"30001826\" to=\"30001825\"/>\r\n    <row from=\"30001826\" to=\"30001827\"/>\r\n    <row from=\"30001826\" to=\"30001828\"/>\r\n    <row from=\"30001826\" to=\"30001829\"/>\r\n    <row from=\"30001827\" to=\"30001826\"/>\r\n    <row from=\"30001827\" to=\"30001829\"/>\r\n    <row from=\"30001828\" to=\"30001826\"/>\r\n    <row from=\"30001828\" to=\"30001830\"/>\r\n    <row from=\"30001829\" to=\"30001826\"/>\r\n    <row from=\"30001829\" to=\"30001827\"/>\r\n    <row from=\"30001830\" to=\"30001828\"/>\r\n    <row from=\"30001831\" to=\"30001200\"/>\r\n    <row from=\"30001831\" to=\"30001832\"/>\r\n    <row from=\"30001832\" to=\"30001831\"/>\r\n    <row from=\"30001832\" to=\"30001833\"/>\r\n    <row from=\"30001833\" to=\"30001832\"/>\r\n    <row from=\"30001833\" to=\"30001834\"/>\r\n    <row from=\"30001833\" to=\"30001835\"/>\r\n    <row from=\"30001834\" to=\"30001833\"/>\r\n    <row from=\"30001834\" to=\"30001835\"/>\r\n    <row from=\"30001834\" to=\"30001836\"/>\r\n    <row from=\"30001835\" to=\"30001833\"/>\r\n    <row from=\"30001835\" to=\"30001834\"/>\r\n    <row from=\"30001835\" to=\"30001836\"/>\r\n    <row from=\"30001835\" to=\"30001838\"/>\r\n    <row from=\"30001836\" to=\"30001834\"/>\r\n    <row from=\"30001836\" to=\"30001835\"/>\r\n    <row from=\"30001836\" to=\"30001837\"/>\r\n    <row from=\"30001837\" to=\"30001836\"/>\r\n    <row from=\"30001837\" to=\"30001845\"/>\r\n    <row from=\"30001838\" to=\"30001835\"/>\r\n    <row from=\"30001838\" to=\"30001839\"/>\r\n    <row from=\"30001838\" to=\"30001841\"/>\r\n    <row from=\"30001839\" to=\"30001838\"/>\r\n    <row from=\"30001839\" to=\"30001840\"/>\r\n    <row from=\"30001840\" to=\"30001839\"/>\r\n    <row from=\"30001840\" to=\"30001842\"/>\r\n    <row from=\"30001840\" to=\"30001844\"/>\r\n    <row from=\"30001841\" to=\"30001838\"/>\r\n    <row from=\"30001842\" to=\"30001840\"/>\r\n    <row from=\"30001842\" to=\"30001843\"/>\r\n    <row from=\"30001842\" to=\"30001844\"/>\r\n    <row from=\"30001842\" to=\"30001851\"/>\r\n    <row from=\"30001843\" to=\"30001842\"/>\r\n    <row from=\"30001844\" to=\"30001840\"/>\r\n    <row from=\"30001844\" to=\"30001842\"/>\r\n    <row from=\"30001845\" to=\"30001837\"/>\r\n    <row from=\"30001845\" to=\"30001846\"/>\r\n    <row from=\"30001845\" to=\"30001850\"/>\r\n    <row from=\"30001846\" to=\"30001845\"/>\r\n    <row from=\"30001846\" to=\"30001847\"/>\r\n    <row from=\"30001847\" to=\"30001846\"/>\r\n    <row from=\"30001847\" to=\"30001848\"/>\r\n    <row from=\"30001847\" to=\"30001849\"/>\r\n    <row from=\"30001848\" to=\"30001847\"/>\r\n    <row from=\"30001849\" to=\"30001847\"/>\r\n    <row from=\"30001849\" to=\"30001850\"/>\r\n    <row from=\"30001850\" to=\"30001845\"/>\r\n    <row from=\"30001850\" to=\"30001849\"/>\r\n    <row from=\"30001851\" to=\"30001842\"/>\r\n    <row from=\"30001851\" to=\"30001852\"/>\r\n    <row from=\"30001852\" to=\"30001851\"/>\r\n    <row from=\"30001852\" to=\"30001853\"/>\r\n    <row from=\"30001853\" to=\"30001852\"/>\r\n    <row from=\"30001853\" to=\"30001854\"/>\r\n    <row from=\"30001854\" to=\"30001853\"/>\r\n    <row from=\"30001854\" to=\"30001855\"/>\r\n    <row from=\"30001855\" to=\"30001854\"/>\r\n    <row from=\"30001855\" to=\"30001856\"/>\r\n    <row from=\"30001856\" to=\"30001855\"/>\r\n    <row from=\"30001856\" to=\"30001857\"/>\r\n    <row from=\"30001857\" to=\"30001856\"/>\r\n    <row from=\"30001857\" to=\"30001858\"/>\r\n    <row from=\"30001858\" to=\"30001857\"/>\r\n    <row from=\"30001858\" to=\"30001859\"/>\r\n    <row from=\"30001858\" to=\"30001860\"/>\r\n    <row from=\"30001858\" to=\"30001864\"/>\r\n    <row from=\"30001859\" to=\"30001858\"/>\r\n    <row from=\"30001859\" to=\"30001862\"/>\r\n    <row from=\"30001860\" to=\"30001858\"/>\r\n    <row from=\"30001860\" to=\"30001861\"/>\r\n    <row from=\"30001861\" to=\"30001860\"/>\r\n    <row from=\"30001861\" to=\"30001865\"/>\r\n    <row from=\"30001862\" to=\"30001859\"/>\r\n    <row from=\"30001862\" to=\"30001863\"/>\r\n    <row from=\"30001863\" to=\"30001862\"/>\r\n    <row from=\"30001863\" to=\"30001866\"/>\r\n    <row from=\"30001863\" to=\"30001867\"/>\r\n    <row from=\"30001864\" to=\"30001858\"/>\r\n    <row from=\"30001864\" to=\"30001873\"/>\r\n    <row from=\"30001865\" to=\"30001861\"/>\r\n    <row from=\"30001865\" to=\"30003098\"/>\r\n    <row from=\"30001866\" to=\"30001863\"/>\r\n    <row from=\"30001867\" to=\"30001863\"/>\r\n    <row from=\"30001867\" to=\"30001868\"/>\r\n    <row from=\"30001868\" to=\"30001867\"/>\r\n    <row from=\"30001868\" to=\"30001869\"/>\r\n    <row from=\"30001868\" to=\"30001871\"/>\r\n    <row from=\"30001869\" to=\"30001868\"/>\r\n    <row from=\"30001869\" to=\"30001870\"/>\r\n    <row from=\"30001870\" to=\"30001869\"/>\r\n    <row from=\"30001870\" to=\"30001893\"/>\r\n    <row from=\"30001871\" to=\"30001868\"/>\r\n    <row from=\"30001871\" to=\"30001872\"/>\r\n    <row from=\"30001872\" to=\"30001871\"/>\r\n    <row from=\"30001872\" to=\"30001931\"/>\r\n    <row from=\"30001873\" to=\"30001864\"/>\r\n    <row from=\"30001873\" to=\"30001874\"/>\r\n    <row from=\"30001874\" to=\"30001873\"/>\r\n    <row from=\"30001874\" to=\"30001875\"/>\r\n    <row from=\"30001874\" to=\"30001876\"/>\r\n    <row from=\"30001874\" to=\"30001879\"/>\r\n    <row from=\"30001875\" to=\"30001874\"/>\r\n    <row from=\"30001875\" to=\"30001877\"/>\r\n    <row from=\"30001876\" to=\"30001874\"/>\r\n    <row from=\"30001877\" to=\"30001875\"/>\r\n    <row from=\"30001877\" to=\"30001878\"/>\r\n    <row from=\"30001878\" to=\"30001877\"/>\r\n    <row from=\"30001878\" to=\"30001880\"/>\r\n    <row from=\"30001878\" to=\"30001887\"/>\r\n    <row from=\"30001879\" to=\"30001874\"/>\r\n    <row from=\"30001880\" to=\"30001878\"/>\r\n    <row from=\"30001880\" to=\"30001881\"/>\r\n    <row from=\"30001880\" to=\"30001882\"/>\r\n    <row from=\"30001880\" to=\"30001883\"/>\r\n    <row from=\"30001881\" to=\"30001880\"/>\r\n    <row from=\"30001881\" to=\"30001886\"/>\r\n    <row from=\"30001882\" to=\"30001880\"/>\r\n    <row from=\"30001882\" to=\"30001883\"/>\r\n    <row from=\"30001882\" to=\"30001884\"/>\r\n    <row from=\"30001883\" to=\"30001880\"/>\r\n    <row from=\"30001883\" to=\"30001882\"/>\r\n    <row from=\"30001883\" to=\"30001885\"/>\r\n    <row from=\"30001884\" to=\"30001882\"/>\r\n    <row from=\"30001885\" to=\"30001883\"/>\r\n    <row from=\"30001886\" to=\"30001881\"/>\r\n    <row from=\"30001887\" to=\"30001878\"/>\r\n    <row from=\"30001887\" to=\"30001888\"/>\r\n    <row from=\"30001888\" to=\"30001887\"/>\r\n    <row from=\"30001888\" to=\"30001889\"/>\r\n    <row from=\"30001888\" to=\"30001890\"/>\r\n    <row from=\"30001889\" to=\"30001888\"/>\r\n    <row from=\"30001890\" to=\"30001888\"/>\r\n    <row from=\"30001890\" to=\"30001891\"/>\r\n    <row from=\"30001891\" to=\"30001890\"/>\r\n    <row from=\"30001891\" to=\"30001892\"/>\r\n    <row from=\"30001892\" to=\"30001891\"/>\r\n    <row from=\"30001892\" to=\"30001905\"/>\r\n    <row from=\"30001893\" to=\"30001870\"/>\r\n    <row from=\"30001893\" to=\"30001894\"/>\r\n    <row from=\"30001894\" to=\"30001893\"/>\r\n    <row from=\"30001894\" to=\"30001895\"/>\r\n    <row from=\"30001894\" to=\"30001896\"/>\r\n    <row from=\"30001894\" to=\"30001897\"/>\r\n    <row from=\"30001895\" to=\"30001894\"/>\r\n    <row from=\"30001895\" to=\"30001896\"/>\r\n    <row from=\"30001895\" to=\"30001899\"/>\r\n    <row from=\"30001896\" to=\"30001894\"/>\r\n    <row from=\"30001896\" to=\"30001895\"/>\r\n    <row from=\"30001896\" to=\"30001897\"/>\r\n    <row from=\"30001896\" to=\"30001898\"/>\r\n    <row from=\"30001897\" to=\"30001894\"/>\r\n    <row from=\"30001897\" to=\"30001896\"/>\r\n    <row from=\"30001897\" to=\"30001898\"/>\r\n    <row from=\"30001898\" to=\"30001896\"/>\r\n    <row from=\"30001898\" to=\"30001897\"/>\r\n    <row from=\"30001898\" to=\"30001911\"/>\r\n    <row from=\"30001899\" to=\"30001895\"/>\r\n    <row from=\"30001899\" to=\"30001900\"/>\r\n    <row from=\"30001899\" to=\"30001902\"/>\r\n    <row from=\"30001899\" to=\"30001903\"/>\r\n    <row from=\"30001900\" to=\"30001899\"/>\r\n    <row from=\"30001900\" to=\"30001901\"/>\r\n    <row from=\"30001900\" to=\"30001902\"/>\r\n    <row from=\"30001901\" to=\"30001900\"/>\r\n    <row from=\"30001901\" to=\"30001903\"/>\r\n    <row from=\"30001902\" to=\"30001899\"/>\r\n    <row from=\"30001902\" to=\"30001900\"/>\r\n    <row from=\"30001902\" to=\"30001904\"/>\r\n    <row from=\"30001903\" to=\"30001899\"/>\r\n    <row from=\"30001903\" to=\"30001901\"/>\r\n    <row from=\"30001903\" to=\"30001923\"/>\r\n    <row from=\"30001904\" to=\"30001902\"/>\r\n    <row from=\"30001904\" to=\"30001937\"/>\r\n    <row from=\"30001905\" to=\"30001892\"/>\r\n    <row from=\"30001905\" to=\"30001906\"/>\r\n    <row from=\"30001906\" to=\"30001905\"/>\r\n    <row from=\"30001906\" to=\"30001907\"/>\r\n    <row from=\"30001907\" to=\"30001906\"/>\r\n    <row from=\"30001907\" to=\"30001908\"/>\r\n    <row from=\"30001907\" to=\"30001910\"/>\r\n    <row from=\"30001908\" to=\"30001907\"/>\r\n    <row from=\"30001908\" to=\"30001909\"/>\r\n    <row from=\"30001909\" to=\"30001908\"/>\r\n    <row from=\"30001909\" to=\"30001910\"/>\r\n    <row from=\"30001910\" to=\"30001907\"/>\r\n    <row from=\"30001910\" to=\"30001909\"/>\r\n    <row from=\"30001911\" to=\"30001898\"/>\r\n    <row from=\"30001911\" to=\"30001912\"/>\r\n    <row from=\"30001911\" to=\"30001913\"/>\r\n    <row from=\"30001911\" to=\"30001914\"/>\r\n    <row from=\"30001911\" to=\"30001919\"/>\r\n    <row from=\"30001912\" to=\"30001911\"/>\r\n    <row from=\"30001913\" to=\"30001911\"/>\r\n    <row from=\"30001913\" to=\"30001915\"/>\r\n    <row from=\"30001913\" to=\"30001916\"/>\r\n    <row from=\"30001913\" to=\"30001921\"/>\r\n    <row from=\"30001914\" to=\"30001911\"/>\r\n    <row from=\"30001915\" to=\"30001913\"/>\r\n    <row from=\"30001916\" to=\"30001913\"/>\r\n    <row from=\"30001916\" to=\"30001917\"/>\r\n    <row from=\"30001917\" to=\"30001916\"/>\r\n    <row from=\"30001917\" to=\"30001918\"/>\r\n    <row from=\"30001917\" to=\"30001919\"/>\r\n    <row from=\"30001917\" to=\"30001920\"/>\r\n    <row from=\"30001918\" to=\"30001917\"/>\r\n    <row from=\"30001918\" to=\"30001922\"/>\r\n    <row from=\"30001919\" to=\"30001911\"/>\r\n    <row from=\"30001919\" to=\"30001917\"/>\r\n    <row from=\"30001920\" to=\"30001917\"/>\r\n    <row from=\"30001920\" to=\"30001921\"/>\r\n    <row from=\"30001921\" to=\"30001913\"/>\r\n    <row from=\"30001921\" to=\"30001920\"/>\r\n    <row from=\"30001921\" to=\"30001922\"/>\r\n    <row from=\"30001922\" to=\"30001918\"/>\r\n    <row from=\"30001922\" to=\"30001921\"/>\r\n    <row from=\"30001923\" to=\"30001903\"/>\r\n    <row from=\"30001923\" to=\"30001924\"/>\r\n    <row from=\"30001923\" to=\"30001925\"/>\r\n    <row from=\"30001924\" to=\"30001923\"/>\r\n    <row from=\"30001924\" to=\"30001927\"/>\r\n    <row from=\"30001925\" to=\"30001923\"/>\r\n    <row from=\"30001925\" to=\"30001926\"/>\r\n    <row from=\"30001925\" to=\"30001929\"/>\r\n    <row from=\"30001926\" to=\"30001925\"/>\r\n    <row from=\"30001926\" to=\"30001929\"/>\r\n    <row from=\"30001926\" to=\"30004932\"/>\r\n    <row from=\"30001927\" to=\"30001924\"/>\r\n    <row from=\"30001927\" to=\"30001928\"/>\r\n    <row from=\"30001927\" to=\"30001930\"/>\r\n    <row from=\"30001928\" to=\"30001927\"/>\r\n    <row from=\"30001928\" to=\"30001948\"/>\r\n    <row from=\"30001929\" to=\"30001925\"/>\r\n    <row from=\"30001929\" to=\"30001926\"/>\r\n    <row from=\"30001930\" to=\"30001927\"/>\r\n    <row from=\"30001931\" to=\"30001872\"/>\r\n    <row from=\"30001931\" to=\"30001932\"/>\r\n    <row from=\"30001931\" to=\"30001933\"/>\r\n    <row from=\"30001931\" to=\"30001934\"/>\r\n    <row from=\"30001932\" to=\"30001931\"/>\r\n    <row from=\"30001932\" to=\"30001933\"/>\r\n    <row from=\"30001932\" to=\"30001935\"/>\r\n    <row from=\"30001933\" to=\"30001931\"/>\r\n    <row from=\"30001933\" to=\"30001932\"/>\r\n    <row from=\"30001934\" to=\"30001931\"/>\r\n    <row from=\"30001935\" to=\"30001932\"/>\r\n    <row from=\"30001935\" to=\"30001936\"/>\r\n    <row from=\"30001936\" to=\"30001935\"/>\r\n    <row from=\"30001937\" to=\"30001904\"/>\r\n    <row from=\"30001937\" to=\"30001938\"/>\r\n    <row from=\"30001938\" to=\"30001937\"/>\r\n    <row from=\"30001938\" to=\"30001939\"/>\r\n    <row from=\"30001939\" to=\"30001938\"/>\r\n    <row from=\"30001939\" to=\"30001940\"/>\r\n    <row from=\"30001939\" to=\"30001941\"/>\r\n    <row from=\"30001940\" to=\"30001939\"/>\r\n    <row from=\"30001940\" to=\"30001942\"/>\r\n    <row from=\"30001941\" to=\"30001939\"/>\r\n    <row from=\"30001941\" to=\"30001943\"/>\r\n    <row from=\"30001942\" to=\"30001940\"/>\r\n    <row from=\"30001943\" to=\"30001941\"/>\r\n    <row from=\"30001943\" to=\"30001944\"/>\r\n    <row from=\"30001943\" to=\"30001945\"/>\r\n    <row from=\"30001944\" to=\"30001943\"/>\r\n    <row from=\"30001945\" to=\"30001943\"/>\r\n    <row from=\"30001945\" to=\"30001946\"/>\r\n    <row from=\"30001946\" to=\"30001945\"/>\r\n    <row from=\"30001946\" to=\"30001947\"/>\r\n    <row from=\"30001947\" to=\"30001946\"/>\r\n    <row from=\"30001948\" to=\"30001928\"/>\r\n    <row from=\"30001948\" to=\"30001949\"/>\r\n    <row from=\"30001948\" to=\"30001951\"/>\r\n    <row from=\"30001949\" to=\"30001948\"/>\r\n    <row from=\"30001949\" to=\"30001950\"/>\r\n    <row from=\"30001950\" to=\"30001949\"/>\r\n    <row from=\"30001951\" to=\"30001948\"/>\r\n    <row from=\"30001951\" to=\"30001952\"/>\r\n    <row from=\"30001951\" to=\"30001953\"/>\r\n    <row from=\"30001952\" to=\"30001951\"/>\r\n    <row from=\"30001952\" to=\"30001955\"/>\r\n    <row from=\"30001953\" to=\"30001951\"/>\r\n    <row from=\"30001953\" to=\"30001954\"/>\r\n    <row from=\"30001954\" to=\"30001953\"/>\r\n    <row from=\"30001954\" to=\"30001955\"/>\r\n    <row from=\"30001954\" to=\"30001956\"/>\r\n    <row from=\"30001955\" to=\"30001952\"/>\r\n    <row from=\"30001955\" to=\"30001954\"/>\r\n    <row from=\"30001956\" to=\"30001954\"/>\r\n    <row from=\"30001956\" to=\"30001957\"/>\r\n    <row from=\"30001956\" to=\"30001958\"/>\r\n    <row from=\"30001957\" to=\"30001721\"/>\r\n    <row from=\"30001957\" to=\"30001956\"/>\r\n    <row from=\"30001957\" to=\"30001959\"/>\r\n    <row from=\"30001957\" to=\"30001962\"/>\r\n    <row from=\"30001958\" to=\"30001956\"/>\r\n    <row from=\"30001958\" to=\"30001960\"/>\r\n    <row from=\"30001958\" to=\"30001961\"/>\r\n    <row from=\"30001959\" to=\"30001957\"/>\r\n    <row from=\"30001959\" to=\"30001962\"/>\r\n    <row from=\"30001960\" to=\"30001958\"/>\r\n    <row from=\"30001961\" to=\"30001958\"/>\r\n    <row from=\"30001962\" to=\"30001957\"/>\r\n    <row from=\"30001962\" to=\"30001959\"/>\r\n    <row from=\"30001963\" to=\"30000857\"/>\r\n    <row from=\"30001963\" to=\"30001964\"/>\r\n    <row from=\"30001963\" to=\"30001967\"/>\r\n    <row from=\"30001964\" to=\"30001963\"/>\r\n    <row from=\"30001964\" to=\"30001965\"/>\r\n    <row from=\"30001965\" to=\"30001964\"/>\r\n    <row from=\"30001965\" to=\"30001966\"/>\r\n    <row from=\"30001965\" to=\"30001968\"/>\r\n    <row from=\"30001966\" to=\"30001965\"/>\r\n    <row from=\"30001966\" to=\"30001967\"/>\r\n    <row from=\"30001967\" to=\"30001963\"/>\r\n    <row from=\"30001967\" to=\"30001966\"/>\r\n    <row from=\"30001967\" to=\"30001977\"/>\r\n    <row from=\"30001968\" to=\"30001965\"/>\r\n    <row from=\"30001968\" to=\"30001969\"/>\r\n    <row from=\"30001968\" to=\"30002004\"/>\r\n    <row from=\"30001969\" to=\"30001968\"/>\r\n    <row from=\"30001969\" to=\"30001970\"/>\r\n    <row from=\"30001969\" to=\"30001973\"/>\r\n    <row from=\"30001970\" to=\"30001969\"/>\r\n    <row from=\"30001970\" to=\"30001971\"/>\r\n    <row from=\"30001970\" to=\"30001972\"/>\r\n    <row from=\"30001970\" to=\"30001974\"/>\r\n    <row from=\"30001971\" to=\"30001970\"/>\r\n    <row from=\"30001972\" to=\"30001970\"/>\r\n    <row from=\"30001972\" to=\"30001975\"/>\r\n    <row from=\"30001973\" to=\"30001969\"/>\r\n    <row from=\"30001974\" to=\"30001970\"/>\r\n    <row from=\"30001975\" to=\"30001972\"/>\r\n    <row from=\"30001975\" to=\"30001976\"/>\r\n    <row from=\"30001976\" to=\"30001975\"/>\r\n    <row from=\"30001976\" to=\"30001991\"/>\r\n    <row from=\"30001976\" to=\"30001998\"/>\r\n    <row from=\"30001977\" to=\"30001967\"/>\r\n    <row from=\"30001977\" to=\"30001978\"/>\r\n    <row from=\"30001977\" to=\"30001982\"/>\r\n    <row from=\"30001977\" to=\"30002015\"/>\r\n    <row from=\"30001978\" to=\"30001977\"/>\r\n    <row from=\"30001978\" to=\"30001979\"/>\r\n    <row from=\"30001978\" to=\"30001980\"/>\r\n    <row from=\"30001978\" to=\"30001989\"/>\r\n    <row from=\"30001978\" to=\"30002010\"/>\r\n    <row from=\"30001978\" to=\"30002012\"/>\r\n    <row from=\"30001979\" to=\"30001978\"/>\r\n    <row from=\"30001979\" to=\"30001980\"/>\r\n    <row from=\"30001979\" to=\"30001981\"/>\r\n    <row from=\"30001980\" to=\"30001978\"/>\r\n    <row from=\"30001980\" to=\"30001979\"/>\r\n    <row from=\"30001980\" to=\"30001981\"/>\r\n    <row from=\"30001980\" to=\"30001982\"/>\r\n    <row from=\"30001980\" to=\"30002016\"/>\r\n    <row from=\"30001981\" to=\"30001979\"/>\r\n    <row from=\"30001981\" to=\"30001980\"/>\r\n    <row from=\"30001981\" to=\"30002023\"/>\r\n    <row from=\"30001982\" to=\"30001977\"/>\r\n    <row from=\"30001982\" to=\"30001980\"/>\r\n    <row from=\"30001982\" to=\"30001983\"/>\r\n    <row from=\"30001983\" to=\"30001982\"/>\r\n    <row from=\"30001983\" to=\"30003676\"/>\r\n    <row from=\"30001984\" to=\"30001429\"/>\r\n    <row from=\"30001984\" to=\"30001985\"/>\r\n    <row from=\"30001984\" to=\"30001987\"/>\r\n    <row from=\"30001985\" to=\"30001984\"/>\r\n    <row from=\"30001985\" to=\"30001986\"/>\r\n    <row from=\"30001985\" to=\"30001987\"/>\r\n    <row from=\"30001986\" to=\"30001985\"/>\r\n    <row from=\"30001986\" to=\"30001988\"/>\r\n    <row from=\"30001986\" to=\"30001989\"/>\r\n    <row from=\"30001987\" to=\"30001984\"/>\r\n    <row from=\"30001987\" to=\"30001985\"/>\r\n    <row from=\"30001987\" to=\"30001990\"/>\r\n    <row from=\"30001987\" to=\"30002002\"/>\r\n    <row from=\"30001988\" to=\"30001986\"/>\r\n    <row from=\"30001989\" to=\"30001978\"/>\r\n    <row from=\"30001989\" to=\"30001986\"/>\r\n    <row from=\"30001989\" to=\"30002010\"/>\r\n    <row from=\"30001990\" to=\"30001442\"/>\r\n    <row from=\"30001990\" to=\"30001987\"/>\r\n    <row from=\"30001991\" to=\"30001976\"/>\r\n    <row from=\"30001991\" to=\"30001992\"/>\r\n    <row from=\"30001992\" to=\"30001991\"/>\r\n    <row from=\"30001992\" to=\"30001993\"/>\r\n    <row from=\"30001993\" to=\"30001992\"/>\r\n    <row from=\"30001993\" to=\"30001994\"/>\r\n    <row from=\"30001993\" to=\"30001997\"/>\r\n    <row from=\"30001994\" to=\"30001993\"/>\r\n    <row from=\"30001994\" to=\"30001995\"/>\r\n    <row from=\"30001994\" to=\"30001996\"/>\r\n    <row from=\"30001994\" to=\"30001997\"/>\r\n    <row from=\"30001995\" to=\"30001994\"/>\r\n    <row from=\"30001995\" to=\"30001996\"/>\r\n    <row from=\"30001996\" to=\"30001994\"/>\r\n    <row from=\"30001996\" to=\"30001995\"/>\r\n    <row from=\"30001997\" to=\"30001993\"/>\r\n    <row from=\"30001997\" to=\"30001994\"/>\r\n    <row from=\"30001997\" to=\"30003681\"/>\r\n    <row from=\"30001998\" to=\"30001976\"/>\r\n    <row from=\"30001998\" to=\"30001999\"/>\r\n    <row from=\"30001999\" to=\"30001998\"/>\r\n    <row from=\"30001999\" to=\"30002000\"/>\r\n    <row from=\"30001999\" to=\"30002003\"/>\r\n    <row from=\"30002000\" to=\"30001999\"/>\r\n    <row from=\"30002000\" to=\"30002001\"/>\r\n    <row from=\"30002000\" to=\"30002002\"/>\r\n    <row from=\"30002001\" to=\"30002000\"/>\r\n    <row from=\"30002001\" to=\"30002002\"/>\r\n    <row from=\"30002001\" to=\"30002003\"/>\r\n    <row from=\"30002002\" to=\"30001987\"/>\r\n    <row from=\"30002002\" to=\"30002000\"/>\r\n    <row from=\"30002002\" to=\"30002001\"/>\r\n    <row from=\"30002002\" to=\"30002003\"/>\r\n    <row from=\"30002003\" to=\"30001999\"/>\r\n    <row from=\"30002003\" to=\"30002001\"/>\r\n    <row from=\"30002003\" to=\"30002002\"/>\r\n    <row from=\"30002004\" to=\"30001968\"/>\r\n    <row from=\"30002004\" to=\"30002005\"/>\r\n    <row from=\"30002005\" to=\"30002004\"/>\r\n    <row from=\"30002005\" to=\"30002006\"/>\r\n    <row from=\"30002005\" to=\"30002007\"/>\r\n    <row from=\"30002006\" to=\"30002005\"/>\r\n    <row from=\"30002006\" to=\"30002008\"/>\r\n    <row from=\"30002006\" to=\"30002009\"/>\r\n    <row from=\"30002006\" to=\"30002010\"/>\r\n    <row from=\"30002007\" to=\"30002005\"/>\r\n    <row from=\"30002007\" to=\"30002014\"/>\r\n    <row from=\"30002008\" to=\"30002006\"/>\r\n    <row from=\"30002008\" to=\"30002009\"/>\r\n    <row from=\"30002009\" to=\"30002006\"/>\r\n    <row from=\"30002009\" to=\"30002008\"/>\r\n    <row from=\"30002010\" to=\"30001978\"/>\r\n    <row from=\"30002010\" to=\"30001989\"/>\r\n    <row from=\"30002010\" to=\"30002006\"/>\r\n    <row from=\"30002010\" to=\"30002011\"/>\r\n    <row from=\"30002011\" to=\"30002010\"/>\r\n    <row from=\"30002011\" to=\"30002012\"/>\r\n    <row from=\"30002011\" to=\"30002013\"/>\r\n    <row from=\"30002011\" to=\"30002014\"/>\r\n    <row from=\"30002012\" to=\"30001978\"/>\r\n    <row from=\"30002012\" to=\"30002011\"/>\r\n    <row from=\"30002013\" to=\"30002011\"/>\r\n    <row from=\"30002013\" to=\"30002015\"/>\r\n    <row from=\"30002014\" to=\"30002007\"/>\r\n    <row from=\"30002014\" to=\"30002011\"/>\r\n    <row from=\"30002014\" to=\"30002015\"/>\r\n    <row from=\"30002015\" to=\"30001977\"/>\r\n    <row from=\"30002015\" to=\"30002013\"/>\r\n    <row from=\"30002015\" to=\"30002014\"/>\r\n    <row from=\"30002016\" to=\"30001980\"/>\r\n    <row from=\"30002016\" to=\"30002017\"/>\r\n    <row from=\"30002016\" to=\"30002019\"/>\r\n    <row from=\"30002016\" to=\"30002020\"/>\r\n    <row from=\"30002017\" to=\"30002016\"/>\r\n    <row from=\"30002017\" to=\"30002018\"/>\r\n    <row from=\"30002018\" to=\"30002017\"/>\r\n    <row from=\"30002018\" to=\"30002019\"/>\r\n    <row from=\"30002018\" to=\"30002021\"/>\r\n    <row from=\"30002019\" to=\"30002016\"/>\r\n    <row from=\"30002019\" to=\"30002018\"/>\r\n    <row from=\"30002019\" to=\"30002029\"/>\r\n    <row from=\"30002020\" to=\"30002016\"/>\r\n    <row from=\"30002021\" to=\"30002018\"/>\r\n    <row from=\"30002021\" to=\"30002022\"/>\r\n    <row from=\"30002022\" to=\"30002021\"/>\r\n    <row from=\"30002022\" to=\"30002035\"/>\r\n    <row from=\"30002023\" to=\"30001981\"/>\r\n    <row from=\"30002023\" to=\"30002024\"/>\r\n    <row from=\"30002024\" to=\"30002023\"/>\r\n    <row from=\"30002024\" to=\"30002025\"/>\r\n    <row from=\"30002024\" to=\"30002027\"/>\r\n    <row from=\"30002024\" to=\"30002028\"/>\r\n    <row from=\"30002025\" to=\"30002024\"/>\r\n    <row from=\"30002025\" to=\"30002026\"/>\r\n    <row from=\"30002025\" to=\"30002027\"/>\r\n    <row from=\"30002025\" to=\"30002028\"/>\r\n    <row from=\"30002026\" to=\"30002025\"/>\r\n    <row from=\"30002027\" to=\"30002024\"/>\r\n    <row from=\"30002027\" to=\"30002025\"/>\r\n    <row from=\"30002027\" to=\"30002028\"/>\r\n    <row from=\"30002028\" to=\"30002024\"/>\r\n    <row from=\"30002028\" to=\"30002025\"/>\r\n    <row from=\"30002028\" to=\"30002027\"/>\r\n    <row from=\"30002029\" to=\"30002019\"/>\r\n    <row from=\"30002029\" to=\"30002030\"/>\r\n    <row from=\"30002029\" to=\"30002031\"/>\r\n    <row from=\"30002030\" to=\"30002029\"/>\r\n    <row from=\"30002030\" to=\"30002031\"/>\r\n    <row from=\"30002030\" to=\"30002032\"/>\r\n    <row from=\"30002030\" to=\"30002033\"/>\r\n    <row from=\"30002030\" to=\"30002034\"/>\r\n    <row from=\"30002031\" to=\"30002029\"/>\r\n    <row from=\"30002031\" to=\"30002030\"/>\r\n    <row from=\"30002032\" to=\"30002030\"/>\r\n    <row from=\"30002032\" to=\"30002033\"/>\r\n    <row from=\"30002032\" to=\"30003685\"/>\r\n    <row from=\"30002033\" to=\"30002030\"/>\r\n    <row from=\"30002033\" to=\"30002032\"/>\r\n    <row from=\"30002033\" to=\"30002034\"/>\r\n    <row from=\"30002033\" to=\"30002042\"/>\r\n    <row from=\"30002034\" to=\"30002030\"/>\r\n    <row from=\"30002034\" to=\"30002033\"/>\r\n    <row from=\"30002035\" to=\"30002022\"/>\r\n    <row from=\"30002035\" to=\"30002036\"/>\r\n    <row from=\"30002035\" to=\"30002038\"/>\r\n    <row from=\"30002035\" to=\"30002039\"/>\r\n    <row from=\"30002036\" to=\"30002035\"/>\r\n    <row from=\"30002036\" to=\"30002037\"/>\r\n    <row from=\"30002036\" to=\"30002039\"/>\r\n    <row from=\"30002036\" to=\"30002040\"/>\r\n    <row from=\"30002037\" to=\"30002036\"/>\r\n    <row from=\"30002037\" to=\"30002038\"/>\r\n    <row from=\"30002037\" to=\"30002041\"/>\r\n    <row from=\"30002038\" to=\"30002035\"/>\r\n    <row from=\"30002038\" to=\"30002037\"/>\r\n    <row from=\"30002039\" to=\"30002035\"/>\r\n    <row from=\"30002039\" to=\"30002036\"/>\r\n    <row from=\"30002039\" to=\"30003855\"/>\r\n    <row from=\"30002040\" to=\"30002036\"/>\r\n    <row from=\"30002041\" to=\"30002037\"/>\r\n    <row from=\"30002042\" to=\"30002033\"/>\r\n    <row from=\"30002042\" to=\"30002043\"/>\r\n    <row from=\"30002043\" to=\"30002042\"/>\r\n    <row from=\"30002043\" to=\"30002044\"/>\r\n    <row from=\"30002044\" to=\"30002043\"/>\r\n    <row from=\"30002044\" to=\"30002045\"/>\r\n    <row from=\"30002044\" to=\"30002046\"/>\r\n    <row from=\"30002045\" to=\"30002044\"/>\r\n    <row from=\"30002045\" to=\"30002047\"/>\r\n    <row from=\"30002046\" to=\"30002044\"/>\r\n    <row from=\"30002046\" to=\"30004063\"/>\r\n    <row from=\"30002047\" to=\"30002045\"/>\r\n    <row from=\"30002048\" to=\"30002049\"/>\r\n    <row from=\"30002048\" to=\"30002050\"/>\r\n    <row from=\"30002048\" to=\"30002682\"/>\r\n    <row from=\"30002048\" to=\"30003386\"/>\r\n    <row from=\"30002049\" to=\"30002048\"/>\r\n    <row from=\"30002049\" to=\"30002053\"/>\r\n    <row from=\"30002050\" to=\"30002048\"/>\r\n    <row from=\"30002050\" to=\"30002051\"/>\r\n    <row from=\"30002050\" to=\"30002052\"/>\r\n    <row from=\"30002050\" to=\"30002076\"/>\r\n    <row from=\"30002050\" to=\"30002720\"/>\r\n    <row from=\"30002051\" to=\"30002050\"/>\r\n    <row from=\"30002051\" to=\"30002060\"/>\r\n    <row from=\"30002052\" to=\"30002050\"/>\r\n    <row from=\"30002053\" to=\"30002049\"/>\r\n    <row from=\"30002053\" to=\"30002054\"/>\r\n    <row from=\"30002053\" to=\"30002068\"/>\r\n    <row from=\"30002053\" to=\"30002543\"/>\r\n    <row from=\"30002053\" to=\"30002723\"/>\r\n    <row from=\"30002054\" to=\"30002053\"/>\r\n    <row from=\"30002054\" to=\"30002055\"/>\r\n    <row from=\"30002054\" to=\"30002056\"/>\r\n    <row from=\"30002055\" to=\"30002054\"/>\r\n    <row from=\"30002055\" to=\"30002056\"/>\r\n    <row from=\"30002055\" to=\"30002059\"/>\r\n    <row from=\"30002056\" to=\"30002054\"/>\r\n    <row from=\"30002056\" to=\"30002055\"/>\r\n    <row from=\"30002056\" to=\"30002057\"/>\r\n    <row from=\"30002056\" to=\"30002059\"/>\r\n    <row from=\"30002057\" to=\"30002056\"/>\r\n    <row from=\"30002057\" to=\"30002058\"/>\r\n    <row from=\"30002057\" to=\"30002097\"/>\r\n    <row from=\"30002058\" to=\"30002057\"/>\r\n    <row from=\"30002058\" to=\"30002082\"/>\r\n    <row from=\"30002058\" to=\"30002090\"/>\r\n    <row from=\"30002059\" to=\"30002055\"/>\r\n    <row from=\"30002059\" to=\"30002056\"/>\r\n    <row from=\"30002060\" to=\"30002051\"/>\r\n    <row from=\"30002060\" to=\"30002061\"/>\r\n    <row from=\"30002060\" to=\"30002062\"/>\r\n    <row from=\"30002060\" to=\"30002065\"/>\r\n    <row from=\"30002060\" to=\"30002066\"/>\r\n    <row from=\"30002061\" to=\"30002060\"/>\r\n    <row from=\"30002061\" to=\"30002065\"/>\r\n    <row from=\"30002062\" to=\"30000200\"/>\r\n    <row from=\"30002062\" to=\"30002060\"/>\r\n    <row from=\"30002062\" to=\"30002063\"/>\r\n    <row from=\"30002062\" to=\"30002064\"/>\r\n    <row from=\"30002063\" to=\"30002062\"/>\r\n    <row from=\"30002063\" to=\"30002064\"/>\r\n    <row from=\"30002063\" to=\"30002067\"/>\r\n    <row from=\"30002064\" to=\"30002062\"/>\r\n    <row from=\"30002064\" to=\"30002063\"/>\r\n    <row from=\"30002064\" to=\"30002067\"/>\r\n    <row from=\"30002064\" to=\"30002560\"/>\r\n    <row from=\"30002065\" to=\"30002060\"/>\r\n    <row from=\"30002065\" to=\"30002061\"/>\r\n    <row from=\"30002065\" to=\"30002066\"/>\r\n    <row from=\"30002066\" to=\"30002060\"/>\r\n    <row from=\"30002066\" to=\"30002065\"/>\r\n    <row from=\"30002066\" to=\"30002099\"/>\r\n    <row from=\"30002067\" to=\"30002063\"/>\r\n    <row from=\"30002067\" to=\"30002064\"/>\r\n    <row from=\"30002068\" to=\"30002053\"/>\r\n    <row from=\"30002068\" to=\"30002069\"/>\r\n    <row from=\"30002068\" to=\"30002070\"/>\r\n    <row from=\"30002068\" to=\"30002071\"/>\r\n    <row from=\"30002068\" to=\"30002072\"/>\r\n    <row from=\"30002068\" to=\"30002073\"/>\r\n    <row from=\"30002068\" to=\"30002074\"/>\r\n    <row from=\"30002069\" to=\"30002068\"/>\r\n    <row from=\"30002069\" to=\"30002071\"/>\r\n    <row from=\"30002070\" to=\"30002068\"/>\r\n    <row from=\"30002070\" to=\"30002072\"/>\r\n    <row from=\"30002070\" to=\"30002075\"/>\r\n    <row from=\"30002071\" to=\"30002068\"/>\r\n    <row from=\"30002071\" to=\"30002069\"/>\r\n    <row from=\"30002071\" to=\"30002073\"/>\r\n    <row from=\"30002071\" to=\"30002074\"/>\r\n    <row from=\"30002071\" to=\"30002075\"/>\r\n    <row from=\"30002072\" to=\"30002068\"/>\r\n    <row from=\"30002072\" to=\"30002070\"/>\r\n    <row from=\"30002072\" to=\"30002073\"/>\r\n    <row from=\"30002073\" to=\"30002068\"/>\r\n    <row from=\"30002073\" to=\"30002071\"/>\r\n    <row from=\"30002073\" to=\"30002072\"/>\r\n    <row from=\"30002073\" to=\"30002074\"/>\r\n    <row from=\"30002074\" to=\"30002068\"/>\r\n    <row from=\"30002074\" to=\"30002071\"/>\r\n    <row from=\"30002074\" to=\"30002073\"/>\r\n    <row from=\"30002075\" to=\"30002070\"/>\r\n    <row from=\"30002075\" to=\"30002071\"/>\r\n    <row from=\"30002076\" to=\"30002050\"/>\r\n    <row from=\"30002076\" to=\"30002077\"/>\r\n    <row from=\"30002076\" to=\"30002080\"/>\r\n    <row from=\"30002077\" to=\"30002076\"/>\r\n    <row from=\"30002077\" to=\"30002078\"/>\r\n    <row from=\"30002078\" to=\"30002077\"/>\r\n    <row from=\"30002078\" to=\"30002080\"/>\r\n    <row from=\"30002078\" to=\"30002081\"/>\r\n    <row from=\"30002079\" to=\"30000192\"/>\r\n    <row from=\"30002079\" to=\"30002737\"/>\r\n    <row from=\"30002080\" to=\"30002076\"/>\r\n    <row from=\"30002080\" to=\"30002078\"/>\r\n    <row from=\"30002080\" to=\"30002081\"/>\r\n    <row from=\"30002081\" to=\"30002078\"/>\r\n    <row from=\"30002081\" to=\"30002080\"/>\r\n    <row from=\"30002082\" to=\"30002058\"/>\r\n    <row from=\"30002082\" to=\"30002083\"/>\r\n    <row from=\"30002082\" to=\"30002084\"/>\r\n    <row from=\"30002083\" to=\"30002082\"/>\r\n    <row from=\"30002083\" to=\"30002084\"/>\r\n    <row from=\"30002083\" to=\"30002085\"/>\r\n    <row from=\"30002083\" to=\"30002086\"/>\r\n    <row from=\"30002084\" to=\"30002082\"/>\r\n    <row from=\"30002084\" to=\"30002083\"/>\r\n    <row from=\"30002084\" to=\"30002085\"/>\r\n    <row from=\"30002084\" to=\"30002086\"/>\r\n    <row from=\"30002084\" to=\"30002087\"/>\r\n    <row from=\"30002084\" to=\"30002088\"/>\r\n    <row from=\"30002084\" to=\"30002089\"/>\r\n    <row from=\"30002085\" to=\"30002083\"/>\r\n    <row from=\"30002085\" to=\"30002084\"/>\r\n    <row from=\"30002085\" to=\"30002087\"/>\r\n    <row from=\"30002085\" to=\"30002089\"/>\r\n    <row from=\"30002086\" to=\"30002083\"/>\r\n    <row from=\"30002086\" to=\"30002084\"/>\r\n    <row from=\"30002086\" to=\"30002087\"/>\r\n    <row from=\"30002086\" to=\"30100000\"/>\r\n    <row from=\"30002087\" to=\"30002084\"/>\r\n    <row from=\"30002087\" to=\"30002085\"/>\r\n    <row from=\"30002087\" to=\"30002086\"/>\r\n    <row from=\"30002087\" to=\"30002088\"/>\r\n    <row from=\"30002087\" to=\"30003089\"/>\r\n    <row from=\"30002088\" to=\"30002084\"/>\r\n    <row from=\"30002088\" to=\"30002087\"/>\r\n    <row from=\"30002089\" to=\"30002084\"/>\r\n    <row from=\"30002089\" to=\"30002085\"/>\r\n    <row from=\"30002089\" to=\"30002684\"/>\r\n    <row from=\"30002090\" to=\"30002058\"/>\r\n    <row from=\"30002090\" to=\"30002091\"/>\r\n    <row from=\"30002090\" to=\"30002092\"/>\r\n    <row from=\"30002090\" to=\"30002093\"/>\r\n    <row from=\"30002090\" to=\"30002094\"/>\r\n    <row from=\"30002090\" to=\"30002095\"/>\r\n    <row from=\"30002091\" to=\"30002090\"/>\r\n    <row from=\"30002091\" to=\"30002092\"/>\r\n    <row from=\"30002091\" to=\"30002093\"/>\r\n    <row from=\"30002091\" to=\"30002094\"/>\r\n    <row from=\"30002092\" to=\"30002090\"/>\r\n    <row from=\"30002092\" to=\"30002091\"/>\r\n    <row from=\"30002092\" to=\"30002094\"/>\r\n    <row from=\"30002093\" to=\"30002090\"/>\r\n    <row from=\"30002093\" to=\"30002091\"/>\r\n    <row from=\"30002093\" to=\"30002094\"/>\r\n    <row from=\"30002093\" to=\"30002095\"/>\r\n    <row from=\"30002094\" to=\"30002090\"/>\r\n    <row from=\"30002094\" to=\"30002091\"/>\r\n    <row from=\"30002094\" to=\"30002092\"/>\r\n    <row from=\"30002094\" to=\"30002093\"/>\r\n    <row from=\"30002094\" to=\"30002095\"/>\r\n    <row from=\"30002095\" to=\"30002090\"/>\r\n    <row from=\"30002095\" to=\"30002093\"/>\r\n    <row from=\"30002095\" to=\"30002094\"/>\r\n    <row from=\"30002095\" to=\"30002096\"/>\r\n    <row from=\"30002095\" to=\"30002539\"/>\r\n    <row from=\"30002096\" to=\"30002095\"/>\r\n    <row from=\"30002096\" to=\"30002541\"/>\r\n    <row from=\"30002097\" to=\"30002057\"/>\r\n    <row from=\"30002097\" to=\"30002098\"/>\r\n    <row from=\"30002098\" to=\"30002097\"/>\r\n    <row from=\"30002098\" to=\"30002099\"/>\r\n    <row from=\"30002099\" to=\"30002066\"/>\r\n    <row from=\"30002099\" to=\"30002098\"/>\r\n    <row from=\"30002099\" to=\"30002100\"/>\r\n    <row from=\"30002099\" to=\"30002517\"/>\r\n    <row from=\"30002100\" to=\"30002099\"/>\r\n    <row from=\"30002100\" to=\"30002101\"/>\r\n    <row from=\"30002100\" to=\"30002102\"/>\r\n    <row from=\"30002101\" to=\"30002100\"/>\r\n    <row from=\"30002101\" to=\"30002102\"/>\r\n    <row from=\"30002102\" to=\"30002100\"/>\r\n    <row from=\"30002102\" to=\"30002101\"/>\r\n    <row from=\"30002103\" to=\"30002105\"/>\r\n    <row from=\"30002103\" to=\"30002122\"/>\r\n    <row from=\"30002104\" to=\"30002105\"/>\r\n    <row from=\"30002104\" to=\"30002108\"/>\r\n    <row from=\"30002104\" to=\"30002138\"/>\r\n    <row from=\"30002105\" to=\"30002103\"/>\r\n    <row from=\"30002105\" to=\"30002104\"/>\r\n    <row from=\"30002105\" to=\"30002107\"/>\r\n    <row from=\"30002106\" to=\"30002108\"/>\r\n    <row from=\"30002107\" to=\"30002105\"/>\r\n    <row from=\"30002108\" to=\"30002104\"/>\r\n    <row from=\"30002108\" to=\"30002106\"/>\r\n    <row from=\"30002109\" to=\"30002110\"/>\r\n    <row from=\"30002109\" to=\"30002111\"/>\r\n    <row from=\"30002109\" to=\"30002112\"/>\r\n    <row from=\"30002109\" to=\"30002113\"/>\r\n    <row from=\"30002109\" to=\"30002114\"/>\r\n    <row from=\"30002110\" to=\"30002109\"/>\r\n    <row from=\"30002110\" to=\"30002112\"/>\r\n    <row from=\"30002110\" to=\"30002122\"/>\r\n    <row from=\"30002110\" to=\"30002145\"/>\r\n    <row from=\"30002111\" to=\"30002109\"/>\r\n    <row from=\"30002111\" to=\"30002113\"/>\r\n    <row from=\"30002111\" to=\"30002114\"/>\r\n    <row from=\"30002112\" to=\"30002109\"/>\r\n    <row from=\"30002112\" to=\"30002110\"/>\r\n    <row from=\"30002112\" to=\"30002115\"/>\r\n    <row from=\"30002113\" to=\"30002109\"/>\r\n    <row from=\"30002113\" to=\"30002111\"/>\r\n    <row from=\"30002113\" to=\"30002114\"/>\r\n    <row from=\"30002114\" to=\"30002109\"/>\r\n    <row from=\"30002114\" to=\"30002111\"/>\r\n    <row from=\"30002114\" to=\"30002113\"/>\r\n    <row from=\"30002115\" to=\"30002112\"/>\r\n    <row from=\"30002115\" to=\"30002116\"/>\r\n    <row from=\"30002116\" to=\"30002115\"/>\r\n    <row from=\"30002117\" to=\"30002119\"/>\r\n    <row from=\"30002117\" to=\"30002120\"/>\r\n    <row from=\"30002118\" to=\"30001166\"/>\r\n    <row from=\"30002118\" to=\"30002120\"/>\r\n    <row from=\"30002119\" to=\"30002117\"/>\r\n    <row from=\"30002119\" to=\"30002121\"/>\r\n    <row from=\"30002119\" to=\"30002122\"/>\r\n    <row from=\"30002119\" to=\"30002123\"/>\r\n    <row from=\"30002120\" to=\"30002117\"/>\r\n    <row from=\"30002120\" to=\"30002118\"/>\r\n    <row from=\"30002120\" to=\"30002133\"/>\r\n    <row from=\"30002121\" to=\"30002119\"/>\r\n    <row from=\"30002122\" to=\"30002103\"/>\r\n    <row from=\"30002122\" to=\"30002110\"/>\r\n    <row from=\"30002122\" to=\"30002119\"/>\r\n    <row from=\"30002122\" to=\"30004804\"/>\r\n    <row from=\"30002123\" to=\"30002119\"/>\r\n    <row from=\"30002123\" to=\"30002124\"/>\r\n    <row from=\"30002123\" to=\"30002125\"/>\r\n    <row from=\"30002123\" to=\"30002127\"/>\r\n    <row from=\"30002124\" to=\"30002123\"/>\r\n    <row from=\"30002124\" to=\"30002126\"/>\r\n    <row from=\"30002124\" to=\"30002127\"/>\r\n    <row from=\"30002125\" to=\"30002123\"/>\r\n    <row from=\"30002125\" to=\"30002127\"/>\r\n    <row from=\"30002126\" to=\"30002124\"/>\r\n    <row from=\"30002126\" to=\"30002128\"/>\r\n    <row from=\"30002127\" to=\"30002123\"/>\r\n    <row from=\"30002127\" to=\"30002124\"/>\r\n    <row from=\"30002127\" to=\"30002125\"/>\r\n    <row from=\"30002128\" to=\"30002126\"/>\r\n    <row from=\"30002129\" to=\"30002131\"/>\r\n    <row from=\"30002129\" to=\"30002133\"/>\r\n    <row from=\"30002129\" to=\"30002134\"/>\r\n    <row from=\"30002129\" to=\"30002153\"/>\r\n    <row from=\"30002130\" to=\"30002131\"/>\r\n    <row from=\"30002130\" to=\"30002133\"/>\r\n    <row from=\"30002130\" to=\"30002134\"/>\r\n    <row from=\"30002130\" to=\"30002136\"/>\r\n    <row from=\"30002131\" to=\"30002129\"/>\r\n    <row from=\"30002131\" to=\"30002130\"/>\r\n    <row from=\"30002131\" to=\"30002134\"/>\r\n    <row from=\"30002131\" to=\"30002135\"/>\r\n    <row from=\"30002132\" to=\"30002133\"/>\r\n    <row from=\"30002133\" to=\"30002120\"/>\r\n    <row from=\"30002133\" to=\"30002129\"/>\r\n    <row from=\"30002133\" to=\"30002130\"/>\r\n    <row from=\"30002133\" to=\"30002132\"/>\r\n    <row from=\"30002133\" to=\"30002137\"/>\r\n    <row from=\"30002134\" to=\"30002129\"/>\r\n    <row from=\"30002134\" to=\"30002130\"/>\r\n    <row from=\"30002134\" to=\"30002131\"/>\r\n    <row from=\"30002134\" to=\"30002135\"/>\r\n    <row from=\"30002134\" to=\"30002136\"/>\r\n    <row from=\"30002135\" to=\"30002131\"/>\r\n    <row from=\"30002135\" to=\"30002134\"/>\r\n    <row from=\"30002136\" to=\"30002130\"/>\r\n    <row from=\"30002136\" to=\"30002134\"/>\r\n    <row from=\"30002137\" to=\"30002133\"/>\r\n    <row from=\"30002138\" to=\"30002104\"/>\r\n    <row from=\"30002138\" to=\"30002139\"/>\r\n    <row from=\"30002138\" to=\"30002140\"/>\r\n    <row from=\"30002139\" to=\"30002138\"/>\r\n    <row from=\"30002139\" to=\"30002141\"/>\r\n    <row from=\"30002139\" to=\"30002165\"/>\r\n    <row from=\"30002140\" to=\"30002138\"/>\r\n    <row from=\"30002140\" to=\"30002142\"/>\r\n    <row from=\"30002140\" to=\"30002144\"/>\r\n    <row from=\"30002141\" to=\"30002139\"/>\r\n    <row from=\"30002141\" to=\"30002143\"/>\r\n    <row from=\"30002142\" to=\"30002140\"/>\r\n    <row from=\"30002142\" to=\"30002144\"/>\r\n    <row from=\"30002143\" to=\"30002141\"/>\r\n    <row from=\"30002143\" to=\"30002159\"/>\r\n    <row from=\"30002144\" to=\"30002140\"/>\r\n    <row from=\"30002144\" to=\"30002142\"/>\r\n    <row from=\"30002145\" to=\"30002110\"/>\r\n    <row from=\"30002145\" to=\"30002146\"/>\r\n    <row from=\"30002145\" to=\"30002147\"/>\r\n    <row from=\"30002145\" to=\"30002148\"/>\r\n    <row from=\"30002146\" to=\"30002145\"/>\r\n    <row from=\"30002146\" to=\"30002147\"/>\r\n    <row from=\"30002146\" to=\"30002148\"/>\r\n    <row from=\"30002146\" to=\"30002149\"/>\r\n    <row from=\"30002146\" to=\"30002150\"/>\r\n    <row from=\"30002147\" to=\"30002145\"/>\r\n    <row from=\"30002147\" to=\"30002146\"/>\r\n    <row from=\"30002147\" to=\"30002150\"/>\r\n    <row from=\"30002148\" to=\"30002145\"/>\r\n    <row from=\"30002148\" to=\"30002146\"/>\r\n    <row from=\"30002148\" to=\"30002150\"/>\r\n    <row from=\"30002149\" to=\"30002146\"/>\r\n    <row from=\"30002149\" to=\"30002150\"/>\r\n    <row from=\"30002149\" to=\"30002151\"/>\r\n    <row from=\"30002150\" to=\"30002146\"/>\r\n    <row from=\"30002150\" to=\"30002147\"/>\r\n    <row from=\"30002150\" to=\"30002148\"/>\r\n    <row from=\"30002150\" to=\"30002149\"/>\r\n    <row from=\"30002151\" to=\"30002149\"/>\r\n    <row from=\"30002151\" to=\"30002152\"/>\r\n    <row from=\"30002152\" to=\"30002151\"/>\r\n    <row from=\"30002153\" to=\"30002129\"/>\r\n    <row from=\"30002153\" to=\"30002154\"/>\r\n    <row from=\"30002153\" to=\"30002157\"/>\r\n    <row from=\"30002154\" to=\"30002153\"/>\r\n    <row from=\"30002154\" to=\"30002155\"/>\r\n    <row from=\"30002155\" to=\"30002154\"/>\r\n    <row from=\"30002155\" to=\"30002156\"/>\r\n    <row from=\"30002156\" to=\"30002155\"/>\r\n    <row from=\"30002156\" to=\"30002158\"/>\r\n    <row from=\"30002157\" to=\"30002153\"/>\r\n    <row from=\"30002158\" to=\"30002156\"/>\r\n    <row from=\"30002159\" to=\"30002143\"/>\r\n    <row from=\"30002159\" to=\"30002160\"/>\r\n    <row from=\"30002159\" to=\"30002162\"/>\r\n    <row from=\"30002160\" to=\"30002159\"/>\r\n    <row from=\"30002160\" to=\"30002161\"/>\r\n    <row from=\"30002160\" to=\"30002163\"/>\r\n    <row from=\"30002161\" to=\"30002160\"/>\r\n    <row from=\"30002161\" to=\"30002163\"/>\r\n    <row from=\"30002162\" to=\"30002159\"/>\r\n    <row from=\"30002162\" to=\"30002164\"/>\r\n    <row from=\"30002162\" to=\"30004820\"/>\r\n    <row from=\"30002163\" to=\"30000520\"/>\r\n    <row from=\"30002163\" to=\"30002160\"/>\r\n    <row from=\"30002163\" to=\"30002161\"/>\r\n    <row from=\"30002164\" to=\"30002162\"/>\r\n    <row from=\"30002164\" to=\"30002172\"/>\r\n    <row from=\"30002165\" to=\"30002139\"/>\r\n    <row from=\"30002165\" to=\"30002166\"/>\r\n    <row from=\"30002165\" to=\"30002167\"/>\r\n    <row from=\"30002166\" to=\"30002165\"/>\r\n    <row from=\"30002166\" to=\"30002168\"/>\r\n    <row from=\"30002167\" to=\"30002165\"/>\r\n    <row from=\"30002167\" to=\"30002168\"/>\r\n    <row from=\"30002168\" to=\"30002166\"/>\r\n    <row from=\"30002168\" to=\"30002167\"/>\r\n    <row from=\"30002168\" to=\"30002169\"/>\r\n    <row from=\"30002169\" to=\"30002168\"/>\r\n    <row from=\"30002169\" to=\"30002170\"/>\r\n    <row from=\"30002170\" to=\"30002169\"/>\r\n    <row from=\"30002170\" to=\"30002171\"/>\r\n    <row from=\"30002170\" to=\"30002178\"/>\r\n    <row from=\"30002171\" to=\"30002170\"/>\r\n    <row from=\"30002172\" to=\"30002164\"/>\r\n    <row from=\"30002172\" to=\"30002173\"/>\r\n    <row from=\"30002172\" to=\"30002175\"/>\r\n    <row from=\"30002173\" to=\"30002172\"/>\r\n    <row from=\"30002173\" to=\"30002174\"/>\r\n    <row from=\"30002173\" to=\"30002175\"/>\r\n    <row from=\"30002173\" to=\"30002176\"/>\r\n    <row from=\"30002174\" to=\"30002173\"/>\r\n    <row from=\"30002174\" to=\"30002175\"/>\r\n    <row from=\"30002174\" to=\"30002177\"/>\r\n    <row from=\"30002175\" to=\"30002172\"/>\r\n    <row from=\"30002175\" to=\"30002173\"/>\r\n    <row from=\"30002175\" to=\"30002174\"/>\r\n    <row from=\"30002175\" to=\"30002176\"/>\r\n    <row from=\"30002176\" to=\"30002173\"/>\r\n    <row from=\"30002176\" to=\"30002175\"/>\r\n    <row from=\"30002177\" to=\"30002174\"/>\r\n    <row from=\"30002178\" to=\"30002170\"/>\r\n    <row from=\"30002178\" to=\"30002179\"/>\r\n    <row from=\"30002178\" to=\"30002180\"/>\r\n    <row from=\"30002179\" to=\"30002178\"/>\r\n    <row from=\"30002179\" to=\"30002180\"/>\r\n    <row from=\"30002179\" to=\"30002181\"/>\r\n    <row from=\"30002179\" to=\"30002182\"/>\r\n    <row from=\"30002180\" to=\"30002178\"/>\r\n    <row from=\"30002180\" to=\"30002179\"/>\r\n    <row from=\"30002180\" to=\"30002181\"/>\r\n    <row from=\"30002180\" to=\"30002184\"/>\r\n    <row from=\"30002181\" to=\"30000513\"/>\r\n    <row from=\"30002181\" to=\"30002179\"/>\r\n    <row from=\"30002181\" to=\"30002180\"/>\r\n    <row from=\"30002181\" to=\"30002185\"/>\r\n    <row from=\"30002182\" to=\"30002179\"/>\r\n    <row from=\"30002182\" to=\"30002183\"/>\r\n    <row from=\"30002183\" to=\"30002182\"/>\r\n    <row from=\"30002183\" to=\"30004871\"/>\r\n    <row from=\"30002184\" to=\"30002180\"/>\r\n    <row from=\"30002184\" to=\"30002186\"/>\r\n    <row from=\"30002185\" to=\"30002181\"/>\r\n    <row from=\"30002186\" to=\"30002184\"/>\r\n    <row from=\"30002187\" to=\"30002189\"/>\r\n    <row from=\"30002187\" to=\"30002192\"/>\r\n    <row from=\"30002187\" to=\"30002282\"/>\r\n    <row from=\"30002187\" to=\"30003491\"/>\r\n    <row from=\"30002187\" to=\"30003522\"/>\r\n    <row from=\"30002187\" to=\"30005038\"/>\r\n    <row from=\"30002188\" to=\"30002189\"/>\r\n    <row from=\"30002188\" to=\"30002191\"/>\r\n    <row from=\"30002188\" to=\"30002193\"/>\r\n    <row from=\"30002188\" to=\"30004095\"/>\r\n    <row from=\"30002189\" to=\"30002187\"/>\r\n    <row from=\"30002189\" to=\"30002188\"/>\r\n    <row from=\"30002189\" to=\"30002190\"/>\r\n    <row from=\"30002189\" to=\"30002196\"/>\r\n    <row from=\"30002189\" to=\"30003491\"/>\r\n    <row from=\"30002190\" to=\"30002189\"/>\r\n    <row from=\"30002190\" to=\"30002194\"/>\r\n    <row from=\"30002190\" to=\"30002195\"/>\r\n    <row from=\"30002190\" to=\"30002196\"/>\r\n    <row from=\"30002191\" to=\"30002188\"/>\r\n    <row from=\"30002191\" to=\"30002192\"/>\r\n    <row from=\"30002191\" to=\"30002242\"/>\r\n    <row from=\"30002192\" to=\"30002187\"/>\r\n    <row from=\"30002192\" to=\"30002191\"/>\r\n    <row from=\"30002192\" to=\"30002194\"/>\r\n    <row from=\"30002193\" to=\"30002188\"/>\r\n    <row from=\"30002193\" to=\"30002197\"/>\r\n    <row from=\"30002193\" to=\"30003491\"/>\r\n    <row from=\"30002194\" to=\"30002190\"/>\r\n    <row from=\"30002194\" to=\"30002192\"/>\r\n    <row from=\"30002194\" to=\"30004152\"/>\r\n    <row from=\"30002195\" to=\"30002190\"/>\r\n    <row from=\"30002195\" to=\"30002196\"/>\r\n    <row from=\"30002196\" to=\"30002189\"/>\r\n    <row from=\"30002196\" to=\"30002190\"/>\r\n    <row from=\"30002196\" to=\"30002195\"/>\r\n    <row from=\"30002197\" to=\"30002193\"/>\r\n    <row from=\"30002197\" to=\"30002198\"/>\r\n    <row from=\"30002197\" to=\"30002203\"/>\r\n    <row from=\"30002197\" to=\"30004081\"/>\r\n    <row from=\"30002198\" to=\"30002197\"/>\r\n    <row from=\"30002198\" to=\"30002199\"/>\r\n    <row from=\"30002198\" to=\"30002203\"/>\r\n    <row from=\"30002199\" to=\"30002198\"/>\r\n    <row from=\"30002199\" to=\"30002200\"/>\r\n    <row from=\"30002199\" to=\"30002201\"/>\r\n    <row from=\"30002199\" to=\"30002244\"/>\r\n    <row from=\"30002200\" to=\"30002199\"/>\r\n    <row from=\"30002201\" to=\"30002199\"/>\r\n    <row from=\"30002201\" to=\"30002202\"/>\r\n    <row from=\"30002201\" to=\"30002236\"/>\r\n    <row from=\"30002202\" to=\"30002201\"/>\r\n    <row from=\"30002202\" to=\"30005030\"/>\r\n    <row from=\"30002203\" to=\"30002197\"/>\r\n    <row from=\"30002203\" to=\"30002198\"/>\r\n    <row from=\"30002204\" to=\"30002205\"/>\r\n    <row from=\"30002204\" to=\"30002209\"/>\r\n    <row from=\"30002205\" to=\"30002204\"/>\r\n    <row from=\"30002205\" to=\"30002206\"/>\r\n    <row from=\"30002205\" to=\"30002208\"/>\r\n    <row from=\"30002205\" to=\"30002209\"/>\r\n    <row from=\"30002205\" to=\"30003485\"/>\r\n    <row from=\"30002206\" to=\"30002205\"/>\r\n    <row from=\"30002206\" to=\"30002207\"/>\r\n    <row from=\"30002206\" to=\"30002220\"/>\r\n    <row from=\"30002206\" to=\"30003553\"/>\r\n    <row from=\"30002207\" to=\"30002206\"/>\r\n    <row from=\"30002208\" to=\"30002205\"/>\r\n    <row from=\"30002208\" to=\"30002258\"/>\r\n    <row from=\"30002208\" to=\"30002259\"/>\r\n    <row from=\"30002208\" to=\"30002260\"/>\r\n    <row from=\"30002208\" to=\"30002269\"/>\r\n    <row from=\"30002209\" to=\"30002204\"/>\r\n    <row from=\"30002209\" to=\"30002205\"/>\r\n    <row from=\"30002210\" to=\"30001650\"/>\r\n    <row from=\"30002210\" to=\"30002211\"/>\r\n    <row from=\"30002211\" to=\"30002210\"/>\r\n    <row from=\"30002211\" to=\"30002212\"/>\r\n    <row from=\"30002211\" to=\"30002213\"/>\r\n    <row from=\"30002212\" to=\"30002211\"/>\r\n    <row from=\"30002212\" to=\"30002218\"/>\r\n    <row from=\"30002213\" to=\"30002211\"/>\r\n    <row from=\"30002213\" to=\"30002214\"/>\r\n    <row from=\"30002213\" to=\"30002215\"/>\r\n    <row from=\"30002213\" to=\"30002217\"/>\r\n    <row from=\"30002214\" to=\"30002213\"/>\r\n    <row from=\"30002215\" to=\"30002213\"/>\r\n    <row from=\"30002215\" to=\"30002216\"/>\r\n    <row from=\"30002215\" to=\"30002219\"/>\r\n    <row from=\"30002215\" to=\"30005072\"/>\r\n    <row from=\"30002216\" to=\"30001696\"/>\r\n    <row from=\"30002216\" to=\"30002215\"/>\r\n    <row from=\"30002217\" to=\"30002213\"/>\r\n    <row from=\"30002218\" to=\"30002212\"/>\r\n    <row from=\"30002218\" to=\"30002252\"/>\r\n    <row from=\"30002219\" to=\"30001667\"/>\r\n    <row from=\"30002219\" to=\"30002215\"/>\r\n    <row from=\"30002220\" to=\"30002206\"/>\r\n    <row from=\"30002220\" to=\"30002221\"/>\r\n    <row from=\"30002220\" to=\"30002222\"/>\r\n    <row from=\"30002220\" to=\"30002223\"/>\r\n    <row from=\"30002220\" to=\"30002224\"/>\r\n    <row from=\"30002220\" to=\"30003526\"/>\r\n    <row from=\"30002220\" to=\"30003545\"/>\r\n    <row from=\"30002220\" to=\"30003546\"/>\r\n    <row from=\"30002221\" to=\"30002220\"/>\r\n    <row from=\"30002221\" to=\"30003546\"/>\r\n    <row from=\"30002222\" to=\"30002220\"/>\r\n    <row from=\"30002222\" to=\"30003482\"/>\r\n    <row from=\"30002223\" to=\"30002220\"/>\r\n    <row from=\"30002223\" to=\"30002224\"/>\r\n    <row from=\"30002223\" to=\"30003558\"/>\r\n    <row from=\"30002224\" to=\"30002220\"/>\r\n    <row from=\"30002224\" to=\"30002223\"/>\r\n    <row from=\"30002225\" to=\"30002770\"/>\r\n    <row from=\"30002225\" to=\"30003495\"/>\r\n    <row from=\"30002225\" to=\"30003504\"/>\r\n    <row from=\"30002226\" to=\"30002227\"/>\r\n    <row from=\"30002226\" to=\"30002229\"/>\r\n    <row from=\"30002226\" to=\"30003493\"/>\r\n    <row from=\"30002226\" to=\"30003524\"/>\r\n    <row from=\"30002227\" to=\"30002226\"/>\r\n    <row from=\"30002227\" to=\"30002228\"/>\r\n    <row from=\"30002227\" to=\"30002231\"/>\r\n    <row from=\"30002227\" to=\"30002257\"/>\r\n    <row from=\"30002228\" to=\"30002227\"/>\r\n    <row from=\"30002228\" to=\"30002230\"/>\r\n    <row from=\"30002228\" to=\"30002232\"/>\r\n    <row from=\"30002228\" to=\"30002234\"/>\r\n    <row from=\"30002229\" to=\"30002226\"/>\r\n    <row from=\"30002229\" to=\"30002233\"/>\r\n    <row from=\"30002230\" to=\"30002228\"/>\r\n    <row from=\"30002230\" to=\"30002234\"/>\r\n    <row from=\"30002231\" to=\"30002227\"/>\r\n    <row from=\"30002231\" to=\"30002232\"/>\r\n    <row from=\"30002231\" to=\"30003494\"/>\r\n    <row from=\"30002232\" to=\"30002228\"/>\r\n    <row from=\"30002232\" to=\"30002231\"/>\r\n    <row from=\"30002232\" to=\"30002235\"/>\r\n    <row from=\"30002232\" to=\"30002276\"/>\r\n    <row from=\"30002233\" to=\"30002229\"/>\r\n    <row from=\"30002234\" to=\"30002228\"/>\r\n    <row from=\"30002234\" to=\"30002230\"/>\r\n    <row from=\"30002234\" to=\"30002251\"/>\r\n    <row from=\"30002235\" to=\"30002232\"/>\r\n    <row from=\"30002236\" to=\"30002201\"/>\r\n    <row from=\"30002236\" to=\"30002237\"/>\r\n    <row from=\"30002236\" to=\"30002239\"/>\r\n    <row from=\"30002237\" to=\"30002236\"/>\r\n    <row from=\"30002237\" to=\"30002238\"/>\r\n    <row from=\"30002238\" to=\"30002237\"/>\r\n    <row from=\"30002238\" to=\"30002241\"/>\r\n    <row from=\"30002239\" to=\"30002236\"/>\r\n    <row from=\"30002239\" to=\"30002240\"/>\r\n    <row from=\"30002240\" to=\"30002239\"/>\r\n    <row from=\"30002240\" to=\"30002241\"/>\r\n    <row from=\"30002241\" to=\"30002238\"/>\r\n    <row from=\"30002241\" to=\"30002240\"/>\r\n    <row from=\"30002242\" to=\"30002191\"/>\r\n    <row from=\"30002242\" to=\"30002243\"/>\r\n    <row from=\"30002243\" to=\"30002242\"/>\r\n    <row from=\"30002243\" to=\"30002244\"/>\r\n    <row from=\"30002243\" to=\"30002246\"/>\r\n    <row from=\"30002243\" to=\"30002250\"/>\r\n    <row from=\"30002244\" to=\"30002199\"/>\r\n    <row from=\"30002244\" to=\"30002243\"/>\r\n    <row from=\"30002244\" to=\"30002245\"/>\r\n    <row from=\"30002244\" to=\"30002247\"/>\r\n    <row from=\"30002244\" to=\"30002248\"/>\r\n    <row from=\"30002245\" to=\"30002244\"/>\r\n    <row from=\"30002245\" to=\"30002247\"/>\r\n    <row from=\"30002246\" to=\"30002243\"/>\r\n    <row from=\"30002246\" to=\"30002249\"/>\r\n    <row from=\"30002246\" to=\"30002250\"/>\r\n    <row from=\"30002247\" to=\"30002244\"/>\r\n    <row from=\"30002247\" to=\"30002245\"/>\r\n    <row from=\"30002248\" to=\"30002244\"/>\r\n    <row from=\"30002249\" to=\"30002246\"/>\r\n    <row from=\"30002250\" to=\"30002243\"/>\r\n    <row from=\"30002250\" to=\"30002246\"/>\r\n    <row from=\"30002251\" to=\"30002234\"/>\r\n    <row from=\"30002251\" to=\"30002252\"/>\r\n    <row from=\"30002251\" to=\"30002253\"/>\r\n    <row from=\"30002251\" to=\"30002254\"/>\r\n    <row from=\"30002252\" to=\"30002218\"/>\r\n    <row from=\"30002252\" to=\"30002251\"/>\r\n    <row from=\"30002252\" to=\"30002254\"/>\r\n    <row from=\"30002252\" to=\"30002255\"/>\r\n    <row from=\"30002252\" to=\"30002256\"/>\r\n    <row from=\"30002253\" to=\"30002251\"/>\r\n    <row from=\"30002253\" to=\"30002254\"/>\r\n    <row from=\"30002254\" to=\"30002251\"/>\r\n    <row from=\"30002254\" to=\"30002252\"/>\r\n    <row from=\"30002254\" to=\"30002253\"/>\r\n    <row from=\"30002255\" to=\"30002252\"/>\r\n    <row from=\"30002255\" to=\"30002256\"/>\r\n    <row from=\"30002256\" to=\"30002252\"/>\r\n    <row from=\"30002256\" to=\"30002255\"/>\r\n    <row from=\"30002257\" to=\"30002227\"/>\r\n    <row from=\"30002257\" to=\"30002258\"/>\r\n    <row from=\"30002258\" to=\"30002208\"/>\r\n    <row from=\"30002258\" to=\"30002257\"/>\r\n    <row from=\"30002258\" to=\"30002259\"/>\r\n    <row from=\"30002259\" to=\"30002208\"/>\r\n    <row from=\"30002259\" to=\"30002258\"/>\r\n    <row from=\"30002259\" to=\"30002260\"/>\r\n    <row from=\"30002259\" to=\"30002261\"/>\r\n    <row from=\"30002260\" to=\"30002208\"/>\r\n    <row from=\"30002260\" to=\"30002259\"/>\r\n    <row from=\"30002260\" to=\"30002261\"/>\r\n    <row from=\"30002260\" to=\"30002269\"/>\r\n    <row from=\"30002261\" to=\"30002259\"/>\r\n    <row from=\"30002261\" to=\"30002260\"/>\r\n    <row from=\"30002261\" to=\"30002262\"/>\r\n    <row from=\"30002261\" to=\"30002263\"/>\r\n    <row from=\"30002261\" to=\"30002265\"/>\r\n    <row from=\"30002261\" to=\"30002267\"/>\r\n    <row from=\"30002262\" to=\"30002261\"/>\r\n    <row from=\"30002263\" to=\"30001654\"/>\r\n    <row from=\"30002263\" to=\"30002261\"/>\r\n    <row from=\"30002263\" to=\"30002264\"/>\r\n    <row from=\"30002263\" to=\"30002266\"/>\r\n    <row from=\"30002264\" to=\"30002263\"/>\r\n    <row from=\"30002264\" to=\"30002265\"/>\r\n    <row from=\"30002265\" to=\"30002261\"/>\r\n    <row from=\"30002265\" to=\"30002264\"/>\r\n    <row from=\"30002265\" to=\"30002267\"/>\r\n    <row from=\"30002266\" to=\"30002263\"/>\r\n    <row from=\"30002267\" to=\"30002261\"/>\r\n    <row from=\"30002267\" to=\"30002265\"/>\r\n    <row from=\"30002267\" to=\"30002268\"/>\r\n    <row from=\"30002268\" to=\"30002267\"/>\r\n    <row from=\"30002269\" to=\"30002208\"/>\r\n    <row from=\"30002269\" to=\"30002260\"/>\r\n    <row from=\"30002269\" to=\"30002270\"/>\r\n    <row from=\"30002269\" to=\"30002271\"/>\r\n    <row from=\"30002269\" to=\"30002273\"/>\r\n    <row from=\"30002270\" to=\"30002269\"/>\r\n    <row from=\"30002270\" to=\"30002271\"/>\r\n    <row from=\"30002270\" to=\"30002272\"/>\r\n    <row from=\"30002270\" to=\"30002274\"/>\r\n    <row from=\"30002271\" to=\"30002269\"/>\r\n    <row from=\"30002271\" to=\"30002270\"/>\r\n    <row from=\"30002271\" to=\"30002272\"/>\r\n    <row from=\"30002271\" to=\"30002273\"/>\r\n    <row from=\"30002272\" to=\"30002270\"/>\r\n    <row from=\"30002272\" to=\"30002271\"/>\r\n    <row from=\"30002273\" to=\"30002269\"/>\r\n    <row from=\"30002273\" to=\"30002271\"/>\r\n    <row from=\"30002274\" to=\"30002270\"/>\r\n    <row from=\"30002274\" to=\"30002275\"/>\r\n    <row from=\"30002275\" to=\"30002274\"/>\r\n    <row from=\"30002276\" to=\"30002232\"/>\r\n    <row from=\"30002276\" to=\"30002277\"/>\r\n    <row from=\"30002277\" to=\"30002276\"/>\r\n    <row from=\"30002277\" to=\"30002278\"/>\r\n    <row from=\"30002277\" to=\"30002279\"/>\r\n    <row from=\"30002278\" to=\"30001651\"/>\r\n    <row from=\"30002278\" to=\"30002277\"/>\r\n    <row from=\"30002278\" to=\"30002279\"/>\r\n    <row from=\"30002279\" to=\"30002277\"/>\r\n    <row from=\"30002279\" to=\"30002278\"/>\r\n    <row from=\"30002279\" to=\"30002280\"/>\r\n    <row from=\"30002279\" to=\"30002281\"/>\r\n    <row from=\"30002279\" to=\"30004148\"/>\r\n    <row from=\"30002280\" to=\"30002279\"/>\r\n    <row from=\"30002280\" to=\"30002281\"/>\r\n    <row from=\"30002280\" to=\"30002282\"/>\r\n    <row from=\"30002281\" to=\"30002279\"/>\r\n    <row from=\"30002281\" to=\"30002280\"/>\r\n    <row from=\"30002281\" to=\"30002282\"/>\r\n    <row from=\"30002281\" to=\"30023489\"/>\r\n    <row from=\"30002282\" to=\"30001671\"/>\r\n    <row from=\"30002282\" to=\"30002187\"/>\r\n    <row from=\"30002282\" to=\"30002280\"/>\r\n    <row from=\"30002282\" to=\"30002281\"/>\r\n    <row from=\"30002282\" to=\"30004080\"/>\r\n    <row from=\"30002283\" to=\"30002284\"/>\r\n    <row from=\"30002283\" to=\"30002286\"/>\r\n    <row from=\"30002283\" to=\"30002324\"/>\r\n    <row from=\"30002284\" to=\"30002283\"/>\r\n    <row from=\"30002284\" to=\"30002288\"/>\r\n    <row from=\"30002284\" to=\"30002318\"/>\r\n    <row from=\"30002285\" to=\"30002287\"/>\r\n    <row from=\"30002285\" to=\"30002303\"/>\r\n    <row from=\"30002285\" to=\"30002835\"/>\r\n    <row from=\"30002286\" to=\"30002283\"/>\r\n    <row from=\"30002286\" to=\"30002287\"/>\r\n    <row from=\"30002287\" to=\"30002285\"/>\r\n    <row from=\"30002287\" to=\"30002286\"/>\r\n    <row from=\"30002287\" to=\"30002378\"/>\r\n    <row from=\"30002288\" to=\"30002284\"/>\r\n    <row from=\"30002288\" to=\"30002296\"/>\r\n    <row from=\"30002288\" to=\"30002311\"/>\r\n    <row from=\"30002289\" to=\"30002290\"/>\r\n    <row from=\"30002289\" to=\"30002295\"/>\r\n    <row from=\"30002289\" to=\"30002847\"/>\r\n    <row from=\"30002290\" to=\"30002289\"/>\r\n    <row from=\"30002290\" to=\"30002293\"/>\r\n    <row from=\"30002291\" to=\"30002292\"/>\r\n    <row from=\"30002291\" to=\"30002294\"/>\r\n    <row from=\"30002292\" to=\"30002291\"/>\r\n    <row from=\"30002292\" to=\"30002293\"/>\r\n    <row from=\"30002292\" to=\"30005129\"/>\r\n    <row from=\"30002293\" to=\"30002290\"/>\r\n    <row from=\"30002293\" to=\"30002292\"/>\r\n    <row from=\"30002294\" to=\"30002291\"/>\r\n    <row from=\"30002294\" to=\"30002337\"/>\r\n    <row from=\"30002295\" to=\"30002289\"/>\r\n    <row from=\"30002296\" to=\"30002288\"/>\r\n    <row from=\"30002296\" to=\"30002299\"/>\r\n    <row from=\"30002296\" to=\"30002300\"/>\r\n    <row from=\"30002297\" to=\"30002298\"/>\r\n    <row from=\"30002297\" to=\"30002299\"/>\r\n    <row from=\"30002298\" to=\"30002297\"/>\r\n    <row from=\"30002298\" to=\"30002301\"/>\r\n    <row from=\"30002298\" to=\"30002369\"/>\r\n    <row from=\"30002299\" to=\"30002296\"/>\r\n    <row from=\"30002299\" to=\"30002297\"/>\r\n    <row from=\"30002300\" to=\"30002296\"/>\r\n    <row from=\"30002301\" to=\"30000783\"/>\r\n    <row from=\"30002301\" to=\"30002298\"/>\r\n    <row from=\"30002301\" to=\"30002360\"/>\r\n    <row from=\"30002302\" to=\"30002303\"/>\r\n    <row from=\"30002302\" to=\"30002304\"/>\r\n    <row from=\"30002302\" to=\"30002305\"/>\r\n    <row from=\"30002302\" to=\"30002309\"/>\r\n    <row from=\"30002303\" to=\"30002285\"/>\r\n    <row from=\"30002303\" to=\"30002302\"/>\r\n    <row from=\"30002303\" to=\"30002304\"/>\r\n    <row from=\"30002304\" to=\"30002302\"/>\r\n    <row from=\"30002304\" to=\"30002303\"/>\r\n    <row from=\"30002304\" to=\"30002306\"/>\r\n    <row from=\"30002304\" to=\"30002308\"/>\r\n    <row from=\"30002305\" to=\"30002302\"/>\r\n    <row from=\"30002305\" to=\"30002380\"/>\r\n    <row from=\"30002305\" to=\"30002381\"/>\r\n    <row from=\"30002306\" to=\"30002304\"/>\r\n    <row from=\"30002306\" to=\"30002307\"/>\r\n    <row from=\"30002307\" to=\"30002306\"/>\r\n    <row from=\"30002307\" to=\"30002309\"/>\r\n    <row from=\"30002308\" to=\"30002304\"/>\r\n    <row from=\"30002308\" to=\"30002331\"/>\r\n    <row from=\"30002309\" to=\"30001091\"/>\r\n    <row from=\"30002309\" to=\"30001092\"/>\r\n    <row from=\"30002309\" to=\"30002302\"/>\r\n    <row from=\"30002309\" to=\"30002307\"/>\r\n    <row from=\"30002309\" to=\"30002310\"/>\r\n    <row from=\"30002310\" to=\"30002309\"/>\r\n    <row from=\"30002311\" to=\"30002288\"/>\r\n    <row from=\"30002311\" to=\"30002312\"/>\r\n    <row from=\"30002312\" to=\"30002311\"/>\r\n    <row from=\"30002312\" to=\"30002313\"/>\r\n    <row from=\"30002312\" to=\"30002314\"/>\r\n    <row from=\"30002313\" to=\"30002312\"/>\r\n    <row from=\"30002313\" to=\"30002314\"/>\r\n    <row from=\"30002313\" to=\"30002315\"/>\r\n    <row from=\"30002314\" to=\"30002312\"/>\r\n    <row from=\"30002314\" to=\"30002313\"/>\r\n    <row from=\"30002314\" to=\"30002350\"/>\r\n    <row from=\"30002315\" to=\"30002313\"/>\r\n    <row from=\"30002315\" to=\"30002316\"/>\r\n    <row from=\"30002316\" to=\"30002315\"/>\r\n    <row from=\"30002316\" to=\"30002356\"/>\r\n    <row from=\"30002317\" to=\"30002320\"/>\r\n    <row from=\"30002318\" to=\"30002284\"/>\r\n    <row from=\"30002318\" to=\"30002320\"/>\r\n    <row from=\"30002318\" to=\"30002321\"/>\r\n    <row from=\"30002319\" to=\"30002320\"/>\r\n    <row from=\"30002320\" to=\"30002317\"/>\r\n    <row from=\"30002320\" to=\"30002318\"/>\r\n    <row from=\"30002320\" to=\"30002319\"/>\r\n    <row from=\"30002320\" to=\"30002322\"/>\r\n    <row from=\"30002321\" to=\"30002318\"/>\r\n    <row from=\"30002321\" to=\"30002836\"/>\r\n    <row from=\"30002322\" to=\"30002320\"/>\r\n    <row from=\"30002323\" to=\"30002324\"/>\r\n    <row from=\"30002323\" to=\"30002325\"/>\r\n    <row from=\"30002323\" to=\"30002326\"/>\r\n    <row from=\"30002324\" to=\"30002283\"/>\r\n    <row from=\"30002324\" to=\"30002323\"/>\r\n    <row from=\"30002324\" to=\"30002328\"/>\r\n    <row from=\"30002324\" to=\"30002330\"/>\r\n    <row from=\"30002325\" to=\"30002323\"/>\r\n    <row from=\"30002326\" to=\"30002323\"/>\r\n    <row from=\"30002326\" to=\"30002327\"/>\r\n    <row from=\"30002326\" to=\"30002330\"/>\r\n    <row from=\"30002327\" to=\"30002326\"/>\r\n    <row from=\"30002327\" to=\"30002328\"/>\r\n    <row from=\"30002327\" to=\"30002329\"/>\r\n    <row from=\"30002328\" to=\"30002324\"/>\r\n    <row from=\"30002328\" to=\"30002327\"/>\r\n    <row from=\"30002329\" to=\"30002327\"/>\r\n    <row from=\"30002330\" to=\"30002324\"/>\r\n    <row from=\"30002330\" to=\"30002326\"/>\r\n    <row from=\"30002331\" to=\"30002308\"/>\r\n    <row from=\"30002331\" to=\"30002332\"/>\r\n    <row from=\"30002331\" to=\"30002335\"/>\r\n    <row from=\"30002332\" to=\"30002331\"/>\r\n    <row from=\"30002332\" to=\"30002333\"/>\r\n    <row from=\"30002332\" to=\"30002334\"/>\r\n    <row from=\"30002332\" to=\"30002335\"/>\r\n    <row from=\"30002333\" to=\"30002332\"/>\r\n    <row from=\"30002333\" to=\"30002334\"/>\r\n    <row from=\"30002334\" to=\"30002332\"/>\r\n    <row from=\"30002334\" to=\"30002333\"/>\r\n    <row from=\"30002334\" to=\"30002336\"/>\r\n    <row from=\"30002334\" to=\"30002344\"/>\r\n    <row from=\"30002335\" to=\"30002331\"/>\r\n    <row from=\"30002335\" to=\"30002332\"/>\r\n    <row from=\"30002336\" to=\"30001533\"/>\r\n    <row from=\"30002336\" to=\"30002334\"/>\r\n    <row from=\"30002337\" to=\"30002294\"/>\r\n    <row from=\"30002337\" to=\"30002338\"/>\r\n    <row from=\"30002338\" to=\"30002337\"/>\r\n    <row from=\"30002338\" to=\"30002339\"/>\r\n    <row from=\"30002339\" to=\"30002338\"/>\r\n    <row from=\"30002339\" to=\"30002340\"/>\r\n    <row from=\"30002339\" to=\"30002341\"/>\r\n    <row from=\"30002340\" to=\"30002339\"/>\r\n    <row from=\"30002340\" to=\"30002341\"/>\r\n    <row from=\"30002340\" to=\"30002342\"/>\r\n    <row from=\"30002340\" to=\"30002343\"/>\r\n    <row from=\"30002341\" to=\"30002339\"/>\r\n    <row from=\"30002341\" to=\"30002340\"/>\r\n    <row from=\"30002342\" to=\"30002340\"/>\r\n    <row from=\"30002342\" to=\"30002364\"/>\r\n    <row from=\"30002343\" to=\"30002340\"/>\r\n    <row from=\"30002343\" to=\"30002377\"/>\r\n    <row from=\"30002344\" to=\"30002334\"/>\r\n    <row from=\"30002344\" to=\"30002345\"/>\r\n    <row from=\"30002345\" to=\"30002344\"/>\r\n    <row from=\"30002345\" to=\"30002346\"/>\r\n    <row from=\"30002345\" to=\"30002348\"/>\r\n    <row from=\"30002346\" to=\"30001111\"/>\r\n    <row from=\"30002346\" to=\"30002345\"/>\r\n    <row from=\"30002346\" to=\"30002347\"/>\r\n    <row from=\"30002346\" to=\"30002348\"/>\r\n    <row from=\"30002346\" to=\"30002349\"/>\r\n    <row from=\"30002347\" to=\"30002346\"/>\r\n    <row from=\"30002347\" to=\"30002349\"/>\r\n    <row from=\"30002348\" to=\"30002345\"/>\r\n    <row from=\"30002348\" to=\"30002346\"/>\r\n    <row from=\"30002349\" to=\"30002346\"/>\r\n    <row from=\"30002349\" to=\"30002347\"/>\r\n    <row from=\"30002350\" to=\"30002314\"/>\r\n    <row from=\"30002350\" to=\"30002351\"/>\r\n    <row from=\"30002351\" to=\"30002350\"/>\r\n    <row from=\"30002351\" to=\"30002352\"/>\r\n    <row from=\"30002351\" to=\"30002353\"/>\r\n    <row from=\"30002352\" to=\"30002351\"/>\r\n    <row from=\"30002352\" to=\"30002354\"/>\r\n    <row from=\"30002353\" to=\"30002351\"/>\r\n    <row from=\"30002353\" to=\"30002878\"/>\r\n    <row from=\"30002354\" to=\"30002352\"/>\r\n    <row from=\"30002354\" to=\"30002355\"/>\r\n    <row from=\"30002355\" to=\"30000198\"/>\r\n    <row from=\"30002355\" to=\"30002354\"/>\r\n    <row from=\"30002355\" to=\"30002370\"/>\r\n    <row from=\"30002356\" to=\"30002316\"/>\r\n    <row from=\"30002356\" to=\"30002357\"/>\r\n    <row from=\"30002356\" to=\"30002358\"/>\r\n    <row from=\"30002356\" to=\"30002361\"/>\r\n    <row from=\"30002357\" to=\"30002356\"/>\r\n    <row from=\"30002357\" to=\"30002358\"/>\r\n    <row from=\"30002357\" to=\"30002361\"/>\r\n    <row from=\"30002358\" to=\"30002356\"/>\r\n    <row from=\"30002358\" to=\"30002357\"/>\r\n    <row from=\"30002358\" to=\"30002359\"/>\r\n    <row from=\"30002358\" to=\"30002363\"/>\r\n    <row from=\"30002359\" to=\"30002358\"/>\r\n    <row from=\"30002359\" to=\"30002360\"/>\r\n    <row from=\"30002360\" to=\"30002301\"/>\r\n    <row from=\"30002360\" to=\"30002359\"/>\r\n    <row from=\"30002360\" to=\"30002362\"/>\r\n    <row from=\"30002361\" to=\"30002356\"/>\r\n    <row from=\"30002361\" to=\"30002357\"/>\r\n    <row from=\"30002362\" to=\"30002360\"/>\r\n    <row from=\"30002362\" to=\"30002363\"/>\r\n    <row from=\"30002363\" to=\"30002358\"/>\r\n    <row from=\"30002363\" to=\"30002362\"/>\r\n    <row from=\"30002363\" to=\"30002370\"/>\r\n    <row from=\"30002364\" to=\"30002342\"/>\r\n    <row from=\"30002364\" to=\"30002365\"/>\r\n    <row from=\"30002364\" to=\"30002368\"/>\r\n    <row from=\"30002365\" to=\"30002364\"/>\r\n    <row from=\"30002365\" to=\"30002366\"/>\r\n    <row from=\"30002365\" to=\"30002367\"/>\r\n    <row from=\"30002365\" to=\"30002369\"/>\r\n    <row from=\"30002366\" to=\"30001563\"/>\r\n    <row from=\"30002366\" to=\"30002365\"/>\r\n    <row from=\"30002367\" to=\"30002365\"/>\r\n    <row from=\"30002367\" to=\"30002368\"/>\r\n    <row from=\"30002367\" to=\"30002369\"/>\r\n    <row from=\"30002368\" to=\"30002364\"/>\r\n    <row from=\"30002368\" to=\"30002367\"/>\r\n    <row from=\"30002368\" to=\"30002369\"/>\r\n    <row from=\"30002369\" to=\"30002298\"/>\r\n    <row from=\"30002369\" to=\"30002365\"/>\r\n    <row from=\"30002369\" to=\"30002367\"/>\r\n    <row from=\"30002369\" to=\"30002368\"/>\r\n    <row from=\"30002370\" to=\"30002355\"/>\r\n    <row from=\"30002370\" to=\"30002363\"/>\r\n    <row from=\"30002370\" to=\"30002371\"/>\r\n    <row from=\"30002370\" to=\"30002372\"/>\r\n    <row from=\"30002370\" to=\"30002374\"/>\r\n    <row from=\"30002371\" to=\"30002370\"/>\r\n    <row from=\"30002371\" to=\"30002375\"/>\r\n    <row from=\"30002371\" to=\"30002376\"/>\r\n    <row from=\"30002372\" to=\"30002370\"/>\r\n    <row from=\"30002372\" to=\"30002373\"/>\r\n    <row from=\"30002372\" to=\"30002374\"/>\r\n    <row from=\"30002372\" to=\"30002376\"/>\r\n    <row from=\"30002373\" to=\"30002372\"/>\r\n    <row from=\"30002373\" to=\"30002374\"/>\r\n    <row from=\"30002373\" to=\"30002375\"/>\r\n    <row from=\"30002374\" to=\"30002370\"/>\r\n    <row from=\"30002374\" to=\"30002372\"/>\r\n    <row from=\"30002374\" to=\"30002373\"/>\r\n    <row from=\"30002375\" to=\"30000986\"/>\r\n    <row from=\"30002375\" to=\"30002371\"/>\r\n    <row from=\"30002375\" to=\"30002373\"/>\r\n    <row from=\"30002376\" to=\"30002371\"/>\r\n    <row from=\"30002376\" to=\"30002372\"/>\r\n    <row from=\"30002377\" to=\"30002343\"/>\r\n    <row from=\"30002377\" to=\"30002378\"/>\r\n    <row from=\"30002377\" to=\"30002379\"/>\r\n    <row from=\"30002378\" to=\"30002287\"/>\r\n    <row from=\"30002378\" to=\"30002377\"/>\r\n    <row from=\"30002378\" to=\"30002379\"/>\r\n    <row from=\"30002378\" to=\"30002380\"/>\r\n    <row from=\"30002379\" to=\"30002377\"/>\r\n    <row from=\"30002379\" to=\"30002378\"/>\r\n    <row from=\"30002379\" to=\"30002380\"/>\r\n    <row from=\"30002380\" to=\"30002305\"/>\r\n    <row from=\"30002380\" to=\"30002378\"/>\r\n    <row from=\"30002380\" to=\"30002379\"/>\r\n    <row from=\"30002380\" to=\"30002381\"/>\r\n    <row from=\"30002381\" to=\"30002305\"/>\r\n    <row from=\"30002381\" to=\"30002380\"/>\r\n    <row from=\"30002381\" to=\"30002382\"/>\r\n    <row from=\"30002382\" to=\"30002381\"/>\r\n    <row from=\"30002383\" to=\"30002384\"/>\r\n    <row from=\"30002383\" to=\"30002385\"/>\r\n    <row from=\"30002383\" to=\"30002523\"/>\r\n    <row from=\"30002384\" to=\"30002383\"/>\r\n    <row from=\"30002384\" to=\"30002385\"/>\r\n    <row from=\"30002385\" to=\"30002383\"/>\r\n    <row from=\"30002385\" to=\"30002384\"/>\r\n    <row from=\"30002385\" to=\"30002386\"/>\r\n    <row from=\"30002385\" to=\"30002387\"/>\r\n    <row from=\"30002385\" to=\"30002570\"/>\r\n    <row from=\"30002386\" to=\"30002385\"/>\r\n    <row from=\"30002386\" to=\"30002388\"/>\r\n    <row from=\"30002386\" to=\"30002389\"/>\r\n    <row from=\"30002387\" to=\"30002385\"/>\r\n    <row from=\"30002387\" to=\"30002388\"/>\r\n    <row from=\"30002387\" to=\"30002390\"/>\r\n    <row from=\"30002388\" to=\"30002386\"/>\r\n    <row from=\"30002388\" to=\"30002387\"/>\r\n    <row from=\"30002388\" to=\"30002389\"/>\r\n    <row from=\"30002388\" to=\"30002402\"/>\r\n    <row from=\"30002389\" to=\"30002386\"/>\r\n    <row from=\"30002389\" to=\"30002388\"/>\r\n    <row from=\"30002389\" to=\"30002396\"/>\r\n    <row from=\"30002390\" to=\"30002387\"/>\r\n    <row from=\"30002390\" to=\"30002391\"/>\r\n    <row from=\"30002390\" to=\"30002393\"/>\r\n    <row from=\"30002391\" to=\"30002390\"/>\r\n    <row from=\"30002391\" to=\"30002392\"/>\r\n    <row from=\"30002392\" to=\"30002391\"/>\r\n    <row from=\"30002393\" to=\"30002390\"/>\r\n    <row from=\"30002393\" to=\"30002394\"/>\r\n    <row from=\"30002393\" to=\"30002395\"/>\r\n    <row from=\"30002394\" to=\"30002393\"/>\r\n    <row from=\"30002394\" to=\"30002420\"/>\r\n    <row from=\"30002395\" to=\"30000116\"/>\r\n    <row from=\"30002395\" to=\"30002393\"/>\r\n    <row from=\"30002396\" to=\"30002389\"/>\r\n    <row from=\"30002396\" to=\"30002397\"/>\r\n    <row from=\"30002396\" to=\"30002401\"/>\r\n    <row from=\"30002397\" to=\"30002396\"/>\r\n    <row from=\"30002397\" to=\"30002398\"/>\r\n    <row from=\"30002397\" to=\"30002399\"/>\r\n    <row from=\"30002397\" to=\"30002400\"/>\r\n    <row from=\"30002398\" to=\"30002397\"/>\r\n    <row from=\"30002398\" to=\"30002400\"/>\r\n    <row from=\"30002399\" to=\"30002397\"/>\r\n    <row from=\"30002399\" to=\"30002401\"/>\r\n    <row from=\"30002399\" to=\"30002408\"/>\r\n    <row from=\"30002400\" to=\"30002397\"/>\r\n    <row from=\"30002400\" to=\"30002398\"/>\r\n    <row from=\"30002401\" to=\"30002396\"/>\r\n    <row from=\"30002401\" to=\"30002399\"/>\r\n    <row from=\"30002401\" to=\"30002412\"/>\r\n    <row from=\"30002402\" to=\"30002388\"/>\r\n    <row from=\"30002402\" to=\"30002403\"/>\r\n    <row from=\"30002402\" to=\"30002404\"/>\r\n    <row from=\"30002402\" to=\"30002407\"/>\r\n    <row from=\"30002403\" to=\"30002402\"/>\r\n    <row from=\"30002403\" to=\"30002404\"/>\r\n    <row from=\"30002403\" to=\"30002406\"/>\r\n    <row from=\"30002404\" to=\"30002402\"/>\r\n    <row from=\"30002404\" to=\"30002403\"/>\r\n    <row from=\"30002404\" to=\"30002405\"/>\r\n    <row from=\"30002405\" to=\"30002404\"/>\r\n    <row from=\"30002406\" to=\"30002403\"/>\r\n    <row from=\"30002407\" to=\"30002402\"/>\r\n    <row from=\"30002408\" to=\"30002399\"/>\r\n    <row from=\"30002408\" to=\"30002409\"/>\r\n    <row from=\"30002408\" to=\"30002410\"/>\r\n    <row from=\"30002409\" to=\"30002408\"/>\r\n    <row from=\"30002409\" to=\"30002410\"/>\r\n    <row from=\"30002409\" to=\"30002413\"/>\r\n    <row from=\"30002410\" to=\"30002408\"/>\r\n    <row from=\"30002410\" to=\"30002409\"/>\r\n    <row from=\"30002411\" to=\"30001413\"/>\r\n    <row from=\"30002411\" to=\"30003495\"/>\r\n    <row from=\"30002412\" to=\"30002401\"/>\r\n    <row from=\"30002412\" to=\"30003465\"/>\r\n    <row from=\"30002413\" to=\"30002409\"/>\r\n    <row from=\"30002413\" to=\"30002414\"/>\r\n    <row from=\"30002414\" to=\"30002413\"/>\r\n    <row from=\"30002414\" to=\"30002415\"/>\r\n    <row from=\"30002415\" to=\"30002414\"/>\r\n    <row from=\"30002415\" to=\"30002416\"/>\r\n    <row from=\"30002415\" to=\"30002419\"/>\r\n    <row from=\"30002416\" to=\"30002415\"/>\r\n    <row from=\"30002416\" to=\"30002417\"/>\r\n    <row from=\"30002416\" to=\"30002418\"/>\r\n    <row from=\"30002417\" to=\"30002416\"/>\r\n    <row from=\"30002417\" to=\"30002418\"/>\r\n    <row from=\"30002417\" to=\"30002419\"/>\r\n    <row from=\"30002418\" to=\"30002416\"/>\r\n    <row from=\"30002418\" to=\"30002417\"/>\r\n    <row from=\"30002418\" to=\"30002419\"/>\r\n    <row from=\"30002419\" to=\"30002415\"/>\r\n    <row from=\"30002419\" to=\"30002417\"/>\r\n    <row from=\"30002419\" to=\"30002418\"/>\r\n    <row from=\"30002419\" to=\"30002420\"/>\r\n    <row from=\"30002420\" to=\"30000970\"/>\r\n    <row from=\"30002420\" to=\"30002394\"/>\r\n    <row from=\"30002420\" to=\"30002419\"/>\r\n    <row from=\"30002421\" to=\"30000225\"/>\r\n    <row from=\"30002421\" to=\"30002422\"/>\r\n    <row from=\"30002421\" to=\"30002423\"/>\r\n    <row from=\"30002422\" to=\"30002421\"/>\r\n    <row from=\"30002422\" to=\"30002424\"/>\r\n    <row from=\"30002422\" to=\"30002451\"/>\r\n    <row from=\"30002423\" to=\"30002421\"/>\r\n    <row from=\"30002423\" to=\"30002426\"/>\r\n    <row from=\"30002423\" to=\"30002428\"/>\r\n    <row from=\"30002424\" to=\"30002422\"/>\r\n    <row from=\"30002424\" to=\"30002425\"/>\r\n    <row from=\"30002425\" to=\"30002424\"/>\r\n    <row from=\"30002425\" to=\"30002427\"/>\r\n    <row from=\"30002425\" to=\"30002438\"/>\r\n    <row from=\"30002426\" to=\"30002423\"/>\r\n    <row from=\"30002427\" to=\"30002425\"/>\r\n    <row from=\"30002427\" to=\"30002444\"/>\r\n    <row from=\"30002428\" to=\"30002423\"/>\r\n    <row from=\"30002428\" to=\"30002429\"/>\r\n    <row from=\"30002428\" to=\"30002431\"/>\r\n    <row from=\"30002428\" to=\"30002437\"/>\r\n    <row from=\"30002429\" to=\"30002428\"/>\r\n    <row from=\"30002429\" to=\"30002430\"/>\r\n    <row from=\"30002429\" to=\"30002434\"/>\r\n    <row from=\"30002430\" to=\"30002429\"/>\r\n    <row from=\"30002430\" to=\"30002432\"/>\r\n    <row from=\"30002430\" to=\"30002433\"/>\r\n    <row from=\"30002430\" to=\"30002434\"/>\r\n    <row from=\"30002431\" to=\"30002428\"/>\r\n    <row from=\"30002432\" to=\"30002430\"/>\r\n    <row from=\"30002432\" to=\"30002433\"/>\r\n    <row from=\"30002432\" to=\"30002434\"/>\r\n    <row from=\"30002432\" to=\"30002493\"/>\r\n    <row from=\"30002433\" to=\"30002430\"/>\r\n    <row from=\"30002433\" to=\"30002432\"/>\r\n    <row from=\"30002433\" to=\"30002434\"/>\r\n    <row from=\"30002433\" to=\"30002435\"/>\r\n    <row from=\"30002433\" to=\"30002473\"/>\r\n    <row from=\"30002434\" to=\"30002429\"/>\r\n    <row from=\"30002434\" to=\"30002430\"/>\r\n    <row from=\"30002434\" to=\"30002432\"/>\r\n    <row from=\"30002434\" to=\"30002433\"/>\r\n    <row from=\"30002435\" to=\"30002433\"/>\r\n    <row from=\"30002435\" to=\"30002436\"/>\r\n    <row from=\"30002436\" to=\"30002435\"/>\r\n    <row from=\"30002436\" to=\"30002437\"/>\r\n    <row from=\"30002437\" to=\"30002428\"/>\r\n    <row from=\"30002437\" to=\"30002436\"/>\r\n    <row from=\"30002438\" to=\"30002425\"/>\r\n    <row from=\"30002438\" to=\"30002439\"/>\r\n    <row from=\"30002438\" to=\"30002441\"/>\r\n    <row from=\"30002439\" to=\"30002438\"/>\r\n    <row from=\"30002439\" to=\"30002440\"/>\r\n    <row from=\"30002440\" to=\"30000186\"/>\r\n    <row from=\"30002440\" to=\"30002439\"/>\r\n    <row from=\"30002440\" to=\"30002442\"/>\r\n    <row from=\"30002440\" to=\"30002443\"/>\r\n    <row from=\"30002441\" to=\"30002438\"/>\r\n    <row from=\"30002441\" to=\"30002443\"/>\r\n    <row from=\"30002442\" to=\"30002440\"/>\r\n    <row from=\"30002443\" to=\"30002440\"/>\r\n    <row from=\"30002443\" to=\"30002441\"/>\r\n    <row from=\"30002444\" to=\"30002427\"/>\r\n    <row from=\"30002444\" to=\"30002445\"/>\r\n    <row from=\"30002444\" to=\"30002446\"/>\r\n    <row from=\"30002445\" to=\"30002444\"/>\r\n    <row from=\"30002446\" to=\"30002444\"/>\r\n    <row from=\"30002446\" to=\"30002447\"/>\r\n    <row from=\"30002446\" to=\"30002449\"/>\r\n    <row from=\"30002447\" to=\"30002446\"/>\r\n    <row from=\"30002447\" to=\"30002448\"/>\r\n    <row from=\"30002447\" to=\"30002449\"/>\r\n    <row from=\"30002448\" to=\"30002447\"/>\r\n    <row from=\"30002448\" to=\"30002449\"/>\r\n    <row from=\"30002448\" to=\"30002457\"/>\r\n    <row from=\"30002449\" to=\"30002446\"/>\r\n    <row from=\"30002449\" to=\"30002447\"/>\r\n    <row from=\"30002449\" to=\"30002448\"/>\r\n    <row from=\"30002449\" to=\"30002450\"/>\r\n    <row from=\"30002450\" to=\"30002449\"/>\r\n    <row from=\"30002450\" to=\"30002467\"/>\r\n    <row from=\"30002451\" to=\"30002422\"/>\r\n    <row from=\"30002451\" to=\"30002452\"/>\r\n    <row from=\"30002451\" to=\"30002453\"/>\r\n    <row from=\"30002452\" to=\"30002451\"/>\r\n    <row from=\"30002452\" to=\"30002454\"/>\r\n    <row from=\"30002453\" to=\"30002451\"/>\r\n    <row from=\"30002453\" to=\"30002454\"/>\r\n    <row from=\"30002453\" to=\"30002456\"/>\r\n    <row from=\"30002454\" to=\"30002452\"/>\r\n    <row from=\"30002454\" to=\"30002453\"/>\r\n    <row from=\"30002454\" to=\"30002455\"/>\r\n    <row from=\"30002455\" to=\"30002454\"/>\r\n    <row from=\"30002456\" to=\"30002453\"/>\r\n    <row from=\"30002457\" to=\"30002448\"/>\r\n    <row from=\"30002457\" to=\"30002458\"/>\r\n    <row from=\"30002457\" to=\"30002459\"/>\r\n    <row from=\"30002457\" to=\"30002461\"/>\r\n    <row from=\"30002458\" to=\"30002457\"/>\r\n    <row from=\"30002458\" to=\"30002460\"/>\r\n    <row from=\"30002458\" to=\"30002461\"/>\r\n    <row from=\"30002458\" to=\"30002462\"/>\r\n    <row from=\"30002459\" to=\"30002457\"/>\r\n    <row from=\"30002459\" to=\"30002460\"/>\r\n    <row from=\"30002459\" to=\"30002461\"/>\r\n    <row from=\"30002459\" to=\"30002463\"/>\r\n    <row from=\"30002459\" to=\"30002465\"/>\r\n    <row from=\"30002460\" to=\"30002458\"/>\r\n    <row from=\"30002460\" to=\"30002459\"/>\r\n    <row from=\"30002460\" to=\"30002466\"/>\r\n    <row from=\"30002461\" to=\"30002457\"/>\r\n    <row from=\"30002461\" to=\"30002458\"/>\r\n    <row from=\"30002461\" to=\"30002459\"/>\r\n    <row from=\"30002461\" to=\"30002462\"/>\r\n    <row from=\"30002462\" to=\"30002458\"/>\r\n    <row from=\"30002462\" to=\"30002461\"/>\r\n    <row from=\"30002462\" to=\"30002464\"/>\r\n    <row from=\"30002463\" to=\"30002459\"/>\r\n    <row from=\"30002463\" to=\"30002464\"/>\r\n    <row from=\"30002463\" to=\"30002465\"/>\r\n    <row from=\"30002463\" to=\"30002481\"/>\r\n    <row from=\"30002464\" to=\"30002462\"/>\r\n    <row from=\"30002464\" to=\"30002463\"/>\r\n    <row from=\"30002465\" to=\"30002459\"/>\r\n    <row from=\"30002465\" to=\"30002463\"/>\r\n    <row from=\"30002465\" to=\"30002499\"/>\r\n    <row from=\"30002466\" to=\"30002460\"/>\r\n    <row from=\"30002467\" to=\"30002450\"/>\r\n    <row from=\"30002467\" to=\"30002468\"/>\r\n    <row from=\"30002467\" to=\"30002470\"/>\r\n    <row from=\"30002468\" to=\"30002467\"/>\r\n    <row from=\"30002468\" to=\"30002469\"/>\r\n    <row from=\"30002469\" to=\"30002468\"/>\r\n    <row from=\"30002469\" to=\"30002470\"/>\r\n    <row from=\"30002470\" to=\"30000318\"/>\r\n    <row from=\"30002470\" to=\"30002467\"/>\r\n    <row from=\"30002470\" to=\"30002469\"/>\r\n    <row from=\"30002470\" to=\"30002471\"/>\r\n    <row from=\"30002471\" to=\"30002470\"/>\r\n    <row from=\"30002471\" to=\"30002472\"/>\r\n    <row from=\"30002472\" to=\"30002471\"/>\r\n    <row from=\"30002472\" to=\"30002866\"/>\r\n    <row from=\"30002473\" to=\"30002433\"/>\r\n    <row from=\"30002473\" to=\"30002474\"/>\r\n    <row from=\"30002473\" to=\"30002475\"/>\r\n    <row from=\"30002473\" to=\"30002478\"/>\r\n    <row from=\"30002474\" to=\"30002473\"/>\r\n    <row from=\"30002474\" to=\"30002475\"/>\r\n    <row from=\"30002474\" to=\"30002476\"/>\r\n    <row from=\"30002474\" to=\"30002479\"/>\r\n    <row from=\"30002475\" to=\"30000200\"/>\r\n    <row from=\"30002475\" to=\"30002473\"/>\r\n    <row from=\"30002475\" to=\"30002474\"/>\r\n    <row from=\"30002476\" to=\"30002474\"/>\r\n    <row from=\"30002476\" to=\"30002477\"/>\r\n    <row from=\"30002476\" to=\"30002478\"/>\r\n    <row from=\"30002476\" to=\"30002480\"/>\r\n    <row from=\"30002477\" to=\"30002476\"/>\r\n    <row from=\"30002477\" to=\"30002479\"/>\r\n    <row from=\"30002477\" to=\"30002480\"/>\r\n    <row from=\"30002478\" to=\"30002473\"/>\r\n    <row from=\"30002478\" to=\"30002476\"/>\r\n    <row from=\"30002478\" to=\"30002480\"/>\r\n    <row from=\"30002478\" to=\"30003466\"/>\r\n    <row from=\"30002479\" to=\"30000288\"/>\r\n    <row from=\"30002479\" to=\"30002474\"/>\r\n    <row from=\"30002479\" to=\"30002477\"/>\r\n    <row from=\"30002480\" to=\"30002476\"/>\r\n    <row from=\"30002480\" to=\"30002477\"/>\r\n    <row from=\"30002480\" to=\"30002478\"/>\r\n    <row from=\"30002481\" to=\"30002463\"/>\r\n    <row from=\"30002481\" to=\"30002482\"/>\r\n    <row from=\"30002481\" to=\"30002484\"/>\r\n    <row from=\"30002481\" to=\"30002489\"/>\r\n    <row from=\"30002481\" to=\"30002490\"/>\r\n    <row from=\"30002482\" to=\"30002481\"/>\r\n    <row from=\"30002482\" to=\"30002483\"/>\r\n    <row from=\"30002483\" to=\"30002482\"/>\r\n    <row from=\"30002483\" to=\"30002485\"/>\r\n    <row from=\"30002484\" to=\"30002481\"/>\r\n    <row from=\"30002484\" to=\"30002486\"/>\r\n    <row from=\"30002485\" to=\"30002483\"/>\r\n    <row from=\"30002485\" to=\"30002487\"/>\r\n    <row from=\"30002485\" to=\"30002492\"/>\r\n    <row from=\"30002486\" to=\"30002484\"/>\r\n    <row from=\"30002486\" to=\"30002491\"/>\r\n    <row from=\"30002487\" to=\"30002485\"/>\r\n    <row from=\"30002487\" to=\"30002488\"/>\r\n    <row from=\"30002488\" to=\"30002487\"/>\r\n    <row from=\"30002488\" to=\"30002489\"/>\r\n    <row from=\"30002489\" to=\"30001000\"/>\r\n    <row from=\"30002489\" to=\"30002481\"/>\r\n    <row from=\"30002489\" to=\"30002488\"/>\r\n    <row from=\"30002490\" to=\"30002481\"/>\r\n    <row from=\"30002491\" to=\"30002486\"/>\r\n    <row from=\"30002491\" to=\"30002492\"/>\r\n    <row from=\"30002492\" to=\"30002485\"/>\r\n    <row from=\"30002492\" to=\"30002491\"/>\r\n    <row from=\"30002493\" to=\"30002432\"/>\r\n    <row from=\"30002493\" to=\"30002494\"/>\r\n    <row from=\"30002493\" to=\"30002496\"/>\r\n    <row from=\"30002494\" to=\"30002493\"/>\r\n    <row from=\"30002494\" to=\"30002495\"/>\r\n    <row from=\"30002495\" to=\"30002494\"/>\r\n    <row from=\"30002496\" to=\"30002493\"/>\r\n    <row from=\"30002496\" to=\"30002497\"/>\r\n    <row from=\"30002496\" to=\"30002498\"/>\r\n    <row from=\"30002497\" to=\"30002496\"/>\r\n    <row from=\"30002497\" to=\"30002498\"/>\r\n    <row from=\"30002498\" to=\"30002496\"/>\r\n    <row from=\"30002498\" to=\"30002497\"/>\r\n    <row from=\"30002499\" to=\"30002465\"/>\r\n    <row from=\"30002499\" to=\"30002500\"/>\r\n    <row from=\"30002499\" to=\"30002501\"/>\r\n    <row from=\"30002500\" to=\"30002499\"/>\r\n    <row from=\"30002501\" to=\"30002499\"/>\r\n    <row from=\"30002501\" to=\"30002502\"/>\r\n    <row from=\"30002502\" to=\"30002501\"/>\r\n    <row from=\"30002502\" to=\"30002503\"/>\r\n    <row from=\"30002503\" to=\"30002502\"/>\r\n    <row from=\"30002503\" to=\"30002504\"/>\r\n    <row from=\"30002504\" to=\"30002503\"/>\r\n    <row from=\"30002505\" to=\"30002511\"/>\r\n    <row from=\"30002505\" to=\"30002518\"/>\r\n    <row from=\"30002506\" to=\"30002507\"/>\r\n    <row from=\"30002506\" to=\"30002537\"/>\r\n    <row from=\"30002507\" to=\"30002506\"/>\r\n    <row from=\"30002507\" to=\"30002509\"/>\r\n    <row from=\"30002507\" to=\"30002510\"/>\r\n    <row from=\"30002507\" to=\"30002512\"/>\r\n    <row from=\"30002507\" to=\"30002530\"/>\r\n    <row from=\"30002508\" to=\"30000037\"/>\r\n    <row from=\"30002508\" to=\"30002509\"/>\r\n    <row from=\"30002508\" to=\"30002524\"/>\r\n    <row from=\"30002509\" to=\"30000004\"/>\r\n    <row from=\"30002509\" to=\"30002507\"/>\r\n    <row from=\"30002509\" to=\"30002508\"/>\r\n    <row from=\"30002509\" to=\"30002510\"/>\r\n    <row from=\"30002510\" to=\"30002507\"/>\r\n    <row from=\"30002510\" to=\"30002509\"/>\r\n    <row from=\"30002510\" to=\"30002526\"/>\r\n    <row from=\"30002511\" to=\"30002505\"/>\r\n    <row from=\"30002511\" to=\"30002524\"/>\r\n    <row from=\"30002511\" to=\"30003374\"/>\r\n    <row from=\"30002511\" to=\"30012505\"/>\r\n    <row from=\"30002512\" to=\"30002507\"/>\r\n    <row from=\"30002512\" to=\"30002513\"/>\r\n    <row from=\"30002513\" to=\"30002512\"/>\r\n    <row from=\"30002513\" to=\"30002514\"/>\r\n    <row from=\"30002513\" to=\"30002515\"/>\r\n    <row from=\"30002514\" to=\"30002513\"/>\r\n    <row from=\"30002514\" to=\"30002516\"/>\r\n    <row from=\"30002514\" to=\"30002517\"/>\r\n    <row from=\"30002515\" to=\"30002513\"/>\r\n    <row from=\"30002516\" to=\"30002514\"/>\r\n    <row from=\"30002516\" to=\"30002517\"/>\r\n    <row from=\"30002517\" to=\"30002099\"/>\r\n    <row from=\"30002517\" to=\"30002514\"/>\r\n    <row from=\"30002517\" to=\"30002516\"/>\r\n    <row from=\"30002517\" to=\"30002537\"/>\r\n    <row from=\"30002518\" to=\"30002505\"/>\r\n    <row from=\"30002518\" to=\"30002519\"/>\r\n    <row from=\"30002518\" to=\"30032505\"/>\r\n    <row from=\"30002519\" to=\"30002518\"/>\r\n    <row from=\"30002519\" to=\"30002520\"/>\r\n    <row from=\"30002519\" to=\"30002521\"/>\r\n    <row from=\"30002520\" to=\"30002519\"/>\r\n    <row from=\"30002520\" to=\"30002521\"/>\r\n    <row from=\"30002520\" to=\"30002522\"/>\r\n    <row from=\"30002521\" to=\"30002519\"/>\r\n    <row from=\"30002521\" to=\"30002520\"/>\r\n    <row from=\"30002522\" to=\"30002520\"/>\r\n    <row from=\"30002522\" to=\"30002523\"/>\r\n    <row from=\"30002523\" to=\"30002383\"/>\r\n    <row from=\"30002523\" to=\"30002522\"/>\r\n    <row from=\"30002523\" to=\"30002531\"/>\r\n    <row from=\"30002524\" to=\"30002508\"/>\r\n    <row from=\"30002524\" to=\"30002511\"/>\r\n    <row from=\"30002524\" to=\"30002525\"/>\r\n    <row from=\"30002524\" to=\"30042505\"/>\r\n    <row from=\"30002525\" to=\"30002524\"/>\r\n    <row from=\"30002525\" to=\"30002526\"/>\r\n    <row from=\"30002525\" to=\"30003410\"/>\r\n    <row from=\"30002526\" to=\"30002510\"/>\r\n    <row from=\"30002526\" to=\"30002525\"/>\r\n    <row from=\"30002526\" to=\"30002527\"/>\r\n    <row from=\"30002526\" to=\"30002529\"/>\r\n    <row from=\"30002526\" to=\"30002530\"/>\r\n    <row from=\"30002527\" to=\"30002526\"/>\r\n    <row from=\"30002527\" to=\"30002528\"/>\r\n    <row from=\"30002527\" to=\"30002569\"/>\r\n    <row from=\"30002528\" to=\"30002527\"/>\r\n    <row from=\"30002528\" to=\"30002572\"/>\r\n    <row from=\"30002529\" to=\"30002526\"/>\r\n    <row from=\"30002529\" to=\"30002530\"/>\r\n    <row from=\"30002529\" to=\"30002568\"/>\r\n    <row from=\"30002530\" to=\"30002507\"/>\r\n    <row from=\"30002530\" to=\"30002526\"/>\r\n    <row from=\"30002530\" to=\"30002529\"/>\r\n    <row from=\"30002531\" to=\"30002523\"/>\r\n    <row from=\"30002531\" to=\"30002532\"/>\r\n    <row from=\"30002531\" to=\"30002533\"/>\r\n    <row from=\"30002531\" to=\"30002534\"/>\r\n    <row from=\"30002531\" to=\"30002535\"/>\r\n    <row from=\"30002532\" to=\"30002531\"/>\r\n    <row from=\"30002532\" to=\"30002536\"/>\r\n    <row from=\"30002533\" to=\"30002531\"/>\r\n    <row from=\"30002533\" to=\"30002549\"/>\r\n    <row from=\"30002534\" to=\"30002531\"/>\r\n    <row from=\"30002534\" to=\"30002535\"/>\r\n    <row from=\"30002534\" to=\"30002560\"/>\r\n    <row from=\"30002535\" to=\"30002531\"/>\r\n    <row from=\"30002535\" to=\"30002534\"/>\r\n    <row from=\"30002536\" to=\"30002532\"/>\r\n    <row from=\"30002537\" to=\"30002506\"/>\r\n    <row from=\"30002537\" to=\"30002517\"/>\r\n    <row from=\"30002537\" to=\"30002538\"/>\r\n    <row from=\"30002537\" to=\"30002539\"/>\r\n    <row from=\"30002537\" to=\"30002541\"/>\r\n    <row from=\"30002537\" to=\"30002542\"/>\r\n    <row from=\"30002538\" to=\"30002537\"/>\r\n    <row from=\"30002538\" to=\"30002539\"/>\r\n    <row from=\"30002538\" to=\"30002540\"/>\r\n    <row from=\"30002538\" to=\"30002541\"/>\r\n    <row from=\"30002538\" to=\"30002962\"/>\r\n    <row from=\"30002539\" to=\"30002095\"/>\r\n    <row from=\"30002539\" to=\"30002537\"/>\r\n    <row from=\"30002539\" to=\"30002538\"/>\r\n    <row from=\"30002539\" to=\"30002540\"/>\r\n    <row from=\"30002539\" to=\"30002541\"/>\r\n    <row from=\"30002539\" to=\"30002542\"/>\r\n    <row from=\"30002539\" to=\"30002693\"/>\r\n    <row from=\"30002540\" to=\"30002538\"/>\r\n    <row from=\"30002540\" to=\"30002539\"/>\r\n    <row from=\"30002540\" to=\"30002541\"/>\r\n    <row from=\"30002541\" to=\"30002096\"/>\r\n    <row from=\"30002541\" to=\"30002537\"/>\r\n    <row from=\"30002541\" to=\"30002538\"/>\r\n    <row from=\"30002541\" to=\"30002539\"/>\r\n    <row from=\"30002541\" to=\"30002540\"/>\r\n    <row from=\"30002541\" to=\"30002542\"/>\r\n    <row from=\"30002542\" to=\"30002537\"/>\r\n    <row from=\"30002542\" to=\"30002539\"/>\r\n    <row from=\"30002542\" to=\"30002541\"/>\r\n    <row from=\"30002542\" to=\"30003068\"/>\r\n    <row from=\"30002543\" to=\"30002053\"/>\r\n    <row from=\"30002543\" to=\"30002544\"/>\r\n    <row from=\"30002543\" to=\"30002545\"/>\r\n    <row from=\"30002543\" to=\"30002573\"/>\r\n    <row from=\"30002543\" to=\"30003388\"/>\r\n    <row from=\"30002543\" to=\"30012547\"/>\r\n    <row from=\"30002544\" to=\"30002543\"/>\r\n    <row from=\"30002544\" to=\"30002545\"/>\r\n    <row from=\"30002544\" to=\"30002547\"/>\r\n    <row from=\"30002544\" to=\"30002568\"/>\r\n    <row from=\"30002545\" to=\"30002543\"/>\r\n    <row from=\"30002545\" to=\"30002544\"/>\r\n    <row from=\"30002545\" to=\"30002546\"/>\r\n    <row from=\"30002545\" to=\"30002568\"/>\r\n    <row from=\"30002546\" to=\"30002545\"/>\r\n    <row from=\"30002546\" to=\"30002547\"/>\r\n    <row from=\"30002547\" to=\"30002544\"/>\r\n    <row from=\"30002547\" to=\"30002546\"/>\r\n    <row from=\"30002547\" to=\"30002548\"/>\r\n    <row from=\"30002548\" to=\"30002547\"/>\r\n    <row from=\"30002548\" to=\"30002555\"/>\r\n    <row from=\"30002549\" to=\"30002533\"/>\r\n    <row from=\"30002549\" to=\"30002550\"/>\r\n    <row from=\"30002549\" to=\"30002552\"/>\r\n    <row from=\"30002550\" to=\"30002549\"/>\r\n    <row from=\"30002550\" to=\"30002551\"/>\r\n    <row from=\"30002550\" to=\"30002574\"/>\r\n    <row from=\"30002551\" to=\"30002550\"/>\r\n    <row from=\"30002551\" to=\"30002553\"/>\r\n    <row from=\"30002551\" to=\"30002554\"/>\r\n    <row from=\"30002552\" to=\"30002549\"/>\r\n    <row from=\"30002552\" to=\"30002561\"/>\r\n    <row from=\"30002552\" to=\"30002562\"/>\r\n    <row from=\"30002553\" to=\"30002551\"/>\r\n    <row from=\"30002553\" to=\"30002580\"/>\r\n    <row from=\"30002554\" to=\"30002551\"/>\r\n    <row from=\"30002554\" to=\"30003444\"/>\r\n    <row from=\"30002554\" to=\"30003460\"/>\r\n    <row from=\"30002555\" to=\"30002548\"/>\r\n    <row from=\"30002555\" to=\"30002556\"/>\r\n    <row from=\"30002555\" to=\"30002557\"/>\r\n    <row from=\"30002555\" to=\"30002558\"/>\r\n    <row from=\"30002556\" to=\"30002555\"/>\r\n    <row from=\"30002556\" to=\"30002559\"/>\r\n    <row from=\"30002556\" to=\"30002561\"/>\r\n    <row from=\"30002556\" to=\"30002574\"/>\r\n    <row from=\"30002556\" to=\"30002575\"/>\r\n    <row from=\"30002557\" to=\"30002555\"/>\r\n    <row from=\"30002557\" to=\"30002558\"/>\r\n    <row from=\"30002558\" to=\"30002555\"/>\r\n    <row from=\"30002558\" to=\"30002557\"/>\r\n    <row from=\"30002559\" to=\"30002556\"/>\r\n    <row from=\"30002559\" to=\"30002560\"/>\r\n    <row from=\"30002559\" to=\"30002575\"/>\r\n    <row from=\"30002560\" to=\"30002064\"/>\r\n    <row from=\"30002560\" to=\"30002534\"/>\r\n    <row from=\"30002560\" to=\"30002559\"/>\r\n    <row from=\"30002561\" to=\"30002552\"/>\r\n    <row from=\"30002561\" to=\"30002556\"/>\r\n    <row from=\"30002562\" to=\"30002552\"/>\r\n    <row from=\"30002562\" to=\"30002563\"/>\r\n    <row from=\"30002562\" to=\"30002564\"/>\r\n    <row from=\"30002563\" to=\"30002562\"/>\r\n    <row from=\"30002564\" to=\"30002562\"/>\r\n    <row from=\"30002564\" to=\"30002565\"/>\r\n    <row from=\"30002565\" to=\"30002564\"/>\r\n    <row from=\"30002565\" to=\"30002566\"/>\r\n    <row from=\"30002566\" to=\"30002565\"/>\r\n    <row from=\"30002566\" to=\"30002567\"/>\r\n    <row from=\"30002567\" to=\"30002566\"/>\r\n    <row from=\"30002568\" to=\"30002529\"/>\r\n    <row from=\"30002568\" to=\"30002544\"/>\r\n    <row from=\"30002568\" to=\"30002545\"/>\r\n    <row from=\"30002568\" to=\"30002569\"/>\r\n    <row from=\"30002568\" to=\"30002570\"/>\r\n    <row from=\"30002568\" to=\"30022547\"/>\r\n    <row from=\"30002569\" to=\"30002527\"/>\r\n    <row from=\"30002569\" to=\"30002568\"/>\r\n    <row from=\"30002569\" to=\"30002571\"/>\r\n    <row from=\"30002569\" to=\"30032547\"/>\r\n    <row from=\"30002570\" to=\"30002385\"/>\r\n    <row from=\"30002570\" to=\"30002568\"/>\r\n    <row from=\"30002570\" to=\"30002573\"/>\r\n    <row from=\"30002571\" to=\"30002569\"/>\r\n    <row from=\"30002571\" to=\"30002572\"/>\r\n    <row from=\"30002572\" to=\"30002528\"/>\r\n    <row from=\"30002572\" to=\"30002571\"/>\r\n    <row from=\"30002573\" to=\"30002543\"/>\r\n    <row from=\"30002573\" to=\"30002570\"/>\r\n    <row from=\"30002573\" to=\"30003413\"/>\r\n    <row from=\"30002573\" to=\"30042547\"/>\r\n    <row from=\"30002574\" to=\"30002550\"/>\r\n    <row from=\"30002574\" to=\"30002556\"/>\r\n    <row from=\"30002574\" to=\"30002575\"/>\r\n    <row from=\"30002574\" to=\"30002576\"/>\r\n    <row from=\"30002575\" to=\"30002556\"/>\r\n    <row from=\"30002575\" to=\"30002559\"/>\r\n    <row from=\"30002575\" to=\"30002574\"/>\r\n    <row from=\"30002575\" to=\"30002580\"/>\r\n    <row from=\"30002576\" to=\"30002574\"/>\r\n    <row from=\"30002576\" to=\"30002577\"/>\r\n    <row from=\"30002577\" to=\"30002576\"/>\r\n    <row from=\"30002577\" to=\"30002578\"/>\r\n    <row from=\"30002578\" to=\"30002577\"/>\r\n    <row from=\"30002578\" to=\"30002579\"/>\r\n    <row from=\"30002579\" to=\"30002578\"/>\r\n    <row from=\"30002580\" to=\"30002553\"/>\r\n    <row from=\"30002580\" to=\"30002575\"/>\r\n    <row from=\"30002581\" to=\"30002582\"/>\r\n    <row from=\"30002581\" to=\"30004814\"/>\r\n    <row from=\"30002582\" to=\"30002581\"/>\r\n    <row from=\"30002582\" to=\"30002583\"/>\r\n    <row from=\"30002583\" to=\"30001217\"/>\r\n    <row from=\"30002583\" to=\"30002582\"/>\r\n    <row from=\"30002583\" to=\"30002584\"/>\r\n    <row from=\"30002584\" to=\"30002583\"/>\r\n    <row from=\"30002584\" to=\"30002585\"/>\r\n    <row from=\"30002585\" to=\"30002584\"/>\r\n    <row from=\"30002585\" to=\"30002586\"/>\r\n    <row from=\"30002586\" to=\"30002585\"/>\r\n    <row from=\"30002586\" to=\"30002587\"/>\r\n    <row from=\"30002587\" to=\"30002586\"/>\r\n    <row from=\"30002587\" to=\"30002588\"/>\r\n    <row from=\"30002588\" to=\"30002587\"/>\r\n    <row from=\"30002588\" to=\"30002589\"/>\r\n    <row from=\"30002588\" to=\"30002590\"/>\r\n    <row from=\"30002589\" to=\"30002588\"/>\r\n    <row from=\"30002589\" to=\"30002592\"/>\r\n    <row from=\"30002589\" to=\"30002593\"/>\r\n    <row from=\"30002590\" to=\"30002588\"/>\r\n    <row from=\"30002590\" to=\"30002591\"/>\r\n    <row from=\"30002590\" to=\"30002593\"/>\r\n    <row from=\"30002591\" to=\"30002590\"/>\r\n    <row from=\"30002591\" to=\"30002626\"/>\r\n    <row from=\"30002592\" to=\"30002589\"/>\r\n    <row from=\"30002592\" to=\"30002594\"/>\r\n    <row from=\"30002593\" to=\"30002589\"/>\r\n    <row from=\"30002593\" to=\"30002590\"/>\r\n    <row from=\"30002593\" to=\"30002595\"/>\r\n    <row from=\"30002593\" to=\"30002596\"/>\r\n    <row from=\"30002593\" to=\"30002597\"/>\r\n    <row from=\"30002594\" to=\"30002592\"/>\r\n    <row from=\"30002594\" to=\"30004404\"/>\r\n    <row from=\"30002595\" to=\"30002593\"/>\r\n    <row from=\"30002595\" to=\"30002598\"/>\r\n    <row from=\"30002595\" to=\"30002599\"/>\r\n    <row from=\"30002595\" to=\"30002612\"/>\r\n    <row from=\"30002596\" to=\"30002593\"/>\r\n    <row from=\"30002596\" to=\"30002605\"/>\r\n    <row from=\"30002597\" to=\"30002593\"/>\r\n    <row from=\"30002597\" to=\"30002598\"/>\r\n    <row from=\"30002598\" to=\"30002595\"/>\r\n    <row from=\"30002598\" to=\"30002597\"/>\r\n    <row from=\"30002598\" to=\"30002619\"/>\r\n    <row from=\"30002599\" to=\"30002595\"/>\r\n    <row from=\"30002599\" to=\"30002600\"/>\r\n    <row from=\"30002600\" to=\"30002599\"/>\r\n    <row from=\"30002600\" to=\"30002601\"/>\r\n    <row from=\"30002601\" to=\"30002600\"/>\r\n    <row from=\"30002601\" to=\"30002602\"/>\r\n    <row from=\"30002601\" to=\"30002603\"/>\r\n    <row from=\"30002602\" to=\"30002601\"/>\r\n    <row from=\"30002602\" to=\"30002604\"/>\r\n    <row from=\"30002603\" to=\"30002601\"/>\r\n    <row from=\"30002604\" to=\"30002602\"/>\r\n    <row from=\"30002605\" to=\"30002596\"/>\r\n    <row from=\"30002605\" to=\"30002606\"/>\r\n    <row from=\"30002606\" to=\"30002605\"/>\r\n    <row from=\"30002606\" to=\"30002607\"/>\r\n    <row from=\"30002606\" to=\"30002608\"/>\r\n    <row from=\"30002607\" to=\"30002606\"/>\r\n    <row from=\"30002607\" to=\"30002608\"/>\r\n    <row from=\"30002608\" to=\"30002606\"/>\r\n    <row from=\"30002608\" to=\"30002607\"/>\r\n    <row from=\"30002608\" to=\"30002609\"/>\r\n    <row from=\"30002608\" to=\"30002611\"/>\r\n    <row from=\"30002609\" to=\"30002608\"/>\r\n    <row from=\"30002609\" to=\"30002610\"/>\r\n    <row from=\"30002610\" to=\"30002609\"/>\r\n    <row from=\"30002611\" to=\"30002608\"/>\r\n    <row from=\"30002612\" to=\"30002595\"/>\r\n    <row from=\"30002612\" to=\"30002613\"/>\r\n    <row from=\"30002613\" to=\"30002612\"/>\r\n    <row from=\"30002613\" to=\"30002614\"/>\r\n    <row from=\"30002614\" to=\"30002613\"/>\r\n    <row from=\"30002614\" to=\"30002615\"/>\r\n    <row from=\"30002614\" to=\"30002616\"/>\r\n    <row from=\"30002615\" to=\"30002614\"/>\r\n    <row from=\"30002616\" to=\"30002614\"/>\r\n    <row from=\"30002616\" to=\"30002617\"/>\r\n    <row from=\"30002616\" to=\"30002618\"/>\r\n    <row from=\"30002617\" to=\"30002616\"/>\r\n    <row from=\"30002618\" to=\"30002616\"/>\r\n    <row from=\"30002619\" to=\"30002598\"/>\r\n    <row from=\"30002619\" to=\"30002620\"/>\r\n    <row from=\"30002619\" to=\"30002621\"/>\r\n    <row from=\"30002620\" to=\"30002619\"/>\r\n    <row from=\"30002620\" to=\"30002622\"/>\r\n    <row from=\"30002620\" to=\"30002625\"/>\r\n    <row from=\"30002621\" to=\"30002619\"/>\r\n    <row from=\"30002621\" to=\"30002623\"/>\r\n    <row from=\"30002621\" to=\"30002624\"/>\r\n    <row from=\"30002622\" to=\"30002620\"/>\r\n    <row from=\"30002623\" to=\"30002621\"/>\r\n    <row from=\"30002624\" to=\"30002621\"/>\r\n    <row from=\"30002625\" to=\"30002620\"/>\r\n    <row from=\"30002626\" to=\"30002591\"/>\r\n    <row from=\"30002626\" to=\"30002627\"/>\r\n    <row from=\"30002626\" to=\"30002628\"/>\r\n    <row from=\"30002627\" to=\"30002626\"/>\r\n    <row from=\"30002627\" to=\"30002628\"/>\r\n    <row from=\"30002628\" to=\"30002626\"/>\r\n    <row from=\"30002628\" to=\"30002627\"/>\r\n    <row from=\"30002628\" to=\"30002629\"/>\r\n    <row from=\"30002628\" to=\"30002631\"/>\r\n    <row from=\"30002629\" to=\"30002628\"/>\r\n    <row from=\"30002629\" to=\"30002630\"/>\r\n    <row from=\"30002630\" to=\"30002629\"/>\r\n    <row from=\"30002630\" to=\"30002631\"/>\r\n    <row from=\"30002631\" to=\"30002628\"/>\r\n    <row from=\"30002631\" to=\"30002630\"/>\r\n    <row from=\"30002632\" to=\"30002633\"/>\r\n    <row from=\"30002632\" to=\"30002639\"/>\r\n    <row from=\"30002632\" to=\"30002709\"/>\r\n    <row from=\"30002632\" to=\"30004967\"/>\r\n    <row from=\"30002633\" to=\"30002632\"/>\r\n    <row from=\"30002633\" to=\"30002634\"/>\r\n    <row from=\"30002633\" to=\"30002636\"/>\r\n    <row from=\"30002633\" to=\"30002637\"/>\r\n    <row from=\"30002633\" to=\"30002640\"/>\r\n    <row from=\"30002633\" to=\"30004970\"/>\r\n    <row from=\"30002634\" to=\"30002633\"/>\r\n    <row from=\"30002634\" to=\"30002635\"/>\r\n    <row from=\"30002634\" to=\"30002641\"/>\r\n    <row from=\"30002634\" to=\"30002655\"/>\r\n    <row from=\"30002635\" to=\"30002634\"/>\r\n    <row from=\"30002635\" to=\"30002638\"/>\r\n    <row from=\"30002636\" to=\"30002633\"/>\r\n    <row from=\"30002636\" to=\"30002639\"/>\r\n    <row from=\"30002636\" to=\"30002640\"/>\r\n    <row from=\"30002636\" to=\"30004970\"/>\r\n    <row from=\"30002637\" to=\"30002633\"/>\r\n    <row from=\"30002637\" to=\"30002640\"/>\r\n    <row from=\"30002637\" to=\"30005020\"/>\r\n    <row from=\"30002638\" to=\"30002635\"/>\r\n    <row from=\"30002638\" to=\"30002671\"/>\r\n    <row from=\"30002639\" to=\"30002632\"/>\r\n    <row from=\"30002639\" to=\"30002636\"/>\r\n    <row from=\"30002639\" to=\"30002710\"/>\r\n    <row from=\"30002639\" to=\"30003034\"/>\r\n    <row from=\"30002640\" to=\"30002633\"/>\r\n    <row from=\"30002640\" to=\"30002636\"/>\r\n    <row from=\"30002640\" to=\"30002637\"/>\r\n    <row from=\"30002640\" to=\"30002661\"/>\r\n    <row from=\"30002640\" to=\"30002671\"/>\r\n    <row from=\"30002640\" to=\"30004993\"/>\r\n    <row from=\"30002641\" to=\"30002634\"/>\r\n    <row from=\"30002641\" to=\"30002681\"/>\r\n    <row from=\"30002642\" to=\"30000144\"/>\r\n    <row from=\"30002642\" to=\"30002643\"/>\r\n    <row from=\"30002642\" to=\"30002647\"/>\r\n    <row from=\"30002643\" to=\"30002642\"/>\r\n    <row from=\"30002643\" to=\"30002644\"/>\r\n    <row from=\"30002643\" to=\"30002645\"/>\r\n    <row from=\"30002643\" to=\"30002646\"/>\r\n    <row from=\"30002644\" to=\"30002643\"/>\r\n    <row from=\"30002644\" to=\"30002686\"/>\r\n    <row from=\"30002644\" to=\"30002691\"/>\r\n    <row from=\"30002645\" to=\"30002643\"/>\r\n    <row from=\"30002645\" to=\"30002646\"/>\r\n    <row from=\"30002645\" to=\"30002647\"/>\r\n    <row from=\"30002645\" to=\"30002690\"/>\r\n    <row from=\"30002646\" to=\"30002643\"/>\r\n    <row from=\"30002646\" to=\"30002645\"/>\r\n    <row from=\"30002647\" to=\"30002642\"/>\r\n    <row from=\"30002647\" to=\"30002645\"/>\r\n    <row from=\"30002648\" to=\"30002649\"/>\r\n    <row from=\"30002648\" to=\"30002650\"/>\r\n    <row from=\"30002648\" to=\"30002704\"/>\r\n    <row from=\"30002648\" to=\"30003030\"/>\r\n    <row from=\"30002649\" to=\"30002648\"/>\r\n    <row from=\"30002649\" to=\"30002650\"/>\r\n    <row from=\"30002650\" to=\"30002648\"/>\r\n    <row from=\"30002650\" to=\"30002649\"/>\r\n    <row from=\"30002650\" to=\"30002651\"/>\r\n    <row from=\"30002651\" to=\"30002650\"/>\r\n    <row from=\"30002651\" to=\"30002696\"/>\r\n    <row from=\"30002652\" to=\"30000206\"/>\r\n    <row from=\"30002652\" to=\"30005029\"/>\r\n    <row from=\"30002653\" to=\"30002654\"/>\r\n    <row from=\"30002653\" to=\"30003090\"/>\r\n    <row from=\"30002654\" to=\"30002653\"/>\r\n    <row from=\"30002654\" to=\"30003061\"/>\r\n    <row from=\"30002655\" to=\"30002634\"/>\r\n    <row from=\"30002655\" to=\"30002656\"/>\r\n    <row from=\"30002655\" to=\"30002659\"/>\r\n    <row from=\"30002655\" to=\"30002660\"/>\r\n    <row from=\"30002655\" to=\"30002736\"/>\r\n    <row from=\"30002655\" to=\"30003026\"/>\r\n    <row from=\"30002656\" to=\"30002655\"/>\r\n    <row from=\"30002656\" to=\"30002657\"/>\r\n    <row from=\"30002656\" to=\"30002658\"/>\r\n    <row from=\"30002656\" to=\"30002659\"/>\r\n    <row from=\"30002656\" to=\"30002661\"/>\r\n    <row from=\"30002656\" to=\"30012715\"/>\r\n    <row from=\"30002657\" to=\"30002656\"/>\r\n    <row from=\"30002657\" to=\"30002658\"/>\r\n    <row from=\"30002657\" to=\"30002661\"/>\r\n    <row from=\"30002658\" to=\"30002656\"/>\r\n    <row from=\"30002658\" to=\"30002657\"/>\r\n    <row from=\"30002658\" to=\"30002659\"/>\r\n    <row from=\"30002658\" to=\"30002660\"/>\r\n    <row from=\"30002658\" to=\"30002661\"/>\r\n    <row from=\"30002659\" to=\"30002655\"/>\r\n    <row from=\"30002659\" to=\"30002656\"/>\r\n    <row from=\"30002659\" to=\"30002658\"/>\r\n    <row from=\"30002659\" to=\"30002661\"/>\r\n    <row from=\"30002659\" to=\"30003031\"/>\r\n    <row from=\"30002659\" to=\"30003032\"/>\r\n    <row from=\"30002660\" to=\"30002655\"/>\r\n    <row from=\"30002660\" to=\"30002658\"/>\r\n    <row from=\"30002660\" to=\"30002661\"/>\r\n    <row from=\"30002660\" to=\"30002715\"/>\r\n    <row from=\"30002661\" to=\"30002640\"/>\r\n    <row from=\"30002661\" to=\"30002656\"/>\r\n    <row from=\"30002661\" to=\"30002657\"/>\r\n    <row from=\"30002661\" to=\"30002658\"/>\r\n    <row from=\"30002661\" to=\"30002659\"/>\r\n    <row from=\"30002661\" to=\"30002660\"/>\r\n    <row from=\"30002661\" to=\"30005203\"/>\r\n    <row from=\"30002662\" to=\"30002663\"/>\r\n    <row from=\"30002662\" to=\"30002665\"/>\r\n    <row from=\"30002662\" to=\"30002666\"/>\r\n    <row from=\"30002662\" to=\"30002667\"/>\r\n    <row from=\"30002662\" to=\"30003029\"/>\r\n    <row from=\"30002663\" to=\"30002662\"/>\r\n    <row from=\"30002663\" to=\"30002664\"/>\r\n    <row from=\"30002663\" to=\"30002667\"/>\r\n    <row from=\"30002664\" to=\"30002663\"/>\r\n    <row from=\"30002664\" to=\"30002667\"/>\r\n    <row from=\"30002664\" to=\"30002712\"/>\r\n    <row from=\"30002665\" to=\"30002662\"/>\r\n    <row from=\"30002666\" to=\"30002662\"/>\r\n    <row from=\"30002667\" to=\"30002662\"/>\r\n    <row from=\"30002667\" to=\"30002663\"/>\r\n    <row from=\"30002667\" to=\"30002664\"/>\r\n    <row from=\"30002667\" to=\"30002732\"/>\r\n    <row from=\"30002668\" to=\"30002669\"/>\r\n    <row from=\"30002668\" to=\"30002671\"/>\r\n    <row from=\"30002668\" to=\"30004971\"/>\r\n    <row from=\"30002669\" to=\"30002668\"/>\r\n    <row from=\"30002669\" to=\"30002670\"/>\r\n    <row from=\"30002670\" to=\"30002669\"/>\r\n    <row from=\"30002670\" to=\"30002672\"/>\r\n    <row from=\"30002670\" to=\"30002673\"/>\r\n    <row from=\"30002670\" to=\"30002675\"/>\r\n    <row from=\"30002670\" to=\"30002724\"/>\r\n    <row from=\"30002671\" to=\"30002638\"/>\r\n    <row from=\"30002671\" to=\"30002640\"/>\r\n    <row from=\"30002671\" to=\"30002668\"/>\r\n    <row from=\"30002671\" to=\"30002674\"/>\r\n    <row from=\"30002672\" to=\"30002670\"/>\r\n    <row from=\"30002672\" to=\"30002673\"/>\r\n    <row from=\"30002672\" to=\"30002675\"/>\r\n    <row from=\"30002673\" to=\"30002670\"/>\r\n    <row from=\"30002673\" to=\"30002672\"/>\r\n    <row from=\"30002674\" to=\"30002671\"/>\r\n    <row from=\"30002675\" to=\"30002670\"/>\r\n    <row from=\"30002675\" to=\"30002672\"/>\r\n    <row from=\"30002676\" to=\"30002677\"/>\r\n    <row from=\"30002676\" to=\"30002680\"/>\r\n    <row from=\"30002676\" to=\"30002706\"/>\r\n    <row from=\"30002677\" to=\"30002676\"/>\r\n    <row from=\"30002677\" to=\"30002678\"/>\r\n    <row from=\"30002677\" to=\"30002679\"/>\r\n    <row from=\"30002678\" to=\"30002677\"/>\r\n    <row from=\"30002678\" to=\"30002684\"/>\r\n    <row from=\"30002679\" to=\"30002677\"/>\r\n    <row from=\"30002679\" to=\"30002680\"/>\r\n    <row from=\"30002679\" to=\"30002683\"/>\r\n    <row from=\"30002680\" to=\"30002676\"/>\r\n    <row from=\"30002680\" to=\"30002679\"/>\r\n    <row from=\"30002680\" to=\"30002681\"/>\r\n    <row from=\"30002680\" to=\"30002684\"/>\r\n    <row from=\"30002681\" to=\"30002641\"/>\r\n    <row from=\"30002681\" to=\"30002680\"/>\r\n    <row from=\"30002681\" to=\"30002682\"/>\r\n    <row from=\"30002682\" to=\"30002048\"/>\r\n    <row from=\"30002682\" to=\"30002681\"/>\r\n    <row from=\"30002683\" to=\"30002679\"/>\r\n    <row from=\"30002684\" to=\"30002089\"/>\r\n    <row from=\"30002684\" to=\"30002678\"/>\r\n    <row from=\"30002684\" to=\"30002680\"/>\r\n    <row from=\"30002685\" to=\"30002686\"/>\r\n    <row from=\"30002685\" to=\"30002688\"/>\r\n    <row from=\"30002685\" to=\"30002689\"/>\r\n    <row from=\"30002686\" to=\"30002644\"/>\r\n    <row from=\"30002686\" to=\"30002685\"/>\r\n    <row from=\"30002686\" to=\"30002687\"/>\r\n    <row from=\"30002686\" to=\"30002691\"/>\r\n    <row from=\"30002687\" to=\"30002686\"/>\r\n    <row from=\"30002687\" to=\"30002690\"/>\r\n    <row from=\"30002688\" to=\"30002685\"/>\r\n    <row from=\"30002688\" to=\"30002707\"/>\r\n    <row from=\"30002689\" to=\"30002685\"/>\r\n    <row from=\"30002690\" to=\"30002645\"/>\r\n    <row from=\"30002690\" to=\"30002687\"/>\r\n    <row from=\"30002691\" to=\"30002644\"/>\r\n    <row from=\"30002691\" to=\"30002686\"/>\r\n    <row from=\"30002691\" to=\"30002718\"/>\r\n    <row from=\"30002692\" to=\"30002693\"/>\r\n    <row from=\"30002692\" to=\"30002695\"/>\r\n    <row from=\"30002692\" to=\"30003030\"/>\r\n    <row from=\"30002693\" to=\"30002539\"/>\r\n    <row from=\"30002693\" to=\"30002692\"/>\r\n    <row from=\"30002693\" to=\"30002694\"/>\r\n    <row from=\"30002693\" to=\"30002695\"/>\r\n    <row from=\"30002693\" to=\"30002698\"/>\r\n    <row from=\"30002693\" to=\"30002716\"/>\r\n    <row from=\"30002694\" to=\"30002693\"/>\r\n    <row from=\"30002694\" to=\"30002696\"/>\r\n    <row from=\"30002695\" to=\"30002692\"/>\r\n    <row from=\"30002695\" to=\"30002693\"/>\r\n    <row from=\"30002696\" to=\"30002651\"/>\r\n    <row from=\"30002696\" to=\"30002694\"/>\r\n    <row from=\"30002696\" to=\"30002697\"/>\r\n    <row from=\"30002696\" to=\"30002698\"/>\r\n    <row from=\"30002697\" to=\"30002696\"/>\r\n    <row from=\"30002698\" to=\"30002693\"/>\r\n    <row from=\"30002698\" to=\"30002696\"/>\r\n    <row from=\"30002699\" to=\"30002700\"/>\r\n    <row from=\"30002699\" to=\"30002703\"/>\r\n    <row from=\"30002699\" to=\"30002704\"/>\r\n    <row from=\"30002699\" to=\"30002734\"/>\r\n    <row from=\"30002699\" to=\"30002735\"/>\r\n    <row from=\"30002699\" to=\"30003030\"/>\r\n    <row from=\"30002700\" to=\"30002699\"/>\r\n    <row from=\"30002700\" to=\"30002701\"/>\r\n    <row from=\"30002701\" to=\"30002700\"/>\r\n    <row from=\"30002701\" to=\"30002705\"/>\r\n    <row from=\"30002702\" to=\"30003046\"/>\r\n    <row from=\"30002702\" to=\"30005029\"/>\r\n    <row from=\"30002703\" to=\"30002699\"/>\r\n    <row from=\"30002704\" to=\"30002648\"/>\r\n    <row from=\"30002704\" to=\"30002699\"/>\r\n    <row from=\"30002705\" to=\"30002701\"/>\r\n    <row from=\"30002706\" to=\"30002676\"/>\r\n    <row from=\"30002706\" to=\"30002711\"/>\r\n    <row from=\"30002706\" to=\"30002713\"/>\r\n    <row from=\"30002706\" to=\"30003034\"/>\r\n    <row from=\"30002707\" to=\"30002688\"/>\r\n    <row from=\"30002707\" to=\"30002709\"/>\r\n    <row from=\"30002707\" to=\"30002763\"/>\r\n    <row from=\"30002708\" to=\"30002711\"/>\r\n    <row from=\"30002708\" to=\"30003017\"/>\r\n    <row from=\"30002708\" to=\"30022715\"/>\r\n    <row from=\"30002709\" to=\"30002632\"/>\r\n    <row from=\"30002709\" to=\"30002707\"/>\r\n    <row from=\"30002709\" to=\"30002710\"/>\r\n    <row from=\"30002710\" to=\"30002639\"/>\r\n    <row from=\"30002710\" to=\"30002709\"/>\r\n    <row from=\"30002710\" to=\"30002711\"/>\r\n    <row from=\"30002711\" to=\"30002706\"/>\r\n    <row from=\"30002711\" to=\"30002708\"/>\r\n    <row from=\"30002711\" to=\"30002710\"/>\r\n    <row from=\"30002711\" to=\"30032715\"/>\r\n    <row from=\"30002712\" to=\"30002664\"/>\r\n    <row from=\"30002712\" to=\"30002713\"/>\r\n    <row from=\"30002712\" to=\"30002714\"/>\r\n    <row from=\"30002712\" to=\"30002715\"/>\r\n    <row from=\"30002712\" to=\"30002716\"/>\r\n    <row from=\"30002712\" to=\"30002717\"/>\r\n    <row from=\"30002713\" to=\"30002706\"/>\r\n    <row from=\"30002713\" to=\"30002712\"/>\r\n    <row from=\"30002714\" to=\"30002712\"/>\r\n    <row from=\"30002714\" to=\"30002715\"/>\r\n    <row from=\"30002714\" to=\"30002716\"/>\r\n    <row from=\"30002715\" to=\"30002660\"/>\r\n    <row from=\"30002715\" to=\"30002712\"/>\r\n    <row from=\"30002715\" to=\"30002714\"/>\r\n    <row from=\"30002715\" to=\"30002717\"/>\r\n    <row from=\"30002715\" to=\"30002731\"/>\r\n    <row from=\"30002715\" to=\"30003033\"/>\r\n    <row from=\"30002716\" to=\"30002693\"/>\r\n    <row from=\"30002716\" to=\"30002712\"/>\r\n    <row from=\"30002716\" to=\"30002714\"/>\r\n    <row from=\"30002717\" to=\"30002712\"/>\r\n    <row from=\"30002717\" to=\"30002715\"/>\r\n    <row from=\"30002718\" to=\"30002691\"/>\r\n    <row from=\"30002718\" to=\"30002719\"/>\r\n    <row from=\"30002719\" to=\"30002718\"/>\r\n    <row from=\"30002719\" to=\"30002720\"/>\r\n    <row from=\"30002719\" to=\"30002722\"/>\r\n    <row from=\"30002719\" to=\"30002723\"/>\r\n    <row from=\"30002720\" to=\"30002050\"/>\r\n    <row from=\"30002720\" to=\"30002719\"/>\r\n    <row from=\"30002720\" to=\"30002721\"/>\r\n    <row from=\"30002721\" to=\"30002720\"/>\r\n    <row from=\"30002722\" to=\"30002719\"/>\r\n    <row from=\"30002722\" to=\"30002723\"/>\r\n    <row from=\"30002723\" to=\"30002053\"/>\r\n    <row from=\"30002723\" to=\"30002719\"/>\r\n    <row from=\"30002723\" to=\"30002722\"/>\r\n    <row from=\"30002724\" to=\"30002670\"/>\r\n    <row from=\"30002724\" to=\"30002725\"/>\r\n    <row from=\"30002725\" to=\"30002724\"/>\r\n    <row from=\"30002725\" to=\"30002726\"/>\r\n    <row from=\"30002725\" to=\"30002727\"/>\r\n    <row from=\"30002726\" to=\"30002725\"/>\r\n    <row from=\"30002726\" to=\"30002728\"/>\r\n    <row from=\"30002727\" to=\"30002725\"/>\r\n    <row from=\"30002727\" to=\"30002729\"/>\r\n    <row from=\"30002728\" to=\"30002726\"/>\r\n    <row from=\"30002728\" to=\"30003062\"/>\r\n    <row from=\"30002728\" to=\"30004992\"/>\r\n    <row from=\"30002729\" to=\"30002727\"/>\r\n    <row from=\"30002729\" to=\"30002730\"/>\r\n    <row from=\"30002730\" to=\"30002729\"/>\r\n    <row from=\"30002730\" to=\"30003478\"/>\r\n    <row from=\"30002731\" to=\"30002715\"/>\r\n    <row from=\"30002731\" to=\"30002732\"/>\r\n    <row from=\"30002731\" to=\"30002733\"/>\r\n    <row from=\"30002731\" to=\"30002734\"/>\r\n    <row from=\"30002731\" to=\"30042715\"/>\r\n    <row from=\"30002732\" to=\"30002667\"/>\r\n    <row from=\"30002732\" to=\"30002731\"/>\r\n    <row from=\"30002733\" to=\"30002731\"/>\r\n    <row from=\"30002734\" to=\"30002699\"/>\r\n    <row from=\"30002734\" to=\"30002731\"/>\r\n    <row from=\"30002734\" to=\"30002735\"/>\r\n    <row from=\"30002735\" to=\"30002699\"/>\r\n    <row from=\"30002735\" to=\"30002734\"/>\r\n    <row from=\"30002735\" to=\"30002736\"/>\r\n    <row from=\"30002736\" to=\"30002655\"/>\r\n    <row from=\"30002736\" to=\"30002735\"/>\r\n    <row from=\"30002737\" to=\"30001445\"/>\r\n    <row from=\"30002737\" to=\"30002079\"/>\r\n    <row from=\"30002738\" to=\"30002739\"/>\r\n    <row from=\"30002738\" to=\"30002742\"/>\r\n    <row from=\"30002739\" to=\"30002738\"/>\r\n    <row from=\"30002739\" to=\"30002750\"/>\r\n    <row from=\"30002740\" to=\"30002741\"/>\r\n    <row from=\"30002740\" to=\"30002742\"/>\r\n    <row from=\"30002741\" to=\"30002740\"/>\r\n    <row from=\"30002742\" to=\"30002738\"/>\r\n    <row from=\"30002742\" to=\"30002740\"/>\r\n    <row from=\"30002743\" to=\"30002744\"/>\r\n    <row from=\"30002743\" to=\"30002748\"/>\r\n    <row from=\"30002744\" to=\"30002743\"/>\r\n    <row from=\"30002744\" to=\"30002746\"/>\r\n    <row from=\"30002744\" to=\"30002747\"/>\r\n    <row from=\"30002744\" to=\"30002749\"/>\r\n    <row from=\"30002745\" to=\"30002746\"/>\r\n    <row from=\"30002745\" to=\"30002747\"/>\r\n    <row from=\"30002746\" to=\"30002744\"/>\r\n    <row from=\"30002746\" to=\"30002745\"/>\r\n    <row from=\"30002746\" to=\"30002748\"/>\r\n    <row from=\"30002747\" to=\"30002744\"/>\r\n    <row from=\"30002747\" to=\"30002745\"/>\r\n    <row from=\"30002748\" to=\"30002743\"/>\r\n    <row from=\"30002748\" to=\"30002746\"/>\r\n    <row from=\"30002748\" to=\"30002755\"/>\r\n    <row from=\"30002749\" to=\"30002744\"/>\r\n    <row from=\"30002749\" to=\"30002751\"/>\r\n    <row from=\"30002749\" to=\"30002752\"/>\r\n    <row from=\"30002750\" to=\"30002739\"/>\r\n    <row from=\"30002750\" to=\"30002751\"/>\r\n    <row from=\"30002750\" to=\"30002752\"/>\r\n    <row from=\"30002750\" to=\"30002753\"/>\r\n    <row from=\"30002751\" to=\"30002749\"/>\r\n    <row from=\"30002751\" to=\"30002750\"/>\r\n    <row from=\"30002751\" to=\"30002754\"/>\r\n    <row from=\"30002752\" to=\"30001379\"/>\r\n    <row from=\"30002752\" to=\"30002749\"/>\r\n    <row from=\"30002752\" to=\"30002750\"/>\r\n    <row from=\"30002752\" to=\"30002775\"/>\r\n    <row from=\"30002753\" to=\"30001364\"/>\r\n    <row from=\"30002753\" to=\"30001365\"/>\r\n    <row from=\"30002753\" to=\"30002750\"/>\r\n    <row from=\"30002753\" to=\"30002754\"/>\r\n    <row from=\"30002754\" to=\"30000145\"/>\r\n    <row from=\"30002754\" to=\"30001380\"/>\r\n    <row from=\"30002754\" to=\"30001389\"/>\r\n    <row from=\"30002754\" to=\"30002751\"/>\r\n    <row from=\"30002754\" to=\"30002753\"/>\r\n    <row from=\"30002755\" to=\"30002748\"/>\r\n    <row from=\"30002755\" to=\"30002756\"/>\r\n    <row from=\"30002756\" to=\"30002755\"/>\r\n    <row from=\"30002756\" to=\"30002757\"/>\r\n    <row from=\"30002756\" to=\"30002759\"/>\r\n    <row from=\"30002757\" to=\"30002756\"/>\r\n    <row from=\"30002757\" to=\"30002758\"/>\r\n    <row from=\"30002758\" to=\"30001388\"/>\r\n    <row from=\"30002758\" to=\"30002757\"/>\r\n    <row from=\"30002759\" to=\"30002756\"/>\r\n    <row from=\"30002759\" to=\"30002760\"/>\r\n    <row from=\"30002760\" to=\"30002759\"/>\r\n    <row from=\"30002760\" to=\"30045334\"/>\r\n    <row from=\"30002761\" to=\"30002762\"/>\r\n    <row from=\"30002761\" to=\"30002764\"/>\r\n    <row from=\"30002761\" to=\"30004972\"/>\r\n    <row from=\"30002761\" to=\"30005015\"/>\r\n    <row from=\"30002762\" to=\"30002761\"/>\r\n    <row from=\"30002762\" to=\"30002763\"/>\r\n    <row from=\"30002762\" to=\"30002764\"/>\r\n    <row from=\"30002762\" to=\"30004974\"/>\r\n    <row from=\"30002763\" to=\"30002707\"/>\r\n    <row from=\"30002763\" to=\"30002762\"/>\r\n    <row from=\"30002763\" to=\"30002764\"/>\r\n    <row from=\"30002763\" to=\"30002766\"/>\r\n    <row from=\"30002764\" to=\"30002761\"/>\r\n    <row from=\"30002764\" to=\"30002762\"/>\r\n    <row from=\"30002764\" to=\"30002763\"/>\r\n    <row from=\"30002764\" to=\"30002765\"/>\r\n    <row from=\"30002765\" to=\"30002764\"/>\r\n    <row from=\"30002765\" to=\"30002766\"/>\r\n    <row from=\"30002765\" to=\"30002767\"/>\r\n    <row from=\"30002765\" to=\"30002768\"/>\r\n    <row from=\"30002766\" to=\"30002763\"/>\r\n    <row from=\"30002766\" to=\"30002765\"/>\r\n    <row from=\"30002767\" to=\"30002765\"/>\r\n    <row from=\"30002767\" to=\"30002768\"/>\r\n    <row from=\"30002767\" to=\"30002769\"/>\r\n    <row from=\"30002768\" to=\"30002765\"/>\r\n    <row from=\"30002768\" to=\"30002767\"/>\r\n    <row from=\"30002768\" to=\"30002786\"/>\r\n    <row from=\"30002768\" to=\"30002800\"/>\r\n    <row from=\"30002768\" to=\"30002803\"/>\r\n    <row from=\"30002769\" to=\"30002767\"/>\r\n    <row from=\"30002769\" to=\"30002772\"/>\r\n    <row from=\"30002770\" to=\"30000021\"/>\r\n    <row from=\"30002770\" to=\"30002225\"/>\r\n    <row from=\"30002771\" to=\"30002773\"/>\r\n    <row from=\"30002771\" to=\"30002794\"/>\r\n    <row from=\"30002772\" to=\"30002769\"/>\r\n    <row from=\"30002772\" to=\"30002774\"/>\r\n    <row from=\"30002773\" to=\"30002771\"/>\r\n    <row from=\"30002773\" to=\"30002774\"/>\r\n    <row from=\"30002773\" to=\"30002798\"/>\r\n    <row from=\"30002774\" to=\"30002772\"/>\r\n    <row from=\"30002774\" to=\"30002773\"/>\r\n    <row from=\"30002774\" to=\"30002781\"/>\r\n    <row from=\"30002775\" to=\"30002752\"/>\r\n    <row from=\"30002775\" to=\"30002776\"/>\r\n    <row from=\"30002775\" to=\"30002780\"/>\r\n    <row from=\"30002776\" to=\"30002775\"/>\r\n    <row from=\"30002776\" to=\"30002777\"/>\r\n    <row from=\"30002776\" to=\"30002780\"/>\r\n    <row from=\"30002777\" to=\"30002776\"/>\r\n    <row from=\"30002777\" to=\"30002778\"/>\r\n    <row from=\"30002778\" to=\"30002777\"/>\r\n    <row from=\"30002778\" to=\"30002779\"/>\r\n    <row from=\"30002779\" to=\"30002778\"/>\r\n    <row from=\"30002780\" to=\"30000140\"/>\r\n    <row from=\"30002780\" to=\"30000142\"/>\r\n    <row from=\"30002780\" to=\"30002775\"/>\r\n    <row from=\"30002780\" to=\"30002776\"/>\r\n    <row from=\"30002781\" to=\"30001377\"/>\r\n    <row from=\"30002781\" to=\"30002774\"/>\r\n    <row from=\"30002781\" to=\"30002782\"/>\r\n    <row from=\"30002781\" to=\"30002783\"/>\r\n    <row from=\"30002782\" to=\"30002781\"/>\r\n    <row from=\"30002782\" to=\"30002786\"/>\r\n    <row from=\"30002782\" to=\"30002789\"/>\r\n    <row from=\"30002783\" to=\"30002781\"/>\r\n    <row from=\"30002783\" to=\"30002784\"/>\r\n    <row from=\"30002783\" to=\"30002787\"/>\r\n    <row from=\"30002784\" to=\"30002783\"/>\r\n    <row from=\"30002784\" to=\"30002785\"/>\r\n    <row from=\"30002785\" to=\"30002784\"/>\r\n    <row from=\"30002785\" to=\"30002786\"/>\r\n    <row from=\"30002786\" to=\"30002768\"/>\r\n    <row from=\"30002786\" to=\"30002782\"/>\r\n    <row from=\"30002786\" to=\"30002785\"/>\r\n    <row from=\"30002786\" to=\"30002790\"/>\r\n    <row from=\"30002786\" to=\"30002792\"/>\r\n    <row from=\"30002786\" to=\"30002803\"/>\r\n    <row from=\"30002787\" to=\"30002783\"/>\r\n    <row from=\"30002787\" to=\"30002814\"/>\r\n    <row from=\"30002788\" to=\"30000127\"/>\r\n    <row from=\"30002788\" to=\"30002789\"/>\r\n    <row from=\"30002788\" to=\"30002790\"/>\r\n    <row from=\"30002788\" to=\"30002791\"/>\r\n    <row from=\"30002789\" to=\"30002782\"/>\r\n    <row from=\"30002789\" to=\"30002788\"/>\r\n    <row from=\"30002790\" to=\"30002786\"/>\r\n    <row from=\"30002790\" to=\"30002788\"/>\r\n    <row from=\"30002790\" to=\"30002792\"/>\r\n    <row from=\"30002791\" to=\"30000139\"/>\r\n    <row from=\"30002791\" to=\"30002788\"/>\r\n    <row from=\"30002791\" to=\"30002805\"/>\r\n    <row from=\"30002792\" to=\"30002786\"/>\r\n    <row from=\"30002792\" to=\"30002790\"/>\r\n    <row from=\"30002792\" to=\"30002793\"/>\r\n    <row from=\"30002793\" to=\"30002792\"/>\r\n    <row from=\"30002794\" to=\"30002771\"/>\r\n    <row from=\"30002794\" to=\"30002795\"/>\r\n    <row from=\"30002794\" to=\"30002799\"/>\r\n    <row from=\"30002795\" to=\"30002794\"/>\r\n    <row from=\"30002795\" to=\"30002796\"/>\r\n    <row from=\"30002795\" to=\"30002799\"/>\r\n    <row from=\"30002796\" to=\"30002795\"/>\r\n    <row from=\"30002796\" to=\"30002799\"/>\r\n    <row from=\"30002796\" to=\"30002806\"/>\r\n    <row from=\"30002797\" to=\"30001381\"/>\r\n    <row from=\"30002797\" to=\"30045329\"/>\r\n    <row from=\"30002798\" to=\"30002773\"/>\r\n    <row from=\"30002799\" to=\"30002794\"/>\r\n    <row from=\"30002799\" to=\"30002795\"/>\r\n    <row from=\"30002799\" to=\"30002796\"/>\r\n    <row from=\"30002800\" to=\"30002768\"/>\r\n    <row from=\"30002800\" to=\"30002801\"/>\r\n    <row from=\"30002801\" to=\"30002800\"/>\r\n    <row from=\"30002801\" to=\"30002802\"/>\r\n    <row from=\"30002801\" to=\"30002803\"/>\r\n    <row from=\"30002801\" to=\"30002805\"/>\r\n    <row from=\"30002802\" to=\"30000139\"/>\r\n    <row from=\"30002802\" to=\"30002801\"/>\r\n    <row from=\"30002803\" to=\"30002768\"/>\r\n    <row from=\"30002803\" to=\"30002786\"/>\r\n    <row from=\"30002803\" to=\"30002801\"/>\r\n    <row from=\"30002803\" to=\"30002804\"/>\r\n    <row from=\"30002803\" to=\"30002805\"/>\r\n    <row from=\"30002804\" to=\"30002803\"/>\r\n    <row from=\"30002804\" to=\"30002805\"/>\r\n    <row from=\"30002805\" to=\"30002791\"/>\r\n    <row from=\"30002805\" to=\"30002801\"/>\r\n    <row from=\"30002805\" to=\"30002803\"/>\r\n    <row from=\"30002805\" to=\"30002804\"/>\r\n    <row from=\"30002806\" to=\"30002796\"/>\r\n    <row from=\"30002806\" to=\"30002807\"/>\r\n    <row from=\"30002807\" to=\"30002806\"/>\r\n    <row from=\"30002807\" to=\"30002808\"/>\r\n    <row from=\"30002807\" to=\"30002809\"/>\r\n    <row from=\"30002807\" to=\"30004985\"/>\r\n    <row from=\"30002808\" to=\"30002807\"/>\r\n    <row from=\"30002809\" to=\"30002807\"/>\r\n    <row from=\"30002809\" to=\"30002810\"/>\r\n    <row from=\"30002809\" to=\"30002811\"/>\r\n    <row from=\"30002809\" to=\"30002813\"/>\r\n    <row from=\"30002810\" to=\"30002809\"/>\r\n    <row from=\"30002810\" to=\"30002811\"/>\r\n    <row from=\"30002811\" to=\"30002809\"/>\r\n    <row from=\"30002811\" to=\"30002810\"/>\r\n    <row from=\"30002811\" to=\"30002812\"/>\r\n    <row from=\"30002812\" to=\"30002811\"/>\r\n    <row from=\"30002812\" to=\"30005334\"/>\r\n    <row from=\"30002813\" to=\"30001376\"/>\r\n    <row from=\"30002813\" to=\"30002809\"/>\r\n    <row from=\"30002813\" to=\"30045346\"/>\r\n    <row from=\"30002814\" to=\"30002787\"/>\r\n    <row from=\"30002814\" to=\"30002815\"/>\r\n    <row from=\"30002815\" to=\"30002814\"/>\r\n    <row from=\"30002815\" to=\"30002816\"/>\r\n    <row from=\"30002815\" to=\"30002818\"/>\r\n    <row from=\"30002816\" to=\"30002815\"/>\r\n    <row from=\"30002816\" to=\"30002817\"/>\r\n    <row from=\"30002817\" to=\"30002816\"/>\r\n    <row from=\"30002817\" to=\"30041392\"/>\r\n    <row from=\"30002818\" to=\"30002815\"/>\r\n    <row from=\"30002818\" to=\"30002819\"/>\r\n    <row from=\"30002818\" to=\"30041392\"/>\r\n    <row from=\"30002819\" to=\"30002818\"/>\r\n    <row from=\"30002819\" to=\"30041392\"/>\r\n    <row from=\"30002820\" to=\"30002822\"/>\r\n    <row from=\"30002820\" to=\"30002847\"/>\r\n    <row from=\"30002821\" to=\"30002822\"/>\r\n    <row from=\"30002822\" to=\"30002820\"/>\r\n    <row from=\"30002822\" to=\"30002821\"/>\r\n    <row from=\"30002822\" to=\"30002823\"/>\r\n    <row from=\"30002823\" to=\"30002822\"/>\r\n    <row from=\"30002823\" to=\"30002824\"/>\r\n    <row from=\"30002823\" to=\"30002826\"/>\r\n    <row from=\"30002824\" to=\"30002823\"/>\r\n    <row from=\"30002824\" to=\"30002825\"/>\r\n    <row from=\"30002824\" to=\"30002826\"/>\r\n    <row from=\"30002825\" to=\"30000319\"/>\r\n    <row from=\"30002825\" to=\"30002824\"/>\r\n    <row from=\"30002826\" to=\"30002823\"/>\r\n    <row from=\"30002826\" to=\"30002824\"/>\r\n    <row from=\"30002826\" to=\"30002881\"/>\r\n    <row from=\"30002827\" to=\"30002828\"/>\r\n    <row from=\"30002827\" to=\"30002831\"/>\r\n    <row from=\"30002827\" to=\"30002850\"/>\r\n    <row from=\"30002828\" to=\"30002827\"/>\r\n    <row from=\"30002828\" to=\"30002829\"/>\r\n    <row from=\"30002829\" to=\"30002828\"/>\r\n    <row from=\"30002829\" to=\"30002830\"/>\r\n    <row from=\"30002830\" to=\"30002829\"/>\r\n    <row from=\"30002830\" to=\"30002832\"/>\r\n    <row from=\"30002831\" to=\"30002827\"/>\r\n    <row from=\"30002832\" to=\"30002830\"/>\r\n    <row from=\"30002833\" to=\"30002836\"/>\r\n    <row from=\"30002833\" to=\"30002837\"/>\r\n    <row from=\"30002833\" to=\"30002853\"/>\r\n    <row from=\"30002834\" to=\"30002835\"/>\r\n    <row from=\"30002834\" to=\"30002837\"/>\r\n    <row from=\"30002834\" to=\"30002838\"/>\r\n    <row from=\"30002835\" to=\"30002285\"/>\r\n    <row from=\"30002835\" to=\"30002834\"/>\r\n    <row from=\"30002835\" to=\"30002837\"/>\r\n    <row from=\"30002835\" to=\"30002838\"/>\r\n    <row from=\"30002836\" to=\"30002321\"/>\r\n    <row from=\"30002836\" to=\"30002833\"/>\r\n    <row from=\"30002837\" to=\"30001097\"/>\r\n    <row from=\"30002837\" to=\"30002833\"/>\r\n    <row from=\"30002837\" to=\"30002834\"/>\r\n    <row from=\"30002837\" to=\"30002835\"/>\r\n    <row from=\"30002837\" to=\"30002838\"/>\r\n    <row from=\"30002838\" to=\"30002834\"/>\r\n    <row from=\"30002838\" to=\"30002835\"/>\r\n    <row from=\"30002838\" to=\"30002837\"/>\r\n    <row from=\"30002839\" to=\"30002840\"/>\r\n    <row from=\"30002839\" to=\"30002841\"/>\r\n    <row from=\"30002840\" to=\"30002839\"/>\r\n    <row from=\"30002840\" to=\"30002842\"/>\r\n    <row from=\"30002840\" to=\"30002843\"/>\r\n    <row from=\"30002840\" to=\"30002848\"/>\r\n    <row from=\"30002841\" to=\"30002839\"/>\r\n    <row from=\"30002841\" to=\"30002844\"/>\r\n    <row from=\"30002842\" to=\"30002840\"/>\r\n    <row from=\"30002842\" to=\"30002843\"/>\r\n    <row from=\"30002842\" to=\"30002845\"/>\r\n    <row from=\"30002843\" to=\"30002840\"/>\r\n    <row from=\"30002843\" to=\"30002842\"/>\r\n    <row from=\"30002844\" to=\"30002841\"/>\r\n    <row from=\"30002844\" to=\"30002861\"/>\r\n    <row from=\"30002844\" to=\"30002874\"/>\r\n    <row from=\"30002845\" to=\"30002842\"/>\r\n    <row from=\"30002846\" to=\"30002848\"/>\r\n    <row from=\"30002846\" to=\"30002851\"/>\r\n    <row from=\"30002846\" to=\"30002852\"/>\r\n    <row from=\"30002847\" to=\"30002289\"/>\r\n    <row from=\"30002847\" to=\"30002820\"/>\r\n    <row from=\"30002847\" to=\"30002848\"/>\r\n    <row from=\"30002847\" to=\"30002849\"/>\r\n    <row from=\"30002848\" to=\"30002840\"/>\r\n    <row from=\"30002848\" to=\"30002846\"/>\r\n    <row from=\"30002848\" to=\"30002847\"/>\r\n    <row from=\"30002849\" to=\"30002847\"/>\r\n    <row from=\"30002850\" to=\"30001084\"/>\r\n    <row from=\"30002850\" to=\"30002827\"/>\r\n    <row from=\"30002850\" to=\"30002851\"/>\r\n    <row from=\"30002851\" to=\"30001057\"/>\r\n    <row from=\"30002851\" to=\"30002846\"/>\r\n    <row from=\"30002851\" to=\"30002850\"/>\r\n    <row from=\"30002851\" to=\"30002858\"/>\r\n    <row from=\"30002852\" to=\"30002846\"/>\r\n    <row from=\"30002853\" to=\"30002833\"/>\r\n    <row from=\"30002853\" to=\"30002854\"/>\r\n    <row from=\"30002853\" to=\"30002858\"/>\r\n    <row from=\"30002853\" to=\"30002860\"/>\r\n    <row from=\"30002854\" to=\"30002853\"/>\r\n    <row from=\"30002854\" to=\"30002855\"/>\r\n    <row from=\"30002854\" to=\"30002856\"/>\r\n    <row from=\"30002854\" to=\"30002858\"/>\r\n    <row from=\"30002854\" to=\"30002859\"/>\r\n    <row from=\"30002854\" to=\"30002860\"/>\r\n    <row from=\"30002855\" to=\"30002854\"/>\r\n    <row from=\"30002855\" to=\"30002857\"/>\r\n    <row from=\"30002856\" to=\"30002854\"/>\r\n    <row from=\"30002857\" to=\"30002855\"/>\r\n    <row from=\"30002857\" to=\"30002868\"/>\r\n    <row from=\"30002858\" to=\"30002851\"/>\r\n    <row from=\"30002858\" to=\"30002853\"/>\r\n    <row from=\"30002858\" to=\"30002854\"/>\r\n    <row from=\"30002859\" to=\"30002854\"/>\r\n    <row from=\"30002859\" to=\"30002860\"/>\r\n    <row from=\"30002860\" to=\"30002853\"/>\r\n    <row from=\"30002860\" to=\"30002854\"/>\r\n    <row from=\"30002860\" to=\"30002859\"/>\r\n    <row from=\"30002861\" to=\"30002844\"/>\r\n    <row from=\"30002861\" to=\"30002862\"/>\r\n    <row from=\"30002862\" to=\"30002861\"/>\r\n    <row from=\"30002862\" to=\"30002863\"/>\r\n    <row from=\"30002862\" to=\"30002864\"/>\r\n    <row from=\"30002863\" to=\"30002862\"/>\r\n    <row from=\"30002863\" to=\"30002864\"/>\r\n    <row from=\"30002863\" to=\"30002865\"/>\r\n    <row from=\"30002863\" to=\"30002867\"/>\r\n    <row from=\"30002864\" to=\"30002862\"/>\r\n    <row from=\"30002864\" to=\"30002863\"/>\r\n    <row from=\"30002864\" to=\"30002865\"/>\r\n    <row from=\"30002865\" to=\"30002863\"/>\r\n    <row from=\"30002865\" to=\"30002864\"/>\r\n    <row from=\"30002865\" to=\"30002866\"/>\r\n    <row from=\"30002865\" to=\"30002867\"/>\r\n    <row from=\"30002866\" to=\"30002472\"/>\r\n    <row from=\"30002866\" to=\"30002865\"/>\r\n    <row from=\"30002867\" to=\"30002863\"/>\r\n    <row from=\"30002867\" to=\"30002865\"/>\r\n    <row from=\"30002867\" to=\"30002873\"/>\r\n    <row from=\"30002868\" to=\"30002857\"/>\r\n    <row from=\"30002868\" to=\"30002869\"/>\r\n    <row from=\"30002868\" to=\"30002871\"/>\r\n    <row from=\"30002869\" to=\"30002868\"/>\r\n    <row from=\"30002869\" to=\"30002870\"/>\r\n    <row from=\"30002869\" to=\"30002871\"/>\r\n    <row from=\"30002869\" to=\"30002873\"/>\r\n    <row from=\"30002870\" to=\"30002869\"/>\r\n    <row from=\"30002870\" to=\"30002871\"/>\r\n    <row from=\"30002870\" to=\"30002872\"/>\r\n    <row from=\"30002871\" to=\"30002868\"/>\r\n    <row from=\"30002871\" to=\"30002869\"/>\r\n    <row from=\"30002871\" to=\"30002870\"/>\r\n    <row from=\"30002871\" to=\"30002873\"/>\r\n    <row from=\"30002872\" to=\"30002870\"/>\r\n    <row from=\"30002873\" to=\"30002867\"/>\r\n    <row from=\"30002873\" to=\"30002869\"/>\r\n    <row from=\"30002873\" to=\"30002871\"/>\r\n    <row from=\"30002874\" to=\"30002844\"/>\r\n    <row from=\"30002874\" to=\"30002875\"/>\r\n    <row from=\"30002874\" to=\"30002876\"/>\r\n    <row from=\"30002874\" to=\"30002877\"/>\r\n    <row from=\"30002874\" to=\"30002880\"/>\r\n    <row from=\"30002875\" to=\"30002874\"/>\r\n    <row from=\"30002875\" to=\"30002876\"/>\r\n    <row from=\"30002875\" to=\"30002877\"/>\r\n    <row from=\"30002875\" to=\"30002878\"/>\r\n    <row from=\"30002875\" to=\"30002879\"/>\r\n    <row from=\"30002876\" to=\"30002874\"/>\r\n    <row from=\"30002876\" to=\"30002875\"/>\r\n    <row from=\"30002876\" to=\"30002877\"/>\r\n    <row from=\"30002877\" to=\"30002874\"/>\r\n    <row from=\"30002877\" to=\"30002875\"/>\r\n    <row from=\"30002877\" to=\"30002876\"/>\r\n    <row from=\"30002877\" to=\"30002878\"/>\r\n    <row from=\"30002877\" to=\"30002880\"/>\r\n    <row from=\"30002878\" to=\"30002353\"/>\r\n    <row from=\"30002878\" to=\"30002875\"/>\r\n    <row from=\"30002878\" to=\"30002877\"/>\r\n    <row from=\"30002878\" to=\"30002879\"/>\r\n    <row from=\"30002879\" to=\"30002875\"/>\r\n    <row from=\"30002879\" to=\"30002878\"/>\r\n    <row from=\"30002880\" to=\"30002874\"/>\r\n    <row from=\"30002880\" to=\"30002877\"/>\r\n    <row from=\"30002881\" to=\"30002826\"/>\r\n    <row from=\"30002881\" to=\"30002882\"/>\r\n    <row from=\"30002882\" to=\"30002881\"/>\r\n    <row from=\"30002882\" to=\"30002883\"/>\r\n    <row from=\"30002882\" to=\"30002884\"/>\r\n    <row from=\"30002882\" to=\"30002887\"/>\r\n    <row from=\"30002883\" to=\"30002882\"/>\r\n    <row from=\"30002884\" to=\"30002882\"/>\r\n    <row from=\"30002884\" to=\"30002885\"/>\r\n    <row from=\"30002884\" to=\"30002886\"/>\r\n    <row from=\"30002885\" to=\"30002884\"/>\r\n    <row from=\"30002886\" to=\"30002884\"/>\r\n    <row from=\"30002886\" to=\"30002888\"/>\r\n    <row from=\"30002887\" to=\"30002882\"/>\r\n    <row from=\"30002888\" to=\"30002886\"/>\r\n    <row from=\"30002889\" to=\"30001266\"/>\r\n    <row from=\"30002889\" to=\"30002890\"/>\r\n    <row from=\"30002889\" to=\"30002891\"/>\r\n    <row from=\"30002889\" to=\"30002892\"/>\r\n    <row from=\"30002890\" to=\"30002889\"/>\r\n    <row from=\"30002890\" to=\"30002891\"/>\r\n    <row from=\"30002890\" to=\"30002894\"/>\r\n    <row from=\"30002891\" to=\"30002889\"/>\r\n    <row from=\"30002891\" to=\"30002890\"/>\r\n    <row from=\"30002891\" to=\"30002893\"/>\r\n    <row from=\"30002891\" to=\"30002894\"/>\r\n    <row from=\"30002892\" to=\"30002889\"/>\r\n    <row from=\"30002893\" to=\"30002891\"/>\r\n    <row from=\"30002893\" to=\"30002895\"/>\r\n    <row from=\"30002894\" to=\"30002890\"/>\r\n    <row from=\"30002894\" to=\"30002891\"/>\r\n    <row from=\"30002895\" to=\"30002893\"/>\r\n    <row from=\"30002895\" to=\"30002896\"/>\r\n    <row from=\"30002895\" to=\"30002897\"/>\r\n    <row from=\"30002896\" to=\"30002895\"/>\r\n    <row from=\"30002896\" to=\"30002897\"/>\r\n    <row from=\"30002896\" to=\"30002898\"/>\r\n    <row from=\"30002897\" to=\"30002895\"/>\r\n    <row from=\"30002897\" to=\"30002896\"/>\r\n    <row from=\"30002897\" to=\"30002898\"/>\r\n    <row from=\"30002898\" to=\"30002896\"/>\r\n    <row from=\"30002898\" to=\"30002897\"/>\r\n    <row from=\"30002898\" to=\"30002899\"/>\r\n    <row from=\"30002898\" to=\"30002901\"/>\r\n    <row from=\"30002899\" to=\"30002898\"/>\r\n    <row from=\"30002899\" to=\"30002900\"/>\r\n    <row from=\"30002900\" to=\"30002899\"/>\r\n    <row from=\"30002901\" to=\"30002898\"/>\r\n    <row from=\"30002901\" to=\"30002902\"/>\r\n    <row from=\"30002902\" to=\"30002901\"/>\r\n    <row from=\"30002902\" to=\"30002903\"/>\r\n    <row from=\"30002902\" to=\"30002905\"/>\r\n    <row from=\"30002903\" to=\"30002902\"/>\r\n    <row from=\"30002903\" to=\"30002904\"/>\r\n    <row from=\"30002903\" to=\"30002905\"/>\r\n    <row from=\"30002904\" to=\"30002903\"/>\r\n    <row from=\"30002904\" to=\"30002905\"/>\r\n    <row from=\"30002904\" to=\"30002907\"/>\r\n    <row from=\"30002904\" to=\"30002908\"/>\r\n    <row from=\"30002905\" to=\"30002902\"/>\r\n    <row from=\"30002905\" to=\"30002903\"/>\r\n    <row from=\"30002905\" to=\"30002904\"/>\r\n    <row from=\"30002905\" to=\"30002906\"/>\r\n    <row from=\"30002906\" to=\"30002905\"/>\r\n    <row from=\"30002906\" to=\"30003681\"/>\r\n    <row from=\"30002907\" to=\"30002904\"/>\r\n    <row from=\"30002907\" to=\"30002915\"/>\r\n    <row from=\"30002908\" to=\"30002904\"/>\r\n    <row from=\"30002908\" to=\"30002909\"/>\r\n    <row from=\"30002909\" to=\"30002908\"/>\r\n    <row from=\"30002909\" to=\"30002910\"/>\r\n    <row from=\"30002909\" to=\"30002911\"/>\r\n    <row from=\"30002910\" to=\"30002909\"/>\r\n    <row from=\"30002911\" to=\"30002909\"/>\r\n    <row from=\"30002911\" to=\"30002912\"/>\r\n    <row from=\"30002911\" to=\"30002913\"/>\r\n    <row from=\"30002912\" to=\"30002911\"/>\r\n    <row from=\"30002913\" to=\"30002911\"/>\r\n    <row from=\"30002913\" to=\"30002914\"/>\r\n    <row from=\"30002913\" to=\"30002921\"/>\r\n    <row from=\"30002914\" to=\"30002913\"/>\r\n    <row from=\"30002915\" to=\"30002907\"/>\r\n    <row from=\"30002915\" to=\"30002916\"/>\r\n    <row from=\"30002916\" to=\"30002915\"/>\r\n    <row from=\"30002916\" to=\"30002917\"/>\r\n    <row from=\"30002916\" to=\"30002919\"/>\r\n    <row from=\"30002917\" to=\"30002916\"/>\r\n    <row from=\"30002917\" to=\"30002918\"/>\r\n    <row from=\"30002917\" to=\"30002919\"/>\r\n    <row from=\"30002918\" to=\"30002917\"/>\r\n    <row from=\"30002918\" to=\"30002920\"/>\r\n    <row from=\"30002919\" to=\"30002916\"/>\r\n    <row from=\"30002919\" to=\"30002917\"/>\r\n    <row from=\"30002920\" to=\"30001336\"/>\r\n    <row from=\"30002920\" to=\"30002918\"/>\r\n    <row from=\"30002921\" to=\"30002913\"/>\r\n    <row from=\"30002921\" to=\"30002922\"/>\r\n    <row from=\"30002921\" to=\"30002923\"/>\r\n    <row from=\"30002922\" to=\"30002921\"/>\r\n    <row from=\"30002922\" to=\"30002924\"/>\r\n    <row from=\"30002922\" to=\"30002925\"/>\r\n    <row from=\"30002923\" to=\"30002921\"/>\r\n    <row from=\"30002923\" to=\"30002926\"/>\r\n    <row from=\"30002924\" to=\"30002922\"/>\r\n    <row from=\"30002924\" to=\"30002925\"/>\r\n    <row from=\"30002925\" to=\"30002922\"/>\r\n    <row from=\"30002925\" to=\"30002924\"/>\r\n    <row from=\"30002926\" to=\"30002923\"/>\r\n    <row from=\"30002926\" to=\"30002927\"/>\r\n    <row from=\"30002927\" to=\"30002926\"/>\r\n    <row from=\"30002927\" to=\"30002928\"/>\r\n    <row from=\"30002927\" to=\"30002929\"/>\r\n    <row from=\"30002928\" to=\"30002927\"/>\r\n    <row from=\"30002928\" to=\"30002930\"/>\r\n    <row from=\"30002929\" to=\"30002927\"/>\r\n    <row from=\"30002930\" to=\"30002928\"/>\r\n    <row from=\"30002930\" to=\"30002931\"/>\r\n    <row from=\"30002930\" to=\"30003687\"/>\r\n    <row from=\"30002931\" to=\"30002930\"/>\r\n    <row from=\"30002931\" to=\"30002932\"/>\r\n    <row from=\"30002932\" to=\"30002931\"/>\r\n    <row from=\"30002932\" to=\"30002933\"/>\r\n    <row from=\"30002932\" to=\"30002934\"/>\r\n    <row from=\"30002932\" to=\"30002936\"/>\r\n    <row from=\"30002933\" to=\"30002932\"/>\r\n    <row from=\"30002933\" to=\"30002935\"/>\r\n    <row from=\"30002934\" to=\"30002932\"/>\r\n    <row from=\"30002934\" to=\"30002936\"/>\r\n    <row from=\"30002935\" to=\"30002933\"/>\r\n    <row from=\"30002935\" to=\"30002937\"/>\r\n    <row from=\"30002936\" to=\"30002932\"/>\r\n    <row from=\"30002936\" to=\"30002934\"/>\r\n    <row from=\"30002936\" to=\"30002938\"/>\r\n    <row from=\"30002937\" to=\"30002935\"/>\r\n    <row from=\"30002938\" to=\"30002936\"/>\r\n    <row from=\"30002938\" to=\"30002939\"/>\r\n    <row from=\"30002938\" to=\"30002940\"/>\r\n    <row from=\"30002938\" to=\"30002945\"/>\r\n    <row from=\"30002939\" to=\"30002938\"/>\r\n    <row from=\"30002939\" to=\"30002941\"/>\r\n    <row from=\"30002939\" to=\"30002944\"/>\r\n    <row from=\"30002940\" to=\"30002938\"/>\r\n    <row from=\"30002940\" to=\"30002942\"/>\r\n    <row from=\"30002941\" to=\"30002939\"/>\r\n    <row from=\"30002941\" to=\"30002950\"/>\r\n    <row from=\"30002942\" to=\"30002940\"/>\r\n    <row from=\"30002942\" to=\"30002943\"/>\r\n    <row from=\"30002943\" to=\"30002942\"/>\r\n    <row from=\"30002943\" to=\"30002951\"/>\r\n    <row from=\"30002944\" to=\"30002939\"/>\r\n    <row from=\"30002944\" to=\"30002946\"/>\r\n    <row from=\"30002944\" to=\"30002947\"/>\r\n    <row from=\"30002944\" to=\"30002948\"/>\r\n    <row from=\"30002944\" to=\"30002949\"/>\r\n    <row from=\"30002945\" to=\"30002938\"/>\r\n    <row from=\"30002945\" to=\"30002948\"/>\r\n    <row from=\"30002946\" to=\"30002944\"/>\r\n    <row from=\"30002946\" to=\"30002947\"/>\r\n    <row from=\"30002946\" to=\"30002948\"/>\r\n    <row from=\"30002946\" to=\"30002949\"/>\r\n    <row from=\"30002947\" to=\"30002944\"/>\r\n    <row from=\"30002947\" to=\"30002946\"/>\r\n    <row from=\"30002947\" to=\"30002948\"/>\r\n    <row from=\"30002947\" to=\"30002949\"/>\r\n    <row from=\"30002948\" to=\"30002944\"/>\r\n    <row from=\"30002948\" to=\"30002945\"/>\r\n    <row from=\"30002948\" to=\"30002946\"/>\r\n    <row from=\"30002948\" to=\"30002947\"/>\r\n    <row from=\"30002948\" to=\"30002949\"/>\r\n    <row from=\"30002949\" to=\"30002944\"/>\r\n    <row from=\"30002949\" to=\"30002946\"/>\r\n    <row from=\"30002949\" to=\"30002947\"/>\r\n    <row from=\"30002949\" to=\"30002948\"/>\r\n    <row from=\"30002950\" to=\"30002941\"/>\r\n    <row from=\"30002951\" to=\"30002943\"/>\r\n    <row from=\"30002951\" to=\"30002952\"/>\r\n    <row from=\"30002952\" to=\"30002951\"/>\r\n    <row from=\"30002952\" to=\"30002953\"/>\r\n    <row from=\"30002952\" to=\"30002956\"/>\r\n    <row from=\"30002953\" to=\"30002952\"/>\r\n    <row from=\"30002953\" to=\"30002954\"/>\r\n    <row from=\"30002953\" to=\"30002955\"/>\r\n    <row from=\"30002954\" to=\"30002953\"/>\r\n    <row from=\"30002954\" to=\"30002955\"/>\r\n    <row from=\"30002955\" to=\"30002953\"/>\r\n    <row from=\"30002955\" to=\"30002954\"/>\r\n    <row from=\"30002955\" to=\"30004396\"/>\r\n    <row from=\"30002956\" to=\"30002952\"/>\r\n    <row from=\"30002957\" to=\"30002958\"/>\r\n    <row from=\"30002957\" to=\"30002959\"/>\r\n    <row from=\"30002957\" to=\"30002961\"/>\r\n    <row from=\"30002957\" to=\"30003063\"/>\r\n    <row from=\"30002958\" to=\"30002957\"/>\r\n    <row from=\"30002958\" to=\"30002959\"/>\r\n    <row from=\"30002958\" to=\"30002974\"/>\r\n    <row from=\"30002959\" to=\"30002957\"/>\r\n    <row from=\"30002959\" to=\"30002958\"/>\r\n    <row from=\"30002959\" to=\"30002960\"/>\r\n    <row from=\"30002959\" to=\"30002961\"/>\r\n    <row from=\"30002960\" to=\"30002959\"/>\r\n    <row from=\"30002960\" to=\"30002962\"/>\r\n    <row from=\"30002960\" to=\"30002979\"/>\r\n    <row from=\"30002961\" to=\"30002957\"/>\r\n    <row from=\"30002961\" to=\"30002959\"/>\r\n    <row from=\"30002962\" to=\"30002538\"/>\r\n    <row from=\"30002962\" to=\"30002960\"/>\r\n    <row from=\"30002963\" to=\"30002964\"/>\r\n    <row from=\"30002963\" to=\"30002970\"/>\r\n    <row from=\"30002964\" to=\"30002963\"/>\r\n    <row from=\"30002964\" to=\"30002965\"/>\r\n    <row from=\"30002964\" to=\"30002968\"/>\r\n    <row from=\"30002964\" to=\"30002991\"/>\r\n    <row from=\"30002965\" to=\"30002964\"/>\r\n    <row from=\"30002965\" to=\"30002966\"/>\r\n    <row from=\"30002965\" to=\"30002967\"/>\r\n    <row from=\"30002965\" to=\"30002968\"/>\r\n    <row from=\"30002965\" to=\"30003069\"/>\r\n    <row from=\"30002966\" to=\"30002965\"/>\r\n    <row from=\"30002966\" to=\"30002967\"/>\r\n    <row from=\"30002967\" to=\"30002965\"/>\r\n    <row from=\"30002967\" to=\"30002966\"/>\r\n    <row from=\"30002967\" to=\"30002968\"/>\r\n    <row from=\"30002967\" to=\"30002995\"/>\r\n    <row from=\"30002968\" to=\"30002964\"/>\r\n    <row from=\"30002968\" to=\"30002965\"/>\r\n    <row from=\"30002968\" to=\"30002967\"/>\r\n    <row from=\"30002968\" to=\"30003729\"/>\r\n    <row from=\"30002969\" to=\"30002973\"/>\r\n    <row from=\"30002969\" to=\"30002974\"/>\r\n    <row from=\"30002970\" to=\"30002963\"/>\r\n    <row from=\"30002970\" to=\"30002971\"/>\r\n    <row from=\"30002970\" to=\"30003069\"/>\r\n    <row from=\"30002971\" to=\"30002970\"/>\r\n    <row from=\"30002971\" to=\"30002972\"/>\r\n    <row from=\"30002972\" to=\"30002971\"/>\r\n    <row from=\"30002972\" to=\"30002974\"/>\r\n    <row from=\"30002973\" to=\"30000002\"/>\r\n    <row from=\"30002973\" to=\"30002969\"/>\r\n    <row from=\"30002974\" to=\"30002958\"/>\r\n    <row from=\"30002974\" to=\"30002969\"/>\r\n    <row from=\"30002974\" to=\"30002972\"/>\r\n    <row from=\"30002975\" to=\"30002976\"/>\r\n    <row from=\"30002975\" to=\"30003067\"/>\r\n    <row from=\"30002976\" to=\"30002975\"/>\r\n    <row from=\"30002976\" to=\"30002977\"/>\r\n    <row from=\"30002976\" to=\"30002978\"/>\r\n    <row from=\"30002977\" to=\"30002976\"/>\r\n    <row from=\"30002977\" to=\"30002978\"/>\r\n    <row from=\"30002977\" to=\"30002981\"/>\r\n    <row from=\"30002978\" to=\"30002976\"/>\r\n    <row from=\"30002978\" to=\"30002977\"/>\r\n    <row from=\"30002978\" to=\"30002979\"/>\r\n    <row from=\"30002978\" to=\"30002980\"/>\r\n    <row from=\"30002978\" to=\"30002981\"/>\r\n    <row from=\"30002979\" to=\"30002960\"/>\r\n    <row from=\"30002979\" to=\"30002978\"/>\r\n    <row from=\"30002979\" to=\"30002980\"/>\r\n    <row from=\"30002979\" to=\"30002981\"/>\r\n    <row from=\"30002980\" to=\"30002978\"/>\r\n    <row from=\"30002980\" to=\"30002979\"/>\r\n    <row from=\"30002980\" to=\"30003088\"/>\r\n    <row from=\"30002981\" to=\"30002977\"/>\r\n    <row from=\"30002981\" to=\"30002978\"/>\r\n    <row from=\"30002981\" to=\"30002979\"/>\r\n    <row from=\"30002981\" to=\"30003001\"/>\r\n    <row from=\"30002982\" to=\"30000072\"/>\r\n    <row from=\"30002982\" to=\"30002983\"/>\r\n    <row from=\"30002982\" to=\"30002985\"/>\r\n    <row from=\"30002982\" to=\"30002986\"/>\r\n    <row from=\"30002983\" to=\"30002982\"/>\r\n    <row from=\"30002983\" to=\"30002984\"/>\r\n    <row from=\"30002984\" to=\"30002983\"/>\r\n    <row from=\"30002984\" to=\"30002985\"/>\r\n    <row from=\"30002984\" to=\"30002987\"/>\r\n    <row from=\"30002985\" to=\"30002982\"/>\r\n    <row from=\"30002985\" to=\"30002984\"/>\r\n    <row from=\"30002986\" to=\"30002982\"/>\r\n    <row from=\"30002986\" to=\"30002988\"/>\r\n    <row from=\"30002986\" to=\"30002997\"/>\r\n    <row from=\"30002987\" to=\"30002984\"/>\r\n    <row from=\"30002988\" to=\"30002986\"/>\r\n    <row from=\"30002988\" to=\"30002989\"/>\r\n    <row from=\"30002988\" to=\"30002990\"/>\r\n    <row from=\"30002988\" to=\"30002993\"/>\r\n    <row from=\"30002989\" to=\"30002988\"/>\r\n    <row from=\"30002989\" to=\"30002991\"/>\r\n    <row from=\"30002989\" to=\"30002995\"/>\r\n    <row from=\"30002989\" to=\"30002996\"/>\r\n    <row from=\"30002989\" to=\"30002998\"/>\r\n    <row from=\"30002990\" to=\"30002988\"/>\r\n    <row from=\"30002990\" to=\"30002993\"/>\r\n    <row from=\"30002990\" to=\"30002999\"/>\r\n    <row from=\"30002991\" to=\"30002964\"/>\r\n    <row from=\"30002991\" to=\"30002989\"/>\r\n    <row from=\"30002991\" to=\"30002992\"/>\r\n    <row from=\"30002991\" to=\"30002994\"/>\r\n    <row from=\"30002992\" to=\"30002991\"/>\r\n    <row from=\"30002992\" to=\"30002994\"/>\r\n    <row from=\"30002993\" to=\"30002988\"/>\r\n    <row from=\"30002993\" to=\"30002990\"/>\r\n    <row from=\"30002993\" to=\"30002994\"/>\r\n    <row from=\"30002994\" to=\"30002991\"/>\r\n    <row from=\"30002994\" to=\"30002992\"/>\r\n    <row from=\"30002994\" to=\"30002993\"/>\r\n    <row from=\"30002994\" to=\"30003080\"/>\r\n    <row from=\"30002994\" to=\"30003545\"/>\r\n    <row from=\"30002995\" to=\"30002967\"/>\r\n    <row from=\"30002995\" to=\"30002989\"/>\r\n    <row from=\"30002995\" to=\"30002996\"/>\r\n    <row from=\"30002995\" to=\"30002999\"/>\r\n    <row from=\"30002996\" to=\"30002989\"/>\r\n    <row from=\"30002996\" to=\"30002995\"/>\r\n    <row from=\"30002996\" to=\"30002997\"/>\r\n    <row from=\"30002996\" to=\"30002998\"/>\r\n    <row from=\"30002996\" to=\"30002999\"/>\r\n    <row from=\"30002997\" to=\"30002986\"/>\r\n    <row from=\"30002997\" to=\"30002996\"/>\r\n    <row from=\"30002997\" to=\"30002998\"/>\r\n    <row from=\"30002997\" to=\"30002999\"/>\r\n    <row from=\"30002998\" to=\"30002989\"/>\r\n    <row from=\"30002998\" to=\"30002996\"/>\r\n    <row from=\"30002998\" to=\"30002997\"/>\r\n    <row from=\"30002999\" to=\"30002990\"/>\r\n    <row from=\"30002999\" to=\"30002995\"/>\r\n    <row from=\"30002999\" to=\"30002996\"/>\r\n    <row from=\"30002999\" to=\"30002997\"/>\r\n    <row from=\"30002999\" to=\"30003000\"/>\r\n    <row from=\"30003000\" to=\"30002999\"/>\r\n    <row from=\"30003001\" to=\"30002981\"/>\r\n    <row from=\"30003001\" to=\"30003002\"/>\r\n    <row from=\"30003001\" to=\"30003003\"/>\r\n    <row from=\"30003002\" to=\"30003001\"/>\r\n    <row from=\"30003002\" to=\"30003004\"/>\r\n    <row from=\"30003003\" to=\"30003001\"/>\r\n    <row from=\"30003003\" to=\"30003004\"/>\r\n    <row from=\"30003003\" to=\"30003005\"/>\r\n    <row from=\"30003004\" to=\"30003002\"/>\r\n    <row from=\"30003004\" to=\"30003003\"/>\r\n    <row from=\"30003004\" to=\"30003006\"/>\r\n    <row from=\"30003005\" to=\"30003003\"/>\r\n    <row from=\"30003005\" to=\"30003007\"/>\r\n    <row from=\"30003006\" to=\"30003004\"/>\r\n    <row from=\"30003006\" to=\"30003008\"/>\r\n    <row from=\"30003007\" to=\"30003005\"/>\r\n    <row from=\"30003007\" to=\"30003008\"/>\r\n    <row from=\"30003008\" to=\"30003006\"/>\r\n    <row from=\"30003008\" to=\"30003007\"/>\r\n    <row from=\"30003009\" to=\"30003010\"/>\r\n    <row from=\"30003009\" to=\"30003011\"/>\r\n    <row from=\"30003009\" to=\"30003012\"/>\r\n    <row from=\"30003009\" to=\"30003013\"/>\r\n    <row from=\"30003009\" to=\"30003014\"/>\r\n    <row from=\"30003009\" to=\"30003016\"/>\r\n    <row from=\"30003010\" to=\"30003009\"/>\r\n    <row from=\"30003010\" to=\"30003011\"/>\r\n    <row from=\"30003010\" to=\"30003014\"/>\r\n    <row from=\"30003011\" to=\"30003009\"/>\r\n    <row from=\"30003011\" to=\"30003010\"/>\r\n    <row from=\"30003012\" to=\"30003009\"/>\r\n    <row from=\"30003012\" to=\"30003013\"/>\r\n    <row from=\"30003012\" to=\"30003014\"/>\r\n    <row from=\"30003012\" to=\"30003015\"/>\r\n    <row from=\"30003012\" to=\"30003016\"/>\r\n    <row from=\"30003012\" to=\"30003043\"/>\r\n    <row from=\"30003013\" to=\"30003009\"/>\r\n    <row from=\"30003013\" to=\"30003012\"/>\r\n    <row from=\"30003013\" to=\"30003014\"/>\r\n    <row from=\"30003013\" to=\"30003015\"/>\r\n    <row from=\"30003013\" to=\"30003016\"/>\r\n    <row from=\"30003014\" to=\"30003009\"/>\r\n    <row from=\"30003014\" to=\"30003010\"/>\r\n    <row from=\"30003014\" to=\"30003012\"/>\r\n    <row from=\"30003014\" to=\"30003013\"/>\r\n    <row from=\"30003014\" to=\"30003015\"/>\r\n    <row from=\"30003014\" to=\"30003039\"/>\r\n    <row from=\"30003014\" to=\"30004968\"/>\r\n    <row from=\"30003015\" to=\"30003012\"/>\r\n    <row from=\"30003015\" to=\"30003013\"/>\r\n    <row from=\"30003015\" to=\"30003014\"/>\r\n    <row from=\"30003015\" to=\"30003045\"/>\r\n    <row from=\"30003016\" to=\"30003009\"/>\r\n    <row from=\"30003016\" to=\"30003012\"/>\r\n    <row from=\"30003016\" to=\"30003013\"/>\r\n    <row from=\"30003017\" to=\"30002708\"/>\r\n    <row from=\"30003017\" to=\"30003018\"/>\r\n    <row from=\"30003017\" to=\"30003019\"/>\r\n    <row from=\"30003017\" to=\"30003033\"/>\r\n    <row from=\"30003018\" to=\"30003017\"/>\r\n    <row from=\"30003018\" to=\"30003019\"/>\r\n    <row from=\"30003018\" to=\"30003020\"/>\r\n    <row from=\"30003018\" to=\"30003021\"/>\r\n    <row from=\"30003018\" to=\"30003038\"/>\r\n    <row from=\"30003019\" to=\"30003017\"/>\r\n    <row from=\"30003019\" to=\"30003018\"/>\r\n    <row from=\"30003019\" to=\"30003021\"/>\r\n    <row from=\"30003019\" to=\"30003029\"/>\r\n    <row from=\"30003020\" to=\"30003018\"/>\r\n    <row from=\"30003020\" to=\"30003022\"/>\r\n    <row from=\"30003021\" to=\"30003018\"/>\r\n    <row from=\"30003021\" to=\"30003019\"/>\r\n    <row from=\"30003021\" to=\"30003027\"/>\r\n    <row from=\"30003022\" to=\"30003020\"/>\r\n    <row from=\"30003022\" to=\"30003023\"/>\r\n    <row from=\"30003023\" to=\"30003022\"/>\r\n    <row from=\"30003024\" to=\"30003025\"/>\r\n    <row from=\"30003024\" to=\"30003027\"/>\r\n    <row from=\"30003024\" to=\"30003029\"/>\r\n    <row from=\"30003025\" to=\"30003024\"/>\r\n    <row from=\"30003025\" to=\"30003026\"/>\r\n    <row from=\"30003025\" to=\"30003030\"/>\r\n    <row from=\"30003025\" to=\"30003032\"/>\r\n    <row from=\"30003026\" to=\"30002655\"/>\r\n    <row from=\"30003026\" to=\"30003025\"/>\r\n    <row from=\"30003027\" to=\"30003021\"/>\r\n    <row from=\"30003027\" to=\"30003024\"/>\r\n    <row from=\"30003027\" to=\"30003029\"/>\r\n    <row from=\"30003027\" to=\"30003038\"/>\r\n    <row from=\"30003028\" to=\"30003029\"/>\r\n    <row from=\"30003029\" to=\"30002662\"/>\r\n    <row from=\"30003029\" to=\"30003019\"/>\r\n    <row from=\"30003029\" to=\"30003024\"/>\r\n    <row from=\"30003029\" to=\"30003027\"/>\r\n    <row from=\"30003029\" to=\"30003028\"/>\r\n    <row from=\"30003030\" to=\"30002648\"/>\r\n    <row from=\"30003030\" to=\"30002692\"/>\r\n    <row from=\"30003030\" to=\"30002699\"/>\r\n    <row from=\"30003030\" to=\"30003025\"/>\r\n    <row from=\"30003031\" to=\"30002659\"/>\r\n    <row from=\"30003031\" to=\"30003032\"/>\r\n    <row from=\"30003031\" to=\"30003033\"/>\r\n    <row from=\"30003032\" to=\"30002659\"/>\r\n    <row from=\"30003032\" to=\"30003025\"/>\r\n    <row from=\"30003032\" to=\"30003031\"/>\r\n    <row from=\"30003032\" to=\"30003033\"/>\r\n    <row from=\"30003032\" to=\"30003034\"/>\r\n    <row from=\"30003033\" to=\"30002715\"/>\r\n    <row from=\"30003033\" to=\"30003017\"/>\r\n    <row from=\"30003033\" to=\"30003031\"/>\r\n    <row from=\"30003033\" to=\"30003032\"/>\r\n    <row from=\"30003033\" to=\"30003034\"/>\r\n    <row from=\"30003033\" to=\"30003035\"/>\r\n    <row from=\"30003034\" to=\"30002639\"/>\r\n    <row from=\"30003034\" to=\"30002706\"/>\r\n    <row from=\"30003034\" to=\"30003032\"/>\r\n    <row from=\"30003034\" to=\"30003033\"/>\r\n    <row from=\"30003034\" to=\"30003035\"/>\r\n    <row from=\"30003035\" to=\"30003033\"/>\r\n    <row from=\"30003035\" to=\"30003034\"/>\r\n    <row from=\"30003035\" to=\"30003036\"/>\r\n    <row from=\"30003036\" to=\"30003035\"/>\r\n    <row from=\"30003036\" to=\"30003037\"/>\r\n    <row from=\"30003037\" to=\"30003036\"/>\r\n    <row from=\"30003038\" to=\"30003018\"/>\r\n    <row from=\"30003038\" to=\"30003027\"/>\r\n    <row from=\"30003038\" to=\"30003039\"/>\r\n    <row from=\"30003038\" to=\"30003040\"/>\r\n    <row from=\"30003038\" to=\"30003042\"/>\r\n    <row from=\"30003038\" to=\"30003044\"/>\r\n    <row from=\"30003039\" to=\"30003014\"/>\r\n    <row from=\"30003039\" to=\"30003038\"/>\r\n    <row from=\"30003039\" to=\"30003040\"/>\r\n    <row from=\"30003039\" to=\"30003041\"/>\r\n    <row from=\"30003039\" to=\"30003043\"/>\r\n    <row from=\"30003039\" to=\"30003053\"/>\r\n    <row from=\"30003040\" to=\"30003038\"/>\r\n    <row from=\"30003040\" to=\"30003039\"/>\r\n    <row from=\"30003040\" to=\"30003043\"/>\r\n    <row from=\"30003040\" to=\"30003044\"/>\r\n    <row from=\"30003041\" to=\"30003039\"/>\r\n    <row from=\"30003042\" to=\"30003038\"/>\r\n    <row from=\"30003042\" to=\"30003043\"/>\r\n    <row from=\"30003043\" to=\"30003012\"/>\r\n    <row from=\"30003043\" to=\"30003039\"/>\r\n    <row from=\"30003043\" to=\"30003040\"/>\r\n    <row from=\"30003043\" to=\"30003042\"/>\r\n    <row from=\"30003044\" to=\"30003038\"/>\r\n    <row from=\"30003044\" to=\"30003040\"/>\r\n    <row from=\"30003044\" to=\"30003057\"/>\r\n    <row from=\"30003045\" to=\"30003015\"/>\r\n    <row from=\"30003045\" to=\"30003047\"/>\r\n    <row from=\"30003045\" to=\"30003049\"/>\r\n    <row from=\"30003045\" to=\"30003051\"/>\r\n    <row from=\"30003045\" to=\"30003054\"/>\r\n    <row from=\"30003046\" to=\"30002702\"/>\r\n    <row from=\"30003046\" to=\"30005029\"/>\r\n    <row from=\"30003046\" to=\"30045329\"/>\r\n    <row from=\"30003047\" to=\"30003045\"/>\r\n    <row from=\"30003047\" to=\"30003048\"/>\r\n    <row from=\"30003047\" to=\"30003050\"/>\r\n    <row from=\"30003047\" to=\"30003054\"/>\r\n    <row from=\"30003048\" to=\"30003047\"/>\r\n    <row from=\"30003048\" to=\"30003050\"/>\r\n    <row from=\"30003048\" to=\"30003052\"/>\r\n    <row from=\"30003048\" to=\"30003054\"/>\r\n    <row from=\"30003049\" to=\"30003045\"/>\r\n    <row from=\"30003049\" to=\"30003051\"/>\r\n    <row from=\"30003050\" to=\"30003047\"/>\r\n    <row from=\"30003050\" to=\"30003048\"/>\r\n    <row from=\"30003050\" to=\"30003054\"/>\r\n    <row from=\"30003050\" to=\"30003056\"/>\r\n    <row from=\"30003051\" to=\"30003045\"/>\r\n    <row from=\"30003051\" to=\"30003049\"/>\r\n    <row from=\"30003051\" to=\"30003053\"/>\r\n    <row from=\"30003052\" to=\"30003048\"/>\r\n    <row from=\"30003052\" to=\"30003055\"/>\r\n    <row from=\"30003052\" to=\"30005201\"/>\r\n    <row from=\"30003053\" to=\"30003039\"/>\r\n    <row from=\"30003053\" to=\"30003051\"/>\r\n    <row from=\"30003054\" to=\"30003045\"/>\r\n    <row from=\"30003054\" to=\"30003047\"/>\r\n    <row from=\"30003054\" to=\"30003048\"/>\r\n    <row from=\"30003054\" to=\"30003050\"/>\r\n    <row from=\"30003054\" to=\"30003056\"/>\r\n    <row from=\"30003055\" to=\"30003052\"/>\r\n    <row from=\"30003055\" to=\"30005288\"/>\r\n    <row from=\"30003056\" to=\"30003050\"/>\r\n    <row from=\"30003056\" to=\"30003054\"/>\r\n    <row from=\"30003057\" to=\"30003044\"/>\r\n    <row from=\"30003057\" to=\"30003058\"/>\r\n    <row from=\"30003058\" to=\"30003057\"/>\r\n    <row from=\"30003058\" to=\"30003059\"/>\r\n    <row from=\"30003058\" to=\"30003060\"/>\r\n    <row from=\"30003059\" to=\"30003058\"/>\r\n    <row from=\"30003060\" to=\"30003058\"/>\r\n    <row from=\"30003060\" to=\"30003061\"/>\r\n    <row from=\"30003060\" to=\"30003062\"/>\r\n    <row from=\"30003061\" to=\"30002654\"/>\r\n    <row from=\"30003061\" to=\"30003060\"/>\r\n    <row from=\"30003062\" to=\"30002728\"/>\r\n    <row from=\"30003062\" to=\"30003060\"/>\r\n    <row from=\"30003063\" to=\"30002957\"/>\r\n    <row from=\"30003063\" to=\"30003068\"/>\r\n    <row from=\"30003063\" to=\"30003069\"/>\r\n    <row from=\"30003064\" to=\"30003066\"/>\r\n    <row from=\"30003064\" to=\"30003069\"/>\r\n    <row from=\"30003065\" to=\"30003066\"/>\r\n    <row from=\"30003065\" to=\"30003067\"/>\r\n    <row from=\"30003065\" to=\"30003520\"/>\r\n    <row from=\"30003066\" to=\"30003064\"/>\r\n    <row from=\"30003066\" to=\"30003065\"/>\r\n    <row from=\"30003067\" to=\"30002975\"/>\r\n    <row from=\"30003067\" to=\"30003065\"/>\r\n    <row from=\"30003067\" to=\"30003068\"/>\r\n    <row from=\"30003068\" to=\"30002542\"/>\r\n    <row from=\"30003068\" to=\"30003063\"/>\r\n    <row from=\"30003068\" to=\"30003067\"/>\r\n    <row from=\"30003068\" to=\"30003069\"/>\r\n    <row from=\"30003069\" to=\"30002965\"/>\r\n    <row from=\"30003069\" to=\"30002970\"/>\r\n    <row from=\"30003069\" to=\"30003063\"/>\r\n    <row from=\"30003069\" to=\"30003064\"/>\r\n    <row from=\"30003069\" to=\"30003068\"/>\r\n    <row from=\"30003069\" to=\"30003070\"/>\r\n    <row from=\"30003070\" to=\"30003069\"/>\r\n    <row from=\"30003070\" to=\"30003071\"/>\r\n    <row from=\"30003070\" to=\"30003074\"/>\r\n    <row from=\"30003070\" to=\"30003076\"/>\r\n    <row from=\"30003070\" to=\"30003077\"/>\r\n    <row from=\"30003071\" to=\"30003070\"/>\r\n    <row from=\"30003071\" to=\"30003072\"/>\r\n    <row from=\"30003071\" to=\"30003076\"/>\r\n    <row from=\"30003071\" to=\"30003091\"/>\r\n    <row from=\"30003072\" to=\"30003071\"/>\r\n    <row from=\"30003072\" to=\"30003073\"/>\r\n    <row from=\"30003072\" to=\"30003077\"/>\r\n    <row from=\"30003073\" to=\"30003072\"/>\r\n    <row from=\"30003073\" to=\"30003074\"/>\r\n    <row from=\"30003073\" to=\"30003075\"/>\r\n    <row from=\"30003074\" to=\"30003070\"/>\r\n    <row from=\"30003074\" to=\"30003073\"/>\r\n    <row from=\"30003074\" to=\"30003075\"/>\r\n    <row from=\"30003075\" to=\"30003073\"/>\r\n    <row from=\"30003075\" to=\"30003074\"/>\r\n    <row from=\"30003075\" to=\"30003079\"/>\r\n    <row from=\"30003076\" to=\"30003070\"/>\r\n    <row from=\"30003076\" to=\"30003071\"/>\r\n    <row from=\"30003076\" to=\"30003081\"/>\r\n    <row from=\"30003077\" to=\"30003070\"/>\r\n    <row from=\"30003077\" to=\"30003072\"/>\r\n    <row from=\"30003077\" to=\"30003078\"/>\r\n    <row from=\"30003078\" to=\"30003077\"/>\r\n    <row from=\"30003078\" to=\"30003092\"/>\r\n    <row from=\"30003079\" to=\"30003075\"/>\r\n    <row from=\"30003079\" to=\"30003086\"/>\r\n    <row from=\"30003080\" to=\"30002994\"/>\r\n    <row from=\"30003080\" to=\"30003081\"/>\r\n    <row from=\"30003080\" to=\"30003083\"/>\r\n    <row from=\"30003081\" to=\"30003076\"/>\r\n    <row from=\"30003081\" to=\"30003080\"/>\r\n    <row from=\"30003081\" to=\"30003082\"/>\r\n    <row from=\"30003081\" to=\"30003085\"/>\r\n    <row from=\"30003082\" to=\"30003081\"/>\r\n    <row from=\"30003082\" to=\"30003084\"/>\r\n    <row from=\"30003082\" to=\"30003085\"/>\r\n    <row from=\"30003083\" to=\"30003080\"/>\r\n    <row from=\"30003084\" to=\"30003082\"/>\r\n    <row from=\"30003085\" to=\"30003081\"/>\r\n    <row from=\"30003085\" to=\"30003082\"/>\r\n    <row from=\"30003086\" to=\"30003079\"/>\r\n    <row from=\"30003086\" to=\"30003087\"/>\r\n    <row from=\"30003086\" to=\"30003088\"/>\r\n    <row from=\"30003086\" to=\"30003091\"/>\r\n    <row from=\"30003087\" to=\"30003086\"/>\r\n    <row from=\"30003088\" to=\"30002980\"/>\r\n    <row from=\"30003088\" to=\"30003086\"/>\r\n    <row from=\"30003088\" to=\"30003089\"/>\r\n    <row from=\"30003089\" to=\"30002087\"/>\r\n    <row from=\"30003089\" to=\"30003088\"/>\r\n    <row from=\"30003089\" to=\"30003090\"/>\r\n    <row from=\"30003090\" to=\"30002653\"/>\r\n    <row from=\"30003090\" to=\"30003089\"/>\r\n    <row from=\"30003091\" to=\"30003071\"/>\r\n    <row from=\"30003091\" to=\"30003086\"/>\r\n    <row from=\"30003092\" to=\"30003078\"/>\r\n    <row from=\"30003092\" to=\"30003093\"/>\r\n    <row from=\"30003092\" to=\"30003096\"/>\r\n    <row from=\"30003093\" to=\"30003092\"/>\r\n    <row from=\"30003093\" to=\"30003094\"/>\r\n    <row from=\"30003094\" to=\"30003093\"/>\r\n    <row from=\"30003094\" to=\"30003095\"/>\r\n    <row from=\"30003095\" to=\"30003094\"/>\r\n    <row from=\"30003095\" to=\"30003097\"/>\r\n    <row from=\"30003096\" to=\"30003092\"/>\r\n    <row from=\"30003097\" to=\"30003095\"/>\r\n    <row from=\"30003098\" to=\"30001865\"/>\r\n    <row from=\"30003098\" to=\"30003099\"/>\r\n    <row from=\"30003098\" to=\"30003103\"/>\r\n    <row from=\"30003099\" to=\"30003098\"/>\r\n    <row from=\"30003099\" to=\"30003100\"/>\r\n    <row from=\"30003100\" to=\"30003099\"/>\r\n    <row from=\"30003100\" to=\"30003101\"/>\r\n    <row from=\"30003100\" to=\"30003102\"/>\r\n    <row from=\"30003101\" to=\"30003100\"/>\r\n    <row from=\"30003102\" to=\"30003100\"/>\r\n    <row from=\"30003102\" to=\"30003104\"/>\r\n    <row from=\"30003103\" to=\"30003098\"/>\r\n    <row from=\"30003103\" to=\"30003105\"/>\r\n    <row from=\"30003104\" to=\"30003102\"/>\r\n    <row from=\"30003104\" to=\"30003113\"/>\r\n    <row from=\"30003105\" to=\"30003103\"/>\r\n    <row from=\"30003105\" to=\"30003106\"/>\r\n    <row from=\"30003105\" to=\"30003107\"/>\r\n    <row from=\"30003106\" to=\"30003105\"/>\r\n    <row from=\"30003107\" to=\"30003105\"/>\r\n    <row from=\"30003107\" to=\"30003108\"/>\r\n    <row from=\"30003108\" to=\"30003107\"/>\r\n    <row from=\"30003108\" to=\"30003109\"/>\r\n    <row from=\"30003109\" to=\"30003108\"/>\r\n    <row from=\"30003109\" to=\"30003110\"/>\r\n    <row from=\"30003110\" to=\"30003109\"/>\r\n    <row from=\"30003110\" to=\"30003111\"/>\r\n    <row from=\"30003110\" to=\"30003112\"/>\r\n    <row from=\"30003110\" to=\"30004452\"/>\r\n    <row from=\"30003111\" to=\"30003110\"/>\r\n    <row from=\"30003111\" to=\"30003112\"/>\r\n    <row from=\"30003112\" to=\"30003110\"/>\r\n    <row from=\"30003112\" to=\"30003111\"/>\r\n    <row from=\"30003112\" to=\"30003119\"/>\r\n    <row from=\"30003112\" to=\"30003125\"/>\r\n    <row from=\"30003113\" to=\"30003104\"/>\r\n    <row from=\"30003113\" to=\"30003114\"/>\r\n    <row from=\"30003114\" to=\"30003113\"/>\r\n    <row from=\"30003114\" to=\"30003115\"/>\r\n    <row from=\"30003114\" to=\"30003116\"/>\r\n    <row from=\"30003114\" to=\"30003117\"/>\r\n    <row from=\"30003115\" to=\"30003114\"/>\r\n    <row from=\"30003116\" to=\"30003114\"/>\r\n    <row from=\"30003117\" to=\"30003114\"/>\r\n    <row from=\"30003117\" to=\"30003118\"/>\r\n    <row from=\"30003118\" to=\"30003117\"/>\r\n    <row from=\"30003119\" to=\"30003112\"/>\r\n    <row from=\"30003119\" to=\"30003120\"/>\r\n    <row from=\"30003119\" to=\"30003124\"/>\r\n    <row from=\"30003120\" to=\"30003119\"/>\r\n    <row from=\"30003120\" to=\"30003121\"/>\r\n    <row from=\"30003120\" to=\"30003122\"/>\r\n    <row from=\"30003121\" to=\"30003120\"/>\r\n    <row from=\"30003122\" to=\"30003120\"/>\r\n    <row from=\"30003122\" to=\"30003123\"/>\r\n    <row from=\"30003123\" to=\"30003122\"/>\r\n    <row from=\"30003123\" to=\"30003124\"/>\r\n    <row from=\"30003124\" to=\"30003119\"/>\r\n    <row from=\"30003124\" to=\"30003123\"/>\r\n    <row from=\"30003125\" to=\"30003112\"/>\r\n    <row from=\"30003125\" to=\"30003126\"/>\r\n    <row from=\"30003125\" to=\"30003129\"/>\r\n    <row from=\"30003125\" to=\"30003133\"/>\r\n    <row from=\"30003126\" to=\"30003125\"/>\r\n    <row from=\"30003126\" to=\"30003127\"/>\r\n    <row from=\"30003126\" to=\"30003128\"/>\r\n    <row from=\"30003126\" to=\"30003130\"/>\r\n    <row from=\"30003127\" to=\"30003126\"/>\r\n    <row from=\"30003127\" to=\"30003128\"/>\r\n    <row from=\"30003128\" to=\"30003126\"/>\r\n    <row from=\"30003128\" to=\"30003127\"/>\r\n    <row from=\"30003128\" to=\"30003132\"/>\r\n    <row from=\"30003129\" to=\"30003125\"/>\r\n    <row from=\"30003129\" to=\"30003131\"/>\r\n    <row from=\"30003130\" to=\"30003126\"/>\r\n    <row from=\"30003130\" to=\"30003132\"/>\r\n    <row from=\"30003131\" to=\"30003129\"/>\r\n    <row from=\"30003131\" to=\"30003148\"/>\r\n    <row from=\"30003132\" to=\"30003128\"/>\r\n    <row from=\"30003132\" to=\"30003130\"/>\r\n    <row from=\"30003132\" to=\"30003140\"/>\r\n    <row from=\"30003133\" to=\"30003125\"/>\r\n    <row from=\"30003133\" to=\"30003134\"/>\r\n    <row from=\"30003133\" to=\"30003135\"/>\r\n    <row from=\"30003133\" to=\"30003137\"/>\r\n    <row from=\"30003134\" to=\"30003133\"/>\r\n    <row from=\"30003135\" to=\"30003133\"/>\r\n    <row from=\"30003135\" to=\"30003136\"/>\r\n    <row from=\"30003135\" to=\"30003139\"/>\r\n    <row from=\"30003136\" to=\"30003135\"/>\r\n    <row from=\"30003136\" to=\"30003138\"/>\r\n    <row from=\"30003137\" to=\"30003133\"/>\r\n    <row from=\"30003138\" to=\"30003136\"/>\r\n    <row from=\"30003139\" to=\"30003135\"/>\r\n    <row from=\"30003140\" to=\"30003132\"/>\r\n    <row from=\"30003140\" to=\"30003141\"/>\r\n    <row from=\"30003140\" to=\"30003145\"/>\r\n    <row from=\"30003141\" to=\"30003140\"/>\r\n    <row from=\"30003141\" to=\"30003142\"/>\r\n    <row from=\"30003141\" to=\"30003143\"/>\r\n    <row from=\"30003142\" to=\"30003141\"/>\r\n    <row from=\"30003142\" to=\"30003144\"/>\r\n    <row from=\"30003142\" to=\"30003147\"/>\r\n    <row from=\"30003143\" to=\"30003141\"/>\r\n    <row from=\"30003144\" to=\"30003142\"/>\r\n    <row from=\"30003144\" to=\"30003147\"/>\r\n    <row from=\"30003145\" to=\"30003140\"/>\r\n    <row from=\"30003145\" to=\"30003146\"/>\r\n    <row from=\"30003146\" to=\"30003145\"/>\r\n    <row from=\"30003147\" to=\"30003142\"/>\r\n    <row from=\"30003147\" to=\"30003144\"/>\r\n    <row from=\"30003148\" to=\"30003131\"/>\r\n    <row from=\"30003148\" to=\"30003149\"/>\r\n    <row from=\"30003148\" to=\"30003150\"/>\r\n    <row from=\"30003148\" to=\"30003152\"/>\r\n    <row from=\"30003149\" to=\"30003148\"/>\r\n    <row from=\"30003149\" to=\"30003151\"/>\r\n    <row from=\"30003149\" to=\"30003170\"/>\r\n    <row from=\"30003150\" to=\"30003148\"/>\r\n    <row from=\"30003151\" to=\"30003149\"/>\r\n    <row from=\"30003151\" to=\"30003153\"/>\r\n    <row from=\"30003151\" to=\"30004691\"/>\r\n    <row from=\"30003152\" to=\"30003148\"/>\r\n    <row from=\"30003152\" to=\"30003154\"/>\r\n    <row from=\"30003152\" to=\"30004667\"/>\r\n    <row from=\"30003153\" to=\"30003151\"/>\r\n    <row from=\"30003153\" to=\"30003163\"/>\r\n    <row from=\"30003154\" to=\"30003152\"/>\r\n    <row from=\"30003154\" to=\"30003155\"/>\r\n    <row from=\"30003154\" to=\"30003157\"/>\r\n    <row from=\"30003155\" to=\"30003154\"/>\r\n    <row from=\"30003155\" to=\"30003156\"/>\r\n    <row from=\"30003156\" to=\"30003155\"/>\r\n    <row from=\"30003156\" to=\"30003158\"/>\r\n    <row from=\"30003156\" to=\"30003160\"/>\r\n    <row from=\"30003157\" to=\"30003154\"/>\r\n    <row from=\"30003157\" to=\"30003159\"/>\r\n    <row from=\"30003158\" to=\"30003156\"/>\r\n    <row from=\"30003158\" to=\"30003159\"/>\r\n    <row from=\"30003158\" to=\"30003162\"/>\r\n    <row from=\"30003159\" to=\"30003157\"/>\r\n    <row from=\"30003159\" to=\"30003158\"/>\r\n    <row from=\"30003160\" to=\"30003156\"/>\r\n    <row from=\"30003160\" to=\"30003161\"/>\r\n    <row from=\"30003160\" to=\"30003162\"/>\r\n    <row from=\"30003161\" to=\"30003160\"/>\r\n    <row from=\"30003162\" to=\"30003158\"/>\r\n    <row from=\"30003162\" to=\"30003160\"/>\r\n    <row from=\"30003163\" to=\"30003153\"/>\r\n    <row from=\"30003163\" to=\"30003164\"/>\r\n    <row from=\"30003163\" to=\"30003167\"/>\r\n    <row from=\"30003164\" to=\"30003163\"/>\r\n    <row from=\"30003164\" to=\"30003165\"/>\r\n    <row from=\"30003164\" to=\"30003166\"/>\r\n    <row from=\"30003165\" to=\"30003164\"/>\r\n    <row from=\"30003165\" to=\"30003166\"/>\r\n    <row from=\"30003166\" to=\"30003164\"/>\r\n    <row from=\"30003166\" to=\"30003165\"/>\r\n    <row from=\"30003166\" to=\"30003169\"/>\r\n    <row from=\"30003167\" to=\"30003163\"/>\r\n    <row from=\"30003167\" to=\"30003168\"/>\r\n    <row from=\"30003168\" to=\"30003167\"/>\r\n    <row from=\"30003169\" to=\"30003166\"/>\r\n    <row from=\"30003169\" to=\"30004491\"/>\r\n    <row from=\"30003170\" to=\"30003149\"/>\r\n    <row from=\"30003170\" to=\"30003171\"/>\r\n    <row from=\"30003170\" to=\"30003173\"/>\r\n    <row from=\"30003171\" to=\"30003170\"/>\r\n    <row from=\"30003171\" to=\"30003172\"/>\r\n    <row from=\"30003172\" to=\"30003171\"/>\r\n    <row from=\"30003173\" to=\"30003170\"/>\r\n    <row from=\"30003173\" to=\"30003174\"/>\r\n    <row from=\"30003173\" to=\"30003175\"/>\r\n    <row from=\"30003174\" to=\"30003173\"/>\r\n    <row from=\"30003174\" to=\"30003175\"/>\r\n    <row from=\"30003175\" to=\"30003173\"/>\r\n    <row from=\"30003175\" to=\"30003174\"/>\r\n    <row from=\"30003175\" to=\"30003176\"/>\r\n    <row from=\"30003176\" to=\"30003175\"/>\r\n    <row from=\"30003177\" to=\"30003178\"/>\r\n    <row from=\"30003177\" to=\"30003179\"/>\r\n    <row from=\"30003177\" to=\"30004671\"/>\r\n    <row from=\"30003178\" to=\"30003177\"/>\r\n    <row from=\"30003178\" to=\"30003181\"/>\r\n    <row from=\"30003179\" to=\"30003177\"/>\r\n    <row from=\"30003179\" to=\"30003180\"/>\r\n    <row from=\"30003179\" to=\"30003181\"/>\r\n    <row from=\"30003179\" to=\"30003182\"/>\r\n    <row from=\"30003180\" to=\"30003179\"/>\r\n    <row from=\"30003180\" to=\"30003182\"/>\r\n    <row from=\"30003181\" to=\"30003178\"/>\r\n    <row from=\"30003181\" to=\"30003179\"/>\r\n    <row from=\"30003181\" to=\"30003182\"/>\r\n    <row from=\"30003182\" to=\"30003179\"/>\r\n    <row from=\"30003182\" to=\"30003180\"/>\r\n    <row from=\"30003182\" to=\"30003181\"/>\r\n    <row from=\"30003183\" to=\"30001068\"/>\r\n    <row from=\"30003183\" to=\"30003184\"/>\r\n    <row from=\"30003183\" to=\"30003185\"/>\r\n    <row from=\"30003184\" to=\"30003183\"/>\r\n    <row from=\"30003184\" to=\"30003185\"/>\r\n    <row from=\"30003184\" to=\"30003186\"/>\r\n    <row from=\"30003185\" to=\"30003183\"/>\r\n    <row from=\"30003185\" to=\"30003184\"/>\r\n    <row from=\"30003185\" to=\"30003186\"/>\r\n    <row from=\"30003186\" to=\"30001132\"/>\r\n    <row from=\"30003186\" to=\"30001135\"/>\r\n    <row from=\"30003186\" to=\"30003184\"/>\r\n    <row from=\"30003186\" to=\"30003185\"/>\r\n    <row from=\"30003186\" to=\"30003187\"/>\r\n    <row from=\"30003187\" to=\"30003186\"/>\r\n    <row from=\"30003187\" to=\"30003188\"/>\r\n    <row from=\"30003187\" to=\"30003189\"/>\r\n    <row from=\"30003188\" to=\"30003187\"/>\r\n    <row from=\"30003188\" to=\"30003190\"/>\r\n    <row from=\"30003189\" to=\"30001147\"/>\r\n    <row from=\"30003189\" to=\"30003187\"/>\r\n    <row from=\"30003190\" to=\"30003188\"/>\r\n    <row from=\"30003190\" to=\"30003191\"/>\r\n    <row from=\"30003191\" to=\"30003190\"/>\r\n    <row from=\"30003191\" to=\"30003192\"/>\r\n    <row from=\"30003191\" to=\"30003249\"/>\r\n    <row from=\"30003192\" to=\"30003191\"/>\r\n    <row from=\"30003192\" to=\"30003193\"/>\r\n    <row from=\"30003193\" to=\"30003192\"/>\r\n    <row from=\"30003193\" to=\"30003194\"/>\r\n    <row from=\"30003193\" to=\"30003195\"/>\r\n    <row from=\"30003194\" to=\"30003193\"/>\r\n    <row from=\"30003194\" to=\"30003266\"/>\r\n    <row from=\"30003195\" to=\"30003193\"/>\r\n    <row from=\"30003195\" to=\"30003196\"/>\r\n    <row from=\"30003195\" to=\"30003255\"/>\r\n    <row from=\"30003196\" to=\"30003195\"/>\r\n    <row from=\"30003196\" to=\"30003210\"/>\r\n    <row from=\"30003196\" to=\"30005158\"/>\r\n    <row from=\"30003197\" to=\"30003198\"/>\r\n    <row from=\"30003197\" to=\"30005115\"/>\r\n    <row from=\"30003198\" to=\"30003197\"/>\r\n    <row from=\"30003198\" to=\"30003199\"/>\r\n    <row from=\"30003198\" to=\"30003201\"/>\r\n    <row from=\"30003199\" to=\"30003198\"/>\r\n    <row from=\"30003199\" to=\"30003200\"/>\r\n    <row from=\"30003199\" to=\"30003201\"/>\r\n    <row from=\"30003200\" to=\"30003199\"/>\r\n    <row from=\"30003200\" to=\"30003202\"/>\r\n    <row from=\"30003200\" to=\"30003203\"/>\r\n    <row from=\"30003200\" to=\"30003235\"/>\r\n    <row from=\"30003201\" to=\"30003198\"/>\r\n    <row from=\"30003201\" to=\"30003199\"/>\r\n    <row from=\"30003202\" to=\"30003200\"/>\r\n    <row from=\"30003202\" to=\"30003203\"/>\r\n    <row from=\"30003203\" to=\"30003200\"/>\r\n    <row from=\"30003203\" to=\"30003202\"/>\r\n    <row from=\"30003203\" to=\"30003204\"/>\r\n    <row from=\"30003204\" to=\"30003203\"/>\r\n    <row from=\"30003204\" to=\"30003205\"/>\r\n    <row from=\"30003204\" to=\"30003208\"/>\r\n    <row from=\"30003205\" to=\"30003204\"/>\r\n    <row from=\"30003205\" to=\"30003206\"/>\r\n    <row from=\"30003205\" to=\"30003207\"/>\r\n    <row from=\"30003205\" to=\"30003208\"/>\r\n    <row from=\"30003206\" to=\"30003205\"/>\r\n    <row from=\"30003206\" to=\"30003261\"/>\r\n    <row from=\"30003207\" to=\"30003205\"/>\r\n    <row from=\"30003208\" to=\"30003204\"/>\r\n    <row from=\"30003208\" to=\"30003205\"/>\r\n    <row from=\"30003208\" to=\"30003209\"/>\r\n    <row from=\"30003209\" to=\"30003208\"/>\r\n    <row from=\"30003209\" to=\"30003223\"/>\r\n    <row from=\"30003209\" to=\"30004161\"/>\r\n    <row from=\"30003210\" to=\"30003196\"/>\r\n    <row from=\"30003210\" to=\"30003211\"/>\r\n    <row from=\"30003210\" to=\"30003212\"/>\r\n    <row from=\"30003210\" to=\"30003213\"/>\r\n    <row from=\"30003210\" to=\"30003214\"/>\r\n    <row from=\"30003211\" to=\"30003210\"/>\r\n    <row from=\"30003211\" to=\"30003212\"/>\r\n    <row from=\"30003211\" to=\"30003214\"/>\r\n    <row from=\"30003211\" to=\"30003215\"/>\r\n    <row from=\"30003212\" to=\"30003210\"/>\r\n    <row from=\"30003212\" to=\"30003211\"/>\r\n    <row from=\"30003212\" to=\"30003229\"/>\r\n    <row from=\"30003212\" to=\"30003242\"/>\r\n    <row from=\"30003213\" to=\"30003210\"/>\r\n    <row from=\"30003213\" to=\"30003214\"/>\r\n    <row from=\"30003214\" to=\"30003210\"/>\r\n    <row from=\"30003214\" to=\"30003211\"/>\r\n    <row from=\"30003214\" to=\"30003213\"/>\r\n    <row from=\"30003215\" to=\"30003211\"/>\r\n    <row from=\"30003215\" to=\"30003216\"/>\r\n    <row from=\"30003216\" to=\"30003215\"/>\r\n    <row from=\"30003216\" to=\"30003217\"/>\r\n    <row from=\"30003216\" to=\"30003218\"/>\r\n    <row from=\"30003216\" to=\"30003220\"/>\r\n    <row from=\"30003217\" to=\"30003216\"/>\r\n    <row from=\"30003217\" to=\"30003222\"/>\r\n    <row from=\"30003218\" to=\"30003216\"/>\r\n    <row from=\"30003218\" to=\"30003219\"/>\r\n    <row from=\"30003218\" to=\"30003220\"/>\r\n    <row from=\"30003218\" to=\"30003221\"/>\r\n    <row from=\"30003218\" to=\"30003222\"/>\r\n    <row from=\"30003219\" to=\"30003218\"/>\r\n    <row from=\"30003219\" to=\"30003221\"/>\r\n    <row from=\"30003219\" to=\"30003222\"/>\r\n    <row from=\"30003220\" to=\"30003216\"/>\r\n    <row from=\"30003220\" to=\"30003218\"/>\r\n    <row from=\"30003220\" to=\"30003221\"/>\r\n    <row from=\"30003220\" to=\"30003222\"/>\r\n    <row from=\"30003221\" to=\"30003218\"/>\r\n    <row from=\"30003221\" to=\"30003219\"/>\r\n    <row from=\"30003221\" to=\"30003220\"/>\r\n    <row from=\"30003221\" to=\"30005175\"/>\r\n    <row from=\"30003222\" to=\"30003217\"/>\r\n    <row from=\"30003222\" to=\"30003218\"/>\r\n    <row from=\"30003222\" to=\"30003219\"/>\r\n    <row from=\"30003222\" to=\"30003220\"/>\r\n    <row from=\"30003223\" to=\"30003209\"/>\r\n    <row from=\"30003223\" to=\"30003224\"/>\r\n    <row from=\"30003223\" to=\"30003226\"/>\r\n    <row from=\"30003224\" to=\"30003223\"/>\r\n    <row from=\"30003224\" to=\"30003225\"/>\r\n    <row from=\"30003224\" to=\"30003226\"/>\r\n    <row from=\"30003225\" to=\"30003224\"/>\r\n    <row from=\"30003225\" to=\"30003227\"/>\r\n    <row from=\"30003225\" to=\"30003228\"/>\r\n    <row from=\"30003226\" to=\"30003223\"/>\r\n    <row from=\"30003226\" to=\"30003224\"/>\r\n    <row from=\"30003227\" to=\"30003225\"/>\r\n    <row from=\"30003227\" to=\"30004170\"/>\r\n    <row from=\"30003228\" to=\"30003225\"/>\r\n    <row from=\"30003228\" to=\"30004171\"/>\r\n    <row from=\"30003229\" to=\"30003212\"/>\r\n    <row from=\"30003229\" to=\"30003230\"/>\r\n    <row from=\"30003229\" to=\"30003231\"/>\r\n    <row from=\"30003229\" to=\"30003233\"/>\r\n    <row from=\"30003230\" to=\"30003229\"/>\r\n    <row from=\"30003230\" to=\"30003231\"/>\r\n    <row from=\"30003230\" to=\"30003232\"/>\r\n    <row from=\"30003230\" to=\"30003233\"/>\r\n    <row from=\"30003230\" to=\"30003234\"/>\r\n    <row from=\"30003231\" to=\"30003229\"/>\r\n    <row from=\"30003231\" to=\"30003230\"/>\r\n    <row from=\"30003231\" to=\"30003232\"/>\r\n    <row from=\"30003231\" to=\"30003233\"/>\r\n    <row from=\"30003231\" to=\"30003234\"/>\r\n    <row from=\"30003232\" to=\"30003230\"/>\r\n    <row from=\"30003232\" to=\"30003231\"/>\r\n    <row from=\"30003232\" to=\"30003233\"/>\r\n    <row from=\"30003232\" to=\"30003234\"/>\r\n    <row from=\"30003233\" to=\"30003229\"/>\r\n    <row from=\"30003233\" to=\"30003230\"/>\r\n    <row from=\"30003233\" to=\"30003231\"/>\r\n    <row from=\"30003233\" to=\"30003232\"/>\r\n    <row from=\"30003234\" to=\"30003230\"/>\r\n    <row from=\"30003234\" to=\"30003231\"/>\r\n    <row from=\"30003234\" to=\"30003232\"/>\r\n    <row from=\"30003235\" to=\"30003200\"/>\r\n    <row from=\"30003235\" to=\"30003236\"/>\r\n    <row from=\"30003235\" to=\"30003237\"/>\r\n    <row from=\"30003235\" to=\"30003238\"/>\r\n    <row from=\"30003236\" to=\"30003235\"/>\r\n    <row from=\"30003236\" to=\"30003238\"/>\r\n    <row from=\"30003236\" to=\"30003240\"/>\r\n    <row from=\"30003237\" to=\"30003235\"/>\r\n    <row from=\"30003237\" to=\"30003239\"/>\r\n    <row from=\"30003237\" to=\"30005190\"/>\r\n    <row from=\"30003238\" to=\"30003235\"/>\r\n    <row from=\"30003238\" to=\"30003236\"/>\r\n    <row from=\"30003239\" to=\"30003237\"/>\r\n    <row from=\"30003240\" to=\"30003236\"/>\r\n    <row from=\"30003240\" to=\"30003241\"/>\r\n    <row from=\"30003241\" to=\"30003240\"/>\r\n    <row from=\"30003241\" to=\"30004204\"/>\r\n    <row from=\"30003242\" to=\"30003212\"/>\r\n    <row from=\"30003242\" to=\"30003243\"/>\r\n    <row from=\"30003243\" to=\"30003242\"/>\r\n    <row from=\"30003243\" to=\"30003244\"/>\r\n    <row from=\"30003243\" to=\"30003247\"/>\r\n    <row from=\"30003243\" to=\"30003265\"/>\r\n    <row from=\"30003244\" to=\"30003243\"/>\r\n    <row from=\"30003244\" to=\"30003245\"/>\r\n    <row from=\"30003244\" to=\"30003246\"/>\r\n    <row from=\"30003245\" to=\"30003244\"/>\r\n    <row from=\"30003245\" to=\"30003247\"/>\r\n    <row from=\"30003245\" to=\"30003248\"/>\r\n    <row from=\"30003246\" to=\"30003244\"/>\r\n    <row from=\"30003247\" to=\"30003243\"/>\r\n    <row from=\"30003247\" to=\"30003245\"/>\r\n    <row from=\"30003248\" to=\"30003245\"/>\r\n    <row from=\"30003249\" to=\"30003191\"/>\r\n    <row from=\"30003249\" to=\"30003250\"/>\r\n    <row from=\"30003249\" to=\"30003253\"/>\r\n    <row from=\"30003250\" to=\"30003249\"/>\r\n    <row from=\"30003250\" to=\"30003251\"/>\r\n    <row from=\"30003251\" to=\"30003250\"/>\r\n    <row from=\"30003251\" to=\"30003252\"/>\r\n    <row from=\"30003251\" to=\"30003253\"/>\r\n    <row from=\"30003252\" to=\"30003251\"/>\r\n    <row from=\"30003252\" to=\"30003254\"/>\r\n    <row from=\"30003253\" to=\"30001553\"/>\r\n    <row from=\"30003253\" to=\"30003249\"/>\r\n    <row from=\"30003253\" to=\"30003251\"/>\r\n    <row from=\"30003254\" to=\"30003252\"/>\r\n    <row from=\"30003255\" to=\"30003195\"/>\r\n    <row from=\"30003255\" to=\"30003256\"/>\r\n    <row from=\"30003256\" to=\"30003255\"/>\r\n    <row from=\"30003256\" to=\"30003257\"/>\r\n    <row from=\"30003257\" to=\"30003256\"/>\r\n    <row from=\"30003257\" to=\"30003258\"/>\r\n    <row from=\"30003257\" to=\"30003259\"/>\r\n    <row from=\"30003258\" to=\"30003257\"/>\r\n    <row from=\"30003258\" to=\"30003260\"/>\r\n    <row from=\"30003259\" to=\"30003257\"/>\r\n    <row from=\"30003260\" to=\"30003258\"/>\r\n    <row from=\"30003261\" to=\"30003206\"/>\r\n    <row from=\"30003261\" to=\"30003262\"/>\r\n    <row from=\"30003262\" to=\"30003261\"/>\r\n    <row from=\"30003262\" to=\"30003263\"/>\r\n    <row from=\"30003262\" to=\"30003264\"/>\r\n    <row from=\"30003263\" to=\"30003262\"/>\r\n    <row from=\"30003263\" to=\"30003265\"/>\r\n    <row from=\"30003264\" to=\"30003262\"/>\r\n    <row from=\"30003264\" to=\"30003265\"/>\r\n    <row from=\"30003264\" to=\"30003266\"/>\r\n    <row from=\"30003265\" to=\"30003243\"/>\r\n    <row from=\"30003265\" to=\"30003263\"/>\r\n    <row from=\"30003265\" to=\"30003264\"/>\r\n    <row from=\"30003266\" to=\"30003194\"/>\r\n    <row from=\"30003266\" to=\"30003264\"/>\r\n    <row from=\"30003266\" to=\"30003267\"/>\r\n    <row from=\"30003267\" to=\"30003266\"/>\r\n    <row from=\"30003268\" to=\"30003269\"/>\r\n    <row from=\"30003268\" to=\"30003270\"/>\r\n    <row from=\"30003268\" to=\"30003275\"/>\r\n    <row from=\"30003268\" to=\"30003298\"/>\r\n    <row from=\"30003268\" to=\"30003793\"/>\r\n    <row from=\"30003269\" to=\"30003268\"/>\r\n    <row from=\"30003269\" to=\"30003271\"/>\r\n    <row from=\"30003270\" to=\"30003268\"/>\r\n    <row from=\"30003270\" to=\"30003272\"/>\r\n    <row from=\"30003270\" to=\"30003273\"/>\r\n    <row from=\"30003270\" to=\"30003275\"/>\r\n    <row from=\"30003270\" to=\"30003280\"/>\r\n    <row from=\"30003271\" to=\"30003269\"/>\r\n    <row from=\"30003271\" to=\"30003274\"/>\r\n    <row from=\"30003272\" to=\"30003270\"/>\r\n    <row from=\"30003272\" to=\"30003273\"/>\r\n    <row from=\"30003272\" to=\"30003282\"/>\r\n    <row from=\"30003272\" to=\"30003283\"/>\r\n    <row from=\"30003272\" to=\"30003285\"/>\r\n    <row from=\"30003272\" to=\"30003293\"/>\r\n    <row from=\"30003273\" to=\"30003270\"/>\r\n    <row from=\"30003273\" to=\"30003272\"/>\r\n    <row from=\"30003273\" to=\"30003294\"/>\r\n    <row from=\"30003273\" to=\"30003295\"/>\r\n    <row from=\"30003274\" to=\"30003271\"/>\r\n    <row from=\"30003274\" to=\"30003276\"/>\r\n    <row from=\"30003275\" to=\"30003268\"/>\r\n    <row from=\"30003275\" to=\"30003270\"/>\r\n    <row from=\"30003276\" to=\"30003274\"/>\r\n    <row from=\"30003276\" to=\"30003277\"/>\r\n    <row from=\"30003276\" to=\"30003278\"/>\r\n    <row from=\"30003277\" to=\"30003276\"/>\r\n    <row from=\"30003277\" to=\"30003830\"/>\r\n    <row from=\"30003278\" to=\"30003276\"/>\r\n    <row from=\"30003278\" to=\"30003279\"/>\r\n    <row from=\"30003278\" to=\"30003327\"/>\r\n    <row from=\"30003279\" to=\"30003278\"/>\r\n    <row from=\"30003279\" to=\"30003320\"/>\r\n    <row from=\"30003280\" to=\"30003270\"/>\r\n    <row from=\"30003280\" to=\"30003281\"/>\r\n    <row from=\"30003280\" to=\"30003283\"/>\r\n    <row from=\"30003280\" to=\"30005328\"/>\r\n    <row from=\"30003281\" to=\"30003280\"/>\r\n    <row from=\"30003281\" to=\"30003282\"/>\r\n    <row from=\"30003281\" to=\"30003283\"/>\r\n    <row from=\"30003281\" to=\"30003285\"/>\r\n    <row from=\"30003282\" to=\"30003272\"/>\r\n    <row from=\"30003282\" to=\"30003281\"/>\r\n    <row from=\"30003282\" to=\"30003284\"/>\r\n    <row from=\"30003282\" to=\"30003292\"/>\r\n    <row from=\"30003283\" to=\"30003272\"/>\r\n    <row from=\"30003283\" to=\"30003280\"/>\r\n    <row from=\"30003283\" to=\"30003281\"/>\r\n    <row from=\"30003283\" to=\"30003285\"/>\r\n    <row from=\"30003284\" to=\"30003282\"/>\r\n    <row from=\"30003284\" to=\"30003285\"/>\r\n    <row from=\"30003284\" to=\"30003301\"/>\r\n    <row from=\"30003284\" to=\"30003309\"/>\r\n    <row from=\"30003285\" to=\"30003272\"/>\r\n    <row from=\"30003285\" to=\"30003281\"/>\r\n    <row from=\"30003285\" to=\"30003283\"/>\r\n    <row from=\"30003285\" to=\"30003284\"/>\r\n    <row from=\"30003285\" to=\"30003286\"/>\r\n    <row from=\"30003286\" to=\"30003285\"/>\r\n    <row from=\"30003286\" to=\"30003287\"/>\r\n    <row from=\"30003286\" to=\"30003288\"/>\r\n    <row from=\"30003287\" to=\"30003286\"/>\r\n    <row from=\"30003288\" to=\"30003286\"/>\r\n    <row from=\"30003288\" to=\"30003289\"/>\r\n    <row from=\"30003289\" to=\"30003288\"/>\r\n    <row from=\"30003289\" to=\"30003290\"/>\r\n    <row from=\"30003289\" to=\"30003291\"/>\r\n    <row from=\"30003290\" to=\"30003289\"/>\r\n    <row from=\"30003290\" to=\"30003291\"/>\r\n    <row from=\"30003291\" to=\"30003289\"/>\r\n    <row from=\"30003291\" to=\"30003290\"/>\r\n    <row from=\"30003292\" to=\"30003282\"/>\r\n    <row from=\"30003292\" to=\"30003293\"/>\r\n    <row from=\"30003292\" to=\"30003297\"/>\r\n    <row from=\"30003293\" to=\"30003272\"/>\r\n    <row from=\"30003293\" to=\"30003292\"/>\r\n    <row from=\"30003293\" to=\"30003294\"/>\r\n    <row from=\"30003294\" to=\"30003273\"/>\r\n    <row from=\"30003294\" to=\"30003293\"/>\r\n    <row from=\"30003294\" to=\"30003295\"/>\r\n    <row from=\"30003294\" to=\"30003299\"/>\r\n    <row from=\"30003294\" to=\"30003300\"/>\r\n    <row from=\"30003295\" to=\"30003273\"/>\r\n    <row from=\"30003295\" to=\"30003294\"/>\r\n    <row from=\"30003295\" to=\"30003296\"/>\r\n    <row from=\"30003296\" to=\"30003295\"/>\r\n    <row from=\"30003296\" to=\"30003298\"/>\r\n    <row from=\"30003297\" to=\"30003292\"/>\r\n    <row from=\"30003297\" to=\"30003300\"/>\r\n    <row from=\"30003298\" to=\"30003268\"/>\r\n    <row from=\"30003298\" to=\"30003296\"/>\r\n    <row from=\"30003298\" to=\"30003299\"/>\r\n    <row from=\"30003299\" to=\"30003294\"/>\r\n    <row from=\"30003299\" to=\"30003298\"/>\r\n    <row from=\"30003300\" to=\"30003294\"/>\r\n    <row from=\"30003300\" to=\"30003297\"/>\r\n    <row from=\"30003301\" to=\"30003284\"/>\r\n    <row from=\"30003301\" to=\"30003302\"/>\r\n    <row from=\"30003301\" to=\"30003304\"/>\r\n    <row from=\"30003301\" to=\"30003307\"/>\r\n    <row from=\"30003302\" to=\"30003301\"/>\r\n    <row from=\"30003302\" to=\"30003303\"/>\r\n    <row from=\"30003302\" to=\"30003305\"/>\r\n    <row from=\"30003303\" to=\"30003302\"/>\r\n    <row from=\"30003304\" to=\"30003301\"/>\r\n    <row from=\"30003305\" to=\"30003302\"/>\r\n    <row from=\"30003305\" to=\"30003306\"/>\r\n    <row from=\"30003306\" to=\"30003305\"/>\r\n    <row from=\"30003306\" to=\"30003307\"/>\r\n    <row from=\"30003306\" to=\"30003308\"/>\r\n    <row from=\"30003307\" to=\"30003301\"/>\r\n    <row from=\"30003307\" to=\"30003306\"/>\r\n    <row from=\"30003307\" to=\"30003565\"/>\r\n    <row from=\"30003307\" to=\"30003573\"/>\r\n    <row from=\"30003308\" to=\"30003306\"/>\r\n    <row from=\"30003309\" to=\"30003284\"/>\r\n    <row from=\"30003309\" to=\"30003310\"/>\r\n    <row from=\"30003309\" to=\"30003311\"/>\r\n    <row from=\"30003310\" to=\"30003309\"/>\r\n    <row from=\"30003311\" to=\"30003309\"/>\r\n    <row from=\"30003311\" to=\"30003312\"/>\r\n    <row from=\"30003312\" to=\"30003311\"/>\r\n    <row from=\"30003312\" to=\"30003313\"/>\r\n    <row from=\"30003313\" to=\"30003312\"/>\r\n    <row from=\"30003313\" to=\"30003314\"/>\r\n    <row from=\"30003313\" to=\"30003315\"/>\r\n    <row from=\"30003313\" to=\"30003316\"/>\r\n    <row from=\"30003314\" to=\"30003313\"/>\r\n    <row from=\"30003314\" to=\"30003315\"/>\r\n    <row from=\"30003314\" to=\"30003316\"/>\r\n    <row from=\"30003315\" to=\"30003313\"/>\r\n    <row from=\"30003315\" to=\"30003314\"/>\r\n    <row from=\"30003315\" to=\"30003316\"/>\r\n    <row from=\"30003315\" to=\"30003317\"/>\r\n    <row from=\"30003316\" to=\"30003313\"/>\r\n    <row from=\"30003316\" to=\"30003314\"/>\r\n    <row from=\"30003316\" to=\"30003315\"/>\r\n    <row from=\"30003316\" to=\"30003317\"/>\r\n    <row from=\"30003316\" to=\"30003318\"/>\r\n    <row from=\"30003316\" to=\"30003368\"/>\r\n    <row from=\"30003317\" to=\"30003315\"/>\r\n    <row from=\"30003317\" to=\"30003316\"/>\r\n    <row from=\"30003317\" to=\"30003319\"/>\r\n    <row from=\"30003318\" to=\"30003316\"/>\r\n    <row from=\"30003319\" to=\"30003317\"/>\r\n    <row from=\"30003320\" to=\"30003279\"/>\r\n    <row from=\"30003320\" to=\"30003321\"/>\r\n    <row from=\"30003320\" to=\"30003322\"/>\r\n    <row from=\"30003321\" to=\"30003320\"/>\r\n    <row from=\"30003321\" to=\"30003323\"/>\r\n    <row from=\"30003322\" to=\"30003320\"/>\r\n    <row from=\"30003322\" to=\"30004493\"/>\r\n    <row from=\"30003323\" to=\"30003321\"/>\r\n    <row from=\"30003323\" to=\"30003324\"/>\r\n    <row from=\"30003323\" to=\"30003325\"/>\r\n    <row from=\"30003323\" to=\"30003820\"/>\r\n    <row from=\"30003324\" to=\"30003323\"/>\r\n    <row from=\"30003324\" to=\"30003342\"/>\r\n    <row from=\"30003325\" to=\"30003323\"/>\r\n    <row from=\"30003325\" to=\"30003326\"/>\r\n    <row from=\"30003326\" to=\"30003325\"/>\r\n    <row from=\"30003327\" to=\"30003278\"/>\r\n    <row from=\"30003327\" to=\"30003328\"/>\r\n    <row from=\"30003327\" to=\"30003329\"/>\r\n    <row from=\"30003327\" to=\"30003331\"/>\r\n    <row from=\"30003327\" to=\"30003333\"/>\r\n    <row from=\"30003328\" to=\"30003327\"/>\r\n    <row from=\"30003329\" to=\"30003327\"/>\r\n    <row from=\"30003329\" to=\"30003330\"/>\r\n    <row from=\"30003329\" to=\"30003331\"/>\r\n    <row from=\"30003329\" to=\"30003333\"/>\r\n    <row from=\"30003330\" to=\"30003329\"/>\r\n    <row from=\"30003330\" to=\"30003332\"/>\r\n    <row from=\"30003330\" to=\"30003334\"/>\r\n    <row from=\"30003331\" to=\"30003327\"/>\r\n    <row from=\"30003331\" to=\"30003329\"/>\r\n    <row from=\"30003332\" to=\"30003330\"/>\r\n    <row from=\"30003332\" to=\"30003335\"/>\r\n    <row from=\"30003333\" to=\"30003327\"/>\r\n    <row from=\"30003333\" to=\"30003329\"/>\r\n    <row from=\"30003334\" to=\"30003330\"/>\r\n    <row from=\"30003334\" to=\"30003336\"/>\r\n    <row from=\"30003335\" to=\"30003332\"/>\r\n    <row from=\"30003335\" to=\"30004037\"/>\r\n    <row from=\"30003336\" to=\"30003334\"/>\r\n    <row from=\"30003336\" to=\"30003337\"/>\r\n    <row from=\"30003336\" to=\"30003338\"/>\r\n    <row from=\"30003336\" to=\"30003341\"/>\r\n    <row from=\"30003337\" to=\"30003336\"/>\r\n    <row from=\"30003338\" to=\"30003336\"/>\r\n    <row from=\"30003338\" to=\"30003339\"/>\r\n    <row from=\"30003338\" to=\"30003340\"/>\r\n    <row from=\"30003339\" to=\"30003338\"/>\r\n    <row from=\"30003339\" to=\"30003340\"/>\r\n    <row from=\"30003340\" to=\"30003338\"/>\r\n    <row from=\"30003340\" to=\"30003339\"/>\r\n    <row from=\"30003341\" to=\"30003336\"/>\r\n    <row from=\"30003342\" to=\"30003324\"/>\r\n    <row from=\"30003342\" to=\"30003343\"/>\r\n    <row from=\"30003342\" to=\"30003344\"/>\r\n    <row from=\"30003342\" to=\"30003348\"/>\r\n    <row from=\"30003343\" to=\"30003342\"/>\r\n    <row from=\"30003343\" to=\"30003345\"/>\r\n    <row from=\"30003343\" to=\"30003347\"/>\r\n    <row from=\"30003344\" to=\"30003342\"/>\r\n    <row from=\"30003344\" to=\"30003346\"/>\r\n    <row from=\"30003345\" to=\"30003343\"/>\r\n    <row from=\"30003345\" to=\"30003599\"/>\r\n    <row from=\"30003346\" to=\"30003344\"/>\r\n    <row from=\"30003347\" to=\"30003343\"/>\r\n    <row from=\"30003348\" to=\"30003342\"/>\r\n    <row from=\"30003349\" to=\"30003350\"/>\r\n    <row from=\"30003349\" to=\"30004500\"/>\r\n    <row from=\"30003350\" to=\"30003349\"/>\r\n    <row from=\"30003350\" to=\"30003351\"/>\r\n    <row from=\"30003351\" to=\"30003350\"/>\r\n    <row from=\"30003351\" to=\"30003352\"/>\r\n    <row from=\"30003351\" to=\"30003353\"/>\r\n    <row from=\"30003352\" to=\"30003351\"/>\r\n    <row from=\"30003352\" to=\"30003354\"/>\r\n    <row from=\"30003353\" to=\"30003351\"/>\r\n    <row from=\"30003353\" to=\"30003354\"/>\r\n    <row from=\"30003354\" to=\"30003352\"/>\r\n    <row from=\"30003354\" to=\"30003353\"/>\r\n    <row from=\"30003355\" to=\"30003356\"/>\r\n    <row from=\"30003355\" to=\"30003359\"/>\r\n    <row from=\"30003355\" to=\"30003360\"/>\r\n    <row from=\"30003355\" to=\"30004497\"/>\r\n    <row from=\"30003356\" to=\"30003355\"/>\r\n    <row from=\"30003356\" to=\"30003357\"/>\r\n    <row from=\"30003356\" to=\"30003358\"/>\r\n    <row from=\"30003356\" to=\"30003359\"/>\r\n    <row from=\"30003357\" to=\"30003356\"/>\r\n    <row from=\"30003358\" to=\"30003356\"/>\r\n    <row from=\"30003359\" to=\"30003355\"/>\r\n    <row from=\"30003359\" to=\"30003356\"/>\r\n    <row from=\"30003360\" to=\"30003355\"/>\r\n    <row from=\"30003361\" to=\"30003362\"/>\r\n    <row from=\"30003361\" to=\"30004499\"/>\r\n    <row from=\"30003362\" to=\"30003361\"/>\r\n    <row from=\"30003362\" to=\"30003363\"/>\r\n    <row from=\"30003362\" to=\"30003364\"/>\r\n    <row from=\"30003362\" to=\"30003365\"/>\r\n    <row from=\"30003362\" to=\"30003366\"/>\r\n    <row from=\"30003363\" to=\"30003362\"/>\r\n    <row from=\"30003363\" to=\"30003364\"/>\r\n    <row from=\"30003363\" to=\"30003366\"/>\r\n    <row from=\"30003363\" to=\"30003367\"/>\r\n    <row from=\"30003364\" to=\"30003362\"/>\r\n    <row from=\"30003364\" to=\"30003363\"/>\r\n    <row from=\"30003364\" to=\"30003365\"/>\r\n    <row from=\"30003364\" to=\"30003367\"/>\r\n    <row from=\"30003365\" to=\"30003362\"/>\r\n    <row from=\"30003365\" to=\"30003364\"/>\r\n    <row from=\"30003366\" to=\"30003362\"/>\r\n    <row from=\"30003366\" to=\"30003363\"/>\r\n    <row from=\"30003367\" to=\"30003363\"/>\r\n    <row from=\"30003367\" to=\"30003364\"/>\r\n    <row from=\"30003368\" to=\"30003316\"/>\r\n    <row from=\"30003368\" to=\"30003369\"/>\r\n    <row from=\"30003368\" to=\"30003370\"/>\r\n    <row from=\"30003368\" to=\"30003373\"/>\r\n    <row from=\"30003369\" to=\"30003368\"/>\r\n    <row from=\"30003369\" to=\"30003371\"/>\r\n    <row from=\"30003369\" to=\"30003372\"/>\r\n    <row from=\"30003369\" to=\"30003373\"/>\r\n    <row from=\"30003370\" to=\"30003368\"/>\r\n    <row from=\"30003370\" to=\"30003373\"/>\r\n    <row from=\"30003371\" to=\"30003369\"/>\r\n    <row from=\"30003371\" to=\"30003373\"/>\r\n    <row from=\"30003372\" to=\"30003369\"/>\r\n    <row from=\"30003373\" to=\"30003368\"/>\r\n    <row from=\"30003373\" to=\"30003369\"/>\r\n    <row from=\"30003373\" to=\"30003370\"/>\r\n    <row from=\"30003373\" to=\"30003371\"/>\r\n    <row from=\"30003374\" to=\"30002511\"/>\r\n    <row from=\"30003374\" to=\"30003375\"/>\r\n    <row from=\"30003374\" to=\"30003376\"/>\r\n    <row from=\"30003374\" to=\"30003380\"/>\r\n    <row from=\"30003374\" to=\"30022505\"/>\r\n    <row from=\"30003375\" to=\"30003374\"/>\r\n    <row from=\"30003375\" to=\"30003378\"/>\r\n    <row from=\"30003375\" to=\"30003380\"/>\r\n    <row from=\"30003376\" to=\"30003374\"/>\r\n    <row from=\"30003376\" to=\"30003377\"/>\r\n    <row from=\"30003377\" to=\"30003376\"/>\r\n    <row from=\"30003377\" to=\"30003379\"/>\r\n    <row from=\"30003377\" to=\"30003380\"/>\r\n    <row from=\"30003377\" to=\"30003400\"/>\r\n    <row from=\"30003377\" to=\"30003409\"/>\r\n    <row from=\"30003378\" to=\"30003375\"/>\r\n    <row from=\"30003379\" to=\"30003377\"/>\r\n    <row from=\"30003380\" to=\"30003374\"/>\r\n    <row from=\"30003380\" to=\"30003375\"/>\r\n    <row from=\"30003380\" to=\"30003377\"/>\r\n    <row from=\"30003380\" to=\"30013410\"/>\r\n    <row from=\"30003381\" to=\"30003382\"/>\r\n    <row from=\"30003381\" to=\"30003383\"/>\r\n    <row from=\"30003381\" to=\"30003386\"/>\r\n    <row from=\"30003382\" to=\"30003381\"/>\r\n    <row from=\"30003382\" to=\"30003385\"/>\r\n    <row from=\"30003382\" to=\"30003387\"/>\r\n    <row from=\"30003383\" to=\"30003381\"/>\r\n    <row from=\"30003384\" to=\"30003385\"/>\r\n    <row from=\"30003384\" to=\"30003393\"/>\r\n    <row from=\"30003385\" to=\"30003382\"/>\r\n    <row from=\"30003385\" to=\"30003384\"/>\r\n    <row from=\"30003385\" to=\"30003386\"/>\r\n    <row from=\"30003386\" to=\"30002048\"/>\r\n    <row from=\"30003386\" to=\"30003381\"/>\r\n    <row from=\"30003386\" to=\"30003385\"/>\r\n    <row from=\"30003387\" to=\"30003382\"/>\r\n    <row from=\"30003387\" to=\"30003388\"/>\r\n    <row from=\"30003388\" to=\"30002543\"/>\r\n    <row from=\"30003388\" to=\"30003387\"/>\r\n    <row from=\"30003388\" to=\"30003389\"/>\r\n    <row from=\"30003388\" to=\"30043410\"/>\r\n    <row from=\"30003389\" to=\"30003388\"/>\r\n    <row from=\"30003389\" to=\"30003390\"/>\r\n    <row from=\"30003389\" to=\"30003391\"/>\r\n    <row from=\"30003389\" to=\"30003392\"/>\r\n    <row from=\"30003390\" to=\"30003389\"/>\r\n    <row from=\"30003390\" to=\"30003434\"/>\r\n    <row from=\"30003391\" to=\"30003389\"/>\r\n    <row from=\"30003391\" to=\"30003392\"/>\r\n    <row from=\"30003392\" to=\"30003389\"/>\r\n    <row from=\"30003392\" to=\"30003391\"/>\r\n    <row from=\"30003392\" to=\"30003416\"/>\r\n    <row from=\"30003392\" to=\"30003422\"/>\r\n    <row from=\"30003393\" to=\"30003384\"/>\r\n    <row from=\"30003393\" to=\"30003394\"/>\r\n    <row from=\"30003393\" to=\"30003395\"/>\r\n    <row from=\"30003394\" to=\"30003393\"/>\r\n    <row from=\"30003394\" to=\"30003395\"/>\r\n    <row from=\"30003394\" to=\"30003397\"/>\r\n    <row from=\"30003395\" to=\"30003393\"/>\r\n    <row from=\"30003395\" to=\"30003394\"/>\r\n    <row from=\"30003395\" to=\"30003396\"/>\r\n    <row from=\"30003396\" to=\"30003395\"/>\r\n    <row from=\"30003396\" to=\"30003397\"/>\r\n    <row from=\"30003396\" to=\"30003399\"/>\r\n    <row from=\"30003396\" to=\"30003428\"/>\r\n    <row from=\"30003397\" to=\"30003394\"/>\r\n    <row from=\"30003397\" to=\"30003396\"/>\r\n    <row from=\"30003397\" to=\"30003398\"/>\r\n    <row from=\"30003398\" to=\"30003397\"/>\r\n    <row from=\"30003399\" to=\"30003396\"/>\r\n    <row from=\"30003400\" to=\"30003377\"/>\r\n    <row from=\"30003400\" to=\"30003401\"/>\r\n    <row from=\"30003400\" to=\"30003402\"/>\r\n    <row from=\"30003400\" to=\"30003408\"/>\r\n    <row from=\"30003401\" to=\"30003400\"/>\r\n    <row from=\"30003401\" to=\"30003407\"/>\r\n    <row from=\"30003402\" to=\"30003400\"/>\r\n    <row from=\"30003402\" to=\"30003403\"/>\r\n    <row from=\"30003402\" to=\"30003404\"/>\r\n    <row from=\"30003402\" to=\"30003405\"/>\r\n    <row from=\"30003403\" to=\"30003402\"/>\r\n    <row from=\"30003403\" to=\"30003405\"/>\r\n    <row from=\"30003403\" to=\"30003406\"/>\r\n    <row from=\"30003403\" to=\"30033410\"/>\r\n    <row from=\"30003404\" to=\"30003402\"/>\r\n    <row from=\"30003404\" to=\"30003405\"/>\r\n    <row from=\"30003404\" to=\"30003407\"/>\r\n    <row from=\"30003405\" to=\"30003402\"/>\r\n    <row from=\"30003405\" to=\"30003403\"/>\r\n    <row from=\"30003405\" to=\"30003404\"/>\r\n    <row from=\"30003405\" to=\"30003406\"/>\r\n    <row from=\"30003406\" to=\"30003403\"/>\r\n    <row from=\"30003406\" to=\"30003405\"/>\r\n    <row from=\"30003407\" to=\"30003401\"/>\r\n    <row from=\"30003407\" to=\"30003404\"/>\r\n    <row from=\"30003408\" to=\"30003400\"/>\r\n    <row from=\"30003408\" to=\"30003431\"/>\r\n    <row from=\"30003409\" to=\"30003377\"/>\r\n    <row from=\"30003409\" to=\"30003410\"/>\r\n    <row from=\"30003409\" to=\"30023410\"/>\r\n    <row from=\"30003410\" to=\"30002525\"/>\r\n    <row from=\"30003410\" to=\"30003409\"/>\r\n    <row from=\"30003410\" to=\"30003411\"/>\r\n    <row from=\"30003411\" to=\"30003410\"/>\r\n    <row from=\"30003411\" to=\"30003412\"/>\r\n    <row from=\"30003412\" to=\"30003411\"/>\r\n    <row from=\"30003412\" to=\"30003413\"/>\r\n    <row from=\"30003412\" to=\"30003453\"/>\r\n    <row from=\"30003413\" to=\"30002573\"/>\r\n    <row from=\"30003413\" to=\"30003412\"/>\r\n    <row from=\"30003413\" to=\"30003414\"/>\r\n    <row from=\"30003413\" to=\"30003415\"/>\r\n    <row from=\"30003414\" to=\"30003413\"/>\r\n    <row from=\"30003414\" to=\"30003459\"/>\r\n    <row from=\"30003415\" to=\"30003413\"/>\r\n    <row from=\"30003415\" to=\"30003441\"/>\r\n    <row from=\"30003416\" to=\"30003392\"/>\r\n    <row from=\"30003416\" to=\"30003417\"/>\r\n    <row from=\"30003416\" to=\"30003418\"/>\r\n    <row from=\"30003416\" to=\"30003419\"/>\r\n    <row from=\"30003416\" to=\"30003420\"/>\r\n    <row from=\"30003417\" to=\"30003416\"/>\r\n    <row from=\"30003417\" to=\"30003418\"/>\r\n    <row from=\"30003417\" to=\"30003419\"/>\r\n    <row from=\"30003418\" to=\"30003416\"/>\r\n    <row from=\"30003418\" to=\"30003417\"/>\r\n    <row from=\"30003418\" to=\"30003420\"/>\r\n    <row from=\"30003419\" to=\"30003416\"/>\r\n    <row from=\"30003419\" to=\"30003417\"/>\r\n    <row from=\"30003419\" to=\"30003421\"/>\r\n    <row from=\"30003420\" to=\"30003416\"/>\r\n    <row from=\"30003420\" to=\"30003418\"/>\r\n    <row from=\"30003421\" to=\"30003419\"/>\r\n    <row from=\"30003422\" to=\"30003392\"/>\r\n    <row from=\"30003422\" to=\"30003423\"/>\r\n    <row from=\"30003422\" to=\"30003424\"/>\r\n    <row from=\"30003423\" to=\"30003422\"/>\r\n    <row from=\"30003423\" to=\"30003424\"/>\r\n    <row from=\"30003423\" to=\"30003425\"/>\r\n    <row from=\"30003424\" to=\"30003422\"/>\r\n    <row from=\"30003424\" to=\"30003423\"/>\r\n    <row from=\"30003425\" to=\"30003423\"/>\r\n    <row from=\"30003425\" to=\"30003426\"/>\r\n    <row from=\"30003426\" to=\"30003425\"/>\r\n    <row from=\"30003426\" to=\"30003427\"/>\r\n    <row from=\"30003427\" to=\"30003426\"/>\r\n    <row from=\"30003427\" to=\"30003443\"/>\r\n    <row from=\"30003428\" to=\"30003396\"/>\r\n    <row from=\"30003428\" to=\"30003429\"/>\r\n    <row from=\"30003428\" to=\"30003430\"/>\r\n    <row from=\"30003429\" to=\"30003428\"/>\r\n    <row from=\"30003429\" to=\"30003430\"/>\r\n    <row from=\"30003430\" to=\"30003428\"/>\r\n    <row from=\"30003430\" to=\"30003429\"/>\r\n    <row from=\"30003430\" to=\"30003431\"/>\r\n    <row from=\"30003430\" to=\"30003433\"/>\r\n    <row from=\"30003431\" to=\"30003408\"/>\r\n    <row from=\"30003431\" to=\"30003430\"/>\r\n    <row from=\"30003431\" to=\"30003432\"/>\r\n    <row from=\"30003431\" to=\"30003433\"/>\r\n    <row from=\"30003432\" to=\"30003431\"/>\r\n    <row from=\"30003433\" to=\"30003430\"/>\r\n    <row from=\"30003433\" to=\"30003431\"/>\r\n    <row from=\"30003433\" to=\"30003447\"/>\r\n    <row from=\"30003434\" to=\"30003390\"/>\r\n    <row from=\"30003434\" to=\"30003435\"/>\r\n    <row from=\"30003434\" to=\"30003436\"/>\r\n    <row from=\"30003435\" to=\"30003434\"/>\r\n    <row from=\"30003435\" to=\"30003440\"/>\r\n    <row from=\"30003436\" to=\"30003434\"/>\r\n    <row from=\"30003436\" to=\"30003437\"/>\r\n    <row from=\"30003436\" to=\"30003438\"/>\r\n    <row from=\"30003437\" to=\"30003436\"/>\r\n    <row from=\"30003437\" to=\"30003439\"/>\r\n    <row from=\"30003438\" to=\"30003436\"/>\r\n    <row from=\"30003439\" to=\"30003437\"/>\r\n    <row from=\"30003440\" to=\"30003435\"/>\r\n    <row from=\"30003441\" to=\"30003415\"/>\r\n    <row from=\"30003441\" to=\"30003442\"/>\r\n    <row from=\"30003441\" to=\"30003443\"/>\r\n    <row from=\"30003441\" to=\"30003445\"/>\r\n    <row from=\"30003442\" to=\"30003441\"/>\r\n    <row from=\"30003442\" to=\"30003444\"/>\r\n    <row from=\"30003443\" to=\"30003427\"/>\r\n    <row from=\"30003443\" to=\"30003441\"/>\r\n    <row from=\"30003443\" to=\"30003445\"/>\r\n    <row from=\"30003443\" to=\"30003446\"/>\r\n    <row from=\"30003444\" to=\"30002554\"/>\r\n    <row from=\"30003444\" to=\"30003442\"/>\r\n    <row from=\"30003444\" to=\"30003446\"/>\r\n    <row from=\"30003445\" to=\"30003441\"/>\r\n    <row from=\"30003445\" to=\"30003443\"/>\r\n    <row from=\"30003446\" to=\"30000199\"/>\r\n    <row from=\"30003446\" to=\"30003443\"/>\r\n    <row from=\"30003446\" to=\"30003444\"/>\r\n    <row from=\"30003447\" to=\"30003433\"/>\r\n    <row from=\"30003447\" to=\"30003448\"/>\r\n    <row from=\"30003447\" to=\"30003451\"/>\r\n    <row from=\"30003448\" to=\"30003447\"/>\r\n    <row from=\"30003448\" to=\"30003449\"/>\r\n    <row from=\"30003449\" to=\"30003448\"/>\r\n    <row from=\"30003449\" to=\"30003450\"/>\r\n    <row from=\"30003449\" to=\"30003452\"/>\r\n    <row from=\"30003450\" to=\"30003449\"/>\r\n    <row from=\"30003450\" to=\"30003452\"/>\r\n    <row from=\"30003451\" to=\"30003447\"/>\r\n    <row from=\"30003452\" to=\"30003449\"/>\r\n    <row from=\"30003452\" to=\"30003450\"/>\r\n    <row from=\"30003452\" to=\"30005198\"/>\r\n    <row from=\"30003453\" to=\"30003412\"/>\r\n    <row from=\"30003453\" to=\"30003454\"/>\r\n    <row from=\"30003453\" to=\"30003456\"/>\r\n    <row from=\"30003453\" to=\"30003457\"/>\r\n    <row from=\"30003454\" to=\"30003453\"/>\r\n    <row from=\"30003454\" to=\"30003455\"/>\r\n    <row from=\"30003454\" to=\"30003457\"/>\r\n    <row from=\"30003455\" to=\"30003454\"/>\r\n    <row from=\"30003455\" to=\"30003456\"/>\r\n    <row from=\"30003455\" to=\"30003457\"/>\r\n    <row from=\"30003455\" to=\"30003458\"/>\r\n    <row from=\"30003456\" to=\"30003453\"/>\r\n    <row from=\"30003456\" to=\"30003455\"/>\r\n    <row from=\"30003456\" to=\"30003457\"/>\r\n    <row from=\"30003456\" to=\"30003458\"/>\r\n    <row from=\"30003457\" to=\"30003453\"/>\r\n    <row from=\"30003457\" to=\"30003454\"/>\r\n    <row from=\"30003457\" to=\"30003455\"/>\r\n    <row from=\"30003457\" to=\"30003456\"/>\r\n    <row from=\"30003457\" to=\"30003458\"/>\r\n    <row from=\"30003458\" to=\"30003455\"/>\r\n    <row from=\"30003458\" to=\"30003456\"/>\r\n    <row from=\"30003458\" to=\"30003457\"/>\r\n    <row from=\"30003459\" to=\"30003414\"/>\r\n    <row from=\"30003459\" to=\"30003460\"/>\r\n    <row from=\"30003459\" to=\"30003461\"/>\r\n    <row from=\"30003460\" to=\"30002554\"/>\r\n    <row from=\"30003460\" to=\"30003459\"/>\r\n    <row from=\"30003460\" to=\"30003465\"/>\r\n    <row from=\"30003461\" to=\"30003459\"/>\r\n    <row from=\"30003461\" to=\"30003462\"/>\r\n    <row from=\"30003461\" to=\"30003463\"/>\r\n    <row from=\"30003462\" to=\"30003461\"/>\r\n    <row from=\"30003462\" to=\"30003463\"/>\r\n    <row from=\"30003462\" to=\"30003464\"/>\r\n    <row from=\"30003463\" to=\"30003461\"/>\r\n    <row from=\"30003463\" to=\"30003462\"/>\r\n    <row from=\"30003463\" to=\"30003467\"/>\r\n    <row from=\"30003464\" to=\"30003462\"/>\r\n    <row from=\"30003464\" to=\"30003466\"/>\r\n    <row from=\"30003465\" to=\"30002412\"/>\r\n    <row from=\"30003465\" to=\"30003460\"/>\r\n    <row from=\"30003466\" to=\"30002478\"/>\r\n    <row from=\"30003466\" to=\"30003464\"/>\r\n    <row from=\"30003467\" to=\"30003463\"/>\r\n    <row from=\"30003467\" to=\"30003468\"/>\r\n    <row from=\"30003468\" to=\"30003467\"/>\r\n    <row from=\"30003468\" to=\"30003469\"/>\r\n    <row from=\"30003468\" to=\"30003472\"/>\r\n    <row from=\"30003469\" to=\"30003468\"/>\r\n    <row from=\"30003469\" to=\"30003470\"/>\r\n    <row from=\"30003469\" to=\"30003471\"/>\r\n    <row from=\"30003470\" to=\"30003469\"/>\r\n    <row from=\"30003470\" to=\"30003471\"/>\r\n    <row from=\"30003471\" to=\"30000999\"/>\r\n    <row from=\"30003471\" to=\"30003469\"/>\r\n    <row from=\"30003471\" to=\"30003470\"/>\r\n    <row from=\"30003472\" to=\"30003468\"/>\r\n    <row from=\"30003473\" to=\"30003476\"/>\r\n    <row from=\"30003473\" to=\"30004077\"/>\r\n    <row from=\"30003474\" to=\"30003475\"/>\r\n    <row from=\"30003474\" to=\"30003476\"/>\r\n    <row from=\"30003474\" to=\"30003477\"/>\r\n    <row from=\"30003475\" to=\"30003474\"/>\r\n    <row from=\"30003475\" to=\"30003508\"/>\r\n    <row from=\"30003476\" to=\"30003473\"/>\r\n    <row from=\"30003476\" to=\"30003474\"/>\r\n    <row from=\"30003477\" to=\"30003474\"/>\r\n    <row from=\"30003477\" to=\"30003478\"/>\r\n    <row from=\"30003478\" to=\"30002730\"/>\r\n    <row from=\"30003478\" to=\"30003477\"/>\r\n    <row from=\"30003478\" to=\"30003479\"/>\r\n    <row from=\"30003479\" to=\"30003478\"/>\r\n    <row from=\"30003479\" to=\"30003480\"/>\r\n    <row from=\"30003480\" to=\"30003479\"/>\r\n    <row from=\"30003480\" to=\"30004136\"/>\r\n    <row from=\"30003481\" to=\"30003483\"/>\r\n    <row from=\"30003481\" to=\"30003486\"/>\r\n    <row from=\"30003482\" to=\"30002222\"/>\r\n    <row from=\"30003482\" to=\"30003485\"/>\r\n    <row from=\"30003482\" to=\"30003486\"/>\r\n    <row from=\"30003482\" to=\"30003526\"/>\r\n    <row from=\"30003483\" to=\"30003481\"/>\r\n    <row from=\"30003483\" to=\"30003559\"/>\r\n    <row from=\"30003484\" to=\"30003486\"/>\r\n    <row from=\"30003484\" to=\"30003555\"/>\r\n    <row from=\"30003485\" to=\"30001646\"/>\r\n    <row from=\"30003485\" to=\"30002205\"/>\r\n    <row from=\"30003485\" to=\"30003482\"/>\r\n    <row from=\"30003486\" to=\"30003481\"/>\r\n    <row from=\"30003486\" to=\"30003482\"/>\r\n    <row from=\"30003486\" to=\"30003484\"/>\r\n    <row from=\"30003487\" to=\"30003489\"/>\r\n    <row from=\"30003487\" to=\"30003501\"/>\r\n    <row from=\"30003487\" to=\"30013489\"/>\r\n    <row from=\"30003488\" to=\"30003489\"/>\r\n    <row from=\"30003488\" to=\"30003490\"/>\r\n    <row from=\"30003488\" to=\"30003491\"/>\r\n    <row from=\"30003488\" to=\"30003492\"/>\r\n    <row from=\"30003489\" to=\"30003487\"/>\r\n    <row from=\"30003489\" to=\"30003488\"/>\r\n    <row from=\"30003489\" to=\"30003491\"/>\r\n    <row from=\"30003490\" to=\"30001651\"/>\r\n    <row from=\"30003490\" to=\"30003488\"/>\r\n    <row from=\"30003490\" to=\"30003514\"/>\r\n    <row from=\"30003491\" to=\"30002187\"/>\r\n    <row from=\"30003491\" to=\"30002189\"/>\r\n    <row from=\"30003491\" to=\"30002193\"/>\r\n    <row from=\"30003491\" to=\"30003488\"/>\r\n    <row from=\"30003491\" to=\"30003489\"/>\r\n    <row from=\"30003491\" to=\"30003503\"/>\r\n    <row from=\"30003491\" to=\"30003507\"/>\r\n    <row from=\"30003492\" to=\"30003488\"/>\r\n    <row from=\"30003492\" to=\"30003493\"/>\r\n    <row from=\"30003493\" to=\"30002226\"/>\r\n    <row from=\"30003493\" to=\"30003492\"/>\r\n    <row from=\"30003493\" to=\"30003494\"/>\r\n    <row from=\"30003493\" to=\"30003496\"/>\r\n    <row from=\"30003493\" to=\"30003498\"/>\r\n    <row from=\"30003494\" to=\"30002231\"/>\r\n    <row from=\"30003494\" to=\"30003493\"/>\r\n    <row from=\"30003494\" to=\"30003496\"/>\r\n    <row from=\"30003495\" to=\"30002225\"/>\r\n    <row from=\"30003495\" to=\"30002411\"/>\r\n    <row from=\"30003495\" to=\"30003504\"/>\r\n    <row from=\"30003496\" to=\"30003493\"/>\r\n    <row from=\"30003496\" to=\"30003494\"/>\r\n    <row from=\"30003497\" to=\"30003498\"/>\r\n    <row from=\"30003497\" to=\"30003499\"/>\r\n    <row from=\"30003498\" to=\"30003493\"/>\r\n    <row from=\"30003498\" to=\"30003497\"/>\r\n    <row from=\"30003499\" to=\"30003497\"/>\r\n    <row from=\"30003500\" to=\"30003501\"/>\r\n    <row from=\"30003500\" to=\"30003505\"/>\r\n    <row from=\"30003500\" to=\"30003508\"/>\r\n    <row from=\"30003500\" to=\"30003509\"/>\r\n    <row from=\"30003501\" to=\"30003487\"/>\r\n    <row from=\"30003501\" to=\"30003500\"/>\r\n    <row from=\"30003501\" to=\"30003502\"/>\r\n    <row from=\"30003501\" to=\"30003505\"/>\r\n    <row from=\"30003502\" to=\"30003501\"/>\r\n    <row from=\"30003502\" to=\"30003503\"/>\r\n    <row from=\"30003502\" to=\"30003506\"/>\r\n    <row from=\"30003503\" to=\"30003491\"/>\r\n    <row from=\"30003503\" to=\"30003502\"/>\r\n    <row from=\"30003503\" to=\"30003506\"/>\r\n    <row from=\"30003503\" to=\"30004080\"/>\r\n    <row from=\"30003504\" to=\"30002225\"/>\r\n    <row from=\"30003504\" to=\"30003495\"/>\r\n    <row from=\"30003505\" to=\"30003500\"/>\r\n    <row from=\"30003505\" to=\"30003501\"/>\r\n    <row from=\"30003506\" to=\"30003502\"/>\r\n    <row from=\"30003506\" to=\"30003503\"/>\r\n    <row from=\"30003507\" to=\"30003491\"/>\r\n    <row from=\"30003507\" to=\"30003508\"/>\r\n    <row from=\"30003507\" to=\"30003510\"/>\r\n    <row from=\"30003507\" to=\"30003511\"/>\r\n    <row from=\"30003508\" to=\"30003475\"/>\r\n    <row from=\"30003508\" to=\"30003500\"/>\r\n    <row from=\"30003508\" to=\"30003507\"/>\r\n    <row from=\"30003508\" to=\"30003509\"/>\r\n    <row from=\"30003508\" to=\"30003510\"/>\r\n    <row from=\"30003508\" to=\"30003512\"/>\r\n    <row from=\"30003508\" to=\"30004080\"/>\r\n    <row from=\"30003509\" to=\"30003500\"/>\r\n    <row from=\"30003509\" to=\"30003508\"/>\r\n    <row from=\"30003510\" to=\"30003507\"/>\r\n    <row from=\"30003510\" to=\"30003508\"/>\r\n    <row from=\"30003510\" to=\"30003511\"/>\r\n    <row from=\"30003510\" to=\"30003512\"/>\r\n    <row from=\"30003511\" to=\"30003507\"/>\r\n    <row from=\"30003511\" to=\"30003510\"/>\r\n    <row from=\"30003511\" to=\"30003512\"/>\r\n    <row from=\"30003511\" to=\"30043489\"/>\r\n    <row from=\"30003512\" to=\"30003508\"/>\r\n    <row from=\"30003512\" to=\"30003510\"/>\r\n    <row from=\"30003512\" to=\"30003511\"/>\r\n    <row from=\"30003513\" to=\"30003514\"/>\r\n    <row from=\"30003513\" to=\"30003517\"/>\r\n    <row from=\"30003514\" to=\"30003490\"/>\r\n    <row from=\"30003514\" to=\"30003513\"/>\r\n    <row from=\"30003514\" to=\"30003515\"/>\r\n    <row from=\"30003514\" to=\"30003517\"/>\r\n    <row from=\"30003515\" to=\"30003514\"/>\r\n    <row from=\"30003515\" to=\"30003516\"/>\r\n    <row from=\"30003515\" to=\"30003517\"/>\r\n    <row from=\"30003515\" to=\"30003518\"/>\r\n    <row from=\"30003515\" to=\"30003531\"/>\r\n    <row from=\"30003515\" to=\"30003533\"/>\r\n    <row from=\"30003515\" to=\"30003535\"/>\r\n    <row from=\"30003516\" to=\"30003515\"/>\r\n    <row from=\"30003516\" to=\"30003517\"/>\r\n    <row from=\"30003517\" to=\"30003513\"/>\r\n    <row from=\"30003517\" to=\"30003514\"/>\r\n    <row from=\"30003517\" to=\"30003515\"/>\r\n    <row from=\"30003517\" to=\"30003516\"/>\r\n    <row from=\"30003517\" to=\"30003519\"/>\r\n    <row from=\"30003518\" to=\"30003515\"/>\r\n    <row from=\"30003518\" to=\"30003519\"/>\r\n    <row from=\"30003519\" to=\"30003517\"/>\r\n    <row from=\"30003519\" to=\"30003518\"/>\r\n    <row from=\"30003520\" to=\"30003065\"/>\r\n    <row from=\"30003520\" to=\"30003521\"/>\r\n    <row from=\"30003521\" to=\"30003520\"/>\r\n    <row from=\"30003521\" to=\"30003522\"/>\r\n    <row from=\"30003522\" to=\"30002187\"/>\r\n    <row from=\"30003522\" to=\"30003521\"/>\r\n    <row from=\"30003522\" to=\"30003523\"/>\r\n    <row from=\"30003522\" to=\"30003524\"/>\r\n    <row from=\"30003523\" to=\"30003522\"/>\r\n    <row from=\"30003523\" to=\"30003525\"/>\r\n    <row from=\"30003524\" to=\"30002226\"/>\r\n    <row from=\"30003524\" to=\"30003522\"/>\r\n    <row from=\"30003524\" to=\"30003527\"/>\r\n    <row from=\"30003524\" to=\"30033489\"/>\r\n    <row from=\"30003525\" to=\"30003523\"/>\r\n    <row from=\"30003525\" to=\"30003526\"/>\r\n    <row from=\"30003525\" to=\"30003538\"/>\r\n    <row from=\"30003525\" to=\"30003548\"/>\r\n    <row from=\"30003526\" to=\"30002220\"/>\r\n    <row from=\"30003526\" to=\"30003482\"/>\r\n    <row from=\"30003526\" to=\"30003525\"/>\r\n    <row from=\"30003527\" to=\"30003524\"/>\r\n    <row from=\"30003527\" to=\"30003528\"/>\r\n    <row from=\"30003528\" to=\"30003527\"/>\r\n    <row from=\"30003528\" to=\"30003529\"/>\r\n    <row from=\"30003529\" to=\"30003528\"/>\r\n    <row from=\"30003529\" to=\"30003530\"/>\r\n    <row from=\"30003529\" to=\"30003531\"/>\r\n    <row from=\"30003529\" to=\"30003532\"/>\r\n    <row from=\"30003530\" to=\"30003529\"/>\r\n    <row from=\"30003530\" to=\"30003534\"/>\r\n    <row from=\"30003530\" to=\"30003537\"/>\r\n    <row from=\"30003531\" to=\"30003515\"/>\r\n    <row from=\"30003531\" to=\"30003529\"/>\r\n    <row from=\"30003531\" to=\"30003533\"/>\r\n    <row from=\"30003531\" to=\"30003536\"/>\r\n    <row from=\"30003532\" to=\"30003529\"/>\r\n    <row from=\"30003533\" to=\"30003515\"/>\r\n    <row from=\"30003533\" to=\"30003531\"/>\r\n    <row from=\"30003533\" to=\"30003535\"/>\r\n    <row from=\"30003534\" to=\"30003530\"/>\r\n    <row from=\"30003534\" to=\"30003537\"/>\r\n    <row from=\"30003535\" to=\"30003515\"/>\r\n    <row from=\"30003535\" to=\"30003533\"/>\r\n    <row from=\"30003536\" to=\"30003531\"/>\r\n    <row from=\"30003537\" to=\"30003530\"/>\r\n    <row from=\"30003537\" to=\"30003534\"/>\r\n    <row from=\"30003538\" to=\"30003525\"/>\r\n    <row from=\"30003538\" to=\"30003539\"/>\r\n    <row from=\"30003538\" to=\"30003540\"/>\r\n    <row from=\"30003538\" to=\"30003541\"/>\r\n    <row from=\"30003539\" to=\"30003538\"/>\r\n    <row from=\"30003539\" to=\"30003541\"/>\r\n    <row from=\"30003540\" to=\"30003538\"/>\r\n    <row from=\"30003540\" to=\"30003544\"/>\r\n    <row from=\"30003541\" to=\"30003538\"/>\r\n    <row from=\"30003541\" to=\"30003539\"/>\r\n    <row from=\"30003541\" to=\"30003542\"/>\r\n    <row from=\"30003542\" to=\"30003541\"/>\r\n    <row from=\"30003542\" to=\"30003543\"/>\r\n    <row from=\"30003543\" to=\"30003542\"/>\r\n    <row from=\"30003544\" to=\"30003540\"/>\r\n    <row from=\"30003544\" to=\"30003558\"/>\r\n    <row from=\"30003545\" to=\"30002220\"/>\r\n    <row from=\"30003545\" to=\"30002994\"/>\r\n    <row from=\"30003545\" to=\"30003546\"/>\r\n    <row from=\"30003545\" to=\"30003548\"/>\r\n    <row from=\"30003546\" to=\"30002220\"/>\r\n    <row from=\"30003546\" to=\"30002221\"/>\r\n    <row from=\"30003546\" to=\"30003545\"/>\r\n    <row from=\"30003546\" to=\"30003547\"/>\r\n    <row from=\"30003546\" to=\"30003549\"/>\r\n    <row from=\"30003546\" to=\"30003551\"/>\r\n    <row from=\"30003547\" to=\"30003546\"/>\r\n    <row from=\"30003547\" to=\"30003549\"/>\r\n    <row from=\"30003547\" to=\"30003550\"/>\r\n    <row from=\"30003547\" to=\"30003551\"/>\r\n    <row from=\"30003548\" to=\"30003525\"/>\r\n    <row from=\"30003548\" to=\"30003545\"/>\r\n    <row from=\"30003549\" to=\"30003546\"/>\r\n    <row from=\"30003549\" to=\"30003547\"/>\r\n    <row from=\"30003549\" to=\"30003550\"/>\r\n    <row from=\"30003549\" to=\"30003551\"/>\r\n    <row from=\"30003550\" to=\"30003547\"/>\r\n    <row from=\"30003550\" to=\"30003549\"/>\r\n    <row from=\"30003550\" to=\"30003552\"/>\r\n    <row from=\"30003551\" to=\"30003546\"/>\r\n    <row from=\"30003551\" to=\"30003547\"/>\r\n    <row from=\"30003551\" to=\"30003549\"/>\r\n    <row from=\"30003551\" to=\"30003552\"/>\r\n    <row from=\"30003552\" to=\"30003550\"/>\r\n    <row from=\"30003552\" to=\"30003551\"/>\r\n    <row from=\"30003553\" to=\"30002206\"/>\r\n    <row from=\"30003553\" to=\"30003554\"/>\r\n    <row from=\"30003553\" to=\"30003555\"/>\r\n    <row from=\"30003553\" to=\"30003556\"/>\r\n    <row from=\"30003554\" to=\"30003553\"/>\r\n    <row from=\"30003554\" to=\"30003555\"/>\r\n    <row from=\"30003554\" to=\"30003556\"/>\r\n    <row from=\"30003554\" to=\"30003558\"/>\r\n    <row from=\"30003555\" to=\"30003484\"/>\r\n    <row from=\"30003555\" to=\"30003553\"/>\r\n    <row from=\"30003555\" to=\"30003554\"/>\r\n    <row from=\"30003555\" to=\"30003556\"/>\r\n    <row from=\"30003556\" to=\"30003553\"/>\r\n    <row from=\"30003556\" to=\"30003554\"/>\r\n    <row from=\"30003556\" to=\"30003555\"/>\r\n    <row from=\"30003556\" to=\"30003557\"/>\r\n    <row from=\"30003557\" to=\"30003556\"/>\r\n    <row from=\"30003558\" to=\"30002223\"/>\r\n    <row from=\"30003558\" to=\"30003544\"/>\r\n    <row from=\"30003558\" to=\"30003554\"/>\r\n    <row from=\"30003559\" to=\"30003483\"/>\r\n    <row from=\"30003559\" to=\"30003560\"/>\r\n    <row from=\"30003559\" to=\"30003561\"/>\r\n    <row from=\"30003559\" to=\"30003562\"/>\r\n    <row from=\"30003559\" to=\"30003563\"/>\r\n    <row from=\"30003559\" to=\"30003564\"/>\r\n    <row from=\"30003560\" to=\"30003559\"/>\r\n    <row from=\"30003560\" to=\"30003562\"/>\r\n    <row from=\"30003561\" to=\"30001668\"/>\r\n    <row from=\"30003561\" to=\"30003559\"/>\r\n    <row from=\"30003562\" to=\"30003559\"/>\r\n    <row from=\"30003562\" to=\"30003560\"/>\r\n    <row from=\"30003562\" to=\"30003563\"/>\r\n    <row from=\"30003563\" to=\"30003559\"/>\r\n    <row from=\"30003563\" to=\"30003562\"/>\r\n    <row from=\"30003563\" to=\"30003769\"/>\r\n    <row from=\"30003564\" to=\"30003559\"/>\r\n    <row from=\"30003565\" to=\"30003307\"/>\r\n    <row from=\"30003565\" to=\"30003566\"/>\r\n    <row from=\"30003565\" to=\"30003567\"/>\r\n    <row from=\"30003566\" to=\"30003565\"/>\r\n    <row from=\"30003566\" to=\"30003569\"/>\r\n    <row from=\"30003567\" to=\"30003565\"/>\r\n    <row from=\"30003567\" to=\"30003568\"/>\r\n    <row from=\"30003567\" to=\"30003570\"/>\r\n    <row from=\"30003567\" to=\"30003591\"/>\r\n    <row from=\"30003568\" to=\"30003567\"/>\r\n    <row from=\"30003568\" to=\"30003570\"/>\r\n    <row from=\"30003569\" to=\"30003566\"/>\r\n    <row from=\"30003570\" to=\"30003567\"/>\r\n    <row from=\"30003570\" to=\"30003568\"/>\r\n    <row from=\"30003570\" to=\"30003571\"/>\r\n    <row from=\"30003571\" to=\"30003570\"/>\r\n    <row from=\"30003571\" to=\"30003572\"/>\r\n    <row from=\"30003571\" to=\"30003594\"/>\r\n    <row from=\"30003572\" to=\"30003571\"/>\r\n    <row from=\"30003572\" to=\"30003602\"/>\r\n    <row from=\"30003573\" to=\"30003307\"/>\r\n    <row from=\"30003573\" to=\"30003574\"/>\r\n    <row from=\"30003574\" to=\"30003573\"/>\r\n    <row from=\"30003574\" to=\"30003575\"/>\r\n    <row from=\"30003574\" to=\"30003577\"/>\r\n    <row from=\"30003575\" to=\"30003574\"/>\r\n    <row from=\"30003575\" to=\"30003576\"/>\r\n    <row from=\"30003575\" to=\"30003577\"/>\r\n    <row from=\"30003576\" to=\"30003575\"/>\r\n    <row from=\"30003576\" to=\"30003577\"/>\r\n    <row from=\"30003576\" to=\"30003578\"/>\r\n    <row from=\"30003577\" to=\"30003574\"/>\r\n    <row from=\"30003577\" to=\"30003575\"/>\r\n    <row from=\"30003577\" to=\"30003576\"/>\r\n    <row from=\"30003577\" to=\"30003579\"/>\r\n    <row from=\"30003578\" to=\"30003576\"/>\r\n    <row from=\"30003578\" to=\"30003588\"/>\r\n    <row from=\"30003579\" to=\"30003577\"/>\r\n    <row from=\"30003579\" to=\"30003580\"/>\r\n    <row from=\"30003579\" to=\"30003583\"/>\r\n    <row from=\"30003580\" to=\"30003579\"/>\r\n    <row from=\"30003580\" to=\"30003581\"/>\r\n    <row from=\"30003581\" to=\"30003580\"/>\r\n    <row from=\"30003581\" to=\"30003582\"/>\r\n    <row from=\"30003582\" to=\"30003581\"/>\r\n    <row from=\"30003582\" to=\"30003586\"/>\r\n    <row from=\"30003583\" to=\"30003579\"/>\r\n    <row from=\"30003583\" to=\"30003584\"/>\r\n    <row from=\"30003584\" to=\"30003583\"/>\r\n    <row from=\"30003584\" to=\"30003585\"/>\r\n    <row from=\"30003584\" to=\"30003587\"/>\r\n    <row from=\"30003585\" to=\"30003584\"/>\r\n    <row from=\"30003585\" to=\"30003587\"/>\r\n    <row from=\"30003586\" to=\"30003582\"/>\r\n    <row from=\"30003587\" to=\"30003584\"/>\r\n    <row from=\"30003587\" to=\"30003585\"/>\r\n    <row from=\"30003588\" to=\"30003578\"/>\r\n    <row from=\"30003588\" to=\"30003589\"/>\r\n    <row from=\"30003589\" to=\"30003588\"/>\r\n    <row from=\"30003589\" to=\"30003590\"/>\r\n    <row from=\"30003590\" to=\"30003589\"/>\r\n    <row from=\"30003590\" to=\"30003591\"/>\r\n    <row from=\"30003590\" to=\"30003592\"/>\r\n    <row from=\"30003591\" to=\"30003567\"/>\r\n    <row from=\"30003591\" to=\"30003590\"/>\r\n    <row from=\"30003592\" to=\"30003590\"/>\r\n    <row from=\"30003592\" to=\"30003593\"/>\r\n    <row from=\"30003593\" to=\"30003592\"/>\r\n    <row from=\"30003594\" to=\"30003571\"/>\r\n    <row from=\"30003594\" to=\"30003595\"/>\r\n    <row from=\"30003594\" to=\"30003596\"/>\r\n    <row from=\"30003594\" to=\"30003597\"/>\r\n    <row from=\"30003595\" to=\"30003594\"/>\r\n    <row from=\"30003596\" to=\"30003594\"/>\r\n    <row from=\"30003596\" to=\"30003597\"/>\r\n    <row from=\"30003597\" to=\"30003594\"/>\r\n    <row from=\"30003597\" to=\"30003596\"/>\r\n    <row from=\"30003597\" to=\"30003598\"/>\r\n    <row from=\"30003597\" to=\"30003601\"/>\r\n    <row from=\"30003598\" to=\"30003597\"/>\r\n    <row from=\"30003598\" to=\"30003599\"/>\r\n    <row from=\"30003599\" to=\"30003345\"/>\r\n    <row from=\"30003599\" to=\"30003598\"/>\r\n    <row from=\"30003599\" to=\"30003600\"/>\r\n    <row from=\"30003599\" to=\"30003601\"/>\r\n    <row from=\"30003600\" to=\"30003599\"/>\r\n    <row from=\"30003600\" to=\"30004233\"/>\r\n    <row from=\"30003601\" to=\"30003597\"/>\r\n    <row from=\"30003601\" to=\"30003599\"/>\r\n    <row from=\"30003602\" to=\"30003572\"/>\r\n    <row from=\"30003602\" to=\"30003603\"/>\r\n    <row from=\"30003603\" to=\"30003602\"/>\r\n    <row from=\"30003603\" to=\"30003604\"/>\r\n    <row from=\"30003603\" to=\"30003607\"/>\r\n    <row from=\"30003604\" to=\"30003603\"/>\r\n    <row from=\"30003604\" to=\"30003605\"/>\r\n    <row from=\"30003604\" to=\"30003606\"/>\r\n    <row from=\"30003605\" to=\"30003604\"/>\r\n    <row from=\"30003605\" to=\"30003606\"/>\r\n    <row from=\"30003605\" to=\"30003823\"/>\r\n    <row from=\"30003606\" to=\"30003604\"/>\r\n    <row from=\"30003606\" to=\"30003605\"/>\r\n    <row from=\"30003606\" to=\"30003607\"/>\r\n    <row from=\"30003607\" to=\"30003603\"/>\r\n    <row from=\"30003607\" to=\"30003606\"/>\r\n    <row from=\"30003608\" to=\"30003609\"/>\r\n    <row from=\"30003608\" to=\"30004334\"/>\r\n    <row from=\"30003609\" to=\"30003608\"/>\r\n    <row from=\"30003609\" to=\"30003610\"/>\r\n    <row from=\"30003610\" to=\"30003609\"/>\r\n    <row from=\"30003610\" to=\"30003611\"/>\r\n    <row from=\"30003611\" to=\"30003610\"/>\r\n    <row from=\"30003611\" to=\"30003612\"/>\r\n    <row from=\"30003611\" to=\"30003613\"/>\r\n    <row from=\"30003612\" to=\"30001346\"/>\r\n    <row from=\"30003612\" to=\"30003611\"/>\r\n    <row from=\"30003612\" to=\"30003614\"/>\r\n    <row from=\"30003613\" to=\"30003611\"/>\r\n    <row from=\"30003613\" to=\"30003617\"/>\r\n    <row from=\"30003614\" to=\"30003612\"/>\r\n    <row from=\"30003614\" to=\"30003615\"/>\r\n    <row from=\"30003614\" to=\"30003616\"/>\r\n    <row from=\"30003615\" to=\"30003614\"/>\r\n    <row from=\"30003615\" to=\"30003616\"/>\r\n    <row from=\"30003615\" to=\"30003623\"/>\r\n    <row from=\"30003616\" to=\"30003614\"/>\r\n    <row from=\"30003616\" to=\"30003615\"/>\r\n    <row from=\"30003616\" to=\"30003629\"/>\r\n    <row from=\"30003617\" to=\"30003613\"/>\r\n    <row from=\"30003617\" to=\"30003618\"/>\r\n    <row from=\"30003617\" to=\"30003622\"/>\r\n    <row from=\"30003618\" to=\"30003617\"/>\r\n    <row from=\"30003618\" to=\"30003619\"/>\r\n    <row from=\"30003619\" to=\"30003618\"/>\r\n    <row from=\"30003619\" to=\"30003620\"/>\r\n    <row from=\"30003619\" to=\"30003621\"/>\r\n    <row from=\"30003620\" to=\"30003619\"/>\r\n    <row from=\"30003620\" to=\"30004352\"/>\r\n    <row from=\"30003621\" to=\"30003619\"/>\r\n    <row from=\"30003621\" to=\"30003658\"/>\r\n    <row from=\"30003622\" to=\"30003617\"/>\r\n    <row from=\"30003623\" to=\"30003615\"/>\r\n    <row from=\"30003623\" to=\"30003624\"/>\r\n    <row from=\"30003623\" to=\"30003625\"/>\r\n    <row from=\"30003624\" to=\"30003623\"/>\r\n    <row from=\"30003624\" to=\"30003626\"/>\r\n    <row from=\"30003624\" to=\"30003627\"/>\r\n    <row from=\"30003625\" to=\"30003623\"/>\r\n    <row from=\"30003625\" to=\"30003627\"/>\r\n    <row from=\"30003625\" to=\"30003644\"/>\r\n    <row from=\"30003626\" to=\"30003624\"/>\r\n    <row from=\"30003626\" to=\"30003627\"/>\r\n    <row from=\"30003626\" to=\"30003628\"/>\r\n    <row from=\"30003626\" to=\"30003650\"/>\r\n    <row from=\"30003627\" to=\"30003624\"/>\r\n    <row from=\"30003627\" to=\"30003625\"/>\r\n    <row from=\"30003627\" to=\"30003626\"/>\r\n    <row from=\"30003628\" to=\"30003626\"/>\r\n    <row from=\"30003629\" to=\"30003616\"/>\r\n    <row from=\"30003629\" to=\"30003630\"/>\r\n    <row from=\"30003629\" to=\"30003631\"/>\r\n    <row from=\"30003629\" to=\"30003634\"/>\r\n    <row from=\"30003630\" to=\"30003629\"/>\r\n    <row from=\"30003630\" to=\"30003635\"/>\r\n    <row from=\"30003630\" to=\"30003636\"/>\r\n    <row from=\"30003631\" to=\"30003629\"/>\r\n    <row from=\"30003631\" to=\"30003632\"/>\r\n    <row from=\"30003631\" to=\"30003633\"/>\r\n    <row from=\"30003631\" to=\"30003634\"/>\r\n    <row from=\"30003632\" to=\"30003631\"/>\r\n    <row from=\"30003633\" to=\"30003631\"/>\r\n    <row from=\"30003633\" to=\"30003634\"/>\r\n    <row from=\"30003634\" to=\"30003629\"/>\r\n    <row from=\"30003634\" to=\"30003631\"/>\r\n    <row from=\"30003634\" to=\"30003633\"/>\r\n    <row from=\"30003635\" to=\"30003630\"/>\r\n    <row from=\"30003636\" to=\"30003630\"/>\r\n    <row from=\"30003636\" to=\"30003637\"/>\r\n    <row from=\"30003636\" to=\"30003638\"/>\r\n    <row from=\"30003636\" to=\"30003639\"/>\r\n    <row from=\"30003636\" to=\"30003640\"/>\r\n    <row from=\"30003636\" to=\"30003641\"/>\r\n    <row from=\"30003637\" to=\"30003636\"/>\r\n    <row from=\"30003637\" to=\"30003639\"/>\r\n    <row from=\"30003638\" to=\"30003636\"/>\r\n    <row from=\"30003639\" to=\"30003636\"/>\r\n    <row from=\"30003639\" to=\"30003637\"/>\r\n    <row from=\"30003640\" to=\"30003636\"/>\r\n    <row from=\"30003640\" to=\"30003642\"/>\r\n    <row from=\"30003640\" to=\"30003643\"/>\r\n    <row from=\"30003640\" to=\"30003670\"/>\r\n    <row from=\"30003641\" to=\"30003636\"/>\r\n    <row from=\"30003642\" to=\"30003640\"/>\r\n    <row from=\"30003643\" to=\"30003640\"/>\r\n    <row from=\"30003644\" to=\"30003625\"/>\r\n    <row from=\"30003644\" to=\"30003645\"/>\r\n    <row from=\"30003645\" to=\"30003644\"/>\r\n    <row from=\"30003645\" to=\"30003646\"/>\r\n    <row from=\"30003646\" to=\"30003645\"/>\r\n    <row from=\"30003646\" to=\"30003647\"/>\r\n    <row from=\"30003646\" to=\"30003648\"/>\r\n    <row from=\"30003647\" to=\"30003646\"/>\r\n    <row from=\"30003647\" to=\"30003649\"/>\r\n    <row from=\"30003648\" to=\"30003646\"/>\r\n    <row from=\"30003649\" to=\"30003647\"/>\r\n    <row from=\"30003650\" to=\"30003626\"/>\r\n    <row from=\"30003650\" to=\"30003651\"/>\r\n    <row from=\"30003651\" to=\"30003650\"/>\r\n    <row from=\"30003651\" to=\"30003652\"/>\r\n    <row from=\"30003651\" to=\"30003653\"/>\r\n    <row from=\"30003651\" to=\"30003654\"/>\r\n    <row from=\"30003652\" to=\"30003651\"/>\r\n    <row from=\"30003652\" to=\"30003653\"/>\r\n    <row from=\"30003653\" to=\"30003651\"/>\r\n    <row from=\"30003653\" to=\"30003652\"/>\r\n    <row from=\"30003653\" to=\"30003655\"/>\r\n    <row from=\"30003653\" to=\"30003656\"/>\r\n    <row from=\"30003653\" to=\"30003657\"/>\r\n    <row from=\"30003654\" to=\"30003651\"/>\r\n    <row from=\"30003654\" to=\"30003655\"/>\r\n    <row from=\"30003654\" to=\"30004228\"/>\r\n    <row from=\"30003655\" to=\"30003653\"/>\r\n    <row from=\"30003655\" to=\"30003654\"/>\r\n    <row from=\"30003655\" to=\"30003656\"/>\r\n    <row from=\"30003655\" to=\"30003657\"/>\r\n    <row from=\"30003656\" to=\"30003653\"/>\r\n    <row from=\"30003656\" to=\"30003655\"/>\r\n    <row from=\"30003656\" to=\"30003657\"/>\r\n    <row from=\"30003657\" to=\"30001349\"/>\r\n    <row from=\"30003657\" to=\"30003653\"/>\r\n    <row from=\"30003657\" to=\"30003655\"/>\r\n    <row from=\"30003657\" to=\"30003656\"/>\r\n    <row from=\"30003658\" to=\"30003621\"/>\r\n    <row from=\"30003658\" to=\"30003659\"/>\r\n    <row from=\"30003658\" to=\"30003662\"/>\r\n    <row from=\"30003659\" to=\"30003658\"/>\r\n    <row from=\"30003659\" to=\"30003660\"/>\r\n    <row from=\"30003659\" to=\"30003661\"/>\r\n    <row from=\"30003659\" to=\"30003663\"/>\r\n    <row from=\"30003660\" to=\"30003659\"/>\r\n    <row from=\"30003660\" to=\"30003661\"/>\r\n    <row from=\"30003661\" to=\"30003659\"/>\r\n    <row from=\"30003661\" to=\"30003660\"/>\r\n    <row from=\"30003662\" to=\"30003658\"/>\r\n    <row from=\"30003662\" to=\"30003673\"/>\r\n    <row from=\"30003663\" to=\"30003659\"/>\r\n    <row from=\"30003663\" to=\"30003664\"/>\r\n    <row from=\"30003664\" to=\"30003663\"/>\r\n    <row from=\"30003664\" to=\"30003665\"/>\r\n    <row from=\"30003664\" to=\"30003667\"/>\r\n    <row from=\"30003664\" to=\"30003669\"/>\r\n    <row from=\"30003665\" to=\"30003664\"/>\r\n    <row from=\"30003665\" to=\"30003666\"/>\r\n    <row from=\"30003665\" to=\"30003667\"/>\r\n    <row from=\"30003666\" to=\"30003665\"/>\r\n    <row from=\"30003666\" to=\"30003668\"/>\r\n    <row from=\"30003667\" to=\"30003664\"/>\r\n    <row from=\"30003667\" to=\"30003665\"/>\r\n    <row from=\"30003668\" to=\"30003666\"/>\r\n    <row from=\"30003668\" to=\"30004363\"/>\r\n    <row from=\"30003669\" to=\"30003664\"/>\r\n    <row from=\"30003669\" to=\"30004401\"/>\r\n    <row from=\"30003670\" to=\"30003640\"/>\r\n    <row from=\"30003670\" to=\"30003671\"/>\r\n    <row from=\"30003671\" to=\"30003670\"/>\r\n    <row from=\"30003671\" to=\"30003672\"/>\r\n    <row from=\"30003672\" to=\"30003671\"/>\r\n    <row from=\"30003672\" to=\"30003673\"/>\r\n    <row from=\"30003672\" to=\"30003674\"/>\r\n    <row from=\"30003673\" to=\"30003662\"/>\r\n    <row from=\"30003673\" to=\"30003672\"/>\r\n    <row from=\"30003674\" to=\"30003672\"/>\r\n    <row from=\"30003674\" to=\"30003675\"/>\r\n    <row from=\"30003675\" to=\"30003674\"/>\r\n    <row from=\"30003676\" to=\"30001983\"/>\r\n    <row from=\"30003676\" to=\"30003677\"/>\r\n    <row from=\"30003677\" to=\"30003676\"/>\r\n    <row from=\"30003677\" to=\"30003678\"/>\r\n    <row from=\"30003677\" to=\"30003679\"/>\r\n    <row from=\"30003678\" to=\"30003677\"/>\r\n    <row from=\"30003678\" to=\"30003679\"/>\r\n    <row from=\"30003678\" to=\"30003680\"/>\r\n    <row from=\"30003679\" to=\"30003677\"/>\r\n    <row from=\"30003679\" to=\"30003678\"/>\r\n    <row from=\"30003679\" to=\"30003681\"/>\r\n    <row from=\"30003680\" to=\"30003678\"/>\r\n    <row from=\"30003680\" to=\"30003681\"/>\r\n    <row from=\"30003680\" to=\"30003682\"/>\r\n    <row from=\"30003681\" to=\"30001997\"/>\r\n    <row from=\"30003681\" to=\"30002906\"/>\r\n    <row from=\"30003681\" to=\"30003679\"/>\r\n    <row from=\"30003681\" to=\"30003680\"/>\r\n    <row from=\"30003682\" to=\"30003680\"/>\r\n    <row from=\"30003682\" to=\"30003683\"/>\r\n    <row from=\"30003683\" to=\"30003682\"/>\r\n    <row from=\"30003683\" to=\"30003684\"/>\r\n    <row from=\"30003683\" to=\"30003685\"/>\r\n    <row from=\"30003683\" to=\"30003686\"/>\r\n    <row from=\"30003684\" to=\"30003683\"/>\r\n    <row from=\"30003684\" to=\"30003686\"/>\r\n    <row from=\"30003685\" to=\"30002032\"/>\r\n    <row from=\"30003685\" to=\"30003683\"/>\r\n    <row from=\"30003685\" to=\"30003688\"/>\r\n    <row from=\"30003686\" to=\"30003683\"/>\r\n    <row from=\"30003686\" to=\"30003684\"/>\r\n    <row from=\"30003686\" to=\"30003687\"/>\r\n    <row from=\"30003686\" to=\"30003689\"/>\r\n    <row from=\"30003687\" to=\"30002930\"/>\r\n    <row from=\"30003687\" to=\"30003686\"/>\r\n    <row from=\"30003687\" to=\"30003689\"/>\r\n    <row from=\"30003688\" to=\"30003685\"/>\r\n    <row from=\"30003688\" to=\"30003689\"/>\r\n    <row from=\"30003688\" to=\"30003690\"/>\r\n    <row from=\"30003689\" to=\"30003686\"/>\r\n    <row from=\"30003689\" to=\"30003687\"/>\r\n    <row from=\"30003689\" to=\"30003688\"/>\r\n    <row from=\"30003689\" to=\"30003697\"/>\r\n    <row from=\"30003690\" to=\"30003688\"/>\r\n    <row from=\"30003690\" to=\"30003691\"/>\r\n    <row from=\"30003690\" to=\"30003692\"/>\r\n    <row from=\"30003691\" to=\"30003690\"/>\r\n    <row from=\"30003691\" to=\"30003694\"/>\r\n    <row from=\"30003691\" to=\"30003695\"/>\r\n    <row from=\"30003692\" to=\"30003690\"/>\r\n    <row from=\"30003692\" to=\"30003693\"/>\r\n    <row from=\"30003693\" to=\"30003692\"/>\r\n    <row from=\"30003694\" to=\"30003691\"/>\r\n    <row from=\"30003694\" to=\"30003696\"/>\r\n    <row from=\"30003694\" to=\"30004070\"/>\r\n    <row from=\"30003695\" to=\"30003691\"/>\r\n    <row from=\"30003695\" to=\"30003696\"/>\r\n    <row from=\"30003696\" to=\"30003694\"/>\r\n    <row from=\"30003696\" to=\"30003695\"/>\r\n    <row from=\"30003697\" to=\"30003689\"/>\r\n    <row from=\"30003697\" to=\"30003698\"/>\r\n    <row from=\"30003698\" to=\"30003697\"/>\r\n    <row from=\"30003698\" to=\"30003699\"/>\r\n    <row from=\"30003698\" to=\"30003700\"/>\r\n    <row from=\"30003698\" to=\"30003702\"/>\r\n    <row from=\"30003699\" to=\"30003698\"/>\r\n    <row from=\"30003699\" to=\"30003701\"/>\r\n    <row from=\"30003699\" to=\"30003702\"/>\r\n    <row from=\"30003700\" to=\"30003698\"/>\r\n    <row from=\"30003701\" to=\"30003699\"/>\r\n    <row from=\"30003702\" to=\"30003698\"/>\r\n    <row from=\"30003702\" to=\"30003699\"/>\r\n    <row from=\"30003703\" to=\"30000075\"/>\r\n    <row from=\"30003703\" to=\"30003704\"/>\r\n    <row from=\"30003704\" to=\"30003703\"/>\r\n    <row from=\"30003704\" to=\"30003705\"/>\r\n    <row from=\"30003704\" to=\"30003706\"/>\r\n    <row from=\"30003705\" to=\"30003704\"/>\r\n    <row from=\"30003705\" to=\"30003706\"/>\r\n    <row from=\"30003705\" to=\"30003731\"/>\r\n    <row from=\"30003706\" to=\"30003704\"/>\r\n    <row from=\"30003706\" to=\"30003705\"/>\r\n    <row from=\"30003706\" to=\"30003707\"/>\r\n    <row from=\"30003707\" to=\"30001226\"/>\r\n    <row from=\"30003707\" to=\"30003706\"/>\r\n    <row from=\"30003707\" to=\"30003708\"/>\r\n    <row from=\"30003707\" to=\"30003717\"/>\r\n    <row from=\"30003707\" to=\"30003723\"/>\r\n    <row from=\"30003708\" to=\"30003707\"/>\r\n    <row from=\"30003708\" to=\"30003748\"/>\r\n    <row from=\"30003709\" to=\"30001153\"/>\r\n    <row from=\"30003709\" to=\"30003710\"/>\r\n    <row from=\"30003709\" to=\"30003715\"/>\r\n    <row from=\"30003710\" to=\"30003709\"/>\r\n    <row from=\"30003710\" to=\"30003711\"/>\r\n    <row from=\"30003710\" to=\"30003713\"/>\r\n    <row from=\"30003711\" to=\"30003710\"/>\r\n    <row from=\"30003711\" to=\"30003712\"/>\r\n    <row from=\"30003712\" to=\"30003711\"/>\r\n    <row from=\"30003712\" to=\"30003715\"/>\r\n    <row from=\"30003712\" to=\"30003754\"/>\r\n    <row from=\"30003713\" to=\"30003710\"/>\r\n    <row from=\"30003713\" to=\"30003714\"/>\r\n    <row from=\"30003713\" to=\"30003716\"/>\r\n    <row from=\"30003714\" to=\"30003713\"/>\r\n    <row from=\"30003714\" to=\"30003735\"/>\r\n    <row from=\"30003715\" to=\"30001232\"/>\r\n    <row from=\"30003715\" to=\"30003709\"/>\r\n    <row from=\"30003715\" to=\"30003712\"/>\r\n    <row from=\"30003716\" to=\"30003713\"/>\r\n    <row from=\"30003716\" to=\"30003741\"/>\r\n    <row from=\"30003717\" to=\"30003707\"/>\r\n    <row from=\"30003717\" to=\"30003718\"/>\r\n    <row from=\"30003717\" to=\"30003719\"/>\r\n    <row from=\"30003717\" to=\"30003720\"/>\r\n    <row from=\"30003718\" to=\"30003717\"/>\r\n    <row from=\"30003718\" to=\"30003719\"/>\r\n    <row from=\"30003718\" to=\"30003720\"/>\r\n    <row from=\"30003719\" to=\"30003717\"/>\r\n    <row from=\"30003719\" to=\"30003718\"/>\r\n    <row from=\"30003719\" to=\"30003720\"/>\r\n    <row from=\"30003719\" to=\"30003721\"/>\r\n    <row from=\"30003720\" to=\"30003717\"/>\r\n    <row from=\"30003720\" to=\"30003718\"/>\r\n    <row from=\"30003720\" to=\"30003719\"/>\r\n    <row from=\"30003720\" to=\"30003721\"/>\r\n    <row from=\"30003721\" to=\"30001236\"/>\r\n    <row from=\"30003721\" to=\"30003719\"/>\r\n    <row from=\"30003721\" to=\"30003720\"/>\r\n    <row from=\"30003721\" to=\"30003722\"/>\r\n    <row from=\"30003722\" to=\"30001234\"/>\r\n    <row from=\"30003722\" to=\"30003721\"/>\r\n    <row from=\"30003723\" to=\"30003707\"/>\r\n    <row from=\"30003723\" to=\"30003724\"/>\r\n    <row from=\"30003723\" to=\"30003725\"/>\r\n    <row from=\"30003724\" to=\"30003723\"/>\r\n    <row from=\"30003724\" to=\"30003726\"/>\r\n    <row from=\"30003725\" to=\"30003723\"/>\r\n    <row from=\"30003725\" to=\"30003727\"/>\r\n    <row from=\"30003726\" to=\"30001742\"/>\r\n    <row from=\"30003726\" to=\"30003724\"/>\r\n    <row from=\"30003727\" to=\"30003725\"/>\r\n    <row from=\"30003727\" to=\"30003728\"/>\r\n    <row from=\"30003728\" to=\"30003727\"/>\r\n    <row from=\"30003729\" to=\"30002968\"/>\r\n    <row from=\"30003729\" to=\"30003730\"/>\r\n    <row from=\"30003729\" to=\"30003731\"/>\r\n    <row from=\"30003730\" to=\"30003729\"/>\r\n    <row from=\"30003730\" to=\"30003732\"/>\r\n    <row from=\"30003730\" to=\"30003733\"/>\r\n    <row from=\"30003730\" to=\"30003734\"/>\r\n    <row from=\"30003731\" to=\"30003705\"/>\r\n    <row from=\"30003731\" to=\"30003729\"/>\r\n    <row from=\"30003731\" to=\"30003760\"/>\r\n    <row from=\"30003732\" to=\"30003730\"/>\r\n    <row from=\"30003732\" to=\"30003733\"/>\r\n    <row from=\"30003732\" to=\"30003734\"/>\r\n    <row from=\"30003733\" to=\"30003730\"/>\r\n    <row from=\"30003733\" to=\"30003732\"/>\r\n    <row from=\"30003733\" to=\"30003734\"/>\r\n    <row from=\"30003734\" to=\"30003730\"/>\r\n    <row from=\"30003734\" to=\"30003732\"/>\r\n    <row from=\"30003734\" to=\"30003733\"/>\r\n    <row from=\"30003735\" to=\"30003714\"/>\r\n    <row from=\"30003735\" to=\"30003736\"/>\r\n    <row from=\"30003735\" to=\"30003740\"/>\r\n    <row from=\"30003736\" to=\"30003735\"/>\r\n    <row from=\"30003736\" to=\"30003737\"/>\r\n    <row from=\"30003736\" to=\"30003739\"/>\r\n    <row from=\"30003736\" to=\"30003740\"/>\r\n    <row from=\"30003737\" to=\"30003736\"/>\r\n    <row from=\"30003737\" to=\"30003738\"/>\r\n    <row from=\"30003738\" to=\"30003737\"/>\r\n    <row from=\"30003739\" to=\"30003736\"/>\r\n    <row from=\"30003740\" to=\"30003735\"/>\r\n    <row from=\"30003740\" to=\"30003736\"/>\r\n    <row from=\"30003741\" to=\"30003716\"/>\r\n    <row from=\"30003741\" to=\"30003742\"/>\r\n    <row from=\"30003741\" to=\"30003743\"/>\r\n    <row from=\"30003741\" to=\"30003745\"/>\r\n    <row from=\"30003742\" to=\"30003741\"/>\r\n    <row from=\"30003742\" to=\"30003746\"/>\r\n    <row from=\"30003743\" to=\"30003741\"/>\r\n    <row from=\"30003743\" to=\"30003744\"/>\r\n    <row from=\"30003743\" to=\"30003745\"/>\r\n    <row from=\"30003744\" to=\"30003743\"/>\r\n    <row from=\"30003744\" to=\"30003745\"/>\r\n    <row from=\"30003745\" to=\"30003741\"/>\r\n    <row from=\"30003745\" to=\"30003743\"/>\r\n    <row from=\"30003745\" to=\"30003744\"/>\r\n    <row from=\"30003746\" to=\"30003742\"/>\r\n    <row from=\"30003746\" to=\"30003747\"/>\r\n    <row from=\"30003746\" to=\"30003774\"/>\r\n    <row from=\"30003747\" to=\"30003746\"/>\r\n    <row from=\"30003747\" to=\"30003766\"/>\r\n    <row from=\"30003748\" to=\"30003708\"/>\r\n    <row from=\"30003748\" to=\"30003749\"/>\r\n    <row from=\"30003748\" to=\"30003750\"/>\r\n    <row from=\"30003749\" to=\"30003748\"/>\r\n    <row from=\"30003749\" to=\"30003752\"/>\r\n    <row from=\"30003750\" to=\"30003748\"/>\r\n    <row from=\"30003750\" to=\"30003751\"/>\r\n    <row from=\"30003751\" to=\"30003750\"/>\r\n    <row from=\"30003751\" to=\"30003759\"/>\r\n    <row from=\"30003751\" to=\"30003786\"/>\r\n    <row from=\"30003752\" to=\"30003749\"/>\r\n    <row from=\"30003752\" to=\"30003753\"/>\r\n    <row from=\"30003753\" to=\"30003752\"/>\r\n    <row from=\"30003754\" to=\"30003712\"/>\r\n    <row from=\"30003754\" to=\"30003755\"/>\r\n    <row from=\"30003754\" to=\"30003756\"/>\r\n    <row from=\"30003754\" to=\"30003758\"/>\r\n    <row from=\"30003755\" to=\"30003754\"/>\r\n    <row from=\"30003755\" to=\"30003757\"/>\r\n    <row from=\"30003755\" to=\"30003759\"/>\r\n    <row from=\"30003756\" to=\"30003754\"/>\r\n    <row from=\"30003756\" to=\"30003758\"/>\r\n    <row from=\"30003756\" to=\"30003773\"/>\r\n    <row from=\"30003757\" to=\"30003755\"/>\r\n    <row from=\"30003758\" to=\"30003754\"/>\r\n    <row from=\"30003758\" to=\"30003756\"/>\r\n    <row from=\"30003758\" to=\"30003759\"/>\r\n    <row from=\"30003759\" to=\"30003751\"/>\r\n    <row from=\"30003759\" to=\"30003755\"/>\r\n    <row from=\"30003759\" to=\"30003758\"/>\r\n    <row from=\"30003760\" to=\"30003731\"/>\r\n    <row from=\"30003760\" to=\"30003761\"/>\r\n    <row from=\"30003760\" to=\"30003762\"/>\r\n    <row from=\"30003760\" to=\"30003763\"/>\r\n    <row from=\"30003761\" to=\"30003760\"/>\r\n    <row from=\"30003761\" to=\"30003763\"/>\r\n    <row from=\"30003762\" to=\"30003760\"/>\r\n    <row from=\"30003762\" to=\"30003764\"/>\r\n    <row from=\"30003763\" to=\"30003760\"/>\r\n    <row from=\"30003763\" to=\"30003761\"/>\r\n    <row from=\"30003763\" to=\"30003765\"/>\r\n    <row from=\"30003764\" to=\"30003762\"/>\r\n    <row from=\"30003764\" to=\"30003765\"/>\r\n    <row from=\"30003765\" to=\"30003763\"/>\r\n    <row from=\"30003765\" to=\"30003764\"/>\r\n    <row from=\"30003766\" to=\"30003747\"/>\r\n    <row from=\"30003766\" to=\"30003767\"/>\r\n    <row from=\"30003766\" to=\"30003768\"/>\r\n    <row from=\"30003767\" to=\"30003766\"/>\r\n    <row from=\"30003767\" to=\"30003769\"/>\r\n    <row from=\"30003768\" to=\"30003766\"/>\r\n    <row from=\"30003769\" to=\"30003563\"/>\r\n    <row from=\"30003769\" to=\"30003767\"/>\r\n    <row from=\"30003769\" to=\"30003770\"/>\r\n    <row from=\"30003770\" to=\"30003769\"/>\r\n    <row from=\"30003770\" to=\"30003771\"/>\r\n    <row from=\"30003770\" to=\"30003772\"/>\r\n    <row from=\"30003770\" to=\"30003773\"/>\r\n    <row from=\"30003771\" to=\"30003770\"/>\r\n    <row from=\"30003771\" to=\"30003772\"/>\r\n    <row from=\"30003771\" to=\"30003773\"/>\r\n    <row from=\"30003772\" to=\"30003770\"/>\r\n    <row from=\"30003772\" to=\"30003771\"/>\r\n    <row from=\"30003772\" to=\"30003773\"/>\r\n    <row from=\"30003773\" to=\"30003756\"/>\r\n    <row from=\"30003773\" to=\"30003770\"/>\r\n    <row from=\"30003773\" to=\"30003771\"/>\r\n    <row from=\"30003773\" to=\"30003772\"/>\r\n    <row from=\"30003774\" to=\"30003746\"/>\r\n    <row from=\"30003774\" to=\"30003775\"/>\r\n    <row from=\"30003775\" to=\"30003774\"/>\r\n    <row from=\"30003775\" to=\"30003776\"/>\r\n    <row from=\"30003775\" to=\"30003777\"/>\r\n    <row from=\"30003775\" to=\"30003780\"/>\r\n    <row from=\"30003776\" to=\"30003775\"/>\r\n    <row from=\"30003776\" to=\"30003777\"/>\r\n    <row from=\"30003776\" to=\"30003778\"/>\r\n    <row from=\"30003776\" to=\"30003780\"/>\r\n    <row from=\"30003777\" to=\"30003775\"/>\r\n    <row from=\"30003777\" to=\"30003776\"/>\r\n    <row from=\"30003777\" to=\"30003778\"/>\r\n    <row from=\"30003777\" to=\"30003779\"/>\r\n    <row from=\"30003777\" to=\"30003780\"/>\r\n    <row from=\"30003778\" to=\"30003776\"/>\r\n    <row from=\"30003778\" to=\"30003777\"/>\r\n    <row from=\"30003779\" to=\"30003777\"/>\r\n    <row from=\"30003780\" to=\"30003775\"/>\r\n    <row from=\"30003780\" to=\"30003776\"/>\r\n    <row from=\"30003780\" to=\"30003777\"/>\r\n    <row from=\"30003781\" to=\"30001236\"/>\r\n    <row from=\"30003781\" to=\"30003782\"/>\r\n    <row from=\"30003781\" to=\"30003783\"/>\r\n    <row from=\"30003781\" to=\"30003786\"/>\r\n    <row from=\"30003782\" to=\"30003781\"/>\r\n    <row from=\"30003782\" to=\"30003784\"/>\r\n    <row from=\"30003782\" to=\"30003786\"/>\r\n    <row from=\"30003783\" to=\"30003781\"/>\r\n    <row from=\"30003783\" to=\"30003785\"/>\r\n    <row from=\"30003784\" to=\"30003782\"/>\r\n    <row from=\"30003784\" to=\"30003785\"/>\r\n    <row from=\"30003785\" to=\"30003783\"/>\r\n    <row from=\"30003785\" to=\"30003784\"/>\r\n    <row from=\"30003786\" to=\"30003751\"/>\r\n    <row from=\"30003786\" to=\"30003781\"/>\r\n    <row from=\"30003786\" to=\"30003782\"/>\r\n    <row from=\"30003787\" to=\"30003788\"/>\r\n    <row from=\"30003787\" to=\"30003790\"/>\r\n    <row from=\"30003787\" to=\"30003791\"/>\r\n    <row from=\"30003787\" to=\"30003792\"/>\r\n    <row from=\"30003787\" to=\"30005300\"/>\r\n    <row from=\"30003788\" to=\"30003787\"/>\r\n    <row from=\"30003788\" to=\"30003789\"/>\r\n    <row from=\"30003788\" to=\"30003790\"/>\r\n    <row from=\"30003788\" to=\"30005311\"/>\r\n    <row from=\"30003789\" to=\"30003788\"/>\r\n    <row from=\"30003789\" to=\"30003791\"/>\r\n    <row from=\"30003790\" to=\"30003787\"/>\r\n    <row from=\"30003790\" to=\"30003788\"/>\r\n    <row from=\"30003790\" to=\"30003826\"/>\r\n    <row from=\"30003791\" to=\"30003787\"/>\r\n    <row from=\"30003791\" to=\"30003789\"/>\r\n    <row from=\"30003792\" to=\"30003787\"/>\r\n    <row from=\"30003792\" to=\"30003793\"/>\r\n    <row from=\"30003792\" to=\"30003794\"/>\r\n    <row from=\"30003792\" to=\"30003797\"/>\r\n    <row from=\"30003792\" to=\"30003800\"/>\r\n    <row from=\"30003792\" to=\"30003806\"/>\r\n    <row from=\"30003793\" to=\"30003268\"/>\r\n    <row from=\"30003793\" to=\"30003792\"/>\r\n    <row from=\"30003794\" to=\"30003792\"/>\r\n    <row from=\"30003794\" to=\"30003795\"/>\r\n    <row from=\"30003794\" to=\"30003797\"/>\r\n    <row from=\"30003794\" to=\"30003798\"/>\r\n    <row from=\"30003794\" to=\"30005307\"/>\r\n    <row from=\"30003795\" to=\"30003794\"/>\r\n    <row from=\"30003795\" to=\"30003796\"/>\r\n    <row from=\"30003795\" to=\"30003802\"/>\r\n    <row from=\"30003796\" to=\"30003795\"/>\r\n    <row from=\"30003796\" to=\"30003797\"/>\r\n    <row from=\"30003796\" to=\"30003798\"/>\r\n    <row from=\"30003796\" to=\"30003799\"/>\r\n    <row from=\"30003797\" to=\"30003792\"/>\r\n    <row from=\"30003797\" to=\"30003794\"/>\r\n    <row from=\"30003797\" to=\"30003796\"/>\r\n    <row from=\"30003797\" to=\"30003799\"/>\r\n    <row from=\"30003798\" to=\"30003794\"/>\r\n    <row from=\"30003798\" to=\"30003796\"/>\r\n    <row from=\"30003798\" to=\"30003847\"/>\r\n    <row from=\"30003799\" to=\"30003796\"/>\r\n    <row from=\"30003799\" to=\"30003797\"/>\r\n    <row from=\"30003800\" to=\"30003792\"/>\r\n    <row from=\"30003800\" to=\"30003801\"/>\r\n    <row from=\"30003801\" to=\"30003800\"/>\r\n    <row from=\"30003801\" to=\"30003802\"/>\r\n    <row from=\"30003801\" to=\"30003803\"/>\r\n    <row from=\"30003801\" to=\"30003805\"/>\r\n    <row from=\"30003802\" to=\"30003795\"/>\r\n    <row from=\"30003802\" to=\"30003801\"/>\r\n    <row from=\"30003803\" to=\"30003801\"/>\r\n    <row from=\"30003803\" to=\"30003804\"/>\r\n    <row from=\"30003804\" to=\"30003803\"/>\r\n    <row from=\"30003805\" to=\"30003801\"/>\r\n    <row from=\"30003805\" to=\"30003818\"/>\r\n    <row from=\"30003806\" to=\"30003792\"/>\r\n    <row from=\"30003806\" to=\"30003807\"/>\r\n    <row from=\"30003806\" to=\"30003808\"/>\r\n    <row from=\"30003807\" to=\"30003806\"/>\r\n    <row from=\"30003807\" to=\"30003810\"/>\r\n    <row from=\"30003808\" to=\"30003806\"/>\r\n    <row from=\"30003808\" to=\"30003809\"/>\r\n    <row from=\"30003809\" to=\"30003808\"/>\r\n    <row from=\"30003809\" to=\"30003810\"/>\r\n    <row from=\"30003810\" to=\"30003807\"/>\r\n    <row from=\"30003810\" to=\"30003809\"/>\r\n    <row from=\"30003810\" to=\"30003811\"/>\r\n    <row from=\"30003811\" to=\"30003810\"/>\r\n    <row from=\"30003811\" to=\"30003812\"/>\r\n    <row from=\"30003811\" to=\"30003824\"/>\r\n    <row from=\"30003812\" to=\"30003811\"/>\r\n    <row from=\"30003812\" to=\"30003813\"/>\r\n    <row from=\"30003812\" to=\"30003815\"/>\r\n    <row from=\"30003813\" to=\"30003812\"/>\r\n    <row from=\"30003813\" to=\"30003814\"/>\r\n    <row from=\"30003813\" to=\"30003815\"/>\r\n    <row from=\"30003814\" to=\"30003813\"/>\r\n    <row from=\"30003814\" to=\"30003815\"/>\r\n    <row from=\"30003815\" to=\"30003812\"/>\r\n    <row from=\"30003815\" to=\"30003813\"/>\r\n    <row from=\"30003815\" to=\"30003814\"/>\r\n    <row from=\"30003815\" to=\"30003816\"/>\r\n    <row from=\"30003815\" to=\"30003817\"/>\r\n    <row from=\"30003816\" to=\"30003815\"/>\r\n    <row from=\"30003817\" to=\"30003815\"/>\r\n    <row from=\"30003818\" to=\"30003805\"/>\r\n    <row from=\"30003818\" to=\"30003819\"/>\r\n    <row from=\"30003819\" to=\"30003818\"/>\r\n    <row from=\"30003819\" to=\"30003820\"/>\r\n    <row from=\"30003819\" to=\"30003821\"/>\r\n    <row from=\"30003820\" to=\"30003323\"/>\r\n    <row from=\"30003820\" to=\"30003819\"/>\r\n    <row from=\"30003820\" to=\"30003822\"/>\r\n    <row from=\"30003821\" to=\"30003819\"/>\r\n    <row from=\"30003821\" to=\"30003823\"/>\r\n    <row from=\"30003822\" to=\"30003820\"/>\r\n    <row from=\"30003823\" to=\"30003605\"/>\r\n    <row from=\"30003823\" to=\"30003821\"/>\r\n    <row from=\"30003824\" to=\"30003811\"/>\r\n    <row from=\"30003824\" to=\"30003825\"/>\r\n    <row from=\"30003824\" to=\"30003827\"/>\r\n    <row from=\"30003825\" to=\"30003824\"/>\r\n    <row from=\"30003825\" to=\"30003826\"/>\r\n    <row from=\"30003825\" to=\"30003827\"/>\r\n    <row from=\"30003825\" to=\"30003828\"/>\r\n    <row from=\"30003826\" to=\"30003790\"/>\r\n    <row from=\"30003826\" to=\"30003825\"/>\r\n    <row from=\"30003826\" to=\"30003828\"/>\r\n    <row from=\"30003827\" to=\"30003824\"/>\r\n    <row from=\"30003827\" to=\"30003825\"/>\r\n    <row from=\"30003827\" to=\"30003829\"/>\r\n    <row from=\"30003827\" to=\"30003833\"/>\r\n    <row from=\"30003828\" to=\"30003825\"/>\r\n    <row from=\"30003828\" to=\"30003826\"/>\r\n    <row from=\"30003828\" to=\"30003829\"/>\r\n    <row from=\"30003829\" to=\"30003827\"/>\r\n    <row from=\"30003829\" to=\"30003828\"/>\r\n    <row from=\"30003829\" to=\"30003836\"/>\r\n    <row from=\"30003830\" to=\"30003277\"/>\r\n    <row from=\"30003830\" to=\"30003831\"/>\r\n    <row from=\"30003830\" to=\"30003833\"/>\r\n    <row from=\"30003830\" to=\"30004975\"/>\r\n    <row from=\"30003831\" to=\"30003830\"/>\r\n    <row from=\"30003831\" to=\"30003832\"/>\r\n    <row from=\"30003831\" to=\"30003835\"/>\r\n    <row from=\"30003832\" to=\"30003831\"/>\r\n    <row from=\"30003832\" to=\"30003834\"/>\r\n    <row from=\"30003832\" to=\"30003835\"/>\r\n    <row from=\"30003833\" to=\"30003827\"/>\r\n    <row from=\"30003833\" to=\"30003830\"/>\r\n    <row from=\"30003834\" to=\"30003832\"/>\r\n    <row from=\"30003835\" to=\"30003831\"/>\r\n    <row from=\"30003835\" to=\"30003832\"/>\r\n    <row from=\"30003835\" to=\"30003850\"/>\r\n    <row from=\"30003836\" to=\"30003829\"/>\r\n    <row from=\"30003836\" to=\"30003837\"/>\r\n    <row from=\"30003836\" to=\"30003838\"/>\r\n    <row from=\"30003836\" to=\"30003841\"/>\r\n    <row from=\"30003837\" to=\"30003836\"/>\r\n    <row from=\"30003837\" to=\"30003839\"/>\r\n    <row from=\"30003837\" to=\"30045344\"/>\r\n    <row from=\"30003838\" to=\"30003836\"/>\r\n    <row from=\"30003838\" to=\"30045319\"/>\r\n    <row from=\"30003839\" to=\"30003837\"/>\r\n    <row from=\"30003839\" to=\"30003840\"/>\r\n    <row from=\"30003840\" to=\"30003839\"/>\r\n    <row from=\"30003840\" to=\"30003842\"/>\r\n    <row from=\"30003840\" to=\"30003857\"/>\r\n    <row from=\"30003841\" to=\"30003836\"/>\r\n    <row from=\"30003841\" to=\"30004046\"/>\r\n    <row from=\"30003841\" to=\"30100000\"/>\r\n    <row from=\"30003842\" to=\"30003840\"/>\r\n    <row from=\"30003843\" to=\"30003844\"/>\r\n    <row from=\"30003843\" to=\"30005307\"/>\r\n    <row from=\"30003844\" to=\"30003843\"/>\r\n    <row from=\"30003844\" to=\"30003845\"/>\r\n    <row from=\"30003845\" to=\"30003844\"/>\r\n    <row from=\"30003845\" to=\"30003846\"/>\r\n    <row from=\"30003845\" to=\"30003847\"/>\r\n    <row from=\"30003846\" to=\"30003845\"/>\r\n    <row from=\"30003846\" to=\"30003849\"/>\r\n    <row from=\"30003847\" to=\"30003798\"/>\r\n    <row from=\"30003847\" to=\"30003845\"/>\r\n    <row from=\"30003847\" to=\"30003848\"/>\r\n    <row from=\"30003848\" to=\"30003847\"/>\r\n    <row from=\"30003848\" to=\"30003849\"/>\r\n    <row from=\"30003849\" to=\"30003846\"/>\r\n    <row from=\"30003849\" to=\"30003848\"/>\r\n    <row from=\"30003850\" to=\"30003835\"/>\r\n    <row from=\"30003850\" to=\"30003851\"/>\r\n    <row from=\"30003851\" to=\"30003850\"/>\r\n    <row from=\"30003851\" to=\"30003852\"/>\r\n    <row from=\"30003851\" to=\"30003853\"/>\r\n    <row from=\"30003852\" to=\"30003851\"/>\r\n    <row from=\"30003852\" to=\"30003854\"/>\r\n    <row from=\"30003852\" to=\"30003857\"/>\r\n    <row from=\"30003853\" to=\"30003851\"/>\r\n    <row from=\"30003853\" to=\"30003856\"/>\r\n    <row from=\"30003854\" to=\"30003852\"/>\r\n    <row from=\"30003854\" to=\"30003855\"/>\r\n    <row from=\"30003854\" to=\"30003857\"/>\r\n    <row from=\"30003855\" to=\"30002039\"/>\r\n    <row from=\"30003855\" to=\"30003854\"/>\r\n    <row from=\"30003856\" to=\"30003853\"/>\r\n    <row from=\"30003856\" to=\"30045322\"/>\r\n    <row from=\"30003857\" to=\"30003840\"/>\r\n    <row from=\"30003857\" to=\"30003852\"/>\r\n    <row from=\"30003857\" to=\"30003854\"/>\r\n    <row from=\"30003858\" to=\"30001691\"/>\r\n    <row from=\"30003858\" to=\"30003859\"/>\r\n    <row from=\"30003858\" to=\"30003860\"/>\r\n    <row from=\"30003859\" to=\"30003858\"/>\r\n    <row from=\"30003860\" to=\"30003858\"/>\r\n    <row from=\"30003860\" to=\"30003861\"/>\r\n    <row from=\"30003860\" to=\"30003863\"/>\r\n    <row from=\"30003860\" to=\"30003864\"/>\r\n    <row from=\"30003861\" to=\"30003860\"/>\r\n    <row from=\"30003861\" to=\"30003862\"/>\r\n    <row from=\"30003862\" to=\"30003861\"/>\r\n    <row from=\"30003862\" to=\"30003866\"/>\r\n    <row from=\"30003862\" to=\"30003875\"/>\r\n    <row from=\"30003863\" to=\"30003860\"/>\r\n    <row from=\"30003864\" to=\"30003860\"/>\r\n    <row from=\"30003864\" to=\"30003865\"/>\r\n    <row from=\"30003865\" to=\"30003864\"/>\r\n    <row from=\"30003865\" to=\"30003888\"/>\r\n    <row from=\"30003866\" to=\"30003862\"/>\r\n    <row from=\"30003866\" to=\"30003882\"/>\r\n    <row from=\"30003867\" to=\"30003868\"/>\r\n    <row from=\"30003867\" to=\"30003869\"/>\r\n    <row from=\"30003867\" to=\"30003872\"/>\r\n    <row from=\"30003867\" to=\"30005041\"/>\r\n    <row from=\"30003868\" to=\"30003867\"/>\r\n    <row from=\"30003868\" to=\"30003869\"/>\r\n    <row from=\"30003868\" to=\"30003872\"/>\r\n    <row from=\"30003868\" to=\"30003874\"/>\r\n    <row from=\"30003869\" to=\"30003867\"/>\r\n    <row from=\"30003869\" to=\"30003868\"/>\r\n    <row from=\"30003869\" to=\"30003870\"/>\r\n    <row from=\"30003869\" to=\"30003873\"/>\r\n    <row from=\"30003870\" to=\"30003869\"/>\r\n    <row from=\"30003870\" to=\"30003871\"/>\r\n    <row from=\"30003870\" to=\"30003872\"/>\r\n    <row from=\"30003871\" to=\"30003870\"/>\r\n    <row from=\"30003871\" to=\"30003875\"/>\r\n    <row from=\"30003872\" to=\"30003867\"/>\r\n    <row from=\"30003872\" to=\"30003868\"/>\r\n    <row from=\"30003872\" to=\"30003870\"/>\r\n    <row from=\"30003873\" to=\"30003869\"/>\r\n    <row from=\"30003873\" to=\"30003874\"/>\r\n    <row from=\"30003874\" to=\"30003868\"/>\r\n    <row from=\"30003874\" to=\"30003873\"/>\r\n    <row from=\"30003875\" to=\"30003862\"/>\r\n    <row from=\"30003875\" to=\"30003871\"/>\r\n    <row from=\"30003876\" to=\"30003877\"/>\r\n    <row from=\"30003876\" to=\"30005043\"/>\r\n    <row from=\"30003877\" to=\"30003876\"/>\r\n    <row from=\"30003877\" to=\"30003878\"/>\r\n    <row from=\"30003878\" to=\"30003877\"/>\r\n    <row from=\"30003878\" to=\"30003879\"/>\r\n    <row from=\"30003878\" to=\"30003880\"/>\r\n    <row from=\"30003879\" to=\"30003878\"/>\r\n    <row from=\"30003880\" to=\"30003878\"/>\r\n    <row from=\"30003880\" to=\"30003881\"/>\r\n    <row from=\"30003881\" to=\"30003880\"/>\r\n    <row from=\"30003881\" to=\"30003911\"/>\r\n    <row from=\"30003881\" to=\"30005050\"/>\r\n    <row from=\"30003882\" to=\"30003866\"/>\r\n    <row from=\"30003882\" to=\"30003883\"/>\r\n    <row from=\"30003883\" to=\"30001161\"/>\r\n    <row from=\"30003883\" to=\"30003882\"/>\r\n    <row from=\"30003883\" to=\"30003884\"/>\r\n    <row from=\"30003883\" to=\"30003885\"/>\r\n    <row from=\"30003884\" to=\"30003883\"/>\r\n    <row from=\"30003885\" to=\"30003883\"/>\r\n    <row from=\"30003885\" to=\"30003886\"/>\r\n    <row from=\"30003885\" to=\"30003903\"/>\r\n    <row from=\"30003886\" to=\"30003885\"/>\r\n    <row from=\"30003886\" to=\"30003887\"/>\r\n    <row from=\"30003886\" to=\"30003896\"/>\r\n    <row from=\"30003887\" to=\"30003886\"/>\r\n    <row from=\"30003887\" to=\"30003942\"/>\r\n    <row from=\"30003888\" to=\"30003865\"/>\r\n    <row from=\"30003888\" to=\"30003889\"/>\r\n    <row from=\"30003888\" to=\"30003890\"/>\r\n    <row from=\"30003888\" to=\"30003891\"/>\r\n    <row from=\"30003889\" to=\"30003888\"/>\r\n    <row from=\"30003889\" to=\"30003895\"/>\r\n    <row from=\"30003890\" to=\"30003888\"/>\r\n    <row from=\"30003891\" to=\"30003888\"/>\r\n    <row from=\"30003891\" to=\"30003892\"/>\r\n    <row from=\"30003891\" to=\"30003894\"/>\r\n    <row from=\"30003892\" to=\"30003891\"/>\r\n    <row from=\"30003892\" to=\"30003893\"/>\r\n    <row from=\"30003892\" to=\"30003894\"/>\r\n    <row from=\"30003892\" to=\"30004019\"/>\r\n    <row from=\"30003893\" to=\"30003892\"/>\r\n    <row from=\"30003893\" to=\"30003895\"/>\r\n    <row from=\"30003894\" to=\"30003891\"/>\r\n    <row from=\"30003894\" to=\"30003892\"/>\r\n    <row from=\"30003895\" to=\"30003889\"/>\r\n    <row from=\"30003895\" to=\"30003893\"/>\r\n    <row from=\"30003896\" to=\"30003886\"/>\r\n    <row from=\"30003896\" to=\"30003897\"/>\r\n    <row from=\"30003897\" to=\"30003896\"/>\r\n    <row from=\"30003897\" to=\"30003898\"/>\r\n    <row from=\"30003897\" to=\"30003899\"/>\r\n    <row from=\"30003898\" to=\"30003897\"/>\r\n    <row from=\"30003898\" to=\"30003902\"/>\r\n    <row from=\"30003899\" to=\"30003897\"/>\r\n    <row from=\"30003899\" to=\"30003900\"/>\r\n    <row from=\"30003900\" to=\"30003899\"/>\r\n    <row from=\"30003900\" to=\"30003901\"/>\r\n    <row from=\"30003900\" to=\"30003917\"/>\r\n    <row from=\"30003901\" to=\"30003900\"/>\r\n    <row from=\"30003902\" to=\"30003898\"/>\r\n    <row from=\"30003903\" to=\"30003885\"/>\r\n    <row from=\"30003903\" to=\"30003904\"/>\r\n    <row from=\"30003903\" to=\"30003906\"/>\r\n    <row from=\"30003903\" to=\"30003909\"/>\r\n    <row from=\"30003904\" to=\"30003903\"/>\r\n    <row from=\"30003904\" to=\"30003905\"/>\r\n    <row from=\"30003904\" to=\"30003907\"/>\r\n    <row from=\"30003905\" to=\"30003904\"/>\r\n    <row from=\"30003905\" to=\"30003908\"/>\r\n    <row from=\"30003905\" to=\"30003909\"/>\r\n    <row from=\"30003906\" to=\"30003903\"/>\r\n    <row from=\"30003907\" to=\"30003904\"/>\r\n    <row from=\"30003907\" to=\"30003916\"/>\r\n    <row from=\"30003908\" to=\"30003905\"/>\r\n    <row from=\"30003908\" to=\"30003909\"/>\r\n    <row from=\"30003909\" to=\"30003903\"/>\r\n    <row from=\"30003909\" to=\"30003905\"/>\r\n    <row from=\"30003909\" to=\"30003908\"/>\r\n    <row from=\"30003909\" to=\"30003910\"/>\r\n    <row from=\"30003910\" to=\"30003909\"/>\r\n    <row from=\"30003911\" to=\"30003881\"/>\r\n    <row from=\"30003911\" to=\"30003912\"/>\r\n    <row from=\"30003911\" to=\"30003914\"/>\r\n    <row from=\"30003911\" to=\"30003916\"/>\r\n    <row from=\"30003912\" to=\"30003911\"/>\r\n    <row from=\"30003912\" to=\"30003913\"/>\r\n    <row from=\"30003912\" to=\"30003914\"/>\r\n    <row from=\"30003913\" to=\"30003912\"/>\r\n    <row from=\"30003913\" to=\"30003915\"/>\r\n    <row from=\"30003914\" to=\"30003911\"/>\r\n    <row from=\"30003914\" to=\"30003912\"/>\r\n    <row from=\"30003915\" to=\"30003913\"/>\r\n    <row from=\"30003915\" to=\"30003916\"/>\r\n    <row from=\"30003916\" to=\"30003907\"/>\r\n    <row from=\"30003916\" to=\"30003911\"/>\r\n    <row from=\"30003916\" to=\"30003915\"/>\r\n    <row from=\"30003917\" to=\"30003900\"/>\r\n    <row from=\"30003917\" to=\"30003918\"/>\r\n    <row from=\"30003917\" to=\"30003919\"/>\r\n    <row from=\"30003917\" to=\"30003922\"/>\r\n    <row from=\"30003918\" to=\"30003917\"/>\r\n    <row from=\"30003918\" to=\"30003921\"/>\r\n    <row from=\"30003919\" to=\"30003917\"/>\r\n    <row from=\"30003919\" to=\"30003920\"/>\r\n    <row from=\"30003920\" to=\"30003919\"/>\r\n    <row from=\"30003920\" to=\"30003923\"/>\r\n    <row from=\"30003920\" to=\"30003930\"/>\r\n    <row from=\"30003921\" to=\"30003918\"/>\r\n    <row from=\"30003922\" to=\"30003917\"/>\r\n    <row from=\"30003922\" to=\"30005062\"/>\r\n    <row from=\"30003923\" to=\"30003920\"/>\r\n    <row from=\"30003923\" to=\"30003924\"/>\r\n    <row from=\"30003923\" to=\"30003925\"/>\r\n    <row from=\"30003924\" to=\"30003923\"/>\r\n    <row from=\"30003925\" to=\"30003923\"/>\r\n    <row from=\"30003925\" to=\"30003926\"/>\r\n    <row from=\"30003925\" to=\"30003927\"/>\r\n    <row from=\"30003926\" to=\"30003925\"/>\r\n    <row from=\"30003927\" to=\"30003925\"/>\r\n    <row from=\"30003927\" to=\"30003928\"/>\r\n    <row from=\"30003928\" to=\"30003927\"/>\r\n    <row from=\"30003928\" to=\"30003929\"/>\r\n    <row from=\"30003928\" to=\"30003936\"/>\r\n    <row from=\"30003929\" to=\"30003928\"/>\r\n    <row from=\"30003930\" to=\"30003920\"/>\r\n    <row from=\"30003930\" to=\"30003931\"/>\r\n    <row from=\"30003930\" to=\"30003932\"/>\r\n    <row from=\"30003931\" to=\"30003930\"/>\r\n    <row from=\"30003931\" to=\"30003932\"/>\r\n    <row from=\"30003931\" to=\"30003935\"/>\r\n    <row from=\"30003932\" to=\"30003930\"/>\r\n    <row from=\"30003932\" to=\"30003931\"/>\r\n    <row from=\"30003932\" to=\"30003933\"/>\r\n    <row from=\"30003932\" to=\"30003934\"/>\r\n    <row from=\"30003933\" to=\"30003932\"/>\r\n    <row from=\"30003933\" to=\"30003935\"/>\r\n    <row from=\"30003934\" to=\"30003932\"/>\r\n    <row from=\"30003935\" to=\"30003931\"/>\r\n    <row from=\"30003935\" to=\"30003933\"/>\r\n    <row from=\"30003936\" to=\"30003928\"/>\r\n    <row from=\"30003936\" to=\"30003937\"/>\r\n    <row from=\"30003936\" to=\"30003939\"/>\r\n    <row from=\"30003936\" to=\"30003940\"/>\r\n    <row from=\"30003937\" to=\"30003936\"/>\r\n    <row from=\"30003937\" to=\"30003938\"/>\r\n    <row from=\"30003938\" to=\"30003937\"/>\r\n    <row from=\"30003938\" to=\"30003940\"/>\r\n    <row from=\"30003939\" to=\"30003936\"/>\r\n    <row from=\"30003940\" to=\"30003936\"/>\r\n    <row from=\"30003940\" to=\"30003938\"/>\r\n    <row from=\"30003940\" to=\"30003941\"/>\r\n    <row from=\"30003941\" to=\"30003940\"/>\r\n    <row from=\"30003941\" to=\"30004301\"/>\r\n    <row from=\"30003942\" to=\"30003887\"/>\r\n    <row from=\"30003942\" to=\"30003943\"/>\r\n    <row from=\"30003942\" to=\"30003944\"/>\r\n    <row from=\"30003942\" to=\"30003946\"/>\r\n    <row from=\"30003943\" to=\"30003942\"/>\r\n    <row from=\"30003943\" to=\"30003944\"/>\r\n    <row from=\"30003943\" to=\"30003945\"/>\r\n    <row from=\"30003943\" to=\"30003946\"/>\r\n    <row from=\"30003944\" to=\"30003942\"/>\r\n    <row from=\"30003944\" to=\"30003943\"/>\r\n    <row from=\"30003945\" to=\"30003943\"/>\r\n    <row from=\"30003945\" to=\"30003947\"/>\r\n    <row from=\"30003946\" to=\"30003942\"/>\r\n    <row from=\"30003946\" to=\"30003943\"/>\r\n    <row from=\"30003947\" to=\"30003945\"/>\r\n    <row from=\"30003947\" to=\"30003948\"/>\r\n    <row from=\"30003948\" to=\"30003947\"/>\r\n    <row from=\"30003948\" to=\"30003949\"/>\r\n    <row from=\"30003948\" to=\"30003951\"/>\r\n    <row from=\"30003949\" to=\"30003948\"/>\r\n    <row from=\"30003949\" to=\"30003950\"/>\r\n    <row from=\"30003949\" to=\"30003951\"/>\r\n    <row from=\"30003950\" to=\"30003949\"/>\r\n    <row from=\"30003950\" to=\"30003953\"/>\r\n    <row from=\"30003950\" to=\"30003968\"/>\r\n    <row from=\"30003950\" to=\"30003984\"/>\r\n    <row from=\"30003951\" to=\"30003948\"/>\r\n    <row from=\"30003951\" to=\"30003949\"/>\r\n    <row from=\"30003951\" to=\"30003952\"/>\r\n    <row from=\"30003951\" to=\"30003962\"/>\r\n    <row from=\"30003952\" to=\"30003951\"/>\r\n    <row from=\"30003953\" to=\"30003950\"/>\r\n    <row from=\"30003953\" to=\"30003954\"/>\r\n    <row from=\"30003953\" to=\"30003978\"/>\r\n    <row from=\"30003954\" to=\"30003953\"/>\r\n    <row from=\"30003954\" to=\"30003955\"/>\r\n    <row from=\"30003954\" to=\"30003956\"/>\r\n    <row from=\"30003954\" to=\"30003958\"/>\r\n    <row from=\"30003954\" to=\"30003960\"/>\r\n    <row from=\"30003955\" to=\"30003954\"/>\r\n    <row from=\"30003955\" to=\"30003961\"/>\r\n    <row from=\"30003956\" to=\"30003954\"/>\r\n    <row from=\"30003956\" to=\"30003957\"/>\r\n    <row from=\"30003956\" to=\"30003960\"/>\r\n    <row from=\"30003956\" to=\"30003961\"/>\r\n    <row from=\"30003957\" to=\"30003956\"/>\r\n    <row from=\"30003957\" to=\"30003959\"/>\r\n    <row from=\"30003957\" to=\"30003960\"/>\r\n    <row from=\"30003957\" to=\"30004019\"/>\r\n    <row from=\"30003958\" to=\"30003954\"/>\r\n    <row from=\"30003958\" to=\"30003960\"/>\r\n    <row from=\"30003959\" to=\"30003957\"/>\r\n    <row from=\"30003960\" to=\"30003954\"/>\r\n    <row from=\"30003960\" to=\"30003956\"/>\r\n    <row from=\"30003960\" to=\"30003957\"/>\r\n    <row from=\"30003960\" to=\"30003958\"/>\r\n    <row from=\"30003961\" to=\"30003955\"/>\r\n    <row from=\"30003961\" to=\"30003956\"/>\r\n    <row from=\"30003962\" to=\"30003951\"/>\r\n    <row from=\"30003962\" to=\"30003963\"/>\r\n    <row from=\"30003963\" to=\"30003962\"/>\r\n    <row from=\"30003963\" to=\"30003964\"/>\r\n    <row from=\"30003964\" to=\"30003963\"/>\r\n    <row from=\"30003964\" to=\"30003965\"/>\r\n    <row from=\"30003965\" to=\"30003964\"/>\r\n    <row from=\"30003965\" to=\"30003966\"/>\r\n    <row from=\"30003966\" to=\"30003965\"/>\r\n    <row from=\"30003966\" to=\"30003967\"/>\r\n    <row from=\"30003967\" to=\"30003966\"/>\r\n    <row from=\"30003967\" to=\"30004706\"/>\r\n    <row from=\"30003968\" to=\"30003950\"/>\r\n    <row from=\"30003968\" to=\"30003969\"/>\r\n    <row from=\"30003968\" to=\"30003971\"/>\r\n    <row from=\"30003968\" to=\"30003974\"/>\r\n    <row from=\"30003969\" to=\"30003968\"/>\r\n    <row from=\"30003969\" to=\"30003970\"/>\r\n    <row from=\"30003969\" to=\"30003971\"/>\r\n    <row from=\"30003970\" to=\"30003969\"/>\r\n    <row from=\"30003970\" to=\"30003976\"/>\r\n    <row from=\"30003971\" to=\"30003968\"/>\r\n    <row from=\"30003971\" to=\"30003969\"/>\r\n    <row from=\"30003971\" to=\"30003972\"/>\r\n    <row from=\"30003971\" to=\"30003973\"/>\r\n    <row from=\"30003972\" to=\"30003971\"/>\r\n    <row from=\"30003973\" to=\"30003971\"/>\r\n    <row from=\"30003973\" to=\"30003974\"/>\r\n    <row from=\"30003973\" to=\"30003975\"/>\r\n    <row from=\"30003974\" to=\"30003968\"/>\r\n    <row from=\"30003974\" to=\"30003973\"/>\r\n    <row from=\"30003975\" to=\"30003973\"/>\r\n    <row from=\"30003975\" to=\"30003977\"/>\r\n    <row from=\"30003976\" to=\"30003970\"/>\r\n    <row from=\"30003977\" to=\"30003975\"/>\r\n    <row from=\"30003978\" to=\"30003953\"/>\r\n    <row from=\"30003978\" to=\"30003979\"/>\r\n    <row from=\"30003978\" to=\"30003981\"/>\r\n    <row from=\"30003979\" to=\"30003978\"/>\r\n    <row from=\"30003979\" to=\"30003980\"/>\r\n    <row from=\"30003979\" to=\"30003981\"/>\r\n    <row from=\"30003979\" to=\"30003983\"/>\r\n    <row from=\"30003980\" to=\"30003979\"/>\r\n    <row from=\"30003980\" to=\"30003982\"/>\r\n    <row from=\"30003981\" to=\"30003978\"/>\r\n    <row from=\"30003981\" to=\"30003979\"/>\r\n    <row from=\"30003981\" to=\"30003990\"/>\r\n    <row from=\"30003982\" to=\"30003980\"/>\r\n    <row from=\"30003982\" to=\"30003996\"/>\r\n    <row from=\"30003982\" to=\"30004003\"/>\r\n    <row from=\"30003983\" to=\"30003979\"/>\r\n    <row from=\"30003984\" to=\"30003950\"/>\r\n    <row from=\"30003984\" to=\"30003985\"/>\r\n    <row from=\"30003984\" to=\"30003989\"/>\r\n    <row from=\"30003985\" to=\"30003984\"/>\r\n    <row from=\"30003985\" to=\"30003986\"/>\r\n    <row from=\"30003985\" to=\"30003989\"/>\r\n    <row from=\"30003986\" to=\"30003985\"/>\r\n    <row from=\"30003986\" to=\"30003987\"/>\r\n    <row from=\"30003987\" to=\"30003986\"/>\r\n    <row from=\"30003987\" to=\"30003988\"/>\r\n    <row from=\"30003987\" to=\"30003989\"/>\r\n    <row from=\"30003988\" to=\"30003987\"/>\r\n    <row from=\"30003989\" to=\"30003984\"/>\r\n    <row from=\"30003989\" to=\"30003985\"/>\r\n    <row from=\"30003989\" to=\"30003987\"/>\r\n    <row from=\"30003990\" to=\"30003981\"/>\r\n    <row from=\"30003990\" to=\"30003991\"/>\r\n    <row from=\"30003991\" to=\"30003990\"/>\r\n    <row from=\"30003991\" to=\"30003992\"/>\r\n    <row from=\"30003991\" to=\"30003993\"/>\r\n    <row from=\"30003991\" to=\"30003995\"/>\r\n    <row from=\"30003992\" to=\"30003991\"/>\r\n    <row from=\"30003992\" to=\"30003994\"/>\r\n    <row from=\"30003992\" to=\"30003995\"/>\r\n    <row from=\"30003993\" to=\"30003991\"/>\r\n    <row from=\"30003994\" to=\"30003992\"/>\r\n    <row from=\"30003995\" to=\"30003991\"/>\r\n    <row from=\"30003995\" to=\"30003992\"/>\r\n    <row from=\"30003995\" to=\"30004023\"/>\r\n    <row from=\"30003996\" to=\"30003982\"/>\r\n    <row from=\"30003996\" to=\"30003997\"/>\r\n    <row from=\"30003996\" to=\"30003998\"/>\r\n    <row from=\"30003996\" to=\"30004001\"/>\r\n    <row from=\"30003997\" to=\"30003996\"/>\r\n    <row from=\"30003997\" to=\"30003998\"/>\r\n    <row from=\"30003997\" to=\"30004002\"/>\r\n    <row from=\"30003998\" to=\"30003996\"/>\r\n    <row from=\"30003998\" to=\"30003997\"/>\r\n    <row from=\"30003998\" to=\"30003999\"/>\r\n    <row from=\"30003999\" to=\"30003998\"/>\r\n    <row from=\"30003999\" to=\"30004000\"/>\r\n    <row from=\"30004000\" to=\"30003999\"/>\r\n    <row from=\"30004001\" to=\"30003996\"/>\r\n    <row from=\"30004002\" to=\"30003997\"/>\r\n    <row from=\"30004003\" to=\"30003982\"/>\r\n    <row from=\"30004003\" to=\"30004004\"/>\r\n    <row from=\"30004003\" to=\"30004006\"/>\r\n    <row from=\"30004003\" to=\"30004007\"/>\r\n    <row from=\"30004004\" to=\"30004003\"/>\r\n    <row from=\"30004004\" to=\"30004005\"/>\r\n    <row from=\"30004004\" to=\"30004007\"/>\r\n    <row from=\"30004004\" to=\"30004008\"/>\r\n    <row from=\"30004004\" to=\"30004010\"/>\r\n    <row from=\"30004005\" to=\"30004004\"/>\r\n    <row from=\"30004006\" to=\"30004003\"/>\r\n    <row from=\"30004007\" to=\"30004003\"/>\r\n    <row from=\"30004007\" to=\"30004004\"/>\r\n    <row from=\"30004008\" to=\"30004004\"/>\r\n    <row from=\"30004008\" to=\"30004009\"/>\r\n    <row from=\"30004009\" to=\"30001260\"/>\r\n    <row from=\"30004009\" to=\"30004008\"/>\r\n    <row from=\"30004009\" to=\"30004011\"/>\r\n    <row from=\"30004009\" to=\"30004012\"/>\r\n    <row from=\"30004010\" to=\"30004004\"/>\r\n    <row from=\"30004010\" to=\"30004012\"/>\r\n    <row from=\"30004011\" to=\"30004009\"/>\r\n    <row from=\"30004011\" to=\"30004031\"/>\r\n    <row from=\"30004012\" to=\"30004009\"/>\r\n    <row from=\"30004012\" to=\"30004010\"/>\r\n    <row from=\"30004012\" to=\"30004758\"/>\r\n    <row from=\"30004013\" to=\"30004014\"/>\r\n    <row from=\"30004013\" to=\"30004710\"/>\r\n    <row from=\"30004014\" to=\"30004013\"/>\r\n    <row from=\"30004014\" to=\"30004015\"/>\r\n    <row from=\"30004014\" to=\"30004018\"/>\r\n    <row from=\"30004015\" to=\"30004014\"/>\r\n    <row from=\"30004015\" to=\"30004016\"/>\r\n    <row from=\"30004015\" to=\"30004018\"/>\r\n    <row from=\"30004016\" to=\"30004015\"/>\r\n    <row from=\"30004016\" to=\"30004017\"/>\r\n    <row from=\"30004017\" to=\"30004016\"/>\r\n    <row from=\"30004017\" to=\"30004025\"/>\r\n    <row from=\"30004018\" to=\"30004014\"/>\r\n    <row from=\"30004018\" to=\"30004015\"/>\r\n    <row from=\"30004019\" to=\"30003892\"/>\r\n    <row from=\"30004019\" to=\"30003957\"/>\r\n    <row from=\"30004019\" to=\"30004020\"/>\r\n    <row from=\"30004019\" to=\"30004022\"/>\r\n    <row from=\"30004019\" to=\"30004023\"/>\r\n    <row from=\"30004020\" to=\"30004019\"/>\r\n    <row from=\"30004020\" to=\"30004021\"/>\r\n    <row from=\"30004020\" to=\"30004022\"/>\r\n    <row from=\"30004021\" to=\"30004020\"/>\r\n    <row from=\"30004021\" to=\"30004023\"/>\r\n    <row from=\"30004022\" to=\"30004019\"/>\r\n    <row from=\"30004022\" to=\"30004020\"/>\r\n    <row from=\"30004023\" to=\"30003995\"/>\r\n    <row from=\"30004023\" to=\"30004019\"/>\r\n    <row from=\"30004023\" to=\"30004021\"/>\r\n    <row from=\"30004023\" to=\"30004024\"/>\r\n    <row from=\"30004024\" to=\"30004023\"/>\r\n    <row from=\"30004025\" to=\"30004017\"/>\r\n    <row from=\"30004025\" to=\"30004026\"/>\r\n    <row from=\"30004025\" to=\"30004028\"/>\r\n    <row from=\"30004026\" to=\"30004025\"/>\r\n    <row from=\"30004026\" to=\"30004027\"/>\r\n    <row from=\"30004026\" to=\"30004029\"/>\r\n    <row from=\"30004027\" to=\"30004026\"/>\r\n    <row from=\"30004027\" to=\"30004798\"/>\r\n    <row from=\"30004028\" to=\"30004025\"/>\r\n    <row from=\"30004028\" to=\"30004764\"/>\r\n    <row from=\"30004029\" to=\"30004026\"/>\r\n    <row from=\"30004029\" to=\"30004030\"/>\r\n    <row from=\"30004030\" to=\"30004029\"/>\r\n    <row from=\"30004031\" to=\"30004011\"/>\r\n    <row from=\"30004031\" to=\"30004032\"/>\r\n    <row from=\"30004031\" to=\"30004033\"/>\r\n    <row from=\"30004032\" to=\"30004031\"/>\r\n    <row from=\"30004032\" to=\"30004033\"/>\r\n    <row from=\"30004032\" to=\"30004034\"/>\r\n    <row from=\"30004032\" to=\"30004035\"/>\r\n    <row from=\"30004032\" to=\"30004036\"/>\r\n    <row from=\"30004033\" to=\"30004031\"/>\r\n    <row from=\"30004033\" to=\"30004032\"/>\r\n    <row from=\"30004033\" to=\"30004036\"/>\r\n    <row from=\"30004034\" to=\"30004032\"/>\r\n    <row from=\"30004034\" to=\"30004036\"/>\r\n    <row from=\"30004035\" to=\"30004032\"/>\r\n    <row from=\"30004036\" to=\"30004032\"/>\r\n    <row from=\"30004036\" to=\"30004033\"/>\r\n    <row from=\"30004036\" to=\"30004034\"/>\r\n    <row from=\"30004037\" to=\"30003335\"/>\r\n    <row from=\"30004037\" to=\"30004038\"/>\r\n    <row from=\"30004038\" to=\"30004037\"/>\r\n    <row from=\"30004038\" to=\"30004039\"/>\r\n    <row from=\"30004038\" to=\"30004041\"/>\r\n    <row from=\"30004039\" to=\"30004038\"/>\r\n    <row from=\"30004039\" to=\"30004040\"/>\r\n    <row from=\"30004039\" to=\"30004535\"/>\r\n    <row from=\"30004040\" to=\"30004039\"/>\r\n    <row from=\"30004040\" to=\"30004041\"/>\r\n    <row from=\"30004040\" to=\"30004042\"/>\r\n    <row from=\"30004040\" to=\"30004589\"/>\r\n    <row from=\"30004041\" to=\"30004038\"/>\r\n    <row from=\"30004041\" to=\"30004040\"/>\r\n    <row from=\"30004041\" to=\"30004064\"/>\r\n    <row from=\"30004042\" to=\"30004040\"/>\r\n    <row from=\"30004042\" to=\"30004043\"/>\r\n    <row from=\"30004043\" to=\"30004042\"/>\r\n    <row from=\"30004043\" to=\"30004044\"/>\r\n    <row from=\"30004044\" to=\"30004043\"/>\r\n    <row from=\"30004044\" to=\"30004045\"/>\r\n    <row from=\"30004044\" to=\"30004046\"/>\r\n    <row from=\"30004044\" to=\"30004048\"/>\r\n    <row from=\"30004044\" to=\"30004050\"/>\r\n    <row from=\"30004045\" to=\"30004044\"/>\r\n    <row from=\"30004045\" to=\"30004046\"/>\r\n    <row from=\"30004045\" to=\"30004047\"/>\r\n    <row from=\"30004046\" to=\"30003841\"/>\r\n    <row from=\"30004046\" to=\"30004044\"/>\r\n    <row from=\"30004046\" to=\"30004045\"/>\r\n    <row from=\"30004047\" to=\"30004045\"/>\r\n    <row from=\"30004048\" to=\"30004044\"/>\r\n    <row from=\"30004048\" to=\"30004049\"/>\r\n    <row from=\"30004049\" to=\"30004048\"/>\r\n    <row from=\"30004050\" to=\"30004044\"/>\r\n    <row from=\"30004050\" to=\"30004051\"/>\r\n    <row from=\"30004050\" to=\"30004053\"/>\r\n    <row from=\"30004051\" to=\"30004050\"/>\r\n    <row from=\"30004051\" to=\"30004052\"/>\r\n    <row from=\"30004051\" to=\"30004053\"/>\r\n    <row from=\"30004051\" to=\"30004056\"/>\r\n    <row from=\"30004052\" to=\"30004051\"/>\r\n    <row from=\"30004052\" to=\"30004054\"/>\r\n    <row from=\"30004053\" to=\"30004050\"/>\r\n    <row from=\"30004053\" to=\"30004051\"/>\r\n    <row from=\"30004053\" to=\"30004055\"/>\r\n    <row from=\"30004054\" to=\"30004052\"/>\r\n    <row from=\"30004054\" to=\"30004056\"/>\r\n    <row from=\"30004055\" to=\"30004053\"/>\r\n    <row from=\"30004055\" to=\"30045307\"/>\r\n    <row from=\"30004056\" to=\"30004051\"/>\r\n    <row from=\"30004056\" to=\"30004054\"/>\r\n    <row from=\"30004056\" to=\"30004065\"/>\r\n    <row from=\"30004057\" to=\"30004058\"/>\r\n    <row from=\"30004057\" to=\"30004074\"/>\r\n    <row from=\"30004058\" to=\"30004057\"/>\r\n    <row from=\"30004058\" to=\"30004059\"/>\r\n    <row from=\"30004059\" to=\"30004058\"/>\r\n    <row from=\"30004059\" to=\"30004060\"/>\r\n    <row from=\"30004059\" to=\"30004061\"/>\r\n    <row from=\"30004059\" to=\"30004062\"/>\r\n    <row from=\"30004060\" to=\"30004059\"/>\r\n    <row from=\"30004060\" to=\"30004063\"/>\r\n    <row from=\"30004060\" to=\"30004064\"/>\r\n    <row from=\"30004061\" to=\"30004059\"/>\r\n    <row from=\"30004061\" to=\"30004063\"/>\r\n    <row from=\"30004062\" to=\"30004059\"/>\r\n    <row from=\"30004063\" to=\"30002046\"/>\r\n    <row from=\"30004063\" to=\"30004060\"/>\r\n    <row from=\"30004063\" to=\"30004061\"/>\r\n    <row from=\"30004064\" to=\"30004041\"/>\r\n    <row from=\"30004064\" to=\"30004060\"/>\r\n    <row from=\"30004065\" to=\"30004056\"/>\r\n    <row from=\"30004065\" to=\"30004066\"/>\r\n    <row from=\"30004065\" to=\"30004068\"/>\r\n    <row from=\"30004066\" to=\"30004065\"/>\r\n    <row from=\"30004066\" to=\"30004067\"/>\r\n    <row from=\"30004067\" to=\"30004066\"/>\r\n    <row from=\"30004067\" to=\"30004068\"/>\r\n    <row from=\"30004068\" to=\"30004065\"/>\r\n    <row from=\"30004068\" to=\"30004067\"/>\r\n    <row from=\"30004068\" to=\"30004069\"/>\r\n    <row from=\"30004068\" to=\"30004070\"/>\r\n    <row from=\"30004069\" to=\"30004068\"/>\r\n    <row from=\"30004069\" to=\"30004070\"/>\r\n    <row from=\"30004069\" to=\"30004076\"/>\r\n    <row from=\"30004070\" to=\"30003694\"/>\r\n    <row from=\"30004070\" to=\"30004068\"/>\r\n    <row from=\"30004070\" to=\"30004069\"/>\r\n    <row from=\"30004071\" to=\"30004072\"/>\r\n    <row from=\"30004071\" to=\"30004076\"/>\r\n    <row from=\"30004072\" to=\"30004071\"/>\r\n    <row from=\"30004072\" to=\"30004073\"/>\r\n    <row from=\"30004073\" to=\"30004072\"/>\r\n    <row from=\"30004073\" to=\"30004074\"/>\r\n    <row from=\"30004073\" to=\"30004075\"/>\r\n    <row from=\"30004073\" to=\"30004076\"/>\r\n    <row from=\"30004074\" to=\"30004057\"/>\r\n    <row from=\"30004074\" to=\"30004073\"/>\r\n    <row from=\"30004074\" to=\"30004075\"/>\r\n    <row from=\"30004075\" to=\"30004073\"/>\r\n    <row from=\"30004075\" to=\"30004074\"/>\r\n    <row from=\"30004075\" to=\"30004076\"/>\r\n    <row from=\"30004076\" to=\"30004069\"/>\r\n    <row from=\"30004076\" to=\"30004071\"/>\r\n    <row from=\"30004076\" to=\"30004073\"/>\r\n    <row from=\"30004076\" to=\"30004075\"/>\r\n    <row from=\"30004077\" to=\"30003473\"/>\r\n    <row from=\"30004077\" to=\"30004082\"/>\r\n    <row from=\"30004078\" to=\"30004079\"/>\r\n    <row from=\"30004078\" to=\"30004081\"/>\r\n    <row from=\"30004078\" to=\"30004082\"/>\r\n    <row from=\"30004078\" to=\"30004083\"/>\r\n    <row from=\"30004079\" to=\"30004078\"/>\r\n    <row from=\"30004079\" to=\"30004080\"/>\r\n    <row from=\"30004080\" to=\"30002282\"/>\r\n    <row from=\"30004080\" to=\"30003503\"/>\r\n    <row from=\"30004080\" to=\"30003508\"/>\r\n    <row from=\"30004080\" to=\"30004079\"/>\r\n    <row from=\"30004081\" to=\"30002197\"/>\r\n    <row from=\"30004081\" to=\"30004078\"/>\r\n    <row from=\"30004081\" to=\"30004083\"/>\r\n    <row from=\"30004081\" to=\"30004085\"/>\r\n    <row from=\"30004082\" to=\"30004077\"/>\r\n    <row from=\"30004082\" to=\"30004078\"/>\r\n    <row from=\"30004083\" to=\"30004078\"/>\r\n    <row from=\"30004083\" to=\"30004081\"/>\r\n    <row from=\"30004083\" to=\"30004113\"/>\r\n    <row from=\"30004083\" to=\"30005192\"/>\r\n    <row from=\"30004084\" to=\"30004085\"/>\r\n    <row from=\"30004084\" to=\"30004086\"/>\r\n    <row from=\"30004084\" to=\"30004087\"/>\r\n    <row from=\"30004084\" to=\"30004090\"/>\r\n    <row from=\"30004085\" to=\"30004081\"/>\r\n    <row from=\"30004085\" to=\"30004084\"/>\r\n    <row from=\"30004085\" to=\"30004088\"/>\r\n    <row from=\"30004086\" to=\"30004084\"/>\r\n    <row from=\"30004087\" to=\"30004084\"/>\r\n    <row from=\"30004087\" to=\"30004089\"/>\r\n    <row from=\"30004087\" to=\"30004096\"/>\r\n    <row from=\"30004088\" to=\"30004085\"/>\r\n    <row from=\"30004089\" to=\"30004087\"/>\r\n    <row from=\"30004089\" to=\"30004140\"/>\r\n    <row from=\"30004090\" to=\"30004084\"/>\r\n    <row from=\"30004090\" to=\"30004129\"/>\r\n    <row from=\"30004091\" to=\"30001652\"/>\r\n    <row from=\"30004091\" to=\"30004092\"/>\r\n    <row from=\"30004092\" to=\"30004091\"/>\r\n    <row from=\"30004092\" to=\"30004093\"/>\r\n    <row from=\"30004092\" to=\"30004094\"/>\r\n    <row from=\"30004092\" to=\"30004150\"/>\r\n    <row from=\"30004093\" to=\"30004092\"/>\r\n    <row from=\"30004093\" to=\"30004153\"/>\r\n    <row from=\"30004094\" to=\"30004092\"/>\r\n    <row from=\"30004094\" to=\"30004095\"/>\r\n    <row from=\"30004094\" to=\"30004130\"/>\r\n    <row from=\"30004095\" to=\"30002188\"/>\r\n    <row from=\"30004095\" to=\"30004094\"/>\r\n    <row from=\"30004095\" to=\"30004096\"/>\r\n    <row from=\"30004095\" to=\"30004097\"/>\r\n    <row from=\"30004096\" to=\"30004087\"/>\r\n    <row from=\"30004096\" to=\"30004095\"/>\r\n    <row from=\"30004097\" to=\"30004095\"/>\r\n    <row from=\"30004097\" to=\"30005036\"/>\r\n    <row from=\"30004097\" to=\"30005044\"/>\r\n    <row from=\"30004098\" to=\"30001688\"/>\r\n    <row from=\"30004098\" to=\"30004099\"/>\r\n    <row from=\"30004098\" to=\"30004103\"/>\r\n    <row from=\"30004098\" to=\"30004131\"/>\r\n    <row from=\"30004099\" to=\"30004098\"/>\r\n    <row from=\"30004099\" to=\"30004100\"/>\r\n    <row from=\"30004099\" to=\"30004101\"/>\r\n    <row from=\"30004099\" to=\"30004102\"/>\r\n    <row from=\"30004100\" to=\"30004099\"/>\r\n    <row from=\"30004101\" to=\"30004099\"/>\r\n    <row from=\"30004101\" to=\"30004102\"/>\r\n    <row from=\"30004101\" to=\"30005041\"/>\r\n    <row from=\"30004102\" to=\"30004099\"/>\r\n    <row from=\"30004102\" to=\"30004101\"/>\r\n    <row from=\"30004102\" to=\"30015042\"/>\r\n    <row from=\"30004103\" to=\"30004098\"/>\r\n    <row from=\"30004104\" to=\"30004105\"/>\r\n    <row from=\"30004104\" to=\"30004106\"/>\r\n    <row from=\"30004104\" to=\"30005227\"/>\r\n    <row from=\"30004105\" to=\"30004104\"/>\r\n    <row from=\"30004106\" to=\"30004104\"/>\r\n    <row from=\"30004106\" to=\"30004107\"/>\r\n    <row from=\"30004106\" to=\"30004108\"/>\r\n    <row from=\"30004106\" to=\"30004109\"/>\r\n    <row from=\"30004107\" to=\"30004106\"/>\r\n    <row from=\"30004107\" to=\"30004112\"/>\r\n    <row from=\"30004108\" to=\"30004106\"/>\r\n    <row from=\"30004108\" to=\"30004109\"/>\r\n    <row from=\"30004109\" to=\"30004106\"/>\r\n    <row from=\"30004109\" to=\"30004108\"/>\r\n    <row from=\"30004110\" to=\"30004111\"/>\r\n    <row from=\"30004111\" to=\"30004110\"/>\r\n    <row from=\"30004111\" to=\"30004113\"/>\r\n    <row from=\"30004112\" to=\"30004107\"/>\r\n    <row from=\"30004112\" to=\"30004114\"/>\r\n    <row from=\"30004113\" to=\"30004083\"/>\r\n    <row from=\"30004113\" to=\"30004111\"/>\r\n    <row from=\"30004113\" to=\"30004115\"/>\r\n    <row from=\"30004114\" to=\"30004112\"/>\r\n    <row from=\"30004114\" to=\"30004115\"/>\r\n    <row from=\"30004115\" to=\"30004113\"/>\r\n    <row from=\"30004115\" to=\"30004114\"/>\r\n    <row from=\"30004115\" to=\"30005192\"/>\r\n    <row from=\"30004116\" to=\"30004117\"/>\r\n    <row from=\"30004116\" to=\"30004119\"/>\r\n    <row from=\"30004116\" to=\"30005248\"/>\r\n    <row from=\"30004117\" to=\"30004116\"/>\r\n    <row from=\"30004117\" to=\"30004118\"/>\r\n    <row from=\"30004117\" to=\"30004119\"/>\r\n    <row from=\"30004118\" to=\"30004117\"/>\r\n    <row from=\"30004118\" to=\"30004120\"/>\r\n    <row from=\"30004119\" to=\"30004116\"/>\r\n    <row from=\"30004119\" to=\"30004117\"/>\r\n    <row from=\"30004119\" to=\"30004121\"/>\r\n    <row from=\"30004120\" to=\"30004118\"/>\r\n    <row from=\"30004120\" to=\"30005241\"/>\r\n    <row from=\"30004121\" to=\"30004119\"/>\r\n    <row from=\"30004121\" to=\"30004136\"/>\r\n    <row from=\"30004122\" to=\"30004123\"/>\r\n    <row from=\"30004122\" to=\"30004124\"/>\r\n    <row from=\"30004122\" to=\"30004125\"/>\r\n    <row from=\"30004122\" to=\"30004126\"/>\r\n    <row from=\"30004122\" to=\"30005227\"/>\r\n    <row from=\"30004123\" to=\"30004122\"/>\r\n    <row from=\"30004123\" to=\"30004124\"/>\r\n    <row from=\"30004123\" to=\"30004125\"/>\r\n    <row from=\"30004123\" to=\"30004126\"/>\r\n    <row from=\"30004124\" to=\"30004122\"/>\r\n    <row from=\"30004124\" to=\"30004123\"/>\r\n    <row from=\"30004124\" to=\"30004125\"/>\r\n    <row from=\"30004124\" to=\"30004126\"/>\r\n    <row from=\"30004125\" to=\"30004122\"/>\r\n    <row from=\"30004125\" to=\"30004123\"/>\r\n    <row from=\"30004125\" to=\"30004124\"/>\r\n    <row from=\"30004125\" to=\"30004126\"/>\r\n    <row from=\"30004126\" to=\"30004122\"/>\r\n    <row from=\"30004126\" to=\"30004123\"/>\r\n    <row from=\"30004126\" to=\"30004124\"/>\r\n    <row from=\"30004126\" to=\"30004125\"/>\r\n    <row from=\"30004126\" to=\"30004127\"/>\r\n    <row from=\"30004127\" to=\"30004126\"/>\r\n    <row from=\"30004127\" to=\"30004128\"/>\r\n    <row from=\"30004127\" to=\"30004129\"/>\r\n    <row from=\"30004128\" to=\"30004127\"/>\r\n    <row from=\"30004128\" to=\"30004129\"/>\r\n    <row from=\"30004129\" to=\"30004090\"/>\r\n    <row from=\"30004129\" to=\"30004127\"/>\r\n    <row from=\"30004129\" to=\"30004128\"/>\r\n    <row from=\"30004130\" to=\"30004094\"/>\r\n    <row from=\"30004130\" to=\"30004131\"/>\r\n    <row from=\"30004131\" to=\"30004098\"/>\r\n    <row from=\"30004131\" to=\"30004130\"/>\r\n    <row from=\"30004131\" to=\"30004132\"/>\r\n    <row from=\"30004131\" to=\"30004133\"/>\r\n    <row from=\"30004132\" to=\"30004131\"/>\r\n    <row from=\"30004132\" to=\"30004133\"/>\r\n    <row from=\"30004133\" to=\"30004131\"/>\r\n    <row from=\"30004133\" to=\"30004132\"/>\r\n    <row from=\"30004133\" to=\"30004134\"/>\r\n    <row from=\"30004133\" to=\"30004135\"/>\r\n    <row from=\"30004134\" to=\"30004133\"/>\r\n    <row from=\"30004134\" to=\"30004135\"/>\r\n    <row from=\"30004134\" to=\"30004142\"/>\r\n    <row from=\"30004134\" to=\"30004155\"/>\r\n    <row from=\"30004135\" to=\"30004133\"/>\r\n    <row from=\"30004135\" to=\"30004134\"/>\r\n    <row from=\"30004136\" to=\"30003480\"/>\r\n    <row from=\"30004136\" to=\"30004121\"/>\r\n    <row from=\"30004136\" to=\"30004137\"/>\r\n    <row from=\"30004136\" to=\"30004138\"/>\r\n    <row from=\"30004137\" to=\"30004136\"/>\r\n    <row from=\"30004137\" to=\"30004138\"/>\r\n    <row from=\"30004137\" to=\"30004139\"/>\r\n    <row from=\"30004138\" to=\"30004136\"/>\r\n    <row from=\"30004138\" to=\"30004137\"/>\r\n    <row from=\"30004139\" to=\"30004137\"/>\r\n    <row from=\"30004139\" to=\"30004140\"/>\r\n    <row from=\"30004139\" to=\"30004141\"/>\r\n    <row from=\"30004140\" to=\"30004089\"/>\r\n    <row from=\"30004140\" to=\"30004139\"/>\r\n    <row from=\"30004141\" to=\"30004139\"/>\r\n    <row from=\"30004142\" to=\"30004134\"/>\r\n    <row from=\"30004142\" to=\"30004143\"/>\r\n    <row from=\"30004143\" to=\"30004142\"/>\r\n    <row from=\"30004143\" to=\"30004144\"/>\r\n    <row from=\"30004144\" to=\"30004143\"/>\r\n    <row from=\"30004144\" to=\"30004145\"/>\r\n    <row from=\"30004145\" to=\"30004144\"/>\r\n    <row from=\"30004145\" to=\"30004146\"/>\r\n    <row from=\"30004146\" to=\"30004145\"/>\r\n    <row from=\"30004146\" to=\"30004147\"/>\r\n    <row from=\"30004147\" to=\"30004146\"/>\r\n    <row from=\"30004148\" to=\"30002279\"/>\r\n    <row from=\"30004148\" to=\"30004149\"/>\r\n    <row from=\"30004149\" to=\"30001652\"/>\r\n    <row from=\"30004149\" to=\"30004148\"/>\r\n    <row from=\"30004149\" to=\"30004150\"/>\r\n    <row from=\"30004149\" to=\"30004151\"/>\r\n    <row from=\"30004150\" to=\"30004092\"/>\r\n    <row from=\"30004150\" to=\"30004149\"/>\r\n    <row from=\"30004150\" to=\"30004151\"/>\r\n    <row from=\"30004150\" to=\"30004152\"/>\r\n    <row from=\"30004151\" to=\"30004149\"/>\r\n    <row from=\"30004151\" to=\"30004150\"/>\r\n    <row from=\"30004151\" to=\"30004153\"/>\r\n    <row from=\"30004152\" to=\"30002194\"/>\r\n    <row from=\"30004152\" to=\"30004150\"/>\r\n    <row from=\"30004152\" to=\"30004154\"/>\r\n    <row from=\"30004153\" to=\"30004093\"/>\r\n    <row from=\"30004153\" to=\"30004151\"/>\r\n    <row from=\"30004154\" to=\"30004152\"/>\r\n    <row from=\"30004155\" to=\"30004134\"/>\r\n    <row from=\"30004155\" to=\"30004156\"/>\r\n    <row from=\"30004155\" to=\"30004157\"/>\r\n    <row from=\"30004156\" to=\"30004155\"/>\r\n    <row from=\"30004156\" to=\"30004158\"/>\r\n    <row from=\"30004156\" to=\"30004160\"/>\r\n    <row from=\"30004157\" to=\"30004155\"/>\r\n    <row from=\"30004157\" to=\"30004159\"/>\r\n    <row from=\"30004158\" to=\"30004156\"/>\r\n    <row from=\"30004159\" to=\"30004157\"/>\r\n    <row from=\"30004160\" to=\"30004156\"/>\r\n    <row from=\"30004161\" to=\"30003209\"/>\r\n    <row from=\"30004161\" to=\"30004162\"/>\r\n    <row from=\"30004161\" to=\"30004164\"/>\r\n    <row from=\"30004162\" to=\"30004161\"/>\r\n    <row from=\"30004162\" to=\"30004163\"/>\r\n    <row from=\"30004162\" to=\"30004166\"/>\r\n    <row from=\"30004163\" to=\"30004162\"/>\r\n    <row from=\"30004163\" to=\"30004164\"/>\r\n    <row from=\"30004163\" to=\"30004166\"/>\r\n    <row from=\"30004164\" to=\"30001774\"/>\r\n    <row from=\"30004164\" to=\"30004161\"/>\r\n    <row from=\"30004164\" to=\"30004163\"/>\r\n    <row from=\"30004164\" to=\"30004165\"/>\r\n    <row from=\"30004165\" to=\"30004164\"/>\r\n    <row from=\"30004165\" to=\"30004167\"/>\r\n    <row from=\"30004166\" to=\"30004162\"/>\r\n    <row from=\"30004166\" to=\"30004163\"/>\r\n    <row from=\"30004167\" to=\"30004165\"/>\r\n    <row from=\"30004167\" to=\"30004168\"/>\r\n    <row from=\"30004167\" to=\"30004169\"/>\r\n    <row from=\"30004168\" to=\"30004167\"/>\r\n    <row from=\"30004168\" to=\"30004169\"/>\r\n    <row from=\"30004168\" to=\"30004170\"/>\r\n    <row from=\"30004168\" to=\"30004172\"/>\r\n    <row from=\"30004169\" to=\"30004167\"/>\r\n    <row from=\"30004169\" to=\"30004168\"/>\r\n    <row from=\"30004169\" to=\"30004171\"/>\r\n    <row from=\"30004169\" to=\"30004174\"/>\r\n    <row from=\"30004170\" to=\"30003227\"/>\r\n    <row from=\"30004170\" to=\"30004168\"/>\r\n    <row from=\"30004170\" to=\"30004173\"/>\r\n    <row from=\"30004171\" to=\"30003228\"/>\r\n    <row from=\"30004171\" to=\"30004169\"/>\r\n    <row from=\"30004171\" to=\"30004172\"/>\r\n    <row from=\"30004171\" to=\"30004175\"/>\r\n    <row from=\"30004171\" to=\"30004176\"/>\r\n    <row from=\"30004171\" to=\"30004179\"/>\r\n    <row from=\"30004172\" to=\"30004168\"/>\r\n    <row from=\"30004172\" to=\"30004171\"/>\r\n    <row from=\"30004173\" to=\"30004170\"/>\r\n    <row from=\"30004174\" to=\"30004169\"/>\r\n    <row from=\"30004175\" to=\"30004171\"/>\r\n    <row from=\"30004175\" to=\"30004177\"/>\r\n    <row from=\"30004175\" to=\"30004190\"/>\r\n    <row from=\"30004176\" to=\"30004171\"/>\r\n    <row from=\"30004176\" to=\"30004183\"/>\r\n    <row from=\"30004177\" to=\"30004175\"/>\r\n    <row from=\"30004177\" to=\"30004178\"/>\r\n    <row from=\"30004177\" to=\"30004179\"/>\r\n    <row from=\"30004177\" to=\"30004180\"/>\r\n    <row from=\"30004177\" to=\"30004181\"/>\r\n    <row from=\"30004178\" to=\"30004177\"/>\r\n    <row from=\"30004178\" to=\"30004179\"/>\r\n    <row from=\"30004178\" to=\"30004181\"/>\r\n    <row from=\"30004178\" to=\"30004182\"/>\r\n    <row from=\"30004178\" to=\"30004196\"/>\r\n    <row from=\"30004179\" to=\"30004171\"/>\r\n    <row from=\"30004179\" to=\"30004177\"/>\r\n    <row from=\"30004179\" to=\"30004178\"/>\r\n    <row from=\"30004179\" to=\"30004180\"/>\r\n    <row from=\"30004179\" to=\"30004181\"/>\r\n    <row from=\"30004179\" to=\"30004182\"/>\r\n    <row from=\"30004180\" to=\"30004177\"/>\r\n    <row from=\"30004180\" to=\"30004179\"/>\r\n    <row from=\"30004180\" to=\"30004181\"/>\r\n    <row from=\"30004181\" to=\"30004177\"/>\r\n    <row from=\"30004181\" to=\"30004178\"/>\r\n    <row from=\"30004181\" to=\"30004179\"/>\r\n    <row from=\"30004181\" to=\"30004180\"/>\r\n    <row from=\"30004181\" to=\"30004182\"/>\r\n    <row from=\"30004182\" to=\"30004178\"/>\r\n    <row from=\"30004182\" to=\"30004179\"/>\r\n    <row from=\"30004182\" to=\"30004181\"/>\r\n    <row from=\"30004183\" to=\"30004176\"/>\r\n    <row from=\"30004183\" to=\"30004184\"/>\r\n    <row from=\"30004183\" to=\"30004185\"/>\r\n    <row from=\"30004183\" to=\"30004188\"/>\r\n    <row from=\"30004184\" to=\"30004183\"/>\r\n    <row from=\"30004184\" to=\"30004186\"/>\r\n    <row from=\"30004185\" to=\"30004183\"/>\r\n    <row from=\"30004185\" to=\"30004187\"/>\r\n    <row from=\"30004186\" to=\"30004184\"/>\r\n    <row from=\"30004186\" to=\"30004188\"/>\r\n    <row from=\"30004187\" to=\"30004185\"/>\r\n    <row from=\"30004187\" to=\"30004189\"/>\r\n    <row from=\"30004188\" to=\"30004183\"/>\r\n    <row from=\"30004188\" to=\"30004186\"/>\r\n    <row from=\"30004189\" to=\"30004187\"/>\r\n    <row from=\"30004190\" to=\"30004175\"/>\r\n    <row from=\"30004190\" to=\"30004191\"/>\r\n    <row from=\"30004190\" to=\"30004195\"/>\r\n    <row from=\"30004191\" to=\"30004190\"/>\r\n    <row from=\"30004191\" to=\"30004192\"/>\r\n    <row from=\"30004191\" to=\"30004193\"/>\r\n    <row from=\"30004192\" to=\"30004191\"/>\r\n    <row from=\"30004192\" to=\"30004193\"/>\r\n    <row from=\"30004192\" to=\"30004195\"/>\r\n    <row from=\"30004193\" to=\"30004191\"/>\r\n    <row from=\"30004193\" to=\"30004192\"/>\r\n    <row from=\"30004193\" to=\"30004194\"/>\r\n    <row from=\"30004193\" to=\"30004195\"/>\r\n    <row from=\"30004194\" to=\"30004193\"/>\r\n    <row from=\"30004194\" to=\"30004200\"/>\r\n    <row from=\"30004195\" to=\"30004190\"/>\r\n    <row from=\"30004195\" to=\"30004192\"/>\r\n    <row from=\"30004195\" to=\"30004193\"/>\r\n    <row from=\"30004196\" to=\"30004178\"/>\r\n    <row from=\"30004196\" to=\"30004197\"/>\r\n    <row from=\"30004196\" to=\"30004198\"/>\r\n    <row from=\"30004197\" to=\"30004196\"/>\r\n    <row from=\"30004197\" to=\"30004198\"/>\r\n    <row from=\"30004198\" to=\"30004196\"/>\r\n    <row from=\"30004198\" to=\"30004197\"/>\r\n    <row from=\"30004198\" to=\"30004199\"/>\r\n    <row from=\"30004198\" to=\"30004200\"/>\r\n    <row from=\"30004199\" to=\"30004198\"/>\r\n    <row from=\"30004200\" to=\"30004194\"/>\r\n    <row from=\"30004200\" to=\"30004198\"/>\r\n    <row from=\"30004200\" to=\"30004201\"/>\r\n    <row from=\"30004200\" to=\"30004202\"/>\r\n    <row from=\"30004201\" to=\"30004200\"/>\r\n    <row from=\"30004201\" to=\"30004208\"/>\r\n    <row from=\"30004202\" to=\"30004200\"/>\r\n    <row from=\"30004202\" to=\"30004203\"/>\r\n    <row from=\"30004202\" to=\"30004205\"/>\r\n    <row from=\"30004203\" to=\"30004202\"/>\r\n    <row from=\"30004203\" to=\"30004204\"/>\r\n    <row from=\"30004203\" to=\"30004206\"/>\r\n    <row from=\"30004204\" to=\"30003241\"/>\r\n    <row from=\"30004204\" to=\"30004203\"/>\r\n    <row from=\"30004205\" to=\"30004202\"/>\r\n    <row from=\"30004205\" to=\"30004206\"/>\r\n    <row from=\"30004206\" to=\"30004203\"/>\r\n    <row from=\"30004206\" to=\"30004205\"/>\r\n    <row from=\"30004206\" to=\"30004207\"/>\r\n    <row from=\"30004206\" to=\"30004222\"/>\r\n    <row from=\"30004207\" to=\"30004206\"/>\r\n    <row from=\"30004207\" to=\"30004215\"/>\r\n    <row from=\"30004208\" to=\"30004201\"/>\r\n    <row from=\"30004208\" to=\"30004209\"/>\r\n    <row from=\"30004208\" to=\"30004214\"/>\r\n    <row from=\"30004209\" to=\"30004208\"/>\r\n    <row from=\"30004209\" to=\"30004210\"/>\r\n    <row from=\"30004209\" to=\"30004212\"/>\r\n    <row from=\"30004210\" to=\"30004209\"/>\r\n    <row from=\"30004210\" to=\"30004211\"/>\r\n    <row from=\"30004210\" to=\"30004213\"/>\r\n    <row from=\"30004211\" to=\"30004210\"/>\r\n    <row from=\"30004211\" to=\"30004212\"/>\r\n    <row from=\"30004212\" to=\"30004209\"/>\r\n    <row from=\"30004212\" to=\"30004211\"/>\r\n    <row from=\"30004212\" to=\"30004213\"/>\r\n    <row from=\"30004213\" to=\"30004210\"/>\r\n    <row from=\"30004213\" to=\"30004212\"/>\r\n    <row from=\"30004214\" to=\"30004208\"/>\r\n    <row from=\"30004215\" to=\"30004207\"/>\r\n    <row from=\"30004215\" to=\"30004216\"/>\r\n    <row from=\"30004215\" to=\"30004219\"/>\r\n    <row from=\"30004215\" to=\"30004221\"/>\r\n    <row from=\"30004216\" to=\"30004215\"/>\r\n    <row from=\"30004216\" to=\"30004217\"/>\r\n    <row from=\"30004217\" to=\"30004216\"/>\r\n    <row from=\"30004217\" to=\"30004218\"/>\r\n    <row from=\"30004217\" to=\"30004220\"/>\r\n    <row from=\"30004218\" to=\"30004217\"/>\r\n    <row from=\"30004219\" to=\"30004215\"/>\r\n    <row from=\"30004220\" to=\"30004217\"/>\r\n    <row from=\"30004221\" to=\"30004215\"/>\r\n    <row from=\"30004222\" to=\"30004206\"/>\r\n    <row from=\"30004222\" to=\"30004223\"/>\r\n    <row from=\"30004222\" to=\"30004225\"/>\r\n    <row from=\"30004223\" to=\"30004222\"/>\r\n    <row from=\"30004223\" to=\"30004224\"/>\r\n    <row from=\"30004223\" to=\"30004229\"/>\r\n    <row from=\"30004224\" to=\"30004223\"/>\r\n    <row from=\"30004225\" to=\"30004222\"/>\r\n    <row from=\"30004225\" to=\"30004226\"/>\r\n    <row from=\"30004225\" to=\"30004227\"/>\r\n    <row from=\"30004226\" to=\"30004225\"/>\r\n    <row from=\"30004227\" to=\"30004225\"/>\r\n    <row from=\"30004227\" to=\"30004228\"/>\r\n    <row from=\"30004228\" to=\"30003654\"/>\r\n    <row from=\"30004228\" to=\"30004227\"/>\r\n    <row from=\"30004229\" to=\"30004223\"/>\r\n    <row from=\"30004230\" to=\"30004231\"/>\r\n    <row from=\"30004230\" to=\"30004232\"/>\r\n    <row from=\"30004230\" to=\"30005274\"/>\r\n    <row from=\"30004231\" to=\"30004230\"/>\r\n    <row from=\"30004231\" to=\"30004234\"/>\r\n    <row from=\"30004231\" to=\"30004235\"/>\r\n    <row from=\"30004232\" to=\"30004230\"/>\r\n    <row from=\"30004232\" to=\"30004233\"/>\r\n    <row from=\"30004232\" to=\"30004235\"/>\r\n    <row from=\"30004233\" to=\"30003600\"/>\r\n    <row from=\"30004233\" to=\"30004232\"/>\r\n    <row from=\"30004233\" to=\"30004236\"/>\r\n    <row from=\"30004234\" to=\"30004231\"/>\r\n    <row from=\"30004234\" to=\"30004235\"/>\r\n    <row from=\"30004235\" to=\"30004231\"/>\r\n    <row from=\"30004235\" to=\"30004232\"/>\r\n    <row from=\"30004235\" to=\"30004234\"/>\r\n    <row from=\"30004236\" to=\"30004233\"/>\r\n    <row from=\"30004236\" to=\"30004237\"/>\r\n    <row from=\"30004236\" to=\"30004238\"/>\r\n    <row from=\"30004237\" to=\"30004236\"/>\r\n    <row from=\"30004237\" to=\"30004238\"/>\r\n    <row from=\"30004237\" to=\"30004241\"/>\r\n    <row from=\"30004238\" to=\"30004236\"/>\r\n    <row from=\"30004238\" to=\"30004237\"/>\r\n    <row from=\"30004238\" to=\"30004239\"/>\r\n    <row from=\"30004239\" to=\"30004238\"/>\r\n    <row from=\"30004239\" to=\"30004240\"/>\r\n    <row from=\"30004239\" to=\"30004241\"/>\r\n    <row from=\"30004239\" to=\"30004254\"/>\r\n    <row from=\"30004240\" to=\"30004239\"/>\r\n    <row from=\"30004240\" to=\"30004242\"/>\r\n    <row from=\"30004240\" to=\"30004267\"/>\r\n    <row from=\"30004241\" to=\"30004237\"/>\r\n    <row from=\"30004241\" to=\"30004239\"/>\r\n    <row from=\"30004241\" to=\"30004248\"/>\r\n    <row from=\"30004242\" to=\"30004240\"/>\r\n    <row from=\"30004242\" to=\"30004243\"/>\r\n    <row from=\"30004242\" to=\"30004244\"/>\r\n    <row from=\"30004243\" to=\"30004242\"/>\r\n    <row from=\"30004243\" to=\"30004247\"/>\r\n    <row from=\"30004244\" to=\"30004242\"/>\r\n    <row from=\"30004244\" to=\"30004245\"/>\r\n    <row from=\"30004245\" to=\"30004244\"/>\r\n    <row from=\"30004245\" to=\"30004246\"/>\r\n    <row from=\"30004246\" to=\"30004245\"/>\r\n    <row from=\"30004246\" to=\"30005055\"/>\r\n    <row from=\"30004247\" to=\"30004243\"/>\r\n    <row from=\"30004248\" to=\"30004241\"/>\r\n    <row from=\"30004248\" to=\"30004249\"/>\r\n    <row from=\"30004248\" to=\"30004250\"/>\r\n    <row from=\"30004248\" to=\"30004252\"/>\r\n    <row from=\"30004249\" to=\"30004248\"/>\r\n    <row from=\"30004249\" to=\"30004251\"/>\r\n    <row from=\"30004249\" to=\"30004253\"/>\r\n    <row from=\"30004250\" to=\"30004248\"/>\r\n    <row from=\"30004251\" to=\"30004249\"/>\r\n    <row from=\"30004251\" to=\"30004253\"/>\r\n    <row from=\"30004252\" to=\"30004248\"/>\r\n    <row from=\"30004253\" to=\"30004249\"/>\r\n    <row from=\"30004253\" to=\"30004251\"/>\r\n    <row from=\"30004254\" to=\"30004239\"/>\r\n    <row from=\"30004254\" to=\"30004255\"/>\r\n    <row from=\"30004254\" to=\"30004256\"/>\r\n    <row from=\"30004254\" to=\"30004257\"/>\r\n    <row from=\"30004254\" to=\"30004266\"/>\r\n    <row from=\"30004255\" to=\"30004254\"/>\r\n    <row from=\"30004256\" to=\"30004254\"/>\r\n    <row from=\"30004256\" to=\"30004260\"/>\r\n    <row from=\"30004257\" to=\"30004254\"/>\r\n    <row from=\"30004257\" to=\"30004258\"/>\r\n    <row from=\"30004258\" to=\"30004257\"/>\r\n    <row from=\"30004258\" to=\"30004259\"/>\r\n    <row from=\"30004259\" to=\"30004258\"/>\r\n    <row from=\"30004259\" to=\"30004261\"/>\r\n    <row from=\"30004260\" to=\"30004256\"/>\r\n    <row from=\"30004260\" to=\"30004261\"/>\r\n    <row from=\"30004260\" to=\"30004262\"/>\r\n    <row from=\"30004260\" to=\"30004263\"/>\r\n    <row from=\"30004261\" to=\"30004259\"/>\r\n    <row from=\"30004261\" to=\"30004260\"/>\r\n    <row from=\"30004261\" to=\"30004264\"/>\r\n    <row from=\"30004262\" to=\"30004260\"/>\r\n    <row from=\"30004262\" to=\"30004263\"/>\r\n    <row from=\"30004262\" to=\"30004265\"/>\r\n    <row from=\"30004263\" to=\"30004260\"/>\r\n    <row from=\"30004263\" to=\"30004262\"/>\r\n    <row from=\"30004264\" to=\"30004261\"/>\r\n    <row from=\"30004264\" to=\"30004266\"/>\r\n    <row from=\"30004265\" to=\"30004262\"/>\r\n    <row from=\"30004266\" to=\"30004254\"/>\r\n    <row from=\"30004266\" to=\"30004264\"/>\r\n    <row from=\"30004267\" to=\"30004240\"/>\r\n    <row from=\"30004267\" to=\"30004268\"/>\r\n    <row from=\"30004267\" to=\"30004271\"/>\r\n    <row from=\"30004267\" to=\"30004272\"/>\r\n    <row from=\"30004268\" to=\"30004267\"/>\r\n    <row from=\"30004268\" to=\"30004269\"/>\r\n    <row from=\"30004268\" to=\"30004270\"/>\r\n    <row from=\"30004269\" to=\"30004268\"/>\r\n    <row from=\"30004269\" to=\"30004270\"/>\r\n    <row from=\"30004269\" to=\"30004272\"/>\r\n    <row from=\"30004270\" to=\"30004268\"/>\r\n    <row from=\"30004270\" to=\"30004269\"/>\r\n    <row from=\"30004270\" to=\"30004280\"/>\r\n    <row from=\"30004271\" to=\"30004267\"/>\r\n    <row from=\"30004271\" to=\"30004273\"/>\r\n    <row from=\"30004272\" to=\"30004267\"/>\r\n    <row from=\"30004272\" to=\"30004269\"/>\r\n    <row from=\"30004273\" to=\"30004271\"/>\r\n    <row from=\"30004273\" to=\"30004274\"/>\r\n    <row from=\"30004273\" to=\"30004275\"/>\r\n    <row from=\"30004273\" to=\"30004276\"/>\r\n    <row from=\"30004273\" to=\"30004277\"/>\r\n    <row from=\"30004273\" to=\"30004279\"/>\r\n    <row from=\"30004274\" to=\"30004273\"/>\r\n    <row from=\"30004274\" to=\"30004275\"/>\r\n    <row from=\"30004275\" to=\"30004273\"/>\r\n    <row from=\"30004275\" to=\"30004274\"/>\r\n    <row from=\"30004275\" to=\"30004278\"/>\r\n    <row from=\"30004275\" to=\"30004279\"/>\r\n    <row from=\"30004276\" to=\"30004273\"/>\r\n    <row from=\"30004277\" to=\"30004273\"/>\r\n    <row from=\"30004277\" to=\"30004278\"/>\r\n    <row from=\"30004277\" to=\"30004279\"/>\r\n    <row from=\"30004278\" to=\"30004275\"/>\r\n    <row from=\"30004278\" to=\"30004277\"/>\r\n    <row from=\"30004279\" to=\"30004273\"/>\r\n    <row from=\"30004279\" to=\"30004275\"/>\r\n    <row from=\"30004279\" to=\"30004277\"/>\r\n    <row from=\"30004280\" to=\"30004270\"/>\r\n    <row from=\"30004280\" to=\"30004281\"/>\r\n    <row from=\"30004280\" to=\"30004282\"/>\r\n    <row from=\"30004280\" to=\"30004283\"/>\r\n    <row from=\"30004281\" to=\"30004280\"/>\r\n    <row from=\"30004281\" to=\"30004282\"/>\r\n    <row from=\"30004282\" to=\"30004280\"/>\r\n    <row from=\"30004282\" to=\"30004281\"/>\r\n    <row from=\"30004282\" to=\"30004285\"/>\r\n    <row from=\"30004283\" to=\"30004280\"/>\r\n    <row from=\"30004283\" to=\"30004284\"/>\r\n    <row from=\"30004283\" to=\"30004285\"/>\r\n    <row from=\"30004284\" to=\"30004283\"/>\r\n    <row from=\"30004284\" to=\"30004297\"/>\r\n    <row from=\"30004285\" to=\"30004282\"/>\r\n    <row from=\"30004285\" to=\"30004283\"/>\r\n    <row from=\"30004285\" to=\"30004286\"/>\r\n    <row from=\"30004286\" to=\"30004285\"/>\r\n    <row from=\"30004286\" to=\"30004287\"/>\r\n    <row from=\"30004287\" to=\"30004286\"/>\r\n    <row from=\"30004287\" to=\"30004288\"/>\r\n    <row from=\"30004288\" to=\"30004287\"/>\r\n    <row from=\"30004288\" to=\"30004289\"/>\r\n    <row from=\"30004288\" to=\"30004290\"/>\r\n    <row from=\"30004288\" to=\"30004292\"/>\r\n    <row from=\"30004288\" to=\"30004293\"/>\r\n    <row from=\"30004289\" to=\"30004288\"/>\r\n    <row from=\"30004289\" to=\"30004291\"/>\r\n    <row from=\"30004289\" to=\"30004293\"/>\r\n    <row from=\"30004290\" to=\"30004288\"/>\r\n    <row from=\"30004290\" to=\"30004295\"/>\r\n    <row from=\"30004291\" to=\"30004289\"/>\r\n    <row from=\"30004291\" to=\"30004294\"/>\r\n    <row from=\"30004292\" to=\"30004288\"/>\r\n    <row from=\"30004292\" to=\"30004294\"/>\r\n    <row from=\"30004293\" to=\"30004288\"/>\r\n    <row from=\"30004293\" to=\"30004289\"/>\r\n    <row from=\"30004293\" to=\"30004295\"/>\r\n    <row from=\"30004293\" to=\"30004296\"/>\r\n    <row from=\"30004294\" to=\"30004291\"/>\r\n    <row from=\"30004294\" to=\"30004292\"/>\r\n    <row from=\"30004295\" to=\"30004290\"/>\r\n    <row from=\"30004295\" to=\"30004293\"/>\r\n    <row from=\"30004295\" to=\"30004296\"/>\r\n    <row from=\"30004296\" to=\"30004293\"/>\r\n    <row from=\"30004296\" to=\"30004295\"/>\r\n    <row from=\"30004296\" to=\"30004303\"/>\r\n    <row from=\"30004297\" to=\"30004284\"/>\r\n    <row from=\"30004297\" to=\"30004298\"/>\r\n    <row from=\"30004298\" to=\"30004297\"/>\r\n    <row from=\"30004298\" to=\"30004299\"/>\r\n    <row from=\"30004298\" to=\"30004300\"/>\r\n    <row from=\"30004298\" to=\"30004302\"/>\r\n    <row from=\"30004299\" to=\"30004298\"/>\r\n    <row from=\"30004299\" to=\"30004300\"/>\r\n    <row from=\"30004299\" to=\"30004301\"/>\r\n    <row from=\"30004299\" to=\"30004738\"/>\r\n    <row from=\"30004300\" to=\"30004298\"/>\r\n    <row from=\"30004300\" to=\"30004299\"/>\r\n    <row from=\"30004300\" to=\"30004301\"/>\r\n    <row from=\"30004300\" to=\"30004302\"/>\r\n    <row from=\"30004301\" to=\"30003941\"/>\r\n    <row from=\"30004301\" to=\"30004299\"/>\r\n    <row from=\"30004301\" to=\"30004300\"/>\r\n    <row from=\"30004302\" to=\"30004298\"/>\r\n    <row from=\"30004302\" to=\"30004300\"/>\r\n    <row from=\"30004303\" to=\"30004296\"/>\r\n    <row from=\"30004303\" to=\"30004304\"/>\r\n    <row from=\"30004303\" to=\"30004305\"/>\r\n    <row from=\"30004303\" to=\"30004306\"/>\r\n    <row from=\"30004303\" to=\"30004307\"/>\r\n    <row from=\"30004304\" to=\"30004303\"/>\r\n    <row from=\"30004304\" to=\"30004306\"/>\r\n    <row from=\"30004305\" to=\"30004303\"/>\r\n    <row from=\"30004306\" to=\"30004303\"/>\r\n    <row from=\"30004306\" to=\"30004304\"/>\r\n    <row from=\"30004306\" to=\"30004309\"/>\r\n    <row from=\"30004307\" to=\"30004303\"/>\r\n    <row from=\"30004307\" to=\"30004308\"/>\r\n    <row from=\"30004308\" to=\"30004307\"/>\r\n    <row from=\"30004309\" to=\"30004306\"/>\r\n    <row from=\"30004309\" to=\"30004626\"/>\r\n    <row from=\"30004310\" to=\"30001306\"/>\r\n    <row from=\"30004310\" to=\"30004311\"/>\r\n    <row from=\"30004310\" to=\"30004315\"/>\r\n    <row from=\"30004311\" to=\"30004310\"/>\r\n    <row from=\"30004311\" to=\"30004312\"/>\r\n    <row from=\"30004312\" to=\"30004311\"/>\r\n    <row from=\"30004312\" to=\"30004313\"/>\r\n    <row from=\"30004312\" to=\"30004323\"/>\r\n    <row from=\"30004313\" to=\"30004312\"/>\r\n    <row from=\"30004313\" to=\"30004314\"/>\r\n    <row from=\"30004314\" to=\"30004313\"/>\r\n    <row from=\"30004314\" to=\"30004317\"/>\r\n    <row from=\"30004315\" to=\"30004310\"/>\r\n    <row from=\"30004315\" to=\"30004316\"/>\r\n    <row from=\"30004316\" to=\"30004315\"/>\r\n    <row from=\"30004317\" to=\"30004314\"/>\r\n    <row from=\"30004317\" to=\"30004318\"/>\r\n    <row from=\"30004318\" to=\"30004317\"/>\r\n    <row from=\"30004318\" to=\"30004319\"/>\r\n    <row from=\"30004319\" to=\"30004318\"/>\r\n    <row from=\"30004319\" to=\"30004320\"/>\r\n    <row from=\"30004319\" to=\"30004321\"/>\r\n    <row from=\"30004320\" to=\"30004319\"/>\r\n    <row from=\"30004320\" to=\"30004329\"/>\r\n    <row from=\"30004321\" to=\"30004319\"/>\r\n    <row from=\"30004321\" to=\"30004322\"/>\r\n    <row from=\"30004322\" to=\"30004321\"/>\r\n    <row from=\"30004322\" to=\"30004341\"/>\r\n    <row from=\"30004323\" to=\"30004312\"/>\r\n    <row from=\"30004323\" to=\"30004324\"/>\r\n    <row from=\"30004323\" to=\"30004325\"/>\r\n    <row from=\"30004324\" to=\"30004323\"/>\r\n    <row from=\"30004324\" to=\"30004327\"/>\r\n    <row from=\"30004325\" to=\"30004323\"/>\r\n    <row from=\"30004325\" to=\"30004326\"/>\r\n    <row from=\"30004326\" to=\"30004325\"/>\r\n    <row from=\"30004326\" to=\"30004328\"/>\r\n    <row from=\"30004327\" to=\"30004324\"/>\r\n    <row from=\"30004328\" to=\"30004326\"/>\r\n    <row from=\"30004329\" to=\"30004320\"/>\r\n    <row from=\"30004329\" to=\"30004330\"/>\r\n    <row from=\"30004329\" to=\"30004334\"/>\r\n    <row from=\"30004329\" to=\"30004357\"/>\r\n    <row from=\"30004330\" to=\"30004329\"/>\r\n    <row from=\"30004330\" to=\"30004331\"/>\r\n    <row from=\"30004330\" to=\"30004332\"/>\r\n    <row from=\"30004331\" to=\"30004330\"/>\r\n    <row from=\"30004331\" to=\"30004333\"/>\r\n    <row from=\"30004331\" to=\"30004335\"/>\r\n    <row from=\"30004332\" to=\"30004330\"/>\r\n    <row from=\"30004332\" to=\"30004333\"/>\r\n    <row from=\"30004333\" to=\"30004331\"/>\r\n    <row from=\"30004333\" to=\"30004332\"/>\r\n    <row from=\"30004333\" to=\"30004341\"/>\r\n    <row from=\"30004333\" to=\"30004351\"/>\r\n    <row from=\"30004333\" to=\"30004364\"/>\r\n    <row from=\"30004334\" to=\"30003608\"/>\r\n    <row from=\"30004334\" to=\"30004329\"/>\r\n    <row from=\"30004335\" to=\"30004331\"/>\r\n    <row from=\"30004335\" to=\"30004336\"/>\r\n    <row from=\"30004336\" to=\"30004335\"/>\r\n    <row from=\"30004336\" to=\"30004337\"/>\r\n    <row from=\"30004336\" to=\"30004338\"/>\r\n    <row from=\"30004336\" to=\"30004339\"/>\r\n    <row from=\"30004337\" to=\"30004336\"/>\r\n    <row from=\"30004337\" to=\"30004338\"/>\r\n    <row from=\"30004337\" to=\"30004339\"/>\r\n    <row from=\"30004338\" to=\"30004336\"/>\r\n    <row from=\"30004338\" to=\"30004337\"/>\r\n    <row from=\"30004339\" to=\"30004336\"/>\r\n    <row from=\"30004339\" to=\"30004337\"/>\r\n    <row from=\"30004339\" to=\"30004340\"/>\r\n    <row from=\"30004340\" to=\"30004339\"/>\r\n    <row from=\"30004340\" to=\"30004371\"/>\r\n    <row from=\"30004341\" to=\"30004322\"/>\r\n    <row from=\"30004341\" to=\"30004333\"/>\r\n    <row from=\"30004341\" to=\"30004342\"/>\r\n    <row from=\"30004342\" to=\"30004341\"/>\r\n    <row from=\"30004342\" to=\"30004343\"/>\r\n    <row from=\"30004342\" to=\"30004346\"/>\r\n    <row from=\"30004342\" to=\"30004349\"/>\r\n    <row from=\"30004343\" to=\"30004342\"/>\r\n    <row from=\"30004343\" to=\"30004344\"/>\r\n    <row from=\"30004343\" to=\"30004345\"/>\r\n    <row from=\"30004343\" to=\"30004348\"/>\r\n    <row from=\"30004344\" to=\"30004343\"/>\r\n    <row from=\"30004344\" to=\"30004345\"/>\r\n    <row from=\"30004344\" to=\"30004347\"/>\r\n    <row from=\"30004344\" to=\"30004348\"/>\r\n    <row from=\"30004345\" to=\"30004343\"/>\r\n    <row from=\"30004345\" to=\"30004344\"/>\r\n    <row from=\"30004345\" to=\"30004346\"/>\r\n    <row from=\"30004346\" to=\"30004342\"/>\r\n    <row from=\"30004346\" to=\"30004345\"/>\r\n    <row from=\"30004346\" to=\"30004349\"/>\r\n    <row from=\"30004346\" to=\"30004384\"/>\r\n    <row from=\"30004347\" to=\"30004344\"/>\r\n    <row from=\"30004348\" to=\"30004343\"/>\r\n    <row from=\"30004348\" to=\"30004344\"/>\r\n    <row from=\"30004349\" to=\"30004342\"/>\r\n    <row from=\"30004349\" to=\"30004346\"/>\r\n    <row from=\"30004349\" to=\"30004350\"/>\r\n    <row from=\"30004350\" to=\"30004349\"/>\r\n    <row from=\"30004351\" to=\"30004333\"/>\r\n    <row from=\"30004351\" to=\"30004352\"/>\r\n    <row from=\"30004351\" to=\"30004353\"/>\r\n    <row from=\"30004352\" to=\"30003620\"/>\r\n    <row from=\"30004352\" to=\"30004351\"/>\r\n    <row from=\"30004352\" to=\"30004354\"/>\r\n    <row from=\"30004353\" to=\"30004351\"/>\r\n    <row from=\"30004353\" to=\"30004354\"/>\r\n    <row from=\"30004354\" to=\"30004352\"/>\r\n    <row from=\"30004354\" to=\"30004353\"/>\r\n    <row from=\"30004354\" to=\"30004355\"/>\r\n    <row from=\"30004354\" to=\"30004356\"/>\r\n    <row from=\"30004355\" to=\"30004354\"/>\r\n    <row from=\"30004355\" to=\"30004356\"/>\r\n    <row from=\"30004356\" to=\"30004354\"/>\r\n    <row from=\"30004356\" to=\"30004355\"/>\r\n    <row from=\"30004356\" to=\"30004378\"/>\r\n    <row from=\"30004357\" to=\"30004329\"/>\r\n    <row from=\"30004357\" to=\"30004358\"/>\r\n    <row from=\"30004357\" to=\"30004359\"/>\r\n    <row from=\"30004358\" to=\"30004357\"/>\r\n    <row from=\"30004358\" to=\"30004360\"/>\r\n    <row from=\"30004358\" to=\"30004363\"/>\r\n    <row from=\"30004359\" to=\"30004357\"/>\r\n    <row from=\"30004359\" to=\"30004360\"/>\r\n    <row from=\"30004359\" to=\"30004361\"/>\r\n    <row from=\"30004359\" to=\"30004362\"/>\r\n    <row from=\"30004359\" to=\"30004363\"/>\r\n    <row from=\"30004360\" to=\"30004358\"/>\r\n    <row from=\"30004360\" to=\"30004359\"/>\r\n    <row from=\"30004360\" to=\"30004362\"/>\r\n    <row from=\"30004361\" to=\"30004359\"/>\r\n    <row from=\"30004362\" to=\"30004359\"/>\r\n    <row from=\"30004362\" to=\"30004360\"/>\r\n    <row from=\"30004363\" to=\"30003668\"/>\r\n    <row from=\"30004363\" to=\"30004358\"/>\r\n    <row from=\"30004363\" to=\"30004359\"/>\r\n    <row from=\"30004364\" to=\"30004333\"/>\r\n    <row from=\"30004364\" to=\"30004365\"/>\r\n    <row from=\"30004364\" to=\"30004370\"/>\r\n    <row from=\"30004365\" to=\"30004364\"/>\r\n    <row from=\"30004365\" to=\"30004366\"/>\r\n    <row from=\"30004365\" to=\"30004367\"/>\r\n    <row from=\"30004366\" to=\"30004365\"/>\r\n    <row from=\"30004367\" to=\"30004365\"/>\r\n    <row from=\"30004367\" to=\"30004368\"/>\r\n    <row from=\"30004367\" to=\"30004370\"/>\r\n    <row from=\"30004368\" to=\"30004367\"/>\r\n    <row from=\"30004368\" to=\"30004369\"/>\r\n    <row from=\"30004369\" to=\"30001312\"/>\r\n    <row from=\"30004369\" to=\"30004368\"/>\r\n    <row from=\"30004369\" to=\"30004370\"/>\r\n    <row from=\"30004370\" to=\"30004364\"/>\r\n    <row from=\"30004370\" to=\"30004367\"/>\r\n    <row from=\"30004370\" to=\"30004369\"/>\r\n    <row from=\"30004371\" to=\"30004340\"/>\r\n    <row from=\"30004371\" to=\"30004372\"/>\r\n    <row from=\"30004372\" to=\"30004371\"/>\r\n    <row from=\"30004372\" to=\"30004373\"/>\r\n    <row from=\"30004373\" to=\"30004372\"/>\r\n    <row from=\"30004373\" to=\"30004374\"/>\r\n    <row from=\"30004374\" to=\"30004373\"/>\r\n    <row from=\"30004374\" to=\"30004375\"/>\r\n    <row from=\"30004375\" to=\"30004374\"/>\r\n    <row from=\"30004375\" to=\"30004376\"/>\r\n    <row from=\"30004376\" to=\"30004375\"/>\r\n    <row from=\"30004376\" to=\"30004377\"/>\r\n    <row from=\"30004376\" to=\"30004397\"/>\r\n    <row from=\"30004377\" to=\"30004376\"/>\r\n    <row from=\"30004378\" to=\"30004356\"/>\r\n    <row from=\"30004378\" to=\"30004379\"/>\r\n    <row from=\"30004378\" to=\"30004383\"/>\r\n    <row from=\"30004378\" to=\"30004390\"/>\r\n    <row from=\"30004379\" to=\"30004378\"/>\r\n    <row from=\"30004379\" to=\"30004380\"/>\r\n    <row from=\"30004380\" to=\"30004379\"/>\r\n    <row from=\"30004380\" to=\"30004381\"/>\r\n    <row from=\"30004380\" to=\"30004382\"/>\r\n    <row from=\"30004381\" to=\"30004380\"/>\r\n    <row from=\"30004382\" to=\"30004380\"/>\r\n    <row from=\"30004383\" to=\"30004378\"/>\r\n    <row from=\"30004384\" to=\"30004346\"/>\r\n    <row from=\"30004384\" to=\"30004385\"/>\r\n    <row from=\"30004384\" to=\"30004388\"/>\r\n    <row from=\"30004385\" to=\"30004384\"/>\r\n    <row from=\"30004385\" to=\"30004386\"/>\r\n    <row from=\"30004385\" to=\"30004387\"/>\r\n    <row from=\"30004385\" to=\"30004389\"/>\r\n    <row from=\"30004386\" to=\"30004385\"/>\r\n    <row from=\"30004386\" to=\"30004388\"/>\r\n    <row from=\"30004387\" to=\"30004385\"/>\r\n    <row from=\"30004388\" to=\"30004384\"/>\r\n    <row from=\"30004388\" to=\"30004386\"/>\r\n    <row from=\"30004389\" to=\"30004385\"/>\r\n    <row from=\"30004390\" to=\"30004378\"/>\r\n    <row from=\"30004390\" to=\"30004391\"/>\r\n    <row from=\"30004390\" to=\"30004392\"/>\r\n    <row from=\"30004390\" to=\"30004394\"/>\r\n    <row from=\"30004391\" to=\"30004390\"/>\r\n    <row from=\"30004392\" to=\"30004390\"/>\r\n    <row from=\"30004392\" to=\"30004393\"/>\r\n    <row from=\"30004392\" to=\"30004395\"/>\r\n    <row from=\"30004393\" to=\"30004392\"/>\r\n    <row from=\"30004393\" to=\"30004396\"/>\r\n    <row from=\"30004394\" to=\"30004390\"/>\r\n    <row from=\"30004395\" to=\"30004392\"/>\r\n    <row from=\"30004396\" to=\"30002955\"/>\r\n    <row from=\"30004396\" to=\"30004393\"/>\r\n    <row from=\"30004397\" to=\"30004376\"/>\r\n    <row from=\"30004397\" to=\"30004398\"/>\r\n    <row from=\"30004397\" to=\"30004401\"/>\r\n    <row from=\"30004398\" to=\"30004397\"/>\r\n    <row from=\"30004398\" to=\"30004399\"/>\r\n    <row from=\"30004398\" to=\"30004400\"/>\r\n    <row from=\"30004398\" to=\"30004403\"/>\r\n    <row from=\"30004399\" to=\"30004398\"/>\r\n    <row from=\"30004399\" to=\"30004402\"/>\r\n    <row from=\"30004400\" to=\"30004398\"/>\r\n    <row from=\"30004400\" to=\"30004401\"/>\r\n    <row from=\"30004400\" to=\"30004402\"/>\r\n    <row from=\"30004401\" to=\"30003669\"/>\r\n    <row from=\"30004401\" to=\"30004397\"/>\r\n    <row from=\"30004401\" to=\"30004400\"/>\r\n    <row from=\"30004402\" to=\"30004399\"/>\r\n    <row from=\"30004402\" to=\"30004400\"/>\r\n    <row from=\"30004403\" to=\"30004398\"/>\r\n    <row from=\"30004404\" to=\"30002594\"/>\r\n    <row from=\"30004404\" to=\"30004405\"/>\r\n    <row from=\"30004404\" to=\"30004406\"/>\r\n    <row from=\"30004404\" to=\"30004408\"/>\r\n    <row from=\"30004405\" to=\"30004404\"/>\r\n    <row from=\"30004405\" to=\"30004406\"/>\r\n    <row from=\"30004405\" to=\"30004407\"/>\r\n    <row from=\"30004406\" to=\"30004404\"/>\r\n    <row from=\"30004406\" to=\"30004405\"/>\r\n    <row from=\"30004407\" to=\"30004405\"/>\r\n    <row from=\"30004407\" to=\"30004409\"/>\r\n    <row from=\"30004407\" to=\"30004410\"/>\r\n    <row from=\"30004408\" to=\"30004404\"/>\r\n    <row from=\"30004408\" to=\"30004450\"/>\r\n    <row from=\"30004409\" to=\"30004407\"/>\r\n    <row from=\"30004409\" to=\"30004418\"/>\r\n    <row from=\"30004410\" to=\"30004407\"/>\r\n    <row from=\"30004410\" to=\"30004411\"/>\r\n    <row from=\"30004410\" to=\"30004412\"/>\r\n    <row from=\"30004410\" to=\"30004413\"/>\r\n    <row from=\"30004410\" to=\"30004414\"/>\r\n    <row from=\"30004411\" to=\"30004410\"/>\r\n    <row from=\"30004412\" to=\"30004410\"/>\r\n    <row from=\"30004412\" to=\"30004415\"/>\r\n    <row from=\"30004412\" to=\"30004416\"/>\r\n    <row from=\"30004413\" to=\"30004410\"/>\r\n    <row from=\"30004414\" to=\"30004410\"/>\r\n    <row from=\"30004415\" to=\"30004412\"/>\r\n    <row from=\"30004416\" to=\"30004412\"/>\r\n    <row from=\"30004416\" to=\"30004417\"/>\r\n    <row from=\"30004417\" to=\"30004416\"/>\r\n    <row from=\"30004418\" to=\"30004409\"/>\r\n    <row from=\"30004418\" to=\"30004419\"/>\r\n    <row from=\"30004419\" to=\"30004418\"/>\r\n    <row from=\"30004419\" to=\"30004420\"/>\r\n    <row from=\"30004419\" to=\"30004422\"/>\r\n    <row from=\"30004419\" to=\"30004425\"/>\r\n    <row from=\"30004420\" to=\"30004419\"/>\r\n    <row from=\"30004420\" to=\"30004421\"/>\r\n    <row from=\"30004420\" to=\"30004424\"/>\r\n    <row from=\"30004421\" to=\"30004420\"/>\r\n    <row from=\"30004421\" to=\"30004422\"/>\r\n    <row from=\"30004421\" to=\"30004423\"/>\r\n    <row from=\"30004422\" to=\"30004419\"/>\r\n    <row from=\"30004422\" to=\"30004421\"/>\r\n    <row from=\"30004422\" to=\"30004436\"/>\r\n    <row from=\"30004423\" to=\"30004421\"/>\r\n    <row from=\"30004423\" to=\"30004884\"/>\r\n    <row from=\"30004424\" to=\"30004420\"/>\r\n    <row from=\"30004424\" to=\"30004443\"/>\r\n    <row from=\"30004425\" to=\"30004419\"/>\r\n    <row from=\"30004425\" to=\"30004426\"/>\r\n    <row from=\"30004425\" to=\"30004429\"/>\r\n    <row from=\"30004426\" to=\"30004425\"/>\r\n    <row from=\"30004426\" to=\"30004427\"/>\r\n    <row from=\"30004426\" to=\"30004428\"/>\r\n    <row from=\"30004427\" to=\"30004426\"/>\r\n    <row from=\"30004428\" to=\"30004426\"/>\r\n    <row from=\"30004428\" to=\"30004429\"/>\r\n    <row from=\"30004428\" to=\"30004431\"/>\r\n    <row from=\"30004428\" to=\"30004435\"/>\r\n    <row from=\"30004429\" to=\"30004425\"/>\r\n    <row from=\"30004429\" to=\"30004428\"/>\r\n    <row from=\"30004429\" to=\"30004430\"/>\r\n    <row from=\"30004430\" to=\"30004429\"/>\r\n    <row from=\"30004431\" to=\"30004428\"/>\r\n    <row from=\"30004431\" to=\"30004432\"/>\r\n    <row from=\"30004431\" to=\"30004433\"/>\r\n    <row from=\"30004432\" to=\"30004431\"/>\r\n    <row from=\"30004432\" to=\"30004433\"/>\r\n    <row from=\"30004432\" to=\"30004434\"/>\r\n    <row from=\"30004433\" to=\"30004431\"/>\r\n    <row from=\"30004433\" to=\"30004432\"/>\r\n    <row from=\"30004434\" to=\"30004432\"/>\r\n    <row from=\"30004434\" to=\"30004471\"/>\r\n    <row from=\"30004435\" to=\"30004428\"/>\r\n    <row from=\"30004435\" to=\"30004842\"/>\r\n    <row from=\"30004436\" to=\"30004422\"/>\r\n    <row from=\"30004436\" to=\"30004437\"/>\r\n    <row from=\"30004436\" to=\"30004438\"/>\r\n    <row from=\"30004436\" to=\"30004440\"/>\r\n    <row from=\"30004437\" to=\"30004436\"/>\r\n    <row from=\"30004437\" to=\"30004438\"/>\r\n    <row from=\"30004437\" to=\"30004439\"/>\r\n    <row from=\"30004438\" to=\"30004436\"/>\r\n    <row from=\"30004438\" to=\"30004437\"/>\r\n    <row from=\"30004439\" to=\"30004437\"/>\r\n    <row from=\"30004439\" to=\"30004440\"/>\r\n    <row from=\"30004440\" to=\"30004436\"/>\r\n    <row from=\"30004440\" to=\"30004439\"/>\r\n    <row from=\"30004440\" to=\"30004441\"/>\r\n    <row from=\"30004440\" to=\"30004442\"/>\r\n    <row from=\"30004441\" to=\"30004440\"/>\r\n    <row from=\"30004441\" to=\"30004442\"/>\r\n    <row from=\"30004441\" to=\"30004465\"/>\r\n    <row from=\"30004442\" to=\"30004440\"/>\r\n    <row from=\"30004442\" to=\"30004441\"/>\r\n    <row from=\"30004443\" to=\"30004424\"/>\r\n    <row from=\"30004443\" to=\"30004444\"/>\r\n    <row from=\"30004443\" to=\"30004448\"/>\r\n    <row from=\"30004443\" to=\"30004449\"/>\r\n    <row from=\"30004444\" to=\"30004443\"/>\r\n    <row from=\"30004444\" to=\"30004445\"/>\r\n    <row from=\"30004444\" to=\"30004449\"/>\r\n    <row from=\"30004445\" to=\"30004444\"/>\r\n    <row from=\"30004445\" to=\"30004446\"/>\r\n    <row from=\"30004445\" to=\"30004447\"/>\r\n    <row from=\"30004446\" to=\"30004445\"/>\r\n    <row from=\"30004446\" to=\"30004447\"/>\r\n    <row from=\"30004447\" to=\"30004445\"/>\r\n    <row from=\"30004447\" to=\"30004446\"/>\r\n    <row from=\"30004448\" to=\"30004443\"/>\r\n    <row from=\"30004449\" to=\"30004443\"/>\r\n    <row from=\"30004449\" to=\"30004444\"/>\r\n    <row from=\"30004450\" to=\"30004408\"/>\r\n    <row from=\"30004450\" to=\"30004451\"/>\r\n    <row from=\"30004450\" to=\"30004452\"/>\r\n    <row from=\"30004451\" to=\"30004450\"/>\r\n    <row from=\"30004451\" to=\"30004453\"/>\r\n    <row from=\"30004452\" to=\"30003110\"/>\r\n    <row from=\"30004452\" to=\"30004450\"/>\r\n    <row from=\"30004452\" to=\"30004454\"/>\r\n    <row from=\"30004453\" to=\"30004451\"/>\r\n    <row from=\"30004453\" to=\"30004455\"/>\r\n    <row from=\"30004454\" to=\"30004452\"/>\r\n    <row from=\"30004455\" to=\"30004453\"/>\r\n    <row from=\"30004455\" to=\"30004456\"/>\r\n    <row from=\"30004455\" to=\"30004457\"/>\r\n    <row from=\"30004456\" to=\"30004455\"/>\r\n    <row from=\"30004456\" to=\"30004458\"/>\r\n    <row from=\"30004457\" to=\"30004455\"/>\r\n    <row from=\"30004457\" to=\"30004459\"/>\r\n    <row from=\"30004458\" to=\"30004456\"/>\r\n    <row from=\"30004459\" to=\"30004457\"/>\r\n    <row from=\"30004459\" to=\"30004460\"/>\r\n    <row from=\"30004460\" to=\"30004459\"/>\r\n    <row from=\"30004460\" to=\"30004461\"/>\r\n    <row from=\"30004461\" to=\"30004460\"/>\r\n    <row from=\"30004461\" to=\"30004462\"/>\r\n    <row from=\"30004462\" to=\"30004461\"/>\r\n    <row from=\"30004462\" to=\"30004463\"/>\r\n    <row from=\"30004462\" to=\"30004464\"/>\r\n    <row from=\"30004463\" to=\"30004462\"/>\r\n    <row from=\"30004464\" to=\"30004462\"/>\r\n    <row from=\"30004464\" to=\"30004478\"/>\r\n    <row from=\"30004465\" to=\"30004441\"/>\r\n    <row from=\"30004465\" to=\"30004466\"/>\r\n    <row from=\"30004465\" to=\"30004467\"/>\r\n    <row from=\"30004466\" to=\"30004465\"/>\r\n    <row from=\"30004467\" to=\"30004465\"/>\r\n    <row from=\"30004467\" to=\"30004468\"/>\r\n    <row from=\"30004468\" to=\"30004467\"/>\r\n    <row from=\"30004468\" to=\"30004469\"/>\r\n    <row from=\"30004469\" to=\"30004468\"/>\r\n    <row from=\"30004469\" to=\"30004470\"/>\r\n    <row from=\"30004470\" to=\"30004469\"/>\r\n    <row from=\"30004471\" to=\"30004434\"/>\r\n    <row from=\"30004471\" to=\"30004472\"/>\r\n    <row from=\"30004472\" to=\"30004471\"/>\r\n    <row from=\"30004472\" to=\"30004473\"/>\r\n    <row from=\"30004472\" to=\"30004474\"/>\r\n    <row from=\"30004472\" to=\"30004475\"/>\r\n    <row from=\"30004472\" to=\"30004477\"/>\r\n    <row from=\"30004473\" to=\"30004472\"/>\r\n    <row from=\"30004474\" to=\"30004472\"/>\r\n    <row from=\"30004474\" to=\"30004476\"/>\r\n    <row from=\"30004474\" to=\"30004477\"/>\r\n    <row from=\"30004475\" to=\"30004472\"/>\r\n    <row from=\"30004475\" to=\"30004476\"/>\r\n    <row from=\"30004476\" to=\"30004474\"/>\r\n    <row from=\"30004476\" to=\"30004475\"/>\r\n    <row from=\"30004476\" to=\"30004477\"/>\r\n    <row from=\"30004477\" to=\"30004472\"/>\r\n    <row from=\"30004477\" to=\"30004474\"/>\r\n    <row from=\"30004477\" to=\"30004476\"/>\r\n    <row from=\"30004478\" to=\"30004464\"/>\r\n    <row from=\"30004478\" to=\"30004479\"/>\r\n    <row from=\"30004478\" to=\"30004481\"/>\r\n    <row from=\"30004479\" to=\"30004478\"/>\r\n    <row from=\"30004479\" to=\"30004480\"/>\r\n    <row from=\"30004479\" to=\"30004481\"/>\r\n    <row from=\"30004480\" to=\"30004479\"/>\r\n    <row from=\"30004480\" to=\"30004482\"/>\r\n    <row from=\"30004480\" to=\"30004483\"/>\r\n    <row from=\"30004481\" to=\"30004478\"/>\r\n    <row from=\"30004481\" to=\"30004479\"/>\r\n    <row from=\"30004482\" to=\"30004480\"/>\r\n    <row from=\"30004483\" to=\"30004480\"/>\r\n    <row from=\"30004483\" to=\"30004484\"/>\r\n    <row from=\"30004483\" to=\"30004485\"/>\r\n    <row from=\"30004484\" to=\"30004483\"/>\r\n    <row from=\"30004484\" to=\"30004487\"/>\r\n    <row from=\"30004485\" to=\"30004483\"/>\r\n    <row from=\"30004485\" to=\"30004486\"/>\r\n    <row from=\"30004486\" to=\"30004485\"/>\r\n    <row from=\"30004486\" to=\"30004924\"/>\r\n    <row from=\"30004487\" to=\"30004484\"/>\r\n    <row from=\"30004487\" to=\"30004488\"/>\r\n    <row from=\"30004488\" to=\"30004487\"/>\r\n    <row from=\"30004488\" to=\"30004489\"/>\r\n    <row from=\"30004489\" to=\"30004488\"/>\r\n    <row from=\"30004489\" to=\"30004490\"/>\r\n    <row from=\"30004489\" to=\"30004492\"/>\r\n    <row from=\"30004490\" to=\"30004489\"/>\r\n    <row from=\"30004490\" to=\"30004491\"/>\r\n    <row from=\"30004491\" to=\"30003169\"/>\r\n    <row from=\"30004491\" to=\"30004490\"/>\r\n    <row from=\"30004492\" to=\"30004489\"/>\r\n    <row from=\"30004493\" to=\"30003322\"/>\r\n    <row from=\"30004493\" to=\"30004494\"/>\r\n    <row from=\"30004493\" to=\"30004497\"/>\r\n    <row from=\"30004493\" to=\"30004500\"/>\r\n    <row from=\"30004494\" to=\"30004493\"/>\r\n    <row from=\"30004494\" to=\"30004495\"/>\r\n    <row from=\"30004494\" to=\"30004496\"/>\r\n    <row from=\"30004494\" to=\"30004498\"/>\r\n    <row from=\"30004495\" to=\"30004494\"/>\r\n    <row from=\"30004495\" to=\"30004496\"/>\r\n    <row from=\"30004495\" to=\"30004498\"/>\r\n    <row from=\"30004495\" to=\"30004499\"/>\r\n    <row from=\"30004496\" to=\"30004494\"/>\r\n    <row from=\"30004496\" to=\"30004495\"/>\r\n    <row from=\"30004496\" to=\"30004497\"/>\r\n    <row from=\"30004496\" to=\"30004498\"/>\r\n    <row from=\"30004496\" to=\"30004500\"/>\r\n    <row from=\"30004497\" to=\"30003355\"/>\r\n    <row from=\"30004497\" to=\"30004493\"/>\r\n    <row from=\"30004497\" to=\"30004496\"/>\r\n    <row from=\"30004498\" to=\"30004494\"/>\r\n    <row from=\"30004498\" to=\"30004495\"/>\r\n    <row from=\"30004498\" to=\"30004496\"/>\r\n    <row from=\"30004499\" to=\"30003361\"/>\r\n    <row from=\"30004499\" to=\"30004495\"/>\r\n    <row from=\"30004499\" to=\"30004501\"/>\r\n    <row from=\"30004500\" to=\"30003349\"/>\r\n    <row from=\"30004500\" to=\"30004493\"/>\r\n    <row from=\"30004500\" to=\"30004496\"/>\r\n    <row from=\"30004501\" to=\"30004499\"/>\r\n    <row from=\"30004501\" to=\"30004502\"/>\r\n    <row from=\"30004502\" to=\"30004501\"/>\r\n    <row from=\"30004502\" to=\"30004503\"/>\r\n    <row from=\"30004503\" to=\"30004502\"/>\r\n    <row from=\"30004503\" to=\"30004504\"/>\r\n    <row from=\"30004504\" to=\"30004503\"/>\r\n    <row from=\"30004504\" to=\"30004505\"/>\r\n    <row from=\"30004504\" to=\"30004506\"/>\r\n    <row from=\"30004505\" to=\"30004504\"/>\r\n    <row from=\"30004505\" to=\"30004507\"/>\r\n    <row from=\"30004505\" to=\"30004514\"/>\r\n    <row from=\"30004506\" to=\"30004504\"/>\r\n    <row from=\"30004506\" to=\"30004508\"/>\r\n    <row from=\"30004506\" to=\"30004526\"/>\r\n    <row from=\"30004507\" to=\"30004505\"/>\r\n    <row from=\"30004508\" to=\"30004506\"/>\r\n    <row from=\"30004508\" to=\"30004509\"/>\r\n    <row from=\"30004508\" to=\"30004510\"/>\r\n    <row from=\"30004508\" to=\"30004511\"/>\r\n    <row from=\"30004508\" to=\"30004512\"/>\r\n    <row from=\"30004509\" to=\"30004508\"/>\r\n    <row from=\"30004509\" to=\"30004510\"/>\r\n    <row from=\"30004510\" to=\"30004508\"/>\r\n    <row from=\"30004510\" to=\"30004509\"/>\r\n    <row from=\"30004510\" to=\"30004513\"/>\r\n    <row from=\"30004511\" to=\"30004508\"/>\r\n    <row from=\"30004511\" to=\"30004538\"/>\r\n    <row from=\"30004512\" to=\"30004508\"/>\r\n    <row from=\"30004513\" to=\"30004510\"/>\r\n    <row from=\"30004514\" to=\"30004505\"/>\r\n    <row from=\"30004514\" to=\"30004515\"/>\r\n    <row from=\"30004515\" to=\"30004514\"/>\r\n    <row from=\"30004515\" to=\"30004516\"/>\r\n    <row from=\"30004515\" to=\"30004517\"/>\r\n    <row from=\"30004515\" to=\"30004519\"/>\r\n    <row from=\"30004515\" to=\"30004520\"/>\r\n    <row from=\"30004516\" to=\"30004515\"/>\r\n    <row from=\"30004516\" to=\"30004519\"/>\r\n    <row from=\"30004517\" to=\"30004515\"/>\r\n    <row from=\"30004517\" to=\"30004518\"/>\r\n    <row from=\"30004517\" to=\"30004519\"/>\r\n    <row from=\"30004518\" to=\"30004517\"/>\r\n    <row from=\"30004519\" to=\"30004515\"/>\r\n    <row from=\"30004519\" to=\"30004516\"/>\r\n    <row from=\"30004519\" to=\"30004517\"/>\r\n    <row from=\"30004520\" to=\"30004515\"/>\r\n    <row from=\"30004520\" to=\"30004521\"/>\r\n    <row from=\"30004520\" to=\"30004522\"/>\r\n    <row from=\"30004521\" to=\"30004520\"/>\r\n    <row from=\"30004522\" to=\"30004520\"/>\r\n    <row from=\"30004522\" to=\"30004523\"/>\r\n    <row from=\"30004522\" to=\"30004524\"/>\r\n    <row from=\"30004523\" to=\"30004522\"/>\r\n    <row from=\"30004523\" to=\"30004524\"/>\r\n    <row from=\"30004524\" to=\"30004522\"/>\r\n    <row from=\"30004524\" to=\"30004523\"/>\r\n    <row from=\"30004524\" to=\"30004525\"/>\r\n    <row from=\"30004525\" to=\"30004524\"/>\r\n    <row from=\"30004525\" to=\"30004552\"/>\r\n    <row from=\"30004526\" to=\"30004506\"/>\r\n    <row from=\"30004526\" to=\"30004527\"/>\r\n    <row from=\"30004526\" to=\"30004529\"/>\r\n    <row from=\"30004527\" to=\"30004526\"/>\r\n    <row from=\"30004527\" to=\"30004528\"/>\r\n    <row from=\"30004527\" to=\"30004529\"/>\r\n    <row from=\"30004527\" to=\"30004530\"/>\r\n    <row from=\"30004528\" to=\"30004527\"/>\r\n    <row from=\"30004528\" to=\"30004532\"/>\r\n    <row from=\"30004529\" to=\"30004526\"/>\r\n    <row from=\"30004529\" to=\"30004527\"/>\r\n    <row from=\"30004530\" to=\"30004527\"/>\r\n    <row from=\"30004530\" to=\"30004531\"/>\r\n    <row from=\"30004531\" to=\"30004530\"/>\r\n    <row from=\"30004532\" to=\"30004528\"/>\r\n    <row from=\"30004532\" to=\"30004533\"/>\r\n    <row from=\"30004532\" to=\"30004537\"/>\r\n    <row from=\"30004533\" to=\"30004532\"/>\r\n    <row from=\"30004533\" to=\"30004534\"/>\r\n    <row from=\"30004533\" to=\"30004535\"/>\r\n    <row from=\"30004533\" to=\"30004536\"/>\r\n    <row from=\"30004533\" to=\"30004537\"/>\r\n    <row from=\"30004534\" to=\"30004533\"/>\r\n    <row from=\"30004534\" to=\"30004535\"/>\r\n    <row from=\"30004534\" to=\"30004536\"/>\r\n    <row from=\"30004535\" to=\"30004039\"/>\r\n    <row from=\"30004535\" to=\"30004533\"/>\r\n    <row from=\"30004535\" to=\"30004534\"/>\r\n    <row from=\"30004535\" to=\"30004536\"/>\r\n    <row from=\"30004536\" to=\"30004533\"/>\r\n    <row from=\"30004536\" to=\"30004534\"/>\r\n    <row from=\"30004536\" to=\"30004535\"/>\r\n    <row from=\"30004537\" to=\"30004532\"/>\r\n    <row from=\"30004537\" to=\"30004533\"/>\r\n    <row from=\"30004538\" to=\"30004511\"/>\r\n    <row from=\"30004538\" to=\"30004539\"/>\r\n    <row from=\"30004539\" to=\"30004538\"/>\r\n    <row from=\"30004539\" to=\"30004540\"/>\r\n    <row from=\"30004540\" to=\"30004539\"/>\r\n    <row from=\"30004540\" to=\"30004541\"/>\r\n    <row from=\"30004541\" to=\"30004540\"/>\r\n    <row from=\"30004541\" to=\"30004542\"/>\r\n    <row from=\"30004542\" to=\"30004541\"/>\r\n    <row from=\"30004542\" to=\"30004543\"/>\r\n    <row from=\"30004543\" to=\"30004542\"/>\r\n    <row from=\"30004543\" to=\"30004544\"/>\r\n    <row from=\"30004544\" to=\"30004543\"/>\r\n    <row from=\"30004544\" to=\"30004545\"/>\r\n    <row from=\"30004545\" to=\"30004544\"/>\r\n    <row from=\"30004545\" to=\"30004546\"/>\r\n    <row from=\"30004546\" to=\"30004545\"/>\r\n    <row from=\"30004546\" to=\"30004547\"/>\r\n    <row from=\"30004546\" to=\"30004551\"/>\r\n    <row from=\"30004547\" to=\"30004546\"/>\r\n    <row from=\"30004547\" to=\"30004548\"/>\r\n    <row from=\"30004547\" to=\"30004551\"/>\r\n    <row from=\"30004548\" to=\"30004547\"/>\r\n    <row from=\"30004548\" to=\"30004549\"/>\r\n    <row from=\"30004549\" to=\"30004548\"/>\r\n    <row from=\"30004549\" to=\"30004550\"/>\r\n    <row from=\"30004550\" to=\"30004549\"/>\r\n    <row from=\"30004551\" to=\"30004546\"/>\r\n    <row from=\"30004551\" to=\"30004547\"/>\r\n    <row from=\"30004552\" to=\"30004525\"/>\r\n    <row from=\"30004552\" to=\"30004553\"/>\r\n    <row from=\"30004552\" to=\"30004554\"/>\r\n    <row from=\"30004553\" to=\"30004552\"/>\r\n    <row from=\"30004553\" to=\"30004555\"/>\r\n    <row from=\"30004554\" to=\"30004552\"/>\r\n    <row from=\"30004554\" to=\"30004584\"/>\r\n    <row from=\"30004555\" to=\"30004553\"/>\r\n    <row from=\"30004555\" to=\"30004556\"/>\r\n    <row from=\"30004555\" to=\"30004557\"/>\r\n    <row from=\"30004555\" to=\"30004558\"/>\r\n    <row from=\"30004556\" to=\"30004555\"/>\r\n    <row from=\"30004556\" to=\"30004567\"/>\r\n    <row from=\"30004557\" to=\"30004555\"/>\r\n    <row from=\"30004557\" to=\"30004559\"/>\r\n    <row from=\"30004557\" to=\"30004573\"/>\r\n    <row from=\"30004558\" to=\"30004555\"/>\r\n    <row from=\"30004559\" to=\"30004557\"/>\r\n    <row from=\"30004559\" to=\"30004560\"/>\r\n    <row from=\"30004559\" to=\"30004566\"/>\r\n    <row from=\"30004560\" to=\"30004559\"/>\r\n    <row from=\"30004560\" to=\"30004561\"/>\r\n    <row from=\"30004560\" to=\"30004565\"/>\r\n    <row from=\"30004560\" to=\"30004566\"/>\r\n    <row from=\"30004561\" to=\"30004560\"/>\r\n    <row from=\"30004561\" to=\"30004562\"/>\r\n    <row from=\"30004561\" to=\"30004563\"/>\r\n    <row from=\"30004562\" to=\"30004561\"/>\r\n    <row from=\"30004562\" to=\"30004563\"/>\r\n    <row from=\"30004562\" to=\"30004564\"/>\r\n    <row from=\"30004562\" to=\"30004624\"/>\r\n    <row from=\"30004563\" to=\"30004561\"/>\r\n    <row from=\"30004563\" to=\"30004562\"/>\r\n    <row from=\"30004563\" to=\"30004565\"/>\r\n    <row from=\"30004564\" to=\"30004562\"/>\r\n    <row from=\"30004565\" to=\"30004560\"/>\r\n    <row from=\"30004565\" to=\"30004563\"/>\r\n    <row from=\"30004566\" to=\"30004559\"/>\r\n    <row from=\"30004566\" to=\"30004560\"/>\r\n    <row from=\"30004567\" to=\"30004556\"/>\r\n    <row from=\"30004567\" to=\"30004568\"/>\r\n    <row from=\"30004567\" to=\"30004569\"/>\r\n    <row from=\"30004568\" to=\"30004567\"/>\r\n    <row from=\"30004568\" to=\"30004569\"/>\r\n    <row from=\"30004568\" to=\"30004572\"/>\r\n    <row from=\"30004569\" to=\"30004567\"/>\r\n    <row from=\"30004569\" to=\"30004568\"/>\r\n    <row from=\"30004569\" to=\"30004570\"/>\r\n    <row from=\"30004569\" to=\"30004571\"/>\r\n    <row from=\"30004570\" to=\"30004569\"/>\r\n    <row from=\"30004570\" to=\"30004572\"/>\r\n    <row from=\"30004571\" to=\"30004569\"/>\r\n    <row from=\"30004571\" to=\"30004572\"/>\r\n    <row from=\"30004572\" to=\"30004568\"/>\r\n    <row from=\"30004572\" to=\"30004570\"/>\r\n    <row from=\"30004572\" to=\"30004571\"/>\r\n    <row from=\"30004572\" to=\"30004602\"/>\r\n    <row from=\"30004573\" to=\"30004557\"/>\r\n    <row from=\"30004573\" to=\"30004574\"/>\r\n    <row from=\"30004573\" to=\"30004576\"/>\r\n    <row from=\"30004573\" to=\"30004582\"/>\r\n    <row from=\"30004574\" to=\"30004573\"/>\r\n    <row from=\"30004574\" to=\"30004575\"/>\r\n    <row from=\"30004574\" to=\"30004576\"/>\r\n    <row from=\"30004574\" to=\"30004579\"/>\r\n    <row from=\"30004575\" to=\"30004574\"/>\r\n    <row from=\"30004575\" to=\"30004576\"/>\r\n    <row from=\"30004575\" to=\"30004578\"/>\r\n    <row from=\"30004576\" to=\"30004573\"/>\r\n    <row from=\"30004576\" to=\"30004574\"/>\r\n    <row from=\"30004576\" to=\"30004575\"/>\r\n    <row from=\"30004576\" to=\"30004577\"/>\r\n    <row from=\"30004576\" to=\"30004579\"/>\r\n    <row from=\"30004576\" to=\"30004582\"/>\r\n    <row from=\"30004577\" to=\"30004576\"/>\r\n    <row from=\"30004577\" to=\"30004580\"/>\r\n    <row from=\"30004577\" to=\"30004596\"/>\r\n    <row from=\"30004578\" to=\"30004575\"/>\r\n    <row from=\"30004578\" to=\"30004581\"/>\r\n    <row from=\"30004579\" to=\"30004574\"/>\r\n    <row from=\"30004579\" to=\"30004576\"/>\r\n    <row from=\"30004580\" to=\"30004577\"/>\r\n    <row from=\"30004581\" to=\"30004578\"/>\r\n    <row from=\"30004581\" to=\"30004583\"/>\r\n    <row from=\"30004582\" to=\"30004573\"/>\r\n    <row from=\"30004582\" to=\"30004576\"/>\r\n    <row from=\"30004583\" to=\"30004581\"/>\r\n    <row from=\"30004583\" to=\"30004590\"/>\r\n    <row from=\"30004584\" to=\"30004554\"/>\r\n    <row from=\"30004584\" to=\"30004585\"/>\r\n    <row from=\"30004584\" to=\"30004586\"/>\r\n    <row from=\"30004585\" to=\"30004584\"/>\r\n    <row from=\"30004586\" to=\"30004584\"/>\r\n    <row from=\"30004586\" to=\"30004587\"/>\r\n    <row from=\"30004586\" to=\"30004589\"/>\r\n    <row from=\"30004587\" to=\"30004586\"/>\r\n    <row from=\"30004587\" to=\"30004588\"/>\r\n    <row from=\"30004588\" to=\"30004587\"/>\r\n    <row from=\"30004589\" to=\"30004040\"/>\r\n    <row from=\"30004589\" to=\"30004586\"/>\r\n    <row from=\"30004590\" to=\"30004583\"/>\r\n    <row from=\"30004590\" to=\"30004591\"/>\r\n    <row from=\"30004590\" to=\"30004608\"/>\r\n    <row from=\"30004591\" to=\"30004590\"/>\r\n    <row from=\"30004591\" to=\"30004592\"/>\r\n    <row from=\"30004592\" to=\"30004591\"/>\r\n    <row from=\"30004592\" to=\"30004593\"/>\r\n    <row from=\"30004593\" to=\"30004592\"/>\r\n    <row from=\"30004593\" to=\"30004594\"/>\r\n    <row from=\"30004594\" to=\"30004593\"/>\r\n    <row from=\"30004594\" to=\"30004595\"/>\r\n    <row from=\"30004595\" to=\"30004594\"/>\r\n    <row from=\"30004596\" to=\"30004577\"/>\r\n    <row from=\"30004596\" to=\"30004597\"/>\r\n    <row from=\"30004596\" to=\"30004600\"/>\r\n    <row from=\"30004597\" to=\"30004596\"/>\r\n    <row from=\"30004597\" to=\"30004598\"/>\r\n    <row from=\"30004597\" to=\"30004599\"/>\r\n    <row from=\"30004598\" to=\"30004597\"/>\r\n    <row from=\"30004598\" to=\"30004599\"/>\r\n    <row from=\"30004598\" to=\"30004600\"/>\r\n    <row from=\"30004598\" to=\"30004601\"/>\r\n    <row from=\"30004599\" to=\"30004597\"/>\r\n    <row from=\"30004599\" to=\"30004598\"/>\r\n    <row from=\"30004599\" to=\"30004601\"/>\r\n    <row from=\"30004600\" to=\"30004596\"/>\r\n    <row from=\"30004600\" to=\"30004598\"/>\r\n    <row from=\"30004600\" to=\"30004642\"/>\r\n    <row from=\"30004601\" to=\"30004598\"/>\r\n    <row from=\"30004601\" to=\"30004599\"/>\r\n    <row from=\"30004602\" to=\"30004572\"/>\r\n    <row from=\"30004602\" to=\"30004603\"/>\r\n    <row from=\"30004603\" to=\"30004602\"/>\r\n    <row from=\"30004603\" to=\"30004604\"/>\r\n    <row from=\"30004603\" to=\"30004605\"/>\r\n    <row from=\"30004603\" to=\"30004606\"/>\r\n    <row from=\"30004604\" to=\"30004603\"/>\r\n    <row from=\"30004604\" to=\"30004607\"/>\r\n    <row from=\"30004605\" to=\"30004603\"/>\r\n    <row from=\"30004605\" to=\"30004607\"/>\r\n    <row from=\"30004605\" to=\"30004643\"/>\r\n    <row from=\"30004606\" to=\"30004603\"/>\r\n    <row from=\"30004607\" to=\"30004604\"/>\r\n    <row from=\"30004607\" to=\"30004605\"/>\r\n    <row from=\"30004607\" to=\"30004617\"/>\r\n    <row from=\"30004608\" to=\"30004590\"/>\r\n    <row from=\"30004608\" to=\"30004609\"/>\r\n    <row from=\"30004608\" to=\"30004611\"/>\r\n    <row from=\"30004608\" to=\"30004616\"/>\r\n    <row from=\"30004609\" to=\"30004608\"/>\r\n    <row from=\"30004609\" to=\"30004610\"/>\r\n    <row from=\"30004609\" to=\"30004612\"/>\r\n    <row from=\"30004609\" to=\"30004613\"/>\r\n    <row from=\"30004610\" to=\"30004609\"/>\r\n    <row from=\"30004610\" to=\"30004615\"/>\r\n    <row from=\"30004611\" to=\"30004608\"/>\r\n    <row from=\"30004612\" to=\"30004609\"/>\r\n    <row from=\"30004613\" to=\"30004609\"/>\r\n    <row from=\"30004613\" to=\"30004614\"/>\r\n    <row from=\"30004614\" to=\"30004613\"/>\r\n    <row from=\"30004614\" to=\"30004616\"/>\r\n    <row from=\"30004615\" to=\"30004610\"/>\r\n    <row from=\"30004616\" to=\"30004608\"/>\r\n    <row from=\"30004616\" to=\"30004614\"/>\r\n    <row from=\"30004617\" to=\"30004607\"/>\r\n    <row from=\"30004617\" to=\"30004618\"/>\r\n    <row from=\"30004617\" to=\"30004619\"/>\r\n    <row from=\"30004617\" to=\"30004620\"/>\r\n    <row from=\"30004617\" to=\"30004622\"/>\r\n    <row from=\"30004617\" to=\"30004623\"/>\r\n    <row from=\"30004618\" to=\"30004617\"/>\r\n    <row from=\"30004618\" to=\"30004622\"/>\r\n    <row from=\"30004619\" to=\"30004617\"/>\r\n    <row from=\"30004619\" to=\"30004630\"/>\r\n    <row from=\"30004620\" to=\"30004617\"/>\r\n    <row from=\"30004620\" to=\"30004621\"/>\r\n    <row from=\"30004620\" to=\"30004636\"/>\r\n    <row from=\"30004621\" to=\"30004620\"/>\r\n    <row from=\"30004622\" to=\"30004617\"/>\r\n    <row from=\"30004622\" to=\"30004618\"/>\r\n    <row from=\"30004622\" to=\"30004649\"/>\r\n    <row from=\"30004623\" to=\"30004617\"/>\r\n    <row from=\"30004624\" to=\"30004562\"/>\r\n    <row from=\"30004624\" to=\"30004625\"/>\r\n    <row from=\"30004624\" to=\"30004629\"/>\r\n    <row from=\"30004625\" to=\"30004624\"/>\r\n    <row from=\"30004625\" to=\"30004626\"/>\r\n    <row from=\"30004625\" to=\"30004627\"/>\r\n    <row from=\"30004625\" to=\"30004628\"/>\r\n    <row from=\"30004626\" to=\"30004309\"/>\r\n    <row from=\"30004626\" to=\"30004625\"/>\r\n    <row from=\"30004627\" to=\"30004625\"/>\r\n    <row from=\"30004628\" to=\"30004625\"/>\r\n    <row from=\"30004628\" to=\"30004629\"/>\r\n    <row from=\"30004629\" to=\"30004624\"/>\r\n    <row from=\"30004629\" to=\"30004628\"/>\r\n    <row from=\"30004630\" to=\"30004619\"/>\r\n    <row from=\"30004630\" to=\"30004631\"/>\r\n    <row from=\"30004630\" to=\"30004632\"/>\r\n    <row from=\"30004630\" to=\"30004633\"/>\r\n    <row from=\"30004631\" to=\"30004630\"/>\r\n    <row from=\"30004631\" to=\"30004632\"/>\r\n    <row from=\"30004631\" to=\"30004633\"/>\r\n    <row from=\"30004631\" to=\"30004635\"/>\r\n    <row from=\"30004632\" to=\"30004630\"/>\r\n    <row from=\"30004632\" to=\"30004631\"/>\r\n    <row from=\"30004632\" to=\"30004633\"/>\r\n    <row from=\"30004632\" to=\"30004634\"/>\r\n    <row from=\"30004633\" to=\"30004630\"/>\r\n    <row from=\"30004633\" to=\"30004631\"/>\r\n    <row from=\"30004633\" to=\"30004632\"/>\r\n    <row from=\"30004634\" to=\"30004632\"/>\r\n    <row from=\"30004634\" to=\"30004635\"/>\r\n    <row from=\"30004635\" to=\"30004631\"/>\r\n    <row from=\"30004635\" to=\"30004634\"/>\r\n    <row from=\"30004636\" to=\"30004620\"/>\r\n    <row from=\"30004636\" to=\"30004637\"/>\r\n    <row from=\"30004636\" to=\"30004639\"/>\r\n    <row from=\"30004637\" to=\"30004636\"/>\r\n    <row from=\"30004637\" to=\"30004638\"/>\r\n    <row from=\"30004637\" to=\"30004639\"/>\r\n    <row from=\"30004637\" to=\"30004641\"/>\r\n    <row from=\"30004637\" to=\"30004642\"/>\r\n    <row from=\"30004638\" to=\"30004637\"/>\r\n    <row from=\"30004638\" to=\"30004640\"/>\r\n    <row from=\"30004638\" to=\"30004655\"/>\r\n    <row from=\"30004639\" to=\"30004636\"/>\r\n    <row from=\"30004639\" to=\"30004637\"/>\r\n    <row from=\"30004640\" to=\"30004638\"/>\r\n    <row from=\"30004640\" to=\"30004641\"/>\r\n    <row from=\"30004640\" to=\"30004642\"/>\r\n    <row from=\"30004641\" to=\"30004637\"/>\r\n    <row from=\"30004641\" to=\"30004640\"/>\r\n    <row from=\"30004642\" to=\"30004600\"/>\r\n    <row from=\"30004642\" to=\"30004637\"/>\r\n    <row from=\"30004642\" to=\"30004640\"/>\r\n    <row from=\"30004642\" to=\"30004661\"/>\r\n    <row from=\"30004643\" to=\"30004605\"/>\r\n    <row from=\"30004643\" to=\"30004644\"/>\r\n    <row from=\"30004644\" to=\"30004643\"/>\r\n    <row from=\"30004644\" to=\"30004645\"/>\r\n    <row from=\"30004644\" to=\"30004646\"/>\r\n    <row from=\"30004645\" to=\"30004644\"/>\r\n    <row from=\"30004645\" to=\"30004648\"/>\r\n    <row from=\"30004646\" to=\"30004644\"/>\r\n    <row from=\"30004646\" to=\"30004647\"/>\r\n    <row from=\"30004647\" to=\"30004646\"/>\r\n    <row from=\"30004648\" to=\"30004645\"/>\r\n    <row from=\"30004649\" to=\"30004622\"/>\r\n    <row from=\"30004649\" to=\"30004650\"/>\r\n    <row from=\"30004649\" to=\"30004651\"/>\r\n    <row from=\"30004649\" to=\"30004652\"/>\r\n    <row from=\"30004650\" to=\"30004649\"/>\r\n    <row from=\"30004650\" to=\"30004653\"/>\r\n    <row from=\"30004650\" to=\"30004654\"/>\r\n    <row from=\"30004651\" to=\"30004649\"/>\r\n    <row from=\"30004651\" to=\"30004652\"/>\r\n    <row from=\"30004652\" to=\"30004649\"/>\r\n    <row from=\"30004652\" to=\"30004651\"/>\r\n    <row from=\"30004653\" to=\"30004650\"/>\r\n    <row from=\"30004654\" to=\"30004650\"/>\r\n    <row from=\"30004655\" to=\"30004638\"/>\r\n    <row from=\"30004655\" to=\"30004656\"/>\r\n    <row from=\"30004655\" to=\"30004658\"/>\r\n    <row from=\"30004655\" to=\"30004660\"/>\r\n    <row from=\"30004656\" to=\"30004655\"/>\r\n    <row from=\"30004656\" to=\"30004657\"/>\r\n    <row from=\"30004657\" to=\"30004656\"/>\r\n    <row from=\"30004657\" to=\"30004658\"/>\r\n    <row from=\"30004658\" to=\"30004655\"/>\r\n    <row from=\"30004658\" to=\"30004657\"/>\r\n    <row from=\"30004658\" to=\"30004659\"/>\r\n    <row from=\"30004658\" to=\"30004660\"/>\r\n    <row from=\"30004659\" to=\"30004658\"/>\r\n    <row from=\"30004659\" to=\"30004660\"/>\r\n    <row from=\"30004660\" to=\"30004655\"/>\r\n    <row from=\"30004660\" to=\"30004658\"/>\r\n    <row from=\"30004660\" to=\"30004659\"/>\r\n    <row from=\"30004661\" to=\"30004642\"/>\r\n    <row from=\"30004661\" to=\"30004662\"/>\r\n    <row from=\"30004661\" to=\"30004666\"/>\r\n    <row from=\"30004662\" to=\"30004661\"/>\r\n    <row from=\"30004662\" to=\"30004663\"/>\r\n    <row from=\"30004662\" to=\"30004664\"/>\r\n    <row from=\"30004663\" to=\"30004662\"/>\r\n    <row from=\"30004663\" to=\"30004665\"/>\r\n    <row from=\"30004664\" to=\"30004662\"/>\r\n    <row from=\"30004664\" to=\"30004666\"/>\r\n    <row from=\"30004665\" to=\"30004663\"/>\r\n    <row from=\"30004665\" to=\"30004777\"/>\r\n    <row from=\"30004666\" to=\"30004661\"/>\r\n    <row from=\"30004666\" to=\"30004664\"/>\r\n    <row from=\"30004667\" to=\"30003152\"/>\r\n    <row from=\"30004667\" to=\"30004668\"/>\r\n    <row from=\"30004667\" to=\"30004669\"/>\r\n    <row from=\"30004667\" to=\"30004671\"/>\r\n    <row from=\"30004668\" to=\"30004667\"/>\r\n    <row from=\"30004668\" to=\"30004669\"/>\r\n    <row from=\"30004668\" to=\"30004670\"/>\r\n    <row from=\"30004668\" to=\"30004672\"/>\r\n    <row from=\"30004668\" to=\"30004673\"/>\r\n    <row from=\"30004669\" to=\"30004667\"/>\r\n    <row from=\"30004669\" to=\"30004668\"/>\r\n    <row from=\"30004669\" to=\"30004672\"/>\r\n    <row from=\"30004670\" to=\"30004668\"/>\r\n    <row from=\"30004671\" to=\"30003177\"/>\r\n    <row from=\"30004671\" to=\"30004667\"/>\r\n    <row from=\"30004671\" to=\"30004672\"/>\r\n    <row from=\"30004672\" to=\"30004668\"/>\r\n    <row from=\"30004672\" to=\"30004669\"/>\r\n    <row from=\"30004672\" to=\"30004671\"/>\r\n    <row from=\"30004673\" to=\"30004668\"/>\r\n    <row from=\"30004673\" to=\"30004674\"/>\r\n    <row from=\"30004673\" to=\"30004675\"/>\r\n    <row from=\"30004674\" to=\"30004673\"/>\r\n    <row from=\"30004674\" to=\"30004675\"/>\r\n    <row from=\"30004674\" to=\"30004676\"/>\r\n    <row from=\"30004675\" to=\"30004673\"/>\r\n    <row from=\"30004675\" to=\"30004674\"/>\r\n    <row from=\"30004676\" to=\"30004674\"/>\r\n    <row from=\"30004676\" to=\"30004677\"/>\r\n    <row from=\"30004677\" to=\"30004676\"/>\r\n    <row from=\"30004677\" to=\"30004678\"/>\r\n    <row from=\"30004678\" to=\"30004677\"/>\r\n    <row from=\"30004678\" to=\"30004679\"/>\r\n    <row from=\"30004678\" to=\"30004686\"/>\r\n    <row from=\"30004679\" to=\"30004678\"/>\r\n    <row from=\"30004679\" to=\"30004680\"/>\r\n    <row from=\"30004679\" to=\"30004681\"/>\r\n    <row from=\"30004679\" to=\"30004685\"/>\r\n    <row from=\"30004680\" to=\"30004679\"/>\r\n    <row from=\"30004680\" to=\"30004681\"/>\r\n    <row from=\"30004681\" to=\"30004679\"/>\r\n    <row from=\"30004681\" to=\"30004680\"/>\r\n    <row from=\"30004681\" to=\"30004682\"/>\r\n    <row from=\"30004681\" to=\"30004685\"/>\r\n    <row from=\"30004682\" to=\"30004681\"/>\r\n    <row from=\"30004682\" to=\"30004683\"/>\r\n    <row from=\"30004682\" to=\"30004685\"/>\r\n    <row from=\"30004683\" to=\"30004682\"/>\r\n    <row from=\"30004683\" to=\"30004684\"/>\r\n    <row from=\"30004684\" to=\"30004683\"/>\r\n    <row from=\"30004684\" to=\"30004700\"/>\r\n    <row from=\"30004685\" to=\"30004679\"/>\r\n    <row from=\"30004685\" to=\"30004681\"/>\r\n    <row from=\"30004685\" to=\"30004682\"/>\r\n    <row from=\"30004686\" to=\"30004678\"/>\r\n    <row from=\"30004686\" to=\"30004687\"/>\r\n    <row from=\"30004686\" to=\"30004688\"/>\r\n    <row from=\"30004686\" to=\"30004690\"/>\r\n    <row from=\"30004687\" to=\"30004686\"/>\r\n    <row from=\"30004687\" to=\"30004688\"/>\r\n    <row from=\"30004687\" to=\"30004689\"/>\r\n    <row from=\"30004687\" to=\"30004690\"/>\r\n    <row from=\"30004688\" to=\"30004686\"/>\r\n    <row from=\"30004688\" to=\"30004687\"/>\r\n    <row from=\"30004688\" to=\"30004690\"/>\r\n    <row from=\"30004689\" to=\"30004687\"/>\r\n    <row from=\"30004689\" to=\"30004690\"/>\r\n    <row from=\"30004689\" to=\"30004691\"/>\r\n    <row from=\"30004690\" to=\"30004686\"/>\r\n    <row from=\"30004690\" to=\"30004687\"/>\r\n    <row from=\"30004690\" to=\"30004688\"/>\r\n    <row from=\"30004690\" to=\"30004689\"/>\r\n    <row from=\"30004691\" to=\"30003151\"/>\r\n    <row from=\"30004691\" to=\"30004689\"/>\r\n    <row from=\"30004691\" to=\"30004692\"/>\r\n    <row from=\"30004692\" to=\"30004691\"/>\r\n    <row from=\"30004692\" to=\"30004693\"/>\r\n    <row from=\"30004693\" to=\"30004692\"/>\r\n    <row from=\"30004693\" to=\"30004694\"/>\r\n    <row from=\"30004694\" to=\"30004693\"/>\r\n    <row from=\"30004694\" to=\"30004695\"/>\r\n    <row from=\"30004694\" to=\"30004697\"/>\r\n    <row from=\"30004694\" to=\"30004698\"/>\r\n    <row from=\"30004695\" to=\"30004694\"/>\r\n    <row from=\"30004695\" to=\"30004696\"/>\r\n    <row from=\"30004695\" to=\"30004699\"/>\r\n    <row from=\"30004696\" to=\"30004695\"/>\r\n    <row from=\"30004696\" to=\"30004937\"/>\r\n    <row from=\"30004697\" to=\"30004694\"/>\r\n    <row from=\"30004698\" to=\"30004694\"/>\r\n    <row from=\"30004699\" to=\"30004695\"/>\r\n    <row from=\"30004700\" to=\"30004684\"/>\r\n    <row from=\"30004700\" to=\"30004701\"/>\r\n    <row from=\"30004701\" to=\"30004700\"/>\r\n    <row from=\"30004701\" to=\"30004702\"/>\r\n    <row from=\"30004702\" to=\"30004701\"/>\r\n    <row from=\"30004702\" to=\"30004703\"/>\r\n    <row from=\"30004703\" to=\"30004702\"/>\r\n    <row from=\"30004703\" to=\"30004704\"/>\r\n    <row from=\"30004703\" to=\"30004705\"/>\r\n    <row from=\"30004704\" to=\"30004703\"/>\r\n    <row from=\"30004704\" to=\"30004705\"/>\r\n    <row from=\"30004705\" to=\"30004703\"/>\r\n    <row from=\"30004705\" to=\"30004704\"/>\r\n    <row from=\"30004706\" to=\"30003967\"/>\r\n    <row from=\"30004706\" to=\"30004707\"/>\r\n    <row from=\"30004707\" to=\"30004706\"/>\r\n    <row from=\"30004707\" to=\"30004708\"/>\r\n    <row from=\"30004707\" to=\"30004709\"/>\r\n    <row from=\"30004707\" to=\"30004710\"/>\r\n    <row from=\"30004708\" to=\"30004707\"/>\r\n    <row from=\"30004708\" to=\"30004710\"/>\r\n    <row from=\"30004708\" to=\"30004740\"/>\r\n    <row from=\"30004709\" to=\"30004707\"/>\r\n    <row from=\"30004710\" to=\"30004013\"/>\r\n    <row from=\"30004710\" to=\"30004707\"/>\r\n    <row from=\"30004710\" to=\"30004708\"/>\r\n    <row from=\"30004710\" to=\"30004711\"/>\r\n    <row from=\"30004711\" to=\"30004710\"/>\r\n    <row from=\"30004711\" to=\"30004712\"/>\r\n    <row from=\"30004711\" to=\"30004718\"/>\r\n    <row from=\"30004712\" to=\"30004711\"/>\r\n    <row from=\"30004712\" to=\"30004713\"/>\r\n    <row from=\"30004712\" to=\"30004715\"/>\r\n    <row from=\"30004713\" to=\"30004712\"/>\r\n    <row from=\"30004713\" to=\"30004714\"/>\r\n    <row from=\"30004714\" to=\"30004713\"/>\r\n    <row from=\"30004714\" to=\"30004716\"/>\r\n    <row from=\"30004715\" to=\"30004712\"/>\r\n    <row from=\"30004715\" to=\"30004717\"/>\r\n    <row from=\"30004716\" to=\"30004714\"/>\r\n    <row from=\"30004716\" to=\"30004730\"/>\r\n    <row from=\"30004717\" to=\"30004715\"/>\r\n    <row from=\"30004717\" to=\"30004724\"/>\r\n    <row from=\"30004717\" to=\"30004737\"/>\r\n    <row from=\"30004718\" to=\"30004711\"/>\r\n    <row from=\"30004718\" to=\"30004719\"/>\r\n    <row from=\"30004718\" to=\"30004721\"/>\r\n    <row from=\"30004719\" to=\"30004718\"/>\r\n    <row from=\"30004719\" to=\"30004720\"/>\r\n    <row from=\"30004719\" to=\"30004722\"/>\r\n    <row from=\"30004720\" to=\"30004719\"/>\r\n    <row from=\"30004720\" to=\"30004723\"/>\r\n    <row from=\"30004721\" to=\"30004718\"/>\r\n    <row from=\"30004722\" to=\"30004719\"/>\r\n    <row from=\"30004722\" to=\"30004750\"/>\r\n    <row from=\"30004722\" to=\"30004778\"/>\r\n    <row from=\"30004723\" to=\"30004720\"/>\r\n    <row from=\"30004724\" to=\"30004717\"/>\r\n    <row from=\"30004724\" to=\"30004725\"/>\r\n    <row from=\"30004725\" to=\"30004724\"/>\r\n    <row from=\"30004725\" to=\"30004726\"/>\r\n    <row from=\"30004725\" to=\"30004727\"/>\r\n    <row from=\"30004725\" to=\"30004729\"/>\r\n    <row from=\"30004726\" to=\"30004725\"/>\r\n    <row from=\"30004726\" to=\"30004728\"/>\r\n    <row from=\"30004727\" to=\"30004725\"/>\r\n    <row from=\"30004728\" to=\"30004726\"/>\r\n    <row from=\"30004728\" to=\"30004744\"/>\r\n    <row from=\"30004729\" to=\"30004725\"/>\r\n    <row from=\"30004730\" to=\"30004716\"/>\r\n    <row from=\"30004730\" to=\"30004731\"/>\r\n    <row from=\"30004730\" to=\"30004735\"/>\r\n    <row from=\"30004731\" to=\"30004730\"/>\r\n    <row from=\"30004731\" to=\"30004732\"/>\r\n    <row from=\"30004731\" to=\"30004734\"/>\r\n    <row from=\"30004731\" to=\"30004736\"/>\r\n    <row from=\"30004732\" to=\"30004731\"/>\r\n    <row from=\"30004732\" to=\"30004733\"/>\r\n    <row from=\"30004732\" to=\"30004736\"/>\r\n    <row from=\"30004733\" to=\"30004732\"/>\r\n    <row from=\"30004734\" to=\"30004731\"/>\r\n    <row from=\"30004735\" to=\"30004730\"/>\r\n    <row from=\"30004735\" to=\"30004759\"/>\r\n    <row from=\"30004736\" to=\"30004731\"/>\r\n    <row from=\"30004736\" to=\"30004732\"/>\r\n    <row from=\"30004736\" to=\"30004772\"/>\r\n    <row from=\"30004737\" to=\"30004717\"/>\r\n    <row from=\"30004737\" to=\"30004738\"/>\r\n    <row from=\"30004737\" to=\"30004740\"/>\r\n    <row from=\"30004738\" to=\"30004299\"/>\r\n    <row from=\"30004738\" to=\"30004737\"/>\r\n    <row from=\"30004738\" to=\"30004739\"/>\r\n    <row from=\"30004738\" to=\"30004740\"/>\r\n    <row from=\"30004739\" to=\"30004738\"/>\r\n    <row from=\"30004739\" to=\"30004741\"/>\r\n    <row from=\"30004740\" to=\"30004708\"/>\r\n    <row from=\"30004740\" to=\"30004737\"/>\r\n    <row from=\"30004740\" to=\"30004738\"/>\r\n    <row from=\"30004740\" to=\"30004742\"/>\r\n    <row from=\"30004741\" to=\"30004739\"/>\r\n    <row from=\"30004742\" to=\"30004740\"/>\r\n    <row from=\"30004742\" to=\"30004743\"/>\r\n    <row from=\"30004743\" to=\"30004742\"/>\r\n    <row from=\"30004744\" to=\"30004728\"/>\r\n    <row from=\"30004744\" to=\"30004745\"/>\r\n    <row from=\"30004744\" to=\"30004747\"/>\r\n    <row from=\"30004745\" to=\"30004744\"/>\r\n    <row from=\"30004745\" to=\"30004746\"/>\r\n    <row from=\"30004745\" to=\"30004748\"/>\r\n    <row from=\"30004745\" to=\"30004749\"/>\r\n    <row from=\"30004746\" to=\"30004745\"/>\r\n    <row from=\"30004746\" to=\"30004749\"/>\r\n    <row from=\"30004746\" to=\"30004766\"/>\r\n    <row from=\"30004747\" to=\"30004744\"/>\r\n    <row from=\"30004747\" to=\"30004748\"/>\r\n    <row from=\"30004748\" to=\"30004745\"/>\r\n    <row from=\"30004748\" to=\"30004747\"/>\r\n    <row from=\"30004749\" to=\"30004745\"/>\r\n    <row from=\"30004749\" to=\"30004746\"/>\r\n    <row from=\"30004749\" to=\"30004784\"/>\r\n    <row from=\"30004750\" to=\"30004722\"/>\r\n    <row from=\"30004750\" to=\"30004751\"/>\r\n    <row from=\"30004751\" to=\"30004750\"/>\r\n    <row from=\"30004751\" to=\"30004752\"/>\r\n    <row from=\"30004751\" to=\"30004753\"/>\r\n    <row from=\"30004751\" to=\"30004757\"/>\r\n    <row from=\"30004752\" to=\"30004751\"/>\r\n    <row from=\"30004752\" to=\"30004755\"/>\r\n    <row from=\"30004753\" to=\"30004751\"/>\r\n    <row from=\"30004753\" to=\"30004754\"/>\r\n    <row from=\"30004754\" to=\"30004753\"/>\r\n    <row from=\"30004754\" to=\"30004756\"/>\r\n    <row from=\"30004755\" to=\"30004752\"/>\r\n    <row from=\"30004755\" to=\"30004757\"/>\r\n    <row from=\"30004756\" to=\"30004754\"/>\r\n    <row from=\"30004756\" to=\"30004758\"/>\r\n    <row from=\"30004757\" to=\"30004751\"/>\r\n    <row from=\"30004757\" to=\"30004755\"/>\r\n    <row from=\"30004758\" to=\"30004012\"/>\r\n    <row from=\"30004758\" to=\"30004756\"/>\r\n    <row from=\"30004759\" to=\"30004735\"/>\r\n    <row from=\"30004759\" to=\"30004760\"/>\r\n    <row from=\"30004759\" to=\"30004762\"/>\r\n    <row from=\"30004759\" to=\"30004765\"/>\r\n    <row from=\"30004760\" to=\"30004759\"/>\r\n    <row from=\"30004760\" to=\"30004761\"/>\r\n    <row from=\"30004760\" to=\"30004765\"/>\r\n    <row from=\"30004761\" to=\"30004760\"/>\r\n    <row from=\"30004761\" to=\"30004763\"/>\r\n    <row from=\"30004762\" to=\"30004759\"/>\r\n    <row from=\"30004762\" to=\"30004764\"/>\r\n    <row from=\"30004763\" to=\"30004761\"/>\r\n    <row from=\"30004764\" to=\"30004028\"/>\r\n    <row from=\"30004764\" to=\"30004762\"/>\r\n    <row from=\"30004765\" to=\"30004759\"/>\r\n    <row from=\"30004765\" to=\"30004760\"/>\r\n    <row from=\"30004766\" to=\"30004746\"/>\r\n    <row from=\"30004766\" to=\"30004767\"/>\r\n    <row from=\"30004766\" to=\"30004768\"/>\r\n    <row from=\"30004766\" to=\"30004769\"/>\r\n    <row from=\"30004766\" to=\"30004770\"/>\r\n    <row from=\"30004767\" to=\"30004766\"/>\r\n    <row from=\"30004767\" to=\"30004770\"/>\r\n    <row from=\"30004768\" to=\"30004766\"/>\r\n    <row from=\"30004768\" to=\"30004770\"/>\r\n    <row from=\"30004769\" to=\"30004766\"/>\r\n    <row from=\"30004769\" to=\"30004771\"/>\r\n    <row from=\"30004770\" to=\"30004766\"/>\r\n    <row from=\"30004770\" to=\"30004767\"/>\r\n    <row from=\"30004770\" to=\"30004768\"/>\r\n    <row from=\"30004771\" to=\"30004769\"/>\r\n    <row from=\"30004772\" to=\"30004736\"/>\r\n    <row from=\"30004772\" to=\"30004773\"/>\r\n    <row from=\"30004772\" to=\"30004774\"/>\r\n    <row from=\"30004773\" to=\"30004772\"/>\r\n    <row from=\"30004773\" to=\"30004774\"/>\r\n    <row from=\"30004773\" to=\"30004775\"/>\r\n    <row from=\"30004774\" to=\"30004772\"/>\r\n    <row from=\"30004774\" to=\"30004773\"/>\r\n    <row from=\"30004774\" to=\"30004775\"/>\r\n    <row from=\"30004774\" to=\"30004776\"/>\r\n    <row from=\"30004774\" to=\"30004777\"/>\r\n    <row from=\"30004775\" to=\"30004773\"/>\r\n    <row from=\"30004775\" to=\"30004774\"/>\r\n    <row from=\"30004776\" to=\"30004774\"/>\r\n    <row from=\"30004777\" to=\"30004665\"/>\r\n    <row from=\"30004777\" to=\"30004774\"/>\r\n    <row from=\"30004778\" to=\"30004722\"/>\r\n    <row from=\"30004778\" to=\"30004779\"/>\r\n    <row from=\"30004778\" to=\"30004783\"/>\r\n    <row from=\"30004779\" to=\"30004778\"/>\r\n    <row from=\"30004779\" to=\"30004780\"/>\r\n    <row from=\"30004779\" to=\"30004790\"/>\r\n    <row from=\"30004780\" to=\"30004779\"/>\r\n    <row from=\"30004780\" to=\"30004781\"/>\r\n    <row from=\"30004781\" to=\"30004780\"/>\r\n    <row from=\"30004781\" to=\"30004782\"/>\r\n    <row from=\"30004782\" to=\"30004781\"/>\r\n    <row from=\"30004782\" to=\"30004796\"/>\r\n    <row from=\"30004783\" to=\"30004778\"/>\r\n    <row from=\"30004784\" to=\"30004749\"/>\r\n    <row from=\"30004784\" to=\"30004785\"/>\r\n    <row from=\"30004785\" to=\"30004784\"/>\r\n    <row from=\"30004785\" to=\"30004786\"/>\r\n    <row from=\"30004785\" to=\"30004787\"/>\r\n    <row from=\"30004786\" to=\"30004785\"/>\r\n    <row from=\"30004786\" to=\"30004787\"/>\r\n    <row from=\"30004786\" to=\"30004789\"/>\r\n    <row from=\"30004787\" to=\"30004785\"/>\r\n    <row from=\"30004787\" to=\"30004786\"/>\r\n    <row from=\"30004787\" to=\"30004788\"/>\r\n    <row from=\"30004787\" to=\"30004789\"/>\r\n    <row from=\"30004788\" to=\"30004787\"/>\r\n    <row from=\"30004789\" to=\"30004786\"/>\r\n    <row from=\"30004789\" to=\"30004787\"/>\r\n    <row from=\"30004790\" to=\"30004779\"/>\r\n    <row from=\"30004790\" to=\"30004791\"/>\r\n    <row from=\"30004790\" to=\"30004792\"/>\r\n    <row from=\"30004790\" to=\"30004793\"/>\r\n    <row from=\"30004791\" to=\"30004790\"/>\r\n    <row from=\"30004791\" to=\"30004792\"/>\r\n    <row from=\"30004791\" to=\"30004794\"/>\r\n    <row from=\"30004792\" to=\"30004790\"/>\r\n    <row from=\"30004792\" to=\"30004791\"/>\r\n    <row from=\"30004792\" to=\"30004794\"/>\r\n    <row from=\"30004792\" to=\"30004795\"/>\r\n    <row from=\"30004793\" to=\"30004790\"/>\r\n    <row from=\"30004793\" to=\"30004794\"/>\r\n    <row from=\"30004794\" to=\"30004791\"/>\r\n    <row from=\"30004794\" to=\"30004792\"/>\r\n    <row from=\"30004794\" to=\"30004793\"/>\r\n    <row from=\"30004795\" to=\"30004792\"/>\r\n    <row from=\"30004796\" to=\"30004782\"/>\r\n    <row from=\"30004796\" to=\"30004797\"/>\r\n    <row from=\"30004796\" to=\"30004799\"/>\r\n    <row from=\"30004796\" to=\"30004801\"/>\r\n    <row from=\"30004797\" to=\"30004796\"/>\r\n    <row from=\"30004797\" to=\"30004798\"/>\r\n    <row from=\"30004798\" to=\"30004027\"/>\r\n    <row from=\"30004798\" to=\"30004797\"/>\r\n    <row from=\"30004798\" to=\"30004799\"/>\r\n    <row from=\"30004798\" to=\"30004800\"/>\r\n    <row from=\"30004799\" to=\"30004796\"/>\r\n    <row from=\"30004799\" to=\"30004798\"/>\r\n    <row from=\"30004799\" to=\"30004801\"/>\r\n    <row from=\"30004800\" to=\"30004798\"/>\r\n    <row from=\"30004800\" to=\"30004960\"/>\r\n    <row from=\"30004801\" to=\"30004796\"/>\r\n    <row from=\"30004801\" to=\"30004799\"/>\r\n    <row from=\"30004801\" to=\"30004802\"/>\r\n    <row from=\"30004801\" to=\"30004927\"/>\r\n    <row from=\"30004802\" to=\"30004801\"/>\r\n    <row from=\"30004803\" to=\"30004805\"/>\r\n    <row from=\"30004804\" to=\"30002122\"/>\r\n    <row from=\"30004804\" to=\"30004805\"/>\r\n    <row from=\"30004805\" to=\"30004803\"/>\r\n    <row from=\"30004805\" to=\"30004804\"/>\r\n    <row from=\"30004805\" to=\"30004806\"/>\r\n    <row from=\"30004806\" to=\"30004805\"/>\r\n    <row from=\"30004806\" to=\"30004807\"/>\r\n    <row from=\"30004807\" to=\"30004806\"/>\r\n    <row from=\"30004807\" to=\"30004808\"/>\r\n    <row from=\"30004807\" to=\"30004809\"/>\r\n    <row from=\"30004808\" to=\"30001196\"/>\r\n    <row from=\"30004808\" to=\"30004807\"/>\r\n    <row from=\"30004808\" to=\"30004811\"/>\r\n    <row from=\"30004809\" to=\"30004807\"/>\r\n    <row from=\"30004809\" to=\"30004810\"/>\r\n    <row from=\"30004810\" to=\"30004809\"/>\r\n    <row from=\"30004810\" to=\"30004817\"/>\r\n    <row from=\"30004811\" to=\"30004808\"/>\r\n    <row from=\"30004811\" to=\"30004812\"/>\r\n    <row from=\"30004811\" to=\"30004815\"/>\r\n    <row from=\"30004812\" to=\"30004811\"/>\r\n    <row from=\"30004812\" to=\"30004813\"/>\r\n    <row from=\"30004812\" to=\"30004816\"/>\r\n    <row from=\"30004813\" to=\"30004812\"/>\r\n    <row from=\"30004813\" to=\"30004814\"/>\r\n    <row from=\"30004813\" to=\"30004816\"/>\r\n    <row from=\"30004814\" to=\"30002581\"/>\r\n    <row from=\"30004814\" to=\"30004813\"/>\r\n    <row from=\"30004814\" to=\"30004816\"/>\r\n    <row from=\"30004815\" to=\"30004811\"/>\r\n    <row from=\"30004815\" to=\"30004824\"/>\r\n    <row from=\"30004816\" to=\"30004812\"/>\r\n    <row from=\"30004816\" to=\"30004813\"/>\r\n    <row from=\"30004816\" to=\"30004814\"/>\r\n    <row from=\"30004817\" to=\"30004810\"/>\r\n    <row from=\"30004817\" to=\"30004818\"/>\r\n    <row from=\"30004818\" to=\"30004817\"/>\r\n    <row from=\"30004818\" to=\"30004819\"/>\r\n    <row from=\"30004818\" to=\"30004822\"/>\r\n    <row from=\"30004819\" to=\"30004818\"/>\r\n    <row from=\"30004819\" to=\"30004820\"/>\r\n    <row from=\"30004819\" to=\"30004822\"/>\r\n    <row from=\"30004820\" to=\"30002162\"/>\r\n    <row from=\"30004820\" to=\"30004819\"/>\r\n    <row from=\"30004820\" to=\"30004821\"/>\r\n    <row from=\"30004821\" to=\"30004820\"/>\r\n    <row from=\"30004821\" to=\"30004823\"/>\r\n    <row from=\"30004822\" to=\"30004818\"/>\r\n    <row from=\"30004822\" to=\"30004819\"/>\r\n    <row from=\"30004822\" to=\"30004823\"/>\r\n    <row from=\"30004822\" to=\"30004831\"/>\r\n    <row from=\"30004823\" to=\"30004821\"/>\r\n    <row from=\"30004823\" to=\"30004822\"/>\r\n    <row from=\"30004824\" to=\"30004815\"/>\r\n    <row from=\"30004824\" to=\"30004825\"/>\r\n    <row from=\"30004825\" to=\"30004824\"/>\r\n    <row from=\"30004825\" to=\"30004826\"/>\r\n    <row from=\"30004825\" to=\"30004829\"/>\r\n    <row from=\"30004826\" to=\"30004825\"/>\r\n    <row from=\"30004826\" to=\"30004827\"/>\r\n    <row from=\"30004826\" to=\"30004828\"/>\r\n    <row from=\"30004827\" to=\"30004826\"/>\r\n    <row from=\"30004828\" to=\"30004826\"/>\r\n    <row from=\"30004829\" to=\"30004825\"/>\r\n    <row from=\"30004829\" to=\"30004830\"/>\r\n    <row from=\"30004830\" to=\"30004829\"/>\r\n    <row from=\"30004831\" to=\"30004822\"/>\r\n    <row from=\"30004831\" to=\"30004832\"/>\r\n    <row from=\"30004831\" to=\"30004834\"/>\r\n    <row from=\"30004832\" to=\"30004831\"/>\r\n    <row from=\"30004832\" to=\"30004833\"/>\r\n    <row from=\"30004833\" to=\"30004832\"/>\r\n    <row from=\"30004833\" to=\"30004836\"/>\r\n    <row from=\"30004834\" to=\"30004831\"/>\r\n    <row from=\"30004834\" to=\"30004835\"/>\r\n    <row from=\"30004834\" to=\"30004837\"/>\r\n    <row from=\"30004835\" to=\"30004834\"/>\r\n    <row from=\"30004835\" to=\"30004837\"/>\r\n    <row from=\"30004836\" to=\"30004833\"/>\r\n    <row from=\"30004836\" to=\"30004838\"/>\r\n    <row from=\"30004837\" to=\"30004834\"/>\r\n    <row from=\"30004837\" to=\"30004835\"/>\r\n    <row from=\"30004837\" to=\"30004838\"/>\r\n    <row from=\"30004838\" to=\"30004836\"/>\r\n    <row from=\"30004838\" to=\"30004837\"/>\r\n    <row from=\"30004838\" to=\"30004839\"/>\r\n    <row from=\"30004839\" to=\"30004838\"/>\r\n    <row from=\"30004839\" to=\"30004840\"/>\r\n    <row from=\"30004839\" to=\"30004842\"/>\r\n    <row from=\"30004840\" to=\"30004839\"/>\r\n    <row from=\"30004840\" to=\"30004841\"/>\r\n    <row from=\"30004840\" to=\"30004843\"/>\r\n    <row from=\"30004840\" to=\"30004844\"/>\r\n    <row from=\"30004841\" to=\"30004840\"/>\r\n    <row from=\"30004841\" to=\"30004843\"/>\r\n    <row from=\"30004842\" to=\"30004435\"/>\r\n    <row from=\"30004842\" to=\"30004839\"/>\r\n    <row from=\"30004843\" to=\"30004840\"/>\r\n    <row from=\"30004843\" to=\"30004841\"/>\r\n    <row from=\"30004843\" to=\"30004844\"/>\r\n    <row from=\"30004844\" to=\"30004840\"/>\r\n    <row from=\"30004844\" to=\"30004843\"/>\r\n    <row from=\"30004844\" to=\"30004845\"/>\r\n    <row from=\"30004845\" to=\"30004844\"/>\r\n    <row from=\"30004845\" to=\"30004846\"/>\r\n    <row from=\"30004846\" to=\"30004845\"/>\r\n    <row from=\"30004846\" to=\"30004847\"/>\r\n    <row from=\"30004846\" to=\"30004848\"/>\r\n    <row from=\"30004847\" to=\"30004846\"/>\r\n    <row from=\"30004847\" to=\"30004850\"/>\r\n    <row from=\"30004848\" to=\"30004846\"/>\r\n    <row from=\"30004848\" to=\"30004849\"/>\r\n    <row from=\"30004849\" to=\"30004848\"/>\r\n    <row from=\"30004849\" to=\"30004851\"/>\r\n    <row from=\"30004849\" to=\"30004852\"/>\r\n    <row from=\"30004850\" to=\"30004847\"/>\r\n    <row from=\"30004851\" to=\"30004849\"/>\r\n    <row from=\"30004852\" to=\"30004849\"/>\r\n    <row from=\"30004852\" to=\"30004853\"/>\r\n    <row from=\"30004852\" to=\"30004854\"/>\r\n    <row from=\"30004852\" to=\"30004855\"/>\r\n    <row from=\"30004852\" to=\"30004856\"/>\r\n    <row from=\"30004852\" to=\"30004857\"/>\r\n    <row from=\"30004853\" to=\"30004852\"/>\r\n    <row from=\"30004854\" to=\"30004852\"/>\r\n    <row from=\"30004854\" to=\"30004856\"/>\r\n    <row from=\"30004854\" to=\"30004857\"/>\r\n    <row from=\"30004855\" to=\"30004852\"/>\r\n    <row from=\"30004855\" to=\"30004859\"/>\r\n    <row from=\"30004856\" to=\"30004852\"/>\r\n    <row from=\"30004856\" to=\"30004854\"/>\r\n    <row from=\"30004856\" to=\"30004857\"/>\r\n    <row from=\"30004857\" to=\"30004852\"/>\r\n    <row from=\"30004857\" to=\"30004854\"/>\r\n    <row from=\"30004857\" to=\"30004856\"/>\r\n    <row from=\"30004857\" to=\"30004858\"/>\r\n    <row from=\"30004857\" to=\"30004866\"/>\r\n    <row from=\"30004858\" to=\"30004857\"/>\r\n    <row from=\"30004859\" to=\"30004855\"/>\r\n    <row from=\"30004859\" to=\"30004860\"/>\r\n    <row from=\"30004859\" to=\"30004862\"/>\r\n    <row from=\"30004860\" to=\"30004859\"/>\r\n    <row from=\"30004860\" to=\"30004861\"/>\r\n    <row from=\"30004861\" to=\"30004860\"/>\r\n    <row from=\"30004861\" to=\"30004862\"/>\r\n    <row from=\"30004862\" to=\"30004859\"/>\r\n    <row from=\"30004862\" to=\"30004861\"/>\r\n    <row from=\"30004862\" to=\"30004863\"/>\r\n    <row from=\"30004862\" to=\"30004865\"/>\r\n    <row from=\"30004863\" to=\"30004862\"/>\r\n    <row from=\"30004863\" to=\"30004864\"/>\r\n    <row from=\"30004863\" to=\"30004865\"/>\r\n    <row from=\"30004864\" to=\"30004863\"/>\r\n    <row from=\"30004865\" to=\"30004862\"/>\r\n    <row from=\"30004865\" to=\"30004863\"/>\r\n    <row from=\"30004866\" to=\"30004857\"/>\r\n    <row from=\"30004866\" to=\"30004867\"/>\r\n    <row from=\"30004867\" to=\"30004866\"/>\r\n    <row from=\"30004867\" to=\"30004868\"/>\r\n    <row from=\"30004868\" to=\"30004867\"/>\r\n    <row from=\"30004868\" to=\"30004869\"/>\r\n    <row from=\"30004869\" to=\"30004868\"/>\r\n    <row from=\"30004869\" to=\"30004870\"/>\r\n    <row from=\"30004870\" to=\"30004869\"/>\r\n    <row from=\"30004870\" to=\"30004871\"/>\r\n    <row from=\"30004870\" to=\"30004872\"/>\r\n    <row from=\"30004870\" to=\"30004878\"/>\r\n    <row from=\"30004871\" to=\"30002183\"/>\r\n    <row from=\"30004871\" to=\"30004870\"/>\r\n    <row from=\"30004872\" to=\"30004870\"/>\r\n    <row from=\"30004872\" to=\"30004873\"/>\r\n    <row from=\"30004873\" to=\"30004872\"/>\r\n    <row from=\"30004873\" to=\"30004874\"/>\r\n    <row from=\"30004874\" to=\"30004873\"/>\r\n    <row from=\"30004874\" to=\"30004875\"/>\r\n    <row from=\"30004875\" to=\"30004874\"/>\r\n    <row from=\"30004875\" to=\"30004876\"/>\r\n    <row from=\"30004876\" to=\"30004875\"/>\r\n    <row from=\"30004876\" to=\"30004877\"/>\r\n    <row from=\"30004877\" to=\"30004876\"/>\r\n    <row from=\"30004878\" to=\"30000483\"/>\r\n    <row from=\"30004878\" to=\"30004870\"/>\r\n    <row from=\"30004878\" to=\"30004879\"/>\r\n    <row from=\"30004878\" to=\"30004882\"/>\r\n    <row from=\"30004879\" to=\"30004878\"/>\r\n    <row from=\"30004879\" to=\"30004880\"/>\r\n    <row from=\"30004879\" to=\"30004881\"/>\r\n    <row from=\"30004880\" to=\"30004879\"/>\r\n    <row from=\"30004880\" to=\"30004882\"/>\r\n    <row from=\"30004881\" to=\"30004879\"/>\r\n    <row from=\"30004881\" to=\"30004883\"/>\r\n    <row from=\"30004882\" to=\"30004878\"/>\r\n    <row from=\"30004882\" to=\"30004880\"/>\r\n    <row from=\"30004882\" to=\"30004926\"/>\r\n    <row from=\"30004883\" to=\"30004881\"/>\r\n    <row from=\"30004884\" to=\"30004423\"/>\r\n    <row from=\"30004884\" to=\"30004885\"/>\r\n    <row from=\"30004884\" to=\"30004886\"/>\r\n    <row from=\"30004885\" to=\"30004884\"/>\r\n    <row from=\"30004885\" to=\"30004886\"/>\r\n    <row from=\"30004885\" to=\"30004887\"/>\r\n    <row from=\"30004885\" to=\"30004889\"/>\r\n    <row from=\"30004886\" to=\"30004884\"/>\r\n    <row from=\"30004886\" to=\"30004885\"/>\r\n    <row from=\"30004886\" to=\"30004889\"/>\r\n    <row from=\"30004887\" to=\"30004885\"/>\r\n    <row from=\"30004887\" to=\"30004888\"/>\r\n    <row from=\"30004888\" to=\"30004887\"/>\r\n    <row from=\"30004888\" to=\"30004890\"/>\r\n    <row from=\"30004889\" to=\"30004885\"/>\r\n    <row from=\"30004889\" to=\"30004886\"/>\r\n    <row from=\"30004890\" to=\"30004888\"/>\r\n    <row from=\"30004890\" to=\"30004891\"/>\r\n    <row from=\"30004890\" to=\"30004892\"/>\r\n    <row from=\"30004890\" to=\"30004895\"/>\r\n    <row from=\"30004891\" to=\"30004890\"/>\r\n    <row from=\"30004891\" to=\"30004893\"/>\r\n    <row from=\"30004891\" to=\"30004896\"/>\r\n    <row from=\"30004892\" to=\"30004890\"/>\r\n    <row from=\"30004892\" to=\"30004894\"/>\r\n    <row from=\"30004893\" to=\"30004891\"/>\r\n    <row from=\"30004894\" to=\"30004892\"/>\r\n    <row from=\"30004894\" to=\"30004895\"/>\r\n    <row from=\"30004895\" to=\"30004890\"/>\r\n    <row from=\"30004895\" to=\"30004894\"/>\r\n    <row from=\"30004895\" to=\"30004897\"/>\r\n    <row from=\"30004896\" to=\"30004891\"/>\r\n    <row from=\"30004897\" to=\"30004895\"/>\r\n    <row from=\"30004897\" to=\"30004898\"/>\r\n    <row from=\"30004897\" to=\"30004904\"/>\r\n    <row from=\"30004898\" to=\"30004897\"/>\r\n    <row from=\"30004898\" to=\"30004899\"/>\r\n    <row from=\"30004898\" to=\"30004900\"/>\r\n    <row from=\"30004899\" to=\"30004898\"/>\r\n    <row from=\"30004899\" to=\"30004901\"/>\r\n    <row from=\"30004900\" to=\"30004898\"/>\r\n    <row from=\"30004900\" to=\"30004901\"/>\r\n    <row from=\"30004901\" to=\"30004899\"/>\r\n    <row from=\"30004901\" to=\"30004900\"/>\r\n    <row from=\"30004901\" to=\"30004902\"/>\r\n    <row from=\"30004902\" to=\"30004901\"/>\r\n    <row from=\"30004902\" to=\"30004903\"/>\r\n    <row from=\"30004903\" to=\"30004902\"/>\r\n    <row from=\"30004904\" to=\"30004897\"/>\r\n    <row from=\"30004904\" to=\"30004905\"/>\r\n    <row from=\"30004904\" to=\"30004906\"/>\r\n    <row from=\"30004904\" to=\"30004907\"/>\r\n    <row from=\"30004904\" to=\"30004909\"/>\r\n    <row from=\"30004905\" to=\"30004904\"/>\r\n    <row from=\"30004905\" to=\"30004906\"/>\r\n    <row from=\"30004906\" to=\"30004904\"/>\r\n    <row from=\"30004906\" to=\"30004905\"/>\r\n    <row from=\"30004906\" to=\"30004908\"/>\r\n    <row from=\"30004907\" to=\"30004904\"/>\r\n    <row from=\"30004908\" to=\"30004906\"/>\r\n    <row from=\"30004908\" to=\"30004909\"/>\r\n    <row from=\"30004908\" to=\"30004911\"/>\r\n    <row from=\"30004909\" to=\"30004904\"/>\r\n    <row from=\"30004909\" to=\"30004908\"/>\r\n    <row from=\"30004909\" to=\"30004910\"/>\r\n    <row from=\"30004909\" to=\"30004920\"/>\r\n    <row from=\"30004910\" to=\"30004909\"/>\r\n    <row from=\"30004911\" to=\"30004908\"/>\r\n    <row from=\"30004911\" to=\"30004912\"/>\r\n    <row from=\"30004912\" to=\"30004911\"/>\r\n    <row from=\"30004912\" to=\"30004913\"/>\r\n    <row from=\"30004912\" to=\"30004916\"/>\r\n    <row from=\"30004913\" to=\"30004912\"/>\r\n    <row from=\"30004913\" to=\"30004914\"/>\r\n    <row from=\"30004913\" to=\"30004919\"/>\r\n    <row from=\"30004914\" to=\"30004913\"/>\r\n    <row from=\"30004914\" to=\"30004915\"/>\r\n    <row from=\"30004914\" to=\"30004917\"/>\r\n    <row from=\"30004914\" to=\"30004919\"/>\r\n    <row from=\"30004915\" to=\"30004914\"/>\r\n    <row from=\"30004915\" to=\"30004918\"/>\r\n    <row from=\"30004916\" to=\"30004912\"/>\r\n    <row from=\"30004917\" to=\"30004914\"/>\r\n    <row from=\"30004917\" to=\"30004919\"/>\r\n    <row from=\"30004918\" to=\"30004915\"/>\r\n    <row from=\"30004919\" to=\"30004913\"/>\r\n    <row from=\"30004919\" to=\"30004914\"/>\r\n    <row from=\"30004919\" to=\"30004917\"/>\r\n    <row from=\"30004920\" to=\"30004909\"/>\r\n    <row from=\"30004920\" to=\"30004921\"/>\r\n    <row from=\"30004921\" to=\"30004920\"/>\r\n    <row from=\"30004921\" to=\"30004922\"/>\r\n    <row from=\"30004922\" to=\"30004921\"/>\r\n    <row from=\"30004922\" to=\"30004923\"/>\r\n    <row from=\"30004923\" to=\"30004922\"/>\r\n    <row from=\"30004923\" to=\"30004924\"/>\r\n    <row from=\"30004923\" to=\"30004925\"/>\r\n    <row from=\"30004924\" to=\"30004486\"/>\r\n    <row from=\"30004924\" to=\"30004923\"/>\r\n    <row from=\"30004925\" to=\"30004923\"/>\r\n    <row from=\"30004925\" to=\"30004926\"/>\r\n    <row from=\"30004926\" to=\"30004882\"/>\r\n    <row from=\"30004926\" to=\"30004925\"/>\r\n    <row from=\"30004927\" to=\"30004801\"/>\r\n    <row from=\"30004927\" to=\"30004928\"/>\r\n    <row from=\"30004928\" to=\"30004927\"/>\r\n    <row from=\"30004928\" to=\"30004929\"/>\r\n    <row from=\"30004928\" to=\"30004930\"/>\r\n    <row from=\"30004928\" to=\"30004932\"/>\r\n    <row from=\"30004929\" to=\"30004928\"/>\r\n    <row from=\"30004929\" to=\"30004931\"/>\r\n    <row from=\"30004930\" to=\"30004928\"/>\r\n    <row from=\"30004930\" to=\"30004932\"/>\r\n    <row from=\"30004930\" to=\"30004933\"/>\r\n    <row from=\"30004931\" to=\"30004929\"/>\r\n    <row from=\"30004931\" to=\"30004933\"/>\r\n    <row from=\"30004931\" to=\"30004940\"/>\r\n    <row from=\"30004932\" to=\"30001926\"/>\r\n    <row from=\"30004932\" to=\"30004928\"/>\r\n    <row from=\"30004932\" to=\"30004930\"/>\r\n    <row from=\"30004933\" to=\"30004930\"/>\r\n    <row from=\"30004933\" to=\"30004931\"/>\r\n    <row from=\"30004933\" to=\"30004934\"/>\r\n    <row from=\"30004934\" to=\"30004933\"/>\r\n    <row from=\"30004934\" to=\"30004935\"/>\r\n    <row from=\"30004934\" to=\"30004936\"/>\r\n    <row from=\"30004935\" to=\"30004934\"/>\r\n    <row from=\"30004935\" to=\"30004937\"/>\r\n    <row from=\"30004936\" to=\"30004934\"/>\r\n    <row from=\"30004936\" to=\"30004937\"/>\r\n    <row from=\"30004936\" to=\"30004939\"/>\r\n    <row from=\"30004937\" to=\"30004696\"/>\r\n    <row from=\"30004937\" to=\"30004935\"/>\r\n    <row from=\"30004937\" to=\"30004936\"/>\r\n    <row from=\"30004937\" to=\"30004938\"/>\r\n    <row from=\"30004938\" to=\"30004937\"/>\r\n    <row from=\"30004938\" to=\"30004947\"/>\r\n    <row from=\"30004939\" to=\"30004936\"/>\r\n    <row from=\"30004939\" to=\"30004955\"/>\r\n    <row from=\"30004940\" to=\"30004931\"/>\r\n    <row from=\"30004940\" to=\"30004941\"/>\r\n    <row from=\"30004940\" to=\"30004942\"/>\r\n    <row from=\"30004940\" to=\"30004945\"/>\r\n    <row from=\"30004941\" to=\"30004940\"/>\r\n    <row from=\"30004941\" to=\"30004942\"/>\r\n    <row from=\"30004941\" to=\"30004943\"/>\r\n    <row from=\"30004941\" to=\"30004944\"/>\r\n    <row from=\"30004941\" to=\"30004946\"/>\r\n    <row from=\"30004942\" to=\"30004940\"/>\r\n    <row from=\"30004942\" to=\"30004941\"/>\r\n    <row from=\"30004942\" to=\"30004943\"/>\r\n    <row from=\"30004943\" to=\"30004941\"/>\r\n    <row from=\"30004943\" to=\"30004942\"/>\r\n    <row from=\"30004944\" to=\"30004941\"/>\r\n    <row from=\"30004945\" to=\"30004940\"/>\r\n    <row from=\"30004946\" to=\"30004941\"/>\r\n    <row from=\"30004947\" to=\"30004938\"/>\r\n    <row from=\"30004947\" to=\"30004948\"/>\r\n    <row from=\"30004947\" to=\"30004954\"/>\r\n    <row from=\"30004948\" to=\"30004947\"/>\r\n    <row from=\"30004948\" to=\"30004949\"/>\r\n    <row from=\"30004948\" to=\"30004950\"/>\r\n    <row from=\"30004949\" to=\"30004948\"/>\r\n    <row from=\"30004949\" to=\"30004950\"/>\r\n    <row from=\"30004949\" to=\"30004952\"/>\r\n    <row from=\"30004950\" to=\"30004948\"/>\r\n    <row from=\"30004950\" to=\"30004949\"/>\r\n    <row from=\"30004950\" to=\"30004951\"/>\r\n    <row from=\"30004951\" to=\"30004950\"/>\r\n    <row from=\"30004951\" to=\"30004952\"/>\r\n    <row from=\"30004951\" to=\"30004953\"/>\r\n    <row from=\"30004952\" to=\"30004949\"/>\r\n    <row from=\"30004952\" to=\"30004951\"/>\r\n    <row from=\"30004953\" to=\"30004951\"/>\r\n    <row from=\"30004953\" to=\"30004961\"/>\r\n    <row from=\"30004954\" to=\"30004947\"/>\r\n    <row from=\"30004955\" to=\"30004939\"/>\r\n    <row from=\"30004955\" to=\"30004956\"/>\r\n    <row from=\"30004956\" to=\"30004955\"/>\r\n    <row from=\"30004956\" to=\"30004957\"/>\r\n    <row from=\"30004956\" to=\"30004958\"/>\r\n    <row from=\"30004956\" to=\"30004960\"/>\r\n    <row from=\"30004957\" to=\"30004956\"/>\r\n    <row from=\"30004958\" to=\"30004956\"/>\r\n    <row from=\"30004958\" to=\"30004959\"/>\r\n    <row from=\"30004959\" to=\"30004958\"/>\r\n    <row from=\"30004960\" to=\"30004800\"/>\r\n    <row from=\"30004960\" to=\"30004956\"/>\r\n    <row from=\"30004961\" to=\"30004953\"/>\r\n    <row from=\"30004961\" to=\"30004962\"/>\r\n    <row from=\"30004961\" to=\"30004963\"/>\r\n    <row from=\"30004962\" to=\"30004961\"/>\r\n    <row from=\"30004962\" to=\"30004965\"/>\r\n    <row from=\"30004963\" to=\"30004961\"/>\r\n    <row from=\"30004963\" to=\"30004964\"/>\r\n    <row from=\"30004964\" to=\"30004963\"/>\r\n    <row from=\"30004965\" to=\"30004962\"/>\r\n    <row from=\"30004965\" to=\"30004966\"/>\r\n    <row from=\"30004966\" to=\"30004965\"/>\r\n    <row from=\"30004967\" to=\"30002632\"/>\r\n    <row from=\"30004967\" to=\"30004968\"/>\r\n    <row from=\"30004967\" to=\"30004972\"/>\r\n    <row from=\"30004968\" to=\"30003014\"/>\r\n    <row from=\"30004968\" to=\"30004967\"/>\r\n    <row from=\"30004968\" to=\"30004969\"/>\r\n    <row from=\"30004969\" to=\"30004968\"/>\r\n    <row from=\"30004969\" to=\"30004970\"/>\r\n    <row from=\"30004969\" to=\"30005198\"/>\r\n    <row from=\"30004970\" to=\"30002633\"/>\r\n    <row from=\"30004970\" to=\"30002636\"/>\r\n    <row from=\"30004970\" to=\"30004969\"/>\r\n    <row from=\"30004970\" to=\"30004971\"/>\r\n    <row from=\"30004970\" to=\"30004972\"/>\r\n    <row from=\"30004970\" to=\"30005198\"/>\r\n    <row from=\"30004971\" to=\"30002668\"/>\r\n    <row from=\"30004971\" to=\"30004970\"/>\r\n    <row from=\"30004972\" to=\"30002761\"/>\r\n    <row from=\"30004972\" to=\"30004967\"/>\r\n    <row from=\"30004972\" to=\"30004970\"/>\r\n    <row from=\"30004972\" to=\"30005015\"/>\r\n    <row from=\"30004972\" to=\"30014971\"/>\r\n    <row from=\"30004973\" to=\"30004974\"/>\r\n    <row from=\"30004973\" to=\"30004975\"/>\r\n    <row from=\"30004973\" to=\"30004976\"/>\r\n    <row from=\"30004973\" to=\"30005018\"/>\r\n    <row from=\"30004973\" to=\"30005021\"/>\r\n    <row from=\"30004974\" to=\"30002762\"/>\r\n    <row from=\"30004974\" to=\"30004973\"/>\r\n    <row from=\"30004974\" to=\"30004976\"/>\r\n    <row from=\"30004975\" to=\"30003830\"/>\r\n    <row from=\"30004975\" to=\"30004973\"/>\r\n    <row from=\"30004975\" to=\"30004978\"/>\r\n    <row from=\"30004975\" to=\"30005295\"/>\r\n    <row from=\"30004976\" to=\"30004973\"/>\r\n    <row from=\"30004976\" to=\"30004974\"/>\r\n    <row from=\"30004976\" to=\"30004977\"/>\r\n    <row from=\"30004977\" to=\"30004976\"/>\r\n    <row from=\"30004977\" to=\"30004979\"/>\r\n    <row from=\"30004978\" to=\"30004975\"/>\r\n    <row from=\"30004978\" to=\"30004993\"/>\r\n    <row from=\"30004978\" to=\"30005329\"/>\r\n    <row from=\"30004979\" to=\"30004977\"/>\r\n    <row from=\"30004979\" to=\"30004980\"/>\r\n    <row from=\"30004979\" to=\"30004981\"/>\r\n    <row from=\"30004979\" to=\"30004982\"/>\r\n    <row from=\"30004979\" to=\"30004984\"/>\r\n    <row from=\"30004979\" to=\"30005000\"/>\r\n    <row from=\"30004980\" to=\"30004979\"/>\r\n    <row from=\"30004980\" to=\"30004981\"/>\r\n    <row from=\"30004980\" to=\"30004985\"/>\r\n    <row from=\"30004981\" to=\"30004979\"/>\r\n    <row from=\"30004981\" to=\"30004980\"/>\r\n    <row from=\"30004981\" to=\"30004983\"/>\r\n    <row from=\"30004982\" to=\"30004979\"/>\r\n    <row from=\"30004982\" to=\"30005295\"/>\r\n    <row from=\"30004983\" to=\"30004981\"/>\r\n    <row from=\"30004983\" to=\"30004986\"/>\r\n    <row from=\"30004984\" to=\"30004979\"/>\r\n    <row from=\"30004984\" to=\"30045347\"/>\r\n    <row from=\"30004985\" to=\"30002807\"/>\r\n    <row from=\"30004985\" to=\"30004980\"/>\r\n    <row from=\"30004986\" to=\"30004983\"/>\r\n    <row from=\"30004987\" to=\"30004988\"/>\r\n    <row from=\"30004987\" to=\"30004989\"/>\r\n    <row from=\"30004987\" to=\"30004990\"/>\r\n    <row from=\"30004987\" to=\"30005206\"/>\r\n    <row from=\"30004988\" to=\"30004987\"/>\r\n    <row from=\"30004988\" to=\"30004989\"/>\r\n    <row from=\"30004988\" to=\"30004990\"/>\r\n    <row from=\"30004988\" to=\"30005006\"/>\r\n    <row from=\"30004989\" to=\"30004987\"/>\r\n    <row from=\"30004989\" to=\"30004988\"/>\r\n    <row from=\"30004990\" to=\"30004987\"/>\r\n    <row from=\"30004990\" to=\"30004988\"/>\r\n    <row from=\"30004990\" to=\"30004991\"/>\r\n    <row from=\"30004990\" to=\"30005008\"/>\r\n    <row from=\"30004991\" to=\"30004990\"/>\r\n    <row from=\"30004991\" to=\"30004992\"/>\r\n    <row from=\"30004991\" to=\"30005011\"/>\r\n    <row from=\"30004992\" to=\"30002728\"/>\r\n    <row from=\"30004992\" to=\"30004991\"/>\r\n    <row from=\"30004993\" to=\"30002640\"/>\r\n    <row from=\"30004993\" to=\"30004978\"/>\r\n    <row from=\"30004993\" to=\"30004994\"/>\r\n    <row from=\"30004993\" to=\"30004995\"/>\r\n    <row from=\"30004993\" to=\"30005000\"/>\r\n    <row from=\"30004993\" to=\"30005026\"/>\r\n    <row from=\"30004994\" to=\"30004993\"/>\r\n    <row from=\"30004994\" to=\"30004996\"/>\r\n    <row from=\"30004994\" to=\"30005206\"/>\r\n    <row from=\"30004995\" to=\"30004993\"/>\r\n    <row from=\"30004995\" to=\"30004997\"/>\r\n    <row from=\"30004996\" to=\"30004994\"/>\r\n    <row from=\"30004996\" to=\"30004998\"/>\r\n    <row from=\"30004997\" to=\"30004995\"/>\r\n    <row from=\"30004997\" to=\"30004999\"/>\r\n    <row from=\"30004998\" to=\"30004996\"/>\r\n    <row from=\"30004998\" to=\"30005009\"/>\r\n    <row from=\"30004999\" to=\"30004997\"/>\r\n    <row from=\"30004999\" to=\"30005000\"/>\r\n    <row from=\"30004999\" to=\"30005008\"/>\r\n    <row from=\"30005000\" to=\"30004979\"/>\r\n    <row from=\"30005000\" to=\"30004993\"/>\r\n    <row from=\"30005000\" to=\"30004999\"/>\r\n    <row from=\"30005001\" to=\"30005002\"/>\r\n    <row from=\"30005001\" to=\"30005003\"/>\r\n    <row from=\"30005001\" to=\"30005006\"/>\r\n    <row from=\"30005001\" to=\"30005202\"/>\r\n    <row from=\"30005002\" to=\"30005001\"/>\r\n    <row from=\"30005002\" to=\"30005003\"/>\r\n    <row from=\"30005002\" to=\"30005004\"/>\r\n    <row from=\"30005003\" to=\"30005001\"/>\r\n    <row from=\"30005003\" to=\"30005002\"/>\r\n    <row from=\"30005003\" to=\"30005008\"/>\r\n    <row from=\"30005004\" to=\"30005002\"/>\r\n    <row from=\"30005004\" to=\"30005330\"/>\r\n    <row from=\"30005005\" to=\"30000157\"/>\r\n    <row from=\"30005005\" to=\"30031392\"/>\r\n    <row from=\"30005006\" to=\"30004988\"/>\r\n    <row from=\"30005006\" to=\"30005001\"/>\r\n    <row from=\"30005006\" to=\"30005007\"/>\r\n    <row from=\"30005007\" to=\"30005006\"/>\r\n    <row from=\"30005007\" to=\"30005008\"/>\r\n    <row from=\"30005008\" to=\"30004990\"/>\r\n    <row from=\"30005008\" to=\"30004999\"/>\r\n    <row from=\"30005008\" to=\"30005003\"/>\r\n    <row from=\"30005008\" to=\"30005007\"/>\r\n    <row from=\"30005008\" to=\"30005321\"/>\r\n    <row from=\"30005009\" to=\"30004998\"/>\r\n    <row from=\"30005009\" to=\"30005010\"/>\r\n    <row from=\"30005009\" to=\"30005012\"/>\r\n    <row from=\"30005009\" to=\"30005013\"/>\r\n    <row from=\"30005010\" to=\"30005009\"/>\r\n    <row from=\"30005010\" to=\"30005011\"/>\r\n    <row from=\"30005010\" to=\"30005014\"/>\r\n    <row from=\"30005011\" to=\"30004991\"/>\r\n    <row from=\"30005011\" to=\"30005010\"/>\r\n    <row from=\"30005012\" to=\"30005009\"/>\r\n    <row from=\"30005012\" to=\"30005013\"/>\r\n    <row from=\"30005013\" to=\"30005009\"/>\r\n    <row from=\"30005013\" to=\"30005012\"/>\r\n    <row from=\"30005014\" to=\"30005010\"/>\r\n    <row from=\"30005015\" to=\"30002761\"/>\r\n    <row from=\"30005015\" to=\"30004972\"/>\r\n    <row from=\"30005015\" to=\"30005016\"/>\r\n    <row from=\"30005015\" to=\"30005198\"/>\r\n    <row from=\"30005015\" to=\"30034971\"/>\r\n    <row from=\"30005016\" to=\"30005015\"/>\r\n    <row from=\"30005016\" to=\"30005017\"/>\r\n    <row from=\"30005016\" to=\"30005019\"/>\r\n    <row from=\"30005016\" to=\"30044971\"/>\r\n    <row from=\"30005017\" to=\"30005016\"/>\r\n    <row from=\"30005017\" to=\"30005018\"/>\r\n    <row from=\"30005017\" to=\"30005019\"/>\r\n    <row from=\"30005017\" to=\"30005021\"/>\r\n    <row from=\"30005018\" to=\"30004973\"/>\r\n    <row from=\"30005018\" to=\"30005017\"/>\r\n    <row from=\"30005018\" to=\"30005021\"/>\r\n    <row from=\"30005019\" to=\"30005016\"/>\r\n    <row from=\"30005019\" to=\"30005017\"/>\r\n    <row from=\"30005019\" to=\"30005020\"/>\r\n    <row from=\"30005020\" to=\"30002637\"/>\r\n    <row from=\"30005020\" to=\"30005019\"/>\r\n    <row from=\"30005020\" to=\"30005022\"/>\r\n    <row from=\"30005021\" to=\"30004973\"/>\r\n    <row from=\"30005021\" to=\"30005017\"/>\r\n    <row from=\"30005021\" to=\"30005018\"/>\r\n    <row from=\"30005022\" to=\"30005020\"/>\r\n    <row from=\"30005022\" to=\"30005023\"/>\r\n    <row from=\"30005023\" to=\"30005022\"/>\r\n    <row from=\"30005024\" to=\"30005025\"/>\r\n    <row from=\"30005024\" to=\"30005203\"/>\r\n    <row from=\"30005024\" to=\"30024971\"/>\r\n    <row from=\"30005025\" to=\"30005024\"/>\r\n    <row from=\"30005025\" to=\"30005026\"/>\r\n    <row from=\"30005025\" to=\"30005334\"/>\r\n    <row from=\"30005026\" to=\"30004993\"/>\r\n    <row from=\"30005026\" to=\"30005025\"/>\r\n    <row from=\"30005026\" to=\"30005027\"/>\r\n    <row from=\"30005027\" to=\"30005026\"/>\r\n    <row from=\"30005027\" to=\"30005028\"/>\r\n    <row from=\"30005028\" to=\"30005027\"/>\r\n    <row from=\"30005029\" to=\"30002652\"/>\r\n    <row from=\"30005029\" to=\"30002702\"/>\r\n    <row from=\"30005029\" to=\"30003046\"/>\r\n    <row from=\"30005030\" to=\"30002202\"/>\r\n    <row from=\"30005030\" to=\"30005031\"/>\r\n    <row from=\"30005030\" to=\"30005034\"/>\r\n    <row from=\"30005030\" to=\"30005035\"/>\r\n    <row from=\"30005030\" to=\"30005080\"/>\r\n    <row from=\"30005031\" to=\"30005030\"/>\r\n    <row from=\"30005031\" to=\"30005032\"/>\r\n    <row from=\"30005031\" to=\"30005033\"/>\r\n    <row from=\"30005031\" to=\"30005236\"/>\r\n    <row from=\"30005032\" to=\"30005031\"/>\r\n    <row from=\"30005032\" to=\"30005033\"/>\r\n    <row from=\"30005033\" to=\"30005031\"/>\r\n    <row from=\"30005033\" to=\"30005032\"/>\r\n    <row from=\"30005034\" to=\"30005030\"/>\r\n    <row from=\"30005034\" to=\"30005035\"/>\r\n    <row from=\"30005035\" to=\"30005030\"/>\r\n    <row from=\"30005035\" to=\"30005034\"/>\r\n    <row from=\"30005035\" to=\"30005036\"/>\r\n    <row from=\"30005035\" to=\"30005074\"/>\r\n    <row from=\"30005036\" to=\"30004097\"/>\r\n    <row from=\"30005036\" to=\"30005035\"/>\r\n    <row from=\"30005036\" to=\"30005037\"/>\r\n    <row from=\"30005036\" to=\"30005038\"/>\r\n    <row from=\"30005036\" to=\"30005039\"/>\r\n    <row from=\"30005036\" to=\"30005040\"/>\r\n    <row from=\"30005037\" to=\"30005036\"/>\r\n    <row from=\"30005037\" to=\"30005042\"/>\r\n    <row from=\"30005037\" to=\"30005048\"/>\r\n    <row from=\"30005037\" to=\"30045042\"/>\r\n    <row from=\"30005038\" to=\"30002187\"/>\r\n    <row from=\"30005038\" to=\"30005036\"/>\r\n    <row from=\"30005038\" to=\"30005039\"/>\r\n    <row from=\"30005038\" to=\"30005042\"/>\r\n    <row from=\"30005038\" to=\"30005043\"/>\r\n    <row from=\"30005039\" to=\"30005036\"/>\r\n    <row from=\"30005039\" to=\"30005038\"/>\r\n    <row from=\"30005039\" to=\"30005041\"/>\r\n    <row from=\"30005040\" to=\"30005036\"/>\r\n    <row from=\"30005041\" to=\"30003867\"/>\r\n    <row from=\"30005041\" to=\"30004101\"/>\r\n    <row from=\"30005041\" to=\"30005039\"/>\r\n    <row from=\"30005042\" to=\"30005037\"/>\r\n    <row from=\"30005042\" to=\"30005038\"/>\r\n    <row from=\"30005042\" to=\"30005044\"/>\r\n    <row from=\"30005043\" to=\"30003876\"/>\r\n    <row from=\"30005043\" to=\"30005038\"/>\r\n    <row from=\"30005044\" to=\"30004097\"/>\r\n    <row from=\"30005044\" to=\"30005042\"/>\r\n    <row from=\"30005044\" to=\"30005045\"/>\r\n    <row from=\"30005044\" to=\"30005047\"/>\r\n    <row from=\"30005044\" to=\"30005048\"/>\r\n    <row from=\"30005045\" to=\"30005044\"/>\r\n    <row from=\"30005045\" to=\"30005046\"/>\r\n    <row from=\"30005045\" to=\"30005047\"/>\r\n    <row from=\"30005045\" to=\"30005049\"/>\r\n    <row from=\"30005046\" to=\"30005045\"/>\r\n    <row from=\"30005046\" to=\"30005047\"/>\r\n    <row from=\"30005046\" to=\"30025042\"/>\r\n    <row from=\"30005047\" to=\"30005044\"/>\r\n    <row from=\"30005047\" to=\"30005045\"/>\r\n    <row from=\"30005047\" to=\"30005046\"/>\r\n    <row from=\"30005047\" to=\"30005048\"/>\r\n    <row from=\"30005047\" to=\"30005076\"/>\r\n    <row from=\"30005048\" to=\"30005037\"/>\r\n    <row from=\"30005048\" to=\"30005044\"/>\r\n    <row from=\"30005048\" to=\"30005047\"/>\r\n    <row from=\"30005048\" to=\"30035042\"/>\r\n    <row from=\"30005049\" to=\"30005045\"/>\r\n    <row from=\"30005049\" to=\"30005069\"/>\r\n    <row from=\"30005050\" to=\"30003881\"/>\r\n    <row from=\"30005050\" to=\"30005051\"/>\r\n    <row from=\"30005050\" to=\"30005052\"/>\r\n    <row from=\"30005051\" to=\"30005050\"/>\r\n    <row from=\"30005051\" to=\"30005052\"/>\r\n    <row from=\"30005051\" to=\"30005053\"/>\r\n    <row from=\"30005052\" to=\"30005050\"/>\r\n    <row from=\"30005052\" to=\"30005051\"/>\r\n    <row from=\"30005052\" to=\"30005054\"/>\r\n    <row from=\"30005053\" to=\"30005051\"/>\r\n    <row from=\"30005053\" to=\"30005054\"/>\r\n    <row from=\"30005053\" to=\"30005087\"/>\r\n    <row from=\"30005054\" to=\"30005052\"/>\r\n    <row from=\"30005054\" to=\"30005053\"/>\r\n    <row from=\"30005054\" to=\"30005055\"/>\r\n    <row from=\"30005054\" to=\"30005056\"/>\r\n    <row from=\"30005055\" to=\"30004246\"/>\r\n    <row from=\"30005055\" to=\"30005054\"/>\r\n    <row from=\"30005056\" to=\"30005054\"/>\r\n    <row from=\"30005056\" to=\"30005057\"/>\r\n    <row from=\"30005057\" to=\"30005056\"/>\r\n    <row from=\"30005057\" to=\"30005058\"/>\r\n    <row from=\"30005057\" to=\"30005059\"/>\r\n    <row from=\"30005058\" to=\"30005057\"/>\r\n    <row from=\"30005058\" to=\"30005059\"/>\r\n    <row from=\"30005058\" to=\"30005061\"/>\r\n    <row from=\"30005059\" to=\"30005057\"/>\r\n    <row from=\"30005059\" to=\"30005058\"/>\r\n    <row from=\"30005059\" to=\"30005060\"/>\r\n    <row from=\"30005060\" to=\"30005059\"/>\r\n    <row from=\"30005061\" to=\"30005058\"/>\r\n    <row from=\"30005061\" to=\"30005068\"/>\r\n    <row from=\"30005062\" to=\"30003922\"/>\r\n    <row from=\"30005062\" to=\"30005063\"/>\r\n    <row from=\"30005063\" to=\"30005062\"/>\r\n    <row from=\"30005063\" to=\"30005064\"/>\r\n    <row from=\"30005063\" to=\"30005067\"/>\r\n    <row from=\"30005063\" to=\"30005068\"/>\r\n    <row from=\"30005064\" to=\"30005063\"/>\r\n    <row from=\"30005064\" to=\"30005065\"/>\r\n    <row from=\"30005065\" to=\"30005064\"/>\r\n    <row from=\"30005065\" to=\"30005066\"/>\r\n    <row from=\"30005065\" to=\"30005067\"/>\r\n    <row from=\"30005065\" to=\"30005068\"/>\r\n    <row from=\"30005066\" to=\"30005065\"/>\r\n    <row from=\"30005067\" to=\"30005063\"/>\r\n    <row from=\"30005067\" to=\"30005065\"/>\r\n    <row from=\"30005068\" to=\"30005061\"/>\r\n    <row from=\"30005068\" to=\"30005063\"/>\r\n    <row from=\"30005068\" to=\"30005065\"/>\r\n    <row from=\"30005069\" to=\"30005049\"/>\r\n    <row from=\"30005069\" to=\"30005070\"/>\r\n    <row from=\"30005069\" to=\"30005071\"/>\r\n    <row from=\"30005069\" to=\"30005075\"/>\r\n    <row from=\"30005070\" to=\"30005069\"/>\r\n    <row from=\"30005070\" to=\"30005072\"/>\r\n    <row from=\"30005071\" to=\"30005069\"/>\r\n    <row from=\"30005071\" to=\"30005075\"/>\r\n    <row from=\"30005072\" to=\"30002215\"/>\r\n    <row from=\"30005072\" to=\"30005070\"/>\r\n    <row from=\"30005072\" to=\"30005073\"/>\r\n    <row from=\"30005073\" to=\"30005072\"/>\r\n    <row from=\"30005073\" to=\"30005074\"/>\r\n    <row from=\"30005074\" to=\"30005035\"/>\r\n    <row from=\"30005074\" to=\"30005073\"/>\r\n    <row from=\"30005075\" to=\"30005069\"/>\r\n    <row from=\"30005075\" to=\"30005071\"/>\r\n    <row from=\"30005076\" to=\"30005047\"/>\r\n    <row from=\"30005076\" to=\"30005077\"/>\r\n    <row from=\"30005076\" to=\"30005078\"/>\r\n    <row from=\"30005076\" to=\"30005079\"/>\r\n    <row from=\"30005077\" to=\"30005076\"/>\r\n    <row from=\"30005077\" to=\"30005078\"/>\r\n    <row from=\"30005077\" to=\"30005079\"/>\r\n    <row from=\"30005077\" to=\"30005080\"/>\r\n    <row from=\"30005077\" to=\"30005081\"/>\r\n    <row from=\"30005077\" to=\"30005238\"/>\r\n    <row from=\"30005078\" to=\"30005076\"/>\r\n    <row from=\"30005078\" to=\"30005077\"/>\r\n    <row from=\"30005078\" to=\"30005079\"/>\r\n    <row from=\"30005079\" to=\"30005076\"/>\r\n    <row from=\"30005079\" to=\"30005077\"/>\r\n    <row from=\"30005079\" to=\"30005078\"/>\r\n    <row from=\"30005079\" to=\"30005081\"/>\r\n    <row from=\"30005080\" to=\"30005030\"/>\r\n    <row from=\"30005080\" to=\"30005077\"/>\r\n    <row from=\"30005081\" to=\"30005077\"/>\r\n    <row from=\"30005081\" to=\"30005079\"/>\r\n    <row from=\"30005081\" to=\"30005082\"/>\r\n    <row from=\"30005082\" to=\"30005081\"/>\r\n    <row from=\"30005082\" to=\"30005083\"/>\r\n    <row from=\"30005083\" to=\"30005082\"/>\r\n    <row from=\"30005083\" to=\"30005084\"/>\r\n    <row from=\"30005084\" to=\"30005083\"/>\r\n    <row from=\"30005084\" to=\"30005085\"/>\r\n    <row from=\"30005084\" to=\"30005087\"/>\r\n    <row from=\"30005085\" to=\"30005084\"/>\r\n    <row from=\"30005085\" to=\"30005086\"/>\r\n    <row from=\"30005086\" to=\"30005085\"/>\r\n    <row from=\"30005087\" to=\"30005053\"/>\r\n    <row from=\"30005087\" to=\"30005084\"/>\r\n    <row from=\"30005088\" to=\"30001080\"/>\r\n    <row from=\"30005088\" to=\"30005089\"/>\r\n    <row from=\"30005088\" to=\"30005090\"/>\r\n    <row from=\"30005089\" to=\"30005088\"/>\r\n    <row from=\"30005089\" to=\"30005091\"/>\r\n    <row from=\"30005089\" to=\"30005133\"/>\r\n    <row from=\"30005090\" to=\"30005088\"/>\r\n    <row from=\"30005090\" to=\"30005092\"/>\r\n    <row from=\"30005090\" to=\"30005095\"/>\r\n    <row from=\"30005091\" to=\"30005089\"/>\r\n    <row from=\"30005091\" to=\"30005093\"/>\r\n    <row from=\"30005092\" to=\"30005090\"/>\r\n    <row from=\"30005092\" to=\"30005116\"/>\r\n    <row from=\"30005093\" to=\"30005091\"/>\r\n    <row from=\"30005093\" to=\"30005106\"/>\r\n    <row from=\"30005094\" to=\"30001068\"/>\r\n    <row from=\"30005094\" to=\"30005095\"/>\r\n    <row from=\"30005094\" to=\"30005099\"/>\r\n    <row from=\"30005095\" to=\"30005090\"/>\r\n    <row from=\"30005095\" to=\"30005094\"/>\r\n    <row from=\"30005095\" to=\"30005096\"/>\r\n    <row from=\"30005095\" to=\"30005099\"/>\r\n    <row from=\"30005096\" to=\"30005095\"/>\r\n    <row from=\"30005096\" to=\"30005097\"/>\r\n    <row from=\"30005096\" to=\"30005098\"/>\r\n    <row from=\"30005096\" to=\"30005116\"/>\r\n    <row from=\"30005096\" to=\"30005117\"/>\r\n    <row from=\"30005097\" to=\"30005096\"/>\r\n    <row from=\"30005098\" to=\"30005096\"/>\r\n    <row from=\"30005098\" to=\"30005116\"/>\r\n    <row from=\"30005098\" to=\"30005139\"/>\r\n    <row from=\"30005099\" to=\"30001056\"/>\r\n    <row from=\"30005099\" to=\"30005094\"/>\r\n    <row from=\"30005099\" to=\"30005095\"/>\r\n    <row from=\"30005100\" to=\"30001571\"/>\r\n    <row from=\"30005100\" to=\"30005101\"/>\r\n    <row from=\"30005100\" to=\"30005103\"/>\r\n    <row from=\"30005101\" to=\"30005100\"/>\r\n    <row from=\"30005101\" to=\"30005102\"/>\r\n    <row from=\"30005102\" to=\"30005101\"/>\r\n    <row from=\"30005102\" to=\"30005103\"/>\r\n    <row from=\"30005102\" to=\"30005105\"/>\r\n    <row from=\"30005103\" to=\"30001586\"/>\r\n    <row from=\"30005103\" to=\"30005100\"/>\r\n    <row from=\"30005103\" to=\"30005102\"/>\r\n    <row from=\"30005103\" to=\"30005104\"/>\r\n    <row from=\"30005104\" to=\"30005103\"/>\r\n    <row from=\"30005105\" to=\"30005102\"/>\r\n    <row from=\"30005105\" to=\"30005154\"/>\r\n    <row from=\"30005105\" to=\"30005157\"/>\r\n    <row from=\"30005106\" to=\"30005093\"/>\r\n    <row from=\"30005106\" to=\"30005107\"/>\r\n    <row from=\"30005106\" to=\"30005108\"/>\r\n    <row from=\"30005106\" to=\"30005114\"/>\r\n    <row from=\"30005106\" to=\"30005115\"/>\r\n    <row from=\"30005107\" to=\"30005106\"/>\r\n    <row from=\"30005107\" to=\"30005111\"/>\r\n    <row from=\"30005108\" to=\"30005106\"/>\r\n    <row from=\"30005108\" to=\"30005109\"/>\r\n    <row from=\"30005108\" to=\"30005112\"/>\r\n    <row from=\"30005108\" to=\"30005114\"/>\r\n    <row from=\"30005109\" to=\"30005108\"/>\r\n    <row from=\"30005109\" to=\"30005110\"/>\r\n    <row from=\"30005109\" to=\"30005160\"/>\r\n    <row from=\"30005110\" to=\"30005109\"/>\r\n    <row from=\"30005110\" to=\"30005111\"/>\r\n    <row from=\"30005110\" to=\"30005115\"/>\r\n    <row from=\"30005110\" to=\"30005123\"/>\r\n    <row from=\"30005111\" to=\"30005107\"/>\r\n    <row from=\"30005111\" to=\"30005110\"/>\r\n    <row from=\"30005111\" to=\"30005145\"/>\r\n    <row from=\"30005112\" to=\"30005108\"/>\r\n    <row from=\"30005112\" to=\"30005113\"/>\r\n    <row from=\"30005113\" to=\"30005112\"/>\r\n    <row from=\"30005114\" to=\"30005106\"/>\r\n    <row from=\"30005114\" to=\"30005108\"/>\r\n    <row from=\"30005115\" to=\"30003197\"/>\r\n    <row from=\"30005115\" to=\"30005106\"/>\r\n    <row from=\"30005115\" to=\"30005110\"/>\r\n    <row from=\"30005116\" to=\"30005092\"/>\r\n    <row from=\"30005116\" to=\"30005096\"/>\r\n    <row from=\"30005116\" to=\"30005098\"/>\r\n    <row from=\"30005116\" to=\"30005117\"/>\r\n    <row from=\"30005117\" to=\"30005096\"/>\r\n    <row from=\"30005117\" to=\"30005116\"/>\r\n    <row from=\"30005117\" to=\"30005118\"/>\r\n    <row from=\"30005117\" to=\"30005119\"/>\r\n    <row from=\"30005118\" to=\"30005117\"/>\r\n    <row from=\"30005118\" to=\"30005120\"/>\r\n    <row from=\"30005118\" to=\"30005122\"/>\r\n    <row from=\"30005119\" to=\"30005117\"/>\r\n    <row from=\"30005119\" to=\"30005120\"/>\r\n    <row from=\"30005120\" to=\"30005118\"/>\r\n    <row from=\"30005120\" to=\"30005119\"/>\r\n    <row from=\"30005120\" to=\"30005121\"/>\r\n    <row from=\"30005120\" to=\"30005122\"/>\r\n    <row from=\"30005121\" to=\"30005120\"/>\r\n    <row from=\"30005122\" to=\"30005118\"/>\r\n    <row from=\"30005122\" to=\"30005120\"/>\r\n    <row from=\"30005122\" to=\"30005152\"/>\r\n    <row from=\"30005123\" to=\"30005110\"/>\r\n    <row from=\"30005123\" to=\"30005124\"/>\r\n    <row from=\"30005123\" to=\"30005125\"/>\r\n    <row from=\"30005123\" to=\"30005126\"/>\r\n    <row from=\"30005124\" to=\"30005123\"/>\r\n    <row from=\"30005124\" to=\"30005125\"/>\r\n    <row from=\"30005125\" to=\"30005123\"/>\r\n    <row from=\"30005125\" to=\"30005124\"/>\r\n    <row from=\"30005125\" to=\"30005127\"/>\r\n    <row from=\"30005126\" to=\"30005123\"/>\r\n    <row from=\"30005126\" to=\"30005128\"/>\r\n    <row from=\"30005127\" to=\"30005125\"/>\r\n    <row from=\"30005127\" to=\"30005128\"/>\r\n    <row from=\"30005128\" to=\"30005126\"/>\r\n    <row from=\"30005128\" to=\"30005127\"/>\r\n    <row from=\"30005129\" to=\"30002292\"/>\r\n    <row from=\"30005129\" to=\"30005130\"/>\r\n    <row from=\"30005129\" to=\"30005132\"/>\r\n    <row from=\"30005130\" to=\"30005129\"/>\r\n    <row from=\"30005130\" to=\"30005131\"/>\r\n    <row from=\"30005131\" to=\"30005130\"/>\r\n    <row from=\"30005131\" to=\"30005132\"/>\r\n    <row from=\"30005131\" to=\"30005135\"/>\r\n    <row from=\"30005132\" to=\"30005129\"/>\r\n    <row from=\"30005132\" to=\"30005131\"/>\r\n    <row from=\"30005132\" to=\"30005133\"/>\r\n    <row from=\"30005132\" to=\"30005134\"/>\r\n    <row from=\"30005133\" to=\"30005089\"/>\r\n    <row from=\"30005133\" to=\"30005132\"/>\r\n    <row from=\"30005134\" to=\"30005132\"/>\r\n    <row from=\"30005134\" to=\"30005136\"/>\r\n    <row from=\"30005134\" to=\"30005138\"/>\r\n    <row from=\"30005135\" to=\"30005131\"/>\r\n    <row from=\"30005135\" to=\"30005137\"/>\r\n    <row from=\"30005135\" to=\"30005138\"/>\r\n    <row from=\"30005136\" to=\"30005134\"/>\r\n    <row from=\"30005137\" to=\"30005135\"/>\r\n    <row from=\"30005138\" to=\"30005134\"/>\r\n    <row from=\"30005138\" to=\"30005135\"/>\r\n    <row from=\"30005139\" to=\"30005098\"/>\r\n    <row from=\"30005139\" to=\"30005140\"/>\r\n    <row from=\"30005139\" to=\"30005141\"/>\r\n    <row from=\"30005139\" to=\"30005143\"/>\r\n    <row from=\"30005139\" to=\"30005144\"/>\r\n    <row from=\"30005140\" to=\"30005139\"/>\r\n    <row from=\"30005140\" to=\"30005141\"/>\r\n    <row from=\"30005140\" to=\"30005142\"/>\r\n    <row from=\"30005140\" to=\"30005143\"/>\r\n    <row from=\"30005141\" to=\"30005139\"/>\r\n    <row from=\"30005141\" to=\"30005140\"/>\r\n    <row from=\"30005141\" to=\"30005144\"/>\r\n    <row from=\"30005142\" to=\"30005140\"/>\r\n    <row from=\"30005143\" to=\"30005139\"/>\r\n    <row from=\"30005143\" to=\"30005140\"/>\r\n    <row from=\"30005143\" to=\"30005144\"/>\r\n    <row from=\"30005144\" to=\"30005139\"/>\r\n    <row from=\"30005144\" to=\"30005141\"/>\r\n    <row from=\"30005144\" to=\"30005143\"/>\r\n    <row from=\"30005145\" to=\"30005111\"/>\r\n    <row from=\"30005145\" to=\"30005146\"/>\r\n    <row from=\"30005145\" to=\"30005148\"/>\r\n    <row from=\"30005145\" to=\"30005149\"/>\r\n    <row from=\"30005145\" to=\"30005150\"/>\r\n    <row from=\"30005145\" to=\"30005151\"/>\r\n    <row from=\"30005146\" to=\"30005145\"/>\r\n    <row from=\"30005146\" to=\"30005147\"/>\r\n    <row from=\"30005146\" to=\"30005148\"/>\r\n    <row from=\"30005146\" to=\"30005151\"/>\r\n    <row from=\"30005147\" to=\"30001107\"/>\r\n    <row from=\"30005147\" to=\"30005146\"/>\r\n    <row from=\"30005147\" to=\"30005148\"/>\r\n    <row from=\"30005147\" to=\"30005151\"/>\r\n    <row from=\"30005148\" to=\"30005145\"/>\r\n    <row from=\"30005148\" to=\"30005146\"/>\r\n    <row from=\"30005148\" to=\"30005147\"/>\r\n    <row from=\"30005148\" to=\"30005149\"/>\r\n    <row from=\"30005149\" to=\"30005145\"/>\r\n    <row from=\"30005149\" to=\"30005148\"/>\r\n    <row from=\"30005149\" to=\"30005150\"/>\r\n    <row from=\"30005149\" to=\"30005151\"/>\r\n    <row from=\"30005150\" to=\"30005145\"/>\r\n    <row from=\"30005150\" to=\"30005149\"/>\r\n    <row from=\"30005151\" to=\"30005145\"/>\r\n    <row from=\"30005151\" to=\"30005146\"/>\r\n    <row from=\"30005151\" to=\"30005147\"/>\r\n    <row from=\"30005151\" to=\"30005149\"/>\r\n    <row from=\"30005151\" to=\"30005186\"/>\r\n    <row from=\"30005152\" to=\"30005122\"/>\r\n    <row from=\"30005152\" to=\"30005153\"/>\r\n    <row from=\"30005152\" to=\"30005154\"/>\r\n    <row from=\"30005152\" to=\"30005155\"/>\r\n    <row from=\"30005152\" to=\"30005157\"/>\r\n    <row from=\"30005153\" to=\"30005152\"/>\r\n    <row from=\"30005153\" to=\"30005157\"/>\r\n    <row from=\"30005154\" to=\"30005105\"/>\r\n    <row from=\"30005154\" to=\"30005152\"/>\r\n    <row from=\"30005154\" to=\"30005156\"/>\r\n    <row from=\"30005154\" to=\"30005157\"/>\r\n    <row from=\"30005155\" to=\"30005152\"/>\r\n    <row from=\"30005155\" to=\"30005156\"/>\r\n    <row from=\"30005156\" to=\"30005154\"/>\r\n    <row from=\"30005156\" to=\"30005155\"/>\r\n    <row from=\"30005156\" to=\"30005168\"/>\r\n    <row from=\"30005156\" to=\"30005174\"/>\r\n    <row from=\"30005157\" to=\"30005105\"/>\r\n    <row from=\"30005157\" to=\"30005152\"/>\r\n    <row from=\"30005157\" to=\"30005153\"/>\r\n    <row from=\"30005157\" to=\"30005154\"/>\r\n    <row from=\"30005158\" to=\"30003196\"/>\r\n    <row from=\"30005158\" to=\"30005159\"/>\r\n    <row from=\"30005158\" to=\"30005160\"/>\r\n    <row from=\"30005158\" to=\"30005162\"/>\r\n    <row from=\"30005159\" to=\"30005158\"/>\r\n    <row from=\"30005159\" to=\"30005161\"/>\r\n    <row from=\"30005159\" to=\"30005163\"/>\r\n    <row from=\"30005159\" to=\"30005166\"/>\r\n    <row from=\"30005160\" to=\"30005109\"/>\r\n    <row from=\"30005160\" to=\"30005158\"/>\r\n    <row from=\"30005160\" to=\"30005162\"/>\r\n    <row from=\"30005160\" to=\"30005165\"/>\r\n    <row from=\"30005161\" to=\"30005159\"/>\r\n    <row from=\"30005161\" to=\"30005166\"/>\r\n    <row from=\"30005161\" to=\"30005167\"/>\r\n    <row from=\"30005162\" to=\"30005158\"/>\r\n    <row from=\"30005162\" to=\"30005160\"/>\r\n    <row from=\"30005163\" to=\"30005159\"/>\r\n    <row from=\"30005163\" to=\"30005164\"/>\r\n    <row from=\"30005164\" to=\"30005163\"/>\r\n    <row from=\"30005165\" to=\"30005160\"/>\r\n    <row from=\"30005166\" to=\"30005159\"/>\r\n    <row from=\"30005166\" to=\"30005161\"/>\r\n    <row from=\"30005166\" to=\"30005167\"/>\r\n    <row from=\"30005167\" to=\"30005161\"/>\r\n    <row from=\"30005167\" to=\"30005166\"/>\r\n    <row from=\"30005168\" to=\"30005156\"/>\r\n    <row from=\"30005168\" to=\"30005169\"/>\r\n    <row from=\"30005168\" to=\"30005170\"/>\r\n    <row from=\"30005168\" to=\"30005180\"/>\r\n    <row from=\"30005169\" to=\"30005168\"/>\r\n    <row from=\"30005169\" to=\"30005170\"/>\r\n    <row from=\"30005169\" to=\"30005171\"/>\r\n    <row from=\"30005170\" to=\"30005168\"/>\r\n    <row from=\"30005170\" to=\"30005169\"/>\r\n    <row from=\"30005170\" to=\"30005171\"/>\r\n    <row from=\"30005171\" to=\"30005169\"/>\r\n    <row from=\"30005171\" to=\"30005170\"/>\r\n    <row from=\"30005171\" to=\"30005172\"/>\r\n    <row from=\"30005172\" to=\"30005171\"/>\r\n    <row from=\"30005172\" to=\"30005173\"/>\r\n    <row from=\"30005173\" to=\"30005172\"/>\r\n    <row from=\"30005174\" to=\"30005156\"/>\r\n    <row from=\"30005174\" to=\"30005175\"/>\r\n    <row from=\"30005174\" to=\"30005176\"/>\r\n    <row from=\"30005174\" to=\"30005177\"/>\r\n    <row from=\"30005175\" to=\"30003221\"/>\r\n    <row from=\"30005175\" to=\"30005174\"/>\r\n    <row from=\"30005176\" to=\"30005174\"/>\r\n    <row from=\"30005176\" to=\"30005177\"/>\r\n    <row from=\"30005177\" to=\"30005174\"/>\r\n    <row from=\"30005177\" to=\"30005176\"/>\r\n    <row from=\"30005177\" to=\"30005178\"/>\r\n    <row from=\"30005178\" to=\"30001796\"/>\r\n    <row from=\"30005178\" to=\"30005177\"/>\r\n    <row from=\"30005178\" to=\"30005179\"/>\r\n    <row from=\"30005179\" to=\"30005178\"/>\r\n    <row from=\"30005180\" to=\"30005168\"/>\r\n    <row from=\"30005180\" to=\"30005181\"/>\r\n    <row from=\"30005180\" to=\"30005182\"/>\r\n    <row from=\"30005180\" to=\"30005183\"/>\r\n    <row from=\"30005180\" to=\"30005184\"/>\r\n    <row from=\"30005181\" to=\"30005180\"/>\r\n    <row from=\"30005181\" to=\"30005182\"/>\r\n    <row from=\"30005181\" to=\"30005183\"/>\r\n    <row from=\"30005181\" to=\"30005184\"/>\r\n    <row from=\"30005182\" to=\"30005180\"/>\r\n    <row from=\"30005182\" to=\"30005181\"/>\r\n    <row from=\"30005182\" to=\"30005185\"/>\r\n    <row from=\"30005183\" to=\"30005180\"/>\r\n    <row from=\"30005183\" to=\"30005181\"/>\r\n    <row from=\"30005183\" to=\"30005184\"/>\r\n    <row from=\"30005184\" to=\"30005180\"/>\r\n    <row from=\"30005184\" to=\"30005181\"/>\r\n    <row from=\"30005184\" to=\"30005183\"/>\r\n    <row from=\"30005185\" to=\"30001571\"/>\r\n    <row from=\"30005185\" to=\"30001592\"/>\r\n    <row from=\"30005185\" to=\"30005182\"/>\r\n    <row from=\"30005186\" to=\"30005151\"/>\r\n    <row from=\"30005186\" to=\"30005187\"/>\r\n    <row from=\"30005186\" to=\"30005191\"/>\r\n    <row from=\"30005187\" to=\"30005186\"/>\r\n    <row from=\"30005187\" to=\"30005188\"/>\r\n    <row from=\"30005188\" to=\"30005187\"/>\r\n    <row from=\"30005188\" to=\"30005189\"/>\r\n    <row from=\"30005188\" to=\"30005190\"/>\r\n    <row from=\"30005188\" to=\"30005191\"/>\r\n    <row from=\"30005189\" to=\"30001330\"/>\r\n    <row from=\"30005189\" to=\"30005188\"/>\r\n    <row from=\"30005190\" to=\"30003237\"/>\r\n    <row from=\"30005190\" to=\"30005188\"/>\r\n    <row from=\"30005191\" to=\"30005186\"/>\r\n    <row from=\"30005191\" to=\"30005188\"/>\r\n    <row from=\"30005192\" to=\"30004083\"/>\r\n    <row from=\"30005192\" to=\"30004115\"/>\r\n    <row from=\"30005192\" to=\"30005193\"/>\r\n    <row from=\"30005192\" to=\"30005196\"/>\r\n    <row from=\"30005193\" to=\"30005192\"/>\r\n    <row from=\"30005193\" to=\"30005194\"/>\r\n    <row from=\"30005193\" to=\"30005196\"/>\r\n    <row from=\"30005194\" to=\"30005193\"/>\r\n    <row from=\"30005194\" to=\"30005195\"/>\r\n    <row from=\"30005194\" to=\"30005197\"/>\r\n    <row from=\"30005195\" to=\"30005194\"/>\r\n    <row from=\"30005195\" to=\"30005205\"/>\r\n    <row from=\"30005196\" to=\"30000134\"/>\r\n    <row from=\"30005196\" to=\"30005192\"/>\r\n    <row from=\"30005196\" to=\"30005193\"/>\r\n    <row from=\"30005197\" to=\"30005194\"/>\r\n    <row from=\"30005197\" to=\"30005207\"/>\r\n    <row from=\"30005198\" to=\"30003452\"/>\r\n    <row from=\"30005198\" to=\"30004969\"/>\r\n    <row from=\"30005198\" to=\"30004970\"/>\r\n    <row from=\"30005198\" to=\"30005015\"/>\r\n    <row from=\"30005198\" to=\"30005199\"/>\r\n    <row from=\"30005199\" to=\"30005198\"/>\r\n    <row from=\"30005199\" to=\"30005200\"/>\r\n    <row from=\"30005199\" to=\"30005201\"/>\r\n    <row from=\"30005199\" to=\"30005303\"/>\r\n    <row from=\"30005200\" to=\"30005199\"/>\r\n    <row from=\"30005200\" to=\"30005205\"/>\r\n    <row from=\"30005201\" to=\"30003052\"/>\r\n    <row from=\"30005201\" to=\"30005199\"/>\r\n    <row from=\"30005201\" to=\"30005202\"/>\r\n    <row from=\"30005201\" to=\"30005203\"/>\r\n    <row from=\"30005201\" to=\"30005206\"/>\r\n    <row from=\"30005202\" to=\"30005001\"/>\r\n    <row from=\"30005202\" to=\"30005201\"/>\r\n    <row from=\"30005202\" to=\"30005214\"/>\r\n    <row from=\"30005203\" to=\"30002661\"/>\r\n    <row from=\"30005203\" to=\"30005024\"/>\r\n    <row from=\"30005203\" to=\"30005201\"/>\r\n    <row from=\"30005203\" to=\"30005204\"/>\r\n    <row from=\"30005203\" to=\"30005331\"/>\r\n    <row from=\"30005204\" to=\"30005203\"/>\r\n    <row from=\"30005204\" to=\"30005206\"/>\r\n    <row from=\"30005204\" to=\"30005301\"/>\r\n    <row from=\"30005205\" to=\"30005195\"/>\r\n    <row from=\"30005205\" to=\"30005200\"/>\r\n    <row from=\"30005205\" to=\"30005221\"/>\r\n    <row from=\"30005205\" to=\"30005288\"/>\r\n    <row from=\"30005206\" to=\"30004987\"/>\r\n    <row from=\"30005206\" to=\"30004994\"/>\r\n    <row from=\"30005206\" to=\"30005201\"/>\r\n    <row from=\"30005206\" to=\"30005204\"/>\r\n    <row from=\"30005207\" to=\"30005197\"/>\r\n    <row from=\"30005207\" to=\"30005208\"/>\r\n    <row from=\"30005208\" to=\"30005207\"/>\r\n    <row from=\"30005208\" to=\"30005209\"/>\r\n    <row from=\"30005208\" to=\"30005224\"/>\r\n    <row from=\"30005209\" to=\"30005208\"/>\r\n    <row from=\"30005209\" to=\"30005210\"/>\r\n    <row from=\"30005209\" to=\"30005244\"/>\r\n    <row from=\"30005210\" to=\"30005209\"/>\r\n    <row from=\"30005210\" to=\"30005211\"/>\r\n    <row from=\"30005210\" to=\"30005212\"/>\r\n    <row from=\"30005210\" to=\"30005219\"/>\r\n    <row from=\"30005211\" to=\"30005210\"/>\r\n    <row from=\"30005211\" to=\"30005218\"/>\r\n    <row from=\"30005212\" to=\"30005210\"/>\r\n    <row from=\"30005212\" to=\"30005213\"/>\r\n    <row from=\"30005213\" to=\"30005212\"/>\r\n    <row from=\"30005214\" to=\"30005202\"/>\r\n    <row from=\"30005214\" to=\"30005215\"/>\r\n    <row from=\"30005215\" to=\"30005214\"/>\r\n    <row from=\"30005215\" to=\"30005216\"/>\r\n    <row from=\"30005215\" to=\"30005217\"/>\r\n    <row from=\"30005216\" to=\"30005215\"/>\r\n    <row from=\"30005216\" to=\"30005217\"/>\r\n    <row from=\"30005217\" to=\"30005215\"/>\r\n    <row from=\"30005217\" to=\"30005216\"/>\r\n    <row from=\"30005217\" to=\"30005218\"/>\r\n    <row from=\"30005218\" to=\"30005211\"/>\r\n    <row from=\"30005218\" to=\"30005217\"/>\r\n    <row from=\"30005218\" to=\"30005219\"/>\r\n    <row from=\"30005219\" to=\"30005210\"/>\r\n    <row from=\"30005219\" to=\"30005218\"/>\r\n    <row from=\"30005219\" to=\"30005220\"/>\r\n    <row from=\"30005220\" to=\"30005219\"/>\r\n    <row from=\"30005220\" to=\"30005243\"/>\r\n    <row from=\"30005221\" to=\"30005205\"/>\r\n    <row from=\"30005221\" to=\"30005222\"/>\r\n    <row from=\"30005221\" to=\"30005289\"/>\r\n    <row from=\"30005222\" to=\"30005221\"/>\r\n    <row from=\"30005222\" to=\"30005223\"/>\r\n    <row from=\"30005222\" to=\"30005224\"/>\r\n    <row from=\"30005223\" to=\"30005222\"/>\r\n    <row from=\"30005223\" to=\"30005292\"/>\r\n    <row from=\"30005224\" to=\"30005208\"/>\r\n    <row from=\"30005224\" to=\"30005222\"/>\r\n    <row from=\"30005224\" to=\"30005225\"/>\r\n    <row from=\"30005224\" to=\"30005228\"/>\r\n    <row from=\"30005225\" to=\"30005224\"/>\r\n    <row from=\"30005225\" to=\"30005226\"/>\r\n    <row from=\"30005225\" to=\"30005228\"/>\r\n    <row from=\"30005226\" to=\"30005225\"/>\r\n    <row from=\"30005226\" to=\"30005227\"/>\r\n    <row from=\"30005227\" to=\"30004104\"/>\r\n    <row from=\"30005227\" to=\"30004122\"/>\r\n    <row from=\"30005227\" to=\"30005226\"/>\r\n    <row from=\"30005228\" to=\"30005224\"/>\r\n    <row from=\"30005228\" to=\"30005225\"/>\r\n    <row from=\"30005229\" to=\"30005230\"/>\r\n    <row from=\"30005229\" to=\"30005301\"/>\r\n    <row from=\"30005230\" to=\"30005229\"/>\r\n    <row from=\"30005230\" to=\"30005231\"/>\r\n    <row from=\"30005231\" to=\"30005230\"/>\r\n    <row from=\"30005231\" to=\"30005232\"/>\r\n    <row from=\"30005231\" to=\"30005233\"/>\r\n    <row from=\"30005231\" to=\"30005234\"/>\r\n    <row from=\"30005232\" to=\"30005231\"/>\r\n    <row from=\"30005232\" to=\"30005233\"/>\r\n    <row from=\"30005232\" to=\"30005235\"/>\r\n    <row from=\"30005233\" to=\"30005231\"/>\r\n    <row from=\"30005233\" to=\"30005232\"/>\r\n    <row from=\"30005234\" to=\"30005231\"/>\r\n    <row from=\"30005234\" to=\"30005291\"/>\r\n    <row from=\"30005235\" to=\"30005232\"/>\r\n    <row from=\"30005235\" to=\"30005267\"/>\r\n    <row from=\"30005236\" to=\"30005031\"/>\r\n    <row from=\"30005236\" to=\"30005237\"/>\r\n    <row from=\"30005236\" to=\"30005238\"/>\r\n    <row from=\"30005237\" to=\"30005236\"/>\r\n    <row from=\"30005237\" to=\"30005239\"/>\r\n    <row from=\"30005237\" to=\"30005240\"/>\r\n    <row from=\"30005238\" to=\"30005077\"/>\r\n    <row from=\"30005238\" to=\"30005236\"/>\r\n    <row from=\"30005239\" to=\"30005237\"/>\r\n    <row from=\"30005239\" to=\"30005240\"/>\r\n    <row from=\"30005239\" to=\"30005241\"/>\r\n    <row from=\"30005239\" to=\"30005261\"/>\r\n    <row from=\"30005240\" to=\"30005237\"/>\r\n    <row from=\"30005240\" to=\"30005239\"/>\r\n    <row from=\"30005240\" to=\"30005242\"/>\r\n    <row from=\"30005241\" to=\"30004120\"/>\r\n    <row from=\"30005241\" to=\"30005239\"/>\r\n    <row from=\"30005242\" to=\"30005240\"/>\r\n    <row from=\"30005242\" to=\"30005255\"/>\r\n    <row from=\"30005243\" to=\"30005220\"/>\r\n    <row from=\"30005243\" to=\"30005244\"/>\r\n    <row from=\"30005243\" to=\"30005293\"/>\r\n    <row from=\"30005244\" to=\"30005209\"/>\r\n    <row from=\"30005244\" to=\"30005243\"/>\r\n    <row from=\"30005244\" to=\"30005245\"/>\r\n    <row from=\"30005244\" to=\"30005246\"/>\r\n    <row from=\"30005244\" to=\"30005247\"/>\r\n    <row from=\"30005245\" to=\"30005244\"/>\r\n    <row from=\"30005245\" to=\"30005247\"/>\r\n    <row from=\"30005245\" to=\"30005248\"/>\r\n    <row from=\"30005246\" to=\"30005244\"/>\r\n    <row from=\"30005246\" to=\"30005249\"/>\r\n    <row from=\"30005246\" to=\"30005261\"/>\r\n    <row from=\"30005247\" to=\"30005244\"/>\r\n    <row from=\"30005247\" to=\"30005245\"/>\r\n    <row from=\"30005247\" to=\"30005248\"/>\r\n    <row from=\"30005248\" to=\"30004116\"/>\r\n    <row from=\"30005248\" to=\"30005245\"/>\r\n    <row from=\"30005248\" to=\"30005247\"/>\r\n    <row from=\"30005249\" to=\"30005246\"/>\r\n    <row from=\"30005249\" to=\"30005250\"/>\r\n    <row from=\"30005249\" to=\"30005251\"/>\r\n    <row from=\"30005249\" to=\"30005252\"/>\r\n    <row from=\"30005250\" to=\"30005249\"/>\r\n    <row from=\"30005250\" to=\"30005253\"/>\r\n    <row from=\"30005250\" to=\"30005254\"/>\r\n    <row from=\"30005251\" to=\"30005249\"/>\r\n    <row from=\"30005251\" to=\"30005256\"/>\r\n    <row from=\"30005252\" to=\"30005249\"/>\r\n    <row from=\"30005252\" to=\"30005256\"/>\r\n    <row from=\"30005253\" to=\"30005250\"/>\r\n    <row from=\"30005254\" to=\"30005250\"/>\r\n    <row from=\"30005254\" to=\"30005256\"/>\r\n    <row from=\"30005255\" to=\"30005242\"/>\r\n    <row from=\"30005255\" to=\"30005256\"/>\r\n    <row from=\"30005255\" to=\"30005257\"/>\r\n    <row from=\"30005256\" to=\"30005251\"/>\r\n    <row from=\"30005256\" to=\"30005252\"/>\r\n    <row from=\"30005256\" to=\"30005254\"/>\r\n    <row from=\"30005256\" to=\"30005255\"/>\r\n    <row from=\"30005256\" to=\"30005260\"/>\r\n    <row from=\"30005257\" to=\"30005255\"/>\r\n    <row from=\"30005257\" to=\"30005258\"/>\r\n    <row from=\"30005257\" to=\"30005259\"/>\r\n    <row from=\"30005257\" to=\"30005275\"/>\r\n    <row from=\"30005258\" to=\"30005257\"/>\r\n    <row from=\"30005258\" to=\"30005268\"/>\r\n    <row from=\"30005259\" to=\"30005257\"/>\r\n    <row from=\"30005260\" to=\"30005256\"/>\r\n    <row from=\"30005261\" to=\"30005239\"/>\r\n    <row from=\"30005261\" to=\"30005246\"/>\r\n    <row from=\"30005261\" to=\"30005262\"/>\r\n    <row from=\"30005261\" to=\"30005263\"/>\r\n    <row from=\"30005262\" to=\"30005261\"/>\r\n    <row from=\"30005262\" to=\"30005263\"/>\r\n    <row from=\"30005262\" to=\"30005264\"/>\r\n    <row from=\"30005262\" to=\"30005265\"/>\r\n    <row from=\"30005263\" to=\"30005261\"/>\r\n    <row from=\"30005263\" to=\"30005262\"/>\r\n    <row from=\"30005264\" to=\"30005262\"/>\r\n    <row from=\"30005264\" to=\"30005265\"/>\r\n    <row from=\"30005264\" to=\"30005266\"/>\r\n    <row from=\"30005265\" to=\"30005262\"/>\r\n    <row from=\"30005265\" to=\"30005264\"/>\r\n    <row from=\"30005266\" to=\"30005264\"/>\r\n    <row from=\"30005266\" to=\"30005281\"/>\r\n    <row from=\"30005267\" to=\"30005235\"/>\r\n    <row from=\"30005267\" to=\"30005268\"/>\r\n    <row from=\"30005267\" to=\"30005269\"/>\r\n    <row from=\"30005268\" to=\"30005258\"/>\r\n    <row from=\"30005268\" to=\"30005267\"/>\r\n    <row from=\"30005268\" to=\"30005270\"/>\r\n    <row from=\"30005268\" to=\"30005271\"/>\r\n    <row from=\"30005269\" to=\"30005267\"/>\r\n    <row from=\"30005270\" to=\"30005268\"/>\r\n    <row from=\"30005270\" to=\"30005271\"/>\r\n    <row from=\"30005270\" to=\"30005272\"/>\r\n    <row from=\"30005270\" to=\"30005273\"/>\r\n    <row from=\"30005271\" to=\"30005268\"/>\r\n    <row from=\"30005271\" to=\"30005270\"/>\r\n    <row from=\"30005271\" to=\"30005273\"/>\r\n    <row from=\"30005272\" to=\"30005270\"/>\r\n    <row from=\"30005272\" to=\"30005274\"/>\r\n    <row from=\"30005273\" to=\"30005270\"/>\r\n    <row from=\"30005273\" to=\"30005271\"/>\r\n    <row from=\"30005273\" to=\"30005274\"/>\r\n    <row from=\"30005273\" to=\"30005275\"/>\r\n    <row from=\"30005274\" to=\"30004230\"/>\r\n    <row from=\"30005274\" to=\"30005272\"/>\r\n    <row from=\"30005274\" to=\"30005273\"/>\r\n    <row from=\"30005275\" to=\"30005257\"/>\r\n    <row from=\"30005275\" to=\"30005273\"/>\r\n    <row from=\"30005275\" to=\"30005276\"/>\r\n    <row from=\"30005276\" to=\"30005275\"/>\r\n    <row from=\"30005276\" to=\"30005277\"/>\r\n    <row from=\"30005276\" to=\"30005278\"/>\r\n    <row from=\"30005276\" to=\"30005279\"/>\r\n    <row from=\"30005277\" to=\"30005276\"/>\r\n    <row from=\"30005278\" to=\"30005276\"/>\r\n    <row from=\"30005279\" to=\"30005276\"/>\r\n    <row from=\"30005279\" to=\"30005280\"/>\r\n    <row from=\"30005280\" to=\"30005279\"/>\r\n    <row from=\"30005281\" to=\"30005266\"/>\r\n    <row from=\"30005281\" to=\"30005282\"/>\r\n    <row from=\"30005282\" to=\"30005281\"/>\r\n    <row from=\"30005282\" to=\"30005283\"/>\r\n    <row from=\"30005283\" to=\"30005282\"/>\r\n    <row from=\"30005283\" to=\"30005284\"/>\r\n    <row from=\"30005283\" to=\"30005285\"/>\r\n    <row from=\"30005283\" to=\"30005287\"/>\r\n    <row from=\"30005284\" to=\"30005283\"/>\r\n    <row from=\"30005284\" to=\"30005286\"/>\r\n    <row from=\"30005285\" to=\"30005283\"/>\r\n    <row from=\"30005286\" to=\"30005284\"/>\r\n    <row from=\"30005287\" to=\"30005283\"/>\r\n    <row from=\"30005288\" to=\"30003055\"/>\r\n    <row from=\"30005288\" to=\"30005205\"/>\r\n    <row from=\"30005288\" to=\"30005289\"/>\r\n    <row from=\"30005289\" to=\"30005221\"/>\r\n    <row from=\"30005289\" to=\"30005288\"/>\r\n    <row from=\"30005289\" to=\"30005290\"/>\r\n    <row from=\"30005289\" to=\"30005294\"/>\r\n    <row from=\"30005290\" to=\"30005289\"/>\r\n    <row from=\"30005290\" to=\"30005291\"/>\r\n    <row from=\"30005290\" to=\"30005292\"/>\r\n    <row from=\"30005290\" to=\"30005293\"/>\r\n    <row from=\"30005291\" to=\"30005234\"/>\r\n    <row from=\"30005291\" to=\"30005290\"/>\r\n    <row from=\"30005291\" to=\"30005294\"/>\r\n    <row from=\"30005292\" to=\"30005223\"/>\r\n    <row from=\"30005292\" to=\"30005290\"/>\r\n    <row from=\"30005292\" to=\"30005293\"/>\r\n    <row from=\"30005293\" to=\"30005243\"/>\r\n    <row from=\"30005293\" to=\"30005290\"/>\r\n    <row from=\"30005293\" to=\"30005292\"/>\r\n    <row from=\"30005294\" to=\"30005289\"/>\r\n    <row from=\"30005294\" to=\"30005291\"/>\r\n    <row from=\"30005295\" to=\"30004975\"/>\r\n    <row from=\"30005295\" to=\"30004982\"/>\r\n    <row from=\"30005295\" to=\"30005296\"/>\r\n    <row from=\"30005296\" to=\"30005295\"/>\r\n    <row from=\"30005296\" to=\"30005297\"/>\r\n    <row from=\"30005296\" to=\"30005298\"/>\r\n    <row from=\"30005297\" to=\"30005296\"/>\r\n    <row from=\"30005297\" to=\"30005300\"/>\r\n    <row from=\"30005297\" to=\"30005308\"/>\r\n    <row from=\"30005298\" to=\"30005296\"/>\r\n    <row from=\"30005298\" to=\"30005299\"/>\r\n    <row from=\"30005299\" to=\"30005298\"/>\r\n    <row from=\"30005299\" to=\"30005320\"/>\r\n    <row from=\"30005300\" to=\"30003787\"/>\r\n    <row from=\"30005300\" to=\"30005297\"/>\r\n    <row from=\"30005301\" to=\"30005204\"/>\r\n    <row from=\"30005301\" to=\"30005229\"/>\r\n    <row from=\"30005301\" to=\"30005302\"/>\r\n    <row from=\"30005301\" to=\"30005303\"/>\r\n    <row from=\"30005301\" to=\"30025305\"/>\r\n    <row from=\"30005302\" to=\"30005301\"/>\r\n    <row from=\"30005302\" to=\"30005304\"/>\r\n    <row from=\"30005302\" to=\"30005306\"/>\r\n    <row from=\"30005303\" to=\"30005199\"/>\r\n    <row from=\"30005303\" to=\"30005301\"/>\r\n    <row from=\"30005303\" to=\"30005304\"/>\r\n    <row from=\"30005304\" to=\"30005302\"/>\r\n    <row from=\"30005304\" to=\"30005303\"/>\r\n    <row from=\"30005304\" to=\"30005305\"/>\r\n    <row from=\"30005304\" to=\"30005306\"/>\r\n    <row from=\"30005304\" to=\"30005322\"/>\r\n    <row from=\"30005304\" to=\"30015305\"/>\r\n    <row from=\"30005305\" to=\"30005304\"/>\r\n    <row from=\"30005305\" to=\"30005307\"/>\r\n    <row from=\"30005305\" to=\"30005315\"/>\r\n    <row from=\"30005306\" to=\"30005302\"/>\r\n    <row from=\"30005306\" to=\"30005304\"/>\r\n    <row from=\"30005307\" to=\"30003794\"/>\r\n    <row from=\"30005307\" to=\"30003843\"/>\r\n    <row from=\"30005307\" to=\"30005305\"/>\r\n    <row from=\"30005308\" to=\"30005297\"/>\r\n    <row from=\"30005308\" to=\"30005309\"/>\r\n    <row from=\"30005308\" to=\"30005310\"/>\r\n    <row from=\"30005308\" to=\"30005311\"/>\r\n    <row from=\"30005309\" to=\"30005308\"/>\r\n    <row from=\"30005309\" to=\"30005312\"/>\r\n    <row from=\"30005310\" to=\"30005308\"/>\r\n    <row from=\"30005310\" to=\"30005318\"/>\r\n    <row from=\"30005311\" to=\"30003788\"/>\r\n    <row from=\"30005311\" to=\"30005308\"/>\r\n    <row from=\"30005312\" to=\"30005309\"/>\r\n    <row from=\"30005312\" to=\"30005313\"/>\r\n    <row from=\"30005312\" to=\"30005322\"/>\r\n    <row from=\"30005313\" to=\"30005312\"/>\r\n    <row from=\"30005313\" to=\"30005314\"/>\r\n    <row from=\"30005314\" to=\"30005313\"/>\r\n    <row from=\"30005315\" to=\"30005305\"/>\r\n    <row from=\"30005315\" to=\"30005316\"/>\r\n    <row from=\"30005315\" to=\"30005318\"/>\r\n    <row from=\"30005315\" to=\"30035305\"/>\r\n    <row from=\"30005316\" to=\"30005315\"/>\r\n    <row from=\"30005316\" to=\"30005317\"/>\r\n    <row from=\"30005316\" to=\"30005318\"/>\r\n    <row from=\"30005316\" to=\"30045305\"/>\r\n    <row from=\"30005317\" to=\"30005316\"/>\r\n    <row from=\"30005317\" to=\"30005319\"/>\r\n    <row from=\"30005318\" to=\"30005310\"/>\r\n    <row from=\"30005318\" to=\"30005315\"/>\r\n    <row from=\"30005318\" to=\"30005316\"/>\r\n    <row from=\"30005318\" to=\"30005319\"/>\r\n    <row from=\"30005319\" to=\"30005317\"/>\r\n    <row from=\"30005319\" to=\"30005318\"/>\r\n    <row from=\"30005319\" to=\"30005320\"/>\r\n    <row from=\"30005320\" to=\"30005299\"/>\r\n    <row from=\"30005320\" to=\"30005319\"/>\r\n    <row from=\"30005320\" to=\"30005321\"/>\r\n    <row from=\"30005321\" to=\"30005008\"/>\r\n    <row from=\"30005321\" to=\"30005320\"/>\r\n    <row from=\"30005322\" to=\"30005304\"/>\r\n    <row from=\"30005322\" to=\"30005312\"/>\r\n    <row from=\"30005322\" to=\"30005323\"/>\r\n    <row from=\"30005322\" to=\"30005332\"/>\r\n    <row from=\"30005323\" to=\"30005322\"/>\r\n    <row from=\"30005323\" to=\"30005324\"/>\r\n    <row from=\"30005324\" to=\"30005323\"/>\r\n    <row from=\"30005324\" to=\"30005325\"/>\r\n    <row from=\"30005325\" to=\"30005324\"/>\r\n    <row from=\"30005325\" to=\"30005326\"/>\r\n    <row from=\"30005326\" to=\"30005325\"/>\r\n    <row from=\"30005326\" to=\"30005327\"/>\r\n    <row from=\"30005327\" to=\"30005326\"/>\r\n    <row from=\"30005327\" to=\"30005328\"/>\r\n    <row from=\"30005328\" to=\"30003280\"/>\r\n    <row from=\"30005328\" to=\"30005327\"/>\r\n    <row from=\"30005329\" to=\"30004978\"/>\r\n    <row from=\"30005329\" to=\"30005330\"/>\r\n    <row from=\"30005329\" to=\"30005333\"/>\r\n    <row from=\"30005330\" to=\"30005004\"/>\r\n    <row from=\"30005330\" to=\"30005329\"/>\r\n    <row from=\"30005330\" to=\"30005331\"/>\r\n    <row from=\"30005330\" to=\"30005333\"/>\r\n    <row from=\"30005331\" to=\"30005203\"/>\r\n    <row from=\"30005331\" to=\"30005330\"/>\r\n    <row from=\"30005331\" to=\"30005332\"/>\r\n    <row from=\"30005331\" to=\"30005334\"/>\r\n    <row from=\"30005332\" to=\"30005322\"/>\r\n    <row from=\"30005332\" to=\"30005331\"/>\r\n    <row from=\"30005332\" to=\"30005334\"/>\r\n    <row from=\"30005333\" to=\"30005329\"/>\r\n    <row from=\"30005333\" to=\"30005330\"/>\r\n    <row from=\"30005334\" to=\"30002812\"/>\r\n    <row from=\"30005334\" to=\"30005025\"/>\r\n    <row from=\"30005334\" to=\"30005331\"/>\r\n    <row from=\"30005334\" to=\"30005332\"/>\r\n    <row from=\"30010141\" to=\"30001381\"/>\r\n    <row from=\"30010141\" to=\"30031392\"/>\r\n    <row from=\"30011392\" to=\"30001378\"/>\r\n    <row from=\"30011407\" to=\"30001404\"/>\r\n    <row from=\"30011672\" to=\"30001723\"/>\r\n    <row from=\"30012505\" to=\"30002511\"/>\r\n    <row from=\"30012547\" to=\"30002543\"/>\r\n    <row from=\"30012715\" to=\"30002656\"/>\r\n    <row from=\"30013410\" to=\"30003380\"/>\r\n    <row from=\"30013489\" to=\"30003487\"/>\r\n    <row from=\"30014971\" to=\"30004972\"/>\r\n    <row from=\"30015042\" to=\"30004102\"/>\r\n    <row from=\"30015305\" to=\"30005304\"/>\r\n    <row from=\"30020141\" to=\"30000206\"/>\r\n    <row from=\"30020141\" to=\"30045328\"/>\r\n    <row from=\"30021392\" to=\"30001364\"/>\r\n    <row from=\"30021407\" to=\"30000133\"/>\r\n    <row from=\"30021672\" to=\"30001674\"/>\r\n    <row from=\"30022505\" to=\"30003374\"/>\r\n    <row from=\"30022547\" to=\"30002568\"/>\r\n    <row from=\"30022715\" to=\"30002708\"/>\r\n    <row from=\"30023410\" to=\"30003409\"/>\r\n    <row from=\"30023489\" to=\"30002281\"/>\r\n    <row from=\"30024971\" to=\"30005024\"/>\r\n    <row from=\"30025042\" to=\"30005046\"/>\r\n    <row from=\"30025305\" to=\"30005301\"/>\r\n    <row from=\"30030141\" to=\"30000129\"/>\r\n    <row from=\"30031392\" to=\"30005005\"/>\r\n    <row from=\"30031392\" to=\"30010141\"/>\r\n    <row from=\"30031407\" to=\"30001377\"/>\r\n    <row from=\"30031672\" to=\"30001722\"/>\r\n    <row from=\"30032505\" to=\"30002518\"/>\r\n    <row from=\"30032547\" to=\"30002569\"/>\r\n    <row from=\"30032715\" to=\"30002711\"/>\r\n    <row from=\"30033410\" to=\"30003403\"/>\r\n    <row from=\"30033489\" to=\"30003524\"/>\r\n    <row from=\"30034971\" to=\"30005015\"/>\r\n    <row from=\"30035042\" to=\"30005048\"/>\r\n    <row from=\"30035305\" to=\"30005315\"/>\r\n    <row from=\"30040141\" to=\"30000192\"/>\r\n    <row from=\"30040141\" to=\"30001413\"/>\r\n    <row from=\"30041392\" to=\"30002817\"/>\r\n    <row from=\"30041392\" to=\"30002818\"/>\r\n    <row from=\"30041392\" to=\"30002819\"/>\r\n    <row from=\"30041407\" to=\"30001379\"/>\r\n    <row from=\"30041672\" to=\"30001734\"/>\r\n    <row from=\"30042505\" to=\"30002524\"/>\r\n    <row from=\"30042547\" to=\"30002573\"/>\r\n    <row from=\"30042715\" to=\"30002731\"/>\r\n    <row from=\"30043410\" to=\"30003388\"/>\r\n    <row from=\"30043489\" to=\"30003511\"/>\r\n    <row from=\"30044971\" to=\"30005016\"/>\r\n    <row from=\"30045042\" to=\"30005037\"/>\r\n    <row from=\"30045305\" to=\"30005316\"/>\r\n    <row from=\"30045306\" to=\"30045309\"/>\r\n    <row from=\"30045306\" to=\"30045310\"/>\r\n    <row from=\"30045306\" to=\"30045311\"/>\r\n    <row from=\"30045307\" to=\"30004055\"/>\r\n    <row from=\"30045307\" to=\"30045309\"/>\r\n    <row from=\"30045307\" to=\"30045313\"/>\r\n    <row from=\"30045308\" to=\"30045309\"/>\r\n    <row from=\"30045308\" to=\"30045311\"/>\r\n    <row from=\"30045308\" to=\"30045318\"/>\r\n    <row from=\"30045309\" to=\"30045306\"/>\r\n    <row from=\"30045309\" to=\"30045307\"/>\r\n    <row from=\"30045309\" to=\"30045308\"/>\r\n    <row from=\"30045309\" to=\"30045312\"/>\r\n    <row from=\"30045310\" to=\"30001440\"/>\r\n    <row from=\"30045310\" to=\"30045306\"/>\r\n    <row from=\"30045311\" to=\"30045306\"/>\r\n    <row from=\"30045311\" to=\"30045308\"/>\r\n    <row from=\"30045311\" to=\"30045313\"/>\r\n    <row from=\"30045312\" to=\"30045309\"/>\r\n    <row from=\"30045313\" to=\"30045307\"/>\r\n    <row from=\"30045313\" to=\"30045311\"/>\r\n    <row from=\"30045314\" to=\"30045315\"/>\r\n    <row from=\"30045314\" to=\"30045316\"/>\r\n    <row from=\"30045314\" to=\"30045318\"/>\r\n    <row from=\"30045314\" to=\"30045324\"/>\r\n    <row from=\"30045315\" to=\"30001435\"/>\r\n    <row from=\"30045315\" to=\"30045314\"/>\r\n    <row from=\"30045315\" to=\"30045317\"/>\r\n    <row from=\"30045316\" to=\"30045314\"/>\r\n    <row from=\"30045316\" to=\"30045318\"/>\r\n    <row from=\"30045316\" to=\"30045319\"/>\r\n    <row from=\"30045316\" to=\"30045320\"/>\r\n    <row from=\"30045317\" to=\"30045315\"/>\r\n    <row from=\"30045317\" to=\"30045318\"/>\r\n    <row from=\"30045318\" to=\"30045308\"/>\r\n    <row from=\"30045318\" to=\"30045314\"/>\r\n    <row from=\"30045318\" to=\"30045316\"/>\r\n    <row from=\"30045318\" to=\"30045317\"/>\r\n    <row from=\"30045318\" to=\"30045319\"/>\r\n    <row from=\"30045319\" to=\"30003838\"/>\r\n    <row from=\"30045319\" to=\"30045316\"/>\r\n    <row from=\"30045319\" to=\"30045318\"/>\r\n    <row from=\"30045320\" to=\"30045316\"/>\r\n    <row from=\"30045320\" to=\"30045340\"/>\r\n    <row from=\"30045321\" to=\"30045322\"/>\r\n    <row from=\"30045321\" to=\"30045325\"/>\r\n    <row from=\"30045322\" to=\"30003856\"/>\r\n    <row from=\"30045322\" to=\"30045321\"/>\r\n    <row from=\"30045322\" to=\"30045326\"/>\r\n    <row from=\"30045322\" to=\"30045337\"/>\r\n    <row from=\"30045323\" to=\"30045326\"/>\r\n    <row from=\"30045323\" to=\"30045327\"/>\r\n    <row from=\"30045324\" to=\"30001403\"/>\r\n    <row from=\"30045324\" to=\"30045314\"/>\r\n    <row from=\"30045324\" to=\"30045325\"/>\r\n    <row from=\"30045324\" to=\"30045326\"/>\r\n    <row from=\"30045324\" to=\"30045327\"/>\r\n    <row from=\"30045325\" to=\"30045321\"/>\r\n    <row from=\"30045325\" to=\"30045324\"/>\r\n    <row from=\"30045326\" to=\"30045322\"/>\r\n    <row from=\"30045326\" to=\"30045323\"/>\r\n    <row from=\"30045326\" to=\"30045324\"/>\r\n    <row from=\"30045327\" to=\"30045323\"/>\r\n    <row from=\"30045327\" to=\"30045324\"/>\r\n    <row from=\"30045328\" to=\"30000021\"/>\r\n    <row from=\"30045328\" to=\"30020141\"/>\r\n    <row from=\"30045329\" to=\"30002797\"/>\r\n    <row from=\"30045329\" to=\"30003046\"/>\r\n    <row from=\"30045330\" to=\"30045332\"/>\r\n    <row from=\"30045330\" to=\"30045334\"/>\r\n    <row from=\"30045330\" to=\"30045354\"/>\r\n    <row from=\"30045331\" to=\"30045332\"/>\r\n    <row from=\"30045331\" to=\"30045334\"/>\r\n    <row from=\"30045331\" to=\"30045335\"/>\r\n    <row from=\"30045332\" to=\"30045330\"/>\r\n    <row from=\"30045332\" to=\"30045331\"/>\r\n    <row from=\"30045332\" to=\"30045333\"/>\r\n    <row from=\"30045332\" to=\"30045334\"/>\r\n    <row from=\"30045332\" to=\"30045336\"/>\r\n    <row from=\"30045332\" to=\"30045337\"/>\r\n    <row from=\"30045333\" to=\"30045332\"/>\r\n    <row from=\"30045333\" to=\"30045336\"/>\r\n    <row from=\"30045333\" to=\"30045337\"/>\r\n    <row from=\"30045334\" to=\"30002760\"/>\r\n    <row from=\"30045334\" to=\"30045330\"/>\r\n    <row from=\"30045334\" to=\"30045331\"/>\r\n    <row from=\"30045334\" to=\"30045332\"/>\r\n    <row from=\"30045335\" to=\"30045331\"/>\r\n    <row from=\"30045336\" to=\"30045332\"/>\r\n    <row from=\"30045336\" to=\"30045333\"/>\r\n    <row from=\"30045337\" to=\"30045322\"/>\r\n    <row from=\"30045337\" to=\"30045332\"/>\r\n    <row from=\"30045337\" to=\"30045333\"/>\r\n    <row from=\"30045338\" to=\"30045341\"/>\r\n    <row from=\"30045338\" to=\"30045343\"/>\r\n    <row from=\"30045338\" to=\"30045344\"/>\r\n    <row from=\"30045338\" to=\"30045353\"/>\r\n    <row from=\"30045339\" to=\"30045341\"/>\r\n    <row from=\"30045339\" to=\"30045342\"/>\r\n    <row from=\"30045339\" to=\"30045344\"/>\r\n    <row from=\"30045340\" to=\"30045320\"/>\r\n    <row from=\"30045340\" to=\"30045342\"/>\r\n    <row from=\"30045341\" to=\"30045338\"/>\r\n    <row from=\"30045341\" to=\"30045339\"/>\r\n    <row from=\"30045342\" to=\"30045339\"/>\r\n    <row from=\"30045342\" to=\"30045340\"/>\r\n    <row from=\"30045342\" to=\"30045344\"/>\r\n    <row from=\"30045343\" to=\"30045338\"/>\r\n    <row from=\"30045343\" to=\"30045344\"/>\r\n    <row from=\"30045344\" to=\"30003837\"/>\r\n    <row from=\"30045344\" to=\"30045338\"/>\r\n    <row from=\"30045344\" to=\"30045339\"/>\r\n    <row from=\"30045344\" to=\"30045342\"/>\r\n    <row from=\"30045344\" to=\"30045343\"/>\r\n    <row from=\"30045345\" to=\"30045346\"/>\r\n    <row from=\"30045345\" to=\"30045352\"/>\r\n    <row from=\"30045345\" to=\"30045353\"/>\r\n    <row from=\"30045346\" to=\"30002813\"/>\r\n    <row from=\"30045346\" to=\"30045345\"/>\r\n    <row from=\"30045346\" to=\"30045350\"/>\r\n    <row from=\"30045346\" to=\"30045352\"/>\r\n    <row from=\"30045346\" to=\"30045354\"/>\r\n    <row from=\"30045347\" to=\"30004984\"/>\r\n    <row from=\"30045347\" to=\"30045352\"/>\r\n    <row from=\"30045347\" to=\"30045353\"/>\r\n    <row from=\"30045348\" to=\"30045352\"/>\r\n    <row from=\"30045349\" to=\"30045351\"/>\r\n    <row from=\"30045349\" to=\"30045353\"/>\r\n    <row from=\"30045349\" to=\"30045354\"/>\r\n    <row from=\"30045350\" to=\"30045346\"/>\r\n    <row from=\"30045351\" to=\"30045349\"/>\r\n    <row from=\"30045352\" to=\"30045345\"/>\r\n    <row from=\"30045352\" to=\"30045346\"/>\r\n    <row from=\"30045352\" to=\"30045347\"/>\r\n    <row from=\"30045352\" to=\"30045348\"/>\r\n    <row from=\"30045353\" to=\"30045338\"/>\r\n    <row from=\"30045353\" to=\"30045345\"/>\r\n    <row from=\"30045353\" to=\"30045347\"/>\r\n    <row from=\"30045353\" to=\"30045349\"/>\r\n    <row from=\"30045354\" to=\"30045330\"/>\r\n    <row from=\"30045354\" to=\"30045346\"/>\r\n    <row from=\"30045354\" to=\"30045349\"/>\r\n    <row from=\"30100000\" to=\"30001041\"/>\r\n    <row from=\"30100000\" to=\"30001269\"/>\r\n    <row from=\"30100000\" to=\"30002086\"/>\r\n    <row from=\"30100000\" to=\"30003841\"/>\r\n</rows>\r\n"
  },
  {
    "path": "data/locations.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\r\n<rows>\r\n    <!--Generated from Eve Online Toolkit. ©CCP hf. All rights reserved. Used with permission.-->\r\n    <row c=\"\" ci=\"0\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Yasna Zakh\" ri=\"10001000\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"G-R00031\" ri=\"11000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"K-R00033\" ri=\"11000033\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"\" ci=\"0\" r=\"Global PLEX Market Region\" ri=\"19000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"San Matar\" ci=\"20000001\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Anares\" ci=\"20000002\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Mamouna\" ci=\"20000003\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Kalangin\" ci=\"20000004\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Hevaka\" ci=\"20000005\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Sazdih\" ci=\"20000006\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Ananah\" ci=\"20000007\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Mossas\" ci=\"20000008\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Mekashtad\" ci=\"20000009\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Bedaleya\" ci=\"20000010\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Orshed\" ci=\"20000011\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Oraron\" ci=\"20000012\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Aguh\" ci=\"20000013\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Mal\" ci=\"20000014\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Subi\" ci=\"20000015\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Joas\" ci=\"20000016\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Mivora\" ci=\"20000028\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"U29-0S\" ci=\"20000030\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"BUG6-X\" ci=\"20000031\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"OSJ7-I\" ci=\"20000032\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"DMXN-3\" ci=\"20000033\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"I89-EP\" ci=\"20000034\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Z-DO53\" ci=\"20000035\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"YUT3-U\" ci=\"20000036\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"5YHF-H\" ci=\"20000037\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"UK-MI6\" ci=\"20000038\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"YDS0-Y\" ci=\"20000039\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A3-T8B\" ci=\"20000040\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"DILJ-7\" ci=\"20000041\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"0-8MWQ\" ci=\"20000042\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"F-V9QW\" ci=\"20000043\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-8CSQ\" ci=\"20000044\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"9KX-M0\" ci=\"20000045\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"88G-M4\" ci=\"20000046\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"L5-H1O\" ci=\"20000047\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"J-4QD7\" ci=\"20000048\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"LC-AQD\" ci=\"20000049\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"7PUP-K\" ci=\"20000050\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"V8UW-M\" ci=\"20000051\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"T7B-VB\" ci=\"20000052\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-PHYN\" ci=\"20000053\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"9RW5-Z\" ci=\"20000054\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VL-OGL\" ci=\"20000055\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VW-JMB\" ci=\"20000056\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"HN5-RL\" ci=\"20000057\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"RO-AZT\" ci=\"20000058\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"KCR-1E\" ci=\"20000059\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"FL-TD4\" ci=\"20000060\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-HLOG\" ci=\"20000061\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"0VFS-G\" ci=\"20000062\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"GJH-1C\" ci=\"20000063\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"RFQ-8Y\" ci=\"20000064\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"MZ-PA2\" ci=\"20000065\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"5F8-PZ\" ci=\"20000066\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"PR-ACX\" ci=\"20000067\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"5P4-QA\" ci=\"20000068\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"1RG-GU\" ci=\"20000069\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ZPI-2E\" ci=\"20000070\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-95MV\" ci=\"20000071\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"3R-BJL\" ci=\"20000072\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"T875-C\" ci=\"20000073\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"4SRW-B\" ci=\"20000074\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"HOV-VI\" ci=\"20000075\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"NZU8-G\" ci=\"20000076\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"0FC-ZX\" ci=\"20000077\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"AC-RON\" ci=\"20000078\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"RF9-ZU\" ci=\"20000079\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"DJ-XCW\" ci=\"20000080\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"3GK-WS\" ci=\"20000081\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"5ZR-29\" ci=\"20000082\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"J-9M7D\" ci=\"20000083\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"R-M719\" ci=\"20000084\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"5Y1E-3\" ci=\"20000085\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"760-9C\" ci=\"20000086\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"4-QV2L\" ci=\"20000087\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"GU-JZ1\" ci=\"20000088\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"BVA-YH\" ci=\"20000089\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VS-8P0\" ci=\"20000090\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"5HN-S5\" ci=\"20000091\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Y-JSM8\" ci=\"20000092\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VSC-W9\" ci=\"20000093\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"FQ-COP\" ci=\"20000094\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"MRC-29\" ci=\"20000095\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"51ZT-6\" ci=\"20000096\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"4YFT-F\" ci=\"20000097\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"P-I9PF\" ci=\"20000098\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ENP-SH\" ci=\"20000099\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Y-M7ML\" ci=\"20000100\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"QI1M-Q\" ci=\"20000101\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"7VJ-7M\" ci=\"20000102\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"02QH-A\" ci=\"20000103\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"WQZ8-4\" ci=\"20000104\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"DITJ-X\" ci=\"20000105\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"YCM-AI\" ci=\"20000106\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"CN5-F2\" ci=\"20000107\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"IV-LWJ\" ci=\"20000108\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"U-EUG7\" ci=\"20000109\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-95ID\" ci=\"20000110\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"8-4EFQ\" ci=\"20000111\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Z-ONUI\" ci=\"20000112\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"QA-P7J\" ci=\"20000113\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"UR-HG4\" ci=\"20000114\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"0YMH-Q\" ci=\"20000115\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"0EA3-8\" ci=\"20000116\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"0-YMZM\" ci=\"20000117\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"N5V-Y0\" ci=\"20000118\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"N-LY4R\" ci=\"20000119\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"V2S-RH\" ci=\"20000120\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"FD-7Y4\" ci=\"20000121\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"TL-FDN\" ci=\"20000122\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"R-CL2W\" ci=\"20000123\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"1P-VL2\" ci=\"20000124\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"X-VN63\" ci=\"20000125\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"LLAP-1\" ci=\"20000126\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"52-JKU\" ci=\"20000127\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E3-NLE\" ci=\"20000128\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"GORV-P\" ci=\"20000129\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"03C-SU\" ci=\"20000130\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"W-XBGF\" ci=\"20000131\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"730-KH\" ci=\"20000132\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"U-3HAO\" ci=\"20000133\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"K-DLD2\" ci=\"20000134\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"V-LQBF\" ci=\"20000135\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"BB8E-G\" ci=\"20000136\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"IYOO-M\" ci=\"20000137\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Q-PVMK\" ci=\"20000138\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"AP-S8F\" ci=\"20000139\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"T-W4L3\" ci=\"20000140\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"V-4QJC\" ci=\"20000141\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"DYK-G8\" ci=\"20000142\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"L-TEVM\" ci=\"20000143\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"HRJG-D\" ci=\"20000144\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"W-3Y6D\" ci=\"20000145\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"I3-2J0\" ci=\"20000146\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Tranquility\" ci=\"20000147\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Paradise\" ci=\"20000148\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Elysium\" ci=\"20000149\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Sound\" ci=\"20000150\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Rapture\" ci=\"20000151\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Hale\" ci=\"20000152\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Heaven\" ci=\"20000153\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"4R-HUN\" ci=\"20000154\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"XI0-X2\" ci=\"20000155\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"1M4-FN\" ci=\"20000156\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"UL8-RD\" ci=\"20000157\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"3TS-12\" ci=\"20000158\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E6EO-H\" ci=\"20000159\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"PFL-QY\" ci=\"20000160\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"7UNX-J\" ci=\"20000161\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-YKXH\" ci=\"20000162\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"G-HISF\" ci=\"20000163\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"GDBW-2\" ci=\"20000164\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"WS5L-X\" ci=\"20000165\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"MW49-U\" ci=\"20000166\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"PX0-P4\" ci=\"20000167\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"2747-4\" ci=\"20000168\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"UX3-N2\" ci=\"20000169\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"N-OGI1\" ci=\"20000170\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"EM-L3K\" ci=\"20000171\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ZW-BY5\" ci=\"20000172\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"JZV-O6\" ci=\"20000173\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"XR9-LP\" ci=\"20000174\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"9HXQ-G\" ci=\"20000175\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"FDR-EQ\" ci=\"20000176\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"T-1WDH\" ci=\"20000177\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-JI5E\" ci=\"20000178\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"T-HHHT\" ci=\"20000179\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"NNLX-K\" ci=\"20000180\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"6JCS-4\" ci=\"20000181\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"U-JTBT\" ci=\"20000182\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"BRP2-K\" ci=\"20000183\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"1G-8KY\" ci=\"20000184\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ST-0EZ\" ci=\"20000185\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"48R-PS\" ci=\"20000186\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"N32Z-Z\" ci=\"20000187\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"UTZ-7B\" ci=\"20000188\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-I1JW\" ci=\"20000189\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"W9MQ-1\" ci=\"20000190\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"XHYS-O\" ci=\"20000191\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Y8-HHZ\" ci=\"20000192\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Y8HB-U\" ci=\"20000193\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"XMNF-7\" ci=\"20000194\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"L-1T22\" ci=\"20000195\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"0HD-6C\" ci=\"20000196\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"0KTC-R\" ci=\"20000197\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Haurala\" ci=\"20000200\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Kainokai\" ci=\"20000207\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Malariya\" ci=\"20000210\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"1-Z95W\" ci=\"20000213\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"OG-DJD\" ci=\"20000214\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"05-1B6\" ci=\"20000215\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"WSC-AL\" ci=\"20000216\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"BS8-ZQ\" ci=\"20000217\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"4I-WP1\" ci=\"20000219\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"NSM-6F\" ci=\"20000220\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"F-8DMX\" ci=\"20000221\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-YMGR\" ci=\"20000222\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"2RX9-6\" ci=\"20000223\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"3A-CND\" ci=\"20000224\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Z6T6-B\" ci=\"20000225\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"OC-TTA\" ci=\"20000226\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"J0-59Y\" ci=\"20000227\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"3D-ROC\" ci=\"20000228\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"4-0VL9\" ci=\"20000229\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-UBWI\" ci=\"20000230\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E1L-UY\" ci=\"20000231\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"P-FL48\" ci=\"20000232\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"OWT3-6\" ci=\"20000233\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E65-47\" ci=\"20000234\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"MY-HQD\" ci=\"20000235\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"O-BSIB\" ci=\"20000236\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"W1-F3U\" ci=\"20000237\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"826-A5\" ci=\"20000238\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"6I-9Y2\" ci=\"20000239\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B9J-NT\" ci=\"20000240\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"UN2H-D\" ci=\"20000241\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"F-0CTG\" ci=\"20000242\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Sanair\" ci=\"20000243\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Somi\" ci=\"20000244\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Mise\" ci=\"20000245\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Emsek\" ci=\"20000246\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Mimishia\" ci=\"20000248\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Sukanan\" ci=\"20000249\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Nasorin\" ci=\"20000252\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Tsemshatel\" ci=\"20000253\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Anidaza\" ci=\"20000254\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Peges\" ci=\"20000257\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-D245\" ci=\"20000258\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"X5O9-E\" ci=\"20000259\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"J33-JR\" ci=\"20000260\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"AGI1-F\" ci=\"20000261\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"U-IOR1\" ci=\"20000262\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"NPL-WH\" ci=\"20000263\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"IM-8S5\" ci=\"20000264\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"7-ZDOK\" ci=\"20000265\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"6GU-AT\" ci=\"20000266\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"2FYX-H\" ci=\"20000267\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"NOB-HD\" ci=\"20000268\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C9XB-L\" ci=\"20000269\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"KPU3-3\" ci=\"20000270\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"5VN-B7\" ci=\"20000271\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"41JS-R\" ci=\"20000272\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"H26A-B\" ci=\"20000273\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Y-2D6Q\" ci=\"20000274\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"U7L-MQ\" ci=\"20000275\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"XJ-0RG\" ci=\"20000276\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"H-QXM7\" ci=\"20000277\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"T-L301\" ci=\"20000278\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"QO-17V\" ci=\"20000279\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VH1-NS\" ci=\"20000280\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Q4IG-S\" ci=\"20000281\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"JG-ZLG\" ci=\"20000282\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"V-H3V0\" ci=\"20000283\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"W-ULNA\" ci=\"20000284\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"SB3-IH\" ci=\"20000285\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Z01V-Z\" ci=\"20000286\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"WF-OP4\" ci=\"20000287\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"R-IZDC\" ci=\"20000288\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"MDM8-J\" ci=\"20000289\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"U8-CWA\" ci=\"20000290\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"38G6-L\" ci=\"20000291\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"YS-GOP\" ci=\"20000292\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"WMP-OF\" ci=\"20000293\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"LY-FY6\" ci=\"20000294\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"U-7RBK\" ci=\"20000295\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"G8-D09\" ci=\"20000296\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"304Z-R\" ci=\"20000297\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"K-QUVW\" ci=\"20000298\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"LN-L8L\" ci=\"20000299\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"S4GH-I\" ci=\"20000300\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"0A-73B\" ci=\"20000301\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Tiat\" ci=\"20000303\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Ani\" ci=\"20000305\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Q-IPAA\" ci=\"20000310\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"K-ZKBM\" ci=\"20000311\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"MY-QQI\" ci=\"20000312\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"RTCU-5\" ci=\"20000313\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C73-U5\" ci=\"20000314\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"K-N3MD\" ci=\"20000315\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"4MY-AB\" ci=\"20000316\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Y46-EN\" ci=\"20000317\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"EL8Z-M\" ci=\"20000318\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"YENX-U\" ci=\"20000319\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"WTE-CK\" ci=\"20000320\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"IJE6-J\" ci=\"20000321\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Yestadan\" ci=\"20000324\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Mazake\" ci=\"20000325\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Kekah\" ci=\"20000326\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Armi\" ci=\"20000328\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Mulata\" ci=\"20000329\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Nashar\" ci=\"20000330\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Kehina\" ci=\"20000331\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Avib\" ci=\"20000332\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Liela\" ci=\"20000333\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"4M6-GJ\" ci=\"20000335\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-GU3R\" ci=\"20000336\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"N-APJ8\" ci=\"20000337\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"PGPJ-8\" ci=\"20000338\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"8G-JN6\" ci=\"20000339\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"M9-AN3\" ci=\"20000340\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"6TT8-Z\" ci=\"20000341\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"RDD-E6\" ci=\"20000342\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ICH-B6\" ci=\"20000343\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"SLYP-5\" ci=\"20000344\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"8AO-5V\" ci=\"20000345\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"J-78ZG\" ci=\"20000346\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"H7Q-DG\" ci=\"20000347\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"1VN-XC\" ci=\"20000348\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"PG-RWX\" ci=\"20000349\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Tartatven\" ci=\"20000351\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Besateoden\" ci=\"20000352\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Almur\" ci=\"20000353\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Eoldulf\" ci=\"20000354\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"N-K4Q0\" ci=\"20000356\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"UBPU-9\" ci=\"20000357\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"IPS-QB\" ci=\"20000358\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"8K-CHA\" ci=\"20000359\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ZYL-FT\" ci=\"20000360\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"NK-AOZ\" ci=\"20000361\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"V1G-63\" ci=\"20000362\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"F-ZNNG\" ci=\"20000363\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"KR-XF4\" ci=\"20000364\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"RJ-1R7\" ci=\"20000365\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"74IL-O\" ci=\"20000366\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Osta\" ci=\"20000369\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Odengsolf\" ci=\"20000370\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Wiedadur\" ci=\"20000371\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Akimamur\" ci=\"20000374\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Evannater\" ci=\"20000375\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Urtfer\" ci=\"20000376\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Benurad\" ci=\"20000378\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"5J-SSP\" ci=\"20000379\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ZYR-NF\" ci=\"20000380\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"1A-WYQ\" ci=\"20000381\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"05M-I1\" ci=\"20000382\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"EK-NQ2\" ci=\"20000383\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"O6W-QE\" ci=\"20000384\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"QZJ-FL\" ci=\"20000385\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Disier\" ci=\"20000386\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Gallente Border Zone\" ci=\"20000387\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Spaen\" ci=\"20000388\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Firille\" ci=\"20000390\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Lolbrerie\" ci=\"20000393\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Nexus\" ci=\"20000397\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Aeman\" ci=\"20000398\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Nadire\" ci=\"20000399\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Ieyama\" ci=\"20000404\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Isoma\" ci=\"20000412\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"6-CBBM\" ci=\"20000414\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"78-6RI\" ci=\"20000415\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"2O-VY7\" ci=\"20000416\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"3NA-Z1\" ci=\"20000417\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"S4S-SD\" ci=\"20000418\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"U-HSM3\" ci=\"20000419\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"8UD2-J\" ci=\"20000420\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"XPG-HE\" ci=\"20000421\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"P-B2NE\" ci=\"20000422\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"2Q-8WA\" ci=\"20000423\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"29V-1R\" ci=\"20000424\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Z-D6K5\" ci=\"20000425\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VW7-YN\" ci=\"20000426\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"UTQ-BO\" ci=\"20000427\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"N-U2LX\" ci=\"20000428\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"S-B1E4\" ci=\"20000429\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A21H-Z\" ci=\"20000430\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-AWFI\" ci=\"20000432\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Semou\" ci=\"20000433\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Ryra\" ci=\"20000434\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Jayai\" ci=\"20000436\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Kabo\" ci=\"20000437\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Abthi\" ci=\"20000439\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Enka\" ci=\"20000440\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Chasnaye\" ci=\"20000442\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Sasen\" ci=\"20000448\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Ichida\" ci=\"20000450\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Tandoiras\" ci=\"20000451\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"KUSW-P\" ci=\"20000453\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"8T-OLH\" ci=\"20000454\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Q-2BI6\" ci=\"20000455\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"JSZ-X6\" ci=\"20000456\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"R2-BT6\" ci=\"20000457\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"3WN-1T\" ci=\"20000458\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"7ZRW-G\" ci=\"20000459\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-ILCH\" ci=\"20000460\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"AJG-MV\" ci=\"20000461\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"O-PQU0\" ci=\"20000462\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"9D1V-O\" ci=\"20000463\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"FY6-NK\" ci=\"20000464\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"WE-WLQ\" ci=\"20000465\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"T-4ACL\" ci=\"20000466\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"0PS-L5\" ci=\"20000467\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"CZ-06R\" ci=\"20000468\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"F-W6B4\" ci=\"20000469\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"3RU-10\" ci=\"20000470\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"DOCS-O\" ci=\"20000471\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"04-LOF\" ci=\"20000472\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"O9X-CV\" ci=\"20000473\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D4J-PP\" ci=\"20000474\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D61-WV\" ci=\"20000475\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"S-Q02B\" ci=\"20000476\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"4ZXC-8\" ci=\"20000477\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Z-6NQ6\" ci=\"20000478\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"2-M6DE\" ci=\"20000479\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Y4Y7-Q\" ci=\"20000480\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"DS-M4Q\" ci=\"20000481\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"TA-A7V\" ci=\"20000482\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"MK7-AO\" ci=\"20000483\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"YFN-UN\" ci=\"20000484\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"49A-BZ\" ci=\"20000485\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"GN-ACS\" ci=\"20000486\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"59H-0G\" ci=\"20000487\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"QS-FVH\" ci=\"20000488\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"6-V49K\" ci=\"20000489\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"SKX-PL\" ci=\"20000490\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"JQV5-9\" ci=\"20000491\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Lorundio\" ci=\"20000493\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Aptetter\" ci=\"20000498\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Ergruk\" ci=\"20000499\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Frar\" ci=\"20000501\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Inkelm\" ci=\"20000502\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Panorad\" ci=\"20000503\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Argeir\" ci=\"20000504\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Rollera\" ci=\"20000505\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Kashag\" ci=\"20000508\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Zemont\" ci=\"20000510\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Yekti\" ci=\"20000511\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Chardu\" ci=\"20000513\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Maddam\" ci=\"20000514\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Mofa\" ci=\"20000516\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Maseend\" ci=\"20000517\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Nakid\" ci=\"20000518\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Jakemhih\" ci=\"20000519\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Braille\" ci=\"20000520\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Goins\" ci=\"20000523\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Elerelle\" ci=\"20000524\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Mobrault\" ci=\"20000525\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"M-J57M\" ci=\"20000526\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"09-4XW\" ci=\"20000527\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"9P57-V\" ci=\"20000528\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"TJ10-O\" ci=\"20000529\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"X-FHU3\" ci=\"20000530\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"GFE-SS\" ci=\"20000531\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"2-ZRM0\" ci=\"20000532\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"O-EOI9\" ci=\"20000533\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"1D-65L\" ci=\"20000534\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-72A3\" ci=\"20000535\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"XFLN-F\" ci=\"20000536\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"UWRZ-2\" ci=\"20000537\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"7X-X1Y\" ci=\"20000538\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VNX-P0\" ci=\"20000539\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"G2E-RJ\" ci=\"20000540\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"4BZ-R3\" ci=\"20000541\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"AZBG-H\" ci=\"20000542\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"I9B-8X\" ci=\"20000543\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"XV7L-S\" ci=\"20000544\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ZQ2-CF\" ci=\"20000545\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"HS7W-T\" ci=\"20000546\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"5-88B9\" ci=\"20000547\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"UD-ZJ3\" ci=\"20000548\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"P6N8-J\" ci=\"20000549\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"04-H4M\" ci=\"20000550\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"H-KW4A\" ci=\"20000551\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Q-6LG1\" ci=\"20000552\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Unour\" ci=\"20000557\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Mallugier\" ci=\"20000562\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Serthoulde\" ci=\"20000563\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Nohshayess\" ci=\"20000564\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Finaka\" ci=\"20000565\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Amdimmah\" ci=\"20000566\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Youledian\" ci=\"20000567\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Sib\" ci=\"20000568\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Seevadin\" ci=\"20000569\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Fekhoya\" ci=\"20000570\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Arniri\" ci=\"20000571\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Akar\" ci=\"20000572\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Homroon\" ci=\"20000573\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Budar\" ci=\"20000574\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Alpakian\" ci=\"20000575\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"H-6HGD\" ci=\"20000576\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"PUB-0R\" ci=\"20000577\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"YB7B-8\" ci=\"20000578\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-Z7C9\" ci=\"20000579\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"9NP-KR\" ci=\"20000580\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"8BO-IH\" ci=\"20000581\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"K-JO26\" ci=\"20000582\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"F-RA63\" ci=\"20000583\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"8ET-D1\" ci=\"20000584\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"MPJW-6\" ci=\"20000585\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"3B-IWE\" ci=\"20000586\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"LI-BA0\" ci=\"20000587\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"4QZ-2M\" ci=\"20000588\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"XLL-Z7\" ci=\"20000589\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Yrton\" ci=\"20000590\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Balenne\" ci=\"20000591\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Tinnimerci\" ci=\"20000592\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Prelle\" ci=\"20000593\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Assilot\" ci=\"20000594\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Miennue\" ci=\"20000595\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Kakol\" ci=\"20000597\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Heti\" ci=\"20000600\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Parrosa\" ci=\"20000601\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Favo\" ci=\"20000602\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Araz\" ci=\"20000603\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Ahrnot\" ci=\"20000604\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Pezarba\" ci=\"20000605\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Naloran\" ci=\"20000606\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Moghiz\" ci=\"20000607\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"QJ2-0M\" ci=\"20000609\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"HNZF-Z\" ci=\"20000610\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"SI1-CF\" ci=\"20000611\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"G3-MU3\" ci=\"20000612\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"BB-48X\" ci=\"20000613\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"I-WRVM\" ci=\"20000614\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"XHL-TZ\" ci=\"20000615\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"DA0V-R\" ci=\"20000616\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"5ZAB-N\" ci=\"20000617\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"N4TD-6\" ci=\"20000618\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Anama\" ci=\"20000619\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Afinoo\" ci=\"20000620\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Mareerieh\" ci=\"20000621\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Tid\" ci=\"20000624\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Helab\" ci=\"20000625\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Fabai\" ci=\"20000628\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Selonat\" ci=\"20000629\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"JE7-F2\" ci=\"20000630\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"8-IL7S\" ci=\"20000631\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"304-QS\" ci=\"20000632\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"0C-PZ4\" ci=\"20000633\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"GP-GIU\" ci=\"20000634\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-312G\" ci=\"20000635\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"BZ-10K\" ci=\"20000636\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-ULS4\" ci=\"20000637\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Q5KW-Z\" ci=\"20000638\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"BI-NFW\" ci=\"20000639\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"XPBM-F\" ci=\"20000640\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"KWCZ-A\" ci=\"20000641\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"LIB-F9\" ci=\"20000642\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"T-RQ7S\" ci=\"20000643\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"1ANT-J\" ci=\"20000644\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"AV-SCL\" ci=\"20000645\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"I-3ODK\" ci=\"20000646\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C45-9Y\" ci=\"20000647\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"L-H07K\" ci=\"20000648\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"JQA8-6\" ci=\"20000649\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"3-U491\" ci=\"20000650\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"OFQ-HG\" ci=\"20000651\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"YZKE-Q\" ci=\"20000652\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"RHG-4O\" ci=\"20000653\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"42-WDG\" ci=\"20000654\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"3-PC31\" ci=\"20000655\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Crown\" ci=\"20000656\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Heart\" ci=\"20000657\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Belt\" ci=\"20000658\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Wield\" ci=\"20000659\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Sword\" ci=\"20000660\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Regalia\" ci=\"20000661\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Scepter\" ci=\"20000662\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Velvet\" ci=\"20000663\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Sole\" ci=\"20000664\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Pegasus\" ci=\"20000665\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Wyvern\" ci=\"20000666\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Manticore\" ci=\"20000667\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Sphinx\" ci=\"20000668\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Centaur\" ci=\"20000669\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Unicorn\" ci=\"20000670\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Satyr\" ci=\"20000671\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Kraken\" ci=\"20000672\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Chimera\" ci=\"20000673\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Phoenix\" ci=\"20000674\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Taurus\" ci=\"20000675\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Griffin\" ci=\"20000676\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Hydra\" ci=\"20000677\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Minotaur\" ci=\"20000678\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Skaven\" ci=\"20000679\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Mermaid\" ci=\"20000680\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Basilisk\" ci=\"20000681\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"17K-QM\" ci=\"20000682\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"TCC-ZV\" ci=\"20000683\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"I-CCEI\" ci=\"20000684\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"IZ-FBT\" ci=\"20000685\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"GEP-XF\" ci=\"20000686\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D9DM-O\" ci=\"20000687\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"XPJ1-6\" ci=\"20000688\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B4H-9W\" ci=\"20000689\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"6-UCYU\" ci=\"20000690\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"O5K-Y6\" ci=\"20000691\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"SPNZ-Z\" ci=\"20000692\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"YX-LYK\" ci=\"20000693\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D5-SOW\" ci=\"20000694\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"W-4U1E\" ci=\"20000695\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"O-EIMK\" ci=\"20000696\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"SG-CTQ\" ci=\"20000697\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"NJU-QV\" ci=\"20000698\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"LSC-4P\" ci=\"20000699\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"1-A81R\" ci=\"20000700\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"F-I56R\" ci=\"20000701\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"OK-FEM\" ci=\"20000702\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"QP6B-I\" ci=\"20000703\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"AU-S0B\" ci=\"20000704\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"CL-QB2\" ci=\"20000705\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-IFSA\" ci=\"20000706\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ZQ7-QS\" ci=\"20000707\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"G3IP-E\" ci=\"20000708\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"50-5UD\" ci=\"20000709\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"F5-O9O\" ci=\"20000710\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"EIX-HK\" ci=\"20000711\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"BZZ-1U\" ci=\"20000712\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"6I-3VX\" ci=\"20000713\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"W-3E44\" ci=\"20000714\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"O5QG-M\" ci=\"20000715\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Y-LRWI\" ci=\"20000716\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"5Z0Y-S\" ci=\"20000717\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"8MJO-4\" ci=\"20000718\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"U7-GIV\" ci=\"20000719\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"RL36-K\" ci=\"20000720\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"XOV7-5\" ci=\"20000721\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"N-39FI\" ci=\"20000722\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"J8-G8K\" ci=\"20000723\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"NOK-FZ\" ci=\"20000724\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"6KFH-X\" ci=\"20000725\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"OY3-DM\" ci=\"20000726\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Jeon\" ci=\"20000729\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Balrille\" ci=\"20000730\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Peccanouette\" ci=\"20000732\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Eustron\" ci=\"20000735\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Finena\" ci=\"20000740\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Ravin\" ci=\"20000741\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Orus\" ci=\"20000742\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Comadu\" ci=\"20000743\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"NT1-5Q\" ci=\"20000745\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"O5PO-O\" ci=\"20000746\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-MQ0Y\" ci=\"20000747\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"9BGY-6\" ci=\"20000748\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"X7-FTR\" ci=\"20000749\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"4LEZ-6\" ci=\"20000750\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VT-LHB\" ci=\"20000751\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"BXT7-V\" ci=\"20000752\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"L7-RDZ\" ci=\"20000753\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"TY0-Q2\" ci=\"20000754\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"WXB-RY\" ci=\"20000755\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Q0-4FU\" ci=\"20000756\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"LWMW-6\" ci=\"20000757\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"S0X-O4\" ci=\"20000758\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"TPB-KG\" ci=\"20000759\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Nazdirer\" ci=\"20000760\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Sanctum\" ci=\"20000761\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Ashela\" ci=\"20000762\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Ekrin\" ci=\"20000763\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Mih\" ci=\"20000764\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Meli\" ci=\"20000766\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Reya\" ci=\"20000767\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Charak\" ci=\"20000768\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Makh\" ci=\"20000769\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Monalaz\" ci=\"20000770\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Aven\" ci=\"20000771\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Kihkounad\" ci=\"20000772\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"EVE\" ci=\"20000773\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Fabas\" ci=\"20000774\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Woenckee\" ci=\"20000775\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Aideron\" ci=\"20000780\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Urpiken\" ci=\"20000781\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Okakuola\" ci=\"20000782\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Inolari\" ci=\"20000783\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Aokinen\" ci=\"20000784\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Ishaga\" ci=\"20000785\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Kurala\" ci=\"20000786\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Krai Svarog\" ci=\"20000788\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Duzna Kah\" ci=\"20010000\" r=\"Yasna Zakh\" ri=\"10001000\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00001\" ci=\"21000001\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00002\" ci=\"21000002\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00003\" ci=\"21000003\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00004\" ci=\"21000004\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00005\" ci=\"21000005\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00006\" ci=\"21000006\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00007\" ci=\"21000007\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00008\" ci=\"21000008\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00009\" ci=\"21000009\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00010\" ci=\"21000010\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00011\" ci=\"21000011\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00012\" ci=\"21000012\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00013\" ci=\"21000013\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00014\" ci=\"21000014\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00015\" ci=\"21000015\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00016\" ci=\"21000016\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00017\" ci=\"21000017\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00018\" ci=\"21000018\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00019\" ci=\"21000019\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00020\" ci=\"21000020\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00021\" ci=\"21000021\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00022\" ci=\"21000022\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00023\" ci=\"21000023\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00024\" ci=\"21000024\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00025\" ci=\"21000025\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00026\" ci=\"21000026\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00027\" ci=\"21000027\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00028\" ci=\"21000028\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00029\" ci=\"21000029\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00030\" ci=\"21000030\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00031\" ci=\"21000031\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00032\" ci=\"21000032\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00033\" ci=\"21000033\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00034\" ci=\"21000034\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00035\" ci=\"21000035\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00036\" ci=\"21000036\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00037\" ci=\"21000037\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00038\" ci=\"21000038\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00039\" ci=\"21000039\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00040\" ci=\"21000040\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00041\" ci=\"21000041\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00042\" ci=\"21000042\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00043\" ci=\"21000043\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00044\" ci=\"21000044\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00045\" ci=\"21000045\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00046\" ci=\"21000046\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00047\" ci=\"21000047\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00048\" ci=\"21000048\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00049\" ci=\"21000049\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00050\" ci=\"21000050\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00051\" ci=\"21000051\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00052\" ci=\"21000052\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00053\" ci=\"21000053\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00054\" ci=\"21000054\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00055\" ci=\"21000055\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00056\" ci=\"21000056\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00057\" ci=\"21000057\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00058\" ci=\"21000058\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00059\" ci=\"21000059\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00060\" ci=\"21000060\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00061\" ci=\"21000061\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00062\" ci=\"21000062\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00063\" ci=\"21000063\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00064\" ci=\"21000064\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00065\" ci=\"21000065\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00066\" ci=\"21000066\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00067\" ci=\"21000067\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00068\" ci=\"21000068\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00069\" ci=\"21000069\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00070\" ci=\"21000070\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00071\" ci=\"21000071\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00072\" ci=\"21000072\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00073\" ci=\"21000073\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00074\" ci=\"21000074\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00075\" ci=\"21000075\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00076\" ci=\"21000076\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00077\" ci=\"21000077\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00078\" ci=\"21000078\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00079\" ci=\"21000079\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00080\" ci=\"21000080\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00081\" ci=\"21000081\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00082\" ci=\"21000082\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00083\" ci=\"21000083\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00084\" ci=\"21000084\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00085\" ci=\"21000085\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00086\" ci=\"21000086\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00087\" ci=\"21000087\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00088\" ci=\"21000088\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00089\" ci=\"21000089\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00090\" ci=\"21000090\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00091\" ci=\"21000091\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00092\" ci=\"21000092\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00093\" ci=\"21000093\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00094\" ci=\"21000094\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00095\" ci=\"21000095\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00096\" ci=\"21000096\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00097\" ci=\"21000097\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00098\" ci=\"21000098\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00099\" ci=\"21000099\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00100\" ci=\"21000100\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00101\" ci=\"21000101\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00102\" ci=\"21000102\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00103\" ci=\"21000103\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00104\" ci=\"21000104\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00105\" ci=\"21000105\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00106\" ci=\"21000106\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00107\" ci=\"21000107\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00108\" ci=\"21000108\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00109\" ci=\"21000109\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00110\" ci=\"21000110\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00111\" ci=\"21000111\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00112\" ci=\"21000112\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00113\" ci=\"21000113\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00114\" ci=\"21000114\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00115\" ci=\"21000115\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00116\" ci=\"21000116\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00117\" ci=\"21000117\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00118\" ci=\"21000118\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00119\" ci=\"21000119\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00120\" ci=\"21000120\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00121\" ci=\"21000121\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00122\" ci=\"21000122\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00123\" ci=\"21000123\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00124\" ci=\"21000124\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00125\" ci=\"21000125\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00126\" ci=\"21000126\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00127\" ci=\"21000127\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00128\" ci=\"21000128\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00129\" ci=\"21000129\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00130\" ci=\"21000130\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00131\" ci=\"21000131\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00132\" ci=\"21000132\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00133\" ci=\"21000133\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00134\" ci=\"21000134\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00135\" ci=\"21000135\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00136\" ci=\"21000136\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00137\" ci=\"21000137\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00138\" ci=\"21000138\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00139\" ci=\"21000139\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00140\" ci=\"21000140\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00141\" ci=\"21000141\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00142\" ci=\"21000142\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00143\" ci=\"21000143\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00144\" ci=\"21000144\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00145\" ci=\"21000145\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00146\" ci=\"21000146\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00147\" ci=\"21000147\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00148\" ci=\"21000148\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00149\" ci=\"21000149\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00150\" ci=\"21000150\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00151\" ci=\"21000151\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00152\" ci=\"21000152\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00153\" ci=\"21000153\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00154\" ci=\"21000154\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00155\" ci=\"21000155\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00156\" ci=\"21000156\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00157\" ci=\"21000157\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00158\" ci=\"21000158\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00159\" ci=\"21000159\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00160\" ci=\"21000160\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00161\" ci=\"21000161\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00162\" ci=\"21000162\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00163\" ci=\"21000163\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00164\" ci=\"21000164\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00165\" ci=\"21000165\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00166\" ci=\"21000166\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00167\" ci=\"21000167\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00168\" ci=\"21000168\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00169\" ci=\"21000169\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00170\" ci=\"21000170\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00171\" ci=\"21000171\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00172\" ci=\"21000172\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00173\" ci=\"21000173\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00174\" ci=\"21000174\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00175\" ci=\"21000175\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00176\" ci=\"21000176\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00177\" ci=\"21000177\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00178\" ci=\"21000178\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00179\" ci=\"21000179\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00180\" ci=\"21000180\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00181\" ci=\"21000181\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00182\" ci=\"21000182\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00183\" ci=\"21000183\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00184\" ci=\"21000184\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00185\" ci=\"21000185\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00186\" ci=\"21000186\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00187\" ci=\"21000187\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00188\" ci=\"21000188\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00189\" ci=\"21000189\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00190\" ci=\"21000190\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00191\" ci=\"21000191\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00192\" ci=\"21000192\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00193\" ci=\"21000193\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00194\" ci=\"21000194\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00195\" ci=\"21000195\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00196\" ci=\"21000196\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00197\" ci=\"21000197\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00198\" ci=\"21000198\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00199\" ci=\"21000199\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00200\" ci=\"21000200\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00201\" ci=\"21000201\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00202\" ci=\"21000202\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00203\" ci=\"21000203\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00204\" ci=\"21000204\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00205\" ci=\"21000205\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00206\" ci=\"21000206\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00207\" ci=\"21000207\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00208\" ci=\"21000208\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00209\" ci=\"21000209\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00210\" ci=\"21000210\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00211\" ci=\"21000211\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00212\" ci=\"21000212\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00213\" ci=\"21000213\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00214\" ci=\"21000214\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00215\" ci=\"21000215\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00216\" ci=\"21000216\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00217\" ci=\"21000217\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00218\" ci=\"21000218\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00219\" ci=\"21000219\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00220\" ci=\"21000220\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00221\" ci=\"21000221\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00222\" ci=\"21000222\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00223\" ci=\"21000223\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00224\" ci=\"21000224\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00225\" ci=\"21000225\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00226\" ci=\"21000226\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00227\" ci=\"21000227\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00228\" ci=\"21000228\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00229\" ci=\"21000229\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00230\" ci=\"21000230\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00231\" ci=\"21000231\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00232\" ci=\"21000232\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00233\" ci=\"21000233\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00234\" ci=\"21000234\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00235\" ci=\"21000235\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00236\" ci=\"21000236\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00237\" ci=\"21000237\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00238\" ci=\"21000238\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00239\" ci=\"21000239\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00240\" ci=\"21000240\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00241\" ci=\"21000241\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00242\" ci=\"21000242\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00243\" ci=\"21000243\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00244\" ci=\"21000244\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00245\" ci=\"21000245\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00246\" ci=\"21000246\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00247\" ci=\"21000247\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00248\" ci=\"21000248\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00249\" ci=\"21000249\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00250\" ci=\"21000250\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00251\" ci=\"21000251\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00252\" ci=\"21000252\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00253\" ci=\"21000253\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00254\" ci=\"21000254\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00255\" ci=\"21000255\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00256\" ci=\"21000256\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00257\" ci=\"21000257\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00258\" ci=\"21000258\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00259\" ci=\"21000259\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00260\" ci=\"21000260\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00261\" ci=\"21000261\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00262\" ci=\"21000262\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00263\" ci=\"21000263\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00264\" ci=\"21000264\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00265\" ci=\"21000265\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00266\" ci=\"21000266\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00267\" ci=\"21000267\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00268\" ci=\"21000268\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00269\" ci=\"21000269\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00270\" ci=\"21000270\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00271\" ci=\"21000271\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00272\" ci=\"21000272\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00273\" ci=\"21000273\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00274\" ci=\"21000274\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00275\" ci=\"21000275\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00276\" ci=\"21000276\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00277\" ci=\"21000277\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00278\" ci=\"21000278\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00279\" ci=\"21000279\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00280\" ci=\"21000280\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00281\" ci=\"21000281\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00282\" ci=\"21000282\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00283\" ci=\"21000283\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00284\" ci=\"21000284\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00285\" ci=\"21000285\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00286\" ci=\"21000286\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00287\" ci=\"21000287\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00288\" ci=\"21000288\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00289\" ci=\"21000289\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00290\" ci=\"21000290\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00291\" ci=\"21000291\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00292\" ci=\"21000292\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00293\" ci=\"21000293\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00294\" ci=\"21000294\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00295\" ci=\"21000295\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00296\" ci=\"21000296\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"F-C00297\" ci=\"21000297\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"F-C00298\" ci=\"21000298\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"F-C00299\" ci=\"21000299\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"F-C00300\" ci=\"21000300\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"F-C00301\" ci=\"21000301\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"F-C00302\" ci=\"21000302\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"F-C00303\" ci=\"21000303\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"F-C00304\" ci=\"21000304\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"F-C00305\" ci=\"21000305\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"F-C00306\" ci=\"21000306\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"F-C00307\" ci=\"21000307\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"F-C00308\" ci=\"21000308\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"F-C00309\" ci=\"21000309\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"F-C00310\" ci=\"21000310\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00311\" ci=\"21000311\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00312\" ci=\"21000312\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00313\" ci=\"21000313\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00314\" ci=\"21000314\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00315\" ci=\"21000315\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00316\" ci=\"21000316\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00317\" ci=\"21000317\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00318\" ci=\"21000318\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00319\" ci=\"21000319\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00320\" ci=\"21000320\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00321\" ci=\"21000321\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00322\" ci=\"21000322\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00323\" ci=\"21000323\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"G-C00324\" ci=\"21000324\" r=\"G-R00031\" ri=\"11000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"A-C00325\" ci=\"21000325\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"B-C00326\" ci=\"21000326\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"C-C00327\" ci=\"21000327\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"D-C00328\" ci=\"21000328\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"E-C00329\" ci=\"21000329\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"F-C00330\" ci=\"21000330\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"H-C00331\" ci=\"21000331\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"H-C00332\" ci=\"21000332\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"H-C00333\" ci=\"21000333\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"K-C00334\" ci=\"21000334\" r=\"K-R00033\" ri=\"11000033\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC01\" ci=\"22000001\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC02\" ci=\"22000002\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC03\" ci=\"22000003\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC04\" ci=\"22000004\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC05\" ci=\"22000005\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC06\" ci=\"22000006\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC07\" ci=\"22000007\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC08\" ci=\"22000008\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC09\" ci=\"22000009\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC10\" ci=\"22000010\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC11\" ci=\"22000011\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC12\" ci=\"22000012\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC13\" ci=\"22000013\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC14\" ci=\"22000014\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC15\" ci=\"22000015\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC16\" ci=\"22000016\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC17\" ci=\"22000017\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC18\" ci=\"22000018\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC19\" ci=\"22000019\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC20\" ci=\"22000020\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC21\" ci=\"22000021\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC22\" ci=\"22000022\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC23\" ci=\"22000023\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC24\" ci=\"22000024\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"ADC25\" ci=\"22000025\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-001\" ci=\"24000001\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-002\" ci=\"24000002\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-003\" ci=\"24000003\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-004\" ci=\"24000004\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-005\" ci=\"24000005\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-006\" ci=\"24000006\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-007\" ci=\"24000007\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-008\" ci=\"24000008\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-009\" ci=\"24000009\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-010\" ci=\"24000010\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-011\" ci=\"24000011\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-012\" ci=\"24000012\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-013\" ci=\"24000013\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-014\" ci=\"24000014\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-015\" ci=\"24000015\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-016\" ci=\"24000016\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-017\" ci=\"24000017\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-018\" ci=\"24000018\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-019\" ci=\"24000019\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-020\" ci=\"24000020\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-021\" ci=\"24000021\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-022\" ci=\"24000022\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-023\" ci=\"24000023\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-024\" ci=\"24000024\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"VC-025\" ci=\"24000025\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"Global PLEX Market Constellation\" ci=\"26000001\" r=\"Global PLEX Market Region\" ri=\"19000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"\" syi=\"0\"/>\r\n    <row c=\"San Matar\" ci=\"20000001\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Tanoo\" syi=\"30000001\"/>\r\n    <row c=\"San Matar\" ci=\"20000001\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Lashesih\" syi=\"30000002\"/>\r\n    <row c=\"San Matar\" ci=\"20000001\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Akpivem\" syi=\"30000003\"/>\r\n    <row c=\"San Matar\" ci=\"20000001\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Jark\" syi=\"30000004\"/>\r\n    <row c=\"San Matar\" ci=\"20000001\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Sasta\" syi=\"30000005\"/>\r\n    <row c=\"San Matar\" ci=\"20000001\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Zaid\" syi=\"30000006\"/>\r\n    <row c=\"San Matar\" ci=\"20000001\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Yuzier\" syi=\"30000007\"/>\r\n    <row c=\"San Matar\" ci=\"20000001\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Nirbhi\" syi=\"30000008\"/>\r\n    <row c=\"Anares\" ci=\"20000002\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Sooma\" syi=\"30000009\"/>\r\n    <row c=\"Anares\" ci=\"20000002\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Chidah\" syi=\"30000010\"/>\r\n    <row c=\"Anares\" ci=\"20000002\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Shenela\" syi=\"30000011\"/>\r\n    <row c=\"Anares\" ci=\"20000002\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Asabona\" syi=\"30000012\"/>\r\n    <row c=\"Anares\" ci=\"20000002\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Onsooh\" syi=\"30000013\"/>\r\n    <row c=\"Anares\" ci=\"20000002\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Shamahi\" syi=\"30000014\"/>\r\n    <row c=\"Anares\" ci=\"20000002\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Sendaya\" syi=\"30000015\"/>\r\n    <row c=\"Anares\" ci=\"20000002\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Nazhgete\" syi=\"30000016\"/>\r\n    <row c=\"Mamouna\" ci=\"20000003\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Futzchag\" syi=\"30000017\"/>\r\n    <row c=\"Mamouna\" ci=\"20000003\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Kazna\" syi=\"30000018\"/>\r\n    <row c=\"Mamouna\" ci=\"20000003\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Podion\" syi=\"30000019\"/>\r\n    <row c=\"Mamouna\" ci=\"20000003\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Lilmad\" syi=\"30000020\"/>\r\n    <row c=\"Krai Svarog\" ci=\"20000788\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Kuharah\" syi=\"30000021\"/>\r\n    <row c=\"Mamouna\" ci=\"20000003\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Jayneleb\" syi=\"30000022\"/>\r\n    <row c=\"Kalangin\" ci=\"20000004\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Fovihi\" syi=\"30000023\"/>\r\n    <row c=\"Kalangin\" ci=\"20000004\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Kiereend\" syi=\"30000024\"/>\r\n    <row c=\"Kalangin\" ci=\"20000004\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Rashy\" syi=\"30000025\"/>\r\n    <row c=\"Kalangin\" ci=\"20000004\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Ordize\" syi=\"30000026\"/>\r\n    <row c=\"Kalangin\" ci=\"20000004\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Psasa\" syi=\"30000027\"/>\r\n    <row c=\"Kalangin\" ci=\"20000004\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Eshtah\" syi=\"30000028\"/>\r\n    <row c=\"Kalangin\" ci=\"20000004\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Lachailes\" syi=\"30000029\"/>\r\n    <row c=\"Kalangin\" ci=\"20000004\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Kasrasi\" syi=\"30000030\"/>\r\n    <row c=\"Hevaka\" ci=\"20000005\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Mohas\" syi=\"30000031\"/>\r\n    <row c=\"Hevaka\" ci=\"20000005\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Hasiari\" syi=\"30000032\"/>\r\n    <row c=\"Hevaka\" ci=\"20000005\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Radima\" syi=\"30000033\"/>\r\n    <row c=\"Hevaka\" ci=\"20000005\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Alkez\" syi=\"30000034\"/>\r\n    <row c=\"Hevaka\" ci=\"20000005\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Nimambal\" syi=\"30000035\"/>\r\n    <row c=\"Hevaka\" ci=\"20000005\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Yishinoon\" syi=\"30000036\"/>\r\n    <row c=\"Hevaka\" ci=\"20000005\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Uplingur\" syi=\"30000037\"/>\r\n    <row c=\"Sazdih\" ci=\"20000006\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Dooz\" syi=\"30000038\"/>\r\n    <row c=\"Sazdih\" ci=\"20000006\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Bayuka\" syi=\"30000039\"/>\r\n    <row c=\"Sazdih\" ci=\"20000006\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Uzistoon\" syi=\"30000040\"/>\r\n    <row c=\"Sazdih\" ci=\"20000006\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Bairshir\" syi=\"30000041\"/>\r\n    <row c=\"Sazdih\" ci=\"20000006\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Moh\" syi=\"30000042\"/>\r\n    <row c=\"Sazdih\" ci=\"20000006\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Sari\" syi=\"30000043\"/>\r\n    <row c=\"Ananah\" ci=\"20000007\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Faspera\" syi=\"30000044\"/>\r\n    <row c=\"Ananah\" ci=\"20000007\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Jaymass\" syi=\"30000045\"/>\r\n    <row c=\"Ananah\" ci=\"20000007\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Mifrata\" syi=\"30000046\"/>\r\n    <row c=\"Ananah\" ci=\"20000007\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Majamar\" syi=\"30000047\"/>\r\n    <row c=\"Ananah\" ci=\"20000007\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Ihal\" syi=\"30000048\"/>\r\n    <row c=\"Ananah\" ci=\"20000007\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Camal\" syi=\"30000049\"/>\r\n    <row c=\"Ananah\" ci=\"20000007\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Fera\" syi=\"30000050\"/>\r\n    <row c=\"Mossas\" ci=\"20000008\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Juddi\" syi=\"30000051\"/>\r\n    <row c=\"Mossas\" ci=\"20000008\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Maspah\" syi=\"30000052\"/>\r\n    <row c=\"Mossas\" ci=\"20000008\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Ibaria\" syi=\"30000053\"/>\r\n    <row c=\"Mossas\" ci=\"20000008\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Shala\" syi=\"30000054\"/>\r\n    <row c=\"Mossas\" ci=\"20000008\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Zemalu\" syi=\"30000055\"/>\r\n    <row c=\"Mossas\" ci=\"20000008\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Khankenirdia\" syi=\"30000056\"/>\r\n    <row c=\"Mekashtad\" ci=\"20000009\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Nikh\" syi=\"30000057\"/>\r\n    <row c=\"Mekashtad\" ci=\"20000009\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Amphar\" syi=\"30000058\"/>\r\n    <row c=\"Mekashtad\" ci=\"20000009\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Salashayama\" syi=\"30000059\"/>\r\n    <row c=\"Mekashtad\" ci=\"20000009\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Janus\" syi=\"30000060\"/>\r\n    <row c=\"Mekashtad\" ci=\"20000009\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Agha\" syi=\"30000061\"/>\r\n    <row c=\"Mekashtad\" ci=\"20000009\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Iosantin\" syi=\"30000062\"/>\r\n    <row c=\"Mekashtad\" ci=\"20000009\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Orva\" syi=\"30000063\"/>\r\n    <row c=\"Mekashtad\" ci=\"20000009\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Zet\" syi=\"30000064\"/>\r\n    <row c=\"Mekashtad\" ci=\"20000009\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Akhrad\" syi=\"30000065\"/>\r\n    <row c=\"Mekashtad\" ci=\"20000009\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Pirohdim\" syi=\"30000066\"/>\r\n    <row c=\"Mekashtad\" ci=\"20000009\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Sharir\" syi=\"30000067\"/>\r\n    <row c=\"Mekashtad\" ci=\"20000009\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Usroh\" syi=\"30000068\"/>\r\n    <row c=\"Mekashtad\" ci=\"20000009\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Thiarer\" syi=\"30000069\"/>\r\n    <row c=\"Bedaleya\" ci=\"20000010\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Gomati\" syi=\"30000070\"/>\r\n    <row c=\"Bedaleya\" ci=\"20000010\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Jangar\" syi=\"30000071\"/>\r\n    <row c=\"Bedaleya\" ci=\"20000010\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Nakah\" syi=\"30000072\"/>\r\n    <row c=\"Bedaleya\" ci=\"20000010\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Irshah\" syi=\"30000073\"/>\r\n    <row c=\"Bedaleya\" ci=\"20000010\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Hasateem\" syi=\"30000074\"/>\r\n    <row c=\"Bedaleya\" ci=\"20000010\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Assah\" syi=\"30000075\"/>\r\n    <row c=\"Orshed\" ci=\"20000011\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Tidacha\" syi=\"30000076\"/>\r\n    <row c=\"Orshed\" ci=\"20000011\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Odlib\" syi=\"30000077\"/>\r\n    <row c=\"Orshed\" ci=\"20000011\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Jofan\" syi=\"30000078\"/>\r\n    <row c=\"Orshed\" ci=\"20000011\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Milu\" syi=\"30000079\"/>\r\n    <row c=\"Orshed\" ci=\"20000011\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Yadi\" syi=\"30000080\"/>\r\n    <row c=\"Orshed\" ci=\"20000011\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Buftiar\" syi=\"30000081\"/>\r\n    <row c=\"Oraron\" ci=\"20000012\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Jarizza\" syi=\"30000082\"/>\r\n    <row c=\"Oraron\" ci=\"20000012\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Ejahi\" syi=\"30000083\"/>\r\n    <row c=\"Oraron\" ci=\"20000012\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Asghatil\" syi=\"30000084\"/>\r\n    <row c=\"Oraron\" ci=\"20000012\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Bar\" syi=\"30000085\"/>\r\n    <row c=\"Oraron\" ci=\"20000012\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Sucha\" syi=\"30000086\"/>\r\n    <row c=\"Oraron\" ci=\"20000012\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Gelhan\" syi=\"30000087\"/>\r\n    <row c=\"Oraron\" ci=\"20000012\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Akeva\" syi=\"30000088\"/>\r\n    <row c=\"Aguh\" ci=\"20000013\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Sosa\" syi=\"30000089\"/>\r\n    <row c=\"Aguh\" ci=\"20000013\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Ilahed\" syi=\"30000090\"/>\r\n    <row c=\"Aguh\" ci=\"20000013\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Eshwil\" syi=\"30000091\"/>\r\n    <row c=\"Aguh\" ci=\"20000013\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Aranir\" syi=\"30000092\"/>\r\n    <row c=\"Aguh\" ci=\"20000013\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Ishkad\" syi=\"30000093\"/>\r\n    <row c=\"Aguh\" ci=\"20000013\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Hahyil\" syi=\"30000094\"/>\r\n    <row c=\"Mal\" ci=\"20000014\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Asilem\" syi=\"30000095\"/>\r\n    <row c=\"Mal\" ci=\"20000014\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Mahnagh\" syi=\"30000096\"/>\r\n    <row c=\"Mal\" ci=\"20000014\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Shach\" syi=\"30000097\"/>\r\n    <row c=\"Mal\" ci=\"20000014\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Kehrara\" syi=\"30000098\"/>\r\n    <row c=\"Mal\" ci=\"20000014\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Arena\" syi=\"30000099\"/>\r\n    <row c=\"Mal\" ci=\"20000014\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Timeor\" syi=\"30000100\"/>\r\n    <row c=\"Mal\" ci=\"20000014\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Uhtafal\" syi=\"30000101\"/>\r\n    <row c=\"Mal\" ci=\"20000014\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Dysa\" syi=\"30000102\"/>\r\n    <row c=\"Mal\" ci=\"20000014\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Serad\" syi=\"30000103\"/>\r\n    <row c=\"Mal\" ci=\"20000014\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Mahti\" syi=\"30000104\"/>\r\n    <row c=\"Mal\" ci=\"20000014\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Abha\" syi=\"30000105\"/>\r\n    <row c=\"Subi\" ci=\"20000015\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Shedoo\" syi=\"30000106\"/>\r\n    <row c=\"Subi\" ci=\"20000015\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Gamis\" syi=\"30000107\"/>\r\n    <row c=\"Subi\" ci=\"20000015\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Nieril\" syi=\"30000108\"/>\r\n    <row c=\"Subi\" ci=\"20000015\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Berta\" syi=\"30000109\"/>\r\n    <row c=\"Subi\" ci=\"20000015\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Bekirdod\" syi=\"30000110\"/>\r\n    <row c=\"Subi\" ci=\"20000015\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Hothomouh\" syi=\"30000111\"/>\r\n    <row c=\"Joas\" ci=\"20000016\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Arnola\" syi=\"30000112\"/>\r\n    <row c=\"Joas\" ci=\"20000016\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Astabih\" syi=\"30000113\"/>\r\n    <row c=\"Joas\" ci=\"20000016\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Ubtes\" syi=\"30000114\"/>\r\n    <row c=\"Joas\" ci=\"20000016\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Bimener\" syi=\"30000115\"/>\r\n    <row c=\"Joas\" ci=\"20000016\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Kenobanala\" syi=\"30000116\"/>\r\n    <row c=\"Joas\" ci=\"20000016\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Khabi\" syi=\"30000117\"/>\r\n    <row c=\"Joas\" ci=\"20000016\" r=\"Derelik\" ri=\"10000001\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Uanzin\" syi=\"30000118\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Itamo\" syi=\"30000119\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Mitsolen\" syi=\"30000120\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Jatate\" syi=\"30000121\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Mahtista\" syi=\"30000122\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Vaankalen\" syi=\"30000123\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Kylmabe\" syi=\"30000124\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Ahtulaima\" syi=\"30000125\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Geras\" syi=\"30000126\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Sirseshin\" syi=\"30000127\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Tuuriainas\" syi=\"30000128\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Unpas\" syi=\"30000129\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Shihuken\" syi=\"30000130\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Nomaa\" syi=\"30000131\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Ansila\" syi=\"30000132\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Hirtamon\" syi=\"30000133\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Hykkota\" syi=\"30000134\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Outuni\" syi=\"30000135\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Ohmahailen\" syi=\"30000136\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Eskunen\" syi=\"30000137\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Ikuchi\" syi=\"30000138\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Urlen\" syi=\"30000139\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Maurasi\" syi=\"30000140\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Kisogo\" syi=\"30000141\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Jita\" syi=\"30000142\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Niyabainen\" syi=\"30000143\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Perimeter\" syi=\"30000144\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"1.0\" si=\"0\" sy=\"New Caldari\" syi=\"30000145\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Saisio\" syi=\"30000146\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Abagawa\" syi=\"30000147\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Jakanerva\" syi=\"30000148\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Gekutami\" syi=\"30000149\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Hurtoken\" syi=\"30000150\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Uoyonen\" syi=\"30000151\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Hampinen\" syi=\"30000152\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Poinen\" syi=\"30000153\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Liekuri\" syi=\"30000154\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Obanen\" syi=\"30000155\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Josameto\" syi=\"30000156\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Otela\" syi=\"30000157\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Olo\" syi=\"30000158\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Ikami\" syi=\"30000159\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Reisen\" syi=\"30000160\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Purjola\" syi=\"30000161\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Maila\" syi=\"30000162\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Akora\" syi=\"30000163\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Messoya\" syi=\"30000164\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Ishisomo\" syi=\"30000165\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Airmia\" syi=\"30000166\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Sakkikainen\" syi=\"30000167\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Friggi\" syi=\"30000168\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Ihakana\" syi=\"30000169\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Vahunomi\" syi=\"30000170\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Otitoh\" syi=\"30000171\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Otomainen\" syi=\"30000172\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Vattuolen\" syi=\"30000173\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Onuse\" syi=\"30000174\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Soshin\" syi=\"30000175\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Keikaken\" syi=\"30000176\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Ukkalen\" syi=\"30000177\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Akkilen\" syi=\"30000178\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Silen\" syi=\"30000179\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Osmon\" syi=\"30000180\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Korsiki\" syi=\"30000181\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Inaya\" syi=\"30000182\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Nuken\" syi=\"30000183\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Uminas\" syi=\"30000184\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Airaken\" syi=\"30000185\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Oijanen\" syi=\"30000186\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Wuos\" syi=\"30000187\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Hentogaira\" syi=\"30000188\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Kiainti\" syi=\"30000189\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Vasala\" syi=\"30000190\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Walvalin\" syi=\"30000191\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Otanuomi\" syi=\"30000192\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Vouskiaho\" syi=\"30000193\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Otsela\" syi=\"30000194\"/>\r\n    <row c=\"Mivora\" ci=\"20000028\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Tasti\" syi=\"30000195\"/>\r\n    <row c=\"Mivora\" ci=\"20000028\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Otosela\" syi=\"30000196\"/>\r\n    <row c=\"Mivora\" ci=\"20000028\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Uemon\" syi=\"30000197\"/>\r\n    <row c=\"Mivora\" ci=\"20000028\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Paala\" syi=\"30000198\"/>\r\n    <row c=\"Mivora\" ci=\"20000028\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Fuskunen\" syi=\"30000199\"/>\r\n    <row c=\"Mivora\" ci=\"20000028\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Akkio\" syi=\"30000200\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Uchoshi\" syi=\"30000201\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Mastakomon\" syi=\"30000202\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Eruka\" syi=\"30000203\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Ohkunen\" syi=\"30000204\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Obe\" syi=\"30000205\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Wirashoda\" syi=\"30000206\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Osaa\" syi=\"30000207\"/>\r\n    <row c=\"U29-0S\" ci=\"20000030\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LZ-6SU\" syi=\"30000208\"/>\r\n    <row c=\"U29-0S\" ci=\"20000030\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MC6O-F\" syi=\"30000209\"/>\r\n    <row c=\"U29-0S\" ci=\"20000030\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U54-1L\" syi=\"30000210\"/>\r\n    <row c=\"U29-0S\" ci=\"20000030\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-588R\" syi=\"30000211\"/>\r\n    <row c=\"U29-0S\" ci=\"20000030\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NCGR-Q\" syi=\"30000212\"/>\r\n    <row c=\"U29-0S\" ci=\"20000030\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-LOIT\" syi=\"30000213\"/>\r\n    <row c=\"U29-0S\" ci=\"20000030\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HE-V4V\" syi=\"30000214\"/>\r\n    <row c=\"BUG6-X\" ci=\"20000031\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-HSK0\" syi=\"30000215\"/>\r\n    <row c=\"BUG6-X\" ci=\"20000031\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"05R-7A\" syi=\"30000216\"/>\r\n    <row c=\"BUG6-X\" ci=\"20000031\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7-UH4Z\" syi=\"30000217\"/>\r\n    <row c=\"BUG6-X\" ci=\"20000031\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5ZO-NZ\" syi=\"30000218\"/>\r\n    <row c=\"BUG6-X\" ci=\"20000031\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FS-RFL\" syi=\"30000219\"/>\r\n    <row c=\"BUG6-X\" ci=\"20000031\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y0-BVN\" syi=\"30000220\"/>\r\n    <row c=\"BUG6-X\" ci=\"20000031\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X97D-W\" syi=\"30000221\"/>\r\n    <row c=\"OSJ7-I\" ci=\"20000032\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-R5TS\" syi=\"30000222\"/>\r\n    <row c=\"OSJ7-I\" ci=\"20000032\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-UCD1\" syi=\"30000223\"/>\r\n    <row c=\"OSJ7-I\" ci=\"20000032\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7-K5EL\" syi=\"30000224\"/>\r\n    <row c=\"OSJ7-I\" ci=\"20000032\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-5GUI\" syi=\"30000225\"/>\r\n    <row c=\"OSJ7-I\" ci=\"20000032\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FH-TTC\" syi=\"30000226\"/>\r\n    <row c=\"OSJ7-I\" ci=\"20000032\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FMBR-8\" syi=\"30000227\"/>\r\n    <row c=\"DMXN-3\" ci=\"20000033\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3HX-DL\" syi=\"30000228\"/>\r\n    <row c=\"DMXN-3\" ci=\"20000033\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UH-9ZG\" syi=\"30000229\"/>\r\n    <row c=\"DMXN-3\" ci=\"20000033\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NFM-0V\" syi=\"30000230\"/>\r\n    <row c=\"DMXN-3\" ci=\"20000033\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YXIB-I\" syi=\"30000231\"/>\r\n    <row c=\"DMXN-3\" ci=\"20000033\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MY-T2P\" syi=\"30000232\"/>\r\n    <row c=\"DMXN-3\" ci=\"20000033\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FA-DMO\" syi=\"30000233\"/>\r\n    <row c=\"DMXN-3\" ci=\"20000033\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GEKJ-9\" syi=\"30000234\"/>\r\n    <row c=\"DMXN-3\" ci=\"20000033\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-R3GP\" syi=\"30000235\"/>\r\n    <row c=\"DMXN-3\" ci=\"20000033\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-5QPW\" syi=\"30000236\"/>\r\n    <row c=\"DMXN-3\" ci=\"20000033\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XV-8JQ\" syi=\"30000237\"/>\r\n    <row c=\"I89-EP\" ci=\"20000034\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WBR5-R\" syi=\"30000238\"/>\r\n    <row c=\"I89-EP\" ci=\"20000034\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4GYV-Q\" syi=\"30000239\"/>\r\n    <row c=\"I89-EP\" ci=\"20000034\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-HWWF\" syi=\"30000240\"/>\r\n    <row c=\"I89-EP\" ci=\"20000034\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YMJG-4\" syi=\"30000241\"/>\r\n    <row c=\"I89-EP\" ci=\"20000034\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8TPX-N\" syi=\"30000242\"/>\r\n    <row c=\"I89-EP\" ci=\"20000034\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PM-DWE\" syi=\"30000243\"/>\r\n    <row c=\"Z-DO53\" ci=\"20000035\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K8X-6B\" syi=\"30000244\"/>\r\n    <row c=\"Z-DO53\" ci=\"20000035\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X445-5\" syi=\"30000245\"/>\r\n    <row c=\"Z-DO53\" ci=\"20000035\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KRUN-N\" syi=\"30000246\"/>\r\n    <row c=\"Z-DO53\" ci=\"20000035\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9OO-LH\" syi=\"30000247\"/>\r\n    <row c=\"Z-DO53\" ci=\"20000035\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-OJEN\" syi=\"30000248\"/>\r\n    <row c=\"Z-DO53\" ci=\"20000035\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EIDI-N\" syi=\"30000249\"/>\r\n    <row c=\"Z-DO53\" ci=\"20000035\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P3EN-E\" syi=\"30000250\"/>\r\n    <row c=\"Z-DO53\" ci=\"20000035\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"49-0LI\" syi=\"30000251\"/>\r\n    <row c=\"Z-DO53\" ci=\"20000035\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IPAY-2\" syi=\"30000252\"/>\r\n    <row c=\"Z-DO53\" ci=\"20000035\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DAYP-G\" syi=\"30000253\"/>\r\n    <row c=\"YUT3-U\" ci=\"20000036\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IFJ-EL\" syi=\"30000254\"/>\r\n    <row c=\"YUT3-U\" ci=\"20000036\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"47L-J4\" syi=\"30000255\"/>\r\n    <row c=\"YUT3-U\" ci=\"20000036\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-L07F\" syi=\"30000256\"/>\r\n    <row c=\"YUT3-U\" ci=\"20000036\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-D0VZ\" syi=\"30000257\"/>\r\n    <row c=\"YUT3-U\" ci=\"20000036\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6WW-28\" syi=\"30000258\"/>\r\n    <row c=\"YUT3-U\" ci=\"20000036\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A8A-JN\" syi=\"30000259\"/>\r\n    <row c=\"YUT3-U\" ci=\"20000036\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S-NJBB\" syi=\"30000260\"/>\r\n    <row c=\"5YHF-H\" ci=\"20000037\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T-GCGL\" syi=\"30000261\"/>\r\n    <row c=\"5YHF-H\" ci=\"20000037\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0MV-4W\" syi=\"30000262\"/>\r\n    <row c=\"5YHF-H\" ci=\"20000037\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TVN-FM\" syi=\"30000263\"/>\r\n    <row c=\"5YHF-H\" ci=\"20000037\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-NL3K\" syi=\"30000264\"/>\r\n    <row c=\"5YHF-H\" ci=\"20000037\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AZBR-2\" syi=\"30000265\"/>\r\n    <row c=\"5YHF-H\" ci=\"20000037\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-8Q65\" syi=\"30000266\"/>\r\n    <row c=\"5YHF-H\" ci=\"20000037\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0J3L-V\" syi=\"30000267\"/>\r\n    <row c=\"UK-MI6\" ci=\"20000038\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-NOU5\" syi=\"30000268\"/>\r\n    <row c=\"UK-MI6\" ci=\"20000038\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KX-2UI\" syi=\"30000269\"/>\r\n    <row c=\"UK-MI6\" ci=\"20000038\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MO-FIF\" syi=\"30000270\"/>\r\n    <row c=\"UK-MI6\" ci=\"20000038\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"97-M96\" syi=\"30000271\"/>\r\n    <row c=\"UK-MI6\" ci=\"20000038\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MA-XAP\" syi=\"30000272\"/>\r\n    <row c=\"UK-MI6\" ci=\"20000038\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-J7CR\" syi=\"30000273\"/>\r\n    <row c=\"YDS0-Y\" ci=\"20000039\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-EHMJ\" syi=\"30000274\"/>\r\n    <row c=\"YDS0-Y\" ci=\"20000039\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XSQ-TF\" syi=\"30000275\"/>\r\n    <row c=\"YDS0-Y\" ci=\"20000039\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-1EOH\" syi=\"30000276\"/>\r\n    <row c=\"YDS0-Y\" ci=\"20000039\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IR-DYY\" syi=\"30000277\"/>\r\n    <row c=\"YDS0-Y\" ci=\"20000039\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-DHON\" syi=\"30000278\"/>\r\n    <row c=\"YDS0-Y\" ci=\"20000039\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-D49D\" syi=\"30000279\"/>\r\n    <row c=\"A3-T8B\" ci=\"20000040\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MQ-O27\" syi=\"30000280\"/>\r\n    <row c=\"A3-T8B\" ci=\"20000040\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-EY0P\" syi=\"30000281\"/>\r\n    <row c=\"A3-T8B\" ci=\"20000040\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UNAG-6\" syi=\"30000282\"/>\r\n    <row c=\"A3-T8B\" ci=\"20000040\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-SCTX\" syi=\"30000283\"/>\r\n    <row c=\"A3-T8B\" ci=\"20000040\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S6QX-N\" syi=\"30000284\"/>\r\n    <row c=\"A3-T8B\" ci=\"20000040\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IT-YAU\" syi=\"30000285\"/>\r\n    <row c=\"A3-T8B\" ci=\"20000040\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1VK-6B\" syi=\"30000286\"/>\r\n    <row c=\"A3-T8B\" ci=\"20000040\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7-PO3P\" syi=\"30000287\"/>\r\n    <row c=\"A3-T8B\" ci=\"20000040\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1W-0KS\" syi=\"30000288\"/>\r\n    <row c=\"DILJ-7\" ci=\"20000041\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"669-IX\" syi=\"30000289\"/>\r\n    <row c=\"DILJ-7\" ci=\"20000041\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0R-F2F\" syi=\"30000290\"/>\r\n    <row c=\"DILJ-7\" ci=\"20000041\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R-P7KL\" syi=\"30000291\"/>\r\n    <row c=\"DILJ-7\" ci=\"20000041\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2DWM-2\" syi=\"30000292\"/>\r\n    <row c=\"DILJ-7\" ci=\"20000041\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XF-PWO\" syi=\"30000293\"/>\r\n    <row c=\"DILJ-7\" ci=\"20000041\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1N-FJ8\" syi=\"30000294\"/>\r\n    <row c=\"0-8MWQ\" ci=\"20000042\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VI2K-J\" syi=\"30000295\"/>\r\n    <row c=\"0-8MWQ\" ci=\"20000042\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZLZ-1Z\" syi=\"30000296\"/>\r\n    <row c=\"0-8MWQ\" ci=\"20000042\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6Y-WRK\" syi=\"30000297\"/>\r\n    <row c=\"0-8MWQ\" ci=\"20000042\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RVCZ-C\" syi=\"30000298\"/>\r\n    <row c=\"0-8MWQ\" ci=\"20000042\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5T-KM3\" syi=\"30000299\"/>\r\n    <row c=\"0-8MWQ\" ci=\"20000042\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LS9B-9\" syi=\"30000300\"/>\r\n    <row c=\"F-V9QW\" ci=\"20000043\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1-GBBP\" syi=\"30000301\"/>\r\n    <row c=\"F-V9QW\" ci=\"20000043\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-FP70\" syi=\"30000302\"/>\r\n    <row c=\"F-V9QW\" ci=\"20000043\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T-ZWA1\" syi=\"30000303\"/>\r\n    <row c=\"F-V9QW\" ci=\"20000043\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZA0L-U\" syi=\"30000304\"/>\r\n    <row c=\"F-V9QW\" ci=\"20000043\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G96R-F\" syi=\"30000305\"/>\r\n    <row c=\"F-V9QW\" ci=\"20000043\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-ZXIO\" syi=\"30000306\"/>\r\n    <row c=\"E-8CSQ\" ci=\"20000044\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-E3KQ\" syi=\"30000307\"/>\r\n    <row c=\"E-8CSQ\" ci=\"20000044\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y5J-EU\" syi=\"30000308\"/>\r\n    <row c=\"E-8CSQ\" ci=\"20000044\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-LR1H\" syi=\"30000309\"/>\r\n    <row c=\"E-8CSQ\" ci=\"20000044\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G5ED-Y\" syi=\"30000310\"/>\r\n    <row c=\"E-8CSQ\" ci=\"20000044\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BR-6XP\" syi=\"30000311\"/>\r\n    <row c=\"E-8CSQ\" ci=\"20000044\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8-TFDX\" syi=\"30000312\"/>\r\n    <row c=\"E-8CSQ\" ci=\"20000044\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UL-4ZW\" syi=\"30000313\"/>\r\n    <row c=\"9KX-M0\" ci=\"20000045\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-QRQT\" syi=\"30000314\"/>\r\n    <row c=\"9KX-M0\" ci=\"20000045\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WMBZ-U\" syi=\"30000315\"/>\r\n    <row c=\"9KX-M0\" ci=\"20000045\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PX5-LR\" syi=\"30000316\"/>\r\n    <row c=\"9KX-M0\" ci=\"20000045\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A3-RQ3\" syi=\"30000317\"/>\r\n    <row c=\"9KX-M0\" ci=\"20000045\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-GBPD\" syi=\"30000318\"/>\r\n    <row c=\"9KX-M0\" ci=\"20000045\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LS-JEP\" syi=\"30000319\"/>\r\n    <row c=\"88G-M4\" ci=\"20000046\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R-RSZZ\" syi=\"30000320\"/>\r\n    <row c=\"88G-M4\" ci=\"20000046\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MGAM-4\" syi=\"30000321\"/>\r\n    <row c=\"88G-M4\" ci=\"20000046\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VORM-W\" syi=\"30000322\"/>\r\n    <row c=\"88G-M4\" ci=\"20000046\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7G-H7D\" syi=\"30000323\"/>\r\n    <row c=\"88G-M4\" ci=\"20000046\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q3-BAY\" syi=\"30000324\"/>\r\n    <row c=\"88G-M4\" ci=\"20000046\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JZV-F4\" syi=\"30000325\"/>\r\n    <row c=\"L5-H1O\" ci=\"20000047\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WF-1LM\" syi=\"30000326\"/>\r\n    <row c=\"L5-H1O\" ci=\"20000047\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D95-FQ\" syi=\"30000327\"/>\r\n    <row c=\"L5-H1O\" ci=\"20000047\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZSPJ-K\" syi=\"30000328\"/>\r\n    <row c=\"L5-H1O\" ci=\"20000047\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U1F-86\" syi=\"30000329\"/>\r\n    <row c=\"L5-H1O\" ci=\"20000047\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T-P7A6\" syi=\"30000330\"/>\r\n    <row c=\"L5-H1O\" ci=\"20000047\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-T3JJ\" syi=\"30000331\"/>\r\n    <row c=\"L5-H1O\" ci=\"20000047\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F3R-IA\" syi=\"30000332\"/>\r\n    <row c=\"L5-H1O\" ci=\"20000047\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"74-YTJ\" syi=\"30000333\"/>\r\n    <row c=\"J-4QD7\" ci=\"20000048\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8-RS3U\" syi=\"30000334\"/>\r\n    <row c=\"J-4QD7\" ci=\"20000048\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OVFN-N\" syi=\"30000335\"/>\r\n    <row c=\"J-4QD7\" ci=\"20000048\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1Q-BBM\" syi=\"30000336\"/>\r\n    <row c=\"J-4QD7\" ci=\"20000048\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WXNC-N\" syi=\"30000337\"/>\r\n    <row c=\"J-4QD7\" ci=\"20000048\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-EA07\" syi=\"30000338\"/>\r\n    <row c=\"J-4QD7\" ci=\"20000048\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-L6BO\" syi=\"30000339\"/>\r\n    <row c=\"LC-AQD\" ci=\"20000049\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D-PHUA\" syi=\"30000340\"/>\r\n    <row c=\"LC-AQD\" ci=\"20000049\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3-HXHQ\" syi=\"30000341\"/>\r\n    <row c=\"LC-AQD\" ci=\"20000049\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"18A-NB\" syi=\"30000342\"/>\r\n    <row c=\"LC-AQD\" ci=\"20000049\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3-J5OQ\" syi=\"30000343\"/>\r\n    <row c=\"LC-AQD\" ci=\"20000049\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GYF-GD\" syi=\"30000344\"/>\r\n    <row c=\"LC-AQD\" ci=\"20000049\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W-6TS9\" syi=\"30000345\"/>\r\n    <row c=\"LC-AQD\" ci=\"20000049\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VIG-VR\" syi=\"30000346\"/>\r\n    <row c=\"7PUP-K\" ci=\"20000050\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KX-P5C\" syi=\"30000347\"/>\r\n    <row c=\"7PUP-K\" ci=\"20000050\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-FJBK\" syi=\"30000348\"/>\r\n    <row c=\"7PUP-K\" ci=\"20000050\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2-4ZT5\" syi=\"30000349\"/>\r\n    <row c=\"7PUP-K\" ci=\"20000050\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NVN-6F\" syi=\"30000350\"/>\r\n    <row c=\"7PUP-K\" ci=\"20000050\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"09-8TH\" syi=\"30000351\"/>\r\n    <row c=\"7PUP-K\" ci=\"20000050\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TI0-AX\" syi=\"30000352\"/>\r\n    <row c=\"V8UW-M\" ci=\"20000051\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7O-POM\" syi=\"30000353\"/>\r\n    <row c=\"V8UW-M\" ci=\"20000051\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L6Q-SX\" syi=\"30000354\"/>\r\n    <row c=\"V8UW-M\" ci=\"20000051\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BFJ-TB\" syi=\"30000355\"/>\r\n    <row c=\"V8UW-M\" ci=\"20000051\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZZ7-L6\" syi=\"30000356\"/>\r\n    <row c=\"V8UW-M\" ci=\"20000051\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-CHVW\" syi=\"30000357\"/>\r\n    <row c=\"V8UW-M\" ci=\"20000051\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X0LN-U\" syi=\"30000358\"/>\r\n    <row c=\"V8UW-M\" ci=\"20000051\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RQAE-M\" syi=\"30000359\"/>\r\n    <row c=\"T7B-VB\" ci=\"20000052\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7CO-SA\" syi=\"30000360\"/>\r\n    <row c=\"T7B-VB\" ci=\"20000052\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4G-E5A\" syi=\"30000361\"/>\r\n    <row c=\"T7B-VB\" ci=\"20000052\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-VWK9\" syi=\"30000362\"/>\r\n    <row c=\"T7B-VB\" ci=\"20000052\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JQHP-4\" syi=\"30000363\"/>\r\n    <row c=\"T7B-VB\" ci=\"20000052\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6Q5K-5\" syi=\"30000364\"/>\r\n    <row c=\"T7B-VB\" ci=\"20000052\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P-MVFP\" syi=\"30000365\"/>\r\n    <row c=\"B-PHYN\" ci=\"20000053\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J-Z1UW\" syi=\"30000366\"/>\r\n    <row c=\"B-PHYN\" ci=\"20000053\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W477-P\" syi=\"30000367\"/>\r\n    <row c=\"B-PHYN\" ci=\"20000053\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NQ1-BL\" syi=\"30000368\"/>\r\n    <row c=\"B-PHYN\" ci=\"20000053\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K7A-G8\" syi=\"30000369\"/>\r\n    <row c=\"B-PHYN\" ci=\"20000053\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HP-PMX\" syi=\"30000370\"/>\r\n    <row c=\"B-PHYN\" ci=\"20000053\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6BN-K9\" syi=\"30000371\"/>\r\n    <row c=\"B-PHYN\" ci=\"20000053\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WLE-PY\" syi=\"30000372\"/>\r\n    <row c=\"B-PHYN\" ci=\"20000053\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EH-HXW\" syi=\"30000373\"/>\r\n    <row c=\"B-PHYN\" ci=\"20000053\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OS-RR3\" syi=\"30000374\"/>\r\n    <row c=\"B-PHYN\" ci=\"20000053\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V4-GZL\" syi=\"30000375\"/>\r\n    <row c=\"9RW5-Z\" ci=\"20000054\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4C-Z91\" syi=\"30000376\"/>\r\n    <row c=\"9RW5-Z\" ci=\"20000054\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RU-97T\" syi=\"30000377\"/>\r\n    <row c=\"9RW5-Z\" ci=\"20000054\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1S-1V7\" syi=\"30000378\"/>\r\n    <row c=\"9RW5-Z\" ci=\"20000054\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PE1-R1\" syi=\"30000379\"/>\r\n    <row c=\"9RW5-Z\" ci=\"20000054\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Polaris\" syi=\"30000380\"/>\r\n    <row c=\"9RW5-Z\" ci=\"20000054\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JB-007\" syi=\"30000381\"/>\r\n    <row c=\"VL-OGL\" ci=\"20000055\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"USJ2-M\" syi=\"30000382\"/>\r\n    <row c=\"VL-OGL\" ci=\"20000055\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7M-RAL\" syi=\"30000383\"/>\r\n    <row c=\"VL-OGL\" ci=\"20000055\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LPBU-U\" syi=\"30000384\"/>\r\n    <row c=\"VL-OGL\" ci=\"20000055\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RF-342\" syi=\"30000385\"/>\r\n    <row c=\"VL-OGL\" ci=\"20000055\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J2V-XY\" syi=\"30000386\"/>\r\n    <row c=\"VL-OGL\" ci=\"20000055\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-JBTR\" syi=\"30000387\"/>\r\n    <row c=\"VL-OGL\" ci=\"20000055\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S-QNXH\" syi=\"30000388\"/>\r\n    <row c=\"VW-JMB\" ci=\"20000056\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S94-X8\" syi=\"30000389\"/>\r\n    <row c=\"VW-JMB\" ci=\"20000056\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J-YQEC\" syi=\"30000390\"/>\r\n    <row c=\"VW-JMB\" ci=\"20000056\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8MX-OR\" syi=\"30000391\"/>\r\n    <row c=\"VW-JMB\" ci=\"20000056\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"97YC-C\" syi=\"30000392\"/>\r\n    <row c=\"VW-JMB\" ci=\"20000056\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-AMD5\" syi=\"30000393\"/>\r\n    <row c=\"VW-JMB\" ci=\"20000056\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U-JC8X\" syi=\"30000394\"/>\r\n    <row c=\"HN5-RL\" ci=\"20000057\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1HH3-E\" syi=\"30000395\"/>\r\n    <row c=\"HN5-RL\" ci=\"20000057\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DUIU-Q\" syi=\"30000396\"/>\r\n    <row c=\"HN5-RL\" ci=\"20000057\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LQH0-H\" syi=\"30000397\"/>\r\n    <row c=\"HN5-RL\" ci=\"20000057\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FRW3-2\" syi=\"30000398\"/>\r\n    <row c=\"HN5-RL\" ci=\"20000057\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9MX-1C\" syi=\"30000399\"/>\r\n    <row c=\"HN5-RL\" ci=\"20000057\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IED-4U\" syi=\"30000400\"/>\r\n    <row c=\"HN5-RL\" ci=\"20000057\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-9EOQ\" syi=\"30000401\"/>\r\n    <row c=\"RO-AZT\" ci=\"20000058\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6F3-TK\" syi=\"30000402\"/>\r\n    <row c=\"RO-AZT\" ci=\"20000058\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2E0P-2\" syi=\"30000403\"/>\r\n    <row c=\"RO-AZT\" ci=\"20000058\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U-ITH5\" syi=\"30000404\"/>\r\n    <row c=\"RO-AZT\" ci=\"20000058\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-4G5L\" syi=\"30000405\"/>\r\n    <row c=\"RO-AZT\" ci=\"20000058\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RB-2EA\" syi=\"30000406\"/>\r\n    <row c=\"RO-AZT\" ci=\"20000058\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZK5-42\" syi=\"30000407\"/>\r\n    <row c=\"KCR-1E\" ci=\"20000059\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YRZ-E4\" syi=\"30000408\"/>\r\n    <row c=\"KCR-1E\" ci=\"20000059\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A3-PAT\" syi=\"30000409\"/>\r\n    <row c=\"KCR-1E\" ci=\"20000059\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H55-2R\" syi=\"30000410\"/>\r\n    <row c=\"KCR-1E\" ci=\"20000059\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P6-DBM\" syi=\"30000411\"/>\r\n    <row c=\"KCR-1E\" ci=\"20000059\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9XI-0X\" syi=\"30000412\"/>\r\n    <row c=\"KCR-1E\" ci=\"20000059\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q8T-MC\" syi=\"30000413\"/>\r\n    <row c=\"FL-TD4\" ci=\"20000060\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-YOJ9\" syi=\"30000414\"/>\r\n    <row c=\"FL-TD4\" ci=\"20000060\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4T4B-L\" syi=\"30000415\"/>\r\n    <row c=\"FL-TD4\" ci=\"20000060\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-JB3H\" syi=\"30000416\"/>\r\n    <row c=\"FL-TD4\" ci=\"20000060\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XBO7-F\" syi=\"30000417\"/>\r\n    <row c=\"FL-TD4\" ci=\"20000060\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FI-449\" syi=\"30000418\"/>\r\n    <row c=\"FL-TD4\" ci=\"20000060\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UA7-U4\" syi=\"30000419\"/>\r\n    <row c=\"B-HLOG\" ci=\"20000061\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VM-QFU\" syi=\"30000420\"/>\r\n    <row c=\"B-HLOG\" ci=\"20000061\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PU-1Z8\" syi=\"30000421\"/>\r\n    <row c=\"B-HLOG\" ci=\"20000061\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IEZW-V\" syi=\"30000422\"/>\r\n    <row c=\"B-HLOG\" ci=\"20000061\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-DXO9\" syi=\"30000423\"/>\r\n    <row c=\"B-HLOG\" ci=\"20000061\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1TS-WN\" syi=\"30000424\"/>\r\n    <row c=\"B-HLOG\" ci=\"20000061\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"16-31U\" syi=\"30000425\"/>\r\n    <row c=\"B-HLOG\" ci=\"20000061\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H472-N\" syi=\"30000426\"/>\r\n    <row c=\"0VFS-G\" ci=\"20000062\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U8MM-3\" syi=\"30000427\"/>\r\n    <row c=\"0VFS-G\" ci=\"20000062\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3C-26I\" syi=\"30000428\"/>\r\n    <row c=\"0VFS-G\" ci=\"20000062\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9K-VDI\" syi=\"30000429\"/>\r\n    <row c=\"0VFS-G\" ci=\"20000062\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-SDU7\" syi=\"30000430\"/>\r\n    <row c=\"0VFS-G\" ci=\"20000062\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-IPWK\" syi=\"30000431\"/>\r\n    <row c=\"0VFS-G\" ci=\"20000062\" r=\"UUA-F4\" ri=\"10000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-KCK3\" syi=\"30000432\"/>\r\n    <row c=\"GJH-1C\" ci=\"20000063\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WU-FHQ\" syi=\"30000433\"/>\r\n    <row c=\"GJH-1C\" ci=\"20000063\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-4DBR\" syi=\"30000434\"/>\r\n    <row c=\"GJH-1C\" ci=\"20000063\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-5UFY\" syi=\"30000435\"/>\r\n    <row c=\"GJH-1C\" ci=\"20000063\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SK42-F\" syi=\"30000436\"/>\r\n    <row c=\"GJH-1C\" ci=\"20000063\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EU9-J3\" syi=\"30000437\"/>\r\n    <row c=\"GJH-1C\" ci=\"20000063\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PQRE-W\" syi=\"30000438\"/>\r\n    <row c=\"GJH-1C\" ci=\"20000063\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OEG-K9\" syi=\"30000439\"/>\r\n    <row c=\"RFQ-8Y\" ci=\"20000064\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-W778\" syi=\"30000440\"/>\r\n    <row c=\"RFQ-8Y\" ci=\"20000064\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DG-8VJ\" syi=\"30000441\"/>\r\n    <row c=\"RFQ-8Y\" ci=\"20000064\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5J4K-9\" syi=\"30000442\"/>\r\n    <row c=\"RFQ-8Y\" ci=\"20000064\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MD-0AW\" syi=\"30000443\"/>\r\n    <row c=\"RFQ-8Y\" ci=\"20000064\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-FGJO\" syi=\"30000444\"/>\r\n    <row c=\"RFQ-8Y\" ci=\"20000064\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1KAW-T\" syi=\"30000445\"/>\r\n    <row c=\"MZ-PA2\" ci=\"20000065\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C5-SUU\" syi=\"30000446\"/>\r\n    <row c=\"MZ-PA2\" ci=\"20000065\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XSUD-1\" syi=\"30000447\"/>\r\n    <row c=\"MZ-PA2\" ci=\"20000065\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3-LJW3\" syi=\"30000448\"/>\r\n    <row c=\"MZ-PA2\" ci=\"20000065\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZLO3-V\" syi=\"30000449\"/>\r\n    <row c=\"MZ-PA2\" ci=\"20000065\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P7MI-T\" syi=\"30000450\"/>\r\n    <row c=\"MZ-PA2\" ci=\"20000065\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JFV-ID\" syi=\"30000451\"/>\r\n    <row c=\"MZ-PA2\" ci=\"20000065\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3-3EZB\" syi=\"30000452\"/>\r\n    <row c=\"MZ-PA2\" ci=\"20000065\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"52CW-6\" syi=\"30000453\"/>\r\n    <row c=\"5F8-PZ\" ci=\"20000066\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-OUGJ\" syi=\"30000454\"/>\r\n    <row c=\"5F8-PZ\" ci=\"20000066\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4NDT-W\" syi=\"30000455\"/>\r\n    <row c=\"5F8-PZ\" ci=\"20000066\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GR-X26\" syi=\"30000456\"/>\r\n    <row c=\"5F8-PZ\" ci=\"20000066\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6OU9-U\" syi=\"30000457\"/>\r\n    <row c=\"5F8-PZ\" ci=\"20000066\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9N-0HF\" syi=\"30000458\"/>\r\n    <row c=\"5F8-PZ\" ci=\"20000066\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U-OVFR\" syi=\"30000459\"/>\r\n    <row c=\"PR-ACX\" ci=\"20000067\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G3D-ZT\" syi=\"30000460\"/>\r\n    <row c=\"PR-ACX\" ci=\"20000067\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D-0UI0\" syi=\"30000461\"/>\r\n    <row c=\"PR-ACX\" ci=\"20000067\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L8-WNE\" syi=\"30000462\"/>\r\n    <row c=\"PR-ACX\" ci=\"20000067\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1-GBVE\" syi=\"30000463\"/>\r\n    <row c=\"PR-ACX\" ci=\"20000067\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GC-LTF\" syi=\"30000464\"/>\r\n    <row c=\"PR-ACX\" ci=\"20000067\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NB-ALM\" syi=\"30000465\"/>\r\n    <row c=\"5P4-QA\" ci=\"20000068\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LT-XI4\" syi=\"30000466\"/>\r\n    <row c=\"5P4-QA\" ci=\"20000068\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-QQ6P\" syi=\"30000467\"/>\r\n    <row c=\"5P4-QA\" ci=\"20000068\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5OJ-G2\" syi=\"30000468\"/>\r\n    <row c=\"5P4-QA\" ci=\"20000068\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-02G0\" syi=\"30000469\"/>\r\n    <row c=\"5P4-QA\" ci=\"20000068\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XA5-TY\" syi=\"30000470\"/>\r\n    <row c=\"5P4-QA\" ci=\"20000068\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-XUZZ\" syi=\"30000471\"/>\r\n    <row c=\"1RG-GU\" ci=\"20000069\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OFVH-Y\" syi=\"30000472\"/>\r\n    <row c=\"1RG-GU\" ci=\"20000069\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2-X0PF\" syi=\"30000473\"/>\r\n    <row c=\"1RG-GU\" ci=\"20000069\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1-PGSG\" syi=\"30000474\"/>\r\n    <row c=\"1RG-GU\" ci=\"20000069\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QLPX-J\" syi=\"30000475\"/>\r\n    <row c=\"1RG-GU\" ci=\"20000069\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-C5TC\" syi=\"30000476\"/>\r\n    <row c=\"1RG-GU\" ci=\"20000069\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RZ-PIY\" syi=\"30000477\"/>\r\n    <row c=\"1RG-GU\" ci=\"20000069\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FR46-E\" syi=\"30000478\"/>\r\n    <row c=\"ZPI-2E\" ci=\"20000070\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SLVP-D\" syi=\"30000479\"/>\r\n    <row c=\"ZPI-2E\" ci=\"20000070\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-G8NO\" syi=\"30000480\"/>\r\n    <row c=\"ZPI-2E\" ci=\"20000070\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QRFJ-Q\" syi=\"30000481\"/>\r\n    <row c=\"ZPI-2E\" ci=\"20000070\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HZFJ-M\" syi=\"30000482\"/>\r\n    <row c=\"ZPI-2E\" ci=\"20000070\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"77S8-E\" syi=\"30000483\"/>\r\n    <row c=\"ZPI-2E\" ci=\"20000070\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FMH-OV\" syi=\"30000484\"/>\r\n    <row c=\"D-95MV\" ci=\"20000071\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TYB-69\" syi=\"30000485\"/>\r\n    <row c=\"D-95MV\" ci=\"20000071\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EDQG-L\" syi=\"30000486\"/>\r\n    <row c=\"D-95MV\" ci=\"20000071\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7-P1JO\" syi=\"30000487\"/>\r\n    <row c=\"D-95MV\" ci=\"20000071\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T-0JWP\" syi=\"30000488\"/>\r\n    <row c=\"D-95MV\" ci=\"20000071\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J-L9MA\" syi=\"30000489\"/>\r\n    <row c=\"D-95MV\" ci=\"20000071\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DX-TAR\" syi=\"30000490\"/>\r\n    <row c=\"D-95MV\" ci=\"20000071\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-7XFN\" syi=\"30000491\"/>\r\n    <row c=\"D-95MV\" ci=\"20000071\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O3-4MN\" syi=\"30000492\"/>\r\n    <row c=\"D-95MV\" ci=\"20000071\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U-MFTL\" syi=\"30000493\"/>\r\n    <row c=\"3R-BJL\" ci=\"20000072\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8FN-GP\" syi=\"30000494\"/>\r\n    <row c=\"3R-BJL\" ci=\"20000072\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FIDY-8\" syi=\"30000495\"/>\r\n    <row c=\"3R-BJL\" ci=\"20000072\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X40H-9\" syi=\"30000496\"/>\r\n    <row c=\"3R-BJL\" ci=\"20000072\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F2W-C6\" syi=\"30000497\"/>\r\n    <row c=\"3R-BJL\" ci=\"20000072\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KZ9T-C\" syi=\"30000498\"/>\r\n    <row c=\"3R-BJL\" ci=\"20000072\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XW2H-V\" syi=\"30000499\"/>\r\n    <row c=\"T875-C\" ci=\"20000073\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F9O-U9\" syi=\"30000500\"/>\r\n    <row c=\"T875-C\" ci=\"20000073\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S-51XG\" syi=\"30000501\"/>\r\n    <row c=\"T875-C\" ci=\"20000073\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-1XVP\" syi=\"30000502\"/>\r\n    <row c=\"T875-C\" ci=\"20000073\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-ACV6\" syi=\"30000503\"/>\r\n    <row c=\"T875-C\" ci=\"20000073\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BOZ1-O\" syi=\"30000504\"/>\r\n    <row c=\"T875-C\" ci=\"20000073\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QIMO-2\" syi=\"30000505\"/>\r\n    <row c=\"T875-C\" ci=\"20000073\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-2Y2Y\" syi=\"30000506\"/>\r\n    <row c=\"T875-C\" ci=\"20000073\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q0J-RH\" syi=\"30000507\"/>\r\n    <row c=\"4SRW-B\" ci=\"20000074\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SAI-T9\" syi=\"30000508\"/>\r\n    <row c=\"4SRW-B\" ci=\"20000074\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IAS-I5\" syi=\"30000509\"/>\r\n    <row c=\"4SRW-B\" ci=\"20000074\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K7S-FF\" syi=\"30000510\"/>\r\n    <row c=\"4SRW-B\" ci=\"20000074\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RT-9WL\" syi=\"30000511\"/>\r\n    <row c=\"4SRW-B\" ci=\"20000074\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O5Q7-U\" syi=\"30000512\"/>\r\n    <row c=\"4SRW-B\" ci=\"20000074\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"62O-UE\" syi=\"30000513\"/>\r\n    <row c=\"HOV-VI\" ci=\"20000075\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U0W-DR\" syi=\"30000514\"/>\r\n    <row c=\"HOV-VI\" ci=\"20000075\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SY-UWN\" syi=\"30000515\"/>\r\n    <row c=\"HOV-VI\" ci=\"20000075\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DX-DFJ\" syi=\"30000516\"/>\r\n    <row c=\"HOV-VI\" ci=\"20000075\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-31TE\" syi=\"30000517\"/>\r\n    <row c=\"HOV-VI\" ci=\"20000075\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DVWV-3\" syi=\"30000518\"/>\r\n    <row c=\"HOV-VI\" ci=\"20000075\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KE-0FB\" syi=\"30000519\"/>\r\n    <row c=\"HOV-VI\" ci=\"20000075\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I-9GI1\" syi=\"30000520\"/>\r\n    <row c=\"NZU8-G\" ci=\"20000076\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W6P-7U\" syi=\"30000521\"/>\r\n    <row c=\"NZU8-G\" ci=\"20000076\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0IF-26\" syi=\"30000522\"/>\r\n    <row c=\"NZU8-G\" ci=\"20000076\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-93YV\" syi=\"30000523\"/>\r\n    <row c=\"NZU8-G\" ci=\"20000076\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E51-JE\" syi=\"30000524\"/>\r\n    <row c=\"NZU8-G\" ci=\"20000076\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7-A6XV\" syi=\"30000525\"/>\r\n    <row c=\"NZU8-G\" ci=\"20000076\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QXE-1N\" syi=\"30000526\"/>\r\n    <row c=\"NZU8-G\" ci=\"20000076\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U69-YC\" syi=\"30000527\"/>\r\n    <row c=\"NZU8-G\" ci=\"20000076\" r=\"Detorid\" ri=\"10000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-L7PE\" syi=\"30000528\"/>\r\n    <row c=\"0FC-ZX\" ci=\"20000077\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MKIG-5\" syi=\"30000529\"/>\r\n    <row c=\"0FC-ZX\" ci=\"20000077\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YHEN-G\" syi=\"30000530\"/>\r\n    <row c=\"0FC-ZX\" ci=\"20000077\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-JCUS\" syi=\"30000531\"/>\r\n    <row c=\"0FC-ZX\" ci=\"20000077\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W-QN5X\" syi=\"30000532\"/>\r\n    <row c=\"0FC-ZX\" ci=\"20000077\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LP1M-Q\" syi=\"30000533\"/>\r\n    <row c=\"0FC-ZX\" ci=\"20000077\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"30-YOU\" syi=\"30000534\"/>\r\n    <row c=\"0FC-ZX\" ci=\"20000077\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"384-IN\" syi=\"30000535\"/>\r\n    <row c=\"0FC-ZX\" ci=\"20000077\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4F89-U\" syi=\"30000536\"/>\r\n    <row c=\"0FC-ZX\" ci=\"20000077\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G063-U\" syi=\"30000537\"/>\r\n    <row c=\"0FC-ZX\" ci=\"20000077\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J7-BDX\" syi=\"30000538\"/>\r\n    <row c=\"AC-RON\" ci=\"20000078\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MLQ-O9\" syi=\"30000539\"/>\r\n    <row c=\"AC-RON\" ci=\"20000078\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-FM3P\" syi=\"30000540\"/>\r\n    <row c=\"AC-RON\" ci=\"20000078\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-ARMF\" syi=\"30000541\"/>\r\n    <row c=\"AC-RON\" ci=\"20000078\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8-OZU1\" syi=\"30000542\"/>\r\n    <row c=\"AC-RON\" ci=\"20000078\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0TYR-T\" syi=\"30000543\"/>\r\n    <row c=\"AC-RON\" ci=\"20000078\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GM-50Y\" syi=\"30000544\"/>\r\n    <row c=\"AC-RON\" ci=\"20000078\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G9L-LP\" syi=\"30000545\"/>\r\n    <row c=\"RF9-ZU\" ci=\"20000079\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MWA-5Q\" syi=\"30000546\"/>\r\n    <row c=\"RF9-ZU\" ci=\"20000079\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-HHTH\" syi=\"30000547\"/>\r\n    <row c=\"RF9-ZU\" ci=\"20000079\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JQU-KY\" syi=\"30000548\"/>\r\n    <row c=\"RF9-ZU\" ci=\"20000079\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UY5A-D\" syi=\"30000549\"/>\r\n    <row c=\"RF9-ZU\" ci=\"20000079\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-62I5\" syi=\"30000550\"/>\r\n    <row c=\"RF9-ZU\" ci=\"20000079\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZH-GKG\" syi=\"30000551\"/>\r\n    <row c=\"DJ-XCW\" ci=\"20000080\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GPLB-C\" syi=\"30000552\"/>\r\n    <row c=\"DJ-XCW\" ci=\"20000080\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GGE-5Q\" syi=\"30000553\"/>\r\n    <row c=\"DJ-XCW\" ci=\"20000080\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5E-CMA\" syi=\"30000554\"/>\r\n    <row c=\"DJ-XCW\" ci=\"20000080\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U104-3\" syi=\"30000555\"/>\r\n    <row c=\"DJ-XCW\" ci=\"20000080\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M3-KAQ\" syi=\"30000556\"/>\r\n    <row c=\"DJ-XCW\" ci=\"20000080\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6-L4YC\" syi=\"30000557\"/>\r\n    <row c=\"3GK-WS\" ci=\"20000081\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UM-SCG\" syi=\"30000558\"/>\r\n    <row c=\"3GK-WS\" ci=\"20000081\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-3FOY\" syi=\"30000559\"/>\r\n    <row c=\"3GK-WS\" ci=\"20000081\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OAIG-0\" syi=\"30000560\"/>\r\n    <row c=\"3GK-WS\" ci=\"20000081\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UZ-QXW\" syi=\"30000561\"/>\r\n    <row c=\"3GK-WS\" ci=\"20000081\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5DE-QS\" syi=\"30000562\"/>\r\n    <row c=\"3GK-WS\" ci=\"20000081\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R0-DMM\" syi=\"30000563\"/>\r\n    <row c=\"3GK-WS\" ci=\"20000081\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5Q65-4\" syi=\"30000564\"/>\r\n    <row c=\"5ZR-29\" ci=\"20000082\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SR-4EK\" syi=\"30000565\"/>\r\n    <row c=\"5ZR-29\" ci=\"20000082\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0RI-OV\" syi=\"30000566\"/>\r\n    <row c=\"5ZR-29\" ci=\"20000082\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-LTXS\" syi=\"30000567\"/>\r\n    <row c=\"5ZR-29\" ci=\"20000082\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C0O6-K\" syi=\"30000568\"/>\r\n    <row c=\"5ZR-29\" ci=\"20000082\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HD-AJ7\" syi=\"30000569\"/>\r\n    <row c=\"5ZR-29\" ci=\"20000082\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G9NE-B\" syi=\"30000570\"/>\r\n    <row c=\"5ZR-29\" ci=\"20000082\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SJJ-4F\" syi=\"30000571\"/>\r\n    <row c=\"J-9M7D\" ci=\"20000083\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-QQ5N\" syi=\"30000572\"/>\r\n    <row c=\"J-9M7D\" ci=\"20000083\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1-7B6D\" syi=\"30000573\"/>\r\n    <row c=\"J-9M7D\" ci=\"20000083\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H6-EYX\" syi=\"30000574\"/>\r\n    <row c=\"J-9M7D\" ci=\"20000083\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U-HVIX\" syi=\"30000575\"/>\r\n    <row c=\"J-9M7D\" ci=\"20000083\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-EFLU\" syi=\"30000576\"/>\r\n    <row c=\"J-9M7D\" ci=\"20000083\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EIH-IU\" syi=\"30000577\"/>\r\n    <row c=\"R-M719\" ci=\"20000084\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-EM4Q\" syi=\"30000578\"/>\r\n    <row c=\"R-M719\" ci=\"20000084\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1L-OEK\" syi=\"30000579\"/>\r\n    <row c=\"R-M719\" ci=\"20000084\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MN-Q26\" syi=\"30000580\"/>\r\n    <row c=\"R-M719\" ci=\"20000084\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5H-SM2\" syi=\"30000581\"/>\r\n    <row c=\"R-M719\" ci=\"20000084\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-OS2A\" syi=\"30000582\"/>\r\n    <row c=\"R-M719\" ci=\"20000084\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YI-GV6\" syi=\"30000583\"/>\r\n    <row c=\"R-M719\" ci=\"20000084\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SO-X5L\" syi=\"30000584\"/>\r\n    <row c=\"R-M719\" ci=\"20000084\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XQS-GZ\" syi=\"30000585\"/>\r\n    <row c=\"R-M719\" ci=\"20000084\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-GQHN\" syi=\"30000586\"/>\r\n    <row c=\"5Y1E-3\" ci=\"20000085\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-4JOO\" syi=\"30000587\"/>\r\n    <row c=\"5Y1E-3\" ci=\"20000085\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TP7-KE\" syi=\"30000588\"/>\r\n    <row c=\"5Y1E-3\" ci=\"20000085\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R4N-LD\" syi=\"30000589\"/>\r\n    <row c=\"5Y1E-3\" ci=\"20000085\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3Q-VZA\" syi=\"30000590\"/>\r\n    <row c=\"5Y1E-3\" ci=\"20000085\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-MBRT\" syi=\"30000591\"/>\r\n    <row c=\"5Y1E-3\" ci=\"20000085\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HPBE-D\" syi=\"30000592\"/>\r\n    <row c=\"760-9C\" ci=\"20000086\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GRHS-B\" syi=\"30000593\"/>\r\n    <row c=\"760-9C\" ci=\"20000086\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J-RXYN\" syi=\"30000594\"/>\r\n    <row c=\"760-9C\" ci=\"20000086\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DUO-51\" syi=\"30000595\"/>\r\n    <row c=\"760-9C\" ci=\"20000086\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"07-SLO\" syi=\"30000596\"/>\r\n    <row c=\"760-9C\" ci=\"20000086\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-A8FS\" syi=\"30000597\"/>\r\n    <row c=\"760-9C\" ci=\"20000086\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GPD5-0\" syi=\"30000598\"/>\r\n    <row c=\"4-QV2L\" ci=\"20000087\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LKZ-CY\" syi=\"30000599\"/>\r\n    <row c=\"4-QV2L\" ci=\"20000087\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F5M-CC\" syi=\"30000600\"/>\r\n    <row c=\"4-QV2L\" ci=\"20000087\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TZE-UB\" syi=\"30000601\"/>\r\n    <row c=\"4-QV2L\" ci=\"20000087\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WRL4-2\" syi=\"30000602\"/>\r\n    <row c=\"4-QV2L\" ci=\"20000087\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V7G-RL\" syi=\"30000603\"/>\r\n    <row c=\"4-QV2L\" ci=\"20000087\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XEN7-0\" syi=\"30000604\"/>\r\n    <row c=\"GU-JZ1\" ci=\"20000088\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-Z9KJ\" syi=\"30000605\"/>\r\n    <row c=\"GU-JZ1\" ci=\"20000088\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7K-NSE\" syi=\"30000606\"/>\r\n    <row c=\"GU-JZ1\" ci=\"20000088\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OR-7N5\" syi=\"30000607\"/>\r\n    <row c=\"GU-JZ1\" ci=\"20000088\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JEQG-7\" syi=\"30000608\"/>\r\n    <row c=\"GU-JZ1\" ci=\"20000088\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5NQI-E\" syi=\"30000609\"/>\r\n    <row c=\"GU-JZ1\" ci=\"20000088\" r=\"Wicked Creek\" ri=\"10000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-WQDP\" syi=\"30000610\"/>\r\n    <row c=\"BVA-YH\" ci=\"20000089\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2-2EWC\" syi=\"30000611\"/>\r\n    <row c=\"BVA-YH\" ci=\"20000089\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E1W-TB\" syi=\"30000612\"/>\r\n    <row c=\"BVA-YH\" ci=\"20000089\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D-6H64\" syi=\"30000613\"/>\r\n    <row c=\"BVA-YH\" ci=\"20000089\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8-BIE3\" syi=\"30000614\"/>\r\n    <row c=\"BVA-YH\" ci=\"20000089\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LMM7-L\" syi=\"30000615\"/>\r\n    <row c=\"BVA-YH\" ci=\"20000089\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"995-3G\" syi=\"30000616\"/>\r\n    <row c=\"VS-8P0\" ci=\"20000090\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W2T-TR\" syi=\"30000617\"/>\r\n    <row c=\"VS-8P0\" ci=\"20000090\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-UEN6\" syi=\"30000618\"/>\r\n    <row c=\"VS-8P0\" ci=\"20000090\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BLMX-B\" syi=\"30000619\"/>\r\n    <row c=\"VS-8P0\" ci=\"20000090\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-CNUD\" syi=\"30000620\"/>\r\n    <row c=\"VS-8P0\" ci=\"20000090\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YE1-9S\" syi=\"30000621\"/>\r\n    <row c=\"VS-8P0\" ci=\"20000090\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IVP-KA\" syi=\"30000622\"/>\r\n    <row c=\"VS-8P0\" ci=\"20000090\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"04EI-U\" syi=\"30000623\"/>\r\n    <row c=\"5HN-S5\" ci=\"20000091\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-T6BT\" syi=\"30000624\"/>\r\n    <row c=\"5HN-S5\" ci=\"20000091\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VK-A5G\" syi=\"30000625\"/>\r\n    <row c=\"5HN-S5\" ci=\"20000091\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I6-SYN\" syi=\"30000626\"/>\r\n    <row c=\"5HN-S5\" ci=\"20000091\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-5TN1\" syi=\"30000627\"/>\r\n    <row c=\"5HN-S5\" ci=\"20000091\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8-SPNN\" syi=\"30000628\"/>\r\n    <row c=\"5HN-S5\" ci=\"20000091\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U-QMOA\" syi=\"30000629\"/>\r\n    <row c=\"Y-JSM8\" ci=\"20000092\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4S0-NP\" syi=\"30000630\"/>\r\n    <row c=\"Y-JSM8\" ci=\"20000092\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K-RMI5\" syi=\"30000631\"/>\r\n    <row c=\"Y-JSM8\" ci=\"20000092\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-6YHJ\" syi=\"30000632\"/>\r\n    <row c=\"Y-JSM8\" ci=\"20000092\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M53-1V\" syi=\"30000633\"/>\r\n    <row c=\"Y-JSM8\" ci=\"20000092\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E5T-CS\" syi=\"30000634\"/>\r\n    <row c=\"Y-JSM8\" ci=\"20000092\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W4C8-Q\" syi=\"30000635\"/>\r\n    <row c=\"Y-JSM8\" ci=\"20000092\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I-2705\" syi=\"30000636\"/>\r\n    <row c=\"VSC-W9\" ci=\"20000093\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5F-MG1\" syi=\"30000637\"/>\r\n    <row c=\"VSC-W9\" ci=\"20000093\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P7-45V\" syi=\"30000638\"/>\r\n    <row c=\"VSC-W9\" ci=\"20000093\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-MCP8\" syi=\"30000639\"/>\r\n    <row c=\"VSC-W9\" ci=\"20000093\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JZ-B5Y\" syi=\"30000640\"/>\r\n    <row c=\"VSC-W9\" ci=\"20000093\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TPG-DD\" syi=\"30000641\"/>\r\n    <row c=\"VSC-W9\" ci=\"20000093\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NIF-JE\" syi=\"30000642\"/>\r\n    <row c=\"FQ-COP\" ci=\"20000094\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BTLH-I\" syi=\"30000643\"/>\r\n    <row c=\"FQ-COP\" ci=\"20000094\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U93O-A\" syi=\"30000644\"/>\r\n    <row c=\"FQ-COP\" ci=\"20000094\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0LY-W1\" syi=\"30000645\"/>\r\n    <row c=\"FQ-COP\" ci=\"20000094\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4YO-QK\" syi=\"30000646\"/>\r\n    <row c=\"FQ-COP\" ci=\"20000094\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LJ-RJK\" syi=\"30000647\"/>\r\n    <row c=\"FQ-COP\" ci=\"20000094\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8-VC6H\" syi=\"30000648\"/>\r\n    <row c=\"MRC-29\" ci=\"20000095\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LQ-01M\" syi=\"30000649\"/>\r\n    <row c=\"MRC-29\" ci=\"20000095\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NG-M8K\" syi=\"30000650\"/>\r\n    <row c=\"MRC-29\" ci=\"20000095\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RV5-TT\" syi=\"30000651\"/>\r\n    <row c=\"MRC-29\" ci=\"20000095\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8OYE-Z\" syi=\"30000652\"/>\r\n    <row c=\"MRC-29\" ci=\"20000095\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K85Y-6\" syi=\"30000653\"/>\r\n    <row c=\"MRC-29\" ci=\"20000095\" r=\"Cache\" ri=\"10000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PKN-NJ\" syi=\"30000654\"/>\r\n    <row c=\"51ZT-6\" ci=\"20000096\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EIN-QG\" syi=\"30000655\"/>\r\n    <row c=\"51ZT-6\" ci=\"20000096\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ARG-3R\" syi=\"30000656\"/>\r\n    <row c=\"51ZT-6\" ci=\"20000096\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S-E6ES\" syi=\"30000657\"/>\r\n    <row c=\"51ZT-6\" ci=\"20000096\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R-3FBU\" syi=\"30000658\"/>\r\n    <row c=\"51ZT-6\" ci=\"20000096\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K7-LDX\" syi=\"30000659\"/>\r\n    <row c=\"51ZT-6\" ci=\"20000096\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U-IVGH\" syi=\"30000660\"/>\r\n    <row c=\"51ZT-6\" ci=\"20000096\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P-N5N9\" syi=\"30000661\"/>\r\n    <row c=\"51ZT-6\" ci=\"20000096\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JMH-PT\" syi=\"30000662\"/>\r\n    <row c=\"51ZT-6\" ci=\"20000096\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DE-A7P\" syi=\"30000663\"/>\r\n    <row c=\"51ZT-6\" ci=\"20000096\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X9V-15\" syi=\"30000664\"/>\r\n    <row c=\"51ZT-6\" ci=\"20000096\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K212-A\" syi=\"30000665\"/>\r\n    <row c=\"4YFT-F\" ci=\"20000097\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-5FDA\" syi=\"30000666\"/>\r\n    <row c=\"4YFT-F\" ci=\"20000097\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S1-XTL\" syi=\"30000667\"/>\r\n    <row c=\"4YFT-F\" ci=\"20000097\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9PX2-F\" syi=\"30000668\"/>\r\n    <row c=\"4YFT-F\" ci=\"20000097\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N3-JBX\" syi=\"30000669\"/>\r\n    <row c=\"4YFT-F\" ci=\"20000097\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SG-75T\" syi=\"30000670\"/>\r\n    <row c=\"4YFT-F\" ci=\"20000097\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GN-PDU\" syi=\"30000671\"/>\r\n    <row c=\"P-I9PF\" ci=\"20000098\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AZ3F-N\" syi=\"30000672\"/>\r\n    <row c=\"P-I9PF\" ci=\"20000098\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RNM-Y6\" syi=\"30000673\"/>\r\n    <row c=\"P-I9PF\" ci=\"20000098\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-KDY2\" syi=\"30000674\"/>\r\n    <row c=\"P-I9PF\" ci=\"20000098\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FYD-TO\" syi=\"30000675\"/>\r\n    <row c=\"P-I9PF\" ci=\"20000098\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ER2O-Y\" syi=\"30000676\"/>\r\n    <row c=\"P-I9PF\" ci=\"20000098\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J2-PZ6\" syi=\"30000677\"/>\r\n    <row c=\"ENP-SH\" ci=\"20000099\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XV-MWG\" syi=\"30000678\"/>\r\n    <row c=\"ENP-SH\" ci=\"20000099\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OAQY-M\" syi=\"30000679\"/>\r\n    <row c=\"ENP-SH\" ci=\"20000099\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1V-LI2\" syi=\"30000680\"/>\r\n    <row c=\"ENP-SH\" ci=\"20000099\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M9-MLR\" syi=\"30000681\"/>\r\n    <row c=\"ENP-SH\" ci=\"20000099\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-K2T7\" syi=\"30000682\"/>\r\n    <row c=\"ENP-SH\" ci=\"20000099\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LBC-AW\" syi=\"30000683\"/>\r\n    <row c=\"ENP-SH\" ci=\"20000099\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2-KPW6\" syi=\"30000684\"/>\r\n    <row c=\"Y-M7ML\" ci=\"20000100\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H5N-V7\" syi=\"30000685\"/>\r\n    <row c=\"Y-M7ML\" ci=\"20000100\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HQ-Q1Q\" syi=\"30000686\"/>\r\n    <row c=\"Y-M7ML\" ci=\"20000100\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WHI-61\" syi=\"30000687\"/>\r\n    <row c=\"Y-M7ML\" ci=\"20000100\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZFJH-T\" syi=\"30000688\"/>\r\n    <row c=\"Y-M7ML\" ci=\"20000100\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I-1B7X\" syi=\"30000689\"/>\r\n    <row c=\"Y-M7ML\" ci=\"20000100\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G15Z-W\" syi=\"30000690\"/>\r\n    <row c=\"QI1M-Q\" ci=\"20000101\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AH8-Q7\" syi=\"30000691\"/>\r\n    <row c=\"QI1M-Q\" ci=\"20000101\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SD4A-2\" syi=\"30000692\"/>\r\n    <row c=\"QI1M-Q\" ci=\"20000101\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U6K-RG\" syi=\"30000693\"/>\r\n    <row c=\"QI1M-Q\" ci=\"20000101\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-S9YY\" syi=\"30000694\"/>\r\n    <row c=\"QI1M-Q\" ci=\"20000101\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F2-NXA\" syi=\"30000695\"/>\r\n    <row c=\"QI1M-Q\" ci=\"20000101\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NSBE-L\" syi=\"30000696\"/>\r\n    <row c=\"7VJ-7M\" ci=\"20000102\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8Q-T7B\" syi=\"30000697\"/>\r\n    <row c=\"7VJ-7M\" ci=\"20000102\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WV0D-1\" syi=\"30000698\"/>\r\n    <row c=\"7VJ-7M\" ci=\"20000102\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZNF-OK\" syi=\"30000699\"/>\r\n    <row c=\"7VJ-7M\" ci=\"20000102\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C8-7AS\" syi=\"30000700\"/>\r\n    <row c=\"7VJ-7M\" ci=\"20000102\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4E-EZS\" syi=\"30000701\"/>\r\n    <row c=\"7VJ-7M\" ci=\"20000102\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-80UA\" syi=\"30000702\"/>\r\n    <row c=\"02QH-A\" ci=\"20000103\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U2-28D\" syi=\"30000703\"/>\r\n    <row c=\"02QH-A\" ci=\"20000103\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LQ-OAI\" syi=\"30000704\"/>\r\n    <row c=\"02QH-A\" ci=\"20000103\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-MQQ7\" syi=\"30000705\"/>\r\n    <row c=\"02QH-A\" ci=\"20000103\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6-EQYE\" syi=\"30000706\"/>\r\n    <row c=\"02QH-A\" ci=\"20000103\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"03-OR2\" syi=\"30000707\"/>\r\n    <row c=\"02QH-A\" ci=\"20000103\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JLO-Z3\" syi=\"30000708\"/>\r\n    <row c=\"WQZ8-4\" ci=\"20000104\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IAK-JW\" syi=\"30000709\"/>\r\n    <row c=\"WQZ8-4\" ci=\"20000104\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KZFV-4\" syi=\"30000710\"/>\r\n    <row c=\"WQZ8-4\" ci=\"20000104\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WO-GC0\" syi=\"30000711\"/>\r\n    <row c=\"WQZ8-4\" ci=\"20000104\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RYC-19\" syi=\"30000712\"/>\r\n    <row c=\"WQZ8-4\" ci=\"20000104\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X2-ZA5\" syi=\"30000713\"/>\r\n    <row c=\"WQZ8-4\" ci=\"20000104\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"28Y9-P\" syi=\"30000714\"/>\r\n    <row c=\"DITJ-X\" ci=\"20000105\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q4C-S5\" syi=\"30000715\"/>\r\n    <row c=\"DITJ-X\" ci=\"20000105\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-1UJC\" syi=\"30000716\"/>\r\n    <row c=\"DITJ-X\" ci=\"20000105\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-NA5H\" syi=\"30000717\"/>\r\n    <row c=\"DITJ-X\" ci=\"20000105\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-CM8I\" syi=\"30000718\"/>\r\n    <row c=\"DITJ-X\" ci=\"20000105\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZDB-HT\" syi=\"30000719\"/>\r\n    <row c=\"DITJ-X\" ci=\"20000105\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1QZ-Y9\" syi=\"30000720\"/>\r\n    <row c=\"YCM-AI\" ci=\"20000106\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HJ-BCH\" syi=\"30000721\"/>\r\n    <row c=\"YCM-AI\" ci=\"20000106\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QPTT-F\" syi=\"30000722\"/>\r\n    <row c=\"YCM-AI\" ci=\"20000106\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9M-M0P\" syi=\"30000723\"/>\r\n    <row c=\"YCM-AI\" ci=\"20000106\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9BC-EB\" syi=\"30000724\"/>\r\n    <row c=\"YCM-AI\" ci=\"20000106\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WFFE-4\" syi=\"30000725\"/>\r\n    <row c=\"YCM-AI\" ci=\"20000106\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"71-UTX\" syi=\"30000726\"/>\r\n    <row c=\"YCM-AI\" ci=\"20000106\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PU-UMM\" syi=\"30000727\"/>\r\n    <row c=\"YCM-AI\" ci=\"20000106\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6-KPAB\" syi=\"30000728\"/>\r\n    <row c=\"YCM-AI\" ci=\"20000106\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y5-E1U\" syi=\"30000729\"/>\r\n    <row c=\"CN5-F2\" ci=\"20000107\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-43BW\" syi=\"30000730\"/>\r\n    <row c=\"CN5-F2\" ci=\"20000107\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8CN-CH\" syi=\"30000731\"/>\r\n    <row c=\"CN5-F2\" ci=\"20000107\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-F6DQ\" syi=\"30000732\"/>\r\n    <row c=\"CN5-F2\" ci=\"20000107\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3S-6VU\" syi=\"30000733\"/>\r\n    <row c=\"CN5-F2\" ci=\"20000107\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1-7HVI\" syi=\"30000734\"/>\r\n    <row c=\"CN5-F2\" ci=\"20000107\" r=\"Scalding Pass\" ri=\"10000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OX-S7P\" syi=\"30000735\"/>\r\n    <row c=\"IV-LWJ\" ci=\"20000108\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KDG-TA\" syi=\"30000736\"/>\r\n    <row c=\"IV-LWJ\" ci=\"20000108\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KD-KPR\" syi=\"30000737\"/>\r\n    <row c=\"IV-LWJ\" ci=\"20000108\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PT-21C\" syi=\"30000738\"/>\r\n    <row c=\"IV-LWJ\" ci=\"20000108\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z182-R\" syi=\"30000739\"/>\r\n    <row c=\"IV-LWJ\" ci=\"20000108\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EKPB-3\" syi=\"30000740\"/>\r\n    <row c=\"IV-LWJ\" ci=\"20000108\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5M2-KP\" syi=\"30000741\"/>\r\n    <row c=\"IV-LWJ\" ci=\"20000108\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TK-DLH\" syi=\"30000742\"/>\r\n    <row c=\"U-EUG7\" ci=\"20000109\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C8H5-X\" syi=\"30000743\"/>\r\n    <row c=\"U-EUG7\" ci=\"20000109\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-7LAI\" syi=\"30000744\"/>\r\n    <row c=\"U-EUG7\" ci=\"20000109\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7L3-JS\" syi=\"30000745\"/>\r\n    <row c=\"U-EUG7\" ci=\"20000109\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WF4C-8\" syi=\"30000746\"/>\r\n    <row c=\"U-EUG7\" ci=\"20000109\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TZN-2V\" syi=\"30000747\"/>\r\n    <row c=\"U-EUG7\" ci=\"20000109\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8EF-58\" syi=\"30000748\"/>\r\n    <row c=\"U-EUG7\" ci=\"20000109\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4DS-OI\" syi=\"30000749\"/>\r\n    <row c=\"E-95ID\" ci=\"20000110\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XQP-9C\" syi=\"30000750\"/>\r\n    <row c=\"E-95ID\" ci=\"20000110\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W-6GBI\" syi=\"30000751\"/>\r\n    <row c=\"E-95ID\" ci=\"20000110\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XKH-6O\" syi=\"30000752\"/>\r\n    <row c=\"E-95ID\" ci=\"20000110\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S0U-MO\" syi=\"30000753\"/>\r\n    <row c=\"E-95ID\" ci=\"20000110\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F39H-1\" syi=\"30000754\"/>\r\n    <row c=\"E-95ID\" ci=\"20000110\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-QXXK\" syi=\"30000755\"/>\r\n    <row c=\"8-4EFQ\" ci=\"20000111\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2-Q4YG\" syi=\"30000756\"/>\r\n    <row c=\"8-4EFQ\" ci=\"20000111\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2JT-3Q\" syi=\"30000757\"/>\r\n    <row c=\"8-4EFQ\" ci=\"20000111\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I3CR-F\" syi=\"30000758\"/>\r\n    <row c=\"8-4EFQ\" ci=\"20000111\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7-JT09\" syi=\"30000759\"/>\r\n    <row c=\"8-4EFQ\" ci=\"20000111\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AGCP-I\" syi=\"30000760\"/>\r\n    <row c=\"8-4EFQ\" ci=\"20000111\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M4-GJ6\" syi=\"30000761\"/>\r\n    <row c=\"8-4EFQ\" ci=\"20000111\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-2PQU\" syi=\"30000762\"/>\r\n    <row c=\"8-4EFQ\" ci=\"20000111\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SN9-3Z\" syi=\"30000763\"/>\r\n    <row c=\"Z-ONUI\" ci=\"20000112\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6BJH-3\" syi=\"30000764\"/>\r\n    <row c=\"Z-ONUI\" ci=\"20000112\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U-UTU9\" syi=\"30000765\"/>\r\n    <row c=\"Z-ONUI\" ci=\"20000112\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1TG7-W\" syi=\"30000766\"/>\r\n    <row c=\"Z-ONUI\" ci=\"20000112\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QYD-WK\" syi=\"30000767\"/>\r\n    <row c=\"Z-ONUI\" ci=\"20000112\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R959-U\" syi=\"30000768\"/>\r\n    <row c=\"Z-ONUI\" ci=\"20000112\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-TJ0G\" syi=\"30000769\"/>\r\n    <row c=\"QA-P7J\" ci=\"20000113\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"88A-RA\" syi=\"30000770\"/>\r\n    <row c=\"QA-P7J\" ci=\"20000113\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8G-2FP\" syi=\"30000771\"/>\r\n    <row c=\"QA-P7J\" ci=\"20000113\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-J6MT\" syi=\"30000772\"/>\r\n    <row c=\"QA-P7J\" ci=\"20000113\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"78-0R6\" syi=\"30000773\"/>\r\n    <row c=\"QA-P7J\" ci=\"20000113\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MSG-BZ\" syi=\"30000774\"/>\r\n    <row c=\"QA-P7J\" ci=\"20000113\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8-WYQZ\" syi=\"30000775\"/>\r\n    <row c=\"QA-P7J\" ci=\"20000113\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4M-QXK\" syi=\"30000776\"/>\r\n    <row c=\"UR-HG4\" ci=\"20000114\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X5-0EM\" syi=\"30000777\"/>\r\n    <row c=\"UR-HG4\" ci=\"20000114\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-EURJ\" syi=\"30000778\"/>\r\n    <row c=\"UR-HG4\" ci=\"20000114\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SHBF-V\" syi=\"30000779\"/>\r\n    <row c=\"UR-HG4\" ci=\"20000114\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RERZ-L\" syi=\"30000780\"/>\r\n    <row c=\"UR-HG4\" ci=\"20000114\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0UBC-R\" syi=\"30000781\"/>\r\n    <row c=\"UR-HG4\" ci=\"20000114\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3U-48K\" syi=\"30000782\"/>\r\n    <row c=\"0YMH-Q\" ci=\"20000115\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EFM-C4\" syi=\"30000783\"/>\r\n    <row c=\"0YMH-Q\" ci=\"20000115\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YPW-M4\" syi=\"30000784\"/>\r\n    <row c=\"0YMH-Q\" ci=\"20000115\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q7-FZ8\" syi=\"30000785\"/>\r\n    <row c=\"0YMH-Q\" ci=\"20000115\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L5-UWT\" syi=\"30000786\"/>\r\n    <row c=\"0YMH-Q\" ci=\"20000115\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"74-VZA\" syi=\"30000787\"/>\r\n    <row c=\"0YMH-Q\" ci=\"20000115\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I-1QKL\" syi=\"30000788\"/>\r\n    <row c=\"0EA3-8\" ci=\"20000116\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GK5Z-T\" syi=\"30000789\"/>\r\n    <row c=\"0EA3-8\" ci=\"20000116\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RQN-OO\" syi=\"30000790\"/>\r\n    <row c=\"0EA3-8\" ci=\"20000116\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"67Y-NR\" syi=\"30000791\"/>\r\n    <row c=\"0EA3-8\" ci=\"20000116\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GDHN-K\" syi=\"30000792\"/>\r\n    <row c=\"0EA3-8\" ci=\"20000116\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QTME-D\" syi=\"30000793\"/>\r\n    <row c=\"0EA3-8\" ci=\"20000116\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A24L-V\" syi=\"30000794\"/>\r\n    <row c=\"0EA3-8\" ci=\"20000116\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4CJ-AC\" syi=\"30000795\"/>\r\n    <row c=\"0-YMZM\" ci=\"20000117\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EUU-4N\" syi=\"30000796\"/>\r\n    <row c=\"0-YMZM\" ci=\"20000117\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-3HS5\" syi=\"30000797\"/>\r\n    <row c=\"0-YMZM\" ci=\"20000117\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3AE-CP\" syi=\"30000798\"/>\r\n    <row c=\"0-YMZM\" ci=\"20000117\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-VG7A\" syi=\"30000799\"/>\r\n    <row c=\"0-YMZM\" ci=\"20000117\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9OLQ-6\" syi=\"30000800\"/>\r\n    <row c=\"0-YMZM\" ci=\"20000117\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MOCW-2\" syi=\"30000801\"/>\r\n    <row c=\"N5V-Y0\" ci=\"20000118\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZO-4AR\" syi=\"30000802\"/>\r\n    <row c=\"N5V-Y0\" ci=\"20000118\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MJ-LGH\" syi=\"30000803\"/>\r\n    <row c=\"N5V-Y0\" ci=\"20000118\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F2A-GX\" syi=\"30000804\"/>\r\n    <row c=\"N5V-Y0\" ci=\"20000118\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RD-FWY\" syi=\"30000805\"/>\r\n    <row c=\"N5V-Y0\" ci=\"20000118\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VBPT-T\" syi=\"30000806\"/>\r\n    <row c=\"N5V-Y0\" ci=\"20000118\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KS-1TS\" syi=\"30000807\"/>\r\n    <row c=\"N-LY4R\" ci=\"20000119\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X0-6LH\" syi=\"30000808\"/>\r\n    <row c=\"N-LY4R\" ci=\"20000119\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FN0-QS\" syi=\"30000809\"/>\r\n    <row c=\"N-LY4R\" ci=\"20000119\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F3-8X2\" syi=\"30000810\"/>\r\n    <row c=\"N-LY4R\" ci=\"20000119\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N7-BIY\" syi=\"30000811\"/>\r\n    <row c=\"N-LY4R\" ci=\"20000119\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TTP-2B\" syi=\"30000812\"/>\r\n    <row c=\"N-LY4R\" ci=\"20000119\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LVL-GZ\" syi=\"30000813\"/>\r\n    <row c=\"V2S-RH\" ci=\"20000120\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EJ48-O\" syi=\"30000814\"/>\r\n    <row c=\"V2S-RH\" ci=\"20000120\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ROJ-B0\" syi=\"30000815\"/>\r\n    <row c=\"V2S-RH\" ci=\"20000120\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DFH-V5\" syi=\"30000816\"/>\r\n    <row c=\"V2S-RH\" ci=\"20000120\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-II34\" syi=\"30000817\"/>\r\n    <row c=\"V2S-RH\" ci=\"20000120\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4LB-EL\" syi=\"30000818\"/>\r\n    <row c=\"V2S-RH\" ci=\"20000120\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UDE-FX\" syi=\"30000819\"/>\r\n    <row c=\"V2S-RH\" ci=\"20000120\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5IH-GL\" syi=\"30000820\"/>\r\n    <row c=\"V2S-RH\" ci=\"20000120\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C1G-XC\" syi=\"30000821\"/>\r\n    <row c=\"V2S-RH\" ci=\"20000120\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"04-EHC\" syi=\"30000822\"/>\r\n    <row c=\"V2S-RH\" ci=\"20000120\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3-0FYP\" syi=\"30000823\"/>\r\n    <row c=\"FD-7Y4\" ci=\"20000121\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-O53U\" syi=\"30000824\"/>\r\n    <row c=\"FD-7Y4\" ci=\"20000121\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HZ-O18\" syi=\"30000825\"/>\r\n    <row c=\"FD-7Y4\" ci=\"20000121\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D-P1EH\" syi=\"30000826\"/>\r\n    <row c=\"FD-7Y4\" ci=\"20000121\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"74L2-U\" syi=\"30000827\"/>\r\n    <row c=\"FD-7Y4\" ci=\"20000121\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HL-VZX\" syi=\"30000828\"/>\r\n    <row c=\"FD-7Y4\" ci=\"20000121\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"38NZ-1\" syi=\"30000829\"/>\r\n    <row c=\"FD-7Y4\" ci=\"20000121\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W-MF6J\" syi=\"30000830\"/>\r\n    <row c=\"TL-FDN\" ci=\"20000122\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-9G5Y\" syi=\"30000831\"/>\r\n    <row c=\"TL-FDN\" ci=\"20000122\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"27-HP0\" syi=\"30000832\"/>\r\n    <row c=\"TL-FDN\" ci=\"20000122\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X1-IZ0\" syi=\"30000833\"/>\r\n    <row c=\"TL-FDN\" ci=\"20000122\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RZ-TI6\" syi=\"30000834\"/>\r\n    <row c=\"TL-FDN\" ci=\"20000122\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FX4L-2\" syi=\"30000835\"/>\r\n    <row c=\"TL-FDN\" ci=\"20000122\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1ZF-PJ\" syi=\"30000836\"/>\r\n    <row c=\"TL-FDN\" ci=\"20000122\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HFC-AQ\" syi=\"30000837\"/>\r\n    <row c=\"R-CL2W\" ci=\"20000123\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-6VZ5\" syi=\"30000838\"/>\r\n    <row c=\"R-CL2W\" ci=\"20000123\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GB-6X5\" syi=\"30000839\"/>\r\n    <row c=\"R-CL2W\" ci=\"20000123\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7EX-14\" syi=\"30000840\"/>\r\n    <row c=\"R-CL2W\" ci=\"20000123\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N7-KGJ\" syi=\"30000841\"/>\r\n    <row c=\"R-CL2W\" ci=\"20000123\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VD-8QY\" syi=\"30000842\"/>\r\n    <row c=\"R-CL2W\" ci=\"20000123\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J-ZYSZ\" syi=\"30000843\"/>\r\n    <row c=\"R-CL2W\" ci=\"20000123\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5C-RPA\" syi=\"30000844\"/>\r\n    <row c=\"R-CL2W\" ci=\"20000123\" r=\"Insmother\" ri=\"10000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CR2-PQ\" syi=\"30000845\"/>\r\n    <row c=\"1P-VL2\" ci=\"20000124\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-OGL4\" syi=\"30000846\"/>\r\n    <row c=\"1P-VL2\" ci=\"20000124\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J-GAMP\" syi=\"30000847\"/>\r\n    <row c=\"1P-VL2\" ci=\"20000124\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-OEE8\" syi=\"30000848\"/>\r\n    <row c=\"1P-VL2\" ci=\"20000124\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V0DF-2\" syi=\"30000849\"/>\r\n    <row c=\"1P-VL2\" ci=\"20000124\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FY0W-N\" syi=\"30000850\"/>\r\n    <row c=\"1P-VL2\" ci=\"20000124\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MJI3-8\" syi=\"30000851\"/>\r\n    <row c=\"X-VN63\" ci=\"20000125\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-DDGY\" syi=\"30000852\"/>\r\n    <row c=\"X-VN63\" ci=\"20000125\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-RT6Q\" syi=\"30000853\"/>\r\n    <row c=\"X-VN63\" ci=\"20000125\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-S42H\" syi=\"30000854\"/>\r\n    <row c=\"X-VN63\" ci=\"20000125\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NL6V-7\" syi=\"30000855\"/>\r\n    <row c=\"X-VN63\" ci=\"20000125\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-749O\" syi=\"30000856\"/>\r\n    <row c=\"X-VN63\" ci=\"20000125\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-YMBJ\" syi=\"30000857\"/>\r\n    <row c=\"X-VN63\" ci=\"20000125\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UMI-KK\" syi=\"30000858\"/>\r\n    <row c=\"X-VN63\" ci=\"20000125\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GKP-YT\" syi=\"30000859\"/>\r\n    <row c=\"X-VN63\" ci=\"20000125\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AW1-2I\" syi=\"30000860\"/>\r\n    <row c=\"LLAP-1\" ci=\"20000126\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"15W-GC\" syi=\"30000861\"/>\r\n    <row c=\"LLAP-1\" ci=\"20000126\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-FK87\" syi=\"30000862\"/>\r\n    <row c=\"LLAP-1\" ci=\"20000126\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C2X-M5\" syi=\"30000863\"/>\r\n    <row c=\"LLAP-1\" ci=\"20000126\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MSHD-4\" syi=\"30000864\"/>\r\n    <row c=\"LLAP-1\" ci=\"20000126\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-W9TY\" syi=\"30000865\"/>\r\n    <row c=\"LLAP-1\" ci=\"20000126\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PNDN-V\" syi=\"30000866\"/>\r\n    <row c=\"52-JKU\" ci=\"20000127\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D7-ZAC\" syi=\"30000867\"/>\r\n    <row c=\"52-JKU\" ci=\"20000127\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SH1-6P\" syi=\"30000868\"/>\r\n    <row c=\"52-JKU\" ci=\"20000127\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TRKN-L\" syi=\"30000869\"/>\r\n    <row c=\"52-JKU\" ci=\"20000127\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-0ERG\" syi=\"30000870\"/>\r\n    <row c=\"52-JKU\" ci=\"20000127\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WH-JCA\" syi=\"30000871\"/>\r\n    <row c=\"52-JKU\" ci=\"20000127\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-CAB2\" syi=\"30000872\"/>\r\n    <row c=\"E3-NLE\" ci=\"20000128\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PBD-0G\" syi=\"30000873\"/>\r\n    <row c=\"E3-NLE\" ci=\"20000128\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-1HKR\" syi=\"30000874\"/>\r\n    <row c=\"E3-NLE\" ci=\"20000128\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9GI-FB\" syi=\"30000875\"/>\r\n    <row c=\"E3-NLE\" ci=\"20000128\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3G-LHB\" syi=\"30000876\"/>\r\n    <row c=\"E3-NLE\" ci=\"20000128\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DBT-GB\" syi=\"30000877\"/>\r\n    <row c=\"E3-NLE\" ci=\"20000128\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U-W3WS\" syi=\"30000878\"/>\r\n    <row c=\"GORV-P\" ci=\"20000129\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DL1C-E\" syi=\"30000879\"/>\r\n    <row c=\"GORV-P\" ci=\"20000129\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YLS8-J\" syi=\"30000880\"/>\r\n    <row c=\"GORV-P\" ci=\"20000129\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2ISU-Y\" syi=\"30000881\"/>\r\n    <row c=\"GORV-P\" ci=\"20000129\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-CFN6\" syi=\"30000882\"/>\r\n    <row c=\"GORV-P\" ci=\"20000129\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9SL-K9\" syi=\"30000883\"/>\r\n    <row c=\"GORV-P\" ci=\"20000129\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-PZHM\" syi=\"30000884\"/>\r\n    <row c=\"GORV-P\" ci=\"20000129\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OY-UZ1\" syi=\"30000885\"/>\r\n    <row c=\"03C-SU\" ci=\"20000130\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S8-NSQ\" syi=\"30000886\"/>\r\n    <row c=\"03C-SU\" ci=\"20000130\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GIH-ZG\" syi=\"30000887\"/>\r\n    <row c=\"03C-SU\" ci=\"20000130\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V7-FB4\" syi=\"30000888\"/>\r\n    <row c=\"03C-SU\" ci=\"20000130\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XD-TOV\" syi=\"30000889\"/>\r\n    <row c=\"03C-SU\" ci=\"20000130\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K-6SNI\" syi=\"30000890\"/>\r\n    <row c=\"03C-SU\" ci=\"20000130\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-VXTK\" syi=\"30000891\"/>\r\n    <row c=\"03C-SU\" ci=\"20000130\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C8VC-S\" syi=\"30000892\"/>\r\n    <row c=\"03C-SU\" ci=\"20000130\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W-UQA5\" syi=\"30000893\"/>\r\n    <row c=\"W-XBGF\" ci=\"20000131\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W6VP-Y\" syi=\"30000894\"/>\r\n    <row c=\"W-XBGF\" ci=\"20000131\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IMK-K1\" syi=\"30000895\"/>\r\n    <row c=\"W-XBGF\" ci=\"20000131\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NJ4X-S\" syi=\"30000896\"/>\r\n    <row c=\"W-XBGF\" ci=\"20000131\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-G7BO\" syi=\"30000897\"/>\r\n    <row c=\"W-XBGF\" ci=\"20000131\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2CG-5V\" syi=\"30000898\"/>\r\n    <row c=\"W-XBGF\" ci=\"20000131\" r=\"Tribute\" ri=\"10000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QFF-O6\" syi=\"30000899\"/>\r\n    <row c=\"730-KH\" ci=\"20000132\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NIH-02\" syi=\"30000900\"/>\r\n    <row c=\"730-KH\" ci=\"20000132\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JPL-RA\" syi=\"30000901\"/>\r\n    <row c=\"730-KH\" ci=\"20000132\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NK-7XO\" syi=\"30000902\"/>\r\n    <row c=\"730-KH\" ci=\"20000132\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E02-IK\" syi=\"30000903\"/>\r\n    <row c=\"730-KH\" ci=\"20000132\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-DQ0D\" syi=\"30000904\"/>\r\n    <row c=\"730-KH\" ci=\"20000132\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-MD3B\" syi=\"30000905\"/>\r\n    <row c=\"U-3HAO\" ci=\"20000133\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FVXK-D\" syi=\"30000906\"/>\r\n    <row c=\"U-3HAO\" ci=\"20000133\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6EG7-R\" syi=\"30000907\"/>\r\n    <row c=\"U-3HAO\" ci=\"20000133\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"56D-TC\" syi=\"30000908\"/>\r\n    <row c=\"U-3HAO\" ci=\"20000133\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2X7Z-L\" syi=\"30000909\"/>\r\n    <row c=\"U-3HAO\" ci=\"20000133\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8DL-CP\" syi=\"30000910\"/>\r\n    <row c=\"U-3HAO\" ci=\"20000133\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UMDQ-6\" syi=\"30000911\"/>\r\n    <row c=\"K-DLD2\" ci=\"20000134\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"504Z-V\" syi=\"30000912\"/>\r\n    <row c=\"K-DLD2\" ci=\"20000134\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F8K-WQ\" syi=\"30000913\"/>\r\n    <row c=\"K-DLD2\" ci=\"20000134\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AB-FZE\" syi=\"30000914\"/>\r\n    <row c=\"K-DLD2\" ci=\"20000134\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-6Z8B\" syi=\"30000915\"/>\r\n    <row c=\"K-DLD2\" ci=\"20000134\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YUY-LM\" syi=\"30000916\"/>\r\n    <row c=\"K-DLD2\" ci=\"20000134\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NE-3GR\" syi=\"30000917\"/>\r\n    <row c=\"V-LQBF\" ci=\"20000135\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y4-GQV\" syi=\"30000918\"/>\r\n    <row c=\"V-LQBF\" ci=\"20000135\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7-IDWY\" syi=\"30000919\"/>\r\n    <row c=\"V-LQBF\" ci=\"20000135\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AZF-GH\" syi=\"30000920\"/>\r\n    <row c=\"V-LQBF\" ci=\"20000135\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UT-UZB\" syi=\"30000921\"/>\r\n    <row c=\"V-LQBF\" ci=\"20000135\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-EKDF\" syi=\"30000922\"/>\r\n    <row c=\"V-LQBF\" ci=\"20000135\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CRXA-Y\" syi=\"30000923\"/>\r\n    <row c=\"V-LQBF\" ci=\"20000135\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VXO-OM\" syi=\"30000924\"/>\r\n    <row c=\"V-LQBF\" ci=\"20000135\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BY5-V8\" syi=\"30000925\"/>\r\n    <row c=\"V-LQBF\" ci=\"20000135\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TET3-B\" syi=\"30000926\"/>\r\n    <row c=\"BB8E-G\" ci=\"20000136\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VKU-BG\" syi=\"30000927\"/>\r\n    <row c=\"BB8E-G\" ci=\"20000136\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WPR-EI\" syi=\"30000928\"/>\r\n    <row c=\"BB8E-G\" ci=\"20000136\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0NV-YU\" syi=\"30000929\"/>\r\n    <row c=\"BB8E-G\" ci=\"20000136\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-2GYS\" syi=\"30000930\"/>\r\n    <row c=\"BB8E-G\" ci=\"20000136\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"168-6H\" syi=\"30000931\"/>\r\n    <row c=\"BB8E-G\" ci=\"20000136\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W-RFUO\" syi=\"30000932\"/>\r\n    <row c=\"BB8E-G\" ci=\"20000136\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AI-EVH\" syi=\"30000933\"/>\r\n    <row c=\"BB8E-G\" ci=\"20000136\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-MKH3\" syi=\"30000934\"/>\r\n    <row c=\"BB8E-G\" ci=\"20000136\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZM-DNR\" syi=\"30000935\"/>\r\n    <row c=\"IYOO-M\" ci=\"20000137\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GF-3FL\" syi=\"30000936\"/>\r\n    <row c=\"IYOO-M\" ci=\"20000137\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZJ-GOU\" syi=\"30000937\"/>\r\n    <row c=\"IYOO-M\" ci=\"20000137\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QQ3-YI\" syi=\"30000938\"/>\r\n    <row c=\"IYOO-M\" ci=\"20000137\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-34L5\" syi=\"30000939\"/>\r\n    <row c=\"IYOO-M\" ci=\"20000137\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0R-GZQ\" syi=\"30000940\"/>\r\n    <row c=\"IYOO-M\" ci=\"20000137\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QM-20X\" syi=\"30000941\"/>\r\n    <row c=\"Q-PVMK\" ci=\"20000138\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8YC-AN\" syi=\"30000942\"/>\r\n    <row c=\"Q-PVMK\" ci=\"20000138\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7Q-8Z2\" syi=\"30000943\"/>\r\n    <row c=\"Q-PVMK\" ci=\"20000138\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SUR-F7\" syi=\"30000944\"/>\r\n    <row c=\"Q-PVMK\" ci=\"20000138\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OK-6XN\" syi=\"30000945\"/>\r\n    <row c=\"Q-PVMK\" ci=\"20000138\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q2FL-T\" syi=\"30000946\"/>\r\n    <row c=\"Q-PVMK\" ci=\"20000138\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y7-XFD\" syi=\"30000947\"/>\r\n    <row c=\"Q-PVMK\" ci=\"20000138\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U3K-4A\" syi=\"30000948\"/>\r\n    <row c=\"AP-S8F\" ci=\"20000139\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P1T-LP\" syi=\"30000949\"/>\r\n    <row c=\"AP-S8F\" ci=\"20000139\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R-ESG0\" syi=\"30000950\"/>\r\n    <row c=\"AP-S8F\" ci=\"20000139\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CI4M-T\" syi=\"30000951\"/>\r\n    <row c=\"AP-S8F\" ci=\"20000139\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I-QRJA\" syi=\"30000952\"/>\r\n    <row c=\"AP-S8F\" ci=\"20000139\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-YWAL\" syi=\"30000953\"/>\r\n    <row c=\"AP-S8F\" ci=\"20000139\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DE71-9\" syi=\"30000954\"/>\r\n    <row c=\"AP-S8F\" ci=\"20000139\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7JF-0Z\" syi=\"30000955\"/>\r\n    <row c=\"T-W4L3\" ci=\"20000140\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IX8-JB\" syi=\"30000956\"/>\r\n    <row c=\"T-W4L3\" ci=\"20000140\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WTIE-6\" syi=\"30000957\"/>\r\n    <row c=\"T-W4L3\" ci=\"20000140\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-DSSK\" syi=\"30000958\"/>\r\n    <row c=\"T-W4L3\" ci=\"20000140\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F5-CGW\" syi=\"30000959\"/>\r\n    <row c=\"T-W4L3\" ci=\"20000140\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H9S-WC\" syi=\"30000960\"/>\r\n    <row c=\"T-W4L3\" ci=\"20000140\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-ROFP\" syi=\"30000961\"/>\r\n    <row c=\"T-W4L3\" ci=\"20000140\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1L-AED\" syi=\"30000962\"/>\r\n    <row c=\"T-W4L3\" ci=\"20000140\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1C-953\" syi=\"30000963\"/>\r\n    <row c=\"V-4QJC\" ci=\"20000141\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SL-YBS\" syi=\"30000964\"/>\r\n    <row c=\"V-4QJC\" ci=\"20000141\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UNJ-GX\" syi=\"30000965\"/>\r\n    <row c=\"V-4QJC\" ci=\"20000141\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0PI4-E\" syi=\"30000966\"/>\r\n    <row c=\"V-4QJC\" ci=\"20000141\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6WT-BE\" syi=\"30000967\"/>\r\n    <row c=\"V-4QJC\" ci=\"20000141\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L1S-G1\" syi=\"30000968\"/>\r\n    <row c=\"V-4QJC\" ci=\"20000141\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9SNK-O\" syi=\"30000969\"/>\r\n    <row c=\"V-4QJC\" ci=\"20000141\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-VIP9\" syi=\"30000970\"/>\r\n    <row c=\"DYK-G8\" ci=\"20000142\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LXTC-S\" syi=\"30000971\"/>\r\n    <row c=\"DYK-G8\" ci=\"20000142\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WE3-BX\" syi=\"30000972\"/>\r\n    <row c=\"DYK-G8\" ci=\"20000142\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H7O-JZ\" syi=\"30000973\"/>\r\n    <row c=\"DYK-G8\" ci=\"20000142\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-8F5Q\" syi=\"30000974\"/>\r\n    <row c=\"DYK-G8\" ci=\"20000142\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-RXCZ\" syi=\"30000975\"/>\r\n    <row c=\"DYK-G8\" ci=\"20000142\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4M-P1I\" syi=\"30000976\"/>\r\n    <row c=\"L-TEVM\" ci=\"20000143\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P7UZ-T\" syi=\"30000977\"/>\r\n    <row c=\"L-TEVM\" ci=\"20000143\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PUZ-IO\" syi=\"30000978\"/>\r\n    <row c=\"L-TEVM\" ci=\"20000143\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HB-1NJ\" syi=\"30000979\"/>\r\n    <row c=\"L-TEVM\" ci=\"20000143\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EOE3-N\" syi=\"30000980\"/>\r\n    <row c=\"L-TEVM\" ci=\"20000143\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F7A-MR\" syi=\"30000981\"/>\r\n    <row c=\"L-TEVM\" ci=\"20000143\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-8SOC\" syi=\"30000982\"/>\r\n    <row c=\"HRJG-D\" ci=\"20000144\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OJOS-T\" syi=\"30000983\"/>\r\n    <row c=\"HRJG-D\" ci=\"20000144\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V89M-R\" syi=\"30000984\"/>\r\n    <row c=\"HRJG-D\" ci=\"20000144\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"66U-1P\" syi=\"30000985\"/>\r\n    <row c=\"HRJG-D\" ci=\"20000144\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BRT-OP\" syi=\"30000986\"/>\r\n    <row c=\"HRJG-D\" ci=\"20000144\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JUK0-1\" syi=\"30000987\"/>\r\n    <row c=\"HRJG-D\" ci=\"20000144\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-IH6B\" syi=\"30000988\"/>\r\n    <row c=\"W-3Y6D\" ci=\"20000145\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"52V6-B\" syi=\"30000989\"/>\r\n    <row c=\"W-3Y6D\" ci=\"20000145\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PUC-JZ\" syi=\"30000990\"/>\r\n    <row c=\"W-3Y6D\" ci=\"20000145\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SB-23C\" syi=\"30000991\"/>\r\n    <row c=\"W-3Y6D\" ci=\"20000145\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5FCV-A\" syi=\"30000992\"/>\r\n    <row c=\"W-3Y6D\" ci=\"20000145\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-OVOQ\" syi=\"30000993\"/>\r\n    <row c=\"W-3Y6D\" ci=\"20000145\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"92-B0X\" syi=\"30000994\"/>\r\n    <row c=\"I3-2J0\" ci=\"20000146\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-3VW8\" syi=\"30000995\"/>\r\n    <row c=\"I3-2J0\" ci=\"20000146\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"28-QWU\" syi=\"30000996\"/>\r\n    <row c=\"I3-2J0\" ci=\"20000146\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UD-AOK\" syi=\"30000997\"/>\r\n    <row c=\"I3-2J0\" ci=\"20000146\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M9U-75\" syi=\"30000998\"/>\r\n    <row c=\"I3-2J0\" ci=\"20000146\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-RAEL\" syi=\"30000999\"/>\r\n    <row c=\"I3-2J0\" ci=\"20000146\" r=\"Great Wildlands\" ri=\"10000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K-IYNW\" syi=\"30001000\"/>\r\n    <row c=\"Tranquility\" ci=\"20000147\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-ADOC\" syi=\"30001001\"/>\r\n    <row c=\"Tranquility\" ci=\"20000147\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-G78S\" syi=\"30001002\"/>\r\n    <row c=\"Tranquility\" ci=\"20000147\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UW9B-F\" syi=\"30001003\"/>\r\n    <row c=\"Tranquility\" ci=\"20000147\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZZ-ZWC\" syi=\"30001004\"/>\r\n    <row c=\"Tranquility\" ci=\"20000147\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OSY-UD\" syi=\"30001005\"/>\r\n    <row c=\"Tranquility\" ci=\"20000147\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K-MGJ7\" syi=\"30001006\"/>\r\n    <row c=\"Paradise\" ci=\"20000148\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JWJ-P1\" syi=\"30001007\"/>\r\n    <row c=\"Paradise\" ci=\"20000148\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-IUEL\" syi=\"30001008\"/>\r\n    <row c=\"Paradise\" ci=\"20000148\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0SHT-A\" syi=\"30001009\"/>\r\n    <row c=\"Paradise\" ci=\"20000148\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D87E-A\" syi=\"30001010\"/>\r\n    <row c=\"Paradise\" ci=\"20000148\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K-B2D3\" syi=\"30001011\"/>\r\n    <row c=\"Paradise\" ci=\"20000148\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PO4F-3\" syi=\"30001012\"/>\r\n    <row c=\"Paradise\" ci=\"20000148\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J7A-UR\" syi=\"30001013\"/>\r\n    <row c=\"Paradise\" ci=\"20000148\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5E-VR8\" syi=\"30001014\"/>\r\n    <row c=\"Paradise\" ci=\"20000148\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V7D-JD\" syi=\"30001015\"/>\r\n    <row c=\"Elysium\" ci=\"20000149\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HLW-HP\" syi=\"30001016\"/>\r\n    <row c=\"Elysium\" ci=\"20000149\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8G-MQV\" syi=\"30001017\"/>\r\n    <row c=\"Elysium\" ci=\"20000149\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RA-NXN\" syi=\"30001018\"/>\r\n    <row c=\"Elysium\" ci=\"20000149\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VOL-MI\" syi=\"30001019\"/>\r\n    <row c=\"Elysium\" ci=\"20000149\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KLMT-W\" syi=\"30001020\"/>\r\n    <row c=\"Elysium\" ci=\"20000149\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XX9-WV\" syi=\"30001021\"/>\r\n    <row c=\"Sound\" ci=\"20000150\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AAM-1A\" syi=\"30001022\"/>\r\n    <row c=\"Sound\" ci=\"20000150\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EW-JR5\" syi=\"30001023\"/>\r\n    <row c=\"Sound\" ci=\"20000150\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YKE4-3\" syi=\"30001024\"/>\r\n    <row c=\"Sound\" ci=\"20000150\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CL-85V\" syi=\"30001025\"/>\r\n    <row c=\"Sound\" ci=\"20000150\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K-QWHE\" syi=\"30001026\"/>\r\n    <row c=\"Sound\" ci=\"20000150\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MDD-79\" syi=\"30001027\"/>\r\n    <row c=\"Sound\" ci=\"20000150\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RMOC-W\" syi=\"30001028\"/>\r\n    <row c=\"Rapture\" ci=\"20000151\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ES-UWY\" syi=\"30001029\"/>\r\n    <row c=\"Rapture\" ci=\"20000151\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S1DP-Y\" syi=\"30001030\"/>\r\n    <row c=\"Rapture\" ci=\"20000151\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-DW5K\" syi=\"30001031\"/>\r\n    <row c=\"Rapture\" ci=\"20000151\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-N7WD\" syi=\"30001032\"/>\r\n    <row c=\"Rapture\" ci=\"20000151\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QFEW-K\" syi=\"30001033\"/>\r\n    <row c=\"Rapture\" ci=\"20000151\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CVY-UC\" syi=\"30001034\"/>\r\n    <row c=\"Rapture\" ci=\"20000151\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EQX-AE\" syi=\"30001035\"/>\r\n    <row c=\"Hale\" ci=\"20000152\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-R4W1\" syi=\"30001036\"/>\r\n    <row c=\"Hale\" ci=\"20000152\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BPK-XK\" syi=\"30001037\"/>\r\n    <row c=\"Hale\" ci=\"20000152\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LJ-YSW\" syi=\"30001038\"/>\r\n    <row c=\"Hale\" ci=\"20000152\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-K50G\" syi=\"30001039\"/>\r\n    <row c=\"Hale\" ci=\"20000152\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K88X-J\" syi=\"30001040\"/>\r\n    <row c=\"Hale\" ci=\"20000152\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-0Q86\" syi=\"30001041\"/>\r\n    <row c=\"Hale\" ci=\"20000152\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CL-1JE\" syi=\"30001042\"/>\r\n    <row c=\"Hale\" ci=\"20000152\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J4UD-J\" syi=\"30001043\"/>\r\n    <row c=\"Heaven\" ci=\"20000153\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Hemin\" syi=\"30001044\"/>\r\n    <row c=\"Heaven\" ci=\"20000153\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Utopia\" syi=\"30001045\"/>\r\n    <row c=\"Heaven\" ci=\"20000153\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Jorund\" syi=\"30001046\"/>\r\n    <row c=\"Heaven\" ci=\"20000153\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Doril\" syi=\"30001047\"/>\r\n    <row c=\"Heaven\" ci=\"20000153\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Litom\" syi=\"30001048\"/>\r\n    <row c=\"Heaven\" ci=\"20000153\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Farit\" syi=\"30001049\"/>\r\n    <row c=\"Heaven\" ci=\"20000153\" r=\"Curse\" ri=\"10000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Jamunda\" syi=\"30001050\"/>\r\n    <row c=\"4R-HUN\" ci=\"20000154\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TD-4XL\" syi=\"30001051\"/>\r\n    <row c=\"4R-HUN\" ci=\"20000154\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IBOX-2\" syi=\"30001052\"/>\r\n    <row c=\"4R-HUN\" ci=\"20000154\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8AB-Q4\" syi=\"30001053\"/>\r\n    <row c=\"4R-HUN\" ci=\"20000154\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VW-PXL\" syi=\"30001054\"/>\r\n    <row c=\"4R-HUN\" ci=\"20000154\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JA-G0T\" syi=\"30001055\"/>\r\n    <row c=\"4R-HUN\" ci=\"20000154\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IF-KD1\" syi=\"30001056\"/>\r\n    <row c=\"XI0-X2\" ci=\"20000155\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7-YHRX\" syi=\"30001057\"/>\r\n    <row c=\"XI0-X2\" ci=\"20000155\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y6-9LF\" syi=\"30001058\"/>\r\n    <row c=\"XI0-X2\" ci=\"20000155\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-PQEX\" syi=\"30001059\"/>\r\n    <row c=\"XI0-X2\" ci=\"20000155\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-H95C\" syi=\"30001060\"/>\r\n    <row c=\"XI0-X2\" ci=\"20000155\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NSI-MW\" syi=\"30001061\"/>\r\n    <row c=\"XI0-X2\" ci=\"20000155\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-YLOE\" syi=\"30001062\"/>\r\n    <row c=\"1M4-FN\" ci=\"20000156\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NBO-O0\" syi=\"30001063\"/>\r\n    <row c=\"1M4-FN\" ci=\"20000156\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-TQWO\" syi=\"30001064\"/>\r\n    <row c=\"1M4-FN\" ci=\"20000156\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-TRV1\" syi=\"30001065\"/>\r\n    <row c=\"1M4-FN\" ci=\"20000156\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"13-49W\" syi=\"30001066\"/>\r\n    <row c=\"1M4-FN\" ci=\"20000156\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6UT-1K\" syi=\"30001067\"/>\r\n    <row c=\"1M4-FN\" ci=\"20000156\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O8W-5O\" syi=\"30001068\"/>\r\n    <row c=\"UL8-RD\" ci=\"20000157\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LH-PLU\" syi=\"30001069\"/>\r\n    <row c=\"UL8-RD\" ci=\"20000157\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AZA-QE\" syi=\"30001070\"/>\r\n    <row c=\"UL8-RD\" ci=\"20000157\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8-2JZA\" syi=\"30001071\"/>\r\n    <row c=\"UL8-RD\" ci=\"20000157\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZT-L3S\" syi=\"30001072\"/>\r\n    <row c=\"UL8-RD\" ci=\"20000157\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VVB-QH\" syi=\"30001073\"/>\r\n    <row c=\"UL8-RD\" ci=\"20000157\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-DDVJ\" syi=\"30001074\"/>\r\n    <row c=\"3TS-12\" ci=\"20000158\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7-2Z93\" syi=\"30001075\"/>\r\n    <row c=\"3TS-12\" ci=\"20000158\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-VFDD\" syi=\"30001076\"/>\r\n    <row c=\"3TS-12\" ci=\"20000158\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A0M-R8\" syi=\"30001077\"/>\r\n    <row c=\"3TS-12\" ci=\"20000158\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LY-WRW\" syi=\"30001078\"/>\r\n    <row c=\"3TS-12\" ci=\"20000158\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9F-ERQ\" syi=\"30001079\"/>\r\n    <row c=\"3TS-12\" ci=\"20000158\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QCGG-Q\" syi=\"30001080\"/>\r\n    <row c=\"3TS-12\" ci=\"20000158\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1NZV-7\" syi=\"30001081\"/>\r\n    <row c=\"3TS-12\" ci=\"20000158\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NIM-FY\" syi=\"30001082\"/>\r\n    <row c=\"E6EO-H\" ci=\"20000159\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DAI-SH\" syi=\"30001083\"/>\r\n    <row c=\"E6EO-H\" ci=\"20000159\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V3P-AZ\" syi=\"30001084\"/>\r\n    <row c=\"E6EO-H\" ci=\"20000159\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-KW6X\" syi=\"30001085\"/>\r\n    <row c=\"E6EO-H\" ci=\"20000159\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X1W-AL\" syi=\"30001086\"/>\r\n    <row c=\"E6EO-H\" ci=\"20000159\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-WZYG\" syi=\"30001087\"/>\r\n    <row c=\"E6EO-H\" ci=\"20000159\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S-R9J2\" syi=\"30001088\"/>\r\n    <row c=\"E6EO-H\" ci=\"20000159\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XU-BF8\" syi=\"30001089\"/>\r\n    <row c=\"E6EO-H\" ci=\"20000159\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RIU-GC\" syi=\"30001090\"/>\r\n    <row c=\"PFL-QY\" ci=\"20000160\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z0H2-4\" syi=\"30001091\"/>\r\n    <row c=\"PFL-QY\" ci=\"20000160\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"63-7Q6\" syi=\"30001092\"/>\r\n    <row c=\"PFL-QY\" ci=\"20000160\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XCZ5-Y\" syi=\"30001093\"/>\r\n    <row c=\"PFL-QY\" ci=\"20000160\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NRD-5Q\" syi=\"30001094\"/>\r\n    <row c=\"PFL-QY\" ci=\"20000160\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W5-205\" syi=\"30001095\"/>\r\n    <row c=\"PFL-QY\" ci=\"20000160\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T-4H0B\" syi=\"30001096\"/>\r\n    <row c=\"7UNX-J\" ci=\"20000161\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-EKCY\" syi=\"30001097\"/>\r\n    <row c=\"7UNX-J\" ci=\"20000161\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SH-YZY\" syi=\"30001098\"/>\r\n    <row c=\"7UNX-J\" ci=\"20000161\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O7-RFZ\" syi=\"30001099\"/>\r\n    <row c=\"7UNX-J\" ci=\"20000161\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CLW-SI\" syi=\"30001100\"/>\r\n    <row c=\"7UNX-J\" ci=\"20000161\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-A0PX\" syi=\"30001101\"/>\r\n    <row c=\"7UNX-J\" ci=\"20000161\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R-RMDH\" syi=\"30001102\"/>\r\n    <row c=\"D-YKXH\" ci=\"20000162\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2XI8-Y\" syi=\"30001103\"/>\r\n    <row c=\"D-YKXH\" ci=\"20000162\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5B-YDD\" syi=\"30001104\"/>\r\n    <row c=\"D-YKXH\" ci=\"20000162\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W-XY4J\" syi=\"30001105\"/>\r\n    <row c=\"D-YKXH\" ci=\"20000162\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PWPY-4\" syi=\"30001106\"/>\r\n    <row c=\"D-YKXH\" ci=\"20000162\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QZ1-OH\" syi=\"30001107\"/>\r\n    <row c=\"D-YKXH\" ci=\"20000162\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-XZA7\" syi=\"30001108\"/>\r\n    <row c=\"G-HISF\" ci=\"20000163\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1-EVAX\" syi=\"30001109\"/>\r\n    <row c=\"G-HISF\" ci=\"20000163\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I8-AJY\" syi=\"30001110\"/>\r\n    <row c=\"G-HISF\" ci=\"20000163\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6-WMKE\" syi=\"30001111\"/>\r\n    <row c=\"G-HISF\" ci=\"20000163\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J-Z8C2\" syi=\"30001112\"/>\r\n    <row c=\"G-HISF\" ci=\"20000163\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XTVZ-E\" syi=\"30001113\"/>\r\n    <row c=\"G-HISF\" ci=\"20000163\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"APES-G\" syi=\"30001114\"/>\r\n    <row c=\"G-HISF\" ci=\"20000163\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B2J-5N\" syi=\"30001115\"/>\r\n    <row c=\"G-HISF\" ci=\"20000163\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2Z-HPQ\" syi=\"30001116\"/>\r\n    <row c=\"GDBW-2\" ci=\"20000164\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NBW-GD\" syi=\"30001117\"/>\r\n    <row c=\"GDBW-2\" ci=\"20000164\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YM-SRU\" syi=\"30001118\"/>\r\n    <row c=\"GDBW-2\" ci=\"20000164\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LO5-LN\" syi=\"30001119\"/>\r\n    <row c=\"GDBW-2\" ci=\"20000164\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"06-70G\" syi=\"30001120\"/>\r\n    <row c=\"GDBW-2\" ci=\"20000164\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UYG-YX\" syi=\"30001121\"/>\r\n    <row c=\"GDBW-2\" ci=\"20000164\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GL6S-2\" syi=\"30001122\"/>\r\n    <row c=\"GDBW-2\" ci=\"20000164\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RUF3-O\" syi=\"30001123\"/>\r\n    <row c=\"GDBW-2\" ci=\"20000164\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-NMG9\" syi=\"30001124\"/>\r\n    <row c=\"GDBW-2\" ci=\"20000164\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P3X-TN\" syi=\"30001125\"/>\r\n    <row c=\"WS5L-X\" ci=\"20000165\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N6NK-J\" syi=\"30001126\"/>\r\n    <row c=\"WS5L-X\" ci=\"20000165\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TP-APY\" syi=\"30001127\"/>\r\n    <row c=\"WS5L-X\" ci=\"20000165\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9NI-FW\" syi=\"30001128\"/>\r\n    <row c=\"WS5L-X\" ci=\"20000165\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-EBQG\" syi=\"30001129\"/>\r\n    <row c=\"WS5L-X\" ci=\"20000165\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DOA-YU\" syi=\"30001130\"/>\r\n    <row c=\"WS5L-X\" ci=\"20000165\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZOPZ-6\" syi=\"30001131\"/>\r\n    <row c=\"MW49-U\" ci=\"20000166\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"863P-X\" syi=\"30001132\"/>\r\n    <row c=\"MW49-U\" ci=\"20000166\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZO-YJZ\" syi=\"30001133\"/>\r\n    <row c=\"MW49-U\" ci=\"20000166\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6A-FUY\" syi=\"30001134\"/>\r\n    <row c=\"MW49-U\" ci=\"20000166\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HG-YEQ\" syi=\"30001135\"/>\r\n    <row c=\"MW49-U\" ci=\"20000166\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2FL-5W\" syi=\"30001136\"/>\r\n    <row c=\"MW49-U\" ci=\"20000166\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QSCO-D\" syi=\"30001137\"/>\r\n    <row c=\"MW49-U\" ci=\"20000166\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RXTY-4\" syi=\"30001138\"/>\r\n    <row c=\"MW49-U\" ci=\"20000166\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RSE-PT\" syi=\"30001139\"/>\r\n    <row c=\"PX0-P4\" ci=\"20000167\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WVJU-4\" syi=\"30001140\"/>\r\n    <row c=\"PX0-P4\" ci=\"20000167\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7T-0QS\" syi=\"30001141\"/>\r\n    <row c=\"PX0-P4\" ci=\"20000167\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RWML-A\" syi=\"30001142\"/>\r\n    <row c=\"PX0-P4\" ci=\"20000167\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-JCJS\" syi=\"30001143\"/>\r\n    <row c=\"PX0-P4\" ci=\"20000167\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8C-VE3\" syi=\"30001144\"/>\r\n    <row c=\"PX0-P4\" ci=\"20000167\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S5W-1Z\" syi=\"30001145\"/>\r\n    <row c=\"PX0-P4\" ci=\"20000167\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IL-OL1\" syi=\"30001146\"/>\r\n    <row c=\"2747-4\" ci=\"20000168\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"POQP-K\" syi=\"30001147\"/>\r\n    <row c=\"2747-4\" ci=\"20000168\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FO9-FZ\" syi=\"30001148\"/>\r\n    <row c=\"2747-4\" ci=\"20000168\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4QY-NT\" syi=\"30001149\"/>\r\n    <row c=\"2747-4\" ci=\"20000168\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-N1BJ\" syi=\"30001150\"/>\r\n    <row c=\"2747-4\" ci=\"20000168\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T-8GWA\" syi=\"30001151\"/>\r\n    <row c=\"2747-4\" ci=\"20000168\" r=\"Malpais\" ri=\"10000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UW-6MW\" syi=\"30001152\"/>\r\n    <row c=\"UX3-N2\" ci=\"20000169\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F9E-KX\" syi=\"30001153\"/>\r\n    <row c=\"UX3-N2\" ci=\"20000169\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9KOE-A\" syi=\"30001154\"/>\r\n    <row c=\"UX3-N2\" ci=\"20000169\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U-QVWD\" syi=\"30001155\"/>\r\n    <row c=\"UX3-N2\" ci=\"20000169\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-3QPD\" syi=\"30001156\"/>\r\n    <row c=\"UX3-N2\" ci=\"20000169\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"36N-HZ\" syi=\"30001157\"/>\r\n    <row c=\"UX3-N2\" ci=\"20000169\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SV5-8N\" syi=\"30001158\"/>\r\n    <row c=\"UX3-N2\" ci=\"20000169\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HY-RWO\" syi=\"30001159\"/>\r\n    <row c=\"UX3-N2\" ci=\"20000169\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WD-VTV\" syi=\"30001160\"/>\r\n    <row c=\"UX3-N2\" ci=\"20000169\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HED-GP\" syi=\"30001161\"/>\r\n    <row c=\"UX3-N2\" ci=\"20000169\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-3YG7\" syi=\"30001162\"/>\r\n    <row c=\"N-OGI1\" ci=\"20000170\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QSM-LM\" syi=\"30001163\"/>\r\n    <row c=\"N-OGI1\" ci=\"20000170\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KDF-GY\" syi=\"30001164\"/>\r\n    <row c=\"N-OGI1\" ci=\"20000170\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QBQ-RF\" syi=\"30001165\"/>\r\n    <row c=\"N-OGI1\" ci=\"20000170\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-8GBA\" syi=\"30001166\"/>\r\n    <row c=\"N-OGI1\" ci=\"20000170\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6-K738\" syi=\"30001167\"/>\r\n    <row c=\"N-OGI1\" ci=\"20000170\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZXIC-7\" syi=\"30001168\"/>\r\n    <row c=\"N-OGI1\" ci=\"20000170\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2J-WJY\" syi=\"30001169\"/>\r\n    <row c=\"EM-L3K\" ci=\"20000171\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1P-WGB\" syi=\"30001170\"/>\r\n    <row c=\"EM-L3K\" ci=\"20000171\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F4R2-Q\" syi=\"30001171\"/>\r\n    <row c=\"EM-L3K\" ci=\"20000171\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K0CN-3\" syi=\"30001172\"/>\r\n    <row c=\"EM-L3K\" ci=\"20000171\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WLAR-J\" syi=\"30001173\"/>\r\n    <row c=\"EM-L3K\" ci=\"20000171\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L7XS-5\" syi=\"30001174\"/>\r\n    <row c=\"EM-L3K\" ci=\"20000171\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VA6-DR\" syi=\"30001175\"/>\r\n    <row c=\"ZW-BY5\" ci=\"20000172\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S-U2VD\" syi=\"30001176\"/>\r\n    <row c=\"ZW-BY5\" ci=\"20000172\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GE-94X\" syi=\"30001177\"/>\r\n    <row c=\"ZW-BY5\" ci=\"20000172\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GMLH-K\" syi=\"30001178\"/>\r\n    <row c=\"ZW-BY5\" ci=\"20000172\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W9-DID\" syi=\"30001179\"/>\r\n    <row c=\"ZW-BY5\" ci=\"20000172\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KW-I6T\" syi=\"30001180\"/>\r\n    <row c=\"ZW-BY5\" ci=\"20000172\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EX-0LQ\" syi=\"30001181\"/>\r\n    <row c=\"JZV-O6\" ci=\"20000173\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MB-NKE\" syi=\"30001182\"/>\r\n    <row c=\"JZV-O6\" ci=\"20000173\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-7WUF\" syi=\"30001183\"/>\r\n    <row c=\"JZV-O6\" ci=\"20000173\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6-MM99\" syi=\"30001184\"/>\r\n    <row c=\"JZV-O6\" ci=\"20000173\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JBY6-F\" syi=\"30001185\"/>\r\n    <row c=\"JZV-O6\" ci=\"20000173\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FZ-6A5\" syi=\"30001186\"/>\r\n    <row c=\"JZV-O6\" ci=\"20000173\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RNF-YH\" syi=\"30001187\"/>\r\n    <row c=\"XR9-LP\" ci=\"20000174\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I-8D0G\" syi=\"30001188\"/>\r\n    <row c=\"XR9-LP\" ci=\"20000174\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R-K4QY\" syi=\"30001189\"/>\r\n    <row c=\"XR9-LP\" ci=\"20000174\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JWZ2-V\" syi=\"30001190\"/>\r\n    <row c=\"XR9-LP\" ci=\"20000174\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OGL8-Q\" syi=\"30001191\"/>\r\n    <row c=\"XR9-LP\" ci=\"20000174\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GJ0-OJ\" syi=\"30001192\"/>\r\n    <row c=\"XR9-LP\" ci=\"20000174\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-803L\" syi=\"30001193\"/>\r\n    <row c=\"XR9-LP\" ci=\"20000174\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WQH-4K\" syi=\"30001194\"/>\r\n    <row c=\"XR9-LP\" ci=\"20000174\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J-ODE7\" syi=\"30001195\"/>\r\n    <row c=\"XR9-LP\" ci=\"20000174\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-S7ZD\" syi=\"30001196\"/>\r\n    <row c=\"XR9-LP\" ci=\"20000174\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6X7-JO\" syi=\"30001197\"/>\r\n    <row c=\"9HXQ-G\" ci=\"20000175\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GE-8JV\" syi=\"30001198\"/>\r\n    <row c=\"9HXQ-G\" ci=\"20000175\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3-OKDA\" syi=\"30001199\"/>\r\n    <row c=\"9HXQ-G\" ci=\"20000175\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3GD6-8\" syi=\"30001200\"/>\r\n    <row c=\"9HXQ-G\" ci=\"20000175\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4M-HGL\" syi=\"30001201\"/>\r\n    <row c=\"9HXQ-G\" ci=\"20000175\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MY-W1V\" syi=\"30001202\"/>\r\n    <row c=\"9HXQ-G\" ci=\"20000175\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AX-DOT\" syi=\"30001203\"/>\r\n    <row c=\"9HXQ-G\" ci=\"20000175\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YHN-3K\" syi=\"30001204\"/>\r\n    <row c=\"FDR-EQ\" ci=\"20000176\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CB4-Q2\" syi=\"30001205\"/>\r\n    <row c=\"FDR-EQ\" ci=\"20000176\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CBL-XP\" syi=\"30001206\"/>\r\n    <row c=\"FDR-EQ\" ci=\"20000176\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WJ-9YO\" syi=\"30001207\"/>\r\n    <row c=\"FDR-EQ\" ci=\"20000176\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UQ-PWD\" syi=\"30001208\"/>\r\n    <row c=\"FDR-EQ\" ci=\"20000176\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-8BZ6\" syi=\"30001209\"/>\r\n    <row c=\"FDR-EQ\" ci=\"20000176\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-VILQ\" syi=\"30001210\"/>\r\n    <row c=\"FDR-EQ\" ci=\"20000176\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X3FQ-W\" syi=\"30001211\"/>\r\n    <row c=\"FDR-EQ\" ci=\"20000176\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3-SFWG\" syi=\"30001212\"/>\r\n    <row c=\"T-1WDH\" ci=\"20000177\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MUXX-4\" syi=\"30001213\"/>\r\n    <row c=\"T-1WDH\" ci=\"20000177\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E1-4YH\" syi=\"30001214\"/>\r\n    <row c=\"T-1WDH\" ci=\"20000177\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-XJX4\" syi=\"30001215\"/>\r\n    <row c=\"T-1WDH\" ci=\"20000177\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AOK-WQ\" syi=\"30001216\"/>\r\n    <row c=\"T-1WDH\" ci=\"20000177\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E3-SDZ\" syi=\"30001217\"/>\r\n    <row c=\"T-1WDH\" ci=\"20000177\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7LHB-Z\" syi=\"30001218\"/>\r\n    <row c=\"A-JI5E\" ci=\"20000178\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8B-2YA\" syi=\"30001219\"/>\r\n    <row c=\"A-JI5E\" ci=\"20000178\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SNFV-I\" syi=\"30001220\"/>\r\n    <row c=\"A-JI5E\" ci=\"20000178\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HP-64T\" syi=\"30001221\"/>\r\n    <row c=\"A-JI5E\" ci=\"20000178\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V2-VC2\" syi=\"30001222\"/>\r\n    <row c=\"A-JI5E\" ci=\"20000178\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-B55M\" syi=\"30001223\"/>\r\n    <row c=\"A-JI5E\" ci=\"20000178\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CX65-5\" syi=\"30001224\"/>\r\n    <row c=\"A-JI5E\" ci=\"20000178\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JA-O6J\" syi=\"30001225\"/>\r\n    <row c=\"T-HHHT\" ci=\"20000179\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZQ-Z3Y\" syi=\"30001226\"/>\r\n    <row c=\"T-HHHT\" ci=\"20000179\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-AOTH\" syi=\"30001227\"/>\r\n    <row c=\"T-HHHT\" ci=\"20000179\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TA3T-3\" syi=\"30001228\"/>\r\n    <row c=\"T-HHHT\" ci=\"20000179\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-YJ8G\" syi=\"30001229\"/>\r\n    <row c=\"T-HHHT\" ci=\"20000179\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J6QB-P\" syi=\"30001230\"/>\r\n    <row c=\"T-HHHT\" ci=\"20000179\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KA6D-K\" syi=\"30001231\"/>\r\n    <row c=\"NNLX-K\" ci=\"20000180\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7MD-S1\" syi=\"30001232\"/>\r\n    <row c=\"NNLX-K\" ci=\"20000180\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ERVK-P\" syi=\"30001233\"/>\r\n    <row c=\"NNLX-K\" ci=\"20000180\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UL-7I8\" syi=\"30001234\"/>\r\n    <row c=\"NNLX-K\" ci=\"20000180\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BR-N97\" syi=\"30001235\"/>\r\n    <row c=\"NNLX-K\" ci=\"20000180\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IS-R7P\" syi=\"30001236\"/>\r\n    <row c=\"NNLX-K\" ci=\"20000180\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S25C-K\" syi=\"30001237\"/>\r\n    <row c=\"6JCS-4\" ci=\"20000181\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K717-8\" syi=\"30001238\"/>\r\n    <row c=\"6JCS-4\" ci=\"20000181\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NH-1X6\" syi=\"30001239\"/>\r\n    <row c=\"6JCS-4\" ci=\"20000181\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KH0Z-0\" syi=\"30001240\"/>\r\n    <row c=\"6JCS-4\" ci=\"20000181\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-N2EY\" syi=\"30001241\"/>\r\n    <row c=\"6JCS-4\" ci=\"20000181\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KB-U56\" syi=\"30001242\"/>\r\n    <row c=\"6JCS-4\" ci=\"20000181\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JGW-OT\" syi=\"30001243\"/>\r\n    <row c=\"6JCS-4\" ci=\"20000181\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UCG4-B\" syi=\"30001244\"/>\r\n    <row c=\"6JCS-4\" ci=\"20000181\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BUZ-DB\" syi=\"30001245\"/>\r\n    <row c=\"U-JTBT\" ci=\"20000182\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QETZ-W\" syi=\"30001246\"/>\r\n    <row c=\"U-JTBT\" ci=\"20000182\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WFC-MY\" syi=\"30001247\"/>\r\n    <row c=\"U-JTBT\" ci=\"20000182\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-U96U\" syi=\"30001248\"/>\r\n    <row c=\"U-JTBT\" ci=\"20000182\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X4-WL0\" syi=\"30001249\"/>\r\n    <row c=\"U-JTBT\" ci=\"20000182\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W-MPTH\" syi=\"30001250\"/>\r\n    <row c=\"U-JTBT\" ci=\"20000182\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4NBN-9\" syi=\"30001251\"/>\r\n    <row c=\"U-JTBT\" ci=\"20000182\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EX6-AO\" syi=\"30001252\"/>\r\n    <row c=\"U-JTBT\" ci=\"20000182\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CZK-ZQ\" syi=\"30001253\"/>\r\n    <row c=\"BRP2-K\" ci=\"20000183\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CNC-4V\" syi=\"30001254\"/>\r\n    <row c=\"BRP2-K\" ci=\"20000183\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-PNRL\" syi=\"30001255\"/>\r\n    <row c=\"BRP2-K\" ci=\"20000183\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FAT-6P\" syi=\"30001256\"/>\r\n    <row c=\"BRP2-K\" ci=\"20000183\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6BPS-T\" syi=\"30001257\"/>\r\n    <row c=\"BRP2-K\" ci=\"20000183\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"25S-6P\" syi=\"30001258\"/>\r\n    <row c=\"BRP2-K\" ci=\"20000183\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RR-D05\" syi=\"30001259\"/>\r\n    <row c=\"BRP2-K\" ci=\"20000183\" r=\"Catch\" ri=\"10000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-07MU\" syi=\"30001260\"/>\r\n    <row c=\"1G-8KY\" ci=\"20000184\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-W1Q3\" syi=\"30001261\"/>\r\n    <row c=\"1G-8KY\" ci=\"20000184\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y6-HPG\" syi=\"30001262\"/>\r\n    <row c=\"1G-8KY\" ci=\"20000184\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-GY5S\" syi=\"30001263\"/>\r\n    <row c=\"1G-8KY\" ci=\"20000184\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KK-L97\" syi=\"30001264\"/>\r\n    <row c=\"1G-8KY\" ci=\"20000184\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R-KZK7\" syi=\"30001265\"/>\r\n    <row c=\"1G-8KY\" ci=\"20000184\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-R6GU\" syi=\"30001266\"/>\r\n    <row c=\"1G-8KY\" ci=\"20000184\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-Q5PW\" syi=\"30001267\"/>\r\n    <row c=\"ST-0EZ\" ci=\"20000185\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P-FSQE\" syi=\"30001268\"/>\r\n    <row c=\"ST-0EZ\" ci=\"20000185\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-PA29\" syi=\"30001269\"/>\r\n    <row c=\"ST-0EZ\" ci=\"20000185\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1-Y6KI\" syi=\"30001270\"/>\r\n    <row c=\"ST-0EZ\" ci=\"20000185\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YP-J33\" syi=\"30001271\"/>\r\n    <row c=\"ST-0EZ\" ci=\"20000185\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D-8SI1\" syi=\"30001272\"/>\r\n    <row c=\"ST-0EZ\" ci=\"20000185\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-266Q\" syi=\"30001273\"/>\r\n    <row c=\"48R-PS\" ci=\"20000186\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K3JR-J\" syi=\"30001274\"/>\r\n    <row c=\"48R-PS\" ci=\"20000186\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CSOA-B\" syi=\"30001275\"/>\r\n    <row c=\"48R-PS\" ci=\"20000186\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6W-HRH\" syi=\"30001276\"/>\r\n    <row c=\"48R-PS\" ci=\"20000186\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N5Y-4N\" syi=\"30001277\"/>\r\n    <row c=\"48R-PS\" ci=\"20000186\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MQFX-Q\" syi=\"30001278\"/>\r\n    <row c=\"48R-PS\" ci=\"20000186\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-8BL8\" syi=\"30001279\"/>\r\n    <row c=\"N32Z-Z\" ci=\"20000187\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N6G-H3\" syi=\"30001280\"/>\r\n    <row c=\"N32Z-Z\" ci=\"20000187\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3A1P-N\" syi=\"30001281\"/>\r\n    <row c=\"N32Z-Z\" ci=\"20000187\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OZ-VAE\" syi=\"30001282\"/>\r\n    <row c=\"N32Z-Z\" ci=\"20000187\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-AFGR\" syi=\"30001283\"/>\r\n    <row c=\"N32Z-Z\" ci=\"20000187\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"92K-H2\" syi=\"30001284\"/>\r\n    <row c=\"N32Z-Z\" ci=\"20000187\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AA-YRK\" syi=\"30001285\"/>\r\n    <row c=\"UTZ-7B\" ci=\"20000188\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BV-1JG\" syi=\"30001286\"/>\r\n    <row c=\"UTZ-7B\" ci=\"20000188\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-BFTQ\" syi=\"30001287\"/>\r\n    <row c=\"UTZ-7B\" ci=\"20000188\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SS-GED\" syi=\"30001288\"/>\r\n    <row c=\"UTZ-7B\" ci=\"20000188\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AJCJ-1\" syi=\"30001289\"/>\r\n    <row c=\"UTZ-7B\" ci=\"20000188\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6NJ8-V\" syi=\"30001290\"/>\r\n    <row c=\"UTZ-7B\" ci=\"20000188\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-4CFK\" syi=\"30001291\"/>\r\n    <row c=\"E-I1JW\" ci=\"20000189\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HBD-CC\" syi=\"30001292\"/>\r\n    <row c=\"E-I1JW\" ci=\"20000189\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P-GKF5\" syi=\"30001293\"/>\r\n    <row c=\"E-I1JW\" ci=\"20000189\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-7U8U\" syi=\"30001294\"/>\r\n    <row c=\"E-I1JW\" ci=\"20000189\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-XIDJ\" syi=\"30001295\"/>\r\n    <row c=\"E-I1JW\" ci=\"20000189\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SBL5-R\" syi=\"30001296\"/>\r\n    <row c=\"E-I1JW\" ci=\"20000189\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-TVTD\" syi=\"30001297\"/>\r\n    <row c=\"E-I1JW\" ci=\"20000189\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8CIX-S\" syi=\"30001298\"/>\r\n    <row c=\"E-I1JW\" ci=\"20000189\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D-SKWC\" syi=\"30001299\"/>\r\n    <row c=\"W9MQ-1\" ci=\"20000190\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4RX-EE\" syi=\"30001300\"/>\r\n    <row c=\"W9MQ-1\" ci=\"20000190\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V3X-L8\" syi=\"30001301\"/>\r\n    <row c=\"W9MQ-1\" ci=\"20000190\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N0C-UN\" syi=\"30001302\"/>\r\n    <row c=\"W9MQ-1\" ci=\"20000190\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VG-6CH\" syi=\"30001303\"/>\r\n    <row c=\"W9MQ-1\" ci=\"20000190\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z0-TJW\" syi=\"30001304\"/>\r\n    <row c=\"W9MQ-1\" ci=\"20000190\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QHJ-FW\" syi=\"30001305\"/>\r\n    <row c=\"W9MQ-1\" ci=\"20000190\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9IPC-E\" syi=\"30001306\"/>\r\n    <row c=\"W9MQ-1\" ci=\"20000190\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EIV-1W\" syi=\"30001307\"/>\r\n    <row c=\"W9MQ-1\" ci=\"20000190\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S-1ZXZ\" syi=\"30001308\"/>\r\n    <row c=\"XHYS-O\" ci=\"20000191\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-5476\" syi=\"30001309\"/>\r\n    <row c=\"XHYS-O\" ci=\"20000191\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PZOZ-K\" syi=\"30001310\"/>\r\n    <row c=\"XHYS-O\" ci=\"20000191\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W3KK-R\" syi=\"30001311\"/>\r\n    <row c=\"XHYS-O\" ci=\"20000191\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"92D-OI\" syi=\"30001312\"/>\r\n    <row c=\"XHYS-O\" ci=\"20000191\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EK2-ET\" syi=\"30001313\"/>\r\n    <row c=\"XHYS-O\" ci=\"20000191\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SE-SHZ\" syi=\"30001314\"/>\r\n    <row c=\"Y8-HHZ\" ci=\"20000192\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JURU-T\" syi=\"30001315\"/>\r\n    <row c=\"Y8-HHZ\" ci=\"20000192\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MC6-5J\" syi=\"30001316\"/>\r\n    <row c=\"Y8-HHZ\" ci=\"20000192\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"65V-RH\" syi=\"30001317\"/>\r\n    <row c=\"Y8-HHZ\" ci=\"20000192\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-7IL9\" syi=\"30001318\"/>\r\n    <row c=\"Y8-HHZ\" ci=\"20000192\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2PLH-3\" syi=\"30001319\"/>\r\n    <row c=\"Y8-HHZ\" ci=\"20000192\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RQ9-OZ\" syi=\"30001320\"/>\r\n    <row c=\"Y8-HHZ\" ci=\"20000192\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-CZXG\" syi=\"30001321\"/>\r\n    <row c=\"Y8-HHZ\" ci=\"20000192\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-O2UT\" syi=\"30001322\"/>\r\n    <row c=\"Y8-HHZ\" ci=\"20000192\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q61Y-F\" syi=\"30001323\"/>\r\n    <row c=\"Y8HB-U\" ci=\"20000193\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PF-QHK\" syi=\"30001324\"/>\r\n    <row c=\"Y8HB-U\" ci=\"20000193\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XW-6TC\" syi=\"30001325\"/>\r\n    <row c=\"Y8HB-U\" ci=\"20000193\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-7SUI\" syi=\"30001326\"/>\r\n    <row c=\"Y8HB-U\" ci=\"20000193\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VVD-O6\" syi=\"30001327\"/>\r\n    <row c=\"Y8HB-U\" ci=\"20000193\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6ZJ-SC\" syi=\"30001328\"/>\r\n    <row c=\"Y8HB-U\" ci=\"20000193\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P-VYVL\" syi=\"30001329\"/>\r\n    <row c=\"Y8HB-U\" ci=\"20000193\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HD-JVQ\" syi=\"30001330\"/>\r\n    <row c=\"XMNF-7\" ci=\"20000194\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-AJ27\" syi=\"30001331\"/>\r\n    <row c=\"XMNF-7\" ci=\"20000194\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M2-2V1\" syi=\"30001332\"/>\r\n    <row c=\"XMNF-7\" ci=\"20000194\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2TH-3F\" syi=\"30001333\"/>\r\n    <row c=\"XMNF-7\" ci=\"20000194\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E1F-E5\" syi=\"30001334\"/>\r\n    <row c=\"XMNF-7\" ci=\"20000194\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4S-PVC\" syi=\"30001335\"/>\r\n    <row c=\"XMNF-7\" ci=\"20000194\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WLF-D3\" syi=\"30001336\"/>\r\n    <row c=\"L-1T22\" ci=\"20000195\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LHJ-2G\" syi=\"30001337\"/>\r\n    <row c=\"L-1T22\" ci=\"20000195\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SHJO-J\" syi=\"30001338\"/>\r\n    <row c=\"L-1T22\" ci=\"20000195\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6UQ-4U\" syi=\"30001339\"/>\r\n    <row c=\"L-1T22\" ci=\"20000195\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"430-BE\" syi=\"30001340\"/>\r\n    <row c=\"L-1T22\" ci=\"20000195\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OJ-CT4\" syi=\"30001341\"/>\r\n    <row c=\"L-1T22\" ci=\"20000195\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AZ-UWB\" syi=\"30001342\"/>\r\n    <row c=\"L-1T22\" ci=\"20000195\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-S5BM\" syi=\"30001343\"/>\r\n    <row c=\"0HD-6C\" ci=\"20000196\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FHB-QA\" syi=\"30001344\"/>\r\n    <row c=\"0HD-6C\" ci=\"20000196\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z3U-GI\" syi=\"30001345\"/>\r\n    <row c=\"0HD-6C\" ci=\"20000196\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B3QP-K\" syi=\"30001346\"/>\r\n    <row c=\"0HD-6C\" ci=\"20000196\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GVZ-1W\" syi=\"30001347\"/>\r\n    <row c=\"0HD-6C\" ci=\"20000196\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G9D-XW\" syi=\"30001348\"/>\r\n    <row c=\"0HD-6C\" ci=\"20000196\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"42XJ-N\" syi=\"30001349\"/>\r\n    <row c=\"0KTC-R\" ci=\"20000197\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-IE41\" syi=\"30001350\"/>\r\n    <row c=\"0KTC-R\" ci=\"20000197\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VG-QW1\" syi=\"30001351\"/>\r\n    <row c=\"0KTC-R\" ci=\"20000197\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2IBE-N\" syi=\"30001352\"/>\r\n    <row c=\"0KTC-R\" ci=\"20000197\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YJ3-UT\" syi=\"30001353\"/>\r\n    <row c=\"0KTC-R\" ci=\"20000197\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZD4-G9\" syi=\"30001354\"/>\r\n    <row c=\"0KTC-R\" ci=\"20000197\" r=\"Venal\" ri=\"10000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C2-DDA\" syi=\"30001355\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Dantumi\" syi=\"30001356\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Antiainen\" syi=\"30001357\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Ossa\" syi=\"30001358\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Semiki\" syi=\"30001359\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Kiskoken\" syi=\"30001360\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Aurohunen\" syi=\"30001361\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Veisto\" syi=\"30001362\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Sobaseki\" syi=\"30001363\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Funtanainen\" syi=\"30001364\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Isikemi\" syi=\"30001365\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Uosusuokko\" syi=\"30001366\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Hageken\" syi=\"30001367\"/>\r\n    <row c=\"Haurala\" ci=\"20000200\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Uemisaisen\" syi=\"30001368\"/>\r\n    <row c=\"Haurala\" ci=\"20000200\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Sotrentaira\" syi=\"30001369\"/>\r\n    <row c=\"Haurala\" ci=\"20000200\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Ouranienen\" syi=\"30001370\"/>\r\n    <row c=\"Haurala\" ci=\"20000200\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Erenta\" syi=\"30001371\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Kino\" syi=\"30001372\"/>\r\n    <row c=\"Haurala\" ci=\"20000200\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Raussinen\" syi=\"30001373\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Iidoken\" syi=\"30001374\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Tsuguwa\" syi=\"30001375\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Nourvukaiken\" syi=\"30001376\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Sarekuwa\" syi=\"30001377\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Ekura\" syi=\"30001378\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Tunttaras\" syi=\"30001379\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Vellaine\" syi=\"30001380\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Arvasaras\" syi=\"30001381\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Akonoinen\" syi=\"30001382\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Vaajaita\" syi=\"30001383\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Autaris\" syi=\"30001384\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Jan\" syi=\"30001385\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Saatuban\" syi=\"30001386\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Isikano\" syi=\"30001387\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Mara\" syi=\"30001388\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Isanamo\" syi=\"30001389\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Pakkonen\" syi=\"30001390\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Piekura\" syi=\"30001391\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Amsen\" syi=\"30001392\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Malkalen\" syi=\"30001393\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Korama\" syi=\"30001394\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Ylandoki\" syi=\"30001395\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Aakari\" syi=\"30001396\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Isseras\" syi=\"30001397\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Aunenen\" syi=\"30001398\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Elonaya\" syi=\"30001399\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Litiura\" syi=\"30001400\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Nonni\" syi=\"30001401\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Passari\" syi=\"30001402\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Piak\" syi=\"30001403\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Airkio\" syi=\"30001404\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Kakakela\" syi=\"30001405\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Kamokor\" syi=\"30001406\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Todaki\" syi=\"30001407\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Ruvas\" syi=\"30001408\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Umokka\" syi=\"30001409\"/>\r\n    <row c=\"Kainokai\" ci=\"20000207\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Kirras\" syi=\"30001410\"/>\r\n    <row c=\"Kainokai\" ci=\"20000207\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Autama\" syi=\"30001411\"/>\r\n    <row c=\"Kainokai\" ci=\"20000207\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Tsukuras\" syi=\"30001412\"/>\r\n    <row c=\"Krai Svarog\" ci=\"20000788\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Nani\" syi=\"30001413\"/>\r\n    <row c=\"Kainokai\" ci=\"20000207\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Ajanen\" syi=\"30001414\"/>\r\n    <row c=\"Kainokai\" ci=\"20000207\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Kuoka\" syi=\"30001415\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Liukikka\" syi=\"30001416\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Rauntaka\" syi=\"30001417\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Aikantoh\" syi=\"30001418\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Atai\" syi=\"30001419\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Daras\" syi=\"30001420\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Otalieto\" syi=\"30001421\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Iitanmadan\" syi=\"30001422\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Jotenen\" syi=\"30001423\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Haajinen\" syi=\"30001424\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Oipo\" syi=\"30001425\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Isinokka\" syi=\"30001426\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Yoma\" syi=\"30001427\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Ibura\" syi=\"30001428\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Torrinos\" syi=\"30001429\"/>\r\n    <row c=\"Malariya\" ci=\"20000210\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Endatoh\" syi=\"30001430\"/>\r\n    <row c=\"Malariya\" ci=\"20000210\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Aivoli\" syi=\"30001431\"/>\r\n    <row c=\"Malariya\" ci=\"20000210\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Uesuro\" syi=\"30001432\"/>\r\n    <row c=\"Malariya\" ci=\"20000210\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Oishami\" syi=\"30001433\"/>\r\n    <row c=\"Malariya\" ci=\"20000210\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Elanoda\" syi=\"30001434\"/>\r\n    <row c=\"Malariya\" ci=\"20000210\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Ohbochi\" syi=\"30001435\"/>\r\n    <row c=\"Malariya\" ci=\"20000210\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Isie\" syi=\"30001436\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Tamo\" syi=\"30001437\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Nannaras\" syi=\"30001438\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Anin\" syi=\"30001439\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Karjataimon\" syi=\"30001440\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Tartoken\" syi=\"30001441\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Saranen\" syi=\"30001442\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Vuorrassi\" syi=\"30001443\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Oimmo\" syi=\"30001444\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Nalvula\" syi=\"30001445\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Otsasai\" syi=\"30001446\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Taisy\" syi=\"30001447\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Hakonen\" syi=\"30001448\"/>\r\n    <row c=\"1-Z95W\" ci=\"20000213\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PZP1-D\" syi=\"30001449\"/>\r\n    <row c=\"1-Z95W\" ci=\"20000213\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R1KE-A\" syi=\"30001450\"/>\r\n    <row c=\"1-Z95W\" ci=\"20000213\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JGDF-B\" syi=\"30001451\"/>\r\n    <row c=\"1-Z95W\" ci=\"20000213\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1SR-HT\" syi=\"30001452\"/>\r\n    <row c=\"1-Z95W\" ci=\"20000213\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SQ-2XA\" syi=\"30001453\"/>\r\n    <row c=\"1-Z95W\" ci=\"20000213\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-FYJR\" syi=\"30001454\"/>\r\n    <row c=\"OG-DJD\" ci=\"20000214\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZA6-9N\" syi=\"30001455\"/>\r\n    <row c=\"OG-DJD\" ci=\"20000214\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J1-6CJ\" syi=\"30001456\"/>\r\n    <row c=\"OG-DJD\" ci=\"20000214\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7H-Z5R\" syi=\"30001457\"/>\r\n    <row c=\"OG-DJD\" ci=\"20000214\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0RZ5-2\" syi=\"30001458\"/>\r\n    <row c=\"OG-DJD\" ci=\"20000214\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A9-NB6\" syi=\"30001459\"/>\r\n    <row c=\"OG-DJD\" ci=\"20000214\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LG1-TA\" syi=\"30001460\"/>\r\n    <row c=\"05-1B6\" ci=\"20000215\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TNK-BQ\" syi=\"30001461\"/>\r\n    <row c=\"05-1B6\" ci=\"20000215\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E2AX-5\" syi=\"30001462\"/>\r\n    <row c=\"05-1B6\" ci=\"20000215\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HPE-KP\" syi=\"30001463\"/>\r\n    <row c=\"05-1B6\" ci=\"20000215\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"THS-MN\" syi=\"30001464\"/>\r\n    <row c=\"05-1B6\" ci=\"20000215\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UBES-K\" syi=\"30001465\"/>\r\n    <row c=\"05-1B6\" ci=\"20000215\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I-R8B0\" syi=\"30001466\"/>\r\n    <row c=\"WSC-AL\" ci=\"20000216\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QIW-TQ\" syi=\"30001467\"/>\r\n    <row c=\"WSC-AL\" ci=\"20000216\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WLL-QX\" syi=\"30001468\"/>\r\n    <row c=\"WSC-AL\" ci=\"20000216\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BJC4-8\" syi=\"30001469\"/>\r\n    <row c=\"WSC-AL\" ci=\"20000216\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PQA-9K\" syi=\"30001470\"/>\r\n    <row c=\"WSC-AL\" ci=\"20000216\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S5-U0R\" syi=\"30001471\"/>\r\n    <row c=\"WSC-AL\" ci=\"20000216\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CW-R71\" syi=\"30001472\"/>\r\n    <row c=\"BS8-ZQ\" ci=\"20000217\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QO-3LC\" syi=\"30001473\"/>\r\n    <row c=\"BS8-ZQ\" ci=\"20000217\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3E-ER7\" syi=\"30001474\"/>\r\n    <row c=\"BS8-ZQ\" ci=\"20000217\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"REZ-YZ\" syi=\"30001475\"/>\r\n    <row c=\"BS8-ZQ\" ci=\"20000217\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OU-AIT\" syi=\"30001476\"/>\r\n    <row c=\"BS8-ZQ\" ci=\"20000217\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VYX2-I\" syi=\"30001477\"/>\r\n    <row c=\"BS8-ZQ\" ci=\"20000217\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-P3CQ\" syi=\"30001478\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-FDTD\" syi=\"30001479\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"54-VNO\" syi=\"30001480\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IAMZ-5\" syi=\"30001481\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HD3-JK\" syi=\"30001482\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PBXG-A\" syi=\"30001483\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-ERCP\" syi=\"30001484\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KN7M-N\" syi=\"30001485\"/>\r\n    <row c=\"4I-WP1\" ci=\"20000219\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-D1DW\" syi=\"30001486\"/>\r\n    <row c=\"4I-WP1\" ci=\"20000219\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FO-3PJ\" syi=\"30001487\"/>\r\n    <row c=\"4I-WP1\" ci=\"20000219\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6-QXE6\" syi=\"30001488\"/>\r\n    <row c=\"4I-WP1\" ci=\"20000219\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-FKXV\" syi=\"30001489\"/>\r\n    <row c=\"4I-WP1\" ci=\"20000219\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X7-8IG\" syi=\"30001490\"/>\r\n    <row c=\"4I-WP1\" ci=\"20000219\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R-G1SF\" syi=\"30001491\"/>\r\n    <row c=\"NSM-6F\" ci=\"20000220\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6-NCE7\" syi=\"30001492\"/>\r\n    <row c=\"NSM-6F\" ci=\"20000220\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WDJQ-G\" syi=\"30001493\"/>\r\n    <row c=\"NSM-6F\" ci=\"20000220\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JS3-RS\" syi=\"30001494\"/>\r\n    <row c=\"NSM-6F\" ci=\"20000220\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JX-T1W\" syi=\"30001495\"/>\r\n    <row c=\"NSM-6F\" ci=\"20000220\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CZ-CED\" syi=\"30001496\"/>\r\n    <row c=\"NSM-6F\" ci=\"20000220\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BKK4-H\" syi=\"30001497\"/>\r\n    <row c=\"NSM-6F\" ci=\"20000220\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-4V7U\" syi=\"30001498\"/>\r\n    <row c=\"NSM-6F\" ci=\"20000220\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-TPN0\" syi=\"30001499\"/>\r\n    <row c=\"F-8DMX\" ci=\"20000221\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3-XORH\" syi=\"30001500\"/>\r\n    <row c=\"F-8DMX\" ci=\"20000221\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G1VU-H\" syi=\"30001501\"/>\r\n    <row c=\"F-8DMX\" ci=\"20000221\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W6H6-K\" syi=\"30001502\"/>\r\n    <row c=\"F-8DMX\" ci=\"20000221\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6-23NU\" syi=\"30001503\"/>\r\n    <row c=\"F-8DMX\" ci=\"20000221\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DVAR-P\" syi=\"30001504\"/>\r\n    <row c=\"F-8DMX\" ci=\"20000221\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J-JS0D\" syi=\"30001505\"/>\r\n    <row c=\"D-YMGR\" ci=\"20000222\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VR3-PS\" syi=\"30001506\"/>\r\n    <row c=\"D-YMGR\" ci=\"20000222\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LH-J8H\" syi=\"30001507\"/>\r\n    <row c=\"D-YMGR\" ci=\"20000222\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I9D-0D\" syi=\"30001508\"/>\r\n    <row c=\"D-YMGR\" ci=\"20000222\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HGB-C6\" syi=\"30001509\"/>\r\n    <row c=\"D-YMGR\" ci=\"20000222\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2L5-FI\" syi=\"30001510\"/>\r\n    <row c=\"D-YMGR\" ci=\"20000222\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RS08-B\" syi=\"30001511\"/>\r\n    <row c=\"2RX9-6\" ci=\"20000223\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4U-14I\" syi=\"30001512\"/>\r\n    <row c=\"2RX9-6\" ci=\"20000223\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-EDXD\" syi=\"30001513\"/>\r\n    <row c=\"2RX9-6\" ci=\"20000223\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8-ULAA\" syi=\"30001514\"/>\r\n    <row c=\"2RX9-6\" ci=\"20000223\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KF1-DU\" syi=\"30001515\"/>\r\n    <row c=\"2RX9-6\" ci=\"20000223\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W-WQM5\" syi=\"30001516\"/>\r\n    <row c=\"2RX9-6\" ci=\"20000223\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G5J-LH\" syi=\"30001517\"/>\r\n    <row c=\"3A-CND\" ci=\"20000224\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H7OL-I\" syi=\"30001518\"/>\r\n    <row c=\"3A-CND\" ci=\"20000224\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TO21-U\" syi=\"30001519\"/>\r\n    <row c=\"3A-CND\" ci=\"20000224\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RN-5K9\" syi=\"30001520\"/>\r\n    <row c=\"3A-CND\" ci=\"20000224\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0M-M64\" syi=\"30001521\"/>\r\n    <row c=\"3A-CND\" ci=\"20000224\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W5-SGC\" syi=\"30001522\"/>\r\n    <row c=\"3A-CND\" ci=\"20000224\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8RV-1L\" syi=\"30001523\"/>\r\n    <row c=\"3A-CND\" ci=\"20000224\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1C-TD6\" syi=\"30001524\"/>\r\n    <row c=\"3A-CND\" ci=\"20000224\" r=\"J7HZ-F\" ri=\"10000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YBYX-1\" syi=\"30001525\"/>\r\n    <row c=\"Z6T6-B\" ci=\"20000225\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-WG68\" syi=\"30001526\"/>\r\n    <row c=\"Z6T6-B\" ci=\"20000225\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E4-E8W\" syi=\"30001527\"/>\r\n    <row c=\"Z6T6-B\" ci=\"20000225\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HIK-MC\" syi=\"30001528\"/>\r\n    <row c=\"Z6T6-B\" ci=\"20000225\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B9EA-G\" syi=\"30001529\"/>\r\n    <row c=\"Z6T6-B\" ci=\"20000225\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-BFLT\" syi=\"30001530\"/>\r\n    <row c=\"Z6T6-B\" ci=\"20000225\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GZM-KB\" syi=\"30001531\"/>\r\n    <row c=\"Z6T6-B\" ci=\"20000225\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5LAJ-8\" syi=\"30001532\"/>\r\n    <row c=\"OC-TTA\" ci=\"20000226\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C6C-K9\" syi=\"30001533\"/>\r\n    <row c=\"OC-TTA\" ci=\"20000226\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AL-JSG\" syi=\"30001534\"/>\r\n    <row c=\"OC-TTA\" ci=\"20000226\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ETO-OT\" syi=\"30001535\"/>\r\n    <row c=\"OC-TTA\" ci=\"20000226\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KPI-OW\" syi=\"30001536\"/>\r\n    <row c=\"OC-TTA\" ci=\"20000226\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-J6SN\" syi=\"30001537\"/>\r\n    <row c=\"OC-TTA\" ci=\"20000226\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OTJ-4W\" syi=\"30001538\"/>\r\n    <row c=\"OC-TTA\" ci=\"20000226\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AG-SYG\" syi=\"30001539\"/>\r\n    <row c=\"OC-TTA\" ci=\"20000226\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1I5-0V\" syi=\"30001540\"/>\r\n    <row c=\"J0-59Y\" ci=\"20000227\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VX1-HV\" syi=\"30001541\"/>\r\n    <row c=\"J0-59Y\" ci=\"20000227\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JNG7-K\" syi=\"30001542\"/>\r\n    <row c=\"J0-59Y\" ci=\"20000227\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K-XJJT\" syi=\"30001543\"/>\r\n    <row c=\"J0-59Y\" ci=\"20000227\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FO1U-K\" syi=\"30001544\"/>\r\n    <row c=\"J0-59Y\" ci=\"20000227\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6U-1RX\" syi=\"30001545\"/>\r\n    <row c=\"J0-59Y\" ci=\"20000227\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y4OK-W\" syi=\"30001546\"/>\r\n    <row c=\"J0-59Y\" ci=\"20000227\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P-NI4K\" syi=\"30001547\"/>\r\n    <row c=\"3D-ROC\" ci=\"20000228\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T6T-BQ\" syi=\"30001548\"/>\r\n    <row c=\"3D-ROC\" ci=\"20000228\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-PS2Y\" syi=\"30001549\"/>\r\n    <row c=\"3D-ROC\" ci=\"20000228\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K-BBYU\" syi=\"30001550\"/>\r\n    <row c=\"3D-ROC\" ci=\"20000228\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0J-MQW\" syi=\"30001551\"/>\r\n    <row c=\"3D-ROC\" ci=\"20000228\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XT-1E0\" syi=\"30001552\"/>\r\n    <row c=\"3D-ROC\" ci=\"20000228\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3ET-G8\" syi=\"30001553\"/>\r\n    <row c=\"4-0VL9\" ci=\"20000229\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MOSA-I\" syi=\"30001554\"/>\r\n    <row c=\"4-0VL9\" ci=\"20000229\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B6-XE8\" syi=\"30001555\"/>\r\n    <row c=\"4-0VL9\" ci=\"20000229\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JLH-FN\" syi=\"30001556\"/>\r\n    <row c=\"4-0VL9\" ci=\"20000229\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DFTK-D\" syi=\"30001557\"/>\r\n    <row c=\"4-0VL9\" ci=\"20000229\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4HF-4R\" syi=\"30001558\"/>\r\n    <row c=\"4-0VL9\" ci=\"20000229\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y8K-5B\" syi=\"30001559\"/>\r\n    <row c=\"4-0VL9\" ci=\"20000229\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L7-BLT\" syi=\"30001560\"/>\r\n    <row c=\"E-UBWI\" ci=\"20000230\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8P-LKL\" syi=\"30001561\"/>\r\n    <row c=\"E-UBWI\" ci=\"20000230\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-UVY6\" syi=\"30001562\"/>\r\n    <row c=\"E-UBWI\" ci=\"20000230\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RXA-W1\" syi=\"30001563\"/>\r\n    <row c=\"E-UBWI\" ci=\"20000230\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QFU-4S\" syi=\"30001564\"/>\r\n    <row c=\"E-UBWI\" ci=\"20000230\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QQGH-G\" syi=\"30001565\"/>\r\n    <row c=\"E-UBWI\" ci=\"20000230\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VK6-EZ\" syi=\"30001566\"/>\r\n    <row c=\"E-UBWI\" ci=\"20000230\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JVA-FE\" syi=\"30001567\"/>\r\n    <row c=\"E1L-UY\" ci=\"20000231\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P65-TA\" syi=\"30001568\"/>\r\n    <row c=\"E1L-UY\" ci=\"20000231\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-VFVB\" syi=\"30001569\"/>\r\n    <row c=\"E1L-UY\" ci=\"20000231\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y4B-BQ\" syi=\"30001570\"/>\r\n    <row c=\"E1L-UY\" ci=\"20000231\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EU-WFW\" syi=\"30001571\"/>\r\n    <row c=\"E1L-UY\" ci=\"20000231\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K-YL9T\" syi=\"30001572\"/>\r\n    <row c=\"E1L-UY\" ci=\"20000231\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GTB-O4\" syi=\"30001573\"/>\r\n    <row c=\"P-FL48\" ci=\"20000232\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6W-6O9\" syi=\"30001574\"/>\r\n    <row c=\"P-FL48\" ci=\"20000232\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H4X-0I\" syi=\"30001575\"/>\r\n    <row c=\"P-FL48\" ci=\"20000232\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-BHDN\" syi=\"30001576\"/>\r\n    <row c=\"P-FL48\" ci=\"20000232\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R-RE2B\" syi=\"30001577\"/>\r\n    <row c=\"P-FL48\" ci=\"20000232\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4DH-ST\" syi=\"30001578\"/>\r\n    <row c=\"P-FL48\" ci=\"20000232\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OSW-0P\" syi=\"30001579\"/>\r\n    <row c=\"OWT3-6\" ci=\"20000233\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GF-GR7\" syi=\"30001580\"/>\r\n    <row c=\"OWT3-6\" ci=\"20000233\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DVN6-0\" syi=\"30001581\"/>\r\n    <row c=\"OWT3-6\" ci=\"20000233\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z19-B8\" syi=\"30001582\"/>\r\n    <row c=\"OWT3-6\" ci=\"20000233\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HPMN-V\" syi=\"30001583\"/>\r\n    <row c=\"OWT3-6\" ci=\"20000233\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XR-ZL7\" syi=\"30001584\"/>\r\n    <row c=\"OWT3-6\" ci=\"20000233\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U1-VHY\" syi=\"30001585\"/>\r\n    <row c=\"E65-47\" ci=\"20000234\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OTJ9-E\" syi=\"30001586\"/>\r\n    <row c=\"E65-47\" ci=\"20000234\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LH-LY1\" syi=\"30001587\"/>\r\n    <row c=\"E65-47\" ci=\"20000234\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7-QOYS\" syi=\"30001588\"/>\r\n    <row c=\"E65-47\" ci=\"20000234\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KS8G-M\" syi=\"30001589\"/>\r\n    <row c=\"E65-47\" ci=\"20000234\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZWM-BB\" syi=\"30001590\"/>\r\n    <row c=\"E65-47\" ci=\"20000234\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S-CUEA\" syi=\"30001591\"/>\r\n    <row c=\"MY-HQD\" ci=\"20000235\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-EUY2\" syi=\"30001592\"/>\r\n    <row c=\"MY-HQD\" ci=\"20000235\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JL-ZUQ\" syi=\"30001593\"/>\r\n    <row c=\"MY-HQD\" ci=\"20000235\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-KHRZ\" syi=\"30001594\"/>\r\n    <row c=\"MY-HQD\" ci=\"20000235\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WIW-X8\" syi=\"30001595\"/>\r\n    <row c=\"MY-HQD\" ci=\"20000235\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QRH-BF\" syi=\"30001596\"/>\r\n    <row c=\"MY-HQD\" ci=\"20000235\" r=\"The Spire\" ri=\"10000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-NP5O\" syi=\"30001597\"/>\r\n    <row c=\"O-BSIB\" ci=\"20000236\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2-NF2Z\" syi=\"30001598\"/>\r\n    <row c=\"O-BSIB\" ci=\"20000236\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0Z-VHC\" syi=\"30001599\"/>\r\n    <row c=\"O-BSIB\" ci=\"20000236\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-BUSQ\" syi=\"30001600\"/>\r\n    <row c=\"O-BSIB\" ci=\"20000236\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LQB-TC\" syi=\"30001601\"/>\r\n    <row c=\"O-BSIB\" ci=\"20000236\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"II-1B3\" syi=\"30001602\"/>\r\n    <row c=\"O-BSIB\" ci=\"20000236\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6-HFD6\" syi=\"30001603\"/>\r\n    <row c=\"W1-F3U\" ci=\"20000237\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P3UD-M\" syi=\"30001604\"/>\r\n    <row c=\"W1-F3U\" ci=\"20000237\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LCN-0V\" syi=\"30001605\"/>\r\n    <row c=\"W1-F3U\" ci=\"20000237\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FX-XMW\" syi=\"30001606\"/>\r\n    <row c=\"W1-F3U\" ci=\"20000237\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-N6MC\" syi=\"30001607\"/>\r\n    <row c=\"W1-F3U\" ci=\"20000237\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7-8XK0\" syi=\"30001608\"/>\r\n    <row c=\"W1-F3U\" ci=\"20000237\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"90G-OA\" syi=\"30001609\"/>\r\n    <row c=\"826-A5\" ci=\"20000238\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DT-7EO\" syi=\"30001610\"/>\r\n    <row c=\"826-A5\" ci=\"20000238\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-Y06L\" syi=\"30001611\"/>\r\n    <row c=\"826-A5\" ci=\"20000238\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HHQ-8L\" syi=\"30001612\"/>\r\n    <row c=\"826-A5\" ci=\"20000238\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-KPAR\" syi=\"30001613\"/>\r\n    <row c=\"826-A5\" ci=\"20000238\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8U-RZH\" syi=\"30001614\"/>\r\n    <row c=\"826-A5\" ci=\"20000238\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2RV-06\" syi=\"30001615\"/>\r\n    <row c=\"826-A5\" ci=\"20000238\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CLDT-L\" syi=\"30001616\"/>\r\n    <row c=\"826-A5\" ci=\"20000238\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QU7-EE\" syi=\"30001617\"/>\r\n    <row c=\"6I-9Y2\" ci=\"20000239\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UC-X28\" syi=\"30001618\"/>\r\n    <row c=\"6I-9Y2\" ci=\"20000239\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R79-I7\" syi=\"30001619\"/>\r\n    <row c=\"6I-9Y2\" ci=\"20000239\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-RPGP\" syi=\"30001620\"/>\r\n    <row c=\"6I-9Y2\" ci=\"20000239\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZV-KZO\" syi=\"30001621\"/>\r\n    <row c=\"6I-9Y2\" ci=\"20000239\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NSE-U1\" syi=\"30001622\"/>\r\n    <row c=\"6I-9Y2\" ci=\"20000239\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KER-EU\" syi=\"30001623\"/>\r\n    <row c=\"B9J-NT\" ci=\"20000240\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"69A-54\" syi=\"30001624\"/>\r\n    <row c=\"B9J-NT\" ci=\"20000240\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M9-OS2\" syi=\"30001625\"/>\r\n    <row c=\"B9J-NT\" ci=\"20000240\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5V-YL6\" syi=\"30001626\"/>\r\n    <row c=\"B9J-NT\" ci=\"20000240\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8-UWFS\" syi=\"30001627\"/>\r\n    <row c=\"B9J-NT\" ci=\"20000240\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PQWA-L\" syi=\"30001628\"/>\r\n    <row c=\"B9J-NT\" ci=\"20000240\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BWO-UU\" syi=\"30001629\"/>\r\n    <row c=\"B9J-NT\" ci=\"20000240\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SQVI-U\" syi=\"30001630\"/>\r\n    <row c=\"UN2H-D\" ci=\"20000241\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T-YWDD\" syi=\"30001631\"/>\r\n    <row c=\"UN2H-D\" ci=\"20000241\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DLY-RG\" syi=\"30001632\"/>\r\n    <row c=\"UN2H-D\" ci=\"20000241\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T-C5A0\" syi=\"30001633\"/>\r\n    <row c=\"UN2H-D\" ci=\"20000241\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UP-L3Y\" syi=\"30001634\"/>\r\n    <row c=\"UN2H-D\" ci=\"20000241\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-KBNV\" syi=\"30001635\"/>\r\n    <row c=\"UN2H-D\" ci=\"20000241\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JL-P9P\" syi=\"30001636\"/>\r\n    <row c=\"F-0CTG\" ci=\"20000242\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FR-RCH\" syi=\"30001637\"/>\r\n    <row c=\"F-0CTG\" ci=\"20000242\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FNS3-F\" syi=\"30001638\"/>\r\n    <row c=\"F-0CTG\" ci=\"20000242\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7BA-TK\" syi=\"30001639\"/>\r\n    <row c=\"F-0CTG\" ci=\"20000242\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IAWJ-X\" syi=\"30001640\"/>\r\n    <row c=\"F-0CTG\" ci=\"20000242\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"50-TJY\" syi=\"30001641\"/>\r\n    <row c=\"F-0CTG\" ci=\"20000242\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3-CE1R\" syi=\"30001642\"/>\r\n    <row c=\"F-0CTG\" ci=\"20000242\" r=\"A821-A\" ri=\"10000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0IRK-R\" syi=\"30001643\"/>\r\n    <row c=\"Sanair\" ci=\"20000243\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Tividu\" syi=\"30001644\"/>\r\n    <row c=\"Sanair\" ci=\"20000243\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Tendhyes\" syi=\"30001645\"/>\r\n    <row c=\"Sanair\" ci=\"20000243\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Goram\" syi=\"30001646\"/>\r\n    <row c=\"Sanair\" ci=\"20000243\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Anjedin\" syi=\"30001647\"/>\r\n    <row c=\"Sanair\" ci=\"20000243\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Adahum\" syi=\"30001648\"/>\r\n    <row c=\"Sanair\" ci=\"20000243\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Ahrosseas\" syi=\"30001649\"/>\r\n    <row c=\"Somi\" ci=\"20000244\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Riramia\" syi=\"30001650\"/>\r\n    <row c=\"Somi\" ci=\"20000244\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Nafomeh\" syi=\"30001651\"/>\r\n    <row c=\"Somi\" ci=\"20000244\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Pimsu\" syi=\"30001652\"/>\r\n    <row c=\"Somi\" ci=\"20000244\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Jarzalad\" syi=\"30001653\"/>\r\n    <row c=\"Somi\" ci=\"20000244\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Matyas\" syi=\"30001654\"/>\r\n    <row c=\"Somi\" ci=\"20000244\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Imeshasa\" syi=\"30001655\"/>\r\n    <row c=\"Mise\" ci=\"20000245\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Ivih\" syi=\"30001656\"/>\r\n    <row c=\"Mise\" ci=\"20000245\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Seil\" syi=\"30001657\"/>\r\n    <row c=\"Mise\" ci=\"20000245\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Mani\" syi=\"30001658\"/>\r\n    <row c=\"Mise\" ci=\"20000245\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Sehmosh\" syi=\"30001659\"/>\r\n    <row c=\"Mise\" ci=\"20000245\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Dabrid\" syi=\"30001660\"/>\r\n    <row c=\"Mise\" ci=\"20000245\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Gyerzen\" syi=\"30001661\"/>\r\n    <row c=\"Emsek\" ci=\"20000246\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Hibi\" syi=\"30001662\"/>\r\n    <row c=\"Emsek\" ci=\"20000246\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Gemodi\" syi=\"30001663\"/>\r\n    <row c=\"Emsek\" ci=\"20000246\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Chamume\" syi=\"30001664\"/>\r\n    <row c=\"Emsek\" ci=\"20000246\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Nuzair\" syi=\"30001665\"/>\r\n    <row c=\"Emsek\" ci=\"20000246\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Pera\" syi=\"30001666\"/>\r\n    <row c=\"Emsek\" ci=\"20000246\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Shousran\" syi=\"30001667\"/>\r\n    <row c=\"Emsek\" ci=\"20000246\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Yong\" syi=\"30001668\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Pimebeka\" syi=\"30001669\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Baviasi\" syi=\"30001670\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Tash-Murkon Prime\" syi=\"30001671\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Emrayur\" syi=\"30001672\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Shesha\" syi=\"30001673\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Hilaban\" syi=\"30001674\"/>\r\n    <row c=\"Mimishia\" ci=\"20000248\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Sacalan\" syi=\"30001675\"/>\r\n    <row c=\"Mimishia\" ci=\"20000248\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Mimen\" syi=\"30001676\"/>\r\n    <row c=\"Mimishia\" ci=\"20000248\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Thashkarai\" syi=\"30001677\"/>\r\n    <row c=\"Mimishia\" ci=\"20000248\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Atoosh\" syi=\"30001678\"/>\r\n    <row c=\"Mimishia\" ci=\"20000248\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Unkah\" syi=\"30001679\"/>\r\n    <row c=\"Mimishia\" ci=\"20000248\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Hoona\" syi=\"30001680\"/>\r\n    <row c=\"Sukanan\" ci=\"20000249\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Teshkat\" syi=\"30001681\"/>\r\n    <row c=\"Sukanan\" ci=\"20000249\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Keshirou\" syi=\"30001682\"/>\r\n    <row c=\"Sukanan\" ci=\"20000249\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Nasesharafa\" syi=\"30001683\"/>\r\n    <row c=\"Sukanan\" ci=\"20000249\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Tirbam\" syi=\"30001684\"/>\r\n    <row c=\"Sukanan\" ci=\"20000249\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Ordat\" syi=\"30001685\"/>\r\n    <row c=\"Sukanan\" ci=\"20000249\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Rethan\" syi=\"30001686\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Lossa\" syi=\"30001687\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Onazel\" syi=\"30001688\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Asesamy\" syi=\"30001689\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Hostni\" syi=\"30001690\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Mimime\" syi=\"30001691\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Kibursha\" syi=\"30001692\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Perdan\" syi=\"30001693\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Abai\" syi=\"30001694\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Nehkiah\" syi=\"30001695\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Iro\" syi=\"30001696\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Ahkour\" syi=\"30001697\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Gaknem\" syi=\"30001698\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Siyi\" syi=\"30001699\"/>\r\n    <row c=\"Nasorin\" ci=\"20000252\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Remoriu\" syi=\"30001700\"/>\r\n    <row c=\"Nasorin\" ci=\"20000252\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Yanuel\" syi=\"30001701\"/>\r\n    <row c=\"Nasorin\" ci=\"20000252\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Nafrivik\" syi=\"30001702\"/>\r\n    <row c=\"Nasorin\" ci=\"20000252\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Taru\" syi=\"30001703\"/>\r\n    <row c=\"Nasorin\" ci=\"20000252\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Arkoz\" syi=\"30001704\"/>\r\n    <row c=\"Nasorin\" ci=\"20000252\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Azhgabid\" syi=\"30001705\"/>\r\n    <row c=\"Nasorin\" ci=\"20000252\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Jinizu\" syi=\"30001706\"/>\r\n    <row c=\"Nasorin\" ci=\"20000252\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Phoren\" syi=\"30001707\"/>\r\n    <row c=\"Tsemshatel\" ci=\"20000253\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Asezai\" syi=\"30001708\"/>\r\n    <row c=\"Tsemshatel\" ci=\"20000253\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Ferira\" syi=\"30001709\"/>\r\n    <row c=\"Tsemshatel\" ci=\"20000253\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Yeder\" syi=\"30001710\"/>\r\n    <row c=\"Tsemshatel\" ci=\"20000253\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Azerakish\" syi=\"30001711\"/>\r\n    <row c=\"Tsemshatel\" ci=\"20000253\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Lari\" syi=\"30001712\"/>\r\n    <row c=\"Tsemshatel\" ci=\"20000253\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Yasud\" syi=\"30001713\"/>\r\n    <row c=\"Tsemshatel\" ci=\"20000253\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Ghishul\" syi=\"30001714\"/>\r\n    <row c=\"Tsemshatel\" ci=\"20000253\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Moutid\" syi=\"30001715\"/>\r\n    <row c=\"Anidaza\" ci=\"20000254\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Goni\" syi=\"30001716\"/>\r\n    <row c=\"Anidaza\" ci=\"20000254\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Adar\" syi=\"30001717\"/>\r\n    <row c=\"Anidaza\" ci=\"20000254\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Paye\" syi=\"30001718\"/>\r\n    <row c=\"Anidaza\" ci=\"20000254\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Sagain\" syi=\"30001719\"/>\r\n    <row c=\"Anidaza\" ci=\"20000254\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Modun\" syi=\"30001720\"/>\r\n    <row c=\"Anidaza\" ci=\"20000254\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Saminer\" syi=\"30001721\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Marthia\" syi=\"30001722\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Assiad\" syi=\"30001723\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Rumida\" syi=\"30001724\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Nosodnis\" syi=\"30001725\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Iswa\" syi=\"30001726\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Rand\" syi=\"30001727\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Sizamod\" syi=\"30001728\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Sinid\" syi=\"30001729\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Alra\" syi=\"30001730\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Ilas\" syi=\"30001731\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Zith\" syi=\"30001732\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Tew\" syi=\"30001733\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Zehru\" syi=\"30001734\"/>\r\n    <row c=\"Peges\" ci=\"20000257\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Uhodoh\" syi=\"30001735\"/>\r\n    <row c=\"Peges\" ci=\"20000257\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Esa\" syi=\"30001736\"/>\r\n    <row c=\"Peges\" ci=\"20000257\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Hath\" syi=\"30001737\"/>\r\n    <row c=\"Peges\" ci=\"20000257\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Judra\" syi=\"30001738\"/>\r\n    <row c=\"Peges\" ci=\"20000257\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Sharios\" syi=\"30001739\"/>\r\n    <row c=\"Peges\" ci=\"20000257\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Arakor\" syi=\"30001740\"/>\r\n    <row c=\"Peges\" ci=\"20000257\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Ahteer\" syi=\"30001741\"/>\r\n    <row c=\"Peges\" ci=\"20000257\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Kari\" syi=\"30001742\"/>\r\n    <row c=\"B-D245\" ci=\"20000258\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JUE-DX\" syi=\"30001743\"/>\r\n    <row c=\"B-D245\" ci=\"20000258\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HLR-GL\" syi=\"30001744\"/>\r\n    <row c=\"B-D245\" ci=\"20000258\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"80G-H5\" syi=\"30001745\"/>\r\n    <row c=\"B-D245\" ci=\"20000258\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2EV-BA\" syi=\"30001746\"/>\r\n    <row c=\"B-D245\" ci=\"20000258\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M1-PX9\" syi=\"30001747\"/>\r\n    <row c=\"B-D245\" ci=\"20000258\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W9-TFD\" syi=\"30001748\"/>\r\n    <row c=\"X5O9-E\" ci=\"20000259\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QHH-13\" syi=\"30001749\"/>\r\n    <row c=\"X5O9-E\" ci=\"20000259\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J4AQ-O\" syi=\"30001750\"/>\r\n    <row c=\"X5O9-E\" ci=\"20000259\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-O2GN\" syi=\"30001751\"/>\r\n    <row c=\"X5O9-E\" ci=\"20000259\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I-HRX3\" syi=\"30001752\"/>\r\n    <row c=\"X5O9-E\" ci=\"20000259\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XUPK-Z\" syi=\"30001753\"/>\r\n    <row c=\"X5O9-E\" ci=\"20000259\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M4U-EH\" syi=\"30001754\"/>\r\n    <row c=\"J33-JR\" ci=\"20000260\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WK2F-Y\" syi=\"30001755\"/>\r\n    <row c=\"J33-JR\" ci=\"20000260\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WIO-OL\" syi=\"30001756\"/>\r\n    <row c=\"J33-JR\" ci=\"20000260\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1-10QG\" syi=\"30001757\"/>\r\n    <row c=\"J33-JR\" ci=\"20000260\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YQM-P1\" syi=\"30001758\"/>\r\n    <row c=\"J33-JR\" ci=\"20000260\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6-GRN7\" syi=\"30001759\"/>\r\n    <row c=\"J33-JR\" ci=\"20000260\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TFPT-U\" syi=\"30001760\"/>\r\n    <row c=\"J33-JR\" ci=\"20000260\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D-JVGJ\" syi=\"30001761\"/>\r\n    <row c=\"AGI1-F\" ci=\"20000261\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K4UV-G\" syi=\"30001762\"/>\r\n    <row c=\"AGI1-F\" ci=\"20000261\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q7E-DU\" syi=\"30001763\"/>\r\n    <row c=\"AGI1-F\" ci=\"20000261\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9Z-XJN\" syi=\"30001764\"/>\r\n    <row c=\"AGI1-F\" ci=\"20000261\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZEZ1-9\" syi=\"30001765\"/>\r\n    <row c=\"AGI1-F\" ci=\"20000261\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QFRV-2\" syi=\"30001766\"/>\r\n    <row c=\"AGI1-F\" ci=\"20000261\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HZID-J\" syi=\"30001767\"/>\r\n    <row c=\"U-IOR1\" ci=\"20000262\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8-AA98\" syi=\"30001768\"/>\r\n    <row c=\"U-IOR1\" ci=\"20000262\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EZWQ-X\" syi=\"30001769\"/>\r\n    <row c=\"U-IOR1\" ci=\"20000262\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2ULC-J\" syi=\"30001770\"/>\r\n    <row c=\"U-IOR1\" ci=\"20000262\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T0DT-T\" syi=\"30001771\"/>\r\n    <row c=\"U-IOR1\" ci=\"20000262\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QG3-Z0\" syi=\"30001772\"/>\r\n    <row c=\"U-IOR1\" ci=\"20000262\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RT64-C\" syi=\"30001773\"/>\r\n    <row c=\"NPL-WH\" ci=\"20000263\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2ID-87\" syi=\"30001774\"/>\r\n    <row c=\"NPL-WH\" ci=\"20000263\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FVQF-W\" syi=\"30001775\"/>\r\n    <row c=\"NPL-WH\" ci=\"20000263\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8K-QCZ\" syi=\"30001776\"/>\r\n    <row c=\"NPL-WH\" ci=\"20000263\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JBUH-H\" syi=\"30001777\"/>\r\n    <row c=\"NPL-WH\" ci=\"20000263\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XDTW-F\" syi=\"30001778\"/>\r\n    <row c=\"NPL-WH\" ci=\"20000263\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-4VQL\" syi=\"30001779\"/>\r\n    <row c=\"NPL-WH\" ci=\"20000263\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SN-DZ6\" syi=\"30001780\"/>\r\n    <row c=\"NPL-WH\" ci=\"20000263\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DJ-GBH\" syi=\"30001781\"/>\r\n    <row c=\"NPL-WH\" ci=\"20000263\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I0N-BM\" syi=\"30001782\"/>\r\n    <row c=\"IM-8S5\" ci=\"20000264\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QOK-SX\" syi=\"30001783\"/>\r\n    <row c=\"IM-8S5\" ci=\"20000264\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"24I-FE\" syi=\"30001784\"/>\r\n    <row c=\"IM-8S5\" ci=\"20000264\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4H-YJZ\" syi=\"30001785\"/>\r\n    <row c=\"IM-8S5\" ci=\"20000264\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2-84WC\" syi=\"30001786\"/>\r\n    <row c=\"IM-8S5\" ci=\"20000264\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-SEE6\" syi=\"30001787\"/>\r\n    <row c=\"IM-8S5\" ci=\"20000264\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U-FQ21\" syi=\"30001788\"/>\r\n    <row c=\"7-ZDOK\" ci=\"20000265\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NHKO-4\" syi=\"30001789\"/>\r\n    <row c=\"7-ZDOK\" ci=\"20000265\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KGCF-5\" syi=\"30001790\"/>\r\n    <row c=\"7-ZDOK\" ci=\"20000265\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-UO9U\" syi=\"30001791\"/>\r\n    <row c=\"7-ZDOK\" ci=\"20000265\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XME-SW\" syi=\"30001792\"/>\r\n    <row c=\"7-ZDOK\" ci=\"20000265\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JX-SOA\" syi=\"30001793\"/>\r\n    <row c=\"7-ZDOK\" ci=\"20000265\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VH-9VO\" syi=\"30001794\"/>\r\n    <row c=\"7-ZDOK\" ci=\"20000265\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P-T9VC\" syi=\"30001795\"/>\r\n    <row c=\"6GU-AT\" ci=\"20000266\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9S-GPT\" syi=\"30001796\"/>\r\n    <row c=\"6GU-AT\" ci=\"20000266\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UAJ5-K\" syi=\"30001797\"/>\r\n    <row c=\"6GU-AT\" ci=\"20000266\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XJ-AG7\" syi=\"30001798\"/>\r\n    <row c=\"6GU-AT\" ci=\"20000266\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2WU-XT\" syi=\"30001799\"/>\r\n    <row c=\"6GU-AT\" ci=\"20000266\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J7X-VN\" syi=\"30001800\"/>\r\n    <row c=\"6GU-AT\" ci=\"20000266\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-WCLC\" syi=\"30001801\"/>\r\n    <row c=\"6GU-AT\" ci=\"20000266\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-HE0N\" syi=\"30001802\"/>\r\n    <row c=\"6GU-AT\" ci=\"20000266\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YC-ANK\" syi=\"30001803\"/>\r\n    <row c=\"6GU-AT\" ci=\"20000266\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LTT-AP\" syi=\"30001804\"/>\r\n    <row c=\"2FYX-H\" ci=\"20000267\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8RL-OG\" syi=\"30001805\"/>\r\n    <row c=\"2FYX-H\" ci=\"20000267\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R3P0-Z\" syi=\"30001806\"/>\r\n    <row c=\"2FYX-H\" ci=\"20000267\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZZK-VF\" syi=\"30001807\"/>\r\n    <row c=\"2FYX-H\" ci=\"20000267\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SN-Q1T\" syi=\"30001808\"/>\r\n    <row c=\"2FYX-H\" ci=\"20000267\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L1YK-V\" syi=\"30001809\"/>\r\n    <row c=\"2FYX-H\" ci=\"20000267\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZJ-5IS\" syi=\"30001810\"/>\r\n    <row c=\"NOB-HD\" ci=\"20000268\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GA58-7\" syi=\"30001811\"/>\r\n    <row c=\"NOB-HD\" ci=\"20000268\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J-0KB3\" syi=\"30001812\"/>\r\n    <row c=\"NOB-HD\" ci=\"20000268\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UC-8XF\" syi=\"30001813\"/>\r\n    <row c=\"NOB-HD\" ci=\"20000268\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"90-A1P\" syi=\"30001814\"/>\r\n    <row c=\"NOB-HD\" ci=\"20000268\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4AZV-W\" syi=\"30001815\"/>\r\n    <row c=\"NOB-HD\" ci=\"20000268\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UNV-3J\" syi=\"30001816\"/>\r\n    <row c=\"NOB-HD\" ci=\"20000268\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7F-2FB\" syi=\"30001817\"/>\r\n    <row c=\"C9XB-L\" ci=\"20000269\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MC4C-H\" syi=\"30001818\"/>\r\n    <row c=\"C9XB-L\" ci=\"20000269\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OW-QXW\" syi=\"30001819\"/>\r\n    <row c=\"C9XB-L\" ci=\"20000269\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3-QNM4\" syi=\"30001820\"/>\r\n    <row c=\"C9XB-L\" ci=\"20000269\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UEPO-D\" syi=\"30001821\"/>\r\n    <row c=\"C9XB-L\" ci=\"20000269\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NQ-M6W\" syi=\"30001822\"/>\r\n    <row c=\"C9XB-L\" ci=\"20000269\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P-8PDJ\" syi=\"30001823\"/>\r\n    <row c=\"C9XB-L\" ci=\"20000269\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VE-W7O\" syi=\"30001824\"/>\r\n    <row c=\"KPU3-3\" ci=\"20000270\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CNHV-M\" syi=\"30001825\"/>\r\n    <row c=\"KPU3-3\" ci=\"20000270\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NEU-UD\" syi=\"30001826\"/>\r\n    <row c=\"KPU3-3\" ci=\"20000270\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-I024\" syi=\"30001827\"/>\r\n    <row c=\"KPU3-3\" ci=\"20000270\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4O-ZRI\" syi=\"30001828\"/>\r\n    <row c=\"KPU3-3\" ci=\"20000270\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-7XVJ\" syi=\"30001829\"/>\r\n    <row c=\"KPU3-3\" ci=\"20000270\" r=\"Outer Passage\" ri=\"10000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RQNF-9\" syi=\"30001830\"/>\r\n    <row c=\"5VN-B7\" ci=\"20000271\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DSS-EZ\" syi=\"30001831\"/>\r\n    <row c=\"5VN-B7\" ci=\"20000271\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MB4D-4\" syi=\"30001832\"/>\r\n    <row c=\"5VN-B7\" ci=\"20000271\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LGK-VP\" syi=\"30001833\"/>\r\n    <row c=\"5VN-B7\" ci=\"20000271\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-C0SR\" syi=\"30001834\"/>\r\n    <row c=\"5VN-B7\" ci=\"20000271\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X1E-OQ\" syi=\"30001835\"/>\r\n    <row c=\"5VN-B7\" ci=\"20000271\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VTGN-U\" syi=\"30001836\"/>\r\n    <row c=\"5VN-B7\" ci=\"20000271\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0Y1-M7\" syi=\"30001837\"/>\r\n    <row c=\"41JS-R\" ci=\"20000272\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-Q2S6\" syi=\"30001838\"/>\r\n    <row c=\"41JS-R\" ci=\"20000272\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WHG2-7\" syi=\"30001839\"/>\r\n    <row c=\"41JS-R\" ci=\"20000272\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9RQ-L8\" syi=\"30001840\"/>\r\n    <row c=\"41JS-R\" ci=\"20000272\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"32-GI9\" syi=\"30001841\"/>\r\n    <row c=\"41JS-R\" ci=\"20000272\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TG-Z23\" syi=\"30001842\"/>\r\n    <row c=\"41JS-R\" ci=\"20000272\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IP-MVJ\" syi=\"30001843\"/>\r\n    <row c=\"41JS-R\" ci=\"20000272\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4J-ZC9\" syi=\"30001844\"/>\r\n    <row c=\"H26A-B\" ci=\"20000273\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7R5-7R\" syi=\"30001845\"/>\r\n    <row c=\"H26A-B\" ci=\"20000273\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y1-UQ2\" syi=\"30001846\"/>\r\n    <row c=\"H26A-B\" ci=\"20000273\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HM-UVD\" syi=\"30001847\"/>\r\n    <row c=\"H26A-B\" ci=\"20000273\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-ME2K\" syi=\"30001848\"/>\r\n    <row c=\"H26A-B\" ci=\"20000273\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WNS-7J\" syi=\"30001849\"/>\r\n    <row c=\"H26A-B\" ci=\"20000273\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"57M7-W\" syi=\"30001850\"/>\r\n    <row c=\"Y-2D6Q\" ci=\"20000274\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JS-E8E\" syi=\"30001851\"/>\r\n    <row c=\"Y-2D6Q\" ci=\"20000274\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FV-SE8\" syi=\"30001852\"/>\r\n    <row c=\"Y-2D6Q\" ci=\"20000274\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FZSW-Y\" syi=\"30001853\"/>\r\n    <row c=\"Y-2D6Q\" ci=\"20000274\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UF-KKH\" syi=\"30001854\"/>\r\n    <row c=\"Y-2D6Q\" ci=\"20000274\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O5Y3-W\" syi=\"30001855\"/>\r\n    <row c=\"Y-2D6Q\" ci=\"20000274\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0GN-VO\" syi=\"30001856\"/>\r\n    <row c=\"U7L-MQ\" ci=\"20000275\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9U6-SV\" syi=\"30001857\"/>\r\n    <row c=\"U7L-MQ\" ci=\"20000275\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4GQ-XQ\" syi=\"30001858\"/>\r\n    <row c=\"U7L-MQ\" ci=\"20000275\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R8-5XF\" syi=\"30001859\"/>\r\n    <row c=\"U7L-MQ\" ci=\"20000275\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2IGP-1\" syi=\"30001860\"/>\r\n    <row c=\"U7L-MQ\" ci=\"20000275\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z2-QQP\" syi=\"30001861\"/>\r\n    <row c=\"U7L-MQ\" ci=\"20000275\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GDEW-0\" syi=\"30001862\"/>\r\n    <row c=\"U7L-MQ\" ci=\"20000275\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PSJ-10\" syi=\"30001863\"/>\r\n    <row c=\"U7L-MQ\" ci=\"20000275\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2-V0KY\" syi=\"30001864\"/>\r\n    <row c=\"U7L-MQ\" ci=\"20000275\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U-WLT9\" syi=\"30001865\"/>\r\n    <row c=\"U7L-MQ\" ci=\"20000275\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZG8Q-N\" syi=\"30001866\"/>\r\n    <row c=\"XJ-0RG\" ci=\"20000276\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"40GX-P\" syi=\"30001867\"/>\r\n    <row c=\"XJ-0RG\" ci=\"20000276\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"37S-KO\" syi=\"30001868\"/>\r\n    <row c=\"XJ-0RG\" ci=\"20000276\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4J9-DK\" syi=\"30001869\"/>\r\n    <row c=\"XJ-0RG\" ci=\"20000276\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-GPTM\" syi=\"30001870\"/>\r\n    <row c=\"XJ-0RG\" ci=\"20000276\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HQ-TDJ\" syi=\"30001871\"/>\r\n    <row c=\"XJ-0RG\" ci=\"20000276\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WBLF-0\" syi=\"30001872\"/>\r\n    <row c=\"H-QXM7\" ci=\"20000277\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GDO-7H\" syi=\"30001873\"/>\r\n    <row c=\"H-QXM7\" ci=\"20000277\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NZG-LF\" syi=\"30001874\"/>\r\n    <row c=\"H-QXM7\" ci=\"20000277\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UJM-RD\" syi=\"30001875\"/>\r\n    <row c=\"H-QXM7\" ci=\"20000277\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L0AD-B\" syi=\"30001876\"/>\r\n    <row c=\"H-QXM7\" ci=\"20000277\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8ZO-CK\" syi=\"30001877\"/>\r\n    <row c=\"H-QXM7\" ci=\"20000277\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WEQT-K\" syi=\"30001878\"/>\r\n    <row c=\"H-QXM7\" ci=\"20000277\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8O-OSG\" syi=\"30001879\"/>\r\n    <row c=\"T-L301\" ci=\"20000278\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1H-I12\" syi=\"30001880\"/>\r\n    <row c=\"T-L301\" ci=\"20000278\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D9D-GD\" syi=\"30001881\"/>\r\n    <row c=\"T-L301\" ci=\"20000278\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4A-XJ6\" syi=\"30001882\"/>\r\n    <row c=\"T-L301\" ci=\"20000278\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GU-54G\" syi=\"30001883\"/>\r\n    <row c=\"T-L301\" ci=\"20000278\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7-X3RN\" syi=\"30001884\"/>\r\n    <row c=\"T-L301\" ci=\"20000278\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BF-FVB\" syi=\"30001885\"/>\r\n    <row c=\"T-L301\" ci=\"20000278\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9O-ZTS\" syi=\"30001886\"/>\r\n    <row c=\"QO-17V\" ci=\"20000279\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8KQR-O\" syi=\"30001887\"/>\r\n    <row c=\"QO-17V\" ci=\"20000279\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F9SX-1\" syi=\"30001888\"/>\r\n    <row c=\"QO-17V\" ci=\"20000279\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0G-A25\" syi=\"30001889\"/>\r\n    <row c=\"QO-17V\" ci=\"20000279\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WJO0-G\" syi=\"30001890\"/>\r\n    <row c=\"QO-17V\" ci=\"20000279\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S91-TI\" syi=\"30001891\"/>\r\n    <row c=\"QO-17V\" ci=\"20000279\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V1V-6F\" syi=\"30001892\"/>\r\n    <row c=\"VH1-NS\" ci=\"20000280\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S-DLKC\" syi=\"30001893\"/>\r\n    <row c=\"VH1-NS\" ci=\"20000280\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"42-UOW\" syi=\"30001894\"/>\r\n    <row c=\"VH1-NS\" ci=\"20000280\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CBGG-0\" syi=\"30001895\"/>\r\n    <row c=\"VH1-NS\" ci=\"20000280\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A4UG-O\" syi=\"30001896\"/>\r\n    <row c=\"VH1-NS\" ci=\"20000280\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W-VXL9\" syi=\"30001897\"/>\r\n    <row c=\"VH1-NS\" ci=\"20000280\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U2-BJ2\" syi=\"30001898\"/>\r\n    <row c=\"Q4IG-S\" ci=\"20000281\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UKYS-5\" syi=\"30001899\"/>\r\n    <row c=\"Q4IG-S\" ci=\"20000281\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RV5-DW\" syi=\"30001900\"/>\r\n    <row c=\"Q4IG-S\" ci=\"20000281\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KP-FQ1\" syi=\"30001901\"/>\r\n    <row c=\"Q4IG-S\" ci=\"20000281\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RLDS-R\" syi=\"30001902\"/>\r\n    <row c=\"Q4IG-S\" ci=\"20000281\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QM-O7J\" syi=\"30001903\"/>\r\n    <row c=\"Q4IG-S\" ci=\"20000281\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-7XA8\" syi=\"30001904\"/>\r\n    <row c=\"JG-ZLG\" ci=\"20000282\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X5O1-L\" syi=\"30001905\"/>\r\n    <row c=\"JG-ZLG\" ci=\"20000282\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-TVAP\" syi=\"30001906\"/>\r\n    <row c=\"JG-ZLG\" ci=\"20000282\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6Y-0TW\" syi=\"30001907\"/>\r\n    <row c=\"JG-ZLG\" ci=\"20000282\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TL-T9Z\" syi=\"30001908\"/>\r\n    <row c=\"JG-ZLG\" ci=\"20000282\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E7-WSY\" syi=\"30001909\"/>\r\n    <row c=\"JG-ZLG\" ci=\"20000282\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-G1LG\" syi=\"30001910\"/>\r\n    <row c=\"V-H3V0\" ci=\"20000283\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T-8UOF\" syi=\"30001911\"/>\r\n    <row c=\"V-H3V0\" ci=\"20000283\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DP-2WP\" syi=\"30001912\"/>\r\n    <row c=\"V-H3V0\" ci=\"20000283\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MMR-LZ\" syi=\"30001913\"/>\r\n    <row c=\"V-H3V0\" ci=\"20000283\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I-ME3L\" syi=\"30001914\"/>\r\n    <row c=\"V-H3V0\" ci=\"20000283\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YE17-R\" syi=\"30001915\"/>\r\n    <row c=\"V-H3V0\" ci=\"20000283\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T7-JNB\" syi=\"30001916\"/>\r\n    <row c=\"V-H3V0\" ci=\"20000283\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LB0-A1\" syi=\"30001917\"/>\r\n    <row c=\"V-H3V0\" ci=\"20000283\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S-BWWQ\" syi=\"30001918\"/>\r\n    <row c=\"V-H3V0\" ci=\"20000283\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-R96X\" syi=\"30001919\"/>\r\n    <row c=\"V-H3V0\" ci=\"20000283\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J-AYLV\" syi=\"30001920\"/>\r\n    <row c=\"V-H3V0\" ci=\"20000283\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DABV-N\" syi=\"30001921\"/>\r\n    <row c=\"V-H3V0\" ci=\"20000283\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZH-KEV\" syi=\"30001922\"/>\r\n    <row c=\"W-ULNA\" ci=\"20000284\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LC-1ED\" syi=\"30001923\"/>\r\n    <row c=\"W-ULNA\" ci=\"20000284\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RPS-0K\" syi=\"30001924\"/>\r\n    <row c=\"W-ULNA\" ci=\"20000284\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VNPF-7\" syi=\"30001925\"/>\r\n    <row c=\"W-ULNA\" ci=\"20000284\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CJF-1P\" syi=\"30001926\"/>\r\n    <row c=\"W-ULNA\" ci=\"20000284\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U6-FCE\" syi=\"30001927\"/>\r\n    <row c=\"W-ULNA\" ci=\"20000284\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L6B-0N\" syi=\"30001928\"/>\r\n    <row c=\"W-ULNA\" ci=\"20000284\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-XMUC\" syi=\"30001929\"/>\r\n    <row c=\"W-ULNA\" ci=\"20000284\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6QBH-S\" syi=\"30001930\"/>\r\n    <row c=\"SB3-IH\" ci=\"20000285\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RRWI-5\" syi=\"30001931\"/>\r\n    <row c=\"SB3-IH\" ci=\"20000285\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-4U62\" syi=\"30001932\"/>\r\n    <row c=\"SB3-IH\" ci=\"20000285\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EAWE-2\" syi=\"30001933\"/>\r\n    <row c=\"SB3-IH\" ci=\"20000285\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I-3FET\" syi=\"30001934\"/>\r\n    <row c=\"SB3-IH\" ci=\"20000285\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QCKK-T\" syi=\"30001935\"/>\r\n    <row c=\"SB3-IH\" ci=\"20000285\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RP-H66\" syi=\"30001936\"/>\r\n    <row c=\"Z01V-Z\" ci=\"20000286\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JU-UYK\" syi=\"30001937\"/>\r\n    <row c=\"Z01V-Z\" ci=\"20000286\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-FTHE\" syi=\"30001938\"/>\r\n    <row c=\"Z01V-Z\" ci=\"20000286\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W-Q233\" syi=\"30001939\"/>\r\n    <row c=\"Z01V-Z\" ci=\"20000286\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4XW2-D\" syi=\"30001940\"/>\r\n    <row c=\"Z01V-Z\" ci=\"20000286\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J5NU-K\" syi=\"30001941\"/>\r\n    <row c=\"Z01V-Z\" ci=\"20000286\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EOT-XL\" syi=\"30001942\"/>\r\n    <row c=\"Z01V-Z\" ci=\"20000286\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RVRE-Z\" syi=\"30001943\"/>\r\n    <row c=\"Z01V-Z\" ci=\"20000286\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-2UL0\" syi=\"30001944\"/>\r\n    <row c=\"Z01V-Z\" ci=\"20000286\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-A9FS\" syi=\"30001945\"/>\r\n    <row c=\"Z01V-Z\" ci=\"20000286\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OOO-FS\" syi=\"30001946\"/>\r\n    <row c=\"Z01V-Z\" ci=\"20000286\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"373Z-7\" syi=\"30001947\"/>\r\n    <row c=\"WF-OP4\" ci=\"20000287\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JVJ2-N\" syi=\"30001948\"/>\r\n    <row c=\"WF-OP4\" ci=\"20000287\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2B-3M4\" syi=\"30001949\"/>\r\n    <row c=\"WF-OP4\" ci=\"20000287\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-XASO\" syi=\"30001950\"/>\r\n    <row c=\"WF-OP4\" ci=\"20000287\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5J-UEX\" syi=\"30001951\"/>\r\n    <row c=\"WF-OP4\" ci=\"20000287\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1H4V-O\" syi=\"30001952\"/>\r\n    <row c=\"WF-OP4\" ci=\"20000287\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LGL-SD\" syi=\"30001953\"/>\r\n    <row c=\"WF-OP4\" ci=\"20000287\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-DZA8\" syi=\"30001954\"/>\r\n    <row c=\"WF-OP4\" ci=\"20000287\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-CT8N\" syi=\"30001955\"/>\r\n    <row c=\"R-IZDC\" ci=\"20000288\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-6YQC\" syi=\"30001956\"/>\r\n    <row c=\"R-IZDC\" ci=\"20000288\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F7-ICZ\" syi=\"30001957\"/>\r\n    <row c=\"R-IZDC\" ci=\"20000288\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XFBE-T\" syi=\"30001958\"/>\r\n    <row c=\"R-IZDC\" ci=\"20000288\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T-NNJZ\" syi=\"30001959\"/>\r\n    <row c=\"R-IZDC\" ci=\"20000288\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DK6W-I\" syi=\"30001960\"/>\r\n    <row c=\"R-IZDC\" ci=\"20000288\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0T-LIB\" syi=\"30001961\"/>\r\n    <row c=\"R-IZDC\" ci=\"20000288\" r=\"Stain\" ri=\"10000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NRT4-U\" syi=\"30001962\"/>\r\n    <row c=\"MDM8-J\" ci=\"20000289\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KQK1-2\" syi=\"30001963\"/>\r\n    <row c=\"MDM8-J\" ci=\"20000289\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-BY0Y\" syi=\"30001964\"/>\r\n    <row c=\"MDM8-J\" ci=\"20000289\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2D-0SO\" syi=\"30001965\"/>\r\n    <row c=\"MDM8-J\" ci=\"20000289\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UR-E6D\" syi=\"30001966\"/>\r\n    <row c=\"MDM8-J\" ci=\"20000289\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X47L-Q\" syi=\"30001967\"/>\r\n    <row c=\"MDM8-J\" ci=\"20000289\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D7T-C0\" syi=\"30001968\"/>\r\n    <row c=\"U8-CWA\" ci=\"20000290\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KI-TL0\" syi=\"30001969\"/>\r\n    <row c=\"U8-CWA\" ci=\"20000290\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EL8-4Q\" syi=\"30001970\"/>\r\n    <row c=\"U8-CWA\" ci=\"20000290\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JC-YX8\" syi=\"30001971\"/>\r\n    <row c=\"U8-CWA\" ci=\"20000290\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-9WNU\" syi=\"30001972\"/>\r\n    <row c=\"U8-CWA\" ci=\"20000290\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XI-VUF\" syi=\"30001973\"/>\r\n    <row c=\"U8-CWA\" ci=\"20000290\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-H32Y\" syi=\"30001974\"/>\r\n    <row c=\"U8-CWA\" ci=\"20000290\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"12YA-2\" syi=\"30001975\"/>\r\n    <row c=\"U8-CWA\" ci=\"20000290\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BDV3-T\" syi=\"30001976\"/>\r\n    <row c=\"38G6-L\" ci=\"20000291\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J-CIJV\" syi=\"30001977\"/>\r\n    <row c=\"38G6-L\" ci=\"20000291\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-7OMU\" syi=\"30001978\"/>\r\n    <row c=\"38G6-L\" ci=\"20000291\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CXN1-Z\" syi=\"30001979\"/>\r\n    <row c=\"38G6-L\" ci=\"20000291\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KLY-C0\" syi=\"30001980\"/>\r\n    <row c=\"38G6-L\" ci=\"20000291\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CL6-ZG\" syi=\"30001981\"/>\r\n    <row c=\"38G6-L\" ci=\"20000291\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G95-VZ\" syi=\"30001982\"/>\r\n    <row c=\"38G6-L\" ci=\"20000291\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ROIR-Y\" syi=\"30001983\"/>\r\n    <row c=\"YS-GOP\" ci=\"20000292\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EC-P8R\" syi=\"30001984\"/>\r\n    <row c=\"YS-GOP\" ci=\"20000292\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EWOK-K\" syi=\"30001985\"/>\r\n    <row c=\"YS-GOP\" ci=\"20000292\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-N8XZ\" syi=\"30001986\"/>\r\n    <row c=\"YS-GOP\" ci=\"20000292\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-M4I8\" syi=\"30001987\"/>\r\n    <row c=\"YS-GOP\" ci=\"20000292\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MI6O-6\" syi=\"30001988\"/>\r\n    <row c=\"YS-GOP\" ci=\"20000292\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-TS8S\" syi=\"30001989\"/>\r\n    <row c=\"YS-GOP\" ci=\"20000292\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"93PI-4\" syi=\"30001990\"/>\r\n    <row c=\"WMP-OF\" ci=\"20000293\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ION-FG\" syi=\"30001991\"/>\r\n    <row c=\"WMP-OF\" ci=\"20000293\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-H9X7\" syi=\"30001992\"/>\r\n    <row c=\"WMP-OF\" ci=\"20000293\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A8I-C5\" syi=\"30001993\"/>\r\n    <row c=\"WMP-OF\" ci=\"20000293\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DK-FXK\" syi=\"30001994\"/>\r\n    <row c=\"WMP-OF\" ci=\"20000293\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-76XI\" syi=\"30001995\"/>\r\n    <row c=\"WMP-OF\" ci=\"20000293\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZJET-E\" syi=\"30001996\"/>\r\n    <row c=\"WMP-OF\" ci=\"20000293\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U-INPD\" syi=\"30001997\"/>\r\n    <row c=\"LY-FY6\" ci=\"20000294\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WW-KGD\" syi=\"30001998\"/>\r\n    <row c=\"LY-FY6\" ci=\"20000294\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XQ-PXU\" syi=\"30001999\"/>\r\n    <row c=\"LY-FY6\" ci=\"20000294\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-YCD4\" syi=\"30002000\"/>\r\n    <row c=\"LY-FY6\" ci=\"20000294\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-5211\" syi=\"30002001\"/>\r\n    <row c=\"LY-FY6\" ci=\"20000294\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R-2R0G\" syi=\"30002002\"/>\r\n    <row c=\"LY-FY6\" ci=\"20000294\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CR-AQH\" syi=\"30002003\"/>\r\n    <row c=\"U-7RBK\" ci=\"20000295\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8S-0E1\" syi=\"30002004\"/>\r\n    <row c=\"U-7RBK\" ci=\"20000295\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5ZXX-K\" syi=\"30002005\"/>\r\n    <row c=\"U-7RBK\" ci=\"20000295\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JE-D5U\" syi=\"30002006\"/>\r\n    <row c=\"U-7RBK\" ci=\"20000295\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2-6TGQ\" syi=\"30002007\"/>\r\n    <row c=\"U-7RBK\" ci=\"20000295\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OE-9UF\" syi=\"30002008\"/>\r\n    <row c=\"U-7RBK\" ci=\"20000295\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PFU-LH\" syi=\"30002009\"/>\r\n    <row c=\"G8-D09\" ci=\"20000296\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R6XN-9\" syi=\"30002010\"/>\r\n    <row c=\"G8-D09\" ci=\"20000296\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3V8-LJ\" syi=\"30002011\"/>\r\n    <row c=\"G8-D09\" ci=\"20000296\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B8EN-S\" syi=\"30002012\"/>\r\n    <row c=\"G8-D09\" ci=\"20000296\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R-LW2I\" syi=\"30002013\"/>\r\n    <row c=\"G8-D09\" ci=\"20000296\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DP-1YE\" syi=\"30002014\"/>\r\n    <row c=\"G8-D09\" ci=\"20000296\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-ABS8\" syi=\"30002015\"/>\r\n    <row c=\"304Z-R\" ci=\"20000297\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7RM-N0\" syi=\"30002016\"/>\r\n    <row c=\"304Z-R\" ci=\"20000297\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S-MDYI\" syi=\"30002017\"/>\r\n    <row c=\"304Z-R\" ci=\"20000297\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZKYV-W\" syi=\"30002018\"/>\r\n    <row c=\"304Z-R\" ci=\"20000297\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-NMX6\" syi=\"30002019\"/>\r\n    <row c=\"304Z-R\" ci=\"20000297\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GA-P6C\" syi=\"30002020\"/>\r\n    <row c=\"304Z-R\" ci=\"20000297\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FWA-4V\" syi=\"30002021\"/>\r\n    <row c=\"304Z-R\" ci=\"20000297\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RZC-16\" syi=\"30002022\"/>\r\n    <row c=\"K-QUVW\" ci=\"20000298\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RD-G2R\" syi=\"30002023\"/>\r\n    <row c=\"K-QUVW\" ci=\"20000298\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UC3H-Y\" syi=\"30002024\"/>\r\n    <row c=\"K-QUVW\" ci=\"20000298\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6GWE-A\" syi=\"30002025\"/>\r\n    <row c=\"K-QUVW\" ci=\"20000298\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J-OK0C\" syi=\"30002026\"/>\r\n    <row c=\"K-QUVW\" ci=\"20000298\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KDV-DE\" syi=\"30002027\"/>\r\n    <row c=\"K-QUVW\" ci=\"20000298\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MT9Q-S\" syi=\"30002028\"/>\r\n    <row c=\"LN-L8L\" ci=\"20000299\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-9C24\" syi=\"30002029\"/>\r\n    <row c=\"LN-L8L\" ci=\"20000299\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P-2TTL\" syi=\"30002030\"/>\r\n    <row c=\"LN-L8L\" ci=\"20000299\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7X-VKB\" syi=\"30002031\"/>\r\n    <row c=\"LN-L8L\" ci=\"20000299\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-Z2ZX\" syi=\"30002032\"/>\r\n    <row c=\"LN-L8L\" ci=\"20000299\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RORZ-H\" syi=\"30002033\"/>\r\n    <row c=\"LN-L8L\" ci=\"20000299\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-A6YN\" syi=\"30002034\"/>\r\n    <row c=\"S4GH-I\" ci=\"20000300\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MQ-NPY\" syi=\"30002035\"/>\r\n    <row c=\"S4GH-I\" ci=\"20000300\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D2-HOS\" syi=\"30002036\"/>\r\n    <row c=\"S4GH-I\" ci=\"20000300\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y2-6EA\" syi=\"30002037\"/>\r\n    <row c=\"S4GH-I\" ci=\"20000300\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TFA0-U\" syi=\"30002038\"/>\r\n    <row c=\"S4GH-I\" ci=\"20000300\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RQH-MY\" syi=\"30002039\"/>\r\n    <row c=\"S4GH-I\" ci=\"20000300\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HPS5-C\" syi=\"30002040\"/>\r\n    <row c=\"S4GH-I\" ci=\"20000300\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DT-TCD\" syi=\"30002041\"/>\r\n    <row c=\"0A-73B\" ci=\"20000301\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KU5R-W\" syi=\"30002042\"/>\r\n    <row c=\"0A-73B\" ci=\"20000301\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H1-J33\" syi=\"30002043\"/>\r\n    <row c=\"0A-73B\" ci=\"20000301\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-C3EQ\" syi=\"30002044\"/>\r\n    <row c=\"0A-73B\" ci=\"20000301\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OGV-AS\" syi=\"30002045\"/>\r\n    <row c=\"0A-73B\" ci=\"20000301\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7D-0SQ\" syi=\"30002046\"/>\r\n    <row c=\"0A-73B\" ci=\"20000301\" r=\"Pure Blind\" ri=\"10000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UI-8ZE\" syi=\"30002047\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Bei\" syi=\"30002048\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Uttindar\" syi=\"30002049\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Hagilur\" syi=\"30002050\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Anher\" syi=\"30002051\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Ragnarg\" syi=\"30002052\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Hek\" syi=\"30002053\"/>\r\n    <row c=\"Tiat\" ci=\"20000303\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Hror\" syi=\"30002054\"/>\r\n    <row c=\"Tiat\" ci=\"20000303\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Amo\" syi=\"30002055\"/>\r\n    <row c=\"Tiat\" ci=\"20000303\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Resbroko\" syi=\"30002056\"/>\r\n    <row c=\"Tiat\" ci=\"20000303\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Hadozeko\" syi=\"30002057\"/>\r\n    <row c=\"Tiat\" ci=\"20000303\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Ardar\" syi=\"30002058\"/>\r\n    <row c=\"Tiat\" ci=\"20000303\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Auner\" syi=\"30002059\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Evati\" syi=\"30002060\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Ofstold\" syi=\"30002061\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Todifrauan\" syi=\"30002062\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Helgatild\" syi=\"30002063\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Arnstur\" syi=\"30002064\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Lasleinur\" syi=\"30002065\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Arnher\" syi=\"30002066\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Brin\" syi=\"30002067\"/>\r\n    <row c=\"Ani\" ci=\"20000305\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Nakugard\" syi=\"30002068\"/>\r\n    <row c=\"Ani\" ci=\"20000305\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Traun\" syi=\"30002069\"/>\r\n    <row c=\"Ani\" ci=\"20000305\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Uriok\" syi=\"30002070\"/>\r\n    <row c=\"Ani\" ci=\"20000305\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Barkrik\" syi=\"30002071\"/>\r\n    <row c=\"Ani\" ci=\"20000305\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Inder\" syi=\"30002072\"/>\r\n    <row c=\"Ani\" ci=\"20000305\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Tvink\" syi=\"30002073\"/>\r\n    <row c=\"Ani\" ci=\"20000305\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Lanngisi\" syi=\"30002074\"/>\r\n    <row c=\"Ani\" ci=\"20000305\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Hjoramold\" syi=\"30002075\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Dudreda\" syi=\"30002076\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Hakisalki\" syi=\"30002077\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Arwa\" syi=\"30002078\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Krirald\" syi=\"30002079\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Arifsdald\" syi=\"30002080\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Ansen\" syi=\"30002081\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Floseswin\" syi=\"30002082\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Uisper\" syi=\"30002083\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Aset\" syi=\"30002084\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Eytjangard\" syi=\"30002085\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Turnur\" syi=\"30002086\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Isbrabata\" syi=\"30002087\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Vimeini\" syi=\"30002088\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Avenod\" syi=\"30002089\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Frerstorn\" syi=\"30002090\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Ontorn\" syi=\"30002091\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Sirekur\" syi=\"30002092\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Gebuladi\" syi=\"30002093\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Ebolfer\" syi=\"30002094\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Eszur\" syi=\"30002095\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Hofjaldgund\" syi=\"30002096\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Klogori\" syi=\"30002097\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Orfrold\" syi=\"30002098\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Egmar\" syi=\"30002099\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Taff\" syi=\"30002100\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Ualkin\" syi=\"30002101\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Gukarla\" syi=\"30002102\"/>\r\n    <row c=\"Q-IPAA\" ci=\"20000310\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NS2L-4\" syi=\"30002103\"/>\r\n    <row c=\"Q-IPAA\" ci=\"20000310\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QI-S9W\" syi=\"30002104\"/>\r\n    <row c=\"Q-IPAA\" ci=\"20000310\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-S347\" syi=\"30002105\"/>\r\n    <row c=\"Q-IPAA\" ci=\"20000310\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PPFB-U\" syi=\"30002106\"/>\r\n    <row c=\"Q-IPAA\" ci=\"20000310\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AF0-V5\" syi=\"30002107\"/>\r\n    <row c=\"Q-IPAA\" ci=\"20000310\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-A587\" syi=\"30002108\"/>\r\n    <row c=\"K-ZKBM\" ci=\"20000311\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y19P-1\" syi=\"30002109\"/>\r\n    <row c=\"K-ZKBM\" ci=\"20000311\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B9E-H6\" syi=\"30002110\"/>\r\n    <row c=\"K-ZKBM\" ci=\"20000311\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SPBS-6\" syi=\"30002111\"/>\r\n    <row c=\"K-ZKBM\" ci=\"20000311\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JDAS-0\" syi=\"30002112\"/>\r\n    <row c=\"K-ZKBM\" ci=\"20000311\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A4B-V5\" syi=\"30002113\"/>\r\n    <row c=\"K-ZKBM\" ci=\"20000311\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LN-56V\" syi=\"30002114\"/>\r\n    <row c=\"K-ZKBM\" ci=\"20000311\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y2-QUV\" syi=\"30002115\"/>\r\n    <row c=\"K-ZKBM\" ci=\"20000311\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O7-7UX\" syi=\"30002116\"/>\r\n    <row c=\"MY-QQI\" ci=\"20000312\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z8-81T\" syi=\"30002117\"/>\r\n    <row c=\"MY-QQI\" ci=\"20000312\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XD-JW7\" syi=\"30002118\"/>\r\n    <row c=\"MY-QQI\" ci=\"20000312\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DY-P7Q\" syi=\"30002119\"/>\r\n    <row c=\"MY-QQI\" ci=\"20000312\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-RXNZ\" syi=\"30002120\"/>\r\n    <row c=\"MY-QQI\" ci=\"20000312\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZBP-TP\" syi=\"30002121\"/>\r\n    <row c=\"MY-QQI\" ci=\"20000312\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XVV-21\" syi=\"30002122\"/>\r\n    <row c=\"RTCU-5\" ci=\"20000313\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GXK-7F\" syi=\"30002123\"/>\r\n    <row c=\"RTCU-5\" ci=\"20000313\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EA-HSA\" syi=\"30002124\"/>\r\n    <row c=\"RTCU-5\" ci=\"20000313\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"78TS-Q\" syi=\"30002125\"/>\r\n    <row c=\"RTCU-5\" ci=\"20000313\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WYF8-8\" syi=\"30002126\"/>\r\n    <row c=\"RTCU-5\" ci=\"20000313\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CJNF-J\" syi=\"30002127\"/>\r\n    <row c=\"RTCU-5\" ci=\"20000313\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FYI-49\" syi=\"30002128\"/>\r\n    <row c=\"C73-U5\" ci=\"20000314\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RF6T-8\" syi=\"30002129\"/>\r\n    <row c=\"C73-U5\" ci=\"20000314\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZJA-6U\" syi=\"30002130\"/>\r\n    <row c=\"C73-U5\" ci=\"20000314\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"94FR-S\" syi=\"30002131\"/>\r\n    <row c=\"C73-U5\" ci=\"20000314\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-HJ97\" syi=\"30002132\"/>\r\n    <row c=\"C73-U5\" ci=\"20000314\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GM-0K7\" syi=\"30002133\"/>\r\n    <row c=\"C73-U5\" ci=\"20000314\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I-NGI8\" syi=\"30002134\"/>\r\n    <row c=\"C73-U5\" ci=\"20000314\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R-ZUOL\" syi=\"30002135\"/>\r\n    <row c=\"C73-U5\" ci=\"20000314\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E1F-LK\" syi=\"30002136\"/>\r\n    <row c=\"C73-U5\" ci=\"20000314\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z4-QLD\" syi=\"30002137\"/>\r\n    <row c=\"K-N3MD\" ci=\"20000315\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QE-E1D\" syi=\"30002138\"/>\r\n    <row c=\"K-N3MD\" ci=\"20000315\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LK1K-5\" syi=\"30002139\"/>\r\n    <row c=\"K-N3MD\" ci=\"20000315\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"REB-KR\" syi=\"30002140\"/>\r\n    <row c=\"K-N3MD\" ci=\"20000315\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-H2MA\" syi=\"30002141\"/>\r\n    <row c=\"K-N3MD\" ci=\"20000315\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-5JCJ\" syi=\"30002142\"/>\r\n    <row c=\"K-N3MD\" ci=\"20000315\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-KDOZ\" syi=\"30002143\"/>\r\n    <row c=\"K-N3MD\" ci=\"20000315\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-GB14\" syi=\"30002144\"/>\r\n    <row c=\"4MY-AB\" ci=\"20000316\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PH-NFR\" syi=\"30002145\"/>\r\n    <row c=\"4MY-AB\" ci=\"20000316\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DW-N2S\" syi=\"30002146\"/>\r\n    <row c=\"4MY-AB\" ci=\"20000316\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W-FHWJ\" syi=\"30002147\"/>\r\n    <row c=\"4MY-AB\" ci=\"20000316\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-6WC7\" syi=\"30002148\"/>\r\n    <row c=\"4MY-AB\" ci=\"20000316\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D-BAMJ\" syi=\"30002149\"/>\r\n    <row c=\"4MY-AB\" ci=\"20000316\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JKWP-U\" syi=\"30002150\"/>\r\n    <row c=\"4MY-AB\" ci=\"20000316\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RHE7-W\" syi=\"30002151\"/>\r\n    <row c=\"4MY-AB\" ci=\"20000316\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F76-8Q\" syi=\"30002152\"/>\r\n    <row c=\"Y46-EN\" ci=\"20000317\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O3Z5-G\" syi=\"30002153\"/>\r\n    <row c=\"Y46-EN\" ci=\"20000317\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4DV-1T\" syi=\"30002154\"/>\r\n    <row c=\"Y46-EN\" ci=\"20000317\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XS-K1O\" syi=\"30002155\"/>\r\n    <row c=\"Y46-EN\" ci=\"20000317\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FN-DSR\" syi=\"30002156\"/>\r\n    <row c=\"Y46-EN\" ci=\"20000317\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-R5RB\" syi=\"30002157\"/>\r\n    <row c=\"Y46-EN\" ci=\"20000317\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7-ZT1Y\" syi=\"30002158\"/>\r\n    <row c=\"EL8Z-M\" ci=\"20000318\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-XN3F\" syi=\"30002159\"/>\r\n    <row c=\"EL8Z-M\" ci=\"20000318\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AC-7LZ\" syi=\"30002160\"/>\r\n    <row c=\"EL8Z-M\" ci=\"20000318\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LBA-SO\" syi=\"30002161\"/>\r\n    <row c=\"EL8Z-M\" ci=\"20000318\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-FZ5N\" syi=\"30002162\"/>\r\n    <row c=\"EL8Z-M\" ci=\"20000318\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E8-YS9\" syi=\"30002163\"/>\r\n    <row c=\"EL8Z-M\" ci=\"20000318\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U79-JF\" syi=\"30002164\"/>\r\n    <row c=\"YENX-U\" ci=\"20000319\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B2-UQW\" syi=\"30002165\"/>\r\n    <row c=\"YENX-U\" ci=\"20000319\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U9U-TQ\" syi=\"30002166\"/>\r\n    <row c=\"YENX-U\" ci=\"20000319\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6-I162\" syi=\"30002167\"/>\r\n    <row c=\"YENX-U\" ci=\"20000319\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"08-N7Q\" syi=\"30002168\"/>\r\n    <row c=\"YENX-U\" ci=\"20000319\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-C4AL\" syi=\"30002169\"/>\r\n    <row c=\"YENX-U\" ci=\"20000319\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CKX-RW\" syi=\"30002170\"/>\r\n    <row c=\"YENX-U\" ci=\"20000319\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8X6T-8\" syi=\"30002171\"/>\r\n    <row c=\"WTE-CK\" ci=\"20000320\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W4E-IT\" syi=\"30002172\"/>\r\n    <row c=\"WTE-CK\" ci=\"20000320\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OP9L-F\" syi=\"30002173\"/>\r\n    <row c=\"WTE-CK\" ci=\"20000320\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J-QA7I\" syi=\"30002174\"/>\r\n    <row c=\"WTE-CK\" ci=\"20000320\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2O-EEW\" syi=\"30002175\"/>\r\n    <row c=\"WTE-CK\" ci=\"20000320\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-N4EF\" syi=\"30002176\"/>\r\n    <row c=\"WTE-CK\" ci=\"20000320\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7YSF-E\" syi=\"30002177\"/>\r\n    <row c=\"IJE6-J\" ci=\"20000321\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KCDX-7\" syi=\"30002178\"/>\r\n    <row c=\"IJE6-J\" ci=\"20000321\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O7-VJ5\" syi=\"30002179\"/>\r\n    <row c=\"IJE6-J\" ci=\"20000321\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FRTC-5\" syi=\"30002180\"/>\r\n    <row c=\"IJE6-J\" ci=\"20000321\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-ZJWJ\" syi=\"30002181\"/>\r\n    <row c=\"IJE6-J\" ci=\"20000321\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R-ORB7\" syi=\"30002182\"/>\r\n    <row c=\"IJE6-J\" ci=\"20000321\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RU-PT9\" syi=\"30002183\"/>\r\n    <row c=\"IJE6-J\" ci=\"20000321\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DR-427\" syi=\"30002184\"/>\r\n    <row c=\"IJE6-J\" ci=\"20000321\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NI-J0B\" syi=\"30002185\"/>\r\n    <row c=\"IJE6-J\" ci=\"20000321\" r=\"Immensea\" ri=\"10000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QN-6J2\" syi=\"30002186\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Amarr\" syi=\"30002187\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Boranai\" syi=\"30002188\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Hedion\" syi=\"30002189\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Mabnen\" syi=\"30002190\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Toshabia\" syi=\"30002191\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Irnin\" syi=\"30002192\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Kehour\" syi=\"30002193\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Martha\" syi=\"30002194\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Simbeloud\" syi=\"30002195\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Ebidan\" syi=\"30002196\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Akhragan\" syi=\"30002197\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Mikhir\" syi=\"30002198\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Bashakru\" syi=\"30002199\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Sukirah\" syi=\"30002200\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Shuria\" syi=\"30002201\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Narai\" syi=\"30002202\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Ziona\" syi=\"30002203\"/>\r\n    <row c=\"Yestadan\" ci=\"20000324\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Gaha\" syi=\"30002204\"/>\r\n    <row c=\"Yestadan\" ci=\"20000324\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Armala\" syi=\"30002205\"/>\r\n    <row c=\"Yestadan\" ci=\"20000324\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Murema\" syi=\"30002206\"/>\r\n    <row c=\"Yestadan\" ci=\"20000324\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Cailanar\" syi=\"30002207\"/>\r\n    <row c=\"Yestadan\" ci=\"20000324\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Ilonarav\" syi=\"30002208\"/>\r\n    <row c=\"Yestadan\" ci=\"20000324\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Uchat\" syi=\"30002209\"/>\r\n    <row c=\"Mazake\" ci=\"20000325\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Joppaya\" syi=\"30002210\"/>\r\n    <row c=\"Mazake\" ci=\"20000325\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Pelkia\" syi=\"30002211\"/>\r\n    <row c=\"Mazake\" ci=\"20000325\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Raren\" syi=\"30002212\"/>\r\n    <row c=\"Mazake\" ci=\"20000325\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Mazitah\" syi=\"30002213\"/>\r\n    <row c=\"Mazake\" ci=\"20000325\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Hiramu\" syi=\"30002214\"/>\r\n    <row c=\"Mazake\" ci=\"20000325\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Sakhti\" syi=\"30002215\"/>\r\n    <row c=\"Mazake\" ci=\"20000325\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Aldali\" syi=\"30002216\"/>\r\n    <row c=\"Mazake\" ci=\"20000325\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Hutian\" syi=\"30002217\"/>\r\n    <row c=\"Mazake\" ci=\"20000325\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Noli\" syi=\"30002218\"/>\r\n    <row c=\"Mazake\" ci=\"20000325\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Nomash\" syi=\"30002219\"/>\r\n    <row c=\"Kekah\" ci=\"20000326\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Aghesi\" syi=\"30002220\"/>\r\n    <row c=\"Kekah\" ci=\"20000326\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Fabin\" syi=\"30002221\"/>\r\n    <row c=\"Kekah\" ci=\"20000326\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Airshaz\" syi=\"30002222\"/>\r\n    <row c=\"Kekah\" ci=\"20000326\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Patzcha\" syi=\"30002223\"/>\r\n    <row c=\"Kekah\" ci=\"20000326\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Charra\" syi=\"30002224\"/>\r\n    <row c=\"Krai Svarog\" ci=\"20000788\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Harva\" syi=\"30002225\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Thebeka\" syi=\"30002226\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Rasile\" syi=\"30002227\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Nererut\" syi=\"30002228\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Sitanan\" syi=\"30002229\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Vashkah\" syi=\"30002230\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Ardishapur Prime\" syi=\"30002231\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Gid\" syi=\"30002232\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Dakba\" syi=\"30002233\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Nifshed\" syi=\"30002234\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Shumam\" syi=\"30002235\"/>\r\n    <row c=\"Armi\" ci=\"20000328\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Milal\" syi=\"30002236\"/>\r\n    <row c=\"Armi\" ci=\"20000328\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Sobenah\" syi=\"30002237\"/>\r\n    <row c=\"Armi\" ci=\"20000328\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Bourar\" syi=\"30002238\"/>\r\n    <row c=\"Armi\" ci=\"20000328\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Rammi\" syi=\"30002239\"/>\r\n    <row c=\"Armi\" ci=\"20000328\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Arodan\" syi=\"30002240\"/>\r\n    <row c=\"Armi\" ci=\"20000328\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Rimbah\" syi=\"30002241\"/>\r\n    <row c=\"Mulata\" ci=\"20000329\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Mamenkhanar\" syi=\"30002242\"/>\r\n    <row c=\"Mulata\" ci=\"20000329\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Seiradih\" syi=\"30002243\"/>\r\n    <row c=\"Mulata\" ci=\"20000329\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Arera\" syi=\"30002244\"/>\r\n    <row c=\"Mulata\" ci=\"20000329\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Hizhara\" syi=\"30002245\"/>\r\n    <row c=\"Mulata\" ci=\"20000329\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Neziel\" syi=\"30002246\"/>\r\n    <row c=\"Mulata\" ci=\"20000329\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Ahala\" syi=\"30002247\"/>\r\n    <row c=\"Mulata\" ci=\"20000329\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Knophtikoo\" syi=\"30002248\"/>\r\n    <row c=\"Mulata\" ci=\"20000329\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Ruchy\" syi=\"30002249\"/>\r\n    <row c=\"Mulata\" ci=\"20000329\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Hai\" syi=\"30002250\"/>\r\n    <row c=\"Nashar\" ci=\"20000330\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Sadye\" syi=\"30002251\"/>\r\n    <row c=\"Nashar\" ci=\"20000330\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Bika\" syi=\"30002252\"/>\r\n    <row c=\"Nashar\" ci=\"20000330\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Arshat\" syi=\"30002253\"/>\r\n    <row c=\"Nashar\" ci=\"20000330\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Jerma\" syi=\"30002254\"/>\r\n    <row c=\"Nashar\" ci=\"20000330\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Miyeli\" syi=\"30002255\"/>\r\n    <row c=\"Nashar\" ci=\"20000330\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Reyi\" syi=\"30002256\"/>\r\n    <row c=\"Kehina\" ci=\"20000331\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Moussou\" syi=\"30002257\"/>\r\n    <row c=\"Kehina\" ci=\"20000331\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Nadohman\" syi=\"30002258\"/>\r\n    <row c=\"Kehina\" ci=\"20000331\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Sahdil\" syi=\"30002259\"/>\r\n    <row c=\"Kehina\" ci=\"20000331\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Esteban\" syi=\"30002260\"/>\r\n    <row c=\"Kehina\" ci=\"20000331\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Luromooh\" syi=\"30002261\"/>\r\n    <row c=\"Kehina\" ci=\"20000331\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Nalu\" syi=\"30002262\"/>\r\n    <row c=\"Avib\" ci=\"20000332\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Jarshitsan\" syi=\"30002263\"/>\r\n    <row c=\"Avib\" ci=\"20000332\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Hadonoo\" syi=\"30002264\"/>\r\n    <row c=\"Avib\" ci=\"20000332\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Azizora\" syi=\"30002265\"/>\r\n    <row c=\"Avib\" ci=\"20000332\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Ahmak\" syi=\"30002266\"/>\r\n    <row c=\"Avib\" ci=\"20000332\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Shabura\" syi=\"30002267\"/>\r\n    <row c=\"Avib\" ci=\"20000332\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Adia\" syi=\"30002268\"/>\r\n    <row c=\"Liela\" ci=\"20000333\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Ebo\" syi=\"30002269\"/>\r\n    <row c=\"Liela\" ci=\"20000333\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Avair\" syi=\"30002270\"/>\r\n    <row c=\"Liela\" ci=\"20000333\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Rayl\" syi=\"30002271\"/>\r\n    <row c=\"Liela\" ci=\"20000333\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Asoutar\" syi=\"30002272\"/>\r\n    <row c=\"Liela\" ci=\"20000333\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Porsharrah\" syi=\"30002273\"/>\r\n    <row c=\"Liela\" ci=\"20000333\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Tastela\" syi=\"30002274\"/>\r\n    <row c=\"Liela\" ci=\"20000333\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Clarelam\" syi=\"30002275\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Isamm\" syi=\"30002276\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Ebtesham\" syi=\"30002277\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Artoun\" syi=\"30002278\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Safizon\" syi=\"30002279\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Zatsyaki\" syi=\"30002280\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Eba\" syi=\"30002281\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Bhizheba\" syi=\"30002282\"/>\r\n    <row c=\"4M6-GJ\" ci=\"20000335\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2G-VDP\" syi=\"30002283\"/>\r\n    <row c=\"4M6-GJ\" ci=\"20000335\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9F-3CR\" syi=\"30002284\"/>\r\n    <row c=\"4M6-GJ\" ci=\"20000335\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J7M-3W\" syi=\"30002285\"/>\r\n    <row c=\"4M6-GJ\" ci=\"20000335\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KRPF-A\" syi=\"30002286\"/>\r\n    <row c=\"4M6-GJ\" ci=\"20000335\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9P-870\" syi=\"30002287\"/>\r\n    <row c=\"4M6-GJ\" ci=\"20000335\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QNXJ-M\" syi=\"30002288\"/>\r\n    <row c=\"D-GU3R\" ci=\"20000336\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AID-9T\" syi=\"30002289\"/>\r\n    <row c=\"D-GU3R\" ci=\"20000336\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PXE-RG\" syi=\"30002290\"/>\r\n    <row c=\"D-GU3R\" ci=\"20000336\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5J-62N\" syi=\"30002291\"/>\r\n    <row c=\"D-GU3R\" ci=\"20000336\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-DRIY\" syi=\"30002292\"/>\r\n    <row c=\"D-GU3R\" ci=\"20000336\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8-MXHA\" syi=\"30002293\"/>\r\n    <row c=\"D-GU3R\" ci=\"20000336\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LPVL-5\" syi=\"30002294\"/>\r\n    <row c=\"D-GU3R\" ci=\"20000336\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D3S-EA\" syi=\"30002295\"/>\r\n    <row c=\"N-APJ8\" ci=\"20000337\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KGT3-6\" syi=\"30002296\"/>\r\n    <row c=\"N-APJ8\" ci=\"20000337\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4LJ6-Q\" syi=\"30002297\"/>\r\n    <row c=\"N-APJ8\" ci=\"20000337\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SAH-AD\" syi=\"30002298\"/>\r\n    <row c=\"N-APJ8\" ci=\"20000337\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MF-PGF\" syi=\"30002299\"/>\r\n    <row c=\"N-APJ8\" ci=\"20000337\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-ZJLN\" syi=\"30002300\"/>\r\n    <row c=\"N-APJ8\" ci=\"20000337\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-QTSD\" syi=\"30002301\"/>\r\n    <row c=\"PGPJ-8\" ci=\"20000338\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3G-LFX\" syi=\"30002302\"/>\r\n    <row c=\"PGPJ-8\" ci=\"20000338\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NK-VTL\" syi=\"30002303\"/>\r\n    <row c=\"PGPJ-8\" ci=\"20000338\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D-CR6W\" syi=\"30002304\"/>\r\n    <row c=\"PGPJ-8\" ci=\"20000338\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BY-7PY\" syi=\"30002305\"/>\r\n    <row c=\"PGPJ-8\" ci=\"20000338\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GN-TNT\" syi=\"30002306\"/>\r\n    <row c=\"PGPJ-8\" ci=\"20000338\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QKCU-4\" syi=\"30002307\"/>\r\n    <row c=\"PGPJ-8\" ci=\"20000338\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0M-24X\" syi=\"30002308\"/>\r\n    <row c=\"PGPJ-8\" ci=\"20000338\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N06Z-Q\" syi=\"30002309\"/>\r\n    <row c=\"PGPJ-8\" ci=\"20000338\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YX-0KH\" syi=\"30002310\"/>\r\n    <row c=\"8G-JN6\" ci=\"20000339\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KMH-J1\" syi=\"30002311\"/>\r\n    <row c=\"8G-JN6\" ci=\"20000339\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CYB-BZ\" syi=\"30002312\"/>\r\n    <row c=\"8G-JN6\" ci=\"20000339\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5U-3PW\" syi=\"30002313\"/>\r\n    <row c=\"8G-JN6\" ci=\"20000339\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"89JS-J\" syi=\"30002314\"/>\r\n    <row c=\"8G-JN6\" ci=\"20000339\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C9R-NO\" syi=\"30002315\"/>\r\n    <row c=\"8G-JN6\" ci=\"20000339\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FKR-SR\" syi=\"30002316\"/>\r\n    <row c=\"M9-AN3\" ci=\"20000340\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1ACJ-6\" syi=\"30002317\"/>\r\n    <row c=\"M9-AN3\" ci=\"20000340\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BNX-AS\" syi=\"30002318\"/>\r\n    <row c=\"M9-AN3\" ci=\"20000340\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XB-9U2\" syi=\"30002319\"/>\r\n    <row c=\"M9-AN3\" ci=\"20000340\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F9-FUV\" syi=\"30002320\"/>\r\n    <row c=\"M9-AN3\" ci=\"20000340\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FB-MPY\" syi=\"30002321\"/>\r\n    <row c=\"M9-AN3\" ci=\"20000340\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RO-0PZ\" syi=\"30002322\"/>\r\n    <row c=\"6TT8-Z\" ci=\"20000341\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JTA2-2\" syi=\"30002323\"/>\r\n    <row c=\"6TT8-Z\" ci=\"20000341\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R-6KYM\" syi=\"30002324\"/>\r\n    <row c=\"6TT8-Z\" ci=\"20000341\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3H58-R\" syi=\"30002325\"/>\r\n    <row c=\"6TT8-Z\" ci=\"20000341\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RV-GA8\" syi=\"30002326\"/>\r\n    <row c=\"6TT8-Z\" ci=\"20000341\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TP-RTO\" syi=\"30002327\"/>\r\n    <row c=\"6TT8-Z\" ci=\"20000341\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GTY-FW\" syi=\"30002328\"/>\r\n    <row c=\"6TT8-Z\" ci=\"20000341\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1H5-3W\" syi=\"30002329\"/>\r\n    <row c=\"6TT8-Z\" ci=\"20000341\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QZV-X3\" syi=\"30002330\"/>\r\n    <row c=\"RDD-E6\" ci=\"20000342\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IS-OBW\" syi=\"30002331\"/>\r\n    <row c=\"RDD-E6\" ci=\"20000342\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1GH-48\" syi=\"30002332\"/>\r\n    <row c=\"RDD-E6\" ci=\"20000342\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IRD-HU\" syi=\"30002333\"/>\r\n    <row c=\"RDD-E6\" ci=\"20000342\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-2VXB\" syi=\"30002334\"/>\r\n    <row c=\"RDD-E6\" ci=\"20000342\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FIZU-X\" syi=\"30002335\"/>\r\n    <row c=\"RDD-E6\" ci=\"20000342\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JAWX-R\" syi=\"30002336\"/>\r\n    <row c=\"ICH-B6\" ci=\"20000343\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z0G-XG\" syi=\"30002337\"/>\r\n    <row c=\"ICH-B6\" ci=\"20000343\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ALC-JM\" syi=\"30002338\"/>\r\n    <row c=\"ICH-B6\" ci=\"20000343\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9QS5-C\" syi=\"30002339\"/>\r\n    <row c=\"ICH-B6\" ci=\"20000343\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NWX-LI\" syi=\"30002340\"/>\r\n    <row c=\"ICH-B6\" ci=\"20000343\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-SFZK\" syi=\"30002341\"/>\r\n    <row c=\"ICH-B6\" ci=\"20000343\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2B-UUQ\" syi=\"30002342\"/>\r\n    <row c=\"ICH-B6\" ci=\"20000343\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I64-XB\" syi=\"30002343\"/>\r\n    <row c=\"SLYP-5\" ci=\"20000344\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-QDIX\" syi=\"30002344\"/>\r\n    <row c=\"SLYP-5\" ci=\"20000344\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FGJP-J\" syi=\"30002345\"/>\r\n    <row c=\"SLYP-5\" ci=\"20000344\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"89-JPE\" syi=\"30002346\"/>\r\n    <row c=\"SLYP-5\" ci=\"20000344\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D-IZT9\" syi=\"30002347\"/>\r\n    <row c=\"SLYP-5\" ci=\"20000344\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WU9-ZR\" syi=\"30002348\"/>\r\n    <row c=\"SLYP-5\" ci=\"20000344\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E8-432\" syi=\"30002349\"/>\r\n    <row c=\"8AO-5V\" ci=\"20000345\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"43-1TL\" syi=\"30002350\"/>\r\n    <row c=\"8AO-5V\" ci=\"20000345\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-LJOO\" syi=\"30002351\"/>\r\n    <row c=\"8AO-5V\" ci=\"20000345\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZS-PNI\" syi=\"30002352\"/>\r\n    <row c=\"8AO-5V\" ci=\"20000345\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TZ-74M\" syi=\"30002353\"/>\r\n    <row c=\"8AO-5V\" ci=\"20000345\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8KE-YS\" syi=\"30002354\"/>\r\n    <row c=\"8AO-5V\" ci=\"20000345\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LXQ2-T\" syi=\"30002355\"/>\r\n    <row c=\"J-78ZG\" ci=\"20000346\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HV-EAP\" syi=\"30002356\"/>\r\n    <row c=\"J-78ZG\" ci=\"20000346\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3IK-7O\" syi=\"30002357\"/>\r\n    <row c=\"J-78ZG\" ci=\"20000346\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-EUHA\" syi=\"30002358\"/>\r\n    <row c=\"J-78ZG\" ci=\"20000346\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MO-I1W\" syi=\"30002359\"/>\r\n    <row c=\"J-78ZG\" ci=\"20000346\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZZ5X-M\" syi=\"30002360\"/>\r\n    <row c=\"J-78ZG\" ci=\"20000346\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UAV-1E\" syi=\"30002361\"/>\r\n    <row c=\"J-78ZG\" ci=\"20000346\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CL-IRS\" syi=\"30002362\"/>\r\n    <row c=\"J-78ZG\" ci=\"20000346\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QBZO-R\" syi=\"30002363\"/>\r\n    <row c=\"H7Q-DG\" ci=\"20000347\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QHJR-E\" syi=\"30002364\"/>\r\n    <row c=\"H7Q-DG\" ci=\"20000347\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1PF-BC\" syi=\"30002365\"/>\r\n    <row c=\"H7Q-DG\" ci=\"20000347\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D-OJEZ\" syi=\"30002366\"/>\r\n    <row c=\"H7Q-DG\" ci=\"20000347\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-V6DQ\" syi=\"30002367\"/>\r\n    <row c=\"H7Q-DG\" ci=\"20000347\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-FET0\" syi=\"30002368\"/>\r\n    <row c=\"H7Q-DG\" ci=\"20000347\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EX-GBT\" syi=\"30002369\"/>\r\n    <row c=\"1VN-XC\" ci=\"20000348\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PX-IHN\" syi=\"30002370\"/>\r\n    <row c=\"1VN-XC\" ci=\"20000348\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WPV-JN\" syi=\"30002371\"/>\r\n    <row c=\"1VN-XC\" ci=\"20000348\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IL-H0A\" syi=\"30002372\"/>\r\n    <row c=\"1VN-XC\" ci=\"20000348\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CT8K-0\" syi=\"30002373\"/>\r\n    <row c=\"1VN-XC\" ci=\"20000348\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M9-LAN\" syi=\"30002374\"/>\r\n    <row c=\"1VN-XC\" ci=\"20000348\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-4D0W\" syi=\"30002375\"/>\r\n    <row c=\"1VN-XC\" ci=\"20000348\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L4X-1V\" syi=\"30002376\"/>\r\n    <row c=\"PG-RWX\" ci=\"20000349\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-V0PQ\" syi=\"30002377\"/>\r\n    <row c=\"PG-RWX\" ci=\"20000349\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DYPL-6\" syi=\"30002378\"/>\r\n    <row c=\"PG-RWX\" ci=\"20000349\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-OL61\" syi=\"30002379\"/>\r\n    <row c=\"PG-RWX\" ci=\"20000349\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RK-Q51\" syi=\"30002380\"/>\r\n    <row c=\"PG-RWX\" ci=\"20000349\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F69O-M\" syi=\"30002381\"/>\r\n    <row c=\"PG-RWX\" ci=\"20000349\" r=\"Etherium Reach\" ri=\"10000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T-IDGH\" syi=\"30002382\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Aeddin\" syi=\"30002383\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Gulfonodi\" syi=\"30002384\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Teonusude\" syi=\"30002385\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Gelfiven\" syi=\"30002386\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Bosena\" syi=\"30002387\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Oddelulf\" syi=\"30002388\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Atlar\" syi=\"30002389\"/>\r\n    <row c=\"Tartatven\" ci=\"20000351\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Heild\" syi=\"30002390\"/>\r\n    <row c=\"Tartatven\" ci=\"20000351\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Hrokkur\" syi=\"30002391\"/>\r\n    <row c=\"Tartatven\" ci=\"20000351\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Hrober\" syi=\"30002392\"/>\r\n    <row c=\"Tartatven\" ci=\"20000351\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Aedald\" syi=\"30002393\"/>\r\n    <row c=\"Tartatven\" ci=\"20000351\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Muttokon\" syi=\"30002394\"/>\r\n    <row c=\"Tartatven\" ci=\"20000351\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Audesder\" syi=\"30002395\"/>\r\n    <row c=\"Besateoden\" ci=\"20000352\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Illamur\" syi=\"30002396\"/>\r\n    <row c=\"Besateoden\" ci=\"20000352\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Horaka\" syi=\"30002397\"/>\r\n    <row c=\"Besateoden\" ci=\"20000352\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Eldulf\" syi=\"30002398\"/>\r\n    <row c=\"Besateoden\" ci=\"20000352\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Orien\" syi=\"30002399\"/>\r\n    <row c=\"Besateoden\" ci=\"20000352\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Varigne\" syi=\"30002400\"/>\r\n    <row c=\"Besateoden\" ci=\"20000352\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Meildolf\" syi=\"30002401\"/>\r\n    <row c=\"Almur\" ci=\"20000353\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Istodard\" syi=\"30002402\"/>\r\n    <row c=\"Almur\" ci=\"20000353\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Gonheim\" syi=\"30002403\"/>\r\n    <row c=\"Almur\" ci=\"20000353\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Half\" syi=\"30002404\"/>\r\n    <row c=\"Almur\" ci=\"20000353\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Sakulda\" syi=\"30002405\"/>\r\n    <row c=\"Almur\" ci=\"20000353\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Hedaleolfarber\" syi=\"30002406\"/>\r\n    <row c=\"Almur\" ci=\"20000353\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Altbrard\" syi=\"30002407\"/>\r\n    <row c=\"Eoldulf\" ci=\"20000354\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Fegomenko\" syi=\"30002408\"/>\r\n    <row c=\"Eoldulf\" ci=\"20000354\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Osvetur\" syi=\"30002409\"/>\r\n    <row c=\"Eoldulf\" ci=\"20000354\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Mimiror\" syi=\"30002410\"/>\r\n    <row c=\"Krai Svarog\" ci=\"20000788\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Skarkon\" syi=\"30002411\"/>\r\n    <row c=\"Eoldulf\" ci=\"20000354\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Ennur\" syi=\"30002412\"/>\r\n    <row c=\"Eoldulf\" ci=\"20000354\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Unertek\" syi=\"30002413\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Klingt\" syi=\"30002414\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Weld\" syi=\"30002415\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Kattegaud\" syi=\"30002416\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Kadlina\" syi=\"30002417\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Hegfunden\" syi=\"30002418\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Aeditide\" syi=\"30002419\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Egbinger\" syi=\"30002420\"/>\r\n    <row c=\"N-K4Q0\" ci=\"20000356\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MR4-MY\" syi=\"30002421\"/>\r\n    <row c=\"N-K4Q0\" ci=\"20000356\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SR-KBB\" syi=\"30002422\"/>\r\n    <row c=\"N-K4Q0\" ci=\"20000356\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FDZ4-A\" syi=\"30002423\"/>\r\n    <row c=\"N-K4Q0\" ci=\"20000356\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2E-ZR5\" syi=\"30002424\"/>\r\n    <row c=\"N-K4Q0\" ci=\"20000356\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O1-FTD\" syi=\"30002425\"/>\r\n    <row c=\"N-K4Q0\" ci=\"20000356\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Roua\" syi=\"30002426\"/>\r\n    <row c=\"N-K4Q0\" ci=\"20000356\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OEY-OR\" syi=\"30002427\"/>\r\n    <row c=\"UBPU-9\" ci=\"20000357\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-MD31\" syi=\"30002428\"/>\r\n    <row c=\"UBPU-9\" ci=\"20000357\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WH-2EZ\" syi=\"30002429\"/>\r\n    <row c=\"UBPU-9\" ci=\"20000357\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D0-F4W\" syi=\"30002430\"/>\r\n    <row c=\"UBPU-9\" ci=\"20000357\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QKTR-L\" syi=\"30002431\"/>\r\n    <row c=\"UBPU-9\" ci=\"20000357\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YN3-E3\" syi=\"30002432\"/>\r\n    <row c=\"UBPU-9\" ci=\"20000357\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NBPH-N\" syi=\"30002433\"/>\r\n    <row c=\"UBPU-9\" ci=\"20000357\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-HV5C\" syi=\"30002434\"/>\r\n    <row c=\"UBPU-9\" ci=\"20000357\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L4X-FH\" syi=\"30002435\"/>\r\n    <row c=\"UBPU-9\" ci=\"20000357\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B6-52M\" syi=\"30002436\"/>\r\n    <row c=\"UBPU-9\" ci=\"20000357\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-MZW0\" syi=\"30002437\"/>\r\n    <row c=\"IPS-QB\" ci=\"20000358\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BND-16\" syi=\"30002438\"/>\r\n    <row c=\"IPS-QB\" ci=\"20000358\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IOO-7O\" syi=\"30002439\"/>\r\n    <row c=\"IPS-QB\" ci=\"20000358\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BWF-ZZ\" syi=\"30002440\"/>\r\n    <row c=\"IPS-QB\" ci=\"20000358\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-CUM5\" syi=\"30002441\"/>\r\n    <row c=\"IPS-QB\" ci=\"20000358\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8MG-J6\" syi=\"30002442\"/>\r\n    <row c=\"IPS-QB\" ci=\"20000358\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RLSI-V\" syi=\"30002443\"/>\r\n    <row c=\"8K-CHA\" ci=\"20000359\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"39-DGG\" syi=\"30002444\"/>\r\n    <row c=\"8K-CHA\" ci=\"20000359\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SV-K8J\" syi=\"30002445\"/>\r\n    <row c=\"8K-CHA\" ci=\"20000359\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6RQ9-A\" syi=\"30002446\"/>\r\n    <row c=\"8K-CHA\" ci=\"20000359\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K42-IE\" syi=\"30002447\"/>\r\n    <row c=\"8K-CHA\" ci=\"20000359\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VSJ-PP\" syi=\"30002448\"/>\r\n    <row c=\"8K-CHA\" ci=\"20000359\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3USX-F\" syi=\"30002449\"/>\r\n    <row c=\"8K-CHA\" ci=\"20000359\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-KWXC\" syi=\"30002450\"/>\r\n    <row c=\"ZYL-FT\" ci=\"20000360\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NQ-9IH\" syi=\"30002451\"/>\r\n    <row c=\"ZYL-FT\" ci=\"20000360\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KR-V6G\" syi=\"30002452\"/>\r\n    <row c=\"ZYL-FT\" ci=\"20000360\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AP9-LV\" syi=\"30002453\"/>\r\n    <row c=\"ZYL-FT\" ci=\"20000360\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-GZX9\" syi=\"30002454\"/>\r\n    <row c=\"ZYL-FT\" ci=\"20000360\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2H-TSE\" syi=\"30002455\"/>\r\n    <row c=\"ZYL-FT\" ci=\"20000360\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4NGK-F\" syi=\"30002456\"/>\r\n    <row c=\"NK-AOZ\" ci=\"20000361\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-VWPB\" syi=\"30002457\"/>\r\n    <row c=\"NK-AOZ\" ci=\"20000361\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LX-ZOJ\" syi=\"30002458\"/>\r\n    <row c=\"NK-AOZ\" ci=\"20000361\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6L78-1\" syi=\"30002459\"/>\r\n    <row c=\"NK-AOZ\" ci=\"20000361\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"04-LQM\" syi=\"30002460\"/>\r\n    <row c=\"NK-AOZ\" ci=\"20000361\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4VY-Y1\" syi=\"30002461\"/>\r\n    <row c=\"NK-AOZ\" ci=\"20000361\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LU-HQS\" syi=\"30002462\"/>\r\n    <row c=\"NK-AOZ\" ci=\"20000361\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U-L4KS\" syi=\"30002463\"/>\r\n    <row c=\"NK-AOZ\" ci=\"20000361\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K25-XD\" syi=\"30002464\"/>\r\n    <row c=\"NK-AOZ\" ci=\"20000361\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6YC-TU\" syi=\"30002465\"/>\r\n    <row c=\"NK-AOZ\" ci=\"20000361\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y8R-XZ\" syi=\"30002466\"/>\r\n    <row c=\"V1G-63\" ci=\"20000362\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P-E9GN\" syi=\"30002467\"/>\r\n    <row c=\"V1G-63\" ci=\"20000362\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HJO-84\" syi=\"30002468\"/>\r\n    <row c=\"V1G-63\" ci=\"20000362\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4D9-66\" syi=\"30002469\"/>\r\n    <row c=\"V1G-63\" ci=\"20000362\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-TOFR\" syi=\"30002470\"/>\r\n    <row c=\"V1G-63\" ci=\"20000362\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-TBHW\" syi=\"30002471\"/>\r\n    <row c=\"V1G-63\" ci=\"20000362\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9P4O-F\" syi=\"30002472\"/>\r\n    <row c=\"F-ZNNG\" ci=\"20000363\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UBX-CC\" syi=\"30002473\"/>\r\n    <row c=\"F-ZNNG\" ci=\"20000363\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TJM-JJ\" syi=\"30002474\"/>\r\n    <row c=\"F-ZNNG\" ci=\"20000363\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EOA-ZC\" syi=\"30002475\"/>\r\n    <row c=\"F-ZNNG\" ci=\"20000363\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-73MR\" syi=\"30002476\"/>\r\n    <row c=\"F-ZNNG\" ci=\"20000363\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-91FV\" syi=\"30002477\"/>\r\n    <row c=\"F-ZNNG\" ci=\"20000363\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD-5B8\" syi=\"30002478\"/>\r\n    <row c=\"F-ZNNG\" ci=\"20000363\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QP0K-B\" syi=\"30002479\"/>\r\n    <row c=\"F-ZNNG\" ci=\"20000363\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"54-MF6\" syi=\"30002480\"/>\r\n    <row c=\"KR-XF4\" ci=\"20000364\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D-I9HJ\" syi=\"30002481\"/>\r\n    <row c=\"KR-XF4\" ci=\"20000364\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P-6I0B\" syi=\"30002482\"/>\r\n    <row c=\"KR-XF4\" ci=\"20000364\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CFYY-J\" syi=\"30002483\"/>\r\n    <row c=\"KR-XF4\" ci=\"20000364\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8-KZXQ\" syi=\"30002484\"/>\r\n    <row c=\"KR-XF4\" ci=\"20000364\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HKYW-T\" syi=\"30002485\"/>\r\n    <row c=\"KR-XF4\" ci=\"20000364\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3SFU-S\" syi=\"30002486\"/>\r\n    <row c=\"KR-XF4\" ci=\"20000364\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VJ-NQP\" syi=\"30002487\"/>\r\n    <row c=\"KR-XF4\" ci=\"20000364\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U6D-9A\" syi=\"30002488\"/>\r\n    <row c=\"KR-XF4\" ci=\"20000364\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Atioth\" syi=\"30002489\"/>\r\n    <row c=\"KR-XF4\" ci=\"20000364\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PYY3-5\" syi=\"30002490\"/>\r\n    <row c=\"KR-XF4\" ci=\"20000364\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RFGW-V\" syi=\"30002491\"/>\r\n    <row c=\"KR-XF4\" ci=\"20000364\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-HK93\" syi=\"30002492\"/>\r\n    <row c=\"RJ-1R7\" ci=\"20000365\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LR-2XT\" syi=\"30002493\"/>\r\n    <row c=\"RJ-1R7\" ci=\"20000365\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TZL-WT\" syi=\"30002494\"/>\r\n    <row c=\"RJ-1R7\" ci=\"20000365\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4K0N-J\" syi=\"30002495\"/>\r\n    <row c=\"RJ-1R7\" ci=\"20000365\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-F1MI\" syi=\"30002496\"/>\r\n    <row c=\"RJ-1R7\" ci=\"20000365\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W-3BSU\" syi=\"30002497\"/>\r\n    <row c=\"RJ-1R7\" ci=\"20000365\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BE-UUN\" syi=\"30002498\"/>\r\n    <row c=\"74IL-O\" ci=\"20000366\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O2O-2X\" syi=\"30002499\"/>\r\n    <row c=\"74IL-O\" ci=\"20000366\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JE1-36\" syi=\"30002500\"/>\r\n    <row c=\"74IL-O\" ci=\"20000366\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5F-YRA\" syi=\"30002501\"/>\r\n    <row c=\"74IL-O\" ci=\"20000366\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TDE4-H\" syi=\"30002502\"/>\r\n    <row c=\"74IL-O\" ci=\"20000366\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UER-TH\" syi=\"30002503\"/>\r\n    <row c=\"74IL-O\" ci=\"20000366\" r=\"Geminate\" ri=\"10000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UG-UWZ\" syi=\"30002504\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Hulm\" syi=\"30002505\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Osoggur\" syi=\"30002506\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Abudban\" syi=\"30002507\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Trytedald\" syi=\"30002508\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Odatrik\" syi=\"30002509\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Rens\" syi=\"30002510\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Ameinaka\" syi=\"30002511\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Alakgur\" syi=\"30002512\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Dammalin\" syi=\"30002513\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Bosboger\" syi=\"30002514\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Olfeim\" syi=\"30002515\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Lulm\" syi=\"30002516\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Gulmorogod\" syi=\"30002517\"/>\r\n    <row c=\"Osta\" ci=\"20000369\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Edmalbrurdus\" syi=\"30002518\"/>\r\n    <row c=\"Osta\" ci=\"20000369\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Kronsur\" syi=\"30002519\"/>\r\n    <row c=\"Osta\" ci=\"20000369\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Dumkirinur\" syi=\"30002520\"/>\r\n    <row c=\"Osta\" ci=\"20000369\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Sist\" syi=\"30002521\"/>\r\n    <row c=\"Osta\" ci=\"20000369\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Obrolber\" syi=\"30002522\"/>\r\n    <row c=\"Osta\" ci=\"20000369\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Austraka\" syi=\"30002523\"/>\r\n    <row c=\"Odengsolf\" ci=\"20000370\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Ivar\" syi=\"30002524\"/>\r\n    <row c=\"Odengsolf\" ci=\"20000370\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Meirakulf\" syi=\"30002525\"/>\r\n    <row c=\"Odengsolf\" ci=\"20000370\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Frarn\" syi=\"30002526\"/>\r\n    <row c=\"Odengsolf\" ci=\"20000370\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Illinfrik\" syi=\"30002527\"/>\r\n    <row c=\"Odengsolf\" ci=\"20000370\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Balginia\" syi=\"30002528\"/>\r\n    <row c=\"Odengsolf\" ci=\"20000370\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Gyng\" syi=\"30002529\"/>\r\n    <row c=\"Odengsolf\" ci=\"20000370\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Avesber\" syi=\"30002530\"/>\r\n    <row c=\"Wiedadur\" ci=\"20000371\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Gerek\" syi=\"30002531\"/>\r\n    <row c=\"Wiedadur\" ci=\"20000371\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Tongofur\" syi=\"30002532\"/>\r\n    <row c=\"Wiedadur\" ci=\"20000371\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Gerbold\" syi=\"30002533\"/>\r\n    <row c=\"Wiedadur\" ci=\"20000371\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Rokofur\" syi=\"30002534\"/>\r\n    <row c=\"Wiedadur\" ci=\"20000371\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Ebasgerdur\" syi=\"30002535\"/>\r\n    <row c=\"Wiedadur\" ci=\"20000371\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Ebodold\" syi=\"30002536\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Amamake\" syi=\"30002537\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Vard\" syi=\"30002538\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Siseide\" syi=\"30002539\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Lantorn\" syi=\"30002540\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Dal\" syi=\"30002541\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Auga\" syi=\"30002542\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Eystur\" syi=\"30002543\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Pator\" syi=\"30002544\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Lustrevik\" syi=\"30002545\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Isendeldik\" syi=\"30002546\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Ammold\" syi=\"30002547\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Emolgranlan\" syi=\"30002548\"/>\r\n    <row c=\"Akimamur\" ci=\"20000374\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Offugen\" syi=\"30002549\"/>\r\n    <row c=\"Akimamur\" ci=\"20000374\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Roniko\" syi=\"30002550\"/>\r\n    <row c=\"Akimamur\" ci=\"20000374\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Aralgrund\" syi=\"30002551\"/>\r\n    <row c=\"Akimamur\" ci=\"20000374\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Eddar\" syi=\"30002552\"/>\r\n    <row c=\"Akimamur\" ci=\"20000374\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Bogelek\" syi=\"30002553\"/>\r\n    <row c=\"Akimamur\" ci=\"20000374\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Wiskeber\" syi=\"30002554\"/>\r\n    <row c=\"Evannater\" ci=\"20000375\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Eifer\" syi=\"30002555\"/>\r\n    <row c=\"Evannater\" ci=\"20000375\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Gusandall\" syi=\"30002556\"/>\r\n    <row c=\"Evannater\" ci=\"20000375\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Atgur\" syi=\"30002557\"/>\r\n    <row c=\"Evannater\" ci=\"20000375\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Endrulf\" syi=\"30002558\"/>\r\n    <row c=\"Evannater\" ci=\"20000375\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Ingunn\" syi=\"30002559\"/>\r\n    <row c=\"Evannater\" ci=\"20000375\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Gultratren\" syi=\"30002560\"/>\r\n    <row c=\"Evannater\" ci=\"20000375\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Auren\" syi=\"30002561\"/>\r\n    <row c=\"Urtfer\" ci=\"20000376\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Trer\" syi=\"30002562\"/>\r\n    <row c=\"Urtfer\" ci=\"20000376\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Egmur\" syi=\"30002563\"/>\r\n    <row c=\"Urtfer\" ci=\"20000376\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Javrendei\" syi=\"30002564\"/>\r\n    <row c=\"Urtfer\" ci=\"20000376\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Appen\" syi=\"30002565\"/>\r\n    <row c=\"Urtfer\" ci=\"20000376\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Klir\" syi=\"30002566\"/>\r\n    <row c=\"Urtfer\" ci=\"20000376\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Jorus\" syi=\"30002567\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Onga\" syi=\"30002568\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Osaumuni\" syi=\"30002569\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Magiko\" syi=\"30002570\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Oremmulf\" syi=\"30002571\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Hurjafren\" syi=\"30002572\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Vullat\" syi=\"30002573\"/>\r\n    <row c=\"Benurad\" ci=\"20000378\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Hrondedir\" syi=\"30002574\"/>\r\n    <row c=\"Benurad\" ci=\"20000378\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Sotrenzur\" syi=\"30002575\"/>\r\n    <row c=\"Benurad\" ci=\"20000378\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Hrondmund\" syi=\"30002576\"/>\r\n    <row c=\"Benurad\" ci=\"20000378\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Bundindus\" syi=\"30002577\"/>\r\n    <row c=\"Benurad\" ci=\"20000378\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Otraren\" syi=\"30002578\"/>\r\n    <row c=\"Benurad\" ci=\"20000378\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Hedgiviter\" syi=\"30002579\"/>\r\n    <row c=\"Benurad\" ci=\"20000378\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Katugumur\" syi=\"30002580\"/>\r\n    <row c=\"5J-SSP\" ci=\"20000379\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1-7KWU\" syi=\"30002581\"/>\r\n    <row c=\"5J-SSP\" ci=\"20000379\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3-UCBF\" syi=\"30002582\"/>\r\n    <row c=\"5J-SSP\" ci=\"20000379\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-CREL\" syi=\"30002583\"/>\r\n    <row c=\"5J-SSP\" ci=\"20000379\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TM-0P2\" syi=\"30002584\"/>\r\n    <row c=\"5J-SSP\" ci=\"20000379\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4OIV-X\" syi=\"30002585\"/>\r\n    <row c=\"5J-SSP\" ci=\"20000379\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-JKJ8\" syi=\"30002586\"/>\r\n    <row c=\"5J-SSP\" ci=\"20000379\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AFJ-NB\" syi=\"30002587\"/>\r\n    <row c=\"ZYR-NF\" ci=\"20000380\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-64KI\" syi=\"30002588\"/>\r\n    <row c=\"ZYR-NF\" ci=\"20000380\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9I-SRF\" syi=\"30002589\"/>\r\n    <row c=\"ZYR-NF\" ci=\"20000380\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-IIBL\" syi=\"30002590\"/>\r\n    <row c=\"ZYR-NF\" ci=\"20000380\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5GQ-S9\" syi=\"30002591\"/>\r\n    <row c=\"ZYR-NF\" ci=\"20000380\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YALR-F\" syi=\"30002592\"/>\r\n    <row c=\"ZYR-NF\" ci=\"20000380\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"68FT-6\" syi=\"30002593\"/>\r\n    <row c=\"ZYR-NF\" ci=\"20000380\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IV-UNR\" syi=\"30002594\"/>\r\n    <row c=\"ZYR-NF\" ci=\"20000380\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IRE-98\" syi=\"30002595\"/>\r\n    <row c=\"ZYR-NF\" ci=\"20000380\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HOHF-B\" syi=\"30002596\"/>\r\n    <row c=\"ZYR-NF\" ci=\"20000380\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-6B0E\" syi=\"30002597\"/>\r\n    <row c=\"ZYR-NF\" ci=\"20000380\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-3H2P\" syi=\"30002598\"/>\r\n    <row c=\"1A-WYQ\" ci=\"20000381\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DY-40Z\" syi=\"30002599\"/>\r\n    <row c=\"1A-WYQ\" ci=\"20000381\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XWY-YM\" syi=\"30002600\"/>\r\n    <row c=\"1A-WYQ\" ci=\"20000381\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-9V5D\" syi=\"30002601\"/>\r\n    <row c=\"1A-WYQ\" ci=\"20000381\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O2-39S\" syi=\"30002602\"/>\r\n    <row c=\"1A-WYQ\" ci=\"20000381\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-VEJZ\" syi=\"30002603\"/>\r\n    <row c=\"1A-WYQ\" ci=\"20000381\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LJK-T0\" syi=\"30002604\"/>\r\n    <row c=\"05M-I1\" ci=\"20000382\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E7VE-V\" syi=\"30002605\"/>\r\n    <row c=\"05M-I1\" ci=\"20000382\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NUG-OF\" syi=\"30002606\"/>\r\n    <row c=\"05M-I1\" ci=\"20000382\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L6BY-P\" syi=\"30002607\"/>\r\n    <row c=\"05M-I1\" ci=\"20000382\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U3SQ-X\" syi=\"30002608\"/>\r\n    <row c=\"05M-I1\" ci=\"20000382\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"01TG-J\" syi=\"30002609\"/>\r\n    <row c=\"05M-I1\" ci=\"20000382\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UK-SHL\" syi=\"30002610\"/>\r\n    <row c=\"05M-I1\" ci=\"20000382\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A1BK-A\" syi=\"30002611\"/>\r\n    <row c=\"EK-NQ2\" ci=\"20000383\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-7ECY\" syi=\"30002612\"/>\r\n    <row c=\"EK-NQ2\" ci=\"20000383\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-MPSJ\" syi=\"30002613\"/>\r\n    <row c=\"EK-NQ2\" ci=\"20000383\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TWJ-AW\" syi=\"30002614\"/>\r\n    <row c=\"EK-NQ2\" ci=\"20000383\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PZMA-E\" syi=\"30002615\"/>\r\n    <row c=\"EK-NQ2\" ci=\"20000383\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"442-CS\" syi=\"30002616\"/>\r\n    <row c=\"EK-NQ2\" ci=\"20000383\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-N9IP\" syi=\"30002617\"/>\r\n    <row c=\"EK-NQ2\" ci=\"20000383\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9ZFH-Z\" syi=\"30002618\"/>\r\n    <row c=\"O6W-QE\" ci=\"20000384\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6E-MOW\" syi=\"30002619\"/>\r\n    <row c=\"O6W-QE\" ci=\"20000384\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GBT4-J\" syi=\"30002620\"/>\r\n    <row c=\"O6W-QE\" ci=\"20000384\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GZ1-A1\" syi=\"30002621\"/>\r\n    <row c=\"O6W-QE\" ci=\"20000384\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-0CKQ\" syi=\"30002622\"/>\r\n    <row c=\"O6W-QE\" ci=\"20000384\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6B-GKA\" syi=\"30002623\"/>\r\n    <row c=\"O6W-QE\" ci=\"20000384\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LHGA-W\" syi=\"30002624\"/>\r\n    <row c=\"O6W-QE\" ci=\"20000384\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4RS-L1\" syi=\"30002625\"/>\r\n    <row c=\"QZJ-FL\" ci=\"20000385\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D-L4H0\" syi=\"30002626\"/>\r\n    <row c=\"QZJ-FL\" ci=\"20000385\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GU-9F4\" syi=\"30002627\"/>\r\n    <row c=\"QZJ-FL\" ci=\"20000385\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FG-1GH\" syi=\"30002628\"/>\r\n    <row c=\"QZJ-FL\" ci=\"20000385\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WFYM-0\" syi=\"30002629\"/>\r\n    <row c=\"QZJ-FL\" ci=\"20000385\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FR-B1H\" syi=\"30002630\"/>\r\n    <row c=\"QZJ-FL\" ci=\"20000385\" r=\"Impass\" ri=\"10000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DDI-B7\" syi=\"30002631\"/>\r\n    <row c=\"Disier\" ci=\"20000386\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Pettinck\" syi=\"30002632\"/>\r\n    <row c=\"Disier\" ci=\"20000386\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Du Annes\" syi=\"30002633\"/>\r\n    <row c=\"Disier\" ci=\"20000386\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Balle\" syi=\"30002634\"/>\r\n    <row c=\"Disier\" ci=\"20000386\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Decon\" syi=\"30002635\"/>\r\n    <row c=\"Disier\" ci=\"20000386\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Grinacanne\" syi=\"30002636\"/>\r\n    <row c=\"Disier\" ci=\"20000386\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Metserel\" syi=\"30002637\"/>\r\n    <row c=\"Disier\" ci=\"20000386\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Sharuveil\" syi=\"30002638\"/>\r\n    <row c=\"Disier\" ci=\"20000386\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Adreland\" syi=\"30002639\"/>\r\n    <row c=\"Disier\" ci=\"20000386\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Erme\" syi=\"30002640\"/>\r\n    <row c=\"Disier\" ci=\"20000386\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Aufay\" syi=\"30002641\"/>\r\n    <row c=\"Gallente Border Zone\" ci=\"20000387\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Iyen-Oursta\" syi=\"30002642\"/>\r\n    <row c=\"Gallente Border Zone\" ci=\"20000387\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Faurent\" syi=\"30002643\"/>\r\n    <row c=\"Gallente Border Zone\" ci=\"20000387\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Ambeke\" syi=\"30002644\"/>\r\n    <row c=\"Gallente Border Zone\" ci=\"20000387\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Carrou\" syi=\"30002645\"/>\r\n    <row c=\"Gallente Border Zone\" ci=\"20000387\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Direrie\" syi=\"30002646\"/>\r\n    <row c=\"Gallente Border Zone\" ci=\"20000387\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Ignoitton\" syi=\"30002647\"/>\r\n    <row c=\"Spaen\" ci=\"20000388\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Ardene\" syi=\"30002648\"/>\r\n    <row c=\"Spaen\" ci=\"20000388\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Boillair\" syi=\"30002649\"/>\r\n    <row c=\"Spaen\" ci=\"20000388\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Ney\" syi=\"30002650\"/>\r\n    <row c=\"Spaen\" ci=\"20000388\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Fasse\" syi=\"30002651\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Ala\" syi=\"30002652\"/>\r\n    <row c=\"Spaen\" ci=\"20000388\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Gratesier\" syi=\"30002653\"/>\r\n    <row c=\"Spaen\" ci=\"20000388\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Schoorasana\" syi=\"30002654\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Vylade\" syi=\"30002655\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Auvergne\" syi=\"30002656\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Aunia\" syi=\"30002657\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Agrallarier\" syi=\"30002658\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Dodixie\" syi=\"30002659\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Eglennaert\" syi=\"30002660\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Botane\" syi=\"30002661\"/>\r\n    <row c=\"Firille\" ci=\"20000390\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Pulin\" syi=\"30002662\"/>\r\n    <row c=\"Firille\" ci=\"20000390\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Foves\" syi=\"30002663\"/>\r\n    <row c=\"Firille\" ci=\"20000390\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Alles\" syi=\"30002664\"/>\r\n    <row c=\"Firille\" ci=\"20000390\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Misneden\" syi=\"30002665\"/>\r\n    <row c=\"Firille\" ci=\"20000390\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Basgerin\" syi=\"30002666\"/>\r\n    <row c=\"Firille\" ci=\"20000390\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Chelien\" syi=\"30002667\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Trosquesere\" syi=\"30002668\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Ansone\" syi=\"30002669\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Dunraelare\" syi=\"30002670\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Nausschie\" syi=\"30002671\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Inghenges\" syi=\"30002672\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Estene\" syi=\"30002673\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Gallareue\" syi=\"30002674\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Stayme\" syi=\"30002675\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Parchanier\" syi=\"30002676\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Fluekele\" syi=\"30002677\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Alsottobier\" syi=\"30002678\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Jolia\" syi=\"30002679\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Augnais\" syi=\"30002680\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Deltole\" syi=\"30002681\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Colelie\" syi=\"30002682\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Barmalie\" syi=\"30002683\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Audaerne\" syi=\"30002684\"/>\r\n    <row c=\"Lolbrerie\" ci=\"20000393\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Dodenvale\" syi=\"30002685\"/>\r\n    <row c=\"Lolbrerie\" ci=\"20000393\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Olettiers\" syi=\"30002686\"/>\r\n    <row c=\"Lolbrerie\" ci=\"20000393\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Artisine\" syi=\"30002687\"/>\r\n    <row c=\"Lolbrerie\" ci=\"20000393\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Chainelant\" syi=\"30002688\"/>\r\n    <row c=\"Lolbrerie\" ci=\"20000393\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Sileperer\" syi=\"30002689\"/>\r\n    <row c=\"Lolbrerie\" ci=\"20000393\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Bamiette\" syi=\"30002690\"/>\r\n    <row c=\"Lolbrerie\" ci=\"20000393\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Crielere\" syi=\"30002691\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Jel\" syi=\"30002692\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Egghelende\" syi=\"30002693\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Odette\" syi=\"30002694\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Ation\" syi=\"30002695\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Stegette\" syi=\"30002696\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Ravarin\" syi=\"30002697\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Aliette\" syi=\"30002698\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Brapelille\" syi=\"30002699\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Bawilan\" syi=\"30002700\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Atier\" syi=\"30002701\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Archee\" syi=\"30002702\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Brybier\" syi=\"30002703\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Adrallezoen\" syi=\"30002704\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Croleur\" syi=\"30002705\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Doussivitte\" syi=\"30002706\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Unel\" syi=\"30002707\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Claysson\" syi=\"30002708\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Auberulle\" syi=\"30002709\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Adiere\" syi=\"30002710\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Stetille\" syi=\"30002711\"/>\r\n    <row c=\"Nexus\" ci=\"20000397\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Alillere\" syi=\"30002712\"/>\r\n    <row c=\"Nexus\" ci=\"20000397\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Abenync\" syi=\"30002713\"/>\r\n    <row c=\"Nexus\" ci=\"20000397\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Pozirblant\" syi=\"30002714\"/>\r\n    <row c=\"Nexus\" ci=\"20000397\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Bourynes\" syi=\"30002715\"/>\r\n    <row c=\"Nexus\" ci=\"20000397\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Aurcel\" syi=\"30002716\"/>\r\n    <row c=\"Nexus\" ci=\"20000397\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Aymaerne\" syi=\"30002717\"/>\r\n    <row c=\"Aeman\" ci=\"20000398\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Rancer\" syi=\"30002718\"/>\r\n    <row c=\"Aeman\" ci=\"20000398\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Miroitem\" syi=\"30002719\"/>\r\n    <row c=\"Aeman\" ci=\"20000398\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Thelan\" syi=\"30002720\"/>\r\n    <row c=\"Aeman\" ci=\"20000398\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Rorsins\" syi=\"30002721\"/>\r\n    <row c=\"Aeman\" ci=\"20000398\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Lamadent\" syi=\"30002722\"/>\r\n    <row c=\"Aeman\" ci=\"20000398\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Otou\" syi=\"30002723\"/>\r\n    <row c=\"Nadire\" ci=\"20000399\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Assiettes\" syi=\"30002724\"/>\r\n    <row c=\"Nadire\" ci=\"20000399\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Goinard\" syi=\"30002725\"/>\r\n    <row c=\"Nadire\" ci=\"20000399\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Raeghoscon\" syi=\"30002726\"/>\r\n    <row c=\"Nadire\" ci=\"20000399\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Allipes\" syi=\"30002727\"/>\r\n    <row c=\"Nadire\" ci=\"20000399\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Lermireve\" syi=\"30002728\"/>\r\n    <row c=\"Nadire\" ci=\"20000399\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Aetree\" syi=\"30002729\"/>\r\n    <row c=\"Nadire\" ci=\"20000399\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Esmes\" syi=\"30002730\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Vittenyn\" syi=\"30002731\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Mirilene\" syi=\"30002732\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Pucherie\" syi=\"30002733\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Fricoure\" syi=\"30002734\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Caretyn\" syi=\"30002735\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Ainaille\" syi=\"30002736\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Konola\" syi=\"30002737\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Inoue\" syi=\"30002738\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Isaziwa\" syi=\"30002739\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Eitu\" syi=\"30002740\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Horkkisen\" syi=\"30002741\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Erila\" syi=\"30002742\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Ohvosamon\" syi=\"30002743\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Auviken\" syi=\"30002744\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Saikanen\" syi=\"30002745\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Oijamon\" syi=\"30002746\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Kakki\" syi=\"30002747\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Jeras\" syi=\"30002748\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Kausaaja\" syi=\"30002749\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Oiniken\" syi=\"30002750\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Kaimon\" syi=\"30002751\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Ahynada\" syi=\"30002752\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Aikoro\" syi=\"30002753\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Alikara\" syi=\"30002754\"/>\r\n    <row c=\"Ieyama\" ci=\"20000404\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Usi\" syi=\"30002755\"/>\r\n    <row c=\"Ieyama\" ci=\"20000404\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Ishomilken\" syi=\"30002756\"/>\r\n    <row c=\"Ieyama\" ci=\"20000404\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Nikkishina\" syi=\"30002757\"/>\r\n    <row c=\"Ieyama\" ci=\"20000404\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Hasama\" syi=\"30002758\"/>\r\n    <row c=\"Ieyama\" ci=\"20000404\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Uuna\" syi=\"30002759\"/>\r\n    <row c=\"Ieyama\" ci=\"20000404\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Manjonakko\" syi=\"30002760\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Kassigainen\" syi=\"30002761\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Yashunen\" syi=\"30002762\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Tennen\" syi=\"30002763\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Hatakani\" syi=\"30002764\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Sivala\" syi=\"30002765\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Iivinen\" syi=\"30002766\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Kubinen\" syi=\"30002767\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Uedama\" syi=\"30002768\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Enderailen\" syi=\"30002769\"/>\r\n    <row c=\"Krai Svarog\" ci=\"20000788\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Tunudan\" syi=\"30002770\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Kulelen\" syi=\"30002771\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Rairomon\" syi=\"30002772\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Hogimo\" syi=\"30002773\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Huttaken\" syi=\"30002774\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Paara\" syi=\"30002775\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Annaro\" syi=\"30002776\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Isutaka\" syi=\"30002777\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Tasabeshi\" syi=\"30002778\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Ono\" syi=\"30002779\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Muvolailen\" syi=\"30002780\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Halaima\" syi=\"30002781\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Kamio\" syi=\"30002782\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Sankkasen\" syi=\"30002783\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Tintoh\" syi=\"30002784\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Santola\" syi=\"30002785\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Ikao\" syi=\"30002786\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Waira\" syi=\"30002787\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Inaro\" syi=\"30002788\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Kaaputenen\" syi=\"30002789\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Waskisen\" syi=\"30002790\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Sirppala\" syi=\"30002791\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Irjunen\" syi=\"30002792\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Inari\" syi=\"30002793\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Yria\" syi=\"30002794\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Oshaima\" syi=\"30002795\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Hysera\" syi=\"30002796\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Kaunokka\" syi=\"30002797\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Venilen\" syi=\"30002798\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Oisio\" syi=\"30002799\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Haatomo\" syi=\"30002800\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Suroken\" syi=\"30002801\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Kusomonmon\" syi=\"30002802\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Juunigaishi\" syi=\"30002803\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Isikesu\" syi=\"30002804\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Anttiri\" syi=\"30002805\"/>\r\n    <row c=\"Isoma\" ci=\"20000412\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Hasmijaala\" syi=\"30002806\"/>\r\n    <row c=\"Isoma\" ci=\"20000412\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Nagamanen\" syi=\"30002807\"/>\r\n    <row c=\"Isoma\" ci=\"20000412\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Oto\" syi=\"30002808\"/>\r\n    <row c=\"Isoma\" ci=\"20000412\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Sujarento\" syi=\"30002809\"/>\r\n    <row c=\"Isoma\" ci=\"20000412\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Eranakko\" syi=\"30002810\"/>\r\n    <row c=\"Isoma\" ci=\"20000412\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Onatoh\" syi=\"30002811\"/>\r\n    <row c=\"Isoma\" ci=\"20000412\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Tannolen\" syi=\"30002812\"/>\r\n    <row c=\"Isoma\" ci=\"20000412\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Tama\" syi=\"30002813\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Uotila\" syi=\"30002814\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Isenairos\" syi=\"30002815\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Saila\" syi=\"30002816\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Aramachi\" syi=\"30002817\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Oichiya\" syi=\"30002818\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Motsu\" syi=\"30002819\"/>\r\n    <row c=\"6-CBBM\" ci=\"20000414\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-JK02\" syi=\"30002820\"/>\r\n    <row c=\"6-CBBM\" ci=\"20000414\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JT2I-7\" syi=\"30002821\"/>\r\n    <row c=\"6-CBBM\" ci=\"20000414\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XTJ-5Q\" syi=\"30002822\"/>\r\n    <row c=\"6-CBBM\" ci=\"20000414\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1-KCSA\" syi=\"30002823\"/>\r\n    <row c=\"6-CBBM\" ci=\"20000414\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UJXC-B\" syi=\"30002824\"/>\r\n    <row c=\"6-CBBM\" ci=\"20000414\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UDVW-O\" syi=\"30002825\"/>\r\n    <row c=\"6-CBBM\" ci=\"20000414\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F48K-D\" syi=\"30002826\"/>\r\n    <row c=\"78-6RI\" ci=\"20000415\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FBH-JN\" syi=\"30002827\"/>\r\n    <row c=\"78-6RI\" ci=\"20000415\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BVRQ-O\" syi=\"30002828\"/>\r\n    <row c=\"78-6RI\" ci=\"20000415\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QX-4HO\" syi=\"30002829\"/>\r\n    <row c=\"78-6RI\" ci=\"20000415\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LS3-HP\" syi=\"30002830\"/>\r\n    <row c=\"78-6RI\" ci=\"20000415\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SH6X-F\" syi=\"30002831\"/>\r\n    <row c=\"78-6RI\" ci=\"20000415\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6V-D0E\" syi=\"30002832\"/>\r\n    <row c=\"2O-VY7\" ci=\"20000416\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SG-3HY\" syi=\"30002833\"/>\r\n    <row c=\"2O-VY7\" ci=\"20000416\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AU2V-J\" syi=\"30002834\"/>\r\n    <row c=\"2O-VY7\" ci=\"20000416\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SY-0AM\" syi=\"30002835\"/>\r\n    <row c=\"2O-VY7\" ci=\"20000416\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-YB15\" syi=\"30002836\"/>\r\n    <row c=\"2O-VY7\" ci=\"20000416\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QZX-L9\" syi=\"30002837\"/>\r\n    <row c=\"2O-VY7\" ci=\"20000416\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D-6PKO\" syi=\"30002838\"/>\r\n    <row c=\"3NA-Z1\" ci=\"20000417\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RAI-0E\" syi=\"30002839\"/>\r\n    <row c=\"3NA-Z1\" ci=\"20000417\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MN9P-A\" syi=\"30002840\"/>\r\n    <row c=\"3NA-Z1\" ci=\"20000417\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TA9T-P\" syi=\"30002841\"/>\r\n    <row c=\"3NA-Z1\" ci=\"20000417\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-TLFU\" syi=\"30002842\"/>\r\n    <row c=\"3NA-Z1\" ci=\"20000417\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BM-VYZ\" syi=\"30002843\"/>\r\n    <row c=\"3NA-Z1\" ci=\"20000417\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-GICU\" syi=\"30002844\"/>\r\n    <row c=\"3NA-Z1\" ci=\"20000417\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EPCD-D\" syi=\"30002845\"/>\r\n    <row c=\"S4S-SD\" ci=\"20000418\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0S1-GI\" syi=\"30002846\"/>\r\n    <row c=\"S4S-SD\" ci=\"20000418\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-GY1B\" syi=\"30002847\"/>\r\n    <row c=\"S4S-SD\" ci=\"20000418\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"74-DRC\" syi=\"30002848\"/>\r\n    <row c=\"S4S-SD\" ci=\"20000418\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LE-67X\" syi=\"30002849\"/>\r\n    <row c=\"S4S-SD\" ci=\"20000418\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B1UE-J\" syi=\"30002850\"/>\r\n    <row c=\"S4S-SD\" ci=\"20000418\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O31W-6\" syi=\"30002851\"/>\r\n    <row c=\"S4S-SD\" ci=\"20000418\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M3-H2Y\" syi=\"30002852\"/>\r\n    <row c=\"U-HSM3\" ci=\"20000419\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-KCFT\" syi=\"30002853\"/>\r\n    <row c=\"U-HSM3\" ci=\"20000419\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WNM-V0\" syi=\"30002854\"/>\r\n    <row c=\"U-HSM3\" ci=\"20000419\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6FS-CZ\" syi=\"30002855\"/>\r\n    <row c=\"U-HSM3\" ci=\"20000419\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HPV-RJ\" syi=\"30002856\"/>\r\n    <row c=\"U-HSM3\" ci=\"20000419\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H7S-5I\" syi=\"30002857\"/>\r\n    <row c=\"U-HSM3\" ci=\"20000419\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C3J0-O\" syi=\"30002858\"/>\r\n    <row c=\"U-HSM3\" ci=\"20000419\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GSO-SR\" syi=\"30002859\"/>\r\n    <row c=\"U-HSM3\" ci=\"20000419\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B3ZU-H\" syi=\"30002860\"/>\r\n    <row c=\"8UD2-J\" ci=\"20000420\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G4-QU6\" syi=\"30002861\"/>\r\n    <row c=\"8UD2-J\" ci=\"20000420\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V2-GZS\" syi=\"30002862\"/>\r\n    <row c=\"8UD2-J\" ci=\"20000420\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HD-HOZ\" syi=\"30002863\"/>\r\n    <row c=\"8UD2-J\" ci=\"20000420\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"42G-OB\" syi=\"30002864\"/>\r\n    <row c=\"8UD2-J\" ci=\"20000420\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LEM-I1\" syi=\"30002865\"/>\r\n    <row c=\"8UD2-J\" ci=\"20000420\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1S-SU1\" syi=\"30002866\"/>\r\n    <row c=\"8UD2-J\" ci=\"20000420\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ND-GL4\" syi=\"30002867\"/>\r\n    <row c=\"XPG-HE\" ci=\"20000421\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-0QB7\" syi=\"30002868\"/>\r\n    <row c=\"XPG-HE\" ci=\"20000421\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-75WN\" syi=\"30002869\"/>\r\n    <row c=\"XPG-HE\" ci=\"20000421\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PNFW-O\" syi=\"30002870\"/>\r\n    <row c=\"XPG-HE\" ci=\"20000421\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HVGR-R\" syi=\"30002871\"/>\r\n    <row c=\"XPG-HE\" ci=\"20000421\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K76A-3\" syi=\"30002872\"/>\r\n    <row c=\"XPG-HE\" ci=\"20000421\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K95-9I\" syi=\"30002873\"/>\r\n    <row c=\"P-B2NE\" ci=\"20000422\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R1O-GN\" syi=\"30002874\"/>\r\n    <row c=\"P-B2NE\" ci=\"20000422\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GQ-7SP\" syi=\"30002875\"/>\r\n    <row c=\"P-B2NE\" ci=\"20000422\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BGMZ-0\" syi=\"30002876\"/>\r\n    <row c=\"P-B2NE\" ci=\"20000422\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I2D3-5\" syi=\"30002877\"/>\r\n    <row c=\"P-B2NE\" ci=\"20000422\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FZX-PU\" syi=\"30002878\"/>\r\n    <row c=\"P-B2NE\" ci=\"20000422\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O9K-FT\" syi=\"30002879\"/>\r\n    <row c=\"P-B2NE\" ci=\"20000422\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RQOO-U\" syi=\"30002880\"/>\r\n    <row c=\"2Q-8WA\" ci=\"20000423\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FB5U-I\" syi=\"30002881\"/>\r\n    <row c=\"2Q-8WA\" ci=\"20000423\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BZ-BCK\" syi=\"30002882\"/>\r\n    <row c=\"2Q-8WA\" ci=\"20000423\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-VFC6\" syi=\"30002883\"/>\r\n    <row c=\"2Q-8WA\" ci=\"20000423\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O5-YNW\" syi=\"30002884\"/>\r\n    <row c=\"2Q-8WA\" ci=\"20000423\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"86L-9F\" syi=\"30002885\"/>\r\n    <row c=\"2Q-8WA\" ci=\"20000423\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IUU3-L\" syi=\"30002886\"/>\r\n    <row c=\"2Q-8WA\" ci=\"20000423\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J-OAH2\" syi=\"30002887\"/>\r\n    <row c=\"2Q-8WA\" ci=\"20000423\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S-LHPJ\" syi=\"30002888\"/>\r\n    <row c=\"29V-1R\" ci=\"20000424\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4U90-Z\" syi=\"30002889\"/>\r\n    <row c=\"29V-1R\" ci=\"20000424\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T-945F\" syi=\"30002890\"/>\r\n    <row c=\"29V-1R\" ci=\"20000424\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FO8M-2\" syi=\"30002891\"/>\r\n    <row c=\"29V-1R\" ci=\"20000424\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD-CBT\" syi=\"30002892\"/>\r\n    <row c=\"29V-1R\" ci=\"20000424\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QPO-WI\" syi=\"30002893\"/>\r\n    <row c=\"29V-1R\" ci=\"20000424\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R8S-1K\" syi=\"30002894\"/>\r\n    <row c=\"Z-D6K5\" ci=\"20000425\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"94-H3F\" syi=\"30002895\"/>\r\n    <row c=\"Z-D6K5\" ci=\"20000425\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CU9-T0\" syi=\"30002896\"/>\r\n    <row c=\"Z-D6K5\" ci=\"20000425\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XCF-8N\" syi=\"30002897\"/>\r\n    <row c=\"Z-D6K5\" ci=\"20000425\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FMB-JP\" syi=\"30002898\"/>\r\n    <row c=\"Z-D6K5\" ci=\"20000425\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0P-F3K\" syi=\"30002899\"/>\r\n    <row c=\"Z-D6K5\" ci=\"20000425\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K5F-Z2\" syi=\"30002900\"/>\r\n    <row c=\"Z-D6K5\" ci=\"20000425\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TXME-A\" syi=\"30002901\"/>\r\n    <row c=\"VW7-YN\" ci=\"20000426\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YA0-XJ\" syi=\"30002902\"/>\r\n    <row c=\"VW7-YN\" ci=\"20000426\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2-KF56\" syi=\"30002903\"/>\r\n    <row c=\"VW7-YN\" ci=\"20000426\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VFK-IV\" syi=\"30002904\"/>\r\n    <row c=\"VW7-YN\" ci=\"20000426\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2R-CRW\" syi=\"30002905\"/>\r\n    <row c=\"VW7-YN\" ci=\"20000426\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CCP-US\" syi=\"30002906\"/>\r\n    <row c=\"VW7-YN\" ci=\"20000426\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"II-5O9\" syi=\"30002907\"/>\r\n    <row c=\"UTQ-BO\" ci=\"20000427\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I30-3A\" syi=\"30002908\"/>\r\n    <row c=\"UTQ-BO\" ci=\"20000427\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2O9G-D\" syi=\"30002909\"/>\r\n    <row c=\"UTQ-BO\" ci=\"20000427\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NC-N3F\" syi=\"30002910\"/>\r\n    <row c=\"UTQ-BO\" ci=\"20000427\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JU-OWQ\" syi=\"30002911\"/>\r\n    <row c=\"UTQ-BO\" ci=\"20000427\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S-DN5M\" syi=\"30002912\"/>\r\n    <row c=\"UTQ-BO\" ci=\"20000427\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MXX5-9\" syi=\"30002913\"/>\r\n    <row c=\"UTQ-BO\" ci=\"20000427\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZZZR-5\" syi=\"30002914\"/>\r\n    <row c=\"N-U2LX\" ci=\"20000428\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C7Y-7Z\" syi=\"30002915\"/>\r\n    <row c=\"N-U2LX\" ci=\"20000428\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-Z4DA\" syi=\"30002916\"/>\r\n    <row c=\"N-U2LX\" ci=\"20000428\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3OAT-Q\" syi=\"30002917\"/>\r\n    <row c=\"N-U2LX\" ci=\"20000428\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-TFXK\" syi=\"30002918\"/>\r\n    <row c=\"N-U2LX\" ci=\"20000428\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"33RB-O\" syi=\"30002919\"/>\r\n    <row c=\"N-U2LX\" ci=\"20000428\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DKUK-G\" syi=\"30002920\"/>\r\n    <row c=\"S-B1E4\" ci=\"20000429\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3QE-9Q\" syi=\"30002921\"/>\r\n    <row c=\"S-B1E4\" ci=\"20000429\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-FIC0\" syi=\"30002922\"/>\r\n    <row c=\"S-B1E4\" ci=\"20000429\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZOYW-O\" syi=\"30002923\"/>\r\n    <row c=\"S-B1E4\" ci=\"20000429\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"85-B52\" syi=\"30002924\"/>\r\n    <row c=\"S-B1E4\" ci=\"20000429\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YZ-UKA\" syi=\"30002925\"/>\r\n    <row c=\"S-B1E4\" ci=\"20000429\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RO0-AF\" syi=\"30002926\"/>\r\n    <row c=\"S-B1E4\" ci=\"20000429\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5W3-DG\" syi=\"30002927\"/>\r\n    <row c=\"S-B1E4\" ci=\"20000429\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LT-DRO\" syi=\"30002928\"/>\r\n    <row c=\"S-B1E4\" ci=\"20000429\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7T6P-C\" syi=\"30002929\"/>\r\n    <row c=\"S-B1E4\" ci=\"20000429\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8S28-3\" syi=\"30002930\"/>\r\n    <row c=\"S-B1E4\" ci=\"20000429\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E3UY-6\" syi=\"30002931\"/>\r\n    <row c=\"A21H-Z\" ci=\"20000430\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LEK-N5\" syi=\"30002932\"/>\r\n    <row c=\"A21H-Z\" ci=\"20000430\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AGG-NR\" syi=\"30002933\"/>\r\n    <row c=\"A21H-Z\" ci=\"20000430\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0V0R-R\" syi=\"30002934\"/>\r\n    <row c=\"A21H-Z\" ci=\"20000430\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-2RNZ\" syi=\"30002935\"/>\r\n    <row c=\"A21H-Z\" ci=\"20000430\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OWXT-5\" syi=\"30002936\"/>\r\n    <row c=\"A21H-Z\" ci=\"20000430\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3JN9-Q\" syi=\"30002937\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3T7-M8\" syi=\"30002938\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WUZ-WM\" syi=\"30002939\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MZ1E-P\" syi=\"30002940\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"43B-O1\" syi=\"30002941\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J1AU-9\" syi=\"30002942\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X3-PBC\" syi=\"30002943\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4N-BUI\" syi=\"30002944\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N2IS-B\" syi=\"30002945\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XCBK-X\" syi=\"30002946\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GY5-26\" syi=\"30002947\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VPLL-N\" syi=\"30002948\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9CK-KZ\" syi=\"30002949\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5S-KXA\" syi=\"30002950\"/>\r\n    <row c=\"D-AWFI\" ci=\"20000432\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U-TJ7Y\" syi=\"30002951\"/>\r\n    <row c=\"D-AWFI\" ci=\"20000432\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A4L-A2\" syi=\"30002952\"/>\r\n    <row c=\"D-AWFI\" ci=\"20000432\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CZDJ-1\" syi=\"30002953\"/>\r\n    <row c=\"D-AWFI\" ci=\"20000432\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RG9-7U\" syi=\"30002954\"/>\r\n    <row c=\"D-AWFI\" ci=\"20000432\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UJY-HE\" syi=\"30002955\"/>\r\n    <row c=\"D-AWFI\" ci=\"20000432\" r=\"Deklein\" ri=\"10000035\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UEJX-G\" syi=\"30002956\"/>\r\n    <row c=\"Semou\" ci=\"20000433\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Tzvi\" syi=\"30002957\"/>\r\n    <row c=\"Semou\" ci=\"20000433\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Raa\" syi=\"30002958\"/>\r\n    <row c=\"Semou\" ci=\"20000433\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Sifilar\" syi=\"30002959\"/>\r\n    <row c=\"Semou\" ci=\"20000433\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Arzad\" syi=\"30002960\"/>\r\n    <row c=\"Semou\" ci=\"20000433\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Oyeman\" syi=\"30002961\"/>\r\n    <row c=\"Semou\" ci=\"20000433\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Ezzara\" syi=\"30002962\"/>\r\n    <row c=\"Ryra\" ci=\"20000434\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Odin\" syi=\"30002963\"/>\r\n    <row c=\"Ryra\" ci=\"20000434\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Esescama\" syi=\"30002964\"/>\r\n    <row c=\"Ryra\" ci=\"20000434\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Choonka\" syi=\"30002965\"/>\r\n    <row c=\"Ryra\" ci=\"20000434\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Thasinaz\" syi=\"30002966\"/>\r\n    <row c=\"Ryra\" ci=\"20000434\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Dihra\" syi=\"30002967\"/>\r\n    <row c=\"Ryra\" ci=\"20000434\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Dital\" syi=\"30002968\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Eredan\" syi=\"30002969\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Ohide\" syi=\"30002970\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Sasoutikh\" syi=\"30002971\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Gheth\" syi=\"30002972\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Lisudeh\" syi=\"30002973\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Mehatoor\" syi=\"30002974\"/>\r\n    <row c=\"Jayai\" ci=\"20000436\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Roushzar\" syi=\"30002975\"/>\r\n    <row c=\"Jayai\" ci=\"20000436\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Labapi\" syi=\"30002976\"/>\r\n    <row c=\"Jayai\" ci=\"20000436\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Arayar\" syi=\"30002977\"/>\r\n    <row c=\"Jayai\" ci=\"20000436\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Asghed\" syi=\"30002978\"/>\r\n    <row c=\"Jayai\" ci=\"20000436\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Tararan\" syi=\"30002979\"/>\r\n    <row c=\"Jayai\" ci=\"20000436\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Sosan\" syi=\"30002980\"/>\r\n    <row c=\"Jayai\" ci=\"20000436\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Halmah\" syi=\"30002981\"/>\r\n    <row c=\"Kabo\" ci=\"20000437\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Rahadalon\" syi=\"30002982\"/>\r\n    <row c=\"Kabo\" ci=\"20000437\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Soosat\" syi=\"30002983\"/>\r\n    <row c=\"Kabo\" ci=\"20000437\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Ibash\" syi=\"30002984\"/>\r\n    <row c=\"Kabo\" ci=\"20000437\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Itsyamil\" syi=\"30002985\"/>\r\n    <row c=\"Kabo\" ci=\"20000437\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Mendori\" syi=\"30002986\"/>\r\n    <row c=\"Kabo\" ci=\"20000437\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Ussad\" syi=\"30002987\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Nakatre\" syi=\"30002988\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Laddiaha\" syi=\"30002989\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Hakshma\" syi=\"30002990\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Uadelah\" syi=\"30002991\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Akes\" syi=\"30002992\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Riavayed\" syi=\"30002993\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Hati\" syi=\"30002994\"/>\r\n    <row c=\"Abthi\" ci=\"20000439\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Naeel\" syi=\"30002995\"/>\r\n    <row c=\"Abthi\" ci=\"20000439\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Lower Debyl\" syi=\"30002996\"/>\r\n    <row c=\"Abthi\" ci=\"20000439\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Ehnoum\" syi=\"30002997\"/>\r\n    <row c=\"Abthi\" ci=\"20000439\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Upper Debyl\" syi=\"30002998\"/>\r\n    <row c=\"Abthi\" ci=\"20000439\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Shastal\" syi=\"30002999\"/>\r\n    <row c=\"Abthi\" ci=\"20000439\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Thakala\" syi=\"30003000\"/>\r\n    <row c=\"Enka\" ci=\"20000440\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Mili\" syi=\"30003001\"/>\r\n    <row c=\"Enka\" ci=\"20000440\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Faktun\" syi=\"30003002\"/>\r\n    <row c=\"Enka\" ci=\"20000440\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Halenan\" syi=\"30003003\"/>\r\n    <row c=\"Enka\" ci=\"20000440\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Ulerah\" syi=\"30003004\"/>\r\n    <row c=\"Enka\" ci=\"20000440\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Uktiad\" syi=\"30003005\"/>\r\n    <row c=\"Enka\" ci=\"20000440\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Nidebora\" syi=\"30003006\"/>\r\n    <row c=\"Enka\" ci=\"20000440\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Arveyil\" syi=\"30003007\"/>\r\n    <row c=\"Enka\" ci=\"20000440\" r=\"Devoid\" ri=\"10000036\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Palpis\" syi=\"30003008\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Arnatele\" syi=\"30003009\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Halle\" syi=\"30003010\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Mormoen\" syi=\"30003011\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Amattens\" syi=\"30003012\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Jurlesel\" syi=\"30003013\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Bereye\" syi=\"30003014\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Aice\" syi=\"30003015\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Junsoraert\" syi=\"30003016\"/>\r\n    <row c=\"Chasnaye\" ci=\"20000442\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Harerget\" syi=\"30003017\"/>\r\n    <row c=\"Chasnaye\" ci=\"20000442\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Azer\" syi=\"30003018\"/>\r\n    <row c=\"Chasnaye\" ci=\"20000442\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Cherore\" syi=\"30003019\"/>\r\n    <row c=\"Chasnaye\" ci=\"20000442\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Torvi\" syi=\"30003020\"/>\r\n    <row c=\"Chasnaye\" ci=\"20000442\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Mosson\" syi=\"30003021\"/>\r\n    <row c=\"Chasnaye\" ci=\"20000442\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Mya\" syi=\"30003022\"/>\r\n    <row c=\"Chasnaye\" ci=\"20000442\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Gerper\" syi=\"30003023\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Marosier\" syi=\"30003024\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Lirsautton\" syi=\"30003025\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Blameston\" syi=\"30003026\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Vaurent\" syi=\"30003027\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Aclan\" syi=\"30003028\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Jaschercis\" syi=\"30003029\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Ardallabier\" syi=\"30003030\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Athinard\" syi=\"30003031\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Meves\" syi=\"30003032\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Ethernity\" syi=\"30003033\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Mattere\" syi=\"30003034\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Gicodel\" syi=\"30003035\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Frarolle\" syi=\"30003036\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Quier\" syi=\"30003037\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Atlanins\" syi=\"30003038\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Leremblompes\" syi=\"30003039\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Bille\" syi=\"30003040\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Colcer\" syi=\"30003041\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Alachene\" syi=\"30003042\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Uphene\" syi=\"30003043\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Elarel\" syi=\"30003044\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Enedore\" syi=\"30003045\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Angymonne\" syi=\"30003046\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Averon\" syi=\"30003047\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Carirgnottin\" syi=\"30003048\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Laic\" syi=\"30003049\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Odixie\" syi=\"30003050\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Antollare\" syi=\"30003051\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Tolle\" syi=\"30003052\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Avele\" syi=\"30003053\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Scuelazyns\" syi=\"30003054\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Aydoteaux\" syi=\"30003055\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Muer\" syi=\"30003056\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Groothese\" syi=\"30003057\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Olide\" syi=\"30003058\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Adeel\" syi=\"30003059\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Mannar\" syi=\"30003060\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Mormelot\" syi=\"30003061\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Angatalie\" syi=\"30003062\"/>\r\n    <row c=\"Sasen\" ci=\"20000448\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Lamaa\" syi=\"30003063\"/>\r\n    <row c=\"Sasen\" ci=\"20000448\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Tuomuta\" syi=\"30003064\"/>\r\n    <row c=\"Sasen\" ci=\"20000448\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Otelen\" syi=\"30003065\"/>\r\n    <row c=\"Sasen\" ci=\"20000448\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Kuomi\" syi=\"30003066\"/>\r\n    <row c=\"Sasen\" ci=\"20000448\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Huola\" syi=\"30003067\"/>\r\n    <row c=\"Sasen\" ci=\"20000448\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Kourmonen\" syi=\"30003068\"/>\r\n    <row c=\"Sasen\" ci=\"20000448\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Kamela\" syi=\"30003069\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Sosala\" syi=\"30003070\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Anka\" syi=\"30003071\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Iesa\" syi=\"30003072\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Netsalakka\" syi=\"30003073\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Sasiekko\" syi=\"30003074\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Myyhera\" syi=\"30003075\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Gammel\" syi=\"30003076\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Uusanen\" syi=\"30003077\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Erkinen\" syi=\"30003078\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Saikamon\" syi=\"30003079\"/>\r\n    <row c=\"Ichida\" ci=\"20000450\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Jarkkolen\" syi=\"30003080\"/>\r\n    <row c=\"Ichida\" ci=\"20000450\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Ronne\" syi=\"30003081\"/>\r\n    <row c=\"Ichida\" ci=\"20000450\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Hatori\" syi=\"30003082\"/>\r\n    <row c=\"Ichida\" ci=\"20000450\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Junsen\" syi=\"30003083\"/>\r\n    <row c=\"Ichida\" ci=\"20000450\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Malpara\" syi=\"30003084\"/>\r\n    <row c=\"Ichida\" ci=\"20000450\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Hakodan\" syi=\"30003085\"/>\r\n    <row c=\"Tandoiras\" ci=\"20000451\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Sahtogas\" syi=\"30003086\"/>\r\n    <row c=\"Tandoiras\" ci=\"20000451\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Haras\" syi=\"30003087\"/>\r\n    <row c=\"Tandoiras\" ci=\"20000451\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Oyonata\" syi=\"30003088\"/>\r\n    <row c=\"Tandoiras\" ci=\"20000451\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Kurniainen\" syi=\"30003089\"/>\r\n    <row c=\"Tandoiras\" ci=\"20000451\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Saidusairos\" syi=\"30003090\"/>\r\n    <row c=\"Tandoiras\" ci=\"20000451\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Tannakan\" syi=\"30003091\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Komaa\" syi=\"30003092\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Ayeroilen\" syi=\"30003093\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Imata\" syi=\"30003094\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Furskeshin\" syi=\"30003095\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Kurmaru\" syi=\"30003096\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Satalama\" syi=\"30003097\"/>\r\n    <row c=\"KUSW-P\" ci=\"20000453\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VYJ-DA\" syi=\"30003098\"/>\r\n    <row c=\"KUSW-P\" ci=\"20000453\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HHQ-M1\" syi=\"30003099\"/>\r\n    <row c=\"KUSW-P\" ci=\"20000453\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-CJGE\" syi=\"30003100\"/>\r\n    <row c=\"KUSW-P\" ci=\"20000453\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G2-INZ\" syi=\"30003101\"/>\r\n    <row c=\"KUSW-P\" ci=\"20000453\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WAC-HW\" syi=\"30003102\"/>\r\n    <row c=\"KUSW-P\" ci=\"20000453\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HT4K-M\" syi=\"30003103\"/>\r\n    <row c=\"KUSW-P\" ci=\"20000453\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RBW-8G\" syi=\"30003104\"/>\r\n    <row c=\"8T-OLH\" ci=\"20000454\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-OUKF\" syi=\"30003105\"/>\r\n    <row c=\"8T-OLH\" ci=\"20000454\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HAJ-DQ\" syi=\"30003106\"/>\r\n    <row c=\"8T-OLH\" ci=\"20000454\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JAUD-V\" syi=\"30003107\"/>\r\n    <row c=\"8T-OLH\" ci=\"20000454\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DTX8-M\" syi=\"30003108\"/>\r\n    <row c=\"8T-OLH\" ci=\"20000454\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C9N-CC\" syi=\"30003109\"/>\r\n    <row c=\"8T-OLH\" ci=\"20000454\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-7BIX\" syi=\"30003110\"/>\r\n    <row c=\"8T-OLH\" ci=\"20000454\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-9UXZ\" syi=\"30003111\"/>\r\n    <row c=\"8T-OLH\" ci=\"20000454\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q0OH-V\" syi=\"30003112\"/>\r\n    <row c=\"Q-2BI6\" ci=\"20000455\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-VZAK\" syi=\"30003113\"/>\r\n    <row c=\"Q-2BI6\" ci=\"20000455\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-O6XF\" syi=\"30003114\"/>\r\n    <row c=\"Q-2BI6\" ci=\"20000455\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D-FVI7\" syi=\"30003115\"/>\r\n    <row c=\"Q-2BI6\" ci=\"20000455\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VL7-60\" syi=\"30003116\"/>\r\n    <row c=\"Q-2BI6\" ci=\"20000455\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NH-R5B\" syi=\"30003117\"/>\r\n    <row c=\"Q-2BI6\" ci=\"20000455\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FN-GFQ\" syi=\"30003118\"/>\r\n    <row c=\"JSZ-X6\" ci=\"20000456\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XKZ8-H\" syi=\"30003119\"/>\r\n    <row c=\"JSZ-X6\" ci=\"20000456\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WX-6UX\" syi=\"30003120\"/>\r\n    <row c=\"JSZ-X6\" ci=\"20000456\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BZ-0GW\" syi=\"30003121\"/>\r\n    <row c=\"JSZ-X6\" ci=\"20000456\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"16P-PX\" syi=\"30003122\"/>\r\n    <row c=\"JSZ-X6\" ci=\"20000456\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CR-0E5\" syi=\"30003123\"/>\r\n    <row c=\"JSZ-X6\" ci=\"20000456\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-Y9C3\" syi=\"30003124\"/>\r\n    <row c=\"R2-BT6\" ci=\"20000457\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A1-AUH\" syi=\"30003125\"/>\r\n    <row c=\"R2-BT6\" ci=\"20000457\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-UVBV\" syi=\"30003126\"/>\r\n    <row c=\"R2-BT6\" ci=\"20000457\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R-FM0G\" syi=\"30003127\"/>\r\n    <row c=\"R2-BT6\" ci=\"20000457\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TEIZ-C\" syi=\"30003128\"/>\r\n    <row c=\"R2-BT6\" ci=\"20000457\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VUAC-Y\" syi=\"30003129\"/>\r\n    <row c=\"R2-BT6\" ci=\"20000457\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-XANH\" syi=\"30003130\"/>\r\n    <row c=\"R2-BT6\" ci=\"20000457\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"450I-W\" syi=\"30003131\"/>\r\n    <row c=\"R2-BT6\" ci=\"20000457\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OIOM-Y\" syi=\"30003132\"/>\r\n    <row c=\"3WN-1T\" ci=\"20000458\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-YZUX\" syi=\"30003133\"/>\r\n    <row c=\"3WN-1T\" ci=\"20000458\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CZ6U-1\" syi=\"30003134\"/>\r\n    <row c=\"3WN-1T\" ci=\"20000458\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D-PNP9\" syi=\"30003135\"/>\r\n    <row c=\"3WN-1T\" ci=\"20000458\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E1UU-3\" syi=\"30003136\"/>\r\n    <row c=\"3WN-1T\" ci=\"20000458\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P-3XVV\" syi=\"30003137\"/>\r\n    <row c=\"3WN-1T\" ci=\"20000458\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BY-MSY\" syi=\"30003138\"/>\r\n    <row c=\"3WN-1T\" ci=\"20000458\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6EK-BV\" syi=\"30003139\"/>\r\n    <row c=\"7ZRW-G\" ci=\"20000459\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IR-FDV\" syi=\"30003140\"/>\r\n    <row c=\"7ZRW-G\" ci=\"20000459\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NIZJ-0\" syi=\"30003141\"/>\r\n    <row c=\"7ZRW-G\" ci=\"20000459\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J-RVGD\" syi=\"30003142\"/>\r\n    <row c=\"7ZRW-G\" ci=\"20000459\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V1ZC-S\" syi=\"30003143\"/>\r\n    <row c=\"7ZRW-G\" ci=\"20000459\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-T40Z\" syi=\"30003144\"/>\r\n    <row c=\"7ZRW-G\" ci=\"20000459\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6-TYRX\" syi=\"30003145\"/>\r\n    <row c=\"7ZRW-G\" ci=\"20000459\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q1-R7K\" syi=\"30003146\"/>\r\n    <row c=\"7ZRW-G\" ci=\"20000459\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"111-F1\" syi=\"30003147\"/>\r\n    <row c=\"E-ILCH\" ci=\"20000460\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JD-TYH\" syi=\"30003148\"/>\r\n    <row c=\"E-ILCH\" ci=\"20000460\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"02V-BK\" syi=\"30003149\"/>\r\n    <row c=\"E-ILCH\" ci=\"20000460\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A5MT-B\" syi=\"30003150\"/>\r\n    <row c=\"E-ILCH\" ci=\"20000460\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R-ARKN\" syi=\"30003151\"/>\r\n    <row c=\"E-ILCH\" ci=\"20000460\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SN9S-N\" syi=\"30003152\"/>\r\n    <row c=\"E-ILCH\" ci=\"20000460\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MS2-V8\" syi=\"30003153\"/>\r\n    <row c=\"AJG-MV\" ci=\"20000461\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-MO29\" syi=\"30003154\"/>\r\n    <row c=\"AJG-MV\" ci=\"20000461\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-JC9R\" syi=\"30003155\"/>\r\n    <row c=\"AJG-MV\" ci=\"20000461\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DIBH-Q\" syi=\"30003156\"/>\r\n    <row c=\"AJG-MV\" ci=\"20000461\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DNEP-Y\" syi=\"30003157\"/>\r\n    <row c=\"AJG-MV\" ci=\"20000461\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YAP-TN\" syi=\"30003158\"/>\r\n    <row c=\"AJG-MV\" ci=\"20000461\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PE-H02\" syi=\"30003159\"/>\r\n    <row c=\"AJG-MV\" ci=\"20000461\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-YHYM\" syi=\"30003160\"/>\r\n    <row c=\"AJG-MV\" ci=\"20000461\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-4H4C\" syi=\"30003161\"/>\r\n    <row c=\"AJG-MV\" ci=\"20000461\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HHE5-L\" syi=\"30003162\"/>\r\n    <row c=\"O-PQU0\" ci=\"20000462\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P9F-ZG\" syi=\"30003163\"/>\r\n    <row c=\"O-PQU0\" ci=\"20000462\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QFGB-E\" syi=\"30003164\"/>\r\n    <row c=\"O-PQU0\" ci=\"20000462\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7P-J38\" syi=\"30003165\"/>\r\n    <row c=\"O-PQU0\" ci=\"20000462\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WT-2J9\" syi=\"30003166\"/>\r\n    <row c=\"O-PQU0\" ci=\"20000462\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PK-PHZ\" syi=\"30003167\"/>\r\n    <row c=\"O-PQU0\" ci=\"20000462\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-M6JK\" syi=\"30003168\"/>\r\n    <row c=\"O-PQU0\" ci=\"20000462\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-PEWN\" syi=\"30003169\"/>\r\n    <row c=\"9D1V-O\" ci=\"20000463\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DL-CDY\" syi=\"30003170\"/>\r\n    <row c=\"9D1V-O\" ci=\"20000463\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"29YH-V\" syi=\"30003171\"/>\r\n    <row c=\"9D1V-O\" ci=\"20000463\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LG-RO2\" syi=\"30003172\"/>\r\n    <row c=\"9D1V-O\" ci=\"20000463\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-HISR\" syi=\"30003173\"/>\r\n    <row c=\"9D1V-O\" ci=\"20000463\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QS-530\" syi=\"30003174\"/>\r\n    <row c=\"9D1V-O\" ci=\"20000463\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VR-YRV\" syi=\"30003175\"/>\r\n    <row c=\"9D1V-O\" ci=\"20000463\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IPX-H5\" syi=\"30003176\"/>\r\n    <row c=\"FY6-NK\" ci=\"20000464\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KSM-1T\" syi=\"30003177\"/>\r\n    <row c=\"FY6-NK\" ci=\"20000464\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YRV-MZ\" syi=\"30003178\"/>\r\n    <row c=\"FY6-NK\" ci=\"20000464\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6SB-BN\" syi=\"30003179\"/>\r\n    <row c=\"FY6-NK\" ci=\"20000464\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B1D-KU\" syi=\"30003180\"/>\r\n    <row c=\"FY6-NK\" ci=\"20000464\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QFIU-K\" syi=\"30003181\"/>\r\n    <row c=\"FY6-NK\" ci=\"20000464\" r=\"Esoteria\" ri=\"10000039\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2R-KLH\" syi=\"30003182\"/>\r\n    <row c=\"WE-WLQ\" ci=\"20000465\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QB-AE6\" syi=\"30003183\"/>\r\n    <row c=\"WE-WLQ\" ci=\"20000465\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-W1ND\" syi=\"30003184\"/>\r\n    <row c=\"WE-WLQ\" ci=\"20000465\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MZLW-9\" syi=\"30003185\"/>\r\n    <row c=\"WE-WLQ\" ci=\"20000465\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ND-X7X\" syi=\"30003186\"/>\r\n    <row c=\"WE-WLQ\" ci=\"20000465\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DGDT-3\" syi=\"30003187\"/>\r\n    <row c=\"WE-WLQ\" ci=\"20000465\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2-WNTD\" syi=\"30003188\"/>\r\n    <row c=\"WE-WLQ\" ci=\"20000465\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"83-YGI\" syi=\"30003189\"/>\r\n    <row c=\"WE-WLQ\" ci=\"20000465\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KH-EWC\" syi=\"30003190\"/>\r\n    <row c=\"T-4ACL\" ci=\"20000466\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3VL6-I\" syi=\"30003191\"/>\r\n    <row c=\"T-4ACL\" ci=\"20000466\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-816R\" syi=\"30003192\"/>\r\n    <row c=\"T-4ACL\" ci=\"20000466\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DS3-6A\" syi=\"30003193\"/>\r\n    <row c=\"T-4ACL\" ci=\"20000466\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V0-H4L\" syi=\"30003194\"/>\r\n    <row c=\"T-4ACL\" ci=\"20000466\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T-HMWP\" syi=\"30003195\"/>\r\n    <row c=\"T-4ACL\" ci=\"20000466\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DYS-CG\" syi=\"30003196\"/>\r\n    <row c=\"0PS-L5\" ci=\"20000467\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MTGF-2\" syi=\"30003197\"/>\r\n    <row c=\"0PS-L5\" ci=\"20000467\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-QP56\" syi=\"30003198\"/>\r\n    <row c=\"0PS-L5\" ci=\"20000467\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GTQ-C9\" syi=\"30003199\"/>\r\n    <row c=\"0PS-L5\" ci=\"20000467\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-NWLB\" syi=\"30003200\"/>\r\n    <row c=\"0PS-L5\" ci=\"20000467\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ORB4-J\" syi=\"30003201\"/>\r\n    <row c=\"0PS-L5\" ci=\"20000467\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GGMF-J\" syi=\"30003202\"/>\r\n    <row c=\"0PS-L5\" ci=\"20000467\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IG-4OF\" syi=\"30003203\"/>\r\n    <row c=\"CZ-06R\" ci=\"20000468\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LQQH-J\" syi=\"30003204\"/>\r\n    <row c=\"CZ-06R\" ci=\"20000468\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W5-VBR\" syi=\"30003205\"/>\r\n    <row c=\"CZ-06R\" ci=\"20000468\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J-D5U7\" syi=\"30003206\"/>\r\n    <row c=\"CZ-06R\" ci=\"20000468\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-770C\" syi=\"30003207\"/>\r\n    <row c=\"CZ-06R\" ci=\"20000468\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-Z4JW\" syi=\"30003208\"/>\r\n    <row c=\"CZ-06R\" ci=\"20000468\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R8WV-7\" syi=\"30003209\"/>\r\n    <row c=\"F-W6B4\" ci=\"20000469\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6U-MFQ\" syi=\"30003210\"/>\r\n    <row c=\"F-W6B4\" ci=\"20000469\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1EO-OE\" syi=\"30003211\"/>\r\n    <row c=\"F-W6B4\" ci=\"20000469\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YQTK-R\" syi=\"30003212\"/>\r\n    <row c=\"F-W6B4\" ci=\"20000469\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FZCR-3\" syi=\"30003213\"/>\r\n    <row c=\"F-W6B4\" ci=\"20000469\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-9L3H\" syi=\"30003214\"/>\r\n    <row c=\"F-W6B4\" ci=\"20000469\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1-HDQ4\" syi=\"30003215\"/>\r\n    <row c=\"3RU-10\" ci=\"20000470\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WVMS-X\" syi=\"30003216\"/>\r\n    <row c=\"3RU-10\" ci=\"20000470\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7-UVMT\" syi=\"30003217\"/>\r\n    <row c=\"3RU-10\" ci=\"20000470\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R-ZESX\" syi=\"30003218\"/>\r\n    <row c=\"3RU-10\" ci=\"20000470\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IO-R2S\" syi=\"30003219\"/>\r\n    <row c=\"3RU-10\" ci=\"20000470\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HF-K3O\" syi=\"30003220\"/>\r\n    <row c=\"3RU-10\" ci=\"20000470\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QE2-FS\" syi=\"30003221\"/>\r\n    <row c=\"3RU-10\" ci=\"20000470\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-ITV5\" syi=\"30003222\"/>\r\n    <row c=\"DOCS-O\" ci=\"20000471\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5JEZ-I\" syi=\"30003223\"/>\r\n    <row c=\"DOCS-O\" ci=\"20000471\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XEF6-Z\" syi=\"30003224\"/>\r\n    <row c=\"DOCS-O\" ci=\"20000471\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SON-TW\" syi=\"30003225\"/>\r\n    <row c=\"DOCS-O\" ci=\"20000471\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-X0KM\" syi=\"30003226\"/>\r\n    <row c=\"DOCS-O\" ci=\"20000471\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U9SE-N\" syi=\"30003227\"/>\r\n    <row c=\"DOCS-O\" ci=\"20000471\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XXZ-3W\" syi=\"30003228\"/>\r\n    <row c=\"04-LOF\" ci=\"20000472\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RF-X7V\" syi=\"30003229\"/>\r\n    <row c=\"04-LOF\" ci=\"20000472\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BQ0-UU\" syi=\"30003230\"/>\r\n    <row c=\"04-LOF\" ci=\"20000472\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3-JG3X\" syi=\"30003231\"/>\r\n    <row c=\"04-LOF\" ci=\"20000472\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GK3-RX\" syi=\"30003232\"/>\r\n    <row c=\"04-LOF\" ci=\"20000472\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1P-QWR\" syi=\"30003233\"/>\r\n    <row c=\"04-LOF\" ci=\"20000472\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FJ-GUR\" syi=\"30003234\"/>\r\n    <row c=\"O9X-CV\" ci=\"20000473\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UGR-J2\" syi=\"30003235\"/>\r\n    <row c=\"O9X-CV\" ci=\"20000473\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QZ-DIZ\" syi=\"30003236\"/>\r\n    <row c=\"O9X-CV\" ci=\"20000473\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-0HVF\" syi=\"30003237\"/>\r\n    <row c=\"O9X-CV\" ci=\"20000473\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"21M1-B\" syi=\"30003238\"/>\r\n    <row c=\"O9X-CV\" ci=\"20000473\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KED-2O\" syi=\"30003239\"/>\r\n    <row c=\"O9X-CV\" ci=\"20000473\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U-RELP\" syi=\"30003240\"/>\r\n    <row c=\"O9X-CV\" ci=\"20000473\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IAMJ-Q\" syi=\"30003241\"/>\r\n    <row c=\"D4J-PP\" ci=\"20000474\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E6Q-LE\" syi=\"30003242\"/>\r\n    <row c=\"D4J-PP\" ci=\"20000474\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HO4E-Q\" syi=\"30003243\"/>\r\n    <row c=\"D4J-PP\" ci=\"20000474\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QY2Y-N\" syi=\"30003244\"/>\r\n    <row c=\"D4J-PP\" ci=\"20000474\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-9ZZR\" syi=\"30003245\"/>\r\n    <row c=\"D4J-PP\" ci=\"20000474\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RO-AIQ\" syi=\"30003246\"/>\r\n    <row c=\"D4J-PP\" ci=\"20000474\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VZEG-B\" syi=\"30003247\"/>\r\n    <row c=\"D4J-PP\" ci=\"20000474\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P-ZWKH\" syi=\"30003248\"/>\r\n    <row c=\"D61-WV\" ci=\"20000475\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9G5J-1\" syi=\"30003249\"/>\r\n    <row c=\"D61-WV\" ci=\"20000475\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-ETDW\" syi=\"30003250\"/>\r\n    <row c=\"D61-WV\" ci=\"20000475\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0PU2-R\" syi=\"30003251\"/>\r\n    <row c=\"D61-WV\" ci=\"20000475\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XM-RMD\" syi=\"30003252\"/>\r\n    <row c=\"D61-WV\" ci=\"20000475\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"91-KD8\" syi=\"30003253\"/>\r\n    <row c=\"D61-WV\" ci=\"20000475\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OZ-DS5\" syi=\"30003254\"/>\r\n    <row c=\"S-Q02B\" ci=\"20000476\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LA2-KV\" syi=\"30003255\"/>\r\n    <row c=\"S-Q02B\" ci=\"20000476\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WW-OVQ\" syi=\"30003256\"/>\r\n    <row c=\"S-Q02B\" ci=\"20000476\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S7WI-F\" syi=\"30003257\"/>\r\n    <row c=\"S-Q02B\" ci=\"20000476\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1-BK1Q\" syi=\"30003258\"/>\r\n    <row c=\"S-Q02B\" ci=\"20000476\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-CYNC\" syi=\"30003259\"/>\r\n    <row c=\"S-Q02B\" ci=\"20000476\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RJBC-I\" syi=\"30003260\"/>\r\n    <row c=\"4ZXC-8\" ci=\"20000477\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-MHWF\" syi=\"30003261\"/>\r\n    <row c=\"4ZXC-8\" ci=\"20000477\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PND-SI\" syi=\"30003262\"/>\r\n    <row c=\"4ZXC-8\" ci=\"20000477\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XKM-DE\" syi=\"30003263\"/>\r\n    <row c=\"4ZXC-8\" ci=\"20000477\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JXQJ-B\" syi=\"30003264\"/>\r\n    <row c=\"4ZXC-8\" ci=\"20000477\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-BIPM\" syi=\"30003265\"/>\r\n    <row c=\"4ZXC-8\" ci=\"20000477\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QYT-X8\" syi=\"30003266\"/>\r\n    <row c=\"4ZXC-8\" ci=\"20000477\" r=\"Oasa\" ri=\"10000040\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-IH57\" syi=\"30003267\"/>\r\n    <row c=\"Z-6NQ6\" ci=\"20000478\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MHC-R3\" syi=\"30003268\"/>\r\n    <row c=\"Z-6NQ6\" ci=\"20000478\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F67E-Q\" syi=\"30003269\"/>\r\n    <row c=\"Z-6NQ6\" ci=\"20000478\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6E-578\" syi=\"30003270\"/>\r\n    <row c=\"Z-6NQ6\" ci=\"20000478\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Poitot\" syi=\"30003271\"/>\r\n    <row c=\"Z-6NQ6\" ci=\"20000478\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZVN5-H\" syi=\"30003272\"/>\r\n    <row c=\"Z-6NQ6\" ci=\"20000478\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ATY-2U\" syi=\"30003273\"/>\r\n    <row c=\"Z-6NQ6\" ci=\"20000478\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-BV98\" syi=\"30003274\"/>\r\n    <row c=\"Z-6NQ6\" ci=\"20000478\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2X-PQG\" syi=\"30003275\"/>\r\n    <row c=\"Z-6NQ6\" ci=\"20000478\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FD-MLJ\" syi=\"30003276\"/>\r\n    <row c=\"Z-6NQ6\" ci=\"20000478\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PF-346\" syi=\"30003277\"/>\r\n    <row c=\"Z-6NQ6\" ci=\"20000478\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-M2LR\" syi=\"30003278\"/>\r\n    <row c=\"Z-6NQ6\" ci=\"20000478\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K5-JRD\" syi=\"30003279\"/>\r\n    <row c=\"2-M6DE\" ci=\"20000479\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6-CZ49\" syi=\"30003280\"/>\r\n    <row c=\"2-M6DE\" ci=\"20000479\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EZA-FM\" syi=\"30003281\"/>\r\n    <row c=\"2-M6DE\" ci=\"20000479\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8-JYPM\" syi=\"30003282\"/>\r\n    <row c=\"2-M6DE\" ci=\"20000479\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PVH8-0\" syi=\"30003283\"/>\r\n    <row c=\"2-M6DE\" ci=\"20000479\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M2-CF1\" syi=\"30003284\"/>\r\n    <row c=\"2-M6DE\" ci=\"20000479\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JH-M2W\" syi=\"30003285\"/>\r\n    <row c=\"Y4Y7-Q\" ci=\"20000480\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PC9-AY\" syi=\"30003286\"/>\r\n    <row c=\"Y4Y7-Q\" ci=\"20000480\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T22-QI\" syi=\"30003287\"/>\r\n    <row c=\"Y4Y7-Q\" ci=\"20000480\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-PYH5\" syi=\"30003288\"/>\r\n    <row c=\"Y4Y7-Q\" ci=\"20000480\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZN0-SR\" syi=\"30003289\"/>\r\n    <row c=\"Y4Y7-Q\" ci=\"20000480\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-DSFH\" syi=\"30003290\"/>\r\n    <row c=\"Y4Y7-Q\" ci=\"20000480\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AK-QBU\" syi=\"30003291\"/>\r\n    <row c=\"DS-M4Q\" ci=\"20000481\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QWF-6P\" syi=\"30003292\"/>\r\n    <row c=\"DS-M4Q\" ci=\"20000481\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AAS-8R\" syi=\"30003293\"/>\r\n    <row c=\"DS-M4Q\" ci=\"20000481\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V4-L0X\" syi=\"30003294\"/>\r\n    <row c=\"DS-M4Q\" ci=\"20000481\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PFP-GU\" syi=\"30003295\"/>\r\n    <row c=\"DS-M4Q\" ci=\"20000481\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0EK-NJ\" syi=\"30003296\"/>\r\n    <row c=\"DS-M4Q\" ci=\"20000481\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1-NKVT\" syi=\"30003297\"/>\r\n    <row c=\"DS-M4Q\" ci=\"20000481\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UM-Q7F\" syi=\"30003298\"/>\r\n    <row c=\"DS-M4Q\" ci=\"20000481\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T-LIWS\" syi=\"30003299\"/>\r\n    <row c=\"DS-M4Q\" ci=\"20000481\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KTHT-O\" syi=\"30003300\"/>\r\n    <row c=\"TA-A7V\" ci=\"20000482\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"97X-CH\" syi=\"30003301\"/>\r\n    <row c=\"TA-A7V\" ci=\"20000482\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-T0PZ\" syi=\"30003302\"/>\r\n    <row c=\"TA-A7V\" ci=\"20000482\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6R-PWU\" syi=\"30003303\"/>\r\n    <row c=\"TA-A7V\" ci=\"20000482\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2Q-I6Q\" syi=\"30003304\"/>\r\n    <row c=\"TA-A7V\" ci=\"20000482\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-ZLHX\" syi=\"30003305\"/>\r\n    <row c=\"TA-A7V\" ci=\"20000482\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UTKS-5\" syi=\"30003306\"/>\r\n    <row c=\"TA-A7V\" ci=\"20000482\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y9G-KS\" syi=\"30003307\"/>\r\n    <row c=\"TA-A7V\" ci=\"20000482\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I-YGGI\" syi=\"30003308\"/>\r\n    <row c=\"MK7-AO\" ci=\"20000483\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VV-VCR\" syi=\"30003309\"/>\r\n    <row c=\"MK7-AO\" ci=\"20000483\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-75MB\" syi=\"30003310\"/>\r\n    <row c=\"MK7-AO\" ci=\"20000483\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IIRH-G\" syi=\"30003311\"/>\r\n    <row c=\"MK7-AO\" ci=\"20000483\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"35-RK9\" syi=\"30003312\"/>\r\n    <row c=\"MK7-AO\" ci=\"20000483\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XS-XAY\" syi=\"30003313\"/>\r\n    <row c=\"MK7-AO\" ci=\"20000483\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DP34-U\" syi=\"30003314\"/>\r\n    <row c=\"MK7-AO\" ci=\"20000483\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"617I-I\" syi=\"30003315\"/>\r\n    <row c=\"MK7-AO\" ci=\"20000483\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6-U2M8\" syi=\"30003316\"/>\r\n    <row c=\"MK7-AO\" ci=\"20000483\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I0AB-R\" syi=\"30003317\"/>\r\n    <row c=\"MK7-AO\" ci=\"20000483\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MXYS-8\" syi=\"30003318\"/>\r\n    <row c=\"MK7-AO\" ci=\"20000483\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-3ES3\" syi=\"30003319\"/>\r\n    <row c=\"YFN-UN\" ci=\"20000484\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8V-SJJ\" syi=\"30003320\"/>\r\n    <row c=\"YFN-UN\" ci=\"20000484\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-FGQI\" syi=\"30003321\"/>\r\n    <row c=\"YFN-UN\" ci=\"20000484\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3KNK-A\" syi=\"30003322\"/>\r\n    <row c=\"YFN-UN\" ci=\"20000484\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TXW-EI\" syi=\"30003323\"/>\r\n    <row c=\"YFN-UN\" ci=\"20000484\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3MOG-V\" syi=\"30003324\"/>\r\n    <row c=\"YFN-UN\" ci=\"20000484\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NG-C6Y\" syi=\"30003325\"/>\r\n    <row c=\"YFN-UN\" ci=\"20000484\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XYY-IA\" syi=\"30003326\"/>\r\n    <row c=\"49A-BZ\" ci=\"20000485\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BMNV-P\" syi=\"30003327\"/>\r\n    <row c=\"49A-BZ\" ci=\"20000485\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BY-S36\" syi=\"30003328\"/>\r\n    <row c=\"49A-BZ\" ci=\"20000485\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"31-MLU\" syi=\"30003329\"/>\r\n    <row c=\"49A-BZ\" ci=\"20000485\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0LTQ-C\" syi=\"30003330\"/>\r\n    <row c=\"49A-BZ\" ci=\"20000485\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A9D-R0\" syi=\"30003331\"/>\r\n    <row c=\"49A-BZ\" ci=\"20000485\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2P-4LS\" syi=\"30003332\"/>\r\n    <row c=\"49A-BZ\" ci=\"20000485\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RF-GGF\" syi=\"30003333\"/>\r\n    <row c=\"49A-BZ\" ci=\"20000485\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LSC4-P\" syi=\"30003334\"/>\r\n    <row c=\"49A-BZ\" ci=\"20000485\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-SJ8X\" syi=\"30003335\"/>\r\n    <row c=\"GN-ACS\" ci=\"20000486\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"10UZ-P\" syi=\"30003336\"/>\r\n    <row c=\"GN-ACS\" ci=\"20000486\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EN-VOD\" syi=\"30003337\"/>\r\n    <row c=\"GN-ACS\" ci=\"20000486\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9GYL-O\" syi=\"30003338\"/>\r\n    <row c=\"GN-ACS\" ci=\"20000486\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VLGD-R\" syi=\"30003339\"/>\r\n    <row c=\"GN-ACS\" ci=\"20000486\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S-GKKR\" syi=\"30003340\"/>\r\n    <row c=\"GN-ACS\" ci=\"20000486\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9U-TTJ\" syi=\"30003341\"/>\r\n    <row c=\"59H-0G\" ci=\"20000487\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-W6GF\" syi=\"30003342\"/>\r\n    <row c=\"59H-0G\" ci=\"20000487\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KFR-ZE\" syi=\"30003343\"/>\r\n    <row c=\"59H-0G\" ci=\"20000487\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KLYN-8\" syi=\"30003344\"/>\r\n    <row c=\"59H-0G\" ci=\"20000487\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D85-VD\" syi=\"30003345\"/>\r\n    <row c=\"59H-0G\" ci=\"20000487\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-VKCN\" syi=\"30003346\"/>\r\n    <row c=\"59H-0G\" ci=\"20000487\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U0V6-T\" syi=\"30003347\"/>\r\n    <row c=\"59H-0G\" ci=\"20000487\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5KS-AB\" syi=\"30003348\"/>\r\n    <row c=\"QS-FVH\" ci=\"20000488\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0T-AMZ\" syi=\"30003349\"/>\r\n    <row c=\"QS-FVH\" ci=\"20000488\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"57-YRU\" syi=\"30003350\"/>\r\n    <row c=\"QS-FVH\" ci=\"20000488\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4L-E5P\" syi=\"30003351\"/>\r\n    <row c=\"QS-FVH\" ci=\"20000488\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UFXF-C\" syi=\"30003352\"/>\r\n    <row c=\"QS-FVH\" ci=\"20000488\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RLL-9R\" syi=\"30003353\"/>\r\n    <row c=\"QS-FVH\" ci=\"20000488\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"51-5XG\" syi=\"30003354\"/>\r\n    <row c=\"6-V49K\" ci=\"20000489\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EF-F36\" syi=\"30003355\"/>\r\n    <row c=\"6-V49K\" ci=\"20000489\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3-IN0V\" syi=\"30003356\"/>\r\n    <row c=\"6-V49K\" ci=\"20000489\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-QENW\" syi=\"30003357\"/>\r\n    <row c=\"6-V49K\" ci=\"20000489\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D-B7YK\" syi=\"30003358\"/>\r\n    <row c=\"6-V49K\" ci=\"20000489\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DUV-5Y\" syi=\"30003359\"/>\r\n    <row c=\"6-V49K\" ci=\"20000489\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GRNJ-3\" syi=\"30003360\"/>\r\n    <row c=\"SKX-PL\" ci=\"20000490\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VSIG-K\" syi=\"30003361\"/>\r\n    <row c=\"SKX-PL\" ci=\"20000490\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RSS-KA\" syi=\"30003362\"/>\r\n    <row c=\"SKX-PL\" ci=\"20000490\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CIS-7X\" syi=\"30003363\"/>\r\n    <row c=\"SKX-PL\" ci=\"20000490\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DCHR-L\" syi=\"30003364\"/>\r\n    <row c=\"SKX-PL\" ci=\"20000490\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EU0I-T\" syi=\"30003365\"/>\r\n    <row c=\"SKX-PL\" ci=\"20000490\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-JWWQ\" syi=\"30003366\"/>\r\n    <row c=\"SKX-PL\" ci=\"20000490\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-6SXJ\" syi=\"30003367\"/>\r\n    <row c=\"JQV5-9\" ci=\"20000491\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S-U8A4\" syi=\"30003368\"/>\r\n    <row c=\"JQV5-9\" ci=\"20000491\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZV-72W\" syi=\"30003369\"/>\r\n    <row c=\"JQV5-9\" ci=\"20000491\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2G38-I\" syi=\"30003370\"/>\r\n    <row c=\"JQV5-9\" ci=\"20000491\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CY-ZLP\" syi=\"30003371\"/>\r\n    <row c=\"JQV5-9\" ci=\"20000491\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U4-Q2V\" syi=\"30003372\"/>\r\n    <row c=\"JQV5-9\" ci=\"20000491\" r=\"Syndicate\" ri=\"10000041\" s=\"\" se=\"0.0\" si=\"0\" sy=\"98Q-8O\" syi=\"30003373\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Arlulf\" syi=\"30003374\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Brundakur\" syi=\"30003375\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Stirht\" syi=\"30003376\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Illuin\" syi=\"30003377\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Nedegulf\" syi=\"30003378\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Aldilur\" syi=\"30003379\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Alf\" syi=\"30003380\"/>\r\n    <row c=\"Lorundio\" ci=\"20000493\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Eust\" syi=\"30003381\"/>\r\n    <row c=\"Lorundio\" ci=\"20000493\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Flost\" syi=\"30003382\"/>\r\n    <row c=\"Lorundio\" ci=\"20000493\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Todrir\" syi=\"30003383\"/>\r\n    <row c=\"Lorundio\" ci=\"20000493\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Asgeir\" syi=\"30003384\"/>\r\n    <row c=\"Lorundio\" ci=\"20000493\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Evuldgenzo\" syi=\"30003385\"/>\r\n    <row c=\"Lorundio\" ci=\"20000493\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Ongund\" syi=\"30003386\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Jondik\" syi=\"30003387\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Olbra\" syi=\"30003388\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Altrinur\" syi=\"30003389\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Vilur\" syi=\"30003390\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Reset\" syi=\"30003391\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Eygfe\" syi=\"30003392\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Eiluvodi\" syi=\"30003393\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Freatlidur\" syi=\"30003394\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Roleinn\" syi=\"30003395\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Maturat\" syi=\"30003396\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Bongveber\" syi=\"30003397\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Anbald\" syi=\"30003398\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Vorsk\" syi=\"30003399\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Hjortur\" syi=\"30003400\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Egbonbet\" syi=\"30003401\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Totkubad\" syi=\"30003402\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Meimungen\" syi=\"30003403\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Agtver\" syi=\"30003404\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Datulen\" syi=\"30003405\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Situner\" syi=\"30003406\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Tamekamur\" syi=\"30003407\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Evettullur\" syi=\"30003408\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Leurtmar\" syi=\"30003409\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Ryddinjorn\" syi=\"30003410\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Arlek\" syi=\"30003411\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Elgoi\" syi=\"30003412\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Eram\" syi=\"30003413\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Yrmori\" syi=\"30003414\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Aldagolf\" syi=\"30003415\"/>\r\n    <row c=\"Aptetter\" ci=\"20000498\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Aldrat\" syi=\"30003416\"/>\r\n    <row c=\"Aptetter\" ci=\"20000498\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Urnhard\" syi=\"30003417\"/>\r\n    <row c=\"Aptetter\" ci=\"20000498\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Hardbako\" syi=\"30003418\"/>\r\n    <row c=\"Aptetter\" ci=\"20000498\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Erstur\" syi=\"30003419\"/>\r\n    <row c=\"Aptetter\" ci=\"20000498\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Fredagod\" syi=\"30003420\"/>\r\n    <row c=\"Aptetter\" ci=\"20000498\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Libold\" syi=\"30003421\"/>\r\n    <row c=\"Ergruk\" ci=\"20000499\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Wirdalen\" syi=\"30003422\"/>\r\n    <row c=\"Ergruk\" ci=\"20000499\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Nein\" syi=\"30003423\"/>\r\n    <row c=\"Ergruk\" ci=\"20000499\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Enden\" syi=\"30003424\"/>\r\n    <row c=\"Ergruk\" ci=\"20000499\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Erstet\" syi=\"30003425\"/>\r\n    <row c=\"Ergruk\" ci=\"20000499\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Anstard\" syi=\"30003426\"/>\r\n    <row c=\"Ergruk\" ci=\"20000499\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Osvestmunnur\" syi=\"30003427\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Hilfhurmur\" syi=\"30003428\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Geffur\" syi=\"30003429\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Oppold\" syi=\"30003430\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Tratokard\" syi=\"30003431\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Lumegen\" syi=\"30003432\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Gedugaud\" syi=\"30003433\"/>\r\n    <row c=\"Frar\" ci=\"20000501\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Polstodur\" syi=\"30003434\"/>\r\n    <row c=\"Frar\" ci=\"20000501\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Hebisa\" syi=\"30003435\"/>\r\n    <row c=\"Frar\" ci=\"20000501\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Tollus\" syi=\"30003436\"/>\r\n    <row c=\"Frar\" ci=\"20000501\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Ogoten\" syi=\"30003437\"/>\r\n    <row c=\"Frar\" ci=\"20000501\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Earled\" syi=\"30003438\"/>\r\n    <row c=\"Frar\" ci=\"20000501\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Aderkan\" syi=\"30003439\"/>\r\n    <row c=\"Frar\" ci=\"20000501\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Ansher\" syi=\"30003440\"/>\r\n    <row c=\"Inkelm\" ci=\"20000502\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Earwik\" syi=\"30003441\"/>\r\n    <row c=\"Inkelm\" ci=\"20000502\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Finanar\" syi=\"30003442\"/>\r\n    <row c=\"Inkelm\" ci=\"20000502\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Moselgi\" syi=\"30003443\"/>\r\n    <row c=\"Inkelm\" ci=\"20000502\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Mateber\" syi=\"30003444\"/>\r\n    <row c=\"Inkelm\" ci=\"20000502\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Iluin\" syi=\"30003445\"/>\r\n    <row c=\"Inkelm\" ci=\"20000502\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Ofage\" syi=\"30003446\"/>\r\n    <row c=\"Panorad\" ci=\"20000503\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Josekorn\" syi=\"30003447\"/>\r\n    <row c=\"Panorad\" ci=\"20000503\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Nifflung\" syi=\"30003448\"/>\r\n    <row c=\"Panorad\" ci=\"20000503\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Hakeri\" syi=\"30003449\"/>\r\n    <row c=\"Panorad\" ci=\"20000503\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Oraekja\" syi=\"30003450\"/>\r\n    <row c=\"Panorad\" ci=\"20000503\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Dantbeinn\" syi=\"30003451\"/>\r\n    <row c=\"Panorad\" ci=\"20000503\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Irgrus\" syi=\"30003452\"/>\r\n    <row c=\"Argeir\" ci=\"20000504\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Orduin\" syi=\"30003453\"/>\r\n    <row c=\"Argeir\" ci=\"20000504\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Engosi\" syi=\"30003454\"/>\r\n    <row c=\"Argeir\" ci=\"20000504\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Atonder\" syi=\"30003455\"/>\r\n    <row c=\"Argeir\" ci=\"20000504\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Hotrardik\" syi=\"30003456\"/>\r\n    <row c=\"Argeir\" ci=\"20000504\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Ridoner\" syi=\"30003457\"/>\r\n    <row c=\"Argeir\" ci=\"20000504\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Klaevik\" syi=\"30003458\"/>\r\n    <row c=\"Rollera\" ci=\"20000505\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Lirerim\" syi=\"30003459\"/>\r\n    <row c=\"Rollera\" ci=\"20000505\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Offikatlin\" syi=\"30003460\"/>\r\n    <row c=\"Rollera\" ci=\"20000505\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Diromitur\" syi=\"30003461\"/>\r\n    <row c=\"Rollera\" ci=\"20000505\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Eldjaerin\" syi=\"30003462\"/>\r\n    <row c=\"Rollera\" ci=\"20000505\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Erlendur\" syi=\"30003463\"/>\r\n    <row c=\"Rollera\" ci=\"20000505\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Aldik\" syi=\"30003464\"/>\r\n    <row c=\"Rollera\" ci=\"20000505\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Tabbetzur\" syi=\"30003465\"/>\r\n    <row c=\"Rollera\" ci=\"20000505\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Eurgrana\" syi=\"30003466\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Frulegur\" syi=\"30003467\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Hroduko\" syi=\"30003468\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Hodrold\" syi=\"30003469\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Odebeinn\" syi=\"30003470\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Konora\" syi=\"30003471\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Erindur\" syi=\"30003472\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Fahruni\" syi=\"30003473\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Sahda\" syi=\"30003474\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Naguton\" syi=\"30003475\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Ealur\" syi=\"30003476\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Shajarleg\" syi=\"30003477\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Basan\" syi=\"30003478\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Akila\" syi=\"30003479\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Amod\" syi=\"30003480\"/>\r\n    <row c=\"Kashag\" ci=\"20000508\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Unefsih\" syi=\"30003481\"/>\r\n    <row c=\"Kashag\" ci=\"20000508\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Mista\" syi=\"30003482\"/>\r\n    <row c=\"Kashag\" ci=\"20000508\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Valmu\" syi=\"30003483\"/>\r\n    <row c=\"Kashag\" ci=\"20000508\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Sibot\" syi=\"30003484\"/>\r\n    <row c=\"Kashag\" ci=\"20000508\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Andabiar\" syi=\"30003485\"/>\r\n    <row c=\"Kashag\" ci=\"20000508\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Kheram\" syi=\"30003486\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Arbaz\" syi=\"30003487\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Penirgman\" syi=\"30003488\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Chaven\" syi=\"30003489\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Khopa\" syi=\"30003490\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Ashab\" syi=\"30003491\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Orkashu\" syi=\"30003492\"/>\r\n    <row c=\"Zemont\" ci=\"20000510\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Youl\" syi=\"30003493\"/>\r\n    <row c=\"Zemont\" ci=\"20000510\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Ekid\" syi=\"30003494\"/>\r\n    <row c=\"Krai Svarog\" ci=\"20000788\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Raravoss\" syi=\"30003495\"/>\r\n    <row c=\"Zemont\" ci=\"20000510\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Nakri\" syi=\"30003496\"/>\r\n    <row c=\"Zemont\" ci=\"20000510\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Zaimeth\" syi=\"30003497\"/>\r\n    <row c=\"Zemont\" ci=\"20000510\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Sharhelund\" syi=\"30003498\"/>\r\n    <row c=\"Zemont\" ci=\"20000510\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Mai\" syi=\"30003499\"/>\r\n    <row c=\"Yekti\" ci=\"20000511\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Sharji\" syi=\"30003500\"/>\r\n    <row c=\"Yekti\" ci=\"20000511\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Kudi\" syi=\"30003501\"/>\r\n    <row c=\"Yekti\" ci=\"20000511\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Bahromab\" syi=\"30003502\"/>\r\n    <row c=\"Yekti\" ci=\"20000511\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Madirmilire\" syi=\"30003503\"/>\r\n    <row c=\"Krai Svarog\" ci=\"20000788\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Niarja\" syi=\"30003504\"/>\r\n    <row c=\"Yekti\" ci=\"20000511\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Fabum\" syi=\"30003505\"/>\r\n    <row c=\"Yekti\" ci=\"20000511\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Saana\" syi=\"30003506\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Teshi\" syi=\"30003507\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Sayartchen\" syi=\"30003508\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Gosalav\" syi=\"30003509\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Sorzielang\" syi=\"30003510\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Somouh\" syi=\"30003511\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Abaim\" syi=\"30003512\"/>\r\n    <row c=\"Chardu\" ci=\"20000513\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Ides\" syi=\"30003513\"/>\r\n    <row c=\"Chardu\" ci=\"20000513\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Yeeramoun\" syi=\"30003514\"/>\r\n    <row c=\"Chardu\" ci=\"20000513\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Anila\" syi=\"30003515\"/>\r\n    <row c=\"Chardu\" ci=\"20000513\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Pedel\" syi=\"30003516\"/>\r\n    <row c=\"Chardu\" ci=\"20000513\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Etav\" syi=\"30003517\"/>\r\n    <row c=\"Chardu\" ci=\"20000513\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Saheri\" syi=\"30003518\"/>\r\n    <row c=\"Chardu\" ci=\"20000513\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Lahnina\" syi=\"30003519\"/>\r\n    <row c=\"Maddam\" ci=\"20000514\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Mahrokht\" syi=\"30003520\"/>\r\n    <row c=\"Maddam\" ci=\"20000514\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Alkabsi\" syi=\"30003521\"/>\r\n    <row c=\"Maddam\" ci=\"20000514\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Sarum Prime\" syi=\"30003522\"/>\r\n    <row c=\"Maddam\" ci=\"20000514\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Hama\" syi=\"30003523\"/>\r\n    <row c=\"Maddam\" ci=\"20000514\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Irnal\" syi=\"30003524\"/>\r\n    <row c=\"Maddam\" ci=\"20000514\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Bagodan\" syi=\"30003525\"/>\r\n    <row c=\"Maddam\" ci=\"20000514\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Murzi\" syi=\"30003526\"/>\r\n    <row c=\"Maddam\" ci=\"20000514\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Chesoh\" syi=\"30003527\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Herila\" syi=\"30003528\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Chemilip\" syi=\"30003529\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Raravath\" syi=\"30003530\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Hisoufad\" syi=\"30003531\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Jesoyeh\" syi=\"30003532\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Hahda\" syi=\"30003533\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Namaili\" syi=\"30003534\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Afivad\" syi=\"30003535\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Uzigh\" syi=\"30003536\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Erzoh\" syi=\"30003537\"/>\r\n    <row c=\"Mofa\" ci=\"20000516\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Merz\" syi=\"30003538\"/>\r\n    <row c=\"Mofa\" ci=\"20000516\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Miakie\" syi=\"30003539\"/>\r\n    <row c=\"Mofa\" ci=\"20000516\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Sirkahri\" syi=\"30003540\"/>\r\n    <row c=\"Mofa\" ci=\"20000516\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Faswiba\" syi=\"30003541\"/>\r\n    <row c=\"Mofa\" ci=\"20000516\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Hayumtom\" syi=\"30003542\"/>\r\n    <row c=\"Mofa\" ci=\"20000516\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Zanka\" syi=\"30003543\"/>\r\n    <row c=\"Mofa\" ci=\"20000516\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Galeh\" syi=\"30003544\"/>\r\n    <row c=\"Maseend\" ci=\"20000517\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Yuhelia\" syi=\"30003545\"/>\r\n    <row c=\"Maseend\" ci=\"20000517\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Maiah\" syi=\"30003546\"/>\r\n    <row c=\"Maseend\" ci=\"20000517\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Hamse\" syi=\"30003547\"/>\r\n    <row c=\"Maseend\" ci=\"20000517\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Barira\" syi=\"30003548\"/>\r\n    <row c=\"Maseend\" ci=\"20000517\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Lashkai\" syi=\"30003549\"/>\r\n    <row c=\"Maseend\" ci=\"20000517\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Zhilshinou\" syi=\"30003550\"/>\r\n    <row c=\"Maseend\" ci=\"20000517\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Jaswelu\" syi=\"30003551\"/>\r\n    <row c=\"Maseend\" ci=\"20000517\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Ana\" syi=\"30003552\"/>\r\n    <row c=\"Nakid\" ci=\"20000518\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Warouh\" syi=\"30003553\"/>\r\n    <row c=\"Nakid\" ci=\"20000518\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Jambu\" syi=\"30003554\"/>\r\n    <row c=\"Nakid\" ci=\"20000518\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Bittanshal\" syi=\"30003555\"/>\r\n    <row c=\"Nakid\" ci=\"20000518\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Arton\" syi=\"30003556\"/>\r\n    <row c=\"Nakid\" ci=\"20000518\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Sieh\" syi=\"30003557\"/>\r\n    <row c=\"Nakid\" ci=\"20000518\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Madimal\" syi=\"30003558\"/>\r\n    <row c=\"Jakemhih\" ci=\"20000519\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Mamet\" syi=\"30003559\"/>\r\n    <row c=\"Jakemhih\" ci=\"20000519\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Hoshoun\" syi=\"30003560\"/>\r\n    <row c=\"Jakemhih\" ci=\"20000519\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Biphi\" syi=\"30003561\"/>\r\n    <row c=\"Jakemhih\" ci=\"20000519\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Ziriert\" syi=\"30003562\"/>\r\n    <row c=\"Jakemhih\" ci=\"20000519\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Misaba\" syi=\"30003563\"/>\r\n    <row c=\"Jakemhih\" ci=\"20000519\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Rephirib\" syi=\"30003564\"/>\r\n    <row c=\"Braille\" ci=\"20000520\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Conomette\" syi=\"30003565\"/>\r\n    <row c=\"Braille\" ci=\"20000520\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Aimoguier\" syi=\"30003566\"/>\r\n    <row c=\"Braille\" ci=\"20000520\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Yveve\" syi=\"30003567\"/>\r\n    <row c=\"Braille\" ci=\"20000520\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Meunvon\" syi=\"30003568\"/>\r\n    <row c=\"Braille\" ci=\"20000520\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Cadelanne\" syi=\"30003569\"/>\r\n    <row c=\"Braille\" ci=\"20000520\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Elore\" syi=\"30003570\"/>\r\n    <row c=\"Braille\" ci=\"20000520\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Anckee\" syi=\"30003571\"/>\r\n    <row c=\"Braille\" ci=\"20000520\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Vevelonel\" syi=\"30003572\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Pertnineere\" syi=\"30003573\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Boystin\" syi=\"30003574\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Lour\" syi=\"30003575\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Maire\" syi=\"30003576\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Oerse\" syi=\"30003577\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Octanneve\" syi=\"30003578\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Larryn\" syi=\"30003579\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Niballe\" syi=\"30003580\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Postouvin\" syi=\"30003581\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Odinesyn\" syi=\"30003582\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Weraroix\" syi=\"30003583\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Sarline\" syi=\"30003584\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Aeter\" syi=\"30003585\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Gererique\" syi=\"30003586\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Harner\" syi=\"30003587\"/>\r\n    <row c=\"Goins\" ci=\"20000523\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Yvaeroure\" syi=\"30003588\"/>\r\n    <row c=\"Goins\" ci=\"20000523\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Vecodie\" syi=\"30003589\"/>\r\n    <row c=\"Goins\" ci=\"20000523\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Arasare\" syi=\"30003590\"/>\r\n    <row c=\"Goins\" ci=\"20000523\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Yvelet\" syi=\"30003591\"/>\r\n    <row c=\"Goins\" ci=\"20000523\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Lazer\" syi=\"30003592\"/>\r\n    <row c=\"Goins\" ci=\"20000523\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Stoure\" syi=\"30003593\"/>\r\n    <row c=\"Elerelle\" ci=\"20000524\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Heluene\" syi=\"30003594\"/>\r\n    <row c=\"Elerelle\" ci=\"20000524\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Arittant\" syi=\"30003595\"/>\r\n    <row c=\"Elerelle\" ci=\"20000524\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Oruse\" syi=\"30003596\"/>\r\n    <row c=\"Elerelle\" ci=\"20000524\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Hare\" syi=\"30003597\"/>\r\n    <row c=\"Elerelle\" ci=\"20000524\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Ogaria\" syi=\"30003598\"/>\r\n    <row c=\"Elerelle\" ci=\"20000524\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Faurulle\" syi=\"30003599\"/>\r\n    <row c=\"Elerelle\" ci=\"20000524\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Agaullores\" syi=\"30003600\"/>\r\n    <row c=\"Elerelle\" ci=\"20000524\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Babirmoult\" syi=\"30003601\"/>\r\n    <row c=\"Mobrault\" ci=\"20000525\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Ratillose\" syi=\"30003602\"/>\r\n    <row c=\"Mobrault\" ci=\"20000525\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Ondree\" syi=\"30003603\"/>\r\n    <row c=\"Mobrault\" ci=\"20000525\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Pochelympe\" syi=\"30003604\"/>\r\n    <row c=\"Mobrault\" ci=\"20000525\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Eggheron\" syi=\"30003605\"/>\r\n    <row c=\"Mobrault\" ci=\"20000525\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Toustain\" syi=\"30003606\"/>\r\n    <row c=\"Mobrault\" ci=\"20000525\" r=\"Solitude\" ri=\"10000044\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Straloin\" syi=\"30003607\"/>\r\n    <row c=\"M-J57M\" ci=\"20000526\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H1-ESN\" syi=\"30003608\"/>\r\n    <row c=\"M-J57M\" ci=\"20000526\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3DR-CR\" syi=\"30003609\"/>\r\n    <row c=\"M-J57M\" ci=\"20000526\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RLTG-3\" syi=\"30003610\"/>\r\n    <row c=\"M-J57M\" ci=\"20000526\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S-EVIQ\" syi=\"30003611\"/>\r\n    <row c=\"M-J57M\" ci=\"20000526\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EOY-BG\" syi=\"30003612\"/>\r\n    <row c=\"M-J57M\" ci=\"20000526\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PNS7-J\" syi=\"30003613\"/>\r\n    <row c=\"M-J57M\" ci=\"20000526\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IG-ZAM\" syi=\"30003614\"/>\r\n    <row c=\"M-J57M\" ci=\"20000526\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-UVHJ\" syi=\"30003615\"/>\r\n    <row c=\"M-J57M\" ci=\"20000526\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NCG-PW\" syi=\"30003616\"/>\r\n    <row c=\"09-4XW\" ci=\"20000527\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1QH-0K\" syi=\"30003617\"/>\r\n    <row c=\"09-4XW\" ci=\"20000527\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZH3-BS\" syi=\"30003618\"/>\r\n    <row c=\"09-4XW\" ci=\"20000527\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZJ-QOO\" syi=\"30003619\"/>\r\n    <row c=\"09-4XW\" ci=\"20000527\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZXA-V6\" syi=\"30003620\"/>\r\n    <row c=\"09-4XW\" ci=\"20000527\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I1-BE8\" syi=\"30003621\"/>\r\n    <row c=\"09-4XW\" ci=\"20000527\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W8O-19\" syi=\"30003622\"/>\r\n    <row c=\"9P57-V\" ci=\"20000528\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U1TX-A\" syi=\"30003623\"/>\r\n    <row c=\"9P57-V\" ci=\"20000528\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1BWK-S\" syi=\"30003624\"/>\r\n    <row c=\"9P57-V\" ci=\"20000528\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KMV-CQ\" syi=\"30003625\"/>\r\n    <row c=\"9P57-V\" ci=\"20000528\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RKE-CP\" syi=\"30003626\"/>\r\n    <row c=\"9P57-V\" ci=\"20000528\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NV-3KA\" syi=\"30003627\"/>\r\n    <row c=\"9P57-V\" ci=\"20000528\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S-1LIO\" syi=\"30003628\"/>\r\n    <row c=\"TJ10-O\" ci=\"20000529\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S-KSWL\" syi=\"30003629\"/>\r\n    <row c=\"TJ10-O\" ci=\"20000529\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-O8B1\" syi=\"30003630\"/>\r\n    <row c=\"TJ10-O\" ci=\"20000529\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R-YWID\" syi=\"30003631\"/>\r\n    <row c=\"TJ10-O\" ci=\"20000529\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"30-D5G\" syi=\"30003632\"/>\r\n    <row c=\"TJ10-O\" ci=\"20000529\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HB-FSO\" syi=\"30003633\"/>\r\n    <row c=\"TJ10-O\" ci=\"20000529\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J1-KJP\" syi=\"30003634\"/>\r\n    <row c=\"TJ10-O\" ci=\"20000529\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KW-1MV\" syi=\"30003635\"/>\r\n    <row c=\"X-FHU3\" ci=\"20000530\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G06-8Y\" syi=\"30003636\"/>\r\n    <row c=\"X-FHU3\" ci=\"20000530\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U-O2DA\" syi=\"30003637\"/>\r\n    <row c=\"X-FHU3\" ci=\"20000530\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WV-0R2\" syi=\"30003638\"/>\r\n    <row c=\"X-FHU3\" ci=\"20000530\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SZ6-TA\" syi=\"30003639\"/>\r\n    <row c=\"X-FHU3\" ci=\"20000530\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6-AOLS\" syi=\"30003640\"/>\r\n    <row c=\"X-FHU3\" ci=\"20000530\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IKTD-P\" syi=\"30003641\"/>\r\n    <row c=\"X-FHU3\" ci=\"20000530\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"33CE-7\" syi=\"30003642\"/>\r\n    <row c=\"X-FHU3\" ci=\"20000530\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-P3XM\" syi=\"30003643\"/>\r\n    <row c=\"GFE-SS\" ci=\"20000531\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DCJ-ZT\" syi=\"30003644\"/>\r\n    <row c=\"GFE-SS\" ci=\"20000531\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O36A-P\" syi=\"30003645\"/>\r\n    <row c=\"GFE-SS\" ci=\"20000531\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-LO6I\" syi=\"30003646\"/>\r\n    <row c=\"GFE-SS\" ci=\"20000531\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0M-103\" syi=\"30003647\"/>\r\n    <row c=\"GFE-SS\" ci=\"20000531\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6OYQ-Z\" syi=\"30003648\"/>\r\n    <row c=\"GFE-SS\" ci=\"20000531\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HE5T-A\" syi=\"30003649\"/>\r\n    <row c=\"2-ZRM0\" ci=\"20000532\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-1IJ9\" syi=\"30003650\"/>\r\n    <row c=\"2-ZRM0\" ci=\"20000532\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-YHZQ\" syi=\"30003651\"/>\r\n    <row c=\"2-ZRM0\" ci=\"20000532\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-SR1I\" syi=\"30003652\"/>\r\n    <row c=\"2-ZRM0\" ci=\"20000532\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GW7P-8\" syi=\"30003653\"/>\r\n    <row c=\"2-ZRM0\" ci=\"20000532\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SF-XJS\" syi=\"30003654\"/>\r\n    <row c=\"2-ZRM0\" ci=\"20000532\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A1RR-M\" syi=\"30003655\"/>\r\n    <row c=\"2-ZRM0\" ci=\"20000532\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AR-5SY\" syi=\"30003656\"/>\r\n    <row c=\"2-ZRM0\" ci=\"20000532\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OE-4HB\" syi=\"30003657\"/>\r\n    <row c=\"O-EOI9\" ci=\"20000533\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZK-YQ3\" syi=\"30003658\"/>\r\n    <row c=\"O-EOI9\" ci=\"20000533\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MZPH-W\" syi=\"30003659\"/>\r\n    <row c=\"O-EOI9\" ci=\"20000533\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W0X-MG\" syi=\"30003660\"/>\r\n    <row c=\"O-EOI9\" ci=\"20000533\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JI-1UQ\" syi=\"30003661\"/>\r\n    <row c=\"O-EOI9\" ci=\"20000533\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EN-GTB\" syi=\"30003662\"/>\r\n    <row c=\"O-EOI9\" ci=\"20000533\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U5-XW7\" syi=\"30003663\"/>\r\n    <row c=\"1D-65L\" ci=\"20000534\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JSI-LL\" syi=\"30003664\"/>\r\n    <row c=\"1D-65L\" ci=\"20000534\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-UC0S\" syi=\"30003665\"/>\r\n    <row c=\"1D-65L\" ci=\"20000534\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V7-MID\" syi=\"30003666\"/>\r\n    <row c=\"1D-65L\" ci=\"20000534\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SY0W-2\" syi=\"30003667\"/>\r\n    <row c=\"1D-65L\" ci=\"20000534\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2-3Q2G\" syi=\"30003668\"/>\r\n    <row c=\"1D-65L\" ci=\"20000534\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q1U-IU\" syi=\"30003669\"/>\r\n    <row c=\"E-72A3\" ci=\"20000535\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-XNUA\" syi=\"30003670\"/>\r\n    <row c=\"E-72A3\" ci=\"20000535\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7D-PAT\" syi=\"30003671\"/>\r\n    <row c=\"E-72A3\" ci=\"20000535\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-LDEJ\" syi=\"30003672\"/>\r\n    <row c=\"E-72A3\" ci=\"20000535\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T-K10W\" syi=\"30003673\"/>\r\n    <row c=\"E-72A3\" ci=\"20000535\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P-UCRP\" syi=\"30003674\"/>\r\n    <row c=\"E-72A3\" ci=\"20000535\" r=\"Tenal\" ri=\"10000045\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3-QYVE\" syi=\"30003675\"/>\r\n    <row c=\"XFLN-F\" ci=\"20000536\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C8-CHY\" syi=\"30003676\"/>\r\n    <row c=\"XFLN-F\" ci=\"20000536\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-9ORY\" syi=\"30003677\"/>\r\n    <row c=\"XFLN-F\" ci=\"20000536\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CR-IFM\" syi=\"30003678\"/>\r\n    <row c=\"XFLN-F\" ci=\"20000536\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HHK-VL\" syi=\"30003679\"/>\r\n    <row c=\"XFLN-F\" ci=\"20000536\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P-33KR\" syi=\"30003680\"/>\r\n    <row c=\"XFLN-F\" ci=\"20000536\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DO6H-Q\" syi=\"30003681\"/>\r\n    <row c=\"XFLN-F\" ci=\"20000536\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DW-T2I\" syi=\"30003682\"/>\r\n    <row c=\"UWRZ-2\" ci=\"20000537\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-CNPR\" syi=\"30003683\"/>\r\n    <row c=\"UWRZ-2\" ci=\"20000537\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-SCBU\" syi=\"30003684\"/>\r\n    <row c=\"UWRZ-2\" ci=\"20000537\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VRH-H7\" syi=\"30003685\"/>\r\n    <row c=\"UWRZ-2\" ci=\"20000537\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O1Y-ED\" syi=\"30003686\"/>\r\n    <row c=\"UWRZ-2\" ci=\"20000537\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K4YZ-Y\" syi=\"30003687\"/>\r\n    <row c=\"UWRZ-2\" ci=\"20000537\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X36Y-G\" syi=\"30003688\"/>\r\n    <row c=\"UWRZ-2\" ci=\"20000537\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-C3O7\" syi=\"30003689\"/>\r\n    <row c=\"7X-X1Y\" ci=\"20000538\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YKSC-A\" syi=\"30003690\"/>\r\n    <row c=\"7X-X1Y\" ci=\"20000538\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FIO1-8\" syi=\"30003691\"/>\r\n    <row c=\"7X-X1Y\" ci=\"20000538\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-OK0R\" syi=\"30003692\"/>\r\n    <row c=\"7X-X1Y\" ci=\"20000538\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-ARFO\" syi=\"30003693\"/>\r\n    <row c=\"7X-X1Y\" ci=\"20000538\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E9KD-N\" syi=\"30003694\"/>\r\n    <row c=\"7X-X1Y\" ci=\"20000538\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8W-OSE\" syi=\"30003695\"/>\r\n    <row c=\"7X-X1Y\" ci=\"20000538\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WQY-IQ\" syi=\"30003696\"/>\r\n    <row c=\"VNX-P0\" ci=\"20000539\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C4C-Z4\" syi=\"30003697\"/>\r\n    <row c=\"VNX-P0\" ci=\"20000539\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GME-PQ\" syi=\"30003698\"/>\r\n    <row c=\"VNX-P0\" ci=\"20000539\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MPPA-A\" syi=\"30003699\"/>\r\n    <row c=\"VNX-P0\" ci=\"20000539\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X5-UME\" syi=\"30003700\"/>\r\n    <row c=\"VNX-P0\" ci=\"20000539\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I-UUI5\" syi=\"30003701\"/>\r\n    <row c=\"VNX-P0\" ci=\"20000539\" r=\"Fade\" ri=\"10000046\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8QMO-E\" syi=\"30003702\"/>\r\n    <row c=\"G2E-RJ\" ci=\"20000540\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-5EN2\" syi=\"30003703\"/>\r\n    <row c=\"G2E-RJ\" ci=\"20000540\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-F0B2\" syi=\"30003704\"/>\r\n    <row c=\"G2E-RJ\" ci=\"20000540\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YWS0-Z\" syi=\"30003705\"/>\r\n    <row c=\"G2E-RJ\" ci=\"20000540\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4B-NQN\" syi=\"30003706\"/>\r\n    <row c=\"G2E-RJ\" ci=\"20000540\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9UY4-H\" syi=\"30003707\"/>\r\n    <row c=\"G2E-RJ\" ci=\"20000540\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"49GC-R\" syi=\"30003708\"/>\r\n    <row c=\"4BZ-R3\" ci=\"20000541\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D-GTMI\" syi=\"30003709\"/>\r\n    <row c=\"4BZ-R3\" ci=\"20000541\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FSW-3C\" syi=\"30003710\"/>\r\n    <row c=\"4BZ-R3\" ci=\"20000541\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FX-7EM\" syi=\"30003711\"/>\r\n    <row c=\"4BZ-R3\" ci=\"20000541\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MH9C-S\" syi=\"30003712\"/>\r\n    <row c=\"4BZ-R3\" ci=\"20000541\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G7AQ-7\" syi=\"30003713\"/>\r\n    <row c=\"4BZ-R3\" ci=\"20000541\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QBL-BV\" syi=\"30003714\"/>\r\n    <row c=\"4BZ-R3\" ci=\"20000541\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T-RPFU\" syi=\"30003715\"/>\r\n    <row c=\"4BZ-R3\" ci=\"20000541\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I7S-1S\" syi=\"30003716\"/>\r\n    <row c=\"AZBG-H\" ci=\"20000542\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U-HYMT\" syi=\"30003717\"/>\r\n    <row c=\"AZBG-H\" ci=\"20000542\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FC-3YI\" syi=\"30003718\"/>\r\n    <row c=\"AZBG-H\" ci=\"20000542\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QR-K85\" syi=\"30003719\"/>\r\n    <row c=\"AZBG-H\" ci=\"20000542\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5IO8-U\" syi=\"30003720\"/>\r\n    <row c=\"AZBG-H\" ci=\"20000542\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DP-JD4\" syi=\"30003721\"/>\r\n    <row c=\"AZBG-H\" ci=\"20000542\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OXIY-V\" syi=\"30003722\"/>\r\n    <row c=\"I9B-8X\" ci=\"20000543\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H6-CX8\" syi=\"30003723\"/>\r\n    <row c=\"I9B-8X\" ci=\"20000543\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D61A-G\" syi=\"30003724\"/>\r\n    <row c=\"I9B-8X\" ci=\"20000543\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Shintaht\" syi=\"30003725\"/>\r\n    <row c=\"I9B-8X\" ci=\"20000543\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-MPWL\" syi=\"30003726\"/>\r\n    <row c=\"I9B-8X\" ci=\"20000543\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D-6WS1\" syi=\"30003727\"/>\r\n    <row c=\"I9B-8X\" ci=\"20000543\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SI-I89\" syi=\"30003728\"/>\r\n    <row c=\"XV7L-S\" ci=\"20000544\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KBP7-G\" syi=\"30003729\"/>\r\n    <row c=\"XV7L-S\" ci=\"20000544\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-WPLZ\" syi=\"30003730\"/>\r\n    <row c=\"XV7L-S\" ci=\"20000544\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XHQ-7V\" syi=\"30003731\"/>\r\n    <row c=\"XV7L-S\" ci=\"20000544\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-YCML\" syi=\"30003732\"/>\r\n    <row c=\"XV7L-S\" ci=\"20000544\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TU-O0T\" syi=\"30003733\"/>\r\n    <row c=\"XV7L-S\" ci=\"20000544\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y9-MDG\" syi=\"30003734\"/>\r\n    <row c=\"ZQ2-CF\" ci=\"20000545\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PI5-39\" syi=\"30003735\"/>\r\n    <row c=\"ZQ2-CF\" ci=\"20000545\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GN7-XY\" syi=\"30003736\"/>\r\n    <row c=\"ZQ2-CF\" ci=\"20000545\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-DTOO\" syi=\"30003737\"/>\r\n    <row c=\"ZQ2-CF\" ci=\"20000545\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5KG-PY\" syi=\"30003738\"/>\r\n    <row c=\"ZQ2-CF\" ci=\"20000545\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QO-SRI\" syi=\"30003739\"/>\r\n    <row c=\"ZQ2-CF\" ci=\"20000545\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"INQ-WR\" syi=\"30003740\"/>\r\n    <row c=\"HS7W-T\" ci=\"20000546\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S9X-AX\" syi=\"30003741\"/>\r\n    <row c=\"HS7W-T\" ci=\"20000546\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TU-RI6\" syi=\"30003742\"/>\r\n    <row c=\"HS7W-T\" ci=\"20000546\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"08Z-JJ\" syi=\"30003743\"/>\r\n    <row c=\"HS7W-T\" ci=\"20000546\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-4WZD\" syi=\"30003744\"/>\r\n    <row c=\"HS7W-T\" ci=\"20000546\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6-OQJV\" syi=\"30003745\"/>\r\n    <row c=\"HS7W-T\" ci=\"20000546\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AY-YCU\" syi=\"30003746\"/>\r\n    <row c=\"HS7W-T\" ci=\"20000546\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZT-LPU\" syi=\"30003747\"/>\r\n    <row c=\"5-88B9\" ci=\"20000547\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3GXF-U\" syi=\"30003748\"/>\r\n    <row c=\"5-88B9\" ci=\"20000547\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VKI-T7\" syi=\"30003749\"/>\r\n    <row c=\"5-88B9\" ci=\"20000547\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8P9-BM\" syi=\"30003750\"/>\r\n    <row c=\"5-88B9\" ci=\"20000547\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-YH5B\" syi=\"30003751\"/>\r\n    <row c=\"5-88B9\" ci=\"20000547\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-GKI6\" syi=\"30003752\"/>\r\n    <row c=\"5-88B9\" ci=\"20000547\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YQB-22\" syi=\"30003753\"/>\r\n    <row c=\"UD-ZJ3\" ci=\"20000548\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2-TEGJ\" syi=\"30003754\"/>\r\n    <row c=\"UD-ZJ3\" ci=\"20000548\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MVCJ-E\" syi=\"30003755\"/>\r\n    <row c=\"UD-ZJ3\" ci=\"20000548\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AY-24I\" syi=\"30003756\"/>\r\n    <row c=\"UD-ZJ3\" ci=\"20000548\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BK4-YC\" syi=\"30003757\"/>\r\n    <row c=\"UD-ZJ3\" ci=\"20000548\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K1I1-J\" syi=\"30003758\"/>\r\n    <row c=\"UD-ZJ3\" ci=\"20000548\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LF-2KP\" syi=\"30003759\"/>\r\n    <row c=\"P6N8-J\" ci=\"20000549\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JEIV-E\" syi=\"30003760\"/>\r\n    <row c=\"P6N8-J\" ci=\"20000549\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-Y5JQ\" syi=\"30003761\"/>\r\n    <row c=\"P6N8-J\" ci=\"20000549\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DNR-7M\" syi=\"30003762\"/>\r\n    <row c=\"P6N8-J\" ci=\"20000549\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-RMSH\" syi=\"30003763\"/>\r\n    <row c=\"P6N8-J\" ci=\"20000549\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K1Y-5H\" syi=\"30003764\"/>\r\n    <row c=\"P6N8-J\" ci=\"20000549\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IWZ3-C\" syi=\"30003765\"/>\r\n    <row c=\"04-H4M\" ci=\"20000550\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1-1I53\" syi=\"30003766\"/>\r\n    <row c=\"04-H4M\" ci=\"20000550\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N8XA-L\" syi=\"30003767\"/>\r\n    <row c=\"04-H4M\" ci=\"20000550\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"18-GZM\" syi=\"30003768\"/>\r\n    <row c=\"04-H4M\" ci=\"20000550\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R3-K7K\" syi=\"30003769\"/>\r\n    <row c=\"04-H4M\" ci=\"20000550\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-R3NM\" syi=\"30003770\"/>\r\n    <row c=\"04-H4M\" ci=\"20000550\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8B-VLX\" syi=\"30003771\"/>\r\n    <row c=\"04-H4M\" ci=\"20000550\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-B22J\" syi=\"30003772\"/>\r\n    <row c=\"04-H4M\" ci=\"20000550\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X6AB-Y\" syi=\"30003773\"/>\r\n    <row c=\"H-KW4A\" ci=\"20000551\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2V-CS5\" syi=\"30003774\"/>\r\n    <row c=\"H-KW4A\" ci=\"20000551\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H9-J8N\" syi=\"30003775\"/>\r\n    <row c=\"H-KW4A\" ci=\"20000551\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HP-6Z6\" syi=\"30003776\"/>\r\n    <row c=\"H-KW4A\" ci=\"20000551\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GA9P-0\" syi=\"30003777\"/>\r\n    <row c=\"H-KW4A\" ci=\"20000551\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7YWV-S\" syi=\"30003778\"/>\r\n    <row c=\"H-KW4A\" ci=\"20000551\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TXJ-II\" syi=\"30003779\"/>\r\n    <row c=\"H-KW4A\" ci=\"20000551\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C1-HAB\" syi=\"30003780\"/>\r\n    <row c=\"Q-6LG1\" ci=\"20000552\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3KB-J0\" syi=\"30003781\"/>\r\n    <row c=\"Q-6LG1\" ci=\"20000552\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0B-HLZ\" syi=\"30003782\"/>\r\n    <row c=\"Q-6LG1\" ci=\"20000552\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-RFE3\" syi=\"30003783\"/>\r\n    <row c=\"Q-6LG1\" ci=\"20000552\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I-MGAB\" syi=\"30003784\"/>\r\n    <row c=\"Q-6LG1\" ci=\"20000552\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"18XA-C\" syi=\"30003785\"/>\r\n    <row c=\"Q-6LG1\" ci=\"20000552\" r=\"Providence\" ri=\"10000047\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3D-CQU\" syi=\"30003786\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Agoze\" syi=\"30003787\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Intaki\" syi=\"30003788\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Brarel\" syi=\"30003789\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Vey\" syi=\"30003790\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Annancale\" syi=\"30003791\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Ostingele\" syi=\"30003792\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Harroule\" syi=\"30003793\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Stacmon\" syi=\"30003794\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Covryn\" syi=\"30003795\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Iges\" syi=\"30003796\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Dastryns\" syi=\"30003797\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Slays\" syi=\"30003798\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Uphallant\" syi=\"30003799\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Alperaute\" syi=\"30003800\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Aunsou\" syi=\"30003801\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Cumemare\" syi=\"30003802\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Reynire\" syi=\"30003803\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Pain\" syi=\"30003804\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Gare\" syi=\"30003805\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Pelille\" syi=\"30003806\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Dour\" syi=\"30003807\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Grispire\" syi=\"30003808\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Brellystier\" syi=\"30003809\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Vivanier\" syi=\"30003810\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Algasienan\" syi=\"30003811\"/>\r\n    <row c=\"Unour\" ci=\"20000557\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Osmallanais\" syi=\"30003812\"/>\r\n    <row c=\"Unour\" ci=\"20000557\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Ivorider\" syi=\"30003813\"/>\r\n    <row c=\"Unour\" ci=\"20000557\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Mollin\" syi=\"30003814\"/>\r\n    <row c=\"Unour\" ci=\"20000557\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Iffrue\" syi=\"30003815\"/>\r\n    <row c=\"Unour\" ci=\"20000557\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Vilinnon\" syi=\"30003816\"/>\r\n    <row c=\"Unour\" ci=\"20000557\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Ommaerrer\" syi=\"30003817\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Aulbres\" syi=\"30003818\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Barleguet\" syi=\"30003819\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Vestouve\" syi=\"30003820\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Ausmaert\" syi=\"30003821\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Espigoure\" syi=\"30003822\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Kenninck\" syi=\"30003823\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Archavoinet\" syi=\"30003824\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Eugales\" syi=\"30003825\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Frarie\" syi=\"30003826\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Aubenall\" syi=\"30003827\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Moclinamaud\" syi=\"30003828\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Renarelle\" syi=\"30003829\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Orvolle\" syi=\"30003830\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Osmeden\" syi=\"30003831\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Adacyne\" syi=\"30003832\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Oulley\" syi=\"30003833\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Chardalane\" syi=\"30003834\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Maut\" syi=\"30003835\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Vlillirier\" syi=\"30003836\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Aldranette\" syi=\"30003837\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Oicx\" syi=\"30003838\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Evaulon\" syi=\"30003839\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Anchauttes\" syi=\"30003840\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Alsavoinon\" syi=\"30003841\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Esesier\" syi=\"30003842\"/>\r\n    <row c=\"Mallugier\" ci=\"20000562\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Avaux\" syi=\"30003843\"/>\r\n    <row c=\"Mallugier\" ci=\"20000562\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Gallusiene\" syi=\"30003844\"/>\r\n    <row c=\"Mallugier\" ci=\"20000562\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Ruerrotta\" syi=\"30003845\"/>\r\n    <row c=\"Mallugier\" ci=\"20000562\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Hedoubel\" syi=\"30003846\"/>\r\n    <row c=\"Mallugier\" ci=\"20000562\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Amoen\" syi=\"30003847\"/>\r\n    <row c=\"Mallugier\" ci=\"20000562\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Amasiree\" syi=\"30003848\"/>\r\n    <row c=\"Mallugier\" ci=\"20000562\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Aubonnie\" syi=\"30003849\"/>\r\n    <row c=\"Serthoulde\" ci=\"20000563\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Alparena\" syi=\"30003850\"/>\r\n    <row c=\"Serthoulde\" ci=\"20000563\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Reschard\" syi=\"30003851\"/>\r\n    <row c=\"Serthoulde\" ci=\"20000563\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Arderonne\" syi=\"30003852\"/>\r\n    <row c=\"Serthoulde\" ci=\"20000563\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Mercomesier\" syi=\"30003853\"/>\r\n    <row c=\"Serthoulde\" ci=\"20000563\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Alamel\" syi=\"30003854\"/>\r\n    <row c=\"Serthoulde\" ci=\"20000563\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Mantenault\" syi=\"30003855\"/>\r\n    <row c=\"Serthoulde\" ci=\"20000563\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Athounon\" syi=\"30003856\"/>\r\n    <row c=\"Serthoulde\" ci=\"20000563\" r=\"Placid\" ri=\"10000048\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Odamia\" syi=\"30003857\"/>\r\n    <row c=\"Nohshayess\" ci=\"20000564\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Gousoviba\" syi=\"30003858\"/>\r\n    <row c=\"Nohshayess\" ci=\"20000564\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Neyi\" syi=\"30003859\"/>\r\n    <row c=\"Nohshayess\" ci=\"20000564\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Kihtaled\" syi=\"30003860\"/>\r\n    <row c=\"Nohshayess\" ci=\"20000564\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Ipref\" syi=\"30003861\"/>\r\n    <row c=\"Nohshayess\" ci=\"20000564\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Agil\" syi=\"30003862\"/>\r\n    <row c=\"Nohshayess\" ci=\"20000564\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Khanid Prime\" syi=\"30003863\"/>\r\n    <row c=\"Nohshayess\" ci=\"20000564\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Jachanu\" syi=\"30003864\"/>\r\n    <row c=\"Nohshayess\" ci=\"20000564\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Sazre\" syi=\"30003865\"/>\r\n    <row c=\"Nohshayess\" ci=\"20000564\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Bukah\" syi=\"30003866\"/>\r\n    <row c=\"Finaka\" ci=\"20000565\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Ervekam\" syi=\"30003867\"/>\r\n    <row c=\"Finaka\" ci=\"20000565\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Mashtarmem\" syi=\"30003868\"/>\r\n    <row c=\"Finaka\" ci=\"20000565\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Sehsasez\" syi=\"30003869\"/>\r\n    <row c=\"Finaka\" ci=\"20000565\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Osis\" syi=\"30003870\"/>\r\n    <row c=\"Finaka\" ci=\"20000565\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Geztic\" syi=\"30003871\"/>\r\n    <row c=\"Finaka\" ci=\"20000565\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Yezara\" syi=\"30003872\"/>\r\n    <row c=\"Finaka\" ci=\"20000565\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Kahah\" syi=\"30003873\"/>\r\n    <row c=\"Finaka\" ci=\"20000565\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Saloti\" syi=\"30003874\"/>\r\n    <row c=\"Finaka\" ci=\"20000565\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Hishai\" syi=\"30003875\"/>\r\n    <row c=\"Amdimmah\" ci=\"20000566\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Molea\" syi=\"30003876\"/>\r\n    <row c=\"Amdimmah\" ci=\"20000566\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Gidali\" syi=\"30003877\"/>\r\n    <row c=\"Amdimmah\" ci=\"20000566\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Palas\" syi=\"30003878\"/>\r\n    <row c=\"Amdimmah\" ci=\"20000566\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Safshela\" syi=\"30003879\"/>\r\n    <row c=\"Amdimmah\" ci=\"20000566\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Reteka\" syi=\"30003880\"/>\r\n    <row c=\"Amdimmah\" ci=\"20000566\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Moniyyuku\" syi=\"30003881\"/>\r\n    <row c=\"Youledian\" ci=\"20000567\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Lansez\" syi=\"30003882\"/>\r\n    <row c=\"Youledian\" ci=\"20000567\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Keberz\" syi=\"30003883\"/>\r\n    <row c=\"Youledian\" ci=\"20000567\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Nourbal\" syi=\"30003884\"/>\r\n    <row c=\"Youledian\" ci=\"20000567\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Arzanni\" syi=\"30003885\"/>\r\n    <row c=\"Youledian\" ci=\"20000567\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Ashmarir\" syi=\"30003886\"/>\r\n    <row c=\"Youledian\" ci=\"20000567\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Kaira\" syi=\"30003887\"/>\r\n    <row c=\"Sib\" ci=\"20000568\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Badivefi\" syi=\"30003888\"/>\r\n    <row c=\"Sib\" ci=\"20000568\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Talidal\" syi=\"30003889\"/>\r\n    <row c=\"Sib\" ci=\"20000568\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Ashi\" syi=\"30003890\"/>\r\n    <row c=\"Sib\" ci=\"20000568\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Tzashrah\" syi=\"30003891\"/>\r\n    <row c=\"Sib\" ci=\"20000568\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Efa\" syi=\"30003892\"/>\r\n    <row c=\"Sib\" ci=\"20000568\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Moro\" syi=\"30003893\"/>\r\n    <row c=\"Sib\" ci=\"20000568\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Sabusi\" syi=\"30003894\"/>\r\n    <row c=\"Sib\" ci=\"20000568\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Ainsan\" syi=\"30003895\"/>\r\n    <row c=\"Seevadin\" ci=\"20000569\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Claini\" syi=\"30003896\"/>\r\n    <row c=\"Seevadin\" ci=\"20000569\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Gehi\" syi=\"30003897\"/>\r\n    <row c=\"Seevadin\" ci=\"20000569\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Seshala\" syi=\"30003898\"/>\r\n    <row c=\"Seevadin\" ci=\"20000569\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Vezila\" syi=\"30003899\"/>\r\n    <row c=\"Seevadin\" ci=\"20000569\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Ham\" syi=\"30003900\"/>\r\n    <row c=\"Seevadin\" ci=\"20000569\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Upt\" syi=\"30003901\"/>\r\n    <row c=\"Seevadin\" ci=\"20000569\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Hemouner\" syi=\"30003902\"/>\r\n    <row c=\"Fekhoya\" ci=\"20000570\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Afnakat\" syi=\"30003903\"/>\r\n    <row c=\"Fekhoya\" ci=\"20000570\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Col\" syi=\"30003904\"/>\r\n    <row c=\"Fekhoya\" ci=\"20000570\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Chamemi\" syi=\"30003905\"/>\r\n    <row c=\"Fekhoya\" ci=\"20000570\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Firbha\" syi=\"30003906\"/>\r\n    <row c=\"Fekhoya\" ci=\"20000570\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Tegheon\" syi=\"30003907\"/>\r\n    <row c=\"Fekhoya\" ci=\"20000570\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Bashyam\" syi=\"30003908\"/>\r\n    <row c=\"Fekhoya\" ci=\"20000570\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Parses\" syi=\"30003909\"/>\r\n    <row c=\"Fekhoya\" ci=\"20000570\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Balanaz\" syi=\"30003910\"/>\r\n    <row c=\"Arniri\" ci=\"20000571\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Edani\" syi=\"30003911\"/>\r\n    <row c=\"Arniri\" ci=\"20000571\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Danera\" syi=\"30003912\"/>\r\n    <row c=\"Arniri\" ci=\"20000571\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Bomana\" syi=\"30003913\"/>\r\n    <row c=\"Arniri\" ci=\"20000571\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Rahabeda\" syi=\"30003914\"/>\r\n    <row c=\"Arniri\" ci=\"20000571\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Aurejet\" syi=\"30003915\"/>\r\n    <row c=\"Arniri\" ci=\"20000571\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Rilera\" syi=\"30003916\"/>\r\n    <row c=\"Akar\" ci=\"20000572\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Amafi\" syi=\"30003917\"/>\r\n    <row c=\"Akar\" ci=\"20000572\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Hakana\" syi=\"30003918\"/>\r\n    <row c=\"Akar\" ci=\"20000572\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Ashkoo\" syi=\"30003919\"/>\r\n    <row c=\"Akar\" ci=\"20000572\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Baratar\" syi=\"30003920\"/>\r\n    <row c=\"Akar\" ci=\"20000572\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Arzieh\" syi=\"30003921\"/>\r\n    <row c=\"Akar\" ci=\"20000572\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Nahrneder\" syi=\"30003922\"/>\r\n    <row c=\"Homroon\" ci=\"20000573\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Nandeza\" syi=\"30003923\"/>\r\n    <row c=\"Homroon\" ci=\"20000573\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Dimoohan\" syi=\"30003924\"/>\r\n    <row c=\"Homroon\" ci=\"20000573\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Chitiamem\" syi=\"30003925\"/>\r\n    <row c=\"Homroon\" ci=\"20000573\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Kuhri\" syi=\"30003926\"/>\r\n    <row c=\"Homroon\" ci=\"20000573\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Zahefeus\" syi=\"30003927\"/>\r\n    <row c=\"Homroon\" ci=\"20000573\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Zephan\" syi=\"30003928\"/>\r\n    <row c=\"Homroon\" ci=\"20000573\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Neda\" syi=\"30003929\"/>\r\n    <row c=\"Budar\" ci=\"20000574\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Goudiyah\" syi=\"30003930\"/>\r\n    <row c=\"Budar\" ci=\"20000574\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Sassecho\" syi=\"30003931\"/>\r\n    <row c=\"Budar\" ci=\"20000574\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Timudan\" syi=\"30003932\"/>\r\n    <row c=\"Budar\" ci=\"20000574\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Ibani\" syi=\"30003933\"/>\r\n    <row c=\"Budar\" ci=\"20000574\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Cabeki\" syi=\"30003934\"/>\r\n    <row c=\"Budar\" ci=\"20000574\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Irmalin\" syi=\"30003935\"/>\r\n    <row c=\"Alpakian\" ci=\"20000575\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Nakis\" syi=\"30003936\"/>\r\n    <row c=\"Alpakian\" ci=\"20000575\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Hezere\" syi=\"30003937\"/>\r\n    <row c=\"Alpakian\" ci=\"20000575\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Fanathor\" syi=\"30003938\"/>\r\n    <row c=\"Alpakian\" ci=\"20000575\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Zirsem\" syi=\"30003939\"/>\r\n    <row c=\"Alpakian\" ci=\"20000575\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Pout\" syi=\"30003940\"/>\r\n    <row c=\"Alpakian\" ci=\"20000575\" r=\"Khanid\" ri=\"10000049\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Rafeme\" syi=\"30003941\"/>\r\n    <row c=\"H-6HGD\" ci=\"20000576\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A2-V27\" syi=\"30003942\"/>\r\n    <row c=\"H-6HGD\" ci=\"20000576\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T8H-66\" syi=\"30003943\"/>\r\n    <row c=\"H-6HGD\" ci=\"20000576\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A3-LOG\" syi=\"30003944\"/>\r\n    <row c=\"H-6HGD\" ci=\"20000576\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7V-KHW\" syi=\"30003945\"/>\r\n    <row c=\"H-6HGD\" ci=\"20000576\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O3L-95\" syi=\"30003946\"/>\r\n    <row c=\"H-6HGD\" ci=\"20000576\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-WT2D\" syi=\"30003947\"/>\r\n    <row c=\"PUB-0R\" ci=\"20000577\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7GCD-P\" syi=\"30003948\"/>\r\n    <row c=\"PUB-0R\" ci=\"20000577\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-3BOG\" syi=\"30003949\"/>\r\n    <row c=\"PUB-0R\" ci=\"20000577\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K7D-II\" syi=\"30003950\"/>\r\n    <row c=\"PUB-0R\" ci=\"20000577\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-6BE1\" syi=\"30003951\"/>\r\n    <row c=\"PUB-0R\" ci=\"20000577\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1M4-FK\" syi=\"30003952\"/>\r\n    <row c=\"PUB-0R\" ci=\"20000577\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-LEKM\" syi=\"30003953\"/>\r\n    <row c=\"YB7B-8\" ci=\"20000578\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9ES-SI\" syi=\"30003954\"/>\r\n    <row c=\"YB7B-8\" ci=\"20000578\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UQY-IK\" syi=\"30003955\"/>\r\n    <row c=\"YB7B-8\" ci=\"20000578\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"60M-TG\" syi=\"30003956\"/>\r\n    <row c=\"YB7B-8\" ci=\"20000578\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0TKF-6\" syi=\"30003957\"/>\r\n    <row c=\"YB7B-8\" ci=\"20000578\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TV8-HS\" syi=\"30003958\"/>\r\n    <row c=\"YB7B-8\" ci=\"20000578\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VT-G2P\" syi=\"30003959\"/>\r\n    <row c=\"YB7B-8\" ci=\"20000578\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YOP-0T\" syi=\"30003960\"/>\r\n    <row c=\"YB7B-8\" ci=\"20000578\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-HM04\" syi=\"30003961\"/>\r\n    <row c=\"A-Z7C9\" ci=\"20000579\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MKD-O8\" syi=\"30003962\"/>\r\n    <row c=\"A-Z7C9\" ci=\"20000579\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GOP-GE\" syi=\"30003963\"/>\r\n    <row c=\"A-Z7C9\" ci=\"20000579\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SKR-SP\" syi=\"30003964\"/>\r\n    <row c=\"A-Z7C9\" ci=\"20000579\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-3U8T\" syi=\"30003965\"/>\r\n    <row c=\"A-Z7C9\" ci=\"20000579\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T8T-RA\" syi=\"30003966\"/>\r\n    <row c=\"A-Z7C9\" ci=\"20000579\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-BO4V\" syi=\"30003967\"/>\r\n    <row c=\"9NP-KR\" ci=\"20000580\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W-IX39\" syi=\"30003968\"/>\r\n    <row c=\"9NP-KR\" ci=\"20000580\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K-B8DK\" syi=\"30003969\"/>\r\n    <row c=\"9NP-KR\" ci=\"20000580\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-6W1J\" syi=\"30003970\"/>\r\n    <row c=\"9NP-KR\" ci=\"20000580\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P4-3TJ\" syi=\"30003971\"/>\r\n    <row c=\"9NP-KR\" ci=\"20000580\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K-Z0V4\" syi=\"30003972\"/>\r\n    <row c=\"9NP-KR\" ci=\"20000580\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LNVW-K\" syi=\"30003973\"/>\r\n    <row c=\"9NP-KR\" ci=\"20000580\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8B-SAJ\" syi=\"30003974\"/>\r\n    <row c=\"9NP-KR\" ci=\"20000580\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q2-N6W\" syi=\"30003975\"/>\r\n    <row c=\"9NP-KR\" ci=\"20000580\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-9RRR\" syi=\"30003976\"/>\r\n    <row c=\"9NP-KR\" ci=\"20000580\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-5F4A\" syi=\"30003977\"/>\r\n    <row c=\"8BO-IH\" ci=\"20000581\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P-ZMZV\" syi=\"30003978\"/>\r\n    <row c=\"8BO-IH\" ci=\"20000581\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9CG6-H\" syi=\"30003979\"/>\r\n    <row c=\"8BO-IH\" ci=\"20000581\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NDII-Q\" syi=\"30003980\"/>\r\n    <row c=\"8BO-IH\" ci=\"20000581\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UYU-VV\" syi=\"30003981\"/>\r\n    <row c=\"8BO-IH\" ci=\"20000581\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K-L690\" syi=\"30003982\"/>\r\n    <row c=\"8BO-IH\" ci=\"20000581\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W6V-VM\" syi=\"30003983\"/>\r\n    <row c=\"K-JO26\" ci=\"20000582\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OGY-6D\" syi=\"30003984\"/>\r\n    <row c=\"K-JO26\" ci=\"20000582\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8-SNUD\" syi=\"30003985\"/>\r\n    <row c=\"K-JO26\" ci=\"20000582\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-4R6Z\" syi=\"30003986\"/>\r\n    <row c=\"K-JO26\" ci=\"20000582\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IGE-NE\" syi=\"30003987\"/>\r\n    <row c=\"K-JO26\" ci=\"20000582\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UVHO-F\" syi=\"30003988\"/>\r\n    <row c=\"K-JO26\" ci=\"20000582\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-XX2J\" syi=\"30003989\"/>\r\n    <row c=\"F-RA63\" ci=\"20000583\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YW-SYT\" syi=\"30003990\"/>\r\n    <row c=\"F-RA63\" ci=\"20000583\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-UZZN\" syi=\"30003991\"/>\r\n    <row c=\"F-RA63\" ci=\"20000583\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DS-LO3\" syi=\"30003992\"/>\r\n    <row c=\"F-RA63\" ci=\"20000583\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BX2-ZX\" syi=\"30003993\"/>\r\n    <row c=\"F-RA63\" ci=\"20000583\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RF-CN3\" syi=\"30003994\"/>\r\n    <row c=\"F-RA63\" ci=\"20000583\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-7SBM\" syi=\"30003995\"/>\r\n    <row c=\"8ET-D1\" ci=\"20000584\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZAU-JW\" syi=\"30003996\"/>\r\n    <row c=\"8ET-D1\" ci=\"20000584\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YF-6L1\" syi=\"30003997\"/>\r\n    <row c=\"8ET-D1\" ci=\"20000584\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K-YI1L\" syi=\"30003998\"/>\r\n    <row c=\"8ET-D1\" ci=\"20000584\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KEJY-U\" syi=\"30003999\"/>\r\n    <row c=\"8ET-D1\" ci=\"20000584\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3BK-O7\" syi=\"30004000\"/>\r\n    <row c=\"8ET-D1\" ci=\"20000584\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8-GE2P\" syi=\"30004001\"/>\r\n    <row c=\"8ET-D1\" ci=\"20000584\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QXQ-I6\" syi=\"30004002\"/>\r\n    <row c=\"MPJW-6\" ci=\"20000585\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L3-I3K\" syi=\"30004003\"/>\r\n    <row c=\"MPJW-6\" ci=\"20000585\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3-JCJT\" syi=\"30004004\"/>\r\n    <row c=\"MPJW-6\" ci=\"20000585\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W-IIYI\" syi=\"30004005\"/>\r\n    <row c=\"MPJW-6\" ci=\"20000585\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AO-N1P\" syi=\"30004006\"/>\r\n    <row c=\"MPJW-6\" ci=\"20000585\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-GJT1\" syi=\"30004007\"/>\r\n    <row c=\"MPJW-6\" ci=\"20000585\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5V-BJI\" syi=\"30004008\"/>\r\n    <row c=\"MPJW-6\" ci=\"20000585\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"49-U6U\" syi=\"30004009\"/>\r\n    <row c=\"MPJW-6\" ci=\"20000585\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M1BZ-2\" syi=\"30004010\"/>\r\n    <row c=\"MPJW-6\" ci=\"20000585\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-M1A3\" syi=\"30004011\"/>\r\n    <row c=\"MPJW-6\" ci=\"20000585\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8QT-H4\" syi=\"30004012\"/>\r\n    <row c=\"3B-IWE\" ci=\"20000586\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F2OY-X\" syi=\"30004013\"/>\r\n    <row c=\"3B-IWE\" ci=\"20000586\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-2UXV\" syi=\"30004014\"/>\r\n    <row c=\"3B-IWE\" ci=\"20000586\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RKM-GE\" syi=\"30004015\"/>\r\n    <row c=\"3B-IWE\" ci=\"20000586\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DG-L7S\" syi=\"30004016\"/>\r\n    <row c=\"3B-IWE\" ci=\"20000586\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K4-RFZ\" syi=\"30004017\"/>\r\n    <row c=\"3B-IWE\" ci=\"20000586\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-FVHR\" syi=\"30004018\"/>\r\n    <row c=\"LI-BA0\" ci=\"20000587\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3-FKCZ\" syi=\"30004019\"/>\r\n    <row c=\"LI-BA0\" ci=\"20000587\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ED-L9T\" syi=\"30004020\"/>\r\n    <row c=\"LI-BA0\" ci=\"20000587\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LS-V29\" syi=\"30004021\"/>\r\n    <row c=\"LI-BA0\" ci=\"20000587\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9SBB-9\" syi=\"30004022\"/>\r\n    <row c=\"LI-BA0\" ci=\"20000587\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I1Y-IU\" syi=\"30004023\"/>\r\n    <row c=\"LI-BA0\" ci=\"20000587\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U-HYZN\" syi=\"30004024\"/>\r\n    <row c=\"4QZ-2M\" ci=\"20000588\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8-YNBE\" syi=\"30004025\"/>\r\n    <row c=\"4QZ-2M\" ci=\"20000588\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YQX-7U\" syi=\"30004026\"/>\r\n    <row c=\"4QZ-2M\" ci=\"20000588\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QY1E-N\" syi=\"30004027\"/>\r\n    <row c=\"4QZ-2M\" ci=\"20000588\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-VKJV\" syi=\"30004028\"/>\r\n    <row c=\"4QZ-2M\" ci=\"20000588\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BX-VEX\" syi=\"30004029\"/>\r\n    <row c=\"4QZ-2M\" ci=\"20000588\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-7DFU\" syi=\"30004030\"/>\r\n    <row c=\"XLL-Z7\" ci=\"20000589\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZXJ-71\" syi=\"30004031\"/>\r\n    <row c=\"XLL-Z7\" ci=\"20000589\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-NXLQ\" syi=\"30004032\"/>\r\n    <row c=\"XLL-Z7\" ci=\"20000589\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ES-Q0W\" syi=\"30004033\"/>\r\n    <row c=\"XLL-Z7\" ci=\"20000589\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H74-B0\" syi=\"30004034\"/>\r\n    <row c=\"XLL-Z7\" ci=\"20000589\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NU4-2G\" syi=\"30004035\"/>\r\n    <row c=\"XLL-Z7\" ci=\"20000589\" r=\"Querious\" ri=\"10000050\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3D5K-R\" syi=\"30004036\"/>\r\n    <row c=\"Yrton\" ci=\"20000590\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1-3HWZ\" syi=\"30004037\"/>\r\n    <row c=\"Yrton\" ci=\"20000590\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XT-R36\" syi=\"30004038\"/>\r\n    <row c=\"Yrton\" ci=\"20000590\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-MLDT\" syi=\"30004039\"/>\r\n    <row c=\"Yrton\" ci=\"20000590\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-DBYQ\" syi=\"30004040\"/>\r\n    <row c=\"Yrton\" ci=\"20000590\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QXW-PV\" syi=\"30004041\"/>\r\n    <row c=\"Yrton\" ci=\"20000590\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DY-F70\" syi=\"30004042\"/>\r\n    <row c=\"Balenne\" ci=\"20000591\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FD53-H\" syi=\"30004043\"/>\r\n    <row c=\"Balenne\" ci=\"20000591\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-ZXUV\" syi=\"30004044\"/>\r\n    <row c=\"Balenne\" ci=\"20000591\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"77-KDQ\" syi=\"30004045\"/>\r\n    <row c=\"Balenne\" ci=\"20000591\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F7C-H0\" syi=\"30004046\"/>\r\n    <row c=\"Balenne\" ci=\"20000591\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TN-T7T\" syi=\"30004047\"/>\r\n    <row c=\"Balenne\" ci=\"20000591\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1-NW2G\" syi=\"30004048\"/>\r\n    <row c=\"Balenne\" ci=\"20000591\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-IVNH\" syi=\"30004049\"/>\r\n    <row c=\"Tinnimerci\" ci=\"20000592\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-0HW8\" syi=\"30004050\"/>\r\n    <row c=\"Tinnimerci\" ci=\"20000592\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YI-8ZM\" syi=\"30004051\"/>\r\n    <row c=\"Tinnimerci\" ci=\"20000592\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OU-X3P\" syi=\"30004052\"/>\r\n    <row c=\"Tinnimerci\" ci=\"20000592\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6-4V20\" syi=\"30004053\"/>\r\n    <row c=\"Tinnimerci\" ci=\"20000592\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-UA3C\" syi=\"30004054\"/>\r\n    <row c=\"Tinnimerci\" ci=\"20000592\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W-4NUU\" syi=\"30004055\"/>\r\n    <row c=\"Tinnimerci\" ci=\"20000592\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8R-RTB\" syi=\"30004056\"/>\r\n    <row c=\"Prelle\" ci=\"20000593\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6Z9-0M\" syi=\"30004057\"/>\r\n    <row c=\"Prelle\" ci=\"20000593\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FQ9W-C\" syi=\"30004058\"/>\r\n    <row c=\"Prelle\" ci=\"20000593\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-4RP2\" syi=\"30004059\"/>\r\n    <row c=\"Prelle\" ci=\"20000593\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-BDXB\" syi=\"30004060\"/>\r\n    <row c=\"Prelle\" ci=\"20000593\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G8AD-C\" syi=\"30004061\"/>\r\n    <row c=\"Prelle\" ci=\"20000593\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XZH-4X\" syi=\"30004062\"/>\r\n    <row c=\"Prelle\" ci=\"20000593\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-Y7R7\" syi=\"30004063\"/>\r\n    <row c=\"Prelle\" ci=\"20000593\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MJYW-3\" syi=\"30004064\"/>\r\n    <row c=\"Assilot\" ci=\"20000594\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PPG-XC\" syi=\"30004065\"/>\r\n    <row c=\"Assilot\" ci=\"20000594\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QA1-BT\" syi=\"30004066\"/>\r\n    <row c=\"Assilot\" ci=\"20000594\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5S-KNL\" syi=\"30004067\"/>\r\n    <row c=\"Assilot\" ci=\"20000594\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"00TY-J\" syi=\"30004068\"/>\r\n    <row c=\"Assilot\" ci=\"20000594\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XG-D1L\" syi=\"30004069\"/>\r\n    <row c=\"Assilot\" ci=\"20000594\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6RCQ-V\" syi=\"30004070\"/>\r\n    <row c=\"Miennue\" ci=\"20000595\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"28O-JY\" syi=\"30004071\"/>\r\n    <row c=\"Miennue\" ci=\"20000595\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CX7-70\" syi=\"30004072\"/>\r\n    <row c=\"Miennue\" ci=\"20000595\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6ON-RW\" syi=\"30004073\"/>\r\n    <row c=\"Miennue\" ci=\"20000595\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U65-CN\" syi=\"30004074\"/>\r\n    <row c=\"Miennue\" ci=\"20000595\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-M9ON\" syi=\"30004075\"/>\r\n    <row c=\"Miennue\" ci=\"20000595\" r=\"Cloud Ring\" ri=\"10000051\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P5-KCC\" syi=\"30004076\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Hiroudeh\" syi=\"30004077\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Dresi\" syi=\"30004078\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Aphend\" syi=\"30004079\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Romi\" syi=\"30004080\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Zororzih\" syi=\"30004081\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Aharalel\" syi=\"30004082\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Gensela\" syi=\"30004083\"/>\r\n    <row c=\"Kakol\" ci=\"20000597\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Ghesis\" syi=\"30004084\"/>\r\n    <row c=\"Kakol\" ci=\"20000597\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Gamdis\" syi=\"30004085\"/>\r\n    <row c=\"Kakol\" ci=\"20000597\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Joamma\" syi=\"30004086\"/>\r\n    <row c=\"Kakol\" ci=\"20000597\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Gonan\" syi=\"30004087\"/>\r\n    <row c=\"Kakol\" ci=\"20000597\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Joramok\" syi=\"30004088\"/>\r\n    <row c=\"Kakol\" ci=\"20000597\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Neburab\" syi=\"30004089\"/>\r\n    <row c=\"Kakol\" ci=\"20000597\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Aband\" syi=\"30004090\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Uanim\" syi=\"30004091\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Murini\" syi=\"30004092\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Askonak\" syi=\"30004093\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Nordar\" syi=\"30004094\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Kador Prime\" syi=\"30004095\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Khafis\" syi=\"30004096\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Dantan\" syi=\"30004097\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Turba\" syi=\"30004098\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Sonama\" syi=\"30004099\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Halibai\" syi=\"30004100\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Suner\" syi=\"30004101\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Inis-Ilix\" syi=\"30004102\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Kothe\" syi=\"30004103\"/>\r\n    <row c=\"Heti\" ci=\"20000600\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Ansasos\" syi=\"30004104\"/>\r\n    <row c=\"Heti\" ci=\"20000600\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Dehrokh\" syi=\"30004105\"/>\r\n    <row c=\"Heti\" ci=\"20000600\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Bordan\" syi=\"30004106\"/>\r\n    <row c=\"Heti\" ci=\"20000600\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Zimmem\" syi=\"30004107\"/>\r\n    <row c=\"Heti\" ci=\"20000600\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Chaneya\" syi=\"30004108\"/>\r\n    <row c=\"Heti\" ci=\"20000600\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Oberen\" syi=\"30004109\"/>\r\n    <row c=\"Parrosa\" ci=\"20000601\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Finid\" syi=\"30004110\"/>\r\n    <row c=\"Parrosa\" ci=\"20000601\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Yarebap\" syi=\"30004111\"/>\r\n    <row c=\"Parrosa\" ci=\"20000601\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Mandoo\" syi=\"30004112\"/>\r\n    <row c=\"Parrosa\" ci=\"20000601\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Miah\" syi=\"30004113\"/>\r\n    <row c=\"Parrosa\" ci=\"20000601\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Peyiri\" syi=\"30004114\"/>\r\n    <row c=\"Parrosa\" ci=\"20000601\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Kamda\" syi=\"30004115\"/>\r\n    <row c=\"Favo\" ci=\"20000602\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Rayeret\" syi=\"30004116\"/>\r\n    <row c=\"Favo\" ci=\"20000602\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Bushemal\" syi=\"30004117\"/>\r\n    <row c=\"Favo\" ci=\"20000602\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Ardhis\" syi=\"30004118\"/>\r\n    <row c=\"Favo\" ci=\"20000602\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Gasavak\" syi=\"30004119\"/>\r\n    <row c=\"Favo\" ci=\"20000602\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Iaokit\" syi=\"30004120\"/>\r\n    <row c=\"Favo\" ci=\"20000602\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Menri\" syi=\"30004121\"/>\r\n    <row c=\"Araz\" ci=\"20000603\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Chanoun\" syi=\"30004122\"/>\r\n    <row c=\"Araz\" ci=\"20000603\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Garisas\" syi=\"30004123\"/>\r\n    <row c=\"Araz\" ci=\"20000603\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Aphi\" syi=\"30004124\"/>\r\n    <row c=\"Araz\" ci=\"20000603\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Jakri\" syi=\"30004125\"/>\r\n    <row c=\"Araz\" ci=\"20000603\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Nidupad\" syi=\"30004126\"/>\r\n    <row c=\"Araz\" ci=\"20000603\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Zimse\" syi=\"30004127\"/>\r\n    <row c=\"Araz\" ci=\"20000603\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Koona\" syi=\"30004128\"/>\r\n    <row c=\"Araz\" ci=\"20000603\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Munory\" syi=\"30004129\"/>\r\n    <row c=\"Ahrnot\" ci=\"20000604\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Hostakoh\" syi=\"30004130\"/>\r\n    <row c=\"Ahrnot\" ci=\"20000604\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Yooh\" syi=\"30004131\"/>\r\n    <row c=\"Ahrnot\" ci=\"20000604\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Jeshideh\" syi=\"30004132\"/>\r\n    <row c=\"Ahrnot\" ci=\"20000604\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Hilmar\" syi=\"30004133\"/>\r\n    <row c=\"Ahrnot\" ci=\"20000604\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Kasi\" syi=\"30004134\"/>\r\n    <row c=\"Ahrnot\" ci=\"20000604\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Shura\" syi=\"30004135\"/>\r\n    <row c=\"Pezarba\" ci=\"20000605\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Mod\" syi=\"30004136\"/>\r\n    <row c=\"Pezarba\" ci=\"20000605\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Omam\" syi=\"30004137\"/>\r\n    <row c=\"Pezarba\" ci=\"20000605\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Bersyrim\" syi=\"30004138\"/>\r\n    <row c=\"Pezarba\" ci=\"20000605\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Sechmaren\" syi=\"30004139\"/>\r\n    <row c=\"Pezarba\" ci=\"20000605\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Zinoo\" syi=\"30004140\"/>\r\n    <row c=\"Pezarba\" ci=\"20000605\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Hiremir\" syi=\"30004141\"/>\r\n    <row c=\"Naloran\" ci=\"20000606\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Hikansog\" syi=\"30004142\"/>\r\n    <row c=\"Naloran\" ci=\"20000606\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Syrikos\" syi=\"30004143\"/>\r\n    <row c=\"Naloran\" ci=\"20000606\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Yebouz\" syi=\"30004144\"/>\r\n    <row c=\"Naloran\" ci=\"20000606\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Hapala\" syi=\"30004145\"/>\r\n    <row c=\"Naloran\" ci=\"20000606\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Salah\" syi=\"30004146\"/>\r\n    <row c=\"Naloran\" ci=\"20000606\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Akhmoh\" syi=\"30004147\"/>\r\n    <row c=\"Moghiz\" ci=\"20000607\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Jennim\" syi=\"30004148\"/>\r\n    <row c=\"Moghiz\" ci=\"20000607\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Elmed\" syi=\"30004149\"/>\r\n    <row c=\"Moghiz\" ci=\"20000607\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Shaggoth\" syi=\"30004150\"/>\r\n    <row c=\"Moghiz\" ci=\"20000607\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Ustnia\" syi=\"30004151\"/>\r\n    <row c=\"Moghiz\" ci=\"20000607\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Kooreng\" syi=\"30004152\"/>\r\n    <row c=\"Moghiz\" ci=\"20000607\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Minin\" syi=\"30004153\"/>\r\n    <row c=\"Moghiz\" ci=\"20000607\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Yehnifi\" syi=\"30004154\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Shemah\" syi=\"30004155\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Asrios\" syi=\"30004156\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Ithar\" syi=\"30004157\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Telang\" syi=\"30004158\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Lazara\" syi=\"30004159\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Zorrabed\" syi=\"30004160\"/>\r\n    <row c=\"QJ2-0M\" ci=\"20000609\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FV-YEA\" syi=\"30004161\"/>\r\n    <row c=\"QJ2-0M\" ci=\"20000609\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J-A5QD\" syi=\"30004162\"/>\r\n    <row c=\"QJ2-0M\" ci=\"20000609\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BI0Y-X\" syi=\"30004163\"/>\r\n    <row c=\"QJ2-0M\" ci=\"20000609\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SK7-G6\" syi=\"30004164\"/>\r\n    <row c=\"QJ2-0M\" ci=\"20000609\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-PCHD\" syi=\"30004165\"/>\r\n    <row c=\"QJ2-0M\" ci=\"20000609\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-3722\" syi=\"30004166\"/>\r\n    <row c=\"HNZF-Z\" ci=\"20000610\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GQLB-V\" syi=\"30004167\"/>\r\n    <row c=\"HNZF-Z\" ci=\"20000610\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5E-EZC\" syi=\"30004168\"/>\r\n    <row c=\"HNZF-Z\" ci=\"20000610\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9KE-IT\" syi=\"30004169\"/>\r\n    <row c=\"HNZF-Z\" ci=\"20000610\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P-NRD3\" syi=\"30004170\"/>\r\n    <row c=\"HNZF-Z\" ci=\"20000610\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-RAW3\" syi=\"30004171\"/>\r\n    <row c=\"HNZF-Z\" ci=\"20000610\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S-W8CF\" syi=\"30004172\"/>\r\n    <row c=\"HNZF-Z\" ci=\"20000610\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-41DA\" syi=\"30004173\"/>\r\n    <row c=\"HNZF-Z\" ci=\"20000610\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YVSL-2\" syi=\"30004174\"/>\r\n    <row c=\"HNZF-Z\" ci=\"20000610\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5E6I-W\" syi=\"30004175\"/>\r\n    <row c=\"HNZF-Z\" ci=\"20000610\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KIG9-K\" syi=\"30004176\"/>\r\n    <row c=\"SI1-CF\" ci=\"20000611\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I-CMZA\" syi=\"30004177\"/>\r\n    <row c=\"SI1-CF\" ci=\"20000611\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H23-B5\" syi=\"30004178\"/>\r\n    <row c=\"SI1-CF\" ci=\"20000611\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-0IIQ\" syi=\"30004179\"/>\r\n    <row c=\"SI1-CF\" ci=\"20000611\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CBY8-J\" syi=\"30004180\"/>\r\n    <row c=\"SI1-CF\" ci=\"20000611\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-BYOS\" syi=\"30004181\"/>\r\n    <row c=\"SI1-CF\" ci=\"20000611\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ETXT-F\" syi=\"30004182\"/>\r\n    <row c=\"G3-MU3\" ci=\"20000612\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MK-YNM\" syi=\"30004183\"/>\r\n    <row c=\"G3-MU3\" ci=\"20000612\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2-9Z6V\" syi=\"30004184\"/>\r\n    <row c=\"G3-MU3\" ci=\"20000612\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5HN-D6\" syi=\"30004185\"/>\r\n    <row c=\"G3-MU3\" ci=\"20000612\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-B957\" syi=\"30004186\"/>\r\n    <row c=\"G3-MU3\" ci=\"20000612\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P-H5IY\" syi=\"30004187\"/>\r\n    <row c=\"G3-MU3\" ci=\"20000612\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4A-6NI\" syi=\"30004188\"/>\r\n    <row c=\"G3-MU3\" ci=\"20000612\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1M7-RK\" syi=\"30004189\"/>\r\n    <row c=\"BB-48X\" ci=\"20000613\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"87-1PM\" syi=\"30004190\"/>\r\n    <row c=\"BB-48X\" ci=\"20000613\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C2-1B5\" syi=\"30004191\"/>\r\n    <row c=\"BB-48X\" ci=\"20000613\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JE-VLG\" syi=\"30004192\"/>\r\n    <row c=\"BB-48X\" ci=\"20000613\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5ED-4E\" syi=\"30004193\"/>\r\n    <row c=\"BB-48X\" ci=\"20000613\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-U299\" syi=\"30004194\"/>\r\n    <row c=\"BB-48X\" ci=\"20000613\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DN58-U\" syi=\"30004195\"/>\r\n    <row c=\"I-WRVM\" ci=\"20000614\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VAF1-P\" syi=\"30004196\"/>\r\n    <row c=\"I-WRVM\" ci=\"20000614\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FV1-RQ\" syi=\"30004197\"/>\r\n    <row c=\"I-WRVM\" ci=\"20000614\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QT-EBC\" syi=\"30004198\"/>\r\n    <row c=\"I-WRVM\" ci=\"20000614\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-F4SN\" syi=\"30004199\"/>\r\n    <row c=\"I-WRVM\" ci=\"20000614\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CUT-0V\" syi=\"30004200\"/>\r\n    <row c=\"I-WRVM\" ci=\"20000614\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-WEMC\" syi=\"30004201\"/>\r\n    <row c=\"XHL-TZ\" ci=\"20000615\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U6R-F9\" syi=\"30004202\"/>\r\n    <row c=\"XHL-TZ\" ci=\"20000615\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-Z9NB\" syi=\"30004203\"/>\r\n    <row c=\"XHL-TZ\" ci=\"20000615\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EJ-5X2\" syi=\"30004204\"/>\r\n    <row c=\"XHL-TZ\" ci=\"20000615\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HXK-J6\" syi=\"30004205\"/>\r\n    <row c=\"XHL-TZ\" ci=\"20000615\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4LNE-M\" syi=\"30004206\"/>\r\n    <row c=\"XHL-TZ\" ci=\"20000615\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DK0-N8\" syi=\"30004207\"/>\r\n    <row c=\"DA0V-R\" ci=\"20000616\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E0DR-G\" syi=\"30004208\"/>\r\n    <row c=\"DA0V-R\" ci=\"20000616\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KI2-S3\" syi=\"30004209\"/>\r\n    <row c=\"DA0V-R\" ci=\"20000616\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CHP-76\" syi=\"30004210\"/>\r\n    <row c=\"DA0V-R\" ci=\"20000616\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T-67F8\" syi=\"30004211\"/>\r\n    <row c=\"DA0V-R\" ci=\"20000616\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"58Z-IH\" syi=\"30004212\"/>\r\n    <row c=\"DA0V-R\" ci=\"20000616\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-VACR\" syi=\"30004213\"/>\r\n    <row c=\"DA0V-R\" ci=\"20000616\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0B-VOJ\" syi=\"30004214\"/>\r\n    <row c=\"5ZAB-N\" ci=\"20000617\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J-QOKQ\" syi=\"30004215\"/>\r\n    <row c=\"5ZAB-N\" ci=\"20000617\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4GSZ-1\" syi=\"30004216\"/>\r\n    <row c=\"5ZAB-N\" ci=\"20000617\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-EFAM\" syi=\"30004217\"/>\r\n    <row c=\"5ZAB-N\" ci=\"20000617\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SBEN-Q\" syi=\"30004218\"/>\r\n    <row c=\"5ZAB-N\" ci=\"20000617\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-7SRQ\" syi=\"30004219\"/>\r\n    <row c=\"5ZAB-N\" ci=\"20000617\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VEQ-3V\" syi=\"30004220\"/>\r\n    <row c=\"5ZAB-N\" ci=\"20000617\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4T-VDE\" syi=\"30004221\"/>\r\n    <row c=\"N4TD-6\" ci=\"20000618\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D9Z-VY\" syi=\"30004222\"/>\r\n    <row c=\"N4TD-6\" ci=\"20000618\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MO-YDG\" syi=\"30004223\"/>\r\n    <row c=\"N4TD-6\" ci=\"20000618\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"42SU-L\" syi=\"30004224\"/>\r\n    <row c=\"N4TD-6\" ci=\"20000618\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RGU1-T\" syi=\"30004225\"/>\r\n    <row c=\"N4TD-6\" ci=\"20000618\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1GT-MA\" syi=\"30004226\"/>\r\n    <row c=\"N4TD-6\" ci=\"20000618\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VY-866\" syi=\"30004227\"/>\r\n    <row c=\"N4TD-6\" ci=\"20000618\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HB-5L3\" syi=\"30004228\"/>\r\n    <row c=\"N4TD-6\" ci=\"20000618\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-VTWJ\" syi=\"30004229\"/>\r\n    <row c=\"Anama\" ci=\"20000619\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Van\" syi=\"30004230\"/>\r\n    <row c=\"Anama\" ci=\"20000619\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Shakasi\" syi=\"30004231\"/>\r\n    <row c=\"Anama\" ci=\"20000619\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Zayi\" syi=\"30004232\"/>\r\n    <row c=\"Anama\" ci=\"20000619\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Shirshocin\" syi=\"30004233\"/>\r\n    <row c=\"Anama\" ci=\"20000619\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Maalna\" syi=\"30004234\"/>\r\n    <row c=\"Anama\" ci=\"20000619\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Maseera\" syi=\"30004235\"/>\r\n    <row c=\"Afinoo\" ci=\"20000620\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Yehaba\" syi=\"30004236\"/>\r\n    <row c=\"Afinoo\" ci=\"20000620\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Kenahehab\" syi=\"30004237\"/>\r\n    <row c=\"Afinoo\" ci=\"20000620\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Gens\" syi=\"30004238\"/>\r\n    <row c=\"Afinoo\" ci=\"20000620\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Kamih\" syi=\"30004239\"/>\r\n    <row c=\"Afinoo\" ci=\"20000620\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Hier\" syi=\"30004240\"/>\r\n    <row c=\"Afinoo\" ci=\"20000620\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Jasson\" syi=\"30004241\"/>\r\n    <row c=\"Mareerieh\" ci=\"20000621\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Sadana\" syi=\"30004242\"/>\r\n    <row c=\"Mareerieh\" ci=\"20000621\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Isid\" syi=\"30004243\"/>\r\n    <row c=\"Mareerieh\" ci=\"20000621\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Onanam\" syi=\"30004244\"/>\r\n    <row c=\"Mareerieh\" ci=\"20000621\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Udianoor\" syi=\"30004245\"/>\r\n    <row c=\"Mareerieh\" ci=\"20000621\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Vehan\" syi=\"30004246\"/>\r\n    <row c=\"Mareerieh\" ci=\"20000621\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Marmeha\" syi=\"30004247\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Haimeh\" syi=\"30004248\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Avada\" syi=\"30004249\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Chibi\" syi=\"30004250\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Mishi\" syi=\"30004251\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Bazadod\" syi=\"30004252\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Pahineh\" syi=\"30004253\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Fihrneh\" syi=\"30004254\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Parouz\" syi=\"30004255\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Edilkam\" syi=\"30004256\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Hakatiz\" syi=\"30004257\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Khnar\" syi=\"30004258\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Ertoo\" syi=\"30004259\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Yiratal\" syi=\"30004260\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Balas\" syi=\"30004261\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Pemsah\" syi=\"30004262\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Feshur\" syi=\"30004263\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Hoseen\" syi=\"30004264\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Yekh\" syi=\"30004265\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Gesh\" syi=\"30004266\"/>\r\n    <row c=\"Tid\" ci=\"20000624\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Nema\" syi=\"30004267\"/>\r\n    <row c=\"Tid\" ci=\"20000624\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Shenda\" syi=\"30004268\"/>\r\n    <row c=\"Tid\" ci=\"20000624\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Rashagh\" syi=\"30004269\"/>\r\n    <row c=\"Tid\" ci=\"20000624\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Sazilid\" syi=\"30004270\"/>\r\n    <row c=\"Tid\" ci=\"20000624\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Afrah\" syi=\"30004271\"/>\r\n    <row c=\"Tid\" ci=\"20000624\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Sota\" syi=\"30004272\"/>\r\n    <row c=\"Helab\" ci=\"20000625\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Soliara\" syi=\"30004273\"/>\r\n    <row c=\"Helab\" ci=\"20000625\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Nielez\" syi=\"30004274\"/>\r\n    <row c=\"Helab\" ci=\"20000625\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Tukanas\" syi=\"30004275\"/>\r\n    <row c=\"Helab\" ci=\"20000625\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Fageras\" syi=\"30004276\"/>\r\n    <row c=\"Helab\" ci=\"20000625\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Ajna\" syi=\"30004277\"/>\r\n    <row c=\"Helab\" ci=\"20000625\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Sheri\" syi=\"30004278\"/>\r\n    <row c=\"Helab\" ci=\"20000625\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Ahraghen\" syi=\"30004279\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Nalnifan\" syi=\"30004280\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Jerhesh\" syi=\"30004281\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Getrenjesa\" syi=\"30004282\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Shafrak\" syi=\"30004283\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Defsunun\" syi=\"30004284\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Zazamye\" syi=\"30004285\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Yahyerer\" syi=\"30004286\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Esubara\" syi=\"30004287\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Ghekon\" syi=\"30004288\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Vaini\" syi=\"30004289\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Zaveral\" syi=\"30004290\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Anohel\" syi=\"30004291\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Soza\" syi=\"30004292\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Pserz\" syi=\"30004293\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Illi\" syi=\"30004294\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Keba\" syi=\"30004295\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Bapraya\" syi=\"30004296\"/>\r\n    <row c=\"Fabai\" ci=\"20000628\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Efu\" syi=\"30004297\"/>\r\n    <row c=\"Fabai\" ci=\"20000628\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Tisot\" syi=\"30004298\"/>\r\n    <row c=\"Fabai\" ci=\"20000628\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Sakht\" syi=\"30004299\"/>\r\n    <row c=\"Fabai\" ci=\"20000628\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Naga\" syi=\"30004300\"/>\r\n    <row c=\"Fabai\" ci=\"20000628\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Anath\" syi=\"30004301\"/>\r\n    <row c=\"Fabai\" ci=\"20000628\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Omigiav\" syi=\"30004302\"/>\r\n    <row c=\"Selonat\" ci=\"20000629\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Fobiner\" syi=\"30004303\"/>\r\n    <row c=\"Selonat\" ci=\"20000629\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Huna\" syi=\"30004304\"/>\r\n    <row c=\"Selonat\" ci=\"20000629\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Esaeel\" syi=\"30004305\"/>\r\n    <row c=\"Selonat\" ci=\"20000629\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Karan\" syi=\"30004306\"/>\r\n    <row c=\"Selonat\" ci=\"20000629\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Nouta\" syi=\"30004307\"/>\r\n    <row c=\"Selonat\" ci=\"20000629\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Ned\" syi=\"30004308\"/>\r\n    <row c=\"Selonat\" ci=\"20000629\" r=\"Aridia\" ri=\"10000054\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Hophib\" syi=\"30004309\"/>\r\n    <row c=\"JE7-F2\" ci=\"20000630\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UQ9-3C\" syi=\"30004310\"/>\r\n    <row c=\"JE7-F2\" ci=\"20000630\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DCI7-7\" syi=\"30004311\"/>\r\n    <row c=\"JE7-F2\" ci=\"20000630\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J7YR-1\" syi=\"30004312\"/>\r\n    <row c=\"JE7-F2\" ci=\"20000630\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PKG4-7\" syi=\"30004313\"/>\r\n    <row c=\"JE7-F2\" ci=\"20000630\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EWN-2U\" syi=\"30004314\"/>\r\n    <row c=\"JE7-F2\" ci=\"20000630\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VL3I-M\" syi=\"30004315\"/>\r\n    <row c=\"JE7-F2\" ci=\"20000630\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KMC-WI\" syi=\"30004316\"/>\r\n    <row c=\"8-IL7S\" ci=\"20000631\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-48K1\" syi=\"30004317\"/>\r\n    <row c=\"8-IL7S\" ci=\"20000631\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NTV0-1\" syi=\"30004318\"/>\r\n    <row c=\"8-IL7S\" ci=\"20000631\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-HCGU\" syi=\"30004319\"/>\r\n    <row c=\"8-IL7S\" ci=\"20000631\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XW-2XP\" syi=\"30004320\"/>\r\n    <row c=\"8-IL7S\" ci=\"20000631\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-FEEJ\" syi=\"30004321\"/>\r\n    <row c=\"8-IL7S\" ci=\"20000631\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0P9Z-I\" syi=\"30004322\"/>\r\n    <row c=\"304-QS\" ci=\"20000632\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AH-B84\" syi=\"30004323\"/>\r\n    <row c=\"304-QS\" ci=\"20000632\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JTAU-5\" syi=\"30004324\"/>\r\n    <row c=\"304-QS\" ci=\"20000632\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HB7R-F\" syi=\"30004325\"/>\r\n    <row c=\"304-QS\" ci=\"20000632\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-JPKH\" syi=\"30004326\"/>\r\n    <row c=\"304-QS\" ci=\"20000632\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-9F6Q\" syi=\"30004327\"/>\r\n    <row c=\"304-QS\" ci=\"20000632\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-GC1T\" syi=\"30004328\"/>\r\n    <row c=\"0C-PZ4\" ci=\"20000633\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V8W-QS\" syi=\"30004329\"/>\r\n    <row c=\"0C-PZ4\" ci=\"20000633\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JRZ-B9\" syi=\"30004330\"/>\r\n    <row c=\"0C-PZ4\" ci=\"20000633\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X4UV-Z\" syi=\"30004331\"/>\r\n    <row c=\"0C-PZ4\" ci=\"20000633\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S-B7IT\" syi=\"30004332\"/>\r\n    <row c=\"0C-PZ4\" ci=\"20000633\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BKG-Q2\" syi=\"30004333\"/>\r\n    <row c=\"0C-PZ4\" ci=\"20000633\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OJ-A8M\" syi=\"30004334\"/>\r\n    <row c=\"GP-GIU\" ci=\"20000634\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CX-1XF\" syi=\"30004335\"/>\r\n    <row c=\"GP-GIU\" ci=\"20000634\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3-TD6L\" syi=\"30004336\"/>\r\n    <row c=\"GP-GIU\" ci=\"20000634\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-NJZ4\" syi=\"30004337\"/>\r\n    <row c=\"GP-GIU\" ci=\"20000634\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NLPB-0\" syi=\"30004338\"/>\r\n    <row c=\"GP-GIU\" ci=\"20000634\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R4O-I6\" syi=\"30004339\"/>\r\n    <row c=\"GP-GIU\" ci=\"20000634\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KL3O-J\" syi=\"30004340\"/>\r\n    <row c=\"E-312G\" ci=\"20000635\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-K495\" syi=\"30004341\"/>\r\n    <row c=\"E-312G\" ci=\"20000635\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XM-4L0\" syi=\"30004342\"/>\r\n    <row c=\"E-312G\" ci=\"20000635\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QCWA-Z\" syi=\"30004343\"/>\r\n    <row c=\"E-312G\" ci=\"20000635\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"52G-NZ\" syi=\"30004344\"/>\r\n    <row c=\"E-312G\" ci=\"20000635\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5LJ-MD\" syi=\"30004345\"/>\r\n    <row c=\"E-312G\" ci=\"20000635\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B8O-KJ\" syi=\"30004346\"/>\r\n    <row c=\"E-312G\" ci=\"20000635\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6-O5GY\" syi=\"30004347\"/>\r\n    <row c=\"E-312G\" ci=\"20000635\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KV-8SN\" syi=\"30004348\"/>\r\n    <row c=\"E-312G\" ci=\"20000635\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UB-UQZ\" syi=\"30004349\"/>\r\n    <row c=\"E-312G\" ci=\"20000635\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YG-82V\" syi=\"30004350\"/>\r\n    <row c=\"BZ-10K\" ci=\"20000636\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8-4GQM\" syi=\"30004351\"/>\r\n    <row c=\"BZ-10K\" ci=\"20000636\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T-Q2DD\" syi=\"30004352\"/>\r\n    <row c=\"BZ-10K\" ci=\"20000636\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LRWD-B\" syi=\"30004353\"/>\r\n    <row c=\"BZ-10K\" ci=\"20000636\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QXQ-BA\" syi=\"30004354\"/>\r\n    <row c=\"BZ-10K\" ci=\"20000636\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X7R-JW\" syi=\"30004355\"/>\r\n    <row c=\"BZ-10K\" ci=\"20000636\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-HU4V\" syi=\"30004356\"/>\r\n    <row c=\"C-ULS4\" ci=\"20000637\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CS-ZGD\" syi=\"30004357\"/>\r\n    <row c=\"C-ULS4\" ci=\"20000637\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3-N3OO\" syi=\"30004358\"/>\r\n    <row c=\"C-ULS4\" ci=\"20000637\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-G1FM\" syi=\"30004359\"/>\r\n    <row c=\"C-ULS4\" ci=\"20000637\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-BE0M\" syi=\"30004360\"/>\r\n    <row c=\"C-ULS4\" ci=\"20000637\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I-7RIS\" syi=\"30004361\"/>\r\n    <row c=\"C-ULS4\" ci=\"20000637\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P7Z-R3\" syi=\"30004362\"/>\r\n    <row c=\"C-ULS4\" ci=\"20000637\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZIU-EP\" syi=\"30004363\"/>\r\n    <row c=\"Q5KW-Z\" ci=\"20000638\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LXWN-W\" syi=\"30004364\"/>\r\n    <row c=\"Q5KW-Z\" ci=\"20000638\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-LP3N\" syi=\"30004365\"/>\r\n    <row c=\"Q5KW-Z\" ci=\"20000638\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9F-7PZ\" syi=\"30004366\"/>\r\n    <row c=\"Q5KW-Z\" ci=\"20000638\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1G-MJE\" syi=\"30004367\"/>\r\n    <row c=\"Q5KW-Z\" ci=\"20000638\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WO-AIJ\" syi=\"30004368\"/>\r\n    <row c=\"Q5KW-Z\" ci=\"20000638\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MA-VDX\" syi=\"30004369\"/>\r\n    <row c=\"Q5KW-Z\" ci=\"20000638\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RO90-H\" syi=\"30004370\"/>\r\n    <row c=\"BI-NFW\" ci=\"20000639\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BWI1-9\" syi=\"30004371\"/>\r\n    <row c=\"BI-NFW\" ci=\"20000639\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-LBQS\" syi=\"30004372\"/>\r\n    <row c=\"BI-NFW\" ci=\"20000639\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J52-BH\" syi=\"30004373\"/>\r\n    <row c=\"BI-NFW\" ci=\"20000639\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-P1Y2\" syi=\"30004374\"/>\r\n    <row c=\"BI-NFW\" ci=\"20000639\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KMQ4-V\" syi=\"30004375\"/>\r\n    <row c=\"BI-NFW\" ci=\"20000639\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KJ-QWL\" syi=\"30004376\"/>\r\n    <row c=\"BI-NFW\" ci=\"20000639\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SVB-RE\" syi=\"30004377\"/>\r\n    <row c=\"XPBM-F\" ci=\"20000640\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-4ZOS\" syi=\"30004378\"/>\r\n    <row c=\"XPBM-F\" ci=\"20000640\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K-8SQS\" syi=\"30004379\"/>\r\n    <row c=\"XPBM-F\" ci=\"20000640\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-VGYO\" syi=\"30004380\"/>\r\n    <row c=\"XPBM-F\" ci=\"20000640\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O94U-A\" syi=\"30004381\"/>\r\n    <row c=\"XPBM-F\" ci=\"20000640\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XW-JHT\" syi=\"30004382\"/>\r\n    <row c=\"XPBM-F\" ci=\"20000640\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NEH-CS\" syi=\"30004383\"/>\r\n    <row c=\"KWCZ-A\" ci=\"20000641\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4DTQ-K\" syi=\"30004384\"/>\r\n    <row c=\"KWCZ-A\" ci=\"20000641\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J9-5MQ\" syi=\"30004385\"/>\r\n    <row c=\"KWCZ-A\" ci=\"20000641\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D4R-H7\" syi=\"30004386\"/>\r\n    <row c=\"KWCZ-A\" ci=\"20000641\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"313I-B\" syi=\"30004387\"/>\r\n    <row c=\"KWCZ-A\" ci=\"20000641\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EQI2-2\" syi=\"30004388\"/>\r\n    <row c=\"KWCZ-A\" ci=\"20000641\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-4DEC\" syi=\"30004389\"/>\r\n    <row c=\"LIB-F9\" ci=\"20000642\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3F-JZF\" syi=\"30004390\"/>\r\n    <row c=\"LIB-F9\" ci=\"20000642\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-0WB9\" syi=\"30004391\"/>\r\n    <row c=\"LIB-F9\" ci=\"20000642\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W-4FA9\" syi=\"30004392\"/>\r\n    <row c=\"LIB-F9\" ci=\"20000642\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1IX-C0\" syi=\"30004393\"/>\r\n    <row c=\"LIB-F9\" ci=\"20000642\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2B7A-3\" syi=\"30004394\"/>\r\n    <row c=\"LIB-F9\" ci=\"20000642\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PUWL-4\" syi=\"30004395\"/>\r\n    <row c=\"LIB-F9\" ci=\"20000642\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-1918\" syi=\"30004396\"/>\r\n    <row c=\"T-RQ7S\" ci=\"20000643\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-B1DS\" syi=\"30004397\"/>\r\n    <row c=\"T-RQ7S\" ci=\"20000643\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ME-4IU\" syi=\"30004398\"/>\r\n    <row c=\"T-RQ7S\" ci=\"20000643\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BU-IU4\" syi=\"30004399\"/>\r\n    <row c=\"T-RQ7S\" ci=\"20000643\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I-7JR4\" syi=\"30004400\"/>\r\n    <row c=\"T-RQ7S\" ci=\"20000643\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CH9L-K\" syi=\"30004401\"/>\r\n    <row c=\"T-RQ7S\" ci=\"20000643\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QYZM-W\" syi=\"30004402\"/>\r\n    <row c=\"T-RQ7S\" ci=\"20000643\" r=\"Branch\" ri=\"10000055\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3KNA-N\" syi=\"30004403\"/>\r\n    <row c=\"1ANT-J\" ci=\"20000644\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UD-VZW\" syi=\"30004404\"/>\r\n    <row c=\"1ANT-J\" ci=\"20000644\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3-YX2D\" syi=\"30004405\"/>\r\n    <row c=\"1ANT-J\" ci=\"20000644\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-TN6Q\" syi=\"30004406\"/>\r\n    <row c=\"1ANT-J\" ci=\"20000644\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CFLF-P\" syi=\"30004407\"/>\r\n    <row c=\"1ANT-J\" ci=\"20000644\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QBH5-F\" syi=\"30004408\"/>\r\n    <row c=\"1ANT-J\" ci=\"20000644\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-ZFCG\" syi=\"30004409\"/>\r\n    <row c=\"AV-SCL\" ci=\"20000645\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J-TPTA\" syi=\"30004410\"/>\r\n    <row c=\"AV-SCL\" ci=\"20000645\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PMV-G6\" syi=\"30004411\"/>\r\n    <row c=\"AV-SCL\" ci=\"20000645\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-IZGE\" syi=\"30004412\"/>\r\n    <row c=\"AV-SCL\" ci=\"20000645\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OXC-UL\" syi=\"30004413\"/>\r\n    <row c=\"AV-SCL\" ci=\"20000645\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-8Y13\" syi=\"30004414\"/>\r\n    <row c=\"AV-SCL\" ci=\"20000645\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4AZ-J8\" syi=\"30004415\"/>\r\n    <row c=\"AV-SCL\" ci=\"20000645\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X6-J6R\" syi=\"30004416\"/>\r\n    <row c=\"AV-SCL\" ci=\"20000645\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BGN1-O\" syi=\"30004417\"/>\r\n    <row c=\"I-3ODK\" ci=\"20000646\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DUU1-K\" syi=\"30004418\"/>\r\n    <row c=\"I-3ODK\" ci=\"20000646\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3L-Y9M\" syi=\"30004419\"/>\r\n    <row c=\"I-3ODK\" ci=\"20000646\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BLC-X0\" syi=\"30004420\"/>\r\n    <row c=\"I-3ODK\" ci=\"20000646\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K-X5AX\" syi=\"30004421\"/>\r\n    <row c=\"I-3ODK\" ci=\"20000646\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BJD4-E\" syi=\"30004422\"/>\r\n    <row c=\"I-3ODK\" ci=\"20000646\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TSG-NO\" syi=\"30004423\"/>\r\n    <row c=\"I-3ODK\" ci=\"20000646\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O9V-R7\" syi=\"30004424\"/>\r\n    <row c=\"C45-9Y\" ci=\"20000647\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-PNIA\" syi=\"30004425\"/>\r\n    <row c=\"C45-9Y\" ci=\"20000647\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OCU4-R\" syi=\"30004426\"/>\r\n    <row c=\"C45-9Y\" ci=\"20000647\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BG-W90\" syi=\"30004427\"/>\r\n    <row c=\"C45-9Y\" ci=\"20000647\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-YGMW\" syi=\"30004428\"/>\r\n    <row c=\"C45-9Y\" ci=\"20000647\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"75C-WN\" syi=\"30004429\"/>\r\n    <row c=\"C45-9Y\" ci=\"20000647\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I5Q2-S\" syi=\"30004430\"/>\r\n    <row c=\"C45-9Y\" ci=\"20000647\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PO-3QW\" syi=\"30004431\"/>\r\n    <row c=\"C45-9Y\" ci=\"20000647\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5XR-KZ\" syi=\"30004432\"/>\r\n    <row c=\"C45-9Y\" ci=\"20000647\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VF-FN6\" syi=\"30004433\"/>\r\n    <row c=\"C45-9Y\" ci=\"20000647\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-0ND2\" syi=\"30004434\"/>\r\n    <row c=\"C45-9Y\" ci=\"20000647\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JI-LGM\" syi=\"30004435\"/>\r\n    <row c=\"L-H07K\" ci=\"20000648\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U-BXU9\" syi=\"30004436\"/>\r\n    <row c=\"L-H07K\" ci=\"20000648\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZXOG-O\" syi=\"30004437\"/>\r\n    <row c=\"L-H07K\" ci=\"20000648\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NW2S-A\" syi=\"30004438\"/>\r\n    <row c=\"L-H07K\" ci=\"20000648\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U-JJEW\" syi=\"30004439\"/>\r\n    <row c=\"L-H07K\" ci=\"20000648\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NX5W-U\" syi=\"30004440\"/>\r\n    <row c=\"L-H07K\" ci=\"20000648\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U1-C18\" syi=\"30004441\"/>\r\n    <row c=\"L-H07K\" ci=\"20000648\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6O-XIO\" syi=\"30004442\"/>\r\n    <row c=\"JQA8-6\" ci=\"20000649\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H65-HE\" syi=\"30004443\"/>\r\n    <row c=\"JQA8-6\" ci=\"20000649\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BJ-ZFD\" syi=\"30004444\"/>\r\n    <row c=\"JQA8-6\" ci=\"20000649\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5ELE-A\" syi=\"30004445\"/>\r\n    <row c=\"JQA8-6\" ci=\"20000649\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-P4LB\" syi=\"30004446\"/>\r\n    <row c=\"JQA8-6\" ci=\"20000649\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2UK4-N\" syi=\"30004447\"/>\r\n    <row c=\"JQA8-6\" ci=\"20000649\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QK-CDG\" syi=\"30004448\"/>\r\n    <row c=\"JQA8-6\" ci=\"20000649\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-CMLV\" syi=\"30004449\"/>\r\n    <row c=\"3-U491\" ci=\"20000650\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AZN-D2\" syi=\"30004450\"/>\r\n    <row c=\"3-U491\" ci=\"20000650\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-PR0S\" syi=\"30004451\"/>\r\n    <row c=\"3-U491\" ci=\"20000650\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TR07-S\" syi=\"30004452\"/>\r\n    <row c=\"3-U491\" ci=\"20000650\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VNGJ-U\" syi=\"30004453\"/>\r\n    <row c=\"3-U491\" ci=\"20000650\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2-F3OE\" syi=\"30004454\"/>\r\n    <row c=\"3-U491\" ci=\"20000650\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-LCI7\" syi=\"30004455\"/>\r\n    <row c=\"3-U491\" ci=\"20000650\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y2-I3W\" syi=\"30004456\"/>\r\n    <row c=\"3-U491\" ci=\"20000650\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VVO-R6\" syi=\"30004457\"/>\r\n    <row c=\"3-U491\" ci=\"20000650\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CL-J9W\" syi=\"30004458\"/>\r\n    <row c=\"OFQ-HG\" ci=\"20000651\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YHP2-D\" syi=\"30004459\"/>\r\n    <row c=\"OFQ-HG\" ci=\"20000651\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J94-MU\" syi=\"30004460\"/>\r\n    <row c=\"OFQ-HG\" ci=\"20000651\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M2GJ-X\" syi=\"30004461\"/>\r\n    <row c=\"OFQ-HG\" ci=\"20000651\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JO-32L\" syi=\"30004462\"/>\r\n    <row c=\"OFQ-HG\" ci=\"20000651\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UB5Z-3\" syi=\"30004463\"/>\r\n    <row c=\"OFQ-HG\" ci=\"20000651\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MSKR-1\" syi=\"30004464\"/>\r\n    <row c=\"YZKE-Q\" ci=\"20000652\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GPUS-A\" syi=\"30004465\"/>\r\n    <row c=\"YZKE-Q\" ci=\"20000652\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3-BADZ\" syi=\"30004466\"/>\r\n    <row c=\"YZKE-Q\" ci=\"20000652\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"23M-PX\" syi=\"30004467\"/>\r\n    <row c=\"YZKE-Q\" ci=\"20000652\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UTDH-N\" syi=\"30004468\"/>\r\n    <row c=\"YZKE-Q\" ci=\"20000652\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZS-2LT\" syi=\"30004469\"/>\r\n    <row c=\"YZKE-Q\" ci=\"20000652\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DB1R-4\" syi=\"30004470\"/>\r\n    <row c=\"RHG-4O\" ci=\"20000653\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P8-BKO\" syi=\"30004471\"/>\r\n    <row c=\"RHG-4O\" ci=\"20000653\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RIT-A7\" syi=\"30004472\"/>\r\n    <row c=\"RHG-4O\" ci=\"20000653\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R4K-8L\" syi=\"30004473\"/>\r\n    <row c=\"RHG-4O\" ci=\"20000653\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GHZ-SJ\" syi=\"30004474\"/>\r\n    <row c=\"RHG-4O\" ci=\"20000653\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K-J50B\" syi=\"30004475\"/>\r\n    <row c=\"RHG-4O\" ci=\"20000653\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NLO-3Z\" syi=\"30004476\"/>\r\n    <row c=\"RHG-4O\" ci=\"20000653\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5P-AIP\" syi=\"30004477\"/>\r\n    <row c=\"42-WDG\" ci=\"20000654\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-PGT0\" syi=\"30004478\"/>\r\n    <row c=\"42-WDG\" ci=\"20000654\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NPD9-A\" syi=\"30004479\"/>\r\n    <row c=\"42-WDG\" ci=\"20000654\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D6SK-L\" syi=\"30004480\"/>\r\n    <row c=\"42-WDG\" ci=\"20000654\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HYPL-V\" syi=\"30004481\"/>\r\n    <row c=\"42-WDG\" ci=\"20000654\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I9-ZQZ\" syi=\"30004482\"/>\r\n    <row c=\"42-WDG\" ci=\"20000654\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0OYZ-G\" syi=\"30004483\"/>\r\n    <row c=\"42-WDG\" ci=\"20000654\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SWBV-2\" syi=\"30004484\"/>\r\n    <row c=\"42-WDG\" ci=\"20000654\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R97-CI\" syi=\"30004485\"/>\r\n    <row c=\"42-WDG\" ci=\"20000654\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6-ELQP\" syi=\"30004486\"/>\r\n    <row c=\"3-PC31\" ci=\"20000655\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OBK-K8\" syi=\"30004487\"/>\r\n    <row c=\"3-PC31\" ci=\"20000655\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KJ-V0P\" syi=\"30004488\"/>\r\n    <row c=\"3-PC31\" ci=\"20000655\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZID-LE\" syi=\"30004489\"/>\r\n    <row c=\"3-PC31\" ci=\"20000655\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K-9UG4\" syi=\"30004490\"/>\r\n    <row c=\"3-PC31\" ci=\"20000655\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D4-2XN\" syi=\"30004491\"/>\r\n    <row c=\"3-PC31\" ci=\"20000655\" r=\"Feythabolis\" ri=\"10000056\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2-RSC7\" syi=\"30004492\"/>\r\n    <row c=\"Crown\" ci=\"20000656\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C0T-77\" syi=\"30004493\"/>\r\n    <row c=\"Crown\" ci=\"20000656\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RL-KT0\" syi=\"30004494\"/>\r\n    <row c=\"Crown\" ci=\"20000656\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UO9-YG\" syi=\"30004495\"/>\r\n    <row c=\"Crown\" ci=\"20000656\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZQP-QV\" syi=\"30004496\"/>\r\n    <row c=\"Crown\" ci=\"20000656\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P-NUWP\" syi=\"30004497\"/>\r\n    <row c=\"Crown\" ci=\"20000656\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZJQH-S\" syi=\"30004498\"/>\r\n    <row c=\"Crown\" ci=\"20000656\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E9G-MT\" syi=\"30004499\"/>\r\n    <row c=\"Crown\" ci=\"20000656\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TQ-RR8\" syi=\"30004500\"/>\r\n    <row c=\"Heart\" ci=\"20000657\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1L-BHT\" syi=\"30004501\"/>\r\n    <row c=\"Heart\" ci=\"20000657\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D5IW-F\" syi=\"30004502\"/>\r\n    <row c=\"Heart\" ci=\"20000657\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-XWIN\" syi=\"30004503\"/>\r\n    <row c=\"Heart\" ci=\"20000657\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4C-B7X\" syi=\"30004504\"/>\r\n    <row c=\"Heart\" ci=\"20000657\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LGUZ-1\" syi=\"30004505\"/>\r\n    <row c=\"Heart\" ci=\"20000657\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BF-SDP\" syi=\"30004506\"/>\r\n    <row c=\"Heart\" ci=\"20000657\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F5FO-U\" syi=\"30004507\"/>\r\n    <row c=\"Belt\" ci=\"20000658\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5WAE-M\" syi=\"30004508\"/>\r\n    <row c=\"Belt\" ci=\"20000658\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-WVQS\" syi=\"30004509\"/>\r\n    <row c=\"Belt\" ci=\"20000658\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-9UHT\" syi=\"30004510\"/>\r\n    <row c=\"Belt\" ci=\"20000658\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-NKZM\" syi=\"30004511\"/>\r\n    <row c=\"Belt\" ci=\"20000658\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-M1BY\" syi=\"30004512\"/>\r\n    <row c=\"Belt\" ci=\"20000658\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J1H-R4\" syi=\"30004513\"/>\r\n    <row c=\"Wield\" ci=\"20000659\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J9SH-A\" syi=\"30004514\"/>\r\n    <row c=\"Wield\" ci=\"20000659\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JKJ-VJ\" syi=\"30004515\"/>\r\n    <row c=\"Wield\" ci=\"20000659\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RTX0-S\" syi=\"30004516\"/>\r\n    <row c=\"Wield\" ci=\"20000659\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"33FN-P\" syi=\"30004517\"/>\r\n    <row c=\"Wield\" ci=\"20000659\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NM-OEA\" syi=\"30004518\"/>\r\n    <row c=\"Wield\" ci=\"20000659\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MT-2VJ\" syi=\"30004519\"/>\r\n    <row c=\"Sword\" ci=\"20000660\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3HQC-6\" syi=\"30004520\"/>\r\n    <row c=\"Sword\" ci=\"20000660\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OX-RGN\" syi=\"30004521\"/>\r\n    <row c=\"Sword\" ci=\"20000660\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R-OCBA\" syi=\"30004522\"/>\r\n    <row c=\"Sword\" ci=\"20000660\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GA-2V7\" syi=\"30004523\"/>\r\n    <row c=\"Sword\" ci=\"20000660\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DB-6W4\" syi=\"30004524\"/>\r\n    <row c=\"Sword\" ci=\"20000660\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7-692B\" syi=\"30004525\"/>\r\n    <row c=\"Regalia\" ci=\"20000661\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L3-XYO\" syi=\"30004526\"/>\r\n    <row c=\"Regalia\" ci=\"20000661\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AN-G54\" syi=\"30004527\"/>\r\n    <row c=\"Regalia\" ci=\"20000661\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZXI-K2\" syi=\"30004528\"/>\r\n    <row c=\"Regalia\" ci=\"20000661\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T-Z6J2\" syi=\"30004529\"/>\r\n    <row c=\"Regalia\" ci=\"20000661\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CT7-5V\" syi=\"30004530\"/>\r\n    <row c=\"Regalia\" ci=\"20000661\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2JJ-0E\" syi=\"30004531\"/>\r\n    <row c=\"Scepter\" ci=\"20000662\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B0C-LD\" syi=\"30004532\"/>\r\n    <row c=\"Scepter\" ci=\"20000662\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NP6-38\" syi=\"30004533\"/>\r\n    <row c=\"Scepter\" ci=\"20000662\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-YT55\" syi=\"30004534\"/>\r\n    <row c=\"Scepter\" ci=\"20000662\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IZ-AOB\" syi=\"30004535\"/>\r\n    <row c=\"Scepter\" ci=\"20000662\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G5-EN3\" syi=\"30004536\"/>\r\n    <row c=\"Scepter\" ci=\"20000662\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W-Z3HW\" syi=\"30004537\"/>\r\n    <row c=\"Velvet\" ci=\"20000663\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W2F-ZH\" syi=\"30004538\"/>\r\n    <row c=\"Velvet\" ci=\"20000663\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BMU-V1\" syi=\"30004539\"/>\r\n    <row c=\"Velvet\" ci=\"20000663\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZXC8-1\" syi=\"30004540\"/>\r\n    <row c=\"Velvet\" ci=\"20000663\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LBV-Q1\" syi=\"30004541\"/>\r\n    <row c=\"Velvet\" ci=\"20000663\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-40CG\" syi=\"30004542\"/>\r\n    <row c=\"Velvet\" ci=\"20000663\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-RIDF\" syi=\"30004543\"/>\r\n    <row c=\"Sole\" ci=\"20000664\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-5M31\" syi=\"30004544\"/>\r\n    <row c=\"Sole\" ci=\"20000664\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BOE7-P\" syi=\"30004545\"/>\r\n    <row c=\"Sole\" ci=\"20000664\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-GCX0\" syi=\"30004546\"/>\r\n    <row c=\"Sole\" ci=\"20000664\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VBFC-8\" syi=\"30004547\"/>\r\n    <row c=\"Sole\" ci=\"20000664\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YVA-F0\" syi=\"30004548\"/>\r\n    <row c=\"Sole\" ci=\"20000664\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0D-CHA\" syi=\"30004549\"/>\r\n    <row c=\"Sole\" ci=\"20000664\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A2V6-6\" syi=\"30004550\"/>\r\n    <row c=\"Sole\" ci=\"20000664\" r=\"Outer Ring\" ri=\"10000057\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VJ0-81\" syi=\"30004551\"/>\r\n    <row c=\"Pegasus\" ci=\"20000665\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XF-TQL\" syi=\"30004552\"/>\r\n    <row c=\"Pegasus\" ci=\"20000665\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-EP12\" syi=\"30004553\"/>\r\n    <row c=\"Pegasus\" ci=\"20000665\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YZS5-4\" syi=\"30004554\"/>\r\n    <row c=\"Pegasus\" ci=\"20000665\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3WE-KY\" syi=\"30004555\"/>\r\n    <row c=\"Pegasus\" ci=\"20000665\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IR-WT1\" syi=\"30004556\"/>\r\n    <row c=\"Pegasus\" ci=\"20000665\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-VO0Q\" syi=\"30004557\"/>\r\n    <row c=\"Pegasus\" ci=\"20000665\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A8-XBW\" syi=\"30004558\"/>\r\n    <row c=\"Wyvern\" ci=\"20000666\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PNQY-Y\" syi=\"30004559\"/>\r\n    <row c=\"Wyvern\" ci=\"20000666\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RP2-OQ\" syi=\"30004560\"/>\r\n    <row c=\"Wyvern\" ci=\"20000666\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YVBE-E\" syi=\"30004561\"/>\r\n    <row c=\"Wyvern\" ci=\"20000666\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BYXF-Q\" syi=\"30004562\"/>\r\n    <row c=\"Wyvern\" ci=\"20000666\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AC2E-3\" syi=\"30004563\"/>\r\n    <row c=\"Wyvern\" ci=\"20000666\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-C99Z\" syi=\"30004564\"/>\r\n    <row c=\"Wyvern\" ci=\"20000666\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CL-BWB\" syi=\"30004565\"/>\r\n    <row c=\"Wyvern\" ci=\"20000666\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R3W-XU\" syi=\"30004566\"/>\r\n    <row c=\"Manticore\" ci=\"20000667\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-BWUU\" syi=\"30004567\"/>\r\n    <row c=\"Manticore\" ci=\"20000667\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-1W01\" syi=\"30004568\"/>\r\n    <row c=\"Manticore\" ci=\"20000667\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9R4-EJ\" syi=\"30004569\"/>\r\n    <row c=\"Manticore\" ci=\"20000667\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SPLE-Y\" syi=\"30004570\"/>\r\n    <row c=\"Manticore\" ci=\"20000667\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-XEB3\" syi=\"30004571\"/>\r\n    <row c=\"Manticore\" ci=\"20000667\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K8L-X7\" syi=\"30004572\"/>\r\n    <row c=\"Sphinx\" ci=\"20000668\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-D82P\" syi=\"30004573\"/>\r\n    <row c=\"Sphinx\" ci=\"20000668\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8ESL-G\" syi=\"30004574\"/>\r\n    <row c=\"Sphinx\" ci=\"20000668\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JGOW-Y\" syi=\"30004575\"/>\r\n    <row c=\"Sphinx\" ci=\"20000668\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"APM-6K\" syi=\"30004576\"/>\r\n    <row c=\"Sphinx\" ci=\"20000668\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RE-C26\" syi=\"30004577\"/>\r\n    <row c=\"Sphinx\" ci=\"20000668\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AL8-V4\" syi=\"30004578\"/>\r\n    <row c=\"Sphinx\" ci=\"20000668\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KCT-0A\" syi=\"30004579\"/>\r\n    <row c=\"Sphinx\" ci=\"20000668\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N2-OQG\" syi=\"30004580\"/>\r\n    <row c=\"Sphinx\" ci=\"20000668\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OW-TPO\" syi=\"30004581\"/>\r\n    <row c=\"Sphinx\" ci=\"20000668\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9O-ORX\" syi=\"30004582\"/>\r\n    <row c=\"Sphinx\" ci=\"20000668\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IGE-RI\" syi=\"30004583\"/>\r\n    <row c=\"Centaur\" ci=\"20000669\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z9PP-H\" syi=\"30004584\"/>\r\n    <row c=\"Centaur\" ci=\"20000669\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7-8S5X\" syi=\"30004585\"/>\r\n    <row c=\"Centaur\" ci=\"20000669\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EI-O0O\" syi=\"30004586\"/>\r\n    <row c=\"Centaur\" ci=\"20000669\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7X-02R\" syi=\"30004587\"/>\r\n    <row c=\"Centaur\" ci=\"20000669\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D2AH-Z\" syi=\"30004588\"/>\r\n    <row c=\"Centaur\" ci=\"20000669\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J5A-IX\" syi=\"30004589\"/>\r\n    <row c=\"Unicorn\" ci=\"20000670\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B17O-R\" syi=\"30004590\"/>\r\n    <row c=\"Unicorn\" ci=\"20000670\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6F-H3W\" syi=\"30004591\"/>\r\n    <row c=\"Unicorn\" ci=\"20000670\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-NPXW\" syi=\"30004592\"/>\r\n    <row c=\"Unicorn\" ci=\"20000670\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-1SW8\" syi=\"30004593\"/>\r\n    <row c=\"Unicorn\" ci=\"20000670\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U-SOH2\" syi=\"30004594\"/>\r\n    <row c=\"Unicorn\" ci=\"20000670\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DBRN-Z\" syi=\"30004595\"/>\r\n    <row c=\"Satyr\" ci=\"20000671\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"00GD-D\" syi=\"30004596\"/>\r\n    <row c=\"Satyr\" ci=\"20000671\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C1XD-X\" syi=\"30004597\"/>\r\n    <row c=\"Satyr\" ci=\"20000671\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G95F-H\" syi=\"30004598\"/>\r\n    <row c=\"Satyr\" ci=\"20000671\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B32-14\" syi=\"30004599\"/>\r\n    <row c=\"Satyr\" ci=\"20000671\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-N4OD\" syi=\"30004600\"/>\r\n    <row c=\"Satyr\" ci=\"20000671\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CHA2-Q\" syi=\"30004601\"/>\r\n    <row c=\"Kraken\" ci=\"20000672\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UAYL-F\" syi=\"30004602\"/>\r\n    <row c=\"Kraken\" ci=\"20000672\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ESC-RI\" syi=\"30004603\"/>\r\n    <row c=\"Kraken\" ci=\"20000672\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"671-ST\" syi=\"30004604\"/>\r\n    <row c=\"Kraken\" ci=\"20000672\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-HZYL\" syi=\"30004605\"/>\r\n    <row c=\"Kraken\" ci=\"20000672\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-S80W\" syi=\"30004606\"/>\r\n    <row c=\"Kraken\" ci=\"20000672\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z30S-A\" syi=\"30004607\"/>\r\n    <row c=\"Chimera\" ci=\"20000673\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6VDT-H\" syi=\"30004608\"/>\r\n    <row c=\"Chimera\" ci=\"20000673\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NDH-NV\" syi=\"30004609\"/>\r\n    <row c=\"Chimera\" ci=\"20000673\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QV28-G\" syi=\"30004610\"/>\r\n    <row c=\"Chimera\" ci=\"20000673\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"15U-JY\" syi=\"30004611\"/>\r\n    <row c=\"Chimera\" ci=\"20000673\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NY6-FH\" syi=\"30004612\"/>\r\n    <row c=\"Chimera\" ci=\"20000673\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XJP-Y7\" syi=\"30004613\"/>\r\n    <row c=\"Chimera\" ci=\"20000673\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AV-VB6\" syi=\"30004614\"/>\r\n    <row c=\"Chimera\" ci=\"20000673\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HMF-9D\" syi=\"30004615\"/>\r\n    <row c=\"Chimera\" ci=\"20000673\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7BX-6F\" syi=\"30004616\"/>\r\n    <row c=\"Phoenix\" ci=\"20000674\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YZ-LQL\" syi=\"30004617\"/>\r\n    <row c=\"Phoenix\" ci=\"20000674\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MN5N-X\" syi=\"30004618\"/>\r\n    <row c=\"Phoenix\" ci=\"20000674\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-1CON\" syi=\"30004619\"/>\r\n    <row c=\"Phoenix\" ci=\"20000674\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"75FA-Z\" syi=\"30004620\"/>\r\n    <row c=\"Phoenix\" ci=\"20000674\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WY-9LL\" syi=\"30004621\"/>\r\n    <row c=\"Phoenix\" ci=\"20000674\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D-Q04X\" syi=\"30004622\"/>\r\n    <row c=\"Phoenix\" ci=\"20000674\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Serpentis Prime\" syi=\"30004623\"/>\r\n    <row c=\"Taurus\" ci=\"20000675\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"P5-EFH\" syi=\"30004624\"/>\r\n    <row c=\"Taurus\" ci=\"20000675\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-A5XP\" syi=\"30004625\"/>\r\n    <row c=\"Taurus\" ci=\"20000675\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D4KU-5\" syi=\"30004626\"/>\r\n    <row c=\"Taurus\" ci=\"20000675\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YRNJ-8\" syi=\"30004627\"/>\r\n    <row c=\"Taurus\" ci=\"20000675\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3ZTV-V\" syi=\"30004628\"/>\r\n    <row c=\"Taurus\" ci=\"20000675\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9D6O-M\" syi=\"30004629\"/>\r\n    <row c=\"Griffin\" ci=\"20000676\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LIWW-P\" syi=\"30004630\"/>\r\n    <row c=\"Griffin\" ci=\"20000676\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-UTHL\" syi=\"30004631\"/>\r\n    <row c=\"Griffin\" ci=\"20000676\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"38IA-E\" syi=\"30004632\"/>\r\n    <row c=\"Griffin\" ci=\"20000676\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-KXEH\" syi=\"30004633\"/>\r\n    <row c=\"Griffin\" ci=\"20000676\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TU-Y2A\" syi=\"30004634\"/>\r\n    <row c=\"Griffin\" ci=\"20000676\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7BIX-A\" syi=\"30004635\"/>\r\n    <row c=\"Hydra\" ci=\"20000677\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I-CUVX\" syi=\"30004636\"/>\r\n    <row c=\"Hydra\" ci=\"20000677\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J-RQMF\" syi=\"30004637\"/>\r\n    <row c=\"Hydra\" ci=\"20000677\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TEG-SD\" syi=\"30004638\"/>\r\n    <row c=\"Hydra\" ci=\"20000677\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"14YI-D\" syi=\"30004639\"/>\r\n    <row c=\"Hydra\" ci=\"20000677\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"87XQ-0\" syi=\"30004640\"/>\r\n    <row c=\"Hydra\" ci=\"20000677\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LJ-TZW\" syi=\"30004641\"/>\r\n    <row c=\"Hydra\" ci=\"20000677\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KVN-36\" syi=\"30004642\"/>\r\n    <row c=\"Minotaur\" ci=\"20000678\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"57-KJB\" syi=\"30004643\"/>\r\n    <row c=\"Minotaur\" ci=\"20000678\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V6-NY1\" syi=\"30004644\"/>\r\n    <row c=\"Minotaur\" ci=\"20000678\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OL3-78\" syi=\"30004645\"/>\r\n    <row c=\"Minotaur\" ci=\"20000678\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9DQW-W\" syi=\"30004646\"/>\r\n    <row c=\"Minotaur\" ci=\"20000678\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PXF-RF\" syi=\"30004647\"/>\r\n    <row c=\"Minotaur\" ci=\"20000678\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R-BGSU\" syi=\"30004648\"/>\r\n    <row c=\"Skaven\" ci=\"20000679\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-PNSN\" syi=\"30004649\"/>\r\n    <row c=\"Skaven\" ci=\"20000679\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1-5GBW\" syi=\"30004650\"/>\r\n    <row c=\"Skaven\" ci=\"20000679\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-FER9\" syi=\"30004651\"/>\r\n    <row c=\"Skaven\" ci=\"20000679\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F2-2C3\" syi=\"30004652\"/>\r\n    <row c=\"Skaven\" ci=\"20000679\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-88PJ\" syi=\"30004653\"/>\r\n    <row c=\"Skaven\" ci=\"20000679\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ATQ-QS\" syi=\"30004654\"/>\r\n    <row c=\"Mermaid\" ci=\"20000680\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XUW-3X\" syi=\"30004655\"/>\r\n    <row c=\"Mermaid\" ci=\"20000680\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"006-L3\" syi=\"30004656\"/>\r\n    <row c=\"Mermaid\" ci=\"20000680\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PB-0C1\" syi=\"30004657\"/>\r\n    <row c=\"Mermaid\" ci=\"20000680\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZUE-NS\" syi=\"30004658\"/>\r\n    <row c=\"Mermaid\" ci=\"20000680\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L7-APB\" syi=\"30004659\"/>\r\n    <row c=\"Mermaid\" ci=\"20000680\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZTS-4D\" syi=\"30004660\"/>\r\n    <row c=\"Basilisk\" ci=\"20000681\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4HS-CR\" syi=\"30004661\"/>\r\n    <row c=\"Basilisk\" ci=\"20000681\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WMH-SO\" syi=\"30004662\"/>\r\n    <row c=\"Basilisk\" ci=\"20000681\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LBGI-2\" syi=\"30004663\"/>\r\n    <row c=\"Basilisk\" ci=\"20000681\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G1CA-Y\" syi=\"30004664\"/>\r\n    <row c=\"Basilisk\" ci=\"20000681\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-2ANO\" syi=\"30004665\"/>\r\n    <row c=\"Basilisk\" ci=\"20000681\" r=\"Fountain\" ri=\"10000058\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-YN5Y\" syi=\"30004666\"/>\r\n    <row c=\"17K-QM\" ci=\"20000682\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JI-K5H\" syi=\"30004667\"/>\r\n    <row c=\"17K-QM\" ci=\"20000682\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"33-JRO\" syi=\"30004668\"/>\r\n    <row c=\"17K-QM\" ci=\"20000682\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ARBX-9\" syi=\"30004669\"/>\r\n    <row c=\"17K-QM\" ci=\"20000682\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-CSE3\" syi=\"30004670\"/>\r\n    <row c=\"17K-QM\" ci=\"20000682\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-MCZR\" syi=\"30004671\"/>\r\n    <row c=\"17K-QM\" ci=\"20000682\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9T-APQ\" syi=\"30004672\"/>\r\n    <row c=\"TCC-ZV\" ci=\"20000683\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4Y-OBL\" syi=\"30004673\"/>\r\n    <row c=\"TCC-ZV\" ci=\"20000683\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-MX34\" syi=\"30004674\"/>\r\n    <row c=\"TCC-ZV\" ci=\"20000683\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5AQ-5H\" syi=\"30004675\"/>\r\n    <row c=\"TCC-ZV\" ci=\"20000683\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T-ZFID\" syi=\"30004676\"/>\r\n    <row c=\"TCC-ZV\" ci=\"20000683\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0ZN7-G\" syi=\"30004677\"/>\r\n    <row c=\"TCC-ZV\" ci=\"20000683\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H8-ZTO\" syi=\"30004678\"/>\r\n    <row c=\"I-CCEI\" ci=\"20000684\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YV-FDG\" syi=\"30004679\"/>\r\n    <row c=\"I-CCEI\" ci=\"20000684\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LUL-WX\" syi=\"30004680\"/>\r\n    <row c=\"I-CCEI\" ci=\"20000684\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8Q-UYU\" syi=\"30004681\"/>\r\n    <row c=\"I-CCEI\" ci=\"20000684\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3PPT-9\" syi=\"30004682\"/>\r\n    <row c=\"I-CCEI\" ci=\"20000684\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S-KU8B\" syi=\"30004683\"/>\r\n    <row c=\"I-CCEI\" ci=\"20000684\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JK-GLL\" syi=\"30004684\"/>\r\n    <row c=\"I-CCEI\" ci=\"20000684\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UAAU-C\" syi=\"30004685\"/>\r\n    <row c=\"IZ-FBT\" ci=\"20000685\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HHJD-5\" syi=\"30004686\"/>\r\n    <row c=\"IZ-FBT\" ci=\"20000685\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZWV-GD\" syi=\"30004687\"/>\r\n    <row c=\"IZ-FBT\" ci=\"20000685\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1DDR-X\" syi=\"30004688\"/>\r\n    <row c=\"IZ-FBT\" ci=\"20000685\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LG-WA9\" syi=\"30004689\"/>\r\n    <row c=\"IZ-FBT\" ci=\"20000685\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AA-GWF\" syi=\"30004690\"/>\r\n    <row c=\"IZ-FBT\" ci=\"20000685\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O4T-Z5\" syi=\"30004691\"/>\r\n    <row c=\"GEP-XF\" ci=\"20000686\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-97ZG\" syi=\"30004692\"/>\r\n    <row c=\"GEP-XF\" ci=\"20000686\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2I-520\" syi=\"30004693\"/>\r\n    <row c=\"GEP-XF\" ci=\"20000686\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GQ2S-8\" syi=\"30004694\"/>\r\n    <row c=\"GEP-XF\" ci=\"20000686\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0SUF-3\" syi=\"30004695\"/>\r\n    <row c=\"GEP-XF\" ci=\"20000686\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-M4GK\" syi=\"30004696\"/>\r\n    <row c=\"GEP-XF\" ci=\"20000686\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G1D0-G\" syi=\"30004697\"/>\r\n    <row c=\"GEP-XF\" ci=\"20000686\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KU3-BB\" syi=\"30004698\"/>\r\n    <row c=\"GEP-XF\" ci=\"20000686\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O1Q-P1\" syi=\"30004699\"/>\r\n    <row c=\"D9DM-O\" ci=\"20000687\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LD-2VL\" syi=\"30004700\"/>\r\n    <row c=\"D9DM-O\" ci=\"20000687\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZBY-0I\" syi=\"30004701\"/>\r\n    <row c=\"D9DM-O\" ci=\"20000687\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MP5-KR\" syi=\"30004702\"/>\r\n    <row c=\"D9DM-O\" ci=\"20000687\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-N589\" syi=\"30004703\"/>\r\n    <row c=\"D9DM-O\" ci=\"20000687\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZDYA-G\" syi=\"30004704\"/>\r\n    <row c=\"D9DM-O\" ci=\"20000687\" r=\"Paragon Soul\" ri=\"10000059\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LX5K-W\" syi=\"30004705\"/>\r\n    <row c=\"XPJ1-6\" ci=\"20000688\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UHKL-N\" syi=\"30004706\"/>\r\n    <row c=\"XPJ1-6\" ci=\"20000688\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z3V-1W\" syi=\"30004707\"/>\r\n    <row c=\"XPJ1-6\" ci=\"20000688\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-ELE2\" syi=\"30004708\"/>\r\n    <row c=\"XPJ1-6\" ci=\"20000688\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KFIE-Z\" syi=\"30004709\"/>\r\n    <row c=\"XPJ1-6\" ci=\"20000688\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1DH-SX\" syi=\"30004710\"/>\r\n    <row c=\"XPJ1-6\" ci=\"20000688\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PR-8CA\" syi=\"30004711\"/>\r\n    <row c=\"B4H-9W\" ci=\"20000689\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NOL-M9\" syi=\"30004712\"/>\r\n    <row c=\"B4H-9W\" ci=\"20000689\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-IOAI\" syi=\"30004713\"/>\r\n    <row c=\"B4H-9W\" ci=\"20000689\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QX-LIJ\" syi=\"30004714\"/>\r\n    <row c=\"B4H-9W\" ci=\"20000689\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HM-XR2\" syi=\"30004715\"/>\r\n    <row c=\"B4H-9W\" ci=\"20000689\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4K-TRB\" syi=\"30004716\"/>\r\n    <row c=\"B4H-9W\" ci=\"20000689\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AJI-MA\" syi=\"30004717\"/>\r\n    <row c=\"6-UCYU\" ci=\"20000690\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FWST-8\" syi=\"30004718\"/>\r\n    <row c=\"6-UCYU\" ci=\"20000690\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YZ9-F6\" syi=\"30004719\"/>\r\n    <row c=\"6-UCYU\" ci=\"20000690\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0N-3RO\" syi=\"30004720\"/>\r\n    <row c=\"6-UCYU\" ci=\"20000690\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-TT5V\" syi=\"30004721\"/>\r\n    <row c=\"6-UCYU\" ci=\"20000690\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"319-3D\" syi=\"30004722\"/>\r\n    <row c=\"6-UCYU\" ci=\"20000690\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I3Q-II\" syi=\"30004723\"/>\r\n    <row c=\"O5K-Y6\" ci=\"20000691\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RF-K9W\" syi=\"30004724\"/>\r\n    <row c=\"O5K-Y6\" ci=\"20000691\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E3OI-U\" syi=\"30004725\"/>\r\n    <row c=\"O5K-Y6\" ci=\"20000691\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IP6V-X\" syi=\"30004726\"/>\r\n    <row c=\"O5K-Y6\" ci=\"20000691\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R5-MM8\" syi=\"30004727\"/>\r\n    <row c=\"O5K-Y6\" ci=\"20000691\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1B-VKF\" syi=\"30004728\"/>\r\n    <row c=\"O5K-Y6\" ci=\"20000691\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T-J6HT\" syi=\"30004729\"/>\r\n    <row c=\"SPNZ-Z\" ci=\"20000692\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D-W7F0\" syi=\"30004730\"/>\r\n    <row c=\"SPNZ-Z\" ci=\"20000692\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JP4-AA\" syi=\"30004731\"/>\r\n    <row c=\"SPNZ-Z\" ci=\"20000692\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FM-JK5\" syi=\"30004732\"/>\r\n    <row c=\"SPNZ-Z\" ci=\"20000692\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PDE-U3\" syi=\"30004733\"/>\r\n    <row c=\"SPNZ-Z\" ci=\"20000692\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"23G-XC\" syi=\"30004734\"/>\r\n    <row c=\"SPNZ-Z\" ci=\"20000692\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T5ZI-S\" syi=\"30004735\"/>\r\n    <row c=\"SPNZ-Z\" ci=\"20000692\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4X0-8B\" syi=\"30004736\"/>\r\n    <row c=\"YX-LYK\" ci=\"20000693\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-HESZ\" syi=\"30004737\"/>\r\n    <row c=\"YX-LYK\" ci=\"20000693\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1-SMEB\" syi=\"30004738\"/>\r\n    <row c=\"YX-LYK\" ci=\"20000693\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M5-CGW\" syi=\"30004739\"/>\r\n    <row c=\"YX-LYK\" ci=\"20000693\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6Q-R50\" syi=\"30004740\"/>\r\n    <row c=\"YX-LYK\" ci=\"20000693\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZA9-PY\" syi=\"30004741\"/>\r\n    <row c=\"YX-LYK\" ci=\"20000693\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RCI-VL\" syi=\"30004742\"/>\r\n    <row c=\"YX-LYK\" ci=\"20000693\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MJXW-P\" syi=\"30004743\"/>\r\n    <row c=\"D5-SOW\" ci=\"20000694\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QC-YX6\" syi=\"30004744\"/>\r\n    <row c=\"D5-SOW\" ci=\"20000694\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T-M0FA\" syi=\"30004745\"/>\r\n    <row c=\"D5-SOW\" ci=\"20000694\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4O-239\" syi=\"30004746\"/>\r\n    <row c=\"D5-SOW\" ci=\"20000694\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LUA5-L\" syi=\"30004747\"/>\r\n    <row c=\"D5-SOW\" ci=\"20000694\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T-IPZB\" syi=\"30004748\"/>\r\n    <row c=\"D5-SOW\" ci=\"20000694\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-JQSG\" syi=\"30004749\"/>\r\n    <row c=\"W-4U1E\" ci=\"20000695\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D-3GIQ\" syi=\"30004750\"/>\r\n    <row c=\"W-4U1E\" ci=\"20000695\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K-6K16\" syi=\"30004751\"/>\r\n    <row c=\"W-4U1E\" ci=\"20000695\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QY6-RK\" syi=\"30004752\"/>\r\n    <row c=\"W-4U1E\" ci=\"20000695\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W-KQPI\" syi=\"30004753\"/>\r\n    <row c=\"W-4U1E\" ci=\"20000695\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PUIG-F\" syi=\"30004754\"/>\r\n    <row c=\"W-4U1E\" ci=\"20000695\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J-LPX7\" syi=\"30004755\"/>\r\n    <row c=\"W-4U1E\" ci=\"20000695\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-HDC8\" syi=\"30004756\"/>\r\n    <row c=\"W-4U1E\" ci=\"20000695\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-TE1T\" syi=\"30004757\"/>\r\n    <row c=\"W-4U1E\" ci=\"20000695\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SVM-3K\" syi=\"30004758\"/>\r\n    <row c=\"O-EIMK\" ci=\"20000696\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1DQ1-A\" syi=\"30004759\"/>\r\n    <row c=\"O-EIMK\" ci=\"20000696\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8WA-Z6\" syi=\"30004760\"/>\r\n    <row c=\"O-EIMK\" ci=\"20000696\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5BTK-M\" syi=\"30004761\"/>\r\n    <row c=\"O-EIMK\" ci=\"20000696\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N-8YET\" syi=\"30004762\"/>\r\n    <row c=\"O-EIMK\" ci=\"20000696\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-OMTZ\" syi=\"30004763\"/>\r\n    <row c=\"O-EIMK\" ci=\"20000696\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3-DMQT\" syi=\"30004764\"/>\r\n    <row c=\"O-EIMK\" ci=\"20000696\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MO-GZ5\" syi=\"30004765\"/>\r\n    <row c=\"SG-CTQ\" ci=\"20000697\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"39P-1J\" syi=\"30004766\"/>\r\n    <row c=\"SG-CTQ\" ci=\"20000697\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HZAQ-W\" syi=\"30004767\"/>\r\n    <row c=\"SG-CTQ\" ci=\"20000697\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7G-QIG\" syi=\"30004768\"/>\r\n    <row c=\"SG-CTQ\" ci=\"20000697\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NIDJ-K\" syi=\"30004769\"/>\r\n    <row c=\"SG-CTQ\" ci=\"20000697\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PS-94K\" syi=\"30004770\"/>\r\n    <row c=\"SG-CTQ\" ci=\"20000697\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8RQJ-2\" syi=\"30004771\"/>\r\n    <row c=\"NJU-QV\" ci=\"20000698\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KEE-N6\" syi=\"30004772\"/>\r\n    <row c=\"NJU-QV\" ci=\"20000698\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M2-XFE\" syi=\"30004773\"/>\r\n    <row c=\"NJU-QV\" ci=\"20000698\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-CQDA\" syi=\"30004774\"/>\r\n    <row c=\"NJU-QV\" ci=\"20000698\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I-E3TG\" syi=\"30004775\"/>\r\n    <row c=\"NJU-QV\" ci=\"20000698\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S-6HHN\" syi=\"30004776\"/>\r\n    <row c=\"NJU-QV\" ci=\"20000698\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZXB-VC\" syi=\"30004777\"/>\r\n    <row c=\"LSC-4P\" ci=\"20000699\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GY6A-L\" syi=\"30004778\"/>\r\n    <row c=\"LSC-4P\" ci=\"20000699\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UEXO-Z\" syi=\"30004779\"/>\r\n    <row c=\"LSC-4P\" ci=\"20000699\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9O-8W1\" syi=\"30004780\"/>\r\n    <row c=\"LSC-4P\" ci=\"20000699\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8F-TK3\" syi=\"30004781\"/>\r\n    <row c=\"LSC-4P\" ci=\"20000699\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PF-KUQ\" syi=\"30004782\"/>\r\n    <row c=\"LSC-4P\" ci=\"20000699\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"N8D9-Z\" syi=\"30004783\"/>\r\n    <row c=\"1-A81R\" ci=\"20000700\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-9PXR\" syi=\"30004784\"/>\r\n    <row c=\"1-A81R\" ci=\"20000700\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y5C-YD\" syi=\"30004785\"/>\r\n    <row c=\"1-A81R\" ci=\"20000700\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"31X-RE\" syi=\"30004786\"/>\r\n    <row c=\"1-A81R\" ci=\"20000700\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q-02UL\" syi=\"30004787\"/>\r\n    <row c=\"1-A81R\" ci=\"20000700\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7UTB-F\" syi=\"30004788\"/>\r\n    <row c=\"1-A81R\" ci=\"20000700\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-6QW7\" syi=\"30004789\"/>\r\n    <row c=\"F-I56R\" ci=\"20000701\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7-K6UE\" syi=\"30004790\"/>\r\n    <row c=\"F-I56R\" ci=\"20000701\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C6Y-ZF\" syi=\"30004791\"/>\r\n    <row c=\"F-I56R\" ci=\"20000701\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6Z-CKS\" syi=\"30004792\"/>\r\n    <row c=\"F-I56R\" ci=\"20000701\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-M5L3\" syi=\"30004793\"/>\r\n    <row c=\"F-I56R\" ci=\"20000701\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KBAK-I\" syi=\"30004794\"/>\r\n    <row c=\"F-I56R\" ci=\"20000701\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-SRKS\" syi=\"30004795\"/>\r\n    <row c=\"OK-FEM\" ci=\"20000702\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9GNS-2\" syi=\"30004796\"/>\r\n    <row c=\"OK-FEM\" ci=\"20000702\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YAW-7M\" syi=\"30004797\"/>\r\n    <row c=\"OK-FEM\" ci=\"20000702\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C3N-3S\" syi=\"30004798\"/>\r\n    <row c=\"OK-FEM\" ci=\"20000702\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CX8-6K\" syi=\"30004799\"/>\r\n    <row c=\"OK-FEM\" ci=\"20000702\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LWX-93\" syi=\"30004800\"/>\r\n    <row c=\"OK-FEM\" ci=\"20000702\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1-2J4P\" syi=\"30004801\"/>\r\n    <row c=\"OK-FEM\" ci=\"20000702\" r=\"Delve\" ri=\"10000060\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M0O-JG\" syi=\"30004802\"/>\r\n    <row c=\"QP6B-I\" ci=\"20000703\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WB-AYY\" syi=\"30004803\"/>\r\n    <row c=\"QP6B-I\" ci=\"20000703\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BW-WJ2\" syi=\"30004804\"/>\r\n    <row c=\"QP6B-I\" ci=\"20000703\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S4-9DN\" syi=\"30004805\"/>\r\n    <row c=\"QP6B-I\" ci=\"20000703\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DT-PXH\" syi=\"30004806\"/>\r\n    <row c=\"QP6B-I\" ci=\"20000703\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UALX-3\" syi=\"30004807\"/>\r\n    <row c=\"QP6B-I\" ci=\"20000703\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3L3N-X\" syi=\"30004808\"/>\r\n    <row c=\"QP6B-I\" ci=\"20000703\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-ORBJ\" syi=\"30004809\"/>\r\n    <row c=\"QP6B-I\" ci=\"20000703\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6-IAFR\" syi=\"30004810\"/>\r\n    <row c=\"AU-S0B\" ci=\"20000704\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-P4FE\" syi=\"30004811\"/>\r\n    <row c=\"AU-S0B\" ci=\"20000704\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RH0-EG\" syi=\"30004812\"/>\r\n    <row c=\"AU-S0B\" ci=\"20000704\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D-9UEV\" syi=\"30004813\"/>\r\n    <row c=\"AU-S0B\" ci=\"20000704\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-HWQR\" syi=\"30004814\"/>\r\n    <row c=\"AU-S0B\" ci=\"20000704\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QRBN-M\" syi=\"30004815\"/>\r\n    <row c=\"AU-S0B\" ci=\"20000704\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"78R-PI\" syi=\"30004816\"/>\r\n    <row c=\"CL-QB2\" ci=\"20000705\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZD1-Z2\" syi=\"30004817\"/>\r\n    <row c=\"CL-QB2\" ci=\"20000705\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-FD0D\" syi=\"30004818\"/>\r\n    <row c=\"CL-QB2\" ci=\"20000705\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S-9RCJ\" syi=\"30004819\"/>\r\n    <row c=\"CL-QB2\" ci=\"20000705\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZMV9-A\" syi=\"30004820\"/>\r\n    <row c=\"CL-QB2\" ci=\"20000705\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FE-6YQ\" syi=\"30004821\"/>\r\n    <row c=\"CL-QB2\" ci=\"20000705\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W-16DY\" syi=\"30004822\"/>\r\n    <row c=\"CL-QB2\" ci=\"20000705\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-4KDB\" syi=\"30004823\"/>\r\n    <row c=\"E-IFSA\" ci=\"20000706\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C3-0YD\" syi=\"30004824\"/>\r\n    <row c=\"E-IFSA\" ci=\"20000706\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PDF-3Z\" syi=\"30004825\"/>\r\n    <row c=\"E-IFSA\" ci=\"20000706\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-MJVQ\" syi=\"30004826\"/>\r\n    <row c=\"E-IFSA\" ci=\"20000706\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L2GN-K\" syi=\"30004827\"/>\r\n    <row c=\"E-IFSA\" ci=\"20000706\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-IT9G\" syi=\"30004828\"/>\r\n    <row c=\"E-IFSA\" ci=\"20000706\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PEK-8Z\" syi=\"30004829\"/>\r\n    <row c=\"E-IFSA\" ci=\"20000706\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2PG-KN\" syi=\"30004830\"/>\r\n    <row c=\"ZQ7-QS\" ci=\"20000707\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ABE-M2\" syi=\"30004831\"/>\r\n    <row c=\"ZQ7-QS\" ci=\"20000707\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IL-YTR\" syi=\"30004832\"/>\r\n    <row c=\"ZQ7-QS\" ci=\"20000707\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KW-OAM\" syi=\"30004833\"/>\r\n    <row c=\"ZQ7-QS\" ci=\"20000707\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U2U5-A\" syi=\"30004834\"/>\r\n    <row c=\"ZQ7-QS\" ci=\"20000707\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EQWO-Y\" syi=\"30004835\"/>\r\n    <row c=\"ZQ7-QS\" ci=\"20000707\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JK-Q77\" syi=\"30004836\"/>\r\n    <row c=\"ZQ7-QS\" ci=\"20000707\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QI9-42\" syi=\"30004837\"/>\r\n    <row c=\"ZQ7-QS\" ci=\"20000707\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"YF-P4X\" syi=\"30004838\"/>\r\n    <row c=\"G3IP-E\" ci=\"20000708\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JI1-SY\" syi=\"30004839\"/>\r\n    <row c=\"G3IP-E\" ci=\"20000708\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-1QGA\" syi=\"30004840\"/>\r\n    <row c=\"G3IP-E\" ci=\"20000708\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CCE-0J\" syi=\"30004841\"/>\r\n    <row c=\"G3IP-E\" ci=\"20000708\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T2-V8F\" syi=\"30004842\"/>\r\n    <row c=\"G3IP-E\" ci=\"20000708\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0VK-43\" syi=\"30004843\"/>\r\n    <row c=\"G3IP-E\" ci=\"20000708\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TY2X-C\" syi=\"30004844\"/>\r\n    <row c=\"50-5UD\" ci=\"20000709\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q0G-L8\" syi=\"30004845\"/>\r\n    <row c=\"50-5UD\" ci=\"20000709\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Q5KZ-W\" syi=\"30004846\"/>\r\n    <row c=\"50-5UD\" ci=\"20000709\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WE-KK2\" syi=\"30004847\"/>\r\n    <row c=\"50-5UD\" ci=\"20000709\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B8HU-Z\" syi=\"30004848\"/>\r\n    <row c=\"50-5UD\" ci=\"20000709\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"16AM-3\" syi=\"30004849\"/>\r\n    <row c=\"50-5UD\" ci=\"20000709\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A-REKV\" syi=\"30004850\"/>\r\n    <row c=\"50-5UD\" ci=\"20000709\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BB-EKF\" syi=\"30004851\"/>\r\n    <row c=\"F5-O9O\" ci=\"20000710\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DZ6-I5\" syi=\"30004852\"/>\r\n    <row c=\"F5-O9O\" ci=\"20000710\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R-XDKM\" syi=\"30004853\"/>\r\n    <row c=\"F5-O9O\" ci=\"20000710\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G1-0UI\" syi=\"30004854\"/>\r\n    <row c=\"F5-O9O\" ci=\"20000710\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QCDG-H\" syi=\"30004855\"/>\r\n    <row c=\"F5-O9O\" ci=\"20000710\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XUDX-A\" syi=\"30004856\"/>\r\n    <row c=\"F5-O9O\" ci=\"20000710\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QLU-P0\" syi=\"30004857\"/>\r\n    <row c=\"F5-O9O\" ci=\"20000710\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OQTY-Z\" syi=\"30004858\"/>\r\n    <row c=\"EIX-HK\" ci=\"20000711\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-EQ0C\" syi=\"30004859\"/>\r\n    <row c=\"EIX-HK\" ci=\"20000711\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7M4C-F\" syi=\"30004860\"/>\r\n    <row c=\"EIX-HK\" ci=\"20000711\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MS1-KJ\" syi=\"30004861\"/>\r\n    <row c=\"EIX-HK\" ci=\"20000711\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8-BEW8\" syi=\"30004862\"/>\r\n    <row c=\"EIX-HK\" ci=\"20000711\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NZW-ZO\" syi=\"30004863\"/>\r\n    <row c=\"EIX-HK\" ci=\"20000711\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"WSK-1A\" syi=\"30004864\"/>\r\n    <row c=\"EIX-HK\" ci=\"20000711\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-NZNW\" syi=\"30004865\"/>\r\n    <row c=\"BZZ-1U\" ci=\"20000712\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NR8S-Y\" syi=\"30004866\"/>\r\n    <row c=\"BZZ-1U\" ci=\"20000712\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-ZBO0\" syi=\"30004867\"/>\r\n    <row c=\"BZZ-1U\" ci=\"20000712\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3Q1T-O\" syi=\"30004868\"/>\r\n    <row c=\"BZZ-1U\" ci=\"20000712\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8-4KME\" syi=\"30004869\"/>\r\n    <row c=\"BZZ-1U\" ci=\"20000712\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T6GY-Y\" syi=\"30004870\"/>\r\n    <row c=\"BZZ-1U\" ci=\"20000712\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R1-IMO\" syi=\"30004871\"/>\r\n    <row c=\"6I-3VX\" ci=\"20000713\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7KIK-H\" syi=\"30004872\"/>\r\n    <row c=\"6I-3VX\" ci=\"20000713\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-6STA\" syi=\"30004873\"/>\r\n    <row c=\"6I-3VX\" ci=\"20000713\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0P-U0Q\" syi=\"30004874\"/>\r\n    <row c=\"6I-3VX\" ci=\"20000713\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XGH-SH\" syi=\"30004875\"/>\r\n    <row c=\"6I-3VX\" ci=\"20000713\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-D0N3\" syi=\"30004876\"/>\r\n    <row c=\"6I-3VX\" ci=\"20000713\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"T-AKQZ\" syi=\"30004877\"/>\r\n    <row c=\"W-3E44\" ci=\"20000714\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"46DP-O\" syi=\"30004878\"/>\r\n    <row c=\"W-3E44\" ci=\"20000714\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-980U\" syi=\"30004879\"/>\r\n    <row c=\"W-3E44\" ci=\"20000714\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EMIG-F\" syi=\"30004880\"/>\r\n    <row c=\"W-3E44\" ci=\"20000714\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-RPN3\" syi=\"30004881\"/>\r\n    <row c=\"W-3E44\" ci=\"20000714\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZO-P5K\" syi=\"30004882\"/>\r\n    <row c=\"W-3E44\" ci=\"20000714\" r=\"Tenerifis\" ri=\"10000061\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JV1V-O\" syi=\"30004883\"/>\r\n    <row c=\"O5QG-M\" ci=\"20000715\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9MWZ-B\" syi=\"30004884\"/>\r\n    <row c=\"O5QG-M\" ci=\"20000715\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LS-QLX\" syi=\"30004885\"/>\r\n    <row c=\"O5QG-M\" ci=\"20000715\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"S-XZHU\" syi=\"30004886\"/>\r\n    <row c=\"O5QG-M\" ci=\"20000715\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CO-7BI\" syi=\"30004887\"/>\r\n    <row c=\"O5QG-M\" ci=\"20000715\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZJG-7D\" syi=\"30004888\"/>\r\n    <row c=\"O5QG-M\" ci=\"20000715\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C-WPWH\" syi=\"30004889\"/>\r\n    <row c=\"Y-LRWI\" ci=\"20000716\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VULA-I\" syi=\"30004890\"/>\r\n    <row c=\"Y-LRWI\" ci=\"20000716\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R2TJ-1\" syi=\"30004891\"/>\r\n    <row c=\"Y-LRWI\" ci=\"20000716\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-B3PR\" syi=\"30004892\"/>\r\n    <row c=\"Y-LRWI\" ci=\"20000716\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"73-JQO\" syi=\"30004893\"/>\r\n    <row c=\"Y-LRWI\" ci=\"20000716\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XPUM-L\" syi=\"30004894\"/>\r\n    <row c=\"Y-LRWI\" ci=\"20000716\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KR8-27\" syi=\"30004895\"/>\r\n    <row c=\"Y-LRWI\" ci=\"20000716\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LQ-AHE\" syi=\"30004896\"/>\r\n    <row c=\"Y-LRWI\" ci=\"20000716\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LOI-L1\" syi=\"30004897\"/>\r\n    <row c=\"5Z0Y-S\" ci=\"20000717\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-MSJN\" syi=\"30004898\"/>\r\n    <row c=\"5Z0Y-S\" ci=\"20000717\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MJ-X5V\" syi=\"30004899\"/>\r\n    <row c=\"5Z0Y-S\" ci=\"20000717\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3FKU-H\" syi=\"30004900\"/>\r\n    <row c=\"5Z0Y-S\" ci=\"20000717\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M9-FIB\" syi=\"30004901\"/>\r\n    <row c=\"5Z0Y-S\" ci=\"20000717\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D2EZ-X\" syi=\"30004902\"/>\r\n    <row c=\"5Z0Y-S\" ci=\"20000717\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DJK-67\" syi=\"30004903\"/>\r\n    <row c=\"8MJO-4\" ci=\"20000718\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AXDX-F\" syi=\"30004904\"/>\r\n    <row c=\"8MJO-4\" ci=\"20000718\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J-4FNO\" syi=\"30004905\"/>\r\n    <row c=\"8MJO-4\" ci=\"20000718\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PEM-LC\" syi=\"30004906\"/>\r\n    <row c=\"8MJO-4\" ci=\"20000718\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-EHHD\" syi=\"30004907\"/>\r\n    <row c=\"8MJO-4\" ci=\"20000718\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6T3I-L\" syi=\"30004908\"/>\r\n    <row c=\"8MJO-4\" ci=\"20000718\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QSF-EJ\" syi=\"30004909\"/>\r\n    <row c=\"8MJO-4\" ci=\"20000718\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-AS00\" syi=\"30004910\"/>\r\n    <row c=\"U7-GIV\" ci=\"20000719\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NZPK-G\" syi=\"30004911\"/>\r\n    <row c=\"U7-GIV\" ci=\"20000719\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K-1OY3\" syi=\"30004912\"/>\r\n    <row c=\"U7-GIV\" ci=\"20000719\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MMUF-8\" syi=\"30004913\"/>\r\n    <row c=\"U7-GIV\" ci=\"20000719\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"99-0GS\" syi=\"30004914\"/>\r\n    <row c=\"U7-GIV\" ci=\"20000719\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"X-3AUU\" syi=\"30004915\"/>\r\n    <row c=\"U7-GIV\" ci=\"20000719\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H90-C9\" syi=\"30004916\"/>\r\n    <row c=\"U7-GIV\" ci=\"20000719\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0DD-MH\" syi=\"30004917\"/>\r\n    <row c=\"U7-GIV\" ci=\"20000719\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RI-JB1\" syi=\"30004918\"/>\r\n    <row c=\"U7-GIV\" ci=\"20000719\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NQH-MR\" syi=\"30004919\"/>\r\n    <row c=\"RL36-K\" ci=\"20000720\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1I6F-9\" syi=\"30004920\"/>\r\n    <row c=\"RL36-K\" ci=\"20000720\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-7OK1\" syi=\"30004921\"/>\r\n    <row c=\"RL36-K\" ci=\"20000720\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UEP0-A\" syi=\"30004922\"/>\r\n    <row c=\"RL36-K\" ci=\"20000720\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"66-PMM\" syi=\"30004923\"/>\r\n    <row c=\"RL36-K\" ci=\"20000720\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OKEO-X\" syi=\"30004924\"/>\r\n    <row c=\"RL36-K\" ci=\"20000720\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7-8EOE\" syi=\"30004925\"/>\r\n    <row c=\"RL36-K\" ci=\"20000720\" r=\"Omist\" ri=\"10000062\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7L9-ZC\" syi=\"30004926\"/>\r\n    <row c=\"XOV7-5\" ci=\"20000721\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-YMYU\" syi=\"30004927\"/>\r\n    <row c=\"XOV7-5\" ci=\"20000721\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"35-JWD\" syi=\"30004928\"/>\r\n    <row c=\"XOV7-5\" ci=\"20000721\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-M1FU\" syi=\"30004929\"/>\r\n    <row c=\"XOV7-5\" ci=\"20000721\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-NTIS\" syi=\"30004930\"/>\r\n    <row c=\"XOV7-5\" ci=\"20000721\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VR-YIQ\" syi=\"30004931\"/>\r\n    <row c=\"XOV7-5\" ci=\"20000721\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XZ-SKZ\" syi=\"30004932\"/>\r\n    <row c=\"XOV7-5\" ci=\"20000721\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"I6M-9U\" syi=\"30004933\"/>\r\n    <row c=\"N-39FI\" ci=\"20000722\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MG0-RD\" syi=\"30004934\"/>\r\n    <row c=\"N-39FI\" ci=\"20000722\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TPAR-G\" syi=\"30004935\"/>\r\n    <row c=\"N-39FI\" ci=\"20000722\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VYO-68\" syi=\"30004936\"/>\r\n    <row c=\"N-39FI\" ci=\"20000722\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TCAG-3\" syi=\"30004937\"/>\r\n    <row c=\"N-39FI\" ci=\"20000722\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UR-E46\" syi=\"30004938\"/>\r\n    <row c=\"N-39FI\" ci=\"20000722\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"CW9-1Y\" syi=\"30004939\"/>\r\n    <row c=\"J8-G8K\" ci=\"20000723\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1-NJLK\" syi=\"30004940\"/>\r\n    <row c=\"J8-G8K\" ci=\"20000723\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Y-CWQY\" syi=\"30004941\"/>\r\n    <row c=\"J8-G8K\" ci=\"20000723\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8KR9-5\" syi=\"30004942\"/>\r\n    <row c=\"J8-G8K\" ci=\"20000723\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VQE-CN\" syi=\"30004943\"/>\r\n    <row c=\"J8-G8K\" ci=\"20000723\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L5D-ZL\" syi=\"30004944\"/>\r\n    <row c=\"J8-G8K\" ci=\"20000723\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-C8QO\" syi=\"30004945\"/>\r\n    <row c=\"J8-G8K\" ci=\"20000723\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EIMJ-M\" syi=\"30004946\"/>\r\n    <row c=\"NOK-FZ\" ci=\"20000724\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0A-KZ0\" syi=\"30004947\"/>\r\n    <row c=\"NOK-FZ\" ci=\"20000724\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-DOF2\" syi=\"30004948\"/>\r\n    <row c=\"NOK-FZ\" ci=\"20000724\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"48I1-X\" syi=\"30004949\"/>\r\n    <row c=\"NOK-FZ\" ci=\"20000724\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0OTX-J\" syi=\"30004950\"/>\r\n    <row c=\"NOK-FZ\" ci=\"20000724\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3OP-3E\" syi=\"30004951\"/>\r\n    <row c=\"NOK-FZ\" ci=\"20000724\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JZL-VB\" syi=\"30004952\"/>\r\n    <row c=\"NOK-FZ\" ci=\"20000724\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RJ3H-0\" syi=\"30004953\"/>\r\n    <row c=\"NOK-FZ\" ci=\"20000724\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"08S-39\" syi=\"30004954\"/>\r\n    <row c=\"6KFH-X\" ci=\"20000725\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"ZU-MS3\" syi=\"30004955\"/>\r\n    <row c=\"6KFH-X\" ci=\"20000725\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HIX4-H\" syi=\"30004956\"/>\r\n    <row c=\"6KFH-X\" ci=\"20000725\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"GR-J8B\" syi=\"30004957\"/>\r\n    <row c=\"6KFH-X\" ci=\"20000725\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OY0-2T\" syi=\"30004958\"/>\r\n    <row c=\"6KFH-X\" ci=\"20000725\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E2-RDQ\" syi=\"30004959\"/>\r\n    <row c=\"6KFH-X\" ci=\"20000725\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TN25-J\" syi=\"30004960\"/>\r\n    <row c=\"OY3-DM\" ci=\"20000726\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PA-VE3\" syi=\"30004961\"/>\r\n    <row c=\"OY3-DM\" ci=\"20000726\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-Q5JU\" syi=\"30004962\"/>\r\n    <row c=\"OY3-DM\" ci=\"20000726\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RYQC-I\" syi=\"30004963\"/>\r\n    <row c=\"OY3-DM\" ci=\"20000726\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1E-W5I\" syi=\"30004964\"/>\r\n    <row c=\"OY3-DM\" ci=\"20000726\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-M5A1\" syi=\"30004965\"/>\r\n    <row c=\"OY3-DM\" ci=\"20000726\" r=\"Period Basis\" ri=\"10000063\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MVUO-F\" syi=\"30004966\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Luminaire\" syi=\"30004967\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Mies\" syi=\"30004968\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Oursulaert\" syi=\"30004969\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Renyn\" syi=\"30004970\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Duripant\" syi=\"30004971\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Algogille\" syi=\"30004972\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Caslemon\" syi=\"30004973\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Jolevier\" syi=\"30004974\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Mesybier\" syi=\"30004975\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Charmerout\" syi=\"30004976\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Yvangier\" syi=\"30004977\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Pemene\" syi=\"30004978\"/>\r\n    <row c=\"Jeon\" ci=\"20000729\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Heydieles\" syi=\"30004979\"/>\r\n    <row c=\"Jeon\" ci=\"20000729\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Fliet\" syi=\"30004980\"/>\r\n    <row c=\"Jeon\" ci=\"20000729\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Actee\" syi=\"30004981\"/>\r\n    <row c=\"Jeon\" ci=\"20000729\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Indregulle\" syi=\"30004982\"/>\r\n    <row c=\"Jeon\" ci=\"20000729\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Amane\" syi=\"30004983\"/>\r\n    <row c=\"Jeon\" ci=\"20000729\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Abune\" syi=\"30004984\"/>\r\n    <row c=\"Jeon\" ci=\"20000729\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Deven\" syi=\"30004985\"/>\r\n    <row c=\"Jeon\" ci=\"20000729\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Estaunitte\" syi=\"30004986\"/>\r\n    <row c=\"Balrille\" ci=\"20000730\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Deninard\" syi=\"30004987\"/>\r\n    <row c=\"Balrille\" ci=\"20000730\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Hulmate\" syi=\"30004988\"/>\r\n    <row c=\"Balrille\" ci=\"20000730\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Annages\" syi=\"30004989\"/>\r\n    <row c=\"Balrille\" ci=\"20000730\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Onne\" syi=\"30004990\"/>\r\n    <row c=\"Balrille\" ci=\"20000730\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Vitrauze\" syi=\"30004991\"/>\r\n    <row c=\"Balrille\" ci=\"20000730\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Palmon\" syi=\"30004992\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Villore\" syi=\"30004993\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Arant\" syi=\"30004994\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Allamotte\" syi=\"30004995\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Obalyu\" syi=\"30004996\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Vifrevaert\" syi=\"30004997\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Parts\" syi=\"30004998\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Ladistier\" syi=\"30004999\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Old Man Star\" syi=\"30005000\"/>\r\n    <row c=\"Peccanouette\" ci=\"20000732\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Arnon\" syi=\"30005001\"/>\r\n    <row c=\"Peccanouette\" ci=\"20000732\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Laurvier\" syi=\"30005002\"/>\r\n    <row c=\"Peccanouette\" ci=\"20000732\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Adirain\" syi=\"30005003\"/>\r\n    <row c=\"Peccanouette\" ci=\"20000732\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Attyn\" syi=\"30005004\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Ignebaener\" syi=\"30005005\"/>\r\n    <row c=\"Peccanouette\" ci=\"20000732\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Aere\" syi=\"30005006\"/>\r\n    <row c=\"Peccanouette\" ci=\"20000732\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Lisbaetanne\" syi=\"30005007\"/>\r\n    <row c=\"Peccanouette\" ci=\"20000732\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Aeschee\" syi=\"30005008\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Allebin\" syi=\"30005009\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Atlulle\" syi=\"30005010\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Droselory\" syi=\"30005011\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Haine\" syi=\"30005012\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Perckhevin\" syi=\"30005013\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Isenan\" syi=\"30005014\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Synchelle\" syi=\"30005015\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Wysalan\" syi=\"30005016\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Yona\" syi=\"30005017\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Noghere\" syi=\"30005018\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Aporulie\" syi=\"30005019\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Seyllin\" syi=\"30005020\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Adrel\" syi=\"30005021\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Ane\" syi=\"30005022\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Clorteler\" syi=\"30005023\"/>\r\n    <row c=\"Eustron\" ci=\"20000735\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Atlangeins\" syi=\"30005024\"/>\r\n    <row c=\"Eustron\" ci=\"20000735\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Derririntel\" syi=\"30005025\"/>\r\n    <row c=\"Eustron\" ci=\"20000735\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Cat\" syi=\"30005026\"/>\r\n    <row c=\"Eustron\" ci=\"20000735\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Ommare\" syi=\"30005027\"/>\r\n    <row c=\"Eustron\" ci=\"20000735\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Andole\" syi=\"30005028\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Vale\" syi=\"30005029\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Fensi\" syi=\"30005030\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Nebian\" syi=\"30005031\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Khabara\" syi=\"30005032\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Jeni\" syi=\"30005033\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Bridi\" syi=\"30005034\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Ami\" syi=\"30005035\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Amdonen\" syi=\"30005036\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Mora\" syi=\"30005037\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Kor-Azor Prime\" syi=\"30005038\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Leva\" syi=\"30005039\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Nishah\" syi=\"30005040\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Masanuh\" syi=\"30005041\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Sehmy\" syi=\"30005042\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Nakregde\" syi=\"30005043\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Danyana\" syi=\"30005044\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Nahyeen\" syi=\"30005045\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Jinkah\" syi=\"30005046\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Nibainkier\" syi=\"30005047\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Polfaly\" syi=\"30005048\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Andrub\" syi=\"30005049\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Kulu\" syi=\"30005050\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Choga\" syi=\"30005051\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Soumi\" syi=\"30005052\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Imih\" syi=\"30005053\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Nare\" syi=\"30005054\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Zinkon\" syi=\"30005055\"/>\r\n    <row c=\"Finena\" ci=\"20000740\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Kizama\" syi=\"30005056\"/>\r\n    <row c=\"Finena\" ci=\"20000740\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Shaha\" syi=\"30005057\"/>\r\n    <row c=\"Finena\" ci=\"20000740\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Neesher\" syi=\"30005058\"/>\r\n    <row c=\"Finena\" ci=\"20000740\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Misha\" syi=\"30005059\"/>\r\n    <row c=\"Finena\" ci=\"20000740\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Ordion\" syi=\"30005060\"/>\r\n    <row c=\"Finena\" ci=\"20000740\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Perbhe\" syi=\"30005061\"/>\r\n    <row c=\"Ravin\" ci=\"20000741\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Abath\" syi=\"30005062\"/>\r\n    <row c=\"Ravin\" ci=\"20000741\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Schmaeel\" syi=\"30005063\"/>\r\n    <row c=\"Ravin\" ci=\"20000741\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Mafra\" syi=\"30005064\"/>\r\n    <row c=\"Ravin\" ci=\"20000741\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Arzi\" syi=\"30005065\"/>\r\n    <row c=\"Ravin\" ci=\"20000741\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Kerying\" syi=\"30005066\"/>\r\n    <row c=\"Ravin\" ci=\"20000741\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Zorenyen\" syi=\"30005067\"/>\r\n    <row c=\"Ravin\" ci=\"20000741\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Oguser\" syi=\"30005068\"/>\r\n    <row c=\"Orus\" ci=\"20000742\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Nahol\" syi=\"30005069\"/>\r\n    <row c=\"Orus\" ci=\"20000742\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Tadadan\" syi=\"30005070\"/>\r\n    <row c=\"Orus\" ci=\"20000742\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Tralasa\" syi=\"30005071\"/>\r\n    <row c=\"Orus\" ci=\"20000742\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Gademam\" syi=\"30005072\"/>\r\n    <row c=\"Orus\" ci=\"20000742\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Pananan\" syi=\"30005073\"/>\r\n    <row c=\"Orus\" ci=\"20000742\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Daran\" syi=\"30005074\"/>\r\n    <row c=\"Orus\" ci=\"20000742\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Latari\" syi=\"30005075\"/>\r\n    <row c=\"Comadu\" ci=\"20000743\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Shokal\" syi=\"30005076\"/>\r\n    <row c=\"Comadu\" ci=\"20000743\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Atarli\" syi=\"30005077\"/>\r\n    <row c=\"Comadu\" ci=\"20000743\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Keproh\" syi=\"30005078\"/>\r\n    <row c=\"Comadu\" ci=\"20000743\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Zatamaka\" syi=\"30005079\"/>\r\n    <row c=\"Comadu\" ci=\"20000743\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Rannoze\" syi=\"30005080\"/>\r\n    <row c=\"Comadu\" ci=\"20000743\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Piri\" syi=\"30005081\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Enal\" syi=\"30005082\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Jedandan\" syi=\"30005083\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Miroona\" syi=\"30005084\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Ranni\" syi=\"30005085\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Arza\" syi=\"30005086\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Liparer\" syi=\"30005087\"/>\r\n    <row c=\"NT1-5Q\" ci=\"20000745\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-B0ME\" syi=\"30005088\"/>\r\n    <row c=\"NT1-5Q\" ci=\"20000745\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TDP-T3\" syi=\"30005089\"/>\r\n    <row c=\"NT1-5Q\" ci=\"20000745\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-HGGJ\" syi=\"30005090\"/>\r\n    <row c=\"NT1-5Q\" ci=\"20000745\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OJT-J3\" syi=\"30005091\"/>\r\n    <row c=\"NT1-5Q\" ci=\"20000745\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A9-F18\" syi=\"30005092\"/>\r\n    <row c=\"NT1-5Q\" ci=\"20000745\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"DE-IHK\" syi=\"30005093\"/>\r\n    <row c=\"O5PO-O\" ci=\"20000746\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AY9X-Q\" syi=\"30005094\"/>\r\n    <row c=\"O5PO-O\" ci=\"20000746\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XU7-CH\" syi=\"30005095\"/>\r\n    <row c=\"O5PO-O\" ci=\"20000746\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2V-ZHM\" syi=\"30005096\"/>\r\n    <row c=\"O5PO-O\" ci=\"20000746\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-3K7C\" syi=\"30005097\"/>\r\n    <row c=\"O5PO-O\" ci=\"20000746\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AK-L0Z\" syi=\"30005098\"/>\r\n    <row c=\"O5PO-O\" ci=\"20000746\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R-AG7W\" syi=\"30005099\"/>\r\n    <row c=\"B-MQ0Y\" ci=\"20000747\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"E-WMT7\" syi=\"30005100\"/>\r\n    <row c=\"B-MQ0Y\" ci=\"20000747\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"FLK-LJ\" syi=\"30005101\"/>\r\n    <row c=\"B-MQ0Y\" ci=\"20000747\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0FG-KS\" syi=\"30005102\"/>\r\n    <row c=\"B-MQ0Y\" ci=\"20000747\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-5WYK\" syi=\"30005103\"/>\r\n    <row c=\"B-MQ0Y\" ci=\"20000747\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EF-QZK\" syi=\"30005104\"/>\r\n    <row c=\"B-MQ0Y\" ci=\"20000747\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RZ3O-K\" syi=\"30005105\"/>\r\n    <row c=\"9BGY-6\" ci=\"20000748\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"LW-YEW\" syi=\"30005106\"/>\r\n    <row c=\"9BGY-6\" ci=\"20000748\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"HB-KSF\" syi=\"30005107\"/>\r\n    <row c=\"9BGY-6\" ci=\"20000748\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"EH2I-P\" syi=\"30005108\"/>\r\n    <row c=\"9BGY-6\" ci=\"20000748\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OP7-BP\" syi=\"30005109\"/>\r\n    <row c=\"9BGY-6\" ci=\"20000748\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5ZU-VG\" syi=\"30005110\"/>\r\n    <row c=\"9BGY-6\" ci=\"20000748\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6-1T6Z\" syi=\"30005111\"/>\r\n    <row c=\"9BGY-6\" ci=\"20000748\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"R-AYGT\" syi=\"30005112\"/>\r\n    <row c=\"9BGY-6\" ci=\"20000748\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"G-GRSZ\" syi=\"30005113\"/>\r\n    <row c=\"9BGY-6\" ci=\"20000748\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6-8QLA\" syi=\"30005114\"/>\r\n    <row c=\"9BGY-6\" ci=\"20000748\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5T-A3D\" syi=\"30005115\"/>\r\n    <row c=\"X7-FTR\" ci=\"20000749\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-FOYG\" syi=\"30005116\"/>\r\n    <row c=\"X7-FTR\" ci=\"20000749\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"1A8-6G\" syi=\"30005117\"/>\r\n    <row c=\"X7-FTR\" ci=\"20000749\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PE-SAM\" syi=\"30005118\"/>\r\n    <row c=\"X7-FTR\" ci=\"20000749\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RY-2FX\" syi=\"30005119\"/>\r\n    <row c=\"X7-FTR\" ci=\"20000749\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"K-3PQW\" syi=\"30005120\"/>\r\n    <row c=\"X7-FTR\" ci=\"20000749\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-M1TY\" syi=\"30005121\"/>\r\n    <row c=\"X7-FTR\" ci=\"20000749\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C6CG-W\" syi=\"30005122\"/>\r\n    <row c=\"4LEZ-6\" ci=\"20000750\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"H-29TM\" syi=\"30005123\"/>\r\n    <row c=\"4LEZ-6\" ci=\"20000750\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"KOI8-Z\" syi=\"30005124\"/>\r\n    <row c=\"4LEZ-6\" ci=\"20000750\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"D-QJR9\" syi=\"30005125\"/>\r\n    <row c=\"4LEZ-6\" ci=\"20000750\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U4-V3J\" syi=\"30005126\"/>\r\n    <row c=\"4LEZ-6\" ci=\"20000750\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B9N2-2\" syi=\"30005127\"/>\r\n    <row c=\"4LEZ-6\" ci=\"20000750\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"6Q4-X6\" syi=\"30005128\"/>\r\n    <row c=\"VT-LHB\" ci=\"20000751\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"BEG-RL\" syi=\"30005129\"/>\r\n    <row c=\"VT-LHB\" ci=\"20000751\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"972C-1\" syi=\"30005130\"/>\r\n    <row c=\"VT-LHB\" ci=\"20000751\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U-W436\" syi=\"30005131\"/>\r\n    <row c=\"VT-LHB\" ci=\"20000751\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Z-ENUD\" syi=\"30005132\"/>\r\n    <row c=\"VT-LHB\" ci=\"20000751\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MJ-5F9\" syi=\"30005133\"/>\r\n    <row c=\"VT-LHB\" ci=\"20000751\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M5NO-B\" syi=\"30005134\"/>\r\n    <row c=\"VT-LHB\" ci=\"20000751\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JZ-UQC\" syi=\"30005135\"/>\r\n    <row c=\"VT-LHB\" ci=\"20000751\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JPEZ-R\" syi=\"30005136\"/>\r\n    <row c=\"VT-LHB\" ci=\"20000751\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9WVY-F\" syi=\"30005137\"/>\r\n    <row c=\"VT-LHB\" ci=\"20000751\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7M4-4C\" syi=\"30005138\"/>\r\n    <row c=\"BXT7-V\" ci=\"20000752\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2-YO2K\" syi=\"30005139\"/>\r\n    <row c=\"BXT7-V\" ci=\"20000752\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M-SG47\" syi=\"30005140\"/>\r\n    <row c=\"BXT7-V\" ci=\"20000752\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SR-10Z\" syi=\"30005141\"/>\r\n    <row c=\"BXT7-V\" ci=\"20000752\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W-KXEX\" syi=\"30005142\"/>\r\n    <row c=\"BXT7-V\" ci=\"20000752\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"TAL1-3\" syi=\"30005143\"/>\r\n    <row c=\"BXT7-V\" ci=\"20000752\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QHY-RU\" syi=\"30005144\"/>\r\n    <row c=\"L7-RDZ\" ci=\"20000753\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7AH-SF\" syi=\"30005145\"/>\r\n    <row c=\"L7-RDZ\" ci=\"20000753\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7MMJ-3\" syi=\"30005146\"/>\r\n    <row c=\"L7-RDZ\" ci=\"20000753\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PVF-N9\" syi=\"30005147\"/>\r\n    <row c=\"L7-RDZ\" ci=\"20000753\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-EXU9\" syi=\"30005148\"/>\r\n    <row c=\"L7-RDZ\" ci=\"20000753\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4-1ECP\" syi=\"30005149\"/>\r\n    <row c=\"L7-RDZ\" ci=\"20000753\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"UYOC-1\" syi=\"30005150\"/>\r\n    <row c=\"L7-RDZ\" ci=\"20000753\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5-U12M\" syi=\"30005151\"/>\r\n    <row c=\"TY0-Q2\" ci=\"20000754\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"5V-Q1R\" syi=\"30005152\"/>\r\n    <row c=\"TY0-Q2\" ci=\"20000754\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"M4-KX5\" syi=\"30005153\"/>\r\n    <row c=\"TY0-Q2\" ci=\"20000754\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4F9Y-3\" syi=\"30005154\"/>\r\n    <row c=\"TY0-Q2\" ci=\"20000754\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MS-RXH\" syi=\"30005155\"/>\r\n    <row c=\"TY0-Q2\" ci=\"20000754\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"U-3FKL\" syi=\"30005156\"/>\r\n    <row c=\"TY0-Q2\" ci=\"20000754\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0XN-SK\" syi=\"30005157\"/>\r\n    <row c=\"WXB-RY\" ci=\"20000755\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J9A-BH\" syi=\"30005158\"/>\r\n    <row c=\"WXB-RY\" ci=\"20000755\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"4F6-VZ\" syi=\"30005159\"/>\r\n    <row c=\"WXB-RY\" ci=\"20000755\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"B-7LYC\" syi=\"30005160\"/>\r\n    <row c=\"WXB-RY\" ci=\"20000755\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"JM0A-4\" syi=\"30005161\"/>\r\n    <row c=\"WXB-RY\" ci=\"20000755\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PT-2KR\" syi=\"30005162\"/>\r\n    <row c=\"WXB-RY\" ci=\"20000755\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L-POLO\" syi=\"30005163\"/>\r\n    <row c=\"WXB-RY\" ci=\"20000755\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"8B-A4E\" syi=\"30005164\"/>\r\n    <row c=\"WXB-RY\" ci=\"20000755\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"49V-E4\" syi=\"30005165\"/>\r\n    <row c=\"WXB-RY\" ci=\"20000755\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"3LL-O0\" syi=\"30005166\"/>\r\n    <row c=\"WXB-RY\" ci=\"20000755\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"A1F-22\" syi=\"30005167\"/>\r\n    <row c=\"Q0-4FU\" ci=\"20000756\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9-ZA4Z\" syi=\"30005168\"/>\r\n    <row c=\"Q0-4FU\" ci=\"20000756\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"IU-E9T\" syi=\"30005169\"/>\r\n    <row c=\"Q0-4FU\" ci=\"20000756\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"NGM-OK\" syi=\"30005170\"/>\r\n    <row c=\"Q0-4FU\" ci=\"20000756\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"O-QKSM\" syi=\"30005171\"/>\r\n    <row c=\"Q0-4FU\" ci=\"20000756\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"QKQ3-L\" syi=\"30005172\"/>\r\n    <row c=\"Q0-4FU\" ci=\"20000756\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"VWES-Y\" syi=\"30005173\"/>\r\n    <row c=\"LWMW-6\" ci=\"20000757\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"SY-OLX\" syi=\"30005174\"/>\r\n    <row c=\"LWMW-6\" ci=\"20000757\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"XY-ZCI\" syi=\"30005175\"/>\r\n    <row c=\"LWMW-6\" ci=\"20000757\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"7JRA-G\" syi=\"30005176\"/>\r\n    <row c=\"LWMW-6\" ci=\"20000757\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"W-CSFY\" syi=\"30005177\"/>\r\n    <row c=\"LWMW-6\" ci=\"20000757\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PFV-ZH\" syi=\"30005178\"/>\r\n    <row c=\"LWMW-6\" ci=\"20000757\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"L5Y4-M\" syi=\"30005179\"/>\r\n    <row c=\"S0X-O4\" ci=\"20000758\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"9IZ-HU\" syi=\"30005180\"/>\r\n    <row c=\"S0X-O4\" ci=\"20000758\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"OBV-YC\" syi=\"30005181\"/>\r\n    <row c=\"S0X-O4\" ci=\"20000758\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"2AUL-X\" syi=\"30005182\"/>\r\n    <row c=\"S0X-O4\" ci=\"20000758\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-HQWV\" syi=\"30005183\"/>\r\n    <row c=\"S0X-O4\" ci=\"20000758\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F-A3TR\" syi=\"30005184\"/>\r\n    <row c=\"S0X-O4\" ci=\"20000758\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"PA-ALN\" syi=\"30005185\"/>\r\n    <row c=\"TPB-KG\" ci=\"20000759\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"01B-88\" syi=\"30005186\"/>\r\n    <row c=\"TPB-KG\" ci=\"20000759\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"F18-AY\" syi=\"30005187\"/>\r\n    <row c=\"TPB-KG\" ci=\"20000759\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"RZ8A-P\" syi=\"30005188\"/>\r\n    <row c=\"TPB-KG\" ci=\"20000759\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"MTO2-2\" syi=\"30005189\"/>\r\n    <row c=\"TPB-KG\" ci=\"20000759\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"C3I-D5\" syi=\"30005190\"/>\r\n    <row c=\"TPB-KG\" ci=\"20000759\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"\" se=\"0.0\" si=\"0\" sy=\"0-U2M4\" syi=\"30005191\"/>\r\n    <row c=\"Nazdirer\" ci=\"20000760\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Shera\" syi=\"30005192\"/>\r\n    <row c=\"Nazdirer\" ci=\"20000760\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Lor\" syi=\"30005193\"/>\r\n    <row c=\"Nazdirer\" ci=\"20000760\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Cleyd\" syi=\"30005194\"/>\r\n    <row c=\"Nazdirer\" ci=\"20000760\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Vecamia\" syi=\"30005195\"/>\r\n    <row c=\"Nazdirer\" ci=\"20000760\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Ahbazon\" syi=\"30005196\"/>\r\n    <row c=\"Nazdirer\" ci=\"20000760\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Atreen\" syi=\"30005197\"/>\r\n    <row c=\"Sanctum\" ci=\"20000761\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Pakhshi\" syi=\"30005198\"/>\r\n    <row c=\"Sanctum\" ci=\"20000761\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Tar\" syi=\"30005199\"/>\r\n    <row c=\"Sanctum\" ci=\"20000761\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Tekaima\" syi=\"30005200\"/>\r\n    <row c=\"Sanctum\" ci=\"20000761\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Manarq\" syi=\"30005201\"/>\r\n    <row c=\"Sanctum\" ci=\"20000761\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Emsar\" syi=\"30005202\"/>\r\n    <row c=\"Sanctum\" ci=\"20000761\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Ourapheh\" syi=\"30005203\"/>\r\n    <row c=\"Sanctum\" ci=\"20000761\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Yulai\" syi=\"30005204\"/>\r\n    <row c=\"Sanctum\" ci=\"20000761\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Tarta\" syi=\"30005205\"/>\r\n    <row c=\"Sanctum\" ci=\"20000761\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Kemerk\" syi=\"30005206\"/>\r\n    <row c=\"Ashela\" ci=\"20000762\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Nardiarang\" syi=\"30005207\"/>\r\n    <row c=\"Ashela\" ci=\"20000762\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Ziasad\" syi=\"30005208\"/>\r\n    <row c=\"Ashela\" ci=\"20000762\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Sibe\" syi=\"30005209\"/>\r\n    <row c=\"Ashela\" ci=\"20000762\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Makhwasan\" syi=\"30005210\"/>\r\n    <row c=\"Ashela\" ci=\"20000762\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Zarer\" syi=\"30005211\"/>\r\n    <row c=\"Ashela\" ci=\"20000762\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Toon\" syi=\"30005212\"/>\r\n    <row c=\"Ashela\" ci=\"20000762\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Hesarid\" syi=\"30005213\"/>\r\n    <row c=\"Ekrin\" ci=\"20000763\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Ashokon\" syi=\"30005214\"/>\r\n    <row c=\"Ekrin\" ci=\"20000763\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Avyuh\" syi=\"30005215\"/>\r\n    <row c=\"Ekrin\" ci=\"20000763\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Apanake\" syi=\"30005216\"/>\r\n    <row c=\"Ekrin\" ci=\"20000763\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Sheroo\" syi=\"30005217\"/>\r\n    <row c=\"Ekrin\" ci=\"20000763\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Sosh\" syi=\"30005218\"/>\r\n    <row c=\"Ekrin\" ci=\"20000763\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Sigga\" syi=\"30005219\"/>\r\n    <row c=\"Ekrin\" ci=\"20000763\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Keseya\" syi=\"30005220\"/>\r\n    <row c=\"Mih\" ci=\"20000764\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Zoohen\" syi=\"30005221\"/>\r\n    <row c=\"Mih\" ci=\"20000764\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Serren\" syi=\"30005222\"/>\r\n    <row c=\"Mih\" ci=\"20000764\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Hadji\" syi=\"30005223\"/>\r\n    <row c=\"Mih\" ci=\"20000764\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Assez\" syi=\"30005224\"/>\r\n    <row c=\"Mih\" ci=\"20000764\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Alal\" syi=\"30005225\"/>\r\n    <row c=\"Mih\" ci=\"20000764\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Dom-Aphis\" syi=\"30005226\"/>\r\n    <row c=\"Mih\" ci=\"20000764\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Iderion\" syi=\"30005227\"/>\r\n    <row c=\"Mih\" ci=\"20000764\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Chamja\" syi=\"30005228\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Diaderi\" syi=\"30005229\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Manatirid\" syi=\"30005230\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Pashanai\" syi=\"30005231\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Pamah\" syi=\"30005232\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Leran\" syi=\"30005233\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Beke\" syi=\"30005234\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Malma\" syi=\"30005235\"/>\r\n    <row c=\"Meli\" ci=\"20000766\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Noranim\" syi=\"30005236\"/>\r\n    <row c=\"Meli\" ci=\"20000766\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Chej\" syi=\"30005237\"/>\r\n    <row c=\"Meli\" ci=\"20000766\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Menai\" syi=\"30005238\"/>\r\n    <row c=\"Meli\" ci=\"20000766\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Aring\" syi=\"30005239\"/>\r\n    <row c=\"Meli\" ci=\"20000766\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Gayar\" syi=\"30005240\"/>\r\n    <row c=\"Meli\" ci=\"20000766\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Petidu\" syi=\"30005241\"/>\r\n    <row c=\"Meli\" ci=\"20000766\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Naka\" syi=\"30005242\"/>\r\n    <row c=\"Reya\" ci=\"20000767\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Madomi\" syi=\"30005243\"/>\r\n    <row c=\"Reya\" ci=\"20000767\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Gergish\" syi=\"30005244\"/>\r\n    <row c=\"Reya\" ci=\"20000767\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Tahli\" syi=\"30005245\"/>\r\n    <row c=\"Reya\" ci=\"20000767\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Imya\" syi=\"30005246\"/>\r\n    <row c=\"Reya\" ci=\"20000767\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Kobam\" syi=\"30005247\"/>\r\n    <row c=\"Reya\" ci=\"20000767\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Hirizan\" syi=\"30005248\"/>\r\n    <row c=\"Charak\" ci=\"20000768\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Anyed\" syi=\"30005249\"/>\r\n    <row c=\"Charak\" ci=\"20000768\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Habu\" syi=\"30005250\"/>\r\n    <row c=\"Charak\" ci=\"20000768\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Asanot\" syi=\"30005251\"/>\r\n    <row c=\"Charak\" ci=\"20000768\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Anzalaisio\" syi=\"30005252\"/>\r\n    <row c=\"Charak\" ci=\"20000768\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Chiga\" syi=\"30005253\"/>\r\n    <row c=\"Charak\" ci=\"20000768\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Abhan\" syi=\"30005254\"/>\r\n    <row c=\"Makh\" ci=\"20000769\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Saphthar\" syi=\"30005255\"/>\r\n    <row c=\"Makh\" ci=\"20000769\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Itrin\" syi=\"30005256\"/>\r\n    <row c=\"Makh\" ci=\"20000769\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Bantish\" syi=\"30005257\"/>\r\n    <row c=\"Makh\" ci=\"20000769\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Korridi\" syi=\"30005258\"/>\r\n    <row c=\"Makh\" ci=\"20000769\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Lela\" syi=\"30005259\"/>\r\n    <row c=\"Makh\" ci=\"20000769\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Keri\" syi=\"30005260\"/>\r\n    <row c=\"Monalaz\" ci=\"20000770\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Antem\" syi=\"30005261\"/>\r\n    <row c=\"Monalaz\" ci=\"20000770\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Djimame\" syi=\"30005262\"/>\r\n    <row c=\"Monalaz\" ci=\"20000770\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Mozzidit\" syi=\"30005263\"/>\r\n    <row c=\"Monalaz\" ci=\"20000770\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Angur\" syi=\"30005264\"/>\r\n    <row c=\"Monalaz\" ci=\"20000770\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Hangond\" syi=\"30005265\"/>\r\n    <row c=\"Monalaz\" ci=\"20000770\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Access\" syi=\"30005266\"/>\r\n    <row c=\"Aven\" ci=\"20000771\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Bherdasopt\" syi=\"30005267\"/>\r\n    <row c=\"Aven\" ci=\"20000771\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Gonditsa\" syi=\"30005268\"/>\r\n    <row c=\"Aven\" ci=\"20000771\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Simela\" syi=\"30005269\"/>\r\n    <row c=\"Aven\" ci=\"20000771\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Shalne\" syi=\"30005270\"/>\r\n    <row c=\"Aven\" ci=\"20000771\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Shapisin\" syi=\"30005271\"/>\r\n    <row c=\"Aven\" ci=\"20000771\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Olin\" syi=\"30005272\"/>\r\n    <row c=\"Aven\" ci=\"20000771\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Galnafsad\" syi=\"30005273\"/>\r\n    <row c=\"Aven\" ci=\"20000771\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Otakod\" syi=\"30005274\"/>\r\n    <row c=\"Kihkounad\" ci=\"20000772\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Azedi\" syi=\"30005275\"/>\r\n    <row c=\"Kihkounad\" ci=\"20000772\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Sharza\" syi=\"30005276\"/>\r\n    <row c=\"Kihkounad\" ci=\"20000772\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Pirna\" syi=\"30005277\"/>\r\n    <row c=\"Kihkounad\" ci=\"20000772\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Seshi\" syi=\"30005278\"/>\r\n    <row c=\"Kihkounad\" ci=\"20000772\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Anara\" syi=\"30005279\"/>\r\n    <row c=\"Kihkounad\" ci=\"20000772\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Partod\" syi=\"30005280\"/>\r\n    <row c=\"EVE\" ci=\"20000773\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Exit\" syi=\"30005281\"/>\r\n    <row c=\"EVE\" ci=\"20000773\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Gateway\" syi=\"30005282\"/>\r\n    <row c=\"EVE\" ci=\"20000773\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Central Point\" syi=\"30005283\"/>\r\n    <row c=\"EVE\" ci=\"20000773\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Promised Land\" syi=\"30005284\"/>\r\n    <row c=\"EVE\" ci=\"20000773\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Dead End\" syi=\"30005285\"/>\r\n    <row c=\"EVE\" ci=\"20000773\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"New Eden\" syi=\"30005286\"/>\r\n    <row c=\"EVE\" ci=\"20000773\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Canard\" syi=\"30005287\"/>\r\n    <row c=\"Fabas\" ci=\"20000774\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Girani-Fa\" syi=\"30005288\"/>\r\n    <row c=\"Fabas\" ci=\"20000774\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Nasreri\" syi=\"30005289\"/>\r\n    <row c=\"Fabas\" ci=\"20000774\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Heorah\" syi=\"30005290\"/>\r\n    <row c=\"Fabas\" ci=\"20000774\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Ebasez\" syi=\"30005291\"/>\r\n    <row c=\"Fabas\" ci=\"20000774\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Agal\" syi=\"30005292\"/>\r\n    <row c=\"Fabas\" ci=\"20000774\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Doza\" syi=\"30005293\"/>\r\n    <row c=\"Fabas\" ci=\"20000774\" r=\"Genesis\" ri=\"10000067\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Bania\" syi=\"30005294\"/>\r\n    <row c=\"Woenckee\" ci=\"20000775\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Murethand\" syi=\"30005295\"/>\r\n    <row c=\"Woenckee\" ci=\"20000775\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Melmaniel\" syi=\"30005296\"/>\r\n    <row c=\"Woenckee\" ci=\"20000775\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Ouelletta\" syi=\"30005297\"/>\r\n    <row c=\"Woenckee\" ci=\"20000775\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Costolle\" syi=\"30005298\"/>\r\n    <row c=\"Woenckee\" ci=\"20000775\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Muetralle\" syi=\"30005299\"/>\r\n    <row c=\"Woenckee\" ci=\"20000775\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Loes\" syi=\"30005300\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Tourier\" syi=\"30005301\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Alenia\" syi=\"30005302\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Merolles\" syi=\"30005303\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Alentene\" syi=\"30005304\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Cistuvaert\" syi=\"30005305\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Vaere\" syi=\"30005306\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Aidart\" syi=\"30005307\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Jufvitte\" syi=\"30005308\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Ansalle\" syi=\"30005309\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Scheenins\" syi=\"30005310\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Amygnon\" syi=\"30005311\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Gisleres\" syi=\"30005312\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Ellmay\" syi=\"30005313\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Theruesse\" syi=\"30005314\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Eletta\" syi=\"30005315\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Luse\" syi=\"30005316\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Ekuenbiron\" syi=\"30005317\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Vay\" syi=\"30005318\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Raneilles\" syi=\"30005319\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Hevrice\" syi=\"30005320\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Jovainnon\" syi=\"30005321\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Scolluzer\" syi=\"30005322\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Sortet\" syi=\"30005323\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Claulenne\" syi=\"30005324\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Masalle\" syi=\"30005325\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Annelle\" syi=\"30005326\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Chesiette\" syi=\"30005327\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Reblier\" syi=\"30005328\"/>\r\n    <row c=\"Aideron\" ci=\"20000780\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Amoderia\" syi=\"30005329\"/>\r\n    <row c=\"Aideron\" ci=\"20000780\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Arraron\" syi=\"30005330\"/>\r\n    <row c=\"Aideron\" ci=\"20000780\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Chantrousse\" syi=\"30005331\"/>\r\n    <row c=\"Aideron\" ci=\"20000780\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Osmomonne\" syi=\"30005332\"/>\r\n    <row c=\"Aideron\" ci=\"20000780\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Stou\" syi=\"30005333\"/>\r\n    <row c=\"Aideron\" ci=\"20000780\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Tierijev\" syi=\"30005334\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Sakenta\" syi=\"30010141\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Jouvulen\" syi=\"30011392\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Akiainavas\" syi=\"30011407\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Kerepa\" syi=\"30011672\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Malukker\" syi=\"30012505\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Hadaugago\" syi=\"30012547\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Odotte\" syi=\"30012715\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Abrat\" syi=\"30013410\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Deepari\" syi=\"30013489\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Couster\" syi=\"30014971\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Akhwa\" syi=\"30015042\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Adallier\" syi=\"30015305\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Senda\" syi=\"30020141\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Kappas\" syi=\"30021392\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Aokannitoh\" syi=\"30021407\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Pasha\" syi=\"30021672\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Orgron\" syi=\"30022505\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Krilmokenur\" syi=\"30022547\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Oirtlair\" syi=\"30022715\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Embod\" syi=\"30023410\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Fora\" syi=\"30023489\"/>\r\n    <row c=\"Eustron\" ci=\"20000735\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Hecarrin\" syi=\"30024971\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Annad\" syi=\"30025042\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Channace\" syi=\"30025305\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Uitra\" syi=\"30030141\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Komo\" syi=\"30031392\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Hitanishio\" syi=\"30031407\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Safilbab\" syi=\"30031672\"/>\r\n    <row c=\"Osta\" ci=\"20000369\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Todeko\" syi=\"30032505\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Larkugei\" syi=\"30032547\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Olelon\" syi=\"30032715\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Erego\" syi=\"30033410\"/>\r\n    <row c=\"Maddam\" ci=\"20000514\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Hanan\" syi=\"30033489\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Henebene\" syi=\"30034971\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Chaktaren\" syi=\"30035042\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Clacille\" syi=\"30035305\"/>\r\n    <row c=\"Krai Svarog\" ci=\"20000788\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Urhinichi\" syi=\"30040141\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Laah\" syi=\"30041392\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Ichinumi\" syi=\"30041407\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Seitam\" syi=\"30041672\"/>\r\n    <row c=\"Odengsolf\" ci=\"20000370\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Usteli\" syi=\"30042505\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Loguttur\" syi=\"30042547\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Trossere\" syi=\"30042715\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Fildar\" syi=\"30043410\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Horir\" syi=\"30043489\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Mesokel\" syi=\"30044971\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"\" se=\"0.9\" si=\"0\" sy=\"Conoban\" syi=\"30045042\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"\" se=\"0.8\" si=\"0\" sy=\"Clellinon\" syi=\"30045305\"/>\r\n    <row c=\"Urpiken\" ci=\"20000781\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Hykanima\" syi=\"30045306\"/>\r\n    <row c=\"Urpiken\" ci=\"20000781\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Okagaiken\" syi=\"30045307\"/>\r\n    <row c=\"Urpiken\" ci=\"20000781\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Kehjari\" syi=\"30045308\"/>\r\n    <row c=\"Urpiken\" ci=\"20000781\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Villasen\" syi=\"30045309\"/>\r\n    <row c=\"Urpiken\" ci=\"20000781\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Sarenemi\" syi=\"30045310\"/>\r\n    <row c=\"Urpiken\" ci=\"20000781\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Ashitsu\" syi=\"30045311\"/>\r\n    <row c=\"Urpiken\" ci=\"20000781\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Korasen\" syi=\"30045312\"/>\r\n    <row c=\"Urpiken\" ci=\"20000781\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.1\" si=\"0\" sy=\"Ienakkamon\" syi=\"30045313\"/>\r\n    <row c=\"Inolari\" ci=\"20000783\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Kinakka\" syi=\"30045314\"/>\r\n    <row c=\"Inolari\" ci=\"20000783\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Raihbaka\" syi=\"30045315\"/>\r\n    <row c=\"Inolari\" ci=\"20000783\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Innia\" syi=\"30045316\"/>\r\n    <row c=\"Inolari\" ci=\"20000783\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Iralaja\" syi=\"30045317\"/>\r\n    <row c=\"Inolari\" ci=\"20000783\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Martoh\" syi=\"30045318\"/>\r\n    <row c=\"Inolari\" ci=\"20000783\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Eha\" syi=\"30045319\"/>\r\n    <row c=\"Inolari\" ci=\"20000783\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Pavanakka\" syi=\"30045320\"/>\r\n    <row c=\"Aokinen\" ci=\"20000784\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Uchomida\" syi=\"30045321\"/>\r\n    <row c=\"Aokinen\" ci=\"20000784\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.7\" si=\"0\" sy=\"Samanuni\" syi=\"30045322\"/>\r\n    <row c=\"Aokinen\" ci=\"20000784\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Astoh\" syi=\"30045323\"/>\r\n    <row c=\"Aokinen\" ci=\"20000784\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.6\" si=\"0\" sy=\"Onnamon\" syi=\"30045324\"/>\r\n    <row c=\"Aokinen\" ci=\"20000784\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Rohamaa\" syi=\"30045325\"/>\r\n    <row c=\"Aokinen\" ci=\"20000784\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Uuhulanen\" syi=\"30045326\"/>\r\n    <row c=\"Aokinen\" ci=\"20000784\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.5\" si=\"0\" sy=\"Tsuruma\" syi=\"30045327\"/>\r\n    <row c=\"Krai Svarog\" ci=\"20000788\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Ahtila\" syi=\"30045328\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Ichoriya\" syi=\"30045329\"/>\r\n    <row c=\"Kurala\" ci=\"20000786\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Okkamon\" syi=\"30045330\"/>\r\n    <row c=\"Kurala\" ci=\"20000786\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Vaaralen\" syi=\"30045331\"/>\r\n    <row c=\"Kurala\" ci=\"20000786\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Asakai\" syi=\"30045332\"/>\r\n    <row c=\"Kurala\" ci=\"20000786\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Prism\" syi=\"30045333\"/>\r\n    <row c=\"Kurala\" ci=\"20000786\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Mushikegi\" syi=\"30045334\"/>\r\n    <row c=\"Kurala\" ci=\"20000786\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Teskanen\" syi=\"30045335\"/>\r\n    <row c=\"Kurala\" ci=\"20000786\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Elunala\" syi=\"30045336\"/>\r\n    <row c=\"Kurala\" ci=\"20000786\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Ikoskio\" syi=\"30045337\"/>\r\n    <row c=\"Ishaga\" ci=\"20000785\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Hikkoken\" syi=\"30045338\"/>\r\n    <row c=\"Ishaga\" ci=\"20000785\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Enaluri\" syi=\"30045339\"/>\r\n    <row c=\"Ishaga\" ci=\"20000785\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Aivonen\" syi=\"30045340\"/>\r\n    <row c=\"Ishaga\" ci=\"20000785\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Hallanen\" syi=\"30045341\"/>\r\n    <row c=\"Ishaga\" ci=\"20000785\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Akidagi\" syi=\"30045342\"/>\r\n    <row c=\"Ishaga\" ci=\"20000785\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.4\" si=\"0\" sy=\"Immuri\" syi=\"30045343\"/>\r\n    <row c=\"Ishaga\" ci=\"20000785\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Nennamaila\" syi=\"30045344\"/>\r\n    <row c=\"Okakuola\" ci=\"20000782\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Hirri\" syi=\"30045345\"/>\r\n    <row c=\"Okakuola\" ci=\"20000782\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Kedama\" syi=\"30045346\"/>\r\n    <row c=\"Okakuola\" ci=\"20000782\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Oinasiken\" syi=\"30045347\"/>\r\n    <row c=\"Okakuola\" ci=\"20000782\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Notoras\" syi=\"30045348\"/>\r\n    <row c=\"Okakuola\" ci=\"20000782\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Rakapas\" syi=\"30045349\"/>\r\n    <row c=\"Okakuola\" ci=\"20000782\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Teimo\" syi=\"30045350\"/>\r\n    <row c=\"Okakuola\" ci=\"20000782\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Iwisoda\" syi=\"30045351\"/>\r\n    <row c=\"Okakuola\" ci=\"20000782\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.3\" si=\"0\" sy=\"Nisuwa\" syi=\"30045352\"/>\r\n    <row c=\"Okakuola\" ci=\"20000782\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Pynekastoh\" syi=\"30045353\"/>\r\n    <row c=\"Okakuola\" ci=\"20000782\" r=\"Black Rise\" ri=\"10000069\" s=\"\" se=\"0.2\" si=\"0\" sy=\"Reitsato\" syi=\"30045354\"/>\r\n    <row c=\"Duzna Kah\" ci=\"20010000\" r=\"Yasna Zakh\" ri=\"10001000\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Zarzakh\" syi=\"30100000\"/>\r\n    <row c=\"K-C00334\" ci=\"21000334\" r=\"K-R00033\" ri=\"11000033\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Sentinel MZ\" syi=\"31000001\"/>\r\n    <row c=\"K-C00334\" ci=\"21000334\" r=\"K-R00033\" ri=\"11000033\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Liberated Barbican\" syi=\"31000002\"/>\r\n    <row c=\"K-C00334\" ci=\"21000334\" r=\"K-R00033\" ri=\"11000033\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Sanctified Vidette\" syi=\"31000003\"/>\r\n    <row c=\"K-C00334\" ci=\"21000334\" r=\"K-R00033\" ri=\"11000033\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Conflux Eyrie\" syi=\"31000004\"/>\r\n    <row c=\"G-C00324\" ci=\"21000324\" r=\"G-R00031\" ri=\"11000031\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Thera\" syi=\"31000005\"/>\r\n    <row c=\"K-C00334\" ci=\"21000334\" r=\"K-R00033\" ri=\"11000033\" s=\"\" se=\"0.0\" si=\"0\" sy=\"Azdaja Redoubt\" syi=\"31000006\"/>\r\n    <row c=\"A-C00311\" ci=\"21000311\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105443\" syi=\"31000007\"/>\r\n    <row c=\"A-C00311\" ci=\"21000311\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100744\" syi=\"31000008\"/>\r\n    <row c=\"A-C00311\" ci=\"21000311\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J225046\" syi=\"31000009\"/>\r\n    <row c=\"A-C00311\" ci=\"21000311\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160837\" syi=\"31000010\"/>\r\n    <row c=\"A-C00311\" ci=\"21000311\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114700\" syi=\"31000011\"/>\r\n    <row c=\"A-C00311\" ci=\"21000311\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134914\" syi=\"31000012\"/>\r\n    <row c=\"A-C00312\" ci=\"21000312\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102655\" syi=\"31000013\"/>\r\n    <row c=\"A-C00312\" ci=\"21000312\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134312\" syi=\"31000014\"/>\r\n    <row c=\"A-C00312\" ci=\"21000312\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J205818\" syi=\"31000015\"/>\r\n    <row c=\"A-C00312\" ci=\"21000312\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113434\" syi=\"31000016\"/>\r\n    <row c=\"A-C00312\" ci=\"21000312\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105711\" syi=\"31000017\"/>\r\n    <row c=\"A-C00312\" ci=\"21000312\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164218\" syi=\"31000018\"/>\r\n    <row c=\"A-C00312\" ci=\"21000312\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154535\" syi=\"31000019\"/>\r\n    <row c=\"A-C00312\" ci=\"21000312\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111301\" syi=\"31000020\"/>\r\n    <row c=\"A-C00312\" ci=\"21000312\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135038\" syi=\"31000021\"/>\r\n    <row c=\"A-C00312\" ci=\"21000312\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121358\" syi=\"31000022\"/>\r\n    <row c=\"A-C00312\" ci=\"21000312\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J222914\" syi=\"31000023\"/>\r\n    <row c=\"A-C00312\" ci=\"21000312\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155429\" syi=\"31000024\"/>\r\n    <row c=\"A-C00313\" ci=\"21000313\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J204640\" syi=\"31000025\"/>\r\n    <row c=\"A-C00313\" ci=\"21000313\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162604\" syi=\"31000026\"/>\r\n    <row c=\"A-C00313\" ci=\"21000313\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164807\" syi=\"31000027\"/>\r\n    <row c=\"A-C00313\" ci=\"21000313\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J233317\" syi=\"31000028\"/>\r\n    <row c=\"A-C00313\" ci=\"21000313\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155023\" syi=\"31000029\"/>\r\n    <row c=\"A-C00313\" ci=\"21000313\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112628\" syi=\"31000030\"/>\r\n    <row c=\"A-C00313\" ci=\"21000313\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153001\" syi=\"31000031\"/>\r\n    <row c=\"A-C00313\" ci=\"21000313\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143204\" syi=\"31000032\"/>\r\n    <row c=\"A-C00313\" ci=\"21000313\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101729\" syi=\"31000033\"/>\r\n    <row c=\"A-C00313\" ci=\"21000313\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J221203\" syi=\"31000034\"/>\r\n    <row c=\"A-C00314\" ci=\"21000314\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125428\" syi=\"31000035\"/>\r\n    <row c=\"A-C00314\" ci=\"21000314\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131854\" syi=\"31000036\"/>\r\n    <row c=\"A-C00314\" ci=\"21000314\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160534\" syi=\"31000037\"/>\r\n    <row c=\"A-C00314\" ci=\"21000314\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144855\" syi=\"31000038\"/>\r\n    <row c=\"A-C00314\" ci=\"21000314\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101453\" syi=\"31000039\"/>\r\n    <row c=\"A-C00314\" ci=\"21000314\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144913\" syi=\"31000040\"/>\r\n    <row c=\"A-C00314\" ci=\"21000314\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144530\" syi=\"31000041\"/>\r\n    <row c=\"A-C00314\" ci=\"21000314\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135411\" syi=\"31000042\"/>\r\n    <row c=\"A-C00314\" ci=\"21000314\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125713\" syi=\"31000043\"/>\r\n    <row c=\"A-C00314\" ci=\"21000314\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105521\" syi=\"31000044\"/>\r\n    <row c=\"A-C00315\" ci=\"21000315\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J224324\" syi=\"31000045\"/>\r\n    <row c=\"A-C00315\" ci=\"21000315\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163203\" syi=\"31000046\"/>\r\n    <row c=\"A-C00315\" ci=\"21000315\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171818\" syi=\"31000047\"/>\r\n    <row c=\"A-C00315\" ci=\"21000315\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145337\" syi=\"31000048\"/>\r\n    <row c=\"A-C00315\" ci=\"21000315\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150131\" syi=\"31000049\"/>\r\n    <row c=\"A-C00315\" ci=\"21000315\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130842\" syi=\"31000050\"/>\r\n    <row c=\"A-C00315\" ci=\"21000315\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145406\" syi=\"31000051\"/>\r\n    <row c=\"A-C00315\" ci=\"21000315\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103404\" syi=\"31000052\"/>\r\n    <row c=\"A-C00315\" ci=\"21000315\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112124\" syi=\"31000053\"/>\r\n    <row c=\"A-C00316\" ci=\"21000316\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124926\" syi=\"31000054\"/>\r\n    <row c=\"A-C00316\" ci=\"21000316\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J232605\" syi=\"31000055\"/>\r\n    <row c=\"A-C00316\" ci=\"21000316\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144938\" syi=\"31000056\"/>\r\n    <row c=\"A-C00316\" ci=\"21000316\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J233828\" syi=\"31000057\"/>\r\n    <row c=\"A-C00316\" ci=\"21000316\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130714\" syi=\"31000058\"/>\r\n    <row c=\"A-C00316\" ci=\"21000316\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142701\" syi=\"31000059\"/>\r\n    <row c=\"A-C00316\" ci=\"21000316\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154226\" syi=\"31000060\"/>\r\n    <row c=\"A-C00316\" ci=\"21000316\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125843\" syi=\"31000061\"/>\r\n    <row c=\"A-C00316\" ci=\"21000316\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155459\" syi=\"31000062\"/>\r\n    <row c=\"A-C00317\" ci=\"21000317\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J225555\" syi=\"31000063\"/>\r\n    <row c=\"A-C00317\" ci=\"21000317\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115549\" syi=\"31000064\"/>\r\n    <row c=\"A-C00317\" ci=\"21000317\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140741\" syi=\"31000065\"/>\r\n    <row c=\"A-C00317\" ci=\"21000317\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104140\" syi=\"31000066\"/>\r\n    <row c=\"A-C00317\" ci=\"21000317\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101757\" syi=\"31000067\"/>\r\n    <row c=\"A-C00317\" ci=\"21000317\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100250\" syi=\"31000068\"/>\r\n    <row c=\"A-C00317\" ci=\"21000317\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113721\" syi=\"31000069\"/>\r\n    <row c=\"A-C00317\" ci=\"21000317\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105039\" syi=\"31000070\"/>\r\n    <row c=\"A-C00317\" ci=\"21000317\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J233550\" syi=\"31000071\"/>\r\n    <row c=\"A-C00318\" ci=\"21000318\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114033\" syi=\"31000072\"/>\r\n    <row c=\"A-C00318\" ci=\"21000318\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105936\" syi=\"31000073\"/>\r\n    <row c=\"A-C00318\" ci=\"21000318\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140121\" syi=\"31000074\"/>\r\n    <row c=\"A-C00318\" ci=\"21000318\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154029\" syi=\"31000075\"/>\r\n    <row c=\"A-C00318\" ci=\"21000318\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101336\" syi=\"31000076\"/>\r\n    <row c=\"A-C00318\" ci=\"21000318\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160039\" syi=\"31000077\"/>\r\n    <row c=\"A-C00318\" ci=\"21000318\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161257\" syi=\"31000078\"/>\r\n    <row c=\"A-C00318\" ci=\"21000318\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144303\" syi=\"31000079\"/>\r\n    <row c=\"A-C00318\" ci=\"21000318\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121131\" syi=\"31000080\"/>\r\n    <row c=\"A-C00318\" ci=\"21000318\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113653\" syi=\"31000081\"/>\r\n    <row c=\"A-C00318\" ci=\"21000318\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123454\" syi=\"31000082\"/>\r\n    <row c=\"A-C00318\" ci=\"21000318\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110750\" syi=\"31000083\"/>\r\n    <row c=\"A-C00319\" ci=\"21000319\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151106\" syi=\"31000084\"/>\r\n    <row c=\"A-C00319\" ci=\"21000319\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100040\" syi=\"31000085\"/>\r\n    <row c=\"A-C00319\" ci=\"21000319\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J223733\" syi=\"31000086\"/>\r\n    <row c=\"A-C00319\" ci=\"21000319\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110431\" syi=\"31000087\"/>\r\n    <row c=\"A-C00319\" ci=\"21000319\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134446\" syi=\"31000088\"/>\r\n    <row c=\"A-C00319\" ci=\"21000319\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143202\" syi=\"31000089\"/>\r\n    <row c=\"A-C00319\" ci=\"21000319\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J210436\" syi=\"31000090\"/>\r\n    <row c=\"A-C00319\" ci=\"21000319\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133030\" syi=\"31000091\"/>\r\n    <row c=\"A-C00319\" ci=\"21000319\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170645\" syi=\"31000092\"/>\r\n    <row c=\"A-C00320\" ci=\"21000320\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103151\" syi=\"31000093\"/>\r\n    <row c=\"A-C00320\" ci=\"21000320\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J222206\" syi=\"31000094\"/>\r\n    <row c=\"A-C00320\" ci=\"21000320\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130602\" syi=\"31000095\"/>\r\n    <row c=\"A-C00320\" ci=\"21000320\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123708\" syi=\"31000096\"/>\r\n    <row c=\"A-C00320\" ci=\"21000320\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123831\" syi=\"31000097\"/>\r\n    <row c=\"A-C00320\" ci=\"21000320\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164927\" syi=\"31000098\"/>\r\n    <row c=\"A-C00320\" ci=\"21000320\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134143\" syi=\"31000099\"/>\r\n    <row c=\"A-C00320\" ci=\"21000320\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J214534\" syi=\"31000100\"/>\r\n    <row c=\"A-C00320\" ci=\"21000320\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135250\" syi=\"31000101\"/>\r\n    <row c=\"A-C00320\" ci=\"21000320\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111707\" syi=\"31000102\"/>\r\n    <row c=\"A-C00320\" ci=\"21000320\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135245\" syi=\"31000103\"/>\r\n    <row c=\"A-C00320\" ci=\"21000320\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101408\" syi=\"31000104\"/>\r\n    <row c=\"A-C00321\" ci=\"21000321\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J215117\" syi=\"31000105\"/>\r\n    <row c=\"A-C00321\" ci=\"21000321\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141019\" syi=\"31000106\"/>\r\n    <row c=\"A-C00321\" ci=\"21000321\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102206\" syi=\"31000107\"/>\r\n    <row c=\"A-C00321\" ci=\"21000321\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125903\" syi=\"31000108\"/>\r\n    <row c=\"A-C00321\" ci=\"21000321\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134939\" syi=\"31000109\"/>\r\n    <row c=\"A-C00321\" ci=\"21000321\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162641\" syi=\"31000110\"/>\r\n    <row c=\"A-C00321\" ci=\"21000321\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152537\" syi=\"31000111\"/>\r\n    <row c=\"A-C00321\" ci=\"21000321\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J224442\" syi=\"31000112\"/>\r\n    <row c=\"A-C00321\" ci=\"21000321\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104138\" syi=\"31000113\"/>\r\n    <row c=\"A-C00321\" ci=\"21000321\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121516\" syi=\"31000114\"/>\r\n    <row c=\"A-C00321\" ci=\"21000321\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114540\" syi=\"31000115\"/>\r\n    <row c=\"A-C00321\" ci=\"21000321\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155013\" syi=\"31000116\"/>\r\n    <row c=\"A-C00322\" ci=\"21000322\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144450\" syi=\"31000117\"/>\r\n    <row c=\"A-C00322\" ci=\"21000322\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141239\" syi=\"31000118\"/>\r\n    <row c=\"A-C00322\" ci=\"21000322\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115545\" syi=\"31000119\"/>\r\n    <row c=\"A-C00322\" ci=\"21000322\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114905\" syi=\"31000120\"/>\r\n    <row c=\"A-C00322\" ci=\"21000322\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120522\" syi=\"31000121\"/>\r\n    <row c=\"A-C00322\" ci=\"21000322\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172907\" syi=\"31000122\"/>\r\n    <row c=\"A-C00322\" ci=\"21000322\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164550\" syi=\"31000123\"/>\r\n    <row c=\"A-C00322\" ci=\"21000322\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141812\" syi=\"31000124\"/>\r\n    <row c=\"A-C00322\" ci=\"21000322\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134637\" syi=\"31000125\"/>\r\n    <row c=\"A-C00322\" ci=\"21000322\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134132\" syi=\"31000126\"/>\r\n    <row c=\"A-C00322\" ci=\"21000322\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125011\" syi=\"31000127\"/>\r\n    <row c=\"A-C00323\" ci=\"21000323\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105942\" syi=\"31000128\"/>\r\n    <row c=\"A-C00323\" ci=\"21000323\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171653\" syi=\"31000129\"/>\r\n    <row c=\"A-C00323\" ci=\"21000323\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110213\" syi=\"31000130\"/>\r\n    <row c=\"A-C00323\" ci=\"21000323\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115048\" syi=\"31000131\"/>\r\n    <row c=\"A-C00323\" ci=\"21000323\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J174405\" syi=\"31000132\"/>\r\n    <row c=\"A-C00323\" ci=\"21000323\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123111\" syi=\"31000133\"/>\r\n    <row c=\"A-C00323\" ci=\"21000323\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123047\" syi=\"31000134\"/>\r\n    <row c=\"A-C00323\" ci=\"21000323\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J231541\" syi=\"31000135\"/>\r\n    <row c=\"A-C00323\" ci=\"21000323\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J215900\" syi=\"31000136\"/>\r\n    <row c=\"A-C00323\" ci=\"21000323\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110651\" syi=\"31000137\"/>\r\n    <row c=\"A-C00323\" ci=\"21000323\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140602\" syi=\"31000138\"/>\r\n    <row c=\"A-C00323\" ci=\"21000323\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163804\" syi=\"31000139\"/>\r\n    <row c=\"A-C00001\" ci=\"21000001\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125209\" syi=\"31000140\"/>\r\n    <row c=\"A-C00001\" ci=\"21000001\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140831\" syi=\"31000141\"/>\r\n    <row c=\"A-C00001\" ci=\"21000001\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161811\" syi=\"31000142\"/>\r\n    <row c=\"A-C00001\" ci=\"21000001\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112913\" syi=\"31000143\"/>\r\n    <row c=\"A-C00001\" ci=\"21000001\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105632\" syi=\"31000144\"/>\r\n    <row c=\"A-C00001\" ci=\"21000001\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160710\" syi=\"31000145\"/>\r\n    <row c=\"A-C00001\" ci=\"21000001\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160835\" syi=\"31000146\"/>\r\n    <row c=\"A-C00001\" ci=\"21000001\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122659\" syi=\"31000147\"/>\r\n    <row c=\"A-C00001\" ci=\"21000001\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130931\" syi=\"31000148\"/>\r\n    <row c=\"A-C00001\" ci=\"21000001\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161115\" syi=\"31000149\"/>\r\n    <row c=\"A-C00001\" ci=\"21000001\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120734\" syi=\"31000150\"/>\r\n    <row c=\"A-C00002\" ci=\"21000002\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110906\" syi=\"31000151\"/>\r\n    <row c=\"A-C00002\" ci=\"21000002\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121418\" syi=\"31000152\"/>\r\n    <row c=\"A-C00002\" ci=\"21000002\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113820\" syi=\"31000153\"/>\r\n    <row c=\"A-C00002\" ci=\"21000002\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113506\" syi=\"31000154\"/>\r\n    <row c=\"A-C00002\" ci=\"21000002\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172240\" syi=\"31000155\"/>\r\n    <row c=\"A-C00002\" ci=\"21000002\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110101\" syi=\"31000156\"/>\r\n    <row c=\"A-C00002\" ci=\"21000002\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110108\" syi=\"31000157\"/>\r\n    <row c=\"A-C00002\" ci=\"21000002\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213555\" syi=\"31000158\"/>\r\n    <row c=\"A-C00002\" ci=\"21000002\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144704\" syi=\"31000159\"/>\r\n    <row c=\"A-C00002\" ci=\"21000002\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115815\" syi=\"31000160\"/>\r\n    <row c=\"A-C00002\" ci=\"21000002\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133653\" syi=\"31000161\"/>\r\n    <row c=\"A-C00002\" ci=\"21000002\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171700\" syi=\"31000162\"/>\r\n    <row c=\"A-C00003\" ci=\"21000003\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104628\" syi=\"31000163\"/>\r\n    <row c=\"A-C00003\" ci=\"21000003\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114546\" syi=\"31000164\"/>\r\n    <row c=\"A-C00003\" ci=\"21000003\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J235419\" syi=\"31000165\"/>\r\n    <row c=\"A-C00003\" ci=\"21000003\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J204503\" syi=\"31000166\"/>\r\n    <row c=\"A-C00003\" ci=\"21000003\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J215417\" syi=\"31000167\"/>\r\n    <row c=\"A-C00003\" ci=\"21000003\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110545\" syi=\"31000168\"/>\r\n    <row c=\"A-C00003\" ci=\"21000003\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153536\" syi=\"31000169\"/>\r\n    <row c=\"A-C00003\" ci=\"21000003\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150407\" syi=\"31000170\"/>\r\n    <row c=\"A-C00003\" ci=\"21000003\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153530\" syi=\"31000171\"/>\r\n    <row c=\"A-C00003\" ci=\"21000003\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131232\" syi=\"31000172\"/>\r\n    <row c=\"A-C00003\" ci=\"21000003\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101020\" syi=\"31000173\"/>\r\n    <row c=\"A-C00004\" ci=\"21000004\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133613\" syi=\"31000174\"/>\r\n    <row c=\"A-C00004\" ci=\"21000004\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165901\" syi=\"31000175\"/>\r\n    <row c=\"A-C00004\" ci=\"21000004\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152006\" syi=\"31000176\"/>\r\n    <row c=\"A-C00004\" ci=\"21000004\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160345\" syi=\"31000177\"/>\r\n    <row c=\"A-C00004\" ci=\"21000004\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134330\" syi=\"31000178\"/>\r\n    <row c=\"A-C00004\" ci=\"21000004\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213342\" syi=\"31000179\"/>\r\n    <row c=\"A-C00004\" ci=\"21000004\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150745\" syi=\"31000180\"/>\r\n    <row c=\"A-C00004\" ci=\"21000004\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165056\" syi=\"31000181\"/>\r\n    <row c=\"A-C00004\" ci=\"21000004\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150827\" syi=\"31000182\"/>\r\n    <row c=\"A-C00004\" ci=\"21000004\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144632\" syi=\"31000183\"/>\r\n    <row c=\"A-C00004\" ci=\"21000004\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102630\" syi=\"31000184\"/>\r\n    <row c=\"A-C00004\" ci=\"21000004\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133335\" syi=\"31000185\"/>\r\n    <row c=\"A-C00005\" ci=\"21000005\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125925\" syi=\"31000186\"/>\r\n    <row c=\"A-C00005\" ci=\"21000005\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142617\" syi=\"31000187\"/>\r\n    <row c=\"A-C00005\" ci=\"21000005\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150818\" syi=\"31000188\"/>\r\n    <row c=\"A-C00005\" ci=\"21000005\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114420\" syi=\"31000189\"/>\r\n    <row c=\"A-C00005\" ci=\"21000005\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112250\" syi=\"31000190\"/>\r\n    <row c=\"A-C00005\" ci=\"21000005\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155935\" syi=\"31000191\"/>\r\n    <row c=\"A-C00005\" ci=\"21000005\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115738\" syi=\"31000192\"/>\r\n    <row c=\"A-C00005\" ci=\"21000005\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J232715\" syi=\"31000193\"/>\r\n    <row c=\"A-C00005\" ci=\"21000005\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110051\" syi=\"31000194\"/>\r\n    <row c=\"A-C00006\" ci=\"21000006\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152928\" syi=\"31000195\"/>\r\n    <row c=\"A-C00006\" ci=\"21000006\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132216\" syi=\"31000196\"/>\r\n    <row c=\"A-C00006\" ci=\"21000006\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132758\" syi=\"31000197\"/>\r\n    <row c=\"A-C00006\" ci=\"21000006\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134145\" syi=\"31000198\"/>\r\n    <row c=\"A-C00006\" ci=\"21000006\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102849\" syi=\"31000199\"/>\r\n    <row c=\"A-C00006\" ci=\"21000006\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120335\" syi=\"31000200\"/>\r\n    <row c=\"A-C00006\" ci=\"21000006\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104439\" syi=\"31000201\"/>\r\n    <row c=\"A-C00006\" ci=\"21000006\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122717\" syi=\"31000202\"/>\r\n    <row c=\"A-C00006\" ci=\"21000006\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101817\" syi=\"31000203\"/>\r\n    <row c=\"A-C00006\" ci=\"21000006\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131551\" syi=\"31000204\"/>\r\n    <row c=\"A-C00007\" ci=\"21000007\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115200\" syi=\"31000205\"/>\r\n    <row c=\"A-C00007\" ci=\"21000007\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155029\" syi=\"31000206\"/>\r\n    <row c=\"A-C00007\" ci=\"21000007\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J223703\" syi=\"31000207\"/>\r\n    <row c=\"A-C00007\" ci=\"21000007\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J233359\" syi=\"31000208\"/>\r\n    <row c=\"A-C00007\" ci=\"21000007\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114107\" syi=\"31000209\"/>\r\n    <row c=\"A-C00007\" ci=\"21000007\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152014\" syi=\"31000210\"/>\r\n    <row c=\"A-C00007\" ci=\"21000007\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100211\" syi=\"31000211\"/>\r\n    <row c=\"A-C00007\" ci=\"21000007\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104103\" syi=\"31000212\"/>\r\n    <row c=\"A-C00007\" ci=\"21000007\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171019\" syi=\"31000213\"/>\r\n    <row c=\"A-C00007\" ci=\"21000007\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114313\" syi=\"31000214\"/>\r\n    <row c=\"A-C00008\" ci=\"21000008\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130542\" syi=\"31000215\"/>\r\n    <row c=\"A-C00008\" ci=\"21000008\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114719\" syi=\"31000216\"/>\r\n    <row c=\"A-C00008\" ci=\"21000008\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130322\" syi=\"31000217\"/>\r\n    <row c=\"A-C00008\" ci=\"21000008\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161524\" syi=\"31000218\"/>\r\n    <row c=\"A-C00008\" ci=\"21000008\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162858\" syi=\"31000219\"/>\r\n    <row c=\"A-C00008\" ci=\"21000008\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121158\" syi=\"31000220\"/>\r\n    <row c=\"A-C00008\" ci=\"21000008\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113050\" syi=\"31000221\"/>\r\n    <row c=\"A-C00008\" ci=\"21000008\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141514\" syi=\"31000222\"/>\r\n    <row c=\"A-C00008\" ci=\"21000008\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J220654\" syi=\"31000223\"/>\r\n    <row c=\"A-C00008\" ci=\"21000008\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162118\" syi=\"31000224\"/>\r\n    <row c=\"A-C00008\" ci=\"21000008\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J231004\" syi=\"31000225\"/>\r\n    <row c=\"A-C00008\" ci=\"21000008\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120621\" syi=\"31000226\"/>\r\n    <row c=\"A-C00009\" ci=\"21000009\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151601\" syi=\"31000227\"/>\r\n    <row c=\"A-C00009\" ci=\"21000009\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105837\" syi=\"31000228\"/>\r\n    <row c=\"A-C00009\" ci=\"21000009\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143133\" syi=\"31000229\"/>\r\n    <row c=\"A-C00009\" ci=\"21000009\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100422\" syi=\"31000230\"/>\r\n    <row c=\"A-C00009\" ci=\"21000009\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104335\" syi=\"31000231\"/>\r\n    <row c=\"A-C00009\" ci=\"21000009\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105700\" syi=\"31000232\"/>\r\n    <row c=\"A-C00009\" ci=\"21000009\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J215431\" syi=\"31000233\"/>\r\n    <row c=\"A-C00009\" ci=\"21000009\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143628\" syi=\"31000234\"/>\r\n    <row c=\"A-C00009\" ci=\"21000009\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141150\" syi=\"31000235\"/>\r\n    <row c=\"A-C00009\" ci=\"21000009\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163743\" syi=\"31000236\"/>\r\n    <row c=\"A-C00009\" ci=\"21000009\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161509\" syi=\"31000237\"/>\r\n    <row c=\"A-C00009\" ci=\"21000009\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150629\" syi=\"31000238\"/>\r\n    <row c=\"A-C00010\" ci=\"21000010\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141017\" syi=\"31000239\"/>\r\n    <row c=\"A-C00010\" ci=\"21000010\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130045\" syi=\"31000240\"/>\r\n    <row c=\"A-C00010\" ci=\"21000010\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123748\" syi=\"31000241\"/>\r\n    <row c=\"A-C00010\" ci=\"21000010\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124051\" syi=\"31000242\"/>\r\n    <row c=\"A-C00010\" ci=\"21000010\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151141\" syi=\"31000243\"/>\r\n    <row c=\"A-C00010\" ci=\"21000010\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112129\" syi=\"31000244\"/>\r\n    <row c=\"A-C00010\" ci=\"21000010\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213653\" syi=\"31000245\"/>\r\n    <row c=\"A-C00010\" ci=\"21000010\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143649\" syi=\"31000246\"/>\r\n    <row c=\"A-C00010\" ci=\"21000010\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J223855\" syi=\"31000247\"/>\r\n    <row c=\"A-C00010\" ci=\"21000010\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140019\" syi=\"31000248\"/>\r\n    <row c=\"A-C00010\" ci=\"21000010\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110605\" syi=\"31000249\"/>\r\n    <row c=\"A-C00010\" ci=\"21000010\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122843\" syi=\"31000250\"/>\r\n    <row c=\"A-C00011\" ci=\"21000011\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J205004\" syi=\"31000251\"/>\r\n    <row c=\"A-C00011\" ci=\"21000011\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122114\" syi=\"31000252\"/>\r\n    <row c=\"A-C00011\" ci=\"21000011\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163533\" syi=\"31000253\"/>\r\n    <row c=\"A-C00011\" ci=\"21000011\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151518\" syi=\"31000254\"/>\r\n    <row c=\"A-C00011\" ci=\"21000011\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122712\" syi=\"31000255\"/>\r\n    <row c=\"A-C00011\" ci=\"21000011\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143002\" syi=\"31000256\"/>\r\n    <row c=\"A-C00011\" ci=\"21000011\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160307\" syi=\"31000257\"/>\r\n    <row c=\"A-C00011\" ci=\"21000011\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213932\" syi=\"31000258\"/>\r\n    <row c=\"A-C00011\" ci=\"21000011\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102414\" syi=\"31000259\"/>\r\n    <row c=\"A-C00011\" ci=\"21000011\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170949\" syi=\"31000260\"/>\r\n    <row c=\"A-C00012\" ci=\"21000012\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J235001\" syi=\"31000261\"/>\r\n    <row c=\"A-C00012\" ci=\"21000012\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103320\" syi=\"31000262\"/>\r\n    <row c=\"A-C00012\" ci=\"21000012\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141038\" syi=\"31000263\"/>\r\n    <row c=\"A-C00012\" ci=\"21000012\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172003\" syi=\"31000264\"/>\r\n    <row c=\"A-C00012\" ci=\"21000012\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124215\" syi=\"31000265\"/>\r\n    <row c=\"A-C00012\" ci=\"21000012\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J215754\" syi=\"31000266\"/>\r\n    <row c=\"A-C00012\" ci=\"21000012\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102837\" syi=\"31000267\"/>\r\n    <row c=\"A-C00012\" ci=\"21000012\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130155\" syi=\"31000268\"/>\r\n    <row c=\"A-C00012\" ci=\"21000012\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170544\" syi=\"31000269\"/>\r\n    <row c=\"A-C00012\" ci=\"21000012\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142649\" syi=\"31000270\"/>\r\n    <row c=\"A-C00013\" ci=\"21000013\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150539\" syi=\"31000271\"/>\r\n    <row c=\"A-C00013\" ci=\"21000013\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163156\" syi=\"31000272\"/>\r\n    <row c=\"A-C00013\" ci=\"21000013\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120338\" syi=\"31000273\"/>\r\n    <row c=\"A-C00013\" ci=\"21000013\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142941\" syi=\"31000274\"/>\r\n    <row c=\"A-C00013\" ci=\"21000013\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110126\" syi=\"31000275\"/>\r\n    <row c=\"A-C00013\" ci=\"21000013\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155504\" syi=\"31000276\"/>\r\n    <row c=\"A-C00013\" ci=\"21000013\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144228\" syi=\"31000277\"/>\r\n    <row c=\"A-C00013\" ci=\"21000013\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J223650\" syi=\"31000278\"/>\r\n    <row c=\"A-C00013\" ci=\"21000013\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102734\" syi=\"31000279\"/>\r\n    <row c=\"A-C00013\" ci=\"21000013\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105232\" syi=\"31000280\"/>\r\n    <row c=\"A-C00013\" ci=\"21000013\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133128\" syi=\"31000281\"/>\r\n    <row c=\"A-C00014\" ci=\"21000014\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140135\" syi=\"31000282\"/>\r\n    <row c=\"A-C00014\" ci=\"21000014\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115216\" syi=\"31000283\"/>\r\n    <row c=\"A-C00014\" ci=\"21000014\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153311\" syi=\"31000284\"/>\r\n    <row c=\"A-C00014\" ci=\"21000014\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164756\" syi=\"31000285\"/>\r\n    <row c=\"A-C00014\" ci=\"21000014\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165216\" syi=\"31000286\"/>\r\n    <row c=\"A-C00014\" ci=\"21000014\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114914\" syi=\"31000287\"/>\r\n    <row c=\"A-C00014\" ci=\"21000014\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212504\" syi=\"31000288\"/>\r\n    <row c=\"A-C00014\" ci=\"21000014\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120256\" syi=\"31000289\"/>\r\n    <row c=\"A-C00014\" ci=\"21000014\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143421\" syi=\"31000290\"/>\r\n    <row c=\"A-C00014\" ci=\"21000014\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J223026\" syi=\"31000291\"/>\r\n    <row c=\"A-C00014\" ci=\"21000014\" r=\"A-R00002\" ri=\"11000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102918\" syi=\"31000292\"/>\r\n    <row c=\"A-C00015\" ci=\"21000015\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142136\" syi=\"31000293\"/>\r\n    <row c=\"A-C00015\" ci=\"21000015\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134540\" syi=\"31000294\"/>\r\n    <row c=\"A-C00015\" ci=\"21000015\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124451\" syi=\"31000295\"/>\r\n    <row c=\"A-C00015\" ci=\"21000015\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102749\" syi=\"31000296\"/>\r\n    <row c=\"A-C00015\" ci=\"21000015\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165741\" syi=\"31000297\"/>\r\n    <row c=\"A-C00015\" ci=\"21000015\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142119\" syi=\"31000298\"/>\r\n    <row c=\"A-C00015\" ci=\"21000015\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105642\" syi=\"31000299\"/>\r\n    <row c=\"A-C00015\" ci=\"21000015\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154354\" syi=\"31000300\"/>\r\n    <row c=\"A-C00015\" ci=\"21000015\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102005\" syi=\"31000301\"/>\r\n    <row c=\"A-C00015\" ci=\"21000015\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133052\" syi=\"31000302\"/>\r\n    <row c=\"A-C00015\" ci=\"21000015\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103341\" syi=\"31000303\"/>\r\n    <row c=\"A-C00015\" ci=\"21000015\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142114\" syi=\"31000304\"/>\r\n    <row c=\"A-C00016\" ci=\"21000016\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152353\" syi=\"31000305\"/>\r\n    <row c=\"A-C00016\" ci=\"21000016\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120431\" syi=\"31000306\"/>\r\n    <row c=\"A-C00016\" ci=\"21000016\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103547\" syi=\"31000307\"/>\r\n    <row c=\"A-C00016\" ci=\"21000016\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161107\" syi=\"31000308\"/>\r\n    <row c=\"A-C00016\" ci=\"21000016\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160334\" syi=\"31000309\"/>\r\n    <row c=\"A-C00016\" ci=\"21000016\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101845\" syi=\"31000310\"/>\r\n    <row c=\"A-C00016\" ci=\"21000016\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171805\" syi=\"31000311\"/>\r\n    <row c=\"A-C00016\" ci=\"21000016\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134610\" syi=\"31000312\"/>\r\n    <row c=\"A-C00016\" ci=\"21000016\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J173842\" syi=\"31000313\"/>\r\n    <row c=\"A-C00017\" ci=\"21000017\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155203\" syi=\"31000314\"/>\r\n    <row c=\"A-C00017\" ci=\"21000017\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121935\" syi=\"31000315\"/>\r\n    <row c=\"A-C00017\" ci=\"21000017\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105013\" syi=\"31000316\"/>\r\n    <row c=\"A-C00017\" ci=\"21000017\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161846\" syi=\"31000317\"/>\r\n    <row c=\"A-C00017\" ci=\"21000017\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113632\" syi=\"31000318\"/>\r\n    <row c=\"A-C00017\" ci=\"21000017\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170106\" syi=\"31000319\"/>\r\n    <row c=\"A-C00017\" ci=\"21000017\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123828\" syi=\"31000320\"/>\r\n    <row c=\"A-C00017\" ci=\"21000017\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172147\" syi=\"31000321\"/>\r\n    <row c=\"A-C00017\" ci=\"21000017\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164759\" syi=\"31000322\"/>\r\n    <row c=\"A-C00018\" ci=\"21000018\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212957\" syi=\"31000323\"/>\r\n    <row c=\"A-C00018\" ci=\"21000018\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212338\" syi=\"31000324\"/>\r\n    <row c=\"A-C00018\" ci=\"21000018\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115823\" syi=\"31000325\"/>\r\n    <row c=\"A-C00018\" ci=\"21000018\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112744\" syi=\"31000326\"/>\r\n    <row c=\"A-C00018\" ci=\"21000018\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121941\" syi=\"31000327\"/>\r\n    <row c=\"A-C00018\" ci=\"21000018\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125650\" syi=\"31000328\"/>\r\n    <row c=\"A-C00018\" ci=\"21000018\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161344\" syi=\"31000329\"/>\r\n    <row c=\"A-C00018\" ci=\"21000018\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134833\" syi=\"31000330\"/>\r\n    <row c=\"A-C00018\" ci=\"21000018\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143517\" syi=\"31000331\"/>\r\n    <row c=\"A-C00018\" ci=\"21000018\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133245\" syi=\"31000332\"/>\r\n    <row c=\"A-C00018\" ci=\"21000018\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113918\" syi=\"31000333\"/>\r\n    <row c=\"A-C00019\" ci=\"21000019\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161644\" syi=\"31000334\"/>\r\n    <row c=\"A-C00019\" ci=\"21000019\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152257\" syi=\"31000335\"/>\r\n    <row c=\"A-C00019\" ci=\"21000019\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155833\" syi=\"31000336\"/>\r\n    <row c=\"A-C00019\" ci=\"21000019\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151332\" syi=\"31000337\"/>\r\n    <row c=\"A-C00019\" ci=\"21000019\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J231306\" syi=\"31000338\"/>\r\n    <row c=\"A-C00019\" ci=\"21000019\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171312\" syi=\"31000339\"/>\r\n    <row c=\"A-C00019\" ci=\"21000019\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112406\" syi=\"31000340\"/>\r\n    <row c=\"A-C00019\" ci=\"21000019\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212904\" syi=\"31000341\"/>\r\n    <row c=\"A-C00019\" ci=\"21000019\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111811\" syi=\"31000342\"/>\r\n    <row c=\"A-C00020\" ci=\"21000020\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104201\" syi=\"31000343\"/>\r\n    <row c=\"A-C00020\" ci=\"21000020\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150216\" syi=\"31000344\"/>\r\n    <row c=\"A-C00020\" ci=\"21000020\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112934\" syi=\"31000345\"/>\r\n    <row c=\"A-C00020\" ci=\"21000020\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115808\" syi=\"31000346\"/>\r\n    <row c=\"A-C00020\" ci=\"21000020\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121915\" syi=\"31000347\"/>\r\n    <row c=\"A-C00020\" ci=\"21000020\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133259\" syi=\"31000348\"/>\r\n    <row c=\"A-C00020\" ci=\"21000020\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150325\" syi=\"31000349\"/>\r\n    <row c=\"A-C00020\" ci=\"21000020\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122224\" syi=\"31000350\"/>\r\n    <row c=\"A-C00020\" ci=\"21000020\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131702\" syi=\"31000351\"/>\r\n    <row c=\"A-C00020\" ci=\"21000020\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141807\" syi=\"31000352\"/>\r\n    <row c=\"A-C00020\" ci=\"21000020\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142327\" syi=\"31000353\"/>\r\n    <row c=\"A-C00020\" ci=\"21000020\" r=\"A-R00003\" ri=\"11000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144822\" syi=\"31000354\"/>\r\n    <row c=\"B-C00021\" ci=\"21000021\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164417\" syi=\"31000355\"/>\r\n    <row c=\"B-C00021\" ci=\"21000021\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125227\" syi=\"31000356\"/>\r\n    <row c=\"B-C00021\" ci=\"21000021\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113057\" syi=\"31000357\"/>\r\n    <row c=\"B-C00021\" ci=\"21000021\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101524\" syi=\"31000358\"/>\r\n    <row c=\"B-C00021\" ci=\"21000021\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124508\" syi=\"31000359\"/>\r\n    <row c=\"B-C00021\" ci=\"21000021\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141156\" syi=\"31000360\"/>\r\n    <row c=\"B-C00021\" ci=\"21000021\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J222822\" syi=\"31000361\"/>\r\n    <row c=\"B-C00021\" ci=\"21000021\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104253\" syi=\"31000362\"/>\r\n    <row c=\"B-C00021\" ci=\"21000021\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144153\" syi=\"31000363\"/>\r\n    <row c=\"B-C00022\" ci=\"21000022\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103406\" syi=\"31000364\"/>\r\n    <row c=\"B-C00022\" ci=\"21000022\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133210\" syi=\"31000365\"/>\r\n    <row c=\"B-C00022\" ci=\"21000022\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111740\" syi=\"31000366\"/>\r\n    <row c=\"B-C00022\" ci=\"21000022\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125956\" syi=\"31000367\"/>\r\n    <row c=\"B-C00022\" ci=\"21000022\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105951\" syi=\"31000368\"/>\r\n    <row c=\"B-C00022\" ci=\"21000022\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141857\" syi=\"31000369\"/>\r\n    <row c=\"B-C00022\" ci=\"21000022\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120726\" syi=\"31000370\"/>\r\n    <row c=\"B-C00022\" ci=\"21000022\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155737\" syi=\"31000371\"/>\r\n    <row c=\"B-C00022\" ci=\"21000022\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144605\" syi=\"31000372\"/>\r\n    <row c=\"B-C00022\" ci=\"21000022\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144218\" syi=\"31000373\"/>\r\n    <row c=\"B-C00022\" ci=\"21000022\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114835\" syi=\"31000374\"/>\r\n    <row c=\"B-C00023\" ci=\"21000023\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134006\" syi=\"31000375\"/>\r\n    <row c=\"B-C00023\" ci=\"21000023\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160941\" syi=\"31000376\"/>\r\n    <row c=\"B-C00023\" ci=\"21000023\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111557\" syi=\"31000377\"/>\r\n    <row c=\"B-C00023\" ci=\"21000023\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124219\" syi=\"31000378\"/>\r\n    <row c=\"B-C00023\" ci=\"21000023\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155620\" syi=\"31000379\"/>\r\n    <row c=\"B-C00023\" ci=\"21000023\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114346\" syi=\"31000380\"/>\r\n    <row c=\"B-C00023\" ci=\"21000023\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153532\" syi=\"31000381\"/>\r\n    <row c=\"B-C00023\" ci=\"21000023\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J211936\" syi=\"31000382\"/>\r\n    <row c=\"B-C00023\" ci=\"21000023\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J211036\" syi=\"31000383\"/>\r\n    <row c=\"B-C00023\" ci=\"21000023\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145805\" syi=\"31000384\"/>\r\n    <row c=\"B-C00023\" ci=\"21000023\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151548\" syi=\"31000385\"/>\r\n    <row c=\"B-C00024\" ci=\"21000024\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160412\" syi=\"31000386\"/>\r\n    <row c=\"B-C00024\" ci=\"21000024\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104008\" syi=\"31000387\"/>\r\n    <row c=\"B-C00024\" ci=\"21000024\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145715\" syi=\"31000388\"/>\r\n    <row c=\"B-C00024\" ci=\"21000024\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J235321\" syi=\"31000389\"/>\r\n    <row c=\"B-C00024\" ci=\"21000024\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103339\" syi=\"31000390\"/>\r\n    <row c=\"B-C00024\" ci=\"21000024\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132009\" syi=\"31000391\"/>\r\n    <row c=\"B-C00024\" ci=\"21000024\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J210548\" syi=\"31000392\"/>\r\n    <row c=\"B-C00024\" ci=\"21000024\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J235408\" syi=\"31000393\"/>\r\n    <row c=\"B-C00024\" ci=\"21000024\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122821\" syi=\"31000394\"/>\r\n    <row c=\"B-C00024\" ci=\"21000024\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121925\" syi=\"31000395\"/>\r\n    <row c=\"B-C00024\" ci=\"21000024\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151047\" syi=\"31000396\"/>\r\n    <row c=\"B-C00024\" ci=\"21000024\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111011\" syi=\"31000397\"/>\r\n    <row c=\"B-C00025\" ci=\"21000025\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154212\" syi=\"31000398\"/>\r\n    <row c=\"B-C00025\" ci=\"21000025\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130256\" syi=\"31000399\"/>\r\n    <row c=\"B-C00025\" ci=\"21000025\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113230\" syi=\"31000400\"/>\r\n    <row c=\"B-C00025\" ci=\"21000025\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132557\" syi=\"31000401\"/>\r\n    <row c=\"B-C00025\" ci=\"21000025\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J233534\" syi=\"31000402\"/>\r\n    <row c=\"B-C00025\" ci=\"21000025\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J232801\" syi=\"31000403\"/>\r\n    <row c=\"B-C00025\" ci=\"21000025\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153627\" syi=\"31000404\"/>\r\n    <row c=\"B-C00025\" ci=\"21000025\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134800\" syi=\"31000405\"/>\r\n    <row c=\"B-C00025\" ci=\"21000025\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111508\" syi=\"31000406\"/>\r\n    <row c=\"B-C00025\" ci=\"21000025\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143639\" syi=\"31000407\"/>\r\n    <row c=\"B-C00026\" ci=\"21000026\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160753\" syi=\"31000408\"/>\r\n    <row c=\"B-C00026\" ci=\"21000026\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151231\" syi=\"31000409\"/>\r\n    <row c=\"B-C00026\" ci=\"21000026\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142547\" syi=\"31000410\"/>\r\n    <row c=\"B-C00026\" ci=\"21000026\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142306\" syi=\"31000411\"/>\r\n    <row c=\"B-C00026\" ci=\"21000026\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J210422\" syi=\"31000412\"/>\r\n    <row c=\"B-C00026\" ci=\"21000026\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112137\" syi=\"31000413\"/>\r\n    <row c=\"B-C00026\" ci=\"21000026\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160715\" syi=\"31000414\"/>\r\n    <row c=\"B-C00026\" ci=\"21000026\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145931\" syi=\"31000415\"/>\r\n    <row c=\"B-C00026\" ci=\"21000026\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103217\" syi=\"31000416\"/>\r\n    <row c=\"B-C00026\" ci=\"21000026\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143505\" syi=\"31000417\"/>\r\n    <row c=\"B-C00027\" ci=\"21000027\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142533\" syi=\"31000418\"/>\r\n    <row c=\"B-C00027\" ci=\"21000027\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112146\" syi=\"31000419\"/>\r\n    <row c=\"B-C00027\" ci=\"21000027\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103839\" syi=\"31000420\"/>\r\n    <row c=\"B-C00027\" ci=\"21000027\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152433\" syi=\"31000421\"/>\r\n    <row c=\"B-C00027\" ci=\"21000027\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110408\" syi=\"31000422\"/>\r\n    <row c=\"B-C00027\" ci=\"21000027\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J205546\" syi=\"31000423\"/>\r\n    <row c=\"B-C00027\" ci=\"21000027\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152801\" syi=\"31000424\"/>\r\n    <row c=\"B-C00027\" ci=\"21000027\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120308\" syi=\"31000425\"/>\r\n    <row c=\"B-C00027\" ci=\"21000027\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103948\" syi=\"31000426\"/>\r\n    <row c=\"B-C00028\" ci=\"21000028\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112820\" syi=\"31000427\"/>\r\n    <row c=\"B-C00028\" ci=\"21000028\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J231837\" syi=\"31000428\"/>\r\n    <row c=\"B-C00028\" ci=\"21000028\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110043\" syi=\"31000429\"/>\r\n    <row c=\"B-C00028\" ci=\"21000028\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121454\" syi=\"31000430\"/>\r\n    <row c=\"B-C00028\" ci=\"21000028\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J230959\" syi=\"31000431\"/>\r\n    <row c=\"B-C00028\" ci=\"21000028\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103408\" syi=\"31000432\"/>\r\n    <row c=\"B-C00028\" ci=\"21000028\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162720\" syi=\"31000433\"/>\r\n    <row c=\"B-C00028\" ci=\"21000028\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132418\" syi=\"31000434\"/>\r\n    <row c=\"B-C00028\" ci=\"21000028\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164235\" syi=\"31000435\"/>\r\n    <row c=\"B-C00029\" ci=\"21000029\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143429\" syi=\"31000436\"/>\r\n    <row c=\"B-C00029\" ci=\"21000029\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134654\" syi=\"31000437\"/>\r\n    <row c=\"B-C00029\" ci=\"21000029\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112801\" syi=\"31000438\"/>\r\n    <row c=\"B-C00029\" ci=\"21000029\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110656\" syi=\"31000439\"/>\r\n    <row c=\"B-C00029\" ci=\"21000029\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134951\" syi=\"31000440\"/>\r\n    <row c=\"B-C00029\" ci=\"21000029\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155307\" syi=\"31000441\"/>\r\n    <row c=\"B-C00029\" ci=\"21000029\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131204\" syi=\"31000442\"/>\r\n    <row c=\"B-C00029\" ci=\"21000029\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213737\" syi=\"31000443\"/>\r\n    <row c=\"B-C00029\" ci=\"21000029\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J235117\" syi=\"31000444\"/>\r\n    <row c=\"B-C00029\" ci=\"21000029\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164938\" syi=\"31000445\"/>\r\n    <row c=\"B-C00029\" ci=\"21000029\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120310\" syi=\"31000446\"/>\r\n    <row c=\"B-C00029\" ci=\"21000029\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144838\" syi=\"31000447\"/>\r\n    <row c=\"B-C00030\" ci=\"21000030\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101307\" syi=\"31000448\"/>\r\n    <row c=\"B-C00030\" ci=\"21000030\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172354\" syi=\"31000449\"/>\r\n    <row c=\"B-C00030\" ci=\"21000030\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J235447\" syi=\"31000450\"/>\r\n    <row c=\"B-C00030\" ci=\"21000030\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124023\" syi=\"31000451\"/>\r\n    <row c=\"B-C00030\" ci=\"21000030\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171424\" syi=\"31000452\"/>\r\n    <row c=\"B-C00030\" ci=\"21000030\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150921\" syi=\"31000453\"/>\r\n    <row c=\"B-C00030\" ci=\"21000030\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171518\" syi=\"31000454\"/>\r\n    <row c=\"B-C00030\" ci=\"21000030\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140012\" syi=\"31000455\"/>\r\n    <row c=\"B-C00030\" ci=\"21000030\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155616\" syi=\"31000456\"/>\r\n    <row c=\"B-C00030\" ci=\"21000030\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J234557\" syi=\"31000457\"/>\r\n    <row c=\"B-C00030\" ci=\"21000030\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162700\" syi=\"31000458\"/>\r\n    <row c=\"B-C00031\" ci=\"21000031\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103716\" syi=\"31000459\"/>\r\n    <row c=\"B-C00031\" ci=\"21000031\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100640\" syi=\"31000460\"/>\r\n    <row c=\"B-C00031\" ci=\"21000031\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151250\" syi=\"31000461\"/>\r\n    <row c=\"B-C00031\" ci=\"21000031\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141332\" syi=\"31000462\"/>\r\n    <row c=\"B-C00031\" ci=\"21000031\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J211915\" syi=\"31000463\"/>\r\n    <row c=\"B-C00031\" ci=\"21000031\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144546\" syi=\"31000464\"/>\r\n    <row c=\"B-C00031\" ci=\"21000031\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145759\" syi=\"31000465\"/>\r\n    <row c=\"B-C00031\" ci=\"21000031\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103422\" syi=\"31000466\"/>\r\n    <row c=\"B-C00031\" ci=\"21000031\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130222\" syi=\"31000467\"/>\r\n    <row c=\"B-C00032\" ci=\"21000032\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165357\" syi=\"31000468\"/>\r\n    <row c=\"B-C00032\" ci=\"21000032\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105321\" syi=\"31000469\"/>\r\n    <row c=\"B-C00032\" ci=\"21000032\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105803\" syi=\"31000470\"/>\r\n    <row c=\"B-C00032\" ci=\"21000032\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130209\" syi=\"31000471\"/>\r\n    <row c=\"B-C00032\" ci=\"21000032\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122832\" syi=\"31000472\"/>\r\n    <row c=\"B-C00032\" ci=\"21000032\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143359\" syi=\"31000473\"/>\r\n    <row c=\"B-C00032\" ci=\"21000032\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100447\" syi=\"31000474\"/>\r\n    <row c=\"B-C00032\" ci=\"21000032\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115651\" syi=\"31000475\"/>\r\n    <row c=\"B-C00032\" ci=\"21000032\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134323\" syi=\"31000476\"/>\r\n    <row c=\"B-C00032\" ci=\"21000032\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160014\" syi=\"31000477\"/>\r\n    <row c=\"B-C00032\" ci=\"21000032\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110823\" syi=\"31000478\"/>\r\n    <row c=\"B-C00033\" ci=\"21000033\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100246\" syi=\"31000479\"/>\r\n    <row c=\"B-C00033\" ci=\"21000033\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131221\" syi=\"31000480\"/>\r\n    <row c=\"B-C00033\" ci=\"21000033\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145155\" syi=\"31000481\"/>\r\n    <row c=\"B-C00033\" ci=\"21000033\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114405\" syi=\"31000482\"/>\r\n    <row c=\"B-C00033\" ci=\"21000033\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J215537\" syi=\"31000483\"/>\r\n    <row c=\"B-C00033\" ci=\"21000033\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172551\" syi=\"31000484\"/>\r\n    <row c=\"B-C00033\" ci=\"21000033\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131107\" syi=\"31000485\"/>\r\n    <row c=\"B-C00033\" ci=\"21000033\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113108\" syi=\"31000486\"/>\r\n    <row c=\"B-C00033\" ci=\"21000033\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172556\" syi=\"31000487\"/>\r\n    <row c=\"B-C00033\" ci=\"21000033\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123450\" syi=\"31000488\"/>\r\n    <row c=\"B-C00033\" ci=\"21000033\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135809\" syi=\"31000489\"/>\r\n    <row c=\"B-C00034\" ci=\"21000034\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212319\" syi=\"31000490\"/>\r\n    <row c=\"B-C00034\" ci=\"21000034\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104210\" syi=\"31000491\"/>\r\n    <row c=\"B-C00034\" ci=\"21000034\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170038\" syi=\"31000492\"/>\r\n    <row c=\"B-C00034\" ci=\"21000034\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104115\" syi=\"31000493\"/>\r\n    <row c=\"B-C00034\" ci=\"21000034\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114758\" syi=\"31000494\"/>\r\n    <row c=\"B-C00034\" ci=\"21000034\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J231517\" syi=\"31000495\"/>\r\n    <row c=\"B-C00034\" ci=\"21000034\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114055\" syi=\"31000496\"/>\r\n    <row c=\"B-C00034\" ci=\"21000034\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120619\" syi=\"31000497\"/>\r\n    <row c=\"B-C00034\" ci=\"21000034\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213058\" syi=\"31000498\"/>\r\n    <row c=\"B-C00035\" ci=\"21000035\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162430\" syi=\"31000499\"/>\r\n    <row c=\"B-C00035\" ci=\"21000035\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120928\" syi=\"31000500\"/>\r\n    <row c=\"B-C00035\" ci=\"21000035\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132918\" syi=\"31000501\"/>\r\n    <row c=\"B-C00035\" ci=\"21000035\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105203\" syi=\"31000502\"/>\r\n    <row c=\"B-C00035\" ci=\"21000035\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104328\" syi=\"31000503\"/>\r\n    <row c=\"B-C00035\" ci=\"21000035\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130854\" syi=\"31000504\"/>\r\n    <row c=\"B-C00035\" ci=\"21000035\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164130\" syi=\"31000505\"/>\r\n    <row c=\"B-C00035\" ci=\"21000035\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110316\" syi=\"31000506\"/>\r\n    <row c=\"B-C00035\" ci=\"21000035\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122331\" syi=\"31000507\"/>\r\n    <row c=\"B-C00036\" ci=\"21000036\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133419\" syi=\"31000508\"/>\r\n    <row c=\"B-C00036\" ci=\"21000036\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150137\" syi=\"31000509\"/>\r\n    <row c=\"B-C00036\" ci=\"21000036\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140112\" syi=\"31000510\"/>\r\n    <row c=\"B-C00036\" ci=\"21000036\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125721\" syi=\"31000511\"/>\r\n    <row c=\"B-C00036\" ci=\"21000036\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154515\" syi=\"31000512\"/>\r\n    <row c=\"B-C00036\" ci=\"21000036\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135703\" syi=\"31000513\"/>\r\n    <row c=\"B-C00036\" ci=\"21000036\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102347\" syi=\"31000514\"/>\r\n    <row c=\"B-C00036\" ci=\"21000036\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J234942\" syi=\"31000515\"/>\r\n    <row c=\"B-C00036\" ci=\"21000036\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134618\" syi=\"31000516\"/>\r\n    <row c=\"B-C00036\" ci=\"21000036\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154858\" syi=\"31000517\"/>\r\n    <row c=\"B-C00036\" ci=\"21000036\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132052\" syi=\"31000518\"/>\r\n    <row c=\"B-C00037\" ci=\"21000037\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114046\" syi=\"31000519\"/>\r\n    <row c=\"B-C00037\" ci=\"21000037\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150859\" syi=\"31000520\"/>\r\n    <row c=\"B-C00037\" ci=\"21000037\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151615\" syi=\"31000521\"/>\r\n    <row c=\"B-C00037\" ci=\"21000037\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122246\" syi=\"31000522\"/>\r\n    <row c=\"B-C00037\" ci=\"21000037\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132559\" syi=\"31000523\"/>\r\n    <row c=\"B-C00037\" ci=\"21000037\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J230207\" syi=\"31000524\"/>\r\n    <row c=\"B-C00037\" ci=\"21000037\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140308\" syi=\"31000525\"/>\r\n    <row c=\"B-C00037\" ci=\"21000037\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140642\" syi=\"31000526\"/>\r\n    <row c=\"B-C00037\" ci=\"21000037\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114306\" syi=\"31000527\"/>\r\n    <row c=\"B-C00037\" ci=\"21000037\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154606\" syi=\"31000528\"/>\r\n    <row c=\"B-C00037\" ci=\"21000037\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135910\" syi=\"31000529\"/>\r\n    <row c=\"B-C00038\" ci=\"21000038\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132024\" syi=\"31000530\"/>\r\n    <row c=\"B-C00038\" ci=\"21000038\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160311\" syi=\"31000531\"/>\r\n    <row c=\"B-C00038\" ci=\"21000038\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142239\" syi=\"31000532\"/>\r\n    <row c=\"B-C00038\" ci=\"21000038\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101149\" syi=\"31000533\"/>\r\n    <row c=\"B-C00038\" ci=\"21000038\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154538\" syi=\"31000534\"/>\r\n    <row c=\"B-C00038\" ci=\"21000038\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144426\" syi=\"31000535\"/>\r\n    <row c=\"B-C00038\" ci=\"21000038\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150341\" syi=\"31000536\"/>\r\n    <row c=\"B-C00038\" ci=\"21000038\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122124\" syi=\"31000537\"/>\r\n    <row c=\"B-C00038\" ci=\"21000038\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112614\" syi=\"31000538\"/>\r\n    <row c=\"B-C00039\" ci=\"21000039\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145316\" syi=\"31000539\"/>\r\n    <row c=\"B-C00039\" ci=\"21000039\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J215736\" syi=\"31000540\"/>\r\n    <row c=\"B-C00039\" ci=\"21000039\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163138\" syi=\"31000541\"/>\r\n    <row c=\"B-C00039\" ci=\"21000039\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100033\" syi=\"31000542\"/>\r\n    <row c=\"B-C00039\" ci=\"21000039\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170552\" syi=\"31000543\"/>\r\n    <row c=\"B-C00039\" ci=\"21000039\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104820\" syi=\"31000544\"/>\r\n    <row c=\"B-C00039\" ci=\"21000039\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131240\" syi=\"31000545\"/>\r\n    <row c=\"B-C00039\" ci=\"21000039\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120442\" syi=\"31000546\"/>\r\n    <row c=\"B-C00039\" ci=\"21000039\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105000\" syi=\"31000547\"/>\r\n    <row c=\"B-C00039\" ci=\"21000039\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164507\" syi=\"31000548\"/>\r\n    <row c=\"B-C00039\" ci=\"21000039\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144956\" syi=\"31000549\"/>\r\n    <row c=\"B-C00040\" ci=\"21000040\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114712\" syi=\"31000550\"/>\r\n    <row c=\"B-C00040\" ci=\"21000040\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J211908\" syi=\"31000551\"/>\r\n    <row c=\"B-C00040\" ci=\"21000040\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150700\" syi=\"31000552\"/>\r\n    <row c=\"B-C00040\" ci=\"21000040\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164931\" syi=\"31000553\"/>\r\n    <row c=\"B-C00040\" ci=\"21000040\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121412\" syi=\"31000554\"/>\r\n    <row c=\"B-C00040\" ci=\"21000040\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145211\" syi=\"31000555\"/>\r\n    <row c=\"B-C00040\" ci=\"21000040\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J174449\" syi=\"31000556\"/>\r\n    <row c=\"B-C00040\" ci=\"21000040\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133015\" syi=\"31000557\"/>\r\n    <row c=\"B-C00040\" ci=\"21000040\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134534\" syi=\"31000558\"/>\r\n    <row c=\"B-C00040\" ci=\"21000040\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153229\" syi=\"31000559\"/>\r\n    <row c=\"B-C00040\" ci=\"21000040\" r=\"B-R00005\" ri=\"11000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133557\" syi=\"31000560\"/>\r\n    <row c=\"B-C00041\" ci=\"21000041\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150807\" syi=\"31000561\"/>\r\n    <row c=\"B-C00041\" ci=\"21000041\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110413\" syi=\"31000562\"/>\r\n    <row c=\"B-C00041\" ci=\"21000041\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105352\" syi=\"31000563\"/>\r\n    <row c=\"B-C00041\" ci=\"21000041\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161246\" syi=\"31000564\"/>\r\n    <row c=\"B-C00041\" ci=\"21000041\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125927\" syi=\"31000565\"/>\r\n    <row c=\"B-C00041\" ci=\"21000041\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130650\" syi=\"31000566\"/>\r\n    <row c=\"B-C00041\" ci=\"21000041\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142826\" syi=\"31000567\"/>\r\n    <row c=\"B-C00041\" ci=\"21000041\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152737\" syi=\"31000568\"/>\r\n    <row c=\"B-C00041\" ci=\"21000041\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J225316\" syi=\"31000569\"/>\r\n    <row c=\"B-C00041\" ci=\"21000041\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163146\" syi=\"31000570\"/>\r\n    <row c=\"B-C00042\" ci=\"21000042\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134107\" syi=\"31000571\"/>\r\n    <row c=\"B-C00042\" ci=\"21000042\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104850\" syi=\"31000572\"/>\r\n    <row c=\"B-C00042\" ci=\"21000042\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131124\" syi=\"31000573\"/>\r\n    <row c=\"B-C00042\" ci=\"21000042\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123435\" syi=\"31000574\"/>\r\n    <row c=\"B-C00042\" ci=\"21000042\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150853\" syi=\"31000575\"/>\r\n    <row c=\"B-C00042\" ci=\"21000042\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170558\" syi=\"31000576\"/>\r\n    <row c=\"B-C00042\" ci=\"21000042\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J214238\" syi=\"31000577\"/>\r\n    <row c=\"B-C00042\" ci=\"21000042\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110538\" syi=\"31000578\"/>\r\n    <row c=\"B-C00042\" ci=\"21000042\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143336\" syi=\"31000579\"/>\r\n    <row c=\"B-C00043\" ci=\"21000043\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J232044\" syi=\"31000580\"/>\r\n    <row c=\"B-C00043\" ci=\"21000043\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145225\" syi=\"31000581\"/>\r\n    <row c=\"B-C00043\" ci=\"21000043\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J231210\" syi=\"31000582\"/>\r\n    <row c=\"B-C00043\" ci=\"21000043\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J223853\" syi=\"31000583\"/>\r\n    <row c=\"B-C00043\" ci=\"21000043\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J234542\" syi=\"31000584\"/>\r\n    <row c=\"B-C00043\" ci=\"21000043\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115911\" syi=\"31000585\"/>\r\n    <row c=\"B-C00043\" ci=\"21000043\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135155\" syi=\"31000586\"/>\r\n    <row c=\"B-C00043\" ci=\"21000043\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152825\" syi=\"31000587\"/>\r\n    <row c=\"B-C00043\" ci=\"21000043\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115334\" syi=\"31000588\"/>\r\n    <row c=\"B-C00043\" ci=\"21000043\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114749\" syi=\"31000589\"/>\r\n    <row c=\"B-C00043\" ci=\"21000043\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134730\" syi=\"31000590\"/>\r\n    <row c=\"B-C00044\" ci=\"21000044\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105544\" syi=\"31000591\"/>\r\n    <row c=\"B-C00044\" ci=\"21000044\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J233129\" syi=\"31000592\"/>\r\n    <row c=\"B-C00044\" ci=\"21000044\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114528\" syi=\"31000593\"/>\r\n    <row c=\"B-C00044\" ci=\"21000044\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103351\" syi=\"31000594\"/>\r\n    <row c=\"B-C00044\" ci=\"21000044\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152322\" syi=\"31000595\"/>\r\n    <row c=\"B-C00044\" ci=\"21000044\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132617\" syi=\"31000596\"/>\r\n    <row c=\"B-C00044\" ci=\"21000044\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104517\" syi=\"31000597\"/>\r\n    <row c=\"B-C00044\" ci=\"21000044\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132401\" syi=\"31000598\"/>\r\n    <row c=\"B-C00044\" ci=\"21000044\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142918\" syi=\"31000599\"/>\r\n    <row c=\"B-C00044\" ci=\"21000044\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163902\" syi=\"31000600\"/>\r\n    <row c=\"B-C00044\" ci=\"21000044\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J214843\" syi=\"31000601\"/>\r\n    <row c=\"B-C00045\" ci=\"21000045\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J173322\" syi=\"31000602\"/>\r\n    <row c=\"B-C00045\" ci=\"21000045\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120252\" syi=\"31000603\"/>\r\n    <row c=\"B-C00045\" ci=\"21000045\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J232305\" syi=\"31000604\"/>\r\n    <row c=\"B-C00045\" ci=\"21000045\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123907\" syi=\"31000605\"/>\r\n    <row c=\"B-C00045\" ci=\"21000045\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144057\" syi=\"31000606\"/>\r\n    <row c=\"B-C00045\" ci=\"21000045\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J223320\" syi=\"31000607\"/>\r\n    <row c=\"B-C00045\" ci=\"21000045\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153247\" syi=\"31000608\"/>\r\n    <row c=\"B-C00045\" ci=\"21000045\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J204623\" syi=\"31000609\"/>\r\n    <row c=\"B-C00045\" ci=\"21000045\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J223348\" syi=\"31000610\"/>\r\n    <row c=\"B-C00045\" ci=\"21000045\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115734\" syi=\"31000611\"/>\r\n    <row c=\"B-C00045\" ci=\"21000045\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154735\" syi=\"31000612\"/>\r\n    <row c=\"B-C00045\" ci=\"21000045\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115314\" syi=\"31000613\"/>\r\n    <row c=\"B-C00046\" ci=\"21000046\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164816\" syi=\"31000614\"/>\r\n    <row c=\"B-C00046\" ci=\"21000046\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132712\" syi=\"31000615\"/>\r\n    <row c=\"B-C00046\" ci=\"21000046\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124530\" syi=\"31000616\"/>\r\n    <row c=\"B-C00046\" ci=\"21000046\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134949\" syi=\"31000617\"/>\r\n    <row c=\"B-C00046\" ci=\"21000046\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132458\" syi=\"31000618\"/>\r\n    <row c=\"B-C00046\" ci=\"21000046\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160927\" syi=\"31000619\"/>\r\n    <row c=\"B-C00046\" ci=\"21000046\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150836\" syi=\"31000620\"/>\r\n    <row c=\"B-C00046\" ci=\"21000046\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102222\" syi=\"31000621\"/>\r\n    <row c=\"B-C00046\" ci=\"21000046\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103144\" syi=\"31000622\"/>\r\n    <row c=\"B-C00047\" ci=\"21000047\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135629\" syi=\"31000623\"/>\r\n    <row c=\"B-C00047\" ci=\"21000047\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115530\" syi=\"31000624\"/>\r\n    <row c=\"B-C00047\" ci=\"21000047\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133111\" syi=\"31000625\"/>\r\n    <row c=\"B-C00047\" ci=\"21000047\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150904\" syi=\"31000626\"/>\r\n    <row c=\"B-C00047\" ci=\"21000047\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111846\" syi=\"31000627\"/>\r\n    <row c=\"B-C00047\" ci=\"21000047\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152950\" syi=\"31000628\"/>\r\n    <row c=\"B-C00047\" ci=\"21000047\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120704\" syi=\"31000629\"/>\r\n    <row c=\"B-C00047\" ci=\"21000047\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104718\" syi=\"31000630\"/>\r\n    <row c=\"B-C00047\" ci=\"21000047\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131808\" syi=\"31000631\"/>\r\n    <row c=\"B-C00048\" ci=\"21000048\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J231644\" syi=\"31000632\"/>\r\n    <row c=\"B-C00048\" ci=\"21000048\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J232147\" syi=\"31000633\"/>\r\n    <row c=\"B-C00048\" ci=\"21000048\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132048\" syi=\"31000634\"/>\r\n    <row c=\"B-C00048\" ci=\"21000048\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172350\" syi=\"31000635\"/>\r\n    <row c=\"B-C00048\" ci=\"21000048\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145619\" syi=\"31000636\"/>\r\n    <row c=\"B-C00048\" ci=\"21000048\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163446\" syi=\"31000637\"/>\r\n    <row c=\"B-C00048\" ci=\"21000048\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140816\" syi=\"31000638\"/>\r\n    <row c=\"B-C00048\" ci=\"21000048\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141015\" syi=\"31000639\"/>\r\n    <row c=\"B-C00048\" ci=\"21000048\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101346\" syi=\"31000640\"/>\r\n    <row c=\"B-C00049\" ci=\"21000049\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212238\" syi=\"31000641\"/>\r\n    <row c=\"B-C00049\" ci=\"21000049\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J235852\" syi=\"31000642\"/>\r\n    <row c=\"B-C00049\" ci=\"21000049\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134349\" syi=\"31000643\"/>\r\n    <row c=\"B-C00049\" ci=\"21000049\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J204221\" syi=\"31000644\"/>\r\n    <row c=\"B-C00049\" ci=\"21000049\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110910\" syi=\"31000645\"/>\r\n    <row c=\"B-C00049\" ci=\"21000049\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131753\" syi=\"31000646\"/>\r\n    <row c=\"B-C00049\" ci=\"21000049\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113221\" syi=\"31000647\"/>\r\n    <row c=\"B-C00049\" ci=\"21000049\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152941\" syi=\"31000648\"/>\r\n    <row c=\"B-C00049\" ci=\"21000049\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144727\" syi=\"31000649\"/>\r\n    <row c=\"B-C00050\" ci=\"21000050\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143320\" syi=\"31000650\"/>\r\n    <row c=\"B-C00050\" ci=\"21000050\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155551\" syi=\"31000651\"/>\r\n    <row c=\"B-C00050\" ci=\"21000050\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162516\" syi=\"31000652\"/>\r\n    <row c=\"B-C00050\" ci=\"21000050\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135827\" syi=\"31000653\"/>\r\n    <row c=\"B-C00050\" ci=\"21000050\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131706\" syi=\"31000654\"/>\r\n    <row c=\"B-C00050\" ci=\"21000050\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J214854\" syi=\"31000655\"/>\r\n    <row c=\"B-C00050\" ci=\"21000050\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150109\" syi=\"31000656\"/>\r\n    <row c=\"B-C00050\" ci=\"21000050\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103512\" syi=\"31000657\"/>\r\n    <row c=\"B-C00050\" ci=\"21000050\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121658\" syi=\"31000658\"/>\r\n    <row c=\"B-C00051\" ci=\"21000051\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143706\" syi=\"31000659\"/>\r\n    <row c=\"B-C00051\" ci=\"21000051\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J235924\" syi=\"31000660\"/>\r\n    <row c=\"B-C00051\" ci=\"21000051\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103854\" syi=\"31000661\"/>\r\n    <row c=\"B-C00051\" ci=\"21000051\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J214725\" syi=\"31000662\"/>\r\n    <row c=\"B-C00051\" ci=\"21000051\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101415\" syi=\"31000663\"/>\r\n    <row c=\"B-C00051\" ci=\"21000051\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122837\" syi=\"31000664\"/>\r\n    <row c=\"B-C00051\" ci=\"21000051\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125727\" syi=\"31000665\"/>\r\n    <row c=\"B-C00051\" ci=\"21000051\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142847\" syi=\"31000666\"/>\r\n    <row c=\"B-C00051\" ci=\"21000051\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155035\" syi=\"31000667\"/>\r\n    <row c=\"B-C00051\" ci=\"21000051\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102504\" syi=\"31000668\"/>\r\n    <row c=\"B-C00052\" ci=\"21000052\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160305\" syi=\"31000669\"/>\r\n    <row c=\"B-C00052\" ci=\"21000052\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151503\" syi=\"31000670\"/>\r\n    <row c=\"B-C00052\" ci=\"21000052\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142838\" syi=\"31000671\"/>\r\n    <row c=\"B-C00052\" ci=\"21000052\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131034\" syi=\"31000672\"/>\r\n    <row c=\"B-C00052\" ci=\"21000052\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J214901\" syi=\"31000673\"/>\r\n    <row c=\"B-C00052\" ci=\"21000052\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113323\" syi=\"31000674\"/>\r\n    <row c=\"B-C00052\" ci=\"21000052\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112956\" syi=\"31000675\"/>\r\n    <row c=\"B-C00052\" ci=\"21000052\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104802\" syi=\"31000676\"/>\r\n    <row c=\"B-C00052\" ci=\"21000052\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100808\" syi=\"31000677\"/>\r\n    <row c=\"B-C00052\" ci=\"21000052\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100509\" syi=\"31000678\"/>\r\n    <row c=\"B-C00052\" ci=\"21000052\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142055\" syi=\"31000679\"/>\r\n    <row c=\"B-C00052\" ci=\"21000052\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135141\" syi=\"31000680\"/>\r\n    <row c=\"B-C00053\" ci=\"21000053\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151902\" syi=\"31000681\"/>\r\n    <row c=\"B-C00053\" ci=\"21000053\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J235759\" syi=\"31000682\"/>\r\n    <row c=\"B-C00053\" ci=\"21000053\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164613\" syi=\"31000683\"/>\r\n    <row c=\"B-C00053\" ci=\"21000053\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J225805\" syi=\"31000684\"/>\r\n    <row c=\"B-C00053\" ci=\"21000053\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112916\" syi=\"31000685\"/>\r\n    <row c=\"B-C00053\" ci=\"21000053\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115347\" syi=\"31000686\"/>\r\n    <row c=\"B-C00053\" ci=\"21000053\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J224217\" syi=\"31000687\"/>\r\n    <row c=\"B-C00053\" ci=\"21000053\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110555\" syi=\"31000688\"/>\r\n    <row c=\"B-C00053\" ci=\"21000053\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143455\" syi=\"31000689\"/>\r\n    <row c=\"B-C00053\" ci=\"21000053\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111141\" syi=\"31000690\"/>\r\n    <row c=\"B-C00053\" ci=\"21000053\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104606\" syi=\"31000691\"/>\r\n    <row c=\"B-C00053\" ci=\"21000053\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J222830\" syi=\"31000692\"/>\r\n    <row c=\"B-C00054\" ci=\"21000054\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123249\" syi=\"31000693\"/>\r\n    <row c=\"B-C00054\" ci=\"21000054\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115310\" syi=\"31000694\"/>\r\n    <row c=\"B-C00054\" ci=\"21000054\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143702\" syi=\"31000695\"/>\r\n    <row c=\"B-C00054\" ci=\"21000054\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J223538\" syi=\"31000696\"/>\r\n    <row c=\"B-C00054\" ci=\"21000054\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131618\" syi=\"31000697\"/>\r\n    <row c=\"B-C00054\" ci=\"21000054\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J215944\" syi=\"31000698\"/>\r\n    <row c=\"B-C00054\" ci=\"21000054\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121952\" syi=\"31000699\"/>\r\n    <row c=\"B-C00054\" ci=\"21000054\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121928\" syi=\"31000700\"/>\r\n    <row c=\"B-C00054\" ci=\"21000054\" r=\"B-R00006\" ri=\"11000006\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105439\" syi=\"31000701\"/>\r\n    <row c=\"B-C00055\" ci=\"21000055\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150627\" syi=\"31000702\"/>\r\n    <row c=\"B-C00055\" ci=\"21000055\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121745\" syi=\"31000703\"/>\r\n    <row c=\"B-C00055\" ci=\"21000055\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141438\" syi=\"31000704\"/>\r\n    <row c=\"B-C00055\" ci=\"21000055\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J214929\" syi=\"31000705\"/>\r\n    <row c=\"B-C00055\" ci=\"21000055\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130709\" syi=\"31000706\"/>\r\n    <row c=\"B-C00055\" ci=\"21000055\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103924\" syi=\"31000707\"/>\r\n    <row c=\"B-C00055\" ci=\"21000055\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J211000\" syi=\"31000708\"/>\r\n    <row c=\"B-C00055\" ci=\"21000055\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123555\" syi=\"31000709\"/>\r\n    <row c=\"B-C00055\" ci=\"21000055\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151125\" syi=\"31000710\"/>\r\n    <row c=\"B-C00055\" ci=\"21000055\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123412\" syi=\"31000711\"/>\r\n    <row c=\"B-C00056\" ci=\"21000056\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112309\" syi=\"31000712\"/>\r\n    <row c=\"B-C00056\" ci=\"21000056\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123850\" syi=\"31000713\"/>\r\n    <row c=\"B-C00056\" ci=\"21000056\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163923\" syi=\"31000714\"/>\r\n    <row c=\"B-C00056\" ci=\"21000056\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143546\" syi=\"31000715\"/>\r\n    <row c=\"B-C00056\" ci=\"21000056\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130832\" syi=\"31000716\"/>\r\n    <row c=\"B-C00056\" ci=\"21000056\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J221337\" syi=\"31000717\"/>\r\n    <row c=\"B-C00056\" ci=\"21000056\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113449\" syi=\"31000718\"/>\r\n    <row c=\"B-C00056\" ci=\"21000056\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212607\" syi=\"31000719\"/>\r\n    <row c=\"B-C00056\" ci=\"21000056\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165157\" syi=\"31000720\"/>\r\n    <row c=\"B-C00057\" ci=\"21000057\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142937\" syi=\"31000721\"/>\r\n    <row c=\"B-C00057\" ci=\"21000057\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120455\" syi=\"31000722\"/>\r\n    <row c=\"B-C00057\" ci=\"21000057\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122638\" syi=\"31000723\"/>\r\n    <row c=\"B-C00057\" ci=\"21000057\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161411\" syi=\"31000724\"/>\r\n    <row c=\"B-C00057\" ci=\"21000057\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124028\" syi=\"31000725\"/>\r\n    <row c=\"B-C00057\" ci=\"21000057\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134735\" syi=\"31000726\"/>\r\n    <row c=\"B-C00057\" ci=\"21000057\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142845\" syi=\"31000727\"/>\r\n    <row c=\"B-C00057\" ci=\"21000057\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140750\" syi=\"31000728\"/>\r\n    <row c=\"B-C00057\" ci=\"21000057\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104515\" syi=\"31000729\"/>\r\n    <row c=\"B-C00057\" ci=\"21000057\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113039\" syi=\"31000730\"/>\r\n    <row c=\"B-C00057\" ci=\"21000057\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111159\" syi=\"31000731\"/>\r\n    <row c=\"B-C00057\" ci=\"21000057\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105342\" syi=\"31000732\"/>\r\n    <row c=\"B-C00058\" ci=\"21000058\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121728\" syi=\"31000733\"/>\r\n    <row c=\"B-C00058\" ci=\"21000058\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115700\" syi=\"31000734\"/>\r\n    <row c=\"B-C00058\" ci=\"21000058\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143234\" syi=\"31000735\"/>\r\n    <row c=\"B-C00058\" ci=\"21000058\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122524\" syi=\"31000736\"/>\r\n    <row c=\"B-C00058\" ci=\"21000058\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124007\" syi=\"31000737\"/>\r\n    <row c=\"B-C00058\" ci=\"21000058\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150533\" syi=\"31000738\"/>\r\n    <row c=\"B-C00058\" ci=\"21000058\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143933\" syi=\"31000739\"/>\r\n    <row c=\"B-C00058\" ci=\"21000058\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J225128\" syi=\"31000740\"/>\r\n    <row c=\"B-C00058\" ci=\"21000058\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133632\" syi=\"31000741\"/>\r\n    <row c=\"B-C00059\" ci=\"21000059\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131744\" syi=\"31000742\"/>\r\n    <row c=\"B-C00059\" ci=\"21000059\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125923\" syi=\"31000743\"/>\r\n    <row c=\"B-C00059\" ci=\"21000059\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161138\" syi=\"31000744\"/>\r\n    <row c=\"B-C00059\" ci=\"21000059\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125824\" syi=\"31000745\"/>\r\n    <row c=\"B-C00059\" ci=\"21000059\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J223511\" syi=\"31000746\"/>\r\n    <row c=\"B-C00059\" ci=\"21000059\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134401\" syi=\"31000747\"/>\r\n    <row c=\"B-C00059\" ci=\"21000059\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J214739\" syi=\"31000748\"/>\r\n    <row c=\"B-C00059\" ci=\"21000059\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104321\" syi=\"31000749\"/>\r\n    <row c=\"B-C00059\" ci=\"21000059\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115327\" syi=\"31000750\"/>\r\n    <row c=\"B-C00059\" ci=\"21000059\" r=\"B-R00007\" ri=\"11000007\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154937\" syi=\"31000751\"/>\r\n    <row c=\"B-C00060\" ci=\"21000060\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112505\" syi=\"31000752\"/>\r\n    <row c=\"B-C00060\" ci=\"21000060\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102739\" syi=\"31000753\"/>\r\n    <row c=\"B-C00060\" ci=\"21000060\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171309\" syi=\"31000754\"/>\r\n    <row c=\"B-C00060\" ci=\"21000060\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133417\" syi=\"31000755\"/>\r\n    <row c=\"B-C00060\" ci=\"21000060\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124749\" syi=\"31000756\"/>\r\n    <row c=\"B-C00060\" ci=\"21000060\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122137\" syi=\"31000757\"/>\r\n    <row c=\"B-C00060\" ci=\"21000060\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140353\" syi=\"31000758\"/>\r\n    <row c=\"B-C00060\" ci=\"21000060\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104029\" syi=\"31000759\"/>\r\n    <row c=\"B-C00060\" ci=\"21000060\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151348\" syi=\"31000760\"/>\r\n    <row c=\"B-C00060\" ci=\"21000060\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163522\" syi=\"31000761\"/>\r\n    <row c=\"B-C00061\" ci=\"21000061\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131315\" syi=\"31000762\"/>\r\n    <row c=\"B-C00061\" ci=\"21000061\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114008\" syi=\"31000763\"/>\r\n    <row c=\"B-C00061\" ci=\"21000061\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J233839\" syi=\"31000764\"/>\r\n    <row c=\"B-C00061\" ci=\"21000061\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112558\" syi=\"31000765\"/>\r\n    <row c=\"B-C00061\" ci=\"21000061\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114308\" syi=\"31000766\"/>\r\n    <row c=\"B-C00061\" ci=\"21000061\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130125\" syi=\"31000767\"/>\r\n    <row c=\"B-C00061\" ci=\"21000061\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J173213\" syi=\"31000768\"/>\r\n    <row c=\"B-C00061\" ci=\"21000061\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160126\" syi=\"31000769\"/>\r\n    <row c=\"B-C00061\" ci=\"21000061\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154813\" syi=\"31000770\"/>\r\n    <row c=\"B-C00061\" ci=\"21000061\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J215151\" syi=\"31000771\"/>\r\n    <row c=\"B-C00062\" ci=\"21000062\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144739\" syi=\"31000772\"/>\r\n    <row c=\"B-C00062\" ci=\"21000062\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102602\" syi=\"31000773\"/>\r\n    <row c=\"B-C00062\" ci=\"21000062\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120924\" syi=\"31000774\"/>\r\n    <row c=\"B-C00062\" ci=\"21000062\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212906\" syi=\"31000775\"/>\r\n    <row c=\"B-C00062\" ci=\"21000062\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101719\" syi=\"31000776\"/>\r\n    <row c=\"B-C00062\" ci=\"21000062\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101824\" syi=\"31000777\"/>\r\n    <row c=\"B-C00062\" ci=\"21000062\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153003\" syi=\"31000778\"/>\r\n    <row c=\"B-C00062\" ci=\"21000062\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105123\" syi=\"31000779\"/>\r\n    <row c=\"B-C00062\" ci=\"21000062\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122635\" syi=\"31000780\"/>\r\n    <row c=\"B-C00062\" ci=\"21000062\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152624\" syi=\"31000781\"/>\r\n    <row c=\"B-C00062\" ci=\"21000062\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J224145\" syi=\"31000782\"/>\r\n    <row c=\"B-C00063\" ci=\"21000063\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163318\" syi=\"31000783\"/>\r\n    <row c=\"B-C00063\" ci=\"21000063\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144004\" syi=\"31000784\"/>\r\n    <row c=\"B-C00063\" ci=\"21000063\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122931\" syi=\"31000785\"/>\r\n    <row c=\"B-C00063\" ci=\"21000063\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J173245\" syi=\"31000786\"/>\r\n    <row c=\"B-C00063\" ci=\"21000063\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145246\" syi=\"31000787\"/>\r\n    <row c=\"B-C00063\" ci=\"21000063\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124526\" syi=\"31000788\"/>\r\n    <row c=\"B-C00063\" ci=\"21000063\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165648\" syi=\"31000789\"/>\r\n    <row c=\"B-C00063\" ci=\"21000063\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134405\" syi=\"31000790\"/>\r\n    <row c=\"B-C00063\" ci=\"21000063\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213111\" syi=\"31000791\"/>\r\n    <row c=\"B-C00064\" ci=\"21000064\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135422\" syi=\"31000792\"/>\r\n    <row c=\"B-C00064\" ci=\"21000064\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153030\" syi=\"31000793\"/>\r\n    <row c=\"B-C00064\" ci=\"21000064\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120634\" syi=\"31000794\"/>\r\n    <row c=\"B-C00064\" ci=\"21000064\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102209\" syi=\"31000795\"/>\r\n    <row c=\"B-C00064\" ci=\"21000064\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123540\" syi=\"31000796\"/>\r\n    <row c=\"B-C00064\" ci=\"21000064\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112715\" syi=\"31000797\"/>\r\n    <row c=\"B-C00064\" ci=\"21000064\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162159\" syi=\"31000798\"/>\r\n    <row c=\"B-C00064\" ci=\"21000064\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122118\" syi=\"31000799\"/>\r\n    <row c=\"B-C00064\" ci=\"21000064\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105244\" syi=\"31000800\"/>\r\n    <row c=\"B-C00064\" ci=\"21000064\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123958\" syi=\"31000801\"/>\r\n    <row c=\"B-C00065\" ci=\"21000065\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J223552\" syi=\"31000802\"/>\r\n    <row c=\"B-C00065\" ci=\"21000065\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J232359\" syi=\"31000803\"/>\r\n    <row c=\"B-C00065\" ci=\"21000065\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171539\" syi=\"31000804\"/>\r\n    <row c=\"B-C00065\" ci=\"21000065\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100102\" syi=\"31000805\"/>\r\n    <row c=\"B-C00065\" ci=\"21000065\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154249\" syi=\"31000806\"/>\r\n    <row c=\"B-C00065\" ci=\"21000065\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105311\" syi=\"31000807\"/>\r\n    <row c=\"B-C00065\" ci=\"21000065\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J210536\" syi=\"31000808\"/>\r\n    <row c=\"B-C00065\" ci=\"21000065\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151248\" syi=\"31000809\"/>\r\n    <row c=\"B-C00065\" ci=\"21000065\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131852\" syi=\"31000810\"/>\r\n    <row c=\"B-C00066\" ci=\"21000066\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141611\" syi=\"31000811\"/>\r\n    <row c=\"B-C00066\" ci=\"21000066\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113723\" syi=\"31000812\"/>\r\n    <row c=\"B-C00066\" ci=\"21000066\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121323\" syi=\"31000813\"/>\r\n    <row c=\"B-C00066\" ci=\"21000066\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144422\" syi=\"31000814\"/>\r\n    <row c=\"B-C00066\" ci=\"21000066\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140722\" syi=\"31000815\"/>\r\n    <row c=\"B-C00066\" ci=\"21000066\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141637\" syi=\"31000816\"/>\r\n    <row c=\"B-C00066\" ci=\"21000066\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112617\" syi=\"31000817\"/>\r\n    <row c=\"B-C00066\" ci=\"21000066\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150754\" syi=\"31000818\"/>\r\n    <row c=\"B-C00066\" ci=\"21000066\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102946\" syi=\"31000819\"/>\r\n    <row c=\"B-C00066\" ci=\"21000066\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115234\" syi=\"31000820\"/>\r\n    <row c=\"B-C00066\" ci=\"21000066\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145145\" syi=\"31000821\"/>\r\n    <row c=\"B-C00066\" ci=\"21000066\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145426\" syi=\"31000822\"/>\r\n    <row c=\"B-C00067\" ci=\"21000067\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122732\" syi=\"31000823\"/>\r\n    <row c=\"B-C00067\" ci=\"21000067\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144203\" syi=\"31000824\"/>\r\n    <row c=\"B-C00067\" ci=\"21000067\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140843\" syi=\"31000825\"/>\r\n    <row c=\"B-C00067\" ci=\"21000067\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155631\" syi=\"31000826\"/>\r\n    <row c=\"B-C00067\" ci=\"21000067\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J235525\" syi=\"31000827\"/>\r\n    <row c=\"B-C00067\" ci=\"21000067\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121749\" syi=\"31000828\"/>\r\n    <row c=\"B-C00067\" ci=\"21000067\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162518\" syi=\"31000829\"/>\r\n    <row c=\"B-C00067\" ci=\"21000067\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132012\" syi=\"31000830\"/>\r\n    <row c=\"B-C00067\" ci=\"21000067\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102038\" syi=\"31000831\"/>\r\n    <row c=\"B-C00067\" ci=\"21000067\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150234\" syi=\"31000832\"/>\r\n    <row c=\"B-C00067\" ci=\"21000067\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112520\" syi=\"31000833\"/>\r\n    <row c=\"B-C00067\" ci=\"21000067\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165412\" syi=\"31000834\"/>\r\n    <row c=\"B-C00068\" ci=\"21000068\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151102\" syi=\"31000835\"/>\r\n    <row c=\"B-C00068\" ci=\"21000068\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133049\" syi=\"31000836\"/>\r\n    <row c=\"B-C00068\" ci=\"21000068\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161628\" syi=\"31000837\"/>\r\n    <row c=\"B-C00068\" ci=\"21000068\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134306\" syi=\"31000838\"/>\r\n    <row c=\"B-C00068\" ci=\"21000068\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131842\" syi=\"31000839\"/>\r\n    <row c=\"B-C00068\" ci=\"21000068\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J232329\" syi=\"31000840\"/>\r\n    <row c=\"B-C00068\" ci=\"21000068\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164921\" syi=\"31000841\"/>\r\n    <row c=\"B-C00068\" ci=\"21000068\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J203814\" syi=\"31000842\"/>\r\n    <row c=\"B-C00068\" ci=\"21000068\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151311\" syi=\"31000843\"/>\r\n    <row c=\"B-C00068\" ci=\"21000068\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101650\" syi=\"31000844\"/>\r\n    <row c=\"B-C00068\" ci=\"21000068\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165006\" syi=\"31000845\"/>\r\n    <row c=\"B-C00069\" ci=\"21000069\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103533\" syi=\"31000846\"/>\r\n    <row c=\"B-C00069\" ci=\"21000069\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101441\" syi=\"31000847\"/>\r\n    <row c=\"B-C00069\" ci=\"21000069\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124253\" syi=\"31000848\"/>\r\n    <row c=\"B-C00069\" ci=\"21000069\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J232200\" syi=\"31000849\"/>\r\n    <row c=\"B-C00069\" ci=\"21000069\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144326\" syi=\"31000850\"/>\r\n    <row c=\"B-C00069\" ci=\"21000069\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124449\" syi=\"31000851\"/>\r\n    <row c=\"B-C00069\" ci=\"21000069\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100642\" syi=\"31000852\"/>\r\n    <row c=\"B-C00069\" ci=\"21000069\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133150\" syi=\"31000853\"/>\r\n    <row c=\"B-C00069\" ci=\"21000069\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164126\" syi=\"31000854\"/>\r\n    <row c=\"B-C00069\" ci=\"21000069\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171142\" syi=\"31000855\"/>\r\n    <row c=\"B-C00069\" ci=\"21000069\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145634\" syi=\"31000856\"/>\r\n    <row c=\"B-C00070\" ci=\"21000070\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151431\" syi=\"31000857\"/>\r\n    <row c=\"B-C00070\" ci=\"21000070\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J233555\" syi=\"31000858\"/>\r\n    <row c=\"B-C00070\" ci=\"21000070\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100651\" syi=\"31000859\"/>\r\n    <row c=\"B-C00070\" ci=\"21000070\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132103\" syi=\"31000860\"/>\r\n    <row c=\"B-C00070\" ci=\"21000070\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121720\" syi=\"31000861\"/>\r\n    <row c=\"B-C00070\" ci=\"21000070\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J210355\" syi=\"31000862\"/>\r\n    <row c=\"B-C00070\" ci=\"21000070\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125029\" syi=\"31000863\"/>\r\n    <row c=\"B-C00070\" ci=\"21000070\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103619\" syi=\"31000864\"/>\r\n    <row c=\"B-C00070\" ci=\"21000070\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165014\" syi=\"31000865\"/>\r\n    <row c=\"B-C00070\" ci=\"21000070\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124611\" syi=\"31000866\"/>\r\n    <row c=\"B-C00070\" ci=\"21000070\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150418\" syi=\"31000867\"/>\r\n    <row c=\"B-C00070\" ci=\"21000070\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145440\" syi=\"31000868\"/>\r\n    <row c=\"B-C00071\" ci=\"21000071\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113223\" syi=\"31000869\"/>\r\n    <row c=\"B-C00071\" ci=\"21000071\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J234915\" syi=\"31000870\"/>\r\n    <row c=\"B-C00071\" ci=\"21000071\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162042\" syi=\"31000871\"/>\r\n    <row c=\"B-C00071\" ci=\"21000071\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112019\" syi=\"31000872\"/>\r\n    <row c=\"B-C00071\" ci=\"21000071\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162332\" syi=\"31000873\"/>\r\n    <row c=\"B-C00071\" ci=\"21000071\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125350\" syi=\"31000874\"/>\r\n    <row c=\"B-C00071\" ci=\"21000071\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101710\" syi=\"31000875\"/>\r\n    <row c=\"B-C00072\" ci=\"21000072\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J223029\" syi=\"31000876\"/>\r\n    <row c=\"B-C00073\" ci=\"21000073\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J234810\" syi=\"31000877\"/>\r\n    <row c=\"B-C00074\" ci=\"21000074\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135230\" syi=\"31000878\"/>\r\n    <row c=\"B-C00075\" ci=\"21000075\" r=\"B-R00008\" ri=\"11000008\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111038\" syi=\"31000879\"/>\r\n    <row c=\"C-C00076\" ci=\"21000076\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160650\" syi=\"31000880\"/>\r\n    <row c=\"C-C00076\" ci=\"21000076\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114342\" syi=\"31000881\"/>\r\n    <row c=\"C-C00076\" ci=\"21000076\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152031\" syi=\"31000882\"/>\r\n    <row c=\"C-C00076\" ci=\"21000076\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113629\" syi=\"31000883\"/>\r\n    <row c=\"C-C00076\" ci=\"21000076\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J220301\" syi=\"31000884\"/>\r\n    <row c=\"C-C00076\" ci=\"21000076\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102057\" syi=\"31000885\"/>\r\n    <row c=\"C-C00077\" ci=\"21000077\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124753\" syi=\"31000886\"/>\r\n    <row c=\"C-C00077\" ci=\"21000077\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114225\" syi=\"31000887\"/>\r\n    <row c=\"C-C00077\" ci=\"21000077\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105002\" syi=\"31000888\"/>\r\n    <row c=\"C-C00077\" ci=\"21000077\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111218\" syi=\"31000889\"/>\r\n    <row c=\"C-C00077\" ci=\"21000077\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111634\" syi=\"31000890\"/>\r\n    <row c=\"C-C00077\" ci=\"21000077\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105007\" syi=\"31000891\"/>\r\n    <row c=\"C-C00078\" ci=\"21000078\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J205027\" syi=\"31000892\"/>\r\n    <row c=\"C-C00078\" ci=\"21000078\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111355\" syi=\"31000893\"/>\r\n    <row c=\"C-C00078\" ci=\"21000078\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101012\" syi=\"31000894\"/>\r\n    <row c=\"C-C00078\" ci=\"21000078\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161338\" syi=\"31000895\"/>\r\n    <row c=\"C-C00078\" ci=\"21000078\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170002\" syi=\"31000896\"/>\r\n    <row c=\"C-C00078\" ci=\"21000078\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104654\" syi=\"31000897\"/>\r\n    <row c=\"C-C00078\" ci=\"21000078\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124329\" syi=\"31000898\"/>\r\n    <row c=\"C-C00079\" ci=\"21000079\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114648\" syi=\"31000899\"/>\r\n    <row c=\"C-C00079\" ci=\"21000079\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131228\" syi=\"31000900\"/>\r\n    <row c=\"C-C00079\" ci=\"21000079\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110448\" syi=\"31000901\"/>\r\n    <row c=\"C-C00079\" ci=\"21000079\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144621\" syi=\"31000902\"/>\r\n    <row c=\"C-C00079\" ci=\"21000079\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153104\" syi=\"31000903\"/>\r\n    <row c=\"C-C00079\" ci=\"21000079\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100932\" syi=\"31000904\"/>\r\n    <row c=\"C-C00080\" ci=\"21000080\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114048\" syi=\"31000905\"/>\r\n    <row c=\"C-C00080\" ci=\"21000080\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115706\" syi=\"31000906\"/>\r\n    <row c=\"C-C00080\" ci=\"21000080\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123230\" syi=\"31000907\"/>\r\n    <row c=\"C-C00080\" ci=\"21000080\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152218\" syi=\"31000908\"/>\r\n    <row c=\"C-C00080\" ci=\"21000080\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123303\" syi=\"31000909\"/>\r\n    <row c=\"C-C00080\" ci=\"21000080\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102856\" syi=\"31000910\"/>\r\n    <row c=\"C-C00080\" ci=\"21000080\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151900\" syi=\"31000911\"/>\r\n    <row c=\"C-C00081\" ci=\"21000081\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124646\" syi=\"31000912\"/>\r\n    <row c=\"C-C00081\" ci=\"21000081\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153528\" syi=\"31000913\"/>\r\n    <row c=\"C-C00081\" ci=\"21000081\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112850\" syi=\"31000914\"/>\r\n    <row c=\"C-C00081\" ci=\"21000081\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102257\" syi=\"31000915\"/>\r\n    <row c=\"C-C00081\" ci=\"21000081\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142414\" syi=\"31000916\"/>\r\n    <row c=\"C-C00081\" ci=\"21000081\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165803\" syi=\"31000917\"/>\r\n    <row c=\"C-C00082\" ci=\"21000082\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115918\" syi=\"31000918\"/>\r\n    <row c=\"C-C00082\" ci=\"21000082\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J222104\" syi=\"31000919\"/>\r\n    <row c=\"C-C00082\" ci=\"21000082\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124203\" syi=\"31000920\"/>\r\n    <row c=\"C-C00082\" ci=\"21000082\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112608\" syi=\"31000921\"/>\r\n    <row c=\"C-C00082\" ci=\"21000082\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161657\" syi=\"31000922\"/>\r\n    <row c=\"C-C00082\" ci=\"21000082\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111805\" syi=\"31000923\"/>\r\n    <row c=\"C-C00083\" ci=\"21000083\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113451\" syi=\"31000924\"/>\r\n    <row c=\"C-C00083\" ci=\"21000083\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141007\" syi=\"31000925\"/>\r\n    <row c=\"C-C00083\" ci=\"21000083\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164034\" syi=\"31000926\"/>\r\n    <row c=\"C-C00083\" ci=\"21000083\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101750\" syi=\"31000927\"/>\r\n    <row c=\"C-C00083\" ci=\"21000083\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165001\" syi=\"31000928\"/>\r\n    <row c=\"C-C00083\" ci=\"21000083\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111619\" syi=\"31000929\"/>\r\n    <row c=\"C-C00084\" ci=\"21000084\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140521\" syi=\"31000930\"/>\r\n    <row c=\"C-C00084\" ci=\"21000084\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140752\" syi=\"31000931\"/>\r\n    <row c=\"C-C00084\" ci=\"21000084\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143447\" syi=\"31000932\"/>\r\n    <row c=\"C-C00084\" ci=\"21000084\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142018\" syi=\"31000933\"/>\r\n    <row c=\"C-C00084\" ci=\"21000084\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105102\" syi=\"31000934\"/>\r\n    <row c=\"C-C00084\" ci=\"21000084\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124630\" syi=\"31000935\"/>\r\n    <row c=\"C-C00085\" ci=\"21000085\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165302\" syi=\"31000936\"/>\r\n    <row c=\"C-C00085\" ci=\"21000085\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143916\" syi=\"31000937\"/>\r\n    <row c=\"C-C00085\" ci=\"21000085\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J221414\" syi=\"31000938\"/>\r\n    <row c=\"C-C00085\" ci=\"21000085\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153903\" syi=\"31000939\"/>\r\n    <row c=\"C-C00085\" ci=\"21000085\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103955\" syi=\"31000940\"/>\r\n    <row c=\"C-C00085\" ci=\"21000085\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J210952\" syi=\"31000941\"/>\r\n    <row c=\"C-C00086\" ci=\"21000086\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134102\" syi=\"31000942\"/>\r\n    <row c=\"C-C00086\" ci=\"21000086\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140050\" syi=\"31000943\"/>\r\n    <row c=\"C-C00086\" ci=\"21000086\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131757\" syi=\"31000944\"/>\r\n    <row c=\"C-C00086\" ci=\"21000086\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140341\" syi=\"31000945\"/>\r\n    <row c=\"C-C00086\" ci=\"21000086\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111856\" syi=\"31000946\"/>\r\n    <row c=\"C-C00086\" ci=\"21000086\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102407\" syi=\"31000947\"/>\r\n    <row c=\"C-C00086\" ci=\"21000086\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151341\" syi=\"31000948\"/>\r\n    <row c=\"C-C00087\" ci=\"21000087\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110706\" syi=\"31000949\"/>\r\n    <row c=\"C-C00087\" ci=\"21000087\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133651\" syi=\"31000950\"/>\r\n    <row c=\"C-C00087\" ci=\"21000087\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123452\" syi=\"31000951\"/>\r\n    <row c=\"C-C00087\" ci=\"21000087\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102143\" syi=\"31000952\"/>\r\n    <row c=\"C-C00087\" ci=\"21000087\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J220832\" syi=\"31000953\"/>\r\n    <row c=\"C-C00087\" ci=\"21000087\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160847\" syi=\"31000954\"/>\r\n    <row c=\"C-C00088\" ci=\"21000088\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125949\" syi=\"31000955\"/>\r\n    <row c=\"C-C00088\" ci=\"21000088\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164250\" syi=\"31000956\"/>\r\n    <row c=\"C-C00088\" ci=\"21000088\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212329\" syi=\"31000957\"/>\r\n    <row c=\"C-C00088\" ci=\"21000088\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112905\" syi=\"31000958\"/>\r\n    <row c=\"C-C00088\" ci=\"21000088\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144447\" syi=\"31000959\"/>\r\n    <row c=\"C-C00088\" ci=\"21000088\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113530\" syi=\"31000960\"/>\r\n    <row c=\"C-C00088\" ci=\"21000088\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103604\" syi=\"31000961\"/>\r\n    <row c=\"C-C00089\" ci=\"21000089\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142038\" syi=\"31000962\"/>\r\n    <row c=\"C-C00089\" ci=\"21000089\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130403\" syi=\"31000963\"/>\r\n    <row c=\"C-C00089\" ci=\"21000089\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132525\" syi=\"31000964\"/>\r\n    <row c=\"C-C00089\" ci=\"21000089\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103653\" syi=\"31000965\"/>\r\n    <row c=\"C-C00089\" ci=\"21000089\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154642\" syi=\"31000966\"/>\r\n    <row c=\"C-C00089\" ci=\"21000089\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163526\" syi=\"31000967\"/>\r\n    <row c=\"C-C00090\" ci=\"21000090\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212713\" syi=\"31000968\"/>\r\n    <row c=\"C-C00090\" ci=\"21000090\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132635\" syi=\"31000969\"/>\r\n    <row c=\"C-C00090\" ci=\"21000090\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114330\" syi=\"31000970\"/>\r\n    <row c=\"C-C00090\" ci=\"21000090\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J224926\" syi=\"31000971\"/>\r\n    <row c=\"C-C00090\" ci=\"21000090\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113619\" syi=\"31000972\"/>\r\n    <row c=\"C-C00090\" ci=\"21000090\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J214654\" syi=\"31000973\"/>\r\n    <row c=\"C-C00091\" ci=\"21000091\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151429\" syi=\"31000974\"/>\r\n    <row c=\"C-C00091\" ci=\"21000091\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111214\" syi=\"31000975\"/>\r\n    <row c=\"C-C00091\" ci=\"21000091\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113420\" syi=\"31000976\"/>\r\n    <row c=\"C-C00091\" ci=\"21000091\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135526\" syi=\"31000977\"/>\r\n    <row c=\"C-C00091\" ci=\"21000091\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164116\" syi=\"31000978\"/>\r\n    <row c=\"C-C00091\" ci=\"21000091\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J214227\" syi=\"31000979\"/>\r\n    <row c=\"C-C00092\" ci=\"21000092\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164342\" syi=\"31000980\"/>\r\n    <row c=\"C-C00092\" ci=\"21000092\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151538\" syi=\"31000981\"/>\r\n    <row c=\"C-C00092\" ci=\"21000092\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125938\" syi=\"31000982\"/>\r\n    <row c=\"C-C00092\" ci=\"21000092\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165806\" syi=\"31000983\"/>\r\n    <row c=\"C-C00092\" ci=\"21000092\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122803\" syi=\"31000984\"/>\r\n    <row c=\"C-C00092\" ci=\"21000092\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113243\" syi=\"31000985\"/>\r\n    <row c=\"C-C00092\" ci=\"21000092\" r=\"C-R00010\" ri=\"11000010\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134022\" syi=\"31000986\"/>\r\n    <row c=\"C-C00093\" ci=\"21000093\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152143\" syi=\"31000987\"/>\r\n    <row c=\"C-C00093\" ci=\"21000093\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170717\" syi=\"31000988\"/>\r\n    <row c=\"C-C00093\" ci=\"21000093\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121452\" syi=\"31000989\"/>\r\n    <row c=\"C-C00093\" ci=\"21000093\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124126\" syi=\"31000990\"/>\r\n    <row c=\"C-C00093\" ci=\"21000093\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J173230\" syi=\"31000991\"/>\r\n    <row c=\"C-C00093\" ci=\"21000093\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164457\" syi=\"31000992\"/>\r\n    <row c=\"C-C00093\" ci=\"21000093\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112944\" syi=\"31000993\"/>\r\n    <row c=\"C-C00094\" ci=\"21000094\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115253\" syi=\"31000994\"/>\r\n    <row c=\"C-C00094\" ci=\"21000094\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100118\" syi=\"31000995\"/>\r\n    <row c=\"C-C00094\" ci=\"21000094\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100620\" syi=\"31000996\"/>\r\n    <row c=\"C-C00094\" ci=\"21000094\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145916\" syi=\"31000997\"/>\r\n    <row c=\"C-C00094\" ci=\"21000094\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J223207\" syi=\"31000998\"/>\r\n    <row c=\"C-C00094\" ci=\"21000094\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144646\" syi=\"31000999\"/>\r\n    <row c=\"C-C00094\" ci=\"21000094\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142520\" syi=\"31001000\"/>\r\n    <row c=\"C-C00095\" ci=\"21000095\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J230226\" syi=\"31001001\"/>\r\n    <row c=\"C-C00095\" ci=\"21000095\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150704\" syi=\"31001002\"/>\r\n    <row c=\"C-C00095\" ci=\"21000095\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J225524\" syi=\"31001003\"/>\r\n    <row c=\"C-C00095\" ci=\"21000095\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133234\" syi=\"31001004\"/>\r\n    <row c=\"C-C00095\" ci=\"21000095\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125833\" syi=\"31001005\"/>\r\n    <row c=\"C-C00095\" ci=\"21000095\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104459\" syi=\"31001006\"/>\r\n    <row c=\"C-C00096\" ci=\"21000096\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164713\" syi=\"31001007\"/>\r\n    <row c=\"C-C00096\" ci=\"21000096\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135355\" syi=\"31001008\"/>\r\n    <row c=\"C-C00096\" ci=\"21000096\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J220838\" syi=\"31001009\"/>\r\n    <row c=\"C-C00096\" ci=\"21000096\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J225949\" syi=\"31001010\"/>\r\n    <row c=\"C-C00096\" ci=\"21000096\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130535\" syi=\"31001011\"/>\r\n    <row c=\"C-C00096\" ci=\"21000096\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111255\" syi=\"31001012\"/>\r\n    <row c=\"C-C00096\" ci=\"21000096\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121628\" syi=\"31001013\"/>\r\n    <row c=\"C-C00097\" ci=\"21000097\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J221117\" syi=\"31001014\"/>\r\n    <row c=\"C-C00097\" ci=\"21000097\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115015\" syi=\"31001015\"/>\r\n    <row c=\"C-C00097\" ci=\"21000097\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172751\" syi=\"31001016\"/>\r\n    <row c=\"C-C00097\" ci=\"21000097\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134301\" syi=\"31001017\"/>\r\n    <row c=\"C-C00097\" ci=\"21000097\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104351\" syi=\"31001018\"/>\r\n    <row c=\"C-C00097\" ci=\"21000097\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144408\" syi=\"31001019\"/>\r\n    <row c=\"C-C00098\" ci=\"21000098\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J220950\" syi=\"31001020\"/>\r\n    <row c=\"C-C00098\" ci=\"21000098\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165815\" syi=\"31001021\"/>\r\n    <row c=\"C-C00098\" ci=\"21000098\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120452\" syi=\"31001022\"/>\r\n    <row c=\"C-C00098\" ci=\"21000098\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142026\" syi=\"31001023\"/>\r\n    <row c=\"C-C00098\" ci=\"21000098\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111031\" syi=\"31001024\"/>\r\n    <row c=\"C-C00098\" ci=\"21000098\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130116\" syi=\"31001025\"/>\r\n    <row c=\"C-C00099\" ci=\"21000099\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111309\" syi=\"31001026\"/>\r\n    <row c=\"C-C00099\" ci=\"21000099\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122213\" syi=\"31001027\"/>\r\n    <row c=\"C-C00099\" ci=\"21000099\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170740\" syi=\"31001028\"/>\r\n    <row c=\"C-C00099\" ci=\"21000099\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113543\" syi=\"31001029\"/>\r\n    <row c=\"C-C00099\" ci=\"21000099\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170817\" syi=\"31001030\"/>\r\n    <row c=\"C-C00099\" ci=\"21000099\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123405\" syi=\"31001031\"/>\r\n    <row c=\"C-C00099\" ci=\"21000099\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125741\" syi=\"31001032\"/>\r\n    <row c=\"C-C00100\" ci=\"21000100\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114627\" syi=\"31001033\"/>\r\n    <row c=\"C-C00100\" ci=\"21000100\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155117\" syi=\"31001034\"/>\r\n    <row c=\"C-C00100\" ci=\"21000100\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165118\" syi=\"31001035\"/>\r\n    <row c=\"C-C00100\" ci=\"21000100\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141004\" syi=\"31001036\"/>\r\n    <row c=\"C-C00100\" ci=\"21000100\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J174317\" syi=\"31001037\"/>\r\n    <row c=\"C-C00100\" ci=\"21000100\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145040\" syi=\"31001038\"/>\r\n    <row c=\"C-C00100\" ci=\"21000100\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171549\" syi=\"31001039\"/>\r\n    <row c=\"C-C00101\" ci=\"21000101\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100009\" syi=\"31001040\"/>\r\n    <row c=\"C-C00101\" ci=\"21000101\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124257\" syi=\"31001041\"/>\r\n    <row c=\"C-C00101\" ci=\"21000101\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154530\" syi=\"31001042\"/>\r\n    <row c=\"C-C00101\" ci=\"21000101\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152636\" syi=\"31001043\"/>\r\n    <row c=\"C-C00101\" ci=\"21000101\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100728\" syi=\"31001044\"/>\r\n    <row c=\"C-C00101\" ci=\"21000101\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115504\" syi=\"31001045\"/>\r\n    <row c=\"C-C00102\" ci=\"21000102\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104905\" syi=\"31001046\"/>\r\n    <row c=\"C-C00102\" ci=\"21000102\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125149\" syi=\"31001047\"/>\r\n    <row c=\"C-C00102\" ci=\"21000102\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172743\" syi=\"31001048\"/>\r\n    <row c=\"C-C00102\" ci=\"21000102\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111421\" syi=\"31001049\"/>\r\n    <row c=\"C-C00102\" ci=\"21000102\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152146\" syi=\"31001050\"/>\r\n    <row c=\"C-C00102\" ci=\"21000102\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111603\" syi=\"31001051\"/>\r\n    <row c=\"C-C00103\" ci=\"21000103\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114127\" syi=\"31001052\"/>\r\n    <row c=\"C-C00103\" ci=\"21000103\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113923\" syi=\"31001053\"/>\r\n    <row c=\"C-C00103\" ci=\"21000103\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123837\" syi=\"31001054\"/>\r\n    <row c=\"C-C00103\" ci=\"21000103\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125049\" syi=\"31001055\"/>\r\n    <row c=\"C-C00103\" ci=\"21000103\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161455\" syi=\"31001056\"/>\r\n    <row c=\"C-C00103\" ci=\"21000103\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124715\" syi=\"31001057\"/>\r\n    <row c=\"C-C00103\" ci=\"21000103\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124813\" syi=\"31001058\"/>\r\n    <row c=\"C-C00104\" ci=\"21000104\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120945\" syi=\"31001059\"/>\r\n    <row c=\"C-C00104\" ci=\"21000104\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155541\" syi=\"31001060\"/>\r\n    <row c=\"C-C00104\" ci=\"21000104\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105017\" syi=\"31001061\"/>\r\n    <row c=\"C-C00104\" ci=\"21000104\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154900\" syi=\"31001062\"/>\r\n    <row c=\"C-C00104\" ci=\"21000104\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164951\" syi=\"31001063\"/>\r\n    <row c=\"C-C00104\" ci=\"21000104\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162459\" syi=\"31001064\"/>\r\n    <row c=\"C-C00104\" ci=\"21000104\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141832\" syi=\"31001065\"/>\r\n    <row c=\"C-C00105\" ci=\"21000105\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115136\" syi=\"31001066\"/>\r\n    <row c=\"C-C00105\" ci=\"21000105\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112854\" syi=\"31001067\"/>\r\n    <row c=\"C-C00105\" ci=\"21000105\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J222222\" syi=\"31001068\"/>\r\n    <row c=\"C-C00105\" ci=\"21000105\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124654\" syi=\"31001069\"/>\r\n    <row c=\"C-C00105\" ci=\"21000105\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132750\" syi=\"31001070\"/>\r\n    <row c=\"C-C00105\" ci=\"21000105\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170511\" syi=\"31001071\"/>\r\n    <row c=\"C-C00105\" ci=\"21000105\" r=\"C-R00011\" ri=\"11000011\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155852\" syi=\"31001072\"/>\r\n    <row c=\"C-C00106\" ci=\"21000106\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121856\" syi=\"31001073\"/>\r\n    <row c=\"C-C00106\" ci=\"21000106\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131025\" syi=\"31001074\"/>\r\n    <row c=\"C-C00106\" ci=\"21000106\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122854\" syi=\"31001075\"/>\r\n    <row c=\"C-C00106\" ci=\"21000106\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132222\" syi=\"31001076\"/>\r\n    <row c=\"C-C00106\" ci=\"21000106\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J203753\" syi=\"31001077\"/>\r\n    <row c=\"C-C00106\" ci=\"21000106\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130835\" syi=\"31001078\"/>\r\n    <row c=\"C-C00106\" ci=\"21000106\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134123\" syi=\"31001079\"/>\r\n    <row c=\"C-C00107\" ci=\"21000107\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133857\" syi=\"31001080\"/>\r\n    <row c=\"C-C00107\" ci=\"21000107\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171813\" syi=\"31001081\"/>\r\n    <row c=\"C-C00107\" ci=\"21000107\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143513\" syi=\"31001082\"/>\r\n    <row c=\"C-C00107\" ci=\"21000107\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112656\" syi=\"31001083\"/>\r\n    <row c=\"C-C00107\" ci=\"21000107\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154357\" syi=\"31001084\"/>\r\n    <row c=\"C-C00107\" ci=\"21000107\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154145\" syi=\"31001085\"/>\r\n    <row c=\"C-C00107\" ci=\"21000107\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100129\" syi=\"31001086\"/>\r\n    <row c=\"C-C00108\" ci=\"21000108\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155124\" syi=\"31001087\"/>\r\n    <row c=\"C-C00108\" ci=\"21000108\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133207\" syi=\"31001088\"/>\r\n    <row c=\"C-C00108\" ci=\"21000108\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124830\" syi=\"31001089\"/>\r\n    <row c=\"C-C00108\" ci=\"21000108\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144725\" syi=\"31001090\"/>\r\n    <row c=\"C-C00108\" ci=\"21000108\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170409\" syi=\"31001091\"/>\r\n    <row c=\"C-C00108\" ci=\"21000108\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103326\" syi=\"31001092\"/>\r\n    <row c=\"C-C00109\" ci=\"21000109\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160739\" syi=\"31001093\"/>\r\n    <row c=\"C-C00109\" ci=\"21000109\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133041\" syi=\"31001094\"/>\r\n    <row c=\"C-C00109\" ci=\"21000109\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J205412\" syi=\"31001095\"/>\r\n    <row c=\"C-C00109\" ci=\"21000109\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145851\" syi=\"31001096\"/>\r\n    <row c=\"C-C00109\" ci=\"21000109\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132737\" syi=\"31001097\"/>\r\n    <row c=\"C-C00109\" ci=\"21000109\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130247\" syi=\"31001098\"/>\r\n    <row c=\"C-C00110\" ci=\"21000110\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151405\" syi=\"31001099\"/>\r\n    <row c=\"C-C00110\" ci=\"21000110\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131802\" syi=\"31001100\"/>\r\n    <row c=\"C-C00110\" ci=\"21000110\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J221515\" syi=\"31001101\"/>\r\n    <row c=\"C-C00110\" ci=\"21000110\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142951\" syi=\"31001102\"/>\r\n    <row c=\"C-C00110\" ci=\"21000110\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101736\" syi=\"31001103\"/>\r\n    <row c=\"C-C00110\" ci=\"21000110\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J233739\" syi=\"31001104\"/>\r\n    <row c=\"C-C00110\" ci=\"21000110\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J221447\" syi=\"31001105\"/>\r\n    <row c=\"C-C00111\" ci=\"21000111\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145645\" syi=\"31001106\"/>\r\n    <row c=\"C-C00111\" ci=\"21000111\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153051\" syi=\"31001107\"/>\r\n    <row c=\"C-C00111\" ci=\"21000111\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141451\" syi=\"31001108\"/>\r\n    <row c=\"C-C00111\" ci=\"21000111\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131859\" syi=\"31001109\"/>\r\n    <row c=\"C-C00111\" ci=\"21000111\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144553\" syi=\"31001110\"/>\r\n    <row c=\"C-C00111\" ci=\"21000111\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145615\" syi=\"31001111\"/>\r\n    <row c=\"C-C00111\" ci=\"21000111\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J223109\" syi=\"31001112\"/>\r\n    <row c=\"C-C00112\" ci=\"21000112\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132721\" syi=\"31001113\"/>\r\n    <row c=\"C-C00112\" ci=\"21000112\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103353\" syi=\"31001114\"/>\r\n    <row c=\"C-C00112\" ci=\"21000112\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J173223\" syi=\"31001115\"/>\r\n    <row c=\"C-C00112\" ci=\"21000112\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104837\" syi=\"31001116\"/>\r\n    <row c=\"C-C00112\" ci=\"21000112\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163745\" syi=\"31001117\"/>\r\n    <row c=\"C-C00112\" ci=\"21000112\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101500\" syi=\"31001118\"/>\r\n    <row c=\"C-C00112\" ci=\"21000112\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J224826\" syi=\"31001119\"/>\r\n    <row c=\"C-C00113\" ci=\"21000113\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J230905\" syi=\"31001120\"/>\r\n    <row c=\"C-C00113\" ci=\"21000113\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110924\" syi=\"31001121\"/>\r\n    <row c=\"C-C00113\" ci=\"21000113\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122220\" syi=\"31001122\"/>\r\n    <row c=\"C-C00113\" ci=\"21000113\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165153\" syi=\"31001123\"/>\r\n    <row c=\"C-C00113\" ci=\"21000113\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J204030\" syi=\"31001124\"/>\r\n    <row c=\"C-C00113\" ci=\"21000113\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134136\" syi=\"31001125\"/>\r\n    <row c=\"C-C00113\" ci=\"21000113\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113334\" syi=\"31001126\"/>\r\n    <row c=\"C-C00114\" ci=\"21000114\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125403\" syi=\"31001127\"/>\r\n    <row c=\"C-C00114\" ci=\"21000114\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162437\" syi=\"31001128\"/>\r\n    <row c=\"C-C00114\" ci=\"21000114\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J235630\" syi=\"31001129\"/>\r\n    <row c=\"C-C00114\" ci=\"21000114\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105409\" syi=\"31001130\"/>\r\n    <row c=\"C-C00114\" ci=\"21000114\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163529\" syi=\"31001131\"/>\r\n    <row c=\"C-C00114\" ci=\"21000114\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152931\" syi=\"31001132\"/>\r\n    <row c=\"C-C00114\" ci=\"21000114\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131559\" syi=\"31001133\"/>\r\n    <row c=\"C-C00115\" ci=\"21000115\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143918\" syi=\"31001134\"/>\r\n    <row c=\"C-C00115\" ci=\"21000115\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104643\" syi=\"31001135\"/>\r\n    <row c=\"C-C00115\" ci=\"21000115\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212304\" syi=\"31001136\"/>\r\n    <row c=\"C-C00115\" ci=\"21000115\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154634\" syi=\"31001137\"/>\r\n    <row c=\"C-C00115\" ci=\"21000115\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172052\" syi=\"31001138\"/>\r\n    <row c=\"C-C00115\" ci=\"21000115\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135036\" syi=\"31001139\"/>\r\n    <row c=\"C-C00116\" ci=\"21000116\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134431\" syi=\"31001140\"/>\r\n    <row c=\"C-C00116\" ci=\"21000116\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121105\" syi=\"31001141\"/>\r\n    <row c=\"C-C00116\" ci=\"21000116\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120357\" syi=\"31001142\"/>\r\n    <row c=\"C-C00116\" ci=\"21000116\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101854\" syi=\"31001143\"/>\r\n    <row c=\"C-C00116\" ci=\"21000116\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J232826\" syi=\"31001144\"/>\r\n    <row c=\"C-C00116\" ci=\"21000116\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154934\" syi=\"31001145\"/>\r\n    <row c=\"C-C00117\" ci=\"21000117\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170132\" syi=\"31001146\"/>\r\n    <row c=\"C-C00117\" ci=\"21000117\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114916\" syi=\"31001147\"/>\r\n    <row c=\"C-C00117\" ci=\"21000117\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142400\" syi=\"31001148\"/>\r\n    <row c=\"C-C00117\" ci=\"21000117\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115502\" syi=\"31001149\"/>\r\n    <row c=\"C-C00117\" ci=\"21000117\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121300\" syi=\"31001150\"/>\r\n    <row c=\"C-C00117\" ci=\"21000117\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J223658\" syi=\"31001151\"/>\r\n    <row c=\"C-C00118\" ci=\"21000118\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124327\" syi=\"31001152\"/>\r\n    <row c=\"C-C00118\" ci=\"21000118\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J220438\" syi=\"31001153\"/>\r\n    <row c=\"C-C00118\" ci=\"21000118\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144636\" syi=\"31001154\"/>\r\n    <row c=\"C-C00118\" ci=\"21000118\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113347\" syi=\"31001155\"/>\r\n    <row c=\"C-C00118\" ci=\"21000118\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150737\" syi=\"31001156\"/>\r\n    <row c=\"C-C00118\" ci=\"21000118\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152044\" syi=\"31001157\"/>\r\n    <row c=\"C-C00119\" ci=\"21000119\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142443\" syi=\"31001158\"/>\r\n    <row c=\"C-C00119\" ci=\"21000119\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164104\" syi=\"31001159\"/>\r\n    <row c=\"C-C00119\" ci=\"21000119\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155008\" syi=\"31001160\"/>\r\n    <row c=\"C-C00119\" ci=\"21000119\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114358\" syi=\"31001161\"/>\r\n    <row c=\"C-C00119\" ci=\"21000119\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122259\" syi=\"31001162\"/>\r\n    <row c=\"C-C00119\" ci=\"21000119\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125243\" syi=\"31001163\"/>\r\n    <row c=\"C-C00119\" ci=\"21000119\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114508\" syi=\"31001164\"/>\r\n    <row c=\"C-C00120\" ci=\"21000120\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125216\" syi=\"31001165\"/>\r\n    <row c=\"C-C00120\" ci=\"21000120\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113143\" syi=\"31001166\"/>\r\n    <row c=\"C-C00120\" ci=\"21000120\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101612\" syi=\"31001167\"/>\r\n    <row c=\"C-C00120\" ci=\"21000120\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101354\" syi=\"31001168\"/>\r\n    <row c=\"C-C00120\" ci=\"21000120\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100156\" syi=\"31001169\"/>\r\n    <row c=\"C-C00120\" ci=\"21000120\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110425\" syi=\"31001170\"/>\r\n    <row c=\"C-C00121\" ci=\"21000121\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133121\" syi=\"31001171\"/>\r\n    <row c=\"C-C00121\" ci=\"21000121\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165936\" syi=\"31001172\"/>\r\n    <row c=\"C-C00121\" ci=\"21000121\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213411\" syi=\"31001173\"/>\r\n    <row c=\"C-C00121\" ci=\"21000121\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J231545\" syi=\"31001174\"/>\r\n    <row c=\"C-C00121\" ci=\"21000121\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121603\" syi=\"31001175\"/>\r\n    <row c=\"C-C00121\" ci=\"21000121\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J222120\" syi=\"31001176\"/>\r\n    <row c=\"C-C00121\" ci=\"21000121\" r=\"C-R00012\" ri=\"11000012\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J231240\" syi=\"31001177\"/>\r\n    <row c=\"C-C00122\" ci=\"21000122\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164338\" syi=\"31001178\"/>\r\n    <row c=\"C-C00122\" ci=\"21000122\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142603\" syi=\"31001179\"/>\r\n    <row c=\"C-C00122\" ci=\"21000122\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212812\" syi=\"31001180\"/>\r\n    <row c=\"C-C00122\" ci=\"21000122\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164501\" syi=\"31001181\"/>\r\n    <row c=\"C-C00122\" ci=\"21000122\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144751\" syi=\"31001182\"/>\r\n    <row c=\"C-C00122\" ci=\"21000122\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J214744\" syi=\"31001183\"/>\r\n    <row c=\"C-C00123\" ci=\"21000123\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135304\" syi=\"31001184\"/>\r\n    <row c=\"C-C00123\" ci=\"21000123\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J223601\" syi=\"31001185\"/>\r\n    <row c=\"C-C00123\" ci=\"21000123\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103529\" syi=\"31001186\"/>\r\n    <row c=\"C-C00123\" ci=\"21000123\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161051\" syi=\"31001187\"/>\r\n    <row c=\"C-C00123\" ci=\"21000123\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J224352\" syi=\"31001188\"/>\r\n    <row c=\"C-C00123\" ci=\"21000123\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113048\" syi=\"31001189\"/>\r\n    <row c=\"C-C00124\" ci=\"21000124\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140322\" syi=\"31001190\"/>\r\n    <row c=\"C-C00124\" ci=\"21000124\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152741\" syi=\"31001191\"/>\r\n    <row c=\"C-C00124\" ci=\"21000124\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J222732\" syi=\"31001192\"/>\r\n    <row c=\"C-C00124\" ci=\"21000124\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171542\" syi=\"31001193\"/>\r\n    <row c=\"C-C00124\" ci=\"21000124\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J205136\" syi=\"31001194\"/>\r\n    <row c=\"C-C00124\" ci=\"21000124\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121706\" syi=\"31001195\"/>\r\n    <row c=\"C-C00125\" ci=\"21000125\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143110\" syi=\"31001196\"/>\r\n    <row c=\"C-C00125\" ci=\"21000125\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110121\" syi=\"31001197\"/>\r\n    <row c=\"C-C00125\" ci=\"21000125\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104626\" syi=\"31001198\"/>\r\n    <row c=\"C-C00125\" ci=\"21000125\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212159\" syi=\"31001199\"/>\r\n    <row c=\"C-C00125\" ci=\"21000125\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151733\" syi=\"31001200\"/>\r\n    <row c=\"C-C00125\" ci=\"21000125\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103032\" syi=\"31001201\"/>\r\n    <row c=\"C-C00126\" ci=\"21000126\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150048\" syi=\"31001202\"/>\r\n    <row c=\"C-C00126\" ci=\"21000126\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113432\" syi=\"31001203\"/>\r\n    <row c=\"C-C00126\" ci=\"21000126\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134629\" syi=\"31001204\"/>\r\n    <row c=\"C-C00126\" ci=\"21000126\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113339\" syi=\"31001205\"/>\r\n    <row c=\"C-C00126\" ci=\"21000126\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122041\" syi=\"31001206\"/>\r\n    <row c=\"C-C00126\" ci=\"21000126\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130719\" syi=\"31001207\"/>\r\n    <row c=\"C-C00127\" ci=\"21000127\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J204039\" syi=\"31001208\"/>\r\n    <row c=\"C-C00127\" ci=\"21000127\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101048\" syi=\"31001209\"/>\r\n    <row c=\"C-C00127\" ci=\"21000127\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114119\" syi=\"31001210\"/>\r\n    <row c=\"C-C00127\" ci=\"21000127\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110411\" syi=\"31001211\"/>\r\n    <row c=\"C-C00127\" ci=\"21000127\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104903\" syi=\"31001212\"/>\r\n    <row c=\"C-C00127\" ci=\"21000127\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151433\" syi=\"31001213\"/>\r\n    <row c=\"C-C00128\" ci=\"21000128\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143040\" syi=\"31001214\"/>\r\n    <row c=\"C-C00128\" ci=\"21000128\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133521\" syi=\"31001215\"/>\r\n    <row c=\"C-C00128\" ci=\"21000128\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163911\" syi=\"31001216\"/>\r\n    <row c=\"C-C00128\" ci=\"21000128\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J204842\" syi=\"31001217\"/>\r\n    <row c=\"C-C00128\" ci=\"21000128\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135214\" syi=\"31001218\"/>\r\n    <row c=\"C-C00128\" ci=\"21000128\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131716\" syi=\"31001219\"/>\r\n    <row c=\"C-C00128\" ci=\"21000128\" r=\"C-R00013\" ri=\"11000013\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J225350\" syi=\"31001220\"/>\r\n    <row c=\"C-C00129\" ci=\"21000129\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105447\" syi=\"31001221\"/>\r\n    <row c=\"C-C00129\" ci=\"21000129\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144103\" syi=\"31001222\"/>\r\n    <row c=\"C-C00129\" ci=\"21000129\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165847\" syi=\"31001223\"/>\r\n    <row c=\"C-C00129\" ci=\"21000129\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121921\" syi=\"31001224\"/>\r\n    <row c=\"C-C00129\" ci=\"21000129\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212025\" syi=\"31001225\"/>\r\n    <row c=\"C-C00129\" ci=\"21000129\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145717\" syi=\"31001226\"/>\r\n    <row c=\"C-C00130\" ci=\"21000130\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113705\" syi=\"31001227\"/>\r\n    <row c=\"C-C00130\" ci=\"21000130\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132037\" syi=\"31001228\"/>\r\n    <row c=\"C-C00130\" ci=\"21000130\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J224401\" syi=\"31001229\"/>\r\n    <row c=\"C-C00130\" ci=\"21000130\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152544\" syi=\"31001230\"/>\r\n    <row c=\"C-C00130\" ci=\"21000130\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114506\" syi=\"31001231\"/>\r\n    <row c=\"C-C00130\" ci=\"21000130\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J231245\" syi=\"31001232\"/>\r\n    <row c=\"C-C00131\" ci=\"21000131\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151804\" syi=\"31001233\"/>\r\n    <row c=\"C-C00131\" ci=\"21000131\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105033\" syi=\"31001234\"/>\r\n    <row c=\"C-C00131\" ci=\"21000131\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J214600\" syi=\"31001235\"/>\r\n    <row c=\"C-C00131\" ci=\"21000131\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152333\" syi=\"31001236\"/>\r\n    <row c=\"C-C00131\" ci=\"21000131\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131245\" syi=\"31001237\"/>\r\n    <row c=\"C-C00131\" ci=\"21000131\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151045\" syi=\"31001238\"/>\r\n    <row c=\"C-C00131\" ci=\"21000131\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160822\" syi=\"31001239\"/>\r\n    <row c=\"C-C00132\" ci=\"21000132\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125944\" syi=\"31001240\"/>\r\n    <row c=\"C-C00132\" ci=\"21000132\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J173330\" syi=\"31001241\"/>\r\n    <row c=\"C-C00132\" ci=\"21000132\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115512\" syi=\"31001242\"/>\r\n    <row c=\"C-C00132\" ci=\"21000132\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161854\" syi=\"31001243\"/>\r\n    <row c=\"C-C00132\" ci=\"21000132\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122442\" syi=\"31001244\"/>\r\n    <row c=\"C-C00132\" ci=\"21000132\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114010\" syi=\"31001245\"/>\r\n    <row c=\"C-C00132\" ci=\"21000132\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153546\" syi=\"31001246\"/>\r\n    <row c=\"C-C00133\" ci=\"21000133\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141046\" syi=\"31001247\"/>\r\n    <row c=\"C-C00133\" ci=\"21000133\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160111\" syi=\"31001248\"/>\r\n    <row c=\"C-C00133\" ci=\"21000133\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101243\" syi=\"31001249\"/>\r\n    <row c=\"C-C00133\" ci=\"21000133\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J214009\" syi=\"31001250\"/>\r\n    <row c=\"C-C00133\" ci=\"21000133\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152757\" syi=\"31001251\"/>\r\n    <row c=\"C-C00133\" ci=\"21000133\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164729\" syi=\"31001252\"/>\r\n    <row c=\"C-C00133\" ci=\"21000133\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171420\" syi=\"31001253\"/>\r\n    <row c=\"C-C00134\" ci=\"21000134\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J232441\" syi=\"31001254\"/>\r\n    <row c=\"C-C00134\" ci=\"21000134\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131656\" syi=\"31001255\"/>\r\n    <row c=\"C-C00134\" ci=\"21000134\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135406\" syi=\"31001256\"/>\r\n    <row c=\"C-C00134\" ci=\"21000134\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J230708\" syi=\"31001257\"/>\r\n    <row c=\"C-C00134\" ci=\"21000134\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120124\" syi=\"31001258\"/>\r\n    <row c=\"C-C00134\" ci=\"21000134\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132746\" syi=\"31001259\"/>\r\n    <row c=\"C-C00135\" ci=\"21000135\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212207\" syi=\"31001260\"/>\r\n    <row c=\"C-C00135\" ci=\"21000135\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104416\" syi=\"31001261\"/>\r\n    <row c=\"C-C00135\" ci=\"21000135\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104841\" syi=\"31001262\"/>\r\n    <row c=\"C-C00135\" ci=\"21000135\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172701\" syi=\"31001263\"/>\r\n    <row c=\"C-C00135\" ci=\"21000135\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104835\" syi=\"31001264\"/>\r\n    <row c=\"C-C00135\" ci=\"21000135\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113647\" syi=\"31001265\"/>\r\n    <row c=\"C-C00135\" ci=\"21000135\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144316\" syi=\"31001266\"/>\r\n    <row c=\"C-C00136\" ci=\"21000136\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114612\" syi=\"31001267\"/>\r\n    <row c=\"C-C00136\" ci=\"21000136\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130759\" syi=\"31001268\"/>\r\n    <row c=\"C-C00136\" ci=\"21000136\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164751\" syi=\"31001269\"/>\r\n    <row c=\"C-C00136\" ci=\"21000136\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131324\" syi=\"31001270\"/>\r\n    <row c=\"C-C00136\" ci=\"21000136\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J230722\" syi=\"31001271\"/>\r\n    <row c=\"C-C00136\" ci=\"21000136\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134118\" syi=\"31001272\"/>\r\n    <row c=\"C-C00137\" ci=\"21000137\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164223\" syi=\"31001273\"/>\r\n    <row c=\"C-C00137\" ci=\"21000137\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154449\" syi=\"31001274\"/>\r\n    <row c=\"C-C00137\" ci=\"21000137\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172815\" syi=\"31001275\"/>\r\n    <row c=\"C-C00137\" ci=\"21000137\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151242\" syi=\"31001276\"/>\r\n    <row c=\"C-C00137\" ci=\"21000137\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213423\" syi=\"31001277\"/>\r\n    <row c=\"C-C00137\" ci=\"21000137\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145555\" syi=\"31001278\"/>\r\n    <row c=\"C-C00138\" ci=\"21000138\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101323\" syi=\"31001279\"/>\r\n    <row c=\"C-C00138\" ci=\"21000138\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112954\" syi=\"31001280\"/>\r\n    <row c=\"C-C00138\" ci=\"21000138\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133951\" syi=\"31001281\"/>\r\n    <row c=\"C-C00138\" ci=\"21000138\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150444\" syi=\"31001282\"/>\r\n    <row c=\"C-C00138\" ci=\"21000138\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153858\" syi=\"31001283\"/>\r\n    <row c=\"C-C00138\" ci=\"21000138\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172422\" syi=\"31001284\"/>\r\n    <row c=\"C-C00139\" ci=\"21000139\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155545\" syi=\"31001285\"/>\r\n    <row c=\"C-C00139\" ci=\"21000139\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161441\" syi=\"31001286\"/>\r\n    <row c=\"C-C00139\" ci=\"21000139\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125449\" syi=\"31001287\"/>\r\n    <row c=\"C-C00139\" ci=\"21000139\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J210445\" syi=\"31001288\"/>\r\n    <row c=\"C-C00139\" ci=\"21000139\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123443\" syi=\"31001289\"/>\r\n    <row c=\"C-C00139\" ci=\"21000139\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121422\" syi=\"31001290\"/>\r\n    <row c=\"C-C00139\" ci=\"21000139\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155403\" syi=\"31001291\"/>\r\n    <row c=\"C-C00140\" ci=\"21000140\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103724\" syi=\"31001292\"/>\r\n    <row c=\"C-C00140\" ci=\"21000140\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112948\" syi=\"31001293\"/>\r\n    <row c=\"C-C00140\" ci=\"21000140\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J235330\" syi=\"31001294\"/>\r\n    <row c=\"C-C00140\" ci=\"21000140\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121507\" syi=\"31001295\"/>\r\n    <row c=\"C-C00140\" ci=\"21000140\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J235712\" syi=\"31001296\"/>\r\n    <row c=\"C-C00140\" ci=\"21000140\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125016\" syi=\"31001297\"/>\r\n    <row c=\"C-C00140\" ci=\"21000140\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151516\" syi=\"31001298\"/>\r\n    <row c=\"C-C00141\" ci=\"21000141\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132226\" syi=\"31001299\"/>\r\n    <row c=\"C-C00141\" ci=\"21000141\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170656\" syi=\"31001300\"/>\r\n    <row c=\"C-C00141\" ci=\"21000141\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155722\" syi=\"31001301\"/>\r\n    <row c=\"C-C00141\" ci=\"21000141\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150135\" syi=\"31001302\"/>\r\n    <row c=\"C-C00141\" ci=\"21000141\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151645\" syi=\"31001303\"/>\r\n    <row c=\"C-C00141\" ci=\"21000141\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J211151\" syi=\"31001304\"/>\r\n    <row c=\"C-C00142\" ci=\"21000142\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213109\" syi=\"31001305\"/>\r\n    <row c=\"C-C00142\" ci=\"21000142\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J233628\" syi=\"31001306\"/>\r\n    <row c=\"C-C00142\" ci=\"21000142\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102433\" syi=\"31001307\"/>\r\n    <row c=\"C-C00142\" ci=\"21000142\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111823\" syi=\"31001308\"/>\r\n    <row c=\"C-C00142\" ci=\"21000142\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J211805\" syi=\"31001309\"/>\r\n    <row c=\"C-C00142\" ci=\"21000142\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172028\" syi=\"31001310\"/>\r\n    <row c=\"C-C00143\" ci=\"21000143\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101833\" syi=\"31001311\"/>\r\n    <row c=\"C-C00143\" ci=\"21000143\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104815\" syi=\"31001312\"/>\r\n    <row c=\"C-C00143\" ci=\"21000143\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124635\" syi=\"31001313\"/>\r\n    <row c=\"C-C00143\" ci=\"21000143\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110738\" syi=\"31001314\"/>\r\n    <row c=\"C-C00143\" ci=\"21000143\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170550\" syi=\"31001315\"/>\r\n    <row c=\"C-C00143\" ci=\"21000143\" r=\"C-R00014\" ri=\"11000014\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143704\" syi=\"31001316\"/>\r\n    <row c=\"C-C00144\" ci=\"21000144\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143614\" syi=\"31001317\"/>\r\n    <row c=\"C-C00144\" ci=\"21000144\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170236\" syi=\"31001318\"/>\r\n    <row c=\"C-C00144\" ci=\"21000144\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153034\" syi=\"31001319\"/>\r\n    <row c=\"C-C00144\" ci=\"21000144\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J220338\" syi=\"31001320\"/>\r\n    <row c=\"C-C00144\" ci=\"21000144\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171828\" syi=\"31001321\"/>\r\n    <row c=\"C-C00144\" ci=\"21000144\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112942\" syi=\"31001322\"/>\r\n    <row c=\"C-C00145\" ci=\"21000145\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112709\" syi=\"31001323\"/>\r\n    <row c=\"C-C00145\" ci=\"21000145\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161213\" syi=\"31001324\"/>\r\n    <row c=\"C-C00145\" ci=\"21000145\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140739\" syi=\"31001325\"/>\r\n    <row c=\"C-C00145\" ci=\"21000145\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213534\" syi=\"31001326\"/>\r\n    <row c=\"C-C00145\" ci=\"21000145\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165224\" syi=\"31001327\"/>\r\n    <row c=\"C-C00145\" ci=\"21000145\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170144\" syi=\"31001328\"/>\r\n    <row c=\"C-C00146\" ci=\"21000146\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162010\" syi=\"31001329\"/>\r\n    <row c=\"C-C00146\" ci=\"21000146\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110226\" syi=\"31001330\"/>\r\n    <row c=\"C-C00146\" ci=\"21000146\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104421\" syi=\"31001331\"/>\r\n    <row c=\"C-C00146\" ci=\"21000146\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104330\" syi=\"31001332\"/>\r\n    <row c=\"C-C00146\" ci=\"21000146\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170376\" syi=\"31001333\"/>\r\n    <row c=\"C-C00146\" ci=\"21000146\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100338\" syi=\"31001334\"/>\r\n    <row c=\"C-C00147\" ci=\"21000147\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110034\" syi=\"31001335\"/>\r\n    <row c=\"C-C00147\" ci=\"21000147\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124207\" syi=\"31001336\"/>\r\n    <row c=\"C-C00147\" ci=\"21000147\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132907\" syi=\"31001337\"/>\r\n    <row c=\"C-C00147\" ci=\"21000147\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100015\" syi=\"31001338\"/>\r\n    <row c=\"C-C00147\" ci=\"21000147\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144024\" syi=\"31001339\"/>\r\n    <row c=\"C-C00147\" ci=\"21000147\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122806\" syi=\"31001340\"/>\r\n    <row c=\"C-C00147\" ci=\"21000147\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133250\" syi=\"31001341\"/>\r\n    <row c=\"C-C00148\" ci=\"21000148\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135852\" syi=\"31001342\"/>\r\n    <row c=\"C-C00148\" ci=\"21000148\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130616\" syi=\"31001343\"/>\r\n    <row c=\"C-C00148\" ci=\"21000148\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J204323\" syi=\"31001344\"/>\r\n    <row c=\"C-C00148\" ci=\"21000148\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120742\" syi=\"31001345\"/>\r\n    <row c=\"C-C00148\" ci=\"21000148\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105549\" syi=\"31001346\"/>\r\n    <row c=\"C-C00148\" ci=\"21000148\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103237\" syi=\"31001347\"/>\r\n    <row c=\"C-C00148\" ci=\"21000148\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J215326\" syi=\"31001348\"/>\r\n    <row c=\"C-C00149\" ci=\"21000149\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121700\" syi=\"31001349\"/>\r\n    <row c=\"C-C00149\" ci=\"21000149\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124358\" syi=\"31001350\"/>\r\n    <row c=\"C-C00149\" ci=\"21000149\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112420\" syi=\"31001351\"/>\r\n    <row c=\"C-C00149\" ci=\"21000149\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130022\" syi=\"31001352\"/>\r\n    <row c=\"C-C00149\" ci=\"21000149\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155419\" syi=\"31001353\"/>\r\n    <row c=\"C-C00149\" ci=\"21000149\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135723\" syi=\"31001354\"/>\r\n    <row c=\"C-C00149\" ci=\"21000149\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105201\" syi=\"31001355\"/>\r\n    <row c=\"C-C00150\" ci=\"21000150\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133218\" syi=\"31001356\"/>\r\n    <row c=\"C-C00150\" ci=\"21000150\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143345\" syi=\"31001357\"/>\r\n    <row c=\"C-C00150\" ci=\"21000150\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115448\" syi=\"31001358\"/>\r\n    <row c=\"C-C00150\" ci=\"21000150\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135642\" syi=\"31001359\"/>\r\n    <row c=\"C-C00150\" ci=\"21000150\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J205900\" syi=\"31001360\"/>\r\n    <row c=\"C-C00150\" ci=\"21000150\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112747\" syi=\"31001361\"/>\r\n    <row c=\"C-C00151\" ci=\"21000151\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121027\" syi=\"31001362\"/>\r\n    <row c=\"C-C00151\" ci=\"21000151\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124744\" syi=\"31001363\"/>\r\n    <row c=\"C-C00151\" ci=\"21000151\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161303\" syi=\"31001364\"/>\r\n    <row c=\"C-C00151\" ci=\"21000151\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141848\" syi=\"31001365\"/>\r\n    <row c=\"C-C00151\" ci=\"21000151\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104001\" syi=\"31001366\"/>\r\n    <row c=\"C-C00151\" ci=\"21000151\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102304\" syi=\"31001367\"/>\r\n    <row c=\"C-C00152\" ci=\"21000152\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172852\" syi=\"31001368\"/>\r\n    <row c=\"C-C00152\" ci=\"21000152\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131304\" syi=\"31001369\"/>\r\n    <row c=\"C-C00152\" ci=\"21000152\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145632\" syi=\"31001370\"/>\r\n    <row c=\"C-C00152\" ci=\"21000152\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102515\" syi=\"31001371\"/>\r\n    <row c=\"C-C00152\" ci=\"21000152\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160645\" syi=\"31001372\"/>\r\n    <row c=\"C-C00152\" ci=\"21000152\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135129\" syi=\"31001373\"/>\r\n    <row c=\"C-C00152\" ci=\"21000152\" r=\"C-R00015\" ri=\"11000015\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115909\" syi=\"31001374\"/>\r\n    <row c=\"D-C00153\" ci=\"21000153\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160225\" syi=\"31001375\"/>\r\n    <row c=\"D-C00153\" ci=\"21000153\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J210458\" syi=\"31001376\"/>\r\n    <row c=\"D-C00153\" ci=\"21000153\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113925\" syi=\"31001377\"/>\r\n    <row c=\"D-C00153\" ci=\"21000153\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J204815\" syi=\"31001378\"/>\r\n    <row c=\"D-C00153\" ci=\"21000153\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104754\" syi=\"31001379\"/>\r\n    <row c=\"D-C00153\" ci=\"21000153\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130518\" syi=\"31001380\"/>\r\n    <row c=\"D-C00153\" ci=\"21000153\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142200\" syi=\"31001381\"/>\r\n    <row c=\"D-C00154\" ci=\"21000154\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103731\" syi=\"31001382\"/>\r\n    <row c=\"D-C00154\" ci=\"21000154\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100046\" syi=\"31001383\"/>\r\n    <row c=\"D-C00154\" ci=\"21000154\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J230301\" syi=\"31001384\"/>\r\n    <row c=\"D-C00154\" ci=\"21000154\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165839\" syi=\"31001385\"/>\r\n    <row c=\"D-C00154\" ci=\"21000154\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J235953\" syi=\"31001386\"/>\r\n    <row c=\"D-C00154\" ci=\"21000154\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115018\" syi=\"31001387\"/>\r\n    <row c=\"D-C00154\" ci=\"21000154\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133458\" syi=\"31001388\"/>\r\n    <row c=\"D-C00155\" ci=\"21000155\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J221859\" syi=\"31001389\"/>\r\n    <row c=\"D-C00155\" ci=\"21000155\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170215\" syi=\"31001390\"/>\r\n    <row c=\"D-C00155\" ci=\"21000155\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165820\" syi=\"31001391\"/>\r\n    <row c=\"D-C00155\" ci=\"21000155\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130253\" syi=\"31001392\"/>\r\n    <row c=\"D-C00155\" ci=\"21000155\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120937\" syi=\"31001393\"/>\r\n    <row c=\"D-C00155\" ci=\"21000155\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J214811\" syi=\"31001394\"/>\r\n    <row c=\"D-C00155\" ci=\"21000155\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160419\" syi=\"31001395\"/>\r\n    <row c=\"D-C00156\" ci=\"21000156\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161752\" syi=\"31001396\"/>\r\n    <row c=\"D-C00156\" ci=\"21000156\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112610\" syi=\"31001397\"/>\r\n    <row c=\"D-C00156\" ci=\"21000156\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123726\" syi=\"31001398\"/>\r\n    <row c=\"D-C00156\" ci=\"21000156\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124837\" syi=\"31001399\"/>\r\n    <row c=\"D-C00156\" ci=\"21000156\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151643\" syi=\"31001400\"/>\r\n    <row c=\"D-C00156\" ci=\"21000156\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160321\" syi=\"31001401\"/>\r\n    <row c=\"D-C00156\" ci=\"21000156\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165308\" syi=\"31001402\"/>\r\n    <row c=\"D-C00157\" ci=\"21000157\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171359\" syi=\"31001403\"/>\r\n    <row c=\"D-C00157\" ci=\"21000157\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115547\" syi=\"31001404\"/>\r\n    <row c=\"D-C00157\" ci=\"21000157\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141055\" syi=\"31001405\"/>\r\n    <row c=\"D-C00157\" ci=\"21000157\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153202\" syi=\"31001406\"/>\r\n    <row c=\"D-C00157\" ci=\"21000157\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121845\" syi=\"31001407\"/>\r\n    <row c=\"D-C00157\" ci=\"21000157\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113456\" syi=\"31001408\"/>\r\n    <row c=\"D-C00157\" ci=\"21000157\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144746\" syi=\"31001409\"/>\r\n    <row c=\"D-C00158\" ci=\"21000158\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171554\" syi=\"31001410\"/>\r\n    <row c=\"D-C00158\" ci=\"21000158\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111029\" syi=\"31001411\"/>\r\n    <row c=\"D-C00158\" ci=\"21000158\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145129\" syi=\"31001412\"/>\r\n    <row c=\"D-C00158\" ci=\"21000158\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113730\" syi=\"31001413\"/>\r\n    <row c=\"D-C00158\" ci=\"21000158\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100956\" syi=\"31001414\"/>\r\n    <row c=\"D-C00158\" ci=\"21000158\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134407\" syi=\"31001415\"/>\r\n    <row c=\"D-C00158\" ci=\"21000158\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101507\" syi=\"31001416\"/>\r\n    <row c=\"D-C00159\" ci=\"21000159\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105546\" syi=\"31001417\"/>\r\n    <row c=\"D-C00159\" ci=\"21000159\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123528\" syi=\"31001418\"/>\r\n    <row c=\"D-C00159\" ci=\"21000159\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145318\" syi=\"31001419\"/>\r\n    <row c=\"D-C00159\" ci=\"21000159\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132611\" syi=\"31001420\"/>\r\n    <row c=\"D-C00159\" ci=\"21000159\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153338\" syi=\"31001421\"/>\r\n    <row c=\"D-C00159\" ci=\"21000159\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102534\" syi=\"31001422\"/>\r\n    <row c=\"D-C00160\" ci=\"21000160\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144519\" syi=\"31001423\"/>\r\n    <row c=\"D-C00160\" ci=\"21000160\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141218\" syi=\"31001424\"/>\r\n    <row c=\"D-C00160\" ci=\"21000160\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152255\" syi=\"31001425\"/>\r\n    <row c=\"D-C00160\" ci=\"21000160\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142241\" syi=\"31001426\"/>\r\n    <row c=\"D-C00160\" ci=\"21000160\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131047\" syi=\"31001427\"/>\r\n    <row c=\"D-C00160\" ci=\"21000160\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100150\" syi=\"31001428\"/>\r\n    <row c=\"D-C00161\" ci=\"21000161\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104311\" syi=\"31001429\"/>\r\n    <row c=\"D-C00161\" ci=\"21000161\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111950\" syi=\"31001430\"/>\r\n    <row c=\"D-C00161\" ci=\"21000161\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132754\" syi=\"31001431\"/>\r\n    <row c=\"D-C00161\" ci=\"21000161\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101551\" syi=\"31001432\"/>\r\n    <row c=\"D-C00161\" ci=\"21000161\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J211027\" syi=\"31001433\"/>\r\n    <row c=\"D-C00161\" ci=\"21000161\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105415\" syi=\"31001434\"/>\r\n    <row c=\"D-C00162\" ci=\"21000162\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J224148\" syi=\"31001435\"/>\r\n    <row c=\"D-C00162\" ci=\"21000162\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100806\" syi=\"31001436\"/>\r\n    <row c=\"D-C00162\" ci=\"21000162\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133638\" syi=\"31001437\"/>\r\n    <row c=\"D-C00162\" ci=\"21000162\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J231614\" syi=\"31001438\"/>\r\n    <row c=\"D-C00162\" ci=\"21000162\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103110\" syi=\"31001439\"/>\r\n    <row c=\"D-C00162\" ci=\"21000162\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101706\" syi=\"31001440\"/>\r\n    <row c=\"D-C00163\" ci=\"21000163\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142214\" syi=\"31001441\"/>\r\n    <row c=\"D-C00163\" ci=\"21000163\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155340\" syi=\"31001442\"/>\r\n    <row c=\"D-C00163\" ci=\"21000163\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165326\" syi=\"31001443\"/>\r\n    <row c=\"D-C00163\" ci=\"21000163\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133113\" syi=\"31001444\"/>\r\n    <row c=\"D-C00163\" ci=\"21000163\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122656\" syi=\"31001445\"/>\r\n    <row c=\"D-C00163\" ci=\"21000163\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134716\" syi=\"31001446\"/>\r\n    <row c=\"D-C00163\" ci=\"21000163\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171344\" syi=\"31001447\"/>\r\n    <row c=\"D-C00164\" ci=\"21000164\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161119\" syi=\"31001448\"/>\r\n    <row c=\"D-C00164\" ci=\"21000164\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111404\" syi=\"31001449\"/>\r\n    <row c=\"D-C00164\" ci=\"21000164\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105346\" syi=\"31001450\"/>\r\n    <row c=\"D-C00164\" ci=\"21000164\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154631\" syi=\"31001451\"/>\r\n    <row c=\"D-C00164\" ci=\"21000164\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150112\" syi=\"31001452\"/>\r\n    <row c=\"D-C00164\" ci=\"21000164\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104649\" syi=\"31001453\"/>\r\n    <row c=\"D-C00165\" ci=\"21000165\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J234421\" syi=\"31001454\"/>\r\n    <row c=\"D-C00165\" ci=\"21000165\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105726\" syi=\"31001455\"/>\r\n    <row c=\"D-C00165\" ci=\"21000165\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111758\" syi=\"31001456\"/>\r\n    <row c=\"D-C00165\" ci=\"21000165\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142923\" syi=\"31001457\"/>\r\n    <row c=\"D-C00165\" ci=\"21000165\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114026\" syi=\"31001458\"/>\r\n    <row c=\"D-C00165\" ci=\"21000165\" r=\"D-R00017\" ri=\"11000017\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115118\" syi=\"31001459\"/>\r\n    <row c=\"D-C00166\" ci=\"21000166\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162226\" syi=\"31001460\"/>\r\n    <row c=\"D-C00166\" ci=\"21000166\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165020\" syi=\"31001461\"/>\r\n    <row c=\"D-C00166\" ci=\"21000166\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125302\" syi=\"31001462\"/>\r\n    <row c=\"D-C00166\" ci=\"21000166\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113754\" syi=\"31001463\"/>\r\n    <row c=\"D-C00166\" ci=\"21000166\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153215\" syi=\"31001464\"/>\r\n    <row c=\"D-C00166\" ci=\"21000166\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213820\" syi=\"31001465\"/>\r\n    <row c=\"D-C00167\" ci=\"21000167\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111555\" syi=\"31001466\"/>\r\n    <row c=\"D-C00167\" ci=\"21000167\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131553\" syi=\"31001467\"/>\r\n    <row c=\"D-C00167\" ci=\"21000167\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143841\" syi=\"31001468\"/>\r\n    <row c=\"D-C00167\" ci=\"21000167\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113250\" syi=\"31001469\"/>\r\n    <row c=\"D-C00167\" ci=\"21000167\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J204635\" syi=\"31001470\"/>\r\n    <row c=\"D-C00167\" ci=\"21000167\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212954\" syi=\"31001471\"/>\r\n    <row c=\"D-C00168\" ci=\"21000168\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132309\" syi=\"31001472\"/>\r\n    <row c=\"D-C00168\" ci=\"21000168\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J231341\" syi=\"31001473\"/>\r\n    <row c=\"D-C00168\" ci=\"21000168\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160800\" syi=\"31001474\"/>\r\n    <row c=\"D-C00168\" ci=\"21000168\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155338\" syi=\"31001475\"/>\r\n    <row c=\"D-C00168\" ci=\"21000168\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132149\" syi=\"31001476\"/>\r\n    <row c=\"D-C00168\" ci=\"21000168\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171937\" syi=\"31001477\"/>\r\n    <row c=\"D-C00168\" ci=\"21000168\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152443\" syi=\"31001478\"/>\r\n    <row c=\"D-C00169\" ci=\"21000169\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111329\" syi=\"31001479\"/>\r\n    <row c=\"D-C00169\" ci=\"21000169\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171334\" syi=\"31001480\"/>\r\n    <row c=\"D-C00169\" ci=\"21000169\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115552\" syi=\"31001481\"/>\r\n    <row c=\"D-C00169\" ci=\"21000169\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151520\" syi=\"31001482\"/>\r\n    <row c=\"D-C00169\" ci=\"21000169\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165920\" syi=\"31001483\"/>\r\n    <row c=\"D-C00169\" ci=\"21000169\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145838\" syi=\"31001484\"/>\r\n    <row c=\"D-C00169\" ci=\"21000169\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125031\" syi=\"31001485\"/>\r\n    <row c=\"D-C00170\" ci=\"21000170\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110736\" syi=\"31001486\"/>\r\n    <row c=\"D-C00170\" ci=\"21000170\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165423\" syi=\"31001487\"/>\r\n    <row c=\"D-C00170\" ci=\"21000170\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155521\" syi=\"31001488\"/>\r\n    <row c=\"D-C00170\" ci=\"21000170\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135508\" syi=\"31001489\"/>\r\n    <row c=\"D-C00170\" ci=\"21000170\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103008\" syi=\"31001490\"/>\r\n    <row c=\"D-C00170\" ci=\"21000170\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103704\" syi=\"31001491\"/>\r\n    <row c=\"D-C00170\" ci=\"21000170\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104603\" syi=\"31001492\"/>\r\n    <row c=\"D-C00171\" ci=\"21000171\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163641\" syi=\"31001493\"/>\r\n    <row c=\"D-C00171\" ci=\"21000171\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J203952\" syi=\"31001494\"/>\r\n    <row c=\"D-C00171\" ci=\"21000171\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105411\" syi=\"31001495\"/>\r\n    <row c=\"D-C00171\" ci=\"21000171\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101126\" syi=\"31001496\"/>\r\n    <row c=\"D-C00171\" ci=\"21000171\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122155\" syi=\"31001497\"/>\r\n    <row c=\"D-C00171\" ci=\"21000171\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110016\" syi=\"31001498\"/>\r\n    <row c=\"D-C00171\" ci=\"21000171\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212417\" syi=\"31001499\"/>\r\n    <row c=\"D-C00172\" ci=\"21000172\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142355\" syi=\"31001500\"/>\r\n    <row c=\"D-C00172\" ci=\"21000172\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121347\" syi=\"31001501\"/>\r\n    <row c=\"D-C00172\" ci=\"21000172\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172915\" syi=\"31001502\"/>\r\n    <row c=\"D-C00172\" ci=\"21000172\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155416\" syi=\"31001503\"/>\r\n    <row c=\"D-C00172\" ci=\"21000172\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J211258\" syi=\"31001504\"/>\r\n    <row c=\"D-C00172\" ci=\"21000172\" r=\"D-R00018\" ri=\"11000018\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120643\" syi=\"31001505\"/>\r\n    <row c=\"D-C00173\" ci=\"21000173\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143946\" syi=\"31001506\"/>\r\n    <row c=\"D-C00173\" ci=\"21000173\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125247\" syi=\"31001507\"/>\r\n    <row c=\"D-C00173\" ci=\"21000173\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144732\" syi=\"31001508\"/>\r\n    <row c=\"D-C00173\" ci=\"21000173\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155711\" syi=\"31001509\"/>\r\n    <row c=\"D-C00173\" ci=\"21000173\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J214308\" syi=\"31001510\"/>\r\n    <row c=\"D-C00173\" ci=\"21000173\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134851\" syi=\"31001511\"/>\r\n    <row c=\"D-C00173\" ci=\"21000173\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145452\" syi=\"31001512\"/>\r\n    <row c=\"D-C00174\" ci=\"21000174\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115026\" syi=\"31001513\"/>\r\n    <row c=\"D-C00174\" ci=\"21000174\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151720\" syi=\"31001514\"/>\r\n    <row c=\"D-C00174\" ci=\"21000174\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151353\" syi=\"31001515\"/>\r\n    <row c=\"D-C00174\" ci=\"21000174\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113727\" syi=\"31001516\"/>\r\n    <row c=\"D-C00174\" ci=\"21000174\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130944\" syi=\"31001517\"/>\r\n    <row c=\"D-C00174\" ci=\"21000174\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145238\" syi=\"31001518\"/>\r\n    <row c=\"D-C00174\" ci=\"21000174\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J235219\" syi=\"31001519\"/>\r\n    <row c=\"D-C00175\" ci=\"21000175\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172512\" syi=\"31001520\"/>\r\n    <row c=\"D-C00175\" ci=\"21000175\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141322\" syi=\"31001521\"/>\r\n    <row c=\"D-C00175\" ci=\"21000175\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J210333\" syi=\"31001522\"/>\r\n    <row c=\"D-C00175\" ci=\"21000175\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135836\" syi=\"31001523\"/>\r\n    <row c=\"D-C00175\" ci=\"21000175\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101915\" syi=\"31001524\"/>\r\n    <row c=\"D-C00175\" ci=\"21000175\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130203\" syi=\"31001525\"/>\r\n    <row c=\"D-C00175\" ci=\"21000175\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110719\" syi=\"31001526\"/>\r\n    <row c=\"D-C00176\" ci=\"21000176\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131208\" syi=\"31001527\"/>\r\n    <row c=\"D-C00176\" ci=\"21000176\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121623\" syi=\"31001528\"/>\r\n    <row c=\"D-C00176\" ci=\"21000176\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150637\" syi=\"31001529\"/>\r\n    <row c=\"D-C00176\" ci=\"21000176\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130332\" syi=\"31001530\"/>\r\n    <row c=\"D-C00176\" ci=\"21000176\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J1226-0\" syi=\"31001531\"/>\r\n    <row c=\"D-C00176\" ci=\"21000176\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114355\" syi=\"31001532\"/>\r\n    <row c=\"D-C00177\" ci=\"21000177\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144401\" syi=\"31001533\"/>\r\n    <row c=\"D-C00177\" ci=\"21000177\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103242\" syi=\"31001534\"/>\r\n    <row c=\"D-C00177\" ci=\"21000177\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161815\" syi=\"31001535\"/>\r\n    <row c=\"D-C00177\" ci=\"21000177\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132256\" syi=\"31001536\"/>\r\n    <row c=\"D-C00177\" ci=\"21000177\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162819\" syi=\"31001537\"/>\r\n    <row c=\"D-C00177\" ci=\"21000177\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131004\" syi=\"31001538\"/>\r\n    <row c=\"D-C00177\" ci=\"21000177\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141931\" syi=\"31001539\"/>\r\n    <row c=\"D-C00178\" ci=\"21000178\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112630\" syi=\"31001540\"/>\r\n    <row c=\"D-C00178\" ci=\"21000178\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154109\" syi=\"31001541\"/>\r\n    <row c=\"D-C00178\" ci=\"21000178\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153116\" syi=\"31001542\"/>\r\n    <row c=\"D-C00178\" ci=\"21000178\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160455\" syi=\"31001543\"/>\r\n    <row c=\"D-C00178\" ci=\"21000178\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102439\" syi=\"31001544\"/>\r\n    <row c=\"D-C00178\" ci=\"21000178\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160459\" syi=\"31001545\"/>\r\n    <row c=\"D-C00178\" ci=\"21000178\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131712\" syi=\"31001546\"/>\r\n    <row c=\"D-C00179\" ci=\"21000179\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140244\" syi=\"31001547\"/>\r\n    <row c=\"D-C00179\" ci=\"21000179\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150635\" syi=\"31001548\"/>\r\n    <row c=\"D-C00179\" ci=\"21000179\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125213\" syi=\"31001549\"/>\r\n    <row c=\"D-C00179\" ci=\"21000179\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154541\" syi=\"31001550\"/>\r\n    <row c=\"D-C00179\" ci=\"21000179\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120409\" syi=\"31001551\"/>\r\n    <row c=\"D-C00179\" ci=\"21000179\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140545\" syi=\"31001552\"/>\r\n    <row c=\"D-C00180\" ci=\"21000180\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162251\" syi=\"31001553\"/>\r\n    <row c=\"D-C00180\" ci=\"21000180\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120450\" syi=\"31001554\"/>\r\n    <row c=\"D-C00180\" ci=\"21000180\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J220151\" syi=\"31001555\"/>\r\n    <row c=\"D-C00180\" ci=\"21000180\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104502\" syi=\"31001556\"/>\r\n    <row c=\"D-C00180\" ci=\"21000180\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152654\" syi=\"31001557\"/>\r\n    <row c=\"D-C00180\" ci=\"21000180\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124727\" syi=\"31001558\"/>\r\n    <row c=\"D-C00180\" ci=\"21000180\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151940\" syi=\"31001559\"/>\r\n    <row c=\"D-C00181\" ci=\"21000181\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212129\" syi=\"31001560\"/>\r\n    <row c=\"D-C00181\" ci=\"21000181\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141633\" syi=\"31001561\"/>\r\n    <row c=\"D-C00181\" ci=\"21000181\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145604\" syi=\"31001562\"/>\r\n    <row c=\"D-C00181\" ci=\"21000181\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212851\" syi=\"31001563\"/>\r\n    <row c=\"D-C00181\" ci=\"21000181\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145659\" syi=\"31001564\"/>\r\n    <row c=\"D-C00181\" ci=\"21000181\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165719\" syi=\"31001565\"/>\r\n    <row c=\"D-C00182\" ci=\"21000182\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154706\" syi=\"31001566\"/>\r\n    <row c=\"D-C00182\" ci=\"21000182\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141252\" syi=\"31001567\"/>\r\n    <row c=\"D-C00182\" ci=\"21000182\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112110\" syi=\"31001568\"/>\r\n    <row c=\"D-C00182\" ci=\"21000182\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140912\" syi=\"31001569\"/>\r\n    <row c=\"D-C00182\" ci=\"21000182\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165532\" syi=\"31001570\"/>\r\n    <row c=\"D-C00182\" ci=\"21000182\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161037\" syi=\"31001571\"/>\r\n    <row c=\"D-C00182\" ci=\"21000182\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130828\" syi=\"31001572\"/>\r\n    <row c=\"D-C00183\" ci=\"21000183\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122934\" syi=\"31001573\"/>\r\n    <row c=\"D-C00183\" ci=\"21000183\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163435\" syi=\"31001574\"/>\r\n    <row c=\"D-C00183\" ci=\"21000183\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J221855\" syi=\"31001575\"/>\r\n    <row c=\"D-C00183\" ci=\"21000183\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124109\" syi=\"31001576\"/>\r\n    <row c=\"D-C00183\" ci=\"21000183\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123458\" syi=\"31001577\"/>\r\n    <row c=\"D-C00183\" ci=\"21000183\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134527\" syi=\"31001578\"/>\r\n    <row c=\"D-C00183\" ci=\"21000183\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133157\" syi=\"31001579\"/>\r\n    <row c=\"D-C00184\" ci=\"21000184\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141342\" syi=\"31001580\"/>\r\n    <row c=\"D-C00184\" ci=\"21000184\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145757\" syi=\"31001581\"/>\r\n    <row c=\"D-C00184\" ci=\"21000184\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130343\" syi=\"31001582\"/>\r\n    <row c=\"D-C00184\" ci=\"21000184\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152628\" syi=\"31001583\"/>\r\n    <row c=\"D-C00184\" ci=\"21000184\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112928\" syi=\"31001584\"/>\r\n    <row c=\"D-C00184\" ci=\"21000184\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133358\" syi=\"31001585\"/>\r\n    <row c=\"D-C00185\" ci=\"21000185\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102844\" syi=\"31001586\"/>\r\n    <row c=\"D-C00185\" ci=\"21000185\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134732\" syi=\"31001587\"/>\r\n    <row c=\"D-C00185\" ci=\"21000185\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213615\" syi=\"31001588\"/>\r\n    <row c=\"D-C00185\" ci=\"21000185\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131037\" syi=\"31001589\"/>\r\n    <row c=\"D-C00185\" ci=\"21000185\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154724\" syi=\"31001590\"/>\r\n    <row c=\"D-C00185\" ci=\"21000185\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213139\" syi=\"31001591\"/>\r\n    <row c=\"D-C00185\" ci=\"21000185\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103104\" syi=\"31001592\"/>\r\n    <row c=\"D-C00186\" ci=\"21000186\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121116\" syi=\"31001593\"/>\r\n    <row c=\"D-C00186\" ci=\"21000186\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142822\" syi=\"31001594\"/>\r\n    <row c=\"D-C00186\" ci=\"21000186\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102521\" syi=\"31001595\"/>\r\n    <row c=\"D-C00186\" ci=\"21000186\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J215935\" syi=\"31001596\"/>\r\n    <row c=\"D-C00186\" ci=\"21000186\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162303\" syi=\"31001597\"/>\r\n    <row c=\"D-C00186\" ci=\"21000186\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102409\" syi=\"31001598\"/>\r\n    <row c=\"D-C00186\" ci=\"21000186\" r=\"D-R00019\" ri=\"11000019\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104714\" syi=\"31001599\"/>\r\n    <row c=\"D-C00187\" ci=\"21000187\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171225\" syi=\"31001600\"/>\r\n    <row c=\"D-C00187\" ci=\"21000187\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124306\" syi=\"31001601\"/>\r\n    <row c=\"D-C00187\" ci=\"21000187\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135908\" syi=\"31001602\"/>\r\n    <row c=\"D-C00187\" ci=\"21000187\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124930\" syi=\"31001603\"/>\r\n    <row c=\"D-C00187\" ci=\"21000187\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162632\" syi=\"31001604\"/>\r\n    <row c=\"D-C00187\" ci=\"21000187\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155313\" syi=\"31001605\"/>\r\n    <row c=\"D-C00188\" ci=\"21000188\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J211328\" syi=\"31001606\"/>\r\n    <row c=\"D-C00188\" ci=\"21000188\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J204506\" syi=\"31001607\"/>\r\n    <row c=\"D-C00188\" ci=\"21000188\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133957\" syi=\"31001608\"/>\r\n    <row c=\"D-C00188\" ci=\"21000188\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115304\" syi=\"31001609\"/>\r\n    <row c=\"D-C00188\" ci=\"21000188\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112150\" syi=\"31001610\"/>\r\n    <row c=\"D-C00188\" ci=\"21000188\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131252\" syi=\"31001611\"/>\r\n    <row c=\"D-C00189\" ci=\"21000189\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133936\" syi=\"31001612\"/>\r\n    <row c=\"D-C00189\" ci=\"21000189\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143140\" syi=\"31001613\"/>\r\n    <row c=\"D-C00189\" ci=\"21000189\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154833\" syi=\"31001614\"/>\r\n    <row c=\"D-C00189\" ci=\"21000189\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101331\" syi=\"31001615\"/>\r\n    <row c=\"D-C00189\" ci=\"21000189\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151359\" syi=\"31001616\"/>\r\n    <row c=\"D-C00189\" ci=\"21000189\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150951\" syi=\"31001617\"/>\r\n    <row c=\"D-C00189\" ci=\"21000189\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140215\" syi=\"31001618\"/>\r\n    <row c=\"D-C00190\" ci=\"21000190\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152421\" syi=\"31001619\"/>\r\n    <row c=\"D-C00190\" ci=\"21000190\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130554\" syi=\"31001620\"/>\r\n    <row c=\"D-C00190\" ci=\"21000190\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101604\" syi=\"31001621\"/>\r\n    <row c=\"D-C00190\" ci=\"21000190\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150320\" syi=\"31001622\"/>\r\n    <row c=\"D-C00190\" ci=\"21000190\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134414\" syi=\"31001623\"/>\r\n    <row c=\"D-C00190\" ci=\"21000190\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131113\" syi=\"31001624\"/>\r\n    <row c=\"D-C00191\" ci=\"21000191\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124933\" syi=\"31001625\"/>\r\n    <row c=\"D-C00191\" ci=\"21000191\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150044\" syi=\"31001626\"/>\r\n    <row c=\"D-C00191\" ci=\"21000191\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155200\" syi=\"31001627\"/>\r\n    <row c=\"D-C00191\" ci=\"21000191\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145944\" syi=\"31001628\"/>\r\n    <row c=\"D-C00191\" ci=\"21000191\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145535\" syi=\"31001629\"/>\r\n    <row c=\"D-C00191\" ci=\"21000191\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141021\" syi=\"31001630\"/>\r\n    <row c=\"D-C00192\" ci=\"21000192\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J223312\" syi=\"31001631\"/>\r\n    <row c=\"D-C00192\" ci=\"21000192\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212028\" syi=\"31001632\"/>\r\n    <row c=\"D-C00192\" ci=\"21000192\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164835\" syi=\"31001633\"/>\r\n    <row c=\"D-C00192\" ci=\"21000192\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115528\" syi=\"31001634\"/>\r\n    <row c=\"D-C00192\" ci=\"21000192\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143922\" syi=\"31001635\"/>\r\n    <row c=\"D-C00192\" ci=\"21000192\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J225234\" syi=\"31001636\"/>\r\n    <row c=\"D-C00192\" ci=\"21000192\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165645\" syi=\"31001637\"/>\r\n    <row c=\"D-C00193\" ci=\"21000193\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100142\" syi=\"31001638\"/>\r\n    <row c=\"D-C00193\" ci=\"21000193\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101129\" syi=\"31001639\"/>\r\n    <row c=\"D-C00193\" ci=\"21000193\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141220\" syi=\"31001640\"/>\r\n    <row c=\"D-C00193\" ci=\"21000193\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112450\" syi=\"31001641\"/>\r\n    <row c=\"D-C00193\" ci=\"21000193\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121558\" syi=\"31001642\"/>\r\n    <row c=\"D-C00193\" ci=\"21000193\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104404\" syi=\"31001643\"/>\r\n    <row c=\"D-C00194\" ci=\"21000194\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152633\" syi=\"31001644\"/>\r\n    <row c=\"D-C00194\" ci=\"21000194\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104624\" syi=\"31001645\"/>\r\n    <row c=\"D-C00194\" ci=\"21000194\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113227\" syi=\"31001646\"/>\r\n    <row c=\"D-C00194\" ci=\"21000194\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J211817\" syi=\"31001647\"/>\r\n    <row c=\"D-C00194\" ci=\"21000194\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144329\" syi=\"31001648\"/>\r\n    <row c=\"D-C00194\" ci=\"21000194\" r=\"D-R00020\" ri=\"11000020\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154102\" syi=\"31001649\"/>\r\n    <row c=\"D-C00195\" ci=\"21000195\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162231\" syi=\"31001650\"/>\r\n    <row c=\"D-C00195\" ci=\"21000195\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151303\" syi=\"31001651\"/>\r\n    <row c=\"D-C00195\" ci=\"21000195\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145848\" syi=\"31001652\"/>\r\n    <row c=\"D-C00195\" ci=\"21000195\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152720\" syi=\"31001653\"/>\r\n    <row c=\"D-C00195\" ci=\"21000195\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123753\" syi=\"31001654\"/>\r\n    <row c=\"D-C00195\" ci=\"21000195\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101042\" syi=\"31001655\"/>\r\n    <row c=\"D-C00195\" ci=\"21000195\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J223824\" syi=\"31001656\"/>\r\n    <row c=\"D-C00196\" ci=\"21000196\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125929\" syi=\"31001657\"/>\r\n    <row c=\"D-C00196\" ci=\"21000196\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J225111\" syi=\"31001658\"/>\r\n    <row c=\"D-C00196\" ci=\"21000196\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135346\" syi=\"31001659\"/>\r\n    <row c=\"D-C00196\" ci=\"21000196\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144120\" syi=\"31001660\"/>\r\n    <row c=\"D-C00196\" ci=\"21000196\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J215743\" syi=\"31001661\"/>\r\n    <row c=\"D-C00196\" ci=\"21000196\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111007\" syi=\"31001662\"/>\r\n    <row c=\"D-C00197\" ci=\"21000197\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J231710\" syi=\"31001663\"/>\r\n    <row c=\"D-C00197\" ci=\"21000197\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141001\" syi=\"31001664\"/>\r\n    <row c=\"D-C00197\" ci=\"21000197\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163444\" syi=\"31001665\"/>\r\n    <row c=\"D-C00197\" ci=\"21000197\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103141\" syi=\"31001666\"/>\r\n    <row c=\"D-C00197\" ci=\"21000197\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112215\" syi=\"31001667\"/>\r\n    <row c=\"D-C00197\" ci=\"21000197\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J215758\" syi=\"31001668\"/>\r\n    <row c=\"D-C00197\" ci=\"21000197\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101145\" syi=\"31001669\"/>\r\n    <row c=\"D-C00198\" ci=\"21000198\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212838\" syi=\"31001670\"/>\r\n    <row c=\"D-C00198\" ci=\"21000198\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111458\" syi=\"31001671\"/>\r\n    <row c=\"D-C00198\" ci=\"21000198\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115554\" syi=\"31001672\"/>\r\n    <row c=\"D-C00198\" ci=\"21000198\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170445\" syi=\"31001673\"/>\r\n    <row c=\"D-C00198\" ci=\"21000198\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162831\" syi=\"31001674\"/>\r\n    <row c=\"D-C00198\" ci=\"21000198\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124236\" syi=\"31001675\"/>\r\n    <row c=\"D-C00198\" ci=\"21000198\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101535\" syi=\"31001676\"/>\r\n    <row c=\"D-C00199\" ci=\"21000199\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113551\" syi=\"31001677\"/>\r\n    <row c=\"D-C00199\" ci=\"21000199\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162656\" syi=\"31001678\"/>\r\n    <row c=\"D-C00199\" ci=\"21000199\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114530\" syi=\"31001679\"/>\r\n    <row c=\"D-C00199\" ci=\"21000199\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155214\" syi=\"31001680\"/>\r\n    <row c=\"D-C00199\" ci=\"21000199\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102336\" syi=\"31001681\"/>\r\n    <row c=\"D-C00199\" ci=\"21000199\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123352\" syi=\"31001682\"/>\r\n    <row c=\"D-C00200\" ci=\"21000200\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100937\" syi=\"31001683\"/>\r\n    <row c=\"D-C00200\" ci=\"21000200\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100107\" syi=\"31001684\"/>\r\n    <row c=\"D-C00200\" ci=\"21000200\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J204230\" syi=\"31001685\"/>\r\n    <row c=\"D-C00200\" ci=\"21000200\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J233909\" syi=\"31001686\"/>\r\n    <row c=\"D-C00200\" ci=\"21000200\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134354\" syi=\"31001687\"/>\r\n    <row c=\"D-C00200\" ci=\"21000200\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160046\" syi=\"31001688\"/>\r\n    <row c=\"D-C00201\" ci=\"21000201\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162816\" syi=\"31001689\"/>\r\n    <row c=\"D-C00201\" ci=\"21000201\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170305\" syi=\"31001690\"/>\r\n    <row c=\"D-C00201\" ci=\"21000201\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102045\" syi=\"31001691\"/>\r\n    <row c=\"D-C00201\" ci=\"21000201\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100830\" syi=\"31001692\"/>\r\n    <row c=\"D-C00201\" ci=\"21000201\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115658\" syi=\"31001693\"/>\r\n    <row c=\"D-C00201\" ci=\"21000201\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123947\" syi=\"31001694\"/>\r\n    <row c=\"D-C00202\" ci=\"21000202\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J224754\" syi=\"31001695\"/>\r\n    <row c=\"D-C00202\" ci=\"21000202\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140246\" syi=\"31001696\"/>\r\n    <row c=\"D-C00202\" ci=\"21000202\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J214440\" syi=\"31001697\"/>\r\n    <row c=\"D-C00202\" ci=\"21000202\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144135\" syi=\"31001698\"/>\r\n    <row c=\"D-C00202\" ci=\"21000202\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151021\" syi=\"31001699\"/>\r\n    <row c=\"D-C00202\" ci=\"21000202\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114133\" syi=\"31001700\"/>\r\n    <row c=\"D-C00203\" ci=\"21000203\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130810\" syi=\"31001701\"/>\r\n    <row c=\"D-C00203\" ci=\"21000203\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141425\" syi=\"31001702\"/>\r\n    <row c=\"D-C00203\" ci=\"21000203\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121847\" syi=\"31001703\"/>\r\n    <row c=\"D-C00203\" ci=\"21000203\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150805\" syi=\"31001704\"/>\r\n    <row c=\"D-C00203\" ci=\"21000203\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140810\" syi=\"31001705\"/>\r\n    <row c=\"D-C00203\" ci=\"21000203\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141104\" syi=\"31001706\"/>\r\n    <row c=\"D-C00204\" ci=\"21000204\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114735\" syi=\"31001707\"/>\r\n    <row c=\"D-C00204\" ci=\"21000204\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J205922\" syi=\"31001708\"/>\r\n    <row c=\"D-C00204\" ci=\"21000204\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J215101\" syi=\"31001709\"/>\r\n    <row c=\"D-C00204\" ci=\"21000204\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144131\" syi=\"31001710\"/>\r\n    <row c=\"D-C00204\" ci=\"21000204\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213429\" syi=\"31001711\"/>\r\n    <row c=\"D-C00204\" ci=\"21000204\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121006\" syi=\"31001712\"/>\r\n    <row c=\"D-C00205\" ci=\"21000205\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111644\" syi=\"31001713\"/>\r\n    <row c=\"D-C00205\" ci=\"21000205\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164031\" syi=\"31001714\"/>\r\n    <row c=\"D-C00205\" ci=\"21000205\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155249\" syi=\"31001715\"/>\r\n    <row c=\"D-C00205\" ci=\"21000205\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103228\" syi=\"31001716\"/>\r\n    <row c=\"D-C00205\" ci=\"21000205\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164025\" syi=\"31001717\"/>\r\n    <row c=\"D-C00205\" ci=\"21000205\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163217\" syi=\"31001718\"/>\r\n    <row c=\"D-C00205\" ci=\"21000205\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103631\" syi=\"31001719\"/>\r\n    <row c=\"D-C00206\" ci=\"21000206\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145739\" syi=\"31001720\"/>\r\n    <row c=\"D-C00206\" ci=\"21000206\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114408\" syi=\"31001721\"/>\r\n    <row c=\"D-C00206\" ci=\"21000206\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131704\" syi=\"31001722\"/>\r\n    <row c=\"D-C00206\" ci=\"21000206\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112404\" syi=\"31001723\"/>\r\n    <row c=\"D-C00206\" ci=\"21000206\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104723\" syi=\"31001724\"/>\r\n    <row c=\"D-C00206\" ci=\"21000206\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123746\" syi=\"31001725\"/>\r\n    <row c=\"D-C00206\" ci=\"21000206\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J225441\" syi=\"31001726\"/>\r\n    <row c=\"D-C00207\" ci=\"21000207\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111629\" syi=\"31001727\"/>\r\n    <row c=\"D-C00207\" ci=\"21000207\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140154\" syi=\"31001728\"/>\r\n    <row c=\"D-C00207\" ci=\"21000207\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144743\" syi=\"31001729\"/>\r\n    <row c=\"D-C00207\" ci=\"21000207\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J210247\" syi=\"31001730\"/>\r\n    <row c=\"D-C00207\" ci=\"21000207\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133013\" syi=\"31001731\"/>\r\n    <row c=\"D-C00207\" ci=\"21000207\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160032\" syi=\"31001732\"/>\r\n    <row c=\"D-C00207\" ci=\"21000207\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111009\" syi=\"31001733\"/>\r\n    <row c=\"D-C00208\" ci=\"21000208\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142117\" syi=\"31001734\"/>\r\n    <row c=\"D-C00208\" ci=\"21000208\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110417\" syi=\"31001735\"/>\r\n    <row c=\"D-C00208\" ci=\"21000208\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J204853\" syi=\"31001736\"/>\r\n    <row c=\"D-C00208\" ci=\"21000208\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132144\" syi=\"31001737\"/>\r\n    <row c=\"D-C00208\" ci=\"21000208\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160016\" syi=\"31001738\"/>\r\n    <row c=\"D-C00208\" ci=\"21000208\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142335\" syi=\"31001739\"/>\r\n    <row c=\"D-C00209\" ci=\"21000209\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105835\" syi=\"31001740\"/>\r\n    <row c=\"D-C00209\" ci=\"21000209\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102055\" syi=\"31001741\"/>\r\n    <row c=\"D-C00209\" ci=\"21000209\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140932\" syi=\"31001742\"/>\r\n    <row c=\"D-C00209\" ci=\"21000209\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134333\" syi=\"31001743\"/>\r\n    <row c=\"D-C00209\" ci=\"21000209\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160156\" syi=\"31001744\"/>\r\n    <row c=\"D-C00209\" ci=\"21000209\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150944\" syi=\"31001745\"/>\r\n    <row c=\"D-C00210\" ci=\"21000210\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113508\" syi=\"31001746\"/>\r\n    <row c=\"D-C00210\" ci=\"21000210\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151757\" syi=\"31001747\"/>\r\n    <row c=\"D-C00210\" ci=\"21000210\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142800\" syi=\"31001748\"/>\r\n    <row c=\"D-C00210\" ci=\"21000210\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170642\" syi=\"31001749\"/>\r\n    <row c=\"D-C00210\" ci=\"21000210\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130451\" syi=\"31001750\"/>\r\n    <row c=\"D-C00210\" ci=\"21000210\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113158\" syi=\"31001751\"/>\r\n    <row c=\"D-C00210\" ci=\"21000210\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J225133\" syi=\"31001752\"/>\r\n    <row c=\"D-C00211\" ci=\"21000211\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100001\" syi=\"31001753\"/>\r\n    <row c=\"D-C00211\" ci=\"21000211\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155831\" syi=\"31001754\"/>\r\n    <row c=\"D-C00211\" ci=\"21000211\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145749\" syi=\"31001755\"/>\r\n    <row c=\"D-C00211\" ci=\"21000211\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164659\" syi=\"31001756\"/>\r\n    <row c=\"D-C00211\" ci=\"21000211\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135543\" syi=\"31001757\"/>\r\n    <row c=\"D-C00211\" ci=\"21000211\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132735\" syi=\"31001758\"/>\r\n    <row c=\"D-C00212\" ci=\"21000212\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141740\" syi=\"31001759\"/>\r\n    <row c=\"D-C00212\" ci=\"21000212\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101315\" syi=\"31001760\"/>\r\n    <row c=\"D-C00212\" ci=\"21000212\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123345\" syi=\"31001761\"/>\r\n    <row c=\"D-C00212\" ci=\"21000212\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105621\" syi=\"31001762\"/>\r\n    <row c=\"D-C00212\" ci=\"21000212\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113813\" syi=\"31001763\"/>\r\n    <row c=\"D-C00212\" ci=\"21000212\" r=\"D-R00021\" ri=\"11000021\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135807\" syi=\"31001764\"/>\r\n    <row c=\"D-C00213\" ci=\"21000213\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122728\" syi=\"31001765\"/>\r\n    <row c=\"D-C00213\" ci=\"21000213\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110915\" syi=\"31001766\"/>\r\n    <row c=\"D-C00213\" ci=\"21000213\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171430\" syi=\"31001767\"/>\r\n    <row c=\"D-C00213\" ci=\"21000213\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154321\" syi=\"31001768\"/>\r\n    <row c=\"D-C00213\" ci=\"21000213\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104729\" syi=\"31001769\"/>\r\n    <row c=\"D-C00213\" ci=\"21000213\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111753\" syi=\"31001770\"/>\r\n    <row c=\"D-C00214\" ci=\"21000214\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140823\" syi=\"31001771\"/>\r\n    <row c=\"D-C00214\" ci=\"21000214\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161357\" syi=\"31001772\"/>\r\n    <row c=\"D-C00214\" ci=\"21000214\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162205\" syi=\"31001773\"/>\r\n    <row c=\"D-C00214\" ci=\"21000214\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113950\" syi=\"31001774\"/>\r\n    <row c=\"D-C00214\" ci=\"21000214\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124224\" syi=\"31001775\"/>\r\n    <row c=\"D-C00214\" ci=\"21000214\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155959\" syi=\"31001776\"/>\r\n    <row c=\"D-C00215\" ci=\"21000215\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103213\" syi=\"31001777\"/>\r\n    <row c=\"D-C00215\" ci=\"21000215\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105858\" syi=\"31001778\"/>\r\n    <row c=\"D-C00215\" ci=\"21000215\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172502\" syi=\"31001779\"/>\r\n    <row c=\"D-C00215\" ci=\"21000215\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170151\" syi=\"31001780\"/>\r\n    <row c=\"D-C00215\" ci=\"21000215\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165058\" syi=\"31001781\"/>\r\n    <row c=\"D-C00215\" ci=\"21000215\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J173638\" syi=\"31001782\"/>\r\n    <row c=\"D-C00216\" ci=\"21000216\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130330\" syi=\"31001783\"/>\r\n    <row c=\"D-C00216\" ci=\"21000216\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132740\" syi=\"31001784\"/>\r\n    <row c=\"D-C00216\" ci=\"21000216\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133931\" syi=\"31001785\"/>\r\n    <row c=\"D-C00216\" ci=\"21000216\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143902\" syi=\"31001786\"/>\r\n    <row c=\"D-C00216\" ci=\"21000216\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165105\" syi=\"31001787\"/>\r\n    <row c=\"D-C00216\" ci=\"21000216\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141316\" syi=\"31001788\"/>\r\n    <row c=\"D-C00217\" ci=\"21000217\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113152\" syi=\"31001789\"/>\r\n    <row c=\"D-C00217\" ci=\"21000217\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113453\" syi=\"31001790\"/>\r\n    <row c=\"D-C00217\" ci=\"21000217\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144845\" syi=\"31001791\"/>\r\n    <row c=\"D-C00217\" ci=\"21000217\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140053\" syi=\"31001792\"/>\r\n    <row c=\"D-C00217\" ci=\"21000217\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151416\" syi=\"31001793\"/>\r\n    <row c=\"D-C00217\" ci=\"21000217\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100846\" syi=\"31001794\"/>\r\n    <row c=\"D-C00218\" ci=\"21000218\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165943\" syi=\"31001795\"/>\r\n    <row c=\"D-C00218\" ci=\"21000218\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103538\" syi=\"31001796\"/>\r\n    <row c=\"D-C00218\" ci=\"21000218\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154854\" syi=\"31001797\"/>\r\n    <row c=\"D-C00218\" ci=\"21000218\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212627\" syi=\"31001798\"/>\r\n    <row c=\"D-C00218\" ci=\"21000218\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150656\" syi=\"31001799\"/>\r\n    <row c=\"D-C00218\" ci=\"21000218\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J224031\" syi=\"31001800\"/>\r\n    <row c=\"D-C00219\" ci=\"21000219\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J215455\" syi=\"31001801\"/>\r\n    <row c=\"D-C00219\" ci=\"21000219\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122503\" syi=\"31001802\"/>\r\n    <row c=\"D-C00219\" ci=\"21000219\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103120\" syi=\"31001803\"/>\r\n    <row c=\"D-C00219\" ci=\"21000219\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164528\" syi=\"31001804\"/>\r\n    <row c=\"D-C00219\" ci=\"21000219\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125316\" syi=\"31001805\"/>\r\n    <row c=\"D-C00219\" ci=\"21000219\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113131\" syi=\"31001806\"/>\r\n    <row c=\"D-C00220\" ci=\"21000220\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144038\" syi=\"31001807\"/>\r\n    <row c=\"D-C00220\" ci=\"21000220\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172926\" syi=\"31001808\"/>\r\n    <row c=\"D-C00220\" ci=\"21000220\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154610\" syi=\"31001809\"/>\r\n    <row c=\"D-C00220\" ci=\"21000220\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103412\" syi=\"31001810\"/>\r\n    <row c=\"D-C00220\" ci=\"21000220\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150318\" syi=\"31001811\"/>\r\n    <row c=\"D-C00220\" ci=\"21000220\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J211504\" syi=\"31001812\"/>\r\n    <row c=\"D-C00220\" ci=\"21000220\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111617\" syi=\"31001813\"/>\r\n    <row c=\"D-C00221\" ci=\"21000221\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100346\" syi=\"31001814\"/>\r\n    <row c=\"D-C00221\" ci=\"21000221\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143557\" syi=\"31001815\"/>\r\n    <row c=\"D-C00221\" ci=\"21000221\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130001\" syi=\"31001816\"/>\r\n    <row c=\"D-C00221\" ci=\"21000221\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101142\" syi=\"31001817\"/>\r\n    <row c=\"D-C00221\" ci=\"21000221\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155002\" syi=\"31001818\"/>\r\n    <row c=\"D-C00221\" ci=\"21000221\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154232\" syi=\"31001819\"/>\r\n    <row c=\"D-C00222\" ci=\"21000222\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142506\" syi=\"31001820\"/>\r\n    <row c=\"D-C00222\" ci=\"21000222\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155506\" syi=\"31001821\"/>\r\n    <row c=\"D-C00222\" ci=\"21000222\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163754\" syi=\"31001822\"/>\r\n    <row c=\"D-C00222\" ci=\"21000222\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100357\" syi=\"31001823\"/>\r\n    <row c=\"D-C00222\" ci=\"21000222\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115031\" syi=\"31001824\"/>\r\n    <row c=\"D-C00222\" ci=\"21000222\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122706\" syi=\"31001825\"/>\r\n    <row c=\"D-C00223\" ci=\"21000223\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114318\" syi=\"31001826\"/>\r\n    <row c=\"D-C00223\" ci=\"21000223\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150625\" syi=\"31001827\"/>\r\n    <row c=\"D-C00223\" ci=\"21000223\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113437\" syi=\"31001828\"/>\r\n    <row c=\"D-C00223\" ci=\"21000223\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213924\" syi=\"31001829\"/>\r\n    <row c=\"D-C00223\" ci=\"21000223\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152711\" syi=\"31001830\"/>\r\n    <row c=\"D-C00223\" ci=\"21000223\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160929\" syi=\"31001831\"/>\r\n    <row c=\"D-C00223\" ci=\"21000223\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153110\" syi=\"31001832\"/>\r\n    <row c=\"D-C00224\" ci=\"21000224\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132532\" syi=\"31001833\"/>\r\n    <row c=\"D-C00224\" ci=\"21000224\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114031\" syi=\"31001834\"/>\r\n    <row c=\"D-C00224\" ci=\"21000224\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120316\" syi=\"31001835\"/>\r\n    <row c=\"D-C00224\" ci=\"21000224\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151610\" syi=\"31001836\"/>\r\n    <row c=\"D-C00224\" ci=\"21000224\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145937\" syi=\"31001837\"/>\r\n    <row c=\"D-C00224\" ci=\"21000224\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122056\" syi=\"31001838\"/>\r\n    <row c=\"D-C00224\" ci=\"21000224\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170127\" syi=\"31001839\"/>\r\n    <row c=\"D-C00225\" ci=\"21000225\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145424\" syi=\"31001840\"/>\r\n    <row c=\"D-C00225\" ci=\"21000225\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101835\" syi=\"31001841\"/>\r\n    <row c=\"D-C00225\" ci=\"21000225\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103907\" syi=\"31001842\"/>\r\n    <row c=\"D-C00225\" ci=\"21000225\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130237\" syi=\"31001843\"/>\r\n    <row c=\"D-C00225\" ci=\"21000225\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104948\" syi=\"31001844\"/>\r\n    <row c=\"D-C00225\" ci=\"21000225\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120844\" syi=\"31001845\"/>\r\n    <row c=\"D-C00226\" ci=\"21000226\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154824\" syi=\"31001846\"/>\r\n    <row c=\"D-C00226\" ci=\"21000226\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134216\" syi=\"31001847\"/>\r\n    <row c=\"D-C00226\" ci=\"21000226\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120131\" syi=\"31001848\"/>\r\n    <row c=\"D-C00226\" ci=\"21000226\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120134\" syi=\"31001849\"/>\r\n    <row c=\"D-C00226\" ci=\"21000226\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J224558\" syi=\"31001850\"/>\r\n    <row c=\"D-C00226\" ci=\"21000226\" r=\"D-R00022\" ri=\"11000022\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161029\" syi=\"31001851\"/>\r\n    <row c=\"D-C00227\" ci=\"21000227\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J225530\" syi=\"31001852\"/>\r\n    <row c=\"D-C00227\" ci=\"21000227\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154407\" syi=\"31001853\"/>\r\n    <row c=\"D-C00227\" ci=\"21000227\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140720\" syi=\"31001854\"/>\r\n    <row c=\"D-C00227\" ci=\"21000227\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J222125\" syi=\"31001855\"/>\r\n    <row c=\"D-C00227\" ci=\"21000227\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152502\" syi=\"31001856\"/>\r\n    <row c=\"D-C00227\" ci=\"21000227\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J220215\" syi=\"31001857\"/>\r\n    <row c=\"D-C00228\" ci=\"21000228\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141647\" syi=\"31001858\"/>\r\n    <row c=\"D-C00228\" ci=\"21000228\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101957\" syi=\"31001859\"/>\r\n    <row c=\"D-C00228\" ci=\"21000228\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J223808\" syi=\"31001860\"/>\r\n    <row c=\"D-C00228\" ci=\"21000228\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105433\" syi=\"31001861\"/>\r\n    <row c=\"D-C00228\" ci=\"21000228\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153722\" syi=\"31001862\"/>\r\n    <row c=\"D-C00228\" ci=\"21000228\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105348\" syi=\"31001863\"/>\r\n    <row c=\"D-C00229\" ci=\"21000229\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113133\" syi=\"31001864\"/>\r\n    <row c=\"D-C00229\" ci=\"21000229\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105319\" syi=\"31001865\"/>\r\n    <row c=\"D-C00229\" ci=\"21000229\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162828\" syi=\"31001866\"/>\r\n    <row c=\"D-C00229\" ci=\"21000229\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J233449\" syi=\"31001867\"/>\r\n    <row c=\"D-C00229\" ci=\"21000229\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150026\" syi=\"31001868\"/>\r\n    <row c=\"D-C00229\" ci=\"21000229\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125629\" syi=\"31001869\"/>\r\n    <row c=\"D-C00229\" ci=\"21000229\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123246\" syi=\"31001870\"/>\r\n    <row c=\"D-C00230\" ci=\"21000230\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J215615\" syi=\"31001871\"/>\r\n    <row c=\"D-C00230\" ci=\"21000230\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152404\" syi=\"31001872\"/>\r\n    <row c=\"D-C00230\" ci=\"21000230\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132152\" syi=\"31001873\"/>\r\n    <row c=\"D-C00230\" ci=\"21000230\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145335\" syi=\"31001874\"/>\r\n    <row c=\"D-C00230\" ci=\"21000230\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162255\" syi=\"31001875\"/>\r\n    <row c=\"D-C00230\" ci=\"21000230\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112722\" syi=\"31001876\"/>\r\n    <row c=\"D-C00231\" ci=\"21000231\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134459\" syi=\"31001877\"/>\r\n    <row c=\"D-C00231\" ci=\"21000231\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131624\" syi=\"31001878\"/>\r\n    <row c=\"D-C00231\" ci=\"21000231\" r=\"D-R00023\" ri=\"11000023\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165611\" syi=\"31001879\"/>\r\n    <row c=\"E-C00232\" ci=\"21000232\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152820\" syi=\"31001880\"/>\r\n    <row c=\"E-C00232\" ci=\"21000232\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135100\" syi=\"31001881\"/>\r\n    <row c=\"E-C00232\" ci=\"21000232\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122515\" syi=\"31001882\"/>\r\n    <row c=\"E-C00232\" ci=\"21000232\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172943\" syi=\"31001883\"/>\r\n    <row c=\"E-C00232\" ci=\"21000232\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J205738\" syi=\"31001884\"/>\r\n    <row c=\"E-C00232\" ci=\"21000232\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134242\" syi=\"31001885\"/>\r\n    <row c=\"E-C00232\" ci=\"21000232\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103251\" syi=\"31001886\"/>\r\n    <row c=\"E-C00232\" ci=\"21000232\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111220\" syi=\"31001887\"/>\r\n    <row c=\"E-C00232\" ci=\"21000232\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170540\" syi=\"31001888\"/>\r\n    <row c=\"E-C00233\" ci=\"21000233\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102446\" syi=\"31001889\"/>\r\n    <row c=\"E-C00233\" ci=\"21000233\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141137\" syi=\"31001890\"/>\r\n    <row c=\"E-C00233\" ci=\"21000233\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164147\" syi=\"31001891\"/>\r\n    <row c=\"E-C00233\" ci=\"21000233\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100702\" syi=\"31001892\"/>\r\n    <row c=\"E-C00233\" ci=\"21000233\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133119\" syi=\"31001893\"/>\r\n    <row c=\"E-C00233\" ci=\"21000233\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124730\" syi=\"31001894\"/>\r\n    <row c=\"E-C00233\" ci=\"21000233\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132823\" syi=\"31001895\"/>\r\n    <row c=\"E-C00233\" ci=\"21000233\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100724\" syi=\"31001896\"/>\r\n    <row c=\"E-C00233\" ci=\"21000233\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162638\" syi=\"31001897\"/>\r\n    <row c=\"E-C00234\" ci=\"21000234\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J230257\" syi=\"31001898\"/>\r\n    <row c=\"E-C00234\" ci=\"21000234\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J223018\" syi=\"31001899\"/>\r\n    <row c=\"E-C00234\" ci=\"21000234\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135449\" syi=\"31001900\"/>\r\n    <row c=\"E-C00234\" ci=\"21000234\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133537\" syi=\"31001901\"/>\r\n    <row c=\"E-C00234\" ci=\"21000234\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155714\" syi=\"31001902\"/>\r\n    <row c=\"E-C00234\" ci=\"21000234\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112325\" syi=\"31001903\"/>\r\n    <row c=\"E-C00234\" ci=\"21000234\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150606\" syi=\"31001904\"/>\r\n    <row c=\"E-C00234\" ci=\"21000234\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110550\" syi=\"31001905\"/>\r\n    <row c=\"E-C00234\" ci=\"21000234\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J205659\" syi=\"31001906\"/>\r\n    <row c=\"E-C00235\" ci=\"21000235\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100120\" syi=\"31001907\"/>\r\n    <row c=\"E-C00235\" ci=\"21000235\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151057\" syi=\"31001908\"/>\r\n    <row c=\"E-C00235\" ci=\"21000235\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213245\" syi=\"31001909\"/>\r\n    <row c=\"E-C00235\" ci=\"21000235\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121230\" syi=\"31001910\"/>\r\n    <row c=\"E-C00235\" ci=\"21000235\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145203\" syi=\"31001911\"/>\r\n    <row c=\"E-C00235\" ci=\"21000235\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111106\" syi=\"31001912\"/>\r\n    <row c=\"E-C00235\" ci=\"21000235\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J222834\" syi=\"31001913\"/>\r\n    <row c=\"E-C00236\" ci=\"21000236\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J232336\" syi=\"31001914\"/>\r\n    <row c=\"E-C00236\" ci=\"21000236\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161032\" syi=\"31001915\"/>\r\n    <row c=\"E-C00236\" ci=\"21000236\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154733\" syi=\"31001916\"/>\r\n    <row c=\"E-C00236\" ci=\"21000236\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153144\" syi=\"31001917\"/>\r\n    <row c=\"E-C00236\" ci=\"21000236\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122721\" syi=\"31001918\"/>\r\n    <row c=\"E-C00236\" ci=\"21000236\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133440\" syi=\"31001919\"/>\r\n    <row c=\"E-C00237\" ci=\"21000237\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103727\" syi=\"31001920\"/>\r\n    <row c=\"E-C00237\" ci=\"21000237\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152739\" syi=\"31001921\"/>\r\n    <row c=\"E-C00237\" ci=\"21000237\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140717\" syi=\"31001922\"/>\r\n    <row c=\"E-C00237\" ci=\"21000237\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J205205\" syi=\"31001923\"/>\r\n    <row c=\"E-C00237\" ci=\"21000237\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130026\" syi=\"31001924\"/>\r\n    <row c=\"E-C00237\" ci=\"21000237\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151035\" syi=\"31001925\"/>\r\n    <row c=\"E-C00237\" ci=\"21000237\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112603\" syi=\"31001926\"/>\r\n    <row c=\"E-C00238\" ci=\"21000238\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151811\" syi=\"31001927\"/>\r\n    <row c=\"E-C00238\" ci=\"21000238\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105441\" syi=\"31001928\"/>\r\n    <row c=\"E-C00238\" ci=\"21000238\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124949\" syi=\"31001929\"/>\r\n    <row c=\"E-C00238\" ci=\"21000238\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130711\" syi=\"31001930\"/>\r\n    <row c=\"E-C00238\" ci=\"21000238\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131948\" syi=\"31001931\"/>\r\n    <row c=\"E-C00238\" ci=\"21000238\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132814\" syi=\"31001932\"/>\r\n    <row c=\"E-C00238\" ci=\"21000238\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213734\" syi=\"31001933\"/>\r\n    <row c=\"E-C00239\" ci=\"21000239\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140608\" syi=\"31001934\"/>\r\n    <row c=\"E-C00239\" ci=\"21000239\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212336\" syi=\"31001935\"/>\r\n    <row c=\"E-C00239\" ci=\"21000239\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104448\" syi=\"31001936\"/>\r\n    <row c=\"E-C00239\" ci=\"21000239\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164846\" syi=\"31001937\"/>\r\n    <row c=\"E-C00239\" ci=\"21000239\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161354\" syi=\"31001938\"/>\r\n    <row c=\"E-C00239\" ci=\"21000239\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103959\" syi=\"31001939\"/>\r\n    <row c=\"E-C00239\" ci=\"21000239\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114353\" syi=\"31001940\"/>\r\n    <row c=\"E-C00239\" ci=\"21000239\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171622\" syi=\"31001941\"/>\r\n    <row c=\"E-C00239\" ci=\"21000239\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143123\" syi=\"31001942\"/>\r\n    <row c=\"E-C00240\" ci=\"21000240\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125023\" syi=\"31001943\"/>\r\n    <row c=\"E-C00240\" ci=\"21000240\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122116\" syi=\"31001944\"/>\r\n    <row c=\"E-C00240\" ci=\"21000240\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151718\" syi=\"31001945\"/>\r\n    <row c=\"E-C00240\" ci=\"21000240\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153335\" syi=\"31001946\"/>\r\n    <row c=\"E-C00240\" ci=\"21000240\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170122\" syi=\"31001947\"/>\r\n    <row c=\"E-C00240\" ci=\"21000240\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150515\" syi=\"31001948\"/>\r\n    <row c=\"E-C00240\" ci=\"21000240\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104216\" syi=\"31001949\"/>\r\n    <row c=\"E-C00240\" ci=\"21000240\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111000\" syi=\"31001950\"/>\r\n    <row c=\"E-C00240\" ci=\"21000240\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155600\" syi=\"31001951\"/>\r\n    <row c=\"E-C00241\" ci=\"21000241\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132601\" syi=\"31001952\"/>\r\n    <row c=\"E-C00241\" ci=\"21000241\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132258\" syi=\"31001953\"/>\r\n    <row c=\"E-C00241\" ci=\"21000241\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J221512\" syi=\"31001954\"/>\r\n    <row c=\"E-C00241\" ci=\"21000241\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125853\" syi=\"31001955\"/>\r\n    <row c=\"E-C00241\" ci=\"21000241\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141609\" syi=\"31001956\"/>\r\n    <row c=\"E-C00241\" ci=\"21000241\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134096\" syi=\"31001957\"/>\r\n    <row c=\"E-C00241\" ci=\"21000241\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121146\" syi=\"31001958\"/>\r\n    <row c=\"E-C00241\" ci=\"21000241\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121649\" syi=\"31001959\"/>\r\n    <row c=\"E-C00241\" ci=\"21000241\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135559\" syi=\"31001960\"/>\r\n    <row c=\"E-C00242\" ci=\"21000242\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130735\" syi=\"31001961\"/>\r\n    <row c=\"E-C00242\" ci=\"21000242\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144115\" syi=\"31001962\"/>\r\n    <row c=\"E-C00242\" ci=\"21000242\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112241\" syi=\"31001963\"/>\r\n    <row c=\"E-C00242\" ci=\"21000242\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141204\" syi=\"31001964\"/>\r\n    <row c=\"E-C00242\" ci=\"21000242\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131401\" syi=\"31001965\"/>\r\n    <row c=\"E-C00242\" ci=\"21000242\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170231\" syi=\"31001966\"/>\r\n    <row c=\"E-C00242\" ci=\"21000242\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164430\" syi=\"31001967\"/>\r\n    <row c=\"E-C00243\" ci=\"21000243\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143740\" syi=\"31001968\"/>\r\n    <row c=\"E-C00243\" ci=\"21000243\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115517\" syi=\"31001969\"/>\r\n    <row c=\"E-C00243\" ci=\"21000243\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J230936\" syi=\"31001970\"/>\r\n    <row c=\"E-C00243\" ci=\"21000243\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133525\" syi=\"31001971\"/>\r\n    <row c=\"E-C00243\" ci=\"21000243\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J215338\" syi=\"31001972\"/>\r\n    <row c=\"E-C00243\" ci=\"21000243\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112003\" syi=\"31001973\"/>\r\n    <row c=\"E-C00244\" ci=\"21000244\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J214318\" syi=\"31001974\"/>\r\n    <row c=\"E-C00244\" ci=\"21000244\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110938\" syi=\"31001975\"/>\r\n    <row c=\"E-C00244\" ci=\"21000244\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103453\" syi=\"31001976\"/>\r\n    <row c=\"E-C00244\" ci=\"21000244\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101000\" syi=\"31001977\"/>\r\n    <row c=\"E-C00244\" ci=\"21000244\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110117\" syi=\"31001978\"/>\r\n    <row c=\"E-C00244\" ci=\"21000244\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100328\" syi=\"31001979\"/>\r\n    <row c=\"E-C00244\" ci=\"21000244\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155845\" syi=\"31001980\"/>\r\n    <row c=\"E-C00244\" ci=\"21000244\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152703\" syi=\"31001981\"/>\r\n    <row c=\"E-C00244\" ci=\"21000244\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110628\" syi=\"31001982\"/>\r\n    <row c=\"E-C00245\" ci=\"21000245\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142438\" syi=\"31001983\"/>\r\n    <row c=\"E-C00245\" ci=\"21000245\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153054\" syi=\"31001984\"/>\r\n    <row c=\"E-C00245\" ci=\"21000245\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114019\" syi=\"31001985\"/>\r\n    <row c=\"E-C00245\" ci=\"21000245\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J233255\" syi=\"31001986\"/>\r\n    <row c=\"E-C00245\" ci=\"21000245\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135046\" syi=\"31001987\"/>\r\n    <row c=\"E-C00245\" ci=\"21000245\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145322\" syi=\"31001988\"/>\r\n    <row c=\"E-C00245\" ci=\"21000245\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112844\" syi=\"31001989\"/>\r\n    <row c=\"E-C00245\" ci=\"21000245\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120816\" syi=\"31001990\"/>\r\n    <row c=\"E-C00246\" ci=\"21000246\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165340\" syi=\"31001991\"/>\r\n    <row c=\"E-C00246\" ci=\"21000246\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124409\" syi=\"31001992\"/>\r\n    <row c=\"E-C00246\" ci=\"21000246\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124733\" syi=\"31001993\"/>\r\n    <row c=\"E-C00246\" ci=\"21000246\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J173645\" syi=\"31001994\"/>\r\n    <row c=\"E-C00246\" ci=\"21000246\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165743\" syi=\"31001995\"/>\r\n    <row c=\"E-C00246\" ci=\"21000246\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171013\" syi=\"31001996\"/>\r\n    <row c=\"E-C00246\" ci=\"21000246\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155905\" syi=\"31001997\"/>\r\n    <row c=\"E-C00247\" ci=\"21000247\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213055\" syi=\"31001998\"/>\r\n    <row c=\"E-C00247\" ci=\"21000247\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212224\" syi=\"31001999\"/>\r\n    <row c=\"E-C00247\" ci=\"21000247\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J234252\" syi=\"31002000\"/>\r\n    <row c=\"E-C00247\" ci=\"21000247\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150036\" syi=\"31002001\"/>\r\n    <row c=\"E-C00247\" ci=\"21000247\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172431\" syi=\"31002002\"/>\r\n    <row c=\"E-C00247\" ci=\"21000247\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114154\" syi=\"31002003\"/>\r\n    <row c=\"E-C00247\" ci=\"21000247\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115127\" syi=\"31002004\"/>\r\n    <row c=\"E-C00247\" ci=\"21000247\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J233658\" syi=\"31002005\"/>\r\n    <row c=\"E-C00247\" ci=\"21000247\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114403\" syi=\"31002006\"/>\r\n    <row c=\"E-C00248\" ci=\"21000248\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165946\" syi=\"31002007\"/>\r\n    <row c=\"E-C00248\" ci=\"21000248\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124046\" syi=\"31002008\"/>\r\n    <row c=\"E-C00248\" ci=\"21000248\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102736\" syi=\"31002009\"/>\r\n    <row c=\"E-C00248\" ci=\"21000248\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133252\" syi=\"31002010\"/>\r\n    <row c=\"E-C00248\" ci=\"21000248\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140600\" syi=\"31002011\"/>\r\n    <row c=\"E-C00248\" ci=\"21000248\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163701\" syi=\"31002012\"/>\r\n    <row c=\"E-C00249\" ci=\"21000249\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115041\" syi=\"31002013\"/>\r\n    <row c=\"E-C00249\" ci=\"21000249\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154726\" syi=\"31002014\"/>\r\n    <row c=\"E-C00249\" ci=\"21000249\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123602\" syi=\"31002015\"/>\r\n    <row c=\"E-C00249\" ci=\"21000249\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100549\" syi=\"31002016\"/>\r\n    <row c=\"E-C00249\" ci=\"21000249\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124100\" syi=\"31002017\"/>\r\n    <row c=\"E-C00249\" ci=\"21000249\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113701\" syi=\"31002018\"/>\r\n    <row c=\"E-C00250\" ci=\"21000250\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164327\" syi=\"31002019\"/>\r\n    <row c=\"E-C00250\" ci=\"21000250\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110018\" syi=\"31002020\"/>\r\n    <row c=\"E-C00250\" ci=\"21000250\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164511\" syi=\"31002021\"/>\r\n    <row c=\"E-C00250\" ci=\"21000250\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130037\" syi=\"31002022\"/>\r\n    <row c=\"E-C00250\" ci=\"21000250\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101028\" syi=\"31002023\"/>\r\n    <row c=\"E-C00250\" ci=\"21000250\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100858\" syi=\"31002024\"/>\r\n    <row c=\"E-C00250\" ci=\"21000250\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151813\" syi=\"31002025\"/>\r\n    <row c=\"E-C00251\" ci=\"21000251\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113758\" syi=\"31002026\"/>\r\n    <row c=\"E-C00251\" ci=\"21000251\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153802\" syi=\"31002027\"/>\r\n    <row c=\"E-C00251\" ci=\"21000251\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130401\" syi=\"31002028\"/>\r\n    <row c=\"E-C00251\" ci=\"21000251\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130241\" syi=\"31002029\"/>\r\n    <row c=\"E-C00251\" ci=\"21000251\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J232934\" syi=\"31002030\"/>\r\n    <row c=\"E-C00251\" ci=\"21000251\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213642\" syi=\"31002031\"/>\r\n    <row c=\"E-C00251\" ci=\"21000251\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144107\" syi=\"31002032\"/>\r\n    <row c=\"E-C00252\" ci=\"21000252\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140336\" syi=\"31002033\"/>\r\n    <row c=\"E-C00252\" ci=\"21000252\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J214712\" syi=\"31002034\"/>\r\n    <row c=\"E-C00252\" ci=\"21000252\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170809\" syi=\"31002035\"/>\r\n    <row c=\"E-C00252\" ci=\"21000252\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J220924\" syi=\"31002036\"/>\r\n    <row c=\"E-C00252\" ci=\"21000252\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142624\" syi=\"31002037\"/>\r\n    <row c=\"E-C00252\" ci=\"21000252\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150306\" syi=\"31002038\"/>\r\n    <row c=\"E-C00252\" ci=\"21000252\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100425\" syi=\"31002039\"/>\r\n    <row c=\"E-C00252\" ci=\"21000252\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161745\" syi=\"31002040\"/>\r\n    <row c=\"E-C00253\" ci=\"21000253\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131718\" syi=\"31002041\"/>\r\n    <row c=\"E-C00253\" ci=\"21000253\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151319\" syi=\"31002042\"/>\r\n    <row c=\"E-C00253\" ci=\"21000253\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113059\" syi=\"31002043\"/>\r\n    <row c=\"E-C00253\" ci=\"21000253\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142234\" syi=\"31002044\"/>\r\n    <row c=\"E-C00253\" ci=\"21000253\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113636\" syi=\"31002045\"/>\r\n    <row c=\"E-C00253\" ci=\"21000253\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142858\" syi=\"31002046\"/>\r\n    <row c=\"E-C00253\" ci=\"21000253\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135540\" syi=\"31002047\"/>\r\n    <row c=\"E-C00254\" ci=\"21000254\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155739\" syi=\"31002048\"/>\r\n    <row c=\"E-C00254\" ci=\"21000254\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132427\" syi=\"31002049\"/>\r\n    <row c=\"E-C00254\" ci=\"21000254\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114337\" syi=\"31002050\"/>\r\n    <row c=\"E-C00254\" ci=\"21000254\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121842\" syi=\"31002051\"/>\r\n    <row c=\"E-C00254\" ci=\"21000254\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100415\" syi=\"31002052\"/>\r\n    <row c=\"E-C00254\" ci=\"21000254\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143057\" syi=\"31002053\"/>\r\n    <row c=\"E-C00254\" ci=\"21000254\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165953\" syi=\"31002054\"/>\r\n    <row c=\"E-C00255\" ci=\"21000255\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102753\" syi=\"31002055\"/>\r\n    <row c=\"E-C00255\" ci=\"21000255\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J221325\" syi=\"31002056\"/>\r\n    <row c=\"E-C00255\" ci=\"21000255\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114443\" syi=\"31002057\"/>\r\n    <row c=\"E-C00255\" ci=\"21000255\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125990\" syi=\"31002058\"/>\r\n    <row c=\"E-C00255\" ci=\"21000255\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114518\" syi=\"31002059\"/>\r\n    <row c=\"E-C00255\" ci=\"21000255\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102623\" syi=\"31002060\"/>\r\n    <row c=\"E-C00256\" ci=\"21000256\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164900\" syi=\"31002061\"/>\r\n    <row c=\"E-C00256\" ci=\"21000256\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122049\" syi=\"31002062\"/>\r\n    <row c=\"E-C00256\" ci=\"21000256\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154846\" syi=\"31002063\"/>\r\n    <row c=\"E-C00256\" ci=\"21000256\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115522\" syi=\"31002064\"/>\r\n    <row c=\"E-C00256\" ci=\"21000256\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145844\" syi=\"31002065\"/>\r\n    <row c=\"E-C00256\" ci=\"21000256\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121704\" syi=\"31002066\"/>\r\n    <row c=\"E-C00256\" ci=\"21000256\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121959\" syi=\"31002067\"/>\r\n    <row c=\"E-C00256\" ci=\"21000256\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105849\" syi=\"31002068\"/>\r\n    <row c=\"E-C00257\" ci=\"21000257\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122610\" syi=\"31002069\"/>\r\n    <row c=\"E-C00257\" ci=\"21000257\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152912\" syi=\"31002070\"/>\r\n    <row c=\"E-C00257\" ci=\"21000257\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145359\" syi=\"31002071\"/>\r\n    <row c=\"E-C00257\" ci=\"21000257\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154906\" syi=\"31002072\"/>\r\n    <row c=\"E-C00257\" ci=\"21000257\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160547\" syi=\"31002073\"/>\r\n    <row c=\"E-C00257\" ci=\"21000257\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111150\" syi=\"31002074\"/>\r\n    <row c=\"E-C00258\" ci=\"21000258\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111935\" syi=\"31002075\"/>\r\n    <row c=\"E-C00258\" ci=\"21000258\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100237\" syi=\"31002076\"/>\r\n    <row c=\"E-C00258\" ci=\"21000258\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145735\" syi=\"31002077\"/>\r\n    <row c=\"E-C00258\" ci=\"21000258\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103600\" syi=\"31002078\"/>\r\n    <row c=\"E-C00258\" ci=\"21000258\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J211517\" syi=\"31002079\"/>\r\n    <row c=\"E-C00258\" ci=\"21000258\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131128\" syi=\"31002080\"/>\r\n    <row c=\"E-C00258\" ci=\"21000258\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143107\" syi=\"31002081\"/>\r\n    <row c=\"E-C00258\" ci=\"21000258\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213125\" syi=\"31002082\"/>\r\n    <row c=\"E-C00258\" ci=\"21000258\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152325\" syi=\"31002083\"/>\r\n    <row c=\"E-C00259\" ci=\"21000259\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114014\" syi=\"31002084\"/>\r\n    <row c=\"E-C00259\" ci=\"21000259\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J215215\" syi=\"31002085\"/>\r\n    <row c=\"E-C00259\" ci=\"21000259\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143718\" syi=\"31002086\"/>\r\n    <row c=\"E-C00259\" ci=\"21000259\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134141\" syi=\"31002087\"/>\r\n    <row c=\"E-C00259\" ci=\"21000259\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114842\" syi=\"31002088\"/>\r\n    <row c=\"E-C00259\" ci=\"21000259\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105504\" syi=\"31002089\"/>\r\n    <row c=\"E-C00259\" ci=\"21000259\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130302\" syi=\"31002090\"/>\r\n    <row c=\"E-C00260\" ci=\"21000260\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170327\" syi=\"31002091\"/>\r\n    <row c=\"E-C00260\" ci=\"21000260\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120823\" syi=\"31002092\"/>\r\n    <row c=\"E-C00260\" ci=\"21000260\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153449\" syi=\"31002093\"/>\r\n    <row c=\"E-C00260\" ci=\"21000260\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164621\" syi=\"31002094\"/>\r\n    <row c=\"E-C00260\" ci=\"21000260\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142631\" syi=\"31002095\"/>\r\n    <row c=\"E-C00260\" ci=\"21000260\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134652\" syi=\"31002096\"/>\r\n    <row c=\"E-C00260\" ci=\"21000260\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123628\" syi=\"31002097\"/>\r\n    <row c=\"E-C00260\" ci=\"21000260\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130621\" syi=\"31002098\"/>\r\n    <row c=\"E-C00261\" ci=\"21000261\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171158\" syi=\"31002099\"/>\r\n    <row c=\"E-C00261\" ci=\"21000261\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163930\" syi=\"31002100\"/>\r\n    <row c=\"E-C00261\" ci=\"21000261\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113907\" syi=\"31002101\"/>\r\n    <row c=\"E-C00261\" ci=\"21000261\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164610\" syi=\"31002102\"/>\r\n    <row c=\"E-C00261\" ci=\"21000261\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145512\" syi=\"31002103\"/>\r\n    <row c=\"E-C00261\" ci=\"21000261\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133833\" syi=\"31002104\"/>\r\n    <row c=\"E-C00261\" ci=\"21000261\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141250\" syi=\"31002105\"/>\r\n    <row c=\"E-C00261\" ci=\"21000261\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105623\" syi=\"31002106\"/>\r\n    <row c=\"E-C00262\" ci=\"21000262\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120010\" syi=\"31002107\"/>\r\n    <row c=\"E-C00262\" ci=\"21000262\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J233630\" syi=\"31002108\"/>\r\n    <row c=\"E-C00262\" ci=\"21000262\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162007\" syi=\"31002109\"/>\r\n    <row c=\"E-C00262\" ci=\"21000262\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J215124\" syi=\"31002110\"/>\r\n    <row c=\"E-C00262\" ci=\"21000262\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141615\" syi=\"31002111\"/>\r\n    <row c=\"E-C00262\" ci=\"21000262\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133222\" syi=\"31002112\"/>\r\n    <row c=\"E-C00262\" ci=\"21000262\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105822\" syi=\"31002113\"/>\r\n    <row c=\"E-C00263\" ci=\"21000263\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171136\" syi=\"31002114\"/>\r\n    <row c=\"E-C00263\" ci=\"21000263\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152111\" syi=\"31002115\"/>\r\n    <row c=\"E-C00263\" ci=\"21000263\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104846\" syi=\"31002116\"/>\r\n    <row c=\"E-C00263\" ci=\"21000263\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123440\" syi=\"31002117\"/>\r\n    <row c=\"E-C00263\" ci=\"21000263\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121416\" syi=\"31002118\"/>\r\n    <row c=\"E-C00263\" ci=\"21000263\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161635\" syi=\"31002119\"/>\r\n    <row c=\"E-C00264\" ci=\"21000264\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141043\" syi=\"31002120\"/>\r\n    <row c=\"E-C00264\" ci=\"21000264\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163408\" syi=\"31002121\"/>\r\n    <row c=\"E-C00264\" ci=\"21000264\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135204\" syi=\"31002122\"/>\r\n    <row c=\"E-C00264\" ci=\"21000264\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133913\" syi=\"31002123\"/>\r\n    <row c=\"E-C00264\" ci=\"21000264\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153447\" syi=\"31002124\"/>\r\n    <row c=\"E-C00264\" ci=\"21000264\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145313\" syi=\"31002125\"/>\r\n    <row c=\"E-C00265\" ci=\"21000265\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162753\" syi=\"31002126\"/>\r\n    <row c=\"E-C00265\" ci=\"21000265\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135301\" syi=\"31002127\"/>\r\n    <row c=\"E-C00265\" ci=\"21000265\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125254\" syi=\"31002128\"/>\r\n    <row c=\"E-C00265\" ci=\"21000265\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145320\" syi=\"31002129\"/>\r\n    <row c=\"E-C00265\" ci=\"21000265\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103116\" syi=\"31002130\"/>\r\n    <row c=\"E-C00265\" ci=\"21000265\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120437\" syi=\"31002131\"/>\r\n    <row c=\"E-C00265\" ci=\"21000265\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100252\" syi=\"31002132\"/>\r\n    <row c=\"E-C00265\" ci=\"21000265\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153919\" syi=\"31002133\"/>\r\n    <row c=\"E-C00266\" ci=\"21000266\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115520\" syi=\"31002134\"/>\r\n    <row c=\"E-C00266\" ci=\"21000266\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100919\" syi=\"31002135\"/>\r\n    <row c=\"E-C00266\" ci=\"21000266\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115933\" syi=\"31002136\"/>\r\n    <row c=\"E-C00266\" ci=\"21000266\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133529\" syi=\"31002137\"/>\r\n    <row c=\"E-C00266\" ci=\"21000266\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131549\" syi=\"31002138\"/>\r\n    <row c=\"E-C00266\" ci=\"21000266\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J205517\" syi=\"31002139\"/>\r\n    <row c=\"E-C00267\" ci=\"21000267\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J220546\" syi=\"31002140\"/>\r\n    <row c=\"E-C00267\" ci=\"21000267\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102853\" syi=\"31002141\"/>\r\n    <row c=\"E-C00267\" ci=\"21000267\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115418\" syi=\"31002142\"/>\r\n    <row c=\"E-C00267\" ci=\"21000267\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155040\" syi=\"31002143\"/>\r\n    <row c=\"E-C00267\" ci=\"21000267\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172937\" syi=\"31002144\"/>\r\n    <row c=\"E-C00267\" ci=\"21000267\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122757\" syi=\"31002145\"/>\r\n    <row c=\"E-C00268\" ci=\"21000268\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100759\" syi=\"31002146\"/>\r\n    <row c=\"E-C00268\" ci=\"21000268\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145416\" syi=\"31002147\"/>\r\n    <row c=\"E-C00268\" ci=\"21000268\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152034\" syi=\"31002148\"/>\r\n    <row c=\"E-C00268\" ci=\"21000268\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125544\" syi=\"31002149\"/>\r\n    <row c=\"E-C00268\" ci=\"21000268\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123235\" syi=\"31002150\"/>\r\n    <row c=\"E-C00268\" ci=\"21000268\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151204\" syi=\"31002151\"/>\r\n    <row c=\"E-C00268\" ci=\"21000268\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104537\" syi=\"31002152\"/>\r\n    <row c=\"E-C00268\" ci=\"21000268\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162047\" syi=\"31002153\"/>\r\n    <row c=\"E-C00268\" ci=\"21000268\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140514\" syi=\"31002154\"/>\r\n    <row c=\"E-C00269\" ci=\"21000269\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154152\" syi=\"31002155\"/>\r\n    <row c=\"E-C00269\" ci=\"21000269\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143626\" syi=\"31002156\"/>\r\n    <row c=\"E-C00269\" ci=\"21000269\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161737\" syi=\"31002157\"/>\r\n    <row c=\"E-C00269\" ci=\"21000269\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142110\" syi=\"31002158\"/>\r\n    <row c=\"E-C00269\" ci=\"21000269\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112042\" syi=\"31002159\"/>\r\n    <row c=\"E-C00269\" ci=\"21000269\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105719\" syi=\"31002160\"/>\r\n    <row c=\"E-C00269\" ci=\"21000269\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101556\" syi=\"31002161\"/>\r\n    <row c=\"E-C00269\" ci=\"21000269\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J230047\" syi=\"31002162\"/>\r\n    <row c=\"E-C00269\" ci=\"21000269\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213226\" syi=\"31002163\"/>\r\n    <row c=\"E-C00270\" ci=\"21000270\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104218\" syi=\"31002164\"/>\r\n    <row c=\"E-C00270\" ci=\"21000270\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115308\" syi=\"31002165\"/>\r\n    <row c=\"E-C00270\" ci=\"21000270\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140418\" syi=\"31002166\"/>\r\n    <row c=\"E-C00270\" ci=\"21000270\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101343\" syi=\"31002167\"/>\r\n    <row c=\"E-C00270\" ci=\"21000270\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105135\" syi=\"31002168\"/>\r\n    <row c=\"E-C00270\" ci=\"21000270\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111818\" syi=\"31002169\"/>\r\n    <row c=\"E-C00270\" ci=\"21000270\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110841\" syi=\"31002170\"/>\r\n    <row c=\"E-C00271\" ci=\"21000271\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134024\" syi=\"31002171\"/>\r\n    <row c=\"E-C00271\" ci=\"21000271\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142349\" syi=\"31002172\"/>\r\n    <row c=\"E-C00271\" ci=\"21000271\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212203\" syi=\"31002173\"/>\r\n    <row c=\"E-C00271\" ci=\"21000271\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124942\" syi=\"31002174\"/>\r\n    <row c=\"E-C00271\" ci=\"21000271\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131747\" syi=\"31002175\"/>\r\n    <row c=\"E-C00271\" ci=\"21000271\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133553\" syi=\"31002176\"/>\r\n    <row c=\"E-C00271\" ci=\"21000271\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115422\" syi=\"31002177\"/>\r\n    <row c=\"E-C00272\" ci=\"21000272\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103448\" syi=\"31002178\"/>\r\n    <row c=\"E-C00272\" ci=\"21000272\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161301\" syi=\"31002179\"/>\r\n    <row c=\"E-C00272\" ci=\"21000272\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130334\" syi=\"31002180\"/>\r\n    <row c=\"E-C00272\" ci=\"21000272\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172125\" syi=\"31002181\"/>\r\n    <row c=\"E-C00272\" ci=\"21000272\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114537\" syi=\"31002182\"/>\r\n    <row c=\"E-C00272\" ci=\"21000272\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134440\" syi=\"31002183\"/>\r\n    <row c=\"E-C00272\" ci=\"21000272\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101912\" syi=\"31002184\"/>\r\n    <row c=\"E-C00272\" ci=\"21000272\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J214006\" syi=\"31002185\"/>\r\n    <row c=\"E-C00273\" ci=\"21000273\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J235108\" syi=\"31002186\"/>\r\n    <row c=\"E-C00273\" ci=\"21000273\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124538\" syi=\"31002187\"/>\r\n    <row c=\"E-C00273\" ci=\"21000273\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125641\" syi=\"31002188\"/>\r\n    <row c=\"E-C00273\" ci=\"21000273\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141728\" syi=\"31002189\"/>\r\n    <row c=\"E-C00273\" ci=\"21000273\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100616\" syi=\"31002190\"/>\r\n    <row c=\"E-C00273\" ci=\"21000273\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J204350\" syi=\"31002191\"/>\r\n    <row c=\"E-C00273\" ci=\"21000273\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151300\" syi=\"31002192\"/>\r\n    <row c=\"E-C00273\" ci=\"21000273\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114041\" syi=\"31002193\"/>\r\n    <row c=\"E-C00274\" ci=\"21000274\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115644\" syi=\"31002194\"/>\r\n    <row c=\"E-C00274\" ci=\"21000274\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103328\" syi=\"31002195\"/>\r\n    <row c=\"E-C00274\" ci=\"21000274\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143127\" syi=\"31002196\"/>\r\n    <row c=\"E-C00274\" ci=\"21000274\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121459\" syi=\"31002197\"/>\r\n    <row c=\"E-C00274\" ci=\"21000274\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114441\" syi=\"31002198\"/>\r\n    <row c=\"E-C00274\" ci=\"21000274\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102345\" syi=\"31002199\"/>\r\n    <row c=\"E-C00274\" ci=\"21000274\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161609\" syi=\"31002200\"/>\r\n    <row c=\"E-C00274\" ci=\"21000274\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131646\" syi=\"31002201\"/>\r\n    <row c=\"E-C00274\" ci=\"21000274\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144543\" syi=\"31002202\"/>\r\n    <row c=\"E-C00275\" ci=\"21000275\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123658\" syi=\"31002203\"/>\r\n    <row c=\"E-C00275\" ci=\"21000275\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121450\" syi=\"31002204\"/>\r\n    <row c=\"E-C00275\" ci=\"21000275\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145753\" syi=\"31002205\"/>\r\n    <row c=\"E-C00275\" ci=\"21000275\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130510\" syi=\"31002206\"/>\r\n    <row c=\"E-C00275\" ci=\"21000275\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135402\" syi=\"31002207\"/>\r\n    <row c=\"E-C00275\" ci=\"21000275\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165220\" syi=\"31002208\"/>\r\n    <row c=\"E-C00276\" ci=\"21000276\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124152\" syi=\"31002209\"/>\r\n    <row c=\"E-C00276\" ci=\"21000276\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162349\" syi=\"31002210\"/>\r\n    <row c=\"E-C00276\" ci=\"21000276\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J210750\" syi=\"31002211\"/>\r\n    <row c=\"E-C00276\" ci=\"21000276\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J235305\" syi=\"31002212\"/>\r\n    <row c=\"E-C00276\" ci=\"21000276\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120546\" syi=\"31002213\"/>\r\n    <row c=\"E-C00276\" ci=\"21000276\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105059\" syi=\"31002214\"/>\r\n    <row c=\"E-C00277\" ci=\"21000277\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140249\" syi=\"31002215\"/>\r\n    <row c=\"E-C00277\" ci=\"21000277\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154551\" syi=\"31002216\"/>\r\n    <row c=\"E-C00277\" ci=\"21000277\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151530\" syi=\"31002217\"/>\r\n    <row c=\"E-C00277\" ci=\"21000277\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122520\" syi=\"31002218\"/>\r\n    <row c=\"E-C00277\" ci=\"21000277\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151200\" syi=\"31002219\"/>\r\n    <row c=\"E-C00277\" ci=\"21000277\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143245\" syi=\"31002220\"/>\r\n    <row c=\"E-C00277\" ci=\"21000277\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124722\" syi=\"31002221\"/>\r\n    <row c=\"E-C00277\" ci=\"21000277\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J173506\" syi=\"31002222\"/>\r\n    <row c=\"E-C00277\" ci=\"21000277\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J121747\" syi=\"31002223\"/>\r\n    <row c=\"E-C00278\" ci=\"21000278\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J235456\" syi=\"31002224\"/>\r\n    <row c=\"E-C00278\" ci=\"21000278\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J113712\" syi=\"31002225\"/>\r\n    <row c=\"E-C00278\" ci=\"21000278\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165940\" syi=\"31002226\"/>\r\n    <row c=\"E-C00278\" ci=\"21000278\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165520\" syi=\"31002227\"/>\r\n    <row c=\"E-C00278\" ci=\"21000278\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135653\" syi=\"31002228\"/>\r\n    <row c=\"E-C00278\" ci=\"21000278\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132946\" syi=\"31002229\"/>\r\n    <row c=\"E-C00279\" ci=\"21000279\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J134702\" syi=\"31002230\"/>\r\n    <row c=\"E-C00279\" ci=\"21000279\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111249\" syi=\"31002231\"/>\r\n    <row c=\"E-C00279\" ci=\"21000279\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105607\" syi=\"31002232\"/>\r\n    <row c=\"E-C00279\" ci=\"21000279\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100551\" syi=\"31002233\"/>\r\n    <row c=\"E-C00279\" ci=\"21000279\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140524\" syi=\"31002234\"/>\r\n    <row c=\"E-C00279\" ci=\"21000279\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J234152\" syi=\"31002235\"/>\r\n    <row c=\"E-C00279\" ci=\"21000279\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164732\" syi=\"31002236\"/>\r\n    <row c=\"E-C00279\" ci=\"21000279\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131505\" syi=\"31002237\"/>\r\n    <row c=\"E-C00280\" ci=\"21000280\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115405\" syi=\"31002238\"/>\r\n    <row c=\"E-C00280\" ci=\"21000280\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J215009\" syi=\"31002239\"/>\r\n    <row c=\"E-C00280\" ci=\"21000280\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161940\" syi=\"31002240\"/>\r\n    <row c=\"E-C00280\" ci=\"21000280\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145825\" syi=\"31002241\"/>\r\n    <row c=\"E-C00280\" ci=\"21000280\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132605\" syi=\"31002242\"/>\r\n    <row c=\"E-C00280\" ci=\"21000280\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115907\" syi=\"31002243\"/>\r\n    <row c=\"E-C00281\" ci=\"21000281\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125634\" syi=\"31002244\"/>\r\n    <row c=\"E-C00281\" ci=\"21000281\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110530\" syi=\"31002245\"/>\r\n    <row c=\"E-C00281\" ci=\"21000281\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100854\" syi=\"31002246\"/>\r\n    <row c=\"E-C00281\" ci=\"21000281\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102053\" syi=\"31002247\"/>\r\n    <row c=\"E-C00281\" ci=\"21000281\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111518\" syi=\"31002248\"/>\r\n    <row c=\"E-C00281\" ci=\"21000281\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145349\" syi=\"31002249\"/>\r\n    <row c=\"E-C00281\" ci=\"21000281\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145846\" syi=\"31002250\"/>\r\n    <row c=\"E-C00282\" ci=\"21000282\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J215554\" syi=\"31002251\"/>\r\n    <row c=\"E-C00282\" ci=\"21000282\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115950\" syi=\"31002252\"/>\r\n    <row c=\"E-C00282\" ci=\"21000282\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100109\" syi=\"31002253\"/>\r\n    <row c=\"E-C00282\" ci=\"21000282\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161838\" syi=\"31002254\"/>\r\n    <row c=\"E-C00282\" ci=\"21000282\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J173052\" syi=\"31002255\"/>\r\n    <row c=\"E-C00282\" ci=\"21000282\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170807\" syi=\"31002256\"/>\r\n    <row c=\"E-C00282\" ci=\"21000282\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105246\" syi=\"31002257\"/>\r\n    <row c=\"E-C00282\" ci=\"21000282\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144944\" syi=\"31002258\"/>\r\n    <row c=\"E-C00283\" ci=\"21000283\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170930\" syi=\"31002259\"/>\r\n    <row c=\"E-C00283\" ci=\"21000283\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130039\" syi=\"31002260\"/>\r\n    <row c=\"E-C00283\" ci=\"21000283\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103615\" syi=\"31002261\"/>\r\n    <row c=\"E-C00283\" ci=\"21000283\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111227\" syi=\"31002262\"/>\r\n    <row c=\"E-C00283\" ci=\"21000283\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153222\" syi=\"31002263\"/>\r\n    <row c=\"E-C00283\" ci=\"21000283\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144434\" syi=\"31002264\"/>\r\n    <row c=\"E-C00283\" ci=\"21000283\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J230842\" syi=\"31002265\"/>\r\n    <row c=\"E-C00283\" ci=\"21000283\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172139\" syi=\"31002266\"/>\r\n    <row c=\"E-C00284\" ci=\"21000284\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J232741\" syi=\"31002267\"/>\r\n    <row c=\"E-C00284\" ci=\"21000284\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110634\" syi=\"31002268\"/>\r\n    <row c=\"E-C00284\" ci=\"21000284\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124058\" syi=\"31002269\"/>\r\n    <row c=\"E-C00284\" ci=\"21000284\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123432\" syi=\"31002270\"/>\r\n    <row c=\"E-C00284\" ci=\"21000284\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151909\" syi=\"31002271\"/>\r\n    <row c=\"E-C00284\" ci=\"21000284\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145706\" syi=\"31002272\"/>\r\n    <row c=\"E-C00284\" ci=\"21000284\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J230242\" syi=\"31002273\"/>\r\n    <row c=\"E-C00285\" ci=\"21000285\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172840\" syi=\"31002274\"/>\r\n    <row c=\"E-C00285\" ci=\"21000285\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131450\" syi=\"31002275\"/>\r\n    <row c=\"E-C00285\" ci=\"21000285\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125101\" syi=\"31002276\"/>\r\n    <row c=\"E-C00285\" ci=\"21000285\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142910\" syi=\"31002277\"/>\r\n    <row c=\"E-C00285\" ci=\"21000285\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131142\" syi=\"31002278\"/>\r\n    <row c=\"E-C00285\" ci=\"21000285\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152827\" syi=\"31002279\"/>\r\n    <row c=\"E-C00285\" ci=\"21000285\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115901\" syi=\"31002280\"/>\r\n    <row c=\"E-C00285\" ci=\"21000285\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114100\" syi=\"31002281\"/>\r\n    <row c=\"E-C00285\" ci=\"21000285\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162132\" syi=\"31002282\"/>\r\n    <row c=\"E-C00286\" ci=\"21000286\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171722\" syi=\"31002283\"/>\r\n    <row c=\"E-C00286\" ci=\"21000286\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135554\" syi=\"31002284\"/>\r\n    <row c=\"E-C00286\" ci=\"21000286\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J214212\" syi=\"31002285\"/>\r\n    <row c=\"E-C00286\" ci=\"21000286\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130305\" syi=\"31002286\"/>\r\n    <row c=\"E-C00286\" ci=\"21000286\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111543\" syi=\"31002287\"/>\r\n    <row c=\"E-C00286\" ci=\"21000286\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160623\" syi=\"31002288\"/>\r\n    <row c=\"E-C00286\" ci=\"21000286\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J234722\" syi=\"31002289\"/>\r\n    <row c=\"E-C00287\" ci=\"21000287\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133513\" syi=\"31002290\"/>\r\n    <row c=\"E-C00287\" ci=\"21000287\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104704\" syi=\"31002291\"/>\r\n    <row c=\"E-C00287\" ci=\"21000287\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120354\" syi=\"31002292\"/>\r\n    <row c=\"E-C00287\" ci=\"21000287\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165312\" syi=\"31002293\"/>\r\n    <row c=\"E-C00287\" ci=\"21000287\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103812\" syi=\"31002294\"/>\r\n    <row c=\"E-C00287\" ci=\"21000287\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143525\" syi=\"31002295\"/>\r\n    <row c=\"E-C00288\" ci=\"21000288\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125716\" syi=\"31002296\"/>\r\n    <row c=\"E-C00288\" ci=\"21000288\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143845\" syi=\"31002297\"/>\r\n    <row c=\"E-C00288\" ci=\"21000288\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135626\" syi=\"31002298\"/>\r\n    <row c=\"E-C00288\" ci=\"21000288\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115905\" syi=\"31002299\"/>\r\n    <row c=\"E-C00288\" ci=\"21000288\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J233917\" syi=\"31002300\"/>\r\n    <row c=\"E-C00288\" ci=\"21000288\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140343\" syi=\"31002301\"/>\r\n    <row c=\"E-C00288\" ci=\"21000288\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114315\" syi=\"31002302\"/>\r\n    <row c=\"E-C00289\" ci=\"21000289\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142653\" syi=\"31002303\"/>\r\n    <row c=\"E-C00289\" ci=\"21000289\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132546\" syi=\"31002304\"/>\r\n    <row c=\"E-C00289\" ci=\"21000289\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165205\" syi=\"31002305\"/>\r\n    <row c=\"E-C00289\" ci=\"21000289\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122518\" syi=\"31002306\"/>\r\n    <row c=\"E-C00289\" ci=\"21000289\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153825\" syi=\"31002307\"/>\r\n    <row c=\"E-C00289\" ci=\"21000289\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101435\" syi=\"31002308\"/>\r\n    <row c=\"E-C00289\" ci=\"21000289\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143819\" syi=\"31002309\"/>\r\n    <row c=\"E-C00289\" ci=\"21000289\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170417\" syi=\"31002310\"/>\r\n    <row c=\"E-C00289\" ci=\"21000289\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115727\" syi=\"31002311\"/>\r\n    <row c=\"E-C00290\" ci=\"21000290\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115124\" syi=\"31002312\"/>\r\n    <row c=\"E-C00290\" ci=\"21000290\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135533\" syi=\"31002313\"/>\r\n    <row c=\"E-C00290\" ci=\"21000290\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J230745\" syi=\"31002314\"/>\r\n    <row c=\"E-C00290\" ci=\"21000290\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112918\" syi=\"31002315\"/>\r\n    <row c=\"E-C00290\" ci=\"21000290\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111640\" syi=\"31002316\"/>\r\n    <row c=\"E-C00290\" ci=\"21000290\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J231137\" syi=\"31002317\"/>\r\n    <row c=\"E-C00290\" ci=\"21000290\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111613\" syi=\"31002318\"/>\r\n    <row c=\"E-C00290\" ci=\"21000290\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145131\" syi=\"31002319\"/>\r\n    <row c=\"E-C00291\" ci=\"21000291\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111003\" syi=\"31002320\"/>\r\n    <row c=\"E-C00291\" ci=\"21000291\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131520\" syi=\"31002321\"/>\r\n    <row c=\"E-C00291\" ci=\"21000291\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120922\" syi=\"31002322\"/>\r\n    <row c=\"E-C00291\" ci=\"21000291\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142138\" syi=\"31002323\"/>\r\n    <row c=\"E-C00291\" ci=\"21000291\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153106\" syi=\"31002324\"/>\r\n    <row c=\"E-C00291\" ci=\"21000291\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111939\" syi=\"31002325\"/>\r\n    <row c=\"E-C00291\" ci=\"21000291\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J173550\" syi=\"31002326\"/>\r\n    <row c=\"E-C00291\" ci=\"21000291\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145310\" syi=\"31002327\"/>\r\n    <row c=\"E-C00291\" ci=\"21000291\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155928\" syi=\"31002328\"/>\r\n    <row c=\"E-C00292\" ci=\"21000292\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J234208\" syi=\"31002329\"/>\r\n    <row c=\"E-C00292\" ci=\"21000292\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105722\" syi=\"31002330\"/>\r\n    <row c=\"E-C00292\" ci=\"21000292\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123546\" syi=\"31002331\"/>\r\n    <row c=\"E-C00292\" ci=\"21000292\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J210235\" syi=\"31002332\"/>\r\n    <row c=\"E-C00292\" ci=\"21000292\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170736\" syi=\"31002333\"/>\r\n    <row c=\"E-C00292\" ci=\"21000292\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170240\" syi=\"31002334\"/>\r\n    <row c=\"E-C00292\" ci=\"21000292\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125532\" syi=\"31002335\"/>\r\n    <row c=\"E-C00292\" ci=\"21000292\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133923\" syi=\"31002336\"/>\r\n    <row c=\"E-C00292\" ci=\"21000292\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131509\" syi=\"31002337\"/>\r\n    <row c=\"E-C00293\" ci=\"21000293\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J210519\" syi=\"31002338\"/>\r\n    <row c=\"E-C00293\" ci=\"21000293\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J233517\" syi=\"31002339\"/>\r\n    <row c=\"E-C00293\" ci=\"21000293\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162612\" syi=\"31002340\"/>\r\n    <row c=\"E-C00293\" ci=\"21000293\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123055\" syi=\"31002341\"/>\r\n    <row c=\"E-C00293\" ci=\"21000293\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212302\" syi=\"31002342\"/>\r\n    <row c=\"E-C00293\" ci=\"21000293\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102103\" syi=\"31002343\"/>\r\n    <row c=\"E-C00293\" ci=\"21000293\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213956\" syi=\"31002344\"/>\r\n    <row c=\"E-C00293\" ci=\"21000293\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161944\" syi=\"31002345\"/>\r\n    <row c=\"E-C00294\" ci=\"21000294\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135705\" syi=\"31002346\"/>\r\n    <row c=\"E-C00294\" ci=\"21000294\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103215\" syi=\"31002347\"/>\r\n    <row c=\"E-C00294\" ci=\"21000294\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141032\" syi=\"31002348\"/>\r\n    <row c=\"E-C00294\" ci=\"21000294\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135306\" syi=\"31002349\"/>\r\n    <row c=\"E-C00294\" ci=\"21000294\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155256\" syi=\"31002350\"/>\r\n    <row c=\"E-C00294\" ci=\"21000294\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162853\" syi=\"31002351\"/>\r\n    <row c=\"E-C00294\" ci=\"21000294\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104809\" syi=\"31002352\"/>\r\n    <row c=\"E-C00294\" ci=\"21000294\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144454\" syi=\"31002353\"/>\r\n    <row c=\"E-C00295\" ci=\"21000295\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110759\" syi=\"31002354\"/>\r\n    <row c=\"E-C00295\" ci=\"21000295\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J215304\" syi=\"31002355\"/>\r\n    <row c=\"E-C00295\" ci=\"21000295\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110946\" syi=\"31002356\"/>\r\n    <row c=\"E-C00295\" ci=\"21000295\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J230221\" syi=\"31002357\"/>\r\n    <row c=\"E-C00295\" ci=\"21000295\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140133\" syi=\"31002358\"/>\r\n    <row c=\"E-C00295\" ci=\"21000295\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105531\" syi=\"31002359\"/>\r\n    <row c=\"E-C00296\" ci=\"21000296\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213502\" syi=\"31002360\"/>\r\n    <row c=\"E-C00296\" ci=\"21000296\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101647\" syi=\"31002361\"/>\r\n    <row c=\"E-C00296\" ci=\"21000296\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133023\" syi=\"31002362\"/>\r\n    <row c=\"E-C00296\" ci=\"21000296\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164553\" syi=\"31002363\"/>\r\n    <row c=\"E-C00296\" ci=\"21000296\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J232959\" syi=\"31002364\"/>\r\n    <row c=\"E-C00296\" ci=\"21000296\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152106\" syi=\"31002365\"/>\r\n    <row c=\"E-C00296\" ci=\"21000296\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142535\" syi=\"31002366\"/>\r\n    <row c=\"F-C00297\" ci=\"21000297\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104859\" syi=\"31002367\"/>\r\n    <row c=\"F-C00297\" ci=\"21000297\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155838\" syi=\"31002368\"/>\r\n    <row c=\"F-C00297\" ci=\"21000297\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164745\" syi=\"31002369\"/>\r\n    <row c=\"F-C00297\" ci=\"21000297\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135504\" syi=\"31002370\"/>\r\n    <row c=\"F-C00297\" ci=\"21000297\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115923\" syi=\"31002371\"/>\r\n    <row c=\"F-C00297\" ci=\"21000297\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151325\" syi=\"31002372\"/>\r\n    <row c=\"F-C00297\" ci=\"21000297\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105705\" syi=\"31002373\"/>\r\n    <row c=\"F-C00298\" ci=\"21000298\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141434\" syi=\"31002374\"/>\r\n    <row c=\"F-C00298\" ci=\"21000298\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115844\" syi=\"31002375\"/>\r\n    <row c=\"F-C00298\" ci=\"21000298\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133906\" syi=\"31002376\"/>\r\n    <row c=\"F-C00298\" ci=\"21000298\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115855\" syi=\"31002377\"/>\r\n    <row c=\"F-C00298\" ci=\"21000298\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J150020\" syi=\"31002378\"/>\r\n    <row c=\"F-C00298\" ci=\"21000298\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142528\" syi=\"31002379\"/>\r\n    <row c=\"F-C00299\" ci=\"21000299\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130900\" syi=\"31002380\"/>\r\n    <row c=\"F-C00299\" ci=\"21000299\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J222045\" syi=\"31002381\"/>\r\n    <row c=\"F-C00299\" ci=\"21000299\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111450\" syi=\"31002382\"/>\r\n    <row c=\"F-C00299\" ci=\"21000299\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103800\" syi=\"31002383\"/>\r\n    <row c=\"F-C00299\" ci=\"21000299\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144420\" syi=\"31002384\"/>\r\n    <row c=\"F-C00299\" ci=\"21000299\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152550\" syi=\"31002385\"/>\r\n    <row c=\"F-C00299\" ci=\"21000299\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114003\" syi=\"31002386\"/>\r\n    <row c=\"F-C00299\" ci=\"21000299\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143751\" syi=\"31002387\"/>\r\n    <row c=\"F-C00299\" ci=\"21000299\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J215930\" syi=\"31002388\"/>\r\n    <row c=\"F-C00300\" ci=\"21000300\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120512\" syi=\"31002389\"/>\r\n    <row c=\"F-C00300\" ci=\"21000300\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145939\" syi=\"31002390\"/>\r\n    <row c=\"F-C00300\" ci=\"21000300\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135623\" syi=\"31002391\"/>\r\n    <row c=\"F-C00300\" ci=\"21000300\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111918\" syi=\"31002392\"/>\r\n    <row c=\"F-C00300\" ci=\"21000300\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J162614\" syi=\"31002393\"/>\r\n    <row c=\"F-C00300\" ci=\"21000300\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104921\" syi=\"31002394\"/>\r\n    <row c=\"F-C00300\" ci=\"21000300\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J230049\" syi=\"31002395\"/>\r\n    <row c=\"F-C00300\" ci=\"21000300\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115935\" syi=\"31002396\"/>\r\n    <row c=\"F-C00301\" ci=\"21000301\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151920\" syi=\"31002397\"/>\r\n    <row c=\"F-C00301\" ci=\"21000301\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160855\" syi=\"31002398\"/>\r\n    <row c=\"F-C00301\" ci=\"21000301\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155311\" syi=\"31002399\"/>\r\n    <row c=\"F-C00301\" ci=\"21000301\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101553\" syi=\"31002400\"/>\r\n    <row c=\"F-C00301\" ci=\"21000301\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110421\" syi=\"31002401\"/>\r\n    <row c=\"F-C00301\" ci=\"21000301\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155207\" syi=\"31002402\"/>\r\n    <row c=\"F-C00302\" ci=\"21000302\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143200\" syi=\"31002403\"/>\r\n    <row c=\"F-C00302\" ci=\"21000302\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110834\" syi=\"31002404\"/>\r\n    <row c=\"F-C00302\" ci=\"21000302\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142247\" syi=\"31002405\"/>\r\n    <row c=\"F-C00302\" ci=\"21000302\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112028\" syi=\"31002406\"/>\r\n    <row c=\"F-C00302\" ci=\"21000302\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111520\" syi=\"31002407\"/>\r\n    <row c=\"F-C00302\" ci=\"21000302\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161335\" syi=\"31002408\"/>\r\n    <row c=\"F-C00302\" ci=\"21000302\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170118\" syi=\"31002409\"/>\r\n    <row c=\"F-C00302\" ci=\"21000302\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J160722\" syi=\"31002410\"/>\r\n    <row c=\"F-C00303\" ci=\"21000303\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124504\" syi=\"31002411\"/>\r\n    <row c=\"F-C00303\" ci=\"21000303\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J212612\" syi=\"31002412\"/>\r\n    <row c=\"F-C00303\" ci=\"21000303\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154829\" syi=\"31002413\"/>\r\n    <row c=\"F-C00303\" ci=\"21000303\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144436\" syi=\"31002414\"/>\r\n    <row c=\"F-C00303\" ci=\"21000303\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J165641\" syi=\"31002415\"/>\r\n    <row c=\"F-C00303\" ci=\"21000303\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145510\" syi=\"31002416\"/>\r\n    <row c=\"F-C00304\" ci=\"21000304\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J110810\" syi=\"31002417\"/>\r\n    <row c=\"F-C00304\" ci=\"21000304\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J131916\" syi=\"31002418\"/>\r\n    <row c=\"F-C00304\" ci=\"21000304\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120103\" syi=\"31002419\"/>\r\n    <row c=\"F-C00304\" ci=\"21000304\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171404\" syi=\"31002420\"/>\r\n    <row c=\"F-C00304\" ci=\"21000304\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104632\" syi=\"31002421\"/>\r\n    <row c=\"F-C00304\" ci=\"21000304\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103400\" syi=\"31002422\"/>\r\n    <row c=\"F-C00304\" ci=\"21000304\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154021\" syi=\"31002423\"/>\r\n    <row c=\"F-C00304\" ci=\"21000304\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122249\" syi=\"31002424\"/>\r\n    <row c=\"F-C00304\" ci=\"21000304\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213753\" syi=\"31002425\"/>\r\n    <row c=\"F-C00305\" ci=\"21000305\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J155650\" syi=\"31002426\"/>\r\n    <row c=\"F-C00305\" ci=\"21000305\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152722\" syi=\"31002427\"/>\r\n    <row c=\"F-C00305\" ci=\"21000305\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100501\" syi=\"31002428\"/>\r\n    <row c=\"F-C00305\" ci=\"21000305\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140918\" syi=\"31002429\"/>\r\n    <row c=\"F-C00305\" ci=\"21000305\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103414\" syi=\"31002430\"/>\r\n    <row c=\"F-C00305\" ci=\"21000305\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J223432\" syi=\"31002431\"/>\r\n    <row c=\"F-C00305\" ci=\"21000305\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100409\" syi=\"31002432\"/>\r\n    <row c=\"F-C00305\" ci=\"21000305\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141502\" syi=\"31002433\"/>\r\n    <row c=\"F-C00305\" ci=\"21000305\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J115008\" syi=\"31002434\"/>\r\n    <row c=\"F-C00306\" ci=\"21000306\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112829\" syi=\"31002435\"/>\r\n    <row c=\"F-C00306\" ci=\"21000306\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105801\" syi=\"31002436\"/>\r\n    <row c=\"F-C00306\" ci=\"21000306\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105023\" syi=\"31002437\"/>\r\n    <row c=\"F-C00306\" ci=\"21000306\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101652\" syi=\"31002438\"/>\r\n    <row c=\"F-C00306\" ci=\"21000306\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J163225\" syi=\"31002439\"/>\r\n    <row c=\"F-C00306\" ci=\"21000306\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135220\" syi=\"31002440\"/>\r\n    <row c=\"F-C00306\" ci=\"21000306\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114430\" syi=\"31002441\"/>\r\n    <row c=\"F-C00306\" ci=\"21000306\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103504\" syi=\"31002442\"/>\r\n    <row c=\"F-C00307\" ci=\"21000307\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J123940\" syi=\"31002443\"/>\r\n    <row c=\"F-C00307\" ci=\"21000307\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104857\" syi=\"31002444\"/>\r\n    <row c=\"F-C00307\" ci=\"21000307\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J112417\" syi=\"31002445\"/>\r\n    <row c=\"F-C00307\" ci=\"21000307\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J205141\" syi=\"31002446\"/>\r\n    <row c=\"F-C00307\" ci=\"21000307\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104037\" syi=\"31002447\"/>\r\n    <row c=\"F-C00307\" ci=\"21000307\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J144902\" syi=\"31002448\"/>\r\n    <row c=\"F-C00308\" ci=\"21000308\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122818\" syi=\"31002449\"/>\r\n    <row c=\"F-C00308\" ci=\"21000308\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J211353\" syi=\"31002450\"/>\r\n    <row c=\"F-C00308\" ci=\"21000308\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104136\" syi=\"31002451\"/>\r\n    <row c=\"F-C00308\" ci=\"21000308\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J172842\" syi=\"31002452\"/>\r\n    <row c=\"F-C00308\" ci=\"21000308\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J122452\" syi=\"31002453\"/>\r\n    <row c=\"F-C00308\" ci=\"21000308\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140200\" syi=\"31002454\"/>\r\n    <row c=\"F-C00308\" ci=\"21000308\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J232246\" syi=\"31002455\"/>\r\n    <row c=\"F-C00308\" ci=\"21000308\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101748\" syi=\"31002456\"/>\r\n    <row c=\"F-C00309\" ci=\"21000309\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133241\" syi=\"31002457\"/>\r\n    <row c=\"F-C00309\" ci=\"21000309\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151817\" syi=\"31002458\"/>\r\n    <row c=\"F-C00309\" ci=\"21000309\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J124201\" syi=\"31002459\"/>\r\n    <row c=\"F-C00309\" ci=\"21000309\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125111\" syi=\"31002460\"/>\r\n    <row c=\"F-C00309\" ci=\"21000309\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101755\" syi=\"31002461\"/>\r\n    <row c=\"F-C00309\" ci=\"21000309\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101708\" syi=\"31002462\"/>\r\n    <row c=\"F-C00309\" ci=\"21000309\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135031\" syi=\"31002463\"/>\r\n    <row c=\"F-C00310\" ci=\"21000310\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J152117\" syi=\"31002464\"/>\r\n    <row c=\"F-C00310\" ci=\"21000310\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J164701\" syi=\"31002465\"/>\r\n    <row c=\"F-C00310\" ci=\"21000310\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132106\" syi=\"31002466\"/>\r\n    <row c=\"F-C00310\" ci=\"21000310\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J141319\" syi=\"31002467\"/>\r\n    <row c=\"F-C00310\" ci=\"21000310\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170845\" syi=\"31002468\"/>\r\n    <row c=\"F-C00310\" ci=\"21000310\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161215\" syi=\"31002469\"/>\r\n    <row c=\"F-C00310\" ci=\"21000310\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111447\" syi=\"31002470\"/>\r\n    <row c=\"E-C00291\" ci=\"21000291\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J222408\" syi=\"31002471\"/>\r\n    <row c=\"E-C00275\" ci=\"21000275\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J161747\" syi=\"31002472\"/>\r\n    <row c=\"E-C00296\" ci=\"21000296\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J132328\" syi=\"31002473\"/>\r\n    <row c=\"F-C00307\" ci=\"21000307\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J153217\" syi=\"31002474\"/>\r\n    <row c=\"E-C00292\" ci=\"21000292\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J142814\" syi=\"31002475\"/>\r\n    <row c=\"E-C00259\" ci=\"21000259\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J101248\" syi=\"31002476\"/>\r\n    <row c=\"E-C00290\" ci=\"21000290\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J135825\" syi=\"31002477\"/>\r\n    <row c=\"F-C00299\" ci=\"21000299\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J151838\" syi=\"31002478\"/>\r\n    <row c=\"E-C00282\" ci=\"21000282\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J100820\" syi=\"31002479\"/>\r\n    <row c=\"E-C00296\" ci=\"21000296\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J213344\" syi=\"31002480\"/>\r\n    <row c=\"E-C00244\" ci=\"21000244\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J103701\" syi=\"31002481\"/>\r\n    <row c=\"E-C00254\" ci=\"21000254\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J171246\" syi=\"31002482\"/>\r\n    <row c=\"E-C00238\" ci=\"21000238\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J170158\" syi=\"31002483\"/>\r\n    <row c=\"F-C00307\" ci=\"21000307\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J230559\" syi=\"31002484\"/>\r\n    <row c=\"E-C00248\" ci=\"21000248\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145208\" syi=\"31002485\"/>\r\n    <row c=\"E-C00233\" ci=\"21000233\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J224721\" syi=\"31002486\"/>\r\n    <row c=\"F-C00298\" ci=\"21000298\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J105934\" syi=\"31002487\"/>\r\n    <row c=\"E-C00245\" ci=\"21000245\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J130818\" syi=\"31002488\"/>\r\n    <row c=\"F-C00303\" ci=\"21000303\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J140555\" syi=\"31002489\"/>\r\n    <row c=\"E-C00265\" ci=\"21000265\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J221356\" syi=\"31002490\"/>\r\n    <row c=\"E-C00278\" ci=\"21000278\" r=\"E-R00028\" ri=\"11000028\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J111245\" syi=\"31002491\"/>\r\n    <row c=\"F-C00310\" ci=\"21000310\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J102834\" syi=\"31002492\"/>\r\n    <row c=\"E-C00261\" ci=\"21000261\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J154509\" syi=\"31002493\"/>\r\n    <row c=\"E-C00251\" ci=\"21000251\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J234928\" syi=\"31002494\"/>\r\n    <row c=\"F-C00310\" ci=\"21000310\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J222604\" syi=\"31002495\"/>\r\n    <row c=\"E-C00249\" ci=\"21000249\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J133011\" syi=\"31002496\"/>\r\n    <row c=\"E-C00290\" ci=\"21000290\" r=\"E-R00029\" ri=\"11000029\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125245\" syi=\"31002497\"/>\r\n    <row c=\"F-C00309\" ci=\"21000309\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J145523\" syi=\"31002498\"/>\r\n    <row c=\"E-C00269\" ci=\"21000269\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J143605\" syi=\"31002499\"/>\r\n    <row c=\"E-C00239\" ci=\"21000239\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J120750\" syi=\"31002500\"/>\r\n    <row c=\"E-C00258\" ci=\"21000258\" r=\"E-R00026\" ri=\"11000026\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J104617\" syi=\"31002501\"/>\r\n    <row c=\"F-C00299\" ci=\"21000299\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125122\" syi=\"31002502\"/>\r\n    <row c=\"E-C00248\" ci=\"21000248\" r=\"E-R00025\" ri=\"11000025\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J114809\" syi=\"31002503\"/>\r\n    <row c=\"E-C00268\" ci=\"21000268\" r=\"E-R00027\" ri=\"11000027\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J125657\" syi=\"31002504\"/>\r\n    <row c=\"A-C00325\" ci=\"21000325\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J015092\" syi=\"31002505\"/>\r\n    <row c=\"A-C00325\" ci=\"21000325\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J005834\" syi=\"31002506\"/>\r\n    <row c=\"A-C00325\" ci=\"21000325\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J012402\" syi=\"31002507\"/>\r\n    <row c=\"A-C00325\" ci=\"21000325\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J005926\" syi=\"31002508\"/>\r\n    <row c=\"A-C00325\" ci=\"21000325\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J010569\" syi=\"31002509\"/>\r\n    <row c=\"A-C00325\" ci=\"21000325\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J012157\" syi=\"31002510\"/>\r\n    <row c=\"A-C00325\" ci=\"21000325\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J002757\" syi=\"31002511\"/>\r\n    <row c=\"A-C00325\" ci=\"21000325\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J004791\" syi=\"31002512\"/>\r\n    <row c=\"A-C00325\" ci=\"21000325\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J004317\" syi=\"31002513\"/>\r\n    <row c=\"A-C00325\" ci=\"21000325\" r=\"A-R00001\" ri=\"11000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J002216\" syi=\"31002514\"/>\r\n    <row c=\"B-C00326\" ci=\"21000326\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J005482\" syi=\"31002515\"/>\r\n    <row c=\"B-C00326\" ci=\"21000326\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J005900\" syi=\"31002516\"/>\r\n    <row c=\"B-C00326\" ci=\"21000326\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J013070\" syi=\"31002517\"/>\r\n    <row c=\"B-C00326\" ci=\"21000326\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J001057\" syi=\"31002518\"/>\r\n    <row c=\"B-C00326\" ci=\"21000326\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J011321\" syi=\"31002519\"/>\r\n    <row c=\"B-C00326\" ci=\"21000326\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J013123\" syi=\"31002520\"/>\r\n    <row c=\"B-C00326\" ci=\"21000326\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J012735\" syi=\"31002521\"/>\r\n    <row c=\"B-C00326\" ci=\"21000326\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J012635\" syi=\"31002522\"/>\r\n    <row c=\"B-C00326\" ci=\"21000326\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J010000\" syi=\"31002523\"/>\r\n    <row c=\"B-C00326\" ci=\"21000326\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J001890\" syi=\"31002524\"/>\r\n    <row c=\"B-C00326\" ci=\"21000326\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J002964\" syi=\"31002525\"/>\r\n    <row c=\"B-C00326\" ci=\"21000326\" r=\"B-R00004\" ri=\"11000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J004686\" syi=\"31002526\"/>\r\n    <row c=\"C-C00327\" ci=\"21000327\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J011563\" syi=\"31002527\"/>\r\n    <row c=\"C-C00327\" ci=\"21000327\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J001348\" syi=\"31002528\"/>\r\n    <row c=\"C-C00327\" ci=\"21000327\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J002838\" syi=\"31002529\"/>\r\n    <row c=\"C-C00327\" ci=\"21000327\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J001670\" syi=\"31002530\"/>\r\n    <row c=\"C-C00327\" ci=\"21000327\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J014348\" syi=\"31002531\"/>\r\n    <row c=\"C-C00327\" ci=\"21000327\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J003789\" syi=\"31002532\"/>\r\n    <row c=\"C-C00327\" ci=\"21000327\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J012794\" syi=\"31002533\"/>\r\n    <row c=\"C-C00327\" ci=\"21000327\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J005923\" syi=\"31002534\"/>\r\n    <row c=\"C-C00327\" ci=\"21000327\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J001398\" syi=\"31002535\"/>\r\n    <row c=\"C-C00327\" ci=\"21000327\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J011339\" syi=\"31002536\"/>\r\n    <row c=\"C-C00327\" ci=\"21000327\" r=\"C-R00009\" ri=\"11000009\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J004283\" syi=\"31002537\"/>\r\n    <row c=\"D-C00328\" ci=\"21000328\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J002625\" syi=\"31002538\"/>\r\n    <row c=\"D-C00328\" ci=\"21000328\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J004470\" syi=\"31002539\"/>\r\n    <row c=\"D-C00328\" ci=\"21000328\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J011824\" syi=\"31002540\"/>\r\n    <row c=\"D-C00328\" ci=\"21000328\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J010247\" syi=\"31002541\"/>\r\n    <row c=\"D-C00328\" ci=\"21000328\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J002423\" syi=\"31002542\"/>\r\n    <row c=\"D-C00328\" ci=\"21000328\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J001302\" syi=\"31002543\"/>\r\n    <row c=\"D-C00328\" ci=\"21000328\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J010556\" syi=\"31002544\"/>\r\n    <row c=\"D-C00328\" ci=\"21000328\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J011778\" syi=\"31002545\"/>\r\n    <row c=\"D-C00328\" ci=\"21000328\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J005259\" syi=\"31002546\"/>\r\n    <row c=\"D-C00328\" ci=\"21000328\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J005969\" syi=\"31002547\"/>\r\n    <row c=\"D-C00328\" ci=\"21000328\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J001769\" syi=\"31002548\"/>\r\n    <row c=\"D-C00328\" ci=\"21000328\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J004150\" syi=\"31002549\"/>\r\n    <row c=\"D-C00328\" ci=\"21000328\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J005872\" syi=\"31002550\"/>\r\n    <row c=\"D-C00328\" ci=\"21000328\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J011376\" syi=\"31002551\"/>\r\n    <row c=\"D-C00328\" ci=\"21000328\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J005299\" syi=\"31002552\"/>\r\n    <row c=\"D-C00328\" ci=\"21000328\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J011355\" syi=\"31002553\"/>\r\n    <row c=\"D-C00328\" ci=\"21000328\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J011195\" syi=\"31002554\"/>\r\n    <row c=\"D-C00328\" ci=\"21000328\" r=\"D-R00016\" ri=\"11000016\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J005280\" syi=\"31002555\"/>\r\n    <row c=\"E-C00329\" ci=\"21000329\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J010811\" syi=\"31002556\"/>\r\n    <row c=\"E-C00329\" ci=\"21000329\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J001694\" syi=\"31002557\"/>\r\n    <row c=\"E-C00329\" ci=\"21000329\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J003941\" syi=\"31002558\"/>\r\n    <row c=\"E-C00329\" ci=\"21000329\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J011790\" syi=\"31002559\"/>\r\n    <row c=\"E-C00329\" ci=\"21000329\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J013146\" syi=\"31002560\"/>\r\n    <row c=\"E-C00329\" ci=\"21000329\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J004998\" syi=\"31002561\"/>\r\n    <row c=\"E-C00329\" ci=\"21000329\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J003382\" syi=\"31002562\"/>\r\n    <row c=\"E-C00329\" ci=\"21000329\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J003546\" syi=\"31002563\"/>\r\n    <row c=\"E-C00329\" ci=\"21000329\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J001820\" syi=\"31002564\"/>\r\n    <row c=\"E-C00329\" ci=\"21000329\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J012578\" syi=\"31002565\"/>\r\n    <row c=\"E-C00329\" ci=\"21000329\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J012773\" syi=\"31002566\"/>\r\n    <row c=\"E-C00329\" ci=\"21000329\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J005223\" syi=\"31002567\"/>\r\n    <row c=\"E-C00329\" ci=\"21000329\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J005663\" syi=\"31002568\"/>\r\n    <row c=\"E-C00329\" ci=\"21000329\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J003793\" syi=\"31002569\"/>\r\n    <row c=\"E-C00329\" ci=\"21000329\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J004128\" syi=\"31002570\"/>\r\n    <row c=\"E-C00329\" ci=\"21000329\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J005070\" syi=\"31002571\"/>\r\n    <row c=\"E-C00329\" ci=\"21000329\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J001025\" syi=\"31002572\"/>\r\n    <row c=\"E-C00329\" ci=\"21000329\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J005724\" syi=\"31002573\"/>\r\n    <row c=\"E-C00329\" ci=\"21000329\" r=\"E-R00024\" ri=\"11000024\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J004921\" syi=\"31002574\"/>\r\n    <row c=\"F-C00330\" ci=\"21000330\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J012686\" syi=\"31002575\"/>\r\n    <row c=\"F-C00330\" ci=\"21000330\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J010366\" syi=\"31002576\"/>\r\n    <row c=\"F-C00330\" ci=\"21000330\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J012475\" syi=\"31002577\"/>\r\n    <row c=\"F-C00330\" ci=\"21000330\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J015227\" syi=\"31002578\"/>\r\n    <row c=\"F-C00330\" ci=\"21000330\" r=\"F-R00030\" ri=\"11000030\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J010951\" syi=\"31002579\"/>\r\n    <row c=\"H-C00331\" ci=\"21000331\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000895\" syi=\"31002580\"/>\r\n    <row c=\"H-C00331\" ci=\"21000331\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000487\" syi=\"31002581\"/>\r\n    <row c=\"H-C00331\" ci=\"21000331\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000621\" syi=\"31002582\"/>\r\n    <row c=\"H-C00331\" ci=\"21000331\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000551\" syi=\"31002583\"/>\r\n    <row c=\"H-C00332\" ci=\"21000332\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000630\" syi=\"31002584\"/>\r\n    <row c=\"H-C00332\" ci=\"21000332\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000452\" syi=\"31002585\"/>\r\n    <row c=\"H-C00332\" ci=\"21000332\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000327\" syi=\"31002586\"/>\r\n    <row c=\"H-C00332\" ci=\"21000332\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000186\" syi=\"31002587\"/>\r\n    <row c=\"H-C00332\" ci=\"21000332\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000528\" syi=\"31002588\"/>\r\n    <row c=\"H-C00332\" ci=\"21000332\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000353\" syi=\"31002589\"/>\r\n    <row c=\"H-C00332\" ci=\"21000332\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000461\" syi=\"31002590\"/>\r\n    <row c=\"H-C00332\" ci=\"21000332\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000522\" syi=\"31002591\"/>\r\n    <row c=\"H-C00332\" ci=\"21000332\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000965\" syi=\"31002592\"/>\r\n    <row c=\"H-C00332\" ci=\"21000332\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000304\" syi=\"31002593\"/>\r\n    <row c=\"H-C00332\" ci=\"21000332\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000595\" syi=\"31002594\"/>\r\n    <row c=\"H-C00333\" ci=\"21000333\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000685\" syi=\"31002595\"/>\r\n    <row c=\"H-C00333\" ci=\"21000333\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000844\" syi=\"31002596\"/>\r\n    <row c=\"H-C00333\" ci=\"21000333\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000719\" syi=\"31002597\"/>\r\n    <row c=\"H-C00333\" ci=\"21000333\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000726\" syi=\"31002598\"/>\r\n    <row c=\"H-C00333\" ci=\"21000333\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000214\" syi=\"31002599\"/>\r\n    <row c=\"H-C00333\" ci=\"21000333\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000652\" syi=\"31002600\"/>\r\n    <row c=\"H-C00333\" ci=\"21000333\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000313\" syi=\"31002601\"/>\r\n    <row c=\"H-C00333\" ci=\"21000333\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000687\" syi=\"31002602\"/>\r\n    <row c=\"H-C00333\" ci=\"21000333\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000427\" syi=\"31002603\"/>\r\n    <row c=\"H-C00333\" ci=\"21000333\" r=\"H-R00032\" ri=\"11000032\" s=\"\" se=\"0.0\" si=\"0\" sy=\"J000102\" syi=\"31002604\"/>\r\n    <row c=\"ADC01\" ci=\"22000001\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD001\" syi=\"32000001\"/>\r\n    <row c=\"ADC01\" ci=\"22000001\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD002\" syi=\"32000002\"/>\r\n    <row c=\"ADC01\" ci=\"22000001\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD003\" syi=\"32000003\"/>\r\n    <row c=\"ADC01\" ci=\"22000001\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD004\" syi=\"32000004\"/>\r\n    <row c=\"ADC01\" ci=\"22000001\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD005\" syi=\"32000005\"/>\r\n    <row c=\"ADC01\" ci=\"22000001\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD006\" syi=\"32000006\"/>\r\n    <row c=\"ADC01\" ci=\"22000001\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD007\" syi=\"32000007\"/>\r\n    <row c=\"ADC01\" ci=\"22000001\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD008\" syi=\"32000008\"/>\r\n    <row c=\"ADC02\" ci=\"22000002\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD009\" syi=\"32000009\"/>\r\n    <row c=\"ADC02\" ci=\"22000002\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD010\" syi=\"32000010\"/>\r\n    <row c=\"ADC02\" ci=\"22000002\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD011\" syi=\"32000011\"/>\r\n    <row c=\"ADC02\" ci=\"22000002\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD012\" syi=\"32000012\"/>\r\n    <row c=\"ADC02\" ci=\"22000002\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD013\" syi=\"32000013\"/>\r\n    <row c=\"ADC02\" ci=\"22000002\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD014\" syi=\"32000014\"/>\r\n    <row c=\"ADC02\" ci=\"22000002\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD015\" syi=\"32000015\"/>\r\n    <row c=\"ADC02\" ci=\"22000002\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD016\" syi=\"32000016\"/>\r\n    <row c=\"ADC03\" ci=\"22000003\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD017\" syi=\"32000017\"/>\r\n    <row c=\"ADC03\" ci=\"22000003\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD018\" syi=\"32000018\"/>\r\n    <row c=\"ADC03\" ci=\"22000003\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD019\" syi=\"32000019\"/>\r\n    <row c=\"ADC03\" ci=\"22000003\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD020\" syi=\"32000020\"/>\r\n    <row c=\"ADC03\" ci=\"22000003\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD021\" syi=\"32000021\"/>\r\n    <row c=\"ADC03\" ci=\"22000003\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD022\" syi=\"32000022\"/>\r\n    <row c=\"ADC03\" ci=\"22000003\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD023\" syi=\"32000023\"/>\r\n    <row c=\"ADC03\" ci=\"22000003\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD024\" syi=\"32000024\"/>\r\n    <row c=\"ADC04\" ci=\"22000004\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD025\" syi=\"32000025\"/>\r\n    <row c=\"ADC04\" ci=\"22000004\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD026\" syi=\"32000026\"/>\r\n    <row c=\"ADC04\" ci=\"22000004\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD027\" syi=\"32000027\"/>\r\n    <row c=\"ADC04\" ci=\"22000004\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD028\" syi=\"32000028\"/>\r\n    <row c=\"ADC04\" ci=\"22000004\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD029\" syi=\"32000029\"/>\r\n    <row c=\"ADC04\" ci=\"22000004\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD030\" syi=\"32000030\"/>\r\n    <row c=\"ADC04\" ci=\"22000004\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD031\" syi=\"32000031\"/>\r\n    <row c=\"ADC04\" ci=\"22000004\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD032\" syi=\"32000032\"/>\r\n    <row c=\"ADC05\" ci=\"22000005\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD033\" syi=\"32000033\"/>\r\n    <row c=\"ADC05\" ci=\"22000005\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD034\" syi=\"32000034\"/>\r\n    <row c=\"ADC05\" ci=\"22000005\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD035\" syi=\"32000035\"/>\r\n    <row c=\"ADC05\" ci=\"22000005\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD036\" syi=\"32000036\"/>\r\n    <row c=\"ADC05\" ci=\"22000005\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD037\" syi=\"32000037\"/>\r\n    <row c=\"ADC05\" ci=\"22000005\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD038\" syi=\"32000038\"/>\r\n    <row c=\"ADC05\" ci=\"22000005\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD039\" syi=\"32000039\"/>\r\n    <row c=\"ADC05\" ci=\"22000005\" r=\"ADR01\" ri=\"12000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD040\" syi=\"32000040\"/>\r\n    <row c=\"ADC06\" ci=\"22000006\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD041\" syi=\"32000041\"/>\r\n    <row c=\"ADC06\" ci=\"22000006\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD042\" syi=\"32000042\"/>\r\n    <row c=\"ADC06\" ci=\"22000006\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD043\" syi=\"32000043\"/>\r\n    <row c=\"ADC06\" ci=\"22000006\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD044\" syi=\"32000044\"/>\r\n    <row c=\"ADC06\" ci=\"22000006\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD045\" syi=\"32000045\"/>\r\n    <row c=\"ADC06\" ci=\"22000006\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD046\" syi=\"32000046\"/>\r\n    <row c=\"ADC06\" ci=\"22000006\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD047\" syi=\"32000047\"/>\r\n    <row c=\"ADC06\" ci=\"22000006\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD048\" syi=\"32000048\"/>\r\n    <row c=\"ADC07\" ci=\"22000007\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD049\" syi=\"32000049\"/>\r\n    <row c=\"ADC07\" ci=\"22000007\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD050\" syi=\"32000050\"/>\r\n    <row c=\"ADC07\" ci=\"22000007\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD051\" syi=\"32000051\"/>\r\n    <row c=\"ADC07\" ci=\"22000007\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD052\" syi=\"32000052\"/>\r\n    <row c=\"ADC07\" ci=\"22000007\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD053\" syi=\"32000053\"/>\r\n    <row c=\"ADC07\" ci=\"22000007\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD054\" syi=\"32000054\"/>\r\n    <row c=\"ADC07\" ci=\"22000007\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD055\" syi=\"32000055\"/>\r\n    <row c=\"ADC07\" ci=\"22000007\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD056\" syi=\"32000056\"/>\r\n    <row c=\"ADC08\" ci=\"22000008\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD057\" syi=\"32000057\"/>\r\n    <row c=\"ADC08\" ci=\"22000008\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD058\" syi=\"32000058\"/>\r\n    <row c=\"ADC08\" ci=\"22000008\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD059\" syi=\"32000059\"/>\r\n    <row c=\"ADC08\" ci=\"22000008\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD060\" syi=\"32000060\"/>\r\n    <row c=\"ADC08\" ci=\"22000008\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD061\" syi=\"32000061\"/>\r\n    <row c=\"ADC08\" ci=\"22000008\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD062\" syi=\"32000062\"/>\r\n    <row c=\"ADC08\" ci=\"22000008\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD063\" syi=\"32000063\"/>\r\n    <row c=\"ADC08\" ci=\"22000008\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD064\" syi=\"32000064\"/>\r\n    <row c=\"ADC09\" ci=\"22000009\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD065\" syi=\"32000065\"/>\r\n    <row c=\"ADC09\" ci=\"22000009\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD066\" syi=\"32000066\"/>\r\n    <row c=\"ADC09\" ci=\"22000009\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD067\" syi=\"32000067\"/>\r\n    <row c=\"ADC09\" ci=\"22000009\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD068\" syi=\"32000068\"/>\r\n    <row c=\"ADC09\" ci=\"22000009\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD069\" syi=\"32000069\"/>\r\n    <row c=\"ADC09\" ci=\"22000009\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD070\" syi=\"32000070\"/>\r\n    <row c=\"ADC09\" ci=\"22000009\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD071\" syi=\"32000071\"/>\r\n    <row c=\"ADC09\" ci=\"22000009\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD072\" syi=\"32000072\"/>\r\n    <row c=\"ADC10\" ci=\"22000010\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD073\" syi=\"32000073\"/>\r\n    <row c=\"ADC10\" ci=\"22000010\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD074\" syi=\"32000074\"/>\r\n    <row c=\"ADC10\" ci=\"22000010\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD075\" syi=\"32000075\"/>\r\n    <row c=\"ADC10\" ci=\"22000010\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD076\" syi=\"32000076\"/>\r\n    <row c=\"ADC10\" ci=\"22000010\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD077\" syi=\"32000077\"/>\r\n    <row c=\"ADC10\" ci=\"22000010\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD078\" syi=\"32000078\"/>\r\n    <row c=\"ADC10\" ci=\"22000010\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD079\" syi=\"32000079\"/>\r\n    <row c=\"ADC10\" ci=\"22000010\" r=\"ADR02\" ri=\"12000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD080\" syi=\"32000080\"/>\r\n    <row c=\"ADC11\" ci=\"22000011\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD081\" syi=\"32000081\"/>\r\n    <row c=\"ADC11\" ci=\"22000011\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD082\" syi=\"32000082\"/>\r\n    <row c=\"ADC11\" ci=\"22000011\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD083\" syi=\"32000083\"/>\r\n    <row c=\"ADC11\" ci=\"22000011\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD084\" syi=\"32000084\"/>\r\n    <row c=\"ADC11\" ci=\"22000011\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD085\" syi=\"32000085\"/>\r\n    <row c=\"ADC11\" ci=\"22000011\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD086\" syi=\"32000086\"/>\r\n    <row c=\"ADC11\" ci=\"22000011\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD087\" syi=\"32000087\"/>\r\n    <row c=\"ADC11\" ci=\"22000011\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD088\" syi=\"32000088\"/>\r\n    <row c=\"ADC12\" ci=\"22000012\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD089\" syi=\"32000089\"/>\r\n    <row c=\"ADC12\" ci=\"22000012\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD090\" syi=\"32000090\"/>\r\n    <row c=\"ADC12\" ci=\"22000012\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD091\" syi=\"32000091\"/>\r\n    <row c=\"ADC12\" ci=\"22000012\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD092\" syi=\"32000092\"/>\r\n    <row c=\"ADC12\" ci=\"22000012\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD093\" syi=\"32000093\"/>\r\n    <row c=\"ADC12\" ci=\"22000012\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD094\" syi=\"32000094\"/>\r\n    <row c=\"ADC12\" ci=\"22000012\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD095\" syi=\"32000095\"/>\r\n    <row c=\"ADC12\" ci=\"22000012\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD096\" syi=\"32000096\"/>\r\n    <row c=\"ADC13\" ci=\"22000013\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD097\" syi=\"32000097\"/>\r\n    <row c=\"ADC13\" ci=\"22000013\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD098\" syi=\"32000098\"/>\r\n    <row c=\"ADC13\" ci=\"22000013\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD099\" syi=\"32000099\"/>\r\n    <row c=\"ADC13\" ci=\"22000013\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD100\" syi=\"32000100\"/>\r\n    <row c=\"ADC13\" ci=\"22000013\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD101\" syi=\"32000101\"/>\r\n    <row c=\"ADC13\" ci=\"22000013\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD102\" syi=\"32000102\"/>\r\n    <row c=\"ADC13\" ci=\"22000013\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD103\" syi=\"32000103\"/>\r\n    <row c=\"ADC13\" ci=\"22000013\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD104\" syi=\"32000104\"/>\r\n    <row c=\"ADC14\" ci=\"22000014\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD105\" syi=\"32000105\"/>\r\n    <row c=\"ADC14\" ci=\"22000014\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD106\" syi=\"32000106\"/>\r\n    <row c=\"ADC14\" ci=\"22000014\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD107\" syi=\"32000107\"/>\r\n    <row c=\"ADC14\" ci=\"22000014\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD108\" syi=\"32000108\"/>\r\n    <row c=\"ADC14\" ci=\"22000014\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD109\" syi=\"32000109\"/>\r\n    <row c=\"ADC14\" ci=\"22000014\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD110\" syi=\"32000110\"/>\r\n    <row c=\"ADC14\" ci=\"22000014\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD111\" syi=\"32000111\"/>\r\n    <row c=\"ADC14\" ci=\"22000014\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD112\" syi=\"32000112\"/>\r\n    <row c=\"ADC15\" ci=\"22000015\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD113\" syi=\"32000113\"/>\r\n    <row c=\"ADC15\" ci=\"22000015\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD114\" syi=\"32000114\"/>\r\n    <row c=\"ADC15\" ci=\"22000015\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD115\" syi=\"32000115\"/>\r\n    <row c=\"ADC15\" ci=\"22000015\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD116\" syi=\"32000116\"/>\r\n    <row c=\"ADC15\" ci=\"22000015\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD117\" syi=\"32000117\"/>\r\n    <row c=\"ADC15\" ci=\"22000015\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD118\" syi=\"32000118\"/>\r\n    <row c=\"ADC15\" ci=\"22000015\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD119\" syi=\"32000119\"/>\r\n    <row c=\"ADC15\" ci=\"22000015\" r=\"ADR03\" ri=\"12000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD120\" syi=\"32000120\"/>\r\n    <row c=\"ADC16\" ci=\"22000016\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD121\" syi=\"32000121\"/>\r\n    <row c=\"ADC16\" ci=\"22000016\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD122\" syi=\"32000122\"/>\r\n    <row c=\"ADC16\" ci=\"22000016\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD123\" syi=\"32000123\"/>\r\n    <row c=\"ADC16\" ci=\"22000016\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD124\" syi=\"32000124\"/>\r\n    <row c=\"ADC16\" ci=\"22000016\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD125\" syi=\"32000125\"/>\r\n    <row c=\"ADC16\" ci=\"22000016\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD126\" syi=\"32000126\"/>\r\n    <row c=\"ADC16\" ci=\"22000016\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD127\" syi=\"32000127\"/>\r\n    <row c=\"ADC16\" ci=\"22000016\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD128\" syi=\"32000128\"/>\r\n    <row c=\"ADC17\" ci=\"22000017\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD129\" syi=\"32000129\"/>\r\n    <row c=\"ADC17\" ci=\"22000017\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD130\" syi=\"32000130\"/>\r\n    <row c=\"ADC17\" ci=\"22000017\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD131\" syi=\"32000131\"/>\r\n    <row c=\"ADC17\" ci=\"22000017\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD132\" syi=\"32000132\"/>\r\n    <row c=\"ADC17\" ci=\"22000017\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD133\" syi=\"32000133\"/>\r\n    <row c=\"ADC17\" ci=\"22000017\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD134\" syi=\"32000134\"/>\r\n    <row c=\"ADC17\" ci=\"22000017\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD135\" syi=\"32000135\"/>\r\n    <row c=\"ADC17\" ci=\"22000017\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD136\" syi=\"32000136\"/>\r\n    <row c=\"ADC18\" ci=\"22000018\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD137\" syi=\"32000137\"/>\r\n    <row c=\"ADC18\" ci=\"22000018\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD138\" syi=\"32000138\"/>\r\n    <row c=\"ADC18\" ci=\"22000018\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD139\" syi=\"32000139\"/>\r\n    <row c=\"ADC18\" ci=\"22000018\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD140\" syi=\"32000140\"/>\r\n    <row c=\"ADC18\" ci=\"22000018\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD141\" syi=\"32000141\"/>\r\n    <row c=\"ADC18\" ci=\"22000018\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD142\" syi=\"32000142\"/>\r\n    <row c=\"ADC18\" ci=\"22000018\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD143\" syi=\"32000143\"/>\r\n    <row c=\"ADC18\" ci=\"22000018\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD144\" syi=\"32000144\"/>\r\n    <row c=\"ADC19\" ci=\"22000019\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD145\" syi=\"32000145\"/>\r\n    <row c=\"ADC19\" ci=\"22000019\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD146\" syi=\"32000146\"/>\r\n    <row c=\"ADC19\" ci=\"22000019\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD147\" syi=\"32000147\"/>\r\n    <row c=\"ADC19\" ci=\"22000019\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD148\" syi=\"32000148\"/>\r\n    <row c=\"ADC19\" ci=\"22000019\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD149\" syi=\"32000149\"/>\r\n    <row c=\"ADC19\" ci=\"22000019\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD150\" syi=\"32000150\"/>\r\n    <row c=\"ADC19\" ci=\"22000019\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD151\" syi=\"32000151\"/>\r\n    <row c=\"ADC19\" ci=\"22000019\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD152\" syi=\"32000152\"/>\r\n    <row c=\"ADC20\" ci=\"22000020\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD153\" syi=\"32000153\"/>\r\n    <row c=\"ADC20\" ci=\"22000020\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD154\" syi=\"32000154\"/>\r\n    <row c=\"ADC20\" ci=\"22000020\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD155\" syi=\"32000155\"/>\r\n    <row c=\"ADC20\" ci=\"22000020\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD156\" syi=\"32000156\"/>\r\n    <row c=\"ADC20\" ci=\"22000020\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD157\" syi=\"32000157\"/>\r\n    <row c=\"ADC20\" ci=\"22000020\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD158\" syi=\"32000158\"/>\r\n    <row c=\"ADC20\" ci=\"22000020\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD159\" syi=\"32000159\"/>\r\n    <row c=\"ADC20\" ci=\"22000020\" r=\"ADR04\" ri=\"12000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD160\" syi=\"32000160\"/>\r\n    <row c=\"ADC21\" ci=\"22000021\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD161\" syi=\"32000161\"/>\r\n    <row c=\"ADC21\" ci=\"22000021\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD162\" syi=\"32000162\"/>\r\n    <row c=\"ADC21\" ci=\"22000021\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD163\" syi=\"32000163\"/>\r\n    <row c=\"ADC21\" ci=\"22000021\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD164\" syi=\"32000164\"/>\r\n    <row c=\"ADC21\" ci=\"22000021\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD165\" syi=\"32000165\"/>\r\n    <row c=\"ADC21\" ci=\"22000021\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD166\" syi=\"32000166\"/>\r\n    <row c=\"ADC21\" ci=\"22000021\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD167\" syi=\"32000167\"/>\r\n    <row c=\"ADC21\" ci=\"22000021\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD168\" syi=\"32000168\"/>\r\n    <row c=\"ADC22\" ci=\"22000022\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD169\" syi=\"32000169\"/>\r\n    <row c=\"ADC22\" ci=\"22000022\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD170\" syi=\"32000170\"/>\r\n    <row c=\"ADC22\" ci=\"22000022\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD171\" syi=\"32000171\"/>\r\n    <row c=\"ADC22\" ci=\"22000022\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD172\" syi=\"32000172\"/>\r\n    <row c=\"ADC22\" ci=\"22000022\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD173\" syi=\"32000173\"/>\r\n    <row c=\"ADC22\" ci=\"22000022\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD174\" syi=\"32000174\"/>\r\n    <row c=\"ADC22\" ci=\"22000022\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD175\" syi=\"32000175\"/>\r\n    <row c=\"ADC22\" ci=\"22000022\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD176\" syi=\"32000176\"/>\r\n    <row c=\"ADC23\" ci=\"22000023\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD177\" syi=\"32000177\"/>\r\n    <row c=\"ADC23\" ci=\"22000023\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD178\" syi=\"32000178\"/>\r\n    <row c=\"ADC23\" ci=\"22000023\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD179\" syi=\"32000179\"/>\r\n    <row c=\"ADC23\" ci=\"22000023\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD180\" syi=\"32000180\"/>\r\n    <row c=\"ADC23\" ci=\"22000023\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD181\" syi=\"32000181\"/>\r\n    <row c=\"ADC23\" ci=\"22000023\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD182\" syi=\"32000182\"/>\r\n    <row c=\"ADC23\" ci=\"22000023\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD183\" syi=\"32000183\"/>\r\n    <row c=\"ADC23\" ci=\"22000023\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD184\" syi=\"32000184\"/>\r\n    <row c=\"ADC24\" ci=\"22000024\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD185\" syi=\"32000185\"/>\r\n    <row c=\"ADC24\" ci=\"22000024\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD186\" syi=\"32000186\"/>\r\n    <row c=\"ADC24\" ci=\"22000024\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD187\" syi=\"32000187\"/>\r\n    <row c=\"ADC24\" ci=\"22000024\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD188\" syi=\"32000188\"/>\r\n    <row c=\"ADC24\" ci=\"22000024\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD189\" syi=\"32000189\"/>\r\n    <row c=\"ADC24\" ci=\"22000024\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD190\" syi=\"32000190\"/>\r\n    <row c=\"ADC24\" ci=\"22000024\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD191\" syi=\"32000191\"/>\r\n    <row c=\"ADC24\" ci=\"22000024\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD192\" syi=\"32000192\"/>\r\n    <row c=\"ADC25\" ci=\"22000025\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD193\" syi=\"32000193\"/>\r\n    <row c=\"ADC25\" ci=\"22000025\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD194\" syi=\"32000194\"/>\r\n    <row c=\"ADC25\" ci=\"22000025\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD195\" syi=\"32000195\"/>\r\n    <row c=\"ADC25\" ci=\"22000025\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD196\" syi=\"32000196\"/>\r\n    <row c=\"ADC25\" ci=\"22000025\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD197\" syi=\"32000197\"/>\r\n    <row c=\"ADC25\" ci=\"22000025\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD198\" syi=\"32000198\"/>\r\n    <row c=\"ADC25\" ci=\"22000025\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD199\" syi=\"32000199\"/>\r\n    <row c=\"ADC25\" ci=\"22000025\" r=\"ADR05\" ri=\"12000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"AD200\" syi=\"32000200\"/>\r\n    <row c=\"VC-001\" ci=\"24000001\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-001\" syi=\"34000001\"/>\r\n    <row c=\"VC-001\" ci=\"24000001\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-002\" syi=\"34000002\"/>\r\n    <row c=\"VC-001\" ci=\"24000001\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-003\" syi=\"34000003\"/>\r\n    <row c=\"VC-001\" ci=\"24000001\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-004\" syi=\"34000004\"/>\r\n    <row c=\"VC-001\" ci=\"24000001\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-005\" syi=\"34000005\"/>\r\n    <row c=\"VC-001\" ci=\"24000001\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-006\" syi=\"34000006\"/>\r\n    <row c=\"VC-001\" ci=\"24000001\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-007\" syi=\"34000007\"/>\r\n    <row c=\"VC-001\" ci=\"24000001\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-008\" syi=\"34000008\"/>\r\n    <row c=\"VC-002\" ci=\"24000002\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-009\" syi=\"34000009\"/>\r\n    <row c=\"VC-002\" ci=\"24000002\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-010\" syi=\"34000010\"/>\r\n    <row c=\"VC-002\" ci=\"24000002\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-011\" syi=\"34000011\"/>\r\n    <row c=\"VC-002\" ci=\"24000002\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-012\" syi=\"34000012\"/>\r\n    <row c=\"VC-002\" ci=\"24000002\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-013\" syi=\"34000013\"/>\r\n    <row c=\"VC-002\" ci=\"24000002\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-014\" syi=\"34000014\"/>\r\n    <row c=\"VC-002\" ci=\"24000002\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-015\" syi=\"34000015\"/>\r\n    <row c=\"VC-002\" ci=\"24000002\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-016\" syi=\"34000016\"/>\r\n    <row c=\"VC-003\" ci=\"24000003\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-017\" syi=\"34000017\"/>\r\n    <row c=\"VC-003\" ci=\"24000003\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-018\" syi=\"34000018\"/>\r\n    <row c=\"VC-003\" ci=\"24000003\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-019\" syi=\"34000019\"/>\r\n    <row c=\"VC-003\" ci=\"24000003\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-020\" syi=\"34000020\"/>\r\n    <row c=\"VC-003\" ci=\"24000003\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-021\" syi=\"34000021\"/>\r\n    <row c=\"VC-003\" ci=\"24000003\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-022\" syi=\"34000022\"/>\r\n    <row c=\"VC-003\" ci=\"24000003\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-023\" syi=\"34000023\"/>\r\n    <row c=\"VC-003\" ci=\"24000003\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-024\" syi=\"34000024\"/>\r\n    <row c=\"VC-004\" ci=\"24000004\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-025\" syi=\"34000025\"/>\r\n    <row c=\"VC-004\" ci=\"24000004\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-026\" syi=\"34000026\"/>\r\n    <row c=\"VC-004\" ci=\"24000004\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-027\" syi=\"34000027\"/>\r\n    <row c=\"VC-004\" ci=\"24000004\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-028\" syi=\"34000028\"/>\r\n    <row c=\"VC-004\" ci=\"24000004\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-029\" syi=\"34000029\"/>\r\n    <row c=\"VC-004\" ci=\"24000004\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-030\" syi=\"34000030\"/>\r\n    <row c=\"VC-004\" ci=\"24000004\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-031\" syi=\"34000031\"/>\r\n    <row c=\"VC-004\" ci=\"24000004\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-032\" syi=\"34000032\"/>\r\n    <row c=\"VC-005\" ci=\"24000005\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-033\" syi=\"34000033\"/>\r\n    <row c=\"VC-005\" ci=\"24000005\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-034\" syi=\"34000034\"/>\r\n    <row c=\"VC-005\" ci=\"24000005\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-035\" syi=\"34000035\"/>\r\n    <row c=\"VC-005\" ci=\"24000005\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-036\" syi=\"34000036\"/>\r\n    <row c=\"VC-005\" ci=\"24000005\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-037\" syi=\"34000037\"/>\r\n    <row c=\"VC-005\" ci=\"24000005\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-038\" syi=\"34000038\"/>\r\n    <row c=\"VC-005\" ci=\"24000005\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-039\" syi=\"34000039\"/>\r\n    <row c=\"VC-005\" ci=\"24000005\" r=\"VR-01\" ri=\"14000001\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-040\" syi=\"34000040\"/>\r\n    <row c=\"VC-006\" ci=\"24000006\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-041\" syi=\"34000041\"/>\r\n    <row c=\"VC-006\" ci=\"24000006\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-042\" syi=\"34000042\"/>\r\n    <row c=\"VC-006\" ci=\"24000006\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-043\" syi=\"34000043\"/>\r\n    <row c=\"VC-006\" ci=\"24000006\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-044\" syi=\"34000044\"/>\r\n    <row c=\"VC-006\" ci=\"24000006\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-045\" syi=\"34000045\"/>\r\n    <row c=\"VC-006\" ci=\"24000006\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-046\" syi=\"34000046\"/>\r\n    <row c=\"VC-006\" ci=\"24000006\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-047\" syi=\"34000047\"/>\r\n    <row c=\"VC-006\" ci=\"24000006\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-048\" syi=\"34000048\"/>\r\n    <row c=\"VC-007\" ci=\"24000007\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-049\" syi=\"34000049\"/>\r\n    <row c=\"VC-007\" ci=\"24000007\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-050\" syi=\"34000050\"/>\r\n    <row c=\"VC-007\" ci=\"24000007\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-051\" syi=\"34000051\"/>\r\n    <row c=\"VC-007\" ci=\"24000007\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-052\" syi=\"34000052\"/>\r\n    <row c=\"VC-007\" ci=\"24000007\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-053\" syi=\"34000053\"/>\r\n    <row c=\"VC-007\" ci=\"24000007\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-054\" syi=\"34000054\"/>\r\n    <row c=\"VC-007\" ci=\"24000007\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-055\" syi=\"34000055\"/>\r\n    <row c=\"VC-007\" ci=\"24000007\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-056\" syi=\"34000056\"/>\r\n    <row c=\"VC-008\" ci=\"24000008\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-057\" syi=\"34000057\"/>\r\n    <row c=\"VC-008\" ci=\"24000008\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-058\" syi=\"34000058\"/>\r\n    <row c=\"VC-008\" ci=\"24000008\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-059\" syi=\"34000059\"/>\r\n    <row c=\"VC-008\" ci=\"24000008\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-060\" syi=\"34000060\"/>\r\n    <row c=\"VC-008\" ci=\"24000008\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-061\" syi=\"34000061\"/>\r\n    <row c=\"VC-008\" ci=\"24000008\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-062\" syi=\"34000062\"/>\r\n    <row c=\"VC-008\" ci=\"24000008\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-063\" syi=\"34000063\"/>\r\n    <row c=\"VC-008\" ci=\"24000008\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-064\" syi=\"34000064\"/>\r\n    <row c=\"VC-009\" ci=\"24000009\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-065\" syi=\"34000065\"/>\r\n    <row c=\"VC-009\" ci=\"24000009\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-066\" syi=\"34000066\"/>\r\n    <row c=\"VC-009\" ci=\"24000009\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-067\" syi=\"34000067\"/>\r\n    <row c=\"VC-009\" ci=\"24000009\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-068\" syi=\"34000068\"/>\r\n    <row c=\"VC-009\" ci=\"24000009\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-069\" syi=\"34000069\"/>\r\n    <row c=\"VC-009\" ci=\"24000009\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-070\" syi=\"34000070\"/>\r\n    <row c=\"VC-009\" ci=\"24000009\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-071\" syi=\"34000071\"/>\r\n    <row c=\"VC-009\" ci=\"24000009\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-072\" syi=\"34000072\"/>\r\n    <row c=\"VC-010\" ci=\"24000010\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-073\" syi=\"34000073\"/>\r\n    <row c=\"VC-010\" ci=\"24000010\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-074\" syi=\"34000074\"/>\r\n    <row c=\"VC-010\" ci=\"24000010\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-075\" syi=\"34000075\"/>\r\n    <row c=\"VC-010\" ci=\"24000010\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-076\" syi=\"34000076\"/>\r\n    <row c=\"VC-010\" ci=\"24000010\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-077\" syi=\"34000077\"/>\r\n    <row c=\"VC-010\" ci=\"24000010\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-078\" syi=\"34000078\"/>\r\n    <row c=\"VC-010\" ci=\"24000010\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-079\" syi=\"34000079\"/>\r\n    <row c=\"VC-010\" ci=\"24000010\" r=\"VR-02\" ri=\"14000002\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-080\" syi=\"34000080\"/>\r\n    <row c=\"VC-011\" ci=\"24000011\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-081\" syi=\"34000081\"/>\r\n    <row c=\"VC-011\" ci=\"24000011\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-082\" syi=\"34000082\"/>\r\n    <row c=\"VC-011\" ci=\"24000011\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-083\" syi=\"34000083\"/>\r\n    <row c=\"VC-011\" ci=\"24000011\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-084\" syi=\"34000084\"/>\r\n    <row c=\"VC-011\" ci=\"24000011\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-085\" syi=\"34000085\"/>\r\n    <row c=\"VC-011\" ci=\"24000011\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-086\" syi=\"34000086\"/>\r\n    <row c=\"VC-011\" ci=\"24000011\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-087\" syi=\"34000087\"/>\r\n    <row c=\"VC-011\" ci=\"24000011\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-088\" syi=\"34000088\"/>\r\n    <row c=\"VC-012\" ci=\"24000012\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-089\" syi=\"34000089\"/>\r\n    <row c=\"VC-012\" ci=\"24000012\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-090\" syi=\"34000090\"/>\r\n    <row c=\"VC-012\" ci=\"24000012\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-091\" syi=\"34000091\"/>\r\n    <row c=\"VC-012\" ci=\"24000012\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-092\" syi=\"34000092\"/>\r\n    <row c=\"VC-012\" ci=\"24000012\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-093\" syi=\"34000093\"/>\r\n    <row c=\"VC-012\" ci=\"24000012\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-094\" syi=\"34000094\"/>\r\n    <row c=\"VC-012\" ci=\"24000012\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-095\" syi=\"34000095\"/>\r\n    <row c=\"VC-012\" ci=\"24000012\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-096\" syi=\"34000096\"/>\r\n    <row c=\"VC-013\" ci=\"24000013\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-097\" syi=\"34000097\"/>\r\n    <row c=\"VC-013\" ci=\"24000013\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-098\" syi=\"34000098\"/>\r\n    <row c=\"VC-013\" ci=\"24000013\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-099\" syi=\"34000099\"/>\r\n    <row c=\"VC-013\" ci=\"24000013\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-100\" syi=\"34000100\"/>\r\n    <row c=\"VC-013\" ci=\"24000013\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-101\" syi=\"34000101\"/>\r\n    <row c=\"VC-013\" ci=\"24000013\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-102\" syi=\"34000102\"/>\r\n    <row c=\"VC-013\" ci=\"24000013\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-103\" syi=\"34000103\"/>\r\n    <row c=\"VC-013\" ci=\"24000013\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-104\" syi=\"34000104\"/>\r\n    <row c=\"VC-014\" ci=\"24000014\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-105\" syi=\"34000105\"/>\r\n    <row c=\"VC-014\" ci=\"24000014\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-106\" syi=\"34000106\"/>\r\n    <row c=\"VC-014\" ci=\"24000014\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-107\" syi=\"34000107\"/>\r\n    <row c=\"VC-014\" ci=\"24000014\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-108\" syi=\"34000108\"/>\r\n    <row c=\"VC-014\" ci=\"24000014\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-109\" syi=\"34000109\"/>\r\n    <row c=\"VC-014\" ci=\"24000014\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-110\" syi=\"34000110\"/>\r\n    <row c=\"VC-014\" ci=\"24000014\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-111\" syi=\"34000111\"/>\r\n    <row c=\"VC-014\" ci=\"24000014\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-112\" syi=\"34000112\"/>\r\n    <row c=\"VC-015\" ci=\"24000015\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-113\" syi=\"34000113\"/>\r\n    <row c=\"VC-015\" ci=\"24000015\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-114\" syi=\"34000114\"/>\r\n    <row c=\"VC-015\" ci=\"24000015\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-115\" syi=\"34000115\"/>\r\n    <row c=\"VC-015\" ci=\"24000015\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-116\" syi=\"34000116\"/>\r\n    <row c=\"VC-015\" ci=\"24000015\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-117\" syi=\"34000117\"/>\r\n    <row c=\"VC-015\" ci=\"24000015\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-118\" syi=\"34000118\"/>\r\n    <row c=\"VC-015\" ci=\"24000015\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-119\" syi=\"34000119\"/>\r\n    <row c=\"VC-015\" ci=\"24000015\" r=\"VR-03\" ri=\"14000003\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-120\" syi=\"34000120\"/>\r\n    <row c=\"VC-016\" ci=\"24000016\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-121\" syi=\"34000121\"/>\r\n    <row c=\"VC-016\" ci=\"24000016\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-122\" syi=\"34000122\"/>\r\n    <row c=\"VC-016\" ci=\"24000016\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-123\" syi=\"34000123\"/>\r\n    <row c=\"VC-016\" ci=\"24000016\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-124\" syi=\"34000124\"/>\r\n    <row c=\"VC-016\" ci=\"24000016\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-125\" syi=\"34000125\"/>\r\n    <row c=\"VC-016\" ci=\"24000016\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-126\" syi=\"34000126\"/>\r\n    <row c=\"VC-016\" ci=\"24000016\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-127\" syi=\"34000127\"/>\r\n    <row c=\"VC-016\" ci=\"24000016\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-128\" syi=\"34000128\"/>\r\n    <row c=\"VC-017\" ci=\"24000017\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-129\" syi=\"34000129\"/>\r\n    <row c=\"VC-017\" ci=\"24000017\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-130\" syi=\"34000130\"/>\r\n    <row c=\"VC-017\" ci=\"24000017\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-131\" syi=\"34000131\"/>\r\n    <row c=\"VC-017\" ci=\"24000017\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-132\" syi=\"34000132\"/>\r\n    <row c=\"VC-017\" ci=\"24000017\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-133\" syi=\"34000133\"/>\r\n    <row c=\"VC-017\" ci=\"24000017\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-134\" syi=\"34000134\"/>\r\n    <row c=\"VC-017\" ci=\"24000017\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-135\" syi=\"34000135\"/>\r\n    <row c=\"VC-017\" ci=\"24000017\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-136\" syi=\"34000136\"/>\r\n    <row c=\"VC-018\" ci=\"24000018\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-137\" syi=\"34000137\"/>\r\n    <row c=\"VC-018\" ci=\"24000018\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-138\" syi=\"34000138\"/>\r\n    <row c=\"VC-018\" ci=\"24000018\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-139\" syi=\"34000139\"/>\r\n    <row c=\"VC-018\" ci=\"24000018\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-140\" syi=\"34000140\"/>\r\n    <row c=\"VC-018\" ci=\"24000018\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-141\" syi=\"34000141\"/>\r\n    <row c=\"VC-018\" ci=\"24000018\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-142\" syi=\"34000142\"/>\r\n    <row c=\"VC-018\" ci=\"24000018\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-143\" syi=\"34000143\"/>\r\n    <row c=\"VC-018\" ci=\"24000018\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-144\" syi=\"34000144\"/>\r\n    <row c=\"VC-019\" ci=\"24000019\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-145\" syi=\"34000145\"/>\r\n    <row c=\"VC-019\" ci=\"24000019\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-146\" syi=\"34000146\"/>\r\n    <row c=\"VC-019\" ci=\"24000019\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-147\" syi=\"34000147\"/>\r\n    <row c=\"VC-019\" ci=\"24000019\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-148\" syi=\"34000148\"/>\r\n    <row c=\"VC-019\" ci=\"24000019\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-149\" syi=\"34000149\"/>\r\n    <row c=\"VC-019\" ci=\"24000019\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-150\" syi=\"34000150\"/>\r\n    <row c=\"VC-019\" ci=\"24000019\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-151\" syi=\"34000151\"/>\r\n    <row c=\"VC-019\" ci=\"24000019\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-152\" syi=\"34000152\"/>\r\n    <row c=\"VC-020\" ci=\"24000020\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-153\" syi=\"34000153\"/>\r\n    <row c=\"VC-020\" ci=\"24000020\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-154\" syi=\"34000154\"/>\r\n    <row c=\"VC-020\" ci=\"24000020\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-155\" syi=\"34000155\"/>\r\n    <row c=\"VC-020\" ci=\"24000020\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-156\" syi=\"34000156\"/>\r\n    <row c=\"VC-020\" ci=\"24000020\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-157\" syi=\"34000157\"/>\r\n    <row c=\"VC-020\" ci=\"24000020\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-158\" syi=\"34000158\"/>\r\n    <row c=\"VC-020\" ci=\"24000020\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-159\" syi=\"34000159\"/>\r\n    <row c=\"VC-020\" ci=\"24000020\" r=\"VR-04\" ri=\"14000004\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-160\" syi=\"34000160\"/>\r\n    <row c=\"VC-021\" ci=\"24000021\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-161\" syi=\"34000161\"/>\r\n    <row c=\"VC-021\" ci=\"24000021\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-162\" syi=\"34000162\"/>\r\n    <row c=\"VC-021\" ci=\"24000021\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-163\" syi=\"34000163\"/>\r\n    <row c=\"VC-021\" ci=\"24000021\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-164\" syi=\"34000164\"/>\r\n    <row c=\"VC-021\" ci=\"24000021\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-165\" syi=\"34000165\"/>\r\n    <row c=\"VC-021\" ci=\"24000021\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-166\" syi=\"34000166\"/>\r\n    <row c=\"VC-021\" ci=\"24000021\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-167\" syi=\"34000167\"/>\r\n    <row c=\"VC-021\" ci=\"24000021\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-168\" syi=\"34000168\"/>\r\n    <row c=\"VC-022\" ci=\"24000022\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-169\" syi=\"34000169\"/>\r\n    <row c=\"VC-022\" ci=\"24000022\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-170\" syi=\"34000170\"/>\r\n    <row c=\"VC-022\" ci=\"24000022\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-171\" syi=\"34000171\"/>\r\n    <row c=\"VC-022\" ci=\"24000022\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-172\" syi=\"34000172\"/>\r\n    <row c=\"VC-022\" ci=\"24000022\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-173\" syi=\"34000173\"/>\r\n    <row c=\"VC-022\" ci=\"24000022\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-174\" syi=\"34000174\"/>\r\n    <row c=\"VC-022\" ci=\"24000022\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-175\" syi=\"34000175\"/>\r\n    <row c=\"VC-022\" ci=\"24000022\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-176\" syi=\"34000176\"/>\r\n    <row c=\"VC-023\" ci=\"24000023\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-177\" syi=\"34000177\"/>\r\n    <row c=\"VC-023\" ci=\"24000023\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-178\" syi=\"34000178\"/>\r\n    <row c=\"VC-023\" ci=\"24000023\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-179\" syi=\"34000179\"/>\r\n    <row c=\"VC-023\" ci=\"24000023\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-180\" syi=\"34000180\"/>\r\n    <row c=\"VC-023\" ci=\"24000023\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-181\" syi=\"34000181\"/>\r\n    <row c=\"VC-023\" ci=\"24000023\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-182\" syi=\"34000182\"/>\r\n    <row c=\"VC-023\" ci=\"24000023\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-183\" syi=\"34000183\"/>\r\n    <row c=\"VC-023\" ci=\"24000023\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-184\" syi=\"34000184\"/>\r\n    <row c=\"VC-024\" ci=\"24000024\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-185\" syi=\"34000185\"/>\r\n    <row c=\"VC-024\" ci=\"24000024\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-186\" syi=\"34000186\"/>\r\n    <row c=\"VC-024\" ci=\"24000024\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-187\" syi=\"34000187\"/>\r\n    <row c=\"VC-024\" ci=\"24000024\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-188\" syi=\"34000188\"/>\r\n    <row c=\"VC-024\" ci=\"24000024\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-189\" syi=\"34000189\"/>\r\n    <row c=\"VC-024\" ci=\"24000024\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-190\" syi=\"34000190\"/>\r\n    <row c=\"VC-024\" ci=\"24000024\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-191\" syi=\"34000191\"/>\r\n    <row c=\"VC-024\" ci=\"24000024\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-192\" syi=\"34000192\"/>\r\n    <row c=\"VC-025\" ci=\"24000025\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-193\" syi=\"34000193\"/>\r\n    <row c=\"VC-025\" ci=\"24000025\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-194\" syi=\"34000194\"/>\r\n    <row c=\"VC-025\" ci=\"24000025\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-195\" syi=\"34000195\"/>\r\n    <row c=\"VC-025\" ci=\"24000025\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-196\" syi=\"34000196\"/>\r\n    <row c=\"VC-025\" ci=\"24000025\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-197\" syi=\"34000197\"/>\r\n    <row c=\"VC-025\" ci=\"24000025\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-198\" syi=\"34000198\"/>\r\n    <row c=\"VC-025\" ci=\"24000025\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-199\" syi=\"34000199\"/>\r\n    <row c=\"VC-025\" ci=\"24000025\" r=\"VR-05\" ri=\"14000005\" s=\"\" se=\"0.0\" si=\"0\" sy=\"V-200\" syi=\"34000200\"/>\r\n    <row c=\"Global PLEX Market Constellation\" ci=\"26000001\" r=\"Global PLEX Market Region\" ri=\"19000001\" s=\"\" se=\"1.0\" si=\"0\" sy=\"Global PLEX Market System\" syi=\"36000001\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Muvolailen X - Moon 3 - CBD Corporation Storage\" se=\"0.7\" si=\"60000004\" sy=\"Muvolailen\" syi=\"30002780\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Ono V - Moon 9 - CBD Corporation Storage\" se=\"0.8\" si=\"60000007\" sy=\"Ono\" syi=\"30002779\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Annaro I - CBD Corporation Storage\" se=\"0.8\" si=\"60000010\" sy=\"Annaro\" syi=\"30002776\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Ono V - Moon 2 - CBD Corporation Storage\" se=\"0.8\" si=\"60000013\" sy=\"Ono\" syi=\"30002779\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Tasabeshi VIII - Moon 13 - CBD Corporation Storage\" se=\"0.8\" si=\"60000016\" sy=\"Tasabeshi\" syi=\"30002778\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Tasabeshi VI - Moon 1 - CBD Corporation Storage\" se=\"0.8\" si=\"60000019\" sy=\"Tasabeshi\" syi=\"30002778\"/>\r\n    <row c=\"Spaen\" ci=\"20000388\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Ney X - Moon 15 - CBD Corporation Storage\" se=\"0.5\" si=\"60000022\" sy=\"Ney\" syi=\"30002650\"/>\r\n    <row c=\"Spaen\" ci=\"20000388\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Ardene VIII - Moon 5 - CBD Corporation Storage\" se=\"0.6\" si=\"60000025\" sy=\"Ardene\" syi=\"30002648\"/>\r\n    <row c=\"Spaen\" ci=\"20000388\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Schoorasana VI - Moon 1 - CBD Corporation Storage\" se=\"0.4\" si=\"60000028\" sy=\"Schoorasana\" syi=\"30002654\"/>\r\n    <row c=\"Spaen\" ci=\"20000388\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Schoorasana VI - Moon 6 - CBD Corporation Storage\" se=\"0.4\" si=\"60000031\" sy=\"Schoorasana\" syi=\"30002654\"/>\r\n    <row c=\"Spaen\" ci=\"20000388\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Ardene VI - Moon 12 - CBD Corporation Storage\" se=\"0.6\" si=\"60000034\" sy=\"Ardene\" syi=\"30002648\"/>\r\n    <row c=\"Spaen\" ci=\"20000388\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Ney X - Moon 12 - CBD Corporation Storage\" se=\"0.5\" si=\"60000037\" sy=\"Ney\" syi=\"30002650\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Eiluvodi VI - Moon 14 - CBD Corporation Storage\" se=\"0.8\" si=\"60000040\" sy=\"Eiluvodi\" syi=\"30003393\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Eiluvodi VIII - Moon 2 - CBD Corporation Storage\" se=\"0.8\" si=\"60000043\" sy=\"Eiluvodi\" syi=\"30003393\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Vorsk IV - Moon 1 - CBD Corporation Storage\" se=\"0.6\" si=\"60000046\" sy=\"Vorsk\" syi=\"30003399\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Bongveber IX - Moon 10 - CBD Corporation Storage\" se=\"0.9\" si=\"60000049\" sy=\"Bongveber\" syi=\"30003397\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Roleinn X - Moon 13 - CBD Corporation Storage\" se=\"0.9\" si=\"60000052\" sy=\"Roleinn\" syi=\"30003395\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Freatlidur IX - Moon 15 - CBD Corporation Storage\" se=\"0.8\" si=\"60000055\" sy=\"Freatlidur\" syi=\"30003394\"/>\r\n    <row c=\"Ichida\" ci=\"20000450\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Hatori X - Moon 12 - CBD Corporation Storage\" se=\"0.6\" si=\"60000058\" sy=\"Hatori\" syi=\"30003082\"/>\r\n    <row c=\"Ichida\" ci=\"20000450\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Malpara II - CBD Corporation Storage\" se=\"0.5\" si=\"60000061\" sy=\"Malpara\" syi=\"30003084\"/>\r\n    <row c=\"Ichida\" ci=\"20000450\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Hatori X - Moon 10 - CBD Corporation Storage\" se=\"0.6\" si=\"60000064\" sy=\"Hatori\" syi=\"30003082\"/>\r\n    <row c=\"Ichida\" ci=\"20000450\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Ronne I - Moon 1 - CBD Corporation Storage\" se=\"0.7\" si=\"60000067\" sy=\"Ronne\" syi=\"30003081\"/>\r\n    <row c=\"Ichida\" ci=\"20000450\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Hatori IX - Moon 8 - CBD Corporation Storage\" se=\"0.6\" si=\"60000070\" sy=\"Hatori\" syi=\"30003082\"/>\r\n    <row c=\"Ichida\" ci=\"20000450\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Junsen V - Moon 20 - CBD Corporation Storage\" se=\"0.8\" si=\"60000073\" sy=\"Junsen\" syi=\"30003083\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Klingt VII - Moon 2 - CBD Corporation Storage\" se=\"0.3\" si=\"60000076\" sy=\"Klingt\" syi=\"30002414\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Weld IV - Moon 14 - CBD Corporation Storage\" se=\"0.3\" si=\"60000079\" sy=\"Weld\" syi=\"30002415\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Klingt IV - Moon 1 - CBD Corporation Storage\" se=\"0.3\" si=\"60000082\" sy=\"Klingt\" syi=\"30002414\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Egbinger XI - Moon 3 - CBD Corporation Storage\" se=\"0.1\" si=\"60000085\" sy=\"Egbinger\" syi=\"30002420\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Klingt V - CBD Corporation Storage\" se=\"0.3\" si=\"60000088\" sy=\"Klingt\" syi=\"30002414\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Klingt IX - Moon 3 - CBD Corporation Storage\" se=\"0.3\" si=\"60000091\" sy=\"Klingt\" syi=\"30002414\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Geffur VIII - Moon 10 - CBD Corporation Storage\" se=\"0.7\" si=\"60000094\" sy=\"Geffur\" syi=\"30003429\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Lumegen V - Moon 2 - CBD Corporation Storage\" se=\"0.6\" si=\"60000097\" sy=\"Lumegen\" syi=\"30003432\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Oppold IX - Moon 6 - CBD Corporation Storage\" se=\"0.7\" si=\"60000100\" sy=\"Oppold\" syi=\"30003430\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Lumegen I - CBD Corporation Storage\" se=\"0.6\" si=\"60000103\" sy=\"Lumegen\" syi=\"30003432\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Oppold IV - Moon 1 - CBD Corporation Storage\" se=\"0.7\" si=\"60000106\" sy=\"Oppold\" syi=\"30003430\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Geffur VII - Moon 3 - CBD Corporation Storage\" se=\"0.7\" si=\"60000109\" sy=\"Geffur\" syi=\"30003429\"/>\r\n    <row c=\"Peccanouette\" ci=\"20000732\" r=\"Essence\" ri=\"10000064\" s=\"Arnon VIII - Moon 2 - CBD Corporation Storage\" se=\"0.8\" si=\"60000112\" sy=\"Arnon\" syi=\"30005001\"/>\r\n    <row c=\"Peccanouette\" ci=\"20000732\" r=\"Essence\" ri=\"10000064\" s=\"Adirain V - Moon 4 - CBD Corporation Storage\" se=\"0.4\" si=\"60000115\" sy=\"Adirain\" syi=\"30005003\"/>\r\n    <row c=\"Peccanouette\" ci=\"20000732\" r=\"Essence\" ri=\"10000064\" s=\"Attyn V - Moon 2 - CBD Corporation Storage\" se=\"0.7\" si=\"60000118\" sy=\"Attyn\" syi=\"30005004\"/>\r\n    <row c=\"Peccanouette\" ci=\"20000732\" r=\"Essence\" ri=\"10000064\" s=\"Lisbaetanne I - CBD Corporation Storage\" se=\"0.4\" si=\"60000121\" sy=\"Lisbaetanne\" syi=\"30005007\"/>\r\n    <row c=\"Peccanouette\" ci=\"20000732\" r=\"Essence\" ri=\"10000064\" s=\"Arnon XII - CBD Corporation Storage\" se=\"0.8\" si=\"60000124\" sy=\"Arnon\" syi=\"30005001\"/>\r\n    <row c=\"Peccanouette\" ci=\"20000732\" r=\"Essence\" ri=\"10000064\" s=\"Arnon X - Moon 8 - CBD Corporation Storage\" se=\"0.8\" si=\"60000127\" sy=\"Arnon\" syi=\"30005001\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"Chibi VI - Moon 13 - CBD Corporation Storage\" se=\"0.5\" si=\"60000130\" sy=\"Chibi\" syi=\"30004250\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"Pahineh VII - Moon 9 - CBD Corporation Storage\" se=\"0.8\" si=\"60000133\" sy=\"Pahineh\" syi=\"30004253\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"Avada II - CBD Corporation Storage\" se=\"0.7\" si=\"60000136\" sy=\"Avada\" syi=\"30004249\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"Haimeh IX - Moon 4 - CBD Corporation Storage\" se=\"0.5\" si=\"60000139\" sy=\"Haimeh\" syi=\"30004248\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"Chibi VIII - Moon 21 - CBD Corporation Storage\" se=\"0.5\" si=\"60000142\" sy=\"Chibi\" syi=\"30004250\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"Haimeh II - CBD Corporation Storage\" se=\"0.5\" si=\"60000145\" sy=\"Haimeh\" syi=\"30004248\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"Dammalin VI - CBD Corporation Storage\" se=\"0.5\" si=\"60000148\" sy=\"Dammalin\" syi=\"30002513\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"Gulmorogod VI - Moon 4 - CBD Corporation Storage\" se=\"0.4\" si=\"60000151\" sy=\"Gulmorogod\" syi=\"30002517\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"Olfeim V - Moon 3 - CBD Corporation Storage\" se=\"0.4\" si=\"60000154\" sy=\"Olfeim\" syi=\"30002515\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"Gulmorogod VIII - Moon 25 - CBD Corporation Storage\" se=\"0.4\" si=\"60000157\" sy=\"Gulmorogod\" syi=\"30002517\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"Alakgur VIII - Moon 2 - CBD Corporation Storage\" se=\"0.6\" si=\"60000160\" sy=\"Alakgur\" syi=\"30002512\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"Alakgur IX - Moon 9 - CBD Corporation Storage\" se=\"0.6\" si=\"60000163\" sy=\"Alakgur\" syi=\"30002512\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Keba II - CBD Corporation Storage\" se=\"0.5\" si=\"60000166\" sy=\"Keba\" syi=\"30004295\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Pserz VIII - Moon 3 - CBD Corporation Storage\" se=\"0.4\" si=\"60000169\" sy=\"Pserz\" syi=\"30004293\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Soza XII - Moon 14 - CBD Corporation Storage\" se=\"0.3\" si=\"60000172\" sy=\"Soza\" syi=\"30004292\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Pserz XII - Moon 4 - CBD Corporation Storage\" se=\"0.4\" si=\"60000175\" sy=\"Pserz\" syi=\"30004293\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Vaini III - CBD Corporation Storage\" se=\"0.2\" si=\"60000178\" sy=\"Vaini\" syi=\"30004289\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Keba IX - Moon 1 - CBD Corporation Storage\" se=\"0.5\" si=\"60000181\" sy=\"Keba\" syi=\"30004295\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Shesha III - CBD Corporation Storage\" se=\"0.9\" si=\"60000184\" sy=\"Shesha\" syi=\"30001673\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hilaban VI - Moon 1 - CBD Corporation Storage\" se=\"0.9\" si=\"60000187\" sy=\"Hilaban\" syi=\"30001674\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hilaban IV - Moon 5 - CBD Corporation Storage\" se=\"0.9\" si=\"60000190\" sy=\"Hilaban\" syi=\"30001674\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hilaban III - Moon 3 - CBD Corporation Storage\" se=\"0.9\" si=\"60000193\" sy=\"Hilaban\" syi=\"30001674\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Pimebeka VIII - Moon 9 - CBD Corporation Storage\" se=\"0.7\" si=\"60000196\" sy=\"Pimebeka\" syi=\"30001669\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hilaban VIII - Moon 1 - CBD Corporation Storage\" se=\"0.9\" si=\"60000199\" sy=\"Hilaban\" syi=\"30001674\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Khabara VII - Moon 15 - CBD Corporation Storage\" se=\"0.3\" si=\"60000202\" sy=\"Khabara\" syi=\"30005032\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nebian II - CBD Corporation Storage\" se=\"0.4\" si=\"60000205\" sy=\"Nebian\" syi=\"30005031\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Ami V - Moon 1 - CBD Corporation Storage\" se=\"0.4\" si=\"60000208\" sy=\"Ami\" syi=\"30005035\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Ami VI - CBD Corporation Storage\" se=\"0.4\" si=\"60000211\" sy=\"Ami\" syi=\"30005035\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Fensi VI - Moon 10 - CBD Corporation Storage\" se=\"0.4\" si=\"60000214\" sy=\"Fensi\" syi=\"30005030\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Ami VII - Moon 1 - CBD Corporation Storage\" se=\"0.4\" si=\"60000217\" sy=\"Ami\" syi=\"30005035\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Sinid VI - CBD Corporation Storage\" se=\"0.7\" si=\"60000220\" sy=\"Sinid\" syi=\"30001729\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Zith IX - Moon 2 - CBD Corporation Storage\" se=\"0.9\" si=\"60000223\" sy=\"Zith\" syi=\"30001732\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Ilas V - Moon 1 - CBD Corporation Storage\" se=\"0.8\" si=\"60000226\" sy=\"Ilas\" syi=\"30001731\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Tew IX - Moon 9 - CBD Corporation Storage\" se=\"0.9\" si=\"60000229\" sy=\"Tew\" syi=\"30001733\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Sinid VI - Moon 2 - CBD Corporation Storage\" se=\"0.7\" si=\"60000232\" sy=\"Sinid\" syi=\"30001729\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Ilas VII - Moon 10 - CBD Corporation Storage\" se=\"0.8\" si=\"60000235\" sy=\"Ilas\" syi=\"30001731\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Inis-Ilix V - CBD Corporation Storage\" se=\"0.9\" si=\"60000238\" sy=\"Inis-Ilix\" syi=\"30004102\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Sonama VI - Moon 12 - CBD Corporation Storage\" se=\"0.8\" si=\"60000241\" sy=\"Sonama\" syi=\"30004099\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Inis-Ilix IV - Moon 1 - CBD Corporation Storage\" se=\"0.9\" si=\"60000244\" sy=\"Inis-Ilix\" syi=\"30004102\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Sonama VII - Moon 5 - CBD Corporation Storage\" se=\"0.8\" si=\"60000247\" sy=\"Sonama\" syi=\"30004099\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Kothe X - Moon 6 - CBD Corporation Storage\" se=\"0.6\" si=\"60000250\" sy=\"Kothe\" syi=\"30004103\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Suner VII - Moon 16 - CBD Corporation Storage\" se=\"0.9\" si=\"60000253\" sy=\"Suner\" syi=\"30004101\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Elonaya X - Moon 22 - CBD Corporation Storage\" se=\"0.7\" si=\"60000256\" sy=\"Elonaya\" syi=\"30001399\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nonni VI - CBD Corporation Storage\" se=\"0.5\" si=\"60000259\" sy=\"Nonni\" syi=\"30001401\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nonni IV - CBD Corporation Storage\" se=\"0.5\" si=\"60000262\" sy=\"Nonni\" syi=\"30001401\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Piak II - Moon 3 - CBD Corporation Storage\" se=\"0.7\" si=\"60000265\" sy=\"Piak\" syi=\"30001403\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nonni III - CBD Corporation Storage\" se=\"0.5\" si=\"60000268\" sy=\"Nonni\" syi=\"30001401\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Elonaya X - Moon 11 - CBD Corporation Storage\" se=\"0.7\" si=\"60000271\" sy=\"Elonaya\" syi=\"30001399\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Gekutami V - Moon 1 - Prompt Delivery Storage\" se=\"0.7\" si=\"60000274\" sy=\"Gekutami\" syi=\"30000149\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Jakanerva III - Moon 15 - Prompt Delivery Storage\" se=\"0.7\" si=\"60000277\" sy=\"Jakanerva\" syi=\"30000148\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Gekutami VII - Moon 3 - Prompt Delivery Storage\" se=\"0.7\" si=\"60000280\" sy=\"Gekutami\" syi=\"30000149\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"Mitsolen IV - Moon 9 - Prompt Delivery Storage\" se=\"0.6\" si=\"60000283\" sy=\"Mitsolen\" syi=\"30000120\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"Jatate III - Moon 10 - Prompt Delivery Storage\" se=\"0.6\" si=\"60000286\" sy=\"Jatate\" syi=\"30000121\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"Jatate IV - Moon 17 - Prompt Delivery Storage\" se=\"0.6\" si=\"60000289\" sy=\"Jatate\" syi=\"30000121\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Geras IX - Moon 7 - Prompt Delivery Storage\" se=\"0.7\" si=\"60000292\" sy=\"Geras\" syi=\"30000126\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Shihuken VII - Moon 10 - Prompt Delivery Storage\" se=\"0.9\" si=\"60000295\" sy=\"Shihuken\" syi=\"30000130\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Unpas VIII - Moon 11 - Prompt Delivery Storage\" se=\"0.9\" si=\"60000298\" sy=\"Unpas\" syi=\"30000129\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Hentogaira III - Moon 6 - Prompt Delivery Storage\" se=\"0.6\" si=\"60000301\" sy=\"Hentogaira\" syi=\"30000188\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Hentogaira IV - Prompt Delivery Storage\" se=\"0.6\" si=\"60000304\" sy=\"Hentogaira\" syi=\"30000188\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Kiainti IX - Moon 8 - Prompt Delivery Storage\" se=\"0.5\" si=\"60000307\" sy=\"Kiainti\" syi=\"30000189\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Elonaya X - Moon 21 - Ytiri Storage\" se=\"0.7\" si=\"60000310\" sy=\"Elonaya\" syi=\"30001399\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Piak IV - Moon 22 - Ytiri Storage\" se=\"0.7\" si=\"60000313\" sy=\"Piak\" syi=\"30001403\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Piak III - Moon 19 - Ytiri Storage\" se=\"0.7\" si=\"60000316\" sy=\"Piak\" syi=\"30001403\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Aunenen VII - Moon 1 - Ytiri Storage\" se=\"0.4\" si=\"60000319\" sy=\"Aunenen\" syi=\"30001398\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"Auviken V - Moon 6 - Ytiri Storage\" se=\"0.8\" si=\"60000322\" sy=\"Auviken\" syi=\"30002744\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"Oijamon III - Moon 12 - Ytiri Storage\" se=\"0.8\" si=\"60000325\" sy=\"Oijamon\" syi=\"30002746\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"Jeras VII - Moon 15 - Ytiri Storage\" se=\"0.6\" si=\"60000328\" sy=\"Jeras\" syi=\"30002748\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"Jeras VII - Moon 1 - Ytiri Storage\" se=\"0.6\" si=\"60000331\" sy=\"Jeras\" syi=\"30002748\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Saatuban IX - Moon 1 - Ytiri Storage\" se=\"0.5\" si=\"60000334\" sy=\"Saatuban\" syi=\"30001386\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isikano VIII - Moon 7 - Ytiri Storage\" se=\"0.7\" si=\"60000337\" sy=\"Isikano\" syi=\"30001387\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Piekura VII - Moon 1 - Ytiri Storage\" se=\"0.5\" si=\"60000340\" sy=\"Piekura\" syi=\"30001391\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isikano VII - Moon 5 - Ytiri Storage\" se=\"0.7\" si=\"60000343\" sy=\"Isikano\" syi=\"30001387\"/>\r\n    <row c=\"Haurala\" ci=\"20000200\" r=\"Lonetrek\" ri=\"10000016\" s=\"Ouranienen IV - Ytiri Storage\" se=\"0.7\" si=\"60000346\" sy=\"Ouranienen\" syi=\"30001370\"/>\r\n    <row c=\"Haurala\" ci=\"20000200\" r=\"Lonetrek\" ri=\"10000016\" s=\"Raussinen X - Moon 3 - Ytiri Storage\" se=\"0.5\" si=\"60000349\" sy=\"Raussinen\" syi=\"30001373\"/>\r\n    <row c=\"Haurala\" ci=\"20000200\" r=\"Lonetrek\" ri=\"10000016\" s=\"Uemisaisen VIII - Moon 10 - Ytiri Storage\" se=\"0.6\" si=\"60000352\" sy=\"Uemisaisen\" syi=\"30001368\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"Kino VII - Moon 13 - Perun Clade Porevitium Vault\" se=\"0.0\" si=\"60000355\" sy=\"Kino\" syi=\"30001372\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Perimeter VI - Ytiri Storage\" se=\"1.0\" si=\"60000358\" sy=\"Perimeter\" syi=\"30000144\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Jita IV - Moon 6 - Ytiri Storage\" se=\"0.9\" si=\"60000361\" sy=\"Jita\" syi=\"30000142\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Jita V - Moon 14 - Ytiri Storage\" se=\"0.9\" si=\"60000364\" sy=\"Jita\" syi=\"30000142\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Urlen VII - Moon 8 - Ytiri Storage\" se=\"1.0\" si=\"60000367\" sy=\"Urlen\" syi=\"30000139\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tunttaras IX - Moon 11 - Ytiri Storage\" se=\"0.9\" si=\"60000370\" sy=\"Tunttaras\" syi=\"30001379\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Iidoken VI - Moon 8 - Ytiri Storage\" se=\"0.8\" si=\"60000373\" sy=\"Iidoken\" syi=\"30001374\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nourvukaiken VII - Moon 18 - Ytiri Storage\" se=\"0.8\" si=\"60000376\" sy=\"Nourvukaiken\" syi=\"30001376\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tsuguwa IV - Moon 15 - Ytiri Storage\" se=\"0.8\" si=\"60000379\" sy=\"Tsuguwa\" syi=\"30001375\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"Otanuomi IV - Moon 5 - Perun Clade Bioadaptation Chambers\" se=\"0.0\" si=\"60000382\" sy=\"Otanuomi\" syi=\"30000192\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Vouskiaho IV - Moon 1 - Ytiri Storage\" se=\"0.5\" si=\"60000385\" sy=\"Vouskiaho\" syi=\"30000193\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Vouskiaho VI - Moon 14 - Ytiri Storage\" se=\"0.5\" si=\"60000388\" sy=\"Vouskiaho\" syi=\"30000193\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"Otanuomi VI - Moon 9 - The Convocation of Triglav Proving Complex\" se=\"0.0\" si=\"60000391\" sy=\"Otanuomi\" syi=\"30000192\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Ikuchi VI - Moon 15 - Ytiri Storage\" se=\"1.0\" si=\"60000394\" sy=\"Ikuchi\" syi=\"30000138\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Ohmahailen IV - Moon 2 - Ytiri Storage\" se=\"0.7\" si=\"60000397\" sy=\"Ohmahailen\" syi=\"30000136\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Hirtamon VI - Moon 6 - Ytiri Storage\" se=\"1.0\" si=\"60000400\" sy=\"Hirtamon\" syi=\"30000133\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Ikuchi VI - Moon 6 - Ytiri Storage\" se=\"1.0\" si=\"60000403\" sy=\"Ikuchi\" syi=\"30000138\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Iivinen X - Moon 2 - Ytiri Storage\" se=\"0.7\" si=\"60000406\" sy=\"Iivinen\" syi=\"30002766\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Hatakani VIII - Moon 17 - Ytiri Storage\" se=\"0.9\" si=\"60000409\" sy=\"Hatakani\" syi=\"30002764\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Hatakani VIII - Moon 11 - Ytiri Storage\" se=\"0.9\" si=\"60000412\" sy=\"Hatakani\" syi=\"30002764\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Iivinen VIII - Moon 8 - Ytiri Storage\" se=\"0.7\" si=\"60000415\" sy=\"Iivinen\" syi=\"30002766\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Oichiya VII - Moon 6 - Ytiri Storage\" se=\"0.8\" si=\"60000418\" sy=\"Oichiya\" syi=\"30002818\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Saila VII - Moon 15 - Ytiri Storage\" se=\"0.9\" si=\"60000421\" sy=\"Saila\" syi=\"30002816\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Aramachi II - Moon 2 - Ytiri Storage\" se=\"0.5\" si=\"60000424\" sy=\"Aramachi\" syi=\"30002817\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Isenairos VII - Moon 4 - Ytiri Storage\" se=\"0.8\" si=\"60000427\" sy=\"Isenairos\" syi=\"30002815\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Suroken VII - Moon 2 - Hyasyoda Corporation Mineral Reserve\" se=\"0.7\" si=\"60000430\" sy=\"Suroken\" syi=\"30002801\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Kusomonmon VI - Moon 4 - Hyasyoda Corporation Mining Outpost\" se=\"0.8\" si=\"60000433\" sy=\"Kusomonmon\" syi=\"30002802\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Kusomonmon IV - Moon 4 - Hyasyoda Corporation Mining Outpost\" se=\"0.8\" si=\"60000436\" sy=\"Kusomonmon\" syi=\"30002802\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Isikesu IV - Moon 14 - Hyasyoda Corporation Mining Outpost\" se=\"0.7\" si=\"60000439\" sy=\"Isikesu\" syi=\"30002804\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Isikesu IV - Moon 7 - Hyasyoda Corporation Mineral Reserve\" se=\"0.7\" si=\"60000442\" sy=\"Isikesu\" syi=\"30002804\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Kusomonmon VI - Moon 24 - Hyasyoda Corporation Mining Outpost\" se=\"0.8\" si=\"60000445\" sy=\"Kusomonmon\" syi=\"30002802\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Urlen VII - Moon 6 - Hyasyoda Corporation Refinery\" se=\"1.0\" si=\"60000448\" sy=\"Urlen\" syi=\"30000139\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Jita IV - Moon 6 - Hyasyoda Corporation Refinery\" se=\"0.9\" si=\"60000451\" sy=\"Jita\" syi=\"30000142\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Niyabainen VIII - Moon 16 - Hyasyoda Corporation Mineral Reserve\" se=\"1.0\" si=\"60000454\" sy=\"Niyabainen\" syi=\"30000143\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Niyabainen IX - Moon 21 - Hyasyoda Corporation Mining Outpost\" se=\"1.0\" si=\"60000457\" sy=\"Niyabainen\" syi=\"30000143\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Niyabainen IX - Moon 8 - Hyasyoda Corporation Mineral Reserve\" se=\"1.0\" si=\"60000460\" sy=\"Niyabainen\" syi=\"30000143\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Jita VI - Hyasyoda Corporation Refinery\" se=\"0.9\" si=\"60000463\" sy=\"Jita\" syi=\"30000142\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Umokka X - Moon 21 - Hyasyoda Corporation Mining Outpost\" se=\"0.6\" si=\"60000466\" sy=\"Umokka\" syi=\"30001409\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Umokka VI - Moon 2 - Hyasyoda Corporation Mining Outpost\" se=\"0.6\" si=\"60000469\" sy=\"Umokka\" syi=\"30001409\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Ruvas VI - Moon 10 - Hyasyoda Corporation Refinery\" se=\"0.8\" si=\"60000472\" sy=\"Ruvas\" syi=\"30001408\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Airkio IX - Moon 14 - Hyasyoda Corporation Mineral Reserve\" se=\"0.9\" si=\"60000475\" sy=\"Airkio\" syi=\"30001404\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Umokka VII - Moon 9 - Hyasyoda Corporation Mining Outpost\" se=\"0.6\" si=\"60000478\" sy=\"Umokka\" syi=\"30001409\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Airkio IX - Moon 1 - Hyasyoda Corporation Mineral Reserve\" se=\"0.9\" si=\"60000481\" sy=\"Airkio\" syi=\"30001404\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Ohkunen V - Moon 19 - Hyasyoda Corporation Mining Outpost\" se=\"0.4\" si=\"60000484\" sy=\"Ohkunen\" syi=\"30000204\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"Wirashoda VII - Moon 5 - Veles Clade Mutaplasmid Farm\" se=\"0.0\" si=\"60000487\" sy=\"Wirashoda\" syi=\"30000206\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"Wirashoda V - Veles Clade Extractive Terminus\" se=\"0.0\" si=\"60000490\" sy=\"Wirashoda\" syi=\"30000206\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Eruka V - Moon 5 - Hyasyoda Corporation Mining Outpost\" se=\"0.4\" si=\"60000493\" sy=\"Eruka\" syi=\"30000203\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Uchoshi XI - Moon 12 - Hyasyoda Corporation Mineral Reserve\" se=\"0.5\" si=\"60000496\" sy=\"Uchoshi\" syi=\"30000201\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Eruka VIII - Moon 18 - Hyasyoda Corporation Mining Outpost\" se=\"0.4\" si=\"60000499\" sy=\"Eruka\" syi=\"30000203\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Abagawa IV - Moon 2 - Hyasyoda Corporation Mineral Reserve\" se=\"0.6\" si=\"60000502\" sy=\"Abagawa\" syi=\"30000147\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Jakanerva IV - Moon 4 - Hyasyoda Corporation Refinery\" se=\"0.7\" si=\"60000505\" sy=\"Jakanerva\" syi=\"30000148\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Gekutami III - Hyasyoda Corporation Refinery\" se=\"0.7\" si=\"60000508\" sy=\"Gekutami\" syi=\"30000149\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Gekutami V - Hyasyoda Corporation Mineral Reserve\" se=\"0.7\" si=\"60000511\" sy=\"Gekutami\" syi=\"30000149\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Hampinen V - Moon 1 - Hyasyoda Corporation Mineral Reserve\" se=\"0.5\" si=\"60000514\" sy=\"Hampinen\" syi=\"30000152\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Jakanerva II - Moon 13 - Hyasyoda Corporation Refinery\" se=\"0.7\" si=\"60000517\" sy=\"Jakanerva\" syi=\"30000148\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Uminas IV - Moon 1 - Hyasyoda Corporation Mining Outpost\" se=\"0.5\" si=\"60000520\" sy=\"Uminas\" syi=\"30000184\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Nuken VII - Moon 20 - Hyasyoda Corporation Mining Outpost\" se=\"0.8\" si=\"60000523\" sy=\"Nuken\" syi=\"30000183\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Wuos V - Moon 1 - Hyasyoda Corporation Mining Outpost\" se=\"0.6\" si=\"60000526\" sy=\"Wuos\" syi=\"30000187\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Airaken VI - Moon 3 - Hyasyoda Corporation Mineral Reserve\" se=\"0.5\" si=\"60000529\" sy=\"Airaken\" syi=\"30000185\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Uminas VI - Moon 6 - Hyasyoda Corporation Mining Outpost\" se=\"0.5\" si=\"60000532\" sy=\"Uminas\" syi=\"30000184\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Osmon IV - Moon 4 - Hyasyoda Corporation Mineral Reserve\" se=\"0.7\" si=\"60000535\" sy=\"Osmon\" syi=\"30000180\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Hatakani VI - Moon 5 - Hyasyoda Corporation Refinery\" se=\"0.9\" si=\"60000538\" sy=\"Hatakani\" syi=\"30002764\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Hatakani VI - Moon 4 - Hyasyoda Corporation Refinery\" se=\"0.9\" si=\"60000541\" sy=\"Hatakani\" syi=\"30002764\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Iivinen X - Moon 10 - Hyasyoda Corporation Mineral Reserve\" se=\"0.7\" si=\"60000544\" sy=\"Iivinen\" syi=\"30002766\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Tennen VIII - Moon 4 - Hyasyoda Corporation Refinery\" se=\"0.9\" si=\"60000547\" sy=\"Tennen\" syi=\"30002763\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Tennen VIII - Moon 13 - Hyasyoda Corporation Mineral Reserve\" se=\"0.9\" si=\"60000550\" sy=\"Tennen\" syi=\"30002763\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Iivinen X - Moon 5 - Hyasyoda Corporation Mining Outpost\" se=\"0.7\" si=\"60000553\" sy=\"Iivinen\" syi=\"30002766\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"Kaunokka IV - Veles Clade Semiosis Theater\" se=\"0.0\" si=\"60000556\" sy=\"Kaunokka\" syi=\"30002797\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"Kaunokka II - Moon 1 - Veles Clade Mutaplasmid Farm\" se=\"0.0\" si=\"60000559\" sy=\"Kaunokka\" syi=\"30002797\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"Oisio III - Moon 1 - Hyasyoda Corporation Refinery\" se=\"0.5\" si=\"60000562\" sy=\"Oisio\" syi=\"30002799\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"Venilen VIII - Moon 3 - Hyasyoda Corporation Mining Outpost\" se=\"0.6\" si=\"60000565\" sy=\"Venilen\" syi=\"30002798\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"Venilen VIII - Moon 8 - Hyasyoda Corporation Mining Outpost\" se=\"0.6\" si=\"60000568\" sy=\"Venilen\" syi=\"30002798\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"Venilen XI - Moon 14 - Hyasyoda Corporation Mining Outpost\" se=\"0.6\" si=\"60000571\" sy=\"Venilen\" syi=\"30002798\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Vouskiaho III - Hyasyoda Corporation Mineral Reserve\" se=\"0.5\" si=\"60000574\" sy=\"Vouskiaho\" syi=\"30000193\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Kiainti VI - Moon 1 - Hyasyoda Corporation Refinery\" se=\"0.5\" si=\"60000577\" sy=\"Kiainti\" syi=\"30000189\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Vouskiaho VI - Moon 15 - Hyasyoda Corporation Mineral Reserve\" se=\"0.5\" si=\"60000580\" sy=\"Vouskiaho\" syi=\"30000193\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"Otanuomi VI - Moon 7 - Perun Clade Extractive Terminus\" se=\"0.0\" si=\"60000583\" sy=\"Otanuomi\" syi=\"30000192\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"Otanuomi V - Moon 16 - Perun Clade Mutaplasmid Farm\" se=\"0.0\" si=\"60000586\" sy=\"Otanuomi\" syi=\"30000192\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Vouskiaho VIII - Moon 17 - Hyasyoda Corporation Refinery\" se=\"0.5\" si=\"60000589\" sy=\"Vouskiaho\" syi=\"30000193\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Dantumi IV - Moon 19 - Hyasyoda Corporation Mineral Reserve\" se=\"0.4\" si=\"60000592\" sy=\"Dantumi\" syi=\"30001356\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Kiskoken I - Hyasyoda Corporation Mining Outpost\" se=\"0.5\" si=\"60000595\" sy=\"Kiskoken\" syi=\"30001360\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Ossa VII - Moon 5 - Hyasyoda Corporation Mineral Reserve\" se=\"0.5\" si=\"60000598\" sy=\"Ossa\" syi=\"30001358\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Dantumi III - Hyasyoda Corporation Refinery\" se=\"0.4\" si=\"60000601\" sy=\"Dantumi\" syi=\"30001356\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Kiskoken VII - Moon 2 - Hyasyoda Corporation Mining Outpost\" se=\"0.5\" si=\"60000604\" sy=\"Kiskoken\" syi=\"30001360\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Antiainen I - Hyasyoda Corporation Refinery\" se=\"0.6\" si=\"60000607\" sy=\"Antiainen\" syi=\"30001357\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Paara I - Deep Core Mining Inc. Mining Outpost\" se=\"0.8\" si=\"60000610\" sy=\"Paara\" syi=\"30002775\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Ono V - Moon 2 - Deep Core Mining Inc. Mining Outpost\" se=\"0.8\" si=\"60000613\" sy=\"Ono\" syi=\"30002779\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Ono VI - Moon 6 - Deep Core Mining Inc. Mining Outpost\" se=\"0.8\" si=\"60000616\" sy=\"Ono\" syi=\"30002779\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Kusomonmon V - Moon 14 - Deep Core Mining Inc. Mining Outpost\" se=\"0.8\" si=\"60000619\" sy=\"Kusomonmon\" syi=\"30002802\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Haatomo VI - Moon 16 - Deep Core Mining Inc. Refinery\" se=\"0.6\" si=\"60000622\" sy=\"Haatomo\" syi=\"30002800\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Kusomonmon V - Moon 20 - Deep Core Mining Inc. Mining Outpost\" se=\"0.8\" si=\"60000625\" sy=\"Kusomonmon\" syi=\"30002802\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"Kaunokka VI - Moon 1 - Veles Clade Extractive Terminus\" se=\"0.0\" si=\"60000628\" sy=\"Kaunokka\" syi=\"30002797\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"Yria II - Moon 11 - Deep Core Mining Inc. Refinery\" se=\"0.5\" si=\"60000631\" sy=\"Yria\" syi=\"30002794\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"Kaunokka III - Moon 1 - Veles Clade Extractive Terminus\" se=\"0.0\" si=\"60000634\" sy=\"Kaunokka\" syi=\"30002797\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Hogimo V - Moon 11 - Deep Core Mining Inc. Mining Outpost\" se=\"0.6\" si=\"60000637\" sy=\"Hogimo\" syi=\"30002773\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Hogimo IV - Deep Core Mining Inc. Mining Outpost\" se=\"0.6\" si=\"60000640\" sy=\"Hogimo\" syi=\"30002773\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Hogimo V - Moon 16 - Deep Core Mining Inc. Mining Outpost\" se=\"0.6\" si=\"60000643\" sy=\"Hogimo\" syi=\"30002773\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Hampinen V - Poksu Mineral Group Mining Outpost\" se=\"0.5\" si=\"60000646\" sy=\"Hampinen\" syi=\"30000152\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Saisio VIII - Moon 16 - Poksu Mineral Group Mineral Reserve\" se=\"0.7\" si=\"60000649\" sy=\"Saisio\" syi=\"30000146\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Gekutami VI - Poksu Mineral Group Mineral Reserve\" se=\"0.7\" si=\"60000652\" sy=\"Gekutami\" syi=\"30000149\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Hampinen VII - Moon 11 - Poksu Mineral Group Refinery\" se=\"0.5\" si=\"60000655\" sy=\"Hampinen\" syi=\"30000152\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Ikao VIII - Moon 1 - Poksu Mineral Group Mineral Reserve\" se=\"0.6\" si=\"60000658\" sy=\"Ikao\" syi=\"30002786\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Waira VIII - Moon 17 - Poksu Mineral Group Mineral Reserve\" se=\"0.5\" si=\"60000661\" sy=\"Waira\" syi=\"30002787\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Tintoh VI - Moon 1 - Poksu Mineral Group Mining Outpost\" se=\"0.8\" si=\"60000664\" sy=\"Tintoh\" syi=\"30002784\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Ikao VIII - Poksu Mineral Group Mineral Reserve\" se=\"0.6\" si=\"60000667\" sy=\"Ikao\" syi=\"30002786\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Kusomonmon VI - Moon 20 - Poksu Mineral Group Mining Outpost\" se=\"0.8\" si=\"60000670\" sy=\"Kusomonmon\" syi=\"30002802\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Anttiri III - Poksu Mineral Group Mineral Reserve\" se=\"0.7\" si=\"60000673\" sy=\"Anttiri\" syi=\"30002805\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Anttiri V - Moon 18 - Poksu Mineral Group Mineral Reserve\" se=\"0.7\" si=\"60000676\" sy=\"Anttiri\" syi=\"30002805\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Suroken X - Moon 1 - Poksu Mineral Group Refinery\" se=\"0.7\" si=\"60000679\" sy=\"Suroken\" syi=\"30002801\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"New Caldari Prime - Moon 1 - Poksu Mineral Group Mineral Reserve\" se=\"1.0\" si=\"60000682\" sy=\"New Caldari\" syi=\"30000145\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Perimeter VII - Poksu Mineral Group Mineral Reserve\" se=\"1.0\" si=\"60000685\" sy=\"Perimeter\" syi=\"30000144\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"New Caldari I (Matigu) - Poksu Mineral Group Mineral Reserve\" se=\"1.0\" si=\"60000688\" sy=\"New Caldari\" syi=\"30000145\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Niyabainen VII - Moon 2 - Poksu Mineral Group Mineral Reserve\" se=\"1.0\" si=\"60000691\" sy=\"Niyabainen\" syi=\"30000143\"/>\r\n    <row c=\"Isoma\" ci=\"20000412\" r=\"The Citadel\" ri=\"10000033\" s=\"Tannolen VIII - Moon 14 - Poksu Mineral Group Mining Outpost\" se=\"0.3\" si=\"60000694\" sy=\"Tannolen\" syi=\"30002812\"/>\r\n    <row c=\"Isoma\" ci=\"20000412\" r=\"The Citadel\" ri=\"10000033\" s=\"Oto VIII - Moon 6 - Poksu Mineral Group Mining Outpost\" se=\"0.4\" si=\"60000697\" sy=\"Oto\" syi=\"30002808\"/>\r\n    <row c=\"Isoma\" ci=\"20000412\" r=\"The Citadel\" ri=\"10000033\" s=\"Eranakko III - Moon 6 - Poksu Mineral Group Mineral Reserve\" se=\"0.3\" si=\"60000700\" sy=\"Eranakko\" syi=\"30002810\"/>\r\n    <row c=\"Isoma\" ci=\"20000412\" r=\"The Citadel\" ri=\"10000033\" s=\"Hasmijaala X - Moon 1 - Poksu Mineral Group Refinery\" se=\"0.3\" si=\"60000703\" sy=\"Hasmijaala\" syi=\"30002806\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"Kino V - Moon 3 - Perun Clade Semiosis Theater\" se=\"0.0\" si=\"60000706\" sy=\"Kino\" syi=\"30001372\"/>\r\n    <row c=\"Haurala\" ci=\"20000200\" r=\"Lonetrek\" ri=\"10000016\" s=\"Sotrentaira VI - Moon 11 - Poksu Mineral Group Mineral Reserve\" se=\"0.5\" si=\"60000709\" sy=\"Sotrentaira\" syi=\"30001369\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"Kino IV - Moon 12 - Perun Clade Extractive Terminus\" se=\"0.0\" si=\"60000712\" sy=\"Kino\" syi=\"30001372\"/>\r\n    <row c=\"Haurala\" ci=\"20000200\" r=\"Lonetrek\" ri=\"10000016\" s=\"Raussinen IX - Moon 13 - Poksu Mineral Group Mining Outpost\" se=\"0.5\" si=\"60000715\" sy=\"Raussinen\" syi=\"30001373\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Isenairos VI - Poksu Mineral Group Mineral Reserve\" se=\"0.8\" si=\"60000718\" sy=\"Isenairos\" syi=\"30002815\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Motsu VI - Moon 13 - Poksu Mineral Group Mining Outpost\" se=\"0.9\" si=\"60000721\" sy=\"Motsu\" syi=\"30002819\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Aramachi VII - Moon 8 - Poksu Mineral Group Mining Outpost\" se=\"0.5\" si=\"60000724\" sy=\"Aramachi\" syi=\"30002817\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Aramachi VI - Moon 6 - Poksu Mineral Group Mining Outpost\" se=\"0.5\" si=\"60000727\" sy=\"Aramachi\" syi=\"30002817\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nonni III - Poksu Mineral Group Refinery\" se=\"0.5\" si=\"60000730\" sy=\"Nonni\" syi=\"30001401\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Litiura VII - Moon 4 - Poksu Mineral Group Mineral Reserve\" se=\"0.5\" si=\"60000733\" sy=\"Litiura\" syi=\"30001400\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Piak III - Moon 6 - Poksu Mineral Group Mineral Reserve\" se=\"0.7\" si=\"60000736\" sy=\"Piak\" syi=\"30001403\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Piak II - Poksu Mineral Group Refinery\" se=\"0.7\" si=\"60000739\" sy=\"Piak\" syi=\"30001403\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Hogimo V - Moon 7 - Poksu Mineral Group Mining Outpost\" se=\"0.6\" si=\"60000742\" sy=\"Hogimo\" syi=\"30002773\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Hogimo V - Moon 9 - Poksu Mineral Group Mining Outpost\" se=\"0.6\" si=\"60000745\" sy=\"Hogimo\" syi=\"30002773\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Huttaken VI - Moon 2 - Poksu Mineral Group Mineral Reserve\" se=\"0.6\" si=\"60000748\" sy=\"Huttaken\" syi=\"30002774\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Enderailen V - Poksu Mineral Group Refinery\" se=\"0.4\" si=\"60000751\" sy=\"Enderailen\" syi=\"30002769\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Veisto V - Moon 4 - Poksu Mineral Group Refinery\" se=\"0.8\" si=\"60000754\" sy=\"Veisto\" syi=\"30001362\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Veisto V - Moon 5 - Poksu Mineral Group Refinery\" se=\"0.8\" si=\"60000757\" sy=\"Veisto\" syi=\"30001362\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Funtanainen V - Poksu Mineral Group Mineral Reserve\" se=\"0.9\" si=\"60000760\" sy=\"Funtanainen\" syi=\"30001364\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Sobaseki XIII - Moon 3 - Poksu Mineral Group Mineral Reserve\" se=\"0.8\" si=\"60000763\" sy=\"Sobaseki\" syi=\"30001363\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Korama VI - Moon 10 - Minedrill Mining Outpost\" se=\"0.8\" si=\"60000766\" sy=\"Korama\" syi=\"30001394\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isseras IV - Moon 1 - Minedrill Mineral Reserve\" se=\"0.6\" si=\"60000769\" sy=\"Isseras\" syi=\"30001397\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Aakari I - Minedrill Refinery\" se=\"0.7\" si=\"60000772\" sy=\"Aakari\" syi=\"30001396\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"Aikantoh III - Minedrill Mining Outpost\" se=\"0.6\" si=\"60000775\" sy=\"Aikantoh\" syi=\"30001418\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"Aikantoh III - Moon 2 - Minedrill Mining Outpost\" se=\"0.6\" si=\"60000778\" sy=\"Aikantoh\" syi=\"30001418\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"Aikantoh VI - Moon 2 - Minedrill Mining Outpost\" se=\"0.6\" si=\"60000781\" sy=\"Aikantoh\" syi=\"30001418\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Hentogaira I - Moon 13 - Minedrill Mineral Reserve\" se=\"0.6\" si=\"60000784\" sy=\"Hentogaira\" syi=\"30000188\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Vasala VI - Moon 10 - Minedrill Refinery\" se=\"0.5\" si=\"60000787\" sy=\"Vasala\" syi=\"30000190\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Hentogaira II - Moon 6 - Minedrill Refinery\" se=\"0.6\" si=\"60000790\" sy=\"Hentogaira\" syi=\"30000188\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Kusomonmon IV - Moon 2 - Minedrill Mining Outpost\" se=\"0.8\" si=\"60000793\" sy=\"Kusomonmon\" syi=\"30002802\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Kusomonmon IV - Moon 6 - Minedrill Mining Outpost\" se=\"0.8\" si=\"60000796\" sy=\"Kusomonmon\" syi=\"30002802\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Juunigaishi XI - Moon 3 - Minedrill Refinery\" se=\"0.6\" si=\"60000799\" sy=\"Juunigaishi\" syi=\"30002803\"/>\r\n    <row c=\"Malariya\" ci=\"20000210\" r=\"Lonetrek\" ri=\"10000016\" s=\"Uesuro II - Moon 1 - Minedrill Refinery\" se=\"0.5\" si=\"60000802\" sy=\"Uesuro\" syi=\"30001432\"/>\r\n    <row c=\"Malariya\" ci=\"20000210\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isie V - Minedrill Mining Outpost\" se=\"0.4\" si=\"60000805\" sy=\"Isie\" syi=\"30001436\"/>\r\n    <row c=\"Malariya\" ci=\"20000210\" r=\"Lonetrek\" ri=\"10000016\" s=\"Oishami VII - Moon 12 - Minedrill Mining Outpost\" se=\"0.5\" si=\"60000808\" sy=\"Oishami\" syi=\"30001433\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Airkio IX - Minedrill Refinery\" se=\"0.9\" si=\"60000811\" sy=\"Airkio\" syi=\"30001404\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Airkio III - Moon 1 - Minedrill Mineral Reserve\" se=\"0.9\" si=\"60000814\" sy=\"Airkio\" syi=\"30001404\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Umokka X - Moon 12 - Minedrill Mining Outpost\" se=\"0.6\" si=\"60000817\" sy=\"Umokka\" syi=\"30001409\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Hakonen IX - Moon 16 - Minedrill Refinery\" se=\"0.3\" si=\"60000820\" sy=\"Hakonen\" syi=\"30001448\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Vuorrassi IV - Moon 2 - Minedrill Mineral Reserve\" se=\"0.5\" si=\"60000823\" sy=\"Vuorrassi\" syi=\"30001443\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Taisy III - Minedrill Refinery\" se=\"0.3\" si=\"60000826\" sy=\"Taisy\" syi=\"30001447\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Motsu III - Minedrill Mineral Reserve\" se=\"0.9\" si=\"60000829\" sy=\"Motsu\" syi=\"30002819\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Aramachi V - Moon 1 - Minedrill Mining Outpost\" se=\"0.5\" si=\"60000832\" sy=\"Aramachi\" syi=\"30002817\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Aramachi VI - Moon 4 - Minedrill Mining Outpost\" se=\"0.5\" si=\"60000835\" sy=\"Aramachi\" syi=\"30002817\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Hageken X - Moon 9 - Minedrill Mineral Reserve\" se=\"0.6\" si=\"60000838\" sy=\"Hageken\" syi=\"30001367\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isikemi IV - Moon 3 - Minedrill Mineral Reserve\" se=\"0.8\" si=\"60000841\" sy=\"Isikemi\" syi=\"30001365\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Sobaseki VI - Minedrill Mineral Reserve\" se=\"0.8\" si=\"60000844\" sy=\"Sobaseki\" syi=\"30001363\"/>\r\n    <row c=\"Isoma\" ci=\"20000412\" r=\"The Citadel\" ri=\"10000033\" s=\"Oto VIII - Moon 4 - Minedrill Mining Outpost\" se=\"0.4\" si=\"60000847\" sy=\"Oto\" syi=\"30002808\"/>\r\n    <row c=\"Isoma\" ci=\"20000412\" r=\"The Citadel\" ri=\"10000033\" s=\"Hasmijaala VIII - Moon 4 - Minedrill Mineral Reserve\" se=\"0.3\" si=\"60000850\" sy=\"Hasmijaala\" syi=\"30002806\"/>\r\n    <row c=\"Isoma\" ci=\"20000412\" r=\"The Citadel\" ri=\"10000033\" s=\"Tannolen VI - Moon 7 - Minedrill Mining Outpost\" se=\"0.3\" si=\"60000853\" sy=\"Tannolen\" syi=\"30002812\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Haatomo VI - Moon 1 - Caldari Provisions Warehouse\" se=\"0.6\" si=\"60000856\" sy=\"Haatomo\" syi=\"30002800\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Kusomonmon VI - Moon 6 - Caldari Provisions Plantation\" se=\"0.8\" si=\"60000859\" sy=\"Kusomonmon\" syi=\"30002802\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Suroken XI - Caldari Provisions Plantation\" se=\"0.7\" si=\"60000862\" sy=\"Suroken\" syi=\"30002801\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Juunigaishi X - Moon 3 - Caldari Provisions Food Packaging\" se=\"0.6\" si=\"60000865\" sy=\"Juunigaishi\" syi=\"30002803\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Uminas V - Moon 3 - Caldari Provisions Plantation\" se=\"0.5\" si=\"60000868\" sy=\"Uminas\" syi=\"30000184\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Uminas VI - Moon 7 - Caldari Provisions Plantation\" se=\"0.5\" si=\"60000871\" sy=\"Uminas\" syi=\"30000184\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Korsiki IV - Moon 16 - Caldari Provisions Food Packaging\" se=\"0.6\" si=\"60000874\" sy=\"Korsiki\" syi=\"30000181\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Nuken VI - Moon 12 - Caldari Provisions Plantation\" se=\"0.8\" si=\"60000877\" sy=\"Nuken\" syi=\"30000183\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Halaima VII - Moon 6 - Caldari Provisions Warehouse\" se=\"0.7\" si=\"60000880\" sy=\"Halaima\" syi=\"30002781\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Sankkasen VII - Moon 4 - Caldari Provisions Plantation\" se=\"0.7\" si=\"60000883\" sy=\"Sankkasen\" syi=\"30002783\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Waira VIII - Moon 15 - Caldari Provisions Food Packaging\" se=\"0.5\" si=\"60000886\" sy=\"Waira\" syi=\"30002787\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Waira V - Moon 1 - Caldari Provisions Food Packaging\" se=\"0.5\" si=\"60000889\" sy=\"Waira\" syi=\"30002787\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Sobaseki X - Moon 15 - Caldari Provisions Warehouse\" se=\"0.8\" si=\"60000892\" sy=\"Sobaseki\" syi=\"30001363\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Sobaseki IX - Moon 9 - Caldari Provisions Food Packaging\" se=\"0.8\" si=\"60000895\" sy=\"Sobaseki\" syi=\"30001363\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Hageken X - Moon 20 - Caldari Provisions Warehouse\" se=\"0.6\" si=\"60000898\" sy=\"Hageken\" syi=\"30001367\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Funtanainen II - Caldari Provisions Warehouse\" se=\"0.9\" si=\"60000901\" sy=\"Funtanainen\" syi=\"30001364\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"Ukkalen VII - Moon 1 - Caldari Provisions Plantation\" se=\"0.6\" si=\"60000904\" sy=\"Ukkalen\" syi=\"30000177\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"Soshin VII - Moon 4 - Caldari Provisions Plantation\" se=\"0.6\" si=\"60000907\" sy=\"Soshin\" syi=\"30000175\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"Ukkalen IV - Moon 1 - Caldari Provisions Plantation\" se=\"0.6\" si=\"60000910\" sy=\"Ukkalen\" syi=\"30000177\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"Onuse VII - Moon 21 - Caldari Provisions Plantation\" se=\"0.7\" si=\"60000913\" sy=\"Onuse\" syi=\"30000174\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"Maila VI - Moon 2 - Caldari Provisions Plantation\" se=\"0.4\" si=\"60000916\" sy=\"Maila\" syi=\"30000162\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"Ikami VI - Moon 13 - Caldari Provisions Food Packaging\" se=\"0.5\" si=\"60000919\" sy=\"Ikami\" syi=\"30000159\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"Akora IX - Moon 12 - Caldari Provisions Plantation\" se=\"0.3\" si=\"60000922\" sy=\"Akora\" syi=\"30000163\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"Maila IV - Caldari Provisions Warehouse\" se=\"0.4\" si=\"60000925\" sy=\"Maila\" syi=\"30000162\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Irjunen VI - Caldari Provisions Food Packaging\" se=\"0.5\" si=\"60000928\" sy=\"Irjunen\" syi=\"30002792\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Kaaputenen III - Moon 7 - Caldari Provisions Plantation\" se=\"0.8\" si=\"60000931\" sy=\"Kaaputenen\" syi=\"30002789\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Inari IX - Moon 7 - Caldari Provisions Plantation\" se=\"0.5\" si=\"60000934\" sy=\"Inari\" syi=\"30002793\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Kaaputenen V - Moon 16 - Caldari Provisions Plantation\" se=\"0.8\" si=\"60000937\" sy=\"Kaaputenen\" syi=\"30002789\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Haajinen XII - Moon 9 - Caldari Provisions Food Packaging\" se=\"0.8\" si=\"60000940\" sy=\"Haajinen\" syi=\"30001424\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Haajinen XII - Moon 19 - Caldari Provisions Food Packaging\" se=\"0.8\" si=\"60000943\" sy=\"Haajinen\" syi=\"30001424\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Torrinos V - Moon 10 - Caldari Provisions Food Packaging\" se=\"0.5\" si=\"60000946\" sy=\"Torrinos\" syi=\"30001429\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isinokka VI - Moon 7 - Caldari Provisions Warehouse\" se=\"0.7\" si=\"60000949\" sy=\"Isinokka\" syi=\"30001426\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"Kino VII - Moon 17 - The Convocation of Triglav Bioadaptation Chambers\" se=\"0.0\" si=\"60000952\" sy=\"Kino\" syi=\"30001372\"/>\r\n    <row c=\"Haurala\" ci=\"20000200\" r=\"Lonetrek\" ri=\"10000016\" s=\"Sotrentaira VI - Moon 3 - Caldari Provisions Warehouse\" se=\"0.5\" si=\"60000955\" sy=\"Sotrentaira\" syi=\"30001369\"/>\r\n    <row c=\"Haurala\" ci=\"20000200\" r=\"Lonetrek\" ri=\"10000016\" s=\"Sotrentaira VI - Moon 5 - Caldari Provisions Plantation\" se=\"0.5\" si=\"60000958\" sy=\"Sotrentaira\" syi=\"30001369\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"Kino VII - Moon 10 - Perun Clade Bioadaptation Chambers\" se=\"0.0\" si=\"60000961\" sy=\"Kino\" syi=\"30001372\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Obe VI - Caldari Provisions Plantation\" se=\"0.3\" si=\"60000964\" sy=\"Obe\" syi=\"30000205\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Osaa IV - Moon 11 - Caldari Provisions Plantation\" se=\"0.3\" si=\"60000967\" sy=\"Osaa\" syi=\"30000207\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"Wirashoda VIII - Moon 5 - Veles Clade Bioadaptation Chambers\" se=\"0.0\" si=\"60000970\" sy=\"Wirashoda\" syi=\"30000206\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Uchoshi XI - Moon 4 - Caldari Provisions Food Packaging\" se=\"0.5\" si=\"60000973\" sy=\"Uchoshi\" syi=\"30000201\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nonni III - Moon 1 - Kaalakiota Corporation Factory\" se=\"0.5\" si=\"60000976\" sy=\"Nonni\" syi=\"30001401\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Piak IV - Moon 14 - Kaalakiota Corporation Warehouse\" se=\"0.7\" si=\"60000979\" sy=\"Piak\" syi=\"30001403\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nonni I - Kaalakiota Corporation Factory\" se=\"0.5\" si=\"60000982\" sy=\"Nonni\" syi=\"30001401\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nonni VI - Kaalakiota Corporation Factory\" se=\"0.5\" si=\"60000985\" sy=\"Nonni\" syi=\"30001401\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nonni IV - Kaalakiota Corporation Factory\" se=\"0.5\" si=\"60000988\" sy=\"Nonni\" syi=\"30001401\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nonni VI - Moon 1 - Kaalakiota Corporation Factory\" se=\"0.5\" si=\"60000991\" sy=\"Nonni\" syi=\"30001401\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"Ithar XI - Kaalakiota Corporation Warehouse\" se=\"0.8\" si=\"60000994\" sy=\"Ithar\" syi=\"30004157\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"Asrios VII - Moon 1 - Kaalakiota Corporation Factory\" se=\"0.8\" si=\"60000997\" sy=\"Asrios\" syi=\"30004156\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"Ithar VI - Moon 10 - Kaalakiota Corporation Factory\" se=\"0.8\" si=\"60001000\" sy=\"Ithar\" syi=\"30004157\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"Ithar VIII - Moon 16 - Kaalakiota Corporation Warehouse\" se=\"0.8\" si=\"60001003\" sy=\"Ithar\" syi=\"30004157\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"Shemah VII - Moon 10 - Kaalakiota Corporation Factory\" se=\"0.8\" si=\"60001006\" sy=\"Shemah\" syi=\"30004155\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"Asrios III - Kaalakiota Corporation Factory\" se=\"0.8\" si=\"60001009\" sy=\"Asrios\" syi=\"30004156\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Ziona VII - Moon 1 - Kaalakiota Corporation Factory\" se=\"0.6\" si=\"60001012\" sy=\"Ziona\" syi=\"30002203\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Ziona VII - Moon 3 - Kaalakiota Corporation Warehouse\" se=\"0.6\" si=\"60001015\" sy=\"Ziona\" syi=\"30002203\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Ziona V - Moon 1 - Kaalakiota Corporation Warehouse\" se=\"0.6\" si=\"60001018\" sy=\"Ziona\" syi=\"30002203\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Ziona VI - Moon 6 - Kaalakiota Corporation Factory\" se=\"0.6\" si=\"60001021\" sy=\"Ziona\" syi=\"30002203\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Sukirah IX - Moon 7 - Kaalakiota Corporation Research Center\" se=\"0.6\" si=\"60001024\" sy=\"Sukirah\" syi=\"30002200\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Ziona III - Moon 1 - Kaalakiota Corporation Warehouse\" se=\"0.6\" si=\"60001027\" sy=\"Ziona\" syi=\"30002203\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"Odebeinn V - Moon 5 - Kaalakiota Corporation Factory\" se=\"0.3\" si=\"60001030\" sy=\"Odebeinn\" syi=\"30003470\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"Frulegur IX - Moon 4 - Kaalakiota Corporation Warehouse\" se=\"0.4\" si=\"60001033\" sy=\"Frulegur\" syi=\"30003467\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"Frulegur X - Moon 3 - Kaalakiota Corporation Factory\" se=\"0.4\" si=\"60001036\" sy=\"Frulegur\" syi=\"30003467\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"Konora VI - Kaalakiota Corporation Factory\" se=\"0.4\" si=\"60001039\" sy=\"Konora\" syi=\"30003471\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"Frulegur VIII - Moon 4 - Kaalakiota Corporation Warehouse\" se=\"0.4\" si=\"60001042\" sy=\"Frulegur\" syi=\"30003467\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"Hodrold VIII - Moon 2 - Kaalakiota Corporation Factory\" se=\"0.6\" si=\"60001045\" sy=\"Hodrold\" syi=\"30003469\"/>\r\n    <row c=\"Fabas\" ci=\"20000774\" r=\"Genesis\" ri=\"10000067\" s=\"Bania VI - Moon 11 - Kaalakiota Corporation Warehouse\" se=\"0.5\" si=\"60001048\" sy=\"Bania\" syi=\"30005294\"/>\r\n    <row c=\"Fabas\" ci=\"20000774\" r=\"Genesis\" ri=\"10000067\" s=\"Agal I - Kaalakiota Corporation Factory\" se=\"0.5\" si=\"60001051\" sy=\"Agal\" syi=\"30005292\"/>\r\n    <row c=\"Fabas\" ci=\"20000774\" r=\"Genesis\" ri=\"10000067\" s=\"Ebasez VIII - Moon 4 - Kaalakiota Corporation Factory\" se=\"0.5\" si=\"60001054\" sy=\"Ebasez\" syi=\"30005291\"/>\r\n    <row c=\"Fabas\" ci=\"20000774\" r=\"Genesis\" ri=\"10000067\" s=\"Nasreri III - Moon 1 - Kaalakiota Corporation Factory\" se=\"0.5\" si=\"60001057\" sy=\"Nasreri\" syi=\"30005289\"/>\r\n    <row c=\"Fabas\" ci=\"20000774\" r=\"Genesis\" ri=\"10000067\" s=\"Heorah VII - Moon 2 - Kaalakiota Corporation Factory\" se=\"0.5\" si=\"60001060\" sy=\"Heorah\" syi=\"30005290\"/>\r\n    <row c=\"Fabas\" ci=\"20000774\" r=\"Genesis\" ri=\"10000067\" s=\"Heorah VII - Kaalakiota Corporation Factory\" se=\"0.5\" si=\"60001063\" sy=\"Heorah\" syi=\"30005290\"/>\r\n    <row c=\"Sanair\" ci=\"20000243\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Goram V - Moon 3 - Kaalakiota Corporation Factory\" se=\"0.6\" si=\"60001066\" sy=\"Goram\" syi=\"30001646\"/>\r\n    <row c=\"Sanair\" ci=\"20000243\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Tendhyes VIII - Kaalakiota Corporation Factory\" se=\"0.6\" si=\"60001069\" sy=\"Tendhyes\" syi=\"30001645\"/>\r\n    <row c=\"Sanair\" ci=\"20000243\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Ahrosseas VI - Moon 10 - Kaalakiota Corporation Factory\" se=\"0.6\" si=\"60001072\" sy=\"Ahrosseas\" syi=\"30001649\"/>\r\n    <row c=\"Sanair\" ci=\"20000243\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Goram VIII - Moon 4 - Kaalakiota Corporation Factory\" se=\"0.6\" si=\"60001075\" sy=\"Goram\" syi=\"30001646\"/>\r\n    <row c=\"Sanair\" ci=\"20000243\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Tividu IV - Moon 3 - Kaalakiota Corporation Factory\" se=\"0.6\" si=\"60001078\" sy=\"Tividu\" syi=\"30001644\"/>\r\n    <row c=\"Sanair\" ci=\"20000243\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Tividu III - Kaalakiota Corporation Factory\" se=\"0.6\" si=\"60001081\" sy=\"Tividu\" syi=\"30001644\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Pimebeka X - Kaalakiota Corporation Factory\" se=\"0.7\" si=\"60001084\" sy=\"Pimebeka\" syi=\"30001669\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Baviasi X - Moon 2 - Kaalakiota Corporation Factory\" se=\"0.8\" si=\"60001087\" sy=\"Baviasi\" syi=\"30001670\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Baviasi VI - Moon 3 - Kaalakiota Corporation Factory\" se=\"0.8\" si=\"60001090\" sy=\"Baviasi\" syi=\"30001670\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hilaban III - Moon 3 - Kaalakiota Corporation Factory\" se=\"0.9\" si=\"60001093\" sy=\"Hilaban\" syi=\"30001674\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Tash-Murkon Prime II - Moon 1 - Kaalakiota Corporation Factory\" se=\"0.8\" si=\"60001096\" sy=\"Tash-Murkon Prime\" syi=\"30001671\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Baviasi II - Kaalakiota Corporation Factory\" se=\"0.8\" si=\"60001099\" sy=\"Baviasi\" syi=\"30001670\"/>\r\n    <row c=\"Wiedadur\" ci=\"20000371\" r=\"Heimatar\" ri=\"10000030\" s=\"Tongofur VII - Kaalakiota Corporation Factory\" se=\"0.6\" si=\"60001102\" sy=\"Tongofur\" syi=\"30002532\"/>\r\n    <row c=\"Wiedadur\" ci=\"20000371\" r=\"Heimatar\" ri=\"10000030\" s=\"Tongofur VIII - Kaalakiota Corporation Warehouse\" se=\"0.6\" si=\"60001105\" sy=\"Tongofur\" syi=\"30002532\"/>\r\n    <row c=\"Wiedadur\" ci=\"20000371\" r=\"Heimatar\" ri=\"10000030\" s=\"Gerek IV - Moon 8 - Kaalakiota Corporation Factory\" se=\"0.7\" si=\"60001108\" sy=\"Gerek\" syi=\"30002531\"/>\r\n    <row c=\"Wiedadur\" ci=\"20000371\" r=\"Heimatar\" ri=\"10000030\" s=\"Ebasgerdur V - Moon 11 - Kaalakiota Corporation Factory\" se=\"0.8\" si=\"60001111\" sy=\"Ebasgerdur\" syi=\"30002535\"/>\r\n    <row c=\"Wiedadur\" ci=\"20000371\" r=\"Heimatar\" ri=\"10000030\" s=\"Ebodold X - Moon 17 - Kaalakiota Corporation Research Center\" se=\"0.4\" si=\"60001114\" sy=\"Ebodold\" syi=\"30002536\"/>\r\n    <row c=\"Wiedadur\" ci=\"20000371\" r=\"Heimatar\" ri=\"10000030\" s=\"Rokofur IX - Kaalakiota Corporation Factory\" se=\"0.6\" si=\"60001117\" sy=\"Rokofur\" syi=\"30002534\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"Shafrak VIII - Moon 13 - Kaalakiota Corporation Factory\" se=\"0.2\" si=\"60001120\" sy=\"Shafrak\" syi=\"30004283\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"Nalnifan II - Moon 8 - Kaalakiota Corporation Factory\" se=\"0.3\" si=\"60001123\" sy=\"Nalnifan\" syi=\"30004280\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"Getrenjesa IX - Moon 1 - Kaalakiota Corporation Factory\" se=\"0.3\" si=\"60001126\" sy=\"Getrenjesa\" syi=\"30004282\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"Nalnifan VI - Moon 20 - Kaalakiota Corporation Factory\" se=\"0.3\" si=\"60001129\" sy=\"Nalnifan\" syi=\"30004280\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"Jerhesh VI - Moon 11 - Kaalakiota Corporation Factory\" se=\"0.3\" si=\"60001132\" sy=\"Jerhesh\" syi=\"30004281\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"Defsunun IX - Moon 18 - Kaalakiota Corporation Factory\" se=\"0.1\" si=\"60001135\" sy=\"Defsunun\" syi=\"30004284\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Brin VI - Moon 14 - Kaalakiota Corporation Warehouse\" se=\"0.2\" si=\"60001138\" sy=\"Brin\" syi=\"30002067\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Evati X - Moon 2 - Kaalakiota Corporation Factory\" se=\"0.2\" si=\"60001141\" sy=\"Evati\" syi=\"30002060\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Lasleinur IV - Moon 11 - Kaalakiota Corporation Factory\" se=\"0.2\" si=\"60001144\" sy=\"Lasleinur\" syi=\"30002065\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Evati VII - Moon 1 - Kaalakiota Corporation Warehouse\" se=\"0.2\" si=\"60001147\" sy=\"Evati\" syi=\"30002060\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Evati IX - Moon 4 - Kaalakiota Corporation Warehouse\" se=\"0.2\" si=\"60001150\" sy=\"Evati\" syi=\"30002060\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Lasleinur VI - Moon 15 - Kaalakiota Corporation Factory\" se=\"0.2\" si=\"60001153\" sy=\"Lasleinur\" syi=\"30002065\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"Murini II - Moon 6 - Kaalakiota Corporation Warehouse\" se=\"0.6\" si=\"60001156\" sy=\"Murini\" syi=\"30004092\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"Khafis X - Moon 2 - Kaalakiota Corporation Factory\" se=\"0.6\" si=\"60001159\" sy=\"Khafis\" syi=\"30004096\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"Askonak IV - Moon 15 - Kaalakiota Corporation Factory\" se=\"0.7\" si=\"60001162\" sy=\"Askonak\" syi=\"30004093\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"Dantan VI - Moon 3 - Kaalakiota Corporation Warehouse\" se=\"0.7\" si=\"60001165\" sy=\"Dantan\" syi=\"30004097\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"Kador Prime IX - Moon 2 - Kaalakiota Corporation Factory\" se=\"0.6\" si=\"60001168\" sy=\"Kador Prime\" syi=\"30004095\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"Khafis IX - Moon 7 - Kaalakiota Corporation Warehouse\" se=\"0.6\" si=\"60001171\" sy=\"Khafis\" syi=\"30004096\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Lisudeh VI - Moon 2 - Kaalakiota Corporation Factory\" se=\"0.8\" si=\"60001174\" sy=\"Lisudeh\" syi=\"30002973\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Lisudeh V - Moon 16 - Kaalakiota Corporation Warehouse\" se=\"0.8\" si=\"60001177\" sy=\"Lisudeh\" syi=\"30002973\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Ohide VIII - Moon 6 - Kaalakiota Corporation Factory\" se=\"0.6\" si=\"60001180\" sy=\"Ohide\" syi=\"30002970\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Lisudeh V - Moon 10 - Kaalakiota Corporation Factory\" se=\"0.8\" si=\"60001183\" sy=\"Lisudeh\" syi=\"30002973\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Ohide VI - Moon 2 - Kaalakiota Corporation Warehouse\" se=\"0.6\" si=\"60001186\" sy=\"Ohide\" syi=\"30002970\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Eredan I - Kaalakiota Corporation Research Center\" se=\"0.7\" si=\"60001189\" sy=\"Eredan\" syi=\"30002969\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Waskisen IX - Moon 11 - Kaalakiota Corporation Warehouse\" se=\"0.7\" si=\"60001192\" sy=\"Waskisen\" syi=\"30002790\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Sirppala I - Moon 1 - Kaalakiota Corporation Warehouse\" se=\"0.9\" si=\"60001195\" sy=\"Sirppala\" syi=\"30002791\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Irjunen IV - Kaalakiota Corporation Warehouse\" se=\"0.5\" si=\"60001198\" sy=\"Irjunen\" syi=\"30002792\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Sirppala IV - Moon 16 - Kaalakiota Corporation Warehouse\" se=\"0.9\" si=\"60001201\" sy=\"Sirppala\" syi=\"30002791\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Sirppala II - Moon 3 - Kaalakiota Corporation Factory\" se=\"0.9\" si=\"60001204\" sy=\"Sirppala\" syi=\"30002791\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Waskisen I - Moon 2 - Kaalakiota Corporation Factory\" se=\"0.7\" si=\"60001207\" sy=\"Waskisen\" syi=\"30002790\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Estene VI - Moon 17 - Kaalakiota Corporation Factory\" se=\"0.8\" si=\"60001210\" sy=\"Estene\" syi=\"30002673\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Nausschie IX - Kaalakiota Corporation Warehouse\" se=\"0.8\" si=\"60001213\" sy=\"Nausschie\" syi=\"30002671\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Dunraelare VIII - Moon 14 - Kaalakiota Corporation Factory\" se=\"0.7\" si=\"60001216\" sy=\"Dunraelare\" syi=\"30002670\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Inghenges IV - Moon 5 - Kaalakiota Corporation Factory\" se=\"0.7\" si=\"60001219\" sy=\"Inghenges\" syi=\"30002672\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Dunraelare VIII - Moon 15 - Kaalakiota Corporation Factory\" se=\"0.7\" si=\"60001222\" sy=\"Dunraelare\" syi=\"30002670\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Nausschie VI - Kaalakiota Corporation Factory\" se=\"0.8\" si=\"60001225\" sy=\"Nausschie\" syi=\"30002671\"/>\r\n    <row c=\"Heti\" ci=\"20000600\" r=\"Kador\" ri=\"10000052\" s=\"Ansasos VII - Moon 4 - Kaalakiota Corporation Factory\" se=\"0.4\" si=\"60001228\" sy=\"Ansasos\" syi=\"30004104\"/>\r\n    <row c=\"Heti\" ci=\"20000600\" r=\"Kador\" ri=\"10000052\" s=\"Bordan VIII - Moon 3 - Kaalakiota Corporation Factory\" se=\"0.4\" si=\"60001231\" sy=\"Bordan\" syi=\"30004106\"/>\r\n    <row c=\"Heti\" ci=\"20000600\" r=\"Kador\" ri=\"10000052\" s=\"Ansasos IX - Moon 1 - Kaalakiota Corporation Factory\" se=\"0.4\" si=\"60001234\" sy=\"Ansasos\" syi=\"30004104\"/>\r\n    <row c=\"Heti\" ci=\"20000600\" r=\"Kador\" ri=\"10000052\" s=\"Bordan V - Moon 2 - Kaalakiota Corporation Factory\" se=\"0.4\" si=\"60001237\" sy=\"Bordan\" syi=\"30004106\"/>\r\n    <row c=\"Heti\" ci=\"20000600\" r=\"Kador\" ri=\"10000052\" s=\"Ansasos III - Kaalakiota Corporation Factory\" se=\"0.4\" si=\"60001240\" sy=\"Ansasos\" syi=\"30004104\"/>\r\n    <row c=\"Heti\" ci=\"20000600\" r=\"Kador\" ri=\"10000052\" s=\"Bordan IV - Moon 1 - Kaalakiota Corporation Factory\" se=\"0.4\" si=\"60001243\" sy=\"Bordan\" syi=\"30004106\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Dantumi IV - Moon 14 - Wiyrkomi Corporation Factory\" se=\"0.4\" si=\"60001246\" sy=\"Dantumi\" syi=\"30001356\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Antiainen III - Moon 1 - Wiyrkomi Corporation Factory\" se=\"0.6\" si=\"60001249\" sy=\"Antiainen\" syi=\"30001357\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Dantumi VI - Moon 3 - Wiyrkomi Corporation Factory\" se=\"0.4\" si=\"60001252\" sy=\"Dantumi\" syi=\"30001356\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Dantumi IV - Moon 12 - Wiyrkomi Corporation Factory\" se=\"0.4\" si=\"60001255\" sy=\"Dantumi\" syi=\"30001356\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Augnais X - Moon 1 - Wiyrkomi Corporation Factory\" se=\"0.5\" si=\"60001258\" sy=\"Augnais\" syi=\"30002680\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Fluekele IV - Moon 10 - Wiyrkomi Corporation Factory\" se=\"0.6\" si=\"60001261\" sy=\"Fluekele\" syi=\"30002677\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Parchanier VI - Moon 16 - Wiyrkomi Corporation Factory\" se=\"0.9\" si=\"60001264\" sy=\"Parchanier\" syi=\"30002676\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Jolia VII - Moon 12 - Wiyrkomi Corporation Factory\" se=\"0.5\" si=\"60001267\" sy=\"Jolia\" syi=\"30002679\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Hilfhurmur X - Wiyrkomi Corporation Factory\" se=\"0.8\" si=\"60001270\" sy=\"Hilfhurmur\" syi=\"30003428\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Oppold VI - Moon 11 - Wiyrkomi Corporation Factory\" se=\"0.7\" si=\"60001273\" sy=\"Oppold\" syi=\"30003430\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Oppold V - Wiyrkomi Corporation Factory\" se=\"0.7\" si=\"60001276\" sy=\"Oppold\" syi=\"30003430\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Geffur VIII - Moon 13 - Wiyrkomi Corporation Factory\" se=\"0.7\" si=\"60001279\" sy=\"Geffur\" syi=\"30003429\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Komaa VII - Moon 1 - Wiyrkomi Corporation Factory\" se=\"0.6\" si=\"60001282\" sy=\"Komaa\" syi=\"30003092\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Imata VII - Wiyrkomi Corporation Warehouse\" se=\"0.5\" si=\"60001285\" sy=\"Imata\" syi=\"30003094\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Komaa III - Moon 1 - Wiyrkomi Corporation Factory\" se=\"0.6\" si=\"60001288\" sy=\"Komaa\" syi=\"30003092\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Komaa VII - Moon 6 - Wiyrkomi Corporation Factory\" se=\"0.6\" si=\"60001291\" sy=\"Komaa\" syi=\"30003092\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"Fihrneh VI - Moon 8 - Wiyrkomi Corporation Factory\" se=\"0.1\" si=\"60001294\" sy=\"Fihrneh\" syi=\"30004254\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"Fihrneh V - Moon 4 - Wiyrkomi Corporation Factory\" se=\"0.1\" si=\"60001297\" sy=\"Fihrneh\" syi=\"30004254\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"Fihrneh VI - Moon 14 - Wiyrkomi Corporation Warehouse\" se=\"0.1\" si=\"60001300\" sy=\"Fihrneh\" syi=\"30004254\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"Fihrneh IV - Moon 8 - Wiyrkomi Corporation Factory\" se=\"0.1\" si=\"60001303\" sy=\"Fihrneh\" syi=\"30004254\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Muvolailen X - Moon 7 - Wiyrkomi Corporation Factory\" se=\"0.7\" si=\"60001306\" sy=\"Muvolailen\" syi=\"30002780\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Annaro VI - Moon 2 - Wiyrkomi Corporation Factory\" se=\"0.8\" si=\"60001309\" sy=\"Annaro\" syi=\"30002776\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Annaro VIII - Wiyrkomi Corporation Factory\" se=\"0.8\" si=\"60001312\" sy=\"Annaro\" syi=\"30002776\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Annaro IV - Wiyrkomi Corporation Factory\" se=\"0.8\" si=\"60001315\" sy=\"Annaro\" syi=\"30002776\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Dunraelare VIII - Moon 7 - Wiyrkomi Corporation Warehouse\" se=\"0.7\" si=\"60001318\" sy=\"Dunraelare\" syi=\"30002670\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Nausschie IX - Moon 2 - Wiyrkomi Corporation Factory\" se=\"0.8\" si=\"60001321\" sy=\"Nausschie\" syi=\"30002671\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Inghenges IV - Moon 17 - Wiyrkomi Corporation Factory\" se=\"0.7\" si=\"60001324\" sy=\"Inghenges\" syi=\"30002672\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Nausschie XI - Moon 10 - Wiyrkomi Corporation Factory\" se=\"0.8\" si=\"60001327\" sy=\"Nausschie\" syi=\"30002671\"/>\r\n    <row c=\"Reya\" ci=\"20000767\" r=\"Genesis\" ri=\"10000067\" s=\"Gergish IX - Moon 10 - Wiyrkomi Corporation Factory\" se=\"0.6\" si=\"60001330\" sy=\"Gergish\" syi=\"30005244\"/>\r\n    <row c=\"Reya\" ci=\"20000767\" r=\"Genesis\" ri=\"10000067\" s=\"Kobam VIII - Moon 2 - Wiyrkomi Corporation Factory\" se=\"0.5\" si=\"60001333\" sy=\"Kobam\" syi=\"30005247\"/>\r\n    <row c=\"Reya\" ci=\"20000767\" r=\"Genesis\" ri=\"10000067\" s=\"Tahli III - Moon 5 - Wiyrkomi Corporation Factory\" se=\"0.6\" si=\"60001336\" sy=\"Tahli\" syi=\"30005245\"/>\r\n    <row c=\"Reya\" ci=\"20000767\" r=\"Genesis\" ri=\"10000067\" s=\"Hirizan VIII - Wiyrkomi Corporation Factory\" se=\"0.5\" si=\"60001339\" sy=\"Hirizan\" syi=\"30005248\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Oichiya I - Wiyrkomi Corporation Factory\" se=\"0.8\" si=\"60001342\" sy=\"Oichiya\" syi=\"30002818\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Saila VII - Moon 5 - Wiyrkomi Corporation Factory\" se=\"0.9\" si=\"60001345\" sy=\"Saila\" syi=\"30002816\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Isenairos VII - Moon 5 - Wiyrkomi Corporation Factory\" se=\"0.8\" si=\"60001348\" sy=\"Isenairos\" syi=\"30002815\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Isenairos VI - Moon 9 - Wiyrkomi Corporation Factory\" se=\"0.8\" si=\"60001351\" sy=\"Isenairos\" syi=\"30002815\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Freatlidur V - Moon 11 - Wiyrkomi Corporation Factory\" se=\"0.8\" si=\"60001354\" sy=\"Freatlidur\" syi=\"30003394\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Maturat VI - Moon 11 - Wiyrkomi Corporation Factory\" se=\"0.8\" si=\"60001357\" sy=\"Maturat\" syi=\"30003396\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Bongveber VII - Moon 5 - Wiyrkomi Corporation Factory\" se=\"0.9\" si=\"60001360\" sy=\"Bongveber\" syi=\"30003397\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Freatlidur IX - Moon 19 - Wiyrkomi Corporation Factory\" se=\"0.8\" si=\"60001363\" sy=\"Freatlidur\" syi=\"30003394\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Groothese X - Moon 18 - Wiyrkomi Corporation Factory\" se=\"0.3\" si=\"60001366\" sy=\"Groothese\" syi=\"30003057\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Olide V - Moon 10 - Wiyrkomi Corporation Factory\" se=\"0.7\" si=\"60001369\" sy=\"Olide\" syi=\"30003058\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Groothese X - Moon 11 - Wiyrkomi Corporation Factory\" se=\"0.3\" si=\"60001372\" sy=\"Groothese\" syi=\"30003057\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Mannar VII - Moon 18 - Wiyrkomi Corporation Factory\" se=\"0.3\" si=\"60001375\" sy=\"Mannar\" syi=\"30003060\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"Avada VI - Moon 20 - Wiyrkomi Corporation Factory\" se=\"0.7\" si=\"60001378\" sy=\"Avada\" syi=\"30004249\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"Avada VII - Moon 6 - Wiyrkomi Corporation Factory\" se=\"0.7\" si=\"60001381\" sy=\"Avada\" syi=\"30004249\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"Avada VI - Moon 1 - Wiyrkomi Corporation Factory\" se=\"0.7\" si=\"60001384\" sy=\"Avada\" syi=\"30004249\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"Haimeh VII - Wiyrkomi Corporation Factory\" se=\"0.5\" si=\"60001387\" sy=\"Haimeh\" syi=\"30004248\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"Vlillirier V - Moon 2 - Wiyrkomi Corporation Factory\" se=\"0.3\" si=\"60001390\" sy=\"Vlillirier\" syi=\"30003836\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"Vlillirier IV - Moon 13 - Wiyrkomi Corporation Warehouse\" se=\"0.3\" si=\"60001393\" sy=\"Vlillirier\" syi=\"30003836\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"Vlillirier III - Moon 2 - Wiyrkomi Corporation Factory\" se=\"0.3\" si=\"60001396\" sy=\"Vlillirier\" syi=\"30003836\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"Vlillirier IV - Moon 11 - Wiyrkomi Corporation Factory\" se=\"0.3\" si=\"60001399\" sy=\"Vlillirier\" syi=\"30003836\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"Charmerout IX - Wiyrkomi Corporation Factory\" se=\"0.6\" si=\"60001402\" sy=\"Charmerout\" syi=\"30004976\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"Pemene VI - Moon 10 - Wiyrkomi Corporation Factory\" se=\"0.5\" si=\"60001405\" sy=\"Pemene\" syi=\"30004978\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"Caslemon VI - Moon 4 - Wiyrkomi Corporation Warehouse\" se=\"0.6\" si=\"60001408\" sy=\"Caslemon\" syi=\"30004973\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"Pemene VI - Moon 2 - Wiyrkomi Corporation Factory\" se=\"0.5\" si=\"60001411\" sy=\"Pemene\" syi=\"30004978\"/>\r\n    <row c=\"Heti\" ci=\"20000600\" r=\"Kador\" ri=\"10000052\" s=\"Ansasos IX - Moon 2 - Wiyrkomi Corporation Factory\" se=\"0.4\" si=\"60001414\" sy=\"Ansasos\" syi=\"30004104\"/>\r\n    <row c=\"Heti\" ci=\"20000600\" r=\"Kador\" ri=\"10000052\" s=\"Bordan VII - Moon 11 - Wiyrkomi Corporation Factory\" se=\"0.4\" si=\"60001417\" sy=\"Bordan\" syi=\"30004106\"/>\r\n    <row c=\"Heti\" ci=\"20000600\" r=\"Kador\" ri=\"10000052\" s=\"Ansasos IX - Wiyrkomi Corporation Factory\" se=\"0.4\" si=\"60001420\" sy=\"Ansasos\" syi=\"30004104\"/>\r\n    <row c=\"Heti\" ci=\"20000600\" r=\"Kador\" ri=\"10000052\" s=\"Ansasos VII - Moon 2 - Wiyrkomi Corporation Factory\" se=\"0.4\" si=\"60001423\" sy=\"Ansasos\" syi=\"30004104\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Umokka X - Moon 6 - Top Down Factory\" se=\"0.6\" si=\"60001426\" sy=\"Umokka\" syi=\"30001409\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Airkio VII - Top Down Factory\" se=\"0.9\" si=\"60001429\" sy=\"Airkio\" syi=\"30001404\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Airkio VII - Moon 3 - Top Down Factory\" se=\"0.9\" si=\"60001432\" sy=\"Airkio\" syi=\"30001404\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Paara II - Rapid Assembly Factory\" se=\"0.8\" si=\"60001435\" sy=\"Paara\" syi=\"30002775\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Muvolailen VIII - Rapid Assembly Factory\" se=\"0.7\" si=\"60001438\" sy=\"Muvolailen\" syi=\"30002780\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Paara IV - Rapid Assembly Factory\" se=\"0.8\" si=\"60001441\" sy=\"Paara\" syi=\"30002775\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Saila VII - Moon 11 - Rapid Assembly Factory\" se=\"0.9\" si=\"60001444\" sy=\"Saila\" syi=\"30002816\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Isenairos VI - Moon 13 - Rapid Assembly Warehouse\" se=\"0.8\" si=\"60001447\" sy=\"Isenairos\" syi=\"30002815\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Motsu VIII - Moon 1 - Rapid Assembly Warehouse\" se=\"0.9\" si=\"60001450\" sy=\"Motsu\" syi=\"30002819\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Haatomo VII - Moon 6 - Rapid Assembly Factory\" se=\"0.6\" si=\"60001453\" sy=\"Haatomo\" syi=\"30002800\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Anttiri IV - Moon 1 - Rapid Assembly Factory\" se=\"0.7\" si=\"60001456\" sy=\"Anttiri\" syi=\"30002805\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Isikesu IV - Moon 13 - Rapid Assembly Warehouse\" se=\"0.7\" si=\"60001459\" sy=\"Isikesu\" syi=\"30002804\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isanamo XIV - Moon 19 - Rapid Assembly Factory\" se=\"0.6\" si=\"60001462\" sy=\"Isanamo\" syi=\"30001389\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Piekura VIII - Moon 15 - Rapid Assembly Factory\" se=\"0.5\" si=\"60001465\" sy=\"Piekura\" syi=\"30001391\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isanamo XIV - Moon 21 - Rapid Assembly Factory\" se=\"0.6\" si=\"60001468\" sy=\"Isanamo\" syi=\"30001389\"/>\r\n    <row c=\"Krai Svarog\" ci=\"20000788\" r=\"Pochven\" ri=\"10000070\" s=\"Tunudan VII - Moon 4 - Svarog Clade Semiosis Theater\" se=\"0.0\" si=\"60001471\" sy=\"Tunudan\" syi=\"30002770\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Kubinen VIII - Moon 2 - Rapid Assembly Factory\" se=\"0.4\" si=\"60001474\" sy=\"Kubinen\" syi=\"30002767\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Rairomon VI - Rapid Assembly Factory\" se=\"0.6\" si=\"60001477\" sy=\"Rairomon\" syi=\"30002772\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"Mitsolen IV - Rapid Assembly Factory\" se=\"0.6\" si=\"60001480\" sy=\"Mitsolen\" syi=\"30000120\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"Itamo VII - Moon 3 - Rapid Assembly Factory\" se=\"0.7\" si=\"60001483\" sy=\"Itamo\" syi=\"30000119\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"Itamo VIII - Rapid Assembly Factory\" se=\"0.7\" si=\"60001486\" sy=\"Itamo\" syi=\"30000119\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Iivinen VI - Moon 10 - Rapid Assembly Factory\" se=\"0.7\" si=\"60001489\" sy=\"Iivinen\" syi=\"30002766\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Hatakani VII - Moon 20 - Rapid Assembly Factory\" se=\"0.9\" si=\"60001492\" sy=\"Hatakani\" syi=\"30002764\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Iivinen IV - Moon 8 - Rapid Assembly Factory\" se=\"0.7\" si=\"60001495\" sy=\"Iivinen\" syi=\"30002766\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Vuorrassi IV - Moon 10 - Rapid Assembly Factory\" se=\"0.5\" si=\"60001498\" sy=\"Vuorrassi\" syi=\"30001443\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Oimmo V - Moon 4 - Rapid Assembly Factory\" se=\"0.5\" si=\"60001501\" sy=\"Oimmo\" syi=\"30001444\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Vuorrassi IV - Moon 1 - Rapid Assembly Factory\" se=\"0.5\" si=\"60001504\" sy=\"Vuorrassi\" syi=\"30001443\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Sirppala IV - Moon 4 - Rapid Assembly Factory\" se=\"0.9\" si=\"60001507\" sy=\"Sirppala\" syi=\"30002791\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Irjunen I - Rapid Assembly Warehouse\" se=\"0.5\" si=\"60001510\" sy=\"Irjunen\" syi=\"30002792\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Sirppala II - Moon 3 - Rapid Assembly Factory\" se=\"0.9\" si=\"60001513\" sy=\"Sirppala\" syi=\"30002791\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nonni IV - Rapid Assembly Factory\" se=\"0.5\" si=\"60001516\" sy=\"Nonni\" syi=\"30001401\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nonni V - Rapid Assembly Factory\" se=\"0.5\" si=\"60001519\" sy=\"Nonni\" syi=\"30001401\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Piak III - Moon 2 - Rapid Assembly Warehouse\" se=\"0.7\" si=\"60001522\" sy=\"Piak\" syi=\"30001403\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Anttiri V - Moon 20 - Perkone Factory\" se=\"0.7\" si=\"60001525\" sy=\"Anttiri\" syi=\"30002805\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Juunigaishi VII - Perkone Factory\" se=\"0.6\" si=\"60001528\" sy=\"Juunigaishi\" syi=\"30002803\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Isikesu I - Moon 1 - Perkone Factory\" se=\"0.7\" si=\"60001531\" sy=\"Isikesu\" syi=\"30002804\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Anttiri V - Moon 8 - Perkone Factory\" se=\"0.7\" si=\"60001534\" sy=\"Anttiri\" syi=\"30002805\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"Itamo VI - Moon 7 - Perkone Factory\" se=\"0.7\" si=\"60001537\" sy=\"Itamo\" syi=\"30000119\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"Itamo IV - Moon 1 - Perkone Factory\" se=\"0.7\" si=\"60001540\" sy=\"Itamo\" syi=\"30000119\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"Itamo III - Perkone Factory\" se=\"0.7\" si=\"60001543\" sy=\"Itamo\" syi=\"30000119\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"Itamo VI - Perkone Factory\" se=\"0.7\" si=\"60001546\" sy=\"Itamo\" syi=\"30000119\"/>\r\n    <row c=\"Kainokai\" ci=\"20000207\" r=\"Lonetrek\" ri=\"10000016\" s=\"Kirras VII - Moon 10 - Perkone Factory\" se=\"0.8\" si=\"60001549\" sy=\"Kirras\" syi=\"30001410\"/>\r\n    <row c=\"Kainokai\" ci=\"20000207\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tsukuras VII - Moon 9 - Perkone Factory\" se=\"0.7\" si=\"60001552\" sy=\"Tsukuras\" syi=\"30001412\"/>\r\n    <row c=\"Kainokai\" ci=\"20000207\" r=\"Lonetrek\" ri=\"10000016\" s=\"Ajanen VIII - Moon 2 - Perkone Factory\" se=\"0.6\" si=\"60001555\" sy=\"Ajanen\" syi=\"30001414\"/>\r\n    <row c=\"Kainokai\" ci=\"20000207\" r=\"Lonetrek\" ri=\"10000016\" s=\"Kirras II - Perkone Factory\" se=\"0.8\" si=\"60001558\" sy=\"Kirras\" syi=\"30001410\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Isaziwa XIII - Moon 8 - Perkone Factory\" se=\"0.7\" si=\"60001561\" sy=\"Isaziwa\" syi=\"30002739\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Isaziwa X - Perkone Warehouse\" se=\"0.7\" si=\"60001564\" sy=\"Isaziwa\" syi=\"30002739\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Isaziwa VII - Perkone Factory\" se=\"0.7\" si=\"60001567\" sy=\"Isaziwa\" syi=\"30002739\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Isaziwa III - Perkone Warehouse\" se=\"0.7\" si=\"60001570\" sy=\"Isaziwa\" syi=\"30002739\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isseras VII - Moon 13 - Perkone Factory\" se=\"0.6\" si=\"60001573\" sy=\"Isseras\" syi=\"30001397\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Korama II - Moon 7 - Perkone Warehouse\" se=\"0.8\" si=\"60001576\" sy=\"Korama\" syi=\"30001394\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isseras VII - Moon 6 - Perkone Factory\" se=\"0.6\" si=\"60001579\" sy=\"Isseras\" syi=\"30001397\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Korama IV - Moon 17 - Perkone Warehouse\" se=\"0.8\" si=\"60001582\" sy=\"Korama\" syi=\"30001394\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Vasala V - Moon 3 - Perkone Factory\" se=\"0.5\" si=\"60001585\" sy=\"Vasala\" syi=\"30000190\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Vouskiaho V - Moon 9 - Perkone Factory\" se=\"0.5\" si=\"60001588\" sy=\"Vouskiaho\" syi=\"30000193\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Hentogaira I - Moon 16 - Perkone Factory\" se=\"0.6\" si=\"60001591\" sy=\"Hentogaira\" syi=\"30000188\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Hentogaira II - Perkone Factory\" se=\"0.6\" si=\"60001594\" sy=\"Hentogaira\" syi=\"30000188\"/>\r\n    <row c=\"Ieyama\" ci=\"20000404\" r=\"The Citadel\" ri=\"10000033\" s=\"Usi IV - Moon 9 - Perkone Factory\" se=\"0.5\" si=\"60001597\" sy=\"Usi\" syi=\"30002755\"/>\r\n    <row c=\"Ieyama\" ci=\"20000404\" r=\"The Citadel\" ri=\"10000033\" s=\"Ishomilken VIII - Moon 2 - Perkone Factory\" se=\"0.4\" si=\"60001600\" sy=\"Ishomilken\" syi=\"30002756\"/>\r\n    <row c=\"Ieyama\" ci=\"20000404\" r=\"The Citadel\" ri=\"10000033\" s=\"Ishomilken IX - Moon 14 - Perkone Factory\" se=\"0.4\" si=\"60001603\" sy=\"Ishomilken\" syi=\"30002756\"/>\r\n    <row c=\"Ieyama\" ci=\"20000404\" r=\"The Citadel\" ri=\"10000033\" s=\"Usi IV - Moon 11 - Perkone Factory\" se=\"0.5\" si=\"60001606\" sy=\"Usi\" syi=\"30002755\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Rairomon VIII - Moon 7 - Perkone Warehouse\" se=\"0.6\" si=\"60001609\" sy=\"Rairomon\" syi=\"30002772\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Kulelen V - Moon 12 - Perkone Factory\" se=\"0.5\" si=\"60001612\" sy=\"Kulelen\" syi=\"30002771\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Kulelen VI - Perkone Factory\" se=\"0.5\" si=\"60001615\" sy=\"Kulelen\" syi=\"30002771\"/>\r\n    <row c=\"Krai Svarog\" ci=\"20000788\" r=\"Pochven\" ri=\"10000070\" s=\"Tunudan IX - Svarog Clade Porevitium Vault\" se=\"0.0\" si=\"60001618\" sy=\"Tunudan\" syi=\"30002770\"/>\r\n    <row c=\"Mivora\" ci=\"20000028\" r=\"The Forge\" ri=\"10000002\" s=\"Tasti IX - Moon 10 - Perkone Factory\" se=\"0.3\" si=\"60001621\" sy=\"Tasti\" syi=\"30000195\"/>\r\n    <row c=\"Mivora\" ci=\"20000028\" r=\"The Forge\" ri=\"10000002\" s=\"Uemon VIII - Moon 3 - Perkone Factory\" se=\"0.2\" si=\"60001624\" sy=\"Uemon\" syi=\"30000197\"/>\r\n    <row c=\"Mivora\" ci=\"20000028\" r=\"The Forge\" ri=\"10000002\" s=\"Tasti VI - Moon 16 - Perkone Factory\" se=\"0.3\" si=\"60001627\" sy=\"Tasti\" syi=\"30000195\"/>\r\n    <row c=\"Mivora\" ci=\"20000028\" r=\"The Forge\" ri=\"10000002\" s=\"Tasti VI - Moon 2 - Perkone Factory\" se=\"0.3\" si=\"60001630\" sy=\"Tasti\" syi=\"30000195\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Uoyonen IX - Perkone Warehouse\" se=\"0.7\" si=\"60001633\" sy=\"Uoyonen\" syi=\"30000151\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Hurtoken IV - Moon 7 - Perkone Warehouse\" se=\"0.6\" si=\"60001636\" sy=\"Hurtoken\" syi=\"30000150\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Hurtoken III - Moon 1 - Perkone Warehouse\" se=\"0.6\" si=\"60001639\" sy=\"Hurtoken\" syi=\"30000150\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Saisio VIII - Moon 4 - Perkone Factory\" se=\"0.7\" si=\"60001642\" sy=\"Saisio\" syi=\"30000146\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Abagawa IX - Moon 1 - Caldari Steel Factory\" se=\"0.6\" si=\"60001645\" sy=\"Abagawa\" syi=\"30000147\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Jakanerva II - Moon 4 - Caldari Steel Factory\" se=\"0.7\" si=\"60001648\" sy=\"Jakanerva\" syi=\"30000148\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Jakanerva V - Moon 15 - Caldari Steel Factory\" se=\"0.7\" si=\"60001651\" sy=\"Jakanerva\" syi=\"30000148\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Jakanerva IV - Moon 17 - Caldari Steel Factory\" se=\"0.7\" si=\"60001654\" sy=\"Jakanerva\" syi=\"30000148\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tsuguwa III - Moon 10 - Caldari Steel Factory\" se=\"0.8\" si=\"60001657\" sy=\"Tsuguwa\" syi=\"30001375\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nourvukaiken IV - Moon 2 - Caldari Steel Factory\" se=\"0.8\" si=\"60001660\" sy=\"Nourvukaiken\" syi=\"30001376\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Iidoken VIII - Caldari Steel Factory\" se=\"0.8\" si=\"60001663\" sy=\"Iidoken\" syi=\"30001374\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Sarekuwa III - Moon 6 - Caldari Steel Warehouse\" se=\"0.9\" si=\"60001666\" sy=\"Sarekuwa\" syi=\"30001377\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nannaras VIII - Moon 1 - Caldari Steel Factory\" se=\"0.4\" si=\"60001669\" sy=\"Nannaras\" syi=\"30001438\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tamo VI - Moon 15 - Caldari Steel Factory\" se=\"0.3\" si=\"60001672\" sy=\"Tamo\" syi=\"30001437\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Anin IX - Moon 16 - Caldari Steel Factory\" se=\"0.4\" si=\"60001675\" sy=\"Anin\" syi=\"30001439\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Anin IX - Moon 12 - Caldari Steel Factory\" se=\"0.4\" si=\"60001678\" sy=\"Anin\" syi=\"30001439\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Paara IV - Caldari Steel Factory\" se=\"0.8\" si=\"60001681\" sy=\"Paara\" syi=\"30002775\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Muvolailen XI - Moon 3 - Caldari Steel Factory\" se=\"0.7\" si=\"60001684\" sy=\"Muvolailen\" syi=\"30002780\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Paara II - Caldari Steel Warehouse\" se=\"0.8\" si=\"60001687\" sy=\"Paara\" syi=\"30002775\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Isutaka I - Caldari Steel Warehouse\" se=\"0.8\" si=\"60001690\" sy=\"Isutaka\" syi=\"30002777\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Huttaken I - Moon 1 - Caldari Steel Factory\" se=\"0.6\" si=\"60001693\" sy=\"Huttaken\" syi=\"30002774\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Uedama III - Moon 1 - Caldari Steel Warehouse\" se=\"0.5\" si=\"60001696\" sy=\"Uedama\" syi=\"30002768\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Rairomon VIII - Moon 7 - Caldari Steel Warehouse\" se=\"0.6\" si=\"60001699\" sy=\"Rairomon\" syi=\"30002772\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Kubinen VI - Moon 6 - Caldari Steel Factory\" se=\"0.4\" si=\"60001702\" sy=\"Kubinen\" syi=\"30002767\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"Autaris VII - Moon 2 - Caldari Steel Factory\" se=\"0.5\" si=\"60001705\" sy=\"Autaris\" syi=\"30001384\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"Vaajaita III - Caldari Steel Factory\" se=\"0.5\" si=\"60001708\" sy=\"Vaajaita\" syi=\"30001383\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"Vellaine VI - Moon 8 - Caldari Steel Warehouse\" se=\"0.6\" si=\"60001711\" sy=\"Vellaine\" syi=\"30001380\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"Jan IV - Caldari Steel Warehouse\" se=\"0.4\" si=\"60001714\" sy=\"Jan\" syi=\"30001385\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Veisto V - Caldari Steel Factory\" se=\"0.8\" si=\"60001717\" sy=\"Veisto\" syi=\"30001362\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Veisto V - Moon 15 - Caldari Steel Factory\" se=\"0.8\" si=\"60001720\" sy=\"Veisto\" syi=\"30001362\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Hageken IV - Caldari Steel Factory\" se=\"0.6\" si=\"60001723\" sy=\"Hageken\" syi=\"30001367\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Hageken VII - Moon 5 - Caldari Steel Factory\" se=\"0.6\" si=\"60001726\" sy=\"Hageken\" syi=\"30001367\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"Jotenen II - Caldari Steel Warehouse\" se=\"0.6\" si=\"60001729\" sy=\"Jotenen\" syi=\"30001423\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"Iitanmadan VIII - Moon 1 - Caldari Steel Factory\" se=\"0.3\" si=\"60001732\" sy=\"Iitanmadan\" syi=\"30001422\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"Jotenen IV - Caldari Steel Warehouse\" se=\"0.6\" si=\"60001735\" sy=\"Jotenen\" syi=\"30001423\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"Otalieto VII - Moon 2 - Caldari Steel Warehouse\" se=\"0.5\" si=\"60001738\" sy=\"Otalieto\" syi=\"30001421\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Sirppala II - Caldari Steel Factory\" se=\"0.9\" si=\"60001741\" sy=\"Sirppala\" syi=\"30002791\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Inaro XI - Moon 3 - Caldari Steel Factory\" se=\"0.8\" si=\"60001744\" sy=\"Inaro\" syi=\"30002788\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Irjunen II - Caldari Steel Warehouse\" se=\"0.5\" si=\"60001747\" sy=\"Irjunen\" syi=\"30002792\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Inaro X - Moon 12 - Caldari Steel Factory\" se=\"0.8\" si=\"60001750\" sy=\"Inaro\" syi=\"30002788\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"Kaimon II - Moon 6 - Caldari Steel Factory\" se=\"0.7\" si=\"60001753\" sy=\"Kaimon\" syi=\"30002751\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"Kausaaja IX - Moon 9 - Caldari Steel Factory\" se=\"0.7\" si=\"60001756\" sy=\"Kausaaja\" syi=\"30002749\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"Kaimon III - Moon 18 - Caldari Steel Factory\" se=\"0.7\" si=\"60001759\" sy=\"Kaimon\" syi=\"30002751\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"Aikoro IV - Moon 1 - Caldari Steel Factory\" se=\"0.8\" si=\"60001762\" sy=\"Aikoro\" syi=\"30002753\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isseras IV - Zainou Biotech Production\" se=\"0.6\" si=\"60001765\" sy=\"Isseras\" syi=\"30001397\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Ylandoki II - Zainou Biotech Production\" se=\"0.8\" si=\"60001768\" sy=\"Ylandoki\" syi=\"30001395\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Saila VIII - Moon 16 - Zainou Biotech Production\" se=\"0.9\" si=\"60001771\" sy=\"Saila\" syi=\"30002816\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Isenairos V - Moon 7 - Zainou Biotech Production\" se=\"0.8\" si=\"60001774\" sy=\"Isenairos\" syi=\"30002815\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Aurohunen III - Zainou Biotech Production\" se=\"0.4\" si=\"60001777\" sy=\"Aurohunen\" syi=\"30001361\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Semiki IV - Zainou Biohazard Containment Facility\" se=\"0.6\" si=\"60001780\" sy=\"Semiki\" syi=\"30001359\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Korsiki III - Moon 15 - Zainou Biotech Production\" se=\"0.6\" si=\"60001783\" sy=\"Korsiki\" syi=\"30000181\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Wuos VI - Zainou Biotech Research Center\" se=\"0.6\" si=\"60001786\" sy=\"Wuos\" syi=\"30000187\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Haatomo VII - Moon 7 - Zainou Biotech Production\" se=\"0.6\" si=\"60001789\" sy=\"Haatomo\" syi=\"30002800\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Haatomo VI - Moon 6 - Zainou Biotech Production\" se=\"0.6\" si=\"60001792\" sy=\"Haatomo\" syi=\"30002800\"/>\r\n    <row c=\"Mivora\" ci=\"20000028\" r=\"The Forge\" ri=\"10000002\" s=\"Uemon VIII - Moon 10 - Zainou Biotech Production\" se=\"0.2\" si=\"60001795\" sy=\"Uemon\" syi=\"30000197\"/>\r\n    <row c=\"Mivora\" ci=\"20000028\" r=\"The Forge\" ri=\"10000002\" s=\"Otosela V - Moon 13 - Zainou Biotech Production\" se=\"0.2\" si=\"60001798\" sy=\"Otosela\" syi=\"30000196\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"Maila IV - Zainou Biotech Production\" se=\"0.4\" si=\"60001801\" sy=\"Maila\" syi=\"30000162\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"Maila VI - Moon 1 - Zainou Biotech Production\" se=\"0.4\" si=\"60001804\" sy=\"Maila\" syi=\"30000162\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Hirtamon VII - Moon 5 - Zainou Biotech Production\" se=\"1.0\" si=\"60001807\" sy=\"Hirtamon\" syi=\"30000133\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Hirtamon VII - Moon 6 - Zainou Biotech Production\" se=\"1.0\" si=\"60001810\" sy=\"Hirtamon\" syi=\"30000133\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Piekura VIII - Moon 15 - Zainou Biotech Production\" se=\"0.5\" si=\"60001813\" sy=\"Piekura\" syi=\"30001391\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Pakkonen IV - Moon 11 - Zainou Biotech Research Center\" se=\"0.4\" si=\"60001816\" sy=\"Pakkonen\" syi=\"30001390\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Enderailen IV - Zainou Biotech Production\" se=\"0.4\" si=\"60001819\" sy=\"Enderailen\" syi=\"30002769\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Kulelen V - Moon 8 - Zainou Biotech Production\" se=\"0.5\" si=\"60001822\" sy=\"Kulelen\" syi=\"30002771\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Josameto VIII - Nugoeihuvi Corporation Publisher\" se=\"0.6\" si=\"60001825\" sy=\"Josameto\" syi=\"30000156\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Josameto IV - Moon 1 - Nugoeihuvi Corporation Development Studio\" se=\"0.6\" si=\"60001828\" sy=\"Josameto\" syi=\"30000156\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Poinen IV - Moon 13 - Nugoeihuvi Corporation Development Studio\" se=\"0.6\" si=\"60001831\" sy=\"Poinen\" syi=\"30000153\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Josameto VIII - Moon 1 - Nugoeihuvi Corporation Development Studio\" se=\"0.6\" si=\"60001834\" sy=\"Josameto\" syi=\"30000156\"/>\r\n    <row c=\"Urtfer\" ci=\"20000376\" r=\"Heimatar\" ri=\"10000030\" s=\"Klir VI - Moon 4 - Nugoeihuvi Corporation Development Studio\" se=\"0.8\" si=\"60001837\" sy=\"Klir\" syi=\"30002566\"/>\r\n    <row c=\"Urtfer\" ci=\"20000376\" r=\"Heimatar\" ri=\"10000030\" s=\"Trer VII - Moon 9 - Nugoeihuvi Corporation Development Studio\" se=\"0.7\" si=\"60001840\" sy=\"Trer\" syi=\"30002562\"/>\r\n    <row c=\"Urtfer\" ci=\"20000376\" r=\"Heimatar\" ri=\"10000030\" s=\"Trer VIII - Moon 11 - Nugoeihuvi Corporation Development Studio\" se=\"0.7\" si=\"60001843\" sy=\"Trer\" syi=\"30002562\"/>\r\n    <row c=\"Urtfer\" ci=\"20000376\" r=\"Heimatar\" ri=\"10000030\" s=\"Trer VIII - Moon 7 - Nugoeihuvi Corporation Development Studio\" se=\"0.7\" si=\"60001846\" sy=\"Trer\" syi=\"30002562\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Uphallant III - Moon 4 - Nugoeihuvi Corporation Development Studio\" se=\"0.2\" si=\"60001849\" sy=\"Uphallant\" syi=\"30003799\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Iges VII - Nugoeihuvi Corporation Development Studio\" se=\"0.3\" si=\"60001852\" sy=\"Iges\" syi=\"30003796\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Uphallant IV - Moon 1 - Nugoeihuvi Corporation Development Studio\" se=\"0.2\" si=\"60001855\" sy=\"Uphallant\" syi=\"30003799\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Iges IV - Nugoeihuvi Corporation Development Studio\" se=\"0.3\" si=\"60001858\" sy=\"Iges\" syi=\"30003796\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Eglennaert I - Moon 17 - Nugoeihuvi Corporation Development Studio\" se=\"0.8\" si=\"60001861\" sy=\"Eglennaert\" syi=\"30002660\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Dodixie IX - Moon 9 - Nugoeihuvi Corporation Development Studio\" se=\"0.9\" si=\"60001864\" sy=\"Dodixie\" syi=\"30002659\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Dodixie VIII - Moon 3 - Nugoeihuvi Corporation Development Studio\" se=\"0.9\" si=\"60001867\" sy=\"Dodixie\" syi=\"30002659\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Eglennaert I - Moon 11 - Nugoeihuvi Corporation Development Studio\" se=\"0.8\" si=\"60001870\" sy=\"Eglennaert\" syi=\"30002660\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"Ishisomo IV - Nugoeihuvi Corporation Development Studio\" se=\"0.7\" si=\"60001873\" sy=\"Ishisomo\" syi=\"30000165\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"Ihakana VIII - Moon 6 - Nugoeihuvi Corporation Development Studio\" se=\"0.4\" si=\"60001876\" sy=\"Ihakana\" syi=\"30000169\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"Sakkikainen VI - Moon 1 - Nugoeihuvi Corporation Publisher\" se=\"0.6\" si=\"60001879\" sy=\"Sakkikainen\" syi=\"30000167\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"Friggi VIII - Moon 20 - Nugoeihuvi Corporation Publisher\" se=\"0.5\" si=\"60001882\" sy=\"Friggi\" syi=\"30000168\"/>\r\n    <row c=\"59H-0G\" ci=\"20000487\" r=\"Syndicate\" ri=\"10000041\" s=\"Y-W6GF I - Nugoeihuvi Corporation Development Studio\" se=\"0.0\" si=\"60001885\" sy=\"Y-W6GF\" syi=\"30003342\"/>\r\n    <row c=\"59H-0G\" ci=\"20000487\" r=\"Syndicate\" ri=\"10000041\" s=\"KFR-ZE V - Nugoeihuvi Corporation Publisher\" se=\"0.0\" si=\"60001888\" sy=\"KFR-ZE\" syi=\"30003343\"/>\r\n    <row c=\"59H-0G\" ci=\"20000487\" r=\"Syndicate\" ri=\"10000041\" s=\"Y-W6GF X - Moon 1 - Nugoeihuvi Corporation Development Studio\" se=\"0.0\" si=\"60001891\" sy=\"Y-W6GF\" syi=\"30003342\"/>\r\n    <row c=\"59H-0G\" ci=\"20000487\" r=\"Syndicate\" ri=\"10000041\" s=\"Y-W6GF X - Nugoeihuvi Corporation Development Studio\" se=\"0.0\" si=\"60001894\" sy=\"Y-W6GF\" syi=\"30003342\"/>\r\n    <row c=\"Nasorin\" ci=\"20000252\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Azhgabid III - Moon 5 - Nugoeihuvi Corporation Development Studio\" se=\"0.8\" si=\"60001897\" sy=\"Azhgabid\" syi=\"30001705\"/>\r\n    <row c=\"Nasorin\" ci=\"20000252\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Taru X - Moon 7 - Nugoeihuvi Corporation Development Studio\" se=\"0.8\" si=\"60001900\" sy=\"Taru\" syi=\"30001703\"/>\r\n    <row c=\"Nasorin\" ci=\"20000252\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Taru IX - Moon 17 - Nugoeihuvi Corporation Publisher\" se=\"0.8\" si=\"60001903\" sy=\"Taru\" syi=\"30001703\"/>\r\n    <row c=\"Nasorin\" ci=\"20000252\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Taru VI - Moon 1 - Nugoeihuvi Corporation Development Studio\" se=\"0.8\" si=\"60001906\" sy=\"Taru\" syi=\"30001703\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Kulu X - Moon 9 - Nugoeihuvi Corporation Development Studio\" se=\"0.6\" si=\"60001909\" sy=\"Kulu\" syi=\"30005050\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Kulu IX - Moon 2 - Nugoeihuvi Corporation Development Studio\" se=\"0.6\" si=\"60001912\" sy=\"Kulu\" syi=\"30005050\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Choga II - Moon 1 - Nugoeihuvi Corporation Development Studio\" se=\"0.6\" si=\"60001915\" sy=\"Choga\" syi=\"30005051\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Kulu I - Nugoeihuvi Corporation Development Studio\" se=\"0.6\" si=\"60001918\" sy=\"Kulu\" syi=\"30005050\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Scheenins III - Moon 7 - Nugoeihuvi Corporation Development Studio\" se=\"0.5\" si=\"60001921\" sy=\"Scheenins\" syi=\"30005310\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Scheenins III - Moon 3 - Nugoeihuvi Corporation Development Studio\" se=\"0.5\" si=\"60001924\" sy=\"Scheenins\" syi=\"30005310\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Ellmay IX - Moon 2 - Nugoeihuvi Corporation Development Studio\" se=\"0.9\" si=\"60001927\" sy=\"Ellmay\" syi=\"30005313\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Ansalle V - Moon 2 - Nugoeihuvi Corporation Development Studio\" se=\"0.6\" si=\"60001930\" sy=\"Ansalle\" syi=\"30005309\"/>\r\n    <row c=\"Frar\" ci=\"20000501\" r=\"Metropolis\" ri=\"10000042\" s=\"Tollus VIII - Moon 3 - Nugoeihuvi Corporation Development Studio\" se=\"0.8\" si=\"60001933\" sy=\"Tollus\" syi=\"30003436\"/>\r\n    <row c=\"Frar\" ci=\"20000501\" r=\"Metropolis\" ri=\"10000042\" s=\"Tollus X - Moon 5 - Nugoeihuvi Corporation Development Studio\" se=\"0.8\" si=\"60001936\" sy=\"Tollus\" syi=\"30003436\"/>\r\n    <row c=\"Frar\" ci=\"20000501\" r=\"Metropolis\" ri=\"10000042\" s=\"Polstodur VI - Nugoeihuvi Corporation Development Studio\" se=\"0.8\" si=\"60001939\" sy=\"Polstodur\" syi=\"30003434\"/>\r\n    <row c=\"Frar\" ci=\"20000501\" r=\"Metropolis\" ri=\"10000042\" s=\"Tollus VIII - Nugoeihuvi Corporation Publisher\" se=\"0.8\" si=\"60001942\" sy=\"Tollus\" syi=\"30003436\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Claulenne IV - Moon 14 - Nugoeihuvi Corporation Publisher\" se=\"0.7\" si=\"60001945\" sy=\"Claulenne\" syi=\"30005324\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Reblier VIII - Moon 10 - Nugoeihuvi Corporation Development Studio\" se=\"0.4\" si=\"60001948\" sy=\"Reblier\" syi=\"30005328\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Scolluzer XI - Moon 4 - Nugoeihuvi Corporation Development Studio\" se=\"0.8\" si=\"60001951\" sy=\"Scolluzer\" syi=\"30005322\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Scolluzer VIII - Moon 10 - Nugoeihuvi Corporation Publisher\" se=\"0.8\" si=\"60001954\" sy=\"Scolluzer\" syi=\"30005322\"/>\r\n    <row c=\"Comadu\" ci=\"20000743\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Keproh VI - Moon 5 - Nugoeihuvi Corporation Publisher\" se=\"0.5\" si=\"60001957\" sy=\"Keproh\" syi=\"30005078\"/>\r\n    <row c=\"Comadu\" ci=\"20000743\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Rannoze V - Moon 16 - Nugoeihuvi Corporation Development Studio\" se=\"0.4\" si=\"60001960\" sy=\"Rannoze\" syi=\"30005080\"/>\r\n    <row c=\"Comadu\" ci=\"20000743\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Keproh VIII - Moon 4 - Nugoeihuvi Corporation Development Studio\" se=\"0.5\" si=\"60001963\" sy=\"Keproh\" syi=\"30005078\"/>\r\n    <row c=\"Comadu\" ci=\"20000743\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Shokal VIII - Nugoeihuvi Corporation Development Studio\" se=\"0.5\" si=\"60001966\" sy=\"Shokal\" syi=\"30005076\"/>\r\n    <row c=\"Orus\" ci=\"20000742\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Gademam VI - Moon 5 - Nugoeihuvi Corporation Development Studio\" se=\"0.4\" si=\"60001969\" sy=\"Gademam\" syi=\"30005072\"/>\r\n    <row c=\"Orus\" ci=\"20000742\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Tadadan V - Moon 1 - Nugoeihuvi Corporation Development Studio\" se=\"0.5\" si=\"60001972\" sy=\"Tadadan\" syi=\"30005070\"/>\r\n    <row c=\"Orus\" ci=\"20000742\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nahol VII - Moon 8 - Nugoeihuvi Corporation Development Studio\" se=\"0.6\" si=\"60001975\" sy=\"Nahol\" syi=\"30005069\"/>\r\n    <row c=\"Orus\" ci=\"20000742\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Tadadan VI - Nugoeihuvi Corporation Development Studio\" se=\"0.5\" si=\"60001978\" sy=\"Tadadan\" syi=\"30005070\"/>\r\n    <row c=\"Eustron\" ci=\"20000735\" r=\"Essence\" ri=\"10000064\" s=\"Cat VI - Moon 12 - Nugoeihuvi Corporation Development Studio\" se=\"0.7\" si=\"60001981\" sy=\"Cat\" syi=\"30005026\"/>\r\n    <row c=\"Eustron\" ci=\"20000735\" r=\"Essence\" ri=\"10000064\" s=\"Derririntel V - Moon 15 - Nugoeihuvi Corporation Publisher\" se=\"0.8\" si=\"60001984\" sy=\"Derririntel\" syi=\"30005025\"/>\r\n    <row c=\"Eustron\" ci=\"20000735\" r=\"Essence\" ri=\"10000064\" s=\"Cat VII - Moon 3 - Nugoeihuvi Corporation Development Studio\" se=\"0.7\" si=\"60001987\" sy=\"Cat\" syi=\"30005026\"/>\r\n    <row c=\"Eustron\" ci=\"20000735\" r=\"Essence\" ri=\"10000064\" s=\"Cat VI - Moon 4 - Nugoeihuvi Corporation Development Studio\" se=\"0.7\" si=\"60001990\" sy=\"Cat\" syi=\"30005026\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"Arifsdald III - Moon 10 - Nugoeihuvi Corporation Development Studio\" se=\"0.1\" si=\"60001993\" sy=\"Arifsdald\" syi=\"30002080\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"Hakisalki VIII - Moon 1 - Nugoeihuvi Corporation Development Studio\" se=\"0.2\" si=\"60001996\" sy=\"Hakisalki\" syi=\"30002077\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"Hakisalki VIII - Moon 14 - Nugoeihuvi Corporation Development Studio\" se=\"0.2\" si=\"60001999\" sy=\"Hakisalki\" syi=\"30002077\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"Krirald IX - Moon 1 - Perun Clade Semiosis Theater\" se=\"0.0\" si=\"60002002\" sy=\"Krirald\" syi=\"30002079\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Passari VI - Echelon Entertainment Development Studio\" se=\"0.4\" si=\"60002005\" sy=\"Passari\" syi=\"30001402\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Aunenen II - Echelon Entertainment Development Studio\" se=\"0.4\" si=\"60002008\" sy=\"Aunenen\" syi=\"30001398\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Uosusuokko III - Moon 1 - Echelon Entertainment Publisher\" se=\"0.7\" si=\"60002011\" sy=\"Uosusuokko\" syi=\"30001366\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isikemi IV - Moon 2 - Echelon Entertainment Development Studio\" se=\"0.8\" si=\"60002014\" sy=\"Isikemi\" syi=\"30001365\"/>\r\n    <row c=\"Kainokai\" ci=\"20000207\" r=\"Lonetrek\" ri=\"10000016\" s=\"Autama V - Moon 5 - Echelon Entertainment Development Studio\" se=\"0.8\" si=\"60002017\" sy=\"Autama\" syi=\"30001411\"/>\r\n    <row c=\"Kainokai\" ci=\"20000207\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tsukuras II - Echelon Entertainment Development Studio\" se=\"0.7\" si=\"60002020\" sy=\"Tsukuras\" syi=\"30001412\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"Alikara VI - Moon 14 - Echelon Entertainment Development Studio\" se=\"0.7\" si=\"60002023\" sy=\"Alikara\" syi=\"30002754\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"Kaimon II - Moon 6 - Echelon Entertainment Development Studio\" se=\"0.7\" si=\"60002026\" sy=\"Kaimon\" syi=\"30002751\"/>\r\n    <row c=\"Ieyama\" ci=\"20000404\" r=\"The Citadel\" ri=\"10000033\" s=\"Usi VI - Moon 21 - Echelon Entertainment Publisher\" se=\"0.5\" si=\"60002029\" sy=\"Usi\" syi=\"30002755\"/>\r\n    <row c=\"Ieyama\" ci=\"20000404\" r=\"The Citadel\" ri=\"10000033\" s=\"Usi IV - Moon 13 - Echelon Entertainment Development Studio\" se=\"0.5\" si=\"60002032\" sy=\"Usi\" syi=\"30002755\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"Autaris VIII - Moon 12 - Echelon Entertainment Development Studio\" se=\"0.5\" si=\"60002035\" sy=\"Autaris\" syi=\"30001384\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"Vellaine V - Moon 4 - Echelon Entertainment Development Studio\" se=\"0.6\" si=\"60002038\" sy=\"Vellaine\" syi=\"30001380\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Isenairos VI - Moon 7 - Echelon Entertainment Development Studio\" se=\"0.8\" si=\"60002041\" sy=\"Isenairos\" syi=\"30002815\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Saila VII - Moon 15 - Echelon Entertainment Development Studio\" se=\"0.9\" si=\"60002044\" sy=\"Saila\" syi=\"30002816\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Hirtamon VII - Moon 2 - Echelon Entertainment Development Studio\" se=\"1.0\" si=\"60002047\" sy=\"Hirtamon\" syi=\"30000133\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Hirtamon IV - Moon 1 - Echelon Entertainment Development Studio\" se=\"1.0\" si=\"60002050\" sy=\"Hirtamon\" syi=\"30000133\"/>\r\n    <row c=\"Malariya\" ci=\"20000210\" r=\"Lonetrek\" ri=\"10000016\" s=\"Endatoh V - Echelon Entertainment Development Studio\" se=\"0.6\" si=\"60002053\" sy=\"Endatoh\" syi=\"30001430\"/>\r\n    <row c=\"Malariya\" ci=\"20000210\" r=\"Lonetrek\" ri=\"10000016\" s=\"Uesuro II - Echelon Entertainment Development Studio\" se=\"0.5\" si=\"60002056\" sy=\"Uesuro\" syi=\"30001432\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Jakanerva V - Moon 1 - Echelon Entertainment Development Studio\" se=\"0.7\" si=\"60002059\" sy=\"Jakanerva\" syi=\"30000148\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Jakanerva V - Moon 10 - Echelon Entertainment Development Studio\" se=\"0.7\" si=\"60002062\" sy=\"Jakanerva\" syi=\"30000148\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Malkalen V - Moon 1 - Ishukone Corporation Factory\" se=\"0.9\" si=\"60002065\" sy=\"Malkalen\" syi=\"30001393\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Korama III - Moon 10 - Ishukone Corporation Factory\" se=\"0.8\" si=\"60002068\" sy=\"Korama\" syi=\"30001394\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Korama V - Moon 20 - Ishukone Corporation Factory\" se=\"0.8\" si=\"60002071\" sy=\"Korama\" syi=\"30001394\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Korama III - Moon 8 - Ishukone Corporation Factory\" se=\"0.8\" si=\"60002074\" sy=\"Korama\" syi=\"30001394\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Iro IX - Moon 6 - Ishukone Corporation Warehouse\" se=\"0.6\" si=\"60002077\" sy=\"Iro\" syi=\"30001696\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Gaknem IV - Moon 5 - Ishukone Corporation Factory\" se=\"0.6\" si=\"60002080\" sy=\"Gaknem\" syi=\"30001698\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Nehkiah IV - Moon 12 - Ishukone Corporation Factory\" se=\"0.6\" si=\"60002083\" sy=\"Nehkiah\" syi=\"30001695\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Iro XI - Moon 11 - Ishukone Corporation Factory\" se=\"0.6\" si=\"60002086\" sy=\"Iro\" syi=\"30001696\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Inghenges VI - Moon 13 - Ishukone Corporation Factory\" se=\"0.7\" si=\"60002089\" sy=\"Inghenges\" syi=\"30002672\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Inghenges V - Moon 2 - Ishukone Corporation Factory\" se=\"0.7\" si=\"60002092\" sy=\"Inghenges\" syi=\"30002672\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Dunraelare II - Ishukone Corporation Warehouse\" se=\"0.7\" si=\"60002095\" sy=\"Dunraelare\" syi=\"30002670\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Inghenges V - Moon 13 - Ishukone Corporation Factory\" se=\"0.7\" si=\"60002098\" sy=\"Inghenges\" syi=\"30002672\"/>\r\n    <row c=\"JQV5-9\" ci=\"20000491\" r=\"Syndicate\" ri=\"10000041\" s=\"S-U8A4 VI - Moon 1 - Ishukone Corporation Factory\" se=\"0.0\" si=\"60002101\" sy=\"S-U8A4\" syi=\"30003368\"/>\r\n    <row c=\"JQV5-9\" ci=\"20000491\" r=\"Syndicate\" ri=\"10000041\" s=\"S-U8A4 V - Moon 1 - Ishukone Corporation Factory\" se=\"0.0\" si=\"60002104\" sy=\"S-U8A4\" syi=\"30003368\"/>\r\n    <row c=\"JQV5-9\" ci=\"20000491\" r=\"Syndicate\" ri=\"10000041\" s=\"CY-ZLP IX - Moon 1 - Ishukone Corporation Factory\" se=\"0.0\" si=\"60002107\" sy=\"CY-ZLP\" syi=\"30003371\"/>\r\n    <row c=\"JQV5-9\" ci=\"20000491\" r=\"Syndicate\" ri=\"10000041\" s=\"98Q-8O V - Moon 4 - Ishukone Corporation Factory\" se=\"0.0\" si=\"60002110\" sy=\"98Q-8O\" syi=\"30003373\"/>\r\n    <row c=\"Kashag\" ci=\"20000508\" r=\"Domain\" ri=\"10000043\" s=\"Kheram V - Moon 6 - Ishukone Corporation Factory\" se=\"0.4\" si=\"60002113\" sy=\"Kheram\" syi=\"30003486\"/>\r\n    <row c=\"Kashag\" ci=\"20000508\" r=\"Domain\" ri=\"10000043\" s=\"Mista V - Moon 4 - Ishukone Corporation Factory\" se=\"0.5\" si=\"60002116\" sy=\"Mista\" syi=\"30003482\"/>\r\n    <row c=\"Kashag\" ci=\"20000508\" r=\"Domain\" ri=\"10000043\" s=\"Kheram III - Moon 6 - Ishukone Corporation Factory\" se=\"0.4\" si=\"60002119\" sy=\"Kheram\" syi=\"30003486\"/>\r\n    <row c=\"Kashag\" ci=\"20000508\" r=\"Domain\" ri=\"10000043\" s=\"Andabiar I - Ishukone Corporation Factory\" se=\"0.6\" si=\"60002122\" sy=\"Andabiar\" syi=\"30003485\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"Frerstorn III - Ishukone Corporation Factory\" se=\"0.3\" si=\"60002125\" sy=\"Frerstorn\" syi=\"30002090\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"Gebuladi IX - Moon 9 - Ishukone Corporation Factory\" se=\"0.3\" si=\"60002128\" sy=\"Gebuladi\" syi=\"30002093\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"Eszur IV - Ishukone Corporation Factory\" se=\"0.2\" si=\"60002131\" sy=\"Eszur\" syi=\"30002095\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"Frerstorn VII - Moon 1 - Ishukone Corporation Factory\" se=\"0.3\" si=\"60002134\" sy=\"Frerstorn\" syi=\"30002090\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"Altrinur XII - Moon 15 - Ishukone Corporation Factory\" se=\"0.8\" si=\"60002137\" sy=\"Altrinur\" syi=\"30003389\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"Altrinur XIII - Moon 3 - Ishukone Corporation Factory\" se=\"0.8\" si=\"60002140\" sy=\"Altrinur\" syi=\"30003389\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"Vilur VI - Moon 2 - Ishukone Corporation Factory\" se=\"0.8\" si=\"60002143\" sy=\"Vilur\" syi=\"30003390\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"Eygfe VII - Moon 9 - Ishukone Corporation Factory\" se=\"0.7\" si=\"60002146\" sy=\"Eygfe\" syi=\"30003392\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Aunsou I - Ishukone Corporation Factory\" se=\"0.2\" si=\"60002149\" sy=\"Aunsou\" syi=\"30003801\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Alperaute VII - Moon 4 - Ishukone Corporation Factory\" se=\"0.2\" si=\"60002152\" sy=\"Alperaute\" syi=\"30003800\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Gare V - Moon 10 - Ishukone Corporation Factory\" se=\"0.1\" si=\"60002155\" sy=\"Gare\" syi=\"30003805\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Aunsou III - Moon 4 - Ishukone Corporation Factory\" se=\"0.2\" si=\"60002158\" sy=\"Aunsou\" syi=\"30003801\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Hakonen VII - Moon 7 - Ishukone Corporation Factory\" se=\"0.3\" si=\"60002161\" sy=\"Hakonen\" syi=\"30001448\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Vuorrassi V - Moon 13 - Ishukone Corporation Factory\" se=\"0.5\" si=\"60002164\" sy=\"Vuorrassi\" syi=\"30001443\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Oimmo VII - Moon 10 - Ishukone Corporation Factory\" se=\"0.5\" si=\"60002167\" sy=\"Oimmo\" syi=\"30001444\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Vuorrassi V - Moon 6 - Ishukone Corporation Factory\" se=\"0.5\" si=\"60002170\" sy=\"Vuorrassi\" syi=\"30001443\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Penirgman V - Moon 3 - Ishukone Corporation Factory\" se=\"0.9\" si=\"60002173\" sy=\"Penirgman\" syi=\"30003488\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Penirgman VII - Ishukone Corporation Factory\" se=\"0.9\" si=\"60002176\" sy=\"Penirgman\" syi=\"30003488\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Penirgman IX - Moon 11 - Ishukone Corporation Factory\" se=\"0.9\" si=\"60002179\" sy=\"Penirgman\" syi=\"30003488\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Penirgman IX - Moon 2 - Ishukone Corporation Factory\" se=\"0.9\" si=\"60002182\" sy=\"Penirgman\" syi=\"30003488\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Baviasi IX - Moon 2 - Ishukone Corporation Factory\" se=\"0.8\" si=\"60002185\" sy=\"Baviasi\" syi=\"30001670\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Baviasi XI - Ishukone Corporation Factory\" se=\"0.8\" si=\"60002188\" sy=\"Baviasi\" syi=\"30001670\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Baviasi X - Ishukone Corporation Factory\" se=\"0.8\" si=\"60002191\" sy=\"Baviasi\" syi=\"30001670\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Shesha V - Ishukone Corporation Factory\" se=\"0.9\" si=\"60002194\" sy=\"Shesha\" syi=\"30001673\"/>\r\n    <row c=\"Sasen\" ci=\"20000448\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Kuomi VIII - Moon 22 - Ishukone Corporation Factory\" se=\"0.6\" si=\"60002197\" sy=\"Kuomi\" syi=\"30003066\"/>\r\n    <row c=\"Sasen\" ci=\"20000448\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Kourmonen V - Ishukone Corporation Factory\" se=\"0.4\" si=\"60002200\" sy=\"Kourmonen\" syi=\"30003068\"/>\r\n    <row c=\"Sasen\" ci=\"20000448\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Huola X - Moon 2 - Ishukone Corporation Factory\" se=\"0.4\" si=\"60002203\" sy=\"Huola\" syi=\"30003067\"/>\r\n    <row c=\"Sasen\" ci=\"20000448\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Kourmonen IV - Moon 18 - Ishukone Corporation Factory\" se=\"0.4\" si=\"60002206\" sy=\"Kourmonen\" syi=\"30003068\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Kor-Azor Prime V - Moon 1 - Ishukone Corporation Factory\" se=\"0.9\" si=\"60002209\" sy=\"Kor-Azor Prime\" syi=\"30005038\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Kor-Azor Prime IV (Eclipticum) - Moon Griklaeum - Ishukone Corporation Factory\" se=\"0.9\" si=\"60002212\" sy=\"Kor-Azor Prime\" syi=\"30005038\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Mora VI - Moon 4 - Ishukone Corporation Factory\" se=\"0.9\" si=\"60002215\" sy=\"Mora\" syi=\"30005037\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Masanuh V - Moon 8 - Ishukone Corporation Factory\" se=\"0.7\" si=\"60002218\" sy=\"Masanuh\" syi=\"30005041\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"Haine V - Moon 11 - Ishukone Corporation Factory\" se=\"0.4\" si=\"60002221\" sy=\"Haine\" syi=\"30005012\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"Atlulle VII - Moon 1 - Ishukone Corporation Factory\" se=\"0.4\" si=\"60002224\" sy=\"Atlulle\" syi=\"30005010\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"Allebin VII - Moon 7 - Ishukone Corporation Factory\" se=\"0.5\" si=\"60002227\" sy=\"Allebin\" syi=\"30005009\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"Allebin IX - Moon 4 - Ishukone Corporation Factory\" se=\"0.5\" si=\"60002230\" sy=\"Allebin\" syi=\"30005009\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Vasala V - Moon 15 - Ishukone Corporation Factory\" se=\"0.5\" si=\"60002233\" sy=\"Vasala\" syi=\"30000190\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Hentogaira I - Moon 10 - Ishukone Corporation Warehouse\" se=\"0.6\" si=\"60002236\" sy=\"Hentogaira\" syi=\"30000188\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Otsela VI - Moon 13 - Ishukone Corporation Factory\" se=\"0.4\" si=\"60002239\" sy=\"Otsela\" syi=\"30000194\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"Otanuomi IV - Moon 4 - Perun Clade Proving Complex\" se=\"0.0\" si=\"60002242\" sy=\"Otanuomi\" syi=\"30000192\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Airkio VII - Moon 3 - Lai Dai Corporation Factory\" se=\"0.9\" si=\"60002245\" sy=\"Airkio\" syi=\"30001404\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Kakakela VI - Moon 5 - Lai Dai Corporation Factory\" se=\"1.0\" si=\"60002248\" sy=\"Kakakela\" syi=\"30001405\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Kamokor V - Moon 19 - Lai Dai Corporation Factory\" se=\"0.7\" si=\"60002251\" sy=\"Kamokor\" syi=\"30001406\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Kamokor V - Moon 4 - Lai Dai Corporation Factory\" se=\"0.7\" si=\"60002254\" sy=\"Kamokor\" syi=\"30001406\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Irjunen VII - Moon 2 - Lai Dai Corporation Factory\" se=\"0.5\" si=\"60002257\" sy=\"Irjunen\" syi=\"30002792\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Waskisen VII - Moon 7 - Lai Dai Corporation Factory\" se=\"0.7\" si=\"60002260\" sy=\"Waskisen\" syi=\"30002790\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Inaro VII - Moon 4 - Lai Dai Corporation Factory\" se=\"0.8\" si=\"60002263\" sy=\"Inaro\" syi=\"30002788\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Inaro X - Moon 4 - Lai Dai Corporation Factory\" se=\"0.8\" si=\"60002266\" sy=\"Inaro\" syi=\"30002788\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"Akkilen V - Moon 3 - Lai Dai Corporation Factory\" se=\"0.7\" si=\"60002269\" sy=\"Akkilen\" syi=\"30000178\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"Keikaken V - Moon 1 - Lai Dai Corporation Warehouse\" se=\"0.7\" si=\"60002272\" sy=\"Keikaken\" syi=\"30000176\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"Silen III - Moon 9 - Lai Dai Corporation Research Center\" se=\"0.5\" si=\"60002275\" sy=\"Silen\" syi=\"30000179\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"Soshin VII - Moon 1 - Lai Dai Corporation Factory\" se=\"0.6\" si=\"60002278\" sy=\"Soshin\" syi=\"30000175\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"Friggi VII - Moon 12 - Lai Dai Corporation Factory\" se=\"0.5\" si=\"60002281\" sy=\"Friggi\" syi=\"30000168\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"Sakkikainen VI - Moon 1 - Lai Dai Corporation Factory\" se=\"0.6\" si=\"60002284\" sy=\"Sakkikainen\" syi=\"30000167\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"Friggi VIII - Moon 22 - Lai Dai Corporation Factory\" se=\"0.5\" si=\"60002287\" sy=\"Friggi\" syi=\"30000168\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"Otitoh IV - Moon 1 - Lai Dai Corporation Factory\" se=\"0.5\" si=\"60002290\" sy=\"Otitoh\" syi=\"30000171\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"Konola V - Moon 12 - Perun Clade Extractive Terminus\" se=\"0.0\" si=\"60002293\" sy=\"Konola\" syi=\"30002737\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Inoue IV - Moon 4 - Lai Dai Corporation Warehouse\" se=\"0.6\" si=\"60002296\" sy=\"Inoue\" syi=\"30002738\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Isaziwa X - Moon 3 - Lai Dai Corporation Factory\" se=\"0.7\" si=\"60002299\" sy=\"Isaziwa\" syi=\"30002739\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Horkkisen I - Lai Dai Corporation Research Center\" se=\"0.4\" si=\"60002302\" sy=\"Horkkisen\" syi=\"30002741\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Elonaya X - Moon 4 - Lai Dai Corporation Factory\" se=\"0.7\" si=\"60002305\" sy=\"Elonaya\" syi=\"30001399\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nonni I - Lai Dai Corporation Factory\" se=\"0.5\" si=\"60002308\" sy=\"Nonni\" syi=\"30001401\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nonni V - Lai Dai Corporation Factory\" se=\"0.5\" si=\"60002311\" sy=\"Nonni\" syi=\"30001401\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Passari V - Moon 8 - Lai Dai Corporation Factory\" se=\"0.4\" si=\"60002314\" sy=\"Passari\" syi=\"30001402\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Haajinen XI - Lai Dai Corporation Factory\" se=\"0.8\" si=\"60002317\" sy=\"Haajinen\" syi=\"30001424\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Oipo II - Moon 21 - Lai Dai Corporation Factory\" se=\"0.8\" si=\"60002320\" sy=\"Oipo\" syi=\"30001425\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Haajinen XI - Moon 9 - Lai Dai Corporation Warehouse\" se=\"0.8\" si=\"60002323\" sy=\"Haajinen\" syi=\"30001424\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Torrinos V - Moon 5 - Lai Dai Corporation Factory\" se=\"0.5\" si=\"60002326\" sy=\"Torrinos\" syi=\"30001429\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Kulelen V - Moon 16 - Lai Dai Corporation Factory\" se=\"0.5\" si=\"60002329\" sy=\"Kulelen\" syi=\"30002771\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Uedama VII - Lai Dai Corporation Factory\" se=\"0.5\" si=\"60002332\" sy=\"Uedama\" syi=\"30002768\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Hogimo VI - Moon 17 - Lai Dai Corporation Research Center\" se=\"0.6\" si=\"60002335\" sy=\"Hogimo\" syi=\"30002773\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Kubinen VI - Moon 2 - Lai Dai Corporation Factory\" se=\"0.4\" si=\"60002338\" sy=\"Kubinen\" syi=\"30002767\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tamo V - Moon 5 - Lai Dai Corporation Factory\" se=\"0.3\" si=\"60002341\" sy=\"Tamo\" syi=\"30001437\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tamo VIII - Moon 2 - Lai Dai Corporation Factory\" se=\"0.3\" si=\"60002344\" sy=\"Tamo\" syi=\"30001437\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tamo V - Moon 9 - Lai Dai Corporation Factory\" se=\"0.3\" si=\"60002347\" sy=\"Tamo\" syi=\"30001437\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nannaras VII - Moon 1 - Lai Dai Corporation Factory\" se=\"0.4\" si=\"60002350\" sy=\"Nannaras\" syi=\"30001438\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Korsiki III - Moon 5 - Lai Dai Corporation Factory\" se=\"0.6\" si=\"60002353\" sy=\"Korsiki\" syi=\"30000181\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Nuken VIII - Moon 7 - Lai Dai Corporation Research Center\" se=\"0.8\" si=\"60002356\" sy=\"Nuken\" syi=\"30000183\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Osmon VI - Moon 6 - Lai Dai Corporation Factory\" se=\"0.7\" si=\"60002359\" sy=\"Osmon\" syi=\"30000180\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Airaken IV - Moon 1 - Lai Dai Corporation Warehouse\" se=\"0.5\" si=\"60002362\" sy=\"Airaken\" syi=\"30000185\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Aunenen VI - Moon 5 - Zero-G Research Firm Factory\" se=\"0.4\" si=\"60002365\" sy=\"Aunenen\" syi=\"30001398\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Ossa VII - Moon 7 - Propel Dynamics Factory\" se=\"0.5\" si=\"60002368\" sy=\"Ossa\" syi=\"30001358\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Aurohunen V - Moon 10 - Propel Dynamics Factory\" se=\"0.4\" si=\"60002371\" sy=\"Aurohunen\" syi=\"30001361\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Eruka II - Propel Dynamics Warehouse\" se=\"0.4\" si=\"60002374\" sy=\"Eruka\" syi=\"30000203\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Mastakomon VI - Propel Dynamics Factory\" se=\"0.5\" si=\"60002377\" sy=\"Mastakomon\" syi=\"30000202\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"Saikanen III - Propel Dynamics Warehouse\" se=\"0.9\" si=\"60002380\" sy=\"Saikanen\" syi=\"30002745\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"Auviken VII - Moon 18 - Propel Dynamics Factory\" se=\"0.8\" si=\"60002383\" sy=\"Auviken\" syi=\"30002744\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Saatuban VI - Moon 2 - Propel Dynamics Warehouse\" se=\"0.5\" si=\"60002386\" sy=\"Saatuban\" syi=\"30001386\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Saatuban III - Propel Dynamics Warehouse\" se=\"0.5\" si=\"60002389\" sy=\"Saatuban\" syi=\"30001386\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isseras VI - Moon 6 - Propel Dynamics Factory\" se=\"0.6\" si=\"60002392\" sy=\"Isseras\" syi=\"30001397\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isseras VII - Propel Dynamics Warehouse\" se=\"0.6\" si=\"60002395\" sy=\"Isseras\" syi=\"30001397\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tamo VI - Moon 18 - Propel Dynamics Factory\" se=\"0.3\" si=\"60002398\" sy=\"Tamo\" syi=\"30001437\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tamo VI - Moon 12 - Propel Dynamics Warehouse\" se=\"0.3\" si=\"60002401\" sy=\"Tamo\" syi=\"30001437\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"Akonoinen IV - Moon 1 - Propel Dynamics Factory\" se=\"0.5\" si=\"60002404\" sy=\"Akonoinen\" syi=\"30001382\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"Vellaine VI - Moon 9 - Propel Dynamics Factory\" se=\"0.6\" si=\"60002407\" sy=\"Vellaine\" syi=\"30001380\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Suroken VIII - Moon 7 - Propel Dynamics Factory\" se=\"0.7\" si=\"60002410\" sy=\"Suroken\" syi=\"30002801\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Haatomo III - Moon 1 - Propel Dynamics Factory\" se=\"0.6\" si=\"60002413\" sy=\"Haatomo\" syi=\"30002800\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Veisto V - Moon 4 - Propel Dynamics Factory\" se=\"0.8\" si=\"60002416\" sy=\"Veisto\" syi=\"30001362\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Sobaseki X - Moon 12 - Propel Dynamics Factory\" se=\"0.8\" si=\"60002419\" sy=\"Sobaseki\" syi=\"30001363\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"Ishisomo VII - Moon 14 - Propel Dynamics Factory\" se=\"0.7\" si=\"60002422\" sy=\"Ishisomo\" syi=\"30000165\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"Ishisomo VIII - Propel Dynamics Factory\" se=\"0.7\" si=\"60002425\" sy=\"Ishisomo\" syi=\"30000165\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Liekuri VII - Moon 22 - Expert Distribution Warehouse\" se=\"0.6\" si=\"60002428\" sy=\"Liekuri\" syi=\"30000154\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Josameto III - Expert Distribution Retail Center\" se=\"0.6\" si=\"60002431\" sy=\"Josameto\" syi=\"30000156\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"Otela IV - Moon 9 - Perun Clade Mutaplasmid Farm\" se=\"0.0\" si=\"60002434\" sy=\"Otela\" syi=\"30000157\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Poinen IV - Moon 6 - Expert Distribution Retail Center\" se=\"0.6\" si=\"60002437\" sy=\"Poinen\" syi=\"30000153\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Poinen II - Moon 3 - Expert Distribution Retail Center\" se=\"0.6\" si=\"60002440\" sy=\"Poinen\" syi=\"30000153\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Olo II - Expert Distribution Retail Center\" se=\"0.7\" si=\"60002443\" sy=\"Olo\" syi=\"30000158\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Sinid VI - Moon 12 - Expert Distribution Warehouse\" se=\"0.7\" si=\"60002446\" sy=\"Sinid\" syi=\"30001729\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Tew IX - Moon 14 - Expert Distribution Retail Center\" se=\"0.9\" si=\"60002449\" sy=\"Tew\" syi=\"30001733\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Sinid VI - Moon 9 - Expert Distribution Warehouse\" se=\"0.7\" si=\"60002452\" sy=\"Sinid\" syi=\"30001729\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Alra VIII - Moon 8 - Expert Distribution Retail Center\" se=\"0.8\" si=\"60002455\" sy=\"Alra\" syi=\"30001730\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Zith VIII - Moon 2 - Expert Distribution Retail Center\" se=\"0.9\" si=\"60002458\" sy=\"Zith\" syi=\"30001732\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Zith IX - Moon 4 - Expert Distribution Retail Center\" se=\"0.9\" si=\"60002461\" sy=\"Zith\" syi=\"30001732\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Pucherie IV - Moon 1 - Expert Distribution Warehouse\" se=\"0.8\" si=\"60002464\" sy=\"Pucherie\" syi=\"30002733\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Caretyn VI - Moon 3 - Expert Distribution Warehouse\" se=\"0.8\" si=\"60002467\" sy=\"Caretyn\" syi=\"30002735\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Pucherie VI - Moon 8 - Expert Distribution Warehouse\" se=\"0.8\" si=\"60002470\" sy=\"Pucherie\" syi=\"30002733\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Pucherie V - Moon 2 - Expert Distribution Warehouse\" se=\"0.8\" si=\"60002473\" sy=\"Pucherie\" syi=\"30002733\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Vittenyn IV - Moon 6 - Expert Distribution Warehouse\" se=\"0.9\" si=\"60002476\" sy=\"Vittenyn\" syi=\"30002731\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Mirilene VII - Moon 3 - Expert Distribution Warehouse\" se=\"0.8\" si=\"60002479\" sy=\"Mirilene\" syi=\"30002732\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hilaban III - Moon 1 - Expert Distribution Warehouse\" se=\"0.9\" si=\"60002482\" sy=\"Hilaban\" syi=\"30001674\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Tash-Murkon Prime III - Moon 1 - Expert Distribution Retail Center\" se=\"0.8\" si=\"60002485\" sy=\"Tash-Murkon Prime\" syi=\"30001671\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hilaban IV - Moon 19 - Expert Distribution Retail Center\" se=\"0.9\" si=\"60002488\" sy=\"Hilaban\" syi=\"30001674\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Tash-Murkon Prime V - Moon 7 - Expert Distribution Retail Center\" se=\"0.8\" si=\"60002491\" sy=\"Tash-Murkon Prime\" syi=\"30001671\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Shesha I - Expert Distribution Retail Center\" se=\"0.9\" si=\"60002494\" sy=\"Shesha\" syi=\"30001673\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Tash-Murkon Prime V - Moon 5 - Expert Distribution Warehouse\" se=\"0.8\" si=\"60002497\" sy=\"Tash-Murkon Prime\" syi=\"30001671\"/>\r\n    <row c=\"Abthi\" ci=\"20000439\" r=\"Devoid\" ri=\"10000036\" s=\"Naeel VI - Moon 15 - Expert Distribution Retail Center\" se=\"0.6\" si=\"60002500\" sy=\"Naeel\" syi=\"30002995\"/>\r\n    <row c=\"Abthi\" ci=\"20000439\" r=\"Devoid\" ri=\"10000036\" s=\"Naeel III - Moon 1 - Expert Distribution Retail Center\" se=\"0.6\" si=\"60002503\" sy=\"Naeel\" syi=\"30002995\"/>\r\n    <row c=\"Abthi\" ci=\"20000439\" r=\"Devoid\" ri=\"10000036\" s=\"Thakala IV - Moon 17 - Expert Distribution Warehouse\" se=\"0.4\" si=\"60002506\" sy=\"Thakala\" syi=\"30003000\"/>\r\n    <row c=\"Abthi\" ci=\"20000439\" r=\"Devoid\" ri=\"10000036\" s=\"Lower Debyl VII - Moon 13 - Expert Distribution Retail Center\" se=\"0.6\" si=\"60002509\" sy=\"Lower Debyl\" syi=\"30002996\"/>\r\n    <row c=\"Abthi\" ci=\"20000439\" r=\"Devoid\" ri=\"10000036\" s=\"Thakala I - Expert Distribution Warehouse\" se=\"0.4\" si=\"60002512\" sy=\"Thakala\" syi=\"30003000\"/>\r\n    <row c=\"Abthi\" ci=\"20000439\" r=\"Devoid\" ri=\"10000036\" s=\"Thakala IV - Moon 11 - Expert Distribution Warehouse\" se=\"0.4\" si=\"60002515\" sy=\"Thakala\" syi=\"30003000\"/>\r\n    <row c=\"JQV5-9\" ci=\"20000491\" r=\"Syndicate\" ri=\"10000041\" s=\"S-U8A4 IV - Moon 1 - Expert Distribution Warehouse\" se=\"0.0\" si=\"60002518\" sy=\"S-U8A4\" syi=\"30003368\"/>\r\n    <row c=\"JQV5-9\" ci=\"20000491\" r=\"Syndicate\" ri=\"10000041\" s=\"U4-Q2V IV - Expert Distribution Warehouse\" se=\"0.0\" si=\"60002521\" sy=\"U4-Q2V\" syi=\"30003372\"/>\r\n    <row c=\"JQV5-9\" ci=\"20000491\" r=\"Syndicate\" ri=\"10000041\" s=\"CY-ZLP III - Moon 1 - Expert Distribution Warehouse\" se=\"0.0\" si=\"60002524\" sy=\"CY-ZLP\" syi=\"30003371\"/>\r\n    <row c=\"JQV5-9\" ci=\"20000491\" r=\"Syndicate\" ri=\"10000041\" s=\"2G38-I VIII - Moon 9 - Expert Distribution Warehouse\" se=\"0.0\" si=\"60002527\" sy=\"2G38-I\" syi=\"30003370\"/>\r\n    <row c=\"JQV5-9\" ci=\"20000491\" r=\"Syndicate\" ri=\"10000041\" s=\"2G38-I VI - Expert Distribution Warehouse\" se=\"0.0\" si=\"60002530\" sy=\"2G38-I\" syi=\"30003370\"/>\r\n    <row c=\"JQV5-9\" ci=\"20000491\" r=\"Syndicate\" ri=\"10000041\" s=\"ZV-72W VII - Moon 8 - Expert Distribution Retail Center\" se=\"0.0\" si=\"60002533\" sy=\"ZV-72W\" syi=\"30003369\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Anher VII - Moon 3 - Expert Distribution Retail Center\" se=\"0.5\" si=\"60002536\" sy=\"Anher\" syi=\"30002051\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Anher III - Expert Distribution Retail Center\" se=\"0.5\" si=\"60002539\" sy=\"Anher\" syi=\"30002051\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Ragnarg III - Moon 1 - Expert Distribution Warehouse\" se=\"0.4\" si=\"60002542\" sy=\"Ragnarg\" syi=\"30002052\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Uttindar V - Moon 5 - Expert Distribution Retail Center\" se=\"0.5\" si=\"60002545\" sy=\"Uttindar\" syi=\"30002049\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Anher VI - Moon 5 - Expert Distribution Warehouse\" se=\"0.5\" si=\"60002548\" sy=\"Anher\" syi=\"30002051\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Ragnarg IV - Moon 2 - Expert Distribution Warehouse\" se=\"0.4\" si=\"60002551\" sy=\"Ragnarg\" syi=\"30002052\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Mabnen V - Moon 5 - Expert Distribution Warehouse\" se=\"0.9\" si=\"60002554\" sy=\"Mabnen\" syi=\"30002190\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Boranai VII - Moon 17 - Expert Distribution Retail Center\" se=\"0.9\" si=\"60002557\" sy=\"Boranai\" syi=\"30002188\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Simbeloud VI - Expert Distribution Warehouse\" se=\"0.9\" si=\"60002560\" sy=\"Simbeloud\" syi=\"30002195\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Boranai VIII - Expert Distribution Warehouse\" se=\"0.9\" si=\"60002563\" sy=\"Boranai\" syi=\"30002188\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Simbeloud IX - Moon 1 - Expert Distribution Warehouse\" se=\"0.9\" si=\"60002566\" sy=\"Simbeloud\" syi=\"30002195\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Amarr VIII (Oris) - Moon 4 - Expert Distribution Retail Center\" se=\"1.0\" si=\"60002569\" sy=\"Amarr\" syi=\"30002187\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Imih III - Moon 7 - Expert Distribution Warehouse\" se=\"0.6\" si=\"60002572\" sy=\"Imih\" syi=\"30005053\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nare VII - Moon 19 - Expert Distribution Retail Center\" se=\"0.6\" si=\"60002575\" sy=\"Nare\" syi=\"30005054\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Imih III - Moon 10 - Expert Distribution Warehouse\" se=\"0.6\" si=\"60002578\" sy=\"Imih\" syi=\"30005053\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Imih III - Moon 9 - Expert Distribution Warehouse\" se=\"0.6\" si=\"60002581\" sy=\"Imih\" syi=\"30005053\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Kulu VIII - Moon 3 - Expert Distribution Warehouse\" se=\"0.6\" si=\"60002584\" sy=\"Kulu\" syi=\"30005050\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Choga VII - Expert Distribution Retail Center\" se=\"0.6\" si=\"60002587\" sy=\"Choga\" syi=\"30005051\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Amamake VI - Moon 1 - Expert Distribution Warehouse\" se=\"0.4\" si=\"60002590\" sy=\"Amamake\" syi=\"30002537\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Siseide VII - Expert Distribution Retail Center\" se=\"0.3\" si=\"60002593\" sy=\"Siseide\" syi=\"30002539\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Amamake VI - Moon 3 - Expert Distribution Warehouse\" se=\"0.4\" si=\"60002596\" sy=\"Amamake\" syi=\"30002537\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Amamake II - Expert Distribution Warehouse\" se=\"0.4\" si=\"60002599\" sy=\"Amamake\" syi=\"30002537\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Siseide VIII - Expert Distribution Warehouse\" se=\"0.3\" si=\"60002602\" sy=\"Siseide\" syi=\"30002539\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Lantorn VI - Moon 4 - Expert Distribution Warehouse\" se=\"0.3\" si=\"60002605\" sy=\"Lantorn\" syi=\"30002540\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"Hysera V - Moon 14 - Expert Distribution Warehouse\" se=\"0.4\" si=\"60002608\" sy=\"Hysera\" syi=\"30002796\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"Hysera II - Moon 7 - Expert Distribution Warehouse\" se=\"0.4\" si=\"60002611\" sy=\"Hysera\" syi=\"30002796\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"Yria III - Moon 1 - Expert Distribution Retail Center\" se=\"0.5\" si=\"60002614\" sy=\"Yria\" syi=\"30002794\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"Venilen VIII - Expert Distribution Warehouse\" se=\"0.6\" si=\"60002617\" sy=\"Venilen\" syi=\"30002798\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"Venilen IX - Moon 2 - Expert Distribution Warehouse\" se=\"0.6\" si=\"60002620\" sy=\"Venilen\" syi=\"30002798\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"Venilen IX - Moon 10 - Expert Distribution Warehouse\" se=\"0.6\" si=\"60002623\" sy=\"Venilen\" syi=\"30002798\"/>\r\n    <row c=\"Lolbrerie\" ci=\"20000393\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Olettiers VII - Moon 20 - Expert Distribution Retail Center\" se=\"0.4\" si=\"60002626\" sy=\"Olettiers\" syi=\"30002686\"/>\r\n    <row c=\"Lolbrerie\" ci=\"20000393\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Olettiers VI - Moon 3 - Expert Distribution Warehouse\" se=\"0.4\" si=\"60002629\" sy=\"Olettiers\" syi=\"30002686\"/>\r\n    <row c=\"Lolbrerie\" ci=\"20000393\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Olettiers VII - Moon 2 - Expert Distribution Retail Center\" se=\"0.4\" si=\"60002632\" sy=\"Olettiers\" syi=\"30002686\"/>\r\n    <row c=\"Lolbrerie\" ci=\"20000393\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Olettiers II - Moon 1 - Expert Distribution Warehouse\" se=\"0.4\" si=\"60002635\" sy=\"Olettiers\" syi=\"30002686\"/>\r\n    <row c=\"Lolbrerie\" ci=\"20000393\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Sileperer IV - Moon 9 - Expert Distribution Warehouse\" se=\"0.6\" si=\"60002638\" sy=\"Sileperer\" syi=\"30002689\"/>\r\n    <row c=\"Lolbrerie\" ci=\"20000393\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Artisine VIII - Moon 18 - Expert Distribution Retail Center\" se=\"0.5\" si=\"60002641\" sy=\"Artisine\" syi=\"30002687\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"Alachene VIII - Moon 3 - Expert Distribution Retail Center\" se=\"0.3\" si=\"60002644\" sy=\"Alachene\" syi=\"30003042\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"Colcer IX - Moon 7 - Expert Distribution Warehouse\" se=\"0.9\" si=\"60002647\" sy=\"Colcer\" syi=\"30003041\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"Atlanins VII - Moon 1 - Expert Distribution Retail Center\" se=\"0.6\" si=\"60002650\" sy=\"Atlanins\" syi=\"30003038\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"Colcer I - Expert Distribution Warehouse\" se=\"0.9\" si=\"60002653\" sy=\"Colcer\" syi=\"30003041\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"Alachene VII - Moon 1 - Expert Distribution Warehouse\" se=\"0.3\" si=\"60002656\" sy=\"Alachene\" syi=\"30003042\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"Bille I - Expert Distribution Retail Center\" se=\"0.5\" si=\"60002659\" sy=\"Bille\" syi=\"30003040\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"Bhizheba VIII - Moon 5 - Expert Distribution Warehouse\" se=\"1.0\" si=\"60002662\" sy=\"Bhizheba\" syi=\"30002282\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"Eba VIII - Moon 4 - Expert Distribution Retail Center\" se=\"0.9\" si=\"60002665\" sy=\"Eba\" syi=\"30002281\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"Ebtesham VI - Moon 15 - Expert Distribution Warehouse\" se=\"0.7\" si=\"60002668\" sy=\"Ebtesham\" syi=\"30002277\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"Artoun IX - Moon 1 - Expert Distribution Warehouse\" se=\"0.8\" si=\"60002671\" sy=\"Artoun\" syi=\"30002278\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"Eba II - Expert Distribution Warehouse\" se=\"0.9\" si=\"60002674\" sy=\"Eba\" syi=\"30002281\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"Eba VII - Moon 4 - Expert Distribution Retail Center\" se=\"0.9\" si=\"60002677\" sy=\"Eba\" syi=\"30002281\"/>\r\n    <row c=\"Besateoden\" ci=\"20000352\" r=\"Molden Heath\" ri=\"10000028\" s=\"Horaka IV - Moon 9 - Expert Distribution Warehouse\" se=\"0.6\" si=\"60002680\" sy=\"Horaka\" syi=\"30002397\"/>\r\n    <row c=\"Besateoden\" ci=\"20000352\" r=\"Molden Heath\" ri=\"10000028\" s=\"Orien IV - Expert Distribution Warehouse\" se=\"0.8\" si=\"60002683\" sy=\"Orien\" syi=\"30002399\"/>\r\n    <row c=\"Besateoden\" ci=\"20000352\" r=\"Molden Heath\" ri=\"10000028\" s=\"Illamur III - Expert Distribution Retail Center\" se=\"0.3\" si=\"60002686\" sy=\"Illamur\" syi=\"30002396\"/>\r\n    <row c=\"Besateoden\" ci=\"20000352\" r=\"Molden Heath\" ri=\"10000028\" s=\"Horaka VII - Moon 1 - Expert Distribution Retail Center\" se=\"0.6\" si=\"60002689\" sy=\"Horaka\" syi=\"30002397\"/>\r\n    <row c=\"Besateoden\" ci=\"20000352\" r=\"Molden Heath\" ri=\"10000028\" s=\"Orien III - Moon 3 - Expert Distribution Retail Center\" se=\"0.8\" si=\"60002692\" sy=\"Orien\" syi=\"30002399\"/>\r\n    <row c=\"Besateoden\" ci=\"20000352\" r=\"Molden Heath\" ri=\"10000028\" s=\"Orien II - Expert Distribution Retail Center\" se=\"0.8\" si=\"60002695\" sy=\"Orien\" syi=\"30002399\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Tasabeshi IV - Moon 10 - CBD Sell Division Retail Center\" se=\"0.8\" si=\"60002698\" sy=\"Tasabeshi\" syi=\"30002778\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Annaro II - CBD Sell Division Retail Center\" se=\"0.8\" si=\"60002701\" sy=\"Annaro\" syi=\"30002776\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Tasabeshi II - CBD Sell Division Warehouse\" se=\"0.8\" si=\"60002704\" sy=\"Tasabeshi\" syi=\"30002778\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Kaaputenen III - Moon 1 - CBD Sell Division Warehouse\" se=\"0.8\" si=\"60002707\" sy=\"Kaaputenen\" syi=\"30002789\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Inaro X - Moon 2 - CBD Sell Division Retail Center\" se=\"0.8\" si=\"60002710\" sy=\"Inaro\" syi=\"30002788\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Irjunen V - CBD Sell Division Retail Center\" se=\"0.5\" si=\"60002713\" sy=\"Irjunen\" syi=\"30002792\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Hatakani VII - Moon 5 - CBD Sell Division Retail Center\" se=\"0.9\" si=\"60002716\" sy=\"Hatakani\" syi=\"30002764\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Hatakani VI - Moon 13 - CBD Sell Division Retail Center\" se=\"0.9\" si=\"60002719\" sy=\"Hatakani\" syi=\"30002764\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Iivinen VI - Moon 15 - CBD Sell Division Warehouse\" se=\"0.7\" si=\"60002722\" sy=\"Iivinen\" syi=\"30002766\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Isikesu IV - Moon 6 - CBD Sell Division Warehouse\" se=\"0.7\" si=\"60002725\" sy=\"Isikesu\" syi=\"30002804\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Isikesu I - Moon 3 - CBD Sell Division Warehouse\" se=\"0.7\" si=\"60002728\" sy=\"Isikesu\" syi=\"30002804\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Kusomonmon VI - Moon 21 - CBD Sell Division Warehouse\" se=\"0.8\" si=\"60002731\" sy=\"Kusomonmon\" syi=\"30002802\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Saisio VIII - Moon 20 - Sukuuvestaa Corporation Warehouse\" se=\"0.7\" si=\"60002734\" sy=\"Saisio\" syi=\"30000146\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Jakanerva II - Moon 5 - Sukuuvestaa Corporation Production Plant\" se=\"0.7\" si=\"60002737\" sy=\"Jakanerva\" syi=\"30000148\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Gekutami VI - Moon 2 - Sukuuvestaa Corporation Foundry\" se=\"0.7\" si=\"60002740\" sy=\"Gekutami\" syi=\"30000149\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Jakanerva II - Moon 1 - Sukuuvestaa Corporation Production Plant\" se=\"0.7\" si=\"60002743\" sy=\"Jakanerva\" syi=\"30000148\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Abagawa VII - Moon 14 - Sukuuvestaa Corporation Factory\" se=\"0.6\" si=\"60002746\" sy=\"Abagawa\" syi=\"30000147\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Jakanerva II - Moon 13 - Sukuuvestaa Corporation Factory\" se=\"0.7\" si=\"60002749\" sy=\"Jakanerva\" syi=\"30000148\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Paara II - Sukuuvestaa Corporation Warehouse\" se=\"0.8\" si=\"60002752\" sy=\"Paara\" syi=\"30002775\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Ono V - Moon 15 - Sukuuvestaa Corporation Production Plant\" se=\"0.8\" si=\"60002755\" sy=\"Ono\" syi=\"30002779\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Annaro VIII - Moon 4 - Sukuuvestaa Corporation Production Plant\" se=\"0.8\" si=\"60002758\" sy=\"Annaro\" syi=\"30002776\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Ono VII - Moon 21 - Sukuuvestaa Corporation Foundry\" se=\"0.8\" si=\"60002761\" sy=\"Ono\" syi=\"30002779\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Annaro IX - Sukuuvestaa Corporation Factory\" se=\"0.8\" si=\"60002764\" sy=\"Annaro\" syi=\"30002776\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Muvolailen X - Moon 16 - Sukuuvestaa Corporation Warehouse\" se=\"0.7\" si=\"60002767\" sy=\"Muvolailen\" syi=\"30002780\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Ikao VII - Moon 1 - Sukuuvestaa Corporation Production Plant\" se=\"0.6\" si=\"60002770\" sy=\"Ikao\" syi=\"30002786\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Kamio VI - Moon 7 - Sukuuvestaa Corporation Production Plant\" se=\"0.7\" si=\"60002773\" sy=\"Kamio\" syi=\"30002782\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Tintoh V - Moon 5 - Sukuuvestaa Corporation Warehouse\" se=\"0.8\" si=\"60002776\" sy=\"Tintoh\" syi=\"30002784\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Ikao VIII - Moon 3 - Sukuuvestaa Corporation Warehouse\" se=\"0.6\" si=\"60002779\" sy=\"Ikao\" syi=\"30002786\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Tintoh VI - Moon 2 - Sukuuvestaa Corporation Factory\" se=\"0.8\" si=\"60002782\" sy=\"Tintoh\" syi=\"30002784\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Ikao VII - Moon 19 - Sukuuvestaa Corporation Factory\" se=\"0.6\" si=\"60002785\" sy=\"Ikao\" syi=\"30002786\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Ruvas II - Sukuuvestaa Corporation Production Plant\" se=\"0.8\" si=\"60002788\" sy=\"Ruvas\" syi=\"30001408\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Umokka X - Moon 15 - Sukuuvestaa Corporation Foundry\" se=\"0.6\" si=\"60002791\" sy=\"Umokka\" syi=\"30001409\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Umokka VI - Moon 2 - Sukuuvestaa Corporation Foundry\" se=\"0.6\" si=\"60002794\" sy=\"Umokka\" syi=\"30001409\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Kakakela V - Moon 2 - Sukuuvestaa Corporation Production Plant\" se=\"1.0\" si=\"60002797\" sy=\"Kakakela\" syi=\"30001405\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Kamokor V - Moon 15 - Sukuuvestaa Corporation Factory\" se=\"0.7\" si=\"60002800\" sy=\"Kamokor\" syi=\"30001406\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Airkio II - Sukuuvestaa Corporation Factory\" se=\"0.9\" si=\"60002803\" sy=\"Airkio\" syi=\"30001404\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Poinen V - Moon 16 - Sukuuvestaa Corporation Warehouse\" se=\"0.6\" si=\"60002806\" sy=\"Poinen\" syi=\"30000153\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Poinen VI - Moon 5 - Sukuuvestaa Corporation Production Plant\" se=\"0.6\" si=\"60002809\" sy=\"Poinen\" syi=\"30000153\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Liekuri VI - Moon 4 - Sukuuvestaa Corporation Production Plant\" se=\"0.6\" si=\"60002812\" sy=\"Liekuri\" syi=\"30000154\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Olo III - Moon 1 - Sukuuvestaa Corporation Warehouse\" se=\"0.7\" si=\"60002815\" sy=\"Olo\" syi=\"30000158\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Poinen IV - Moon 8 - Sukuuvestaa Corporation Factory\" se=\"0.6\" si=\"60002818\" sy=\"Poinen\" syi=\"30000153\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Josameto III - Moon 1 - Sukuuvestaa Corporation Factory\" se=\"0.6\" si=\"60002821\" sy=\"Josameto\" syi=\"30000156\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Kusomonmon VI - Moon 23 - Sukuuvestaa Corporation Foundry\" se=\"0.8\" si=\"60002824\" sy=\"Kusomonmon\" syi=\"30002802\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Suroken V - Moon 2 - Sukuuvestaa Corporation Production Plant\" se=\"0.7\" si=\"60002827\" sy=\"Suroken\" syi=\"30002801\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Isikesu IV - Moon 10 - Sukuuvestaa Corporation Warehouse\" se=\"0.7\" si=\"60002830\" sy=\"Isikesu\" syi=\"30002804\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Kusomonmon II - Moon 12 - Sukuuvestaa Corporation Production Plant\" se=\"0.8\" si=\"60002833\" sy=\"Kusomonmon\" syi=\"30002802\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Haatomo VI - Moon 2 - Sukuuvestaa Corporation Factory\" se=\"0.6\" si=\"60002836\" sy=\"Haatomo\" syi=\"30002800\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Isikesu IV - Moon 9 - Sukuuvestaa Corporation Warehouse\" se=\"0.7\" si=\"60002839\" sy=\"Isikesu\" syi=\"30002804\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"Ukkalen IX - Moon 15 - Sukuuvestaa Corporation Foundry\" se=\"0.6\" si=\"60002842\" sy=\"Ukkalen\" syi=\"30000177\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"Keikaken I - Sukuuvestaa Corporation Production Plant\" se=\"0.7\" si=\"60002845\" sy=\"Keikaken\" syi=\"30000176\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"Ukkalen IX - Moon 16 - Sukuuvestaa Corporation Foundry\" se=\"0.6\" si=\"60002848\" sy=\"Ukkalen\" syi=\"30000177\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"Silen III - Moon 15 - Sukuuvestaa Corporation Production Plant\" se=\"0.5\" si=\"60002851\" sy=\"Silen\" syi=\"30000179\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"Soshin V - Moon 2 - Sukuuvestaa Corporation Factory\" se=\"0.6\" si=\"60002854\" sy=\"Soshin\" syi=\"30000175\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"Soshin VIII - Sukuuvestaa Corporation Factory\" se=\"0.6\" si=\"60002857\" sy=\"Soshin\" syi=\"30000175\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Sivala VIII - Sukuuvestaa Corporation Warehouse\" se=\"0.6\" si=\"60002860\" sy=\"Sivala\" syi=\"30002765\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Iivinen VIII - Moon 13 - Sukuuvestaa Corporation Warehouse\" se=\"0.7\" si=\"60002863\" sy=\"Iivinen\" syi=\"30002766\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Yashunen V - Moon 1 - Sukuuvestaa Corporation Warehouse\" se=\"1.0\" si=\"60002866\" sy=\"Yashunen\" syi=\"30002762\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Hatakani VII - Moon 18 - Sukuuvestaa Corporation Production Plant\" se=\"0.9\" si=\"60002869\" sy=\"Hatakani\" syi=\"30002764\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Yashunen VII - Sukuuvestaa Corporation Warehouse\" se=\"1.0\" si=\"60002872\" sy=\"Yashunen\" syi=\"30002762\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Yashunen III - Sukuuvestaa Corporation Warehouse\" se=\"1.0\" si=\"60002875\" sy=\"Yashunen\" syi=\"30002762\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"Vaajaita VI - Sukuuvestaa Corporation Warehouse\" se=\"0.5\" si=\"60002878\" sy=\"Vaajaita\" syi=\"30001383\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"Autaris VIII - Moon 4 - Sukuuvestaa Corporation Production Plant\" se=\"0.5\" si=\"60002881\" sy=\"Autaris\" syi=\"30001384\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"Arvasaras II - Moon 1 - Veles Clade Extractive Terminus\" se=\"0.0\" si=\"60002884\" sy=\"Arvasaras\" syi=\"30001381\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"Autaris V - Sukuuvestaa Corporation Production Plant\" se=\"0.5\" si=\"60002887\" sy=\"Autaris\" syi=\"30001384\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"Vaajaita I - Sukuuvestaa Corporation Warehouse\" se=\"0.5\" si=\"60002890\" sy=\"Vaajaita\" syi=\"30001383\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"Akonoinen I - Sukuuvestaa Corporation Factory\" se=\"0.5\" si=\"60002893\" sy=\"Akonoinen\" syi=\"30001382\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Funtanainen IV - Sukuuvestaa Corporation Production Plant\" se=\"0.9\" si=\"60002896\" sy=\"Funtanainen\" syi=\"30001364\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Hageken VII - Moon 6 - Sukuuvestaa Corporation Warehouse\" se=\"0.6\" si=\"60002899\" sy=\"Hageken\" syi=\"30001367\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isikemi VI - Moon 3 - Sukuuvestaa Corporation Warehouse\" se=\"0.8\" si=\"60002902\" sy=\"Isikemi\" syi=\"30001365\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isikemi VII - Moon 2 - Sukuuvestaa Corporation Warehouse\" se=\"0.8\" si=\"60002905\" sy=\"Isikemi\" syi=\"30001365\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Funtanainen III - Sukuuvestaa Corporation Factory\" se=\"0.9\" si=\"60002908\" sy=\"Funtanainen\" syi=\"30001364\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Veisto V - Moon 15 - Sukuuvestaa Corporation Factory\" se=\"0.8\" si=\"60002911\" sy=\"Veisto\" syi=\"30001362\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Piak III - Moon 5 - Caldari Constructions Production Plant\" se=\"0.7\" si=\"60002914\" sy=\"Piak\" syi=\"30001403\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nonni I - Caldari Constructions Production Plant\" se=\"0.5\" si=\"60002917\" sy=\"Nonni\" syi=\"30001401\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Litiura VIII - Caldari Constructions Production Plant\" se=\"0.5\" si=\"60002920\" sy=\"Litiura\" syi=\"30001400\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Litiura I - Caldari Constructions Production Plant\" se=\"0.5\" si=\"60002923\" sy=\"Litiura\" syi=\"30001400\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Pakkonen V - Moon 4 - Caldari Constructions Foundry\" se=\"0.4\" si=\"60002926\" sy=\"Pakkonen\" syi=\"30001390\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Pakkonen II - Moon 1 - Caldari Constructions Foundry\" se=\"0.4\" si=\"60002929\" sy=\"Pakkonen\" syi=\"30001390\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Pakkonen IV - Moon 18 - Caldari Constructions Foundry\" se=\"0.4\" si=\"60002932\" sy=\"Pakkonen\" syi=\"30001390\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Pakkonen IV - Moon 19 - Caldari Constructions Production Plant\" se=\"0.4\" si=\"60002935\" sy=\"Pakkonen\" syi=\"30001390\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tartoken VII - Moon 17 - Caldari Constructions Production Plant\" se=\"0.1\" si=\"60002938\" sy=\"Tartoken\" syi=\"30001441\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Anin IX - Moon 13 - Caldari Constructions Production Plant\" se=\"0.4\" si=\"60002941\" sy=\"Anin\" syi=\"30001439\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tartoken V - Moon 8 - Caldari Constructions Production Plant\" se=\"0.1\" si=\"60002944\" sy=\"Tartoken\" syi=\"30001441\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tartoken VI - Caldari Constructions Production Plant\" se=\"0.1\" si=\"60002947\" sy=\"Tartoken\" syi=\"30001441\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Niyabainen IX - Moon 9 - Caldari Constructions Warehouse\" se=\"1.0\" si=\"60002950\" sy=\"Niyabainen\" syi=\"30000143\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Jita V - Moon 17 - Caldari Constructions Production Plant\" se=\"0.9\" si=\"60002953\" sy=\"Jita\" syi=\"30000142\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Perimeter IX - Caldari Constructions Production Plant\" se=\"1.0\" si=\"60002956\" sy=\"Perimeter\" syi=\"30000144\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Jita IV - Moon 10 - Caldari Constructions Production Plant\" se=\"0.9\" si=\"60002959\" sy=\"Jita\" syi=\"30000142\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nourvukaiken VII - Moon 4 - Caldari Constructions Production Plant\" se=\"0.8\" si=\"60002962\" sy=\"Nourvukaiken\" syi=\"30001376\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tsuguwa IV - Moon 13 - Caldari Constructions Warehouse\" se=\"0.8\" si=\"60002965\" sy=\"Tsuguwa\" syi=\"30001375\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Ekura VII - Moon 14 - Caldari Constructions Warehouse\" se=\"0.9\" si=\"60002968\" sy=\"Ekura\" syi=\"30001378\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Iidoken III - Caldari Constructions Warehouse\" se=\"0.8\" si=\"60002971\" sy=\"Iidoken\" syi=\"30001374\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Ossa IX - Moon 2 - Caldari Constructions Foundry\" se=\"0.5\" si=\"60002974\" sy=\"Ossa\" syi=\"30001358\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Dantumi V - Moon 1 - Caldari Constructions Warehouse\" se=\"0.4\" si=\"60002977\" sy=\"Dantumi\" syi=\"30001356\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Antiainen IV - Caldari Constructions Production Plant\" se=\"0.6\" si=\"60002980\" sy=\"Antiainen\" syi=\"30001357\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Kiskoken VII - Moon 4 - Caldari Constructions Foundry\" se=\"0.5\" si=\"60002983\" sy=\"Kiskoken\" syi=\"30001360\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Isenairos VI - Caldari Constructions Warehouse\" se=\"0.8\" si=\"60002986\" sy=\"Isenairos\" syi=\"30002815\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Motsu VII - Moon 5 - Caldari Constructions Foundry\" se=\"0.9\" si=\"60002989\" sy=\"Motsu\" syi=\"30002819\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Aramachi VI - Moon 11 - Caldari Constructions Foundry\" se=\"0.5\" si=\"60002992\" sy=\"Aramachi\" syi=\"30002817\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Oichiya VI - Moon 1 - Caldari Constructions Production Plant\" se=\"0.8\" si=\"60002995\" sy=\"Oichiya\" syi=\"30002818\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Ansila VIII - Moon 14 - Caldari Constructions Production Plant\" se=\"0.9\" si=\"60002998\" sy=\"Ansila\" syi=\"30000132\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Ansila VIII - Moon 16 - Caldari Constructions Production Plant\" se=\"0.9\" si=\"60003001\" sy=\"Ansila\" syi=\"30000132\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Eskunen XI - Moon 1 - Caldari Constructions Production Plant\" se=\"0.6\" si=\"60003004\" sy=\"Eskunen\" syi=\"30000137\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Eskunen VI - Caldari Constructions Warehouse\" se=\"0.6\" si=\"60003007\" sy=\"Eskunen\" syi=\"30000137\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"Atai II - Moon 2 - Caldari Constructions Production Plant\" se=\"0.5\" si=\"60003010\" sy=\"Atai\" syi=\"30001419\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"Aikantoh III - Moon 1 - Caldari Constructions Production Plant\" se=\"0.6\" si=\"60003013\" sy=\"Aikantoh\" syi=\"30001418\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"Atai II - Moon 7 - Caldari Constructions Production Plant\" se=\"0.5\" si=\"60003016\" sy=\"Atai\" syi=\"30001419\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"Aikantoh I - Caldari Constructions Foundry\" se=\"0.6\" si=\"60003019\" sy=\"Aikantoh\" syi=\"30001418\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Kusomonmon II - Moon 8 - Caldari Constructions Production Plant\" se=\"0.8\" si=\"60003022\" sy=\"Kusomonmon\" syi=\"30002802\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Kusomonmon IV - Moon 13 - Caldari Constructions Foundry\" se=\"0.8\" si=\"60003025\" sy=\"Kusomonmon\" syi=\"30002802\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Isikesu IV - Moon 5 - Caldari Constructions Production Plant\" se=\"0.7\" si=\"60003028\" sy=\"Isikesu\" syi=\"30002804\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Haatomo VII - Moon 3 - Caldari Constructions Warehouse\" se=\"0.6\" si=\"60003031\" sy=\"Haatomo\" syi=\"30002800\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"Otela V - Moon 1 - The Convocation of Triglav Semiosis Theater\" se=\"0.0\" si=\"60003034\" sy=\"Otela\" syi=\"30000157\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"Otela II - Perun Clade Bioadaptation Chambers\" se=\"0.0\" si=\"60003037\" sy=\"Otela\" syi=\"30000157\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Olo I - Moon 1 - Expert Housing Warehouse\" se=\"0.7\" si=\"60003040\" sy=\"Olo\" syi=\"30000158\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"Akora VI - Moon 7 - Expert Housing Production Plant\" se=\"0.3\" si=\"60003043\" sy=\"Akora\" syi=\"30000163\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"Maila VII - Expert Housing Warehouse\" se=\"0.4\" si=\"60003046\" sy=\"Maila\" syi=\"30000162\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"Purjola VII - Expert Housing Production Plant\" se=\"0.5\" si=\"60003049\" sy=\"Purjola\" syi=\"30000161\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Niyabainen IX - Moon 4 - Expert Housing Production Plant\" se=\"1.0\" si=\"60003052\" sy=\"Niyabainen\" syi=\"30000143\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Jita IV - Moon 11 - Expert Housing Production Plant\" se=\"0.9\" si=\"60003055\" sy=\"Jita\" syi=\"30000142\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Niyabainen VIII - Moon 6 - Expert Housing Production Plant\" se=\"1.0\" si=\"60003058\" sy=\"Niyabainen\" syi=\"30000143\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"Mitsolen I - Moon 1 - Expert Housing Warehouse\" se=\"0.6\" si=\"60003061\" sy=\"Mitsolen\" syi=\"30000120\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"Vaankalen I - Moon 3 - Expert Housing Production Plant\" se=\"0.6\" si=\"60003064\" sy=\"Vaankalen\" syi=\"30000123\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"Itamo VII - Moon 5 - Expert Housing Warehouse\" se=\"0.7\" si=\"60003067\" sy=\"Itamo\" syi=\"30000119\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Korsiki III - Moon 18 - Expert Housing Production Plant\" se=\"0.6\" si=\"60003070\" sy=\"Korsiki\" syi=\"30000181\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Osmon VI - Moon 1 - Expert Housing Production Plant\" se=\"0.7\" si=\"60003073\" sy=\"Osmon\" syi=\"30000180\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Airaken VIII - Expert Housing Production Plant\" se=\"0.5\" si=\"60003076\" sy=\"Airaken\" syi=\"30000185\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Nomaa I - Expert Housing Production Plant\" se=\"0.6\" si=\"60003079\" sy=\"Nomaa\" syi=\"30000131\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Tuuriainas III - Expert Housing Production Plant\" se=\"0.6\" si=\"60003082\" sy=\"Tuuriainas\" syi=\"30000128\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Nomaa VI - Moon 4 - Expert Housing Production Plant\" se=\"0.6\" si=\"60003085\" sy=\"Nomaa\" syi=\"30000131\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isikemi II - Moon 1 - Expert Housing Warehouse\" se=\"0.8\" si=\"60003088\" sy=\"Isikemi\" syi=\"30001365\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Hageken VIII - Moon 5 - Expert Housing Warehouse\" se=\"0.6\" si=\"60003091\" sy=\"Hageken\" syi=\"30001367\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Sobaseki XIII - Moon 4 - Expert Housing Warehouse\" se=\"0.8\" si=\"60003094\" sy=\"Sobaseki\" syi=\"30001363\"/>\r\n    <row c=\"Isoma\" ci=\"20000412\" r=\"The Citadel\" ri=\"10000033\" s=\"Onatoh VII - Moon 23 - Expert Housing Production Plant\" se=\"0.3\" si=\"60003097\" sy=\"Onatoh\" syi=\"30002811\"/>\r\n    <row c=\"Isoma\" ci=\"20000412\" r=\"The Citadel\" ri=\"10000033\" s=\"Hasmijaala X - Moon 3 - Expert Housing Production Plant\" se=\"0.3\" si=\"60003100\" sy=\"Hasmijaala\" syi=\"30002806\"/>\r\n    <row c=\"Isoma\" ci=\"20000412\" r=\"The Citadel\" ri=\"10000033\" s=\"Eranakko IV - Moon 1 - Expert Housing Foundry\" se=\"0.3\" si=\"60003103\" sy=\"Eranakko\" syi=\"30002810\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Hirtamon VIII - Moon 5 - Expert Housing Warehouse\" se=\"1.0\" si=\"60003106\" sy=\"Hirtamon\" syi=\"30000133\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Hykkota IV - Moon 7 - Expert Housing Production Plant\" se=\"0.8\" si=\"60003109\" sy=\"Hykkota\" syi=\"30000134\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Ohmahailen V - Moon 12 - Expert Housing Production Plant\" se=\"0.7\" si=\"60003112\" sy=\"Ohmahailen\" syi=\"30000136\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Sankkasen VII - Moon 6 - Expert Housing Production Plant\" se=\"0.7\" si=\"60003115\" sy=\"Sankkasen\" syi=\"30002783\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Santola IV - Moon 1 - Expert Housing Production Plant\" se=\"0.8\" si=\"60003118\" sy=\"Santola\" syi=\"30002785\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Sankkasen IX - Moon 10 - Expert Housing Production Plant\" se=\"0.7\" si=\"60003121\" sy=\"Sankkasen\" syi=\"30002783\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Litiura VIII - Moon 7 - Caldari Funds Unlimited Vault\" se=\"0.5\" si=\"60003124\" sy=\"Litiura\" syi=\"30001400\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nonni III - Caldari Funds Unlimited Depository\" se=\"0.5\" si=\"60003127\" sy=\"Nonni\" syi=\"30001401\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Sankkasen IX - Moon 20 - Caldari Funds Unlimited Depository\" se=\"0.7\" si=\"60003130\" sy=\"Sankkasen\" syi=\"30002783\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Santola VIII - Moon 11 - Caldari Funds Unlimited Depository\" se=\"0.8\" si=\"60003133\" sy=\"Santola\" syi=\"30002785\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Josameto IX - Moon 3 - Caldari Funds Unlimited Depository\" se=\"0.6\" si=\"60003136\" sy=\"Josameto\" syi=\"30000156\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Liekuri VII - Moon 1 - Caldari Funds Unlimited Depository\" se=\"0.6\" si=\"60003139\" sy=\"Liekuri\" syi=\"30000154\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"Maila III - Moon 1 - Caldari Funds Unlimited Depository\" se=\"0.4\" si=\"60003142\" sy=\"Maila\" syi=\"30000162\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"Purjola VI - Moon 5 - Caldari Funds Unlimited Depository\" se=\"0.5\" si=\"60003145\" sy=\"Purjola\" syi=\"30000161\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Hykkota V - Moon 17 - Caldari Funds Unlimited Depository\" se=\"0.8\" si=\"60003148\" sy=\"Hykkota\" syi=\"30000134\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Ansila V - Caldari Funds Unlimited Depository\" se=\"0.9\" si=\"60003151\" sy=\"Ansila\" syi=\"30000132\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Malkalen IV - Moon 1 - Caldari Funds Unlimited Depository\" se=\"0.9\" si=\"60003154\" sy=\"Malkalen\" syi=\"30001393\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Ylandoki VI - Moon 8 - Caldari Funds Unlimited Depository\" se=\"0.8\" si=\"60003157\" sy=\"Ylandoki\" syi=\"30001395\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"Kaimon III - Moon 14 - Caldari Funds Unlimited Depository\" se=\"0.7\" si=\"60003160\" sy=\"Kaimon\" syi=\"30002751\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"Kaimon III - Moon 15 - Caldari Funds Unlimited Depository\" se=\"0.7\" si=\"60003163\" sy=\"Kaimon\" syi=\"30002751\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Hatakani VII - Moon 1 - Caldari Funds Unlimited Depository\" se=\"0.9\" si=\"60003166\" sy=\"Hatakani\" syi=\"30002764\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Sivala VI - Moon 1 - Caldari Funds Unlimited Depository\" se=\"0.6\" si=\"60003169\" sy=\"Sivala\" syi=\"30002765\"/>\r\n    <row c=\"Mivora\" ci=\"20000028\" r=\"The Forge\" ri=\"10000002\" s=\"Akkio V - Moon 6 - Caldari Funds Unlimited Vault\" se=\"0.2\" si=\"60003172\" sy=\"Akkio\" syi=\"30000200\"/>\r\n    <row c=\"Mivora\" ci=\"20000028\" r=\"The Forge\" ri=\"10000002\" s=\"Tasti IX - Moon 12 - Caldari Funds Unlimited Depository\" se=\"0.3\" si=\"60003175\" sy=\"Tasti\" syi=\"30000195\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Mastakomon XII - Caldari Funds Unlimited Depository\" se=\"0.5\" si=\"60003178\" sy=\"Mastakomon\" syi=\"30000202\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Mastakomon VIII - Moon 2 - Caldari Funds Unlimited Depository\" se=\"0.5\" si=\"60003181\" sy=\"Mastakomon\" syi=\"30000202\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Antiainen III - State and Region Bank Depository\" se=\"0.6\" si=\"60003184\" sy=\"Antiainen\" syi=\"30001357\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Kiskoken VII - Moon 14 - State and Region Bank Vault\" se=\"0.5\" si=\"60003187\" sy=\"Kiskoken\" syi=\"30001360\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Korsiki III - Moon 11 - State and Region Bank Depository\" se=\"0.6\" si=\"60003190\" sy=\"Korsiki\" syi=\"30000181\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Inaya VIII - Moon 8 - State and Region Bank Depository\" se=\"0.6\" si=\"60003193\" sy=\"Inaya\" syi=\"30000182\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Umokka VII - State and Region Bank Vault\" se=\"0.6\" si=\"60003196\" sy=\"Umokka\" syi=\"30001409\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Ruvas VII - State and Region Bank Depository\" se=\"0.8\" si=\"60003199\" sy=\"Ruvas\" syi=\"30001408\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Hatakani VII - Moon 20 - State and Region Bank Depository\" se=\"0.9\" si=\"60003202\" sy=\"Hatakani\" syi=\"30002764\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Hatakani I - Moon 1 - State and Region Bank Depository\" se=\"0.9\" si=\"60003205\" sy=\"Hatakani\" syi=\"30002764\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"Ihakana VI - State and Region Bank Depository\" se=\"0.4\" si=\"60003208\" sy=\"Ihakana\" syi=\"30000169\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"Vahunomi X - Moon 4 - State and Region Bank Vault\" se=\"0.5\" si=\"60003211\" sy=\"Vahunomi\" syi=\"30000170\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Horkkisen XVIII - State and Region Bank Vault\" se=\"0.4\" si=\"60003214\" sy=\"Horkkisen\" syi=\"30002741\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Eitu VI - Moon 7 - State and Region Bank Depository\" se=\"0.5\" si=\"60003217\" sy=\"Eitu\" syi=\"30002740\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nourvukaiken VII - Moon 8 - State and Region Bank Depository\" se=\"0.8\" si=\"60003220\" sy=\"Nourvukaiken\" syi=\"30001376\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nourvukaiken VI - Moon 2 - State and Region Bank Depository\" se=\"0.8\" si=\"60003223\" sy=\"Nourvukaiken\" syi=\"30001376\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Tuuriainas IV - State and Region Bank Depository\" se=\"0.6\" si=\"60003226\" sy=\"Tuuriainas\" syi=\"30000128\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Tuuriainas II - State and Region Bank Depository\" se=\"0.6\" si=\"60003229\" sy=\"Tuuriainas\" syi=\"30000128\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Karjataimon V - Moon 19 - State and Region Bank Depository\" se=\"0.3\" si=\"60003232\" sy=\"Karjataimon\" syi=\"30001440\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tartoken VII - Moon 7 - State and Region Bank Depository\" se=\"0.1\" si=\"60003235\" sy=\"Tartoken\" syi=\"30001441\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"Purjola VII - Moon 10 - State and Region Bank Depository\" se=\"0.5\" si=\"60003238\" sy=\"Purjola\" syi=\"30000161\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"Akora IV - Moon 1 - State and Region Bank Depository\" se=\"0.3\" si=\"60003241\" sy=\"Akora\" syi=\"30000163\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Geras IV - Moon 1 - Modern Finances Depository\" se=\"0.7\" si=\"60003244\" sy=\"Geras\" syi=\"30000126\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Tuuriainas IV - Modern Finances Depository\" se=\"0.6\" si=\"60003247\" sy=\"Tuuriainas\" syi=\"30000128\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Vaere VIII - Moon 3 - Modern Finances Depository\" se=\"0.8\" si=\"60003250\" sy=\"Vaere\" syi=\"30005306\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Alenia IV - Moon 4 - Modern Finances Depository\" se=\"0.9\" si=\"60003253\" sy=\"Alenia\" syi=\"30005302\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Audaerne VI - Moon 5 - Modern Finances Depository\" se=\"0.5\" si=\"60003256\" sy=\"Audaerne\" syi=\"30002684\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Barmalie VI - Moon 4 - Modern Finances Vault\" se=\"0.5\" si=\"60003259\" sy=\"Barmalie\" syi=\"30002683\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Oursulaert VIII - Modern Finances Vault\" se=\"0.9\" si=\"60003262\" sy=\"Oursulaert\" syi=\"30004969\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Oursulaert I - Modern Finances Vault\" se=\"0.9\" si=\"60003265\" sy=\"Oursulaert\" syi=\"30004969\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Penirgman V - Moon 2 - Modern Finances Depository\" se=\"0.9\" si=\"60003268\" sy=\"Penirgman\" syi=\"30003488\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Penirgman IX - Moon 7 - Modern Finances Depository\" se=\"0.9\" si=\"60003271\" sy=\"Penirgman\" syi=\"30003488\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Mannar VII - Moon 12 - Modern Finances Depository\" se=\"0.3\" si=\"60003274\" sy=\"Mannar\" syi=\"30003060\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Mannar IV - Moon 7 - Modern Finances Depository\" se=\"0.3\" si=\"60003277\" sy=\"Mannar\" syi=\"30003060\"/>\r\n    <row c=\"Peccanouette\" ci=\"20000732\" r=\"Essence\" ri=\"10000064\" s=\"Laurvier IX - Moon 2 - Modern Finances Depository\" se=\"0.7\" si=\"60003280\" sy=\"Laurvier\" syi=\"30005002\"/>\r\n    <row c=\"Peccanouette\" ci=\"20000732\" r=\"Essence\" ri=\"10000064\" s=\"Adirain IV - Moon 2 - Modern Finances Depository\" se=\"0.4\" si=\"60003283\" sy=\"Adirain\" syi=\"30005003\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Eitu III - Moon 5 - Modern Finances Depository\" se=\"0.5\" si=\"60003286\" sy=\"Eitu\" syi=\"30002740\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Eitu III - Moon 9 - Modern Finances Depository\" se=\"0.5\" si=\"60003289\" sy=\"Eitu\" syi=\"30002740\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Brapelille IX - Moon 18 - Modern Finances Depository\" se=\"0.7\" si=\"60003292\" sy=\"Brapelille\" syi=\"30002699\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Bawilan VIII - Moon 17 - Modern Finances Depository\" se=\"0.5\" si=\"60003295\" sy=\"Bawilan\" syi=\"30002700\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nourvukaiken II - Moon 1 - Modern Finances Depository\" se=\"0.8\" si=\"60003298\" sy=\"Nourvukaiken\" syi=\"30001376\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nourvukaiken VII - Moon 13 - Modern Finances Depository\" se=\"0.8\" si=\"60003301\" sy=\"Nourvukaiken\" syi=\"30001376\"/>\r\n    <row c=\"Sanair\" ci=\"20000243\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Adahum IX - Moon 2 - Modern Finances Vault\" se=\"0.6\" si=\"60003304\" sy=\"Adahum\" syi=\"30001648\"/>\r\n    <row c=\"Sanair\" ci=\"20000243\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Tividu IV - Moon 9 - Modern Finances Depository\" se=\"0.6\" si=\"60003307\" sy=\"Tividu\" syi=\"30001644\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"Erindur VIII - Moon 18 - Modern Finances Vault\" se=\"0.6\" si=\"60003310\" sy=\"Erindur\" syi=\"30003472\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"Hroduko VII - Moon 14 - Modern Finances Depository\" se=\"0.7\" si=\"60003313\" sy=\"Hroduko\" syi=\"30003468\"/>\r\n    <row c=\"DS-M4Q\" ci=\"20000481\" r=\"Syndicate\" ri=\"10000041\" s=\"T-LIWS IV - Moon 6 - Modern Finances Depository\" se=\"0.0\" si=\"60003316\" sy=\"T-LIWS\" syi=\"30003299\"/>\r\n    <row c=\"DS-M4Q\" ci=\"20000481\" r=\"Syndicate\" ri=\"10000041\" s=\"UM-Q7F X - Modern Finances Depository\" se=\"0.0\" si=\"60003319\" sy=\"UM-Q7F\" syi=\"30003298\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Ylandoki V - Moon 7 - Modern Finances Depository\" se=\"0.8\" si=\"60003322\" sy=\"Ylandoki\" syi=\"30001395\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Ylandoki VII - Moon 1 - Modern Finances Depository\" se=\"0.8\" si=\"60003325\" sy=\"Ylandoki\" syi=\"30001395\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Stegette IV - Moon 10 - Modern Finances Depository\" se=\"0.5\" si=\"60003328\" sy=\"Stegette\" syi=\"30002696\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Stegette IV - Moon 15 - Modern Finances Depository\" se=\"0.5\" si=\"60003331\" sy=\"Stegette\" syi=\"30002696\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"New Caldari Prime - Moon 1 - Chief Executive Panel Bureau\" se=\"1.0\" si=\"60003334\" sy=\"New Caldari\" syi=\"30000145\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Urlen VI - Chief Executive Panel Bureau\" se=\"1.0\" si=\"60003337\" sy=\"Urlen\" syi=\"30000139\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Ono VII - Moon 3 - Chief Executive Panel Treasury\" se=\"0.8\" si=\"60003340\" sy=\"Ono\" syi=\"30002779\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Tasabeshi IV - Moon 2 - Chief Executive Panel Academy\" se=\"0.8\" si=\"60003343\" sy=\"Tasabeshi\" syi=\"30002778\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"Otitoh VII - Moon 3 - Chief Executive Panel Academy\" se=\"0.5\" si=\"60003346\" sy=\"Otitoh\" syi=\"30000171\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"Ishisomo IX - Moon 9 - Chief Executive Panel Bureau\" se=\"0.7\" si=\"60003349\" sy=\"Ishisomo\" syi=\"30000165\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Isaziwa X - Moon 1 - Chief Executive Panel Bureau\" se=\"0.7\" si=\"60003352\" sy=\"Isaziwa\" syi=\"30002739\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Isaziwa IX - Chief Executive Panel Bureau\" se=\"0.7\" si=\"60003355\" sy=\"Isaziwa\" syi=\"30002739\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tsuguwa IV - Moon 4 - Chief Executive Panel Bureau\" se=\"0.8\" si=\"60003358\" sy=\"Tsuguwa\" syi=\"30001375\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Iidoken VII - Moon 7 - Chief Executive Panel Bureau\" se=\"0.8\" si=\"60003361\" sy=\"Iidoken\" syi=\"30001374\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"Vattuolen IX - Chief Executive Panel Bureau\" se=\"0.7\" si=\"60003364\" sy=\"Vattuolen\" syi=\"30000173\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"Silen IV - Moon 18 - Chief Executive Panel Treasury\" se=\"0.5\" si=\"60003367\" sy=\"Silen\" syi=\"30000179\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"Aikoro VI - Moon 9 - Chief Executive Panel Bureau\" se=\"0.8\" si=\"60003370\" sy=\"Aikoro\" syi=\"30002753\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"Alikara VII - Moon 1 - Chief Executive Panel Bureau\" se=\"0.7\" si=\"60003373\" sy=\"Alikara\" syi=\"30002754\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Motsu VI - Moon 10 - Chief Executive Panel Academy\" se=\"0.9\" si=\"60003376\" sy=\"Motsu\" syi=\"30002819\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Uotila V - Moon 14 - Chief Executive Panel Bureau\" se=\"0.6\" si=\"60003379\" sy=\"Uotila\" syi=\"30002814\"/>\r\n    <row c=\"Ieyama\" ci=\"20000404\" r=\"The Citadel\" ri=\"10000033\" s=\"Uuna VI - Moon 22 - Chief Executive Panel Bureau\" se=\"0.4\" si=\"60003382\" sy=\"Uuna\" syi=\"30002759\"/>\r\n    <row c=\"Ieyama\" ci=\"20000404\" r=\"The Citadel\" ri=\"10000033\" s=\"Ishomilken IX - Moon 4 - Chief Executive Panel Bureau\" se=\"0.4\" si=\"60003385\" sy=\"Ishomilken\" syi=\"30002756\"/>\r\n    <row c=\"Kainokai\" ci=\"20000207\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tsukuras IX - Moon 3 - Chief Executive Panel Bureau\" se=\"0.7\" si=\"60003388\" sy=\"Tsukuras\" syi=\"30001412\"/>\r\n    <row c=\"Kainokai\" ci=\"20000207\" r=\"Lonetrek\" ri=\"10000016\" s=\"Ajanen X - Moon 3 - Chief Executive Panel Bureau\" se=\"0.6\" si=\"60003391\" sy=\"Ajanen\" syi=\"30001414\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Sirseshin VI - Moon 1 - Mercantile Club Bureau\" se=\"0.7\" si=\"60003394\" sy=\"Sirseshin\" syi=\"30000127\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Unpas VI - Moon 4 - Mercantile Club Bureau\" se=\"0.9\" si=\"60003397\" sy=\"Unpas\" syi=\"30000129\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"Ahynada VII - Mercantile Club Bureau\" se=\"0.8\" si=\"60003400\" sy=\"Ahynada\" syi=\"30002752\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"Kaimon III - Moon 25 - Mercantile Club Bureau\" se=\"0.7\" si=\"60003403\" sy=\"Kaimon\" syi=\"30002751\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"Jotenen V - Mercantile Club Bureau\" se=\"0.6\" si=\"60003406\" sy=\"Jotenen\" syi=\"30001423\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"Aikantoh I - Moon 1 - Mercantile Club Academy\" se=\"0.6\" si=\"60003409\" sy=\"Aikantoh\" syi=\"30001418\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"Jan V - Moon 10 - Mercantile Club Bureau\" se=\"0.4\" si=\"60003412\" sy=\"Jan\" syi=\"30001385\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"Vaajaita VI - Mercantile Club Bureau\" se=\"0.5\" si=\"60003415\" sy=\"Vaajaita\" syi=\"30001383\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Halaima VIII - Moon 17 - Mercantile Club Bureau\" se=\"0.7\" si=\"60003418\" sy=\"Halaima\" syi=\"30002781\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Sankkasen IX - Moon 12 - Mercantile Club Bureau\" se=\"0.7\" si=\"60003421\" sy=\"Sankkasen\" syi=\"30002783\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Malkalen II - Mercantile Club Bureau\" se=\"0.9\" si=\"60003424\" sy=\"Malkalen\" syi=\"30001393\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Ylandoki VI - Moon 15 - Mercantile Club Bureau\" se=\"0.8\" si=\"60003427\" sy=\"Ylandoki\" syi=\"30001395\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Airkio IX - Moon 15 - Mercantile Club Bureau\" se=\"0.9\" si=\"60003430\" sy=\"Airkio\" syi=\"30001404\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Kamokor VII - Moon 1 - Mercantile Club Bureau\" se=\"0.7\" si=\"60003433\" sy=\"Kamokor\" syi=\"30001406\"/>\r\n    <row c=\"Ieyama\" ci=\"20000404\" r=\"The Citadel\" ri=\"10000033\" s=\"Uuna V - Moon 5 - Mercantile Club Academy\" se=\"0.4\" si=\"60003436\" sy=\"Uuna\" syi=\"30002759\"/>\r\n    <row c=\"Ieyama\" ci=\"20000404\" r=\"The Citadel\" ri=\"10000033\" s=\"Ishomilken IX - Moon 12 - Mercantile Club Bureau\" se=\"0.4\" si=\"60003439\" sy=\"Ishomilken\" syi=\"30002756\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Dantumi IV - Moon 8 - Mercantile Club Bureau\" se=\"0.4\" si=\"60003442\" sy=\"Dantumi\" syi=\"30001356\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Aurohunen V - Moon 17 - Mercantile Club Bureau\" se=\"0.4\" si=\"60003445\" sy=\"Aurohunen\" syi=\"30001361\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Isenairos VI - Moon 6 - Mercantile Club Bureau\" se=\"0.8\" si=\"60003448\" sy=\"Isenairos\" syi=\"30002815\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Uotila V - Moon 5 - Mercantile Club Bureau\" se=\"0.6\" si=\"60003451\" sy=\"Uotila\" syi=\"30002814\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Maurasi VIII - Moon 14 - Caldari Business Tribunal\" se=\"0.9\" si=\"60003454\" sy=\"Maurasi\" syi=\"30000140\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Niyabainen IX - Moon 10 - Caldari Business Tribunal Accounting\" se=\"1.0\" si=\"60003457\" sy=\"Niyabainen\" syi=\"30000143\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Jita IV - Moon 10 - Caldari Business Tribunal Law School\" se=\"0.9\" si=\"60003460\" sy=\"Jita\" syi=\"30000142\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Jita VII - Moon 2 - Caldari Business Tribunal Law School\" se=\"0.9\" si=\"60003463\" sy=\"Jita\" syi=\"30000142\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Jita IV - Moon 4 - Caldari Business Tribunal Bureau Offices\" se=\"0.9\" si=\"60003466\" sy=\"Jita\" syi=\"30000142\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Jita IV - Caldari Business Tribunal Information Center\" se=\"0.9\" si=\"60003469\" sy=\"Jita\" syi=\"30000142\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Imih III - Moon 2 - Caldari Business Tribunal Law School\" se=\"0.6\" si=\"60003472\" sy=\"Imih\" syi=\"30005053\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Choga II - Caldari Business Tribunal\" se=\"0.6\" si=\"60003475\" sy=\"Choga\" syi=\"30005051\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Zinkon VII - Moon 1 - Caldari Business Tribunal Accounting\" se=\"0.7\" si=\"60003478\" sy=\"Zinkon\" syi=\"30005055\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nare VI - Moon 1 - Caldari Business Tribunal\" se=\"0.6\" si=\"60003481\" sy=\"Nare\" syi=\"30005054\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Kulu X - Moon 3 - Caldari Business Tribunal Bureau Offices\" se=\"0.6\" si=\"60003484\" sy=\"Kulu\" syi=\"30005050\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Soumi VII - Caldari Business Tribunal Bureau Offices\" se=\"0.6\" si=\"60003487\" sy=\"Soumi\" syi=\"30005052\"/>\r\n    <row c=\"Aptetter\" ci=\"20000498\" r=\"Metropolis\" ri=\"10000042\" s=\"Libold IX - Moon 19 - Caldari Business Tribunal Law School\" se=\"0.6\" si=\"60003490\" sy=\"Libold\" syi=\"30003421\"/>\r\n    <row c=\"Aptetter\" ci=\"20000498\" r=\"Metropolis\" ri=\"10000042\" s=\"Aldrat VIII - Moon 1 - Caldari Business Tribunal Accounting\" se=\"0.6\" si=\"60003493\" sy=\"Aldrat\" syi=\"30003416\"/>\r\n    <row c=\"Aptetter\" ci=\"20000498\" r=\"Metropolis\" ri=\"10000042\" s=\"Fredagod IV - Moon 1 - Caldari Business Tribunal Accounting\" se=\"0.8\" si=\"60003496\" sy=\"Fredagod\" syi=\"30003420\"/>\r\n    <row c=\"Aptetter\" ci=\"20000498\" r=\"Metropolis\" ri=\"10000042\" s=\"Erstur III - Moon 1 - Caldari Business Tribunal\" se=\"0.6\" si=\"60003499\" sy=\"Erstur\" syi=\"30003419\"/>\r\n    <row c=\"Aptetter\" ci=\"20000498\" r=\"Metropolis\" ri=\"10000042\" s=\"Urnhard I - Caldari Business Tribunal Bureau Offices\" se=\"0.6\" si=\"60003502\" sy=\"Urnhard\" syi=\"30003417\"/>\r\n    <row c=\"Aptetter\" ci=\"20000498\" r=\"Metropolis\" ri=\"10000042\" s=\"Fredagod V - Moon 10 - Caldari Business Tribunal Bureau Offices\" se=\"0.8\" si=\"60003505\" sy=\"Fredagod\" syi=\"30003420\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"Oijamon V - Moon 2 - Caldari Business Tribunal Accounting\" se=\"0.8\" si=\"60003508\" sy=\"Oijamon\" syi=\"30002746\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"Oijamon V - Moon 4 - Caldari Business Tribunal\" se=\"0.8\" si=\"60003511\" sy=\"Oijamon\" syi=\"30002746\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"Saikanen III - Moon 3 - Caldari Business Tribunal Accounting\" se=\"0.9\" si=\"60003514\" sy=\"Saikanen\" syi=\"30002745\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"Jeras VII - Moon 13 - Caldari Business Tribunal\" se=\"0.6\" si=\"60003517\" sy=\"Jeras\" syi=\"30002748\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"Kakki V - Moon 9 - Caldari Business Tribunal Bureau Offices\" se=\"0.8\" si=\"60003520\" sy=\"Kakki\" syi=\"30002747\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"Auviken V - Moon 5 - Caldari Business Tribunal Bureau Offices\" se=\"0.8\" si=\"60003523\" sy=\"Auviken\" syi=\"30002744\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"Avele VI - Moon 15 - Caldari Business Tribunal\" se=\"0.7\" si=\"60003526\" sy=\"Avele\" syi=\"30003053\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"Tolle IV - Caldari Business Tribunal\" se=\"0.7\" si=\"60003529\" sy=\"Tolle\" syi=\"30003052\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"Antollare VI - Moon 13 - Caldari Business Tribunal\" se=\"0.7\" si=\"60003532\" sy=\"Antollare\" syi=\"30003051\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"Angymonne V - Moon 6 - Veles Clade Semiosis Theater\" se=\"0.0\" si=\"60003535\" sy=\"Angymonne\" syi=\"30003046\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"Averon VII - Moon 3 - Caldari Business Tribunal Information Center\" se=\"0.6\" si=\"60003538\" sy=\"Averon\" syi=\"30003047\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"Carirgnottin IX - Moon 17 - Caldari Business Tribunal Bureau Offices\" se=\"0.6\" si=\"60003541\" sy=\"Carirgnottin\" syi=\"30003048\"/>\r\n    <row c=\"Nexus\" ci=\"20000397\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Pozirblant V - Caldari Business Tribunal\" se=\"0.7\" si=\"60003544\" sy=\"Pozirblant\" syi=\"30002714\"/>\r\n    <row c=\"Nexus\" ci=\"20000397\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Pozirblant IX - Moon 4 - Caldari Business Tribunal\" se=\"0.7\" si=\"60003547\" sy=\"Pozirblant\" syi=\"30002714\"/>\r\n    <row c=\"Nexus\" ci=\"20000397\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Pozirblant IV - Caldari Business Tribunal\" se=\"0.7\" si=\"60003550\" sy=\"Pozirblant\" syi=\"30002714\"/>\r\n    <row c=\"Nexus\" ci=\"20000397\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Pozirblant VI - Caldari Business Tribunal\" se=\"0.7\" si=\"60003553\" sy=\"Pozirblant\" syi=\"30002714\"/>\r\n    <row c=\"Nexus\" ci=\"20000397\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Pozirblant VIII - Moon 2 - Caldari Business Tribunal Information Center\" se=\"0.7\" si=\"60003556\" sy=\"Pozirblant\" syi=\"30002714\"/>\r\n    <row c=\"Nexus\" ci=\"20000397\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Alillere VI - Moon 3 - Caldari Business Tribunal Bureau Offices\" se=\"0.8\" si=\"60003559\" sy=\"Alillere\" syi=\"30002712\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Stetille V - Moon 5 - Caldari Business Tribunal\" se=\"0.9\" si=\"60003562\" sy=\"Stetille\" syi=\"30002711\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Claysson X - Caldari Business Tribunal Accounting\" se=\"0.9\" si=\"60003565\" sy=\"Claysson\" syi=\"30002708\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Stetille IX - Moon 7 - Caldari Business Tribunal\" se=\"0.9\" si=\"60003568\" sy=\"Stetille\" syi=\"30002711\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Stetille IX - Moon 4 - Caldari Business Tribunal\" se=\"0.9\" si=\"60003571\" sy=\"Stetille\" syi=\"30002711\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Stetille VI - Moon 1 - Caldari Business Tribunal Bureau Offices\" se=\"0.9\" si=\"60003574\" sy=\"Stetille\" syi=\"30002711\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Claysson IV - Moon 1 - Caldari Business Tribunal Information Center\" se=\"0.9\" si=\"60003577\" sy=\"Claysson\" syi=\"30002708\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Gare VIII - Moon 20 - Caldari Business Tribunal\" se=\"0.1\" si=\"60003580\" sy=\"Gare\" syi=\"30003805\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Cumemare III - Moon 13 - Caldari Business Tribunal\" se=\"0.1\" si=\"60003583\" sy=\"Cumemare\" syi=\"30003802\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Gare VIII - Moon 11 - Caldari Business Tribunal\" se=\"0.1\" si=\"60003586\" sy=\"Gare\" syi=\"30003805\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Gare VIII - Moon 8 - Caldari Business Tribunal\" se=\"0.1\" si=\"60003589\" sy=\"Gare\" syi=\"30003805\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Reynire IX - Moon 2 - Caldari Business Tribunal Archives\" se=\"0.2\" si=\"60003592\" sy=\"Reynire\" syi=\"30003803\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Aunsou II - Moon 2 - Caldari Business Tribunal Information Center\" se=\"0.2\" si=\"60003595\" sy=\"Aunsou\" syi=\"30003801\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Oimmo VII - Moon 2 - Caldari Business Tribunal\" se=\"0.5\" si=\"60003598\" sy=\"Oimmo\" syi=\"30001444\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Vuorrassi I - Moon 1 - Caldari Business Tribunal\" se=\"0.5\" si=\"60003601\" sy=\"Vuorrassi\" syi=\"30001443\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Otsasai VII - Moon 6 - Caldari Business Tribunal Accounting\" se=\"0.3\" si=\"60003604\" sy=\"Otsasai\" syi=\"30001446\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Otsasai VII - Moon 10 - Caldari Business Tribunal\" se=\"0.3\" si=\"60003607\" sy=\"Otsasai\" syi=\"30001446\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Hakonen IX - Moon 10 - Caldari Business Tribunal Information Center\" se=\"0.3\" si=\"60003610\" sy=\"Hakonen\" syi=\"30001448\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Vuorrassi VI - Moon 4 - Caldari Business Tribunal Information Center\" se=\"0.5\" si=\"60003613\" sy=\"Vuorrassi\" syi=\"30001443\"/>\r\n    <row c=\"Mise\" ci=\"20000245\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Dabrid V - Moon 1 - Caldari Business Tribunal Accounting\" se=\"0.6\" si=\"60003616\" sy=\"Dabrid\" syi=\"30001660\"/>\r\n    <row c=\"Mise\" ci=\"20000245\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Dabrid III - Moon 3 - Caldari Business Tribunal Law School\" se=\"0.6\" si=\"60003619\" sy=\"Dabrid\" syi=\"30001660\"/>\r\n    <row c=\"Mise\" ci=\"20000245\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Dabrid II - Moon 13 - Caldari Business Tribunal Accounting\" se=\"0.6\" si=\"60003622\" sy=\"Dabrid\" syi=\"30001660\"/>\r\n    <row c=\"Mise\" ci=\"20000245\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Gyerzen IV - Moon 1 - Caldari Business Tribunal Law School\" se=\"0.4\" si=\"60003625\" sy=\"Gyerzen\" syi=\"30001661\"/>\r\n    <row c=\"Mise\" ci=\"20000245\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Seil IV - Moon 9 - Caldari Business Tribunal Bureau Offices\" se=\"0.6\" si=\"60003628\" sy=\"Seil\" syi=\"30001657\"/>\r\n    <row c=\"Mise\" ci=\"20000245\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Sehmosh VIII - Moon 22 - Caldari Business Tribunal Information Center\" se=\"0.6\" si=\"60003631\" sy=\"Sehmosh\" syi=\"30001659\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"Nakatre VIII - Moon 16 - Caldari Business Tribunal\" se=\"0.6\" si=\"60003634\" sy=\"Nakatre\" syi=\"30002988\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"Akes VII - Caldari Business Tribunal Law School\" se=\"0.8\" si=\"60003637\" sy=\"Akes\" syi=\"30002992\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"Nakatre III - Moon 1 - Caldari Business Tribunal\" se=\"0.6\" si=\"60003640\" sy=\"Nakatre\" syi=\"30002988\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"Hakshma VIII - Moon 13 - Caldari Business Tribunal\" se=\"0.6\" si=\"60003643\" sy=\"Hakshma\" syi=\"30002990\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"Nakatre VI - Moon 2 - Caldari Business Tribunal Information Center\" se=\"0.6\" si=\"60003646\" sy=\"Nakatre\" syi=\"30002988\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"Riavayed X - Moon 1 - Caldari Business Tribunal Information Center\" se=\"0.6\" si=\"60003649\" sy=\"Riavayed\" syi=\"30002993\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"Halle II - Caldari Business Tribunal\" se=\"0.7\" si=\"60003652\" sy=\"Halle\" syi=\"30003010\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"Mormoen II - Caldari Business Tribunal Accounting\" se=\"0.7\" si=\"60003655\" sy=\"Mormoen\" syi=\"30003011\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"Amattens VII - Moon 1 - Caldari Business Tribunal Law School\" se=\"0.6\" si=\"60003658\" sy=\"Amattens\" syi=\"30003012\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"Mormoen IV - Moon 1 - Caldari Business Tribunal Accounting\" se=\"0.7\" si=\"60003661\" sy=\"Mormoen\" syi=\"30003011\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"Mormoen V - Moon 2 - Caldari Business Tribunal Archives\" se=\"0.7\" si=\"60003664\" sy=\"Mormoen\" syi=\"30003011\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"Aice IV - Moon 1 - Caldari Business Tribunal Bureau Offices\" se=\"0.7\" si=\"60003667\" sy=\"Aice\" syi=\"30003015\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Hampinen VII - Moon 13 - Caldari Business Tribunal Accounting\" se=\"0.5\" si=\"60003670\" sy=\"Hampinen\" syi=\"30000152\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Hampinen VII - Moon 16 - Caldari Business Tribunal\" se=\"0.5\" si=\"60003673\" sy=\"Hampinen\" syi=\"30000152\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Gekutami VI - Moon 2 - Caldari Business Tribunal Law School\" se=\"0.7\" si=\"60003676\" sy=\"Gekutami\" syi=\"30000149\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Gekutami VIII - Caldari Business Tribunal Accounting\" se=\"0.7\" si=\"60003679\" sy=\"Gekutami\" syi=\"30000149\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Jakanerva IV - Moon 11 - Caldari Business Tribunal Information Center\" se=\"0.7\" si=\"60003682\" sy=\"Jakanerva\" syi=\"30000148\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Jakanerva V - Moon 21 - Caldari Business Tribunal Bureau Offices\" se=\"0.7\" si=\"60003685\" sy=\"Jakanerva\" syi=\"30000148\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Raravath XII - Moon 3 - Caldari Business Tribunal\" se=\"0.4\" si=\"60003688\" sy=\"Raravath\" syi=\"30003530\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Herila I - Caldari Business Tribunal\" se=\"0.8\" si=\"60003691\" sy=\"Herila\" syi=\"30003528\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Namaili V - Moon 7 - Caldari Business Tribunal Law School\" se=\"0.4\" si=\"60003694\" sy=\"Namaili\" syi=\"30003534\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Chemilip IV - Moon 16 - Caldari Business Tribunal\" se=\"0.6\" si=\"60003697\" sy=\"Chemilip\" syi=\"30003529\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Jesoyeh VIII - Moon 8 - Caldari Business Tribunal Archives\" se=\"0.7\" si=\"60003700\" sy=\"Jesoyeh\" syi=\"30003532\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Namaili VI - Moon 25 - Caldari Business Tribunal Archives\" se=\"0.4\" si=\"60003703\" sy=\"Namaili\" syi=\"30003534\"/>\r\n    <row c=\"Tartatven\" ci=\"20000351\" r=\"Molden Heath\" ri=\"10000028\" s=\"Aedald VIII - Moon 6 - Caldari Business Tribunal Accounting\" se=\"0.3\" si=\"60003706\" sy=\"Aedald\" syi=\"30002393\"/>\r\n    <row c=\"Tartatven\" ci=\"20000351\" r=\"Molden Heath\" ri=\"10000028\" s=\"Hrober VII - Moon 8 - Caldari Business Tribunal Law School\" se=\"0.3\" si=\"60003709\" sy=\"Hrober\" syi=\"30002392\"/>\r\n    <row c=\"Tartatven\" ci=\"20000351\" r=\"Molden Heath\" ri=\"10000028\" s=\"Aedald VI - Moon 3 - Caldari Business Tribunal\" se=\"0.3\" si=\"60003712\" sy=\"Aedald\" syi=\"30002393\"/>\r\n    <row c=\"Tartatven\" ci=\"20000351\" r=\"Molden Heath\" ri=\"10000028\" s=\"Heild V - Moon 7 - Caldari Business Tribunal Accounting\" se=\"0.3\" si=\"60003715\" sy=\"Heild\" syi=\"30002390\"/>\r\n    <row c=\"Tartatven\" ci=\"20000351\" r=\"Molden Heath\" ri=\"10000028\" s=\"Heild V - Moon 5 - Caldari Business Tribunal Bureau Offices\" se=\"0.3\" si=\"60003718\" sy=\"Heild\" syi=\"30002390\"/>\r\n    <row c=\"Tartatven\" ci=\"20000351\" r=\"Molden Heath\" ri=\"10000028\" s=\"Aedald VII - Moon 15 - Caldari Business Tribunal Information Center\" se=\"0.3\" si=\"60003721\" sy=\"Aedald\" syi=\"30002393\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"New Caldari V (Oniteseru) - Moon 2 - House of Records Archives\" se=\"1.0\" si=\"60003724\" sy=\"New Caldari\" syi=\"30000145\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"Oiniken III - Moon 1 - House of Records Information Center\" se=\"0.7\" si=\"60003727\" sy=\"Oiniken\" syi=\"30002750\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Ansila VIII - Moon 14 - House of Records Bureau Offices\" se=\"0.9\" si=\"60003730\" sy=\"Ansila\" syi=\"30000132\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Korama V - Moon 13 - House of Records Information Center\" se=\"0.8\" si=\"60003733\" sy=\"Korama\" syi=\"30001394\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"Autaris VI - Moon 2 - House of Records Information Center\" se=\"0.5\" si=\"60003736\" sy=\"Autaris\" syi=\"30001384\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isikano IX - Moon 17 - House of Records Bureau Offices\" se=\"0.7\" si=\"60003739\" sy=\"Isikano\" syi=\"30001387\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Piak II - Moon 4 - House of Records Information Center\" se=\"0.7\" si=\"60003742\" sy=\"Piak\" syi=\"30001403\"/>\r\n    <row c=\"Kainokai\" ci=\"20000207\" r=\"Lonetrek\" ri=\"10000016\" s=\"Kirras IX - House of Records Information Center\" se=\"0.8\" si=\"60003745\" sy=\"Kirras\" syi=\"30001410\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"Venilen XII - Moon 1 - House of Records Archives\" se=\"0.6\" si=\"60003748\" sy=\"Venilen\" syi=\"30002798\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"Jatate IV - Moon 11 - House of Records Archives\" se=\"0.6\" si=\"60003751\" sy=\"Jatate\" syi=\"30000121\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Perimeter II - Moon 1 - Caldari Navy Assembly Plant\" se=\"1.0\" si=\"60003754\" sy=\"Perimeter\" syi=\"30000144\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Jita IV - Moon 5 - Caldari Navy Assembly Plant\" se=\"0.9\" si=\"60003757\" sy=\"Jita\" syi=\"30000142\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Jita IV - Moon 4 - Caldari Navy Assembly Plant\" se=\"0.9\" si=\"60003760\" sy=\"Jita\" syi=\"30000142\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Maurasi IX - Moon 12 - Caldari Navy Assembly Plant\" se=\"0.9\" si=\"60003763\" sy=\"Maurasi\" syi=\"30000140\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Niyabainen IX - Moon 19 - Caldari Navy Logistic Support\" se=\"1.0\" si=\"60003766\" sy=\"Niyabainen\" syi=\"30000143\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Niyabainen IV - Moon 1 - Caldari Navy Assembly Plant\" se=\"1.0\" si=\"60003769\" sy=\"Niyabainen\" syi=\"30000143\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Isenairos VI - Moon 9 - Caldari Navy Logistic Support\" se=\"0.8\" si=\"60003772\" sy=\"Isenairos\" syi=\"30002815\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Isenairos VI - Caldari Navy Logistic Support\" se=\"0.8\" si=\"60003775\" sy=\"Isenairos\" syi=\"30002815\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Oichiya VI - Moon 19 - Caldari Navy Assembly Plant\" se=\"0.8\" si=\"60003778\" sy=\"Oichiya\" syi=\"30002818\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Aramachi II - Moon 4 - Caldari Navy Testing Facilities\" se=\"0.5\" si=\"60003781\" sy=\"Aramachi\" syi=\"30002817\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Saila VII - Moon 14 - Caldari Navy Assembly Plant\" se=\"0.9\" si=\"60003784\" sy=\"Saila\" syi=\"30002816\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Motsu VII - Moon 6 - Caldari Navy Logistic Support\" se=\"0.9\" si=\"60003787\" sy=\"Motsu\" syi=\"30002819\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Suroken IX - Moon 18 - Caldari Navy Assembly Plant\" se=\"0.7\" si=\"60003790\" sy=\"Suroken\" syi=\"30002801\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Suroken VIII - Moon 13 - Caldari Navy Assembly Plant\" se=\"0.7\" si=\"60003793\" sy=\"Suroken\" syi=\"30002801\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Juunigaishi XII - Moon 16 - Caldari Navy Assembly Plant\" se=\"0.6\" si=\"60003796\" sy=\"Juunigaishi\" syi=\"30002803\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Isikesu IV - Moon 5 - Caldari Navy Logistic Support\" se=\"0.7\" si=\"60003799\" sy=\"Isikesu\" syi=\"30002804\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Kusomonmon V - Moon 9 - Caldari Navy Testing Facilities\" se=\"0.8\" si=\"60003802\" sy=\"Kusomonmon\" syi=\"30002802\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Haatomo VI - Moon 3 - Caldari Navy Assembly Plant\" se=\"0.6\" si=\"60003805\" sy=\"Haatomo\" syi=\"30002800\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Hakonen IX - Moon 9 - Caldari Navy Assembly Plant\" se=\"0.3\" si=\"60003808\" sy=\"Hakonen\" syi=\"30001448\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Otsasai VIII - Moon 8 - Caldari Navy Assembly Plant\" se=\"0.3\" si=\"60003811\" sy=\"Otsasai\" syi=\"30001446\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Vuorrassi VI - Moon 2 - Caldari Navy Logistic Support\" se=\"0.5\" si=\"60003814\" sy=\"Vuorrassi\" syi=\"30001443\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Oimmo VII - Caldari Navy Assembly Plant\" se=\"0.5\" si=\"60003817\" sy=\"Oimmo\" syi=\"30001444\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Oimmo V - Moon 1 - Caldari Navy Assembly Plant\" se=\"0.5\" si=\"60003820\" sy=\"Oimmo\" syi=\"30001444\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Otsasai VIII - Moon 3 - Caldari Navy Assembly Plant\" se=\"0.3\" si=\"60003823\" sy=\"Otsasai\" syi=\"30001446\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tunttaras X - Moon 3 - Caldari Navy Logistic Support\" se=\"0.9\" si=\"60003826\" sy=\"Tunttaras\" syi=\"30001379\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tsuguwa VI - Caldari Navy Assembly Plant\" se=\"0.8\" si=\"60003829\" sy=\"Tsuguwa\" syi=\"30001375\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nourvukaiken III - Caldari Navy Assembly Plant\" se=\"0.8\" si=\"60003832\" sy=\"Nourvukaiken\" syi=\"30001376\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nourvukaiken VII - Moon 10 - Caldari Navy Assembly Plant\" se=\"0.8\" si=\"60003835\" sy=\"Nourvukaiken\" syi=\"30001376\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Sarekuwa III - Moon 8 - Caldari Navy Assembly Plant\" se=\"0.9\" si=\"60003838\" sy=\"Sarekuwa\" syi=\"30001377\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nourvukaiken VII - Moon 14 - Caldari Navy Assembly Plant\" se=\"0.8\" si=\"60003841\" sy=\"Nourvukaiken\" syi=\"30001376\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"Oisio V - Moon 6 - Caldari Navy Assembly Plant\" se=\"0.5\" si=\"60003844\" sy=\"Oisio\" syi=\"30002799\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"Kaunokka VI - Moon 2 - The Convocation of Triglav Semiosis Theater\" se=\"0.0\" si=\"60003847\" sy=\"Kaunokka\" syi=\"30002797\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"Kaunokka II - Moon 1 - The Convocation of Triglav Proving Complex\" se=\"0.0\" si=\"60003850\" sy=\"Kaunokka\" syi=\"30002797\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"Venilen IX - Moon 7 - Caldari Navy Testing Facilities\" se=\"0.6\" si=\"60003853\" sy=\"Venilen\" syi=\"30002798\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"Oisio V - Moon 1 - Caldari Navy Assembly Plant\" se=\"0.5\" si=\"60003856\" sy=\"Oisio\" syi=\"30002799\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"Oisio V - Moon 10 - Caldari Navy Assembly Plant\" se=\"0.5\" si=\"60003859\" sy=\"Oisio\" syi=\"30002799\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nonni I - Caldari Navy Assembly Plant\" se=\"0.5\" si=\"60003862\" sy=\"Nonni\" syi=\"30001401\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Piak III - Moon 19 - Caldari Navy Assembly Plant\" se=\"0.7\" si=\"60003865\" sy=\"Piak\" syi=\"30001403\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Aunenen III - Moon 1 - Caldari Navy Assembly Plant\" se=\"0.4\" si=\"60003868\" sy=\"Aunenen\" syi=\"30001398\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nonni IV - Caldari Navy Assembly Plant\" se=\"0.5\" si=\"60003871\" sy=\"Nonni\" syi=\"30001401\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nonni V - Caldari Navy Assembly Plant\" se=\"0.5\" si=\"60003874\" sy=\"Nonni\" syi=\"30001401\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Litiura VIII - Moon 12 - Caldari Navy Logistic Support\" se=\"0.5\" si=\"60003877\" sy=\"Litiura\" syi=\"30001400\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Kakakela VII - Moon 16 - Caldari Navy Assembly Plant\" se=\"1.0\" si=\"60003880\" sy=\"Kakakela\" syi=\"30001405\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Umokka VII - Moon 5 - Caldari Navy Testing Facilities\" se=\"0.6\" si=\"60003883\" sy=\"Umokka\" syi=\"30001409\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Umokka X - Moon 4 - Caldari Navy Testing Facilities\" se=\"0.6\" si=\"60003886\" sy=\"Umokka\" syi=\"30001409\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Kakakela VII - Caldari Navy Assembly Plant\" se=\"1.0\" si=\"60003889\" sy=\"Kakakela\" syi=\"30001405\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Kakakela VI - Moon 18 - Caldari Navy Assembly Plant\" se=\"1.0\" si=\"60003892\" sy=\"Kakakela\" syi=\"30001405\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Kakakela VI - Moon 15 - Caldari Navy Assembly Plant\" se=\"1.0\" si=\"60003895\" sy=\"Kakakela\" syi=\"30001405\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Inoue VI - Moon 9 - Caldari Navy Logistic Support\" se=\"0.6\" si=\"60003898\" sy=\"Inoue\" syi=\"30002738\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Horkkisen XII - Caldari Navy Testing Facilities\" se=\"0.4\" si=\"60003901\" sy=\"Horkkisen\" syi=\"30002741\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Isaziwa X - Moon 3 - Caldari Navy Assembly Plant\" se=\"0.7\" si=\"60003904\" sy=\"Isaziwa\" syi=\"30002739\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Isaziwa XIII - Moon 15 - Caldari Navy Logistic Support\" se=\"0.7\" si=\"60003907\" sy=\"Isaziwa\" syi=\"30002739\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Inoue VIII - Moon 5 - Caldari Navy Logistic Support\" se=\"0.6\" si=\"60003910\" sy=\"Inoue\" syi=\"30002738\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Eitu III - Moon 12 - Caldari Navy Assembly Plant\" se=\"0.5\" si=\"60003913\" sy=\"Eitu\" syi=\"30002740\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Sobaseki VII - Caldari Navy Logistic Support\" se=\"0.8\" si=\"60003916\" sy=\"Sobaseki\" syi=\"30001363\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Funtanainen VIII - Caldari Navy Assembly Plant\" se=\"0.9\" si=\"60003919\" sy=\"Funtanainen\" syi=\"30001364\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Hageken V - Moon 2 - Caldari Navy Assembly Plant\" se=\"0.6\" si=\"60003922\" sy=\"Hageken\" syi=\"30001367\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Sobaseki X - Moon 1 - Caldari Navy Assembly Plant\" se=\"0.8\" si=\"60003925\" sy=\"Sobaseki\" syi=\"30001363\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isikemi VI - Moon 5 - Caldari Navy Logistic Support\" se=\"0.8\" si=\"60003928\" sy=\"Isikemi\" syi=\"30001365\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Funtanainen IV - Moon 1 - Caldari Navy Logistic Support\" se=\"0.9\" si=\"60003931\" sy=\"Funtanainen\" syi=\"30001364\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Poinen V - Moon 12 - Internal Security Assembly Plant\" se=\"0.6\" si=\"60003934\" sy=\"Poinen\" syi=\"30000153\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Poinen V - Moon 26 - Internal Security Assembly Plant\" se=\"0.6\" si=\"60003937\" sy=\"Poinen\" syi=\"30000153\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Airkio IX - Moon 7 - Lai Dai Protection Service Assembly Plant\" se=\"0.9\" si=\"60003940\" sy=\"Airkio\" syi=\"30001404\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Airkio VII - Moon 2 - Lai Dai Protection Service Assembly Plant\" se=\"0.9\" si=\"60003943\" sy=\"Airkio\" syi=\"30001404\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nourvukaiken III - Moon 1 - Lai Dai Protection Service Assembly Plant\" se=\"0.8\" si=\"60003946\" sy=\"Nourvukaiken\" syi=\"30001376\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nourvukaiken VI - Lai Dai Protection Service Assembly Plant\" se=\"0.8\" si=\"60003949\" sy=\"Nourvukaiken\" syi=\"30001376\"/>\r\n    <row c=\"Malariya\" ci=\"20000210\" r=\"Lonetrek\" ri=\"10000016\" s=\"Uesuro V - Moon 15 - Lai Dai Protection Service Assembly Plant\" se=\"0.5\" si=\"60003952\" sy=\"Uesuro\" syi=\"30001432\"/>\r\n    <row c=\"Malariya\" ci=\"20000210\" r=\"Lonetrek\" ri=\"10000016\" s=\"Endatoh VII - Moon 2 - Lai Dai Protection Service Assembly Plant\" se=\"0.6\" si=\"60003955\" sy=\"Endatoh\" syi=\"30001430\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tamo V - Moon 11 - Lai Dai Protection Service Assembly Plant\" se=\"0.3\" si=\"60003958\" sy=\"Tamo\" syi=\"30001437\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Anin IX - Moon 11 - Lai Dai Protection Service Assembly Plant\" se=\"0.4\" si=\"60003961\" sy=\"Anin\" syi=\"30001439\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Malkalen III - Ishukone Watch Assembly Plant\" se=\"0.9\" si=\"60003964\" sy=\"Malkalen\" syi=\"30001393\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Korama VI - Moon 20 - Ishukone Watch Assembly Plant\" se=\"0.8\" si=\"60003967\" sy=\"Korama\" syi=\"30001394\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Korama III - Moon 6 - Ishukone Watch Logistic Support\" se=\"0.8\" si=\"60003970\" sy=\"Korama\" syi=\"30001394\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tamo V - Moon 2 - Ishukone Watch Logistic Support\" se=\"0.3\" si=\"60003973\" sy=\"Tamo\" syi=\"30001437\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nannaras VII - Ishukone Watch Assembly Plant\" se=\"0.4\" si=\"60003976\" sy=\"Nannaras\" syi=\"30001438\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Saranen V - Moon 16 - Ishukone Watch Testing Facilities\" se=\"0.1\" si=\"60003979\" sy=\"Saranen\" syi=\"30001442\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Haajinen XII - Moon 8 - Ishukone Watch Logistic Support\" se=\"0.8\" si=\"60003982\" sy=\"Haajinen\" syi=\"30001424\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Oipo II - Moon 19 - Ishukone Watch Logistic Support\" se=\"0.8\" si=\"60003985\" sy=\"Oipo\" syi=\"30001425\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isinokka VI - Moon 1 - Ishukone Watch Logistic Support\" se=\"0.7\" si=\"60003988\" sy=\"Isinokka\" syi=\"30001426\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"Daras III - Ishukone Watch Assembly Plant\" se=\"0.4\" si=\"60003991\" sy=\"Daras\" syi=\"30001420\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"Otalieto VIII - Moon 10 - Ishukone Watch Logistic Support\" se=\"0.5\" si=\"60003994\" sy=\"Otalieto\" syi=\"30001421\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"Jotenen II - Ishukone Watch Testing Facilities\" se=\"0.6\" si=\"60003997\" sy=\"Jotenen\" syi=\"30001423\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nonni III - Home Guard Testing Facilities\" se=\"0.5\" si=\"60004000\" sy=\"Nonni\" syi=\"30001401\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Elonaya X - Moon 15 - Home Guard Logistic Support\" se=\"0.7\" si=\"60004003\" sy=\"Elonaya\" syi=\"30001399\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nonni III - Moon 1 - Home Guard Assembly Plant\" se=\"0.5\" si=\"60004006\" sy=\"Nonni\" syi=\"30001401\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Aunenen V - Moon 16 - Home Guard Logistic Support\" se=\"0.4\" si=\"60004009\" sy=\"Aunenen\" syi=\"30001398\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Sobaseki XI - Moon 1 - Home Guard Assembly Plant\" se=\"0.8\" si=\"60004012\" sy=\"Sobaseki\" syi=\"30001363\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isikemi V - Home Guard Assembly Plant\" se=\"0.8\" si=\"60004015\" sy=\"Isikemi\" syi=\"30001365\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Sobaseki VIII - Moon 1 - Home Guard Assembly Plant\" se=\"0.8\" si=\"60004018\" sy=\"Sobaseki\" syi=\"30001363\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isikemi I - Home Guard Assembly Plant\" se=\"0.8\" si=\"60004021\" sy=\"Isikemi\" syi=\"30001365\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"Kino VII - Moon 7 - Perun Clade Semiosis Theater\" se=\"0.0\" si=\"60004024\" sy=\"Kino\" syi=\"30001372\"/>\r\n    <row c=\"Haurala\" ci=\"20000200\" r=\"Lonetrek\" ri=\"10000016\" s=\"Uemisaisen VII - Moon 16 - Home Guard Assembly Plant\" se=\"0.6\" si=\"60004027\" sy=\"Uemisaisen\" syi=\"30001368\"/>\r\n    <row c=\"Haurala\" ci=\"20000200\" r=\"Lonetrek\" ri=\"10000016\" s=\"Sotrentaira VII - Moon 15 - Home Guard Logistic Support\" se=\"0.5\" si=\"60004030\" sy=\"Sotrentaira\" syi=\"30001369\"/>\r\n    <row c=\"Haurala\" ci=\"20000200\" r=\"Lonetrek\" ri=\"10000016\" s=\"Erenta II - Moon 2 - Home Guard Assembly Plant\" se=\"0.6\" si=\"60004033\" sy=\"Erenta\" syi=\"30001371\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Torrinos V - Moon 6 - Home Guard Assembly Plant\" se=\"0.5\" si=\"60004036\" sy=\"Torrinos\" syi=\"30001429\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Haajinen XII - Moon 20 - Home Guard Logistic Support\" se=\"0.8\" si=\"60004039\" sy=\"Haajinen\" syi=\"30001424\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Torrinos VI - Moon 16 - Home Guard Logistic Support\" se=\"0.5\" si=\"60004042\" sy=\"Torrinos\" syi=\"30001429\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Torrinos V - Moon 16 - Home Guard Logistic Support\" se=\"0.5\" si=\"60004045\" sy=\"Torrinos\" syi=\"30001429\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Saisio VII - Moon 1 - Peace and Order Unit Testing Facilities\" se=\"0.7\" si=\"60004048\" sy=\"Saisio\" syi=\"30000146\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Hurtoken VII - Moon 3 - Peace and Order Unit Testing Facilities\" se=\"0.6\" si=\"60004051\" sy=\"Hurtoken\" syi=\"30000150\"/>\r\n    <row c=\"Okomon\" ci=\"20000021\" r=\"The Forge\" ri=\"10000002\" s=\"Abagawa VIII - Moon 4 - Peace and Order Unit Logistic Support\" se=\"0.6\" si=\"60004054\" sy=\"Abagawa\" syi=\"30000147\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"Vattuolen XII - Moon 2 - Peace and Order Unit Logistic Support\" se=\"0.7\" si=\"60004057\" sy=\"Vattuolen\" syi=\"30000173\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"Onuse VII - Moon 11 - Peace and Order Unit Assembly Plant\" se=\"0.7\" si=\"60004060\" sy=\"Onuse\" syi=\"30000174\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"Vattuolen X - Moon 14 - Peace and Order Unit Assembly Plant\" se=\"0.7\" si=\"60004063\" sy=\"Vattuolen\" syi=\"30000173\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Ansila VI - Moon 2 - Peace and Order Unit Assembly Plant\" se=\"0.9\" si=\"60004066\" sy=\"Ansila\" syi=\"30000132\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Eskunen X - Moon 16 - Peace and Order Unit Assembly Plant\" se=\"0.6\" si=\"60004069\" sy=\"Eskunen\" syi=\"30000137\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Eskunen X - Moon 13 - Peace and Order Unit Assembly Plant\" se=\"0.6\" si=\"60004072\" sy=\"Eskunen\" syi=\"30000137\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"Ikami VIII - Moon 12 - Peace and Order Unit Logistic Support\" se=\"0.5\" si=\"60004075\" sy=\"Ikami\" syi=\"30000159\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"Akora IX - Moon 8 - Peace and Order Unit Assembly Plant\" se=\"0.3\" si=\"60004078\" sy=\"Akora\" syi=\"30000163\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"Maila V - Moon 2 - Peace and Order Unit Assembly Plant\" se=\"0.4\" si=\"60004081\" sy=\"Maila\" syi=\"30000162\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Muvolailen VIII - Moon 2 - Spacelane Patrol Assembly Plant\" se=\"0.7\" si=\"60004084\" sy=\"Muvolailen\" syi=\"30002780\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Paara I - Spacelane Patrol Logistic Support\" se=\"0.8\" si=\"60004087\" sy=\"Paara\" syi=\"30002775\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Tasabeshi I - Spacelane Patrol Assembly Plant\" se=\"0.8\" si=\"60004090\" sy=\"Tasabeshi\" syi=\"30002778\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Muvolailen IX - Moon 11 - Spacelane Patrol Assembly Plant\" se=\"0.7\" si=\"60004093\" sy=\"Muvolailen\" syi=\"30002780\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Tasabeshi IV - Moon 13 - Spacelane Patrol Logistic Support\" se=\"0.8\" si=\"60004096\" sy=\"Tasabeshi\" syi=\"30002778\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Ono VII - Moon 10 - Spacelane Patrol Testing Facilities\" se=\"0.8\" si=\"60004099\" sy=\"Ono\" syi=\"30002779\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"Auviken VII - Moon 8 - Spacelane Patrol Assembly Plant\" se=\"0.8\" si=\"60004102\" sy=\"Auviken\" syi=\"30002744\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"Auviken IV - Spacelane Patrol Logistic Support\" se=\"0.8\" si=\"60004105\" sy=\"Auviken\" syi=\"30002744\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"Oijamon VI - Moon 17 - Spacelane Patrol Assembly Plant\" se=\"0.8\" si=\"60004108\" sy=\"Oijamon\" syi=\"30002746\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"Auviken V - Moon 1 - Spacelane Patrol Logistic Support\" se=\"0.8\" si=\"60004111\" sy=\"Auviken\" syi=\"30002744\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"Ohvosamon VII - Spacelane Patrol Logistic Support\" se=\"0.7\" si=\"60004114\" sy=\"Ohvosamon\" syi=\"30002743\"/>\r\n    <row c=\"Nagaslaiken\" ci=\"20000402\" r=\"The Citadel\" ri=\"10000033\" s=\"Auviken V - Moon 10 - Spacelane Patrol Logistic Support\" se=\"0.8\" si=\"60004117\" sy=\"Auviken\" syi=\"30002744\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Suroken VI - Spacelane Patrol Assembly Plant\" se=\"0.7\" si=\"60004120\" sy=\"Suroken\" syi=\"30002801\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Juunigaishi III - Spacelane Patrol Assembly Plant\" se=\"0.6\" si=\"60004123\" sy=\"Juunigaishi\" syi=\"30002803\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Suroken VIII - Moon 12 - Spacelane Patrol Assembly Plant\" se=\"0.7\" si=\"60004126\" sy=\"Suroken\" syi=\"30002801\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Anttiri V - Moon 14 - Spacelane Patrol Assembly Plant\" se=\"0.7\" si=\"60004129\" sy=\"Anttiri\" syi=\"30002805\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Isikesu I - Moon 1 - Spacelane Patrol Logistic Support\" se=\"0.7\" si=\"60004132\" sy=\"Isikesu\" syi=\"30002804\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Anttiri V - Moon 6 - Spacelane Patrol Assembly Plant\" se=\"0.7\" si=\"60004135\" sy=\"Anttiri\" syi=\"30002805\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Vuorrassi V - Moon 1 - Spacelane Patrol Assembly Plant\" se=\"0.5\" si=\"60004138\" sy=\"Vuorrassi\" syi=\"30001443\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Oimmo IV - Moon 10 - Spacelane Patrol Assembly Plant\" se=\"0.5\" si=\"60004141\" sy=\"Oimmo\" syi=\"30001444\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Vuorrassi VI - Moon 3 - Spacelane Patrol Assembly Plant\" se=\"0.5\" si=\"60004144\" sy=\"Vuorrassi\" syi=\"30001443\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Vuorrassi V - Moon 13 - Spacelane Patrol Assembly Plant\" se=\"0.5\" si=\"60004147\" sy=\"Vuorrassi\" syi=\"30001443\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"Nalvula IX - Moon 2 - Perun Clade Extractive Terminus\" se=\"0.0\" si=\"60004150\" sy=\"Nalvula\" syi=\"30001445\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Otsasai VIII - Moon 18 - Spacelane Patrol Assembly Plant\" se=\"0.3\" si=\"60004153\" sy=\"Otsasai\" syi=\"30001446\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Santola VIII - Moon 9 - Spacelane Patrol Testing Facilities\" se=\"0.8\" si=\"60004156\" sy=\"Santola\" syi=\"30002785\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Tintoh VII - Moon 10 - Spacelane Patrol Logistic Support\" se=\"0.8\" si=\"60004159\" sy=\"Tintoh\" syi=\"30002784\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Sankkasen VII - Moon 8 - Spacelane Patrol Assembly Plant\" se=\"0.7\" si=\"60004162\" sy=\"Sankkasen\" syi=\"30002783\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Sankkasen VII - Moon 10 - Spacelane Patrol Assembly Plant\" se=\"0.7\" si=\"60004165\" sy=\"Sankkasen\" syi=\"30002783\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Sankkasen II - Spacelane Patrol Assembly Plant\" se=\"0.7\" si=\"60004168\" sy=\"Sankkasen\" syi=\"30002783\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Ikao VII - Moon 8 - Spacelane Patrol Logistic Support\" se=\"0.6\" si=\"60004171\" sy=\"Ikao\" syi=\"30002786\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Enderailen VI - Moon 11 - Spacelane Patrol Assembly Plant\" se=\"0.4\" si=\"60004174\" sy=\"Enderailen\" syi=\"30002769\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Enderailen VIII - Moon 3 - Spacelane Patrol Assembly Plant\" se=\"0.4\" si=\"60004177\" sy=\"Enderailen\" syi=\"30002769\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Kubinen IX - Spacelane Patrol Assembly Plant\" se=\"0.4\" si=\"60004180\" sy=\"Kubinen\" syi=\"30002767\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Enderailen VII - Moon 6 - Spacelane Patrol Assembly Plant\" se=\"0.4\" si=\"60004183\" sy=\"Enderailen\" syi=\"30002769\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Enderailen VI - Moon 17 - Spacelane Patrol Assembly Plant\" se=\"0.4\" si=\"60004186\" sy=\"Enderailen\" syi=\"30002769\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Uedama VI - Moon 8 - Spacelane Patrol Logistic Support\" se=\"0.5\" si=\"60004189\" sy=\"Uedama\" syi=\"30002768\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isinokka V - Moon 2 - Spacelane Patrol Logistic Support\" se=\"0.7\" si=\"60004192\" sy=\"Isinokka\" syi=\"30001426\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isinokka V - Moon 10 - Spacelane Patrol Testing Facilities\" se=\"0.7\" si=\"60004195\" sy=\"Isinokka\" syi=\"30001426\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Oipo III - Moon 8 - Spacelane Patrol Logistic Support\" se=\"0.8\" si=\"60004198\" sy=\"Oipo\" syi=\"30001425\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Torrinos V - Moon 15 - Spacelane Patrol Logistic Support\" se=\"0.5\" si=\"60004201\" sy=\"Torrinos\" syi=\"30001429\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Ibura IX - Moon 11 - Spacelane Patrol Testing Facilities\" se=\"0.6\" si=\"60004204\" sy=\"Ibura\" syi=\"30001428\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Haajinen XI - Moon 7 - Spacelane Patrol Assembly Plant\" se=\"0.8\" si=\"60004207\" sy=\"Haajinen\" syi=\"30001424\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Olo II - Moon 3 - Spacelane Patrol Assembly Plant\" se=\"0.7\" si=\"60004210\" sy=\"Olo\" syi=\"30000158\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Poinen III - Moon 16 - Spacelane Patrol Logistic Support\" se=\"0.6\" si=\"60004213\" sy=\"Poinen\" syi=\"30000153\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Liekuri VI - Spacelane Patrol Assembly Plant\" se=\"0.6\" si=\"60004216\" sy=\"Liekuri\" syi=\"30000154\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Josameto IV - Spacelane Patrol Assembly Plant\" se=\"0.6\" si=\"60004219\" sy=\"Josameto\" syi=\"30000156\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Poinen I - Moon 2 - Spacelane Patrol Logistic Support\" se=\"0.6\" si=\"60004222\" sy=\"Poinen\" syi=\"30000153\"/>\r\n    <row c=\"Onirvura\" ci=\"20000022\" r=\"The Forge\" ri=\"10000002\" s=\"Josameto VIII - Spacelane Patrol Assembly Plant\" se=\"0.6\" si=\"60004225\" sy=\"Josameto\" syi=\"30000156\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Unpas IX - Moon 5 - Spacelane Patrol Logistic Support\" se=\"0.9\" si=\"60004228\" sy=\"Unpas\" syi=\"30000129\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Nomaa IV - Moon 2 - Spacelane Patrol Assembly Plant\" se=\"0.6\" si=\"60004231\" sy=\"Nomaa\" syi=\"30000131\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Sirseshin VIII - Moon 3 - Spacelane Patrol Assembly Plant\" se=\"0.7\" si=\"60004234\" sy=\"Sirseshin\" syi=\"30000127\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Unpas VI - Moon 3 - Spacelane Patrol Assembly Plant\" se=\"0.9\" si=\"60004237\" sy=\"Unpas\" syi=\"30000129\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Tuuriainas II - Spacelane Patrol Assembly Plant\" se=\"0.6\" si=\"60004240\" sy=\"Tuuriainas\" syi=\"30000128\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Shihuken VIII - Moon 2 - Spacelane Patrol Logistic Support\" se=\"0.9\" si=\"60004243\" sy=\"Shihuken\" syi=\"30000130\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Saatuban VIII - Moon 2 - Spacelane Patrol Assembly Plant\" se=\"0.5\" si=\"60004246\" sy=\"Saatuban\" syi=\"30001386\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Pakkonen V - Spacelane Patrol Testing Facilities\" se=\"0.4\" si=\"60004249\" sy=\"Pakkonen\" syi=\"30001390\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Saatuban V - Moon 2 - Spacelane Patrol Logistic Support\" se=\"0.5\" si=\"60004252\" sy=\"Saatuban\" syi=\"30001386\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isikano IV - Moon 1 - Spacelane Patrol Assembly Plant\" se=\"0.7\" si=\"60004255\" sy=\"Isikano\" syi=\"30001387\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Piekura VII - Spacelane Patrol Assembly Plant\" se=\"0.5\" si=\"60004258\" sy=\"Piekura\" syi=\"30001391\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Piekura VIII - Moon 8 - Spacelane Patrol Assembly Plant\" se=\"0.5\" si=\"60004261\" sy=\"Piekura\" syi=\"30001391\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Dantumi VI - Moon 1 - Wiyrkomi Peace Corps Assembly Plant\" se=\"0.4\" si=\"60004264\" sy=\"Dantumi\" syi=\"30001356\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Ossa VII - Moon 11 - Wiyrkomi Peace Corps Logistic Support\" se=\"0.5\" si=\"60004267\" sy=\"Ossa\" syi=\"30001358\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Semiki IX - Moon 4 - Wiyrkomi Peace Corps Testing Facilities\" se=\"0.6\" si=\"60004270\" sy=\"Semiki\" syi=\"30001359\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Saatuban IX - Moon 2 - Wiyrkomi Peace Corps Assembly Plant\" se=\"0.5\" si=\"60004273\" sy=\"Saatuban\" syi=\"30001386\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Piekura VIII - Moon 11 - Wiyrkomi Peace Corps Assembly Plant\" se=\"0.5\" si=\"60004276\" sy=\"Piekura\" syi=\"30001391\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isikano IX - Moon 11 - Wiyrkomi Peace Corps Logistic Support\" se=\"0.7\" si=\"60004279\" sy=\"Isikano\" syi=\"30001387\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"Arvasaras II - Moon 3 - Veles Clade Proving Complex\" se=\"0.0\" si=\"60004282\" sy=\"Arvasaras\" syi=\"30001381\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"Akonoinen VI - Wiyrkomi Peace Corps Logistic Support\" se=\"0.5\" si=\"60004285\" sy=\"Akonoinen\" syi=\"30001382\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"Akonoinen I - Wiyrkomi Peace Corps Assembly Plant\" se=\"0.5\" si=\"60004288\" sy=\"Akonoinen\" syi=\"30001382\"/>\r\n    <row c=\"Haurala\" ci=\"20000200\" r=\"Lonetrek\" ri=\"10000016\" s=\"Uemisaisen V - Moon 5 - Wiyrkomi Peace Corps Assembly Plant\" se=\"0.6\" si=\"60004291\" sy=\"Uemisaisen\" syi=\"30001368\"/>\r\n    <row c=\"Haurala\" ci=\"20000200\" r=\"Lonetrek\" ri=\"10000016\" s=\"Uemisaisen VII - Wiyrkomi Peace Corps Assembly Plant\" se=\"0.6\" si=\"60004294\" sy=\"Uemisaisen\" syi=\"30001368\"/>\r\n    <row c=\"Haurala\" ci=\"20000200\" r=\"Lonetrek\" ri=\"10000016\" s=\"Erenta V - Wiyrkomi Peace Corps Logistic Support\" se=\"0.6\" si=\"60004297\" sy=\"Erenta\" syi=\"30001371\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Suroken VII - Moon 1 - Corporate Police Force Assembly Plant\" se=\"0.7\" si=\"60004300\" sy=\"Suroken\" syi=\"30002801\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Anttiri V - Moon 21 - Corporate Police Force Assembly Plant\" se=\"0.7\" si=\"60004303\" sy=\"Anttiri\" syi=\"30002805\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Kusomonmon VI - Moon 23 - Corporate Police Force Testing Facilities\" se=\"0.8\" si=\"60004306\" sy=\"Kusomonmon\" syi=\"30002802\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Juunigaishi X - Moon 5 - Corporate Police Force Assembly Plant\" se=\"0.6\" si=\"60004309\" sy=\"Juunigaishi\" syi=\"30002803\"/>\r\n    <row c=\"Ieyama\" ci=\"20000404\" r=\"The Citadel\" ri=\"10000033\" s=\"Usi V - Moon 1 - Corporate Police Force Logistic Support\" se=\"0.5\" si=\"60004312\" sy=\"Usi\" syi=\"30002755\"/>\r\n    <row c=\"Ieyama\" ci=\"20000404\" r=\"The Citadel\" ri=\"10000033\" s=\"Manjonakko VI - Moon 3 - Corporate Police Force Testing Facilities\" se=\"0.3\" si=\"60004315\" sy=\"Manjonakko\" syi=\"30002760\"/>\r\n    <row c=\"Ieyama\" ci=\"20000404\" r=\"The Citadel\" ri=\"10000033\" s=\"Nikkishina IX - Moon 6 - Corporate Police Force Logistic Support\" se=\"0.4\" si=\"60004318\" sy=\"Nikkishina\" syi=\"30002757\"/>\r\n    <row c=\"Ieyama\" ci=\"20000404\" r=\"The Citadel\" ri=\"10000033\" s=\"Ishomilken IX - Moon 4 - Corporate Police Force Assembly Plant\" se=\"0.4\" si=\"60004321\" sy=\"Ishomilken\" syi=\"30002756\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"Kaimon III - Moon 1 - Corporate Police Force Assembly Plant\" se=\"0.7\" si=\"60004324\" sy=\"Kaimon\" syi=\"30002751\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"Kaimon II - Moon 10 - Corporate Police Force Assembly Plant\" se=\"0.7\" si=\"60004327\" sy=\"Kaimon\" syi=\"30002751\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"Kaimon III - Moon 10 - Corporate Police Force Assembly Plant\" se=\"0.7\" si=\"60004330\" sy=\"Kaimon\" syi=\"30002751\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"Kaimon I - Moon 1 - Corporate Police Force Assembly Plant\" se=\"0.7\" si=\"60004333\" sy=\"Kaimon\" syi=\"30002751\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Ibura IX - Moon 12 - Corporate Police Force Logistic Support\" se=\"0.6\" si=\"60004336\" sy=\"Ibura\" syi=\"30001428\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Oipo IV - Moon 10 - Corporate Police Force Assembly Plant\" se=\"0.8\" si=\"60004339\" sy=\"Oipo\" syi=\"30001425\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Haajinen X - Corporate Police Force Logistic Support\" se=\"0.8\" si=\"60004342\" sy=\"Haajinen\" syi=\"30001424\"/>\r\n    <row c=\"Asalola\" ci=\"20000209\" r=\"Lonetrek\" ri=\"10000016\" s=\"Oipo IV - Corporate Police Force Assembly Plant\" se=\"0.8\" si=\"60004345\" sy=\"Oipo\" syi=\"30001425\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Inari IX - Moon 13 - Corporate Police Force Testing Facilities\" se=\"0.5\" si=\"60004348\" sy=\"Inari\" syi=\"30002793\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Waskisen IX - Moon 11 - Corporate Police Force Logistic Support\" se=\"0.7\" si=\"60004351\" sy=\"Waskisen\" syi=\"30002790\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Inaro X - Moon 13 - Corporate Police Force Logistic Support\" se=\"0.8\" si=\"60004354\" sy=\"Inaro\" syi=\"30002788\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Irjunen II - Corporate Police Force Assembly Plant\" se=\"0.5\" si=\"60004357\" sy=\"Irjunen\" syi=\"30002792\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Ohmahailen V - Moon 6 - Corporate Police Force Assembly Plant\" se=\"0.7\" si=\"60004360\" sy=\"Ohmahailen\" syi=\"30000136\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Hirtamon VI - Moon 18 - Corporate Police Force Assembly Plant\" se=\"1.0\" si=\"60004363\" sy=\"Hirtamon\" syi=\"30000133\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Ansila X - Moon 1 - Corporate Police Force Assembly Plant\" se=\"0.9\" si=\"60004366\" sy=\"Ansila\" syi=\"30000132\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Ohmahailen V - Moon 7 - Corporate Police Force Assembly Plant\" se=\"0.7\" si=\"60004369\" sy=\"Ohmahailen\" syi=\"30000136\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Uchoshi IX - Moon 4 - Corporate Police Force Logistic Support\" se=\"0.5\" si=\"60004372\" sy=\"Uchoshi\" syi=\"30000201\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Ohkunen IV - Moon 10 - Corporate Police Force Testing Facilities\" se=\"0.4\" si=\"60004375\" sy=\"Ohkunen\" syi=\"30000204\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Eruka VIII - Moon 12 - Corporate Police Force Logistic Support\" se=\"0.4\" si=\"60004378\" sy=\"Eruka\" syi=\"30000203\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Uchoshi I - Corporate Police Force Assembly Plant\" se=\"0.5\" si=\"60004381\" sy=\"Uchoshi\" syi=\"30000201\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Eitu VI - Moon 21 - Corporate Police Force Assembly Plant\" se=\"0.5\" si=\"60004384\" sy=\"Eitu\" syi=\"30002740\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Isaziwa XI - Corporate Police Force Assembly Plant\" se=\"0.7\" si=\"60004387\" sy=\"Isaziwa\" syi=\"30002739\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Eitu VI - Moon 10 - Corporate Police Force Assembly Plant\" se=\"0.5\" si=\"60004390\" sy=\"Eitu\" syi=\"30002740\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Isaziwa VIII - Corporate Police Force Logistic Support\" se=\"0.7\" si=\"60004393\" sy=\"Isaziwa\" syi=\"30002739\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Umokka VII - Corporate Police Force Testing Facilities\" se=\"0.6\" si=\"60004396\" sy=\"Umokka\" syi=\"30001409\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Ruvas IV - Moon 1 - Corporate Police Force Assembly Plant\" se=\"0.8\" si=\"60004399\" sy=\"Ruvas\" syi=\"30001408\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Kakakela VII - Moon 9 - Corporate Police Force Assembly Plant\" se=\"1.0\" si=\"60004402\" sy=\"Kakakela\" syi=\"30001405\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Kakakela VII - Moon 13 - Corporate Police Force Assembly Plant\" se=\"1.0\" si=\"60004405\" sy=\"Kakakela\" syi=\"30001405\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"Hysera II - Corporate Police Force Assembly Plant\" se=\"0.4\" si=\"60004408\" sy=\"Hysera\" syi=\"30002796\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"Yria III - Moon 6 - Corporate Police Force Assembly Plant\" se=\"0.5\" si=\"60004411\" sy=\"Yria\" syi=\"30002794\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"Oshaima VII - Moon 1 - Corporate Police Force Assembly Plant\" se=\"0.5\" si=\"60004414\" sy=\"Oshaima\" syi=\"30002795\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"Oisio VI - Moon 1 - Corporate Police Force Assembly Plant\" se=\"0.5\" si=\"60004417\" sy=\"Oisio\" syi=\"30002799\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Todaki VI - Moon 1 - School of Applied Knowledge\" se=\"1.0\" si=\"60004420\" sy=\"Todaki\" syi=\"30001407\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Jita IV - Moon 6 - Caldari Provisions School\" se=\"0.9\" si=\"60004423\" sy=\"Jita\" syi=\"30000142\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Uchoshi XI - Moon 14 - School of Applied Knowledge\" se=\"0.5\" si=\"60004426\" sy=\"Uchoshi\" syi=\"30000201\"/>\r\n    <row c=\"Malariya\" ci=\"20000210\" r=\"Lonetrek\" ri=\"10000016\" s=\"Uesuro VI - Moon 1 - School of Applied Knowledge\" se=\"0.5\" si=\"60004429\" sy=\"Uesuro\" syi=\"30001432\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isanamo XIV - Moon 9 - Caldari Provisions School\" se=\"0.6\" si=\"60004432\" sy=\"Isanamo\" syi=\"30001389\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"Sakkikainen VI - Moon 8 - School of Applied Knowledge\" se=\"0.6\" si=\"60004435\" sy=\"Sakkikainen\" syi=\"30000167\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Paara VI - Moon 2 - School of Applied Knowledge\" se=\"0.8\" si=\"60004438\" sy=\"Paara\" syi=\"30002775\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Kulelen V - Moon 4 - School of Applied Knowledge\" se=\"0.5\" si=\"60004441\" sy=\"Kulelen\" syi=\"30002771\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Korsiki II - Moon 7 - School of Applied Knowledge\" se=\"0.6\" si=\"60004444\" sy=\"Korsiki\" syi=\"30000181\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Vuorrassi V - Moon 9 - Caldari Provisions School\" se=\"0.5\" si=\"60004447\" sy=\"Vuorrassi\" syi=\"30001443\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Amsen VI - Moon 1 - Science and Trade Institute School\" se=\"1.0\" si=\"60004450\" sy=\"Amsen\" syi=\"30001392\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Isaziwa X - Science and Trade Institute School\" se=\"0.7\" si=\"60004453\" sy=\"Isaziwa\" syi=\"30002739\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Sankkasen VII - Moon 6 - Science and Trade Institute School\" se=\"0.7\" si=\"60004456\" sy=\"Sankkasen\" syi=\"30002783\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Osmon IV - Moon 5 - Science and Trade Institute School\" se=\"0.7\" si=\"60004459\" sy=\"Osmon\" syi=\"30000180\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"Itamo VI - Moon 6 - Science and Trade Institute School\" se=\"0.7\" si=\"60004462\" sy=\"Itamo\" syi=\"30000119\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Uchoshi X - Moon 11 - Science and Trade Institute School\" se=\"0.5\" si=\"60004465\" sy=\"Uchoshi\" syi=\"30000201\"/>\r\n    <row c=\"Mivora\" ci=\"20000028\" r=\"The Forge\" ri=\"10000002\" s=\"Tasti V - Moon 1 - Science and Trade Institute School\" se=\"0.3\" si=\"60004468\" sy=\"Tasti\" syi=\"30000195\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Dantumi V - Moon 19 - Science and Trade Institute School\" se=\"0.4\" si=\"60004471\" sy=\"Dantumi\" syi=\"30001356\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Hentogaira I - Moon 11 - Science and Trade Institute School\" se=\"0.6\" si=\"60004474\" sy=\"Hentogaira\" syi=\"30000188\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"Nalvula IV - Moon 1 - Perun Clade Proving Complex\" se=\"0.0\" si=\"60004477\" sy=\"Nalvula\" syi=\"30001445\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"Eram VIII - Moon 13 - Sebiestor Tribe Bureau\" se=\"0.8\" si=\"60004480\" sy=\"Eram\" syi=\"30003413\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"Eram V - Moon 2 - Sebiestor Tribe Bureau\" se=\"0.8\" si=\"60004483\" sy=\"Eram\" syi=\"30003413\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"Eram IX - Moon 4 - Sebiestor Tribe Bureau\" se=\"0.8\" si=\"60004486\" sy=\"Eram\" syi=\"30003413\"/>\r\n    <row c=\"Rollera\" ci=\"20000505\" r=\"Metropolis\" ri=\"10000042\" s=\"Eurgrana VIII - Moon 18 - Sebiestor Tribe Academy\" se=\"0.4\" si=\"60004489\" sy=\"Eurgrana\" syi=\"30003466\"/>\r\n    <row c=\"Rollera\" ci=\"20000505\" r=\"Metropolis\" ri=\"10000042\" s=\"Eurgrana VII - Moon 13 - Sebiestor Tribe Treasury\" se=\"0.4\" si=\"60004492\" sy=\"Eurgrana\" syi=\"30003466\"/>\r\n    <row c=\"Rollera\" ci=\"20000505\" r=\"Metropolis\" ri=\"10000042\" s=\"Aldik VIII - Moon 2 - Sebiestor Tribe Bureau\" se=\"0.7\" si=\"60004495\" sy=\"Aldik\" syi=\"30003464\"/>\r\n    <row c=\"Panorad\" ci=\"20000503\" r=\"Metropolis\" ri=\"10000042\" s=\"Hakeri VII - Moon 1 - Sebiestor Tribe Bureau\" se=\"0.7\" si=\"60004498\" sy=\"Hakeri\" syi=\"30003449\"/>\r\n    <row c=\"Panorad\" ci=\"20000503\" r=\"Metropolis\" ri=\"10000042\" s=\"Hakeri XI - Moon 14 - Sebiestor Tribe Bureau\" se=\"0.7\" si=\"60004501\" sy=\"Hakeri\" syi=\"30003449\"/>\r\n    <row c=\"Panorad\" ci=\"20000503\" r=\"Metropolis\" ri=\"10000042\" s=\"Josekorn VII - Moon 1 - Sebiestor Tribe Bureau\" se=\"0.6\" si=\"60004504\" sy=\"Josekorn\" syi=\"30003447\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Freatlidur V - Moon 8 - Sebiestor Tribe Bureau\" se=\"0.8\" si=\"60004507\" sy=\"Freatlidur\" syi=\"30003394\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Maturat VII - Moon 4 - Sebiestor Tribe Bureau\" se=\"0.8\" si=\"60004510\" sy=\"Maturat\" syi=\"30003396\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Freatlidur V - Moon 3 - Sebiestor Tribe Bureau\" se=\"0.8\" si=\"60004513\" sy=\"Freatlidur\" syi=\"30003394\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Hek IV - Krusual Tribe Bureau\" se=\"0.8\" si=\"60004516\" sy=\"Hek\" syi=\"30002053\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Anher V - Moon 12 - Krusual Tribe Bureau\" se=\"0.5\" si=\"60004519\" sy=\"Anher\" syi=\"30002051\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Anher IV - Moon 3 - Krusual Tribe Bureau\" se=\"0.5\" si=\"60004522\" sy=\"Anher\" syi=\"30002051\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"Dudreda IV - Krusual Tribe Bureau\" se=\"0.3\" si=\"60004525\" sy=\"Dudreda\" syi=\"30002076\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"Arifsdald III - Moon 10 - Krusual Tribe Bureau\" se=\"0.1\" si=\"60004528\" sy=\"Arifsdald\" syi=\"30002080\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"Dudreda VI - Moon 6 - Krusual Tribe Bureau\" se=\"0.3\" si=\"60004531\" sy=\"Dudreda\" syi=\"30002076\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"Ontorn VIII - Moon 2 - Krusual Tribe Bureau\" se=\"0.3\" si=\"60004534\" sy=\"Ontorn\" syi=\"30002091\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"Ebolfer VI - Moon 2 - Krusual Tribe Bureau\" se=\"0.3\" si=\"60004537\" sy=\"Ebolfer\" syi=\"30002094\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"Frerstorn I - Krusual Tribe Bureau\" se=\"0.3\" si=\"60004540\" sy=\"Frerstorn\" syi=\"30002090\"/>\r\n    <row c=\"Ani\" ci=\"20000305\" r=\"Metropolis\" ri=\"10000042\" s=\"Nakugard VII - Moon 2 - Krusual Tribe Bureau\" se=\"0.5\" si=\"60004543\" sy=\"Nakugard\" syi=\"30002068\"/>\r\n    <row c=\"Ani\" ci=\"20000305\" r=\"Metropolis\" ri=\"10000042\" s=\"Nakugard V - Moon 12 - Krusual Tribe Bureau\" se=\"0.5\" si=\"60004546\" sy=\"Nakugard\" syi=\"30002068\"/>\r\n    <row c=\"Ani\" ci=\"20000305\" r=\"Metropolis\" ri=\"10000042\" s=\"Nakugard VII - Moon 12 - Krusual Tribe Bureau\" se=\"0.5\" si=\"60004549\" sy=\"Nakugard\" syi=\"30002068\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Teonusude VII - Moon 1 - Vherokior Tribe Treasury\" se=\"0.6\" si=\"60004552\" sy=\"Teonusude\" syi=\"30002385\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Gelfiven IX - Moon 15 - Vherokior Tribe Bureau\" se=\"0.6\" si=\"60004555\" sy=\"Gelfiven\" syi=\"30002386\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Gelfiven IX - Moon 8 - Vherokior Tribe Bureau\" se=\"0.6\" si=\"60004558\" sy=\"Gelfiven\" syi=\"30002386\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Egbinger XII - Moon 2 - Vherokior Tribe Treasury\" se=\"0.1\" si=\"60004561\" sy=\"Egbinger\" syi=\"30002420\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Aeditide IV - Moon 1 - Vherokior Tribe Bureau\" se=\"0.2\" si=\"60004564\" sy=\"Aeditide\" syi=\"30002419\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Klingt X - Moon 1 - Vherokior Tribe Bureau\" se=\"0.3\" si=\"60004567\" sy=\"Klingt\" syi=\"30002414\"/>\r\n    <row c=\"Besateoden\" ci=\"20000352\" r=\"Molden Heath\" ri=\"10000028\" s=\"Eldulf VI - Moon 3 - Vherokior Tribe Academy\" se=\"0.6\" si=\"60004570\" sy=\"Eldulf\" syi=\"30002398\"/>\r\n    <row c=\"Besateoden\" ci=\"20000352\" r=\"Molden Heath\" ri=\"10000028\" s=\"Eldulf V - Moon 6 - Vherokior Tribe Academy\" se=\"0.6\" si=\"60004573\" sy=\"Eldulf\" syi=\"30002398\"/>\r\n    <row c=\"Besateoden\" ci=\"20000352\" r=\"Molden Heath\" ri=\"10000028\" s=\"Eldulf IV - Moon 11 - Vherokior Tribe Bureau\" se=\"0.6\" si=\"60004576\" sy=\"Eldulf\" syi=\"30002398\"/>\r\n    <row c=\"Tartatven\" ci=\"20000351\" r=\"Molden Heath\" ri=\"10000028\" s=\"Aedald VII - Moon 5 - Vherokior Tribe Bureau\" se=\"0.3\" si=\"60004579\" sy=\"Aedald\" syi=\"30002393\"/>\r\n    <row c=\"Tartatven\" ci=\"20000351\" r=\"Molden Heath\" ri=\"10000028\" s=\"Heild VI - Vherokior Tribe Bureau\" se=\"0.3\" si=\"60004582\" sy=\"Heild\" syi=\"30002390\"/>\r\n    <row c=\"Tartatven\" ci=\"20000351\" r=\"Molden Heath\" ri=\"10000028\" s=\"Hrokkur VI - Moon 9 - Vherokior Tribe Academy\" se=\"0.3\" si=\"60004585\" sy=\"Hrokkur\" syi=\"30002391\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Rens VI - Moon 8 - Brutor Tribe Treasury\" se=\"0.9\" si=\"60004588\" sy=\"Rens\" syi=\"30002510\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Abudban IX - Moon 7 - Brutor Tribe Bureau\" se=\"0.7\" si=\"60004591\" sy=\"Abudban\" syi=\"30002507\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Rens VII - Moon 17 - Brutor Tribe Bureau\" se=\"0.9\" si=\"60004594\" sy=\"Rens\" syi=\"30002510\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Amamake VI - Moon 6 - Brutor Tribe Bureau\" se=\"0.4\" si=\"60004597\" sy=\"Amamake\" syi=\"30002537\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Auga X - Moon 3 - Brutor Tribe Bureau\" se=\"0.4\" si=\"60004600\" sy=\"Auga\" syi=\"30002542\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Amamake II - Brutor Tribe Bureau\" se=\"0.4\" si=\"60004603\" sy=\"Amamake\" syi=\"30002537\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Emolgranlan VII - Moon 9 - Brutor Tribe Bureau\" se=\"0.5\" si=\"60004606\" sy=\"Emolgranlan\" syi=\"30002548\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Lustrevik VII - Moon 9 - Brutor Tribe Academy\" se=\"0.9\" si=\"60004609\" sy=\"Lustrevik\" syi=\"30002545\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Lustrevik VIII - Moon 9 - Brutor Tribe Bureau\" se=\"0.9\" si=\"60004612\" sy=\"Lustrevik\" syi=\"30002545\"/>\r\n    <row c=\"Odengsolf\" ci=\"20000370\" r=\"Heimatar\" ri=\"10000030\" s=\"Frarn VI - Moon 18 - Brutor Tribe Bureau\" se=\"0.8\" si=\"60004615\" sy=\"Frarn\" syi=\"30002526\"/>\r\n    <row c=\"Odengsolf\" ci=\"20000370\" r=\"Heimatar\" ri=\"10000030\" s=\"Ivar IX - Moon 4 - Brutor Tribe Bureau\" se=\"1.0\" si=\"60004618\" sy=\"Ivar\" syi=\"30002524\"/>\r\n    <row c=\"Odengsolf\" ci=\"20000370\" r=\"Heimatar\" ri=\"10000030\" s=\"Balginia II - Brutor Tribe Bureau\" se=\"0.8\" si=\"60004621\" sy=\"Balginia\" syi=\"30002528\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Illuin III - Republic Parliament Bureau\" se=\"0.9\" si=\"60004624\" sy=\"Illuin\" syi=\"30003377\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Arlulf II - Republic Parliament Bureau\" se=\"1.0\" si=\"60004627\" sy=\"Arlulf\" syi=\"30003374\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Nedegulf VIII - Moon 5 - Republic Parliament Academy\" se=\"0.8\" si=\"60004630\" sy=\"Nedegulf\" syi=\"30003378\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Alf II - Moon 1 - Republic Parliament Bureau\" se=\"1.0\" si=\"60004633\" sy=\"Alf\" syi=\"30003380\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"Egbonbet VI - Moon 11 - Republic Parliament Bureau\" se=\"0.9\" si=\"60004636\" sy=\"Egbonbet\" syi=\"30003401\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"Meimungen VI - Republic Parliament Bureau\" se=\"0.9\" si=\"60004639\" sy=\"Meimungen\" syi=\"30003403\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"Agtver VIII - Moon 2 - Republic Parliament Bureau\" se=\"0.9\" si=\"60004642\" sy=\"Agtver\" syi=\"30003404\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"Evettullur VI - Moon 18 - Republic Parliament Bureau\" se=\"0.8\" si=\"60004645\" sy=\"Evettullur\" syi=\"30003408\"/>\r\n    <row c=\"Eoldulf\" ci=\"20000354\" r=\"Molden Heath\" ri=\"10000028\" s=\"Unertek IX - Moon 16 - Republic Parliament Bureau\" se=\"0.3\" si=\"60004648\" sy=\"Unertek\" syi=\"30002413\"/>\r\n    <row c=\"Krai Svarog\" ci=\"20000788\" r=\"Pochven\" ri=\"10000070\" s=\"Skarkon III - Moon 14 - Svarog Clade Proving Complex\" se=\"0.0\" si=\"60004651\" sy=\"Skarkon\" syi=\"30002411\"/>\r\n    <row c=\"Eoldulf\" ci=\"20000354\" r=\"Molden Heath\" ri=\"10000028\" s=\"Ennur VIII - Moon 7 - Republic Parliament Treasury\" se=\"0.1\" si=\"60004654\" sy=\"Ennur\" syi=\"30002412\"/>\r\n    <row c=\"Eoldulf\" ci=\"20000354\" r=\"Molden Heath\" ri=\"10000028\" s=\"Ennur VIII - Moon 6 - Republic Parliament Treasury\" se=\"0.1\" si=\"60004657\" sy=\"Ennur\" syi=\"30002412\"/>\r\n    <row c=\"Ergruk\" ci=\"20000499\" r=\"Metropolis\" ri=\"10000042\" s=\"Nein IV - Republic Parliament Bureau\" se=\"0.5\" si=\"60004660\" sy=\"Nein\" syi=\"30003423\"/>\r\n    <row c=\"Ergruk\" ci=\"20000499\" r=\"Metropolis\" ri=\"10000042\" s=\"Wirdalen VII - Moon 8 - Republic Parliament Bureau\" se=\"0.6\" si=\"60004663\" sy=\"Wirdalen\" syi=\"30003422\"/>\r\n    <row c=\"Ergruk\" ci=\"20000499\" r=\"Metropolis\" ri=\"10000042\" s=\"Osvestmunnur IX - Republic Parliament Bureau\" se=\"0.5\" si=\"60004666\" sy=\"Osvestmunnur\" syi=\"30003427\"/>\r\n    <row c=\"Ergruk\" ci=\"20000499\" r=\"Metropolis\" ri=\"10000042\" s=\"Wirdalen VII - Moon 17 - Republic Parliament Bureau\" se=\"0.6\" si=\"60004669\" sy=\"Wirdalen\" syi=\"30003422\"/>\r\n    <row c=\"Urtfer\" ci=\"20000376\" r=\"Heimatar\" ri=\"10000030\" s=\"Egmur VII - Moon 15 - Republic Parliament Academy\" se=\"0.7\" si=\"60004672\" sy=\"Egmur\" syi=\"30002563\"/>\r\n    <row c=\"Urtfer\" ci=\"20000376\" r=\"Heimatar\" ri=\"10000030\" s=\"Javrendei VIII - Moon 13 - Republic Parliament Academy\" se=\"0.9\" si=\"60004675\" sy=\"Javrendei\" syi=\"30002564\"/>\r\n    <row c=\"Urtfer\" ci=\"20000376\" r=\"Heimatar\" ri=\"10000030\" s=\"Trer IV - Moon 2 - Republic Parliament Bureau\" se=\"0.7\" si=\"60004678\" sy=\"Trer\" syi=\"30002562\"/>\r\n    <row c=\"Urtfer\" ci=\"20000376\" r=\"Heimatar\" ri=\"10000030\" s=\"Egmur VII - Moon 16 - Republic Parliament Academy\" se=\"0.7\" si=\"60004681\" sy=\"Egmur\" syi=\"30002563\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"Hakisalki X - Republic Parliament Academy\" se=\"0.2\" si=\"60004684\" sy=\"Hakisalki\" syi=\"30002077\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"Krirald VII - Moon 11 - Perun Clade Proving Complex\" se=\"0.0\" si=\"60004687\" sy=\"Krirald\" syi=\"30002079\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"Hakisalki IX - Moon 14 - Republic Parliament Bureau\" se=\"0.2\" si=\"60004690\" sy=\"Hakisalki\" syi=\"30002077\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"Dudreda V - Moon 8 - Republic Parliament Bureau\" se=\"0.3\" si=\"60004693\" sy=\"Dudreda\" syi=\"30002076\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Lumegen V - Moon 1 - Republic Parliament Treasury\" se=\"0.6\" si=\"60004696\" sy=\"Lumegen\" syi=\"30003432\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Lumegen V - Republic Parliament Academy\" se=\"0.6\" si=\"60004699\" sy=\"Lumegen\" syi=\"30003432\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Oppold VI - Moon 16 - Republic Parliament Bureau\" se=\"0.7\" si=\"60004702\" sy=\"Oppold\" syi=\"30003430\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Tratokard IV - Moon 2 - Republic Parliament Bureau\" se=\"0.6\" si=\"60004705\" sy=\"Tratokard\" syi=\"30003431\"/>\r\n    <row c=\"Argeir\" ci=\"20000504\" r=\"Metropolis\" ri=\"10000042\" s=\"Ridoner VI - Moon 1 - Republic Parliament Bureau\" se=\"0.7\" si=\"60004708\" sy=\"Ridoner\" syi=\"30003457\"/>\r\n    <row c=\"Argeir\" ci=\"20000504\" r=\"Metropolis\" ri=\"10000042\" s=\"Klaevik VII - Moon 13 - Republic Parliament Bureau\" se=\"0.6\" si=\"60004711\" sy=\"Klaevik\" syi=\"30003458\"/>\r\n    <row c=\"Argeir\" ci=\"20000504\" r=\"Metropolis\" ri=\"10000042\" s=\"Orduin V - Moon 7 - Republic Parliament Bureau\" se=\"0.8\" si=\"60004714\" sy=\"Orduin\" syi=\"30003453\"/>\r\n    <row c=\"Argeir\" ci=\"20000504\" r=\"Metropolis\" ri=\"10000042\" s=\"Orduin VIII - Moon 1 - Republic Parliament Bureau\" se=\"0.8\" si=\"60004717\" sy=\"Orduin\" syi=\"30003453\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Vimeini VII - Moon 19 - Republic Parliament Bureau\" se=\"0.4\" si=\"60004720\" sy=\"Vimeini\" syi=\"30002088\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Turnur I - Republic Parliament Bureau (Damaged)\" se=\"0.4\" si=\"60004723\" sy=\"Turnur\" syi=\"30002086\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Avenod V - Moon 1 - Republic Parliament Academy\" se=\"0.4\" si=\"60004726\" sy=\"Avenod\" syi=\"30002089\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Avenod VI - Moon 9 - Republic Parliament Academy\" se=\"0.4\" si=\"60004729\" sy=\"Avenod\" syi=\"30002089\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"Oremmulf V - Moon 4 - Republic Parliament Bureau\" se=\"0.9\" si=\"60004732\" sy=\"Oremmulf\" syi=\"30002571\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"Osaumuni VIII - Moon 22 - Republic Parliament Bureau\" se=\"0.9\" si=\"60004735\" sy=\"Osaumuni\" syi=\"30002569\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"Vullat VII - Moon 9 - Republic Parliament Academy\" se=\"1.0\" si=\"60004738\" sy=\"Vullat\" syi=\"30002573\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"Hurjafren VI - Moon 17 - Republic Parliament Bureau\" se=\"0.9\" si=\"60004741\" sy=\"Hurjafren\" syi=\"30002572\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Pator VII (Kulheim) - Moon 1 - Republic Fleet Testing Facilities\" se=\"1.0\" si=\"60004744\" sy=\"Pator\" syi=\"30002544\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Pator V (Vakir) - Republic Fleet Logistic Support\" se=\"1.0\" si=\"60004747\" sy=\"Pator\" syi=\"30002544\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Isendeldik IX - Moon 6 - Republic Fleet Logistic Support\" se=\"0.8\" si=\"60004750\" sy=\"Isendeldik\" syi=\"30002546\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Emolgranlan VI - Republic Fleet Assembly Plant\" se=\"0.5\" si=\"60004753\" sy=\"Emolgranlan\" syi=\"30002548\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Eystur III - Moon 1 - Republic Fleet Assembly Plant\" se=\"0.9\" si=\"60004756\" sy=\"Eystur\" syi=\"30002543\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Lustrevik VII - Moon 7 - Republic Fleet Logistic Support\" se=\"0.9\" si=\"60004759\" sy=\"Lustrevik\" syi=\"30002545\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Klogori III - Republic Fleet Logistic Support\" se=\"0.3\" si=\"60004762\" sy=\"Klogori\" syi=\"30002097\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Klogori II - Moon 1 - Republic Fleet Assembly Plant\" se=\"0.3\" si=\"60004765\" sy=\"Klogori\" syi=\"30002097\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Klogori V - Moon 2 - Republic Fleet Assembly Plant\" se=\"0.3\" si=\"60004768\" sy=\"Klogori\" syi=\"30002097\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Taff V - Moon 13 - Republic Fleet Assembly Plant\" se=\"0.2\" si=\"60004771\" sy=\"Taff\" syi=\"30002100\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Klogori VI - Moon 1 - Republic Fleet Assembly Plant\" se=\"0.3\" si=\"60004774\" sy=\"Klogori\" syi=\"30002097\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Taff V - Moon 16 - Republic Fleet Assembly Plant\" se=\"0.2\" si=\"60004777\" sy=\"Taff\" syi=\"30002100\"/>\r\n    <row c=\"Almur\" ci=\"20000353\" r=\"Molden Heath\" ri=\"10000028\" s=\"Sakulda IX - Moon 2 - Republic Fleet Testing Facilities\" se=\"0.3\" si=\"60004780\" sy=\"Sakulda\" syi=\"30002405\"/>\r\n    <row c=\"Almur\" ci=\"20000353\" r=\"Molden Heath\" ri=\"10000028\" s=\"Hedaleolfarber IX - Moon 23 - Republic Fleet Testing Facilities\" se=\"0.3\" si=\"60004783\" sy=\"Hedaleolfarber\" syi=\"30002406\"/>\r\n    <row c=\"Almur\" ci=\"20000353\" r=\"Molden Heath\" ri=\"10000028\" s=\"Half X - Moon 10 - Republic Fleet Assembly Plant\" se=\"0.2\" si=\"60004786\" sy=\"Half\" syi=\"30002404\"/>\r\n    <row c=\"Almur\" ci=\"20000353\" r=\"Molden Heath\" ri=\"10000028\" s=\"Hedaleolfarber II - Moon 1 - Republic Fleet Testing Facilities\" se=\"0.3\" si=\"60004789\" sy=\"Hedaleolfarber\" syi=\"30002406\"/>\r\n    <row c=\"Almur\" ci=\"20000353\" r=\"Molden Heath\" ri=\"10000028\" s=\"Istodard IX - Moon 5 - Republic Fleet Assembly Plant\" se=\"0.3\" si=\"60004792\" sy=\"Istodard\" syi=\"30002402\"/>\r\n    <row c=\"Almur\" ci=\"20000353\" r=\"Molden Heath\" ri=\"10000028\" s=\"Istodard VIII - Moon 4 - Republic Fleet Logistic Support\" se=\"0.3\" si=\"60004795\" sy=\"Istodard\" syi=\"30002402\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Bosena V - Moon 1 - Republic Fleet Assembly Plant\" se=\"0.4\" si=\"60004798\" sy=\"Bosena\" syi=\"30002387\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Gelfiven IX - Moon 17 - Republic Fleet Assembly Plant\" se=\"0.6\" si=\"60004801\" sy=\"Gelfiven\" syi=\"30002386\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Gelfiven III - Moon 1 - Republic Fleet Assembly Plant\" se=\"0.6\" si=\"60004804\" sy=\"Gelfiven\" syi=\"30002386\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Gulfonodi X - Moon 13 - Republic Fleet Logistic Support\" se=\"0.5\" si=\"60004807\" sy=\"Gulfonodi\" syi=\"30002384\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Gulfonodi X - Moon 15 - Republic Fleet Testing Facilities\" se=\"0.5\" si=\"60004810\" sy=\"Gulfonodi\" syi=\"30002384\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Teonusude III - Moon 1 - Republic Fleet Assembly Plant\" se=\"0.6\" si=\"60004813\" sy=\"Teonusude\" syi=\"30002385\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Amamake II - Moon 1 - Republic Fleet Logistic Support\" se=\"0.4\" si=\"60004816\" sy=\"Amamake\" syi=\"30002537\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Amamake IV - Republic Fleet Assembly Plant\" se=\"0.4\" si=\"60004819\" sy=\"Amamake\" syi=\"30002537\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Amamake VI - Moon 5 - Republic Fleet Logistic Support\" se=\"0.4\" si=\"60004822\" sy=\"Amamake\" syi=\"30002537\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Auga VIII - Moon 2 - Republic Fleet Assembly Plant\" se=\"0.4\" si=\"60004825\" sy=\"Auga\" syi=\"30002542\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Dal III - Moon 1 - Republic Fleet Assembly Plant\" se=\"0.4\" si=\"60004828\" sy=\"Dal\" syi=\"30002541\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Amamake VI - Moon 10 - Republic Fleet Logistic Support\" se=\"0.4\" si=\"60004831\" sy=\"Amamake\" syi=\"30002537\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"Arifsdald III - Moon 10 - Republic Fleet Assembly Plant\" se=\"0.1\" si=\"60004834\" sy=\"Arifsdald\" syi=\"30002080\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"Krirald VII - Moon 14 - Perun Clade Mutaplasmid Farm\" se=\"0.0\" si=\"60004837\" sy=\"Krirald\" syi=\"30002079\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"Dudreda V - Moon 3 - Republic Fleet Assembly Plant\" se=\"0.3\" si=\"60004840\" sy=\"Dudreda\" syi=\"30002076\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"Arwa X - Moon 3 - Republic Fleet Assembly Plant\" se=\"0.1\" si=\"60004843\" sy=\"Arwa\" syi=\"30002078\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"Dudreda VI - Moon 12 - Republic Fleet Assembly Plant\" se=\"0.3\" si=\"60004846\" sy=\"Dudreda\" syi=\"30002076\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"Hakisalki VIII - Moon 23 - Republic Fleet Logistic Support\" se=\"0.2\" si=\"60004849\" sy=\"Hakisalki\" syi=\"30002077\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Evati VI - Moon 3 - Republic Fleet Logistic Support\" se=\"0.2\" si=\"60004852\" sy=\"Evati\" syi=\"30002060\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Helgatild VII - Moon 10 - Republic Fleet Assembly Plant\" se=\"0.2\" si=\"60004855\" sy=\"Helgatild\" syi=\"30002063\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Evati IX - Moon 12 - Republic Fleet Assembly Plant\" se=\"0.2\" si=\"60004858\" sy=\"Evati\" syi=\"30002060\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Lasleinur V - Moon 11 - Republic Fleet Assembly Plant\" se=\"0.2\" si=\"60004861\" sy=\"Lasleinur\" syi=\"30002065\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Ofstold V - Moon 13 - Republic Fleet Logistic Support\" se=\"0.3\" si=\"60004864\" sy=\"Ofstold\" syi=\"30002061\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Lasleinur II - Moon 3 - Republic Fleet Assembly Plant\" se=\"0.2\" si=\"60004867\" sy=\"Lasleinur\" syi=\"30002065\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Egbinger XI - Moon 3 - Republic Fleet Testing Facilities\" se=\"0.1\" si=\"60004870\" sy=\"Egbinger\" syi=\"30002420\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Hegfunden IV - Moon 1 - Republic Fleet Assembly Plant\" se=\"0.3\" si=\"60004873\" sy=\"Hegfunden\" syi=\"30002418\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Weld III - Moon 6 - Republic Fleet Logistic Support\" se=\"0.3\" si=\"60004876\" sy=\"Weld\" syi=\"30002415\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Klingt III - Republic Fleet Assembly Plant\" se=\"0.3\" si=\"60004879\" sy=\"Klingt\" syi=\"30002414\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Aeditide V - Republic Fleet Assembly Plant\" se=\"0.2\" si=\"60004882\" sy=\"Aeditide\" syi=\"30002419\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Klingt IX - Moon 4 - Republic Fleet Logistic Support\" se=\"0.3\" si=\"60004885\" sy=\"Klingt\" syi=\"30002414\"/>\r\n    <row c=\"Tiat\" ci=\"20000303\" r=\"Metropolis\" ri=\"10000042\" s=\"Ardar V - Moon 2 - Republic Fleet Logistic Support\" se=\"0.4\" si=\"60004888\" sy=\"Ardar\" syi=\"30002058\"/>\r\n    <row c=\"Tiat\" ci=\"20000303\" r=\"Metropolis\" ri=\"10000042\" s=\"Resbroko I - Moon 7 - Republic Fleet Assembly Plant\" se=\"0.4\" si=\"60004891\" sy=\"Resbroko\" syi=\"30002056\"/>\r\n    <row c=\"Tiat\" ci=\"20000303\" r=\"Metropolis\" ri=\"10000042\" s=\"Auner V - Republic Fleet Logistic Support\" se=\"0.4\" si=\"60004894\" sy=\"Auner\" syi=\"30002059\"/>\r\n    <row c=\"Tiat\" ci=\"20000303\" r=\"Metropolis\" ri=\"10000042\" s=\"Hadozeko VIII - Moon 5 - Republic Fleet Assembly Plant\" se=\"0.4\" si=\"60004897\" sy=\"Hadozeko\" syi=\"30002057\"/>\r\n    <row c=\"Tiat\" ci=\"20000303\" r=\"Metropolis\" ri=\"10000042\" s=\"Hadozeko IV - Moon 1 - Republic Fleet Assembly Plant\" se=\"0.4\" si=\"60004900\" sy=\"Hadozeko\" syi=\"30002057\"/>\r\n    <row c=\"Tiat\" ci=\"20000303\" r=\"Metropolis\" ri=\"10000042\" s=\"Amo VIII - Moon 2 - Republic Fleet Assembly Plant\" se=\"0.5\" si=\"60004903\" sy=\"Amo\" syi=\"30002055\"/>\r\n    <row c=\"Tartatven\" ci=\"20000351\" r=\"Molden Heath\" ri=\"10000028\" s=\"Hrober VI - Republic Fleet Testing Facilities\" se=\"0.3\" si=\"60004906\" sy=\"Hrober\" syi=\"30002392\"/>\r\n    <row c=\"Tartatven\" ci=\"20000351\" r=\"Molden Heath\" ri=\"10000028\" s=\"Hrober VII - Moon 5 - Republic Fleet Testing Facilities\" se=\"0.3\" si=\"60004909\" sy=\"Hrober\" syi=\"30002392\"/>\r\n    <row c=\"Tartatven\" ci=\"20000351\" r=\"Molden Heath\" ri=\"10000028\" s=\"Heild VII - Moon 12 - Republic Fleet Assembly Plant\" se=\"0.3\" si=\"60004912\" sy=\"Heild\" syi=\"30002390\"/>\r\n    <row c=\"Tartatven\" ci=\"20000351\" r=\"Molden Heath\" ri=\"10000028\" s=\"Heild II - Republic Fleet Logistic Support\" se=\"0.3\" si=\"60004915\" sy=\"Heild\" syi=\"30002390\"/>\r\n    <row c=\"Tartatven\" ci=\"20000351\" r=\"Molden Heath\" ri=\"10000028\" s=\"Hrokkur V - Moon 17 - Republic Fleet Assembly Plant\" se=\"0.3\" si=\"60004918\" sy=\"Hrokkur\" syi=\"30002391\"/>\r\n    <row c=\"Tartatven\" ci=\"20000351\" r=\"Molden Heath\" ri=\"10000028\" s=\"Heild VII - Moon 21 - Republic Fleet Assembly Plant\" se=\"0.3\" si=\"60004921\" sy=\"Heild\" syi=\"30002390\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Arlulf III - Moon 11 - Republic Justice Department Law School\" se=\"1.0\" si=\"60004924\" sy=\"Arlulf\" syi=\"30003374\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Stirht VII - Republic Justice Department Accounting\" se=\"0.9\" si=\"60004927\" sy=\"Stirht\" syi=\"30003376\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Brundakur VI - Moon 7 - Republic Justice Department Tribunal\" se=\"0.9\" si=\"60004930\" sy=\"Brundakur\" syi=\"30003375\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Illuin VI - Moon 5 - Republic Justice Department Accounting\" se=\"0.9\" si=\"60004933\" sy=\"Illuin\" syi=\"30003377\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Anbald X - Moon 8 - Republic Justice Department Law School\" se=\"0.7\" si=\"60004936\" sy=\"Anbald\" syi=\"30003398\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Anbald X - Moon 12 - Republic Justice Department Accounting\" se=\"0.7\" si=\"60004939\" sy=\"Anbald\" syi=\"30003398\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Maturat IX - Moon 2 - Republic Justice Department Law School\" se=\"0.8\" si=\"60004942\" sy=\"Maturat\" syi=\"30003396\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Maturat IX - Moon 15 - Republic Justice Department Tribunal\" se=\"0.8\" si=\"60004945\" sy=\"Maturat\" syi=\"30003396\"/>\r\n    <row c=\"Panorad\" ci=\"20000503\" r=\"Metropolis\" ri=\"10000042\" s=\"Josekorn VI - Republic Justice Department Tribunal\" se=\"0.6\" si=\"60004948\" sy=\"Josekorn\" syi=\"30003447\"/>\r\n    <row c=\"Panorad\" ci=\"20000503\" r=\"Metropolis\" ri=\"10000042\" s=\"Hakeri VI - Republic Justice Department Tribunal\" se=\"0.7\" si=\"60004951\" sy=\"Hakeri\" syi=\"30003449\"/>\r\n    <row c=\"Panorad\" ci=\"20000503\" r=\"Metropolis\" ri=\"10000042\" s=\"Dantbeinn III - Moon 5 - Republic Justice Department Law School\" se=\"0.7\" si=\"60004954\" sy=\"Dantbeinn\" syi=\"30003451\"/>\r\n    <row c=\"Panorad\" ci=\"20000503\" r=\"Metropolis\" ri=\"10000042\" s=\"Dantbeinn V - Moon 4 - Republic Justice Department Accounting\" se=\"0.7\" si=\"60004957\" sy=\"Dantbeinn\" syi=\"30003451\"/>\r\n    <row c=\"Evannater\" ci=\"20000375\" r=\"Heimatar\" ri=\"10000030\" s=\"Gusandall IV - Republic Justice Department Tribunal\" se=\"0.4\" si=\"60004960\" sy=\"Gusandall\" syi=\"30002556\"/>\r\n    <row c=\"Evannater\" ci=\"20000375\" r=\"Heimatar\" ri=\"10000030\" s=\"Endrulf IV - Moon 1 - Republic Justice Department Accounting\" se=\"0.6\" si=\"60004963\" sy=\"Endrulf\" syi=\"30002558\"/>\r\n    <row c=\"Evannater\" ci=\"20000375\" r=\"Heimatar\" ri=\"10000030\" s=\"Gultratren III - Moon 12 - Republic Justice Department Tribunal\" se=\"0.3\" si=\"60004966\" sy=\"Gultratren\" syi=\"30002560\"/>\r\n    <row c=\"Evannater\" ci=\"20000375\" r=\"Heimatar\" ri=\"10000030\" s=\"Ingunn V - Moon 19 - Republic Justice Department Tribunal\" se=\"0.3\" si=\"60004969\" sy=\"Ingunn\" syi=\"30002559\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Gukarla VII - Moon 13 - Republic Justice Department Law School\" se=\"0.1\" si=\"60004972\" sy=\"Gukarla\" syi=\"30002102\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Ualkin VI - Moon 4 - Republic Justice Department Accounting\" se=\"0.2\" si=\"60004975\" sy=\"Ualkin\" syi=\"30002101\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Gukarla VI - Republic Justice Department Accounting\" se=\"0.1\" si=\"60004978\" sy=\"Gukarla\" syi=\"30002102\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Egmar XII - Moon 10 - Republic Justice Department Law School\" se=\"0.3\" si=\"60004981\" sy=\"Egmar\" syi=\"30002099\"/>\r\n    <row c=\"Osta\" ci=\"20000369\" r=\"Heimatar\" ri=\"10000030\" s=\"Kronsur III - Moon 1 - Republic Justice Department Tribunal\" se=\"0.9\" si=\"60004984\" sy=\"Kronsur\" syi=\"30002519\"/>\r\n    <row c=\"Osta\" ci=\"20000369\" r=\"Heimatar\" ri=\"10000030\" s=\"Sist VI - Moon 4 - Republic Justice Department Accounting\" se=\"0.8\" si=\"60004987\" sy=\"Sist\" syi=\"30002521\"/>\r\n    <row c=\"Osta\" ci=\"20000369\" r=\"Heimatar\" ri=\"10000030\" s=\"Kronsur VI - Moon 2 - Republic Justice Department Tribunal\" se=\"0.9\" si=\"60004990\" sy=\"Kronsur\" syi=\"30002519\"/>\r\n    <row c=\"Osta\" ci=\"20000369\" r=\"Heimatar\" ri=\"10000030\" s=\"Sist VI - Moon 2 - Republic Justice Department Law School\" se=\"0.8\" si=\"60004993\" sy=\"Sist\" syi=\"30002521\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Ofstold VI - Moon 15 - Republic Justice Department Law School\" se=\"0.3\" si=\"60004996\" sy=\"Ofstold\" syi=\"30002061\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Brin VI - Moon 7 - Republic Justice Department Accounting\" se=\"0.2\" si=\"60004999\" sy=\"Brin\" syi=\"30002067\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Evati II - Moon 1 - Republic Justice Department Tribunal\" se=\"0.2\" si=\"60005002\" sy=\"Evati\" syi=\"30002060\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Lasleinur II - Moon 5 - Republic Justice Department Accounting\" se=\"0.2\" si=\"60005005\" sy=\"Lasleinur\" syi=\"30002065\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Isendeldik IX - Moon 14 - Republic Justice Department Accounting\" se=\"0.8\" si=\"60005008\" sy=\"Isendeldik\" syi=\"30002546\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Emolgranlan V - Moon 12 - Republic Justice Department Tribunal\" se=\"0.5\" si=\"60005011\" sy=\"Emolgranlan\" syi=\"30002548\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Lustrevik V - Republic Justice Department Law School\" se=\"0.9\" si=\"60005014\" sy=\"Lustrevik\" syi=\"30002545\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Eystur VI - Republic Justice Department Tribunal\" se=\"0.9\" si=\"60005017\" sy=\"Eystur\" syi=\"30002543\"/>\r\n    <row c=\"Frar\" ci=\"20000501\" r=\"Metropolis\" ri=\"10000042\" s=\"Tollus X - Moon 4 - Republic Justice Department Tribunal\" se=\"0.8\" si=\"60005020\" sy=\"Tollus\" syi=\"30003436\"/>\r\n    <row c=\"Frar\" ci=\"20000501\" r=\"Metropolis\" ri=\"10000042\" s=\"Ogoten XII - Moon 2 - Republic Justice Department Accounting\" se=\"0.7\" si=\"60005023\" sy=\"Ogoten\" syi=\"30003437\"/>\r\n    <row c=\"Frar\" ci=\"20000501\" r=\"Metropolis\" ri=\"10000042\" s=\"Tollus XI - Moon 1 - Republic Justice Department Law School\" se=\"0.8\" si=\"60005026\" sy=\"Tollus\" syi=\"30003436\"/>\r\n    <row c=\"Frar\" ci=\"20000501\" r=\"Metropolis\" ri=\"10000042\" s=\"Polstodur VIII - Moon 6 - Republic Justice Department Tribunal\" se=\"0.8\" si=\"60005029\" sy=\"Polstodur\" syi=\"30003434\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Dal VI - Moon 1 - Republic Justice Department Tribunal\" se=\"0.4\" si=\"60005032\" sy=\"Dal\" syi=\"30002541\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Amamake II - Republic Justice Department Tribunal\" se=\"0.4\" si=\"60005035\" sy=\"Amamake\" syi=\"30002537\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Amamake II - Moon 1 - Republic Justice Department Tribunal\" se=\"0.4\" si=\"60005038\" sy=\"Amamake\" syi=\"30002537\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Dal IV - Moon 17 - Republic Justice Department Tribunal\" se=\"0.4\" si=\"60005041\" sy=\"Dal\" syi=\"30002541\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Abudban X - Moon 10 - Urban Management Bureau Offices\" se=\"0.7\" si=\"60005044\" sy=\"Abudban\" syi=\"30002507\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Osoggur VI - Urban Management Information Center\" se=\"0.5\" si=\"60005047\" sy=\"Osoggur\" syi=\"30002506\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Trytedald V - Moon 12 - Urban Management Archives\" se=\"0.9\" si=\"60005050\" sy=\"Trytedald\" syi=\"30002508\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Pator III (Huggar) - Moon 2 - Republic Security Services Assembly Plant\" se=\"1.0\" si=\"60005053\" sy=\"Pator\" syi=\"30002544\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Lustrevik VIII - Moon 9 - Republic Security Services Assembly Plant\" se=\"0.9\" si=\"60005056\" sy=\"Lustrevik\" syi=\"30002545\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Pator VII (Kulheim) - Republic Security Services Assembly Plant\" se=\"1.0\" si=\"60005059\" sy=\"Pator\" syi=\"30002544\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Eystur III - Moon 1 - Republic Security Services Assembly Plant\" se=\"0.9\" si=\"60005062\" sy=\"Eystur\" syi=\"30002543\"/>\r\n    <row c=\"Yekti\" ci=\"20000511\" r=\"Domain\" ri=\"10000043\" s=\"Saana III - Moon 6 - Republic Security Services Logistic Support\" se=\"0.6\" si=\"60005065\" sy=\"Saana\" syi=\"30003506\"/>\r\n    <row c=\"Yekti\" ci=\"20000511\" r=\"Domain\" ri=\"10000043\" s=\"Bahromab VIII - Moon 6 - Republic Security Services Assembly Plant\" se=\"0.6\" si=\"60005068\" sy=\"Bahromab\" syi=\"30003502\"/>\r\n    <row c=\"Yekti\" ci=\"20000511\" r=\"Domain\" ri=\"10000043\" s=\"Bahromab IX - Republic Security Services Assembly Plant\" se=\"0.6\" si=\"60005071\" sy=\"Bahromab\" syi=\"30003502\"/>\r\n    <row c=\"Yekti\" ci=\"20000511\" r=\"Domain\" ri=\"10000043\" s=\"Madirmilire VI - Moon 12 - Republic Security Services Assembly Plant\" se=\"0.6\" si=\"60005074\" sy=\"Madirmilire\" syi=\"30003503\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"Gulmorogod VIII - Moon 15 - Republic Security Services Testing Facilities\" se=\"0.4\" si=\"60005077\" sy=\"Gulmorogod\" syi=\"30002517\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"Bosboger VI - Moon 7 - Republic Security Services Assembly Plant\" se=\"0.3\" si=\"60005080\" sy=\"Bosboger\" syi=\"30002514\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"Olfeim II - Republic Security Services Testing Facilities\" se=\"0.4\" si=\"60005083\" sy=\"Olfeim\" syi=\"30002515\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"Alakgur VII - Moon 3 - Republic Security Services Assembly Plant\" se=\"0.6\" si=\"60005086\" sy=\"Alakgur\" syi=\"30002512\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Aharalel III - Moon 7 - Republic Security Services Logistic Support\" se=\"0.6\" si=\"60005089\" sy=\"Aharalel\" syi=\"30004082\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Dresi I - Moon 18 - Republic Security Services Assembly Plant\" se=\"0.6\" si=\"60005092\" sy=\"Dresi\" syi=\"30004078\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Aphend VI - Moon 12 - Republic Security Services Logistic Support\" se=\"0.6\" si=\"60005095\" sy=\"Aphend\" syi=\"30004079\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Gensela VIII - Moon 3 - Republic Security Services Assembly Plant\" se=\"0.7\" si=\"60005098\" sy=\"Gensela\" syi=\"30004083\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Assiad III - Republic Security Services Assembly Plant\" se=\"0.9\" si=\"60005101\" sy=\"Assiad\" syi=\"30001723\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Assiad VI - Moon 3 - Republic Security Services Assembly Plant\" se=\"0.9\" si=\"60005104\" sy=\"Assiad\" syi=\"30001723\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Rand VI - Moon 15 - Republic Security Services Logistic Support\" se=\"0.9\" si=\"60005107\" sy=\"Rand\" syi=\"30001727\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Iswa VIII - Republic Security Services Logistic Support\" se=\"0.8\" si=\"60005110\" sy=\"Iswa\" syi=\"30001726\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Floseswin VI - Moon 2 - Republic Security Services Logistic Support\" se=\"0.4\" si=\"60005113\" sy=\"Floseswin\" syi=\"30002082\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Isbrabata VIII - Moon 5 - Republic Security Services Assembly Plant\" se=\"0.4\" si=\"60005116\" sy=\"Isbrabata\" syi=\"30002087\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Turnur II - Moon 5 - Republic Security Services Assembly Plant\" se=\"0.4\" si=\"60005119\" sy=\"Turnur\" syi=\"30002086\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Uisper IX - Moon 5 - Republic Security Services Assembly Plant\" se=\"0.4\" si=\"60005122\" sy=\"Uisper\" syi=\"30002083\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Algasienan IV - Moon 1 - Republic Security Services Assembly Plant\" se=\"0.7\" si=\"60005125\" sy=\"Algasienan\" syi=\"30003811\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Pelille VI - Moon 10 - Republic Security Services Assembly Plant\" se=\"0.2\" si=\"60005128\" sy=\"Pelille\" syi=\"30003806\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Dour VII - Moon 2 - Republic Security Services Assembly Plant\" se=\"0.4\" si=\"60005131\" sy=\"Dour\" syi=\"30003807\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Vivanier VII - Moon 12 - Republic Security Services Assembly Plant\" se=\"0.5\" si=\"60005134\" sy=\"Vivanier\" syi=\"30003810\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Aakari VII - Moon 6 - Republic Security Services Assembly Plant\" se=\"0.7\" si=\"60005137\" sy=\"Aakari\" syi=\"30001396\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Korama VI - Republic Security Services Assembly Plant\" se=\"0.8\" si=\"60005140\" sy=\"Korama\" syi=\"30001394\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Ylandoki V - Moon 10 - Republic Security Services Assembly Plant\" se=\"0.8\" si=\"60005143\" sy=\"Ylandoki\" syi=\"30001395\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Korama II - Moon 5 - Republic Security Services Logistic Support\" se=\"0.8\" si=\"60005146\" sy=\"Korama\" syi=\"30001394\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Reblier IV - Republic Security Services Logistic Support\" se=\"0.4\" si=\"60005149\" sy=\"Reblier\" syi=\"30005328\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Masalle VII - Moon 17 - Republic Security Services Logistic Support\" se=\"0.8\" si=\"60005152\" sy=\"Masalle\" syi=\"30005325\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Scolluzer XI - Republic Security Services Assembly Plant\" se=\"0.8\" si=\"60005155\" sy=\"Scolluzer\" syi=\"30005322\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Masalle IX - Republic Security Services Logistic Support\" se=\"0.8\" si=\"60005158\" sy=\"Masalle\" syi=\"30005325\"/>\r\n    <row c=\"Yestadan\" ci=\"20000324\" r=\"Domain\" ri=\"10000043\" s=\"Gaha IV - Moon 5 - Republic Security Services Assembly Plant\" se=\"0.7\" si=\"60005161\" sy=\"Gaha\" syi=\"30002204\"/>\r\n    <row c=\"Yestadan\" ci=\"20000324\" r=\"Domain\" ri=\"10000043\" s=\"Gaha VII - Moon 2 - Republic Security Services Logistic Support\" se=\"0.7\" si=\"60005164\" sy=\"Gaha\" syi=\"30002204\"/>\r\n    <row c=\"Yestadan\" ci=\"20000324\" r=\"Domain\" ri=\"10000043\" s=\"Uchat X - Moon 18 - Republic Security Services Assembly Plant\" se=\"0.7\" si=\"60005167\" sy=\"Uchat\" syi=\"30002209\"/>\r\n    <row c=\"Yestadan\" ci=\"20000324\" r=\"Domain\" ri=\"10000043\" s=\"Murema IV - Republic Security Services Assembly Plant\" se=\"0.7\" si=\"60005170\" sy=\"Murema\" syi=\"30002206\"/>\r\n    <row c=\"Finena\" ci=\"20000740\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Shaha IV - Moon 2 - Republic Security Services Assembly Plant\" se=\"0.6\" si=\"60005173\" sy=\"Shaha\" syi=\"30005057\"/>\r\n    <row c=\"Finena\" ci=\"20000740\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Neesher VI - Moon 20 - Republic Security Services Assembly Plant\" se=\"0.5\" si=\"60005176\" sy=\"Neesher\" syi=\"30005058\"/>\r\n    <row c=\"Finena\" ci=\"20000740\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Neesher VI - Moon 15 - Republic Security Services Assembly Plant\" se=\"0.5\" si=\"60005179\" sy=\"Neesher\" syi=\"30005058\"/>\r\n    <row c=\"Finena\" ci=\"20000740\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Kizama VI - Moon 4 - Republic Security Services Logistic Support\" se=\"0.7\" si=\"60005182\" sy=\"Kizama\" syi=\"30005056\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Croleur III - Moon 1 - Republic Security Services Testing Facilities\" se=\"0.6\" si=\"60005185\" sy=\"Croleur\" syi=\"30002705\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Croleur VIII - Moon 2 - Republic Security Services Testing Facilities\" se=\"0.6\" si=\"60005188\" sy=\"Croleur\" syi=\"30002705\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Adrallezoen V - Republic Security Services Logistic Support\" se=\"0.5\" si=\"60005191\" sy=\"Adrallezoen\" syi=\"30002704\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Bawilan V - Republic Security Services Assembly Plant\" se=\"0.5\" si=\"60005194\" sy=\"Bawilan\" syi=\"30002700\"/>\r\n    <row c=\"Isoma\" ci=\"20000412\" r=\"The Citadel\" ri=\"10000033\" s=\"Sujarento VIII - Moon 1 - Republic Security Services Assembly Plant\" se=\"0.3\" si=\"60005197\" sy=\"Sujarento\" syi=\"30002809\"/>\r\n    <row c=\"Isoma\" ci=\"20000412\" r=\"The Citadel\" ri=\"10000033\" s=\"Tannolen VI - Moon 14 - Republic Security Services Testing Facilities\" se=\"0.3\" si=\"60005200\" sy=\"Tannolen\" syi=\"30002812\"/>\r\n    <row c=\"Isoma\" ci=\"20000412\" r=\"The Citadel\" ri=\"10000033\" s=\"Tama VII - Moon 9 - Republic Security Services Testing Facilities\" se=\"0.3\" si=\"60005203\" sy=\"Tama\" syi=\"30002813\"/>\r\n    <row c=\"Isoma\" ci=\"20000412\" r=\"The Citadel\" ri=\"10000033\" s=\"Onatoh IV - Republic Security Services Assembly Plant\" se=\"0.3\" si=\"60005206\" sy=\"Onatoh\" syi=\"30002811\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Tourier III - Republic Security Services Assembly Plant\" se=\"0.9\" si=\"60005209\" sy=\"Tourier\" syi=\"30005301\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Alenia V - Moon 5 - Republic Security Services Assembly Plant\" se=\"0.9\" si=\"60005212\" sy=\"Alenia\" syi=\"30005302\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Vaere III - Moon 1 - Republic Security Services Logistic Support\" se=\"0.8\" si=\"60005215\" sy=\"Vaere\" syi=\"30005306\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Tourier VI - Moon 13 - Republic Security Services Assembly Plant\" se=\"0.9\" si=\"60005218\" sy=\"Tourier\" syi=\"30005301\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Wysalan VIII - Moon 1 - Republic Security Services Assembly Plant\" se=\"0.8\" si=\"60005221\" sy=\"Wysalan\" syi=\"30005016\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Ane IV - Moon 18 - Republic Security Services Logistic Support\" se=\"0.3\" si=\"60005224\" sy=\"Ane\" syi=\"30005022\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Yona VIII - Moon 8 - Republic Security Services Assembly Plant\" se=\"0.8\" si=\"60005227\" sy=\"Yona\" syi=\"30005017\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Adrel IV - Moon 9 - Republic Security Services Logistic Support\" se=\"0.6\" si=\"60005230\" sy=\"Adrel\" syi=\"30005021\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Hagilur IV - Moon 2 - Minmatar Mining Corporation Mining Outpost\" se=\"0.4\" si=\"60005233\" sy=\"Hagilur\" syi=\"30002050\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Hek II - Moon 1 - Minmatar Mining Corporation Mineral Reserve\" se=\"0.8\" si=\"60005236\" sy=\"Hek\" syi=\"30002053\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Uttindar V - Moon 17 - Minmatar Mining Corporation Mining Outpost\" se=\"0.5\" si=\"60005239\" sy=\"Uttindar\" syi=\"30002049\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Uttindar VII - Moon 4 - Minmatar Mining Corporation Mining Outpost\" se=\"0.5\" si=\"60005242\" sy=\"Uttindar\" syi=\"30002049\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Uttindar VI - Moon 6 - Minmatar Mining Corporation Mineral Reserve\" se=\"0.5\" si=\"60005245\" sy=\"Uttindar\" syi=\"30002049\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Hagilur I - Minmatar Mining Corporation Mineral Reserve\" se=\"0.4\" si=\"60005248\" sy=\"Hagilur\" syi=\"30002050\"/>\r\n    <row c=\"Inkelm\" ci=\"20000502\" r=\"Metropolis\" ri=\"10000042\" s=\"Moselgi XI - Minmatar Mining Corporation Refinery\" se=\"0.7\" si=\"60005251\" sy=\"Moselgi\" syi=\"30003443\"/>\r\n    <row c=\"Inkelm\" ci=\"20000502\" r=\"Metropolis\" ri=\"10000042\" s=\"Finanar X - Moon 15 - Minmatar Mining Corporation Mineral Reserve\" se=\"0.5\" si=\"60005254\" sy=\"Finanar\" syi=\"30003442\"/>\r\n    <row c=\"Inkelm\" ci=\"20000502\" r=\"Metropolis\" ri=\"10000042\" s=\"Mateber IX - Moon 15 - Minmatar Mining Corporation Refinery\" se=\"0.3\" si=\"60005257\" sy=\"Mateber\" syi=\"30003444\"/>\r\n    <row c=\"Inkelm\" ci=\"20000502\" r=\"Metropolis\" ri=\"10000042\" s=\"Finanar VIII - Moon 2 - Minmatar Mining Corporation Mineral Reserve\" se=\"0.5\" si=\"60005260\" sy=\"Finanar\" syi=\"30003442\"/>\r\n    <row c=\"Inkelm\" ci=\"20000502\" r=\"Metropolis\" ri=\"10000042\" s=\"Moselgi IV - Minmatar Mining Corporation Refinery\" se=\"0.7\" si=\"60005263\" sy=\"Moselgi\" syi=\"30003443\"/>\r\n    <row c=\"Inkelm\" ci=\"20000502\" r=\"Metropolis\" ri=\"10000042\" s=\"Mateber VIII - Moon 5 - Minmatar Mining Corporation Mining Outpost\" se=\"0.3\" si=\"60005266\" sy=\"Mateber\" syi=\"30003444\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Klogori III - Minmatar Mining Corporation Mineral Reserve\" se=\"0.3\" si=\"60005269\" sy=\"Klogori\" syi=\"30002097\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Egmar V - Minmatar Mining Corporation Mineral Reserve\" se=\"0.3\" si=\"60005272\" sy=\"Egmar\" syi=\"30002099\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Ualkin VII - Moon 3 - Minmatar Mining Corporation Mining Outpost\" se=\"0.2\" si=\"60005275\" sy=\"Ualkin\" syi=\"30002101\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Taff V - Moon 4 - Minmatar Mining Corporation Refinery\" se=\"0.2\" si=\"60005278\" sy=\"Taff\" syi=\"30002100\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Gukarla VII - Moon 3 - Minmatar Mining Corporation Mineral Reserve\" se=\"0.1\" si=\"60005281\" sy=\"Gukarla\" syi=\"30002102\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Gukarla IV - Moon 1 - Minmatar Mining Corporation Mineral Reserve\" se=\"0.1\" si=\"60005284\" sy=\"Gukarla\" syi=\"30002102\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Aldilur IX - Minmatar Mining Corporation Mining Outpost\" se=\"0.9\" si=\"60005287\" sy=\"Aldilur\" syi=\"30003379\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Aldilur V - Moon 6 - Minmatar Mining Corporation Mining Outpost\" se=\"0.9\" si=\"60005290\" sy=\"Aldilur\" syi=\"30003379\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Aldilur V - Moon 15 - Minmatar Mining Corporation Mining Outpost\" se=\"0.9\" si=\"60005293\" sy=\"Aldilur\" syi=\"30003379\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Aldilur VII - Moon 10 - Minmatar Mining Corporation Mining Outpost\" se=\"0.9\" si=\"60005296\" sy=\"Aldilur\" syi=\"30003379\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Aldilur III - Minmatar Mining Corporation Mining Outpost\" se=\"0.9\" si=\"60005299\" sy=\"Aldilur\" syi=\"30003379\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Aldilur VII - Moon 7 - Minmatar Mining Corporation Mining Outpost\" se=\"0.9\" si=\"60005302\" sy=\"Aldilur\" syi=\"30003379\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"Reset IV - Moon 4 - Minmatar Mining Corporation Mineral Reserve\" se=\"0.7\" si=\"60005305\" sy=\"Reset\" syi=\"30003391\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"Reset V - Moon 13 - Minmatar Mining Corporation Mining Outpost\" se=\"0.7\" si=\"60005308\" sy=\"Reset\" syi=\"30003391\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"Eygfe VII - Moon 19 - Minmatar Mining Corporation Refinery\" se=\"0.7\" si=\"60005311\" sy=\"Eygfe\" syi=\"30003392\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"Reset V - Moon 4 - Minmatar Mining Corporation Mineral Reserve\" se=\"0.7\" si=\"60005314\" sy=\"Reset\" syi=\"30003391\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"Reset V - Moon 22 - Minmatar Mining Corporation Mining Outpost\" se=\"0.7\" si=\"60005317\" sy=\"Reset\" syi=\"30003391\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"Reset VII - Moon 19 - Minmatar Mining Corporation Mineral Reserve\" se=\"0.7\" si=\"60005320\" sy=\"Reset\" syi=\"30003391\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"Tamekamur V - Moon 17 - Minmatar Mining Corporation Refinery\" se=\"0.9\" si=\"60005323\" sy=\"Tamekamur\" syi=\"30003407\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"Evettullur I - Minmatar Mining Corporation Refinery\" se=\"0.8\" si=\"60005326\" sy=\"Evettullur\" syi=\"30003408\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"Situner VI - Moon 13 - Minmatar Mining Corporation Mining Outpost\" se=\"0.8\" si=\"60005329\" sy=\"Situner\" syi=\"30003406\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"Hjortur V - Moon 5 - Minmatar Mining Corporation Refinery\" se=\"0.9\" si=\"60005332\" sy=\"Hjortur\" syi=\"30003400\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"Hjortur VII - Moon 8 - Minmatar Mining Corporation Mineral Reserve\" se=\"0.9\" si=\"60005335\" sy=\"Hjortur\" syi=\"30003400\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"Datulen IV - Moon 12 - Minmatar Mining Corporation Refinery\" se=\"0.9\" si=\"60005338\" sy=\"Datulen\" syi=\"30003405\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Gulfonodi X - Moon 18 - Minmatar Mining Corporation Mining Outpost\" se=\"0.5\" si=\"60005341\" sy=\"Gulfonodi\" syi=\"30002384\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Gulfonodi VIII - Moon 15 - Minmatar Mining Corporation Mineral Reserve\" se=\"0.5\" si=\"60005344\" sy=\"Gulfonodi\" syi=\"30002384\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Atlar VII - Moon 3 - Minmatar Mining Corporation Refinery\" se=\"0.4\" si=\"60005347\" sy=\"Atlar\" syi=\"30002389\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Gulfonodi V - Minmatar Mining Corporation Mining Outpost\" se=\"0.5\" si=\"60005350\" sy=\"Gulfonodi\" syi=\"30002384\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Gelfiven X - Moon 4 - Minmatar Mining Corporation Refinery\" se=\"0.6\" si=\"60005353\" sy=\"Gelfiven\" syi=\"30002386\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Gulfonodi VIII - Moon 6 - Minmatar Mining Corporation Refinery\" se=\"0.5\" si=\"60005356\" sy=\"Gulfonodi\" syi=\"30002384\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Weld VI - Moon 1 - Minmatar Mining Corporation Refinery\" se=\"0.3\" si=\"60005359\" sy=\"Weld\" syi=\"30002415\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Egbinger IX - Moon 8 - Minmatar Mining Corporation Mining Outpost\" se=\"0.1\" si=\"60005362\" sy=\"Egbinger\" syi=\"30002420\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Weld III - Moon 5 - Minmatar Mining Corporation Mineral Reserve\" se=\"0.3\" si=\"60005365\" sy=\"Weld\" syi=\"30002415\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Egbinger III - Moon 1 - Minmatar Mining Corporation Mining Outpost\" se=\"0.1\" si=\"60005368\" sy=\"Egbinger\" syi=\"30002420\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Weld IV - Moon 9 - Minmatar Mining Corporation Mining Outpost\" se=\"0.3\" si=\"60005371\" sy=\"Weld\" syi=\"30002415\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Weld IV - Moon 10 - Minmatar Mining Corporation Mineral Reserve\" se=\"0.3\" si=\"60005374\" sy=\"Weld\" syi=\"30002415\"/>\r\n    <row c=\"Aptetter\" ci=\"20000498\" r=\"Metropolis\" ri=\"10000042\" s=\"Aldrat IX - Moon 13 - Minmatar Mining Corporation Mineral Reserve\" se=\"0.6\" si=\"60005377\" sy=\"Aldrat\" syi=\"30003416\"/>\r\n    <row c=\"Aptetter\" ci=\"20000498\" r=\"Metropolis\" ri=\"10000042\" s=\"Libold IX - Moon 20 - Minmatar Mining Corporation Mining Outpost\" se=\"0.6\" si=\"60005380\" sy=\"Libold\" syi=\"30003421\"/>\r\n    <row c=\"Aptetter\" ci=\"20000498\" r=\"Metropolis\" ri=\"10000042\" s=\"Hardbako III - Moon 1 - Minmatar Mining Corporation Refinery\" se=\"0.7\" si=\"60005383\" sy=\"Hardbako\" syi=\"30003418\"/>\r\n    <row c=\"Aptetter\" ci=\"20000498\" r=\"Metropolis\" ri=\"10000042\" s=\"Aldrat VII - Moon 7 - Minmatar Mining Corporation Mineral Reserve\" se=\"0.6\" si=\"60005386\" sy=\"Aldrat\" syi=\"30003416\"/>\r\n    <row c=\"Aptetter\" ci=\"20000498\" r=\"Metropolis\" ri=\"10000042\" s=\"Fredagod V - Moon 15 - Minmatar Mining Corporation Mineral Reserve\" se=\"0.8\" si=\"60005389\" sy=\"Fredagod\" syi=\"30003420\"/>\r\n    <row c=\"Aptetter\" ci=\"20000498\" r=\"Metropolis\" ri=\"10000042\" s=\"Libold VII - Moon 5 - Minmatar Mining Corporation Mining Outpost\" se=\"0.6\" si=\"60005392\" sy=\"Libold\" syi=\"30003421\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Floseswin VIII - Moon 15 - Minmatar Mining Corporation Mineral Reserve\" se=\"0.4\" si=\"60005395\" sy=\"Floseswin\" syi=\"30002082\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Floseswin VIII - Moon 7 - Minmatar Mining Corporation Mineral Reserve\" se=\"0.4\" si=\"60005398\" sy=\"Floseswin\" syi=\"30002082\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Aset VII - Moon 1 - Minmatar Mining Corporation Refinery\" se=\"0.4\" si=\"60005401\" sy=\"Aset\" syi=\"30002084\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Avenod VII - Moon 19 - Minmatar Mining Corporation Mineral Reserve\" se=\"0.4\" si=\"60005404\" sy=\"Avenod\" syi=\"30002089\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Avenod VII - Moon 13 - Minmatar Mining Corporation Mining Outpost\" se=\"0.4\" si=\"60005407\" sy=\"Avenod\" syi=\"30002089\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Uisper VI - Moon 5 - Minmatar Mining Corporation Refinery\" se=\"0.4\" si=\"60005410\" sy=\"Uisper\" syi=\"30002083\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"Aldagolf V - Core Complexion Inc. Warehouse\" se=\"0.6\" si=\"60005413\" sy=\"Aldagolf\" syi=\"30003415\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"Eram IX - Moon 5 - Core Complexion Inc. Factory\" se=\"0.8\" si=\"60005416\" sy=\"Eram\" syi=\"30003413\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"Arlek I - Moon 5 - Core Complexion Inc. Factory\" se=\"1.0\" si=\"60005419\" sy=\"Arlek\" syi=\"30003411\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"Yrmori IV - Moon 17 - Core Complexion Inc. Factory\" se=\"0.6\" si=\"60005422\" sy=\"Yrmori\" syi=\"30003414\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"Elgoi VII - Moon 6 - Core Complexion Inc. Storage\" se=\"0.9\" si=\"60005425\" sy=\"Elgoi\" syi=\"30003412\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"Elgoi VIII - Moon 18 - Core Complexion Inc. Storage\" se=\"0.9\" si=\"60005428\" sy=\"Elgoi\" syi=\"30003412\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Reynire IV - Core Complexion Inc. Factory\" se=\"0.2\" si=\"60005431\" sy=\"Reynire\" syi=\"30003803\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Aunsou IV - Moon 3 - Core Complexion Inc. Factory\" se=\"0.2\" si=\"60005434\" sy=\"Aunsou\" syi=\"30003801\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Reynire VI - Core Complexion Inc. Warehouse\" se=\"0.2\" si=\"60005437\" sy=\"Reynire\" syi=\"30003803\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Gare VIII - Core Complexion Inc. Factory\" se=\"0.1\" si=\"60005440\" sy=\"Gare\" syi=\"30003805\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Reynire X - Moon 1 - Core Complexion Inc. Storage\" se=\"0.2\" si=\"60005443\" sy=\"Reynire\" syi=\"30003803\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Pain VI - Core Complexion Inc. Storage\" se=\"0.1\" si=\"60005446\" sy=\"Pain\" syi=\"30003804\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Shihuken VII - Moon 9 - Core Complexion Inc. Warehouse\" se=\"0.9\" si=\"60005449\" sy=\"Shihuken\" syi=\"30000130\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Tuuriainas II - Core Complexion Inc. Factory\" se=\"0.6\" si=\"60005452\" sy=\"Tuuriainas\" syi=\"30000128\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Tuuriainas IV - Core Complexion Inc. Factory\" se=\"0.6\" si=\"60005455\" sy=\"Tuuriainas\" syi=\"30000128\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Tuuriainas III - Core Complexion Inc. Factory\" se=\"0.6\" si=\"60005458\" sy=\"Tuuriainas\" syi=\"30000128\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Shihuken VI - Moon 2 - Core Complexion Inc. Storage\" se=\"0.9\" si=\"60005461\" sy=\"Shihuken\" syi=\"30000130\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Unpas VI - Moon 10 - Core Complexion Inc. Storage\" se=\"0.9\" si=\"60005464\" sy=\"Unpas\" syi=\"30000129\"/>\r\n    <row c=\"Mulata\" ci=\"20000329\" r=\"Domain\" ri=\"10000043\" s=\"Hizhara IX - Moon 5 - Core Complexion Inc. Factory\" se=\"0.6\" si=\"60005467\" sy=\"Hizhara\" syi=\"30002245\"/>\r\n    <row c=\"Mulata\" ci=\"20000329\" r=\"Domain\" ri=\"10000043\" s=\"Ahala VIII - Core Complexion Inc. Warehouse\" se=\"0.5\" si=\"60005470\" sy=\"Ahala\" syi=\"30002247\"/>\r\n    <row c=\"Mulata\" ci=\"20000329\" r=\"Domain\" ri=\"10000043\" s=\"Arera VIII - Moon 16 - Core Complexion Inc. Factory\" se=\"0.6\" si=\"60005473\" sy=\"Arera\" syi=\"30002244\"/>\r\n    <row c=\"Mulata\" ci=\"20000329\" r=\"Domain\" ri=\"10000043\" s=\"Ahala VII - Moon 1 - Core Complexion Inc. Warehouse\" se=\"0.5\" si=\"60005476\" sy=\"Ahala\" syi=\"30002247\"/>\r\n    <row c=\"Mulata\" ci=\"20000329\" r=\"Domain\" ri=\"10000043\" s=\"Ruchy II - Moon 8 - Core Complexion Inc. Storage\" se=\"0.4\" si=\"60005479\" sy=\"Ruchy\" syi=\"30002249\"/>\r\n    <row c=\"Mulata\" ci=\"20000329\" r=\"Domain\" ri=\"10000043\" s=\"Knophtikoo IV - Moon 19 - Core Complexion Inc. Storage\" se=\"0.7\" si=\"60005482\" sy=\"Knophtikoo\" syi=\"30002248\"/>\r\n    <row c=\"Aven\" ci=\"20000771\" r=\"Genesis\" ri=\"10000067\" s=\"Shapisin II - Core Complexion Inc. Factory\" se=\"0.3\" si=\"60005485\" sy=\"Shapisin\" syi=\"30005271\"/>\r\n    <row c=\"Aven\" ci=\"20000771\" r=\"Genesis\" ri=\"10000067\" s=\"Galnafsad V - Moon 7 - Core Complexion Inc. Warehouse\" se=\"0.2\" si=\"60005488\" sy=\"Galnafsad\" syi=\"30005273\"/>\r\n    <row c=\"Aven\" ci=\"20000771\" r=\"Genesis\" ri=\"10000067\" s=\"Shapisin VII - Moon 2 - Core Complexion Inc. Factory\" se=\"0.3\" si=\"60005491\" sy=\"Shapisin\" syi=\"30005271\"/>\r\n    <row c=\"Aven\" ci=\"20000771\" r=\"Genesis\" ri=\"10000067\" s=\"Galnafsad VI - Moon 1 - Core Complexion Inc. Factory\" se=\"0.2\" si=\"60005494\" sy=\"Galnafsad\" syi=\"30005273\"/>\r\n    <row c=\"Aven\" ci=\"20000771\" r=\"Genesis\" ri=\"10000067\" s=\"Olin II - Moon 7 - Core Complexion Inc. Storage\" se=\"0.3\" si=\"60005497\" sy=\"Olin\" syi=\"30005272\"/>\r\n    <row c=\"Aven\" ci=\"20000771\" r=\"Genesis\" ri=\"10000067\" s=\"Gonditsa IV - Moon 7 - Core Complexion Inc. Storage\" se=\"0.3\" si=\"60005500\" sy=\"Gonditsa\" syi=\"30005268\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Yona II - Core Complexion Inc. Factory\" se=\"0.8\" si=\"60005503\" sy=\"Yona\" syi=\"30005017\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Yona VII - Moon 8 - Core Complexion Inc. Factory\" se=\"0.8\" si=\"60005506\" sy=\"Yona\" syi=\"30005017\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Yona VI - Moon 18 - Core Complexion Inc. Factory\" se=\"0.8\" si=\"60005509\" sy=\"Yona\" syi=\"30005017\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Noghere VIII - Moon 1 - Core Complexion Inc. Factory\" se=\"0.7\" si=\"60005512\" sy=\"Noghere\" syi=\"30005018\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Aporulie VI - Moon 18 - Core Complexion Inc. Storage\" se=\"0.8\" si=\"60005515\" sy=\"Aporulie\" syi=\"30005019\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Ane V - Moon 9 - Core Complexion Inc. Storage\" se=\"0.3\" si=\"60005518\" sy=\"Ane\" syi=\"30005022\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Abaim VIII - Moon 4 - Core Complexion Inc. Factory\" se=\"0.8\" si=\"60005521\" sy=\"Abaim\" syi=\"30003512\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Abaim XI - Moon 1 - Core Complexion Inc. Factory\" se=\"0.8\" si=\"60005524\" sy=\"Abaim\" syi=\"30003512\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Abaim XI - Moon 3 - Core Complexion Inc. Factory\" se=\"0.8\" si=\"60005527\" sy=\"Abaim\" syi=\"30003512\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Gosalav IV - Moon 1 - Core Complexion Inc. Factory\" se=\"0.7\" si=\"60005530\" sy=\"Gosalav\" syi=\"30003509\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Gosalav IV - Core Complexion Inc. Storage\" se=\"0.7\" si=\"60005533\" sy=\"Gosalav\" syi=\"30003509\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Teshi V - Moon 6 - Core Complexion Inc. Storage\" se=\"0.9\" si=\"60005536\" sy=\"Teshi\" syi=\"30003507\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Enal IX - Moon 4 - Core Complexion Inc. Factory\" se=\"0.4\" si=\"60005539\" sy=\"Enal\" syi=\"30005082\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Enal IX - Moon 1 - Core Complexion Inc. Factory\" se=\"0.4\" si=\"60005542\" sy=\"Enal\" syi=\"30005082\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Enal IX - Moon 3 - Core Complexion Inc. Factory\" se=\"0.4\" si=\"60005545\" sy=\"Enal\" syi=\"30005082\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Enal IX - Moon 5 - Core Complexion Inc. Factory\" se=\"0.4\" si=\"60005548\" sy=\"Enal\" syi=\"30005082\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Enal VI - Moon 1 - Core Complexion Inc. Storage\" se=\"0.4\" si=\"60005551\" sy=\"Enal\" syi=\"30005082\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Ranni VIII - Moon 2 - Core Complexion Inc. Storage\" se=\"0.4\" si=\"60005554\" sy=\"Ranni\" syi=\"30005085\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Suroken IX - Moon 2 - Core Complexion Inc. Factory\" se=\"0.7\" si=\"60005557\" sy=\"Suroken\" syi=\"30002801\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Suroken VIII - Moon 15 - Core Complexion Inc. Factory\" se=\"0.7\" si=\"60005560\" sy=\"Suroken\" syi=\"30002801\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Haatomo VI - Moon 12 - Core Complexion Inc. Factory\" se=\"0.6\" si=\"60005563\" sy=\"Haatomo\" syi=\"30002800\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Haatomo VI - Moon 5 - Core Complexion Inc. Factory\" se=\"0.6\" si=\"60005566\" sy=\"Haatomo\" syi=\"30002800\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Suroken X - Moon 1 - Core Complexion Inc. Storage\" se=\"0.7\" si=\"60005569\" sy=\"Suroken\" syi=\"30002801\"/>\r\n    <row c=\"Tasen\" ci=\"20000411\" r=\"The Citadel\" ri=\"10000033\" s=\"Kusomonmon VI - Moon 1 - Core Complexion Inc. Storage\" se=\"0.8\" si=\"60005572\" sy=\"Kusomonmon\" syi=\"30002802\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Ekuenbiron III - Moon 1 - Core Complexion Inc. Warehouse\" se=\"0.8\" si=\"60005575\" sy=\"Ekuenbiron\" syi=\"30005317\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Vay I - Core Complexion Inc. Factory\" se=\"0.8\" si=\"60005578\" sy=\"Vay\" syi=\"30005318\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Ekuenbiron V - Moon 1 - Core Complexion Inc. Warehouse\" se=\"0.8\" si=\"60005581\" sy=\"Ekuenbiron\" syi=\"30005317\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Raneilles VI - Moon 14 - Core Complexion Inc. Factory\" se=\"0.6\" si=\"60005584\" sy=\"Raneilles\" syi=\"30005319\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Ekuenbiron VIII - Core Complexion Inc. Storage\" se=\"0.8\" si=\"60005587\" sy=\"Ekuenbiron\" syi=\"30005317\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Ekuenbiron VII - Moon 11 - Core Complexion Inc. Storage\" se=\"0.8\" si=\"60005590\" sy=\"Ekuenbiron\" syi=\"30005317\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"Itamo VIII - Core Complexion Inc. Factory\" se=\"0.7\" si=\"60005593\" sy=\"Itamo\" syi=\"30000119\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"Itamo VIII - Moon 13 - Core Complexion Inc. Factory\" se=\"0.7\" si=\"60005596\" sy=\"Itamo\" syi=\"30000119\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"Itamo VIII - Moon 4 - Core Complexion Inc. Factory\" se=\"0.7\" si=\"60005599\" sy=\"Itamo\" syi=\"30000119\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"Mitsolen IV - Moon 12 - Core Complexion Inc. Warehouse\" se=\"0.6\" si=\"60005602\" sy=\"Mitsolen\" syi=\"30000120\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"Jatate IV - Moon 16 - Core Complexion Inc. Storage\" se=\"0.6\" si=\"60005605\" sy=\"Jatate\" syi=\"30000121\"/>\r\n    <row c=\"Ruomo\" ci=\"20000017\" r=\"The Forge\" ri=\"10000002\" s=\"Itamo VI - Core Complexion Inc. Storage\" se=\"0.7\" si=\"60005608\" sy=\"Itamo\" syi=\"30000119\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Jolia I - Moon 1 - Core Complexion Inc. Factory\" se=\"0.5\" si=\"60005611\" sy=\"Jolia\" syi=\"30002679\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Parchanier III - Core Complexion Inc. Factory\" se=\"0.9\" si=\"60005614\" sy=\"Parchanier\" syi=\"30002676\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Deltole III - Moon 1 - Core Complexion Inc. Warehouse\" se=\"0.5\" si=\"60005617\" sy=\"Deltole\" syi=\"30002681\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Parchanier VI - Core Complexion Inc. Warehouse\" se=\"0.9\" si=\"60005620\" sy=\"Parchanier\" syi=\"30002676\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Parchanier VII - Moon 1 - Core Complexion Inc. Storage\" se=\"0.9\" si=\"60005623\" sy=\"Parchanier\" syi=\"30002676\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Barmalie VIII - Moon 4 - Core Complexion Inc. Storage\" se=\"0.5\" si=\"60005626\" sy=\"Barmalie\" syi=\"30002683\"/>\r\n    <row c=\"Mih\" ci=\"20000764\" r=\"Genesis\" ri=\"10000067\" s=\"Iderion IX - Moon 18 - Core Complexion Inc. Factory\" se=\"0.5\" si=\"60005629\" sy=\"Iderion\" syi=\"30005227\"/>\r\n    <row c=\"Mih\" ci=\"20000764\" r=\"Genesis\" ri=\"10000067\" s=\"Chamja V - Moon 12 - Core Complexion Inc. Warehouse\" se=\"0.4\" si=\"60005632\" sy=\"Chamja\" syi=\"30005228\"/>\r\n    <row c=\"Mih\" ci=\"20000764\" r=\"Genesis\" ri=\"10000067\" s=\"Alal IX - Moon 13 - Core Complexion Inc. Factory\" se=\"0.4\" si=\"60005635\" sy=\"Alal\" syi=\"30005225\"/>\r\n    <row c=\"Mih\" ci=\"20000764\" r=\"Genesis\" ri=\"10000067\" s=\"Zoohen VII - Core Complexion Inc. Factory\" se=\"0.5\" si=\"60005638\" sy=\"Zoohen\" syi=\"30005221\"/>\r\n    <row c=\"Mih\" ci=\"20000764\" r=\"Genesis\" ri=\"10000067\" s=\"Chamja VI - Moon 7 - Core Complexion Inc. Storage\" se=\"0.4\" si=\"60005641\" sy=\"Chamja\" syi=\"30005228\"/>\r\n    <row c=\"Mih\" ci=\"20000764\" r=\"Genesis\" ri=\"10000067\" s=\"Chamja VI - Moon 6 - Core Complexion Inc. Storage\" se=\"0.4\" si=\"60005644\" sy=\"Chamja\" syi=\"30005228\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Antiainen III - Moon 1 - Core Complexion Inc. Factory\" se=\"0.6\" si=\"60005647\" sy=\"Antiainen\" syi=\"30001357\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Antiainen VI - Core Complexion Inc. Factory\" se=\"0.6\" si=\"60005650\" sy=\"Antiainen\" syi=\"30001357\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Dantumi IV - Moon 2 - Core Complexion Inc. Factory\" se=\"0.4\" si=\"60005653\" sy=\"Dantumi\" syi=\"30001356\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Antiainen IV - Moon 2 - Core Complexion Inc. Factory\" se=\"0.6\" si=\"60005656\" sy=\"Antiainen\" syi=\"30001357\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Semiki IX - Moon 5 - Core Complexion Inc. Storage\" se=\"0.6\" si=\"60005659\" sy=\"Semiki\" syi=\"30001359\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Ossa VII - Moon 4 - Core Complexion Inc. Storage\" se=\"0.5\" si=\"60005662\" sy=\"Ossa\" syi=\"30001358\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Ziona VI - Moon 11 - Core Complexion Inc. Factory\" se=\"0.6\" si=\"60005665\" sy=\"Ziona\" syi=\"30002203\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Akhragan V - Core Complexion Inc. Warehouse\" se=\"0.8\" si=\"60005668\" sy=\"Akhragan\" syi=\"30002197\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Mikhir VI - Moon 1 - Core Complexion Inc. Factory\" se=\"0.7\" si=\"60005671\" sy=\"Mikhir\" syi=\"30002198\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Narai IX - Moon 1 - Core Complexion Inc. Factory\" se=\"0.5\" si=\"60005674\" sy=\"Narai\" syi=\"30002202\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Ziona VI - Moon 6 - Core Complexion Inc. Storage\" se=\"0.6\" si=\"60005677\" sy=\"Ziona\" syi=\"30002203\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Akhragan VIII - Moon 2 - Core Complexion Inc. Storage\" se=\"0.8\" si=\"60005680\" sy=\"Akhragan\" syi=\"30002197\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Hagilur IV - Moon 3 - Boundless Creation Factory\" se=\"0.4\" si=\"60005683\" sy=\"Hagilur\" syi=\"30002050\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Hek VIII - Moon 12 - Boundless Creation Factory\" se=\"0.8\" si=\"60005686\" sy=\"Hek\" syi=\"30002053\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Hagilur V - Moon 8 - Boundless Creation Factory\" se=\"0.4\" si=\"60005689\" sy=\"Hagilur\" syi=\"30002050\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Turnur III - Moon 17 - Boundless Creation Factory\" se=\"0.4\" si=\"60005692\" sy=\"Turnur\" syi=\"30002086\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Isbrabata VII - Boundless Creation Factory\" se=\"0.4\" si=\"60005695\" sy=\"Isbrabata\" syi=\"30002087\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Uisper I - Moon 1 - Boundless Creation Factory\" se=\"0.4\" si=\"60005698\" sy=\"Uisper\" syi=\"30002083\"/>\r\n    <row c=\"Tiat\" ci=\"20000303\" r=\"Metropolis\" ri=\"10000042\" s=\"Amo V - Moon 20 - Boundless Creation Factory\" se=\"0.5\" si=\"60005701\" sy=\"Amo\" syi=\"30002055\"/>\r\n    <row c=\"Tiat\" ci=\"20000303\" r=\"Metropolis\" ri=\"10000042\" s=\"Hadozeko IX - Moon 11 - Boundless Creation Factory\" se=\"0.4\" si=\"60005704\" sy=\"Hadozeko\" syi=\"30002057\"/>\r\n    <row c=\"Tiat\" ci=\"20000303\" r=\"Metropolis\" ri=\"10000042\" s=\"Amo V - Moon 3 - Boundless Creation Factory\" se=\"0.5\" si=\"60005707\" sy=\"Amo\" syi=\"30002055\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Evati V - Moon 1 - Boundless Creation Factory\" se=\"0.2\" si=\"60005710\" sy=\"Evati\" syi=\"30002060\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Evati X - Moon 2 - Boundless Creation Factory\" se=\"0.2\" si=\"60005713\" sy=\"Evati\" syi=\"30002060\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Helgatild IX - Moon 14 - Boundless Creation Factory\" se=\"0.2\" si=\"60005716\" sy=\"Helgatild\" syi=\"30002063\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"Elgoi VI - Moon 1 - Eifyr and Co. Biotech Production\" se=\"0.9\" si=\"60005719\" sy=\"Elgoi\" syi=\"30003412\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"Eram V - Moon 2 - Eifyr and Co. Biotech Production\" se=\"0.8\" si=\"60005722\" sy=\"Eram\" syi=\"30003413\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Rens VI - Six Kin Development Warehouse\" se=\"0.9\" si=\"60005725\" sy=\"Rens\" syi=\"30002510\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Abudban VIII - Moon 6 - Six Kin Development Production Plant\" se=\"0.7\" si=\"60005728\" sy=\"Abudban\" syi=\"30002507\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Ameinaka IX - Moon 21 - Six Kin Development Warehouse\" se=\"1.0\" si=\"60005731\" sy=\"Ameinaka\" syi=\"30002511\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Lustrevik VIII - Moon 7 - Six Kin Development Warehouse\" se=\"0.9\" si=\"60005734\" sy=\"Lustrevik\" syi=\"30002545\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Lustrevik VII - Moon 7 - Six Kin Development Warehouse\" se=\"0.9\" si=\"60005737\" sy=\"Lustrevik\" syi=\"30002545\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Isendeldik VIII - Moon 19 - Six Kin Development Warehouse\" se=\"0.8\" si=\"60005740\" sy=\"Isendeldik\" syi=\"30002546\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"Vullat VII - Moon 1 - Six Kin Development Foundry\" se=\"1.0\" si=\"60005743\" sy=\"Vullat\" syi=\"30002573\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"Vullat I - Six Kin Development Foundry\" se=\"1.0\" si=\"60005746\" sy=\"Vullat\" syi=\"30002573\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"Vullat IX - Moon 2 - Six Kin Development Foundry\" se=\"1.0\" si=\"60005749\" sy=\"Vullat\" syi=\"30002573\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Auga VI - Moon 13 - Six Kin Development Production Plant\" se=\"0.4\" si=\"60005752\" sy=\"Auga\" syi=\"30002542\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Vard VI - Moon 14 - Six Kin Development Production Plant\" se=\"0.4\" si=\"60005755\" sy=\"Vard\" syi=\"30002538\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Vard III - Six Kin Development Production Plant\" se=\"0.4\" si=\"60005758\" sy=\"Vard\" syi=\"30002538\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Gelfiven V - Native Freshfood Warehouse\" se=\"0.6\" si=\"60005761\" sy=\"Gelfiven\" syi=\"30002386\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Gulfonodi VIII - Moon 6 - Native Freshfood Plantation\" se=\"0.5\" si=\"60005764\" sy=\"Gulfonodi\" syi=\"30002384\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Gulfonodi X - Moon 13 - Native Freshfood Plantation\" se=\"0.5\" si=\"60005767\" sy=\"Gulfonodi\" syi=\"30002384\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Bei VII - Moon 8 - Freedom Extension Storage\" se=\"0.6\" si=\"60005770\" sy=\"Bei\" syi=\"30002048\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Bei VI - Moon 8 - Freedom Extension Storage\" se=\"0.6\" si=\"60005773\" sy=\"Bei\" syi=\"30002048\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Uttindar V - Moon 9 - Freedom Extension Storage\" se=\"0.5\" si=\"60005776\" sy=\"Uttindar\" syi=\"30002049\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Ragnarg I - Freedom Extension Storage\" se=\"0.4\" si=\"60005779\" sy=\"Ragnarg\" syi=\"30002052\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Hagilur V - Moon 7 - Freedom Extension Warehouse\" se=\"0.4\" si=\"60005782\" sy=\"Hagilur\" syi=\"30002050\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Bei VII - Moon 3 - Freedom Extension Retail Center\" se=\"0.6\" si=\"60005785\" sy=\"Bei\" syi=\"30002048\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Brybier I - Moon 6 - Freedom Extension Storage\" se=\"0.6\" si=\"60005788\" sy=\"Brybier\" syi=\"30002703\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Adrallezoen VI - Moon 1 - Freedom Extension Storage\" se=\"0.5\" si=\"60005791\" sy=\"Adrallezoen\" syi=\"30002704\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Brapelille XI - Moon 1 - Freedom Extension Storage\" se=\"0.7\" si=\"60005794\" sy=\"Brapelille\" syi=\"30002699\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Adrallezoen II - Moon 1 - Freedom Extension Storage\" se=\"0.5\" si=\"60005797\" sy=\"Adrallezoen\" syi=\"30002704\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Brybier I - Moon 20 - Freedom Extension Warehouse\" se=\"0.6\" si=\"60005800\" sy=\"Brybier\" syi=\"30002703\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Adrallezoen V - Moon 1 - Freedom Extension Warehouse\" se=\"0.5\" si=\"60005803\" sy=\"Adrallezoen\" syi=\"30002704\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"Konora IX - Moon 1 - Freedom Extension Storage\" se=\"0.4\" si=\"60005806\" sy=\"Konora\" syi=\"30003471\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"Frulegur III - Moon 1 - Freedom Extension Storage\" se=\"0.4\" si=\"60005809\" sy=\"Frulegur\" syi=\"30003467\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"Odebeinn III - Moon 13 - Freedom Extension Storage\" se=\"0.3\" si=\"60005812\" sy=\"Odebeinn\" syi=\"30003470\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"Hroduko VII - Moon 11 - Freedom Extension Storage\" se=\"0.7\" si=\"60005815\" sy=\"Hroduko\" syi=\"30003468\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"Erindur VI - Moon 15 - Freedom Extension Warehouse\" se=\"0.6\" si=\"60005818\" sy=\"Erindur\" syi=\"30003472\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"Odebeinn IV - Freedom Extension Warehouse\" se=\"0.3\" si=\"60005821\" sy=\"Odebeinn\" syi=\"30003470\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"Gicodel VII - Freedom Extension Storage\" se=\"0.9\" si=\"60005824\" sy=\"Gicodel\" syi=\"30003035\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"Quier III - Moon 14 - Freedom Extension Storage\" se=\"0.7\" si=\"60005827\" sy=\"Quier\" syi=\"30003037\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"Quier IV - Moon 3 - Freedom Extension Storage\" se=\"0.7\" si=\"60005830\" sy=\"Quier\" syi=\"30003037\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"Athinard VII - Moon 1 - Freedom Extension Storage\" se=\"1.0\" si=\"60005833\" sy=\"Athinard\" syi=\"30003031\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"Quier IV - Moon 7 - Freedom Extension Warehouse\" se=\"0.7\" si=\"60005836\" sy=\"Quier\" syi=\"30003037\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"Frarolle XI - Moon 2 - Freedom Extension Warehouse\" se=\"0.8\" si=\"60005839\" sy=\"Frarolle\" syi=\"30003036\"/>\r\n    <row c=\"Akimamur\" ci=\"20000374\" r=\"Heimatar\" ri=\"10000030\" s=\"Eddar VI - Freedom Extension Storage\" se=\"0.6\" si=\"60005842\" sy=\"Eddar\" syi=\"30002552\"/>\r\n    <row c=\"Akimamur\" ci=\"20000374\" r=\"Heimatar\" ri=\"10000030\" s=\"Aralgrund I - Moon 1 - Freedom Extension Storage\" se=\"0.3\" si=\"60005845\" sy=\"Aralgrund\" syi=\"30002551\"/>\r\n    <row c=\"Akimamur\" ci=\"20000374\" r=\"Heimatar\" ri=\"10000030\" s=\"Offugen VII - Moon 8 - Freedom Extension Storage\" se=\"0.6\" si=\"60005848\" sy=\"Offugen\" syi=\"30002549\"/>\r\n    <row c=\"Akimamur\" ci=\"20000374\" r=\"Heimatar\" ri=\"10000030\" s=\"Aralgrund IV - Moon 1 - Freedom Extension Storage\" se=\"0.3\" si=\"60005851\" sy=\"Aralgrund\" syi=\"30002551\"/>\r\n    <row c=\"Akimamur\" ci=\"20000374\" r=\"Heimatar\" ri=\"10000030\" s=\"Aralgrund IV - Freedom Extension Retail Center\" se=\"0.3\" si=\"60005854\" sy=\"Aralgrund\" syi=\"30002551\"/>\r\n    <row c=\"Akimamur\" ci=\"20000374\" r=\"Heimatar\" ri=\"10000030\" s=\"Aralgrund VI - Freedom Extension Warehouse\" se=\"0.3\" si=\"60005857\" sy=\"Aralgrund\" syi=\"30002551\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Mabnen VII - Moon 6 - Freedom Extension Storage\" se=\"0.9\" si=\"60005860\" sy=\"Mabnen\" syi=\"30002190\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Simbeloud IX - Moon 2 - Freedom Extension Storage\" se=\"0.9\" si=\"60005863\" sy=\"Simbeloud\" syi=\"30002195\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Toshabia VII - Freedom Extension Storage\" se=\"0.8\" si=\"60005866\" sy=\"Toshabia\" syi=\"30002191\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Simbeloud VI - Moon 1 - Freedom Extension Storage\" se=\"0.9\" si=\"60005869\" sy=\"Simbeloud\" syi=\"30002195\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Kehour V - Moon 1 - Freedom Extension Retail Center\" se=\"0.9\" si=\"60005872\" sy=\"Kehour\" syi=\"30002193\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Simbeloud IX - Freedom Extension Retail Center\" se=\"0.9\" si=\"60005875\" sy=\"Simbeloud\" syi=\"30002195\"/>\r\n    <row c=\"Meli\" ci=\"20000766\" r=\"Genesis\" ri=\"10000067\" s=\"Menai V - Moon 22 - Freedom Extension Storage\" se=\"0.3\" si=\"60005878\" sy=\"Menai\" syi=\"30005238\"/>\r\n    <row c=\"Meli\" ci=\"20000766\" r=\"Genesis\" ri=\"10000067\" s=\"Aring IX - Moon 5 - Freedom Extension Storage\" se=\"0.3\" si=\"60005881\" sy=\"Aring\" syi=\"30005239\"/>\r\n    <row c=\"Meli\" ci=\"20000766\" r=\"Genesis\" ri=\"10000067\" s=\"Petidu IV - Moon 6 - Freedom Extension Storage\" se=\"0.3\" si=\"60005884\" sy=\"Petidu\" syi=\"30005241\"/>\r\n    <row c=\"Meli\" ci=\"20000766\" r=\"Genesis\" ri=\"10000067\" s=\"Petidu IX - Moon 8 - Freedom Extension Storage\" se=\"0.3\" si=\"60005887\" sy=\"Petidu\" syi=\"30005241\"/>\r\n    <row c=\"Meli\" ci=\"20000766\" r=\"Genesis\" ri=\"10000067\" s=\"Menai IV - Moon 9 - Freedom Extension Warehouse\" se=\"0.3\" si=\"60005890\" sy=\"Menai\" syi=\"30005238\"/>\r\n    <row c=\"Meli\" ci=\"20000766\" r=\"Genesis\" ri=\"10000067\" s=\"Chej VI - Moon 4 - Freedom Extension Retail Center\" se=\"0.3\" si=\"60005893\" sy=\"Chej\" syi=\"30005237\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Klogori V - Moon 2 - Freedom Extension Storage\" se=\"0.3\" si=\"60005896\" sy=\"Klogori\" syi=\"30002097\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Egmar XII - Moon 12 - Freedom Extension Storage\" se=\"0.3\" si=\"60005899\" sy=\"Egmar\" syi=\"30002099\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Egmar XII - Freedom Extension Storage\" se=\"0.3\" si=\"60005902\" sy=\"Egmar\" syi=\"30002099\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Ualkin VI - Freedom Extension Storage\" se=\"0.2\" si=\"60005905\" sy=\"Ualkin\" syi=\"30002101\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Klogori II - Freedom Extension Warehouse\" se=\"0.3\" si=\"60005908\" sy=\"Klogori\" syi=\"30002097\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Klogori I - Freedom Extension Retail Center\" se=\"0.3\" si=\"60005911\" sy=\"Klogori\" syi=\"30002097\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Slays VI - Moon 9 - Freedom Extension Storage\" se=\"0.5\" si=\"60005914\" sy=\"Slays\" syi=\"30003798\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Covryn VI - Moon 13 - Freedom Extension Storage\" se=\"0.4\" si=\"60005917\" sy=\"Covryn\" syi=\"30003795\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Uphallant VII - Moon 2 - Freedom Extension Storage\" se=\"0.2\" si=\"60005920\" sy=\"Uphallant\" syi=\"30003799\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Stacmon VI - Moon 1 - Freedom Extension Storage\" se=\"0.6\" si=\"60005923\" sy=\"Stacmon\" syi=\"30003794\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Dastryns III - Freedom Extension Warehouse\" se=\"0.3\" si=\"60005926\" sy=\"Dastryns\" syi=\"30003797\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Stacmon VIII - Moon 22 - Freedom Extension Warehouse\" se=\"0.6\" si=\"60005929\" sy=\"Stacmon\" syi=\"30003794\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Dresi I - Moon 5 - Freedom Extension Storage\" se=\"0.6\" si=\"60005932\" sy=\"Dresi\" syi=\"30004078\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Aharalel V - Moon 2 - Freedom Extension Storage\" se=\"0.6\" si=\"60005935\" sy=\"Aharalel\" syi=\"30004082\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Romi V - Moon 1 - Freedom Extension Storage\" se=\"0.7\" si=\"60005938\" sy=\"Romi\" syi=\"30004080\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Dresi I - Moon 1 - Freedom Extension Storage\" se=\"0.6\" si=\"60005941\" sy=\"Dresi\" syi=\"30004078\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Aphend V - Moon 2 - Freedom Extension Warehouse\" se=\"0.6\" si=\"60005944\" sy=\"Aphend\" syi=\"30004079\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Dresi II - Freedom Extension Retail Center\" se=\"0.6\" si=\"60005947\" sy=\"Dresi\" syi=\"30004078\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Lour V - Moon 13 - Freedom Extension Storage\" se=\"0.6\" si=\"60005950\" sy=\"Lour\" syi=\"30003575\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Pertnineere VIII - Freedom Extension Storage\" se=\"0.4\" si=\"60005953\" sy=\"Pertnineere\" syi=\"30003573\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Boystin VI - Moon 11 - Freedom Extension Storage\" se=\"0.5\" si=\"60005956\" sy=\"Boystin\" syi=\"30003574\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Boystin VI - Moon 12 - Freedom Extension Storage\" se=\"0.5\" si=\"60005959\" sy=\"Boystin\" syi=\"30003574\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Octanneve IV - Moon 1 - Freedom Extension Retail Center\" se=\"0.7\" si=\"60005962\" sy=\"Octanneve\" syi=\"30003578\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Maire VI - Moon 9 - Freedom Extension Retail Center\" se=\"0.7\" si=\"60005965\" sy=\"Maire\" syi=\"30003576\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Komaa IV - Freedom Extension Storage\" se=\"0.6\" si=\"60005968\" sy=\"Komaa\" syi=\"30003092\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Imata IV - Freedom Extension Storage\" se=\"0.5\" si=\"60005971\" sy=\"Imata\" syi=\"30003094\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Komaa VII - Moon 5 - Freedom Extension Storage\" se=\"0.6\" si=\"60005974\" sy=\"Komaa\" syi=\"30003092\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Kurmaru I - Freedom Extension Storage\" se=\"0.6\" si=\"60005977\" sy=\"Kurmaru\" syi=\"30003096\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Ayeroilen IX - Moon 10 - Freedom Extension Warehouse\" se=\"0.4\" si=\"60005980\" sy=\"Ayeroilen\" syi=\"30003093\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Ayeroilen XI - Moon 4 - Freedom Extension Warehouse\" se=\"0.4\" si=\"60005983\" sy=\"Ayeroilen\" syi=\"30003093\"/>\r\n    <row c=\"Zemont\" ci=\"20000510\" r=\"Domain\" ri=\"10000043\" s=\"Zaimeth II - Moon 2 - Freedom Extension Storage\" se=\"0.5\" si=\"60005986\" sy=\"Zaimeth\" syi=\"30003497\"/>\r\n    <row c=\"Zemont\" ci=\"20000510\" r=\"Domain\" ri=\"10000043\" s=\"Sharhelund VIII - Moon 4 - Freedom Extension Storage\" se=\"0.6\" si=\"60005989\" sy=\"Sharhelund\" syi=\"30003498\"/>\r\n    <row c=\"Zemont\" ci=\"20000510\" r=\"Domain\" ri=\"10000043\" s=\"Mai V - Moon 13 - Freedom Extension Storage\" se=\"0.4\" si=\"60005992\" sy=\"Mai\" syi=\"30003499\"/>\r\n    <row c=\"Zemont\" ci=\"20000510\" r=\"Domain\" ri=\"10000043\" s=\"Nakri VI - Moon 4 - Freedom Extension Storage\" se=\"0.8\" si=\"60005995\" sy=\"Nakri\" syi=\"30003496\"/>\r\n    <row c=\"Zemont\" ci=\"20000510\" r=\"Domain\" ri=\"10000043\" s=\"Mai IV - Moon 7 - Freedom Extension Warehouse\" se=\"0.4\" si=\"60005998\" sy=\"Mai\" syi=\"30003499\"/>\r\n    <row c=\"Zemont\" ci=\"20000510\" r=\"Domain\" ri=\"10000043\" s=\"Ekid V - Freedom Extension Warehouse\" se=\"0.7\" si=\"60006001\" sy=\"Ekid\" syi=\"30003494\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"Kaunokka V - Veles Clade Porevitium Vault\" se=\"0.0\" si=\"60006004\" sy=\"Kaunokka\" syi=\"30002797\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"Yria IV - Moon 9 - Freedom Extension Storage\" se=\"0.5\" si=\"60006007\" sy=\"Yria\" syi=\"30002794\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"Oshaima IX - Moon 2 - Freedom Extension Storage\" se=\"0.5\" si=\"60006010\" sy=\"Oshaima\" syi=\"30002795\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"Kaunokka VI - Moon 2 - Veles Clade Proving Complex\" se=\"0.0\" si=\"60006013\" sy=\"Kaunokka\" syi=\"30002797\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"Kaunokka II - Veles Clade Bioadaptation Chambers\" se=\"0.0\" si=\"60006016\" sy=\"Kaunokka\" syi=\"30002797\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"Venilen VIII - Moon 5 - Freedom Extension Warehouse\" se=\"0.6\" si=\"60006019\" sy=\"Venilen\" syi=\"30002798\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Turnur III - Moon 18 - Freedom Extension Storage\" se=\"0.4\" si=\"60006022\" sy=\"Turnur\" syi=\"30002086\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Floseswin I - Moon 1 - Freedom Extension Storage\" se=\"0.4\" si=\"60006025\" sy=\"Floseswin\" syi=\"30002082\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Aset II - Moon 1 - Freedom Extension Storage\" se=\"0.4\" si=\"60006028\" sy=\"Aset\" syi=\"30002084\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Floseswin II - Freedom Extension Storage\" se=\"0.4\" si=\"60006031\" sy=\"Floseswin\" syi=\"30002082\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Isbrabata VIII - Moon 8 - Freedom Extension Warehouse\" se=\"0.4\" si=\"60006034\" sy=\"Isbrabata\" syi=\"30002087\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Floseswin IX - Moon 13 - Freedom Extension Retail Center\" se=\"0.4\" si=\"60006037\" sy=\"Floseswin\" syi=\"30002082\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"Yrmori V - Moon 4 - The Leisure Group Development Studio\" se=\"0.6\" si=\"60006040\" sy=\"Yrmori\" syi=\"30003414\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"Eram VIII - Moon 17 - The Leisure Group Development Studio\" se=\"0.8\" si=\"60006043\" sy=\"Eram\" syi=\"30003413\"/>\r\n    <row c=\"Wiedadur\" ci=\"20000371\" r=\"Heimatar\" ri=\"10000030\" s=\"Gerek VI - Moon 16 - The Leisure Group Development Studio\" se=\"0.7\" si=\"60006046\" sy=\"Gerek\" syi=\"30002531\"/>\r\n    <row c=\"Wiedadur\" ci=\"20000371\" r=\"Heimatar\" ri=\"10000030\" s=\"Rokofur IX - The Leisure Group Development Studio\" se=\"0.6\" si=\"60006049\" sy=\"Rokofur\" syi=\"30002534\"/>\r\n    <row c=\"Akimamur\" ci=\"20000374\" r=\"Heimatar\" ri=\"10000030\" s=\"Eddar VIII - Moon 8 - The Leisure Group Development Studio\" se=\"0.6\" si=\"60006052\" sy=\"Eddar\" syi=\"30002552\"/>\r\n    <row c=\"Akimamur\" ci=\"20000374\" r=\"Heimatar\" ri=\"10000030\" s=\"Offugen VII - Moon 15 - The Leisure Group Development Studio\" se=\"0.6\" si=\"60006055\" sy=\"Offugen\" syi=\"30002549\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Illuin VI - Moon 8 - The Leisure Group Development Studio\" se=\"0.9\" si=\"60006058\" sy=\"Illuin\" syi=\"30003377\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Arlulf III - Moon 5 - The Leisure Group Development Studio\" se=\"1.0\" si=\"60006061\" sy=\"Arlulf\" syi=\"30003374\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"Tamekamur V - Moon 17 - The Leisure Group Development Studio\" se=\"0.9\" si=\"60006064\" sy=\"Tamekamur\" syi=\"30003407\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"Datulen V - Moon 14 - The Leisure Group Development Studio\" se=\"0.9\" si=\"60006067\" sy=\"Datulen\" syi=\"30003405\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Teonusude IV - Moon 8 - The Leisure Group Development Studio\" se=\"0.6\" si=\"60006070\" sy=\"Teonusude\" syi=\"30002385\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Oddelulf VII - Moon 1 - The Leisure Group Development Studio\" se=\"0.4\" si=\"60006073\" sy=\"Oddelulf\" syi=\"30002388\"/>\r\n    <row c=\"Inkelm\" ci=\"20000502\" r=\"Metropolis\" ri=\"10000042\" s=\"Moselgi IV - The Leisure Group Development Studio\" se=\"0.7\" si=\"60006076\" sy=\"Moselgi\" syi=\"30003443\"/>\r\n    <row c=\"Inkelm\" ci=\"20000502\" r=\"Metropolis\" ri=\"10000042\" s=\"Earwik V - The Leisure Group Development Studio\" se=\"0.6\" si=\"60006079\" sy=\"Earwik\" syi=\"30003441\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"Ansen III - Moon 6 - The Leisure Group Publisher\" se=\"0.1\" si=\"60006082\" sy=\"Ansen\" syi=\"30002081\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"Arifsdald III - Moon 14 - The Leisure Group Development Studio\" se=\"0.1\" si=\"60006085\" sy=\"Arifsdald\" syi=\"30002080\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"Altrinur XII - Moon 3 - The Leisure Group Development Studio\" se=\"0.8\" si=\"60006088\" sy=\"Altrinur\" syi=\"30003389\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"Altrinur VIII - The Leisure Group Publisher\" se=\"0.8\" si=\"60006091\" sy=\"Altrinur\" syi=\"30003389\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Maturat VI - Moon 13 - The Leisure Group Development Studio\" se=\"0.8\" si=\"60006094\" sy=\"Maturat\" syi=\"30003396\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Maturat IX - Moon 1 - The Leisure Group Development Studio\" se=\"0.8\" si=\"60006097\" sy=\"Maturat\" syi=\"30003396\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"Nererut II - Moon 1 - Amarr Constructions Production Plant\" se=\"0.8\" si=\"60006100\" sy=\"Nererut\" syi=\"30002228\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"Vashkah VI - Moon 2 - Amarr Constructions Warehouse\" se=\"0.7\" si=\"60006103\" sy=\"Vashkah\" syi=\"30002230\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"Nererut V - Moon 12 - Amarr Constructions Production Plant\" se=\"0.8\" si=\"60006106\" sy=\"Nererut\" syi=\"30002228\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"Dakba VI - Amarr Constructions Foundry\" se=\"0.7\" si=\"60006109\" sy=\"Dakba\" syi=\"30002233\"/>\r\n    <row c=\"Afinoo\" ci=\"20000620\" r=\"Aridia\" ri=\"10000054\" s=\"Gens V - Moon 2 - Amarr Constructions Production Plant\" se=\"0.2\" si=\"60006112\" sy=\"Gens\" syi=\"30004238\"/>\r\n    <row c=\"Afinoo\" ci=\"20000620\" r=\"Aridia\" ri=\"10000054\" s=\"Kamih IV - Amarr Constructions Warehouse\" se=\"0.2\" si=\"60006115\" sy=\"Kamih\" syi=\"30004239\"/>\r\n    <row c=\"Afinoo\" ci=\"20000620\" r=\"Aridia\" ri=\"10000054\" s=\"Kamih V - Amarr Constructions Production Plant\" se=\"0.2\" si=\"60006118\" sy=\"Kamih\" syi=\"30004239\"/>\r\n    <row c=\"Afinoo\" ci=\"20000620\" r=\"Aridia\" ri=\"10000054\" s=\"Yehaba VII - Amarr Constructions Warehouse\" se=\"0.2\" si=\"60006121\" sy=\"Yehaba\" syi=\"30004236\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"Diaderi VII - Moon 3 - Amarr Constructions Production Plant\" se=\"0.8\" si=\"60006124\" sy=\"Diaderi\" syi=\"30005229\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"Pashanai IV - Moon 3 - Amarr Constructions Production Plant\" se=\"0.5\" si=\"60006127\" sy=\"Pashanai\" syi=\"30005231\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"Diaderi IX - Moon 16 - Amarr Constructions Warehouse\" se=\"0.8\" si=\"60006130\" sy=\"Diaderi\" syi=\"30005229\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"Pashanai IV - Moon 4 - Amarr Constructions Production Plant\" se=\"0.5\" si=\"60006133\" sy=\"Pashanai\" syi=\"30005231\"/>\r\n    <row c=\"Moghiz\" ci=\"20000607\" r=\"Kador\" ri=\"10000052\" s=\"Yehnifi X - Moon 22 - Amarr Constructions Foundry\" se=\"0.6\" si=\"60006136\" sy=\"Yehnifi\" syi=\"30004154\"/>\r\n    <row c=\"Moghiz\" ci=\"20000607\" r=\"Kador\" ri=\"10000052\" s=\"Yehnifi XI - Moon 2 - Amarr Constructions Foundry\" se=\"0.6\" si=\"60006139\" sy=\"Yehnifi\" syi=\"30004154\"/>\r\n    <row c=\"Moghiz\" ci=\"20000607\" r=\"Kador\" ri=\"10000052\" s=\"Yehnifi VI - Amarr Constructions Production Plant\" se=\"0.6\" si=\"60006142\" sy=\"Yehnifi\" syi=\"30004154\"/>\r\n    <row c=\"Moghiz\" ci=\"20000607\" r=\"Kador\" ri=\"10000052\" s=\"Minin VI - Moon 9 - Amarr Constructions Production Plant\" se=\"0.7\" si=\"60006145\" sy=\"Minin\" syi=\"30004153\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hilaban III - Moon 14 - Amarr Constructions Foundry\" se=\"0.9\" si=\"60006148\" sy=\"Hilaban\" syi=\"30001674\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hilaban II - Moon 9 - Amarr Constructions Production Plant\" se=\"0.9\" si=\"60006151\" sy=\"Hilaban\" syi=\"30001674\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Tash-Murkon Prime V - Moon 7 - Amarr Constructions Warehouse\" se=\"0.8\" si=\"60006154\" sy=\"Tash-Murkon Prime\" syi=\"30001671\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hilaban V - Amarr Constructions Production Plant\" se=\"0.9\" si=\"60006157\" sy=\"Hilaban\" syi=\"30001674\"/>\r\n    <row c=\"Araz\" ci=\"20000603\" r=\"Kador\" ri=\"10000052\" s=\"Chanoun III - Amarr Constructions Warehouse\" se=\"0.5\" si=\"60006160\" sy=\"Chanoun\" syi=\"30004122\"/>\r\n    <row c=\"Araz\" ci=\"20000603\" r=\"Kador\" ri=\"10000052\" s=\"Zimse VI - Moon 7 - Amarr Constructions Production Plant\" se=\"0.5\" si=\"60006163\" sy=\"Zimse\" syi=\"30004127\"/>\r\n    <row c=\"Araz\" ci=\"20000603\" r=\"Kador\" ri=\"10000052\" s=\"Zimse V - Moon 11 - Amarr Constructions Production Plant\" se=\"0.5\" si=\"60006166\" sy=\"Zimse\" syi=\"30004127\"/>\r\n    <row c=\"Araz\" ci=\"20000603\" r=\"Kador\" ri=\"10000052\" s=\"Chanoun IX - Moon 16 - Amarr Constructions Production Plant\" se=\"0.5\" si=\"60006169\" sy=\"Chanoun\" syi=\"30004122\"/>\r\n    <row c=\"Orus\" ci=\"20000742\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nahol VII - Moon 6 - Amarr Constructions Production Plant\" se=\"0.6\" si=\"60006172\" sy=\"Nahol\" syi=\"30005069\"/>\r\n    <row c=\"Orus\" ci=\"20000742\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Daran V - Moon 1 - Amarr Constructions Foundry\" se=\"0.2\" si=\"60006175\" sy=\"Daran\" syi=\"30005074\"/>\r\n    <row c=\"Orus\" ci=\"20000742\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Pananan VIII - Moon 3 - Amarr Constructions Warehouse\" se=\"0.2\" si=\"60006178\" sy=\"Pananan\" syi=\"30005073\"/>\r\n    <row c=\"Orus\" ci=\"20000742\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Daran V - Amarr Constructions Foundry\" se=\"0.2\" si=\"60006181\" sy=\"Daran\" syi=\"30005074\"/>\r\n    <row c=\"Anama\" ci=\"20000619\" r=\"Aridia\" ri=\"10000054\" s=\"Maalna VI - Moon 16 - Amarr Constructions Warehouse\" se=\"0.3\" si=\"60006184\" sy=\"Maalna\" syi=\"30004234\"/>\r\n    <row c=\"Anama\" ci=\"20000619\" r=\"Aridia\" ri=\"10000054\" s=\"Van III - Moon 1 - Amarr Constructions Warehouse\" se=\"0.3\" si=\"60006187\" sy=\"Van\" syi=\"30004230\"/>\r\n    <row c=\"Anama\" ci=\"20000619\" r=\"Aridia\" ri=\"10000054\" s=\"Maseera IV - Moon 1 - Amarr Constructions Production Plant\" se=\"0.3\" si=\"60006190\" sy=\"Maseera\" syi=\"30004235\"/>\r\n    <row c=\"Anama\" ci=\"20000619\" r=\"Aridia\" ri=\"10000054\" s=\"Shirshocin III - Moon 2 - Amarr Constructions Warehouse\" se=\"0.3\" si=\"60006193\" sy=\"Shirshocin\" syi=\"30004233\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Anka I - Amarr Constructions Production Plant\" se=\"0.4\" si=\"60006196\" sy=\"Anka\" syi=\"30003071\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Myyhera VIII - Moon 12 - Amarr Constructions Production Plant\" se=\"0.5\" si=\"60006199\" sy=\"Myyhera\" syi=\"30003075\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Myyhera VIII - Moon 2 - Amarr Constructions Production Plant\" se=\"0.5\" si=\"60006202\" sy=\"Myyhera\" syi=\"30003075\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Sasiekko IV - Moon 2 - Amarr Constructions Warehouse\" se=\"0.5\" si=\"60006205\" sy=\"Sasiekko\" syi=\"30003074\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Sonama IV - Moon 1 - Amarr Constructions Production Plant\" se=\"0.8\" si=\"60006208\" sy=\"Sonama\" syi=\"30004099\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Halibai IV - Moon 1 - Amarr Constructions Production Plant\" se=\"0.7\" si=\"60006211\" sy=\"Halibai\" syi=\"30004100\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Sonama VII - Moon 4 - Amarr Constructions Production Plant\" se=\"0.8\" si=\"60006214\" sy=\"Sonama\" syi=\"30004099\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Inis-Ilix IV - Moon 1 - Amarr Constructions Foundry\" se=\"0.9\" si=\"60006217\" sy=\"Inis-Ilix\" syi=\"30004102\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Pimebeka VII - Moon 16 - Carthum Conglomerate Factory\" se=\"0.7\" si=\"60006220\" sy=\"Pimebeka\" syi=\"30001669\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Shesha III - Carthum Conglomerate Factory\" se=\"0.9\" si=\"60006223\" sy=\"Shesha\" syi=\"30001673\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Pimebeka VI - Moon 1 - Carthum Conglomerate Warehouse\" se=\"0.7\" si=\"60006226\" sy=\"Pimebeka\" syi=\"30001669\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Baviasi IX - Carthum Conglomerate Factory\" se=\"0.8\" si=\"60006229\" sy=\"Baviasi\" syi=\"30001670\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Pimebeka IV - Moon 1 - Carthum Conglomerate Warehouse\" se=\"0.7\" si=\"60006232\" sy=\"Pimebeka\" syi=\"30001669\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hilaban III - Moon 4 - Carthum Conglomerate Warehouse\" se=\"0.9\" si=\"60006235\" sy=\"Hilaban\" syi=\"30001674\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Dresi I - Moon 10 - Carthum Conglomerate Factory\" se=\"0.6\" si=\"60006238\" sy=\"Dresi\" syi=\"30004078\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Zororzih VII - Moon 12 - Carthum Conglomerate Factory\" se=\"0.7\" si=\"60006241\" sy=\"Zororzih\" syi=\"30004081\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Aharalel III - Moon 5 - Carthum Conglomerate Factory\" se=\"0.6\" si=\"60006244\" sy=\"Aharalel\" syi=\"30004082\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Gensela XI - Moon 2 - Carthum Conglomerate Factory\" se=\"0.7\" si=\"60006247\" sy=\"Gensela\" syi=\"30004083\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Aphend VII - Moon 7 - Carthum Conglomerate Foundry\" se=\"0.6\" si=\"60006250\" sy=\"Aphend\" syi=\"30004079\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Gensela IX - Carthum Conglomerate Warehouse\" se=\"0.7\" si=\"60006253\" sy=\"Gensela\" syi=\"30004083\"/>\r\n    <row c=\"Liela\" ci=\"20000333\" r=\"Domain\" ri=\"10000043\" s=\"Rayl X - Moon 3 - Carthum Conglomerate Factory\" se=\"0.5\" si=\"60006256\" sy=\"Rayl\" syi=\"30002271\"/>\r\n    <row c=\"Liela\" ci=\"20000333\" r=\"Domain\" ri=\"10000043\" s=\"Ebo IV - Moon 1 - Carthum Conglomerate Factory\" se=\"0.5\" si=\"60006259\" sy=\"Ebo\" syi=\"30002269\"/>\r\n    <row c=\"Liela\" ci=\"20000333\" r=\"Domain\" ri=\"10000043\" s=\"Rayl VIII - Moon 7 - Carthum Conglomerate Factory\" se=\"0.5\" si=\"60006262\" sy=\"Rayl\" syi=\"30002271\"/>\r\n    <row c=\"Liela\" ci=\"20000333\" r=\"Domain\" ri=\"10000043\" s=\"Ebo VII - Moon 1 - Carthum Conglomerate Factory\" se=\"0.5\" si=\"60006265\" sy=\"Ebo\" syi=\"30002269\"/>\r\n    <row c=\"Liela\" ci=\"20000333\" r=\"Domain\" ri=\"10000043\" s=\"Clarelam IV - Moon 4 - Carthum Conglomerate Foundry\" se=\"0.5\" si=\"60006268\" sy=\"Clarelam\" syi=\"30002275\"/>\r\n    <row c=\"Liela\" ci=\"20000333\" r=\"Domain\" ri=\"10000043\" s=\"Clarelam VI - Moon 2 - Carthum Conglomerate Foundry\" se=\"0.5\" si=\"60006271\" sy=\"Clarelam\" syi=\"30002275\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"Asrios VI - Moon 1 - Carthum Conglomerate Factory\" se=\"0.8\" si=\"60006274\" sy=\"Asrios\" syi=\"30004156\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"Shemah VI - Moon 16 - Carthum Conglomerate Factory\" se=\"0.8\" si=\"60006277\" sy=\"Shemah\" syi=\"30004155\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"Shemah VI - Moon 12 - Carthum Conglomerate Warehouse\" se=\"0.8\" si=\"60006280\" sy=\"Shemah\" syi=\"30004155\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"Asrios VII - Carthum Conglomerate Factory\" se=\"0.8\" si=\"60006283\" sy=\"Asrios\" syi=\"30004156\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"Asrios VIII - Carthum Conglomerate Production Plant\" se=\"0.8\" si=\"60006286\" sy=\"Asrios\" syi=\"30004156\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"Asrios VII - Moon 1 - Carthum Conglomerate Production Plant\" se=\"0.8\" si=\"60006289\" sy=\"Asrios\" syi=\"30004156\"/>\r\n    <row c=\"Kashag\" ci=\"20000508\" r=\"Domain\" ri=\"10000043\" s=\"Kheram IV - Moon 15 - Carthum Conglomerate Factory\" se=\"0.4\" si=\"60006292\" sy=\"Kheram\" syi=\"30003486\"/>\r\n    <row c=\"Kashag\" ci=\"20000508\" r=\"Domain\" ri=\"10000043\" s=\"Kheram V - Moon 6 - Carthum Conglomerate Factory\" se=\"0.4\" si=\"60006295\" sy=\"Kheram\" syi=\"30003486\"/>\r\n    <row c=\"Kashag\" ci=\"20000508\" r=\"Domain\" ri=\"10000043\" s=\"Kheram V - Moon 15 - Carthum Conglomerate Factory\" se=\"0.4\" si=\"60006298\" sy=\"Kheram\" syi=\"30003486\"/>\r\n    <row c=\"Kashag\" ci=\"20000508\" r=\"Domain\" ri=\"10000043\" s=\"Kheram VI - Moon 10 - Carthum Conglomerate Factory\" se=\"0.4\" si=\"60006301\" sy=\"Kheram\" syi=\"30003486\"/>\r\n    <row c=\"Kashag\" ci=\"20000508\" r=\"Domain\" ri=\"10000043\" s=\"Sibot XII - Carthum Conglomerate Production Plant\" se=\"0.2\" si=\"60006304\" sy=\"Sibot\" syi=\"30003484\"/>\r\n    <row c=\"Kashag\" ci=\"20000508\" r=\"Domain\" ri=\"10000043\" s=\"Kheram III - Moon 1 - Carthum Conglomerate Production Plant\" se=\"0.4\" si=\"60006307\" sy=\"Kheram\" syi=\"30003486\"/>\r\n    <row c=\"Avib\" ci=\"20000332\" r=\"Domain\" ri=\"10000043\" s=\"Shabura IX - Moon 7 - Carthum Conglomerate Factory\" se=\"0.7\" si=\"60006310\" sy=\"Shabura\" syi=\"30002267\"/>\r\n    <row c=\"Avib\" ci=\"20000332\" r=\"Domain\" ri=\"10000043\" s=\"Hadonoo III - Moon 9 - Carthum Conglomerate Research Center\" se=\"0.6\" si=\"60006313\" sy=\"Hadonoo\" syi=\"30002264\"/>\r\n    <row c=\"Avib\" ci=\"20000332\" r=\"Domain\" ri=\"10000043\" s=\"Jarshitsan VIII - Moon 8 - Carthum Conglomerate Factory\" se=\"0.6\" si=\"60006316\" sy=\"Jarshitsan\" syi=\"30002263\"/>\r\n    <row c=\"Avib\" ci=\"20000332\" r=\"Domain\" ri=\"10000043\" s=\"Shabura VI - Moon 10 - Carthum Conglomerate Warehouse\" se=\"0.7\" si=\"60006319\" sy=\"Shabura\" syi=\"30002267\"/>\r\n    <row c=\"Avib\" ci=\"20000332\" r=\"Domain\" ri=\"10000043\" s=\"Adia VIII - Moon 9 - Carthum Conglomerate Foundry\" se=\"0.7\" si=\"60006322\" sy=\"Adia\" syi=\"30002268\"/>\r\n    <row c=\"Avib\" ci=\"20000332\" r=\"Domain\" ri=\"10000043\" s=\"Adia VII - Moon 1 - Carthum Conglomerate Foundry\" se=\"0.7\" si=\"60006325\" sy=\"Adia\" syi=\"30002268\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Hahda VII - Moon 1 - Carthum Conglomerate Factory\" se=\"0.6\" si=\"60006328\" sy=\"Hahda\" syi=\"30003533\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Raravath VI - Carthum Conglomerate Factory\" se=\"0.4\" si=\"60006331\" sy=\"Raravath\" syi=\"30003530\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Raravath XII - Moon 1 - Carthum Conglomerate Factory\" se=\"0.4\" si=\"60006334\" sy=\"Raravath\" syi=\"30003530\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Hisoufad VII - Moon 4 - Carthum Conglomerate Factory\" se=\"0.7\" si=\"60006337\" sy=\"Hisoufad\" syi=\"30003531\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Namaili IV - Carthum Conglomerate Production Plant\" se=\"0.4\" si=\"60006340\" sy=\"Namaili\" syi=\"30003534\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Namaili VII - Moon 2 - Carthum Conglomerate Warehouse\" se=\"0.4\" si=\"60006343\" sy=\"Namaili\" syi=\"30003534\"/>\r\n    <row c=\"Yekti\" ci=\"20000511\" r=\"Domain\" ri=\"10000043\" s=\"Bahromab IX - Moon 8 - Carthum Conglomerate Factory\" se=\"0.6\" si=\"60006346\" sy=\"Bahromab\" syi=\"30003502\"/>\r\n    <row c=\"Yekti\" ci=\"20000511\" r=\"Domain\" ri=\"10000043\" s=\"Bahromab IX - Moon 5 - Carthum Conglomerate Factory\" se=\"0.6\" si=\"60006349\" sy=\"Bahromab\" syi=\"30003502\"/>\r\n    <row c=\"Yekti\" ci=\"20000511\" r=\"Domain\" ri=\"10000043\" s=\"Bahromab IX - Moon 13 - Carthum Conglomerate Factory\" se=\"0.6\" si=\"60006352\" sy=\"Bahromab\" syi=\"30003502\"/>\r\n    <row c=\"Yekti\" ci=\"20000511\" r=\"Domain\" ri=\"10000043\" s=\"Bahromab VIII - Moon 4 - Carthum Conglomerate Factory\" se=\"0.6\" si=\"60006355\" sy=\"Bahromab\" syi=\"30003502\"/>\r\n    <row c=\"Yekti\" ci=\"20000511\" r=\"Domain\" ri=\"10000043\" s=\"Madirmilire VI - Moon 11 - Carthum Conglomerate Warehouse\" se=\"0.6\" si=\"60006358\" sy=\"Madirmilire\" syi=\"30003503\"/>\r\n    <row c=\"Yekti\" ci=\"20000511\" r=\"Domain\" ri=\"10000043\" s=\"Madirmilire VII - Moon 3 - Carthum Conglomerate Warehouse\" se=\"0.6\" si=\"60006361\" sy=\"Madirmilire\" syi=\"30003503\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Myyhera V - Moon 1 - Carthum Conglomerate Factory\" se=\"0.5\" si=\"60006364\" sy=\"Myyhera\" syi=\"30003075\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Saikamon III - Moon 2 - Carthum Conglomerate Factory\" se=\"0.4\" si=\"60006367\" sy=\"Saikamon\" syi=\"30003079\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Uusanen I - Carthum Conglomerate Factory\" se=\"0.4\" si=\"60006370\" sy=\"Uusanen\" syi=\"30003077\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Netsalakka VIII - Carthum Conglomerate Factory\" se=\"0.5\" si=\"60006373\" sy=\"Netsalakka\" syi=\"30003073\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Uusanen V - Carthum Conglomerate Production Plant\" se=\"0.4\" si=\"60006376\" sy=\"Uusanen\" syi=\"30003077\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Saikamon VI - Moon 2 - Carthum Conglomerate Production Plant\" se=\"0.4\" si=\"60006379\" sy=\"Saikamon\" syi=\"30003079\"/>\r\n    <row c=\"Nazdirer\" ci=\"20000760\" r=\"Genesis\" ri=\"10000067\" s=\"Cleyd IV - Moon 6 - Carthum Conglomerate Factory\" se=\"0.5\" si=\"60006382\" sy=\"Cleyd\" syi=\"30005194\"/>\r\n    <row c=\"Nazdirer\" ci=\"20000760\" r=\"Genesis\" ri=\"10000067\" s=\"Atreen VIII - Carthum Conglomerate Factory\" se=\"0.5\" si=\"60006385\" sy=\"Atreen\" syi=\"30005197\"/>\r\n    <row c=\"Nazdirer\" ci=\"20000760\" r=\"Genesis\" ri=\"10000067\" s=\"Cleyd V - Carthum Conglomerate Factory\" se=\"0.5\" si=\"60006388\" sy=\"Cleyd\" syi=\"30005194\"/>\r\n    <row c=\"Nazdirer\" ci=\"20000760\" r=\"Genesis\" ri=\"10000067\" s=\"Ahbazon VIII - Moon 2 - Carthum Conglomerate Warehouse\" se=\"0.4\" si=\"60006391\" sy=\"Ahbazon\" syi=\"30005196\"/>\r\n    <row c=\"Nazdirer\" ci=\"20000760\" r=\"Genesis\" ri=\"10000067\" s=\"Cleyd VI - Moon 4 - Carthum Conglomerate Production Plant\" se=\"0.5\" si=\"60006394\" sy=\"Cleyd\" syi=\"30005194\"/>\r\n    <row c=\"Nazdirer\" ci=\"20000760\" r=\"Genesis\" ri=\"10000067\" s=\"Ahbazon IX - Moon 11 - Carthum Conglomerate Production Plant\" se=\"0.4\" si=\"60006397\" sy=\"Ahbazon\" syi=\"30005196\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Penirgman IV - Imperial Armaments Factory\" se=\"0.9\" si=\"60006400\" sy=\"Penirgman\" syi=\"30003488\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Khopa VII - Moon 3 - Imperial Armaments Factory\" se=\"0.8\" si=\"60006403\" sy=\"Khopa\" syi=\"30003490\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Penirgman IX - Moon 13 - Imperial Armaments Factory\" se=\"0.9\" si=\"60006406\" sy=\"Penirgman\" syi=\"30003488\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Penirgman V - Imperial Armaments Factory\" se=\"0.9\" si=\"60006409\" sy=\"Penirgman\" syi=\"30003488\"/>\r\n    <row c=\"Maseend\" ci=\"20000517\" r=\"Domain\" ri=\"10000043\" s=\"Yuhelia V - Moon 1 - Imperial Armaments Factory\" se=\"0.8\" si=\"60006412\" sy=\"Yuhelia\" syi=\"30003545\"/>\r\n    <row c=\"Maseend\" ci=\"20000517\" r=\"Domain\" ri=\"10000043\" s=\"Zhilshinou IX - Imperial Armaments Factory\" se=\"0.9\" si=\"60006415\" sy=\"Zhilshinou\" syi=\"30003550\"/>\r\n    <row c=\"Maseend\" ci=\"20000517\" r=\"Domain\" ri=\"10000043\" s=\"Ana IX - Moon 19 - Imperial Armaments Factory\" se=\"0.9\" si=\"60006418\" sy=\"Ana\" syi=\"30003552\"/>\r\n    <row c=\"Maseend\" ci=\"20000517\" r=\"Domain\" ri=\"10000043\" s=\"Hamse IX - Moon 13 - Imperial Armaments Factory\" se=\"0.9\" si=\"60006421\" sy=\"Hamse\" syi=\"30003547\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Ansila X - Imperial Armaments Factory\" se=\"0.9\" si=\"60006424\" sy=\"Ansila\" syi=\"30000132\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Ikuchi VI - Moon 15 - Imperial Armaments Warehouse\" se=\"1.0\" si=\"60006427\" sy=\"Ikuchi\" syi=\"30000138\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Outuni IX - Moon 3 - Imperial Armaments Factory\" se=\"0.7\" si=\"60006430\" sy=\"Outuni\" syi=\"30000135\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Outuni X - Moon 14 - Imperial Armaments Factory\" se=\"0.7\" si=\"60006433\" sy=\"Outuni\" syi=\"30000135\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Stirht VII - Moon 4 - Imperial Armaments Warehouse\" se=\"0.9\" si=\"60006436\" sy=\"Stirht\" syi=\"30003376\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Alf VI - Imperial Armaments Factory\" se=\"1.0\" si=\"60006439\" sy=\"Alf\" syi=\"30003380\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Illuin IV - Moon 5 - Imperial Armaments Warehouse\" se=\"0.9\" si=\"60006442\" sy=\"Illuin\" syi=\"30003377\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Illuin V - Moon 5 - Imperial Armaments Factory\" se=\"0.9\" si=\"60006445\" sy=\"Illuin\" syi=\"30003377\"/>\r\n    <row c=\"Jakemhih\" ci=\"20000519\" r=\"Domain\" ri=\"10000043\" s=\"Ziriert VIII - Moon 12 - Imperial Armaments Factory\" se=\"0.1\" si=\"60006448\" sy=\"Ziriert\" syi=\"30003562\"/>\r\n    <row c=\"Jakemhih\" ci=\"20000519\" r=\"Domain\" ri=\"10000043\" s=\"Mamet IV - Moon 10 - Imperial Armaments Factory\" se=\"0.1\" si=\"60006451\" sy=\"Mamet\" syi=\"30003559\"/>\r\n    <row c=\"Jakemhih\" ci=\"20000519\" r=\"Domain\" ri=\"10000043\" s=\"Hoshoun VII - Moon 17 - Imperial Armaments Warehouse\" se=\"0.1\" si=\"60006454\" sy=\"Hoshoun\" syi=\"30003560\"/>\r\n    <row c=\"Jakemhih\" ci=\"20000519\" r=\"Domain\" ri=\"10000043\" s=\"Mamet V - Moon 7 - Imperial Armaments Factory\" se=\"0.1\" si=\"60006457\" sy=\"Mamet\" syi=\"30003559\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Ziona V - Moon 1 - Imperial Armaments Warehouse\" se=\"0.6\" si=\"60006460\" sy=\"Ziona\" syi=\"30002203\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Akhragan VIII - Moon 3 - Imperial Armaments Factory\" se=\"0.8\" si=\"60006463\" sy=\"Akhragan\" syi=\"30002197\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Mikhir V - Moon 10 - Imperial Armaments Factory\" se=\"0.7\" si=\"60006466\" sy=\"Mikhir\" syi=\"30002198\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Mikhir V - Moon 23 - Imperial Armaments Factory\" se=\"0.7\" si=\"60006469\" sy=\"Mikhir\" syi=\"30002198\"/>\r\n    <row c=\"Benurad\" ci=\"20000378\" r=\"Heimatar\" ri=\"10000030\" s=\"Bundindus IV - Moon 7 - Imperial Armaments Factory\" se=\"0.4\" si=\"60006472\" sy=\"Bundindus\" syi=\"30002577\"/>\r\n    <row c=\"Benurad\" ci=\"20000378\" r=\"Heimatar\" ri=\"10000030\" s=\"Otraren VI - Moon 16 - Imperial Armaments Factory\" se=\"0.5\" si=\"60006475\" sy=\"Otraren\" syi=\"30002578\"/>\r\n    <row c=\"Benurad\" ci=\"20000378\" r=\"Heimatar\" ri=\"10000030\" s=\"Otraren VI - Moon 18 - Imperial Armaments Warehouse\" se=\"0.5\" si=\"60006478\" sy=\"Otraren\" syi=\"30002578\"/>\r\n    <row c=\"Benurad\" ci=\"20000378\" r=\"Heimatar\" ri=\"10000030\" s=\"Otraren VII - Moon 3 - Imperial Armaments Warehouse\" se=\"0.5\" si=\"60006481\" sy=\"Otraren\" syi=\"30002578\"/>\r\n    <row c=\"Bedaleya\" ci=\"20000010\" r=\"Derelik\" ri=\"10000001\" s=\"Hasateem V - Moon 11 - Imperial Armaments Factory\" se=\"0.4\" si=\"60006484\" sy=\"Hasateem\" syi=\"30000074\"/>\r\n    <row c=\"Bedaleya\" ci=\"20000010\" r=\"Derelik\" ri=\"10000001\" s=\"Hasateem VII - Moon 2 - Imperial Armaments Factory\" se=\"0.4\" si=\"60006487\" sy=\"Hasateem\" syi=\"30000074\"/>\r\n    <row c=\"Bedaleya\" ci=\"20000010\" r=\"Derelik\" ri=\"10000001\" s=\"Assah IX - Moon 1 - Imperial Armaments Factory\" se=\"0.3\" si=\"60006490\" sy=\"Assah\" syi=\"30000075\"/>\r\n    <row c=\"Bedaleya\" ci=\"20000010\" r=\"Derelik\" ri=\"10000001\" s=\"Hasateem VI - Moon 8 - Imperial Armaments Factory\" se=\"0.4\" si=\"60006493\" sy=\"Hasateem\" syi=\"30000074\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Aeddin II - Imperial Armaments Warehouse\" se=\"0.6\" si=\"60006496\" sy=\"Aeddin\" syi=\"30002383\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Teonusude III - Moon 8 - Imperial Armaments Factory\" se=\"0.6\" si=\"60006499\" sy=\"Teonusude\" syi=\"30002385\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Atlar VI - Moon 4 - Imperial Armaments Factory\" se=\"0.4\" si=\"60006502\" sy=\"Atlar\" syi=\"30002389\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Teonusude VI - Imperial Armaments Factory\" se=\"0.6\" si=\"60006505\" sy=\"Teonusude\" syi=\"30002385\"/>\r\n    <row c=\"Kabo\" ci=\"20000437\" r=\"Devoid\" ri=\"10000036\" s=\"Ibash VI - Imperial Armaments Factory\" se=\"0.2\" si=\"60006508\" sy=\"Ibash\" syi=\"30002984\"/>\r\n    <row c=\"Kabo\" ci=\"20000437\" r=\"Devoid\" ri=\"10000036\" s=\"Mendori IX - Moon 9 - Imperial Armaments Factory\" se=\"0.5\" si=\"60006511\" sy=\"Mendori\" syi=\"30002986\"/>\r\n    <row c=\"Kabo\" ci=\"20000437\" r=\"Devoid\" ri=\"10000036\" s=\"Ibash V - Moon 4 - Imperial Armaments Factory\" se=\"0.2\" si=\"60006514\" sy=\"Ibash\" syi=\"30002984\"/>\r\n    <row c=\"Kabo\" ci=\"20000437\" r=\"Devoid\" ri=\"10000036\" s=\"Ibash V - Moon 12 - Imperial Armaments Factory\" se=\"0.2\" si=\"60006517\" sy=\"Ibash\" syi=\"30002984\"/>\r\n    <row c=\"Ryra\" ci=\"20000434\" r=\"Devoid\" ri=\"10000036\" s=\"Choonka X - Moon 6 - Imperial Armaments Factory\" se=\"0.6\" si=\"60006520\" sy=\"Choonka\" syi=\"30002965\"/>\r\n    <row c=\"Ryra\" ci=\"20000434\" r=\"Devoid\" ri=\"10000036\" s=\"Dihra VIII - Moon 16 - Imperial Armaments Factory\" se=\"0.6\" si=\"60006523\" sy=\"Dihra\" syi=\"30002967\"/>\r\n    <row c=\"Ryra\" ci=\"20000434\" r=\"Devoid\" ri=\"10000036\" s=\"Esescama VIII - Moon 3 - Imperial Armaments Warehouse\" se=\"0.6\" si=\"60006526\" sy=\"Esescama\" syi=\"30002964\"/>\r\n    <row c=\"Ryra\" ci=\"20000434\" r=\"Devoid\" ri=\"10000036\" s=\"Thasinaz VII - Moon 12 - Imperial Armaments Warehouse\" se=\"0.6\" si=\"60006529\" sy=\"Thasinaz\" syi=\"30002966\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"Hurjafren V - Imperial Armaments Factory\" se=\"0.9\" si=\"60006532\" sy=\"Hurjafren\" syi=\"30002572\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"Onga VIII - Moon 5 - Imperial Armaments Factory\" se=\"1.0\" si=\"60006535\" sy=\"Onga\" syi=\"30002568\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"Hurjafren IX - Imperial Armaments Factory\" se=\"0.9\" si=\"60006538\" sy=\"Hurjafren\" syi=\"30002572\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"Oremmulf IX - Moon 2 - Imperial Armaments Warehouse\" se=\"0.9\" si=\"60006541\" sy=\"Oremmulf\" syi=\"30002571\"/>\r\n    <row c=\"Lolbrerie\" ci=\"20000393\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Dodenvale VIII - Moon 3 - Imperial Armaments Factory\" se=\"0.7\" si=\"60006544\" sy=\"Dodenvale\" syi=\"30002685\"/>\r\n    <row c=\"Lolbrerie\" ci=\"20000393\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Chainelant VIII - Moon 3 - Imperial Armaments Factory\" se=\"0.9\" si=\"60006547\" sy=\"Chainelant\" syi=\"30002688\"/>\r\n    <row c=\"Lolbrerie\" ci=\"20000393\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Olettiers VI - Moon 6 - Imperial Armaments Factory\" se=\"0.4\" si=\"60006550\" sy=\"Olettiers\" syi=\"30002686\"/>\r\n    <row c=\"Lolbrerie\" ci=\"20000393\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Dodenvale X - Moon 2 - Imperial Armaments Factory\" se=\"0.7\" si=\"60006553\" sy=\"Dodenvale\" syi=\"30002685\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Oppold IX - Moon 19 - Imperial Armaments Factory\" se=\"0.7\" si=\"60006556\" sy=\"Oppold\" syi=\"30003430\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Oppold VIII - Moon 12 - Imperial Armaments Factory\" se=\"0.7\" si=\"60006559\" sy=\"Oppold\" syi=\"30003430\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Gedugaud IV - Moon 2 - Imperial Armaments Factory\" se=\"0.7\" si=\"60006562\" sy=\"Gedugaud\" syi=\"30003433\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Gedugaud VI - Moon 8 - Imperial Armaments Factory\" se=\"0.7\" si=\"60006565\" sy=\"Gedugaud\" syi=\"30003433\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Aulbres IX - Moon 10 - Imperial Armaments Factory\" se=\"0.1\" si=\"60006568\" sy=\"Aulbres\" syi=\"30003818\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Ausmaert VII - Moon 2 - Imperial Armaments Factory\" se=\"0.1\" si=\"60006571\" sy=\"Ausmaert\" syi=\"30003821\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Aulbres IX - Moon 20 - Imperial Armaments Factory\" se=\"0.1\" si=\"60006574\" sy=\"Aulbres\" syi=\"30003818\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Aulbres VIII - Moon 23 - Imperial Armaments Factory\" se=\"0.1\" si=\"60006577\" sy=\"Aulbres\" syi=\"30003818\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Baviasi IX - Viziam Factory\" se=\"0.8\" si=\"60006580\" sy=\"Baviasi\" syi=\"30001670\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Shesha II - Viziam Warehouse\" se=\"0.9\" si=\"60006583\" sy=\"Shesha\" syi=\"30001673\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Baviasi II - Moon 1 - Viziam Factory\" se=\"0.8\" si=\"60006586\" sy=\"Baviasi\" syi=\"30001670\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Zehru IX - Moon 4 - Viziam Factory\" se=\"0.9\" si=\"60006589\" sy=\"Zehru\" syi=\"30001734\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Tew IX - Moon 9 - Viziam Factory\" se=\"0.9\" si=\"60006592\" sy=\"Tew\" syi=\"30001733\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Zehru IX - Moon 10 - Viziam Warehouse\" se=\"0.9\" si=\"60006595\" sy=\"Zehru\" syi=\"30001734\"/>\r\n    <row c=\"Emsek\" ci=\"20000246\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hibi V - Moon 10 - Viziam Factory\" se=\"0.5\" si=\"60006598\" sy=\"Hibi\" syi=\"30001662\"/>\r\n    <row c=\"Emsek\" ci=\"20000246\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Gemodi VI - Viziam Factory\" se=\"0.4\" si=\"60006601\" sy=\"Gemodi\" syi=\"30001663\"/>\r\n    <row c=\"Emsek\" ci=\"20000246\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Pera IV - Moon 3 - Viziam Factory\" se=\"0.5\" si=\"60006604\" sy=\"Pera\" syi=\"30001666\"/>\r\n    <row c=\"Peges\" ci=\"20000257\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Uhodoh IX - Viziam Factory\" se=\"0.8\" si=\"60006607\" sy=\"Uhodoh\" syi=\"30001735\"/>\r\n    <row c=\"Peges\" ci=\"20000257\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Esa VIII - Moon 2 - Viziam Warehouse\" se=\"0.8\" si=\"60006610\" sy=\"Esa\" syi=\"30001736\"/>\r\n    <row c=\"Peges\" ci=\"20000257\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hath IV - Moon 6 - Viziam Warehouse\" se=\"0.8\" si=\"60006613\" sy=\"Hath\" syi=\"30001737\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"Nakatre VIII - Moon 13 - Zoar and Sons Factory\" se=\"0.6\" si=\"60006616\" sy=\"Nakatre\" syi=\"30002988\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"Nakatre III - Zoar and Sons Factory\" se=\"0.6\" si=\"60006619\" sy=\"Nakatre\" syi=\"30002988\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"Nakatre IX - Zoar and Sons Factory\" se=\"0.6\" si=\"60006622\" sy=\"Nakatre\" syi=\"30002988\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"Nakatre VI - Moon 3 - Zoar and Sons Factory\" se=\"0.6\" si=\"60006625\" sy=\"Nakatre\" syi=\"30002988\"/>\r\n    <row c=\"Ekrin\" ci=\"20000763\" r=\"Genesis\" ri=\"10000067\" s=\"Ashokon XII - Moon 2 - Zoar and Sons Factory\" se=\"0.7\" si=\"60006628\" sy=\"Ashokon\" syi=\"30005214\"/>\r\n    <row c=\"Ekrin\" ci=\"20000763\" r=\"Genesis\" ri=\"10000067\" s=\"Sheroo X - Moon 5 - Zoar and Sons Factory\" se=\"0.6\" si=\"60006631\" sy=\"Sheroo\" syi=\"30005217\"/>\r\n    <row c=\"Ekrin\" ci=\"20000763\" r=\"Genesis\" ri=\"10000067\" s=\"Sigga VIII - Moon 4 - Zoar and Sons Factory\" se=\"0.5\" si=\"60006634\" sy=\"Sigga\" syi=\"30005219\"/>\r\n    <row c=\"Ekrin\" ci=\"20000763\" r=\"Genesis\" ri=\"10000067\" s=\"Ashokon XIII - Moon 8 - Zoar and Sons Factory\" se=\"0.7\" si=\"60006637\" sy=\"Ashokon\" syi=\"30005214\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Polfaly VI - Moon 7 - Zoar and Sons Warehouse\" se=\"0.8\" si=\"60006640\" sy=\"Polfaly\" syi=\"30005048\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nahyeen VII - Zoar and Sons Factory\" se=\"0.8\" si=\"60006643\" sy=\"Nahyeen\" syi=\"30005045\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Danyana IV - Moon 1 - Zoar and Sons Factory\" se=\"0.8\" si=\"60006646\" sy=\"Danyana\" syi=\"30005044\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Danyana III - Moon 4 - Zoar and Sons Factory\" se=\"0.8\" si=\"60006649\" sy=\"Danyana\" syi=\"30005044\"/>\r\n    <row c=\"Jakemhih\" ci=\"20000519\" r=\"Domain\" ri=\"10000043\" s=\"Mamet IV - Moon 6 - Zoar and Sons Factory\" se=\"0.1\" si=\"60006652\" sy=\"Mamet\" syi=\"30003559\"/>\r\n    <row c=\"Jakemhih\" ci=\"20000519\" r=\"Domain\" ri=\"10000043\" s=\"Ziriert VIII - Moon 3 - Zoar and Sons Factory\" se=\"0.1\" si=\"60006655\" sy=\"Ziriert\" syi=\"30003562\"/>\r\n    <row c=\"Jakemhih\" ci=\"20000519\" r=\"Domain\" ri=\"10000043\" s=\"Misaba V - Moon 3 - Zoar and Sons Factory\" se=\"0.1\" si=\"60006658\" sy=\"Misaba\" syi=\"30003563\"/>\r\n    <row c=\"Jakemhih\" ci=\"20000519\" r=\"Domain\" ri=\"10000043\" s=\"Ziriert VI - Zoar and Sons Factory\" se=\"0.1\" si=\"60006661\" sy=\"Ziriert\" syi=\"30003562\"/>\r\n    <row c=\"Fabai\" ci=\"20000628\" r=\"Aridia\" ri=\"10000054\" s=\"Omigiav IV - Moon 12 - Zoar and Sons Warehouse\" se=\"0.2\" si=\"60006664\" sy=\"Omigiav\" syi=\"30004302\"/>\r\n    <row c=\"Fabai\" ci=\"20000628\" r=\"Aridia\" ri=\"10000054\" s=\"Efu V - Moon 19 - Zoar and Sons Factory\" se=\"0.1\" si=\"60006667\" sy=\"Efu\" syi=\"30004297\"/>\r\n    <row c=\"Fabai\" ci=\"20000628\" r=\"Aridia\" ri=\"10000054\" s=\"Efu V - Moon 18 - Zoar and Sons Factory\" se=\"0.1\" si=\"60006670\" sy=\"Efu\" syi=\"30004297\"/>\r\n    <row c=\"Fabai\" ci=\"20000628\" r=\"Aridia\" ri=\"10000054\" s=\"Sakht VI - Moon 6 - Zoar and Sons Factory\" se=\"0.1\" si=\"60006673\" sy=\"Sakht\" syi=\"30004299\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Khabara VI - Moon 7 - Zoar and Sons Factory\" se=\"0.3\" si=\"60006676\" sy=\"Khabara\" syi=\"30005032\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Jeni IX - Moon 17 - Zoar and Sons Warehouse\" se=\"0.3\" si=\"60006679\" sy=\"Jeni\" syi=\"30005033\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Fensi VII - Moon 10 - Zoar and Sons Factory\" se=\"0.4\" si=\"60006682\" sy=\"Fensi\" syi=\"30005030\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Ami VI - Zoar and Sons Factory\" se=\"0.4\" si=\"60006685\" sy=\"Ami\" syi=\"30005035\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Zith IX - Zoar and Sons Factory\" se=\"0.9\" si=\"60006688\" sy=\"Zith\" syi=\"30001732\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Tew V - Moon 1 - Zoar and Sons Factory\" se=\"0.9\" si=\"60006691\" sy=\"Tew\" syi=\"30001733\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Sinid I - Zoar and Sons Warehouse\" se=\"0.7\" si=\"60006694\" sy=\"Sinid\" syi=\"30001729\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Alra XII - Moon 2 - Zoar and Sons Factory\" se=\"0.8\" si=\"60006697\" sy=\"Alra\" syi=\"30001730\"/>\r\n    <row c=\"Charak\" ci=\"20000768\" r=\"Genesis\" ri=\"10000067\" s=\"Habu IV - Zoar and Sons Factory\" se=\"0.6\" si=\"60006700\" sy=\"Habu\" syi=\"30005250\"/>\r\n    <row c=\"Charak\" ci=\"20000768\" r=\"Genesis\" ri=\"10000067\" s=\"Abhan VII - Moon 1 - Zoar and Sons Factory\" se=\"0.6\" si=\"60006703\" sy=\"Abhan\" syi=\"30005254\"/>\r\n    <row c=\"Charak\" ci=\"20000768\" r=\"Genesis\" ri=\"10000067\" s=\"Habu V - Moon 13 - Zoar and Sons Factory\" se=\"0.6\" si=\"60006706\" sy=\"Habu\" syi=\"30005250\"/>\r\n    <row c=\"Charak\" ci=\"20000768\" r=\"Genesis\" ri=\"10000067\" s=\"Habu V - Moon 2 - Zoar and Sons Factory\" se=\"0.6\" si=\"60006709\" sy=\"Habu\" syi=\"30005250\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Vaini III - Moon 1 - Zoar and Sons Factory\" se=\"0.2\" si=\"60006712\" sy=\"Vaini\" syi=\"30004289\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Pserz VI - Zoar and Sons Factory\" se=\"0.4\" si=\"60006715\" sy=\"Pserz\" syi=\"30004293\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Pserz III - Moon 1 - Zoar and Sons Factory\" se=\"0.4\" si=\"60006718\" sy=\"Pserz\" syi=\"30004293\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Keba IX - Moon 3 - Zoar and Sons Factory\" se=\"0.5\" si=\"60006721\" sy=\"Keba\" syi=\"30004295\"/>\r\n    <row c=\"Mimishia\" ci=\"20000248\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Thashkarai VI - Zoar and Sons Factory\" se=\"0.6\" si=\"60006724\" sy=\"Thashkarai\" syi=\"30001677\"/>\r\n    <row c=\"Mimishia\" ci=\"20000248\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Mimen X - Zoar and Sons Factory\" se=\"0.5\" si=\"60006727\" sy=\"Mimen\" syi=\"30001676\"/>\r\n    <row c=\"Mimishia\" ci=\"20000248\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Mimen X - Moon 2 - Zoar and Sons Factory\" se=\"0.5\" si=\"60006730\" sy=\"Mimen\" syi=\"30001676\"/>\r\n    <row c=\"Mimishia\" ci=\"20000248\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Atoosh VII - Moon 2 - Zoar and Sons Factory\" se=\"0.6\" si=\"60006733\" sy=\"Atoosh\" syi=\"30001678\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"Nordar VI - Moon 6 - Noble Appliances Factory\" se=\"0.6\" si=\"60006736\" sy=\"Nordar\" syi=\"30004094\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"Uanim VI - Moon 12 - Noble Appliances Factory\" se=\"0.6\" si=\"60006739\" sy=\"Uanim\" syi=\"30004091\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"Murini III - Moon 18 - Noble Appliances Factory\" se=\"0.6\" si=\"60006742\" sy=\"Murini\" syi=\"30004092\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Suner VI - Moon 13 - Noble Appliances Factory\" se=\"0.9\" si=\"60006745\" sy=\"Suner\" syi=\"30004101\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Suner VII - Moon 7 - Noble Appliances Factory\" se=\"0.9\" si=\"60006748\" sy=\"Suner\" syi=\"30004101\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Suner VI - Moon 7 - Noble Appliances Warehouse\" se=\"0.9\" si=\"60006751\" sy=\"Suner\" syi=\"30004101\"/>\r\n    <row c=\"Araz\" ci=\"20000603\" r=\"Kador\" ri=\"10000052\" s=\"Koona VI - Moon 14 - Noble Appliances Factory\" se=\"0.5\" si=\"60006754\" sy=\"Koona\" syi=\"30004128\"/>\r\n    <row c=\"Araz\" ci=\"20000603\" r=\"Kador\" ri=\"10000052\" s=\"Chanoun VIII - Moon 8 - Noble Appliances Factory\" se=\"0.5\" si=\"60006757\" sy=\"Chanoun\" syi=\"30004122\"/>\r\n    <row c=\"Araz\" ci=\"20000603\" r=\"Kador\" ri=\"10000052\" s=\"Chanoun VIII - Moon 10 - Noble Appliances Factory\" se=\"0.5\" si=\"60006760\" sy=\"Chanoun\" syi=\"30004122\"/>\r\n    <row c=\"Heti\" ci=\"20000600\" r=\"Kador\" ri=\"10000052\" s=\"Ansasos VIII - Moon 5 - Noble Appliances Factory\" se=\"0.4\" si=\"60006763\" sy=\"Ansasos\" syi=\"30004104\"/>\r\n    <row c=\"Heti\" ci=\"20000600\" r=\"Kador\" ri=\"10000052\" s=\"Bordan V - Noble Appliances Factory\" se=\"0.4\" si=\"60006766\" sy=\"Bordan\" syi=\"30004106\"/>\r\n    <row c=\"Heti\" ci=\"20000600\" r=\"Kador\" ri=\"10000052\" s=\"Ansasos III - Moon 1 - Noble Appliances Factory\" se=\"0.4\" si=\"60006769\" sy=\"Ansasos\" syi=\"30004104\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"Laddiaha VI - Moon 7 - Ducia Foundry Mining Outpost\" se=\"0.7\" si=\"60006772\" sy=\"Laddiaha\" syi=\"30002989\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"Hati V - Moon 1 - Ducia Foundry Mineral Reserve\" se=\"0.8\" si=\"60006775\" sy=\"Hati\" syi=\"30002994\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"Akes VII - Ducia Foundry Mineral Reserve\" se=\"0.8\" si=\"60006778\" sy=\"Akes\" syi=\"30002992\"/>\r\n    <row c=\"Maseend\" ci=\"20000517\" r=\"Domain\" ri=\"10000043\" s=\"Ana VII - Moon 3 - Ducia Foundry Mineral Reserve\" se=\"0.9\" si=\"60006781\" sy=\"Ana\" syi=\"30003552\"/>\r\n    <row c=\"Maseend\" ci=\"20000517\" r=\"Domain\" ri=\"10000043\" s=\"Maiah IV - Moon 1 - Ducia Foundry Refinery\" se=\"0.8\" si=\"60006784\" sy=\"Maiah\" syi=\"30003546\"/>\r\n    <row c=\"Maseend\" ci=\"20000517\" r=\"Domain\" ri=\"10000043\" s=\"Maiah VIII - Moon 3 - Ducia Foundry Refinery\" se=\"0.8\" si=\"60006787\" sy=\"Maiah\" syi=\"30003546\"/>\r\n    <row c=\"Jeon\" ci=\"20000729\" r=\"Essence\" ri=\"10000064\" s=\"Deven V - Moon 16 - Ducia Foundry Mining Outpost\" se=\"0.3\" si=\"60006790\" sy=\"Deven\" syi=\"30004985\"/>\r\n    <row c=\"Jeon\" ci=\"20000729\" r=\"Essence\" ri=\"10000064\" s=\"Amane VII - Moon 11 - Ducia Foundry Mineral Reserve\" se=\"0.6\" si=\"60006793\" sy=\"Amane\" syi=\"30004983\"/>\r\n    <row c=\"Jeon\" ci=\"20000729\" r=\"Essence\" ri=\"10000064\" s=\"Amane I - Ducia Foundry Mineral Reserve\" se=\"0.6\" si=\"60006796\" sy=\"Amane\" syi=\"30004983\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"Vlillirier VII - Moon 1 - Ducia Foundry Refinery\" se=\"0.3\" si=\"60006799\" sy=\"Vlillirier\" syi=\"30003836\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"Esesier X - Ducia Foundry Mining Outpost\" se=\"0.3\" si=\"60006802\" sy=\"Esesier\" syi=\"30003842\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"Vlillirier VII - Moon 15 - Ducia Foundry Mineral Reserve\" se=\"0.3\" si=\"60006805\" sy=\"Vlillirier\" syi=\"30003836\"/>\r\n    <row c=\"Enka\" ci=\"20000440\" r=\"Devoid\" ri=\"10000036\" s=\"Mili VIII - Moon 10 - Ducia Foundry Refinery\" se=\"0.6\" si=\"60006808\" sy=\"Mili\" syi=\"30003001\"/>\r\n    <row c=\"Enka\" ci=\"20000440\" r=\"Devoid\" ri=\"10000036\" s=\"Uktiad VII - Moon 21 - Ducia Foundry Mineral Reserve\" se=\"0.6\" si=\"60006811\" sy=\"Uktiad\" syi=\"30003005\"/>\r\n    <row c=\"Enka\" ci=\"20000440\" r=\"Devoid\" ri=\"10000036\" s=\"Mili X - Moon 3 - Ducia Foundry Refinery\" se=\"0.6\" si=\"60006814\" sy=\"Mili\" syi=\"30003001\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Turba X - Moon 4 - Ducia Foundry Refinery\" se=\"0.7\" si=\"60006817\" sy=\"Turba\" syi=\"30004098\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Kothe III - Ducia Foundry Mining Outpost\" se=\"0.6\" si=\"60006820\" sy=\"Kothe\" syi=\"30004103\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Halibai IV - Moon 2 - Ducia Foundry Mining Outpost\" se=\"0.7\" si=\"60006823\" sy=\"Halibai\" syi=\"30004100\"/>\r\n    <row c=\"Sasen\" ci=\"20000448\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Tuomuta III - Ducia Foundry Mining Outpost\" se=\"0.5\" si=\"60006826\" sy=\"Tuomuta\" syi=\"30003064\"/>\r\n    <row c=\"Sasen\" ci=\"20000448\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Kuomi VI - Moon 2 - Ducia Foundry Refinery\" se=\"0.6\" si=\"60006829\" sy=\"Kuomi\" syi=\"30003066\"/>\r\n    <row c=\"Sasen\" ci=\"20000448\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Lamaa IX - Moon 23 - Ducia Foundry Mineral Reserve\" se=\"0.4\" si=\"60006832\" sy=\"Lamaa\" syi=\"30003063\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Barleguet VI - Moon 1 - Ducia Foundry Refinery\" se=\"0.1\" si=\"60006835\" sy=\"Barleguet\" syi=\"30003819\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Barleguet V - Moon 5 - Ducia Foundry Refinery\" se=\"0.1\" si=\"60006838\" sy=\"Barleguet\" syi=\"30003819\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Ausmaert VII - Moon 5 - Ducia Foundry Refinery\" se=\"0.1\" si=\"60006841\" sy=\"Ausmaert\" syi=\"30003821\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Litiura VIII - Moon 8 - Ducia Foundry Mining Outpost\" se=\"0.5\" si=\"60006844\" sy=\"Litiura\" syi=\"30001400\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nonni II - Ducia Foundry Refinery\" se=\"0.5\" si=\"60006847\" sy=\"Nonni\" syi=\"30001401\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Passari V - Moon 9 - Ducia Foundry Refinery\" se=\"0.4\" si=\"60006850\" sy=\"Passari\" syi=\"30001402\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"Maila IV - Moon 1 - Ducia Foundry Mineral Reserve\" se=\"0.4\" si=\"60006853\" sy=\"Maila\" syi=\"30000162\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"Ikami XI - Moon 4 - Ducia Foundry Refinery\" se=\"0.5\" si=\"60006856\" sy=\"Ikami\" syi=\"30000159\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"Akora IX - Moon 17 - Ducia Foundry Refinery\" se=\"0.3\" si=\"60006859\" sy=\"Akora\" syi=\"30000163\"/>\r\n    <row c=\"Favo\" ci=\"20000602\" r=\"Kador\" ri=\"10000052\" s=\"Iaokit IX - Moon 7 - Ducia Foundry Mining Outpost\" se=\"0.4\" si=\"60006862\" sy=\"Iaokit\" syi=\"30004120\"/>\r\n    <row c=\"Favo\" ci=\"20000602\" r=\"Kador\" ri=\"10000052\" s=\"Menri V - Ducia Foundry Mineral Reserve\" se=\"0.4\" si=\"60006865\" sy=\"Menri\" syi=\"30004121\"/>\r\n    <row c=\"Favo\" ci=\"20000602\" r=\"Kador\" ri=\"10000052\" s=\"Iaokit VI - Moon 14 - Ducia Foundry Mining Outpost\" se=\"0.4\" si=\"60006868\" sy=\"Iaokit\" syi=\"30004120\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Slays V - Moon 1 - Ducia Foundry Mineral Reserve\" se=\"0.5\" si=\"60006871\" sy=\"Slays\" syi=\"30003798\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Iges VIII - Moon 1 - Ducia Foundry Refinery\" se=\"0.3\" si=\"60006874\" sy=\"Iges\" syi=\"30003796\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Uphallant V - Moon 18 - Ducia Foundry Mineral Reserve\" se=\"0.2\" si=\"60006877\" sy=\"Uphallant\" syi=\"30003799\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Perimeter II - Moon 1 - Ducia Foundry Mineral Reserve\" se=\"1.0\" si=\"60006880\" sy=\"Perimeter\" syi=\"30000144\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Niyabainen VIII - Moon 16 - Ducia Foundry Mining Outpost\" se=\"1.0\" si=\"60006883\" sy=\"Niyabainen\" syi=\"30000143\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Niyabainen VII - Moon 11 - Ducia Foundry Mineral Reserve\" se=\"1.0\" si=\"60006886\" sy=\"Niyabainen\" syi=\"30000143\"/>\r\n    <row c=\"Araz\" ci=\"20000603\" r=\"Kador\" ri=\"10000052\" s=\"Chanoun VIII - Moon 11 - Ducia Foundry Mineral Reserve\" se=\"0.5\" si=\"60006889\" sy=\"Chanoun\" syi=\"30004122\"/>\r\n    <row c=\"Araz\" ci=\"20000603\" r=\"Kador\" ri=\"10000052\" s=\"Munory VII - Moon 9 - Ducia Foundry Mining Outpost\" se=\"0.5\" si=\"60006892\" sy=\"Munory\" syi=\"30004129\"/>\r\n    <row c=\"Araz\" ci=\"20000603\" r=\"Kador\" ri=\"10000052\" s=\"Garisas VI - Ducia Foundry Refinery\" se=\"0.5\" si=\"60006895\" sy=\"Garisas\" syi=\"30004123\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"Aeter III - Moon 5 - Ducia Foundry Mineral Reserve\" se=\"0.3\" si=\"60006898\" sy=\"Aeter\" syi=\"30003585\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"Gererique II - Moon 1 - Ducia Foundry Mining Outpost\" se=\"0.7\" si=\"60006901\" sy=\"Gererique\" syi=\"30003586\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"Larryn V - Moon 1 - Ducia Foundry Mineral Reserve\" se=\"0.6\" si=\"60006904\" sy=\"Larryn\" syi=\"30003579\"/>\r\n    <row c=\"Maddam\" ci=\"20000514\" r=\"Domain\" ri=\"10000043\" s=\"Bagodan I - HZO Refinery Mining Outpost\" se=\"0.7\" si=\"60006907\" sy=\"Bagodan\" syi=\"30003525\"/>\r\n    <row c=\"Maddam\" ci=\"20000514\" r=\"Domain\" ri=\"10000043\" s=\"Alkabsi IV - Moon 1 - HZO Refinery Mineral Reserve\" se=\"0.7\" si=\"60006910\" sy=\"Alkabsi\" syi=\"30003521\"/>\r\n    <row c=\"Maddam\" ci=\"20000514\" r=\"Domain\" ri=\"10000043\" s=\"Bagodan VIII - Moon 4 - HZO Refinery Mineral Reserve\" se=\"0.7\" si=\"60006913\" sy=\"Bagodan\" syi=\"30003525\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Sayartchen VIII - HZO Refinery Mineral Reserve\" se=\"0.8\" si=\"60006916\" sy=\"Sayartchen\" syi=\"30003508\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Sayartchen VII - Moon 12 - HZO Refinery Mineral Reserve\" se=\"0.8\" si=\"60006919\" sy=\"Sayartchen\" syi=\"30003508\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Somouh IX - Moon 1 - HZO Refinery\" se=\"0.9\" si=\"60006922\" sy=\"Somouh\" syi=\"30003511\"/>\r\n    <row c=\"Chardu\" ci=\"20000513\" r=\"Domain\" ri=\"10000043\" s=\"Pedel IV - Moon 1 - HZO Refinery Mining Outpost\" se=\"0.7\" si=\"60006925\" sy=\"Pedel\" syi=\"30003516\"/>\r\n    <row c=\"Chardu\" ci=\"20000513\" r=\"Domain\" ri=\"10000043\" s=\"Etav X - Moon 3 - HZO Refinery\" se=\"0.8\" si=\"60006928\" sy=\"Etav\" syi=\"30003517\"/>\r\n    <row c=\"Chardu\" ci=\"20000513\" r=\"Domain\" ri=\"10000043\" s=\"Pedel VII - HZO Refinery Mining Outpost\" se=\"0.7\" si=\"60006931\" sy=\"Pedel\" syi=\"30003516\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Jesoyeh X - Moon 12 - HZO Refinery Mining Outpost\" se=\"0.7\" si=\"60006934\" sy=\"Jesoyeh\" syi=\"30003532\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Jesoyeh IX - Moon 7 - HZO Refinery Mining Outpost\" se=\"0.7\" si=\"60006937\" sy=\"Jesoyeh\" syi=\"30003532\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Afivad IX - Moon 2 - HZO Refinery\" se=\"0.5\" si=\"60006940\" sy=\"Afivad\" syi=\"30003535\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"Askonak III - Moon 2 - Inherent Implants Biotech Production\" se=\"0.7\" si=\"60006943\" sy=\"Askonak\" syi=\"30004093\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"Kador Prime VIII - Moon 3 - Inherent Implants Biotech Production\" se=\"0.6\" si=\"60006946\" sy=\"Kador Prime\" syi=\"30004095\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"Zorrabed VII - Moon 4 - Inherent Implants Biotech Research Center\" se=\"0.8\" si=\"60006949\" sy=\"Zorrabed\" syi=\"30004160\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"Zorrabed VII - Moon 26 - Inherent Implants Biotech Research Center\" se=\"0.8\" si=\"60006952\" sy=\"Zorrabed\" syi=\"30004160\"/>\r\n    <row c=\"Nakid\" ci=\"20000518\" r=\"Domain\" ri=\"10000043\" s=\"Bittanshal I - Moon 1 - Inherent Implants Biotech Production\" se=\"0.5\" si=\"60006955\" sy=\"Bittanshal\" syi=\"30003555\"/>\r\n    <row c=\"Nakid\" ci=\"20000518\" r=\"Domain\" ri=\"10000043\" s=\"Warouh VI - Moon 18 - Inherent Implants Biotech Production\" se=\"0.5\" si=\"60006958\" sy=\"Warouh\" syi=\"30003553\"/>\r\n    <row c=\"Anidaza\" ci=\"20000254\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Sagain V - Inherent Implants Biotech Production\" se=\"0.4\" si=\"60006961\" sy=\"Sagain\" syi=\"30001719\"/>\r\n    <row c=\"Anidaza\" ci=\"20000254\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Goni IV - Moon 14 - Inherent Implants Biotech Production\" se=\"0.8\" si=\"60006964\" sy=\"Goni\" syi=\"30001716\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Leva VI - Inherent Implants Biotech Production\" se=\"0.6\" si=\"60006967\" sy=\"Leva\" syi=\"30005039\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Amdonen VIII - Moon 13 - Inherent Implants Biotech Production\" se=\"0.6\" si=\"60006970\" sy=\"Amdonen\" syi=\"30005036\"/>\r\n    <row c=\"Afinoo\" ci=\"20000620\" r=\"Aridia\" ri=\"10000054\" s=\"Kamih VI - Moon 2 - Inherent Implants Biotech Production\" se=\"0.2\" si=\"60006973\" sy=\"Kamih\" syi=\"30004239\"/>\r\n    <row c=\"Afinoo\" ci=\"20000620\" r=\"Aridia\" ri=\"10000054\" s=\"Hier IV - Moon 3 - Inherent Implants Biotech Production\" se=\"0.4\" si=\"60006976\" sy=\"Hier\" syi=\"30004240\"/>\r\n    <row c=\"Kakol\" ci=\"20000597\" r=\"Kador\" ri=\"10000052\" s=\"Ghesis II - Inherent Implants Biotech Production\" se=\"0.5\" si=\"60006979\" sy=\"Ghesis\" syi=\"30004084\"/>\r\n    <row c=\"Kakol\" ci=\"20000597\" r=\"Kador\" ri=\"10000052\" s=\"Ghesis IV - Moon 4 - Inherent Implants Biotech Production\" se=\"0.5\" si=\"60006982\" sy=\"Ghesis\" syi=\"30004084\"/>\r\n    <row c=\"Monalaz\" ci=\"20000770\" r=\"Genesis\" ri=\"10000067\" s=\"Angur IV - Moon 2 - Inherent Implants Biotech Production\" se=\"0.2\" si=\"60006985\" sy=\"Angur\" syi=\"30005264\"/>\r\n    <row c=\"Monalaz\" ci=\"20000770\" r=\"Genesis\" ri=\"10000067\" s=\"Angur III - Moon 1 - Inherent Implants Biotech Production\" se=\"0.2\" si=\"60006988\" sy=\"Angur\" syi=\"30005264\"/>\r\n    <row c=\"Mofa\" ci=\"20000516\" r=\"Domain\" ri=\"10000043\" s=\"Hayumtom XII - Moon 1 - Inherent Implants Biotech Research Center\" se=\"0.5\" si=\"60006991\" sy=\"Hayumtom\" syi=\"30003542\"/>\r\n    <row c=\"Mofa\" ci=\"20000516\" r=\"Domain\" ri=\"10000043\" s=\"Faswiba IX - Moon 1 - Inherent Implants Biotech Production\" se=\"0.4\" si=\"60006994\" sy=\"Faswiba\" syi=\"30003541\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"Balas I - Moon 2 - Inherent Implants Biotech Production\" se=\"0.1\" si=\"60006997\" sy=\"Balas\" syi=\"30004261\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"Balas I - Moon 11 - Inherent Implants Biotech Production\" se=\"0.1\" si=\"60007000\" sy=\"Balas\" syi=\"30004261\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Leva IX - Moon 5 - Imperial Shipment Storage\" se=\"0.6\" si=\"60007003\" sy=\"Leva\" syi=\"30005039\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nakregde VII - Moon 1 - Imperial Shipment Storage\" se=\"0.8\" si=\"60007006\" sy=\"Nakregde\" syi=\"30005043\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nishah VI - Moon 14 - Imperial Shipment Storage\" se=\"0.6\" si=\"60007009\" sy=\"Nishah\" syi=\"30005040\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nakregde VI - Moon 1 - Imperial Shipment Storage\" se=\"0.8\" si=\"60007012\" sy=\"Nakregde\" syi=\"30005043\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Amdonen VII - Moon 7 - Imperial Shipment Storage\" se=\"0.6\" si=\"60007015\" sy=\"Amdonen\" syi=\"30005036\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Amdonen VIII - Moon 8 - Imperial Shipment Storage\" se=\"0.6\" si=\"60007018\" sy=\"Amdonen\" syi=\"30005036\"/>\r\n    <row c=\"Jayai\" ci=\"20000436\" r=\"Devoid\" ri=\"10000036\" s=\"Roushzar VII - Moon 12 - Imperial Shipment Storage\" se=\"0.4\" si=\"60007021\" sy=\"Roushzar\" syi=\"30002975\"/>\r\n    <row c=\"Jayai\" ci=\"20000436\" r=\"Devoid\" ri=\"10000036\" s=\"Arayar VIII - Moon 2 - Imperial Shipment Storage\" se=\"0.4\" si=\"60007024\" sy=\"Arayar\" syi=\"30002977\"/>\r\n    <row c=\"Jayai\" ci=\"20000436\" r=\"Devoid\" ri=\"10000036\" s=\"Halmah II - Moon 12 - Imperial Shipment Storage\" se=\"0.4\" si=\"60007027\" sy=\"Halmah\" syi=\"30002981\"/>\r\n    <row c=\"Jayai\" ci=\"20000436\" r=\"Devoid\" ri=\"10000036\" s=\"Roushzar X - Moon 4 - Imperial Shipment Storage\" se=\"0.4\" si=\"60007030\" sy=\"Roushzar\" syi=\"30002975\"/>\r\n    <row c=\"Jayai\" ci=\"20000436\" r=\"Devoid\" ri=\"10000036\" s=\"Asghed VI - Moon 5 - Imperial Shipment Storage\" se=\"0.4\" si=\"60007033\" sy=\"Asghed\" syi=\"30002978\"/>\r\n    <row c=\"Jayai\" ci=\"20000436\" r=\"Devoid\" ri=\"10000036\" s=\"Roushzar VI - Moon 1 - Imperial Shipment Storage\" se=\"0.4\" si=\"60007036\" sy=\"Roushzar\" syi=\"30002975\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Ohide VI - Moon 1 - Imperial Shipment Storage\" se=\"0.6\" si=\"60007039\" sy=\"Ohide\" syi=\"30002970\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Eredan III - Imperial Shipment Storage\" se=\"0.7\" si=\"60007042\" sy=\"Eredan\" syi=\"30002969\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Lisudeh VI - Moon 18 - Imperial Shipment Storage\" se=\"0.8\" si=\"60007045\" sy=\"Lisudeh\" syi=\"30002973\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Gheth VIII - Moon 1 - Imperial Shipment Storage\" se=\"0.6\" si=\"60007048\" sy=\"Gheth\" syi=\"30002972\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Ohide II - Imperial Shipment Storage\" se=\"0.6\" si=\"60007051\" sy=\"Ohide\" syi=\"30002970\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Gheth IX - Moon 2 - Imperial Shipment Storage\" se=\"0.6\" si=\"60007054\" sy=\"Gheth\" syi=\"30002972\"/>\r\n    <row c=\"Nazdirer\" ci=\"20000760\" r=\"Genesis\" ri=\"10000067\" s=\"Ahbazon VI - Imperial Shipment Storage\" se=\"0.4\" si=\"60007057\" sy=\"Ahbazon\" syi=\"30005196\"/>\r\n    <row c=\"Nazdirer\" ci=\"20000760\" r=\"Genesis\" ri=\"10000067\" s=\"Lor VII - Moon 7 - Imperial Shipment Storage\" se=\"0.5\" si=\"60007060\" sy=\"Lor\" syi=\"30005193\"/>\r\n    <row c=\"Nazdirer\" ci=\"20000760\" r=\"Genesis\" ri=\"10000067\" s=\"Ahbazon IX - Moon 15 - Imperial Shipment Storage\" se=\"0.4\" si=\"60007063\" sy=\"Ahbazon\" syi=\"30005196\"/>\r\n    <row c=\"Nazdirer\" ci=\"20000760\" r=\"Genesis\" ri=\"10000067\" s=\"Shera IX - Moon 4 - Imperial Shipment Storage\" se=\"0.6\" si=\"60007066\" sy=\"Shera\" syi=\"30005192\"/>\r\n    <row c=\"Nazdirer\" ci=\"20000760\" r=\"Genesis\" ri=\"10000067\" s=\"Ahbazon IV - Moon 1 - Imperial Shipment Storage\" se=\"0.4\" si=\"60007069\" sy=\"Ahbazon\" syi=\"30005196\"/>\r\n    <row c=\"Nazdirer\" ci=\"20000760\" r=\"Genesis\" ri=\"10000067\" s=\"Vecamia VII - Moon 5 - Imperial Shipment Storage\" se=\"0.4\" si=\"60007072\" sy=\"Vecamia\" syi=\"30005195\"/>\r\n    <row c=\"Emsek\" ci=\"20000246\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Chamume IV - Moon 1 - Imperial Shipment Storage\" se=\"0.3\" si=\"60007075\" sy=\"Chamume\" syi=\"30001664\"/>\r\n    <row c=\"Emsek\" ci=\"20000246\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Chamume VII - Moon 14 - Imperial Shipment Storage\" se=\"0.3\" si=\"60007078\" sy=\"Chamume\" syi=\"30001664\"/>\r\n    <row c=\"Emsek\" ci=\"20000246\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Pera II - Moon 1 - Imperial Shipment Storage\" se=\"0.5\" si=\"60007081\" sy=\"Pera\" syi=\"30001666\"/>\r\n    <row c=\"Emsek\" ci=\"20000246\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Chamume VII - Moon 2 - Imperial Shipment Storage\" se=\"0.3\" si=\"60007084\" sy=\"Chamume\" syi=\"30001664\"/>\r\n    <row c=\"Emsek\" ci=\"20000246\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hibi V - Moon 4 - Imperial Shipment Storage\" se=\"0.5\" si=\"60007087\" sy=\"Hibi\" syi=\"30001662\"/>\r\n    <row c=\"Emsek\" ci=\"20000246\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Shousran VII - Imperial Shipment Storage\" se=\"0.6\" si=\"60007090\" sy=\"Shousran\" syi=\"30001667\"/>\r\n    <row c=\"Makh\" ci=\"20000769\" r=\"Genesis\" ri=\"10000067\" s=\"Bantish VI - Moon 3 - Imperial Shipment Storage\" se=\"0.3\" si=\"60007093\" sy=\"Bantish\" syi=\"30005257\"/>\r\n    <row c=\"Makh\" ci=\"20000769\" r=\"Genesis\" ri=\"10000067\" s=\"Keri X - Imperial Shipment Storage\" se=\"0.4\" si=\"60007096\" sy=\"Keri\" syi=\"30005260\"/>\r\n    <row c=\"Makh\" ci=\"20000769\" r=\"Genesis\" ri=\"10000067\" s=\"Korridi I - Imperial Shipment Storage\" se=\"0.3\" si=\"60007099\" sy=\"Korridi\" syi=\"30005258\"/>\r\n    <row c=\"Makh\" ci=\"20000769\" r=\"Genesis\" ri=\"10000067\" s=\"Keri VII - Moon 1 - Imperial Shipment Storage\" se=\"0.4\" si=\"60007102\" sy=\"Keri\" syi=\"30005260\"/>\r\n    <row c=\"Makh\" ci=\"20000769\" r=\"Genesis\" ri=\"10000067\" s=\"Lela VII - Moon 22 - Imperial Shipment Storage\" se=\"0.3\" si=\"60007105\" sy=\"Lela\" syi=\"30005259\"/>\r\n    <row c=\"Makh\" ci=\"20000769\" r=\"Genesis\" ri=\"10000067\" s=\"Keri VIII - Moon 3 - Imperial Shipment Storage\" se=\"0.4\" si=\"60007108\" sy=\"Keri\" syi=\"30005260\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Afivad XI - Moon 2 - Imperial Shipment Storage\" se=\"0.5\" si=\"60007111\" sy=\"Afivad\" syi=\"30003535\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Hahda IX - Imperial Shipment Storage\" se=\"0.6\" si=\"60007114\" sy=\"Hahda\" syi=\"30003533\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Raravath III - Imperial Shipment Storage\" se=\"0.4\" si=\"60007117\" sy=\"Raravath\" syi=\"30003530\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Jesoyeh X - Moon 7 - Imperial Shipment Storage\" se=\"0.7\" si=\"60007120\" sy=\"Jesoyeh\" syi=\"30003532\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Namaili VII - Imperial Shipment Storage\" se=\"0.4\" si=\"60007123\" sy=\"Namaili\" syi=\"30003534\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Herila IV - Moon 5 - Imperial Shipment Storage\" se=\"0.8\" si=\"60007126\" sy=\"Herila\" syi=\"30003528\"/>\r\n    <row c=\"Tsemshatel\" ci=\"20000253\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Moutid II - Moon 7 - Imperial Shipment Storage\" se=\"0.7\" si=\"60007129\" sy=\"Moutid\" syi=\"30001715\"/>\r\n    <row c=\"Tsemshatel\" ci=\"20000253\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Ferira VIII - Moon 1 - Imperial Shipment Storage\" se=\"0.6\" si=\"60007132\" sy=\"Ferira\" syi=\"30001709\"/>\r\n    <row c=\"Tsemshatel\" ci=\"20000253\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Yasud VIII - Moon 1 - Imperial Shipment Storage\" se=\"0.6\" si=\"60007135\" sy=\"Yasud\" syi=\"30001713\"/>\r\n    <row c=\"Tsemshatel\" ci=\"20000253\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Azerakish XII - Moon 3 - Imperial Shipment Storage\" se=\"0.6\" si=\"60007138\" sy=\"Azerakish\" syi=\"30001711\"/>\r\n    <row c=\"Tsemshatel\" ci=\"20000253\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Yeder VII - Moon 6 - Imperial Shipment Storage\" se=\"0.6\" si=\"60007141\" sy=\"Yeder\" syi=\"30001710\"/>\r\n    <row c=\"Tsemshatel\" ci=\"20000253\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Ferira VI - Moon 14 - Imperial Shipment Storage\" se=\"0.6\" si=\"60007144\" sy=\"Ferira\" syi=\"30001709\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Sukirah VII - Moon 9 - Imperial Shipment Storage\" se=\"0.6\" si=\"60007147\" sy=\"Sukirah\" syi=\"30002200\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Sukirah IX - Moon 2 - Imperial Shipment Storage\" se=\"0.6\" si=\"60007150\" sy=\"Sukirah\" syi=\"30002200\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Bashakru VI - Moon 1 - Imperial Shipment Storage\" se=\"0.6\" si=\"60007153\" sy=\"Bashakru\" syi=\"30002199\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Mikhir II - Imperial Shipment Storage\" se=\"0.7\" si=\"60007156\" sy=\"Mikhir\" syi=\"30002198\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Sukirah VII - Moon 7 - Imperial Shipment Storage\" se=\"0.6\" si=\"60007159\" sy=\"Sukirah\" syi=\"30002200\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Shuria XI - Imperial Shipment Storage\" se=\"0.5\" si=\"60007162\" sy=\"Shuria\" syi=\"30002201\"/>\r\n    <row c=\"Kehina\" ci=\"20000331\" r=\"Domain\" ri=\"10000043\" s=\"Nadohman VIII - Moon 14 - Imperial Shipment Storage\" se=\"0.7\" si=\"60007165\" sy=\"Nadohman\" syi=\"30002258\"/>\r\n    <row c=\"Kehina\" ci=\"20000331\" r=\"Domain\" ri=\"10000043\" s=\"Luromooh V - Moon 1 - Imperial Shipment Storage\" se=\"0.6\" si=\"60007168\" sy=\"Luromooh\" syi=\"30002261\"/>\r\n    <row c=\"Kehina\" ci=\"20000331\" r=\"Domain\" ri=\"10000043\" s=\"Sahdil II - Moon 13 - Imperial Shipment Storage\" se=\"0.7\" si=\"60007171\" sy=\"Sahdil\" syi=\"30002259\"/>\r\n    <row c=\"Kehina\" ci=\"20000331\" r=\"Domain\" ri=\"10000043\" s=\"Nadohman IV - Moon 3 - Imperial Shipment Storage\" se=\"0.7\" si=\"60007174\" sy=\"Nadohman\" syi=\"30002258\"/>\r\n    <row c=\"Kehina\" ci=\"20000331\" r=\"Domain\" ri=\"10000043\" s=\"Nalu VII - Moon 11 - Imperial Shipment Storage\" se=\"0.6\" si=\"60007177\" sy=\"Nalu\" syi=\"30002262\"/>\r\n    <row c=\"Kehina\" ci=\"20000331\" r=\"Domain\" ri=\"10000043\" s=\"Nalu VII - Moon 4 - Imperial Shipment Storage\" se=\"0.6\" si=\"60007180\" sy=\"Nalu\" syi=\"30002262\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nakregde II - Amarr Certified News Development Studio\" se=\"0.8\" si=\"60007183\" sy=\"Nakregde\" syi=\"30005043\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Amdonen VIII - Moon 8 - Amarr Certified News Development Studio\" se=\"0.6\" si=\"60007186\" sy=\"Amdonen\" syi=\"30005036\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"Pashanai III - Moon 9 - Amarr Certified News Development Studio\" se=\"0.5\" si=\"60007189\" sy=\"Pashanai\" syi=\"30005231\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"Malma VII - Amarr Certified News Development Studio\" se=\"0.5\" si=\"60007192\" sy=\"Malma\" syi=\"30005235\"/>\r\n    <row c=\"Ekrin\" ci=\"20000763\" r=\"Genesis\" ri=\"10000067\" s=\"Sheroo X - Moon 11 - Amarr Certified News Publisher\" se=\"0.6\" si=\"60007195\" sy=\"Sheroo\" syi=\"30005217\"/>\r\n    <row c=\"Ekrin\" ci=\"20000763\" r=\"Genesis\" ri=\"10000067\" s=\"Ashokon XIII - Moon 16 - Amarr Certified News Development Studio\" se=\"0.7\" si=\"60007198\" sy=\"Ashokon\" syi=\"30005214\"/>\r\n    <row c=\"Enka\" ci=\"20000440\" r=\"Devoid\" ri=\"10000036\" s=\"Ulerah II - Moon 12 - Amarr Certified News Development Studio\" se=\"0.7\" si=\"60007201\" sy=\"Ulerah\" syi=\"30003004\"/>\r\n    <row c=\"Enka\" ci=\"20000440\" r=\"Devoid\" ri=\"10000036\" s=\"Halenan IX - Moon 1 - Amarr Certified News Development Studio\" se=\"0.6\" si=\"60007204\" sy=\"Halenan\" syi=\"30003003\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"Eba VIII - Moon 9 - Amarr Certified News Publisher\" se=\"0.9\" si=\"60007207\" sy=\"Eba\" syi=\"30002281\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"Artoun VII - Moon 2 - Amarr Certified News Development Studio\" se=\"0.8\" si=\"60007210\" sy=\"Artoun\" syi=\"30002278\"/>\r\n    <row c=\"Peges\" ci=\"20000257\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Judra VII - Moon 7 - Amarr Certified News Publisher\" se=\"0.8\" si=\"60007213\" sy=\"Judra\" syi=\"30001738\"/>\r\n    <row c=\"Peges\" ci=\"20000257\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Uhodoh VI - Moon 1 - Amarr Certified News Development Studio\" se=\"0.8\" si=\"60007216\" sy=\"Uhodoh\" syi=\"30001735\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"Hoseen VIII - Amarr Certified News Development Studio\" se=\"0.1\" si=\"60007219\" sy=\"Hoseen\" syi=\"30004264\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"Fihrneh VI - Moon 10 - Amarr Certified News Development Studio\" se=\"0.1\" si=\"60007222\" sy=\"Fihrneh\" syi=\"30004254\"/>\r\n    <row c=\"Mazake\" ci=\"20000325\" r=\"Domain\" ri=\"10000043\" s=\"Pelkia III - Moon 2 - Amarr Certified News Publisher\" se=\"0.5\" si=\"60007225\" sy=\"Pelkia\" syi=\"30002211\"/>\r\n    <row c=\"Mazake\" ci=\"20000325\" r=\"Domain\" ri=\"10000043\" s=\"Sakhti IX - Moon 7 - Amarr Certified News Development Studio\" se=\"0.5\" si=\"60007228\" sy=\"Sakhti\" syi=\"30002215\"/>\r\n    <row c=\"Araz\" ci=\"20000603\" r=\"Kador\" ri=\"10000052\" s=\"Koona IV - Amarr Certified News Development Studio\" se=\"0.5\" si=\"60007231\" sy=\"Koona\" syi=\"30004128\"/>\r\n    <row c=\"Araz\" ci=\"20000603\" r=\"Kador\" ri=\"10000052\" s=\"Aphi VIII - Moon 5 - Amarr Certified News Development Studio\" se=\"0.5\" si=\"60007234\" sy=\"Aphi\" syi=\"30004124\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Ilas IX - Moon 4 - Amarr Certified News Development Studio\" se=\"0.8\" si=\"60007237\" sy=\"Ilas\" syi=\"30001731\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Alra VIII - Moon 22 - Amarr Certified News Development Studio\" se=\"0.8\" si=\"60007240\" sy=\"Alra\" syi=\"30001730\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Amdonen VIII - Moon 14 - Joint Harvesting Plantation\" se=\"0.6\" si=\"60007243\" sy=\"Amdonen\" syi=\"30005036\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Kor-Azor Prime II - Moon 1 - Joint Harvesting Plantation\" se=\"0.9\" si=\"60007246\" sy=\"Kor-Azor Prime\" syi=\"30005038\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nakregde IV - Joint Harvesting Food Packaging\" se=\"0.8\" si=\"60007249\" sy=\"Nakregde\" syi=\"30005043\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Leva IX - Moon 5 - Joint Harvesting Plantation\" se=\"0.6\" si=\"60007252\" sy=\"Leva\" syi=\"30005039\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nishah V - Moon 12 - Joint Harvesting Mining Outpost\" se=\"0.6\" si=\"60007255\" sy=\"Nishah\" syi=\"30005040\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nishah IV - Moon 9 - Joint Harvesting Mining Outpost\" se=\"0.6\" si=\"60007258\" sy=\"Nishah\" syi=\"30005040\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Gulfonodi VIII - Moon 5 - Joint Harvesting Warehouse\" se=\"0.5\" si=\"60007261\" sy=\"Gulfonodi\" syi=\"30002384\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Gulfonodi VIII - Moon 15 - Joint Harvesting Food Packaging\" se=\"0.5\" si=\"60007264\" sy=\"Gulfonodi\" syi=\"30002384\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Gelfiven VI - Moon 1 - Joint Harvesting Food Packaging\" se=\"0.6\" si=\"60007267\" sy=\"Gelfiven\" syi=\"30002386\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Gelfiven V - Joint Harvesting Food Packaging\" se=\"0.6\" si=\"60007270\" sy=\"Gelfiven\" syi=\"30002386\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Oddelulf I - Joint Harvesting Refinery\" se=\"0.4\" si=\"60007273\" sy=\"Oddelulf\" syi=\"30002388\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Gulfonodi X - Moon 5 - Joint Harvesting Refinery\" se=\"0.5\" si=\"60007276\" sy=\"Gulfonodi\" syi=\"30002384\"/>\r\n    <row c=\"Ani\" ci=\"20000305\" r=\"Metropolis\" ri=\"10000042\" s=\"Barkrik II - Moon 10 - Joint Harvesting Food Packaging\" se=\"0.6\" si=\"60007279\" sy=\"Barkrik\" syi=\"30002071\"/>\r\n    <row c=\"Ani\" ci=\"20000305\" r=\"Metropolis\" ri=\"10000042\" s=\"Hjoramold III - Joint Harvesting Plantation\" se=\"0.5\" si=\"60007282\" sy=\"Hjoramold\" syi=\"30002075\"/>\r\n    <row c=\"Ani\" ci=\"20000305\" r=\"Metropolis\" ri=\"10000042\" s=\"Barkrik IV - Moon 4 - Joint Harvesting Food Packaging\" se=\"0.6\" si=\"60007285\" sy=\"Barkrik\" syi=\"30002071\"/>\r\n    <row c=\"Ani\" ci=\"20000305\" r=\"Metropolis\" ri=\"10000042\" s=\"Hjoramold XII - Moon 1 - Joint Harvesting Plantation\" se=\"0.5\" si=\"60007288\" sy=\"Hjoramold\" syi=\"30002075\"/>\r\n    <row c=\"Ani\" ci=\"20000305\" r=\"Metropolis\" ri=\"10000042\" s=\"Hjoramold IX - Moon 14 - Joint Harvesting Refinery\" se=\"0.5\" si=\"60007291\" sy=\"Hjoramold\" syi=\"30002075\"/>\r\n    <row c=\"Ani\" ci=\"20000305\" r=\"Metropolis\" ri=\"10000042\" s=\"Traun X - Moon 14 - Joint Harvesting Mining Outpost\" se=\"0.6\" si=\"60007294\" sy=\"Traun\" syi=\"30002069\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Nehkiah IV - Moon 14 - Joint Harvesting Plantation\" se=\"0.6\" si=\"60007297\" sy=\"Nehkiah\" syi=\"30001695\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Ahkour III - Moon 1 - Joint Harvesting Plantation\" se=\"0.7\" si=\"60007300\" sy=\"Ahkour\" syi=\"30001697\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Siyi III - Moon 12 - Joint Harvesting Plantation\" se=\"0.5\" si=\"60007303\" sy=\"Siyi\" syi=\"30001699\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Nehkiah IV - Moon 3 - Joint Harvesting Plantation\" se=\"0.6\" si=\"60007306\" sy=\"Nehkiah\" syi=\"30001695\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Gaknem V - Joint Harvesting Mineral Reserve\" se=\"0.6\" si=\"60007309\" sy=\"Gaknem\" syi=\"30001698\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Abai IV - Moon 11 - Joint Harvesting Mineral Reserve\" se=\"0.7\" si=\"60007312\" sy=\"Abai\" syi=\"30001694\"/>\r\n    <row c=\"Mimishia\" ci=\"20000248\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Mimen XI - Joint Harvesting Food Packaging\" se=\"0.5\" si=\"60007315\" sy=\"Mimen\" syi=\"30001676\"/>\r\n    <row c=\"Mimishia\" ci=\"20000248\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Mimen IX - Joint Harvesting Plantation\" se=\"0.5\" si=\"60007318\" sy=\"Mimen\" syi=\"30001676\"/>\r\n    <row c=\"Mimishia\" ci=\"20000248\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Atoosh VIII - Joint Harvesting Warehouse\" se=\"0.6\" si=\"60007321\" sy=\"Atoosh\" syi=\"30001678\"/>\r\n    <row c=\"Mimishia\" ci=\"20000248\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Unkah VII - Moon 2 - Joint Harvesting Food Packaging\" se=\"0.6\" si=\"60007324\" sy=\"Unkah\" syi=\"30001679\"/>\r\n    <row c=\"Mimishia\" ci=\"20000248\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Unkah IX - Joint Harvesting Mineral Reserve\" se=\"0.6\" si=\"60007327\" sy=\"Unkah\" syi=\"30001679\"/>\r\n    <row c=\"Mimishia\" ci=\"20000248\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Atoosh VI - Moon 5 - Joint Harvesting Refinery\" se=\"0.6\" si=\"60007330\" sy=\"Atoosh\" syi=\"30001678\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Amamake VI - Moon 8 - Joint Harvesting Food Packaging\" se=\"0.4\" si=\"60007333\" sy=\"Amamake\" syi=\"30002537\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Siseide VII - Moon 17 - Joint Harvesting Food Packaging\" se=\"0.3\" si=\"60007336\" sy=\"Siseide\" syi=\"30002539\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Amamake II - Moon 1 - Joint Harvesting Food Packaging\" se=\"0.4\" si=\"60007339\" sy=\"Amamake\" syi=\"30002537\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Amamake VI - Moon 13 - Joint Harvesting Warehouse\" se=\"0.4\" si=\"60007342\" sy=\"Amamake\" syi=\"30002537\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Amamake VI - Moon 6 - Joint Harvesting Mineral Reserve\" se=\"0.4\" si=\"60007345\" sy=\"Amamake\" syi=\"30002537\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Auga V - Moon 10 - Joint Harvesting Refinery\" se=\"0.4\" si=\"60007348\" sy=\"Auga\" syi=\"30002542\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Liparer V - Moon 3 - Joint Harvesting Plantation\" se=\"0.4\" si=\"60007351\" sy=\"Liparer\" syi=\"30005087\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Miroona IV - Moon 19 - Joint Harvesting Plantation\" se=\"0.4\" si=\"60007354\" sy=\"Miroona\" syi=\"30005084\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Arza IV - Moon 3 - Joint Harvesting Plantation\" se=\"0.3\" si=\"60007357\" sy=\"Arza\" syi=\"30005086\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Liparer VIII - Moon 4 - Joint Harvesting Plantation\" se=\"0.4\" si=\"60007360\" sy=\"Liparer\" syi=\"30005087\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Liparer I - Joint Harvesting Mining Outpost\" se=\"0.4\" si=\"60007363\" sy=\"Liparer\" syi=\"30005087\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Arza IV - Joint Harvesting Mining Outpost\" se=\"0.3\" si=\"60007366\" sy=\"Arza\" syi=\"30005086\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Litiura IX - Joint Harvesting Plantation\" se=\"0.5\" si=\"60007369\" sy=\"Litiura\" syi=\"30001400\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Elonaya VI - Joint Harvesting Plantation\" se=\"0.7\" si=\"60007372\" sy=\"Elonaya\" syi=\"30001399\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Elonaya XI - Joint Harvesting Plantation\" se=\"0.7\" si=\"60007375\" sy=\"Elonaya\" syi=\"30001399\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Passari VIII - Joint Harvesting Food Packaging\" se=\"0.4\" si=\"60007378\" sy=\"Passari\" syi=\"30001402\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nonni VI - Moon 1 - Joint Harvesting Refinery\" se=\"0.5\" si=\"60007381\" sy=\"Nonni\" syi=\"30001401\"/>\r\n    <row c=\"Minnen\" ci=\"20000205\" r=\"Lonetrek\" ri=\"10000016\" s=\"Aunenen V - Moon 14 - Joint Harvesting Mineral Reserve\" se=\"0.4\" si=\"60007384\" sy=\"Aunenen\" syi=\"30001398\"/>\r\n    <row c=\"Nakid\" ci=\"20000518\" r=\"Domain\" ri=\"10000043\" s=\"Warouh V - Moon 9 - Joint Harvesting Food Packaging\" se=\"0.5\" si=\"60007387\" sy=\"Warouh\" syi=\"30003553\"/>\r\n    <row c=\"Nakid\" ci=\"20000518\" r=\"Domain\" ri=\"10000043\" s=\"Madimal VI - Moon 18 - Joint Harvesting Food Packaging\" se=\"0.7\" si=\"60007390\" sy=\"Madimal\" syi=\"30003558\"/>\r\n    <row c=\"Nakid\" ci=\"20000518\" r=\"Domain\" ri=\"10000043\" s=\"Sieh II - Moon 1 - Joint Harvesting Plantation\" se=\"0.3\" si=\"60007393\" sy=\"Sieh\" syi=\"30003557\"/>\r\n    <row c=\"Nakid\" ci=\"20000518\" r=\"Domain\" ri=\"10000043\" s=\"Jambu V - Moon 6 - Joint Harvesting Food Packaging\" se=\"0.5\" si=\"60007396\" sy=\"Jambu\" syi=\"30003554\"/>\r\n    <row c=\"Nakid\" ci=\"20000518\" r=\"Domain\" ri=\"10000043\" s=\"Sieh III - Moon 16 - Joint Harvesting Mining Outpost\" se=\"0.3\" si=\"60007399\" sy=\"Sieh\" syi=\"30003557\"/>\r\n    <row c=\"Nakid\" ci=\"20000518\" r=\"Domain\" ri=\"10000043\" s=\"Warouh VI - Moon 5 - Joint Harvesting Mineral Reserve\" se=\"0.5\" si=\"60007402\" sy=\"Warouh\" syi=\"30003553\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"Reset III - Moon 1 - Joint Harvesting Food Packaging\" se=\"0.7\" si=\"60007405\" sy=\"Reset\" syi=\"30003391\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"Reset II - Joint Harvesting Plantation\" se=\"0.7\" si=\"60007408\" sy=\"Reset\" syi=\"30003391\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"Altrinur XII - Moon 6 - Joint Harvesting Food Packaging\" se=\"0.8\" si=\"60007411\" sy=\"Altrinur\" syi=\"30003389\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"Vilur VII - Moon 4 - Joint Harvesting Food Packaging\" se=\"0.8\" si=\"60007414\" sy=\"Vilur\" syi=\"30003390\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"Jondik VI - Joint Harvesting Mineral Reserve\" se=\"0.9\" si=\"60007417\" sy=\"Jondik\" syi=\"30003387\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"Reset VI - Moon 8 - Joint Harvesting Mining Outpost\" se=\"0.7\" si=\"60007420\" sy=\"Reset\" syi=\"30003391\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Asesamy II - Moon 1 - Joint Harvesting Warehouse\" se=\"0.6\" si=\"60007423\" sy=\"Asesamy\" syi=\"30001689\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Perdan VIII - Moon 1 - Joint Harvesting Plantation\" se=\"0.9\" si=\"60007426\" sy=\"Perdan\" syi=\"30001693\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Asesamy I - Moon 1 - Joint Harvesting Plantation\" se=\"0.6\" si=\"60007429\" sy=\"Asesamy\" syi=\"30001689\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Perdan VII - Moon 5 - Joint Harvesting Plantation\" se=\"0.9\" si=\"60007432\" sy=\"Perdan\" syi=\"30001693\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Perdan VI - Moon 8 - Joint Harvesting Mining Outpost\" se=\"0.9\" si=\"60007435\" sy=\"Perdan\" syi=\"30001693\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Perdan VI - Moon 12 - Joint Harvesting Mining Outpost\" se=\"0.9\" si=\"60007438\" sy=\"Perdan\" syi=\"30001693\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Kaaputenen VII - Moon 4 - Joint Harvesting Plantation\" se=\"0.8\" si=\"60007441\" sy=\"Kaaputenen\" syi=\"30002789\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Kaaputenen V - Moon 1 - Joint Harvesting Plantation\" se=\"0.8\" si=\"60007444\" sy=\"Kaaputenen\" syi=\"30002789\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Inari IX - Moon 11 - Joint Harvesting Plantation\" se=\"0.5\" si=\"60007447\" sy=\"Inari\" syi=\"30002793\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Inari I - Moon 1 - Joint Harvesting Plantation\" se=\"0.5\" si=\"60007450\" sy=\"Inari\" syi=\"30002793\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Kaaputenen III - Moon 10 - Joint Harvesting Mining Outpost\" se=\"0.8\" si=\"60007453\" sy=\"Kaaputenen\" syi=\"30002789\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Inari VII - Moon 23 - Joint Harvesting Mining Outpost\" se=\"0.5\" si=\"60007456\" sy=\"Inari\" syi=\"30002793\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Aldilur V - Moon 15 - Joint Harvesting Plantation\" se=\"0.9\" si=\"60007459\" sy=\"Aldilur\" syi=\"30003379\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Nedegulf VIII - Moon 13 - Joint Harvesting Plantation\" se=\"0.8\" si=\"60007462\" sy=\"Nedegulf\" syi=\"30003378\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Stirht VII - Moon 5 - Joint Harvesting Plantation\" se=\"0.9\" si=\"60007465\" sy=\"Stirht\" syi=\"30003376\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Nedegulf V - Joint Harvesting Plantation\" se=\"0.8\" si=\"60007468\" sy=\"Nedegulf\" syi=\"30003378\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Stirht VII - Moon 13 - Joint Harvesting Mining Outpost\" se=\"0.9\" si=\"60007471\" sy=\"Stirht\" syi=\"30003376\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Nedegulf VIII - Moon 10 - Joint Harvesting Mining Outpost\" se=\"0.8\" si=\"60007474\" sy=\"Nedegulf\" syi=\"30003378\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Trytedald V - Moon 2 - Joint Harvesting Plantation\" se=\"0.9\" si=\"60007477\" sy=\"Trytedald\" syi=\"30002508\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Trytedald VIII - Moon 20 - Joint Harvesting Plantation\" se=\"0.9\" si=\"60007480\" sy=\"Trytedald\" syi=\"30002508\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Trytedald VIII - Moon 23 - Joint Harvesting Plantation\" se=\"0.9\" si=\"60007483\" sy=\"Trytedald\" syi=\"30002508\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Trytedald III - Moon 1 - Joint Harvesting Plantation\" se=\"0.9\" si=\"60007486\" sy=\"Trytedald\" syi=\"30002508\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Trytedald VII - Moon 16 - Joint Harvesting Mining Outpost\" se=\"0.9\" si=\"60007489\" sy=\"Trytedald\" syi=\"30002508\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Trytedald VII - Moon 22 - Joint Harvesting Mining Outpost\" se=\"0.9\" si=\"60007492\" sy=\"Trytedald\" syi=\"30002508\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Obe VI - Moon 1 - Joint Harvesting Plantation\" se=\"0.3\" si=\"60007495\" sy=\"Obe\" syi=\"30000205\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Obe V - Joint Harvesting Plantation\" se=\"0.3\" si=\"60007498\" sy=\"Obe\" syi=\"30000205\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Eruka IV - Moon 6 - Joint Harvesting Food Packaging\" se=\"0.4\" si=\"60007501\" sy=\"Eruka\" syi=\"30000203\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Mastakomon VII - Joint Harvesting Food Packaging\" se=\"0.5\" si=\"60007504\" sy=\"Mastakomon\" syi=\"30000202\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Uchoshi X - Moon 1 - Joint Harvesting Mineral Reserve\" se=\"0.5\" si=\"60007507\" sy=\"Uchoshi\" syi=\"30000201\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Ohkunen VI - Joint Harvesting Mining Outpost\" se=\"0.4\" si=\"60007510\" sy=\"Ohkunen\" syi=\"30000204\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Shesha VII - Nurtura Plantation\" se=\"0.9\" si=\"60007513\" sy=\"Shesha\" syi=\"30001673\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hilaban II - Moon 12 - Nurtura Warehouse\" se=\"0.9\" si=\"60007516\" sy=\"Hilaban\" syi=\"30001674\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Baviasi III - Moon 1 - Nurtura Food Packaging\" se=\"0.8\" si=\"60007519\" sy=\"Baviasi\" syi=\"30001670\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hilaban I - Nurtura Warehouse\" se=\"0.9\" si=\"60007522\" sy=\"Hilaban\" syi=\"30001674\"/>\r\n    <row c=\"Nakid\" ci=\"20000518\" r=\"Domain\" ri=\"10000043\" s=\"Bittanshal VIII - Moon 18 - Nurtura Food Packaging\" se=\"0.5\" si=\"60007525\" sy=\"Bittanshal\" syi=\"30003555\"/>\r\n    <row c=\"Nakid\" ci=\"20000518\" r=\"Domain\" ri=\"10000043\" s=\"Sieh III - Moon 13 - Nurtura Plantation\" se=\"0.3\" si=\"60007528\" sy=\"Sieh\" syi=\"30003557\"/>\r\n    <row c=\"Nakid\" ci=\"20000518\" r=\"Domain\" ri=\"10000043\" s=\"Bittanshal VIII - Moon 9 - Nurtura Plantation\" se=\"0.5\" si=\"60007531\" sy=\"Bittanshal\" syi=\"30003555\"/>\r\n    <row c=\"Nakid\" ci=\"20000518\" r=\"Domain\" ri=\"10000043\" s=\"Sieh II - Moon 9 - Nurtura Plantation\" se=\"0.3\" si=\"60007534\" sy=\"Sieh\" syi=\"30003557\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Vorsk VIII - Moon 3 - Nurtura Plantation\" se=\"0.6\" si=\"60007537\" sy=\"Vorsk\" syi=\"30003399\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Vorsk IX - Moon 5 - Nurtura Plantation\" se=\"0.6\" si=\"60007540\" sy=\"Vorsk\" syi=\"30003399\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Vorsk IX - Moon 9 - Nurtura Plantation\" se=\"0.6\" si=\"60007543\" sy=\"Vorsk\" syi=\"30003399\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Eiluvodi VI - Moon 10 - Nurtura Food Packaging\" se=\"0.8\" si=\"60007546\" sy=\"Eiluvodi\" syi=\"30003393\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Korama II - Moon 8 - Nurtura Food Packaging\" se=\"0.8\" si=\"60007549\" sy=\"Korama\" syi=\"30001394\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isseras VII - Nurtura Warehouse\" se=\"0.6\" si=\"60007552\" sy=\"Isseras\" syi=\"30001397\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Malkalen I - Nurtura Plantation\" se=\"0.9\" si=\"60007555\" sy=\"Malkalen\" syi=\"30001393\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isseras IV - Moon 1 - Nurtura Plantation\" se=\"0.6\" si=\"60007558\" sy=\"Isseras\" syi=\"30001397\"/>\r\n    <row c=\"Oraron\" ci=\"20000012\" r=\"Derelik\" ri=\"10000001\" s=\"Ejahi IV - Nurtura Warehouse\" se=\"0.7\" si=\"60007561\" sy=\"Ejahi\" syi=\"30000083\"/>\r\n    <row c=\"Oraron\" ci=\"20000012\" r=\"Derelik\" ri=\"10000001\" s=\"Akeva IV - Moon 8 - Nurtura Plantation\" se=\"0.7\" si=\"60007564\" sy=\"Akeva\" syi=\"30000088\"/>\r\n    <row c=\"Oraron\" ci=\"20000012\" r=\"Derelik\" ri=\"10000001\" s=\"Ejahi VI - Nurtura Warehouse\" se=\"0.7\" si=\"60007567\" sy=\"Ejahi\" syi=\"30000083\"/>\r\n    <row c=\"Oraron\" ci=\"20000012\" r=\"Derelik\" ri=\"10000001\" s=\"Akeva III - Moon 10 - Nurtura Plantation\" se=\"0.7\" si=\"60007570\" sy=\"Akeva\" syi=\"30000088\"/>\r\n    <row c=\"Hevaka\" ci=\"20000005\" r=\"Derelik\" ri=\"10000001\" s=\"Mohas I - Nurtura Plantation\" se=\"0.7\" si=\"60007573\" sy=\"Mohas\" syi=\"30000031\"/>\r\n    <row c=\"Hevaka\" ci=\"20000005\" r=\"Derelik\" ri=\"10000001\" s=\"Alkez VI - Moon 1 - Nurtura Plantation\" se=\"0.8\" si=\"60007576\" sy=\"Alkez\" syi=\"30000034\"/>\r\n    <row c=\"Hevaka\" ci=\"20000005\" r=\"Derelik\" ri=\"10000001\" s=\"Uplingur IV (Ndoria) - Moon 16 - Nurtura Plantation\" se=\"0.4\" si=\"60007579\" sy=\"Uplingur\" syi=\"30000037\"/>\r\n    <row c=\"Hevaka\" ci=\"20000005\" r=\"Derelik\" ri=\"10000001\" s=\"Uplingur III - Moon 8 - Nurtura Plantation\" se=\"0.4\" si=\"60007582\" sy=\"Uplingur\" syi=\"30000037\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Otsela VI - Moon 10 - Nurtura Plantation\" se=\"0.4\" si=\"60007585\" sy=\"Otsela\" syi=\"30000194\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Hentogaira II - Moon 10 - Nurtura Food Packaging\" se=\"0.6\" si=\"60007588\" sy=\"Hentogaira\" syi=\"30000188\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Hentogaira I - Moon 7 - Nurtura Warehouse\" se=\"0.6\" si=\"60007591\" sy=\"Hentogaira\" syi=\"30000188\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Vasala IV - Nurtura Food Packaging\" se=\"0.5\" si=\"60007594\" sy=\"Vasala\" syi=\"30000190\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isanamo VII - Moon 1 - Nurtura Warehouse\" se=\"0.6\" si=\"60007597\" sy=\"Isanamo\" syi=\"30001389\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Pakkonen V - Moon 6 - Nurtura Plantation\" se=\"0.4\" si=\"60007600\" sy=\"Pakkonen\" syi=\"30001390\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Pakkonen I - Moon 1 - Nurtura Plantation\" se=\"0.4\" si=\"60007603\" sy=\"Pakkonen\" syi=\"30001390\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Saatuban VII - Moon 2 - Nurtura Warehouse\" se=\"0.5\" si=\"60007606\" sy=\"Saatuban\" syi=\"30001386\"/>\r\n    <row c=\"Somi\" ci=\"20000244\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Matyas V - Moon 19 - Nurtura Food Packaging\" se=\"0.6\" si=\"60007609\" sy=\"Matyas\" syi=\"30001654\"/>\r\n    <row c=\"Somi\" ci=\"20000244\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Pimsu VIII - Moon 5 - Nurtura Food Packaging\" se=\"0.7\" si=\"60007612\" sy=\"Pimsu\" syi=\"30001652\"/>\r\n    <row c=\"Somi\" ci=\"20000244\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Imeshasa I - Nurtura Food Packaging\" se=\"0.6\" si=\"60007615\" sy=\"Imeshasa\" syi=\"30001655\"/>\r\n    <row c=\"Somi\" ci=\"20000244\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Nafomeh VII - Moon 7 - Nurtura Warehouse\" se=\"0.7\" si=\"60007618\" sy=\"Nafomeh\" syi=\"30001651\"/>\r\n    <row c=\"Rollera\" ci=\"20000505\" r=\"Metropolis\" ri=\"10000042\" s=\"Eldjaerin IV - Nurtura Food Packaging\" se=\"0.6\" si=\"60007621\" sy=\"Eldjaerin\" syi=\"30003462\"/>\r\n    <row c=\"Rollera\" ci=\"20000505\" r=\"Metropolis\" ri=\"10000042\" s=\"Eurgrana I - Nurtura Plantation\" se=\"0.4\" si=\"60007624\" sy=\"Eurgrana\" syi=\"30003466\"/>\r\n    <row c=\"Rollera\" ci=\"20000505\" r=\"Metropolis\" ri=\"10000042\" s=\"Tabbetzur VII - Moon 1 - Nurtura Plantation\" se=\"0.3\" si=\"60007627\" sy=\"Tabbetzur\" syi=\"30003465\"/>\r\n    <row c=\"Rollera\" ci=\"20000505\" r=\"Metropolis\" ri=\"10000042\" s=\"Aldik IV - Moon 1 - Nurtura Warehouse\" se=\"0.7\" si=\"60007630\" sy=\"Aldik\" syi=\"30003464\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Siyi IV - Moon 9 - Nurtura Plantation\" se=\"0.5\" si=\"60007633\" sy=\"Siyi\" syi=\"30001699\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Nehkiah II - Moon 2 - Nurtura Food Packaging\" se=\"0.6\" si=\"60007636\" sy=\"Nehkiah\" syi=\"30001695\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Ahkour VII - Moon 8 - Nurtura Warehouse\" se=\"0.7\" si=\"60007639\" sy=\"Ahkour\" syi=\"30001697\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Siyi I - Nurtura Plantation\" se=\"0.5\" si=\"60007642\" sy=\"Siyi\" syi=\"30001699\"/>\r\n    <row c=\"Bedaleya\" ci=\"20000010\" r=\"Derelik\" ri=\"10000001\" s=\"Jangar VIII - Moon 2 - Nurtura Plantation\" se=\"0.5\" si=\"60007645\" sy=\"Jangar\" syi=\"30000071\"/>\r\n    <row c=\"Bedaleya\" ci=\"20000010\" r=\"Derelik\" ri=\"10000001\" s=\"Hasateem VII - Moon 3 - Nurtura Food Packaging\" se=\"0.4\" si=\"60007648\" sy=\"Hasateem\" syi=\"30000074\"/>\r\n    <row c=\"Bedaleya\" ci=\"20000010\" r=\"Derelik\" ri=\"10000001\" s=\"Jangar VII - Moon 1 - Nurtura Plantation\" se=\"0.5\" si=\"60007651\" sy=\"Jangar\" syi=\"30000071\"/>\r\n    <row c=\"Bedaleya\" ci=\"20000010\" r=\"Derelik\" ri=\"10000001\" s=\"Jangar IV - Nurtura Plantation\" se=\"0.5\" si=\"60007654\" sy=\"Jangar\" syi=\"30000071\"/>\r\n    <row c=\"Aideron\" ci=\"20000780\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Tierijev V - Moon 8 - Nurtura Warehouse\" se=\"0.8\" si=\"60007657\" sy=\"Tierijev\" syi=\"30005334\"/>\r\n    <row c=\"Aideron\" ci=\"20000780\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Stou IV - Moon 1 - Nurtura Plantation\" se=\"0.5\" si=\"60007660\" sy=\"Stou\" syi=\"30005333\"/>\r\n    <row c=\"Aideron\" ci=\"20000780\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Stou VII - Moon 1 - Nurtura Food Packaging\" se=\"0.5\" si=\"60007663\" sy=\"Stou\" syi=\"30005333\"/>\r\n    <row c=\"Aideron\" ci=\"20000780\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Arraron VII - Moon 7 - Nurtura Food Packaging\" se=\"0.5\" si=\"60007666\" sy=\"Arraron\" syi=\"30005330\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Hageken XI - Moon 2 - Nurtura Warehouse\" se=\"0.6\" si=\"60007669\" sy=\"Hageken\" syi=\"30001367\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Uosusuokko VII - Moon 8 - Nurtura Food Packaging\" se=\"0.7\" si=\"60007672\" sy=\"Uosusuokko\" syi=\"30001366\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isikemi VI - Moon 3 - Nurtura Food Packaging\" se=\"0.8\" si=\"60007675\" sy=\"Isikemi\" syi=\"30001365\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Hageken X - Moon 15 - Nurtura Food Packaging\" se=\"0.6\" si=\"60007678\" sy=\"Hageken\" syi=\"30001367\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Lantorn VI - Moon 10 - Nurtura Food Packaging\" se=\"0.3\" si=\"60007681\" sy=\"Lantorn\" syi=\"30002540\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Amamake VI - Moon 2 - Nurtura Food Packaging\" se=\"0.4\" si=\"60007684\" sy=\"Amamake\" syi=\"30002537\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Amamake VI - Moon 11 - Nurtura Warehouse\" se=\"0.4\" si=\"60007687\" sy=\"Amamake\" syi=\"30002537\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Amamake VI - Moon 6 - Nurtura Warehouse\" se=\"0.4\" si=\"60007690\" sy=\"Amamake\" syi=\"30002537\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"Ardishapur Prime II - Further Foodstuffs Plantation\" se=\"0.7\" si=\"60007693\" sy=\"Ardishapur Prime\" syi=\"30002231\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"Shumam VII - Further Foodstuffs Plantation\" se=\"0.7\" si=\"60007696\" sy=\"Shumam\" syi=\"30002235\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"Vashkah IV - Moon 2 - Further Foodstuffs Food Packaging\" se=\"0.7\" si=\"60007699\" sy=\"Vashkah\" syi=\"30002230\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Emrayur III - Moon 1 - Royal Amarr Institute School\" se=\"1.0\" si=\"60007702\" sy=\"Emrayur\" syi=\"30001672\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"Fihrneh VI - Moon 1 - Royal Amarr Institute School\" se=\"0.1\" si=\"60007705\" sy=\"Fihrneh\" syi=\"30004254\"/>\r\n    <row c=\"Selonat\" ci=\"20000629\" r=\"Aridia\" ri=\"10000054\" s=\"Karan VIII - Royal Amarr Institute School\" se=\"0.1\" si=\"60007708\" sy=\"Karan\" syi=\"30004306\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Komaa V - Royal Amarr Institute School\" se=\"0.6\" si=\"60007711\" sy=\"Komaa\" syi=\"30003092\"/>\r\n    <row c=\"Meli\" ci=\"20000766\" r=\"Genesis\" ri=\"10000067\" s=\"Noranim IV - Moon 16 - Royal Amarr Institute School\" se=\"0.3\" si=\"60007714\" sy=\"Noranim\" syi=\"30005236\"/>\r\n    <row c=\"Afinoo\" ci=\"20000620\" r=\"Aridia\" ri=\"10000054\" s=\"Hier V - Royal Amarr Institute School\" se=\"0.4\" si=\"60007717\" sy=\"Hier\" syi=\"30004240\"/>\r\n    <row c=\"Reya\" ci=\"20000767\" r=\"Genesis\" ri=\"10000067\" s=\"Gergish X - Moon 3 - Royal Amarr Institute School\" se=\"0.6\" si=\"60007720\" sy=\"Gergish\" syi=\"30005244\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Kulu X - Moon 16 - Royal Amarr Institute School\" se=\"0.6\" si=\"60007723\" sy=\"Kulu\" syi=\"30005050\"/>\r\n    <row c=\"Naloran\" ci=\"20000606\" r=\"Kador\" ri=\"10000052\" s=\"Hikansog VII - Moon 9 - Royal Amarr Institute School\" se=\"0.8\" si=\"60007726\" sy=\"Hikansog\" syi=\"30004142\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Dresi II - Royal Amarr Institute School\" se=\"0.6\" si=\"60007729\" sy=\"Dresi\" syi=\"30004078\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Mikhir V - Moon 23 - Imperial Chancellor Archives\" se=\"0.7\" si=\"60007732\" sy=\"Mikhir\" syi=\"30002198\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Narai VIII - Moon 8 - Imperial Chancellor Bureau Offices\" se=\"0.5\" si=\"60007735\" sy=\"Narai\" syi=\"30002202\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Akhragan VII - Imperial Chancellor Bureau Offices\" se=\"0.8\" si=\"60007738\" sy=\"Akhragan\" syi=\"30002197\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"Artoun VII - Imperial Chancellor Bureau Offices\" se=\"0.8\" si=\"60007741\" sy=\"Artoun\" syi=\"30002278\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"Eba VII - Moon 16 - Imperial Chancellor Bureau Offices\" se=\"0.9\" si=\"60007744\" sy=\"Eba\" syi=\"30002281\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"Isamm IX - Moon 15 - Imperial Chancellor Bureau Offices\" se=\"0.7\" si=\"60007747\" sy=\"Isamm\" syi=\"30002276\"/>\r\n    <row c=\"Avib\" ci=\"20000332\" r=\"Domain\" ri=\"10000043\" s=\"Jarshitsan VII - Moon 19 - Imperial Chancellor Information Center\" se=\"0.6\" si=\"60007750\" sy=\"Jarshitsan\" syi=\"30002263\"/>\r\n    <row c=\"Avib\" ci=\"20000332\" r=\"Domain\" ri=\"10000043\" s=\"Ahmak VII - Imperial Chancellor Archives\" se=\"0.6\" si=\"60007753\" sy=\"Ahmak\" syi=\"30002266\"/>\r\n    <row c=\"Avib\" ci=\"20000332\" r=\"Domain\" ri=\"10000043\" s=\"Azizora VI - Moon 1 - Imperial Chancellor Information Center\" se=\"0.6\" si=\"60007756\" sy=\"Azizora\" syi=\"30002265\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"Gid V - Moon 4 - Imperial Chancellor Bureau Offices\" se=\"0.7\" si=\"60007759\" sy=\"Gid\" syi=\"30002232\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"Thebeka VI - Moon 19 - Imperial Chancellor Information Center\" se=\"0.9\" si=\"60007762\" sy=\"Thebeka\" syi=\"30002226\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"Thebeka VI - Moon 20 - Imperial Chancellor Bureau Offices\" se=\"0.9\" si=\"60007765\" sy=\"Thebeka\" syi=\"30002226\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Shuria X - Moon 10 - Amarr Civil Service Bureau Offices\" se=\"0.5\" si=\"60007768\" sy=\"Shuria\" syi=\"30002201\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Akhragan V - Moon 1 - Amarr Civil Service Bureau Offices\" se=\"0.8\" si=\"60007771\" sy=\"Akhragan\" syi=\"30002197\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Ziona VI - Moon 8 - Amarr Civil Service Bureau Offices\" se=\"0.6\" si=\"60007774\" sy=\"Ziona\" syi=\"30002203\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Mikhir V - Moon 8 - Amarr Civil Service Bureau Offices\" se=\"0.7\" si=\"60007777\" sy=\"Mikhir\" syi=\"30002198\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nahyeen IX - Moon 1 - Amarr Civil Service Information Center\" se=\"0.8\" si=\"60007780\" sy=\"Nahyeen\" syi=\"30005045\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Jinkah III - Moon 3 - Amarr Civil Service Archives\" se=\"0.8\" si=\"60007783\" sy=\"Jinkah\" syi=\"30005046\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nahyeen VII - Amarr Civil Service Bureau Offices\" se=\"0.8\" si=\"60007786\" sy=\"Nahyeen\" syi=\"30005045\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Polfaly VIII - Moon 3 - Amarr Civil Service Bureau Offices\" se=\"0.8\" si=\"60007789\" sy=\"Polfaly\" syi=\"30005048\"/>\r\n    <row c=\"Monalaz\" ci=\"20000770\" r=\"Genesis\" ri=\"10000067\" s=\"Djimame VI - Moon 1 - Amarr Civil Service Bureau Offices\" se=\"0.3\" si=\"60007792\" sy=\"Djimame\" syi=\"30005262\"/>\r\n    <row c=\"Monalaz\" ci=\"20000770\" r=\"Genesis\" ri=\"10000067\" s=\"Antem V - Moon 1 - Amarr Civil Service Bureau Offices\" se=\"0.3\" si=\"60007795\" sy=\"Antem\" syi=\"30005261\"/>\r\n    <row c=\"Monalaz\" ci=\"20000770\" r=\"Genesis\" ri=\"10000067\" s=\"Djimame VIII - Moon 2 - Amarr Civil Service Bureau Offices\" se=\"0.3\" si=\"60007798\" sy=\"Djimame\" syi=\"30005262\"/>\r\n    <row c=\"Monalaz\" ci=\"20000770\" r=\"Genesis\" ri=\"10000067\" s=\"Antem VI - Amarr Civil Service Bureau Offices\" se=\"0.3\" si=\"60007801\" sy=\"Antem\" syi=\"30005261\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Aphend VIII - Moon 3 - Amarr Civil Service Bureau Offices\" se=\"0.6\" si=\"60007804\" sy=\"Aphend\" syi=\"30004079\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Romi VII - Moon 11 - Amarr Civil Service Bureau Offices\" se=\"0.7\" si=\"60007807\" sy=\"Romi\" syi=\"30004080\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Aharalel V - Moon 3 - Amarr Civil Service Archives\" se=\"0.6\" si=\"60007810\" sy=\"Aharalel\" syi=\"30004082\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Zororzih VIII - Moon 1 - Amarr Civil Service Information Center\" se=\"0.7\" si=\"60007813\" sy=\"Zororzih\" syi=\"30004081\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nakregde VIII - Moon 2 - Amarr Civil Service Information Center\" se=\"0.8\" si=\"60007816\" sy=\"Nakregde\" syi=\"30005043\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Kor-Azor Prime V - Moon 2 - Amarr Civil Service Bureau Offices\" se=\"0.9\" si=\"60007819\" sy=\"Kor-Azor Prime\" syi=\"30005038\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nakregde I - Amarr Civil Service Bureau Offices\" se=\"0.8\" si=\"60007822\" sy=\"Nakregde\" syi=\"30005043\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nishah VII - Moon 1 - Amarr Civil Service Archives\" se=\"0.6\" si=\"60007825\" sy=\"Nishah\" syi=\"30005040\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"Sahda II - Amarr Civil Service Information Center\" se=\"0.4\" si=\"60007828\" sy=\"Sahda\" syi=\"30003474\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"Sahda IV - Moon 14 - Amarr Civil Service Bureau Offices\" se=\"0.4\" si=\"60007831\" sy=\"Sahda\" syi=\"30003474\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"Akila VII - Moon 12 - Amarr Civil Service Archives\" se=\"0.3\" si=\"60007834\" sy=\"Akila\" syi=\"30003479\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"Akila IX - Moon 6 - Amarr Civil Service Archives\" se=\"0.3\" si=\"60007837\" sy=\"Akila\" syi=\"30003479\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"Riavayed XI - Moon 7 - Amarr Civil Service Information Center\" se=\"0.6\" si=\"60007840\" sy=\"Riavayed\" syi=\"30002993\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"Riavayed XI - Moon 11 - Amarr Civil Service Information Center\" se=\"0.6\" si=\"60007843\" sy=\"Riavayed\" syi=\"30002993\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"Riavayed IX - Moon 2 - Amarr Civil Service Bureau Offices\" se=\"0.6\" si=\"60007846\" sy=\"Riavayed\" syi=\"30002993\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"Laddiaha V - Moon 9 - Amarr Civil Service Bureau Offices\" se=\"0.7\" si=\"60007849\" sy=\"Laddiaha\" syi=\"30002989\"/>\r\n    <row c=\"Chardu\" ci=\"20000513\" r=\"Domain\" ri=\"10000043\" s=\"Yeeramoun VII - Moon 5 - Amarr Civil Service Information Center\" se=\"0.8\" si=\"60007852\" sy=\"Yeeramoun\" syi=\"30003514\"/>\r\n    <row c=\"Chardu\" ci=\"20000513\" r=\"Domain\" ri=\"10000043\" s=\"Etav IX - Amarr Civil Service Information Center\" se=\"0.8\" si=\"60007855\" sy=\"Etav\" syi=\"30003517\"/>\r\n    <row c=\"Chardu\" ci=\"20000513\" r=\"Domain\" ri=\"10000043\" s=\"Yeeramoun VII - Moon 2 - Amarr Civil Service Bureau Offices\" se=\"0.8\" si=\"60007858\" sy=\"Yeeramoun\" syi=\"30003514\"/>\r\n    <row c=\"Chardu\" ci=\"20000513\" r=\"Domain\" ri=\"10000043\" s=\"Etav VIII - Moon 14 - Amarr Civil Service Bureau Offices\" se=\"0.8\" si=\"60007861\" sy=\"Etav\" syi=\"30003517\"/>\r\n    <row c=\"Enka\" ci=\"20000440\" r=\"Devoid\" ri=\"10000036\" s=\"Mili VIII - Moon 12 - Amarr Civil Service Bureau Offices\" se=\"0.6\" si=\"60007864\" sy=\"Mili\" syi=\"30003001\"/>\r\n    <row c=\"Enka\" ci=\"20000440\" r=\"Devoid\" ri=\"10000036\" s=\"Ulerah I - Moon 10 - Amarr Civil Service Bureau Offices\" se=\"0.7\" si=\"60007867\" sy=\"Ulerah\" syi=\"30003004\"/>\r\n    <row c=\"Enka\" ci=\"20000440\" r=\"Devoid\" ri=\"10000036\" s=\"Halenan VIII - Moon 6 - Amarr Civil Service Bureau Offices\" se=\"0.6\" si=\"60007870\" sy=\"Halenan\" syi=\"30003003\"/>\r\n    <row c=\"Enka\" ci=\"20000440\" r=\"Devoid\" ri=\"10000036\" s=\"Halenan V - Moon 1 - Amarr Civil Service Bureau Offices\" se=\"0.6\" si=\"60007873\" sy=\"Halenan\" syi=\"30003003\"/>\r\n    <row c=\"Mih\" ci=\"20000764\" r=\"Genesis\" ri=\"10000067\" s=\"Iderion XI - Moon 13 - Amarr Civil Service Information Center\" se=\"0.5\" si=\"60007876\" sy=\"Iderion\" syi=\"30005227\"/>\r\n    <row c=\"Mih\" ci=\"20000764\" r=\"Genesis\" ri=\"10000067\" s=\"Assez X - Moon 1 - Amarr Civil Service Bureau Offices\" se=\"0.4\" si=\"60007879\" sy=\"Assez\" syi=\"30005224\"/>\r\n    <row c=\"Mih\" ci=\"20000764\" r=\"Genesis\" ri=\"10000067\" s=\"Alal III - Amarr Civil Service Bureau Offices\" se=\"0.4\" si=\"60007882\" sy=\"Alal\" syi=\"30005225\"/>\r\n    <row c=\"Mih\" ci=\"20000764\" r=\"Genesis\" ri=\"10000067\" s=\"Serren VIII - Moon 15 - Amarr Civil Service Information Center\" se=\"0.5\" si=\"60007885\" sy=\"Serren\" syi=\"30005222\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Akhragan VIII - Ministry of War Archives\" se=\"0.8\" si=\"60007888\" sy=\"Akhragan\" syi=\"30002197\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Ziona VII - Moon 13 - Ministry of War Archives\" se=\"0.6\" si=\"60007891\" sy=\"Ziona\" syi=\"30002203\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Sukirah V - Moon 3 - Ministry of War Archives\" se=\"0.6\" si=\"60007894\" sy=\"Sukirah\" syi=\"30002200\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Mikhir V - Moon 10 - Ministry of War Information Center\" se=\"0.7\" si=\"60007897\" sy=\"Mikhir\" syi=\"30002198\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Jinkah VI - Moon 12 - Ministry of War Archives\" se=\"0.8\" si=\"60007900\" sy=\"Jinkah\" syi=\"30005046\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Jinkah VI - Moon 10 - Ministry of War Archives\" se=\"0.8\" si=\"60007903\" sy=\"Jinkah\" syi=\"30005046\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Andrub II - Moon 1 - Ministry of War Bureau Offices\" se=\"0.7\" si=\"60007906\" sy=\"Andrub\" syi=\"30005049\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Andrub VI - Ministry of War Bureau Offices\" se=\"0.7\" si=\"60007909\" sy=\"Andrub\" syi=\"30005049\"/>\r\n    <row c=\"Reya\" ci=\"20000767\" r=\"Genesis\" ri=\"10000067\" s=\"Hirizan VII - Moon 3 - Ministry of War Bureau Offices\" se=\"0.5\" si=\"60007912\" sy=\"Hirizan\" syi=\"30005248\"/>\r\n    <row c=\"Reya\" ci=\"20000767\" r=\"Genesis\" ri=\"10000067\" s=\"Tahli I - Moon 1 - Ministry of War Bureau Offices\" se=\"0.6\" si=\"60007915\" sy=\"Tahli\" syi=\"30005245\"/>\r\n    <row c=\"Reya\" ci=\"20000767\" r=\"Genesis\" ri=\"10000067\" s=\"Imya VIII - Moon 3 - Ministry of War Information Center\" se=\"0.5\" si=\"60007918\" sy=\"Imya\" syi=\"30005246\"/>\r\n    <row c=\"Reya\" ci=\"20000767\" r=\"Genesis\" ri=\"10000067\" s=\"Madomi V - Moon 6 - Ministry of War Information Center\" se=\"0.6\" si=\"60007921\" sy=\"Madomi\" syi=\"30005243\"/>\r\n    <row c=\"Mareerieh\" ci=\"20000621\" r=\"Aridia\" ri=\"10000054\" s=\"Sadana I - Ministry of War Information Center\" se=\"0.4\" si=\"60007924\" sy=\"Sadana\" syi=\"30004242\"/>\r\n    <row c=\"Mareerieh\" ci=\"20000621\" r=\"Aridia\" ri=\"10000054\" s=\"Vehan VI - Moon 10 - Ministry of War Archives\" se=\"0.4\" si=\"60007927\" sy=\"Vehan\" syi=\"30004246\"/>\r\n    <row c=\"Mareerieh\" ci=\"20000621\" r=\"Aridia\" ri=\"10000054\" s=\"Vehan V - Moon 1 - Ministry of War Archives\" se=\"0.4\" si=\"60007930\" sy=\"Vehan\" syi=\"30004246\"/>\r\n    <row c=\"Mareerieh\" ci=\"20000621\" r=\"Aridia\" ri=\"10000054\" s=\"Sadana VIII - Moon 2 - Ministry of War Bureau Offices\" se=\"0.4\" si=\"60007933\" sy=\"Sadana\" syi=\"30004242\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"Esubara II - Moon 12 - Ministry of War Information Center\" se=\"0.2\" si=\"60007936\" sy=\"Esubara\" syi=\"30004287\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"Esubara I - Moon 13 - Ministry of War Bureau Offices\" se=\"0.2\" si=\"60007939\" sy=\"Esubara\" syi=\"30004287\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"Esubara I - Moon 15 - Ministry of War Bureau Offices\" se=\"0.2\" si=\"60007942\" sy=\"Esubara\" syi=\"30004287\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"Nalnifan VI - Moon 3 - Ministry of War Information Center\" se=\"0.3\" si=\"60007945\" sy=\"Nalnifan\" syi=\"30004280\"/>\r\n    <row c=\"Selonat\" ci=\"20000629\" r=\"Aridia\" ri=\"10000054\" s=\"Hophib XII - Ministry of War Archives\" se=\"0.1\" si=\"60007948\" sy=\"Hophib\" syi=\"30004309\"/>\r\n    <row c=\"Selonat\" ci=\"20000629\" r=\"Aridia\" ri=\"10000054\" s=\"Ned IV - Ministry of War Archives\" se=\"0.2\" si=\"60007951\" sy=\"Ned\" syi=\"30004308\"/>\r\n    <row c=\"Selonat\" ci=\"20000629\" r=\"Aridia\" ri=\"10000054\" s=\"Huna VI - Moon 17 - Ministry of War Archives\" se=\"0.1\" si=\"60007954\" sy=\"Huna\" syi=\"30004304\"/>\r\n    <row c=\"Selonat\" ci=\"20000629\" r=\"Aridia\" ri=\"10000054\" s=\"Hophib VI - Moon 3 - Ministry of War Archives\" se=\"0.1\" si=\"60007957\" sy=\"Hophib\" syi=\"30004309\"/>\r\n    <row c=\"Kakol\" ci=\"20000597\" r=\"Kador\" ri=\"10000052\" s=\"Joramok VI - Moon 14 - Ministry of War Archives\" se=\"0.8\" si=\"60007960\" sy=\"Joramok\" syi=\"30004088\"/>\r\n    <row c=\"Kakol\" ci=\"20000597\" r=\"Kador\" ri=\"10000052\" s=\"Aband IV - Moon 12 - Ministry of War Archives\" se=\"0.5\" si=\"60007963\" sy=\"Aband\" syi=\"30004090\"/>\r\n    <row c=\"Kakol\" ci=\"20000597\" r=\"Kador\" ri=\"10000052\" s=\"Ghesis IV - Moon 17 - Ministry of War Information Center\" se=\"0.5\" si=\"60007966\" sy=\"Ghesis\" syi=\"30004084\"/>\r\n    <row c=\"Kakol\" ci=\"20000597\" r=\"Kador\" ri=\"10000052\" s=\"Joramok IV - Moon 4 - Ministry of War Archives\" se=\"0.8\" si=\"60007969\" sy=\"Joramok\" syi=\"30004088\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"Pamah II - Moon 1 - Ministry of War Bureau Offices\" se=\"0.5\" si=\"60007972\" sy=\"Pamah\" syi=\"30005232\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"Pamah V - Moon 20 - Ministry of War Information Center\" se=\"0.5\" si=\"60007975\" sy=\"Pamah\" syi=\"30005232\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"Manatirid VII - Moon 8 - Ministry of War Archives\" se=\"0.5\" si=\"60007978\" sy=\"Manatirid\" syi=\"30005230\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"Pashanai III - Moon 9 - Ministry of War Bureau Offices\" se=\"0.5\" si=\"60007981\" sy=\"Pashanai\" syi=\"30005231\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"Shemah V - Moon 1 - Ministry of War Information Center\" se=\"0.8\" si=\"60007984\" sy=\"Shemah\" syi=\"30004155\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"Zorrabed VII - Moon 19 - Ministry of War Archives\" se=\"0.8\" si=\"60007987\" sy=\"Zorrabed\" syi=\"30004160\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"Shemah VIII - Moon 19 - Ministry of War Bureau Offices\" se=\"0.8\" si=\"60007990\" sy=\"Shemah\" syi=\"30004155\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"Asrios VIII - Ministry of War Information Center\" se=\"0.8\" si=\"60007993\" sy=\"Asrios\" syi=\"30004156\"/>\r\n    <row c=\"Nasorin\" ci=\"20000252\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Taru X - Moon 9 - Ministry of War Information Center\" se=\"0.8\" si=\"60007996\" sy=\"Taru\" syi=\"30001703\"/>\r\n    <row c=\"Nasorin\" ci=\"20000252\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Yanuel XI - Moon 16 - Ministry of War Information Center\" se=\"0.8\" si=\"60007999\" sy=\"Yanuel\" syi=\"30001701\"/>\r\n    <row c=\"Nasorin\" ci=\"20000252\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Yanuel XI - Moon 4 - Ministry of War Information Center\" se=\"0.8\" si=\"60008002\" sy=\"Yanuel\" syi=\"30001701\"/>\r\n    <row c=\"Nasorin\" ci=\"20000252\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Nafrivik VIII - Moon 6 - Ministry of War Bureau Offices\" se=\"0.6\" si=\"60008005\" sy=\"Nafrivik\" syi=\"30001702\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Turba VI - Ministry of Assessment Archives\" se=\"0.7\" si=\"60008008\" sy=\"Turba\" syi=\"30004098\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Inis-Ilix VII - Moon 1 - Ministry of Assessment Archives\" se=\"0.9\" si=\"60008011\" sy=\"Inis-Ilix\" syi=\"30004102\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Halibai IV - Moon 3 - Ministry of Assessment Archives\" se=\"0.7\" si=\"60008014\" sy=\"Halibai\" syi=\"30004100\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Kothe III - Moon 1 - Ministry of Assessment Archives\" se=\"0.6\" si=\"60008017\" sy=\"Kothe\" syi=\"30004103\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hostni V - Moon 4 - Ministry of Assessment Bureau Offices\" se=\"0.8\" si=\"60008020\" sy=\"Hostni\" syi=\"30001690\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Kibursha I - Ministry of Assessment Information Center\" se=\"0.8\" si=\"60008023\" sy=\"Kibursha\" syi=\"30001692\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Lossa II - Ministry of Assessment Information Center\" se=\"0.8\" si=\"60008026\" sy=\"Lossa\" syi=\"30001687\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hostni VI - Moon 7 - Ministry of Assessment Information Center\" se=\"0.8\" si=\"60008029\" sy=\"Hostni\" syi=\"30001690\"/>\r\n    <row c=\"Kekah\" ci=\"20000326\" r=\"Domain\" ri=\"10000043\" s=\"Charra VI - Moon 13 - Ministry of Assessment Bureau Offices\" se=\"0.8\" si=\"60008032\" sy=\"Charra\" syi=\"30002224\"/>\r\n    <row c=\"Kekah\" ci=\"20000326\" r=\"Domain\" ri=\"10000043\" s=\"Charra I - Ministry of Assessment Information Center\" se=\"0.8\" si=\"60008035\" sy=\"Charra\" syi=\"30002224\"/>\r\n    <row c=\"Kekah\" ci=\"20000326\" r=\"Domain\" ri=\"10000043\" s=\"Charra VII - Moon 19 - Ministry of Assessment Information Center\" se=\"0.8\" si=\"60008038\" sy=\"Charra\" syi=\"30002224\"/>\r\n    <row c=\"Kekah\" ci=\"20000326\" r=\"Domain\" ri=\"10000043\" s=\"Aghesi VI - Moon 10 - Ministry of Assessment Bureau Offices\" se=\"0.8\" si=\"60008041\" sy=\"Aghesi\" syi=\"30002220\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Tew IX - Moon 13 - Ministry of Assessment Bureau Offices\" se=\"0.9\" si=\"60008044\" sy=\"Tew\" syi=\"30001733\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Alra X - Moon 24 - Ministry of Assessment Information Center\" se=\"0.8\" si=\"60008047\" sy=\"Alra\" syi=\"30001730\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Ilas VII - Moon 11 - Ministry of Assessment Information Center\" se=\"0.8\" si=\"60008050\" sy=\"Ilas\" syi=\"30001731\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Zith VII - Moon 1 - Ministry of Assessment Bureau Offices\" se=\"0.9\" si=\"60008053\" sy=\"Zith\" syi=\"30001732\"/>\r\n    <row c=\"Yekti\" ci=\"20000511\" r=\"Domain\" ri=\"10000043\" s=\"Bahromab VIII - Moon 3 - Ministry of Assessment Information Center\" se=\"0.6\" si=\"60008056\" sy=\"Bahromab\" syi=\"30003502\"/>\r\n    <row c=\"Yekti\" ci=\"20000511\" r=\"Domain\" ri=\"10000043\" s=\"Bahromab V - Ministry of Assessment Bureau Offices\" se=\"0.6\" si=\"60008059\" sy=\"Bahromab\" syi=\"30003502\"/>\r\n    <row c=\"Yekti\" ci=\"20000511\" r=\"Domain\" ri=\"10000043\" s=\"Fabum III - Ministry of Assessment Archives\" se=\"0.7\" si=\"60008062\" sy=\"Fabum\" syi=\"30003505\"/>\r\n    <row c=\"Yekti\" ci=\"20000511\" r=\"Domain\" ri=\"10000043\" s=\"Bahromab IX - Moon 4 - Ministry of Assessment Information Center\" se=\"0.6\" si=\"60008065\" sy=\"Bahromab\" syi=\"30003502\"/>\r\n    <row c=\"Kabo\" ci=\"20000437\" r=\"Devoid\" ri=\"10000036\" s=\"Soosat X - Moon 7 - Ministry of Assessment Archives\" se=\"0.3\" si=\"60008068\" sy=\"Soosat\" syi=\"30002983\"/>\r\n    <row c=\"Kabo\" ci=\"20000437\" r=\"Devoid\" ri=\"10000036\" s=\"Mendori IV - Moon 1 - Ministry of Assessment Information Center\" se=\"0.5\" si=\"60008071\" sy=\"Mendori\" syi=\"30002986\"/>\r\n    <row c=\"Kabo\" ci=\"20000437\" r=\"Devoid\" ri=\"10000036\" s=\"Rahadalon VIII - Moon 2 - Ministry of Assessment Bureau Offices\" se=\"0.4\" si=\"60008074\" sy=\"Rahadalon\" syi=\"30002982\"/>\r\n    <row c=\"Kabo\" ci=\"20000437\" r=\"Devoid\" ri=\"10000036\" s=\"Ibash II - Ministry of Assessment Information Center\" se=\"0.2\" si=\"60008077\" sy=\"Ibash\" syi=\"30002984\"/>\r\n    <row c=\"Nashar\" ci=\"20000330\" r=\"Domain\" ri=\"10000043\" s=\"Jerma V - Ministry of Assessment Information Center\" se=\"0.5\" si=\"60008080\" sy=\"Jerma\" syi=\"30002254\"/>\r\n    <row c=\"Nashar\" ci=\"20000330\" r=\"Domain\" ri=\"10000043\" s=\"Reyi VII - Moon 1 - Ministry of Assessment Bureau Offices\" se=\"0.3\" si=\"60008083\" sy=\"Reyi\" syi=\"30002256\"/>\r\n    <row c=\"Nashar\" ci=\"20000330\" r=\"Domain\" ri=\"10000043\" s=\"Jerma VII - Moon 4 - Ministry of Assessment Bureau Offices\" se=\"0.5\" si=\"60008086\" sy=\"Jerma\" syi=\"30002254\"/>\r\n    <row c=\"Nashar\" ci=\"20000330\" r=\"Domain\" ri=\"10000043\" s=\"Bika VII - Moon 3 - Ministry of Assessment Bureau Offices\" se=\"0.5\" si=\"60008089\" sy=\"Bika\" syi=\"30002252\"/>\r\n    <row c=\"Nazdirer\" ci=\"20000760\" r=\"Genesis\" ri=\"10000067\" s=\"Vecamia VII - Moon 2 - Ministry of Assessment Archives\" se=\"0.4\" si=\"60008092\" sy=\"Vecamia\" syi=\"30005195\"/>\r\n    <row c=\"Nazdirer\" ci=\"20000760\" r=\"Genesis\" ri=\"10000067\" s=\"Vecamia V - Moon 1 - Ministry of Assessment Archives\" se=\"0.4\" si=\"60008095\" sy=\"Vecamia\" syi=\"30005195\"/>\r\n    <row c=\"Nazdirer\" ci=\"20000760\" r=\"Genesis\" ri=\"10000067\" s=\"Cleyd IV - Moon 13 - Ministry of Assessment Information Center\" se=\"0.5\" si=\"60008098\" sy=\"Cleyd\" syi=\"30005194\"/>\r\n    <row c=\"Nazdirer\" ci=\"20000760\" r=\"Genesis\" ri=\"10000067\" s=\"Cleyd IV - Moon 6 - Ministry of Assessment Information Center\" se=\"0.5\" si=\"60008101\" sy=\"Cleyd\" syi=\"30005194\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Gammel X - Moon 3 - Ministry of Assessment Bureau Offices\" se=\"0.5\" si=\"60008104\" sy=\"Gammel\" syi=\"30003076\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Iesa VI - Moon 6 - Ministry of Assessment Information Center\" se=\"0.4\" si=\"60008107\" sy=\"Iesa\" syi=\"30003072\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Uusanen IV - Moon 1 - Ministry of Assessment Information Center\" se=\"0.4\" si=\"60008110\" sy=\"Uusanen\" syi=\"30003077\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Netsalakka I - Ministry of Assessment Bureau Offices\" se=\"0.5\" si=\"60008113\" sy=\"Netsalakka\" syi=\"30003073\"/>\r\n    <row c=\"Mareerieh\" ci=\"20000621\" r=\"Aridia\" ri=\"10000054\" s=\"Sadana VIII - Ministry of Assessment Bureau Offices\" se=\"0.4\" si=\"60008116\" sy=\"Sadana\" syi=\"30004242\"/>\r\n    <row c=\"Mareerieh\" ci=\"20000621\" r=\"Aridia\" ri=\"10000054\" s=\"Marmeha V - Moon 3 - Ministry of Assessment Archives\" se=\"0.3\" si=\"60008119\" sy=\"Marmeha\" syi=\"30004247\"/>\r\n    <row c=\"Mareerieh\" ci=\"20000621\" r=\"Aridia\" ri=\"10000054\" s=\"Marmeha II - Ministry of Assessment Archives\" se=\"0.3\" si=\"60008122\" sy=\"Marmeha\" syi=\"30004247\"/>\r\n    <row c=\"Mareerieh\" ci=\"20000621\" r=\"Aridia\" ri=\"10000054\" s=\"Sadana VII - Moon 10 - Ministry of Assessment Bureau Offices\" se=\"0.4\" si=\"60008125\" sy=\"Sadana\" syi=\"30004242\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Bashakru IV - Ministry of Internal Order Assembly Plant\" se=\"0.6\" si=\"60008128\" sy=\"Bashakru\" syi=\"30002199\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Shuria IV - Moon 1 - Ministry of Internal Order Logistic Support\" se=\"0.5\" si=\"60008131\" sy=\"Shuria\" syi=\"30002201\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Akhragan VIII - Moon 5 - Ministry of Internal Order Logistic Support\" se=\"0.8\" si=\"60008134\" sy=\"Akhragan\" syi=\"30002197\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Shuria X - Moon 16 - Ministry of Internal Order Assembly Plant\" se=\"0.5\" si=\"60008137\" sy=\"Shuria\" syi=\"30002201\"/>\r\n    <row c=\"Meli\" ci=\"20000766\" r=\"Genesis\" ri=\"10000067\" s=\"Menai V - Ministry of Internal Order Logistic Support\" se=\"0.3\" si=\"60008140\" sy=\"Menai\" syi=\"30005238\"/>\r\n    <row c=\"Meli\" ci=\"20000766\" r=\"Genesis\" ri=\"10000067\" s=\"Aring VIII - Moon 7 - Ministry of Internal Order Assembly Plant\" se=\"0.3\" si=\"60008143\" sy=\"Aring\" syi=\"30005239\"/>\r\n    <row c=\"Meli\" ci=\"20000766\" r=\"Genesis\" ri=\"10000067\" s=\"Aring VIII - Moon 12 - Ministry of Internal Order Logistic Support\" se=\"0.3\" si=\"60008146\" sy=\"Aring\" syi=\"30005239\"/>\r\n    <row c=\"Meli\" ci=\"20000766\" r=\"Genesis\" ri=\"10000067\" s=\"Chej VI - Ministry of Internal Order Assembly Plant\" se=\"0.3\" si=\"60008149\" sy=\"Chej\" syi=\"30005237\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"Haimeh IX - Moon 11 - Ministry of Internal Order Logistic Support\" se=\"0.5\" si=\"60008152\" sy=\"Haimeh\" syi=\"30004248\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"Mishi VI - Moon 1 - Ministry of Internal Order Logistic Support\" se=\"0.7\" si=\"60008155\" sy=\"Mishi\" syi=\"30004251\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"Bazadod IX - Moon 4 - Ministry of Internal Order Testing Facilities\" se=\"0.5\" si=\"60008158\" sy=\"Bazadod\" syi=\"30004252\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"Haimeh IX - Moon 8 - Ministry of Internal Order Assembly Plant\" se=\"0.5\" si=\"60008161\" sy=\"Haimeh\" syi=\"30004248\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Penirgman IX - Moon 3 - Ministry of Internal Order Assembly Plant\" se=\"0.9\" si=\"60008164\" sy=\"Penirgman\" syi=\"30003488\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Penirgman VII - Ministry of Internal Order Assembly Plant\" se=\"0.9\" si=\"60008167\" sy=\"Penirgman\" syi=\"30003488\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Orkashu VI - Moon 7 - Ministry of Internal Order Assembly Plant\" se=\"0.8\" si=\"60008170\" sy=\"Orkashu\" syi=\"30003492\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Penirgman VI - Ministry of Internal Order Assembly Plant\" se=\"0.9\" si=\"60008173\" sy=\"Penirgman\" syi=\"30003488\"/>\r\n    <row c=\"Monalaz\" ci=\"20000770\" r=\"Genesis\" ri=\"10000067\" s=\"Antem VI - Moon 6 - Ministry of Internal Order Logistic Support\" se=\"0.3\" si=\"60008176\" sy=\"Antem\" syi=\"30005261\"/>\r\n    <row c=\"Monalaz\" ci=\"20000770\" r=\"Genesis\" ri=\"10000067\" s=\"Antem VI - Moon 7 - Ministry of Internal Order Assembly Plant\" se=\"0.3\" si=\"60008179\" sy=\"Antem\" syi=\"30005261\"/>\r\n    <row c=\"Monalaz\" ci=\"20000770\" r=\"Genesis\" ri=\"10000067\" s=\"Antem VIII - Moon 18 - Ministry of Internal Order Assembly Plant\" se=\"0.3\" si=\"60008182\" sy=\"Antem\" syi=\"30005261\"/>\r\n    <row c=\"Monalaz\" ci=\"20000770\" r=\"Genesis\" ri=\"10000067\" s=\"Mozzidit VIII - Ministry of Internal Order Logistic Support\" se=\"0.3\" si=\"60008185\" sy=\"Mozzidit\" syi=\"30005263\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Komaa VII - Moon 7 - Ministry of Internal Order Assembly Plant\" se=\"0.6\" si=\"60008188\" sy=\"Komaa\" syi=\"30003092\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Komaa VII - Moon 10 - Ministry of Internal Order Assembly Plant\" se=\"0.6\" si=\"60008191\" sy=\"Komaa\" syi=\"30003092\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Kurmaru I - Ministry of Internal Order Testing Facilities\" se=\"0.6\" si=\"60008194\" sy=\"Kurmaru\" syi=\"30003096\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Furskeshin V - Moon 2 - Ministry of Internal Order Logistic Support\" se=\"0.6\" si=\"60008197\" sy=\"Furskeshin\" syi=\"30003095\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nahyeen IX - Moon 3 - Ministry of Internal Order Assembly Plant\" se=\"0.8\" si=\"60008200\" sy=\"Nahyeen\" syi=\"30005045\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Polfaly V - Moon 2 - Ministry of Internal Order Assembly Plant\" se=\"0.8\" si=\"60008203\" sy=\"Polfaly\" syi=\"30005048\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nibainkier VII - Ministry of Internal Order Assembly Plant\" se=\"0.7\" si=\"60008206\" sy=\"Nibainkier\" syi=\"30005047\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nahyeen VI - Ministry of Internal Order Assembly Plant\" se=\"0.8\" si=\"60008209\" sy=\"Nahyeen\" syi=\"30005045\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Sasoutikh VI - Moon 3 - Ministry of Internal Order Logistic Support\" se=\"0.6\" si=\"60008212\" sy=\"Sasoutikh\" syi=\"30002971\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Gheth VIII - Moon 8 - Ministry of Internal Order Logistic Support\" se=\"0.6\" si=\"60008215\" sy=\"Gheth\" syi=\"30002972\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Lisudeh IV - Moon 9 - Ministry of Internal Order Logistic Support\" se=\"0.8\" si=\"60008218\" sy=\"Lisudeh\" syi=\"30002973\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Mehatoor I - Ministry of Internal Order Logistic Support\" se=\"0.7\" si=\"60008221\" sy=\"Mehatoor\" syi=\"30002974\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hilaban VI - Ministry of Internal Order Assembly Plant\" se=\"0.9\" si=\"60008224\" sy=\"Hilaban\" syi=\"30001674\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hilaban II - Moon 1 - Ministry of Internal Order Assembly Plant\" se=\"0.9\" si=\"60008227\" sy=\"Hilaban\" syi=\"30001674\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Baviasi V - Moon 1 - Ministry of Internal Order Logistic Support\" se=\"0.8\" si=\"60008230\" sy=\"Baviasi\" syi=\"30001670\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hilaban III - Moon 7 - Ministry of Internal Order Logistic Support\" se=\"0.9\" si=\"60008233\" sy=\"Hilaban\" syi=\"30001674\"/>\r\n    <row c=\"Kihkounad\" ci=\"20000772\" r=\"Genesis\" ri=\"10000067\" s=\"Partod VII - Moon 18 - Ministry of Internal Order Testing Facilities\" se=\"0.4\" si=\"60008236\" sy=\"Partod\" syi=\"30005280\"/>\r\n    <row c=\"Kihkounad\" ci=\"20000772\" r=\"Genesis\" ri=\"10000067\" s=\"Sharza III - Ministry of Internal Order Assembly Plant\" se=\"0.3\" si=\"60008239\" sy=\"Sharza\" syi=\"30005276\"/>\r\n    <row c=\"Kihkounad\" ci=\"20000772\" r=\"Genesis\" ri=\"10000067\" s=\"Anara VIII - Moon 8 - Ministry of Internal Order Logistic Support\" se=\"0.4\" si=\"60008242\" sy=\"Anara\" syi=\"30005279\"/>\r\n    <row c=\"Kihkounad\" ci=\"20000772\" r=\"Genesis\" ri=\"10000067\" s=\"Azedi IX - Ministry of Internal Order Logistic Support\" se=\"0.3\" si=\"60008245\" sy=\"Azedi\" syi=\"30005275\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Sukirah VIII - Moon 5 - Amarr Trade Registry Archives\" se=\"0.6\" si=\"60008248\" sy=\"Sukirah\" syi=\"30002200\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Sukirah VII - Moon 7 - Amarr Trade Registry Archives\" se=\"0.6\" si=\"60008251\" sy=\"Sukirah\" syi=\"30002200\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Mikhir V - Moon 8 - Amarr Trade Registry Bureau Offices\" se=\"0.7\" si=\"60008254\" sy=\"Mikhir\" syi=\"30002198\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Mikhir VII - Moon 2 - Amarr Trade Registry Information Center\" se=\"0.7\" si=\"60008257\" sy=\"Mikhir\" syi=\"30002198\"/>\r\n    <row c=\"Meli\" ci=\"20000766\" r=\"Genesis\" ri=\"10000067\" s=\"Chej VI - Moon 2 - Amarr Trade Registry Bureau Offices\" se=\"0.3\" si=\"60008260\" sy=\"Chej\" syi=\"30005237\"/>\r\n    <row c=\"Meli\" ci=\"20000766\" r=\"Genesis\" ri=\"10000067\" s=\"Naka VI - Moon 2 - Amarr Trade Registry Bureau Offices\" se=\"0.3\" si=\"60008263\" sy=\"Naka\" syi=\"30005242\"/>\r\n    <row c=\"Meli\" ci=\"20000766\" r=\"Genesis\" ri=\"10000067\" s=\"Gayar IV - Moon 1 - Amarr Trade Registry Bureau Offices\" se=\"0.3\" si=\"60008266\" sy=\"Gayar\" syi=\"30005240\"/>\r\n    <row c=\"Meli\" ci=\"20000766\" r=\"Genesis\" ri=\"10000067\" s=\"Chej VII - Amarr Trade Registry Information Center\" se=\"0.3\" si=\"60008269\" sy=\"Chej\" syi=\"30005237\"/>\r\n    <row c=\"Makh\" ci=\"20000769\" r=\"Genesis\" ri=\"10000067\" s=\"Bantish I - Moon 1 - Amarr Trade Registry Information Center\" se=\"0.3\" si=\"60008272\" sy=\"Bantish\" syi=\"30005257\"/>\r\n    <row c=\"Makh\" ci=\"20000769\" r=\"Genesis\" ri=\"10000067\" s=\"Lela VI - Moon 3 - Amarr Trade Registry Archives\" se=\"0.3\" si=\"60008275\" sy=\"Lela\" syi=\"30005259\"/>\r\n    <row c=\"Makh\" ci=\"20000769\" r=\"Genesis\" ri=\"10000067\" s=\"Itrin V - Moon 2 - Amarr Trade Registry Information Center\" se=\"0.4\" si=\"60008278\" sy=\"Itrin\" syi=\"30005256\"/>\r\n    <row c=\"Makh\" ci=\"20000769\" r=\"Genesis\" ri=\"10000067\" s=\"Keri VI - Moon 1 - Amarr Trade Registry Archives\" se=\"0.4\" si=\"60008281\" sy=\"Keri\" syi=\"30005260\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"Fahruni XI - Moon 13 - Amarr Trade Registry Bureau Offices\" se=\"0.5\" si=\"60008284\" sy=\"Fahruni\" syi=\"30003473\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"Sahda IV - Moon 7 - Amarr Trade Registry Information Center\" se=\"0.4\" si=\"60008287\" sy=\"Sahda\" syi=\"30003474\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"Fahruni VI - Amarr Trade Registry Bureau Offices\" se=\"0.5\" si=\"60008290\" sy=\"Fahruni\" syi=\"30003473\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"Amod V - Amarr Trade Registry Archives\" se=\"0.3\" si=\"60008293\" sy=\"Amod\" syi=\"30003480\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Lisudeh IV - Moon 13 - Amarr Trade Registry Information Center\" se=\"0.8\" si=\"60008296\" sy=\"Lisudeh\" syi=\"30002973\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Lisudeh V - Moon 14 - Amarr Trade Registry Bureau Offices\" se=\"0.8\" si=\"60008299\" sy=\"Lisudeh\" syi=\"30002973\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Gheth VI - Amarr Trade Registry Archives\" se=\"0.6\" si=\"60008302\" sy=\"Gheth\" syi=\"30002972\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Mehatoor IV - Amarr Trade Registry Archives\" se=\"0.7\" si=\"60008305\" sy=\"Mehatoor\" syi=\"30002974\"/>\r\n    <row c=\"Pezarba\" ci=\"20000605\" r=\"Kador\" ri=\"10000052\" s=\"Omam VII - Moon 7 - Amarr Trade Registry Bureau Offices\" se=\"0.3\" si=\"60008308\" sy=\"Omam\" syi=\"30004137\"/>\r\n    <row c=\"Pezarba\" ci=\"20000605\" r=\"Kador\" ri=\"10000052\" s=\"Omam VII - Amarr Trade Registry Bureau Offices\" se=\"0.3\" si=\"60008311\" sy=\"Omam\" syi=\"30004137\"/>\r\n    <row c=\"Pezarba\" ci=\"20000605\" r=\"Kador\" ri=\"10000052\" s=\"Mod II - Amarr Trade Registry Bureau Offices\" se=\"0.3\" si=\"60008314\" sy=\"Mod\" syi=\"30004136\"/>\r\n    <row c=\"Pezarba\" ci=\"20000605\" r=\"Kador\" ri=\"10000052\" s=\"Omam VII - Moon 6 - Amarr Trade Registry Information Center\" se=\"0.3\" si=\"60008317\" sy=\"Omam\" syi=\"30004137\"/>\r\n    <row c=\"Tid\" ci=\"20000624\" r=\"Aridia\" ri=\"10000054\" s=\"Rashagh VI - Amarr Trade Registry Bureau Offices\" se=\"0.4\" si=\"60008320\" sy=\"Rashagh\" syi=\"30004269\"/>\r\n    <row c=\"Tid\" ci=\"20000624\" r=\"Aridia\" ri=\"10000054\" s=\"Shenda VI - Moon 12 - Amarr Trade Registry Information Center\" se=\"0.5\" si=\"60008323\" sy=\"Shenda\" syi=\"30004268\"/>\r\n    <row c=\"Tid\" ci=\"20000624\" r=\"Aridia\" ri=\"10000054\" s=\"Rashagh III - Moon 1 - Amarr Trade Registry Information Center\" se=\"0.4\" si=\"60008326\" sy=\"Rashagh\" syi=\"30004269\"/>\r\n    <row c=\"Tid\" ci=\"20000624\" r=\"Aridia\" ri=\"10000054\" s=\"Rashagh IV - Moon 2 - Amarr Trade Registry Information Center\" se=\"0.4\" si=\"60008329\" sy=\"Rashagh\" syi=\"30004269\"/>\r\n    <row c=\"Nasorin\" ci=\"20000252\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Remoriu IV - Moon 1 - Amarr Trade Registry Information Center\" se=\"0.7\" si=\"60008332\" sy=\"Remoriu\" syi=\"30001700\"/>\r\n    <row c=\"Nasorin\" ci=\"20000252\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Remoriu V - Moon 6 - Amarr Trade Registry Bureau Offices\" se=\"0.7\" si=\"60008335\" sy=\"Remoriu\" syi=\"30001700\"/>\r\n    <row c=\"Nasorin\" ci=\"20000252\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Remoriu V - Moon 7 - Amarr Trade Registry Bureau Offices\" se=\"0.7\" si=\"60008338\" sy=\"Remoriu\" syi=\"30001700\"/>\r\n    <row c=\"Nasorin\" ci=\"20000252\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Remoriu VI - Moon 1 - Amarr Trade Registry Bureau Offices\" se=\"0.7\" si=\"60008341\" sy=\"Remoriu\" syi=\"30001700\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Komaa VI - Moon 19 - Amarr Trade Registry Bureau Offices\" se=\"0.6\" si=\"60008344\" sy=\"Komaa\" syi=\"30003092\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Komaa V - Moon 3 - Amarr Trade Registry Bureau Offices\" se=\"0.6\" si=\"60008347\" sy=\"Komaa\" syi=\"30003092\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Satalama II - Amarr Trade Registry Archives\" se=\"0.7\" si=\"60008350\" sy=\"Satalama\" syi=\"30003097\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Imata VII - Amarr Trade Registry Archives\" se=\"0.5\" si=\"60008353\" sy=\"Imata\" syi=\"30003094\"/>\r\n    <row c=\"Fabas\" ci=\"20000774\" r=\"Genesis\" ri=\"10000067\" s=\"Nasreri V - Moon 4 - Amarr Trade Registry Information Center\" se=\"0.5\" si=\"60008356\" sy=\"Nasreri\" syi=\"30005289\"/>\r\n    <row c=\"Fabas\" ci=\"20000774\" r=\"Genesis\" ri=\"10000067\" s=\"Heorah V - Moon 7 - Amarr Trade Registry Bureau Offices\" se=\"0.5\" si=\"60008359\" sy=\"Heorah\" syi=\"30005290\"/>\r\n    <row c=\"Fabas\" ci=\"20000774\" r=\"Genesis\" ri=\"10000067\" s=\"Doza I - Amarr Trade Registry Information Center\" se=\"0.6\" si=\"60008362\" sy=\"Doza\" syi=\"30005293\"/>\r\n    <row c=\"Fabas\" ci=\"20000774\" r=\"Genesis\" ri=\"10000067\" s=\"Nasreri VII - Moon 4 - Amarr Trade Registry Bureau Offices\" se=\"0.5\" si=\"60008365\" sy=\"Nasreri\" syi=\"30005289\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"Safizon II - Moon 1 - Amarr Navy Assembly Plant\" se=\"0.8\" si=\"60008368\" sy=\"Safizon\" syi=\"30002279\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"Ebtesham V - Amarr Navy Assembly Plant\" se=\"0.7\" si=\"60008371\" sy=\"Ebtesham\" syi=\"30002277\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"Bhizheba IX - Moon 1 - Amarr Navy Logistic Support\" se=\"1.0\" si=\"60008374\" sy=\"Bhizheba\" syi=\"30002282\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"Ebtesham VI - Moon 2 - Amarr Navy Assembly Plant\" se=\"0.7\" si=\"60008377\" sy=\"Ebtesham\" syi=\"30002277\"/>\r\n    <row c=\"Afinoo\" ci=\"20000620\" r=\"Aridia\" ri=\"10000054\" s=\"Kenahehab VII - Moon 4 - Amarr Navy Assembly Plant\" se=\"0.2\" si=\"60008380\" sy=\"Kenahehab\" syi=\"30004237\"/>\r\n    <row c=\"Afinoo\" ci=\"20000620\" r=\"Aridia\" ri=\"10000054\" s=\"Kenahehab IX - Moon 4 - Amarr Navy Assembly Plant\" se=\"0.2\" si=\"60008383\" sy=\"Kenahehab\" syi=\"30004237\"/>\r\n    <row c=\"Afinoo\" ci=\"20000620\" r=\"Aridia\" ri=\"10000054\" s=\"Kamih V - Amarr Navy Logistic Support\" se=\"0.2\" si=\"60008386\" sy=\"Kamih\" syi=\"30004239\"/>\r\n    <row c=\"Afinoo\" ci=\"20000620\" r=\"Aridia\" ri=\"10000054\" s=\"Kenahehab VI - Moon 11 - Amarr Navy Assembly Plant\" se=\"0.2\" si=\"60008389\" sy=\"Kenahehab\" syi=\"30004237\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"Diaderi VIII - Moon 4 - Amarr Navy Assembly Plant\" se=\"0.8\" si=\"60008392\" sy=\"Diaderi\" syi=\"30005229\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"Beke VI - Moon 4 - Amarr Navy Logistic Support\" se=\"0.3\" si=\"60008395\" sy=\"Beke\" syi=\"30005234\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"Diaderi II - Amarr Navy Assembly Plant\" se=\"0.8\" si=\"60008398\" sy=\"Diaderi\" syi=\"30005229\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"Pashanai III - Moon 2 - Amarr Navy Assembly Plant\" se=\"0.5\" si=\"60008401\" sy=\"Pashanai\" syi=\"30005231\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Hisoufad X - Moon 15 - Amarr Navy Assembly Plant\" se=\"0.7\" si=\"60008404\" sy=\"Hisoufad\" syi=\"30003531\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Jesoyeh IX - Moon 15 - Amarr Navy Testing Facilities\" se=\"0.7\" si=\"60008407\" sy=\"Jesoyeh\" syi=\"30003532\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Erzoh V - Moon 14 - Amarr Navy Testing Facilities\" se=\"0.5\" si=\"60008410\" sy=\"Erzoh\" syi=\"30003537\"/>\r\n    <row c=\"Qeti\" ci=\"20000515\" r=\"Domain\" ri=\"10000043\" s=\"Raravath IV - Amarr Navy Assembly Plant\" se=\"0.4\" si=\"60008413\" sy=\"Raravath\" syi=\"30003530\"/>\r\n    <row c=\"Mise\" ci=\"20000245\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Gyerzen IX - Moon 15 - Amarr Navy Testing Facilities\" se=\"0.4\" si=\"60008416\" sy=\"Gyerzen\" syi=\"30001661\"/>\r\n    <row c=\"Mise\" ci=\"20000245\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Dabrid IV - Moon 6 - Amarr Navy Assembly Plant\" se=\"0.6\" si=\"60008419\" sy=\"Dabrid\" syi=\"30001660\"/>\r\n    <row c=\"Mise\" ci=\"20000245\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Mani VII - Moon 10 - Amarr Navy Assembly Plant\" se=\"0.8\" si=\"60008422\" sy=\"Mani\" syi=\"30001658\"/>\r\n    <row c=\"Mise\" ci=\"20000245\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Gyerzen X - Moon 8 - Amarr Navy Testing Facilities\" se=\"0.4\" si=\"60008425\" sy=\"Gyerzen\" syi=\"30001661\"/>\r\n    <row c=\"Zemont\" ci=\"20000510\" r=\"Domain\" ri=\"10000043\" s=\"Nakri VI - Moon 1 - Amarr Navy Logistic Support\" se=\"0.8\" si=\"60008428\" sy=\"Nakri\" syi=\"30003496\"/>\r\n    <row c=\"Zemont\" ci=\"20000510\" r=\"Domain\" ri=\"10000043\" s=\"Youl VII - Moon 10 - Amarr Navy Logistic Support\" se=\"0.8\" si=\"60008431\" sy=\"Youl\" syi=\"30003493\"/>\r\n    <row c=\"Zemont\" ci=\"20000510\" r=\"Domain\" ri=\"10000043\" s=\"Sharhelund VI - Moon 3 - Amarr Navy Assembly Plant\" se=\"0.6\" si=\"60008434\" sy=\"Sharhelund\" syi=\"30003498\"/>\r\n    <row c=\"Zemont\" ci=\"20000510\" r=\"Domain\" ri=\"10000043\" s=\"Zaimeth IX - Moon 15 - Amarr Navy Assembly Plant\" se=\"0.5\" si=\"60008437\" sy=\"Zaimeth\" syi=\"30003497\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"Defsunun IX - Moon 15 - Amarr Navy Assembly Plant\" se=\"0.1\" si=\"60008440\" sy=\"Defsunun\" syi=\"30004284\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"Shafrak VIII - Moon 9 - Amarr Navy Assembly Plant\" se=\"0.2\" si=\"60008443\" sy=\"Shafrak\" syi=\"30004283\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"Nalnifan VI - Moon 3 - Amarr Navy Assembly Plant\" se=\"0.3\" si=\"60008446\" sy=\"Nalnifan\" syi=\"30004280\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"Yahyerer IV - Moon 9 - Amarr Navy Testing Facilities\" se=\"0.2\" si=\"60008449\" sy=\"Yahyerer\" syi=\"30004286\"/>\r\n    <row c=\"Finena\" ci=\"20000740\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Ordion VII - Moon 16 - Amarr Navy Testing Facilities\" se=\"0.5\" si=\"60008452\" sy=\"Ordion\" syi=\"30005060\"/>\r\n    <row c=\"Finena\" ci=\"20000740\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Shaha IV - Moon 1 - Amarr Navy Assembly Plant\" se=\"0.6\" si=\"60008455\" sy=\"Shaha\" syi=\"30005057\"/>\r\n    <row c=\"Finena\" ci=\"20000740\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Ordion IV - Moon 2 - Amarr Navy Testing Facilities\" se=\"0.5\" si=\"60008458\" sy=\"Ordion\" syi=\"30005060\"/>\r\n    <row c=\"Finena\" ci=\"20000740\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Misha IV - Moon 3 - Amarr Navy Assembly Plant\" se=\"0.5\" si=\"60008461\" sy=\"Misha\" syi=\"30005059\"/>\r\n    <row c=\"Parrosa\" ci=\"20000601\" r=\"Kador\" ri=\"10000052\" s=\"Finid X - Moon 1 - Amarr Navy Assembly Plant\" se=\"0.5\" si=\"60008464\" sy=\"Finid\" syi=\"30004110\"/>\r\n    <row c=\"Parrosa\" ci=\"20000601\" r=\"Kador\" ri=\"10000052\" s=\"Mandoo III - Moon 13 - Amarr Navy Testing Facilities\" se=\"0.5\" si=\"60008467\" sy=\"Mandoo\" syi=\"30004112\"/>\r\n    <row c=\"Parrosa\" ci=\"20000601\" r=\"Kador\" ri=\"10000052\" s=\"Yarebap VII - Moon 18 - Amarr Navy Assembly Plant\" se=\"0.5\" si=\"60008470\" sy=\"Yarebap\" syi=\"30004111\"/>\r\n    <row c=\"Parrosa\" ci=\"20000601\" r=\"Kador\" ri=\"10000052\" s=\"Yarebap VI - Moon 5 - Amarr Navy Assembly Plant\" se=\"0.5\" si=\"60008473\" sy=\"Yarebap\" syi=\"30004111\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Bapraya X - Moon 6 - Amarr Navy Assembly Plant\" se=\"0.3\" si=\"60008476\" sy=\"Bapraya\" syi=\"30004296\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Ghekon V - Moon 11 - Amarr Navy Logistic Support\" se=\"0.4\" si=\"60008479\" sy=\"Ghekon\" syi=\"30004288\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Bapraya XI - Moon 4 - Amarr Navy Logistic Support\" se=\"0.3\" si=\"60008482\" sy=\"Bapraya\" syi=\"30004296\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Ghekon IV - Moon 8 - Amarr Navy Assembly Plant\" se=\"0.4\" si=\"60008485\" sy=\"Ghekon\" syi=\"30004288\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Hedion V - Moon 9 - Court Chamberlain Bureau\" se=\"1.0\" si=\"60008488\" sy=\"Hedion\" syi=\"30002189\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Irnin VIII - Moon 8 - Court Chamberlain Bureau\" se=\"0.7\" si=\"60008491\" sy=\"Irnin\" syi=\"30002192\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Amarr VIII (Oris) - Emperor Family Academy\" se=\"1.0\" si=\"60008494\" sy=\"Amarr\" syi=\"30002187\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Kehour VIII - Moon 1 - Emperor Family Bureau\" se=\"0.9\" si=\"60008497\" sy=\"Kehour\" syi=\"30002193\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Mabnen IV - Moon 1 - Emperor Family Bureau\" se=\"0.9\" si=\"60008500\" sy=\"Mabnen\" syi=\"30002190\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Toshabia VI - Moon 6 - Emperor Family Bureau\" se=\"0.8\" si=\"60008503\" sy=\"Toshabia\" syi=\"30002191\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Aphend VII - Moon 4 - Emperor Family Academy\" se=\"0.6\" si=\"60008506\" sy=\"Aphend\" syi=\"30004079\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Hiroudeh VIII - Moon 3 - Emperor Family Bureau\" se=\"0.5\" si=\"60008509\" sy=\"Hiroudeh\" syi=\"30004077\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Gensela X - Emperor Family Bureau\" se=\"0.7\" si=\"60008512\" sy=\"Gensela\" syi=\"30004083\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Dresi I - Moon 18 - Emperor Family Bureau\" se=\"0.6\" si=\"60008515\" sy=\"Dresi\" syi=\"30004078\"/>\r\n    <row c=\"Mimishia\" ci=\"20000248\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Thashkarai VII - Moon 1 - Emperor Family Bureau\" se=\"0.6\" si=\"60008518\" sy=\"Thashkarai\" syi=\"30001677\"/>\r\n    <row c=\"Mimishia\" ci=\"20000248\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Mimen VIII - Emperor Family Bureau\" se=\"0.5\" si=\"60008521\" sy=\"Mimen\" syi=\"30001676\"/>\r\n    <row c=\"Mimishia\" ci=\"20000248\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Unkah VI - Moon 7 - Emperor Family Bureau\" se=\"0.6\" si=\"60008524\" sy=\"Unkah\" syi=\"30001679\"/>\r\n    <row c=\"Mimishia\" ci=\"20000248\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Mimen X - Emperor Family Bureau\" se=\"0.5\" si=\"60008527\" sy=\"Mimen\" syi=\"30001676\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"Akes V - Moon 2 - Emperor Family Academy\" se=\"0.8\" si=\"60008530\" sy=\"Akes\" syi=\"30002992\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"Riavayed IX - Moon 2 - Emperor Family Bureau\" se=\"0.6\" si=\"60008533\" sy=\"Riavayed\" syi=\"30002993\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"Nakatre II - Emperor Family Bureau\" se=\"0.6\" si=\"60008536\" sy=\"Nakatre\" syi=\"30002988\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"Riavayed II - Emperor Family Bureau\" se=\"0.6\" si=\"60008539\" sy=\"Riavayed\" syi=\"30002993\"/>\r\n    <row c=\"Jayai\" ci=\"20000436\" r=\"Devoid\" ri=\"10000036\" s=\"Arayar VII - Moon 16 - Emperor Family Bureau\" se=\"0.4\" si=\"60008542\" sy=\"Arayar\" syi=\"30002977\"/>\r\n    <row c=\"Jayai\" ci=\"20000436\" r=\"Devoid\" ri=\"10000036\" s=\"Sosan II - Emperor Family Academy\" se=\"0.3\" si=\"60008545\" sy=\"Sosan\" syi=\"30002980\"/>\r\n    <row c=\"Jayai\" ci=\"20000436\" r=\"Devoid\" ri=\"10000036\" s=\"Sosan III - Moon 4 - Emperor Family Academy\" se=\"0.3\" si=\"60008548\" sy=\"Sosan\" syi=\"30002980\"/>\r\n    <row c=\"Jayai\" ci=\"20000436\" r=\"Devoid\" ri=\"10000036\" s=\"Roushzar II - Emperor Family Bureau\" se=\"0.4\" si=\"60008551\" sy=\"Roushzar\" syi=\"30002975\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Soumi V - Moon 4 - Emperor Family Bureau\" se=\"0.6\" si=\"60008554\" sy=\"Soumi\" syi=\"30005052\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Soumi I - Moon 1 - Emperor Family Bureau\" se=\"0.6\" si=\"60008557\" sy=\"Soumi\" syi=\"30005052\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nare VI - Moon 16 - Emperor Family Bureau\" se=\"0.6\" si=\"60008560\" sy=\"Nare\" syi=\"30005054\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Soumi VII - Moon 1 - Emperor Family Bureau\" se=\"0.6\" si=\"60008563\" sy=\"Soumi\" syi=\"30005052\"/>\r\n    <row c=\"Afinoo\" ci=\"20000620\" r=\"Aridia\" ri=\"10000054\" s=\"Kamih VII - Moon 4 - Emperor Family Bureau\" se=\"0.2\" si=\"60008566\" sy=\"Kamih\" syi=\"30004239\"/>\r\n    <row c=\"Afinoo\" ci=\"20000620\" r=\"Aridia\" ri=\"10000054\" s=\"Hier IV - Moon 3 - Emperor Family Bureau\" se=\"0.4\" si=\"60008569\" sy=\"Hier\" syi=\"30004240\"/>\r\n    <row c=\"Afinoo\" ci=\"20000620\" r=\"Aridia\" ri=\"10000054\" s=\"Hier VII - Emperor Family Bureau\" se=\"0.4\" si=\"60008572\" sy=\"Hier\" syi=\"30004240\"/>\r\n    <row c=\"Afinoo\" ci=\"20000620\" r=\"Aridia\" ri=\"10000054\" s=\"Jasson I - Moon 4 - Emperor Family Bureau\" se=\"0.3\" si=\"60008575\" sy=\"Jasson\" syi=\"30004241\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Fensi V - Moon 1 - Emperor Family Bureau\" se=\"0.4\" si=\"60008578\" sy=\"Fensi\" syi=\"30005030\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Bridi II - Moon 1 - Emperor Family Academy\" se=\"0.4\" si=\"60008581\" sy=\"Bridi\" syi=\"30005034\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nebian VIII - Moon 4 - Emperor Family Bureau\" se=\"0.4\" si=\"60008584\" sy=\"Nebian\" syi=\"30005031\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Ami XI - Moon 1 - Emperor Family Bureau\" se=\"0.4\" si=\"60008587\" sy=\"Ami\" syi=\"30005035\"/>\r\n    <row c=\"Kihkounad\" ci=\"20000772\" r=\"Genesis\" ri=\"10000067\" s=\"Sharza VII - Moon 5 - Emperor Family Bureau\" se=\"0.3\" si=\"60008590\" sy=\"Sharza\" syi=\"30005276\"/>\r\n    <row c=\"Kihkounad\" ci=\"20000772\" r=\"Genesis\" ri=\"10000067\" s=\"Sharza VI - Moon 4 - Emperor Family Bureau\" se=\"0.3\" si=\"60008593\" sy=\"Sharza\" syi=\"30005276\"/>\r\n    <row c=\"Kihkounad\" ci=\"20000772\" r=\"Genesis\" ri=\"10000067\" s=\"Azedi III - Emperor Family Bureau\" se=\"0.3\" si=\"60008596\" sy=\"Azedi\" syi=\"30005275\"/>\r\n    <row c=\"Kihkounad\" ci=\"20000772\" r=\"Genesis\" ri=\"10000067\" s=\"Sharza VII - Moon 3 - Emperor Family Bureau\" se=\"0.3\" si=\"60008599\" sy=\"Sharza\" syi=\"30005276\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Leva XI - Moon 8 - Emperor Family Bureau\" se=\"0.6\" si=\"60008602\" sy=\"Leva\" syi=\"30005039\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nakregde VII - Moon 1 - Emperor Family Bureau\" se=\"0.8\" si=\"60008605\" sy=\"Nakregde\" syi=\"30005043\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nishah VII - Moon 5 - Emperor Family Treasury\" se=\"0.6\" si=\"60008608\" sy=\"Nishah\" syi=\"30005040\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Leva II - Emperor Family Bureau\" se=\"0.6\" si=\"60008611\" sy=\"Leva\" syi=\"30005039\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"Kador Prime VI - Moon 1 - Kador Family Bureau\" se=\"0.6\" si=\"60008614\" sy=\"Kador Prime\" syi=\"30004095\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"Khafis VII - Moon 3 - Kador Family Bureau\" se=\"0.6\" si=\"60008617\" sy=\"Khafis\" syi=\"30004096\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"Kador Prime I - Kador Family Bureau\" se=\"0.6\" si=\"60008620\" sy=\"Kador Prime\" syi=\"30004095\"/>\r\n    <row c=\"Kakol\" ci=\"20000597\" r=\"Kador\" ri=\"10000052\" s=\"Ghesis V - Moon 3 - Kador Family Bureau\" se=\"0.5\" si=\"60008623\" sy=\"Ghesis\" syi=\"30004084\"/>\r\n    <row c=\"Kakol\" ci=\"20000597\" r=\"Kador\" ri=\"10000052\" s=\"Gonan VI - Moon 12 - Kador Family Bureau\" se=\"0.5\" si=\"60008626\" sy=\"Gonan\" syi=\"30004087\"/>\r\n    <row c=\"Kakol\" ci=\"20000597\" r=\"Kador\" ri=\"10000052\" s=\"Gonan I - Moon 1 - Kador Family Bureau\" se=\"0.5\" si=\"60008629\" sy=\"Gonan\" syi=\"30004087\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"Shemah VIII - Moon 2 - Kador Family Bureau\" se=\"0.8\" si=\"60008632\" sy=\"Shemah\" syi=\"30004155\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"Ithar VI - Moon 14 - Kador Family Academy\" se=\"0.8\" si=\"60008635\" sy=\"Ithar\" syi=\"30004157\"/>\r\n    <row c=\"Qermi\" ci=\"20000608\" r=\"Kador\" ri=\"10000052\" s=\"Zorrabed IX - Moon 14 - Kador Family Academy\" se=\"0.8\" si=\"60008638\" sy=\"Zorrabed\" syi=\"30004160\"/>\r\n    <row c=\"Naloran\" ci=\"20000606\" r=\"Kador\" ri=\"10000052\" s=\"Hikansog VIII - Moon 16 - Kador Family Bureau\" se=\"0.8\" si=\"60008641\" sy=\"Hikansog\" syi=\"30004142\"/>\r\n    <row c=\"Naloran\" ci=\"20000606\" r=\"Kador\" ri=\"10000052\" s=\"Salah III - Kador Family Bureau\" se=\"0.8\" si=\"60008644\" sy=\"Salah\" syi=\"30004146\"/>\r\n    <row c=\"Naloran\" ci=\"20000606\" r=\"Kador\" ri=\"10000052\" s=\"Akhmoh VII - Moon 6 - Kador Family Academy\" se=\"0.8\" si=\"60008647\" sy=\"Akhmoh\" syi=\"30004147\"/>\r\n    <row c=\"Maddam\" ci=\"20000514\" r=\"Domain\" ri=\"10000043\" s=\"Sarum Prime VI - Moon 7 - Sarum Family Assembly Plant\" se=\"1.0\" si=\"60008650\" sy=\"Sarum Prime\" syi=\"30003522\"/>\r\n    <row c=\"Maddam\" ci=\"20000514\" r=\"Domain\" ri=\"10000043\" s=\"Bagodan VIII - Moon 6 - Sarum Family Logistic Support\" se=\"0.7\" si=\"60008653\" sy=\"Bagodan\" syi=\"30003525\"/>\r\n    <row c=\"Maddam\" ci=\"20000514\" r=\"Domain\" ri=\"10000043\" s=\"Alkabsi V - Sarum Family Logistic Support\" se=\"0.7\" si=\"60008656\" sy=\"Alkabsi\" syi=\"30003521\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Sayartchen V - Moon 2 - Sarum Family Logistic Support\" se=\"0.8\" si=\"60008659\" sy=\"Sayartchen\" syi=\"30003508\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Abaim V - Moon 1 - Sarum Family Assembly Plant\" se=\"0.8\" si=\"60008662\" sy=\"Abaim\" syi=\"30003512\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Gosalav VI - Sarum Family Logistic Support\" se=\"0.7\" si=\"60008665\" sy=\"Gosalav\" syi=\"30003509\"/>\r\n    <row c=\"Zemont\" ci=\"20000510\" r=\"Domain\" ri=\"10000043\" s=\"Ekid X - Sarum Family Logistic Support\" se=\"0.7\" si=\"60008668\" sy=\"Ekid\" syi=\"30003494\"/>\r\n    <row c=\"Zemont\" ci=\"20000510\" r=\"Domain\" ri=\"10000043\" s=\"Nakri V - Moon 5 - Sarum Family Assembly Plant\" se=\"0.8\" si=\"60008671\" sy=\"Nakri\" syi=\"30003496\"/>\r\n    <row c=\"Zemont\" ci=\"20000510\" r=\"Domain\" ri=\"10000043\" s=\"Sharhelund VIII - Moon 5 - Sarum Family Assembly Plant\" se=\"0.6\" si=\"60008674\" sy=\"Sharhelund\" syi=\"30003498\"/>\r\n    <row c=\"Mofa\" ci=\"20000516\" r=\"Domain\" ri=\"10000043\" s=\"Faswiba IX - Moon 8 - Sarum Family Assembly Plant\" se=\"0.4\" si=\"60008677\" sy=\"Faswiba\" syi=\"30003541\"/>\r\n    <row c=\"Mofa\" ci=\"20000516\" r=\"Domain\" ri=\"10000043\" s=\"Faswiba VIII - Moon 11 - Sarum Family Assembly Plant\" se=\"0.4\" si=\"60008680\" sy=\"Faswiba\" syi=\"30003541\"/>\r\n    <row c=\"Mofa\" ci=\"20000516\" r=\"Domain\" ri=\"10000043\" s=\"Zanka V - Moon 9 - Sarum Family Testing Facilities\" se=\"0.4\" si=\"60008683\" sy=\"Zanka\" syi=\"30003543\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Kor-Azor Prime IV (Eclipticum) - Moon Griklaeum - Kor-Azor Family Bureau\" se=\"0.9\" si=\"60008686\" sy=\"Kor-Azor Prime\" syi=\"30005038\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nishah VII - Moon 5 - Kor-Azor Family Treasury\" se=\"0.6\" si=\"60008689\" sy=\"Nishah\" syi=\"30005040\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Kor-Azor Prime II - Kor-Azor Family Bureau\" se=\"0.9\" si=\"60008692\" sy=\"Kor-Azor Prime\" syi=\"30005038\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nahyeen VIII - Moon 1 - Kor-Azor Family Bureau\" se=\"0.8\" si=\"60008695\" sy=\"Nahyeen\" syi=\"30005045\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Danyana VI - Moon 8 - Kor-Azor Family Bureau\" se=\"0.8\" si=\"60008698\" sy=\"Danyana\" syi=\"30005044\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nahyeen IX - Moon 3 - Kor-Azor Family Bureau\" se=\"0.8\" si=\"60008701\" sy=\"Nahyeen\" syi=\"30005045\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Enal VIII - Moon 13 - Kor-Azor Family Bureau\" se=\"0.4\" si=\"60008704\" sy=\"Enal\" syi=\"30005082\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Ranni VIII - Moon 5 - Kor-Azor Family Academy\" se=\"0.4\" si=\"60008707\" sy=\"Ranni\" syi=\"30005085\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Ranni VIII - Moon 6 - Kor-Azor Family Bureau\" se=\"0.4\" si=\"60008710\" sy=\"Ranni\" syi=\"30005085\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Ami X - Moon 17 - Kor-Azor Family Bureau\" se=\"0.4\" si=\"60008713\" sy=\"Ami\" syi=\"30005035\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nebian V - Moon 14 - Kor-Azor Family Bureau\" se=\"0.4\" si=\"60008716\" sy=\"Nebian\" syi=\"30005031\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Khabara VII - Moon 12 - Kor-Azor Family Bureau\" se=\"0.3\" si=\"60008719\" sy=\"Khabara\" syi=\"30005032\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"Ardishapur Prime IX - Moon 17 - Ardishapur Family Bureau\" se=\"0.7\" si=\"60008722\" sy=\"Ardishapur Prime\" syi=\"30002231\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"Dakba I - Ardishapur Family Academy\" se=\"0.7\" si=\"60008725\" sy=\"Dakba\" syi=\"30002233\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"Dakba VII - Ardishapur Family Treasury\" se=\"0.7\" si=\"60008728\" sy=\"Dakba\" syi=\"30002233\"/>\r\n    <row c=\"Kehina\" ci=\"20000331\" r=\"Domain\" ri=\"10000043\" s=\"Sahdil III - Moon 1 - Ardishapur Family Bureau\" se=\"0.7\" si=\"60008731\" sy=\"Sahdil\" syi=\"30002259\"/>\r\n    <row c=\"Kehina\" ci=\"20000331\" r=\"Domain\" ri=\"10000043\" s=\"Nalu X - Moon 4 - Ardishapur Family Academy\" se=\"0.6\" si=\"60008734\" sy=\"Nalu\" syi=\"30002262\"/>\r\n    <row c=\"Kehina\" ci=\"20000331\" r=\"Domain\" ri=\"10000043\" s=\"Nalu X - Moon 1 - Ardishapur Family Treasury\" se=\"0.6\" si=\"60008737\" sy=\"Nalu\" syi=\"30002262\"/>\r\n    <row c=\"Mazake\" ci=\"20000325\" r=\"Domain\" ri=\"10000043\" s=\"Joppaya IX - Moon 9 - Ardishapur Family Bureau\" se=\"0.5\" si=\"60008740\" sy=\"Joppaya\" syi=\"30002210\"/>\r\n    <row c=\"Mazake\" ci=\"20000325\" r=\"Domain\" ri=\"10000043\" s=\"Sakhti VIII - Moon 5 - Ardishapur Family Bureau\" se=\"0.5\" si=\"60008743\" sy=\"Sakhti\" syi=\"30002215\"/>\r\n    <row c=\"Mazake\" ci=\"20000325\" r=\"Domain\" ri=\"10000043\" s=\"Aldali VI - Moon 1 - Ardishapur Family Bureau\" se=\"0.4\" si=\"60008746\" sy=\"Aldali\" syi=\"30002216\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Narai III - Moon 1 - Ardishapur Family Bureau\" se=\"0.5\" si=\"60008749\" sy=\"Narai\" syi=\"30002202\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Bashakru VII - Moon 5 - Ardishapur Family Bureau\" se=\"0.6\" si=\"60008752\" sy=\"Bashakru\" syi=\"30002199\"/>\r\n    <row c=\"Mobit\" ci=\"20000323\" r=\"Domain\" ri=\"10000043\" s=\"Shuria XI - Moon 2 - Ardishapur Family Bureau\" se=\"0.5\" si=\"60008755\" sy=\"Shuria\" syi=\"30002201\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Tash-Murkon Prime V - Moon 5 - Tash-Murkon Family Bureau\" se=\"0.8\" si=\"60008758\" sy=\"Tash-Murkon Prime\" syi=\"30001671\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hilaban II - Moon 7 - Tash-Murkon Family Academy\" se=\"0.9\" si=\"60008761\" sy=\"Hilaban\" syi=\"30001674\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Tash-Murkon Prime V - Moon 1 - Tash-Murkon Family Bureau\" se=\"0.8\" si=\"60008764\" sy=\"Tash-Murkon Prime\" syi=\"30001671\"/>\r\n    <row c=\"Somi\" ci=\"20000244\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Nafomeh VIII - Moon 2 - Tash-Murkon Family Bureau\" se=\"0.7\" si=\"60008767\" sy=\"Nafomeh\" syi=\"30001651\"/>\r\n    <row c=\"Somi\" ci=\"20000244\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Matyas V - Moon 8 - Tash-Murkon Family Bureau\" se=\"0.6\" si=\"60008770\" sy=\"Matyas\" syi=\"30001654\"/>\r\n    <row c=\"Somi\" ci=\"20000244\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Nafomeh VII - Moon 18 - Tash-Murkon Family Bureau\" se=\"0.7\" si=\"60008773\" sy=\"Nafomeh\" syi=\"30001651\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Asesamy VI - Moon 13 - Tash-Murkon Family Academy\" se=\"0.6\" si=\"60008776\" sy=\"Asesamy\" syi=\"30001689\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Onazel VII - Moon 2 - Tash-Murkon Family Bureau\" se=\"0.7\" si=\"60008779\" sy=\"Onazel\" syi=\"30001688\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hostni VII - Moon 8 - Tash-Murkon Family Bureau\" se=\"0.8\" si=\"60008782\" sy=\"Hostni\" syi=\"30001690\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Siyi VI - Tash-Murkon Family Academy\" se=\"0.5\" si=\"60008785\" sy=\"Siyi\" syi=\"30001699\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Siyi IV - Moon 14 - Tash-Murkon Family Treasury\" se=\"0.5\" si=\"60008788\" sy=\"Siyi\" syi=\"30001699\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Siyi V - Moon 2 - Tash-Murkon Family Treasury\" se=\"0.5\" si=\"60008791\" sy=\"Siyi\" syi=\"30001699\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Dresi I - Moon 3 - Civic Court Accounting\" se=\"0.6\" si=\"60008794\" sy=\"Dresi\" syi=\"30004078\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Dresi I - Moon 17 - Civic Court Tribunal\" se=\"0.6\" si=\"60008797\" sy=\"Dresi\" syi=\"30004078\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Aphend VII - Moon 4 - Civic Court Accounting\" se=\"0.6\" si=\"60008800\" sy=\"Aphend\" syi=\"30004079\"/>\r\n    <row c=\"Megeh\" ci=\"20000596\" r=\"Kador\" ri=\"10000052\" s=\"Hiroudeh VIII - Moon 2 - Civic Court Tribunal\" se=\"0.5\" si=\"60008803\" sy=\"Hiroudeh\" syi=\"30004077\"/>\r\n    <row c=\"Naloran\" ci=\"20000606\" r=\"Kador\" ri=\"10000052\" s=\"Akhmoh IX - Civic Court Accounting\" se=\"0.8\" si=\"60008806\" sy=\"Akhmoh\" syi=\"30004147\"/>\r\n    <row c=\"Naloran\" ci=\"20000606\" r=\"Kador\" ri=\"10000052\" s=\"Akhmoh V - Moon 14 - Civic Court Law School\" se=\"0.8\" si=\"60008809\" sy=\"Akhmoh\" syi=\"30004147\"/>\r\n    <row c=\"Naloran\" ci=\"20000606\" r=\"Kador\" ri=\"10000052\" s=\"Salah V - Moon 1 - Civic Court Law School\" se=\"0.8\" si=\"60008812\" sy=\"Salah\" syi=\"30004146\"/>\r\n    <row c=\"Naloran\" ci=\"20000606\" r=\"Kador\" ri=\"10000052\" s=\"Hikansog VIII - Moon 12 - Civic Court Tribunal\" se=\"0.8\" si=\"60008815\" sy=\"Hikansog\" syi=\"30004142\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"Pamah IV - Moon 14 - Civic Court Accounting\" se=\"0.5\" si=\"60008818\" sy=\"Pamah\" syi=\"30005232\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"Pashanai V - Moon 12 - Civic Court Accounting\" se=\"0.5\" si=\"60008821\" sy=\"Pashanai\" syi=\"30005231\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"Leran VI - Civic Court Accounting\" se=\"0.4\" si=\"60008824\" sy=\"Leran\" syi=\"30005233\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"Pamah IV - Moon 10 - Civic Court Tribunal\" se=\"0.5\" si=\"60008827\" sy=\"Pamah\" syi=\"30005232\"/>\r\n    <row c=\"Helab\" ci=\"20000625\" r=\"Aridia\" ri=\"10000054\" s=\"Soliara IX - Moon 18 - Civic Court Tribunal\" se=\"0.2\" si=\"60008830\" sy=\"Soliara\" syi=\"30004273\"/>\r\n    <row c=\"Helab\" ci=\"20000625\" r=\"Aridia\" ri=\"10000054\" s=\"Ajna VIII - Moon 5 - Civic Court Accounting\" se=\"0.2\" si=\"60008833\" sy=\"Ajna\" syi=\"30004277\"/>\r\n    <row c=\"Helab\" ci=\"20000625\" r=\"Aridia\" ri=\"10000054\" s=\"Soliara VII - Moon 7 - Civic Court Tribunal\" se=\"0.2\" si=\"60008836\" sy=\"Soliara\" syi=\"30004273\"/>\r\n    <row c=\"Helab\" ci=\"20000625\" r=\"Aridia\" ri=\"10000054\" s=\"Fageras X - Civic Court Accounting\" se=\"0.1\" si=\"60008839\" sy=\"Fageras\" syi=\"30004276\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Vaini I - Moon 1 - Civic Court Law School\" se=\"0.2\" si=\"60008842\" sy=\"Vaini\" syi=\"30004289\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Pserz XII - Moon 4 - Civic Court Tribunal\" se=\"0.4\" si=\"60008845\" sy=\"Pserz\" syi=\"30004293\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Bapraya XI - Moon 1 - Civic Court Tribunal\" se=\"0.3\" si=\"60008848\" sy=\"Bapraya\" syi=\"30004296\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Ghekon IV - Moon 20 - Civic Court Accounting\" se=\"0.4\" si=\"60008851\" sy=\"Ghekon\" syi=\"30004288\"/>\r\n    <row c=\"Parrosa\" ci=\"20000601\" r=\"Kador\" ri=\"10000052\" s=\"Yarebap VII - Moon 8 - Civic Court Tribunal\" se=\"0.5\" si=\"60008854\" sy=\"Yarebap\" syi=\"30004111\"/>\r\n    <row c=\"Parrosa\" ci=\"20000601\" r=\"Kador\" ri=\"10000052\" s=\"Kamda XII - Civic Court Tribunal\" se=\"0.6\" si=\"60008857\" sy=\"Kamda\" syi=\"30004115\"/>\r\n    <row c=\"Parrosa\" ci=\"20000601\" r=\"Kador\" ri=\"10000052\" s=\"Miah IV - Civic Court Tribunal\" se=\"0.6\" si=\"60008860\" sy=\"Miah\" syi=\"30004113\"/>\r\n    <row c=\"Parrosa\" ci=\"20000601\" r=\"Kador\" ri=\"10000052\" s=\"Miah VII - Moon 3 - Civic Court Law School\" se=\"0.6\" si=\"60008863\" sy=\"Miah\" syi=\"30004113\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Khopa IX - Moon 14 - Civic Court Tribunal\" se=\"0.8\" si=\"60008866\" sy=\"Khopa\" syi=\"30003490\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Penirgman IX - Moon 6 - Civic Court Tribunal\" se=\"0.9\" si=\"60008869\" sy=\"Penirgman\" syi=\"30003488\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Arbaz IV - Moon 11 - Civic Court Tribunal\" se=\"0.9\" si=\"60008872\" sy=\"Arbaz\" syi=\"30003487\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Ashab VII - Moon 16 - Civic Court Accounting\" se=\"0.9\" si=\"60008875\" sy=\"Ashab\" syi=\"30003491\"/>\r\n    <row c=\"Emsek\" ci=\"20000246\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Chamume III - Civic Court Law School\" se=\"0.3\" si=\"60008878\" sy=\"Chamume\" syi=\"30001664\"/>\r\n    <row c=\"Emsek\" ci=\"20000246\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hibi VI - Moon 5 - Civic Court Tribunal\" se=\"0.5\" si=\"60008881\" sy=\"Hibi\" syi=\"30001662\"/>\r\n    <row c=\"Emsek\" ci=\"20000246\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Chamume V - Moon 7 - Civic Court Accounting\" se=\"0.3\" si=\"60008884\" sy=\"Chamume\" syi=\"30001664\"/>\r\n    <row c=\"Emsek\" ci=\"20000246\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Yong VII - Moon 6 - Civic Court Accounting\" se=\"0.3\" si=\"60008887\" sy=\"Yong\" syi=\"30001668\"/>\r\n    <row c=\"Selonat\" ci=\"20000629\" r=\"Aridia\" ri=\"10000054\" s=\"Hophib III - Civic Court Law School\" se=\"0.1\" si=\"60008890\" sy=\"Hophib\" syi=\"30004309\"/>\r\n    <row c=\"Selonat\" ci=\"20000629\" r=\"Aridia\" ri=\"10000054\" s=\"Huna III - Civic Court Law School\" se=\"0.1\" si=\"60008893\" sy=\"Huna\" syi=\"30004304\"/>\r\n    <row c=\"Selonat\" ci=\"20000629\" r=\"Aridia\" ri=\"10000054\" s=\"Hophib VI - Moon 2 - Civic Court Law School\" se=\"0.1\" si=\"60008896\" sy=\"Hophib\" syi=\"30004309\"/>\r\n    <row c=\"Selonat\" ci=\"20000629\" r=\"Aridia\" ri=\"10000054\" s=\"Fobiner VII - Moon 13 - Civic Court Tribunal\" se=\"0.2\" si=\"60008899\" sy=\"Fobiner\" syi=\"30004303\"/>\r\n    <row c=\"Kabo\" ci=\"20000437\" r=\"Devoid\" ri=\"10000036\" s=\"Ibash V - Moon 7 - Civic Court Accounting\" se=\"0.2\" si=\"60008902\" sy=\"Ibash\" syi=\"30002984\"/>\r\n    <row c=\"Kabo\" ci=\"20000437\" r=\"Devoid\" ri=\"10000036\" s=\"Rahadalon VI - Moon 3 - Civic Court Accounting\" se=\"0.4\" si=\"60008905\" sy=\"Rahadalon\" syi=\"30002982\"/>\r\n    <row c=\"Kabo\" ci=\"20000437\" r=\"Devoid\" ri=\"10000036\" s=\"Ussad VI - Moon 7 - Civic Court Accounting\" se=\"0.2\" si=\"60008908\" sy=\"Ussad\" syi=\"30002987\"/>\r\n    <row c=\"Kabo\" ci=\"20000437\" r=\"Devoid\" ri=\"10000036\" s=\"Rahadalon VI - Moon 4 - Civic Court Accounting\" se=\"0.4\" si=\"60008911\" sy=\"Rahadalon\" syi=\"30002982\"/>\r\n    <row c=\"Liela\" ci=\"20000333\" r=\"Domain\" ri=\"10000043\" s=\"Avair VII - Moon 25 - Theology Council Tribunal\" se=\"0.4\" si=\"60008914\" sy=\"Avair\" syi=\"30002270\"/>\r\n    <row c=\"Liela\" ci=\"20000333\" r=\"Domain\" ri=\"10000043\" s=\"Asoutar V - Moon 5 - Theology Council Accounting\" se=\"0.3\" si=\"60008917\" sy=\"Asoutar\" syi=\"30002272\"/>\r\n    <row c=\"Liela\" ci=\"20000333\" r=\"Domain\" ri=\"10000043\" s=\"Ebo IX - Theology Council Tribunal\" se=\"0.5\" si=\"60008920\" sy=\"Ebo\" syi=\"30002269\"/>\r\n    <row c=\"Liela\" ci=\"20000333\" r=\"Domain\" ri=\"10000043\" s=\"Clarelam I - Theology Council Law School\" se=\"0.5\" si=\"60008923\" sy=\"Clarelam\" syi=\"30002275\"/>\r\n    <row c=\"Nashar\" ci=\"20000330\" r=\"Domain\" ri=\"10000043\" s=\"Jerma VIII - Moon 3 - Theology Council Tribunal\" se=\"0.5\" si=\"60008926\" sy=\"Jerma\" syi=\"30002254\"/>\r\n    <row c=\"Nashar\" ci=\"20000330\" r=\"Domain\" ri=\"10000043\" s=\"Jerma VI - Moon 12 - Theology Council Tribunal\" se=\"0.5\" si=\"60008929\" sy=\"Jerma\" syi=\"30002254\"/>\r\n    <row c=\"Nashar\" ci=\"20000330\" r=\"Domain\" ri=\"10000043\" s=\"Bika II - Theology Council Law School\" se=\"0.5\" si=\"60008932\" sy=\"Bika\" syi=\"30002252\"/>\r\n    <row c=\"Nashar\" ci=\"20000330\" r=\"Domain\" ri=\"10000043\" s=\"Arshat VII - Moon 4 - Theology Council Law School\" se=\"0.6\" si=\"60008935\" sy=\"Arshat\" syi=\"30002253\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Ashab VIII - Moon 10 - Theology Council Tribunal\" se=\"0.9\" si=\"60008938\" sy=\"Ashab\" syi=\"30003491\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Arbaz VI - Moon 8 - Theology Council Tribunal\" se=\"0.9\" si=\"60008941\" sy=\"Arbaz\" syi=\"30003487\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Penirgman VIII - Moon 2 - Theology Council Tribunal\" se=\"0.9\" si=\"60008944\" sy=\"Penirgman\" syi=\"30003488\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Penirgman V - Moon 1 - Theology Council Tribunal\" se=\"0.9\" si=\"60008947\" sy=\"Penirgman\" syi=\"30003488\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Amarr VI (Zorast) - Moon 2 - Theology Council Tribunal\" se=\"1.0\" si=\"60008950\" sy=\"Amarr\" syi=\"30002187\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Toshabia VII - Moon 5 - Theology Council Tribunal\" se=\"0.8\" si=\"60008953\" sy=\"Toshabia\" syi=\"30002191\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Boranai VII - Moon 9 - Theology Council Law School\" se=\"0.9\" si=\"60008956\" sy=\"Boranai\" syi=\"30002188\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Toshabia I - Theology Council Tribunal\" se=\"0.8\" si=\"60008959\" sy=\"Toshabia\" syi=\"30002191\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Kothe VI - Moon 15 - Theology Council Accounting\" se=\"0.6\" si=\"60008962\" sy=\"Kothe\" syi=\"30004103\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Inis-Ilix I - Theology Council Accounting\" se=\"0.9\" si=\"60008965\" sy=\"Inis-Ilix\" syi=\"30004102\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Inis-Ilix II - Moon 1 - Theology Council Law School\" se=\"0.9\" si=\"60008968\" sy=\"Inis-Ilix\" syi=\"30004102\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Inis-Ilix VI - Theology Council Accounting\" se=\"0.9\" si=\"60008971\" sy=\"Inis-Ilix\" syi=\"30004102\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Onazel IX - Theology Council Accounting\" se=\"0.7\" si=\"60008974\" sy=\"Onazel\" syi=\"30001688\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hostni VII - Moon 11 - Theology Council Tribunal\" se=\"0.8\" si=\"60008977\" sy=\"Hostni\" syi=\"30001690\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Onazel VII - Theology Council Tribunal\" se=\"0.7\" si=\"60008980\" sy=\"Onazel\" syi=\"30001688\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hostni VII - Moon 14 - Theology Council Tribunal\" se=\"0.8\" si=\"60008983\" sy=\"Hostni\" syi=\"30001690\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Gheth VII - Moon 12 - Theology Council Law School\" se=\"0.6\" si=\"60008986\" sy=\"Gheth\" syi=\"30002972\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Sasoutikh V - Moon 11 - Theology Council Accounting\" se=\"0.6\" si=\"60008989\" sy=\"Sasoutikh\" syi=\"30002971\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Lisudeh IV - Moon 4 - Theology Council Tribunal\" se=\"0.8\" si=\"60008992\" sy=\"Lisudeh\" syi=\"30002973\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Eredan VII - Moon 1 - Theology Council Accounting\" se=\"0.7\" si=\"60008995\" sy=\"Eredan\" syi=\"30002969\"/>\r\n    <row c=\"Avib\" ci=\"20000332\" r=\"Domain\" ri=\"10000043\" s=\"Jarshitsan VIII - Moon 8 - Theology Council Tribunal\" se=\"0.6\" si=\"60008998\" sy=\"Jarshitsan\" syi=\"30002263\"/>\r\n    <row c=\"Avib\" ci=\"20000332\" r=\"Domain\" ri=\"10000043\" s=\"Adia VI - Moon 8 - Theology Council Accounting\" se=\"0.7\" si=\"60009001\" sy=\"Adia\" syi=\"30002268\"/>\r\n    <row c=\"Avib\" ci=\"20000332\" r=\"Domain\" ri=\"10000043\" s=\"Jarshitsan VI - Moon 1 - Theology Council Tribunal\" se=\"0.6\" si=\"60009004\" sy=\"Jarshitsan\" syi=\"30002263\"/>\r\n    <row c=\"Avib\" ci=\"20000332\" r=\"Domain\" ri=\"10000043\" s=\"Azizora V - Moon 17 - Theology Council Tribunal\" se=\"0.6\" si=\"60009007\" sy=\"Azizora\" syi=\"30002265\"/>\r\n    <row c=\"Ahrnot\" ci=\"20000604\" r=\"Kador\" ri=\"10000052\" s=\"Hostakoh VI - Moon 2 - Theology Council Tribunal\" se=\"0.6\" si=\"60009010\" sy=\"Hostakoh\" syi=\"30004130\"/>\r\n    <row c=\"Ahrnot\" ci=\"20000604\" r=\"Kador\" ri=\"10000052\" s=\"Kasi V - Moon 9 - Theology Council Tribunal\" se=\"0.8\" si=\"60009013\" sy=\"Kasi\" syi=\"30004134\"/>\r\n    <row c=\"Ahrnot\" ci=\"20000604\" r=\"Kador\" ri=\"10000052\" s=\"Kasi V - Moon 5 - Theology Council Tribunal\" se=\"0.8\" si=\"60009016\" sy=\"Kasi\" syi=\"30004134\"/>\r\n    <row c=\"Ahrnot\" ci=\"20000604\" r=\"Kador\" ri=\"10000052\" s=\"Hilmar VII - Moon 17 - Theology Council Tribunal\" se=\"0.8\" si=\"60009019\" sy=\"Hilmar\" syi=\"30004133\"/>\r\n    <row c=\"Mih\" ci=\"20000764\" r=\"Genesis\" ri=\"10000067\" s=\"Alal VII - Moon 17 - Theology Council Tribunal\" se=\"0.4\" si=\"60009022\" sy=\"Alal\" syi=\"30005225\"/>\r\n    <row c=\"Mih\" ci=\"20000764\" r=\"Genesis\" ri=\"10000067\" s=\"Alal VII - Moon 14 - Theology Council Tribunal\" se=\"0.4\" si=\"60009025\" sy=\"Alal\" syi=\"30005225\"/>\r\n    <row c=\"Mih\" ci=\"20000764\" r=\"Genesis\" ri=\"10000067\" s=\"Assez VIII - Moon 21 - Theology Council Tribunal\" se=\"0.4\" si=\"60009028\" sy=\"Assez\" syi=\"30005224\"/>\r\n    <row c=\"Mih\" ci=\"20000764\" r=\"Genesis\" ri=\"10000067\" s=\"Zoohen III - Theology Council Tribunal\" se=\"0.5\" si=\"60009031\" sy=\"Zoohen\" syi=\"30005221\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Doussivitte VIII - Moon 20 - TransStellar Shipping Storage\" se=\"0.8\" si=\"60009034\" sy=\"Doussivitte\" syi=\"30002706\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Stetille VII - Moon 3 - TransStellar Shipping Storage\" se=\"0.9\" si=\"60009037\" sy=\"Stetille\" syi=\"30002711\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Adiere X - TransStellar Shipping Storage\" se=\"0.8\" si=\"60009040\" sy=\"Adiere\" syi=\"30002710\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Auberulle V - TransStellar Shipping Storage\" se=\"0.8\" si=\"60009043\" sy=\"Auberulle\" syi=\"30002709\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Stetille V - Moon 1 - TransStellar Shipping Storage\" se=\"0.9\" si=\"60009046\" sy=\"Stetille\" syi=\"30002711\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Doussivitte X - TransStellar Shipping Storage\" se=\"0.8\" si=\"60009049\" sy=\"Doussivitte\" syi=\"30002706\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"Archavoinet II - Moon 17 - TransStellar Shipping Storage\" se=\"0.6\" si=\"60009052\" sy=\"Archavoinet\" syi=\"30003824\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"Frarie VIII - Moon 3 - TransStellar Shipping Storage\" se=\"0.4\" si=\"60009055\" sy=\"Frarie\" syi=\"30003826\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"Frarie VIII - Moon 2 - TransStellar Shipping Storage\" se=\"0.4\" si=\"60009058\" sy=\"Frarie\" syi=\"30003826\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"Frarie IX - Moon 12 - TransStellar Shipping Storage\" se=\"0.4\" si=\"60009061\" sy=\"Frarie\" syi=\"30003826\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"Moclinamaud VIII - Moon 11 - TransStellar Shipping Storage\" se=\"0.4\" si=\"60009064\" sy=\"Moclinamaud\" syi=\"30003828\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"Archavoinet II - Moon 7 - TransStellar Shipping Storage\" se=\"0.6\" si=\"60009067\" sy=\"Archavoinet\" syi=\"30003824\"/>\r\n    <row c=\"Anidaza\" ci=\"20000254\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Saminer IX - TransStellar Shipping Storage\" se=\"0.3\" si=\"60009070\" sy=\"Saminer\" syi=\"30001721\"/>\r\n    <row c=\"Anidaza\" ci=\"20000254\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Paye IX - Moon 1 - TransStellar Shipping Storage\" se=\"0.6\" si=\"60009073\" sy=\"Paye\" syi=\"30001718\"/>\r\n    <row c=\"Anidaza\" ci=\"20000254\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Paye VI - Moon 14 - TransStellar Shipping Storage\" se=\"0.6\" si=\"60009076\" sy=\"Paye\" syi=\"30001718\"/>\r\n    <row c=\"Anidaza\" ci=\"20000254\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Goni VI - TransStellar Shipping Storage\" se=\"0.8\" si=\"60009079\" sy=\"Goni\" syi=\"30001716\"/>\r\n    <row c=\"Anidaza\" ci=\"20000254\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Sagain VIII - Moon 11 - TransStellar Shipping Storage\" se=\"0.4\" si=\"60009082\" sy=\"Sagain\" syi=\"30001719\"/>\r\n    <row c=\"Anidaza\" ci=\"20000254\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Paye VII - Moon 4 - TransStellar Shipping Storage\" se=\"0.6\" si=\"60009085\" sy=\"Paye\" syi=\"30001718\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Floseswin IX - Moon 5 - TransStellar Shipping Storage\" se=\"0.4\" si=\"60009088\" sy=\"Floseswin\" syi=\"30002082\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Avenod VIII - Moon 17 - TransStellar Shipping Storage\" se=\"0.4\" si=\"60009091\" sy=\"Avenod\" syi=\"30002089\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Aset II - Moon 1 - TransStellar Shipping Storage\" se=\"0.4\" si=\"60009094\" sy=\"Aset\" syi=\"30002084\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Floseswin VIII - Moon 2 - TransStellar Shipping Storage\" se=\"0.4\" si=\"60009097\" sy=\"Floseswin\" syi=\"30002082\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Uisper V - Moon 2 - TransStellar Shipping Storage\" se=\"0.4\" si=\"60009100\" sy=\"Uisper\" syi=\"30002083\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Vimeini VI - Moon 4 - TransStellar Shipping Storage\" se=\"0.4\" si=\"60009103\" sy=\"Vimeini\" syi=\"30002088\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Rens VIII - Moon 3 - TransStellar Shipping Storage\" se=\"0.9\" si=\"60009106\" sy=\"Rens\" syi=\"30002510\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Odatrik IX - Moon 2 - Urban Management Storage\" se=\"0.8\" si=\"60009109\" sy=\"Odatrik\" syi=\"30002509\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Odatrik V - Moon 1 - TransStellar Shipping Storage\" se=\"0.8\" si=\"60009112\" sy=\"Odatrik\" syi=\"30002509\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Odatrik VIII - Moon 3 - TransStellar Shipping Storage\" se=\"0.8\" si=\"60009115\" sy=\"Odatrik\" syi=\"30002509\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Trytedald VII - Moon 19 - TransStellar Shipping Storage\" se=\"0.9\" si=\"60009118\" sy=\"Trytedald\" syi=\"30002508\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Abudban VIII - Moon 19 - TransStellar Shipping Storage\" se=\"0.7\" si=\"60009121\" sy=\"Abudban\" syi=\"30002507\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Vivanier I - TransStellar Shipping Storage\" se=\"0.5\" si=\"60009124\" sy=\"Vivanier\" syi=\"30003810\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Vivanier VII - Moon 19 - TransStellar Shipping Storage\" se=\"0.5\" si=\"60009127\" sy=\"Vivanier\" syi=\"30003810\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Vivanier VII - Moon 4 - TransStellar Shipping Storage\" se=\"0.5\" si=\"60009130\" sy=\"Vivanier\" syi=\"30003810\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Algasienan VII - Moon 3 - TransStellar Shipping Storage\" se=\"0.7\" si=\"60009133\" sy=\"Algasienan\" syi=\"30003811\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Vivanier VI - Moon 1 - TransStellar Shipping Storage\" se=\"0.5\" si=\"60009136\" sy=\"Vivanier\" syi=\"30003810\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Vivanier VII - Moon 3 - TransStellar Shipping Storage\" se=\"0.5\" si=\"60009139\" sy=\"Vivanier\" syi=\"30003810\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"Kador Prime VII - Moon 1 - TransStellar Shipping Storage\" se=\"0.6\" si=\"60009142\" sy=\"Kador Prime\" syi=\"30004095\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"Kador Prime II - TransStellar Shipping Storage\" se=\"0.6\" si=\"60009145\" sy=\"Kador Prime\" syi=\"30004095\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"Nordar III - TransStellar Shipping Storage\" se=\"0.6\" si=\"60009148\" sy=\"Nordar\" syi=\"30004094\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"Kador Prime VIII - Moon 1 - TransStellar Shipping Storage\" se=\"0.6\" si=\"60009151\" sy=\"Kador Prime\" syi=\"30004095\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"Khafis VII - Moon 8 - TransStellar Shipping Storage\" se=\"0.6\" si=\"60009154\" sy=\"Khafis\" syi=\"30004096\"/>\r\n    <row c=\"Febihkin\" ci=\"20000598\" r=\"Kador\" ri=\"10000052\" s=\"Kador Prime IX - TransStellar Shipping Storage\" se=\"0.6\" si=\"60009157\" sy=\"Kador Prime\" syi=\"30004095\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"Mesybier II - TransStellar Shipping Storage\" se=\"0.5\" si=\"60009160\" sy=\"Mesybier\" syi=\"30004975\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"Jolevier VII - Moon 17 - TransStellar Shipping Storage\" se=\"0.9\" si=\"60009163\" sy=\"Jolevier\" syi=\"30004974\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"Yvangier V - TransStellar Shipping Storage\" se=\"0.4\" si=\"60009166\" sy=\"Yvangier\" syi=\"30004977\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"Charmerout X - TransStellar Shipping Storage\" se=\"0.6\" si=\"60009169\" sy=\"Charmerout\" syi=\"30004976\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"Charmerout IX - Moon 2 - TransStellar Shipping Storage\" se=\"0.6\" si=\"60009172\" sy=\"Charmerout\" syi=\"30004976\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"Mesybier X - TransStellar Shipping Storage\" se=\"0.5\" si=\"60009175\" sy=\"Mesybier\" syi=\"30004975\"/>\r\n    <row c=\"Enka\" ci=\"20000440\" r=\"Devoid\" ri=\"10000036\" s=\"Mili V - Moon 1 - TransStellar Shipping Storage\" se=\"0.6\" si=\"60009178\" sy=\"Mili\" syi=\"30003001\"/>\r\n    <row c=\"Enka\" ci=\"20000440\" r=\"Devoid\" ri=\"10000036\" s=\"Halenan VIII - Moon 6 - TransStellar Shipping Storage\" se=\"0.6\" si=\"60009181\" sy=\"Halenan\" syi=\"30003003\"/>\r\n    <row c=\"Enka\" ci=\"20000440\" r=\"Devoid\" ri=\"10000036\" s=\"Ulerah I - Moon 2 - TransStellar Shipping Storage\" se=\"0.7\" si=\"60009184\" sy=\"Ulerah\" syi=\"30003004\"/>\r\n    <row c=\"Enka\" ci=\"20000440\" r=\"Devoid\" ri=\"10000036\" s=\"Halenan III - TransStellar Shipping Storage\" se=\"0.6\" si=\"60009187\" sy=\"Halenan\" syi=\"30003003\"/>\r\n    <row c=\"Enka\" ci=\"20000440\" r=\"Devoid\" ri=\"10000036\" s=\"Ulerah II - Moon 7 - TransStellar Shipping Storage\" se=\"0.7\" si=\"60009190\" sy=\"Ulerah\" syi=\"30003004\"/>\r\n    <row c=\"Enka\" ci=\"20000440\" r=\"Devoid\" ri=\"10000036\" s=\"Mili VIII - Moon 9 - TransStellar Shipping Storage\" se=\"0.6\" si=\"60009193\" sy=\"Mili\" syi=\"30003001\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"Malma X - Moon 2 - TransStellar Shipping Storage\" se=\"0.5\" si=\"60009196\" sy=\"Malma\" syi=\"30005235\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"Malma I - TransStellar Shipping Storage\" se=\"0.5\" si=\"60009199\" sy=\"Malma\" syi=\"30005235\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"Pashanai IV - Moon 18 - TransStellar Shipping Storage\" se=\"0.5\" si=\"60009202\" sy=\"Pashanai\" syi=\"30005231\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"Malma VI - TransStellar Shipping Storage\" se=\"0.5\" si=\"60009205\" sy=\"Malma\" syi=\"30005235\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"Pamah V - Moon 9 - TransStellar Shipping Storage\" se=\"0.5\" si=\"60009208\" sy=\"Pamah\" syi=\"30005232\"/>\r\n    <row c=\"Ubar\" ci=\"20000765\" r=\"Genesis\" ri=\"10000067\" s=\"Beke IV - TransStellar Shipping Storage\" se=\"0.3\" si=\"60009211\" sy=\"Beke\" syi=\"30005234\"/>\r\n    <row c=\"Panorad\" ci=\"20000503\" r=\"Metropolis\" ri=\"10000042\" s=\"Dantbeinn IV - Moon 3 - TransStellar Shipping Storage\" se=\"0.7\" si=\"60009214\" sy=\"Dantbeinn\" syi=\"30003451\"/>\r\n    <row c=\"Panorad\" ci=\"20000503\" r=\"Metropolis\" ri=\"10000042\" s=\"Dantbeinn IV - TransStellar Shipping Storage\" se=\"0.7\" si=\"60009217\" sy=\"Dantbeinn\" syi=\"30003451\"/>\r\n    <row c=\"Panorad\" ci=\"20000503\" r=\"Metropolis\" ri=\"10000042\" s=\"Nifflung VII - Moon 9 - TransStellar Shipping Storage\" se=\"0.8\" si=\"60009220\" sy=\"Nifflung\" syi=\"30003448\"/>\r\n    <row c=\"Panorad\" ci=\"20000503\" r=\"Metropolis\" ri=\"10000042\" s=\"Irgrus IV - Moon 13 - TransStellar Shipping Storage\" se=\"0.7\" si=\"60009223\" sy=\"Irgrus\" syi=\"30003452\"/>\r\n    <row c=\"Panorad\" ci=\"20000503\" r=\"Metropolis\" ri=\"10000042\" s=\"Dantbeinn III - Moon 6 - TransStellar Shipping Storage\" se=\"0.7\" si=\"60009226\" sy=\"Dantbeinn\" syi=\"30003451\"/>\r\n    <row c=\"Panorad\" ci=\"20000503\" r=\"Metropolis\" ri=\"10000042\" s=\"Hakeri III - TransStellar Shipping Storage\" se=\"0.7\" si=\"60009229\" sy=\"Hakeri\" syi=\"30003449\"/>\r\n    <row c=\"Argeir\" ci=\"20000504\" r=\"Metropolis\" ri=\"10000042\" s=\"Orduin IX - Moon 4 - TransStellar Shipping Storage\" se=\"0.8\" si=\"60009232\" sy=\"Orduin\" syi=\"30003453\"/>\r\n    <row c=\"Argeir\" ci=\"20000504\" r=\"Metropolis\" ri=\"10000042\" s=\"Orduin VIII - Moon 12 - TransStellar Shipping Storage\" se=\"0.8\" si=\"60009235\" sy=\"Orduin\" syi=\"30003453\"/>\r\n    <row c=\"Argeir\" ci=\"20000504\" r=\"Metropolis\" ri=\"10000042\" s=\"Orduin VIII - Moon 7 - TransStellar Shipping Storage\" se=\"0.8\" si=\"60009238\" sy=\"Orduin\" syi=\"30003453\"/>\r\n    <row c=\"Argeir\" ci=\"20000504\" r=\"Metropolis\" ri=\"10000042\" s=\"Orduin II - Moon 1 - TransStellar Shipping Storage\" se=\"0.8\" si=\"60009241\" sy=\"Orduin\" syi=\"30003453\"/>\r\n    <row c=\"Argeir\" ci=\"20000504\" r=\"Metropolis\" ri=\"10000042\" s=\"Orduin IV - Moon 5 - TransStellar Shipping Storage\" se=\"0.8\" si=\"60009244\" sy=\"Orduin\" syi=\"30003453\"/>\r\n    <row c=\"Argeir\" ci=\"20000504\" r=\"Metropolis\" ri=\"10000042\" s=\"Orduin V - Moon 3 - TransStellar Shipping Storage\" se=\"0.8\" si=\"60009247\" sy=\"Orduin\" syi=\"30003453\"/>\r\n    <row c=\"SKX-PL\" ci=\"20000490\" r=\"Syndicate\" ri=\"10000041\" s=\"VSIG-K VIII - Moon 3 - TransStellar Shipping Storage\" se=\"0.0\" si=\"60009250\" sy=\"VSIG-K\" syi=\"30003361\"/>\r\n    <row c=\"SKX-PL\" ci=\"20000490\" r=\"Syndicate\" ri=\"10000041\" s=\"RSS-KA VIII - Moon 19 - TransStellar Shipping Storage\" se=\"0.0\" si=\"60009253\" sy=\"RSS-KA\" syi=\"30003362\"/>\r\n    <row c=\"SKX-PL\" ci=\"20000490\" r=\"Syndicate\" ri=\"10000041\" s=\"DCHR-L VIII - Moon 10 - TransStellar Shipping Storage\" se=\"0.0\" si=\"60009256\" sy=\"DCHR-L\" syi=\"30003364\"/>\r\n    <row c=\"SKX-PL\" ci=\"20000490\" r=\"Syndicate\" ri=\"10000041\" s=\"VSIG-K V - Moon 8 - TransStellar Shipping Storage\" se=\"0.0\" si=\"60009259\" sy=\"VSIG-K\" syi=\"30003361\"/>\r\n    <row c=\"SKX-PL\" ci=\"20000490\" r=\"Syndicate\" ri=\"10000041\" s=\"RSS-KA VIII - Moon 15 - TransStellar Shipping Storage\" se=\"0.0\" si=\"60009262\" sy=\"RSS-KA\" syi=\"30003362\"/>\r\n    <row c=\"SKX-PL\" ci=\"20000490\" r=\"Syndicate\" ri=\"10000041\" s=\"VSIG-K VIII - Moon 5 - TransStellar Shipping Storage\" se=\"0.0\" si=\"60009265\" sy=\"VSIG-K\" syi=\"30003361\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Abaim VIII - Moon 1 - TransStellar Shipping Storage\" se=\"0.8\" si=\"60009268\" sy=\"Abaim\" syi=\"30003512\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Teshi I - Moon 1 - TransStellar Shipping Storage\" se=\"0.9\" si=\"60009271\" sy=\"Teshi\" syi=\"30003507\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Sorzielang VII - Moon 1 - TransStellar Shipping Storage\" se=\"0.8\" si=\"60009274\" sy=\"Sorzielang\" syi=\"30003510\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Somouh V - Moon 6 - TransStellar Shipping Storage\" se=\"0.9\" si=\"60009277\" sy=\"Somouh\" syi=\"30003511\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Sayartchen II - TransStellar Shipping Storage\" se=\"0.8\" si=\"60009280\" sy=\"Sayartchen\" syi=\"30003508\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Teshi II - Moon 6 - TransStellar Shipping Storage\" se=\"0.9\" si=\"60009283\" sy=\"Teshi\" syi=\"30003507\"/>\r\n    <row c=\"Somi\" ci=\"20000244\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Matyas VII - Moon 19 - TransStellar Shipping Storage\" se=\"0.6\" si=\"60009286\" sy=\"Matyas\" syi=\"30001654\"/>\r\n    <row c=\"Somi\" ci=\"20000244\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Jarzalad VIII - Moon 8 - TransStellar Shipping Storage\" se=\"0.6\" si=\"60009289\" sy=\"Jarzalad\" syi=\"30001653\"/>\r\n    <row c=\"Somi\" ci=\"20000244\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Pimsu VIII - Moon 6 - TransStellar Shipping Storage\" se=\"0.7\" si=\"60009292\" sy=\"Pimsu\" syi=\"30001652\"/>\r\n    <row c=\"Somi\" ci=\"20000244\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Jarzalad VII - Moon 3 - TransStellar Shipping Storage\" se=\"0.6\" si=\"60009295\" sy=\"Jarzalad\" syi=\"30001653\"/>\r\n    <row c=\"Somi\" ci=\"20000244\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Riramia VI - Moon 12 - TransStellar Shipping Storage\" se=\"0.6\" si=\"60009298\" sy=\"Riramia\" syi=\"30001650\"/>\r\n    <row c=\"Somi\" ci=\"20000244\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Jarzalad IV - Moon 6 - TransStellar Shipping Storage\" se=\"0.6\" si=\"60009301\" sy=\"Jarzalad\" syi=\"30001653\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"Leremblompes VIII - Moon 2 - Federal Freight Storage\" se=\"0.6\" si=\"60009304\" sy=\"Leremblompes\" syi=\"30003039\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"Alachene VII - Moon 13 - Federal Freight Storage\" se=\"0.3\" si=\"60009307\" sy=\"Alachene\" syi=\"30003042\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"Uphene IX - Moon 13 - Federal Freight Storage\" se=\"0.6\" si=\"60009310\" sy=\"Uphene\" syi=\"30003043\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"Colcer IX - Moon 9 - Federal Freight Storage\" se=\"0.9\" si=\"60009313\" sy=\"Colcer\" syi=\"30003041\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"Gererique IV - Moon 1 - Federal Freight Storage\" se=\"0.7\" si=\"60009316\" sy=\"Gererique\" syi=\"30003586\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"Gererique II - Moon 1 - Federal Freight Storage\" se=\"0.7\" si=\"60009319\" sy=\"Gererique\" syi=\"30003586\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"Gererique III - Moon 1 - Federal Freight Storage\" se=\"0.7\" si=\"60009322\" sy=\"Gererique\" syi=\"30003586\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"Sarline IX - Moon 26 - Federal Freight Storage\" se=\"0.4\" si=\"60009325\" sy=\"Sarline\" syi=\"30003584\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Alperaute V - Moon 5 - Federal Freight Storage\" se=\"0.2\" si=\"60009328\" sy=\"Alperaute\" syi=\"30003800\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Pain IV - Moon 14 - Federal Freight Storage\" se=\"0.1\" si=\"60009331\" sy=\"Pain\" syi=\"30003804\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Cumemare I - Federal Freight Storage\" se=\"0.1\" si=\"60009334\" sy=\"Cumemare\" syi=\"30003802\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Aunsou I - Federal Freight Storage\" se=\"0.2\" si=\"60009337\" sy=\"Aunsou\" syi=\"30003801\"/>\r\n    <row c=\"Aeman\" ci=\"20000398\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Rancer VI - Moon 3 - Federal Freight Storage\" se=\"0.4\" si=\"60009340\" sy=\"Rancer\" syi=\"30002718\"/>\r\n    <row c=\"Aeman\" ci=\"20000398\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Rancer VII - Moon 22 - Federal Freight Storage\" se=\"0.4\" si=\"60009343\" sy=\"Rancer\" syi=\"30002718\"/>\r\n    <row c=\"Aeman\" ci=\"20000398\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Miroitem VII - Moon 14 - Federal Freight Storage\" se=\"0.3\" si=\"60009346\" sy=\"Miroitem\" syi=\"30002719\"/>\r\n    <row c=\"Aeman\" ci=\"20000398\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Rorsins II - Moon 1 - Federal Freight Storage\" se=\"0.1\" si=\"60009349\" sy=\"Rorsins\" syi=\"30002721\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Aclan X - Moon 19 - Federal Freight Storage\" se=\"0.5\" si=\"60009352\" sy=\"Aclan\" syi=\"30003028\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Jaschercis III - Moon 1 - Federal Freight Storage\" se=\"0.6\" si=\"60009355\" sy=\"Jaschercis\" syi=\"30003029\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Aclan V - Moon 1 - Federal Freight Storage\" se=\"0.5\" si=\"60009358\" sy=\"Aclan\" syi=\"30003028\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Blameston VI - Moon 2 - Federal Freight Storage\" se=\"1.0\" si=\"60009361\" sy=\"Blameston\" syi=\"30003026\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Gallareue I - Federal Freight Storage\" se=\"0.8\" si=\"60009364\" sy=\"Gallareue\" syi=\"30002674\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Inghenges VII - Federal Freight Storage\" se=\"0.7\" si=\"60009367\" sy=\"Inghenges\" syi=\"30002672\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Estene I - Moon 1 - Federal Freight Storage\" se=\"0.8\" si=\"60009370\" sy=\"Estene\" syi=\"30002673\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Estene VI - Moon 3 - Federal Freight Storage\" se=\"0.8\" si=\"60009373\" sy=\"Estene\" syi=\"30002673\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"Agoze XII - Moon 8 - Federal Freight Storage\" se=\"0.2\" si=\"60009376\" sy=\"Agoze\" syi=\"30003787\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"Ostingele VI - Moon 4 - Federal Freight Storage\" se=\"0.2\" si=\"60009379\" sy=\"Ostingele\" syi=\"30003792\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"Brarel V - Moon 3 - Federal Freight Storage\" se=\"0.1\" si=\"60009382\" sy=\"Brarel\" syi=\"30003789\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"Intaki VII - Moon 1 - Federal Freight Storage\" se=\"0.6\" si=\"60009385\" sy=\"Intaki\" syi=\"30003788\"/>\r\n    <row c=\"Gallente Border Zone\" ci=\"20000387\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Ignoitton V - Moon 11 - Federal Freight Storage\" se=\"0.4\" si=\"60009388\" sy=\"Ignoitton\" syi=\"30002647\"/>\r\n    <row c=\"Gallente Border Zone\" ci=\"20000387\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Faurent I - Federal Freight Storage\" se=\"0.5\" si=\"60009391\" sy=\"Faurent\" syi=\"30002643\"/>\r\n    <row c=\"Gallente Border Zone\" ci=\"20000387\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Faurent V - Moon 2 - Federal Freight Storage\" se=\"0.5\" si=\"60009394\" sy=\"Faurent\" syi=\"30002643\"/>\r\n    <row c=\"Gallente Border Zone\" ci=\"20000387\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Direrie V - Moon 17 - Federal Freight Storage\" se=\"0.5\" si=\"60009397\" sy=\"Direrie\" syi=\"30002646\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Jovainnon VI - Federal Freight Storage\" se=\"0.3\" si=\"60009400\" sy=\"Jovainnon\" syi=\"30005321\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Hevrice VI - Moon 6 - Federal Freight Storage\" se=\"0.4\" si=\"60009403\" sy=\"Hevrice\" syi=\"30005320\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Jovainnon IV - Federal Freight Storage\" se=\"0.3\" si=\"60009406\" sy=\"Jovainnon\" syi=\"30005321\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Hevrice V - Federal Freight Storage\" se=\"0.4\" si=\"60009409\" sy=\"Hevrice\" syi=\"30005320\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Brybier I - Moon 1 - Federal Freight Storage\" se=\"0.6\" si=\"60009412\" sy=\"Brybier\" syi=\"30002703\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Brapelille X - Moon 6 - Federal Freight Storage\" se=\"0.7\" si=\"60009415\" sy=\"Brapelille\" syi=\"30002699\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Bawilan I - Federal Freight Storage\" se=\"0.5\" si=\"60009418\" sy=\"Bawilan\" syi=\"30002700\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Brapelille IV - Moon 2 - Federal Freight Storage\" se=\"0.7\" si=\"60009421\" sy=\"Brapelille\" syi=\"30002699\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"Orvolle III - Moon 1 - Inner Zone Shipping Storage\" se=\"0.7\" si=\"60009424\" sy=\"Orvolle\" syi=\"30003830\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"Maut VIII - Inner Zone Shipping Storage\" se=\"0.2\" si=\"60009427\" sy=\"Maut\" syi=\"30003835\"/>\r\n    <row c=\"Braille\" ci=\"20000520\" r=\"Solitude\" ri=\"10000044\" s=\"Elore IV - Moon 1 - Material Acquisition Mining Outpost\" se=\"0.2\" si=\"60009430\" sy=\"Elore\" syi=\"30003570\"/>\r\n    <row c=\"Braille\" ci=\"20000520\" r=\"Solitude\" ri=\"10000044\" s=\"Aimoguier V - Material Acquisition Mining Outpost\" se=\"0.2\" si=\"60009433\" sy=\"Aimoguier\" syi=\"30003566\"/>\r\n    <row c=\"Braille\" ci=\"20000520\" r=\"Solitude\" ri=\"10000044\" s=\"Vevelonel VI - Moon 3 - Material Acquisition Mineral Reserve\" se=\"0.1\" si=\"60009436\" sy=\"Vevelonel\" syi=\"30003572\"/>\r\n    <row c=\"Braille\" ci=\"20000520\" r=\"Solitude\" ri=\"10000044\" s=\"Cadelanne V - Material Acquisition Mining Outpost\" se=\"0.1\" si=\"60009439\" sy=\"Cadelanne\" syi=\"30003569\"/>\r\n    <row c=\"Mobrault\" ci=\"20000525\" r=\"Solitude\" ri=\"10000044\" s=\"Straloin IX - Moon 10 - Material Acquisition Mineral Reserve\" se=\"0.2\" si=\"60009442\" sy=\"Straloin\" syi=\"30003607\"/>\r\n    <row c=\"Mobrault\" ci=\"20000525\" r=\"Solitude\" ri=\"10000044\" s=\"Straloin IX - Moon 17 - Material Acquisition Mining Outpost\" se=\"0.2\" si=\"60009445\" sy=\"Straloin\" syi=\"30003607\"/>\r\n    <row c=\"Mobrault\" ci=\"20000525\" r=\"Solitude\" ri=\"10000044\" s=\"Pochelympe VI - Material Acquisition Refinery\" se=\"0.6\" si=\"60009448\" sy=\"Pochelympe\" syi=\"30003604\"/>\r\n    <row c=\"Mobrault\" ci=\"20000525\" r=\"Solitude\" ri=\"10000044\" s=\"Straloin IX - Moon 15 - Material Acquisition Mining Outpost\" se=\"0.2\" si=\"60009451\" sy=\"Straloin\" syi=\"30003607\"/>\r\n    <row c=\"Eustron\" ci=\"20000735\" r=\"Essence\" ri=\"10000064\" s=\"Cat VII - Moon 4 - Material Acquisition Mineral Reserve\" se=\"0.7\" si=\"60009454\" sy=\"Cat\" syi=\"30005026\"/>\r\n    <row c=\"Eustron\" ci=\"20000735\" r=\"Essence\" ri=\"10000064\" s=\"Ommare IX - Moon 4 - Material Acquisition Mineral Reserve\" se=\"0.7\" si=\"60009457\" sy=\"Ommare\" syi=\"30005027\"/>\r\n    <row c=\"Eustron\" ci=\"20000735\" r=\"Essence\" ri=\"10000064\" s=\"Ommare VIII - Material Acquisition Mineral Reserve\" se=\"0.7\" si=\"60009460\" sy=\"Ommare\" syi=\"30005027\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"Vale II - Moon 1 - Veles Clade Extractive Terminus\" se=\"0.0\" si=\"60009463\" sy=\"Vale\" syi=\"30005029\"/>\r\n    <row c=\"Unour\" ci=\"20000557\" r=\"Placid\" ri=\"10000048\" s=\"Ommaerrer VIII - Moon 5 - Material Acquisition Mining Outpost\" se=\"0.6\" si=\"60009466\" sy=\"Ommaerrer\" syi=\"30003817\"/>\r\n    <row c=\"Unour\" ci=\"20000557\" r=\"Placid\" ri=\"10000048\" s=\"Mollin VI - Moon 5 - Material Acquisition Mining Outpost\" se=\"0.7\" si=\"60009469\" sy=\"Mollin\" syi=\"30003814\"/>\r\n    <row c=\"Unour\" ci=\"20000557\" r=\"Placid\" ri=\"10000048\" s=\"Vilinnon I - Material Acquisition Mining Outpost\" se=\"0.6\" si=\"60009472\" sy=\"Vilinnon\" syi=\"30003816\"/>\r\n    <row c=\"Unour\" ci=\"20000557\" r=\"Placid\" ri=\"10000048\" s=\"Osmallanais VII - Moon 9 - Material Acquisition Refinery\" se=\"0.8\" si=\"60009475\" sy=\"Osmallanais\" syi=\"30003812\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"Isenan XI - Moon 4 - Material Acquisition Mining Outpost\" se=\"0.3\" si=\"60009478\" sy=\"Isenan\" syi=\"30005014\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"Isenan VII - Moon 9 - Material Acquisition Mining Outpost\" se=\"0.3\" si=\"60009481\" sy=\"Isenan\" syi=\"30005014\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"Isenan VII - Moon 13 - Material Acquisition Mining Outpost\" se=\"0.3\" si=\"60009484\" sy=\"Isenan\" syi=\"30005014\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"Droselory IX - Moon 4 - Material Acquisition Mineral Reserve\" se=\"0.5\" si=\"60009487\" sy=\"Droselory\" syi=\"30005011\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Boystin VI - Moon 23 - Material Acquisition Refinery\" se=\"0.5\" si=\"60009490\" sy=\"Boystin\" syi=\"30003574\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Oerse VI - Moon 6 - Material Acquisition Mineral Reserve\" se=\"0.6\" si=\"60009493\" sy=\"Oerse\" syi=\"30003577\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Pertnineere VII - Moon 1 - Material Acquisition Refinery\" se=\"0.4\" si=\"60009496\" sy=\"Pertnineere\" syi=\"30003573\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Octanneve V - Material Acquisition Mineral Reserve\" se=\"0.7\" si=\"60009499\" sy=\"Octanneve\" syi=\"30003578\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Uphallant III - Moon 4 - Material Acquisition Mining Outpost\" se=\"0.2\" si=\"60009502\" sy=\"Uphallant\" syi=\"30003799\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Iges VIII - Moon 5 - Material Acquisition Refinery\" se=\"0.3\" si=\"60009505\" sy=\"Iges\" syi=\"30003796\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Stacmon VIII - Moon 6 - Material Acquisition Refinery\" se=\"0.6\" si=\"60009508\" sy=\"Stacmon\" syi=\"30003794\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Uphallant VII - Moon 2 - Material Acquisition Refinery\" se=\"0.2\" si=\"60009511\" sy=\"Uphallant\" syi=\"30003799\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"Bereye VII - Moon 1 - Material Acquisition Mineral Reserve\" se=\"0.9\" si=\"60009514\" sy=\"Bereye\" syi=\"30003014\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"Jurlesel II - Material Acquisition Refinery\" se=\"0.6\" si=\"60009517\" sy=\"Jurlesel\" syi=\"30003013\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"Bereye VI - Moon 2 - Material Acquisition Refinery\" se=\"0.9\" si=\"60009520\" sy=\"Bereye\" syi=\"30003014\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"Mormoen VI - Moon 20 - Material Acquisition Mining Outpost\" se=\"0.7\" si=\"60009523\" sy=\"Mormoen\" syi=\"30003011\"/>\r\n    <row c=\"Goins\" ci=\"20000523\" r=\"Solitude\" ri=\"10000044\" s=\"Vecodie I - Material Acquisition Mineral Reserve\" se=\"0.8\" si=\"60009526\" sy=\"Vecodie\" syi=\"30003589\"/>\r\n    <row c=\"Goins\" ci=\"20000523\" r=\"Solitude\" ri=\"10000044\" s=\"Stoure VI - Moon 4 - Material Acquisition Mining Outpost\" se=\"0.7\" si=\"60009529\" sy=\"Stoure\" syi=\"30003593\"/>\r\n    <row c=\"Goins\" ci=\"20000523\" r=\"Solitude\" ri=\"10000044\" s=\"Yvaeroure XII - Moon 9 - Material Acquisition Refinery\" se=\"0.8\" si=\"60009532\" sy=\"Yvaeroure\" syi=\"30003588\"/>\r\n    <row c=\"Goins\" ci=\"20000523\" r=\"Solitude\" ri=\"10000044\" s=\"Yvaeroure XII - Moon 11 - Material Acquisition Refinery\" se=\"0.8\" si=\"60009535\" sy=\"Yvaeroure\" syi=\"30003588\"/>\r\n    <row c=\"Elerelle\" ci=\"20000524\" r=\"Solitude\" ri=\"10000044\" s=\"Agaullores IV - Moon 3 - Material Acquisition Mining Outpost\" se=\"0.1\" si=\"60009538\" sy=\"Agaullores\" syi=\"30003600\"/>\r\n    <row c=\"Elerelle\" ci=\"20000524\" r=\"Solitude\" ri=\"10000044\" s=\"Heluene X - Material Acquisition Refinery\" se=\"0.2\" si=\"60009541\" sy=\"Heluene\" syi=\"30003594\"/>\r\n    <row c=\"Elerelle\" ci=\"20000524\" r=\"Solitude\" ri=\"10000044\" s=\"Babirmoult VI - Moon 15 - Material Acquisition Mineral Reserve\" se=\"0.2\" si=\"60009544\" sy=\"Babirmoult\" syi=\"30003601\"/>\r\n    <row c=\"Elerelle\" ci=\"20000524\" r=\"Solitude\" ri=\"10000044\" s=\"Arittant IX - Moon 16 - Material Acquisition Mining Outpost\" se=\"0.3\" si=\"60009547\" sy=\"Arittant\" syi=\"30003595\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Alentene VII - Moon 1 - Astral Mining Inc. Mineral Reserve\" se=\"0.9\" si=\"60009550\" sy=\"Alentene\" syi=\"30005304\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Merolles IX - Moon 15 - Astral Mining Inc. Mineral Reserve\" se=\"0.9\" si=\"60009553\" sy=\"Merolles\" syi=\"30005303\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Alentene VII - Moon 5 - Astral Mining Inc. Refinery\" se=\"0.9\" si=\"60009556\" sy=\"Alentene\" syi=\"30005304\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Alenia V - Moon 10 - Astral Mining Inc. Refinery\" se=\"0.9\" si=\"60009559\" sy=\"Alenia\" syi=\"30005302\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Alenia VIII - Astral Mining Inc. Refinery\" se=\"0.9\" si=\"60009562\" sy=\"Alenia\" syi=\"30005302\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Vaere VIII - Moon 11 - Astral Mining Inc. Mineral Reserve\" se=\"0.8\" si=\"60009565\" sy=\"Vaere\" syi=\"30005306\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Pelille VI - Moon 2 - Astral Mining Inc. Mineral Reserve\" se=\"0.2\" si=\"60009568\" sy=\"Pelille\" syi=\"30003806\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Pelille V - Moon 13 - Astral Mining Inc. Refinery\" se=\"0.2\" si=\"60009571\" sy=\"Pelille\" syi=\"30003806\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Dour V - Moon 7 - Astral Mining Inc. Mineral Reserve\" se=\"0.4\" si=\"60009574\" sy=\"Dour\" syi=\"30003807\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Brellystier IV - Moon 2 - Astral Mining Inc. Mineral Reserve\" se=\"0.5\" si=\"60009577\" sy=\"Brellystier\" syi=\"30003809\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Pelille III - Astral Mining Inc. Refinery\" se=\"0.2\" si=\"60009580\" sy=\"Pelille\" syi=\"30003806\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Vivanier III - Moon 1 - Astral Mining Inc. Refinery\" se=\"0.5\" si=\"60009583\" sy=\"Vivanier\" syi=\"30003810\"/>\r\n    <row c=\"Disier\" ci=\"20000386\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Aufay IV - Moon 2 - Astral Mining Inc. Mining Outpost\" se=\"0.5\" si=\"60009586\" sy=\"Aufay\" syi=\"30002641\"/>\r\n    <row c=\"Disier\" ci=\"20000386\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Aufay II - Astral Mining Inc. Mining Outpost\" se=\"0.5\" si=\"60009589\" sy=\"Aufay\" syi=\"30002641\"/>\r\n    <row c=\"Disier\" ci=\"20000386\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Aufay III - Moon 3 - Astral Mining Inc. Mining Outpost\" se=\"0.5\" si=\"60009592\" sy=\"Aufay\" syi=\"30002641\"/>\r\n    <row c=\"Disier\" ci=\"20000386\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Aufay I - Astral Mining Inc. Mining Outpost\" se=\"0.5\" si=\"60009595\" sy=\"Aufay\" syi=\"30002641\"/>\r\n    <row c=\"Disier\" ci=\"20000386\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Metserel V - Moon 8 - Astral Mining Inc. Mineral Reserve\" se=\"0.7\" si=\"60009598\" sy=\"Metserel\" syi=\"30002637\"/>\r\n    <row c=\"Disier\" ci=\"20000386\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Adreland VI - Moon 8 - Astral Mining Inc. Refinery\" se=\"0.9\" si=\"60009601\" sy=\"Adreland\" syi=\"30002639\"/>\r\n    <row c=\"Aideron\" ci=\"20000780\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Stou IV - Moon 1 - Astral Mining Inc. Mineral Reserve\" se=\"0.5\" si=\"60009604\" sy=\"Stou\" syi=\"30005333\"/>\r\n    <row c=\"Aideron\" ci=\"20000780\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Arraron III - Astral Mining Inc. Refinery\" se=\"0.5\" si=\"60009607\" sy=\"Arraron\" syi=\"30005330\"/>\r\n    <row c=\"Aideron\" ci=\"20000780\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Arraron VII - Astral Mining Inc. Refinery\" se=\"0.5\" si=\"60009610\" sy=\"Arraron\" syi=\"30005330\"/>\r\n    <row c=\"Aideron\" ci=\"20000780\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Stou VIII - Astral Mining Inc. Mining Outpost\" se=\"0.5\" si=\"60009613\" sy=\"Stou\" syi=\"30005333\"/>\r\n    <row c=\"Aideron\" ci=\"20000780\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Stou II - Astral Mining Inc. Mining Outpost\" se=\"0.5\" si=\"60009616\" sy=\"Stou\" syi=\"30005333\"/>\r\n    <row c=\"Aideron\" ci=\"20000780\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Stou I - Moon 1 - Astral Mining Inc. Mineral Reserve\" se=\"0.5\" si=\"60009619\" sy=\"Stou\" syi=\"30005333\"/>\r\n    <row c=\"Elerelle\" ci=\"20000524\" r=\"Solitude\" ri=\"10000044\" s=\"Heluene IV - Moon 1 - Astral Mining Inc. Mineral Reserve\" se=\"0.2\" si=\"60009622\" sy=\"Heluene\" syi=\"30003594\"/>\r\n    <row c=\"Elerelle\" ci=\"20000524\" r=\"Solitude\" ri=\"10000044\" s=\"Arittant IX - Moon 7 - Astral Mining Inc. Mining Outpost\" se=\"0.3\" si=\"60009625\" sy=\"Arittant\" syi=\"30003595\"/>\r\n    <row c=\"Elerelle\" ci=\"20000524\" r=\"Solitude\" ri=\"10000044\" s=\"Heluene V - Astral Mining Inc. Mineral Reserve\" se=\"0.2\" si=\"60009628\" sy=\"Heluene\" syi=\"30003594\"/>\r\n    <row c=\"Elerelle\" ci=\"20000524\" r=\"Solitude\" ri=\"10000044\" s=\"Ogaria II - Astral Mining Inc. Mining Outpost\" se=\"0.2\" si=\"60009631\" sy=\"Ogaria\" syi=\"30003598\"/>\r\n    <row c=\"Elerelle\" ci=\"20000524\" r=\"Solitude\" ri=\"10000044\" s=\"Agaullores V - Moon 20 - Astral Mining Inc. Mining Outpost\" se=\"0.1\" si=\"60009634\" sy=\"Agaullores\" syi=\"30003600\"/>\r\n    <row c=\"Elerelle\" ci=\"20000524\" r=\"Solitude\" ri=\"10000044\" s=\"Heluene X - Astral Mining Inc. Refinery\" se=\"0.2\" si=\"60009637\" sy=\"Heluene\" syi=\"30003594\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Oursulaert VIII - Moon 2 - Astral Mining Inc. Mining Outpost\" se=\"0.9\" si=\"60009640\" sy=\"Oursulaert\" syi=\"30004969\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Oursulaert IV - Astral Mining Inc. Mining Outpost\" se=\"0.9\" si=\"60009643\" sy=\"Oursulaert\" syi=\"30004969\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Mies I - Astral Mining Inc. Mineral Reserve\" se=\"0.9\" si=\"60009646\" sy=\"Mies\" syi=\"30004968\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Oursulaert VIII - Astral Mining Inc. Mining Outpost\" se=\"0.9\" si=\"60009649\" sy=\"Oursulaert\" syi=\"30004969\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Oursulaert VII - Moon 3 - Astral Mining Inc. Mining Outpost\" se=\"0.9\" si=\"60009652\" sy=\"Oursulaert\" syi=\"30004969\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Oursulaert II - Astral Mining Inc. Mining Outpost\" se=\"0.9\" si=\"60009655\" sy=\"Oursulaert\" syi=\"30004969\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"Annancale IV - Moon 16 - Astral Mining Inc. Mineral Reserve\" se=\"0.1\" si=\"60009658\" sy=\"Annancale\" syi=\"30003791\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"Ostingele VI - Moon 5 - Astral Mining Inc. Mineral Reserve\" se=\"0.2\" si=\"60009661\" sy=\"Ostingele\" syi=\"30003792\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"Annancale IV - Moon 1 - Astral Mining Inc. Mining Outpost\" se=\"0.1\" si=\"60009664\" sy=\"Annancale\" syi=\"30003791\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"Intaki V (Intaki Prime) - Moon 5 - Astral Mining Inc. Refinery\" se=\"0.6\" si=\"60009667\" sy=\"Intaki\" syi=\"30003788\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"Vey VIII - Moon 19 - Astral Mining Inc. Mining Outpost\" se=\"0.2\" si=\"60009670\" sy=\"Vey\" syi=\"30003790\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"Vey VI - Moon 10 - Astral Mining Inc. Mineral Reserve\" se=\"0.2\" si=\"60009673\" sy=\"Vey\" syi=\"30003790\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Agrallarier VIII - Moon 3 - Astral Mining Inc. Refinery\" se=\"0.9\" si=\"60009676\" sy=\"Agrallarier\" syi=\"30002658\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Eglennaert I - Moon 6 - Astral Mining Inc. Mineral Reserve\" se=\"0.8\" si=\"60009679\" sy=\"Eglennaert\" syi=\"30002660\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Vylade IV - Moon 16 - Astral Mining Inc. Mineral Reserve\" se=\"0.8\" si=\"60009682\" sy=\"Vylade\" syi=\"30002655\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Vylade VII - Moon 3 - Astral Mining Inc. Refinery\" se=\"0.8\" si=\"60009685\" sy=\"Vylade\" syi=\"30002655\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Eglennaert I - Moon 11 - Astral Mining Inc. Mineral Reserve\" se=\"0.8\" si=\"60009688\" sy=\"Eglennaert\" syi=\"30002660\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Eglennaert I - Moon 12 - Astral Mining Inc. Mineral Reserve\" se=\"0.8\" si=\"60009691\" sy=\"Eglennaert\" syi=\"30002660\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"Quier III - Moon 11 - Astral Mining Inc. Mining Outpost\" se=\"0.7\" si=\"60009694\" sy=\"Quier\" syi=\"30003037\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"Frarolle VII - Astral Mining Inc. Mining Outpost\" se=\"0.8\" si=\"60009697\" sy=\"Frarolle\" syi=\"30003036\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"Ethernity V - Moon 1 - Astral Mining Inc. Mineral Reserve\" se=\"0.9\" si=\"60009700\" sy=\"Ethernity\" syi=\"30003033\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"Athinard VII - Moon 2 - Astral Mining Inc. Mineral Reserve\" se=\"1.0\" si=\"60009703\" sy=\"Athinard\" syi=\"30003031\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"Mattere V - Moon 12 - Astral Mining Inc. Refinery\" se=\"1.0\" si=\"60009706\" sy=\"Mattere\" syi=\"30003034\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"Quier III - Moon 7 - Astral Mining Inc. Mining Outpost\" se=\"0.7\" si=\"60009709\" sy=\"Quier\" syi=\"30003037\"/>\r\n    <row c=\"Balrille\" ci=\"20000730\" r=\"Essence\" ri=\"10000064\" s=\"Annages IV - Moon 1 - Astral Mining Inc. Mineral Reserve\" se=\"0.7\" si=\"60009712\" sy=\"Annages\" syi=\"30004989\"/>\r\n    <row c=\"Balrille\" ci=\"20000730\" r=\"Essence\" ri=\"10000064\" s=\"Vitrauze XI - Moon 10 - Astral Mining Inc. Mineral Reserve\" se=\"0.3\" si=\"60009715\" sy=\"Vitrauze\" syi=\"30004991\"/>\r\n    <row c=\"Balrille\" ci=\"20000730\" r=\"Essence\" ri=\"10000064\" s=\"Palmon VI - Astral Mining Inc. Mining Outpost\" se=\"0.4\" si=\"60009718\" sy=\"Palmon\" syi=\"30004992\"/>\r\n    <row c=\"Balrille\" ci=\"20000730\" r=\"Essence\" ri=\"10000064\" s=\"Palmon VII - Moon 4 - Astral Mining Inc. Mining Outpost\" se=\"0.4\" si=\"60009721\" sy=\"Palmon\" syi=\"30004992\"/>\r\n    <row c=\"Balrille\" ci=\"20000730\" r=\"Essence\" ri=\"10000064\" s=\"Annages VII - Astral Mining Inc. Mining Outpost\" se=\"0.7\" si=\"60009724\" sy=\"Annages\" syi=\"30004989\"/>\r\n    <row c=\"Balrille\" ci=\"20000730\" r=\"Essence\" ri=\"10000064\" s=\"Vitrauze XII - Moon 1 - Astral Mining Inc. Refinery\" se=\"0.3\" si=\"60009727\" sy=\"Vitrauze\" syi=\"30004991\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Boystin VI - Moon 13 - Combined Harvest Plantation\" se=\"0.5\" si=\"60009730\" sy=\"Boystin\" syi=\"30003574\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Boystin VI - Moon 1 - Combined Harvest Plantation\" se=\"0.5\" si=\"60009733\" sy=\"Boystin\" syi=\"30003574\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Octanneve I - Combined Harvest Food Packaging\" se=\"0.7\" si=\"60009736\" sy=\"Octanneve\" syi=\"30003578\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Octanneve IV - Moon 1 - Combined Harvest Food Packaging\" se=\"0.7\" si=\"60009739\" sy=\"Octanneve\" syi=\"30003578\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"Renarelle III - Moon 4 - Combined Harvest Food Packaging\" se=\"0.3\" si=\"60009742\" sy=\"Renarelle\" syi=\"30003829\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"Frarie IX - Combined Harvest Warehouse\" se=\"0.4\" si=\"60009745\" sy=\"Frarie\" syi=\"30003826\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"Aubenall V - Moon 9 - Combined Harvest Warehouse\" se=\"0.4\" si=\"60009748\" sy=\"Aubenall\" syi=\"30003827\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"Frarie VI - Moon 1 - Combined Harvest Warehouse\" se=\"0.4\" si=\"60009751\" sy=\"Frarie\" syi=\"30003826\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Auberulle VII - Moon 1 - Combined Harvest Warehouse\" se=\"0.8\" si=\"60009754\" sy=\"Auberulle\" syi=\"30002709\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Doussivitte VIII - Combined Harvest Warehouse\" se=\"0.8\" si=\"60009757\" sy=\"Doussivitte\" syi=\"30002706\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Adiere VI - Moon 4 - Combined Harvest Warehouse\" se=\"0.8\" si=\"60009760\" sy=\"Adiere\" syi=\"30002710\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Stetille IX - Moon 2 - Combined Harvest Food Packaging\" se=\"0.9\" si=\"60009763\" sy=\"Stetille\" syi=\"30002711\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"Colcer IX - Moon 9 - Combined Harvest Plantation\" se=\"0.9\" si=\"60009766\" sy=\"Colcer\" syi=\"30003041\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"Bille VII - Moon 2 - Combined Harvest Food Packaging\" se=\"0.5\" si=\"60009769\" sy=\"Bille\" syi=\"30003040\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"Alachene VII - Moon 11 - Combined Harvest Plantation\" se=\"0.3\" si=\"60009772\" sy=\"Alachene\" syi=\"30003042\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"Alachene V - Moon 2 - Combined Harvest Plantation\" se=\"0.3\" si=\"60009775\" sy=\"Alachene\" syi=\"30003042\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Groothese X - Moon 6 - Combined Harvest Warehouse\" se=\"0.3\" si=\"60009778\" sy=\"Groothese\" syi=\"30003057\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Groothese X - Moon 2 - Combined Harvest Warehouse\" se=\"0.3\" si=\"60009781\" sy=\"Groothese\" syi=\"30003057\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Adeel VIII - Moon 6 - Combined Harvest Plantation\" se=\"0.4\" si=\"60009784\" sy=\"Adeel\" syi=\"30003059\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Olide VI - Moon 3 - Combined Harvest Food Packaging\" se=\"0.7\" si=\"60009787\" sy=\"Olide\" syi=\"30003058\"/>\r\n    <row c=\"Aideron\" ci=\"20000780\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Osmomonne VI - Moon 6 - Combined Harvest Warehouse\" se=\"0.8\" si=\"60009790\" sy=\"Osmomonne\" syi=\"30005332\"/>\r\n    <row c=\"Aideron\" ci=\"20000780\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Stou IV - Moon 1 - Combined Harvest Plantation\" se=\"0.5\" si=\"60009793\" sy=\"Stou\" syi=\"30005333\"/>\r\n    <row c=\"Aideron\" ci=\"20000780\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Stou V - Moon 1 - Combined Harvest Warehouse\" se=\"0.5\" si=\"60009796\" sy=\"Stou\" syi=\"30005333\"/>\r\n    <row c=\"Aideron\" ci=\"20000780\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Arraron VII - Moon 12 - Combined Harvest Food Packaging\" se=\"0.5\" si=\"60009799\" sy=\"Arraron\" syi=\"30005330\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"Charmerout IV - Moon 1 - Combined Harvest Food Packaging\" se=\"0.6\" si=\"60009802\" sy=\"Charmerout\" syi=\"30004976\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"Charmerout VII - Combined Harvest Food Packaging\" se=\"0.6\" si=\"60009805\" sy=\"Charmerout\" syi=\"30004976\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"Mesybier VII - Combined Harvest Food Packaging\" se=\"0.5\" si=\"60009808\" sy=\"Mesybier\" syi=\"30004975\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"Caslemon IX - Moon 16 - Combined Harvest Warehouse\" se=\"0.6\" si=\"60009811\" sy=\"Caslemon\" syi=\"30004973\"/>\r\n    <row c=\"Mallugier\" ci=\"20000562\" r=\"Placid\" ri=\"10000048\" s=\"Ruerrotta IV - Moon 2 - Combined Harvest Plantation\" se=\"0.3\" si=\"60009814\" sy=\"Ruerrotta\" syi=\"30003845\"/>\r\n    <row c=\"Mallugier\" ci=\"20000562\" r=\"Placid\" ri=\"10000048\" s=\"Amasiree VII - Moon 1 - Combined Harvest Plantation\" se=\"0.4\" si=\"60009817\" sy=\"Amasiree\" syi=\"30003848\"/>\r\n    <row c=\"Mallugier\" ci=\"20000562\" r=\"Placid\" ri=\"10000048\" s=\"Avaux VIII - Moon 3 - Combined Harvest Food Packaging\" se=\"0.4\" si=\"60009820\" sy=\"Avaux\" syi=\"30003843\"/>\r\n    <row c=\"Mallugier\" ci=\"20000562\" r=\"Placid\" ri=\"10000048\" s=\"Ruerrotta II - Combined Harvest Plantation\" se=\"0.3\" si=\"60009823\" sy=\"Ruerrotta\" syi=\"30003845\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"Chardalane V - Moon 2 - Combined Harvest Plantation\" se=\"0.4\" si=\"60009826\" sy=\"Chardalane\" syi=\"30003834\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"Osmeden X - Moon 2 - Combined Harvest Plantation\" se=\"0.7\" si=\"60009829\" sy=\"Osmeden\" syi=\"30003831\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"Chardalane I - Combined Harvest Plantation\" se=\"0.4\" si=\"60009832\" sy=\"Chardalane\" syi=\"30003834\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"Chardalane III - Moon 2 - Combined Harvest Plantation\" se=\"0.4\" si=\"60009835\" sy=\"Chardalane\" syi=\"30003834\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Algasienan V - Moon 18 - Combined Harvest Food Packaging\" se=\"0.7\" si=\"60009838\" sy=\"Algasienan\" syi=\"30003811\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Vivanier VII - Moon 17 - Combined Harvest Food Packaging\" se=\"0.5\" si=\"60009841\" sy=\"Vivanier\" syi=\"30003810\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Algasienan VI - Moon 11 - Combined Harvest Food Packaging\" se=\"0.7\" si=\"60009844\" sy=\"Algasienan\" syi=\"30003811\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Grispire VI - Moon 3 - Combined Harvest Food Packaging\" se=\"0.2\" si=\"60009847\" sy=\"Grispire\" syi=\"30003808\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Lirsautton VII - Quafe Company Factory\" se=\"0.8\" si=\"60009850\" sy=\"Lirsautton\" syi=\"30003025\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Jaschercis IV - Moon 9 - Quafe Company Factory\" se=\"0.6\" si=\"60009853\" sy=\"Jaschercis\" syi=\"30003029\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Ardallabier VII - Moon 3 - Quafe Company Warehouse\" se=\"0.7\" si=\"60009856\" sy=\"Ardallabier\" syi=\"30003030\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Vaurent II - Quafe Company Factory\" se=\"0.6\" si=\"60009859\" sy=\"Vaurent\" syi=\"30003027\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Marosier VIII - Moon 7 - Quafe Company Retail Center\" se=\"0.6\" si=\"60009862\" sy=\"Marosier\" syi=\"30003024\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Blameston IV - Moon 12 - Quafe Company Retail Center\" se=\"1.0\" si=\"60009865\" sy=\"Blameston\" syi=\"30003026\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Sorzielang VII - Moon 17 - Quafe Company Factory\" se=\"0.8\" si=\"60009868\" sy=\"Sorzielang\" syi=\"30003510\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Gosalav VI - Moon 1 - Quafe Company Factory\" se=\"0.7\" si=\"60009871\" sy=\"Gosalav\" syi=\"30003509\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Gosalav VII - Moon 1 - Quafe Company Factory\" se=\"0.7\" si=\"60009874\" sy=\"Gosalav\" syi=\"30003509\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Abaim V - Quafe Company Factory\" se=\"0.8\" si=\"60009877\" sy=\"Abaim\" syi=\"30003512\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Somouh VII - Moon 11 - Quafe Company Retail Center\" se=\"0.9\" si=\"60009880\" sy=\"Somouh\" syi=\"30003511\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Teshi I - Quafe Company Retail Center\" se=\"0.9\" si=\"60009883\" sy=\"Teshi\" syi=\"30003507\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tamo VI - Moon 10 - Quafe Company Factory\" se=\"0.3\" si=\"60009886\" sy=\"Tamo\" syi=\"30001437\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tamo IX - Quafe Company Factory\" se=\"0.3\" si=\"60009889\" sy=\"Tamo\" syi=\"30001437\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Saranen V - Moon 12 - Quafe Company Warehouse\" se=\"0.1\" si=\"60009892\" sy=\"Saranen\" syi=\"30001442\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Karjataimon VIII - Moon 1 - Quafe Company Factory\" se=\"0.3\" si=\"60009895\" sy=\"Karjataimon\" syi=\"30001440\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Saranen V - Moon 9 - Quafe Company Warehouse\" se=\"0.1\" si=\"60009898\" sy=\"Saranen\" syi=\"30001442\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tamo VI - Moon 15 - Quafe Company Warehouse\" se=\"0.3\" si=\"60009901\" sy=\"Tamo\" syi=\"30001437\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Maire V - Moon 2 - Quafe Company Factory\" se=\"0.7\" si=\"60009904\" sy=\"Maire\" syi=\"30003576\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Oerse V - Moon 4 - Quafe Company Factory\" se=\"0.6\" si=\"60009907\" sy=\"Oerse\" syi=\"30003577\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Pertnineere IV - Quafe Company Factory\" se=\"0.4\" si=\"60009910\" sy=\"Pertnineere\" syi=\"30003573\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Lour VI - Moon 7 - Quafe Company Factory\" se=\"0.6\" si=\"60009913\" sy=\"Lour\" syi=\"30003575\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Oerse VI - Moon 10 - Quafe Company Retail Center\" se=\"0.6\" si=\"60009916\" sy=\"Oerse\" syi=\"30003577\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Pertnineere VIII - Moon 2 - Quafe Company Warehouse\" se=\"0.4\" si=\"60009919\" sy=\"Pertnineere\" syi=\"30003573\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"Arant V - Moon 14 - Quafe Company Factory\" se=\"0.6\" si=\"60009922\" sy=\"Arant\" syi=\"30004994\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"Allamotte VI - Moon 2 - Quafe Company Warehouse\" se=\"0.6\" si=\"60009925\" sy=\"Allamotte\" syi=\"30004995\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"Villore VII - Moon 8 - Quafe Company Factory\" se=\"0.9\" si=\"60009928\" sy=\"Villore\" syi=\"30004993\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"Parts IV - Moon 5 - Quafe Company Factory\" se=\"0.4\" si=\"60009931\" sy=\"Parts\" syi=\"30004998\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"Parts V - Moon 1 - Quafe Company Warehouse\" se=\"0.4\" si=\"60009934\" sy=\"Parts\" syi=\"30004998\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"Old Man Star VIII - Moon 1 - Quafe Company Warehouse\" se=\"0.3\" si=\"60009937\" sy=\"Old Man Star\" syi=\"30005000\"/>\r\n    <row c=\"49A-BZ\" ci=\"20000485\" r=\"Syndicate\" ri=\"10000041\" s=\"LSC4-P I - Quafe Company Warehouse\" se=\"0.0\" si=\"60009940\" sy=\"LSC4-P\" syi=\"30003334\"/>\r\n    <row c=\"49A-BZ\" ci=\"20000485\" r=\"Syndicate\" ri=\"10000041\" s=\"2P-4LS VIII - Moon 10 - Quafe Company Factory\" se=\"0.0\" si=\"60009943\" sy=\"2P-4LS\" syi=\"30003332\"/>\r\n    <row c=\"49A-BZ\" ci=\"20000485\" r=\"Syndicate\" ri=\"10000041\" s=\"2P-4LS VIII - Moon 7 - Quafe Company Warehouse\" se=\"0.0\" si=\"60009946\" sy=\"2P-4LS\" syi=\"30003332\"/>\r\n    <row c=\"49A-BZ\" ci=\"20000485\" r=\"Syndicate\" ri=\"10000041\" s=\"2P-4LS VIII - Moon 11 - Quafe Company Warehouse\" se=\"0.0\" si=\"60009949\" sy=\"2P-4LS\" syi=\"30003332\"/>\r\n    <row c=\"49A-BZ\" ci=\"20000485\" r=\"Syndicate\" ri=\"10000041\" s=\"BY-S36 II - Quafe Company Warehouse\" se=\"0.0\" si=\"60009952\" sy=\"BY-S36\" syi=\"30003328\"/>\r\n    <row c=\"49A-BZ\" ci=\"20000485\" r=\"Syndicate\" ri=\"10000041\" s=\"BY-S36 V - Moon 6 - Quafe Company Warehouse\" se=\"0.0\" si=\"60009955\" sy=\"BY-S36\" syi=\"30003328\"/>\r\n    <row c=\"Urtfer\" ci=\"20000376\" r=\"Heimatar\" ri=\"10000030\" s=\"Trer IV - Moon 1 - Quafe Company Warehouse\" se=\"0.7\" si=\"60009958\" sy=\"Trer\" syi=\"30002562\"/>\r\n    <row c=\"Urtfer\" ci=\"20000376\" r=\"Heimatar\" ri=\"10000030\" s=\"Trer X - Moon 2 - Quafe Company Factory\" se=\"0.7\" si=\"60009961\" sy=\"Trer\" syi=\"30002562\"/>\r\n    <row c=\"Urtfer\" ci=\"20000376\" r=\"Heimatar\" ri=\"10000030\" s=\"Trer VIII - Moon 21 - Quafe Company Factory\" se=\"0.7\" si=\"60009964\" sy=\"Trer\" syi=\"30002562\"/>\r\n    <row c=\"Urtfer\" ci=\"20000376\" r=\"Heimatar\" ri=\"10000030\" s=\"Klir V - Moon 11 - Quafe Company Factory\" se=\"0.8\" si=\"60009967\" sy=\"Klir\" syi=\"30002566\"/>\r\n    <row c=\"Urtfer\" ci=\"20000376\" r=\"Heimatar\" ri=\"10000030\" s=\"Klir V - Moon 7 - Quafe Company Warehouse\" se=\"0.8\" si=\"60009970\" sy=\"Klir\" syi=\"30002566\"/>\r\n    <row c=\"Urtfer\" ci=\"20000376\" r=\"Heimatar\" ri=\"10000030\" s=\"Trer VII - Quafe Company Warehouse\" se=\"0.7\" si=\"60009973\" sy=\"Trer\" syi=\"30002562\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Iro IX - Moon 2 - Quafe Company Factory\" se=\"0.6\" si=\"60009976\" sy=\"Iro\" syi=\"30001696\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Nehkiah IV - Moon 14 - Quafe Company Factory\" se=\"0.6\" si=\"60009979\" sy=\"Nehkiah\" syi=\"30001695\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Iro XI - Quafe Company Factory\" se=\"0.6\" si=\"60009982\" sy=\"Iro\" syi=\"30001696\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Nehkiah IV - Moon 7 - Quafe Company Factory\" se=\"0.6\" si=\"60009985\" sy=\"Nehkiah\" syi=\"30001695\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Nehkiah II - Quafe Company Retail Center\" se=\"0.6\" si=\"60009988\" sy=\"Nehkiah\" syi=\"30001695\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Ahkour IX - Moon 18 - Quafe Company Warehouse\" se=\"0.7\" si=\"60009991\" sy=\"Ahkour\" syi=\"30001697\"/>\r\n    <row c=\"Charak\" ci=\"20000768\" r=\"Genesis\" ri=\"10000067\" s=\"Habu VIII - Moon 1 - Quafe Company Factory\" se=\"0.6\" si=\"60009994\" sy=\"Habu\" syi=\"30005250\"/>\r\n    <row c=\"Charak\" ci=\"20000768\" r=\"Genesis\" ri=\"10000067\" s=\"Anzalaisio V - Moon 10 - Quafe Company Factory\" se=\"0.5\" si=\"60009997\" sy=\"Anzalaisio\" syi=\"30005252\"/>\r\n    <row c=\"Charak\" ci=\"20000768\" r=\"Genesis\" ri=\"10000067\" s=\"Asanot VI - Moon 17 - Quafe Company Factory\" se=\"0.5\" si=\"60010000\" sy=\"Asanot\" syi=\"30005251\"/>\r\n    <row c=\"Charak\" ci=\"20000768\" r=\"Genesis\" ri=\"10000067\" s=\"Abhan VIII - Moon 1 - Quafe Company Warehouse\" se=\"0.6\" si=\"60010003\" sy=\"Abhan\" syi=\"30005254\"/>\r\n    <row c=\"Charak\" ci=\"20000768\" r=\"Genesis\" ri=\"10000067\" s=\"Chiga I - Moon 2 - Quafe Company Warehouse\" se=\"0.7\" si=\"60010006\" sy=\"Chiga\" syi=\"30005253\"/>\r\n    <row c=\"Charak\" ci=\"20000768\" r=\"Genesis\" ri=\"10000067\" s=\"Habu V - Quafe Company Retail Center\" se=\"0.6\" si=\"60010009\" sy=\"Habu\" syi=\"30005250\"/>\r\n    <row c=\"Mareerieh\" ci=\"20000621\" r=\"Aridia\" ri=\"10000054\" s=\"Udianoor I - Quafe Company Factory\" se=\"0.4\" si=\"60010012\" sy=\"Udianoor\" syi=\"30004245\"/>\r\n    <row c=\"Mareerieh\" ci=\"20000621\" r=\"Aridia\" ri=\"10000054\" s=\"Udianoor V - Moon 3 - Quafe Company Warehouse\" se=\"0.4\" si=\"60010015\" sy=\"Udianoor\" syi=\"30004245\"/>\r\n    <row c=\"Mareerieh\" ci=\"20000621\" r=\"Aridia\" ri=\"10000054\" s=\"Udianoor IX - Moon 17 - Quafe Company Factory\" se=\"0.4\" si=\"60010018\" sy=\"Udianoor\" syi=\"30004245\"/>\r\n    <row c=\"Mareerieh\" ci=\"20000621\" r=\"Aridia\" ri=\"10000054\" s=\"Onanam VIII - Moon 12 - Quafe Company Factory\" se=\"0.4\" si=\"60010021\" sy=\"Onanam\" syi=\"30004244\"/>\r\n    <row c=\"Mareerieh\" ci=\"20000621\" r=\"Aridia\" ri=\"10000054\" s=\"Sadana VIII - Quafe Company Warehouse\" se=\"0.4\" si=\"60010024\" sy=\"Sadana\" syi=\"30004242\"/>\r\n    <row c=\"Mareerieh\" ci=\"20000621\" r=\"Aridia\" ri=\"10000054\" s=\"Udianoor VII - Moon 4 - Quafe Company Warehouse\" se=\"0.4\" si=\"60010027\" sy=\"Udianoor\" syi=\"30004245\"/>\r\n    <row c=\"DS-M4Q\" ci=\"20000481\" r=\"Syndicate\" ri=\"10000041\" s=\"AAS-8R IV - Moon 2 - Quafe Company Warehouse\" se=\"0.0\" si=\"60010030\" sy=\"AAS-8R\" syi=\"30003293\"/>\r\n    <row c=\"DS-M4Q\" ci=\"20000481\" r=\"Syndicate\" ri=\"10000041\" s=\"V4-L0X IV - Moon 7 - Quafe Company Factory\" se=\"0.0\" si=\"60010033\" sy=\"V4-L0X\" syi=\"30003294\"/>\r\n    <row c=\"DS-M4Q\" ci=\"20000481\" r=\"Syndicate\" ri=\"10000041\" s=\"PFP-GU II - Moon 10 - Quafe Company Factory\" se=\"0.0\" si=\"60010036\" sy=\"PFP-GU\" syi=\"30003295\"/>\r\n    <row c=\"DS-M4Q\" ci=\"20000481\" r=\"Syndicate\" ri=\"10000041\" s=\"UM-Q7F X - Quafe Company Factory\" se=\"0.0\" si=\"60010039\" sy=\"UM-Q7F\" syi=\"30003298\"/>\r\n    <row c=\"DS-M4Q\" ci=\"20000481\" r=\"Syndicate\" ri=\"10000041\" s=\"KTHT-O VI - Moon 12 - Quafe Company Warehouse\" se=\"0.0\" si=\"60010042\" sy=\"KTHT-O\" syi=\"30003300\"/>\r\n    <row c=\"DS-M4Q\" ci=\"20000481\" r=\"Syndicate\" ri=\"10000041\" s=\"AAS-8R V - Quafe Company Retail Center\" se=\"0.0\" si=\"60010045\" sy=\"AAS-8R\" syi=\"30003293\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Eystur III - Moon 2 - Quafe Company Factory\" se=\"0.9\" si=\"60010048\" sy=\"Eystur\" syi=\"30002543\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Pator V (Vakir) - Moon 1 - Quafe Company Factory\" se=\"1.0\" si=\"60010051\" sy=\"Pator\" syi=\"30002544\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Lustrevik III - Moon 2 - Quafe Company Warehouse\" se=\"0.9\" si=\"60010054\" sy=\"Lustrevik\" syi=\"30002545\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Eystur IV - Quafe Company Factory\" se=\"0.9\" si=\"60010057\" sy=\"Eystur\" syi=\"30002543\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Lustrevik VII - Moon 14 - Quafe Company Warehouse\" se=\"0.9\" si=\"60010060\" sy=\"Lustrevik\" syi=\"30002545\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Emolgranlan V - Moon 3 - Quafe Company Warehouse\" se=\"0.5\" si=\"60010063\" sy=\"Emolgranlan\" syi=\"30002548\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"Dammalin I - Quafe Company Factory\" se=\"0.5\" si=\"60010066\" sy=\"Dammalin\" syi=\"30002513\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"Bosboger VIII - Moon 2 - Quafe Company Factory\" se=\"0.3\" si=\"60010069\" sy=\"Bosboger\" syi=\"30002514\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"Dammalin VII - Moon 5 - Quafe Company Factory\" se=\"0.5\" si=\"60010072\" sy=\"Dammalin\" syi=\"30002513\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"Lulm III - Quafe Company Factory\" se=\"0.3\" si=\"60010075\" sy=\"Lulm\" syi=\"30002516\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"Alakgur VIII - Moon 2 - Quafe Company Warehouse\" se=\"0.6\" si=\"60010078\" sy=\"Alakgur\" syi=\"30002512\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"Olfeim V - Moon 1 - Quafe Company Warehouse\" se=\"0.4\" si=\"60010081\" sy=\"Olfeim\" syi=\"30002515\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Penirgman IX - Moon 2 - Quafe Company Factory\" se=\"0.9\" si=\"60010084\" sy=\"Penirgman\" syi=\"30003488\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Penirgman IX - Moon 13 - Quafe Company Factory\" se=\"0.9\" si=\"60010087\" sy=\"Penirgman\" syi=\"30003488\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Penirgman IX - Quafe Company Factory\" se=\"0.9\" si=\"60010090\" sy=\"Penirgman\" syi=\"30003488\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Penirgman IX - Moon 6 - Quafe Company Factory\" se=\"0.9\" si=\"60010093\" sy=\"Penirgman\" syi=\"30003488\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Khopa X - Moon 4 - Quafe Company Warehouse\" se=\"0.8\" si=\"60010096\" sy=\"Khopa\" syi=\"30003490\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Arbaz VI - Moon 8 - Quafe Company Warehouse\" se=\"0.9\" si=\"60010099\" sy=\"Arbaz\" syi=\"30003487\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Annaro VIII - Moon 4 - Quafe Company Factory\" se=\"0.8\" si=\"60010102\" sy=\"Annaro\" syi=\"30002776\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Isutaka IV - Moon 2 - Quafe Company Factory\" se=\"0.8\" si=\"60010105\" sy=\"Isutaka\" syi=\"30002777\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Annaro VI - Moon 1 - Quafe Company Factory\" se=\"0.8\" si=\"60010108\" sy=\"Annaro\" syi=\"30002776\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Isutaka IV - Moon 3 - Quafe Company Warehouse\" se=\"0.8\" si=\"60010111\" sy=\"Isutaka\" syi=\"30002777\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Annaro I - Quafe Company Retail Center\" se=\"0.8\" si=\"60010114\" sy=\"Annaro\" syi=\"30002776\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Annaro VII - Quafe Company Warehouse\" se=\"0.8\" si=\"60010117\" sy=\"Annaro\" syi=\"30002776\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"Carirgnottin VIII - CreoDron Factory\" se=\"0.6\" si=\"60010120\" sy=\"Carirgnottin\" syi=\"30003048\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"Aydoteaux VIII - Moon 12 - CreoDron Warehouse\" se=\"0.7\" si=\"60010123\" sy=\"Aydoteaux\" syi=\"30003055\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"Avele V - Moon 11 - CreoDron Warehouse\" se=\"0.7\" si=\"60010126\" sy=\"Avele\" syi=\"30003053\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"Aydoteaux II - CreoDron Factory\" se=\"0.7\" si=\"60010129\" sy=\"Aydoteaux\" syi=\"30003055\"/>\r\n    <row c=\"Nakid\" ci=\"20000518\" r=\"Domain\" ri=\"10000043\" s=\"Jambu VI - Moon 3 - CreoDron Factory\" se=\"0.5\" si=\"60010132\" sy=\"Jambu\" syi=\"30003554\"/>\r\n    <row c=\"Nakid\" ci=\"20000518\" r=\"Domain\" ri=\"10000043\" s=\"Arton II - CreoDron Factory\" se=\"0.4\" si=\"60010135\" sy=\"Arton\" syi=\"30003556\"/>\r\n    <row c=\"Nakid\" ci=\"20000518\" r=\"Domain\" ri=\"10000043\" s=\"Bittanshal VII - Moon 9 - CreoDron Factory\" se=\"0.5\" si=\"60010138\" sy=\"Bittanshal\" syi=\"30003555\"/>\r\n    <row c=\"Nakid\" ci=\"20000518\" r=\"Domain\" ri=\"10000043\" s=\"Warouh VII - Moon 1 - CreoDron Factory\" se=\"0.5\" si=\"60010141\" sy=\"Warouh\" syi=\"30003553\"/>\r\n    <row c=\"Panorad\" ci=\"20000503\" r=\"Metropolis\" ri=\"10000042\" s=\"Josekorn IV - CreoDron Factory\" se=\"0.6\" si=\"60010144\" sy=\"Josekorn\" syi=\"30003447\"/>\r\n    <row c=\"Panorad\" ci=\"20000503\" r=\"Metropolis\" ri=\"10000042\" s=\"Hakeri XI - Moon 5 - CreoDron Factory\" se=\"0.7\" si=\"60010147\" sy=\"Hakeri\" syi=\"30003449\"/>\r\n    <row c=\"Panorad\" ci=\"20000503\" r=\"Metropolis\" ri=\"10000042\" s=\"Josekorn VIII - CreoDron Factory\" se=\"0.6\" si=\"60010150\" sy=\"Josekorn\" syi=\"30003447\"/>\r\n    <row c=\"Panorad\" ci=\"20000503\" r=\"Metropolis\" ri=\"10000042\" s=\"Josekorn X - Moon 1 - CreoDron Factory\" se=\"0.6\" si=\"60010153\" sy=\"Josekorn\" syi=\"30003447\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"Droselory VI - Moon 17 - CreoDron Warehouse\" se=\"0.5\" si=\"60010156\" sy=\"Droselory\" syi=\"30005011\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"Allebin VIII - Moon 4 - CreoDron Factory\" se=\"0.5\" si=\"60010159\" sy=\"Allebin\" syi=\"30005009\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"Atlulle VIII - Moon 6 - CreoDron Factory\" se=\"0.4\" si=\"60010162\" sy=\"Atlulle\" syi=\"30005010\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"Atlulle III - CreoDron Factory\" se=\"0.4\" si=\"60010165\" sy=\"Atlulle\" syi=\"30005010\"/>\r\n    <row c=\"Evannater\" ci=\"20000375\" r=\"Heimatar\" ri=\"10000030\" s=\"Endrulf VIII - Moon 1 - CreoDron Warehouse\" se=\"0.6\" si=\"60010168\" sy=\"Endrulf\" syi=\"30002558\"/>\r\n    <row c=\"Evannater\" ci=\"20000375\" r=\"Heimatar\" ri=\"10000030\" s=\"Endrulf IV - Moon 1 - CreoDron Warehouse\" se=\"0.6\" si=\"60010171\" sy=\"Endrulf\" syi=\"30002558\"/>\r\n    <row c=\"Evannater\" ci=\"20000375\" r=\"Heimatar\" ri=\"10000030\" s=\"Ingunn V - Moon 21 - CreoDron Factory\" se=\"0.3\" si=\"60010174\" sy=\"Ingunn\" syi=\"30002559\"/>\r\n    <row c=\"Evannater\" ci=\"20000375\" r=\"Heimatar\" ri=\"10000030\" s=\"Gultratren V - Moon 22 - CreoDron Factory\" se=\"0.3\" si=\"60010177\" sy=\"Gultratren\" syi=\"30002560\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Weld IV - Moon 4 - CreoDron Factory\" se=\"0.3\" si=\"60010180\" sy=\"Weld\" syi=\"30002415\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Klingt IX - Moon 11 - CreoDron Factory\" se=\"0.3\" si=\"60010183\" sy=\"Klingt\" syi=\"30002414\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Hegfunden VIII - Moon 14 - CreoDron Factory\" se=\"0.3\" si=\"60010186\" sy=\"Hegfunden\" syi=\"30002418\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Hegfunden VIII - Moon 26 - CreoDron Factory\" se=\"0.3\" si=\"60010189\" sy=\"Hegfunden\" syi=\"30002418\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"Reisen VI - CreoDron Factory\" se=\"0.5\" si=\"60010192\" sy=\"Reisen\" syi=\"30000160\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"Ikami X - CreoDron Factory\" se=\"0.5\" si=\"60010195\" sy=\"Ikami\" syi=\"30000159\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"Akora IX - Moon 19 - CreoDron Factory\" se=\"0.3\" si=\"60010198\" sy=\"Akora\" syi=\"30000163\"/>\r\n    <row c=\"Ihatalo\" ci=\"20000023\" r=\"The Forge\" ri=\"10000002\" s=\"Messoya VIII - Moon 6 - CreoDron Factory\" se=\"0.3\" si=\"60010201\" sy=\"Messoya\" syi=\"30000164\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Seyllin VIII - Moon 14 - CreoDron Warehouse\" se=\"0.4\" si=\"60010204\" sy=\"Seyllin\" syi=\"30005020\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Yona VI - Moon 5 - CreoDron Factory\" se=\"0.8\" si=\"60010207\" sy=\"Yona\" syi=\"30005017\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Noghere VII - Moon 15 - CreoDron Warehouse\" se=\"0.7\" si=\"60010210\" sy=\"Noghere\" syi=\"30005018\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Noghere VIII - Moon 18 - CreoDron Warehouse\" se=\"0.7\" si=\"60010213\" sy=\"Noghere\" syi=\"30005018\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Lirsautton I - CreoDron Factory\" se=\"0.8\" si=\"60010216\" sy=\"Lirsautton\" syi=\"30003025\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Marosier IV - Moon 2 - CreoDron Factory\" se=\"0.6\" si=\"60010219\" sy=\"Marosier\" syi=\"30003024\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Jaschercis IV - Moon 2 - CreoDron Factory\" se=\"0.6\" si=\"60010222\" sy=\"Jaschercis\" syi=\"30003029\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Ardallabier III - Moon 14 - CreoDron Factory\" se=\"0.7\" si=\"60010225\" sy=\"Ardallabier\" syi=\"30003030\"/>\r\n    <row c=\"Kakol\" ci=\"20000597\" r=\"Kador\" ri=\"10000052\" s=\"Ghesis V - Moon 2 - CreoDron Factory\" se=\"0.5\" si=\"60010228\" sy=\"Ghesis\" syi=\"30004084\"/>\r\n    <row c=\"Kakol\" ci=\"20000597\" r=\"Kador\" ri=\"10000052\" s=\"Ghesis V - Moon 9 - CreoDron Factory\" se=\"0.5\" si=\"60010231\" sy=\"Ghesis\" syi=\"30004084\"/>\r\n    <row c=\"Kakol\" ci=\"20000597\" r=\"Kador\" ri=\"10000052\" s=\"Ghesis V - Moon 13 - CreoDron Factory\" se=\"0.5\" si=\"60010234\" sy=\"Ghesis\" syi=\"30004084\"/>\r\n    <row c=\"Kakol\" ci=\"20000597\" r=\"Kador\" ri=\"10000052\" s=\"Ghesis V - Moon 3 - CreoDron Factory\" se=\"0.5\" si=\"60010237\" sy=\"Ghesis\" syi=\"30004084\"/>\r\n    <row c=\"Nashar\" ci=\"20000330\" r=\"Domain\" ri=\"10000043\" s=\"Bika III - CreoDron Factory\" se=\"0.5\" si=\"60010240\" sy=\"Bika\" syi=\"30002252\"/>\r\n    <row c=\"Nashar\" ci=\"20000330\" r=\"Domain\" ri=\"10000043\" s=\"Bika VIII - Moon 11 - CreoDron Warehouse\" se=\"0.5\" si=\"60010243\" sy=\"Bika\" syi=\"30002252\"/>\r\n    <row c=\"Nashar\" ci=\"20000330\" r=\"Domain\" ri=\"10000043\" s=\"Bika V - Moon 1 - CreoDron Warehouse\" se=\"0.5\" si=\"60010246\" sy=\"Bika\" syi=\"30002252\"/>\r\n    <row c=\"Nashar\" ci=\"20000330\" r=\"Domain\" ri=\"10000043\" s=\"Bika VII - Moon 1 - CreoDron Factory\" se=\"0.5\" si=\"60010249\" sy=\"Bika\" syi=\"30002252\"/>\r\n    <row c=\"Chasnaye\" ci=\"20000442\" r=\"Everyshore\" ri=\"10000037\" s=\"Harerget V - Moon 1 - CreoDron Factory\" se=\"0.8\" si=\"60010252\" sy=\"Harerget\" syi=\"30003017\"/>\r\n    <row c=\"Chasnaye\" ci=\"20000442\" r=\"Everyshore\" ri=\"10000037\" s=\"Azer VI - Moon 1 - CreoDron Warehouse\" se=\"0.7\" si=\"60010255\" sy=\"Azer\" syi=\"30003018\"/>\r\n    <row c=\"Chasnaye\" ci=\"20000442\" r=\"Everyshore\" ri=\"10000037\" s=\"Harerget VIII - Moon 1 - CreoDron Factory\" se=\"0.8\" si=\"60010258\" sy=\"Harerget\" syi=\"30003017\"/>\r\n    <row c=\"Chasnaye\" ci=\"20000442\" r=\"Everyshore\" ri=\"10000037\" s=\"Azer III - Moon 6 - CreoDron Factory\" se=\"0.7\" si=\"60010261\" sy=\"Azer\" syi=\"30003018\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Bapraya IV - Moon 1 - CreoDron Factory\" se=\"0.3\" si=\"60010264\" sy=\"Bapraya\" syi=\"30004296\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Ghekon V - Moon 5 - CreoDron Factory\" se=\"0.4\" si=\"60010267\" sy=\"Ghekon\" syi=\"30004288\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Anohel VI - Moon 14 - CreoDron Factory\" se=\"0.1\" si=\"60010270\" sy=\"Anohel\" syi=\"30004291\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Ghekon II - Moon 2 - CreoDron Factory\" se=\"0.4\" si=\"60010273\" sy=\"Ghekon\" syi=\"30004288\"/>\r\n    <row c=\"Parrosa\" ci=\"20000601\" r=\"Kador\" ri=\"10000052\" s=\"Mandoo III - Moon 11 - CreoDron Factory\" se=\"0.5\" si=\"60010276\" sy=\"Mandoo\" syi=\"30004112\"/>\r\n    <row c=\"Parrosa\" ci=\"20000601\" r=\"Kador\" ri=\"10000052\" s=\"Yarebap VII - Moon 8 - CreoDron Factory\" se=\"0.5\" si=\"60010279\" sy=\"Yarebap\" syi=\"30004111\"/>\r\n    <row c=\"Parrosa\" ci=\"20000601\" r=\"Kador\" ri=\"10000052\" s=\"Mandoo III - Moon 5 - CreoDron Factory\" se=\"0.5\" si=\"60010282\" sy=\"Mandoo\" syi=\"30004112\"/>\r\n    <row c=\"Parrosa\" ci=\"20000601\" r=\"Kador\" ri=\"10000052\" s=\"Peyiri XI - Moon 21 - CreoDron Warehouse\" se=\"0.5\" si=\"60010285\" sy=\"Peyiri\" syi=\"30004114\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"Oremmulf IX - Moon 6 - CreoDron Factory\" se=\"0.9\" si=\"60010288\" sy=\"Oremmulf\" syi=\"30002571\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"Onga VI - CreoDron Factory\" se=\"1.0\" si=\"60010291\" sy=\"Onga\" syi=\"30002568\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"Osaumuni VII - Moon 16 - CreoDron Factory\" se=\"0.9\" si=\"60010294\" sy=\"Osaumuni\" syi=\"30002569\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"Onga X - Moon 11 - CreoDron Warehouse\" se=\"1.0\" si=\"60010297\" sy=\"Onga\" syi=\"30002568\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Alentene VI - Moon 6 - Roden Shipyards Warehouse\" se=\"0.9\" si=\"60010300\" sy=\"Alentene\" syi=\"30005304\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Alenia V - Moon 4 - Roden Shipyards Factory\" se=\"0.9\" si=\"60010303\" sy=\"Alenia\" syi=\"30005302\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Alenia V - Moon 12 - Roden Shipyards Factory\" se=\"0.9\" si=\"60010306\" sy=\"Alenia\" syi=\"30005302\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"Halle VII - Moon 1 - Roden Shipyards Factory\" se=\"0.7\" si=\"60010309\" sy=\"Halle\" syi=\"30003010\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"Junsoraert XI - Moon 9 - Roden Shipyards Factory\" se=\"0.5\" si=\"60010312\" sy=\"Junsoraert\" syi=\"30003016\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"Bereye III - Moon 1 - Roden Shipyards Factory\" se=\"0.9\" si=\"60010315\" sy=\"Bereye\" syi=\"30003014\"/>\r\n    <row c=\"Aeman\" ci=\"20000398\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Miroitem I - Roden Shipyards Factory\" se=\"0.3\" si=\"60010318\" sy=\"Miroitem\" syi=\"30002719\"/>\r\n    <row c=\"Aeman\" ci=\"20000398\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Rancer VII - Moon 17 - Roden Shipyards Warehouse\" se=\"0.4\" si=\"60010321\" sy=\"Rancer\" syi=\"30002718\"/>\r\n    <row c=\"Aeman\" ci=\"20000398\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Rancer IV - Moon 18 - Roden Shipyards Factory\" se=\"0.4\" si=\"60010324\" sy=\"Rancer\" syi=\"30002718\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"Vlillirier IV - Roden Shipyards Factory\" se=\"0.3\" si=\"60010327\" sy=\"Vlillirier\" syi=\"30003836\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"Vlillirier VI - Moon 1 - Roden Shipyards Factory\" se=\"0.3\" si=\"60010330\" sy=\"Vlillirier\" syi=\"30003836\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"Vlillirier VII - Roden Shipyards Factory\" se=\"0.3\" si=\"60010333\" sy=\"Vlillirier\" syi=\"30003836\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Gisleres IV - Moon 6 - Roden Shipyards Warehouse\" se=\"0.8\" si=\"60010336\" sy=\"Gisleres\" syi=\"30005312\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Jufvitte VI - Moon 4 - Roden Shipyards Factory\" se=\"0.5\" si=\"60010339\" sy=\"Jufvitte\" syi=\"30005308\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Scheenins II - Moon 2 - Roden Shipyards Factory\" se=\"0.5\" si=\"60010342\" sy=\"Scheenins\" syi=\"30005310\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Egghelende VII - Moon 22 - Roden Shipyards Factory\" se=\"0.4\" si=\"60010345\" sy=\"Egghelende\" syi=\"30002693\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Jel VIII - Moon 12 - Roden Shipyards Factory\" se=\"0.6\" si=\"60010348\" sy=\"Jel\" syi=\"30002692\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Jel I - Roden Shipyards Warehouse\" se=\"0.6\" si=\"60010351\" sy=\"Jel\" syi=\"30002692\"/>\r\n    <row c=\"Elerelle\" ci=\"20000524\" r=\"Solitude\" ri=\"10000044\" s=\"Ogaria I - Roden Shipyards Warehouse\" se=\"0.2\" si=\"60010354\" sy=\"Ogaria\" syi=\"30003598\"/>\r\n    <row c=\"Elerelle\" ci=\"20000524\" r=\"Solitude\" ri=\"10000044\" s=\"Heluene V - Roden Shipyards Factory\" se=\"0.2\" si=\"60010357\" sy=\"Heluene\" syi=\"30003594\"/>\r\n    <row c=\"Elerelle\" ci=\"20000524\" r=\"Solitude\" ri=\"10000044\" s=\"Heluene IV - Roden Shipyards Factory\" se=\"0.2\" si=\"60010360\" sy=\"Heluene\" syi=\"30003594\"/>\r\n    <row c=\"Woenckee\" ci=\"20000775\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Loes V - Moon 19 - Roden Shipyards Warehouse\" se=\"0.3\" si=\"60010363\" sy=\"Loes\" syi=\"30005300\"/>\r\n    <row c=\"Woenckee\" ci=\"20000775\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Loes III - Roden Shipyards Factory\" se=\"0.3\" si=\"60010366\" sy=\"Loes\" syi=\"30005300\"/>\r\n    <row c=\"Woenckee\" ci=\"20000775\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Melmaniel VII - Moon 8 - Roden Shipyards Factory\" se=\"0.3\" si=\"60010369\" sy=\"Melmaniel\" syi=\"30005296\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Seyllin VI - Moon 3 - Roden Shipyards Factory\" se=\"0.4\" si=\"60010372\" sy=\"Seyllin\" syi=\"30005020\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Aporulie VI - Moon 7 - Roden Shipyards Factory\" se=\"0.8\" si=\"60010375\" sy=\"Aporulie\" syi=\"30005019\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Ane IV - Moon 3 - Roden Shipyards Warehouse\" se=\"0.3\" si=\"60010378\" sy=\"Ane\" syi=\"30005022\"/>\r\n    <row c=\"Gallente Border Zone\" ci=\"20000387\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Carrou IV - Moon 13 - Roden Shipyards Factory\" se=\"0.4\" si=\"60010381\" sy=\"Carrou\" syi=\"30002645\"/>\r\n    <row c=\"Gallente Border Zone\" ci=\"20000387\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Faurent VII - Moon 4 - Roden Shipyards Factory\" se=\"0.5\" si=\"60010384\" sy=\"Faurent\" syi=\"30002643\"/>\r\n    <row c=\"Gallente Border Zone\" ci=\"20000387\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Iyen-Oursta III - Roden Shipyards Factory\" se=\"0.8\" si=\"60010387\" sy=\"Iyen-Oursta\" syi=\"30002642\"/>\r\n    <row c=\"Braille\" ci=\"20000520\" r=\"Solitude\" ri=\"10000044\" s=\"Elore V - Moon 4 - Allotek Industries Warehouse\" se=\"0.2\" si=\"60010390\" sy=\"Elore\" syi=\"30003570\"/>\r\n    <row c=\"Braille\" ci=\"20000520\" r=\"Solitude\" ri=\"10000044\" s=\"Anckee V - Moon 10 - Allotek Industries Factory\" se=\"0.2\" si=\"60010393\" sy=\"Anckee\" syi=\"30003571\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Alentene VI - Moon 16 - Poteque Pharmaceuticals Biotech Research Center\" se=\"0.9\" si=\"60010396\" sy=\"Alentene\" syi=\"30005304\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Tourier I - Poteque Pharmaceuticals Biotech Production\" se=\"0.9\" si=\"60010399\" sy=\"Tourier\" syi=\"30005301\"/>\r\n    <row c=\"Ravin\" ci=\"20000741\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Arzi X - Moon 1 - Poteque Pharmaceuticals Biotech Production\" se=\"0.1\" si=\"60010402\" sy=\"Arzi\" syi=\"30005065\"/>\r\n    <row c=\"Ravin\" ci=\"20000741\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Abath V - Moon 2 - Poteque Pharmaceuticals Biotech Production\" se=\"0.2\" si=\"60010405\" sy=\"Abath\" syi=\"30005062\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"Lulm V - Moon 10 - Poteque Pharmaceuticals Biotech Production\" se=\"0.3\" si=\"60010408\" sy=\"Lulm\" syi=\"30002516\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"Gulmorogod VII - Moon 16 - Poteque Pharmaceuticals Biotech Research Center\" se=\"0.4\" si=\"60010411\" sy=\"Gulmorogod\" syi=\"30002517\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Floseswin VII - Moon 5 - Poteque Pharmaceuticals Biotech Production\" se=\"0.4\" si=\"60010414\" sy=\"Floseswin\" syi=\"30002082\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Floseswin VI - Moon 2 - Poteque Pharmaceuticals Biotech Production\" se=\"0.4\" si=\"60010417\" sy=\"Floseswin\" syi=\"30002082\"/>\r\n    <row c=\"Orus\" ci=\"20000742\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Latari X - Moon 4 - Poteque Pharmaceuticals Biotech Research Center\" se=\"0.6\" si=\"60010420\" sy=\"Latari\" syi=\"30005075\"/>\r\n    <row c=\"Orus\" ci=\"20000742\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nahol X - Moon 1 - Poteque Pharmaceuticals Biotech Production\" se=\"0.6\" si=\"60010423\" sy=\"Nahol\" syi=\"30005069\"/>\r\n    <row c=\"Aven\" ci=\"20000771\" r=\"Genesis\" ri=\"10000067\" s=\"Simela VI - Moon 2 - Poteque Pharmaceuticals Biotech Research Center\" se=\"0.5\" si=\"60010426\" sy=\"Simela\" syi=\"30005269\"/>\r\n    <row c=\"Aven\" ci=\"20000771\" r=\"Genesis\" ri=\"10000067\" s=\"Galnafsad VI - Moon 18 - Poteque Pharmaceuticals Biotech Production\" se=\"0.2\" si=\"60010429\" sy=\"Galnafsad\" syi=\"30005273\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"Reset V - Moon 14 - Poteque Pharmaceuticals Biotech Production\" se=\"0.7\" si=\"60010432\" sy=\"Reset\" syi=\"30003391\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"Reset VII - Moon 11 - Poteque Pharmaceuticals Biotech Research Center\" se=\"0.7\" si=\"60010435\" sy=\"Reset\" syi=\"30003391\"/>\r\n    <row c=\"Krai Svarog\" ci=\"20000788\" r=\"Pochven\" ri=\"10000070\" s=\"Nani V - Moon 18 - Svarog Clade Bioadaptation Chambers\" se=\"0.0\" si=\"60010438\" sy=\"Nani\" syi=\"30001413\"/>\r\n    <row c=\"Krai Svarog\" ci=\"20000788\" r=\"Pochven\" ri=\"10000070\" s=\"Nani VIII - Moon 2 - Svarog Clade Mutaplasmid Farm\" se=\"0.0\" si=\"60010441\" sy=\"Nani\" syi=\"30001413\"/>\r\n    <row c=\"Peccanouette\" ci=\"20000732\" r=\"Essence\" ri=\"10000064\" s=\"Lisbaetanne I - Moon 1 - Poteque Pharmaceuticals Biotech Production\" se=\"0.4\" si=\"60010444\" sy=\"Lisbaetanne\" syi=\"30005007\"/>\r\n    <row c=\"Peccanouette\" ci=\"20000732\" r=\"Essence\" ri=\"10000064\" s=\"Attyn V - Moon 13 - Poteque Pharmaceuticals Biotech Production\" se=\"0.7\" si=\"60010447\" sy=\"Attyn\" syi=\"30005004\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Augnais VI - Moon 1 - Poteque Pharmaceuticals Biotech Production\" se=\"0.5\" si=\"60010450\" sy=\"Augnais\" syi=\"30002680\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Audaerne X - Moon 3 - Poteque Pharmaceuticals Biotech Production\" se=\"0.5\" si=\"60010453\" sy=\"Audaerne\" syi=\"30002684\"/>\r\n    <row c=\"Mivora\" ci=\"20000028\" r=\"The Forge\" ri=\"10000002\" s=\"Otosela VII - Moon 4 - Poteque Pharmaceuticals Biotech Production\" se=\"0.2\" si=\"60010456\" sy=\"Otosela\" syi=\"30000196\"/>\r\n    <row c=\"Mivora\" ci=\"20000028\" r=\"The Forge\" ri=\"10000002\" s=\"Otosela V - Moon 7 - Poteque Pharmaceuticals Biotech Production\" se=\"0.2\" si=\"60010459\" sy=\"Otosela\" syi=\"30000196\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Imih III - Moon 8 - Poteque Pharmaceuticals Biotech Research Center\" se=\"0.6\" si=\"60010462\" sy=\"Imih\" syi=\"30005053\"/>\r\n    <row c=\"Panoumid\" ci=\"20000739\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nare IV - Moon 6 - Poteque Pharmaceuticals Biotech Production\" se=\"0.6\" si=\"60010465\" sy=\"Nare\" syi=\"30005054\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Iges VI - Moon 3 - Poteque Pharmaceuticals Biotech Production\" se=\"0.3\" si=\"60010468\" sy=\"Iges\" syi=\"30003796\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Covryn VII - Moon 2 - Poteque Pharmaceuticals Biotech Production\" se=\"0.4\" si=\"60010471\" sy=\"Covryn\" syi=\"30003795\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Klogori III - Poteque Pharmaceuticals Biotech Production\" se=\"0.3\" si=\"60010474\" sy=\"Klogori\" syi=\"30002097\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Orfrold VII - Moon 8 - Poteque Pharmaceuticals Biotech Production\" se=\"0.2\" si=\"60010477\" sy=\"Orfrold\" syi=\"30002098\"/>\r\n    <row c=\"Goins\" ci=\"20000523\" r=\"Solitude\" ri=\"10000044\" s=\"Yvaeroure XI - Moon 7 - Poteque Pharmaceuticals Biotech Production\" se=\"0.8\" si=\"60010480\" sy=\"Yvaeroure\" syi=\"30003588\"/>\r\n    <row c=\"Goins\" ci=\"20000523\" r=\"Solitude\" ri=\"10000044\" s=\"Stoure IX - Moon 1 - Poteque Pharmaceuticals Biotech Research Center\" se=\"0.7\" si=\"60010483\" sy=\"Stoure\" syi=\"30003593\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"Atlanins III - Impetus Publisher\" se=\"0.6\" si=\"60010486\" sy=\"Atlanins\" syi=\"30003038\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"Bille IX - Moon 3 - Impetus Development Studio\" se=\"0.5\" si=\"60010489\" sy=\"Bille\" syi=\"30003040\"/>\r\n    <row c=\"Sanair\" ci=\"20000243\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Tividu V - Moon 7 - Impetus Development Studio\" se=\"0.6\" si=\"60010492\" sy=\"Tividu\" syi=\"30001644\"/>\r\n    <row c=\"Sanair\" ci=\"20000243\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Goram III - Moon 2 - Impetus Development Studio\" se=\"0.6\" si=\"60010495\" sy=\"Goram\" syi=\"30001646\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Bridi III - Moon 2 - Impetus Publisher\" se=\"0.4\" si=\"60010498\" sy=\"Bridi\" syi=\"30005034\"/>\r\n    <row c=\"Jatari\" ci=\"20000736\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nebian VIII - Moon 2 - Impetus Development Studio\" se=\"0.4\" si=\"60010501\" sy=\"Nebian\" syi=\"30005031\"/>\r\n    <row c=\"Nasorin\" ci=\"20000252\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Taru IV - Moon 1 - Impetus Development Studio\" se=\"0.8\" si=\"60010504\" sy=\"Taru\" syi=\"30001703\"/>\r\n    <row c=\"Nasorin\" ci=\"20000252\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Azhgabid III - Moon 5 - Impetus Development Studio\" se=\"0.8\" si=\"60010507\" sy=\"Azhgabid\" syi=\"30001705\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Stetille VII - Moon 2 - Impetus Development Studio\" se=\"0.9\" si=\"60010510\" sy=\"Stetille\" syi=\"30002711\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Stetille II - Impetus Publisher\" se=\"0.9\" si=\"60010513\" sy=\"Stetille\" syi=\"30002711\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Maire V - Moon 2 - Impetus Development Studio\" se=\"0.7\" si=\"60010516\" sy=\"Maire\" syi=\"30003576\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Pertnineere VI - Moon 11 - Impetus Development Studio\" se=\"0.4\" si=\"60010519\" sy=\"Pertnineere\" syi=\"30003573\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"Frerstorn V - Moon 1 - Impetus Development Studio\" se=\"0.3\" si=\"60010522\" sy=\"Frerstorn\" syi=\"30002090\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"Ontorn VII - Moon 11 - Impetus Development Studio\" se=\"0.3\" si=\"60010525\" sy=\"Ontorn\" syi=\"30002091\"/>\r\n    <row c=\"Tid\" ci=\"20000624\" r=\"Aridia\" ri=\"10000054\" s=\"Sota III - Moon 12 - Impetus Development Studio\" se=\"0.3\" si=\"60010528\" sy=\"Sota\" syi=\"30004272\"/>\r\n    <row c=\"Tid\" ci=\"20000624\" r=\"Aridia\" ri=\"10000054\" s=\"Shenda VIII - Moon 15 - Impetus Development Studio\" se=\"0.5\" si=\"60010531\" sy=\"Shenda\" syi=\"30004268\"/>\r\n    <row c=\"Wiedadur\" ci=\"20000371\" r=\"Heimatar\" ri=\"10000030\" s=\"Ebasgerdur III - Impetus Development Studio\" se=\"0.8\" si=\"60010534\" sy=\"Ebasgerdur\" syi=\"30002535\"/>\r\n    <row c=\"Wiedadur\" ci=\"20000371\" r=\"Heimatar\" ri=\"10000030\" s=\"Gerek V - Moon 14 - Impetus Development Studio\" se=\"0.7\" si=\"60010537\" sy=\"Gerek\" syi=\"30002531\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"Oiniken VII - Moon 2 - Impetus Development Studio\" se=\"0.7\" si=\"60010540\" sy=\"Oiniken\" syi=\"30002750\"/>\r\n    <row c=\"Arekin\" ci=\"20000403\" r=\"The Citadel\" ri=\"10000033\" s=\"Oiniken XI - Moon 12 - Impetus Development Studio\" se=\"0.7\" si=\"60010543\" sy=\"Oiniken\" syi=\"30002750\"/>\r\n    <row c=\"MK7-AO\" ci=\"20000483\" r=\"Syndicate\" ri=\"10000041\" s=\"VV-VCR VII - Moon 2 - Impetus Development Studio\" se=\"0.0\" si=\"60010546\" sy=\"VV-VCR\" syi=\"30003309\"/>\r\n    <row c=\"MK7-AO\" ci=\"20000483\" r=\"Syndicate\" ri=\"10000041\" s=\"DP34-U VII - Moon 1 - Impetus Development Studio\" se=\"0.0\" si=\"60010549\" sy=\"DP34-U\" syi=\"30003314\"/>\r\n    <row c=\"Lorundio\" ci=\"20000493\" r=\"Metropolis\" ri=\"10000042\" s=\"Eust I - Impetus Development Studio\" se=\"0.7\" si=\"60010552\" sy=\"Eust\" syi=\"30003381\"/>\r\n    <row c=\"Lorundio\" ci=\"20000493\" r=\"Metropolis\" ri=\"10000042\" s=\"Evuldgenzo VI - Moon 2 - Impetus Development Studio\" se=\"0.7\" si=\"60010555\" sy=\"Evuldgenzo\" syi=\"30003385\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Mabnen V - Moon 16 - Impetus Development Studio\" se=\"0.9\" si=\"60010558\" sy=\"Mabnen\" syi=\"30002190\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Mabnen VII - Moon 5 - Impetus Development Studio\" se=\"0.9\" si=\"60010561\" sy=\"Mabnen\" syi=\"30002190\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Enal X - Impetus Development Studio\" se=\"0.4\" si=\"60010564\" sy=\"Enal\" syi=\"30005082\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Ranni IX - Moon 10 - Impetus Development Studio\" se=\"0.4\" si=\"60010567\" sy=\"Ranni\" syi=\"30005085\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Eitu VII - Moon 4 - Impetus Development Studio\" se=\"0.5\" si=\"60010570\" sy=\"Eitu\" syi=\"30002740\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Eitu VII - Moon 2 - Impetus Development Studio\" se=\"0.5\" si=\"60010573\" sy=\"Eitu\" syi=\"30002740\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"Uphene VI - Moon 16 - Egonics Inc. Development Studio\" se=\"0.6\" si=\"60010576\" sy=\"Uphene\" syi=\"30003043\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"Bille XI - Moon 1 - Egonics Inc. Development Studio\" se=\"0.5\" si=\"60010579\" sy=\"Bille\" syi=\"30003040\"/>\r\n    <row c=\"Firille\" ci=\"20000390\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Pulin V - Moon 8 - Egonics Inc. Development Studio\" se=\"0.5\" si=\"60010582\" sy=\"Pulin\" syi=\"30002662\"/>\r\n    <row c=\"Firille\" ci=\"20000390\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Alles VI - Moon 12 - Egonics Inc. Development Studio\" se=\"0.8\" si=\"60010585\" sy=\"Alles\" syi=\"30002664\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Groothese X - Moon 10 - Egonics Inc. Development Studio\" se=\"0.3\" si=\"60010588\" sy=\"Groothese\" syi=\"30003057\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Mannar IV - Moon 1 - Egonics Inc. Publisher\" se=\"0.3\" si=\"60010591\" sy=\"Mannar\" syi=\"30003060\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"Ethernity VI - Moon 17 - Egonics Inc. Development Studio\" se=\"0.9\" si=\"60010594\" sy=\"Ethernity\" syi=\"30003033\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"Ethernity VI - Moon 16 - Egonics Inc. Development Studio\" se=\"0.9\" si=\"60010597\" sy=\"Ethernity\" syi=\"30003033\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Auberulle VIII - Moon 1 - Egonics Inc. Development Studio\" se=\"0.8\" si=\"60010600\" sy=\"Auberulle\" syi=\"30002709\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Stetille IX - Moon 2 - Egonics Inc. Development Studio\" se=\"0.9\" si=\"60010603\" sy=\"Stetille\" syi=\"30002711\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Parchanier VI - Moon 15 - Egonics Inc. Development Studio\" se=\"0.9\" si=\"60010606\" sy=\"Parchanier\" syi=\"30002676\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Parchanier V - Egonics Inc. Development Studio\" se=\"0.9\" si=\"60010609\" sy=\"Parchanier\" syi=\"30002676\"/>\r\n    <row c=\"Woenckee\" ci=\"20000775\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Melmaniel VI - Moon 6 - Egonics Inc. Development Studio\" se=\"0.3\" si=\"60010612\" sy=\"Melmaniel\" syi=\"30005296\"/>\r\n    <row c=\"Woenckee\" ci=\"20000775\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Ouelletta V - Moon 1 - Egonics Inc. Development Studio\" se=\"0.4\" si=\"60010615\" sy=\"Ouelletta\" syi=\"30005297\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Lirsautton X - Moon 1 - Egonics Inc. Development Studio\" se=\"0.8\" si=\"60010618\" sy=\"Lirsautton\" syi=\"30003025\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Blameston VI - Moon 10 - Egonics Inc. Development Studio\" se=\"1.0\" si=\"60010621\" sy=\"Blameston\" syi=\"30003026\"/>\r\n    <row c=\"Aeman\" ci=\"20000398\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Rancer V - Moon 7 - Egonics Inc. Development Studio\" se=\"0.4\" si=\"60010624\" sy=\"Rancer\" syi=\"30002718\"/>\r\n    <row c=\"Aeman\" ci=\"20000398\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Otou V - Moon 7 - Egonics Inc. Development Studio\" se=\"0.3\" si=\"60010627\" sy=\"Otou\" syi=\"30002723\"/>\r\n    <row c=\"Mobrault\" ci=\"20000525\" r=\"Solitude\" ri=\"10000044\" s=\"Ratillose VI - Moon 4 - Egonics Inc. Development Studio\" se=\"0.4\" si=\"60010630\" sy=\"Ratillose\" syi=\"30003602\"/>\r\n    <row c=\"Mobrault\" ci=\"20000525\" r=\"Solitude\" ri=\"10000044\" s=\"Ratillose V - Moon 14 - Egonics Inc. Development Studio\" se=\"0.4\" si=\"60010633\" sy=\"Ratillose\" syi=\"30003602\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"Orvolle VI - Moon 1 - The Scope Development Studio\" se=\"0.7\" si=\"60010636\" sy=\"Orvolle\" syi=\"30003830\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"Adacyne V - Moon 8 - The Scope Development Studio\" se=\"0.5\" si=\"60010639\" sy=\"Adacyne\" syi=\"30003832\"/>\r\n    <row c=\"Araz\" ci=\"20000603\" r=\"Kador\" ri=\"10000052\" s=\"Chanoun IX - The Scope Development Studio\" se=\"0.5\" si=\"60010642\" sy=\"Chanoun\" syi=\"30004122\"/>\r\n    <row c=\"Araz\" ci=\"20000603\" r=\"Kador\" ri=\"10000052\" s=\"Nidupad VIII - Moon 17 - The Scope Publisher\" se=\"0.5\" si=\"60010645\" sy=\"Nidupad\" syi=\"30004126\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Gisleres V - Moon 7 - The Scope Development Studio\" se=\"0.8\" si=\"60010648\" sy=\"Gisleres\" syi=\"30005312\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Gisleres IV - Moon 2 - The Scope Development Studio\" se=\"0.8\" si=\"60010651\" sy=\"Gisleres\" syi=\"30005312\"/>\r\n    <row c=\"Ashela\" ci=\"20000762\" r=\"Genesis\" ri=\"10000067\" s=\"Nardiarang VI - The Scope Development Studio\" se=\"0.4\" si=\"60010654\" sy=\"Nardiarang\" syi=\"30005207\"/>\r\n    <row c=\"Ashela\" ci=\"20000762\" r=\"Genesis\" ri=\"10000067\" s=\"Nardiarang II - The Scope Development Studio\" se=\"0.4\" si=\"60010657\" sy=\"Nardiarang\" syi=\"30005207\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Octanneve IV - The Scope Development Studio\" se=\"0.7\" si=\"60010660\" sy=\"Octanneve\" syi=\"30003578\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Boystin VI - Moon 14 - The Scope Publisher\" se=\"0.5\" si=\"60010663\" sy=\"Boystin\" syi=\"30003574\"/>\r\n    <row c=\"Lolbrerie\" ci=\"20000393\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Dodenvale X - Moon 5 - The Scope Publisher\" se=\"0.7\" si=\"60010666\" sy=\"Dodenvale\" syi=\"30002685\"/>\r\n    <row c=\"Lolbrerie\" ci=\"20000393\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Artisine IV - Moon 2 - The Scope Development Studio\" se=\"0.5\" si=\"60010669\" sy=\"Artisine\" syi=\"30002687\"/>\r\n    <row c=\"Jayai\" ci=\"20000436\" r=\"Devoid\" ri=\"10000036\" s=\"Tararan VI - Moon 4 - The Scope Publisher\" se=\"0.3\" si=\"60010672\" sy=\"Tararan\" syi=\"30002979\"/>\r\n    <row c=\"Jayai\" ci=\"20000436\" r=\"Devoid\" ri=\"10000036\" s=\"Asghed VI - Moon 12 - The Scope Publisher\" se=\"0.4\" si=\"60010675\" sy=\"Asghed\" syi=\"30002978\"/>\r\n    <row c=\"Balrille\" ci=\"20000730\" r=\"Essence\" ri=\"10000064\" s=\"Deninard VIII - Moon 1 - The Scope Development Studio\" se=\"0.7\" si=\"60010678\" sy=\"Deninard\" syi=\"30004987\"/>\r\n    <row c=\"Balrille\" ci=\"20000730\" r=\"Essence\" ri=\"10000064\" s=\"Vitrauze XI - Moon 8 - The Scope Development Studio\" se=\"0.3\" si=\"60010681\" sy=\"Vitrauze\" syi=\"30004991\"/>\r\n    <row c=\"Fabas\" ci=\"20000774\" r=\"Genesis\" ri=\"10000067\" s=\"Heorah VI - Moon 17 - The Scope Development Studio\" se=\"0.5\" si=\"60010684\" sy=\"Heorah\" syi=\"30005290\"/>\r\n    <row c=\"Fabas\" ci=\"20000774\" r=\"Genesis\" ri=\"10000067\" s=\"Heorah VI - Moon 14 - The Scope Publisher\" se=\"0.5\" si=\"60010687\" sy=\"Heorah\" syi=\"30005290\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"Fihrneh VI - Moon 5 - The Scope Development Studio\" se=\"0.1\" si=\"60010690\" sy=\"Fihrneh\" syi=\"30004254\"/>\r\n    <row c=\"Ombil\" ci=\"20000623\" r=\"Aridia\" ri=\"10000054\" s=\"Yiratal VIII - Moon 4 - The Scope Publisher\" se=\"0.1\" si=\"60010693\" sy=\"Yiratal\" syi=\"30004260\"/>\r\n    <row c=\"Mofa\" ci=\"20000516\" r=\"Domain\" ri=\"10000043\" s=\"Faswiba VII - Moon 4 - The Scope Development Studio\" se=\"0.4\" si=\"60010696\" sy=\"Faswiba\" syi=\"30003541\"/>\r\n    <row c=\"Mofa\" ci=\"20000516\" r=\"Domain\" ri=\"10000043\" s=\"Faswiba VIII - Moon 3 - The Scope Publisher\" se=\"0.4\" si=\"60010699\" sy=\"Faswiba\" syi=\"30003541\"/>\r\n    <row c=\"Wiedadur\" ci=\"20000371\" r=\"Heimatar\" ri=\"10000030\" s=\"Gerbold III - Moon 2 - The Scope Development Studio\" se=\"0.8\" si=\"60010702\" sy=\"Gerbold\" syi=\"30002533\"/>\r\n    <row c=\"Wiedadur\" ci=\"20000371\" r=\"Heimatar\" ri=\"10000030\" s=\"Rokofur VIII - Moon 11 - The Scope Development Studio\" se=\"0.6\" si=\"60010705\" sy=\"Rokofur\" syi=\"30002534\"/>\r\n    <row c=\"Finena\" ci=\"20000740\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Kizama V - Moon 3 - The Scope Development Studio\" se=\"0.7\" si=\"60010708\" sy=\"Kizama\" syi=\"30005056\"/>\r\n    <row c=\"Finena\" ci=\"20000740\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Neesher V - The Scope Development Studio\" se=\"0.5\" si=\"60010711\" sy=\"Neesher\" syi=\"30005058\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Mabnen VIII - Moon 2 - The Scope Development Studio\" se=\"0.9\" si=\"60010714\" sy=\"Mabnen\" syi=\"30002190\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Toshabia VI - Moon 1 - The Scope Development Studio\" se=\"0.8\" si=\"60010717\" sy=\"Toshabia\" syi=\"30002191\"/>\r\n    <row c=\"Eustron\" ci=\"20000735\" r=\"Essence\" ri=\"10000064\" s=\"Derririntel VII - Moon 4 - The Scope Development Studio\" se=\"0.8\" si=\"60010720\" sy=\"Derririntel\" syi=\"30005025\"/>\r\n    <row c=\"Eustron\" ci=\"20000735\" r=\"Essence\" ri=\"10000064\" s=\"Atlangeins V - Moon 13 - The Scope Development Studio\" se=\"0.9\" si=\"60010723\" sy=\"Atlangeins\" syi=\"30005024\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Doussivitte VIII - Moon 20 - Chemal Tech Factory\" se=\"0.8\" si=\"60010726\" sy=\"Doussivitte\" syi=\"30002706\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Unel IX - Chemal Tech Factory\" se=\"0.9\" si=\"60010729\" sy=\"Unel\" syi=\"30002707\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Doussivitte VIII - Moon 8 - Chemal Tech Factory\" se=\"0.8\" si=\"60010732\" sy=\"Doussivitte\" syi=\"30002706\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Alf III - Moon 1 - Chemal Tech Factory\" se=\"1.0\" si=\"60010735\" sy=\"Alf\" syi=\"30003380\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Brundakur VI - Moon 5 - Chemal Tech Factory\" se=\"0.9\" si=\"60010738\" sy=\"Brundakur\" syi=\"30003375\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Arlulf III - Moon 1 - Chemal Tech Factory\" se=\"1.0\" si=\"60010741\" sy=\"Arlulf\" syi=\"30003374\"/>\r\n    <row c=\"Abthi\" ci=\"20000439\" r=\"Devoid\" ri=\"10000036\" s=\"Lower Debyl V - Chemal Tech Factory\" se=\"0.6\" si=\"60010744\" sy=\"Lower Debyl\" syi=\"30002996\"/>\r\n    <row c=\"Abthi\" ci=\"20000439\" r=\"Devoid\" ri=\"10000036\" s=\"Lower Debyl VIII - Moon 15 - Chemal Tech Factory\" se=\"0.6\" si=\"60010747\" sy=\"Lower Debyl\" syi=\"30002996\"/>\r\n    <row c=\"Abthi\" ci=\"20000439\" r=\"Devoid\" ri=\"10000036\" s=\"Ehnoum II - Chemal Tech Factory\" se=\"0.6\" si=\"60010750\" sy=\"Ehnoum\" syi=\"30002997\"/>\r\n    <row c=\"Ergruk\" ci=\"20000499\" r=\"Metropolis\" ri=\"10000042\" s=\"Nein II - Chemal Tech Factory\" se=\"0.5\" si=\"60010753\" sy=\"Nein\" syi=\"30003423\"/>\r\n    <row c=\"Ergruk\" ci=\"20000499\" r=\"Metropolis\" ri=\"10000042\" s=\"Osvestmunnur XI - Moon 4 - Chemal Tech Factory\" se=\"0.5\" si=\"60010756\" sy=\"Osvestmunnur\" syi=\"30003427\"/>\r\n    <row c=\"Ergruk\" ci=\"20000499\" r=\"Metropolis\" ri=\"10000042\" s=\"Anstard VI - Moon 1 - Chemal Tech Warehouse\" se=\"0.5\" si=\"60010759\" sy=\"Anstard\" syi=\"30003426\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"Vale VI - Moon 2 - Veles Clade Semiosis Theater\" se=\"0.0\" si=\"60010762\" sy=\"Vale\" syi=\"30005029\"/>\r\n    <row c=\"Eustron\" ci=\"20000735\" r=\"Essence\" ri=\"10000064\" s=\"Derririntel V - Moon 15 - Chemal Tech Warehouse\" se=\"0.8\" si=\"60010765\" sy=\"Derririntel\" syi=\"30005025\"/>\r\n    <row c=\"Eustron\" ci=\"20000735\" r=\"Essence\" ri=\"10000064\" s=\"Atlangeins V - Moon 11 - Chemal Tech Factory\" se=\"0.9\" si=\"60010768\" sy=\"Atlangeins\" syi=\"30005024\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Netsalakka VII - Moon 2 - Chemal Tech Factory\" se=\"0.5\" si=\"60010771\" sy=\"Netsalakka\" syi=\"30003073\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Myyhera VIII - Moon 12 - Chemal Tech Factory\" se=\"0.5\" si=\"60010774\" sy=\"Myyhera\" syi=\"30003075\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Erkinen XII - Moon 7 - Chemal Tech Factory\" se=\"0.6\" si=\"60010777\" sy=\"Erkinen\" syi=\"30003078\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Mies V - Moon 3 - Chemal Tech Warehouse\" se=\"0.9\" si=\"60010780\" sy=\"Mies\" syi=\"30004968\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Oursulaert VI - Chemal Tech Research Center\" se=\"0.9\" si=\"60010783\" sy=\"Oursulaert\" syi=\"30004969\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Renyn X - Moon 14 - Chemal Tech Factory\" se=\"0.9\" si=\"60010786\" sy=\"Renyn\" syi=\"30004970\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"Vashkah VI - Moon 2 - Chemal Tech Research Center\" se=\"0.7\" si=\"60010789\" sy=\"Vashkah\" syi=\"30002230\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"Nererut VIII - Moon 2 - Chemal Tech Factory\" se=\"0.8\" si=\"60010792\" sy=\"Nererut\" syi=\"30002228\"/>\r\n    <row c=\"Sosarir\" ci=\"20000327\" r=\"Domain\" ri=\"10000043\" s=\"Nifshed X - Moon 1 - Chemal Tech Warehouse\" se=\"0.7\" si=\"60010795\" sy=\"Nifshed\" syi=\"30002234\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Ravarin V - Moon 13 - Chemal Tech Research Center\" se=\"0.4\" si=\"60010798\" sy=\"Ravarin\" syi=\"30002697\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Ravarin III - Moon 4 - Chemal Tech Research Center\" se=\"0.4\" si=\"60010801\" sy=\"Ravarin\" syi=\"30002697\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Egghelende VI - Moon 19 - Chemal Tech Factory\" se=\"0.4\" si=\"60010804\" sy=\"Egghelende\" syi=\"30002693\"/>\r\n    <row c=\"Malariya\" ci=\"20000210\" r=\"Lonetrek\" ri=\"10000016\" s=\"Endatoh IV - Moon 1 - Chemal Tech Warehouse\" se=\"0.6\" si=\"60010807\" sy=\"Endatoh\" syi=\"30001430\"/>\r\n    <row c=\"Malariya\" ci=\"20000210\" r=\"Lonetrek\" ri=\"10000016\" s=\"Endatoh IV - Chemal Tech Factory\" se=\"0.6\" si=\"60010810\" sy=\"Endatoh\" syi=\"30001430\"/>\r\n    <row c=\"Malariya\" ci=\"20000210\" r=\"Lonetrek\" ri=\"10000016\" s=\"Endatoh VI - Chemal Tech Factory\" se=\"0.6\" si=\"60010813\" sy=\"Endatoh\" syi=\"30001430\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Vouskiaho VI - Moon 2 - Chemal Tech Factory\" se=\"0.5\" si=\"60010816\" sy=\"Vouskiaho\" syi=\"30000193\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Vasala VI - Moon 10 - Chemal Tech Factory\" se=\"0.5\" si=\"60010819\" sy=\"Vasala\" syi=\"30000190\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Kiainti VI - Moon 1 - Chemal Tech Factory\" se=\"0.5\" si=\"60010822\" sy=\"Kiainti\" syi=\"30000189\"/>\r\n    <row c=\"Heart\" ci=\"20000657\" r=\"Outer Ring\" ri=\"10000057\" s=\"4C-B7X V - Moon 7 - Chemal Tech Factory\" se=\"0.0\" si=\"60010825\" sy=\"4C-B7X\" syi=\"30004504\"/>\r\n    <row c=\"Heart\" ci=\"20000657\" r=\"Outer Ring\" ri=\"10000057\" s=\"D5IW-F VIII - Moon 2 - Chemal Tech Factory\" se=\"0.0\" si=\"60010828\" sy=\"D5IW-F\" syi=\"30004502\"/>\r\n    <row c=\"Heart\" ci=\"20000657\" r=\"Outer Ring\" ri=\"10000057\" s=\"4C-B7X VII - Moon 12 - Chemal Tech Factory\" se=\"0.0\" si=\"60010831\" sy=\"4C-B7X\" syi=\"30004504\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Scheenins IV - Chemal Tech Factory\" se=\"0.5\" si=\"60010834\" sy=\"Scheenins\" syi=\"30005310\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Scheenins V - Moon 8 - Chemal Tech Factory\" se=\"0.5\" si=\"60010837\" sy=\"Scheenins\" syi=\"30005310\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Gisleres V - Moon 8 - Chemal Tech Factory\" se=\"0.8\" si=\"60010840\" sy=\"Gisleres\" syi=\"30005312\"/>\r\n    <row c=\"Sukanan\" ci=\"20000249\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Teshkat VI - Chemal Tech Factory\" se=\"0.4\" si=\"60010843\" sy=\"Teshkat\" syi=\"30001681\"/>\r\n    <row c=\"Sukanan\" ci=\"20000249\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Teshkat V - Chemal Tech Factory\" se=\"0.4\" si=\"60010846\" sy=\"Teshkat\" syi=\"30001681\"/>\r\n    <row c=\"Sukanan\" ci=\"20000249\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Nasesharafa VIII - Moon 3 - Chemal Tech Warehouse\" se=\"0.2\" si=\"60010849\" sy=\"Nasesharafa\" syi=\"30001683\"/>\r\n    <row c=\"Benurad\" ci=\"20000378\" r=\"Heimatar\" ri=\"10000030\" s=\"Sotrenzur XI - Moon 1 - Chemal Tech Factory\" se=\"0.3\" si=\"60010852\" sy=\"Sotrenzur\" syi=\"30002575\"/>\r\n    <row c=\"Benurad\" ci=\"20000378\" r=\"Heimatar\" ri=\"10000030\" s=\"Sotrenzur V - Chemal Tech Factory\" se=\"0.3\" si=\"60010855\" sy=\"Sotrenzur\" syi=\"30002575\"/>\r\n    <row c=\"Benurad\" ci=\"20000378\" r=\"Heimatar\" ri=\"10000030\" s=\"Otraren IV - Moon 5 - Chemal Tech Warehouse\" se=\"0.5\" si=\"60010858\" sy=\"Otraren\" syi=\"30002578\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"Carirgnottin X - Moon 1 - Duvolle Laboratories Factory\" se=\"0.6\" si=\"60010861\" sy=\"Carirgnottin\" syi=\"30003048\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"Aydoteaux V - Moon 1 - Duvolle Laboratories Factory\" se=\"0.7\" si=\"60010864\" sy=\"Aydoteaux\" syi=\"30003055\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"Scuelazyns VII - Moon 1 - Duvolle Laboratories Factory\" se=\"0.6\" si=\"60010867\" sy=\"Scuelazyns\" syi=\"30003054\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Alenia V - Duvolle Laboratories Factory\" se=\"0.9\" si=\"60010870\" sy=\"Alenia\" syi=\"30005302\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Alentene V - Moon 4 - Duvolle Laboratories Factory\" se=\"0.9\" si=\"60010873\" sy=\"Alentene\" syi=\"30005304\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Vaere VII - Duvolle Laboratories Warehouse\" se=\"0.8\" si=\"60010876\" sy=\"Vaere\" syi=\"30005306\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Covryn VI - Moon 12 - Duvolle Laboratories Warehouse\" se=\"0.4\" si=\"60010879\" sy=\"Covryn\" syi=\"30003795\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Slays II - Duvolle Laboratories Factory\" se=\"0.5\" si=\"60010882\" sy=\"Slays\" syi=\"30003798\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Uphallant VIII - Moon 2 - Duvolle Laboratories Factory\" se=\"0.2\" si=\"60010885\" sy=\"Uphallant\" syi=\"30003799\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Dunraelare V - Moon 1 - Duvolle Laboratories Factory\" se=\"0.7\" si=\"60010888\" sy=\"Dunraelare\" syi=\"30002670\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Inghenges VI - Moon 15 - Duvolle Laboratories Factory\" se=\"0.7\" si=\"60010891\" sy=\"Inghenges\" syi=\"30002672\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Trosquesere V - Moon 10 - Duvolle Laboratories Factory\" se=\"0.9\" si=\"60010894\" sy=\"Trosquesere\" syi=\"30002668\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Grispire V - Duvolle Laboratories Factory\" se=\"0.2\" si=\"60010897\" sy=\"Grispire\" syi=\"30003808\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Vivanier V - Moon 3 - Duvolle Laboratories Factory\" se=\"0.5\" si=\"60010900\" sy=\"Vivanier\" syi=\"30003810\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Pelille V - Moon 14 - Duvolle Laboratories Factory\" se=\"0.2\" si=\"60010903\" sy=\"Pelille\" syi=\"30003806\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Luminaire III (Astrin) - Moon 1 - Duvolle Laboratories Factory\" se=\"1.0\" si=\"60010906\" sy=\"Luminaire\" syi=\"30004967\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Oursulaert VII - Moon 3 - Duvolle Laboratories Research Center\" se=\"0.9\" si=\"60010909\" sy=\"Oursulaert\" syi=\"30004969\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Mies VII - Moon 3 - Duvolle Laboratories Factory\" se=\"0.9\" si=\"60010912\" sy=\"Mies\" syi=\"30004968\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Maire IV - Moon 4 - Duvolle Laboratories Factory\" se=\"0.7\" si=\"60010915\" sy=\"Maire\" syi=\"30003576\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Octanneve III - Duvolle Laboratories Factory\" se=\"0.7\" si=\"60010918\" sy=\"Octanneve\" syi=\"30003578\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Oerse VII - Moon 8 - Duvolle Laboratories Factory\" se=\"0.6\" si=\"60010921\" sy=\"Oerse\" syi=\"30003577\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Fricoure VIII - Moon 3 - Duvolle Laboratories Factory\" se=\"0.8\" si=\"60010924\" sy=\"Fricoure\" syi=\"30002734\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Ainaille VII - Moon 5 - Duvolle Laboratories Factory\" se=\"0.8\" si=\"60010927\" sy=\"Ainaille\" syi=\"30002736\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Mirilene VIII - Moon 9 - Duvolle Laboratories Factory\" se=\"0.8\" si=\"60010930\" sy=\"Mirilene\" syi=\"30002732\"/>\r\n    <row c=\"Jeon\" ci=\"20000729\" r=\"Essence\" ri=\"10000064\" s=\"Heydieles III - Moon 13 - Duvolle Laboratories Factory\" se=\"0.3\" si=\"60010933\" sy=\"Heydieles\" syi=\"30004979\"/>\r\n    <row c=\"Jeon\" ci=\"20000729\" r=\"Essence\" ri=\"10000064\" s=\"Actee I - Duvolle Laboratories Factory\" se=\"0.5\" si=\"60010936\" sy=\"Actee\" syi=\"30004981\"/>\r\n    <row c=\"Jeon\" ci=\"20000729\" r=\"Essence\" ri=\"10000064\" s=\"Heydieles IV - Moon 19 - Duvolle Laboratories Warehouse\" se=\"0.3\" si=\"60010939\" sy=\"Heydieles\" syi=\"30004979\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Stegette III - Moon 6 - Duvolle Laboratories Factory\" se=\"0.5\" si=\"60010942\" sy=\"Stegette\" syi=\"30002696\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Odette VII - Moon 6 - Duvolle Laboratories Factory\" se=\"0.5\" si=\"60010945\" sy=\"Odette\" syi=\"30002694\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Jel V - Duvolle Laboratories Factory\" se=\"0.6\" si=\"60010948\" sy=\"Jel\" syi=\"30002692\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"Ostingele VIII - Moon 3 - FedMart Warehouse\" se=\"0.2\" si=\"60010951\" sy=\"Ostingele\" syi=\"30003792\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"Agoze V - FedMart Retail Center\" se=\"0.2\" si=\"60010954\" sy=\"Agoze\" syi=\"30003787\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"Vey VIII - Moon 15 - FedMart Warehouse\" se=\"0.2\" si=\"60010957\" sy=\"Vey\" syi=\"30003790\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"Brarel I - FedMart Warehouse\" se=\"0.1\" si=\"60010960\" sy=\"Brarel\" syi=\"30003789\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"Intaki VI - Moon 5 - FedMart Storage\" se=\"0.6\" si=\"60010963\" sy=\"Intaki\" syi=\"30003788\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"Harroule VIII - Moon 5 - FedMart Storage\" se=\"0.1\" si=\"60010966\" sy=\"Harroule\" syi=\"30003793\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"Allebin VII - Moon 4 - FedMart Retail Center\" se=\"0.5\" si=\"60010969\" sy=\"Allebin\" syi=\"30005009\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"Isenan VIII - Moon 12 - FedMart Warehouse\" se=\"0.3\" si=\"60010972\" sy=\"Isenan\" syi=\"30005014\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"Allebin VI - FedMart Warehouse\" se=\"0.5\" si=\"60010975\" sy=\"Allebin\" syi=\"30005009\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"Isenan VIII - Moon 7 - FedMart Warehouse\" se=\"0.3\" si=\"60010978\" sy=\"Isenan\" syi=\"30005014\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"Isenan VII - Moon 2 - FedMart Storage\" se=\"0.3\" si=\"60010981\" sy=\"Isenan\" syi=\"30005014\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"Atlulle VIII - FedMart Storage\" se=\"0.4\" si=\"60010984\" sy=\"Atlulle\" syi=\"30005010\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"Eugales VII - Moon 9 - FedMart Retail Center\" se=\"0.4\" si=\"60010987\" sy=\"Eugales\" syi=\"30003825\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"Moclinamaud I - FedMart Retail Center\" se=\"0.4\" si=\"60010990\" sy=\"Moclinamaud\" syi=\"30003828\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"Frarie IX - Moon 17 - FedMart Retail Center\" se=\"0.4\" si=\"60010993\" sy=\"Frarie\" syi=\"30003826\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"Renarelle III - Moon 10 - FedMart Warehouse\" se=\"0.3\" si=\"60010996\" sy=\"Renarelle\" syi=\"30003829\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"Archavoinet III - Moon 1 - FedMart Storage\" se=\"0.6\" si=\"60010999\" sy=\"Archavoinet\" syi=\"30003824\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"Frarie IX - Moon 14 - FedMart Storage\" se=\"0.4\" si=\"60011002\" sy=\"Frarie\" syi=\"30003826\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"Anchauttes III - Moon 13 - FedMart Retail Center\" se=\"0.3\" si=\"60011005\" sy=\"Anchauttes\" syi=\"30003840\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"Vlillirier VII - Moon 19 - FedMart Warehouse\" se=\"0.3\" si=\"60011008\" sy=\"Vlillirier\" syi=\"30003836\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"Oicx VI - Moon 11 - FedMart Warehouse\" se=\"0.3\" si=\"60011011\" sy=\"Oicx\" syi=\"30003838\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"Aldranette IX - Moon 1 - FedMart Warehouse\" se=\"0.4\" si=\"60011014\" sy=\"Aldranette\" syi=\"30003837\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"Vlillirier V - Moon 1 - FedMart Storage\" se=\"0.3\" si=\"60011017\" sy=\"Vlillirier\" syi=\"30003836\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"Evaulon V - Moon 2 - FedMart Storage\" se=\"0.4\" si=\"60011020\" sy=\"Evaulon\" syi=\"30003839\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Ation II - Moon 1 - FedMart Warehouse\" se=\"0.6\" si=\"60011023\" sy=\"Ation\" syi=\"30002695\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Egghelende IV - Moon 1 - FedMart Warehouse\" se=\"0.4\" si=\"60011026\" sy=\"Egghelende\" syi=\"30002693\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Jel VIII - Moon 1 - FedMart Warehouse\" se=\"0.6\" si=\"60011029\" sy=\"Jel\" syi=\"30002692\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Stegette V - Moon 3 - FedMart Warehouse\" se=\"0.5\" si=\"60011032\" sy=\"Stegette\" syi=\"30002696\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Stegette IV - Moon 11 - FedMart Storage\" se=\"0.5\" si=\"60011035\" sy=\"Stegette\" syi=\"30002696\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Jel VIII - Moon 22 - FedMart Storage\" se=\"0.6\" si=\"60011038\" sy=\"Jel\" syi=\"30002692\"/>\r\n    <row c=\"Goins\" ci=\"20000523\" r=\"Solitude\" ri=\"10000044\" s=\"Yvaeroure XI - Moon 14 - FedMart Retail Center\" se=\"0.8\" si=\"60011041\" sy=\"Yvaeroure\" syi=\"30003588\"/>\r\n    <row c=\"Goins\" ci=\"20000523\" r=\"Solitude\" ri=\"10000044\" s=\"Yvaeroure VI - Moon 1 - FedMart Retail Center\" se=\"0.8\" si=\"60011044\" sy=\"Yvaeroure\" syi=\"30003588\"/>\r\n    <row c=\"Goins\" ci=\"20000523\" r=\"Solitude\" ri=\"10000044\" s=\"Yvaeroure X - Moon 8 - FedMart Warehouse\" se=\"0.8\" si=\"60011047\" sy=\"Yvaeroure\" syi=\"30003588\"/>\r\n    <row c=\"Goins\" ci=\"20000523\" r=\"Solitude\" ri=\"10000044\" s=\"Yvelet VI - Moon 2 - FedMart Warehouse\" se=\"0.8\" si=\"60011050\" sy=\"Yvelet\" syi=\"30003591\"/>\r\n    <row c=\"Goins\" ci=\"20000523\" r=\"Solitude\" ri=\"10000044\" s=\"Arasare V - Moon 6 - FedMart Storage\" se=\"0.8\" si=\"60011053\" sy=\"Arasare\" syi=\"30003590\"/>\r\n    <row c=\"Goins\" ci=\"20000523\" r=\"Solitude\" ri=\"10000044\" s=\"Yvaeroure X - Moon 15 - FedMart Storage\" se=\"0.8\" si=\"60011056\" sy=\"Yvaeroure\" syi=\"30003588\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"Larryn IX - Moon 4 - FedMart Warehouse\" se=\"0.6\" si=\"60011059\" sy=\"Larryn\" syi=\"30003579\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"Odinesyn VIII - Moon 15 - FedMart Warehouse\" se=\"0.7\" si=\"60011062\" sy=\"Odinesyn\" syi=\"30003582\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"Larryn II - FedMart Warehouse\" se=\"0.6\" si=\"60011065\" sy=\"Larryn\" syi=\"30003579\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"Sarline VIII - Moon 1 - FedMart Warehouse\" se=\"0.4\" si=\"60011068\" sy=\"Sarline\" syi=\"30003584\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"Gererique IV - Moon 4 - FedMart Storage\" se=\"0.7\" si=\"60011071\" sy=\"Gererique\" syi=\"30003586\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"Sarline IX - Moon 20 - FedMart Storage\" se=\"0.4\" si=\"60011074\" sy=\"Sarline\" syi=\"30003584\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Ane III - Moon 1 - FedMart Warehouse\" se=\"0.3\" si=\"60011077\" sy=\"Ane\" syi=\"30005022\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Aporulie VII - Moon 16 - FedMart Retail Center\" se=\"0.8\" si=\"60011080\" sy=\"Aporulie\" syi=\"30005019\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Clorteler II - Moon 1 - FedMart Warehouse\" se=\"0.5\" si=\"60011083\" sy=\"Clorteler\" syi=\"30005023\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Aporulie VIII - FedMart Retail Center\" se=\"0.8\" si=\"60011086\" sy=\"Aporulie\" syi=\"30005019\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Ane IV - Moon 6 - FedMart Storage\" se=\"0.3\" si=\"60011089\" sy=\"Ane\" syi=\"30005022\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Wysalan VIII - Moon 1 - FedMart Storage\" se=\"0.8\" si=\"60011092\" sy=\"Wysalan\" syi=\"30005016\"/>\r\n    <row c=\"Chasnaye\" ci=\"20000442\" r=\"Everyshore\" ri=\"10000037\" s=\"Gerper VI - Moon 12 - FedMart Warehouse\" se=\"0.4\" si=\"60011095\" sy=\"Gerper\" syi=\"30003023\"/>\r\n    <row c=\"Chasnaye\" ci=\"20000442\" r=\"Everyshore\" ri=\"10000037\" s=\"Gerper V - Moon 14 - FedMart Warehouse\" se=\"0.4\" si=\"60011098\" sy=\"Gerper\" syi=\"30003023\"/>\r\n    <row c=\"Chasnaye\" ci=\"20000442\" r=\"Everyshore\" ri=\"10000037\" s=\"Harerget VIII - FedMart Warehouse\" se=\"0.8\" si=\"60011101\" sy=\"Harerget\" syi=\"30003017\"/>\r\n    <row c=\"Chasnaye\" ci=\"20000442\" r=\"Everyshore\" ri=\"10000037\" s=\"Gerper V - Moon 10 - FedMart Warehouse\" se=\"0.4\" si=\"60011104\" sy=\"Gerper\" syi=\"30003023\"/>\r\n    <row c=\"Chasnaye\" ci=\"20000442\" r=\"Everyshore\" ri=\"10000037\" s=\"Azer VI - Moon 2 - FedMart Storage\" se=\"0.7\" si=\"60011107\" sy=\"Azer\" syi=\"30003018\"/>\r\n    <row c=\"Chasnaye\" ci=\"20000442\" r=\"Everyshore\" ri=\"10000037\" s=\"Gerper VI - Moon 2 - FedMart Storage\" se=\"0.4\" si=\"60011110\" sy=\"Gerper\" syi=\"30003023\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Aclan IX - Moon 2 - FedMart Warehouse\" se=\"0.5\" si=\"60011113\" sy=\"Aclan\" syi=\"30003028\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Ardallabier V - Moon 12 - FedMart Retail Center\" se=\"0.7\" si=\"60011116\" sy=\"Ardallabier\" syi=\"30003030\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Ardallabier VII - Moon 18 - FedMart Warehouse\" se=\"0.7\" si=\"60011119\" sy=\"Ardallabier\" syi=\"30003030\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Jaschercis IV - Moon 1 - FedMart Retail Center\" se=\"0.6\" si=\"60011122\" sy=\"Jaschercis\" syi=\"30003029\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Jaschercis IV - Moon 14 - FedMart Storage\" se=\"0.6\" si=\"60011125\" sy=\"Jaschercis\" syi=\"30003029\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Aclan X - Moon 24 - FedMart Storage\" se=\"0.5\" si=\"60011128\" sy=\"Aclan\" syi=\"30003028\"/>\r\n    <row c=\"Nexus\" ci=\"20000397\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Alillere IV - Aliastra Retail Center\" se=\"0.8\" si=\"60011131\" sy=\"Alillere\" syi=\"30002712\"/>\r\n    <row c=\"Nexus\" ci=\"20000397\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Aymaerne VIII - Moon 2 - Aliastra Warehouse\" se=\"0.9\" si=\"60011134\" sy=\"Aymaerne\" syi=\"30002717\"/>\r\n    <row c=\"Nexus\" ci=\"20000397\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Aurcel IV - Moon 17 - Aliastra Warehouse\" se=\"0.5\" si=\"60011137\" sy=\"Aurcel\" syi=\"30002716\"/>\r\n    <row c=\"Nexus\" ci=\"20000397\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Aymaerne VI - Moon 10 - Aliastra Warehouse\" se=\"0.9\" si=\"60011140\" sy=\"Aymaerne\" syi=\"30002717\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Ossa VII - Moon 8 - Aliastra Retail Center\" se=\"0.5\" si=\"60011143\" sy=\"Ossa\" syi=\"30001358\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Semiki V - Aliastra Warehouse\" se=\"0.6\" si=\"60011146\" sy=\"Semiki\" syi=\"30001359\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Antiainen II - Moon 1 - Aliastra Retail Center\" se=\"0.6\" si=\"60011149\" sy=\"Antiainen\" syi=\"30001357\"/>\r\n    <row c=\"Okunda\" ci=\"20000198\" r=\"Lonetrek\" ri=\"10000016\" s=\"Dantumi VI - Moon 5 - Aliastra Warehouse\" se=\"0.4\" si=\"60011152\" sy=\"Dantumi\" syi=\"30001356\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Rand V - Aliastra Warehouse\" se=\"0.9\" si=\"60011155\" sy=\"Rand\" syi=\"30001727\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Iswa II - Aliastra Warehouse\" se=\"0.8\" si=\"60011158\" sy=\"Iswa\" syi=\"30001726\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Rumida V - Moon 21 - Aliastra Retail Center\" se=\"0.9\" si=\"60011161\" sy=\"Rumida\" syi=\"30001724\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Rumida IV - Moon 12 - Aliastra Retail Center\" se=\"0.9\" si=\"60011164\" sy=\"Rumida\" syi=\"30001724\"/>\r\n    <row c=\"Kainokai\" ci=\"20000207\" r=\"Lonetrek\" ri=\"10000016\" s=\"Ajanen VI - Moon 2 - Aliastra Warehouse\" se=\"0.6\" si=\"60011167\" sy=\"Ajanen\" syi=\"30001414\"/>\r\n    <row c=\"Krai Svarog\" ci=\"20000788\" r=\"Pochven\" ri=\"10000070\" s=\"Nani IV - Moon 2 - The Convocation of Triglav Semiosis Theater\" se=\"0.0\" si=\"60011170\" sy=\"Nani\" syi=\"30001413\"/>\r\n    <row c=\"Krai Svarog\" ci=\"20000788\" r=\"Pochven\" ri=\"10000070\" s=\"Nani I - Svarog Clade Extractive Terminus\" se=\"0.0\" si=\"60011173\" sy=\"Nani\" syi=\"30001413\"/>\r\n    <row c=\"Kainokai\" ci=\"20000207\" r=\"Lonetrek\" ri=\"10000016\" s=\"Autama IX - Moon 12 - Aliastra Warehouse\" se=\"0.8\" si=\"60011176\" sy=\"Autama\" syi=\"30001411\"/>\r\n    <row c=\"Akimamur\" ci=\"20000374\" r=\"Heimatar\" ri=\"10000030\" s=\"Wiskeber VII - Moon 9 - Aliastra Warehouse\" se=\"0.4\" si=\"60011179\" sy=\"Wiskeber\" syi=\"30002554\"/>\r\n    <row c=\"Akimamur\" ci=\"20000374\" r=\"Heimatar\" ri=\"10000030\" s=\"Bogelek IV - Moon 2 - Aliastra Warehouse\" se=\"0.4\" si=\"60011182\" sy=\"Bogelek\" syi=\"30002553\"/>\r\n    <row c=\"Akimamur\" ci=\"20000374\" r=\"Heimatar\" ri=\"10000030\" s=\"Aralgrund V - Moon 2 - Aliastra Warehouse\" se=\"0.3\" si=\"60011185\" sy=\"Aralgrund\" syi=\"30002551\"/>\r\n    <row c=\"Akimamur\" ci=\"20000374\" r=\"Heimatar\" ri=\"10000030\" s=\"Eddar VIII - Moon 7 - Aliastra Retail Center\" se=\"0.6\" si=\"60011188\" sy=\"Eddar\" syi=\"30002552\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"Akila VI - Moon 13 - Aliastra Retail Center\" se=\"0.3\" si=\"60011191\" sy=\"Akila\" syi=\"30003479\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"Ealur IX - Moon 16 - Aliastra Warehouse\" se=\"0.5\" si=\"60011194\" sy=\"Ealur\" syi=\"30003476\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"Sahda VII - Moon 2 - Aliastra Retail Center\" se=\"0.4\" si=\"60011197\" sy=\"Sahda\" syi=\"30003474\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"Fahruni X - Moon 1 - Aliastra Retail Center\" se=\"0.5\" si=\"60011200\" sy=\"Fahruni\" syi=\"30003473\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Amygnon VII - Moon 21 - Aliastra Warehouse\" se=\"0.6\" si=\"60011203\" sy=\"Amygnon\" syi=\"30005311\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Ellmay VIII - Moon 10 - Aliastra Warehouse\" se=\"0.9\" si=\"60011206\" sy=\"Ellmay\" syi=\"30005313\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Amygnon VII - Moon 10 - Aliastra Warehouse\" se=\"0.6\" si=\"60011209\" sy=\"Amygnon\" syi=\"30005311\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Jufvitte IX - Aliastra Warehouse\" se=\"0.5\" si=\"60011212\" sy=\"Jufvitte\" syi=\"30005308\"/>\r\n    <row c=\"QS-FVH\" ci=\"20000488\" r=\"Syndicate\" ri=\"10000041\" s=\"0T-AMZ VII - Moon 10 - Aliastra Warehouse\" se=\"0.0\" si=\"60011215\" sy=\"0T-AMZ\" syi=\"30003349\"/>\r\n    <row c=\"QS-FVH\" ci=\"20000488\" r=\"Syndicate\" ri=\"10000041\" s=\"0T-AMZ IX - Moon 6 - Aliastra Retail Center\" se=\"0.0\" si=\"60011218\" sy=\"0T-AMZ\" syi=\"30003349\"/>\r\n    <row c=\"QS-FVH\" ci=\"20000488\" r=\"Syndicate\" ri=\"10000041\" s=\"4L-E5P VI - Moon 6 - Aliastra Retail Center\" se=\"0.0\" si=\"60011221\" sy=\"4L-E5P\" syi=\"30003351\"/>\r\n    <row c=\"QS-FVH\" ci=\"20000488\" r=\"Syndicate\" ri=\"10000041\" s=\"4L-E5P VII - Moon 1 - Aliastra Warehouse\" se=\"0.0\" si=\"60011224\" sy=\"4L-E5P\" syi=\"30003351\"/>\r\n    <row c=\"Makh\" ci=\"20000769\" r=\"Genesis\" ri=\"10000067\" s=\"Saphthar IX - Moon 16 - Aliastra Warehouse\" se=\"0.3\" si=\"60011227\" sy=\"Saphthar\" syi=\"30005255\"/>\r\n    <row c=\"Makh\" ci=\"20000769\" r=\"Genesis\" ri=\"10000067\" s=\"Korridi III - Aliastra Retail Center\" se=\"0.3\" si=\"60011230\" sy=\"Korridi\" syi=\"30005258\"/>\r\n    <row c=\"Makh\" ci=\"20000769\" r=\"Genesis\" ri=\"10000067\" s=\"Itrin V - Moon 7 - Aliastra Warehouse\" se=\"0.4\" si=\"60011233\" sy=\"Itrin\" syi=\"30005256\"/>\r\n    <row c=\"Makh\" ci=\"20000769\" r=\"Genesis\" ri=\"10000067\" s=\"Itrin V - Moon 19 - Aliastra Retail Center\" se=\"0.4\" si=\"60011236\" sy=\"Itrin\" syi=\"30005256\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Espigoure VIII - Moon 5 - Aliastra Warehouse\" se=\"0.1\" si=\"60011239\" sy=\"Espigoure\" syi=\"30003822\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Aulbres X - Aliastra Warehouse\" se=\"0.1\" si=\"60011242\" sy=\"Aulbres\" syi=\"30003818\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Vestouve IX - Moon 11 - Aliastra Warehouse\" se=\"0.1\" si=\"60011245\" sy=\"Vestouve\" syi=\"30003820\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Ausmaert VIII - Moon 1 - Aliastra Warehouse\" se=\"0.1\" si=\"60011248\" sy=\"Ausmaert\" syi=\"30003821\"/>\r\n    <row c=\"Aven\" ci=\"20000771\" r=\"Genesis\" ri=\"10000067\" s=\"Shalne VII - Moon 1 - Aliastra Retail Center\" se=\"0.3\" si=\"60011251\" sy=\"Shalne\" syi=\"30005270\"/>\r\n    <row c=\"Aven\" ci=\"20000771\" r=\"Genesis\" ri=\"10000067\" s=\"Olin IV - Moon 3 - Aliastra Warehouse\" se=\"0.3\" si=\"60011254\" sy=\"Olin\" syi=\"30005272\"/>\r\n    <row c=\"Aven\" ci=\"20000771\" r=\"Genesis\" ri=\"10000067\" s=\"Gonditsa IV - Moon 8 - Aliastra Retail Center\" se=\"0.3\" si=\"60011257\" sy=\"Gonditsa\" syi=\"30005268\"/>\r\n    <row c=\"Aven\" ci=\"20000771\" r=\"Genesis\" ri=\"10000067\" s=\"Simela III - Aliastra Warehouse\" se=\"0.5\" si=\"60011260\" sy=\"Simela\" syi=\"30005269\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Jel VIII - Aliastra Retail Center\" se=\"0.6\" si=\"60011263\" sy=\"Jel\" syi=\"30002692\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Ation VI - Aliastra Warehouse\" se=\"0.6\" si=\"60011266\" sy=\"Ation\" syi=\"30002695\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Aliette VII - Moon 14 - Aliastra Warehouse\" se=\"0.4\" si=\"60011269\" sy=\"Aliette\" syi=\"30002698\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Aliette VII - Moon 25 - Aliastra Warehouse\" se=\"0.4\" si=\"60011272\" sy=\"Aliette\" syi=\"30002698\"/>\r\n    <row c=\"YFN-UN\" ci=\"20000484\" r=\"Syndicate\" ri=\"10000041\" s=\"3KNK-A IX - Moon 4 - Aliastra Warehouse\" se=\"0.0\" si=\"60011275\" sy=\"3KNK-A\" syi=\"30003322\"/>\r\n    <row c=\"YFN-UN\" ci=\"20000484\" r=\"Syndicate\" ri=\"10000041\" s=\"TXW-EI VIII - Moon 8 - Aliastra Retail Center\" se=\"0.0\" si=\"60011278\" sy=\"TXW-EI\" syi=\"30003323\"/>\r\n    <row c=\"YFN-UN\" ci=\"20000484\" r=\"Syndicate\" ri=\"10000041\" s=\"XYY-IA IV - Moon 6 - Aliastra Warehouse\" se=\"0.0\" si=\"60011281\" sy=\"XYY-IA\" syi=\"30003326\"/>\r\n    <row c=\"YFN-UN\" ci=\"20000484\" r=\"Syndicate\" ri=\"10000041\" s=\"XYY-IA III - Moon 10 - Aliastra Warehouse\" se=\"0.0\" si=\"60011284\" sy=\"XYY-IA\" syi=\"30003326\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Hek VIII - Moon 17 - Aliastra Retail Center\" se=\"0.8\" si=\"60011287\" sy=\"Hek\" syi=\"30002053\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Anher V - Moon 8 - Aliastra Retail Center\" se=\"0.5\" si=\"60011290\" sy=\"Anher\" syi=\"30002051\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Ragnarg VI - Moon 6 - Aliastra Warehouse\" se=\"0.4\" si=\"60011293\" sy=\"Ragnarg\" syi=\"30002052\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Ragnarg IV - Moon 2 - Aliastra Warehouse\" se=\"0.4\" si=\"60011296\" sy=\"Ragnarg\" syi=\"30002052\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Siyi V - Moon 6 - Aliastra Warehouse\" se=\"0.5\" si=\"60011299\" sy=\"Siyi\" syi=\"30001699\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Gaknem VI - Moon 6 - Aliastra Retail Center\" se=\"0.6\" si=\"60011302\" sy=\"Gaknem\" syi=\"30001698\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Siyi II - Aliastra Warehouse\" se=\"0.5\" si=\"60011305\" sy=\"Siyi\" syi=\"30001699\"/>\r\n    <row c=\"Rifenda\" ci=\"20000251\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Siyi IV - Moon 11 - Aliastra Warehouse\" se=\"0.5\" si=\"60011308\" sy=\"Siyi\" syi=\"30001699\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Algogille IX - Moon 3 - Bank of Luminaire Depository\" se=\"0.9\" si=\"60011311\" sy=\"Algogille\" syi=\"30004972\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Oursulaert VII - Moon 3 - Bank of Luminaire Vault\" se=\"0.9\" si=\"60011314\" sy=\"Oursulaert\" syi=\"30004969\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"Aydoteaux VII - Moon 20 - Bank of Luminaire Depository\" se=\"0.7\" si=\"60011317\" sy=\"Aydoteaux\" syi=\"30003055\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"Antollare VI - Bank of Luminaire Depository\" se=\"0.7\" si=\"60011320\" sy=\"Antollare\" syi=\"30003051\"/>\r\n    <row c=\"Mallugier\" ci=\"20000562\" r=\"Placid\" ri=\"10000048\" s=\"Amasiree VI - Moon 6 - Bank of Luminaire Depository\" se=\"0.4\" si=\"60011323\" sy=\"Amasiree\" syi=\"30003848\"/>\r\n    <row c=\"Mallugier\" ci=\"20000562\" r=\"Placid\" ri=\"10000048\" s=\"Ruerrotta IV - Moon 5 - Bank of Luminaire Depository\" se=\"0.3\" si=\"60011326\" sy=\"Ruerrotta\" syi=\"30003845\"/>\r\n    <row c=\"Mobrault\" ci=\"20000525\" r=\"Solitude\" ri=\"10000044\" s=\"Ondree VII - Moon 21 - Bank of Luminaire Depository\" se=\"0.5\" si=\"60011329\" sy=\"Ondree\" syi=\"30003603\"/>\r\n    <row c=\"Mobrault\" ci=\"20000525\" r=\"Solitude\" ri=\"10000044\" s=\"Ondree VIII - Bank of Luminaire Depository\" se=\"0.5\" si=\"60011332\" sy=\"Ondree\" syi=\"30003603\"/>\r\n    <row c=\"Jeon\" ci=\"20000729\" r=\"Essence\" ri=\"10000064\" s=\"Fliet IV - Bank of Luminaire Depository\" se=\"0.3\" si=\"60011335\" sy=\"Fliet\" syi=\"30004980\"/>\r\n    <row c=\"Jeon\" ci=\"20000729\" r=\"Essence\" ri=\"10000064\" s=\"Actee III - Bank of Luminaire Depository\" se=\"0.5\" si=\"60011338\" sy=\"Actee\" syi=\"30004981\"/>\r\n    <row c=\"Elerelle\" ci=\"20000524\" r=\"Solitude\" ri=\"10000044\" s=\"Agaullores VI - Moon 11 - Bank of Luminaire Vault\" se=\"0.1\" si=\"60011341\" sy=\"Agaullores\" syi=\"30003600\"/>\r\n    <row c=\"Elerelle\" ci=\"20000524\" r=\"Solitude\" ri=\"10000044\" s=\"Arittant IX - Moon 21 - Bank of Luminaire Vault\" se=\"0.3\" si=\"60011344\" sy=\"Arittant\" syi=\"30003595\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Mannar IV - Moon 4 - Bank of Luminaire Depository\" se=\"0.3\" si=\"60011347\" sy=\"Mannar\" syi=\"30003060\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Mannar V - Moon 17 - Bank of Luminaire Depository\" se=\"0.3\" si=\"60011350\" sy=\"Mannar\" syi=\"30003060\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"Esesier X - Moon 3 - Bank of Luminaire Vault\" se=\"0.3\" si=\"60011353\" sy=\"Esesier\" syi=\"30003842\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"Evaulon VI - Moon 1 - Bank of Luminaire Depository\" se=\"0.4\" si=\"60011356\" sy=\"Evaulon\" syi=\"30003839\"/>\r\n    <row c=\"Balrille\" ci=\"20000730\" r=\"Essence\" ri=\"10000064\" s=\"Hulmate I - Moon 11 - Bank of Luminaire Depository\" se=\"0.4\" si=\"60011359\" sy=\"Hulmate\" syi=\"30004988\"/>\r\n    <row c=\"Balrille\" ci=\"20000730\" r=\"Essence\" ri=\"10000064\" s=\"Palmon IV - Moon 13 - Bank of Luminaire Vault\" se=\"0.4\" si=\"60011362\" sy=\"Palmon\" syi=\"30004992\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"Sarline IX - Moon 10 - Bank of Luminaire Depository\" se=\"0.4\" si=\"60011365\" sy=\"Sarline\" syi=\"30003584\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"Sarline IX - Moon 15 - Bank of Luminaire Depository\" se=\"0.4\" si=\"60011368\" sy=\"Sarline\" syi=\"30003584\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"Ostingele VII - Pend Insurance Depository\" se=\"0.2\" si=\"60011371\" sy=\"Ostingele\" syi=\"30003792\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"Intaki VI - Moon 5 - Pend Insurance Depository\" se=\"0.6\" si=\"60011374\" sy=\"Intaki\" syi=\"30003788\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"Intaki III - Pend Insurance Depository\" se=\"0.6\" si=\"60011377\" sy=\"Intaki\" syi=\"30003788\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Sizamod VIII - Moon 5 - Pend Insurance Vault\" se=\"0.7\" si=\"60011380\" sy=\"Sizamod\" syi=\"30001728\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Sizamod V - Moon 1 - Pend Insurance Vault\" se=\"0.7\" si=\"60011383\" sy=\"Sizamod\" syi=\"30001728\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Nosodnis VII - Pend Insurance Vault\" se=\"0.9\" si=\"60011386\" sy=\"Nosodnis\" syi=\"30001725\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Pserz X - Pend Insurance Depository\" se=\"0.4\" si=\"60011389\" sy=\"Pserz\" syi=\"30004293\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Keba VII - Moon 15 - Pend Insurance Depository\" se=\"0.5\" si=\"60011392\" sy=\"Keba\" syi=\"30004295\"/>\r\n    <row c=\"Maal\" ci=\"20000627\" r=\"Aridia\" ri=\"10000054\" s=\"Vaini III - Moon 1 - Pend Insurance Depository\" se=\"0.2\" si=\"60011395\" sy=\"Vaini\" syi=\"30004289\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Alenia VII - Moon 18 - Pend Insurance Depository\" se=\"0.9\" si=\"60011398\" sy=\"Alenia\" syi=\"30005302\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Alenia V - Pend Insurance Depository\" se=\"0.9\" si=\"60011401\" sy=\"Alenia\" syi=\"30005302\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Alenia VII - Pend Insurance Depository\" se=\"0.9\" si=\"60011404\" sy=\"Alenia\" syi=\"30005302\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Isendeldik IX - Moon 8 - Pend Insurance Depository\" se=\"0.8\" si=\"60011407\" sy=\"Isendeldik\" syi=\"30002546\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Eystur V - Pend Insurance Depository\" se=\"0.9\" si=\"60011410\" sy=\"Eystur\" syi=\"30002543\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Isendeldik IX - Moon 3 - Pend Insurance Depository\" se=\"0.8\" si=\"60011413\" sy=\"Isendeldik\" syi=\"30002546\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Oppold VIII - Moon 7 - Pend Insurance Depository\" se=\"0.7\" si=\"60011416\" sy=\"Oppold\" syi=\"30003430\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Lumegen V - Moon 1 - Pend Insurance Vault\" se=\"0.6\" si=\"60011419\" sy=\"Lumegen\" syi=\"30003432\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Oppold V - Moon 5 - Pend Insurance Depository\" se=\"0.7\" si=\"60011422\" sy=\"Oppold\" syi=\"30003430\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Jolia I - Moon 1 - Pend Insurance Depository\" se=\"0.5\" si=\"60011425\" sy=\"Jolia\" syi=\"30002679\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Augnais VIII - Moon 14 - Pend Insurance Depository\" se=\"0.5\" si=\"60011428\" sy=\"Augnais\" syi=\"30002680\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Fluekele IV - Moon 1 - Pend Insurance Depository\" se=\"0.6\" si=\"60011431\" sy=\"Fluekele\" syi=\"30002677\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"Arwa IX - Moon 2 - Pend Insurance Depository\" se=\"0.1\" si=\"60011434\" sy=\"Arwa\" syi=\"30002078\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"Ansen I - Moon 1 - Pend Insurance Depository\" se=\"0.1\" si=\"60011437\" sy=\"Ansen\" syi=\"30002081\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"Arwa VIII - Moon 13 - Pend Insurance Depository\" se=\"0.1\" si=\"60011440\" sy=\"Arwa\" syi=\"30002078\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Ranni VII - Moon 2 - Pend Insurance Depository\" se=\"0.4\" si=\"60011443\" sy=\"Ranni\" syi=\"30005085\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Jedandan VI - Moon 13 - Pend Insurance Depository\" se=\"0.4\" si=\"60011446\" sy=\"Jedandan\" syi=\"30005083\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Arza II - Pend Insurance Vault\" se=\"0.3\" si=\"60011449\" sy=\"Arza\" syi=\"30005086\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Anbald I - Pend Insurance Vault\" se=\"0.7\" si=\"60011452\" sy=\"Anbald\" syi=\"30003398\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Bongveber V - Pend Insurance Depository\" se=\"0.9\" si=\"60011455\" sy=\"Bongveber\" syi=\"30003397\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Bongveber VII - Moon 1 - Pend Insurance Depository\" se=\"0.9\" si=\"60011458\" sy=\"Bongveber\" syi=\"30003397\"/>\r\n    <row c=\"Anama\" ci=\"20000619\" r=\"Aridia\" ri=\"10000054\" s=\"Maseera VII - Moon 15 - Pend Insurance Depository\" se=\"0.3\" si=\"60011461\" sy=\"Maseera\" syi=\"30004235\"/>\r\n    <row c=\"Anama\" ci=\"20000619\" r=\"Aridia\" ri=\"10000054\" s=\"Zayi X - Moon 7 - Pend Insurance Depository\" se=\"0.3\" si=\"60011464\" sy=\"Zayi\" syi=\"30004232\"/>\r\n    <row c=\"Anama\" ci=\"20000619\" r=\"Aridia\" ri=\"10000054\" s=\"Maseera VII - Moon 5 - Pend Insurance Depository\" se=\"0.3\" si=\"60011467\" sy=\"Maseera\" syi=\"30004235\"/>\r\n    <row c=\"Parrosa\" ci=\"20000601\" r=\"Kador\" ri=\"10000052\" s=\"Yarebap VI - Moon 11 - Pend Insurance Depository\" se=\"0.5\" si=\"60011470\" sy=\"Yarebap\" syi=\"30004111\"/>\r\n    <row c=\"Parrosa\" ci=\"20000601\" r=\"Kador\" ri=\"10000052\" s=\"Yarebap VII - Moon 20 - Pend Insurance Depository\" se=\"0.5\" si=\"60011473\" sy=\"Yarebap\" syi=\"30004111\"/>\r\n    <row c=\"Parrosa\" ci=\"20000601\" r=\"Kador\" ri=\"10000052\" s=\"Peyiri VIII - Moon 12 - Pend Insurance Depository\" se=\"0.5\" si=\"60011476\" sy=\"Peyiri\" syi=\"30004114\"/>\r\n    <row c=\"Charak\" ci=\"20000768\" r=\"Genesis\" ri=\"10000067\" s=\"Habu V - Moon 2 - Pend Insurance Depository\" se=\"0.6\" si=\"60011479\" sy=\"Habu\" syi=\"30005250\"/>\r\n    <row c=\"Charak\" ci=\"20000768\" r=\"Genesis\" ri=\"10000067\" s=\"Habu V - Moon 12 - Pend Insurance Depository\" se=\"0.6\" si=\"60011482\" sy=\"Habu\" syi=\"30005250\"/>\r\n    <row c=\"Charak\" ci=\"20000768\" r=\"Genesis\" ri=\"10000067\" s=\"Chiga III - Moon 15 - Pend Insurance Vault\" se=\"0.7\" si=\"60011485\" sy=\"Chiga\" syi=\"30005253\"/>\r\n    <row c=\"Pezarba\" ci=\"20000605\" r=\"Kador\" ri=\"10000052\" s=\"Hiremir VIII - Moon 2 - Pend Insurance Vault\" se=\"0.3\" si=\"60011488\" sy=\"Hiremir\" syi=\"30004141\"/>\r\n    <row c=\"Pezarba\" ci=\"20000605\" r=\"Kador\" ri=\"10000052\" s=\"Sechmaren VIII - Moon 10 - Pend Insurance Depository\" se=\"0.4\" si=\"60011491\" sy=\"Sechmaren\" syi=\"30004139\"/>\r\n    <row c=\"Pezarba\" ci=\"20000605\" r=\"Kador\" ri=\"10000052\" s=\"Sechmaren IX - Pend Insurance Depository\" se=\"0.4\" si=\"60011494\" sy=\"Sechmaren\" syi=\"30004139\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isikemi VII - Moon 3 - Pend Insurance Depository\" se=\"0.8\" si=\"60011497\" sy=\"Isikemi\" syi=\"30001365\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Uosusuokko VII - Moon 11 - Pend Insurance Depository\" se=\"0.7\" si=\"60011500\" sy=\"Uosusuokko\" syi=\"30001366\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Isikemi IV - Pend Insurance Depository\" se=\"0.8\" si=\"60011503\" sy=\"Isikemi\" syi=\"30001365\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Lirsautton IV - Moon 1 - Garoun Investment Bank Depository\" se=\"0.8\" si=\"60011506\" sy=\"Lirsautton\" syi=\"30003025\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Aclan VI - Garoun Investment Bank Vault\" se=\"0.5\" si=\"60011509\" sy=\"Aclan\" syi=\"30003028\"/>\r\n    <row c=\"Goins\" ci=\"20000523\" r=\"Solitude\" ri=\"10000044\" s=\"Arasare VI - Garoun Investment Bank Depository\" se=\"0.8\" si=\"60011512\" sy=\"Arasare\" syi=\"30003590\"/>\r\n    <row c=\"Goins\" ci=\"20000523\" r=\"Solitude\" ri=\"10000044\" s=\"Lazer VIII - Moon 2 - Garoun Investment Bank Depository\" se=\"0.8\" si=\"60011515\" sy=\"Lazer\" syi=\"30003592\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Raneilles VI - Moon 1 - Garoun Investment Bank Depository\" se=\"0.6\" si=\"60011518\" sy=\"Raneilles\" syi=\"30005319\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Luse VII - Moon 4 - Garoun Investment Bank Depository\" se=\"0.9\" si=\"60011521\" sy=\"Luse\" syi=\"30005316\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Aunsou IV - Moon 1 - Garoun Investment Bank Depository\" se=\"0.2\" si=\"60011524\" sy=\"Aunsou\" syi=\"30003801\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Pain V - Garoun Investment Bank Vault\" se=\"0.1\" si=\"60011527\" sy=\"Pain\" syi=\"30003804\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Amygnon VIII - Moon 5 - Garoun Investment Bank Vault\" se=\"0.6\" si=\"60011530\" sy=\"Amygnon\" syi=\"30005311\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Amygnon VI - Moon 1 - Garoun Investment Bank Vault\" se=\"0.6\" si=\"60011533\" sy=\"Amygnon\" syi=\"30005311\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Iges IV - Moon 2 - Garoun Investment Bank Depository\" se=\"0.3\" si=\"60011536\" sy=\"Iges\" syi=\"30003796\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Iges VI - Moon 6 - Garoun Investment Bank Depository\" se=\"0.3\" si=\"60011539\" sy=\"Iges\" syi=\"30003796\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Stegette IV - Moon 4 - Garoun Investment Bank Depository\" se=\"0.5\" si=\"60011542\" sy=\"Stegette\" syi=\"30002696\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Stegette V - Moon 19 - Garoun Investment Bank Depository\" se=\"0.5\" si=\"60011545\" sy=\"Stegette\" syi=\"30002696\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Olide V - Moon 3 - Garoun Investment Bank Depository\" se=\"0.7\" si=\"60011548\" sy=\"Olide\" syi=\"30003058\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Olide V - Moon 5 - Garoun Investment Bank Depository\" se=\"0.7\" si=\"60011551\" sy=\"Olide\" syi=\"30003058\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Pucherie VI - Moon 18 - Garoun Investment Bank Vault\" se=\"0.8\" si=\"60011554\" sy=\"Pucherie\" syi=\"30002733\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Pucherie VI - Moon 2 - Garoun Investment Bank Vault\" se=\"0.8\" si=\"60011557\" sy=\"Pucherie\" syi=\"30002733\"/>\r\n    <row c=\"Aideron\" ci=\"20000780\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Amoderia VI - Moon 1 - Garoun Investment Bank Depository\" se=\"0.4\" si=\"60011560\" sy=\"Amoderia\" syi=\"30005329\"/>\r\n    <row c=\"Aideron\" ci=\"20000780\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Stou V - Moon 3 - Garoun Investment Bank Depository\" se=\"0.5\" si=\"60011563\" sy=\"Stou\" syi=\"30005333\"/>\r\n    <row c=\"Nexus\" ci=\"20000397\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Bourynes VII - Moon 2 - University of Caille\" se=\"1.0\" si=\"60011566\" sy=\"Bourynes\" syi=\"30002715\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"Bille X - Moon 1 - University of Caille\" se=\"0.5\" si=\"60011569\" sy=\"Bille\" syi=\"30003040\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"Osmeden IX - Moon 6 - University of Caille\" se=\"0.7\" si=\"60011572\" sy=\"Osmeden\" syi=\"30003831\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Alenia IV - Moon 3 - Quafe Company School\" se=\"0.9\" si=\"60011575\" sy=\"Alenia\" syi=\"30005302\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Egghelende V - Moon 13 - University of Caille\" se=\"0.4\" si=\"60011578\" sy=\"Egghelende\" syi=\"30002693\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Eletta VIII - Moon 19 - University of Caille\" se=\"0.9\" si=\"60011581\" sy=\"Eletta\" syi=\"30005315\"/>\r\n    <row c=\"Spaen\" ci=\"20000388\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Ney IV - University of Caille\" se=\"0.5\" si=\"60011584\" sy=\"Ney\" syi=\"30002650\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Scolluzer VII - Moon 1 - University of Caille\" se=\"0.8\" si=\"60011587\" sy=\"Scolluzer\" syi=\"30005322\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Aporulie VI - Moon 9 - University of Caille\" se=\"0.8\" si=\"60011590\" sy=\"Aporulie\" syi=\"30005019\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Inghenges VI - Moon 7 - University of Caille\" se=\"0.7\" si=\"60011593\" sy=\"Inghenges\" syi=\"30002672\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"Ladistier VI - Moon 4 - President Bureau\" se=\"0.3\" si=\"60011596\" sy=\"Ladistier\" syi=\"30004999\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"Parts IV - Moon 3 - President Bureau\" se=\"0.4\" si=\"60011599\" sy=\"Parts\" syi=\"30004998\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"Villore VII - Moon 6 - Senate Bureau\" se=\"0.9\" si=\"60011602\" sy=\"Villore\" syi=\"30004993\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"Old Man Star VIII - Moon 2 - Senate Bureau\" se=\"0.3\" si=\"60011605\" sy=\"Old Man Star\" syi=\"30005000\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"Villore VIII - Moon 2 - Supreme Court Law School\" se=\"0.9\" si=\"60011608\" sy=\"Villore\" syi=\"30004993\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"Parts VI - Supreme Court Tribunal\" se=\"0.4\" si=\"60011611\" sy=\"Parts\" syi=\"30004998\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Algogille IX - Moon 3 - Federal Administration Information Center\" se=\"0.9\" si=\"60011614\" sy=\"Algogille\" syi=\"30004972\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Luminaire VII (Caldari Prime) - Federal Administration Information Center\" se=\"1.0\" si=\"60011617\" sy=\"Luminaire\" syi=\"30004967\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Mies V - Moon 17 - Federal Administration Information Center\" se=\"0.9\" si=\"60011620\" sy=\"Mies\" syi=\"30004968\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Luminaire VII (Caldari Prime) - Moon 4 - Federal Administration Bureau Offices\" se=\"1.0\" si=\"60011623\" sy=\"Luminaire\" syi=\"30004967\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"Halle VII - Federal Administration Bureau Offices\" se=\"0.7\" si=\"60011626\" sy=\"Halle\" syi=\"30003010\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"Mormoen VI - Moon 2 - Federal Administration Archives\" se=\"0.7\" si=\"60011629\" sy=\"Mormoen\" syi=\"30003011\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"Jurlesel VI - Moon 20 - Federal Administration Information Center\" se=\"0.6\" si=\"60011632\" sy=\"Jurlesel\" syi=\"30003013\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"Aice II - Moon 1 - Federal Administration Information Center\" se=\"0.7\" si=\"60011635\" sy=\"Aice\" syi=\"30003015\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Kenninck VIII - Federal Administration Archives\" se=\"0.1\" si=\"60011638\" sy=\"Kenninck\" syi=\"30003823\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Aulbres VI - Moon 6 - Federal Administration Information Center\" se=\"0.1\" si=\"60011641\" sy=\"Aulbres\" syi=\"30003818\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Barleguet VII - Federal Administration Information Center\" se=\"0.1\" si=\"60011644\" sy=\"Barleguet\" syi=\"30003819\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Kenninck IX - Moon 6 - Federal Administration Archives\" se=\"0.1\" si=\"60011647\" sy=\"Kenninck\" syi=\"30003823\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"Tolle VI - Moon 19 - Federal Administration Information Center\" se=\"0.7\" si=\"60011650\" sy=\"Tolle\" syi=\"30003052\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"Scuelazyns III - Moon 1 - Federal Administration Information Center\" se=\"0.6\" si=\"60011653\" sy=\"Scuelazyns\" syi=\"30003054\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"Odixie VII - Moon 1 - Federal Administration Bureau Offices\" se=\"0.6\" si=\"60011656\" sy=\"Odixie\" syi=\"30003050\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"Laic IX - Moon 2 - Federal Administration Archives\" se=\"0.8\" si=\"60011659\" sy=\"Laic\" syi=\"30003049\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"Charmerout VII - Federal Administration Information Center\" se=\"0.6\" si=\"60011662\" sy=\"Charmerout\" syi=\"30004976\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"Charmerout IX - Moon 1 - Federal Administration Information Center\" se=\"0.6\" si=\"60011665\" sy=\"Charmerout\" syi=\"30004976\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"Charmerout VII - Moon 4 - Federal Administration Information Center\" se=\"0.6\" si=\"60011668\" sy=\"Charmerout\" syi=\"30004976\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"Charmerout IV - Moon 1 - Federal Administration Information Center\" se=\"0.6\" si=\"60011671\" sy=\"Charmerout\" syi=\"30004976\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Atier II - Federal Administration Archives\" se=\"0.6\" si=\"60011674\" sy=\"Atier\" syi=\"30002701\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Brapelille X - Moon 5 - Federal Administration Information Center\" se=\"0.7\" si=\"60011677\" sy=\"Brapelille\" syi=\"30002699\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Brapelille IX - Moon 18 - Federal Administration Information Center\" se=\"0.7\" si=\"60011680\" sy=\"Brapelille\" syi=\"30002699\"/>\r\n    <row c=\"Wyllequet\" ci=\"20000395\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Brapelille IV - Moon 2 - Federal Administration Bureau Offices\" se=\"0.7\" si=\"60011683\" sy=\"Brapelille\" syi=\"30002699\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Lirsautton IX - Moon 15 - Federal Administration Information Center\" se=\"0.8\" si=\"60011686\" sy=\"Lirsautton\" syi=\"30003025\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Marosier IX - Moon 1 - Federal Administration Information Center\" se=\"0.6\" si=\"60011689\" sy=\"Marosier\" syi=\"30003024\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Aclan X - Moon 7 - Federal Administration Archives\" se=\"0.5\" si=\"60011692\" sy=\"Aclan\" syi=\"30003028\"/>\r\n    <row c=\"Ysiette\" ci=\"20000443\" r=\"Everyshore\" ri=\"10000037\" s=\"Lirsautton IX - Moon 3 - Federal Administration Bureau Offices\" se=\"0.8\" si=\"60011695\" sy=\"Lirsautton\" syi=\"30003025\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Uphallant VIII - Moon 2 - Federal Administration Archives\" se=\"0.2\" si=\"60011698\" sy=\"Uphallant\" syi=\"30003799\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Stacmon X - Moon 1 - Federal Administration Bureau Offices\" se=\"0.6\" si=\"60011701\" sy=\"Stacmon\" syi=\"30003794\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Slays VII - Moon 3 - Federal Administration Bureau Offices\" se=\"0.5\" si=\"60011704\" sy=\"Slays\" syi=\"30003798\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Dastryns VIII - Moon 17 - Federal Administration Bureau Offices\" se=\"0.3\" si=\"60011707\" sy=\"Dastryns\" syi=\"30003797\"/>\r\n    <row c=\"Firille\" ci=\"20000390\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Basgerin VII - Moon 7 - Federal Administration Archives\" se=\"0.4\" si=\"60011710\" sy=\"Basgerin\" syi=\"30002666\"/>\r\n    <row c=\"Firille\" ci=\"20000390\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Alles VII - Moon 16 - Federal Administration Bureau Offices\" se=\"0.8\" si=\"60011713\" sy=\"Alles\" syi=\"30002664\"/>\r\n    <row c=\"Firille\" ci=\"20000390\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Foves VII - Moon 13 - Federal Administration Bureau Offices\" se=\"0.6\" si=\"60011716\" sy=\"Foves\" syi=\"30002663\"/>\r\n    <row c=\"Firille\" ci=\"20000390\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Chelien IV - Moon 20 - Federal Administration Information Center\" se=\"0.7\" si=\"60011719\" sy=\"Chelien\" syi=\"30002667\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"Osmeden III - Federal Administration Information Center\" se=\"0.7\" si=\"60011722\" sy=\"Osmeden\" syi=\"30003831\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"Adacyne IV - Moon 14 - Federal Administration Bureau Offices\" se=\"0.5\" si=\"60011725\" sy=\"Adacyne\" syi=\"30003832\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"Adacyne III - Moon 14 - Federal Administration Information Center\" se=\"0.5\" si=\"60011728\" sy=\"Adacyne\" syi=\"30003832\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"Orvolle VI - Moon 1 - Federal Administration Bureau Offices\" se=\"0.7\" si=\"60011731\" sy=\"Orvolle\" syi=\"30003830\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Algogille XIII - Federation Navy Testing Facilities\" se=\"0.9\" si=\"60011734\" sy=\"Algogille\" syi=\"30004972\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Oursulaert VII - Moon 1 - Federation Navy Testing Facilities\" se=\"0.9\" si=\"60011737\" sy=\"Oursulaert\" syi=\"30004969\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Oursulaert III - Federation Navy Testing Facilities\" se=\"0.9\" si=\"60011740\" sy=\"Oursulaert\" syi=\"30004969\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Oursulaert IV - Federation Navy Testing Facilities\" se=\"0.9\" si=\"60011743\" sy=\"Oursulaert\" syi=\"30004969\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Mies V - Moon 3 - Federation Navy Assembly Plant\" se=\"0.9\" si=\"60011746\" sy=\"Mies\" syi=\"30004968\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Luminaire VII (Caldari Prime) - Moon 6 - Federation Navy Assembly Plant\" se=\"1.0\" si=\"60011749\" sy=\"Luminaire\" syi=\"30004967\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"Niballe V - Moon 1 - Federation Navy Testing Facilities\" se=\"0.6\" si=\"60011752\" sy=\"Niballe\" syi=\"30003580\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"Sarline VII - Moon 18 - Federation Navy Assembly Plant\" se=\"0.4\" si=\"60011755\" sy=\"Sarline\" syi=\"30003584\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"Aeter VI - Moon 23 - Federation Navy Testing Facilities\" se=\"0.3\" si=\"60011758\" sy=\"Aeter\" syi=\"30003585\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"Sarline VIII - Moon 7 - Federation Navy Assembly Plant\" se=\"0.4\" si=\"60011761\" sy=\"Sarline\" syi=\"30003584\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"Sarline VII - Moon 16 - Federation Navy Assembly Plant\" se=\"0.4\" si=\"60011764\" sy=\"Sarline\" syi=\"30003584\"/>\r\n    <row c=\"Orvanne\" ci=\"20000522\" r=\"Solitude\" ri=\"10000044\" s=\"Gererique VI - Moon 3 - Federation Navy Testing Facilities\" se=\"0.7\" si=\"60011767\" sy=\"Gererique\" syi=\"30003586\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Aulbres VI - Moon 5 - Federation Navy Logistic Support\" se=\"0.1\" si=\"60011770\" sy=\"Aulbres\" syi=\"30003818\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Vestouve VIII - Moon 13 - Federation Navy Logistic Support\" se=\"0.1\" si=\"60011773\" sy=\"Vestouve\" syi=\"30003820\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Vestouve IX - Moon 14 - Federation Navy Logistic Support\" se=\"0.1\" si=\"60011776\" sy=\"Vestouve\" syi=\"30003820\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Barleguet VII - Moon 9 - Federation Navy Assembly Plant\" se=\"0.1\" si=\"60011779\" sy=\"Barleguet\" syi=\"30003819\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Aulbres V - Moon 5 - Federation Navy Assembly Plant\" se=\"0.1\" si=\"60011782\" sy=\"Aulbres\" syi=\"30003818\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Barleguet VII - Federation Navy Assembly Plant\" se=\"0.1\" si=\"60011785\" sy=\"Barleguet\" syi=\"30003819\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Jel VI - Federation Navy Logistic Support\" se=\"0.6\" si=\"60011788\" sy=\"Jel\" syi=\"30002692\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Ation IX - Moon 4 - Federation Navy Logistic Support\" se=\"0.6\" si=\"60011791\" sy=\"Ation\" syi=\"30002695\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Egghelende VII - Moon 20 - Federation Navy Assembly Plant\" se=\"0.4\" si=\"60011794\" sy=\"Egghelende\" syi=\"30002693\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Jel VIII - Moon 20 - Federation Navy Assembly Plant\" se=\"0.6\" si=\"60011797\" sy=\"Jel\" syi=\"30002692\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Jel V - Federation Navy Logistic Support\" se=\"0.6\" si=\"60011800\" sy=\"Jel\" syi=\"30002692\"/>\r\n    <row c=\"Stion\" ci=\"20000394\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Ravarin IV - Moon 2 - Federation Navy Testing Facilities\" se=\"0.4\" si=\"60011803\" sy=\"Ravarin\" syi=\"30002697\"/>\r\n    <row c=\"Mobrault\" ci=\"20000525\" r=\"Solitude\" ri=\"10000044\" s=\"Straloin VI - Moon 11 - Federation Navy Assembly Plant\" se=\"0.2\" si=\"60011806\" sy=\"Straloin\" syi=\"30003607\"/>\r\n    <row c=\"Mobrault\" ci=\"20000525\" r=\"Solitude\" ri=\"10000044\" s=\"Pochelympe IX - Federation Navy Assembly Plant\" se=\"0.6\" si=\"60011809\" sy=\"Pochelympe\" syi=\"30003604\"/>\r\n    <row c=\"Mobrault\" ci=\"20000525\" r=\"Solitude\" ri=\"10000044\" s=\"Ratillose V - Moon 19 - Federation Navy Logistic Support\" se=\"0.4\" si=\"60011812\" sy=\"Ratillose\" syi=\"30003602\"/>\r\n    <row c=\"Mobrault\" ci=\"20000525\" r=\"Solitude\" ri=\"10000044\" s=\"Toustain VI - Moon 16 - Federation Navy Assembly Plant\" se=\"0.4\" si=\"60011815\" sy=\"Toustain\" syi=\"30003606\"/>\r\n    <row c=\"Mobrault\" ci=\"20000525\" r=\"Solitude\" ri=\"10000044\" s=\"Ratillose V - Moon 8 - Federation Navy Logistic Support\" se=\"0.4\" si=\"60011818\" sy=\"Ratillose\" syi=\"30003602\"/>\r\n    <row c=\"Mobrault\" ci=\"20000525\" r=\"Solitude\" ri=\"10000044\" s=\"Straloin VI - Moon 17 - Federation Navy Logistic Support\" se=\"0.2\" si=\"60011821\" sy=\"Straloin\" syi=\"30003607\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"Orvolle I - Federation Navy Assembly Plant\" se=\"0.7\" si=\"60011824\" sy=\"Orvolle\" syi=\"30003830\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"Chardalane III - Federation Navy Testing Facilities\" se=\"0.4\" si=\"60011827\" sy=\"Chardalane\" syi=\"30003834\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"Osmeden XII - Moon 1 - Federation Navy Assembly Plant\" se=\"0.7\" si=\"60011830\" sy=\"Osmeden\" syi=\"30003831\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"Osmeden VII - Moon 18 - Federation Navy Assembly Plant\" se=\"0.7\" si=\"60011833\" sy=\"Osmeden\" syi=\"30003831\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"Oulley IV - Federation Navy Assembly Plant\" se=\"0.3\" si=\"60011836\" sy=\"Oulley\" syi=\"30003833\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"Oulley IV - Moon 1 - Federation Navy Assembly Plant\" se=\"0.3\" si=\"60011839\" sy=\"Oulley\" syi=\"30003833\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Caretyn VII - Moon 13 - Federation Navy Assembly Plant\" se=\"0.8\" si=\"60011842\" sy=\"Caretyn\" syi=\"30002735\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Caretyn VII - Moon 18 - Federation Navy Assembly Plant\" se=\"0.8\" si=\"60011845\" sy=\"Caretyn\" syi=\"30002735\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Vittenyn VI - Moon 13 - Federation Navy Assembly Plant\" se=\"0.9\" si=\"60011848\" sy=\"Vittenyn\" syi=\"30002731\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Fricoure VIII - Moon 2 - Federation Navy Assembly Plant\" se=\"0.8\" si=\"60011851\" sy=\"Fricoure\" syi=\"30002734\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Mirilene IV - Moon 1 - Federation Navy Logistic Support\" se=\"0.8\" si=\"60011854\" sy=\"Mirilene\" syi=\"30002732\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Pucherie VI - Moon 11 - Federation Navy Testing Facilities\" se=\"0.8\" si=\"60011857\" sy=\"Pucherie\" syi=\"30002733\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Eglennaert I - Moon 16 - Federation Navy Logistic Support\" se=\"0.8\" si=\"60011860\" sy=\"Eglennaert\" syi=\"30002660\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Eglennaert I - Moon 1 - Federation Navy Assembly Plant\" se=\"0.8\" si=\"60011863\" sy=\"Eglennaert\" syi=\"30002660\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Dodixie IX - Moon 20 - Federation Navy Assembly Plant\" se=\"0.9\" si=\"60011866\" sy=\"Dodixie\" syi=\"30002659\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Eglennaert I - Moon 4 - Federation Navy Assembly Plant\" se=\"0.8\" si=\"60011869\" sy=\"Eglennaert\" syi=\"30002660\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Aunia I - Moon 11 - Federation Navy Assembly Plant\" se=\"0.8\" si=\"60011872\" sy=\"Aunia\" syi=\"30002657\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Vylade VII - Moon 6 - Federation Navy Logistic Support\" se=\"0.8\" si=\"60011875\" sy=\"Vylade\" syi=\"30002655\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Iges VI - Moon 12 - Federation Navy Assembly Plant\" se=\"0.3\" si=\"60011878\" sy=\"Iges\" syi=\"30003796\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Uphallant VII - Federation Navy Testing Facilities\" se=\"0.2\" si=\"60011881\" sy=\"Uphallant\" syi=\"30003799\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Uphallant III - Federation Navy Testing Facilities\" se=\"0.2\" si=\"60011884\" sy=\"Uphallant\" syi=\"30003799\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Uphallant V - Moon 14 - Federation Navy Assembly Plant\" se=\"0.2\" si=\"60011887\" sy=\"Uphallant\" syi=\"30003799\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Iges I - Federation Navy Assembly Plant\" se=\"0.3\" si=\"60011890\" sy=\"Iges\" syi=\"30003796\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Stacmon V - Moon 9 - Federation Navy Assembly Plant\" se=\"0.6\" si=\"60011893\" sy=\"Stacmon\" syi=\"30003794\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Reblier VII - Moon 10 - Federation Navy Assembly Plant\" se=\"0.4\" si=\"60011896\" sy=\"Reblier\" syi=\"30005328\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Scolluzer VII - Moon 2 - Federation Navy Logistic Support\" se=\"0.8\" si=\"60011899\" sy=\"Scolluzer\" syi=\"30005322\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Reblier VI - Federation Navy Logistic Support\" se=\"0.4\" si=\"60011902\" sy=\"Reblier\" syi=\"30005328\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Masalle VI - Moon 9 - Federation Navy Logistic Support\" se=\"0.8\" si=\"60011905\" sy=\"Masalle\" syi=\"30005325\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Sortet V - Moon 1 - Federation Navy Assembly Plant\" se=\"0.8\" si=\"60011908\" sy=\"Sortet\" syi=\"30005323\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Reblier VII - Moon 4 - Federation Navy Assembly Plant\" se=\"0.4\" si=\"60011911\" sy=\"Reblier\" syi=\"30005328\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Renyn IX - Moon 4 - Federal Intelligence Office Logistic Support\" se=\"0.9\" si=\"60011914\" sy=\"Renyn\" syi=\"30004970\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Oursulaert VII - Moon 2 - Federal Intelligence Office Testing Facilities\" se=\"0.9\" si=\"60011917\" sy=\"Oursulaert\" syi=\"30004969\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Oursulaert VII - Moon 4 - Federal Intelligence Office Testing Facilities\" se=\"0.9\" si=\"60011920\" sy=\"Oursulaert\" syi=\"30004969\"/>\r\n    <row c=\"Disier\" ci=\"20000386\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Grinacanne I - Federal Intelligence Office Assembly Plant\" se=\"0.8\" si=\"60011923\" sy=\"Grinacanne\" syi=\"30002636\"/>\r\n    <row c=\"Disier\" ci=\"20000386\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Decon VI - Moon 10 - Federal Intelligence Office Assembly Plant\" se=\"0.4\" si=\"60011926\" sy=\"Decon\" syi=\"30002635\"/>\r\n    <row c=\"Disier\" ci=\"20000386\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Aufay V - Moon 1 - Federal Intelligence Office Testing Facilities\" se=\"0.5\" si=\"60011929\" sy=\"Aufay\" syi=\"30002641\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"Arant IV - Moon 1 - Federal Intelligence Office Assembly Plant\" se=\"0.6\" si=\"60011932\" sy=\"Arant\" syi=\"30004994\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"Villore VIII - Moon 7 - Federal Intelligence Office Logistic Support\" se=\"0.9\" si=\"60011935\" sy=\"Villore\" syi=\"30004993\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"Parts V - Moon 1 - Federal Intelligence Office Assembly Plant\" se=\"0.4\" si=\"60011938\" sy=\"Parts\" syi=\"30004998\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"Haine III - Moon 2 - Federal Intelligence Office Logistic Support\" se=\"0.4\" si=\"60011941\" sy=\"Haine\" syi=\"30005012\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"Haine VI - Moon 6 - Federal Intelligence Office Assembly Plant\" se=\"0.4\" si=\"60011944\" sy=\"Haine\" syi=\"30005012\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"Isenan X - Moon 7 - Federal Intelligence Office Testing Facilities\" se=\"0.3\" si=\"60011947\" sy=\"Isenan\" syi=\"30005014\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Boystin V - Moon 6 - Federal Intelligence Office Assembly Plant\" se=\"0.5\" si=\"60011950\" sy=\"Boystin\" syi=\"30003574\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Pertnineere VI - Federal Intelligence Office Logistic Support\" se=\"0.4\" si=\"60011953\" sy=\"Pertnineere\" syi=\"30003573\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Maire VI - Moon 23 - Federal Intelligence Office Assembly Plant\" se=\"0.7\" si=\"60011956\" sy=\"Maire\" syi=\"30003576\"/>\r\n    <row c=\"Eustron\" ci=\"20000735\" r=\"Essence\" ri=\"10000064\" s=\"Ommare VI - Federal Intelligence Office Assembly Plant\" se=\"0.7\" si=\"60011959\" sy=\"Ommare\" syi=\"30005027\"/>\r\n    <row c=\"Eustron\" ci=\"20000735\" r=\"Essence\" ri=\"10000064\" s=\"Ommare VII - Moon 5 - Federal Intelligence Office Assembly Plant\" se=\"0.7\" si=\"60011962\" sy=\"Ommare\" syi=\"30005027\"/>\r\n    <row c=\"Eustron\" ci=\"20000735\" r=\"Essence\" ri=\"10000064\" s=\"Cat VI - Moon 7 - Federal Intelligence Office Logistic Support\" se=\"0.7\" si=\"60011965\" sy=\"Cat\" syi=\"30005026\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"Ignebaener VI - Moon 1 - Perun Clade Extractive Terminus\" se=\"0.0\" si=\"60011968\" sy=\"Ignebaener\" syi=\"30005005\"/>\r\n    <row c=\"Peccanouette\" ci=\"20000732\" r=\"Essence\" ri=\"10000064\" s=\"Aeschee VI - Moon 4 - Federal Intelligence Office Logistic Support\" se=\"0.2\" si=\"60011971\" sy=\"Aeschee\" syi=\"30005008\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"Ignebaener IV - Perun Clade Semiosis Theater\" se=\"0.0\" si=\"60011974\" sy=\"Ignebaener\" syi=\"30005005\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Eglennaert I - Moon 14 - Federal Intelligence Office Assembly Plant\" se=\"0.8\" si=\"60011977\" sy=\"Eglennaert\" syi=\"30002660\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Eglennaert I - Moon 4 - Federal Intelligence Office Logistic Support\" se=\"0.8\" si=\"60011980\" sy=\"Eglennaert\" syi=\"30002660\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Auvergne V - Moon 5 - Federal Intelligence Office Assembly Plant\" se=\"0.9\" si=\"60011983\" sy=\"Auvergne\" syi=\"30002656\"/>\r\n    <row c=\"Goins\" ci=\"20000523\" r=\"Solitude\" ri=\"10000044\" s=\"Arasare V - Moon 7 - Federal Intelligence Office Assembly Plant\" se=\"0.8\" si=\"60011986\" sy=\"Arasare\" syi=\"30003590\"/>\r\n    <row c=\"Goins\" ci=\"20000523\" r=\"Solitude\" ri=\"10000044\" s=\"Vecodie II - Federal Intelligence Office Testing Facilities\" se=\"0.8\" si=\"60011989\" sy=\"Vecodie\" syi=\"30003589\"/>\r\n    <row c=\"Goins\" ci=\"20000523\" r=\"Solitude\" ri=\"10000044\" s=\"Yvaeroure X - Moon 14 - Federal Intelligence Office Assembly Plant\" se=\"0.8\" si=\"60011992\" sy=\"Yvaeroure\" syi=\"30003588\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"Bereye VI - Federal Intelligence Office Assembly Plant\" se=\"0.9\" si=\"60011995\" sy=\"Bereye\" syi=\"30003014\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"Halle VII - Moon 6 - Federal Intelligence Office Assembly Plant\" se=\"0.7\" si=\"60011998\" sy=\"Halle\" syi=\"30003010\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"Junsoraert VI - Moon 1 - Federal Intelligence Office Assembly Plant\" se=\"0.5\" si=\"60012001\" sy=\"Junsoraert\" syi=\"30003016\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Luminaire VII (Caldari Prime) - Moon 1 - Federation Customs Testing Facilities\" se=\"1.0\" si=\"60012004\" sy=\"Luminaire\" syi=\"30004967\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Luminaire VII (Caldari Prime) - Moon 5 - Federation Customs Assembly Plant\" se=\"1.0\" si=\"60012007\" sy=\"Luminaire\" syi=\"30004967\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Renyn IX - Federation Customs Assembly Plant\" se=\"0.9\" si=\"60012010\" sy=\"Renyn\" syi=\"30004970\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Oursulaert IX - Federation Customs Testing Facilities\" se=\"0.9\" si=\"60012013\" sy=\"Oursulaert\" syi=\"30004969\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Aunsou II - Moon 1 - Federation Customs Assembly Plant\" se=\"0.2\" si=\"60012016\" sy=\"Aunsou\" syi=\"30003801\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Aunsou III - Moon 4 - Federation Customs Assembly Plant\" se=\"0.2\" si=\"60012019\" sy=\"Aunsou\" syi=\"30003801\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Reynire VIII - Moon 2 - Federation Customs Logistic Support\" se=\"0.2\" si=\"60012022\" sy=\"Reynire\" syi=\"30003803\"/>\r\n    <row c=\"Alselbosier\" ci=\"20000555\" r=\"Placid\" ri=\"10000048\" s=\"Aunsou III - Moon 1 - Federation Customs Assembly Plant\" se=\"0.2\" si=\"60012025\" sy=\"Aunsou\" syi=\"30003801\"/>\r\n    <row c=\"Gallente Border Zone\" ci=\"20000387\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Ignoitton V - Moon 13 - Federation Customs Logistic Support\" se=\"0.4\" si=\"60012028\" sy=\"Ignoitton\" syi=\"30002647\"/>\r\n    <row c=\"Gallente Border Zone\" ci=\"20000387\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Direrie I - Federation Customs Logistic Support\" se=\"0.5\" si=\"60012031\" sy=\"Direrie\" syi=\"30002646\"/>\r\n    <row c=\"Gallente Border Zone\" ci=\"20000387\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Carrou III - Moon 7 - Federation Customs Logistic Support\" se=\"0.4\" si=\"60012034\" sy=\"Carrou\" syi=\"30002645\"/>\r\n    <row c=\"Gallente Border Zone\" ci=\"20000387\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Direrie V - Moon 19 - Federation Customs Logistic Support\" se=\"0.5\" si=\"60012037\" sy=\"Direrie\" syi=\"30002646\"/>\r\n    <row c=\"Firille\" ci=\"20000390\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Misneden IV - Moon 2 - Federation Customs Testing Facilities\" se=\"0.5\" si=\"60012040\" sy=\"Misneden\" syi=\"30002665\"/>\r\n    <row c=\"Firille\" ci=\"20000390\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Foves VII - Moon 10 - Federation Customs Assembly Plant\" se=\"0.6\" si=\"60012043\" sy=\"Foves\" syi=\"30002663\"/>\r\n    <row c=\"Firille\" ci=\"20000390\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Foves VII - Moon 4 - Federation Customs Assembly Plant\" se=\"0.6\" si=\"60012046\" sy=\"Foves\" syi=\"30002663\"/>\r\n    <row c=\"Firille\" ci=\"20000390\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Basgerin V - Moon 1 - Federation Customs Testing Facilities\" se=\"0.4\" si=\"60012049\" sy=\"Basgerin\" syi=\"30002666\"/>\r\n    <row c=\"Chasnaye\" ci=\"20000442\" r=\"Everyshore\" ri=\"10000037\" s=\"Gerper VI - Moon 7 - Federation Customs Testing Facilities\" se=\"0.4\" si=\"60012052\" sy=\"Gerper\" syi=\"30003023\"/>\r\n    <row c=\"Chasnaye\" ci=\"20000442\" r=\"Everyshore\" ri=\"10000037\" s=\"Torvi VII - Moon 1 - Federation Customs Logistic Support\" se=\"0.5\" si=\"60012055\" sy=\"Torvi\" syi=\"30003020\"/>\r\n    <row c=\"Chasnaye\" ci=\"20000442\" r=\"Everyshore\" ri=\"10000037\" s=\"Mya IV - Moon 2 - Federation Customs Testing Facilities\" se=\"0.4\" si=\"60012058\" sy=\"Mya\" syi=\"30003022\"/>\r\n    <row c=\"Chasnaye\" ci=\"20000442\" r=\"Everyshore\" ri=\"10000037\" s=\"Azer VI - Moon 3 - Federation Customs Assembly Plant\" se=\"0.7\" si=\"60012061\" sy=\"Azer\" syi=\"30003018\"/>\r\n    <row c=\"Woenckee\" ci=\"20000775\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Costolle III - Moon 1 - Federation Customs Logistic Support\" se=\"0.2\" si=\"60012064\" sy=\"Costolle\" syi=\"30005298\"/>\r\n    <row c=\"Woenckee\" ci=\"20000775\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Murethand VIII - Moon 2 - Federation Customs Assembly Plant\" se=\"0.3\" si=\"60012067\" sy=\"Murethand\" syi=\"30005295\"/>\r\n    <row c=\"Woenckee\" ci=\"20000775\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Melmaniel VIII - Moon 11 - Federation Customs Assembly Plant\" se=\"0.3\" si=\"60012070\" sy=\"Melmaniel\" syi=\"30005296\"/>\r\n    <row c=\"Woenckee\" ci=\"20000775\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Melmaniel VI - Moon 5 - Federation Customs Assembly Plant\" se=\"0.3\" si=\"60012073\" sy=\"Melmaniel\" syi=\"30005296\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Octanneve V - Moon 1 - Federation Customs Assembly Plant\" se=\"0.7\" si=\"60012076\" sy=\"Octanneve\" syi=\"30003578\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Octanneve III - Moon 1 - Federation Customs Logistic Support\" se=\"0.7\" si=\"60012079\" sy=\"Octanneve\" syi=\"30003578\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Octanneve III - Federation Customs Assembly Plant\" se=\"0.7\" si=\"60012082\" sy=\"Octanneve\" syi=\"30003578\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Octanneve IV - Federation Customs Assembly Plant\" se=\"0.7\" si=\"60012085\" sy=\"Octanneve\" syi=\"30003578\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Grispire I - Federation Customs Logistic Support\" se=\"0.2\" si=\"60012088\" sy=\"Grispire\" syi=\"30003808\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Pelille III - Moon 5 - Federation Customs Assembly Plant\" se=\"0.2\" si=\"60012091\" sy=\"Pelille\" syi=\"30003806\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Vivanier VI - Moon 8 - Federation Customs Assembly Plant\" se=\"0.5\" si=\"60012094\" sy=\"Vivanier\" syi=\"30003810\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Vivanier II - Federation Customs Assembly Plant\" se=\"0.5\" si=\"60012097\" sy=\"Vivanier\" syi=\"30003810\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Ekuenbiron VII - Moon 12 - Federation Customs Logistic Support\" se=\"0.8\" si=\"60012100\" sy=\"Ekuenbiron\" syi=\"30005317\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Luse VI - Moon 1 - Federation Customs Assembly Plant\" se=\"0.9\" si=\"60012103\" sy=\"Luse\" syi=\"30005316\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Ekuenbiron VI - Federation Customs Logistic Support\" se=\"0.8\" si=\"60012106\" sy=\"Ekuenbiron\" syi=\"30005317\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Eletta IX - Federation Customs Assembly Plant\" se=\"0.9\" si=\"60012109\" sy=\"Eletta\" syi=\"30005315\"/>\r\n    <row c=\"Aeman\" ci=\"20000398\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Thelan VI - Moon 8 - Federation Customs Testing Facilities\" se=\"0.2\" si=\"60012112\" sy=\"Thelan\" syi=\"30002720\"/>\r\n    <row c=\"Aeman\" ci=\"20000398\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Lamadent I - Federation Customs Logistic Support\" se=\"0.3\" si=\"60012115\" sy=\"Lamadent\" syi=\"30002722\"/>\r\n    <row c=\"Aeman\" ci=\"20000398\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Rorsins IV - Moon 1 - Federation Customs Testing Facilities\" se=\"0.1\" si=\"60012118\" sy=\"Rorsins\" syi=\"30002721\"/>\r\n    <row c=\"Aeman\" ci=\"20000398\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Rorsins II - Moon 1 - Federation Customs Testing Facilities\" se=\"0.1\" si=\"60012121\" sy=\"Rorsins\" syi=\"30002721\"/>\r\n    <row c=\"San Matar\" ci=\"20000001\" r=\"Derelik\" ri=\"10000001\" s=\"Sasta VI - Moon 3 - Ammatar Fleet Assembly Plant\" se=\"0.8\" si=\"60012124\" sy=\"Sasta\" syi=\"30000005\"/>\r\n    <row c=\"San Matar\" ci=\"20000001\" r=\"Derelik\" ri=\"10000001\" s=\"Yuzier V - Moon 1 - Ammatar Fleet Assembly Plant\" se=\"0.9\" si=\"60012127\" sy=\"Yuzier\" syi=\"30000007\"/>\r\n    <row c=\"Subi\" ci=\"20000015\" r=\"Derelik\" ri=\"10000001\" s=\"Hothomouh VII - Moon 2 - Ammatar Fleet Assembly Plant\" se=\"0.4\" si=\"60012130\" sy=\"Hothomouh\" syi=\"30000111\"/>\r\n    <row c=\"Subi\" ci=\"20000015\" r=\"Derelik\" ri=\"10000001\" s=\"Gamis X - Ammatar Fleet Logistic Support\" se=\"0.5\" si=\"60012133\" sy=\"Gamis\" syi=\"30000107\"/>\r\n    <row c=\"Mal\" ci=\"20000014\" r=\"Derelik\" ri=\"10000001\" s=\"Dysa II - Ammatar Fleet Assembly Plant\" se=\"0.2\" si=\"60012136\" sy=\"Dysa\" syi=\"30000102\"/>\r\n    <row c=\"Mal\" ci=\"20000014\" r=\"Derelik\" ri=\"10000001\" s=\"Serad IV - Moon 12 - Ammatar Fleet Logistic Support\" se=\"0.5\" si=\"60012139\" sy=\"Serad\" syi=\"30000103\"/>\r\n    <row c=\"Oraron\" ci=\"20000012\" r=\"Derelik\" ri=\"10000001\" s=\"Gelhan IX - Moon 6 - Ammatar Fleet Assembly Plant\" se=\"0.7\" si=\"60012142\" sy=\"Gelhan\" syi=\"30000087\"/>\r\n    <row c=\"Oraron\" ci=\"20000012\" r=\"Derelik\" ri=\"10000001\" s=\"Jarizza II - Moon 1 - Ammatar Fleet Assembly Plant\" se=\"0.8\" si=\"60012145\" sy=\"Jarizza\" syi=\"30000082\"/>\r\n    <row c=\"Mekashtad\" ci=\"20000009\" r=\"Derelik\" ri=\"10000001\" s=\"Salashayama VII - Moon 8 - Ammatar Fleet Logistic Support\" se=\"0.7\" si=\"60012148\" sy=\"Salashayama\" syi=\"30000059\"/>\r\n    <row c=\"Mekashtad\" ci=\"20000009\" r=\"Derelik\" ri=\"10000001\" s=\"Thiarer VII - Moon 4 - Ammatar Fleet Assembly Plant\" se=\"0.5\" si=\"60012151\" sy=\"Thiarer\" syi=\"30000069\"/>\r\n    <row c=\"Hevaka\" ci=\"20000005\" r=\"Derelik\" ri=\"10000001\" s=\"Radima VIII - Moon 1 - Ammatar Fleet Testing Facilities\" se=\"0.8\" si=\"60012154\" sy=\"Radima\" syi=\"30000033\"/>\r\n    <row c=\"Hevaka\" ci=\"20000005\" r=\"Derelik\" ri=\"10000001\" s=\"Alkez VII - Moon 3 - Ammatar Fleet Testing Facilities\" se=\"0.8\" si=\"60012157\" sy=\"Alkez\" syi=\"30000034\"/>\r\n    <row c=\"Ananah\" ci=\"20000007\" r=\"Derelik\" ri=\"10000001\" s=\"Camal IX - Ammatar Fleet Testing Facilities\" se=\"0.2\" si=\"60012160\" sy=\"Camal\" syi=\"30000049\"/>\r\n    <row c=\"Ananah\" ci=\"20000007\" r=\"Derelik\" ri=\"10000001\" s=\"Faspera I - Ammatar Fleet Testing Facilities\" se=\"0.1\" si=\"60012163\" sy=\"Faspera\" syi=\"30000044\"/>\r\n    <row c=\"Bedaleya\" ci=\"20000010\" r=\"Derelik\" ri=\"10000001\" s=\"Assah VII - Moon 7 - Ammatar Fleet Assembly Plant\" se=\"0.3\" si=\"60012166\" sy=\"Assah\" syi=\"30000075\"/>\r\n    <row c=\"Bedaleya\" ci=\"20000010\" r=\"Derelik\" ri=\"10000001\" s=\"Nakah IV - Moon 1 - Ammatar Fleet Logistic Support\" se=\"0.4\" si=\"60012169\" sy=\"Nakah\" syi=\"30000072\"/>\r\n    <row c=\"Sazdih\" ci=\"20000006\" r=\"Derelik\" ri=\"10000001\" s=\"Uzistoon VII - Moon 15 - Ammatar Fleet Assembly Plant\" se=\"0.4\" si=\"60012172\" sy=\"Uzistoon\" syi=\"30000040\"/>\r\n    <row c=\"Sazdih\" ci=\"20000006\" r=\"Derelik\" ri=\"10000001\" s=\"Uzistoon VI - Moon 3 - Ammatar Fleet Assembly Plant\" se=\"0.4\" si=\"60012175\" sy=\"Uzistoon\" syi=\"30000040\"/>\r\n    <row c=\"Aguh\" ci=\"20000013\" r=\"Derelik\" ri=\"10000001\" s=\"Aranir VIII - Moon 8 - Ammatar Fleet Logistic Support\" se=\"0.2\" si=\"60012178\" sy=\"Aranir\" syi=\"30000092\"/>\r\n    <row c=\"Aguh\" ci=\"20000013\" r=\"Derelik\" ri=\"10000001\" s=\"Ishkad VIII - Ammatar Fleet Testing Facilities\" se=\"0.4\" si=\"60012181\" sy=\"Ishkad\" syi=\"30000093\"/>\r\n    <row c=\"Tranquility\" ci=\"20000147\" r=\"Curse\" ri=\"10000012\" s=\"K-MGJ7 IV - Moon 11 - Archangels Testing Facilities\" se=\"0.0\" si=\"60012184\" sy=\"K-MGJ7\" syi=\"30001006\"/>\r\n    <row c=\"Tranquility\" ci=\"20000147\" r=\"Curse\" ri=\"10000012\" s=\"H-ADOC IV - Moon 12 - Archangels Logistic Support\" se=\"0.0\" si=\"60012187\" sy=\"H-ADOC\" syi=\"30001001\"/>\r\n    <row c=\"Tranquility\" ci=\"20000147\" r=\"Curse\" ri=\"10000012\" s=\"K-MGJ7 IV - Moon 4 - Archangels Testing Facilities\" se=\"0.0\" si=\"60012190\" sy=\"K-MGJ7\" syi=\"30001006\"/>\r\n    <row c=\"Paradise\" ci=\"20000148\" r=\"Curse\" ri=\"10000012\" s=\"PO4F-3 VI - Moon 4 - Archangels Assembly Plant\" se=\"0.0\" si=\"60012193\" sy=\"PO4F-3\" syi=\"30001012\"/>\r\n    <row c=\"Paradise\" ci=\"20000148\" r=\"Curse\" ri=\"10000012\" s=\"D87E-A VII - Moon 16 - Archangels Assembly Plant\" se=\"0.0\" si=\"60012196\" sy=\"D87E-A\" syi=\"30001010\"/>\r\n    <row c=\"Paradise\" ci=\"20000148\" r=\"Curse\" ri=\"10000012\" s=\"V7D-JD IX - Moon 17 - Archangels Assembly Plant\" se=\"0.0\" si=\"60012199\" sy=\"V7D-JD\" syi=\"30001015\"/>\r\n    <row c=\"Elysium\" ci=\"20000149\" r=\"Curse\" ri=\"10000012\" s=\"HLW-HP VI - Moon 1 - Archangels Assembly Plant\" se=\"0.0\" si=\"60012202\" sy=\"HLW-HP\" syi=\"30001016\"/>\r\n    <row c=\"Elysium\" ci=\"20000149\" r=\"Curse\" ri=\"10000012\" s=\"HLW-HP III - Moon 3 - Archangels Assembly Plant\" se=\"0.0\" si=\"60012205\" sy=\"HLW-HP\" syi=\"30001016\"/>\r\n    <row c=\"Elysium\" ci=\"20000149\" r=\"Curse\" ri=\"10000012\" s=\"RA-NXN I - Archangels Assembly Plant\" se=\"0.0\" si=\"60012208\" sy=\"RA-NXN\" syi=\"30001018\"/>\r\n    <row c=\"Sound\" ci=\"20000150\" r=\"Curse\" ri=\"10000012\" s=\"CL-85V IX - Moon 2 - Archangels Assembly Plant\" se=\"0.0\" si=\"60012211\" sy=\"CL-85V\" syi=\"30001025\"/>\r\n    <row c=\"Sound\" ci=\"20000150\" r=\"Curse\" ri=\"10000012\" s=\"K-QWHE V - Moon 4 - Archangels Assembly Plant\" se=\"0.0\" si=\"60012214\" sy=\"K-QWHE\" syi=\"30001026\"/>\r\n    <row c=\"Sound\" ci=\"20000150\" r=\"Curse\" ri=\"10000012\" s=\"AAM-1A II - Moon 11 - Archangels Testing Facilities\" se=\"0.0\" si=\"60012217\" sy=\"AAM-1A\" syi=\"30001022\"/>\r\n    <row c=\"Rapture\" ci=\"20000151\" r=\"Curse\" ri=\"10000012\" s=\"ES-UWY VI - Archangels Logistic Support\" se=\"0.0\" si=\"60012220\" sy=\"ES-UWY\" syi=\"30001029\"/>\r\n    <row c=\"Rapture\" ci=\"20000151\" r=\"Curse\" ri=\"10000012\" s=\"Y-DW5K IV - Moon 5 - Archangels Logistic Support\" se=\"0.0\" si=\"60012223\" sy=\"Y-DW5K\" syi=\"30001031\"/>\r\n    <row c=\"Rapture\" ci=\"20000151\" r=\"Curse\" ri=\"10000012\" s=\"S1DP-Y IX - Moon 17 - Archangels Testing Facilities\" se=\"0.0\" si=\"60012226\" sy=\"S1DP-Y\" syi=\"30001030\"/>\r\n    <row c=\"Hale\" ci=\"20000152\" r=\"Curse\" ri=\"10000012\" s=\"CL-1JE III - Archangels Assembly Plant\" se=\"0.0\" si=\"60012229\" sy=\"CL-1JE\" syi=\"30001042\"/>\r\n    <row c=\"Hale\" ci=\"20000152\" r=\"Curse\" ri=\"10000012\" s=\"BPK-XK V - Moon 20 - Archangels Logistic Support\" se=\"0.0\" si=\"60012232\" sy=\"BPK-XK\" syi=\"30001037\"/>\r\n    <row c=\"Hale\" ci=\"20000152\" r=\"Curse\" ri=\"10000012\" s=\"G-0Q86 V - Moon 5 - Archangels Logistic Support\" se=\"0.0\" si=\"60012235\" sy=\"G-0Q86\" syi=\"30001041\"/>\r\n    <row c=\"Heaven\" ci=\"20000153\" r=\"Curse\" ri=\"10000012\" s=\"Doril I - Archangels Assembly Plant\" se=\"0.0\" si=\"60012238\" sy=\"Doril\" syi=\"30001047\"/>\r\n    <row c=\"Heaven\" ci=\"20000153\" r=\"Curse\" ri=\"10000012\" s=\"Hemin VII - Moon 12 - Archangels Logistic Support\" se=\"0.0\" si=\"60012241\" sy=\"Hemin\" syi=\"30001044\"/>\r\n    <row c=\"Heaven\" ci=\"20000153\" r=\"Curse\" ri=\"10000012\" s=\"Jorund VI - Archangels Assembly Plant\" se=\"0.0\" si=\"60012244\" sy=\"Jorund\" syi=\"30001046\"/>\r\n    <row c=\"Phoenix\" ci=\"20000674\" r=\"Fountain\" ri=\"10000058\" s=\"Serpentis Prime II - Archangels Testing Facilities\" se=\"0.0\" si=\"60012247\" sy=\"Serpentis Prime\" syi=\"30004623\"/>\r\n    <row c=\"Phoenix\" ci=\"20000674\" r=\"Fountain\" ri=\"10000058\" s=\"MN5N-X VII - Moon 5 - Archangels Assembly Plant\" se=\"0.0\" si=\"60012250\" sy=\"MN5N-X\" syi=\"30004618\"/>\r\n    <row c=\"Phoenix\" ci=\"20000674\" r=\"Fountain\" ri=\"10000058\" s=\"MN5N-X VIII - Moon 15 - Archangels Assembly Plant\" se=\"0.0\" si=\"60012253\" sy=\"MN5N-X\" syi=\"30004618\"/>\r\n    <row c=\"Sanctum\" ci=\"20000761\" r=\"Genesis\" ri=\"10000067\" s=\"Yulai IX (Kjarval) - CONCORD Bureau\" se=\"1.0\" si=\"60012256\" sy=\"Yulai\" syi=\"30005204\"/>\r\n    <row c=\"Sanctum\" ci=\"20000761\" r=\"Genesis\" ri=\"10000067\" s=\"Tekaima I - Moon 1 - CONCORD Bureau\" se=\"0.6\" si=\"60012259\" sy=\"Tekaima\" syi=\"30005200\"/>\r\n    <row c=\"Sanctum\" ci=\"20000761\" r=\"Genesis\" ri=\"10000067\" s=\"Kemerk V - Moon 10 - CONCORD Bureau\" se=\"0.8\" si=\"60012262\" sy=\"Kemerk\" syi=\"30005206\"/>\r\n    <row c=\"Sanctum\" ci=\"20000761\" r=\"Genesis\" ri=\"10000067\" s=\"Pakhshi IX - Moon 20 - CONCORD Bureau\" se=\"0.8\" si=\"60012265\" sy=\"Pakhshi\" syi=\"30005198\"/>\r\n    <row c=\"Sanctum\" ci=\"20000761\" r=\"Genesis\" ri=\"10000067\" s=\"Tekaima V - Moon 9 - CONCORD Assembly Plant\" se=\"0.6\" si=\"60012268\" sy=\"Tekaima\" syi=\"30005200\"/>\r\n    <row c=\"Sanctum\" ci=\"20000761\" r=\"Genesis\" ri=\"10000067\" s=\"Yulai VIII - Moon 10 - CONCORD Logistic Support\" se=\"1.0\" si=\"60012271\" sy=\"Yulai\" syi=\"30005204\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Lumegen IV - Moon 2 - CONCORD Academy\" se=\"0.6\" si=\"60012274\" sy=\"Lumegen\" syi=\"30003432\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Geffur VII - Moon 8 - CONCORD Bureau\" se=\"0.7\" si=\"60012277\" sy=\"Geffur\" syi=\"30003429\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Tratokard II - Moon 1 - CONCORD Bureau\" se=\"0.6\" si=\"60012280\" sy=\"Tratokard\" syi=\"30003431\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Lumegen III - CONCORD Academy\" se=\"0.6\" si=\"60012283\" sy=\"Lumegen\" syi=\"30003432\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Hilfhurmur VIII - Moon 6 - CONCORD Logistic Support\" se=\"0.8\" si=\"60012286\" sy=\"Hilfhurmur\" syi=\"30003428\"/>\r\n    <row c=\"Brazinget\" ci=\"20000500\" r=\"Metropolis\" ri=\"10000042\" s=\"Oppold III - CONCORD Assembly Plant\" se=\"0.7\" si=\"60012289\" sy=\"Oppold\" syi=\"30003430\"/>\r\n    <row c=\"Anares\" ci=\"20000002\" r=\"Derelik\" ri=\"10000001\" s=\"Asabona IX - Moon 5 - CONCORD Bureau\" se=\"0.3\" si=\"60012292\" sy=\"Asabona\" syi=\"30000012\"/>\r\n    <row c=\"Anares\" ci=\"20000002\" r=\"Derelik\" ri=\"10000001\" s=\"Sooma X - CONCORD Academy\" se=\"0.6\" si=\"60012295\" sy=\"Sooma\" syi=\"30000009\"/>\r\n    <row c=\"Anares\" ci=\"20000002\" r=\"Derelik\" ri=\"10000001\" s=\"Shamahi IX - Moon 12 - CONCORD Bureau\" se=\"0.4\" si=\"60012298\" sy=\"Shamahi\" syi=\"30000014\"/>\r\n    <row c=\"Anares\" ci=\"20000002\" r=\"Derelik\" ri=\"10000001\" s=\"Sendaya V - CONCORD Bureau\" se=\"0.3\" si=\"60012301\" sy=\"Sendaya\" syi=\"30000015\"/>\r\n    <row c=\"Anares\" ci=\"20000002\" r=\"Derelik\" ri=\"10000001\" s=\"Chidah V - CONCORD Assembly Plant\" se=\"0.5\" si=\"60012304\" sy=\"Chidah\" syi=\"30000010\"/>\r\n    <row c=\"Anares\" ci=\"20000002\" r=\"Derelik\" ri=\"10000001\" s=\"Chidah VIII - Moon 17 - CONCORD Assembly Plant\" se=\"0.5\" si=\"60012307\" sy=\"Chidah\" syi=\"30000010\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Mastakomon V - CONCORD Bureau\" se=\"0.5\" si=\"60012310\" sy=\"Mastakomon\" syi=\"30000202\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Uchoshi I - CONCORD Bureau\" se=\"0.5\" si=\"60012313\" sy=\"Uchoshi\" syi=\"30000201\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Mastakomon IX - CONCORD Bureau\" se=\"0.5\" si=\"60012316\" sy=\"Mastakomon\" syi=\"30000202\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Mastakomon VIII - Moon 1 - CONCORD Bureau\" se=\"0.5\" si=\"60012319\" sy=\"Mastakomon\" syi=\"30000202\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Uchoshi IX - Moon 2 - CONCORD Assembly Plant\" se=\"0.5\" si=\"60012322\" sy=\"Uchoshi\" syi=\"30000201\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Mastakomon IX - Moon 2 - CONCORD Assembly Plant\" se=\"0.5\" si=\"60012325\" sy=\"Mastakomon\" syi=\"30000202\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"Vellaine V - Moon 2 - CONCORD Bureau\" se=\"0.6\" si=\"60012328\" sy=\"Vellaine\" syi=\"30001380\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"Autaris VIII - Moon 5 - CONCORD Bureau\" se=\"0.5\" si=\"60012331\" sy=\"Autaris\" syi=\"30001384\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"Jan VI - Moon 21 - CONCORD Academy\" se=\"0.4\" si=\"60012334\" sy=\"Jan\" syi=\"30001385\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"Arvasaras IV - Moon 15 - Veles Clade Semiosis Theater\" se=\"0.0\" si=\"60012337\" sy=\"Arvasaras\" syi=\"30001381\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"Autaris IV - CONCORD Assembly Plant\" se=\"0.5\" si=\"60012340\" sy=\"Autaris\" syi=\"30001384\"/>\r\n    <row c=\"Kaala\" ci=\"20000202\" r=\"Lonetrek\" ri=\"10000016\" s=\"Autaris I - CONCORD Assembly Plant\" se=\"0.5\" si=\"60012343\" sy=\"Autaris\" syi=\"30001384\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Brundakur IV - Moon 1 - CONCORD Bureau\" se=\"0.9\" si=\"60012346\" sy=\"Brundakur\" syi=\"30003375\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Stirht VII - Moon 14 - CONCORD Bureau\" se=\"0.9\" si=\"60012349\" sy=\"Stirht\" syi=\"30003376\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Nedegulf VII - Moon 4 - CONCORD Academy\" se=\"0.8\" si=\"60012352\" sy=\"Nedegulf\" syi=\"30003378\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Arlulf III - Moon 10 - CONCORD Bureau\" se=\"1.0\" si=\"60012355\" sy=\"Arlulf\" syi=\"30003374\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Arlulf VI - Moon 1 - CONCORD Assembly Plant\" se=\"1.0\" si=\"60012358\" sy=\"Arlulf\" syi=\"30003374\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Arlulf III - Moon 11 - CONCORD Assembly Plant\" se=\"1.0\" si=\"60012361\" sy=\"Arlulf\" syi=\"30003374\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Adeel VIII - Moon 1 - CONCORD Treasury\" se=\"0.4\" si=\"60012364\" sy=\"Adeel\" syi=\"30003059\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Olide VI - Moon 10 - CONCORD Bureau\" se=\"0.7\" si=\"60012367\" sy=\"Olide\" syi=\"30003058\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Olide VI - Moon 14 - CONCORD Bureau\" se=\"0.7\" si=\"60012370\" sy=\"Olide\" syi=\"30003058\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Groothese X - Moon 13 - CONCORD Bureau\" se=\"0.3\" si=\"60012373\" sy=\"Groothese\" syi=\"30003057\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Mormelot I - CONCORD Testing Facilities\" se=\"0.2\" si=\"60012376\" sy=\"Mormelot\" syi=\"30003061\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Olide IV - Moon 7 - CONCORD Assembly Plant\" se=\"0.7\" si=\"60012379\" sy=\"Olide\" syi=\"30003058\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"Haimeh IX - Moon 16 - CONCORD Bureau\" se=\"0.5\" si=\"60012382\" sy=\"Haimeh\" syi=\"30004248\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"Mishi VII - Moon 4 - CONCORD Bureau\" se=\"0.7\" si=\"60012385\" sy=\"Mishi\" syi=\"30004251\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"Pahineh V - Moon 1 - CONCORD Bureau\" se=\"0.8\" si=\"60012388\" sy=\"Pahineh\" syi=\"30004253\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"Chibi VI - Moon 15 - CONCORD Treasury\" se=\"0.5\" si=\"60012391\" sy=\"Chibi\" syi=\"30004250\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"Avada V - CONCORD Assembly Plant\" se=\"0.7\" si=\"60012394\" sy=\"Avada\" syi=\"30004249\"/>\r\n    <row c=\"Mayonhen\" ci=\"20000622\" r=\"Aridia\" ri=\"10000054\" s=\"Mishi VIII - CONCORD Assembly Plant\" se=\"0.7\" si=\"60012397\" sy=\"Mishi\" syi=\"30004251\"/>\r\n    <row c=\"Nohshayess\" ci=\"20000564\" r=\"Khanid\" ri=\"10000049\" s=\"Ipref IV - Moon 5 - CONCORD Bureau\" se=\"0.9\" si=\"60012400\" sy=\"Ipref\" syi=\"30003861\"/>\r\n    <row c=\"Nohshayess\" ci=\"20000564\" r=\"Khanid\" ri=\"10000049\" s=\"Neyi VII - Moon 7 - CONCORD Academy\" se=\"0.8\" si=\"60012403\" sy=\"Neyi\" syi=\"30003859\"/>\r\n    <row c=\"Nohshayess\" ci=\"20000564\" r=\"Khanid\" ri=\"10000049\" s=\"Kihtaled VIII - CONCORD Bureau\" se=\"0.9\" si=\"60012406\" sy=\"Kihtaled\" syi=\"30003860\"/>\r\n    <row c=\"Nohshayess\" ci=\"20000564\" r=\"Khanid\" ri=\"10000049\" s=\"Kihtaled VIII - Moon 17 - CONCORD Bureau\" se=\"0.9\" si=\"60012409\" sy=\"Kihtaled\" syi=\"30003860\"/>\r\n    <row c=\"Nohshayess\" ci=\"20000564\" r=\"Khanid\" ri=\"10000049\" s=\"Agil VI - Moon 2 - CONCORD Logistic Support\" se=\"0.9\" si=\"60012412\" sy=\"Agil\" syi=\"30003862\"/>\r\n    <row c=\"Nohshayess\" ci=\"20000564\" r=\"Khanid\" ri=\"10000049\" s=\"Ipref II - Moon 1 - CONCORD Assembly Plant\" se=\"0.9\" si=\"60012415\" sy=\"Ipref\" syi=\"30003861\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Klingt III - CONCORD Bureau\" se=\"0.3\" si=\"60012418\" sy=\"Klingt\" syi=\"30002414\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Aeditide V - CONCORD Bureau\" se=\"0.2\" si=\"60012421\" sy=\"Aeditide\" syi=\"30002419\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Egbinger XII - CONCORD Academy\" se=\"0.1\" si=\"60012424\" sy=\"Egbinger\" syi=\"30002420\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Egbinger V - CONCORD Treasury\" se=\"0.1\" si=\"60012427\" sy=\"Egbinger\" syi=\"30002420\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Klingt VIII - CONCORD Logistic Support\" se=\"0.3\" si=\"60012430\" sy=\"Klingt\" syi=\"30002414\"/>\r\n    <row c=\"Elfrard\" ci=\"20000355\" r=\"Molden Heath\" ri=\"10000028\" s=\"Klingt IX - CONCORD Assembly Plant\" se=\"0.3\" si=\"60012433\" sy=\"Klingt\" syi=\"30002414\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Barleguet IV - Moon 2 - CONCORD Bureau\" se=\"0.1\" si=\"60012436\" sy=\"Barleguet\" syi=\"30003819\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Aulbres X - Moon 2 - CONCORD Bureau\" se=\"0.1\" si=\"60012439\" sy=\"Aulbres\" syi=\"30003818\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Aulbres VII - CONCORD Bureau\" se=\"0.1\" si=\"60012442\" sy=\"Aulbres\" syi=\"30003818\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Aulbres X - CONCORD Bureau\" se=\"0.1\" si=\"60012445\" sy=\"Aulbres\" syi=\"30003818\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Aulbres VII - Moon 16 - CONCORD Assembly Plant\" se=\"0.1\" si=\"60012448\" sy=\"Aulbres\" syi=\"30003818\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Aulbres V - Moon 4 - CONCORD Logistic Support\" se=\"0.1\" si=\"60012451\" sy=\"Aulbres\" syi=\"30003818\"/>\r\n    <row c=\"Almur\" ci=\"20000353\" r=\"Molden Heath\" ri=\"10000028\" s=\"Half VII - Moon 1 - CONCORD Bureau\" se=\"0.2\" si=\"60012454\" sy=\"Half\" syi=\"30002404\"/>\r\n    <row c=\"Almur\" ci=\"20000353\" r=\"Molden Heath\" ri=\"10000028\" s=\"Istodard IX - Moon 5 - CONCORD Bureau\" se=\"0.3\" si=\"60012457\" sy=\"Istodard\" syi=\"30002402\"/>\r\n    <row c=\"Almur\" ci=\"20000353\" r=\"Molden Heath\" ri=\"10000028\" s=\"Istodard IX - Moon 16 - CONCORD Bureau\" se=\"0.3\" si=\"60012460\" sy=\"Istodard\" syi=\"30002402\"/>\r\n    <row c=\"Almur\" ci=\"20000353\" r=\"Molden Heath\" ri=\"10000028\" s=\"Hedaleolfarber VII - Moon 17 - CONCORD Treasury\" se=\"0.3\" si=\"60012463\" sy=\"Hedaleolfarber\" syi=\"30002406\"/>\r\n    <row c=\"Almur\" ci=\"20000353\" r=\"Molden Heath\" ri=\"10000028\" s=\"Altbrard IX - Moon 8 - CONCORD Testing Facilities\" se=\"0.3\" si=\"60012466\" sy=\"Altbrard\" syi=\"30002407\"/>\r\n    <row c=\"Almur\" ci=\"20000353\" r=\"Molden Heath\" ri=\"10000028\" s=\"Half VII - Moon 4 - CONCORD Assembly Plant\" se=\"0.2\" si=\"60012469\" sy=\"Half\" syi=\"30002404\"/>\r\n    <row c=\"Comadu\" ci=\"20000743\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Zatamaka XI - CONCORD Bureau\" se=\"0.4\" si=\"60012472\" sy=\"Zatamaka\" syi=\"30005079\"/>\r\n    <row c=\"Comadu\" ci=\"20000743\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Rannoze V - Moon 8 - CONCORD Bureau\" se=\"0.4\" si=\"60012475\" sy=\"Rannoze\" syi=\"30005080\"/>\r\n    <row c=\"Comadu\" ci=\"20000743\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Zatamaka VII - Moon 2 - CONCORD Bureau\" se=\"0.4\" si=\"60012478\" sy=\"Zatamaka\" syi=\"30005079\"/>\r\n    <row c=\"Comadu\" ci=\"20000743\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Zatamaka X - Moon 2 - CONCORD Bureau\" se=\"0.4\" si=\"60012481\" sy=\"Zatamaka\" syi=\"30005079\"/>\r\n    <row c=\"Comadu\" ci=\"20000743\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Keproh VIII - Moon 3 - CONCORD Assembly Plant\" se=\"0.5\" si=\"60012484\" sy=\"Keproh\" syi=\"30005078\"/>\r\n    <row c=\"Comadu\" ci=\"20000743\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Rannoze VII - Moon 2 - CONCORD Assembly Plant\" se=\"0.4\" si=\"60012487\" sy=\"Rannoze\" syi=\"30005080\"/>\r\n    <row c=\"Nadire\" ci=\"20000399\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Goinard IV - Moon 2 - CONCORD Bureau\" se=\"0.3\" si=\"60012490\" sy=\"Goinard\" syi=\"30002725\"/>\r\n    <row c=\"Nadire\" ci=\"20000399\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Esmes IV - Moon 2 - CONCORD Treasury\" se=\"0.1\" si=\"60012493\" sy=\"Esmes\" syi=\"30002730\"/>\r\n    <row c=\"Nadire\" ci=\"20000399\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Lermireve VIII - Moon 15 - CONCORD Treasury\" se=\"0.3\" si=\"60012496\" sy=\"Lermireve\" syi=\"30002728\"/>\r\n    <row c=\"Nadire\" ci=\"20000399\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Goinard III - Moon 2 - CONCORD Bureau\" se=\"0.3\" si=\"60012499\" sy=\"Goinard\" syi=\"30002725\"/>\r\n    <row c=\"Nadire\" ci=\"20000399\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Assiettes IV - Moon 1 - CONCORD Logistic Support\" se=\"0.6\" si=\"60012502\" sy=\"Assiettes\" syi=\"30002724\"/>\r\n    <row c=\"Nadire\" ci=\"20000399\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Raeghoscon VIII - CONCORD Logistic Support\" se=\"0.4\" si=\"60012505\" sy=\"Raeghoscon\" syi=\"30002726\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Hatakani VI - Moon 10 - CONCORD Bureau\" se=\"0.9\" si=\"60012508\" sy=\"Hatakani\" syi=\"30002764\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Yashunen VII - CONCORD Bureau\" se=\"1.0\" si=\"60012511\" sy=\"Yashunen\" syi=\"30002762\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Yashunen VII - Moon 2 - CONCORD Bureau\" se=\"1.0\" si=\"60012514\" sy=\"Yashunen\" syi=\"30002762\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Hatakani VI - CONCORD Bureau\" se=\"0.9\" si=\"60012517\" sy=\"Hatakani\" syi=\"30002764\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Iivinen VIII - Moon 10 - CONCORD Assembly Plant\" se=\"0.7\" si=\"60012520\" sy=\"Iivinen\" syi=\"30002766\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Tennen VIII - Moon 4 - CONCORD Assembly Plant\" se=\"0.9\" si=\"60012523\" sy=\"Tennen\" syi=\"30002763\"/>\r\n    <row c=\"San Matar\" ci=\"20000001\" r=\"Derelik\" ri=\"10000001\" s=\"Tanoo V - Moon 1 - Ammatar Consulate Bureau\" se=\"0.9\" si=\"60012526\" sy=\"Tanoo\" syi=\"30000001\"/>\r\n    <row c=\"Mossas\" ci=\"20000008\" r=\"Derelik\" ri=\"10000001\" s=\"Khankenirdia V - Moon 17 - Ammatar Consulate Academy\" se=\"0.6\" si=\"60012529\" sy=\"Khankenirdia\" syi=\"30000056\"/>\r\n    <row c=\"Oraron\" ci=\"20000012\" r=\"Derelik\" ri=\"10000001\" s=\"Jarizza VI - Moon 1 - Ammatar Consulate Bureau\" se=\"0.8\" si=\"60012532\" sy=\"Jarizza\" syi=\"30000082\"/>\r\n    <row c=\"Sazdih\" ci=\"20000006\" r=\"Derelik\" ri=\"10000001\" s=\"Bayuka VI - Moon 1 - Ammatar Consulate Bureau\" se=\"0.4\" si=\"60012535\" sy=\"Bayuka\" syi=\"30000039\"/>\r\n    <row c=\"Mal\" ci=\"20000014\" r=\"Derelik\" ri=\"10000001\" s=\"Kehrara VI - Moon 9 - Ammatar Consulate Bureau\" se=\"0.4\" si=\"60012538\" sy=\"Kehrara\" syi=\"30000098\"/>\r\n    <row c=\"Kalangin\" ci=\"20000004\" r=\"Derelik\" ri=\"10000001\" s=\"Fovihi V - Ammatar Consulate Bureau\" se=\"0.9\" si=\"60012541\" sy=\"Fovihi\" syi=\"30000023\"/>\r\n    <row c=\"Hevaka\" ci=\"20000005\" r=\"Derelik\" ri=\"10000001\" s=\"Hasiari VIII - Moon 4 - Ammatar Consulate Bureau\" se=\"0.8\" si=\"60012544\" sy=\"Hasiari\" syi=\"30000032\"/>\r\n    <row c=\"Anares\" ci=\"20000002\" r=\"Derelik\" ri=\"10000001\" s=\"Chidah VII - Moon 10 - Ammatar Consulate Bureau\" se=\"0.5\" si=\"60012547\" sy=\"Chidah\" syi=\"30000010\"/>\r\n    <row c=\"Subi\" ci=\"20000015\" r=\"Derelik\" ri=\"10000001\" s=\"Berta VI - Moon 19 - Ammatar Consulate Bureau\" se=\"0.5\" si=\"60012550\" sy=\"Berta\" syi=\"30000109\"/>\r\n    <row c=\"Orshed\" ci=\"20000011\" r=\"Derelik\" ri=\"10000001\" s=\"Tidacha VIII - Moon 13 - Ammatar Consulate Bureau\" se=\"0.8\" si=\"60012553\" sy=\"Tidacha\" syi=\"30000076\"/>\r\n    <row c=\"UTZ-7B\" ci=\"20000188\" r=\"Venal\" ri=\"10000015\" s=\"6NJ8-V VII - Moon 2 - Guristas Logistic Support\" se=\"0.0\" si=\"60012556\" sy=\"6NJ8-V\" syi=\"30001290\"/>\r\n    <row c=\"UTZ-7B\" ci=\"20000188\" r=\"Venal\" ri=\"10000015\" s=\"Y-4CFK V - Moon 17 - Guristas Testing Facilities\" se=\"0.0\" si=\"60012559\" sy=\"Y-4CFK\" syi=\"30001291\"/>\r\n    <row c=\"48R-PS\" ci=\"20000186\" r=\"Venal\" ri=\"10000015\" s=\"N5Y-4N VII - Moon 20 - Guristas Logistic Support\" se=\"0.0\" si=\"60012562\" sy=\"N5Y-4N\" syi=\"30001277\"/>\r\n    <row c=\"48R-PS\" ci=\"20000186\" r=\"Venal\" ri=\"10000015\" s=\"K3JR-J VIII - Guristas Assembly Plant\" se=\"0.0\" si=\"60012565\" sy=\"K3JR-J\" syi=\"30001274\"/>\r\n    <row c=\"ST-0EZ\" ci=\"20000185\" r=\"Venal\" ri=\"10000015\" s=\"H-PA29 V - Moon 1 - Guristas Assembly Plant\" se=\"0.0\" si=\"60012568\" sy=\"H-PA29\" syi=\"30001269\"/>\r\n    <row c=\"ST-0EZ\" ci=\"20000185\" r=\"Venal\" ri=\"10000015\" s=\"H-PA29 IV - Moon 2 - Guristas Assembly Plant\" se=\"0.0\" si=\"60012571\" sy=\"H-PA29\" syi=\"30001269\"/>\r\n    <row c=\"Y8HB-U\" ci=\"20000193\" r=\"Venal\" ri=\"10000015\" s=\"P-VYVL VII - Moon 1 - Guristas Assembly Plant\" se=\"0.0\" si=\"60012574\" sy=\"P-VYVL\" syi=\"30001329\"/>\r\n    <row c=\"Y8HB-U\" ci=\"20000193\" r=\"Venal\" ri=\"10000015\" s=\"PF-QHK VII - Moon 6 - Guristas Logistic Support\" se=\"0.0\" si=\"60012577\" sy=\"PF-QHK\" syi=\"30001324\"/>\r\n    <row c=\"U-7RBK\" ci=\"20000295\" r=\"Pure Blind\" ri=\"10000023\" s=\"5ZXX-K V - Moon 17 - Mordu's Legion Testing Facilities\" se=\"0.0\" si=\"60012580\" sy=\"5ZXX-K\" syi=\"30002005\"/>\r\n    <row c=\"Heart\" ci=\"20000657\" r=\"Outer Ring\" ri=\"10000057\" s=\"4C-B7X VIII - Moon 1 - Outer Ring Excavations Mining Outpost\" se=\"0.0\" si=\"60012583\" sy=\"4C-B7X\" syi=\"30004504\"/>\r\n    <row c=\"Heart\" ci=\"20000657\" r=\"Outer Ring\" ri=\"10000057\" s=\"4C-B7X VI - Moon 1 - Outer Ring Excavations Refinery\" se=\"0.0\" si=\"60012586\" sy=\"4C-B7X\" syi=\"30004504\"/>\r\n    <row c=\"Wield\" ci=\"20000659\" r=\"Outer Ring\" ri=\"10000057\" s=\"NM-OEA V - Moon 4 - Outer Ring Excavations Mining Outpost\" se=\"0.0\" si=\"60012589\" sy=\"NM-OEA\" syi=\"30004518\"/>\r\n    <row c=\"Wield\" ci=\"20000659\" r=\"Outer Ring\" ri=\"10000057\" s=\"NM-OEA VI - Moon 23 - Outer Ring Excavations Mining Outpost\" se=\"0.0\" si=\"60012592\" sy=\"NM-OEA\" syi=\"30004518\"/>\r\n    <row c=\"38G6-L\" ci=\"20000291\" r=\"Pure Blind\" ri=\"10000023\" s=\"X-7OMU IV - Moon 3 - Sisters of EVE Academy\" se=\"0.0\" si=\"60012595\" sy=\"X-7OMU\" syi=\"30001978\"/>\r\n    <row c=\"38G6-L\" ci=\"20000291\" r=\"Pure Blind\" ri=\"10000023\" s=\"J-CIJV VII - Moon 14 - Sisters of EVE Bureau\" se=\"0.0\" si=\"60012598\" sy=\"J-CIJV\" syi=\"30001977\"/>\r\n    <row c=\"38G6-L\" ci=\"20000291\" r=\"Pure Blind\" ri=\"10000023\" s=\"ROIR-Y II - Sisters of EVE Bureau\" se=\"0.0\" si=\"60012601\" sy=\"ROIR-Y\" syi=\"30001983\"/>\r\n    <row c=\"Peccanouette\" ci=\"20000732\" r=\"Essence\" ri=\"10000064\" s=\"Lisbaetanne IV - Moon 15 - Sisters of EVE Bureau\" se=\"0.4\" si=\"60012604\" sy=\"Lisbaetanne\" syi=\"30005007\"/>\r\n    <row c=\"Peccanouette\" ci=\"20000732\" r=\"Essence\" ri=\"10000064\" s=\"Arnon IX - Moon 3 - Sisters of EVE Bureau\" se=\"0.8\" si=\"60012607\" sy=\"Arnon\" syi=\"30005001\"/>\r\n    <row c=\"Peccanouette\" ci=\"20000732\" r=\"Essence\" ri=\"10000064\" s=\"Aeschee X - Moon 20 - Sisters of EVE Academy\" se=\"0.2\" si=\"60012610\" sy=\"Aeschee\" syi=\"30005008\"/>\r\n    <row c=\"Ekrin\" ci=\"20000763\" r=\"Genesis\" ri=\"10000067\" s=\"Apanake VIII - Moon 8 - Sisters of EVE Bureau\" se=\"0.5\" si=\"60012613\" sy=\"Apanake\" syi=\"30005216\"/>\r\n    <row c=\"Ekrin\" ci=\"20000763\" r=\"Genesis\" ri=\"10000067\" s=\"Sheroo X - Moon 3 - Sisters of EVE Bureau\" se=\"0.6\" si=\"60012616\" sy=\"Sheroo\" syi=\"30005217\"/>\r\n    <row c=\"Ekrin\" ci=\"20000763\" r=\"Genesis\" ri=\"10000067\" s=\"Sigga VIII - Moon 15 - Sisters of EVE Bureau\" se=\"0.5\" si=\"60012619\" sy=\"Sigga\" syi=\"30005219\"/>\r\n    <row c=\"Ani\" ci=\"20000305\" r=\"Metropolis\" ri=\"10000042\" s=\"Traun X - Moon 6 - Sisters of EVE Bureau\" se=\"0.6\" si=\"60012622\" sy=\"Traun\" syi=\"30002069\"/>\r\n    <row c=\"Ani\" ci=\"20000305\" r=\"Metropolis\" ri=\"10000042\" s=\"Lanngisi III - Moon 2 - Sisters of EVE Bureau\" se=\"0.5\" si=\"60012625\" sy=\"Lanngisi\" syi=\"30002074\"/>\r\n    <row c=\"Ani\" ci=\"20000305\" r=\"Metropolis\" ri=\"10000042\" s=\"Inder VII - Moon 11 - Sisters of EVE Bureau\" se=\"0.5\" si=\"60012628\" sy=\"Inder\" syi=\"30002072\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"Odebeinn III - Moon 10 - Sisters of EVE Academy\" se=\"0.3\" si=\"60012631\" sy=\"Odebeinn\" syi=\"30003470\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"Erindur VI - Moon 1 - Sisters of EVE Academy\" se=\"0.6\" si=\"60012634\" sy=\"Erindur\" syi=\"30003472\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"Erindur VII - Moon 2 - Sisters of EVE Academy\" se=\"0.6\" si=\"60012637\" sy=\"Erindur\" syi=\"30003472\"/>\r\n    <row c=\"Aven\" ci=\"20000771\" r=\"Genesis\" ri=\"10000067\" s=\"Olin II - Moon 13 - Sisters of EVE Bureau\" se=\"0.3\" si=\"60012640\" sy=\"Olin\" syi=\"30005272\"/>\r\n    <row c=\"Aven\" ci=\"20000771\" r=\"Genesis\" ri=\"10000067\" s=\"Shapisin I - Sisters of EVE Bureau\" se=\"0.3\" si=\"60012643\" sy=\"Shapisin\" syi=\"30005271\"/>\r\n    <row c=\"Aven\" ci=\"20000771\" r=\"Genesis\" ri=\"10000067\" s=\"Simela IV - Moon 7 - Sisters of EVE Academy\" se=\"0.5\" si=\"60012646\" sy=\"Simela\" syi=\"30005269\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"Athinard IV - Sisters of EVE Bureau\" se=\"1.0\" si=\"60012649\" sy=\"Athinard\" syi=\"30003031\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"Gicodel VII - Moon 14 - Sisters of EVE Bureau\" se=\"0.9\" si=\"60012652\" sy=\"Gicodel\" syi=\"30003035\"/>\r\n    <row c=\"Odilis\" ci=\"20000444\" r=\"Everyshore\" ri=\"10000037\" s=\"Quier IV - Moon 27 - Sisters of EVE Treasury\" se=\"0.7\" si=\"60012655\" sy=\"Quier\" syi=\"30003037\"/>\r\n    <row c=\"Mobrault\" ci=\"20000525\" r=\"Solitude\" ri=\"10000044\" s=\"Pochelympe VII - Moon 2 - Sisters of EVE Bureau\" se=\"0.6\" si=\"60012658\" sy=\"Pochelympe\" syi=\"30003604\"/>\r\n    <row c=\"Mobrault\" ci=\"20000525\" r=\"Solitude\" ri=\"10000044\" s=\"Pochelympe IX - Sisters of EVE Bureau\" se=\"0.6\" si=\"60012661\" sy=\"Pochelympe\" syi=\"30003604\"/>\r\n    <row c=\"Mobrault\" ci=\"20000525\" r=\"Solitude\" ri=\"10000044\" s=\"Toustain V - Moon 7 - Sisters of EVE Bureau\" se=\"0.4\" si=\"60012664\" sy=\"Toustain\" syi=\"30003606\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Osmon II - Moon 1 - Sisters of EVE Bureau\" se=\"0.7\" si=\"60012667\" sy=\"Osmon\" syi=\"30000180\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Airaken V - Moon 1 - Sisters of EVE Academy\" se=\"0.5\" si=\"60012670\" sy=\"Airaken\" syi=\"30000185\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Airaken VI - Moon 1 - Sisters of EVE Bureau\" se=\"0.5\" si=\"60012673\" sy=\"Airaken\" syi=\"30000185\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Vivanier VII - Moon 24 - Sisters of EVE Bureau\" se=\"0.5\" si=\"60012676\" sy=\"Vivanier\" syi=\"30003810\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Vivanier VII - Moon 5 - Sisters of EVE Bureau\" se=\"0.5\" si=\"60012679\" sy=\"Vivanier\" syi=\"30003810\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Dour VIII - Moon 1 - Sisters of EVE Academy\" se=\"0.4\" si=\"60012682\" sy=\"Dour\" syi=\"30003807\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Lour VIII - Moon 1 - Sisters of EVE Bureau\" se=\"0.6\" si=\"60012685\" sy=\"Lour\" syi=\"30003575\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Boystin V - Moon 7 - Sisters of EVE Bureau\" se=\"0.5\" si=\"60012688\" sy=\"Boystin\" syi=\"30003574\"/>\r\n    <row c=\"Elose\" ci=\"20000521\" r=\"Solitude\" ri=\"10000044\" s=\"Octanneve V - Sisters of EVE Bureau\" se=\"0.7\" si=\"60012691\" sy=\"Octanneve\" syi=\"30003578\"/>\r\n    <row c=\"Fabai\" ci=\"20000628\" r=\"Aridia\" ri=\"10000054\" s=\"Efu VII - Sisters of EVE Bureau\" se=\"0.1\" si=\"60012694\" sy=\"Efu\" syi=\"30004297\"/>\r\n    <row c=\"Fabai\" ci=\"20000628\" r=\"Aridia\" ri=\"10000054\" s=\"Tisot VI - Sisters of EVE Bureau\" se=\"0.1\" si=\"60012697\" sy=\"Tisot\" syi=\"30004298\"/>\r\n    <row c=\"Fabai\" ci=\"20000628\" r=\"Aridia\" ri=\"10000054\" s=\"Efu V - Moon 12 - Sisters of EVE Bureau\" se=\"0.1\" si=\"60012700\" sy=\"Efu\" syi=\"30004297\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"Naguton VIII - Moon 1 - Sisters of EVE Academy\" se=\"0.3\" si=\"60012703\" sy=\"Naguton\" syi=\"30003475\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"Amod VII - Moon 1 - Sisters of EVE Academy\" se=\"0.3\" si=\"60012706\" sy=\"Amod\" syi=\"30003480\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"Fahruni XII - Sisters of EVE Bureau\" se=\"0.5\" si=\"60012709\" sy=\"Fahruni\" syi=\"30003473\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"Akkilen VIII - Moon 5 - Sisters of EVE Bureau\" se=\"0.7\" si=\"60012712\" sy=\"Akkilen\" syi=\"30000178\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"Soshin II - Sisters of EVE Bureau\" se=\"0.6\" si=\"60012715\" sy=\"Soshin\" syi=\"30000175\"/>\r\n    <row c=\"Otsabaira\" ci=\"20000025\" r=\"The Forge\" ri=\"10000002\" s=\"Vattuolen X - Moon 15 - Sisters of EVE Bureau\" se=\"0.7\" si=\"60012718\" sy=\"Vattuolen\" syi=\"30000173\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Rens VII - Moon 20 - Sisters of EVE Bureau\" se=\"0.9\" si=\"60012721\" sy=\"Rens\" syi=\"30002510\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Rens VII - Moon 21 - Sisters of EVE Bureau\" se=\"0.9\" si=\"60012724\" sy=\"Rens\" syi=\"30002510\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Rens VII - Moon 19 - Sisters of EVE Bureau\" se=\"0.9\" si=\"60012727\" sy=\"Rens\" syi=\"30002510\"/>\r\n    <row c=\"N-K4Q0\" ci=\"20000356\" r=\"Geminate\" ri=\"10000029\" s=\"FDZ4-A VIII - Moon 3 - Society of Conscious Thought School\" se=\"0.0\" si=\"60012730\" sy=\"FDZ4-A\" syi=\"30002423\"/>\r\n    <row c=\"N-K4Q0\" ci=\"20000356\" r=\"Geminate\" ri=\"10000029\" s=\"FDZ4-A IX - Moon 6 - Society of Conscious Thought School\" se=\"0.0\" si=\"60012733\" sy=\"FDZ4-A\" syi=\"30002423\"/>\r\n    <row c=\"Sanctum\" ci=\"20000761\" r=\"Genesis\" ri=\"10000067\" s=\"Yulai III - Moon 1 - Secure Commerce Commission Depository\" se=\"1.0\" si=\"60012736\" sy=\"Yulai\" syi=\"30005204\"/>\r\n    <row c=\"Sanctum\" ci=\"20000761\" r=\"Genesis\" ri=\"10000067\" s=\"Tar III - Secure Commerce Commission Depository\" se=\"0.8\" si=\"60012739\" sy=\"Tar\" syi=\"30005199\"/>\r\n    <row c=\"Tranquility\" ci=\"20000147\" r=\"Curse\" ri=\"10000012\" s=\"H-ADOC VII - Moon 12 - Salvation Angels Warehouse\" se=\"0.0\" si=\"60012742\" sy=\"H-ADOC\" syi=\"30001001\"/>\r\n    <row c=\"Tranquility\" ci=\"20000147\" r=\"Curse\" ri=\"10000012\" s=\"G-G78S VII - Salvation Angels Chemical Refinery\" se=\"0.0\" si=\"60012745\" sy=\"G-G78S\" syi=\"30001002\"/>\r\n    <row c=\"Paradise\" ci=\"20000148\" r=\"Curse\" ri=\"10000012\" s=\"V-IUEL VII - Moon 15 - Salvation Angels Warehouse\" se=\"0.0\" si=\"60012748\" sy=\"V-IUEL\" syi=\"30001008\"/>\r\n    <row c=\"Paradise\" ci=\"20000148\" r=\"Curse\" ri=\"10000012\" s=\"5E-VR8 I - Moon 10 - Salvation Angels Chemical Refinery\" se=\"0.0\" si=\"60012751\" sy=\"5E-VR8\" syi=\"30001014\"/>\r\n    <row c=\"Elysium\" ci=\"20000149\" r=\"Curse\" ri=\"10000012\" s=\"XX9-WV VII - Moon 3 - Salvation Angels Trading Post\" se=\"0.0\" si=\"60012754\" sy=\"XX9-WV\" syi=\"30001021\"/>\r\n    <row c=\"Elysium\" ci=\"20000149\" r=\"Curse\" ri=\"10000012\" s=\"HLW-HP VI - Moon 10 - Salvation Angels Chemical Refinery\" se=\"0.0\" si=\"60012757\" sy=\"HLW-HP\" syi=\"30001016\"/>\r\n    <row c=\"Sound\" ci=\"20000150\" r=\"Curse\" ri=\"10000012\" s=\"MDD-79 VIII - Moon 15 - Salvation Angels Warehouse\" se=\"0.0\" si=\"60012760\" sy=\"MDD-79\" syi=\"30001027\"/>\r\n    <row c=\"Sound\" ci=\"20000150\" r=\"Curse\" ri=\"10000012\" s=\"K-QWHE VI - Moon 10 - Salvation Angels Chemical Refinery\" se=\"0.0\" si=\"60012763\" sy=\"K-QWHE\" syi=\"30001026\"/>\r\n    <row c=\"Rapture\" ci=\"20000151\" r=\"Curse\" ri=\"10000012\" s=\"M-N7WD VIII - Moon 18 - Salvation Angels Trading Post\" se=\"0.0\" si=\"60012766\" sy=\"M-N7WD\" syi=\"30001032\"/>\r\n    <row c=\"Rapture\" ci=\"20000151\" r=\"Curse\" ri=\"10000012\" s=\"QFEW-K IV - Salvation Angels Chemical Refinery\" se=\"0.0\" si=\"60012769\" sy=\"QFEW-K\" syi=\"30001033\"/>\r\n    <row c=\"Hale\" ci=\"20000152\" r=\"Curse\" ri=\"10000012\" s=\"LJ-YSW VI - Moon 14 - Salvation Angels Trading Post\" se=\"0.0\" si=\"60012772\" sy=\"LJ-YSW\" syi=\"30001038\"/>\r\n    <row c=\"Hale\" ci=\"20000152\" r=\"Curse\" ri=\"10000012\" s=\"CL-1JE V - Moon 15 - Salvation Angels Chemical Refinery\" se=\"0.0\" si=\"60012775\" sy=\"CL-1JE\" syi=\"30001042\"/>\r\n    <row c=\"Heaven\" ci=\"20000153\" r=\"Curse\" ri=\"10000012\" s=\"Litom III - Salvation Angels Trading Post\" se=\"0.0\" si=\"60012778\" sy=\"Litom\" syi=\"30001048\"/>\r\n    <row c=\"Heaven\" ci=\"20000153\" r=\"Curse\" ri=\"10000012\" s=\"Doril V - Moon 1 - Salvation Angels Chemical Refinery\" se=\"0.0\" si=\"60012781\" sy=\"Doril\" syi=\"30001047\"/>\r\n    <row c=\"Phoenix\" ci=\"20000674\" r=\"Fountain\" ri=\"10000058\" s=\"A-1CON X - Moon 2 - Salvation Angels Warehouse\" se=\"0.0\" si=\"60012784\" sy=\"A-1CON\" syi=\"30004619\"/>\r\n    <row c=\"Phoenix\" ci=\"20000674\" r=\"Fountain\" ri=\"10000058\" s=\"WY-9LL IX - Moon 1 - Salvation Angels Reprocessing Facility\" se=\"0.0\" si=\"60012787\" sy=\"WY-9LL\" syi=\"30004621\"/>\r\n    <row c=\"Tandoiras\" ci=\"20000451\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Oyonata IV - Moon 1 - Amarr Navy Assembly Plant\" se=\"0.3\" si=\"60012790\" sy=\"Oyonata\" syi=\"30003088\"/>\r\n    <row c=\"Tandoiras\" ci=\"20000451\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Sahtogas IV - Moon 2 - Amarr Navy Logistic Support\" se=\"0.3\" si=\"60012793\" sy=\"Sahtogas\" syi=\"30003086\"/>\r\n    <row c=\"Tranquility\" ci=\"20000147\" r=\"Curse\" ri=\"10000012\" s=\"G-G78S X - Moon 11 - Serpentis Corporation Chemical Refinery\" se=\"0.0\" si=\"60012796\" sy=\"G-G78S\" syi=\"30001002\"/>\r\n    <row c=\"Tranquility\" ci=\"20000147\" r=\"Curse\" ri=\"10000012\" s=\"OSY-UD IX - Moon 16 - Serpentis Corporation Chemical Storage\" se=\"0.0\" si=\"60012799\" sy=\"OSY-UD\" syi=\"30001005\"/>\r\n    <row c=\"Tranquility\" ci=\"20000147\" r=\"Curse\" ri=\"10000012\" s=\"G-G78S XI - Moon 7 - Serpentis Corporation Chemical Refinery\" se=\"0.0\" si=\"60012802\" sy=\"G-G78S\" syi=\"30001002\"/>\r\n    <row c=\"Paradise\" ci=\"20000148\" r=\"Curse\" ri=\"10000012\" s=\"PO4F-3 VI - Moon 18 - Serpentis Corporation Chemical Refinery\" se=\"0.0\" si=\"60012805\" sy=\"PO4F-3\" syi=\"30001012\"/>\r\n    <row c=\"Paradise\" ci=\"20000148\" r=\"Curse\" ri=\"10000012\" s=\"PO4F-3 VI - Moon 7 - Serpentis Corporation Chemical Refinery\" se=\"0.0\" si=\"60012808\" sy=\"PO4F-3\" syi=\"30001012\"/>\r\n    <row c=\"Paradise\" ci=\"20000148\" r=\"Curse\" ri=\"10000012\" s=\"PO4F-3 V - Moon 10 - Serpentis Corporation Chemical Refinery\" se=\"0.0\" si=\"60012811\" sy=\"PO4F-3\" syi=\"30001012\"/>\r\n    <row c=\"Elysium\" ci=\"20000149\" r=\"Curse\" ri=\"10000012\" s=\"HLW-HP VI - Moon 14 - Serpentis Corporation Chemical Refinery\" se=\"0.0\" si=\"60012814\" sy=\"HLW-HP\" syi=\"30001016\"/>\r\n    <row c=\"Elysium\" ci=\"20000149\" r=\"Curse\" ri=\"10000012\" s=\"HLW-HP III - Moon 5 - Serpentis Corporation Chemical Refinery\" se=\"0.0\" si=\"60012817\" sy=\"HLW-HP\" syi=\"30001016\"/>\r\n    <row c=\"Elysium\" ci=\"20000149\" r=\"Curse\" ri=\"10000012\" s=\"HLW-HP IV - Moon 1 - Serpentis Corporation Chemical Refinery\" se=\"0.0\" si=\"60012820\" sy=\"HLW-HP\" syi=\"30001016\"/>\r\n    <row c=\"Sound\" ci=\"20000150\" r=\"Curse\" ri=\"10000012\" s=\"K-QWHE VII - Moon 11 - Serpentis Corporation Chemical Refinery\" se=\"0.0\" si=\"60012823\" sy=\"K-QWHE\" syi=\"30001026\"/>\r\n    <row c=\"Sound\" ci=\"20000150\" r=\"Curse\" ri=\"10000012\" s=\"K-QWHE VI - Moon 15 - Serpentis Corporation Chemical Refinery\" se=\"0.0\" si=\"60012826\" sy=\"K-QWHE\" syi=\"30001026\"/>\r\n    <row c=\"Sound\" ci=\"20000150\" r=\"Curse\" ri=\"10000012\" s=\"CL-85V V - Serpentis Corporation Chemical Storage\" se=\"0.0\" si=\"60012829\" sy=\"CL-85V\" syi=\"30001025\"/>\r\n    <row c=\"Rapture\" ci=\"20000151\" r=\"Curse\" ri=\"10000012\" s=\"QFEW-K V - Moon 1 - Serpentis Corporation Chemical Refinery\" se=\"0.0\" si=\"60012832\" sy=\"QFEW-K\" syi=\"30001033\"/>\r\n    <row c=\"Rapture\" ci=\"20000151\" r=\"Curse\" ri=\"10000012\" s=\"S1DP-Y VIII - Moon 15 - Serpentis Corporation Reprocessing Facility\" se=\"0.0\" si=\"60012835\" sy=\"S1DP-Y\" syi=\"30001030\"/>\r\n    <row c=\"Rapture\" ci=\"20000151\" r=\"Curse\" ri=\"10000012\" s=\"CVY-UC IX - Moon 17 - Serpentis Corporation Reprocessing Facility\" se=\"0.0\" si=\"60012838\" sy=\"CVY-UC\" syi=\"30001034\"/>\r\n    <row c=\"Hale\" ci=\"20000152\" r=\"Curse\" ri=\"10000012\" s=\"LJ-YSW IV - Moon 2 - Serpentis Corporation Reprocessing Facility\" se=\"0.0\" si=\"60012841\" sy=\"LJ-YSW\" syi=\"30001038\"/>\r\n    <row c=\"Hale\" ci=\"20000152\" r=\"Curse\" ri=\"10000012\" s=\"CL-1JE V - Moon 1 - Serpentis Corporation Chemical Refinery\" se=\"0.0\" si=\"60012844\" sy=\"CL-1JE\" syi=\"30001042\"/>\r\n    <row c=\"Hale\" ci=\"20000152\" r=\"Curse\" ri=\"10000012\" s=\"CL-1JE V - Moon 3 - Serpentis Corporation Chemical Refinery\" se=\"0.0\" si=\"60012847\" sy=\"CL-1JE\" syi=\"30001042\"/>\r\n    <row c=\"Heaven\" ci=\"20000153\" r=\"Curse\" ri=\"10000012\" s=\"Utopia VI - Moon 6 - Serpentis Corporation Chemical Refinery\" se=\"0.0\" si=\"60012850\" sy=\"Utopia\" syi=\"30001045\"/>\r\n    <row c=\"Heaven\" ci=\"20000153\" r=\"Curse\" ri=\"10000012\" s=\"Utopia VI - Moon 12 - Serpentis Corporation Chemical Refinery\" se=\"0.0\" si=\"60012853\" sy=\"Utopia\" syi=\"30001045\"/>\r\n    <row c=\"Heaven\" ci=\"20000153\" r=\"Curse\" ri=\"10000012\" s=\"Jorund VII - Moon 2 - Serpentis Corporation Chemical Refinery\" se=\"0.0\" si=\"60012856\" sy=\"Jorund\" syi=\"30001046\"/>\r\n    <row c=\"Phoenix\" ci=\"20000674\" r=\"Fountain\" ri=\"10000058\" s=\"Serpentis Prime VIII - Moon 2 - Serpentis Corporation Chemical Refinery\" se=\"0.0\" si=\"60012859\" sy=\"Serpentis Prime\" syi=\"30004623\"/>\r\n    <row c=\"Phoenix\" ci=\"20000674\" r=\"Fountain\" ri=\"10000058\" s=\"A-1CON X - Moon 10 - Serpentis Corporation Chemical Storage\" se=\"0.0\" si=\"60012862\" sy=\"A-1CON\" syi=\"30004619\"/>\r\n    <row c=\"Phoenix\" ci=\"20000674\" r=\"Fountain\" ri=\"10000058\" s=\"WY-9LL IX - Moon 1 - Serpentis Corporation Reprocessing Facility\" se=\"0.0\" si=\"60012865\" sy=\"WY-9LL\" syi=\"30004621\"/>\r\n    <row c=\"Tranquility\" ci=\"20000147\" r=\"Curse\" ri=\"10000012\" s=\"H-ADOC IV - Moon 1 - Guardian Angels Assembly Plant\" se=\"0.0\" si=\"60012868\" sy=\"H-ADOC\" syi=\"30001001\"/>\r\n    <row c=\"Tranquility\" ci=\"20000147\" r=\"Curse\" ri=\"10000012\" s=\"UW9B-F X - Guardian Angels Logistic Support\" se=\"0.0\" si=\"60012871\" sy=\"UW9B-F\" syi=\"30001003\"/>\r\n    <row c=\"Paradise\" ci=\"20000148\" r=\"Curse\" ri=\"10000012\" s=\"D87E-A VII - Moon 6 - Guardian Angels Assembly Plant\" se=\"0.0\" si=\"60012874\" sy=\"D87E-A\" syi=\"30001010\"/>\r\n    <row c=\"Paradise\" ci=\"20000148\" r=\"Curse\" ri=\"10000012\" s=\"PO4F-3 V - Moon 6 - Guardian Angels Assembly Plant\" se=\"0.0\" si=\"60012877\" sy=\"PO4F-3\" syi=\"30001012\"/>\r\n    <row c=\"Elysium\" ci=\"20000149\" r=\"Curse\" ri=\"10000012\" s=\"HLW-HP VI - Moon 7 - Guardian Angels Assembly Plant\" se=\"0.0\" si=\"60012880\" sy=\"HLW-HP\" syi=\"30001016\"/>\r\n    <row c=\"Elysium\" ci=\"20000149\" r=\"Curse\" ri=\"10000012\" s=\"RA-NXN VII - Moon 18 - Guardian Angels Assembly Plant\" se=\"0.0\" si=\"60012883\" sy=\"RA-NXN\" syi=\"30001018\"/>\r\n    <row c=\"Sound\" ci=\"20000150\" r=\"Curse\" ri=\"10000012\" s=\"YKE4-3 III - Moon 1 - Guardian Angels Testing Facilities\" se=\"0.0\" si=\"60012886\" sy=\"YKE4-3\" syi=\"30001024\"/>\r\n    <row c=\"Sound\" ci=\"20000150\" r=\"Curse\" ri=\"10000012\" s=\"CL-85V VI - Moon 8 - Guardian Angels Assembly Plant\" se=\"0.0\" si=\"60012889\" sy=\"CL-85V\" syi=\"30001025\"/>\r\n    <row c=\"Rapture\" ci=\"20000151\" r=\"Curse\" ri=\"10000012\" s=\"QFEW-K VI - Moon 1 - Guardian Angels Assembly Plant\" se=\"0.0\" si=\"60012892\" sy=\"QFEW-K\" syi=\"30001033\"/>\r\n    <row c=\"Rapture\" ci=\"20000151\" r=\"Curse\" ri=\"10000012\" s=\"QFEW-K IV - Guardian Angels Assembly Plant\" se=\"0.0\" si=\"60012895\" sy=\"QFEW-K\" syi=\"30001033\"/>\r\n    <row c=\"Hale\" ci=\"20000152\" r=\"Curse\" ri=\"10000012\" s=\"G-0Q86 VII - Moon 1 - Guardian Angels Assembly Plant\" se=\"0.0\" si=\"60012898\" sy=\"G-0Q86\" syi=\"30001041\"/>\r\n    <row c=\"Hale\" ci=\"20000152\" r=\"Curse\" ri=\"10000012\" s=\"J4UD-J VI - Moon 3 - Guardian Angels Testing Facilities\" se=\"0.0\" si=\"60012901\" sy=\"J4UD-J\" syi=\"30001043\"/>\r\n    <row c=\"Heaven\" ci=\"20000153\" r=\"Curse\" ri=\"10000012\" s=\"Litom XI - Moon 2 - Guardian Angels Assembly Plant\" se=\"0.0\" si=\"60012904\" sy=\"Litom\" syi=\"30001048\"/>\r\n    <row c=\"Heaven\" ci=\"20000153\" r=\"Curse\" ri=\"10000012\" s=\"Hemin VII - Moon 15 - Guardian Angels Logistic Support\" se=\"0.0\" si=\"60012907\" sy=\"Hemin\" syi=\"30001044\"/>\r\n    <row c=\"Phoenix\" ci=\"20000674\" r=\"Fountain\" ri=\"10000058\" s=\"YZ-LQL VI - Moon 19 - Guardian Angels Logistic Support\" se=\"0.0\" si=\"60012910\" sy=\"YZ-LQL\" syi=\"30004617\"/>\r\n    <row c=\"Phoenix\" ci=\"20000674\" r=\"Fountain\" ri=\"10000058\" s=\"YZ-LQL VII - Moon 1 - Guardian Angels Assembly Plant\" se=\"0.0\" si=\"60012913\" sy=\"YZ-LQL\" syi=\"30004617\"/>\r\n    <row c=\"Sanctum\" ci=\"20000761\" r=\"Genesis\" ri=\"10000067\" s=\"Yulai VIII - Moon 12 - DED Logistic Support\" se=\"1.0\" si=\"60012916\" sy=\"Yulai\" syi=\"30005204\"/>\r\n    <row c=\"Sanctum\" ci=\"20000761\" r=\"Genesis\" ri=\"10000067\" s=\"Tarta IX - Moon 14 - DED Assembly Plant\" se=\"0.5\" si=\"60012919\" sy=\"Tarta\" syi=\"30005205\"/>\r\n    <row c=\"Sanctum\" ci=\"20000761\" r=\"Genesis\" ri=\"10000067\" s=\"Yulai X - DED Assembly Plant\" se=\"1.0\" si=\"60012922\" sy=\"Yulai\" syi=\"30005204\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Sortet VI - Moon 5 - DED Logistic Support\" se=\"0.8\" si=\"60012925\" sy=\"Sortet\" syi=\"30005323\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Reblier VIII - Moon 7 - DED Logistic Support\" se=\"0.4\" si=\"60012928\" sy=\"Reblier\" syi=\"30005328\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Scolluzer VI - DED Logistic Support\" se=\"0.8\" si=\"60012931\" sy=\"Scolluzer\" syi=\"30005322\"/>\r\n    <row c=\"Mulata\" ci=\"20000329\" r=\"Domain\" ri=\"10000043\" s=\"Ruchy I - DED Testing Facilities\" se=\"0.4\" si=\"60012934\" sy=\"Ruchy\" syi=\"30002249\"/>\r\n    <row c=\"Mulata\" ci=\"20000329\" r=\"Domain\" ri=\"10000043\" s=\"Mamenkhanar IX - Moon 11 - DED Logistic Support\" se=\"0.7\" si=\"60012937\" sy=\"Mamenkhanar\" syi=\"30002242\"/>\r\n    <row c=\"Mulata\" ci=\"20000329\" r=\"Domain\" ri=\"10000043\" s=\"Neziel I - DED Assembly Plant\" se=\"0.4\" si=\"60012940\" sy=\"Neziel\" syi=\"30002246\"/>\r\n    <row c=\"Mossas\" ci=\"20000008\" r=\"Derelik\" ri=\"10000001\" s=\"Maspah V - Moon 6 - DED Assembly Plant\" se=\"0.8\" si=\"60012943\" sy=\"Maspah\" syi=\"30000052\"/>\r\n    <row c=\"Mossas\" ci=\"20000008\" r=\"Derelik\" ri=\"10000001\" s=\"Maspah IV - Moon 7 - DED Assembly Plant\" se=\"0.8\" si=\"60012946\" sy=\"Maspah\" syi=\"30000052\"/>\r\n    <row c=\"Mossas\" ci=\"20000008\" r=\"Derelik\" ri=\"10000001\" s=\"Juddi VII - DED Logistic Support\" se=\"0.6\" si=\"60012949\" sy=\"Juddi\" syi=\"30000051\"/>\r\n    <row c=\"Kehina\" ci=\"20000331\" r=\"Domain\" ri=\"10000043\" s=\"Esteban VIII - Moon 4 - DED Logistic Support\" se=\"0.6\" si=\"60012952\" sy=\"Esteban\" syi=\"30002260\"/>\r\n    <row c=\"Kehina\" ci=\"20000331\" r=\"Domain\" ri=\"10000043\" s=\"Nalu VII - Moon 7 - DED Testing Facilities\" se=\"0.6\" si=\"60012955\" sy=\"Nalu\" syi=\"30002262\"/>\r\n    <row c=\"Kehina\" ci=\"20000331\" r=\"Domain\" ri=\"10000043\" s=\"Sahdil III - DED Logistic Support\" se=\"0.7\" si=\"60012958\" sy=\"Sahdil\" syi=\"30002259\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Perdan VI - Moon 16 - DED Testing Facilities\" se=\"0.9\" si=\"60012961\" sy=\"Perdan\" syi=\"30001693\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Asesamy VI - Moon 8 - DED Assembly Plant\" se=\"0.6\" si=\"60012964\" sy=\"Asesamy\" syi=\"30001689\"/>\r\n    <row c=\"Damadil\" ci=\"20000250\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hostni VII - Moon 18 - DED Assembly Plant\" se=\"0.8\" si=\"60012967\" sy=\"Hostni\" syi=\"30001690\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Evati IX - Moon 1 - DED Assembly Plant\" se=\"0.2\" si=\"60012970\" sy=\"Evati\" syi=\"30002060\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Lasleinur VI - Moon 17 - DED Assembly Plant\" se=\"0.2\" si=\"60012973\" sy=\"Lasleinur\" syi=\"30002065\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Todifrauan VII - Moon 8 - DED Assembly Plant\" se=\"0.1\" si=\"60012976\" sy=\"Todifrauan\" syi=\"30002062\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Hilaban II - Moon 5 - DED Testing Facilities\" se=\"0.9\" si=\"60012979\" sy=\"Hilaban\" syi=\"30001674\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Pimebeka VII - Moon 13 - DED Logistic Support\" se=\"0.7\" si=\"60012982\" sy=\"Pimebeka\" syi=\"30001669\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Tash-Murkon Prime III - Moon 1 - DED Assembly Plant\" se=\"0.8\" si=\"60012985\" sy=\"Tash-Murkon Prime\" syi=\"30001671\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Raneilles V - Moon 2 - DED Assembly Plant\" se=\"0.6\" si=\"60012988\" sy=\"Raneilles\" syi=\"30005319\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Raneilles III - DED Assembly Plant\" se=\"0.6\" si=\"60012991\" sy=\"Raneilles\" syi=\"30005319\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Eletta VII - Moon 7 - DED Logistic Support\" se=\"0.9\" si=\"60012994\" sy=\"Eletta\" syi=\"30005315\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"Defsunun IV - Moon 1 - DED Assembly Plant\" se=\"0.1\" si=\"60012997\" sy=\"Defsunun\" syi=\"30004284\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"Jerhesh VI - Moon 11 - DED Logistic Support\" se=\"0.3\" si=\"60013000\" sy=\"Jerhesh\" syi=\"30004281\"/>\r\n    <row c=\"Leseasesh\" ci=\"20000626\" r=\"Aridia\" ri=\"10000054\" s=\"Nalnifan IV - Moon 2 - DED Assembly Plant\" se=\"0.3\" si=\"60013003\" sy=\"Nalnifan\" syi=\"30004280\"/>\r\n    <row c=\"Oraron\" ci=\"20000012\" r=\"Derelik\" ri=\"10000001\" s=\"Gelhan V - Moon 10 - DED Logistic Support\" se=\"0.7\" si=\"60013006\" sy=\"Gelhan\" syi=\"30000087\"/>\r\n    <row c=\"Oraron\" ci=\"20000012\" r=\"Derelik\" ri=\"10000001\" s=\"Gelhan V - Moon 1 - DED Assembly Plant\" se=\"0.7\" si=\"60013009\" sy=\"Gelhan\" syi=\"30000087\"/>\r\n    <row c=\"Oraron\" ci=\"20000012\" r=\"Derelik\" ri=\"10000001\" s=\"Asghatil IX - Moon 3 - DED Assembly Plant\" se=\"0.8\" si=\"60013012\" sy=\"Asghatil\" syi=\"30000084\"/>\r\n    <row c=\"Orus\" ci=\"20000742\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nahol X - Moon 2 - DED Assembly Plant\" se=\"0.6\" si=\"60013015\" sy=\"Nahol\" syi=\"30005069\"/>\r\n    <row c=\"Orus\" ci=\"20000742\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nahol II - Moon 1 - DED Assembly Plant\" se=\"0.6\" si=\"60013018\" sy=\"Nahol\" syi=\"30005069\"/>\r\n    <row c=\"Orus\" ci=\"20000742\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Nahol IV - DED Assembly Plant\" se=\"0.6\" si=\"60013021\" sy=\"Nahol\" syi=\"30005069\"/>\r\n    <row c=\"Kalangin\" ci=\"20000004\" r=\"Derelik\" ri=\"10000001\" s=\"Kasrasi IX - Moon 7 - DED Assembly Plant\" se=\"0.6\" si=\"60013024\" sy=\"Kasrasi\" syi=\"30000030\"/>\r\n    <row c=\"Kalangin\" ci=\"20000004\" r=\"Derelik\" ri=\"10000001\" s=\"Kiereend VII - Moon 3 - DED Assembly Plant\" se=\"0.8\" si=\"60013027\" sy=\"Kiereend\" syi=\"30000024\"/>\r\n    <row c=\"Kalangin\" ci=\"20000004\" r=\"Derelik\" ri=\"10000001\" s=\"Rashy VI - DED Assembly Plant\" se=\"0.8\" si=\"60013030\" sy=\"Rashy\" syi=\"30000025\"/>\r\n    <row c=\"Sanair\" ci=\"20000243\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Tividu IV - Moon 10 - DED Assembly Plant\" se=\"0.6\" si=\"60013033\" sy=\"Tividu\" syi=\"30001644\"/>\r\n    <row c=\"Sanair\" ci=\"20000243\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Tividu IV - Moon 3 - DED Assembly Plant\" se=\"0.6\" si=\"60013036\" sy=\"Tividu\" syi=\"30001644\"/>\r\n    <row c=\"Sanair\" ci=\"20000243\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Goram VII - Moon 4 - DED Assembly Plant\" se=\"0.6\" si=\"60013039\" sy=\"Goram\" syi=\"30001646\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Mastakomon IX - Moon 3 - DED Assembly Plant\" se=\"0.5\" si=\"60013042\" sy=\"Mastakomon\" syi=\"30000202\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Obe VI - Moon 2 - DED Testing Facilities\" se=\"0.3\" si=\"60013045\" sy=\"Obe\" syi=\"30000205\"/>\r\n    <row c=\"Orpana\" ci=\"20000029\" r=\"The Forge\" ri=\"10000002\" s=\"Mastakomon XI - Moon 2 - DED Assembly Plant\" se=\"0.5\" si=\"60013048\" sy=\"Mastakomon\" syi=\"30000202\"/>\r\n    <row c=\"Tranquility\" ci=\"20000147\" r=\"Curse\" ri=\"10000012\" s=\"G-G78S XI - Moon 3 - Dominations Assembly Plant\" se=\"0.0\" si=\"60013051\" sy=\"G-G78S\" syi=\"30001002\"/>\r\n    <row c=\"Paradise\" ci=\"20000148\" r=\"Curse\" ri=\"10000012\" s=\"J7A-UR VI - Dominations Testing Facilities\" se=\"0.0\" si=\"60013054\" sy=\"J7A-UR\" syi=\"30001013\"/>\r\n    <row c=\"Elysium\" ci=\"20000149\" r=\"Curse\" ri=\"10000012\" s=\"XX9-WV VII - Moon 1 - Dominations Logistic Support\" se=\"0.0\" si=\"60013057\" sy=\"XX9-WV\" syi=\"30001021\"/>\r\n    <row c=\"Sound\" ci=\"20000150\" r=\"Curse\" ri=\"10000012\" s=\"K-QWHE VII - Moon 8 - Dominations Assembly Plant\" se=\"0.0\" si=\"60013060\" sy=\"K-QWHE\" syi=\"30001026\"/>\r\n    <row c=\"Rapture\" ci=\"20000151\" r=\"Curse\" ri=\"10000012\" s=\"M-N7WD VIII - Moon 12 - Dominations Assembly Plant\" se=\"0.0\" si=\"60013063\" sy=\"M-N7WD\" syi=\"30001032\"/>\r\n    <row c=\"Hale\" ci=\"20000152\" r=\"Curse\" ri=\"10000012\" s=\"LJ-YSW VII - Moon 11 - Dominations Logistic Support\" se=\"0.0\" si=\"60013066\" sy=\"LJ-YSW\" syi=\"30001038\"/>\r\n    <row c=\"Heaven\" ci=\"20000153\" r=\"Curse\" ri=\"10000012\" s=\"Utopia VI - Moon 22 - Dominations Assembly Plant\" se=\"0.0\" si=\"60013069\" sy=\"Utopia\" syi=\"30001045\"/>\r\n    <row c=\"Phoenix\" ci=\"20000674\" r=\"Fountain\" ri=\"10000058\" s=\"WY-9LL VIII - Moon 3 - Dominations Testing Facilities\" se=\"0.0\" si=\"60013072\" sy=\"WY-9LL\" syi=\"30004621\"/>\r\n    <row c=\"38G6-L\" ci=\"20000291\" r=\"Pure Blind\" ri=\"10000023\" s=\"X-7OMU IV - Moon 16 - Food Relief Plantation\" se=\"0.0\" si=\"60013075\" sy=\"X-7OMU\" syi=\"30001978\"/>\r\n    <row c=\"38G6-L\" ci=\"20000291\" r=\"Pure Blind\" ri=\"10000023\" s=\"ROIR-Y II - Moon 2 - Food Relief Food Packaging\" se=\"0.0\" si=\"60013078\" sy=\"ROIR-Y\" syi=\"30001983\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"9-ERCP VIII - Genolution Biotech Production\" se=\"0.0\" si=\"60013081\" sy=\"9-ERCP\" syi=\"30001484\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"9-ERCP V - Genolution Biotech Production\" se=\"0.0\" si=\"60013084\" sy=\"9-ERCP\" syi=\"30001484\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"KN7M-N VI - Moon 3 - Genolution Biotech Research Center\" se=\"0.0\" si=\"60013087\" sy=\"KN7M-N\" syi=\"30001485\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"KN7M-N IV - Moon 4 - Genolution Biotech Research Center\" se=\"0.0\" si=\"60013090\" sy=\"KN7M-N\" syi=\"30001485\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Erkinen XII - Moon 8 - Genolution Biotech Production\" se=\"0.6\" si=\"60013093\" sy=\"Erkinen\" syi=\"30003078\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Sasiekko I - Genolution Biotech Production\" se=\"0.5\" si=\"60013096\" sy=\"Sasiekko\" syi=\"30003074\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Uusanen IV - Moon 2 - Genolution Biotech Production\" se=\"0.4\" si=\"60013099\" sy=\"Uusanen\" syi=\"30003077\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Anka IV - Moon 15 - Genolution Biotech Production\" se=\"0.4\" si=\"60013102\" sy=\"Anka\" syi=\"30003071\"/>\r\n    <row c=\"Haurala\" ci=\"20000200\" r=\"Lonetrek\" ri=\"10000016\" s=\"Uemisaisen VII - Moon 12 - Genolution Biotech Production\" se=\"0.6\" si=\"60013105\" sy=\"Uemisaisen\" syi=\"30001368\"/>\r\n    <row c=\"Haurala\" ci=\"20000200\" r=\"Lonetrek\" ri=\"10000016\" s=\"Sotrentaira VII - Moon 3 - Genolution Biotech Production\" se=\"0.5\" si=\"60013108\" sy=\"Sotrentaira\" syi=\"30001369\"/>\r\n    <row c=\"Haurala\" ci=\"20000200\" r=\"Lonetrek\" ri=\"10000016\" s=\"Erenta VI - Moon 6 - Genolution Biotech Production\" se=\"0.6\" si=\"60013111\" sy=\"Erenta\" syi=\"30001371\"/>\r\n    <row c=\"Haurala\" ci=\"20000200\" r=\"Lonetrek\" ri=\"10000016\" s=\"Raussinen XI - Moon 2 - Genolution Biotech Research Center\" se=\"0.5\" si=\"60013114\" sy=\"Raussinen\" syi=\"30001373\"/>\r\n    <row c=\"Ashela\" ci=\"20000762\" r=\"Genesis\" ri=\"10000067\" s=\"Ziasad IX - Moon 3 - Genolution Biotech Production\" se=\"0.4\" si=\"60013117\" sy=\"Ziasad\" syi=\"30005208\"/>\r\n    <row c=\"Ashela\" ci=\"20000762\" r=\"Genesis\" ri=\"10000067\" s=\"Toon VIII - Moon 2 - Genolution Biotech Research Center\" se=\"0.4\" si=\"60013120\" sy=\"Toon\" syi=\"30005212\"/>\r\n    <row c=\"Ashela\" ci=\"20000762\" r=\"Genesis\" ri=\"10000067\" s=\"Sibe VI - Moon 1 - Genolution Biotech Production\" se=\"0.5\" si=\"60013123\" sy=\"Sibe\" syi=\"30005209\"/>\r\n    <row c=\"Ashela\" ci=\"20000762\" r=\"Genesis\" ri=\"10000067\" s=\"Zarer VI - Moon 10 - Genolution Biotech Production\" se=\"0.4\" si=\"60013126\" sy=\"Zarer\" syi=\"30005211\"/>\r\n    <row c=\"Sukanan\" ci=\"20000249\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Keshirou IX - Moon 4 - Genolution Biotech Production\" se=\"0.2\" si=\"60013129\" sy=\"Keshirou\" syi=\"30001682\"/>\r\n    <row c=\"Sukanan\" ci=\"20000249\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Keshirou VIII - Moon 2 - Genolution Biotech Production\" se=\"0.2\" si=\"60013132\" sy=\"Keshirou\" syi=\"30001682\"/>\r\n    <row c=\"Sukanan\" ci=\"20000249\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Rethan VII - Moon 21 - Genolution Biotech Production\" se=\"0.4\" si=\"60013135\" sy=\"Rethan\" syi=\"30001686\"/>\r\n    <row c=\"Sukanan\" ci=\"20000249\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Ordat I - Genolution Biotech Production\" se=\"0.3\" si=\"60013138\" sy=\"Ordat\" syi=\"30001685\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Otsela VI - Moon 17 - Genolution Biotech Production\" se=\"0.4\" si=\"60013141\" sy=\"Otsela\" syi=\"30000194\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Vouskiaho III - Genolution Biotech Production\" se=\"0.5\" si=\"60013144\" sy=\"Vouskiaho\" syi=\"30000193\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Kiainti VII - Genolution Biotech Production\" se=\"0.5\" si=\"60013147\" sy=\"Kiainti\" syi=\"30000189\"/>\r\n    <row c=\"Etsala\" ci=\"20000027\" r=\"The Forge\" ri=\"10000002\" s=\"Vasala VI - Moon 10 - Genolution Biotech Production\" se=\"0.5\" si=\"60013150\" sy=\"Vasala\" syi=\"30000190\"/>\r\n    <row c=\"Fabai\" ci=\"20000628\" r=\"Aridia\" ri=\"10000054\" s=\"Tisot V - Moon 1 - Genolution Biotech Production\" se=\"0.1\" si=\"60013153\" sy=\"Tisot\" syi=\"30004298\"/>\r\n    <row c=\"Fabai\" ci=\"20000628\" r=\"Aridia\" ri=\"10000054\" s=\"Naga X - Moon 16 - Genolution Biotech Production\" se=\"0.1\" si=\"60013156\" sy=\"Naga\" syi=\"30004300\"/>\r\n    <row c=\"Fabai\" ci=\"20000628\" r=\"Aridia\" ri=\"10000054\" s=\"Sakht VI - Moon 7 - Genolution Biotech Production\" se=\"0.1\" si=\"60013159\" sy=\"Sakht\" syi=\"30004299\"/>\r\n    <row c=\"Fabai\" ci=\"20000628\" r=\"Aridia\" ri=\"10000054\" s=\"Efu V - Moon 1 - Genolution Biotech Production\" se=\"0.1\" si=\"60013162\" sy=\"Efu\" syi=\"30004297\"/>\r\n    <row c=\"Tsemshatel\" ci=\"20000253\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Yasud VI - Moon 18 - Genolution Biotech Production\" se=\"0.6\" si=\"60013165\" sy=\"Yasud\" syi=\"30001713\"/>\r\n    <row c=\"Tsemshatel\" ci=\"20000253\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Asezai I - Moon 1 - Genolution Biotech Production\" se=\"0.6\" si=\"60013168\" sy=\"Asezai\" syi=\"30001708\"/>\r\n    <row c=\"Tsemshatel\" ci=\"20000253\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Asezai V - Moon 1 - Genolution Biotech Production\" se=\"0.6\" si=\"60013171\" sy=\"Asezai\" syi=\"30001708\"/>\r\n    <row c=\"Tsemshatel\" ci=\"20000253\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Lari VI - Moon 4 - Genolution Biohazard Containment Facility\" se=\"0.5\" si=\"60013174\" sy=\"Lari\" syi=\"30001712\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"Iitanmadan III - Moon 1 - Genolution Biotech Production\" se=\"0.3\" si=\"60013177\" sy=\"Iitanmadan\" syi=\"30001422\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"Aikantoh IV - Moon 1 - Genolution Biohazard Containment Facility\" se=\"0.6\" si=\"60013180\" sy=\"Aikantoh\" syi=\"30001418\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"Jotenen II - Moon 1 - Genolution Biohazard Containment Facility\" se=\"0.6\" si=\"60013183\" sy=\"Jotenen\" syi=\"30001423\"/>\r\n    <row c=\"Pietanen\" ci=\"20000208\" r=\"Lonetrek\" ri=\"10000016\" s=\"Atai II - Moon 15 - Genolution Biotech Production\" se=\"0.5\" si=\"60013186\" sy=\"Atai\" syi=\"30001419\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Iivinen X - Moon 10 - Genolution Biohazard Containment Facility\" se=\"0.7\" si=\"60013189\" sy=\"Iivinen\" syi=\"30002766\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Tennen VIII - Moon 11 - Genolution Biotech Production\" se=\"0.9\" si=\"60013192\" sy=\"Tennen\" syi=\"30002763\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Yashunen III - Genolution Biotech Production\" se=\"1.0\" si=\"60013195\" sy=\"Yashunen\" syi=\"30002762\"/>\r\n    <row c=\"Caldari Border Zone\" ci=\"20000405\" r=\"The Citadel\" ri=\"10000033\" s=\"Iivinen VIII - Moon 7 - Genolution Biohazard Containment Facility\" se=\"0.7\" si=\"60013198\" sy=\"Iivinen\" syi=\"30002766\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tartoken III - Moon 3 - Genolution Biotech Production\" se=\"0.1\" si=\"60013201\" sy=\"Tartoken\" syi=\"30001441\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tamo V - Moon 2 - Genolution Biotech Production\" se=\"0.3\" si=\"60013204\" sy=\"Tamo\" syi=\"30001437\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nannaras III - Moon 1 - Genolution Biotech Production\" se=\"0.4\" si=\"60013207\" sy=\"Nannaras\" syi=\"30001438\"/>\r\n    <row c=\"Umamon\" ci=\"20000211\" r=\"Lonetrek\" ri=\"10000016\" s=\"Tamo I - Genolution Biotech Production\" se=\"0.3\" si=\"60013210\" sy=\"Tamo\" syi=\"30001437\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Grispire IV - Moon 14 - Genolution Biotech Production\" se=\"0.2\" si=\"60013213\" sy=\"Grispire\" syi=\"30003808\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Vivanier VI - Moon 5 - Genolution Biotech Production\" se=\"0.5\" si=\"60013216\" sy=\"Vivanier\" syi=\"30003810\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Grispire V - Moon 15 - Genolution Biotech Production\" se=\"0.2\" si=\"60013219\" sy=\"Grispire\" syi=\"30003808\"/>\r\n    <row c=\"Josmaert\" ci=\"20000556\" r=\"Placid\" ri=\"10000048\" s=\"Algasienan VI - Moon 4 - Genolution Biotech Production\" se=\"0.7\" si=\"60013222\" sy=\"Algasienan\" syi=\"30003811\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"Vullat VIII - Moon 1 - Genolution Biohazard Containment Facility\" se=\"1.0\" si=\"60013225\" sy=\"Vullat\" syi=\"30002573\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"Vullat VII - Moon 11 - Genolution Biotech Research Center\" se=\"1.0\" si=\"60013228\" sy=\"Vullat\" syi=\"30002573\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"Hurjafren VII - Moon 10 - Genolution Biotech Production\" se=\"0.9\" si=\"60013231\" sy=\"Hurjafren\" syi=\"30002572\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"Oremmulf VII - Moon 11 - Genolution Biohazard Containment Facility\" se=\"0.9\" si=\"60013234\" sy=\"Oremmulf\" syi=\"30002571\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"Frerstorn VI - Genolution Biotech Production\" se=\"0.3\" si=\"60013237\" sy=\"Frerstorn\" syi=\"30002090\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"Gebuladi X - Moon 3 - Genolution Biotech Production\" se=\"0.3\" si=\"60013240\" sy=\"Gebuladi\" syi=\"30002093\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"Eszur I - Moon 1 - Genolution Biotech Production\" se=\"0.2\" si=\"60013243\" sy=\"Eszur\" syi=\"30002095\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"Gebuladi VIII - Moon 2 - Genolution Biotech Production\" se=\"0.3\" si=\"60013246\" sy=\"Gebuladi\" syi=\"30002093\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Huttaken VI - Genolution Biotech Production\" se=\"0.6\" si=\"60013249\" sy=\"Huttaken\" syi=\"30002774\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Enderailen VIII - Moon 16 - Genolution Biotech Production\" se=\"0.4\" si=\"60013252\" sy=\"Enderailen\" syi=\"30002769\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Rairomon VIII - Moon 1 - Genolution Biohazard Containment Facility\" se=\"0.6\" si=\"60013255\" sy=\"Rairomon\" syi=\"30002772\"/>\r\n    <row c=\"Kantanen\" ci=\"20000406\" r=\"The Citadel\" ri=\"10000033\" s=\"Kulelen V - Moon 18 - Genolution Biotech Production\" se=\"0.5\" si=\"60013258\" sy=\"Kulelen\" syi=\"30002771\"/>\r\n    <row c=\"UTZ-7B\" ci=\"20000188\" r=\"Venal\" ri=\"10000015\" s=\"6NJ8-V VI - Moon 6 - Guristas Production Shipyard\" se=\"0.0\" si=\"60013261\" sy=\"6NJ8-V\" syi=\"30001290\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"IAMZ-5 VIII - Moon 9 - Impro Factory\" se=\"0.0\" si=\"60013264\" sy=\"IAMZ-5\" syi=\"30001481\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"KN7M-N IV - Moon 7 - Impro Research Center\" se=\"0.0\" si=\"60013267\" sy=\"KN7M-N\" syi=\"30001485\"/>\r\n    <row c=\"Ergruk\" ci=\"20000499\" r=\"Metropolis\" ri=\"10000042\" s=\"Osvestmunnur VIII - Moon 10 - Impro Factory\" se=\"0.5\" si=\"60013270\" sy=\"Osvestmunnur\" syi=\"30003427\"/>\r\n    <row c=\"Ergruk\" ci=\"20000499\" r=\"Metropolis\" ri=\"10000042\" s=\"Nein VII - Moon 4 - Impro Factory\" se=\"0.5\" si=\"60013273\" sy=\"Nein\" syi=\"30003423\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Miroona IV - Moon 19 - Impro Factory\" se=\"0.4\" si=\"60013276\" sy=\"Miroona\" syi=\"30005084\"/>\r\n    <row c=\"Tendrara\" ci=\"20000744\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Miroona IV - Moon 5 - Impro Factory\" se=\"0.4\" si=\"60013279\" sy=\"Miroona\" syi=\"30005084\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"Carirgnottin IX - Moon 5 - Impro Factory\" se=\"0.6\" si=\"60013282\" sy=\"Carirgnottin\" syi=\"30003048\"/>\r\n    <row c=\"Elalan\" ci=\"20000446\" r=\"Everyshore\" ri=\"10000037\" s=\"Tolle VI - Moon 6 - Impro Factory\" se=\"0.7\" si=\"60013285\" sy=\"Tolle\" syi=\"30003052\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Airaken V - Moon 6 - Impro Warehouse\" se=\"0.5\" si=\"60013288\" sy=\"Airaken\" syi=\"30000185\"/>\r\n    <row c=\"Aulari\" ci=\"20000026\" r=\"The Forge\" ri=\"10000002\" s=\"Inaya IX - Moon 13 - Impro Factory\" se=\"0.6\" si=\"60013291\" sy=\"Inaya\" syi=\"30000182\"/>\r\n    <row c=\"Liela\" ci=\"20000333\" r=\"Domain\" ri=\"10000043\" s=\"Avair VII - Moon 12 - Impro Factory\" se=\"0.4\" si=\"60013294\" sy=\"Avair\" syi=\"30002270\"/>\r\n    <row c=\"Liela\" ci=\"20000333\" r=\"Domain\" ri=\"10000043\" s=\"Clarelam VI - Moon 8 - Impro Research Center\" se=\"0.5\" si=\"60013297\" sy=\"Clarelam\" syi=\"30002275\"/>\r\n    <row c=\"Nadire\" ci=\"20000399\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Goinard IV - Moon 5 - Impro Factory\" se=\"0.3\" si=\"60013300\" sy=\"Goinard\" syi=\"30002725\"/>\r\n    <row c=\"Nadire\" ci=\"20000399\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Assiettes IV - Impro Factory\" se=\"0.6\" si=\"60013303\" sy=\"Assiettes\" syi=\"30002724\"/>\r\n    <row c=\"Benurad\" ci=\"20000378\" r=\"Heimatar\" ri=\"10000030\" s=\"Otraren VI - Moon 16 - Impro Factory\" se=\"0.5\" si=\"60013306\" sy=\"Otraren\" syi=\"30002578\"/>\r\n    <row c=\"Benurad\" ci=\"20000378\" r=\"Heimatar\" ri=\"10000030\" s=\"Hrondedir VII - Moon 15 - Impro Factory\" se=\"0.3\" si=\"60013309\" sy=\"Hrondedir\" syi=\"30002574\"/>\r\n    <row c=\"Helab\" ci=\"20000625\" r=\"Aridia\" ri=\"10000054\" s=\"Soliara IX - Moon 13 - Impro Factory\" se=\"0.2\" si=\"60013312\" sy=\"Soliara\" syi=\"30004273\"/>\r\n    <row c=\"Helab\" ci=\"20000625\" r=\"Aridia\" ri=\"10000054\" s=\"Tukanas VIII - Moon 6 - Impro Factory\" se=\"0.1\" si=\"60013315\" sy=\"Tukanas\" syi=\"30004275\"/>\r\n    <row c=\"Eoldulf\" ci=\"20000354\" r=\"Molden Heath\" ri=\"10000028\" s=\"Unertek IX - Moon 2 - Impro Factory\" se=\"0.3\" si=\"60013318\" sy=\"Unertek\" syi=\"30002413\"/>\r\n    <row c=\"Eoldulf\" ci=\"20000354\" r=\"Molden Heath\" ri=\"10000028\" s=\"Ennur IX - Moon 7 - Impro Research Center\" se=\"0.1\" si=\"60013321\" sy=\"Ennur\" syi=\"30002412\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Inghenges V - Moon 15 - Impro Factory\" se=\"0.7\" si=\"60013324\" sy=\"Inghenges\" syi=\"30002672\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Inghenges VI - Moon 4 - Impro Factory\" se=\"0.7\" si=\"60013327\" sy=\"Inghenges\" syi=\"30002672\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Stacmon V - Impro Factory\" se=\"0.6\" si=\"60013330\" sy=\"Stacmon\" syi=\"30003794\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Stacmon VII - Moon 1 - Impro Factory\" se=\"0.6\" si=\"60013333\" sy=\"Stacmon\" syi=\"30003794\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Aulbres IX - Moon 22 - Impro Factory\" se=\"0.1\" si=\"60013336\" sy=\"Aulbres\" syi=\"30003818\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Aulbres VIII - Moon 15 - Impro Factory\" se=\"0.1\" si=\"60013339\" sy=\"Aulbres\" syi=\"30003818\"/>\r\n    <row c=\"Sukanan\" ci=\"20000249\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Ordat VI - Moon 2 - Impro Factory\" se=\"0.3\" si=\"60013342\" sy=\"Ordat\" syi=\"30001685\"/>\r\n    <row c=\"Sukanan\" ci=\"20000249\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Teshkat VI - Impro Factory\" se=\"0.4\" si=\"60013345\" sy=\"Teshkat\" syi=\"30001681\"/>\r\n    <row c=\"Braille\" ci=\"20000520\" r=\"Solitude\" ri=\"10000044\" s=\"Vevelonel VI - Moon 1 - Impro Factory\" se=\"0.1\" si=\"60013348\" sy=\"Vevelonel\" syi=\"30003572\"/>\r\n    <row c=\"Braille\" ci=\"20000520\" r=\"Solitude\" ri=\"10000044\" s=\"Meunvon IV - Moon 3 - Impro Factory\" se=\"0.3\" si=\"60013351\" sy=\"Meunvon\" syi=\"30003568\"/>\r\n    <row c=\"Sanctum\" ci=\"20000761\" r=\"Genesis\" ri=\"10000067\" s=\"Yulai VIII - Inner Circle Tribunal\" se=\"1.0\" si=\"60013354\" sy=\"Yulai\" syi=\"30005204\"/>\r\n    <row c=\"Z-6NQ6\" ci=\"20000478\" r=\"Syndicate\" ri=\"10000041\" s=\"X-BV98 VIII - Moon 5 - Intaki Bank Depository\" se=\"0.0\" si=\"60013357\" sy=\"X-BV98\" syi=\"30003274\"/>\r\n    <row c=\"Z-6NQ6\" ci=\"20000478\" r=\"Syndicate\" ri=\"10000041\" s=\"FD-MLJ VII - Moon 2 - Intaki Bank Depository\" se=\"0.0\" si=\"60013360\" sy=\"FD-MLJ\" syi=\"30003276\"/>\r\n    <row c=\"Y4Y7-Q\" ci=\"20000480\" r=\"Syndicate\" ri=\"10000041\" s=\"ZN0-SR V - Moon 7 - Intaki Bank Depository\" se=\"0.0\" si=\"60013363\" sy=\"ZN0-SR\" syi=\"30003289\"/>\r\n    <row c=\"Y4Y7-Q\" ci=\"20000480\" r=\"Syndicate\" ri=\"10000041\" s=\"ZN0-SR III - Intaki Bank Depository\" se=\"0.0\" si=\"60013366\" sy=\"ZN0-SR\" syi=\"30003289\"/>\r\n    <row c=\"YFN-UN\" ci=\"20000484\" r=\"Syndicate\" ri=\"10000041\" s=\"TXW-EI I - Intaki Bank Depository\" se=\"0.0\" si=\"60013369\" sy=\"TXW-EI\" syi=\"30003323\"/>\r\n    <row c=\"YFN-UN\" ci=\"20000484\" r=\"Syndicate\" ri=\"10000041\" s=\"TXW-EI IX - Moon 2 - Intaki Bank Depository\" se=\"0.0\" si=\"60013372\" sy=\"TXW-EI\" syi=\"30003323\"/>\r\n    <row c=\"59H-0G\" ci=\"20000487\" r=\"Syndicate\" ri=\"10000041\" s=\"KLYN-8 II - Moon 14 - Intaki Bank Depository\" se=\"0.0\" si=\"60013375\" sy=\"KLYN-8\" syi=\"30003344\"/>\r\n    <row c=\"59H-0G\" ci=\"20000487\" r=\"Syndicate\" ri=\"10000041\" s=\"D85-VD VII - Intaki Bank Vault\" se=\"0.0\" si=\"60013378\" sy=\"D85-VD\" syi=\"30003345\"/>\r\n    <row c=\"Z-6NQ6\" ci=\"20000478\" r=\"Syndicate\" ri=\"10000041\" s=\"F67E-Q VIII - Moon 2 - Intaki Commerce Trading Post\" se=\"0.0\" si=\"60013381\" sy=\"F67E-Q\" syi=\"30003269\"/>\r\n    <row c=\"Z-6NQ6\" ci=\"20000478\" r=\"Syndicate\" ri=\"10000041\" s=\"X-M2LR VI - Moon 8 - Intaki Commerce Warehouse\" se=\"0.0\" si=\"60013384\" sy=\"X-M2LR\" syi=\"30003278\"/>\r\n    <row c=\"Y4Y7-Q\" ci=\"20000480\" r=\"Syndicate\" ri=\"10000041\" s=\"PC9-AY III - Intaki Commerce Trading Post\" se=\"0.0\" si=\"60013387\" sy=\"PC9-AY\" syi=\"30003286\"/>\r\n    <row c=\"Y4Y7-Q\" ci=\"20000480\" r=\"Syndicate\" ri=\"10000041\" s=\"PC9-AY VIII - Moon 7 - Intaki Commerce Warehouse\" se=\"0.0\" si=\"60013390\" sy=\"PC9-AY\" syi=\"30003286\"/>\r\n    <row c=\"MK7-AO\" ci=\"20000483\" r=\"Syndicate\" ri=\"10000041\" s=\"DP34-U V - Moon 1 - Intaki Commerce Trading Post\" se=\"0.0\" si=\"60013393\" sy=\"DP34-U\" syi=\"30003314\"/>\r\n    <row c=\"MK7-AO\" ci=\"20000483\" r=\"Syndicate\" ri=\"10000041\" s=\"MXYS-8 II - Intaki Commerce Warehouse\" se=\"0.0\" si=\"60013396\" sy=\"MXYS-8\" syi=\"30003318\"/>\r\n    <row c=\"JQV5-9\" ci=\"20000491\" r=\"Syndicate\" ri=\"10000041\" s=\"ZV-72W IX - Moon 1 - Intaki Commerce Trading Post\" se=\"0.0\" si=\"60013399\" sy=\"ZV-72W\" syi=\"30003369\"/>\r\n    <row c=\"JQV5-9\" ci=\"20000491\" r=\"Syndicate\" ri=\"10000041\" s=\"98Q-8O VII - Moon 16 - Intaki Commerce Trading Post\" se=\"0.0\" si=\"60013402\" sy=\"98Q-8O\" syi=\"30003373\"/>\r\n    <row c=\"Z-6NQ6\" ci=\"20000478\" r=\"Syndicate\" ri=\"10000041\" s=\"Poitot VI - Moon 17 - Intaki Space Police Assembly Plant\" se=\"0.0\" si=\"60013405\" sy=\"Poitot\" syi=\"30003271\"/>\r\n    <row c=\"Z-6NQ6\" ci=\"20000478\" r=\"Syndicate\" ri=\"10000041\" s=\"FD-MLJ VII - Moon 4 - Intaki Space Police Assembly Plant\" se=\"0.0\" si=\"60013408\" sy=\"FD-MLJ\" syi=\"30003276\"/>\r\n    <row c=\"MK7-AO\" ci=\"20000483\" r=\"Syndicate\" ri=\"10000041\" s=\"IIRH-G VIII - Intaki Space Police Logistic Support\" se=\"0.0\" si=\"60013411\" sy=\"IIRH-G\" syi=\"30003311\"/>\r\n    <row c=\"MK7-AO\" ci=\"20000483\" r=\"Syndicate\" ri=\"10000041\" s=\"I0AB-R VI - Intaki Space Police Assembly Plant\" se=\"0.0\" si=\"60013414\" sy=\"I0AB-R\" syi=\"30003317\"/>\r\n    <row c=\"Y4Y7-Q\" ci=\"20000480\" r=\"Syndicate\" ri=\"10000041\" s=\"T22-QI VI - Moon 9 - Intaki Space Police Testing Facilities\" se=\"0.0\" si=\"60013417\" sy=\"T22-QI\" syi=\"30003287\"/>\r\n    <row c=\"Y4Y7-Q\" ci=\"20000480\" r=\"Syndicate\" ri=\"10000041\" s=\"ZN0-SR VI - Moon 4 - Intaki Space Police Assembly Plant\" se=\"0.0\" si=\"60013420\" sy=\"ZN0-SR\" syi=\"30003289\"/>\r\n    <row c=\"QS-FVH\" ci=\"20000488\" r=\"Syndicate\" ri=\"10000041\" s=\"RLL-9R IX - Intaki Space Police Assembly Plant\" se=\"0.0\" si=\"60013423\" sy=\"RLL-9R\" syi=\"30003353\"/>\r\n    <row c=\"QS-FVH\" ci=\"20000488\" r=\"Syndicate\" ri=\"10000041\" s=\"57-YRU IV - Moon 9 - Intaki Space Police Logistic Support\" se=\"0.0\" si=\"60013426\" sy=\"57-YRU\" syi=\"30003350\"/>\r\n    <row c=\"6-V49K\" ci=\"20000489\" r=\"Syndicate\" ri=\"10000041\" s=\"EF-F36 III - Moon 1 - Intaki Space Police Logistic Support\" se=\"0.0\" si=\"60013429\" sy=\"EF-F36\" syi=\"30003355\"/>\r\n    <row c=\"6-V49K\" ci=\"20000489\" r=\"Syndicate\" ri=\"10000041\" s=\"GRNJ-3 III - Intaki Space Police Testing Facilities\" se=\"0.0\" si=\"60013432\" sy=\"GRNJ-3\" syi=\"30003360\"/>\r\n    <row c=\"GN-ACS\" ci=\"20000486\" r=\"Syndicate\" ri=\"10000041\" s=\"9GYL-O V - Moon 13 - Intaki Space Police Assembly Plant\" se=\"0.0\" si=\"60013435\" sy=\"9GYL-O\" syi=\"30003338\"/>\r\n    <row c=\"GN-ACS\" ci=\"20000486\" r=\"Syndicate\" ri=\"10000041\" s=\"VLGD-R V - Moon 3 - Intaki Space Police Logistic Support\" se=\"0.0\" si=\"60013438\" sy=\"VLGD-R\" syi=\"30003339\"/>\r\n    <row c=\"DS-M4Q\" ci=\"20000481\" r=\"Syndicate\" ri=\"10000041\" s=\"V4-L0X IV - Moon 1 - Intaki Space Police Assembly Plant\" se=\"0.0\" si=\"60013441\" sy=\"V4-L0X\" syi=\"30003294\"/>\r\n    <row c=\"DS-M4Q\" ci=\"20000481\" r=\"Syndicate\" ri=\"10000041\" s=\"1-NKVT X - Intaki Space Police Logistic Support\" se=\"0.0\" si=\"60013444\" sy=\"1-NKVT\" syi=\"30003297\"/>\r\n    <row c=\"JQV5-9\" ci=\"20000491\" r=\"Syndicate\" ri=\"10000041\" s=\"S-U8A4 V - Intaki Space Police Logistic Support\" se=\"0.0\" si=\"60013447\" sy=\"S-U8A4\" syi=\"30003368\"/>\r\n    <row c=\"JQV5-9\" ci=\"20000491\" r=\"Syndicate\" ri=\"10000041\" s=\"98Q-8O V - Moon 8 - Intaki Space Police Assembly Plant\" se=\"0.0\" si=\"60013450\" sy=\"98Q-8O\" syi=\"30003373\"/>\r\n    <row c=\"59H-0G\" ci=\"20000487\" r=\"Syndicate\" ri=\"10000041\" s=\"Y-W6GF VIII - Moon 17 - Intaki Space Police Logistic Support\" se=\"0.0\" si=\"60013453\" sy=\"Y-W6GF\" syi=\"30003342\"/>\r\n    <row c=\"59H-0G\" ci=\"20000487\" r=\"Syndicate\" ri=\"10000041\" s=\"KFR-ZE VII - Moon 6 - Intaki Space Police Assembly Plant\" se=\"0.0\" si=\"60013456\" sy=\"KFR-ZE\" syi=\"30003343\"/>\r\n    <row c=\"49A-BZ\" ci=\"20000485\" r=\"Syndicate\" ri=\"10000041\" s=\"0LTQ-C V - Moon 18 - Intaki Space Police Assembly Plant\" se=\"0.0\" si=\"60013459\" sy=\"0LTQ-C\" syi=\"30003330\"/>\r\n    <row c=\"49A-BZ\" ci=\"20000485\" r=\"Syndicate\" ri=\"10000041\" s=\"BMNV-P XI - Moon 11 - Intaki Space Police Assembly Plant\" se=\"0.0\" si=\"60013462\" sy=\"BMNV-P\" syi=\"30003327\"/>\r\n    <row c=\"Z-6NQ6\" ci=\"20000478\" r=\"Syndicate\" ri=\"10000041\" s=\"Poitot V - Moon 14 - Intaki Syndicate Bureau\" se=\"0.0\" si=\"60013465\" sy=\"Poitot\" syi=\"30003271\"/>\r\n    <row c=\"Z-6NQ6\" ci=\"20000478\" r=\"Syndicate\" ri=\"10000041\" s=\"2X-PQG III - Moon 17 - Intaki Syndicate Academy\" se=\"0.0\" si=\"60013468\" sy=\"2X-PQG\" syi=\"30003275\"/>\r\n    <row c=\"Z-6NQ6\" ci=\"20000478\" r=\"Syndicate\" ri=\"10000041\" s=\"K5-JRD VIII - Moon 2 - Intaki Syndicate Bureau\" se=\"0.0\" si=\"60013471\" sy=\"K5-JRD\" syi=\"30003279\"/>\r\n    <row c=\"GN-ACS\" ci=\"20000486\" r=\"Syndicate\" ri=\"10000041\" s=\"9GYL-O VI - Moon 16 - Intaki Syndicate Bureau\" se=\"0.0\" si=\"60013474\" sy=\"9GYL-O\" syi=\"30003338\"/>\r\n    <row c=\"GN-ACS\" ci=\"20000486\" r=\"Syndicate\" ri=\"10000041\" s=\"VLGD-R III - Moon 2 - Intaki Syndicate Academy\" se=\"0.0\" si=\"60013477\" sy=\"VLGD-R\" syi=\"30003339\"/>\r\n    <row c=\"GN-ACS\" ci=\"20000486\" r=\"Syndicate\" ri=\"10000041\" s=\"9GYL-O V - Moon 9 - Intaki Syndicate Bureau\" se=\"0.0\" si=\"60013480\" sy=\"9GYL-O\" syi=\"30003338\"/>\r\n    <row c=\"49A-BZ\" ci=\"20000485\" r=\"Syndicate\" ri=\"10000041\" s=\"RF-GGF V - Intaki Syndicate Academy\" se=\"0.0\" si=\"60013483\" sy=\"RF-GGF\" syi=\"30003333\"/>\r\n    <row c=\"49A-BZ\" ci=\"20000485\" r=\"Syndicate\" ri=\"10000041\" s=\"A-SJ8X VII - Moon 1 - Intaki Syndicate Bureau\" se=\"0.0\" si=\"60013486\" sy=\"A-SJ8X\" syi=\"30003335\"/>\r\n    <row c=\"49A-BZ\" ci=\"20000485\" r=\"Syndicate\" ri=\"10000041\" s=\"31-MLU X - Moon 8 - Intaki Syndicate Bureau\" se=\"0.0\" si=\"60013489\" sy=\"31-MLU\" syi=\"30003329\"/>\r\n    <row c=\"TA-A7V\" ci=\"20000482\" r=\"Syndicate\" ri=\"10000041\" s=\"A-ZLHX VII - Moon 2 - Intaki Syndicate Bureau\" se=\"0.0\" si=\"60013492\" sy=\"A-ZLHX\" syi=\"30003305\"/>\r\n    <row c=\"TA-A7V\" ci=\"20000482\" r=\"Syndicate\" ri=\"10000041\" s=\"A-ZLHX XI - Moon 1 - Intaki Syndicate Bureau\" se=\"0.0\" si=\"60013495\" sy=\"A-ZLHX\" syi=\"30003305\"/>\r\n    <row c=\"TA-A7V\" ci=\"20000482\" r=\"Syndicate\" ri=\"10000041\" s=\"Y9G-KS VI - Moon 14 - Intaki Syndicate Bureau\" se=\"0.0\" si=\"60013498\" sy=\"Y9G-KS\" syi=\"30003307\"/>\r\n    <row c=\"SKX-PL\" ci=\"20000490\" r=\"Syndicate\" ri=\"10000041\" s=\"CIS-7X VII - Intaki Syndicate Bureau\" se=\"0.0\" si=\"60013501\" sy=\"CIS-7X\" syi=\"30003363\"/>\r\n    <row c=\"SKX-PL\" ci=\"20000490\" r=\"Syndicate\" ri=\"10000041\" s=\"VSIG-K VIII - Moon 1 - Intaki Syndicate Bureau\" se=\"0.0\" si=\"60013504\" sy=\"VSIG-K\" syi=\"30003361\"/>\r\n    <row c=\"SKX-PL\" ci=\"20000490\" r=\"Syndicate\" ri=\"10000041\" s=\"CIS-7X IX - Moon 6 - Intaki Syndicate Bureau\" se=\"0.0\" si=\"60013507\" sy=\"CIS-7X\" syi=\"30003363\"/>\r\n    <row c=\"59H-0G\" ci=\"20000487\" r=\"Syndicate\" ri=\"10000041\" s=\"Y-W6GF IX - Moon 3 - Intaki Syndicate Bureau\" se=\"0.0\" si=\"60013510\" sy=\"Y-W6GF\" syi=\"30003342\"/>\r\n    <row c=\"59H-0G\" ci=\"20000487\" r=\"Syndicate\" ri=\"10000041\" s=\"KLYN-8 IV - Moon 21 - Intaki Syndicate Bureau\" se=\"0.0\" si=\"60013513\" sy=\"KLYN-8\" syi=\"30003344\"/>\r\n    <row c=\"59H-0G\" ci=\"20000487\" r=\"Syndicate\" ri=\"10000041\" s=\"KLYN-8 IV - Moon 14 - Intaki Syndicate Academy\" se=\"0.0\" si=\"60013516\" sy=\"KLYN-8\" syi=\"30003344\"/>\r\n    <row c=\"Y4Y7-Q\" ci=\"20000480\" r=\"Syndicate\" ri=\"10000041\" s=\"T22-QI VI - Moon 12 - Intaki Syndicate Academy\" se=\"0.0\" si=\"60013519\" sy=\"T22-QI\" syi=\"30003287\"/>\r\n    <row c=\"Y4Y7-Q\" ci=\"20000480\" r=\"Syndicate\" ri=\"10000041\" s=\"T22-QI VI - Moon 6 - Intaki Syndicate Academy\" se=\"0.0\" si=\"60013522\" sy=\"T22-QI\" syi=\"30003287\"/>\r\n    <row c=\"Y4Y7-Q\" ci=\"20000480\" r=\"Syndicate\" ri=\"10000041\" s=\"T22-QI V - Moon 14 - Intaki Syndicate Academy\" se=\"0.0\" si=\"60013525\" sy=\"T22-QI\" syi=\"30003287\"/>\r\n    <row c=\"YFN-UN\" ci=\"20000484\" r=\"Syndicate\" ri=\"10000041\" s=\"3MOG-V X - Moon 2 - Intaki Syndicate Bureau\" se=\"0.0\" si=\"60013528\" sy=\"3MOG-V\" syi=\"30003324\"/>\r\n    <row c=\"YFN-UN\" ci=\"20000484\" r=\"Syndicate\" ri=\"10000041\" s=\"3KNK-A IX - Moon 12 - Intaki Syndicate Bureau\" se=\"0.0\" si=\"60013531\" sy=\"3KNK-A\" syi=\"30003322\"/>\r\n    <row c=\"YFN-UN\" ci=\"20000484\" r=\"Syndicate\" ri=\"10000041\" s=\"5-FGQI V - Moon 13 - Intaki Syndicate Academy\" se=\"0.0\" si=\"60013534\" sy=\"5-FGQI\" syi=\"30003321\"/>\r\n    <row c=\"MK7-AO\" ci=\"20000483\" r=\"Syndicate\" ri=\"10000041\" s=\"I0AB-R VI - Moon 2 - Intaki Syndicate Bureau\" se=\"0.0\" si=\"60013537\" sy=\"I0AB-R\" syi=\"30003317\"/>\r\n    <row c=\"MK7-AO\" ci=\"20000483\" r=\"Syndicate\" ri=\"10000041\" s=\"35-RK9 IX - Moon 4 - Intaki Syndicate Bureau\" se=\"0.0\" si=\"60013540\" sy=\"35-RK9\" syi=\"30003312\"/>\r\n    <row c=\"MK7-AO\" ci=\"20000483\" r=\"Syndicate\" ri=\"10000041\" s=\"MXYS-8 IV - Moon 1 - Intaki Syndicate Treasury\" se=\"0.0\" si=\"60013543\" sy=\"MXYS-8\" syi=\"30003318\"/>\r\n    <row c=\"2-M6DE\" ci=\"20000479\" r=\"Syndicate\" ri=\"10000041\" s=\"M2-CF1 X - Moon 3 - Intaki Syndicate Bureau\" se=\"0.0\" si=\"60013546\" sy=\"M2-CF1\" syi=\"30003284\"/>\r\n    <row c=\"2-M6DE\" ci=\"20000479\" r=\"Syndicate\" ri=\"10000041\" s=\"6-CZ49 VI - Moon 6 - Intaki Syndicate Bureau\" se=\"0.0\" si=\"60013549\" sy=\"6-CZ49\" syi=\"30003280\"/>\r\n    <row c=\"2-M6DE\" ci=\"20000479\" r=\"Syndicate\" ri=\"10000041\" s=\"EZA-FM IV - Intaki Syndicate Bureau\" se=\"0.0\" si=\"60013552\" sy=\"EZA-FM\" syi=\"30003281\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"54-VNO XI - Moon 2 - Jove Navy Testing Facilities\" se=\"0.0\" si=\"60013555\" sy=\"54-VNO\" syi=\"30001480\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"54-VNO V - Moon 2 - Jove Navy Assembly Plant\" se=\"0.0\" si=\"60013558\" sy=\"54-VNO\" syi=\"30001480\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"54-VNO X - Jove Navy Assembly Plant\" se=\"0.0\" si=\"60013561\" sy=\"54-VNO\" syi=\"30001480\"/>\r\n    <row c=\"UN2H-D\" ci=\"20000241\" r=\"A821-A\" ri=\"10000019\" s=\"T-YWDD VII - Moon 13 - Jove Navy Assembly Plant\" se=\"0.0\" si=\"60013564\" sy=\"T-YWDD\" syi=\"30001631\"/>\r\n    <row c=\"UN2H-D\" ci=\"20000241\" r=\"A821-A\" ri=\"10000019\" s=\"T-C5A0 X - Moon 9 - Jove Navy Logistic Support\" se=\"0.0\" si=\"60013567\" sy=\"T-C5A0\" syi=\"30001633\"/>\r\n    <row c=\"UN2H-D\" ci=\"20000241\" r=\"A821-A\" ri=\"10000019\" s=\"DLY-RG VIII - Moon 3 - Jove Navy Assembly Plant\" se=\"0.0\" si=\"60013570\" sy=\"DLY-RG\" syi=\"30001632\"/>\r\n    <row c=\"NSM-6F\" ci=\"20000220\" r=\"J7HZ-F\" ri=\"10000017\" s=\"6-NCE7 IV - Jove Navy Logistic Support\" se=\"0.0\" si=\"60013573\" sy=\"6-NCE7\" syi=\"30001492\"/>\r\n    <row c=\"NSM-6F\" ci=\"20000220\" r=\"J7HZ-F\" ri=\"10000017\" s=\"CZ-CED IV - Moon 18 - Jove Navy Assembly Plant\" se=\"0.0\" si=\"60013576\" sy=\"CZ-CED\" syi=\"30001496\"/>\r\n    <row c=\"NSM-6F\" ci=\"20000220\" r=\"J7HZ-F\" ri=\"10000017\" s=\"L-TPN0 II - Moon 2 - Jove Navy Testing Facilities\" se=\"0.0\" si=\"60013579\" sy=\"L-TPN0\" syi=\"30001499\"/>\r\n    <row c=\"B9J-NT\" ci=\"20000240\" r=\"A821-A\" ri=\"10000019\" s=\"69A-54 VIII - Jove Navy Assembly Plant\" se=\"0.0\" si=\"60013582\" sy=\"69A-54\" syi=\"30001624\"/>\r\n    <row c=\"B9J-NT\" ci=\"20000240\" r=\"A821-A\" ri=\"10000019\" s=\"BWO-UU VIII - Jove Navy Testing Facilities\" se=\"0.0\" si=\"60013585\" sy=\"BWO-UU\" syi=\"30001629\"/>\r\n    <row c=\"B9J-NT\" ci=\"20000240\" r=\"A821-A\" ri=\"10000019\" s=\"PQWA-L VII - Jove Navy Assembly Plant\" se=\"0.0\" si=\"60013588\" sy=\"PQWA-L\" syi=\"30001628\"/>\r\n    <row c=\"3A-CND\" ci=\"20000224\" r=\"J7HZ-F\" ri=\"10000017\" s=\"1C-TD6 X - Moon 4 - Jove Navy Testing Facilities\" se=\"0.0\" si=\"60013591\" sy=\"1C-TD6\" syi=\"30001524\"/>\r\n    <row c=\"3A-CND\" ci=\"20000224\" r=\"J7HZ-F\" ri=\"10000017\" s=\"TO21-U VIII - Moon 1 - Jove Navy Assembly Plant\" se=\"0.0\" si=\"60013594\" sy=\"TO21-U\" syi=\"30001519\"/>\r\n    <row c=\"3A-CND\" ci=\"20000224\" r=\"J7HZ-F\" ri=\"10000017\" s=\"H7OL-I IV - Moon 6 - Jove Navy Assembly Plant\" se=\"0.0\" si=\"60013597\" sy=\"H7OL-I\" syi=\"30001518\"/>\r\n    <row c=\"1-Z95W\" ci=\"20000213\" r=\"J7HZ-F\" ri=\"10000017\" s=\"SQ-2XA II - Jove Navy Testing Facilities\" se=\"0.0\" si=\"60013600\" sy=\"SQ-2XA\" syi=\"30001453\"/>\r\n    <row c=\"1-Z95W\" ci=\"20000213\" r=\"J7HZ-F\" ri=\"10000017\" s=\"SQ-2XA IV - Jove Navy Testing Facilities\" se=\"0.0\" si=\"60013603\" sy=\"SQ-2XA\" syi=\"30001453\"/>\r\n    <row c=\"1-Z95W\" ci=\"20000213\" r=\"J7HZ-F\" ri=\"10000017\" s=\"PZP1-D IX - Moon 5 - Jove Navy Assembly Plant\" se=\"0.0\" si=\"60013606\" sy=\"PZP1-D\" syi=\"30001449\"/>\r\n    <row c=\"O-BSIB\" ci=\"20000236\" r=\"A821-A\" ri=\"10000019\" s=\"6-HFD6 V - Moon 14 - Jove Navy Assembly Plant\" se=\"0.0\" si=\"60013609\" sy=\"6-HFD6\" syi=\"30001603\"/>\r\n    <row c=\"O-BSIB\" ci=\"20000236\" r=\"A821-A\" ri=\"10000019\" s=\"6-HFD6 V - Moon 19 - Jove Navy Assembly Plant\" se=\"0.0\" si=\"60013612\" sy=\"6-HFD6\" syi=\"30001603\"/>\r\n    <row c=\"O-BSIB\" ci=\"20000236\" r=\"A821-A\" ri=\"10000019\" s=\"9-BUSQ VII - Moon 4 - Jove Navy Assembly Plant\" se=\"0.0\" si=\"60013615\" sy=\"9-BUSQ\" syi=\"30001600\"/>\r\n    <row c=\"2RX9-6\" ci=\"20000223\" r=\"J7HZ-F\" ri=\"10000017\" s=\"8-ULAA VI - Moon 13 - Jove Navy Testing Facilities\" se=\"0.0\" si=\"60013618\" sy=\"8-ULAA\" syi=\"30001514\"/>\r\n    <row c=\"2RX9-6\" ci=\"20000223\" r=\"J7HZ-F\" ri=\"10000017\" s=\"H-EDXD VIII - Moon 3 - Jove Navy Assembly Plant\" se=\"0.0\" si=\"60013621\" sy=\"H-EDXD\" syi=\"30001513\"/>\r\n    <row c=\"2RX9-6\" ci=\"20000223\" r=\"J7HZ-F\" ri=\"10000017\" s=\"KF1-DU VII - Moon 3 - Jove Navy Assembly Plant\" se=\"0.0\" si=\"60013624\" sy=\"KF1-DU\" syi=\"30001515\"/>\r\n    <row c=\"D-YMGR\" ci=\"20000222\" r=\"J7HZ-F\" ri=\"10000017\" s=\"I9D-0D VI - Moon 3 - Jove Navy Assembly Plant\" se=\"0.0\" si=\"60013627\" sy=\"I9D-0D\" syi=\"30001508\"/>\r\n    <row c=\"D-YMGR\" ci=\"20000222\" r=\"J7HZ-F\" ri=\"10000017\" s=\"LH-J8H X - Moon 1 - Jove Navy Assembly Plant\" se=\"0.0\" si=\"60013630\" sy=\"LH-J8H\" syi=\"30001507\"/>\r\n    <row c=\"D-YMGR\" ci=\"20000222\" r=\"J7HZ-F\" ri=\"10000017\" s=\"I9D-0D II - Jove Navy Assembly Plant\" se=\"0.0\" si=\"60013633\" sy=\"I9D-0D\" syi=\"30001508\"/>\r\n    <row c=\"F-0CTG\" ci=\"20000242\" r=\"A821-A\" ri=\"10000019\" s=\"0IRK-R IX - Jove Navy Testing Facilities\" se=\"0.0\" si=\"60013636\" sy=\"0IRK-R\" syi=\"30001643\"/>\r\n    <row c=\"F-0CTG\" ci=\"20000242\" r=\"A821-A\" ri=\"10000019\" s=\"FR-RCH IV - Moon 2 - Jove Navy Assembly Plant\" se=\"0.0\" si=\"60013639\" sy=\"FR-RCH\" syi=\"30001637\"/>\r\n    <row c=\"F-0CTG\" ci=\"20000242\" r=\"A821-A\" ri=\"10000019\" s=\"FNS3-F VII - Moon 7 - Jove Navy Logistic Support\" se=\"0.0\" si=\"60013642\" sy=\"FNS3-F\" syi=\"30001638\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"54-VNO X - Moon 3 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013645\" sy=\"54-VNO\" syi=\"30001480\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"PBXG-A IV - Moon 3 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013648\" sy=\"PBXG-A\" syi=\"30001483\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"PBXG-A IV - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013651\" sy=\"PBXG-A\" syi=\"30001483\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"54-VNO VI - Moon 1 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013654\" sy=\"54-VNO\" syi=\"30001480\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"IAMZ-5 XII - Moon 2 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013657\" sy=\"IAMZ-5\" syi=\"30001481\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"54-VNO VIII - Moon 3 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013660\" sy=\"54-VNO\" syi=\"30001480\"/>\r\n    <row c=\"F-0CTG\" ci=\"20000242\" r=\"A821-A\" ri=\"10000019\" s=\"7BA-TK VI - Moon 4 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013663\" sy=\"7BA-TK\" syi=\"30001639\"/>\r\n    <row c=\"F-0CTG\" ci=\"20000242\" r=\"A821-A\" ri=\"10000019\" s=\"FR-RCH I - Moon 11 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013666\" sy=\"FR-RCH\" syi=\"30001637\"/>\r\n    <row c=\"F-0CTG\" ci=\"20000242\" r=\"A821-A\" ri=\"10000019\" s=\"0IRK-R VIII - Moon 3 - Jovian Directorate Academy\" se=\"0.0\" si=\"60013669\" sy=\"0IRK-R\" syi=\"30001643\"/>\r\n    <row c=\"F-0CTG\" ci=\"20000242\" r=\"A821-A\" ri=\"10000019\" s=\"FR-RCH I - Moon 10 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013672\" sy=\"FR-RCH\" syi=\"30001637\"/>\r\n    <row c=\"F-0CTG\" ci=\"20000242\" r=\"A821-A\" ri=\"10000019\" s=\"7BA-TK III - Moon 2 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013675\" sy=\"7BA-TK\" syi=\"30001639\"/>\r\n    <row c=\"F-0CTG\" ci=\"20000242\" r=\"A821-A\" ri=\"10000019\" s=\"FNS3-F VII - Moon 3 - Jovian Directorate Academy\" se=\"0.0\" si=\"60013678\" sy=\"FNS3-F\" syi=\"30001638\"/>\r\n    <row c=\"UN2H-D\" ci=\"20000241\" r=\"A821-A\" ri=\"10000019\" s=\"T-YWDD VII - Moon 18 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013681\" sy=\"T-YWDD\" syi=\"30001631\"/>\r\n    <row c=\"UN2H-D\" ci=\"20000241\" r=\"A821-A\" ri=\"10000019\" s=\"DLY-RG X - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013684\" sy=\"DLY-RG\" syi=\"30001632\"/>\r\n    <row c=\"UN2H-D\" ci=\"20000241\" r=\"A821-A\" ri=\"10000019\" s=\"T-YWDD VII - Moon 1 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013687\" sy=\"T-YWDD\" syi=\"30001631\"/>\r\n    <row c=\"UN2H-D\" ci=\"20000241\" r=\"A821-A\" ri=\"10000019\" s=\"T-C5A0 XII - Moon 17 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013690\" sy=\"T-C5A0\" syi=\"30001633\"/>\r\n    <row c=\"UN2H-D\" ci=\"20000241\" r=\"A821-A\" ri=\"10000019\" s=\"T-YWDD V - Moon 5 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013693\" sy=\"T-YWDD\" syi=\"30001631\"/>\r\n    <row c=\"UN2H-D\" ci=\"20000241\" r=\"A821-A\" ri=\"10000019\" s=\"T-YWDD VI - Moon 21 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013696\" sy=\"T-YWDD\" syi=\"30001631\"/>\r\n    <row c=\"4I-WP1\" ci=\"20000219\" r=\"J7HZ-F\" ri=\"10000017\" s=\"FO-3PJ III - Moon 2 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013699\" sy=\"FO-3PJ\" syi=\"30001487\"/>\r\n    <row c=\"4I-WP1\" ci=\"20000219\" r=\"J7HZ-F\" ri=\"10000017\" s=\"FO-3PJ VI - Moon 11 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013702\" sy=\"FO-3PJ\" syi=\"30001487\"/>\r\n    <row c=\"4I-WP1\" ci=\"20000219\" r=\"J7HZ-F\" ri=\"10000017\" s=\"X7-8IG VIII - Moon 9 - Jovian Directorate Treasury\" se=\"0.0\" si=\"60013705\" sy=\"X7-8IG\" syi=\"30001490\"/>\r\n    <row c=\"4I-WP1\" ci=\"20000219\" r=\"J7HZ-F\" ri=\"10000017\" s=\"FO-3PJ III - Moon 10 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013708\" sy=\"FO-3PJ\" syi=\"30001487\"/>\r\n    <row c=\"4I-WP1\" ci=\"20000219\" r=\"J7HZ-F\" ri=\"10000017\" s=\"6-QXE6 VI - Moon 22 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013711\" sy=\"6-QXE6\" syi=\"30001488\"/>\r\n    <row c=\"4I-WP1\" ci=\"20000219\" r=\"J7HZ-F\" ri=\"10000017\" s=\"N-FKXV V - Moon 12 - Jovian Directorate Academy\" se=\"0.0\" si=\"60013714\" sy=\"N-FKXV\" syi=\"30001489\"/>\r\n    <row c=\"3A-CND\" ci=\"20000224\" r=\"J7HZ-F\" ri=\"10000017\" s=\"H7OL-I III - Moon 3 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013717\" sy=\"H7OL-I\" syi=\"30001518\"/>\r\n    <row c=\"3A-CND\" ci=\"20000224\" r=\"J7HZ-F\" ri=\"10000017\" s=\"1C-TD6 VIII - Moon 2 - Jovian Directorate Treasury\" se=\"0.0\" si=\"60013720\" sy=\"1C-TD6\" syi=\"30001524\"/>\r\n    <row c=\"3A-CND\" ci=\"20000224\" r=\"J7HZ-F\" ri=\"10000017\" s=\"H7OL-I IV - Moon 10 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013723\" sy=\"H7OL-I\" syi=\"30001518\"/>\r\n    <row c=\"3A-CND\" ci=\"20000224\" r=\"J7HZ-F\" ri=\"10000017\" s=\"1C-TD6 X - Moon 16 - Jovian Directorate Treasury\" se=\"0.0\" si=\"60013726\" sy=\"1C-TD6\" syi=\"30001524\"/>\r\n    <row c=\"3A-CND\" ci=\"20000224\" r=\"J7HZ-F\" ri=\"10000017\" s=\"0M-M64 VII - Moon 5 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013729\" sy=\"0M-M64\" syi=\"30001521\"/>\r\n    <row c=\"3A-CND\" ci=\"20000224\" r=\"J7HZ-F\" ri=\"10000017\" s=\"YBYX-1 I - Jovian Directorate Academy\" se=\"0.0\" si=\"60013732\" sy=\"YBYX-1\" syi=\"30001525\"/>\r\n    <row c=\"826-A5\" ci=\"20000238\" r=\"A821-A\" ri=\"10000019\" s=\"Z-KPAR VIII - Moon 21 - Jovian Directorate Academy\" se=\"0.0\" si=\"60013735\" sy=\"Z-KPAR\" syi=\"30001613\"/>\r\n    <row c=\"826-A5\" ci=\"20000238\" r=\"A821-A\" ri=\"10000019\" s=\"B-Y06L VII - Moon 4 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013738\" sy=\"B-Y06L\" syi=\"30001611\"/>\r\n    <row c=\"826-A5\" ci=\"20000238\" r=\"A821-A\" ri=\"10000019\" s=\"CLDT-L III - Moon 5 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013741\" sy=\"CLDT-L\" syi=\"30001616\"/>\r\n    <row c=\"826-A5\" ci=\"20000238\" r=\"A821-A\" ri=\"10000019\" s=\"CLDT-L IV - Moon 7 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013744\" sy=\"CLDT-L\" syi=\"30001616\"/>\r\n    <row c=\"826-A5\" ci=\"20000238\" r=\"A821-A\" ri=\"10000019\" s=\"2RV-06 VIII - Moon 11 - Jovian Directorate Treasury\" se=\"0.0\" si=\"60013747\" sy=\"2RV-06\" syi=\"30001615\"/>\r\n    <row c=\"826-A5\" ci=\"20000238\" r=\"A821-A\" ri=\"10000019\" s=\"B-Y06L VII - Moon 1 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013750\" sy=\"B-Y06L\" syi=\"30001611\"/>\r\n    <row c=\"B9J-NT\" ci=\"20000240\" r=\"A821-A\" ri=\"10000019\" s=\"BWO-UU VII - Moon 4 - Jovian Directorate Treasury\" se=\"0.0\" si=\"60013753\" sy=\"BWO-UU\" syi=\"30001629\"/>\r\n    <row c=\"B9J-NT\" ci=\"20000240\" r=\"A821-A\" ri=\"10000019\" s=\"8-UWFS II - Jovian Directorate Academy\" se=\"0.0\" si=\"60013756\" sy=\"8-UWFS\" syi=\"30001627\"/>\r\n    <row c=\"B9J-NT\" ci=\"20000240\" r=\"A821-A\" ri=\"10000019\" s=\"69A-54 X - Moon 8 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013759\" sy=\"69A-54\" syi=\"30001624\"/>\r\n    <row c=\"B9J-NT\" ci=\"20000240\" r=\"A821-A\" ri=\"10000019\" s=\"69A-54 X - Moon 12 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013762\" sy=\"69A-54\" syi=\"30001624\"/>\r\n    <row c=\"B9J-NT\" ci=\"20000240\" r=\"A821-A\" ri=\"10000019\" s=\"5V-YL6 VII - Moon 11 - Jovian Directorate Academy\" se=\"0.0\" si=\"60013765\" sy=\"5V-YL6\" syi=\"30001626\"/>\r\n    <row c=\"B9J-NT\" ci=\"20000240\" r=\"A821-A\" ri=\"10000019\" s=\"SQVI-U V - Moon 1 - Jovian Directorate Treasury\" se=\"0.0\" si=\"60013768\" sy=\"SQVI-U\" syi=\"30001630\"/>\r\n    <row c=\"W1-F3U\" ci=\"20000237\" r=\"A821-A\" ri=\"10000019\" s=\"7-8XK0 VII - Moon 8 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013771\" sy=\"7-8XK0\" syi=\"30001608\"/>\r\n    <row c=\"W1-F3U\" ci=\"20000237\" r=\"A821-A\" ri=\"10000019\" s=\"G-N6MC VI - Moon 5 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013774\" sy=\"G-N6MC\" syi=\"30001607\"/>\r\n    <row c=\"W1-F3U\" ci=\"20000237\" r=\"A821-A\" ri=\"10000019\" s=\"7-8XK0 VI - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013777\" sy=\"7-8XK0\" syi=\"30001608\"/>\r\n    <row c=\"W1-F3U\" ci=\"20000237\" r=\"A821-A\" ri=\"10000019\" s=\"P3UD-M VII - Moon 7 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013780\" sy=\"P3UD-M\" syi=\"30001604\"/>\r\n    <row c=\"W1-F3U\" ci=\"20000237\" r=\"A821-A\" ri=\"10000019\" s=\"G-N6MC VI - Moon 9 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013783\" sy=\"G-N6MC\" syi=\"30001607\"/>\r\n    <row c=\"W1-F3U\" ci=\"20000237\" r=\"A821-A\" ri=\"10000019\" s=\"90G-OA XII - Moon 19 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013786\" sy=\"90G-OA\" syi=\"30001609\"/>\r\n    <row c=\"NSM-6F\" ci=\"20000220\" r=\"J7HZ-F\" ri=\"10000017\" s=\"CZ-CED VI - Moon 2 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013789\" sy=\"CZ-CED\" syi=\"30001496\"/>\r\n    <row c=\"NSM-6F\" ci=\"20000220\" r=\"J7HZ-F\" ri=\"10000017\" s=\"L-TPN0 I - Jovian Directorate Academy\" se=\"0.0\" si=\"60013792\" sy=\"L-TPN0\" syi=\"30001499\"/>\r\n    <row c=\"NSM-6F\" ci=\"20000220\" r=\"J7HZ-F\" ri=\"10000017\" s=\"BKK4-H IX - Moon 11 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013795\" sy=\"BKK4-H\" syi=\"30001497\"/>\r\n    <row c=\"NSM-6F\" ci=\"20000220\" r=\"J7HZ-F\" ri=\"10000017\" s=\"L-TPN0 IV - Moon 13 - Jovian Directorate Academy\" se=\"0.0\" si=\"60013798\" sy=\"L-TPN0\" syi=\"30001499\"/>\r\n    <row c=\"NSM-6F\" ci=\"20000220\" r=\"J7HZ-F\" ri=\"10000017\" s=\"CZ-CED VI - Moon 3 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013801\" sy=\"CZ-CED\" syi=\"30001496\"/>\r\n    <row c=\"NSM-6F\" ci=\"20000220\" r=\"J7HZ-F\" ri=\"10000017\" s=\"L-TPN0 IV - Moon 6 - Jovian Directorate Treasury\" se=\"0.0\" si=\"60013804\" sy=\"L-TPN0\" syi=\"30001499\"/>\r\n    <row c=\"F-8DMX\" ci=\"20000221\" r=\"J7HZ-F\" ri=\"10000017\" s=\"3-XORH VI - Moon 1 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013807\" sy=\"3-XORH\" syi=\"30001500\"/>\r\n    <row c=\"F-8DMX\" ci=\"20000221\" r=\"J7HZ-F\" ri=\"10000017\" s=\"6-23NU II - Moon 1 - Jovian Directorate Academy\" se=\"0.0\" si=\"60013810\" sy=\"6-23NU\" syi=\"30001503\"/>\r\n    <row c=\"F-8DMX\" ci=\"20000221\" r=\"J7HZ-F\" ri=\"10000017\" s=\"G1VU-H IX - Moon 18 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013813\" sy=\"G1VU-H\" syi=\"30001501\"/>\r\n    <row c=\"F-8DMX\" ci=\"20000221\" r=\"J7HZ-F\" ri=\"10000017\" s=\"W6H6-K II - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013816\" sy=\"W6H6-K\" syi=\"30001502\"/>\r\n    <row c=\"F-8DMX\" ci=\"20000221\" r=\"J7HZ-F\" ri=\"10000017\" s=\"W6H6-K IV - Moon 15 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013819\" sy=\"W6H6-K\" syi=\"30001502\"/>\r\n    <row c=\"F-8DMX\" ci=\"20000221\" r=\"J7HZ-F\" ri=\"10000017\" s=\"6-23NU V - Moon 13 - Jovian Directorate Bureau\" se=\"0.0\" si=\"60013822\" sy=\"6-23NU\" syi=\"30001503\"/>\r\n    <row c=\"Nohshayess\" ci=\"20000564\" r=\"Khanid\" ri=\"10000049\" s=\"Khanid Prime V - Moon 1 - Khanid Innovation Factory\" se=\"0.9\" si=\"60013825\" sy=\"Khanid Prime\" syi=\"30003863\"/>\r\n    <row c=\"Nohshayess\" ci=\"20000564\" r=\"Khanid\" ri=\"10000049\" s=\"Khanid Prime IX - Khanid Transport Storage\" se=\"0.9\" si=\"60013828\" sy=\"Khanid Prime\" syi=\"30003863\"/>\r\n    <row c=\"Akar\" ci=\"20000572\" r=\"Khanid\" ri=\"10000049\" s=\"Nahrneder VI - Moon 15 - Khanid Transport Storage\" se=\"0.3\" si=\"60013831\" sy=\"Nahrneder\" syi=\"30003922\"/>\r\n    <row c=\"Alpakian\" ci=\"20000575\" r=\"Khanid\" ri=\"10000049\" s=\"Zirsem IX - Khanid Transport Storage\" se=\"0.3\" si=\"60013834\" sy=\"Zirsem\" syi=\"30003939\"/>\r\n    <row c=\"Finaka\" ci=\"20000565\" r=\"Khanid\" ri=\"10000049\" s=\"Kahah I - Khanid Transport Storage\" se=\"0.7\" si=\"60013837\" sy=\"Kahah\" syi=\"30003873\"/>\r\n    <row c=\"Amdimmah\" ci=\"20000566\" r=\"Khanid\" ri=\"10000049\" s=\"Safshela V - Moon 6 - Khanid Transport Storage\" se=\"0.7\" si=\"60013840\" sy=\"Safshela\" syi=\"30003879\"/>\r\n    <row c=\"Fekhoya\" ci=\"20000570\" r=\"Khanid\" ri=\"10000049\" s=\"Bashyam X - Moon 7 - Khanid Transport Storage\" se=\"0.5\" si=\"60013843\" sy=\"Bashyam\" syi=\"30003908\"/>\r\n    <row c=\"Homroon\" ci=\"20000573\" r=\"Khanid\" ri=\"10000049\" s=\"Zephan VIII - Moon 1 - Khanid Transport Storage\" se=\"0.3\" si=\"60013846\" sy=\"Zephan\" syi=\"30003928\"/>\r\n    <row c=\"Arniri\" ci=\"20000571\" r=\"Khanid\" ri=\"10000049\" s=\"Danera III - Moon 3 - Khanid Transport Storage\" se=\"0.6\" si=\"60013849\" sy=\"Danera\" syi=\"30003912\"/>\r\n    <row c=\"Budar\" ci=\"20000574\" r=\"Khanid\" ri=\"10000049\" s=\"Ibani VI - Moon 15 - Khanid Transport Storage\" se=\"0.1\" si=\"60013852\" sy=\"Ibani\" syi=\"30003933\"/>\r\n    <row c=\"Sib\" ci=\"20000568\" r=\"Khanid\" ri=\"10000049\" s=\"Ashi VI - Moon 5 - Khanid Transport Storage\" se=\"0.7\" si=\"60013855\" sy=\"Ashi\" syi=\"30003890\"/>\r\n    <row c=\"Nohshayess\" ci=\"20000564\" r=\"Khanid\" ri=\"10000049\" s=\"Khanid Prime VII - Moon 2 - Khanid Works Shipyard\" se=\"0.9\" si=\"60013858\" sy=\"Khanid Prime\" syi=\"30003863\"/>\r\n    <row c=\"San Matar\" ci=\"20000001\" r=\"Derelik\" ri=\"10000001\" s=\"Yuzier III - Nefantar Miner Association Mining Outpost\" se=\"0.9\" si=\"60013861\" sy=\"Yuzier\" syi=\"30000007\"/>\r\n    <row c=\"Mal\" ci=\"20000014\" r=\"Derelik\" ri=\"10000001\" s=\"Kehrara IV - Nefantar Miner Association Refinery\" se=\"0.4\" si=\"60013864\" sy=\"Kehrara\" syi=\"30000098\"/>\r\n    <row c=\"Mamouna\" ci=\"20000003\" r=\"Derelik\" ri=\"10000001\" s=\"Podion VIII - Moon 15 - Nefantar Miner Association Mining Outpost\" se=\"0.1\" si=\"60013867\" sy=\"Podion\" syi=\"30000019\"/>\r\n    <row c=\"Hevaka\" ci=\"20000005\" r=\"Derelik\" ri=\"10000001\" s=\"Uplingur II - Moon 1 - Nefantar Miner Association Mining Outpost\" se=\"0.4\" si=\"60013870\" sy=\"Uplingur\" syi=\"30000037\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"54-VNO VIII - Moon 3 - Prosper Depository\" se=\"0.0\" si=\"60013873\" sy=\"54-VNO\" syi=\"30001480\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"54-VNO XII - Moon 2 - Prosper Depository\" se=\"0.0\" si=\"60013876\" sy=\"54-VNO\" syi=\"30001480\"/>\r\n    <row c=\"W1-F3U\" ci=\"20000237\" r=\"A821-A\" ri=\"10000019\" s=\"G-N6MC VIII - Moon 9 - Prosper Depository\" se=\"0.0\" si=\"60013879\" sy=\"G-N6MC\" syi=\"30001607\"/>\r\n    <row c=\"W1-F3U\" ci=\"20000237\" r=\"A821-A\" ri=\"10000019\" s=\"7-8XK0 VIII - Moon 5 - Prosper Depository\" se=\"0.0\" si=\"60013882\" sy=\"7-8XK0\" syi=\"30001608\"/>\r\n    <row c=\"3A-CND\" ci=\"20000224\" r=\"J7HZ-F\" ri=\"10000017\" s=\"0M-M64 VI - Prosper Depository\" se=\"0.0\" si=\"60013885\" sy=\"0M-M64\" syi=\"30001521\"/>\r\n    <row c=\"3A-CND\" ci=\"20000224\" r=\"J7HZ-F\" ri=\"10000017\" s=\"TO21-U VII - Prosper Depository\" se=\"0.0\" si=\"60013888\" sy=\"TO21-U\" syi=\"30001519\"/>\r\n    <row c=\"05-1B6\" ci=\"20000215\" r=\"J7HZ-F\" ri=\"10000017\" s=\"E2AX-5 VIII - Moon 1 - Prosper Depository\" se=\"0.0\" si=\"60013891\" sy=\"E2AX-5\" syi=\"30001462\"/>\r\n    <row c=\"05-1B6\" ci=\"20000215\" r=\"J7HZ-F\" ri=\"10000017\" s=\"HPE-KP VI - Moon 7 - Prosper Depository\" se=\"0.0\" si=\"60013894\" sy=\"HPE-KP\" syi=\"30001463\"/>\r\n    <row c=\"O-BSIB\" ci=\"20000236\" r=\"A821-A\" ri=\"10000019\" s=\"0Z-VHC VI - Moon 12 - Prosper Depository\" se=\"0.0\" si=\"60013897\" sy=\"0Z-VHC\" syi=\"30001599\"/>\r\n    <row c=\"O-BSIB\" ci=\"20000236\" r=\"A821-A\" ri=\"10000019\" s=\"6-HFD6 V - Moon 1 - Prosper Depository\" se=\"0.0\" si=\"60013900\" sy=\"6-HFD6\" syi=\"30001603\"/>\r\n    <row c=\"F-0CTG\" ci=\"20000242\" r=\"A821-A\" ri=\"10000019\" s=\"3-CE1R VIII - Moon 5 - Prosper Vault\" se=\"0.0\" si=\"60013903\" sy=\"3-CE1R\" syi=\"30001642\"/>\r\n    <row c=\"F-0CTG\" ci=\"20000242\" r=\"A821-A\" ri=\"10000019\" s=\"IAWJ-X VI - Moon 16 - Prosper Depository\" se=\"0.0\" si=\"60013906\" sy=\"IAWJ-X\" syi=\"30001640\"/>\r\n    <row c=\"F-8DMX\" ci=\"20000221\" r=\"J7HZ-F\" ri=\"10000017\" s=\"J-JS0D VIII - Moon 15 - Prosper Vault\" se=\"0.0\" si=\"60013909\" sy=\"J-JS0D\" syi=\"30001505\"/>\r\n    <row c=\"F-8DMX\" ci=\"20000221\" r=\"J7HZ-F\" ri=\"10000017\" s=\"J-JS0D IX - Moon 8 - Prosper Vault\" se=\"0.0\" si=\"60013912\" sy=\"J-JS0D\" syi=\"30001505\"/>\r\n    <row c=\"B9J-NT\" ci=\"20000240\" r=\"A821-A\" ri=\"10000019\" s=\"PQWA-L XI - Moon 6 - Prosper Depository\" se=\"0.0\" si=\"60013915\" sy=\"PQWA-L\" syi=\"30001628\"/>\r\n    <row c=\"B9J-NT\" ci=\"20000240\" r=\"A821-A\" ri=\"10000019\" s=\"M9-OS2 I - Moon 1 - Prosper Depository\" se=\"0.0\" si=\"60013918\" sy=\"M9-OS2\" syi=\"30001625\"/>\r\n    <row c=\"BS8-ZQ\" ci=\"20000217\" r=\"J7HZ-F\" ri=\"10000017\" s=\"QO-3LC IV - Moon 2 - Prosper Depository\" se=\"0.0\" si=\"60013921\" sy=\"QO-3LC\" syi=\"30001473\"/>\r\n    <row c=\"BS8-ZQ\" ci=\"20000217\" r=\"J7HZ-F\" ri=\"10000017\" s=\"5-P3CQ VIII - Moon 5 - Prosper Depository\" se=\"0.0\" si=\"60013924\" sy=\"5-P3CQ\" syi=\"30001478\"/>\r\n    <row c=\"826-A5\" ci=\"20000238\" r=\"A821-A\" ri=\"10000019\" s=\"B-Y06L VII - Moon 2 - Prosper Depository\" se=\"0.0\" si=\"60013927\" sy=\"B-Y06L\" syi=\"30001611\"/>\r\n    <row c=\"826-A5\" ci=\"20000238\" r=\"A821-A\" ri=\"10000019\" s=\"QU7-EE V - Moon 7 - Prosper Vault\" se=\"0.0\" si=\"60013930\" sy=\"QU7-EE\" syi=\"30001617\"/>\r\n    <row c=\"Nohshayess\" ci=\"20000564\" r=\"Khanid\" ri=\"10000049\" s=\"Kihtaled VIII - Moon 7 - Royal Khanid Navy Assembly Plant\" se=\"0.9\" si=\"60013933\" sy=\"Kihtaled\" syi=\"30003860\"/>\r\n    <row c=\"Nohshayess\" ci=\"20000564\" r=\"Khanid\" ri=\"10000049\" s=\"Kihtaled VIII - Royal Khanid Navy Assembly Plant\" se=\"0.9\" si=\"60013936\" sy=\"Kihtaled\" syi=\"30003860\"/>\r\n    <row c=\"Alpakian\" ci=\"20000575\" r=\"Khanid\" ri=\"10000049\" s=\"Zirsem VII - Royal Khanid Navy Testing Facilities\" se=\"0.3\" si=\"60013939\" sy=\"Zirsem\" syi=\"30003939\"/>\r\n    <row c=\"Alpakian\" ci=\"20000575\" r=\"Khanid\" ri=\"10000049\" s=\"Zirsem IX - Moon 4 - Royal Khanid Navy Testing Facilities\" se=\"0.3\" si=\"60013942\" sy=\"Zirsem\" syi=\"30003939\"/>\r\n    <row c=\"Budar\" ci=\"20000574\" r=\"Khanid\" ri=\"10000049\" s=\"Irmalin VIII - Moon 13 - Royal Khanid Navy Testing Facilities\" se=\"0.1\" si=\"60013945\" sy=\"Irmalin\" syi=\"30003935\"/>\r\n    <row c=\"Budar\" ci=\"20000574\" r=\"Khanid\" ri=\"10000049\" s=\"Goudiyah VIII - Moon 1 - Royal Khanid Navy Logistic Support\" se=\"0.1\" si=\"60013948\" sy=\"Goudiyah\" syi=\"30003930\"/>\r\n    <row c=\"Arniri\" ci=\"20000571\" r=\"Khanid\" ri=\"10000049\" s=\"Danera IV - Moon 9 - Royal Khanid Navy Assembly Plant\" se=\"0.6\" si=\"60013951\" sy=\"Danera\" syi=\"30003912\"/>\r\n    <row c=\"Arniri\" ci=\"20000571\" r=\"Khanid\" ri=\"10000049\" s=\"Danera IV - Moon 1 - Royal Khanid Navy Assembly Plant\" se=\"0.6\" si=\"60013954\" sy=\"Danera\" syi=\"30003912\"/>\r\n    <row c=\"Fekhoya\" ci=\"20000570\" r=\"Khanid\" ri=\"10000049\" s=\"Parses VI - Moon 11 - Royal Khanid Navy Assembly Plant\" se=\"0.5\" si=\"60013957\" sy=\"Parses\" syi=\"30003909\"/>\r\n    <row c=\"Fekhoya\" ci=\"20000570\" r=\"Khanid\" ri=\"10000049\" s=\"Chamemi VI - Moon 1 - Royal Khanid Navy Assembly Plant\" se=\"0.4\" si=\"60013960\" sy=\"Chamemi\" syi=\"30003905\"/>\r\n    <row c=\"Homroon\" ci=\"20000573\" r=\"Khanid\" ri=\"10000049\" s=\"Kuhri III - Moon 13 - Royal Khanid Navy Testing Facilities\" se=\"0.2\" si=\"60013963\" sy=\"Kuhri\" syi=\"30003926\"/>\r\n    <row c=\"Homroon\" ci=\"20000573\" r=\"Khanid\" ri=\"10000049\" s=\"Nandeza IX - Moon 13 - Royal Khanid Navy Assembly Plant\" se=\"0.2\" si=\"60013966\" sy=\"Nandeza\" syi=\"30003923\"/>\r\n    <row c=\"Akar\" ci=\"20000572\" r=\"Khanid\" ri=\"10000049\" s=\"Baratar X - Moon 9 - Royal Khanid Navy Logistic Support\" se=\"0.2\" si=\"60013969\" sy=\"Baratar\" syi=\"30003920\"/>\r\n    <row c=\"Akar\" ci=\"20000572\" r=\"Khanid\" ri=\"10000049\" s=\"Arzieh V - Moon 3 - Royal Khanid Navy Testing Facilities\" se=\"0.3\" si=\"60013972\" sy=\"Arzieh\" syi=\"30003921\"/>\r\n    <row c=\"Amdimmah\" ci=\"20000566\" r=\"Khanid\" ri=\"10000049\" s=\"Palas II - Royal Khanid Navy Assembly Plant\" se=\"0.5\" si=\"60013975\" sy=\"Palas\" syi=\"30003878\"/>\r\n    <row c=\"Amdimmah\" ci=\"20000566\" r=\"Khanid\" ri=\"10000049\" s=\"Palas VII - Moon 11 - Royal Khanid Navy Assembly Plant\" se=\"0.5\" si=\"60013978\" sy=\"Palas\" syi=\"30003878\"/>\r\n    <row c=\"Sib\" ci=\"20000568\" r=\"Khanid\" ri=\"10000049\" s=\"Badivefi VIII - Moon 10 - Royal Khanid Navy Logistic Support\" se=\"0.7\" si=\"60013981\" sy=\"Badivefi\" syi=\"30003888\"/>\r\n    <row c=\"Sib\" ci=\"20000568\" r=\"Khanid\" ri=\"10000049\" s=\"Badivefi VI - Moon 2 - Royal Khanid Navy Logistic Support\" se=\"0.7\" si=\"60013984\" sy=\"Badivefi\" syi=\"30003888\"/>\r\n    <row c=\"Seevadin\" ci=\"20000569\" r=\"Khanid\" ri=\"10000049\" s=\"Vezila IV - Royal Khanid Navy Assembly Plant\" se=\"0.3\" si=\"60013987\" sy=\"Vezila\" syi=\"30003899\"/>\r\n    <row c=\"Seevadin\" ci=\"20000569\" r=\"Khanid\" ri=\"10000049\" s=\"Gehi IX - Moon 4 - Royal Khanid Navy Assembly Plant\" se=\"0.3\" si=\"60013990\" sy=\"Gehi\" syi=\"30003897\"/>\r\n    <row c=\"Phoenix\" ci=\"20000674\" r=\"Fountain\" ri=\"10000058\" s=\"Serpentis Prime VI - Moon 1 - Serpentis Inquest Biotech Research Center\" se=\"0.0\" si=\"60013993\" sy=\"Serpentis Prime\" syi=\"30004623\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"IAMZ-5 X - Moon 14 - Shapeset Shipyard\" se=\"0.0\" si=\"60013996\" sy=\"IAMZ-5\" syi=\"30001481\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"54-VNO VIII - Moon 3 - Shapeset Shipyard\" se=\"0.0\" si=\"60013999\" sy=\"54-VNO\" syi=\"30001480\"/>\r\n    <row c=\"2RX9-6\" ci=\"20000223\" r=\"J7HZ-F\" ri=\"10000017\" s=\"H-EDXD VIII - Moon 1 - Shapeset Shipyard\" se=\"0.0\" si=\"60014002\" sy=\"H-EDXD\" syi=\"30001513\"/>\r\n    <row c=\"2RX9-6\" ci=\"20000223\" r=\"J7HZ-F\" ri=\"10000017\" s=\"KF1-DU VII - Moon 15 - Shapeset Shipyard\" se=\"0.0\" si=\"60014005\" sy=\"KF1-DU\" syi=\"30001515\"/>\r\n    <row c=\"B9J-NT\" ci=\"20000240\" r=\"A821-A\" ri=\"10000019\" s=\"PQWA-L IX - Moon 1 - Shapeset Shipyard\" se=\"0.0\" si=\"60014008\" sy=\"PQWA-L\" syi=\"30001628\"/>\r\n    <row c=\"B9J-NT\" ci=\"20000240\" r=\"A821-A\" ri=\"10000019\" s=\"PQWA-L I - Shapeset Shipyard\" se=\"0.0\" si=\"60014011\" sy=\"PQWA-L\" syi=\"30001628\"/>\r\n    <row c=\"F-8DMX\" ci=\"20000221\" r=\"J7HZ-F\" ri=\"10000017\" s=\"3-XORH IV - Shapeset Shipyard\" se=\"0.0\" si=\"60014014\" sy=\"3-XORH\" syi=\"30001500\"/>\r\n    <row c=\"F-8DMX\" ci=\"20000221\" r=\"J7HZ-F\" ri=\"10000017\" s=\"G1VU-H IX - Moon 18 - Shapeset Shipyard\" se=\"0.0\" si=\"60014017\" sy=\"G1VU-H\" syi=\"30001501\"/>\r\n    <row c=\"1-Z95W\" ci=\"20000213\" r=\"J7HZ-F\" ri=\"10000017\" s=\"1SR-HT I - Shapeset Storage Bay\" se=\"0.0\" si=\"60014020\" sy=\"1SR-HT\" syi=\"30001452\"/>\r\n    <row c=\"1-Z95W\" ci=\"20000213\" r=\"J7HZ-F\" ri=\"10000017\" s=\"PZP1-D IX - Moon 1 - Shapeset Shipyard\" se=\"0.0\" si=\"60014023\" sy=\"PZP1-D\" syi=\"30001449\"/>\r\n    <row c=\"WSC-AL\" ci=\"20000216\" r=\"J7HZ-F\" ri=\"10000017\" s=\"PQA-9K IV - Shapeset Storage Bay\" se=\"0.0\" si=\"60014026\" sy=\"PQA-9K\" syi=\"30001470\"/>\r\n    <row c=\"WSC-AL\" ci=\"20000216\" r=\"J7HZ-F\" ri=\"10000017\" s=\"BJC4-8 XI - Moon 2 - Shapeset Shipyard\" se=\"0.0\" si=\"60014029\" sy=\"BJC4-8\" syi=\"30001469\"/>\r\n    <row c=\"O-BSIB\" ci=\"20000236\" r=\"A821-A\" ri=\"10000019\" s=\"0Z-VHC VI - Moon 12 - Shapeset Shipyard\" se=\"0.0\" si=\"60014032\" sy=\"0Z-VHC\" syi=\"30001599\"/>\r\n    <row c=\"O-BSIB\" ci=\"20000236\" r=\"A821-A\" ri=\"10000019\" s=\"II-1B3 IX - Moon 9 - Shapeset Storage Bay\" se=\"0.0\" si=\"60014035\" sy=\"II-1B3\" syi=\"30001602\"/>\r\n    <row c=\"D-YMGR\" ci=\"20000222\" r=\"J7HZ-F\" ri=\"10000017\" s=\"LH-J8H VI - Shapeset Shipyard\" se=\"0.0\" si=\"60014038\" sy=\"LH-J8H\" syi=\"30001507\"/>\r\n    <row c=\"D-YMGR\" ci=\"20000222\" r=\"J7HZ-F\" ri=\"10000017\" s=\"LH-J8H V - Moon 13 - Shapeset Shipyard\" se=\"0.0\" si=\"60014041\" sy=\"LH-J8H\" syi=\"30001507\"/>\r\n    <row c=\"826-A5\" ci=\"20000238\" r=\"A821-A\" ri=\"10000019\" s=\"B-Y06L II - Shapeset Shipyard\" se=\"0.0\" si=\"60014044\" sy=\"B-Y06L\" syi=\"30001611\"/>\r\n    <row c=\"826-A5\" ci=\"20000238\" r=\"A821-A\" ri=\"10000019\" s=\"B-Y06L IV - Shapeset Shipyard\" se=\"0.0\" si=\"60014047\" sy=\"B-Y06L\" syi=\"30001611\"/>\r\n    <row c=\"F-0CTG\" ci=\"20000242\" r=\"A821-A\" ri=\"10000019\" s=\"IAWJ-X VI - Moon 10 - Shapeset Shipyard\" se=\"0.0\" si=\"60014050\" sy=\"IAWJ-X\" syi=\"30001640\"/>\r\n    <row c=\"F-0CTG\" ci=\"20000242\" r=\"A821-A\" ri=\"10000019\" s=\"50-TJY VII - Moon 8 - Shapeset Shipyard\" se=\"0.0\" si=\"60014053\" sy=\"50-TJY\" syi=\"30001641\"/>\r\n    <row c=\"38G6-L\" ci=\"20000291\" r=\"Pure Blind\" ri=\"10000023\" s=\"X-7OMU II - Moon 7 - The Sanctuary School\" se=\"0.0\" si=\"60014056\" sy=\"X-7OMU\" syi=\"30001978\"/>\r\n    <row c=\"730-KH\" ci=\"20000132\" r=\"Great Wildlands\" ri=\"10000011\" s=\"M-MD3B X - Moon 3 - Thukker Mix Factory\" se=\"0.0\" si=\"60014059\" sy=\"M-MD3B\" syi=\"30000905\"/>\r\n    <row c=\"730-KH\" ci=\"20000132\" r=\"Great Wildlands\" ri=\"10000011\" s=\"E02-IK VIII - Moon 1 - Thukker Mix Factory\" se=\"0.0\" si=\"60014062\" sy=\"E02-IK\" syi=\"30000903\"/>\r\n    <row c=\"Bedaleya\" ci=\"20000010\" r=\"Derelik\" ri=\"10000001\" s=\"Hasateem VI - Moon 12 - Thukker Mix Factory\" se=\"0.4\" si=\"60014065\" sy=\"Hasateem\" syi=\"30000074\"/>\r\n    <row c=\"Bedaleya\" ci=\"20000010\" r=\"Derelik\" ri=\"10000001\" s=\"Nakah I - Moon 1 - Thukker Mix Factory\" se=\"0.4\" si=\"60014068\" sy=\"Nakah\" syi=\"30000072\"/>\r\n    <row c=\"Mamouna\" ci=\"20000003\" r=\"Derelik\" ri=\"10000001\" s=\"Futzchag IX - Moon 9 - Thukker Mix Factory\" se=\"0.2\" si=\"60014071\" sy=\"Futzchag\" syi=\"30000017\"/>\r\n    <row c=\"Mamouna\" ci=\"20000003\" r=\"Derelik\" ri=\"10000001\" s=\"Futzchag II - Thukker Mix Factory\" se=\"0.2\" si=\"60014074\" sy=\"Futzchag\" syi=\"30000017\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"Altrinur XI - Moon 3 - Thukker Mix Factory\" se=\"0.8\" si=\"60014077\" sy=\"Altrinur\" syi=\"30003389\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"Altrinur XII - Moon 2 - Thukker Mix Factory\" se=\"0.8\" si=\"60014080\" sy=\"Altrinur\" syi=\"30003389\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"Totkubad III - Thukker Mix Factory\" se=\"0.9\" si=\"60014083\" sy=\"Totkubad\" syi=\"30003402\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"Agtver VI - Thukker Mix Factory\" se=\"0.9\" si=\"60014086\" sy=\"Agtver\" syi=\"30003404\"/>\r\n    <row c=\"2-M6DE\" ci=\"20000479\" r=\"Syndicate\" ri=\"10000041\" s=\"PVH8-0 VI - Moon 8 - Thukker Mix Factory\" se=\"0.0\" si=\"60014089\" sy=\"PVH8-0\" syi=\"30003283\"/>\r\n    <row c=\"2-M6DE\" ci=\"20000479\" r=\"Syndicate\" ri=\"10000041\" s=\"EZA-FM IV - Moon 16 - Thukker Mix Factory\" se=\"0.0\" si=\"60014092\" sy=\"EZA-FM\" syi=\"30003281\"/>\r\n    <row c=\"Sazdih\" ci=\"20000006\" r=\"Derelik\" ri=\"10000001\" s=\"Uzistoon VII - Moon 2 - Thukker Mix Factory\" se=\"0.4\" si=\"60014095\" sy=\"Uzistoon\" syi=\"30000040\"/>\r\n    <row c=\"Sazdih\" ci=\"20000006\" r=\"Derelik\" ri=\"10000001\" s=\"Bairshir IV - Moon 11 - Thukker Mix Factory\" se=\"0.4\" si=\"60014098\" sy=\"Bairshir\" syi=\"30000041\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"Leurtmar III - Thukker Mix Factory\" se=\"1.0\" si=\"60014101\" sy=\"Leurtmar\" syi=\"30003409\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"Elgoi VIII - Moon 19 - Thukker Mix Factory\" se=\"0.9\" si=\"60014104\" sy=\"Elgoi\" syi=\"30003412\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"Hurjafren VII - Moon 25 - Thukker Mix Factory\" se=\"0.9\" si=\"60014107\" sy=\"Hurjafren\" syi=\"30002572\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"Oremmulf V - Moon 20 - Thukker Mix Warehouse\" se=\"0.9\" si=\"60014110\" sy=\"Oremmulf\" syi=\"30002571\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"Hodrold VII - Moon 8 - Thukker Mix Factory\" se=\"0.6\" si=\"60014113\" sy=\"Hodrold\" syi=\"30003469\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"Frulegur IX - Moon 5 - Thukker Mix Factory\" se=\"0.4\" si=\"60014116\" sy=\"Frulegur\" syi=\"30003467\"/>\r\n    <row c=\"49A-BZ\" ci=\"20000485\" r=\"Syndicate\" ri=\"10000041\" s=\"RF-GGF VI - Moon 4 - Thukker Mix Factory\" se=\"0.0\" si=\"60014119\" sy=\"RF-GGF\" syi=\"30003333\"/>\r\n    <row c=\"49A-BZ\" ci=\"20000485\" r=\"Syndicate\" ri=\"10000041\" s=\"31-MLU IX - Moon 1 - Thukker Mix Factory\" se=\"0.0\" si=\"60014122\" sy=\"31-MLU\" syi=\"30003329\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Freatlidur V - Moon 4 - Thukker Mix Factory\" se=\"0.8\" si=\"60014125\" sy=\"Freatlidur\" syi=\"30003394\"/>\r\n    <row c=\"Jonar\" ci=\"20000495\" r=\"Metropolis\" ri=\"10000042\" s=\"Freatlidur VII - Moon 3 - Thukker Mix Factory\" se=\"0.8\" si=\"60014128\" sy=\"Freatlidur\" syi=\"30003394\"/>\r\n    <row c=\"Tiat\" ci=\"20000303\" r=\"Metropolis\" ri=\"10000042\" s=\"Auner VIII - Moon 10 - Thukker Mix Factory\" se=\"0.4\" si=\"60014131\" sy=\"Auner\" syi=\"30002059\"/>\r\n    <row c=\"Tiat\" ci=\"20000303\" r=\"Metropolis\" ri=\"10000042\" s=\"Ardar IV - Moon 2 - Thukker Mix Factory\" se=\"0.4\" si=\"60014134\" sy=\"Ardar\" syi=\"30002058\"/>\r\n    <row c=\"Mossas\" ci=\"20000008\" r=\"Derelik\" ri=\"10000001\" s=\"Ibaria III - Thukker Mix Warehouse\" se=\"0.7\" si=\"60014137\" sy=\"Ibaria\" syi=\"30000053\"/>\r\n    <row c=\"Mossas\" ci=\"20000008\" r=\"Derelik\" ri=\"10000001\" s=\"Zemalu IX - Moon 2 - Thukker Mix Factory\" se=\"0.7\" si=\"60014140\" sy=\"Zemalu\" syi=\"30000055\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Lasleinur IV - Moon 16 - Thukker Mix Factory\" se=\"0.2\" si=\"60014143\" sy=\"Lasleinur\" syi=\"30002065\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Brin V - Moon 7 - Thukker Mix Factory\" se=\"0.2\" si=\"60014146\" sy=\"Brin\" syi=\"30002067\"/>\r\n    <row c=\"XJ-0RG\" ci=\"20000276\" r=\"Stain\" ri=\"10000022\" s=\"37S-KO III - Moon 1 - True Creations Shipyard\" se=\"0.0\" si=\"60014149\" sy=\"37S-KO\" syi=\"30001868\"/>\r\n    <row c=\"XJ-0RG\" ci=\"20000276\" r=\"Stain\" ri=\"10000022\" s=\"37S-KO V - Moon 2 - True Creations Shipyard\" se=\"0.0\" si=\"60014152\" sy=\"37S-KO\" syi=\"30001868\"/>\r\n    <row c=\"XJ-0RG\" ci=\"20000276\" r=\"Stain\" ri=\"10000022\" s=\"37S-KO VI - Moon 14 - True Creations Assembly Plant\" se=\"0.0\" si=\"60014155\" sy=\"37S-KO\" syi=\"30001868\"/>\r\n    <row c=\"H-QXM7\" ci=\"20000277\" r=\"Stain\" ri=\"10000022\" s=\"NZG-LF III - Moon 5 - True Creations Shipyard\" se=\"0.0\" si=\"60014158\" sy=\"NZG-LF\" syi=\"30001874\"/>\r\n    <row c=\"H-QXM7\" ci=\"20000277\" r=\"Stain\" ri=\"10000022\" s=\"NZG-LF III - Moon 11 - True Creations Shipyard\" se=\"0.0\" si=\"60014161\" sy=\"NZG-LF\" syi=\"30001874\"/>\r\n    <row c=\"H-QXM7\" ci=\"20000277\" r=\"Stain\" ri=\"10000022\" s=\"GDO-7H VI - Moon 1 - True Creations Assembly Plant\" se=\"0.0\" si=\"60014164\" sy=\"GDO-7H\" syi=\"30001873\"/>\r\n    <row c=\"JG-ZLG\" ci=\"20000282\" r=\"Stain\" ri=\"10000022\" s=\"6Y-0TW II - Moon 12 - True Creations Shipyard\" se=\"0.0\" si=\"60014167\" sy=\"6Y-0TW\" syi=\"30001907\"/>\r\n    <row c=\"JG-ZLG\" ci=\"20000282\" r=\"Stain\" ri=\"10000022\" s=\"6Y-0TW II - Moon 5 - True Creations Shipyard\" se=\"0.0\" si=\"60014170\" sy=\"6Y-0TW\" syi=\"30001907\"/>\r\n    <row c=\"JG-ZLG\" ci=\"20000282\" r=\"Stain\" ri=\"10000022\" s=\"6Y-0TW II - Moon 16 - True Creations Assembly Plant\" se=\"0.0\" si=\"60014173\" sy=\"6Y-0TW\" syi=\"30001907\"/>\r\n    <row c=\"Y-2D6Q\" ci=\"20000274\" r=\"Stain\" ri=\"10000022\" s=\"UF-KKH III - Moon 4 - True Creations Shipyard\" se=\"0.0\" si=\"60014176\" sy=\"UF-KKH\" syi=\"30001854\"/>\r\n    <row c=\"Y-2D6Q\" ci=\"20000274\" r=\"Stain\" ri=\"10000022\" s=\"O5Y3-W VII - Moon 3 - True Creations Shipyard\" se=\"0.0\" si=\"60014179\" sy=\"O5Y3-W\" syi=\"30001855\"/>\r\n    <row c=\"Y-2D6Q\" ci=\"20000274\" r=\"Stain\" ri=\"10000022\" s=\"FV-SE8 VIII - Moon 1 - True Creations Logistic Support\" se=\"0.0\" si=\"60014182\" sy=\"FV-SE8\" syi=\"30001852\"/>\r\n    <row c=\"VH1-NS\" ci=\"20000280\" r=\"Stain\" ri=\"10000022\" s=\"42-UOW V - True Creations Shipyard\" se=\"0.0\" si=\"60014185\" sy=\"42-UOW\" syi=\"30001894\"/>\r\n    <row c=\"VH1-NS\" ci=\"20000280\" r=\"Stain\" ri=\"10000022\" s=\"A4UG-O VII - Moon 16 - True Creations Shipyard\" se=\"0.0\" si=\"60014188\" sy=\"A4UG-O\" syi=\"30001896\"/>\r\n    <row c=\"VH1-NS\" ci=\"20000280\" r=\"Stain\" ri=\"10000022\" s=\"W-VXL9 IV - Moon 21 - True Creations Assembly Plant\" se=\"0.0\" si=\"60014191\" sy=\"W-VXL9\" syi=\"30001897\"/>\r\n    <row c=\"R-IZDC\" ci=\"20000288\" r=\"Stain\" ri=\"10000022\" s=\"XFBE-T I - Moon 5 - True Creations Shipyard\" se=\"0.0\" si=\"60014194\" sy=\"XFBE-T\" syi=\"30001958\"/>\r\n    <row c=\"R-IZDC\" ci=\"20000288\" r=\"Stain\" ri=\"10000022\" s=\"T-NNJZ V - Moon 2 - True Creations Storage Bay\" se=\"0.0\" si=\"60014197\" sy=\"T-NNJZ\" syi=\"30001959\"/>\r\n    <row c=\"R-IZDC\" ci=\"20000288\" r=\"Stain\" ri=\"10000022\" s=\"0T-LIB V - Moon 6 - True Creations Testing Facilities\" se=\"0.0\" si=\"60014200\" sy=\"0T-LIB\" syi=\"30001961\"/>\r\n    <row c=\"T-L301\" ci=\"20000278\" r=\"Stain\" ri=\"10000022\" s=\"GU-54G VIII - Moon 1 - True Creations Shipyard\" se=\"0.0\" si=\"60014203\" sy=\"GU-54G\" syi=\"30001883\"/>\r\n    <row c=\"T-L301\" ci=\"20000278\" r=\"Stain\" ri=\"10000022\" s=\"D9D-GD V - Moon 2 - True Creations Shipyard\" se=\"0.0\" si=\"60014206\" sy=\"D9D-GD\" syi=\"30001881\"/>\r\n    <row c=\"T-L301\" ci=\"20000278\" r=\"Stain\" ri=\"10000022\" s=\"GU-54G VIII - Moon 5 - True Creations Assembly Plant\" se=\"0.0\" si=\"60014209\" sy=\"GU-54G\" syi=\"30001883\"/>\r\n    <row c=\"SB3-IH\" ci=\"20000285\" r=\"Stain\" ri=\"10000022\" s=\"Y-4U62 VIII - Moon 2 - True Creations Shipyard\" se=\"0.0\" si=\"60014212\" sy=\"Y-4U62\" syi=\"30001932\"/>\r\n    <row c=\"SB3-IH\" ci=\"20000285\" r=\"Stain\" ri=\"10000022\" s=\"Y-4U62 V - Moon 1 - True Creations Shipyard\" se=\"0.0\" si=\"60014215\" sy=\"Y-4U62\" syi=\"30001932\"/>\r\n    <row c=\"SB3-IH\" ci=\"20000285\" r=\"Stain\" ri=\"10000022\" s=\"RRWI-5 III - True Creations Logistic Support\" se=\"0.0\" si=\"60014218\" sy=\"RRWI-5\" syi=\"30001931\"/>\r\n    <row c=\"41JS-R\" ci=\"20000272\" r=\"Stain\" ri=\"10000022\" s=\"9RQ-L8 VII - Moon 11 - True Creations Shipyard\" se=\"0.0\" si=\"60014221\" sy=\"9RQ-L8\" syi=\"30001840\"/>\r\n    <row c=\"41JS-R\" ci=\"20000272\" r=\"Stain\" ri=\"10000022\" s=\"TG-Z23 V - Moon 7 - True Creations Storage Bay\" se=\"0.0\" si=\"60014224\" sy=\"TG-Z23\" syi=\"30001842\"/>\r\n    <row c=\"41JS-R\" ci=\"20000272\" r=\"Stain\" ri=\"10000022\" s=\"TG-Z23 II - Moon 4 - True Creations Logistic Support\" se=\"0.0\" si=\"60014227\" sy=\"TG-Z23\" syi=\"30001842\"/>\r\n    <row c=\"H26A-B\" ci=\"20000273\" r=\"Stain\" ri=\"10000022\" s=\"HM-UVD VI - Moon 4 - True Creations Shipyard\" se=\"0.0\" si=\"60014230\" sy=\"HM-UVD\" syi=\"30001847\"/>\r\n    <row c=\"H26A-B\" ci=\"20000273\" r=\"Stain\" ri=\"10000022\" s=\"HM-UVD VII - Moon 5 - True Creations Shipyard\" se=\"0.0\" si=\"60014233\" sy=\"HM-UVD\" syi=\"30001847\"/>\r\n    <row c=\"H26A-B\" ci=\"20000273\" r=\"Stain\" ri=\"10000022\" s=\"G-ME2K VIII - Moon 14 - True Creations Testing Facilities\" se=\"0.0\" si=\"60014236\" sy=\"G-ME2K\" syi=\"30001848\"/>\r\n    <row c=\"V-H3V0\" ci=\"20000283\" r=\"Stain\" ri=\"10000022\" s=\"ZH-KEV VI - Moon 6 - True Creations Storage Bay\" se=\"0.0\" si=\"60014239\" sy=\"ZH-KEV\" syi=\"30001922\"/>\r\n    <row c=\"V-H3V0\" ci=\"20000283\" r=\"Stain\" ri=\"10000022\" s=\"S-BWWQ III - Moon 4 - True Creations Storage Bay\" se=\"0.0\" si=\"60014242\" sy=\"S-BWWQ\" syi=\"30001918\"/>\r\n    <row c=\"V-H3V0\" ci=\"20000283\" r=\"Stain\" ri=\"10000022\" s=\"I-ME3L V - Moon 1 - True Creations Testing Facilities\" se=\"0.0\" si=\"60014245\" sy=\"I-ME3L\" syi=\"30001914\"/>\r\n    <row c=\"WF-OP4\" ci=\"20000287\" r=\"Stain\" ri=\"10000022\" s=\"5J-UEX IV - Moon 7 - True Creations Shipyard\" se=\"0.0\" si=\"60014248\" sy=\"5J-UEX\" syi=\"30001951\"/>\r\n    <row c=\"WF-OP4\" ci=\"20000287\" r=\"Stain\" ri=\"10000022\" s=\"1H4V-O II - Moon 1 - True Creations Shipyard\" se=\"0.0\" si=\"60014251\" sy=\"1H4V-O\" syi=\"30001952\"/>\r\n    <row c=\"WF-OP4\" ci=\"20000287\" r=\"Stain\" ri=\"10000022\" s=\"5J-UEX IV - Moon 1 - True Creations Assembly Plant\" se=\"0.0\" si=\"60014254\" sy=\"5J-UEX\" syi=\"30001951\"/>\r\n    <row c=\"Q4IG-S\" ci=\"20000281\" r=\"Stain\" ri=\"10000022\" s=\"KP-FQ1 III - Moon 9 - True Creations Storage Bay\" se=\"0.0\" si=\"60014257\" sy=\"KP-FQ1\" syi=\"30001901\"/>\r\n    <row c=\"Q4IG-S\" ci=\"20000281\" r=\"Stain\" ri=\"10000022\" s=\"RLDS-R I - True Creations Shipyard\" se=\"0.0\" si=\"60014260\" sy=\"RLDS-R\" syi=\"30001902\"/>\r\n    <row c=\"Q4IG-S\" ci=\"20000281\" r=\"Stain\" ri=\"10000022\" s=\"KP-FQ1 III - True Creations Assembly Plant\" se=\"0.0\" si=\"60014263\" sy=\"KP-FQ1\" syi=\"30001901\"/>\r\n    <row c=\"U7L-MQ\" ci=\"20000275\" r=\"Stain\" ri=\"10000022\" s=\"4GQ-XQ XIV - Moon 10 - True Creations Shipyard\" se=\"0.0\" si=\"60014266\" sy=\"4GQ-XQ\" syi=\"30001858\"/>\r\n    <row c=\"U7L-MQ\" ci=\"20000275\" r=\"Stain\" ri=\"10000022\" s=\"4GQ-XQ IX - Moon 1 - True Creations Shipyard\" se=\"0.0\" si=\"60014269\" sy=\"4GQ-XQ\" syi=\"30001858\"/>\r\n    <row c=\"U7L-MQ\" ci=\"20000275\" r=\"Stain\" ri=\"10000022\" s=\"ZG8Q-N VII - Moon 6 - True Creations Testing Facilities\" se=\"0.0\" si=\"60014272\" sy=\"ZG8Q-N\" syi=\"30001866\"/>\r\n    <row c=\"Z01V-Z\" ci=\"20000286\" r=\"Stain\" ri=\"10000022\" s=\"W-Q233 VI - Moon 1 - True Creations Shipyard\" se=\"0.0\" si=\"60014275\" sy=\"W-Q233\" syi=\"30001939\"/>\r\n    <row c=\"Z01V-Z\" ci=\"20000286\" r=\"Stain\" ri=\"10000022\" s=\"O-FTHE V - True Creations Storage Bay\" se=\"0.0\" si=\"60014278\" sy=\"O-FTHE\" syi=\"30001938\"/>\r\n    <row c=\"Z01V-Z\" ci=\"20000286\" r=\"Stain\" ri=\"10000022\" s=\"OOO-FS IV - Moon 10 - True Creations Logistic Support\" se=\"0.0\" si=\"60014281\" sy=\"OOO-FS\" syi=\"30001946\"/>\r\n    <row c=\"XJ-0RG\" ci=\"20000276\" r=\"Stain\" ri=\"10000022\" s=\"37S-KO VII - True Power Mining Outpost\" se=\"0.0\" si=\"60014284\" sy=\"37S-KO\" syi=\"30001868\"/>\r\n    <row c=\"XJ-0RG\" ci=\"20000276\" r=\"Stain\" ri=\"10000022\" s=\"37S-KO VI - Moon 9 - True Power Assembly Plant\" se=\"0.0\" si=\"60014287\" sy=\"37S-KO\" syi=\"30001868\"/>\r\n    <row c=\"H-QXM7\" ci=\"20000277\" r=\"Stain\" ri=\"10000022\" s=\"WEQT-K I - Moon 12 - True Power Mineral Reserve\" se=\"0.0\" si=\"60014290\" sy=\"WEQT-K\" syi=\"30001878\"/>\r\n    <row c=\"H-QXM7\" ci=\"20000277\" r=\"Stain\" ri=\"10000022\" s=\"NZG-LF VI - True Power Assembly Plant\" se=\"0.0\" si=\"60014293\" sy=\"NZG-LF\" syi=\"30001874\"/>\r\n    <row c=\"T-L301\" ci=\"20000278\" r=\"Stain\" ri=\"10000022\" s=\"7-X3RN VII - Moon 12 - True Power Mining Outpost\" se=\"0.0\" si=\"60014296\" sy=\"7-X3RN\" syi=\"30001884\"/>\r\n    <row c=\"T-L301\" ci=\"20000278\" r=\"Stain\" ri=\"10000022\" s=\"9O-ZTS II - Moon 1 - True Power Testing Facilities\" se=\"0.0\" si=\"60014299\" sy=\"9O-ZTS\" syi=\"30001886\"/>\r\n    <row c=\"H26A-B\" ci=\"20000273\" r=\"Stain\" ri=\"10000022\" s=\"G-ME2K VIII - Moon 3 - True Power Mining Outpost\" se=\"0.0\" si=\"60014302\" sy=\"G-ME2K\" syi=\"30001848\"/>\r\n    <row c=\"H26A-B\" ci=\"20000273\" r=\"Stain\" ri=\"10000022\" s=\"HM-UVD VIII - Moon 2 - True Power Assembly Plant\" se=\"0.0\" si=\"60014305\" sy=\"HM-UVD\" syi=\"30001847\"/>\r\n    <row c=\"V-H3V0\" ci=\"20000283\" r=\"Stain\" ri=\"10000022\" s=\"J-AYLV III - Moon 14 - True Power Mining Outpost\" se=\"0.0\" si=\"60014308\" sy=\"J-AYLV\" syi=\"30001920\"/>\r\n    <row c=\"V-H3V0\" ci=\"20000283\" r=\"Stain\" ri=\"10000022\" s=\"T-8UOF VII - Moon 2 - True Power Logistic Support\" se=\"0.0\" si=\"60014311\" sy=\"T-8UOF\" syi=\"30001911\"/>\r\n    <row c=\"Q4IG-S\" ci=\"20000281\" r=\"Stain\" ri=\"10000022\" s=\"KP-FQ1 III - Moon 12 - True Power Mineral Reserve\" se=\"0.0\" si=\"60014314\" sy=\"KP-FQ1\" syi=\"30001901\"/>\r\n    <row c=\"Q4IG-S\" ci=\"20000281\" r=\"Stain\" ri=\"10000022\" s=\"RV5-DW VII - Moon 2 - True Power Assembly Plant\" se=\"0.0\" si=\"60014317\" sy=\"RV5-DW\" syi=\"30001900\"/>\r\n    <row c=\"R-IZDC\" ci=\"20000288\" r=\"Stain\" ri=\"10000022\" s=\"0T-LIB V - Moon 5 - True Power Mining Outpost\" se=\"0.0\" si=\"60014320\" sy=\"0T-LIB\" syi=\"30001961\"/>\r\n    <row c=\"R-IZDC\" ci=\"20000288\" r=\"Stain\" ri=\"10000022\" s=\"NRT4-U II - True Power Logistic Support\" se=\"0.0\" si=\"60014323\" sy=\"NRT4-U\" syi=\"30001962\"/>\r\n    <row c=\"5VN-B7\" ci=\"20000271\" r=\"Stain\" ri=\"10000022\" s=\"DSS-EZ IV - Moon 1 - True Power Refinery\" se=\"0.0\" si=\"60014326\" sy=\"DSS-EZ\" syi=\"30001831\"/>\r\n    <row c=\"5VN-B7\" ci=\"20000271\" r=\"Stain\" ri=\"10000022\" s=\"LGK-VP V - Moon 3 - True Power Assembly Plant\" se=\"0.0\" si=\"60014329\" sy=\"LGK-VP\" syi=\"30001833\"/>\r\n    <row c=\"W-ULNA\" ci=\"20000284\" r=\"Stain\" ri=\"10000022\" s=\"6QBH-S IV - Moon 13 - True Power Mining Outpost\" se=\"0.0\" si=\"60014332\" sy=\"6QBH-S\" syi=\"30001930\"/>\r\n    <row c=\"W-ULNA\" ci=\"20000284\" r=\"Stain\" ri=\"10000022\" s=\"RPS-0K VIII - Moon 1 - True Power Assembly Plant\" se=\"0.0\" si=\"60014335\" sy=\"RPS-0K\" syi=\"30001924\"/>\r\n    <row c=\"QO-17V\" ci=\"20000279\" r=\"Stain\" ri=\"10000022\" s=\"0G-A25 VI - Moon 20 - True Power Mining Outpost\" se=\"0.0\" si=\"60014338\" sy=\"0G-A25\" syi=\"30001889\"/>\r\n    <row c=\"QO-17V\" ci=\"20000279\" r=\"Stain\" ri=\"10000022\" s=\"F9SX-1 V - Moon 1 - True Power Assembly Plant\" se=\"0.0\" si=\"60014341\" sy=\"F9SX-1\" syi=\"30001888\"/>\r\n    <row c=\"Z01V-Z\" ci=\"20000286\" r=\"Stain\" ri=\"10000022\" s=\"W-Q233 V - Moon 10 - True Power Refinery\" se=\"0.0\" si=\"60014344\" sy=\"W-Q233\" syi=\"30001939\"/>\r\n    <row c=\"Z01V-Z\" ci=\"20000286\" r=\"Stain\" ri=\"10000022\" s=\"L-A9FS V - Moon 2 - True Power Logistic Support\" se=\"0.0\" si=\"60014347\" sy=\"L-A9FS\" syi=\"30001945\"/>\r\n    <row c=\"41JS-R\" ci=\"20000272\" r=\"Stain\" ri=\"10000022\" s=\"TG-Z23 II - Moon 7 - True Power Refinery\" se=\"0.0\" si=\"60014350\" sy=\"TG-Z23\" syi=\"30001842\"/>\r\n    <row c=\"41JS-R\" ci=\"20000272\" r=\"Stain\" ri=\"10000022\" s=\"TG-Z23 III - Moon 8 - True Power Logistic Support\" se=\"0.0\" si=\"60014353\" sy=\"TG-Z23\" syi=\"30001842\"/>\r\n    <row c=\"Y-2D6Q\" ci=\"20000274\" r=\"Stain\" ri=\"10000022\" s=\"UF-KKH III - Moon 2 - True Power Mineral Reserve\" se=\"0.0\" si=\"60014356\" sy=\"UF-KKH\" syi=\"30001854\"/>\r\n    <row c=\"Y-2D6Q\" ci=\"20000274\" r=\"Stain\" ri=\"10000022\" s=\"O5Y3-W VI - Moon 1 - True Power Logistic Support\" se=\"0.0\" si=\"60014359\" sy=\"O5Y3-W\" syi=\"30001855\"/>\r\n    <row c=\"WF-OP4\" ci=\"20000287\" r=\"Stain\" ri=\"10000022\" s=\"A-XASO IV - Moon 4 - True Power Mining Outpost\" se=\"0.0\" si=\"60014362\" sy=\"A-XASO\" syi=\"30001950\"/>\r\n    <row c=\"WF-OP4\" ci=\"20000287\" r=\"Stain\" ri=\"10000022\" s=\"1H4V-O V - Moon 2 - True Power Logistic Support\" se=\"0.0\" si=\"60014365\" sy=\"1H4V-O\" syi=\"30001952\"/>\r\n    <row c=\"JG-ZLG\" ci=\"20000282\" r=\"Stain\" ri=\"10000022\" s=\"B-G1LG VI - Moon 3 - True Power Mining Outpost\" se=\"0.0\" si=\"60014368\" sy=\"B-G1LG\" syi=\"30001910\"/>\r\n    <row c=\"JG-ZLG\" ci=\"20000282\" r=\"Stain\" ri=\"10000022\" s=\"6Y-0TW III - True Power Assembly Plant\" se=\"0.0\" si=\"60014371\" sy=\"6Y-0TW\" syi=\"30001907\"/>\r\n    <row c=\"730-KH\" ci=\"20000132\" r=\"Great Wildlands\" ri=\"10000011\" s=\"M-MD3B IV - Trust Partners Warehouse\" se=\"0.0\" si=\"60014374\" sy=\"M-MD3B\" syi=\"30000905\"/>\r\n    <row c=\"730-KH\" ci=\"20000132\" r=\"Great Wildlands\" ri=\"10000011\" s=\"N-DQ0D IV - Trust Partners Trading Post\" se=\"0.0\" si=\"60014377\" sy=\"N-DQ0D\" syi=\"30000904\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Gelfiven VI - Moon 1 - Trust Partners Trading Post\" se=\"0.6\" si=\"60014380\" sy=\"Gelfiven\" syi=\"30002386\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Teonusude III - Moon 6 - Trust Partners Trading Post\" se=\"0.6\" si=\"60014383\" sy=\"Teonusude\" syi=\"30002385\"/>\r\n    <row c=\"Evannater\" ci=\"20000375\" r=\"Heimatar\" ri=\"10000030\" s=\"Gultratren III - Moon 2 - Trust Partners Trading Post\" se=\"0.3\" si=\"60014386\" sy=\"Gultratren\" syi=\"30002560\"/>\r\n    <row c=\"Evannater\" ci=\"20000375\" r=\"Heimatar\" ri=\"10000030\" s=\"Atgur VIII - Moon 1 - Trust Partners Warehouse\" se=\"0.5\" si=\"60014389\" sy=\"Atgur\" syi=\"30002557\"/>\r\n    <row c=\"Almur\" ci=\"20000353\" r=\"Molden Heath\" ri=\"10000028\" s=\"Hedaleolfarber VI - Moon 5 - Trust Partners Warehouse\" se=\"0.3\" si=\"60014392\" sy=\"Hedaleolfarber\" syi=\"30002406\"/>\r\n    <row c=\"Almur\" ci=\"20000353\" r=\"Molden Heath\" ri=\"10000028\" s=\"Istodard V - Moon 2 - Trust Partners Trading Post\" se=\"0.3\" si=\"60014395\" sy=\"Istodard\" syi=\"30002402\"/>\r\n    <row c=\"Odengsolf\" ci=\"20000370\" r=\"Heimatar\" ri=\"10000030\" s=\"Gyng IV - Trust Partners Trading Post\" se=\"0.8\" si=\"60014398\" sy=\"Gyng\" syi=\"30002529\"/>\r\n    <row c=\"Odengsolf\" ci=\"20000370\" r=\"Heimatar\" ri=\"10000030\" s=\"Illinfrik VIII - Moon 1 - Trust Partners Trading Post\" se=\"0.8\" si=\"60014401\" sy=\"Illinfrik\" syi=\"30002527\"/>\r\n    <row c=\"Mekashtad\" ci=\"20000009\" r=\"Derelik\" ri=\"10000001\" s=\"Agha IX - Moon 6 - Trust Partners Warehouse\" se=\"0.7\" si=\"60014404\" sy=\"Agha\" syi=\"30000061\"/>\r\n    <row c=\"Mekashtad\" ci=\"20000009\" r=\"Derelik\" ri=\"10000001\" s=\"Nikh V - Moon 2 - Trust Partners Trading Post\" se=\"0.8\" si=\"60014407\" sy=\"Nikh\" syi=\"30000057\"/>\r\n    <row c=\"YFN-UN\" ci=\"20000484\" r=\"Syndicate\" ri=\"10000041\" s=\"3KNK-A IX - Moon 2 - Trust Partners Trading Post\" se=\"0.0\" si=\"60014410\" sy=\"3KNK-A\" syi=\"30003322\"/>\r\n    <row c=\"YFN-UN\" ci=\"20000484\" r=\"Syndicate\" ri=\"10000041\" s=\"TXW-EI VI - Trust Partners Trading Post\" se=\"0.0\" si=\"60014413\" sy=\"TXW-EI\" syi=\"30003323\"/>\r\n    <row c=\"MK7-AO\" ci=\"20000483\" r=\"Syndicate\" ri=\"10000041\" s=\"I0AB-R II - Trust Partners Trading Post\" se=\"0.0\" si=\"60014416\" sy=\"I0AB-R\" syi=\"30003317\"/>\r\n    <row c=\"MK7-AO\" ci=\"20000483\" r=\"Syndicate\" ri=\"10000041\" s=\"I0AB-R V - Moon 1 - Trust Partners Trading Post\" se=\"0.0\" si=\"60014419\" sy=\"I0AB-R\" syi=\"30003317\"/>\r\n    <row c=\"Bedaleya\" ci=\"20000010\" r=\"Derelik\" ri=\"10000001\" s=\"Assah V - Moon 14 - Trust Partners Warehouse\" se=\"0.3\" si=\"60014422\" sy=\"Assah\" syi=\"30000075\"/>\r\n    <row c=\"Bedaleya\" ci=\"20000010\" r=\"Derelik\" ri=\"10000001\" s=\"Irshah VIII - Moon 9 - Trust Partners Trading Post\" se=\"0.4\" si=\"60014425\" sy=\"Irshah\" syi=\"30000073\"/>\r\n    <row c=\"Besateoden\" ci=\"20000352\" r=\"Molden Heath\" ri=\"10000028\" s=\"Orien IV - Trust Partners Warehouse\" se=\"0.8\" si=\"60014428\" sy=\"Orien\" syi=\"30002399\"/>\r\n    <row c=\"Besateoden\" ci=\"20000352\" r=\"Molden Heath\" ri=\"10000028\" s=\"Orien III - Moon 3 - Trust Partners Trading Post\" se=\"0.8\" si=\"60014431\" sy=\"Orien\" syi=\"30002399\"/>\r\n    <row c=\"San Matar\" ci=\"20000001\" r=\"Derelik\" ri=\"10000001\" s=\"Yuzier VII - Trust Partners Trading Post\" se=\"0.9\" si=\"60014434\" sy=\"Yuzier\" syi=\"30000007\"/>\r\n    <row c=\"San Matar\" ci=\"20000001\" r=\"Derelik\" ri=\"10000001\" s=\"Tanoo IV - Trust Partners Trading Post\" se=\"0.9\" si=\"60014437\" sy=\"Tanoo\" syi=\"30000001\"/>\r\n    <row c=\"Benurad\" ci=\"20000378\" r=\"Heimatar\" ri=\"10000030\" s=\"Katugumur V - Moon 12 - Trust Partners Warehouse\" se=\"0.2\" si=\"60014440\" sy=\"Katugumur\" syi=\"30002580\"/>\r\n    <row c=\"Benurad\" ci=\"20000378\" r=\"Heimatar\" ri=\"10000030\" s=\"Sotrenzur IX - Moon 1 - Trust Partners Warehouse\" se=\"0.3\" si=\"60014443\" sy=\"Sotrenzur\" syi=\"30002575\"/>\r\n    <row c=\"Y4Y7-Q\" ci=\"20000480\" r=\"Syndicate\" ri=\"10000041\" s=\"T22-QI IV - Moon 8 - Trust Partners Warehouse\" se=\"0.0\" si=\"60014446\" sy=\"T22-QI\" syi=\"30003287\"/>\r\n    <row c=\"Y4Y7-Q\" ci=\"20000480\" r=\"Syndicate\" ri=\"10000041\" s=\"T22-QI VI - Moon 13 - Trust Partners Warehouse\" se=\"0.0\" si=\"60014449\" sy=\"T22-QI\" syi=\"30003287\"/>\r\n    <row c=\"Joas\" ci=\"20000016\" r=\"Derelik\" ri=\"10000001\" s=\"Arnola VII - Moon 1 - Trust Partners Trading Post\" se=\"0.5\" si=\"60014452\" sy=\"Arnola\" syi=\"30000112\"/>\r\n    <row c=\"Joas\" ci=\"20000016\" r=\"Derelik\" ri=\"10000001\" s=\"Uanzin V - Moon 1 - Trust Partners Warehouse\" se=\"0.4\" si=\"60014455\" sy=\"Uanzin\" syi=\"30000118\"/>\r\n    <row c=\"Kalangin\" ci=\"20000004\" r=\"Derelik\" ri=\"10000001\" s=\"Kasrasi IX - Moon 5 - Trust Partners Trading Post\" se=\"0.6\" si=\"60014458\" sy=\"Kasrasi\" syi=\"30000030\"/>\r\n    <row c=\"Kalangin\" ci=\"20000004\" r=\"Derelik\" ri=\"10000001\" s=\"Fovihi V - Moon 6 - Trust Partners Warehouse\" se=\"0.9\" si=\"60014461\" sy=\"Fovihi\" syi=\"30000023\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"9-ERCP VII - Moon 9 - X-Sense Chemical Refinery\" se=\"0.0\" si=\"60014464\" sy=\"9-ERCP\" syi=\"30001484\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"KN7M-N V - Moon 17 - X-Sense Reprocessing Facility\" se=\"0.0\" si=\"60014467\" sy=\"KN7M-N\" syi=\"30001485\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"54-VNO IX - Moon 1 - X-Sense Chemical Refinery\" se=\"0.0\" si=\"60014470\" sy=\"54-VNO\" syi=\"30001480\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Ellmay VIII - Moon 12 - X-Sense Chemical Refinery\" se=\"0.9\" si=\"60014473\" sy=\"Ellmay\" syi=\"30005313\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Ellmay I - X-Sense Chemical Storage\" se=\"0.9\" si=\"60014476\" sy=\"Ellmay\" syi=\"30005313\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Amygnon VIII - Moon 5 - X-Sense Reprocessing Facility\" se=\"0.6\" si=\"60014479\" sy=\"Amygnon\" syi=\"30005311\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"Jurlesel VI - Moon 17 - X-Sense Chemical Refinery\" se=\"0.6\" si=\"60014482\" sy=\"Jurlesel\" syi=\"30003013\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"Halle X - Moon 4 - X-Sense Chemical Refinery\" se=\"0.7\" si=\"60014485\" sy=\"Halle\" syi=\"30003010\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"Jurlesel VIII - X-Sense Chemical Refinery\" se=\"0.6\" si=\"60014488\" sy=\"Jurlesel\" syi=\"30003013\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Masalle VIII - Moon 1 - X-Sense Chemical Refinery\" se=\"0.8\" si=\"60014491\" sy=\"Masalle\" syi=\"30005325\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Scolluzer XI - Moon 2 - X-Sense Chemical Storage\" se=\"0.8\" si=\"60014494\" sy=\"Scolluzer\" syi=\"30005322\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Scolluzer VIII - Moon 1 - X-Sense Chemical Storage\" se=\"0.8\" si=\"60014497\" sy=\"Scolluzer\" syi=\"30005322\"/>\r\n    <row c=\"Ekrin\" ci=\"20000763\" r=\"Genesis\" ri=\"10000067\" s=\"Sheroo VII - X-Sense Chemical Refinery\" se=\"0.6\" si=\"60014500\" sy=\"Sheroo\" syi=\"30005217\"/>\r\n    <row c=\"Ekrin\" ci=\"20000763\" r=\"Genesis\" ri=\"10000067\" s=\"Sheroo VIII - X-Sense Chemical Refinery\" se=\"0.6\" si=\"60014503\" sy=\"Sheroo\" syi=\"30005217\"/>\r\n    <row c=\"Ekrin\" ci=\"20000763\" r=\"Genesis\" ri=\"10000067\" s=\"Sheroo X - Moon 11 - X-Sense Chemical Refinery\" se=\"0.6\" si=\"60014506\" sy=\"Sheroo\" syi=\"30005217\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Stetille VII - Moon 1 - X-Sense Chemical Refinery\" se=\"0.9\" si=\"60014509\" sy=\"Stetille\" syi=\"30002711\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Stetille V - X-Sense Chemical Refinery\" se=\"0.9\" si=\"60014512\" sy=\"Stetille\" syi=\"30002711\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Stetille IV - Moon 11 - X-Sense Chemical Refinery\" se=\"0.9\" si=\"60014515\" sy=\"Stetille\" syi=\"30002711\"/>\r\n    <row c=\"Abthi\" ci=\"20000439\" r=\"Devoid\" ri=\"10000036\" s=\"Thakala III - Moon 2 - X-Sense Reprocessing Facility\" se=\"0.4\" si=\"60014518\" sy=\"Thakala\" syi=\"30003000\"/>\r\n    <row c=\"Abthi\" ci=\"20000439\" r=\"Devoid\" ri=\"10000036\" s=\"Naeel III - X-Sense Chemical Storage\" se=\"0.6\" si=\"60014521\" sy=\"Naeel\" syi=\"30002995\"/>\r\n    <row c=\"Abthi\" ci=\"20000439\" r=\"Devoid\" ri=\"10000036\" s=\"Thakala III - Moon 21 - X-Sense Reprocessing Facility\" se=\"0.4\" si=\"60014524\" sy=\"Thakala\" syi=\"30003000\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Saatuban V - Moon 2 - X-Sense Chemical Storage\" se=\"0.5\" si=\"60014527\" sy=\"Saatuban\" syi=\"30001386\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Pakkonen V - Moon 7 - X-Sense Reprocessing Facility\" se=\"0.4\" si=\"60014530\" sy=\"Pakkonen\" syi=\"30001390\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Saatuban I - X-Sense Chemical Refinery\" se=\"0.5\" si=\"60014533\" sy=\"Saatuban\" syi=\"30001386\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"Yvangier VIII - X-Sense Chemical Storage\" se=\"0.4\" si=\"60014536\" sy=\"Yvangier\" syi=\"30004977\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"Charmerout IX - Moon 3 - X-Sense Chemical Refinery\" se=\"0.6\" si=\"60014539\" sy=\"Charmerout\" syi=\"30004976\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"Charmerout I - X-Sense Chemical Refinery\" se=\"0.6\" si=\"60014542\" sy=\"Charmerout\" syi=\"30004976\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Stayme VI - Moon 3 - X-Sense Chemical Refinery\" se=\"0.6\" si=\"60014545\" sy=\"Stayme\" syi=\"30002675\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Inghenges V - Moon 3 - X-Sense Chemical Refinery\" se=\"0.7\" si=\"60014548\" sy=\"Inghenges\" syi=\"30002672\"/>\r\n    <row c=\"Jonenor\" ci=\"20000391\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Inghenges IV - Moon 4 - X-Sense Chemical Refinery\" se=\"0.7\" si=\"60014551\" sy=\"Inghenges\" syi=\"30002672\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Groothese XI - Moon 11 - X-Sense Chemical Storage\" se=\"0.3\" si=\"60014554\" sy=\"Groothese\" syi=\"30003057\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Adeel VIII - X-Sense Reprocessing Facility\" se=\"0.4\" si=\"60014557\" sy=\"Adeel\" syi=\"30003059\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Olide IV - Moon 1 - X-Sense Chemical Refinery\" se=\"0.7\" si=\"60014560\" sy=\"Olide\" syi=\"30003058\"/>\r\n    <row c=\"Sasen\" ci=\"20000448\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Kourmonen V - Moon 4 - X-Sense Chemical Refinery\" se=\"0.4\" si=\"60014563\" sy=\"Kourmonen\" syi=\"30003068\"/>\r\n    <row c=\"Sasen\" ci=\"20000448\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Kourmonen II - Moon 2 - X-Sense Chemical Refinery\" se=\"0.4\" si=\"60014566\" sy=\"Kourmonen\" syi=\"30003068\"/>\r\n    <row c=\"Sasen\" ci=\"20000448\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Kourmonen V - Moon 13 - X-Sense Chemical Refinery\" se=\"0.4\" si=\"60014569\" sy=\"Kourmonen\" syi=\"30003068\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"Osmeden IX - Moon 8 - X-Sense Chemical Refinery\" se=\"0.7\" si=\"60014572\" sy=\"Osmeden\" syi=\"30003831\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"Chardalane V - X-Sense Reprocessing Facility\" se=\"0.4\" si=\"60014575\" sy=\"Chardalane\" syi=\"30003834\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"Osmeden VII - Moon 2 - X-Sense Chemical Refinery\" se=\"0.7\" si=\"60014578\" sy=\"Osmeden\" syi=\"30003831\"/>\r\n    <row c=\"Kakol\" ci=\"20000597\" r=\"Kador\" ri=\"10000052\" s=\"Ghesis V - Moon 2 - X-Sense Chemical Refinery\" se=\"0.5\" si=\"60014581\" sy=\"Ghesis\" syi=\"30004084\"/>\r\n    <row c=\"Kakol\" ci=\"20000597\" r=\"Kador\" ri=\"10000052\" s=\"Ghesis V - Moon 22 - X-Sense Chemical Refinery\" se=\"0.5\" si=\"60014584\" sy=\"Ghesis\" syi=\"30004084\"/>\r\n    <row c=\"Kakol\" ci=\"20000597\" r=\"Kador\" ri=\"10000052\" s=\"Ghesis V - Moon 9 - X-Sense Chemical Refinery\" se=\"0.5\" si=\"60014587\" sy=\"Ghesis\" syi=\"30004084\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Sonama VII - Moon 16 - X-Sense Chemical Refinery\" se=\"0.8\" si=\"60014590\" sy=\"Sonama\" syi=\"30004099\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Sonama VII - Moon 14 - X-Sense Chemical Refinery\" se=\"0.8\" si=\"60014593\" sy=\"Sonama\" syi=\"30004099\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Sonama VI - Moon 15 - X-Sense Chemical Refinery\" se=\"0.8\" si=\"60014596\" sy=\"Sonama\" syi=\"30004099\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Sehmy VIII - Moon 2 - Hedion University\" se=\"1.0\" si=\"60014599\" sy=\"Sehmy\" syi=\"30005042\"/>\r\n    <row c=\"Kihkounad\" ci=\"20000772\" r=\"Genesis\" ri=\"10000067\" s=\"Azedi II - Hedion University\" se=\"0.3\" si=\"60014602\" sy=\"Azedi\" syi=\"30005275\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Rumida V - Moon 1 - Hedion University\" se=\"0.9\" si=\"60014605\" sy=\"Rumida\" syi=\"30001724\"/>\r\n    <row c=\"Liela\" ci=\"20000333\" r=\"Domain\" ri=\"10000043\" s=\"Avair X - Hedion University\" se=\"0.4\" si=\"60014608\" sy=\"Avair\" syi=\"30002270\"/>\r\n    <row c=\"Daredan\" ci=\"20000438\" r=\"Devoid\" ri=\"10000036\" s=\"Riavayed IX - Moon 12 - Hedion University\" se=\"0.6\" si=\"60014611\" sy=\"Riavayed\" syi=\"30002993\"/>\r\n    <row c=\"Ohvarainen\" ci=\"20000452\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Komaa VI - Moon 17 - Hedion University\" se=\"0.6\" si=\"60014614\" sy=\"Komaa\" syi=\"30003092\"/>\r\n    <row c=\"Kashag\" ci=\"20000508\" r=\"Domain\" ri=\"10000043\" s=\"Mista VI - Moon 16 - Hedion University\" se=\"0.5\" si=\"60014617\" sy=\"Mista\" syi=\"30003482\"/>\r\n    <row c=\"Tsemshatel\" ci=\"20000253\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Moutid II - Moon 14 - Hedion University\" se=\"0.7\" si=\"60014620\" sy=\"Moutid\" syi=\"30001715\"/>\r\n    <row c=\"Tid\" ci=\"20000624\" r=\"Aridia\" ri=\"10000054\" s=\"Nema X - Moon 6 - Hedion University\" se=\"0.3\" si=\"60014623\" sy=\"Nema\" syi=\"30004267\"/>\r\n    <row c=\"Makh\" ci=\"20000769\" r=\"Genesis\" ri=\"10000067\" s=\"Korridi IV - Hedion University\" se=\"0.3\" si=\"60014626\" sy=\"Korridi\" syi=\"30005258\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Chaven VIII - Moon 1 - Imperial Academy\" se=\"1.0\" si=\"60014629\" sy=\"Chaven\" syi=\"30003489\"/>\r\n    <row c=\"Maddam\" ci=\"20000514\" r=\"Domain\" ri=\"10000043\" s=\"Sarum Prime III - Moon 2 - Imperial Academy\" se=\"1.0\" si=\"60014632\" sy=\"Sarum Prime\" syi=\"30003522\"/>\r\n    <row c=\"Sukanan\" ci=\"20000249\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Ordat V - Moon 1 - Imperial Academy\" se=\"0.3\" si=\"60014635\" sy=\"Ordat\" syi=\"30001685\"/>\r\n    <row c=\"Fua\" ci=\"20000507\" r=\"Domain\" ri=\"10000043\" s=\"Fahruni XI - Imperial Academy\" se=\"0.5\" si=\"60014638\" sy=\"Fahruni\" syi=\"30003473\"/>\r\n    <row c=\"Naloran\" ci=\"20000606\" r=\"Kador\" ri=\"10000052\" s=\"Hikansog VII - Imperial Academy\" se=\"0.8\" si=\"60014641\" sy=\"Hikansog\" syi=\"30004142\"/>\r\n    <row c=\"Anidaza\" ci=\"20000254\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Paye VI - Moon 1 - Imperial Academy\" se=\"0.6\" si=\"60014644\" sy=\"Paye\" syi=\"30001718\"/>\r\n    <row c=\"Helab\" ci=\"20000625\" r=\"Aridia\" ri=\"10000054\" s=\"Ajna VIII - Moon 5 - Imperial Academy\" se=\"0.2\" si=\"60014647\" sy=\"Ajna\" syi=\"30004277\"/>\r\n    <row c=\"Kihkounad\" ci=\"20000772\" r=\"Genesis\" ri=\"10000067\" s=\"Azedi V - Moon 1 - Imperial Academy\" se=\"0.3\" si=\"60014650\" sy=\"Azedi\" syi=\"30005275\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Tew VII - Imperial Academy\" se=\"0.9\" si=\"60014653\" sy=\"Tew\" syi=\"30001733\"/>\r\n    <row c=\"Ravin\" ci=\"20000741\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Schmaeel VIII - Moon 9 - Imperial Academy\" se=\"0.2\" si=\"60014656\" sy=\"Schmaeel\" syi=\"30005063\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Kisogo VII - State War Academy\" se=\"1.0\" si=\"60014659\" sy=\"Kisogo\" syi=\"30000141\"/>\r\n    <row c=\"Makiriemi\" ci=\"20000203\" r=\"Lonetrek\" ri=\"10000016\" s=\"Piekura VIII - Moon 11 - State War Academy\" se=\"0.5\" si=\"60014662\" sy=\"Piekura\" syi=\"30001391\"/>\r\n    <row c=\"Imurukka\" ci=\"20000401\" r=\"The Citadel\" ri=\"10000033\" s=\"Eitu VI - Moon 3 - State War Academy\" se=\"0.5\" si=\"60014665\" sy=\"Eitu\" syi=\"30002740\"/>\r\n    <row c=\"Suon\" ci=\"20000409\" r=\"The Citadel\" ri=\"10000033\" s=\"Irjunen IV - House of Records School\" se=\"0.5\" si=\"60014668\" sy=\"Irjunen\" syi=\"30002792\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Uosusuokko VII - Moon 1 - State War Academy\" se=\"0.7\" si=\"60014671\" sy=\"Uosusuokko\" syi=\"30001366\"/>\r\n    <row c=\"Malariya\" ci=\"20000210\" r=\"Lonetrek\" ri=\"10000016\" s=\"Uesuro IV - State War Academy\" se=\"0.5\" si=\"60014674\" sy=\"Uesuro\" syi=\"30001432\"/>\r\n    <row c=\"Ieyama\" ci=\"20000404\" r=\"The Citadel\" ri=\"10000033\" s=\"Usi VI - Moon 23 - State War Academy\" se=\"0.5\" si=\"60014677\" sy=\"Usi\" syi=\"30002755\"/>\r\n    <row c=\"Kainokai\" ci=\"20000207\" r=\"Lonetrek\" ri=\"10000016\" s=\"Autama V - Moon 9 - State War Academy\" se=\"0.8\" si=\"60014680\" sy=\"Autama\" syi=\"30001411\"/>\r\n    <row c=\"Outartoh\" ci=\"20000407\" r=\"The Citadel\" ri=\"10000033\" s=\"Annaro VIII - Moon 4 - State War Academy\" se=\"0.8\" si=\"60014683\" sy=\"Annaro\" syi=\"30002776\"/>\r\n    <row c=\"Okkelen\" ci=\"20000024\" r=\"The Forge\" ri=\"10000002\" s=\"Ishisomo VIII - Moon 11 - State War Academy\" se=\"0.7\" si=\"60014686\" sy=\"Ishisomo\" syi=\"30000165\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Duripant VII - Moon 6 - Federal Navy Academy\" se=\"1.0\" si=\"60014689\" sy=\"Duripant\" syi=\"30004971\"/>\r\n    <row c=\"Lolbrerie\" ci=\"20000393\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Dodenvale VIII - Federal Navy Academy\" se=\"0.7\" si=\"60014692\" sy=\"Dodenvale\" syi=\"30002685\"/>\r\n    <row c=\"Ancbeu\" ci=\"20000779\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Scolluzer VII - Moon 3 - Federal Navy Academy\" se=\"0.8\" si=\"60014695\" sy=\"Scolluzer\" syi=\"30005322\"/>\r\n    <row c=\"Chasnaye\" ci=\"20000442\" r=\"Everyshore\" ri=\"10000037\" s=\"Harerget II - Moon 1 - Federal Navy Academy\" se=\"0.8\" si=\"60014698\" sy=\"Harerget\" syi=\"30003017\"/>\r\n    <row c=\"Braille\" ci=\"20000520\" r=\"Solitude\" ri=\"10000044\" s=\"Elore VI - Moon 4 - Federal Navy Academy\" se=\"0.2\" si=\"60014701\" sy=\"Elore\" syi=\"30003570\"/>\r\n    <row c=\"Woenckee\" ci=\"20000775\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Ouelletta V - Moon 5 - Federal Navy Academy\" se=\"0.4\" si=\"60014704\" sy=\"Ouelletta\" syi=\"30005297\"/>\r\n    <row c=\"Serthoulde\" ci=\"20000563\" r=\"Placid\" ri=\"10000048\" s=\"Alparena V - Moon 4 - Federal Navy Academy\" se=\"0.1\" si=\"60014707\" sy=\"Alparena\" syi=\"30003850\"/>\r\n    <row c=\"Balrille\" ci=\"20000730\" r=\"Essence\" ri=\"10000064\" s=\"Vitrauze XI - Moon 2 - Federal Navy Academy\" se=\"0.3\" si=\"60014710\" sy=\"Vitrauze\" syi=\"30004991\"/>\r\n    <row c=\"Arand\" ci=\"20000733\" r=\"Essence\" ri=\"10000064\" s=\"Allebin VI - Federal Navy Academy\" se=\"0.5\" si=\"60014713\" sy=\"Allebin\" syi=\"30005009\"/>\r\n    <row c=\"Aeman\" ci=\"20000398\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Rancer VI - Moon 6 - Federal Navy Academy\" se=\"0.4\" si=\"60014716\" sy=\"Rancer\" syi=\"30002718\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Cistuvaert V - Moon 12 - Center for Advanced Studies School\" se=\"1.0\" si=\"60014719\" sy=\"Cistuvaert\" syi=\"30005305\"/>\r\n    <row c=\"Ganoure\" ci=\"20000558\" r=\"Placid\" ri=\"10000048\" s=\"Barleguet VII - Moon 6 - Center for Advanced Studies School\" se=\"0.1\" si=\"60014722\" sy=\"Barleguet\" syi=\"30003819\"/>\r\n    <row c=\"Giatole\" ci=\"20000445\" r=\"Everyshore\" ri=\"10000037\" s=\"Leremblompes IV - Moon 11 - Center for Advanced Studies School\" se=\"0.6\" si=\"60014725\" sy=\"Leremblompes\" syi=\"30003039\"/>\r\n    <row c=\"Peccanouette\" ci=\"20000732\" r=\"Essence\" ri=\"10000064\" s=\"Lisbaetanne V - Moon 8 - Center for Advanced Studies School\" se=\"0.4\" si=\"60014728\" sy=\"Lisbaetanne\" syi=\"30005007\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Slays VII - Moon 3 - Center for Advanced Studies School\" se=\"0.5\" si=\"60014731\" sy=\"Slays\" syi=\"30003798\"/>\r\n    <row c=\"Firille\" ci=\"20000390\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Foves V - Center for Advanced Studies School\" se=\"0.6\" si=\"60014734\" sy=\"Foves\" syi=\"30002663\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"Agoze IX - Moon 2 - Center for Advanced Studies School\" se=\"0.2\" si=\"60014737\" sy=\"Agoze\" syi=\"30003787\"/>\r\n    <row c=\"Disier\" ci=\"20000386\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Balle VII - Moon 17 - Center for Advanced Studies School\" se=\"0.5\" si=\"60014740\" sy=\"Balle\" syi=\"30002634\"/>\r\n    <row c=\"Spaen\" ci=\"20000388\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Ardene VIII - Moon 11 - Center for Advanced Studies School\" se=\"0.6\" si=\"60014743\" sy=\"Ardene\" syi=\"30002648\"/>\r\n    <row c=\"Marele\" ci=\"20000447\" r=\"Everyshore\" ri=\"10000037\" s=\"Olide IV - Moon 4 - Center for Advanced Studies School\" se=\"0.7\" si=\"60014746\" sy=\"Olide\" syi=\"30003058\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Ammold V - Republic Military School\" se=\"1.0\" si=\"60014749\" sy=\"Ammold\" syi=\"30002547\"/>\r\n    <row c=\"Fittakan\" ci=\"20000350\" r=\"Molden Heath\" ri=\"10000028\" s=\"Gelfiven IX - Moon 4 - Native Freshfood School\" se=\"0.6\" si=\"60014752\" sy=\"Gelfiven\" syi=\"30002386\"/>\r\n    <row c=\"Osta\" ci=\"20000369\" r=\"Heimatar\" ri=\"10000030\" s=\"Dumkirinur V - Republic Military School\" se=\"0.7\" si=\"60014755\" sy=\"Dumkirinur\" syi=\"30002520\"/>\r\n    <row c=\"Fribrodi\" ci=\"20000306\" r=\"Metropolis\" ri=\"10000042\" s=\"Dudreda VI - Moon 4 - Republic Military School\" se=\"0.3\" si=\"60014758\" sy=\"Dudreda\" syi=\"30002076\"/>\r\n    <row c=\"Tartatven\" ci=\"20000351\" r=\"Molden Heath\" ri=\"10000028\" s=\"Aedald VIII - Moon 5 - Republic Military School\" se=\"0.3\" si=\"60014761\" sy=\"Aedald\" syi=\"30002393\"/>\r\n    <row c=\"Urtfer\" ci=\"20000376\" r=\"Heimatar\" ri=\"10000030\" s=\"Trer VIII - Moon 16 - Republic Military School\" se=\"0.7\" si=\"60014764\" sy=\"Trer\" syi=\"30002562\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"Frerstorn VI - Moon 8 - Republic Military School\" se=\"0.3\" si=\"60014767\" sy=\"Frerstorn\" syi=\"30002090\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Anher V - Republic Military School\" se=\"0.5\" si=\"60014770\" sy=\"Anher\" syi=\"30002051\"/>\r\n    <row c=\"Wiedadur\" ci=\"20000371\" r=\"Heimatar\" ri=\"10000030\" s=\"Gerbold III - Moon 14 - Republic Military School\" se=\"0.8\" si=\"60014773\" sy=\"Gerbold\" syi=\"30002533\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"Evettullur VI - Republic Military School\" se=\"0.8\" si=\"60014776\" sy=\"Evettullur\" syi=\"30003408\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Hulm VIII - Moon 2 - Republic University\" se=\"1.0\" si=\"60014779\" sy=\"Hulm\" syi=\"30002505\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Illuin V - Moon 13 - Republic University\" se=\"0.9\" si=\"60014782\" sy=\"Illuin\" syi=\"30003377\"/>\r\n    <row c=\"Argeir\" ci=\"20000504\" r=\"Metropolis\" ri=\"10000042\" s=\"Hotrardik VI - Moon 17 - Republic University\" se=\"0.7\" si=\"60014785\" sy=\"Hotrardik\" syi=\"30003456\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"Sirekur VIII - Moon 1 - Republic University\" se=\"0.3\" si=\"60014788\" sy=\"Sirekur\" syi=\"30002092\"/>\r\n    <row c=\"Wiedadur\" ci=\"20000371\" r=\"Heimatar\" ri=\"10000030\" s=\"Gerek V - Moon 3 - Republic University\" se=\"0.7\" si=\"60014791\" sy=\"Gerek\" syi=\"30002531\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"Hroduko V - Moon 4 - Republic University\" se=\"0.7\" si=\"60014794\" sy=\"Hroduko\" syi=\"30003468\"/>\r\n    <row c=\"Evannater\" ci=\"20000375\" r=\"Heimatar\" ri=\"10000030\" s=\"Gultratren V - Moon 4 - Republic University\" se=\"0.3\" si=\"60014797\" sy=\"Gultratren\" syi=\"30002560\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Floseswin VIII - Moon 7 - Republic University\" se=\"0.4\" si=\"60014800\" sy=\"Floseswin\" syi=\"30002082\"/>\r\n    <row c=\"Inkelm\" ci=\"20000502\" r=\"Metropolis\" ri=\"10000042\" s=\"Earwik VI - Moon 10 - Republic University\" se=\"0.6\" si=\"60014803\" sy=\"Earwik\" syi=\"30003441\"/>\r\n    <row c=\"Ani\" ci=\"20000305\" r=\"Metropolis\" ri=\"10000042\" s=\"Nakugard V - Republic University\" se=\"0.5\" si=\"60014806\" sy=\"Nakugard\" syi=\"30002068\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"Ryddinjorn VI - Moon 2 - Pator Tech School\" se=\"1.0\" si=\"60014809\" sy=\"Ryddinjorn\" syi=\"30003410\"/>\r\n    <row c=\"Argeir\" ci=\"20000504\" r=\"Metropolis\" ri=\"10000042\" s=\"Orduin IX - Moon 12 - Pator Tech School\" se=\"0.8\" si=\"60014812\" sy=\"Orduin\" syi=\"30003453\"/>\r\n    <row c=\"Tartatven\" ci=\"20000351\" r=\"Molden Heath\" ri=\"10000028\" s=\"Heild X - Moon 1 - Pator Tech School\" se=\"0.3\" si=\"60014815\" sy=\"Heild\" syi=\"30002390\"/>\r\n    <row c=\"Aptetter\" ci=\"20000498\" r=\"Metropolis\" ri=\"10000042\" s=\"Aldrat IX - Pator Tech School\" se=\"0.6\" si=\"60014818\" sy=\"Aldrat\" syi=\"30003416\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Isbrabata VII - Moon 1 - Pator Tech School\" se=\"0.4\" si=\"60014821\" sy=\"Isbrabata\" syi=\"30002087\"/>\r\n    <row c=\"Almur\" ci=\"20000353\" r=\"Molden Heath\" ri=\"10000028\" s=\"Half VIII - Moon 1 - Pator Tech School\" se=\"0.2\" si=\"60014824\" sy=\"Half\" syi=\"30002404\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Amamake VI - Moon 8 - Pator Tech School\" se=\"0.4\" si=\"60014827\" sy=\"Amamake\" syi=\"30002537\"/>\r\n    <row c=\"Hulf\" ci=\"20000506\" r=\"Metropolis\" ri=\"10000042\" s=\"Frulegur IV - Moon 1 - Pator Tech School\" se=\"0.4\" si=\"60014830\" sy=\"Frulegur\" syi=\"30003467\"/>\r\n    <row c=\"Odengsolf\" ci=\"20000370\" r=\"Heimatar\" ri=\"10000030\" s=\"Illinfrik VII - Moon 12 - Pator Tech School\" se=\"0.8\" si=\"60014833\" sy=\"Illinfrik\" syi=\"30002527\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Todifrauan VII - Moon 19 - Pator Tech School\" se=\"0.1\" si=\"60014836\" sy=\"Todifrauan\" syi=\"30002062\"/>\r\n    <row c=\"9RW5-Z\" ci=\"20000054\" r=\"UUA-F4\" ri=\"10000004\" s=\"Polaris I - Polaris Corporation Plantation\" se=\"0.0\" si=\"60014839\" sy=\"Polaris\" syi=\"30000380\"/>\r\n    <row c=\"9RW5-Z\" ci=\"20000054\" r=\"UUA-F4\" ri=\"10000004\" s=\"Polaris II - Polaris Corporation Plantation\" se=\"0.0\" si=\"60014842\" sy=\"Polaris\" syi=\"30000380\"/>\r\n    <row c=\"9RW5-Z\" ci=\"20000054\" r=\"UUA-F4\" ri=\"10000004\" s=\"Polaris III - Polaris Corporation Plantation\" se=\"0.0\" si=\"60014845\" sy=\"Polaris\" syi=\"30000380\"/>\r\n    <row c=\"9RW5-Z\" ci=\"20000054\" r=\"UUA-F4\" ri=\"10000004\" s=\"Polaris IV - Polaris Corporation Plantation\" se=\"0.0\" si=\"60014848\" sy=\"Polaris\" syi=\"30000380\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"M-FDTD I - Material Institute School\" se=\"0.0\" si=\"60014851\" sy=\"M-FDTD\" syi=\"30001479\"/>\r\n    <row c=\"I4-DK8\" ci=\"20000218\" r=\"J7HZ-F\" ri=\"10000017\" s=\"HD3-JK I - Academy of Aggressive Behaviour\" se=\"0.0\" si=\"60014854\" sy=\"HD3-JK\" syi=\"30001482\"/>\r\n    <row c=\"Lolbrerie\" ci=\"20000393\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Crielere I - Ishukone Corporation Research Center\" se=\"0.4\" si=\"60014857\" sy=\"Crielere\" syi=\"30002691\"/>\r\n    <row c=\"Lolbrerie\" ci=\"20000393\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Crielere I - Duvolle Laboratories Research Center\" se=\"0.4\" si=\"60014860\" sy=\"Crielere\" syi=\"30002691\"/>\r\n    <row c=\"88G-M4\" ci=\"20000046\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #60014861\" se=\"0.0\" si=\"60014861\" sy=\"JZV-F4\" syi=\"30000325\"/>\r\n    <row c=\"ZPI-2E\" ci=\"20000070\" r=\"Detorid\" ri=\"10000005\" s=\"Conquerable Station #60014862\" se=\"0.0\" si=\"60014862\" sy=\"0-G8NO\" syi=\"30000480\"/>\r\n    <row c=\"J-9M7D\" ci=\"20000083\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #60014863\" se=\"0.0\" si=\"60014863\" sy=\"4-EFLU\" syi=\"30000576\"/>\r\n    <row c=\"VSC-W9\" ci=\"20000093\" r=\"Cache\" ri=\"10000007\" s=\"Conquerable Station #60014864\" se=\"0.0\" si=\"60014864\" sy=\"P7-45V\" syi=\"30000638\"/>\r\n    <row c=\"WQZ8-4\" ci=\"20000104\" r=\"Scalding Pass\" ri=\"10000008\" s=\"Conquerable Station #60014865\" se=\"0.0\" si=\"60014865\" sy=\"28Y9-P\" syi=\"30000714\"/>\r\n    <row c=\"N-LY4R\" ci=\"20000119\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #60014866\" se=\"0.0\" si=\"60014866\" sy=\"N7-BIY\" syi=\"30000811\"/>\r\n    <row c=\"W-XBGF\" ci=\"20000131\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #60014867\" se=\"0.0\" si=\"60014867\" sy=\"IMK-K1\" syi=\"30000895\"/>\r\n    <row c=\"BRP2-K\" ci=\"20000183\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #60014868\" se=\"0.0\" si=\"60014868\" sy=\"FAT-6P\" syi=\"30001256\"/>\r\n    <row c=\"K-N3MD\" ci=\"20000315\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #60014869\" se=\"0.0\" si=\"60014869\" sy=\"Z-H2MA\" syi=\"30002141\"/>\r\n    <row c=\"EK-NQ2\" ci=\"20000383\" r=\"Impass\" ri=\"10000031\" s=\"Conquerable Station #60014870\" se=\"0.0\" si=\"60014870\" sy=\"Z-N9IP\" syi=\"30002617\"/>\r\n    <row c=\"D-AWFI\" ci=\"20000432\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #60014871\" se=\"0.0\" si=\"60014871\" sy=\"CZDJ-1\" syi=\"30002953\"/>\r\n    <row c=\"JSZ-X6\" ci=\"20000456\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #60014872\" se=\"0.0\" si=\"60014872\" sy=\"BZ-0GW\" syi=\"30003121\"/>\r\n    <row c=\"1D-65L\" ci=\"20000534\" r=\"Tenal\" ri=\"10000045\" s=\"Conquerable Station #60014873\" se=\"0.0\" si=\"60014873\" sy=\"V7-MID\" syi=\"30003666\"/>\r\n    <row c=\"VNX-P0\" ci=\"20000539\" r=\"Fade\" ri=\"10000046\" s=\"Conquerable Station #60014874\" se=\"0.0\" si=\"60014874\" sy=\"I-UUI5\" syi=\"30003701\"/>\r\n    <row c=\"XLL-Z7\" ci=\"20000589\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #60014875\" se=\"0.0\" si=\"60014875\" sy=\"H74-B0\" syi=\"30004034\"/>\r\n    <row c=\"Prelle\" ci=\"20000593\" r=\"Cloud Ring\" ri=\"10000051\" s=\"Conquerable Station #60014876\" se=\"0.0\" si=\"60014876\" sy=\"XZH-4X\" syi=\"30004062\"/>\r\n    <row c=\"KWCZ-A\" ci=\"20000641\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #60014877\" se=\"0.0\" si=\"60014877\" sy=\"D4R-H7\" syi=\"30004386\"/>\r\n    <row c=\"3-PC31\" ci=\"20000655\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #60014878\" se=\"0.0\" si=\"60014878\" sy=\"2-RSC7\" syi=\"30004492\"/>\r\n    <row c=\"D9DM-O\" ci=\"20000687\" r=\"Paragon Soul\" ri=\"10000059\" s=\"Conquerable Station #60014879\" se=\"0.0\" si=\"60014879\" sy=\"MP5-KR\" syi=\"30004702\"/>\r\n    <row c=\"O-EIMK\" ci=\"20000696\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #60014880\" se=\"0.0\" si=\"60014880\" sy=\"MO-GZ5\" syi=\"30004765\"/>\r\n    <row c=\"W-3E44\" ci=\"20000714\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #60014881\" se=\"0.0\" si=\"60014881\" sy=\"JV1V-O\" syi=\"30004883\"/>\r\n    <row c=\"RL36-K\" ci=\"20000720\" r=\"Omist\" ri=\"10000062\" s=\"Conquerable Station #60014882\" se=\"0.0\" si=\"60014882\" sy=\"Z-7OK1\" syi=\"30004921\"/>\r\n    <row c=\"OY3-DM\" ci=\"20000726\" r=\"Period Basis\" ri=\"10000063\" s=\"Conquerable Station #60014883\" se=\"0.0\" si=\"60014883\" sy=\"G-Q5JU\" syi=\"30004962\"/>\r\n    <row c=\"9KX-M0\" ci=\"20000045\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #60014884\" se=\"0.0\" si=\"60014884\" sy=\"LS-JEP\" syi=\"30000319\"/>\r\n    <row c=\"RFQ-8Y\" ci=\"20000064\" r=\"Detorid\" ri=\"10000005\" s=\"Conquerable Station #60014885\" se=\"0.0\" si=\"60014885\" sy=\"0-W778\" syi=\"30000440\"/>\r\n    <row c=\"R-M719\" ci=\"20000084\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #60014886\" se=\"0.0\" si=\"60014886\" sy=\"F-EM4Q\" syi=\"30000578\"/>\r\n    <row c=\"Y-JSM8\" ci=\"20000092\" r=\"Cache\" ri=\"10000007\" s=\"Conquerable Station #60014887\" se=\"0.0\" si=\"60014887\" sy=\"M53-1V\" syi=\"30000633\"/>\r\n    <row c=\"02QH-A\" ci=\"20000103\" r=\"Scalding Pass\" ri=\"10000008\" s=\"Conquerable Station #60014888\" se=\"0.0\" si=\"60014888\" sy=\"JLO-Z3\" syi=\"30000708\"/>\r\n    <row c=\"N5V-Y0\" ci=\"20000118\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #60014889\" se=\"0.0\" si=\"60014889\" sy=\"F2A-GX\" syi=\"30000804\"/>\r\n    <row c=\"52-JKU\" ci=\"20000127\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #60014890\" se=\"0.0\" si=\"60014890\" sy=\"D7-ZAC\" syi=\"30000867\"/>\r\n    <row c=\"6JCS-4\" ci=\"20000181\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #60014891\" se=\"0.0\" si=\"60014891\" sy=\"5-N2EY\" syi=\"30001241\"/>\r\n    <row c=\"EL8Z-M\" ci=\"20000318\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #60014892\" se=\"0.0\" si=\"60014892\" sy=\"E8-YS9\" syi=\"30002163\"/>\r\n    <row c=\"QZJ-FL\" ci=\"20000385\" r=\"Impass\" ri=\"10000031\" s=\"Conquerable Station #60014893\" se=\"0.0\" si=\"60014893\" sy=\"FR-B1H\" syi=\"30002630\"/>\r\n    <row c=\"A21H-Z\" ci=\"20000430\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #60014894\" se=\"0.0\" si=\"60014894\" sy=\"3JN9-Q\" syi=\"30002937\"/>\r\n    <row c=\"7ZRW-G\" ci=\"20000459\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #60014895\" se=\"0.0\" si=\"60014895\" sy=\"111-F1\" syi=\"30003147\"/>\r\n    <row c=\"GFE-SS\" ci=\"20000531\" r=\"Tenal\" ri=\"10000045\" s=\"Conquerable Station #60014896\" se=\"0.0\" si=\"60014896\" sy=\"6OYQ-Z\" syi=\"30003648\"/>\r\n    <row c=\"VNX-P0\" ci=\"20000539\" r=\"Fade\" ri=\"10000046\" s=\"Conquerable Station #60014897\" se=\"0.0\" si=\"60014897\" sy=\"C4C-Z4\" syi=\"30003697\"/>\r\n    <row c=\"8ET-D1\" ci=\"20000584\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #60014898\" se=\"0.0\" si=\"60014898\" sy=\"3BK-O7\" syi=\"30004000\"/>\r\n    <row c=\"Prelle\" ci=\"20000593\" r=\"Cloud Ring\" ri=\"10000051\" s=\"Conquerable Station #60014899\" se=\"0.0\" si=\"60014899\" sy=\"G8AD-C\" syi=\"30004061\"/>\r\n    <row c=\"0C-PZ4\" ci=\"20000633\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #60014900\" se=\"0.0\" si=\"60014900\" sy=\"BKG-Q2\" syi=\"30004333\"/>\r\n    <row c=\"OFQ-HG\" ci=\"20000651\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #60014901\" se=\"0.0\" si=\"60014901\" sy=\"UB5Z-3\" syi=\"30004463\"/>\r\n    <row c=\"GEP-XF\" ci=\"20000686\" r=\"Paragon Soul\" ri=\"10000059\" s=\"Conquerable Station #60014902\" se=\"0.0\" si=\"60014902\" sy=\"GQ2S-8\" syi=\"30004694\"/>\r\n    <row c=\"1-A81R\" ci=\"20000700\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #60014903\" se=\"0.0\" si=\"60014903\" sy=\"5-6QW7\" syi=\"30004789\"/>\r\n    <row c=\"EIX-HK\" ci=\"20000711\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #60014904\" se=\"0.0\" si=\"60014904\" sy=\"NZW-ZO\" syi=\"30004863\"/>\r\n    <row c=\"5Z0Y-S\" ci=\"20000717\" r=\"Omist\" ri=\"10000062\" s=\"Conquerable Station #60014905\" se=\"0.0\" si=\"60014905\" sy=\"D2EZ-X\" syi=\"30004902\"/>\r\n    <row c=\"N-39FI\" ci=\"20000722\" r=\"Period Basis\" ri=\"10000063\" s=\"Conquerable Station #60014906\" se=\"0.0\" si=\"60014906\" sy=\"TPAR-G\" syi=\"30004935\"/>\r\n    <row c=\"0-8MWQ\" ci=\"20000042\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #60014907\" se=\"0.0\" si=\"60014907\" sy=\"ZLZ-1Z\" syi=\"30000296\"/>\r\n    <row c=\"RFQ-8Y\" ci=\"20000064\" r=\"Detorid\" ri=\"10000005\" s=\"Conquerable Station #60014908\" se=\"0.0\" si=\"60014908\" sy=\"DG-8VJ\" syi=\"30000441\"/>\r\n    <row c=\"R-M719\" ci=\"20000084\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #60014909\" se=\"0.0\" si=\"60014909\" sy=\"Q-GQHN\" syi=\"30000586\"/>\r\n    <row c=\"BVA-YH\" ci=\"20000089\" r=\"Cache\" ri=\"10000007\" s=\"Conquerable Station #60014910\" se=\"0.0\" si=\"60014910\" sy=\"995-3G\" syi=\"30000616\"/>\r\n    <row c=\"ENP-SH\" ci=\"20000099\" r=\"Scalding Pass\" ri=\"10000008\" s=\"Conquerable Station #60014911\" se=\"0.0\" si=\"60014911\" sy=\"1V-LI2\" syi=\"30000680\"/>\r\n    <row c=\"QA-P7J\" ci=\"20000113\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #60014912\" se=\"0.0\" si=\"60014912\" sy=\"C-J6MT\" syi=\"30000772\"/>\r\n    <row c=\"LLAP-1\" ci=\"20000126\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #60014913\" se=\"0.0\" si=\"60014913\" sy=\"H-W9TY\" syi=\"30000865\"/>\r\n    <row c=\"A-JI5E\" ci=\"20000178\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #60014914\" se=\"0.0\" si=\"60014914\" sy=\"V2-VC2\" syi=\"30001222\"/>\r\n    <row c=\"WTE-CK\" ci=\"20000320\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #60014915\" se=\"0.0\" si=\"60014915\" sy=\"2O-EEW\" syi=\"30002175\"/>\r\n    <row c=\"ZYR-NF\" ci=\"20000380\" r=\"Impass\" ri=\"10000031\" s=\"Conquerable Station #60014916\" se=\"0.0\" si=\"60014916\" sy=\"68FT-6\" syi=\"30002593\"/>\r\n    <row c=\"VW7-YN\" ci=\"20000426\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #60014917\" se=\"0.0\" si=\"60014917\" sy=\"VFK-IV\" syi=\"30002904\"/>\r\n    <row c=\"8T-OLH\" ci=\"20000454\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #60014918\" se=\"0.0\" si=\"60014918\" sy=\"C9N-CC\" syi=\"30003109\"/>\r\n    <row c=\"M-J57M\" ci=\"20000526\" r=\"Tenal\" ri=\"10000045\" s=\"Conquerable Station #60014919\" se=\"0.0\" si=\"60014919\" sy=\"S-EVIQ\" syi=\"30003611\"/>\r\n    <row c=\"UWRZ-2\" ci=\"20000537\" r=\"Fade\" ri=\"10000046\" s=\"Conquerable Station #60014920\" se=\"0.0\" si=\"60014920\" sy=\"L-C3O7\" syi=\"30003689\"/>\r\n    <row c=\"8BO-IH\" ci=\"20000581\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #60014921\" se=\"0.0\" si=\"60014921\" sy=\"9CG6-H\" syi=\"30003979\"/>\r\n    <row c=\"Prelle\" ci=\"20000593\" r=\"Cloud Ring\" ri=\"10000051\" s=\"Conquerable Station #60014922\" se=\"0.0\" si=\"60014922\" sy=\"9-4RP2\" syi=\"30004059\"/>\r\n    <row c=\"XPBM-F\" ci=\"20000640\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #60014923\" se=\"0.0\" si=\"60014923\" sy=\"K-8SQS\" syi=\"30004379\"/>\r\n    <row c=\"3-U491\" ci=\"20000650\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #60014924\" se=\"0.0\" si=\"60014924\" sy=\"VNGJ-U\" syi=\"30004453\"/>\r\n    <row c=\"TCC-ZV\" ci=\"20000683\" r=\"Paragon Soul\" ri=\"10000059\" s=\"Conquerable Station #60014925\" se=\"0.0\" si=\"60014925\" sy=\"H8-ZTO\" syi=\"30004678\"/>\r\n    <row c=\"B4H-9W\" ci=\"20000689\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #60014926\" se=\"0.0\" si=\"60014926\" sy=\"NOL-M9\" syi=\"30004712\"/>\r\n    <row c=\"F5-O9O\" ci=\"20000710\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #60014927\" se=\"0.0\" si=\"60014927\" sy=\"DZ6-I5\" syi=\"30004852\"/>\r\n    <row c=\"8MJO-4\" ci=\"20000718\" r=\"Omist\" ri=\"10000062\" s=\"Conquerable Station #60014928\" se=\"0.0\" si=\"60014928\" sy=\"6T3I-L\" syi=\"30004908\"/>\r\n    <row c=\"9RW5-Z\" ci=\"20000054\" r=\"UUA-F4\" ri=\"10000004\" s=\"Conquerable Station #60014929\" se=\"0.0\" si=\"60014929\" sy=\"Polaris\" syi=\"30000380\"/>\r\n    <row c=\"9RW5-Z\" ci=\"20000054\" r=\"UUA-F4\" ri=\"10000004\" s=\"Conquerable Station #60014930\" se=\"0.0\" si=\"60014930\" sy=\"Polaris\" syi=\"30000380\"/>\r\n    <row c=\"9RW5-Z\" ci=\"20000054\" r=\"UUA-F4\" ri=\"10000004\" s=\"Conquerable Station #60014931\" se=\"0.0\" si=\"60014931\" sy=\"Polaris\" syi=\"30000380\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"New Caldari II (Matias) - Kaalakiota Corporation Factory\" se=\"1.0\" si=\"60014935\" sy=\"New Caldari\" syi=\"30000145\"/>\r\n    <row c=\"XPJ1-6\" ci=\"20000688\" r=\"Delve\" ri=\"10000060\" s=\"UHKL-N V - Moon 1 - Blood Raiders Testing Facilities\" se=\"0.0\" si=\"60014940\" sy=\"UHKL-N\" syi=\"30004706\"/>\r\n    <row c=\"XPJ1-6\" ci=\"20000688\" r=\"Delve\" ri=\"10000060\" s=\"Z3V-1W VII - Blood Raiders Assembly Plant\" se=\"0.0\" si=\"60014941\" sy=\"Z3V-1W\" syi=\"30004707\"/>\r\n    <row c=\"XPJ1-6\" ci=\"20000688\" r=\"Delve\" ri=\"10000060\" s=\"KFIE-Z III - Moon 7 - Blood Raiders Assembly Plant\" se=\"0.0\" si=\"60014942\" sy=\"KFIE-Z\" syi=\"30004709\"/>\r\n    <row c=\"XPJ1-6\" ci=\"20000688\" r=\"Delve\" ri=\"10000060\" s=\"KFIE-Z VIII - Moon 18 - Blood Raiders Logistic Support\" se=\"0.0\" si=\"60014943\" sy=\"KFIE-Z\" syi=\"30004709\"/>\r\n    <row c=\"XPJ1-6\" ci=\"20000688\" r=\"Delve\" ri=\"10000060\" s=\"A-ELE2 VI - Blood Raiders Assembly Plant\" se=\"0.0\" si=\"60014944\" sy=\"A-ELE2\" syi=\"30004708\"/>\r\n    <row c=\"XPJ1-6\" ci=\"20000688\" r=\"Delve\" ri=\"10000060\" s=\"1DH-SX III - Moon 1 - Blood Raiders Logistic Support\" se=\"0.0\" si=\"60014945\" sy=\"1DH-SX\" syi=\"30004710\"/>\r\n    <row c=\"XPJ1-6\" ci=\"20000688\" r=\"Delve\" ri=\"10000060\" s=\"PR-8CA III - Blood Raiders Logistic Support\" se=\"0.0\" si=\"60014946\" sy=\"PR-8CA\" syi=\"30004711\"/>\r\n    <row c=\"6-UCYU\" ci=\"20000690\" r=\"Delve\" ri=\"10000060\" s=\"FWST-8 II - Blood Raiders Logistic Support\" se=\"0.0\" si=\"60014947\" sy=\"FWST-8\" syi=\"30004718\"/>\r\n    <row c=\"6-UCYU\" ci=\"20000690\" r=\"Delve\" ri=\"10000060\" s=\"G-TT5V VII - Moon 11 - Blood Raiders Testing Facilities\" se=\"0.0\" si=\"60014948\" sy=\"G-TT5V\" syi=\"30004721\"/>\r\n    <row c=\"6-UCYU\" ci=\"20000690\" r=\"Delve\" ri=\"10000060\" s=\"YZ9-F6 V - Blood Raiders Assembly Plant\" se=\"0.0\" si=\"60014949\" sy=\"YZ9-F6\" syi=\"30004719\"/>\r\n    <row c=\"6-UCYU\" ci=\"20000690\" r=\"Delve\" ri=\"10000060\" s=\"0N-3RO VII - Moon 14 - Blood Raiders Testing Facilities\" se=\"0.0\" si=\"60014950\" sy=\"0N-3RO\" syi=\"30004720\"/>\r\n    <row c=\"6-UCYU\" ci=\"20000690\" r=\"Delve\" ri=\"10000060\" s=\"319-3D IX - Moon 22 - Blood Raiders Logistic Support\" se=\"0.0\" si=\"60014951\" sy=\"319-3D\" syi=\"30004722\"/>\r\n    <row c=\"6-UCYU\" ci=\"20000690\" r=\"Delve\" ri=\"10000060\" s=\"I3Q-II VII - Moon 2 - Blood Raiders Assembly Plant\" se=\"0.0\" si=\"60014952\" sy=\"I3Q-II\" syi=\"30004723\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Akiainavas III - School of Applied Knowledge\" se=\"0.7\" si=\"60015001\" sy=\"Akiainavas\" syi=\"30011407\"/>\r\n    <row c=\"Ihilakken\" ci=\"20000019\" r=\"The Forge\" ri=\"10000002\" s=\"Aokannitoh VII - Moon 2 - School of Applied Knowledge\" se=\"1.0\" si=\"60015002\" sy=\"Aokannitoh\" syi=\"30021407\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Hitanishio VI - Moon 6 - School of Applied Knowledge\" se=\"0.9\" si=\"60015003\" sy=\"Hitanishio\" syi=\"30031407\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Ichinumi VII - School of Applied Knowledge\" se=\"0.9\" si=\"60015004\" sy=\"Ichinumi\" syi=\"30041407\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Jouvulen III - Science and Trade Institute School\" se=\"0.9\" si=\"60015005\" sy=\"Jouvulen\" syi=\"30011392\"/>\r\n    <row c=\"Koichi\" ci=\"20000199\" r=\"Lonetrek\" ri=\"10000016\" s=\"Kappas VIII - Moon 1 - Science and Trade Institute School\" se=\"0.9\" si=\"60015006\" sy=\"Kappas\" syi=\"30021392\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"Komo IX - Perun Clade Proving Complex\" se=\"0.0\" si=\"60015007\" sy=\"Komo\" syi=\"30031392\"/>\r\n    <row c=\"Santenpaa\" ci=\"20000413\" r=\"The Citadel\" ri=\"10000033\" s=\"Laah VIII - Moon 1 - Science and Trade Institute School\" se=\"0.9\" si=\"60015008\" sy=\"Laah\" syi=\"30041392\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Kerepa I - Royal Amarr Institute School\" se=\"1.0\" si=\"60015009\" sy=\"Kerepa\" syi=\"30011672\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Pasha VII - Moon 3 - Royal Amarr Institute School\" se=\"0.9\" si=\"60015010\" sy=\"Pasha\" syi=\"30021672\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Safilbab VIII - Moon 4 - Royal Amarr Institute School\" se=\"1.0\" si=\"60015011\" sy=\"Safilbab\" syi=\"30031672\"/>\r\n    <row c=\"Subhatoub\" ci=\"20000256\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Seitam VI - Royal Amarr Institute School\" se=\"0.9\" si=\"60015012\" sy=\"Seitam\" syi=\"30041672\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Odotte III - University of Caille\" se=\"0.9\" si=\"60015013\" sy=\"Odotte\" syi=\"30012715\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Oirtlair VI - Moon 1 - University of Caille\" se=\"0.9\" si=\"60015014\" sy=\"Oirtlair\" syi=\"30022715\"/>\r\n    <row c=\"Agiesseson\" ci=\"20000396\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Olelon IV - University of Caille\" se=\"0.9\" si=\"60015015\" sy=\"Olelon\" syi=\"30032715\"/>\r\n    <row c=\"Ambrye\" ci=\"20000400\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Trossere VII - Moon 3 - University of Caille\" se=\"0.9\" si=\"60015016\" sy=\"Trossere\" syi=\"30042715\"/>\r\n    <row c=\"Trigentia\" ci=\"20000599\" r=\"Kador\" ri=\"10000052\" s=\"Akhwa II - Moon 1 - Hedion University\" se=\"0.9\" si=\"60015017\" sy=\"Akhwa\" syi=\"30015042\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Annad V - Hedion University\" se=\"0.8\" si=\"60015018\" sy=\"Annad\" syi=\"30025042\"/>\r\n    <row c=\"Nimedaz\" ci=\"20000738\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Chaktaren VII - Moon 3 - Hedion University\" se=\"0.8\" si=\"60015019\" sy=\"Chaktaren\" syi=\"30035042\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Conoban VII - Moon 8 - Hedion University\" se=\"0.9\" si=\"60015020\" sy=\"Conoban\" syi=\"30045042\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Deepari II - Imperial Academy\" se=\"0.9\" si=\"60015021\" sy=\"Deepari\" syi=\"30013489\"/>\r\n    <row c=\"Norgoh\" ci=\"20000334\" r=\"Domain\" ri=\"10000043\" s=\"Fora V - Moon 3 - Imperial Academy\" se=\"0.9\" si=\"60015022\" sy=\"Fora\" syi=\"30023489\"/>\r\n    <row c=\"Maddam\" ci=\"20000514\" r=\"Domain\" ri=\"10000043\" s=\"Hanan VI - Imperial Academy\" se=\"0.9\" si=\"60015023\" sy=\"Hanan\" syi=\"30033489\"/>\r\n    <row c=\"Hoosa\" ci=\"20000512\" r=\"Domain\" ri=\"10000043\" s=\"Horir III - Moon 1 - Imperial Academy\" se=\"0.9\" si=\"60015024\" sy=\"Horir\" syi=\"30043489\"/>\r\n    <row c=\"Krai Perun\" ci=\"20000787\" r=\"Pochven\" ri=\"10000070\" s=\"Sakenta I - Perun Clade Proving Complex\" se=\"0.0\" si=\"60015025\" sy=\"Sakenta\" syi=\"30010141\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"Senda III - Moon 1 - Veles Clade Proving Complex\" se=\"0.0\" si=\"60015026\" sy=\"Senda\" syi=\"30020141\"/>\r\n    <row c=\"Anttanen\" ci=\"20000018\" r=\"The Forge\" ri=\"10000002\" s=\"Uitra VI - Moon 4 - State War Academy\" se=\"0.9\" si=\"60015027\" sy=\"Uitra\" syi=\"30030141\"/>\r\n    <row c=\"Krai Svarog\" ci=\"20000788\" r=\"Pochven\" ri=\"10000070\" s=\"Urhinichi IX - Svarog Clade Proving Complex\" se=\"0.0\" si=\"60015028\" sy=\"Urhinichi\" syi=\"30040141\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Couster II - Moon 1 - Federal Navy Academy\" se=\"0.9\" si=\"60015029\" sy=\"Couster\" syi=\"30014971\"/>\r\n    <row c=\"Eustron\" ci=\"20000735\" r=\"Essence\" ri=\"10000064\" s=\"Hecarrin VI - Moon 3 - Federal Navy Academy\" se=\"0.8\" si=\"60015030\" sy=\"Hecarrin\" syi=\"30024971\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Henebene V - Federal Navy Academy\" se=\"0.8\" si=\"60015031\" sy=\"Henebene\" syi=\"30034971\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Mesokel I - Federal Navy Academy\" se=\"0.9\" si=\"60015032\" sy=\"Mesokel\" syi=\"30044971\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Adallier II - Center for Advanced Studies School\" se=\"0.9\" si=\"60015033\" sy=\"Adallier\" syi=\"30015305\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Channace III - Moon 3 - Center for Advanced Studies School\" se=\"0.9\" si=\"60015034\" sy=\"Channace\" syi=\"30025305\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Clacille IV - Center for Advanced Studies School\" se=\"0.9\" si=\"60015035\" sy=\"Clacille\" syi=\"30035305\"/>\r\n    <row c=\"Obray\" ci=\"20000778\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Clellinon VI - Moon 11 - Center for Advanced Studies School\" se=\"0.8\" si=\"60015036\" sy=\"Clellinon\" syi=\"30045305\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Hadaugago II - Moon 1 - Republic Military School\" se=\"0.9\" si=\"60015037\" sy=\"Hadaugago\" syi=\"30012547\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"Krilmokenur VII - Moon 8 - Republic Military School\" se=\"0.9\" si=\"60015038\" sy=\"Krilmokenur\" syi=\"30022547\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"Larkugei IX - Republic Military School\" se=\"0.9\" si=\"60015039\" sy=\"Larkugei\" syi=\"30032547\"/>\r\n    <row c=\"Erada\" ci=\"20000377\" r=\"Heimatar\" ri=\"10000030\" s=\"Loguttur I - Republic Military School\" se=\"1.0\" si=\"60015040\" sy=\"Loguttur\" syi=\"30042547\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Malukker I - Republic University\" se=\"1.0\" si=\"60015041\" sy=\"Malukker\" syi=\"30012505\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Orgron VI - Moon 1 - Republic University\" se=\"1.0\" si=\"60015042\" sy=\"Orgron\" syi=\"30022505\"/>\r\n    <row c=\"Osta\" ci=\"20000369\" r=\"Heimatar\" ri=\"10000030\" s=\"Todeko VII - Republic University\" se=\"1.0\" si=\"60015043\" sy=\"Todeko\" syi=\"30032505\"/>\r\n    <row c=\"Odengsolf\" ci=\"20000370\" r=\"Heimatar\" ri=\"10000030\" s=\"Usteli V - Republic University\" se=\"1.0\" si=\"60015044\" sy=\"Usteli\" syi=\"30042505\"/>\r\n    <row c=\"Gedur\" ci=\"20000492\" r=\"Metropolis\" ri=\"10000042\" s=\"Abrat III - Pator Tech School\" se=\"1.0\" si=\"60015045\" sy=\"Abrat\" syi=\"30013410\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"Embod IV - Moon 10 - Pator Tech School\" se=\"1.0\" si=\"60015046\" sy=\"Embod\" syi=\"30023410\"/>\r\n    <row c=\"Stadakorn\" ci=\"20000496\" r=\"Metropolis\" ri=\"10000042\" s=\"Erego VII - Moon 20 - Pator Tech School\" se=\"0.9\" si=\"60015047\" sy=\"Erego\" syi=\"30033410\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"Fildar V - Pator Tech School\" se=\"1.0\" si=\"60015048\" sy=\"Fildar\" syi=\"30043410\"/>\r\n    <row c=\"Thoulde\" ci=\"20000734\" r=\"Essence\" ri=\"10000064\" s=\"Synchelle I - Federal Navy Academy\" se=\"0.9\" si=\"60015049\" sy=\"Synchelle\" syi=\"30005015\"/>\r\n    <row c=\"Maddam\" ci=\"20000514\" r=\"Domain\" ri=\"10000043\" s=\"Irnal I - Imperial Academy\" se=\"1.0\" si=\"60015050\" sy=\"Irnal\" syi=\"30003524\"/>\r\n    <row c=\"Ajah\" ci=\"20000255\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Marthia I - Royal Amarr Institute School\" se=\"0.9\" si=\"60015051\" sy=\"Marthia\" syi=\"30001722\"/>\r\n    <row c=\"Ankard\" ci=\"20000494\" r=\"Metropolis\" ri=\"10000042\" s=\"Olbra I - Pator Tech School\" se=\"0.9\" si=\"60015052\" sy=\"Olbra\" syi=\"30003388\"/>\r\n    <row c=\"Osta\" ci=\"20000369\" r=\"Heimatar\" ri=\"10000030\" s=\"Edmalbrurdus I - Republic University\" se=\"1.0\" si=\"60015053\" sy=\"Edmalbrurdus\" syi=\"30002518\"/>\r\n    <row c=\"Jayai\" ci=\"20000436\" r=\"Devoid\" ri=\"10000036\" s=\"Asghed III - 24th Imperial Crusade Logistic Support\" se=\"0.4\" si=\"60015054\" sy=\"Asghed\" syi=\"30002978\"/>\r\n    <row c=\"Jayai\" ci=\"20000436\" r=\"Devoid\" ri=\"10000036\" s=\"Halmah IV - 24th Imperial Crusade Assembly Plant\" se=\"0.4\" si=\"60015055\" sy=\"Halmah\" syi=\"30002981\"/>\r\n    <row c=\"Jayai\" ci=\"20000436\" r=\"Devoid\" ri=\"10000036\" s=\"Tararan IV - 24th Imperial Crusade Logistic Support\" se=\"0.3\" si=\"60015056\" sy=\"Tararan\" syi=\"30002979\"/>\r\n    <row c=\"Semou\" ci=\"20000433\" r=\"Devoid\" ri=\"10000036\" s=\"Arzad VIII - 24th Imperial Crusade Logistic Support\" se=\"0.2\" si=\"60015057\" sy=\"Arzad\" syi=\"30002960\"/>\r\n    <row c=\"Semou\" ci=\"20000433\" r=\"Devoid\" ri=\"10000036\" s=\"Tzvi VI - 24th Imperial Crusade Logistic Support\" se=\"0.3\" si=\"60015058\" sy=\"Tzvi\" syi=\"30002957\"/>\r\n    <row c=\"Sasen\" ci=\"20000448\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Huola VI - 24th Imperial Crusade Logistic Support\" se=\"0.4\" si=\"60015059\" sy=\"Huola\" syi=\"30003067\"/>\r\n    <row c=\"Sasen\" ci=\"20000448\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Kamela V - 24th Imperial Crusade Logistic Support\" se=\"0.4\" si=\"60015060\" sy=\"Kamela\" syi=\"30003069\"/>\r\n    <row c=\"Tandoiras\" ci=\"20000451\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Kurniainen IX - 24th Imperial Crusade Logistic Support\" se=\"0.1\" si=\"60015061\" sy=\"Kurniainen\" syi=\"30003089\"/>\r\n    <row c=\"Tandoiras\" ci=\"20000451\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Oyonata VI - 24th Imperial Crusade Logistic Support\" se=\"0.3\" si=\"60015062\" sy=\"Oyonata\" syi=\"30003088\"/>\r\n    <row c=\"Tandoiras\" ci=\"20000451\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Tannakan VII - 24th Imperial Crusade Logistic Support\" se=\"0.2\" si=\"60015063\" sy=\"Tannakan\" syi=\"30003091\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Iesa IV - 24th Imperial Crusade Testing Facilities\" se=\"0.4\" si=\"60015064\" sy=\"Iesa\" syi=\"30003072\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Sosala IV - 24th Imperial Crusade Logistic Support\" se=\"0.4\" si=\"60015065\" sy=\"Sosala\" syi=\"30003070\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Sasiekko III - 24th Imperial Crusade Logistic Support\" se=\"0.5\" si=\"60015066\" sy=\"Sasiekko\" syi=\"30003074\"/>\r\n    <row c=\"Ieyama\" ci=\"20000404\" r=\"The Citadel\" ri=\"10000033\" s=\"Usi III - State Protectorate Logistic Support\" se=\"0.5\" si=\"60015067\" sy=\"Usi\" syi=\"30002755\"/>\r\n    <row c=\"Ishaga\" ci=\"20000785\" r=\"Black Rise\" ri=\"10000069\" s=\"Enaluri V - State Protectorate Assembly Plant\" se=\"0.3\" si=\"60015068\" sy=\"Enaluri\" syi=\"30045339\"/>\r\n    <row c=\"Kurala\" ci=\"20000786\" r=\"Black Rise\" ri=\"10000069\" s=\"Asakai II - State Protectorate Testing Facilities\" se=\"0.3\" si=\"60015069\" sy=\"Asakai\" syi=\"30045332\"/>\r\n    <row c=\"Aokinen\" ci=\"20000784\" r=\"Black Rise\" ri=\"10000069\" s=\"Onnamon IV - State Protectorate Logistic Support\" se=\"0.6\" si=\"60015070\" sy=\"Onnamon\" syi=\"30045324\"/>\r\n    <row c=\"Ieyama\" ci=\"20000404\" r=\"The Citadel\" ri=\"10000033\" s=\"Ishomilken V - State Protectorate Logistic Support\" se=\"0.4\" si=\"60015071\" sy=\"Ishomilken\" syi=\"30002756\"/>\r\n    <row c=\"Isoma\" ci=\"20000412\" r=\"The Citadel\" ri=\"10000033\" s=\"Sujarento IV - State Protectorate Logistic Support\" se=\"0.3\" si=\"60015072\" sy=\"Sujarento\" syi=\"30002809\"/>\r\n    <row c=\"Okakuola\" ci=\"20000782\" r=\"Black Rise\" ri=\"10000069\" s=\"Nisuwa VII - State Protectorate Logistic Support\" se=\"0.3\" si=\"60015073\" sy=\"Nisuwa\" syi=\"30045352\"/>\r\n    <row c=\"Ishaga\" ci=\"20000785\" r=\"Black Rise\" ri=\"10000069\" s=\"Enaluri II - State Protectorate Logistic Support\" se=\"0.3\" si=\"60015074\" sy=\"Enaluri\" syi=\"30045339\"/>\r\n    <row c=\"Inolari\" ci=\"20000783\" r=\"Black Rise\" ri=\"10000069\" s=\"Innia II - State Protectorate Logistic Support\" se=\"0.3\" si=\"60015075\" sy=\"Innia\" syi=\"30045316\"/>\r\n    <row c=\"Urpiken\" ci=\"20000781\" r=\"Black Rise\" ri=\"10000069\" s=\"Hykanima I - State Protectorate Logistic Support\" se=\"0.2\" si=\"60015076\" sy=\"Hykanima\" syi=\"30045306\"/>\r\n    <row c=\"Okakuola\" ci=\"20000782\" r=\"Black Rise\" ri=\"10000069\" s=\"Rakapas II - State Protectorate Logistic Support\" se=\"0.2\" si=\"60015077\" sy=\"Rakapas\" syi=\"30045349\"/>\r\n    <row c=\"Inolari\" ci=\"20000783\" r=\"Black Rise\" ri=\"10000069\" s=\"Eha III - State Protectorate Logistic Support\" se=\"0.4\" si=\"60015078\" sy=\"Eha\" syi=\"30045319\"/>\r\n    <row c=\"Ishaga\" ci=\"20000785\" r=\"Black Rise\" ri=\"10000069\" s=\"Aivonen VI - State Protectorate Logistic Support\" se=\"0.4\" si=\"60015079\" sy=\"Aivonen\" syi=\"30045340\"/>\r\n    <row c=\"Jeon\" ci=\"20000729\" r=\"Essence\" ri=\"10000064\" s=\"Fliet III - Federal Defense Union Logistic Support\" se=\"0.3\" si=\"60015080\" sy=\"Fliet\" syi=\"30004980\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"Parts I - Federal Defense Union Logistic Support\" se=\"0.4\" si=\"60015081\" sy=\"Parts\" syi=\"30004998\"/>\r\n    <row c=\"Woenckee\" ci=\"20000775\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Costolle V - Federal Defense Union Logistic Support\" se=\"0.2\" si=\"60015082\" sy=\"Costolle\" syi=\"30005298\"/>\r\n    <row c=\"Woenckee\" ci=\"20000775\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Ouelletta II - Federal Defense Union Logistic Support\" se=\"0.4\" si=\"60015083\" sy=\"Ouelletta\" syi=\"30005297\"/>\r\n    <row c=\"Amevync\" ci=\"20000561\" r=\"Placid\" ri=\"10000048\" s=\"Esesier IX - Federal Defense Union Logistic Support\" se=\"0.3\" si=\"60015084\" sy=\"Esesier\" syi=\"30003842\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"Eugales V - Federal Defense Union Assembly Plant\" se=\"0.4\" si=\"60015085\" sy=\"Eugales\" syi=\"30003825\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"Moclinamaud VII - Federal Defense Union Logistic Support\" se=\"0.4\" si=\"60015086\" sy=\"Moclinamaud\" syi=\"30003828\"/>\r\n    <row c=\"Serthoulde\" ci=\"20000563\" r=\"Placid\" ri=\"10000048\" s=\"Mercomesier III - Federal Defense Union Logistic Support\" se=\"0.1\" si=\"60015087\" sy=\"Mercomesier\" syi=\"30003853\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"Intaki II - Federal Defense Union Logistic Support\" se=\"0.6\" si=\"60015088\" sy=\"Intaki\" syi=\"30003788\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"Ostingele IV - Federal Defense Union Testing Facilities\" se=\"0.2\" si=\"60015089\" sy=\"Ostingele\" syi=\"30003792\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Covryn III - Federal Defense Union Logistic Support\" se=\"0.4\" si=\"60015090\" sy=\"Covryn\" syi=\"30003795\"/>\r\n    <row c=\"Fislipesnes\" ci=\"20000554\" r=\"Placid\" ri=\"10000048\" s=\"Uphallant II - Federal Defense Union Logistic Support\" se=\"0.2\" si=\"60015091\" sy=\"Uphallant\" syi=\"30003799\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Jufvitte IV - Federal Defense Union Logistic Support\" se=\"0.5\" si=\"60015092\" sy=\"Jufvitte\" syi=\"30005308\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Dal I - Tribal Liberation Force Logistic Support\" se=\"0.4\" si=\"60015093\" sy=\"Dal\" syi=\"30002541\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"Lulm IV - Tribal Liberation Force Logistic Support\" se=\"0.3\" si=\"60015094\" sy=\"Lulm\" syi=\"30002516\"/>\r\n    <row c=\"Huvilma\" ci=\"20000368\" r=\"Heimatar\" ri=\"10000030\" s=\"Olfeim IV - Tribal Liberation Force Logistic Support\" se=\"0.4\" si=\"60015095\" sy=\"Olfeim\" syi=\"30002515\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"Ebolfer V - Tribal Liberation Force Testing Facilities\" se=\"0.3\" si=\"60015096\" sy=\"Ebolfer\" syi=\"30002094\"/>\r\n    <row c=\"Essin\" ci=\"20000308\" r=\"Metropolis\" ri=\"10000042\" s=\"Eszur III - Tribal Liberation Force Assembly Plant\" se=\"0.2\" si=\"60015097\" sy=\"Eszur\" syi=\"30002095\"/>\r\n    <row c=\"Tiat\" ci=\"20000303\" r=\"Metropolis\" ri=\"10000042\" s=\"Auner VI - Tribal Liberation Force Logistic Support\" se=\"0.4\" si=\"60015098\" sy=\"Auner\" syi=\"30002059\"/>\r\n    <row c=\"Tiat\" ci=\"20000303\" r=\"Metropolis\" ri=\"10000042\" s=\"Hadozeko II - Tribal Liberation Force Logistic Support\" se=\"0.4\" si=\"60015099\" sy=\"Hadozeko\" syi=\"30002057\"/>\r\n    <row c=\"Eugidi\" ci=\"20000307\" r=\"Metropolis\" ri=\"10000042\" s=\"Floseswin IV - Tribal Liberation Force Logistic Support\" se=\"0.4\" si=\"60015100\" sy=\"Floseswin\" syi=\"30002082\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Gukarla V - Tribal Liberation Force Logistic Support\" se=\"0.1\" si=\"60015101\" sy=\"Gukarla\" syi=\"30002102\"/>\r\n    <row c=\"Angils\" ci=\"20000309\" r=\"Metropolis\" ri=\"10000042\" s=\"Orfrold IV - Tribal Liberation Force Logistic Support\" se=\"0.2\" si=\"60015102\" sy=\"Orfrold\" syi=\"30002098\"/>\r\n    <row c=\"Aldodan\" ci=\"20000304\" r=\"Metropolis\" ri=\"10000042\" s=\"Ofstold IV - Tribal Liberation Force Logistic Support\" se=\"0.3\" si=\"60015103\" sy=\"Ofstold\" syi=\"30002061\"/>\r\n    <row c=\"Tiat\" ci=\"20000303\" r=\"Metropolis\" ri=\"10000042\" s=\"Amo II - Tribal Liberation Force Logistic Support\" se=\"0.5\" si=\"60015104\" sy=\"Amo\" syi=\"30002055\"/>\r\n    <row c=\"Urpiken\" ci=\"20000781\" r=\"Black Rise\" ri=\"10000069\" s=\"Hykanima V - Lai Dai Protection Service Testing Facilities\" se=\"0.2\" si=\"60015105\" sy=\"Hykanima\" syi=\"30045306\"/>\r\n    <row c=\"Urpiken\" ci=\"20000781\" r=\"Black Rise\" ri=\"10000069\" s=\"Okagaiken IV - Caldari Navy Logistic Support\" se=\"0.1\" si=\"60015106\" sy=\"Okagaiken\" syi=\"30045307\"/>\r\n    <row c=\"Urpiken\" ci=\"20000781\" r=\"Black Rise\" ri=\"10000069\" s=\"Kehjari II - Kaalakiota Corporation Factory\" se=\"0.2\" si=\"60015107\" sy=\"Kehjari\" syi=\"30045308\"/>\r\n    <row c=\"Urpiken\" ci=\"20000781\" r=\"Black Rise\" ri=\"10000069\" s=\"Villasen V - Lai Dai Protection Service Logistic Support\" se=\"0.1\" si=\"60015108\" sy=\"Villasen\" syi=\"30045309\"/>\r\n    <row c=\"Urpiken\" ci=\"20000781\" r=\"Black Rise\" ri=\"10000069\" s=\"Sarenemi V - Home Guard Assembly Plant\" se=\"0.2\" si=\"60015109\" sy=\"Sarenemi\" syi=\"30045310\"/>\r\n    <row c=\"Urpiken\" ci=\"20000781\" r=\"Black Rise\" ri=\"10000069\" s=\"Ienakkamon X - Caldari Navy Logistic Support\" se=\"0.1\" si=\"60015110\" sy=\"Ienakkamon\" syi=\"30045313\"/>\r\n    <row c=\"Inolari\" ci=\"20000783\" r=\"Black Rise\" ri=\"10000069\" s=\"Kinakka III - Lai Dai Corporation Factory\" se=\"0.4\" si=\"60015111\" sy=\"Kinakka\" syi=\"30045314\"/>\r\n    <row c=\"Inolari\" ci=\"20000783\" r=\"Black Rise\" ri=\"10000069\" s=\"Iralaja VII - Home Guard Testing Facilities\" se=\"0.3\" si=\"60015112\" sy=\"Iralaja\" syi=\"30045317\"/>\r\n    <row c=\"Inolari\" ci=\"20000783\" r=\"Black Rise\" ri=\"10000069\" s=\"Iralaja IX - Home Guard Testing Facilities\" se=\"0.3\" si=\"60015113\" sy=\"Iralaja\" syi=\"30045317\"/>\r\n    <row c=\"Inolari\" ci=\"20000783\" r=\"Black Rise\" ri=\"10000069\" s=\"Pavanakka III - Caldari Constructions Warehouse\" se=\"0.4\" si=\"60015114\" sy=\"Pavanakka\" syi=\"30045320\"/>\r\n    <row c=\"Aokinen\" ci=\"20000784\" r=\"Black Rise\" ri=\"10000069\" s=\"Samanuni III - Wiyrkomi Corporation Factory\" se=\"0.7\" si=\"60015115\" sy=\"Samanuni\" syi=\"30045322\"/>\r\n    <row c=\"Aokinen\" ci=\"20000784\" r=\"Black Rise\" ri=\"10000069\" s=\"Samanuni VIII - Caldari Constructions Logistic Support\" se=\"0.7\" si=\"60015116\" sy=\"Samanuni\" syi=\"30045322\"/>\r\n    <row c=\"Aokinen\" ci=\"20000784\" r=\"Black Rise\" ri=\"10000069\" s=\"Samanuni XI - Caldari Navy Warehouse\" se=\"0.7\" si=\"60015117\" sy=\"Samanuni\" syi=\"30045322\"/>\r\n    <row c=\"Aokinen\" ci=\"20000784\" r=\"Black Rise\" ri=\"10000069\" s=\"Uuhulanen VIII - Caldari Navy Logistic Support\" se=\"0.5\" si=\"60015118\" sy=\"Uuhulanen\" syi=\"30045326\"/>\r\n    <row c=\"Aokinen\" ci=\"20000784\" r=\"Black Rise\" ri=\"10000069\" s=\"Uuhulanen X - Lai Dai Protection Service Assembly Plant\" se=\"0.5\" si=\"60015119\" sy=\"Uuhulanen\" syi=\"30045326\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"Ichoriya VI - Veles Clade Extractive Terminus\" se=\"0.0\" si=\"60015120\" sy=\"Ichoriya\" syi=\"30045329\"/>\r\n    <row c=\"Kurala\" ci=\"20000786\" r=\"Black Rise\" ri=\"10000069\" s=\"Okkamon VII - Caldari Navy Assembly Plant\" se=\"0.3\" si=\"60015121\" sy=\"Okkamon\" syi=\"30045330\"/>\r\n    <row c=\"Kurala\" ci=\"20000786\" r=\"Black Rise\" ri=\"10000069\" s=\"Okkamon III - Home Guard Assembly Plant\" se=\"0.3\" si=\"60015122\" sy=\"Okkamon\" syi=\"30045330\"/>\r\n    <row c=\"Kurala\" ci=\"20000786\" r=\"Black Rise\" ri=\"10000069\" s=\"Prism VII - Wiyrkomi Peace Corps Assembly Plant\" se=\"0.2\" si=\"60015123\" sy=\"Prism\" syi=\"30045333\"/>\r\n    <row c=\"Kurala\" ci=\"20000786\" r=\"Black Rise\" ri=\"10000069\" s=\"Teskanen IV - Caldari Navy Assembly Plant\" se=\"0.3\" si=\"60015124\" sy=\"Teskanen\" syi=\"30045335\"/>\r\n    <row c=\"Ishaga\" ci=\"20000785\" r=\"Black Rise\" ri=\"10000069\" s=\"Hallanen IV - Caldari Navy Assembly Plant\" se=\"0.4\" si=\"60015125\" sy=\"Hallanen\" syi=\"30045341\"/>\r\n    <row c=\"Ishaga\" ci=\"20000785\" r=\"Black Rise\" ri=\"10000069\" s=\"Nennamaila X - Wiyrkomi Peace Corps Assembly Plant\" se=\"0.3\" si=\"60015126\" sy=\"Nennamaila\" syi=\"30045344\"/>\r\n    <row c=\"Okakuola\" ci=\"20000782\" r=\"Black Rise\" ri=\"10000069\" s=\"Notoras V - Caldari Navy Assembly Plant\" se=\"0.2\" si=\"60015127\" sy=\"Notoras\" syi=\"30045348\"/>\r\n    <row c=\"Okakuola\" ci=\"20000782\" r=\"Black Rise\" ri=\"10000069\" s=\"Notoras III - Caldari Navy Assembly Plant\" se=\"0.2\" si=\"60015128\" sy=\"Notoras\" syi=\"30045348\"/>\r\n    <row c=\"Okakuola\" ci=\"20000782\" r=\"Black Rise\" ri=\"10000069\" s=\"Notoras II - Lai Dai Protection Service Assembly Plant\" se=\"0.2\" si=\"60015129\" sy=\"Notoras\" syi=\"30045348\"/>\r\n    <row c=\"Okakuola\" ci=\"20000782\" r=\"Black Rise\" ri=\"10000069\" s=\"Rakapas V - Home Guard Assembly Plant\" se=\"0.2\" si=\"60015130\" sy=\"Rakapas\" syi=\"30045349\"/>\r\n    <row c=\"Aokinen\" ci=\"20000784\" r=\"Black Rise\" ri=\"10000069\" s=\"Onnamon I - State War Academy\" se=\"0.6\" si=\"60015131\" sy=\"Onnamon\" syi=\"30045324\"/>\r\n    <row c=\"Otawasa\" ci=\"20000410\" r=\"The Citadel\" ri=\"10000033\" s=\"Oshaima IV - State Protectorate Logistic Support\" se=\"0.5\" si=\"60015132\" sy=\"Oshaima\" syi=\"30002795\"/>\r\n    <row c=\"Okela\" ci=\"20000201\" r=\"Lonetrek\" ri=\"10000016\" s=\"Nourvukaiken V - State Protectorate Logistic Support\" se=\"0.8\" si=\"60015133\" sy=\"Nourvukaiken\" syi=\"30001376\"/>\r\n    <row c=\"Malariya\" ci=\"20000210\" r=\"Lonetrek\" ri=\"10000016\" s=\"Elanoda IV - State Protectorate Logistic Support\" se=\"0.5\" si=\"60015134\" sy=\"Elanoda\" syi=\"30001434\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Myyhera III - 24th Imperial Crusade Logistic Support\" se=\"0.5\" si=\"60015135\" sy=\"Myyhera\" syi=\"30003075\"/>\r\n    <row c=\"Vaarma\" ci=\"20000449\" r=\"The Bleak Lands\" ri=\"10000038\" s=\"Gammel III - 24th Imperial Crusade Logistic Support\" se=\"0.5\" si=\"60015136\" sy=\"Gammel\" syi=\"30003076\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Mehatoor VI - 24th Imperial Crusade Logistic Support\" se=\"0.7\" si=\"60015137\" sy=\"Mehatoor\" syi=\"30002974\"/>\r\n    <row c=\"Ryra\" ci=\"20000434\" r=\"Devoid\" ri=\"10000036\" s=\"Dihra V - 24th Imperial Crusade Logistic Support\" se=\"0.6\" si=\"60015138\" sy=\"Dihra\" syi=\"30002967\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Abudban IV - Tribal Liberation Force Logistic Support\" se=\"0.7\" si=\"60015139\" sy=\"Abudban\" syi=\"30002507\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Hek VII - Tribal Liberation Force Logistic Support\" se=\"0.8\" si=\"60015140\" sy=\"Hek\" syi=\"30002053\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Anher I - Tribal Liberation Force Logistic Support\" se=\"0.5\" si=\"60015141\" sy=\"Anher\" syi=\"30002051\"/>\r\n    <row c=\"Patrie\" ci=\"20000728\" r=\"Essence\" ri=\"10000064\" s=\"Caslemon III - Federal Defense Union Logistic Support\" se=\"0.6\" si=\"60015142\" sy=\"Caslemon\" syi=\"30004973\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Aidart IV - Federal Defense Union Logistic Support\" se=\"0.6\" si=\"60015143\" sy=\"Aidart\" syi=\"30005307\"/>\r\n    <row c=\"Vieres\" ci=\"20000731\" r=\"Essence\" ri=\"10000064\" s=\"Villore VI - Federal Defense Union Logistic Support\" se=\"0.9\" si=\"60015144\" sy=\"Villore\" syi=\"30004993\"/>\r\n    <row c=\"Beyt\" ci=\"20000560\" r=\"Placid\" ri=\"10000048\" s=\"Orvolle VII - Federal Defense Union Logistic Support\" se=\"0.7\" si=\"60015145\" sy=\"Orvolle\" syi=\"30003830\"/>\r\n    <row c=\"Uusasai\" ci=\"20000408\" r=\"The Citadel\" ri=\"10000033\" s=\"Tintoh VIII - Caldari Navy Testing Facilities\" se=\"0.8\" si=\"60015146\" sy=\"Tintoh\" syi=\"30002784\"/>\r\n    <row c=\"Krai Veles\" ci=\"20000789\" r=\"Pochven\" ri=\"10000070\" s=\"Ichoriya V - Veles Clade Mutaplasmid Farm\" se=\"0.0\" si=\"60015147\" sy=\"Ichoriya\" syi=\"30045329\"/>\r\n    <row c=\"G-C00324\" ci=\"21000324\" r=\"G-R00031\" ri=\"11000031\" s=\"Thera XII - The Sanctuary Institute of Paleocybernetics\" se=\"0.0\" si=\"60015148\" sy=\"Thera\" syi=\"31000005\"/>\r\n    <row c=\"G-C00324\" ci=\"21000324\" r=\"G-R00031\" ri=\"11000031\" s=\"Thera XII - The Sanctuary Surveillance Observatory\" se=\"0.0\" si=\"60015149\" sy=\"Thera\" syi=\"31000005\"/>\r\n    <row c=\"G-C00324\" ci=\"21000324\" r=\"G-R00031\" ri=\"11000031\" s=\"Thera XIII - The Sanctuary Applied Gravitation Laboratory\" se=\"0.0\" si=\"60015150\" sy=\"Thera\" syi=\"31000005\"/>\r\n    <row c=\"G-C00324\" ci=\"21000324\" r=\"G-R00031\" ri=\"11000031\" s=\"Thera XIV - The Sanctuary Fullerene Loom\" se=\"0.0\" si=\"60015151\" sy=\"Thera\" syi=\"31000005\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Pator IV (Matar) - Thukker Council Halls of Liberation\" se=\"1.0\" si=\"60015152\" sy=\"Pator\" syi=\"30002544\"/>\r\n    <row c=\"Nexus\" ci=\"20000397\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Bourynes VII - AIR Laboratories\" se=\"1.0\" si=\"60015153\" sy=\"Bourynes\" syi=\"30002715\"/>\r\n    <row c=\"Parud\" ci=\"20000509\" r=\"Domain\" ri=\"10000043\" s=\"Chaven VIII - AIR Laboratories\" se=\"1.0\" si=\"60015154\" sy=\"Chaven\" syi=\"30003489\"/>\r\n    <row c=\"Gebem\" ci=\"20000737\" r=\"Kor-Azor\" ri=\"10000065\" s=\"Sehmy VIII - AIR Laboratories\" se=\"1.0\" si=\"60015155\" sy=\"Sehmy\" syi=\"30005042\"/>\r\n    <row c=\"Arvachah\" ci=\"20000247\" r=\"Tash-Murkon\" ri=\"10000020\" s=\"Emrayur III - AIR Laboratories\" se=\"1.0\" si=\"60015156\" sy=\"Emrayur\" syi=\"30001672\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Kisogo VII - AIR Laboratories\" se=\"1.0\" si=\"60015157\" sy=\"Kisogo\" syi=\"30000141\"/>\r\n    <row c=\"Karnola\" ci=\"20000206\" r=\"Lonetrek\" ri=\"10000016\" s=\"Todaki VI - AIR Laboratories\" se=\"1.0\" si=\"60015158\" sy=\"Todaki\" syi=\"30001407\"/>\r\n    <row c=\"Sela\" ci=\"20000204\" r=\"Lonetrek\" ri=\"10000016\" s=\"Amsen VI - AIR Laboratories\" se=\"1.0\" si=\"60015159\" sy=\"Amsen\" syi=\"30001392\"/>\r\n    <row c=\"Crux\" ci=\"20000727\" r=\"Essence\" ri=\"10000064\" s=\"Duripant VII - AIR Laboratories\" se=\"1.0\" si=\"60015160\" sy=\"Duripant\" syi=\"30004971\"/>\r\n    <row c=\"Anwyns\" ci=\"20000776\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Cistuvaert V - AIR Laboratories\" se=\"1.0\" si=\"60015161\" sy=\"Cistuvaert\" syi=\"30005305\"/>\r\n    <row c=\"Sveipar\" ci=\"20000373\" r=\"Heimatar\" ri=\"10000030\" s=\"Ammold V - AIR Laboratories\" se=\"1.0\" si=\"60015162\" sy=\"Ammold\" syi=\"30002547\"/>\r\n    <row c=\"Meinigefur\" ci=\"20000497\" r=\"Metropolis\" ri=\"10000042\" s=\"Ryddinjorn VI - AIR Laboratories\" se=\"1.0\" si=\"60015163\" sy=\"Ryddinjorn\" syi=\"30003410\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Hulm VIII - AIR Laboratories\" se=\"1.0\" si=\"60015164\" sy=\"Hulm\" syi=\"30002505\"/>\r\n    <row c=\"Algintal\" ci=\"20000392\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Parchanier IV - President Bureau\" se=\"0.9\" si=\"60015165\" sy=\"Parchanier\" syi=\"30002676\"/>\r\n    <row c=\"Osnins\" ci=\"20000441\" r=\"Everyshore\" ri=\"10000037\" s=\"Bereye III - Supreme Court Tribunal\" se=\"0.9\" si=\"60015166\" sy=\"Bereye\" syi=\"30003014\"/>\r\n    <row c=\"Sanctum\" ci=\"20000761\" r=\"Genesis\" ri=\"10000067\" s=\"Ourapheh V - Paragon Fulfillment Center\" se=\"0.9\" si=\"60015167\" sy=\"Ourapheh\" syi=\"30005203\"/>\r\n    <row c=\"Throne Worlds\" ci=\"20000322\" r=\"Domain\" ri=\"10000043\" s=\"Amarr VII (Nemantizor) - Paragon Fulfillment Center\" se=\"1.0\" si=\"60015168\" sy=\"Amarr\" syi=\"30002187\"/>\r\n    <row c=\"Kimotoro\" ci=\"20000020\" r=\"The Forge\" ri=\"10000002\" s=\"Jita VI - Paragon Fulfillment Center\" se=\"0.9\" si=\"60015169\" sy=\"Jita\" syi=\"30000142\"/>\r\n    <row c=\"Coriault\" ci=\"20000389\" r=\"Sinq Laison\" ri=\"10000032\" s=\"Dodixie V - Paragon Fulfillment Center\" se=\"0.9\" si=\"60015170\" sy=\"Dodixie\" syi=\"30002659\"/>\r\n    <row c=\"Barvigrard\" ci=\"20000302\" r=\"Metropolis\" ri=\"10000042\" s=\"Hek IX - Paragon Fulfillment Center\" se=\"0.8\" si=\"60015171\" sy=\"Hek\" syi=\"30002053\"/>\r\n    <row c=\"Ortner\" ci=\"20000367\" r=\"Heimatar\" ri=\"10000030\" s=\"Rens V - Paragon Fulfillment Center\" se=\"0.9\" si=\"60015172\" sy=\"Rens\" syi=\"30002510\"/>\r\n    <row c=\"Aokinen\" ci=\"20000784\" r=\"Black Rise\" ri=\"10000069\" s=\"Samanuni VI - Caldari Navy Anchorage\" se=\"0.7\" si=\"60015173\" sy=\"Samanuni\" syi=\"30045322\"/>\r\n    <row c=\"Kiartanne\" ci=\"20000777\" r=\"Verge Vendor\" ri=\"10000068\" s=\"Amygnon III - Federation Navy Anchorage\" se=\"0.6\" si=\"60015174\" sy=\"Amygnon\" syi=\"30005311\"/>\r\n    <row c=\"Hed\" ci=\"20000372\" r=\"Heimatar\" ri=\"10000030\" s=\"Amamake III - Paragon Fulfillment Center\" se=\"0.4\" si=\"60015175\" sy=\"Amamake\" syi=\"30002537\"/>\r\n    <row c=\"Bedaleya\" ci=\"20000010\" r=\"Derelik\" ri=\"10000001\" s=\"Assah VI - Paragon Fulfillment Center\" se=\"0.3\" si=\"60015176\" sy=\"Assah\" syi=\"30000075\"/>\r\n    <row c=\"Pegeler\" ci=\"20000559\" r=\"Placid\" ri=\"10000048\" s=\"Aubenall II - Paragon Fulfillment Center\" se=\"0.4\" si=\"60015177\" sy=\"Aubenall\" syi=\"30003827\"/>\r\n    <row c=\"Afinoo\" ci=\"20000620\" r=\"Aridia\" ri=\"10000054\" s=\"Yehaba VI - Paragon Fulfillment Center\" se=\"0.2\" si=\"60015178\" sy=\"Yehaba\" syi=\"30004236\"/>\r\n    <row c=\"Mito\" ci=\"20000212\" r=\"Lonetrek\" ri=\"10000016\" s=\"Hakonen VII - Paragon Fulfillment Center\" se=\"0.3\" si=\"60015179\" sy=\"Hakonen\" syi=\"30001448\"/>\r\n    <row c=\"Viriette\" ci=\"20000553\" r=\"Placid\" ri=\"10000048\" s=\"Intaki V (Intaki Prime) - Federation Navy Anchorage\" se=\"0.6\" si=\"60015180\" sy=\"Intaki\" syi=\"30003788\"/>\r\n    <row c=\"DS-M4Q\" ci=\"20000481\" r=\"Syndicate\" ri=\"10000041\" s=\"0EK-NJ V - Caldari Navy Anchorage\" se=\"0.0\" si=\"60015181\" sy=\"0EK-NJ\" syi=\"30003296\"/>\r\n    <row c=\"DS-M4Q\" ci=\"20000481\" r=\"Syndicate\" ri=\"10000041\" s=\"T-LIWS II - Caldari Navy Anchorage\" se=\"0.0\" si=\"60015182\" sy=\"T-LIWS\" syi=\"30003299\"/>\r\n    <row c=\"DS-M4Q\" ci=\"20000481\" r=\"Syndicate\" ri=\"10000041\" s=\"UM-Q7F IX - Caldari Navy Anchorage\" se=\"0.0\" si=\"60015183\" sy=\"UM-Q7F\" syi=\"30003298\"/>\r\n    <row c=\"Aokinen\" ci=\"20000784\" r=\"Black Rise\" ri=\"10000069\" s=\"Onnamon VII - Caldari Navy Anchorage\" se=\"0.6\" si=\"60015184\" sy=\"Onnamon\" syi=\"30045324\"/>\r\n    <row c=\"Kisana\" ci=\"20000435\" r=\"Devoid\" ri=\"10000036\" s=\"Mehatoor III - Amarr Navy Anchorage\" se=\"0.7\" si=\"60015185\" sy=\"Mehatoor\" syi=\"30002974\"/>\r\n    <row c=\"Tiat\" ci=\"20000303\" r=\"Metropolis\" ri=\"10000042\" s=\"Amo III - Republic Fleet Anchorage\" se=\"0.5\" si=\"60015186\" sy=\"Amo\" syi=\"30002055\"/>\r\n    <row c=\"Duzna Kah\" ci=\"20010000\" r=\"Yasna Zakh\" ri=\"10001000\" s=\"Zarzakh - Deathless Custodians - The Fulcrum\" se=\"0.0\" si=\"60015187\" sy=\"Zarzakh\" syi=\"30100000\"/>\r\n    <row c=\"9RW5-Z\" ci=\"20000054\" r=\"UUA-F4\" ri=\"10000004\" s=\"Conquerable Station #61000001\" se=\"0.0\" si=\"61000001\" sy=\"RU-97T\" syi=\"30000377\"/>\r\n    <row c=\"RHG-4O\" ci=\"20000653\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000002\" se=\"0.0\" si=\"61000002\" sy=\"5P-AIP\" syi=\"30004477\"/>\r\n    <row c=\"JSZ-X6\" ci=\"20000456\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000003\" se=\"0.0\" si=\"61000003\" sy=\"16P-PX\" syi=\"30003122\"/>\r\n    <row c=\"D9DM-O\" ci=\"20000687\" r=\"Paragon Soul\" ri=\"10000059\" s=\"Conquerable Station #61000004\" se=\"0.0\" si=\"61000004\" sy=\"LX5K-W\" syi=\"30004705\"/>\r\n    <row c=\"UTQ-BO\" ci=\"20000427\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000005\" se=\"0.0\" si=\"61000005\" sy=\"JU-OWQ\" syi=\"30002911\"/>\r\n    <row c=\"3-U491\" ci=\"20000650\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000006\" se=\"0.0\" si=\"61000006\" sy=\"AZN-D2\" syi=\"30004450\"/>\r\n    <row c=\"N-OGI1\" ci=\"20000170\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000007\" se=\"0.0\" si=\"61000007\" sy=\"KDF-GY\" syi=\"30001164\"/>\r\n    <row c=\"3-PC31\" ci=\"20000655\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000008\" se=\"0.0\" si=\"61000008\" sy=\"K-9UG4\" syi=\"30004490\"/>\r\n    <row c=\"42-WDG\" ci=\"20000654\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000009\" se=\"0.0\" si=\"61000009\" sy=\"R97-CI\" syi=\"30004485\"/>\r\n    <row c=\"I-CCEI\" ci=\"20000684\" r=\"Paragon Soul\" ri=\"10000059\" s=\"Conquerable Station #61000010\" se=\"0.0\" si=\"61000010\" sy=\"3PPT-9\" syi=\"30004682\"/>\r\n    <row c=\"42-WDG\" ci=\"20000654\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000011\" se=\"0.0\" si=\"61000011\" sy=\"0OYZ-G\" syi=\"30004483\"/>\r\n    <row c=\"YS-GOP\" ci=\"20000292\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000012\" se=\"0.0\" si=\"61000012\" sy=\"EC-P8R\" syi=\"30001984\"/>\r\n    <row c=\"04-H4M\" ci=\"20000550\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000013\" se=\"0.0\" si=\"61000013\" sy=\"X-R3NM\" syi=\"30003770\"/>\r\n    <row c=\"W-3E44\" ci=\"20000714\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #61000014\" se=\"0.0\" si=\"61000014\" sy=\"9-980U\" syi=\"30004879\"/>\r\n    <row c=\"IPS-QB\" ci=\"20000358\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61000015\" se=\"0.0\" si=\"61000015\" sy=\"BWF-ZZ\" syi=\"30002440\"/>\r\n    <row c=\"LN-L8L\" ci=\"20000299\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000016\" se=\"0.0\" si=\"61000016\" sy=\"P-2TTL\" syi=\"30002030\"/>\r\n    <row c=\"7X-X1Y\" ci=\"20000538\" r=\"Fade\" ri=\"10000046\" s=\"Conquerable Station #61000017\" se=\"0.0\" si=\"61000017\" sy=\"FIO1-8\" syi=\"30003691\"/>\r\n    <row c=\"YZKE-Q\" ci=\"20000652\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000018\" se=\"0.0\" si=\"61000018\" sy=\"ZS-2LT\" syi=\"30004469\"/>\r\n    <row c=\"RHG-4O\" ci=\"20000653\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000019\" se=\"0.0\" si=\"61000019\" sy=\"RIT-A7\" syi=\"30004472\"/>\r\n    <row c=\"W-4U1E\" ci=\"20000695\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000020\" se=\"0.0\" si=\"61000020\" sy=\"J-LPX7\" syi=\"30004755\"/>\r\n    <row c=\"J8-G8K\" ci=\"20000723\" r=\"Period Basis\" ri=\"10000063\" s=\"Conquerable Station #61000021\" se=\"0.0\" si=\"61000021\" sy=\"Y-CWQY\" syi=\"30004941\"/>\r\n    <row c=\"SG-CTQ\" ci=\"20000697\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000022\" se=\"0.0\" si=\"61000022\" sy=\"39P-1J\" syi=\"30004766\"/>\r\n    <row c=\"RHG-4O\" ci=\"20000653\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000023\" se=\"0.0\" si=\"61000023\" sy=\"GHZ-SJ\" syi=\"30004474\"/>\r\n    <row c=\"EK-NQ2\" ci=\"20000383\" r=\"Impass\" ri=\"10000031\" s=\"Conquerable Station #61000024\" se=\"0.0\" si=\"61000024\" sy=\"TWJ-AW\" syi=\"30002614\"/>\r\n    <row c=\"JZV-O6\" ci=\"20000173\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000025\" se=\"0.0\" si=\"61000025\" sy=\"G-7WUF\" syi=\"30001183\"/>\r\n    <row c=\"E-IFSA\" ci=\"20000706\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #61000026\" se=\"0.0\" si=\"61000026\" sy=\"C3-0YD\" syi=\"30004824\"/>\r\n    <row c=\"IPS-QB\" ci=\"20000358\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61000027\" se=\"0.0\" si=\"61000027\" sy=\"8MG-J6\" syi=\"30002442\"/>\r\n    <row c=\"OFQ-HG\" ci=\"20000651\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000028\" se=\"0.0\" si=\"61000028\" sy=\"JO-32L\" syi=\"30004462\"/>\r\n    <row c=\"T-RQ7S\" ci=\"20000643\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000029\" se=\"0.0\" si=\"61000029\" sy=\"QYZM-W\" syi=\"30004402\"/>\r\n    <row c=\"NNLX-K\" ci=\"20000180\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000030\" se=\"0.0\" si=\"61000030\" sy=\"IS-R7P\" syi=\"30001236\"/>\r\n    <row c=\"N-OGI1\" ci=\"20000170\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000031\" se=\"0.0\" si=\"61000031\" sy=\"ZXIC-7\" syi=\"30001168\"/>\r\n    <row c=\"RL36-K\" ci=\"20000720\" r=\"Omist\" ri=\"10000062\" s=\"Conquerable Station #61000032\" se=\"0.0\" si=\"61000032\" sy=\"66-PMM\" syi=\"30004923\"/>\r\n    <row c=\"KWCZ-A\" ci=\"20000641\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000033\" se=\"0.0\" si=\"61000033\" sy=\"EQI2-2\" syi=\"30004388\"/>\r\n    <row c=\"6I-3VX\" ci=\"20000713\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #61000034\" se=\"0.0\" si=\"61000034\" sy=\"G-D0N3\" syi=\"30004876\"/>\r\n    <row c=\"3WN-1T\" ci=\"20000458\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000035\" se=\"0.0\" si=\"61000035\" sy=\"BY-MSY\" syi=\"30003138\"/>\r\n    <row c=\"D-AWFI\" ci=\"20000432\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000036\" se=\"0.0\" si=\"61000036\" sy=\"UEJX-G\" syi=\"30002956\"/>\r\n    <row c=\"Q5KW-Z\" ci=\"20000638\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000037\" se=\"0.0\" si=\"61000037\" sy=\"LXWN-W\" syi=\"30004364\"/>\r\n    <row c=\"OK-FEM\" ci=\"20000702\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000038\" se=\"0.0\" si=\"61000038\" sy=\"C3N-3S\" syi=\"30004798\"/>\r\n    <row c=\"3WN-1T\" ci=\"20000458\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000039\" se=\"0.0\" si=\"61000039\" sy=\"E1UU-3\" syi=\"30003136\"/>\r\n    <row c=\"9D1V-O\" ci=\"20000463\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000040\" se=\"0.0\" si=\"61000040\" sy=\"QS-530\" syi=\"30003174\"/>\r\n    <row c=\"Q-2BI6\" ci=\"20000455\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000041\" se=\"0.0\" si=\"61000041\" sy=\"0-O6XF\" syi=\"30003114\"/>\r\n    <row c=\"EK-NQ2\" ci=\"20000383\" r=\"Impass\" ri=\"10000031\" s=\"Conquerable Station #61000042\" se=\"0.0\" si=\"61000042\" sy=\"442-CS\" syi=\"30002616\"/>\r\n    <row c=\"SG-CTQ\" ci=\"20000697\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000043\" se=\"0.0\" si=\"61000043\" sy=\"PS-94K\" syi=\"30004770\"/>\r\n    <row c=\"G2E-RJ\" ci=\"20000540\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000044\" se=\"0.0\" si=\"61000044\" sy=\"9UY4-H\" syi=\"30003707\"/>\r\n    <row c=\"J8-G8K\" ci=\"20000723\" r=\"Period Basis\" ri=\"10000063\" s=\"Conquerable Station #61000045\" se=\"0.0\" si=\"61000045\" sy=\"1-NJLK\" syi=\"30004940\"/>\r\n    <row c=\"J8-G8K\" ci=\"20000723\" r=\"Period Basis\" ri=\"10000063\" s=\"Conquerable Station #61000046\" se=\"0.0\" si=\"61000046\" sy=\"L5D-ZL\" syi=\"30004944\"/>\r\n    <row c=\"ZPI-2E\" ci=\"20000070\" r=\"Detorid\" ri=\"10000005\" s=\"Conquerable Station #61000047\" se=\"0.0\" si=\"61000047\" sy=\"77S8-E\" syi=\"30000483\"/>\r\n    <row c=\"AV-SCL\" ci=\"20000645\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000048\" se=\"0.0\" si=\"61000048\" sy=\"PMV-G6\" syi=\"30004411\"/>\r\n    <row c=\"74IL-O\" ci=\"20000366\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61000049\" se=\"0.0\" si=\"61000049\" sy=\"TDE4-H\" syi=\"30002502\"/>\r\n    <row c=\"AZBG-H\" ci=\"20000542\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000050\" se=\"0.0\" si=\"61000050\" sy=\"QR-K85\" syi=\"30003719\"/>\r\n    <row c=\"YZKE-Q\" ci=\"20000652\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000051\" se=\"0.0\" si=\"61000051\" sy=\"DB1R-4\" syi=\"30004470\"/>\r\n    <row c=\"WQZ8-4\" ci=\"20000104\" r=\"Scalding Pass\" ri=\"10000008\" s=\"Conquerable Station #61000052\" se=\"0.0\" si=\"61000052\" sy=\"KZFV-4\" syi=\"30000710\"/>\r\n    <row c=\"Basilisk\" ci=\"20000681\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000053\" se=\"0.0\" si=\"61000053\" sy=\"Y-2ANO\" syi=\"30004665\"/>\r\n    <row c=\"Chimera\" ci=\"20000673\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000054\" se=\"0.0\" si=\"61000054\" sy=\"7BX-6F\" syi=\"30004616\"/>\r\n    <row c=\"3-U491\" ci=\"20000650\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000055\" se=\"0.0\" si=\"61000055\" sy=\"E-PR0S\" syi=\"30004451\"/>\r\n    <row c=\"C73-U5\" ci=\"20000314\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #61000056\" se=\"0.0\" si=\"61000056\" sy=\"I-NGI8\" syi=\"30002134\"/>\r\n    <row c=\"6KFH-X\" ci=\"20000725\" r=\"Period Basis\" ri=\"10000063\" s=\"Conquerable Station #61000057\" se=\"0.0\" si=\"61000057\" sy=\"E2-RDQ\" syi=\"30004959\"/>\r\n    <row c=\"8MJO-4\" ci=\"20000718\" r=\"Omist\" ri=\"10000062\" s=\"Conquerable Station #61000058\" se=\"0.0\" si=\"61000058\" sy=\"QSF-EJ\" syi=\"30004909\"/>\r\n    <row c=\"2-ZRM0\" ci=\"20000532\" r=\"Tenal\" ri=\"10000045\" s=\"Conquerable Station #61000059\" se=\"0.0\" si=\"61000059\" sy=\"OE-4HB\" syi=\"30003657\"/>\r\n    <row c=\"LIB-F9\" ci=\"20000642\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000060\" se=\"0.0\" si=\"61000060\" sy=\"1IX-C0\" syi=\"30004393\"/>\r\n    <row c=\"WQZ8-4\" ci=\"20000104\" r=\"Scalding Pass\" ri=\"10000008\" s=\"Conquerable Station #61000061\" se=\"0.0\" si=\"61000061\" sy=\"RYC-19\" syi=\"30000712\"/>\r\n    <row c=\"EK-NQ2\" ci=\"20000383\" r=\"Impass\" ri=\"10000031\" s=\"Conquerable Station #61000062\" se=\"0.0\" si=\"61000062\" sy=\"9ZFH-Z\" syi=\"30002618\"/>\r\n    <row c=\"Wyvern\" ci=\"20000666\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000063\" se=\"0.0\" si=\"61000063\" sy=\"PNQY-Y\" syi=\"30004559\"/>\r\n    <row c=\"F-V9QW\" ci=\"20000043\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000064\" se=\"0.0\" si=\"61000064\" sy=\"C-FP70\" syi=\"30000302\"/>\r\n    <row c=\"6I-3VX\" ci=\"20000713\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #61000065\" se=\"0.0\" si=\"61000065\" sy=\"XGH-SH\" syi=\"30004875\"/>\r\n    <row c=\"R-CL2W\" ci=\"20000123\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000066\" se=\"0.0\" si=\"61000066\" sy=\"GB-6X5\" syi=\"30000839\"/>\r\n    <row c=\"EM-L3K\" ci=\"20000171\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000067\" se=\"0.0\" si=\"61000067\" sy=\"F4R2-Q\" syi=\"30001171\"/>\r\n    <row c=\"NK-AOZ\" ci=\"20000361\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61000068\" se=\"0.0\" si=\"61000068\" sy=\"K25-XD\" syi=\"30002464\"/>\r\n    <row c=\"A21H-Z\" ci=\"20000430\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000069\" se=\"0.0\" si=\"61000069\" sy=\"O-2RNZ\" syi=\"30002935\"/>\r\n    <row c=\"Satyr\" ci=\"20000671\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000070\" se=\"0.0\" si=\"61000070\" sy=\"G95F-H\" syi=\"30004598\"/>\r\n    <row c=\"88G-M4\" ci=\"20000046\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000071\" se=\"0.0\" si=\"61000071\" sy=\"MGAM-4\" syi=\"30000321\"/>\r\n    <row c=\"VW7-YN\" ci=\"20000426\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000072\" se=\"0.0\" si=\"61000072\" sy=\"YA0-XJ\" syi=\"30002902\"/>\r\n    <row c=\"J8-G8K\" ci=\"20000723\" r=\"Period Basis\" ri=\"10000063\" s=\"Conquerable Station #61000073\" se=\"0.0\" si=\"61000073\" sy=\"EIMJ-M\" syi=\"30004946\"/>\r\n    <row c=\"HS7W-T\" ci=\"20000546\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000074\" se=\"0.0\" si=\"61000074\" sy=\"ZT-LPU\" syi=\"30003747\"/>\r\n    <row c=\"LI-BA0\" ci=\"20000587\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000075\" se=\"0.0\" si=\"61000075\" sy=\"ED-L9T\" syi=\"30004020\"/>\r\n    <row c=\"W-4U1E\" ci=\"20000695\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000076\" se=\"0.0\" si=\"61000076\" sy=\"F-TE1T\" syi=\"30004757\"/>\r\n    <row c=\"JZV-O6\" ci=\"20000173\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000077\" se=\"0.0\" si=\"61000077\" sy=\"JBY6-F\" syi=\"30001185\"/>\r\n    <row c=\"T-RQ7S\" ci=\"20000643\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000078\" se=\"0.0\" si=\"61000078\" sy=\"I-7JR4\" syi=\"30004400\"/>\r\n    <row c=\"ZQ7-QS\" ci=\"20000707\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #61000079\" se=\"0.0\" si=\"61000079\" sy=\"KW-OAM\" syi=\"30004833\"/>\r\n    <row c=\"KPU3-3\" ci=\"20000270\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000080\" se=\"0.0\" si=\"61000080\" sy=\"N-I024\" syi=\"30001827\"/>\r\n    <row c=\"TJ10-O\" ci=\"20000529\" r=\"Tenal\" ri=\"10000045\" s=\"Conquerable Station #61000081\" se=\"0.0\" si=\"61000081\" sy=\"R-YWID\" syi=\"30003631\"/>\r\n    <row c=\"0-YMZM\" ci=\"20000117\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000082\" se=\"0.0\" si=\"61000082\" sy=\"3AE-CP\" syi=\"30000798\"/>\r\n    <row c=\"NOB-HD\" ci=\"20000268\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000083\" se=\"0.0\" si=\"61000083\" sy=\"GA58-7\" syi=\"30001811\"/>\r\n    <row c=\"D5-SOW\" ci=\"20000694\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000084\" se=\"0.0\" si=\"61000084\" sy=\"T-M0FA\" syi=\"30004745\"/>\r\n    <row c=\"OC-TTA\" ci=\"20000226\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000085\" se=\"0.0\" si=\"61000085\" sy=\"1I5-0V\" syi=\"30001540\"/>\r\n    <row c=\"2FYX-H\" ci=\"20000267\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000086\" se=\"0.0\" si=\"61000086\" sy=\"R3P0-Z\" syi=\"30001806\"/>\r\n    <row c=\"BB-48X\" ci=\"20000613\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000087\" se=\"0.0\" si=\"61000087\" sy=\"5ED-4E\" syi=\"30004193\"/>\r\n    <row c=\"WXB-RY\" ci=\"20000755\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000088\" se=\"0.0\" si=\"61000088\" sy=\"B-7LYC\" syi=\"30005160\"/>\r\n    <row c=\"GDBW-2\" ci=\"20000164\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000089\" se=\"0.0\" si=\"61000089\" sy=\"YM-SRU\" syi=\"30001118\"/>\r\n    <row c=\"Q0-4FU\" ci=\"20000756\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000090\" se=\"0.0\" si=\"61000090\" sy=\"NGM-OK\" syi=\"30005170\"/>\r\n    <row c=\"6TT8-Z\" ci=\"20000341\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000091\" se=\"0.0\" si=\"61000091\" sy=\"R-6KYM\" syi=\"30002324\"/>\r\n    <row c=\"G3-MU3\" ci=\"20000612\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000092\" se=\"0.0\" si=\"61000092\" sy=\"MK-YNM\" syi=\"30004183\"/>\r\n    <row c=\"UL8-RD\" ci=\"20000157\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000093\" se=\"0.0\" si=\"61000093\" sy=\"8-2JZA\" syi=\"30001071\"/>\r\n    <row c=\"V1G-63\" ci=\"20000362\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61000094\" se=\"0.0\" si=\"61000094\" sy=\"P-E9GN\" syi=\"30002467\"/>\r\n    <row c=\"04-LOF\" ci=\"20000472\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000095\" se=\"0.0\" si=\"61000095\" sy=\"BQ0-UU\" syi=\"30003230\"/>\r\n    <row c=\"88G-M4\" ci=\"20000046\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000096\" se=\"0.0\" si=\"61000096\" sy=\"Q3-BAY\" syi=\"30000324\"/>\r\n    <row c=\"MZ-PA2\" ci=\"20000065\" r=\"Detorid\" ri=\"10000005\" s=\"Conquerable Station #61000097\" se=\"0.0\" si=\"61000097\" sy=\"3-LJW3\" syi=\"30000448\"/>\r\n    <row c=\"9HXQ-G\" ci=\"20000175\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000098\" se=\"0.0\" si=\"61000098\" sy=\"YHN-3K\" syi=\"30001204\"/>\r\n    <row c=\"6TT8-Z\" ci=\"20000341\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000099\" se=\"0.0\" si=\"61000099\" sy=\"3H58-R\" syi=\"30002325\"/>\r\n    <row c=\"BB-48X\" ci=\"20000613\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000100\" se=\"0.0\" si=\"61000100\" sy=\"87-1PM\" syi=\"30004190\"/>\r\n    <row c=\"Unicorn\" ci=\"20000670\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000101\" se=\"0.0\" si=\"61000101\" sy=\"U-SOH2\" syi=\"30004594\"/>\r\n    <row c=\"S0X-O4\" ci=\"20000758\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000102\" se=\"0.0\" si=\"61000102\" sy=\"9IZ-HU\" syi=\"30005180\"/>\r\n    <row c=\"GDBW-2\" ci=\"20000164\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000103\" se=\"0.0\" si=\"61000103\" sy=\"LO5-LN\" syi=\"30001119\"/>\r\n    <row c=\"LI-BA0\" ci=\"20000587\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000104\" se=\"0.0\" si=\"61000104\" sy=\"I1Y-IU\" syi=\"30004023\"/>\r\n    <row c=\"MPJW-6\" ci=\"20000585\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000105\" se=\"0.0\" si=\"61000105\" sy=\"49-U6U\" syi=\"30004009\"/>\r\n    <row c=\"BRP2-K\" ci=\"20000183\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000106\" se=\"0.0\" si=\"61000106\" sy=\"25S-6P\" syi=\"30001258\"/>\r\n    <row c=\"F-RA63\" ci=\"20000583\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000107\" se=\"0.0\" si=\"61000107\" sy=\"Z-UZZN\" syi=\"30003991\"/>\r\n    <row c=\"SLYP-5\" ci=\"20000344\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000108\" se=\"0.0\" si=\"61000108\" sy=\"D-IZT9\" syi=\"30002347\"/>\r\n    <row c=\"04-LOF\" ci=\"20000472\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000109\" se=\"0.0\" si=\"61000109\" sy=\"GK3-RX\" syi=\"30003232\"/>\r\n    <row c=\"P-I9PF\" ci=\"20000098\" r=\"Scalding Pass\" ri=\"10000008\" s=\"Conquerable Station #61000110\" se=\"0.0\" si=\"61000110\" sy=\"AZ3F-N\" syi=\"30000672\"/>\r\n    <row c=\"P-I9PF\" ci=\"20000098\" r=\"Scalding Pass\" ri=\"10000008\" s=\"Conquerable Station #61000111\" se=\"0.0\" si=\"61000111\" sy=\"FYD-TO\" syi=\"30000675\"/>\r\n    <row c=\"N4TD-6\" ci=\"20000618\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000112\" se=\"0.0\" si=\"61000112\" sy=\"MO-YDG\" syi=\"30004223\"/>\r\n    <row c=\"N4TD-6\" ci=\"20000618\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000113\" se=\"0.0\" si=\"61000113\" sy=\"Q-VTWJ\" syi=\"30004229\"/>\r\n    <row c=\"0VFS-G\" ci=\"20000062\" r=\"UUA-F4\" ri=\"10000004\" s=\"Conquerable Station #61000114\" se=\"0.0\" si=\"61000114\" sy=\"U8MM-3\" syi=\"30000427\"/>\r\n    <row c=\"0VFS-G\" ci=\"20000062\" r=\"UUA-F4\" ri=\"10000004\" s=\"Conquerable Station #61000115\" se=\"0.0\" si=\"61000115\" sy=\"3C-26I\" syi=\"30000428\"/>\r\n    <row c=\"0VFS-G\" ci=\"20000062\" r=\"UUA-F4\" ri=\"10000004\" s=\"Conquerable Station #61000116\" se=\"0.0\" si=\"61000116\" sy=\"9K-VDI\" syi=\"30000429\"/>\r\n    <row c=\"0VFS-G\" ci=\"20000062\" r=\"UUA-F4\" ri=\"10000004\" s=\"Conquerable Station #61000117\" se=\"0.0\" si=\"61000117\" sy=\"Q-KCK3\" syi=\"30000432\"/>\r\n    <row c=\"ZPI-2E\" ci=\"20000070\" r=\"Detorid\" ri=\"10000005\" s=\"Conquerable Station #61000118\" se=\"0.0\" si=\"61000118\" sy=\"HZFJ-M\" syi=\"30000482\"/>\r\n    <row c=\"N4TD-6\" ci=\"20000618\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000119\" se=\"0.0\" si=\"61000119\" sy=\"VY-866\" syi=\"30004227\"/>\r\n    <row c=\"6KFH-X\" ci=\"20000725\" r=\"Period Basis\" ri=\"10000063\" s=\"Conquerable Station #61000120\" se=\"0.0\" si=\"61000120\" sy=\"GR-J8B\" syi=\"30004957\"/>\r\n    <row c=\"5YHF-H\" ci=\"20000037\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000121\" se=\"0.0\" si=\"61000121\" sy=\"TVN-FM\" syi=\"30000263\"/>\r\n    <row c=\"04-LOF\" ci=\"20000472\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000122\" se=\"0.0\" si=\"61000122\" sy=\"3-JG3X\" syi=\"30003231\"/>\r\n    <row c=\"04-H4M\" ci=\"20000550\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000123\" se=\"0.0\" si=\"61000123\" sy=\"N8XA-L\" syi=\"30003767\"/>\r\n    <row c=\"04-H4M\" ci=\"20000550\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000124\" se=\"0.0\" si=\"61000124\" sy=\"X6AB-Y\" syi=\"30003773\"/>\r\n    <row c=\"P-I9PF\" ci=\"20000098\" r=\"Scalding Pass\" ri=\"10000008\" s=\"Conquerable Station #61000125\" se=\"0.0\" si=\"61000125\" sy=\"RNM-Y6\" syi=\"30000673\"/>\r\n    <row c=\"KPU3-3\" ci=\"20000270\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000126\" se=\"0.0\" si=\"61000126\" sy=\"CNHV-M\" syi=\"30001825\"/>\r\n    <row c=\"R-M719\" ci=\"20000084\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61000127\" se=\"0.0\" si=\"61000127\" sy=\"5H-SM2\" syi=\"30000581\"/>\r\n    <row c=\"S4S-SD\" ci=\"20000418\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"Conquerable Station #61000128\" se=\"0.0\" si=\"61000128\" sy=\"M3-H2Y\" syi=\"30002852\"/>\r\n    <row c=\"SG-CTQ\" ci=\"20000697\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000129\" se=\"0.0\" si=\"61000129\" sy=\"8RQJ-2\" syi=\"30004771\"/>\r\n    <row c=\"52-JKU\" ci=\"20000127\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000130\" se=\"0.0\" si=\"61000130\" sy=\"WH-JCA\" syi=\"30000871\"/>\r\n    <row c=\"52-JKU\" ci=\"20000127\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000131\" se=\"0.0\" si=\"61000131\" sy=\"SH1-6P\" syi=\"30000868\"/>\r\n    <row c=\"JZV-O6\" ci=\"20000173\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000132\" se=\"0.0\" si=\"61000132\" sy=\"MB-NKE\" syi=\"30001182\"/>\r\n    <row c=\"VT-LHB\" ci=\"20000751\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000133\" se=\"0.0\" si=\"61000133\" sy=\"MJ-5F9\" syi=\"30005133\"/>\r\n    <row c=\"6TT8-Z\" ci=\"20000341\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000134\" se=\"0.0\" si=\"61000134\" sy=\"TP-RTO\" syi=\"30002327\"/>\r\n    <row c=\"JSZ-X6\" ci=\"20000456\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000135\" se=\"0.0\" si=\"61000135\" sy=\"XKZ8-H\" syi=\"30003119\"/>\r\n    <row c=\"U-HSM3\" ci=\"20000419\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"Conquerable Station #61000136\" se=\"0.0\" si=\"61000136\" sy=\"WNM-V0\" syi=\"30002854\"/>\r\n    <row c=\"F-V9QW\" ci=\"20000043\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000137\" se=\"0.0\" si=\"61000137\" sy=\"T-ZWA1\" syi=\"30000303\"/>\r\n    <row c=\"SLYP-5\" ci=\"20000344\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000138\" se=\"0.0\" si=\"61000138\" sy=\"E8-432\" syi=\"30002349\"/>\r\n    <row c=\"VW7-YN\" ci=\"20000426\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000139\" se=\"0.0\" si=\"61000139\" sy=\"2-KF56\" syi=\"30002903\"/>\r\n    <row c=\"LLAP-1\" ci=\"20000126\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000140\" se=\"0.0\" si=\"61000140\" sy=\"15W-GC\" syi=\"30000861\"/>\r\n    <row c=\"R-CL2W\" ci=\"20000123\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000141\" se=\"0.0\" si=\"61000141\" sy=\"5C-RPA\" syi=\"30000844\"/>\r\n    <row c=\"N4TD-6\" ci=\"20000618\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000142\" se=\"0.0\" si=\"61000142\" sy=\"42SU-L\" syi=\"30004224\"/>\r\n    <row c=\"W-4U1E\" ci=\"20000695\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000143\" se=\"0.0\" si=\"61000143\" sy=\"QY6-RK\" syi=\"30004752\"/>\r\n    <row c=\"KPU3-3\" ci=\"20000270\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000144\" se=\"0.0\" si=\"61000144\" sy=\"4O-ZRI\" syi=\"30001828\"/>\r\n    <row c=\"1-A81R\" ci=\"20000700\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000145\" se=\"0.0\" si=\"61000145\" sy=\"Y5C-YD\" syi=\"30004785\"/>\r\n    <row c=\"S-Q02B\" ci=\"20000476\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000146\" se=\"0.0\" si=\"61000146\" sy=\"WW-OVQ\" syi=\"30003256\"/>\r\n    <row c=\"2-ZRM0\" ci=\"20000532\" r=\"Tenal\" ri=\"10000045\" s=\"Conquerable Station #61000147\" se=\"0.0\" si=\"61000147\" sy=\"A1RR-M\" syi=\"30003655\"/>\r\n    <row c=\"2-ZRM0\" ci=\"20000532\" r=\"Tenal\" ri=\"10000045\" s=\"Conquerable Station #61000148\" se=\"0.0\" si=\"61000148\" sy=\"Z-SR1I\" syi=\"30003652\"/>\r\n    <row c=\"X7-FTR\" ci=\"20000749\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000149\" se=\"0.0\" si=\"61000149\" sy=\"1A8-6G\" syi=\"30005117\"/>\r\n    <row c=\"4BZ-R3\" ci=\"20000541\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000150\" se=\"0.0\" si=\"61000150\" sy=\"QBL-BV\" syi=\"30003714\"/>\r\n    <row c=\"KWCZ-A\" ci=\"20000641\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000151\" se=\"0.0\" si=\"61000151\" sy=\"4DTQ-K\" syi=\"30004384\"/>\r\n    <row c=\"52-JKU\" ci=\"20000127\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000152\" se=\"0.0\" si=\"61000152\" sy=\"TRKN-L\" syi=\"30000869\"/>\r\n    <row c=\"7-ZDOK\" ci=\"20000265\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000153\" se=\"0.0\" si=\"61000153\" sy=\"JX-SOA\" syi=\"30001793\"/>\r\n    <row c=\"LLAP-1\" ci=\"20000126\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000154\" se=\"0.0\" si=\"61000154\" sy=\"MSHD-4\" syi=\"30000864\"/>\r\n    <row c=\"7-ZDOK\" ci=\"20000265\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000155\" se=\"0.0\" si=\"61000155\" sy=\"VH-9VO\" syi=\"30001794\"/>\r\n    <row c=\"V1G-63\" ci=\"20000362\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61000156\" se=\"0.0\" si=\"61000156\" sy=\"4D9-66\" syi=\"30002469\"/>\r\n    <row c=\"V1G-63\" ci=\"20000362\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61000157\" se=\"0.0\" si=\"61000157\" sy=\"Q-TBHW\" syi=\"30002471\"/>\r\n    <row c=\"6TT8-Z\" ci=\"20000341\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000158\" se=\"0.0\" si=\"61000158\" sy=\"1H5-3W\" syi=\"30002329\"/>\r\n    <row c=\"74IL-O\" ci=\"20000366\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61000159\" se=\"0.0\" si=\"61000159\" sy=\"UG-UWZ\" syi=\"30002504\"/>\r\n    <row c=\"74IL-O\" ci=\"20000366\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61000160\" se=\"0.0\" si=\"61000160\" sy=\"O2O-2X\" syi=\"30002499\"/>\r\n    <row c=\"GDBW-2\" ci=\"20000164\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000161\" se=\"0.0\" si=\"61000161\" sy=\"NBW-GD\" syi=\"30001117\"/>\r\n    <row c=\"0-YMZM\" ci=\"20000117\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000162\" se=\"0.0\" si=\"61000162\" sy=\"9OLQ-6\" syi=\"30000800\"/>\r\n    <row c=\"9HXQ-G\" ci=\"20000175\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000163\" se=\"0.0\" si=\"61000163\" sy=\"MY-W1V\" syi=\"30001202\"/>\r\n    <row c=\"E-312G\" ci=\"20000635\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000164\" se=\"0.0\" si=\"61000164\" sy=\"QCWA-Z\" syi=\"30004343\"/>\r\n    <row c=\"IPS-QB\" ci=\"20000358\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61000165\" se=\"0.0\" si=\"61000165\" sy=\"BND-16\" syi=\"30002438\"/>\r\n    <row c=\"UTQ-BO\" ci=\"20000427\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000166\" se=\"0.0\" si=\"61000166\" sy=\"S-DN5M\" syi=\"30002912\"/>\r\n    <row c=\"ZQ2-CF\" ci=\"20000545\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000167\" se=\"0.0\" si=\"61000167\" sy=\"F-DTOO\" syi=\"30003737\"/>\r\n    <row c=\"ZQ2-CF\" ci=\"20000545\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000168\" se=\"0.0\" si=\"61000168\" sy=\"PI5-39\" syi=\"30003735\"/>\r\n    <row c=\"UTQ-BO\" ci=\"20000427\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000169\" se=\"0.0\" si=\"61000169\" sy=\"I30-3A\" syi=\"30002908\"/>\r\n    <row c=\"04-H4M\" ci=\"20000550\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000170\" se=\"0.0\" si=\"61000170\" sy=\"R3-K7K\" syi=\"30003769\"/>\r\n    <row c=\"BUG6-X\" ci=\"20000031\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000171\" se=\"0.0\" si=\"61000171\" sy=\"Y0-BVN\" syi=\"30000220\"/>\r\n    <row c=\"RL36-K\" ci=\"20000720\" r=\"Omist\" ri=\"10000062\" s=\"Conquerable Station #61000172\" se=\"0.0\" si=\"61000172\" sy=\"UEP0-A\" syi=\"30004922\"/>\r\n    <row c=\"HS7W-T\" ci=\"20000546\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000173\" se=\"0.0\" si=\"61000173\" sy=\"AY-YCU\" syi=\"30003746\"/>\r\n    <row c=\"HS7W-T\" ci=\"20000546\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000174\" se=\"0.0\" si=\"61000174\" sy=\"S9X-AX\" syi=\"30003741\"/>\r\n    <row c=\"XV7L-S\" ci=\"20000544\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000175\" se=\"0.0\" si=\"61000175\" sy=\"E-YCML\" syi=\"30003732\"/>\r\n    <row c=\"F-V9QW\" ci=\"20000043\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000176\" se=\"0.0\" si=\"61000176\" sy=\"ZA0L-U\" syi=\"30000304\"/>\r\n    <row c=\"8MJO-4\" ci=\"20000718\" r=\"Omist\" ri=\"10000062\" s=\"Conquerable Station #61000177\" se=\"0.0\" si=\"61000177\" sy=\"AXDX-F\" syi=\"30004904\"/>\r\n    <row c=\"OY3-DM\" ci=\"20000726\" r=\"Period Basis\" ri=\"10000063\" s=\"Conquerable Station #61000178\" se=\"0.0\" si=\"61000178\" sy=\"Z-M5A1\" syi=\"30004965\"/>\r\n    <row c=\"J-9M7D\" ci=\"20000083\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61000179\" se=\"0.0\" si=\"61000179\" sy=\"H6-EYX\" syi=\"30000574\"/>\r\n    <row c=\"XV7L-S\" ci=\"20000544\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000180\" se=\"0.0\" si=\"61000180\" sy=\"KBP7-G\" syi=\"30003729\"/>\r\n    <row c=\"SLYP-5\" ci=\"20000344\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000181\" se=\"0.0\" si=\"61000181\" sy=\"WU9-ZR\" syi=\"30002348\"/>\r\n    <row c=\"9HXQ-G\" ci=\"20000175\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000182\" se=\"0.0\" si=\"61000182\" sy=\"GE-8JV\" syi=\"30001198\"/>\r\n    <row c=\"XV7L-S\" ci=\"20000544\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000183\" se=\"0.0\" si=\"61000183\" sy=\"B-WPLZ\" syi=\"30003730\"/>\r\n    <row c=\"O-EIMK\" ci=\"20000696\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000184\" se=\"0.0\" si=\"61000184\" sy=\"5BTK-M\" syi=\"30004761\"/>\r\n    <row c=\"4BZ-R3\" ci=\"20000541\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000185\" se=\"0.0\" si=\"61000185\" sy=\"MH9C-S\" syi=\"30003712\"/>\r\n    <row c=\"1-A81R\" ci=\"20000700\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000186\" se=\"0.0\" si=\"61000186\" sy=\"7UTB-F\" syi=\"30004788\"/>\r\n    <row c=\"D-AWFI\" ci=\"20000432\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000187\" se=\"0.0\" si=\"61000187\" sy=\"RG9-7U\" syi=\"30002954\"/>\r\n    <row c=\"NNLX-K\" ci=\"20000180\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000188\" se=\"0.0\" si=\"61000188\" sy=\"BR-N97\" syi=\"30001235\"/>\r\n    <row c=\"O-EIMK\" ci=\"20000696\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000189\" se=\"0.0\" si=\"61000189\" sy=\"8WA-Z6\" syi=\"30004760\"/>\r\n    <row c=\"4BZ-R3\" ci=\"20000541\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000190\" se=\"0.0\" si=\"61000190\" sy=\"I7S-1S\" syi=\"30003716\"/>\r\n    <row c=\"F-I56R\" ci=\"20000701\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000191\" se=\"0.0\" si=\"61000191\" sy=\"C6Y-ZF\" syi=\"30004791\"/>\r\n    <row c=\"6I-3VX\" ci=\"20000713\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #61000192\" se=\"0.0\" si=\"61000192\" sy=\"T-AKQZ\" syi=\"30004877\"/>\r\n    <row c=\"JZV-O6\" ci=\"20000173\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000193\" se=\"0.0\" si=\"61000193\" sy=\"RNF-YH\" syi=\"30001187\"/>\r\n    <row c=\"HS7W-T\" ci=\"20000546\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000194\" se=\"0.0\" si=\"61000194\" sy=\"6-OQJV\" syi=\"30003745\"/>\r\n    <row c=\"W-4U1E\" ci=\"20000695\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000195\" se=\"0.0\" si=\"61000195\" sy=\"0-HDC8\" syi=\"30004756\"/>\r\n    <row c=\"5Y1E-3\" ci=\"20000085\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61000196\" se=\"0.0\" si=\"61000196\" sy=\"M-MBRT\" syi=\"30000591\"/>\r\n    <row c=\"OY3-DM\" ci=\"20000726\" r=\"Period Basis\" ri=\"10000063\" s=\"Conquerable Station #61000197\" se=\"0.0\" si=\"61000197\" sy=\"PA-VE3\" syi=\"30004961\"/>\r\n    <row c=\"S0X-O4\" ci=\"20000758\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000198\" se=\"0.0\" si=\"61000198\" sy=\"F-HQWV\" syi=\"30005183\"/>\r\n    <row c=\"W-4U1E\" ci=\"20000695\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000199\" se=\"0.0\" si=\"61000199\" sy=\"PUIG-F\" syi=\"30004754\"/>\r\n    <row c=\"S0X-O4\" ci=\"20000758\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000200\" se=\"0.0\" si=\"61000200\" sy=\"2AUL-X\" syi=\"30005182\"/>\r\n    <row c=\"ZQ2-CF\" ci=\"20000545\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000201\" se=\"0.0\" si=\"61000201\" sy=\"GN7-XY\" syi=\"30003736\"/>\r\n    <row c=\"W-4U1E\" ci=\"20000695\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000202\" se=\"0.0\" si=\"61000202\" sy=\"SVM-3K\" syi=\"30004758\"/>\r\n    <row c=\"O-EIMK\" ci=\"20000696\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000203\" se=\"0.0\" si=\"61000203\" sy=\"Y-OMTZ\" syi=\"30004763\"/>\r\n    <row c=\"R-CL2W\" ci=\"20000123\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000204\" se=\"0.0\" si=\"61000204\" sy=\"N7-KGJ\" syi=\"30000841\"/>\r\n    <row c=\"9HXQ-G\" ci=\"20000175\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000205\" se=\"0.0\" si=\"61000205\" sy=\"3-OKDA\" syi=\"30001199\"/>\r\n    <row c=\"W-3E44\" ci=\"20000714\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #61000206\" se=\"0.0\" si=\"61000206\" sy=\"46DP-O\" syi=\"30004878\"/>\r\n    <row c=\"6KFH-X\" ci=\"20000725\" r=\"Period Basis\" ri=\"10000063\" s=\"Conquerable Station #61000207\" se=\"0.0\" si=\"61000207\" sy=\"TN25-J\" syi=\"30004960\"/>\r\n    <row c=\"VSC-W9\" ci=\"20000093\" r=\"Cache\" ri=\"10000007\" s=\"Conquerable Station #61000208\" se=\"0.0\" si=\"61000208\" sy=\"M-MCP8\" syi=\"30000639\"/>\r\n    <row c=\"M9-AN3\" ci=\"20000340\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000209\" se=\"0.0\" si=\"61000209\" sy=\"1ACJ-6\" syi=\"30002317\"/>\r\n    <row c=\"RFQ-8Y\" ci=\"20000064\" r=\"Detorid\" ri=\"10000005\" s=\"Conquerable Station #61000210\" se=\"0.0\" si=\"61000210\" sy=\"MD-0AW\" syi=\"30000443\"/>\r\n    <row c=\"NNLX-K\" ci=\"20000180\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000211\" se=\"0.0\" si=\"61000211\" sy=\"ERVK-P\" syi=\"30001233\"/>\r\n    <row c=\"I9B-8X\" ci=\"20000543\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000212\" se=\"0.0\" si=\"61000212\" sy=\"H6-CX8\" syi=\"30003723\"/>\r\n    <row c=\"G2E-RJ\" ci=\"20000540\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000213\" se=\"0.0\" si=\"61000213\" sy=\"G-5EN2\" syi=\"30003703\"/>\r\n    <row c=\"G2E-RJ\" ci=\"20000540\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000214\" se=\"0.0\" si=\"61000214\" sy=\"49GC-R\" syi=\"30003708\"/>\r\n    <row c=\"P6N8-J\" ci=\"20000549\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000215\" se=\"0.0\" si=\"61000215\" sy=\"K1Y-5H\" syi=\"30003764\"/>\r\n    <row c=\"Q-6LG1\" ci=\"20000552\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000216\" se=\"0.0\" si=\"61000216\" sy=\"I-MGAB\" syi=\"30003784\"/>\r\n    <row c=\"304-QS\" ci=\"20000632\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000217\" se=\"0.0\" si=\"61000217\" sy=\"AH-B84\" syi=\"30004323\"/>\r\n    <row c=\"SLYP-5\" ci=\"20000344\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000218\" se=\"0.0\" si=\"61000218\" sy=\"89-JPE\" syi=\"30002346\"/>\r\n    <row c=\"I9B-8X\" ci=\"20000543\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000219\" se=\"0.0\" si=\"61000219\" sy=\"Y-MPWL\" syi=\"30003726\"/>\r\n    <row c=\"P-FL48\" ci=\"20000232\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000220\" se=\"0.0\" si=\"61000220\" sy=\"C-BHDN\" syi=\"30001576\"/>\r\n    <row c=\"5-88B9\" ci=\"20000547\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000221\" se=\"0.0\" si=\"61000221\" sy=\"F-YH5B\" syi=\"30003751\"/>\r\n    <row c=\"P-I9PF\" ci=\"20000098\" r=\"Scalding Pass\" ri=\"10000008\" s=\"Conquerable Station #61000222\" se=\"0.0\" si=\"61000222\" sy=\"J2-PZ6\" syi=\"30000677\"/>\r\n    <row c=\"ZW-BY5\" ci=\"20000172\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000223\" se=\"0.0\" si=\"61000223\" sy=\"KW-I6T\" syi=\"30001180\"/>\r\n    <row c=\"UD-ZJ3\" ci=\"20000548\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000224\" se=\"0.0\" si=\"61000224\" sy=\"BK4-YC\" syi=\"30003757\"/>\r\n    <row c=\"52-JKU\" ci=\"20000127\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000225\" se=\"0.0\" si=\"61000225\" sy=\"O-0ERG\" syi=\"30000870\"/>\r\n    <row c=\"W-XBGF\" ci=\"20000131\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000226\" se=\"0.0\" si=\"61000226\" sy=\"W6VP-Y\" syi=\"30000894\"/>\r\n    <row c=\"S-B1E4\" ci=\"20000429\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000227\" se=\"0.0\" si=\"61000227\" sy=\"RO0-AF\" syi=\"30002926\"/>\r\n    <row c=\"BXT7-V\" ci=\"20000752\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000228\" se=\"0.0\" si=\"61000228\" sy=\"TAL1-3\" syi=\"30005143\"/>\r\n    <row c=\"H-KW4A\" ci=\"20000551\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000229\" se=\"0.0\" si=\"61000229\" sy=\"H9-J8N\" syi=\"30003775\"/>\r\n    <row c=\"W-XBGF\" ci=\"20000131\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000230\" se=\"0.0\" si=\"61000230\" sy=\"F-G7BO\" syi=\"30000897\"/>\r\n    <row c=\"XPBM-F\" ci=\"20000640\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000231\" se=\"0.0\" si=\"61000231\" sy=\"C-4ZOS\" syi=\"30004378\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000232\" se=\"0.0\" si=\"61000232\" sy=\"GY5-26\" syi=\"30002947\"/>\r\n    <row c=\"PG-RWX\" ci=\"20000349\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000233\" se=\"0.0\" si=\"61000233\" sy=\"DYPL-6\" syi=\"30002378\"/>\r\n    <row c=\"PG-RWX\" ci=\"20000349\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000234\" se=\"0.0\" si=\"61000234\" sy=\"RK-Q51\" syi=\"30002380\"/>\r\n    <row c=\"PG-RWX\" ci=\"20000349\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000235\" se=\"0.0\" si=\"61000235\" sy=\"V-OL61\" syi=\"30002379\"/>\r\n    <row c=\"P6N8-J\" ci=\"20000549\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000236\" se=\"0.0\" si=\"61000236\" sy=\"O-Y5JQ\" syi=\"30003761\"/>\r\n    <row c=\"4BZ-R3\" ci=\"20000541\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000237\" se=\"0.0\" si=\"61000237\" sy=\"D-GTMI\" syi=\"30003709\"/>\r\n    <row c=\"Q-6LG1\" ci=\"20000552\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000238\" se=\"0.0\" si=\"61000238\" sy=\"3D-CQU\" syi=\"30003786\"/>\r\n    <row c=\"T-RQ7S\" ci=\"20000643\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000239\" se=\"0.0\" si=\"61000239\" sy=\"ME-4IU\" syi=\"30004398\"/>\r\n    <row c=\"XPBM-F\" ci=\"20000640\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000240\" se=\"0.0\" si=\"61000240\" sy=\"O94U-A\" syi=\"30004381\"/>\r\n    <row c=\"T-1WDH\" ci=\"20000177\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000241\" se=\"0.0\" si=\"61000241\" sy=\"AOK-WQ\" syi=\"30001216\"/>\r\n    <row c=\"P6N8-J\" ci=\"20000549\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000242\" se=\"0.0\" si=\"61000242\" sy=\"IWZ3-C\" syi=\"30003765\"/>\r\n    <row c=\"BXT7-V\" ci=\"20000752\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000243\" se=\"0.0\" si=\"61000243\" sy=\"2-YO2K\" syi=\"30005139\"/>\r\n    <row c=\"W-XBGF\" ci=\"20000131\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000244\" se=\"0.0\" si=\"61000244\" sy=\"QFF-O6\" syi=\"30000899\"/>\r\n    <row c=\"YZKE-Q\" ci=\"20000652\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000245\" se=\"0.0\" si=\"61000245\" sy=\"23M-PX\" syi=\"30004467\"/>\r\n    <row c=\"A21H-Z\" ci=\"20000430\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000246\" se=\"0.0\" si=\"61000246\" sy=\"OWXT-5\" syi=\"30002936\"/>\r\n    <row c=\"BXT7-V\" ci=\"20000752\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000247\" se=\"0.0\" si=\"61000247\" sy=\"M-SG47\" syi=\"30005140\"/>\r\n    <row c=\"M9-AN3\" ci=\"20000340\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000248\" se=\"0.0\" si=\"61000248\" sy=\"F9-FUV\" syi=\"30002320\"/>\r\n    <row c=\"1P-VL2\" ci=\"20000124\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000249\" se=\"0.0\" si=\"61000249\" sy=\"M-OEE8\" syi=\"30000848\"/>\r\n    <row c=\"1P-VL2\" ci=\"20000124\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000250\" se=\"0.0\" si=\"61000250\" sy=\"MJI3-8\" syi=\"30000851\"/>\r\n    <row c=\"1P-VL2\" ci=\"20000124\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000251\" se=\"0.0\" si=\"61000251\" sy=\"J-GAMP\" syi=\"30000847\"/>\r\n    <row c=\"304-QS\" ci=\"20000632\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000252\" se=\"0.0\" si=\"61000252\" sy=\"O-JPKH\" syi=\"30004326\"/>\r\n    <row c=\"J-9M7D\" ci=\"20000083\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61000253\" se=\"0.0\" si=\"61000253\" sy=\"1-7B6D\" syi=\"30000573\"/>\r\n    <row c=\"9HXQ-G\" ci=\"20000175\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000254\" se=\"0.0\" si=\"61000254\" sy=\"3GD6-8\" syi=\"30001200\"/>\r\n    <row c=\"0-YMZM\" ci=\"20000117\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000255\" se=\"0.0\" si=\"61000255\" sy=\"EUU-4N\" syi=\"30000796\"/>\r\n    <row c=\"OFQ-HG\" ci=\"20000651\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000256\" se=\"0.0\" si=\"61000256\" sy=\"M2GJ-X\" syi=\"30004461\"/>\r\n    <row c=\"3-PC31\" ci=\"20000655\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000257\" se=\"0.0\" si=\"61000257\" sy=\"ZID-LE\" syi=\"30004489\"/>\r\n    <row c=\"E-312G\" ci=\"20000635\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000258\" se=\"0.0\" si=\"61000258\" sy=\"52G-NZ\" syi=\"30004344\"/>\r\n    <row c=\"304-QS\" ci=\"20000632\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000259\" se=\"0.0\" si=\"61000259\" sy=\"F-9F6Q\" syi=\"30004327\"/>\r\n    <row c=\"B4H-9W\" ci=\"20000689\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000260\" se=\"0.0\" si=\"61000260\" sy=\"HM-XR2\" syi=\"30004715\"/>\r\n    <row c=\"B4H-9W\" ci=\"20000689\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000261\" se=\"0.0\" si=\"61000261\" sy=\"QX-LIJ\" syi=\"30004714\"/>\r\n    <row c=\"T-HHHT\" ci=\"20000179\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000262\" se=\"0.0\" si=\"61000262\" sy=\"ZQ-Z3Y\" syi=\"30001226\"/>\r\n    <row c=\"42-WDG\" ci=\"20000654\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000263\" se=\"0.0\" si=\"61000263\" sy=\"SWBV-2\" syi=\"30004484\"/>\r\n    <row c=\"UX3-N2\" ci=\"20000169\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000264\" se=\"0.0\" si=\"61000264\" sy=\"HED-GP\" syi=\"30001161\"/>\r\n    <row c=\"Q-6LG1\" ci=\"20000552\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000265\" se=\"0.0\" si=\"61000265\" sy=\"3KB-J0\" syi=\"30003781\"/>\r\n    <row c=\"S-B1E4\" ci=\"20000429\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000266\" se=\"0.0\" si=\"61000266\" sy=\"7T6P-C\" syi=\"30002929\"/>\r\n    <row c=\"T-HHHT\" ci=\"20000179\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000267\" se=\"0.0\" si=\"61000267\" sy=\"KA6D-K\" syi=\"30001231\"/>\r\n    <row c=\"Unicorn\" ci=\"20000670\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000268\" se=\"0.0\" si=\"61000268\" sy=\"DBRN-Z\" syi=\"30004595\"/>\r\n    <row c=\"M9-AN3\" ci=\"20000340\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000269\" se=\"0.0\" si=\"61000269\" sy=\"XB-9U2\" syi=\"30002319\"/>\r\n    <row c=\"3WN-1T\" ci=\"20000458\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000270\" se=\"0.0\" si=\"61000270\" sy=\"G-YZUX\" syi=\"30003133\"/>\r\n    <row c=\"Q-6LG1\" ci=\"20000552\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000271\" se=\"0.0\" si=\"61000271\" sy=\"Z-RFE3\" syi=\"30003783\"/>\r\n    <row c=\"Unicorn\" ci=\"20000670\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000272\" se=\"0.0\" si=\"61000272\" sy=\"6F-H3W\" syi=\"30004591\"/>\r\n    <row c=\"S-B1E4\" ci=\"20000429\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000273\" se=\"0.0\" si=\"61000273\" sy=\"ZOYW-O\" syi=\"30002923\"/>\r\n    <row c=\"LLAP-1\" ci=\"20000126\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000274\" se=\"0.0\" si=\"61000274\" sy=\"PNDN-V\" syi=\"30000866\"/>\r\n    <row c=\"D9DM-O\" ci=\"20000687\" r=\"Paragon Soul\" ri=\"10000059\" s=\"Conquerable Station #61000275\" se=\"0.0\" si=\"61000275\" sy=\"O-N589\" syi=\"30004703\"/>\r\n    <row c=\"P6N8-J\" ci=\"20000549\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000276\" se=\"0.0\" si=\"61000276\" sy=\"JEIV-E\" syi=\"30003760\"/>\r\n    <row c=\"1-A81R\" ci=\"20000700\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000277\" se=\"0.0\" si=\"61000277\" sy=\"Q-02UL\" syi=\"30004787\"/>\r\n    <row c=\"M-J57M\" ci=\"20000526\" r=\"Tenal\" ri=\"10000045\" s=\"Conquerable Station #61000278\" se=\"0.0\" si=\"61000278\" sy=\"EOY-BG\" syi=\"30003612\"/>\r\n    <row c=\"N-U2LX\" ci=\"20000428\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000279\" se=\"0.0\" si=\"61000279\" sy=\"DKUK-G\" syi=\"30002920\"/>\r\n    <row c=\"T-HHHT\" ci=\"20000179\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000280\" se=\"0.0\" si=\"61000280\" sy=\"J6QB-P\" syi=\"30001230\"/>\r\n    <row c=\"I-3ODK\" ci=\"20000646\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000281\" se=\"0.0\" si=\"61000281\" sy=\"TSG-NO\" syi=\"30004423\"/>\r\n    <row c=\"U8-CWA\" ci=\"20000290\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000282\" se=\"0.0\" si=\"61000282\" sy=\"JC-YX8\" syi=\"30001971\"/>\r\n    <row c=\"LI-BA0\" ci=\"20000587\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000283\" se=\"0.0\" si=\"61000283\" sy=\"U-HYZN\" syi=\"30004024\"/>\r\n    <row c=\"OK-FEM\" ci=\"20000702\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000284\" se=\"0.0\" si=\"61000284\" sy=\"1-2J4P\" syi=\"30004801\"/>\r\n    <row c=\"FDR-EQ\" ci=\"20000176\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000285\" se=\"0.0\" si=\"61000285\" sy=\"A-VILQ\" syi=\"30001210\"/>\r\n    <row c=\"Minotaur\" ci=\"20000678\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000286\" se=\"0.0\" si=\"61000286\" sy=\"PXF-RF\" syi=\"30004647\"/>\r\n    <row c=\"M-J57M\" ci=\"20000526\" r=\"Tenal\" ri=\"10000045\" s=\"Conquerable Station #61000287\" se=\"0.0\" si=\"61000287\" sy=\"IG-ZAM\" syi=\"30003614\"/>\r\n    <row c=\"F-I56R\" ci=\"20000701\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000288\" se=\"0.0\" si=\"61000288\" sy=\"6Z-CKS\" syi=\"30004792\"/>\r\n    <row c=\"JQA8-6\" ci=\"20000649\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000289\" se=\"0.0\" si=\"61000289\" sy=\"M-CMLV\" syi=\"30004449\"/>\r\n    <row c=\"Unicorn\" ci=\"20000670\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000290\" se=\"0.0\" si=\"61000290\" sy=\"L-1SW8\" syi=\"30004593\"/>\r\n    <row c=\"I-3ODK\" ci=\"20000646\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000291\" se=\"0.0\" si=\"61000291\" sy=\"BJD4-E\" syi=\"30004422\"/>\r\n    <row c=\"C73-U5\" ci=\"20000314\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #61000292\" se=\"0.0\" si=\"61000292\" sy=\"R-ZUOL\" syi=\"30002135\"/>\r\n    <row c=\"Minotaur\" ci=\"20000678\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000293\" se=\"0.0\" si=\"61000293\" sy=\"9DQW-W\" syi=\"30004646\"/>\r\n    <row c=\"UD-ZJ3\" ci=\"20000548\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000294\" se=\"0.0\" si=\"61000294\" sy=\"AY-24I\" syi=\"30003756\"/>\r\n    <row c=\"Minotaur\" ci=\"20000678\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000295\" se=\"0.0\" si=\"61000295\" sy=\"V6-NY1\" syi=\"30004644\"/>\r\n    <row c=\"C73-U5\" ci=\"20000314\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #61000296\" se=\"0.0\" si=\"61000296\" sy=\"E1F-LK\" syi=\"30002136\"/>\r\n    <row c=\"X7-FTR\" ci=\"20000749\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000297\" se=\"0.0\" si=\"61000297\" sy=\"RY-2FX\" syi=\"30005119\"/>\r\n    <row c=\"X7-FTR\" ci=\"20000749\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000298\" se=\"0.0\" si=\"61000298\" sy=\"K-3PQW\" syi=\"30005120\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000299\" se=\"0.0\" si=\"61000299\" sy=\"MZ1E-P\" syi=\"30002940\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000300\" se=\"0.0\" si=\"61000300\" sy=\"WUZ-WM\" syi=\"30002939\"/>\r\n    <row c=\"D5-SOW\" ci=\"20000694\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000301\" se=\"0.0\" si=\"61000301\" sy=\"4O-239\" syi=\"30004746\"/>\r\n    <row c=\"AZBG-H\" ci=\"20000542\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000302\" se=\"0.0\" si=\"61000302\" sy=\"U-HYMT\" syi=\"30003717\"/>\r\n    <row c=\"OK-FEM\" ci=\"20000702\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000303\" se=\"0.0\" si=\"61000303\" sy=\"CX8-6K\" syi=\"30004799\"/>\r\n    <row c=\"I9B-8X\" ci=\"20000543\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000304\" se=\"0.0\" si=\"61000304\" sy=\"Shintaht\" syi=\"30003725\"/>\r\n    <row c=\"C45-9Y\" ci=\"20000647\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000305\" se=\"0.0\" si=\"61000305\" sy=\"JI-LGM\" syi=\"30004435\"/>\r\n    <row c=\"3-U491\" ci=\"20000650\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000306\" se=\"0.0\" si=\"61000306\" sy=\"TR07-S\" syi=\"30004452\"/>\r\n    <row c=\"I-3ODK\" ci=\"20000646\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000307\" se=\"0.0\" si=\"61000307\" sy=\"3L-Y9M\" syi=\"30004419\"/>\r\n    <row c=\"H-KW4A\" ci=\"20000551\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000308\" se=\"0.0\" si=\"61000308\" sy=\"GA9P-0\" syi=\"30003777\"/>\r\n    <row c=\"O-PQU0\" ci=\"20000462\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000309\" se=\"0.0\" si=\"61000309\" sy=\"C-PEWN\" syi=\"30003169\"/>\r\n    <row c=\"Unicorn\" ci=\"20000670\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000310\" se=\"0.0\" si=\"61000310\" sy=\"H-NPXW\" syi=\"30004592\"/>\r\n    <row c=\"E-312G\" ci=\"20000635\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000311\" se=\"0.0\" si=\"61000311\" sy=\"Z-K495\" syi=\"30004341\"/>\r\n    <row c=\"E-312G\" ci=\"20000635\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000312\" se=\"0.0\" si=\"61000312\" sy=\"6-O5GY\" syi=\"30004347\"/>\r\n    <row c=\"VW7-YN\" ci=\"20000426\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000313\" se=\"0.0\" si=\"61000313\" sy=\"2R-CRW\" syi=\"30002905\"/>\r\n    <row c=\"304-QS\" ci=\"20000632\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000314\" se=\"0.0\" si=\"61000314\" sy=\"HB7R-F\" syi=\"30004325\"/>\r\n    <row c=\"MPJW-6\" ci=\"20000585\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000315\" se=\"0.0\" si=\"61000315\" sy=\"5V-BJI\" syi=\"30004008\"/>\r\n    <row c=\"MPJW-6\" ci=\"20000585\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000316\" se=\"0.0\" si=\"61000316\" sy=\"W-IIYI\" syi=\"30004005\"/>\r\n    <row c=\"O-PQU0\" ci=\"20000462\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000317\" se=\"0.0\" si=\"61000317\" sy=\"7P-J38\" syi=\"30003165\"/>\r\n    <row c=\"UX3-N2\" ci=\"20000169\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000318\" se=\"0.0\" si=\"61000318\" sy=\"V-3YG7\" syi=\"30001162\"/>\r\n    <row c=\"AZBG-H\" ci=\"20000542\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000319\" se=\"0.0\" si=\"61000319\" sy=\"FC-3YI\" syi=\"30003718\"/>\r\n    <row c=\"XV7L-S\" ci=\"20000544\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000320\" se=\"0.0\" si=\"61000320\" sy=\"Y9-MDG\" syi=\"30003734\"/>\r\n    <row c=\"8BO-IH\" ci=\"20000581\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000321\" se=\"0.0\" si=\"61000321\" sy=\"W6V-VM\" syi=\"30003983\"/>\r\n    <row c=\"H-KW4A\" ci=\"20000551\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000322\" se=\"0.0\" si=\"61000322\" sy=\"7YWV-S\" syi=\"30003778\"/>\r\n    <row c=\"8BO-IH\" ci=\"20000581\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000323\" se=\"0.0\" si=\"61000323\" sy=\"P-ZMZV\" syi=\"30003978\"/>\r\n    <row c=\"D5-SOW\" ci=\"20000694\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000324\" se=\"0.0\" si=\"61000324\" sy=\"T-IPZB\" syi=\"30004748\"/>\r\n    <row c=\"T-1WDH\" ci=\"20000177\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000325\" se=\"0.0\" si=\"61000325\" sy=\"B-XJX4\" syi=\"30001215\"/>\r\n    <row c=\"5YHF-H\" ci=\"20000037\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000326\" se=\"0.0\" si=\"61000326\" sy=\"0MV-4W\" syi=\"30000262\"/>\r\n    <row c=\"VSC-W9\" ci=\"20000093\" r=\"Cache\" ri=\"10000007\" s=\"Conquerable Station #61000327\" se=\"0.0\" si=\"61000327\" sy=\"TPG-DD\" syi=\"30000641\"/>\r\n    <row c=\"UX3-N2\" ci=\"20000169\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000328\" se=\"0.0\" si=\"61000328\" sy=\"HY-RWO\" syi=\"30001159\"/>\r\n    <row c=\"UD-ZJ3\" ci=\"20000548\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000329\" se=\"0.0\" si=\"61000329\" sy=\"LF-2KP\" syi=\"30003759\"/>\r\n    <row c=\"O-PQU0\" ci=\"20000462\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000330\" se=\"0.0\" si=\"61000330\" sy=\"QFGB-E\" syi=\"30003164\"/>\r\n    <row c=\"8ET-D1\" ci=\"20000584\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000331\" se=\"0.0\" si=\"61000331\" sy=\"ZAU-JW\" syi=\"30003996\"/>\r\n    <row c=\"C73-U5\" ci=\"20000314\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #61000332\" se=\"0.0\" si=\"61000332\" sy=\"ZJA-6U\" syi=\"30002130\"/>\r\n    <row c=\"P6N8-J\" ci=\"20000549\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000333\" se=\"0.0\" si=\"61000333\" sy=\"N-RMSH\" syi=\"30003763\"/>\r\n    <row c=\"P6N8-J\" ci=\"20000549\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000334\" se=\"0.0\" si=\"61000334\" sy=\"DNR-7M\" syi=\"30003762\"/>\r\n    <row c=\"FDR-EQ\" ci=\"20000176\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000335\" se=\"0.0\" si=\"61000335\" sy=\"N-8BZ6\" syi=\"30001209\"/>\r\n    <row c=\"UD-ZJ3\" ci=\"20000548\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000336\" se=\"0.0\" si=\"61000336\" sy=\"2-TEGJ\" syi=\"30003754\"/>\r\n    <row c=\"NK-AOZ\" ci=\"20000361\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61000337\" se=\"0.0\" si=\"61000337\" sy=\"Y8R-XZ\" syi=\"30002466\"/>\r\n    <row c=\"NK-AOZ\" ci=\"20000361\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61000338\" se=\"0.0\" si=\"61000338\" sy=\"04-LQM\" syi=\"30002460\"/>\r\n    <row c=\"PUB-0R\" ci=\"20000577\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000339\" se=\"0.0\" si=\"61000339\" sy=\"L-6BE1\" syi=\"30003951\"/>\r\n    <row c=\"H-6HGD\" ci=\"20000576\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000340\" se=\"0.0\" si=\"61000340\" sy=\"A2-V27\" syi=\"30003942\"/>\r\n    <row c=\"R2-BT6\" ci=\"20000457\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000341\" se=\"0.0\" si=\"61000341\" sy=\"A1-AUH\" syi=\"30003125\"/>\r\n    <row c=\"7ZRW-G\" ci=\"20000459\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000342\" se=\"0.0\" si=\"61000342\" sy=\"H-T40Z\" syi=\"30003144\"/>\r\n    <row c=\"TJ10-O\" ci=\"20000529\" r=\"Tenal\" ri=\"10000045\" s=\"Conquerable Station #61000343\" se=\"0.0\" si=\"61000343\" sy=\"J1-KJP\" syi=\"30003634\"/>\r\n    <row c=\"XV7L-S\" ci=\"20000544\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000344\" se=\"0.0\" si=\"61000344\" sy=\"XHQ-7V\" syi=\"30003731\"/>\r\n    <row c=\"XV7L-S\" ci=\"20000544\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000345\" se=\"0.0\" si=\"61000345\" sy=\"TU-O0T\" syi=\"30003733\"/>\r\n    <row c=\"TJ10-O\" ci=\"20000529\" r=\"Tenal\" ri=\"10000045\" s=\"Conquerable Station #61000346\" se=\"0.0\" si=\"61000346\" sy=\"HB-FSO\" syi=\"30003633\"/>\r\n    <row c=\"3WN-1T\" ci=\"20000458\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000347\" se=\"0.0\" si=\"61000347\" sy=\"D-PNP9\" syi=\"30003135\"/>\r\n    <row c=\"7ZRW-G\" ci=\"20000459\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000348\" se=\"0.0\" si=\"61000348\" sy=\"J-RVGD\" syi=\"30003142\"/>\r\n    <row c=\"G2E-RJ\" ci=\"20000540\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000349\" se=\"0.0\" si=\"61000349\" sy=\"9-F0B2\" syi=\"30003704\"/>\r\n    <row c=\"S4GH-I\" ci=\"20000300\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000350\" se=\"0.0\" si=\"61000350\" sy=\"D2-HOS\" syi=\"30002036\"/>\r\n    <row c=\"DITJ-X\" ci=\"20000105\" r=\"Scalding Pass\" ri=\"10000008\" s=\"Conquerable Station #61000351\" se=\"0.0\" si=\"61000351\" sy=\"4-CM8I\" syi=\"30000718\"/>\r\n    <row c=\"U29-0S\" ci=\"20000030\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000352\" se=\"0.0\" si=\"61000352\" sy=\"B-588R\" syi=\"30000211\"/>\r\n    <row c=\"H-KW4A\" ci=\"20000551\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000353\" se=\"0.0\" si=\"61000353\" sy=\"HP-6Z6\" syi=\"30003776\"/>\r\n    <row c=\"NOB-HD\" ci=\"20000268\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000354\" se=\"0.0\" si=\"61000354\" sy=\"4AZV-W\" syi=\"30001815\"/>\r\n    <row c=\"7ZRW-G\" ci=\"20000459\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000355\" se=\"0.0\" si=\"61000355\" sy=\"6-TYRX\" syi=\"30003145\"/>\r\n    <row c=\"N-LY4R\" ci=\"20000119\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000356\" se=\"0.0\" si=\"61000356\" sy=\"TTP-2B\" syi=\"30000812\"/>\r\n    <row c=\"NJU-QV\" ci=\"20000698\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000357\" se=\"0.0\" si=\"61000357\" sy=\"5-CQDA\" syi=\"30004774\"/>\r\n    <row c=\"S-B1E4\" ci=\"20000429\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000358\" se=\"0.0\" si=\"61000358\" sy=\"85-B52\" syi=\"30002924\"/>\r\n    <row c=\"Z-D6K5\" ci=\"20000425\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000359\" se=\"0.0\" si=\"61000359\" sy=\"CU9-T0\" syi=\"30002896\"/>\r\n    <row c=\"XLL-Z7\" ci=\"20000589\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000360\" se=\"0.0\" si=\"61000360\" sy=\"F-NXLQ\" syi=\"30004032\"/>\r\n    <row c=\"U8-CWA\" ci=\"20000290\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000361\" se=\"0.0\" si=\"61000361\" sy=\"EL8-4Q\" syi=\"30001970\"/>\r\n    <row c=\"SPNZ-Z\" ci=\"20000692\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000362\" se=\"0.0\" si=\"61000362\" sy=\"JP4-AA\" syi=\"30004731\"/>\r\n    <row c=\"Chimera\" ci=\"20000673\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000363\" se=\"0.0\" si=\"61000363\" sy=\"6VDT-H\" syi=\"30004608\"/>\r\n    <row c=\"FY6-NK\" ci=\"20000464\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000364\" se=\"0.0\" si=\"61000364\" sy=\"2R-KLH\" syi=\"30003182\"/>\r\n    <row c=\"WTE-CK\" ci=\"20000320\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #61000365\" se=\"0.0\" si=\"61000365\" sy=\"Y-N4EF\" syi=\"30002176\"/>\r\n    <row c=\"BB-48X\" ci=\"20000613\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000366\" se=\"0.0\" si=\"61000366\" sy=\"DN58-U\" syi=\"30004195\"/>\r\n    <row c=\"Mermaid\" ci=\"20000680\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000367\" se=\"0.0\" si=\"61000367\" sy=\"XUW-3X\" syi=\"30004655\"/>\r\n    <row c=\"SI1-CF\" ci=\"20000611\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000368\" se=\"0.0\" si=\"61000368\" sy=\"E-BYOS\" syi=\"30004181\"/>\r\n    <row c=\"E6EO-H\" ci=\"20000159\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000369\" se=\"0.0\" si=\"61000369\" sy=\"V3P-AZ\" syi=\"30001084\"/>\r\n    <row c=\"R2-BT6\" ci=\"20000457\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000370\" se=\"0.0\" si=\"61000370\" sy=\"F-UVBV\" syi=\"30003126\"/>\r\n    <row c=\"AJG-MV\" ci=\"20000461\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000371\" se=\"0.0\" si=\"61000371\" sy=\"YAP-TN\" syi=\"30003158\"/>\r\n    <row c=\"XR9-LP\" ci=\"20000174\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000372\" se=\"0.0\" si=\"61000372\" sy=\"GJ0-OJ\" syi=\"30001192\"/>\r\n    <row c=\"2747-4\" ci=\"20000168\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000373\" se=\"0.0\" si=\"61000373\" sy=\"FO9-FZ\" syi=\"30001148\"/>\r\n    <row c=\"8AO-5V\" ci=\"20000345\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000374\" se=\"0.0\" si=\"61000374\" sy=\"LXQ2-T\" syi=\"30002355\"/>\r\n    <row c=\"NJU-QV\" ci=\"20000698\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000375\" se=\"0.0\" si=\"61000375\" sy=\"I-E3TG\" syi=\"30004775\"/>\r\n    <row c=\"G2E-RJ\" ci=\"20000540\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000376\" se=\"0.0\" si=\"61000376\" sy=\"YWS0-Z\" syi=\"30003705\"/>\r\n    <row c=\"N-LY4R\" ci=\"20000119\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000377\" se=\"0.0\" si=\"61000377\" sy=\"LVL-GZ\" syi=\"30000813\"/>\r\n    <row c=\"YUT3-U\" ci=\"20000036\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000378\" se=\"0.0\" si=\"61000378\" sy=\"A8A-JN\" syi=\"30000259\"/>\r\n    <row c=\"6TT8-Z\" ci=\"20000341\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000379\" se=\"0.0\" si=\"61000379\" sy=\"GTY-FW\" syi=\"30002328\"/>\r\n    <row c=\"P-B2NE\" ci=\"20000422\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"Conquerable Station #61000380\" se=\"0.0\" si=\"61000380\" sy=\"R1O-GN\" syi=\"30002874\"/>\r\n    <row c=\"4ZXC-8\" ci=\"20000477\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000381\" se=\"0.0\" si=\"61000381\" sy=\"XKM-DE\" syi=\"30003263\"/>\r\n    <row c=\"Z-D6K5\" ci=\"20000425\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000382\" se=\"0.0\" si=\"61000382\" sy=\"K5F-Z2\" syi=\"30002900\"/>\r\n    <row c=\"4MY-AB\" ci=\"20000316\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #61000383\" se=\"0.0\" si=\"61000383\" sy=\"X-6WC7\" syi=\"30002148\"/>\r\n    <row c=\"5YHF-H\" ci=\"20000037\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000384\" se=\"0.0\" si=\"61000384\" sy=\"AZBR-2\" syi=\"30000265\"/>\r\n    <row c=\"Griffin\" ci=\"20000676\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000385\" se=\"0.0\" si=\"61000385\" sy=\"LIWW-P\" syi=\"30004630\"/>\r\n    <row c=\"4ZXC-8\" ci=\"20000477\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000386\" se=\"0.0\" si=\"61000386\" sy=\"H-MHWF\" syi=\"30003261\"/>\r\n    <row c=\"U-JTBT\" ci=\"20000182\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000387\" se=\"0.0\" si=\"61000387\" sy=\"CZK-ZQ\" syi=\"30001253\"/>\r\n    <row c=\"3D-ROC\" ci=\"20000228\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000388\" se=\"0.0\" si=\"61000388\" sy=\"K-BBYU\" syi=\"30001550\"/>\r\n    <row c=\"TPB-KG\" ci=\"20000759\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000389\" se=\"0.0\" si=\"61000389\" sy=\"0-U2M4\" syi=\"30005191\"/>\r\n    <row c=\"TJ10-O\" ci=\"20000529\" r=\"Tenal\" ri=\"10000045\" s=\"Conquerable Station #61000390\" se=\"0.0\" si=\"61000390\" sy=\"S-KSWL\" syi=\"30003629\"/>\r\n    <row c=\"29V-1R\" ci=\"20000424\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000391\" se=\"0.0\" si=\"61000391\" sy=\"FO8M-2\" syi=\"30002891\"/>\r\n    <row c=\"N-U2LX\" ci=\"20000428\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000392\" se=\"0.0\" si=\"61000392\" sy=\"N-TFXK\" syi=\"30002918\"/>\r\n    <row c=\"X-VN63\" ci=\"20000125\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000393\" se=\"0.0\" si=\"61000393\" sy=\"UMI-KK\" syi=\"30000858\"/>\r\n    <row c=\"KWCZ-A\" ci=\"20000641\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000394\" se=\"0.0\" si=\"61000394\" sy=\"Q-4DEC\" syi=\"30004389\"/>\r\n    <row c=\"4LEZ-6\" ci=\"20000750\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000395\" se=\"0.0\" si=\"61000395\" sy=\"H-29TM\" syi=\"30005123\"/>\r\n    <row c=\"IJE6-J\" ci=\"20000321\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #61000396\" se=\"0.0\" si=\"61000396\" sy=\"KCDX-7\" syi=\"30002178\"/>\r\n    <row c=\"L7-RDZ\" ci=\"20000753\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000397\" se=\"0.0\" si=\"61000397\" sy=\"4-1ECP\" syi=\"30005149\"/>\r\n    <row c=\"C-ULS4\" ci=\"20000637\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000398\" se=\"0.0\" si=\"61000398\" sy=\"CS-ZGD\" syi=\"30004357\"/>\r\n    <row c=\"E3-NLE\" ci=\"20000128\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000399\" se=\"0.0\" si=\"61000399\" sy=\"DBT-GB\" syi=\"30000877\"/>\r\n    <row c=\"WXB-RY\" ci=\"20000755\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000400\" se=\"0.0\" si=\"61000400\" sy=\"4F6-VZ\" syi=\"30005159\"/>\r\n    <row c=\"Y46-EN\" ci=\"20000317\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #61000401\" se=\"0.0\" si=\"61000401\" sy=\"B-R5RB\" syi=\"30002157\"/>\r\n    <row c=\"RDD-E6\" ci=\"20000342\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000402\" se=\"0.0\" si=\"61000402\" sy=\"B-2VXB\" syi=\"30002334\"/>\r\n    <row c=\"1P-VL2\" ci=\"20000124\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000403\" se=\"0.0\" si=\"61000403\" sy=\"FY0W-N\" syi=\"30000850\"/>\r\n    <row c=\"LLAP-1\" ci=\"20000126\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000404\" se=\"0.0\" si=\"61000404\" sy=\"C2X-M5\" syi=\"30000863\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000405\" se=\"0.0\" si=\"61000405\" sy=\"VPLL-N\" syi=\"30002948\"/>\r\n    <row c=\"N-APJ8\" ci=\"20000337\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000406\" se=\"0.0\" si=\"61000406\" sy=\"SAH-AD\" syi=\"30002298\"/>\r\n    <row c=\"U8-CWA\" ci=\"20000290\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000407\" se=\"0.0\" si=\"61000407\" sy=\"BDV3-T\" syi=\"30001976\"/>\r\n    <row c=\"0-8MWQ\" ci=\"20000042\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000408\" se=\"0.0\" si=\"61000408\" sy=\"5T-KM3\" syi=\"30000299\"/>\r\n    <row c=\"Z-D6K5\" ci=\"20000425\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000409\" se=\"0.0\" si=\"61000409\" sy=\"XCF-8N\" syi=\"30002897\"/>\r\n    <row c=\"I9B-8X\" ci=\"20000543\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000410\" se=\"0.0\" si=\"61000410\" sy=\"SI-I89\" syi=\"30003728\"/>\r\n    <row c=\"CZ-06R\" ci=\"20000468\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000411\" se=\"0.0\" si=\"61000411\" sy=\"W5-VBR\" syi=\"30003205\"/>\r\n    <row c=\"BUG6-X\" ci=\"20000031\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000412\" se=\"0.0\" si=\"61000412\" sy=\"N-HSK0\" syi=\"30000215\"/>\r\n    <row c=\"TJ10-O\" ci=\"20000529\" r=\"Tenal\" ri=\"10000045\" s=\"Conquerable Station #61000413\" se=\"0.0\" si=\"61000413\" sy=\"30-D5G\" syi=\"30003632\"/>\r\n    <row c=\"NJU-QV\" ci=\"20000698\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000414\" se=\"0.0\" si=\"61000414\" sy=\"S-6HHN\" syi=\"30004776\"/>\r\n    <row c=\"UK-MI6\" ci=\"20000038\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000415\" se=\"0.0\" si=\"61000415\" sy=\"MA-XAP\" syi=\"30000272\"/>\r\n    <row c=\"Manticore\" ci=\"20000667\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000416\" se=\"0.0\" si=\"61000416\" sy=\"9R4-EJ\" syi=\"30004569\"/>\r\n    <row c=\"0YMH-Q\" ci=\"20000115\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000417\" se=\"0.0\" si=\"61000417\" sy=\"I-1QKL\" syi=\"30000788\"/>\r\n    <row c=\"TY0-Q2\" ci=\"20000754\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000418\" se=\"0.0\" si=\"61000418\" sy=\"4F9Y-3\" syi=\"30005154\"/>\r\n    <row c=\"UWRZ-2\" ci=\"20000537\" r=\"Fade\" ri=\"10000046\" s=\"Conquerable Station #61000419\" se=\"0.0\" si=\"61000419\" sy=\"O-CNPR\" syi=\"30003683\"/>\r\n    <row c=\"G-HISF\" ci=\"20000163\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000420\" se=\"0.0\" si=\"61000420\" sy=\"6-WMKE\" syi=\"30001111\"/>\r\n    <row c=\"Q5KW-Z\" ci=\"20000638\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000421\" se=\"0.0\" si=\"61000421\" sy=\"C-LP3N\" syi=\"30004365\"/>\r\n    <row c=\"BUG6-X\" ci=\"20000031\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000422\" se=\"0.0\" si=\"61000422\" sy=\"7-UH4Z\" syi=\"30000217\"/>\r\n    <row c=\"RHG-4O\" ci=\"20000653\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000423\" se=\"0.0\" si=\"61000423\" sy=\"NLO-3Z\" syi=\"30004476\"/>\r\n    <row c=\"LWMW-6\" ci=\"20000757\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000424\" se=\"0.0\" si=\"61000424\" sy=\"W-CSFY\" syi=\"30005177\"/>\r\n    <row c=\"4QZ-2M\" ci=\"20000588\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000425\" se=\"0.0\" si=\"61000425\" sy=\"B-7DFU\" syi=\"30004030\"/>\r\n    <row c=\"4ZXC-8\" ci=\"20000477\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000426\" se=\"0.0\" si=\"61000426\" sy=\"PND-SI\" syi=\"30003262\"/>\r\n    <row c=\"KWCZ-A\" ci=\"20000641\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000427\" se=\"0.0\" si=\"61000427\" sy=\"313I-B\" syi=\"30004387\"/>\r\n    <row c=\"U-EUG7\" ci=\"20000109\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000428\" se=\"0.0\" si=\"61000428\" sy=\"8EF-58\" syi=\"30000748\"/>\r\n    <row c=\"F-RA63\" ci=\"20000583\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000429\" se=\"0.0\" si=\"61000429\" sy=\"BX2-ZX\" syi=\"30003993\"/>\r\n    <row c=\"NJU-QV\" ci=\"20000698\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000430\" se=\"0.0\" si=\"61000430\" sy=\"M2-XFE\" syi=\"30004773\"/>\r\n    <row c=\"SPNZ-Z\" ci=\"20000692\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000431\" se=\"0.0\" si=\"61000431\" sy=\"FM-JK5\" syi=\"30004732\"/>\r\n    <row c=\"Z-DO53\" ci=\"20000035\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000432\" se=\"0.0\" si=\"61000432\" sy=\"K8X-6B\" syi=\"30000244\"/>\r\n    <row c=\"Hydra\" ci=\"20000677\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000433\" se=\"0.0\" si=\"61000433\" sy=\"TEG-SD\" syi=\"30004638\"/>\r\n    <row c=\"M9-AN3\" ci=\"20000340\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000434\" se=\"0.0\" si=\"61000434\" sy=\"BNX-AS\" syi=\"30002318\"/>\r\n    <row c=\"S4GH-I\" ci=\"20000300\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000435\" se=\"0.0\" si=\"61000435\" sy=\"HPS5-C\" syi=\"30002040\"/>\r\n    <row c=\"XFLN-F\" ci=\"20000536\" r=\"Fade\" ri=\"10000046\" s=\"Conquerable Station #61000436\" se=\"0.0\" si=\"61000436\" sy=\"C8-CHY\" syi=\"30003676\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000437\" se=\"0.0\" si=\"61000437\" sy=\"3T7-M8\" syi=\"30002938\"/>\r\n    <row c=\"YDS0-Y\" ci=\"20000039\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000438\" se=\"0.0\" si=\"61000438\" sy=\"F-D49D\" syi=\"30000279\"/>\r\n    <row c=\"UL8-RD\" ci=\"20000157\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000439\" se=\"0.0\" si=\"61000439\" sy=\"VVB-QH\" syi=\"30001073\"/>\r\n    <row c=\"E-95ID\" ci=\"20000110\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000440\" se=\"0.0\" si=\"61000440\" sy=\"S0U-MO\" syi=\"30000753\"/>\r\n    <row c=\"X-FHU3\" ci=\"20000530\" r=\"Tenal\" ri=\"10000045\" s=\"Conquerable Station #61000441\" se=\"0.0\" si=\"61000441\" sy=\"WV-0R2\" syi=\"30003638\"/>\r\n    <row c=\"1D-65L\" ci=\"20000534\" r=\"Tenal\" ri=\"10000045\" s=\"Conquerable Station #61000442\" se=\"0.0\" si=\"61000442\" sy=\"SY0W-2\" syi=\"30003667\"/>\r\n    <row c=\"UBPU-9\" ci=\"20000357\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61000443\" se=\"0.0\" si=\"61000443\" sy=\"L-HV5C\" syi=\"30002434\"/>\r\n    <row c=\"Skaven\" ci=\"20000679\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000444\" se=\"0.0\" si=\"61000444\" sy=\"F-88PJ\" syi=\"30004653\"/>\r\n    <row c=\"K-QUVW\" ci=\"20000298\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000445\" se=\"0.0\" si=\"61000445\" sy=\"UC3H-Y\" syi=\"30002024\"/>\r\n    <row c=\"BUG6-X\" ci=\"20000031\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000446\" se=\"0.0\" si=\"61000446\" sy=\"05R-7A\" syi=\"30000216\"/>\r\n    <row c=\"G-HISF\" ci=\"20000163\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000447\" se=\"0.0\" si=\"61000447\" sy=\"B2J-5N\" syi=\"30001115\"/>\r\n    <row c=\"XFLN-F\" ci=\"20000536\" r=\"Fade\" ri=\"10000046\" s=\"Conquerable Station #61000448\" se=\"0.0\" si=\"61000448\" sy=\"P-33KR\" syi=\"30003680\"/>\r\n    <row c=\"KWCZ-A\" ci=\"20000641\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000449\" se=\"0.0\" si=\"61000449\" sy=\"J9-5MQ\" syi=\"30004385\"/>\r\n    <row c=\"RJ-1R7\" ci=\"20000365\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61000450\" se=\"0.0\" si=\"61000450\" sy=\"LR-2XT\" syi=\"30002493\"/>\r\n    <row c=\"I89-EP\" ci=\"20000034\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000451\" se=\"0.0\" si=\"61000451\" sy=\"4GYV-Q\" syi=\"30000239\"/>\r\n    <row c=\"Q5KW-Z\" ci=\"20000638\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000452\" se=\"0.0\" si=\"61000452\" sy=\"9F-7PZ\" syi=\"30004366\"/>\r\n    <row c=\"BUG6-X\" ci=\"20000031\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000453\" se=\"0.0\" si=\"61000453\" sy=\"FS-RFL\" syi=\"30000219\"/>\r\n    <row c=\"LY-FY6\" ci=\"20000294\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000454\" se=\"0.0\" si=\"61000454\" sy=\"Q-5211\" syi=\"30002001\"/>\r\n    <row c=\"J8-G8K\" ci=\"20000723\" r=\"Period Basis\" ri=\"10000063\" s=\"Conquerable Station #61000455\" se=\"0.0\" si=\"61000455\" sy=\"VQE-CN\" syi=\"30004943\"/>\r\n    <row c=\"UWRZ-2\" ci=\"20000537\" r=\"Fade\" ri=\"10000046\" s=\"Conquerable Station #61000456\" se=\"0.0\" si=\"61000456\" sy=\"K4YZ-Y\" syi=\"30003687\"/>\r\n    <row c=\"U-EUG7\" ci=\"20000109\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000457\" se=\"0.0\" si=\"61000457\" sy=\"O-7LAI\" syi=\"30000744\"/>\r\n    <row c=\"U29-0S\" ci=\"20000030\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000458\" se=\"0.0\" si=\"61000458\" sy=\"LZ-6SU\" syi=\"30000208\"/>\r\n    <row c=\"U8-CWA\" ci=\"20000290\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000459\" se=\"0.0\" si=\"61000459\" sy=\"12YA-2\" syi=\"30001975\"/>\r\n    <row c=\"Unicorn\" ci=\"20000670\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000460\" se=\"0.0\" si=\"61000460\" sy=\"B17O-R\" syi=\"30004590\"/>\r\n    <row c=\"4ZXC-8\" ci=\"20000477\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000461\" se=\"0.0\" si=\"61000461\" sy=\"QYT-X8\" syi=\"30003266\"/>\r\n    <row c=\"Assilot\" ci=\"20000594\" r=\"Cloud Ring\" ri=\"10000051\" s=\"Conquerable Station #61000462\" se=\"0.0\" si=\"61000462\" sy=\"00TY-J\" syi=\"30004068\"/>\r\n    <row c=\"W-XBGF\" ci=\"20000131\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000463\" se=\"0.0\" si=\"61000463\" sy=\"2CG-5V\" syi=\"30000898\"/>\r\n    <row c=\"ZYL-FT\" ci=\"20000360\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61000464\" se=\"0.0\" si=\"61000464\" sy=\"AP9-LV\" syi=\"30002453\"/>\r\n    <row c=\"QA-P7J\" ci=\"20000113\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000465\" se=\"0.0\" si=\"61000465\" sy=\"88A-RA\" syi=\"30000770\"/>\r\n    <row c=\"J33-JR\" ci=\"20000260\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000466\" se=\"0.0\" si=\"61000466\" sy=\"6-GRN7\" syi=\"30001759\"/>\r\n    <row c=\"0A-73B\" ci=\"20000301\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000467\" se=\"0.0\" si=\"61000467\" sy=\"KU5R-W\" syi=\"30002042\"/>\r\n    <row c=\"Balenne\" ci=\"20000591\" r=\"Cloud Ring\" ri=\"10000051\" s=\"Conquerable Station #61000468\" se=\"0.0\" si=\"61000468\" sy=\"TN-T7T\" syi=\"30004047\"/>\r\n    <row c=\"5P4-QA\" ci=\"20000068\" r=\"Detorid\" ri=\"10000005\" s=\"Conquerable Station #61000469\" se=\"0.0\" si=\"61000469\" sy=\"XA5-TY\" syi=\"30000470\"/>\r\n    <row c=\"BXT7-V\" ci=\"20000752\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000470\" se=\"0.0\" si=\"61000470\" sy=\"QHY-RU\" syi=\"30005144\"/>\r\n    <row c=\"E-312G\" ci=\"20000635\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000471\" se=\"0.0\" si=\"61000471\" sy=\"YG-82V\" syi=\"30004350\"/>\r\n    <row c=\"OC-TTA\" ci=\"20000226\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000472\" se=\"0.0\" si=\"61000472\" sy=\"A-J6SN\" syi=\"30001537\"/>\r\n    <row c=\"N-39FI\" ci=\"20000722\" r=\"Period Basis\" ri=\"10000063\" s=\"Conquerable Station #61000473\" se=\"0.0\" si=\"61000473\" sy=\"VYO-68\" syi=\"30004936\"/>\r\n    <row c=\"ZYL-FT\" ci=\"20000360\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61000474\" se=\"0.0\" si=\"61000474\" sy=\"2H-TSE\" syi=\"30002455\"/>\r\n    <row c=\"R-CL2W\" ci=\"20000123\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000475\" se=\"0.0\" si=\"61000475\" sy=\"7EX-14\" syi=\"30000840\"/>\r\n    <row c=\"KR-XF4\" ci=\"20000364\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61000476\" se=\"0.0\" si=\"61000476\" sy=\"D-I9HJ\" syi=\"30002481\"/>\r\n    <row c=\"Tinnimerci\" ci=\"20000592\" r=\"Cloud Ring\" ri=\"10000051\" s=\"Conquerable Station #61000477\" se=\"0.0\" si=\"61000477\" sy=\"YI-8ZM\" syi=\"30004051\"/>\r\n    <row c=\"RDD-E6\" ci=\"20000342\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000478\" se=\"0.0\" si=\"61000478\" sy=\"IRD-HU\" syi=\"30002333\"/>\r\n    <row c=\"I89-EP\" ci=\"20000034\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000479\" se=\"0.0\" si=\"61000479\" sy=\"WBR5-R\" syi=\"30000238\"/>\r\n    <row c=\"A3-T8B\" ci=\"20000040\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000480\" se=\"0.0\" si=\"61000480\" sy=\"S6QX-N\" syi=\"30000284\"/>\r\n    <row c=\"S4GH-I\" ci=\"20000300\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000481\" se=\"0.0\" si=\"61000481\" sy=\"RQH-MY\" syi=\"30002039\"/>\r\n    <row c=\"UR-HG4\" ci=\"20000114\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000482\" se=\"0.0\" si=\"61000482\" sy=\"SHBF-V\" syi=\"30000779\"/>\r\n    <row c=\"E-312G\" ci=\"20000635\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000483\" se=\"0.0\" si=\"61000483\" sy=\"5LJ-MD\" syi=\"30004345\"/>\r\n    <row c=\"9KX-M0\" ci=\"20000045\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000484\" se=\"0.0\" si=\"61000484\" sy=\"A3-RQ3\" syi=\"30000317\"/>\r\n    <row c=\"X5O9-E\" ci=\"20000259\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000485\" se=\"0.0\" si=\"61000485\" sy=\"I-HRX3\" syi=\"30001752\"/>\r\n    <row c=\"E-312G\" ci=\"20000635\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000486\" se=\"0.0\" si=\"61000486\" sy=\"UB-UQZ\" syi=\"30004349\"/>\r\n    <row c=\"760-9C\" ci=\"20000086\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61000487\" se=\"0.0\" si=\"61000487\" sy=\"GRHS-B\" syi=\"30000593\"/>\r\n    <row c=\"YDS0-Y\" ci=\"20000039\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000488\" se=\"0.0\" si=\"61000488\" sy=\"C-DHON\" syi=\"30000278\"/>\r\n    <row c=\"X7-FTR\" ci=\"20000749\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000489\" se=\"0.0\" si=\"61000489\" sy=\"PE-SAM\" syi=\"30005118\"/>\r\n    <row c=\"Z-DO53\" ci=\"20000035\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000490\" se=\"0.0\" si=\"61000490\" sy=\"KRUN-N\" syi=\"30000246\"/>\r\n    <row c=\"Yrton\" ci=\"20000590\" r=\"Cloud Ring\" ri=\"10000051\" s=\"Conquerable Station #61000491\" se=\"0.0\" si=\"61000491\" sy=\"B-DBYQ\" syi=\"30004040\"/>\r\n    <row c=\"0-8MWQ\" ci=\"20000042\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000492\" se=\"0.0\" si=\"61000492\" sy=\"LS9B-9\" syi=\"30000300\"/>\r\n    <row c=\"O5PO-O\" ci=\"20000746\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000493\" se=\"0.0\" si=\"61000493\" sy=\"V-3K7C\" syi=\"30005097\"/>\r\n    <row c=\"7-ZDOK\" ci=\"20000265\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000494\" se=\"0.0\" si=\"61000494\" sy=\"KGCF-5\" syi=\"30001790\"/>\r\n    <row c=\"D61-WV\" ci=\"20000475\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000495\" se=\"0.0\" si=\"61000495\" sy=\"XM-RMD\" syi=\"30003252\"/>\r\n    <row c=\"VT-LHB\" ci=\"20000751\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000496\" se=\"0.0\" si=\"61000496\" sy=\"M5NO-B\" syi=\"30005134\"/>\r\n    <row c=\"MRC-29\" ci=\"20000095\" r=\"Cache\" ri=\"10000007\" s=\"Conquerable Station #61000497\" se=\"0.0\" si=\"61000497\" sy=\"NG-M8K\" syi=\"30000650\"/>\r\n    <row c=\"Y-LRWI\" ci=\"20000716\" r=\"Omist\" ri=\"10000062\" s=\"Conquerable Station #61000498\" se=\"0.0\" si=\"61000498\" sy=\"LQ-AHE\" syi=\"30004896\"/>\r\n    <row c=\"P-FL48\" ci=\"20000232\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000499\" se=\"0.0\" si=\"61000499\" sy=\"4DH-ST\" syi=\"30001578\"/>\r\n    <row c=\"YDS0-Y\" ci=\"20000039\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000500\" se=\"0.0\" si=\"61000500\" sy=\"XSQ-TF\" syi=\"30000275\"/>\r\n    <row c=\"Prelle\" ci=\"20000593\" r=\"Cloud Ring\" ri=\"10000051\" s=\"Conquerable Station #61000501\" se=\"0.0\" si=\"61000501\" sy=\"MJYW-3\" syi=\"30004064\"/>\r\n    <row c=\"K-QUVW\" ci=\"20000298\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000502\" se=\"0.0\" si=\"61000502\" sy=\"6GWE-A\" syi=\"30002025\"/>\r\n    <row c=\"A3-T8B\" ci=\"20000040\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000503\" se=\"0.0\" si=\"61000503\" sy=\"7-PO3P\" syi=\"30000287\"/>\r\n    <row c=\"HOV-VI\" ci=\"20000075\" r=\"Detorid\" ri=\"10000005\" s=\"Conquerable Station #61000504\" se=\"0.0\" si=\"61000504\" sy=\"U0W-DR\" syi=\"30000514\"/>\r\n    <row c=\"J33-JR\" ci=\"20000260\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000505\" se=\"0.0\" si=\"61000505\" sy=\"TFPT-U\" syi=\"30001760\"/>\r\n    <row c=\"TL-FDN\" ci=\"20000122\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000506\" se=\"0.0\" si=\"61000506\" sy=\"O-9G5Y\" syi=\"30000831\"/>\r\n    <row c=\"YCM-AI\" ci=\"20000106\" r=\"Scalding Pass\" ri=\"10000008\" s=\"Conquerable Station #61000507\" se=\"0.0\" si=\"61000507\" sy=\"HJ-BCH\" syi=\"30000721\"/>\r\n    <row c=\"YDS0-Y\" ci=\"20000039\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000508\" se=\"0.0\" si=\"61000508\" sy=\"IR-DYY\" syi=\"30000277\"/>\r\n    <row c=\"AJG-MV\" ci=\"20000461\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000509\" se=\"0.0\" si=\"61000509\" sy=\"PE-H02\" syi=\"30003159\"/>\r\n    <row c=\"Wyvern\" ci=\"20000666\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000510\" se=\"0.0\" si=\"61000510\" sy=\"BYXF-Q\" syi=\"30004562\"/>\r\n    <row c=\"6GU-AT\" ci=\"20000266\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000511\" se=\"0.0\" si=\"61000511\" sy=\"XJ-AG7\" syi=\"30001798\"/>\r\n    <row c=\"9KX-M0\" ci=\"20000045\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000512\" se=\"0.0\" si=\"61000512\" sy=\"WMBZ-U\" syi=\"30000315\"/>\r\n    <row c=\"DILJ-7\" ci=\"20000041\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000513\" se=\"0.0\" si=\"61000513\" sy=\"R-P7KL\" syi=\"30000291\"/>\r\n    <row c=\"S4GH-I\" ci=\"20000300\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000514\" se=\"0.0\" si=\"61000514\" sy=\"MQ-NPY\" syi=\"30002035\"/>\r\n    <row c=\"0EA3-8\" ci=\"20000116\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000515\" se=\"0.0\" si=\"61000515\" sy=\"A24L-V\" syi=\"30000794\"/>\r\n    <row c=\"NZU8-G\" ci=\"20000076\" r=\"Detorid\" ri=\"10000005\" s=\"Conquerable Station #61000516\" se=\"0.0\" si=\"61000516\" sy=\"0IF-26\" syi=\"30000522\"/>\r\n    <row c=\"EK-NQ2\" ci=\"20000383\" r=\"Impass\" ri=\"10000031\" s=\"Conquerable Station #61000517\" se=\"0.0\" si=\"61000517\" sy=\"PZMA-E\" syi=\"30002615\"/>\r\n    <row c=\"RHG-4O\" ci=\"20000653\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000518\" se=\"0.0\" si=\"61000518\" sy=\"R4K-8L\" syi=\"30004473\"/>\r\n    <row c=\"OSJ7-I\" ci=\"20000032\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000519\" se=\"0.0\" si=\"61000519\" sy=\"7-K5EL\" syi=\"30000224\"/>\r\n    <row c=\"TCC-ZV\" ci=\"20000683\" r=\"Paragon Soul\" ri=\"10000059\" s=\"Conquerable Station #61000520\" se=\"0.0\" si=\"61000520\" sy=\"5AQ-5H\" syi=\"30004675\"/>\r\n    <row c=\"VW7-YN\" ci=\"20000426\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000521\" se=\"0.0\" si=\"61000521\" sy=\"CCP-US\" syi=\"30002906\"/>\r\n    <row c=\"VT-LHB\" ci=\"20000751\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000522\" se=\"0.0\" si=\"61000522\" sy=\"9WVY-F\" syi=\"30005137\"/>\r\n    <row c=\"NZU8-G\" ci=\"20000076\" r=\"Detorid\" ri=\"10000005\" s=\"Conquerable Station #61000523\" se=\"0.0\" si=\"61000523\" sy=\"L-L7PE\" syi=\"30000528\"/>\r\n    <row c=\"Skaven\" ci=\"20000679\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000524\" se=\"0.0\" si=\"61000524\" sy=\"O-PNSN\" syi=\"30004649\"/>\r\n    <row c=\"YDS0-Y\" ci=\"20000039\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000525\" se=\"0.0\" si=\"61000525\" sy=\"Q-EHMJ\" syi=\"30000274\"/>\r\n    <row c=\"7UNX-J\" ci=\"20000161\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000526\" se=\"0.0\" si=\"61000526\" sy=\"O7-RFZ\" syi=\"30001099\"/>\r\n    <row c=\"E-312G\" ci=\"20000635\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000527\" se=\"0.0\" si=\"61000527\" sy=\"KV-8SN\" syi=\"30004348\"/>\r\n    <row c=\"2FYX-H\" ci=\"20000267\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000528\" se=\"0.0\" si=\"61000528\" sy=\"SN-Q1T\" syi=\"30001808\"/>\r\n    <row c=\"BI-NFW\" ci=\"20000639\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000529\" se=\"0.0\" si=\"61000529\" sy=\"BWI1-9\" syi=\"30004371\"/>\r\n    <row c=\"A3-T8B\" ci=\"20000040\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000530\" se=\"0.0\" si=\"61000530\" sy=\"E-SCTX\" syi=\"30000283\"/>\r\n    <row c=\"Skaven\" ci=\"20000679\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000531\" se=\"0.0\" si=\"61000531\" sy=\"1-5GBW\" syi=\"30004650\"/>\r\n    <row c=\"DILJ-7\" ci=\"20000041\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000532\" se=\"0.0\" si=\"61000532\" sy=\"2DWM-2\" syi=\"30000292\"/>\r\n    <row c=\"U29-0S\" ci=\"20000030\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000533\" se=\"0.0\" si=\"61000533\" sy=\"G-LOIT\" syi=\"30000213\"/>\r\n    <row c=\"DILJ-7\" ci=\"20000041\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000534\" se=\"0.0\" si=\"61000534\" sy=\"1N-FJ8\" syi=\"30000294\"/>\r\n    <row c=\"78-6RI\" ci=\"20000415\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"Conquerable Station #61000535\" se=\"0.0\" si=\"61000535\" sy=\"6V-D0E\" syi=\"30002832\"/>\r\n    <row c=\"U-EUG7\" ci=\"20000109\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000536\" se=\"0.0\" si=\"61000536\" sy=\"4DS-OI\" syi=\"30000749\"/>\r\n    <row c=\"88G-M4\" ci=\"20000046\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000537\" se=\"0.0\" si=\"61000537\" sy=\"VORM-W\" syi=\"30000322\"/>\r\n    <row c=\"IV-LWJ\" ci=\"20000108\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000538\" se=\"0.0\" si=\"61000538\" sy=\"KD-KPR\" syi=\"30000737\"/>\r\n    <row c=\"OWT3-6\" ci=\"20000233\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000539\" se=\"0.0\" si=\"61000539\" sy=\"DVN6-0\" syi=\"30001581\"/>\r\n    <row c=\"Prelle\" ci=\"20000593\" r=\"Cloud Ring\" ri=\"10000051\" s=\"Conquerable Station #61000540\" se=\"0.0\" si=\"61000540\" sy=\"Z-Y7R7\" syi=\"30004063\"/>\r\n    <row c=\"HNZF-Z\" ci=\"20000610\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000541\" se=\"0.0\" si=\"61000541\" sy=\"X-41DA\" syi=\"30004173\"/>\r\n    <row c=\"E3-NLE\" ci=\"20000128\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000542\" se=\"0.0\" si=\"61000542\" sy=\"L-1HKR\" syi=\"30000874\"/>\r\n    <row c=\"Tinnimerci\" ci=\"20000592\" r=\"Cloud Ring\" ri=\"10000051\" s=\"Conquerable Station #61000543\" se=\"0.0\" si=\"61000543\" sy=\"W-4NUU\" syi=\"30004055\"/>\r\n    <row c=\"PGPJ-8\" ci=\"20000338\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000544\" se=\"0.0\" si=\"61000544\" sy=\"GN-TNT\" syi=\"30002306\"/>\r\n    <row c=\"FD-7Y4\" ci=\"20000121\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000545\" se=\"0.0\" si=\"61000545\" sy=\"W-MF6J\" syi=\"30000830\"/>\r\n    <row c=\"O6W-QE\" ci=\"20000384\" r=\"Impass\" ri=\"10000031\" s=\"Conquerable Station #61000546\" se=\"0.0\" si=\"61000546\" sy=\"4RS-L1\" syi=\"30002625\"/>\r\n    <row c=\"D4J-PP\" ci=\"20000474\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000547\" se=\"0.0\" si=\"61000547\" sy=\"P-ZWKH\" syi=\"30003248\"/>\r\n    <row c=\"N5V-Y0\" ci=\"20000118\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000548\" se=\"0.0\" si=\"61000548\" sy=\"KS-1TS\" syi=\"30000807\"/>\r\n    <row c=\"Mermaid\" ci=\"20000680\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000549\" se=\"0.0\" si=\"61000549\" sy=\"ZUE-NS\" syi=\"30004658\"/>\r\n    <row c=\"9NP-KR\" ci=\"20000580\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000550\" se=\"0.0\" si=\"61000550\" sy=\"W-IX39\" syi=\"30003968\"/>\r\n    <row c=\"Assilot\" ci=\"20000594\" r=\"Cloud Ring\" ri=\"10000051\" s=\"Conquerable Station #61000551\" se=\"0.0\" si=\"61000551\" sy=\"5S-KNL\" syi=\"30004067\"/>\r\n    <row c=\"K-JO26\" ci=\"20000582\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000552\" se=\"0.0\" si=\"61000552\" sy=\"UVHO-F\" syi=\"30003988\"/>\r\n    <row c=\"Mermaid\" ci=\"20000680\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000553\" se=\"0.0\" si=\"61000553\" sy=\"PB-0C1\" syi=\"30004657\"/>\r\n    <row c=\"9D1V-O\" ci=\"20000463\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000554\" se=\"0.0\" si=\"61000554\" sy=\"LG-RO2\" syi=\"30003172\"/>\r\n    <row c=\"LY-FY6\" ci=\"20000294\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000555\" se=\"0.0\" si=\"61000555\" sy=\"CR-AQH\" syi=\"30002003\"/>\r\n    <row c=\"SI1-CF\" ci=\"20000611\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000556\" se=\"0.0\" si=\"61000556\" sy=\"A-0IIQ\" syi=\"30004179\"/>\r\n    <row c=\"AGI1-F\" ci=\"20000261\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000557\" se=\"0.0\" si=\"61000557\" sy=\"K4UV-G\" syi=\"30001762\"/>\r\n    <row c=\"Basilisk\" ci=\"20000681\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000558\" se=\"0.0\" si=\"61000558\" sy=\"LBGI-2\" syi=\"30004663\"/>\r\n    <row c=\"B-D245\" ci=\"20000258\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000559\" se=\"0.0\" si=\"61000559\" sy=\"JUE-DX\" syi=\"30001743\"/>\r\n    <row c=\"Griffin\" ci=\"20000676\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000560\" se=\"0.0\" si=\"61000560\" sy=\"38IA-E\" syi=\"30004632\"/>\r\n    <row c=\"SI1-CF\" ci=\"20000611\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000561\" se=\"0.0\" si=\"61000561\" sy=\"I-CMZA\" syi=\"30004177\"/>\r\n    <row c=\"HNZF-Z\" ci=\"20000610\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000562\" se=\"0.0\" si=\"61000562\" sy=\"5E-EZC\" syi=\"30004168\"/>\r\n    <row c=\"1M4-FN\" ci=\"20000156\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000563\" se=\"0.0\" si=\"61000563\" sy=\"6UT-1K\" syi=\"30001067\"/>\r\n    <row c=\"5YHF-H\" ci=\"20000037\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000564\" se=\"0.0\" si=\"61000564\" sy=\"T-GCGL\" syi=\"30000261\"/>\r\n    <row c=\"P-FL48\" ci=\"20000232\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000565\" se=\"0.0\" si=\"61000565\" sy=\"OSW-0P\" syi=\"30001579\"/>\r\n    <row c=\"Q5KW-Z\" ci=\"20000638\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000566\" se=\"0.0\" si=\"61000566\" sy=\"MA-VDX\" syi=\"30004369\"/>\r\n    <row c=\"RDD-E6\" ci=\"20000342\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000567\" se=\"0.0\" si=\"61000567\" sy=\"FIZU-X\" syi=\"30002335\"/>\r\n    <row c=\"U7-GIV\" ci=\"20000719\" r=\"Omist\" ri=\"10000062\" s=\"Conquerable Station #61000568\" se=\"0.0\" si=\"61000568\" sy=\"0DD-MH\" syi=\"30004917\"/>\r\n    <row c=\"BRP2-K\" ci=\"20000183\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000569\" se=\"0.0\" si=\"61000569\" sy=\"CNC-4V\" syi=\"30001254\"/>\r\n    <row c=\"Pegasus\" ci=\"20000665\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000570\" se=\"0.0\" si=\"61000570\" sy=\"9-VO0Q\" syi=\"30004557\"/>\r\n    <row c=\"P-B2NE\" ci=\"20000422\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"Conquerable Station #61000571\" se=\"0.0\" si=\"61000571\" sy=\"GQ-7SP\" syi=\"30002875\"/>\r\n    <row c=\"3RU-10\" ci=\"20000470\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000572\" se=\"0.0\" si=\"61000572\" sy=\"WVMS-X\" syi=\"30003216\"/>\r\n    <row c=\"Sphinx\" ci=\"20000668\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000573\" se=\"0.0\" si=\"61000573\" sy=\"APM-6K\" syi=\"30004576\"/>\r\n    <row c=\"I-WRVM\" ci=\"20000614\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000574\" se=\"0.0\" si=\"61000574\" sy=\"FV1-RQ\" syi=\"30004197\"/>\r\n    <row c=\"9BGY-6\" ci=\"20000748\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000575\" se=\"0.0\" si=\"61000575\" sy=\"6-8QLA\" syi=\"30005114\"/>\r\n    <row c=\"N-LY4R\" ci=\"20000119\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000576\" se=\"0.0\" si=\"61000576\" sy=\"X0-6LH\" syi=\"30000808\"/>\r\n    <row c=\"SI1-CF\" ci=\"20000611\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000577\" se=\"0.0\" si=\"61000577\" sy=\"H23-B5\" syi=\"30004178\"/>\r\n    <row c=\"CZ-06R\" ci=\"20000468\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000578\" se=\"0.0\" si=\"61000578\" sy=\"J-D5U7\" syi=\"30003206\"/>\r\n    <row c=\"Satyr\" ci=\"20000671\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000579\" se=\"0.0\" si=\"61000579\" sy=\"CHA2-Q\" syi=\"30004601\"/>\r\n    <row c=\"XPG-HE\" ci=\"20000421\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"Conquerable Station #61000580\" se=\"0.0\" si=\"61000580\" sy=\"HVGR-R\" syi=\"30002871\"/>\r\n    <row c=\"7UNX-J\" ci=\"20000161\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000581\" se=\"0.0\" si=\"61000581\" sy=\"SH-YZY\" syi=\"30001098\"/>\r\n    <row c=\"Mermaid\" ci=\"20000680\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000582\" se=\"0.0\" si=\"61000582\" sy=\"ZTS-4D\" syi=\"30004660\"/>\r\n    <row c=\"9D1V-O\" ci=\"20000463\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000583\" se=\"0.0\" si=\"61000583\" sy=\"29YH-V\" syi=\"30003171\"/>\r\n    <row c=\"H7Q-DG\" ci=\"20000347\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000584\" se=\"0.0\" si=\"61000584\" sy=\"C-V6DQ\" syi=\"30002367\"/>\r\n    <row c=\"BXT7-V\" ci=\"20000752\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000585\" se=\"0.0\" si=\"61000585\" sy=\"SR-10Z\" syi=\"30005141\"/>\r\n    <row c=\"MW49-U\" ci=\"20000166\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000586\" se=\"0.0\" si=\"61000586\" sy=\"QSCO-D\" syi=\"30001137\"/>\r\n    <row c=\"O9X-CV\" ci=\"20000473\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000587\" se=\"0.0\" si=\"61000587\" sy=\"KED-2O\" syi=\"30003239\"/>\r\n    <row c=\"3-PC31\" ci=\"20000655\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000588\" se=\"0.0\" si=\"61000588\" sy=\"OBK-K8\" syi=\"30004487\"/>\r\n    <row c=\"MY-HQD\" ci=\"20000235\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000589\" se=\"0.0\" si=\"61000589\" sy=\"QRH-BF\" syi=\"30001596\"/>\r\n    <row c=\"XHL-TZ\" ci=\"20000615\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000590\" se=\"0.0\" si=\"61000590\" sy=\"HXK-J6\" syi=\"30004205\"/>\r\n    <row c=\"9BGY-6\" ci=\"20000748\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000591\" se=\"0.0\" si=\"61000591\" sy=\"G-GRSZ\" syi=\"30005113\"/>\r\n    <row c=\"1P-VL2\" ci=\"20000124\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000592\" se=\"0.0\" si=\"61000592\" sy=\"V0DF-2\" syi=\"30000849\"/>\r\n    <row c=\"5J-SSP\" ci=\"20000379\" r=\"Impass\" ri=\"10000031\" s=\"Conquerable Station #61000593\" se=\"0.0\" si=\"61000593\" sy=\"4OIV-X\" syi=\"30002585\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000594\" se=\"0.0\" si=\"61000594\" sy=\"5S-KXA\" syi=\"30002950\"/>\r\n    <row c=\"MW49-U\" ci=\"20000166\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000595\" se=\"0.0\" si=\"61000595\" sy=\"RXTY-4\" syi=\"30001138\"/>\r\n    <row c=\"D-GU3R\" ci=\"20000336\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000596\" se=\"0.0\" si=\"61000596\" sy=\"LPVL-5\" syi=\"30002294\"/>\r\n    <row c=\"SI1-CF\" ci=\"20000611\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000597\" se=\"0.0\" si=\"61000597\" sy=\"CBY8-J\" syi=\"30004180\"/>\r\n    <row c=\"DMXN-3\" ci=\"20000033\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000598\" se=\"0.0\" si=\"61000598\" sy=\"MY-T2P\" syi=\"30000232\"/>\r\n    <row c=\"4R-HUN\" ci=\"20000154\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000599\" se=\"0.0\" si=\"61000599\" sy=\"JA-G0T\" syi=\"30001055\"/>\r\n    <row c=\"4BZ-R3\" ci=\"20000541\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000600\" se=\"0.0\" si=\"61000600\" sy=\"T-RPFU\" syi=\"30003715\"/>\r\n    <row c=\"RDD-E6\" ci=\"20000342\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000601\" se=\"0.0\" si=\"61000601\" sy=\"JAWX-R\" syi=\"30002336\"/>\r\n    <row c=\"WXB-RY\" ci=\"20000755\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000602\" se=\"0.0\" si=\"61000602\" sy=\"3LL-O0\" syi=\"30005166\"/>\r\n    <row c=\"DJ-XCW\" ci=\"20000080\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61000603\" se=\"0.0\" si=\"61000603\" sy=\"U104-3\" syi=\"30000555\"/>\r\n    <row c=\"NOB-HD\" ci=\"20000268\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000604\" se=\"0.0\" si=\"61000604\" sy=\"J-0KB3\" syi=\"30001812\"/>\r\n    <row c=\"4-0VL9\" ci=\"20000229\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000605\" se=\"0.0\" si=\"61000605\" sy=\"MOSA-I\" syi=\"30001554\"/>\r\n    <row c=\"3RU-10\" ci=\"20000470\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000606\" se=\"0.0\" si=\"61000606\" sy=\"R-ZESX\" syi=\"30003218\"/>\r\n    <row c=\"TY0-Q2\" ci=\"20000754\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000607\" se=\"0.0\" si=\"61000607\" sy=\"0XN-SK\" syi=\"30005157\"/>\r\n    <row c=\"LWMW-6\" ci=\"20000757\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000608\" se=\"0.0\" si=\"61000608\" sy=\"XY-ZCI\" syi=\"30005175\"/>\r\n    <row c=\"FQ-COP\" ci=\"20000094\" r=\"Cache\" ri=\"10000007\" s=\"Conquerable Station #61000609\" se=\"0.0\" si=\"61000609\" sy=\"U93O-A\" syi=\"30000644\"/>\r\n    <row c=\"304-QS\" ci=\"20000632\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000610\" se=\"0.0\" si=\"61000610\" sy=\"B-GC1T\" syi=\"30004328\"/>\r\n    <row c=\"MDM8-J\" ci=\"20000289\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000611\" se=\"0.0\" si=\"61000611\" sy=\"O-BY0Y\" syi=\"30001964\"/>\r\n    <row c=\"3NA-Z1\" ci=\"20000417\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"Conquerable Station #61000612\" se=\"0.0\" si=\"61000612\" sy=\"L-TLFU\" syi=\"30002842\"/>\r\n    <row c=\"7-ZDOK\" ci=\"20000265\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000613\" se=\"0.0\" si=\"61000613\" sy=\"XME-SW\" syi=\"30001792\"/>\r\n    <row c=\"J-78ZG\" ci=\"20000346\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000614\" se=\"0.0\" si=\"61000614\" sy=\"3IK-7O\" syi=\"30002357\"/>\r\n    <row c=\"KPU3-3\" ci=\"20000270\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000615\" se=\"0.0\" si=\"61000615\" sy=\"RQNF-9\" syi=\"30001830\"/>\r\n    <row c=\"WE-WLQ\" ci=\"20000465\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000616\" se=\"0.0\" si=\"61000616\" sy=\"MZLW-9\" syi=\"30003185\"/>\r\n    <row c=\"IV-LWJ\" ci=\"20000108\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000617\" se=\"0.0\" si=\"61000617\" sy=\"5M2-KP\" syi=\"30000741\"/>\r\n    <row c=\"6TT8-Z\" ci=\"20000341\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000618\" se=\"0.0\" si=\"61000618\" sy=\"RV-GA8\" syi=\"30002326\"/>\r\n    <row c=\"TY0-Q2\" ci=\"20000754\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000619\" se=\"0.0\" si=\"61000619\" sy=\"U-3FKL\" syi=\"30005156\"/>\r\n    <row c=\"VT-LHB\" ci=\"20000751\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000620\" se=\"0.0\" si=\"61000620\" sy=\"7M4-4C\" syi=\"30005138\"/>\r\n    <row c=\"XFLN-F\" ci=\"20000536\" r=\"Fade\" ri=\"10000046\" s=\"Conquerable Station #61000621\" se=\"0.0\" si=\"61000621\" sy=\"DW-T2I\" syi=\"30003682\"/>\r\n    <row c=\"W-3E44\" ci=\"20000714\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #61000622\" se=\"0.0\" si=\"61000622\" sy=\"M-RPN3\" syi=\"30004881\"/>\r\n    <row c=\"GJH-1C\" ci=\"20000063\" r=\"Detorid\" ri=\"10000005\" s=\"Conquerable Station #61000623\" se=\"0.0\" si=\"61000623\" sy=\"PQRE-W\" syi=\"30000438\"/>\r\n    <row c=\"2Q-8WA\" ci=\"20000423\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"Conquerable Station #61000624\" se=\"0.0\" si=\"61000624\" sy=\"O5-YNW\" syi=\"30002884\"/>\r\n    <row c=\"NOB-HD\" ci=\"20000268\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000625\" se=\"0.0\" si=\"61000625\" sy=\"UNV-3J\" syi=\"30001816\"/>\r\n    <row c=\"O9X-CV\" ci=\"20000473\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000626\" se=\"0.0\" si=\"61000626\" sy=\"IAMJ-Q\" syi=\"30003241\"/>\r\n    <row c=\"Z-D6K5\" ci=\"20000425\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000627\" se=\"0.0\" si=\"61000627\" sy=\"0P-F3K\" syi=\"30002899\"/>\r\n    <row c=\"C9XB-L\" ci=\"20000269\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000628\" se=\"0.0\" si=\"61000628\" sy=\"P-8PDJ\" syi=\"30001823\"/>\r\n    <row c=\"N4TD-6\" ci=\"20000618\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000629\" se=\"0.0\" si=\"61000629\" sy=\"1GT-MA\" syi=\"30004226\"/>\r\n    <row c=\"CL-QB2\" ci=\"20000705\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #61000630\" se=\"0.0\" si=\"61000630\" sy=\"ZMV9-A\" syi=\"30004820\"/>\r\n    <row c=\"LWMW-6\" ci=\"20000757\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000631\" se=\"0.0\" si=\"61000631\" sy=\"PFV-ZH\" syi=\"30005178\"/>\r\n    <row c=\"X5O9-E\" ci=\"20000259\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000632\" se=\"0.0\" si=\"61000632\" sy=\"O-O2GN\" syi=\"30001751\"/>\r\n    <row c=\"8UD2-J\" ci=\"20000420\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"Conquerable Station #61000633\" se=\"0.0\" si=\"61000633\" sy=\"LEM-I1\" syi=\"30002865\"/>\r\n    <row c=\"ICH-B6\" ci=\"20000343\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000634\" se=\"0.0\" si=\"61000634\" sy=\"9QS5-C\" syi=\"30002339\"/>\r\n    <row c=\"C9XB-L\" ci=\"20000269\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000635\" se=\"0.0\" si=\"61000635\" sy=\"VE-W7O\" syi=\"30001824\"/>\r\n    <row c=\"S-Q02B\" ci=\"20000476\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000636\" se=\"0.0\" si=\"61000636\" sy=\"1-BK1Q\" syi=\"30003258\"/>\r\n    <row c=\"U-HSM3\" ci=\"20000419\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"Conquerable Station #61000637\" se=\"0.0\" si=\"61000637\" sy=\"B3ZU-H\" syi=\"30002860\"/>\r\n    <row c=\"H7Q-DG\" ci=\"20000347\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000638\" se=\"0.0\" si=\"61000638\" sy=\"EX-GBT\" syi=\"30002369\"/>\r\n    <row c=\"WTE-CK\" ci=\"20000320\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #61000639\" se=\"0.0\" si=\"61000639\" sy=\"OP9L-F\" syi=\"30002173\"/>\r\n    <row c=\"E3-NLE\" ci=\"20000128\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000640\" se=\"0.0\" si=\"61000640\" sy=\"PBD-0G\" syi=\"30000873\"/>\r\n    <row c=\"9D1V-O\" ci=\"20000463\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000641\" se=\"0.0\" si=\"61000641\" sy=\"DL-CDY\" syi=\"30003170\"/>\r\n    <row c=\"4ZXC-8\" ci=\"20000477\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000642\" se=\"0.0\" si=\"61000642\" sy=\"JXQJ-B\" syi=\"30003264\"/>\r\n    <row c=\"G-HISF\" ci=\"20000163\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000643\" se=\"0.0\" si=\"61000643\" sy=\"1-EVAX\" syi=\"30001109\"/>\r\n    <row c=\"D4J-PP\" ci=\"20000474\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000644\" se=\"0.0\" si=\"61000644\" sy=\"QY2Y-N\" syi=\"30003244\"/>\r\n    <row c=\"9NP-KR\" ci=\"20000580\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000645\" se=\"0.0\" si=\"61000645\" sy=\"P4-3TJ\" syi=\"30003971\"/>\r\n    <row c=\"NT1-5Q\" ci=\"20000745\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000646\" se=\"0.0\" si=\"61000646\" sy=\"A9-F18\" syi=\"30005092\"/>\r\n    <row c=\"UWRZ-2\" ci=\"20000537\" r=\"Fade\" ri=\"10000046\" s=\"Conquerable Station #61000647\" se=\"0.0\" si=\"61000647\" sy=\"O1Y-ED\" syi=\"30003686\"/>\r\n    <row c=\"2Q-8WA\" ci=\"20000423\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"Conquerable Station #61000648\" se=\"0.0\" si=\"61000648\" sy=\"IUU3-L\" syi=\"30002886\"/>\r\n    <row c=\"I-WRVM\" ci=\"20000614\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000649\" se=\"0.0\" si=\"61000649\" sy=\"CUT-0V\" syi=\"30004200\"/>\r\n    <row c=\"4LEZ-6\" ci=\"20000750\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000650\" se=\"0.0\" si=\"61000650\" sy=\"KOI8-Z\" syi=\"30005124\"/>\r\n    <row c=\"BB-48X\" ci=\"20000613\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000651\" se=\"0.0\" si=\"61000651\" sy=\"JE-VLG\" syi=\"30004192\"/>\r\n    <row c=\"P-B2NE\" ci=\"20000422\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"Conquerable Station #61000652\" se=\"0.0\" si=\"61000652\" sy=\"I2D3-5\" syi=\"30002877\"/>\r\n    <row c=\"K-QUVW\" ci=\"20000298\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000653\" se=\"0.0\" si=\"61000653\" sy=\"KDV-DE\" syi=\"30002027\"/>\r\n    <row c=\"J-9M7D\" ci=\"20000083\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61000654\" se=\"0.0\" si=\"61000654\" sy=\"U-HVIX\" syi=\"30000575\"/>\r\n    <row c=\"MDM8-J\" ci=\"20000289\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000655\" se=\"0.0\" si=\"61000655\" sy=\"2D-0SO\" syi=\"30001965\"/>\r\n    <row c=\"03C-SU\" ci=\"20000130\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000656\" se=\"0.0\" si=\"61000656\" sy=\"XD-TOV\" syi=\"30000889\"/>\r\n    <row c=\"AGI1-F\" ci=\"20000261\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000657\" se=\"0.0\" si=\"61000657\" sy=\"Q7E-DU\" syi=\"30001763\"/>\r\n    <row c=\"M9-AN3\" ci=\"20000340\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000658\" se=\"0.0\" si=\"61000658\" sy=\"RO-0PZ\" syi=\"30002322\"/>\r\n    <row c=\"XPG-HE\" ci=\"20000421\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"Conquerable Station #61000659\" se=\"0.0\" si=\"61000659\" sy=\"9-0QB7\" syi=\"30002868\"/>\r\n    <row c=\"E-ILCH\" ci=\"20000460\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000660\" se=\"0.0\" si=\"61000660\" sy=\"02V-BK\" syi=\"30003149\"/>\r\n    <row c=\"6TT8-Z\" ci=\"20000341\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000661\" se=\"0.0\" si=\"61000661\" sy=\"QZV-X3\" syi=\"30002330\"/>\r\n    <row c=\"NPL-WH\" ci=\"20000263\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000662\" se=\"0.0\" si=\"61000662\" sy=\"SN-DZ6\" syi=\"30001780\"/>\r\n    <row c=\"HNZF-Z\" ci=\"20000610\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000663\" se=\"0.0\" si=\"61000663\" sy=\"YVSL-2\" syi=\"30004174\"/>\r\n    <row c=\"I-WRVM\" ci=\"20000614\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000664\" se=\"0.0\" si=\"61000664\" sy=\"O-F4SN\" syi=\"30004199\"/>\r\n    <row c=\"S-Q02B\" ci=\"20000476\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000665\" se=\"0.0\" si=\"61000665\" sy=\"RJBC-I\" syi=\"30003260\"/>\r\n    <row c=\"F-W6B4\" ci=\"20000469\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000666\" se=\"0.0\" si=\"61000666\" sy=\"FZCR-3\" syi=\"30003213\"/>\r\n    <row c=\"4M6-GJ\" ci=\"20000335\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000667\" se=\"0.0\" si=\"61000667\" sy=\"KRPF-A\" syi=\"30002286\"/>\r\n    <row c=\"D-GU3R\" ci=\"20000336\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000668\" se=\"0.0\" si=\"61000668\" sy=\"PXE-RG\" syi=\"30002290\"/>\r\n    <row c=\"YENX-U\" ci=\"20000319\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #61000669\" se=\"0.0\" si=\"61000669\" sy=\"08-N7Q\" syi=\"30002168\"/>\r\n    <row c=\"D4J-PP\" ci=\"20000474\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000670\" se=\"0.0\" si=\"61000670\" sy=\"HO4E-Q\" syi=\"30003243\"/>\r\n    <row c=\"N5V-Y0\" ci=\"20000118\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000671\" se=\"0.0\" si=\"61000671\" sy=\"MJ-LGH\" syi=\"30000803\"/>\r\n    <row c=\"E3-NLE\" ci=\"20000128\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000672\" se=\"0.0\" si=\"61000672\" sy=\"9GI-FB\" syi=\"30000875\"/>\r\n    <row c=\"S4S-SD\" ci=\"20000418\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"Conquerable Station #61000673\" se=\"0.0\" si=\"61000673\" sy=\"B1UE-J\" syi=\"30002850\"/>\r\n    <row c=\"VW7-YN\" ci=\"20000426\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000674\" se=\"0.0\" si=\"61000674\" sy=\"II-5O9\" syi=\"30002907\"/>\r\n    <row c=\"8MJO-4\" ci=\"20000718\" r=\"Omist\" ri=\"10000062\" s=\"Conquerable Station #61000675\" se=\"0.0\" si=\"61000675\" sy=\"L-AS00\" syi=\"30004910\"/>\r\n    <row c=\"WXB-RY\" ci=\"20000755\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000676\" se=\"0.0\" si=\"61000676\" sy=\"49V-E4\" syi=\"30005165\"/>\r\n    <row c=\"3GK-WS\" ci=\"20000081\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61000677\" se=\"0.0\" si=\"61000677\" sy=\"UM-SCG\" syi=\"30000558\"/>\r\n    <row c=\"304-QS\" ci=\"20000632\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000678\" se=\"0.0\" si=\"61000678\" sy=\"JTAU-5\" syi=\"30004324\"/>\r\n    <row c=\"N5V-Y0\" ci=\"20000118\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000679\" se=\"0.0\" si=\"61000679\" sy=\"VBPT-T\" syi=\"30000806\"/>\r\n    <row c=\"0-YMZM\" ci=\"20000117\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000680\" se=\"0.0\" si=\"61000680\" sy=\"MOCW-2\" syi=\"30000801\"/>\r\n    <row c=\"O5PO-O\" ci=\"20000746\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000681\" se=\"0.0\" si=\"61000681\" sy=\"R-AG7W\" syi=\"30005099\"/>\r\n    <row c=\"U-JTBT\" ci=\"20000182\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000682\" se=\"0.0\" si=\"61000682\" sy=\"EX6-AO\" syi=\"30001252\"/>\r\n    <row c=\"04-H4M\" ci=\"20000550\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000683\" se=\"0.0\" si=\"61000683\" sy=\"1-1I53\" syi=\"30003766\"/>\r\n    <row c=\"N4TD-6\" ci=\"20000618\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000684\" se=\"0.0\" si=\"61000684\" sy=\"HB-5L3\" syi=\"30004228\"/>\r\n    <row c=\"304Z-R\" ci=\"20000297\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000685\" se=\"0.0\" si=\"61000685\" sy=\"F-NMX6\" syi=\"30002019\"/>\r\n    <row c=\"Q5KW-Z\" ci=\"20000638\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000686\" se=\"0.0\" si=\"61000686\" sy=\"RO90-H\" syi=\"30004370\"/>\r\n    <row c=\"E-95ID\" ci=\"20000110\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000687\" se=\"0.0\" si=\"61000687\" sy=\"F39H-1\" syi=\"30000754\"/>\r\n    <row c=\"PX0-P4\" ci=\"20000167\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000688\" se=\"0.0\" si=\"61000688\" sy=\"8C-VE3\" syi=\"30001144\"/>\r\n    <row c=\"Wyvern\" ci=\"20000666\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000689\" se=\"0.0\" si=\"61000689\" sy=\"R3W-XU\" syi=\"30004566\"/>\r\n    <row c=\"Wyvern\" ci=\"20000666\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000690\" se=\"0.0\" si=\"61000690\" sy=\"C-C99Z\" syi=\"30004564\"/>\r\n    <row c=\"J33-JR\" ci=\"20000260\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000691\" se=\"0.0\" si=\"61000691\" sy=\"WIO-OL\" syi=\"30001756\"/>\r\n    <row c=\"PGPJ-8\" ci=\"20000338\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000692\" se=\"0.0\" si=\"61000692\" sy=\"3G-LFX\" syi=\"30002302\"/>\r\n    <row c=\"J-78ZG\" ci=\"20000346\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000693\" se=\"0.0\" si=\"61000693\" sy=\"HV-EAP\" syi=\"30002356\"/>\r\n    <row c=\"D61-WV\" ci=\"20000475\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000694\" se=\"0.0\" si=\"61000694\" sy=\"91-KD8\" syi=\"30003253\"/>\r\n    <row c=\"MPJW-6\" ci=\"20000585\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000695\" se=\"0.0\" si=\"61000695\" sy=\"4-GJT1\" syi=\"30004007\"/>\r\n    <row c=\"RDD-E6\" ci=\"20000342\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000696\" se=\"0.0\" si=\"61000696\" sy=\"IS-OBW\" syi=\"30002331\"/>\r\n    <row c=\"OC-TTA\" ci=\"20000226\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000697\" se=\"0.0\" si=\"61000697\" sy=\"ETO-OT\" syi=\"30001535\"/>\r\n    <row c=\"Q0-4FU\" ci=\"20000756\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000698\" se=\"0.0\" si=\"61000698\" sy=\"O-QKSM\" syi=\"30005171\"/>\r\n    <row c=\"4BZ-R3\" ci=\"20000541\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000699\" se=\"0.0\" si=\"61000699\" sy=\"FX-7EM\" syi=\"30003711\"/>\r\n    <row c=\"WE-WLQ\" ci=\"20000465\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000700\" se=\"0.0\" si=\"61000700\" sy=\"2-WNTD\" syi=\"30003188\"/>\r\n    <row c=\"3-PC31\" ci=\"20000655\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000701\" se=\"0.0\" si=\"61000701\" sy=\"KJ-V0P\" syi=\"30004488\"/>\r\n    <row c=\"ZYR-NF\" ci=\"20000380\" r=\"Impass\" ri=\"10000031\" s=\"Conquerable Station #61000702\" se=\"0.0\" si=\"61000702\" sy=\"IV-UNR\" syi=\"30002594\"/>\r\n    <row c=\"52-JKU\" ci=\"20000127\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000703\" se=\"0.0\" si=\"61000703\" sy=\"Q-CAB2\" syi=\"30000872\"/>\r\n    <row c=\"T-1WDH\" ci=\"20000177\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000704\" se=\"0.0\" si=\"61000704\" sy=\"7LHB-Z\" syi=\"30001218\"/>\r\n    <row c=\"JE7-F2\" ci=\"20000630\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000705\" se=\"0.0\" si=\"61000705\" sy=\"UQ9-3C\" syi=\"30004310\"/>\r\n    <row c=\"T875-C\" ci=\"20000073\" r=\"Detorid\" ri=\"10000005\" s=\"Conquerable Station #61000706\" se=\"0.0\" si=\"61000706\" sy=\"E-ACV6\" syi=\"30000503\"/>\r\n    <row c=\"ZYR-NF\" ci=\"20000380\" r=\"Impass\" ri=\"10000031\" s=\"Conquerable Station #61000707\" se=\"0.0\" si=\"61000707\" sy=\"9I-SRF\" syi=\"30002589\"/>\r\n    <row c=\"NOK-FZ\" ci=\"20000724\" r=\"Period Basis\" ri=\"10000063\" s=\"Conquerable Station #61000708\" se=\"0.0\" si=\"61000708\" sy=\"E-DOF2\" syi=\"30004948\"/>\r\n    <row c=\"05M-I1\" ci=\"20000382\" r=\"Impass\" ri=\"10000031\" s=\"Conquerable Station #61000709\" se=\"0.0\" si=\"61000709\" sy=\"U3SQ-X\" syi=\"30002608\"/>\r\n    <row c=\"DA0V-R\" ci=\"20000616\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000710\" se=\"0.0\" si=\"61000710\" sy=\"58Z-IH\" syi=\"30004212\"/>\r\n    <row c=\"EM-L3K\" ci=\"20000171\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000711\" se=\"0.0\" si=\"61000711\" sy=\"L7XS-5\" syi=\"30001174\"/>\r\n    <row c=\"T-RQ7S\" ci=\"20000643\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000712\" se=\"0.0\" si=\"61000712\" sy=\"3KNA-N\" syi=\"30004403\"/>\r\n    <row c=\"BB-48X\" ci=\"20000613\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000713\" se=\"0.0\" si=\"61000713\" sy=\"B-U299\" syi=\"30004194\"/>\r\n    <row c=\"03C-SU\" ci=\"20000130\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000714\" se=\"0.0\" si=\"61000714\" sy=\"L-VXTK\" syi=\"30000891\"/>\r\n    <row c=\"DA0V-R\" ci=\"20000616\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000715\" se=\"0.0\" si=\"61000715\" sy=\"E0DR-G\" syi=\"30004208\"/>\r\n    <row c=\"DA0V-R\" ci=\"20000616\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000716\" se=\"0.0\" si=\"61000716\" sy=\"T-67F8\" syi=\"30004211\"/>\r\n    <row c=\"XHL-TZ\" ci=\"20000615\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000717\" se=\"0.0\" si=\"61000717\" sy=\"L-Z9NB\" syi=\"30004203\"/>\r\n    <row c=\"T-HHHT\" ci=\"20000179\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000718\" se=\"0.0\" si=\"61000718\" sy=\"E-YJ8G\" syi=\"30001229\"/>\r\n    <row c=\"29V-1R\" ci=\"20000424\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000719\" se=\"0.0\" si=\"61000719\" sy=\"QPO-WI\" syi=\"30002893\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000720\" se=\"0.0\" si=\"61000720\" sy=\"43B-O1\" syi=\"30002941\"/>\r\n    <row c=\"5-88B9\" ci=\"20000547\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000721\" se=\"0.0\" si=\"61000721\" sy=\"YQB-22\" syi=\"30003753\"/>\r\n    <row c=\"6JCS-4\" ci=\"20000181\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000722\" se=\"0.0\" si=\"61000722\" sy=\"BUZ-DB\" syi=\"30001245\"/>\r\n    <row c=\"G3-MU3\" ci=\"20000612\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000723\" se=\"0.0\" si=\"61000723\" sy=\"E-B957\" syi=\"30004186\"/>\r\n    <row c=\"JE7-F2\" ci=\"20000630\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000724\" se=\"0.0\" si=\"61000724\" sy=\"J7YR-1\" syi=\"30004312\"/>\r\n    <row c=\"IJE6-J\" ci=\"20000321\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #61000725\" se=\"0.0\" si=\"61000725\" sy=\"RU-PT9\" syi=\"30002183\"/>\r\n    <row c=\"DA0V-R\" ci=\"20000616\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000726\" se=\"0.0\" si=\"61000726\" sy=\"0B-VOJ\" syi=\"30004214\"/>\r\n    <row c=\"E-72A3\" ci=\"20000535\" r=\"Tenal\" ri=\"10000045\" s=\"Conquerable Station #61000727\" se=\"0.0\" si=\"61000727\" sy=\"V-LDEJ\" syi=\"30003672\"/>\r\n    <row c=\"0FC-ZX\" ci=\"20000077\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61000728\" se=\"0.0\" si=\"61000728\" sy=\"30-YOU\" syi=\"30000534\"/>\r\n    <row c=\"U-JTBT\" ci=\"20000182\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000729\" se=\"0.0\" si=\"61000729\" sy=\"QETZ-W\" syi=\"30001246\"/>\r\n    <row c=\"5ZAB-N\" ci=\"20000617\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000730\" se=\"0.0\" si=\"61000730\" sy=\"VEQ-3V\" syi=\"30004220\"/>\r\n    <row c=\"0A-73B\" ci=\"20000301\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000731\" se=\"0.0\" si=\"61000731\" sy=\"UI-8ZE\" syi=\"30002047\"/>\r\n    <row c=\"D-YKXH\" ci=\"20000162\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000732\" se=\"0.0\" si=\"61000732\" sy=\"5B-YDD\" syi=\"30001104\"/>\r\n    <row c=\"0A-73B\" ci=\"20000301\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000733\" se=\"0.0\" si=\"61000733\" sy=\"OGV-AS\" syi=\"30002045\"/>\r\n    <row c=\"4SRW-B\" ci=\"20000074\" r=\"Detorid\" ri=\"10000005\" s=\"Conquerable Station #61000734\" se=\"0.0\" si=\"61000734\" sy=\"O5Q7-U\" syi=\"30000512\"/>\r\n    <row c=\"R2-BT6\" ci=\"20000457\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000735\" se=\"0.0\" si=\"61000735\" sy=\"V-XANH\" syi=\"30003130\"/>\r\n    <row c=\"Minotaur\" ci=\"20000678\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000736\" se=\"0.0\" si=\"61000736\" sy=\"R-BGSU\" syi=\"30004648\"/>\r\n    <row c=\"3B-IWE\" ci=\"20000586\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000737\" se=\"0.0\" si=\"61000737\" sy=\"F2OY-X\" syi=\"30004013\"/>\r\n    <row c=\"MRC-29\" ci=\"20000095\" r=\"Cache\" ri=\"10000007\" s=\"Conquerable Station #61000738\" se=\"0.0\" si=\"61000738\" sy=\"K85Y-6\" syi=\"30000653\"/>\r\n    <row c=\"LIB-F9\" ci=\"20000642\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000739\" se=\"0.0\" si=\"61000739\" sy=\"W-4FA9\" syi=\"30004392\"/>\r\n    <row c=\"YZKE-Q\" ci=\"20000652\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000740\" se=\"0.0\" si=\"61000740\" sy=\"UTDH-N\" syi=\"30004468\"/>\r\n    <row c=\"6I-3VX\" ci=\"20000713\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #61000741\" se=\"0.0\" si=\"61000741\" sy=\"B-6STA\" syi=\"30004873\"/>\r\n    <row c=\"1VN-XC\" ci=\"20000348\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000742\" se=\"0.0\" si=\"61000742\" sy=\"C-4D0W\" syi=\"30002375\"/>\r\n    <row c=\"YB7B-8\" ci=\"20000578\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000743\" se=\"0.0\" si=\"61000743\" sy=\"60M-TG\" syi=\"30003956\"/>\r\n    <row c=\"BRP2-K\" ci=\"20000183\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000744\" se=\"0.0\" si=\"61000744\" sy=\"4-07MU\" syi=\"30001260\"/>\r\n    <row c=\"PR-ACX\" ci=\"20000067\" r=\"Detorid\" ri=\"10000005\" s=\"Conquerable Station #61000745\" se=\"0.0\" si=\"61000745\" sy=\"G3D-ZT\" syi=\"30000460\"/>\r\n    <row c=\"W-4U1E\" ci=\"20000695\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000746\" se=\"0.0\" si=\"61000746\" sy=\"K-6K16\" syi=\"30004751\"/>\r\n    <row c=\"HS7W-T\" ci=\"20000546\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000747\" se=\"0.0\" si=\"61000747\" sy=\"08Z-JJ\" syi=\"30003743\"/>\r\n    <row c=\"5HN-S5\" ci=\"20000091\" r=\"Cache\" ri=\"10000007\" s=\"Conquerable Station #61000748\" se=\"0.0\" si=\"61000748\" sy=\"I6-SYN\" syi=\"30000626\"/>\r\n    <row c=\"CL-QB2\" ci=\"20000705\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #61000749\" se=\"0.0\" si=\"61000749\" sy=\"ZD1-Z2\" syi=\"30004817\"/>\r\n    <row c=\"05M-I1\" ci=\"20000382\" r=\"Impass\" ri=\"10000031\" s=\"Conquerable Station #61000750\" se=\"0.0\" si=\"61000750\" sy=\"01TG-J\" syi=\"30002609\"/>\r\n    <row c=\"JE7-F2\" ci=\"20000630\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000751\" se=\"0.0\" si=\"61000751\" sy=\"KMC-WI\" syi=\"30004316\"/>\r\n    <row c=\"IJE6-J\" ci=\"20000321\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #61000752\" se=\"0.0\" si=\"61000752\" sy=\"DR-427\" syi=\"30002184\"/>\r\n    <row c=\"Y46-EN\" ci=\"20000317\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #61000753\" se=\"0.0\" si=\"61000753\" sy=\"XS-K1O\" syi=\"30002155\"/>\r\n    <row c=\"H-KW4A\" ci=\"20000551\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000754\" se=\"0.0\" si=\"61000754\" sy=\"TXJ-II\" syi=\"30003779\"/>\r\n    <row c=\"1VN-XC\" ci=\"20000348\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000755\" se=\"0.0\" si=\"61000755\" sy=\"CT8K-0\" syi=\"30002373\"/>\r\n    <row c=\"6KFH-X\" ci=\"20000725\" r=\"Period Basis\" ri=\"10000063\" s=\"Conquerable Station #61000756\" se=\"0.0\" si=\"61000756\" sy=\"HIX4-H\" syi=\"30004956\"/>\r\n    <row c=\"ENP-SH\" ci=\"20000099\" r=\"Scalding Pass\" ri=\"10000008\" s=\"Conquerable Station #61000757\" se=\"0.0\" si=\"61000757\" sy=\"LBC-AW\" syi=\"30000683\"/>\r\n    <row c=\"E-8CSQ\" ci=\"20000044\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000758\" se=\"0.0\" si=\"61000758\" sy=\"G5ED-Y\" syi=\"30000310\"/>\r\n    <row c=\"5-88B9\" ci=\"20000547\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000759\" se=\"0.0\" si=\"61000759\" sy=\"3GXF-U\" syi=\"30003748\"/>\r\n    <row c=\"UTQ-BO\" ci=\"20000427\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000760\" se=\"0.0\" si=\"61000760\" sy=\"NC-N3F\" syi=\"30002910\"/>\r\n    <row c=\"O9X-CV\" ci=\"20000473\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000761\" se=\"0.0\" si=\"61000761\" sy=\"QZ-DIZ\" syi=\"30003236\"/>\r\n    <row c=\"9D1V-O\" ci=\"20000463\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000762\" se=\"0.0\" si=\"61000762\" sy=\"IPX-H5\" syi=\"30003176\"/>\r\n    <row c=\"L-H07K\" ci=\"20000648\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000763\" se=\"0.0\" si=\"61000763\" sy=\"6O-XIO\" syi=\"30004442\"/>\r\n    <row c=\"0FC-ZX\" ci=\"20000077\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61000764\" se=\"0.0\" si=\"61000764\" sy=\"4F89-U\" syi=\"30000536\"/>\r\n    <row c=\"YENX-U\" ci=\"20000319\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #61000765\" se=\"0.0\" si=\"61000765\" sy=\"CKX-RW\" syi=\"30002170\"/>\r\n    <row c=\"O9X-CV\" ci=\"20000473\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000766\" se=\"0.0\" si=\"61000766\" sy=\"21M1-B\" syi=\"30003238\"/>\r\n    <row c=\"0PS-L5\" ci=\"20000467\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000767\" se=\"0.0\" si=\"61000767\" sy=\"ORB4-J\" syi=\"30003201\"/>\r\n    <row c=\"P-FL48\" ci=\"20000232\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000768\" se=\"0.0\" si=\"61000768\" sy=\"6W-6O9\" syi=\"30001574\"/>\r\n    <row c=\"ZQ2-CF\" ci=\"20000545\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000769\" se=\"0.0\" si=\"61000769\" sy=\"5KG-PY\" syi=\"30003738\"/>\r\n    <row c=\"S-B1E4\" ci=\"20000429\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000770\" se=\"0.0\" si=\"61000770\" sy=\"YZ-UKA\" syi=\"30002925\"/>\r\n    <row c=\"W-4U1E\" ci=\"20000695\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000771\" se=\"0.0\" si=\"61000771\" sy=\"D-3GIQ\" syi=\"30004750\"/>\r\n    <row c=\"PG-RWX\" ci=\"20000349\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000772\" se=\"0.0\" si=\"61000772\" sy=\"T-IDGH\" syi=\"30002382\"/>\r\n    <row c=\"NOK-FZ\" ci=\"20000724\" r=\"Period Basis\" ri=\"10000063\" s=\"Conquerable Station #61000773\" se=\"0.0\" si=\"61000773\" sy=\"48I1-X\" syi=\"30004949\"/>\r\n    <row c=\"6GU-AT\" ci=\"20000266\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000774\" se=\"0.0\" si=\"61000774\" sy=\"2WU-XT\" syi=\"30001799\"/>\r\n    <row c=\"IPS-QB\" ci=\"20000358\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61000775\" se=\"0.0\" si=\"61000775\" sy=\"IOO-7O\" syi=\"30002439\"/>\r\n    <row c=\"K-JO26\" ci=\"20000582\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000776\" se=\"0.0\" si=\"61000776\" sy=\"OGY-6D\" syi=\"30003984\"/>\r\n    <row c=\"NOK-FZ\" ci=\"20000724\" r=\"Period Basis\" ri=\"10000063\" s=\"Conquerable Station #61000777\" se=\"0.0\" si=\"61000777\" sy=\"08S-39\" syi=\"30004954\"/>\r\n    <row c=\"04-LOF\" ci=\"20000472\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000778\" se=\"0.0\" si=\"61000778\" sy=\"FJ-GUR\" syi=\"30003234\"/>\r\n    <row c=\"NOK-FZ\" ci=\"20000724\" r=\"Period Basis\" ri=\"10000063\" s=\"Conquerable Station #61000779\" se=\"0.0\" si=\"61000779\" sy=\"0A-KZ0\" syi=\"30004947\"/>\r\n    <row c=\"WMP-OF\" ci=\"20000293\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000780\" se=\"0.0\" si=\"61000780\" sy=\"U-INPD\" syi=\"30001997\"/>\r\n    <row c=\"3-PC31\" ci=\"20000655\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000781\" se=\"0.0\" si=\"61000781\" sy=\"D4-2XN\" syi=\"30004491\"/>\r\n    <row c=\"K-JO26\" ci=\"20000582\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000782\" se=\"0.0\" si=\"61000782\" sy=\"H-4R6Z\" syi=\"30003986\"/>\r\n    <row c=\"AV-SCL\" ci=\"20000645\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000783\" se=\"0.0\" si=\"61000783\" sy=\"BGN1-O\" syi=\"30004417\"/>\r\n    <row c=\"7X-X1Y\" ci=\"20000538\" r=\"Fade\" ri=\"10000046\" s=\"Conquerable Station #61000784\" se=\"0.0\" si=\"61000784\" sy=\"8W-OSE\" syi=\"30003695\"/>\r\n    <row c=\"03C-SU\" ci=\"20000130\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000785\" se=\"0.0\" si=\"61000785\" sy=\"GIH-ZG\" syi=\"30000887\"/>\r\n    <row c=\"AV-SCL\" ci=\"20000645\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000786\" se=\"0.0\" si=\"61000786\" sy=\"X6-J6R\" syi=\"30004416\"/>\r\n    <row c=\"AC-RON\" ci=\"20000078\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61000787\" se=\"0.0\" si=\"61000787\" sy=\"X-ARMF\" syi=\"30000541\"/>\r\n    <row c=\"JE7-F2\" ci=\"20000630\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000788\" se=\"0.0\" si=\"61000788\" sy=\"VL3I-M\" syi=\"30004315\"/>\r\n    <row c=\"Mermaid\" ci=\"20000680\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000789\" se=\"0.0\" si=\"61000789\" sy=\"L7-APB\" syi=\"30004659\"/>\r\n    <row c=\"P-FL48\" ci=\"20000232\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000790\" se=\"0.0\" si=\"61000790\" sy=\"H4X-0I\" syi=\"30001575\"/>\r\n    <row c=\"GORV-P\" ci=\"20000129\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000791\" se=\"0.0\" si=\"61000791\" sy=\"Y-PZHM\" syi=\"30000884\"/>\r\n    <row c=\"GDBW-2\" ci=\"20000164\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000792\" se=\"0.0\" si=\"61000792\" sy=\"06-70G\" syi=\"30001120\"/>\r\n    <row c=\"RTCU-5\" ci=\"20000313\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #61000793\" se=\"0.0\" si=\"61000793\" sy=\"GXK-7F\" syi=\"30002123\"/>\r\n    <row c=\"Miennue\" ci=\"20000595\" r=\"Cloud Ring\" ri=\"10000051\" s=\"Conquerable Station #61000794\" se=\"0.0\" si=\"61000794\" sy=\"CX7-70\" syi=\"30004072\"/>\r\n    <row c=\"XI0-X2\" ci=\"20000155\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000795\" se=\"0.0\" si=\"61000795\" sy=\"N-YLOE\" syi=\"30001062\"/>\r\n    <row c=\"5-88B9\" ci=\"20000547\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000796\" se=\"0.0\" si=\"61000796\" sy=\"H-GKI6\" syi=\"30003752\"/>\r\n    <row c=\"8-IL7S\" ci=\"20000631\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000797\" se=\"0.0\" si=\"61000797\" sy=\"XW-2XP\" syi=\"30004320\"/>\r\n    <row c=\"8-IL7S\" ci=\"20000631\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000798\" se=\"0.0\" si=\"61000798\" sy=\"C-HCGU\" syi=\"30004319\"/>\r\n    <row c=\"8-IL7S\" ci=\"20000631\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000799\" se=\"0.0\" si=\"61000799\" sy=\"Q-FEEJ\" syi=\"30004321\"/>\r\n    <row c=\"BI-NFW\" ci=\"20000639\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000800\" se=\"0.0\" si=\"61000800\" sy=\"C-LBQS\" syi=\"30004372\"/>\r\n    <row c=\"8-IL7S\" ci=\"20000631\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000801\" se=\"0.0\" si=\"61000801\" sy=\"NTV0-1\" syi=\"30004318\"/>\r\n    <row c=\"G8-D09\" ci=\"20000296\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000802\" se=\"0.0\" si=\"61000802\" sy=\"3V8-LJ\" syi=\"30002011\"/>\r\n    <row c=\"O-EOI9\" ci=\"20000533\" r=\"Tenal\" ri=\"10000045\" s=\"Conquerable Station #61000803\" se=\"0.0\" si=\"61000803\" sy=\"JI-1UQ\" syi=\"30003661\"/>\r\n    <row c=\"O-EOI9\" ci=\"20000533\" r=\"Tenal\" ri=\"10000045\" s=\"Conquerable Station #61000804\" se=\"0.0\" si=\"61000804\" sy=\"EN-GTB\" syi=\"30003662\"/>\r\n    <row c=\"O6W-QE\" ci=\"20000384\" r=\"Impass\" ri=\"10000031\" s=\"Conquerable Station #61000805\" se=\"0.0\" si=\"61000805\" sy=\"GBT4-J\" syi=\"30002620\"/>\r\n    <row c=\"3RU-10\" ci=\"20000470\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000806\" se=\"0.0\" si=\"61000806\" sy=\"Q-ITV5\" syi=\"30003222\"/>\r\n    <row c=\"K-ZKBM\" ci=\"20000311\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #61000807\" se=\"0.0\" si=\"61000807\" sy=\"B9E-H6\" syi=\"30002110\"/>\r\n    <row c=\"E6EO-H\" ci=\"20000159\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000808\" se=\"0.0\" si=\"61000808\" sy=\"X1W-AL\" syi=\"30001086\"/>\r\n    <row c=\"03C-SU\" ci=\"20000130\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000809\" se=\"0.0\" si=\"61000809\" sy=\"K-6SNI\" syi=\"30000890\"/>\r\n    <row c=\"NOB-HD\" ci=\"20000268\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000810\" se=\"0.0\" si=\"61000810\" sy=\"UC-8XF\" syi=\"30001813\"/>\r\n    <row c=\"PUB-0R\" ci=\"20000577\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000811\" se=\"0.0\" si=\"61000811\" sy=\"1M4-FK\" syi=\"30003952\"/>\r\n    <row c=\"04-H4M\" ci=\"20000550\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000812\" se=\"0.0\" si=\"61000812\" sy=\"G-B22J\" syi=\"30003772\"/>\r\n    <row c=\"UWRZ-2\" ci=\"20000537\" r=\"Fade\" ri=\"10000046\" s=\"Conquerable Station #61000813\" se=\"0.0\" si=\"61000813\" sy=\"L-SCBU\" syi=\"30003684\"/>\r\n    <row c=\"5-88B9\" ci=\"20000547\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000814\" se=\"0.0\" si=\"61000814\" sy=\"VKI-T7\" syi=\"30003749\"/>\r\n    <row c=\"NOB-HD\" ci=\"20000268\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000815\" se=\"0.0\" si=\"61000815\" sy=\"90-A1P\" syi=\"30001814\"/>\r\n    <row c=\"C-ULS4\" ci=\"20000637\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000816\" se=\"0.0\" si=\"61000816\" sy=\"4-BE0M\" syi=\"30004360\"/>\r\n    <row c=\"RTCU-5\" ci=\"20000313\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #61000817\" se=\"0.0\" si=\"61000817\" sy=\"FYI-49\" syi=\"30002128\"/>\r\n    <row c=\"17K-QM\" ci=\"20000682\" r=\"Paragon Soul\" ri=\"10000059\" s=\"Conquerable Station #61000818\" se=\"0.0\" si=\"61000818\" sy=\"5-CSE3\" syi=\"30004670\"/>\r\n    <row c=\"304Z-R\" ci=\"20000297\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000819\" se=\"0.0\" si=\"61000819\" sy=\"7RM-N0\" syi=\"30002016\"/>\r\n    <row c=\"XI0-X2\" ci=\"20000155\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000820\" se=\"0.0\" si=\"61000820\" sy=\"Y6-9LF\" syi=\"30001058\"/>\r\n    <row c=\"D61-WV\" ci=\"20000475\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000821\" se=\"0.0\" si=\"61000821\" sy=\"9G5J-1\" syi=\"30003249\"/>\r\n    <row c=\"1M4-FN\" ci=\"20000156\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000822\" se=\"0.0\" si=\"61000822\" sy=\"F-TQWO\" syi=\"30001064\"/>\r\n    <row c=\"BI-NFW\" ci=\"20000639\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000823\" se=\"0.0\" si=\"61000823\" sy=\"5-P1Y2\" syi=\"30004374\"/>\r\n    <row c=\"E-IFSA\" ci=\"20000706\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #61000824\" se=\"0.0\" si=\"61000824\" sy=\"2PG-KN\" syi=\"30004830\"/>\r\n    <row c=\"1ANT-J\" ci=\"20000644\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000825\" se=\"0.0\" si=\"61000825\" sy=\"V-TN6Q\" syi=\"30004406\"/>\r\n    <row c=\"L-H07K\" ci=\"20000648\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000826\" se=\"0.0\" si=\"61000826\" sy=\"U-JJEW\" syi=\"30004439\"/>\r\n    <row c=\"S-B1E4\" ci=\"20000429\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000827\" se=\"0.0\" si=\"61000827\" sy=\"E-FIC0\" syi=\"30002922\"/>\r\n    <row c=\"4MY-AB\" ci=\"20000316\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #61000828\" se=\"0.0\" si=\"61000828\" sy=\"JKWP-U\" syi=\"30002150\"/>\r\n    <row c=\"OSJ7-I\" ci=\"20000032\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000829\" se=\"0.0\" si=\"61000829\" sy=\"FH-TTC\" syi=\"30000226\"/>\r\n    <row c=\"Taurus\" ci=\"20000675\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000830\" se=\"0.0\" si=\"61000830\" sy=\"L-A5XP\" syi=\"30004625\"/>\r\n    <row c=\"UD-ZJ3\" ci=\"20000548\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000831\" se=\"0.0\" si=\"61000831\" sy=\"K1I1-J\" syi=\"30003758\"/>\r\n    <row c=\"TPB-KG\" ci=\"20000759\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000832\" se=\"0.0\" si=\"61000832\" sy=\"MTO2-2\" syi=\"30005189\"/>\r\n    <row c=\"YUT3-U\" ci=\"20000036\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000833\" se=\"0.0\" si=\"61000833\" sy=\"S-NJBB\" syi=\"30000260\"/>\r\n    <row c=\"YZKE-Q\" ci=\"20000652\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000834\" se=\"0.0\" si=\"61000834\" sy=\"GPUS-A\" syi=\"30004465\"/>\r\n    <row c=\"OFQ-HG\" ci=\"20000651\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000835\" se=\"0.0\" si=\"61000835\" sy=\"MSKR-1\" syi=\"30004464\"/>\r\n    <row c=\"TCC-ZV\" ci=\"20000683\" r=\"Paragon Soul\" ri=\"10000059\" s=\"Conquerable Station #61000836\" se=\"0.0\" si=\"61000836\" sy=\"4Y-OBL\" syi=\"30004673\"/>\r\n    <row c=\"DMXN-3\" ci=\"20000033\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000837\" se=\"0.0\" si=\"61000837\" sy=\"3HX-DL\" syi=\"30000228\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000838\" se=\"0.0\" si=\"61000838\" sy=\"9CK-KZ\" syi=\"30002949\"/>\r\n    <row c=\"JQA8-6\" ci=\"20000649\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000839\" se=\"0.0\" si=\"61000839\" sy=\"BJ-ZFD\" syi=\"30004444\"/>\r\n    <row c=\"AZBG-H\" ci=\"20000542\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000840\" se=\"0.0\" si=\"61000840\" sy=\"OXIY-V\" syi=\"30003722\"/>\r\n    <row c=\"HNZF-Z\" ci=\"20000610\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000841\" se=\"0.0\" si=\"61000841\" sy=\"S-W8CF\" syi=\"30004172\"/>\r\n    <row c=\"G3-MU3\" ci=\"20000612\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000842\" se=\"0.0\" si=\"61000842\" sy=\"1M7-RK\" syi=\"30004189\"/>\r\n    <row c=\"G2E-RJ\" ci=\"20000540\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000843\" se=\"0.0\" si=\"61000843\" sy=\"4B-NQN\" syi=\"30003706\"/>\r\n    <row c=\"D-YKXH\" ci=\"20000162\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000844\" se=\"0.0\" si=\"61000844\" sy=\"QZ1-OH\" syi=\"30001107\"/>\r\n    <row c=\"GORV-P\" ci=\"20000129\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000845\" se=\"0.0\" si=\"61000845\" sy=\"X-CFN6\" syi=\"30000882\"/>\r\n    <row c=\"8T-OLH\" ci=\"20000454\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61000846\" se=\"0.0\" si=\"61000846\" sy=\"X-7BIX\" syi=\"30003110\"/>\r\n    <row c=\"5Z0Y-S\" ci=\"20000717\" r=\"Omist\" ri=\"10000062\" s=\"Conquerable Station #61000847\" se=\"0.0\" si=\"61000847\" sy=\"DJK-67\" syi=\"30004903\"/>\r\n    <row c=\"G3-MU3\" ci=\"20000612\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000848\" se=\"0.0\" si=\"61000848\" sy=\"2-9Z6V\" syi=\"30004184\"/>\r\n    <row c=\"MW49-U\" ci=\"20000166\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000849\" se=\"0.0\" si=\"61000849\" sy=\"863P-X\" syi=\"30001132\"/>\r\n    <row c=\"BRP2-K\" ci=\"20000183\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000850\" se=\"0.0\" si=\"61000850\" sy=\"6BPS-T\" syi=\"30001257\"/>\r\n    <row c=\"4MY-AB\" ci=\"20000316\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #61000851\" se=\"0.0\" si=\"61000851\" sy=\"D-BAMJ\" syi=\"30002149\"/>\r\n    <row c=\"O6W-QE\" ci=\"20000384\" r=\"Impass\" ri=\"10000031\" s=\"Conquerable Station #61000852\" se=\"0.0\" si=\"61000852\" sy=\"GZ1-A1\" syi=\"30002621\"/>\r\n    <row c=\"I9B-8X\" ci=\"20000543\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000853\" se=\"0.0\" si=\"61000853\" sy=\"D-6WS1\" syi=\"30003727\"/>\r\n    <row c=\"Pegasus\" ci=\"20000665\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000854\" se=\"0.0\" si=\"61000854\" sy=\"4-EP12\" syi=\"30004553\"/>\r\n    <row c=\"HS7W-T\" ci=\"20000546\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000855\" se=\"0.0\" si=\"61000855\" sy=\"X-4WZD\" syi=\"30003744\"/>\r\n    <row c=\"Q-IPAA\" ci=\"20000310\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #61000856\" se=\"0.0\" si=\"61000856\" sy=\"AF0-V5\" syi=\"30002107\"/>\r\n    <row c=\"5Y1E-3\" ci=\"20000085\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61000857\" se=\"0.0\" si=\"61000857\" sy=\"3Q-VZA\" syi=\"30000590\"/>\r\n    <row c=\"D-95MV\" ci=\"20000071\" r=\"Detorid\" ri=\"10000005\" s=\"Conquerable Station #61000858\" se=\"0.0\" si=\"61000858\" sy=\"TYB-69\" syi=\"30000485\"/>\r\n    <row c=\"XI0-X2\" ci=\"20000155\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000859\" se=\"0.0\" si=\"61000859\" sy=\"NSI-MW\" syi=\"30001061\"/>\r\n    <row c=\"B-MQ0Y\" ci=\"20000747\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000860\" se=\"0.0\" si=\"61000860\" sy=\"EF-QZK\" syi=\"30005104\"/>\r\n    <row c=\"ZPI-2E\" ci=\"20000070\" r=\"Detorid\" ri=\"10000005\" s=\"Conquerable Station #61000861\" se=\"0.0\" si=\"61000861\" sy=\"FMH-OV\" syi=\"30000484\"/>\r\n    <row c=\"760-9C\" ci=\"20000086\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61000862\" se=\"0.0\" si=\"61000862\" sy=\"GPD5-0\" syi=\"30000598\"/>\r\n    <row c=\"D61-WV\" ci=\"20000475\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000863\" se=\"0.0\" si=\"61000863\" sy=\"0PU2-R\" syi=\"30003251\"/>\r\n    <row c=\"J-9M7D\" ci=\"20000083\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61000864\" se=\"0.0\" si=\"61000864\" sy=\"F-QQ5N\" syi=\"30000572\"/>\r\n    <row c=\"MW49-U\" ci=\"20000166\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000865\" se=\"0.0\" si=\"61000865\" sy=\"ZO-YJZ\" syi=\"30001133\"/>\r\n    <row c=\"GDBW-2\" ci=\"20000164\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000866\" se=\"0.0\" si=\"61000866\" sy=\"P3X-TN\" syi=\"30001125\"/>\r\n    <row c=\"WS5L-X\" ci=\"20000165\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000867\" se=\"0.0\" si=\"61000867\" sy=\"9NI-FW\" syi=\"30001128\"/>\r\n    <row c=\"3R-BJL\" ci=\"20000072\" r=\"Detorid\" ri=\"10000005\" s=\"Conquerable Station #61000868\" se=\"0.0\" si=\"61000868\" sy=\"XW2H-V\" syi=\"30000499\"/>\r\n    <row c=\"QJ2-0M\" ci=\"20000609\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000869\" se=\"0.0\" si=\"61000869\" sy=\"BI0Y-X\" syi=\"30004163\"/>\r\n    <row c=\"R-M719\" ci=\"20000084\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61000870\" se=\"0.0\" si=\"61000870\" sy=\"1L-OEK\" syi=\"30000579\"/>\r\n    <row c=\"S0X-O4\" ci=\"20000758\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000871\" se=\"0.0\" si=\"61000871\" sy=\"F-A3TR\" syi=\"30005184\"/>\r\n    <row c=\"R-M719\" ci=\"20000084\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61000872\" se=\"0.0\" si=\"61000872\" sy=\"MN-Q26\" syi=\"30000580\"/>\r\n    <row c=\"CZ-06R\" ci=\"20000468\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000873\" se=\"0.0\" si=\"61000873\" sy=\"Y-770C\" syi=\"30003207\"/>\r\n    <row c=\"AC-RON\" ci=\"20000078\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61000874\" se=\"0.0\" si=\"61000874\" sy=\"G9L-LP\" syi=\"30000545\"/>\r\n    <row c=\"I9B-8X\" ci=\"20000543\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000875\" se=\"0.0\" si=\"61000875\" sy=\"D61A-G\" syi=\"30003724\"/>\r\n    <row c=\"FD-7Y4\" ci=\"20000121\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000876\" se=\"0.0\" si=\"61000876\" sy=\"38NZ-1\" syi=\"30000829\"/>\r\n    <row c=\"UTQ-BO\" ci=\"20000427\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000877\" se=\"0.0\" si=\"61000877\" sy=\"ZZZR-5\" syi=\"30002914\"/>\r\n    <row c=\"G-HISF\" ci=\"20000163\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000878\" se=\"0.0\" si=\"61000878\" sy=\"APES-G\" syi=\"30001114\"/>\r\n    <row c=\"XPG-HE\" ci=\"20000421\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"Conquerable Station #61000879\" se=\"0.0\" si=\"61000879\" sy=\"K76A-3\" syi=\"30002872\"/>\r\n    <row c=\"760-9C\" ci=\"20000086\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61000880\" se=\"0.0\" si=\"61000880\" sy=\"DUO-51\" syi=\"30000595\"/>\r\n    <row c=\"Z-ONUI\" ci=\"20000112\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000881\" se=\"0.0\" si=\"61000881\" sy=\"U-UTU9\" syi=\"30000765\"/>\r\n    <row c=\"IM-8S5\" ci=\"20000264\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000882\" se=\"0.0\" si=\"61000882\" sy=\"2-84WC\" syi=\"30001786\"/>\r\n    <row c=\"WE-WLQ\" ci=\"20000465\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000883\" se=\"0.0\" si=\"61000883\" sy=\"ND-X7X\" syi=\"30003186\"/>\r\n    <row c=\"9BGY-6\" ci=\"20000748\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000884\" se=\"0.0\" si=\"61000884\" sy=\"OP7-BP\" syi=\"30005109\"/>\r\n    <row c=\"IV-LWJ\" ci=\"20000108\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000885\" se=\"0.0\" si=\"61000885\" sy=\"PT-21C\" syi=\"30000738\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000886\" se=\"0.0\" si=\"61000886\" sy=\"XCBK-X\" syi=\"30002946\"/>\r\n    <row c=\"G3-MU3\" ci=\"20000612\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000887\" se=\"0.0\" si=\"61000887\" sy=\"P-H5IY\" syi=\"30004187\"/>\r\n    <row c=\"0YMH-Q\" ci=\"20000115\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000888\" se=\"0.0\" si=\"61000888\" sy=\"Q7-FZ8\" syi=\"30000785\"/>\r\n    <row c=\"UBPU-9\" ci=\"20000357\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61000889\" se=\"0.0\" si=\"61000889\" sy=\"QKTR-L\" syi=\"30002431\"/>\r\n    <row c=\"5-88B9\" ci=\"20000547\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000890\" se=\"0.0\" si=\"61000890\" sy=\"8P9-BM\" syi=\"30003750\"/>\r\n    <row c=\"LSC-4P\" ci=\"20000699\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61000891\" se=\"0.0\" si=\"61000891\" sy=\"8F-TK3\" syi=\"30004781\"/>\r\n    <row c=\"Z6T6-B\" ci=\"20000225\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000892\" se=\"0.0\" si=\"61000892\" sy=\"L-WG68\" syi=\"30001526\"/>\r\n    <row c=\"HS7W-T\" ci=\"20000546\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000893\" se=\"0.0\" si=\"61000893\" sy=\"TU-RI6\" syi=\"30003742\"/>\r\n    <row c=\"OY3-DM\" ci=\"20000726\" r=\"Period Basis\" ri=\"10000063\" s=\"Conquerable Station #61000894\" se=\"0.0\" si=\"61000894\" sy=\"MVUO-F\" syi=\"30004966\"/>\r\n    <row c=\"RJ-1R7\" ci=\"20000365\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61000895\" se=\"0.0\" si=\"61000895\" sy=\"4K0N-J\" syi=\"30002495\"/>\r\n    <row c=\"VNX-P0\" ci=\"20000539\" r=\"Fade\" ri=\"10000046\" s=\"Conquerable Station #61000896\" se=\"0.0\" si=\"61000896\" sy=\"8QMO-E\" syi=\"30003702\"/>\r\n    <row c=\"QJ2-0M\" ci=\"20000609\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000897\" se=\"0.0\" si=\"61000897\" sy=\"J-A5QD\" syi=\"30004162\"/>\r\n    <row c=\"3GK-WS\" ci=\"20000081\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61000898\" se=\"0.0\" si=\"61000898\" sy=\"5Q65-4\" syi=\"30000564\"/>\r\n    <row c=\"FD-7Y4\" ci=\"20000121\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000899\" se=\"0.0\" si=\"61000899\" sy=\"D-P1EH\" syi=\"30000826\"/>\r\n    <row c=\"GDBW-2\" ci=\"20000164\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000900\" se=\"0.0\" si=\"61000900\" sy=\"C-NMG9\" syi=\"30001124\"/>\r\n    <row c=\"D-AWFI\" ci=\"20000432\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000901\" se=\"0.0\" si=\"61000901\" sy=\"UJY-HE\" syi=\"30002955\"/>\r\n    <row c=\"E65-47\" ci=\"20000234\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000902\" se=\"0.0\" si=\"61000902\" sy=\"S-CUEA\" syi=\"30001591\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000903\" se=\"0.0\" si=\"61000903\" sy=\"4N-BUI\" syi=\"30002944\"/>\r\n    <row c=\"6I-3VX\" ci=\"20000713\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #61000904\" se=\"0.0\" si=\"61000904\" sy=\"0P-U0Q\" syi=\"30004874\"/>\r\n    <row c=\"6I-3VX\" ci=\"20000713\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #61000905\" se=\"0.0\" si=\"61000905\" sy=\"7KIK-H\" syi=\"30004872\"/>\r\n    <row c=\"E6EO-H\" ci=\"20000159\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000906\" se=\"0.0\" si=\"61000906\" sy=\"XU-BF8\" syi=\"30001089\"/>\r\n    <row c=\"760-9C\" ci=\"20000086\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61000907\" se=\"0.0\" si=\"61000907\" sy=\"07-SLO\" syi=\"30000596\"/>\r\n    <row c=\"SLYP-5\" ci=\"20000344\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000908\" se=\"0.0\" si=\"61000908\" sy=\"FGJP-J\" syi=\"30002345\"/>\r\n    <row c=\"Q-6LG1\" ci=\"20000552\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000909\" se=\"0.0\" si=\"61000909\" sy=\"18XA-C\" syi=\"30003785\"/>\r\n    <row c=\"GDBW-2\" ci=\"20000164\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000910\" se=\"0.0\" si=\"61000910\" sy=\"UYG-YX\" syi=\"30001121\"/>\r\n    <row c=\"S-Q02B\" ci=\"20000476\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000911\" se=\"0.0\" si=\"61000911\" sy=\"S7WI-F\" syi=\"30003257\"/>\r\n    <row c=\"EL8Z-M\" ci=\"20000318\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #61000912\" se=\"0.0\" si=\"61000912\" sy=\"Y-FZ5N\" syi=\"30002162\"/>\r\n    <row c=\"QJ2-0M\" ci=\"20000609\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000913\" se=\"0.0\" si=\"61000913\" sy=\"5-3722\" syi=\"30004166\"/>\r\n    <row c=\"Miennue\" ci=\"20000595\" r=\"Cloud Ring\" ri=\"10000051\" s=\"Conquerable Station #61000914\" se=\"0.0\" si=\"61000914\" sy=\"28O-JY\" syi=\"30004071\"/>\r\n    <row c=\"IM-8S5\" ci=\"20000264\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000915\" se=\"0.0\" si=\"61000915\" sy=\"24I-FE\" syi=\"30001784\"/>\r\n    <row c=\"MY-HQD\" ci=\"20000235\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000916\" se=\"0.0\" si=\"61000916\" sy=\"WIW-X8\" syi=\"30001595\"/>\r\n    <row c=\"3TS-12\" ci=\"20000158\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000917\" se=\"0.0\" si=\"61000917\" sy=\"LY-WRW\" syi=\"30001078\"/>\r\n    <row c=\"AC-RON\" ci=\"20000078\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61000918\" se=\"0.0\" si=\"61000918\" sy=\"MLQ-O9\" syi=\"30000539\"/>\r\n    <row c=\"78-6RI\" ci=\"20000415\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"Conquerable Station #61000919\" se=\"0.0\" si=\"61000919\" sy=\"LS3-HP\" syi=\"30002830\"/>\r\n    <row c=\"XFLN-F\" ci=\"20000536\" r=\"Fade\" ri=\"10000046\" s=\"Conquerable Station #61000920\" se=\"0.0\" si=\"61000920\" sy=\"E-9ORY\" syi=\"30003677\"/>\r\n    <row c=\"T-RQ7S\" ci=\"20000643\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000921\" se=\"0.0\" si=\"61000921\" sy=\"BU-IU4\" syi=\"30004399\"/>\r\n    <row c=\"1M4-FN\" ci=\"20000156\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000922\" se=\"0.0\" si=\"61000922\" sy=\"0-TRV1\" syi=\"30001065\"/>\r\n    <row c=\"NZU8-G\" ci=\"20000076\" r=\"Detorid\" ri=\"10000005\" s=\"Conquerable Station #61000923\" se=\"0.0\" si=\"61000923\" sy=\"QXE-1N\" syi=\"30000526\"/>\r\n    <row c=\"ICH-B6\" ci=\"20000343\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000924\" se=\"0.0\" si=\"61000924\" sy=\"NWX-LI\" syi=\"30002340\"/>\r\n    <row c=\"YZKE-Q\" ci=\"20000652\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000925\" se=\"0.0\" si=\"61000925\" sy=\"3-BADZ\" syi=\"30004466\"/>\r\n    <row c=\"C73-U5\" ci=\"20000314\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #61000926\" se=\"0.0\" si=\"61000926\" sy=\"94FR-S\" syi=\"30002131\"/>\r\n    <row c=\"3D-ROC\" ci=\"20000228\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000927\" se=\"0.0\" si=\"61000927\" sy=\"XT-1E0\" syi=\"30001552\"/>\r\n    <row c=\"H-KW4A\" ci=\"20000551\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000928\" se=\"0.0\" si=\"61000928\" sy=\"C1-HAB\" syi=\"30003780\"/>\r\n    <row c=\"3TS-12\" ci=\"20000158\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000929\" se=\"0.0\" si=\"61000929\" sy=\"9F-ERQ\" syi=\"30001079\"/>\r\n    <row c=\"WMP-OF\" ci=\"20000293\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000930\" se=\"0.0\" si=\"61000930\" sy=\"C-H9X7\" syi=\"30001992\"/>\r\n    <row c=\"U29-0S\" ci=\"20000030\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000931\" se=\"0.0\" si=\"61000931\" sy=\"U54-1L\" syi=\"30000210\"/>\r\n    <row c=\"4-0VL9\" ci=\"20000229\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000932\" se=\"0.0\" si=\"61000932\" sy=\"B6-XE8\" syi=\"30001555\"/>\r\n    <row c=\"3R-BJL\" ci=\"20000072\" r=\"Detorid\" ri=\"10000005\" s=\"Conquerable Station #61000933\" se=\"0.0\" si=\"61000933\" sy=\"KZ9T-C\" syi=\"30000498\"/>\r\n    <row c=\"A21H-Z\" ci=\"20000430\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000934\" se=\"0.0\" si=\"61000934\" sy=\"LEK-N5\" syi=\"30002932\"/>\r\n    <row c=\"S-B1E4\" ci=\"20000429\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000935\" se=\"0.0\" si=\"61000935\" sy=\"3QE-9Q\" syi=\"30002921\"/>\r\n    <row c=\"BRP2-K\" ci=\"20000183\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000936\" se=\"0.0\" si=\"61000936\" sy=\"Y-PNRL\" syi=\"30001255\"/>\r\n    <row c=\"3NA-Z1\" ci=\"20000417\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"Conquerable Station #61000937\" se=\"0.0\" si=\"61000937\" sy=\"EPCD-D\" syi=\"30002845\"/>\r\n    <row c=\"D-AWFI\" ci=\"20000432\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000938\" se=\"0.0\" si=\"61000938\" sy=\"A4L-A2\" syi=\"30002952\"/>\r\n    <row c=\"0FC-ZX\" ci=\"20000077\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61000939\" se=\"0.0\" si=\"61000939\" sy=\"LP1M-Q\" syi=\"30000533\"/>\r\n    <row c=\"RJ-1R7\" ci=\"20000365\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61000940\" se=\"0.0\" si=\"61000940\" sy=\"B-F1MI\" syi=\"30002496\"/>\r\n    <row c=\"PFL-QY\" ci=\"20000160\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000941\" se=\"0.0\" si=\"61000941\" sy=\"T-4H0B\" syi=\"30001096\"/>\r\n    <row c=\"8AO-5V\" ci=\"20000345\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000942\" se=\"0.0\" si=\"61000942\" sy=\"8KE-YS\" syi=\"30002354\"/>\r\n    <row c=\"OSJ7-I\" ci=\"20000032\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000943\" se=\"0.0\" si=\"61000943\" sy=\"0-R5TS\" syi=\"30000222\"/>\r\n    <row c=\"SLYP-5\" ci=\"20000344\" r=\"Etherium Reach\" ri=\"10000027\" s=\"Conquerable Station #61000944\" se=\"0.0\" si=\"61000944\" sy=\"4-QDIX\" syi=\"30002344\"/>\r\n    <row c=\"D-YKXH\" ci=\"20000162\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000945\" se=\"0.0\" si=\"61000945\" sy=\"Y-XZA7\" syi=\"30001108\"/>\r\n    <row c=\"42-WDG\" ci=\"20000654\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61000946\" se=\"0.0\" si=\"61000946\" sy=\"NPD9-A\" syi=\"30004479\"/>\r\n    <row c=\"IM-8S5\" ci=\"20000264\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000947\" se=\"0.0\" si=\"61000947\" sy=\"QOK-SX\" syi=\"30001783\"/>\r\n    <row c=\"Hydra\" ci=\"20000677\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000948\" se=\"0.0\" si=\"61000948\" sy=\"I-CUVX\" syi=\"30004636\"/>\r\n    <row c=\"T-4ACL\" ci=\"20000466\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000949\" se=\"0.0\" si=\"61000949\" sy=\"DS3-6A\" syi=\"30003193\"/>\r\n    <row c=\"7X-X1Y\" ci=\"20000538\" r=\"Fade\" ri=\"10000046\" s=\"Conquerable Station #61000950\" se=\"0.0\" si=\"61000950\" sy=\"C-OK0R\" syi=\"30003692\"/>\r\n    <row c=\"OC-TTA\" ci=\"20000226\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000951\" se=\"0.0\" si=\"61000951\" sy=\"OTJ-4W\" syi=\"30001538\"/>\r\n    <row c=\"Y-LRWI\" ci=\"20000716\" r=\"Omist\" ri=\"10000062\" s=\"Conquerable Station #61000952\" se=\"0.0\" si=\"61000952\" sy=\"G-B3PR\" syi=\"30004892\"/>\r\n    <row c=\"U-JTBT\" ci=\"20000182\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000953\" se=\"0.0\" si=\"61000953\" sy=\"W-MPTH\" syi=\"30001250\"/>\r\n    <row c=\"7X-X1Y\" ci=\"20000538\" r=\"Fade\" ri=\"10000046\" s=\"Conquerable Station #61000954\" se=\"0.0\" si=\"61000954\" sy=\"0-ARFO\" syi=\"30003693\"/>\r\n    <row c=\"J33-JR\" ci=\"20000260\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000955\" se=\"0.0\" si=\"61000955\" sy=\"1-10QG\" syi=\"30001757\"/>\r\n    <row c=\"E-UBWI\" ci=\"20000230\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000956\" se=\"0.0\" si=\"61000956\" sy=\"VK6-EZ\" syi=\"30001566\"/>\r\n    <row c=\"MY-HQD\" ci=\"20000235\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000957\" se=\"0.0\" si=\"61000957\" sy=\"M-NP5O\" syi=\"30001597\"/>\r\n    <row c=\"OC-TTA\" ci=\"20000226\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000958\" se=\"0.0\" si=\"61000958\" sy=\"KPI-OW\" syi=\"30001536\"/>\r\n    <row c=\"FDR-EQ\" ci=\"20000176\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61000959\" se=\"0.0\" si=\"61000959\" sy=\"WJ-9YO\" syi=\"30001207\"/>\r\n    <row c=\"F-ZNNG\" ci=\"20000363\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61000960\" se=\"0.0\" si=\"61000960\" sy=\"QP0K-B\" syi=\"30002479\"/>\r\n    <row c=\"IM-8S5\" ci=\"20000264\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000961\" se=\"0.0\" si=\"61000961\" sy=\"V-SEE6\" syi=\"30001787\"/>\r\n    <row c=\"AZBG-H\" ci=\"20000542\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000962\" se=\"0.0\" si=\"61000962\" sy=\"DP-JD4\" syi=\"30003721\"/>\r\n    <row c=\"PX0-P4\" ci=\"20000167\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000963\" se=\"0.0\" si=\"61000963\" sy=\"RWML-A\" syi=\"30001142\"/>\r\n    <row c=\"3D-ROC\" ci=\"20000228\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000964\" se=\"0.0\" si=\"61000964\" sy=\"0J-MQW\" syi=\"30001551\"/>\r\n    <row c=\"LIB-F9\" ci=\"20000642\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000965\" se=\"0.0\" si=\"61000965\" sy=\"5-0WB9\" syi=\"30004391\"/>\r\n    <row c=\"H-KW4A\" ci=\"20000551\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61000966\" se=\"0.0\" si=\"61000966\" sy=\"2V-CS5\" syi=\"30003774\"/>\r\n    <row c=\"X5O9-E\" ci=\"20000259\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000967\" se=\"0.0\" si=\"61000967\" sy=\"M4U-EH\" syi=\"30001754\"/>\r\n    <row c=\"Centaur\" ci=\"20000669\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61000968\" se=\"0.0\" si=\"61000968\" sy=\"J5A-IX\" syi=\"30004589\"/>\r\n    <row c=\"BZ-10K\" ci=\"20000636\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000969\" se=\"0.0\" si=\"61000969\" sy=\"T-Q2DD\" syi=\"30004352\"/>\r\n    <row c=\"3TS-12\" ci=\"20000158\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61000970\" se=\"0.0\" si=\"61000970\" sy=\"B-VFDD\" syi=\"30001076\"/>\r\n    <row c=\"GP-GIU\" ci=\"20000634\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61000971\" se=\"0.0\" si=\"61000971\" sy=\"3-TD6L\" syi=\"30004336\"/>\r\n    <row c=\"8ET-D1\" ci=\"20000584\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61000972\" se=\"0.0\" si=\"61000972\" sy=\"QXQ-I6\" syi=\"30004002\"/>\r\n    <row c=\"E1L-UY\" ci=\"20000231\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000973\" se=\"0.0\" si=\"61000973\" sy=\"GTB-O4\" syi=\"30001573\"/>\r\n    <row c=\"4-QV2L\" ci=\"20000087\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61000974\" se=\"0.0\" si=\"61000974\" sy=\"XEN7-0\" syi=\"30000604\"/>\r\n    <row c=\"UTQ-BO\" ci=\"20000427\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000975\" se=\"0.0\" si=\"61000975\" sy=\"MXX5-9\" syi=\"30002913\"/>\r\n    <row c=\"Z-D6K5\" ci=\"20000425\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61000976\" se=\"0.0\" si=\"61000976\" sy=\"TXME-A\" syi=\"30002901\"/>\r\n    <row c=\"W-XBGF\" ci=\"20000131\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61000977\" se=\"0.0\" si=\"61000977\" sy=\"NJ4X-S\" syi=\"30000896\"/>\r\n    <row c=\"UR-HG4\" ci=\"20000114\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000978\" se=\"0.0\" si=\"61000978\" sy=\"0UBC-R\" syi=\"30000781\"/>\r\n    <row c=\"50-5UD\" ci=\"20000709\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #61000979\" se=\"0.0\" si=\"61000979\" sy=\"Q0G-L8\" syi=\"30004845\"/>\r\n    <row c=\"NPL-WH\" ci=\"20000263\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61000980\" se=\"0.0\" si=\"61000980\" sy=\"DJ-GBH\" syi=\"30001781\"/>\r\n    <row c=\"E1L-UY\" ci=\"20000231\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000981\" se=\"0.0\" si=\"61000981\" sy=\"EU-WFW\" syi=\"30001571\"/>\r\n    <row c=\"WXB-RY\" ci=\"20000755\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61000982\" se=\"0.0\" si=\"61000982\" sy=\"L-POLO\" syi=\"30005163\"/>\r\n    <row c=\"50-5UD\" ci=\"20000709\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #61000983\" se=\"0.0\" si=\"61000983\" sy=\"A-REKV\" syi=\"30004850\"/>\r\n    <row c=\"G3-MU3\" ci=\"20000612\" r=\"Cobalt Edge\" ri=\"10000053\" s=\"Conquerable Station #61000984\" se=\"0.0\" si=\"61000984\" sy=\"5HN-D6\" syi=\"30004185\"/>\r\n    <row c=\"U29-0S\" ci=\"20000030\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61000985\" se=\"0.0\" si=\"61000985\" sy=\"MC6O-F\" syi=\"30000209\"/>\r\n    <row c=\"0EA3-8\" ci=\"20000116\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000986\" se=\"0.0\" si=\"61000986\" sy=\"QTME-D\" syi=\"30000793\"/>\r\n    <row c=\"Balenne\" ci=\"20000591\" r=\"Cloud Ring\" ri=\"10000051\" s=\"Conquerable Station #61000987\" se=\"0.0\" si=\"61000987\" sy=\"O-ZXUV\" syi=\"30004044\"/>\r\n    <row c=\"3RU-10\" ci=\"20000470\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000988\" se=\"0.0\" si=\"61000988\" sy=\"IO-R2S\" syi=\"30003219\"/>\r\n    <row c=\"R-CL2W\" ci=\"20000123\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61000989\" se=\"0.0\" si=\"61000989\" sy=\"0-6VZ5\" syi=\"30000838\"/>\r\n    <row c=\"XFLN-F\" ci=\"20000536\" r=\"Fade\" ri=\"10000046\" s=\"Conquerable Station #61000990\" se=\"0.0\" si=\"61000990\" sy=\"DO6H-Q\" syi=\"30003681\"/>\r\n    <row c=\"1RG-GU\" ci=\"20000069\" r=\"Detorid\" ri=\"10000005\" s=\"Conquerable Station #61000991\" se=\"0.0\" si=\"61000991\" sy=\"2-X0PF\" syi=\"30000473\"/>\r\n    <row c=\"Z6T6-B\" ci=\"20000225\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61000992\" se=\"0.0\" si=\"61000992\" sy=\"HIK-MC\" syi=\"30001528\"/>\r\n    <row c=\"XOV7-5\" ci=\"20000721\" r=\"Period Basis\" ri=\"10000063\" s=\"Conquerable Station #61000993\" se=\"0.0\" si=\"61000993\" sy=\"XZ-SKZ\" syi=\"30004932\"/>\r\n    <row c=\"Balenne\" ci=\"20000591\" r=\"Cloud Ring\" ri=\"10000051\" s=\"Conquerable Station #61000994\" se=\"0.0\" si=\"61000994\" sy=\"O-IVNH\" syi=\"30004049\"/>\r\n    <row c=\"EIX-HK\" ci=\"20000711\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #61000995\" se=\"0.0\" si=\"61000995\" sy=\"5-NZNW\" syi=\"30004865\"/>\r\n    <row c=\"Yrton\" ci=\"20000590\" r=\"Cloud Ring\" ri=\"10000051\" s=\"Conquerable Station #61000996\" se=\"0.0\" si=\"61000996\" sy=\"1-3HWZ\" syi=\"30004037\"/>\r\n    <row c=\"3RU-10\" ci=\"20000470\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61000997\" se=\"0.0\" si=\"61000997\" sy=\"HF-K3O\" syi=\"30003220\"/>\r\n    <row c=\"U8-CWA\" ci=\"20000290\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61000998\" se=\"0.0\" si=\"61000998\" sy=\"N-H32Y\" syi=\"30001974\"/>\r\n    <row c=\"FQ-COP\" ci=\"20000094\" r=\"Cache\" ri=\"10000007\" s=\"Conquerable Station #61000999\" se=\"0.0\" si=\"61000999\" sy=\"8-VC6H\" syi=\"30000648\"/>\r\n    <row c=\"RFY-QB\" ci=\"20000431\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61001000\" se=\"0.0\" si=\"61001000\" sy=\"X3-PBC\" syi=\"30002943\"/>\r\n    <row c=\"O-EOI9\" ci=\"20000533\" r=\"Tenal\" ri=\"10000045\" s=\"Conquerable Station #61001001\" se=\"0.0\" si=\"61001001\" sy=\"W0X-MG\" syi=\"30003660\"/>\r\n    <row c=\"E6EO-H\" ci=\"20000159\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61001002\" se=\"0.0\" si=\"61001002\" sy=\"RIU-GC\" syi=\"30001090\"/>\r\n    <row c=\"NNLX-K\" ci=\"20000180\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61001003\" se=\"0.0\" si=\"61001003\" sy=\"S25C-K\" syi=\"30001237\"/>\r\n    <row c=\"C-ULS4\" ci=\"20000637\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61001004\" se=\"0.0\" si=\"61001004\" sy=\"A-G1FM\" syi=\"30004359\"/>\r\n    <row c=\"YX-LYK\" ci=\"20000693\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61001005\" se=\"0.0\" si=\"61001005\" sy=\"1-SMEB\" syi=\"30004738\"/>\r\n    <row c=\"NNLX-K\" ci=\"20000180\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61001006\" se=\"0.0\" si=\"61001006\" sy=\"UL-7I8\" syi=\"30001234\"/>\r\n    <row c=\"DMXN-3\" ci=\"20000033\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61001007\" se=\"0.0\" si=\"61001007\" sy=\"YXIB-I\" syi=\"30000231\"/>\r\n    <row c=\"Griffin\" ci=\"20000676\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61001008\" se=\"0.0\" si=\"61001008\" sy=\"G-UTHL\" syi=\"30004631\"/>\r\n    <row c=\"C9XB-L\" ci=\"20000269\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61001009\" se=\"0.0\" si=\"61001009\" sy=\"3-QNM4\" syi=\"30001820\"/>\r\n    <row c=\"2O-VY7\" ci=\"20000416\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"Conquerable Station #61001010\" se=\"0.0\" si=\"61001010\" sy=\"SG-3HY\" syi=\"30002833\"/>\r\n    <row c=\"F-V9QW\" ci=\"20000043\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61001011\" se=\"0.0\" si=\"61001011\" sy=\"Y-ZXIO\" syi=\"30000306\"/>\r\n    <row c=\"D-AWFI\" ci=\"20000432\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61001012\" se=\"0.0\" si=\"61001012\" sy=\"U-TJ7Y\" syi=\"30002951\"/>\r\n    <row c=\"N-U2LX\" ci=\"20000428\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61001013\" se=\"0.0\" si=\"61001013\" sy=\"33RB-O\" syi=\"30002919\"/>\r\n    <row c=\"S-B1E4\" ci=\"20000429\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61001014\" se=\"0.0\" si=\"61001014\" sy=\"8S28-3\" syi=\"30002930\"/>\r\n    <row c=\"NJU-QV\" ci=\"20000698\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61001015\" se=\"0.0\" si=\"61001015\" sy=\"ZXB-VC\" syi=\"30004777\"/>\r\n    <row c=\"T-HHHT\" ci=\"20000179\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61001016\" se=\"0.0\" si=\"61001016\" sy=\"G-AOTH\" syi=\"30001227\"/>\r\n    <row c=\"Hydra\" ci=\"20000677\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61001017\" se=\"0.0\" si=\"61001017\" sy=\"J-RQMF\" syi=\"30004637\"/>\r\n    <row c=\"UWRZ-2\" ci=\"20000537\" r=\"Fade\" ri=\"10000046\" s=\"Conquerable Station #61001018\" se=\"0.0\" si=\"61001018\" sy=\"VRH-H7\" syi=\"30003685\"/>\r\n    <row c=\"8ET-D1\" ci=\"20000584\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61001019\" se=\"0.0\" si=\"61001019\" sy=\"YF-6L1\" syi=\"30003997\"/>\r\n    <row c=\"A21H-Z\" ci=\"20000430\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61001020\" se=\"0.0\" si=\"61001020\" sy=\"0V0R-R\" syi=\"30002934\"/>\r\n    <row c=\"Hydra\" ci=\"20000677\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61001021\" se=\"0.0\" si=\"61001021\" sy=\"14YI-D\" syi=\"30004639\"/>\r\n    <row c=\"KUSW-P\" ci=\"20000453\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61001022\" se=\"0.0\" si=\"61001022\" sy=\"HHQ-M1\" syi=\"30003099\"/>\r\n    <row c=\"KR-XF4\" ci=\"20000364\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61001023\" se=\"0.0\" si=\"61001023\" sy=\"Atioth\" syi=\"30002489\"/>\r\n    <row c=\"OK-FEM\" ci=\"20000702\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61001024\" se=\"0.0\" si=\"61001024\" sy=\"YAW-7M\" syi=\"30004797\"/>\r\n    <row c=\"C45-9Y\" ci=\"20000647\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61001025\" se=\"0.0\" si=\"61001025\" sy=\"C-0ND2\" syi=\"30004434\"/>\r\n    <row c=\"F-I56R\" ci=\"20000701\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61001026\" se=\"0.0\" si=\"61001026\" sy=\"G-M5L3\" syi=\"30004793\"/>\r\n    <row c=\"XLL-Z7\" ci=\"20000589\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61001027\" se=\"0.0\" si=\"61001027\" sy=\"ES-Q0W\" syi=\"30004033\"/>\r\n    <row c=\"3RU-10\" ci=\"20000470\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61001028\" se=\"0.0\" si=\"61001028\" sy=\"QE2-FS\" syi=\"30003221\"/>\r\n    <row c=\"SG-CTQ\" ci=\"20000697\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61001029\" se=\"0.0\" si=\"61001029\" sy=\"NIDJ-K\" syi=\"30004769\"/>\r\n    <row c=\"F-I56R\" ci=\"20000701\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61001030\" se=\"0.0\" si=\"61001030\" sy=\"KBAK-I\" syi=\"30004794\"/>\r\n    <row c=\"YX-LYK\" ci=\"20000693\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61001031\" se=\"0.0\" si=\"61001031\" sy=\"M5-CGW\" syi=\"30004739\"/>\r\n    <row c=\"Q0-4FU\" ci=\"20000756\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61001032\" se=\"0.0\" si=\"61001032\" sy=\"VWES-Y\" syi=\"30005173\"/>\r\n    <row c=\"YX-LYK\" ci=\"20000693\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61001033\" se=\"0.0\" si=\"61001033\" sy=\"MJXW-P\" syi=\"30004743\"/>\r\n    <row c=\"F5-O9O\" ci=\"20000710\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #61001034\" se=\"0.0\" si=\"61001034\" sy=\"G1-0UI\" syi=\"30004854\"/>\r\n    <row c=\"F-RA63\" ci=\"20000583\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61001035\" se=\"0.0\" si=\"61001035\" sy=\"RF-CN3\" syi=\"30003994\"/>\r\n    <row c=\"Y-M7ML\" ci=\"20000100\" r=\"Scalding Pass\" ri=\"10000008\" s=\"Conquerable Station #61001036\" se=\"0.0\" si=\"61001036\" sy=\"ZFJH-T\" syi=\"30000688\"/>\r\n    <row c=\"T-RQ7S\" ci=\"20000643\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61001037\" se=\"0.0\" si=\"61001037\" sy=\"CH9L-K\" syi=\"30004401\"/>\r\n    <row c=\"XLL-Z7\" ci=\"20000589\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61001038\" se=\"0.0\" si=\"61001038\" sy=\"ZXJ-71\" syi=\"30004031\"/>\r\n    <row c=\"XLL-Z7\" ci=\"20000589\" r=\"Querious\" ri=\"10000050\" s=\"Conquerable Station #61001039\" se=\"0.0\" si=\"61001039\" sy=\"NU4-2G\" syi=\"30004035\"/>\r\n    <row c=\"D-YKXH\" ci=\"20000162\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61001040\" se=\"0.0\" si=\"61001040\" sy=\"PWPY-4\" syi=\"30001106\"/>\r\n    <row c=\"F-ZNNG\" ci=\"20000363\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61001041\" se=\"0.0\" si=\"61001041\" sy=\"UBX-CC\" syi=\"30002473\"/>\r\n    <row c=\"3RU-10\" ci=\"20000470\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61001042\" se=\"0.0\" si=\"61001042\" sy=\"7-UVMT\" syi=\"30003217\"/>\r\n    <row c=\"T-RQ7S\" ci=\"20000643\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61001043\" se=\"0.0\" si=\"61001043\" sy=\"9-B1DS\" syi=\"30004397\"/>\r\n    <row c=\"BI-NFW\" ci=\"20000639\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61001044\" se=\"0.0\" si=\"61001044\" sy=\"J52-BH\" syi=\"30004373\"/>\r\n    <row c=\"F-W6B4\" ci=\"20000469\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61001045\" se=\"0.0\" si=\"61001045\" sy=\"5-9L3H\" syi=\"30003214\"/>\r\n    <row c=\"D-YKXH\" ci=\"20000162\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61001046\" se=\"0.0\" si=\"61001046\" sy=\"W-XY4J\" syi=\"30001105\"/>\r\n    <row c=\"NNLX-K\" ci=\"20000180\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61001047\" se=\"0.0\" si=\"61001047\" sy=\"7MD-S1\" syi=\"30001232\"/>\r\n    <row c=\"7X-X1Y\" ci=\"20000538\" r=\"Fade\" ri=\"10000046\" s=\"Conquerable Station #61001048\" se=\"0.0\" si=\"61001048\" sy=\"E9KD-N\" syi=\"30003694\"/>\r\n    <row c=\"TL-FDN\" ci=\"20000122\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61001049\" se=\"0.0\" si=\"61001049\" sy=\"27-HP0\" syi=\"30000832\"/>\r\n    <row c=\"K-N3MD\" ci=\"20000315\" r=\"Immensea\" ri=\"10000025\" s=\"Conquerable Station #61001050\" se=\"0.0\" si=\"61001050\" sy=\"L-5JCJ\" syi=\"30002142\"/>\r\n    <row c=\"YCM-AI\" ci=\"20000106\" r=\"Scalding Pass\" ri=\"10000008\" s=\"Conquerable Station #61001051\" se=\"0.0\" si=\"61001051\" sy=\"Y5-E1U\" syi=\"30000729\"/>\r\n    <row c=\"QI1M-Q\" ci=\"20000101\" r=\"Scalding Pass\" ri=\"10000008\" s=\"Conquerable Station #61001052\" se=\"0.0\" si=\"61001052\" sy=\"F2-NXA\" syi=\"30000695\"/>\r\n    <row c=\"FDR-EQ\" ci=\"20000176\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61001053\" se=\"0.0\" si=\"61001053\" sy=\"3-SFWG\" syi=\"30001212\"/>\r\n    <row c=\"FDR-EQ\" ci=\"20000176\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61001054\" se=\"0.0\" si=\"61001054\" sy=\"UQ-PWD\" syi=\"30001208\"/>\r\n    <row c=\"F-W6B4\" ci=\"20000469\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61001055\" se=\"0.0\" si=\"61001055\" sy=\"1EO-OE\" syi=\"30003211\"/>\r\n    <row c=\"AJG-MV\" ci=\"20000461\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61001056\" se=\"0.0\" si=\"61001056\" sy=\"G-4H4C\" syi=\"30003161\"/>\r\n    <row c=\"4BZ-R3\" ci=\"20000541\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61001057\" se=\"0.0\" si=\"61001057\" sy=\"G7AQ-7\" syi=\"30003713\"/>\r\n    <row c=\"DMXN-3\" ci=\"20000033\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61001058\" se=\"0.0\" si=\"61001058\" sy=\"FA-DMO\" syi=\"30000233\"/>\r\n    <row c=\"Q-6LG1\" ci=\"20000552\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61001059\" se=\"0.0\" si=\"61001059\" sy=\"0B-HLZ\" syi=\"30003782\"/>\r\n    <row c=\"YUT3-U\" ci=\"20000036\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61001060\" se=\"0.0\" si=\"61001060\" sy=\"IFJ-EL\" syi=\"30000254\"/>\r\n    <row c=\"LIB-F9\" ci=\"20000642\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61001061\" se=\"0.0\" si=\"61001061\" sy=\"Y-1918\" syi=\"30004396\"/>\r\n    <row c=\"DMXN-3\" ci=\"20000033\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61001062\" se=\"0.0\" si=\"61001062\" sy=\"GEKJ-9\" syi=\"30000234\"/>\r\n    <row c=\"AJG-MV\" ci=\"20000461\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61001063\" se=\"0.0\" si=\"61001063\" sy=\"H-YHYM\" syi=\"30003160\"/>\r\n    <row c=\"AJG-MV\" ci=\"20000461\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61001064\" se=\"0.0\" si=\"61001064\" sy=\"Z-MO29\" syi=\"30003154\"/>\r\n    <row c=\"Taurus\" ci=\"20000675\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61001065\" se=\"0.0\" si=\"61001065\" sy=\"YRNJ-8\" syi=\"30004627\"/>\r\n    <row c=\"29V-1R\" ci=\"20000424\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61001066\" se=\"0.0\" si=\"61001066\" sy=\"AD-CBT\" syi=\"30002892\"/>\r\n    <row c=\"GP-GIU\" ci=\"20000634\" r=\"Branch\" ri=\"10000055\" s=\"Conquerable Station #61001067\" se=\"0.0\" si=\"61001067\" sy=\"NLPB-0\" syi=\"30004338\"/>\r\n    <row c=\"Q-2BI6\" ci=\"20000455\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61001068\" se=\"0.0\" si=\"61001068\" sy=\"D-FVI7\" syi=\"30003115\"/>\r\n    <row c=\"X-FHU3\" ci=\"20000530\" r=\"Tenal\" ri=\"10000045\" s=\"Conquerable Station #61001069\" se=\"0.0\" si=\"61001069\" sy=\"33CE-7\" syi=\"30003642\"/>\r\n    <row c=\"S-Q02B\" ci=\"20000476\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61001070\" se=\"0.0\" si=\"61001070\" sy=\"X-CYNC\" syi=\"30003259\"/>\r\n    <row c=\"RJ-1R7\" ci=\"20000365\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61001071\" se=\"0.0\" si=\"61001071\" sy=\"W-3BSU\" syi=\"30002497\"/>\r\n    <row c=\"WMP-OF\" ci=\"20000293\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61001072\" se=\"0.0\" si=\"61001072\" sy=\"DK-FXK\" syi=\"30001994\"/>\r\n    <row c=\"Y-LRWI\" ci=\"20000716\" r=\"Omist\" ri=\"10000062\" s=\"Conquerable Station #61001073\" se=\"0.0\" si=\"61001073\" sy=\"R2TJ-1\" syi=\"30004891\"/>\r\n    <row c=\"F-W6B4\" ci=\"20000469\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61001074\" se=\"0.0\" si=\"61001074\" sy=\"6U-MFQ\" syi=\"30003210\"/>\r\n    <row c=\"WQZ8-4\" ci=\"20000104\" r=\"Scalding Pass\" ri=\"10000008\" s=\"Conquerable Station #61001075\" se=\"0.0\" si=\"61001075\" sy=\"IAK-JW\" syi=\"30000709\"/>\r\n    <row c=\"09-4XW\" ci=\"20000527\" r=\"Tenal\" ri=\"10000045\" s=\"Conquerable Station #61001076\" se=\"0.0\" si=\"61001076\" sy=\"ZJ-QOO\" syi=\"30003619\"/>\r\n    <row c=\"Q-2BI6\" ci=\"20000455\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61001077\" se=\"0.0\" si=\"61001077\" sy=\"VL7-60\" syi=\"30003116\"/>\r\n    <row c=\"UK-MI6\" ci=\"20000038\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61001078\" se=\"0.0\" si=\"61001078\" sy=\"97-M96\" syi=\"30000271\"/>\r\n    <row c=\"U7-GIV\" ci=\"20000719\" r=\"Omist\" ri=\"10000062\" s=\"Conquerable Station #61001079\" se=\"0.0\" si=\"61001079\" sy=\"H90-C9\" syi=\"30004916\"/>\r\n    <row c=\"2Q-8WA\" ci=\"20000423\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"Conquerable Station #61001080\" se=\"0.0\" si=\"61001080\" sy=\"5-VFC6\" syi=\"30002883\"/>\r\n    <row c=\"U7-GIV\" ci=\"20000719\" r=\"Omist\" ri=\"10000062\" s=\"Conquerable Station #61001081\" se=\"0.0\" si=\"61001081\" sy=\"K-1OY3\" syi=\"30004912\"/>\r\n    <row c=\"8MJO-4\" ci=\"20000718\" r=\"Omist\" ri=\"10000062\" s=\"Conquerable Station #61001082\" se=\"0.0\" si=\"61001082\" sy=\"X-EHHD\" syi=\"30004907\"/>\r\n    <row c=\"Z-D6K5\" ci=\"20000425\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61001083\" se=\"0.0\" si=\"61001083\" sy=\"FMB-JP\" syi=\"30002898\"/>\r\n    <row c=\"L-H07K\" ci=\"20000648\" r=\"Feythabolis\" ri=\"10000056\" s=\"Conquerable Station #61001084\" se=\"0.0\" si=\"61001084\" sy=\"U-BXU9\" syi=\"30004436\"/>\r\n    <row c=\"Q0-4FU\" ci=\"20000756\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61001085\" se=\"0.0\" si=\"61001085\" sy=\"QKQ3-L\" syi=\"30005172\"/>\r\n    <row c=\"FDR-EQ\" ci=\"20000176\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61001086\" se=\"0.0\" si=\"61001086\" sy=\"X3FQ-W\" syi=\"30001211\"/>\r\n    <row c=\"UTQ-BO\" ci=\"20000427\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61001087\" se=\"0.0\" si=\"61001087\" sy=\"2O9G-D\" syi=\"30002909\"/>\r\n    <row c=\"D9DM-O\" ci=\"20000687\" r=\"Paragon Soul\" ri=\"10000059\" s=\"Conquerable Station #61001088\" se=\"0.0\" si=\"61001088\" sy=\"ZDYA-G\" syi=\"30004704\"/>\r\n    <row c=\"PFL-QY\" ci=\"20000160\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61001089\" se=\"0.0\" si=\"61001089\" sy=\"W5-205\" syi=\"30001095\"/>\r\n    <row c=\"F-W6B4\" ci=\"20000469\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61001090\" se=\"0.0\" si=\"61001090\" sy=\"1-HDQ4\" syi=\"30003215\"/>\r\n    <row c=\"0-YMZM\" ci=\"20000117\" r=\"Insmother\" ri=\"10000009\" s=\"Conquerable Station #61001091\" se=\"0.0\" si=\"61001091\" sy=\"0-VG7A\" syi=\"30000799\"/>\r\n    <row c=\"5ZR-29\" ci=\"20000082\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61001092\" se=\"0.0\" si=\"61001092\" sy=\"C-LTXS\" syi=\"30000567\"/>\r\n    <row c=\"Q-2BI6\" ci=\"20000455\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61001093\" se=\"0.0\" si=\"61001093\" sy=\"C-VZAK\" syi=\"30003113\"/>\r\n    <row c=\"Y-LRWI\" ci=\"20000716\" r=\"Omist\" ri=\"10000062\" s=\"Conquerable Station #61001094\" se=\"0.0\" si=\"61001094\" sy=\"73-JQO\" syi=\"30004893\"/>\r\n    <row c=\"KR-XF4\" ci=\"20000364\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61001095\" se=\"0.0\" si=\"61001095\" sy=\"P-6I0B\" syi=\"30002482\"/>\r\n    <row c=\"X-VN63\" ci=\"20000125\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61001096\" se=\"0.0\" si=\"61001096\" sy=\"F-749O\" syi=\"30000856\"/>\r\n    <row c=\"F-W6B4\" ci=\"20000469\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61001097\" se=\"0.0\" si=\"61001097\" sy=\"YQTK-R\" syi=\"30003212\"/>\r\n    <row c=\"ZW-BY5\" ci=\"20000172\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61001098\" se=\"0.0\" si=\"61001098\" sy=\"W9-DID\" syi=\"30001179\"/>\r\n    <row c=\"04-H4M\" ci=\"20000550\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61001099\" se=\"0.0\" si=\"61001099\" sy=\"18-GZM\" syi=\"30003768\"/>\r\n    <row c=\"VT-LHB\" ci=\"20000751\" r=\"Perrigen Falls\" ri=\"10000066\" s=\"Conquerable Station #61001100\" se=\"0.0\" si=\"61001100\" sy=\"JZ-UQC\" syi=\"30005135\"/>\r\n    <row c=\"Chimera\" ci=\"20000673\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61001101\" se=\"0.0\" si=\"61001101\" sy=\"NY6-FH\" syi=\"30004612\"/>\r\n    <row c=\"O5QG-M\" ci=\"20000715\" r=\"Omist\" ri=\"10000062\" s=\"Conquerable Station #61001102\" se=\"0.0\" si=\"61001102\" sy=\"C-WPWH\" syi=\"30004889\"/>\r\n    <row c=\"5YHF-H\" ci=\"20000037\" r=\"Vale of the Silent\" ri=\"10000003\" s=\"Conquerable Station #61001103\" se=\"0.0\" si=\"61001103\" sy=\"V-NL3K\" syi=\"30000264\"/>\r\n    <row c=\"AZBG-H\" ci=\"20000542\" r=\"Providence\" ri=\"10000047\" s=\"Conquerable Station #61001104\" se=\"0.0\" si=\"61001104\" sy=\"5IO8-U\" syi=\"30003720\"/>\r\n    <row c=\"U7-GIV\" ci=\"20000719\" r=\"Omist\" ri=\"10000062\" s=\"Conquerable Station #61001105\" se=\"0.0\" si=\"61001105\" sy=\"99-0GS\" syi=\"30004914\"/>\r\n    <row c=\"ZW-BY5\" ci=\"20000172\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61001106\" se=\"0.0\" si=\"61001106\" sy=\"GMLH-K\" syi=\"30001178\"/>\r\n    <row c=\"OY3-DM\" ci=\"20000726\" r=\"Period Basis\" ri=\"10000063\" s=\"Conquerable Station #61001107\" se=\"0.0\" si=\"61001107\" sy=\"1E-W5I\" syi=\"30004964\"/>\r\n    <row c=\"S-Q02B\" ci=\"20000476\" r=\"Oasa\" ri=\"10000040\" s=\"Conquerable Station #61001108\" se=\"0.0\" si=\"61001108\" sy=\"LA2-KV\" syi=\"30003255\"/>\r\n    <row c=\"Q-2BI6\" ci=\"20000455\" r=\"Esoteria\" ri=\"10000039\" s=\"Conquerable Station #61001109\" se=\"0.0\" si=\"61001109\" sy=\"FN-GFQ\" syi=\"30003118\"/>\r\n    <row c=\"X-VN63\" ci=\"20000125\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61001110\" se=\"0.0\" si=\"61001110\" sy=\"A-DDGY\" syi=\"30000852\"/>\r\n    <row c=\"3TS-12\" ci=\"20000158\" r=\"Malpais\" ri=\"10000013\" s=\"Conquerable Station #61001111\" se=\"0.0\" si=\"61001111\" sy=\"QCGG-Q\" syi=\"30001080\"/>\r\n    <row c=\"BZZ-1U\" ci=\"20000712\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #61001112\" se=\"0.0\" si=\"61001112\" sy=\"T6GY-Y\" syi=\"30004870\"/>\r\n    <row c=\"ZQ7-QS\" ci=\"20000707\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #61001113\" se=\"0.0\" si=\"61001113\" sy=\"JK-Q77\" syi=\"30004836\"/>\r\n    <row c=\"Mermaid\" ci=\"20000680\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61001114\" se=\"0.0\" si=\"61001114\" sy=\"006-L3\" syi=\"30004656\"/>\r\n    <row c=\"U7-GIV\" ci=\"20000719\" r=\"Omist\" ri=\"10000062\" s=\"Conquerable Station #61001115\" se=\"0.0\" si=\"61001115\" sy=\"NZPK-G\" syi=\"30004911\"/>\r\n    <row c=\"MDM8-J\" ci=\"20000289\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61001116\" se=\"0.0\" si=\"61001116\" sy=\"D7T-C0\" syi=\"30001968\"/>\r\n    <row c=\"EIX-HK\" ci=\"20000711\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #61001117\" se=\"0.0\" si=\"61001117\" sy=\"8-BEW8\" syi=\"30004862\"/>\r\n    <row c=\"AGI1-F\" ci=\"20000261\" r=\"Outer Passage\" ri=\"10000021\" s=\"Conquerable Station #61001118\" se=\"0.0\" si=\"61001118\" sy=\"QFRV-2\" syi=\"30001766\"/>\r\n    <row c=\"NOK-FZ\" ci=\"20000724\" r=\"Period Basis\" ri=\"10000063\" s=\"Conquerable Station #61001119\" se=\"0.0\" si=\"61001119\" sy=\"0OTX-J\" syi=\"30004950\"/>\r\n    <row c=\"GU-JZ1\" ci=\"20000088\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61001120\" se=\"0.0\" si=\"61001120\" sy=\"JEQG-7\" syi=\"30000608\"/>\r\n    <row c=\"ZQ7-QS\" ci=\"20000707\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #61001121\" se=\"0.0\" si=\"61001121\" sy=\"ABE-M2\" syi=\"30004831\"/>\r\n    <row c=\"GU-JZ1\" ci=\"20000088\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61001122\" se=\"0.0\" si=\"61001122\" sy=\"5NQI-E\" syi=\"30000609\"/>\r\n    <row c=\"5ZR-29\" ci=\"20000082\" r=\"Wicked Creek\" ri=\"10000006\" s=\"Conquerable Station #61001123\" se=\"0.0\" si=\"61001123\" sy=\"SJJ-4F\" syi=\"30000571\"/>\r\n    <row c=\"ZYL-FT\" ci=\"20000360\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61001124\" se=\"0.0\" si=\"61001124\" sy=\"0-GZX9\" syi=\"30002454\"/>\r\n    <row c=\"78-6RI\" ci=\"20000415\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"Conquerable Station #61001125\" se=\"0.0\" si=\"61001125\" sy=\"BVRQ-O\" syi=\"30002828\"/>\r\n    <row c=\"FDR-EQ\" ci=\"20000176\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61001126\" se=\"0.0\" si=\"61001126\" sy=\"CB4-Q2\" syi=\"30001205\"/>\r\n    <row c=\"YS-GOP\" ci=\"20000292\" r=\"Pure Blind\" ri=\"10000023\" s=\"Conquerable Station #61001127\" se=\"0.0\" si=\"61001127\" sy=\"93PI-4\" syi=\"30001990\"/>\r\n    <row c=\"S-B1E4\" ci=\"20000429\" r=\"Deklein\" ri=\"10000035\" s=\"Conquerable Station #61001128\" se=\"0.0\" si=\"61001128\" sy=\"LT-DRO\" syi=\"30002928\"/>\r\n    <row c=\"ZYL-FT\" ci=\"20000360\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61001129\" se=\"0.0\" si=\"61001129\" sy=\"KR-V6G\" syi=\"30002452\"/>\r\n    <row c=\"YX-LYK\" ci=\"20000693\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61001130\" se=\"0.0\" si=\"61001130\" sy=\"ZA9-PY\" syi=\"30004741\"/>\r\n    <row c=\"5Z0Y-S\" ci=\"20000717\" r=\"Omist\" ri=\"10000062\" s=\"Conquerable Station #61001131\" se=\"0.0\" si=\"61001131\" sy=\"MJ-X5V\" syi=\"30004899\"/>\r\n    <row c=\"ZYL-FT\" ci=\"20000360\" r=\"Geminate\" ri=\"10000029\" s=\"Conquerable Station #61001132\" se=\"0.0\" si=\"61001132\" sy=\"4NGK-F\" syi=\"30002456\"/>\r\n    <row c=\"Y-LRWI\" ci=\"20000716\" r=\"Omist\" ri=\"10000062\" s=\"Conquerable Station #61001133\" se=\"0.0\" si=\"61001133\" sy=\"VULA-I\" syi=\"30004890\"/>\r\n    <row c=\"78-6RI\" ci=\"20000415\" r=\"The Kalevala Expanse\" ri=\"10000034\" s=\"Conquerable Station #61001134\" se=\"0.0\" si=\"61001134\" sy=\"SH6X-F\" syi=\"30002831\"/>\r\n    <row c=\"W-4U1E\" ci=\"20000695\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61001135\" se=\"0.0\" si=\"61001135\" sy=\"W-KQPI\" syi=\"30004753\"/>\r\n    <row c=\"Pegasus\" ci=\"20000665\" r=\"Fountain\" ri=\"10000058\" s=\"Conquerable Station #61001136\" se=\"0.0\" si=\"61001136\" sy=\"A8-XBW\" syi=\"30004558\"/>\r\n    <row c=\"FDR-EQ\" ci=\"20000176\" r=\"Catch\" ri=\"10000014\" s=\"Conquerable Station #61001137\" se=\"0.0\" si=\"61001137\" sy=\"CBL-XP\" syi=\"30001206\"/>\r\n    <row c=\"E-IFSA\" ci=\"20000706\" r=\"Tenerifis\" ri=\"10000061\" s=\"Conquerable Station #61001138\" se=\"0.0\" si=\"61001138\" sy=\"9-MJVQ\" syi=\"30004826\"/>\r\n    <row c=\"03C-SU\" ci=\"20000130\" r=\"Tribute\" ri=\"10000010\" s=\"Conquerable Station #61001139\" se=\"0.0\" si=\"61001139\" sy=\"C8VC-S\" syi=\"30000892\"/>\r\n    <row c=\"1RG-GU\" ci=\"20000069\" r=\"Detorid\" ri=\"10000005\" s=\"Conquerable Station #61001140\" se=\"0.0\" si=\"61001140\" sy=\"1-PGSG\" syi=\"30000474\"/>\r\n    <row c=\"O-EIMK\" ci=\"20000696\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61001141\" se=\"0.0\" si=\"61001141\" sy=\"1DQ1-A\" syi=\"30004759\"/>\r\n    <row c=\"05M-I1\" ci=\"20000382\" r=\"Impass\" ri=\"10000031\" s=\"Conquerable Station #61001142\" se=\"0.0\" si=\"61001142\" sy=\"A1BK-A\" syi=\"30002611\"/>\r\n    <row c=\"SPNZ-Z\" ci=\"20000692\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61001143\" se=\"0.0\" si=\"61001143\" sy=\"23G-XC\" syi=\"30004734\"/>\r\n    <row c=\"SPNZ-Z\" ci=\"20000692\" r=\"Delve\" ri=\"10000060\" s=\"Conquerable Station #61001144\" se=\"0.0\" si=\"61001144\" sy=\"PDE-U3\" syi=\"30004733\"/>\r\n    <row c=\"4-0VL9\" ci=\"20000229\" r=\"The Spire\" ri=\"10000018\" s=\"Conquerable Station #61001145\" se=\"0.0\" si=\"61001145\" sy=\"Y8K-5B\" syi=\"30001559\"/>\r\n    <row c=\"51ZT-6\" ci=\"20000096\" r=\"Scalding Pass\" ri=\"10000008\" s=\"Conquerable Station #61001146\" se=\"0.0\" si=\"61001146\" sy=\"S-E6ES\" syi=\"30000657\"/>\r\n</rows>\r\n"
  },
  {
    "path": "data/npccorporation.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\r\n<rows>\r\n    <!--Generated from Eve Online Toolkit. ©CCP hf. All rights reserved. Used with permission.-->\r\n    <row c=\"true\" corporation=\"CBD Corporation\" corporationid=\"1000002\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Prompt Delivery\" corporationid=\"1000003\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Ytiri\" corporationid=\"1000004\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Hyasyoda Corporation\" corporationid=\"1000005\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Deep Core Mining Inc.\" corporationid=\"1000006\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Poksu Mineral Group\" corporationid=\"1000007\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Minedrill\" corporationid=\"1000008\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Caldari Provisions\" corporationid=\"1000009\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Kaalakiota Corporation\" corporationid=\"1000010\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Wiyrkomi Corporation\" corporationid=\"1000011\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Top Down\" corporationid=\"1000012\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Rapid Assembly\" corporationid=\"1000013\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Perkone\" corporationid=\"1000014\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Caldari Steel\" corporationid=\"1000015\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Zainou\" corporationid=\"1000016\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Nugoeihuvi Corporation\" corporationid=\"1000017\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Echelon Entertainment\" corporationid=\"1000018\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Ishukone Corporation\" corporationid=\"1000019\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Lai Dai Corporation\" corporationid=\"1000020\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Zero-G Research Firm\" corporationid=\"1000021\" faction=\"EverMore\" factionid=\"500013\"/>\r\n    <row c=\"true\" corporation=\"Propel Dynamics\" corporationid=\"1000022\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Expert Distribution\" corporationid=\"1000023\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"CBD Sell Division\" corporationid=\"1000024\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Sukuuvestaa Corporation\" corporationid=\"1000025\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Caldari Constructions\" corporationid=\"1000026\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Expert Housing\" corporationid=\"1000027\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Caldari Funds Unlimited\" corporationid=\"1000028\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"State and Region Bank\" corporationid=\"1000029\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Modern Finances\" corporationid=\"1000030\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Chief Executive Panel\" corporationid=\"1000031\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Mercantile Club\" corporationid=\"1000032\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Caldari Business Tribunal\" corporationid=\"1000033\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"House of Records\" corporationid=\"1000034\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Caldari Navy\" corporationid=\"1000035\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Internal Security\" corporationid=\"1000036\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Lai Dai Protection Service\" corporationid=\"1000037\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Ishukone Watch\" corporationid=\"1000038\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Home Guard\" corporationid=\"1000039\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Peace and Order Unit\" corporationid=\"1000040\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Spacelane Patrol\" corporationid=\"1000041\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Wiyrkomi Peace Corps\" corporationid=\"1000042\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Corporate Police Force\" corporationid=\"1000043\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"School of Applied Knowledge\" corporationid=\"1000044\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Science and Trade Institute\" corporationid=\"1000045\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Sebiestor Tribe\" corporationid=\"1000046\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Krusual Tribe\" corporationid=\"1000047\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Vherokior Tribe\" corporationid=\"1000048\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Brutor Tribe\" corporationid=\"1000049\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Republic Parliament\" corporationid=\"1000050\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Republic Fleet\" corporationid=\"1000051\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Republic Justice Department\" corporationid=\"1000052\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Urban Management\" corporationid=\"1000053\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Republic Security Services\" corporationid=\"1000054\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Minmatar Mining Corporation\" corporationid=\"1000055\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Core Complexion Inc.\" corporationid=\"1000056\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Boundless Creation\" corporationid=\"1000057\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Eifyr and Co.\" corporationid=\"1000058\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Six Kin Development\" corporationid=\"1000059\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Native Freshfood\" corporationid=\"1000060\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Freedom Extension\" corporationid=\"1000061\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"The Leisure Group\" corporationid=\"1000062\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Amarr Constructions\" corporationid=\"1000063\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Carthum Conglomerate\" corporationid=\"1000064\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Imperial Armaments\" corporationid=\"1000065\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Viziam\" corporationid=\"1000066\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Zoar and Sons\" corporationid=\"1000067\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Noble Appliances\" corporationid=\"1000068\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Ducia Foundry\" corporationid=\"1000069\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"HZO Refinery\" corporationid=\"1000070\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Inherent Implants\" corporationid=\"1000071\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Imperial Shipment\" corporationid=\"1000072\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Amarr Certified News\" corporationid=\"1000073\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Joint Harvesting\" corporationid=\"1000074\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Nurtura\" corporationid=\"1000075\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Further Foodstuffs\" corporationid=\"1000076\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Royal Amarr Institute\" corporationid=\"1000077\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Imperial Chancellor\" corporationid=\"1000078\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Amarr Civil Service\" corporationid=\"1000079\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Ministry of War\" corporationid=\"1000080\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Ministry of Assessment\" corporationid=\"1000081\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Ministry of Internal Order\" corporationid=\"1000082\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Amarr Trade Registry\" corporationid=\"1000083\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Amarr Navy\" corporationid=\"1000084\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Court Chamberlain\" corporationid=\"1000085\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Emperor Family\" corporationid=\"1000086\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Kador Family\" corporationid=\"1000087\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Sarum Family\" corporationid=\"1000088\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Kor-Azor Family\" corporationid=\"1000089\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Ardishapur Family\" corporationid=\"1000090\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Tash-Murkon Family\" corporationid=\"1000091\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Civic Court\" corporationid=\"1000092\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Theology Council\" corporationid=\"1000093\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"TransStellar Shipping\" corporationid=\"1000094\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Federal Freight\" corporationid=\"1000095\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Inner Zone Shipping\" corporationid=\"1000096\" faction=\"EverMore\" factionid=\"500013\"/>\r\n    <row c=\"true\" corporation=\"Material Acquisition\" corporationid=\"1000097\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Astral Mining Inc.\" corporationid=\"1000098\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Combined Harvest\" corporationid=\"1000099\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Quafe Company\" corporationid=\"1000100\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"CreoDron\" corporationid=\"1000101\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Roden Shipyards\" corporationid=\"1000102\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Allotek Industries\" corporationid=\"1000103\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Poteque Pharmaceuticals\" corporationid=\"1000104\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Impetus\" corporationid=\"1000105\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Egonics Inc.\" corporationid=\"1000106\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"The Scope\" corporationid=\"1000107\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Chemal Tech\" corporationid=\"1000108\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Duvolle Laboratories\" corporationid=\"1000109\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"FedMart\" corporationid=\"1000110\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Aliastra\" corporationid=\"1000111\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Bank of Luminaire\" corporationid=\"1000112\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Pend Insurance\" corporationid=\"1000113\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Garoun Investment Bank\" corporationid=\"1000114\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"University of Caille\" corporationid=\"1000115\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"President\" corporationid=\"1000116\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Senate\" corporationid=\"1000117\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Supreme Court\" corporationid=\"1000118\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Federal Administration\" corporationid=\"1000119\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Federation Navy\" corporationid=\"1000120\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Federal Intelligence Office\" corporationid=\"1000121\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Federation Customs\" corporationid=\"1000122\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Ammatar Fleet\" corporationid=\"1000123\" faction=\"Ammatar Mandate\" factionid=\"500007\"/>\r\n    <row cc=\"true\" corporation=\"Archangels\" corporationid=\"1000124\" faction=\"Angel Cartel\" factionid=\"500011\"/>\r\n    <row c=\"true\" corporation=\"CONCORD\" corporationid=\"1000125\" faction=\"CONCORD Assembly\" factionid=\"500006\"/>\r\n    <row c=\"true\" corporation=\"Ammatar Consulate\" corporationid=\"1000126\" faction=\"Ammatar Mandate\" factionid=\"500007\"/>\r\n    <row cc=\"true\" corporation=\"Guristas\" corporationid=\"1000127\" faction=\"Guristas Pirates\" factionid=\"500010\"/>\r\n    <row c=\"true\" corporation=\"Mordu's Legion\" corporationid=\"1000128\" faction=\"Mordu's Legion Command\" factionid=\"500018\"/>\r\n    <row c=\"true\" corporation=\"Outer Ring Excavations\" corporationid=\"1000129\" faction=\"ORE\" factionid=\"500014\"/>\r\n    <row c=\"true\" corporation=\"Sisters of EVE\" corporationid=\"1000130\" faction=\"Servant Sisters of EVE\" factionid=\"500016\"/>\r\n    <row c=\"true\" corporation=\"Society of Conscious Thought\" corporationid=\"1000131\" faction=\"The Society of Conscious Thought\" factionid=\"500017\"/>\r\n    <row c=\"true\" corporation=\"Secure Commerce Commission\" corporationid=\"1000132\" faction=\"CONCORD Assembly\" factionid=\"500006\"/>\r\n    <row cc=\"true\" corporation=\"Salvation Angels\" corporationid=\"1000133\" faction=\"Angel Cartel\" factionid=\"500011\"/>\r\n    <row cc=\"true\" corporation=\"Blood Raiders\" corporationid=\"1000134\" faction=\"Blood Raider Covenant\" factionid=\"500012\"/>\r\n    <row cc=\"true\" corporation=\"Serpentis Corporation\" corporationid=\"1000135\" faction=\"Serpentis\" factionid=\"500020\"/>\r\n    <row cc=\"true\" corporation=\"Guardian Angels\" corporationid=\"1000136\" faction=\"Angel Cartel\" factionid=\"500011\"/>\r\n    <row c=\"true\" corporation=\"DED\" corporationid=\"1000137\" faction=\"CONCORD Assembly\" factionid=\"500006\"/>\r\n    <row cc=\"true\" corporation=\"Dominations\" corporationid=\"1000138\" faction=\"Angel Cartel\" factionid=\"500011\"/>\r\n    <row c=\"true\" corporation=\"Food Relief\" corporationid=\"1000139\" faction=\"Servant Sisters of EVE\" factionid=\"500016\"/>\r\n    <row c=\"true\" corporation=\"Genolution\" corporationid=\"1000140\" faction=\"The Society of Conscious Thought\" factionid=\"500017\"/>\r\n    <row cc=\"true\" corporation=\"Guristas Production\" corporationid=\"1000141\" faction=\"Guristas Pirates\" factionid=\"500010\"/>\r\n    <row c=\"true\" corporation=\"Impro\" corporationid=\"1000142\" faction=\"The Society of Conscious Thought\" factionid=\"500017\"/>\r\n    <row c=\"true\" corporation=\"Inner Circle\" corporationid=\"1000143\" faction=\"CONCORD Assembly\" factionid=\"500006\"/>\r\n    <row c=\"true\" corporation=\"Intaki Bank\" corporationid=\"1000144\" faction=\"The Syndicate\" factionid=\"500009\"/>\r\n    <row c=\"true\" corporation=\"Intaki Commerce\" corporationid=\"1000145\" faction=\"The Syndicate\" factionid=\"500009\"/>\r\n    <row c=\"true\" corporation=\"Intaki Space Police\" corporationid=\"1000146\" faction=\"The Syndicate\" factionid=\"500009\"/>\r\n    <row c=\"true\" corporation=\"Intaki Syndicate\" corporationid=\"1000147\" faction=\"The Syndicate\" factionid=\"500009\"/>\r\n    <row c=\"true\" corporation=\"InterBus\" corporationid=\"1000148\" faction=\"EverMore\" factionid=\"500013\"/>\r\n    <row c=\"true\" corporation=\"Jove Navy\" corporationid=\"1000149\" faction=\"Jove Empire\" factionid=\"500005\"/>\r\n    <row c=\"true\" corporation=\"Jovian Directorate\" corporationid=\"1000150\" faction=\"Jove Empire\" factionid=\"500005\"/>\r\n    <row c=\"true\" corporation=\"Khanid Innovation\" corporationid=\"1000151\" faction=\"Khanid Kingdom\" factionid=\"500008\"/>\r\n    <row c=\"true\" corporation=\"Khanid Transport\" corporationid=\"1000152\" faction=\"Khanid Kingdom\" factionid=\"500008\"/>\r\n    <row c=\"true\" corporation=\"Khanid Works\" corporationid=\"1000153\" faction=\"Khanid Kingdom\" factionid=\"500008\"/>\r\n    <row c=\"true\" corporation=\"Nefantar Miner Association\" corporationid=\"1000154\" faction=\"Ammatar Mandate\" factionid=\"500007\"/>\r\n    <row c=\"true\" corporation=\"Prosper\" corporationid=\"1000155\" faction=\"Jove Empire\" factionid=\"500005\"/>\r\n    <row c=\"true\" corporation=\"Royal Khanid Navy\" corporationid=\"1000156\" faction=\"Khanid Kingdom\" factionid=\"500008\"/>\r\n    <row cc=\"true\" corporation=\"Serpentis Inquest\" corporationid=\"1000157\" faction=\"Serpentis\" factionid=\"500020\"/>\r\n    <row c=\"true\" corporation=\"Shapeset\" corporationid=\"1000158\" faction=\"Jove Empire\" factionid=\"500005\"/>\r\n    <row c=\"true\" corporation=\"The Sanctuary\" corporationid=\"1000159\" faction=\"Servant Sisters of EVE\" factionid=\"500016\"/>\r\n    <row c=\"true\" corporation=\"Thukker Mix\" corporationid=\"1000160\" faction=\"Thukker Tribe\" factionid=\"500015\"/>\r\n    <row cc=\"true\" corporation=\"True Creations\" corporationid=\"1000161\" faction=\"Sansha's Nation\" factionid=\"500019\"/>\r\n    <row cc=\"true\" corporation=\"True Power\" corporationid=\"1000162\" faction=\"Sansha's Nation\" factionid=\"500019\"/>\r\n    <row c=\"true\" corporation=\"Trust Partners\" corporationid=\"1000163\" faction=\"Thukker Tribe\" factionid=\"500015\"/>\r\n    <row c=\"true\" corporation=\"X-Sense\" corporationid=\"1000164\" faction=\"The Society of Conscious Thought\" factionid=\"500017\"/>\r\n    <row c=\"true\" corporation=\"Hedion University\" corporationid=\"1000165\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Imperial Academy\" corporationid=\"1000166\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"State War Academy\" corporationid=\"1000167\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Federal Navy Academy\" corporationid=\"1000168\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Center for Advanced Studies\" corporationid=\"1000169\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Republic Military School\" corporationid=\"1000170\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Republic University\" corporationid=\"1000171\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Pator Tech School\" corporationid=\"1000172\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Material Institute\" corporationid=\"1000177\" faction=\"Jove Empire\" factionid=\"500005\"/>\r\n    <row c=\"true\" corporation=\"Academy of Aggressive Behaviour\" corporationid=\"1000178\" faction=\"Jove Empire\" factionid=\"500005\"/>\r\n    <row c=\"true\" corporation=\"24th Imperial Crusade\" corporationid=\"1000179\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"State Protectorate\" corporationid=\"1000180\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Federal Defense Union\" corporationid=\"1000181\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Tribal Liberation Force\" corporationid=\"1000182\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row cc=\"true\" corporation=\"Arkombine\" corporationid=\"1000193\" faction=\"Deathless Circle\" factionid=\"500029\"/>\r\n    <row c=\"true\" corporation=\"Imperial Guard\" corporationid=\"1000198\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Amarr Templars\" corporationid=\"1000205\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Royal Uhlans\" corporationid=\"1000206\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Bragian Order\" corporationid=\"1000207\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Zumari Force Projection\" corporationid=\"1000208\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Osmon Surveillance\" corporationid=\"1000213\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Seituoda Taskforce Command\" corporationid=\"1000214\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Algintal Core\" corporationid=\"1000215\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Crux Special Tasks Group\" corporationid=\"1000216\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Villore Sec Ops\" corporationid=\"1000217\" faction=\"EverMore\" factionid=\"500013\"/>\r\n    <row c=\"true\" corporation=\"Circle of Huskarl\" corporationid=\"1000218\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Tronhadar Free Guard\" corporationid=\"1000219\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Sanmatar Kelkoons\" corporationid=\"1000220\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Ostrakon Agency\" corporationid=\"1000222\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Fraternity of St. Venefice\" corporationid=\"1000223\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Shining Flame\" corporationid=\"1000224\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Paladin Survey Force\" corporationid=\"1000225\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Ametat Security\" corporationid=\"1000226\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Company of Marcher Lords\" corporationid=\"1000227\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Tal-Romon Legion\" corporationid=\"1000228\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Kameira Lodge\" corporationid=\"1000229\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Red and Silver Hand\" corporationid=\"1000230\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Holdfast Syndicate\" corporationid=\"1000231\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"Kinsho Swords\" corporationid=\"1000232\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Expert Intervention\" corporationid=\"1000233\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Onikanabo Brigade\" corporationid=\"1000234\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Kirkinen Risk Control\" corporationid=\"1000235\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Storm Wind Strikeforce\" corporationid=\"1000236\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Commando Perkone\" corporationid=\"1000237\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Isuuaya Tactical\" corporationid=\"1000238\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Intara Direct Action\" corporationid=\"1000239\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Ikomari-Onu Enforcement\" corporationid=\"1000240\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Namtar Elite\" corporationid=\"1000243\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Mannar Focused Warfare\" corporationid=\"1000244\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Resheph Interstellar Strategy\" corporationid=\"1000245\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Sinq Laison Gendarmes\" corporationid=\"1000246\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Chatelain Rapid Response\" corporationid=\"1000247\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Edimmu Warfighters\" corporationid=\"1000248\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Kang Lo Directorate\" corporationid=\"1000249\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Condotta Rouvenor\" corporationid=\"1000250\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Brutor Vanguard\" corporationid=\"1000251\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Vherokior Combat Logistics\" corporationid=\"1000252\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Krullefor Organization\" corporationid=\"1000253\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Mikramurka Shock Troop\" corporationid=\"1000254\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Eyniletti Rangers\" corporationid=\"1000255\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Sebiestor Field Sappers\" corporationid=\"1000256\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Forty-Nine Fedayeen\" corporationid=\"1000257\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Seykal Expeditionary Group\" corporationid=\"1000258\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Krusual Covert Operators\" corporationid=\"1000259\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"State Peacekeepers\" corporationid=\"1000261\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Federal Marines\" corporationid=\"1000262\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Republic Command\" corporationid=\"1000263\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Outer Ring Development\" corporationid=\"1000270\" faction=\"ORE\" factionid=\"500014\"/>\r\n    <row c=\"true\" corporation=\"Outer Ring Prospecting\" corporationid=\"1000271\" faction=\"ORE\" factionid=\"500014\"/>\r\n    <row c=\"true\" corporation=\"Vigilant Tyrannos\" corporationid=\"1000274\" faction=\"Drifters\" factionid=\"500024\"/>\r\n    <row c=\"true\" corporation=\"ORE Technologies\" corporationid=\"1000276\" faction=\"ORE\" factionid=\"500014\"/>\r\n    <row c=\"true\" corporation=\"Frostline Laboratories\" corporationid=\"1000277\" faction=\"ORE\" factionid=\"500014\"/>\r\n    <row c=\"true\" corporation=\"Project Discovery\" corporationid=\"1000279\" faction=\"CONCORD Assembly\" factionid=\"500006\"/>\r\n    <row c=\"true\" corporation=\"CONCORD Aerospace\" corporationid=\"1000280\" faction=\"CONCORD Assembly\" factionid=\"500006\"/>\r\n    <row c=\"true\" corporation=\"Independent Gaming Commission\" corporationid=\"1000281\" faction=\"CONCORD Assembly\" factionid=\"500006\"/>\r\n    <row c=\"true\" corporation=\"Directive Intelligence Agency\" corporationid=\"1000282\" faction=\"CONCORD Assembly\" factionid=\"500006\"/>\r\n    <row c=\"true\" corporation=\"Imperial War Reserves\" corporationid=\"1000283\" faction=\"Amarr Empire\" factionid=\"500003\"/>\r\n    <row c=\"true\" corporation=\"State Military Stockpile\" corporationid=\"1000284\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Federal Strategic Materiel\" corporationid=\"1000285\" faction=\"Gallente Federation\" factionid=\"500004\"/>\r\n    <row c=\"true\" corporation=\"Republic Fleet Ordnance\" corporationid=\"1000286\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Infested Regions Hiveminds\" corporationid=\"1000287\" faction=\"Rogue Drones\" factionid=\"500025\"/>\r\n    <row c=\"true\" corporation=\"Navka Overminds\" corporationid=\"1000288\" faction=\"Triglavian Collective\" factionid=\"500026\"/>\r\n    <row c=\"true\" corporation=\"Unshackled Overminds\" corporationid=\"1000289\" faction=\"Rogue Drones\" factionid=\"500025\"/>\r\n    <row c=\"true\" corporation=\"Veles Clade\" corporationid=\"1000292\" faction=\"Triglavian Collective\" factionid=\"500026\"/>\r\n    <row c=\"true\" corporation=\"Perun Clade\" corporationid=\"1000293\" faction=\"Triglavian Collective\" factionid=\"500026\"/>\r\n    <row c=\"true\" corporation=\"Svarog Clade\" corporationid=\"1000294\" faction=\"Triglavian Collective\" factionid=\"500026\"/>\r\n    <row c=\"true\" corporation=\"AEGIS\" corporationid=\"1000297\" faction=\"EDENCOM\" factionid=\"500027\"/>\r\n    <row c=\"true\" corporation=\"The Convocation of Triglav\" corporationid=\"1000298\" faction=\"Triglavian Collective\" factionid=\"500026\"/>\r\n    <row c=\"true\" corporation=\"PKN Cryptographic\" corporationid=\"1000299\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"PKN Interstellar\" corporationid=\"1000300\" faction=\"Caldari State\" factionid=\"500001\"/>\r\n    <row c=\"true\" corporation=\"Thukker Council\" corporationid=\"1000410\" faction=\"Thukker Tribe\" factionid=\"500015\"/>\r\n    <row c=\"true\" corporation=\"Nefantar Council\" corporationid=\"1000411\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"Starkmanir Council\" corporationid=\"1000412\" faction=\"Minmatar Republic\" factionid=\"500002\"/>\r\n    <row c=\"true\" corporation=\"AIR Laboratories\" corporationid=\"1000413\" faction=\"Association for Interdisciplinary Research\" factionid=\"500028\"/>\r\n    <row c=\"true\" corporation=\"Paragon\" corporationid=\"1000419\" faction=\"EverMore\" factionid=\"500013\"/>\r\n    <row c=\"true\" corporation=\"Cromeaux Inc\" corporationid=\"1000425\" faction=\"EverMore\" factionid=\"500013\"/>\r\n    <row c=\"true\" corporation=\"Adaptive Provisioning\" corporationid=\"1000426\" faction=\"EverMore\" factionid=\"500013\"/>\r\n    <row c=\"true\" corporation=\"Interplanetary Media Network\" corporationid=\"1000427\" faction=\"EverMore\" factionid=\"500013\"/>\r\n    <row c=\"true\" corporation=\"Verity Enhancements\" corporationid=\"1000428\" faction=\"EverMore\" factionid=\"500013\"/>\r\n    <row c=\"true\" corporation=\"Vapor Sea Technologies\" corporationid=\"1000429\" faction=\"EverMore\" factionid=\"500013\"/>\r\n    <row cc=\"true\" corporation=\"Malakim Zealots\" corporationid=\"1000436\" faction=\"Angel Cartel\" factionid=\"500011\"/>\r\n    <row cc=\"true\" corporation=\"Commando Guri\" corporationid=\"1000437\" faction=\"Guristas Pirates\" factionid=\"500010\"/>\r\n    <row cc=\"true\" corporation=\"Deathless Custodians\" corporationid=\"1000438\" faction=\"Deathless Circle\" factionid=\"500029\"/>\r\n    <row cc=\"true\" corporation=\"Satori-Horigu Epistemics\" corporationid=\"1000439\" faction=\"Deathless Circle\" factionid=\"500029\"/>\r\n    <row cc=\"true\" corporation=\"Hrada-Oki Caravan\" corporationid=\"1000440\" faction=\"Deathless Circle\" factionid=\"500029\"/>\r\n    <row cc=\"true\" corporation=\"Deathless Wraiths\" corporationid=\"1000441\" faction=\"Deathless Circle\" factionid=\"500029\"/>\r\n    <row c=\"true\" factionid=\"500001\"/>\r\n    <row c=\"true\" factionid=\"500002\"/>\r\n    <row c=\"true\" factionid=\"500003\"/>\r\n    <row c=\"true\" factionid=\"500004\"/>\r\n    <row c=\"true\" factionid=\"500005\"/>\r\n    <row c=\"true\" factionid=\"500006\"/>\r\n    <row c=\"true\" factionid=\"500007\"/>\r\n    <row c=\"true\" factionid=\"500008\"/>\r\n    <row c=\"true\" factionid=\"500009\"/>\r\n    <row cc=\"true\" factionid=\"500010\"/>\r\n    <row cc=\"true\" factionid=\"500011\"/>\r\n    <row cc=\"true\" factionid=\"500012\"/>\r\n    <row c=\"true\" factionid=\"500013\"/>\r\n    <row c=\"true\" factionid=\"500014\"/>\r\n    <row c=\"true\" factionid=\"500015\"/>\r\n    <row c=\"true\" factionid=\"500016\"/>\r\n    <row c=\"true\" factionid=\"500017\"/>\r\n    <row c=\"true\" factionid=\"500018\"/>\r\n    <row cc=\"true\" factionid=\"500019\"/>\r\n    <row cc=\"true\" factionid=\"500020\"/>\r\n    <row c=\"true\" factionid=\"500024\"/>\r\n    <row c=\"true\" factionid=\"500025\"/>\r\n    <row c=\"true\" factionid=\"500026\"/>\r\n    <row c=\"true\" factionid=\"500027\"/>\r\n    <row c=\"true\" factionid=\"500028\"/>\r\n    <row cc=\"true\" factionid=\"500029\"/>\r\n</rows>\r\n"
  },
  {
    "path": "license.txt",
    "content": "\t\t    GNU GENERAL PUBLIC LICENSE\r\n\t\t       Version 2, June 1991\r\n\r\n Copyright (C) 1989, 1991 Free Software Foundation, Inc.,\r\n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\r\n Everyone is permitted to copy and distribute verbatim copies\r\n of this license document, but changing it is not allowed.\r\n\r\n\t\t\t    Preamble\r\n\r\n  The licenses for most software are designed to take away your\r\nfreedom to share and change it.  By contrast, the GNU General Public\r\nLicense is intended to guarantee your freedom to share and change free\r\nsoftware--to make sure the software is free for all its users.  This\r\nGeneral Public License applies to most of the Free Software\r\nFoundation's software and to any other program whose authors commit to\r\nusing it.  (Some other Free Software Foundation software is covered by\r\nthe GNU Lesser General Public License instead.)  You can apply it to\r\nyour programs, too.\r\n\r\n  When we speak of free software, we are referring to freedom, not\r\nprice.  Our General Public Licenses are designed to make sure that you\r\nhave the freedom to distribute copies of free software (and charge for\r\nthis service if you wish), that you receive source code or can get it\r\nif you want it, that you can change the software or use pieces of it\r\nin new free programs; and that you know you can do these things.\r\n\r\n  To protect your rights, we need to make restrictions that forbid\r\nanyone to deny you these rights or to ask you to surrender the rights.\r\nThese restrictions translate to certain responsibilities for you if you\r\ndistribute copies of the software, or if you modify it.\r\n\r\n  For example, if you distribute copies of such a program, whether\r\ngratis or for a fee, you must give the recipients all the rights that\r\nyou have.  You must make sure that they, too, receive or can get the\r\nsource code.  And you must show them these terms so they know their\r\nrights.\r\n\r\n  We protect your rights with two steps: (1) copyright the software, and\r\n(2) offer you this license which gives you legal permission to copy,\r\ndistribute and/or modify the software.\r\n\r\n  Also, for each author's protection and ours, we want to make certain\r\nthat everyone understands that there is no warranty for this free\r\nsoftware.  If the software is modified by someone else and passed on, we\r\nwant its recipients to know that what they have is not the original, so\r\nthat any problems introduced by others will not reflect on the original\r\nauthors' reputations.\r\n\r\n  Finally, any free program is threatened constantly by software\r\npatents.  We wish to avoid the danger that redistributors of a free\r\nprogram will individually obtain patent licenses, in effect making the\r\nprogram proprietary.  To prevent this, we have made it clear that any\r\npatent must be licensed for everyone's free use or not licensed at all.\r\n\r\n  The precise terms and conditions for copying, distribution and\r\nmodification follow.\r\n\r\n\t\t    GNU GENERAL PUBLIC LICENSE\r\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\r\n\r\n  0. This License applies to any program or other work which contains\r\na notice placed by the copyright holder saying it may be distributed\r\nunder the terms of this General Public License.  The \"Program\", below,\r\nrefers to any such program or work, and a \"work based on the Program\"\r\nmeans either the Program or any derivative work under copyright law:\r\nthat is to say, a work containing the Program or a portion of it,\r\neither verbatim or with modifications and/or translated into another\r\nlanguage.  (Hereinafter, translation is included without limitation in\r\nthe term \"modification\".)  Each licensee is addressed as \"you\".\r\n\r\nActivities other than copying, distribution and modification are not\r\ncovered by this License; they are outside its scope.  The act of\r\nrunning the Program is not restricted, and the output from the Program\r\nis covered only if its contents constitute a work based on the\r\nProgram (independent of having been made by running the Program).\r\nWhether that is true depends on what the Program does.\r\n\r\n  1. You may copy and distribute verbatim copies of the Program's\r\nsource code as you receive it, in any medium, provided that you\r\nconspicuously and appropriately publish on each copy an appropriate\r\ncopyright notice and disclaimer of warranty; keep intact all the\r\nnotices that refer to this License and to the absence of any warranty;\r\nand give any other recipients of the Program a copy of this License\r\nalong with the Program.\r\n\r\nYou may charge a fee for the physical act of transferring a copy, and\r\nyou may at your option offer warranty protection in exchange for a fee.\r\n\r\n  2. You may modify your copy or copies of the Program or any portion\r\nof it, thus forming a work based on the Program, and copy and\r\ndistribute such modifications or work under the terms of Section 1\r\nabove, provided that you also meet all of these conditions:\r\n\r\n    a) You must cause the modified files to carry prominent notices\r\n    stating that you changed the files and the date of any change.\r\n\r\n    b) You must cause any work that you distribute or publish, that in\r\n    whole or in part contains or is derived from the Program or any\r\n    part thereof, to be licensed as a whole at no charge to all third\r\n    parties under the terms of this License.\r\n\r\n    c) If the modified program normally reads commands interactively\r\n    when run, you must cause it, when started running for such\r\n    interactive use in the most ordinary way, to print or display an\r\n    announcement including an appropriate copyright notice and a\r\n    notice that there is no warranty (or else, saying that you provide\r\n    a warranty) and that users may redistribute the program under\r\n    these conditions, and telling the user how to view a copy of this\r\n    License.  (Exception: if the Program itself is interactive but\r\n    does not normally print such an announcement, your work based on\r\n    the Program is not required to print an announcement.)\r\n\r\nThese requirements apply to the modified work as a whole.  If\r\nidentifiable sections of that work are not derived from the Program,\r\nand can be reasonably considered independent and separate works in\r\nthemselves, then this License, and its terms, do not apply to those\r\nsections when you distribute them as separate works.  But when you\r\ndistribute the same sections as part of a whole which is a work based\r\non the Program, the distribution of the whole must be on the terms of\r\nthis License, whose permissions for other licensees extend to the\r\nentire whole, and thus to each and every part regardless of who wrote it.\r\n\r\nThus, it is not the intent of this section to claim rights or contest\r\nyour rights to work written entirely by you; rather, the intent is to\r\nexercise the right to control the distribution of derivative or\r\ncollective works based on the Program.\r\n\r\nIn addition, mere aggregation of another work not based on the Program\r\nwith the Program (or with a work based on the Program) on a volume of\r\na storage or distribution medium does not bring the other work under\r\nthe scope of this License.\r\n\r\n  3. You may copy and distribute the Program (or a work based on it,\r\nunder Section 2) in object code or executable form under the terms of\r\nSections 1 and 2 above provided that you also do one of the following:\r\n\r\n    a) Accompany it with the complete corresponding machine-readable\r\n    source code, which must be distributed under the terms of Sections\r\n    1 and 2 above on a medium customarily used for software interchange; or,\r\n\r\n    b) Accompany it with a written offer, valid for at least three\r\n    years, to give any third party, for a charge no more than your\r\n    cost of physically performing source distribution, a complete\r\n    machine-readable copy of the corresponding source code, to be\r\n    distributed under the terms of Sections 1 and 2 above on a medium\r\n    customarily used for software interchange; or,\r\n\r\n    c) Accompany it with the information you received as to the offer\r\n    to distribute corresponding source code.  (This alternative is\r\n    allowed only for noncommercial distribution and only if you\r\n    received the program in object code or executable form with such\r\n    an offer, in accord with Subsection b above.)\r\n\r\nThe source code for a work means the preferred form of the work for\r\nmaking modifications to it.  For an executable work, complete source\r\ncode means all the source code for all modules it contains, plus any\r\nassociated interface definition files, plus the scripts used to\r\ncontrol compilation and installation of the executable.  However, as a\r\nspecial exception, the source code distributed need not include\r\nanything that is normally distributed (in either source or binary\r\nform) with the major components (compiler, kernel, and so on) of the\r\noperating system on which the executable runs, unless that component\r\nitself accompanies the executable.\r\n\r\nIf distribution of executable or object code is made by offering\r\naccess to copy from a designated place, then offering equivalent\r\naccess to copy the source code from the same place counts as\r\ndistribution of the source code, even though third parties are not\r\ncompelled to copy the source along with the object code.\r\n\r\n  4. You may not copy, modify, sublicense, or distribute the Program\r\nexcept as expressly provided under this License.  Any attempt\r\notherwise to copy, modify, sublicense or distribute the Program is\r\nvoid, and will automatically terminate your rights under this License.\r\nHowever, parties who have received copies, or rights, from you under\r\nthis License will not have their licenses terminated so long as such\r\nparties remain in full compliance.\r\n\r\n  5. You are not required to accept this License, since you have not\r\nsigned it.  However, nothing else grants you permission to modify or\r\ndistribute the Program or its derivative works.  These actions are\r\nprohibited by law if you do not accept this License.  Therefore, by\r\nmodifying or distributing the Program (or any work based on the\r\nProgram), you indicate your acceptance of this License to do so, and\r\nall its terms and conditions for copying, distributing or modifying\r\nthe Program or works based on it.\r\n\r\n  6. Each time you redistribute the Program (or any work based on the\r\nProgram), the recipient automatically receives a license from the\r\noriginal licensor to copy, distribute or modify the Program subject to\r\nthese terms and conditions.  You may not impose any further\r\nrestrictions on the recipients' exercise of the rights granted herein.\r\nYou are not responsible for enforcing compliance by third parties to\r\nthis License.\r\n\r\n  7. If, as a consequence of a court judgment or allegation of patent\r\ninfringement or for any other reason (not limited to patent issues),\r\nconditions are imposed on you (whether by court order, agreement or\r\notherwise) that contradict the conditions of this License, they do not\r\nexcuse you from the conditions of this License.  If you cannot\r\ndistribute so as to satisfy simultaneously your obligations under this\r\nLicense and any other pertinent obligations, then as a consequence you\r\nmay not distribute the Program at all.  For example, if a patent\r\nlicense would not permit royalty-free redistribution of the Program by\r\nall those who receive copies directly or indirectly through you, then\r\nthe only way you could satisfy both it and this License would be to\r\nrefrain entirely from distribution of the Program.\r\n\r\nIf any portion of this section is held invalid or unenforceable under\r\nany particular circumstance, the balance of the section is intended to\r\napply and the section as a whole is intended to apply in other\r\ncircumstances.\r\n\r\nIt is not the purpose of this section to induce you to infringe any\r\npatents or other property right claims or to contest validity of any\r\nsuch claims; this section has the sole purpose of protecting the\r\nintegrity of the free software distribution system, which is\r\nimplemented by public license practices.  Many people have made\r\ngenerous contributions to the wide range of software distributed\r\nthrough that system in reliance on consistent application of that\r\nsystem; it is up to the author/donor to decide if he or she is willing\r\nto distribute software through any other system and a licensee cannot\r\nimpose that choice.\r\n\r\nThis section is intended to make thoroughly clear what is believed to\r\nbe a consequence of the rest of this License.\r\n\r\n  8. If the distribution and/or use of the Program is restricted in\r\ncertain countries either by patents or by copyrighted interfaces, the\r\noriginal copyright holder who places the Program under this License\r\nmay add an explicit geographical distribution limitation excluding\r\nthose countries, so that distribution is permitted only in or among\r\ncountries not thus excluded.  In such case, this License incorporates\r\nthe limitation as if written in the body of this License.\r\n\r\n  9. The Free Software Foundation may publish revised and/or new versions\r\nof the General Public License from time to time.  Such new versions will\r\nbe similar in spirit to the present version, but may differ in detail to\r\naddress new problems or concerns.\r\n\r\nEach version is given a distinguishing version number.  If the Program\r\nspecifies a version number of this License which applies to it and \"any\r\nlater version\", you have the option of following the terms and conditions\r\neither of that version or of any later version published by the Free\r\nSoftware Foundation.  If the Program does not specify a version number of\r\nthis License, you may choose any version ever published by the Free Software\r\nFoundation.\r\n\r\n  10. If you wish to incorporate parts of the Program into other free\r\nprograms whose distribution conditions are different, write to the author\r\nto ask for permission.  For software which is copyrighted by the Free\r\nSoftware Foundation, write to the Free Software Foundation; we sometimes\r\nmake exceptions for this.  Our decision will be guided by the two goals\r\nof preserving the free status of all derivatives of our free software and\r\nof promoting the sharing and reuse of software generally.\r\n\r\n\t\t\t    NO WARRANTY\r\n\r\n  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\r\nFOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\r\nOTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\r\nPROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\r\nOR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\nMERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\r\nTO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\r\nPROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\r\nREPAIR OR CORRECTION.\r\n\r\n  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\r\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\r\nREDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\r\nINCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\r\nOUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\r\nTO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\r\nYOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\r\nPROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\r\nPOSSIBILITY OF SUCH DAMAGES.\r\n\r\n\t\t     END OF TERMS AND CONDITIONS\r\n\r\n\t    How to Apply These Terms to Your New Programs\r\n\r\n  If you develop a new program, and you want it to be of the greatest\r\npossible use to the public, the best way to achieve this is to make it\r\nfree software which everyone can redistribute and change under these terms.\r\n\r\n  To do so, attach the following notices to the program.  It is safest\r\nto attach them to the start of each source file to most effectively\r\nconvey the exclusion of warranty; and each file should have at least\r\nthe \"copyright\" line and a pointer to where the full notice is found.\r\n\r\n    <one line to give the program's name and a brief idea of what it does.>\r\n    Copyright (C) <year>  <name of author>\r\n\r\n    This program is free software; you can redistribute it and/or modify\r\n    it under the terms of the GNU General Public License as published by\r\n    the Free Software Foundation; either version 2 of the License, or\r\n    (at your option) any later version.\r\n\r\n    This program is distributed in the hope that it will be useful,\r\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n    GNU General Public License for more details.\r\n\r\n    You should have received a copy of the GNU General Public License along\r\n    with this program; if not, write to the Free Software Foundation, Inc.,\r\n    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r\n\r\nAlso add information on how to contact you by electronic and paper mail.\r\n\r\nIf the program is interactive, make it output a short notice like this\r\nwhen it starts in an interactive mode:\r\n\r\n    Gnomovision version 69, Copyright (C) year name of author\r\n    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\r\n    This is free software, and you are welcome to redistribute it\r\n    under certain conditions; type `show c' for details.\r\n\r\nThe hypothetical commands `show w' and `show c' should show the appropriate\r\nparts of the General Public License.  Of course, the commands you use may\r\nbe called something other than `show w' and `show c'; they could even be\r\nmouse-clicks or menu items--whatever suits your program.\r\n\r\nYou should also get your employer (if you work as a programmer) or your\r\nschool, if any, to sign a \"copyright disclaimer\" for the program, if\r\nnecessary.  Here is a sample; alter the names:\r\n\r\n  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\r\n  `Gnomovision' (which makes passes at compilers) written by James Hacker.\r\n\r\n  <signature of Ty Coon>, 1 April 1989\r\n  Ty Coon, President of Vice\r\n\r\nThis General Public License does not permit incorporating your program into\r\nproprietary programs.  If your program is a subroutine library, you may\r\nconsider it more useful to permit linking proprietary applications with the\r\nlibrary.  If this is what you want to do, use the GNU Lesser General\r\nPublic License instead of this License.\r\n"
  },
  {
    "path": "pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\t\t xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\t<modelVersion>4.0.0</modelVersion>\n\t<groupId>net.nikr</groupId>\n\t<artifactId>jeveassets</artifactId>\n\t<packaging>jar</packaging>\n\t<version>8.1.3-SNAPSHOT</version>\n\t<name>jeveassets</name>\n\t<description>jEveAssets is an out-of-game asset manager for Eve-Online, written in Java</description>\n\t<url>https://eve.nikr.net/jeveasset</url>\n\t<issueManagement>\n\t\t<system>GitHub</system>\n\t\t<url>https://github.com/GoldenGnu/jeveassets/issues</url>\n\t</issueManagement>\n\t<developers>\n\t\t<developer>\n\t\t\t<id>niklas</id>\n\t\t\t<name>Niklas Kyster Rasmussen</name>\n\t\t\t<email>niklaskr@gmail.com</email>\n\t\t\t<url>https://nikr.net/</url>\n\t\t\t<timezone>+1</timezone>\n\t\t</developer>\n\t\t<developer>\n\t\t\t<id>candle</id>\n\t\t\t<email>jeveassets@candle.me.uk</email>\n\t\t\t<timezone>+1</timezone>\n\t\t</developer>\n\t\t<developer>\n\t\t\t<id>tryfan</id>\n\t\t\t<name>TryfanMan</name>\n\t\t</developer>\n\t\t<developer>\n\t\t\t<id>beders</id>\n\t\t\t<name>Jochen Bedersdorfer</name>\n\t\t</developer>\n\t\t<developer>\n\t\t\t<id>gavitron</id>\n\t\t\t<name>Ima Sohmbadi</name>\n\t\t</developer>\n\t\t<developer>\n\t\t\t<id>tsurotsero</id>\n\t\t\t<name>Tsuro Tsero</name>\n\t\t</developer>\n\t</developers>\n\t<licenses>\n\t\t<license>\n\t\t\t<name>GNU General Public License 2.0</name>\n\t\t\t<url>http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt</url>\n\t\t</license>\n\t</licenses>\n\t<scm>\n\t\t<connection>scm:svn:http://svn.candle.me.uk/nikr/jeveassets/trunk/</connection>\n\t\t<url>http://svn.candle.me.uk/nikr/jeveassets/trunk/</url>\n\t</scm>\n\t<build>\n\t\t<plugins>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-jar-plugin</artifactId>\n\t\t\t\t<version>2.4</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<finalName>jeveassets</finalName>\n\t\t\t\t\t<archive>\n\t\t\t\t\t\t<manifest>\n\t\t\t\t\t\t\t<mainClass>${main.class}</mainClass>\n\t\t\t\t\t\t\t<packageName>net.nikr.eve.jeveasset</packageName>\n\t\t\t\t\t\t\t<addClasspath>true</addClasspath>\n\t\t\t\t\t\t\t<classpathPrefix>lib</classpathPrefix>\n\t\t\t\t\t\t</manifest>\n\t\t\t\t\t\t<manifestEntries>\n\t\t\t\t\t\t\t<SplashScreen-Image>splash.jpg</SplashScreen-Image>\n\t\t\t\t\t\t</manifestEntries>\n\t\t\t\t\t</archive>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-compiler-plugin</artifactId>\n\t\t\t\t<version>2.4</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<compilerArguments>\n\t\t\t\t\t\t<Xmaxerrs>1000</Xmaxerrs>\n\t\t\t\t\t\t<Xmaxwarns>1000</Xmaxwarns>\n\t\t\t\t\t\t<Xlint:all/>\n\t\t\t\t\t\t<Xlint:-serial/>\n\t\t\t\t\t\t<Werror />\n\t\t\t\t\t</compilerArguments>\n\t\t\t\t\t<showWarnings>true</showWarnings>\n\t\t\t\t\t<showDeprecation>true</showDeprecation>\n\t\t\t\t\t<source>${project.build.sourceVersion}</source>\n\t\t\t\t\t<target>${project.build.sourceVersion}</target>\n\t\t\t\t\t<encoding>${project.build.sourceEncoding}</encoding>\n\t\t\t\t <compilerArgs>\n\t\t\t\t  <arg>-Xlint</arg>\n\t\t\t\t </compilerArgs>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-resources-plugin</artifactId>\n\t\t\t\t<version>2.5</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<encoding>${project.build.sourceEncoding}</encoding>\n\t\t\t\t\t\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<artifactId>maven-antrun-plugin</artifactId>\n\t\t\t\t<version>1.7</version>\n\t\t\t\t<executions>\n\t\t\t\t\t<!-- copy files to build directory -->\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<id>process-resources</id>\n\t\t\t\t\t\t<phase>process-resources</phase>\n\t\t\t\t\t\t<configuration>\n\t\t\t\t\t\t\t<target>\n\t\t\t\t\t\t\t\t<mkdir dir=\"${project.build.directory}/data\"/>\n\t\t\t\t\t\t\t\t<copy todir=\"${project.build.directory}/data\">\n\t\t\t\t\t\t\t\t\t<fileset dir=\"data\" includes=\"*.xml\"/>\n\t\t\t\t\t\t\t\t\t<fileset dir=\"data\" includes=\"*.dat\"/>\n\t\t\t\t\t\t\t\t\t<fileset dir=\"data\" includes=\"*.json\"/>\n\t\t\t\t\t\t\t\t\t<fileset dir=\"data\" includes=\"*.zip\"/>\n\t\t\t\t\t\t\t\t\t<fileset dir=\"data\" includes=\"*.db\"/>\n\t\t\t\t\t\t\t\t</copy>\n\t\t\t\t\t\t\t\t<copy todir=\"${project.build.directory}\">\n\t\t\t\t\t\t\t\t\t<fileset dir=\"\" includes=\"*.txt\"/>\n\t\t\t\t\t\t\t\t\t<fileset dir=\"tools\" includes=\"jmemory.jar\"/>\n\t\t\t\t\t\t\t\t\t<fileset dir=\"tools\" includes=\"jarfile.properties\"/>\n\t\t\t\t\t\t\t\t</copy>\n\t\t\t\t\t\t\t\t<copy todir=\"${project.build.directory}\">\n\t\t\t\t\t\t\t\t\t<fileset dir=\"tools/update\" includes=\"list.php\"/>\n\t\t\t\t\t\t\t\t\t<fileset dir=\"tools/update\" includes=\".htaccess\"/>\n\t\t\t\t\t\t\t\t</copy>\n\t\t\t\t\t\t\t</target>\n\t\t\t\t\t\t</configuration>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>run</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t</execution>\n\t\t\t\t\t<!-- copy files to installer -->\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<id>copy-to-install</id>\n\t\t\t\t\t\t<phase>package</phase>\n\t\t\t\t\t\t<configuration>\n\t\t\t\t\t\t\t<target>\n\t\t\t\t\t\t\t\t<copy todir=\"${project.build.directory}/install/lib\">\n\t\t\t\t\t\t\t\t\t<fileset dir=\"${project.build.directory}/lib\" includes=\"*.jar\"/>\n\t\t\t\t\t\t\t\t</copy>\n\t\t\t\t\t\t\t\t<copy todir=\"${project.build.directory}/install\">\n\t\t\t\t\t\t\t\t\t<fileset dir=\"${project.build.directory}\" includes=\"*.jar\"/>\n\t\t\t\t\t\t\t\t\t<fileset dir=\"${project.build.directory}\" includes=\"*.txt\"/>\n\t\t\t\t\t\t\t\t\t<fileset dir=\"${project.build.directory}\" includes=\"*jmemory.properties\"/>\n\t\t\t\t\t\t\t\t</copy>\n\t\t\t\t\t\t\t</target>\n\t\t\t\t\t\t</configuration>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>run</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t</execution>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<id>copy-profiles</id>\n\t\t\t\t\t\t<phase>process-resources</phase>\n\t\t\t\t\t\t<configuration>\n\t\t\t\t\t\t\t<tasks>\n\t\t\t\t\t\t\t\t<taskdef resource=\"net/sf/antcontrib/antcontrib.properties\" />\n\t\t\t\t\t\t\t\t<if>\n\t\t\t\t\t\t\t\t\t<available file=\"profiles\"/>\n\t\t\t\t\t\t\t\t\t<then>\n\t\t\t\t\t\t\t\t\t\t<mkdir dir=\"${project.build.directory}/profiles\"/>\n\t\t\t\t\t\t\t\t\t\t<copy todir=\"${project.build.directory}/profiles\">\n\t\t\t\t\t\t\t\t\t\t\t<fileset dir=\"profiles\" includes=\"*.xml\"/>\n\t\t\t\t\t\t\t\t\t\t\t<fileset dir=\"profiles\" includes=\"*.db\"/>\n\t\t\t\t\t\t\t\t\t\t</copy>\n\t\t\t\t\t\t\t\t\t</then>\n\t\t\t\t\t\t\t\t</if>\n\t\t\t\t\t\t\t</tasks>\n\t\t\t\t\t\t</configuration>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>run</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t</execution>\n\t\t\t\t</executions>\n\t\t\t\t<dependencies>\n\t\t\t\t\t<dependency>\n\t\t\t\t\t\t<groupId>ant-contrib</groupId>\n\t\t\t\t\t\t<artifactId>ant-contrib</artifactId>\n\t\t\t\t\t\t<version>20020829</version>\n\t\t\t\t\t</dependency>\n\t\t\t\t\t<dependency>\n\t\t\t\t\t\t<groupId>commons-net</groupId>\n\t\t\t\t\t\t<artifactId>commons-net</artifactId>\n\t\t\t\t\t\t<version>1.4.1</version>\n\t\t\t\t\t</dependency>\n\t\t\t\t\t<dependency>\n\t\t\t\t\t\t<groupId>ant</groupId>\n\t\t\t\t\t\t<artifactId>ant-commons-net</artifactId>\n\t\t\t\t\t\t<version>1.6.5</version>\n\t\t\t\t\t</dependency>\n\t\t\t\t</dependencies>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-dependency-plugin</artifactId>\n\t\t\t\t<version>2.4</version>\n\t\t\t\t<executions>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<id>copy-dependencies</id>\n\t\t\t\t\t\t<phase>process-test-resources</phase>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>copy-dependencies</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t<configuration>\n\t\t\t\t\t\t\t<excludeArtifactIds>junit,hamcrest</excludeArtifactIds>\n\t\t\t\t\t\t\t<outputDirectory>${project.build.directory}/lib</outputDirectory>\n\t\t\t\t\t\t\t<overWriteReleases>false</overWriteReleases>\n\t\t\t\t\t\t\t<overWriteSnapshots>false</overWriteSnapshots>\n\t\t\t\t\t\t\t<overWriteIfNewer>true</overWriteIfNewer>\n\t\t\t\t\t\t\t<excludeTransitive>false</excludeTransitive>\n\t\t\t\t\t\t</configuration>\n\t\t\t\t\t</execution>\n\t\t\t\t</executions>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-site-plugin</artifactId>\n\t\t\t\t<version>3.3</version>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.codehaus.mojo</groupId>\n\t\t\t\t<artifactId>exec-maven-plugin</artifactId>\n\t\t\t\t<version>1.4.0</version>\n\t\t\t\t<executions>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>exec</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t<configuration>\n\t\t\t\t\t\t\t<executable>java</executable>\n\t\t\t\t\t\t\t<arguments>\n\t\t\t\t\t\t\t\t<argument>-classpath</argument>\n\t\t\t\t\t\t\t\t<classpath />\n\t\t\t\t\t\t\t\t<mainClass>${main.class}</mainClass>\n\t\t\t\t\t\t\t\t<argument>${arg1}</argument>\n\t\t\t\t\t\t\t\t<argument>${arg2}</argument>\n\t\t\t\t\t\t\t\t<argument>${edt.debug}</argument>\n\t\t\t\t\t\t\t</arguments>\n\t\t\t\t\t\t</configuration>\n\t\t\t\t\t</execution>\n\t\t\t\t</executions>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<artifactId>maven-assembly-plugin</artifactId>\n\t\t\t\t<version>2.4</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<finalName>${project.name}-${project.version}</finalName>\n\t\t\t\t\t<appendAssemblyId>false</appendAssemblyId>\n\t\t\t\t\t<descriptors>\n\t\t\t\t\t\t<descriptor>src/main/assembly/assembly.xml</descriptor>\n\t\t\t\t\t</descriptors>\n\t\t\t\t</configuration>\n\t\t\t\t<executions>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<id>make-assembly</id> <!-- this is used for inheritance merges -->\n\t\t\t\t\t\t<phase>package</phase> <!-- append to the packaging phase. -->\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>single</goal> <!-- goals == mojos -->\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t</execution>\n\t\t\t\t</executions>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>net.ju-n.maven.plugins</groupId>\n\t\t\t\t<artifactId>checksum-maven-plugin</artifactId>\n\t\t\t\t<version>1.4</version>\n\t\t\t\t<executions>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>files</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t<phase>verify</phase>\n\t\t\t\t\t</execution>\n\t\t\t\t</executions>\n\t\t\t\t<configuration>\n\t\t\t\t\t<fileSets>\n\t\t\t\t\t\t<fileSet>\n\t\t\t\t\t\t\t<directory>${project.build.directory}</directory>\n\t\t\t\t\t\t\t<includes>\n\t\t\t\t\t\t\t\t<include>*.txt</include>\n\t\t\t\t\t\t\t\t<include>*.jar</include>\n\t\t\t\t\t\t\t\t<include>*.properties</include>\n\t\t\t\t\t\t\t\t<include>lib/*.jar</include>\n\t\t\t\t\t\t\t</includes>\n\t\t\t\t\t\t</fileSet>\n\t\t\t\t\t</fileSets>\n\t\t\t\t\t<algorithms>\n\t\t\t\t\t\t<algorithm>MD5</algorithm>\n\t\t\t\t\t</algorithms>\n\t\t\t\t\t<csvSummary>false</csvSummary>\n\t\t\t\t\t<individualFiles>true</individualFiles>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.codehaus.mojo</groupId>\n\t\t\t\t<artifactId>wagon-maven-plugin</artifactId>\n\t\t\t\t<version>2.0.2</version>\n\t\t\t\t<executions>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<id>upload-delete</id>\n\t\t\t\t\t\t<phase>deploy</phase>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>sshexec</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t<configuration>\n\t\t\t\t\t\t\t<displayCommandOutputs>true</displayCommandOutputs>\n\t\t\t\t\t\t\t<serverId>eve-nikr-net</serverId>\n\t\t\t\t\t\t\t<url>${upload.url}</url>\n\t\t\t\t\t\t\t<commands> \n\t\t\t\t\t\t\t\t<!-- remove data directory -->\n\t\t\t\t\t\t\t\t<command>rm -rf ${upload.program.delete}</command>\n\t\t\t\t\t\t\t</commands>\n\t\t\t\t\t\t</configuration>\n\t\t\t\t\t</execution>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<id>upload-update</id>\n\t\t\t\t\t\t<phase>deploy</phase>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>upload</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t<configuration>\n\t\t\t\t\t\t\t<fromDir>${project.build.directory}</fromDir>\n\t\t\t\t\t\t\t<includes>*.txt,*.jar,*.md5,lib/*,*.dat,*.php,*.properties,.htaccess,*.update</includes>\n\t\t\t\t\t\t\t<serverId>eve-nikr-net</serverId>\n\t\t\t\t\t\t\t<url>sftp://${upload.url}</url>\n\t\t\t\t\t\t\t<toDir>${upload.program.file}</toDir>\n\t\t\t\t\t\t</configuration>\n\t\t\t\t\t</execution>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<id>upload-zip</id>\n\t\t\t\t\t\t<phase>deploy</phase>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>upload</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t<configuration>\n\t\t\t\t\t\t\t<fromDir>${project.build.directory}</fromDir>\n\t\t\t\t\t\t\t<includes>*.zip</includes>\n\t\t\t\t\t\t\t<serverId>eve-nikr-net</serverId>\n\t\t\t\t\t\t\t<url>sftp://${upload.url}</url>\n\t\t\t\t\t\t\t<toDir>${upload.zip}</toDir>\n\t\t\t\t\t\t</configuration>\n\t\t\t\t\t</execution>\n\t\t\t\t</executions>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-deploy-plugin</artifactId>\n\t\t\t\t<version>2.8.1</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<skip>true</skip>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\t\t\t<!-- Used to configure IzPack installer -->\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.codehaus.izpack</groupId>\n\t\t\t\t<artifactId>izpack-maven-plugin</artifactId>\n\t\t\t\t<version>5.0.3</version>\n\t\t\t\t<executions>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<id>izpack</id>\n\t\t\t\t\t\t<phase>package</phase>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>izpack</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t<configuration>\n\t\t\t\t\t\t\t<autoIncludeDevelopers>true</autoIncludeDevelopers>\n\t\t\t\t\t\t\t<finalName>installer</finalName>\n\t\t\t\t\t\t\t<baseDir>${project.build.directory}/install</baseDir>\n\t\t\t\t\t\t\t<installFile>${project.build.directory}/izpack/install.xml</installFile>\n\t\t\t\t\t\t</configuration>\n\t\t\t\t\t</execution>\n\t\t\t\t</executions>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-surefire-plugin</artifactId>\n\t\t\t\t<version>2.22.2</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<excludes>\n\t\t\t\t\t\t<exclude>${tests.to.skip}</exclude>\n\t\t\t\t\t</excludes>\n\t\t\t\t\t<environmentVariables>\n\t\t\t\t\t\t<JANICE_API_KEY>${janice}</JANICE_API_KEY>\n\t\t\t\t\t</environmentVariables>\n\t\t\t\t\t<trimStackTrace>false</trimStackTrace>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.jacoco</groupId>\n\t\t\t\t<artifactId>jacoco-maven-plugin</artifactId>\n\t\t\t\t<version>0.8.8</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<outputDirectory>${project.build.directory}/jacoco</outputDirectory>\n\t\t\t\t</configuration>\n\t\t\t\t<executions>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<id>jacoco-initialize</id>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>prepare-agent</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t</execution>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<id>jacoco-report</id>\n\t\t\t\t\t\t<phase>package</phase>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>report</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t</execution>\n\t\t\t\t</executions>\n\t\t\t</plugin>\n\t\t</plugins>\n\t\t<extensions>\n\t\t\t<!-- Enabling the use of FTP -->\n\t\t\t<extension>\n\t\t\t\t<groupId>org.apache.maven.wagon</groupId>\n\t\t\t\t<artifactId>wagon-ftp</artifactId>\n\t\t\t\t<version>3.5.2</version>\n\t\t\t</extension>\n\t\t\t<extension>\n\t\t\t\t<groupId>org.apache.maven.wagon</groupId>\n\t\t\t\t<artifactId>wagon-ssh</artifactId>\n\t\t\t\t<version>3.5.2</version>\n\t\t\t</extension>\n\t\t</extensions>\n\t\t<resources>\n\t\t\t<resource>\n\t\t\t\t<directory>src/main/resources</directory>\n\t\t\t\t<filtering>false</filtering>\n\t\t\t</resource>\n\t\t\t<resource>\n\t\t\t\t<directory>tools/izpack</directory>\n\t\t\t\t<filtering>false</filtering>\n\t\t\t\t<excludes>\n\t\t\t\t\t<exclude>**/install.xml</exclude>\n\t\t\t\t</excludes>\n\t\t\t\t<targetPath>../install/izpack</targetPath>\n\t\t\t</resource>\n\t\t\t<resource>\n\t\t\t\t<directory>tools/izpack</directory>\n\t\t\t\t<filtering>true</filtering>\n\t\t\t\t<includes>\n\t\t\t\t\t<include>**/install.xml</include>\n\t\t\t\t</includes>\n\t\t\t\t<targetPath>../izpack</targetPath>\n\t\t\t</resource>\n\t\t\t<resource>\n\t\t\t\t<directory>tools/update</directory>\n\t\t\t\t<filtering>true</filtering>\n\t\t\t\t<includes>\n\t\t\t\t\t<include>**/github.update</include>\n\t\t\t\t\t<include>**/update_version.dat</include>\n\t\t\t\t</includes>\n\t\t\t\t<targetPath>..</targetPath>\n\t\t\t</resource>\n\t\t</resources>\n\t</build>\n\n\t<reporting>\n\t\t<plugins>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-javadoc-plugin</artifactId>\n\t\t\t\t<version>2.8.1</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<quiet>true</quiet>\n\t\t\t\t\t<failOnError>false</failOnError>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-jxr-plugin</artifactId>\n\t\t\t\t<version>2.3</version>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-project-info-reports-plugin</artifactId>\n\t\t\t\t<version>2.4</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<dependencyDetailsEnabled>false</dependencyDetailsEnabled>\n\t\t\t\t\t<dependencyLocationsEnabled>false</dependencyLocationsEnabled>\n\t\t\t\t</configuration>\n\t\t\t\t<reportSets>\n\t\t\t\t\t<reportSet>\n\t\t\t\t\t\t<reports>\n\t\t\t\t\t\t\t<report>index</report>\n\t\t\t\t\t\t\t<!--<report>cim</report>-->\n\t\t\t\t\t\t\t<report>dependencies</report>\n\t\t\t\t\t\t\t<report>dependency-convergence</report>\n\t\t\t\t\t\t\t<!--<report>distribution-management</report>-->\n\t\t\t\t\t\t\t<report>issue-tracking</report>\n\t\t\t\t\t\t\t<report>license</report>\n\t\t\t\t\t\t\t<!--<report>mailing-list</report>-->\n\t\t\t\t\t\t\t<report>modules</report>\n\t\t\t\t\t\t\t<report>plugin-management</report>\n\t\t\t\t\t\t\t<report>plugins</report>\n\t\t\t\t\t\t\t<report>project-team</report>\n\t\t\t\t\t\t\t<report>scm</report>\n\t\t\t\t\t\t\t<report>summary</report>\n\t\t\t\t\t\t</reports>\n\t\t\t\t\t</reportSet>\n\t\t\t\t</reportSets>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-surefire-report-plugin</artifactId>\n\t\t\t\t<version>2.12</version>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-checkstyle-plugin</artifactId>\n\t\t\t\t<version>2.9.1</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<configLocation>${basedir}/checkstyle.xml</configLocation>\n\t\t\t\t</configuration>\n\t\t\t\t<reportSets>\n\t\t\t\t\t<reportSet>\n\t\t\t\t\t\t<reports>\n\t\t\t\t\t\t\t<report>checkstyle</report>\n\t\t\t\t\t\t</reports>\n\t\t\t\t\t</reportSet>\n\t\t\t\t</reportSets>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.codehaus.mojo</groupId>\n\t\t\t\t<artifactId>taglist-maven-plugin</artifactId>\n\t\t\t\t<version>2.4</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<tagListOptions>\n\t\t\t\t\t\t<tagClasses>\n\t\t\t\t\t\t\t<tagClass>\n\t\t\t\t\t\t\t\t<displayName>Important Todo Work</displayName>\n\t\t\t\t\t\t\t\t<tags>\n\t\t\t\t\t\t\t\t\t<tag>\n\t\t\t\t\t\t\t\t\t\t<matchString>fixme</matchString>\n\t\t\t\t\t\t\t\t\t\t<matchType>ignoreCase</matchType>\n\t\t\t\t\t\t\t\t\t</tag>\n\t\t\t\t\t\t\t\t</tags>\n\t\t\t\t\t\t\t</tagClass>\n\t\t\t\t\t\t\t<tagClass>\n\t\t\t\t\t\t\t\t<displayName>Todo Work</displayName>\n\t\t\t\t\t\t\t\t<tags>\n\t\t\t\t\t\t\t\t\t<tag>\n\t\t\t\t\t\t\t\t\t\t<matchString>todo</matchString>\n\t\t\t\t\t\t\t\t\t\t<matchType>ignoreCase</matchType>\n\t\t\t\t\t\t\t\t\t</tag>\n\t\t\t\t\t\t\t\t\t<tag>\n\t\t\t\t\t\t\t\t\t\t<matchString>pending</matchString>\n\t\t\t\t\t\t\t\t\t\t<matchType>ignoreCase</matchType>\n\t\t\t\t\t\t\t\t\t</tag>\n\t\t\t\t\t\t\t\t</tags>\n\t\t\t\t\t\t\t</tagClass>\n\t\t\t\t\t\t\t<tagClass>\n\t\t\t\t\t\t\t\t<displayName>Workarounds and other none optimal code</displayName>\n\t\t\t\t\t\t\t\t<tags>\n\t\t\t\t\t\t\t\t\t<tag>\n\t\t\t\t\t\t\t\t\t\t<matchString>xxx</matchString>\n\t\t\t\t\t\t\t\t\t\t<matchType>ignoreCase</matchType>\n\t\t\t\t\t\t\t\t\t</tag>\n\t\t\t\t\t\t\t\t</tags>\n\t\t\t\t\t\t\t</tagClass>\n\t\t\t\t\t\t</tagClasses>\n\t\t\t\t\t</tagListOptions>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.codehaus.mojo</groupId>\n\t\t\t\t<artifactId>findbugs-maven-plugin</artifactId>\n\t\t\t\t<version>3.0.5</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<quiet>true</quiet>\n\t\t\t\t\t<findbugsXmlOutput>true</findbugsXmlOutput>\n\t\t\t\t\t<findbugsXmlOutputDirectory>target/site</findbugsXmlOutputDirectory>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-pmd-plugin</artifactId>\n\t\t\t\t<version>3.8</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<linkXref>true</linkXref>\n\t\t\t\t\t<sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>\n\t\t\t\t\t<minimumTokens>100</minimumTokens>\n\t\t\t\t\t<targetJdk>${project.build.sourceVersion}</targetJdk>\n\t\t\t\t\t<excludes>\n\t\t\t\t\t\t<exclude>**/*Bean.java</exclude>\n\t\t\t\t\t\t<exclude>**/generated/*.java</exclude>\n\t\t\t\t\t</excludes>\n\t\t\t\t\t<excludeRoots>\n\t\t\t\t\t\t<excludeRoot>target/generated-sources/stubs</excludeRoot>\n\t\t\t\t\t</excludeRoots>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\t\t</plugins>\n\t</reporting>\n\n\t<profiles>\n\t\t<profile>\n\t\t\t<activation>\n\t\t\t\t<activeByDefault>true</activeByDefault>\n\t\t\t</activation>\n\t\t\t<properties>\n\t\t\t\t<tests.to.skip>NOTHING</tests.to.skip>\n\t\t\t</properties>\n\t\t</profile>\n\t\t<!-- RUN -->\n\t\t<profile>\n\t\t\t<id>RUN-portable</id>\n\t\t\t<properties>\n\t\t\t\t<arg1>-portable</arg1>\n\t\t\t</properties>\n\t\t</profile>\n\t\t<profile>\n\t\t\t<id>RUN-debug</id>\n\t\t\t<properties>\n\t\t\t\t<arg1>-debug</arg1>\n\t\t\t</properties>\n\t\t</profile>\n\t\t<profile>\n\t\t\t<id>RUN-edtdebug</id>\n\t\t</profile>\n\t\t<profile>\n\t\t\t<id>RUN-lazysave</id>\n\t\t\t<properties>\n\t\t\t\t<arg1>-lazysave</arg1>\n\t\t\t</properties>\n\t\t</profile>\n\t\t<profile>\n\t\t\t<id>RUN-no-args-profiling</id>\n\t\t\t<properties>\n\t\t\t\t<edt.debug></edt.debug>\n\t\t\t</properties>\n\t\t</profile>\n\t\t<profile>\n\t\t\t<id>RUN-forceupdate</id>\n\t\t\t<properties>\n\t\t\t\t<arg1>-debug</arg1>\n\t\t\t\t<arg2>-forceupdate</arg2>\n\t\t\t</properties>\n\t\t</profile>\n\t\t<profile>\n\t\t\t<id>RUN-noupdate</id>\n\t\t\t<properties>\n\t\t\t\t<arg1>-debug</arg1>\n\t\t\t\t<arg2>-noupdate</arg2>\n\t\t\t</properties>\n\t\t</profile>\n\t\t<profile>\n\t\t\t<id>RUNCLI-update</id>\n\t\t\t<properties>\n\t\t\t\t<arg1>-update</arg1>\n\t\t\t\t<arg2>-portable</arg2>\n\t\t\t</properties>\n\t\t</profile>\n\t\t<profile>\n\t\t\t<id>RUNCLI-export</id>\n\t\t\t<properties>\n\t\t\t\t<arg1>-export</arg1>\n\t\t\t\t<arg2>-portable</arg2>\n\t\t\t</properties>\n\t\t</profile>\n\t\t<profile>\n\t\t\t<id>RUNCLI-help</id>\n\t\t\t<properties>\n\t\t\t\t<arg1>-help</arg1>\n\t\t\t</properties>\n\t\t</profile>\n\t\t<!-- TESTS -->\n\t\t<profile>\n\t\t\t<id>skip-online-tests</id>\n\t\t\t<activation>\n\t\t\t\t<property>\n\t\t\t\t\t<name>skip-online-tests</name>\n\t\t\t\t\t<value>true</value>\n\t\t\t\t</property>\n\t\t\t</activation>\n\t\t\t<properties>\n\t\t\t\t<tests.to.skip>**/*OnlineTest.java</tests.to.skip>\n\t\t\t</properties>\n\t\t</profile>\n\t\t<profile>\n\t\t    <id>skip-all-tests</id>\n\t\t    <activation>\n\t\t\t<property>\n\t\t\t    <name>skip-all-tests</name>\n\t\t\t    <value>true</value>\n\t\t\t</property>\n\t\t    </activation>\n\t\t    <properties>\n\t\t\t<maven.test.skip>true</maven.test.skip>\n\t\t    </properties>\n\t\t</profile>\n\t\t<profile>\n\t\t\t<id>skip-online-price-tests</id>\n\t\t\t<activation>\n\t\t\t\t<property>\n\t\t\t\t\t<name>skip-online-price-tests</name>\n\t\t\t\t\t<value>true</value>\n\t\t\t\t</property>\n\t\t\t</activation>\n\t\t\t<properties>\n\t\t\t\t<tests.to.skip>**/*PriceDataGetterOnlineTest.java</tests.to.skip>\n\t\t\t</properties>\n\t\t</profile>\n\t\t<!-- JDK support -->\n\t\t<profile>\n\t\t\t<id>jdk11</id>\n\t\t\t<activation>\n\t\t\t\t<activeByDefault>false</activeByDefault>\n\t\t\t\t<jdk>11</jdk>\n\t\t\t</activation>\n\t\t\t<properties>\n\t\t\t\t<project.build.sourceVersion>11</project.build.sourceVersion>\n\t\t\t</properties>\n\t\t</profile>\n\t\t<profile>\n\t\t\t<id>jdk17</id>\n\t\t\t<activation>\n\t\t\t\t<activeByDefault>false</activeByDefault>\n\t\t\t\t<jdk>17</jdk>\n\t\t\t</activation>\n\t\t\t<properties>\n\t\t\t\t<project.build.sourceVersion>17</project.build.sourceVersion>\n\t\t\t</properties>\n\t\t\t<build>\n\t\t\t\t<plugins>\n\t\t\t\t\t<plugin>\n\t\t\t\t\t\t<groupId>org.codehaus.izpack</groupId>\n\t\t\t\t\t\t<artifactId>izpack-maven-plugin</artifactId>\n\t\t\t\t\t\t<version>5.0.3</version>\n\t\t\t\t\t\t<executions>\n\t\t\t\t\t\t\t<execution>\n\t\t\t\t\t\t\t\t<id>izpack</id>\n\t\t\t\t\t\t\t\t<phase>none</phase>\n\t\t\t\t\t\t\t</execution>\n\t\t\t\t\t\t</executions>\n\t\t\t\t\t</plugin>\n\t\t\t\t</plugins>\n\t\t\t</build>\n\t\t</profile>\n\t</profiles>\n\n\t<repositories>\n\t\t<repository>\n\t\t\t<snapshots>\n\t\t\t\t<enabled>false</enabled>\n\t\t\t</snapshots>\n\t\t\t<id>central</id>\n\t\t\t<name>Maven Central</name>\n\t\t\t<url>https://repo.maven.apache.org/maven2/</url>\n\t\t</repository>\n\t\t<repository>\n\t\t\t<id>maven.nikr.net</id>\n\t\t\t<name>maven.nikr.net</name>\n\t\t\t<releases>\n\t\t\t\t<enabled>true</enabled>\n\t\t\t</releases>\n\t\t\t<snapshots>\n\t\t\t\t<enabled>true</enabled>\n\t\t\t</snapshots>\n\t\t\t<url>https://maven.nikr.net/</url>\n\t\t</repository>\n\t\t<repository>\n\t\t\t<id>jitpack.io</id>\n\t\t\t<url>https://jitpack.io</url>\n\t\t</repository>\n\t</repositories>\n\n\t<dependencies>\n\t\t<dependency>\n\t\t\t<groupId>net.troja.eve</groupId>\n\t\t\t<artifactId>eve-esi</artifactId>\n\t\t\t<version>7.0.0</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>uk.me.candle</groupId>\n\t\t\t<artifactId>pricing</artifactId>\n\t\t\t<version>3.1.2</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>uk.me.candle</groupId>\n\t\t\t<artifactId>routing</artifactId>\n\t\t\t<version>2.0.0</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>uk.me.candle</groupId>\n\t\t\t<artifactId>translations</artifactId>\n\t\t\t<version>3.1.1</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>com.glazedlists</groupId>\n\t\t\t<artifactId>glazedlists</artifactId>\n\t\t\t<version>1.11.0</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>net.sf.supercsv</groupId>\n\t\t\t<artifactId>super-csv</artifactId>\n\t\t\t<version>2.4.0</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>junit</groupId>\n\t\t\t<artifactId>junit</artifactId>\n\t\t\t<version>4.13.2</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.hamcrest</groupId>\n\t\t\t<artifactId>hamcrest</artifactId>\n\t\t\t<version>2.2</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<!-- slf4j http://www.slf4j.org/news.html -->\n\t\t\t<groupId>org.slf4j</groupId>\n\t\t\t<artifactId>slf4j-api</artifactId>\n\t\t\t<version>2.0.16</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<!-- log4j to slf4j API -->\n\t\t\t<groupId>org.slf4j</groupId>\n\t\t\t<artifactId>log4j-over-slf4j</artifactId>\n\t\t\t<version>2.0.16</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<!-- commons-logging to slf4j API -->\n\t\t\t<groupId>org.slf4j</groupId>\n\t\t\t<artifactId>jcl-over-slf4j</artifactId>\n\t\t\t<version>2.0.16</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<!-- java.util.logging to the slf4j API -->\n\t\t\t<groupId>org.slf4j</groupId>\n\t\t\t<artifactId>jul-to-slf4j</artifactId>\n\t\t\t<version>2.0.16</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<!-- use logback for logging -->\n\t\t\t<!-- http://logback.qos.ch/news.html -->\n\t\t\t<groupId>ch.qos.logback</groupId>\n\t\t\t<artifactId>logback-classic</artifactId>\n\t\t\t<version>1.3.15</version>\n\t\t</dependency>\n\t\t <dependency>\n\t\t\t <!-- use logback for logging -->\n\t\t\t<groupId>ch.qos.logback</groupId>\n\t\t\t<artifactId>logback-core</artifactId>\n\t\t\t<version>1.3.15</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<!-- https://github.com/jfree/jfreechart/releases -->\n\t\t\t<groupId>org.jfree</groupId>\n\t\t\t<artifactId>jfreechart</artifactId>\n\t\t\t<version>1.5.3</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<!-- https://github.com/LGoodDatePicker/LGoodDatePicker/releases -->\n\t\t\t<groupId>com.github.lgooddatepicker</groupId>\n\t\t\t<artifactId>LGoodDatePicker</artifactId>\n\t\t\t<version>11.2.1</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<!-- https://github.com/xerial/sqlite-jdbc/releases -->\n\t\t\t<groupId>org.xerial</groupId>\n\t\t\t<artifactId>sqlite-jdbc</artifactId>\n\t\t\t<version>3.50.3.0</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<!-- https://github.com/remkop/picocli/releases -->\n\t\t\t<groupId>info.picocli</groupId>\n\t\t\t<artifactId>picocli</artifactId>\n\t\t\t<version>4.6.2</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>javax.xml.bind</groupId>\n\t\t\t<artifactId>jaxb-api</artifactId>\n\t\t\t<version>2.3.1</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.dom4j</groupId>\n\t\t\t<artifactId>dom4j</artifactId>\n\t\t\t<version>2.1.3</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>jaxen</groupId>\n\t\t\t<artifactId>jaxen</artifactId>\n\t\t\t<version>1.2.0</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<!-- https://github.com/java-native-access/jna/blob/master/CHANGES.md -->\n\t\t\t<groupId>net.java.dev.jna</groupId>\n\t\t\t<artifactId>jna-platform</artifactId>\n\t\t\t<version>5.6.0</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<!-- https://github.com/JFormDesigner/FlatLaf/blob/master/CHANGELOG.md -->\n\t\t\t<groupId>com.formdev</groupId>\n\t\t\t<artifactId>flatlaf</artifactId>\n\t\t\t<version>3.4.1</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<!-- https://github.com/JFormDesigner/FlatLaf/blob/master/CHANGELOG.md -->\n\t\t\t<groupId>com.formdev</groupId>\n\t\t\t<artifactId>flatlaf-extras</artifactId>\n\t\t\t<version>3.4.1</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<!-- https://github.com/uklimaschewski/EvalEx/releases -->\n\t\t\t<groupId>com.udojava</groupId>\n\t\t\t<artifactId>EvalEx</artifactId>\n\t\t\t<version>2.7</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>com.github.umjammer</groupId>\n\t\t\t<artifactId>jlayer</artifactId>\n\t\t\t<version>1.0.2</version>\n\t\t</dependency>\n\t</dependencies>\n\n\t<properties>\n\t\t<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n\t\t<project.build.sourceVersion>1.8</project.build.sourceVersion>\n\t\t<targetJdk>1.8</targetJdk>\n\t\t<main.class>net.nikr.eve.jeveasset.Main</main.class>\n\t\t<arg1></arg1>\n\t\t<arg2></arg2>\n\t\t<!-- always do EDT debug when doing devlopment! -->\n\t\t<edt.debug>-edtdebug</edt.debug>\n\t</properties>\n</project>\n"
  },
  {
    "path": "readme.txt",
    "content": "\r\n\r\n               ########             #####\r\n               ########            #######\r\n               ###                ###   ###\r\n             # ######## #  # #### ######### #### #### #### ##### ####\r\n               ######## #  # #    ######### #    #    #      #   #\r\n             # ###      #  # #### ###   ### #### #### ####   #   ####\r\n             # ######## #### #    ###   ###    #    # #      #      #\r\n             # ########  ##  #### ###   ### #### #### ####   #   ####\r\n             #\r\n           ###         #### ####  ##  ###  ## ## ####\r\n                       #  # #    #  # #  # # # # #\r\n                       #### #### #### #  # #   # ####\r\n                       # #  #    #  # #  # #   # #\r\n                       #  # #### #  # ###  #   # ####\r\n\r\n________________________________________________________________________________\r\n_ABOUT__________________________________________________________________________\r\n\r\njEveAssets is an out-of-game asset manager for Eve-Online, written in Java\r\n\r\n________________________________________________________________________________\r\n_FAQ____________________________________________________________________________\r\n\r\nPlease see the online FAQ\r\n\r\nLink:\r\n  https://wiki.jeveassets.org/faq\r\n\r\n________________________________________________________________________________\r\n_CONTACT________________________________________________________________________\r\n\r\nwww:\r\n  https://eve.nikr.net/jeveasset\r\n\r\nemail:\r\n  niklaskr@gmail.com\r\n\r\nEve-Online forum thread:\r\n  https://forums.eveonline.com/t/13255\r\n\r\nDiscord:\r\n  https://discord.gg/8kYZvbM\r\n\r\n________________________________________________________________________________\r\n________________________________________________________________________________\r\n"
  },
  {
    "path": "src/main/assembly/assembly.xml",
    "content": "<assembly xmlns=\"http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd\">\n\t<id>bin</id>\n\t<baseDirectory>/</baseDirectory>\n\t<includeBaseDirectory>false</includeBaseDirectory>\n\t<formats>\n\t\t<format>zip</format>\n\t</formats>\n\t<fileSets>\n\t\t<fileSet>\n\t\t\t<directory>${project.build.directory}</directory>\n\t\t\t<useDefaultExcludes>true</useDefaultExcludes>\n\t\t\t<outputDirectory>/jEveAssets/</outputDirectory>\n\t\t\t<includes>\n\t\t\t\t<include>*.txt</include>\n\t\t\t\t<include>jeveassets.jar</include>\n\t\t\t\t<include>jmemory.jar</include>\n\t\t\t\t<include>*.properties</include>\n\t\t\t\t<include>lib/*</include>\n\t\t\t\t<include>data/*</include>\n\t\t\t</includes>\n\t\t</fileSet>\n\t</fileSets>\n</assembly>"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/CliExport.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset;\r\n\r\nimport ca.odell.glazedlists.EventList;\r\nimport ca.odell.glazedlists.FilterList;\r\nimport ca.odell.glazedlists.matchers.Matcher;\r\nimport java.util.ArrayList;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport java.util.TreeMap;\r\nimport java.util.TreeSet;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileData;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileManager;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\r\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.shared.StringComparators;\r\nimport net.nikr.eve.jeveasset.gui.shared.filter.ExportTableData;\r\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter;\r\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterLogicalMatcher;\r\nimport net.nikr.eve.jeveasset.gui.shared.filter.SimpleTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\r\nimport net.nikr.eve.jeveasset.gui.tabs.assets.AssetsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.contracts.ContractsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.items.ItemsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.jobs.IndustryJobsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.journal.JournalTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.loadout.Loadout;\r\nimport net.nikr.eve.jeveasset.gui.tabs.loadout.LoadoutData;\r\nimport net.nikr.eve.jeveasset.gui.tabs.loadout.LoadoutsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.materials.MaterialsData;\r\nimport net.nikr.eve.jeveasset.gui.tabs.materials.MaterialsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.mining.MiningTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.orders.MarketOrdersTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.overview.Overview;\r\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewData;\r\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewTab.View;\r\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.reprocessed.ReprocessedData;\r\nimport net.nikr.eve.jeveasset.gui.tabs.reprocessed.ReprocessedTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.routing.RoutingTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.slots.SlotsData;\r\nimport net.nikr.eve.jeveasset.gui.tabs.slots.SlotsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.StockpileData;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.StockpileTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.tracker.TrackerTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.transaction.TransactionTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.tree.TreeData;\r\nimport net.nikr.eve.jeveasset.gui.tabs.tree.TreeTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.IskData;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.ValueTableTab;\r\nimport net.nikr.eve.jeveasset.io.online.PriceDataGetter;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class CliExport {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(CliExport.class);\r\n\r\n\tpublic static enum ExportTool {\r\n\t\tASSETS(\"Assets\", CliOptions.ASSETS, AssetsTab.NAME),\r\n\t\tCONTRACTS(\"Contracts\", CliOptions.CONTRACTS, ContractsTab.NAME),\r\n\t\tINDUSTRY_JOBS(\"Industry Jobs\", CliOptions.INDUSTRY_JOBS, IndustryJobsTab.NAME),\r\n\t\tSLOTS(\"Slots\", CliOptions.SLOTS, SlotsTab.NAME),\r\n\t\tISK(\"Isk\", CliOptions.ISK, ValueTableTab.NAME),\r\n\t\tITEMS(\"Items\", CliOptions.ITEMS, ItemsTab.NAME),\r\n\t\tJOURNAL(\"Journal\", CliOptions.JOURNAL, JournalTab.NAME),\r\n\t\tLOADOUTS(\"Ship Fittings\", CliOptions.LOADOUTS, LoadoutsTab.NAME),\r\n\t\tMATERIALS(\"Materials\", CliOptions.MATERIALS, MaterialsTab.NAME),\r\n\t\tMARKET_ORDERS(\"Market Orders\", CliOptions.MARKET_ORDERS, MarketOrdersTab.NAME),\r\n\t\tMINING(\"Mining\", CliOptions.MINING, MiningTab.NAME),\r\n\t\tOVERVIEW_PLANETS(\"Overview Planets\", CliOptions.OVERVIEW, OverviewTab.NAME),\r\n\t\tOVERVIEW_STATIONS(\"Overview Stations\", CliOptions.OVERVIEW, OverviewTab.NAME),\r\n\t\tOVERVIEW_SYSTEMS(\"Overview Systems\", CliOptions.OVERVIEW, OverviewTab.NAME),\r\n\t\tOVERVIEW_CONSTELLATIONS(\"Overview Constellations\", CliOptions.OVERVIEW, OverviewTab.NAME),\r\n\t\tOVERVIEW_REGIONS(\"Overview Regions\", CliOptions.OVERVIEW, OverviewTab.NAME),\r\n\t\tOVERVIEW_GROUPS(\"Overview Groups\", CliOptions.OVERVIEW, OverviewTab.NAME),\r\n\t\tREPROCESSED(\"Reprocessed\", CliOptions.REPROCESSED, ReprocessedTab.NAME),\r\n\t\tROUTING(\"Routing\", CliOptions.ROUTING, RoutingTab.NAME),\r\n\t\tSKILLS(\"Skills\", CliOptions.SKILLS, ValueTableTab.NAME),\r\n\t\tSTOCKPILE(\"Stockpile\", CliOptions.STOCKPILE, StockpileTab.NAME),\r\n\t\tTRACKER(\"Tracker\", CliOptions.TRACKER, TrackerTab.NAME),\r\n\t\tTRANSACTIONS(\"Transactions\", CliOptions.TRANSACTIONS, TransactionTab.NAME),\r\n\t\tTREE_LOCATION(\"Tree Location\", CliOptions.TREE_LOCATION, TreeTab.NAME),\r\n\t\tTREE_CATEGORY(\"Tree Category\", CliOptions.TREE_CATEGORY, TreeTab.NAME),\r\n\t\t;\r\n\r\n\t\tprivate final String name;\r\n\t\tprivate final String exportName;\r\n\t\tprivate final String toolName;\r\n\r\n\t\tprivate ExportTool(String name, String exportName, String toolName) {\r\n\t\t\tthis.name = name;\r\n\t\t\tthis.exportName = exportName;\r\n\t\t\tthis.toolName = toolName;\r\n\t\t}\r\n\r\n\t\tpublic String getFilename() {\r\n\t\t\treturn name.replace(\" \", \"_\").toLowerCase();\r\n\t\t}\r\n\r\n\t\tpublic String getName() {\r\n\t\t\treturn name;\r\n\t\t}\r\n\r\n\t\tpublic String getExportName() {\r\n\t\t\treturn exportName;\r\n\t\t}\r\n\r\n\t\tpublic String getToolName() {\r\n\t\t\treturn toolName;\r\n\t\t}\r\n\t}\r\n\r\n\tint export() {\r\n\t\tPriceDataGetter priceDataGetter = new PriceDataGetter();\r\n\t\tpriceDataGetter.load();\r\n\r\n\t\tProfileManager profileManager = new ProfileManager();\r\n\t\tprofileManager.searchProfile();\r\n\t\tprofileManager.loadActiveProfile();\r\n\r\n\t\tProfileData profileData = new ProfileData(profileManager);\r\n\t\tprofileData.updateEventLists();\r\n\r\n\t\tint fails = 0;\r\n\t\tfor (Map.Entry<ExportTool, List<ExportSettings>> entry : CliOptions.get().getExportSettings().entrySet()) {\r\n\t\t\tExportTool tool = entry.getKey();\r\n\t\t\tString toolName = tool.getToolName();\r\n\t\t\tboolean ok;\r\n\t\t\tfor (ExportSettings exportSettings : entry.getValue()) {\r\n\t\t\t\tswitch (tool) {\r\n\t\t\t\t\tcase ASSETS:\r\n\t\t\t\t\t\tok = export(profileData.getAssetsEventList(), TableFormatFactory.assetTableFormat(), toolName, exportSettings);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase CONTRACTS:\r\n\t\t\t\t\t\tok = export(profileData.getContractItemEventList(), TableFormatFactory.contractsTableFormat(), toolName, exportSettings);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase INDUSTRY_JOBS:\r\n\t\t\t\t\t\tok = export(profileData.getIndustryJobsEventList(), TableFormatFactory.industryJobTableFormat(), toolName, exportSettings);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase SLOTS:\r\n\t\t\t\t\t\tok = export(new SlotsData(profileManager, profileData).getData(), TableFormatFactory.slotTableFormat(), toolName, exportSettings);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase ISK:\r\n\t\t\t\t\t\tok = export(new IskData(profileManager, profileData).getData(), TableFormatFactory.valueTableFormat(), toolName, exportSettings);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase ITEMS:\r\n\t\t\t\t\t\tok = export(EventListManager.create(StaticData.get().getItems().values()), TableFormatFactory.itemTableFormat(), toolName, exportSettings);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase JOURNAL:\r\n\t\t\t\t\t\tok = export(profileData.getJournalEventList(), TableFormatFactory.journalTableFormat(), toolName, exportSettings);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase LOADOUTS:\r\n\t\t\t\t\t\tok = exportLoadout(profileManager, profileData, exportSettings, toolName);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase MARKET_ORDERS:\r\n\t\t\t\t\t\tok = export(profileData.getMarketOrdersEventList(), TableFormatFactory.marketTableFormat(), toolName, exportSettings);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase MATERIALS:\r\n\t\t\t\t\t\tok = export(new MaterialsData(profileManager, profileData).getData(CliOptions.get().getMaterialsOwner(), CliOptions.get().isMaterialsOre(), CliOptions.get().isMaterialsPI(), CliOptions.get().isMaterialsCommodity()), TableFormatFactory.materialTableFormat(), toolName, exportSettings);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase MINING:\r\n\t\t\t\t\t\tok = export(profileData.getMiningEventList(), TableFormatFactory.miningTableFormat(), toolName, exportSettings);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase OVERVIEW_STATIONS:\r\n\t\t\t\t\t\tok = exportOverview(profileManager, profileData, exportSettings, toolName, View.STATIONS);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase OVERVIEW_PLANETS:\r\n\t\t\t\t\t\tok = exportOverview(profileManager, profileData, exportSettings, toolName, View.PLANETS);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase OVERVIEW_SYSTEMS:\r\n\t\t\t\t\t\tok = exportOverview(profileManager, profileData, exportSettings, toolName, View.SYSTEMS);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase OVERVIEW_CONSTELLATIONS:\r\n\t\t\t\t\t\tok = exportOverview(profileManager, profileData, exportSettings, toolName, View.CONSTELLATIONS);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase OVERVIEW_REGIONS:\r\n\t\t\t\t\t\tok = exportOverview(profileManager, profileData, exportSettings, toolName, View.REGIONS);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase OVERVIEW_GROUPS:\r\n\t\t\t\t\t\tok = exportOverview(profileManager, profileData, exportSettings, toolName, View.GROUPS);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase REPROCESSED:\r\n\t\t\t\t\t\tok = exportReprocessed(profileManager, profileData, exportSettings, toolName);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase ROUTING: //ToDo: Not a table tool\r\n\t\t\t\t\t\tok = false;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase SKILLS:\r\n\t\t\t\t\t\tok = export(profileData.getSkillsEventList(), TableFormatFactory.skillsTableFormat(), toolName, exportSettings);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase STOCKPILE:\r\n\t\t\t\t\t\tok = export(new StockpileData(profileManager, profileData).getData(), TableFormatFactory.stockpileTableFormat(), toolName, exportSettings);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase TRACKER: //ToDo: Not a table tool\r\n\t\t\t\t\t\tok = false;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase TRANSACTIONS:\r\n\t\t\t\t\t\tok = export(profileData.getTransactionsEventList(), TableFormatFactory.transactionTableFormat(), toolName, exportSettings);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase TREE_LOCATION:\r\n\t\t\t\t\t\tok = export(new TreeData(profileManager, profileData).getDataLocations(), TableFormatFactory.treeTableFormat(), toolName, exportSettings);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase TREE_CATEGORY:\r\n\t\t\t\t\t\tok = export(new TreeData(profileManager, profileData).getDataCategories(), TableFormatFactory.treeTableFormat(), toolName, exportSettings);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tok = false;\r\n\t\t\t\t}\r\n\t\t\t\tif (!ok) {\r\n\t\t\t\t\tLOG.error(tool.getName() + \" export failed\");\r\n\t\t\t\t\tfails++;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tLOG.info(tool.getName() + \" data exported\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tStringBuilder builder = new StringBuilder();\r\n\t\tif (CliOptions.get().getExportSettings().size() == fails) {\r\n\t\t\tbuilder.append(\"Failed to export data\");\r\n\t\t} else {\r\n\t\t\tbuilder.append(\"Data exported\");\r\n\t\t\tif (fails == 0) {\r\n\t\t\t\tbuilder.append(\" successfully\");\r\n\t\t\t} else {\r\n\t\t\t\tbuilder.append(\" with \");\r\n\t\t\t\tbuilder.append(fails);\r\n\t\t\t\tbuilder.append(\" error\");\r\n\t\t\t\tif (fails > 1) {\r\n\t\t\t\t\tbuilder.append(\"s\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbuilder.append(\" to \");\r\n\t\t\tbuilder.append(CliOptions.get().getOutputDirectory());\r\n\t\t}\r\n\t\tif (fails == 0) {\r\n\t\t\tLOG.info(builder.toString());\r\n\t\t} else {\r\n\t\t\tLOG.warn(builder.toString());\r\n\t\t}\r\n\t\treturn -fails; //Return negative exit code\r\n\t}\r\n\r\n\tprivate boolean exportLoadout(ProfileManager profileManager, ProfileData profileData, ExportSettings exportSettings, String toolName) {\r\n\t\tSet<String> loadoutsNames = CliOptions.get().getLoadoutsNames();\r\n\t\tSet<Integer> loadoutsIDs = CliOptions.get().getLoadoutsIDs();\r\n\t\tEventList<Loadout> eventList = new LoadoutData(profileManager, profileData).getData();\r\n\t\tif ((loadoutsNames != null && !loadoutsNames.isEmpty())\r\n\t\t\t|| (loadoutsIDs != null && !loadoutsIDs.isEmpty())) {\r\n\t\t\tFilterList<Loadout> filterList = new FilterList<>(eventList, new LoadoutMatcher(loadoutsNames, loadoutsIDs));\r\n\t\t\treturn export(filterList, TableFormatFactory.loadoutTableFormat(), toolName, exportSettings);\r\n\t\t} else {\r\n\t\t\treturn export(eventList, TableFormatFactory.loadoutTableFormat(), toolName, exportSettings);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate boolean exportReprocessed(ProfileManager profileManager, ProfileData profileData, ExportSettings exportSettings, String toolName) {\r\n\t\tMap<Item, Long> items = new HashMap<>();\r\n\t\tSet<Integer> typeIDs = CliOptions.get().getReprocessedIDs();\r\n\t\tif (typeIDs != null) {\r\n\t\t\t//IDs to Items\r\n\t\t\tfor (Integer typeID : typeIDs) {\r\n\t\t\t\tItem item = StaticData.get().getItems().get(typeID);\r\n\t\t\t\tif (item != null) {\r\n\t\t\t\t\titems.put(item, 1L);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tSet<String> typeNames = CliOptions.get().getReprocessedNames();\r\n\t\tif (typeNames != null && !typeNames.isEmpty()) {\r\n\t\t\tif (typeNames.size() > 1) {\r\n\t\t\t\t//Build {name, item} Cache\r\n\t\t\t\tMap<String, Item> itemsNyName = new TreeMap<>(StringComparators.CASE_INSENSITIVE);\r\n\t\t\t\tfor (Item item : StaticData.get().getItems().values()) {\r\n\t\t\t\t\titemsNyName.put(item.getTypeName(), item);\r\n\t\t\t\t}\r\n\t\t\t\t//Names to Items\r\n\t\t\t\tfor (String typeName : typeNames) {\r\n\t\t\t\t\tItem item = itemsNyName.get(typeName);\r\n\t\t\t\t\tif (item != null) {\r\n\t\t\t\t\t\titems.put(item, 1L);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tString typeName = typeNames.iterator().next();\r\n\t\t\t\tfor (Item item : StaticData.get().getItems().values()) {\r\n\t\t\t\t\tif (typeName.equalsIgnoreCase(item.getTypeName())) {\r\n\t\t\t\t\t\titems.put(item, 1L);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn export(new ReprocessedData(profileManager, profileData).getData(items), TableFormatFactory.reprocessedTableFormat(), toolName, exportSettings);\r\n\t}\r\n\r\n\tprivate boolean exportOverview(ProfileManager profileManager, ProfileData profileData, ExportSettings exportSettings, String toolName, View view) {\r\n\t\tString owner = \"\"; //ToDo: Owner is not settable (yet?)\r\n\t\tString filterName = exportSettings.getFilterName();\r\n\t\t//Assets Filter\r\n\t\tList<Filter> filter;\r\n\t\tif (filterName == null) {\r\n\t\t\tfilter = new ArrayList<>();\r\n\t\t} else if (filterName.isEmpty()) {\r\n\t\t\tfilter = Settings.get().getCurrentTableFilters(ExportTool.ASSETS.getToolName());\r\n\t\t} else {\r\n\t\t\tfilter = Settings.get().getTableFilters(ExportTool.ASSETS.getToolName()).get(filterName);\r\n\t\t\tif (filter == null) {\r\n\t\t\t\tLOG.error(toolName + \": No such saved filter (\" + filterName + \")\");\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Assets Filtered\r\n\t\tFilterList<MyAsset> filterList = new FilterList<>(profileData.getAssetsEventList(), new FilterLogicalMatcher<>(TableFormatFactory.assetTableFormat(), null, filter));\r\n\t\t//Overview\r\n\t\tEnumTableFormatAdaptor<OverviewTableFormat, Overview> tableFormat = TableFormatFactory.overviewTableFormat();\r\n\t\tOverviewTab.updateShownColumns(tableFormat, view);\r\n\t\treturn ExportTableData.exportEmpty(new OverviewData(profileManager, profileData).getData(filterList, owner, view), tableFormat, toolName, exportSettings);\r\n\t}\r\n\r\n\tprivate <T extends Enum<T> & EnumTableColumn<Q>, Q> boolean export(EventList<Q> data, final SimpleTableFormat<Q> tableFormat, String toolName, ExportSettings exportSettings) {\r\n\t\treturn ExportTableData.exportAutoNoCache(data, tableFormat, toolName, exportSettings);\r\n\t}\r\n\r\n\tprivate static class LoadoutMatcher implements Matcher<Loadout> {\r\n\t\tprivate final Set<String> loadoutsNames = new TreeSet<>(StringComparators.CASE_INSENSITIVE);\r\n\t\tprivate final Set<Integer> loadoutsIDs;\r\n\r\n\t\tpublic LoadoutMatcher(Set<String> loadoutsNames, Set<Integer> loadoutsIDs) {\r\n\t\t\tif (loadoutsNames != null) {\r\n\t\t\t\tthis.loadoutsNames.addAll(loadoutsNames);\r\n\t\t\t}\r\n\t\t\tif (loadoutsIDs != null) {\r\n\t\t\t\tthis.loadoutsIDs = loadoutsIDs;\r\n\t\t\t} else {\r\n\t\t\t\tthis.loadoutsIDs = new HashSet<>();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean matches(Loadout item) {\r\n\t\t\tif (loadoutsNames.contains(item.getShipItemName())) {\r\n\t\t\t\treturn true;\r\n\t\t\t} else if (loadoutsNames.contains(item.getShipTypeName())) {\r\n\t\t\t\treturn true;\r\n\t\t\t} else if (loadoutsIDs.contains(item.getShipTypeID())) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/CliOptions.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset;\r\n\r\nimport java.io.File;\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport java.util.logging.Level;\r\nimport java.util.logging.Logger;\r\nimport net.nikr.eve.jeveasset.CliExport.ExportTool;\r\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings;\r\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings.ColumnSelection;\r\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings.DecimalSeparator;\r\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings.ExportFormat;\r\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings.FilterSelection;\r\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings.LineDelimiter;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\r\nimport picocli.CommandLine;\r\nimport picocli.CommandLine.ArgGroup;\r\nimport picocli.CommandLine.Command;\r\nimport picocli.CommandLine.Option;\r\nimport picocli.CommandLine.PicocliException;\r\n\r\n\r\n@Command(sortOptions = false,\r\n\t\tsynopsisHeading = \"\",\r\n\t\tcustomSynopsis = \"Usage: java [-Djava.awt.headless=true] -jar jeveassets.jar [-h] [-v] [-p] [-z] [-u] [-e [OPTIONS]]\",\r\n\t\tdescription=\"%n  -Djava.awt.headless=true   Run without a GUI%n\"\r\n\t\t\t\t+ \"                             Java parameter (must be specified before -jar)\"\r\n\t\t)\r\npublic class CliOptions {\r\n\r\n\tprivate static final Logger LOG = Logger.getLogger(CliOptions.class.getName());\r\n\r\n\tpublic static final String ASSETS = \"assets\";\r\n\tpublic static final String CONTRACTS = \"contracts\";\r\n\tpublic static final String INDUSTRY_JOBS = \"industryjobs\";\r\n\tpublic static final String SLOTS = \"slots\";\r\n\tpublic static final String ISK = \"isk\";\r\n\tpublic static final String ITEMS = \"items\";\r\n\tpublic static final String JOURNAL = \"journal\";\r\n\tpublic static final String LOADOUTS = \"fittings\";\r\n\tpublic static final String MATERIALS = \"materials\";\r\n\tpublic static final String MARKET_ORDERS = \"marketorders\";\r\n\tpublic static final String MINING = \"mining\";\r\n\tpublic static final String OVERVIEW = \"overview\";\r\n\tpublic static final String REPROCESSED = \"reprocessed\";\r\n\tpublic static final String ROUTING = \"routing\"; //ToDo\r\n\tpublic static final String SKILLS = \"skills\";\r\n\tpublic static final String STOCKPILE = \"stockpile\";\r\n\tpublic static final String TRACKER = \"tracker\"; //ToDo\r\n\tpublic static final String TRANSACTIONS = \"transactions\";\r\n\tpublic static final String TREE_LOCATION = \"tree-location\";\r\n\tpublic static final String TREE_CATEGORY = \"tree-category\";\r\n\tprivate static final String REPROCESSED_NAMES = \"-\"+REPROCESSED+\"-names\";\r\n\tprivate static final String REPROCESSED_IDS = \"-\"+REPROCESSED+\"-ids\";\r\n\tprivate static final String END_GROUP = \"%n\";\r\n\tprivate static final String TOOLS_BEFORE = \"Export \";\r\n\tprivate static final String TOOLS_AFTER = \" Data\";\r\n\tprivate static final String FILTER_BEFORE = \"Use saved filter for \";\r\n\tprivate static final String FILTER_AFTER = \" export\";\r\n\tprivate static final String FILTER_CMD = \"-filter\";\r\n\tprivate static final String FILTER_LABEL = \"filter\";\r\n\tprivate static final String VIEW_BEFORE = \"Use saved view for \";\r\n\tprivate static final String VIEW_AFTER = \" export\";\r\n\tprivate static final String VIEW_CMD = \"-view\";\r\n\tprivate static final String VIEW_LABEL = \"view\";\r\n\r\n\tprivate static final CliOptions CLI_OPTIONS = new CliOptions();\r\n\r\n\tpublic static CliOptions get() {\r\n\t\treturn CLI_OPTIONS;\r\n\t}\r\n\r\n\tpublic static CommandLine set(final String[] args) {\r\n\t\tCommandLine cmd = new CommandLine(CLI_OPTIONS);\r\n\t\ttry {\r\n\t\t\tcmd.parseArgs(args);\r\n\t\t} catch (PicocliException ex) {\r\n\t\t\tLOG.log(Level.SEVERE, ex.getMessage(), ex);\r\n\t\t\tSystem.exit(-1);\r\n\t\t}\r\n\t\tif (CLI_OPTIONS.help) {\r\n\t\t\tcmd.setUsageHelpWidth(110);\r\n\t\t\tcmd.setUsageHelpAutoWidth(true);\r\n\t\t\tcmd.usage(System.out);\r\n\t\t\tSystem.exit(0);\r\n\t\t}\r\n\t\tif (CLI_OPTIONS.version) {\r\n\t\t\tSystem.out.println(Program.PROGRAM_NAME + \" \" + Program.PROGRAM_VERSION);\r\n\t\t\tSystem.exit(0);\r\n\t\t}\r\n\t\treturn cmd;\r\n\t}\r\n\r\n\t@Option(names = {\"-h\", \"-help\", \"/?\"}, usageHelp = true, description = \"Display this help message\")\r\n\tboolean help;\r\n\t@Option(names = {\"-v\", \"-version\"}, versionHelp = true, description = \"Display version information\")\r\n\tboolean version;\r\n\t@Option(names = {\"-p\", \"-portable\"}, description = \"Run jEveAssets portable%nSave all data in the jEveAssets program directory \")\r\n\tboolean portable;\r\n\t@Option(names = {\"-z\", \"-lazysave\"}, description = \"Only save to disk on update and exit%n\"\r\n\t\t\t+ \"    Warning:%n\"\r\n\t\t\t+ \"    This may cause you to lose data if jEveAssets exit unexpectedly\" + END_GROUP)\r\n\tboolean lazySave;\r\n\r\n\t@ArgGroup(exclusive = false, heading = \"Update Options:%n\")\r\n\tUpdateOptions updateOptions;\r\n\r\n\tstatic class UpdateOptions {\r\n\t\t@Option(names = { \"-u\", \"-update\"}, required = true, description = \"Update Data%nUpdate all profiles and accounts%nAll data with cache expired will be updated\" + END_GROUP)\r\n\t\tboolean update;\r\n\t}\r\n\r\n\t@ArgGroup(exclusive = false, heading = \"Export Options:%n\")\r\n\tExportOptions exportOptions;\r\n\r\n\t//-u -e -html -csv -sql\r\n\t//-u -e -html -csv -sql -nodate\r\n\t//-u -e -html -csv -sql -nodate -assets-filter \"Propulsion Modules\" -reprocessed-ids 12066 -reprocessed-names \"100MN Afterburner II\"\r\n\t//-e -a -html -nodate -assets-filter \"Propulsion Modules\" -assets-view \"Simple\"\r\n\t//-e -a -html -nodate -assets-filter -assets-view\r\n\tpublic static class ExportOptions {\r\n\t\t@Option(names = { \"-e\", \"-export\"}, required = true, description = \"Export Data%n\")\r\n\t\tboolean export;\r\n\t\t@Option(names = { \"-f\", \"-output\" }, paramLabel = \"directory\", description = \"Output directory\")\r\n\t\tFile output;\r\n\t\t@Option(names = \"-nodate\", description = \"Do not include date and time in the filenames\")\r\n\t\tboolean noDate;\r\n\t\t@Option(names = \"-noformula\", description = \"Do not include formula columns\")\r\n\t\tboolean noFormulas;\r\n\t\t@Option(names = \"-nojumps\", description = \"Do not include jump columns\"\r\n\t\t\t\t+ END_GROUP + \"%nFormat Help:%nYou can select as many formats as you want\")\r\n\t\tboolean noJumps;\r\n\t\t@ArgGroup(exclusive = false)\r\n\t\tExportOptionsFormat exportOptionsFormat;\r\n\t\t@ArgGroup(exclusive = false)\r\n\t\tExportOptionsTools tools;\r\n\t\t@ArgGroup(exclusive = false)\r\n\t\tExportOptionsFilters filters = new ExportOptionsFilters();\r\n\t\t@ArgGroup(exclusive = false)\r\n\t\tExportOptionsView views = new ExportOptionsView();\r\n\t}\r\n\r\n\tstatic class ExportOptionsFormat {\r\n\t\t@ArgGroup(exclusive = false)\r\n\t\tExportOptionsCsv csv;\r\n\t\t@ArgGroup(exclusive = false)\r\n\t\tExportOptionsHtml html;\r\n\t\t@ArgGroup(exclusive = false)\r\n\t\tExportOptionsSql sql;\r\n\t}\r\n\r\n\tstatic class ExportOptionsCsv {\r\n\t\t@Option(names = \"-csv\", required = true, description = \"Export to CSV (default)\")\r\n\t\tboolean csv;\r\n\t\t@Option(names = \"-comma\", description = \"    Use comma as decimal separator and semicolon as field delimiter%n\"\r\n\t\t\t\t\t\t\t\t\t\t\t+ \"    Default is dot as decimal separator and comma as field delimiter\")\r\n\t\tboolean comma;\r\n\t\t@ArgGroup(exclusive = true)\r\n\t\tExportOptionsLine line;\r\n\t}\r\n\r\n\tstatic class ExportOptionsLine {\r\n\t\t@Option(names = \"-dos\", description = \"    Use DOS (\\\\r\\\\n) line terminator (default)\")\r\n\t\tboolean dos;\r\n\t\t@Option(names = \"-unix\", description = \"    Use UNIX (\\\\n) line terminator\")\r\n\t\tboolean unix;\r\n\t\t@Option(names = \"-mac\", description = \"    Use MAC (\\\\r) line terminator\"\r\n\t\t\t\t+ END_GROUP)\r\n\t\tboolean mac;\r\n\t}\r\n\r\n\tstatic class ExportOptionsHtml {\r\n\t\t@Option(names = \"-html\", required = true, description = \"Export to HTML\")\r\n\t\tboolean html;\r\n\t\t@Option(names = \"-nostyle\", description = \"    Do not style the HTML\" )\r\n\t\tboolean noStyle;\r\n\t\t@Option(names = \"-igb\", description = \"    Add in-game browser links\")\r\n\t\tboolean igb;\r\n\t\t@Option(names = \"-header\", arity = \"1\", paramLabel = \"row\", description = \"    Header every X row\"\r\n\t\t\t\t+ END_GROUP)\r\n\t\tint headers = 0;\r\n\t}\r\n\r\n\tstatic class ExportOptionsSql {\r\n\t\t@Option(names = \"-sql\", required = true, description = \"Export to SQL\")\r\n\t\tboolean sql;\r\n\t\t@Option(names = \"-droptable\", description = \"    Drop Table (if exist)\")\r\n\t\tboolean dropTable;\r\n\t\t@Option(names = \"-createtable\", description = \"    Create Table (if not exist)\")\r\n\t\tboolean createTable;\r\n\t\t@Option(names = \"-extended\", description = \"    Extended Inserts\"\r\n\t\t\t\t+ END_GROUP +\"%nTools Help:%nOmit all the tool parameters to export all tools\")\r\n\t\tboolean extendedInserts;\r\n\t}\r\n\r\n\tstatic class ExportOptionsTools {\r\n\t\t/**\r\n\t\t * Free letters: b w\r\n\t\t */\r\n\t\t@Option(names = {\"-a\" ,\"-\"+ASSETS}, description = TOOLS_BEFORE+\"Assets\"+TOOLS_AFTER)\r\n\t\tboolean assets;\r\n\t\t@Option(names = {\"-c\" ,\"-\"+CONTRACTS}, description = TOOLS_BEFORE+\"Contracts\"+TOOLS_AFTER)\r\n\t\tboolean contracts;\r\n\t\t@Option(names = {\"-i\" ,\"-\"+INDUSTRY_JOBS}, description = TOOLS_BEFORE+\"Industry Jobs\"+TOOLS_AFTER)\r\n\t\tboolean industryJobs;\r\n\t\t@Option(names = {\"-n\" ,\"-\"+SLOTS}, description = TOOLS_BEFORE+\"Slots\"+TOOLS_AFTER)\r\n\t\tboolean slots;\r\n\t\t@Option(names = {\"-k\" ,\"-\"+ISK}, description = TOOLS_BEFORE+\"Isk\"+TOOLS_AFTER)\r\n\t\tboolean isk;\r\n\t\t@Option(names = {\"-x\" ,\"-\"+ITEMS}, description = TOOLS_BEFORE+\"Items\"+TOOLS_AFTER)\r\n\t\tboolean items;\r\n\t\t@Option(names = {\"-j\" ,\"-\"+JOURNAL}, description = TOOLS_BEFORE+\"Journal\"+TOOLS_AFTER)\r\n\t\tboolean journal;\r\n\t\t@Option(names = {\"-y\" ,\"-\"+LOADOUTS}, description = TOOLS_BEFORE+\"Ship Fittings\"+TOOLS_AFTER)\r\n\t\tboolean loadouts;\r\n\t\t@Option(names = {\"-m\" ,\"-\"+MATERIALS}, description = TOOLS_BEFORE+\"Materials\"+TOOLS_AFTER)\r\n\t\tboolean materials;\r\n\t\t@Option(names = {\"-o\" ,\"-\"+MARKET_ORDERS}, description = TOOLS_BEFORE+\"Market Orders\"+TOOLS_AFTER)\r\n\t\tboolean marketOrders;\r\n\t\t@Option(names = {\"-d\" ,\"-\"+MINING}, description = TOOLS_BEFORE+\"Mining\"+TOOLS_AFTER)\r\n\t\tboolean mining;\r\n\t\t@Option(names = {\"-q\" ,\"-\"+SKILLS}, description = TOOLS_BEFORE+\"Skills\"+TOOLS_AFTER)\r\n\t\tboolean skills;\r\n\t\t@Option(names = {\"-s\" ,\"-\"+STOCKPILE}, description = TOOLS_BEFORE+\"Stockpile\"+TOOLS_AFTER)\r\n\t\tboolean stockpile;\r\n\t\t@Option(names = {\"-t\" ,\"-\"+TRANSACTIONS}, description = TOOLS_BEFORE+\"Transaction\"+TOOLS_AFTER)\r\n\t\tboolean transaction;\r\n\t\t@Option(names = {\"-g\" ,\"-\"+TREE_CATEGORY}, description = TOOLS_BEFORE+\"Tree Category\"+TOOLS_AFTER)\r\n\t\tboolean treeCategory;\r\n\t\t@Option(names = {\"-l\" ,\"-\"+TREE_LOCATION}, description = TOOLS_BEFORE+\"Tree Location\"+TOOLS_AFTER)\r\n\t\tboolean treeLocation;\r\n\t\t@Option(names = {\"-vs\", \"-\"+OVERVIEW+\"-stations\"}, description = TOOLS_BEFORE+\"Overview Stations\"+TOOLS_AFTER)\r\n\t\tboolean overviewStations;\r\n\t\t@Option(names = {\"-vp\", \"-\"+OVERVIEW+\"-planets\"}, description = TOOLS_BEFORE+\"Overview Planets\"+TOOLS_AFTER)\r\n\t\tboolean overviewPlanets;\r\n\t\t@Option(names = {\"-vy\", \"-\"+OVERVIEW+\"-systems\"}, description = TOOLS_BEFORE+\"Overview Systems\"+TOOLS_AFTER)\r\n\t\tboolean overviewSystems;\r\n\t\t@Option(names = {\"-vc\", \"-\"+OVERVIEW+\"-constellations\"}, description = TOOLS_BEFORE+\"Overview Constellations\"+TOOLS_AFTER)\r\n\t\tboolean overviewConstellations;\r\n\t\t@Option(names = {\"-vr\", \"-\"+OVERVIEW+\"-regions\"}, description = TOOLS_BEFORE+\"Overview Regions\"+TOOLS_AFTER)\r\n\t\tboolean overviewRegions;\r\n\t\t@Option(names = {\"-vg\", \"-\"+OVERVIEW+\"-groups\"}, description = TOOLS_BEFORE+\"Overview Groups\"+TOOLS_AFTER)\r\n\t\tboolean overviewGroups;\r\n\t\t@Option(names = {\"-rn\",REPROCESSED_NAMES}, arity = \"1..\", split = \",\", paramLabel = \"typeName\", description = TOOLS_BEFORE+\"Reprocessed\"+TOOLS_AFTER+\" for typeName(s)\")\r\n\t\tSet<String> reprocessedNames;\r\n\t\t@Option(names = {\"-ri\",REPROCESSED_IDS}, arity = \"1..\", split = \",\", paramLabel = \"typeID\", description = TOOLS_BEFORE+\"Reprocessed\"+TOOLS_AFTER+\" for typeID(s)\"\r\n\t\t\t\t+ END_GROUP + END_GROUP + \"%nFilters Help:%nOmit the parameter value to use the current filter%nOmit the parameter to use no filter\")\r\n\t\tSet<Integer> reprocessedIDs;\r\n\t}\r\n\r\n\tstatic class ExportOptionsFilters {\r\n\t\t@Option(names = \"-\"+ASSETS+FILTER_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = FILTER_LABEL, description = FILTER_BEFORE+\"Assets\"+FILTER_AFTER)\r\n\t\tString assetsFilter;\r\n\t\t@Option(names = \"-\"+CONTRACTS+FILTER_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = FILTER_LABEL, description = FILTER_BEFORE+\"Contracts\"+FILTER_AFTER)\r\n\t\tString contractsFilter;\r\n\t\t@Option(names = \"-\"+INDUSTRY_JOBS+FILTER_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = FILTER_LABEL, description = FILTER_BEFORE+\"Industry Jobs\"+FILTER_AFTER)\r\n\t\tString industryJobsFilter;\r\n\t\t@Option(names = \"-\"+SLOTS+FILTER_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = FILTER_LABEL, description = FILTER_BEFORE+\"Slots\"+FILTER_AFTER)\r\n\t\tString slotsFilter;\r\n\t\t@Option(names = \"-\"+ISK+FILTER_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = FILTER_LABEL, description = FILTER_BEFORE+\"Isk\"+FILTER_AFTER)\r\n\t\tString iskFilter;\r\n\t\t@Option(names = \"-\"+ITEMS+FILTER_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = FILTER_LABEL, description = FILTER_BEFORE+\"Items\"+FILTER_AFTER)\r\n\t\tString itemsFilter;\r\n\t\t@Option(names = \"-\"+JOURNAL+FILTER_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = FILTER_LABEL, description = FILTER_BEFORE+\"Journal\"+FILTER_AFTER)\r\n\t\tString journalFilter;\r\n\t\t@Option(names = \"-\"+LOADOUTS+\"-names\", arity = \"1..\", split = \",\", paramLabel = \"typeName|itemName\", description = \"Export Ship Fittings matching ships typeName or itemName\")\r\n\t\tSet<String> loadoutsNames;\r\n\t\t@Option(names = \"-\"+LOADOUTS+\"-ids\", arity = \"1..\", split = \",\", paramLabel = \"typeID\", description = \"Export Ship Fittings matching ships typeID\")\r\n\t\tSet<Integer> loadoutsIDs;\r\n\t\t@Option(names = \"-\"+MATERIALS+\"-owner\", fallbackValue = \"\", arity = \"0..1\", paramLabel = \"owner\", description = \"Materials owner name\")\r\n\t\tString materialsOwner;\r\n\t\t@Option(names = \"-\"+MATERIALS+\"-pi\", fallbackValue = \"\", description = \"Materials include PI\")\r\n\t\tboolean materialsPI;\r\n\t\t@Option(names = \"-\"+MATERIALS+\"-ore\", fallbackValue = \"\", description = \"Materials include Ore\")\r\n\t\tboolean materialsOre;\r\n\t\t@Option(names = \"-\"+MATERIALS+\"-commodity\", fallbackValue = \"\", description = \"Materials include Commodity\")\r\n\t\tboolean materialsCommodity;\r\n\t\t@Option(names = \"-\"+MARKET_ORDERS+FILTER_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = FILTER_LABEL, description = FILTER_BEFORE+\"Market Orders\"+FILTER_AFTER)\r\n\t\tString marketOrdersFilter;\r\n\t\t@Option(names = \"-\"+MINING+FILTER_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = FILTER_LABEL, description = FILTER_BEFORE+\"Mining\"+FILTER_AFTER)\r\n\t\tString miningFilter;\r\n\t\t//Reprocesseddoes not support filters\r\n\t\t@Option(names = \"-\"+OVERVIEW+FILTER_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = FILTER_LABEL, description = FILTER_BEFORE+\"Asset filter to use with Overview\")\r\n\t\tString overviewFilter;\r\n\t\t@Option(names = \"-\"+SKILLS+FILTER_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = FILTER_LABEL, description = FILTER_BEFORE+\"Skills\"+FILTER_AFTER)\r\n\t\tString skillsFilter;\r\n\t\t@Option(names = \"-\"+STOCKPILE+FILTER_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = FILTER_LABEL, description = FILTER_BEFORE+\"Stockpile\"+FILTER_AFTER)\r\n\t\tString stockpileFilter;\r\n\t\t@Option(names = \"-\"+TRANSACTIONS+FILTER_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = FILTER_LABEL, description = FILTER_BEFORE+\"Transaction\"+FILTER_AFTER)\r\n\t\tString transactionFilter;\r\n\t\t@Option(names = \"-\"+TREE_CATEGORY+FILTER_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = FILTER_LABEL, description = FILTER_BEFORE+\"Tree Category\"+FILTER_AFTER)\r\n\t\tString treeFilterCategory;\r\n\t\t@Option(names = \"-\"+TREE_LOCATION+FILTER_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = FILTER_LABEL, description = FILTER_BEFORE+\"Tree Location\"+FILTER_AFTER\r\n\t\t\t\t+ END_GROUP + END_GROUP + \"%nViews Help:%nOmit the parameter value to use the current columns%nOmit the parameter to include all columns\")\r\n\t\tString treeFilterLocation;\r\n\t}\r\n\r\n\tstatic class ExportOptionsView {\r\n\t\t@Option(names = \"-\"+ASSETS+VIEW_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = VIEW_LABEL, description = VIEW_BEFORE+\"Assets\"+VIEW_AFTER)\r\n\t\tString assetsView;\r\n\t\t@Option(names = \"-\"+CONTRACTS+VIEW_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = VIEW_LABEL, description = VIEW_BEFORE+\"Contracts\"+VIEW_AFTER)\r\n\t\tString contractsView;\r\n\t\t@Option(names = \"-\"+INDUSTRY_JOBS+VIEW_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = VIEW_LABEL, description = VIEW_BEFORE+\"Industry Jobs\"+VIEW_AFTER)\r\n\t\tString industryJobsView;\r\n\t\t@Option(names = \"-\"+SLOTS+VIEW_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = VIEW_LABEL, description = VIEW_BEFORE+\"Slots\"+VIEW_AFTER)\r\n\t\tString slotsView;\r\n\t\t@Option(names = \"-\"+ISK+VIEW_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = VIEW_LABEL, description = VIEW_BEFORE+\"Isk\"+VIEW_AFTER)\r\n\t\tString iskView;\r\n\t\t@Option(names = \"-\"+ITEMS+VIEW_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = VIEW_LABEL, description = VIEW_BEFORE+\"Items\"+VIEW_AFTER)\r\n\t\tString itemsView;\r\n\t\t@Option(names = \"-\"+JOURNAL+VIEW_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = VIEW_LABEL, description = VIEW_BEFORE+\"Journal\"+VIEW_AFTER)\r\n\t\tString journalView;\r\n\t\t//Loadouts does not support views\r\n\t\t@Option(names = \"-\"+MATERIALS+VIEW_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = VIEW_LABEL, description = VIEW_BEFORE+\"Materials\"+VIEW_AFTER)\r\n\t\tString materialsView;\r\n\t\t@Option(names = \"-\"+MARKET_ORDERS+VIEW_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = VIEW_LABEL, description = VIEW_BEFORE+\"Market Orders\"+VIEW_AFTER)\r\n\t\tString marketOrdersView;\r\n\t\t@Option(names = \"-\"+MINING+VIEW_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = VIEW_LABEL, description = VIEW_BEFORE+\"Mining\"+VIEW_AFTER)\r\n\t\tString miningView;\r\n\t\t@Option(names = \"-\"+REPROCESSED+VIEW_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = VIEW_LABEL, description = VIEW_BEFORE+\"Reprocessed\"+VIEW_AFTER)\r\n\t\tString reprocessedView;\r\n\t\t//Overview does not support views\r\n\t\t@Option(names = \"-\"+SKILLS+VIEW_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = VIEW_LABEL, description = VIEW_BEFORE+\"Skills\"+VIEW_AFTER)\r\n\t\tString skillsView;\r\n\t\t@Option(names = \"-\"+STOCKPILE+VIEW_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = VIEW_LABEL, description = VIEW_BEFORE+\"Stockpile\"+VIEW_AFTER)\r\n\t\tString stockpileView;\r\n\t\t@Option(names = \"-\"+TRANSACTIONS+VIEW_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = VIEW_LABEL, description = VIEW_BEFORE+\"Transaction\"+VIEW_AFTER)\r\n\t\tString transactionView;\r\n\t\t@Option(names = \"-\"+TREE_CATEGORY+VIEW_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = VIEW_LABEL, description = VIEW_BEFORE+\"Tree Category\"+VIEW_AFTER)\r\n\t\tString treeViewCategory;\r\n\t\t@Option(names = \"-\"+TREE_LOCATION+VIEW_CMD, fallbackValue = \"\", arity = \"0..1\", paramLabel = VIEW_LABEL, description = VIEW_BEFORE+\"Tree Location\"+VIEW_AFTER\r\n\t\t\t\t+ END_GROUP + END_GROUP)\r\n\t\tString treeViewLocation;\r\n\t}\r\n\r\n\t@ArgGroup(exclusive = false, heading = \"Development Options (use at your own risk):%n\")\r\n\tDevOptions devOptions;\r\n\r\n\tstatic class DevOptions {\r\n\t\t@Option(names = { \"-debug\" }, description = \"Dev Command: Enable debug logging and other debug shenanigans\")\r\n\t\tboolean debug;\r\n\t\t@Option(names = { \"-edtdebug\" }, description = \"Dev Command: Detect painting outside EDT\")\r\n\t\tboolean edtdebug;\r\n\t\t@Option(names = { \"-noupdate\" }, description = \"Dev Command: Disable all updates\")\r\n\t\tboolean forceNoUpdate;\r\n\t\t@Option(names = { \"-forceupdate\" }, description = \"Dev Command: Ignore update times%n\"\r\n\t\t\t\t+ \"    Warning:%n\"\r\n\t\t\t\t+ \"    Using -forceupdate may get you banned from ESI%n\"\r\n\t\t\t\t+ \"    It does not give you access to any new data%n\"\r\n\t\t\t\t+ \"    You will just get a cached result and a lot of bad karma… \")\r\n\t\tboolean forceUpdate;\r\n\t\t@Option(names = { \"-jmemory\" }, description = \"Dev Command: Notify jEveAssets It's being run with jmemory.jar\")\r\n\t\tboolean jMemory;\r\n\t}\r\n\r\n\tprivate Map<ExportTool, List<ExportSettings>> settings = null;\r\n\r\n\tpublic Map<ExportTool, List<ExportSettings>> getExportSettings() {\r\n\t\tif (settings == null) {\r\n\t\t\tsettings = new HashMap<>();\r\n\t\t\tif (exportOptions == null) {\r\n\t\t\t\treturn settings;\r\n\t\t\t}\r\n\t\t\tExportOptionsTools tools = exportOptions.tools;\r\n\t\t\tExportOptionsFilters filters = exportOptions.filters;\r\n\t\t\tExportOptionsView views = exportOptions.views;\r\n\t\t\tif (tools == null || tools.assets) createExportSettings(ExportTool.ASSETS, filters.assetsFilter, views.assetsView);\r\n\t\t\tif (tools == null || tools.contracts) createExportSettings(ExportTool.CONTRACTS, filters.contractsFilter, views.contractsView);\r\n\t\t\tif (tools == null || tools.industryJobs) createExportSettings(ExportTool.INDUSTRY_JOBS, filters.industryJobsFilter, views.industryJobsView);\r\n\t\t\tif (tools == null || tools.slots) createExportSettings(ExportTool.SLOTS, filters.slotsFilter, views.slotsView);\r\n\t\t\tif (tools == null || tools.isk) createExportSettings(ExportTool.ISK, filters.iskFilter, views.iskView);\r\n\t\t\tif (tools == null || tools.items) createExportSettings(ExportTool.ITEMS, filters.itemsFilter, views.itemsView);\r\n\t\t\tif (tools == null || tools.journal) createExportSettings(ExportTool.JOURNAL, filters.journalFilter, views.journalView);\r\n\t\t\tif (tools == null || tools.loadouts) createExportSettings(ExportTool.LOADOUTS, null, null);\r\n\t\t\tif (tools == null || tools.materials) createExportSettings(ExportTool.MATERIALS, filters.materialsOwner, views.materialsView);\r\n\t\t\tif (tools == null || tools.marketOrders) createExportSettings(ExportTool.MARKET_ORDERS, filters.marketOrdersFilter, views.marketOrdersView);\r\n\t\t\tif (tools == null || tools.mining) createExportSettings(ExportTool.MINING, filters.miningFilter, views.miningView);\r\n\t\t\tif (tools != null && (tools.reprocessedIDs != null || tools.reprocessedNames != null)) createExportSettings(ExportTool.REPROCESSED, null, views.reprocessedView);\r\n\t\t\tif (tools == null || tools.overviewStations) createExportSettings(ExportTool.OVERVIEW_STATIONS, filters.overviewFilter, null);\r\n\t\t\tif (tools == null || tools.overviewPlanets) createExportSettings(ExportTool.OVERVIEW_PLANETS, filters.overviewFilter, null);\r\n\t\t\tif (tools == null || tools.overviewSystems) createExportSettings(ExportTool.OVERVIEW_SYSTEMS, filters.overviewFilter, null);\r\n\t\t\tif (tools == null || tools.overviewConstellations) createExportSettings(ExportTool.OVERVIEW_CONSTELLATIONS, filters.overviewFilter, null);\r\n\t\t\tif (tools == null || tools.overviewRegions) createExportSettings(ExportTool.OVERVIEW_REGIONS, filters.overviewFilter, null);\r\n\t\t\tif (tools == null || tools.overviewGroups) createExportSettings(ExportTool.OVERVIEW_GROUPS, filters.overviewFilter, null);\r\n\t\t\tif (tools == null || tools.skills) createExportSettings(ExportTool.SKILLS, filters.skillsFilter, views.skillsView);\r\n\t\t\tif (tools == null || tools.stockpile) createExportSettings(ExportTool.STOCKPILE, filters.stockpileFilter, views.stockpileView);\r\n\t\t\tif (tools == null || tools.transaction) createExportSettings(ExportTool.TRANSACTIONS, filters.transactionFilter, views.transactionView);\r\n\t\t\tif (tools == null || tools.treeLocation) createExportSettings(ExportTool.TREE_LOCATION, filters.treeFilterLocation, views.treeViewLocation);\r\n\t\t\tif (tools == null || tools.treeCategory) createExportSettings(ExportTool.TREE_CATEGORY, filters.treeFilterCategory, views.treeViewCategory);\r\n\t\t}\r\n\t\treturn settings;\r\n\t}\r\n\r\n\tprivate void createExportSettings(ExportTool exportTool, String filterName, String viewName) {\r\n\t\tExportOptionsFormat exportOptionsFormat = exportOptions.exportOptionsFormat;\r\n\t\tif (exportOptionsFormat != null) {\r\n\t\t\t//CSV\r\n\t\t\tif (exportOptionsFormat.csv != null && exportOptionsFormat.csv.csv) {\r\n\t\t\t\tExportSettings exportSettings = new ExportSettings(exportTool.getToolName());\r\n\t\t\t\tif (exportOptionsFormat.csv.comma) {\r\n\t\t\t\t\texportSettings.setDecimalSeparator(DecimalSeparator.COMMA);\r\n\t\t\t\t}\r\n\t\t\t\tif (exportOptionsFormat.csv.line != null) {\r\n\t\t\t\t\tif (exportOptionsFormat.csv.line.unix) {\r\n\t\t\t\t\t\texportSettings.setCsvLineDelimiter(LineDelimiter.UNIX);\r\n\t\t\t\t\t} else if (exportOptionsFormat.csv.line.mac) {\r\n\t\t\t\t\t\texportSettings.setCsvLineDelimiter(LineDelimiter.MAC);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tset(exportSettings, exportTool, ExportFormat.CSV, filterName, viewName);\r\n\t\t\t}\r\n\t\t\t//HTML\r\n\t\t\tif (exportOptionsFormat.html != null && exportOptionsFormat.html.html) {\r\n\t\t\t\tExportSettings exportSettings = new ExportSettings(exportTool.getToolName());\r\n\t\t\t\texportSettings.setHtmlRepeatHeader(exportOptionsFormat.html.headers);\r\n\t\t\t\texportSettings.setHtmlIGB(exportOptionsFormat.html.igb);\r\n\t\t\t\texportSettings.setHtmlStyled(!exportOptionsFormat.html.noStyle);\r\n\t\t\t\tset(exportSettings, exportTool, ExportFormat.HTML, filterName, viewName);\r\n\t\t\t}\r\n\t\t\t//SQL\r\n\t\t\tif (exportOptionsFormat.sql != null && exportOptionsFormat.sql.sql) {\r\n\t\t\t\tExportSettings exportSettings = new ExportSettings(exportTool.getToolName());\r\n\t\t\t\texportSettings.setSqlDropTable(exportOptionsFormat.sql.dropTable);\r\n\t\t\t\texportSettings.setSqlCreateTable(exportOptionsFormat.sql.createTable);\r\n\t\t\t\texportSettings.setSqlExtendedInserts(exportOptionsFormat.sql.extendedInserts);\r\n\t\t\t\texportSettings.setSqlTableName(Settings.get().getExportSettings(exportTool.getToolName()).getSqlTableName());\r\n\t\t\t\tset(exportSettings, exportTool, ExportFormat.SQL, filterName, viewName);\r\n\t\t\t}\r\n\t\t} else { //Default CSV\r\n\t\t\tset(new ExportSettings(exportTool.getToolName()), exportTool, ExportFormat.CSV, filterName, viewName);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void set(ExportSettings exportSettings, ExportTool exportTool, ExportFormat exportFormat, String filterName, String viewName) {\r\n\t\tStringBuilder builder = new StringBuilder();\r\n\t\tbuilder.append(getOutputDirectory());\r\n\t\tbuilder.append(File.separator);\r\n\t\tif (!exportOptions.noDate) {\r\n\t\t\tbuilder.append(Formatter.fileDate(new Date()));\r\n\t\t\tbuilder.append(\"_\");\r\n\t\t}\r\n\t\tbuilder.append(exportTool.getFilename());\r\n\t\tbuilder.append(\"_export.\");\r\n\t\tbuilder.append(exportFormat.getExtension());\r\n\t\texportSettings.setFilename(builder.toString());\r\n\t\t//Format\r\n\t\texportSettings.setExportFormat(exportFormat);\r\n\t\t//Filter\r\n\t\tif (filterName == null) {\r\n\t\t\texportSettings.setFilterName(\"\");\r\n\t\t\texportSettings.setFilterSelection(FilterSelection.NONE);\r\n\t\t} else if (filterName.isEmpty()) {\r\n\t\t\texportSettings.setFilterName(\"\");\r\n\t\t\texportSettings.setFilterSelection(FilterSelection.CURRENT);\r\n\t\t} else {\r\n\t\t\texportSettings.setFilterName(filterName);\r\n\t\t\texportSettings.setFilterSelection(FilterSelection.SAVED);\r\n\t\t}\r\n\t\t//Formula Columns\r\n\t\texportSettings.setFormulas(!exportOptions.noFormulas);\r\n\t\t//Jump Columns\r\n\t\texportSettings.setJumps(!exportOptions.noJumps);\r\n\t\t//Columns\r\n\t\tif (viewName == null) { //All columns\r\n\t\t\texportSettings.setColumnSelection(ColumnSelection.SELECTED);\r\n\t\t\texportSettings.putTableExportColumns(null); //null = all\r\n\t\t\texportSettings.setViewName(null);\r\n\t\t} else if (viewName.isEmpty()) { //Current shown columns in order\r\n\t\t\texportSettings.setColumnSelection(ColumnSelection.SHOWN);\r\n\t\t\texportSettings.setViewName(null);\r\n\t\t} else { //Saved View\r\n\t\t\texportSettings.setColumnSelection(ColumnSelection.SAVED);\r\n\t\t\texportSettings.setViewName(viewName);\r\n\t\t}\r\n\t\t//Add\r\n\t\tList<ExportSettings> list = settings.get(exportTool);\r\n\t\tif (list == null) {\r\n\t\t\tlist = new ArrayList<>();\r\n\t\t\tsettings.put(exportTool, list);\r\n\t\t}\r\n\t\tlist.add(exportSettings);\r\n\t}\r\n\r\n\tpublic String getMaterialsOwner() {\r\n\t\tif (exportOptions == null || exportOptions.filters == null\r\n\t\t\t\t|| exportOptions.filters.materialsOwner == null || exportOptions.filters.materialsOwner.isEmpty()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn exportOptions.filters.materialsOwner;\r\n\t}\r\n\r\n\tpublic boolean isMaterialsPI() {\r\n\t\tif (exportOptions == null || exportOptions.filters == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn exportOptions.filters.materialsPI;\r\n\t}\r\n\r\n\tpublic boolean isMaterialsOre() {\r\n\t\tif (exportOptions == null || exportOptions.filters == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn exportOptions.filters.materialsOre;\r\n\t}\r\n\r\n\tpublic boolean isMaterialsCommodity() {\r\n\t\tif (exportOptions == null || exportOptions.filters == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn exportOptions.filters.materialsCommodity;\r\n\t}\r\n\r\n\tpublic Set<String> getReprocessedNames() {\r\n\t\tif (exportOptions == null\r\n\t\t\t\t|| exportOptions.tools == null\r\n\t\t\t\t|| exportOptions.tools.reprocessedNames == null\r\n\t\t\t\t|| exportOptions.tools.reprocessedNames.isEmpty()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn exportOptions.tools.reprocessedNames;\r\n\t}\r\n\r\n\tpublic Set<Integer> getReprocessedIDs() {\r\n\t\tif (exportOptions == null\r\n\t\t\t\t|| exportOptions.tools == null\r\n\t\t\t\t|| exportOptions.tools.reprocessedIDs == null\r\n\t\t\t\t|| exportOptions.tools.reprocessedIDs.isEmpty()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn exportOptions.tools.reprocessedIDs;\r\n\t}\r\n\r\n\tpublic Set<String> getLoadoutsNames() {\r\n\t\tif (exportOptions == null\r\n\t\t\t\t|| exportOptions.filters == null\r\n\t\t\t\t|| exportOptions.filters.loadoutsNames == null\r\n\t\t\t\t|| exportOptions.filters.loadoutsNames.isEmpty()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn exportOptions.filters.loadoutsNames;\r\n\t}\r\n\r\n\tpublic Set<Integer> getLoadoutsIDs() {\r\n\t\tif (exportOptions == null\r\n\t\t\t\t|| exportOptions.filters == null\r\n\t\t\t\t|| exportOptions.filters.loadoutsIDs == null\r\n\t\t\t\t|| exportOptions.filters.loadoutsIDs.isEmpty()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn exportOptions.filters.loadoutsIDs;\r\n\t}\r\n\r\n\tpublic File getOutputDirectory() {\r\n\t\t//Output\r\n\t\tif (exportOptions.output == null) {\r\n\t\t\texportOptions.output = new File(FileUtil.getPathExports());\r\n\t\t}\r\n\t\treturn exportOptions.output;\r\n\t}\r\n\r\n\tpublic boolean isPortable() {\r\n\t\treturn portable;\r\n\t}\r\n\r\n\tpublic boolean isLazySave() {\r\n\t\treturn lazySave;\r\n\t}\r\n\r\n\tpublic boolean isDebug() {\r\n\t\tif (devOptions == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn devOptions.debug;\r\n\t}\r\n\r\n\tpublic boolean isEDTdebug() {\r\n\t\tif (devOptions == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn devOptions.edtdebug;\r\n\t}\r\n\r\n\tpublic boolean isForceNoUpdate() {\r\n\t\tif (devOptions == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn devOptions.debug && devOptions.forceNoUpdate;\r\n\t}\r\n\r\n\tpublic boolean isForceUpdate() {\r\n\t\tif (devOptions == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn devOptions.debug && devOptions.forceUpdate;\r\n\t}\r\n\r\n\tpublic boolean isUpdate() {\r\n\t\tif (updateOptions == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn updateOptions.update;\r\n\t}\r\n\r\n\tpublic boolean isCLI() {\r\n\t\treturn isUpdate() || isExport();\r\n\t}\r\n\r\n\tpublic boolean isExport() {\r\n\t\tif (exportOptions == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn exportOptions.export;\r\n\t}\r\n\r\n\tpublic boolean isJmemory() {\r\n\t\tif (devOptions == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn devOptions.jMemory;\r\n\t}\r\n\r\n\tpublic void setPortable(boolean portable) {\r\n\t\tthis.portable = portable;\r\n\t}\r\n}"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/CliUpdate.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset;\r\n\r\nimport java.beans.PropertyChangeEvent;\r\nimport java.beans.PropertyChangeListener;\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.data.profile.Profile;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileData;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileManager;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.data.settings.TrackerData;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateDialog.PriceDataTask;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateDialog.Step1Task;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateDialog.Step2Task;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateDialog.Step3Task;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateDialog.Step4Task;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.AssetValue;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.DataSetCreator;\r\nimport net.nikr.eve.jeveasset.io.online.PriceDataGetter;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class CliUpdate {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(CliUpdate.class);\r\n\r\n\tint update() {\r\n\t\tPriceDataGetter priceDataGetter = new PriceDataGetter();\r\n\t\tpriceDataGetter.load();\r\n\r\n\t\tProfileManager profileManager = new ProfileManager();\r\n\t\tprofileManager.searchProfile();\r\n\r\n\t\tSplashUpdater.setText(\"Updating DATA\");\r\n\t\tSplashUpdater.setProgress(0);\r\n\t\tint count = 0;\r\n\t\tDate date = Settings.getNow();\r\n\t\tboolean ok = true;\r\n\t\tfor (Profile profile : profileManager.getProfiles()) {\r\n\t\t\tprofileManager.setActiveProfile(profile);\r\n\t\t\tif (!profile.load()) {\r\n\t\t\t\tLOG.warn(\"Failed to load profile\");\r\n\t\t\t\tcount++;\r\n\t\t\t\tSplashUpdater.setProgress( (int)(count * 100.0 / profileManager.getProfiles().size()));\r\n\t\t\t\tcontinue; //Error loading profile\r\n\t\t\t}\r\n\t\t\tProfileData profileData = new ProfileData(profileManager);\r\n\t\t\tprofileData.updateEventLists();\r\n\t\t\tList<UpdateTask> updateTasks = new ArrayList<>();\r\n\t\t\tupdateTasks.add(new Step1Task(profileManager));\r\n\t\t\tupdateTasks.add(new Step2Task(profileManager, true, true, true, true, true, true, true, true, true, true, true, true));\r\n\t\t\tupdateTasks.add(new Step3Task(profileManager, true));\r\n\t\t\tupdateTasks.add(new Step4Task(profileManager));\r\n\t\t\tupdateTasks.add(new PriceDataTask(priceDataGetter, profileData, false));\r\n\t\t\tfor (UpdateTask updateTask : updateTasks) {\r\n\t\t\t\tupdateTask.addPropertyChangeListener(new PropertyChangeListener() {\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tpublic void propertyChange(PropertyChangeEvent evt) {\r\n\t\t\t\t\t\tSplashUpdater.setSubProgress(updateTask.getProgress());\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tSplashUpdater.setSubProgress(0);\r\n\t\t\t\tupdateTask.update();\r\n\t\t\t\tif (updateTask.hasError()) {\r\n\t\t\t\t\tok = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Update tracker locations\r\n\t\t\tAssetValue.updateData();\r\n\t\t\t//Update eventlists\r\n\t\t\tprofileData.updateEventLists();\r\n\t\t\t//Create value tracker point\r\n\t\t\tDataSetCreator.createTrackerDataPoint(profileData, date);\r\n\t\t\tTrackerData.save(\"Added\", true);\r\n\t\t\t//Save settings\r\n\t\t\tSettings.saveSettings();\r\n\t\t\t//Save profile\r\n\t\t\tprofile.save();\r\n\t\t\t//Clean up\r\n\t\t\tprofile.clear();\r\n\t\t\t//Progress\r\n\t\t\tcount++;\r\n\t\t\tSplashUpdater.setProgress( (int)(count * 100.0 / profileManager.getProfiles().size()));\r\n\t\t}\r\n\t\tif (ok) {\r\n\t\t\tLOG.info(\"Data updated successfully\");\r\n\t\t\treturn 0;\r\n\t\t} else {\r\n\t\t\tLOG.info(\"Data updated with errors\");\r\n\t\t\treturn -1; //on error\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/DetectEdtViolationRepaintManager.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset;\r\n\r\nimport javax.swing.JComponent;\r\nimport javax.swing.RepaintManager;\r\nimport javax.swing.SwingUtilities;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class DetectEdtViolationRepaintManager extends RepaintManager {\r\n\r\n\tprivate static final org.slf4j.Logger LOG = LoggerFactory.getLogger(Program.class);\r\n\r\n\t/**\r\n\t * Used to ensure we only print a stack trace once per abusing thread. May\r\n\t * be null if the option is disabled.\r\n\t */\r\n\tprivate ThreadLocal<Boolean> alreadyWarnedLocal;\r\n\r\n\t/**\r\n\t * Installs a new instance of DetectEdtViolationRepaintManager which does\r\n\t * not warn repeatedly, as the current repaint manager.\r\n\t */\r\n\tpublic static void install() {\r\n\t\tinstall(false);\r\n\t}\r\n\r\n\t/**\r\n\t * Installs a new instance of DetectEdtViolationRepaintManager as the\r\n\t * current repaint manager.\r\n\t *\r\n\t * @param warnRepeatedly whether multiple warnings should be logged for each\r\n\t * violating thread\r\n\t */\r\n\tpublic static void install(boolean warnRepeatedly) {\r\n\t\tRepaintManager.setCurrentManager(new DetectEdtViolationRepaintManager(warnRepeatedly));\r\n\t\tLOG.info(\"Installed new DetectEdtViolationRepaintManager\");\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new instance of DetectEdtViolationRepaintManager.\r\n\t *\r\n\t * @param warnRepeatedly whether multiple warnings should be logged for each\r\n\t * violating thread\r\n\t */\r\n\tprivate DetectEdtViolationRepaintManager(boolean warnRepeatedly) {\r\n\t\tif (!warnRepeatedly) {\r\n\t\t\tthis.alreadyWarnedLocal = new ThreadLocal<Boolean>();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t */\r\n\t@Override\r\n\tpublic synchronized void addInvalidComponent(JComponent component) {\r\n\t\tcheckThreadViolations();\r\n\t\tsuper.addInvalidComponent(component);\r\n\t}\r\n\r\n\t/**\r\n\t * {@inheritDoc}\r\n\t */\r\n\t@Override\r\n\tpublic synchronized void addDirtyRegion(JComponent component, int x, int y,\r\n\t\t\tint w, int h) {\r\n\t\tcheckThreadViolations();\r\n\t\tsuper.addDirtyRegion(component, x, y, w, h);\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the calling thread is called in the event dispatch thread. If\r\n\t * not an exception will be printed to the console.\r\n\t */\r\n\tprivate void checkThreadViolations() {\r\n\t\tif (alreadyWarnedLocal != null && Boolean.TRUE.equals(alreadyWarnedLocal.get())) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!SwingUtilities.isEventDispatchThread()) {\r\n\t\t\tif (alreadyWarnedLocal != null) {\r\n\t\t\t\talreadyWarnedLocal.set(Boolean.TRUE);\r\n\t\t\t}\r\n\t\t\tLOG.warn(\"painting on non-EDT thread\", new Exception());\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/LibraryManager.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset;\n\nimport java.io.File;\nimport java.util.ArrayList;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Set;\nimport javax.swing.JOptionPane;\nimport net.nikr.eve.jeveasset.io.online.Updater;\nimport net.nikr.eve.jeveasset.io.shared.FileUtilSimple;\n\n\npublic class LibraryManager {\n\n\tprivate static Set<String> files = null;\n\n\tpublic static void checkLibraries() {\n\t\tcheckMissing();\n\t\tpurge();\n\t}\n\n\tprivate static void purge() {\n\t\tFile lib = new File(FileUtilSimple.getPathLib());\n\t\tList<File> delete = new ArrayList<>();\n\t\tint libsFiles = 0;\n\t\tfor (File file : lib.listFiles()) {\n\t\t\tif (getLibFiles().contains(file.getName())) {\n\t\t\t\tlibsFiles++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!getLibFiles().contains(file.getName()) && file.getName().endsWith(\".jar\") && !file.isDirectory()) {\n\t\t\t\tdelete.add(file);\n\t\t\t}\n\t\t}\n\t\tif (libsFiles != getLibFiles().size()) {\n\t\t\treturn; //Wrong directory?\n\t\t}\n\t\tfor (File file : delete) {\n\t\t\tfile.delete();\n\t\t}\n\t}\n\n\tprivate static void checkMissing() {\n\t\tFile jar = new File(FileUtilSimple.getPathRunJar());\n\t\tboolean temp = false;\n\t\t//Check if trying to run from inside zip file (Windows only)\n\t\tif (jar.getAbsolutePath().contains(\".zip\") && jar.getAbsolutePath().contains(System.getProperty(\"java.io.tmpdir\")) && System.getProperty(\"os.name\").startsWith(\"Windows\")) {\n\t\t\ttemp = true;\n\t\t}\n\t\tboolean missing = false;\n\t\t//Check if all libraries are pressent\n\t\tfor (String filename : getLibFiles()) {\n\t\t\tFile file = new File(FileUtilSimple.getPathLib(filename));\n\t\t\tif (!file.exists()) {\n\t\t\t\tmissing = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (temp && missing) { //Running from zip file...\n\t\t\tJOptionPane.showMessageDialog(Main.getTop(), \"You need to unzip jEveAssets to run it\\r\\nIt will not work from inside the zip file\", Program.PROGRAM_NAME + \" - Critical Error\", JOptionPane.ERROR_MESSAGE);\n\t\t\tSystem.exit(-1);\n\t\t} else if (missing) { //Missing libraries\n\t\t\tUpdater updater = new Updater();\n\t\t\tupdater.fixLibs();\n\t\t}\n\t}\n\n\tpublic static synchronized Set<String> getLibFiles() {\n\t\tif (files == null) { //Lazy init\n\t\t\tfiles = new HashSet<>();\n\t\t\tfiles.add(\"asm-9.2.jar\");\n\t\t\tfiles.add(\"dom4j-2.1.3.jar\");\n\t\t\tfiles.add(\"glazedlists-1.11.0.jar\");\n\t\t\tfiles.add(\"graph-2.0.0.jar\");\n\t\t\tfiles.add(\"guava-r09.jar\");\n\t\t\tfiles.add(\"jaxen-1.2.0.jar\");\n\t\t\tfiles.add(\"javax.activation-api-1.2.0.jar\");\n\t\t\tfiles.add(\"guava-r09.jar\");\n\t\t\tfiles.add(\"LGoodDatePicker-11.2.1.jar\");\n\t\t\tfiles.add(\"jfreechart-1.5.3.jar\");\n\t\t\tfiles.add(\"pricing-3.1.2.jar\");\n\t\t\tfiles.add(\"routing-2.0.0.jar\");\n\t\t\tfiles.add(\"super-csv-2.4.0.jar\");\n\t\t\tfiles.add(\"translations-3.1.1.jar\");\n\t\t\tfiles.add(\"annotations-13.0.jar\");\n\t\t\tfiles.add(\"hamcrest-core-1.3.jar\");\n\t\t\tfiles.add(\"hamcrest-core-1.3.jar\");\n\t\t\tfiles.add(\"jaxb-api-2.3.1.jar\");\n\t\t\tfiles.add(\"sqlite-jdbc-3.50.3.0.jar\");\n\t\t\tfiles.add(\"jna-platform-5.6.0.jar\");\n\t\t\tfiles.add(\"jna-5.6.0.jar\");\n\t\t\tfiles.add(\"jsr305-3.0.2.jar\");\n\t\t\tfiles.add(\"flatlaf-3.4.1.jar\");\t\n\t\t\tfiles.add(\"EvalEx-2.7.jar\");\n\t\t\tfiles.add(\"picocli-4.6.2.jar\");\n\t\t\t\n\t\t\t//Logging\n\t\t\tfiles.add(\"slf4j-api-2.0.16.jar\");\n\t\t\tfiles.add(\"jul-to-slf4j-2.0.16.jar\");\n\t\t\tfiles.add(\"jcl-over-slf4j-2.0.16.jar\");\n\t\t\tfiles.add(\"logback-core-1.3.15.jar\");\n\t\t\tfiles.add(\"log4j-over-slf4j-2.0.16.jar\");\n\t\t\tfiles.add(\"logback-classic-1.3.15.jar\");\n\t\t\t//Native Mac GUI integration\n\t\t\tfiles.add(\"jsvg-1.4.0.jar\");\n\t\t\tfiles.add(\"flatlaf-extras-3.4.1.jar\");\n\t\t\t//MP3\n\t\t\tfiles.add(\"jlayer-1.0.2.jar\");\n\t\t\t//Eve-ESI\n\t\t\tfiles.add(\"eve-esi-7.0.0.jar\");\n\t\t\tfiles.add(\"logging-interceptor-5.1.0.jar\");\n\t\t\tfiles.add(\"okio-jvm-3.15.0.jar\");\n\t\t\tfiles.add(\"kotlin-stdlib-2.2.0.jar\");\n\t\t\tfiles.add(\"okio-3.15.0.jar\");\n\t\t\tfiles.add(\"okhttp-5.1.0.jar\");\n\t\t\tfiles.add(\"okhttp-jvm-5.1.0.jar\");\n\t\t\tfiles.add(\"gson-2.9.0.jar\");\n\t\t\tfiles.add(\"jackson-core-2.14.0-rc2.jar\");\n\t\t\tfiles.add(\"org.apache.oltu.oauth2.common-1.0.2.jar\");\n\t\t\tfiles.add(\"jackson-databind-nullable-0.2.6.jar\");\n\t\t\tfiles.add(\"jackson-annotations-2.14.0-rc2.jar\");\n\t\t\tfiles.add(\"json-20140107.jar\");\n\t\t\tfiles.add(\"commons-codec-1.9.jar\");\n\t\t\tfiles.add(\"org.apache.oltu.oauth2.client-1.0.2.jar\");\n\t\t\tfiles.add(\"jackson-databind-2.14.0-rc2.jar\");\n\t\t\tfiles.add(\"gson-fire-1.9.0.jar\");\n\t\t\tfiles.add(\"commons-lang3-3.18.0.jar\");\n\t\t}\n\t\treturn files;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/Main.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset;\n\nimport java.awt.GraphicsEnvironment;\nimport java.io.File;\nimport java.net.URISyntaxException;\nimport java.util.logging.Level;\nimport java.util.logging.Logger;\nimport javax.swing.JDialog;\nimport net.nikr.eve.jeveasset.io.local.FileLock;\nimport net.nikr.eve.jeveasset.io.online.Updater;\nimport org.slf4j.bridge.SLF4JBridgeHandler;\n\npublic final class Main {\n\n\tprivate static JDialog top;\n\tprivate static Logger log;\n\n\tpublic static JDialog getTop() {\n\t\tif (top == null) {\n\t\t\ttop = new JDialog();\n\t\t\ttop.setAlwaysOnTop(true);\n\t\t}\n\t\treturn top;\n\t}\n\n\t/**\n\t * Entry point for jEveAssets.\n\t *\n\t * @param args the command line arguments\n\t */\n\tpublic static void main(final String[] args) {\n\t\tboolean portable = false;\n\t\tboolean debug = false;\n\t\tfor (String arg : args) {\n\t\t\tif (arg.toLowerCase().equals(\"-debug\")) {\n\t\t\t\tdebug = true;\n\t\t\t}\n\t\t\tif (arg.toLowerCase().equals(\"-portable\")) {\n\t\t\t\tportable = true;\n\t\t\t}\n\t\t}\n\t\t//Force UTF-8 File system\n\t\tSystem.setProperty(\"sun.jnu.encoding\", \"UTF-8\");\n\t\tSystem.setProperty(\"file.encoding\", \"UTF-8\");\n\n\t\tsetLogLocation(portable);\n\t\t// ditto here.\n\t\tif (System.getProperty(\"log.level\") == null) {\n\t\t\tif (debug) {\n\t\t\t\tSystem.setProperty(\"log.level\", \"DEBUG\");\n\t\t\t} else {\n\t\t\t\tSystem.setProperty(\"log.level\", \"INFO\");\n\t\t\t}\n\t\t}\n\t\t//Set format\n\t\tSystem.setProperty(\"java.util.logging.SimpleFormatter.format\", \"%4$s: %2$s - %5$s%n\");\n\t\ttry {\n\t\t\tSLF4JBridgeHandler.install();\n\t\t} catch (Throwable t) {\n\t\t\t//This is ignored\n\t\t}\n\t\tlog = Logger.getLogger(Main.class.getName());\n\t\t//Add user agent to online requests\n\t\tSystem.setProperty(\"http.agent\", Program.PROGRAM_USER_AGENT);\n\n\t\t//XXX - Workaround for IPv6 fail (force IPv4)\n\t\t//eveonline.com is not IPv6 ready...\n\t\tSystem.setProperty(\"java.net.preferIPv4Stack\", \"true\");\n\n\t\t//XXX - Workaround for Java Bug\n\t\tSystem.setProperty(\"java.util.Arrays.useLegacyMergeSort\", \"true\");\n\n\t\t//XXX - Workaround: Allow basic proxy authorization\n\t\tSystem.setProperty(\"jdk.http.auth.tunneling.disabledSchemes\", \"\");\n\t\tSystem.setProperty(\"jdk.http.auth.proxying.disabledSchemes\", \"\");\n\t\t//XXX - Workaround: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure\n\t\tSystem.setProperty(\"https.protocols\", \"SSLv3,TLSv1,TLSv1.1,TLSv1.2\");\n\t\t//Mac OSX\n\t\tSystem.setProperty(\"apple.laf.useScreenMenuBar\", \"true\");\n\t\tSystem.setProperty(\"apple.awt.application.name\", Program.PROGRAM_NAME);\n\t\t//Validate directory\n\t\tLibraryManager.checkLibraries();\n\t\t//install the uncaught exception handlers\n\t\tNikrUncaughtExceptionHandler.install();\n\t\t//Splash screen\n\t\tif (!GraphicsEnvironment.isHeadless()) {\n\t\t\tSplashUpdater splashUpdater = new SplashUpdater();\n\t\t\tsplashUpdater.start();\n\t\t}\n\t\t//Arguments\n\t\tCliOptions.set(args);\n\t\t//Print program data\n\t\tif (CliOptions.get().isJmemory()) {\n\t\t\tlog.info(\"jmemory ok\");\n\t\t}\n\t\tlog.info(\"Starting \" + Program.PROGRAM_NAME + \" \" + Program.PROGRAM_VERSION);\n\t\tlog.log(Level.INFO, \"OS: {0} {1}\", new Object[]{System.getProperty(\"os.name\"), System.getProperty(\"os.version\")});\n\t\tlog.log(Level.INFO, \"Java: {0} {1}\", new Object[]{System.getProperty(\"java.vendor\"), System.getProperty(\"java.version\")});\n\t\tif (Updater.isPackageManager()) {\n\t\t\tlog.log(Level.INFO, \"Package Manager Mode: Enabled\");\n\t\t\tlog.log(Level.INFO, \"Package Maintainers: {0}\", Updater.getPackageMaintainers());\n\t\t}\n\t\t//Ensure only one instance is running...\n\t\tSingleInstance instance = new SingleInstance();\n\t\tif (instance.isSingleInstance()) {\n\t\t\tFileLock.unlockAll();\n\t\t}\n\t\t//Command line interface\n\t\tif (CliOptions.get().isCLI()) {\n\t\t\tProgram.init();\n\t\t}\n\t\tint exitCode = 0;\n\t\t//Update\n\t\tif (CliOptions.get().isUpdate()) {\n\t\t\tCliUpdate update = new CliUpdate();\n\t\t\texitCode = update.update();\n\t\t}\n\t\t//Export\n\t\tif (CliOptions.get().isExport()) {\n\t\t\tCliExport cliExport = new CliExport();\n\t\t\texitCode = cliExport.export();\n\t\t}\n\t\tif (CliOptions.get().isCLI()) {\n\t\t\tSystem.exit(exitCode);\n\t\t} else { //GUI\n\t\t\tif(GraphicsEnvironment.isHeadless()) {\n\t\t\t\tSystem.err.println(\"ERROR: Java is running in headless mode\");\n\t\t\t\tSystem.err.println(\"       jEveAssets can not display a GUI in headless mode\");\n\t\t\t\tSystem.err.println(\"       use -help to see CLI options available in headless mode\");\n\t\t\t\tSystem.out.println(\"ERROR: Java is running in headless mode\");\n\t\t\t\tSystem.out.println(\"       jEveAssets can not display a GUI in headless mode\");\n\t\t\t\tSystem.out.println(\"       use -help to see CLI options available in headless mode\");\n\t\t\t\tSystem.exit(-1);\n\t\t\t}\n\t\t\tjavax.swing.SwingUtilities.invokeLater(new Runnable() {\n\t\t\t\t@Override\n\t\t\t\tpublic void run() {\n\t\t\t\t\t//Lets go!\n\t\t\t\t\tProgram program = new Program();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic static void setLogLocation(boolean portable) {\n\t\t// the tests for null indicate that the property is not set\n\t\t// It is possible to set properties using the -Dlog.home=foo/bar\n\t\t// and thus we want to allow this to take priority over the\n\t\t// configuration options here.\n\t\tif (System.getProperty(\"log.home\") == null) {\n\t\t\tif (portable) {\n\t\t\t\ttry {\n\t\t\t\t\t//jeveassets.jar directory\n\t\t\t\t\tFile file = new File(net.nikr.eve.jeveasset.Program.class.getProtectionDomain().getCodeSource().getLocation().toURI()).getParentFile();\n\t\t\t\t\tSystem.setProperty(\"log.home\", file.getAbsolutePath() + File.separator);\n\t\t\t\t} catch (URISyntaxException ex) {\n\t\t\t\t\t//Working directory\n\t\t\t\t\tSystem.setProperty(\"log.home\", System.getProperty(\"user.dir\") + File.separator); //Working directory\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t//Note: We can not use Program.onMac() as that will initialize the Program LOG\n\t\t\t\tif (System.getProperty(\"os.name\").toLowerCase().startsWith(\"mac os x\")) { //Mac\n\t\t\t\t\tSystem.setProperty(\"log.home\", System.getProperty(\"user.home\") + File.separator + \"Library\" + File.separator + \"Preferences\" + File.separator + \"JEveAssets\" + File.separator);\n\t\t\t\t} else { //Windows/Linux\n\t\t\t\t\tSystem.setProperty(\"log.home\", System.getProperty(\"user.home\") + File.separator + \".jeveassets\" + File.separator);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/NahimicDetector.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset;\r\n\r\nimport java.io.BufferedReader;\r\nimport java.io.IOException;\r\nimport java.io.InputStreamReader;\r\n\r\n\r\npublic class NahimicDetector {\r\n\r\n\tprivate NahimicDetector() { }\r\n\r\n\tpublic static boolean isNahimicRunning() {\r\n\t\ttry {\r\n\t\t\tStringBuilder builder = new StringBuilder();\r\n\t\t\tString line;\r\n\r\n\t\t\t//Process p = Runtime.getRuntime().exec(System.getenv(\"windir\") + File.separator + \"system32\" + File.separator + \"tasklist.exe\");\r\n\t\t\tProcess p = Runtime.getRuntime().exec(\"tasklist\");\r\n\r\n\t\t\ttry (BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()))) {\r\n\t\t\t\twhile ((line = input.readLine()) != null) {\r\n\t\t\t\t\tbuilder.append(line.toLowerCase());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tString string = builder.toString();\r\n\t\t\treturn string.contains(\"nahimicservice\") //exact\r\n\t\t\t\t\t|| string.contains(\"nahimicsvc64\") //exact\r\n\t\t\t\t\t|| string.contains(\"nahimicsvc32\") //exact\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t|| string.contains(\"nahimicsvc64run\") //Other?\r\n\t\t\t\t\t|| string.contains(\"nahimicsvc32run\") //Other?\r\n\t\t\t\t\t|| string.contains(\"nahimctask32\") //Other?\r\n\t\t\t\t\t|| string.contains(\"nahimic2uilauncher\")  //Other?\r\n\t\t\t\t\t|| string.contains(\"nahimic\") //Match all\r\n\t\t\t\t\t*/\r\n\t\t\t\t\t;\r\n\t\t} catch (IOException ex) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/NikrUncaughtExceptionHandler.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset;\n\nimport java.awt.Component;\nimport java.awt.Desktop;\nimport java.awt.GraphicsEnvironment;\nimport java.awt.IllegalComponentStateException;\nimport java.io.BufferedReader;\nimport java.io.DataOutputStream;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.InputStreamReader;\nimport java.io.PrintWriter;\nimport java.io.StringWriter;\nimport java.net.HttpURLConnection;\nimport java.net.MalformedURLException;\nimport java.net.URI;\nimport java.net.URL;\nimport java.net.URLEncoder;\nimport java.util.HashSet;\nimport java.util.Set;\nimport javax.swing.JOptionPane;\nimport net.nikr.eve.jeveasset.io.online.Updater;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\npublic class NikrUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(NikrUncaughtExceptionHandler.class);\n\tprivate static final String SUBMIT = \"https://eve.nikr.net/jeveassets/bugs/submit.php\";\n\tprivate static final String JAVA = \"Java 8\";\n\n\tprivate static boolean error = false;\n\n\tpublic static void install() {\n\t\tSystem.setProperty(\"sun.awt.exception.handler\", NikrUncaughtExceptionHandler.class.getName());\n\t\tThread.setDefaultUncaughtExceptionHandler(new NikrUncaughtExceptionHandler());\n\t}\n\n\tprivate NikrUncaughtExceptionHandler() { }\n\n\t@Override\n\tpublic void uncaughtException(final Thread t, final Throwable e) {\n\t\treportError(\"Thread\", e);\n\t}\n\n\tpublic void handle(final Throwable t) {\n\t\treportError(\"AWT\", t);\n\t}\n\n\tprivate void reportError(String s, Throwable t) {\n\t\tif (!error) {\n\t\t\terror = true;\n\t\t\tLOG.error(\"Uncaught Exception (\" + s + \"): \" + t.getMessage(), t);\n\t\t\t//Get root cause\n\t\t\tSet<Class<?>> causes = new HashSet<>();\n\t\t\tThrowable cause = t;\n\t\t\twhile (cause != null) {\n\t\t\t\tcauses.add(cause.getClass());\n\t\t\t\tcause = cause.getCause(); //Next or null\n\t\t\t}\n\t\t\tif (causes.contains(IllegalComponentStateException.class)\n\t\t\t\t\t&& t.getMessage().toLowerCase().contains(\"component must be showing on the screen to determine its location\")\n\t\t\t\t\t) { //XXX - Workaround for Java bug: https://bugs.openjdk.java.net/browse/JDK-8179665 (Ignore error)\n\t\t\t\tLOG.warn(\"Ignoring: component must be showing on the screen to determine its location\");\n\t\t\t\terror = false;\n\t\t\t\treturn;\n\t\t\t} else if (causes.contains(UnsupportedClassVersionError.class)) { //Old Java\n\t\t\t\tshowMessageDialog(Main.getTop(),\n\t\t\t\t\t\t\"Please update Java to the latest version.\\r\\n\"\n\t\t\t\t\t\t+ \"The minimum supported version is \" + JAVA + \"\\r\\n\"\n\t\t\t\t\t\t+ \"\\r\\n\"\n\t\t\t\t\t\t+ \"Press OK to close jEveAssets\"\n\t\t\t\t\t\t+ \"\\r\\n\"\n\t\t\t\t\t\t+ \"\\r\\n\"\n\t\t\t\t\t\t, Program.PROGRAM_NAME + \" - Critical Error\", JOptionPane.ERROR_MESSAGE);\n\t\t\t} else if (causes.contains(OutOfMemoryError.class)) { //Out of memory\n\t\t\t\tint value = showConfirmDialog(Main.getTop(),\n\t\t\t\t\t\t\"Java has run out of memory. jEveAssets will now close\\r\\n\"\n\t\t\t\t\t\t+ \"Do you want to browse to the wiki article explaining how to fix this?\\r\\n\"\n\t\t\t\t\t\t+ \"\\r\\n\"\n\t\t\t\t\t\t, Program.PROGRAM_NAME + \" - Critical Error\", JOptionPane.OK_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE);\n\t\t\t\tif (value == JOptionPane.OK_OPTION) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tDesktop.getDesktop().browse(new URI(\"https://wiki.jeveassets.org/jmemory\"));\n\t\t\t\t\t} catch (Throwable ex) {\n\t\t\t\t\t\t//We tried our best, nothing more to do now...\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (causes.contains(NoClassDefFoundError.class) || causes.contains(ClassNotFoundException.class)) { //Corrupted class files\n\t\t\t\ttry {\n\t\t\t\t\tUpdater updater = new Updater();\n\t\t\t\t\tupdater.fixMissingClasses();\n\t\t\t\t} catch (Throwable ex) { //Better safe than sorry...\n\t\t\t\t\tshowMessageDialog(Main.getTop(),\n\t\t\t\t\t\t\t\"Please, re-download jEveAssets and leave the unzipped directory intact\\r\\n\"\n\t\t\t\t\t\t\t+ \"Press OK to close jEveAssets\"\n\t\t\t\t\t\t\t, Program.PROGRAM_NAME + \" - Critical Error\", JOptionPane.ERROR_MESSAGE);\n\t\t\t\t}\n\t\t\t} else { //Bug\n\t\t\t\tif (isJavaBug(t)) { //Java Bug\n\t\t\t\t\tshowMessageDialog(Main.getTop(),\n\t\t\t\t\t\t\"You have encountered a bug that is most likely a java bug.\\r\\n\"\n\t\t\t\t\t\t+ \"Updating to the latest version of java may fix this problem.\\r\\n\"\n\t\t\t\t\t\t+ \"It's still very helpful to send the the bug report.\\r\\n\"\n\t\t\t\t\t\t+ \"\\r\\n\"\n\t\t\t\t\t\t+ \"Press OK to continue\\r\\n\"\n\t\t\t\t\t\t+ \"\\r\\n\"\n\t\t\t\t\t\t+ \"\\r\\n\"\n\t\t\t\t\t\t, Program.PROGRAM_NAME + \" - Critical Error\", JOptionPane.ERROR_MESSAGE);\n\t\t\t\t}\n\t\t\t\tint value = showConfirmDialog(Main.getTop(),\n\t\t\t\t\t\t\"Send bug report?\\r\\n\"\n\t\t\t\t\t\t+ \"\\r\\n\"\n\t\t\t\t\t\t+ \"Data send and saved:\\r\\n\"\n\t\t\t\t\t\t+ \"-OS (name and version)\\r\\n\"\n\t\t\t\t\t\t+ \"-Java (vendor and version)\\r\\n\"\n\t\t\t\t\t\t+ \"-Program (name and version)\\r\\n\"\n\t\t\t\t\t\t+ \"-Date (current)\\r\\n\"\n\t\t\t\t\t\t+ \"-Java stack trace (bug)\\r\\n\"\n\t\t\t\t\t\t+ \"\\r\\n\"\n\t\t\t\t\t\t+ \"\\r\\n\"\n\t\t\t\t\t\t, Program.PROGRAM_NAME + \" - Critical Error\", JOptionPane.OK_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE);\n\t\t\t\tif (value == JOptionPane.OK_OPTION) {\n\t\t\t\t\tString result = send(t);\n\t\t\t\t\tshowMessageDialog(Main.getTop(), result, \"Bug Report\", JOptionPane.PLAIN_MESSAGE);\n\t\t\t\t}\n\t\t\t}\n\t\t\tSystem.exit(-1);\n\t\t}\n\t}\n\n\tprivate void showMessageDialog(Component parentComponent,\n\t\tObject message, String title, int messageType) {\n\t\tif (GraphicsEnvironment.isHeadless()) {\n\t\t\treturn;\n\t\t}\n\t\tJOptionPane.showMessageDialog(parentComponent, message, title, messageType);\n\t}\n\n\tpublic static int showConfirmDialog(Component parentComponent,\n\t\tObject message, String title, int optionType, int messageType) {\n\t\tif (GraphicsEnvironment.isHeadless()) {\n\t\t\treturn JOptionPane.CANCEL_OPTION;\n\t\t}\n\t\treturn JOptionPane.showConfirmDialog(parentComponent, message, title, optionType, messageType);\n\t}\n\n\tprivate static boolean isJavaBug(Throwable t) {\n\t\tfor (StackTraceElement stackTraceElement : t.getStackTrace()) {\n\t\t\tif (stackTraceElement.getClassName().startsWith(\"net.nikr\")) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tprivate String send(Throwable t) {\n\t\treturn send(getStackTrace(t));\n\t}\n\n\tpublic static String send(String bug) {\n\t\tHttpURLConnection connection = null;\n\t\ttry {\n\t\t\tString urlParameters\n\t\t\t\t\t= \"os=\" + URLEncoder.encode(System.getProperty(\"os.name\") + \" \" + System.getProperty(\"os.version\"), \"UTF-8\")\n\t\t\t\t\t+ \"&java=\" + URLEncoder.encode(System.getProperty(\"java.vendor\") + \" \" + System.getProperty(\"java.version\"), \"UTF-8\")\n\t\t\t\t\t+ \"&version=\" + URLEncoder.encode(Program.PROGRAM_NAME + \" \" + Program.PROGRAM_VERSION, \"UTF-8\")\n\t\t\t\t\t+ \"&log=\" + URLEncoder.encode(bug, \"UTF-8\");\n\t\t\tURL url = new URL(SUBMIT);\n\t\t\tconnection = (HttpURLConnection) url.openConnection();\n\t\t\tconnection.setRequestMethod(\"POST\");\n\t\t\tconnection.setRequestProperty(\"Content-Type\", \"application/x-www-form-urlencoded\");\n\t\t\tconnection.setRequestProperty(\"Content-Length\", Integer.toString(urlParameters.getBytes().length));\n\t\t\tconnection.setRequestProperty(\"Content-Language\", \"en-US\");\n\n\t\t\tconnection.setUseCaches(false);\n\t\t\tconnection.setDoInput(true);\n\t\t\tconnection.setDoOutput(true);\n\n\t\t\tDataOutputStream wr = new DataOutputStream(connection.getOutputStream());\n\t\t\twr.writeBytes(urlParameters);\n\t\t\twr.flush();\n\t\t\twr.close();\n\n\t\t\tInputStream is = connection.getInputStream();\n\t\t\tBufferedReader rd = new BufferedReader(new InputStreamReader(is));\n\t\t\tString line;\n\t\t\tStringBuilder response = new StringBuilder();\n\t\t\twhile ((line = rd.readLine()) != null) {\n\t\t\t\tresponse.append(line);\n\t\t\t\tresponse.append('\\r');\n\t\t\t}\n\t\t\trd.close();\n\t\t\tString bugID = response.toString();\n\t\t\tif (!bugID.trim().equals(\"0\") && !bugID.trim().isEmpty()) {\n\t\t\t\treturn \"Bug report send. Thank you very much!\\r\\n\"\n\t\t\t\t\t\t+ \"\\r\\n\"\n\t\t\t\t\t\t+ \"BugID: \" + bugID;\n\t\t\t}\n\t\t} catch (MalformedURLException ex) {\n\t\t\tLOG.error(ex.getMessage(), ex);\n\t\t} catch (IOException ex) {\n\t\t\tLOG.error(ex.getMessage(), ex);\n\t\t} finally {\n\t\t\tif (connection != null) {\n\t\t\t\tconnection.disconnect();\n\t\t\t}\n\t\t}\n\t\treturn \"Failed to submit bug report...\";\n\t}\n\n\tprivate String getStackTrace(Throwable t) {\n\t\tStringWriter sw = new StringWriter();\n\t\tPrintWriter pw = new PrintWriter(sw);\n\t\tif (t != null) {\n\t\t\tt.printStackTrace(pw);\n\t\t}\n\t\treturn sw.toString(); // stack trace as a string\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/Program.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset;\n\nimport com.formdev.flatlaf.extras.FlatDesktop;\nimport com.formdev.flatlaf.extras.FlatDesktop.QuitResponse;\nimport java.awt.Window;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.KeyEvent;\nimport java.lang.reflect.InvocationTargetException;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport java.util.function.Consumer;\nimport javax.swing.InputMap;\nimport javax.swing.JButton;\nimport javax.swing.JComboBox;\nimport javax.swing.JDialog;\nimport javax.swing.JFrame;\nimport javax.swing.JOptionPane;\nimport javax.swing.JTextField;\nimport javax.swing.KeyStroke;\nimport javax.swing.SwingUtilities;\nimport javax.swing.Timer;\nimport javax.swing.UIManager;\nimport javax.swing.UnsupportedLookAndFeelException;\nimport javax.swing.text.DefaultEditorKit;\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\nimport net.nikr.eve.jeveasset.data.api.my.MyAccountBalance;\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\nimport net.nikr.eve.jeveasset.data.api.my.MyJournal;\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\nimport net.nikr.eve.jeveasset.data.profile.ProfileData;\nimport net.nikr.eve.jeveasset.data.profile.ProfileManager;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\nimport net.nikr.eve.jeveasset.data.settings.AddedData;\nimport net.nikr.eve.jeveasset.data.settings.PriceHistoryDatabase;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.TempDirs;\nimport net.nikr.eve.jeveasset.data.settings.TrackerData;\nimport net.nikr.eve.jeveasset.data.settings.tag.TagUpdate;\nimport net.nikr.eve.jeveasset.gui.dialogs.AboutDialog;\nimport net.nikr.eve.jeveasset.gui.dialogs.account.AccountManagerDialog;\nimport net.nikr.eve.jeveasset.gui.dialogs.profile.ProfileDialog;\nimport net.nikr.eve.jeveasset.gui.dialogs.settings.SettingsDialog;\nimport net.nikr.eve.jeveasset.gui.dialogs.settings.UserLocationSettingsPanel;\nimport net.nikr.eve.jeveasset.gui.dialogs.settings.UserNameSettingsPanel;\nimport net.nikr.eve.jeveasset.gui.dialogs.settings.UserPriceSettingsPanel;\nimport net.nikr.eve.jeveasset.gui.dialogs.update.StructureUpdateDialog;\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateDialog;\nimport net.nikr.eve.jeveasset.gui.frame.MainMenu.MainMenuAction;\nimport net.nikr.eve.jeveasset.gui.frame.MainWindow;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel.UpdateType;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.Updatable;\nimport net.nikr.eve.jeveasset.gui.shared.components.JLockWindow;\nimport net.nikr.eve.jeveasset.gui.shared.components.JLockWindow.LockWorkerAdaptor;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTab;\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterMatcher;\nimport net.nikr.eve.jeveasset.gui.sounds.SoundPlayer;\nimport net.nikr.eve.jeveasset.gui.tabs.agents.AgentsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.assets.AssetsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.contracts.ContractsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.items.ItemsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.jobs.IndustryJobsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.journal.JournalTab;\nimport net.nikr.eve.jeveasset.gui.tabs.loadout.LoadoutsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.loyalty.LoyaltyPointsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.materials.MaterialsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.mining.ExtractionsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.mining.MiningGraphTab;\nimport net.nikr.eve.jeveasset.gui.tabs.mining.MiningTab;\nimport net.nikr.eve.jeveasset.gui.tabs.orders.MarketOrdersTab;\nimport net.nikr.eve.jeveasset.gui.tabs.orders.OutbidProcesser.OutbidProcesserOutput;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewTab;\nimport net.nikr.eve.jeveasset.gui.tabs.prices.PriceChangesTab;\nimport net.nikr.eve.jeveasset.gui.tabs.prices.PriceHistoryTab;\nimport net.nikr.eve.jeveasset.gui.tabs.reprocessed.ReprocessedTab;\nimport net.nikr.eve.jeveasset.gui.tabs.routing.RoutingTab;\nimport net.nikr.eve.jeveasset.gui.tabs.skills.SkillsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.skills.SkillsOverviewTab;\nimport net.nikr.eve.jeveasset.gui.tabs.slots.SlotsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.standing.NpcStandingTab;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.StockpileTab;\nimport net.nikr.eve.jeveasset.gui.tabs.tracker.TrackerTab;\nimport net.nikr.eve.jeveasset.gui.tabs.transaction.TransactionTab;\nimport net.nikr.eve.jeveasset.gui.tabs.tree.TreeTab;\nimport net.nikr.eve.jeveasset.gui.tabs.values.DataSetCreator;\nimport net.nikr.eve.jeveasset.gui.tabs.values.ValueRetroTab;\nimport net.nikr.eve.jeveasset.gui.tabs.values.ValueTableTab;\nimport net.nikr.eve.jeveasset.i18n.GuiFrame;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\nimport net.nikr.eve.jeveasset.io.local.profile.ProfileDatabase.Table;\nimport net.nikr.eve.jeveasset.io.online.PriceDataGetter;\nimport net.nikr.eve.jeveasset.io.online.Updater;\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\nimport net.nikr.eve.jeveasset.io.shared.DesktopUtil;\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n\npublic class Program implements ActionListener {\n\tprivate static final Logger LOG = LoggerFactory.getLogger(Program.class);\n\n\tprivate enum ProgramAction {\n\t\tTIMER\n\t}\n\t//Major.Minor.Bugfix [Release Candidate n] [BETA n] [DEV BUILD #n];\n\tpublic static final String PROGRAM_VERSION = \"8.1.3 DEV BUILD 1\";\n\tpublic static final String PROGRAM_NAME = \"jEveAssets\";\n\tpublic static final String PROGRAM_HOMEPAGE = \"https://eve.nikr.net/jeveasset\";\n\tpublic static final String PROGRAM_USER_AGENT = PROGRAM_NAME + \"/\" + PROGRAM_VERSION.replace(\" \", \"_\") + \" (nkr@niklaskr.dk)\";\n\tprivate static final boolean PROGRAM_DEV_BUILD = false;\n\n\t//Height\n\tprivate static int height = 22; //Defaults to 22\n\n\t//GUI\n\tprivate MainWindow mainWindow;\n\n\t//Dialogs\n\tprivate AccountManagerDialog accountManagerDialog;\n\tprivate AboutDialog aboutDialog;\n\tprivate ProfileDialog profileDialog;\n\tprivate SettingsDialog settingsDialog;\n\tprivate UpdateDialog updateDialog;\n\tprivate StructureUpdateDialog structureUpdateDialog;\n\n\t//Tabs\n\tprivate ValueRetroTab valueRetroTab;\n\tprivate ValueTableTab valueTableTab;\n\tprivate PriceHistoryTab priceHistoryTab;\n\tprivate MaterialsTab materialsTab;\n\tprivate LoadoutsTab loadoutsTab;\n\tprivate RoutingTab routingTab;\n\tprivate MarketOrdersTab marketOrdersTab;\n\tprivate JournalTab journalTab;\n\tprivate TransactionTab transactionsTab;\n\tprivate IndustryJobsTab industryJobsTab;\n\tprivate SlotsTab slotsTab;\n\tprivate AssetsTab assetsTab;\n\tprivate OverviewTab overviewTab;\n\tprivate StockpileTab stockpileTab;\n\tprivate ItemsTab itemsTab;\n\tprivate TrackerTab trackerTab;\n\tprivate ReprocessedTab reprocessedTab;\n\tprivate ContractsTab contractsTab;\n\tprivate TreeTab treeTab;\n\tprivate SkillsTab skillsTab;\n\tprivate SkillsOverviewTab skillsOverviewTab;\n\tprivate LoyaltyPointsTab loyaltyPointsTab;\n\tprivate NpcStandingTab npcStandingTab;\n\tprivate AgentsTab agentsTab;\n\tprivate MiningTab miningTab;\n\tprivate MiningGraphTab miningGraphTab;\n\tprivate ExtractionsTab extractionsTab;\n\tprivate PriceChangesTab priceChangesTab;\n\n\t//Misc\n\tprivate Updater updater;\n\tprivate Timer timer;\n\tprivate Updatable updatable;\n\n\tprivate final Map<String, JMainTab> jMainTabs = new HashMap<>();\n\n\t//Data\n\tprivate final ProfileData profileData;\n\tprivate final ProfileManager profileManager;\n\tprivate final PriceDataGetter priceDataGetter;\n\tprivate final String localData;\n\n\tpublic Program() {\n\t\tif (CliOptions.get().isDebug() || CliOptions.get().isEDTdebug()) {\n\t\t\tLOG.info(\"ForceUpdate: {} NoUpdate: {} Debug: {} EDTDebug: {}\", CliOptions.get().isForceUpdate(), CliOptions.get().isForceNoUpdate(), CliOptions.get().isDebug(), CliOptions.get().isEDTdebug());\n\t\t\tDetectEdtViolationRepaintManager.install();\n\t\t}\n\t//Load Static Data, Settings, Tracker Data, Added Data, Contract Prices\n\t\tinit();\n\t//Look and feel\n\t\tinitLookAndFeel(Settings.get().getColorSettings().getLookAndFeelClass());\n\t\tcalcButtonsHeight(); //Must be done after setting the LAF\n\t//Check for data/program updates\n\t\tupdater = new Updater();\n\t\tlocalData = updater.getLocalData();\n\t\tif (!isDevBuild()) {\n\t\t\tupdate();\n\t\t}\n\t//Load profile data\n\t\tprofileManager = new ProfileManager();\n\t\tprofileManager.searchProfile();\n\t\tprofileManager.loadActiveProfile();\n\t\tprofileData = new ProfileData(profileManager);\n\t\t//Can not update profile data now - list needs to be empty doing creation...\n\t//Load price data\n\t\tpriceDataGetter = new PriceDataGetter();\n\t\tpriceDataGetter.load();\n\t\tSplashUpdater.setProgress(45);\n\t//Timer\n\t\ttimer = new Timer(15000, this); //4 times each minute\n\t\ttimer.setActionCommand(ProgramAction.TIMER.name());\n\t//Updatable\n\t\tupdatable = new Updatable(this);\n\t//GUI\n\t\tSplashUpdater.setText(\"Loading GUI\");\n\t\tLOG.info(\"GUI Loading:\");\n\t\tLOG.info(\"Loading: Images\");\n\t\tImages.preload();\n\t\tLOG.info(\"Loading: Sounds\");\n\t\tSoundPlayer.load();\n\t\tLOG.info(\"Loading: Main Window\");\n\t\tmainWindow = new MainWindow(this);\n\t\tSplashUpdater.setProgress(50);\n\t//Tools\n\t\tLOG.info(\"Loading: Assets Tab\");\n\t\tassetsTab = new AssetsTab(this);\n\t\tmainWindow.addTab(assetsTab);\n\t\tSplashUpdater.setProgress(52);\n\t\tif (Settings.get().isLoadToolsStartup()) {\n\t\t\tToolLoader.initAllTools(this);\n\t\t} else {\n\t\t\tToolLoader.initTools(this,Settings.get().getShowTools());\n\t\t}\n\n\t//Dialogs\n\t\tLOG.info(\"Loading: Account Manager Dialog\");\n\t\taccountManagerDialog = new AccountManagerDialog(this);\n\t\tSplashUpdater.setProgress(85);\n\t\tLOG.info(\"Loading: About Dialog\");\n\t\taboutDialog = new AboutDialog(this);\n\t\tSplashUpdater.setProgress(86);\n\t\tLOG.info(\"Loading: Profiles Dialog\");\n\t\tprofileDialog = new ProfileDialog(this);\n\t\tSplashUpdater.setProgress(88);\n\t\tLOG.info(\"Loading: Update Dialog\");\n\t\tupdateDialog = new UpdateDialog(this);\n\t\tSplashUpdater.setProgress(90);\n\t\tLOG.info(\"Loading: Options Dialog\");\n\t\tsettingsDialog = new SettingsDialog(this);\n\t\tSplashUpdater.setProgress(96);\n\t\tLOG.info(\"Loading: Structure UpdateDialog\");\n\t\tstructureUpdateDialog = new StructureUpdateDialog(this);\n\t//GUI Done\n\t\tLOG.info(\"GUI loaded\");\n\t//Updating data...\n\t\tLOG.info(\"Updating data...\");\n\t\tupdateEventLists();\n\t//OSXAdapter\n\t\tmacOsxCode();\n\t//Open Tools\n\t\tToolLoader.openTools(this, Settings.get().getShowTools());\n\t\tSplashUpdater.setProgress(100);\n\t\tLOG.info(\"Showing GUI\");\n\t\tmainWindow.show();\n\t\tSplashUpdater.hide();\n\t\t//Start timer\n\t\ttimerTicked();\n\t\t//Background tool loader\n\t\tToolLoader.init(this);\n\t\tif (Settings.get().isLoadToolsBackground()) {\n\t\t\tToolLoader.startBackgroundToolLoading(this);\n\t\t}\n\t\tLOG.info(\"Startup Done\");\n\t\tif (CliOptions.get().isDebug()) {\n\t\t\tLOG.info(\"Show Debug Warning\");\n\t\t\tJOptionPane.showMessageDialog(mainWindow.getFrame(), \"WARNING: Debug is enabled\", \"Debug\", JOptionPane.WARNING_MESSAGE);\n\t\t}\n\t\tif (isDevBuild()) {\n\t\t\tJOptionPane.showMessageDialog(mainWindow.getFrame(), \"WARNING: This is a dev build\\r\\n\\r\\nNotes:\\r\\n- Always run portable\\r\\n- Settings and profiles are cloned\\r\\n- Does not check for updates\\r\\n- Expect bugs!\", \"DEV BUILD\", JOptionPane.WARNING_MESSAGE);\n\t\t}\n\t\tif (Settings.get().isSettingsLoadError()) {\n\t\t\tJOptionPane.showMessageDialog(mainWindow.getFrame(), GuiShared.get().errorLoadingSettingsMsg(), GuiShared.get().errorLoadingSettingsTitle(), JOptionPane.ERROR_MESSAGE);\n\t\t}\n\t\tif (NahimicDetector.isNahimicRunning()) {\n\t\t\tJOptionPane.showMessageDialog(mainWindow.getFrame(), \"WARNING: Nahimic service detected. It's known to corrupt the jEveAssets GUI\", \"Nahimic Detected\", JOptionPane.WARNING_MESSAGE);\n\t\t}\n\t\tprofileManager.showProfileLoadErrorWarning(mainWindow.getFrame());\n\t\tif (profileManager.getOwnerTypes().isEmpty()) {\n\t\t\tLOG.info(\"Show Account Manager\");\n\t\t\taccountManagerDialog.setVisible(true);\n\t\t}\n\t\tApiIdConverter.setUpdateItem(true);\n\t}\n\n\t/**\n\t * To be REMOVED!\n\t * @return \n\t */\n\tpublic Map<String, JMainTab> getMainTabs() {\n\t\treturn jMainTabs;\n\t}\n\n\t/**\n\t * Load: Static Data, Settings, Tracker Data, Added Data, Contract Prices.\n\t * PROGRAM_DEV_BUILD == true > run portable\n\t */\n\tpublic static void init() {\n\t\tif (isDevBuild()) {\n\t\t\tCliOptions.get().setPortable(true);\n\t\t}\n\t\tSplashUpdater.setText(\"Loading DATA\");\n\t\tLOG.info(\"DATA Loading...\");\n\t\tFileUtil.autoImportFileUtil();\n\t\tTempDirs.fixTempDir();\n\t\tStaticData.load();\n\t\tSettings.load();\n\t\tTrackerData.load();\n\t\tAddedData.load();\n\t\tPriceHistoryDatabase.load();\n\t}\n\n\t/**\n\t *\n\t * @param load does nothing except change the signature.\n\t */\n\tprotected Program(final boolean load) {\n\t\tprofileData = null;\n\t\tprofileManager = null;\n\t\tpriceDataGetter = null;\n\t\tlocalData = null;\n\t}\n\n\tprivate void initLookAndFeel(String lookAndFeel) {\n\t\tinitLookAndFeel(lookAndFeel, true);\n\t}\n\n\tprivate void initLookAndFeel(String lookAndFeel, boolean tryDefault) {\n\t\t//Allow users to overwrite LaF\n\t\tif (System.getProperty(\"swing.defaultlaf\") != null) {\n\t\t\treturn;\n\t\t}\n\t\t//lookAndFeel = \"com.sun.java.swing.plaf.windows.WindowsLookAndFeel\";\n\t\t//lookAndFeel = UIManager.getSystemLookAndFeelClassName(); //System\n\t\t//lookAndFeel = UIManager.getCrossPlatformLookAndFeelClassName(); //Java\n\t\t//lookAndFeel = \"javax.swing.plaf.nimbus.NimbusLookAndFeel\"; //Nimbus\n\t\t//lookAndFeel = \"javax.swing.plaf.metal.MetalLookAndFeel\"; //Metal\n\t\t//lookAndFeel = \"com.sun.java.swing.plaf.gtk.GTKLookAndFeel\"; //GTK+\n\t\t//lookAndFeel = \"com.sun.java.swing.plaf.motif.MotifLookAndFeel\"; //CDE/Motif\n\n\t\t//flatlaf\n\t\t//lookAndFeel = \"com.formdev.flatlaf.FlatLightLaf\"; //Flat Light\n\t\t//lookAndFeel = \"com.formdev.flatlaf.FlatDarkLaf\"; //Flat Dark\n\t\t//lookAndFeel = \"com.formdev.flatlaf.FlatIntelliJLaf\"; //Flat IntelliJ\n\t\t//lookAndFeel = \"com.formdev.flatlaf.FlatDarculaLaf\"; //Flat Darcula\n\n\t\ttry {\n\t\t\tUIManager.setLookAndFeel(lookAndFeel);\n\t\t} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {\n\t\t\tLOG.error(ex.getMessage(), ex);\n\t\t\t//In case the settings is using an unsupported look and feel\n\t\t\t//Try system look and feel\n\t\t\tif (tryDefault) {\n\t\t\t\tinitLookAndFeel(UIManager.getSystemLookAndFeelClassName(), false);\n\t\t\t}\n\t\t}\n\t\tsetKeys(); // This must be performed immediately after the LaF has been set\n\n\t\t//Make sure we have nice window decorations.\n\t\tJFrame.setDefaultLookAndFeelDecorated(true);\n\t\tJDialog.setDefaultLookAndFeelDecorated(true);\n\t}\n\n\tprivate void setKeys() {\n\t\t// Ensure Max OSX/Windows/Linux key bindings are useable for copy, cut, paste, and select all\n\t\taddKeysText(UIManager.get(\"EditorPane.focusInputMap\"));\n\t\taddKeysText(UIManager.get(\"FormattedTextField.focusInputMap\"));\n\t\taddKeysText(UIManager.get(\"PasswordField.focusInputMap\"));\n\t\taddKeysText(UIManager.get(\"TextField.focusInputMap\"));\n\t\taddKeysText(UIManager.get(\"TextPane.focusInputMap\"));\n\t\taddKeysText(UIManager.get(\"TextArea.focusInputMap\"));\n\t\taddKeysMisc(UIManager.get(\"Table.ancestorInputMap\"));\n\t\taddKeysMisc(UIManager.get(\"Tree.focusInputMap\"));\n\t\taddKeysMisc(UIManager.get(\"List.focusInputMap\"));\n\t}\n\n\tprivate void addKeysText(Object object) {\n\t\tif (object instanceof InputMap) { //Better safe than sorry\n\t\t\tInputMap inputMap = (InputMap) object;\n\t\t\t//Mac Keys\n\t\t\tinputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.META_DOWN_MASK), DefaultEditorKit.copyAction);\n\t\t\tinputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.META_DOWN_MASK), DefaultEditorKit.cutAction);\n\t\t\tinputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_V, KeyEvent.META_DOWN_MASK), DefaultEditorKit.pasteAction);\n\t\t\tinputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.META_DOWN_MASK), DefaultEditorKit.selectAllAction);\n\t\t\t//Win Keys\n\t\t\tinputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.CTRL_DOWN_MASK), DefaultEditorKit.copyAction);\n\t\t\tinputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.CTRL_DOWN_MASK), DefaultEditorKit.cutAction);\n\t\t\tinputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_V, KeyEvent.CTRL_DOWN_MASK), DefaultEditorKit.pasteAction);\n\t\t\tinputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_DOWN_MASK), DefaultEditorKit.selectAllAction);\n\t\t\t//Other\n\t\t\tinputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_INSERT, KeyEvent.CTRL_DOWN_MASK), DefaultEditorKit.copyAction);\n\t\t\tinputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, KeyEvent.SHIFT_DOWN_MASK), DefaultEditorKit.cutAction);\n\t\t\tinputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_INSERT, KeyEvent.SHIFT_DOWN_MASK), DefaultEditorKit.pasteAction);\n\t\t\tinputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_SLASH, KeyEvent.CTRL_DOWN_MASK), DefaultEditorKit.selectAllAction);\n\t\t}\n\t}\n\n\tprivate void addKeysMisc(Object object) {\n\t\tif (object instanceof InputMap) { //Better safe than sorry\n\t\t\tInputMap inputMap = (InputMap) object;\n\t\t\t//Mac Keys\n\t\t\tinputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.META_DOWN_MASK), \"copy\");\n\t\t\tinputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.META_DOWN_MASK), \"cut\");\n\t\t\tinputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_V, KeyEvent.META_DOWN_MASK), \"parse\");\n\t\t\tinputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.META_DOWN_MASK), \"selectAll\");\n\t\t\t//Win Keys\n\t\t\tinputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.CTRL_DOWN_MASK), \"copy\");\n\t\t\tinputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.CTRL_DOWN_MASK), \"cut\");\n\t\t\tinputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_V, KeyEvent.CTRL_DOWN_MASK), \"parse\");\n\t\t\tinputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_DOWN_MASK), \"selectAll\");\n\t\t\t//Other\n\t\t\tinputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_INSERT, KeyEvent.CTRL_DOWN_MASK), \"copy\");\n\t\t\tinputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, KeyEvent.SHIFT_DOWN_MASK), \"cut\");\n\t\t\tinputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_INSERT, KeyEvent.SHIFT_DOWN_MASK), \"parse\");\n\t\t\tinputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_SLASH, KeyEvent.CTRL_DOWN_MASK), \"selectAll\");\n\t\t}\n\t}\n\n\tpublic static int getButtonsHeight() {\n\t\treturn height;\n\t}\n\n\tprivate void calcButtonsHeight() {\n\t\theight = Math.max(height, new JComboBox<>().getPreferredSize().height);\n\t\theight = Math.max(height, new JTextField().getPreferredSize().height);\n\t\theight = Math.max(height, new JButton().getPreferredSize().height);\n\t}\n\n\tpublic static int getButtonsWidth() {\n\t\treturn 90;\n\t}\n\n\tpublic static int getIconButtonsWidth() {\n\t\treturn 30;\n\t}\n\n\tpublic void addMainTab(final String toolName, final JMainTab jMainTab) {\n\t\tJMainTab old = jMainTabs.put(toolName, jMainTab);\n\t\tif (old != null) {\n\t\t\tthrow new RuntimeException(\"toolName: \" + toolName + \" is duplicated\");\n\t\t}\n\t}\n\n\tpublic Map<String, JMainTab> getInitTabs() {\n\t\treturn jMainTabs;\n\t}\n\n\tprivate void timerTicked() {\n\t\tif (!timer.isRunning()) {\n\t\t\ttimer.start();\n\t\t}\n\t\tboolean isUpdatable = updatable.isUpdatable();\n\t\tthis.getStatusPanel().timerTicked(isUpdatable);\n\t\tthis.getMainWindow().getMenu().timerTicked(isUpdatable, StructureUpdateDialog.structuresUpdatable(this));\n\t}\n\n\tpublic final void update() {\n\t\tupdater.update(Program.PROGRAM_VERSION, localData, Settings.get().getProxyData());\n\t}\n\n\tpublic boolean checkProgramUpdate() {\n\t\treturn updater.checkProgramUpdate(Program.PROGRAM_VERSION);\n\t}\n\n\tpublic boolean checkDataUpdate() {\n\t\treturn updater.checkDataUpdate(localData);\n\t}\n\n\tpublic final void showUpdateStructuresDialog(boolean minimizable) {\n\t\tif (getStatusPanel().updateing(UpdateType.STRUCTURE)) {\n\t\t\tJOptionPane.showMessageDialog(getMainWindow().getFrame(), GuiFrame.get().updatingInProgressMsg(), GuiFrame.get().updatingInProgressTitle(), JOptionPane.PLAIN_MESSAGE);\n\t\t} else {\n\t\t\tupdateStructures(null, minimizable);\n\t\t}\n\t}\n\n\tpublic final void updateMarketOrdersWithProgress(OutbidProcesserOutput output) {\n\t\tJLockWindow jLockWindow = new JLockWindow(getMainWindow().getFrame());\n\t\tjLockWindow.show(GuiShared.get().updating(), new LockWorkerAdaptor() {\n\t\t\t@Override\n\t\t\tpublic void task() {\n\t\t\t\tupdateEventLists(null, null, null, output);\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic final void updateMarketOrders(OutbidProcesserOutput output) {\n\t\tupdateEventLists(null, null, null, output);\n\t}\n\n\tpublic final void updateLocations(Set<Long> locationIDs) {\n\t\tJLockWindow jLockWindow = new JLockWindow(getMainWindow().getFrame());\n\t\tjLockWindow.show(GuiShared.get().updating(), new LockWorkerAdaptor() {\n\t\t\t@Override\n\t\t\tpublic void task() {\n\t\t\t\tupdateEventLists(null, locationIDs, null, null);\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic final void updatePrices(Set<Integer> typeIDs) {\n\t\tJLockWindow jLockWindow = new JLockWindow(getMainWindow().getFrame());\n\t\tjLockWindow.show(GuiShared.get().updating(), new LockWorkerAdaptor() {\n\t\t\t@Override\n\t\t\tpublic void task() {\n\t\t\t\tupdateEventLists(null, null, typeIDs, null);\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic final void updateNames(Set<Long> itemIDs) {\n\t\tJLockWindow jLockWindow = new JLockWindow(getMainWindow().getFrame());\n\t\tjLockWindow.show(GuiShared.get().updating(), new LockWorkerAdaptor() {\n\t\t\t@Override\n\t\t\tpublic void task() {\n\t\t\t\tupdateEventLists(itemIDs, null, null, null);\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic final void updateEventListsWithProgress() {\n\t\tupdateEventListsWithProgress(getMainWindow().getFrame());\n\t}\n\n\tpublic final void updateEventListsWithProgress(final Window parent) {\n\t\tJLockWindow jLockWindow = new JLockWindow(parent);\n\t\tjLockWindow.show(GuiShared.get().updating(), new LockWorkerAdaptor() {\n\t\t\t@Override\n\t\t\tpublic void task() {\n\t\t\t\tupdateEventLists();\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic final void updateEventLists() {\n\t\tupdateEventLists(null, null, null, null);\n\t}\n\n\tprivate synchronized void updateEventLists(Set<Long> itemIDs, Set<Long> locationIDs, Set<Integer> typeIDs, OutbidProcesserOutput output) {\n\t\tLOG.info(\"Updating EventList\");\n\t\tFilterMatcher.clearColumnValueCache();\n\t\tfor (JMainTab jMainTab : mainWindow.getTabs()) {\n\t\t\tensureEDT(new Runnable() {\n\t\t\t\t@Override\n\t\t\t\tpublic void run() {\n\t\t\t\t\tjMainTab.beforeUpdateData();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tif (output != null) {\n\t\t\tprofileData.updateMarketOrders(output);\n\t\t} else if (itemIDs != null) {\n\t\t\tprofileData.updateNames(itemIDs);\n\t\t} else if (locationIDs != null) {\n\t\t\tprofileData.updateLocations(locationIDs);\n\t\t} else if (typeIDs != null) {\n\t\t\tprofileData.updatePrice(typeIDs);\n\t\t} else {\n\t\t\tSoundPlayer.cancelAll(); //Stop sounds\n\t\t\tprofileData.updateEventLists();\n\t\t}\n\t\tif (locationIDs != null) { //Update locations\n\t\t\tfor (JMainTab jMainTab : mainWindow.getTabs()) {\n\t\t\t\tensureEDT(new Runnable() {\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic void run() {\n\t\t\t\t\t\tjMainTab.updateLocations(locationIDs);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (typeIDs != null) { //Update prices\n\t\t\tfor (JMainTab jMainTab : mainWindow.getTabs()) {\n\t\t\t\tensureEDT(new Runnable() {\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic void run() {\n\t\t\t\t\t\tjMainTab.updatePrices(typeIDs);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (itemIDs != null) { //Update names\n\t\t\tfor (JMainTab jMainTab : mainWindow.getTabs()) {\n\t\t\t\tensureEDT(new Runnable() {\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic void run() {\n\t\t\t\t\t\tjMainTab.updateNames(itemIDs);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t} else { //Full update\n\t\t\tfor (JMainTab jMainTab : mainWindow.getTabs()) {\n\t\t\t\tensureEDT(new Runnable() {\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic void run() {\n\t\t\t\t\t\tjMainTab.updateData();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tfor (JMainTab jMainTab : mainWindow.getTabs()) {\n\t\t\tensureEDT(new Runnable() {\n\t\t\t\t@Override\n\t\t\t\tpublic void run() {\n\t\t\t\t\tjMainTab.afterUpdateData();\n\t\t\t\t\tjMainTab.updateCache();\n\t\t\t\t\tjMainTab.repaintFilters();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tensureEDT(new Runnable() {\n\t\t\t@Override\n\t\t\tpublic void run() {\n\t\t\t\tStockpileTab stockpile = getStockpileTab(false);\n\t\t\t\tif (stockpile != null) {\n\t\t\t\t\tstockpile.updateStockpileDialog();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tensureEDT(new Runnable() {\n\t\t\t@Override\n\t\t\tpublic void run() {\n\t\t\t\ttimerTicked();\n\t\t\t}\n\t\t});\n\t\tensureEDT(new Runnable() {\n\t\t\t@Override\n\t\t\tpublic void run() {\n\t\t\t\tupdateTableMenu();\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic void repaintTables() {\n\t\tfor (JMainTab jMainTab : mainWindow.getTabs()) {\n\t\t\tensureEDT(new Runnable() {\n\t\t\t\t@Override\n\t\t\t\tpublic void run() {\n\t\t\t\t\tjMainTab.repaintTable();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic static void ensureEDT(Runnable runnable) {\n\t\tif (SwingUtilities.isEventDispatchThread()) {\n\t\t\trunnable.run();\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tSwingUtilities.invokeAndWait(runnable);\n\t\t\t} catch (InterruptedException | InvocationTargetException ex) {\n\t\t\t\tthrow new RuntimeException(ex);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Save Settings ASAP\n\t * @param msg Who is saving what?\n\t */\n\tpublic void saveSettings(final String msg) {\n\t\tif (!CliOptions.get().isLazySave() && !Settings.ignoreSave()) {\n\t\t\tSettings.saveStart();\n\t\t\tThread thread = new SaveSettings(msg, this);\n\t\t\tthread.start();\n\t\t}\n\t}\n\n\tprivate void doSaveSettings(final String msg) {\n\t\tLOG.info(\"Saving Settings: \" + msg);\n\t\tSettings.lock(\"Table (Column/Width/Resize) and Window Settings\"); //Lock for Table (Column/Width/Resize) and Window Settings\n\t\tmainWindow.updateSettings();\n\t\tfor (JMainTab jMainTab : getInitTabs().values()) {\n\t\t\tjMainTab.saveSettings();\n\t\t}\n\t\tSettings.unlock(\"Table (Column/Width/Resize) and Window Settings\"); //Unlock for Table (Column/Width/Resize) and Window Settings\n\t\tSettings.saveSettings();\n\t}\n\n\tpublic void saveSettingsAndProfile() {\n\t\tif (CliOptions.get().isLazySave()) {\n\t\t\tdoSaveSettings(\"API Update\");\n\t\t} else {\n\t\t\tsaveSettings(\"API Update\");\n\t\t\tSettings.waitForEmptySaveQueue();\n\t\t}\n\t\tprofileManager.saveProfile();\n\t}\n\n\tpublic synchronized void saveProfile() {\n\t\tLOG.info(\"Saving Profile\");\n\t\tprofileManager.saveProfile();\n\t}\n\n\tpublic synchronized void saveTable(Table table) {\n\t\tLOG.info(\"Saving Profile Table\");\n\t\tprofileManager.saveProfileTable(table);\n\t}\n\n\tpublic void exit() {\n\t\tif (safeExit()) {\n\t\t\tSystem.exit(0);\n\t\t}\n\t}\n\n\t/**\n\t * Make ready to exit\n\t * @return true for exit and false to cancel exit\n\t */\n\tprivate boolean safeExit() {\n\t\tif (getStatusPanel().updateInProgress() > 0) {\n\t\t\tint value = JOptionPane.showConfirmDialog(getMainWindow().getFrame(), GuiFrame.get().exitMsg(getStatusPanel().updateInProgress()), GuiFrame.get().exitTitle(getStatusPanel().updateInProgress()), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);\n\t\t\tif (value != JOptionPane.OK_OPTION) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tgetStatusPanel().cancelUpdates();\n\t\tsaveExit();\n\t\tLOG.info(\"Running shutdown hook(s) and exiting...\");\n\t\treturn true;\n\t}\n\n\tprivate void saveExit() {\n\t\tif (CliOptions.get().isLazySave()) {\n\t\t\tdoSaveSettings(\"Exit\");\n\t\t} else {\n\t\t\tLOG.info(\"Waiting for save queue to finish...\");\n\t\t\tSettings.waitForEmptySaveQueue();\n\t\t}\n\t\tTrackerData.waitForEmptySaveQueue();\n\t}\n\n\tprivate void showAbout() {\n\t\tensureEDT(new Runnable() {\n\t\t\t@Override\n\t\t\tpublic void run() {\n\t\t\t\taboutDialog.setVisible(true);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate void showSettings() {\n\t\tensureEDT(new Runnable() {\n\t\t\t@Override\n\t\t\tpublic void run() {\n\t\t\t\tsettingsDialog.setVisible(true);\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic String getProgramDataVersion() {\n\t\treturn localData;\n\t}\n\n\tprivate void macOsxCode() {\n\t\tif (FileUtil.onMac()) {\n\t\t\tFlatDesktop.setAboutHandler(new Runnable() {\n\t\t\t\t@Override\n\t\t\t\tpublic void run() {\n\t\t\t\t\tshowAbout();\n\t\t\t\t}\n\t\t\t});\n\t\t\tFlatDesktop.setPreferencesHandler(new Runnable() {\n\t\t\t\t@Override\n\t\t\t\tpublic void run() {\n\t\t\t\t\tshowSettings();\n\t\t\t\t}\n\t\t\t});\n\t\t\tFlatDesktop.setQuitHandler(new Consumer<QuitResponse>() {\n\t\t\t\t@Override\n\t\t\t\tpublic void accept(QuitResponse quitResponse) {\n\t\t\t\t\tif (safeExit()) {\n\t\t\t\t\t\tquitResponse.performQuit();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tquitResponse.cancelQuit();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic MainWindow getMainWindow() {\n\t\treturn mainWindow;\n\t}\n\n\tpublic AssetsTab getAssetsTab() {\n\t\treturn assetsTab;\n\t}\n\n\tpublic ContractsTab getContractsTab(boolean init) {\n\t\tif (init && contractsTab == null) {\n\t\t\tLOG.info(\"Loading: Contracts Tab\");\n\t\t\tcontractsTab = new ContractsTab(this);\n\t\t}\n\t\treturn contractsTab;\n\t}\n\n\tpublic IndustryJobsTab getIndustryJobsTab(boolean init) {\n\t\tif (init && industryJobsTab == null) {\n\t\t\tLOG.info(\"Loading: Industry Jobs Tab\");\n\t\t\tindustryJobsTab = new IndustryJobsTab(this);\n\t\t}\n\t\treturn industryJobsTab;\n\t}\n\n\tpublic SlotsTab getSlotsTab(boolean init) {\n\t\tif (init && slotsTab == null) {\n\t\t\tLOG.info(\"Loading: Slots Tab\");\n\t\t\tslotsTab = new SlotsTab(this);\n\t\t}\n\t\treturn slotsTab;\n\t}\n\n\tpublic OverviewTab getOverviewTab(boolean init) {\n\t\tif (init && overviewTab == null) {\n\t\t\tLOG.info(\"Loading: Overview Tab\");\n\t\t\toverviewTab = new OverviewTab(this);\n\t\t}\n\t\treturn overviewTab;\n\t}\n\n\tpublic TreeTab getTreeTab(boolean init) {\n\t\tif (init && treeTab == null) {\n\t\t\tLOG.info(\"Loading: Tree Tab\");\n\t\t\ttreeTab = new TreeTab(this);\n\t\t}\n\t\treturn treeTab;\n\t}\n\n\tpublic LoadoutsTab getLoadoutsTab(boolean init) {\n\t\tif (init && loadoutsTab == null) {\n\t\t\tLOG.info(\"Loading: Ship Loadouts Tab\");\n\t\t\tloadoutsTab = new LoadoutsTab(this);\n\t\t}\n\t\treturn loadoutsTab;\n\t}\n\n\tpublic StockpileTab getStockpileTab(boolean init) {\n\t\tif (init && stockpileTab == null) {\n\t\t\tLOG.info(\"Loading: Stockpile Tab\");\n\t\t\tstockpileTab = new StockpileTab(this);\n\t\t}\n\t\treturn stockpileTab;\n\t}\n\n\tpublic ReprocessedTab getReprocessedTab(boolean init) {\n\t\tif (init && reprocessedTab == null) {\n\t\t\tLOG.info(\"Loading: Reprocessed Tab\");\n\t\t\treprocessedTab = new ReprocessedTab(this);\n\t\t}\n\t\treturn reprocessedTab;\n\t}\n\n\tpublic SkillsOverviewTab getSkillsOverviewTab(boolean init) {\n\t\tif (init && skillsOverviewTab == null) {\n\t\t\tLOG.info(\"Loading: Skills Overview Tab\");\n\t\t\tskillsOverviewTab = new SkillsOverviewTab(this);\n\t\t}\n\t\treturn skillsOverviewTab;\n\t}\n\n\tpublic RoutingTab getRoutingTab(boolean init) {\n\t\tif (init && routingTab == null) {\n\t\t\tLOG.info(\"Loading: Routing Tab\");\n\t\t\troutingTab = new RoutingTab(this);\n\t\t}\n\t\treturn routingTab;\n\t}\n\n\tpublic TrackerTab getTrackerTab(boolean init) {\n\t\tif (init && trackerTab == null) {\n\t\t\tLOG.info(\"Loading: Tracker Tab\");\n\t\t\ttrackerTab = new TrackerTab(this);\n\t\t}\n\t\treturn trackerTab;\n\t}\n\n\tpublic ValueRetroTab getValueTab(boolean init) {\n\t\tif (init && valueRetroTab == null) {\n\t\t\tLOG.info(\"Loading: Values Tab\");\n\t\t\tvalueRetroTab = new ValueRetroTab(this);\n\t\t}\n\t\treturn valueRetroTab;\n\t}\n\n\tpublic ValueTableTab getIskTab(boolean init) {\n\t\tif (init && valueTableTab == null) {\n\t\t\tLOG.info(\"Loading: Isk Tab\");\n\t\t\tvalueTableTab = new ValueTableTab(this);\n\t\t}\n\t\treturn valueTableTab;\n\t}\n\n\tpublic TransactionTab getTransactionsTab(boolean init) {\n\t\tif (init && transactionsTab == null) {\n\t\t\tLOG.info(\"Loading: Transactions Tab\");\n\t\t\ttransactionsTab = new TransactionTab(this);\n\t\t}\n\t\treturn transactionsTab;\n\t}\n\n\tpublic PriceHistoryTab getPriceHistoryTab(boolean init) {\n\t\tif (init && priceHistoryTab == null) {\n\t\t\tLOG.info(\"Loading: Price History Tab\");\n\t\t\tpriceHistoryTab = new PriceHistoryTab(Program.this);\n\t\t}\n\t\treturn priceHistoryTab;\n\t\t\n\t}\n\n\tpublic MarketOrdersTab getMarketOrdersTab(boolean init) {\n\t\tif (init && marketOrdersTab == null) {\n\t\t\tLOG.info(\"Loading: Market Orders Tab\");\n\t\t\tmarketOrdersTab = new MarketOrdersTab(this);\n\t\t}\n\t\treturn marketOrdersTab;\n\t}\n\n\tpublic MiningTab getMiningTab(boolean init) {\n\t\tif (init && miningTab == null) {\n\t\t\tLOG.info(\"Loading: Mining Log Tab\");\n\t\t\tminingTab = new MiningTab(this);\n\t\t}\n\t\treturn miningTab;\n\t}\n\n\tpublic MiningGraphTab getMiningGraphTab(boolean init) {\n\t\tif (init && miningGraphTab == null) {\n\t\t\tLOG.info(\"Loading: Mining Graph Tab\");\n\t\t\tminingGraphTab = new MiningGraphTab(this);\n\t\t}\n\t\treturn miningGraphTab;\n\t}\n\n\tpublic ExtractionsTab getExtractionsTab(boolean init) {\n\t\tif (init && extractionsTab == null) {\n\t\t\tLOG.info(\"Loading: Extractions Tab\");\n\t\t\textractionsTab = new ExtractionsTab(this);\n\t\t}\n\t\treturn extractionsTab;\n\t}\n\n\tpublic MaterialsTab getMaterialsTab(boolean init) {\n\t\tif (init && materialsTab == null) {\n\t\t\tLOG.info(\"Loading: Materials Tab\");\n\t\t\tmaterialsTab = new MaterialsTab(this);\n\t\t}\n\t\treturn materialsTab;\n\t}\n\n\tpublic PriceChangesTab getPriceChangesTab(boolean init) {\n\t\tif (init && priceChangesTab == null) {\n\t\t\tLOG.info(\"Loading: Price Changes Tab\");\n\t\t\tpriceChangesTab = new PriceChangesTab(this);\n\t\t}\n\t\treturn priceChangesTab;\n\t}\n\n\tpublic JournalTab getJournalTab(boolean init) {\n\t\tif (init && journalTab == null) {\n\t\t\tLOG.info(\"Loading: Journal Tab\");\n\t\t\tjournalTab = new JournalTab(this);\n\t\t}\n\t\treturn journalTab;\n\t}\n\n\tpublic ItemsTab getItemsTab(boolean init) {\n\t\tif (init && itemsTab == null) {\n\t\t\tLOG.info(\"Loading: Items Tab\");\n\t\t\titemsTab = new ItemsTab(this);\n\t\t}\n\t\treturn itemsTab;\n\t}\n\n\tpublic SkillsTab getSkillsTab(boolean init) {\n\t\tif (init && skillsTab == null) {\n\t\t\tLOG.info(\"Loading: Skills Tab\");\n\t\t\tskillsTab = new SkillsTab(this);\n\t\t}\n\t\treturn skillsTab;\n\t}\n\n\tpublic LoyaltyPointsTab getLoyaltyPointsTab(boolean init) {\n\t\tif (init && loyaltyPointsTab == null) {\n\t\t\tLOG.info(\"Loading: Loyalty Points Tab\");\n\t\t\tloyaltyPointsTab = new LoyaltyPointsTab(this);\n\t\t}\n\t\treturn loyaltyPointsTab;\n\t}\n\n\tpublic NpcStandingTab getNpcStandingTab(boolean init) {\n\t\tif (init && npcStandingTab == null) {\n\t\t\tLOG.info(\"Loading: NPC Standing Tab\");\n\t\t\tnpcStandingTab = new NpcStandingTab(this);\n\t\t}\n\t\treturn npcStandingTab;\n\t}\n\n\tpublic AgentsTab getAgentsTab(boolean init) {\n\t\tif (init && agentsTab == null) {\n\t\t\tLOG.info(\"Loading: Agents Tab\");\n\t\t\tagentsTab = new AgentsTab(this);\n\t\t}\n\t\treturn agentsTab;\n\t}\n\n\tpublic StatusPanel getStatusPanel() {\n\t\treturn this.getMainWindow().getStatusPanel();\n\t}\n\n\tpublic UserNameSettingsPanel getUserNameSettingsPanel() {\n\t\tif (settingsDialog != null) {\n\t\t\treturn settingsDialog.getUserNameSettingsPanel();\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic UserPriceSettingsPanel getUserPriceSettingsPanel() {\n\t\tif (settingsDialog != null) {\n\t\t\treturn settingsDialog.getUserPriceSettingsPanel();\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic UserLocationSettingsPanel getUserLocationSettingsPanel() {\n\t\tif (settingsDialog != null) {\n\t\t\treturn settingsDialog.getUserLocationSettingsPanel();\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic void showJumpsSettingsPanel() {\n\t\tif (settingsDialog != null) {\n\t\t\tsettingsDialog.showJumpsSettingsPanel();\n\t\t}\n\t}\n\n\tpublic ProfileData getProfileData() {\n\t\treturn profileData;\n\t}\n\n\tpublic List<MyAsset> getAssetsList() {\n\t\treturn profileData.getAssetsList();\n\t}\n\n\tpublic List<MyContract> getContractList() {\n\t\treturn profileData.getContractList();\n\t}\n\n\tpublic List<MyContractItem> getContractItemList() {\n\t\treturn profileData.getContractItemList();\n\t}\n\n\tpublic List<MyIndustryJob> getIndustryJobsList() {\n\t\treturn profileData.getIndustryJobsList();\n\t}\n\n\tpublic List<MyMarketOrder> getMarketOrdersList() {\n\t\treturn profileData.getMarketOrdersList();\n\t}\n\n\tpublic List<MyJournal> getJournalList() {\n\t\treturn profileData.getJournalList();\n\t}\n\n\tpublic List<MyTransaction> getTransactionsList() {\n\t\treturn profileData.getTransactionsList();\n\t}\n\n\tpublic List<MyAccountBalance> getAccountBalanceList() {\n\t\treturn profileData.getAccountBalanceList();\n\t}\n\n\tpublic List<String> getOwnerNames(boolean all) {\n\t\treturn profileData.getOwnerNames(all);\n\t}\n\n\tpublic Map<Long, OwnerType> getOwners() {\n\t\treturn profileData.getOwners();\n\t}\n\n\tpublic List<OwnerType> getOwnerTypes() {\n\t\treturn profileManager.getOwnerTypes();\n\t}\n\n\tpublic ProfileManager getProfileManager() {\n\t\treturn profileManager;\n\t}\n\n\tpublic PriceDataGetter getPriceDataGetter() {\n\t\treturn priceDataGetter;\n\t}\n\n\tpublic void createTrackerDataPoint() {\n\t\tDataSetCreator.createTrackerDataPoint(profileData, Settings.getNow());\n\t\tTrackerData.save(\"Added\", true);\n\t\tensureEDT(new Runnable() {\n\t\t\t@Override\n\t\t\tpublic void run() {\n\t\t\t\tTrackerTab tracker = getTrackerTab(false);\n\t\t\t\tif (tracker != null) {\n\t\t\t\t\ttracker.updateData();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic static boolean isDevBuild() {\n\t\treturn PROGRAM_DEV_BUILD;\n\t}\n\n\tpublic void updateStructures(Set<MyLocation> locations, boolean minimizable) {\n\t\tstructureUpdateDialog.show(locations, minimizable);\n\t}\n\n\t/**\n\t * Called when Tags are changed.\n\t */\n\tpublic void updateTags() {\n\t\tJLockWindow jLockWindow = new JLockWindow(getMainWindow().getFrame());\n\t\tjLockWindow.show(GuiShared.get().updating(), new LockWorkerAdaptor() {\n\t\t\t@Override\n\t\t\tpublic void task() {\n\t\t\t\tfor (JMainTab mainTab : getInitTabs().values()) {\n\t\t\t\t\tif (mainTab instanceof TagUpdate) {\n\t\t\t\t\t\tmainTab.updateCache();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t@Override\n\t\t\tpublic void gui() {\n\t\t\t\tfor (JMainTab mainTab : getInitTabs().values()) {\n\t\t\t\t\tif (mainTab instanceof TagUpdate) {\n\t\t\t\t\t\tTagUpdate tagUpdate = (TagUpdate) mainTab;\n\t\t\t\t\t\ttagUpdate.updateTags();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t * Called when Overview Groups are changed.\n\t */\n\tpublic void overviewGroupsChanged() {\n\t\tRoutingTab routing = getRoutingTab(false);\n\t\tif (routing != null) {\n\t\t\trouting.overviewGroupsChanged();\n\t\t}\n\t}\n\n\t/**\n\t * Called when the table menu needs update.\n\t */\n\tpublic void updateTableMenu() {\n\t\tthis.getMainWindow().getSelectedTab().updateTableMenu();\n\t}\n\n\t/**\n\t * Called when the active tab is change (close/open/change).\n\t */\n\tpublic void tabChanged() {\n\t\tgetStatusPanel().tabChanged();\n\t\tif (industryJobsTab != null) {\n\t\t\tindustryJobsTab.tabChanged();\n\t\t}\n\t\tupdateTableMenu();\n\t}\n\n\t@Override\n\tpublic void actionPerformed(final ActionEvent e) {\n\t//Tools\n\t\tif (MainMenuAction.VALUES.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getValueTab(true));\n\t\t} else if (MainMenuAction.VALUE_TABLE.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getIskTab(true));\n\t\t} else if (MainMenuAction.PRICE_HISTORY.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getPriceHistoryTab(true));\n\t\t} else if (MainMenuAction.PRICE_CHANGES.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getPriceChangesTab(true));\n\t\t} else if (MainMenuAction.MATERIALS.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getMaterialsTab(true));\n\t\t} else if (MainMenuAction.LOADOUTS.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getLoadoutsTab(true));\n\t\t} else if (MainMenuAction.MARKET_ORDERS.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getMarketOrdersTab(true));\n\t\t} else if (MainMenuAction.JOURNAL.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getJournalTab(true));\n\t\t} else if (MainMenuAction.TRANSACTION.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getTransactionsTab(true));\n\t\t} else if (MainMenuAction.INDUSTRY_JOBS.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getIndustryJobsTab(true));\n\t\t} else if (MainMenuAction.SLOTS.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getSlotsTab(true));\n\t\t} else if (MainMenuAction.OVERVIEW.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getOverviewTab(true));\n\t\t} else if (MainMenuAction.ROUTING.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getRoutingTab(true));\n\t\t} else if (MainMenuAction.STOCKPILE.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getStockpileTab(true));\n\t\t} else if (MainMenuAction.ITEMS.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getItemsTab(true));\n\t\t} else if (MainMenuAction.TRACKER.name().equals(e.getActionCommand())) {\n\t\t\tTrackerTab tracker = getTrackerTab(true);\n\t\t\tmainWindow.addTab(tracker);\n\t\t\ttracker.checkAll();\n\t\t} else if (MainMenuAction.REPROCESSED.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getReprocessedTab(true));\n\t\t} else if (MainMenuAction.CONTRACTS.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getContractsTab(true));\n\t\t} else if (MainMenuAction.TREE.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getTreeTab(true));\n\t\t} else if (MainMenuAction.SKILLS.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getSkillsTab(true));\n\t\t} else if (MainMenuAction.SKILLS_OVERVIEW.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getSkillsOverviewTab(true));\n\t\t} else if (MainMenuAction.LOYALTY_POINTS.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getLoyaltyPointsTab(true));\n\t\t} else if (MainMenuAction.NPC_STANDING.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getNpcStandingTab(true));\n\t\t} else if (MainMenuAction.AGENTS.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getAgentsTab(true));\n\t\t} else if (MainMenuAction.MINING_ALL.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getMiningTab(true));\n\t\t\tmainWindow.addTab(getMiningGraphTab(true));\n\t\t\tmainWindow.addTab(getExtractionsTab(true));\n\t\t} else if (MainMenuAction.MINING_LOG.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getMiningTab(true));\n\t\t} else if (MainMenuAction.MINING_GRAPH.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getMiningGraphTab(true));\n\t\t} else if (MainMenuAction.EXTRACTIONS.name().equals(e.getActionCommand())) {\n\t\t\tmainWindow.addTab(getExtractionsTab(true));\n\t\t} else if (MainMenuAction.ACCOUNT_MANAGER.name().equals(e.getActionCommand())) { //Settings\n\t\t\taccountManagerDialog.setVisible(true);\n\t\t} else if (MainMenuAction.PROFILES.name().equals(e.getActionCommand())) {\n\t\t\tprofileDialog.setVisible(true);\n\t\t} else if (MainMenuAction.OPTIONS.name().equals(e.getActionCommand())) {\n\t\t\tshowSettings();\n\t\t} else if (MainMenuAction.UPDATE.name().equals(e.getActionCommand())) { //Update\n\t\t\tupdateDialog.setVisible(true);\n\t\t} else if (MainMenuAction.UPDATE_STRUCTURE.name().equals(e.getActionCommand())) {\n\t\t\tshowUpdateStructuresDialog(true);\n\t\t} else if (MainMenuAction.ABOUT.name().equals(e.getActionCommand())) { //Others\n\t\t\tshowAbout();\n\t\t} else if (MainMenuAction.LINK_WIKI.name().equals(e.getActionCommand())) {\n\t\t\tDesktopUtil.browse(\"https://wiki.jeveassets.org\", this); //Links\n\t\t} else if (MainMenuAction.LINK_FEEDBACK_AND_HELP.name().equals(e.getActionCommand())) {\n\t\t\tDesktopUtil.browse(\"https://wiki.jeveassets.org/faq#feedback_and_help\", this);\n\t\t} else if (MainMenuAction.LINK_DISCORD.name().equals(e.getActionCommand())) {\n\t\t\tDesktopUtil.browse(\"https://discord.gg/8kYZvbM\", this);\n\t\t} else if (MainMenuAction.README.name().equals(e.getActionCommand())) { //External Files\n\t\t\tDesktopUtil.open(FileUtil.getPathReadme(), this);\n\t\t} else if (MainMenuAction.LICENSE.name().equals(e.getActionCommand())) {\n\t\t\tDesktopUtil.open(FileUtil.getPathLicense(), this);\n\t\t} else if (MainMenuAction.CREDITS.name().equals(e.getActionCommand())) {\n\t\t\tDesktopUtil.open(FileUtil.getPathCredits(), this);\n\t\t} else if (MainMenuAction.CHANGELOG.name().equals(e.getActionCommand())) {\n\t\t\tDesktopUtil.open(FileUtil.getPathChangeLog(), this);\n\t\t} else if (MainMenuAction.EXIT_PROGRAM.name().equals(e.getActionCommand())) { //Exit\n\t\t\texit();\n\t\t} else if (ProgramAction.TIMER.name().equals(e.getActionCommand())) { //Ticker\n\t\t\ttimerTicked();\n\t\t}\n\t}\n\n\tprivate static class SaveSettings extends Thread {\n\n\t\tprivate static int counter = 0;\n\n\t\tprivate final String msg;\n\t\tprivate final Program program;\n\t\tprivate final int id;\n\n\t\tpublic SaveSettings(String msg, Program program) {\n\t\t\tsuper(\"Save Settings \" + counter++ + \": \" + msg);\n\t\t\tthis.msg = msg;\n\t\t\tthis.program = program;\n\t\t\tthis.id = counter;\n\t\t}\n\n\t\t@Override\n\t\tpublic void run() {\n\t\t\tlong before = System.currentTimeMillis();\n\n\t\t\tprogram.doSaveSettings(msg);\n\n\t\t\tSettings.saveEnd();\n\n\t\t\tlong after = System.currentTimeMillis();\n\n\t\t\tLOG.debug(\"Settings saved in: \" + (after - before) + \"ms\");\n\t\t}\n\n\t\t@Override\n\t\tpublic int hashCode() {\n\t\t\tint hash = 7;\n\t\t\thash = 67 * hash + this.id;\n\t\t\treturn hash;\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean equals(Object obj) {\n\t\t\tif (obj == null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (getClass() != obj.getClass()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfinal SaveSettings other = (SaveSettings) obj;\n\t\t\treturn this.id == other.id;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/SingleInstance.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * Original code from: http://ganeshtiwaridotcomdotnp.blogspot.dk/2012/01/java-single-instance-of-application.html\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset;\r\n\r\nimport java.awt.GraphicsEnvironment;\r\nimport java.io.IOException;\r\nimport java.net.ServerSocket;\r\nimport java.net.Socket;\r\nimport javax.swing.JOptionPane;\r\nimport net.nikr.eve.jeveasset.i18n.General;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class SingleInstance {\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(SingleInstance.class);\r\n\r\n\tprivate final String HOST = \"127.0.0.1\";\r\n\tprivate final int PORT = 2222;\r\n\tprivate final DetectForNew thread;\r\n\tprivate boolean msgShown = false;\r\n\r\n\tpublic SingleInstance() {\r\n\t\t// try to connect to server\r\n\t\ttest();\r\n\t\t// start detecting server thread\r\n\t\tthread = new DetectForNew();\r\n\t\tthread.start();\r\n\t}\r\n\r\n\tpublic boolean isSingleInstance() {\r\n\t\treturn thread.isSingleInstance() && !msgShown;\r\n\t}\r\n\r\n\tprivate void test() {\r\n\t\tif (!msgShown && findExisting()) {\r\n\t\t\tmsgShown = true;\r\n\t\t\tif(GraphicsEnvironment.isHeadless()) {\r\n\t\t\t\tLOG.error(\"jEveAssets is already running\");\r\n\t\t\t\tLOG.error(\"jEveAssets do not support running more than one instance\");\r\n\t\t\t\tLOG.error(\"To avoid losing or corrupting data jEveAssets will now exit\");\r\n\t\t\t\tLOG.error(\"Goodbye...\");\r\n\t\t\t\tSystem.exit(-1);\r\n\t\t\t}\r\n\t\t\tint value = JOptionPane.showConfirmDialog(Main.getTop(), General.get().singleInstanceMsg(), General.get().singleInstanceTitle(), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);\r\n\t\t\tif (value != JOptionPane.YES_OPTION) {\r\n\t\t\t\tSystem.exit(-1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate boolean findExisting() {\r\n\t\tLOG.info(\"Check for existing instances\");\r\n\t\ttry {\r\n\t\t\tnew Socket(HOST, PORT);\r\n\t\t\treturn true;\r\n\t\t} catch (Exception e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tclass DetectForNew extends Thread {\r\n\r\n\t\tprivate ServerSocket serverSocket;\r\n\t\tprivate boolean singleInstance = true;\r\n\r\n\t\tpublic DetectForNew() {\r\n\t\t\tcreateServerSocket();\r\n\t\t}\r\n\r\n\t\tpublic boolean isSingleInstance() {\r\n\t\t\treturn singleInstance && serverSocket != null;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void run() {\r\n\t\t\twhile (true) {\r\n\t\t\t\tif (serverSocket == null && !findExisting()) {\r\n\t\t\t\t\tcreateServerSocket();\r\n\t\t\t\t}\r\n\t\t\t\ttry {\r\n\t\t\t\t\tif (serverSocket != null) {\r\n\t\t\t\t\t\tserverSocket.accept();\r\n\t\t\t\t\t\tsingleInstance = false;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tThread.sleep(2000); //Wait a bit and try again...\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\t//Ignore IO error\r\n\t\t\t\t} catch (InterruptedException ex) {\r\n\t\t\t\t\treturn; //We are done (exiting program)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate void createServerSocket() {\r\n\t\t\tLOG.info(\"Creating instance blocker\");\r\n\t\t\ttry {\r\n\t\t\t\tserverSocket = new ServerSocket(PORT);\r\n\t\t\t} catch (IOException ex) {\r\n\t\t\t\ttest();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/SplashUpdater.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset;\n\nimport java.awt.AlphaComposite;\nimport java.awt.Canvas;\nimport java.awt.Color;\nimport java.awt.Dimension;\nimport java.awt.Font;\nimport java.awt.Graphics;\nimport java.awt.Graphics2D;\nimport java.awt.SplashScreen;\nimport java.awt.image.BufferStrategy;\nimport java.awt.image.BufferedImage;\nimport java.io.IOException;\nimport javax.imageio.ImageIO;\nimport javax.swing.JWindow;\nimport javax.swing.SwingUtilities;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n\npublic class SplashUpdater {\n\tprivate static final Logger LOG = LoggerFactory.getLogger(SplashUpdater.class);\n\n\tprivate static int progress = 0;\n\tprivate static int subProgress = 0;\n\tprivate static String text = \"\";\n\tprivate static int currentLoadingImage = 0;\n\tprivate static BufferedImage[] loadingImages;\n\tprivate static SplashScreen splashScreen;\n\tprivate static JWindow splashWindow;\n\tprivate static Canvas splashWindowCanvas;\n\tprivate static final int UPDATE_DELAY = 200;\n\tprivate static final Object PAINT_LOCK = new Object();\n\tprivate static BufferedImage splashImage;\n\tprivate static boolean showSplashWindow = true;\n\tprivate static long delta = 0;\n\tprivate static Long lastPaint = null;\n\n\t/** Creates a new instance of SplashUpdater. */\n\tpublic SplashUpdater() {\n\t\tsplashScreen = SplashScreen.getSplashScreen();\n\t\tloadingImages = new BufferedImage[8];\n\t\tfor (int i = 0; i < 8; i++) {\n\t\t\ttry {\n\t\t\t\tloadingImages[i] = ImageIO.read(getClass().getResource(\"gui/images/loading0\" + (i + 1) + \".png\"));\n\t\t\t} catch (IOException ex) {\n\t\t\t\tLOG.warn(\"SplashScreen: loading0{}.png (NOT FOUND)\", (i + 1));\n\t\t\t}\n\t\t}\n\t\ttry {\n\t\t\tsplashImage = ImageIO.read(getClass().getResource(\"/splash.jpg\"));\n\t\t} catch (IOException | IllegalArgumentException ex) {\n\t\t\tsplashImage = null;\n\t\t}\n\t\tsplashWindow = new JWindow();\n\t\tsplashWindowCanvas = new Canvas();\n\t\tsplashWindowCanvas.setIgnoreRepaint(true);\n\t\tsplashWindowCanvas.setFocusable(false);\n\t\tsplashWindowCanvas.setFont(new Font(\"Dialog.plain\", 0, 12));\n\t\tsplashWindow.add(splashWindowCanvas);\n\t\tif (splashScreen != null) {\n\t\t\tsplashWindow.setBounds(splashScreen.getBounds());\n\t\t} else if (splashImage != null) {\n\t\t\tsplashWindow.setSize(splashImage.getWidth(), splashImage.getHeight());\n\t\t}\n\t\tsplashWindow.setLocationRelativeTo(null);\n\t}\n\n\tpublic static void hide() {\n\t\tshowSplashWindow = false;\n\t\tsplashWindow.setVisible(false);\n\t}\n\n\tpublic void start() {\n\t\tAnimator animator = new Animator();\n\t\tanimator.start();\n\t\tPaineter paineter = new Paineter();\n\t\tpaineter.start();\n\t}\n\n\tpublic synchronized static void nextLoadingImage() {\n\t\tcurrentLoadingImage++;\n\t\tif (currentLoadingImage >= 8) {\n\t\t\tcurrentLoadingImage = 0;\n\t\t}\n\t}\n\n\t/**\n\t * Set splash screen text.\n\t * @param s\t String to show on splash screen\n\t */\n\tpublic synchronized static void setText(final String s) {\n\t\ttext = s;\n\t}\n\n\t/**\n\t * Set subprogress of splash screen progressbar in the range 0-100.\n\t * @param n\t Set progress in the range 0-100\n\t */\n\tpublic synchronized static void setSubProgress(final int n) {\n\t\tint number = n;\n\t\tif (number >= 100) {\n\t\t\tnumber = 0;\n\t\t}\n\t\tif (number < 0) {\n\t\t\tnumber = 0;\n\t\t}\n\t\tif (subProgress != number) {\n\t\t\tif ((number > subProgress || number == 0)) {\n\t\t\t\tsubProgress = number;\n\t\t\t\tupdate(true);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Set progress of splash screen progressbar in the range 0-100.\n\t * @param n\t Set progress in the range 0-100\n\t */\n\tpublic synchronized static void setProgress(final int n) {\n\t\tint number = n;\n\t\tif (number > 100) {\n\t\t\tnumber = 100;\n\t\t}\n\t\tif (number < 0) {\n\t\t\tnumber = 0;\n\t\t}\n\t\tif (progress != number) {\n\t\t\tif (number > progress) {\n\t\t\t\tprogress = number;\n\t\t\t\tupdate(false);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static void update(boolean sub) {\n\t\tif (isVisible()) {\n\t\t\tsynchronized (PAINT_LOCK) {\n\t\t\t\tPAINT_LOCK.notify();\n\t\t\t}\n\t\t} else if (SwingUtilities.isEventDispatchThread()) {\n\t\t\tshowSplashWindow();\n\t\t\tpaintSplashWindow(sub);\n\t\t}\n\t}\n\n\tprivate static void showSplashWindow() {\n\t\tif (showSplashWindow && splashWindow != null && !splashWindow.isVisible()) {\n\t\t\tsplashWindow.setVisible(true);\n\t\t\tsplashWindow.toFront();\n\t\t}\n\t}\n\n\tprivate static void paintSplashWindow(boolean sub) {\n\t\tsynchronized (PAINT_LOCK) {\n\t\t\tif (splashWindow != null && splashWindow.isVisible()) {\n\t\t\t\tif (lastPaint != null) {\n\t\t\t\t\tdelta = delta + (System.currentTimeMillis() - lastPaint);\n\t\t\t\t}\n\t\t\t\tboolean paint = sub || (lastPaint == null || (System.currentTimeMillis() - lastPaint) > 16);\n\t\t\t\tif (delta > UPDATE_DELAY) {\n\t\t\t\t\tnextLoadingImage();\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\tpaint = true;\n\t\t\t\t}\n\t\t\t\tif (paint) {\n\t\t\t\t\tlastPaint = System.currentTimeMillis();\n\t\t\t\t\tnextLoadingImage();\n\t\t\t\t\tBufferStrategy bufferStrategy = splashWindowCanvas.getBufferStrategy();\n\t\t\t\t\tif (bufferStrategy == null) {\n\t\t\t\t\t\tsplashWindowCanvas.createBufferStrategy(2);\n\t\t\t\t\t\tbufferStrategy = splashWindowCanvas.getBufferStrategy();\n\t\t\t\t\t}\n\t\t\t\t\tGraphics g = bufferStrategy.getDrawGraphics();\n\t\t\t\t\tg.drawImage(splashImage, 0, 0, null);\n\t\t\t\t\tpaint((Graphics2D) g);\n\t\t\t\t\tg.dispose();\n\t\t\t\t\tsplashWindowCanvas.getBufferStrategy().show();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static void paintSplashScreen() {\n\t\tif (isVisible()) {\n\t\t\ttry {\n\t\t\t\tif (splashScreen != null) {\n\t\t\t\t\tGraphics2D g = splashScreen.createGraphics();\n\t\t\t\t\tif (g != null) {\n\t\t\t\t\t\tg.setComposite(AlphaComposite.Clear);\n\t\t\t\t\t\tDimension size = splashScreen.getSize();\n\t\t\t\t\t\tg.fillRect(0, 0, size.width, size.height);\n\t\t\t\t\t\tg.setPaintMode();\n\t\t\t\t\t\tpaint(g);\n\t\t\t\t\t\tsplashScreen.update();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (IllegalStateException ex) {\n\t\t\t\tLOG.info(\"SplashScreen: Closed before painting ended (NO PROBLEM)\");\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static void paint(final Graphics2D g) throws IllegalStateException {\n\t\t//Clear Screen\n\t\tif (CliOptions.get().isDebug()) {\n\t\t\tg.setColor(Color.DARK_GRAY);\n\t\t\tg.drawString(\"DEBUG\", 344, 232);\n\t\t\tg.setColor(Color.WHITE);\n\t\t\tg.drawString(\"DEBUG\", 343, 231);\n\t\t}\n\t\tif (!text.isEmpty()) {\n\t\t\tg.setColor(Color.BLACK);\n\t\t\tg.fillRect(0, 235, 90, 24);\n\t\t\tg.setColor(Color.WHITE);\n\t\t\tg.drawString(text, 5, 252);\n\t\t}\n\t\tg.setColor(Color.WHITE);\n\t\tg.fillRect(106, 242, (int) (progress * 2.6), 12);\n\t\tif (subProgress > 0) {\n\t\t\tg.setColor(Color.LIGHT_GRAY);\n\t\t\tg.fillRect(106, 248, (int) (subProgress * 2.6), 6);\n\t\t}\n\t\tif (loadingImages[currentLoadingImage] != null) {\n\t\t\tg.drawImage(loadingImages[currentLoadingImage], 368, 238, null);\n\t\t}\n\t}\n\n\tprivate static boolean isVisible() {\n\t\treturn (splashScreen != null && splashScreen.isVisible());\n\t}\n\n\tprivate class Paineter extends Thread {\n\n\t\t@Override\n\t\tpublic void run() {\n\t\t\twhile (isVisible()) {\n\t\t\t\tsynchronized (PAINT_LOCK) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tPAINT_LOCK.wait();\n\t\t\t\t\t} catch (InterruptedException ex) {\n\n\t\t\t\t\t}\n\t\t\t\t\tpaintSplashScreen();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate class Animator extends Thread {\n\n\t\t@Override\n\t\tpublic void run() {\n\t\t\twhile (isVisible()) {\n\t\t\t\tnextLoadingImage();\n\t\t\t\tupdate(false);\n\t\t\t\tsynchronized (this) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\twait(UPDATE_DELAY);\n\t\t\t\t\t} catch (InterruptedException ex) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/ToolLoader.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset;\r\n\r\nimport java.awt.AWTEvent;\r\nimport java.awt.Component;\r\nimport java.awt.KeyboardFocusManager;\r\nimport java.awt.Toolkit;\r\nimport java.awt.Window;\r\nimport java.awt.event.AWTEventListener;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.awt.event.KeyEvent;\r\nimport java.awt.event.KeyListener;\r\nimport java.awt.event.MouseEvent;\r\nimport java.awt.event.MouseListener;\r\nimport java.awt.event.MouseWheelEvent;\r\nimport java.awt.event.MouseWheelListener;\r\nimport java.beans.PropertyChangeEvent;\r\nimport java.beans.PropertyChangeListener;\r\nimport java.util.Collection;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport javax.swing.AbstractButton;\r\nimport javax.swing.JComboBox;\r\nimport javax.swing.SwingUtilities;\r\nimport javax.swing.Timer;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel;\r\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel.Progress;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTab;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.gui.tabs.agents.AgentsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.agents.AgentsTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.assets.AssetTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.assets.AssetsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.contracts.ContractsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.contracts.ContractsTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.items.ItemTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.items.ItemsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.jobs.IndustryJobTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.jobs.IndustryJobsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.journal.JournalTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.journal.JournalTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.loadout.LoadoutExtendedTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.loadout.LoadoutTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.loadout.LoadoutsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.loyalty.LoyaltyPointsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.loyalty.LoyaltyPointsTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.materials.MaterialExtendedTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.materials.MaterialTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.materials.MaterialsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.mining.ExtractionsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.mining.ExtractionsTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.mining.MiningGraphTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.mining.MiningTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.mining.MiningTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.orders.MarketOrdersTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.orders.MarketTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.prices.PriceChangesTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.prices.PriceChangesTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.prices.PriceHistoryTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.reprocessed.ReprocessedExtendedTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.reprocessed.ReprocessedTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.reprocessed.ReprocessedTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.routing.RoutingTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.skills.SkillsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.skills.SkillsTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.slots.SlotsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.slots.SlotsTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.standing.NpcStandingTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.standing.NpcStandingTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.StockpileExtendedTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.StockpileTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.StockpileTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.tracker.TrackerTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.transaction.TransactionTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.transaction.TransactionTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.tree.TreeTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.tree.TreeTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.ValueRetroTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.ValueTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.ValueTableTab;\r\nimport net.nikr.eve.jeveasset.i18n.TabsAgents;\r\nimport net.nikr.eve.jeveasset.i18n.TabsAssets;\r\nimport net.nikr.eve.jeveasset.i18n.TabsContracts;\r\nimport net.nikr.eve.jeveasset.i18n.TabsItems;\r\nimport net.nikr.eve.jeveasset.i18n.TabsJobs;\r\nimport net.nikr.eve.jeveasset.i18n.TabsJournal;\r\nimport net.nikr.eve.jeveasset.i18n.TabsLoadout;\r\nimport net.nikr.eve.jeveasset.i18n.TabsLoyaltyPoints;\r\nimport net.nikr.eve.jeveasset.i18n.TabsMaterials;\r\nimport net.nikr.eve.jeveasset.i18n.TabsMining;\r\nimport net.nikr.eve.jeveasset.i18n.TabsNpcStanding;\r\nimport net.nikr.eve.jeveasset.i18n.TabsOrders;\r\nimport net.nikr.eve.jeveasset.i18n.TabsOverview;\r\nimport net.nikr.eve.jeveasset.i18n.TabsPriceChanges;\r\nimport net.nikr.eve.jeveasset.i18n.TabsPriceHistory;\r\nimport net.nikr.eve.jeveasset.i18n.TabsReprocessed;\r\nimport net.nikr.eve.jeveasset.i18n.TabsRouting;\r\nimport net.nikr.eve.jeveasset.i18n.TabsSkills;\r\nimport net.nikr.eve.jeveasset.i18n.TabsSlots;\r\nimport net.nikr.eve.jeveasset.i18n.TabsStockpile;\r\nimport net.nikr.eve.jeveasset.i18n.TabsTracker;\r\nimport net.nikr.eve.jeveasset.i18n.TabsTransaction;\r\nimport net.nikr.eve.jeveasset.i18n.TabsTree;\r\nimport net.nikr.eve.jeveasset.i18n.TabsValues;\r\n\r\n\r\npublic class ToolLoader implements ActionListener, KeyListener, MouseListener, MouseWheelListener, AWTEventListener, PropertyChangeListener {\r\n\r\n\tpublic static enum ToolTab {\r\n\t\tASSETS(TabsAssets.get().assets(), AssetsTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getAssetsTab();\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\treturn AssetTableFormat.valueOf(column);\r\n\t\t\t}\r\n\t\t},\r\n\t\tVALUE(TabsValues.get().oldTitle(), ValueRetroTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getValueTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tISK(TabsValues.get().title(), ValueTableTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getIskTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\treturn ValueTableFormat.valueOf(column);\r\n\t\t\t}\r\n\t\t},\r\n\t\tPRICE_HISTORY(TabsPriceHistory.get().title(), PriceHistoryTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getPriceHistoryTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tPRICE_CHANGES(TabsPriceChanges.get().title(), PriceChangesTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getPriceChangesTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\treturn PriceChangesTableFormat.valueOf(column);\r\n\t\t\t}\r\n\t\t},\r\n\t\tMATERIALS(TabsMaterials.get().materials(), MaterialsTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getMaterialsTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\ttry {\r\n\t\t\t\t\treturn MaterialExtendedTableFormat.valueOf(column);\r\n\t\t\t\t} catch (IllegalArgumentException ex) {\r\n\t\t\t\t\treturn MaterialTableFormat.valueOf(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tLOADOUTS(TabsLoadout.get().ship(), LoadoutsTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getLoadoutsTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\ttry {\r\n\t\t\t\t\treturn LoadoutExtendedTableFormat.valueOf(column);\r\n\t\t\t\t} catch (IllegalArgumentException ex) {\r\n\t\t\t\t\treturn LoadoutTableFormat.valueOf(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tMARKET_ORDERS(TabsOrders.get().market(), MarketOrdersTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getMarketOrdersTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\treturn MarketTableFormat.valueOf(column);\r\n\t\t\t}\r\n\t\t},\r\n\t\tJOURNAL(TabsJournal.get().title(), JournalTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getJournalTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\treturn JournalTableFormat.valueOf(column);\r\n\t\t\t}\r\n\t\t},\r\n\t\tTRANSACTION(TabsTransaction.get().title(), TransactionTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getTransactionsTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\treturn TransactionTableFormat.valueOf(column);\r\n\t\t\t}\r\n\t\t},\r\n\t\tINDUSTRY_JOBS(TabsJobs.get().industry(), IndustryJobsTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getIndustryJobsTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\treturn IndustryJobTableFormat.valueOf(column);\r\n\t\t\t}\r\n\t\t},\r\n\t\tINDUSTRY_SLOTS(TabsSlots.get().title(), SlotsTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getSlotsTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\treturn SlotsTableFormat.valueOf(column);\r\n\t\t\t}\r\n\t\t},\r\n\t\tOVERVIEW(TabsOverview.get().overview(), OverviewTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getOverviewTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\treturn OverviewTableFormat.valueOf(column);\r\n\t\t\t}\r\n\t\t},\r\n\t\tROUTING(TabsRouting.get().routingTitle(), RoutingTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getRoutingTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tSTOCKPILE(TabsStockpile.get().stockpile(), StockpileTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getStockpileTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\ttry {\r\n\t\t\t\t\treturn StockpileExtendedTableFormat.valueOf(column);\r\n\t\t\t\t} catch (IllegalArgumentException exception) {\r\n\t\t\t\t\treturn StockpileTableFormat.valueOf(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tITEMS(TabsItems.get().items(), ItemsTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getItemsTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\treturn ItemTableFormat.valueOf(column);\r\n\t\t\t}\r\n\t\t},\r\n\t\tTRACKER(TabsTracker.get().title(), TrackerTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getTrackerTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tREPROCESSED(TabsReprocessed.get().title(), ReprocessedTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getReprocessedTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\ttry {\r\n\t\t\t\t\treturn ReprocessedExtendedTableFormat.valueOf(column);\r\n\t\t\t\t} catch (IllegalArgumentException ex) {\r\n\t\t\t\t\treturn ReprocessedTableFormat.valueOf(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tCONTRACTS(TabsContracts.get().title(), ContractsTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getContractsTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\treturn ContractsTableFormat.valueOf(column);\r\n\t\t\t}\r\n\t\t},\r\n\t\tTREE(TabsTree.get().title(), TreeTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getTreeTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\treturn TreeTableFormat.valueOf(column);\r\n\t\t\t}\r\n\t\t},\r\n\t\tSKILLS(TabsSkills.get().skills(), SkillsTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getSkillsTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\treturn SkillsTableFormat.valueOf(column);\r\n\t\t\t}\r\n\t\t},\r\n\t\tMINING_LOG(TabsMining.get().miningLog(), MiningTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getMiningTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\treturn MiningTableFormat.valueOf(column);\r\n\t\t\t}\r\n\t\t},\r\n\t\tMINING_GRAPH(TabsMining.get().miningGraph(), MiningGraphTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getMiningGraphTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tEXTRACTIONS(TabsMining.get().extractions(), ExtractionsTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getExtractionsTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\treturn ExtractionsTableFormat.valueOf(column);\r\n\t\t\t}\r\n\t\t},\r\n\t\tLOYALTY_POINTS(TabsLoyaltyPoints.get().loyaltyPoints(), LoyaltyPointsTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getLoyaltyPointsTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\treturn LoyaltyPointsTableFormat.valueOf(column);\r\n\t\t\t}\r\n\t\t},\r\n\t\tNPC_STANDING(TabsNpcStanding.get().npcStanding(), NpcStandingTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getNpcStandingTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\treturn NpcStandingTableFormat.valueOf(column);\r\n\t\t\t}\r\n\t\t},\r\n\t\tAGENTS(TabsAgents.get().agents(), AgentsTab.NAME){\r\n\t\t\t@Override\r\n\t\t\tpublic JMainTab getTool(Program program, boolean init) {\r\n\t\t\t\treturn program.getAgentsTab(init);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic EnumTableColumn<?> getColumn(String column) throws IllegalArgumentException {\r\n\t\t\t\treturn AgentsTableFormat.valueOf(column);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprivate final String title;\r\n\t\tprivate final String name;\r\n\r\n\t\tprivate ToolTab(String title, String name) {\r\n\t\t\tthis.title = title;\r\n\t\t\tthis.name = name;\r\n\t\t}\r\n\r\n\t\tpublic String getTitle() {\r\n\t\t\treturn title;\r\n\t\t}\r\n\r\n\t\tpublic String getName() {\r\n\t\t\treturn name;\r\n\t\t}\r\n\r\n\t\tpublic abstract JMainTab getTool(Program program, boolean init);\r\n\t\tpublic abstract EnumTableColumn<?> getColumn(final String column) throws IllegalArgumentException;\r\n\r\n\t\tpublic EnumTableColumn<?> getColumn(final String column, final String toolName) {\r\n\t\t\tif (toolName.equals(getName())) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\treturn getColumn(column);\r\n\t\t\t\t} catch (IllegalArgumentException exception) {\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static final int IDLE_DELAY_MS = 10000;\r\n\r\n\tprivate static ToolLoader loader;\r\n\tprivate static double max;\r\n\tprivate static Map<String, ToolTab> toolTabs;\r\n\tprivate final Object SYNC_LOCK = new Object();\r\n\tprivate final Program program;\r\n\tprivate final Set<String> tools = new HashSet<>();\r\n\tprivate boolean ok = false;\r\n\tprivate Timer timer;\r\n\tprivate String tool = null;\r\n\tprivate Progress progress = null;\r\n\tprivate Component lastFocusOwner;\r\n\r\n\tprivate ToolLoader(Program program) {\r\n\t\tthis.program = program;\r\n\t\ttools.addAll(getToolTitles(program));\r\n\t\ttools.removeAll(Settings.get().getShowTools());\r\n\t\tif (tools.isEmpty()) {\r\n\t\t\tstopBackgroundToolLoading();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\ttimer = new Timer(IDLE_DELAY_MS, new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tok = true;\r\n\t\t\t\topenTool();\r\n\t\t\t}\r\n\t\t});\r\n\t\tToolkit.getDefaultToolkit().addAWTEventListener(this, AWTEvent.MOUSE_MOTION_EVENT_MASK);\r\n\t\tKeyboardFocusManager.getCurrentKeyboardFocusManager().addPropertyChangeListener(\"permanentFocusOwner\", this);\r\n\t\ttimer.start();\r\n\t}\r\n\r\n\tpublic static synchronized Map<String, ToolTab> getTools(Program program) {\r\n\t\tif (toolTabs == null) {\r\n\t\t\ttoolTabs = new HashMap<>();\r\n\t\t\tfor (ToolTab toolTab : ToolTab.values()) {\r\n\t\t\t\ttoolTabs.put(toolTab.getTitle(), toolTab);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn toolTabs;\r\n\t}\r\n\r\n\tprivate static void openTool(Program program, String title) {\r\n\t\tToolTab tool = getTools(program).get(title);\r\n\t\tif (tool != null) {\r\n\t\t\tprogram.getMainWindow().addTab(tool.getTool(program, true), false);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static void initTool(Program program, String title) {\r\n\t\tToolTab tool = getTools(program).get(title);\r\n\t\tif (tool != null) {\r\n\t\t\ttool.getTool(program, true);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void initTools(Program program, Collection<String> titles) {\r\n\t\tint index = 0;\r\n\t\tint size = titles.size();\r\n\t\tfor (String title : titles) {\r\n\t\t\tinitTool(program, title);\r\n\t\t\tindex++;\r\n\t\t\tsetProgress(index, size);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void initAllTools(Program program) {\r\n\t\tSplashUpdater.setProgress(52);\r\n\t\tCollection<ToolTab> values = getTools(program).values();\r\n\t\tint index = 0;\r\n\t\tint size = values.size();\r\n\t\tfor (ToolTab tool : values) {\r\n\t\t\ttool.getTool(program, true);\r\n\t\t\tindex++;\r\n\t\t\tsetProgress(index, size);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static void setProgress(final float done, final float end) {\r\n\t\tsetProgress(done, end, 53, 84);\r\n\t}\r\n\r\n\tprivate static  void setProgress(final float done, final float end, final int minimum, final int maximum) {\r\n\t\tint progress = Math.round(((done / end) * (maximum - minimum)) + minimum);\r\n\t\tif (progress > 100) {\r\n\t\t\tprogress = 100;\r\n\t\t} else if (progress < 0) {\r\n\t\t\tprogress = 0;\r\n\t\t}\r\n\t\tSplashUpdater.setProgress(progress);\r\n\t}\r\n\r\n\tpublic static void openTools(Program program, Collection<String> titles) {\r\n\t\tfor (String title : titles) {\r\n\t\t\topenTool(program, title);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static HashSet<String> getToolTitles(Program program) {\r\n\t\treturn new HashSet<>(getTools(program).keySet());\r\n\t}\r\n\r\n\tpublic static synchronized void init(Program program) {\r\n\t\tSet<String> tools = new HashSet<>();\r\n\t\ttools.addAll(getToolTitles(program));\r\n\t\ttools.removeAll(Settings.get().getShowTools());\r\n\t\tmax = tools.size();\r\n\t}\r\n\r\n\tpublic static synchronized void startBackgroundToolLoading(Program program) {\r\n\t\tif (loader == null) {\r\n\t\t\tloader = new ToolLoader(program);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static synchronized void stopBackgroundToolLoading() {\r\n\t\tif (loader != null) {\r\n\t\t\tloader.done();\r\n\t\t\tloader = null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void openTool() {\r\n\t\tWindow currentWindow = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusedWindow();\r\n\t\tboolean window = currentWindow == null || currentWindow.equals(program.getMainWindow().getFrame());\r\n\t\tif (ok && window && tool == null && !tools.isEmpty()) {\r\n\t\t\tSwingUtilities.invokeLater(new Runnable() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void run() {\r\n\t\t\t\t\topenToolInner();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tsynchronized (SYNC_LOCK) {\r\n\t\t\t\tif (timer != null) {\r\n\t\t\t\t\ttimer.start();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void openToolInner() {\r\n\t\tsynchronized (SYNC_LOCK) {\r\n\t\t\tif (timer != null) {\r\n\t\t\t\ttimer.stop();\r\n\t\t\t}\r\n\t\t}\r\n\t\taddProgress();\r\n\t\ttool = tools.iterator().next();\r\n\t\ttools.remove(tool);\r\n\t\tinitTool(program, tool);\r\n\t\ttool = null;\r\n\t\tprogress.setValue((int)((max -  tools.size()) / max * 100.0));\r\n\t\tSwingUtilities.invokeLater(new Runnable() {\r\n\t\t\t@Override\r\n\t\t\tpublic void run() {\r\n\t\t\t\topenTool();\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (tools.isEmpty()) {\r\n\t\t\tstopBackgroundToolLoading();\r\n\t\t\tremoveProgress();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void addProgress() {\r\n\t\tif (progress == null) {\r\n\t\t\tprogress = program.getStatusPanel().addProgress(StatusPanel.UpdateType.TOOLS, new StatusPanel.ProgressControl() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic boolean isAuto() {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void show() { }\r\n\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void cancel() { }\r\n\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void setPause(boolean pause) { }\r\n\t\t\t});\r\n\t\t\tprogress.setVisible(true);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void removeProgress() {\r\n\t\tprogram.getStatusPanel().removeProgress(progress);\r\n\t\tprogress = null;\r\n\t}\r\n\r\n\tprivate void done() {\r\n\t\tremoveProgress();\r\n\t\tKeyboardFocusManager.getCurrentKeyboardFocusManager().removePropertyChangeListener(\"permanentFocusOwner\", this);\r\n\t\tToolkit.getDefaultToolkit().removeAWTEventListener(this);\r\n\t\tremoveListeners();\r\n\t\tsynchronized (SYNC_LOCK) {\r\n\t\t\ttimer.stop();\r\n\t\t\ttimer = null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void updateListeners() {\r\n\t\tComponent currentFocusOwner = program.getMainWindow().getFrame().getFocusOwner();\r\n\t\tif (lastFocusOwner != null && (currentFocusOwner == null || !lastFocusOwner.equals(currentFocusOwner))) {\r\n\t\t\tremoveListeners();\r\n\t\t}\r\n\t\tif (currentFocusOwner != null && !tools.isEmpty()) {\r\n\t\t\taddListeners();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void removeListeners() {\r\n\t\tif (lastFocusOwner != null) {\r\n\t\t\tlastFocusOwner.removeKeyListener(this);\r\n\t\t\tlastFocusOwner.removeMouseListener(this);\r\n\t\t}\r\n\t\tif (lastFocusOwner instanceof JComboBox) {\r\n\t\t\t((JComboBox)lastFocusOwner).removeActionListener(this);\r\n\t\t}\r\n\t\tif (lastFocusOwner instanceof AbstractButton) {\r\n\t\t\t((AbstractButton)lastFocusOwner).removeActionListener(this);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void addListeners() {\r\n\t\tComponent currentFocusOwner = program.getMainWindow().getFrame().getFocusOwner();\r\n\t\tlastFocusOwner = currentFocusOwner;\r\n\t\tlastFocusOwner.addMouseListener(this);\r\n\t\tlastFocusOwner.addKeyListener(this);\r\n\t\tif (lastFocusOwner instanceof JComboBox) {\r\n\t\t\t((JComboBox)lastFocusOwner).addActionListener(this);\r\n\t\t}\r\n\t\tif (lastFocusOwner instanceof AbstractButton) {\r\n\t\t\t((AbstractButton)lastFocusOwner).addActionListener(this);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void restart() {\r\n\t\tsynchronized (SYNC_LOCK) {\r\n\t\t\tif (timer != null) {\r\n\t\t\t\ttimer.stop();\r\n\t\t\t\ttimer.start();\r\n\t\t\t}\r\n\t\t}\r\n\t\tremoveProgress();\r\n\t\tok = false;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void eventDispatched(AWTEvent event) { restart(); }\r\n\t@Override public void mouseWheelMoved(MouseWheelEvent e) { restart(); }\r\n\t@Override public void mouseClicked(MouseEvent e) { restart(); }\r\n\t@Override public void mousePressed(MouseEvent e) { restart(); }\r\n\t@Override public void mouseReleased(MouseEvent e) { restart(); }\r\n\t@Override public void mouseEntered(MouseEvent e) { }\r\n\t@Override public void mouseExited(MouseEvent e) { }\r\n\t@Override public void actionPerformed(final ActionEvent e) { restart(); }\r\n\t@Override public void keyTyped(KeyEvent e) { restart(); }\r\n\t@Override public void keyPressed(KeyEvent e) { restart(); }\r\n\t@Override public void keyReleased(KeyEvent e) { restart(); }\r\n\r\n\t@Override\r\n\tpublic void propertyChange(PropertyChangeEvent evt) {\r\n\t\tupdateListeners();\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/accounts/AbstractOwner.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.accounts;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAccountBalance;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyExtraction;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyJournal;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyLoyaltyPoints;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMining;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyNpcStanding;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyShip;\r\nimport net.nikr.eve.jeveasset.data.api.my.MySkill;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawBlueprint;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawClone;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\n\r\n\r\npublic abstract class AbstractOwner implements OwnerType {\r\n\r\n\tprivate List<MyAccountBalance> accountBalances = new ArrayList<>();\r\n\tprivate Set<MyMarketOrder> marketOrders = new HashSet<>();\r\n\tprivate Set<MyTransaction> transactions = new HashSet<>();\r\n\tprivate Set<MyJournal> journal = new HashSet<>();\r\n\tprivate Set<MyIndustryJob> industryJobs = new HashSet<>();\r\n\tprivate Map<MyContract, List<MyContractItem>> contracts = new HashMap<>();\r\n\tprivate List<MyAsset> assets = new ArrayList<>();\r\n\tprivate Map<Long, RawBlueprint> blueprints = new HashMap<>();\r\n\tprivate Map<Integer, String> walletDivisions = new HashMap<>();\r\n\tprivate Map<Integer, String> assetDivisions = new HashMap<>();\r\n\tprivate List<MySkill> skills = new ArrayList<>();\r\n\tprivate List<RawClone> clones = new ArrayList<>();\r\n\tprivate Set<MyMining> mining = new HashSet<>();\r\n\tprivate Set<MyExtraction> extractions = new HashSet<>();\r\n\tprivate Set<MyLoyaltyPoints> loyaltyPoints = new HashSet<>();\r\n\tprivate Set<MyNpcStanding> npcStanding = new HashSet<>();\r\n\tprivate Long totalSkillPoints = null;\r\n\tprivate Integer unallocatedSkillPoints = null;\r\n\r\n\tprivate final String accountID;\r\n\tprivate String ownerName;\r\n\tprivate String corporationName = null;\r\n\tprivate long ownerID;\r\n\tprivate boolean showOwner = true;\r\n\tprivate boolean invalid = false;\r\n\tprivate MyShip activeShip;\r\n\r\n\tprivate Date assetLastUpdate = null;\r\n\tprivate Date assetNextUpdate = Settings.getNow();\r\n\tprivate Date balanceLastUpdate = null;\r\n\tprivate Date balanceNextUpdate = Settings.getNow();\r\n\tprivate Date marketOrdersNextUpdate = Settings.getNow();\r\n\tprivate Date journalNextUpdate = Settings.getNow();\r\n\tprivate Date transactionsNextUpdate = Settings.getNow();\r\n\tprivate Date industryJobsNextUpdate = Settings.getNow();\r\n\tprivate Date contractsNextUpdate = Settings.getNow();\r\n\tprivate Date locationsNextUpdate = Settings.getNow();\r\n\tprivate Date blueprintsNextUpdate = Settings.getNow();\r\n\tprivate Date skillsNextUpdate = Settings.getNow();\r\n\tprivate Date loyaltyPointsNextUpdate = Settings.getNow();\r\n\tprivate Date npcStandingNextUpdate = Settings.getNow();\r\n\tprivate Date miningNextUpdate = Settings.getNow();\r\n\r\n\tpublic AbstractOwner(String uniqueID) {\r\n\t\tthis.accountID = uniqueID;\r\n\t}\r\n\r\n\tpublic AbstractOwner(AbstractOwner abstractOwner) {\r\n\t\taccountID = abstractOwner.accountID;\r\n\t\taccountBalances.addAll(abstractOwner.accountBalances);\r\n\t\tmarketOrders.addAll(abstractOwner.marketOrders);\r\n\t\ttransactions.addAll(abstractOwner.transactions);\r\n\t\tjournal.addAll(abstractOwner.journal);\r\n\t\tindustryJobs.addAll(abstractOwner.industryJobs);\r\n\t\tcontracts.putAll(abstractOwner.contracts);\r\n\t\tassets.addAll(abstractOwner.assets);\r\n\t\tblueprints.putAll(abstractOwner.blueprints);\r\n\t\twalletDivisions.putAll(abstractOwner.walletDivisions);\r\n\t\tassetDivisions.putAll(abstractOwner.assetDivisions);\r\n\t\tskills.addAll(abstractOwner.skills);\r\n\t\tloyaltyPoints.addAll(abstractOwner.loyaltyPoints);\r\n\t\tnpcStanding.addAll(abstractOwner.npcStanding);\r\n\t\tclones.addAll(abstractOwner.clones);\r\n\t\tmining.addAll(abstractOwner.mining);\r\n\t\textractions.addAll(abstractOwner.extractions);\r\n\t\tthis.totalSkillPoints = abstractOwner.totalSkillPoints;\r\n\t\tthis.unallocatedSkillPoints = abstractOwner.unallocatedSkillPoints;\r\n\t\tthis.ownerName = abstractOwner.ownerName;\r\n\t\tthis.corporationName = abstractOwner.corporationName;\r\n\t\tthis.ownerID = abstractOwner.ownerID;\r\n\t\tthis.showOwner = abstractOwner.showOwner;\r\n\t\tthis.invalid = abstractOwner.invalid;\r\n\t\tthis.activeShip = abstractOwner.activeShip;\r\n\t\tthis.assetLastUpdate = abstractOwner.assetLastUpdate;\r\n\t\tthis.assetNextUpdate = abstractOwner.assetNextUpdate;\r\n\t\tthis.balanceLastUpdate = abstractOwner.balanceLastUpdate;\r\n\t\tthis.balanceNextUpdate = abstractOwner.balanceNextUpdate;\r\n\t\tthis.marketOrdersNextUpdate = abstractOwner.marketOrdersNextUpdate;\r\n\t\tthis.journalNextUpdate = abstractOwner.journalNextUpdate;\r\n\t\tthis.transactionsNextUpdate = abstractOwner.transactionsNextUpdate;\r\n\t\tthis.industryJobsNextUpdate = abstractOwner.industryJobsNextUpdate;\r\n\t\tthis.contractsNextUpdate = abstractOwner.contractsNextUpdate;\r\n\t\tthis.locationsNextUpdate = abstractOwner.locationsNextUpdate;\r\n\t\tthis.blueprintsNextUpdate = abstractOwner.blueprintsNextUpdate;\r\n\t\tthis.skillsNextUpdate = abstractOwner.skillsNextUpdate;\r\n\t\tthis.loyaltyPointsNextUpdate = abstractOwner.loyaltyPointsNextUpdate;\r\n\t\tthis.npcStandingNextUpdate = abstractOwner.npcStandingNextUpdate;\r\n\t\tthis.miningNextUpdate = abstractOwner.miningNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getAccountID() {\r\n\t\treturn accountID;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic synchronized void setAssetNextUpdate(final Date nextUpdate) {\r\n\t\tthis.assetNextUpdate = nextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic synchronized void setBalanceNextUpdate(final Date balanceNextUpdate) {\r\n\t\tthis.balanceNextUpdate = balanceNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic synchronized void setBlueprintsNextUpdate(final Date blueprintsNextUpdate) {\r\n\t\tthis.blueprintsNextUpdate = blueprintsNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic synchronized void setContractsNextUpdate(final Date contractsNextUpdate) {\r\n\t\tthis.contractsNextUpdate = contractsNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic synchronized void setIndustryJobsNextUpdate(final Date industryJobsNextUpdate) {\r\n\t\tthis.industryJobsNextUpdate = industryJobsNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic synchronized void setLocationsNextUpdate(final Date locationsNextUpdate) {\r\n\t\tthis.locationsNextUpdate = locationsNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic synchronized void setMarketOrdersNextUpdate(final Date marketOrdersNextUpdate) {\r\n\t\tthis.marketOrdersNextUpdate = marketOrdersNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic synchronized void setJournalNextUpdate(final Date journalNextUpdate) {\r\n\t\tthis.journalNextUpdate = journalNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setSkillsNextUpdate(Date skillsNextUpdate) {\r\n\t\tthis.skillsNextUpdate = skillsNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Date getLoyaltyPointsNextUpdate() {\r\n\t\treturn loyaltyPointsNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Date getNpcStandingNextUpdate() {\r\n\t\treturn npcStandingNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic synchronized void setTransactionsNextUpdate(final Date transactionsNextUpdate) {\r\n\t\tthis.transactionsNextUpdate = transactionsNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic synchronized Date getTransactionsNextUpdate() {\r\n\t\treturn transactionsNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic synchronized Date getAssetNextUpdate() {\r\n\t\treturn assetNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic synchronized Date getBalanceNextUpdate() {\r\n\t\treturn balanceNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic synchronized Date getBlueprintsNextUpdate() {\r\n\t\treturn blueprintsNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic synchronized Date getContractsNextUpdate() {\r\n\t\treturn contractsNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic synchronized Date getIndustryJobsNextUpdate() {\r\n\t\treturn industryJobsNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic synchronized Date getLocationsNextUpdate() {\r\n\t\treturn locationsNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic synchronized Date getMarketOrdersNextUpdate() {\r\n\t\treturn marketOrdersNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic synchronized Date getJournalNextUpdate() {\r\n\t\treturn journalNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Date getSkillsNextUpdate() {\r\n\t\treturn skillsNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setLoyaltyPointsNextUpdate(Date loyaltyPointsNextUpdate) {\r\n\t\tthis.loyaltyPointsNextUpdate = loyaltyPointsNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setNpcStandingNextUpdate(Date npcStandingNextUpdate) {\r\n\t\tthis.npcStandingNextUpdate = npcStandingNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic abstract int hashCode();\r\n\r\n\t@Override\r\n\tpublic abstract boolean equals(Object obj);\r\n\r\n\t@Override\r\n\tpublic final void setOwnerName(final String ownerName) {\r\n\t\tthis.ownerName = ownerName;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final void setAssetLastUpdate(final Date assetLastUpdate) {\r\n\t\tthis.assetLastUpdate = assetLastUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final void setBalanceLastUpdate(final Date balanceLastUpdate) {\r\n\t\tthis.balanceLastUpdate = balanceLastUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final void setOwnerID(final long ownerID) {\r\n\t\tthis.ownerID = ownerID;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final String toString() {\r\n\t\treturn getOwnerName();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final boolean isCharacter() {\r\n\t\treturn !isCorporation();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final boolean isExpired() {\r\n\t\tif (getExpire() == null) {\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn getExpire().before(new Date());\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final String getOwnerName() {\r\n\t\tif (ownerName == null || ownerName.isEmpty()) {\r\n\t\t\treturn \"Owner #\" + getOwnerID();\r\n\t\t} else {\r\n\t\t\treturn ownerName;\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final boolean isShowOwner() {\r\n\t\treturn showOwner;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic synchronized boolean isInvalid() {\r\n\t\treturn invalid;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final Date getAssetLastUpdate() {\r\n\t\treturn assetLastUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final Date getBalanceLastUpdate() {\r\n\t\treturn balanceLastUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final long getOwnerID() {\r\n\t\treturn ownerID;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getCorporationName() {\r\n\t\treturn corporationName;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic MyShip getActiveShip() {\r\n\t\treturn activeShip;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setCorporationName(String corporationName) {\r\n\t\tthis.corporationName = corporationName;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final List<MyAccountBalance> getAccountBalances() {\r\n\t\treturn accountBalances;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic synchronized final Set<MyMarketOrder> getMarketOrders() {\r\n\t\treturn marketOrders;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Date getMiningNextUpdate() {\r\n\t\treturn miningNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final Set<MyTransaction> getTransactions() {\r\n\t\treturn transactions;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final Set<MyJournal> getJournal() {\r\n\t\treturn journal;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final Set<MyIndustryJob> getIndustryJobs() {\r\n\t\treturn industryJobs;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final Map<MyContract, List<MyContractItem>> getContracts() {\r\n\t\treturn contracts;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final synchronized List<MyAsset> getAssets() {\r\n\t\treturn assets;\r\n\t}\r\n\r\n\tpublic final synchronized void addAsset(MyAsset asset) {\r\n\t\tassets.add(asset);\r\n\t}\r\n\r\n\tpublic final synchronized void removeAssets(List<MyAsset> remove) {\r\n\t\tassets.removeAll(remove);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final Map<Long, RawBlueprint> getBlueprints() {\r\n\t\treturn blueprints;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic List<MySkill> getSkills() {\r\n\t\treturn skills;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Set<MyLoyaltyPoints> getLoyaltyPoints() {\r\n\t\treturn loyaltyPoints;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Set<MyNpcStanding> getNpcStanding() {\r\n\t\treturn npcStanding;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic List<RawClone> getClones() {\r\n\t\treturn clones;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Set<MyMining> getMining() {\r\n\t\treturn mining;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Set<MyExtraction> getExtractions() {\r\n\t\treturn extractions;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Long getTotalSkillPoints() {\r\n\t\treturn totalSkillPoints;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Integer getUnallocatedSkillPoints() {\r\n\t\treturn unallocatedSkillPoints;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final void setShowOwner(final boolean showOwner) {\r\n\t\tthis.showOwner = showOwner;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic synchronized void setInvalid(boolean invalid) {\r\n\t\tthis.invalid = invalid;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final void setBlueprints(final Map<Long, RawBlueprint> blueprints) {\r\n\t\tthis.blueprints = blueprints;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final void setIndustryJobs(final Set<MyIndustryJob> industryJobs) {\r\n\t\tthis.industryJobs = industryJobs;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final void setTransactions(final Set<MyTransaction> transactions) {\r\n\t\tthis.transactions = transactions;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final void setJournal(final Set<MyJournal> journal) {\r\n\t\tthis.journal = journal;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final void setMarketOrders(final Set<MyMarketOrder> marketOrders) {\r\n\t\tthis.marketOrders = marketOrders;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setMiningNextUpdate(Date miningNextUpdate) {\r\n\t\tthis.miningNextUpdate = miningNextUpdate;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final void setContracts(final Map<MyContract, List<MyContractItem>> contracts) {\r\n\t\tthis.contracts = contracts;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final synchronized void setAssets(final List<MyAsset> assets) {\r\n\t\tthis.assets = assets;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final void setAccountBalances(final List<MyAccountBalance> accountBalances) {\r\n\t\tthis.accountBalances = accountBalances;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Map<Integer, String> getWalletDivisions() {\r\n\t\treturn walletDivisions;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setWalletDivisions(Map<Integer, String> walletDivisions) {\r\n\t\tthis.walletDivisions = walletDivisions;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Map<Integer, String> getAssetDivisions() {\r\n\t\treturn assetDivisions;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setAssetDivisions(Map<Integer, String> assetDivisions) {\r\n\t\tthis.assetDivisions = assetDivisions;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setSkills(List<MySkill> skills) {\r\n\t\tthis.skills = skills;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setLoyaltyPoints(Set<MyLoyaltyPoints> loyaltyPoints) {\r\n\t\tthis.loyaltyPoints = loyaltyPoints;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setNpcStanding(Set<MyNpcStanding> npcStanding) {\r\n\t\tthis.npcStanding = npcStanding;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setClones(List<RawClone> clones) {\r\n\t\tthis.clones = clones;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setMining(Set<MyMining> mining) {\r\n\t\tthis.mining = mining;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setExtractions(Set<MyExtraction> extractions) {\r\n\t\tthis.extractions = extractions;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setTotalSkillPoints(Long totalSkillPoints) {\r\n\t\tthis.totalSkillPoints = totalSkillPoints;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setUnallocatedSkillPoints(Integer unallocatedSkillPoints) {\r\n\t\tthis.unallocatedSkillPoints = unallocatedSkillPoints;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setActiveShip(MyShip activeShip) {\r\n\t\tthis.activeShip = activeShip;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/accounts/ApiType.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.accounts;\r\n\r\n\r\npublic enum ApiType {\r\n\tESI\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/accounts/EsiOwner.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.data.api.accounts;\n\nimport java.util.Arrays;\nimport java.util.Date;\nimport java.util.EnumSet;\nimport java.util.HashSet;\nimport java.util.Objects;\nimport java.util.Set;\nimport java.util.UUID;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.io.esi.AbstractEsiGetter;\nimport net.nikr.eve.jeveasset.io.esi.EsiCallbackURL;\nimport net.nikr.eve.jeveasset.io.esi.EsiScopes;\nimport net.troja.eve.esi.ApiClient;\nimport net.troja.eve.esi.ApiClientBuilder;\nimport net.troja.eve.esi.api.AssetsApi;\nimport net.troja.eve.esi.api.CharacterApi;\nimport net.troja.eve.esi.api.ClonesApi;\nimport net.troja.eve.esi.api.ContractsApi;\nimport net.troja.eve.esi.api.CorporationApi;\nimport net.troja.eve.esi.api.IndustryApi;\nimport net.troja.eve.esi.api.LocationApi;\nimport net.troja.eve.esi.api.LoyaltyApi;\nimport net.troja.eve.esi.api.MarketApi;\nimport net.troja.eve.esi.api.PlanetaryInteractionApi;\nimport net.troja.eve.esi.api.SkillsApi;\nimport net.troja.eve.esi.api.UniverseApi;\nimport net.troja.eve.esi.api.UserInterfaceApi;\nimport net.troja.eve.esi.api.WalletApi;\nimport net.troja.eve.esi.auth.OAuth;\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\n\n\npublic class EsiOwner extends AbstractOwner implements OwnerType {\n\n\tprivate final ApiClient apiClient = new ApiClientBuilder().okHttpClient(AbstractEsiGetter.getHttpClient()).build();\n\tprivate final MarketApi marketApi = new MarketApi(apiClient);\n\tprivate final IndustryApi industryApi = new IndustryApi(apiClient);\n\tprivate final CharacterApi characterApi = new CharacterApi(apiClient);\n\tprivate final ClonesApi clonesApi = new ClonesApi(apiClient);\n\tprivate final AssetsApi assetsApi = new AssetsApi(apiClient);\n\tprivate final WalletApi walletApi = new WalletApi(apiClient);\n\tprivate final UniverseApi universeApi = new UniverseApi(apiClient);\n\tprivate final ContractsApi contractsApi = new ContractsApi(apiClient);\n\tprivate final CorporationApi corporationApi = new CorporationApi(apiClient);\n\tprivate final LocationApi locationApi = new LocationApi(apiClient);\n\tprivate final PlanetaryInteractionApi planetaryInteractionApi = new PlanetaryInteractionApi(apiClient);\n\tprivate final UserInterfaceApi userInterfaceApi = new UserInterfaceApi(apiClient);\n\tprivate final SkillsApi skillsApi = new SkillsApi(apiClient);\n\tprivate final LoyaltyApi loyaltyApi = new LoyaltyApi(apiClient);\n\tprivate String accountName;\n\tprivate Set<String> scopes = new HashSet<>();\n\tprivate Date structuresNextUpdate = Settings.getNow();\n\tprivate Date accountNextUpdate = Settings.getNow();\n\tprivate EsiCallbackURL callbackURL;\n\tprivate Set<RolesEnum> roles = EnumSet.noneOf(RolesEnum.class);\n\n\tpublic static EsiOwner create() {\n\t\treturn new EsiOwner();\n\t}\n\n\tprivate EsiOwner() {\n\t\tsuper(UUID.randomUUID().toString());\n\t}\n\n\tpublic EsiOwner(String uniqueID) {\n\t\tsuper(uniqueID);\n\t}\n\n\n\tpublic EsiOwner(EsiOwner esiOwner) {\n\t\tsuper(esiOwner);\n\t\tthis.accountName = esiOwner.accountName;\n\t\tthis.scopes = esiOwner.scopes;\n\t\tthis.structuresNextUpdate = esiOwner.structuresNextUpdate;\n\t\tthis.accountNextUpdate = esiOwner.accountNextUpdate;\n\t\tthis.roles = esiOwner.roles;\n\t\tsetAuth(esiOwner.callbackURL, esiOwner.getOAuth().getRefreshToken(), esiOwner.getOAuth().getAccessToken());\n\t}\n\n\tpublic synchronized String getRefreshToken() {\n\t\treturn getOAuth().getRefreshToken();\n\t}\n\n\tpublic Set<String> getScopes() {\n\t\treturn scopes;\n\t}\n\n\tpublic void setScopes(String scopes) {\n\t\tthis.scopes = new HashSet<>(Arrays.asList(scopes.split(\" \")));\n\t}\n\n\tpublic final void setScopes(Set<String> scopes) {\n\t\tthis.scopes = new HashSet<>(scopes);\n\t}\n\n\tpublic synchronized Date getStructuresNextUpdate() {\n\t\treturn structuresNextUpdate;\n\t}\n\n\tpublic synchronized void setStructuresNextUpdate(Date structuresNextUpdate) {\n\t\tthis.structuresNextUpdate = structuresNextUpdate;\n\t}\n\n\tpublic Date getAccountNextUpdate() {\n\t\treturn accountNextUpdate;\n\t}\n\n\tpublic void setAccountNextUpdate(Date accountNextUpdate) {\n\t\tthis.accountNextUpdate = accountNextUpdate;\n\t}\n\n\tpublic EsiCallbackURL getCallbackURL() {\n\t\treturn callbackURL;\n\t}\n\n\tpublic Set<RolesEnum> getRoles() {\n\t\treturn roles;\n\t}\n\n\tpublic void setRoles(Set<RolesEnum> roles) {\n\t\tthis.roles = roles;\n\t}\n\n\t@Override\n\tpublic boolean isCorporation() {\n\t\treturn isRoles();\n\t}\n\n\t@Override\n\tpublic Date getExpire() {\n\t\treturn null;\n\t}\n\n\t@Override\n\tpublic String getComparator() {\n\t\treturn \"esi\" + getAccountName() + getRefreshToken();\n\t}\n\n\t@Override\n\tpublic String getAccountName() {\n\t\tif (accountName == null || accountName.isEmpty()) {\n\t\t\taccountName = getOwnerName();\n\t\t}\n\t\treturn accountName;\n\t}\n\n\t@Override\n\tpublic ApiType getAccountAPI() {\n\t\treturn ApiType.ESI;\n\t}\n\n\t@Override\n\tpublic void setResetAccountName() {\n\t\taccountName = getOwnerName();\n\t}\n\n\t@Override\n\tpublic void setAccountName(String accountName) {\n\t\tthis.accountName = accountName;\n\t}\n\n\t@Override\n\tpublic boolean isAssetList() {\n\t\tif (isCorporation()) {\n\t\t\treturn EsiScopes.CORPORATION_ASSETS.isInScope(scopes) && roles.contains(RolesEnum.DIRECTOR);\n\t\t} else {\n\t\t\treturn EsiScopes.CHARACTER_ASSETS.isInScope(scopes);\n\t\t}\n\t}\n\n\tprivate boolean isWallet() {\n\t\tif (isCorporation()) {\n\t\t\treturn EsiScopes.CORPORATION_WALLET.isInScope(scopes)\n\t\t\t\t\t&& (roles.contains(RolesEnum.JUNIOR_ACCOUNTANT)\n\t\t\t\t\t|| roles.contains(RolesEnum.ACCOUNTANT)\n\t\t\t\t\t|| roles.contains(RolesEnum.DIRECTOR));\n\t\t} else {\n\t\t\treturn EsiScopes.CHARACTER_WALLET.isInScope(scopes);\n\t\t}\n\t}\n\t\n\t@Override\n\tpublic boolean isClones() {\n\t\tif (isCorporation()) {\n\t\t\treturn false; //Character Endpoint\n\t\t} else {\n\t\t\treturn EsiScopes.CHARACTER_CLONE.isInScope(scopes);\n\t\t}\n\t}\n\t\n\t@Override\n\tpublic boolean isImplants() {\n\t\tif (isCorporation()) {\n\t\t\treturn false; //Character Endpoint\n\t\t} else {\n\t\t\treturn EsiScopes.CHARACTER_IMPLANT.isInScope(scopes);\n\t\t}\n\t}\n\n\t@Override\n\tpublic boolean isAccountBalance() {\n\t\treturn isWallet();\n\t}\n\n\t@Override\n\tpublic boolean isBlueprints() {\n\t\tif (isCorporation()) {\n\t\t\treturn EsiScopes.CORPORATION_BLUEPRINTS.isInScope(scopes) && roles.contains(RolesEnum.DIRECTOR);\n\t\t} else {\n\t\t\treturn EsiScopes.CHARACTER_BLUEPRINTS.isInScope(scopes);\n\t\t}\n\t}\n\n\t@Override\n\tpublic boolean isDivisions() {\n\t\tif (isCorporation()) {\n\t\t\treturn EsiScopes.CORPORATION_DIVISIONS.isInScope(scopes) && roles.contains(RolesEnum.DIRECTOR);\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t@Override\n\tpublic boolean isIndustryJobs() {\n\t\tif (isCorporation()) {\n\t\t\treturn EsiScopes.CORPORATION_INDUSTRY_JOBS.isInScope(scopes)\n\t\t\t\t\t&& (roles.contains(RolesEnum.FACTORY_MANAGER)\n\t\t\t\t\t|| roles.contains(RolesEnum.DIRECTOR));\n\t\t} else {\n\t\t\treturn EsiScopes.CHARACTER_INDUSTRY_JOBS.isInScope(scopes);\n\t\t}\n\t}\n\n\t@Override\n\tpublic boolean isMarketOrders() {\n\t\tif (isCorporation()) {\n\t\t\treturn EsiScopes.CORPORATION_MARKET_ORDERS.isInScope(scopes)\n\t\t\t\t\t&& (roles.contains(RolesEnum.ACCOUNTANT)\n\t\t\t\t\t|| roles.contains(RolesEnum.TRADER)\n\t\t\t\t\t|| roles.contains(RolesEnum.DIRECTOR));\n\t\t} else {\n\t\t\treturn EsiScopes.CHARACTER_MARKET_ORDERS.isInScope(scopes);\n\t\t}\n\t}\n\n\t@Override\n\tpublic boolean isPlanetaryInteraction() {\n\t\tif (isCorporation()) {\n\t\t\treturn false; //Character Endpoint\n\t\t} else {\n\t\t\treturn EsiScopes.CHARACTER_PLANETARY_INTERACTION.isInScope(scopes);\n\t\t}\n\t}\n\n\t@Override\n\tpublic boolean isTransactions() {\n\t\treturn isWallet();\n\t}\n\n\t@Override\n\tpublic boolean isJournal() {\n\t\treturn isWallet();\n\t}\n\n\t@Override\n\tpublic boolean isContracts() {\n\t\tif (isCorporation()) {\n\t\t\treturn EsiScopes.CORPORATION_CONTRACTS.isInScope(scopes);\n\t\t} else {\n\t\t\treturn EsiScopes.CHARACTER_CONTRACTS.isInScope(scopes);\n\t\t}\n\t}\n\n\t@Override\n\tpublic boolean isLocations() {\n\t\treturn isAssetList();\n\t}\n\n\t@Override\n\tpublic boolean isStructures() {\n\t\tif (isCorporation()) {\n\t\t\treturn false; //Character Endpoint\n\t\t} else {\n\t\t\treturn EsiScopes.CHARACTER_STRUCTURES.isInScope(scopes);\n\t\t}\n\t}\n\n\t@Override\n\tpublic boolean isMarketStructures() {\n\t\tif (isCorporation()) {\n\t\t\treturn false; //Character Endpoint\n\t\t} else {\n\t\t\treturn EsiScopes.CHARACTER_MARKET_STRUCTURES.isInScope(scopes);\n\t\t}\n\t}\n\n\t@Override\n\tpublic boolean isShip() {\n\t\tif (isCorporation()) {\n\t\t\treturn false; //Character Endpoint\n\t\t} else {\n\t\t\treturn EsiScopes.CHARACTER_SHIP_TYPE.isInScope(scopes) && EsiScopes.CHARACTER_SHIP_LOCATION.isInScope(scopes);\n\t\t}\n\t}\n\n\t@Override\n\tpublic boolean isOpenWindows() {\n\t\tif (isCorporation()) {\n\t\t\treturn false; //Character Endpoint\n\t\t} else {\n\t\t\treturn EsiScopes.CHARACTER_OPEN_WINDOWS.isInScope(scopes);\n\t\t}\n\t}\n\n\t@Override\n\tpublic boolean isAutopilot() {\n\t\tif (isCorporation()) {\n\t\t\treturn false; //Character Endpoint\n\t\t} else {\n\t\t\treturn EsiScopes.CHARACTER_AUTOPILOT.isInScope(scopes);\n\t\t}\n\t}\n\n\t@Override\n\tpublic boolean isPrivilegesLimited() {\n\t\treturn EsiScopes.isPrivilegesLimited(isCorporation(), scopes);\n\t}\n\n\t@Override\n\tpublic boolean isPrivilegesInvalid() {\n\t\treturn EsiScopes.isPrivilegesInvalid(isCorporation(), scopes);\n\t}\n\n\t@Override\n\tpublic boolean isSkills() {\n\t\treturn EsiScopes.CHARACTER_SKILLS.isInScope(scopes);\n\t}\n\n\t@Override\n\tpublic boolean isLoyaltyPoints() {\n\t\treturn EsiScopes.CHARACTER_LOYALTY_POINTS.isInScope(scopes);\n\t}\n\n\t@Override\n\tpublic boolean isNpcStanding() {\n\t\tif (isCorporation()) {\n\t\t\treturn EsiScopes.CORPORATION_NPC_STANDING.isInScope(scopes);\n\t\t} else {\n\t\t\treturn EsiScopes.CHARACTER_NPC_STANDING.isInScope(scopes);\n\t\t}\n\t}\n\n\t@Override\n\tpublic boolean isMining() {\n\t\tif (isCorporation()) {\n\t\t\treturn EsiScopes.CORPORATION_MINING.isInScope(scopes)\n\t\t\t\t\t&& ((roles.contains(RolesEnum.ACCOUNTANT) && roles.contains(RolesEnum.STATION_MANAGER))\n\t\t\t\t\t|| roles.contains(RolesEnum.DIRECTOR));\n\t\t} else {\n\t\t\treturn EsiScopes.CHARACTER_MINING.isInScope(scopes);\n\t\t}\n\t}\n\n\tpublic boolean isRoles() {\n\t\treturn EsiScopes.CORPORATION_ROLES.isInScope(scopes);\n\t}\n\n\tpublic final void updateAuth(EsiOwner esiOwner) {\n\t\tOAuth oAuth = esiOwner.getOAuth();\n\t\tsetAuth(esiOwner.getCallbackURL(), oAuth.getRefreshToken(), oAuth.getAccessToken());\n\t\tsetScopes(esiOwner.getScopes()); //Is bound to the access token, so should be updated here\n\t\tsetInvalid(false);\n\t}\n\n\tpublic synchronized final void setAuth(EsiCallbackURL callbackURL, String refreshToken, String accessToken) {\n\t\tif (callbackURL != null) {\n\t\t\tthis.callbackURL = callbackURL;\n\t\t}\n\t\tif (callbackURL != null && refreshToken != null) {\n\t\t\tgetOAuth().setAuth(callbackURL.getA(), refreshToken);\n\t\t\tgetOAuth().setAccessToken(accessToken);\n\t\t}\n\t}\n\n\tprivate OAuth getOAuth() {\n\t\treturn (OAuth) apiClient.getAuthentication(ApiClientBuilder.AUTHENTICATION);\n\t}\n\n\tpublic synchronized ApiClient getApiClient() {\n\t\treturn apiClient;\n\t}\n\n\tpublic MarketApi getMarketApiAuth() {\n\t\treturn marketApi;\n\t}\n\n\tpublic IndustryApi getIndustryApiAuth() {\n\t\treturn industryApi;\n\t}\n\n\tpublic CharacterApi getCharacterApiAuth() {\n\t\treturn characterApi;\n\t}\n\n\tpublic AssetsApi getAssetsApiAuth() {\n\t\treturn assetsApi;\n\t}\n\n\tpublic WalletApi getWalletApiAuth() {\n\t\treturn walletApi;\n\t}\n\n\tpublic UniverseApi getUniverseApiAuth() {\n\t\treturn universeApi;\n\t}\n\t\n\tpublic ClonesApi getClonesApiAuth() {\n\t\treturn clonesApi;\n\t}\n\n\tpublic ContractsApi getContractsApiAuth() {\n\t\treturn contractsApi;\n\t}\n\n\tpublic CorporationApi getCorporationApiAuth() {\n\t\treturn corporationApi;\n\t}\n\n\tpublic LocationApi getLocationApiAuth() {\n\t\treturn locationApi;\n\t}\n\n\tpublic UserInterfaceApi getUserInterfaceApiAuth() {\n\t\treturn userInterfaceApi;\n\t}\n\n\tpublic PlanetaryInteractionApi getPlanetaryInteractionApiAuth() {\n\t\treturn planetaryInteractionApi;\n\t}\n\n\tpublic SkillsApi getSkillsApiAuth() {\n\t\treturn skillsApi;\n\t}\n\n\tpublic LoyaltyApi getLoyaltyApiAuth() {\n\t\treturn loyaltyApi;\n\t}\n\n\t@Override\n\tpublic int hashCode() {\n\t\tint hash = 5;\n\t\thash = 61 * hash + Objects.hashCode(this.getRefreshToken());\n\t\thash = 61 * hash + Objects.hashCode(this.scopes);\n\t\treturn hash;\n\t}\n\n\t@Override\n\tpublic boolean equals(Object obj) {\n\t\tif (this == obj) {\n\t\t\treturn true;\n\t\t}\n\t\tif (obj == null) {\n\t\t\treturn false;\n\t\t}\n\t\tif (getClass() != obj.getClass()) {\n\t\t\treturn false;\n\t\t}\n\t\tfinal EsiOwner other = (EsiOwner) obj;\n\t\tif (!Objects.equals(this.getRefreshToken(), other.getRefreshToken())) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!Objects.equals(this.scopes, other.scopes)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/accounts/OwnerType.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.accounts;\r\n\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAccountBalance;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyExtraction;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyJournal;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyLoyaltyPoints;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMining;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyNpcStanding;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyShip;\r\nimport net.nikr.eve.jeveasset.data.api.my.MySkill;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawBlueprint;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawClone;\r\n\r\n\r\npublic interface OwnerType extends SimpleOwner {\r\n\r\n\t//Info\r\n\tpublic String getAccountID();\r\n\tpublic String getCorporationName();\r\n\tpublic void setOwnerName(final String ownerName);\r\n\tpublic void setCorporationName(String corporationName);\r\n\tpublic void setOwnerID(final long ownerID);\r\n\tpublic boolean isShowOwner();\r\n\tpublic Date getExpire();\r\n\tpublic String getComparator();\r\n\tpublic String getAccountName();\r\n\tpublic boolean isExpired();\r\n\tpublic boolean isInvalid();\r\n\tpublic ApiType getAccountAPI();\r\n\tpublic void setShowOwner(final boolean showOwner);\r\n\tpublic void setInvalid(boolean invalid);\r\n\tpublic void setResetAccountName();\r\n\tpublic void setAccountName(final String accountName);\r\n\tpublic void setActiveShip(MyShip activeShip);\r\n\t//Data\r\n\tpublic List<MyAccountBalance> getAccountBalances();\r\n\tpublic Set<MyMarketOrder> getMarketOrders();\r\n\tpublic Set<MyTransaction> getTransactions();\r\n\tpublic Set<MyJournal> getJournal();\r\n\tpublic Set<MyIndustryJob> getIndustryJobs();\r\n\tpublic Map<MyContract, List<MyContractItem>> getContracts();\r\n\tpublic List<MyAsset> getAssets();\r\n\tpublic Map<Long, RawBlueprint> getBlueprints();\r\n\tpublic Map<Integer, String> getWalletDivisions();\r\n\tpublic List<MySkill> getSkills();\r\n\tpublic Long getTotalSkillPoints();\r\n\tpublic Integer getUnallocatedSkillPoints();\r\n\tpublic Set<MyMining> getMining();\r\n\tpublic Set<MyExtraction> getExtractions();\r\n\tpublic Set<MyLoyaltyPoints> getLoyaltyPoints();\r\n\tpublic Set<MyNpcStanding> getNpcStanding();\r\n\tpublic List<RawClone> getClones();\r\n\tpublic void setBlueprints(final Map<Long, RawBlueprint> blueprints);\r\n\tpublic void setIndustryJobs(final Set<MyIndustryJob> industryJobs);\r\n\tpublic void setTransactions(final Set<MyTransaction> transactions);\r\n\tpublic void setJournal(final Set<MyJournal> journal);\r\n\tpublic void setMarketOrders(final Set<MyMarketOrder> marketOrders);\r\n\tpublic void setContracts(final Map<MyContract, List<MyContractItem>> contracts);\r\n\tpublic void setAssets(final List<MyAsset> assets);\r\n\tpublic void setAccountBalances(final List<MyAccountBalance> accountBalances);\r\n\tpublic void setWalletDivisions(final Map<Integer, String> walletDivisions);\r\n\tpublic void setAssetDivisions(final Map<Integer, String> assetDivisions);\r\n\tpublic void setSkills(final List<MySkill> skills);\r\n\tpublic void setTotalSkillPoints(final Long totalSkillPoints);\r\n\tpublic void setUnallocatedSkillPoints(final Integer unallocatedSkillPoints);\r\n\tpublic void setMining(Set<MyMining> mining);\r\n\tpublic void setExtractions(Set<MyExtraction> extractions);\r\n\tpublic void setClones(List<RawClone> clones);\r\n\tpublic void setLoyaltyPoints(Set<MyLoyaltyPoints> loyaltyPoints);\r\n\tpublic void setNpcStanding(Set<MyNpcStanding> npcStanding);\r\n\t//Account Mask\r\n\tpublic boolean isCharacter();\r\n\tpublic boolean isAssetList();\r\n\tpublic boolean isClones();\r\n\tpublic boolean isImplants();\r\n\tpublic boolean isAccountBalance();\r\n\tpublic boolean isIndustryJobs();\r\n\tpublic boolean isMarketOrders();\r\n\tpublic boolean isTransactions();\r\n\tpublic boolean isJournal();\r\n\tpublic boolean isContracts();\r\n\tpublic boolean isLocations();\r\n\tpublic boolean isStructures();\r\n\tpublic boolean isMarketStructures();\r\n\tpublic boolean isBlueprints();\r\n\tpublic boolean isShip();\r\n\tpublic boolean isOpenWindows();\r\n\tpublic boolean isPlanetaryInteraction();\r\n\tpublic boolean isAutopilot();\r\n\tpublic boolean isDivisions();\r\n\tpublic boolean isPrivilegesLimited();\r\n\tpublic boolean isPrivilegesInvalid();\r\n\tpublic boolean isSkills();\r\n\tpublic boolean isMining();\r\n\tpublic boolean isLoyaltyPoints();\r\n\tpublic boolean isNpcStanding();\r\n\t//Last Update\r\n\tpublic Date getAssetLastUpdate();\r\n\tpublic Date getBalanceLastUpdate();\r\n\tpublic void setAssetLastUpdate(final Date assetLastUpdate);\r\n\tpublic void setBalanceLastUpdate(final Date balanceLastUpdate);\r\n\t//Next Update\r\n\tpublic void setAssetNextUpdate(final Date nextUpdate);\r\n\tpublic void setBalanceNextUpdate(final Date balanceNextUpdate);\r\n\tpublic void setBlueprintsNextUpdate(Date blueprintsNextUpdate);\r\n\tpublic void setContractsNextUpdate(final Date contractsNextUpdate);\r\n\tpublic void setIndustryJobsNextUpdate(final Date industryJobsNextUpdate);\r\n\tpublic void setLocationsNextUpdate(final Date locationsNextUpdate);\r\n\tpublic void setMarketOrdersNextUpdate(final Date marketOrdersNextUpdate);\r\n\tpublic void setJournalNextUpdate(final Date journalNextUpdate);\r\n\tpublic void setTransactionsNextUpdate(final Date transactionsNextUpdate);\r\n\tpublic void setSkillsNextUpdate(final Date skillsNextUpdate);\r\n\tpublic void setLoyaltyPointsNextUpdate(final Date loyaltyPointsNextUpdate);\r\n\tpublic void setNpcStandingNextUpdate(Date npcStandingNextUpdate);\r\n\tpublic void setMiningNextUpdate(final Date miningNextUpdate);\r\n\tpublic Date getTransactionsNextUpdate();\r\n\tpublic Date getAssetNextUpdate();\r\n\tpublic Date getBalanceNextUpdate();\r\n\tpublic Date getBlueprintsNextUpdate();\r\n\tpublic Date getContractsNextUpdate();\r\n\tpublic Date getIndustryJobsNextUpdate();\r\n\tpublic Date getLocationsNextUpdate();\r\n\tpublic Date getMarketOrdersNextUpdate();\r\n\tpublic Date getJournalNextUpdate();\r\n\tpublic Date getSkillsNextUpdate();\r\n\tpublic Date getLoyaltyPointsNextUpdate();\r\n\tpublic Date getNpcStandingNextUpdate();\r\n\tpublic Date getMiningNextUpdate();\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/accounts/SimpleOwner.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.accounts;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\nimport javax.annotation.Nullable;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyShip;\r\n\r\n\r\npublic interface SimpleOwner extends Comparable<SimpleOwner> {\r\n\tpublic long getOwnerID();\r\n\tpublic String getOwnerName();\r\n\tpublic boolean isCorporation();\r\n\tdefault Map<Integer, String> getAssetDivisions() {\r\n\t\treturn new HashMap<>();\r\n\t}\r\n\t@Nullable\r\n\tdefault MyShip getActiveShip() {\r\n\t\treturn null;\r\n\t}\r\n\t@Override\r\n\tdefault int compareTo(final SimpleOwner o) {\r\n\t\treturn this.getOwnerName().compareToIgnoreCase(o.getOwnerName());\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/my/MyAccountBalance.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.my;\r\n\r\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawAccountBalance;\r\n\r\npublic class MyAccountBalance extends RawAccountBalance {\r\n\r\n\tprivate final OwnerType owner;\r\n\r\n\tpublic MyAccountBalance(RawAccountBalance rawAccountBalance, OwnerType owner) {\r\n\t\tsuper(rawAccountBalance);\r\n\t\tthis.owner = owner;\r\n\t}\r\n\r\n\tpublic String getOwnerName() {\r\n\t\treturn owner.getOwnerName();\r\n\t}\r\n\r\n\tpublic long getOwnerID() {\r\n\t\treturn owner.getOwnerID();\r\n\t}\r\n\r\n\tpublic boolean isCorporation() {\r\n\t\treturn owner.isCorporation();\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/my/MyAsset.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.data.api.my;\n\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.Date;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Objects;\nimport java.util.Set;\nimport net.nikr.eve.jeveasset.data.api.accounts.SimpleOwner;\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob.IndustryActivity;\nimport net.nikr.eve.jeveasset.data.api.raw.RawAsset;\nimport net.nikr.eve.jeveasset.data.api.raw.RawClone;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.data.settings.MarketPriceData;\nimport net.nikr.eve.jeveasset.data.settings.PriceData;\nimport net.nikr.eve.jeveasset.data.settings.UserItem;\nimport net.nikr.eve.jeveasset.data.settings.tag.TagID;\nimport net.nikr.eve.jeveasset.data.settings.tag.Tags;\nimport net.nikr.eve.jeveasset.data.settings.types.BlueprintType;\nimport net.nikr.eve.jeveasset.data.settings.types.EditableLocationType;\nimport net.nikr.eve.jeveasset.data.settings.types.EditablePriceType;\nimport net.nikr.eve.jeveasset.data.settings.types.ItemType;\nimport net.nikr.eve.jeveasset.data.settings.types.OwnersType;\nimport net.nikr.eve.jeveasset.data.settings.types.TagsType;\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo.InfoItem;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.AssetContainer;\nimport net.nikr.eve.jeveasset.gui.tabs.assets.AssetsTab;\nimport net.nikr.eve.jeveasset.i18n.DataModelAsset;\nimport net.nikr.eve.jeveasset.i18n.General;\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\n\npublic class MyAsset extends RawAsset implements Comparable<MyAsset>, InfoItem, ItemType, BlueprintType, EditablePriceType, TagsType, EditableLocationType, OwnersType {\n\n//Static values (set by constructor)\n\tprivate final List<MyAsset> assets = new ArrayList<>();\n\tprivate final RawAsset rawAsset;\n\tprivate final Item item;\n\tprivate final SimpleOwner owner;\n\tprivate final List<MyAsset> parents;\n\tprivate final Set<Long> owners;\n\tprivate final boolean generated;\n\tprivate final long count;\n\tprivate final float volume;\n//Static values cache (set by constructor)\n\tprivate String typeName;\n\tprivate String flagName;\n\tprivate boolean bpo;\n\tprivate boolean bpc;\n//Dynamic values\n\tprivate String name;\n\tprivate String itemName = null;\n\tprivate AssetContainer container = new AssetContainer();\n\tprivate PriceData priceData = new PriceData();\n\tprivate UserItem<Integer, Double> userPrice;\n\tprivate long typeCount = 0;\n\tprivate MarketPriceData marketPriceData;\n\tprivate Date added;\n\tprivate double price;\n\tprivate Tags tags;\n\tprivate MyBlueprint blueprint;\n\tprivate MyLocation location;\n\t//Dynamic values cache\n\tprivate boolean userNameSet = false;\n\tprivate boolean eveNameSet = false;\n\tprivate boolean userPriceSet = false;\n\n\tprotected MyAsset(MyAsset asset) {\n\t\tthis(asset.rawAsset,\n\t\t\t\tasset.item,\n\t\t\t\tasset.owner,\n\t\t\t\tasset.parents);\n\t\tthis.name = asset.name;\n\t\tthis.itemName = asset.itemName;\n\t\tthis.container = asset.container;\n\t\tthis.priceData = asset.priceData;\n\t\tthis.userPrice = asset.userPrice;\n\t\tthis.typeCount = asset.typeCount;\n\t\tthis.marketPriceData = asset.marketPriceData;\n\t\tthis.added = asset.added;\n\t\tthis.price = asset.price;\n\t\tthis.tags = asset.tags;\n\t\tthis.blueprint = asset.blueprint;\n\t\tthis.location = asset.location;\n\t\tthis.userNameSet = asset.userNameSet;\n\t\tthis.eveNameSet = asset.eveNameSet;\n\t\tthis.userPriceSet = asset.userPriceSet;\n\t}\n\n\tpublic MyAsset(MyLocation location) {\n\t\tsuper(RawAsset.create());\n\t\tthis.rawAsset = RawAsset.create();\n\t\tthis.item = new Item(0);\n\t\tthis.owner = null;\n\t\tthis.parents = new ArrayList<>();\n\t\tthis.location = location;\n\t\tthis.owners = new HashSet<>();\n\t\tthis.generated = true;\n\t\tif (getQuantity() == null || getQuantity() <= 0) {\n\t\t\tthis.count = 1;\n\t\t} else {\n\t\t\tthis.count = getQuantity();\n\t\t}\n\t\tthis.volume = 0;\n\t\tthis.flagName = ApiIdConverter.getFlagName(ApiIdConverter.getFlag(0));\n\t\tsetItemID(0L);\n\t\tsetItemFlag(ApiIdConverter.getFlag(0));\n\t\tsetLocationID(location.getLocationID());\n\t}\n\n\tpublic MyAsset(final RawAsset rawAsset, final Item item, final SimpleOwner owner, final List<MyAsset> parents) {\n\t\tsuper(rawAsset);\n\t\tthis.rawAsset = rawAsset;\n\t\tthis.item = item;\n\t\tthis.owner = owner;\n\t\tthis.parents = parents;\n\t\tthis.volume = ApiIdConverter.getVolume(item, !rawAsset.isSingleton());\n\t\tthis.typeName = item.getTypeName();\n\t\tthis.name = item.getTypeName();\n\t\tthis.itemName = null;\n\t\tthis.owners = Collections.singleton(owner.getOwnerID());\n\t\tthis.generated = getFlag().equals(General.get().marketOrderSellFlag()) //market sell orders\n\t\t\t\t\t\t|| getFlag().equals(General.get().marketOrderBuyFlag()) //market buy orders\n\t\t\t\t\t\t|| getFlag().equals(General.get().contractIncluded()) //contracts included\n\t\t\t\t\t\t|| getFlag().equals(General.get().contractExcluded()) //contracts excluded\n\t\t\t\t\t\t|| getFlag().equals(IndustryActivity.ACTIVITY_MANUFACTURING.toString()) //industry job manufacturing\n\t\t\t\t\t\t|| getFlag().equals(IndustryActivity.ACTIVITY_REACTIONS.toString()) //industry job reactions\n\t\t\t\t\t\t|| getFlag().equals(IndustryActivity.ACTIVITY_COPYING.toString()) //industry job copying\n\t\t\t\t\t\t|| getFlag().equals(General.get().jumpClone()) //jump clone\n\t\t\t\t\t\t|| getFlag().equals(General.get().activeClone()) //active clone\n\t\t\t\t\t\t|| getFlagID() == 89 //plugged in implant\n\t\t\t\t\t\t;\n\t\tif (getQuantity() == null || getQuantity() <= 0) {\n\t\t\tthis.count = 1;\n\t\t} else {\n\t\t\tthis.count = getQuantity();\n\t\t}\n\t\tupdateBlueprint();\n\t}\n\n\tprivate void updateBlueprint() {\n\t\tif (item.isBlueprint()) { //if this is a blueprint\n\t\t\t//Try to figure out if it's a copy (BPC) or a original (BPO)\n\t\t\tif (blueprint != null) { //Best\n\t\t\t\tthis.bpo = blueprint.getRuns() <= 0;\n\t\t\t\tthis.bpc = blueprint.getRuns() > 0;\n\t\t\t} else { //2nd best\n\t\t\t\t//rawQuantity: -1 = BPO. Only BPOs can be packaged (singleton == false). Only packaged items can be stacked (count > 1)\n\t\t\t\tthis.bpo = (getQuantity() == -1 || !isSingleton() || getQuantity() > 1);\n\t\t\t\t//rawQuantity: -2 = BPC\n\t\t\t\tthis.bpc = getQuantity() == -2;\n\t\t\t}\n\t\t\tif (bpo) { //Found BPO\n\t\t\t\tthis.typeName = item.getTypeName() + \" (BPO)\";\n\t\t\t} else if (bpc) { //Found BPC\n\t\t\t\tthis.typeName = item.getTypeName() + \" (BPC)\";\n\t\t\t} else { //Could not figure it out, assume copy\n\t\t\t\tthis.bpc = true;\n\t\t\t\tthis.typeName = item.getTypeName() + \" (BP)\";\n\t\t\t}\n\t\t\tif (!userNameSet || !eveNameSet) { //No other name set, update name\n\t\t\t\tthis.name = this.typeName;\n\t\t\t}\n\t\t}\n\t\tthis.flagName = ApiIdConverter.getFlagName(rawAsset.getItemFlag(), owner);\n\t}\n\n\tpublic MyAsset(MyIndustryJob industryJob, boolean output) {\n\t\tthis(new RawAsset(industryJob, output),\n\t\t\t\tindustryJob.isManufacturing() && output ? ApiIdConverter.getItemUpdate(industryJob.getProductTypeID()) : industryJob.getItem(), industryJob.getOwner(), new ArrayList<>());\n\t}\n\n\tpublic MyAsset(MyMarketOrder marketOrder) {\n\t\tthis(new RawAsset(marketOrder), marketOrder.getItem(), marketOrder.getOwner(), new ArrayList<>());\n\t}\n\n\tpublic MyAsset(MyContractItem contractItem, final SimpleOwner owner) {\n\t\tthis(new RawAsset(contractItem), contractItem.getItem(), owner, new ArrayList<>());\n\t}\n\n\tpublic MyAsset(RawClone clone, Integer impantTypeID, final SimpleOwner owner, List<MyAsset> parents) {\n\t\tthis(new RawAsset(clone, impantTypeID), ApiIdConverter.getItem(impantTypeID), owner, parents);\n\t}\n\n\tpublic MyAsset(RawClone clone, final SimpleOwner owner) {\n\t\tthis(new RawAsset(clone), getJumpCloneItem(clone), owner, new ArrayList<>());\n\t}\n\n\tprivate static Item getJumpCloneItem(RawClone clone) {\n\t\tItem omegaClone = ApiIdConverter.getItem(29143); //Clone Grade Omega\n\t\tString name;\n\t\tif (clone.isActive()) {\n\t\t\tname = General.get().activeClone();\n\t\t} else {\n\t\t\tname = General.get().jumpClone();\n\t\t}\n\t\treturn new Item(0,\n\t\t\t\tname,\n\t\t\t\tomegaClone.getGroup(),\n\t\t\t\tomegaClone.getCategory(),\n\t\t\t\t900000,\n\t\t\t\tomegaClone.getVolume(),\n\t\t\t\tomegaClone.getVolumePackaged(),\n\t\t\t\tomegaClone.getCapacity(),\n\t\t\t\tomegaClone.getMeta(),\n\t\t\t\tomegaClone.getTech(),\n\t\t\t\tomegaClone.isMarketGroup(),\n\t\t\t\tomegaClone.getPortion(),\n\t\t\t\tomegaClone.getProductTypeID(),\n\t\t\t\tomegaClone.getProductQuantity(),\n\t\t\t\tomegaClone.getSlot(),\n\t\t\t\tomegaClone.getChargeSize(),\n\t\t\t\tnull);\n\t}\n\n\tpublic void addAsset(final MyAsset asset) {\n\t\tassets.add(asset);\n\t}\n\n\tpublic Date getAdded() {\n\t\treturn added;\n\t}\n\n\tpublic List<MyAsset> getAssets() {\n\t\treturn assets;\n\t}\n\n\tpublic String getContainer() {\n\t\treturn container.getContainer();\n\t}\n\n\tpublic AssetContainer getAssetContainer() {\n\t\treturn container;\n\t}\n\n\tpublic boolean isGenerated() {\n\t\treturn generated;\n\t}\n\n\t@Override\n\tpublic long getCount() {\n\t\treturn count;\n\t}\n\n\tpublic String getFlagName() {\n\t\treturn flagName;\n\t}\n\n\tpublic final String getFlag() {\n\t\tif (getItemFlag() != null) {\n\t\t\treturn getItemFlag().getFlagName();\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic final Integer getFlagID() {\n\t\tif (getItemFlag() != null) {\n\t\t\treturn getItemFlag().getFlagID();\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t@Override\n\tpublic Item getItem() {\n\t\treturn item;\n\t}\n\n\t@Override\n\tpublic long getItemCount() {\n\t\treturn getCount();\n\t}\n\n\t@Override\n\tpublic MyLocation getLocation() {\n\t\treturn location;\n\t}\n\n\t@Override\n\tpublic void setLocation(MyLocation location) {\n\t\tthis.location = location;\n\t}\n\n\tpublic MarketPriceData getMarketPriceData() {\n\t\tif (marketPriceData != null) {\n\t\t\treturn marketPriceData;\n\t\t} else {\n\t\t\treturn new MarketPriceData();\n\t\t}\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic String getOwnerName() {\n\t\treturn owner.getOwnerName();\n\t}\n\n\tpublic SimpleOwner getOwner() {\n\t\treturn owner;\n\t}\n\n\t@Override\n\tpublic Set<Long> getOwners() {\n\t\treturn owners;\n\t}\n\n\tpublic long getOwnerID() {\n\t\treturn owner.getOwnerID();\n\t}\n\n\tpublic List<MyAsset> getParents() {\n\t\treturn parents;\n\t}\n\n\tpublic MyAsset getParent() {\n\t\tif (parents.isEmpty()) {\n\t\t\treturn null;\n\t\t}\n\t\treturn parents.get(parents.size() - 1);\n\t}\n\n\t@Override\n\tpublic Double getDynamicPrice() {\n\t\treturn price;\n\t}\n\n\t@Override\n\tpublic void setDynamicPrice(double price) {\n\t\tthis.price = price;\n\t}\n\n\tpublic double getPriceBuyMax() {\n\t\treturn priceData.getBuyMax();\n\t}\n\n\tpublic double getPriceReprocessed() {\n\t\treturn item.getPriceReprocessed();\n\t}\n\n\tpublic double getPriceReprocessedDifference() {\n\t\treturn getPriceReprocessed() - getDynamicPrice();\n\t}\n\n\tpublic double getPriceReprocessedPercent() {\n\t\tif (getDynamicPrice() > 0 && getPriceReprocessed() > 0) {\n\t\t\treturn (getPriceReprocessed() / getDynamicPrice());\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\tpublic double getPriceSellMin() {\n\t\treturn priceData.getSellMin();\n\t}\n\n\t@Override\n\tpublic Tags getTags() {\n\t\treturn tags;\n\t}\n\n\t@Override\n\tpublic TagID getTagID() {\n\t\treturn new TagID(AssetsTab.NAME, getItemID());\n\t}\n\n\tpublic long getTypeCount() {\n\t\treturn typeCount;\n\t}\n\n\tpublic final String getTypeName() {\n\t\treturn typeName;\n\t}\n\n\tpublic String getItemName() {\n\t\treturn itemName;\n\t}\n\n\tpublic UserItem<Integer, Double> getUserPrice() {\n\t\treturn userPrice;\n\t}\n\n\t@Override\n\tpublic double getValue() {\n\t\treturn Formatter.round(this.getDynamicPrice() * getCount(), 2);\n\t}\n\n\t@Override\n\tpublic double getValueReprocessed() {\n\t\treturn Formatter.round(this.getPriceReprocessed() * getCount(), 2);\n\t}\n\n\tpublic float getVolume() {\n\t\treturn volume;\n\t}\n\n\tpublic double getValuePerVolume() {\n\t\tif (getVolume() > 0 && getDynamicPrice() > 0) {\n\t\t\treturn getDynamicPrice() / getVolume();\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\t@Override\n\tpublic double getVolumeTotal() {\n\t\treturn volume * getCount();\n\t}\n\n\t@Override\n\tpublic final boolean isBPO() {\n\t\treturn bpo;\n\t}\n\n\t@Override\n\tpublic final boolean isBPC() {\n\t\treturn bpc;\n\t}\n\n\t@Override\n\tpublic int getMaterialEfficiency() {\n\t\tif (blueprint != null) {\n\t\t\treturn blueprint.getMaterialEfficiency();\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\t@Override\n\tpublic int getTimeEfficiency() {\n\t\tif (blueprint != null) {\n\t\t\treturn blueprint.getTimeEfficiency();\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\t@Override\n\tpublic int getRuns() {\n\t\tif (blueprint != null) {\n\t\t\treturn blueprint.getRuns();\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\tpublic boolean isCorporation() {\n\t\treturn owner.isCorporation();\n\t}\n\n\tpublic boolean isEveName() {\n\t\treturn eveNameSet;\n\t}\n\n\tpublic String getSingleton() {\n\t\tif (isSingleton()) {\n\t\t\treturn DataModelAsset.get().unpackaged();\n\t\t} else {\n\t\t\treturn DataModelAsset.get().packaged();\n\t\t}\n\t}\n\n\tpublic boolean isUserName() {\n\t\treturn userNameSet;\n\t}\n\n\tpublic boolean isUserPrice() {\n\t\treturn userPriceSet;\n\t}\n\n\tpublic void setAdded(final Date added) {\n\t\tthis.added = added;\n\t}\n\n\tpublic void setBlueprint(MyBlueprint blueprint) {\n\t\tthis.blueprint = blueprint;\n\t\tupdateBlueprint();\n\t}\n\n\tpublic void updateContainer() {\n\t\tthis.container = new AssetContainer(this);\n\t}\n\n\tpublic void setMarketPriceData(final MarketPriceData marketPriceData) {\n\t\tthis.marketPriceData = marketPriceData;\n\t}\n\n\tpublic void setName(UserItem<Long, String> customItem, String eveName) {\n\t\tthis.userNameSet = customItem != null;\n\t\tthis.eveNameSet = customItem == null && eveName != null;\n\t\tif (customItem != null) {\n\t\t\tname = customItem.getValue();\n\t\t\titemName = customItem.getValue();\n\t\t} else if (eveName != null) {\n\t\t\tname = eveName + \" (\" + typeName + \")\";\n\t\t\titemName = eveName;\n\t\t} else {\n\t\t\tname = typeName;\n\t\t\titemName = null;\n\t\t}\n\t}\n\n\tpublic void setPriceData(final PriceData priceData) {\n\t\tthis.priceData = priceData;\n\t}\n\n\t@Override\n\tpublic void setTags(Tags tags) {\n\t\tthis.tags = tags;\n\t}\n\n\tpublic void setTypeCount(final long typeCount) {\n\t\tthis.typeCount = typeCount;\n\t}\n\n\tpublic void setUserPrice(final UserItem<Integer, Double> userPrice) {\n\t\tthis.userPrice = userPrice;\n\t\tuserPriceSet = (this.getUserPrice() != null);\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\treturn this.getName();\n\t}\n\n\t@Override\n\tpublic int compareTo(final MyAsset o) {\n\t\treturn this.getName().compareToIgnoreCase(o.getName());\n\t}\n\n\t@Override\n\tpublic int hashCode() {\n\t\tint hash = 7;\n\t\thash = 97 * hash + (this.owner != null ? this.owner.hashCode() : 0);\n\t\thash = 97 * hash + (int) (this.getItemID() ^ (this.getItemID() >>> 32));\n\t\treturn hash;\n\t}\n\n\t@Override\n\tpublic boolean equals(Object obj) {\n\t\tif (obj == null) {\n\t\t\treturn false;\n\t\t}\n\t\tif (getClass() != obj.getClass()) {\n\t\t\treturn false;\n\t\t}\n\t\tfinal MyAsset other = (MyAsset) obj;\n\t\tif (this.owner != other.owner && (this.owner == null || !this.owner.equals(other.owner))) {\n\t\t\treturn false;\n\t\t}\n\t\treturn Objects.equals(this.getItemID(), other.getItemID());\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/my/MyBlueprint.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.my;\r\n\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawBlueprint;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawContractItem;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawIndustryJob;\r\n\r\n\r\npublic class MyBlueprint {\r\n\tprivate final int runs;\r\n\tprivate final int materialEfficiency;\r\n\tprivate final int timeEfficiency ;\r\n\r\n\t/**\r\n\t * Contract Item\r\n\t * @param contractItem\r\n\t */\r\n\tpublic MyBlueprint(RawContractItem contractItem) {\r\n\t\tthis(contractItem.getLicensedRuns(), contractItem.getME(), contractItem.getTE());\r\n\t}\r\n\r\n\t/**\r\n\t * Blueprint\r\n\t * @param blueprint\r\n\t */\r\n\tpublic MyBlueprint(RawBlueprint blueprint) {\r\n\t\tthis(blueprint.getRuns(), blueprint.getMaterialEfficiency(), blueprint.getTimeEfficiency());\r\n\t}\r\n\r\n\t/**\r\n\t * IndustryJob\r\n\t * @param industryJob\r\n\t */\r\n\tpublic MyBlueprint(RawIndustryJob industryJob) {\r\n\t\tthis(industryJob.getLicensedRuns(), null, null);\r\n\t}\r\n\r\n\tpublic MyBlueprint(Integer runs, Integer materialEfficiency, Integer timeEfficiency) {\r\n\t\tthis.runs = notNull(runs);\r\n\t\tthis.materialEfficiency = notNull(materialEfficiency);\r\n\t\tthis.timeEfficiency = notNull(timeEfficiency);\r\n\t}\r\n\r\n\tprivate int notNull(Integer value) {\r\n\t\tif (value != null) {\r\n\t\t\treturn value;\r\n\t\t} else {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic int getRuns() {\r\n\t\treturn runs;\r\n\t}\r\n\r\n\tpublic int getMaterialEfficiency() {\r\n\t\treturn materialEfficiency;\r\n\t}\r\n\r\n\tpublic int getTimeEfficiency() {\r\n\t\treturn timeEfficiency;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 5;\r\n\t\thash = 23 * hash + this.runs;\r\n\t\thash = 23 * hash + this.materialEfficiency;\r\n\t\thash = 23 * hash + this.timeEfficiency;\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal MyBlueprint other = (MyBlueprint) obj;\r\n\t\tif (this.runs != other.runs) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (this.materialEfficiency != other.materialEfficiency) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn this.timeEfficiency == other.timeEfficiency;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/my/MyContract.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.my;\r\n\r\nimport java.util.Date;\r\nimport java.util.HashSet;\r\nimport java.util.Objects;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawContract;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.data.settings.types.LocationsType;\r\nimport net.nikr.eve.jeveasset.data.settings.types.OwnersType;\r\nimport net.nikr.eve.jeveasset.i18n.TabsContracts;\r\nimport net.nikr.eve.jeveasset.data.settings.types.EsiType;\r\n\r\npublic class MyContract extends RawContract implements Comparable<MyContract>, LocationsType, OwnersType, EsiType {\r\n\r\n\tprivate MyLocation endLocation;\r\n\tprivate MyLocation startLocation;\r\n\tprivate String acceptor = \"\";\r\n\tprivate String assignee = \"\";\r\n\tprivate String issuerCorp = \"\";\r\n\tprivate String issuer = \"\";\r\n\tprivate final Set<Long> owners = new HashSet<>();\r\n\tprivate boolean esi = true;\r\n\tprivate boolean owned;\r\n\r\n\tprivate boolean issuerAfterAssets = false;\r\n\tprivate boolean acceptorAfterAssets = false;\r\n\r\n\tpublic MyContract(RawContract rawContract) {\r\n\t\tsuper(rawContract);\r\n\t\tthis.owners.add(getIssuerID());\r\n\t\tthis.owners.add(getIssuerCorpID());\r\n\t\tthis.owners.add(getAssigneeID());\r\n\t\tthis.owners.add(getAcceptorID());\r\n\t\tthis.owned = !rawContract.isForCorp();\r\n\t}\r\n\r\n\tpublic String getTypeName() {\r\n\t\tswitch (getType()) {\r\n\t\t\tcase AUCTION:\r\n\t\t\t\treturn TabsContracts.get().auction();\r\n\t\t\tcase COURIER:\r\n\t\t\t\treturn TabsContracts.get().courier();\r\n\t\t\tcase ITEM_EXCHANGE:\r\n\t\t\t\treturn TabsContracts.get().itemExchange();\r\n\t\t\tcase LOAN:\r\n\t\t\t\treturn TabsContracts.get().loan();\r\n\t\t\tdefault:\r\n\t\t\t\treturn TabsContracts.get().unknown();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic String getAcceptor() {\r\n\t\tif (acceptor.isEmpty()) {\r\n\t\t\treturn TabsContracts.get().notAccepted();\r\n\t\t} else {\r\n\t\t\treturn acceptor;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic String getAssignee() {\r\n\t\tif (assignee.isEmpty()) {\r\n\t\t\treturn TabsContracts.get().publicContract();\r\n\t\t} else {\r\n\t\t\treturn assignee;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic String getIssuerCorp() {\r\n\t\treturn issuerCorp;\r\n\t}\r\n\r\n\tpublic String getIssuer() {\r\n\t\treturn issuer;\r\n\t}\r\n\r\n\tpublic void setAcceptor(String acceptor) {\r\n\t\tthis.acceptor = acceptor;\r\n\t}\r\n\r\n\tpublic void setAssignee(String assignee) {\r\n\t\tthis.assignee = assignee;\r\n\t}\r\n\r\n\tpublic void setIssuerCorp(String issuerCorp) {\r\n\t\tthis.issuerCorp = issuerCorp;\r\n\t}\r\n\r\n\tpublic void setIssuer(String issuer) {\r\n\t\tthis.issuer = issuer;\r\n\t}\r\n\r\n\tpublic MyLocation getEndLocation() {\r\n\t\treturn endLocation;\r\n\t}\r\n\r\n\tpublic boolean isIssuerAfterAssets() {\r\n\t\treturn issuerAfterAssets;\r\n\t}\r\n\r\n\tpublic void setIssuerAfterAssets(Date date) {\r\n\t\tif (date != null && isCompletedSuccessful()) {\r\n\t\t\tthis.issuerAfterAssets = getDateCompleted().after(date);\r\n\t\t} else {\r\n\t\t\tthis.issuerAfterAssets = false;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic boolean isAcceptorAfterAssets() {\r\n\t\treturn acceptorAfterAssets;\r\n\t}\r\n\r\n\tpublic void setAcceptorAfterAssets(Date date) {\r\n\t\tif (date != null && isCompletedSuccessful()) {\r\n\t\t\tthis.acceptorAfterAssets = getDateCompleted().after(date);\r\n\t\t} else {\r\n\t\t\tthis.acceptorAfterAssets = false;\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Set<MyLocation> getLocations() {\r\n\t\tSet<MyLocation> locations = new HashSet<>();\r\n\t\tif (startLocation != null) {\r\n\t\t\tlocations.add(startLocation);\r\n\t\t}\r\n\t\tif (endLocation != null) {\r\n\t\t\tlocations.add(endLocation);\r\n\t\t}\r\n\t\treturn locations;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Set<Long> getOwners() {\r\n\t\treturn owners;\r\n\t}\r\n\r\n\tpublic final void setEndLocation(MyLocation endLocation) {\r\n\t\tthis.endLocation = endLocation;\r\n\t}\r\n\r\n\tpublic final void setStartLocation(MyLocation startLocation) {\r\n\t\tthis.startLocation = startLocation;\r\n\t}\r\n\r\n\tpublic MyLocation getStartLocation() {\r\n\t\treturn startLocation;\r\n\t}\r\n\r\n\tpublic boolean isCourierContract() {\r\n\t\treturn getType() == ContractType.COURIER;\r\n\t}\r\n\r\n\tpublic boolean isPublic() {\r\n\t\treturn getAvailability() == ContractAvailability.PUBLIC;\r\n\t}\r\n\r\n\tpublic boolean isItemContract() {\r\n\t\treturn getType() == ContractType.AUCTION || getType() == ContractType.ITEM_EXCHANGE;\r\n\t}\r\n\r\n\tpublic boolean isIgnoreContract() {\r\n\t\treturn getType() != ContractType.AUCTION && getType() != ContractType.ITEM_EXCHANGE;\r\n\t}\r\n\r\n\tpublic boolean isOpen() {\r\n\t\t//Note: expired isn't a contract completion\r\n\t\treturn getStatus() == ContractStatus.OUTSTANDING;\r\n\t}\r\n\r\n\tpublic boolean isInProgress() {\r\n\t\t//Note: expired isn't a contract completion\r\n\t\treturn getStatus() == ContractStatus.IN_PROGRESS;\r\n\t}\r\n\r\n\tpublic boolean isDeleted() {\r\n\t\treturn getStatus() == ContractStatus.DELETED;\r\n\t}\r\n\r\n\tpublic boolean isCompletedSuccessful() {\r\n\t\treturn getDateCompleted() != null;\r\n\t}\r\n\r\n\tpublic boolean isExpired() {\r\n\t\treturn Settings.getNow().after(getDateExpired());\r\n\t}\r\n\r\n\tpublic boolean isOwned() {\r\n\t\treturn owned;\r\n\t}\r\n\r\n\tpublic void setOwned(boolean owned) {\r\n\t\tthis.owned = owned;\r\n\t}\r\n\r\n\tpublic String getStatusFormatted() {\r\n\t\treturn getStatusName(super.getStatus());\r\n\t}\r\n\r\n\tpublic static String getStatusName(ContractStatus status) {\r\n\t\tswitch (status) {\r\n\t\t\tcase CANCELLED:\r\n\t\t\t\treturn TabsContracts.get().statusCancelled();\r\n\t\t\tcase FINISHED:\r\n\t\t\t\treturn TabsContracts.get().statusCompleted();\r\n\t\t\tcase FINISHED_CONTRACTOR:\r\n\t\t\t\treturn TabsContracts.get().statusCompletedByContractor();\r\n\t\t\tcase FINISHED_ISSUER:\r\n\t\t\t\treturn TabsContracts.get().statusCompletedByIssuer();\r\n\t\t\tcase DELETED:\r\n\t\t\t\treturn TabsContracts.get().statusDeleted();\r\n\t\t\tcase FAILED:\r\n\t\t\t\treturn TabsContracts.get().statusFailed();\r\n\t\t\tcase IN_PROGRESS:\r\n\t\t\t\treturn TabsContracts.get().statusInProgress();\r\n\t\t\tcase OUTSTANDING:\r\n\t\t\t\treturn TabsContracts.get().statusOutstanding();\r\n\t\t\tcase REJECTED:\r\n\t\t\t\treturn TabsContracts.get().statusRejected();\r\n\t\t\tcase REVERSED:\r\n\t\t\t\treturn TabsContracts.get().statusReversed();\r\n\t\t\tcase ARCHIVED:\r\n\t\t\t\treturn TabsContracts.get().statusArchived();\r\n\t\t\tdefault:\r\n\t\t\t\treturn TabsContracts.get().statusUnknown();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic String getAvailabilityFormatted() {\r\n\t\tif (isPublic()) {\r\n\t\t\treturn TabsContracts.get().availabilityPublic();\r\n\t\t} else {\r\n\t\t\treturn TabsContracts.get().availabilityPrivate();\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean archive() {\r\n\t\tboolean update = esi; //Update if in esi\r\n\t\tif (esi && (getStatus() == ContractStatus.OUTSTANDING || getStatus() == ContractStatus.IN_PROGRESS)) {\r\n\t\t\tsetStatus(ContractStatus.ARCHIVED);\r\n\t\t}\r\n\t\tthis.esi = false;\r\n\t\treturn update;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean isESI() {\r\n\t\treturn esi;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setESI(boolean esi) {\r\n\t\tthis.esi = esi;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 7;\r\n\t\thash = 71 * hash + Objects.hashCode(this.getContractID());\r\n\t\thash = 71 * hash + (int) (this.getIssuerID() ^ (this.getIssuerID() >>> 32));\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal MyContract other = (MyContract) obj;\r\n\t\tif (!Objects.equals(this.getContractID(), other.getContractID())) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn Objects.equals(this.getIssuerID(), other.getIssuerID());\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(MyContract o) {\r\n\t\treturn Integer.compare(this.getContractID(), o.getContractID());\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/my/MyContractItem.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.my;\r\n\r\nimport java.util.Objects;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawContractItem;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.settings.types.BlueprintType;\r\nimport net.nikr.eve.jeveasset.data.settings.types.EditablePriceType;\r\nimport net.nikr.eve.jeveasset.data.settings.types.ItemType;\r\nimport net.nikr.eve.jeveasset.data.settings.types.LocationsType;\r\nimport net.nikr.eve.jeveasset.data.settings.types.OwnersType;\r\nimport net.nikr.eve.jeveasset.gui.shared.CopyHandler.CopySeparator;\r\nimport net.nikr.eve.jeveasset.i18n.TabsContracts;\r\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\r\n\r\npublic class MyContractItem extends RawContractItem implements Comparable<MyContractItem>, LocationsType, ItemType, BlueprintType, EditablePriceType, CopySeparator, OwnersType {\r\n\r\n\tprivate MyContract contract;\r\n\tprivate final Item item;\r\n\tprivate double price;\r\n\r\n\tpublic MyContractItem(MyContract contract) {\r\n\t\tsuper(RawContractItem.create());\r\n\t\tthis.contract = contract;\r\n\t\tthis.item = new Item(0);\r\n\t\tsetIncluded(true);\r\n\t\tsetQuantity(0);\r\n\t\tsetRecordID(RawConverter.toLong(contract.getContractID()));\r\n\t\tsetSingleton(false);\r\n\t\tsetTypeID(0);\r\n\t\tsetRawQuantity(0);\r\n\t}\r\n\r\n\tpublic MyContractItem(RawContractItem rawContractItem, MyContract contract, Item item) {\r\n\t\tsuper(rawContractItem);\r\n\t\tthis.contract = contract;\r\n\t\tthis.item = item;\r\n\t}\r\n\r\n\tpublic MyContract getContract() {\r\n\t\treturn contract;\r\n\t}\r\n\r\n\tpublic void setContract(MyContract contract) {\r\n\t\tthis.contract = contract;\r\n\t}\r\n\r\n\tpublic String getIncluded() {\r\n\t\tif (getContract().isCourierContract()) {\r\n\t\t\treturn TabsContracts.get().courier();\r\n\t\t} else if (getTypeID() == 0) {\r\n\t\t\treturn TabsContracts.get().missing();\r\n\t\t} else if (isIncluded()) {\r\n\t\t\treturn TabsContracts.get().included();\r\n\t\t} else {\r\n\t\t\treturn TabsContracts.get().excluded();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic String getSingleton() {\r\n\t\tif (getContract().isCourierContract()) {\r\n\t\t\treturn TabsContracts.get().courier();\r\n\t\t} else if (getTypeID() == 0) {\r\n\t\t\treturn TabsContracts.get().missing();\r\n\t\t} else if (isSingleton()) {\r\n\t\t\treturn TabsContracts.get().unpackaged();\r\n\t\t} else {\r\n\t\t\treturn TabsContracts.get().packaged();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic String getName() {\r\n\t\tif (item.isEmpty()) {\r\n\t\t\treturn contract.getTypeName();\r\n\t\t} else {\r\n\t\t\treturn item.getTypeName();\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setDynamicPrice(double price) {\r\n\t\tthis.price = price;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Double getDynamicPrice() {\r\n\t\treturn price;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean isBPO() {\r\n\t\t//Blueprint && RawQuantity > -2\r\n\t\treturn (item.isBlueprint() && this.getRawQuantity() != null && this.getRawQuantity() > -2);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean isBPC() {\r\n\t\treturn (item.isBlueprint() && this.getRawQuantity() != null && this.getRawQuantity() == -2);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int getRuns() {\r\n\t\tInteger runs = getLicensedRuns();\r\n\t\tif (runs != null) {\r\n\t\t\treturn runs;\r\n\t\t} else if (isBPC()) {\r\n\t\t\treturn 1; //BPC\r\n\t\t} else if (isBPO()) {\r\n\t\t\treturn -1; //BPO\r\n\t\t} else {\r\n\t\t\treturn 0; //Default unknown\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int getMaterialEfficiency() {\r\n\t\tInteger materialEfficiency = getME();\r\n\t\tif (materialEfficiency != null) {\r\n\t\t\treturn materialEfficiency;\r\n\t\t} else {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int getTimeEfficiency() {\r\n\t\tInteger timeEfficiency = getTE();\r\n\t\tif (timeEfficiency != null) {\r\n\t\t\treturn timeEfficiency;\r\n\t\t} else {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Set<MyLocation> getLocations() {\r\n\t\treturn getContract().getLocations();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Set<Long> getOwners() {\r\n\t\treturn getContract().getOwners();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Item getItem() {\r\n\t\treturn item;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic long getItemCount() {\r\n\t\treturn getQuantity();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getCopyString() {\r\n\t\tStringBuilder builder = new StringBuilder();\r\n\t\tbuilder.append(getContract().getTitle());\r\n\t\tbuilder.append(\"\\t\");\r\n\t\tbuilder.append(getContract().getTypeName());\r\n\t\treturn builder.toString();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(MyContractItem o) {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 3;\r\n\t\thash = 37 * hash + (this.contract != null ? this.contract.hashCode() : 0);\r\n\t\thash = 37 * hash + (int) (getRecordID() ^ (getRecordID() >>> 32));\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal MyContractItem other = (MyContractItem) obj;\r\n\t\tif (this.contract != other.contract && (this.contract == null || !this.contract.equals(other.contract))) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn Objects.equals(this.getRecordID(), other.getRecordID());\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/my/MyExtraction.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.my;\r\n\r\nimport java.util.Objects;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawExtraction;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.settings.types.EditableLocationType;\r\n\r\n\r\npublic class MyExtraction extends RawExtraction implements EditableLocationType, Comparable<MyExtraction> {\r\n\r\n\tprivate final MyLocation moon;\r\n\tprivate MyLocation location;\r\n\r\n\tpublic MyExtraction(RawExtraction extraction, MyLocation moon) {\r\n\t\tsuper(extraction);\r\n\t\tthis.moon = moon;\r\n\t}\r\n\r\n\tpublic MyLocation getMoon() {\r\n\t\treturn moon;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic MyLocation getLocation() {\r\n\t\treturn location;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setLocation(MyLocation location) {\r\n\t\tthis.location = location;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic long getLocationID() {\r\n\t\treturn getStructureID();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(MyExtraction o) {\r\n\t\tint compared = o.getChunkArrivalTime().compareTo(this.getChunkArrivalTime());\r\n\t\tif (compared != 0) {\r\n\t\t\treturn compared;\r\n\t\t}\r\n\t\treturn this.moon.compareTo(o.moon);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 7;\r\n\t\thash = 59 * hash + Objects.hashCode(this.getExtractionStartTime());\r\n\t\thash = 59 * hash + Objects.hashCode(this.getMoonID());\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal RawExtraction other = (RawExtraction) obj;\r\n\t\tif (!Objects.equals(this.getExtractionStartTime(), other.getExtractionStartTime())) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn Objects.equals(this.getMoonID(), other.getMoonID());\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/my/MyIndustryJob.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.data.api.my;\n\nimport java.util.Date;\nimport java.util.HashSet;\nimport java.util.Objects;\nimport java.util.Set;\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\nimport net.nikr.eve.jeveasset.data.api.raw.RawIndustryJob;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.types.BlueprintType;\nimport net.nikr.eve.jeveasset.data.settings.types.EditableLocationType;\nimport net.nikr.eve.jeveasset.data.settings.types.EditablePriceType;\nimport net.nikr.eve.jeveasset.data.settings.types.EsiType;\nimport net.nikr.eve.jeveasset.data.settings.types.ItemType;\nimport net.nikr.eve.jeveasset.data.settings.types.OwnersType;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Duration;\nimport net.nikr.eve.jeveasset.i18n.DataModelIndustryJob;\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\n\npublic class MyIndustryJob extends RawIndustryJob implements Comparable<MyIndustryJob>, EditableLocationType, ItemType, EditablePriceType, BlueprintType, OwnersType, EsiType {\n\n\tpublic enum IndustryActivity {\n\t\tACTIVITY_ALL() {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DataModelIndustryJob.get().activityAll();\n\t\t\t}\n\t\t},\n\t\tACTIVITY_NONE() {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DataModelIndustryJob.get().activityNone();\n\t\t\t}\n\t\t},\n\t\tACTIVITY_MANUFACTURING() {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DataModelIndustryJob.get().activityManufacturing();\n\t\t\t}\n\t\t},\n\t\tACTIVITY_RESEARCHING_TECHNOLOGY() {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DataModelIndustryJob.get().activityResearchingTechnology();\n\t\t\t}\n\t\t},\n\t\tACTIVITY_RESEARCHING_TIME_PRODUCTIVITY() {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DataModelIndustryJob.get().activityResearchingTimeProductivity();\n\t\t\t}\n\t\t},\n\t\tACTIVITY_RESEARCHING_METERIAL_PRODUCTIVITY() {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DataModelIndustryJob.get().activityResearchingMeterialProductivity();\n\t\t\t}\n\t\t},\n\t\tACTIVITY_COPYING() {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DataModelIndustryJob.get().activityCopying();\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic String getDescriptionOf(final MyIndustryJob job) {\n\t\t\t\t// \"Copying: Xyz Blueprint making 5 copies with 1500 runs each.\"\n\t\t\t\treturn DataModelIndustryJob.get().descriptionCopying(\n\t\t\t\t\t\tString.valueOf(job.getBlueprintTypeID()),\n\t\t\t\t\t\tjob.getRuns(),\n\t\t\t\t\t\tjob.getLicensedRuns()\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\tACTIVITY_DUPLICATING() {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DataModelIndustryJob.get().activityDuplicating();\n\t\t\t}\n\t\t},\n\t\tACTIVITY_REVERSE_ENGINEERING() {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DataModelIndustryJob.get().activityReverseEngineering();\n\t\t\t}\n\t\t},\n\t\tACTIVITY_REVERSE_INVENTION() {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DataModelIndustryJob.get().activityReverseInvention();\n\t\t\t}\n\t\t},\n\t\tACTIVITY_REACTIONS() {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DataModelIndustryJob.get().activityReactions();\n\t\t\t}\n\t\t},\n\t\tACTIVITY_UNKNOWN() {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DataModelIndustryJob.get().activityUnknown();\n\t\t\t}\n\t\t};\n\n\t\tabstract String getI18N();\n\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\treturn getI18N();\n\t\t}\n\n\t\t/**\n\t\t *\n\t\t * @param job\n\t\t * @return a single line, human readable description of the job.\n\t\t */\n\t\tpublic String getDescriptionOf(final MyIndustryJob job) {\n\t\t\treturn toString();\n\t\t}\n\t}\n\n\tprivate IndustryActivity activity;\n\tprivate final Item item;\n\tprivate final Item output;\n\tprivate final OwnerType owner;\n\tprivate final String name;\n\tprivate final Set<Long> owners = new HashSet<>();\n\tprivate final int outputCount;\n\tprivate double price;\n\tprivate double outputValue;\n\tprivate String installer = \"\";\n\tprivate String completedCharacter = \"\";\n\tprivate MyBlueprint blueprint;\n\tprivate MyLocation location;\n\tprivate boolean esi = true;\n\tprivate boolean owned;\n\n\tpublic MyIndustryJob(final RawIndustryJob rawIndustryJob, final Item item, final Item output, final OwnerType owner) {\n\t\tsuper(rawIndustryJob);\n\t\tthis.item = item;\n\t\tthis.output = output;\n\t\tthis.owner = owner;\n\t\tthis.owners.add(getInstallerID());\n\t\tthis.owners.add(owner.getOwnerID());\n\t\tthis.owned = owner.isCharacter();\n\n\t\tswitch (getActivityID()) {\n\t\t\tcase 0:\n\t\t\t\tactivity = IndustryActivity.ACTIVITY_NONE;\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tactivity = IndustryActivity.ACTIVITY_MANUFACTURING;\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tactivity = IndustryActivity.ACTIVITY_RESEARCHING_TECHNOLOGY;\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tactivity = IndustryActivity.ACTIVITY_RESEARCHING_TIME_PRODUCTIVITY;\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\tactivity = IndustryActivity.ACTIVITY_RESEARCHING_METERIAL_PRODUCTIVITY;\n\t\t\t\tbreak;\n\t\t\tcase 5:\n\t\t\t\tactivity = IndustryActivity.ACTIVITY_COPYING;\n\t\t\t\tbreak;\n\t\t\tcase 6:\n\t\t\t\tactivity = IndustryActivity.ACTIVITY_DUPLICATING;\n\t\t\t\tbreak;\n\t\t\tcase 7:\n\t\t\t\tactivity = IndustryActivity.ACTIVITY_REVERSE_ENGINEERING;\n\t\t\t\tbreak;\n\t\t\tcase 8:\n\t\t\t\tactivity = IndustryActivity.ACTIVITY_REVERSE_INVENTION;\n\t\t\t\tbreak;\n\t\t\tcase 9:\n\t\t\t\tactivity = IndustryActivity.ACTIVITY_REACTIONS;\n\t\t\t\tbreak;\n\t\t\tcase 11:\n\t\t\t\tactivity = IndustryActivity.ACTIVITY_REACTIONS;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tactivity = IndustryActivity.ACTIVITY_UNKNOWN;\n\t\t\t\tbreak;\n\t\t}\n\t\tswitch (activity) {\n\t\t\tcase ACTIVITY_MANUFACTURING:\n\t\t\t\toutputCount = getRuns() * item.getProductQuantity();\n\t\t\t\tbreak;\n\t\t\tcase ACTIVITY_REACTIONS:\n\t\t\t\toutputCount = getRuns() * item.getProductQuantity();\n\t\t\t\tbreak;\n\t\t\tcase ACTIVITY_COPYING:\n\t\t\t\tif (getLicensedRuns() != null) {\n\t\t\t\t\toutputCount = getRuns() * getLicensedRuns();\n\t\t\t\t} else { //Should never happen, but, better safe than sorry\n\t\t\t\t\toutputCount = getRuns();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\toutputCount = 1;\n\t\t\t\tbreak;\n\t\t}\n\t\tthis.name = item.getTypeName();\n\t}\n\n\t@Override\n\tpublic int compareTo(final MyIndustryJob o) {\n\t\treturn 0;\n\t}\n\n\tpublic void setBlueprint(MyBlueprint blueprint) {\n\t\tthis.blueprint = blueprint;\n\t}\n\n\t@Override\n\tpublic boolean isBPO() {\n\t\tif (blueprint != null) {\n\t\t\treturn blueprint.getRuns() <= 0;\n\t\t} else {\n\t\t\treturn (getLicensedRuns() == null || getLicensedRuns() <= 0 //BPO should have value -1\n\t\t\t\t\t|| activity == IndustryActivity.ACTIVITY_COPYING //BPO only\n\t\t\t\t\t|| activity == IndustryActivity.ACTIVITY_RESEARCHING_METERIAL_PRODUCTIVITY //BPO only\n\t\t\t\t\t|| activity == IndustryActivity.ACTIVITY_RESEARCHING_TIME_PRODUCTIVITY) //BPO only\n\t\t\t\t\t&& activity != IndustryActivity.ACTIVITY_REVERSE_INVENTION //BPC only\n\t\t\t\t\t;\n\t\t}\n\t}\n\n\t@Override\n\tpublic boolean isBPC() {\n\t\treturn !isBPO();\n\t}\n\n\t@Override\n\tpublic int getMaterialEfficiency() {\n\t\tif (blueprint != null) {\n\t\t\treturn blueprint.getMaterialEfficiency();\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\t@Override\n\tpublic int getTimeEfficiency() {\n\t\tif (blueprint != null) {\n\t\t\treturn blueprint.getTimeEfficiency();\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\tpublic Duration getTimeLeft() {\n\t\tif (getEndDate() == null) {\n\t\t\treturn Duration.NEVER;\n\t\t}\n\t\tDate now = Settings.getNow();\n\t\tif (now.after(getEndDate())) {\n\t\t\treturn Duration.DONE;\n\t\t}\n\t\tlong time = getEndDate().getTime() - now.getTime();\n\t\tif (time <= 1000) { //less than 1 second\n\t\t\treturn new Duration(\"...\");\n\t\t} else if (time < (60 * 1000)) { //less than 1 minute\n\t\t\treturn new Duration(time, false, false, false, true);\n\t\t} else {\n\t\t\treturn new Duration(time, true, true, true, false);\n\t\t}\n\t}\n\n\t@Override\n\tpublic Integer getTypeID() {\n\t\treturn getBlueprintTypeID();\n\t}\n\n\tpublic final boolean isCompletedSuccessful() {\n\t\treturn getStatus() == IndustryJobStatus.DELIVERED;\n\t}\n\n\tpublic final boolean isDone() {\n\t\treturn getStatus() == IndustryJobStatus.DELIVERED\n\t\t\t\t|| getStatus() == IndustryJobStatus.CANCELLED\n\t\t\t\t|| getStatus() == IndustryJobStatus.REVERTED\n\t\t\t\t|| getStatus() == IndustryJobStatus.ARCHIVED //Status is unknown -> default to done > true\n\t\t\t\t;\n\t}\n\n\tpublic final boolean isNotDeliveredToAssets() {\n\t\treturn !isDone() //if not done ->  not delivered to assets -> true\n\t\t\t\t&& (owner.getAssetLastUpdate() == null //if null -> never updated -> not delivered to assets -> true\n\t\t\t\t|| getCompletedDate() == null //if null -> not completed -> not delivered to assets -> true\n\t\t\t\t|| owner.getAssetLastUpdate().before(getCompletedDate()) //if assets last updated before completed date -> not delivered to assets -> true\n\t\t\t\t);\n\t}\n\n\tpublic final boolean isRemovedFromAssets() {\n\t\treturn owner.getAssetLastUpdate() != null //if null -> never updated -> not removed from assets -> false\n\t\t\t\t&& getStartDate() != null //if null -> not started -> not removed from assets -> false\n\t\t\t\t&& owner.getAssetLastUpdate().after(getStartDate()); //if assets last updated after started date -> removed from assets -> true\n\t}\n\n\tpublic final boolean isManufacturing() {\n\t\treturn getActivity() == IndustryActivity.ACTIVITY_MANUFACTURING || getActivity() == IndustryActivity.ACTIVITY_REACTIONS;\n\t}\n\n\tpublic final boolean isCopying() {\n\t\treturn getActivity() == IndustryActivity.ACTIVITY_COPYING;\n\t}\n\n\tpublic final boolean isInvention() {\n\t\treturn getActivity() == IndustryActivity.ACTIVITY_REVERSE_INVENTION;\n\t}\n\n\tpublic boolean isOwned() {\n\t\treturn owned;\n\t}\n\n\tpublic void setOwned(boolean owned) {\n\t\tthis.owned = owned;\n\t}\n\n\tpublic IndustryActivity getActivity() {\n\t\treturn activity;\n\t}\n\n\tpublic boolean isExpired() {\n\t\treturn getEndDate().before(Settings.getNow());\n\t}\n\n\t@Override\n\tpublic IndustryJobStatus getStatus() {\n\t\t//Update READY (may have changed after loading profile)\n\t\tif (isExpired() && super.getStatus() == IndustryJobStatus.ACTIVE) {\n\t\t\tsetStatus(IndustryJobStatus.READY);\n\t\t}\n\t\treturn super.getStatus();\n\t}\n\n\tpublic String getStatusFormatted() {\n\t\treturn getStatusName(getStatus(), isExpired());\n\t}\n\n\tpublic static String getStatusName(IndustryJobStatus status) {\n\t\treturn getStatusName(status, false);\n\t}\n\n\tpublic static String getStatusName(IndustryJobStatus status, boolean expired) {\n\t\tswitch (status) {\n\t\t\t\tcase ACTIVE: //Active\n\t\t\t\t\tif (expired) {\n\t\t\t\t\t\treturn DataModelIndustryJob.get().statusDone();\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn DataModelIndustryJob.get().statusActive();\n\t\t\t\t\t}\n\t\t\t\tcase PAUSED:\n\t\t\t\t\treturn DataModelIndustryJob.get().statusPaused();\n\t\t\t\tcase READY:\n\t\t\t\t\treturn DataModelIndustryJob.get().statusDone();\n\t\t\t\tcase DELIVERED:\n\t\t\t\t\treturn DataModelIndustryJob.get().statusDelivered();\n\t\t\t\tcase CANCELLED:\n\t\t\t\t\treturn DataModelIndustryJob.get().statusCancelled();\n\t\t\t\tcase REVERTED:\n\t\t\t\t\treturn DataModelIndustryJob.get().statusReverted();\n\t\t\t\tcase ARCHIVED:\n\t\t\t\t\treturn DataModelIndustryJob.get().statusArchived();\n\t\t\t\tdefault:\n\t\t\t\t\treturn DataModelIndustryJob.get().statusUnknown();\n\t\t\t}\n\t}\n\n\n\t@Override\n\tpublic void setDynamicPrice(double price) {\n\t\tthis.price = price;\n\t}\n\n\t@Override\n\tpublic Double getDynamicPrice() {\n\t\treturn price;\n\t}\n\n\tpublic double getOutputValue() {\n\t\treturn outputValue;\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic void setOutputPrice(double outputPrice) {\n\t\tif (isManufacturing()) {\n\t\t\tthis.outputValue = outputPrice * getRuns() * getProductQuantity();\n\t\t} else if (isCopying() && getLicensedRuns() != null) {\n\t\t\tthis.outputValue = outputPrice * getRuns() * getLicensedRuns();\n\t\t} else {\n\t\t\tthis.outputValue = 0;\n\t\t}\n\t}\n\n\tpublic int getOutputCount() {\n\t\treturn outputCount;\n\t}\n\n\tpublic Item getOutputItem() {\n\t\treturn output;\n\t}\n\n\tpublic double getOutputVolume() {\n\t\tif (isCopying()) {\n\t\t\treturn output.getVolumePackaged() * getRuns(); // Volume of the output blueprints (bp runs should not be counted)\n\t\t} else {\n\t\t\treturn output.getVolumePackaged() * outputCount;\n\t\t}\n\t}\n\n\tpublic String getInstaller() {\n\t\treturn installer;\n\t}\n\n\tpublic void setInstaller(String installer) {\n\t\tthis.installer = installer;\n\t}\n\n\tpublic String getCompletedCharacter() {\n\t\treturn completedCharacter;\n\t}\n\n\tpublic void setCompletedCharacter(String completedCharacter) {\n\t\tthis.completedCharacter = completedCharacter;\n\t}\n\n\t@Override\n\tpublic Set<Long> getOwners() {\n\t\treturn owners;\n\t}\n\n\t@Override\n\tpublic long getLocationID() {\n\t\tif (ApiIdConverter.isLocationOK(getStationID())) {\n\t\t\treturn getStationID();\n\t\t}\n\t\tif (ApiIdConverter.isLocationOK(getBlueprintLocationID())) {\n\t\t\treturn getBlueprintLocationID();\n\t\t}\n\t\tif (ApiIdConverter.isLocationOK(getOutputLocationID())) {\n\t\t\treturn getOutputLocationID();\n\t\t}\n\t\treturn getStationID();\n\t}\n\n\t@Override\n\tpublic MyLocation getLocation() {\n\t\treturn location;\n\t}\n\n\t@Override\n\tpublic void setLocation(MyLocation location) {\n\t\tthis.location = location;\n\t}\n\n\tpublic OwnerType getOwner() {\n\t\treturn owner;\n\t}\n\n\tpublic String getOwnerName() {\n\t\treturn owner.getOwnerName();\n\t}\n\n\tpublic long getOwnerID() {\n\t\treturn owner.getOwnerID();\n\t}\n\n\tpublic int getProductQuantity() {\n\t\treturn item.getProductQuantity();\n\t}\n\n\t@Override\n\tpublic boolean archive() {\n\t\tboolean update = esi; //Update if in esi\n\t\tif (esi && (getStatus() == IndustryJobStatus.READY || getStatus() == IndustryJobStatus.ACTIVE)) {\n\t\t\tsetStatus(IndustryJobStatus.ARCHIVED);\n\t\t}\n\t\tthis.esi = false;\n\t\treturn update;\n\t}\n\n\t@Override\n\tpublic boolean isESI() {\n\t\treturn esi;\n\t}\n\n\t@Override\n\tpublic void setESI(boolean esi) {\n\t\tthis.esi = esi;\n\t}\n\n\t@Override\n\tpublic Item getItem() {\n\t\treturn item;\n\t}\n\n\t@Override\n\tpublic long getItemCount() {\n\t\treturn 1; //Just one blueprint here\n\t}\n\n\t@Override\n\tpublic int hashCode() {\n\t\tint hash = 5;\n\t\thash = 37 * hash + Objects.hashCode(this.getJobID());\n\t\thash = 37 * hash + (int) (this.owner.getOwnerID() ^ (this.owner.getOwnerID() >>> 32));\n\t\treturn hash;\n\t}\n\n\t@Override\n\tpublic boolean equals(Object obj) {\n\t\tif (this == obj) {\n\t\t\treturn true;\n\t\t}\n\t\tif (obj == null) {\n\t\t\treturn false;\n\t\t}\n\t\tif (getClass() != obj.getClass()) {\n\t\t\treturn false;\n\t\t}\n\t\tfinal MyIndustryJob other = (MyIndustryJob) obj;\n\t\tif (!Objects.equals(this.getJobID(), other.getJobID())) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.owner.getOwnerID() == other.owner.getOwnerID();\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/my/MyJournal.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.my;\r\n\r\nimport java.util.Date;\r\nimport java.util.HashSet;\r\nimport java.util.Objects;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournal;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournalRefType;\r\nimport net.nikr.eve.jeveasset.data.settings.tag.TagID;\r\nimport net.nikr.eve.jeveasset.data.settings.tag.Tags;\r\nimport net.nikr.eve.jeveasset.data.settings.types.OwnersType;\r\nimport net.nikr.eve.jeveasset.data.settings.types.TagsType;\r\nimport net.nikr.eve.jeveasset.gui.tabs.journal.JournalTab;\r\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\r\n\r\npublic class MyJournal extends RawJournal implements Comparable<MyJournal>, OwnersType, TagsType {\r\n\r\n\tprivate static final String CORP = \"(Corporation)\";\r\n\r\n\tprivate final OwnerType owner;\r\n\tprivate final Set<Long> owners = new HashSet<>();\r\n\tprivate String firstPartyName = \"\";\r\n\tprivate String secondPartyName = \"\";\r\n\tprivate Date added;\r\n\tprivate String context = null;\r\n\tprivate Tags tags;\r\n\r\n\tpublic MyJournal(RawJournal rawJournal, OwnerType owner) {\r\n\t\tsuper(rawJournal);\r\n\t\tthis.owner = owner;\r\n\t\towners.add(owner.getOwnerID());\r\n\t\towners.add(RawConverter.toLong(getFirstPartyID()));\r\n\t\towners.add(RawConverter.toLong(getSecondPartyID()));\r\n\t}\r\n\r\n\tpublic int getAccountKeyFormatted() {\r\n\t\treturn getAccountKey() - 999;\r\n\t}\r\n\r\n\tpublic String getOwnerName() {\r\n\t\treturn owner.getOwnerName();\r\n\t}\r\n\r\n\tpublic String getRefTypeFormatted() {\r\n\t\tRawJournalRefType refType = getRefType();\r\n\t\tif (refType != null) {\r\n\t\t\treturn capitalizeAll(refType.name().replace(\"_CORP_\", CORP).replace('_', ' '));\r\n\t\t} else {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t}\r\n\r\n\tpublic String getFirstPartyName() {\r\n\t\treturn firstPartyName;\r\n\t}\r\n\r\n\tpublic void setFirstPartyName(String firstPartyName) {\r\n\t\tthis.firstPartyName = firstPartyName;\r\n\t}\r\n\r\n\tpublic String getSecondPartyName() {\r\n\t\treturn secondPartyName;\r\n\t}\r\n\r\n\tpublic void setSecondPartyName(String secondPartyName) {\r\n\t\tthis.secondPartyName = secondPartyName;\r\n\t}\r\n\r\n\tprivate String capitalize(String s) {\r\n\t\tif (s.length() == 0) {\r\n\t\t\treturn s;\r\n\t\t}\r\n\t\tif (s.equals(CORP)) {\r\n\t\t\treturn s;\r\n\t\t}\r\n\t\treturn s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Set<Long> getOwners() {\r\n\t\treturn owners;\r\n\t}\r\n\r\n\tpublic Date getAdded() {\r\n\t\treturn added;\r\n\t}\r\n\r\n\tpublic void setAdded(Date added) {\r\n\t\tthis.added = added;\r\n\t}\r\n\r\n\tpublic String getContext() {\r\n\t\treturn context;\r\n\t}\r\n\r\n\tpublic void setContext(String context) {\r\n\t\tthis.context = context;\r\n\t}\r\n\r\n\tprivate String capitalizeAll(String in) {\r\n\t\tString[] words = in.split(\"\\\\s\");\r\n\t\tStringBuilder builder = new StringBuilder();\r\n\t\tfor (String word : words) {\r\n\t\t\tif (builder.length() > 0) {\r\n\t\t\t\tbuilder.append(' ');\r\n\t\t\t}\r\n\r\n\t\t\tbuilder.append(capitalize(word));\r\n\t\t}\r\n\t\treturn builder.toString();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Tags getTags() {\r\n\t\treturn tags;\r\n\t}\r\n\r\n\tprivate double getAmountNotNull() {\r\n\t\tDouble amount = getAmount();\r\n\t\tif (amount != null) {\r\n\t\t\treturn amount;\r\n\t\t} else {\r\n\t\t\treturn 0.0;\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic TagID getTagID() {\r\n\t\treturn new TagID(JournalTab.NAME, getRefID(), getAmountNotNull());\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setTags(Tags tags) {\r\n\t\tthis.tags = tags;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(MyJournal o) {\r\n\t\tint compared = o.getDate().compareTo(this.getDate());\r\n\t\tif (compared != 0) {\r\n\t\t\treturn compared;\r\n\t\t} else {\r\n\t\t\treturn Double.compare(o.getAmount(), this.getAmount());\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 7;\r\n\t\thash = 83 * hash + Objects.hashCode(this.getAmount());\r\n\t\thash = 83 * hash + Objects.hashCode(this.getRefID());\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal RawJournal other = (RawJournal) obj;\r\n\t\tif (!Objects.equals(this.getAmount(), other.getAmount())) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (!Objects.equals(this.getRefID(), other.getRefID())) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/my/MyLoyaltyPoints.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.data.api.my;\r\n\r\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawLoyaltyPoints;\r\nimport net.nikr.eve.jeveasset.data.settings.types.CorporationType;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.TextIcon;\r\nimport net.nikr.eve.jeveasset.io.online.EveImageGetter.ImageSize;\r\n\r\n\r\npublic class MyLoyaltyPoints extends RawLoyaltyPoints implements Comparable<MyLoyaltyPoints>, CorporationType {\r\n\r\n\tpublic static ImageSize IMAGE_SIZE = ImageSize.SIZE_32;\r\n\r\n\tprivate final OwnerType owner;\r\n\tprivate String corporationName = \"\";\r\n\tprivate TextIcon textIcon = null;\r\n\t\r\n\tpublic MyLoyaltyPoints(RawLoyaltyPoints rawLoyaltyPoints, OwnerType owner) {\r\n\t\tsuper(rawLoyaltyPoints);\r\n\t\tthis.owner = owner;\r\n\t}\r\n\r\n\tpublic String getOwnerName() {\r\n\t\treturn owner.getOwnerName();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getCorporationName() {\r\n\t\treturn corporationName;\r\n\t}\r\n\r\n\tpublic void setCorporationName(String corporationName) {\r\n\t\tthis.corporationName = corporationName;\r\n\t}\r\n\r\n\tpublic TextIcon getTextIcon() {\r\n\t\tif (textIcon == null) {\r\n\t\t\ttextIcon = new TextIcon(Images.getIcon(this), corporationName);\r\n\t\t}\r\n\t\treturn textIcon;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(MyLoyaltyPoints o) {\r\n\t\tint comp = this.getOwnerName().compareTo(o.getOwnerName());\r\n\t\tif (comp != 0) {\r\n\t\t\treturn comp;\r\n\t\t}\r\n\t\treturn this.getCorporationName().compareTo(o.getCorporationName());\r\n\t\t\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/my/MyMarketOrder.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.data.api.my;\n\nimport java.util.Calendar;\nimport java.util.Collections;\nimport java.util.Date;\nimport java.util.Objects;\nimport java.util.Set;\nimport javax.management.timer.Timer;\nimport javax.swing.JButton;\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.data.settings.PriceData;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.types.BlueprintType;\nimport net.nikr.eve.jeveasset.data.settings.types.EditableLocationType;\nimport net.nikr.eve.jeveasset.data.settings.types.EditablePriceType;\nimport net.nikr.eve.jeveasset.data.settings.types.EsiType;\nimport net.nikr.eve.jeveasset.data.settings.types.ItemType;\nimport net.nikr.eve.jeveasset.data.settings.types.LastTransactionType;\nimport net.nikr.eve.jeveasset.data.settings.types.MarketDetailType;\nimport net.nikr.eve.jeveasset.data.settings.types.OwnersType;\nimport net.nikr.eve.jeveasset.gui.shared.components.JButtonComparable;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Percent;\nimport net.nikr.eve.jeveasset.gui.tabs.orders.Outbid;\nimport net.nikr.eve.jeveasset.i18n.TabsOrders;\n\npublic class MyMarketOrder extends RawMarketOrder implements Comparable<MyMarketOrder>, EditableLocationType, ItemType, BlueprintType, EditablePriceType, OwnersType, LastTransactionType, MarketDetailType, EsiType {\n\n\tprivate final Item item;\n\tprivate final OwnerType owner;\n\tprivate final Set<Long> owners;\n\tprivate MyLocation location;\n\tprivate double price;\n\tprivate PriceData priceData = new PriceData();\n\tprivate double transactionPrice;\n\tprivate double transactionProfitDifference;\n\tprivate Percent transactionProfitPercent;\n\tprivate String issuedByName = \"\";\n\tprivate Double brokersFee;\n\tprivate Outbid outbid;\n\tprivate boolean outbidOwned = false;\n\tprivate boolean esi = true;\n\tprivate boolean owned;\n\t//soft init\n\tprivate JButton jButton;\n\n\tpublic MyMarketOrder(final RawMarketOrder rawMarketOrder, final Item item, final OwnerType owner) {\n\t\tsuper(rawMarketOrder);\n\t\tthis.item = item;\n\t\tthis.owner = owner;\n\t\tthis.owners = Collections.singleton(owner.getOwnerID());\n\t\tthis.owned = !rawMarketOrder.isCorp();\n\t}\n\n\t@Override\n\tpublic boolean archive() {\n\t\tboolean update = esi; //Update if in esi\n\t\tif (esi && getState() == MarketOrderState.OPEN) { //Only do once, as the user can set the state to open\n\t\t\tsetState(MarketOrderState.UNKNOWN);\n\t\t}\n\t\tesi = false;\n\t\treturn update;\n\t}\n\n\t@Override\n\tpublic int compareTo(final MyMarketOrder o) {\n\t\treturn Long.compare(o.getOrderID(), this.getOrderID());\n\t}\n\n\t@Override\n\tpublic boolean isESI() {\n\t\treturn esi;\n\t}\n\n\t@Override\n\tpublic void setESI(boolean esi) {\n\t\tthis.esi = esi;\n\t}\n\n\tpublic Date getExpires() {\n\t\tlong expires = (this.getIssued().getTime() + ((this.getDuration()) * Timer.ONE_DAY));\n\t\treturn new Date(expires);\n\t}\n\n\tpublic final boolean isExpired() {\n\t\treturn getExpires().before(new Date());\n\t}\n\n\tpublic final boolean isNearExpired() {\n\t\tCalendar cal = Calendar.getInstance();\n\t\tcal.add(Calendar.DATE, Settings.get().getMarketOrdersSettings().getExpireWarnDays());\n\t\treturn getExpires().before(cal.getTime());\n\t}\n\n\tpublic final boolean isNearFilled() {\n\t\t//How much do we want to worry about precision vs cost of converting to doubles for possibly\n\t\t//thousands of orders in history, if we want more accuracy cast to doubles first and change\n\t\t//comparison to Double.compare\n\n\t\t//Multiply by 100 since we are dealing with percents as integers.\n\t\t//This will be slightly inaccurate since int are essentially floored if they have a remainder.\n\t\treturn ( (getVolumeRemain() * 100) / getVolumeTotal() <= Settings.get().getMarketOrdersSettings().getRemainingWarnPercent());\n\t}\n\n\tpublic boolean isActive() {\n\t\treturn getState() == MarketOrderState.OPEN && !isExpired();\n\t}\n\n\tpublic boolean isOwned() {\n\t\treturn owned;\n\t}\n\n\tpublic void setOwned(boolean owned) {\n\t\tthis.owned = owned;\n\t}\n\n\t@Override\n\tpublic boolean isBPC() {\n\t\treturn false; //Market Orders are always BPO\n\t}\n\n\t@Override\n\tpublic boolean isBPO() {\n\t\treturn item.isBlueprint();\n\t}\n\n\t@Override\n\tpublic int getRuns() {\n\t\treturn -1; //BPO - Can not sell BPC\n\t}\n\n\t@Override\n\tpublic int getMaterialEfficiency() {\n\t\treturn 0; //Zero - Can not sell researched blueprints\n\t}\n\n\t@Override\n\tpublic int getTimeEfficiency() {\n\t\treturn 0; //Zero - Can not sell researched blueprints\n\t}\n\n\t@Override\n\tpublic void setDynamicPrice(double price) {\n\t\tthis.price = price;\n\t}\n\n\t@Override\n\tpublic Double getDynamicPrice() {\n\t\treturn price;\n\t}\n\n\t@Override\n\tpublic double getTransactionPrice() {\n\t\treturn transactionPrice;\n\t}\n\n\t@Override\n\tpublic double getTransactionProfitDifference() {\n\t\treturn transactionProfitDifference;\n\t}\n\n\t@Override\n\tpublic Percent getTransactionProfitPercent() {\n\t\treturn transactionProfitPercent;\n\t}\n\n\t@Override\n\tpublic void setTransactionPrice(double transactionPrice) {\n\t\tthis.transactionPrice = transactionPrice;\n\t}\n\n\t@Override\n\tpublic void setTransactionProfit(double transactionProfitDifference) {\n\t\tthis.transactionProfitDifference = transactionProfitDifference;\n\t}\n\n\t@Override\n\tpublic void setTransactionProfitPercent(Percent transactionProfitPercent) {\n\t\tthis.transactionProfitPercent = transactionProfitPercent;\n\t}\n\n\tpublic double getMarketMargin() {\n\t\tif (getDynamicPrice() > 0 && getPrice() > 0) {\n\t\t\tif (isBuyOrder()) {\n\t\t\t\treturn (getDynamicPrice() - getPrice()) / getDynamicPrice();\n\t\t\t} else {\n\t\t\t\treturn (getPrice() - getDynamicPrice()) / getPrice();\n\t\t\t}\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\tpublic double getMarketProfit() {\n\t\tif (isBuyOrder()) {\n\t\t\treturn getDynamicPrice() - getPrice();\n\t\t} else {\n\t\t\treturn getPrice() - getDynamicPrice();\n\t\t}\n\t}\n\n\tpublic Date getCreatedOrIssued() {\n\t\tif (!getChanges().isEmpty()) {\n\t\t\treturn getChanges().iterator().next().getDate();\n\t\t} else {\n\t\t\treturn getIssued();\n\t\t}\n\t}\n\n\t@Override\n\tpublic Item getItem() {\n\t\treturn item;\n\t}\n\n\t@Override\n\tpublic long getItemCount() {\n\t\treturn getVolumeRemain();\n\t}\n\n\t@Override\n\tpublic MyLocation getLocation() {\n\t\treturn location;\n\t}\n\n\t@Override\n\tpublic Set<Long> getOwners() {\n\t\treturn owners;\n\t}\n\n\t@Override\n\tpublic void setLocation(MyLocation location) {\n\t\tthis.location = location;\n\t}\n\n\tpublic String getIssuedByName() {\n\t\treturn issuedByName;\n\t}\n\n\tpublic void setIssuedByName(String issuedByName) {\n\t\tthis.issuedByName = issuedByName;\n\t}\n\n\tpublic OwnerType getOwner() {\n\t\treturn owner;\n\t}\n\n\tpublic String getOwnerName() {\n\t\treturn owner.getOwnerName();\n\t}\n\n\tpublic long getOwnerID() {\n\t\treturn owner.getOwnerID();\n\t}\n\n\tpublic String getStateFormatted() {\n\t\tif ((isExpired() && getState() == MarketOrderState.UNKNOWN) //expired (status may be out-of-date)\n\t\t\t\t|| getState() == MarketOrderState.EXPIRED) {\n\t\t\tif (this.getVolumeRemain() == 0) {\n\t\t\t\treturn TabsOrders.get().statusFulfilled();\n\t\t\t} else if (Objects.equals(this.getVolumeRemain(), this.getVolumeTotal())) {\n\t\t\t\treturn TabsOrders.get().statusExpired();\n\t\t\t} else {\n\t\t\t\treturn TabsOrders.get().statusPartiallyFulfilled();\n\t\t\t}\n\t\t} else {\n\t\t\treturn getStateName(getState());\n\t\t}\n\t}\n\n\tpublic static String getStateName(MarketOrderState state) {\n\t\tswitch (state) {\n\t\t\tcase OPEN: //open/active\n\t\t\t\treturn TabsOrders.get().statusActive();\n\t\t\tcase CLOSED: //closed\n\t\t\t\treturn TabsOrders.get().statusClosed();\n\t\t\tcase EXPIRED: //expired (or fulfilled)\n\t\t\t\treturn TabsOrders.get().statusExpired();\n\t\t\tcase CANCELLED: //cancelled\n\t\t\t\treturn TabsOrders.get().statusCancelled();\n\t\t\tcase PENDING: //pending\n\t\t\t\treturn TabsOrders.get().statusPending();\n\t\t\tcase CHARACTER_DELETED: //character deleted\n\t\t\t\treturn TabsOrders.get().statusCharacterDeleted();\n\t\t\tcase UNKNOWN: //Unknown or Auto Closed\n\t\t\t\treturn TabsOrders.get().statusUnknown();\n\t\t\tdefault:\n\t\t\t\treturn TabsOrders.get().statusUnknown();\n\t\t}\n\t}\n\n\tpublic boolean isCorporation() {\n\t\treturn owner.isCorporation();\n\t}\n\n\tpublic Double getBrokersFee() {\n\t\treturn brokersFee;\n\t}\n\n\tpublic Double getBrokersFeeNotNull() {\n\t\tif (brokersFee != null) {\n\t\t\treturn brokersFee;\n\t\t} else {\n\t\t\treturn 0.0;\n\t\t}\n\t}\n\n\tpublic void setBrokersFee(Double brokerFee) {\n\t\tthis.brokersFee = brokerFee;\n\t}\n\n\tpublic boolean isOutbid() {\n\t\tif (outbid == null) {\n\t\t\treturn false;\n\t\t}\n\t\treturn outbid.getCount() > 0;\n\t}\n\n\tpublic boolean isOutbidOwned() {\n\t\treturn outbidOwned;\n\t}\n\n\tpublic void setOutbidOwned(boolean outbidOwned) {\n\t\tthis.outbidOwned = outbidOwned;\n\t}\n\t\n\tpublic boolean haveOutbid() {\n\t\treturn outbid != null;\n\t}\n\n\tpublic Double getOutbidPrice() {\n\t\tif (outbid == null) {\n\t\t\treturn null;\n\t\t}\n\t\treturn outbid.getPrice();\n\t}\n\n\tpublic Long getOutbidCount() {\n\t\tif (outbid == null) {\n\t\t\treturn null;\n\t\t}\n\t\treturn outbid.getCount();\n\t}\n\n\tpublic Double getOutbidDelta() {\n\t\tif (outbid == null) {\n\t\t\treturn null;\n\t\t}\n\t\tif (isBuyOrder()) {\n\t\t\treturn getPrice() - outbid.getPrice();\n\t\t} else {\n\t\t\treturn outbid.getPrice() - getPrice();\n\t\t}\n\t}\n\n\tpublic void setOutbid(Outbid outbid) {\n\t\tthis.outbid = outbid;\n\t}\n\n\tpublic double getPriceReprocessed() {\n\t\treturn item.getPriceReprocessed();\n\t}\n\n\tpublic void setPriceData(PriceData priceData) {\n\t\tthis.priceData = priceData;\n\t}\n\n\tpublic double getPriceBuyMax() {\n\t\treturn priceData.getBuyMax();\n\t}\n\n\tpublic double getPriceSellMin() {\n\t\treturn priceData.getSellMin();\n\t}\n\n\t@Override\n\tpublic JButton getButton() {\n\t\tif (jButton == null) {\n\t\t\tjButton = new JButtonComparable(TabsOrders.get().eveUiOpen());\n\t\t}\n\t\treturn jButton;\n\t}\n\n\t@Override\n\tpublic int hashCode() {\n\t\tint hash = 7;\n\t\thash = 89 * hash + Objects.hashCode(this.getOrderID()); //OrderID is globaly unique\n\t\treturn hash;\n\t}\n\n\t@Override\n\tpublic boolean equals(Object obj) {\n\t\tif (this == obj) {\n\t\t\treturn true;\n\t\t}\n\t\tif (obj == null) {\n\t\t\treturn false;\n\t\t}\n\t\tif (getClass() != obj.getClass()) {\n\t\t\treturn false;\n\t\t}\n\t\tfinal MyMarketOrder other = (MyMarketOrder) obj;\n\t\treturn Objects.equals(this.getOrderID(), other.getOrderID()); //OrderID is globaly unique\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/my/MyMining.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.my;\r\n\r\nimport java.util.Objects;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawMining;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.settings.types.EditableLocationType;\r\nimport net.nikr.eve.jeveasset.data.settings.types.EditablePriceType;\r\nimport net.nikr.eve.jeveasset.data.settings.types.ItemType;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo.InfoItem;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.DateOnly;\r\n\r\n\r\npublic class MyMining extends RawMining implements Comparable<MyMining>, InfoItem, ItemType, EditablePriceType, EditableLocationType {\r\n\r\n\tprivate final DateOnly dateOnly;\r\n\tprivate final Item item;\r\n\tprivate MyLocation location;\r\n\tprivate double price;\r\n\tprivate String characterName;\r\n\r\n\tpublic MyMining(RawMining mining, Item item, MyLocation location) {\r\n\t\tsuper(mining);\r\n\t\tthis.dateOnly = new DateOnly(getDate());\r\n\t\tthis.item = item;\r\n\t\tthis.location = location;\r\n\t}\r\n\r\n\tpublic String getCharacterName() {\r\n\t\treturn characterName;\r\n\t}\r\n\r\n\tpublic void setCharacterName(String characterName) {\r\n\t\tthis.characterName = characterName;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic double getValue() {\r\n\t\treturn price * getCount();\r\n\t}\r\n\r\n\tpublic DateOnly getDateOnly() {\r\n\t\treturn dateOnly;\r\n\t}\r\n\r\n\tpublic double getPriceReprocessed() {\r\n\t\treturn item.getPriceReprocessed();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic double getValueReprocessed() {\r\n\t\treturn item.getPriceReprocessed() * getCount();\r\n\t}\r\n\r\n\tpublic double getPriceReprocessedMax() {\r\n\t\treturn item.getPriceReprocessedMax();\r\n\t}\r\n\r\n\tpublic double getValueReprocessedMax() {\r\n\t\treturn item.getPriceReprocessedMax() * getCount();\r\n\t}\r\n\r\n\tprivate float getVolume() {\r\n\t\treturn item.getVolumePackaged();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic double getVolumeTotal() {\r\n\t\treturn item.getVolumePackaged() * getCount();\r\n\t}\r\n\r\n\tpublic double getValuePerVolumeOre() {\r\n\t\tif (getVolume() > 0 && getDynamicPrice() > 0) {\r\n\t\t\treturn getDynamicPrice() / getVolume();\r\n\t\t} else {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic double getValuePerVolumeReprocessed() {\r\n\t\tif (getVolume() > 0 && getPriceReprocessed()> 0) {\r\n\t\t\treturn getPriceReprocessed() / getVolume();\r\n\t\t} else {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic double getValuePerVolumeReprocessedMax() {\r\n\t\tif (getVolume() > 0 && getPriceReprocessedMax()> 0) {\r\n\t\t\treturn getPriceReprocessedMax() / getVolume();\r\n\t\t} else {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setDynamicPrice(double price) {\r\n\t\tthis.price = price;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean isBPC() {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Double getDynamicPrice() {\r\n\t\treturn price;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setLocation(MyLocation location) {\r\n\t\tthis.location = location;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Item getItem() {\r\n\t\treturn item;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic long getItemCount() {\r\n\t\treturn getCount();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic MyLocation getLocation() {\r\n\t\treturn location;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(MyMining o) {\r\n\t\treturn o.getDate().compareTo(this.getDate());\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 3;\r\n\t\thash = 17 * hash + Objects.hashCode(this.getDate());\r\n\t\thash = 17 * hash + Objects.hashCode(this.getLocationID());\r\n\t\thash = 17 * hash + Objects.hashCode(this.getTypeID());\r\n\t\thash = 17 * hash + Objects.hashCode(this.getCharacterID());\r\n\t\thash = 17 * hash + Objects.hashCode(this.isForCorporation());\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal MyMining other = (MyMining) obj;\r\n\t\tif (!Objects.equals(this.getDate(), other.getDate())) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (!Objects.equals(this.getLocationID(), other.getLocationID())) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (!Objects.equals(this.getTypeID(), other.getTypeID())) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (!Objects.equals(this.getCharacterID(), other.getCharacterID())) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn Objects.equals(this.isForCorporation(), other.isForCorporation());\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/my/MyNpcStanding.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.data.api.my;\r\n\r\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawNpcStanding;\r\nimport net.nikr.eve.jeveasset.data.sde.Agent;\r\nimport net.nikr.eve.jeveasset.data.sde.NpcCorporation;\r\nimport net.nikr.eve.jeveasset.data.settings.types.CorporationType;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Security;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.TextIcon;\r\nimport net.nikr.eve.jeveasset.io.online.EveImageGetter;\r\nimport net.nikr.eve.jeveasset.io.online.EveImageGetter.ImageSize;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\n\r\n\r\npublic class MyNpcStanding extends RawNpcStanding implements Comparable<MyNpcStanding>, CorporationType {\r\n\r\n\tpublic static ImageSize IMAGE_SIZE = ImageSize.SIZE_32;\r\n\r\n\tprivate final OwnerType owner;\r\n\tprivate final int factionID;\r\n\tprivate final int corporationID;\r\n\tprivate final int agentID;\r\n\tprivate final Agent agent;\r\n\tprivate final boolean connections;\r\n\tprivate final boolean criminalConnections;\r\n\tprivate String factionName;\r\n\tprivate String corporationName;\r\n\tprivate TextIcon ownerTextIcon = null;;\r\n\tprivate TextIcon factionTextIcon = null;\r\n\tprivate TextIcon corporationTextIcon = null;\r\n\tprivate TextIcon agentTextIcon = null;\r\n\tprivate int connectionsLevel;\r\n\tprivate int diplomacyLevel;\r\n\tprivate int criminalConnectionsLevel;\r\n\r\n\tpublic MyNpcStanding(RawNpcStanding rawNpcStanding, OwnerType owner) {\r\n\t\tsuper(rawNpcStanding);\r\n\t\tthis.owner = owner;\r\n\t\tagentID = getFromType() == FromType.AGENT ? getFromID() : 0;\r\n\t\tagent = ApiIdConverter.getAgent(agentID);\r\n\t\tNpcCorporation npcCorporation;\r\n\t\tif (getFromType() == FromType.AGENT) {\r\n\t\t\tif (!agent.isEmpty()) {\r\n\t\t\t\tcorporationID = agent.getCorporationID();\r\n\t\t\t\tnpcCorporation = ApiIdConverter.getNpcCorporation(corporationID);\r\n\t\t\t\tfactionID = npcCorporation.getFactionID();\r\n\t\t\t} else {\r\n\t\t\t\tnpcCorporation = ApiIdConverter.getNpcCorporation(getCorporationID());\r\n\t\t\t\tcorporationID = npcCorporation.getCorporationID();\r\n\t\t\t\tfactionID = npcCorporation.getFactionID();\r\n\t\t\t}\r\n\t\t} else if (getFromType() == FromType.NPC_CORP) {\r\n\t\t\tcorporationID = getFromID();\r\n\t\t\tnpcCorporation = ApiIdConverter.getNpcCorporation(corporationID);\r\n\t\t\tfactionID = npcCorporation.getFactionID();\r\n\t\t} else { //FromType.FACTION\r\n\t\t\tcorporationID = 0;\r\n\t\t\tfactionID = getFromID();\r\n\t\t\tnpcCorporation = ApiIdConverter.getNpcCorporation(factionID);\r\n\t\t}\r\n\t\tif (npcCorporation != null) {\r\n\t\t\tconnections = npcCorporation.isConnections();\r\n\t\t\tcriminalConnections = npcCorporation.isCriminalConnections();\r\n\t\t} else {\r\n\t\t\tconnections = false;\r\n\t\t\tcriminalConnections = false;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic String getOwnerName() {\r\n\t\treturn owner.getOwnerName();\r\n\t}\r\n\r\n\tpublic int getFactionID() {\r\n\t\treturn factionID;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Integer getCorporationID() {\r\n\t\treturn corporationID;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getCorporationName() {\r\n\t\treturn corporationName;\r\n\t}\r\n\r\n\tpublic int getAgentID() {\r\n\t\treturn agentID;\r\n\t}\r\n\r\n\tpublic Agent getAgent() {\r\n\t\treturn agent;\r\n\t}\r\n\r\n\tpublic String getAgentName() {\r\n\t\treturn agent.getAgent();\r\n\t}\r\n\r\n\tpublic TextIcon getOwnerTextIcon() {\r\n\t\tif (ownerTextIcon == null ) {\r\n\t\t\tif (owner.isCharacter()) {\r\n\t\t\t\townerTextIcon = new TextIcon(Images.getIcon((int)owner.getOwnerID(), EveImageGetter.ImageCategory.CHARACTERS), owner.getOwnerName());\r\n\t\t\t} else {\r\n\t\t\t\townerTextIcon = new TextIcon(Images.getIcon((int)owner.getOwnerID(), EveImageGetter.ImageCategory.CORPORATIONS), owner.getOwnerName());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn ownerTextIcon;\r\n\t}\r\n\r\n\tpublic TextIcon getFactionTextIcon() {\r\n\t\tif (factionTextIcon == null && factionID > 0) {\r\n\t\t\tfactionTextIcon = new TextIcon(Images.getIcon(factionID, EveImageGetter.ImageCategory.CORPORATIONS), factionName);\r\n\t\t}\r\n\t\treturn factionTextIcon;\r\n\t}\r\n\r\n\tpublic TextIcon getCorporationTextIcon() {\r\n\t\tif (corporationTextIcon == null && corporationID > 0 && (getFromType() == FromType.AGENT || getFromType() == FromType.NPC_CORP)) {\r\n\t\t\tcorporationTextIcon = new TextIcon(Images.getIcon(corporationID, EveImageGetter.ImageCategory.CORPORATIONS), corporationName);\r\n\t\t}\r\n\t\treturn corporationTextIcon;\r\n\t}\r\n\r\n\tpublic TextIcon getAgentTextIcon() {\r\n\t\tif (agentTextIcon == null && getFromType() == FromType.AGENT) {\r\n\t\t\tagentTextIcon = new TextIcon(Images.getIcon(this), getAgentName());\r\n\t\t}\r\n\t\treturn agentTextIcon;\r\n\t}\r\n\r\n\tpublic void setFactionName(String factionName) {\r\n\t\tthis.factionName = factionName;\r\n\t}\r\n\r\n\tpublic void setCorporationName(String corporationName) {\r\n\t\tthis.corporationName = corporationName;\r\n\t}\r\n\r\n\tpublic void updateSkills() {\r\n\t\tfor (MySkill mySkill : owner.getSkills()) {\r\n\t\t\tif (mySkill.getTypeID() == 3359) { //Connections\r\n\t\t\t\tconnectionsLevel = mySkill.getActiveSkillLevel();\r\n\t\t\t}\r\n\t\t\tif (mySkill.getTypeID() == 3357) { //Connections\r\n\t\t\t\tdiplomacyLevel = mySkill.getActiveSkillLevel();\r\n\t\t\t}\r\n\t\t\tif (mySkill.getTypeID() == 3361) { //Connections\r\n\t\t\t\tcriminalConnectionsLevel = mySkill.getActiveSkillLevel();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Float getStandingEffective() {\r\n\t\tFloat standing = getStanding();\r\n\t\tif (standing >= 0) {\r\n\t\t\tif (connections && connectionsLevel > 0) {\r\n\t\t\t\tstanding = calc(standing, connectionsLevel);\r\n\t\t\t}\r\n\t\t\tif (criminalConnections && criminalConnectionsLevel > 0) {\r\n\t\t\t\tstanding = calc(standing, criminalConnectionsLevel);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tstanding = calc(standing, diplomacyLevel);\r\n\t\t}\r\n\t\treturn standing;\r\n\t}\r\n\r\n\tpublic Float getStandingMaximum() {\r\n\t\treturn calc(getStanding(), 5);\r\n\t}\r\n\r\n\tprivate Float calc(Float standing, int modifier) {\r\n\t\treturn standing + (10 - standing) * 0.04F * modifier;\r\n\t}\r\n\r\n\tpublic String getLocation() {\r\n\t\tif (!agent.isEmpty()) {\r\n\t\t\treturn agent.getLocation().getLocation();\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Security getSecurityObject() {\r\n\t\tif (!agent.isEmpty()) {\r\n\t\t\treturn agent.getLocation().getSecurityObject();\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic String getSystem() {\r\n\t\tif (!agent.isEmpty()) {\r\n\t\t\treturn agent.getLocation().getSystem();\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic String getConstellation() {\r\n\t\tif (!agent.isEmpty()) {\r\n\t\t\treturn agent.getLocation().getConstellation();\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic String getRegion() {\r\n\t\tif (!agent.isEmpty()) {\r\n\t\t\treturn agent.getLocation().getRegion();\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(MyNpcStanding o) {\r\n\t\tint compare = MyNpcStanding.FROM_TYPE_COMPARATOR.compare(this.getFromType(), o.getFromType());\r\n\t\tif (compare != 0) {\r\n\t\t\treturn compare;\r\n\t\t}\r\n\t\treturn Float.compare(o.getStanding(), this.getStanding());\r\n\t\t\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/my/MyShip.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.data.api.my;\n\nimport java.util.Objects;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\nimport net.troja.eve.esi.model.CharacterLocationResponse;\nimport net.troja.eve.esi.model.CharacterShipResponse;\n\n\npublic class MyShip implements Comparable<MyShip>, LocationType {\n\n\t//Static values (set by constructor)\n\tprivate final Long itemID;\n\tprivate final Integer typeID;\n\n\tprivate final MyLocation location;\n\n\tprivate final String name;\n\tprivate final String typeName;\n\tprivate final String eveName;\n\n\tpublic MyShip(final CharacterShipResponse shipType, final CharacterLocationResponse response) {\n\t\tthis(shipType.getShipItemId(), SafeConverter.toInteger(shipType.getShipTypeId()), RawConverter.toLocationID(response));\n\t}\n\n\tpublic MyShip(final Long itemID, final Integer typeID, final Long locationID) {\n\t\tthis.itemID = itemID;\n\t\tthis.typeID = typeID;\n\n\t\tthis.location = ApiIdConverter.getLocation(locationID);\n\n\t\tthis.typeName = ApiIdConverter.getItemUpdate(typeID).getTypeName();\n\n\t\tif (Settings.get().getEveNames().get(itemID) != null) {\n\t\t\tthis.eveName = Settings.get().getEveNames().get(itemID);\n\t\t\tthis.name = this.eveName + \" (\" + this.typeName + \")\";\n\t\t} else {\n\t\t\tthis.eveName = \"\";\n\t\t\tthis.name = this.typeName;\n\t\t}\n\t}\n\n\tpublic Long getItemID() {\n\t\treturn itemID;\n\t}\n\n\t@Override\n\tpublic MyLocation getLocation() {\n\t\treturn location;\n\t}\n\n\tpublic long getLocationID() {\n\t\treturn location.getLocationID();\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic String getEveName() {\n\t\treturn eveName;\n\t}\n\n\tpublic int getTypeID() {\n\t\treturn typeID;\n\t}\n\n\tpublic final String getTypeName() {\n\t\treturn typeName;\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\treturn this.getName();\n\t}\n\n\t@Override\n\tpublic int compareTo(final MyShip o) {\n\t\treturn this.getName().compareToIgnoreCase(o.getName());\n\t}\n\n\t@Override\n\tpublic int hashCode() {\n\t\tint hash = 5;\n\t\thash = 97 * hash + Objects.hashCode(this.itemID);\n\t\treturn hash;\n\t}\n\n\t@Override\n\tpublic boolean equals(Object obj) {\n\t\tif (this == obj) {\n\t\t\treturn true;\n\t\t}\n\t\tif (obj == null) {\n\t\t\treturn false;\n\t\t}\n\t\tif (getClass() != obj.getClass()) {\n\t\t\treturn false;\n\t\t}\n\t\tfinal MyShip other = (MyShip) obj;\n\t\tif (!Objects.equals(this.itemID, other.itemID)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/my/MySkill.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.data.api.my;\r\n\r\nimport java.util.Objects;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawSkill;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.settings.types.ItemType;\r\n\r\n\r\npublic class MySkill extends RawSkill implements Comparable<MySkill>, ItemType {\r\n\r\n\tprivate final Item item;\r\n\tprivate final String owner;\r\n\r\n\tpublic MySkill(RawSkill skill, Item item, String owner) {\r\n\t\tsuper(skill);\r\n\t\tthis.item = item;\r\n\t\tthis.owner = owner;\r\n\t}\r\n\r\n\tpublic String getName() {\r\n\t\treturn item.getTypeName();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Item getItem() {\r\n\t\treturn item;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic long getItemCount() {\r\n\t\treturn 1;\r\n\t}\r\n\r\n\tpublic String getOwnerName() {\r\n\t\treturn owner;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(MySkill o) {\r\n\t\tint compared = this.getOwnerName().compareTo(o.getOwnerName());\r\n\t\tif (compared != 0) {\r\n\t\t\treturn compared;\r\n\t\t}\r\n\t\treturn this.getName().compareTo(o.getName());\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 3;\r\n\t\thash = 59 * hash + Objects.hashCode(this.item);\r\n\t\thash = 59 * hash + Objects.hashCode(this.owner);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal MySkill other = (MySkill) obj;\r\n\t\tif (!Objects.equals(this.owner, other.owner)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn Objects.equals(this.item, other.item);\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/my/MyTransaction.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.my;\r\n\r\nimport java.util.Date;\r\nimport java.util.HashSet;\r\nimport java.util.Objects;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawTransaction;\r\nimport net.nikr.eve.jeveasset.data.settings.tag.TagID;\r\nimport net.nikr.eve.jeveasset.data.settings.tag.Tags;\r\nimport net.nikr.eve.jeveasset.data.settings.types.EditableLocationType;\r\nimport net.nikr.eve.jeveasset.data.settings.types.ItemType;\r\nimport net.nikr.eve.jeveasset.data.settings.types.LastTransactionType;\r\nimport net.nikr.eve.jeveasset.data.settings.types.OwnersType;\r\nimport net.nikr.eve.jeveasset.data.settings.types.TagsType;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Percent;\r\nimport net.nikr.eve.jeveasset.gui.tabs.transaction.TransactionTab;\r\nimport net.nikr.eve.jeveasset.i18n.TabsTransaction;\r\n\r\npublic class MyTransaction extends RawTransaction implements EditableLocationType, ItemType, Comparable<MyTransaction>, OwnersType, LastTransactionType, TagsType {\r\n\r\n\tprivate final Item item;\r\n\tprivate final OwnerType owner;\r\n\tprivate final Set<Long> owners = new HashSet<>();\r\n\tprivate MyLocation location;\r\n\tprivate String clientName;\r\n\tprivate double transactionPrice;\r\n\tprivate double transactionProfit;\r\n\tprivate Percent transactionProfitPercent;\r\n\tprivate Double tax;\r\n\tprivate Date added;\r\n\tprivate Tags tags;\r\n\r\n\tpublic MyTransaction(final RawTransaction rawTransaction, final Item item, final OwnerType owner) {\r\n\t\tsuper(rawTransaction);\r\n\t\tthis.item = item;\r\n\t\tthis.owner = owner;\r\n\t\towners.add(getClientID());\r\n\t\towners.add(owner.getOwnerID());\r\n\t}\r\n\r\n\tpublic int getAccountKeyFormatted() {\r\n\t\treturn getAccountKey() - 999;\r\n\t}\r\n\r\n\tpublic String getTransactionTypeFormatted() {\r\n\t\tif (isSell()) {\r\n\t\t\treturn TabsTransaction.get().sell();\r\n\t\t} else {\r\n\t\t\treturn TabsTransaction.get().buy();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic String getTransactionForFormatted() {\r\n\t\tif (isPersonal()) {\r\n\t\t\treturn TabsTransaction.get().personal();\r\n\t\t} else {\r\n\t\t\treturn TabsTransaction.get().corporation();\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic MyLocation getLocation() {\r\n\t\treturn location;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Set<Long> getOwners() {\r\n\t\treturn owners;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setLocation(MyLocation location) {\r\n\t\tthis.location = location;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Item getItem() {\r\n\t\treturn item;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic long getItemCount() {\r\n\t\treturn getQuantity();\r\n\t}\r\n\r\n\tpublic String getOwnerName() {\r\n\t\treturn owner.getOwnerName();\r\n\t}\r\n\r\n\tpublic long getOwnerID() {\r\n\t\treturn owner.getOwnerID();\r\n\t}\r\n\r\n\tpublic String getClientName() {\r\n\t\treturn clientName;\r\n\t}\r\n\r\n\tpublic void setClientName(String clientName) {\r\n\t\tthis.clientName = clientName;\r\n\t}\r\n\r\n\tpublic double getValue() {\r\n\t\tif (isSell()) {\r\n\t\t\treturn (getQuantity() * getPrice()) + getTaxNotNull(); //Adding tax, tax is a negative number\r\n\t\t} else {\r\n\t\t\treturn getQuantity() * -getPrice();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic boolean isAfterAssets() {\r\n\t\tDate date = owner.getAssetLastUpdate();\r\n\t\tif (date != null) {\r\n\t\t\treturn getDate().after(date);\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic boolean isSell() {\r\n\t\treturn !isBuy();\r\n\t}\r\n\r\n\tpublic boolean isCorporation() {\r\n\t\treturn !isPersonal();\r\n\t}\r\n\r\n\tpublic Double getTax() {\r\n\t\treturn tax;\r\n\t}\r\n\r\n\tpublic double getTaxNotNull() {\r\n\t\tif (tax != null) {\r\n\t\t\treturn tax;\r\n\t\t} else {\r\n\t\t\treturn 0.0;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void setTax(Double tax) {\r\n\t\tthis.tax = tax;\r\n\t}\r\n\r\n\tpublic Date getAdded() {\r\n\t\treturn added;\r\n\t}\r\n\r\n\tpublic void setAdded(Date added) {\r\n\t\tthis.added = added;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Tags getTags() {\r\n\t\treturn tags;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic TagID getTagID() {\r\n\t\treturn new TagID(TransactionTab.NAME, getTransactionID(), getPrice());\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setTags(Tags tags) {\r\n\t\tthis.tags = tags;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic double getTransactionPrice() {\r\n\t\treturn transactionPrice;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic double getTransactionProfitDifference() {\r\n\t\treturn transactionProfit;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Percent getTransactionProfitPercent() {\r\n\t\treturn transactionProfitPercent;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setTransactionPrice(double transactionPrice) {\r\n\t\tthis.transactionPrice = transactionPrice;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setTransactionProfit(double transactionProfit) {\r\n\t\tthis.transactionProfit = transactionProfit;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setTransactionProfitPercent(Percent transactionProfitPercent) {\r\n\t\tthis.transactionProfitPercent = transactionProfitPercent;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(final MyTransaction o) {\r\n\t\tint compared = o.getDate().compareTo(this.getDate());\r\n\t\tif (compared != 0) {\r\n\t\t\treturn compared;\r\n\t\t} else {\r\n\t\t\treturn Double.compare(o.getPrice(), this.getPrice());\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 7;\r\n\t\thash = 67 * hash + Objects.hashCode(this.getTransactionID());\r\n\t\thash = 67 * hash + Objects.hashCode(this.getPrice());\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal RawTransaction other = (RawTransaction) obj;\r\n\t\tif (!Objects.equals(this.getTransactionID(), other.getTransactionID())) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (!Objects.equals(this.getPrice(), other.getPrice())) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/raw/RawAccountBalance.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.raw;\r\n\r\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\r\nimport net.troja.eve.esi.model.CorporationWalletsResponse;\r\n\r\n\r\npublic class RawAccountBalance {\r\n\r\n\tprivate Double balance;\r\n\tprivate Integer accountKey;\r\n\r\n\t/**\r\n\t * New\r\n\t */\r\n\tprivate RawAccountBalance() {\r\n\t}\r\n\r\n\tpublic static RawAccountBalance create() {\r\n\t\treturn new RawAccountBalance();\r\n\t}\r\n\r\n\t/**\r\n\t * Raw\r\n\t *\r\n\t * @param balance\r\n\t */\r\n\tprotected RawAccountBalance(RawAccountBalance balance) {\r\n\t\tthis.balance = balance.balance;\r\n\t\tthis.accountKey = balance.accountKey;\r\n\t}\r\n\r\n\t/**\r\n\t * ESI Character\r\n\t *\r\n\t * @param balance\r\n\t * @param accountKey\r\n\t */\r\n\tpublic RawAccountBalance(Double balance, Integer accountKey) {\r\n\t\tthis.balance = balance;\r\n\t\tthis.accountKey = accountKey;\r\n\t}\r\n\r\n\t/**\r\n\t * ESI Corporation\r\n\t *\r\n\t * @param response\r\n\t */\r\n\tpublic RawAccountBalance(CorporationWalletsResponse response) {\r\n\t\tthis.balance = response.getBalance();\r\n\t\tthis.accountKey = SafeConverter.toInteger(response.getDivision()) + 999;\r\n\t}\r\n\r\n\tpublic Double getBalance() {\r\n\t\treturn balance;\r\n\t}\r\n\r\n\tpublic void setBalance(Double balance) {\r\n\t\tthis.balance = balance;\r\n\t}\r\n\r\n\tpublic Integer getAccountKey() {\r\n\t\treturn accountKey;\r\n\t}\r\n\r\n\tpublic void setAccountKey(Integer accountKey) {\r\n\t\tthis.accountKey = accountKey;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/raw/RawAsset.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.raw;\r\n\r\nimport java.util.Objects;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob.IndustryActivity;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.sde.ItemFlag;\r\nimport net.nikr.eve.jeveasset.i18n.General;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\r\nimport net.troja.eve.esi.model.CharacterAssetsResponse;\r\nimport net.troja.eve.esi.model.CharacterLocationResponse;\r\nimport net.troja.eve.esi.model.PlanetPin;\r\nimport net.troja.eve.esi.model.CharacterPlanetsResponse;\r\nimport net.troja.eve.esi.model.CharacterShipResponse;\r\nimport net.troja.eve.esi.model.CorporationAssetsResponse;\r\nimport net.troja.eve.esi.model.PinContent;\r\n\r\n\r\npublic class RawAsset {\r\n\r\n\tprivate static final ItemFlag MANUFACTURING_FLAG = new ItemFlag(0, IndustryActivity.ACTIVITY_MANUFACTURING.toString(), IndustryActivity.ACTIVITY_MANUFACTURING.toString());\r\n\tprivate static final ItemFlag REACTIONS_FLAG = new ItemFlag(0, IndustryActivity.ACTIVITY_REACTIONS.toString(), IndustryActivity.ACTIVITY_REACTIONS.toString());\r\n\tprivate static final ItemFlag COPYING_FLAG = new ItemFlag(0, IndustryActivity.ACTIVITY_COPYING.toString(), IndustryActivity.ACTIVITY_COPYING.toString());\r\n\tprivate static final ItemFlag INDUSTRY_JOB_FLAG = new ItemFlag(0, General.get().industryJobFlag(), General.get().industryJobFlag());\r\n\tprivate static final ItemFlag MARKET_ORDER_BUY_FLAG = new ItemFlag(0, General.get().marketOrderBuyFlag(), General.get().marketOrderBuyFlag());\r\n\tprivate static final ItemFlag MARKET_ORDER_SELL_FLAG = new ItemFlag(0, General.get().marketOrderSellFlag(), General.get().marketOrderSellFlag());\r\n\tprivate static final ItemFlag CONTRACT_INCLUDED_FLAG = new ItemFlag(0, General.get().contractIncluded(), General.get().contractIncluded());\r\n\tprivate static final ItemFlag CONTRACT_EXCLUDED_FLAG = new ItemFlag(0, General.get().contractExcluded(), General.get().contractExcluded());\r\n\tpublic static final ItemFlag JUMP_CLONE_FLAG = new ItemFlag(0, General.get().jumpClone(), General.get().jumpClone());\r\n\tpublic static final ItemFlag ACTIVE_CLONE_FLAG = new ItemFlag(0, General.get().activeClone(), General.get().activeClone());\r\n\tpublic static final ItemFlag IMPLANT_FLAG = ApiIdConverter.getFlag(89); //Implant;\r\n\r\n\tprivate Boolean isSingleton = null;\r\n\tprivate Long itemId = null;\r\n\tprivate ItemFlag itemFlag = null;\r\n\tprivate String locationFlag = null;\r\n\tprivate Long locationId = null;\r\n\tprivate Integer quantity = null;\r\n\tprivate Integer typeId = null;\r\n\r\n\t/**\r\n\t * New\r\n\t */\r\n\tprivate RawAsset() {\r\n\t}\r\n\r\n\tpublic static RawAsset create() {\r\n\t\treturn new RawAsset();\r\n\t}\r\n\r\n\t/**\r\n\t * IndustryJob\r\n\t *\r\n\t * @param industryJob\r\n\t * @param output\r\n\t */\r\n\tpublic RawAsset(MyIndustryJob industryJob, boolean output) {\r\n\t\tif (output && industryJob.isManufacturing()) {\r\n\t\t\tisSingleton = false;\r\n\t\t\titemId = RawConverter.toLong(industryJob.getJobID()); //This item doesn't exist yet, need a new itemID\r\n\t\t\tswitch (industryJob.getActivity()) { //Can not be null\r\n\t\t\t\tcase ACTIVITY_MANUFACTURING: //Manufacturing\r\n\t\t\t\t\titemFlag = MANUFACTURING_FLAG;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase ACTIVITY_REACTIONS: //Reactions\r\n\t\t\t\t\titemFlag = REACTIONS_FLAG;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\titemFlag = ApiIdConverter.getFlag(0); //Should never happen, but, better safe than sorry...\r\n\t\t\t}\r\n\t\t\tlocationId = industryJob.getLocationID();\r\n\t\t\tquantity = industryJob.getOutputCount();\r\n\t\t\ttypeId = industryJob.getProductTypeID();\r\n\t\t} else if (output && industryJob.isCopying()) {\r\n\t\t\tisSingleton = true;\r\n\t\t\titemId = RawConverter.toLong(industryJob.getJobID()); //This item doesn't exist yet, need a new itemID\r\n\t\t\titemFlag = COPYING_FLAG;\r\n\t\t\tlocationId = industryJob.getLocationID();\r\n\t\t\tquantity = -2; //BPC\r\n\t\t\ttypeId = industryJob.getBlueprintTypeID();\r\n\t\t} else {\r\n\t\t\tisSingleton = true;\r\n\t\t\titemId = industryJob.getBlueprintID(); //blueprint itemID\r\n\t\t\titemFlag = INDUSTRY_JOB_FLAG;\r\n\t\t\tlocationId = industryJob.getLocationID();\r\n\t\t\tif (industryJob.isBPO()) {\r\n\t\t\t\tquantity = -1;\r\n\t\t\t} else {\r\n\t\t\t\tquantity = -2;\r\n\t\t\t}\r\n\t\t\ttypeId = industryJob.getBlueprintTypeID();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * MarketOrder\r\n\t *\r\n\t * @param marketOrder\r\n\t */\r\n\tpublic RawAsset(MyMarketOrder marketOrder) {\r\n\t\tisSingleton = false;\r\n\t\titemId = marketOrder.getOrderID();\r\n\t\tif (marketOrder.isBuyOrder()) { //Buy\r\n\t\t\titemFlag = MARKET_ORDER_BUY_FLAG;\r\n\t\t} else { //Sell\r\n\t\t\titemFlag = MARKET_ORDER_SELL_FLAG;\r\n\t\t}\r\n\t\tlocationId = marketOrder.getLocationID();\r\n\t\tquantity = marketOrder.getVolumeRemain();\r\n\t\ttypeId = marketOrder.getTypeID();\r\n\t}\r\n\r\n\t/**\r\n\t * ContractItem\r\n\t *\r\n\t * @param contractItem\r\n\t */\r\n\tpublic RawAsset(MyContractItem contractItem) {\r\n\t\tisSingleton = contractItem.isSingleton();\r\n\t\tif (contractItem.getItemID() != null) {\r\n\t\t\titemId = contractItem.getItemID();\r\n\t\t} else {\r\n\t\t\titemId = contractItem.getRecordID();\r\n\t\t}\r\n\t\tif (contractItem.isIncluded()) { //Sell\r\n\t\t\titemFlag = CONTRACT_INCLUDED_FLAG;\r\n\t\t} else { //Buy\r\n\t\t\titemFlag = CONTRACT_EXCLUDED_FLAG;\r\n\t\t}\r\n\t\tif (contractItem.getContract().getStartLocationID() != null) {\r\n\t\t\tlocationId = contractItem.getContract().getStartLocationID();\r\n\t\t} else {\r\n\t\t\tlocationId = 0L;\r\n\t\t}\r\n\t\tquantity = RawConverter.toAssetQuantity(contractItem.getQuantity(), contractItem.getRawQuantity());\r\n\t\ttypeId = contractItem.getTypeID();\r\n\t}\r\n\r\n\t/**\r\n\t * Raw\r\n\t *\r\n\t * @param asset\r\n\t */\r\n\tprotected RawAsset(RawAsset asset) {\r\n\t\tisSingleton = asset.isSingleton;\r\n\t\titemId = asset.itemId;\r\n\t\titemFlag = asset.itemFlag;\r\n\t\tlocationFlag = asset.locationFlag;\r\n\t\tlocationId = asset.locationId;\r\n\t\tquantity = asset.quantity;\r\n\t\ttypeId = asset.typeId;\r\n\t}\r\n\r\n\t/**\r\n\t * ESI Character\r\n\t *\r\n\t * @param asset\r\n\t */\r\n\tpublic RawAsset(CharacterAssetsResponse asset) {\r\n\t\tif (asset.getQuantity() != null && asset.getQuantity() < 0 && asset.getQuantity() == -2) { //rawQuantity: Quantity should tell us if it's a BPC or BPO\r\n\t\t\tisSingleton = true;\r\n\t\t} else {\r\n\t\t\tisSingleton = asset.getIsSingleton();\r\n\t\t}\r\n\t\titemId = asset.getItemId();\r\n\t\titemFlag = RawConverter.toFlag(asset.getLocationFlag());\r\n\t\tlocationFlag = asset.getLocationFlagString();\r\n\t\tlocationId = asset.getLocationId();\r\n\t\tif (asset.getQuantity() == 1) {\r\n\t\t\tif (asset.getIsBlueprintCopy() != null && asset.getIsBlueprintCopy()) {\r\n\t\t\t\tquantity = -2;\r\n\t\t\t} else {\r\n\t\t\t\tquantity = -1;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tquantity = SafeConverter.toInteger(asset.getQuantity());\r\n\t\t}\r\n\t\ttypeId = SafeConverter.toInteger(asset.getTypeId());\r\n\t}\r\n\r\n\t/**\r\n\t * ESI Corporation\r\n\t *\r\n\t * @param asset\r\n\t */\r\n\tpublic RawAsset(CorporationAssetsResponse asset) {\r\n\t\tif (asset.getQuantity() != null && asset.getQuantity() < 0 && asset.getQuantity() == -2) { //rawQuantity: Quantity should tell us if it's a BPC or BPO\r\n\t\t\tisSingleton = true;\r\n\t\t} else {\r\n\t\t\tisSingleton = asset.getIsSingleton();\r\n\t\t}\r\n\t\titemId = asset.getItemId();\r\n\t\titemFlag = RawConverter.toFlag(asset.getLocationFlag());\r\n\t\tlocationFlag = asset.getLocationFlagString();\r\n\t\tlocationId = asset.getLocationId();\r\n\t\tif (asset.getQuantity() == 1) {\r\n\t\t\tif (asset.getIsBlueprintCopy() != null && asset.getIsBlueprintCopy()) {\r\n\t\t\t\tquantity = -2;\r\n\t\t\t} else {\r\n\t\t\t\tquantity = -1;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tquantity = SafeConverter.toInteger(asset.getQuantity());\r\n\t\t}\r\n\t\ttypeId = SafeConverter.toInteger(asset.getTypeId());\r\n\t}\r\n\r\n\t/**\r\n\t * ESI Plugged in Implant\r\n\t *\r\n\t * @param clone\r\n\t * @param impantTypeID\r\n\t */\r\n\tpublic RawAsset(RawClone clone, Integer impantTypeID) {\r\n\t\tisSingleton = true; //Unpacked\r\n\t\tlong combinedId = Long.parseLong(clone.getJumpCloneID() + \"\" + impantTypeID);\r\n\t\titemId = combinedId;\r\n\t\titemFlag = IMPLANT_FLAG;\r\n\t\tlocationId = clone.getLocationID();\r\n\t\tquantity = 1; //Plugged in AKA always 1\r\n\t\ttypeId = impantTypeID;\r\n\t}\r\n\r\n\t/**\r\n\t * ESI Jump Clone\r\n\t *\r\n\t * @param clone\r\n\t */\r\n\tpublic RawAsset(RawClone clone) {\r\n\t\tisSingleton = true; //Unpacked\r\n\t\titemId = clone.getJumpCloneID();\r\n\t\tif (clone.isActive()) {\r\n\t\t\titemFlag = ACTIVE_CLONE_FLAG;\r\n\t\t} else {\r\n\t\t\titemFlag = JUMP_CLONE_FLAG;\r\n\t\t} //Implant\r\n\t\tlocationId = clone.getLocationID();\r\n\t\tquantity = 1; //Plugged in AKA always 1\r\n\t\ttypeId = 0;\r\n\t}\r\n\r\n\t/**\r\n\t * ESI Ship\r\n\t *\r\n\t * @param shipType\r\n\t * @param shipLocation\r\n\t */\r\n\tpublic RawAsset(CharacterShipResponse shipType, CharacterLocationResponse shipLocation) {\r\n\t\tisSingleton = true; //Unpacked\r\n\t\titemId = shipType.getShipItemId();\r\n\t\titemFlag = ApiIdConverter.getFlag(0); //None\r\n\t\tlocationId = RawConverter.toLocationID(shipLocation);\r\n\t\tquantity = 1; //Unpacked AKA always 1\r\n\t\ttypeId = SafeConverter.toInteger(shipType.getShipTypeId());\r\n\t}\r\n\r\n\t/**\r\n\t * ESI Planetary Interaction Asset\r\n\t *\r\n\t * @param planet\r\n\t * @param pin\r\n\t * @param content\r\n\t */\r\n\tpublic RawAsset(CharacterPlanetsResponse planet, PlanetPin pin, PinContent content) {\r\n\t\tisSingleton = false; //Packed\r\n\t\titemId = Long.valueOf(pin.getPinId() + \"\" + content.getTypeId()); //Semi unique\r\n\t\titemFlag = ApiIdConverter.getFlag(0); //None\r\n\t\tlocationId = planet.getPlanetId(); //Planet\r\n\t\tquantity = content.getAmount().intValue(); //Not perfect, but, will have to do\r\n\t\ttypeId = SafeConverter.toInteger(content.getTypeId());\r\n\t}\r\n\r\n\t/**\r\n\t * ESI Planetary Interaction Facility\r\n\t *\r\n\t * @param planet\r\n\t * @param pin\r\n\t */\r\n\tpublic RawAsset(CharacterPlanetsResponse planet, PlanetPin pin) {\r\n\t\tisSingleton = false; //Packed\r\n\t\titemId = pin.getPinId(); //Semi unique\r\n\t\titemFlag = ApiIdConverter.getFlag(0); //None\r\n\t\tlocationId = (long) planet.getPlanetId(); //Planet\r\n\t\tquantity = 1;\r\n\t\ttypeId = SafeConverter.toInteger(pin.getTypeId());\r\n\t}\r\n\r\n\t/**\r\n\t * Singleton: Unpackaged.\r\n\t *\r\n\t * @return true if unpackaged - false if packaged\r\n\t */\r\n\tpublic final Boolean isSingleton() {\r\n\t\treturn isSingleton;\r\n\t}\r\n\r\n\tpublic void setSingleton(Boolean isSingleton) {\r\n\t\tthis.isSingleton = isSingleton;\r\n\t}\r\n\r\n\tpublic Long getItemID() {\r\n\t\treturn itemId;\r\n\t}\r\n\r\n\tpublic final void setItemID(Long itemId) {\r\n\t\tthis.itemId = itemId;\r\n\t}\r\n\r\n\tpublic ItemFlag getItemFlag() {\r\n\t\treturn itemFlag;\r\n\t}\r\n\r\n\tpublic final void setItemFlag(ItemFlag itemFlag) {\r\n\t\tthis.itemFlag = itemFlag;\r\n\t}\r\n\r\n\tpublic String getLocationFlagString() {\r\n\t\treturn locationFlag;\r\n\t}\r\n\r\n\tpublic void setLocationFlagString(String locationFlagString) {\r\n\t\tthis.locationFlag = locationFlagString;\r\n\t}\r\n\r\n\tpublic long getLocationID() {\r\n\t\treturn locationId;\r\n\t}\r\n\r\n\tpublic final void setLocationID(Long locationId) {\r\n\t\tthis.locationId = locationId;\r\n\t}\r\n\r\n\tpublic final Integer getQuantity() {\r\n\t\treturn quantity;\r\n\t}\r\n\r\n\tpublic void setQuantity(Integer quantity) {\r\n\t\tthis.quantity = quantity;\r\n\t}\r\n\r\n\tpublic Integer getTypeID() {\r\n\t\treturn typeId;\r\n\t}\r\n\r\n\tpublic void setTypeID(Integer typeId) {\r\n\t\tthis.typeId = typeId;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 7;\r\n\t\thash = 37 * hash + Objects.hashCode(this.itemId);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal RawAsset other = (RawAsset) obj;\r\n\t\tif (!Objects.equals(this.itemId, other.itemId)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn Objects.equals(this.typeId, other.typeId);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/raw/RawBlueprint.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.data.api.raw;\n\nimport net.nikr.eve.jeveasset.data.sde.ItemFlag;\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\nimport net.troja.eve.esi.model.CharacterBlueprintsResponse;\nimport net.troja.eve.esi.model.CorporationBlueprintsResponse;\n\n\npublic class RawBlueprint {\n\n\tprivate Long itemId = null;\n\tprivate ItemFlag itemFlag;\n\tprivate String locationFlag = null;\n\tprivate Long locationId = null;\n\tprivate Integer materialEfficiency = null;\n\tprivate Integer quantity = null;\n\tprivate Integer runs = null;\n\tprivate Integer timeEfficiency = null;\n\tprivate Integer typeId = null;\n\n\t/**\n\t * New\n\t */\n\tprivate RawBlueprint() {\n\t}\n\n\tpublic static RawBlueprint create() {\n\t\treturn new RawBlueprint();\n\t}\n\n\t/**\n\t * Raw (Never used)\n\t *\n\t * @param blueprint\n\t */\n\tprivate RawBlueprint(RawBlueprint blueprint) {\n\t\titemId = blueprint.itemId;\n\t\titemFlag = blueprint.itemFlag;\n\t\tlocationFlag = blueprint.locationFlag;\n\t\tlocationId = blueprint.locationId;\n\t\tmaterialEfficiency = blueprint.materialEfficiency;\n\t\tquantity = blueprint.quantity;\n\t\truns = blueprint.runs;\n\t\ttimeEfficiency = blueprint.timeEfficiency;\n\t\ttypeId = blueprint.typeId;\n\t}\n\n\t/**\n\t * ESI Character\n\t *\n\t * @param blueprint\n\t */\n\tpublic RawBlueprint(CharacterBlueprintsResponse blueprint) {\n\t\titemId = blueprint.getItemId();\n\t\titemFlag = RawConverter.toFlag(blueprint.getLocationFlag());\n\t\tlocationFlag = blueprint.getLocationFlagString();\n\t\tlocationId = blueprint.getLocationId();\n\t\tmaterialEfficiency = SafeConverter.toInteger(blueprint.getMaterialEfficiency());\n\t\tquantity = SafeConverter.toInteger(blueprint.getQuantity());\n\t\truns = SafeConverter.toInteger(blueprint.getRuns());\n\t\ttimeEfficiency = SafeConverter.toInteger(blueprint.getTimeEfficiency());\n\t\ttypeId = SafeConverter.toInteger(blueprint.getTypeId());\n\t}\n\n\t/**\n\t * ESI Corporation\n\t *\n\t * @param blueprint\n\t */\n\tpublic RawBlueprint(CorporationBlueprintsResponse blueprint) {\n\t\titemId = blueprint.getItemId();\n\t\titemFlag = RawConverter.toFlag(blueprint.getLocationFlag());\n\t\tlocationFlag = blueprint.getLocationFlagString();\n\t\tlocationId = blueprint.getLocationId();\n\t\tmaterialEfficiency = SafeConverter.toInteger(blueprint.getMaterialEfficiency());\n\t\tquantity = SafeConverter.toInteger(blueprint.getQuantity());\n\t\truns = SafeConverter.toInteger(blueprint.getRuns());\n\t\ttimeEfficiency = SafeConverter.toInteger(blueprint.getTimeEfficiency());\n\t\ttypeId = SafeConverter.toInteger(blueprint.getTypeId());\n\t}\n\n\tpublic Long getItemID() {\n\t\treturn itemId;\n\t}\n\n\tpublic void setItemID(Long itemId) {\n\t\tthis.itemId = itemId;\n\t}\n\n\tpublic void setItemFlag(ItemFlag itemFlag) {\n\t\tthis.itemFlag = itemFlag;\n\t}\n\n\tpublic int getFlagID() {\n\t\treturn itemFlag.getFlagID();\n\t}\n\n\tpublic String getFlagName() {\n\t\treturn itemFlag.getFlagName();\n\t}\n\n\tpublic String getLocationFlagString() {\n\t\treturn locationFlag;\n\t}\n\n\tpublic void setLocationFlagString(String locationFlagString) {\n\t\tthis.locationFlag = locationFlagString;\n\t}\n\n\tpublic Long getLocationID() {\n\t\treturn locationId;\n\t}\n\n\tpublic void setLocationID(Long locationId) {\n\t\tthis.locationId = locationId;\n\t}\n\n\tpublic Integer getMaterialEfficiency() {\n\t\treturn materialEfficiency;\n\t}\n\n\tpublic void setMaterialEfficiency(Integer materialEfficiency) {\n\t\tthis.materialEfficiency = materialEfficiency;\n\t}\n\n\tpublic Integer getQuantity() {\n\t\treturn quantity;\n\t}\n\n\tpublic void setQuantity(Integer quantity) {\n\t\tthis.quantity = quantity;\n\t}\n\n\tpublic Integer getRuns() {\n\t\treturn runs;\n\t}\n\n\tpublic void setRuns(Integer runs) {\n\t\tthis.runs = runs;\n\t}\n\n\tpublic Integer getTimeEfficiency() {\n\t\treturn timeEfficiency;\n\t}\n\n\tpublic void setTimeEfficiency(Integer timeEfficiency) {\n\t\tthis.timeEfficiency = timeEfficiency;\n\t}\n\n\tpublic Integer getTypeID() {\n\t\treturn typeId;\n\t}\n\n\tpublic void setTypeID(Integer typeId) {\n\t\tthis.typeId = typeId;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/raw/RawClone.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.raw;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\r\nimport net.troja.eve.esi.model.JumpClone;\r\n\r\n\r\npublic class RawClone {\r\n\tprivate List<Integer> implants = new ArrayList<>();\r\n\tprivate Long jumpCloneId;\r\n\tprivate Long locationId;\r\n\tprivate String name;\r\n\tprivate boolean active;\r\n\r\n\tpublic static RawClone create() {\r\n\t\treturn new RawClone();\r\n\t}\r\n\r\n\tprivate RawClone() { }\r\n\r\n\tpublic RawClone(RawClone rawClone) {\r\n\t\tthis.implants = new ArrayList<>(rawClone.implants);\r\n\t\tthis.jumpCloneId = rawClone.jumpCloneId;\r\n\t\tthis.locationId = rawClone.locationId;\r\n\t\tthis.name = rawClone.name;\r\n\t\tthis.active = rawClone.active;\r\n\t}\r\n\r\n\t/**\r\n\t * Jump Clone\r\n\t * @param clone \r\n\t */\r\n\tpublic RawClone(JumpClone clone) {\r\n\t\tthis.implants = SafeConverter.toInteger(clone.getImplants());\r\n\t\tthis.jumpCloneId = clone.getJumpCloneId();\r\n\t\tthis.locationId = clone.getLocationId();\r\n\t\tthis.name = clone.getName();\r\n\t\tthis.active = false;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Active Clone\r\n\t * @param implants\r\n\t * @param jumpCloneId\r\n\t * @param locationId \r\n\t */\r\n\tpublic RawClone(List<Long> implants, Long jumpCloneId, Long locationId) {\r\n\t\tthis.implants = SafeConverter.toInteger(implants);\r\n\t\tthis.jumpCloneId = jumpCloneId;\r\n\t\tthis.locationId = locationId;\r\n\t\tthis.name = null;\r\n\t\tthis.active = true;\r\n\t}\r\n\r\n\tpublic List<Integer> getImplants() {\r\n\t\treturn implants;\r\n\t}\r\n\r\n\tpublic void setImplants(List<Integer> implants) {\r\n\t\tthis.implants = implants;\r\n\t}\r\n\r\n\tpublic Long getJumpCloneID() {\r\n\t\treturn jumpCloneId;\r\n\t}\r\n\r\n\tpublic void setJumpCloneID(Long jumpCloneId) {\r\n\t\tthis.jumpCloneId = jumpCloneId;\r\n\t}\r\n\r\n\tpublic Long getLocationID() {\r\n\t\treturn locationId;\r\n\t}\r\n\r\n\tpublic void setLocationID(Long locationId) {\r\n\t\tthis.locationId = locationId;\r\n\t}\r\n\r\n\tpublic String getName() {\r\n\t\treturn name;\r\n\t}\r\n\r\n\tpublic void setName(String name) {\r\n\t\tthis.name = name;\r\n\t}\r\n\r\n\tpublic boolean isActive() {\r\n\t\treturn active;\r\n\t}\r\n\r\n\tpublic void setActive(boolean active) {\r\n\t\tthis.active = active;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/raw/RawContract.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.raw;\r\n\r\nimport java.util.Date;\r\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\r\nimport net.troja.eve.esi.model.CharacterContractsResponse;\r\nimport net.troja.eve.esi.model.CorporationContractsResponse;\r\n\r\n\r\npublic class RawContract {\r\n\r\n\tpublic enum ContractAvailability {\r\n\t\tPUBLIC(\"public\"),\r\n\t\tPERSONAL(\"personal\"),\r\n\t\tCORPORATION(\"corporation\"),\r\n\t\tALLIANCE(\"alliance\");\r\n\r\n\t\tprivate final String value;\r\n\r\n\t\tContractAvailability(String value) {\r\n\t\t\tthis.value = value;\r\n\t\t}\r\n\r\n\t\tpublic String getValue() {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic enum ContractStatus {\r\n\t\tOUTSTANDING(\"outstanding\"),\r\n\t\tIN_PROGRESS(\"in_progress\"),\r\n\t\tFINISHED_ISSUER(\"finished_issuer\"),\r\n\t\tFINISHED_CONTRACTOR(\"finished_contractor\"),\r\n\t\tFINISHED(\"finished\"),\r\n\t\tCANCELLED(\"cancelled\"),\r\n\t\tREJECTED(\"rejected\"),\r\n\t\tFAILED(\"failed\"),\r\n\t\tDELETED(\"deleted\"),\r\n\t\tREVERSED(\"reversed\"),\r\n\t\tARCHIVED(\"archived\");\r\n\r\n\t\tprivate final String value;\r\n\r\n\t\tContractStatus(String value) {\r\n\t\t\tthis.value = value;\r\n\t\t}\r\n\r\n\t\tpublic String getValue() {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic enum ContractType {\r\n\t\tUNKNOWN(\"unknown\"),\r\n\t\tITEM_EXCHANGE(\"item_exchange\"),\r\n\t\tAUCTION(\"auction\"),\r\n\t\tCOURIER(\"courier\"),\r\n\t\tLOAN(\"loan\");\r\n\r\n\t\tprivate final String value;\r\n\r\n\t\tContractType(String value) {\r\n\t\t\tthis.value = value;\r\n\t\t}\r\n\r\n\t\tpublic String getValue() {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Integer acceptorId = null;\r\n\tprivate Integer assigneeId = null;\r\n\tprivate String availability = null;\r\n\tprivate ContractAvailability availabilityEnum = null;\r\n\tprivate Double buyout = null;\r\n\tprivate Double collateral = null;\r\n\tprivate Integer contractId = null;\r\n\tprivate Date dateAccepted = null;\r\n\tprivate Date dateCompleted = null;\r\n\tprivate Date dateExpired = null;\r\n\tprivate Date dateIssued = null;\r\n\tprivate Integer daysToComplete = null;\r\n\tprivate Long endLocationId = null;\r\n\tprivate Boolean forCorporation = null;\r\n\tprivate Integer issuerCorporationId = null;\r\n\tprivate Integer issuerId = null;\r\n\tprivate Double price = null;\r\n\tprivate Double reward = null;\r\n\tprivate Long startLocationId = null;\r\n\tprivate String status = null;\r\n\tprivate ContractStatus statusEnum = null;\r\n\tprivate String title = null;\r\n\tprivate String type = null;\r\n\tprivate ContractType typeEnum = null;\r\n\tprivate Double volume = null;\r\n\r\n\t/**\r\n\t * New\r\n\t */\r\n\tprivate RawContract() {\r\n\t}\r\n\r\n\tpublic static RawContract create() {\r\n\t\treturn new RawContract();\r\n\t}\r\n\r\n\t/**\r\n\t * Raw\r\n\t *\r\n\t * @param contract\r\n\t */\r\n\tprotected RawContract(RawContract contract) {\r\n\t\tacceptorId = contract.acceptorId;\r\n\t\tassigneeId = contract.assigneeId;\r\n\t\tavailability = contract.availability;\r\n\t\tavailabilityEnum = contract.availabilityEnum;\r\n\t\tbuyout = contract.buyout;\r\n\t\tcollateral = contract.collateral;\r\n\t\tcontractId = contract.contractId;\r\n\t\tdateAccepted = contract.dateAccepted;\r\n\t\tdateCompleted = contract.dateCompleted;\r\n\t\tdateExpired = contract.dateExpired;\r\n\t\tdateIssued = contract.dateIssued;\r\n\t\tdaysToComplete = contract.daysToComplete;\r\n\t\tendLocationId = contract.endLocationId;\r\n\t\tforCorporation = contract.forCorporation;\r\n\t\tissuerCorporationId = contract.issuerCorporationId;\r\n\t\tissuerId = contract.issuerId;\r\n\t\tprice = contract.price;\r\n\t\treward = contract.reward;\r\n\t\tstartLocationId = contract.startLocationId;\r\n\t\tstatus = contract.status;\r\n\t\tstatusEnum = contract.statusEnum;\r\n\t\ttitle = contract.title;\r\n\t\ttype = contract.type;\r\n\t\ttypeEnum = contract.typeEnum;\r\n\t\tvolume = contract.volume;\r\n\t}\r\n\r\n\t/**\r\n\t * ESI Character\r\n\t *\r\n\t * @param contract\r\n\t */\r\n\tpublic RawContract(CharacterContractsResponse contract) {\r\n\t\tacceptorId = SafeConverter.toInteger(contract.getAcceptorId());\r\n\t\tassigneeId = SafeConverter.toInteger(contract.getAssigneeId());\r\n\t\tavailability = contract.getAvailabilityString();\r\n\t\tavailabilityEnum = RawConverter.toContractAvailability(contract.getAvailability());\r\n\t\tbuyout = contract.getBuyout();\r\n\t\tcollateral = contract.getCollateral();\r\n\t\tcontractId = SafeConverter.toInteger(contract.getContractId());\r\n\t\tdateAccepted = RawConverter.toDate(contract.getDateAccepted());\r\n\t\tdateCompleted = RawConverter.toDate(contract.getDateCompleted());\r\n\t\tdateExpired = RawConverter.toDate(contract.getDateExpired());\r\n\t\tdateIssued = RawConverter.toDate(contract.getDateIssued());\r\n\t\tdaysToComplete = SafeConverter.toInteger(contract.getDaysToComplete());\r\n\t\tendLocationId = contract.getEndLocationId();\r\n\t\tforCorporation = contract.getForCorporation();\r\n\t\tissuerCorporationId = SafeConverter.toInteger(contract.getIssuerCorporationId());\r\n\t\tissuerId = SafeConverter.toInteger(contract.getIssuerId());\r\n\t\tprice = contract.getPrice();\r\n\t\treward = contract.getReward();\r\n\t\tstartLocationId = contract.getStartLocationId();\r\n\t\tstatus = contract.getStatusString();\r\n\t\tstatusEnum = RawConverter.toContractStatus(contract.getStatus());\r\n\t\ttitle = contract.getTitle();\r\n\t\ttype = contract.getTypeString();\r\n\t\ttypeEnum = RawConverter.toContractType(contract.getType());\r\n\t\tvolume = contract.getVolume();\r\n\t}\r\n\r\n\t/**\r\n\t * ESI Corporation\r\n\t *\r\n\t * @param contract\r\n\t */\r\n\tpublic RawContract(CorporationContractsResponse contract) {\r\n\t\tacceptorId = SafeConverter.toInteger(contract.getAcceptorId());\r\n\t\tassigneeId = SafeConverter.toInteger(contract.getAssigneeId());\r\n\t\tavailability = contract.getAvailabilityString();\r\n\t\tavailabilityEnum = RawConverter.toContractAvailability(contract.getAvailability());\r\n\t\tbuyout = contract.getBuyout();\r\n\t\tcollateral = contract.getCollateral();\r\n\t\tcontractId = SafeConverter.toInteger(contract.getContractId());\r\n\t\tdateAccepted = RawConverter.toDate(contract.getDateAccepted());\r\n\t\tdateCompleted = RawConverter.toDate(contract.getDateCompleted());\r\n\t\tdateExpired = RawConverter.toDate(contract.getDateExpired());\r\n\t\tdateIssued = RawConverter.toDate(contract.getDateIssued());\r\n\t\tdaysToComplete = SafeConverter.toInteger(contract.getDaysToComplete());\r\n\t\tendLocationId = contract.getEndLocationId();\r\n\t\tforCorporation = contract.getForCorporation();\r\n\t\tissuerCorporationId = SafeConverter.toInteger(contract.getIssuerCorporationId());\r\n\t\tissuerId = SafeConverter.toInteger(contract.getIssuerId());\r\n\t\tprice = contract.getPrice();\r\n\t\treward = contract.getReward();\r\n\t\tstartLocationId = contract.getStartLocationId();\r\n\t\tstatus = contract.getStatusString();\r\n\t\tstatusEnum = RawConverter.toContractStatus(contract.getStatus());\r\n\t\ttitle = contract.getTitle();\r\n\t\ttype = contract.getTypeString();\r\n\t\ttypeEnum = RawConverter.toContractType(contract.getType());\r\n\t\tvolume = contract.getVolume();\r\n\t}\r\n\r\n\tpublic final long getAcceptorID() {\r\n\t\treturn acceptorId;\r\n\t}\r\n\r\n\tpublic void setAcceptorID(Integer acceptorId) {\r\n\t\tthis.acceptorId = acceptorId;\r\n\t}\r\n\r\n\tpublic final long getAssigneeID() {\r\n\t\treturn assigneeId;\r\n\t}\r\n\r\n\tpublic void setAssigneeID(Integer assigneeId) {\r\n\t\tthis.assigneeId = assigneeId;\r\n\t}\r\n\r\n\tpublic ContractAvailability getAvailability() {\r\n\t\treturn availabilityEnum;\r\n\t}\r\n\r\n\tpublic void setAvailability(ContractAvailability availability) {\r\n\t\tthis.availabilityEnum = availability;\r\n\t}\r\n\r\n\tpublic String getAvailabilityString() {\r\n\t\treturn availability;\r\n\t}\r\n\r\n\tpublic void setAvailabilityString(String availabilityString) {\r\n\t\tthis.availability = availabilityString;\r\n\t}\r\n\r\n\tpublic Double getBuyout() {\r\n\t\treturn buyout;\r\n\t}\r\n\r\n\tpublic void setBuyout(Double buyout) {\r\n\t\tthis.buyout = buyout;\r\n\t}\r\n\r\n\tpublic Double getCollateral() {\r\n\t\treturn collateral;\r\n\t}\r\n\r\n\tpublic void setCollateral(Double collateral) {\r\n\t\tthis.collateral = collateral;\r\n\t}\r\n\r\n\tpublic Integer getContractID() {\r\n\t\treturn contractId;\r\n\t}\r\n\r\n\tpublic void setContractID(Integer contractId) {\r\n\t\tthis.contractId = contractId;\r\n\t}\r\n\r\n\tpublic Date getDateAccepted() {\r\n\t\treturn dateAccepted;\r\n\t}\r\n\r\n\tpublic void setDateAccepted(Date dateAccepted) {\r\n\t\tthis.dateAccepted = dateAccepted;\r\n\t}\r\n\r\n\tpublic Date getDateCompleted() {\r\n\t\treturn dateCompleted;\r\n\t}\r\n\r\n\tpublic void setDateCompleted(Date dateCompleted) {\r\n\t\tthis.dateCompleted = dateCompleted;\r\n\t}\r\n\r\n\tpublic Date getDateExpired() {\r\n\t\treturn dateExpired;\r\n\t}\r\n\r\n\tpublic void setDateExpired(Date dateExpired) {\r\n\t\tthis.dateExpired = dateExpired;\r\n\t}\r\n\r\n\tpublic Date getDateIssued() {\r\n\t\treturn dateIssued;\r\n\t}\r\n\r\n\tpublic void setDateIssued(Date dateIssued) {\r\n\t\tthis.dateIssued = dateIssued;\r\n\t}\r\n\r\n\tpublic Integer getDaysToComplete() {\r\n\t\treturn daysToComplete;\r\n\t}\r\n\r\n\tpublic void setDaysToComplete(Integer daysToComplete) {\r\n\t\tthis.daysToComplete = daysToComplete;\r\n\t}\r\n\r\n\tpublic Long getEndLocationID() {\r\n\t\treturn endLocationId;\r\n\t}\r\n\r\n\tpublic void setEndLocationID(Long endLocationId) {\r\n\t\tthis.endLocationId = endLocationId;\r\n\t}\r\n\r\n\tpublic Boolean isForCorp() {\r\n\t\treturn forCorporation;\r\n\t}\r\n\r\n\tpublic void setForCorporation(Boolean forCorporation) {\r\n\t\tthis.forCorporation = forCorporation;\r\n\t}\r\n\r\n\tpublic final long getIssuerCorpID() {\r\n\t\treturn issuerCorporationId;\r\n\t}\r\n\r\n\tpublic void setIssuerCorporationID(Integer issuerCorporationId) {\r\n\t\tthis.issuerCorporationId = issuerCorporationId;\r\n\t}\r\n\r\n\tpublic final long getIssuerID() {\r\n\t\treturn issuerId;\r\n\t}\r\n\r\n\tpublic void setIssuerID(Integer issuerId) {\r\n\t\tthis.issuerId = issuerId;\r\n\t}\r\n\r\n\tpublic Double getPrice() {\r\n\t\treturn price;\r\n\t}\r\n\r\n\tpublic void setPrice(Double price) {\r\n\t\tthis.price = price;\r\n\t}\r\n\r\n\tpublic Double getReward() {\r\n\t\treturn reward;\r\n\t}\r\n\r\n\tpublic void setReward(Double reward) {\r\n\t\tthis.reward = reward;\r\n\t}\r\n\r\n\tpublic Long getStartLocationID() {\r\n\t\treturn startLocationId;\r\n\t}\r\n\r\n\tpublic void setStartLocationID(Long startLocationId) {\r\n\t\tthis.startLocationId = startLocationId;\r\n\t}\r\n\r\n\tpublic ContractStatus getStatus() {\r\n\t\treturn statusEnum;\r\n\t}\r\n\r\n\tpublic void setStatus(ContractStatus status) {\r\n\t\tthis.statusEnum = status;\r\n\t}\r\n\r\n\tpublic String getStatusString() {\r\n\t\treturn status;\r\n\t}\r\n\r\n\tpublic void setStatusString(String statusString) {\r\n\t\tthis.status = statusString;\r\n\t}\r\n\r\n\tpublic String getTitle() {\r\n\t\treturn title;\r\n\t}\r\n\r\n\tpublic void setTitle(String title) {\r\n\t\tthis.title = title;\r\n\t}\r\n\r\n\tpublic ContractType getType() {\r\n\t\treturn typeEnum;\r\n\t}\r\n\r\n\tpublic void setType(ContractType type) {\r\n\t\tthis.typeEnum = type;\r\n\t}\r\n\r\n\tpublic String getTypeString() {\r\n\t\treturn type;\r\n\t}\r\n\r\n\tpublic void setTypeString(String typeString) {\r\n\t\tthis.type = typeString;\r\n\t}\r\n\r\n\tpublic Double getVolume() {\r\n\t\treturn volume;\r\n\t}\r\n\r\n\tpublic void setVolume(Double volume) {\r\n\t\tthis.volume = volume;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/raw/RawContractItem.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.raw;\r\n\r\nimport net.nikr.eve.jeveasset.data.api.my.MyBlueprint;\r\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\r\nimport net.troja.eve.esi.model.ContractItemsResponse;\r\nimport net.troja.eve.esi.model.PublicContractsItemsResponse;\r\n\r\n\r\npublic class RawContractItem {\r\n\r\n\tprivate Boolean isIncluded = null;\r\n\tprivate Boolean isSingleton = null;\r\n\tprivate Integer quantity = null;\r\n\tprivate Integer rawQuantity = null;\r\n\tprivate Long recordId = null;\r\n\tprivate Integer typeId = null;\r\n\tprivate Long itemId = null;\r\n\tprivate Integer runs = null;\r\n\tprivate Integer materialEfficiency = null;\r\n\tprivate Integer timeEfficiency = null;\r\n\r\n\t/**\r\n\t * New\r\n\t */\r\n\tprivate RawContractItem() { }\r\n\r\n\tpublic static RawContractItem create() {\r\n\t\treturn new RawContractItem();\r\n\t}\r\n\r\n\t/**\r\n\t * Raw\r\n\t *\r\n\t * @param contractItem\r\n\t */\r\n\tprotected RawContractItem(RawContractItem contractItem) {\r\n\t\tisIncluded = contractItem.isIncluded;\r\n\t\tisSingleton = contractItem.isSingleton;\r\n\t\tquantity = contractItem.quantity;\r\n\t\trawQuantity = contractItem.rawQuantity;\r\n\t\trecordId = contractItem.recordId;\r\n\t\ttypeId = contractItem.typeId;\r\n\t\titemId = contractItem.itemId;\r\n\t\truns = contractItem.runs;\r\n\t\tmaterialEfficiency = contractItem.materialEfficiency;\r\n\t\ttimeEfficiency = contractItem.timeEfficiency;\r\n\t}\r\n\r\n\t/**\r\n\t * ESI Character/Corporation\r\n\t *\r\n\t * @param contractItem\r\n\t */\r\n\tpublic RawContractItem(ContractItemsResponse contractItem) {\r\n\t\tisIncluded = contractItem.getIsIncluded();\r\n\t\tisSingleton = contractItem.getIsSingleton();\r\n\t\tquantity = SafeConverter.toInteger(contractItem.getQuantity());\r\n\t\trawQuantity = SafeConverter.toInteger(contractItem.getRawQuantity());\r\n\t\trecordId = contractItem.getRecordId();\r\n\t\ttypeId = SafeConverter.toInteger(contractItem.getTypeId());\r\n\t}\r\n\r\n\t/**\r\n\t * ESI Public\r\n\t *\r\n\t * @param contractItem\r\n\t */\r\n\tpublic RawContractItem(PublicContractsItemsResponse contractItem) {\r\n\t\tisIncluded = contractItem.getIsIncluded();\r\n\t\tisSingleton = false;\r\n\t\tquantity = SafeConverter.toInteger(contractItem.getQuantity());\r\n\t\tif (RawConverter.toBoolean(contractItem.getIsBlueprintCopy())) {\r\n\t\t\trawQuantity = -2;\r\n\t\t} else {\r\n\t\t\trawQuantity = SafeConverter.toInteger(contractItem.getQuantity());\r\n\t\t}\r\n\t\trecordId = contractItem.getRecordId();\r\n\t\ttypeId = SafeConverter.toInteger(contractItem.getTypeId());\r\n\t\titemId = contractItem.getItemId();\r\n\t\truns = SafeConverter.toInteger(contractItem.getRuns());\r\n\t\tmaterialEfficiency = SafeConverter.toInteger(contractItem.getMaterialEfficiency());\r\n\t\ttimeEfficiency = SafeConverter.toInteger(contractItem.getTimeEfficiency());\r\n\t}\r\n\r\n\tpublic MyBlueprint getBlueprint() {\r\n\t\tif (runs != null || materialEfficiency != null || timeEfficiency != null) {\r\n\t\t\treturn new MyBlueprint(this);\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Boolean isIncluded() {\r\n\t\treturn isIncluded;\r\n\t}\r\n\r\n\tpublic final void setIncluded(Boolean isIncluded) {\r\n\t\tthis.isIncluded = isIncluded;\r\n\t}\r\n\r\n\tpublic Boolean isSingleton() {\r\n\t\treturn isSingleton;\r\n\t}\r\n\r\n\tpublic final void setSingleton(Boolean isSingleton) {\r\n\t\tthis.isSingleton = isSingleton;\r\n\t}\r\n\r\n\tpublic Integer getQuantity() {\r\n\t\treturn quantity;\r\n\t}\r\n\r\n\tpublic final void setQuantity(Integer quantity) {\r\n\t\tthis.quantity = quantity;\r\n\t}\r\n\r\n\tpublic Integer getRawQuantity() {\r\n\t\treturn rawQuantity;\r\n\t}\r\n\r\n\tpublic final void setRawQuantity(Integer rawQuantity) {\r\n\t\tthis.rawQuantity = rawQuantity;\r\n\t}\r\n\r\n\tpublic Long getRecordID() {\r\n\t\treturn recordId;\r\n\t}\r\n\r\n\tpublic final void setRecordID(Long recordId) {\r\n\t\tthis.recordId = recordId;\r\n\t}\r\n\r\n\tpublic Integer getTypeID() {\r\n\t\treturn typeId;\r\n\t}\r\n\r\n\tpublic final void setTypeID(Integer typeId) {\r\n\t\tthis.typeId = typeId;\r\n\t}\r\n\r\n\tpublic Long getItemID() {\r\n\t\treturn itemId;\r\n\t}\r\n\r\n\tpublic void setItemID(Long itemId) {\r\n\t\tthis.itemId = itemId;\r\n\t}\r\n\r\n\tpublic Integer getLicensedRuns() {\r\n\t\treturn runs;\r\n\t}\r\n\r\n\tpublic void setLicensedRuns(Integer runs) {\r\n\t\tthis.runs = runs;\r\n\t}\r\n\r\n\tpublic Integer getME() {\r\n\t\treturn materialEfficiency;\r\n\t}\r\n\r\n\tpublic void setME(Integer materialEfficiency) {\r\n\t\tthis.materialEfficiency = materialEfficiency;\r\n\t}\r\n\r\n\tpublic Integer getTE() {\r\n\t\treturn timeEfficiency;\r\n\t}\r\n\r\n\tpublic void setTE(Integer timeEfficiency) {\r\n\t\tthis.timeEfficiency = timeEfficiency;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/raw/RawExtraction.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.raw;\r\n\r\nimport java.util.Date;\r\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\r\nimport net.troja.eve.esi.model.CorporationMiningExtractionsResponse;\r\n\r\n\r\npublic class RawExtraction {\r\n\r\n\tprivate Date chunkArrivalTime;\r\n\tprivate Date extractionStartTime;\r\n\tprivate Integer moonId;\r\n\tprivate Date naturalDecayTime;\r\n\tprivate Long structureId;\r\n\r\n\tprivate RawExtraction() { }\r\n\r\n\tpublic static RawExtraction create() {\r\n\t\treturn new RawExtraction();\r\n\t}\r\n\r\n\tpublic RawExtraction(RawExtraction extraction) {\r\n\t\tthis.chunkArrivalTime = extraction.chunkArrivalTime;\r\n\t\tthis.extractionStartTime = extraction.extractionStartTime;\r\n\t\tthis.moonId = extraction.moonId;\r\n\t\tthis.naturalDecayTime = extraction.naturalDecayTime;\r\n\t\tthis.structureId = extraction.structureId;\r\n\t}\r\n\r\n\tpublic RawExtraction(CorporationMiningExtractionsResponse response) {\r\n\t\tthis.chunkArrivalTime = RawConverter.toDate(response.getChunkArrivalTime());\r\n\t\tthis.extractionStartTime = RawConverter.toDate(response.getExtractionStartTime());\r\n\t\tthis.moonId = SafeConverter.toInteger(response.getMoonId());\r\n\t\tthis.naturalDecayTime = RawConverter.toDate(response.getNaturalDecayTime());\r\n\t\tthis.structureId = response.getStructureId();\r\n\t}\r\n\r\n\tpublic Date getChunkArrivalTime() {\r\n\t\treturn chunkArrivalTime;\r\n\t}\r\n\r\n\tpublic void setChunkArrivalTime(Date chunkArrivalTime) {\r\n\t\tthis.chunkArrivalTime = chunkArrivalTime;\r\n\t}\r\n\r\n\tpublic Date getExtractionStartTime() {\r\n\t\treturn extractionStartTime;\r\n\t}\r\n\r\n\tpublic void setExtractionStartTime(Date extractionStartTime) {\r\n\t\tthis.extractionStartTime = extractionStartTime;\r\n\t}\r\n\r\n\tpublic Integer getMoonID() {\r\n\t\treturn moonId;\r\n\t}\r\n\r\n\tpublic void setMoonID(Integer moonId) {\r\n\t\tthis.moonId = moonId;\r\n\t}\r\n\r\n\tpublic Date getNaturalDecayTime() {\r\n\t\treturn naturalDecayTime;\r\n\t}\r\n\r\n\tpublic void setNaturalDecayTime(Date naturalDecayTime) {\r\n\t\tthis.naturalDecayTime = naturalDecayTime;\r\n\t}\r\n\r\n\tpublic Long getStructureID() {\r\n\t\treturn structureId;\r\n\t}\r\n\r\n\tpublic void setStructureID(Long structureId) {\r\n\t\tthis.structureId = structureId;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/raw/RawIndustryJob.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.raw;\r\n\r\nimport java.util.Date;\r\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\r\nimport net.troja.eve.esi.model.CharacterIndustryJobsResponse;\r\nimport net.troja.eve.esi.model.CorporationIndustryJobsResponse;\r\n\r\n\r\npublic class RawIndustryJob {\r\n\r\n\tpublic enum IndustryJobStatus {\r\n\t\tACTIVE(\"active\"),\r\n\t\tCANCELLED(\"cancelled\"),\r\n\t\tDELIVERED(\"delivered\"),\r\n\t\tPAUSED(\"paused\"),\r\n\t\tREADY(\"ready\"),\r\n\t\tREVERTED(\"reverted\"),\r\n\t\tARCHIVED(\"archived\");\r\n\r\n\t\tprivate final String value;\r\n\r\n\t\tIndustryJobStatus(String value) {\r\n\t\t\tthis.value = value;\r\n\t\t}\r\n\r\n\t\tpublic String getValue() {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Integer activityId = null;\r\n\tprivate Long blueprintId = null;\r\n\tprivate Long blueprintLocationId = null;\r\n\tprivate Integer blueprintTypeId = null;\r\n\tprivate Integer completedCharacterId = null;\r\n\tprivate Date completedDate = null;\r\n\tprivate Double cost = null;\r\n\tprivate Integer duration = null;\r\n\tprivate Date endDate = null;\r\n\tprivate Long facilityId = null;\r\n\tprivate Integer installerId = null;\r\n\tprivate Integer jobId = null;\r\n\tprivate Integer licensedRuns = null;\r\n\tprivate Long outputLocationId = null;\r\n\tprivate Date pauseDate = null;\r\n\tprivate Float probability = null;\r\n\tprivate Integer productTypeId = null;\r\n\tprivate Integer runs = null;\r\n\tprivate Date startDate = null;\r\n\tprivate Long stationId = null;\r\n\tprivate String status = null;\r\n\tprivate IndustryJobStatus statusEnum = null;\r\n\tprivate Integer successfulRuns = null;\r\n\r\n\t/**\r\n\t * New\r\n\t */\r\n\tprivate RawIndustryJob() {\r\n\t}\r\n\r\n\tpublic static RawIndustryJob create() {\r\n\t\treturn new RawIndustryJob();\r\n\t}\r\n\r\n\t/**\r\n\t * Raw\r\n\t *\r\n\t * @param industryJob\r\n\t */\r\n\tprotected RawIndustryJob(RawIndustryJob industryJob) {\r\n\t\tactivityId = industryJob.activityId;\r\n\t\tblueprintId = industryJob.blueprintId;\r\n\t\tblueprintLocationId = industryJob.blueprintLocationId;\r\n\t\tblueprintTypeId = industryJob.blueprintTypeId;\r\n\t\tcompletedCharacterId = industryJob.completedCharacterId;\r\n\t\tcompletedDate = industryJob.completedDate;\r\n\t\tcost = industryJob.cost;\r\n\t\tduration = industryJob.duration;\r\n\t\tendDate = industryJob.endDate;\r\n\t\tfacilityId = industryJob.facilityId;\r\n\t\tinstallerId = industryJob.installerId;\r\n\t\tjobId = industryJob.jobId;\r\n\t\tlicensedRuns = industryJob.licensedRuns;\r\n\t\toutputLocationId = industryJob.outputLocationId;\r\n\t\tpauseDate = industryJob.pauseDate;\r\n\t\tprobability = industryJob.probability;\r\n\t\tproductTypeId = industryJob.productTypeId;\r\n\t\truns = industryJob.runs;\r\n\t\tstartDate = industryJob.startDate;\r\n\t\tstationId = industryJob.stationId;\r\n\t\tstatus = industryJob.status;\r\n\t\tstatusEnum = industryJob.statusEnum;\r\n\t\tsuccessfulRuns = industryJob.successfulRuns;\r\n\t}\r\n\r\n\t/**\r\n\t * ESI Character\r\n\t *\r\n\t * @param industryJob\r\n\t */\r\n\tpublic RawIndustryJob(CharacterIndustryJobsResponse industryJob) {\r\n\t\tactivityId = SafeConverter.toInteger(industryJob.getActivityId());\r\n\t\tblueprintId = industryJob.getBlueprintId();\r\n\t\tblueprintLocationId = industryJob.getBlueprintLocationId();\r\n\t\tblueprintTypeId = SafeConverter.toInteger(industryJob.getBlueprintTypeId());\r\n\t\tcompletedCharacterId = SafeConverter.toInteger(industryJob.getCompletedCharacterId());\r\n\t\tcompletedDate = RawConverter.toDate(industryJob.getCompletedDate());\r\n\t\tcost = industryJob.getCost();\r\n\t\tduration = SafeConverter.toInteger(industryJob.getDuration());\r\n\t\tendDate = RawConverter.toDate(industryJob.getEndDate());\r\n\t\tfacilityId = industryJob.getFacilityId();\r\n\t\tinstallerId = SafeConverter.toInteger(industryJob.getInstallerId());\r\n\t\tjobId = SafeConverter.toInteger(industryJob.getJobId());\r\n\t\tlicensedRuns = SafeConverter.toInteger(industryJob.getLicensedRuns());\r\n\t\toutputLocationId = industryJob.getOutputLocationId();\r\n\t\tpauseDate = RawConverter.toDate(industryJob.getPauseDate());\r\n\t\tprobability = SafeConverter.toFloat(industryJob.getProbability());\r\n\t\tproductTypeId = SafeConverter.toInteger(industryJob.getProductTypeId());\r\n\t\truns = SafeConverter.toInteger(industryJob.getRuns());\r\n\t\tstartDate = RawConverter.toDate(industryJob.getStartDate());\r\n\t\tstationId = industryJob.getStationId();\r\n\t\tstatus = industryJob.getStatusString();\r\n\t\tstatusEnum = RawConverter.toIndustryJobStatus(industryJob.getStatus());\r\n\t\tsuccessfulRuns = SafeConverter.toInteger(industryJob.getSuccessfulRuns());\r\n\t}\r\n\r\n\t/**\r\n\t * ESI Corporation\r\n\t *\r\n\t * @param industryJob\r\n\t */\r\n\tpublic RawIndustryJob(CorporationIndustryJobsResponse industryJob) {\r\n\t\tactivityId = SafeConverter.toInteger(industryJob.getActivityId());\r\n\t\tblueprintId = industryJob.getBlueprintId();\r\n\t\tblueprintLocationId = industryJob.getBlueprintLocationId();\r\n\t\tblueprintTypeId = SafeConverter.toInteger(industryJob.getBlueprintTypeId());\r\n\t\tcompletedCharacterId = SafeConverter.toInteger(industryJob.getCompletedCharacterId());\r\n\t\tcompletedDate = RawConverter.toDate(industryJob.getCompletedDate());\r\n\t\tcost = industryJob.getCost();\r\n\t\tduration = SafeConverter.toInteger(industryJob.getDuration());\r\n\t\tendDate = RawConverter.toDate(industryJob.getEndDate());\r\n\t\tfacilityId = industryJob.getFacilityId();\r\n\t\tinstallerId = SafeConverter.toInteger(industryJob.getInstallerId());\r\n\t\tjobId = SafeConverter.toInteger(industryJob.getJobId());\r\n\t\tlicensedRuns = SafeConverter.toInteger(industryJob.getLicensedRuns());\r\n\t\toutputLocationId = industryJob.getOutputLocationId();\r\n\t\tpauseDate = RawConverter.toDate(industryJob.getPauseDate());\r\n\t\tprobability = SafeConverter.toFloat(industryJob.getProbability());\r\n\t\tproductTypeId = SafeConverter.toInteger(industryJob.getProductTypeId());\r\n\t\truns = SafeConverter.toInteger(industryJob.getRuns());\r\n\t\tstartDate = RawConverter.toDate(industryJob.getStartDate());\r\n\t\tstationId = industryJob.getLocationId();\r\n\t\tstatus = industryJob.getStatusString();\r\n\t\tstatusEnum = RawConverter.toIndustryJobStatus(industryJob.getStatus());\r\n\t\tsuccessfulRuns = SafeConverter.toInteger(industryJob.getSuccessfulRuns());\r\n\t}\r\n\r\n\tpublic final Integer getActivityID() {\r\n\t\treturn activityId;\r\n\t}\r\n\r\n\tpublic void setActivityID(Integer activityId) {\r\n\t\tthis.activityId = activityId;\r\n\t}\r\n\r\n\tpublic Long getBlueprintID() {\r\n\t\treturn blueprintId;\r\n\t}\r\n\r\n\tpublic void setBlueprintID(Long blueprintId) {\r\n\t\tthis.blueprintId = blueprintId;\r\n\t}\r\n\r\n\tpublic Long getBlueprintLocationID() {\r\n\t\treturn blueprintLocationId;\r\n\t}\r\n\r\n\tpublic void setBlueprintLocationID(Long blueprintLocationId) {\r\n\t\tthis.blueprintLocationId = blueprintLocationId;\r\n\t}\r\n\r\n\tpublic Integer getBlueprintTypeID() {\r\n\t\treturn blueprintTypeId;\r\n\t}\r\n\r\n\tpublic void setBlueprintTypeID(Integer blueprintTypeId) {\r\n\t\tthis.blueprintTypeId = blueprintTypeId;\r\n\t}\r\n\r\n\tpublic Integer getCompletedCharacterID() {\r\n\t\treturn completedCharacterId;\r\n\t}\r\n\r\n\tpublic void setCompletedCharacterID(Integer completedCharacterId) {\r\n\t\tthis.completedCharacterId = completedCharacterId;\r\n\t}\r\n\r\n\tpublic Date getCompletedDate() {\r\n\t\treturn completedDate;\r\n\t}\r\n\r\n\tpublic void setCompletedDate(Date completedDate) {\r\n\t\tthis.completedDate = completedDate;\r\n\t}\r\n\r\n\tpublic Double getCost() {\r\n\t\treturn cost;\r\n\t}\r\n\r\n\tpublic void setCost(Double cost) {\r\n\t\tthis.cost = cost;\r\n\t}\r\n\r\n\tpublic Integer getDuration() {\r\n\t\treturn duration;\r\n\t}\r\n\r\n\tpublic void setDuration(Integer duration) {\r\n\t\tthis.duration = duration;\r\n\t}\r\n\r\n\tpublic final Date getEndDate() {\r\n\t\treturn endDate;\r\n\t}\r\n\r\n\tpublic void setEndDate(Date endDate) {\r\n\t\tthis.endDate = endDate;\r\n\t}\r\n\r\n\tpublic Long getFacilityID() {\r\n\t\treturn facilityId;\r\n\t}\r\n\r\n\tpublic void setFacilityID(Long facilityId) {\r\n\t\tthis.facilityId = facilityId;\r\n\t}\r\n\r\n\tpublic final long getInstallerID() {\r\n\t\treturn installerId;\r\n\t}\r\n\r\n\tpublic void setInstallerID(Integer installerId) {\r\n\t\tthis.installerId = installerId;\r\n\t}\r\n\r\n\tpublic Integer getJobID() {\r\n\t\treturn jobId;\r\n\t}\r\n\r\n\tpublic void setJobID(Integer jobId) {\r\n\t\tthis.jobId = jobId;\r\n\t}\r\n\r\n\tpublic final Integer getLicensedRuns() {\r\n\t\treturn licensedRuns;\r\n\t}\r\n\r\n\tpublic void setLicensedRuns(Integer licensedRuns) {\r\n\t\tthis.licensedRuns = licensedRuns;\r\n\t}\r\n\r\n\tpublic Long getOutputLocationID() {\r\n\t\treturn outputLocationId;\r\n\t}\r\n\r\n\tpublic void setOutputLocationID(Long outputLocationId) {\r\n\t\tthis.outputLocationId = outputLocationId;\r\n\t}\r\n\r\n\tpublic Date getPauseDate() {\r\n\t\treturn pauseDate;\r\n\t}\r\n\r\n\tpublic void setPauseDate(Date pauseDate) {\r\n\t\tthis.pauseDate = pauseDate;\r\n\t}\r\n\r\n\tpublic Float getProbability() {\r\n\t\treturn probability;\r\n\t}\r\n\r\n\tpublic void setProbability(Float probability) {\r\n\t\tthis.probability = probability;\r\n\t}\r\n\r\n\tpublic Integer getProductTypeID() {\r\n\t\treturn productTypeId;\r\n\t}\r\n\r\n\tpublic void setProductTypeID(Integer productTypeId) {\r\n\t\tthis.productTypeId = productTypeId;\r\n\t}\r\n\r\n\tpublic final int getRuns() {\r\n\t\treturn runs;\r\n\t}\r\n\r\n\tpublic void setRuns(Integer runs) {\r\n\t\tthis.runs = runs;\r\n\t}\r\n\r\n\tpublic Date getStartDate() {\r\n\t\treturn startDate;\r\n\t}\r\n\r\n\tpublic void setStartDate(Date startDate) {\r\n\t\tthis.startDate = startDate;\r\n\t}\r\n\r\n\tpublic Long getStationID() {\r\n\t\treturn stationId;\r\n\t}\r\n\r\n\tpublic void setStationID(Long stationId) {\r\n\t\tthis.stationId = stationId;\r\n\t}\r\n\r\n\tpublic IndustryJobStatus getStatus() {\r\n\t\treturn statusEnum;\r\n\t}\r\n\r\n\tpublic void setStatus(IndustryJobStatus status) {\r\n\t\tthis.statusEnum = status;\r\n\t}\r\n\r\n\tpublic String getStatusString() {\r\n\t\treturn status;\r\n\t}\r\n\r\n\tpublic void setStatusString(String statusString) {\r\n\t\tthis.status = statusString;\r\n\t}\r\n\r\n\tpublic Integer getSuccessfulRuns() {\r\n\t\treturn successfulRuns;\r\n\t}\r\n\r\n\tpublic void setSuccessfulRuns(Integer successfulRuns) {\r\n\t\tthis.successfulRuns = successfulRuns;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/raw/RawJournal.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.raw;\r\n\r\nimport java.util.Date;\r\nimport net.nikr.eve.jeveasset.i18n.TabsJournal;\r\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\r\nimport net.troja.eve.esi.model.CharacterWalletJournalResponse;\r\nimport net.troja.eve.esi.model.CorporationWalletJournalResponse;\r\n\r\n\r\npublic class RawJournal {\r\n\r\n\tpublic enum ArgName {\r\n\t\tSTATION_NAME,\r\n\t\tNPC_NAME,\r\n\t\tDESTROYED_SHIP_TYPE_ID,\r\n\t\tPLAYER_NAME,\r\n\t\tJOB_ID,\r\n\t\tCONTRACT_ID,\r\n\t\tTRANSACTION_ID,\r\n\t\tCORPORATION_NAME,\r\n\t\tALLIANCE_NAME,\r\n\t\tPLANET_NAME,\r\n\t}\r\n\r\n\tpublic enum ArgID {\r\n\t\tSTATION_ID,\r\n\t\tNPC_ID,\r\n\t\tPLAYER_ID,\r\n\t\tSYSTEM_ID,\r\n\t\tCORPORATION_ID,\r\n\t\tALLIANCE_ID,\r\n\t\tPLANET_ID,\r\n\t}\r\n\r\n\tpublic enum ContextType {\r\n\t\tSTRUCTURE_ID(\"structure_id\") {\r\n\t\t\t@Override\r\n\t\t\tprotected String getI18N() {\r\n\t\t\t\treturn TabsJournal.get().contextStructureID();\r\n\t\t\t}\r\n\t\t},\r\n\t\tSTATION_ID(\"station_id\") {\r\n\t\t\t@Override\r\n\t\t\tprotected String getI18N() {\r\n\t\t\t\treturn TabsJournal.get().contextStationID();\r\n\t\t\t}\r\n\t\t},\r\n\t\tMARKET_TRANSACTION_ID(\"market_transaction_id\") {\r\n\t\t\t@Override\r\n\t\t\tprotected String getI18N() {\r\n\t\t\t\treturn TabsJournal.get().contextTransactionID();\r\n\t\t\t}\r\n\t\t},\r\n\t\tCHARACTER_ID(\"character_id\") {\r\n\t\t\t@Override\r\n\t\t\tprotected String getI18N() {\r\n\t\t\t\treturn TabsJournal.get().contextCharacterID();\r\n\t\t\t}\r\n\t\t},\r\n\t\tCORPORATION_ID(\"corporation_id\") {\r\n\t\t\t@Override\r\n\t\t\tprotected String getI18N() {\r\n\t\t\t\treturn TabsJournal.get().contextCorporationID();\r\n\t\t\t}\r\n\t\t},\r\n\t\tALLIANCE_ID(\"alliance_id\") {\r\n\t\t\t@Override\r\n\t\t\tprotected String getI18N() {\r\n\t\t\t\treturn TabsJournal.get().contextAllianceID();\r\n\t\t\t}\r\n\t\t},\r\n\t\tEVE_SYSTEM(\"eve_system\") {\r\n\t\t\t@Override\r\n\t\t\tprotected String getI18N() {\r\n\t\t\t\treturn TabsJournal.get().contextEveID();\r\n\t\t\t}\r\n\t\t},\r\n\t\tINDUSTRY_JOB_ID(\"industry_job_id\") {\r\n\t\t\t@Override\r\n\t\t\tprotected String getI18N() {\r\n\t\t\t\treturn TabsJournal.get().contextIndustryJobID();\r\n\t\t\t}\r\n\t\t},\r\n\t\tCONTRACT_ID(\"contract_id\") {\r\n\t\t\t@Override\r\n\t\t\tprotected String getI18N() {\r\n\t\t\t\treturn TabsJournal.get().contextContractID();\r\n\t\t\t}\r\n\t\t},\r\n\t\tPLANET_ID(\"planet_id\") {\r\n\t\t\t@Override\r\n\t\t\tprotected String getI18N() {\r\n\t\t\t\treturn TabsJournal.get().contextPlanetID();\r\n\t\t\t}\r\n\t\t},\r\n\t\tSYSTEM_ID(\"system_id\") {\r\n\t\t\t@Override\r\n\t\t\tprotected String getI18N() {\r\n\t\t\t\treturn TabsJournal.get().contextSystemID();\r\n\t\t\t}\r\n\t\t},\r\n\t\tTYPE_ID(\"type_id\") {\r\n\t\t\t@Override\r\n\t\t\tprotected String getI18N() {\r\n\t\t\t\treturn TabsJournal.get().contextTypeID();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprivate final String value;\r\n\r\n\t\tContextType(String value) {\r\n\t\t\tthis.value = value;\r\n\t\t}\r\n\r\n\t\tpublic String getValue() {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic String toString() {\r\n\t\t\treturn getI18N();\r\n\t\t}\r\n\r\n\t\tprotected abstract String getI18N();\r\n\t}\r\n\r\n\tprivate Double amount = null;\r\n\tprivate Double balance = null;\r\n\tprivate Long contextId;\r\n\tprivate String contextIdType;\r\n\tprivate ContextType contextIdTypeEnum;\r\n\tprivate Date date = null;\r\n\tprivate String description;\r\n\tprivate Integer firstPartyId = null;\r\n\tprivate String reason = null;\r\n\tprivate Long id = null;\r\n\tprivate String refType = null;\r\n\tprivate RawJournalRefType refTypeEnum = null;\r\n\tprivate Integer secondPartyId = null;\r\n\tprivate Double tax = null;\r\n\tprivate Integer taxReceiverId = null;\r\n\tprivate Integer accountKey = null;\r\n\r\n\t/**\r\n\t * New\r\n\t */\r\n\tprivate RawJournal() {\r\n\t}\r\n\r\n\tpublic static RawJournal create() {\r\n\t\treturn new RawJournal();\r\n\t}\r\n\r\n\t/**\r\n\t * Raw\r\n\t *\r\n\t * @param journal\r\n\t */\r\n\tprotected RawJournal(RawJournal journal) {\r\n\t\tamount = journal.amount;\r\n\t\tbalance = journal.balance;\r\n\t\tdate = journal.date;\r\n\t\tdescription = journal.description;\r\n\t\tcontextId = journal.contextId;\r\n\t\tcontextIdType = journal.contextIdType;\r\n\t\tcontextIdTypeEnum = journal.contextIdTypeEnum;\r\n\t\tfirstPartyId = journal.firstPartyId;\r\n\t\treason = journal.reason;\r\n\t\tid = journal.id;\r\n\t\trefType = journal.refType;\r\n\t\trefTypeEnum = journal.refTypeEnum;\r\n\t\tsecondPartyId = journal.secondPartyId;\r\n\t\ttax = journal.tax;\r\n\t\ttaxReceiverId = journal.taxReceiverId;\r\n\t\taccountKey = journal.accountKey;\r\n\t}\r\n\r\n\t/**\r\n\t * ESI Character\r\n\t *\r\n\t * @param journal\r\n\t * @param accountKey\r\n\t */\r\n\tpublic RawJournal(CharacterWalletJournalResponse journal, Integer accountKey) {\r\n\t\tamount = journal.getAmount();\r\n\t\tbalance = journal.getBalance();\r\n\t\tcontextId = journal.getContextId();\r\n\t\tcontextIdType = journal.getContextIdTypeString();\r\n\t\tcontextIdTypeEnum = RawConverter.toJournalContextType(journal.getContextIdType());\r\n\t\tdate = RawConverter.toDate(journal.getDate());\r\n\t\tdescription = journal.getDescription();\r\n\t\tfirstPartyId = SafeConverter.toInteger(journal.getFirstPartyId());\r\n\t\treason = journal.getReason();\r\n\t\tid = journal.getId();\r\n\t\trefType = journal.getRefTypeString();\r\n\t\trefTypeEnum = RawConverter.toJournalRefType(journal.getRefType());\r\n\t\tsecondPartyId = SafeConverter.toInteger(journal.getSecondPartyId());\r\n\t\ttax = journal.getTax();\r\n\t\ttaxReceiverId = SafeConverter.toInteger(journal.getTaxReceiverId());\r\n\t\tthis.accountKey = accountKey;\r\n\t}\r\n\r\n\t/**\r\n\t * ESI Corporation\r\n\t *\r\n\t * @param journal\r\n\t * @param accountKey\r\n\t */\r\n\tpublic RawJournal(CorporationWalletJournalResponse journal, Integer accountKey) {\r\n\t\tamount = journal.getAmount();\r\n\t\tbalance = journal.getBalance();\r\n\t\tcontextId = journal.getContextId();\r\n\t\tcontextIdType = journal.getContextIdTypeString();\r\n\t\tcontextIdTypeEnum = RawConverter.toJournalContextType(journal.getContextIdType());\r\n\t\tdate = RawConverter.toDate(journal.getDate());\r\n\t\tdescription = journal.getDescription();\r\n\t\tfirstPartyId = SafeConverter.toInteger(journal.getFirstPartyId());\r\n\t\treason = journal.getReason();\r\n\t\tid = journal.getId();\r\n\t\trefType = journal.getRefTypeString();\r\n\t\trefTypeEnum = RawConverter.toJournalRefType(journal.getRefType());\r\n\t\tsecondPartyId = SafeConverter.toInteger(journal.getSecondPartyId());\r\n\t\ttax = journal.getTax();\r\n\t\ttaxReceiverId = SafeConverter.toInteger(journal.getTaxReceiverId());\r\n\t\tthis.accountKey = accountKey;\r\n\t}\r\n\r\n\tpublic Double getAmount() {\r\n\t\treturn amount;\r\n\t}\r\n\r\n\tpublic void setAmount(Double amount) {\r\n\t\tthis.amount = amount;\r\n\t}\r\n\r\n\tpublic Double getBalance() {\r\n\t\treturn balance;\r\n\t}\r\n\r\n\tpublic void setBalance(Double balance) {\r\n\t\tthis.balance = balance;\r\n\t}\r\n\r\n\tpublic Long getContextID() {\r\n\t\treturn contextId;\r\n\t}\r\n\r\n\tpublic void setContextID(Long contextId) {\r\n\t\tthis.contextId = contextId;\r\n\t}\r\n\r\n\tpublic ContextType getContextType() {\r\n\t\treturn contextIdTypeEnum;\r\n\t}\r\n\r\n\tpublic String getContextTypeName() {\r\n\t\tif (contextIdTypeEnum == null) {\r\n\t\t\treturn \"\";\r\n\t\t} else {\r\n\t\t\treturn contextIdTypeEnum.toString();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void setContextType(ContextType contextType) {\r\n\t\tthis.contextIdTypeEnum = contextType;\r\n\t}\r\n\r\n\tpublic String getContextTypeString() {\r\n\t\treturn contextIdType;\r\n\t}\r\n\r\n\tpublic void setContextTypeString(String contextIdTypeString) {\r\n\t\tthis.contextIdType = contextIdTypeString;\r\n\t}\r\n\r\n\tpublic Date getDate() {\r\n\t\treturn date;\r\n\t}\r\n\r\n\tpublic void setDate(Date date) {\r\n\t\tthis.date = date;\r\n\t}\r\n\r\n\tpublic String getDescription() {\r\n\t\treturn description;\r\n\t}\r\n\r\n\tpublic void setDescription(String description) {\r\n\t\tthis.description = description;\r\n\t}\r\n\r\n\tpublic final Integer getFirstPartyID() {\r\n\t\treturn firstPartyId;\r\n\t}\r\n\r\n\tpublic void setFirstPartyID(Integer firstPartyId) {\r\n\t\tthis.firstPartyId = firstPartyId;\r\n\t}\r\n\r\n\tpublic String getReason() {\r\n\t\treturn reason;\r\n\t}\r\n\r\n\tpublic void setReason(String reason) {\r\n\t\tthis.reason = reason;\r\n\t}\r\n\r\n\tpublic Long getRefID() {\r\n\t\treturn id;\r\n\t}\r\n\r\n\tpublic void setRefID(Long refId) {\r\n\t\tthis.id = refId;\r\n\t}\r\n\r\n\tpublic RawJournalRefType getRefType() {\r\n\t\treturn refTypeEnum;\r\n\t}\r\n\r\n\tpublic void setRefType(RawJournalRefType refType) {\r\n\t\tthis.refTypeEnum = refType;\r\n\t}\r\n\r\n\tpublic String getRefTypeString() {\r\n\t\treturn refType;\r\n\t}\r\n\r\n\tpublic void setRefTypeString(String refTypeString) {\r\n\t\tthis.refType = refTypeString;\r\n\t}\r\n\r\n\tpublic final Integer getSecondPartyID() {\r\n\t\treturn secondPartyId;\r\n\t}\r\n\r\n\tpublic void setSecondPartyID(Integer secondPartyId) {\r\n\t\tthis.secondPartyId = secondPartyId;\r\n\t}\r\n\r\n\tpublic Double getTaxAmount() {\r\n\t\treturn tax;\r\n\t}\r\n\r\n\tpublic void setTax(Double tax) {\r\n\t\tthis.tax = tax;\r\n\t}\r\n\r\n\tpublic Integer getTaxReceiverID() {\r\n\t\treturn taxReceiverId;\r\n\t}\r\n\r\n\tpublic void setTaxReceiverID(Integer taxRecieverId) {\r\n\t\tthis.taxReceiverId = taxRecieverId;\r\n\t}\r\n\r\n\tpublic Integer getAccountKey() {\r\n\t\treturn accountKey;\r\n\t}\r\n\r\n\tpublic void setAccountKey(Integer accountKey) {\r\n\t\tthis.accountKey = accountKey;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/raw/RawJournalRefType.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.raw;\r\n\r\n\r\npublic enum RawJournalRefType {\r\n\tUNDEFINED(0, \"Undefined\"),\r\n\tPLAYER_TRADING(1, \"Player Trading\", RawJournal.ArgName.STATION_NAME, RawJournal.ArgID.STATION_ID),\r\n\tMARKET_TRANSACTION(2, \"Market Transaction\", RawJournal.ArgName.TRANSACTION_ID, null),\r\n\tGM_CASH_TRANSFER(3, \"GM Cash Transfer\"),\r\n\tATM_WITHDRAW(4, \"ATM Withdraw\"),\r\n\tATM_DEPOSIT(5, \"ATM Deposit\"),\r\n\tBACKWARD_COMPATIBLE(6, \"Backward Compatible\"),\r\n\tMISSION_REWARD(7, \"Mission Reward\", RawJournal.ArgName.PLAYER_NAME, RawJournal.ArgID.PLAYER_ID),\r\n\tCLONE_ACTIVATION(8, \"Clone Activation\"),\r\n\tINHERITANCE(9, \"Inheritance\"),\r\n\tPLAYER_DONATION(10, \"Player Donation\"),\r\n\tCORPORATION_PAYMENT(11, \"Corporation Payment\"),\r\n\tDOCKING_FEE(12, \"Docking Fee\"),\r\n\tOFFICE_RENTAL_FEE(13, \"Office Rental Fee\"),\r\n\tFACTORY_SLOT_RENTAL_FEE(14, \"Factory Slot Rental Fee\"),\r\n\tREPAIR_BILL(15, \"Repair Bill\"),\r\n\tBOUNTY(16, \"Bounty\"),\r\n\tBOUNTY_PRIZE(17, \"Bounty Prize\", RawJournal.ArgName.NPC_NAME, RawJournal.ArgID.NPC_ID),\r\n\tAGENTS_TEMPORARY(18, \"Agents_temporary\"),\r\n\tINSURANCE(19, \"Insurance\", RawJournal.ArgName.DESTROYED_SHIP_TYPE_ID, null),\r\n\tMISSION_EXPIRATION(20, \"Mission Expiration\"),\r\n\tMISSION_COMPLETION(21, \"Mission Completion\"),\r\n\tSHARES(22, \"Shares\"),\r\n\tCOURIER_MISSION_ESCROW(23, \"Courier Mission Escrow\"),\r\n\tMISSION_COST(24, \"Mission Cost\"),\r\n\tAGENT_MISCELLANEOUS(25, \"Agent Miscellaneous\"),\r\n\tLP_STORE(26, \"LP Store\"),\r\n\tAGENT_LOCATION_SERVICES(27, \"Agent Location Services\"),\r\n\tAGENT_DONATION(28, \"Agent Donation\"),\r\n\tAGENT_SECURITY_SERVICES(29, \"Agent Security Services\"),\r\n\tAGENT_MISSION_COLLATERAL_PAID(30, \"Agent Mission Collateral Paid\"),\r\n\tAGENT_MISSION_COLLATERAL_REFUNDED(31, \"Agent Mission Collateral Refunded\"),\r\n\tAGENTS_PREWARD(32, \"Agents_preward\"),\r\n\tAGENT_MISSION_REWARD(33, \"Agent Mission Reward\", RawJournal.ArgName.PLAYER_NAME, RawJournal.ArgID.PLAYER_ID),\r\n\tAGENT_MISSION_TIME_BONUS_REWARD(34, \"Agent Mission Time Bonus Reward\", RawJournal.ArgName.PLAYER_NAME, RawJournal.ArgID.PLAYER_ID),\r\n\tCSPA(35, \"CSPA\", RawJournal.ArgName.PLAYER_NAME, RawJournal.ArgID.PLAYER_ID),\r\n\tCSPAOFFLINEREFUND(36, \"CSPAOfflineRefund\"),\r\n\tCORPORATION_ACCOUNT_WITHDRAWAL(37, \"Corporation Account Withdrawal\", RawJournal.ArgName.PLAYER_NAME, RawJournal.ArgID.PLAYER_ID),\r\n\tCORPORATION_DIVIDEND_PAYMENT(38, \"Corporation Dividend Payment\"),\r\n\tCORPORATION_REGISTRATION_FEE(39, \"Corporation Registration Fee\"),\r\n\tCORPORATION_LOGO_CHANGE_COST(40, \"Corporation Logo Change Cost\", RawJournal.ArgName.CORPORATION_NAME, RawJournal.ArgID.CORPORATION_ID),\r\n\tRELEASE_OF_IMPOUNDED_PROPERTY(41, \"Release Of Impounded Property\"),\r\n\tMARKET_ESCROW(42, \"Market Escrow\"),\r\n\tAGENT_SERVICES_RENDERED(43, \"Agent Services Rendered\"),\r\n\tMARKET_FINE_PAID(44, \"Market Fine Paid\"),\r\n\tCORPORATION_LIQUIDATION(45, \"Corporation Liquidation\"),\r\n\tBROKERS_FEE(46, \"Brokers Fee\"),\r\n\tCORPORATION_BULK_PAYMENT(47, \"Corporation Bulk Payment\"),\r\n\tALLIANCE_REGISTRATION_FEE(48, \"Alliance Registration Fee\"),\r\n\tWAR_FEE(49, \"War Fee\"),\r\n\tALLIANCE_MAINTAINANCE_FEE(50, \"Alliance Maintainance Fee\", RawJournal.ArgName.ALLIANCE_NAME, RawJournal.ArgID.ALLIANCE_ID),\r\n\tCONTRABAND_FINE(51, \"Contraband Fine\"),\r\n\tCLONE_TRANSFER(52, \"Clone Transfer\"),\r\n\tACCELERATION_GATE_FEE(53, \"Acceleration Gate Fee\"),\r\n\tTRANSACTION_TAX(54, \"Transaction Tax\"),\r\n\tJUMP_CLONE_INSTALLATION_FEE(55, \"Jump Clone Installation Fee\"),\r\n\tMANUFACTURING(56, \"Manufacturing\", RawJournal.ArgName.JOB_ID, null),\r\n\tRESEARCHING_TECHNOLOGY(57, \"Researching Technology\"),\r\n\tRESEARCHING_TIME_PRODUCTIVITY(58, \"Researching Time Productivity\"),\r\n\tRESEARCHING_MATERIAL_PRODUCTIVITY(59, \"Researching Material Productivity\"),\r\n\tCOPYING(60, \"Copying\"),\r\n\tDUPLICATING(61, \"Duplicating\"),\r\n\tREVERSE_ENGINEERING(62, \"Reverse Engineering\"),\r\n\tCONTRACT_AUCTION_BID(63, \"Contract Auction Bid\", RawJournal.ArgName.CONTRACT_ID, null),\r\n\tCONTRACT_AUCTION_BID_REFUND(64, \"Contract Auction Bid Refund\", RawJournal.ArgName.CONTRACT_ID, null),\r\n\tCONTRACT_COLLATERAL(65, \"Contract Collateral\", RawJournal.ArgName.CONTRACT_ID, null),\r\n\tCONTRACT_REWARD_REFUND(66, \"Contract Reward Refund\", RawJournal.ArgName.CONTRACT_ID, null),\r\n\tCONTRACT_AUCTION_SOLD(67, \"Contract Auction Sold\", RawJournal.ArgName.CONTRACT_ID, null),\r\n\tCONTRACT_REWARD(68, \"Contract Reward\", RawJournal.ArgName.CONTRACT_ID, null),\r\n\tCONTRACT_COLLATERAL_REFUND(69, \"Contract Collateral Refund\", RawJournal.ArgName.CONTRACT_ID, null),\r\n\tCONTRACT_COLLATERAL_PAYOUT(70, \"Contract Collateral Payout\", RawJournal.ArgName.CONTRACT_ID, null),\r\n\tCONTRACT_PRICE(71, \"Contract Price\", RawJournal.ArgName.CONTRACT_ID, null),\r\n\tCONTRACT_BROKERS_FEE(72, \"Contract Brokers Fee\", RawJournal.ArgName.CONTRACT_ID, null),\r\n\tCONTRACT_SALES_TAX(73, \"Contract Sales Tax\", RawJournal.ArgName.CONTRACT_ID, null),\r\n\tCONTRACT_DEPOSIT(74, \"Contract Deposit\", RawJournal.ArgName.CONTRACT_ID, null),\r\n\tCONTRACT_DEPOSIT_SALES_TAX(75, \"Contract Deposit Sales Tax\", RawJournal.ArgName.CONTRACT_ID, null),\r\n\tSECURE_EVE_TIME_CODE_EXCHANGE(76, \"Secure EVE Time Code Exchange\"),\r\n\tCONTRACT_AUCTION_BID_CORP(77, \"Contract Auction Bid (corp)\"),\r\n\tCONTRACT_COLLATERAL_DEPOSITED_CORP(78, \"Contract Collateral Deposited (corp)\"),\r\n\tCONTRACT_PRICE_PAYMENT_CORP(79, \"Contract Price Payment (corp)\"),\r\n\tCONTRACT_BROKERS_FEE_CORP(80, \"Contract Brokers Fee (corp)\"),\r\n\tCONTRACT_DEPOSIT_CORP(81, \"Contract Deposit (corp)\"),\r\n\tCONTRACT_DEPOSIT_REFUND(82, \"Contract Deposit Refund\"),\r\n\tCONTRACT_REWARD_DEPOSITED(83, \"Contract Reward Deposited\"),\r\n\tCONTRACT_REWARD_DEPOSITED_CORP(84, \"Contract Reward Deposited (corp)\"),\r\n\tBOUNTY_PRIZES(85, \"Bounty Prizes\", null, RawJournal.ArgID.SYSTEM_ID),\r\n\tADVERTISEMENT_LISTING_FEE(86, \"Advertisement Listing Fee\"),\r\n\tMEDAL_CREATION(87, \"Medal Creation\", RawJournal.ArgName.PLAYER_NAME, RawJournal.ArgID.PLAYER_ID),\r\n\tMEDAL_ISSUED(88, \"Medal Issued\", RawJournal.ArgName.PLAYER_NAME, RawJournal.ArgID.PLAYER_ID),\r\n\tBETTING(89, \"Betting\"),\r\n\tDNA_MODIFICATION_FEE(90, \"DNA Modification Fee\"),\r\n\tSOVEREIGNITY_BILL(91, \"Sovereignity bill\"),\r\n\tBOUNTY_PRIZE_CORPORATION_TAX(92, \"Bounty Prize Corporation Tax\"),\r\n\tAGENT_MISSION_REWARD_CORPORATION_TAX(93, \"Agent Mission Reward Corporation Tax\"),\r\n\tAGENT_MISSION_TIME_BONUS_REWARD_CORPORATION_TAX(94, \"Agent Mission Time Bonus Reward Corporation Tax\"),\r\n\tUPKEEP_ADJUSTMENT_FEE(95, \"Upkeep adjustment fee\"),\r\n\tPLANETARY_IMPORT_TAX(96, \"Planetary Import Tax\", RawJournal.ArgName.PLANET_NAME, RawJournal.ArgID.PLANET_ID),\r\n\tPLANETARY_EXPORT_TAX(97, \"Planetary Export Tax\", RawJournal.ArgName.PLANET_NAME, RawJournal.ArgID.PLANET_ID),\r\n\tPLANETARY_CONSTRUCTION(98, \"Planetary Construction\"),\r\n\tCORPORATE_REWARD_PAYOUT(99, \"Corporate Reward Payout\"),\r\n\t// MINIGAME_BETTING(100, \"Minigame Betting\"),\r\n\tBOUNTY_SURCHARGE(101, \"Bounty Surcharge\"),\r\n\tCONTRACT_REVERSAL(102, \"Contract Reversal\"),\r\n\tCORPORATE_REWARD_TAX(103, \"Corporate Reward Tax\"),\r\n\tSTORE_PURCHASE(106, \"Store Purchase\"),\r\n\tSTORE_PURCHASE_REFUND(107, \"Store Purchase Refund\"),\r\n\tPLEX_SOLD_FOR_AURUM(108, \"PLEX sold for Aurum\"),\r\n\tLOTTERY_GIVE_AWAY(109, \"Lottery Give Away\"),\r\n\tAURUM_TOKEN_EXCHANGED_FOR_AUR(111, \"Aurum Token exchanged for Aur\"),\r\n\tDATACORE_FEE(112, \"Datacore Fee\"),\r\n\tWAR_FEE_SURRENDER(113, \"War fee surrender\"),\r\n\tWAR_ALLY_CONTRACT(114, \"War ally contract\"),\r\n\tBOUNTY_REIMBURSEMENT(115, \"Bounty Reimbursement\"),\r\n\tKILL_RIGHT(116, \"Kill Right Fee\"),\r\n\tSECURITY_PROCESSING_FEE(117, \"Security Processing Fee\"),\r\n\tESCROW_FOR_INDUSTRY_TEAM_AUCTION(118, \"Escrow for Industry Team Auction\"),\r\n\tREIMBURSEMENT_OF_ESCROW(119, \"Reimbursement of escrow\"),\r\n\tINDUSTRY_JOB_TAX(120, \"Industry Job Tax\", null, RawJournal.ArgID.STATION_ID),\r\n\tINFRASTRUCTURE_HUB_MAINTENANCE(122, \"Infrastructure Hub maintenance\"),\r\n\tASSET_SAFETY_RECOVERY_TAX(123, \"Asset Safety recovery Tax\"),\r\n\tOPPORTUNITY_REWARD(124, \"Opportunity reward\"),\r\n\tPROJECT_DISCOVERY_REWARD(125, \"Project Discovery reward\"),\r\n\tPROJECT_DISCOVERY_TAX(126, \"Project Discovery Tax\"),\r\n\tREPROCESSING_TAX(127, \"Reprocessing Tax\"),\r\n\tJUMP_CLONE_ACTIVATION_FEE(128, \"Jump Clone Activation Fee\"),\r\n\tOPERATION_BONUS(129, \"Operation Bonus\"),\r\n\tRESOURCE_WARS_SITE_COMPLETION(131, \"Resource Wars Site Completion\"),\r\n\tDUEL_WAGER_ESCROW(132, \"Duel Wager Escrow\"),\r\n\tDUEL_WAGER_PAYMENT(133, \"Duel Wager Payment\"),\r\n\tDUEL_WAGER_REFUND(134, \"Duel Wager Refund\"),\r\n\tREACTIONS(135, \"Reactions\"),\r\n\tEXTERNAL_TRADE_FREEZE(136, \"External Trade Freeze\"),\r\n\tEXTERNAL_TRADE_THAW(137, \"External Trade Thaw\"),\r\n\tEXTERNAL_TRADE_DELIVERY(138, \"External Trade Delivery\"),\r\n\tSEASON_CHALLENGE_REWARD(139, \"Season Challenge Reward\"),\r\n\tSTRUCTURE_GATE_JUMP(140, \"Structure Gate Jump\"),\r\n\tSKILL_PURCHASE(141, \"Skill Purchase\"),\r\n\tITEM_TRADER_PAYMENT(142, \"Item Trader Payment\"),\r\n\tFLUX_TICKET_SALE(143, \"Flux Ticket Sale\"), //hypernet ref group\r\n\tFLUX_PAYOUT(144, \"Flux Payout\"), //hypernet ref group\r\n\tFLUX_TAX(145, \"Flux Tax\"), //hypernet ref group\r\n\tFLUX_TICKET_REPAYMENT(146, \"Flux Ticket Repayment\"), //hypernet ref group\r\n\tREDEEMED_ISK_TOKEN(147, \"Redeemed Isk Token\"),\r\n\tDAILY_CHALLENGE_REWARD(148, \"Daily Challenge Reward\"),\r\n\tMARKET_PROVIDER_TAX(149, \"Market Provider Tax\"),\r\n\tESS_ESCROW_TRANSFER(155, \"ESS Escrow Transfer\"),\r\n\tMILESTONE_REWARD_PAYMENT(156, \"Milestone Reward Payment\"),\r\n\tUNDER_CONSTRUCTION(166, \"Under Construction\"),\r\n\tALLIGNMENT_BASED_GATE_TOLL (168, \"Allignment Based Gate Toll\"),\r\n\tPROJECT_PAYOUTS (170, \"Project Payouts\"),\r\n\tINSURGENCY_CORRUPTION_CONTRIBUTION_REWARD (172, \"Insurgency Corruption Contribution Reward\"),\r\n\tINSURGENCY_SUPPRESSION_CONTRIBUTION_REWARD (173, \"Insurgency Suppression Contribution Reward\"),\r\n\tDAILY_GOAL_PAYOUTS (174, \"Daily Goal Payouts\"),\r\n\tDAILY_GOAL_PAYOUTS_TAX (175, \"Daily Goal Payouts Tax\"),\r\n\tCOSMETIC_MARKET_COMPONENT_ITEM_PURCHASE (178, \"Cosmetic Market Component Item Purchase\"),\r\n\tCOSMETIC_MARKET_SKIN_SALE_BROKER_FEE (179, \"Cosmetic Market Skin Sale Broker Fee\"),\r\n\tCOSMETIC_MARKET_SKIN_PURCHASE (180, \"Cosmetic Market Skin Purchase\"),\r\n\tCOSMETIC_MARKET_SKIN_SALE (181, \"Cosmetic Market Skin Sale\"),\r\n\tCOSMETIC_MARKET_SKIN_SALE_TAX (182, \"Cosmetic Market Skin Sale Tax\"),\r\n\tCOSMETIC_MARKET_SKIN_TRANSACTION (183, \"Cosmetic Market Skin Sale Transaction\"),\r\n\tSKYHOOK_CLAIM_FEE(184, \"Skyhook Claim Fee\"),\r\n\tAIR_CAREER_PROGRAM_REWARD(185, \"Air Ccareer Program Reward\"),\r\n\tFREELANCE_JOBS_DURATION_FEE(186, \"Freelance Jobs Duration Fee\"),\r\n\tFREELANCE_JOBS_BROADCASTING_FEE(187, \"Freelance Jobs Broadcasting Fee\"),\r\n\tFREELANCE_JOBS_REWARD_ESCROW(188, \"Freelance Jobs Reward Escrow\"),\r\n\tFREELANCE_JOBS_REWARD(189, \"Freelance Jobs Reward\"),\r\n\tFREELANCE_JOBS_ESCROW_REFUND(190, \"Freelance Jobs Escrow Refund\"),\r\n\tFREELANCE_JOBS_REWARD_CORPORATION_TAX(191, \"Freelance Jobs Reward Corporation Tax\"),\r\n\tGM_PLEX_FEE_REFUND(192, \"GM PLEX Fee Refund\"),\r\n\tMODIFY_ISK(10001, \"Modify ISK\"),\r\n\tPRIMARY_MARKETPLACE_PURCHASE(10002, \"Primary Marketplace Purchase\"),\r\n\tBATTLE_REWARD(10003, \"Battle Reward\"),\r\n\tNEW_CHARACTER_STARTING_FUNDS(10004, \"New Character Starting Funds\"),\r\n\tCORPORATION_ACCOUNT_WITHDRAWAL_2(10005, \"Corporation Account Withdrawal\"),\r\n\tCORPORATION_ACCOUNT_DEPOSIT(10006, \"Corporation Account Deposit\"),\r\n\tBATTLE_WP_WIN_REWARD(10007, \"Battle WP Win Reward\"),\r\n\tBATTLE_WP_LOSS_REWARD(10008, \"Battle WP Loss Reward\"),\r\n\tBATTLE_WIN_REWARD(10009, \"Battle Win Reward\"),\r\n\tBATTLE_LOSS_REWARD(10010, \"Battle Loss Reward\"),\r\n\tRESET_ISK_FOR_CHARACTER_RESET(10011, \"Reset ISK for Character Reset\"),\r\n\tDISTRICT_CONTRACT_DEPOSIT(10012, \"District Contract Deposit\"),\r\n\tDISTRICT_CONTRACT_DEPOSIT_REFUND(10013, \"District Contract Deposit Refund\"),\r\n\tDISTRICT_CONTRACT_COLLATERAL(10014, \"District Contract Collateral\"),\r\n\tDISTRICT_CONTRACT_COLLATERAL_REFUND(10015, \"District Contract Collateral Refund\"),\r\n\tDISTRICT_CONTRACT_REWARD(10016, \"District Contract Reward\"),\r\n\tDISTRICT_CLONE_TRANSPORTATION(10017, \"District Clone Transportation\"),\r\n\tDISTRICT_CLONE_TRANSPORTATION_REFUND(10018, \"District Clone Transportation Refund\"),\r\n\tDISTRICT_INFRASTRUCTURE(10019, \"District Infrastructure\"),\r\n\tDISTRICT_CLONE_SALES(10020, \"District Clone Sales\"),\r\n\tDISTRICT_CLONE_PURCHASE(10021, \"District Clone Purchase\"),\r\n\tBIOMASS_REWARD(10022, \"Biomass Reward\"),\r\n\tISK_SWAP_REWARD(10023, \"ISK Swap Reward\"),\r\n\tMODIFY_UPLEX(11001, \"Modify AUR\"), RESPEC_PAYMENT(11002, \"Respec payment\"),\r\n\tENTITLEMENT(11003, \"Entitlement\"),\r\n\tRESET_REIMBURSEMENT(11004, \"Reset Reimbursement\"),\r\n\tRESET_AUR_FOR_CHARACTER_RESET(11005, \"Reset AUR for Character Reset\"),\r\n\tDAILY_MISSION_CP(12001, \"Daily mission CP\"),\r\n\tWARBARGE_CP(12002, \"Warbarge CP\"),\r\n\tDONATE_CP(12003, \"Donate CP\"),\r\n\tUSE_CP_FOR_CLONE_PACKS(12004, \"Use CP for clone packs\"),\r\n\tUSE_CP_FOR_MOVING_CLONES(12005, \"Use CP for moving clones\"),\r\n\tUSE_CP_FOR_SELLING_CLONES(12006, \"Use CP for selling clones\"),\r\n\tUSE_CP_FOR_CHANGING_REINFORCEMENT(12007, \"Use CP for changing reinforcement\"),\r\n\tUSE_CP_FOR_CHANGING_SURFACE_INFRASTRUCTURE(12008, \"Use CP for changing surface infrastructure\"),\r\n\tDAILY_MISSION_DK(13001, \"Daily mission DK\"),\r\n\tPLANETARY_CONQUEST_DK(13002, \"Planetary conquest DK\"),\r\n\tUSE_DK_FOR_PURCHASING_ITEMS(13003, \"Use DK for purchasing items\"),\r\n\tUSE_DK_FOR_REROLLING_MARKET(13004, \"Use DK for rerolling market\"),\r\n\tSELLING_CLONES_DK(13005, \"Selling Clones DK\"),\r\n\t;\r\n\r\n\tprivate final int id;\r\n\tprivate final String value;\r\n\tprivate final RawJournal.ArgName argName;\r\n\tprivate final RawJournal.ArgID argID;\r\n\r\n\tprivate RawJournalRefType(int id, String value) {\r\n\t\tthis.id = id;\r\n\t\tthis.value = value;\r\n\t\tthis.argName = null;\r\n\t\tthis.argID = null;\r\n\t}\r\n\r\n\tprivate RawJournalRefType(int id, String value, RawJournal.ArgName argName, RawJournal.ArgID argID) {\r\n\t\tthis.id = id;\r\n\t\tthis.value = value;\r\n\t\tthis.argName = argName;\r\n\t\tthis.argID = argID;\r\n\t}\r\n\r\n\tpublic int getID() {\r\n\t\treturn id;\r\n\t}\r\n\r\n\tpublic RawJournal.ArgName getArgName() {\r\n\t\treturn argName;\r\n\t}\r\n\r\n\tpublic RawJournal.ArgID getArgID() {\r\n\t\treturn argID;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn value;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/raw/RawLoyaltyPoints.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.raw;\r\n\r\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\r\nimport net.troja.eve.esi.model.CharacterLoyaltyPointsResponse;\r\n\r\n\r\npublic class RawLoyaltyPoints {\r\n\r\n\tprivate Integer corporationId;\r\n\tprivate Integer loyaltyPoints;\r\n\r\n\t\r\n\tpublic static RawLoyaltyPoints create() {\r\n\t\treturn new RawLoyaltyPoints();\r\n\t}\r\n\r\n\tprivate RawLoyaltyPoints() { }\r\n\r\n\tpublic RawLoyaltyPoints(CharacterLoyaltyPointsResponse response) {\r\n\t\tcorporationId = SafeConverter.toInteger(response.getCorporationId());\r\n\t\tloyaltyPoints = SafeConverter.toInteger(response.getLoyaltyPoints());\r\n\t}\r\n\r\n\tpublic RawLoyaltyPoints(RawLoyaltyPoints response) {\r\n\t\tcorporationId = response.getCorporationID();\r\n\t\tloyaltyPoints = response.getLoyaltyPoints();\r\n\t}\r\n\r\n\tpublic Integer getCorporationID() {\r\n\t\treturn corporationId;\r\n\t}\r\n\r\n\tpublic void setCorporationID(Integer corporationId) {\r\n\t\tthis.corporationId = corporationId;\r\n\t}\r\n\r\n\tpublic Integer getLoyaltyPoints() {\r\n\t\treturn loyaltyPoints;\r\n\t}\r\n\r\n\tpublic void setLoyaltyPoints(Integer loyaltyPoints) {\r\n\t\tthis.loyaltyPoints = loyaltyPoints;\r\n\t}\r\n\r\n\t\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/raw/RawMarketOrder.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.raw;\r\n\r\nimport java.util.Date;\r\nimport java.util.Objects;\r\nimport java.util.Set;\r\nimport java.util.TreeSet;\r\nimport net.nikr.eve.jeveasset.i18n.TabsOrders;\r\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\r\nimport net.troja.eve.esi.model.CharacterOrdersHistoryResponse;\r\nimport net.troja.eve.esi.model.CharacterOrdersResponse;\r\nimport net.troja.eve.esi.model.CorporationOrdersHistoryResponse;\r\nimport net.troja.eve.esi.model.CorporationOrdersResponse;\r\n\r\n\r\npublic class RawMarketOrder {\r\n\r\n\tpublic enum MarketOrderRange {\r\n\t\t_1(\"1\", TabsOrders.get().rangeJump()),\r\n\t\t_10(\"10\"),\r\n\t\t_2(\"2\"),\r\n\t\t_20(\"20\"),\r\n\t\t_3(\"3\"),\r\n\t\t_30(\"30\"),\r\n\t\t_4(\"4\"),\r\n\t\t_40(\"40\"),\r\n\t\t_5(\"5\"),\r\n\t\tREGION(\"region\", TabsOrders.get().rangeRegion()),\r\n\t\tSOLARSYSTEM(\"solarsystem\", TabsOrders.get().rangeSolarSystem()),\r\n\t\tSTATION(\"station\", TabsOrders.get().rangeStation());\r\n\r\n\t\tprivate static final MarketOrderRange[] SORTED = {\r\n\t\t\tREGION, SOLARSYSTEM, STATION, _1, _2, _3, _4, _5, _10, _20, _30, _40\r\n\t\t};\r\n\r\n\t\tprivate final String value;\r\n\t\tprivate final String text;\r\n\r\n\t\tMarketOrderRange(String value) {\r\n\t\t\tthis(value, TabsOrders.get().rangeJumps(value));\r\n\t\t}\r\n\r\n\t\tMarketOrderRange(String value, String text) {\r\n\t\t\tthis.value = value;\r\n\t\t\tthis.text = text;\r\n\t\t}\r\n\r\n\t\tpublic static MarketOrderRange[] valuesSorted() {\r\n\t\t\treturn SORTED;\r\n\t\t}\r\n\r\n\t\tpublic String getValue() {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic String toString() {\r\n\t\t\treturn text;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic enum MarketOrderState {\r\n\t\tCANCELLED(\"cancelled\"),\r\n\t\tCHARACTER_DELETED(\"character_deleted\"),\r\n\t\tCLOSED(\"closed\"),\r\n\t\tEXPIRED(\"expired\"),\r\n\t\tOPEN(\"open\"),\r\n\t\tPENDING(\"pending\"),\r\n\t\tUNKNOWN(\"Unknown\");\r\n\r\n\t\tprivate final String value;\r\n\r\n\t\tMarketOrderState(String value) {\r\n\t\t\tthis.value = value;\r\n\t\t}\r\n\r\n\t\tpublic String getValue() {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Integer walletDivision = null;\r\n\tprivate Integer duration = null;\r\n\tprivate Double escrow = null;\r\n\tprivate Boolean isBuyOrder = null;\r\n\tprivate Boolean isCorp = null;\r\n\tprivate Date issued = null;\r\n\tprivate final Set<Change> changes = new TreeSet<>();\r\n\tprivate Integer issuedBy = null;\r\n\tprivate Long locationId = null;\r\n\tprivate Integer minVolume = null;\r\n\tprivate Long orderId = null;\r\n\tprivate Double price = null;\r\n\tprivate String range = null;\r\n\tprivate MarketOrderRange rangeEnum = null;\r\n\tprivate Integer regionId = null;\r\n\tprivate String state = null;\r\n\tprivate MarketOrderState stateEnum = null;\r\n\tprivate Integer typeId = null;\r\n\tprivate Integer volumeRemain = null;\r\n\tprivate Integer volumeTotal = null;\r\n\tprivate Date changed;\r\n\tprivate boolean updateChanged = false;\r\n\r\n\t/**\r\n\t * New\r\n\t */\r\n\tprivate RawMarketOrder() {\r\n\t}\r\n\r\n\tpublic static RawMarketOrder create() {\r\n\t\treturn new RawMarketOrder();\r\n\t}\r\n\r\n\t/**\r\n\t * Raw\r\n\t *\r\n\t * @param marketOrder\r\n\t */\r\n\tprotected RawMarketOrder(RawMarketOrder marketOrder) {\r\n\t\twalletDivision = marketOrder.walletDivision;\r\n\t\tduration = marketOrder.duration;\r\n\t\tescrow = marketOrder.escrow;\r\n\t\tisBuyOrder = marketOrder.isBuyOrder;\r\n\t\tisCorp = marketOrder.isCorp;\r\n\t\tissued = marketOrder.issued;\r\n\t\tchanges.addAll(marketOrder.changes);\r\n\t\tissuedBy = marketOrder.issuedBy;\r\n\t\tlocationId = marketOrder.locationId;\r\n\t\tminVolume = marketOrder.minVolume;\r\n\t\torderId = marketOrder.orderId;\r\n\t\tprice = marketOrder.price;\r\n\t\trange = marketOrder.range;\r\n\t\trangeEnum = marketOrder.rangeEnum;\r\n\t\tregionId = marketOrder.regionId;\r\n\t\tstate = marketOrder.state;\r\n\t\tstateEnum = marketOrder.stateEnum;\r\n\t\ttypeId = marketOrder.typeId;\r\n\t\tvolumeRemain = marketOrder.volumeRemain;\r\n\t\tvolumeTotal = marketOrder.volumeTotal;\r\n\t}\r\n\r\n\t/**\r\n\t * ESI Character\r\n\t *\r\n\t * @param marketOrder\r\n\t */\r\n\tpublic RawMarketOrder(CharacterOrdersResponse marketOrder) {\r\n\t\twalletDivision = 1;\r\n\t\tduration = SafeConverter.toInteger(marketOrder.getDuration());\r\n\t\tescrow = RawConverter.toDouble(marketOrder.getEscrow(), 0);\r\n\t\tisBuyOrder = RawConverter.toBoolean(marketOrder.getIsBuyOrder());\r\n\t\tisCorp = marketOrder.getIsCorporation();\r\n\t\tissued = RawConverter.toDate(marketOrder.getIssued());\r\n\t\tissuedBy = null;\r\n\t\tlocationId = marketOrder.getLocationId();\r\n\t\tminVolume = RawConverter.toInteger(marketOrder.getMinVolume(), 0);\r\n\t\torderId = marketOrder.getOrderId();\r\n\t\tprice = marketOrder.getPrice();\r\n\t\trange = marketOrder.getRangeString();\r\n\t\trangeEnum = RawConverter.toMarketOrderRange(marketOrder.getRange());\r\n\t\tregionId = SafeConverter.toInteger(marketOrder.getRegionId());\r\n\t\tstate = MarketOrderState.OPEN.getValue();\r\n\t\tstateEnum = MarketOrderState.OPEN;\r\n\t\ttypeId = SafeConverter.toInteger(marketOrder.getTypeId());\r\n\t\tvolumeRemain = SafeConverter.toInteger(marketOrder.getVolumeRemain());\r\n\t\tvolumeTotal = SafeConverter.toInteger(marketOrder.getVolumeTotal());\r\n\t\tchanges.add(new Change(this));\r\n\t}\r\n\r\n\t/**\r\n\t * ESI Character History\r\n\t *\r\n\t * @param marketOrder\r\n\t */\r\n\tpublic RawMarketOrder(CharacterOrdersHistoryResponse marketOrder) {\r\n\t\twalletDivision = 1;\r\n\t\tduration = SafeConverter.toInteger(marketOrder.getDuration());\r\n\t\tescrow = RawConverter.toDouble(marketOrder.getEscrow(), 0);\r\n\t\tisBuyOrder = RawConverter.toBoolean(marketOrder.getIsBuyOrder());\r\n\t\tisCorp = marketOrder.getIsCorporation();\r\n\t\tissued = RawConverter.toDate(marketOrder.getIssued());\r\n\t\tissuedBy = null;\r\n\t\tlocationId = marketOrder.getLocationId();\r\n\t\tminVolume = RawConverter.toInteger(marketOrder.getMinVolume(), 0);\r\n\t\torderId = marketOrder.getOrderId();\r\n\t\tprice = marketOrder.getPrice();\r\n\t\trange = marketOrder.getRangeString();\r\n\t\trangeEnum = RawConverter.toMarketOrderRange(marketOrder.getRange());\r\n\t\tregionId = SafeConverter.toInteger(marketOrder.getRegionId());\r\n\t\tstate = marketOrder.getStateString();\r\n\t\tstateEnum = RawConverter.toMarketOrderState(marketOrder.getState());\r\n\t\ttypeId = SafeConverter.toInteger(marketOrder.getTypeId());\r\n\t\tvolumeRemain = SafeConverter.toInteger(marketOrder.getVolumeRemain());\r\n\t\tvolumeTotal = SafeConverter.toInteger(marketOrder.getVolumeTotal());\r\n\t\tchanges.add(new Change(this));\r\n\t}\r\n\r\n\t/**\r\n\t * ESI Corporation\r\n\t *\r\n\t * @param marketOrder\r\n\t */\r\n\tpublic RawMarketOrder(CorporationOrdersResponse marketOrder) {\r\n\t\twalletDivision = SafeConverter.toInteger(marketOrder.getWalletDivision());\r\n\t\tduration = SafeConverter.toInteger(marketOrder.getDuration());\r\n\t\tescrow = RawConverter.toDouble(marketOrder.getEscrow(), 0);\r\n\t\tisBuyOrder = RawConverter.toBoolean(marketOrder.getIsBuyOrder());\r\n\t\tisCorp = true;\r\n\t\tissued = RawConverter.toDate(marketOrder.getIssued());\r\n\t\tissuedBy = SafeConverter.toInteger(marketOrder.getIssuedBy());\r\n\t\tlocationId = marketOrder.getLocationId();\r\n\t\tminVolume = RawConverter.toInteger(marketOrder.getMinVolume(), 0);\r\n\t\torderId = marketOrder.getOrderId();\r\n\t\tprice = marketOrder.getPrice();\r\n\t\trange = marketOrder.getRangeString();\r\n\t\trangeEnum = RawConverter.toMarketOrderRange(marketOrder.getRange());\r\n\t\tregionId = SafeConverter.toInteger(marketOrder.getRegionId());\r\n\t\tstate = MarketOrderState.OPEN.getValue();\r\n\t\tstateEnum = MarketOrderState.OPEN;\r\n\t\ttypeId = SafeConverter.toInteger(marketOrder.getTypeId());\r\n\t\tvolumeRemain = SafeConverter.toInteger(marketOrder.getVolumeRemain());\r\n\t\tvolumeTotal = SafeConverter.toInteger(marketOrder.getVolumeTotal());\r\n\t\tchanges.add(new Change(this));\r\n\t}\r\n\r\n\t/**\r\n\t * ESI Corporation History\r\n\t *\r\n\t * @param marketOrder\r\n\t */\r\n\tpublic RawMarketOrder(CorporationOrdersHistoryResponse marketOrder) {\r\n\t\twalletDivision = SafeConverter.toInteger(marketOrder.getWalletDivision());\r\n\t\tduration = SafeConverter.toInteger(marketOrder.getDuration());\r\n\t\tescrow = RawConverter.toDouble(marketOrder.getEscrow(), 0);\r\n\t\tisBuyOrder = RawConverter.toBoolean(marketOrder.getIsBuyOrder());\r\n\t\tisCorp = true;\r\n\t\tissued = RawConverter.toDate(marketOrder.getIssued());\r\n\t\tissuedBy = SafeConverter.toInteger(marketOrder.getIssuedBy());\r\n\t\tlocationId = marketOrder.getLocationId();\r\n\t\tminVolume = RawConverter.toInteger(marketOrder.getMinVolume(), 0);\r\n\t\torderId = marketOrder.getOrderId();\r\n\t\tprice = marketOrder.getPrice();\r\n\t\trange = marketOrder.getRangeString();\r\n\t\trangeEnum = RawConverter.toMarketOrderRange(marketOrder.getRange());\r\n\t\tregionId = SafeConverter.toInteger(marketOrder.getRegionId());\r\n\t\tstate = marketOrder.getStateString();\r\n\t\tstateEnum = RawConverter.toMarketOrderState(marketOrder.getState());\r\n\t\ttypeId = SafeConverter.toInteger(marketOrder.getTypeId());\r\n\t\tvolumeRemain = SafeConverter.toInteger(marketOrder.getVolumeRemain());\r\n\t\tvolumeTotal = SafeConverter.toInteger(marketOrder.getVolumeTotal());\r\n\t\tchanges.add(new Change(this));\r\n\t}\r\n\r\n\tpublic Integer getWalletDivision() {\r\n\t\treturn walletDivision;\r\n\t}\r\n\r\n\tpublic void setWalletDivision(Integer walletDivision) {\r\n\t\tthis.walletDivision = walletDivision;\r\n\t}\r\n\r\n\tpublic Integer getDuration() {\r\n\t\treturn duration;\r\n\t}\r\n\r\n\tpublic void setDuration(Integer duration) {\r\n\t\tthis.duration = duration;\r\n\t}\r\n\r\n\tpublic Double getEscrow() {\r\n\t\treturn escrow;\r\n\t}\r\n\r\n\tpublic void setEscrow(Double escrow) {\r\n\t\tthis.escrow = escrow;\r\n\t}\r\n\r\n\tpublic Boolean isBuyOrder() {\r\n\t\treturn isBuyOrder;\r\n\t}\r\n\r\n\tpublic void setBuyOrder(Boolean isBuyOrder) {\r\n\t\tthis.isBuyOrder = isBuyOrder;\r\n\t}\r\n\r\n\tpublic Boolean isCorp() {\r\n\t\treturn isCorp;\r\n\t}\r\n\r\n\tpublic void setCorp(Boolean isCorp) {\r\n\t\tthis.isCorp = isCorp;\r\n\t}\r\n\r\n\tpublic Date getIssued() {\r\n\t\treturn issued;\r\n\t}\r\n\r\n\tpublic void setIssued(Date issued) {\r\n\t\tthis.issued = issued;\r\n\t}\r\n\r\n\tpublic int getEdits() {\r\n\t\tif (changes.isEmpty() || changes.size() == 1) { //0 or 1 = 0;\r\n\t\t\treturn 0;\r\n\t\t} else {\r\n\t\t\treturn changes.size() - 1; // > 1\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Date getChanged() {\r\n\t\treturn changed;\r\n\t}\r\n\r\n\tpublic void setChanged(Date changed) {\r\n\t\tthis.changed = changed;\r\n\t\tupdateChanged = false;\r\n\t}\r\n\r\n\tpublic boolean isUpdateChanged() {\r\n\t\treturn updateChanged;\r\n\t}\r\n\r\n\tpublic Set<Change> getChanges() {\r\n\t\treturn changes;\r\n\t}\r\n\r\n\tpublic void addChangesLegacy(Date date) {\r\n\t\tif (date != null) {\r\n\t\t\tchanges.add(new Change(date, null, null));\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void addChanges(Set<Change> change) {\r\n\t\tif (change != null) {\r\n\t\t\tChange current = new Change(this);\r\n\t\t\tupdateChanged = !change.contains(current);\r\n\t\t\tchanges.add(current); //Add current\r\n\t\t\tchanges.addAll(change); //Add old\r\n\t\t}\r\n\t}\r\n\r\n\tpublic boolean addChanges(RawPublicMarketOrder response) {\r\n\t\tif (response != null) {\r\n\t\t\t//Set new data\r\n\t\t\tsetPrice(response.getPrice());\r\n\t\t\tsetVolumeRemain(response.getVolumeRemain());\r\n\t\t\tsetIssued(response.getIssued());\r\n\t\t\t//Add change\r\n\t\t\treturn changes.add(new Change(response));\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tpublic Integer getIssuedBy() {\r\n\t\treturn issuedBy;\r\n\t}\r\n\r\n\tpublic void setIssuedBy(Integer issuedBy) {\r\n\t\tthis.issuedBy = issuedBy;\r\n\t}\r\n\r\n\tpublic long getLocationID() {\r\n\t\treturn locationId;\r\n\t}\r\n\r\n\tpublic void setLocationID(Long locationId) {\r\n\t\tthis.locationId = locationId;\r\n\t}\r\n\r\n\tpublic Integer getMinVolume() {\r\n\t\treturn minVolume;\r\n\t}\r\n\r\n\tpublic void setMinVolume(Integer minVolume) {\r\n\t\tthis.minVolume = minVolume;\r\n\t}\r\n\r\n\tpublic Long getOrderID() {\r\n\t\treturn orderId;\r\n\t}\r\n\r\n\tpublic void setOrderID(Long orderId) {\r\n\t\tthis.orderId = orderId;\r\n\t}\r\n\r\n\tpublic Double getPrice() {\r\n\t\treturn price;\r\n\t}\r\n\r\n\tpublic void setPrice(Double price) {\r\n\t\tthis.price = price;\r\n\t}\r\n\r\n\tpublic final MarketOrderRange getRange() {\r\n\t\treturn rangeEnum;\r\n\t}\r\n\r\n\tpublic void setRange(MarketOrderRange range) {\r\n\t\tthis.rangeEnum = range;\r\n\t}\r\n\r\n\tpublic String getRangeString() {\r\n\t\treturn range;\r\n\t}\r\n\r\n\tpublic void setRangeString(String rangeString) {\r\n\t\tthis.range = rangeString;\r\n\t}\r\n\r\n\tpublic Integer getRegionID() {\r\n\t\treturn regionId;\r\n\t}\r\n\r\n\tpublic void setRegionID(Integer regionId) {\r\n\t\tthis.regionId = regionId;\r\n\t}\r\n\r\n\tpublic final MarketOrderState getState() {\r\n\t\treturn stateEnum;\r\n\t}\r\n\r\n\tpublic void setState(MarketOrderState state) {\r\n\t\tthis.stateEnum = state;\r\n\t}\r\n\r\n\tpublic String getStateString() {\r\n\t\treturn state;\r\n\t}\r\n\r\n\tpublic void setStateString(String stateString) {\r\n\t\tthis.state = stateString;\r\n\t}\r\n\r\n\tpublic Integer getTypeID() {\r\n\t\treturn typeId;\r\n\t}\r\n\r\n\tpublic void setTypeID(Integer typeId) {\r\n\t\tthis.typeId = typeId;\r\n\t}\r\n\r\n\tpublic final Integer getVolumeRemain() {\r\n\t\treturn volumeRemain;\r\n\t}\r\n\r\n\tpublic void setVolumeRemain(Integer volumeRemain) {\r\n\t\tthis.volumeRemain = volumeRemain;\r\n\t}\r\n\r\n\tpublic final Integer getVolumeTotal() {\r\n\t\treturn volumeTotal;\r\n\t}\r\n\r\n\tpublic void setVolumeTotal(Integer volumeTotal) {\r\n\t\tthis.volumeTotal = volumeTotal;\r\n\t}\r\n\r\n\tpublic static class Change implements Comparable<Change> {\r\n\t\tprivate final Date date;\r\n\t\tprivate final Double price;\r\n\t\tprivate final Integer volumeRemaining;\r\n\r\n\t\tpublic Change(RawPublicMarketOrder response) {\r\n\t\t\tthis(response.getIssued(), response.getPrice(), response.getVolumeRemain());\r\n\t\t}\r\n\r\n\t\tpublic Change(RawMarketOrder response) {\r\n\t\t\tthis(response.getIssued(), response.getPrice(), response.getVolumeRemain());\r\n\t\t}\r\n\r\n\t\tpublic Change(Date date, Double price, Integer volumeRemaining) {\r\n\t\t\tthis.date = date;\r\n\t\t\tthis.price = price;\r\n\t\t\tthis.volumeRemaining = volumeRemaining;\r\n\t\t}\r\n\r\n\t\tpublic Date getDate() {\r\n\t\t\treturn date;\r\n\t\t}\r\n\r\n\t\tpublic Double getPrice() {\r\n\t\t\treturn price;\r\n\t\t}\r\n\r\n\t\tpublic Integer getVolumeRemaining() {\r\n\t\t\treturn volumeRemaining;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int hashCode() {\r\n\t\t\tint hash = 7;\r\n\t\t\thash = 53 * hash + Objects.hashCode(this.date);\r\n\t\t\thash = 53 * hash + Objects.hashCode(this.price);\r\n\t\t\thash = 53 * hash + Objects.hashCode(this.volumeRemaining);\r\n\t\t\treturn hash;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean equals(Object obj) {\r\n\t\t\tif (this == obj) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif (obj == null) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (getClass() != obj.getClass()) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tfinal Change other = (Change) obj;\r\n\t\t\tif (!Objects.equals(this.date, other.date)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (!Objects.equals(this.price, other.price)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (!Objects.equals(this.volumeRemaining, other.volumeRemaining)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int compareTo(Change change) {\r\n\t\t\treturn date.compareTo(change.date);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/raw/RawMining.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.raw;\r\n\r\nimport java.util.Date;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\r\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\r\nimport net.troja.eve.esi.model.CharacterMiningResponse;\r\nimport net.troja.eve.esi.model.CorporationMiningObserverResponse;\r\nimport net.troja.eve.esi.model.CorporationMiningObserversResponse;\r\n\r\n\r\npublic class RawMining {\r\n\tprivate Date date;\r\n\tprivate Long count;\r\n\tprivate Long locationID;\r\n\tprivate Integer typeID;\r\n\tprivate long characterID;\r\n\tprivate Long corporationID = null;\r\n\tprivate String corporationName;\r\n\tprivate boolean forCorporation;\r\n\r\n\tprivate RawMining() { }\r\n\r\n\tpublic static RawMining create() {\r\n\t\treturn new RawMining();\r\n\t}\r\n\r\n\tpublic RawMining(RawMining mining) {\r\n\t\tthis.date = mining.date;\r\n\t\tthis.count = mining.count;\r\n\t\tthis.locationID = mining.locationID;\r\n\t\tthis.typeID = mining.typeID;\r\n\t\tthis.characterID = mining.characterID;\r\n\t\tthis.corporationID = mining.corporationID;\r\n\t\tthis.corporationName = mining.corporationName;\r\n\t\tthis.forCorporation = mining.forCorporation;\r\n\t}\r\n\r\n\t/**\r\n\t * ESI Character\r\n\t *\r\n\t * @param mining\r\n\t * @param owner\r\n\t */\r\n\tpublic RawMining(CharacterMiningResponse mining, OwnerType owner) {\r\n\t\tthis.date = RawConverter.toDate(mining.getDate());\r\n\t\tthis.count = mining.getQuantity();\r\n\t\tthis.locationID = mining.getSolarSystemId();\r\n\t\tthis.typeID = SafeConverter.toInteger(mining.getTypeId());\r\n\t\tthis.characterID = owner.getOwnerID();\r\n\t\tthis.corporationID = null;\r\n\t\tthis.corporationName = owner.getCorporationName();\r\n\t\tthis.forCorporation = false;\r\n\t}\r\n\r\n\t/**\r\n\t * ESI Corporation\r\n\t *\r\n\t * @param observers\r\n\t * @param mining\r\n\t * @param owner\r\n\t */\r\n\tpublic RawMining(CorporationMiningObserversResponse observers, CorporationMiningObserverResponse mining, OwnerType owner) {\r\n\t\tthis.date = RawConverter.toDate(mining.getLastUpdated());\r\n\t\tthis.count = mining.getQuantity();\r\n\t\tthis.locationID = observers.getObserverId();\r\n\t\tthis.typeID = SafeConverter.toInteger(mining.getTypeId());\r\n\t\tthis.characterID = mining.getCharacterId();\r\n\t\tthis.corporationName = null;\r\n\t\tthis.corporationID = mining.getRecordedCorporationId();\r\n\t\tthis.forCorporation = true;\r\n\t}\r\n\r\n\tpublic Date getDate() {\r\n\t\treturn date;\r\n\t}\r\n\r\n\tpublic void setDate(Date date) {\r\n\t\tthis.date = date;\r\n\t}\r\n\r\n\tpublic long getCount() {\r\n\t\treturn count;\r\n\t}\r\n\r\n\tpublic void setCount(Long count) {\r\n\t\tthis.count = count;\r\n\t}\r\n\r\n\tpublic long getLocationID() {\r\n\t\treturn locationID;\r\n\t}\r\n\r\n\tpublic void setLocationID(Long locationID) {\r\n\t\tthis.locationID = locationID;\r\n\t}\r\n\r\n\tpublic Integer getTypeID() {\r\n\t\treturn typeID;\r\n\t}\r\n\r\n\tpublic void setTypeID(Integer typeID) {\r\n\t\tthis.typeID = typeID;\r\n\t}\r\n\r\n\tpublic long getCharacterID() {\r\n\t\treturn characterID;\r\n\t}\r\n\r\n\tpublic void setCharacterID(long characterID) {\r\n\t\tthis.characterID = characterID;\r\n\t}\r\n\r\n\tpublic Long getCorporationID() {\r\n\t\treturn corporationID;\r\n\t}\r\n\r\n\tpublic void setCorporationID(Long corporationID) {\r\n\t\tthis.corporationID = corporationID;\r\n\t}\r\n\r\n\tpublic boolean isForCorporation() {\r\n\t\treturn forCorporation;\r\n\t}\r\n\r\n\tpublic void setForCorporation(boolean forCorporation) {\r\n\t\tthis.forCorporation = forCorporation;\r\n\t}\r\n\r\n\tpublic String getCorporationName() {\r\n\t\treturn corporationName;\r\n\t}\r\n\r\n\tpublic void setCorporationName(String corporationName) {\r\n\t\tthis.corporationName = corporationName;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/raw/RawNpcStanding.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.raw;\r\n\r\nimport java.util.Comparator;\r\nimport net.nikr.eve.jeveasset.i18n.TabsNpcStanding;\r\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\r\nimport net.troja.eve.esi.model.StandingsResponse;\r\n\r\n\r\npublic class RawNpcStanding {\r\n\r\n\tpublic static final TypeComparator FROM_TYPE_COMPARATOR = new TypeComparator();\r\n\r\n\tpublic enum FromType {\r\n\t\tFACTION(\"faction\"){\r\n\t\t\t@Override\r\n\t\t\tString getI18N() {\r\n\t\t\t\treturn TabsNpcStanding.get().typeFaction();\r\n\t\t\t}\r\n\t\t},\r\n\t\tNPC_CORP(\"npc_corp\"){\r\n\t\t\t@Override\r\n\t\t\tString getI18N() {\r\n\t\t\t\treturn TabsNpcStanding.get().typeCorporation();\r\n\t\t\t}\r\n\t\t},\r\n\t\tAGENT(\"agent\"){\r\n\t\t\t@Override\r\n\t\t\tString getI18N() {\r\n\t\t\t\treturn TabsNpcStanding.get().typeAgent();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprivate final String value;\r\n\r\n\t\tFromType(String value) {\r\n\t\t\tthis.value = value;\r\n\t\t}\r\n\r\n\t\tpublic String getValue() {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\t\r\n\t\tabstract String getI18N();\r\n\r\n\t\t@Override\r\n\t\tpublic String toString() {\r\n\t\t\treturn getI18N();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate String fromType;\r\n    private FromType fromTypeEnum;\r\n    private Integer fromId;\r\n    private Float standing;\r\n\r\n\t\r\n\tpublic static RawNpcStanding create() {\r\n\t\treturn new RawNpcStanding();\r\n\t}\r\n\r\n\tprivate RawNpcStanding() { }\r\n\r\n\t/**\r\n\t * ESI Character/Corporation\r\n\t * @param response \r\n\t */\r\n\tpublic RawNpcStanding(StandingsResponse response) {\r\n\t\tfromType = response.getFromTypeString();\r\n\t\tfromTypeEnum = RawConverter.toNpcStandingFromType(response.getFromType());\r\n\t\tfromId = SafeConverter.toInteger(response.getFromId());\r\n\t\tstanding = SafeConverter.toFloat(response.getStanding());\r\n\t}\r\n\r\n\tpublic RawNpcStanding(RawNpcStanding response) {\r\n\t\tfromType = response.getFromTypeString();\r\n\t\tfromTypeEnum = response.getFromType();\r\n\t\tfromId = response.getFromID();\r\n\t\tstanding = response.getStanding();\r\n\t}\r\n\r\n\tpublic String getFromTypeString() {\r\n\t\treturn fromType;\r\n\t}\r\n\r\n\tpublic void setFromTypeString(String fromType) {\r\n\t\tthis.fromType = fromType;\r\n\t}\r\n\r\n\tpublic FromType getFromType() {\r\n\t\treturn fromTypeEnum;\r\n\t}\r\n\r\n\tpublic void setFromType(FromType fromTypeEnum) {\r\n\t\tthis.fromTypeEnum = fromTypeEnum;\r\n\t}\r\n\r\n\tpublic Integer getFromID() {\r\n\t\treturn fromId;\r\n\t}\r\n\r\n\tpublic void setFromID(Integer fromId) {\r\n\t\tthis.fromId = fromId;\r\n\t}\r\n\r\n\tpublic Float getStanding() {\r\n\t\treturn standing;\r\n\t}\r\n\r\n\tpublic void setStanding(Float standing) {\r\n\t\tthis.standing = standing;\r\n\t}\r\n\r\n\tpublic static class TypeComparator implements Comparator<FromType> {\r\n\r\n\t\t@Override\r\n\t\tpublic int compare(FromType o1, FromType o2) {\r\n\t\t\treturn Integer.compare(o1.ordinal(), o2.ordinal());\r\n\t\t}\r\n\t\t\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/raw/RawPublicMarketOrder.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.raw;\r\n\r\nimport java.util.Date;\r\nimport java.util.Objects;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder.MarketOrderRange;\r\nimport net.nikr.eve.jeveasset.gui.tabs.orders.MarketLog;\r\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\r\nimport net.troja.eve.esi.model.MarketRegionOrdersResponse;\r\nimport net.troja.eve.esi.model.MarketStructureResponse;\r\n\r\n\r\npublic class RawPublicMarketOrder {\r\n\r\n\tprivate final Integer duration;\r\n\tprivate final Integer minVolume;\r\n\tprivate final Boolean isBuyOrder;\r\n\tprivate final Double price;\r\n\tprivate final Integer systemId;\r\n\tprivate final Integer typeId;\r\n\tprivate final String range;\r\n\tprivate final MarketOrderRange rangeEnum;\r\n\tprivate final Integer volumeTotal;\r\n\tprivate final Date issued;\r\n\tprivate final Long orderId;\r\n\tprivate final Integer volumeRemain;\r\n\tprivate final Long locationId;\r\n\r\n\tpublic RawPublicMarketOrder(MarketRegionOrdersResponse marketOrder) {\r\n\t\tthis.duration = SafeConverter.toInteger(marketOrder.getDuration());\r\n\t\tthis.minVolume = SafeConverter.toInteger(marketOrder.getMinVolume());\r\n\t\tthis.isBuyOrder = marketOrder.getIsBuyOrder();\r\n\t\tthis.price = marketOrder.getPrice();\r\n\t\tthis.systemId = SafeConverter.toInteger(marketOrder.getSystemId());\r\n\t\tthis.typeId = SafeConverter.toInteger(marketOrder.getTypeId());\r\n\t\tthis.range = marketOrder.getRangeString();\r\n\t\tthis.rangeEnum = RawConverter.toMarketOrderRange(marketOrder.getRange());\r\n\t\tthis.volumeTotal = SafeConverter.toInteger(marketOrder.getVolumeTotal());\r\n\t\tthis.issued = RawConverter.toDate(marketOrder.getIssued());\r\n\t\tthis.orderId = marketOrder.getOrderId();\r\n\t\tthis.volumeRemain = SafeConverter.toInteger(marketOrder.getVolumeRemain());\r\n\t\tthis.locationId = marketOrder.getLocationId();\r\n\t}\r\n\r\n\tpublic RawPublicMarketOrder(MarketStructureResponse marketOrder, final Long systemId) {\r\n\t\tthis.duration = SafeConverter.toInteger(marketOrder.getDuration());\r\n\t\tthis.minVolume = SafeConverter.toInteger(marketOrder.getMinVolume());\r\n\t\tthis.isBuyOrder = marketOrder.getIsBuyOrder();\r\n\t\tthis.price = marketOrder.getPrice();\r\n\t\tthis.systemId = SafeConverter.toInteger(systemId);\r\n\t\tthis.typeId = SafeConverter.toInteger(marketOrder.getTypeId());\r\n\t\tthis.range = marketOrder.getRangeString();\r\n\t\tthis.rangeEnum = RawConverter.toMarketOrderRange(marketOrder.getRange());\r\n\t\tthis.volumeTotal = SafeConverter.toInteger(marketOrder.getVolumeTotal());\r\n\t\tthis.issued = RawConverter.toDate(marketOrder.getIssued());\r\n\t\tthis.orderId = marketOrder.getOrderId();\r\n\t\tthis.volumeRemain = SafeConverter.toInteger(marketOrder.getVolumeRemain());\r\n\t\tthis.locationId = marketOrder.getLocationId();\r\n\t}\r\n\r\n\tpublic RawPublicMarketOrder(MarketLog marketLog) {\r\n\t\tthis.duration = marketLog.getDuration();\r\n\t\tthis.minVolume = marketLog.getMinVolume();\r\n\t\tthis.isBuyOrder = marketLog.getBid();\r\n\t\tthis.price = marketLog.getPrice();\r\n\t\tthis.systemId = SafeConverter.toInteger(marketLog.getSolarSystemID());\r\n\t\tthis.typeId = marketLog.getTypeID();\r\n\t\tthis.range = null;\r\n\t\tthis.rangeEnum = RawConverter.toMarketOrderRange(marketLog.getRange(), null, null);\r\n\t\tthis.volumeTotal = marketLog.getVolEntered();\r\n\t\tthis.issued = marketLog.getIssueDate();\r\n\t\tthis.orderId = marketLog.getOrderID();\r\n\t\tthis.volumeRemain = RawConverter.toInteger(marketLog.getVolRemaining());\r\n\t\tthis.locationId = marketLog.getStationID();\r\n\t}\r\n\r\n\tpublic Integer getDuration() {\r\n\t\treturn duration;\r\n\t}\r\n\r\n\tpublic Integer getMinVolume() {\r\n\t\treturn minVolume;\r\n\t}\r\n\r\n\tpublic Boolean isBuyOrder() {\r\n\t\treturn isBuyOrder;\r\n\t}\r\n\r\n\tpublic Double getPrice() {\r\n\t\treturn price;\r\n\t}\r\n\r\n\tpublic Integer getSystemID() {\r\n\t\treturn systemId;\r\n\t}\r\n\r\n\tpublic Integer getTypeID() {\r\n\t\treturn typeId;\r\n\t}\r\n\r\n\tpublic MarketOrderRange getRange() {\r\n\t\treturn rangeEnum;\r\n\t}\r\n\r\n\tpublic String getRangeString() {\r\n\t\treturn range;\r\n\t}\r\n\r\n\tpublic Integer getVolumeTotal() {\r\n\t\treturn volumeTotal;\r\n\t}\r\n\r\n\tpublic Date getIssued() {\r\n\t\treturn issued;\r\n\t}\r\n\r\n\tpublic Long getOrderID() {\r\n\t\treturn orderId;\r\n\t}\r\n\r\n\tpublic Integer getVolumeRemain() {\r\n\t\treturn volumeRemain;\r\n\t}\r\n\r\n\tpublic Long getLocationID() {\r\n\t\treturn locationId;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 7;\r\n\t\thash = 37 * hash + Objects.hashCode(this.orderId);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal RawPublicMarketOrder other = (RawPublicMarketOrder) obj;\r\n\t\tif (!Objects.equals(this.orderId, other.orderId)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/raw/RawSkill.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.api.raw;\r\n\r\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\r\nimport net.troja.eve.esi.model.Skill;\r\n\r\n\r\npublic class RawSkill {\r\n\tprivate Integer activeSkillLevel;\r\n\tprivate Integer skillId;\r\n\tprivate Long skillpointsInSkill;\r\n\tprivate Integer trainedSkillLevel;\r\n\r\n\t/**\r\n\t * New\r\n\t */\r\n\tprivate RawSkill() { }\r\n\r\n\tpublic static RawSkill create() {\r\n\t\treturn new RawSkill();\r\n\t}\r\n\r\n\tpublic RawSkill(RawSkill skill) {\r\n\t\tthis.activeSkillLevel = skill.getActiveSkillLevel();\r\n\t\tthis.skillId = skill.getTypeID();\r\n\t\tthis.skillpointsInSkill = skill.getSkillpoints();\r\n\t\tthis.trainedSkillLevel = skill.getTrainedSkillLevel();\r\n\t}\r\n\r\n\tpublic RawSkill(Skill skill) {\r\n\t\tthis.activeSkillLevel = SafeConverter.toInteger(skill.getActiveSkillLevel());\r\n\t\tthis.skillId = SafeConverter.toInteger(skill.getSkillId());\r\n\t\tthis.skillpointsInSkill = skill.getSkillpointsInSkill();\r\n\t\tthis.trainedSkillLevel = SafeConverter.toInteger(skill.getTrainedSkillLevel());\r\n\t}\r\n\r\n\tpublic Integer getActiveSkillLevel() {\r\n\t\treturn activeSkillLevel;\r\n\t}\r\n\r\n\tpublic Integer getTypeID() {\r\n\t\treturn skillId;\r\n\t}\r\n\r\n\tpublic Long getSkillpoints() {\r\n\t\treturn skillpointsInSkill;\r\n\t}\r\n\r\n\tpublic Integer getTrainedSkillLevel() {\r\n\t\treturn trainedSkillLevel;\r\n\t}\r\n\r\n\tpublic void setActiveSkillLevel(Integer activeSkillLevel) {\r\n\t\tthis.activeSkillLevel = activeSkillLevel;\r\n\t}\r\n\r\n\tpublic void setTypeID(Integer typeID) {\r\n\t\tthis.skillId = typeID;\r\n\t}\r\n\r\n\tpublic void setSkillpoints(Long skillpoints) {\r\n\t\tthis.skillpointsInSkill = skillpoints;\r\n\t}\r\n\r\n\tpublic void setTrainedSkillLevel(Integer trainedSkillLevel) {\r\n\t\tthis.trainedSkillLevel = trainedSkillLevel;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/api/raw/RawTransaction.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.data.api.raw;\n\nimport java.util.Date;\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\nimport net.troja.eve.esi.model.CharacterWalletTransactionsResponse;\nimport net.troja.eve.esi.model.CorporationWalletTransactionsResponse;\n\n\npublic class RawTransaction {\n\n\tprivate Integer clientId = null;\n\tprivate Date date = null;\n\tprivate Boolean isBuy = null;\n\tprivate Boolean isPersonal = null;\n\tprivate Long journalRefId = null;\n\tprivate Long locationId = null;\n\tprivate Integer quantity = null;\n\tprivate Long transactionId = null;\n\tprivate Integer typeId = null;\n\tprivate Double unitPrice = null;\n\tprivate Integer accountKey = null;\n\n\t/**\n\t * New\n\t */\n\tprivate RawTransaction() {\n\t}\n\n\tpublic static RawTransaction create() {\n\t\treturn new RawTransaction();\n\t}\n\n\t/**\n\t * Raw\n\t *\n\t * @param transaction\n\t */\n\tprotected RawTransaction(RawTransaction transaction) {\n\t\tclientId = transaction.clientId;\n\t\tdate = transaction.date;\n\t\tisBuy = transaction.isBuy;\n\t\tisPersonal = transaction.isPersonal;\n\t\tjournalRefId = transaction.journalRefId;\n\t\tlocationId = transaction.locationId;\n\t\tquantity = transaction.quantity;\n\t\ttransactionId = transaction.transactionId;\n\t\ttypeId = transaction.typeId;\n\t\tunitPrice = transaction.unitPrice;\n\t\taccountKey = transaction.accountKey;\n\t}\n\n\t/**\n\t * ESI Character\n\t *\n\t * @param transaction\n\t * @param accountKey\n\t */\n\tpublic RawTransaction(CharacterWalletTransactionsResponse transaction, Integer accountKey) {\n\t\tclientId = SafeConverter.toInteger(transaction.getClientId());\n\t\tdate = RawConverter.toDate(transaction.getDate());\n\t\tisBuy = transaction.getIsBuy();\n\t\tisPersonal = transaction.getIsPersonal();\n\t\tjournalRefId = transaction.getJournalRefId();\n\t\tlocationId = transaction.getLocationId();\n\t\tquantity = SafeConverter.toInteger(transaction.getQuantity());\n\t\ttransactionId = transaction.getTransactionId();\n\t\ttypeId = SafeConverter.toInteger(transaction.getTypeId());\n\t\tunitPrice = transaction.getUnitPrice();\n\t\tthis.accountKey = accountKey;\n\t}\n\n\t/**\n\t * ESI Corporation\n\t *\n\t * @param transaction\n\t * @param accountKey\n\t */\n\tpublic RawTransaction(CorporationWalletTransactionsResponse transaction, Integer accountKey) {\n\t\tclientId = SafeConverter.toInteger(transaction.getClientId());\n\t\tdate = RawConverter.toDate(transaction.getDate());\n\t\tisBuy = transaction.getIsBuy();\n\t\tisPersonal = false;\n\t\tjournalRefId = transaction.getJournalRefId();\n\t\tlocationId = transaction.getLocationId();\n\t\tquantity = SafeConverter.toInteger(transaction.getQuantity());\n\t\ttransactionId = transaction.getTransactionId();\n\t\ttypeId = SafeConverter.toInteger(transaction.getTypeId());\n\t\tunitPrice = transaction.getUnitPrice();\n\t\tthis.accountKey = accountKey;\n\t}\n\n\tpublic final long getClientID() {\n\t\treturn clientId;\n\t}\n\n\tpublic void setClientID(Integer clientId) {\n\t\tthis.clientId = clientId;\n\t}\n\n\tpublic Date getDate() {\n\t\treturn date;\n\t}\n\n\tpublic void setDate(Date date) {\n\t\tthis.date = date;\n\t}\n\n\tpublic Boolean isBuy() {\n\t\treturn isBuy;\n\t}\n\n\tpublic void setBuy(Boolean isBuy) {\n\t\tthis.isBuy = isBuy;\n\t}\n\n\tpublic Boolean isPersonal() {\n\t\treturn isPersonal;\n\t}\n\n\tpublic void setPersonal(Boolean isPersonal) {\n\t\tthis.isPersonal = isPersonal;\n\t}\n\n\tpublic Long getJournalRefID() {\n\t\treturn journalRefId;\n\t}\n\n\tpublic void setJournalRefID(Long journalRefId) {\n\t\tthis.journalRefId = journalRefId;\n\t}\n\n\tpublic long getLocationID() {\n\t\treturn locationId;\n\t}\n\n\tpublic void setLocationID(Long locationId) {\n\t\tthis.locationId = locationId;\n\t}\n\n\tpublic Integer getQuantity() {\n\t\treturn quantity;\n\t}\n\n\tpublic void setQuantity(Integer quantity) {\n\t\tthis.quantity = quantity;\n\t}\n\n\tpublic Long getTransactionID() {\n\t\treturn transactionId;\n\t}\n\n\tpublic void setTransactionID(Long transactionId) {\n\t\tthis.transactionId = transactionId;\n\t}\n\n\tpublic Integer getTypeID() {\n\t\treturn typeId;\n\t}\n\n\tpublic void setTypeID(Integer typeId) {\n\t\tthis.typeId = typeId;\n\t}\n\n\tpublic Double getPrice() {\n\t\treturn unitPrice;\n\t}\n\n\tpublic void setUnitPrice(Double unitPrice) {\n\t\tthis.unitPrice = unitPrice;\n\t}\n\n\tpublic Integer getAccountKey() {\n\t\treturn accountKey;\n\t}\n\n\tpublic void setAccountKey(Integer accountKey) {\n\t\tthis.accountKey = accountKey;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/profile/Profile.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.data.profile;\n\nimport java.io.File;\nimport java.util.ArrayList;\nimport java.util.List;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\nimport net.nikr.eve.jeveasset.io.local.profile.ProfileDatabase;\nimport net.nikr.eve.jeveasset.io.local.ProfileReader;\nimport net.nikr.eve.jeveasset.io.local.profile.ProfileDatabase.Table;\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n\npublic class Profile implements Comparable<Profile> {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(Profile.class);\n\tprivate static final String XML = \"xml\";\n\tprivate static final String XML_BAC = \"bac\";\n\tprivate static final String XML_BACKUP = \"xmlbackup\";\n\tprivate static final String SQLITE = \"db\";\n\tprivate static final String SQLITE_BACKUP = \"zip\";\n\n\tpublic static enum ProfileType {\n\t\tXML, SQLITE\n\t}\n\n\tprivate String name;\n\tprivate boolean defaultProfile;\n\tprivate boolean activeProfile;\n\tprivate ProfileType type;\n\tprivate final StockpileIDs stockpileIDs;\n\tprivate final List<EsiOwner> esiOwners = new ArrayList<>();\n\n\tpublic Profile() {\n\t\tthis(\"Default\", true, true, ProfileType.SQLITE);\n\t}\n\n\tpublic Profile(final String name, final boolean defaultProfile, final boolean activeProfile, final ProfileType type) {\n\t\tthis.name = name;\n\t\tthis.defaultProfile = defaultProfile;\n\t\tthis.activeProfile = activeProfile;\n\t\tthis.stockpileIDs = new StockpileIDs(name);\n\t\tthis.type = type;\n\t}\n\n\tpublic boolean load() {\n\t\tclear(); //Clear the profile before loading\n\t\tstockpileIDs.load(); //Load stockpileIDs\n\t\tif (type == ProfileType.XML) {\n\t\t\treturn ProfileReader.load(this); //Assets (Must be loaded before the price data)\n\t\t} else if (type == ProfileType.SQLITE) {\n\t\t\treturn ProfileDatabase.load(this);\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tpublic void saveTable(Table table) {\n\t\tif (type == ProfileType.XML) {\n\t\t\tsave(); //Full save\n\t\t} else {\n\t\t\tProfileDatabase.save(this, table);\n\t\t}\n\t}\n\n\tpublic void save() {\n\t\tboolean save = ProfileDatabase.save(this);\n\t\tif (save && type == ProfileType.XML) {\n\t\t\ttype = ProfileType.SQLITE; //Migrated to SQLite\n\t\t\tFile file = new File(getXmlFilename());\n\t\t\tFile backup = new File(getBackupXmlFilename());\n\t\t\tfile.renameTo(backup);\n\t\t}\n\t}\n\n\tpublic boolean isDefaultProfile() {\n\t\treturn defaultProfile;\n\t}\n\n\tpublic boolean isActiveProfile() {\n\t\treturn activeProfile;\n\t}\n\n\tpublic void setActiveProfile(final boolean activeProfile) {\n\t\tthis.activeProfile = activeProfile;\n\t}\n\n\tpublic StockpileIDs getStockpileIDs() {\n\t\treturn stockpileIDs;\n\t}\n\n\tpublic List<EsiOwner> getEsiOwners() {\n\t\treturn esiOwners;\n\t}\n\n\tpublic void clear() {\n\t\tesiOwners.clear();\n\t}\n\n\tpublic String getXmlFilename() {\n\t\treturn getFilenameExtension(XML);\n\t}\n\n\tpublic String getBackupXmlFilename() {\n\t\treturn getFilenameExtension(XML_BACKUP);\n\t}\n\n\tpublic String getSQLiteFilename() {\n\t\treturn getFilenameExtension(SQLITE);\n\t}\n\n\tpublic String getBackupSQLiteFilename() {\n\t\tString filename = getName() + \"_\" + Program.PROGRAM_VERSION + \"_dbbackup\";\n\t\tfilename = filename.replace(\" \", \"_\"); //Remove spaces\n\t\tfilename = filename + \".\" + SQLITE_BACKUP; //Add extension\n\t\tif (defaultProfile) {\n\t\t\tfilename = \"#\" + filename; //Mark active profile\n\t\t}\n\t\t\n\t\tfilename = FileUtil.getPathProfile(filename);\n\t\treturn filename;\n\t}\n\n\tprivate File getBackupFile() {\n\t\tswitch (type) {\n\t\t\tcase XML: return new File(getFilenameExtension(XML_BAC));\n\t\t\tcase SQLITE: return null;\n\t\t\tdefault: return null;\n\t\t}\n\t}\n\n\tprivate File getFile() {\n\t\tswitch (type) {\n\t\t\tcase XML: return new File(getFilenameExtension(XML));\n\t\t\tcase SQLITE: return new File(getFilenameExtension(SQLITE));\n\t\t\tdefault: return null;\n\t\t}\n\t}\n\n\tprivate String getFilenameExtension(String extension) {\n\t\tString filename = getName();\n\t\tfilename = filename.replace(\" \", \"_\"); //Remove spaces\n\t\tfilename = filename + \".\" + extension; //Add extension\n\t\tif (defaultProfile) {\n\t\t\tfilename = \"#\" + filename; //Mark active profile\n\t\t}\n\t\tfilename = FileUtil.getPathProfile(filename);\n\t\treturn filename;\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic void setDefaultProfile(final boolean defaultProfile) {\n\t\tif (this.defaultProfile != defaultProfile) {\n\t\t\tFile from = getFile();\n\t\t\tFile backFrom = getBackupFile();\n\t\t\tthis.defaultProfile = defaultProfile;\n\t\t\tFile to = getFile();\n\t\t\tFile backTo = getBackupFile();\n\t\t\tif (from != null && to != null && !from.equals(to) && !from.renameTo(to)) {\n\t\t\t\tLOG.warn(\"Failed to rename profile: {}\", getName());\n\t\t\t}\n\t\t\tif (backFrom != null && backTo != null && !backFrom.equals(backTo) && !backFrom.renameTo(backTo)) {\n\t\t\t\tLOG.warn(\"Failed to rename profile backup: {}\", getName());\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic void setName(final String name) {\n\t\tFile from = getFile();\n\t\tFile backFrom = getBackupFile();\n\t\tthis.name = name;\n\t\tFile to = getFile();\n\t\tFile backTo = getBackupFile();\n\t\tif (from != null && to != null && !from.equals(to) && !from.renameTo(to)) {\n\t\t\tLOG.warn(\"Failed to rename profile: {}\", getName());\n\t\t}\n\t\tif (backFrom != null && backTo != null && !backFrom.equals(backTo) && !backFrom.renameTo(backTo)) {\n\t\t\tLOG.warn(\"Failed to rename profile backup: {}\", getName());\n\t\t}\n\t\tstockpileIDs.renameTable(name);\n\t}\n\n\tpublic void delete() {\n\t\tFile file = getFile();\n\t\tif (file != null && !file.delete()) {\n\t\t\tLOG.warn(\"Failed to delete profile: {}\", getName());\n\t\t}\n\t\tFile backupFile = getBackupFile();\n\t\tif (backupFile != null && !backupFile.delete()) {\n\t\t\tLOG.warn(\"Failed to delete profile backup: {}\", getName());\n\t\t}\n\t\tstockpileIDs.removeTable();\n\t}\n\n\t@Override\n\tpublic boolean equals(Object obj) {\n\t\tif (this == obj) {\n\t\t\treturn true;\n\t\t}\n\t\tif (obj == null) {\n\t\t\treturn false;\n\t\t}\n\t\tif (getClass() != obj.getClass()) {\n\t\t\treturn false;\n\t\t}\n\t\tfinal Profile other = (Profile) obj;\n\t\tif (this.name == null && other.name == null) {\n\t\t\treturn true; //Both null\n\t\t} else if (this.name == null || other.name == null) {\n\t\t\treturn false; //One null\n\t\t} else {\n\t\t\treturn this.name.equalsIgnoreCase(other.name);\n\t\t}\n\t}\n\n\t@Override\n\tpublic int hashCode() {\n\t\tint hash = 3;\n\t\thash = 97 * hash + (this.name != null ? this.name.toLowerCase().hashCode() : 0);\n\t\treturn hash;\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\tString temp = name;\n\t\tif (defaultProfile) {\n\t\t\ttemp = temp + \" (default)\";\n\t\t}\n\t\t//if (activeProfile) temp = temp+\" (active)\";\n\t\treturn temp;\n\t}\n\n\t@Override\n\tpublic int compareTo(final Profile o) {\n\t\treturn this.getName().compareToIgnoreCase(o.getName());\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/profile/ProfileData.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.profile;\r\n\r\nimport ca.odell.glazedlists.EventList;\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\nimport java.util.Collections;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Objects;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.SplashUpdater;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAccountBalance;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyBlueprint;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyExtraction;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyJournal;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyLoyaltyPoints;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMining;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyNpcStanding;\r\nimport net.nikr.eve.jeveasset.data.api.my.MySkill;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawAsset;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawBlueprint;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawClone;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawIndustryJob.IndustryJobStatus;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournalRefType;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder.Change;\r\nimport net.nikr.eve.jeveasset.data.sde.IndustryMaterial;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.sde.ReprocessedMaterial;\r\nimport net.nikr.eve.jeveasset.data.sde.RouteFinder;\r\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\r\nimport net.nikr.eve.jeveasset.data.settings.AddedData;\r\nimport net.nikr.eve.jeveasset.data.settings.MarketPriceData;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.data.settings.tag.Tags;\r\nimport net.nikr.eve.jeveasset.data.settings.types.EditableLocationType;\r\nimport net.nikr.eve.jeveasset.data.settings.types.EditablePriceType;\r\nimport net.nikr.eve.jeveasset.data.settings.types.ItemType;\r\nimport net.nikr.eve.jeveasset.data.settings.types.LastTransactionType;\r\nimport net.nikr.eve.jeveasset.data.settings.types.LocationsType;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.settings.SoundsSettingsPanel.SoundOption;\r\nimport net.nikr.eve.jeveasset.gui.shared.StringComparators;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Percent;\r\nimport net.nikr.eve.jeveasset.gui.sounds.SoundPlayer;\r\nimport net.nikr.eve.jeveasset.gui.tabs.loyalty.TotalLoyaltyPoints;\r\nimport net.nikr.eve.jeveasset.gui.tabs.orders.OutbidProcesser.OutbidProcesserOutput;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileItem;\r\nimport net.nikr.eve.jeveasset.i18n.General;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.DataConverter;\r\n\r\npublic class ProfileData {\r\n\r\n\tprivate final ProfileManager profileManager;\r\n\r\n\tprivate final EventList<MyContractItem> contractItemEventList = EventListManager.create();\r\n\tprivate final EventList<MyIndustryJob> industryJobsEventList = EventListManager.create();\r\n\tprivate final EventList<MyMarketOrder> marketOrdersEventList = EventListManager.create();\r\n\tprivate final EventList<MyJournal> journalEventList = EventListManager.create();\r\n\tprivate final EventList<MyTransaction> transactionsEventList = EventListManager.create();\r\n\tprivate final EventList<MyAsset> assetsEventList = EventListManager.create();\r\n\tprivate final EventList<MyAccountBalance> accountBalanceEventList = EventListManager.create();\r\n\tprivate final EventList<MyContract> contractEventList = EventListManager.create();\r\n\tprivate final EventList<MySkill> skillsEventList = EventListManager.create();\r\n\tprivate final EventList<MyLoyaltyPoints> loyaltyPointsEventList = EventListManager.create();\r\n\tprivate final EventList<MyNpcStanding> npcStandingsEventList = EventListManager.create();\r\n\tprivate final EventList<MyMining> miningEventList = EventListManager.create();\r\n\tprivate final EventList<MyExtraction> extractionsEventList = EventListManager.create();\r\n\tprivate final List<MyContractItem> contractItemList = new ArrayList<>();\r\n\tprivate final List<MyIndustryJob> industryJobsList = new ArrayList<>();\r\n\tprivate final List<MyMarketOrder> marketOrdersList = new ArrayList<>();\r\n\tprivate final List<MyJournal> journalList = new ArrayList<>();\r\n\tprivate final List<MyTransaction> transactionsList = new ArrayList<>();\r\n\tprivate final List<MyAsset> assetsList = new ArrayList<>();\r\n\tprivate final Map<OwnerType, List<RawClone>> clonesList = new HashMap<>();\r\n\tprivate final List<MyAccountBalance> accountBalanceList = new ArrayList<>();\r\n\tprivate final List<MyContract> contractList = new ArrayList<>();\r\n\tprivate final Map<String, Long> skillPointsTotal = new HashMap<>();\r\n\tprivate Map<Integer, List<MyAsset>> uniqueAssetsDuplicates = null; //TypeID : int\r\n\tprivate Map<Integer, MarketPriceData> transactionSellPriceData; //TypeID : int\r\n\tprivate Map<Integer, MarketPriceData> transactionBuyPriceData; //TypeID : int\r\n\tprivate Map<Integer, Double> transactionBuyTax; //TypeID : int\r\n\tprivate Map<Long, Double> transactionSellTax; //TransactionID : long\r\n\tprivate Map<Long, Double> marketOrdersBrokersFee; //OrderID : long\r\n\tprivate final List<String> ownerNames = new ArrayList<>();\r\n\tprivate final Map<Long, OwnerType> owners = new HashMap<>();\r\n\tprivate Set<Integer> staticTypeIDs = null;\r\n\r\n\tpublic ProfileData(ProfileManager profileManager) {\r\n\t\tthis.profileManager = profileManager;\r\n\t\tRouteFinder.load();\r\n\t\tSplashUpdater.setSubProgress(100);\r\n\t}\r\n\r\n\tpublic Set<Integer> getPriceTypeIDs() {\r\n\t\treturn createPriceTypeIDs(); //always needs to be fresh :)\r\n\t}\r\n\r\n\tpublic EventList<MyAccountBalance> getAccountBalanceEventList() {\r\n\t\treturn accountBalanceEventList;\r\n\t}\r\n\r\n\tpublic EventList<MyAsset> getAssetsEventList() {\r\n\t\treturn assetsEventList;\r\n\t}\r\n\r\n\tpublic EventList<MyIndustryJob> getIndustryJobsEventList() {\r\n\t\treturn industryJobsEventList;\r\n\t}\r\n\r\n\tpublic EventList<MyMarketOrder> getMarketOrdersEventList() {\r\n\t\treturn marketOrdersEventList;\r\n\t}\r\n\r\n\tpublic EventList<MyJournal> getJournalEventList() {\r\n\t\treturn journalEventList;\r\n\t}\r\n\r\n\tpublic EventList<MyTransaction> getTransactionsEventList() {\r\n\t\treturn transactionsEventList;\r\n\t}\r\n\r\n\tpublic EventList<MyContract> getContractEventList() {\r\n\t\treturn contractEventList;\r\n\t}\r\n\r\n\tpublic EventList<MyContractItem> getContractItemEventList() {\r\n\t\treturn contractItemEventList;\r\n\t}\r\n\r\n\tpublic EventList<MySkill> getSkillsEventList() {\r\n\t\treturn skillsEventList;\r\n\t}\r\n\r\n\tpublic EventList<MyLoyaltyPoints> getLoyaltyPointsEventList() {\r\n\t\treturn loyaltyPointsEventList;\r\n\t}\r\n\r\n\tpublic EventList<MyNpcStanding> getNpcStandingsEventList() {\r\n\t\treturn npcStandingsEventList;\r\n\t}\r\n\r\n\tpublic EventList<MyMining> getMiningEventList() {\r\n\t\treturn miningEventList;\r\n\t}\r\n\r\n\tpublic EventList<MyExtraction> getExtractionsEventList() {\r\n\t\treturn extractionsEventList;\r\n\t}\r\n\r\n\tpublic List<MyContractItem> getContractItemList() {\r\n\t\treturn contractItemList;\r\n\t}\r\n\r\n\tpublic List<MyIndustryJob> getIndustryJobsList() {\r\n\t\treturn industryJobsList;\r\n\t}\r\n\r\n\tpublic List<MyMarketOrder> getMarketOrdersList() {\r\n\t\treturn marketOrdersList;\r\n\t}\r\n\r\n\tpublic List<MyJournal> getJournalList() {\r\n\t\treturn journalList;\r\n\t}\r\n\r\n\tpublic List<MyTransaction> getTransactionsList() {\r\n\t\treturn transactionsList;\r\n\t}\r\n\r\n\tpublic List<MyAsset> getAssetsList() {\r\n\t\treturn assetsList;\r\n\t}\r\n\r\n\tpublic List<MyAccountBalance> getAccountBalanceList() {\r\n\t\treturn accountBalanceList;\r\n\t}\r\n\r\n\tpublic Map<OwnerType, List<RawClone>> getClonesList() {\r\n\t\treturn clonesList;\r\n\t}\r\n\r\n\tpublic List<MyContract> getContractList() {\r\n\t\treturn contractList;\r\n\t}\r\n\r\n\tpublic Map<String, Long> getSkillPointsTotal() {\r\n\t\treturn skillPointsTotal;\r\n\t}\r\n\r\n\tpublic List<String> getOwnerNames(boolean all) {\r\n\t\tsynchronized (ownerNames) { //synchronized as ownerNames are modified by updateEventLists\r\n\t\t\tList<String> sortedOwners = new ArrayList<>(ownerNames);\r\n\t\t\tif (all) {\r\n\t\t\t\tsortedOwners.add(0, General.get().all());\r\n\t\t\t}\r\n\t\t\treturn sortedOwners;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Map<Long, OwnerType> getOwners() {\r\n\t\tsynchronized (owners) { //synchronized as owners are modified by updateEventLists\r\n\t\t\treturn new HashMap<>(owners);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Set<Integer> createPriceTypeIDs() {\r\n\t\tSet<Integer> priceTypeIDs = new HashSet<>();\r\n\t\tpriceTypeIDs.add(40519); //Skill Extractor\r\n\t\tpriceTypeIDs.add(40520); //Large Skill Injector\r\n\t\tfor (OwnerType owner : profileManager.getOwnerTypes()) {\r\n\t\t\t//Add Assets to uniqueIds\r\n\t\t\tdeepAssets(owner.getAssets(), priceTypeIDs);\r\n\t\t\t//Add Market Orders to uniqueIds\r\n\t\t\tfor (MyMarketOrder marketOrder : owner.getMarketOrders()) {\r\n\t\t\t\tItem item = marketOrder.getItem();\r\n\t\t\t\tif (item.isMarketGroup()) {\r\n\t\t\t\t\tpriceTypeIDs.add(item.getTypeID());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Add Transaction to uniqueIds\r\n\t\t\tfor (MyTransaction transaction : owner.getTransactions()) {\r\n\t\t\t\tItem item = transaction.getItem();\r\n\t\t\t\tif (item.isMarketGroup()) {\r\n\t\t\t\t\tpriceTypeIDs.add(item.getTypeID());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Add Industry Job to uniqueIds\r\n\t\t\tfor (MyIndustryJob industryJob : owner.getIndustryJobs()) {\r\n\t\t\t\t//Blueprint\r\n\t\t\t\tItem blueprint = industryJob.getItem();\r\n\t\t\t\tif (blueprint.isMarketGroup()) {\r\n\t\t\t\t\tpriceTypeIDs.add(blueprint.getTypeID());\r\n\t\t\t\t}\r\n\t\t\t\t//Manufacturing Output\r\n\t\t\t\tif (industryJob.isManufacturing() && industryJob.isNotDeliveredToAssets() && industryJob.getProductTypeID() != null) {\r\n\t\t\t\t\t//Output\r\n\t\t\t\t\tItem output = ApiIdConverter.getItem(industryJob.getProductTypeID());\r\n\t\t\t\t\tif (output.isMarketGroup()) {\r\n\t\t\t\t\t\tpriceTypeIDs.add(output.getTypeID());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Add Contract to uniqueIds\r\n\t\t\tfor (Map.Entry<MyContract, List<MyContractItem>> entry : owner.getContracts().entrySet()) {\r\n\t\t\t\tfor (MyContractItem contractItem : entry.getValue()) {\r\n\t\t\t\t\tItem item = contractItem.getItem();\r\n\t\t\t\t\tif (item.isMarketGroup()) {\r\n\t\t\t\t\t\tpriceTypeIDs.add(item.getTypeID());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Add Mining to uniqueIds\r\n\t\t\tfor (MyMining mining : owner.getMining()) {\r\n\t\t\t\tItem item = mining.getItem();\r\n\t\t\t\tif (item.isMarketGroup()) {\r\n\t\t\t\t\tpriceTypeIDs.add(item.getTypeID());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Add Clone to uniqueIds\r\n\t\t\tfor (RawClone clone : owner.getClones()) {\r\n\t\t\t\tfor (Integer typeID : clone.getImplants()) {\r\n\t\t\t\t\tItem item = ApiIdConverter.getItem(typeID);\r\n\t\t\t\t\tif (item.isMarketGroup()) {\r\n\t\t\t\t\t\tpriceTypeIDs.add(item.getTypeID());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Add StockpileItems to uniqueIds\r\n\t\tfor (Stockpile stockpile : Settings.get().getStockpiles()) {\r\n\t\t\tfor (StockpileItem stockpileItem : stockpile.getItems()) {\r\n\t\t\t\tif (stockpileItem.getItem().isMarketGroup()) {\r\n\t\t\t\t\tpriceTypeIDs.add(stockpileItem.getTypeID());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Add reprocessed and manufacturing items to the price queue\r\n\t\tif (staticTypeIDs == null) {\r\n\t\t\tstaticTypeIDs = new HashSet<>();\r\n\t\t\tfor (Item item : StaticData.get().getItems().values()) {\r\n\t\t\t\tfor (ReprocessedMaterial reprocessedMaterial : item.getReprocessedMaterial()) {\r\n\t\t\t\t\tint typeID = reprocessedMaterial.getTypeID();\r\n\t\t\t\t\tItem reprocessedItem = ApiIdConverter.getItem(typeID);\r\n\t\t\t\t\tif (reprocessedItem.isMarketGroup()) {\r\n\t\t\t\t\t\tstaticTypeIDs.add(typeID);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tfor (IndustryMaterial industryMaterial : item.getManufacturingMaterials()) {\r\n\t\t\t\t\tint typeID = industryMaterial.getTypeID();\r\n\t\t\t\t\tItem reprocessedItem = ApiIdConverter.getItem(typeID);\r\n\t\t\t\t\tif (reprocessedItem.isMarketGroup()) {\r\n\t\t\t\t\t\tstaticTypeIDs.add(typeID);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tpriceTypeIDs.addAll(staticTypeIDs);\r\n\t\treturn priceTypeIDs;\r\n\t}\r\n\r\n\tprivate void deepAssets(List<MyAsset> assets, Set<Integer> priceTypeIDs) {\r\n\t\tfor (MyAsset asset : assets) {\r\n\t\t\t//Unique Ids\r\n\t\t\tif (asset.getItem().isMarketGroup()) {\r\n\t\t\t\tpriceTypeIDs.add(asset.getItem().getTypeID());\r\n\t\t\t}\r\n\t\t\tdeepAssets(asset.getAssets(), priceTypeIDs);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void updateMarketOrders(OutbidProcesserOutput output) {\r\n\t\tDate addedDate = new Date();\r\n\t\tMap<Long, Date> marketOrdersAdded = AddedData.getMarketOrders().getAll();\r\n\t\tsynchronized (owners) { //synchronized as owners are modified by updateEventLists\r\n\t\t\tfor (OwnerType ownerType : owners.values()) {\r\n\t\t\t\tfor (MyMarketOrder order : ownerType.getMarketOrders()) { // getMarketOrders() is thread safe\r\n\t\t\t\t\torder.setOutbid(output.getOutbids().get(order.getOrderID()));\r\n\t\t\t\t\tboolean updated = order.addChanges(output.getUpdates().get(order.getOrderID()));\r\n\t\t\t\t\tif (updated) { //If Market Order have been updated\r\n\t\t\t\t\t\torder.setChanged(AddedData.getMarketOrders().getPut(marketOrdersAdded, order.getOrderID(), addedDate));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tupdateOutbidOwned(marketOrdersList);\r\n\t\tAddedData.getMarketOrders().commitQueue();\r\n\t\tProgram.ensureEDT(new Runnable() {\r\n\t\t\t@Override\r\n\t\t\tpublic void run() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tmarketOrdersEventList.getReadWriteLock().writeLock().lock();\r\n\t\t\t\t\tList<MyMarketOrder> cache = new ArrayList<>(marketOrdersEventList);\r\n\t\t\t\t\tmarketOrdersEventList.clear();\r\n\t\t\t\t\tmarketOrdersEventList.addAll(cache);\r\n\t\t\t\t} finally {\r\n\t\t\t\t\tmarketOrdersEventList.getReadWriteLock().writeLock().unlock();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tpublic void updateLocations(Set<Long> locationIDs) {\r\n\t\tif (locationIDs == null || locationIDs.isEmpty()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t//Update Contracts locations\r\n\t\ttry {\r\n\t\t\tcontractEventList.getReadWriteLock().readLock().lock();\r\n\t\t\tfor (MyContract contract : contractEventList) {\r\n\t\t\t\t//Update Locations\r\n\t\t\t\tcontract.setStartLocation(ApiIdConverter.getLocation(contract.getStartLocationID()));\r\n\t\t\t\tcontract.setEndLocation(ApiIdConverter.getLocation(contract.getEndLocationID()));\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tcontractEventList.getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t\tupdateEditableLocation(transactionsEventList, locationIDs);\r\n\t\tupdateEditableLocation(marketOrdersEventList, locationIDs);\r\n\t\tupdateEditableLocation(assetsEventList, locationIDs);\r\n\t\tupdateEditableLocation(industryJobsEventList, locationIDs);\r\n\t\tupdateLocations(contractItemEventList, locationIDs);\r\n\t\tupdateLocations(contractEventList, locationIDs);\r\n\t\tupdateEditableLocation(miningEventList, locationIDs);\r\n\t\tupdateEditableLocation(extractionsEventList, locationIDs);\r\n\t\tupdateLocationList(StaticData.get().getAgents().values(), locationIDs);\r\n\t}\r\n\r\n\tpublic void updateNames(Set<Long> itemIDs) {\r\n\t\tif (itemIDs == null || itemIDs.isEmpty()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tupdateNames(assetsEventList, itemIDs);\r\n\t}\r\n\r\n\tpublic void updatePrice(Set<Integer> typeIDs) {\r\n\t\tif (typeIDs == null || typeIDs.isEmpty()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t//Update Items dynamic values\r\n\t\tfor (Item item : StaticData.get().getItems().values()) {\r\n\t\t\tdouble before = item.getPriceReprocessed();\r\n\t\t\tdouble price = ApiIdConverter.getPriceReprocessed(item);\r\n\t\t\titem.setPriceReprocessed(price);\r\n\t\t\tdouble beforeMax = item.getPriceReprocessedMax();\r\n\t\t\tdouble priceMax = ApiIdConverter.getPriceReprocessedMax(item);\r\n\t\t\titem.setPriceReprocessedMax(priceMax);\r\n\t\t\tdouble beforeManufacturing = item.getPriceManufacturing();\r\n\t\t\tdouble priceManufacturing = ApiIdConverter.getPriceManufacturing(item);\r\n\t\t\titem.setPriceManufacturing(priceManufacturing);\r\n\t\t\tif (before != price || beforeMax != priceMax || beforeManufacturing != priceManufacturing) {\r\n\t\t\t\ttypeIDs.add(item.getTypeID());\r\n\t\t\t}\r\n\t\t}\r\n\t\tupdatePrices(marketOrdersEventList, typeIDs);\r\n\t\tupdatePrices(contractItemEventList, typeIDs);\r\n\t\tupdatePrices(miningEventList, typeIDs);\r\n\t\tupdatePrices(assetsEventList, typeIDs);\r\n\t\tupdateIndustryJobPrices(industryJobsEventList, typeIDs);\r\n\t}\r\n\r\n\tpublic void updateEventLists() {\r\n\t\tupdateEventLists(new Date());\r\n\t}\r\n\r\n\tpublic synchronized void updateEventLists(Date addedDate) {\r\n\t\tuniqueAssetsDuplicates = new HashMap<>();\r\n\t\tSet<String> uniqueOwnerNames = new HashSet<>();\r\n\t\tMap<Long, OwnerType> uniqueOwners = new HashMap<>();\r\n\t\t//Temp\r\n\t\tList<MyAsset> assets = new ArrayList<>();\r\n\t\tList<MyAccountBalance> accountBalance = new ArrayList<>();\r\n\t\tMap<Long, OwnerType> assetsMap = new HashMap<>();\r\n\t\tMap<Long, OwnerType> accountBalanceMap = new HashMap<>();\r\n\t\tMap<Long, MyIndustryJob> copyIndustryJobs = new HashMap<>();\r\n\t\tSet<MyMarketOrder> marketOrders = new HashSet<>();\r\n\t\tSet<MyMarketOrder> charMarketOrders = new HashSet<>();\r\n\t\tSet<MyJournal> journals = new HashSet<>();\r\n\t\tSet<MyTransaction> transactions = new HashSet<>();\r\n\t\tSet<MyTransaction> charTransactions = new HashSet<>();\r\n\t\tSet<MyIndustryJob> industryJobs = new HashSet<>();\r\n\t\tSet<MyContractItem> contractItems = new HashSet<>();\r\n\t\tSet<MyContract> contracts = new HashSet<>();\r\n\t\tSet<MySkill> skills = new HashSet<>();\r\n\t\tSet<MyLoyaltyPoints> loyaltyPointses = new HashSet<>();\r\n\t\tMap<String, TotalLoyaltyPoints> loyaltyPointsTotals = new HashMap<>();\r\n\t\tSet<MyNpcStanding> npcStandings = new HashSet<>();\r\n\t\tSet<MyMining> minings = new HashSet<>();\r\n\t\tSet<MyExtraction> extractions = new HashSet<>();\r\n\t\tMap<Long, OwnerType> blueprintsMap = new HashMap<>();\r\n\t\tMap<Long, MyBlueprint> blueprints = new HashMap<>();\r\n\t\tMap<String, Long> skillPointsTotalCache = new HashMap<>();\r\n\t\tMap<OwnerType, List<RawClone>> clones = new HashMap<>();\r\n\r\n\t\tcalcTransactionsPriceData();\r\n\t\tfor (OwnerType owner : profileManager.getOwnerTypes()) {\r\n\t\t\tif (!owner.isShowOwner()) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tuniqueOwnerNames.add(owner.getOwnerName());\r\n\t\t\tuniqueOwners.put(owner.getOwnerID(), owner);\r\n\t\t}\r\n\t\t//Add Market Orders/Journal/Transactions/Industry Jobs/Contracts/Contract Items/Blueprints/Assets/Account Balance\r\n\t\tfor (OwnerType owner : profileManager.getOwnerTypes()) {\r\n\t\t\tif (!owner.isShowOwner()) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\t//Clones\r\n\t\t\tclones.put(owner, owner.getClones());\r\n\t\t\t//Market Orders\r\n\t\t\t//If owner is corporation overwrite the character orders (to use the \"right\" owner)\r\n\t\t\tif (owner.isCorporation()) {\r\n\t\t\t\tmarketOrders.addAll(owner.getMarketOrders());\r\n\t\t\t} else {\r\n\t\t\t\tcharMarketOrders.addAll(owner.getMarketOrders());\r\n\t\t\t}\r\n\t\t\t//Journal\r\n\t\t\tjournals.addAll(owner.getJournal());\r\n\t\t\t//Transactions\r\n\t\t\tif (owner.isCorporation()) {\r\n\t\t\t\ttransactions.addAll(owner.getTransactions());\r\n\t\t\t} else {\r\n\t\t\t\tcharTransactions.addAll(owner.getTransactions());\r\n\t\t\t}\r\n\t\t\t//Industry Jobs > MyBlueprint\r\n\t\t\tindustryJobs.addAll(owner.getIndustryJobs());\r\n\t\t\tfor (MyIndustryJob myIndustryJob : owner.getIndustryJobs()) {\r\n\t\t\t\tblueprints.put(myIndustryJob.getBlueprintID(), new MyBlueprint(myIndustryJob));\r\n\t\t\t\tif (myIndustryJob.isCopying()) {\r\n\t\t\t\t\tblueprints.put(myIndustryJob.getJobID().longValue(), new MyBlueprint(myIndustryJob));\r\n\t\t\t\t\tcopyIndustryJobs.put(myIndustryJob.getBlueprintID(), myIndustryJob);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Contracts & Contract Items\r\n\t\t\tfor (Map.Entry<MyContract, List<MyContractItem>> entry : owner.getContracts().entrySet()) {\r\n\t\t\t\tMyContract contract = entry.getKey();\r\n\t\t\t\tif (entry.getValue().isEmpty()\r\n\t\t\t\t\t\t&& contract.isCourierContract()\r\n\t\t\t\t\t\t&& ( //XXX - Workaround for alien contracts\r\n\t\t\t\t\t\tuniqueOwners.containsKey(contract.getAcceptorID())\r\n\t\t\t\t\t\t|| uniqueOwners.containsKey(contract.getAssigneeID())\r\n\t\t\t\t\t\t|| uniqueOwners.containsKey(contract.getIssuerID())\r\n\t\t\t\t\t\t|| (contract.isForCorp() && uniqueOwners.containsKey(contract.getIssuerCorpID())))) {\r\n\t\t\t\t\t//Add contracts and ContractItems\r\n\t\t\t\t\tcontracts.add(contract);\r\n\t\t\t\t\tcontractItems.add(new MyContractItem(contract));\r\n\t\t\t\t} else if (entry.getValue().isEmpty()) {\r\n\t\t\t\t\tcontracts.add(contract);\r\n\t\t\t\t\tcontractItems.add(new MyContractItem(contract));\r\n\t\t\t\t} else if (!entry.getValue().isEmpty()) {\r\n\t\t\t\t\t//Add contracts and ContractItems\r\n\t\t\t\t\tcontracts.add(contract);\r\n\t\t\t\t\tcontractItems.addAll(entry.getValue());\r\n\t\t\t\t}\r\n\t\t\t\tfor (MyContractItem contractItem : entry.getValue()) {\r\n\t\t\t\t\tMyBlueprint blueprint = contractItem.getBlueprint();\r\n\t\t\t\t\tLong itemID = contractItem.getItemID();\r\n\t\t\t\t\tif (blueprint != null) {\r\n\t\t\t\t\t\tif (itemID != null) {\r\n\t\t\t\t\t\t\tblueprints.put(itemID, blueprint);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tblueprints.put(contractItem.getRecordID(), blueprint);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Blueprints (Newest)\r\n\t\t\tif (!owner.getBlueprints().isEmpty()) {\r\n\t\t\t\tOwnerType ownerType = blueprintsMap.get(owner.getOwnerID());\r\n\t\t\t\tif (ownerType == null || (owner.getBlueprintsNextUpdate() != null && ownerType.getBalanceNextUpdate() != null && owner.getBlueprintsNextUpdate().after(ownerType.getBalanceNextUpdate()))) {\r\n\t\t\t\t\tblueprintsMap.put(owner.getOwnerID(), owner);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Assets (Newest)\r\n\t\t\tif (!owner.getAssets().isEmpty()) {\r\n\t\t\t\tOwnerType ownerType = assetsMap.get(owner.getOwnerID());\r\n\t\t\t\tif (ownerType == null || (owner.getAssetNextUpdate() != null && ownerType.getAssetNextUpdate() != null && owner.getAssetNextUpdate().after(ownerType.getAssetNextUpdate()))) {\r\n\t\t\t\t\tassetsMap.put(owner.getOwnerID(), owner);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Account Balance (Newest)\r\n\t\t\tif (!owner.getAccountBalances().isEmpty()) {\r\n\t\t\t\tOwnerType ownerType = accountBalanceMap.get(owner.getOwnerID());\r\n\t\t\t\tif (ownerType == null || (owner.getBalanceNextUpdate() != null && ownerType.getBalanceNextUpdate() != null && owner.getBalanceNextUpdate().after(ownerType.getBalanceNextUpdate()))) {\r\n\t\t\t\t\taccountBalanceMap.put(owner.getOwnerID(), owner);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Skills\r\n\t\t\tskills.addAll(owner.getSkills());\r\n\t\t\tif (owner.getTotalSkillPoints() != null) {\r\n\t\t\t\tif (owner.getUnallocatedSkillPoints() != null) {\r\n\t\t\t\t\tskillPointsTotalCache.put(owner.getOwnerName(), owner.getTotalSkillPoints() + owner.getUnallocatedSkillPoints());\r\n\t\t\t\t} else {\r\n\t\t\t\t\tskillPointsTotalCache.put(owner.getOwnerName(), owner.getTotalSkillPoints());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Loyalty Points\r\n\t\t\tloyaltyPointses.addAll(owner.getLoyaltyPoints());\r\n\t\t\t//NPC Standing\r\n\t\t\tnpcStandings.addAll(owner.getNpcStanding());\r\n\t\t\t//Mining\r\n\t\t\tminings.addAll(owner.getMining());\r\n\t\t\t//Extractions\r\n\t\t\textractions.addAll(owner.getExtractions());\r\n\t\t}\r\n\r\n\t\t//Fill accountBalance\r\n\t\tfor (OwnerType owner : accountBalanceMap.values()) {\r\n\t\t\taccountBalance.addAll(owner.getAccountBalances());\r\n\t\t}\r\n\r\n\t\t//RawBlueprint > MyBlueprint\r\n\t\tfor (OwnerType owner : blueprintsMap.values()) {\r\n\t\t\tfor (Map.Entry<Long, RawBlueprint> entry : owner.getBlueprints().entrySet()) {\r\n\t\t\t\tblueprints.put(entry.getKey(), new MyBlueprint(entry.getValue())); //Best source - overwrite other sources\r\n\t\t\t\t//Copy Industry Jobs\r\n\t\t\t\tMyIndustryJob industryJob = copyIndustryJobs.get(entry.getKey());\r\n\t\t\t\tif (industryJob != null) {\r\n\t\t\t\t\tblueprints.put(industryJob.getJobID().longValue(), new MyBlueprint(industryJob.getLicensedRuns(), entry.getValue().getMaterialEfficiency(), entry.getValue().getTimeEfficiency()));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Prioritize corp market orders over char\r\n\t\tfor (MyMarketOrder marketOrder : charMarketOrders) {\r\n\t\t\tif (!marketOrder.isCorp()) { //Remove non-corporation orders\r\n\t\t\t\tmarketOrders.remove(marketOrder);\r\n\t\t\t}\r\n\t\t\tmarketOrders.add(marketOrder);\r\n\t\t}\r\n\t\t//Prioritize corp transactions over char\r\n\t\tfor (MyTransaction transaction : charTransactions) {\r\n\t\t\tif (!transaction.isCorporation()) { //Remove non-corporation orders\r\n\t\t\t\ttransactions.remove(transaction);\r\n\t\t\t}\r\n\t\t\ttransactions.add(transaction);\r\n\t\t}\r\n\t\t//Update MarketOrders dynamic values\r\n\t\tMap<Long, Date> marketOrdersAdded = AddedData.getMarketOrders().getAll();\r\n\t\tfor (MyMarketOrder order : marketOrders) {\r\n\t\t\t//Last Transaction\r\n\t\t\tif (order.isBuyOrder()) { //Buy\r\n\t\t\t\tsetLastTransaction(order, order.getTypeID(), order.isBuyOrder(), order.getPrice(), null);\r\n\t\t\t} else { //Sell\r\n\t\t\t\tsetLastTransaction(order, order.getTypeID() , order.isBuyOrder(), order.getPrice(), null);\r\n\t\t\t}\r\n\t\t\torder.setIssuedByName(ApiIdConverter.getOwnerName(order.getIssuedBy()));\r\n\t\t\torder.setBrokersFee(marketOrdersBrokersFee.get(order.getOrderID()));\r\n\t\t\torder.setOutbid(Settings.get().getMarketOrdersOutbid().get(order.getOrderID()));\r\n\t\t\t//Update Owned\r\n\t\t\tInteger issuedBy = order.getIssuedBy();\r\n\t\t\tif (order.isCorporation() && issuedBy != null) {\r\n\t\t\t\torder.setOwned(uniqueOwners.containsKey((long) issuedBy));\r\n\t\t\t}\r\n\t\t\t//Price Data\r\n\t\t\torder.setPriceData(ApiIdConverter.getPriceData(order.getTypeID(), false));\r\n\t\t\t//Changed date\r\n\t\t\tif (order.isUpdateChanged()) { //Update!\r\n\t\t\t\torder.setChanged(AddedData.getMarketOrders().getPut(marketOrdersAdded, order.getOrderID(), addedDate));\r\n\t\t\t} else {\r\n\t\t\t\tDate changed;\r\n\t\t\t\tif (!marketOrdersAdded.containsKey(order.getOrderID())) { //New (use issued as a best guess)\r\n\t\t\t\t\tchanged = order.getIssued();\r\n\t\t\t\t} else { //Updating\r\n\t\t\t\t\tchanged = addedDate;\r\n\t\t\t\t}\r\n\t\t\t\torder.setChanged(AddedData.getMarketOrders().getAdd(marketOrdersAdded, order.getOrderID(), changed));\r\n\t\t\t}\r\n\t\t}\r\n\t\tupdateOutbidOwned(marketOrders);\r\n\t\tAddedData.getMarketOrders().commitQueue();\r\n\t\t//Update IndustryJobs dynamic values\r\n\t\tfor (MyIndustryJob industryJob : industryJobs) {\r\n\t\t\t//Update Owners\r\n\t\t\tindustryJob.setInstaller(ApiIdConverter.getOwnerName(industryJob.getInstallerID()));\r\n\t\t\tindustryJob.setCompletedCharacter(ApiIdConverter.getOwnerName(industryJob.getCompletedCharacterID()));\r\n\t\t\t//Update Owned\r\n\t\t\tif (industryJob.getOwner().isCorporation()) {\r\n\t\t\t\tindustryJob.setOwned(uniqueOwners.containsKey(industryJob.getInstallerID()));\r\n\t\t\t}\r\n\t\t\t//Update BPO/BPC status\r\n\t\t\tindustryJob.setBlueprint(blueprints.get(industryJob.getBlueprintID()));\r\n\t\t\t//Price\r\n\t\t\tupdatePrice(industryJob);\r\n\t\t\t//Queue Sound\r\n\t\t\tif (industryJob.getStatus() == IndustryJobStatus.ACTIVE) {\r\n\t\t\t\tSoundPlayer.playAt(industryJob.getEndDate(), SoundOption.INDUSTRY_JOB_COMPLETED);\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Update Contracts dynamic values\r\n\t\tfor (MyContract contract : contracts) {\r\n\t\t\tOwnerType issuer = uniqueOwners.get(contract.getIssuerID());\r\n\t\t\tOwnerType acceptor = uniqueOwners.get(contract.getAcceptorID());\r\n\t\t\tif (issuer != null) {\r\n\t\t\t\tcontract.setIssuerAfterAssets(issuer.getAssetLastUpdate());\r\n\t\t\t}\r\n\t\t\tif (acceptor != null) {\r\n\t\t\t\tcontract.setAcceptorAfterAssets(acceptor.getAssetLastUpdate());\r\n\t\t\t}\r\n\t\t\t//Update Owned\r\n\t\t\tif (contract.isForCorp()) {\r\n\t\t\t\tcontract.setOwned(uniqueOwners.containsKey(contract.getIssuerID()));\r\n\t\t\t}\r\n\t\t\t//Update Locations\r\n\t\t\tcontract.setStartLocation(ApiIdConverter.getLocation(contract.getStartLocationID()));\r\n\t\t\tcontract.setEndLocation(ApiIdConverter.getLocation(contract.getEndLocationID()));\r\n\t\t\t//Update Owners\r\n\t\t\tcontract.setAcceptor(ApiIdConverter.getOwnerName(contract.getAcceptorID()));\r\n\t\t\tcontract.setAssignee(ApiIdConverter.getOwnerName(contract.getAssigneeID()));\r\n\t\t\tcontract.setIssuerCorp(ApiIdConverter.getOwnerName(contract.getIssuerCorpID()));\r\n\t\t\tcontract.setIssuer(ApiIdConverter.getOwnerName(contract.getIssuerID()));\r\n\t\t}\r\n\r\n\t\t//Update Transaction dynamic values\r\n\t\tMap<Long, Date> transactionsAdded = AddedData.getTransactions().getAll();\r\n\t\tfor (MyTransaction transaction : transactions) {\r\n\t\t\t//Client Name\r\n\t\t\ttransaction.setClientName(ApiIdConverter.getOwnerName(transaction.getClientID()));\r\n\t\t\t//Tax\r\n\t\t\tif (transaction.isBuy()) { //Buy\r\n\t\t\t\ttransaction.setTax(null); //Seller pays the tax\r\n\t\t\t} else { //Sell\r\n\t\t\t\ttransaction.setTax(transactionSellTax.get(transaction.getTransactionID()));\r\n\t\t\t}\r\n\t\t\t//Transaction Profit\r\n\t\t\tif (transaction.isBuy()) { //Buy\r\n\t\t\t\tsetLastTransaction(transaction, transaction.getTypeID(), transaction.isBuy(), transaction.getPrice(), transactionBuyTax.get(transaction.getTypeID()));\r\n\t\t\t} else { //Sell\r\n\t\t\t\tdouble tax = 0;\r\n\t\t\t\tif (transaction.getTax() != null) {\r\n\t\t\t\t\ttax = transaction.getTax() / transaction.getItemCount();\r\n\t\t\t\t}\r\n\t\t\t\tsetLastTransaction(transaction, transaction.getTypeID(), transaction.isBuy(), transaction.getPrice(), tax);\r\n\t\t\t}\r\n\t\t\t//Date added\r\n\t\t\ttransaction.setAdded(AddedData.getTransactions().getAdd(transactionsAdded, transaction.getTransactionID(), addedDate));\r\n\t\t\t//Tags\r\n\t\t\tTags tags = Settings.get().getTags(transaction.getTagID());\r\n\t\t\ttransaction.setTags(tags);\r\n\t\t}\r\n\t\tAddedData.getTransactions().commitQueue();\r\n\t\t//Update Journal dynamic values\r\n\t\tMap<Long, Date> journalsAdded = AddedData.getJournals().getAll();\r\n\t\tfor (MyJournal journal : journals) {\r\n\t\t\t//Names\r\n\t\t\tjournal.setFirstPartyName(ApiIdConverter.getOwnerName(journal.getFirstPartyID()));\r\n\t\t\tjournal.setSecondPartyName(ApiIdConverter.getOwnerName(journal.getSecondPartyID()));\r\n\t\t\t//Date added\r\n\t\t\tjournal.setAdded(AddedData.getJournals().getAdd(journalsAdded, journal.getRefID(), addedDate));\r\n\t\t\t//Context\r\n\t\t\tjournal.setContext(ApiIdConverter.getContext(journal));\r\n\t\t\t//Tags\r\n\t\t\tTags tags = Settings.get().getTags(journal.getTagID());\r\n\t\t\tjournal.setTags(tags);\r\n\t\t}\r\n\t\tAddedData.getJournals().commitQueue();\r\n\t\t//Update Loyalty Points dynamic values\r\n\t\tfor (MyLoyaltyPoints loyaltyPoints : loyaltyPointses) {\r\n\t\t\t//Names\r\n\t\t\tString corporationName = ApiIdConverter.getOwnerName(loyaltyPoints.getCorporationID());\r\n\t\t\tloyaltyPoints.setCorporationName(corporationName);\r\n\t\t\t//Totals\r\n\t\t\tif (corporationName != null && !corporationName.isEmpty()) {\r\n\t\t\t\tTotalLoyaltyPoints total = loyaltyPointsTotals.get(corporationName);\r\n\t\t\t\tif (total == null) {\r\n\t\t\t\t\ttotal = new TotalLoyaltyPoints(loyaltyPoints);\r\n\t\t\t\t\tloyaltyPointsTotals.put(corporationName, total);\r\n\t\t\t\t}\r\n\t\t\t\ttotal.add(loyaltyPoints);\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Add Totals\r\n\t\tloyaltyPointses.addAll(loyaltyPointsTotals.values());\r\n\t\t//Update Npc Standing dynamic values\r\n\t\tfor (MyNpcStanding npcStanding : npcStandings) {\r\n\t\t\t//Names\r\n\t\t\tnpcStanding.updateSkills();\r\n\t\t\tnpcStanding.setCorporationName(ApiIdConverter.getOwnerName(npcStanding.getCorporationID()));\r\n\t\t\tnpcStanding.setFactionName(ApiIdConverter.getOwnerName(npcStanding.getFactionID()));\r\n\t\t}\r\n\t\t//Update Mining dynamic values\r\n\t\tfor (MyMining mining : minings) {\r\n\t\t\tmining.setCharacterName(ApiIdConverter.getOwnerName(mining.getCharacterID()));\r\n\t\t\tif (mining.getCorporationID() != null && mining.getCorporationName() == null) {\r\n\t\t\t\tmining.setCorporationName(ApiIdConverter.getOwnerName(mining.getCorporationID()));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//Update Items dynamic values\r\n\t\tfor (Item item : StaticData.get().getItems().values()) {\r\n\t\t\titem.setPriceReprocessed(ApiIdConverter.getPriceReprocessed(item));\r\n\t\t\titem.setPriceReprocessedMax(ApiIdConverter.getPriceReprocessedMax(item));\r\n\t\t\titem.setPriceManufacturing(ApiIdConverter.getPriceManufacturing(item));\r\n\t\t}\r\n\r\n\t\tMap<Long, Date> assetAdded = AddedData.getAssets().getAll();\r\n\t\tProgram.ensureEDT(new Runnable() {\r\n\t\t\t@Override\r\n\t\t\tpublic void run() {\r\n\t\t\t\t//Add Market Orders to Assets\r\n\t\t\t\taddAssets(DataConverter.assetMarketOrder(marketOrders, Settings.get().isIncludeSellOrders(), Settings.get().isIncludeBuyOrders()), assets, blueprints, assetAdded, addedDate);\r\n\r\n\t\t\t\t//Add Industry Jobs to Assets\r\n\t\t\t\taddAssets(DataConverter.assetIndustryJob(industryJobs, Settings.get().isIncludeManufacturing(), Settings.get().isIncludeCopying()), assets, blueprints, assetAdded, addedDate);\r\n\r\n\t\t\t\t//Add Contract Items to Assets\r\n\t\t\t\taddAssets(DataConverter.assetContracts(contractItems, uniqueOwners, Settings.get().isIncludeSellContracts(), Settings.get().isIncludeBuyContracts()), assets, blueprints, assetAdded, addedDate);\r\n\r\n\t\t\t\t//Add Jump Clones and Plugged in Implant to Assets\r\n\t\t\t\taddAssets(DataConverter.assetCloneImplants(clones, Settings.get().isIncludeJumpClones(), Settings.get().isIncludePluggedInImplants()), assets, blueprints, assetAdded, addedDate);\r\n\r\n\t\t\t\t//Add Assets to Assets\r\n\t\t\t\tfor (OwnerType owner : assetsMap.values()) {\r\n\t\t\t\t\taddAssets(owner.getAssets(), assets, blueprints, assetAdded, addedDate);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tAddedData.getAssets().commitQueue();\r\n\r\n\t\t//Update Locations\r\n\t\tList<EditableLocationType> editableLocationTypes = new ArrayList<>();\r\n\t\teditableLocationTypes.addAll(assets);\r\n\t\teditableLocationTypes.addAll(marketOrders);\r\n\t\teditableLocationTypes.addAll(transactions);\r\n\t\teditableLocationTypes.addAll(industryJobs);\r\n\t\teditableLocationTypes.addAll(minings);\r\n\t\teditableLocationTypes.addAll(extractions);\r\n\t\teditableLocationTypes.addAll(StaticData.get().getAgents().values());\r\n\t\tfor (EditableLocationType editableLocationType : editableLocationTypes) {\r\n\t\t\teditableLocationType.setLocation(ApiIdConverter.getLocation(editableLocationType.getLocationID()));\r\n\t\t}\r\n\t\t//Update Prices\r\n\t\tList<EditablePriceType> editablePriceTypes = new ArrayList<>();\r\n\t\teditablePriceTypes.addAll(marketOrders);\r\n\t\teditablePriceTypes.addAll(contractItems);\r\n\t\teditablePriceTypes.addAll(minings);\r\n\t\tfor (EditablePriceType editablePriceType : editablePriceTypes) {\r\n\t\t\tupdatePrice(editablePriceType);\r\n\t\t}\r\n\r\n\t\t//Owners - Before EventList update - in case owners are referanced in any ListEventListeners\r\n\t\tsynchronized (ownerNames) { //synchronized as ownerNames are modified (here) by updateEventLists\r\n\t\t\townerNames.clear();\r\n\t\t\townerNames.addAll(uniqueOwnerNames);\r\n\t\t}\r\n\t\tCollections.sort(ownerNames, StringComparators.CASE_INSENSITIVE);\r\n\t\tsynchronized (owners) { //synchronized as owners are modified (here) by updateEventLists\r\n\t\t\towners.clear();\r\n\t\t\towners.putAll(uniqueOwners);\r\n\t\t}\r\n\t\t//Update Lists\r\n\t\tassetsList.clear();\r\n\t\tassetsList.addAll(assets);\r\n\t\tmarketOrdersList.clear();\r\n\t\tmarketOrdersList.addAll(marketOrders);\r\n\t\tjournalList.clear();\r\n\t\tjournalList.addAll(journals);\r\n\t\ttransactionsList.clear();\r\n\t\ttransactionsList.addAll(transactions);\r\n\t\tindustryJobsList.clear();\r\n\t\tindustryJobsList.addAll(industryJobs);\r\n\t\tcontractItemList.clear();\r\n\t\tcontractItemList.addAll(contractItems);\r\n\t\tcontractList.clear();\r\n\t\tcontractList.addAll(contracts);\r\n\t\taccountBalanceList.clear();\r\n\t\taccountBalanceList.addAll(accountBalance);\r\n\t\tskillPointsTotal.clear();\r\n\t\tskillPointsTotal.putAll(skillPointsTotalCache);\r\n\t\tclonesList.clear();\r\n\t\tclonesList.putAll(clones);\r\n\t\t//Update EventLists\r\n\t\tProgram.ensureEDT(new Runnable() {\r\n\t\t\t@Override\r\n\t\t\tpublic void run() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tassetsEventList.getReadWriteLock().writeLock().lock();\r\n\t\t\t\t\tassetsEventList.clear();\r\n\t\t\t\t\tassetsEventList.addAll(assets);\r\n\t\t\t\t} finally {\r\n\t\t\t\t\tassetsEventList.getReadWriteLock().writeLock().unlock();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tProgram.ensureEDT(new Runnable() {\r\n\t\t\t@Override\r\n\t\t\tpublic void run() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tmarketOrdersEventList.getReadWriteLock().writeLock().lock();\r\n\t\t\t\t\tmarketOrdersEventList.clear();\r\n\t\t\t\t\tmarketOrdersEventList.addAll(marketOrders);\r\n\t\t\t\t} finally {\r\n\t\t\t\t\tmarketOrdersEventList.getReadWriteLock().writeLock().unlock();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tProgram.ensureEDT(new Runnable() {\r\n\t\t\t@Override\r\n\t\t\tpublic void run() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tjournalEventList.getReadWriteLock().writeLock().lock();\r\n\t\t\t\t\tjournalEventList.clear();\r\n\t\t\t\t\tjournalEventList.addAll(journals);\r\n\t\t\t\t} finally {\r\n\t\t\t\t\tjournalEventList.getReadWriteLock().writeLock().unlock();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tProgram.ensureEDT(new Runnable() {\r\n\t\t\t@Override\r\n\t\t\tpublic void run() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\ttransactionsEventList.getReadWriteLock().writeLock().lock();\r\n\t\t\t\t\ttransactionsEventList.clear();\r\n\t\t\t\t\ttransactionsEventList.addAll(transactions);\r\n\t\t\t\t} finally {\r\n\t\t\t\t\ttransactionsEventList.getReadWriteLock().writeLock().unlock();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tProgram.ensureEDT(new Runnable() {\r\n\t\t\t@Override\r\n\t\t\tpublic void run() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tindustryJobsEventList.getReadWriteLock().writeLock().lock();\r\n\t\t\t\t\tindustryJobsEventList.clear();\r\n\t\t\t\t\tindustryJobsEventList.addAll(industryJobs);\r\n\t\t\t\t} finally {\r\n\t\t\t\t\tindustryJobsEventList.getReadWriteLock().writeLock().unlock();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tProgram.ensureEDT(new Runnable() {\r\n\t\t\t@Override\r\n\t\t\tpublic void run() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tcontractItemEventList.getReadWriteLock().writeLock().lock();\r\n\t\t\t\t\tcontractItemEventList.clear();\r\n\t\t\t\t\tcontractItemEventList.addAll(contractItems);\r\n\t\t\t\t} finally {\r\n\t\t\t\t\tcontractItemEventList.getReadWriteLock().writeLock().unlock();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tProgram.ensureEDT(new Runnable() {\r\n\t\t\t@Override\r\n\t\t\tpublic void run() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tcontractEventList.getReadWriteLock().writeLock().lock();\r\n\t\t\t\t\tcontractEventList.clear();\r\n\t\t\t\t\tcontractEventList.addAll(contracts);\r\n\t\t\t\t} finally {\r\n\t\t\t\t\tcontractEventList.getReadWriteLock().writeLock().unlock();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tProgram.ensureEDT(new Runnable() {\r\n\t\t\t@Override\r\n\t\t\tpublic void run() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\taccountBalanceEventList.getReadWriteLock().writeLock().lock();\r\n\t\t\t\t\taccountBalanceEventList.clear();\r\n\t\t\t\t\taccountBalanceEventList.addAll(accountBalance);\r\n\t\t\t\t} finally {\r\n\t\t\t\t\taccountBalanceEventList.getReadWriteLock().writeLock().unlock();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tProgram.ensureEDT(new Runnable() {\r\n\t\t\t@Override\r\n\t\t\tpublic void run() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tskillsEventList.getReadWriteLock().writeLock().lock();\r\n\t\t\t\t\tskillsEventList.clear();\r\n\t\t\t\t\tskillsEventList.addAll(skills);\r\n\t\t\t\t} finally {\r\n\t\t\t\t\tskillsEventList.getReadWriteLock().writeLock().unlock();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tProgram.ensureEDT(new Runnable() {\r\n\t\t\t@Override\r\n\t\t\tpublic void run() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tloyaltyPointsEventList.getReadWriteLock().writeLock().lock();\r\n\t\t\t\t\tloyaltyPointsEventList.clear();\r\n\t\t\t\t\tloyaltyPointsEventList.addAll(loyaltyPointses);\r\n\t\t\t\t} finally {\r\n\t\t\t\t\tloyaltyPointsEventList.getReadWriteLock().writeLock().unlock();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tProgram.ensureEDT(new Runnable() {\r\n\t\t\t@Override\r\n\t\t\tpublic void run() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tnpcStandingsEventList.getReadWriteLock().writeLock().lock();\r\n\t\t\t\t\tnpcStandingsEventList.clear();\r\n\t\t\t\t\tnpcStandingsEventList.addAll(npcStandings);\r\n\t\t\t\t} finally {\r\n\t\t\t\t\tnpcStandingsEventList.getReadWriteLock().writeLock().unlock();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tProgram.ensureEDT(new Runnable() {\r\n\t\t\t@Override\r\n\t\t\tpublic void run() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tminingEventList.getReadWriteLock().writeLock().lock();\r\n\t\t\t\t\tminingEventList.clear();\r\n\t\t\t\t\tminingEventList.addAll(minings);\r\n\t\t\t\t} finally {\r\n\t\t\t\t\tminingEventList.getReadWriteLock().writeLock().unlock();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tProgram.ensureEDT(new Runnable() {\r\n\t\t\t@Override\r\n\t\t\tpublic void run() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\textractionsEventList.getReadWriteLock().writeLock().lock();\r\n\t\t\t\t\textractionsEventList.clear();\r\n\t\t\t\t\textractionsEventList.addAll(extractions);\r\n\t\t\t\t} finally {\r\n\t\t\t\t\textractionsEventList.getReadWriteLock().writeLock().unlock();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tpublic void updateNames(EventList<MyAsset> eventList, Set<Long> itemIDs) {\r\n\t\tif (itemIDs == null || itemIDs.isEmpty()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tList<MyAsset> found = new ArrayList<>();\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\t\tfor (MyAsset asset : eventList) {\r\n\t\t\t\tif (itemIDs.contains(asset.getItemID())) {\r\n\t\t\t\t\tfound.add(asset); //Save for update\r\n\t\t\t\t\tupdateName(asset); //Update Name\r\n\t\t\t\t\tupdateContainerChildren(found, asset.getAssets()); //Update Container\r\n\t\t\t\t}\r\n\t\t\t\tfor (MyAsset parent : asset.getParents()) { //Offices\r\n\t\t\t\t\tif (parent.getTypeID() != 27 \r\n\t\t\t\t\t\t\t&& !parent.getItemFlag().equals(RawAsset.IMPLANT_FLAG)\r\n\t\t\t\t\t\t\t&& !parent.getItemFlag().equals(RawAsset.JUMP_CLONE_FLAG)\r\n\t\t\t\t\t\t\t&& !parent.getItemFlag().equals(RawAsset.ACTIVE_CLONE_FLAG)\r\n\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (itemIDs.contains(parent.getItemID())) {\r\n\t\t\t\t\t\tupdateName(parent); //Update Name\r\n\t\t\t\t\t\tupdateContainerChildren(found, parent.getAssets()); //Update Container\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t\tupdateList(eventList, found);\r\n\t}\r\n\r\n\tpublic static <T extends ItemType & EditablePriceType> void updatePrices(EventList<T> eventList, Set<Integer> typeIDs) {\r\n\t\tif (typeIDs == null || typeIDs.isEmpty()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tList<T> found = new ArrayList<>();\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\t\tfor (T t : eventList) {\r\n\t\t\t\tif (typeIDs.contains(getTypeID(t.isBPC(), t.getItem().getTypeID()))) {\r\n\t\t\t\t\tfound.add(t); //Save for update\r\n\t\t\t\t\tupdatePrice(t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t\tupdateList(eventList, found);\r\n\t}\r\n\r\n\tprivate void updateOutbidOwned(Collection<MyMarketOrder> marketOrders) {\r\n\t\tMap<Integer, Map<Integer, Set<Long>>> lowestBuy = new HashMap<>();\r\n\t\tMap<Integer, Map<Integer, Set<Long>>> lowestSell = new HashMap<>();\r\n\t\tfor (MyMarketOrder order : marketOrders) { //Find lowest\r\n\t\t\tif (order.isActive() && order.haveOutbid() && !order.isOutbid()) { //Lowest\r\n\t\t\t\tMap<Integer, Map<Integer, Set<Long>>> lowest;\r\n\t\t\t\tif (order.isBuyOrder()) {\r\n\t\t\t\t\tlowest = lowestBuy;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlowest = lowestSell;\r\n\t\t\t\t}\r\n\t\t\t\tMap<Integer, Set<Long>> region = lowest.get(order.getRegionID());\r\n\t\t\t\tif (region == null) {\r\n\t\t\t\t\tregion = new HashMap<>();\r\n\t\t\t\t\tlowest.put(order.getRegionID(), region);\r\n\t\t\t\t}\r\n\t\t\t\tSet<Long> orderIDs = region.get(order.getTypeID());\r\n\t\t\t\tif (orderIDs == null) {\r\n\t\t\t\t\torderIDs = new HashSet<>();\r\n\t\t\t\t\tregion.put(order.getTypeID(), orderIDs);\r\n\t\t\t\t}\r\n\t\t\t\torderIDs.add(order.getOrderID());\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (MyMarketOrder order : marketOrders) { //Set owned\r\n\t\t\tif (!order.isActive()) {\r\n\t\t\t\torder.setOutbidOwned(false);\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tMap<Integer, Map<Integer, Set<Long>>> lowest;\r\n\t\t\tif (order.isBuyOrder()) {\r\n\t\t\t\tlowest = lowestBuy;\r\n\t\t\t} else {\r\n\t\t\t\tlowest = lowestSell;\r\n\t\t\t}\r\n\t\t\tMap<Integer, Set<Long>> region = lowest.get(order.getRegionID());\r\n\t\t\tif (region == null) {\r\n\t\t\t\torder.setOutbidOwned(false);\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tSet<Long> orderIDs = region.get(order.getTypeID());\r\n\t\t\tif (orderIDs == null) {\r\n\t\t\t\torder.setOutbidOwned(false);\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\torder.setOutbidOwned(!orderIDs.contains(order.getOrderID())); //not one of the lowest orders\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void updateIndustryJobPrices(EventList<MyIndustryJob> eventList, Set<Integer> typeIDs) {\r\n\t\tif (typeIDs == null || typeIDs.isEmpty()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tList<MyIndustryJob> found = new ArrayList<>();\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\t\tfor (MyIndustryJob industryJob : eventList) {\r\n\t\t\t\tInteger productTypeID = industryJob.getProductTypeID();\r\n\t\t\t\tif (typeIDs.contains(getTypeID(industryJob.isBPC(), industryJob.getItem().getTypeID()))\r\n\t\t\t\t\t\t|| (productTypeID != null && typeIDs.contains(getTypeID(industryJob.isCopying(), productTypeID)))) {\r\n\t\t\t\t\tfound.add(industryJob); //Save for update\r\n\t\t\t\t\tupdatePrice(industryJob); //Update data\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t\tupdateList(eventList, found);\r\n\t}\r\n\r\n\tprivate static int getTypeID(boolean bpc, int typeID) {\r\n\t\tif (bpc) {\r\n\t\t\treturn -typeID;\r\n\t\t} else {\r\n\t\t\treturn typeID;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static <T extends EditableLocationType> void updateEditableLocation(EventList<T> eventList, Set<Long> locationIDs) {\r\n\t\tif (locationIDs == null || locationIDs.isEmpty()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tList<T> found = new ArrayList<>();\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\t\tfor (T t : eventList) {\r\n\t\t\t\tif (locationIDs.contains(t.getLocationID())) {\r\n\t\t\t\t\tfound.add(t); //Save for update\r\n\t\t\t\t\tt.setLocation(ApiIdConverter.getLocation(t.getLocationID())); //Update data\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t\tupdateList(eventList, found);\r\n\t}\r\n\r\n\tpublic static <T extends EditableLocationType> void updateLocationList(Collection<T> collection, Set<Long> locationIDs) {\r\n\t\tif (locationIDs == null || locationIDs.isEmpty()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tfor (T t : collection) {\r\n\t\t\tif (locationIDs.contains(t.getLocationID())) {\r\n\t\t\t\tt.setLocation(ApiIdConverter.getLocation(t.getLocationID())); //Update data\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate <T extends LocationsType> void updateLocations(EventList<T> eventList, Set<Long> locationIDs) {\r\n\t\tif (locationIDs == null || locationIDs.isEmpty()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tList<T> found = new ArrayList<>();\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\t\tfor (T t : eventList) {\r\n\t\t\t\tfor (MyLocation location : t.getLocations()) {\r\n\t\t\t\t\tif (locationIDs.contains(location.getLocationID())) {\r\n\t\t\t\t\t\tfound.add(t); //Save for update\r\n\t\t\t\t\t\tbreak; //Item already added\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t\tupdateList(eventList, found);\r\n\t}\r\n\r\n\tprivate static <T> void updateList(EventList<T> eventList, List<T> found) {\r\n\t\tif (found.isEmpty()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (found.size() > 2) {\r\n\t\t\tProgram.ensureEDT(new Runnable() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void run() {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\teventList.getReadWriteLock().writeLock().lock();\r\n\t\t\t\t\t\tList<T> cache = new ArrayList<>(eventList);\r\n\t\t\t\t\t\teventList.clear();\r\n\t\t\t\t\t\teventList.addAll(cache);\r\n\t\t\t\t\t} finally {\r\n\t\t\t\t\t\teventList.getReadWriteLock().writeLock().unlock();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tProgram.ensureEDT(new Runnable() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void run() {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\teventList.getReadWriteLock().writeLock().lock();\r\n\t\t\t\t\t\teventList.removeAll(found);\r\n\t\t\t\t\t\teventList.addAll(found);\r\n\t\t\t\t\t} finally {\r\n\t\t\t\t\t\teventList.getReadWriteLock().writeLock().unlock();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void calcTransactionsPriceData() {\r\n\t\t//Create Transaction Price Data\r\n\t\ttransactionBuyTax = new HashMap<>();\r\n\t\ttransactionSellPriceData = new HashMap<>();\r\n\t\ttransactionBuyPriceData = new HashMap<>();\r\n\t\ttransactionSellTax = new HashMap<>();\r\n\t\tmarketOrdersBrokersFee = new HashMap<>();\r\n\t\tDate lastTaxDate = null;\r\n\t\tDate maxAge = new Date(System.currentTimeMillis() - ((long)Settings.get().getMaximumPurchaseAge() * 24L * 60L * 60L * 1000L));\r\n\t\tfor (OwnerType owner : profileManager.getOwnerTypes()) {\r\n\t\t\t//Journal\r\n\t\t\tMap<Date, List<Double>> taxes = new HashMap<>();\r\n\t\t\tMap<Date, List<Double>> fees = new HashMap<>();\r\n\t\t\tfor (MyJournal journal : owner.getJournal()) {\r\n\t\t\t\tif (journal.getRefType() == RawJournalRefType.TRANSACTION_TAX) {\r\n\t\t\t\t\tList<Double> list = taxes.get(journal.getDate());\r\n\t\t\t\t\tif (list == null) {\r\n\t\t\t\t\t\tlist = new ArrayList<>();\r\n\t\t\t\t\t\ttaxes.put(journal.getDate(), list);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlist.add(journal.getAmount());\r\n\t\t\t\t}\r\n\t\t\t\tif (journal.getRefType() == RawJournalRefType.BROKERS_FEE) {\r\n\t\t\t\t\tList<Double> list = fees.get(journal.getDate());\r\n\t\t\t\t\tif (list == null) {\r\n\t\t\t\t\t\tlist = new ArrayList<>();\r\n\t\t\t\t\t\tfees.put(journal.getDate(), list);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlist.add(journal.getAmount());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Transactions\r\n\t\t\tMap<Date, List<MyTransaction>> transactions = new HashMap<>();\r\n\t\t\tfor (MyTransaction transaction : owner.getTransactions()) {\r\n\t\t\t\tif (transaction.isSell()) {\r\n\t\t\t\t\tList<MyTransaction> list = transactions.get(transaction.getDate());\r\n\t\t\t\t\tif (list == null) {\r\n\t\t\t\t\t\tlist = new ArrayList<>();\r\n\t\t\t\t\t\ttransactions.put(transaction.getDate(), list);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlist.add(transaction);\r\n\t\t\t\t}\r\n\t\t\t\tif (transaction.getDate().before(maxAge) && Settings.get().getMaximumPurchaseAge() != 0) {\r\n\t\t\t\t\tcontinue; //Date out of range and not unlimited\r\n\t\t\t\t}\r\n\t\t\t\tif (transaction.isSell()) { //Sell\r\n\t\t\t\t\tcreateTransactionsPriceData(transactionSellPriceData, transaction);\r\n\t\t\t\t} else { //Buy\r\n\t\t\t\t\tcreateTransactionsPriceData(transactionBuyPriceData, transaction);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Tax\r\n\t\t\tfor (Map.Entry<Date, List<MyTransaction>> entry : transactions.entrySet()) {\r\n\t\t\t\tList<Double> list = taxes.get(entry.getKey());\r\n\t\t\t\tif (list == null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tList<Match<MyTransaction>> matchs = new ArrayList<>();\r\n\t\t\t\tfor (MyTransaction transaction : entry.getValue()) {\r\n\t\t\t\t\tdouble expected = transaction.getQuantity() * transaction.getPrice() / 100.0 * 5.0; //5%\r\n\t\t\t\t\tfor (Double tax : list) {\r\n\t\t\t\t\t\tdouble diff = Math.abs(tax + expected); //Tax is negative and expected is possitive: Add them together for diff\r\n\t\t\t\t\t\tmatchs.add(new Match<>(transaction, tax, diff));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tCollections.sort(matchs);\r\n\t\t\t\tSet<MyTransaction> found = new HashSet<>();\r\n\t\t\t\tfor (Match<MyTransaction> match : matchs) {\r\n\t\t\t\t\tMyTransaction transaction = match.get();\r\n\t\t\t\t\tif (!found.contains(transaction) && found.size() <= list.size()) {\r\n\t\t\t\t\t\tfound.add(transaction);\r\n\t\t\t\t\t\tdouble tax = match.getAmount();\r\n\t\t\t\t\t\ttransactionSellTax.put(transaction.getTransactionID(), tax);\r\n\t\t\t\t\t\tif ((lastTaxDate == null || lastTaxDate.before(transaction.getDate()))) {\r\n\t\t\t\t\t\t\ttransactionBuyTax.put(transaction.getTypeID(), tax / transaction.getItemCount());\r\n\t\t\t\t\t\t\tlastTaxDate = transaction.getDate();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Market Orders\r\n\t\t\tMap<Date, List<MyMarketOrder>> marketOrders = new HashMap<>();\r\n\t\t\tfor (MyMarketOrder marketOrder : owner.getMarketOrders()) {\r\n\t\t\t\tfor (Change change : marketOrder.getChanges()) {\r\n\t\t\t\t\tDate date = change.getDate();\r\n\t\t\t\t\tList<MyMarketOrder> list = marketOrders.get(date);\r\n\t\t\t\t\tif (list == null) {\r\n\t\t\t\t\t\tlist = new ArrayList<>();\r\n\t\t\t\t\t\tmarketOrders.put(date, list);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlist.add(marketOrder);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Fees\r\n\t\t\tfor (Map.Entry<Date, List<MyMarketOrder>> entry : marketOrders.entrySet()) {\r\n\t\t\t\tList<Double> list = fees.get(entry.getKey());\r\n\t\t\t\tif (list == null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tList<Match<MyMarketOrder>> matchs = new ArrayList<>();\r\n\t\t\t\tfor (MyMarketOrder marketOrder : entry.getValue()) {\r\n\t\t\t\t\tdouble expected = Math.max(marketOrder.getVolumeTotal() * marketOrder.getPrice() / 100.0 * 5.0, 100); //5% or 100isk\r\n\t\t\t\t\tfor (Double fee : list) {\r\n\t\t\t\t\t\tdouble diff = Math.abs(fee + expected); //Fee is negative and expected is possitive: Add them together for diff\r\n\t\t\t\t\t\tmatchs.add(new Match<>(marketOrder, fee, diff));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tCollections.sort(matchs);\r\n\t\t\t\tSet<MyMarketOrder> found = new HashSet<>();\r\n\t\t\t\tfor (Match<MyMarketOrder> match : matchs) {\r\n\t\t\t\t\tMyMarketOrder marketOrder = match.get();\r\n\t\t\t\t\tif (!found.contains(marketOrder) && found.size() <= list.size()) {\r\n\t\t\t\t\t\tfound.add(marketOrder);\r\n\t\t\t\t\t\tDouble fee = marketOrdersBrokersFee.get(marketOrder.getOrderID());\r\n\t\t\t\t\t\tif (fee == null) {\r\n\t\t\t\t\t\t\tfee = 0.0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tfee = fee + match.getAmount();\r\n\t\t\t\t\t\tmarketOrdersBrokersFee.put(marketOrder.getOrderID(), fee);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void createTransactionsPriceData(Map<Integer, MarketPriceData> transactionPriceData, MyTransaction transaction) {\r\n\t\tint typeID = transaction.getTypeID();\r\n\t\tMarketPriceData data = transactionPriceData.get(typeID);\r\n\t\tif (data == null) {\r\n\t\t\tdata = new MarketPriceData();\r\n\t\t\ttransactionPriceData.put(typeID, data);\r\n\t\t}\r\n\t\tdata.update(transaction.getPrice(), transaction.getItemCount(), transaction.getDate());\r\n\t}\r\n\r\n\tpublic Double getTransactionAveragePrice(int typeID) {\r\n\t\tMarketPriceData buy = transactionBuyPriceData.get(typeID);\r\n\t\tMarketPriceData sell = transactionSellPriceData.get(typeID);\r\n\t\tif (buy != null && sell != null) {\r\n\t\t\treturn MarketPriceData.getAverage(buy, sell);\r\n\t\t} else if (buy != null) {\r\n\t\t\treturn buy.getAverage();\r\n\t\t} else if (sell != null) {\r\n\t\t\treturn sell.getAverage();\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void setLastTransaction(LastTransactionType item, int typeID, boolean buy, double price, Double tax) {\r\n\t\tif (tax == null) {\r\n\t\t\ttax = 0.0;\r\n\t\t}\r\n\t\tMarketPriceData marketPriceData;\r\n\t\tif (buy) { //Buy\r\n\t\t\tmarketPriceData = transactionSellPriceData.get(typeID);\r\n\t\t} else { //Sell\r\n\t\t\tmarketPriceData = transactionBuyPriceData.get(typeID);\r\n\t\t}\r\n\t\tif (marketPriceData != null) {\r\n\t\t\tdouble transactionPrice;\r\n\t\t\tswitch (Settings.get().getTransactionProfitPrice()) {\r\n\t\t\t\tcase AVERAGE:\r\n\t\t\t\t\ttransactionPrice = marketPriceData.getAverage();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase LASTEST:\r\n\t\t\t\t\ttransactionPrice = marketPriceData.getLatest();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase MAXIMUM:\r\n\t\t\t\t\ttransactionPrice = marketPriceData.getMaximum();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase MINIMUM:\r\n\t\t\t\t\ttransactionPrice = marketPriceData.getMinimum();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\ttransactionPrice = marketPriceData.getLatest();\r\n\t\t\t}\r\n\t\t\tif (buy) { //Buy\r\n\t\t\t\ttransactionPrice = transactionPrice + tax;\r\n\t\t\t\titem.setTransactionPrice(transactionPrice);\r\n\t\t\t\titem.setTransactionProfit(transactionPrice - price);\r\n\t\t\t\titem.setTransactionProfitPercent(Percent.create(transactionPrice / price));\r\n\t\t\t} else { //Sell\r\n\t\t\t\tprice = price + tax;\r\n\t\t\t\titem.setTransactionPrice(transactionPrice);\r\n\t\t\t\titem.setTransactionProfit(price - (transactionPrice));\r\n\t\t\t\titem.setTransactionProfitPercent(Percent.create(price / (transactionPrice)));\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\titem.setTransactionPrice(0);\r\n\t\t\titem.setTransactionProfit(0);\r\n\t\t\titem.setTransactionProfitPercent(Percent.create(0));\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void addAssets(final List<MyAsset> assets, List<MyAsset> addTo, Map<Long, MyBlueprint> blueprints, Map<Long, Date> assetAdded, Date assetAddedDate) {\r\n\t\tfor (MyAsset asset : assets) {\r\n\t\t\t//XXX Ignore 9e18 locations: https://github.com/ccpgames/esi-issues/issues/684\r\n\t\t\tif (asset.getLocationID() > 9000000000000000000L) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\t//Handle Asset Structures\r\n\t\t\tif (asset.getItem().getCategory().equals(Item.CATEGORY_STRUCTURE)) {\r\n\t\t\t\tfor (MyAsset childAsset: asset.getAssets()) {\r\n\t\t\t\t\tupdateStructureAssets(childAsset, asset);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Blueprint\r\n\t\t\tasset.setBlueprint(blueprints.get(asset.getItemID()));\r\n\t\t\t//Tags\r\n\t\t\tTags tags = Settings.get().getTags(asset.getTagID());\r\n\t\t\tasset.setTags(tags);\r\n\t\t\t//Date added\r\n\t\t\tasset.setAdded(AddedData.getAssets().getAdd(assetAdded, asset.getItemID(), assetAddedDate));\r\n\t\t\t//Price\r\n\t\t\tupdatePrice(asset);\r\n\t\t\t//Market price\r\n\t\t\tasset.setMarketPriceData(transactionBuyPriceData.get(asset.getItem().getTypeID()));\r\n\t\t\t//User Item Names\r\n\t\t\tupdateName(asset);\r\n\t\t\tif (asset.getItemFlag().equals(RawAsset.IMPLANT_FLAG)\r\n\t\t\t\t\t|| asset.getItemFlag().equals(RawAsset.JUMP_CLONE_FLAG)\r\n\t\t\t\t\t|| asset.getItemFlag().equals(RawAsset.ACTIVE_CLONE_FLAG)\r\n\t\t\t\t\t) {\r\n\t\t\t\tfor (MyAsset parent : asset.getParents()) {\r\n\t\t\t\t\tupdateName(parent);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Container\r\n\t\t\tupdateContainer(asset);\r\n\t\t\t//Price data\r\n\t\t\tasset.setPriceData(ApiIdConverter.getPriceData(asset.getItem().getTypeID(), asset.isBPC()));\r\n\t\t\t//Type Count\r\n\t\t\tint typeID;\r\n\t\t\tif (asset.isBPC()) {\r\n\t\t\t\ttypeID = -asset.getItem().getTypeID();\r\n\t\t\t} else {\r\n\t\t\t\ttypeID = asset.getItem().getTypeID();\r\n\t\t\t}\r\n\t\t\tList<MyAsset> dup = uniqueAssetsDuplicates.get(typeID);\r\n\t\t\tif (dup == null) {\r\n\t\t\t\tdup = new ArrayList<>();\r\n\t\t\t\tuniqueAssetsDuplicates.put(typeID, dup);\r\n\t\t\t}\r\n\t\t\tlong newCount = asset.getCount();\r\n\t\t\tif (!dup.isEmpty()) {\r\n\t\t\t\tnewCount = newCount + dup.get(0).getTypeCount();\r\n\t\t\t}\r\n\t\t\tdup.add(asset);\r\n\t\t\tfor (MyAsset assetLoop : dup) {\r\n\t\t\t\tassetLoop.setTypeCount(newCount);\r\n\t\t\t}\r\n\t\t\t//Add asset\r\n\t\t\tif (asset.getTypeID() != 27) { //Ignore offices\r\n\t\t\t\taddTo.add(asset);\r\n\t\t\t} else { //Office\r\n\t\t\t\tasset.setLocation(ApiIdConverter.getLocation(asset.getLocationID()));\r\n\t\t\t}\r\n\t\t\t//Add sub-assets\r\n\t\t\taddAssets(asset.getAssets(), addTo, blueprints, assetAdded, assetAddedDate);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static void updatePrice(EditablePriceType editablePriceType) {\r\n\t\teditablePriceType.setDynamicPrice(ApiIdConverter.getPrice(editablePriceType.getItem().getTypeID(), editablePriceType.isBPC()));\r\n\t}\r\n\r\n\tprivate static void updatePrice(MyIndustryJob industryJob) {\r\n\t\tindustryJob.setDynamicPrice(ApiIdConverter.getPrice(industryJob.getItem().getTypeID(), industryJob.isBPC()));\r\n\t\tindustryJob.setOutputPrice(ApiIdConverter.getPrice(industryJob.getProductTypeID(), industryJob.isCopying()));\r\n\t}\r\n\r\n\tprivate static void updatePrice(MyAsset asset) {\r\n\t\t//User price\r\n\t\tif (asset.getItem().isBlueprint() && !asset.isBPO()) { //Blueprint Copy\r\n\t\t\tasset.setUserPrice(Settings.get().getUserPrices().get(-asset.getItem().getTypeID()));\r\n\t\t} else { //All other\r\n\t\t\tasset.setUserPrice(Settings.get().getUserPrices().get(asset.getItem().getTypeID()));\r\n\t\t}\r\n\t\t//Dynamic Price\r\n\t\tasset.setDynamicPrice(ApiIdConverter.getPrice(asset.getItem().getTypeID(), asset.isBPC()));\r\n\t}\r\n\r\n\tprivate void updateName(MyAsset asset) {\r\n\t\tasset.setName(Settings.get().getUserItemNames().get(asset.getItemID()), Settings.get().getEveNames().get(asset.getItemID()));\r\n\t}\r\n\r\n\tprivate void updateContainerChildren(List<MyAsset> found, List<MyAsset> assets) {\r\n\t\tfor (MyAsset asset : assets) {\r\n\t\t\tfound.add(asset);\r\n\t\t\tupdateContainer(asset);\r\n\t\t\tupdateContainerChildren(found, asset.getAssets());\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void updateContainer(MyAsset asset) {\r\n\t\tasset.updateContainer();\r\n\t}\r\n\r\n\tprivate void updateStructureAssets(final MyAsset asset, final MyAsset structure) {\r\n\t\tfinal Long locationID;\r\n\t\tif (asset.isCorporation() && !asset.getParents().isEmpty() && asset.getParents().get(asset.getParents().size() - 1).equals(structure) && asset.getTypeID() != 27) {\r\n\t\t\tlocationID = structure.getLocationID();\r\n\t\t} else {\r\n\t\t\tasset.getParents().remove(structure);\r\n\t\t\tlocationID = structure.getItemID();\r\n\t\t}\r\n\t\tasset.setLocationID(locationID);\r\n\t\tasset.setLocation(ApiIdConverter.getLocation(locationID));\r\n\t\tfor (MyAsset subAsset : asset.getAssets()) { //Update child assets\r\n\t\t\tupdateStructureAssets(subAsset, structure);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class Match<T> implements Comparable<Match<T>>{\r\n\t\tprivate final T t;\r\n\t\tprivate final double amount;\r\n\t\tprivate final double diff;\r\n\r\n\t\tpublic Match(T t, double amount, double diff) {\r\n\t\t\tthis.t = t;\r\n\t\t\tthis.amount = amount;\r\n\t\t\tthis.diff = diff;\r\n\t\t}\r\n\r\n\t\tpublic T get() {\r\n\t\t\treturn t;\r\n\t\t}\r\n\r\n\t\tpublic double getAmount() {\r\n\t\t\treturn amount;\r\n\t\t}\r\n\r\n\t\tpublic Double getDiff() {\r\n\t\t\treturn diff;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int hashCode() {\r\n\t\t\tint hash = 3;\r\n\t\t\thash = 41 * hash + Objects.hashCode(this.t);\r\n\t\t\thash = 41 * hash + (int) (Double.doubleToLongBits(this.amount) ^ (Double.doubleToLongBits(this.amount) >>> 32));\r\n\t\t\thash = 41 * hash + (int) (Double.doubleToLongBits(this.diff) ^ (Double.doubleToLongBits(this.diff) >>> 32));\r\n\t\t\treturn hash;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean equals(Object obj) {\r\n\t\t\tif (this == obj) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif (obj == null) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (getClass() != obj.getClass()) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tfinal Match<?> other = (Match<?>) obj;\r\n\t\t\tif (Double.doubleToLongBits(this.amount) != Double.doubleToLongBits(other.amount)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (Double.doubleToLongBits(this.diff) != Double.doubleToLongBits(other.diff)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (!Objects.equals(this.t, other.t)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int compareTo(Match<T> match) {\r\n\t\t\treturn this.getDiff().compareTo(match.getDiff());\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/profile/ProfileManager.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.profile;\r\n\r\nimport java.awt.Component;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport javax.swing.JOptionPane;\r\nimport net.nikr.eve.jeveasset.SplashUpdater;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\nimport net.nikr.eve.jeveasset.io.local.ProfileFinder;\r\nimport net.nikr.eve.jeveasset.io.local.profile.ProfileDatabase;\r\nimport net.nikr.eve.jeveasset.io.local.profile.ProfileDatabase.Table;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class ProfileManager {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(ProfileManager.class);\r\n\r\n\tprivate boolean profileLoadError = false;\r\n\tprivate Profile activeProfile;\r\n\tprivate List<Profile> profiles = new ArrayList<>();\r\n\r\n\tpublic ProfileManager() {\r\n\t\tsetActiveProfile(new Profile());\r\n\t\tprofiles.add(activeProfile);\r\n\t}\r\n\r\n\tpublic void searchProfile() {\r\n\t\t//Find profiles\r\n\t\tboolean found = ProfileFinder.load(this);\r\n\t\tif (!found) { //No profiles found, using default\r\n\t\t\tsaveProfile(); //Saving new default profile\r\n\t\t}\r\n\t}\r\n\r\n\tpublic List<Profile> getProfiles() {\r\n\t\treturn profiles;\r\n\t}\r\n\r\n\tpublic boolean containsProfileName(String name) {\r\n\t\tfor (Profile profile : profiles) {\r\n\t\t\tif (profile.getName().equalsIgnoreCase(name)) { //Profile names are case insensitive\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tpublic void setProfiles(final List<Profile> profiles) {\r\n\t\tthis.profiles = profiles;\r\n\t}\r\n\r\n\tpublic final void setActiveProfile(final Profile activeProfile) {\r\n\t\tthis.activeProfile = activeProfile;\r\n\t\tProfileDatabase.setUpdateConnectionUrl(activeProfile);\r\n\t}\r\n\r\n\tpublic StockpileIDs getStockpileIDs() {\r\n\t\treturn activeProfile.getStockpileIDs();\r\n\t}\r\n\r\n\tpublic Profile getActiveProfile() {\r\n\t\treturn activeProfile;\r\n\t}\r\n\r\n\tpublic void saveProfile() {\r\n\t\tactiveProfile.save();\r\n\t}\r\n\r\n\tpublic void saveProfileTable(Table table) {\r\n\t\tactiveProfile.saveTable(table);\r\n\t}\r\n\r\n\tpublic List<OwnerType> getOwnerTypes() {\r\n\t\tList<OwnerType> owners = new ArrayList<>();\r\n\t\towners.addAll(getEsiOwners());\r\n\t\treturn owners;\r\n\t}\r\n\r\n\tpublic List<EsiOwner> getEsiOwners() {\r\n\t\treturn activeProfile.getEsiOwners();\r\n\t}\r\n\r\n\tpublic void clear() {\r\n\t\tactiveProfile.clear();\r\n\t}\r\n\r\n\tpublic void loadActiveProfile() {\r\n\t//Load Profile\r\n\t\tLOG.info(\"Loading profile: {}\", activeProfile.getName());\r\n\t\tprofileLoadError = !activeProfile.load();\r\n\t\tSplashUpdater.setProgress(40);\r\n\t}\r\n\r\n\tpublic void showProfileLoadErrorWarning(Component parentComponent) {\r\n\t\tif (profileLoadError) {\r\n\t\t\tJOptionPane.showMessageDialog(parentComponent, GuiShared.get().errorLoadingProfileMsg(), GuiShared.get().errorLoadingProfileTitle(), JOptionPane.ERROR_MESSAGE);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/profile/StockpileIDs.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.data.profile;\n\nimport java.sql.Connection;\nimport java.sql.DriverManager;\nimport java.sql.PreparedStatement;\nimport java.sql.ResultSet;\nimport java.sql.SQLException;\nimport java.sql.Statement;\nimport java.util.Collections;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Set;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile;\nimport net.nikr.eve.jeveasset.io.local.profile.ProfileTable.Rows;\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n\npublic class StockpileIDs {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(StockpileIDs.class);\n\n\tprivate final Set<Long> hidden = new HashSet<>();\n\tprivate String tableName;\n\tprivate boolean newDatabase = false;\n\n\tpublic StockpileIDs(String tableName) {\n\t\tthis(tableName, false);\n\t}\n\n\tprotected StockpileIDs(String tableName, boolean createTable) {\n\t\tthis.tableName = getSafeTableName(tableName);\n\t\tif (createTable && !tableExist()) {\n\t\t\tcreateTable();\n\t\t}\n\t}\n\n\tprivate static String getConnectionUrl() {\n\t\treturn \"jdbc:sqlite:\" + FileUtil.getPathStockpileIDsDatabase();\n\t}\n\n\tprotected void setNewDatabase(boolean newDatabase) {\n\t\tthis.newDatabase = newDatabase;\n\t}\n\n\tpublic void load() {\n\t\thidden.clear(); //Clear befor loading\n\t\tif (!tableExist()) { //New database: Empty\n\t\t\tnewDatabase = true;\n\t\t\tcreateTable();\n\t\t} else { //Get data from database\n\t\t\tnewDatabase = false;\n\t\t\tget();\n\t\t}\n\t}\n\n\tpublic Set<Long> getHidden() {\n\t\treturn hidden;\n\t}\n\n\tpublic boolean isHidden(long stockpileID) {\n\t\treturn hidden.contains(stockpileID);\n\t}\n\n\tpublic boolean isShown(long stockpileID) {\n\t\treturn !isHidden(stockpileID);\n\t}\n\n\tpublic void setHidden(Set<Long> data) {\n\t\tif (data == null) {\n\t\t\treturn;\n\t\t}\n\t\t//Hide\n\t\tSet<Long> hide = new HashSet<>(data); //To be hidden\n\t\thide.removeAll(hidden); //Remove already hidden\n\t\tinsert(hide); //Hide\n\n\t\t//Show\n\t\tSet<Long> show = new HashSet<>(hidden); //Currently hidden\n\t\tshow.removeAll(data); //Remove still hidden\n\t\tdelete(show); //Show\n\n\t\thidden.clear();\n\t\thidden.addAll(data);\n\t}\n\n\tpublic void setShown(Set<Long> data) {\n\t\tsetShown(data, Settings.get().getStockpiles());\n\t}\n\n\tprotected void setShown(Set<Long> data, List<Stockpile> stockpiles) {\n\t\tif (data == null || data.isEmpty() || !newDatabase) {\n\t\t\treturn;\n\t\t}\n\t\tSet<Long> hide = new HashSet<>(); //To be hidden\n\t\tfor (Stockpile stockpile : stockpiles) {\n\t\t\tlong id = stockpile.getStockpileID();\n\t\t\tif (!data.contains(id)) { //Not shown\n\t\t\t\thide.add(id); //Hide\n\t\t\t}\n\t\t}\n\t\tsetHidden(hide);\n\t}\n\n\tpublic void show(long stockpileID) {\n\t\tboolean removed = hidden.remove(stockpileID);\n\t\tif (removed) { //Show only if not already shown\n\t\t\tdelete(Collections.singleton(stockpileID));\n\t\t}\n\t}\n\n\tpublic void hide(long stockpileID) {\n\t\tboolean added = hidden.add(stockpileID);\n\t\tif (added) { //Hide only if not already hidden\n\t\t\tinsert(Collections.singleton(stockpileID));\n\t\t}\n\t}\n\n\tprivate void insert(Set<Long> data) {\n\t\tif (data == null || data.isEmpty()) {\n\t\t\treturn;\n\t\t}\n\t\tString sql = \"INSERT INTO \" + tableName + \"(id) VALUES(?)\";\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionUrl());\n\t\t\t\tPreparedStatement statement = connection.prepareStatement(sql)) {\n\t\t\tRows rows = new Rows(statement, data.size());\n\t\t\tconnection.setAutoCommit(false);\n\t\t\tfor (Long id : data) {\n\t\t\t\tstatement.setLong(1, id);\n\t\t\t\trows.addRow();\n\t\t\t}\n\t\t\tconnection.commit();\n\t\t\tconnection.setAutoCommit(true);\n\t\t} catch (SQLException ex) {\n\t\t\tLOG.error(ex.getMessage(), ex);\n\t\t}\n\t}\n\n\tprivate void delete(Set<Long> data) {\n\t\tif (data == null || data.isEmpty()) {\n\t\t\treturn;\n\t\t}\n\t\tString sql = \"DELETE FROM \" + tableName + \" WHERE id = ?\";\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionUrl());\n\t\t\t\tPreparedStatement statement = connection.prepareStatement(sql)) {\n\t\t\tRows rows = new Rows(statement, data.size());\n\t\t\tconnection.setAutoCommit(false);\n\t\t\tfor (Long id : data) {\n\t\t\t\tstatement.setLong(1, id);\n\t\t\t\trows.addRow();\n\t\t\t}\n\t\t\tconnection.commit();\n\t\t\tconnection.setAutoCommit(true);\n\t\t} catch (SQLException ex) {\n\t\t\tLOG.error(ex.getMessage(), ex);\n\t\t}\n\t}\n\n\tprivate void get() {\n\t\tString sql = \"SELECT * FROM \" + tableName;\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionUrl());\n\t\t\t\tPreparedStatement statement = connection.prepareStatement(sql);\n\t\t\t\tResultSet rs = statement.executeQuery();) {\n\t\t\twhile (rs.next()) {\n\t\t\t\thidden.add(rs.getLong(\"id\"));\n\t\t\t}\n\t\t} catch (SQLException ex) {\n\t\t\tLOG.error(ex.getMessage(), ex);\n\t\t}\n\t}\n\n\tprivate String getSafeTableName(String tableName) {\n\t\t//Start with underscore in case the name starts with a number\n\t\t//Replace space with underscore\n\t\treturn \"_\" + tableName.replace(\" \", \"_\");\n\t}\n\n\tprivate void createTable() {\n\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + tableName + \" (\\n\"\n\t\t\t\t+ \"\tid integer PRIMARY KEY\\n\"\n\t\t\t\t+ \");\";\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionUrl());\n\t\t\t\tStatement statement = connection.createStatement()) {\n\t\t\tstatement.execute(sql);\n\t\t} catch (SQLException ex) {\n\t\t\tLOG.error(ex.getMessage(), ex);\n\t\t}\n\t}\n\n\tpublic boolean renameTable(String tableName) {\n\t\ttableName = getSafeTableName(tableName);\n\t\tif (this.tableName.equals(tableName)) {\n\t\t\treturn true; //OK (no change needed)\n\t\t}\n\t\tif (tableExist(tableName)) {\n\t\t\treturn false; //FAILURE (table already exist)\n\t\t}\n\t\tString sql = \"ALTER TABLE \" + this.tableName + \" RENAME TO \" + tableName + \";\";\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionUrl());\n\t\t\t\tStatement statement = connection.createStatement()) {\n\t\t\tstatement.execute(sql);\n\t\t\tthis.tableName = tableName; //OK (change successful)\n\t\t\treturn true;\n\t\t} catch (SQLException ex) {\n\t\t\tLOG.error(ex.getMessage(), ex);\n\t\t\treturn false; //FAILURE (some other error)\n\t\t}\n\t}\n\n\tprivate boolean tableExist() {\n\t\treturn tableExist(tableName);\n\t}\n\n\tpublic static boolean tableExist(String tableName) {\n\t\tString sql = \"SELECT name FROM sqlite_master WHERE type='table' AND name='\" + tableName + \"'\";\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionUrl());\n\t\t\t\tStatement statement = connection.createStatement();\n\t\t\t\tResultSet rs = statement.executeQuery(sql)) {\n\t\t\twhile (rs.next()) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} catch (SQLException ex) {\n\t\t\tLOG.error(ex.getMessage(), ex);\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic void removeTable() {\n\t\tString sql = \"DROP TABLE IF EXISTS \" + this.tableName + \";\";\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionUrl());\n\t\t\t\tStatement statement = connection.createStatement()) {\n\t\t\tstatement.execute(sql);\n\t\t} catch (SQLException ex) {\n\t\t\tLOG.error(ex.getMessage(), ex);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/profile/TableData.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.profile;\r\n\r\nimport net.nikr.eve.jeveasset.Program;\r\n\r\n\r\npublic abstract class TableData {\r\n\tprotected final ProfileManager profileManager;\r\n\tprotected final ProfileData profileData;\r\n\r\n\tpublic TableData(Program program) {\r\n\t\tthis(program.getProfileManager(), program.getProfileData());\r\n\t}\r\n\tpublic TableData(ProfileManager profileManager, ProfileData profileData) {\r\n\t\tthis.profileManager = profileManager;\r\n\t\tthis.profileData = profileData;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/sde/Agent.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.data.sde;\n\nimport net.nikr.eve.jeveasset.data.settings.types.CorporationType;\nimport net.nikr.eve.jeveasset.data.settings.types.EditableLocationType;\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\n\n\npublic class Agent implements Comparable<Agent>, EditableLocationType, CorporationType {\n\n\tprivate final String agent;\n\tprivate final int agentID; //agentID : int\n\tprivate final NpcCorporation npcCorporation;\n\tprivate final int corporationID; //corporationID : int\n\tprivate final Integer level;\n\tprivate final int divisionID; //divisionID : int\n\tprivate final String division;\n\tprivate final int agentTypeID; //corporationID : int\n\tprivate final String agentType;\n\tprivate final long locationID; //corporationID : long\n\tprivate final boolean locator;\n\tprivate final boolean empty;\n\tprivate MyLocation location;\n\n\tpublic Agent(String agentName, int agentID, int corporationID, int level, int divisionID, int agentTypeID, long locationID, boolean locator) {\n\t\tthis.agent = agentName;\n\t\tthis.agentID = agentID;\n\t\tthis.npcCorporation = ApiIdConverter.getNpcCorporation(corporationID);\n\t\tthis.corporationID = corporationID;\n\t\tthis.level = level;\n\t\tthis.divisionID = divisionID;\n\t\tthis.division =  RawConverter.toAgentDivision(divisionID);\n\t\tthis.agentTypeID = agentTypeID;\n\t\tthis.agentType =  RawConverter.toAgentType(agentTypeID);\n\t\tthis.locationID = locationID;\n\t\tthis.locator = locator;\n\t\tthis.location = ApiIdConverter.getLocation(locationID);\n\t\tthis.empty = false;\n\t}\n\n\tpublic Agent(Integer agentID) {\n\t\tthis.agent = \"!\" + agentID;\n\t\tthis.agentID = agentID;\n\t\tthis.npcCorporation = ApiIdConverter.getNpcCorporation(0);\n\t\tthis.corporationID = 0;\n\t\tthis.level = null;\n\t\tthis.divisionID = 0;\n\t\tthis.division =  null;\n\t\tthis.agentTypeID = 0;\n\t\tthis.agentType =  null;\n\t\tthis.locationID = 0;\n\t\tthis.locator = false;\n\t\tthis.location = null;\n\t\tthis.empty = true;\n\t}\n\n\tpublic boolean isEmpty() {\n\t\treturn empty;\n\t}\n\n\tpublic String getAgent() {\n\t\treturn agent;\n\t}\n\n\tpublic int getAgentID() {\n\t\treturn agentID;\n\t}\n\n\t@Override\n\tpublic String getCorporationName() {\n\t\treturn npcCorporation.getCorporation();\n\t}\n\n\t@Override\n\tpublic Integer getCorporationID() {\n\t\treturn corporationID;\n\t}\n\n\tpublic String getFaction() {\n\t\treturn npcCorporation.getFaction();\n\t}\n\n\tpublic int getFactionID() {\n\t\treturn npcCorporation.getFactionID();\n\t}\n\n\tpublic Integer getLevel() {\n\t\treturn level;\n\t}\n\n\tpublic int getDivisionID() {\n\t\treturn divisionID;\n\t}\n\n\tpublic String getDivision() {\n\t\treturn division;\n\t}\n\n\tpublic int getAgentTypeID() {\n\t\treturn agentTypeID;\n\t}\n\n\tpublic String getAgentType() {\n\t\treturn agentType;\n\t}\n\n\t@Override\n\tpublic long getLocationID() {\n\t\treturn locationID;\n\t}\n\n\tpublic boolean isLocator() {\n\t\treturn locator;\n\t}\n\n\t@Override\n\tpublic int compareTo(final Agent o) {\n\t\treturn Integer.compare(agentID, o.agentID);\n\t}\n\n\t@Override\n\tpublic int hashCode() {\n\t\tint hash = 3;\n\t\thash = 37 * hash + this.agentID;\n\t\treturn hash;\n\t}\n\n\t@Override\n\tpublic boolean equals(Object obj) {\n\t\tif (this == obj) {\n\t\t\treturn true;\n\t\t}\n\t\tif (obj == null) {\n\t\t\treturn false;\n\t\t}\n\t\tif (getClass() != obj.getClass()) {\n\t\t\treturn false;\n\t\t}\n\t\tfinal Agent other = (Agent) obj;\n\t\treturn this.agentID == other.agentID;\n\t}\n\n\t@Override\n\tpublic void setLocation(MyLocation location) {\n\t\tthis.location = location;\n\t}\n\n\t@Override\n\tpublic MyLocation getLocation() {\n\t\treturn location;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/sde/IndustryMaterial.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.sde;\r\n\r\n\r\npublic class IndustryMaterial {\r\n\tprivate final int typeID; //TypeID : int\r\n\tprivate final int quantity;\r\n\r\n\tpublic IndustryMaterial(int typeID, int quantity) {\r\n\t\tthis.typeID = typeID;\r\n\t\tthis.quantity = quantity;\r\n\t}\r\n\r\n\tpublic int getTypeID() {\r\n\t\treturn typeID;\r\n\t}\r\n\r\n\tpublic int getQuantity() {\r\n\t\treturn quantity;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/sde/Item.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.data.sde;\n\nimport java.util.ArrayList;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Set;\nimport net.nikr.eve.jeveasset.data.settings.types.ItemType;\n\n\npublic class Item implements Comparable<Item>, ItemType {\n\n\t//PI\n\tpublic static final String CATEGORY_PLANETARY_INDUSTRY = \"Planetary Industry\";\n\tpublic static final String CATEGORY_PLANETARY_COMMODITIES = \"Planetary Commodities\";\n\tpublic static final String CATEGORY_PLANETARY_RESOURCES = \"Planetary Resources\";\n\tpublic static final String GROUP_COMMAND_CENTERS = \"Command Centers\";\n\tpublic static final String GROUP_EXTRACTOR_CONTROL_UNITS = \"Extractor Control Units\";\n\tpublic static final String GROUP_PROCESSORS = \"Processors\";\n\tpublic static final String GROUP_SPACEPORTS = \"Spaceports\";\n\tpublic static final String GROUP_STORAGE_FACILITIES = \"Storage Facilities\";\n\n\t//Containers\n\tpublic static final String GROUP_AUDIT_LOG_SECURE_CONTAINER = \"Audit Log Secure Container\";\n\tpublic static final String GROUP_FREIGHT_CONTAINER = \"Freight Container\";\n\tpublic static final String GROUP_CARGO_CONTAINER = \"Cargo Container\";\n\tpublic static final String GROUP_SECURE_CARGO_CONTAINER = \"Secure Cargo Container\";\n\n\t//Blueprint\n\tpublic static final String CATEGORY_BLUEPRINT = \"Blueprint\";\n\t//Ship\n\tprivate static final String CATEGORY_SHIP = \"Ship\";\n\t//Asteroid\n\tprivate static final String CATEGORY_ASTEROID = \"Asteroid\";\n\t//Module\n\tpublic static final String CATEGORY_MODULE = \"Module\";\n\t//Structure\n\tpublic static final String CATEGORY_STRUCTURE = \"Structure\";\n\t//Material\n\tpublic static final String CATEGORY_MATERIAL = \"Material\";\n\t//Deployable\n\tpublic static final String CATEGORY_DEPLOYABLE = \"Deployable\";\n\t//Commodity\n\tpublic static final String CATEGORY_COMMODITY = \"Commodity\";\n\t//Biomass\n\tpublic static final String GROUP_BIOMASS = \"Biomass\";\n\t//Station Services\n\tpublic static final String GROUP_STATION_SERVICES = \"Station Services\";\n\t//Compressed Gas\n\tpublic static final String GROUP_COMPRESSED_GAS = \"Compressed Gas\";\n\t//Harvestable Cloud\n\tpublic static final String GROUP_HARVESTABLE_CLOUD = \"Harvestable Cloud\";\n\n\tprivate final int typeID; //TypeID : int\n\tprivate final String name;\n\tprivate final String group;\n\tprivate final String category;\n\tprivate final long basePrice;\n\tprivate final float volume;\n\tprivate final float volumePackaged;\n\tprivate final float capacity;\n\tprivate final int meta;\n\tprivate final String tech;\n\tprivate final boolean marketGroup;\n\tprivate final boolean piMaterial;\n\tprivate final int portion;\n\tprivate final int productTypeID;\n\tprivate final Set<Integer> blueprintTypeIDs = new HashSet<>();\n\tprivate final int productQuantity;\n\tprivate final boolean blueprint;\n\tprivate final boolean formula;\n\tprivate final String version;\n\tprivate final List<ReprocessedMaterial> reprocessedMaterials = new ArrayList<>();\n\tprivate final List<IndustryMaterial> manufacturingMaterials = new ArrayList<>();\n\tprivate final List<IndustryMaterial> reactionMaterials = new ArrayList<>();\n\tprivate final String slot;\n\tprivate final String chargeSize;\n\t//Dynamic values\n\tprivate double priceReprocessed;\n\tprivate double priceReprocessedMax;\n\tprivate double priceManufacturing;\n\n\tpublic Item(int typeID) {\n\t\tthis(typeID, emptyType(typeID), \"\", \"\", -1, -1, -1, -1, -1, \"\", false, 0, 0, 1, \"\", \"\", null);\n\t}\n\n\tpublic Item(int typeID, String version) {\n\t\tthis(typeID, emptyType(typeID), \"\", \"\", -1, -1, -1, -1, -1, \"\", false, 0, 0, 1, \"\", \"\", version);\n\t}\n\n\tpublic Item(Item item, long basePrice, String tech, int productTypeID, int productQuantity, Set<Integer> blueprintTypeIDs, List<ReprocessedMaterial> reprocessedMaterials, List<IndustryMaterial> manufacturingMaterials, List<IndustryMaterial> reactionMaterials) {\n\t\tthis(item.getTypeID(), item.getTypeName(), item.getGroup(), item.getCategory(), basePrice, item.getVolume(), item.getVolumePackaged(), item.getCapacity(), item.getMeta(), tech, item.isMarketGroup(), item.getPortion(), productTypeID, productQuantity, item.getSlot(), item.getChargeSize(), item.getVersion());\n\t\tthis.blueprintTypeIDs.addAll(blueprintTypeIDs);\n\t\tthis.reprocessedMaterials.addAll(reprocessedMaterials);\n\t\tthis.manufacturingMaterials.addAll(manufacturingMaterials);\n\t\tthis.reactionMaterials.addAll(reactionMaterials);\n\t}\n\n\tpublic Item(final int typeID, final String name, final String group, final String category, final long basePrice, final float volume, final float volumePackaged, final float capacity, final int meta, final String tech, final boolean marketGroup, final int portion, final int productTypeID, final int productQuantity, String slot, String chargeSize, String version) {\n\t\tthis.typeID = typeID;\n\t\tthis.name = name;\n\t\tthis.group = group.intern();\n\t\tthis.category = category.intern();\n\t\tthis.basePrice = basePrice;\n\t\tthis.volume = volume;\n\t\tthis.volumePackaged = volumePackaged;\n\t\tthis.capacity = capacity;\n\t\tthis.meta = meta;\n\t\tthis.tech = tech.intern();\n\t\tthis.marketGroup = marketGroup;\n\t\tthis.piMaterial = category.equals(CATEGORY_PLANETARY_COMMODITIES) || category.equals(CATEGORY_PLANETARY_RESOURCES);\n\t\tthis.portion = portion;\n\t\tthis.productTypeID = productTypeID;\n\t\tthis.productQuantity = productQuantity;\n\t\tthis.blueprint = this.category.equals(CATEGORY_BLUEPRINT) && group.toLowerCase().contains(\"blueprint\");\n\t\tthis.formula = this.category.equals(CATEGORY_BLUEPRINT) && group.toLowerCase().contains(\"reaction formulas\");\n\t\tthis.version = version;\n\t\tif (slot != null) {\n\t\t\tthis.slot = slot;\n\t\t} else {\n\t\t\tthis.slot = \"None\";\n\t\t}\n\t\tif (chargeSize != null) {\n\t\t\tthis.chargeSize = chargeSize;\n\t\t} else {\n\t\t\tthis.chargeSize = \"None\";\n\t\t}\n\t}\n\n\tpublic String getVersion() {\n\t\treturn version;\n\t}\n\n\tpublic boolean isOre() {\n\t\treturn category.equals(CATEGORY_ASTEROID);\n\t}\n\n\tpublic boolean isMined() {\n\t\treturn category.equals(CATEGORY_ASTEROID)\n\t\t\t\t|| group.equals(GROUP_HARVESTABLE_CLOUD)\n\t\t\t\t|| group.equals(GROUP_COMPRESSED_GAS)\n\t\t\t\t;\n\t}\n\n\tpublic boolean isShip() {\n\t\treturn category.equals(CATEGORY_SHIP);\n\t}\n\n\tpublic boolean isContainer() {\n\t\treturn group.equals(GROUP_AUDIT_LOG_SECURE_CONTAINER)\n\t\t\t\t\t|| group.equals(GROUP_FREIGHT_CONTAINER)\n\t\t\t\t\t|| group.equals(GROUP_CARGO_CONTAINER)\n\t\t\t\t\t|| group.equals(GROUP_SECURE_CARGO_CONTAINER);\n\t}\n\n\tpublic void addReprocessedMaterial(final ReprocessedMaterial material) {\n\t\treprocessedMaterials.add(material);\n\t}\n\n\tpublic List<ReprocessedMaterial> getReprocessedMaterial() {\n\t\treturn reprocessedMaterials;\n\t}\n\n\tpublic void addManufacturingMaterial(IndustryMaterial industryMaterial) {\n\t\tmanufacturingMaterials.add(industryMaterial);\n\t}\n\n\tpublic List<IndustryMaterial> getManufacturingMaterials() {\n\t\treturn manufacturingMaterials;\n\t}\n\n\tpublic void addReactionMaterial(IndustryMaterial industryMaterial) {\n\t\treactionMaterials.add(industryMaterial);\n\t}\n\n\tpublic List<IndustryMaterial> getReactionMaterials() {\n\t\treturn reactionMaterials;\n\t}\n\n\tpublic String getCategory() {\n\t\treturn category;\n\t}\n\n\tpublic String getGroup() {\n\t\treturn group;\n\t}\n\n\tpublic int getTypeID() {\n\t\treturn typeID;\n\t}\n\n\tpublic boolean isMarketGroup() {\n\t\treturn marketGroup;\n\t}\n\n\tpublic int getMeta() {\n\t\treturn meta;\n\t}\n\n\tpublic String getTech() {\n\t\treturn tech;\n\t}\n\n\tpublic String getTypeName() {\n\t\treturn name;\n\t}\n\n\tpublic double getPriceBase() {\n\t\treturn basePrice;\n\t}\n\n\tpublic double getPriceReprocessed() {\n\t\treturn priceReprocessed;\n\t}\n\n\tpublic double getPriceReprocessedMax() {\n\t\treturn priceReprocessedMax;\n\t}\n\n\tpublic double getPriceManufacturing() {\n\t\treturn priceManufacturing;\n\t}\n\n\tpublic float getVolume() {\n\t\treturn volume;\n\t}\n\n\tpublic float getVolumePackaged() {\n\t\treturn volumePackaged;\n\t}\n\n\tpublic float getCapacity() {\n\t\treturn capacity;\n\t}\n\n\tpublic boolean isPiMaterial() {\n\t\treturn piMaterial;\n\t}\n\n\tpublic boolean isBlueprint() {\n\t\treturn blueprint;\n\t}\n\n\tpublic boolean isFormula() {\n\t\treturn formula;\n\t}\n\n\tpublic int getPortion() {\n\t\treturn portion;\n\t}\n\n\tpublic int getProductTypeID() {\n\t\treturn productTypeID;\n\t}\n\n\tpublic int getProductQuantity() {\n\t\treturn productQuantity;\n\t}\n\n\tpublic String getSlot() {\n\t\treturn slot;\n\t}\n\n\tpublic String getChargeSize() {\n\t\treturn chargeSize;\n\t}\n\n\tpublic boolean isEmpty() {\n\t\treturn emptyType(typeID).equals(name);\n\t}\n\n\tprivate static String emptyType(int typeID) {\n\t\treturn \"!\"+typeID;\n\t}\n\n\t@Override\n\tpublic Item getItem() {\n\t\treturn this;\n\t}\n\n\t@Override\n\tpublic long getItemCount() {\n\t\treturn 1; //Just this one item?\n\t}\n\n\tpublic boolean isProduct() {\n\t\treturn !blueprintTypeIDs.isEmpty();\n\t}\n\n\tpublic Set<Integer> getBlueprintTypeIDs() {\n\t\treturn blueprintTypeIDs;\n\t}\n\n\tpublic Integer getBlueprintTypeID() {\n\t\tif (blueprintTypeIDs.isEmpty()) {\n\t\t\treturn 0;\n\t\t} else {\n\t\t\treturn blueprintTypeIDs.iterator().next();\n\t\t}\n\t}\n\n\tpublic void addBlueprintID(int blueprintID) {\n\t\tthis.blueprintTypeIDs.add(blueprintID);\n\t}\n\n\tpublic void setPriceReprocessed(double priceReprocessed) {\n\t\tthis.priceReprocessed = priceReprocessed;\n\t}\n\n\tpublic void setPriceReprocessedMax(double priceReprocessedMax) {\n\t\tthis.priceReprocessedMax = priceReprocessedMax;\n\t}\n\n\tpublic void setPriceManufacturing(double priceManufacturing) {\n\t\tthis.priceManufacturing = priceManufacturing;\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\treturn name;\n\t}\n\n\t\n\t@Override\n\tpublic int compareTo(final Item o) {\n\t\treturn this.getTypeName().compareToIgnoreCase(o.getTypeName());\n\t}\n\n\t@Override\n\tpublic int hashCode() {\n\t\tint hash = 5;\n\t\thash = 53 * hash + this.typeID;\n\t\treturn hash;\n\t}\n\n\t@Override\n\tpublic boolean equals(java.lang.Object obj) {\n\t\tif (obj == null) {\n\t\t\treturn false;\n\t\t}\n\t\tif (getClass() != obj.getClass()) {\n\t\t\treturn false;\n\t\t}\n\t\tfinal Item other = (Item) obj;\n\t\tif (this.typeID != other.typeID) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/sde/ItemFlag.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.data.sde;\n\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\n\n\npublic class ItemFlag implements Comparable<ItemFlag> {\n\tprivate final int flagID;\n\tprivate final String flagName;\n\tprivate final String flagText;\n\tprivate final String toString;\n\n\tpublic ItemFlag(final int flagID, final String flagName, final String flagText) {\n\t\tthis.flagID = flagID;\n\t\tthis.flagName = flagName;\n\t\tthis.flagText = flagText;\n\t\tthis.toString = ApiIdConverter.getFlagName(this);\n\t}\n\n\tpublic int getFlagID() {\n\t\treturn flagID;\n\t}\n\n\tpublic String getFlagName() {\n\t\treturn flagName;\n\t}\n\n\tpublic String getFlagText() {\n\t\treturn flagText;\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\treturn toString;\n\t}\n\n\t@Override\n\tpublic int compareTo(final ItemFlag o) {\n\t\treturn this.getFlagName().compareToIgnoreCase(o.getFlagName());\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/sde/Jump.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.data.sde;\n\n/**\n *\n * @author Candle\n */\npublic class Jump {\n\tprivate MyLocation from;\n\tprivate MyLocation to;\n\n\tpublic Jump(final MyLocation from, final MyLocation to) {\n\t\tthis.from = from;\n\t\tthis.to = to;\n\t}\n\n\tpublic MyLocation getFrom() {\n\t\treturn from;\n\t}\n\n\tpublic MyLocation getTo() {\n\t\treturn to;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/sde/MyLocation.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.data.sde;\n\nimport java.util.HashMap;\nimport java.util.Map;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Security;\nimport net.nikr.eve.jeveasset.i18n.General;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\nimport uk.me.candle.eve.pricing.options.NamedPriceLocation;\n\n\npublic class MyLocation implements Comparable<MyLocation>, NamedPriceLocation {\n\n\tprivate final static Map<Long, MyLocation> CACHE = new HashMap<>();\n\n\tprivate final long locationID; //LocationID : long\n\tprivate String location;\n\tprivate long stationID; //LocationID : long\n\tprivate String station;\n\tprivate long systemID; //LocationID : long\n\tprivate String system;\n\tprivate long constellationID; //LocationID : long\n\tprivate String constellation;\n\tprivate long regionID; //LocationID : long\n\tprivate String region;\n\tprivate String security;\n\tprivate Security securityObject;\n\tprivate boolean citadel;\n\tprivate boolean empty;\n\tprivate boolean userLocation;\n\n\tpublic static void reset(long locationID) {\n\t\tMyLocation cached = CACHE.get(locationID);\n\t\tif (cached != null) {\n\t\t\tcached.updateLocation(new MyLocation(locationID));\n\t\t}\n\t}\n\n\tpublic static MyLocation create(long locationID) {\n\t\tMyLocation cached = CACHE.get(locationID);\n\t\tif (cached == null) {\n\t\t\tcached = new MyLocation(locationID);\n\t\t\tCACHE.put(locationID, cached);\n\t\t}\n\t\treturn cached;\n\t}\n\n\tpublic static MyLocation create(long stationID, String station, long systemID, String system, long constellationID, String constellation, long regionID, String region, String security, boolean citadel, boolean userLocation) {\n\t\tfinal MyLocation newLocation = new MyLocation(stationID, station, systemID, system, constellationID, constellation, regionID, region, security, citadel, userLocation);\n\t\tMyLocation cached = CACHE.get(newLocation.getLocationID());\n\t\tif (cached == null) { //New\n\t\t\tcached = newLocation;\n\t\t\tCACHE.put(newLocation.getLocationID(), newLocation);\n\t\t} else { //Update\n\t\t\tcached.updateLocation(newLocation);\n\t\t}\n\t\treturn cached;\n\t}\n\n\tprivate MyLocation(long locationID) {\n\t\tif (locationID == 2004) {\n\t\t\tthis.location = General.get().assetSafety();\n\t\t\tthis.station = General.get().assetSafety();\n\t\t\tthis.system = General.get().assetSafety();\n\t\t\tthis.constellation = General.get().assetSafety();\n\t\t\tthis.region = General.get().assetSafety();\n\t\t\tthis.empty = false;\n\t\t} else {\n\t\t\tthis.location = General.get().emptyLocation(String.valueOf(locationID));\n\t\t\tthis.station = General.get().emptyLocation(String.valueOf(locationID));\n\t\t\tthis.system = General.get().emptyLocation(String.valueOf(locationID));\n\t\t\tthis.constellation = General.get().emptyLocation(String.valueOf(locationID));\n\t\t\tthis.region = General.get().emptyLocation(String.valueOf(locationID));\n\t\t\tthis.empty = true;\n\t\t}\n\t\tthis.locationID = locationID;\n\t\tthis.stationID = 0;\n\t\tthis.systemID = 0;\n\t\tthis.constellationID = 0;\n\t\tthis.regionID = 0;\n\t\tthis.security = \"0.0\";\n\t\tthis.securityObject = Security.create(security);\n\t\tthis.citadel = false;\n\t\tthis.userLocation = false;\n\t}\n\n\tpublic MyLocation(long stationID, String station, long systemID, String system, long constellationID, String constellation, long regionID, String region, String security) {\n\t\tthis(stationID, station, systemID, system, constellationID, constellation, regionID, region, security, false, false);\n\t}\n\n\tprivate MyLocation(long stationID, String station, long systemID, String system, long constellationID, String constellation, long regionID, String region, String security, boolean citadel, boolean userLocation) {\n\t\tthis.stationID = stationID;\n\t\tthis.station = station;\n\t\tthis.systemID = systemID;\n\t\tthis.system = system.intern();\n\t\tthis.constellationID = constellationID;\n\t\tthis.constellation = constellation.intern();\n\t\tthis.regionID = regionID;\n\t\tthis.region = region.intern();\n\t\tthis.security = security.intern();\n\t\tthis.securityObject = Security.create(security);\n\t\tif (isStation() || isPlanet()) { //Station or Planet\n\t\t\tempty = false;\n\t\t\tthis.locationID = stationID;\n\t\t\tthis.location = station;\n\t\t} else if (isSystem()) {\n\t\t\tempty = false;\n\t\t\tthis.locationID = systemID;\n\t\t\tthis.location = system.intern();\n\t\t} else if (isConstellation()) {\n\t\t\tempty = false;\n\t\t\tthis.locationID = constellationID;\n\t\t\tthis.location = constellation.intern();\n\t\t} else if (isRegion()) {\n\t\t\tempty = false;\n\t\t\tthis.locationID = regionID;\n\t\t\tthis.location = region.intern();\n\t\t} else {\n\t\t\tempty = true;\n\t\t\tthis.locationID = 0;\n\t\t\tthis.location = \"\";\n\t\t}\n\t\tthis.citadel = citadel;\n\t\tthis.userLocation = userLocation;\n\t}\n\n\tprivate void updateLocation(final MyLocation newLocation) {\n\t\tthis.stationID = newLocation.stationID;\n\t\tthis.station = newLocation.station;\n\t\tthis.systemID = newLocation.systemID;\n\t\tthis.system = newLocation.system.intern();\n\t\tthis.constellationID = newLocation.constellationID;\n\t\tthis.constellation = newLocation.constellation.intern();\n\t\tthis.regionID = newLocation.regionID;\n\t\tthis.region = newLocation.region.intern();\n\t\tthis.security = newLocation.security.intern();\n\t\tthis.securityObject = Security.create(newLocation.security);\n\t\tthis.location = newLocation.location.intern();\n\t\tthis.empty = newLocation.empty;\n\t\tthis.citadel = newLocation.citadel;\n\t\tthis.userLocation = newLocation.userLocation;\n\t}\n\n\t@Override\n\tpublic String getLocation() {\n\t\treturn location;\n\t}\n\n\t@Override\n\tpublic long getLocationID() {\n\t\treturn locationID;\n\t}\n\n\tpublic String getStation() {\n\t\treturn station;\n\t}\n\n\tpublic long getStationID() {\n\t\treturn stationID;\n\t}\n\n\tpublic String getSystem() {\n\t\treturn system;\n\t}\n\n\tpublic long getSystemID() {\n\t\treturn systemID;\n\t}\n\n\tpublic long getConstellationID() {\n\t\treturn constellationID;\n\t}\n\n\tpublic String getConstellation() {\n\t\treturn constellation;\n\t}\n\n\tpublic String getRegion() {\n\t\treturn region;\n\t}\n\n\t@Override\n\tpublic long getRegionID() {\n\t\treturn regionID;\n\t}\n\n\tpublic String getSecurity() {\n\t\treturn security;\n\t}\n\n\tpublic Security getSecurityObject() {\n\t\treturn securityObject;\n\t}\n\n\t/**\n\t * Return true if this location is a Station\n\t * Will return false if this location is a Planet, System, Constellation, Region or Unknown/Empty locations\n\t * @return\n\t */\n\tpublic final boolean isStation() {\n\t\treturn getStationID() != 0 && getSystemID() != 0 && !isConstellation() && getRegionID() != 0 && (locationID < 40000000 || locationID > 50000000);\n\t}\n\n\t/**\n\t * Return true if this location is a Planet\n\t * Will return false if this location is a Station, System, Constellation, Region or Unknown/Empty locations\n\t * @return\n\t */\n\tpublic final boolean isPlanet() {\n\t\treturn getStationID() != 0 && getSystemID() != 0 && !isConstellation() && getRegionID() != 0 && locationID >= 40000000 && locationID <= 50000000;\n\t}\n\n\t/**\n\t * Return true if this location is a System\n\t * Will return false if this location is a Station, Planet, Constellation, Region or Unknown/Empty locations\n\t * @return\n\t */\n\tpublic final boolean isSystem() {\n\t\treturn getStationID() == 0 && getSystemID() != 0 && !isConstellation() && getRegionID() != 0;\n\t}\n\t/**\n\t * Return true if this location is a Constellation\n\t * Will return false if this location is a Station, Planet, System, Region or Unknown/Empty locations\n\t * @return\n\t */\n\tpublic final boolean isConstellation() {\n\t\treturn getStationID() == 0 && getSystemID() == 0 && getConstellationID() != 0 && getRegionID() != 0;\n\t}\n\t/**\n\t * Return true if this location is a Region\n\t * Will return false if this location is a Station, Planet, System, Constellation or Unknown/Empty locations\n\t * @return\n\t */\n\tpublic final boolean isRegion() {\n\t\treturn getStationID() == 0 && getSystemID() == 0 && !isConstellation() && getRegionID() != 0;\n\t}\n\n\tpublic String getFactionWarfareSystemOwner() {\n\t\tif (Settings.get().getFactionWarfareSystemOwners().isEmpty()) {\n\t\t\treturn GuiShared.get().unknownFaction();\n\t\t}\n\t\tString faction = Settings.get().getFactionWarfareSystemOwners().get(getSystemID());\n\t\tif (faction != null) {\n\t\t\treturn faction;\n\t\t} else {\n\t\t\treturn GuiShared.get().none();\n\t\t}\n\t}\n\n\tpublic boolean isEmpty() {\n\t\treturn empty;\n\t}\n\n\tpublic boolean isCitadel() {\n\t\treturn citadel;\n\t}\n\n\tpublic boolean isUserLocation() {\n\t\treturn userLocation;\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\treturn location;\n\t}\n\n\t@Override\n\tpublic boolean equals(final Object obj) {\n\t\tif (obj == null) {\n\t\t\treturn false;\n\t\t}\n\t\tif (getClass() != obj.getClass()) {\n\t\t\treturn false;\n\t\t}\n\t\tfinal MyLocation other = (MyLocation) obj;\n\t\tif (this.locationID != other.locationID) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this.systemID != other.systemID) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic int hashCode() {\n\t\tint hash = 7;\n\t\thash = 71 * hash + (int) (this.locationID ^ (this.locationID >>> 32));\n\t\thash = 71 * hash + (int) (this.systemID ^ (this.systemID >>> 32));\n\t\treturn hash;\n\t}\n\n\t@Override\n\tpublic int compareTo(final MyLocation o) {\n\t\treturn getLocation().compareToIgnoreCase(o.getLocation());\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/sde/NpcCorporation.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.data.sde;\n\n\npublic class NpcCorporation implements Comparable<NpcCorporation> {\n\n\tprivate final String faction;\n\tprivate final int factionID; //corporationID : int\n\tprivate final String corporation;\n\tprivate final int corporationID; //corporationID : int\n\tprivate final boolean connections;\n\tprivate final boolean criminalConnections;\n\n\tpublic NpcCorporation(String faction, int factionID, String corporation, int corporationID, boolean connections, boolean criminalConnections) {\n\t\tthis.faction = faction;\n\t\tthis.factionID = factionID;\n\t\tthis.corporation = corporation;\n\t\tthis.corporationID = corporationID;\n\t\tthis.connections = connections;\n\t\tthis.criminalConnections = criminalConnections;\n\t}\n\n\tpublic NpcCorporation(Integer corporationID) {\n\t\tthis.faction = null;\n\t\tthis.factionID = 0;\n\t\tthis.corporation = null;\n\t\tthis.corporationID = corporationID;\n\t\tthis.connections = false;\n\t\tthis.criminalConnections = false;\n\t}\n\n\tpublic boolean isFaction() {\n\t\treturn corporationID == 0;\n\t}\n\n\tpublic String getFaction() {\n\t\treturn faction;\n\t}\n\n\tpublic int getFactionID() {\n\t\treturn factionID;\n\t}\n\n\tpublic String getCorporation() {\n\t\treturn corporation;\n\t}\n\n\tpublic int getCorporationID() {\n\t\treturn corporationID;\n\t}\n\n\tpublic boolean isConnections() {\n\t\treturn connections;\n\t}\n\n\tpublic boolean isCriminalConnections() {\n\t\treturn criminalConnections;\n\t}\n\t\n\t@Override\n\tpublic int compareTo(final NpcCorporation o) {\n\t\treturn Integer.compare(corporationID, o.corporationID);\n\t}\n\n\t@Override\n\tpublic int hashCode() {\n\t\tint hash = 3;\n\t\thash = 41 * hash + this.corporationID;\n\t\treturn hash;\n\t}\n\n\t@Override\n\tpublic boolean equals(Object obj) {\n\t\tif (this == obj) {\n\t\t\treturn true;\n\t\t}\n\t\tif (obj == null) {\n\t\t\treturn false;\n\t\t}\n\t\tif (getClass() != obj.getClass()) {\n\t\t\treturn false;\n\t\t}\n\t\tfinal NpcCorporation other = (NpcCorporation) obj;\n\t\treturn this.corporationID == other.corporationID;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/sde/ReprocessedMaterial.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.data.sde;\n\n\npublic class ReprocessedMaterial {\n\tprivate int typeID; //TypeID : int\n\tprivate int quantity;\n\tprivate int portionSize;\n\n\tpublic ReprocessedMaterial(final int typeID, final int quantity, final int portionSize) {\n\t\tthis.typeID = typeID;\n\t\tthis.quantity = quantity;\n\t\tthis.portionSize = portionSize;\n\t}\n\n\tpublic int getTypeID() {\n\t\treturn typeID;\n\t}\n\n\tpublic int getPortionSize() {\n\t\treturn portionSize;\n\t}\n\n\tpublic int getQuantity() {\n\t\treturn quantity;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/sde/RouteFinder.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.sde;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\nimport java.util.Objects;\r\nimport net.nikr.eve.jeveasset.SplashUpdater;\r\nimport net.nikr.eve.jeveasset.data.settings.RouteAvoidSettings;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.tabs.routing.SolarSystem;\r\nimport uk.me.candle.eve.graph.DisconnectedGraphException;\r\nimport uk.me.candle.eve.graph.Edge;\r\nimport uk.me.candle.eve.graph.Graph;\r\nimport uk.me.candle.eve.graph.distances.Jumps;\r\n\r\n\r\npublic class RouteFinder {\r\n\r\n\tpublic static enum RouteFinderFilter {\r\n\t\tJUMPS() {\r\n\t\t\t@Override\r\n\t\t\tpublic RouteAvoidSettings getRouteAvoidSettings() {\r\n\t\t\t\treturn Settings.get().getJumpsAvoidSettings();\r\n\t\t\t}\r\n\t\t},\r\n\t\tMARKET_ORDERS() {\r\n\t\t\t@Override\r\n\t\t\tpublic RouteAvoidSettings getRouteAvoidSettings() {\r\n\t\t\t\treturn null; //Unfiltered\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprivate final Map<Long, SolarSystem> systemCache = new HashMap<>();\r\n\t\tprivate final Graph<SolarSystem> graph = new Graph<>(new Jumps<>());\r\n\t\tprivate final Map<Route, Integer> distance = new HashMap<>();\r\n\r\n\t\tpublic Graph<SolarSystem> getGraph() {\r\n\t\t\treturn graph;\r\n\t\t}\r\n\r\n\t\tMap<Route, Integer> getDistance() {\r\n\t\t\treturn distance;\r\n\t\t}\r\n\r\n\t\tpublic Map<Long, SolarSystem> getSystemCache() {\r\n\t\t\treturn systemCache;\r\n\t\t}\r\n\r\n\t\tpublic void update() {\r\n\t\t\tsystemCache.clear();\r\n\t\t\tdistance.clear();\r\n\t\t\tgraph.clear();\r\n\t\t\tgenerateGraph(systemCache, graph, getRouteAvoidSettings());\r\n\t\t}\r\n\r\n\t\tabstract public RouteAvoidSettings getRouteAvoidSettings();\r\n\t}\r\n\r\n\tprivate static RouteFinder DISTANCE;\r\n\r\n\t\r\n\r\n\tprivate RouteFinder() {\r\n\t\t// build the graph.\r\n\t\t// filter the solarsystems based on the settings.\r\n\t\tfor (RouteFinderFilter filter : RouteFinderFilter.values()) {\r\n\t\t\tfilter.update();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void generateGraph(Map<Long, SolarSystem> systemCache, Graph<SolarSystem> graph, RouteAvoidSettings avoidSettings) {\r\n\t\tint count = 0;\r\n\t\tfor (Jump jump : StaticData.get().getJumps()) { // this way we exclude the locations that are unreachable.\r\n\t\t\tcount++;\r\n\t\t\tSplashUpdater.setSubProgress((int) (count * 100.0 / StaticData.get().getJumps().size()));\r\n\r\n\t\t\tSolarSystem from = systemCache.get(jump.getFrom().getSystemID());\r\n\t\t\tSolarSystem to = systemCache.get(jump.getTo().getSystemID());\r\n\t\t\tif (from == null) {\r\n\t\t\t\tfrom = SolarSystem.create(systemCache, jump.getFrom());\r\n\t\t\t}\r\n\t\t\tif (to == null) {\r\n\t\t\t\tto = SolarSystem.create(systemCache, jump.getTo());\r\n\t\t\t}\r\n\t\t\tif (avoidSettings == null || (jump.getFrom().getSecurityObject().getDouble() >= avoidSettings.getSecMin()\r\n\t\t\t\t\t\t&& jump.getTo().getSecurityObject().getDouble() >= avoidSettings.getSecMin()\r\n\t\t\t\t\t\t&& jump.getFrom().getSecurityObject().getDouble() <= avoidSettings.getSecMax()\r\n\t\t\t\t\t\t&& jump.getTo().getSecurityObject().getDouble() <= avoidSettings.getSecMax()\r\n\t\t\t\t\t\t&& !avoidSettings.getAvoid().keySet().contains(jump.getFrom().getSystemID())\r\n\t\t\t\t\t\t&& !avoidSettings.getAvoid().keySet().contains(jump.getTo().getSystemID())\r\n\t\t\t\t\t)) {\r\n\t\t\t\tgraph.addEdge(new Edge<>(from, to));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Integer distanceBetween(RouteFinderFilter filter, Long fromSystemID, Long toSystemID) {\r\n\t\tif (fromSystemID == null || toSystemID == null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tif (Objects.equals(fromSystemID, toSystemID)) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tRoute route = new Route(fromSystemID, toSystemID);\r\n\t\tInteger jumps = filter.getDistance().get(route);\r\n\t\tif (jumps != null) {\r\n\t\t\tif (jumps < 0) {\r\n\t\t\t\treturn null;\r\n\t\t\t} else {\r\n\t\t\t\treturn jumps;\r\n\t\t\t} //Saved route\r\n\t\t}\r\n\t\tSolarSystem from = filter.getSystemCache().get(fromSystemID);\r\n\t\tSolarSystem to = filter.getSystemCache().get(toSystemID);\r\n\t\tif (from == null || to == null) {\r\n\t\t\tfilter.getDistance().put(route, -2);\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\ttry {\r\n\t\t\tjumps = filter.getGraph().distanceBetween(from, to);\r\n\t\t\tfilter.getDistance().put(route, jumps);\r\n\t\t\treturn jumps;\r\n\t\t} catch (DisconnectedGraphException ex) {\r\n\t\t\tfilter.getDistance().put(route, -1);\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tpublic static void load() {\r\n\t\tget();\r\n\t}\r\n\r\n\tpublic static synchronized RouteFinder get() {\r\n\t\tif (DISTANCE == null) {\r\n\t\t\tDISTANCE = new RouteFinder();\r\n\t\t}\r\n\t\treturn DISTANCE;\r\n\t}\r\n\r\n\tprivate static class Route {\r\n\r\n\t\tprivate final Long lowSystemID;\r\n\t\tprivate final Long highSystemID;\r\n\r\n\t\tpublic Route(Long fromSystemID, Long toSystemID) {\r\n\t\t\tif (fromSystemID < toSystemID) {\r\n\t\t\t\tthis.lowSystemID = fromSystemID;\r\n\t\t\t\tthis.highSystemID = toSystemID;\r\n\t\t\t} else {\r\n\t\t\t\tthis.lowSystemID = toSystemID;\r\n\t\t\t\tthis.highSystemID = fromSystemID;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int hashCode() {\r\n\t\t\tint hash = 5;\r\n\t\t\thash = 47 * hash + Objects.hashCode(this.lowSystemID);\r\n\t\t\thash = 47 * hash + Objects.hashCode(this.highSystemID);\r\n\t\t\treturn hash;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean equals(Object obj) {\r\n\t\t\tif (this == obj) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif (obj == null) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (getClass() != obj.getClass()) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tfinal Route other = (Route) obj;\r\n\t\t\tif (!Objects.equals(this.lowSystemID, other.lowSystemID)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (!Objects.equals(this.highSystemID, other.highSystemID)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/sde/StaticData.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.sde;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.concurrent.locks.ReentrantReadWriteLock;\r\nimport net.nikr.eve.jeveasset.SplashUpdater;\r\nimport net.nikr.eve.jeveasset.io.local.AgentsReader;\r\nimport net.nikr.eve.jeveasset.io.local.FlagsReader;\r\nimport net.nikr.eve.jeveasset.io.local.ItemsReader;\r\nimport net.nikr.eve.jeveasset.io.local.JumpsReader;\r\nimport net.nikr.eve.jeveasset.io.local.LocationsReader;\r\nimport net.nikr.eve.jeveasset.io.local.NpcCorporationsReader;\r\n\r\n\r\npublic class StaticData {\r\n\tprivate static final ReentrantReadWriteLock LOCATIONS_LOCK = new ReentrantReadWriteLock();\r\n\t//Data\r\n\tprivate final Map<Integer, Item> items = new HashMap<>(); //TypeID : int\r\n\tprivate final Map<Integer, ItemFlag> flags = new HashMap<>(); //FlagID : int\r\n\tprivate final Map<Long, MyLocation> locations = new HashMap<>(); //LocationID : long\r\n\tprivate final List<Jump> jumps = new ArrayList<>(); //LocationID : long\r\n\tprivate final Map<Integer, Agent> agents = new HashMap<>(); //AgentID : int\r\n\tprivate final Map<Integer, NpcCorporation> npcCorporations = new HashMap<>(); //corporationID : int\r\n\r\n\tprivate static StaticData staticData = null;\r\n\r\n\tprivate StaticData() {}\r\n\r\n\tpublic static StaticData get() {\r\n\t\tload();\r\n\t\treturn staticData;\r\n\t}\r\n\r\n\tpublic static synchronized void load() {\r\n\t\tif (staticData == null) {\r\n\t\t\tstaticData = new StaticData();\r\n\t\t\tstaticData.loadData();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void loadData() {\r\n\t\tSplashUpdater.setProgress(5);\r\n\t\tItemsReader.load(items); //Items\r\n\t\tSplashUpdater.setProgress(10);\r\n\t\ttry {\r\n\t\t\tLOCATIONS_LOCK.writeLock().lock();\r\n\t\t\tLocationsReader.load(locations); //Locations\r\n\t\t} finally {\r\n\t\t\tLOCATIONS_LOCK.writeLock().unlock();\r\n\t\t}\r\n\t\tSplashUpdater.setProgress(15);\r\n\t\tJumpsReader.load(jumps); //Jumps\r\n\t\tSplashUpdater.setProgress(20);\r\n\t\tFlagsReader.load(flags); //Item Flags\r\n\t\tNpcCorporationsReader.load(npcCorporations); //Must be loaded after locations\r\n\t\tAgentsReader.load(agents);  //Must be loaded after locations\r\n\t\tSplashUpdater.setProgress(25);\r\n\t}\r\n\r\n\tpublic Map<Integer, ItemFlag> getItemFlags() {\r\n\t\treturn flags;\r\n\t}\r\n\r\n\tpublic Map<Integer, Item> getItems() {\r\n\t\treturn items;\r\n\t}\r\n\r\n\tpublic List<Jump> getJumps() {\r\n\t\treturn jumps;\r\n\t}\r\n\r\n\tpublic Map<Integer, Agent> getAgents() {\r\n\t\treturn agents;\r\n\t}\r\n\r\n\tpublic Map<Integer, NpcCorporation> getNpcCorporations() {\r\n\t\treturn npcCorporations;\r\n\t}\r\n\r\n\tpublic void addLocation(MyLocation location) {\r\n\t\ttry {\r\n\t\t\tLOCATIONS_LOCK.writeLock().lock();\r\n\t\t\tlocations.put(location.getLocationID(), location);\r\n\t\t} finally {\r\n\t\t\tLOCATIONS_LOCK.writeLock().unlock();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void removeLocation(long locationID) {\r\n\t\ttry {\r\n\t\t\tLOCATIONS_LOCK.writeLock().lock();\r\n\t\t\tlocations.remove(locationID);\r\n\t\t} finally {\r\n\t\t\tLOCATIONS_LOCK.writeLock().unlock();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic MyLocation getLocation(long locationID) {\r\n\t\ttry {\r\n\t\t\tLOCATIONS_LOCK.readLock().lock();\r\n\t\t\treturn locations.get(locationID);\r\n\t\t} finally {\r\n\t\t\tLOCATIONS_LOCK.readLock().unlock();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Collection<MyLocation> getLocations() {\r\n\t\ttry {\r\n\t\t\tLOCATIONS_LOCK.readLock().lock();\r\n\t\t\treturn new ArrayList<>(locations.values()); //Copy\r\n\t\t} finally {\r\n\t\t\tLOCATIONS_LOCK.readLock().unlock();\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/AddedData.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport java.sql.Connection;\r\nimport java.sql.DriverManager;\r\nimport java.sql.PreparedStatement;\r\nimport java.sql.ResultSet;\r\nimport java.sql.SQLException;\r\nimport java.sql.Statement;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.io.local.AssetAddedReader;\r\nimport net.nikr.eve.jeveasset.io.local.profile.ProfileTable.Rows;\r\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class AddedData {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(AddedData.class);\r\n\r\n\tprivate static enum DataSettings {\r\n\t\tASSETS(\"assetadded\") {\r\n\t\t\t@Override\r\n\t\t\tpublic void load() {\r\n\t\t\t\tAssetAddedReader.load();\r\n\t\t\t}\r\n\t\t},\r\n\t\tTRANSACTIONS(\"transactionadded\"),\r\n\t\tJOURNALS(\"journaladded\"),\r\n\t\tMARKET_ORDERS(\"marketorderadded\"),\r\n\t\t;\r\n\r\n\t\tprivate final AddedData addedData;\r\n\t\tprivate final String tableName;\r\n\r\n\t\tprivate DataSettings(String tableName) {\r\n\t\t\tthis.tableName = tableName;\r\n\t\t\tthis.addedData = new AddedData(this);\r\n\t\t}\r\n\r\n\t\tpublic String getTableName() {\r\n\t\t\treturn tableName;\r\n\t\t}\r\n\r\n\t\tpublic AddedData getInstance() {\r\n\t\t\treturn addedData;\r\n\t\t}\r\n\r\n\t\tpublic void load() { }\r\n\t}\r\n\r\n\tprivate Map<Long, Date> insert = null;\r\n\tprivate Map<Long, Date> update = null;\r\n\tprivate final DataSettings dataSettings;\r\n\r\n\tprivate String getConnectionURL() {\r\n\t\treturn \"jdbc:sqlite:\" + FileUtil.getPathAssetAddedDatabase();\r\n\t}\r\n\r\n\tprivate AddedData(DataSettings dataSettings) {\r\n\t\tthis.dataSettings = dataSettings;\r\n\t}\r\n\r\n\tpublic static AddedData getAssets() {\r\n\t\treturn DataSettings.ASSETS.getInstance();\r\n\t}\r\n\r\n\tpublic static AddedData getTransactions() {\r\n\t\treturn DataSettings.TRANSACTIONS.getInstance();\r\n\t}\r\n\r\n\tpublic static AddedData getJournals() {\r\n\t\treturn DataSettings.JOURNALS.getInstance();\r\n\t}\r\n\r\n\tpublic static AddedData getMarketOrders() {\r\n\t\treturn DataSettings.MARKET_ORDERS.getInstance();\r\n\t}\r\n\r\n\tpublic static void load() {\r\n\t\tfor (DataSettings dataSettings : DataSettings.values()) {\r\n\t\t\tdataSettings.getInstance().init();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void init() {\r\n\t\tif (!tableExist()) { //New database: Import from added.json\r\n\t\t\tdataSettings.load();\r\n\t\t}\r\n\t\tif (!tableExist()) { //New database: Empty\r\n\t\t\tcreateTable();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Update if date is before the current value.\r\n\t * @param data current data\r\n\t * @param id unique id\r\n\t * @param added\r\n\t * @return\r\n\t */\r\n\tpublic Date getAdd(Map<Long, Date> data, Long id, Date added) {\r\n\t\tDate date = data.get(id);\r\n\t\tif (date == null) { //Insert\r\n\t\t\tdate = added;\r\n\t\t\tinsertQueue(id, date);\r\n\t\t}\r\n\t\tif (date.after(added)) { //Update\r\n\t\t\tdate = added;\r\n\t\t\tupdateQueue(id, date);\r\n\t\t}\r\n\t\treturn date;\r\n\t}\r\n\r\n\t/**\r\n\t * Update if date is after the current value.\r\n\t * @param data current data\r\n\t * @param id unique id\r\n\t * @param added\r\n\t * @return\r\n\t */\r\n\tpublic Date getPut(Map<Long, Date> data, Long id, Date added) {\r\n\t\tDate date = data.get(id);\r\n\t\tif (date == null) { //Insert\r\n\t\t\tdate = added;\r\n\t\t\tinsertQueue(id, date);\r\n\t\t}\r\n\t\tif (date.before(added)) { //Update\r\n\t\t\tdate = added;\r\n\t\t\tupdateQueue(id, date);\r\n\t\t}\r\n\t\treturn date;\r\n\t}\r\n\r\n\tprivate void insertQueue(Long id, Date date) {\r\n\t\tif (insert == null) {\r\n\t\t\tinsert = new HashMap<>();\r\n\t\t}\r\n\t\tinsert.put(id, date);\r\n\t}\r\n\r\n\tprivate void updateQueue(Long id, Date date) {\r\n\t\tif (update == null) {\r\n\t\t\tupdate = new HashMap<>();\r\n\t\t}\r\n\t\tupdate.put(id, date);\r\n\t}\r\n\r\n\tpublic void commitQueue() {\r\n\t\tinsert(insert);\r\n\t\tupdate(update);\r\n\t\tupdate = null;\r\n\t\tinsert = null;\r\n\t}\r\n\r\n\tpublic boolean isEmpty() {\r\n\t\tString sql = \"SELECT * FROM \" + dataSettings.getTableName();\r\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionURL());\r\n\t\t\t\tPreparedStatement statement = connection.prepareStatement(sql);\r\n\t\t\t\tResultSet rs = statement.executeQuery()) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t} catch (SQLException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tpublic void set(Map<Long, Date> data) {\r\n\t\tif (data == null || data.isEmpty() || tableExist()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tcreateTable();\r\n\t\tinsert(data);\r\n\t}\r\n\r\n\tprivate void insert(Map<Long, Date> data) {\r\n\t\tif (data == null || data.isEmpty()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tString sql = \"INSERT INTO \" + dataSettings.getTableName() + \"(itemid,date) VALUES(?,?)\";\r\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionURL());\r\n\t\t\t\tPreparedStatement statement = connection.prepareStatement(sql)) {\r\n\t\t\tconnection.setAutoCommit(false);\r\n\t\t\tRows rows = new Rows(statement, data.size());\r\n\t\t\tfor (Map.Entry<Long, Date> entry : data.entrySet()) {\r\n\t\t\t\tstatement.setLong(1, entry.getKey());\r\n\t\t\t\tstatement.setLong(2, entry.getValue().getTime());\r\n\t\t\t\trows.addRow();\r\n\t\t\t}\r\n\t\t\tconnection.commit();\r\n\t\t\tconnection.setAutoCommit(true);\r\n\t\t} catch (SQLException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void update(Map<Long, Date> data) {\r\n\t\tif (data == null || data.isEmpty()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tString sql = \"UPDATE \" + dataSettings.getTableName() + \" SET date = ? WHERE itemid = ?\";\r\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionURL());\r\n\t\t\t\tPreparedStatement statement = connection.prepareStatement(sql)) {\r\n\t\t\tRows rows = new Rows(statement, data.size());\r\n\t\t\tconnection.setAutoCommit(false);\r\n\t\t\tfor (Map.Entry<Long, Date> entry : data.entrySet()) {\r\n\t\t\t\tstatement.setLong(1, entry.getValue().getTime());\r\n\t\t\t\tstatement.setLong(2, entry.getKey());\r\n\t\t\t\trows.addRow();\r\n\t\t\t}\r\n\t\t\tconnection.commit();\r\n\t\t\tconnection.setAutoCommit(true);\r\n\t\t} catch (SQLException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Map<Long, Date> getAll() {\r\n\t\tMap<Long, Date> map = new HashMap<>();\r\n\t\tString sql = \"SELECT * FROM \" + dataSettings.getTableName();\r\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionURL());\r\n\t\t\t\tPreparedStatement statement = connection.prepareStatement(sql);\r\n\t\t\t\tResultSet rs = statement.executeQuery();\r\n\t\t\t\t) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tmap.put(rs.getLong(\"itemid\"), new Date(rs.getLong(\"date\")));\r\n\t\t\t}\r\n\t\t} catch (SQLException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t}\r\n\t\treturn map; //can not return null\r\n\t}\r\n\r\n\tprivate void createTable() {\r\n\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + dataSettings.getTableName() + \" (\\n\"\r\n\t\t\t\t+ \"\titemid integer PRIMARY KEY,\\n\"\r\n\t\t\t\t+ \"\tdate integer NOT NULL\\n\"\r\n\t\t\t\t+ \");\";\r\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionURL());\r\n\t\t\t\tStatement statement = connection.createStatement()) {\r\n\t\t\tstatement.execute(sql);\r\n\t\t} catch (SQLException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate boolean tableExist() {\r\n\t\tString sql = \"SELECT name FROM sqlite_master WHERE type='table' AND name='\" + dataSettings.getTableName() + \"'\";\r\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionURL());\r\n\t\t\t\tStatement statement = connection.createStatement();\r\n\t\t\t\tResultSet rs = statement.executeQuery(sql)) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t} catch (SQLException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/Citadel.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\r\n\r\npublic class Citadel {\r\n\r\n\tpublic static enum CitadelSource {\r\n\t\tESI_STRUCTURES(3), //Certified fresh\r\n\t\tESI_LOCATIONS(3), //Good source\r\n\t\tESI_PLANET(3), //Planet source\r\n\t\tESI_MOON(3), //Moon source\r\n\t\tFUZZWORK_PLANET(3), //Planet source\r\n\t\tUSER(2), //User set this data (unless we have top-notch info, don't overwrite)\r\n\t\tZKILL(1), //Outdated source\r\n\t\tHAMMERTIME(1), //Outdated source\r\n\t\tOLD(1), //Unknown source - keep if?\r\n\t\tESI_BOOKMARKS(0), //Unknown location name, but, known system and region\r\n\t\tEVEKIT_BOOKMARKS(0), //Unknown location name, but, known system and region\r\n\t\tEMPTY(-1) //100% Unknown location\r\n\t\t;\r\n\r\n\t\tprivate final int priority;\r\n\r\n\t\tprivate CitadelSource(int priority) {\r\n\t\t\tthis.priority = priority;\r\n\t\t}\r\n\r\n\t\tpublic int getPriority() {\r\n\t\t\treturn priority;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tprivate long locationID;\r\n\tprivate String location;\r\n\tprivate long systemID;\r\n\tprivate boolean userLocation;\r\n\tprivate boolean citadel;\r\n\tprivate CitadelSource source;\r\n\tprivate MyLocation myLocation;\r\n\r\n\t/**\r\n\t * Empty location\r\n\t * @param id locationID\r\n\t */\r\n\tpublic Citadel(long id) {\r\n\t\tthis(id, \"\", 0, false, true, CitadelSource.EMPTY);\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param locationID\r\n\t * @param location\r\n\t * @param systemID\r\n\t * @param userLocation\r\n\t * @param citadel\r\n\t * @param source\r\n\t */\r\n\tpublic Citadel(long locationID, String location, long systemID, boolean userLocation, boolean citadel, CitadelSource source) {\r\n\t\tthis.locationID = locationID;\r\n\t\tthis.location = location;\r\n\t\tthis.systemID = systemID;\r\n\t\tthis.userLocation = userLocation;\r\n\t\tthis.citadel = citadel;\r\n\t\tthis.source = source;\r\n\t\tupdateLocation();\r\n\t}\r\n\r\n\tpublic void update(Citadel citadel) {\r\n\t\tthis.locationID = citadel.locationID;\r\n\t\tthis.location = citadel.location;\r\n\t\tthis.systemID = citadel.systemID;\r\n\t\tthis.userLocation = citadel.userLocation;\r\n\t\tthis.citadel = citadel.citadel;\r\n\t\tthis.source = citadel.source;\r\n\t\tupdateLocation();\r\n\t}\r\n\r\n\tprivate void updateLocation() {\r\n\t\tMyLocation system = StaticData.get().getLocation(systemID);\r\n\t\tif (!isEmpty() && system != null) { //Location is valid -> return locations\r\n\t\t\tif (userLocation) {\r\n\t\t\t\tmyLocation = MyLocation.create(locationID, system.getSystem() + \" - \" + location, systemID, system.getSystem(), system.getConstellationID(), system.getConstellation(), system.getRegionID(), system.getRegion(), system.getSecurity(), citadel, userLocation);\r\n\t\t\t} else {\r\n\t\t\t\tmyLocation = MyLocation.create(locationID, location, systemID, system.getSystem(), system.getConstellationID(), system.getConstellation(), system.getRegionID(), system.getRegion(), system.getSecurity(), citadel, userLocation);\r\n\t\t\t}\r\n\t\t} else { //Location not valid -> return fallback location\r\n\t\t\tmyLocation = null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic long getLocationID() {\r\n\t\treturn locationID;\r\n\t}\r\n\r\n\tpublic String getLocation() {\r\n\t\treturn location;\r\n\t}\r\n\r\n\tpublic long getSystemID() {\r\n\t\treturn systemID;\r\n\t}\r\n\r\n\tpublic boolean isEmpty() {\r\n\t\treturn systemID == 0;\r\n\t}\r\n\r\n\tpublic boolean isUserLocation() {\r\n\t\treturn userLocation;\r\n\t}\r\n\r\n\tpublic boolean isCitadel() {\r\n\t\treturn citadel;\r\n\t}\r\n\r\n\tpublic CitadelSource getSource() {\r\n\t\treturn source;\r\n\t}\r\n\r\n\tpublic MyLocation toLocation() {\r\n\t\treturn myLocation;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn myLocation.toString();\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/CitadelSettings.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\n\r\n\r\npublic class CitadelSettings {\r\n\tprivate final Map<Long, Citadel> cache = new HashMap<>();\r\n\r\n\tpublic Citadel get(long location) {\r\n\t\treturn cache.get(location);\r\n\t}\r\n\r\n\tpublic Iterable<Map.Entry<Long, Citadel>> getCache() {\r\n\t\treturn cache.entrySet();\r\n\t}\r\n\r\n\tpublic void put(long locationID, Citadel citadel) {\r\n\t\tCitadel old = cache.get(locationID);\r\n\t\tif (old != null && !old.isEmpty() && old.getSource().getPriority() > citadel.getSource().getPriority()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (old == null) {\r\n\t\t\tcache.put(locationID, citadel);\r\n\t\t\tApiIdConverter.addLocation(citadel);\r\n\t\t} else {\r\n\t\t\told.update(citadel);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void remove(long locationID) {\r\n\t\tcache.remove(locationID);\r\n\t\tMyLocation.reset(locationID);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/ColorEntry.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport net.nikr.eve.jeveasset.i18n.DataColors;\r\n\r\n\r\npublic enum ColorEntry {\r\n\tASSETS_REPROCESSING_EQUAL(ColorEntryGroup.ASSETS, DataColors.get().assetsReprocessingEqual()),\r\n\tASSETS_REPROCESSING_REPROCES(ColorEntryGroup.ASSETS, DataColors.get().assetsReprocessingReproces()),\r\n\tASSETS_REPROCESSING_SELL(ColorEntryGroup.ASSETS, DataColors.get().assetsReprocessingSell()),\r\n\tASSETS_REPROCESS(ColorEntryGroup.ASSETS, DataColors.get().assetsReprocess()),\r\n\tASSETS_NEW(ColorEntryGroup.ASSETS, DataColors.get().assetsNew()),\r\n\tCUSTOM_PRICE(ColorEntryGroup.CUSTOM, DataColors.get().customPrice()),\r\n\tCUSTOM_ASSET_NAME(ColorEntryGroup.CUSTOM, DataColors.get().customAssetName()),\r\n\tCUSTOM_USER_LOCATION(ColorEntryGroup.CUSTOM, DataColors.get().customUserLocation()),\r\n\tCONTRACTS_COURIER(ColorEntryGroup.CONTRACTS, DataColors.get().contractsCourier()),\r\n\tCONTRACTS_INCLUDED(ColorEntryGroup.CONTRACTS, DataColors.get().contractsIncluded()),\r\n\tCONTRACTS_EXCLUDED(ColorEntryGroup.CONTRACTS, DataColors.get().contractsExcluded()),\r\n\tEXTRACTIONS_DAYS(ColorEntryGroup.EXTRACTIONS, DataColors.get().extractionsDays()),\r\n\tEXTRACTIONS_WEEK(ColorEntryGroup.EXTRACTIONS, DataColors.get().extractionsWeek()),\r\n\tEXTRACTIONS_WEEKS(ColorEntryGroup.EXTRACTIONS, DataColors.get().extractionsWeeks()),\r\n\tOVERVIEW_GROUPED_LOCATIONS(ColorEntryGroup.OVERVIEW, DataColors.get().overviewGroupedLocations()),\r\n\tSTOCKPILE_TABLE_BELOW_THRESHOLD(ColorEntryGroup.STOCKPILE, DataColors.get().stockpileTableBelowThreshold()),\r\n\tSTOCKPILE_ICON_BELOW_THRESHOLD(ColorEntryGroup.STOCKPILE, DataColors.get().stockpileIconBelowThreshold(), Background.EDITABLE_AND_NOT_NULL, Foreground.NOT_EDITABLE),\r\n\tSTOCKPILE_TABLE_BELOW_THRESHOLD_2ND(ColorEntryGroup.STOCKPILE, DataColors.get().stockpileTableBelowThreshold2nd()),\r\n\tSTOCKPILE_ICON_BELOW_THRESHOLD_2ND(ColorEntryGroup.STOCKPILE, DataColors.get().stockpileIconBelowThreshold2nd(), Background.EDITABLE_AND_NOT_NULL, Foreground.NOT_EDITABLE),\r\n\tSTOCKPILE_TABLE_OVER_THRESHOLD(ColorEntryGroup.STOCKPILE, DataColors.get().stockpileTableOverThreshold()),\r\n\tSTOCKPILE_ICON_OVER_THRESHOLD(ColorEntryGroup.STOCKPILE, DataColors.get().stockpileIconOverThreshold(), Background.EDITABLE_AND_NOT_NULL, Foreground.NOT_EDITABLE),\r\n\tMARKET_ORDERS_OUTBID_NOT_BEST(ColorEntryGroup.MARKET_ORDERS, DataColors.get().marketOrdersOutbidNotBest()),\r\n\tMARKET_ORDERS_OUTBID_NOT_BEST_OWNED(ColorEntryGroup.MARKET_ORDERS, DataColors.get().marketOrdersOutbidNotBestOwned()),\r\n\tMARKET_ORDERS_OUTBID_BEST(ColorEntryGroup.MARKET_ORDERS, DataColors.get().marketOrdersOutbidBest()),\r\n\tMARKET_ORDERS_OUTBID_UNKNOWN(ColorEntryGroup.MARKET_ORDERS, DataColors.get().marketOrdersOutbidUnknown()),\r\n\tMARKET_ORDERS_EXPIRED(ColorEntryGroup.MARKET_ORDERS, DataColors.get().marketOrdersExpired()),\r\n\tMARKET_ORDERS_NEAR_EXPIRED(ColorEntryGroup.MARKET_ORDERS, DataColors.get().marketOrdersNearExpired()),\r\n\tMARKET_ORDERS_NEAR_FILLED(ColorEntryGroup.MARKET_ORDERS, DataColors.get().marketOrdersNearFilled()),\r\n\tMARKET_ORDERS_NEW(ColorEntryGroup.MARKET_ORDERS, DataColors.get().marketOrdersNew()),\r\n\tINDUSTRY_JOBS_DELIVERED(ColorEntryGroup.INDUSTRY_JOBS, DataColors.get().industryJobsDelivered()),\r\n\tINDUSTRY_JOBS_DONE(ColorEntryGroup.INDUSTRY_JOBS, DataColors.get().industryJobsDone()),\r\n\tINDUSTRY_JOBS_ACTIVITY_MANUFACTURING(ColorEntryGroup.INDUSTRY_JOBS, DataColors.get().industryJobsManufacturing()),\r\n\tINDUSTRY_JOBS_ACTIVITY_RESEARCHING_TECHNOLOGY(ColorEntryGroup.INDUSTRY_JOBS, DataColors.get().industryJobsResearchingTechnology()),\r\n\tINDUSTRY_JOBS_ACTIVITY_RESEARCHING_TIME_PRODUCTIVITY(ColorEntryGroup.INDUSTRY_JOBS, DataColors.get().industryJobsResearchingTimeProductivity()),\r\n\tINDUSTRY_JOBS_ACTIVITY_RESEARCHING_METERIAL_PRODUCTIVITY(ColorEntryGroup.INDUSTRY_JOBS, DataColors.get().industryJobsResearchingMeterialProductivity()),\r\n\tINDUSTRY_JOBS_ACTIVITY_COPYING(ColorEntryGroup.INDUSTRY_JOBS, DataColors.get().industryJobsCopying()),\r\n\tINDUSTRY_JOBS_ACTIVITY_DUPLICATING(ColorEntryGroup.INDUSTRY_JOBS, DataColors.get().industryJobsDuplicating()),\r\n\tINDUSTRY_JOBS_ACTIVITY_REVERSE_ENGINEERING(ColorEntryGroup.INDUSTRY_JOBS, DataColors.get().industryJobsReverseEngineering()),\r\n\tINDUSTRY_JOBS_ACTIVITY_REVERSE_INVENTION(ColorEntryGroup.INDUSTRY_JOBS, DataColors.get().industryJobsReverseInvention()),\r\n\tINDUSTRY_JOBS_ACTIVITY_REACTIONS(ColorEntryGroup.INDUSTRY_JOBS, DataColors.get().industryJobsReactions()),\r\n\tINDUSTRY_SLOTS_FREE(ColorEntryGroup.SLOTS, DataColors.get().slotsFree()),\r\n\tINDUSTRY_SLOTS_DONE(ColorEntryGroup.SLOTS, DataColors.get().slotsDone()),\r\n\tINDUSTRY_SLOTS_FULL(ColorEntryGroup.SLOTS, DataColors.get().slotsFull()),\r\n\tJOURNAL_NEW(ColorEntryGroup.JOURNAL, DataColors.get().journalNew()),\r\n\tTRANSACTIONS_BOUGHT(ColorEntryGroup.TRANSACTIONS, DataColors.get().transactionsBought()),\r\n\tTRANSACTIONS_SOLD(ColorEntryGroup.TRANSACTIONS, DataColors.get().transactionsSold()),\r\n\tTRANSACTIONS_NEW(ColorEntryGroup.TRANSACTIONS, DataColors.get().transactionsNew()),\r\n\tNPC_STANDING_NEGATIVE(ColorEntryGroup.NPC_STANDING, DataColors.get().npcStandingNegative()),\r\n\tNPC_STANDING_POSITIVE(ColorEntryGroup.NPC_STANDING, DataColors.get().npcStandingPositive()),\r\n\tNPC_STANDING_NEGATIVE_MIDDLE(ColorEntryGroup.NPC_STANDING, DataColors.get().npcStandingNegativeMiddle()),\r\n\tNPC_STANDING_POSITIVE_MIDDLE(ColorEntryGroup.NPC_STANDING, DataColors.get().npcStandingPositiveMiddle()),\r\n\tGLOBAL_BPC(ColorEntryGroup.GLOBAL, DataColors.get().globalBPC()),\r\n\tGLOBAL_BPO(ColorEntryGroup.GLOBAL, DataColors.get().globalBPO()),\r\n\tGLOBAL_VALUE_NEGATIVE(ColorEntryGroup.GLOBAL, DataColors.get().globalValueNegative()),\r\n\tGLOBAL_VALUE_POSITIVE(ColorEntryGroup.GLOBAL, DataColors.get().globalValuePositive(), Background.NOT_EDITABLE, Foreground.NOT_EDITABLE),\r\n\tGLOBAL_ENTRY_INVALID(ColorEntryGroup.GLOBAL, DataColors.get().globalEntryInvalid()),\r\n\tGLOBAL_ENTRY_WARNING(ColorEntryGroup.GLOBAL, DataColors.get().globalEntryWarning()),\r\n\tGLOBAL_ENTRY_VALID(ColorEntryGroup.GLOBAL, DataColors.get().globalEntryValid()),\r\n\tGLOBAL_GRAND_TOTAL(ColorEntryGroup.GLOBAL, DataColors.get().globalGrandTotal(), Background.NOT_EDITABLE, Foreground.NOT_EDITABLE),\r\n\tGLOBAL_SELECTED_ROW_HIGHLIGHTING(ColorEntryGroup.GLOBAL, DataColors.get().globalSelectedRowHighlighting()),\r\n\tFILTER_OR_GROUP_1(ColorEntryGroup.FILTERS, DataColors.get().filterOrGroup1(), Background.EDITABLE_AND_NOT_NULL, Foreground.NOT_EDITABLE),\r\n\tFILTER_OR_GROUP_2(ColorEntryGroup.FILTERS, DataColors.get().filterOrGroup2(), Background.EDITABLE_AND_NOT_NULL, Foreground.NOT_EDITABLE),\r\n\tFILTER_OR_GROUP_3(ColorEntryGroup.FILTERS, DataColors.get().filterOrGroup3(), Background.EDITABLE_AND_NOT_NULL, Foreground.NOT_EDITABLE),\r\n\tFILTER_OR_GROUP_4(ColorEntryGroup.FILTERS, DataColors.get().filterOrGroup4(), Background.EDITABLE_AND_NOT_NULL, Foreground.NOT_EDITABLE),\r\n\tFILTER_OR_GROUP_5(ColorEntryGroup.FILTERS, DataColors.get().filterOrGroup5(), Background.EDITABLE_AND_NOT_NULL, Foreground.NOT_EDITABLE),\r\n\tFILTER_OR_GROUP_6(ColorEntryGroup.FILTERS, DataColors.get().filterOrGroup6(), Background.EDITABLE_AND_NOT_NULL, Foreground.NOT_EDITABLE),\r\n\tFILTER_OR_GROUP_7(ColorEntryGroup.FILTERS, DataColors.get().filterOrGroup7(), Background.EDITABLE_AND_NOT_NULL, Foreground.NOT_EDITABLE),\r\n\tREPROCESSED_SELL(ColorEntryGroup.REPROCESSED, DataColors.get().reprocessedSell(), Background.EDITABLE_AND_NOT_NULL, Foreground.NOT_EDITABLE),\r\n\tREPROCESSED_REPROCESS(ColorEntryGroup.REPROCESSED, DataColors.get().reprocessedReprocess(), Background.EDITABLE_AND_NOT_NULL, Foreground.NOT_EDITABLE),\r\n\tREPROCESSED_EQUAL(ColorEntryGroup.REPROCESSED, DataColors.get().reprocessedEqual(), Background.EDITABLE_AND_NOT_NULL, Foreground.NOT_EDITABLE),\r\n\t;\r\n\r\n\tprivate final ColorEntryGroup group;\r\n\tprivate final String description;\r\n\tprivate final Background backgroundType;\r\n\tprivate final Foreground foregroundType;\r\n\r\n\tprivate ColorEntry(ColorEntryGroup group, String description) {\r\n\t\tthis(group, description, Background.EDITABLE_AND_NULLABLE, Foreground.EDITABLE_AND_NULLABLE);\r\n\t}\r\n\r\n\tprivate ColorEntry(ColorEntryGroup group, String description, Background backgroundType, Foreground foregroundType) {\r\n\t\tthis.group = group;\r\n\t\tthis.description = description;\r\n\t\tthis.backgroundType = backgroundType;\r\n\t\tthis.foregroundType = foregroundType;\r\n\t}\r\n\r\n\tpublic ColorEntryGroup getGroup() {\r\n\t\treturn group;\r\n\t}\r\n\r\n\tpublic String getDescription() {\r\n\t\treturn description;\r\n\t}\r\n\r\n\tpublic boolean isBackgroundEditable() {\r\n\t\treturn backgroundType == Background.EDITABLE_AND_NULLABLE\r\n\t\t\t|| backgroundType == Background.EDITABLE_AND_NOT_NULL;\r\n\t}\r\n\r\n\tpublic boolean isBackgroundNullable() {\r\n\t\treturn backgroundType == Background.EDITABLE_AND_NULLABLE;\r\n\t}\r\n\r\n\tpublic boolean isForegroundEditable() {\r\n\t\treturn foregroundType == Foreground.EDITABLE_AND_NULLABLE\r\n\t\t\t|| foregroundType == Foreground.EDITABLE_AND_NOT_NULL;\r\n\t}\r\n\r\n\tpublic boolean isForegroundNullable() {\r\n\t\treturn foregroundType == Foreground.EDITABLE_AND_NULLABLE;\r\n\t}\r\n\r\n\tprivate static enum Background {\r\n\t\tEDITABLE_AND_NULLABLE, EDITABLE_AND_NOT_NULL, NOT_EDITABLE\r\n\t}\r\n\tprivate static enum Foreground {\r\n\t\tEDITABLE_AND_NULLABLE, EDITABLE_AND_NOT_NULL, NOT_EDITABLE\r\n\t}\r\n\tpublic static enum ColorEntryGroup {\r\n\t\tASSETS(DataColors.get().groupAssets()),\r\n\t\tCUSTOM(DataColors.get().groupCustom()),\r\n\t\tCONTRACTS(DataColors.get().groupContracts()),\r\n\t\tEXTRACTIONS(DataColors.get().groupExtractions()),\r\n\t\tOVERVIEW(DataColors.get().groupOverview()),\r\n\t\tMARKET_ORDERS(DataColors.get().groupMarketOrders()),\r\n\t\tINDUSTRY_JOBS(DataColors.get().groupIndustryJobs()),\r\n\t\tSLOTS(DataColors.get().groupSlots()),\r\n\t\tJOURNAL(DataColors.get().groupJournal()),\r\n\t\tTRANSACTIONS(DataColors.get().groupTransactions()),\r\n\t\tNPC_STANDING(DataColors.get().groupNpcStanding()),\r\n\t\tGLOBAL(DataColors.get().groupGlobal()),\r\n\t\tFILTERS(DataColors.get().groupFilters()),\r\n\t\tREPROCESSED(DataColors.get().groupReprocessed()),\r\n\t\tSTOCKPILE(DataColors.get().groupStockpile());\r\n\r\n\t\tprivate final String name;\r\n\t\tprivate ColorEntryGroup(String name) {\r\n\t\t\tthis.name = name;\r\n\t\t}\r\n\r\n\t\tpublic String getName() {\r\n\t\t\treturn name;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic String toString() {\r\n\t\t\treturn name;\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/ColorSettings.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport java.awt.Color;\r\nimport java.awt.Component;\r\nimport java.util.ArrayList;\r\nimport java.util.EnumMap;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Objects;\r\nimport javax.swing.BorderFactory;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JComponent;\r\nimport javax.swing.JTextField;\r\nimport javax.swing.UIManager;\r\nimport javax.swing.UIManager.LookAndFeelInfo;\r\nimport javax.swing.border.Border;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorTheme.ColorThemeTypes;\r\nimport net.nikr.eve.jeveasset.gui.shared.ColorUtil;\r\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\r\n\r\npublic class ColorSettings {\r\n\r\n\tpublic static enum PredefinedLookAndFeel {\r\n\t\tDEFAULT(null, UIManager.getSystemLookAndFeelClassName(), true),\r\n\t\tFLAT_LIGHT(DialoguesSettings.get().lookAndFeelFlatLight(), \"com.formdev.flatlaf.FlatLightLaf\"),\r\n\t\tFLAT_INTELLIJ(DialoguesSettings.get().lookAndFeelFlatIntelliJ(), \"com.formdev.flatlaf.FlatIntelliJLaf\"),\r\n\t\tFLAT_DARK(DialoguesSettings.get().lookAndFeelFlatDark(), \"com.formdev.flatlaf.FlatDarkLaf\"),\r\n\t\tFLAT_DARCULA(DialoguesSettings.get().lookAndFeelFlatDarcula(), \"com.formdev.flatlaf.FlatDarculaLaf\"),\r\n\t\tDARK_NIMBUS(DialoguesSettings.get().lookAndFeelNimbusDark(), DarkNimbus.class.getName()),\r\n\t\t;\r\n\r\n\t\tprivate final String name;\r\n\t\tprivate final String className;\r\n\t\tprivate final boolean selected;\r\n\r\n\t\tprivate PredefinedLookAndFeel(String name, String className) {\r\n\t\t\tthis(name, className, false);\r\n\t\t}\r\n\r\n\t\tprivate PredefinedLookAndFeel(String name, String className, boolean selected) {\r\n\t\t\tif (name == null) {\r\n\t\t\t\tfor (LookAndFeelInfo laf : UIManager.getInstalledLookAndFeels()) {\r\n\t\t\t\t\tif (laf.getClassName().equals(UIManager.getSystemLookAndFeelClassName())) {\r\n\t\t\t\t\t\tname = DialoguesSettings.get().lookAndFeelDefaultName(laf.getName());\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (name == null) {\r\n\t\t\t\t\tname = DialoguesSettings.get().lookAndFeelDefault();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.name = name;\r\n\t\t\tthis.className = className;\r\n\t\t\tthis.selected = selected;\r\n\t\t}\r\n\r\n\t\tpublic boolean isSelected() {\r\n\t\t\treturn selected;\r\n\t\t}\r\n\r\n\t\tpublic LookAndFeelInfo getLookAndFeelInfo() {\r\n\t\t\treturn new LookAndFeelInfo(name, className);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate String lookAndFeelClass = UIManager.getSystemLookAndFeelClassName();\r\n\tprivate ColorTheme colorTheme = ColorThemeTypes.DEFAULT.getInstance();\r\n\tprivate final Map<ColorEntry, Color> backgrounds = new EnumMap<>(ColorEntry.class);\r\n\tprivate final Map<ColorEntry, Color> foregrounds = new EnumMap<>(ColorEntry.class);\r\n\tprivate static final Map<JTextField, BorderWrap> BORDERS = new HashMap<>();\r\n\r\n\tpublic ColorSettings() {\r\n\t\tfor (ColorEntry colorEntry : ColorEntry.values()) {\r\n\t\t\tbackgrounds.put(colorEntry, colorTheme.getDefaultBackground(colorEntry));\r\n\t\t\tforegrounds.put(colorEntry, colorTheme.getDefaultForeground(colorEntry));\r\n\t\t}\r\n\t}\r\n\r\n\tpublic String getLookAndFeelClass() {\r\n\t\treturn lookAndFeelClass;\r\n\t}\r\n\r\n\tpublic boolean isFlatLAF() {\r\n\t\treturn lookAndFeelClass.startsWith(\"com.formdev.flatlaf\");\r\n\t}\r\n\r\n\tpublic void setLookAndFeelClass(String lookAndFeelClass) {\r\n\t\tthis.lookAndFeelClass = lookAndFeelClass;\r\n\t}\r\n\r\n\tpublic ColorTheme getColorTheme() {\r\n\t\treturn colorTheme;\r\n\t}\r\n\r\n\tpublic void setColorTheme(ColorTheme colorTheme, boolean overwrite) {\r\n\t\t//Setting new colors\r\n\t\tfor (ColorEntry colorEntry : ColorEntry.values()) {\r\n\t\t\tboolean defaultBackground = Objects.equals(getBackgrounds().get(colorEntry), getColorTheme().getDefaultBackground(colorEntry));\r\n\t\t\tif (defaultBackground || overwrite) {\r\n\t\t\t\tgetBackgrounds().put(colorEntry, colorTheme.getDefaultBackground(colorEntry));\r\n\t\t\t}\r\n\t\t\tboolean defaultForeground = Objects.equals(getForegrounds().get(colorEntry), getColorTheme().getDefaultForeground(colorEntry));\r\n\t\t\tif (defaultForeground || overwrite) {\r\n\t\t\t\tgetForegrounds().put(colorEntry, colorTheme.getDefaultForeground(colorEntry));\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Setting ColorTheme (must be done last)\r\n\t\tthis.colorTheme = colorTheme;\r\n\t}\r\n\r\n\tprivate Map<ColorEntry, Color> getBackgrounds() {\r\n\t\treturn backgrounds;\r\n\t}\r\n\r\n\tprivate Map<ColorEntry, Color> getForegrounds() {\r\n\t\treturn foregrounds;\r\n\t}\r\n\r\n\tpublic Color getBackground(ColorEntry colorEntry) {\r\n\t\treturn getBackgrounds().get(colorEntry);\r\n\t}\r\n\r\n\tpublic Color getForeground(ColorEntry colorEntry) {\r\n\t\treturn getForegrounds().get(colorEntry);\r\n\t}\r\n\r\n\tpublic boolean setForeground(ColorEntry colorEntry, Color foreground) {\r\n\t\treturn setMap(colorEntry, foreground, getForegrounds());\r\n\t}\r\n\r\n\tpublic boolean setBackground(ColorEntry colorEntry, Color background) {\r\n\t\treturn setMap(colorEntry, background, getBackgrounds());\r\n\t}\r\n\r\n\tprivate boolean setMap(ColorEntry colorEntry, Color color, Map<ColorEntry, Color> map) {\r\n\t\tif (color == null) { //None\r\n\t\t\tColor removed = map.remove(colorEntry);\r\n\t\t\treturn removed != null; //Removed\r\n\t\t} else { //Color\r\n\t\t\tColor old = map.put(colorEntry, color);\r\n\t\t\tif (old != null) {\r\n\t\t\t\treturn !old.equals(color); //Changed\r\n\t\t\t} else {\r\n\t\t\t\treturn true; //New\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic List<ColorRow> get() {\r\n\t\tList<ColorRow> rows = new ArrayList<>();\r\n\t\tfor (ColorEntry colorEntry : ColorEntry.values()) {\r\n\t\t\tif (!colorEntry.isBackgroundEditable() && !colorEntry.isForegroundEditable()) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\trows.add(new ColorRow(colorEntry, colorTheme.getDefaultBackground(colorEntry), colorTheme.getDefaultForeground(colorEntry), getBackground(colorEntry), getForeground(colorEntry)));\r\n\t\t}\r\n\t\treturn rows;\r\n\t}\r\n\r\n\tpublic boolean set(ColorRow colorRow) {\r\n\t\tboolean changed = setForeground(colorRow.getColorEntry(), colorRow.getForeground());\r\n\t\treturn setBackground(colorRow.getColorEntry(), colorRow.getBackground()) || changed;\r\n\t}\r\n\r\n\tpublic static Color background(ColorEntry colorEntry) {\r\n\t\treturn Settings.get().getColorSettings().getBackground(colorEntry);\r\n\t}\r\n\r\n\tprivate static Color foreground(ColorEntry colorEntry) {\r\n\t\treturn Settings.get().getColorSettings().getForeground(colorEntry);\r\n\t}\r\n\r\n\tpublic static void config(Component component, ColorEntry colorEntry) {\r\n\t\tColor foreground = foreground(colorEntry);\r\n\t\tColor background = background(colorEntry);\r\n\t\tif (background != null) {\r\n\t\t\tcomponent.setBackground(background);\r\n\t\t}\r\n\t\tif (foreground != null) {\r\n\t\t\tcomponent.setForeground(foreground);\r\n\t\t} else {\r\n\t\t\tcomponent.setForeground(Colors.COMPONENT_FOREGROUND.getColor());\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void config(JComponent component, ColorEntry colorEntry) {\r\n\t\tColor foreground = foreground(colorEntry);\r\n\t\tColor background = background(colorEntry);\r\n\t\tif (component == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (background != null) {\r\n\t\t\t/**\r\n\t\t\t * Nimbus JTextField opaque workaround.\r\n\t\t\t * Making the JTextField opaque on Nimbus makes it look very ugly\r\n\t\t\t */\r\n\t\t\tif (\"Nimbus\".equalsIgnoreCase(UIManager.getLookAndFeel().getID()) && component instanceof JTextField) {\r\n\t\t\t\tcomponent.setOpaque(false);\r\n\t\t\t} else {\r\n\t\t\t\tcomponent.setOpaque(true);\r\n\t\t\t}\r\n\t\t\tcomponent.setBackground(background);\r\n\t\t\t/**\r\n\t\t\t * GTK JTextField background workaround.\r\n\t\t\t * Use Borders instead of background color on GTK, as setting background color have no effect\r\n\t\t\t * Save the original border and set new border with the background color\r\n\t\t\t */\r\n\t\t\tif (\"GTK\".equalsIgnoreCase(UIManager.getLookAndFeel().getID()) && component instanceof JTextField) {\r\n\t\t\t\tJTextField jTextField = (JTextField) component;\r\n\t\t\t\tBorderWrap borderWrap = BORDERS.get(jTextField);\r\n\t\t\t\tif (borderWrap == null) { //Original border\r\n\t\t\t\t\t//Save original border\r\n\t\t\t\t\tborderWrap = new BorderWrap(jTextField.getBorder());\r\n\t\t\t\t\tBORDERS.put(jTextField, borderWrap);\r\n\t\t\t\t}\r\n\t\t\t\t//Set background color border\r\n\t\t\t\tjTextField.setBorder(BorderFactory.createCompoundBorder(\r\n\t\t\t\t\t\tBorderFactory.createMatteBorder(4, 4, 4, 4, background),\r\n\t\t\t\t\t\tBorderFactory.createEmptyBorder(0, 7, 0, 7)));\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tcomponent.setOpaque(false);\r\n\t\t}\r\n\t\tif (foreground != null) {\r\n\t\t\tcomponent.setForeground(foreground);\r\n\t\t} else {\r\n\t\t\tcomponent.setForeground(Colors.COMPONENT_FOREGROUND.getColor());\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void configReset(JTextField jTextField) {\r\n\t\tjTextField.setBackground(Colors.TEXTFIELD_BACKGROUND.getColor());\r\n\t\tjTextField.setForeground(Colors.TEXTFIELD_FOREGROUND.getColor());\r\n\t\t/**\r\n\t\t * GTK JTextField background workaround.\r\n\t\t * Use Borders instead of background color on GTK, as setting background color have no effect\r\n\t\t * Load the original border\r\n\t\t */\r\n\t\tif (\"GTK\".equals(UIManager.getLookAndFeel().getID())) {\r\n\t\t\tBorderWrap borderWrap = BORDERS.get(jTextField);\r\n\t\t\tif (borderWrap != null) {\r\n\t\t\t\t//Restore original border (if saved)\r\n\t\t\t\tjTextField.setBorder(borderWrap.getBorder());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void configReset(JButton jButton) {\r\n\t\tjButton.setBackground(Colors.BUTTON_BACKGROUND.getColor());\r\n\t\tjButton.setForeground(Colors.BUTTON_FOREGROUND.getColor());\r\n\t\tif (\"Nimbus\".equalsIgnoreCase(UIManager.getLookAndFeel().getID())) {\r\n\t\t\tjButton.setOpaque(false);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void configCell(Component component, ColorEntry colorEntry, boolean selected) {\r\n\t\tconfigCell(component, foreground(colorEntry), background(colorEntry), selected, false);\r\n\t}\r\n\r\n\tpublic static void configCell(Component component, ColorEntry colorEntry, boolean selected, boolean darker) {\r\n\t\tconfigCell(component, foreground(colorEntry), background(colorEntry), selected, darker);\r\n\t}\r\n\r\n\tpublic static void configCell(Component component, Color foreground, Color background, boolean selected) {\r\n\t\tconfigCell(component, foreground, background, selected, false);\r\n\t}\r\n\r\n\tpublic static void configCell(Component component, Color foreground, Color background, boolean selected, boolean darker) {\r\n\t\tif (selected) {\r\n\t\t\tif (darker) {\r\n\t\t\t\tif (background != null) {\r\n\t\t\t\t\tcomponent.setBackground(background.darker());\r\n\t\t\t\t}\r\n\t\t\t\tif (foreground != null) {\r\n\t\t\t\t\tdouble luminance = ColorUtil.luminance(foreground) - 0.2;\r\n\t\t\t\t\tcomponent.setForeground(ColorUtil.brighter(foreground, luminance));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcomponent.setForeground(Color.BLACK);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (background != null) {\r\n\t\t\t\t\tcomponent.setBackground(Colors.TABLE_SELECTION_BACKGROUND.getColor().darker());\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcomponent.setBackground(Colors.TABLE_SELECTION_BACKGROUND.getColor());\r\n\t\t\t\t}\r\n\t\t\t\tif (foreground != null) {\r\n\t\t\t\t\tdouble luminance = ColorUtil.luminance(foreground) - 0.2;\r\n\t\t\t\t\tcomponent.setForeground(ColorUtil.brighter(foreground, luminance));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcomponent.setForeground(Colors.TABLE_SELECTION_FOREGROUND.getColor());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (background != null) {\r\n\t\t\t\tcomponent.setBackground(background);\r\n\t\t\t}\r\n\t\t\tif (foreground != null) {\r\n\t\t\t\tcomponent.setForeground(foreground);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static class ColorRow {\r\n\r\n\t\tprivate final ColorEntry colorEntry;\r\n\t\tprivate final Color defaultBackground;\r\n\t\tprivate final Color defaultForeground;\r\n\t\tprivate Color background;\r\n\t\tprivate Color foreground;\r\n\r\n\t\tpublic ColorRow(ColorEntry colorEntry, Color defaultBackground, Color defaultForeground, Color background, Color foreground) {\r\n\t\t\tthis.colorEntry = colorEntry;\r\n\t\t\tthis.background = background;\r\n\t\t\tthis.foreground = foreground;\r\n\t\t\tthis.defaultBackground = defaultBackground;\r\n\t\t\tthis.defaultForeground = defaultForeground;\r\n\t\t}\r\n\r\n\t\tpublic ColorEntry getColorEntry() {\r\n\t\t\treturn colorEntry;\r\n\t\t}\r\n\r\n\t\tpublic Color getBackground() {\r\n\t\t\treturn background;\r\n\t\t}\r\n\r\n\t\tpublic Color getDefaultBackground() {\r\n\t\t\treturn defaultBackground;\r\n\t\t}\r\n\r\n\t\tpublic void setBackground(Color background) {\r\n\t\t\tthis.background = background;\r\n\t\t}\r\n\r\n\t\tpublic Color getDefaultForeground() {\r\n\t\t\treturn defaultForeground;\r\n\t\t}\r\n\r\n\t\tpublic Color getForeground() {\r\n\t\t\treturn foreground;\r\n\t\t}\r\n\r\n\t\tpublic void setForeground(Color foreground) {\r\n\t\t\tthis.foreground = foreground;\r\n\t\t}\r\n\r\n\t\tpublic boolean isForegroundDefault() {\r\n\t\t\treturn Objects.equals(foreground, defaultForeground);\r\n\t\t}\r\n\r\n\t\tpublic boolean isBackgroundDefault() {\r\n\t\t\treturn Objects.equals(background, defaultBackground);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int hashCode() {\r\n\t\t\tint hash = 7;\r\n\t\t\thash = 37 * hash + java.util.Objects.hashCode(this.colorEntry);\r\n\t\t\thash = 37 * hash + java.util.Objects.hashCode(this.defaultBackground);\r\n\t\t\thash = 37 * hash + java.util.Objects.hashCode(this.defaultForeground);\r\n\t\t\thash = 37 * hash + java.util.Objects.hashCode(this.background);\r\n\t\t\thash = 37 * hash + java.util.Objects.hashCode(this.foreground);\r\n\t\t\treturn hash;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean equals(Object obj) {\r\n\t\t\tif (this == obj) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif (obj == null) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (getClass() != obj.getClass()) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tfinal ColorRow other = (ColorRow) obj;\r\n\t\t\tif (this.colorEntry != other.colorEntry) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (!java.util.Objects.equals(this.defaultBackground, other.defaultBackground)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (!java.util.Objects.equals(this.defaultForeground, other.defaultForeground)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (!java.util.Objects.equals(this.background, other.background)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (!java.util.Objects.equals(this.foreground, other.foreground)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Wrap border.\r\n\t * Differentiate null border from null map value (unset)\r\n\t */\r\n\tprivate static class BorderWrap {\r\n\t\tprivate final Border border;\r\n\r\n\t\tpublic BorderWrap(Border border) {\r\n\t\t\tthis.border = border;\r\n\t\t}\r\n\r\n\t\tpublic Border getBorder() {\r\n\t\t\treturn border;\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/ColorTheme.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport java.awt.Color;\r\nimport java.util.ArrayList;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Objects;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings.ColorRow;\r\n\r\n\r\npublic abstract class ColorTheme {\r\n\r\n\tpublic static enum ColorThemeTypes {\r\n\t\tDEFAULT(new ColorThemeDefault()),\r\n\t\tSTRONG(new ColorThemeStrong()),\r\n\t\tCOLORBLIND(new ColorThemeColorblind()),\r\n\t\tDARK(new ColorThemeDark()),\r\n\t\t;\r\n\r\n\t\tprivate final ColorTheme colorTheme;\r\n\r\n\t\tprivate ColorThemeTypes(ColorTheme colorTheme) {\r\n\t\t\tthis.colorTheme = colorTheme;\r\n\t\t}\r\n\r\n\t\tpublic ColorTheme getInstance() {\r\n\t\t\treturn colorTheme;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic String toString() {\r\n\t\t\treturn colorTheme.getName();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Map<ColorEntry, ColorThemeEntry> colors = null;\r\n\r\n\tprotected ColorTheme() { }\r\n\r\n\tpublic Map<ColorEntry, ColorThemeEntry> getColors() {\r\n\t\tif (colors == null) {\r\n\t\t\tcolors = new HashMap<>();\r\n\t\t\tcreateColors(colors);\r\n\t\t}\r\n\t\treturn colors;\r\n\t}\r\n\r\n\tpublic boolean isValid() {\r\n\t\tfor (ColorEntry entry : ColorEntry.values()) {\r\n\t\t\tColorThemeEntry colorThemeEntry = getColors().get(entry);\r\n\t\t\tif (colorThemeEntry == null) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tpublic List<ColorRow> get(boolean overwrite, List<ColorRow> old) {\r\n\t\tMap<ColorEntry, ColorRow> loopup = new HashMap<>();\r\n\t\tfor (ColorRow colorRow : old) {\r\n\t\t\tloopup.put(colorRow.getColorEntry(), colorRow);\r\n\t\t}\r\n\t\tList<ColorRow> rows = new ArrayList<>();\r\n\t\tfor (ColorEntry colorEntry : ColorEntry.values()) {\r\n\t\t\tif (!colorEntry.isBackgroundEditable() && !colorEntry.isForegroundEditable()) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tColorRow current = loopup.get(colorEntry);\r\n\t\t\tColor defaultBackground = getDefaultBackground(colorEntry);\r\n\t\t\tColor defaultForeground = getDefaultForeground(colorEntry);\r\n\t\t\tColor currentBackground;\r\n\t\t\tColor currentForeground;\r\n\t\t\tif (overwrite || current.isBackgroundDefault()) {\r\n\t\t\t\tcurrentBackground = defaultBackground;\r\n\t\t\t} else {\r\n\t\t\t\tcurrentBackground = current.getBackground();\r\n\t\t\t}\r\n\t\t\tif (overwrite || current.isForegroundDefault()) {\r\n\t\t\t\tcurrentForeground = defaultForeground;\r\n\t\t\t} else {\r\n\t\t\t\tcurrentForeground = current.getForeground();\r\n\t\t\t}\r\n\t\t\trows.add(new ColorRow(colorEntry, defaultBackground, defaultForeground, currentBackground, currentForeground));\r\n\t\t}\r\n\t\treturn rows;\r\n\t}\r\n\r\n\tpublic Color getDefaultBackground(ColorEntry colorEntry) {\r\n\t\tColorThemeEntry entry = getColors().get(colorEntry);\r\n\t\tif (entry == null) {\r\n\t\t\treturn null;\r\n\t\t} else {\r\n\t\t\treturn entry.getBackground();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Color getDefaultForeground(ColorEntry colorEntry) {\r\n\t\tColorThemeEntry entry = getColors().get(colorEntry);\r\n\t\tif (entry == null) {\r\n\t\t\treturn null;\r\n\t\t} else {\r\n\t\t\treturn entry.getForeground();\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 3;\r\n\t\thash = 43 * hash + Objects.hashCode(this.colors);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal ColorTheme other = (ColorTheme) obj;\r\n\t\tif (!Objects.equals(this.colors, other.colors)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tpublic boolean isDefault() {\r\n\t\treturn getType() != null;\r\n\t}\r\n\r\n\tpublic abstract String getName();\r\n\tpublic abstract ColorThemeTypes getType();\r\n\tprotected abstract void createColors(Map<ColorEntry, ColorThemeEntry> colors);\r\n\r\n\tpublic class ColorThemeEntry {\r\n\t\tprivate final Color background;\r\n\t\tprivate final Color foreground;\r\n\r\n\t\tpublic ColorThemeEntry(Colors background) {\r\n\t\t\tthis.background = toColor(background);\r\n\t\t\tthis.foreground = null;\r\n\t\t}\r\n\r\n\t\tpublic ColorThemeEntry(Colors background, Colors foreground) {\r\n\t\t\tthis.background = toColor(background);\r\n\t\t\tthis.foreground = toColor(foreground);\r\n\t\t}\r\n\r\n\t\tpublic Color getBackground() {\r\n\t\t\treturn background;\r\n\t\t}\r\n\r\n\t\tpublic Color getForeground() {\r\n\t\t\treturn foreground;\r\n\t\t}\r\n\r\n\t\tprivate Color toColor(Colors colors) {\r\n\t\t\tif (colors != null) {\r\n\t\t\t\treturn colors.getColor();\r\n\t\t\t} else {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int hashCode() {\r\n\t\t\tint hash = 7;\r\n\t\t\thash = 17 * hash + Objects.hashCode(this.background);\r\n\t\t\thash = 17 * hash + Objects.hashCode(this.foreground);\r\n\t\t\treturn hash;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean equals(Object obj) {\r\n\t\t\tif (this == obj) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif (obj == null) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (getClass() != obj.getClass()) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tfinal ColorThemeEntry other = (ColorThemeEntry) obj;\r\n\t\t\tif (!Objects.equals(this.background, other.background)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (!Objects.equals(this.foreground, other.foreground)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/ColorThemeColorblind.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.i18n.DataColors;\r\n\r\n\r\npublic class ColorThemeColorblind extends ColorTheme {\r\n\r\n\tprotected ColorThemeColorblind() {}\r\n\r\n\t@Override\r\n\tpublic String getName() {\r\n\t\treturn DataColors.get().colorThemeColorblind();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic ColorThemeTypes getType() {\r\n\t\treturn ColorThemeTypes.COLORBLIND;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void createColors(Map<ColorEntry, ColorThemeEntry> colors) {\r\n\t\tcolors.put(ColorEntry.ASSETS_NEW, new ColorThemeEntry(Colors.COLORBLIND_YELLOW));\r\n\t\tcolors.put(ColorEntry.ASSETS_REPROCESSING_EQUAL, new ColorThemeEntry(Colors.COLORBLIND_ORANGE));\r\n\t\tcolors.put(ColorEntry.ASSETS_REPROCESSING_REPROCES, new ColorThemeEntry(Colors.COLORBLIND_MAGENTA));\r\n\t\tcolors.put(ColorEntry.ASSETS_REPROCESSING_SELL, new ColorThemeEntry(Colors.COLORBLIND_YELLOW));\r\n\t\tcolors.put(ColorEntry.ASSETS_REPROCESS, new ColorThemeEntry(Colors.COLORBLIND_ORANGE));\r\n\t\tcolors.put(ColorEntry.CUSTOM_PRICE, new ColorThemeEntry(Colors.COLORBLIND_GRAY));\r\n\t\tcolors.put(ColorEntry.CUSTOM_ASSET_NAME, new ColorThemeEntry(Colors.COLORBLIND_GRAY));\r\n\t\tcolors.put(ColorEntry.CUSTOM_USER_LOCATION, new ColorThemeEntry(Colors.COLORBLIND_GRAY));\r\n\t\tcolors.put(ColorEntry.CONTRACTS_COURIER, new ColorThemeEntry(Colors.COLORBLIND_ORANGE));\r\n\t\tcolors.put(ColorEntry.CONTRACTS_INCLUDED, new ColorThemeEntry(Colors.COLORBLIND_YELLOW));\r\n\t\tcolors.put(ColorEntry.CONTRACTS_EXCLUDED, new ColorThemeEntry(Colors.COLORBLIND_MAGENTA));\r\n\t\tcolors.put(ColorEntry.EXTRACTIONS_DAYS, new ColorThemeEntry(Colors.COLORBLIND_MAGENTA));\r\n\t\tcolors.put(ColorEntry.EXTRACTIONS_WEEK, new ColorThemeEntry(Colors.COLORBLIND_ORANGE));\r\n\t\tcolors.put(ColorEntry.EXTRACTIONS_WEEKS, new ColorThemeEntry(Colors.COLORBLIND_YELLOW));\r\n\t\tcolors.put(ColorEntry.OVERVIEW_GROUPED_LOCATIONS, new ColorThemeEntry(Colors.COLORBLIND_YELLOW));\r\n\t\tcolors.put(ColorEntry.STOCKPILE_TABLE_BELOW_THRESHOLD, new ColorThemeEntry(Colors.COLORBLIND_MAGENTA));\r\n\t\tcolors.put(ColorEntry.STOCKPILE_ICON_BELOW_THRESHOLD, new ColorThemeEntry(Colors.COLORBLIND_MAGENTA));\r\n\t\tcolors.put(ColorEntry.STOCKPILE_TABLE_BELOW_THRESHOLD_2ND, new ColorThemeEntry(Colors.COLORBLIND_ORANGE));\r\n\t\tcolors.put(ColorEntry.STOCKPILE_ICON_BELOW_THRESHOLD_2ND, new ColorThemeEntry(Colors.COLORBLIND_ORANGE));\r\n\t\tcolors.put(ColorEntry.STOCKPILE_TABLE_OVER_THRESHOLD, new ColorThemeEntry(Colors.COLORBLIND_YELLOW));\r\n\t\tcolors.put(ColorEntry.STOCKPILE_ICON_OVER_THRESHOLD, new ColorThemeEntry(Colors.COLORBLIND_YELLOW));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_OUTBID_NOT_BEST, new ColorThemeEntry(Colors.COLORBLIND_MAGENTA));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_OUTBID_NOT_BEST_OWNED, new ColorThemeEntry(Colors.COLORBLIND_ORANGE));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_OUTBID_BEST, new ColorThemeEntry(Colors.COLORBLIND_YELLOW));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_OUTBID_UNKNOWN, new ColorThemeEntry(Colors.COLORBLIND_GRAY));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_EXPIRED, new ColorThemeEntry(Colors.COLORBLIND_MAGENTA));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_NEAR_EXPIRED, new ColorThemeEntry(Colors.COLORBLIND_YELLOW));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_NEAR_FILLED, new ColorThemeEntry(Colors.COLORBLIND_YELLOW));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_NEW, new ColorThemeEntry(Colors.COLORBLIND_YELLOW));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_DELIVERED, new ColorThemeEntry(Colors.COLORBLIND_ORANGE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_DONE, new ColorThemeEntry(Colors.COLORBLIND_YELLOW));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_MANUFACTURING, new ColorThemeEntry(Colors.COLORBLIND_ORANGE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_RESEARCHING_TECHNOLOGY, new ColorThemeEntry(Colors.COLORBLIND_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_RESEARCHING_METERIAL_PRODUCTIVITY, new ColorThemeEntry(Colors.COLORBLIND_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_RESEARCHING_TIME_PRODUCTIVITY, new ColorThemeEntry(Colors.COLORBLIND_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_COPYING, new ColorThemeEntry(Colors.COLORBLIND_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_DUPLICATING, new ColorThemeEntry(Colors.COLORBLIND_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_REVERSE_ENGINEERING, new ColorThemeEntry(Colors.COLORBLIND_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_REVERSE_INVENTION, new ColorThemeEntry(Colors.COLORBLIND_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_REACTIONS, new ColorThemeEntry(Colors.COLORBLIND_GREEN));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_SLOTS_FREE, new ColorThemeEntry(Colors.COLORBLIND_YELLOW));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_SLOTS_DONE, new ColorThemeEntry(Colors.COLORBLIND_ORANGE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_SLOTS_FULL, new ColorThemeEntry(Colors.COLORBLIND_MAGENTA));\r\n\t\tcolors.put(ColorEntry.JOURNAL_NEW, new ColorThemeEntry(Colors.COLORBLIND_YELLOW));\r\n\t\tcolors.put(ColorEntry.TRANSACTIONS_BOUGHT, new ColorThemeEntry(Colors.COLORBLIND_MAGENTA));\r\n\t\tcolors.put(ColorEntry.TRANSACTIONS_SOLD, new ColorThemeEntry(Colors.COLORBLIND_YELLOW));\r\n\t\tcolors.put(ColorEntry.TRANSACTIONS_NEW, new ColorThemeEntry(Colors.COLORBLIND_YELLOW));\r\n\t\tcolors.put(ColorEntry.NPC_STANDING_NEGATIVE, new ColorThemeEntry(Colors.COLORBLIND_MAGENTA));\r\n\t\tcolors.put(ColorEntry.NPC_STANDING_POSITIVE, new ColorThemeEntry(Colors.COLORBLIND_YELLOW));\r\n\t\tcolors.put(ColorEntry.NPC_STANDING_NEGATIVE_MIDDLE, new ColorThemeEntry(Colors.COLORBLIND_ORANGE));\r\n\t\tcolors.put(ColorEntry.NPC_STANDING_POSITIVE_MIDDLE, new ColorThemeEntry(Colors.COLORBLIND_ORANGE));\r\n\t\tcolors.put(ColorEntry.GLOBAL_BPC, new ColorThemeEntry(Colors.COLORBLIND_MAGENTA));\r\n\t\tcolors.put(ColorEntry.GLOBAL_BPO, new ColorThemeEntry(Colors.COLORBLIND_ORANGE));\r\n\t\tcolors.put(ColorEntry.GLOBAL_VALUE_NEGATIVE, new ColorThemeEntry(null, Colors.COLORBLIND_FOREGROUND_RED));\r\n\t\tcolors.put(ColorEntry.GLOBAL_VALUE_POSITIVE, new ColorThemeEntry(null, Colors.COLORBLIND_FOREGROUND_GREEN));\r\n\t\tcolors.put(ColorEntry.GLOBAL_ENTRY_INVALID, new ColorThemeEntry(Colors.COLORBLIND_MAGENTA));\r\n\t\tcolors.put(ColorEntry.GLOBAL_ENTRY_WARNING, new ColorThemeEntry(Colors.COLORBLIND_ORANGE));\r\n\t\tcolors.put(ColorEntry.GLOBAL_ENTRY_VALID, new ColorThemeEntry(Colors.COLORBLIND_YELLOW));\r\n\t\tcolors.put(ColorEntry.GLOBAL_GRAND_TOTAL, new ColorThemeEntry(Colors.COLORBLIND_GRAY));\r\n\t\tcolors.put(ColorEntry.GLOBAL_SELECTED_ROW_HIGHLIGHTING, new ColorThemeEntry(Colors.COLORBLIND_BLUE));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_1, new ColorThemeEntry(Colors.COLORBLIND_GRAY));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_2, new ColorThemeEntry(Colors.COLORBLIND_MAGENTA));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_3, new ColorThemeEntry(Colors.COLORBLIND_GREEN));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_4, new ColorThemeEntry(Colors.COLORBLIND_YELLOW));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_5, new ColorThemeEntry(Colors.COLORBLIND_BLUE));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_6, new ColorThemeEntry(Colors.COLORBLIND_ORANGE));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_7, new ColorThemeEntry(Colors.COLORBLIND_GRAY));\r\n\t\tcolors.put(ColorEntry.REPROCESSED_SELL, new ColorThemeEntry(Colors.COLORBLIND_YELLOW));\r\n\t\tcolors.put(ColorEntry.REPROCESSED_REPROCESS, new ColorThemeEntry(Colors.COLORBLIND_MAGENTA));\r\n\t\tcolors.put(ColorEntry.REPROCESSED_EQUAL, new ColorThemeEntry(Colors.COLORBLIND_GRAY));\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/ColorThemeDark.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.i18n.DataColors;\r\n\r\n\r\npublic class ColorThemeDark extends ColorTheme {\r\n\r\n\tprotected ColorThemeDark() { }\r\n\r\n\t@Override\r\n\tpublic String getName() {\r\n\t\treturn DataColors.get().colorThemeDark();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic ColorThemeTypes getType() {\r\n\t\treturn ColorThemeTypes.DARK;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void createColors(Map<ColorEntry, ColorThemeEntry> colors) {\r\n\t\tcolors.put(ColorEntry.ASSETS_NEW, new ColorThemeEntry(Colors.DARK_GREEN));\r\n\t\tcolors.put(ColorEntry.ASSETS_REPROCESSING_EQUAL, new ColorThemeEntry(Colors.DARK_YELLOW));\r\n\t\tcolors.put(ColorEntry.ASSETS_REPROCESSING_REPROCES, new ColorThemeEntry(Colors.DARK_RED));\r\n\t\tcolors.put(ColorEntry.ASSETS_REPROCESSING_SELL, new ColorThemeEntry(Colors.DARK_GREEN));\r\n\t\tcolors.put(ColorEntry.ASSETS_REPROCESS, new ColorThemeEntry(Colors.DARK_YELLOW));\r\n\t\tcolors.put(ColorEntry.CUSTOM_PRICE, new ColorThemeEntry(Colors.DARK_GRAY));\r\n\t\tcolors.put(ColorEntry.CUSTOM_ASSET_NAME, new ColorThemeEntry(Colors.DARK_GRAY));\r\n\t\tcolors.put(ColorEntry.CUSTOM_USER_LOCATION, new ColorThemeEntry(Colors.DARK_GRAY));\r\n\t\tcolors.put(ColorEntry.CONTRACTS_COURIER, new ColorThemeEntry(Colors.DARK_YELLOW));\r\n\t\tcolors.put(ColorEntry.CONTRACTS_INCLUDED, new ColorThemeEntry(Colors.DARK_GREEN));\r\n\t\tcolors.put(ColorEntry.CONTRACTS_EXCLUDED, new ColorThemeEntry(Colors.DARK_RED));\r\n\t\tcolors.put(ColorEntry.EXTRACTIONS_DAYS, new ColorThemeEntry(Colors.DARK_RED));\r\n\t\tcolors.put(ColorEntry.EXTRACTIONS_WEEK, new ColorThemeEntry(Colors.DARK_YELLOW));\r\n\t\tcolors.put(ColorEntry.EXTRACTIONS_WEEKS, new ColorThemeEntry(Colors.DARK_GREEN));\r\n\t\tcolors.put(ColorEntry.OVERVIEW_GROUPED_LOCATIONS, new ColorThemeEntry(Colors.DARK_GREEN));\r\n\t\tcolors.put(ColorEntry.STOCKPILE_TABLE_BELOW_THRESHOLD, new ColorThemeEntry(Colors.DARK_RED));\r\n\t\tcolors.put(ColorEntry.STOCKPILE_ICON_BELOW_THRESHOLD, new ColorThemeEntry(Colors.LIGHT_RED));\r\n\t\tcolors.put(ColorEntry.STOCKPILE_TABLE_BELOW_THRESHOLD_2ND, new ColorThemeEntry(Colors.DARK_YELLOW));\r\n\t\tcolors.put(ColorEntry.STOCKPILE_ICON_BELOW_THRESHOLD_2ND, new ColorThemeEntry(Colors.LIGHT_YELLOW));\r\n\t\tcolors.put(ColorEntry.STOCKPILE_TABLE_OVER_THRESHOLD, new ColorThemeEntry(Colors.DARK_GREEN));\r\n\t\tcolors.put(ColorEntry.STOCKPILE_ICON_OVER_THRESHOLD, new ColorThemeEntry(Colors.LIGHT_GREEN));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_OUTBID_NOT_BEST, new ColorThemeEntry(Colors.DARK_RED));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_OUTBID_NOT_BEST_OWNED, new ColorThemeEntry(Colors.DARK_ORANGE));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_OUTBID_BEST, new ColorThemeEntry(Colors.DARK_GREEN));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_OUTBID_UNKNOWN, new ColorThemeEntry(Colors.DARK_GRAY));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_EXPIRED, new ColorThemeEntry(Colors.DARK_RED));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_NEAR_EXPIRED, new ColorThemeEntry(Colors.DARK_YELLOW));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_NEAR_FILLED, new ColorThemeEntry(Colors.DARK_YELLOW));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_NEW, new ColorThemeEntry(Colors.DARK_GREEN));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_DELIVERED, new ColorThemeEntry(Colors.DARK_YELLOW));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_DONE, new ColorThemeEntry(Colors.DARK_GREEN));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_MANUFACTURING, new ColorThemeEntry(Colors.DARK_ORANGE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_RESEARCHING_TECHNOLOGY, new ColorThemeEntry(Colors.DARK_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_RESEARCHING_METERIAL_PRODUCTIVITY, new ColorThemeEntry(Colors.DARK_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_RESEARCHING_TIME_PRODUCTIVITY, new ColorThemeEntry(Colors.DARK_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_COPYING, new ColorThemeEntry(Colors.DARK_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_DUPLICATING, new ColorThemeEntry(Colors.DARK_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_REVERSE_ENGINEERING, new ColorThemeEntry(Colors.DARK_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_REVERSE_INVENTION, new ColorThemeEntry(Colors.DARK_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_REACTIONS, new ColorThemeEntry(Colors.DARK_GREEN));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_SLOTS_FREE, new ColorThemeEntry(Colors.DARK_GREEN));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_SLOTS_DONE, new ColorThemeEntry(Colors.DARK_YELLOW));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_SLOTS_FULL, new ColorThemeEntry(Colors.DARK_RED));\r\n\t\tcolors.put(ColorEntry.JOURNAL_NEW, new ColorThemeEntry(Colors.DARK_GREEN));\r\n\t\tcolors.put(ColorEntry.TRANSACTIONS_BOUGHT, new ColorThemeEntry(Colors.DARK_RED));\r\n\t\tcolors.put(ColorEntry.TRANSACTIONS_SOLD, new ColorThemeEntry(Colors.DARK_GREEN));\r\n\t\tcolors.put(ColorEntry.TRANSACTIONS_NEW, new ColorThemeEntry(Colors.DARK_GREEN));\r\n\t\tcolors.put(ColorEntry.NPC_STANDING_NEGATIVE, new ColorThemeEntry(Colors.DARK_RED));\r\n\t\tcolors.put(ColorEntry.NPC_STANDING_POSITIVE, new ColorThemeEntry(Colors.DARK_GREEN));\r\n\t\tcolors.put(ColorEntry.NPC_STANDING_NEGATIVE_MIDDLE, new ColorThemeEntry(Colors.DARK_YELLOW));\r\n\t\tcolors.put(ColorEntry.NPC_STANDING_POSITIVE_MIDDLE, new ColorThemeEntry(Colors.DARK_YELLOW));\r\n\t\tcolors.put(ColorEntry.GLOBAL_BPC, new ColorThemeEntry(Colors.DARK_MAGENTA));\r\n\t\tcolors.put(ColorEntry.GLOBAL_BPO, new ColorThemeEntry(Colors.DARK_YELLOW));\r\n\t\tcolors.put(ColorEntry.GLOBAL_VALUE_NEGATIVE, new ColorThemeEntry(null, Colors.DARK_FOREGROUND_RED));\r\n\t\tcolors.put(ColorEntry.GLOBAL_VALUE_POSITIVE, new ColorThemeEntry(null, Colors.DARK_FOREGROUND_GREEN));\r\n\t\tcolors.put(ColorEntry.GLOBAL_ENTRY_INVALID, new ColorThemeEntry(Colors.DARK_RED));\r\n\t\tcolors.put(ColorEntry.GLOBAL_ENTRY_WARNING, new ColorThemeEntry(Colors.DARK_YELLOW));\r\n\t\tcolors.put(ColorEntry.GLOBAL_ENTRY_VALID, new ColorThemeEntry(Colors.DARK_GREEN));\r\n\t\tcolors.put(ColorEntry.GLOBAL_GRAND_TOTAL, new ColorThemeEntry(Colors.DARK_GRAY));\r\n\t\tcolors.put(ColorEntry.GLOBAL_SELECTED_ROW_HIGHLIGHTING, new ColorThemeEntry(Colors.DARK_BLUE));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_1, new ColorThemeEntry(Colors.DARK_GRAY));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_2, new ColorThemeEntry(Colors.DARK_GREEN));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_3, new ColorThemeEntry(Colors.DARK_YELLOW));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_4, new ColorThemeEntry(Colors.DARK_ORANGE));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_5, new ColorThemeEntry(Colors.DARK_RED));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_6, new ColorThemeEntry(Colors.DARK_MAGENTA));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_7, new ColorThemeEntry(Colors.DARK_BLUE));\r\n\t\tcolors.put(ColorEntry.REPROCESSED_SELL, new ColorThemeEntry(Colors.DARK_GREEN));\r\n\t\tcolors.put(ColorEntry.REPROCESSED_REPROCESS, new ColorThemeEntry(Colors.DARK_RED));\r\n\t\tcolors.put(ColorEntry.REPROCESSED_EQUAL, new ColorThemeEntry(Colors.DARK_GRAY));\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/ColorThemeDefault.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.i18n.DataColors;\r\n\r\n\r\npublic class ColorThemeDefault extends ColorTheme {\r\n\r\n\tprotected ColorThemeDefault() { }\r\n\r\n\t@Override\r\n\tpublic String getName() {\r\n\t\treturn DataColors.get().colorThemeDefault();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic ColorThemeTypes getType() {\r\n\t\treturn ColorThemeTypes.DEFAULT;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void createColors(Map<ColorEntry, ColorThemeEntry> colors) {\r\n\t\tcolors.put(ColorEntry.ASSETS_NEW, new ColorThemeEntry(Colors.LIGHT_GREEN));\r\n\t\tcolors.put(ColorEntry.ASSETS_REPROCESSING_EQUAL, new ColorThemeEntry(Colors.LIGHT_YELLOW));\r\n\t\tcolors.put(ColorEntry.ASSETS_REPROCESSING_REPROCES, new ColorThemeEntry(Colors.LIGHT_RED));\r\n\t\tcolors.put(ColorEntry.ASSETS_REPROCESSING_SELL, new ColorThemeEntry(Colors.LIGHT_GREEN));\r\n\t\tcolors.put(ColorEntry.ASSETS_REPROCESS, new ColorThemeEntry(Colors.LIGHT_YELLOW));\r\n\t\tcolors.put(ColorEntry.CUSTOM_PRICE, new ColorThemeEntry(Colors.LIGHT_GRAY));\r\n\t\tcolors.put(ColorEntry.CUSTOM_ASSET_NAME, new ColorThemeEntry(Colors.LIGHT_GRAY));\r\n\t\tcolors.put(ColorEntry.CUSTOM_USER_LOCATION, new ColorThemeEntry(Colors.LIGHT_GRAY));\r\n\t\tcolors.put(ColorEntry.CONTRACTS_COURIER, new ColorThemeEntry(Colors.LIGHT_YELLOW));\r\n\t\tcolors.put(ColorEntry.CONTRACTS_INCLUDED, new ColorThemeEntry(Colors.LIGHT_GREEN));\r\n\t\tcolors.put(ColorEntry.CONTRACTS_EXCLUDED, new ColorThemeEntry(Colors.LIGHT_RED));\r\n\t\tcolors.put(ColorEntry.EXTRACTIONS_DAYS, new ColorThemeEntry(Colors.LIGHT_RED));\r\n\t\tcolors.put(ColorEntry.EXTRACTIONS_WEEK, new ColorThemeEntry(Colors.LIGHT_YELLOW));\r\n\t\tcolors.put(ColorEntry.EXTRACTIONS_WEEKS, new ColorThemeEntry(Colors.LIGHT_GREEN));\r\n\t\tcolors.put(ColorEntry.OVERVIEW_GROUPED_LOCATIONS, new ColorThemeEntry(Colors.LIGHT_GREEN));\r\n\t\tcolors.put(ColorEntry.STOCKPILE_TABLE_BELOW_THRESHOLD, new ColorThemeEntry(Colors.LIGHT_RED));\r\n\t\tcolors.put(ColorEntry.STOCKPILE_ICON_BELOW_THRESHOLD, new ColorThemeEntry(Colors.LIGHT_RED));\r\n\t\tcolors.put(ColorEntry.STOCKPILE_TABLE_BELOW_THRESHOLD_2ND, new ColorThemeEntry(Colors.LIGHT_YELLOW));\r\n\t\tcolors.put(ColorEntry.STOCKPILE_ICON_BELOW_THRESHOLD_2ND, new ColorThemeEntry(Colors.LIGHT_YELLOW));\r\n\t\tcolors.put(ColorEntry.STOCKPILE_TABLE_OVER_THRESHOLD, new ColorThemeEntry(Colors.LIGHT_GREEN));\r\n\t\tcolors.put(ColorEntry.STOCKPILE_ICON_OVER_THRESHOLD, new ColorThemeEntry(Colors.LIGHT_GREEN));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_OUTBID_NOT_BEST, new ColorThemeEntry(Colors.LIGHT_RED));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_OUTBID_NOT_BEST_OWNED, new ColorThemeEntry(Colors.LIGHT_ORANGE));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_OUTBID_BEST, new ColorThemeEntry(Colors.LIGHT_GREEN));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_OUTBID_UNKNOWN, new ColorThemeEntry(Colors.LIGHT_GRAY));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_EXPIRED, new ColorThemeEntry(Colors.LIGHT_RED));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_NEAR_EXPIRED, new ColorThemeEntry(Colors.LIGHT_YELLOW));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_NEAR_FILLED, new ColorThemeEntry(Colors.LIGHT_YELLOW));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_NEW, new ColorThemeEntry(Colors.LIGHT_GREEN));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_DELIVERED, new ColorThemeEntry(Colors.LIGHT_YELLOW));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_DONE, new ColorThemeEntry(Colors.LIGHT_GREEN));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_MANUFACTURING, new ColorThemeEntry(Colors.LIGHT_ORANGE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_RESEARCHING_TECHNOLOGY, new ColorThemeEntry(Colors.LIGHT_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_RESEARCHING_METERIAL_PRODUCTIVITY, new ColorThemeEntry(Colors.LIGHT_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_RESEARCHING_TIME_PRODUCTIVITY, new ColorThemeEntry(Colors.LIGHT_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_COPYING, new ColorThemeEntry(Colors.LIGHT_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_DUPLICATING, new ColorThemeEntry(Colors.LIGHT_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_REVERSE_ENGINEERING, new ColorThemeEntry(Colors.LIGHT_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_REVERSE_INVENTION, new ColorThemeEntry(Colors.LIGHT_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_REACTIONS, new ColorThemeEntry(Colors.LIGHT_GREEN));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_SLOTS_FREE, new ColorThemeEntry(Colors.LIGHT_GREEN));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_SLOTS_DONE, new ColorThemeEntry(Colors.LIGHT_YELLOW));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_SLOTS_FULL, new ColorThemeEntry(Colors.LIGHT_RED));\r\n\t\tcolors.put(ColorEntry.JOURNAL_NEW, new ColorThemeEntry(Colors.LIGHT_GREEN));\r\n\t\tcolors.put(ColorEntry.TRANSACTIONS_BOUGHT, new ColorThemeEntry(Colors.LIGHT_RED));\r\n\t\tcolors.put(ColorEntry.TRANSACTIONS_SOLD, new ColorThemeEntry(Colors.LIGHT_GREEN));\r\n\t\tcolors.put(ColorEntry.TRANSACTIONS_NEW, new ColorThemeEntry(Colors.LIGHT_GREEN));\r\n\t\tcolors.put(ColorEntry.NPC_STANDING_NEGATIVE, new ColorThemeEntry(Colors.LIGHT_RED));\r\n\t\tcolors.put(ColorEntry.NPC_STANDING_POSITIVE, new ColorThemeEntry(Colors.LIGHT_GREEN));\r\n\t\tcolors.put(ColorEntry.NPC_STANDING_NEGATIVE_MIDDLE, new ColorThemeEntry(Colors.LIGHT_YELLOW));\r\n\t\tcolors.put(ColorEntry.NPC_STANDING_POSITIVE_MIDDLE, new ColorThemeEntry(Colors.LIGHT_YELLOW));\r\n\t\tcolors.put(ColorEntry.GLOBAL_BPC, new ColorThemeEntry(Colors.LIGHT_MAGENTA));\r\n\t\tcolors.put(ColorEntry.GLOBAL_BPO, new ColorThemeEntry(Colors.LIGHT_YELLOW));\r\n\t\tcolors.put(ColorEntry.GLOBAL_VALUE_NEGATIVE, new ColorThemeEntry(null, Colors.FOREGROUND_RED));\r\n\t\tcolors.put(ColorEntry.GLOBAL_VALUE_POSITIVE, new ColorThemeEntry(null, Colors.FOREGROUND_GREEN));\r\n\t\tcolors.put(ColorEntry.GLOBAL_ENTRY_INVALID, new ColorThemeEntry(Colors.LIGHT_RED));\r\n\t\tcolors.put(ColorEntry.GLOBAL_ENTRY_WARNING, new ColorThemeEntry(Colors.LIGHT_YELLOW));\r\n\t\tcolors.put(ColorEntry.GLOBAL_ENTRY_VALID, new ColorThemeEntry(Colors.LIGHT_GREEN));\r\n\t\tcolors.put(ColorEntry.GLOBAL_GRAND_TOTAL, new ColorThemeEntry(Colors.LIGHT_GRAY));\r\n\t\tcolors.put(ColorEntry.GLOBAL_SELECTED_ROW_HIGHLIGHTING, new ColorThemeEntry(Colors.LIGHT_BLUE));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_1, new ColorThemeEntry(Colors.LIGHT_GRAY));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_2, new ColorThemeEntry(Colors.LIGHT_GREEN));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_3, new ColorThemeEntry(Colors.LIGHT_YELLOW));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_4, new ColorThemeEntry(Colors.LIGHT_ORANGE));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_5, new ColorThemeEntry(Colors.LIGHT_RED));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_6, new ColorThemeEntry(Colors.LIGHT_MAGENTA));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_7, new ColorThemeEntry(Colors.LIGHT_BLUE));\r\n\t\tcolors.put(ColorEntry.REPROCESSED_SELL, new ColorThemeEntry(Colors.LIGHT_GREEN));\r\n\t\tcolors.put(ColorEntry.REPROCESSED_REPROCESS, new ColorThemeEntry(Colors.LIGHT_RED));\r\n\t\tcolors.put(ColorEntry.REPROCESSED_EQUAL, new ColorThemeEntry(Colors.LIGHT_GRAY));\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/ColorThemeStrong.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.i18n.DataColors;\r\n\r\n\r\npublic class ColorThemeStrong extends ColorTheme {\r\n\r\n\tprotected ColorThemeStrong() {}\r\n\r\n\t@Override\r\n\tpublic String getName() {\r\n\t\treturn DataColors.get().colorThemeStrong();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic ColorThemeTypes getType() {\r\n\t\treturn ColorThemeTypes.STRONG;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void createColors(Map<ColorEntry, ColorThemeEntry> colors) {\r\n\t\tcolors.put(ColorEntry.ASSETS_NEW, new ColorThemeEntry(Colors.STRONG_GREEN));\r\n\t\tcolors.put(ColorEntry.ASSETS_REPROCESSING_EQUAL, new ColorThemeEntry(Colors.STRONG_YELLOW));\r\n\t\tcolors.put(ColorEntry.ASSETS_REPROCESSING_REPROCES, new ColorThemeEntry(Colors.STRONG_RED));\r\n\t\tcolors.put(ColorEntry.ASSETS_REPROCESSING_SELL, new ColorThemeEntry(Colors.STRONG_GREEN));\r\n\t\tcolors.put(ColorEntry.ASSETS_REPROCESS, new ColorThemeEntry(Colors.STRONG_YELLOW));\r\n\t\tcolors.put(ColorEntry.CUSTOM_PRICE, new ColorThemeEntry(Colors.STRONG_GRAY));\r\n\t\tcolors.put(ColorEntry.CUSTOM_ASSET_NAME, new ColorThemeEntry(Colors.STRONG_GRAY));\r\n\t\tcolors.put(ColorEntry.CUSTOM_USER_LOCATION, new ColorThemeEntry(Colors.STRONG_GRAY));\r\n\t\tcolors.put(ColorEntry.CONTRACTS_COURIER, new ColorThemeEntry(Colors.STRONG_YELLOW));\r\n\t\tcolors.put(ColorEntry.CONTRACTS_INCLUDED, new ColorThemeEntry(Colors.STRONG_GREEN));\r\n\t\tcolors.put(ColorEntry.CONTRACTS_EXCLUDED, new ColorThemeEntry(Colors.STRONG_RED));\r\n\t\tcolors.put(ColorEntry.EXTRACTIONS_DAYS, new ColorThemeEntry(Colors.STRONG_RED));\r\n\t\tcolors.put(ColorEntry.EXTRACTIONS_WEEK, new ColorThemeEntry(Colors.STRONG_YELLOW));\r\n\t\tcolors.put(ColorEntry.EXTRACTIONS_WEEKS, new ColorThemeEntry(Colors.STRONG_GREEN));\r\n\t\tcolors.put(ColorEntry.OVERVIEW_GROUPED_LOCATIONS, new ColorThemeEntry(Colors.STRONG_GREEN));\r\n\t\tcolors.put(ColorEntry.STOCKPILE_TABLE_BELOW_THRESHOLD, new ColorThemeEntry(Colors.STRONG_RED));\r\n\t\tcolors.put(ColorEntry.STOCKPILE_ICON_BELOW_THRESHOLD, new ColorThemeEntry(Colors.STRONG_RED));\r\n\t\tcolors.put(ColorEntry.STOCKPILE_TABLE_BELOW_THRESHOLD_2ND, new ColorThemeEntry(Colors.STRONG_YELLOW));\r\n\t\tcolors.put(ColorEntry.STOCKPILE_ICON_BELOW_THRESHOLD_2ND, new ColorThemeEntry(Colors.STRONG_YELLOW));\r\n\t\tcolors.put(ColorEntry.STOCKPILE_TABLE_OVER_THRESHOLD, new ColorThemeEntry(Colors.STRONG_GREEN));\r\n\t\tcolors.put(ColorEntry.STOCKPILE_ICON_OVER_THRESHOLD, new ColorThemeEntry(Colors.STRONG_GREEN));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_OUTBID_NOT_BEST, new ColorThemeEntry(Colors.STRONG_RED));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_OUTBID_NOT_BEST_OWNED, new ColorThemeEntry(Colors.STRONG_ORANGE));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_OUTBID_BEST, new ColorThemeEntry(Colors.STRONG_GREEN));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_OUTBID_UNKNOWN, new ColorThemeEntry(Colors.STRONG_GRAY));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_EXPIRED, new ColorThemeEntry(Colors.STRONG_RED));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_NEAR_EXPIRED, new ColorThemeEntry(Colors.STRONG_YELLOW));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_NEAR_FILLED, new ColorThemeEntry(Colors.STRONG_YELLOW));\r\n\t\tcolors.put(ColorEntry.MARKET_ORDERS_NEW, new ColorThemeEntry(Colors.STRONG_GREEN));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_DELIVERED, new ColorThemeEntry(Colors.STRONG_YELLOW));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_DONE, new ColorThemeEntry(Colors.STRONG_GREEN));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_MANUFACTURING, new ColorThemeEntry(Colors.STRONG_ORANGE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_RESEARCHING_TECHNOLOGY, new ColorThemeEntry(Colors.STRONG_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_RESEARCHING_METERIAL_PRODUCTIVITY, new ColorThemeEntry(Colors.STRONG_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_RESEARCHING_TIME_PRODUCTIVITY, new ColorThemeEntry(Colors.STRONG_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_COPYING, new ColorThemeEntry(Colors.STRONG_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_DUPLICATING, new ColorThemeEntry(Colors.STRONG_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_REVERSE_ENGINEERING, new ColorThemeEntry(Colors.STRONG_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_REVERSE_INVENTION, new ColorThemeEntry(Colors.STRONG_BLUE));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_JOBS_ACTIVITY_REACTIONS, new ColorThemeEntry(Colors.STRONG_GREEN));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_SLOTS_FREE, new ColorThemeEntry(Colors.STRONG_GREEN));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_SLOTS_DONE, new ColorThemeEntry(Colors.STRONG_YELLOW));\r\n\t\tcolors.put(ColorEntry.INDUSTRY_SLOTS_FULL, new ColorThemeEntry(Colors.STRONG_RED));\r\n\t\tcolors.put(ColorEntry.JOURNAL_NEW, new ColorThemeEntry(Colors.STRONG_GREEN));\r\n\t\tcolors.put(ColorEntry.TRANSACTIONS_BOUGHT, new ColorThemeEntry(Colors.STRONG_RED));\r\n\t\tcolors.put(ColorEntry.TRANSACTIONS_SOLD, new ColorThemeEntry(Colors.STRONG_GREEN));\r\n\t\tcolors.put(ColorEntry.TRANSACTIONS_NEW, new ColorThemeEntry(Colors.STRONG_GREEN));\r\n\t\tcolors.put(ColorEntry.NPC_STANDING_NEGATIVE, new ColorThemeEntry(Colors.STRONG_RED));\r\n\t\tcolors.put(ColorEntry.NPC_STANDING_POSITIVE, new ColorThemeEntry(Colors.STRONG_GREEN));\r\n\t\tcolors.put(ColorEntry.NPC_STANDING_NEGATIVE_MIDDLE, new ColorThemeEntry(Colors.STRONG_YELLOW));\r\n\t\tcolors.put(ColorEntry.NPC_STANDING_POSITIVE_MIDDLE, new ColorThemeEntry(Colors.STRONG_YELLOW));\r\n\t\tcolors.put(ColorEntry.GLOBAL_BPC, new ColorThemeEntry(Colors.STRONG_MAGENTA));\r\n\t\tcolors.put(ColorEntry.GLOBAL_BPO, new ColorThemeEntry(Colors.STRONG_YELLOW));\r\n\t\tcolors.put(ColorEntry.GLOBAL_VALUE_NEGATIVE, new ColorThemeEntry(null, Colors.FOREGROUND_RED));\r\n\t\tcolors.put(ColorEntry.GLOBAL_VALUE_POSITIVE, new ColorThemeEntry(null, Colors.FOREGROUND_GREEN));\r\n\t\tcolors.put(ColorEntry.GLOBAL_ENTRY_INVALID, new ColorThemeEntry(Colors.STRONG_RED));\r\n\t\tcolors.put(ColorEntry.GLOBAL_ENTRY_WARNING, new ColorThemeEntry(Colors.STRONG_YELLOW));\r\n\t\tcolors.put(ColorEntry.GLOBAL_ENTRY_VALID, new ColorThemeEntry(Colors.STRONG_GREEN));\r\n\t\tcolors.put(ColorEntry.GLOBAL_GRAND_TOTAL, new ColorThemeEntry(Colors.STRONG_GRAY));\r\n\t\tcolors.put(ColorEntry.GLOBAL_SELECTED_ROW_HIGHLIGHTING, new ColorThemeEntry(Colors.STRONG_BLUE));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_1, new ColorThemeEntry(Colors.STRONG_GRAY));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_2, new ColorThemeEntry(Colors.STRONG_GREEN));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_3, new ColorThemeEntry(Colors.STRONG_YELLOW));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_4, new ColorThemeEntry(Colors.STRONG_ORANGE));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_5, new ColorThemeEntry(Colors.STRONG_RED));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_6, new ColorThemeEntry(Colors.STRONG_MAGENTA));\r\n\t\tcolors.put(ColorEntry.FILTER_OR_GROUP_7, new ColorThemeEntry(Colors.STRONG_BLUE));\r\n\t\tcolors.put(ColorEntry.REPROCESSED_SELL, new ColorThemeEntry(Colors.STRONG_GREEN));\r\n\t\tcolors.put(ColorEntry.REPROCESSED_REPROCESS, new ColorThemeEntry(Colors.STRONG_RED));\r\n\t\tcolors.put(ColorEntry.REPROCESSED_EQUAL, new ColorThemeEntry(Colors.STRONG_GRAY));\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/Colors.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.data.settings;\n\nimport java.awt.Color;\nimport javax.swing.JButton;\nimport javax.swing.JPanel;\nimport javax.swing.JTable;\nimport javax.swing.JTextField;\nimport javax.swing.UIManager;\n\npublic enum Colors {\n\t/**\n\t * 230, 230, 230\n\t */\n\tLIGHT_GRAY(230, 230, 230),\n\t/**\n\t * 190, 190, 190\n\t */\n\tSTRONG_GRAY(190, 190, 190),\n\t/**\n\t * 190, 190, 190\n\t */\n\tCOLORBLIND_GRAY(190, 190, 190),\n\t/**\n\t * 81, 81, 81\n\t */\n\tDARK_GRAY(81, 81, 81),\n\t/**\n\t * 255, 200, 200\n\t */\n\tLIGHT_RED(255, 200, 200),\n\t/**\n\t * 255, 160, 160\n\t */\n\tSTRONG_RED(255, 160, 160),\n\t/**\n\t * Dark Red\n\t */\n\tFOREGROUND_RED(Color.RED.darker()),\n\t/**\n\t * Dark Red\n\t */\n\tDARK_FOREGROUND_RED(239, 143, 143),\n\t/**\n\t * 120, 45, 30\n\t */\n\tDARK_RED(120, 45, 30),\n\t/**\n\t * 213, 94, 0\n\t */\n\tCOLORBLIND_FOREGROUND_RED(213, 94, 0),\n\t/**\n\t * 200, 255, 200\n\t */\n\tLIGHT_GREEN(200, 255, 200),\n\t/**\n\t * 160, 255, 160\n\t */\n\tSTRONG_GREEN(160, 255, 160),\n\t/**\n\t * 0, 158, 115\n\t */\n\tCOLORBLIND_GREEN(0, 158, 115),\n\t/**\n\t * Dark Green\n\t */\n\tFOREGROUND_GREEN(Color.GREEN.darker()),\n\t/**\n\t * 22, 153, 0\n\t */\n\tDARK_FOREGROUND_GREEN(152, 229, 152),\n\t/**\n\t * 45, 67, 34\n\t */\n\tDARK_GREEN(45, 67, 34),\n\t/**\n\t * 0, 114, 178 (not really green, it's blue)\n\t */\n\tCOLORBLIND_FOREGROUND_GREEN(0, 114, 178),\n\t/**\n\t * 255, 255, 200\n\t */\n\tLIGHT_YELLOW(255, 255, 200),\n\t/**\n\t * 255, 255, 160\n\t */\n\tSTRONG_YELLOW(255, 255, 160),\n\t/**\n\t * 255, 176, 0\n\t */\n\tCOLORBLIND_YELLOW(240, 228, 66),\n\t/**\n\t * 132, 103, 14\n\t */\n\tDARK_YELLOW(132, 103, 14),\n\t/**\n\t * 220, 240, 255\n\t */\n\tLIGHT_BLUE(220, 240, 255),\n\t/**\n\t * 180, 220, 255\n\t */\n\tSTRONG_BLUE(180, 220, 255),\n\t/**\n\t * 86, 106, 143\n\t */\n\tDARK_BLUE(86, 106, 143),\n\t/**\n\t * 100, 143, 255\n\t */\n\tCOLORBLIND_BLUE(86, 180, 233),\n\t/**\n\t * 255, 220, 200\n\t */\n\tLIGHT_ORANGE(255, 220, 200),\n\t/**\n\t * 255, 180, 120\n\t */\n\tSTRONG_ORANGE(255, 180, 120),\n\t/**\n\t * 254, 97, 0\n\t */\n\tCOLORBLIND_ORANGE(230, 159, 0),\n\t/**\n\t * 114, 77, 38\n\t */\n\tDARK_ORANGE(114, 77, 38),\n\t/**\n\t * 255, 220, 255\n\t */\n\tLIGHT_MAGENTA(255, 220, 255),\n\t/**\n\t * 255, 180, 255\n\t */\n\tSTRONG_MAGENTA(255, 180, 255),\n\t/**\n\t * 220, 38, 127\n\t */\n\tCOLORBLIND_MAGENTA(204, 121, 167),\n\t/**\n\t * 77, 50, 64\n\t */\n\tDARK_MAGENTA(77, 50, 64),\n\t/**\n\t * Table selection background\n\t */\n\tTABLE_SELECTION_BACKGROUND(\"Table.selectionBackground\") {\n\t\t@Override\n\t\tpublic Color getComponentColor() {\n\t\t\treturn new JTable().getSelectionBackground();\n\t\t}\n\t},\n\t/**\n\t * Table selection foreground\n\t */\n\tTABLE_SELECTION_FOREGROUND(\"Table.selectionForeground\") {\n\t\t@Override\n\t\tpublic Color getComponentColor() {\n\t\t\treturn new JTable().getSelectionForeground();\n\t\t}\n\t},\n\t/**\n\t * TextField background\n\t */\n\tTEXTFIELD_BACKGROUND(\"TextField.background\") {\n\t\t@Override\n\t\tpublic Color getComponentColor() {\n\t\t\treturn new JTextField().getBackground();\n\t\t}\n\t},\n\t/**\n\t * TextField foreground\n\t */\n\tTEXTFIELD_FOREGROUND(\"TextField.foreground\") {\n\t\t@Override\n\t\tpublic Color getComponentColor() {\n\t\t\treturn new JTextField().getForeground();\n\t\t}\n\t},\n\t/**\n\t * Component background\n\t */\n\tCOMPONENT_BACKGROUND(\"Panel.background\") {\n\t\t@Override\n\t\tpublic Color getComponentColor() {\n\t\t\treturn new JPanel().getBackground();\n\t\t}\n\t},\n\t/**\n\t * Transparent component background\n\t */\n\tCOMPONENT_TRANSPARENT(\"Panel.background\", 0) {\n\t\t@Override\n\t\tpublic Color getComponentColor() {\n\t\t\treturn new JPanel().getBackground();\n\t\t}\n\t},\n\t/**\n\t * Component foreground\n\t */\n\tCOMPONENT_FOREGROUND(\"Panel.foreground\") {\n\t\t@Override\n\t\tpublic Color getComponentColor() {\n\t\t\treturn new JPanel().getForeground();\n\t\t}\n\t},\n\t/**\n\t * Component background\n\t */\n\tBUTTON_BACKGROUND(\"Button.background\") {\n\t\t@Override\n\t\tpublic Color getComponentColor() {\n\t\t\treturn new JButton().getBackground();\n\t\t}\n\t},\n\t/**\n\t * Component foreground\n\t */\n\tBUTTON_FOREGROUND(\"Button.foreground\") {\n\t\t@Override\n\t\tpublic Color getComponentColor() {\n\t\t\treturn new JButton().getForeground();\n\t\t}\n\t},\n\t;\n\n\tprivate final Color color;\n\tprivate final String key;\n\tprivate final Integer alpha;\n\n\tprivate Colors(String key) {\n\t\tthis(key, null);\n\t}\n\n\tprivate Colors(String key, Integer alpha) {\n\t\tthis.color = null;\n\t\tthis.key = key;\n\t\tthis.alpha = alpha;\n\t}\n\n\tprivate Colors(Color color) {\n\t\tthis.color = color;\n\t\tthis.key = null;\n\t\tthis.alpha = null;\n\t}\n\n\tprivate Colors(int r, int g, int b) {\n\t\tthis.color = new Color(r, g, b);\n\t\tthis.key = null;\n\t\tthis.alpha = null;\n\t}\n\n\tpublic Color getColor() {\n\t\tif (alpha != null) {\n\t\t\tColor c = getColorWithoutAlpha();\n\t\t\treturn new Color(c.getRed(), c.getGreen(), c.getBlue(), alpha);\n\t\t} else {\n\t\t\treturn getColorWithoutAlpha();\n\t\t}\n\t}\n\n\tprivate Color getColorWithoutAlpha() {\n\t\tif (color != null) {\n\t\t\treturn color;\n\t\t}\n\t\tif (key != null) {\n\t\t\tColor ui = UIManager.getColor(key);\n\t\t\tif (ui != null) {\n\t\t\t\treturn ui;\n\t\t\t}\n\t\t}\n\t\tColor component = getComponentColor();\n\t\tif (component != null) {\n\t\t\treturn component;\n\t\t} else {\n\t\t\tthrow new RuntimeException(name() + \" have no valid color\");\n\t\t}\n\t}\n\n\tpublic Color getComponentColor() {\n\t\treturn null;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/CopySettings.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.data.settings;\n\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings.DecimalSeparator;\n\n\npublic class CopySettings {\n\n\t//Copy\n\tprivate DecimalSeparator copyDecimalSeparator;\n\n\tpublic CopySettings() {\n\t\tcopyDecimalSeparator = DecimalSeparator.DOT;\n\t}\n\n\tpublic DecimalSeparator getCopyDecimalSeparator() {\n\t\treturn copyDecimalSeparator;\n\t}\n\n\tpublic void setCopyDecimalSeparator(DecimalSeparator copyDecimalSeparator) {\n\t\tthis.copyDecimalSeparator = copyDecimalSeparator;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/DarkNimbus.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport java.awt.Color;\r\nimport javax.swing.UIDefaults;\r\nimport javax.swing.plaf.nimbus.NimbusLookAndFeel;\r\n\r\n\r\npublic class DarkNimbus extends NimbusLookAndFeel {\r\n\r\n\tprivate UIDefaults defaults;\r\n\r\n\t@Override\r\n\tpublic UIDefaults getDefaults() {\r\n\t\tif (defaults == null) {\r\n\t\t\tdefaults = super.getDefaults();\r\n\t\t\tdefaults.put(\"control\", new Color(128, 128, 128));\r\n\t\t\tdefaults.put(\"info\", new Color(128, 128, 128));\r\n\t\t\tdefaults.put(\"nimbusBase\", new Color(18, 30, 49));\r\n\t\t\tdefaults.put(\"nimbusAlertYellow\", new Color(248, 187, 0));\r\n\t\t\tdefaults.put(\"nimbusDisabledText\", new Color(128, 128, 128));\r\n\t\t\tdefaults.put(\"nimbusFocus\", new Color(115, 164, 209));\r\n\t\t\tdefaults.put(\"nimbusGreen\", new Color(176, 179, 50));\r\n\t\t\tdefaults.put(\"nimbusInfoBlue\", new Color(66, 139, 221));\r\n\t\t\tdefaults.put(\"nimbusLightBackground\", new Color(18, 30, 49));\r\n\t\t\tdefaults.put(\"nimbusOrange\", new Color(191, 98, 4));\r\n\t\t\tdefaults.put(\"nimbusRed\", new Color(169, 46, 34));\r\n\t\t\tdefaults.put(\"nimbusSelectedText\", new Color(255, 255, 255));\r\n\t\t\tdefaults.put(\"nimbusSelectionBackground\", new Color(104, 93, 156));\r\n\t\t\tdefaults.put(\"text\", new Color(230, 230, 230));\r\n\t\t}\r\n\t\treturn defaults;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/ExportSettings.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.data.settings;\n\nimport java.io.File;\nimport java.util.ArrayList;\nimport java.util.List;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.i18n.DialoguesExport;\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\n\n\npublic class ExportSettings {\n\n\tpublic enum FieldDelimiter {\n\t\tCOMMA(',') {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DialoguesExport.get().comma();\n\t\t\t}\n\t\t},\n\t\tSEMICOLON(';') {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DialoguesExport.get().semicolon();\n\t\t\t}\n\t\t};\n\t\tprivate final char character;\n\t\tprivate FieldDelimiter(final char character) {\n\t\t\tthis.character = character;\n\t\t}\n\t\tpublic char getValue() {\n\t\t\treturn character;\n\t\t}\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\treturn getI18N();\n\t\t}\n\t\tabstract String getI18N();\n\t}\n\n\tpublic enum LineDelimiter {\n\t\tDOS(\"\\r\\n\") {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DialoguesExport.get().lineEndingsWindows();\n\t\t\t}\n\t\t},\n\t\tUNIX(\"\\n\") {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DialoguesExport.get().lineEndingsUnix();\n\t\t\t}\n\t\t},\n\t\tMAC(\"\\r\") {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DialoguesExport.get().lineEndingsMac();\n\t\t\t}\n\t\t};\n\t\tprivate final String string;\n\t\tprivate LineDelimiter(final String string) {\n\t\t\tthis.string = string;\n\t\t}\n\t\tpublic String getValue() {\n\t\t\treturn string;\n\t\t}\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\treturn getI18N();\n\t\t}\n\t\tabstract String getI18N();\n\t}\n\n\tpublic enum DecimalSeparator {\n\t\tDOT(FieldDelimiter.COMMA) {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DialoguesExport.get().dot();\n\t\t\t}\n\t\t},\n\t\tCOMMA(FieldDelimiter.SEMICOLON) {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DialoguesExport.get().comma();\n\t\t\t}\n\t\t};\n\n\t\tprivate final FieldDelimiter fieldDelimiter;\n\n\t\tprivate DecimalSeparator(FieldDelimiter fieldDelimiter) {\n\t\t\tthis.fieldDelimiter = fieldDelimiter;\n\t\t}\n\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\treturn getI18N();\n\t\t}\n\n\t\tpublic FieldDelimiter getFieldDelimiter() {\n\t\t\treturn fieldDelimiter;\n\t\t}\n\n\t\tabstract String getI18N();\n\t}\n\n\tpublic enum ExportFormat {\n\t\tCSV(\"csv\"),\n\t\tSQL(\"sql\"),\n\t\tHTML(\"html\");\n\n\t\tprivate final String extension;\n\n\t\tprivate ExportFormat(String extension) {\n\t\t\tthis.extension = extension;\n\t\t}\n\n\t\tpublic String getExtension() {\n\t\t\treturn extension;\n\t\t}\n\t}\n\n\t/***\n\t * Enum that contains the options for column selection in column jcombobox.\n\t */\n\tpublic enum ColumnSelection {\n\t\tSHOWN(\"shown\"),\n\t\tSAVED(\"saved\"),\n\t\tSELECTED(\"selected\");\n\n\t\tprivate final String selection;\n\n\t\tprivate ColumnSelection(String selection) {\n\t\t\tthis.selection = selection;\n\t\t}\n\n\t\tpublic String getSelection() {\n\t\t\treturn selection;\n\t\t}\n\t}\n\n\t/***\n\t * Enum that contains the options for filter selection in filter jcombobox.\n\t */\n\tpublic enum FilterSelection {\n\t\tNONE(\"none\"),\n\t\tCURRENT(\"current\"),\n\t\tSAVED(\"saved\");\n\n\t\tprivate final String selection;\n\n\t\tprivate FilterSelection(String selection) {\n\t\t\tthis.selection = selection;\n\t\t}\n\n\t\tpublic String getSelection() {\n\t\t\treturn selection;\n\t\t}\n\t}\n\n\tprivate static final String PATH = FileUtil.getUserDirectory();\n\n\t//Common\n\tprivate final String toolName;\n\tprivate final List<String> tableExportColumns = new ArrayList<>();\n\tprivate String fileName;\n\tprivate ExportFormat exportFormat;\n\tprivate FilterSelection filterSelection;\n\tprivate ColumnSelection columnSelection;\n\tprivate String filterName;\n\tprivate String viewName;\n\tprivate DecimalSeparator decimalSeparator;\n\n\t//CLI\n\tprivate boolean formulas;\n\tprivate boolean jumps;\n\n\t//CSV\n\tprivate LineDelimiter csvLineDelimiter;\n\n\t//SQL\n\tprivate boolean sqlCreateTable;\n\tprivate boolean sqlDropTable;\n\tprivate boolean sqlExtendedInserts;\n\tprivate String sqlTableName;\n\n\t//HTML\n\tprivate boolean htmlStyled;\n\tprivate int htmlRepeatHeader;\n\tprivate boolean htmlIGB;\n\n\tpublic ExportSettings(String toolName) {\n\t\tthis.toolName = toolName;\n\t\tfileName = \"\";\n\t\texportFormat = ExportFormat.CSV;\n\t\tfilterSelection = FilterSelection.NONE;\n\t\tcolumnSelection = ColumnSelection.SHOWN;\n\t\tfilterName = \"\";\n\t\tviewName = \"\";\n\t\tdecimalSeparator = DecimalSeparator.DOT; //CSV & HTML\n\n\t\tformulas = false;\n\t\tjumps = false;\n\n\t\tcsvLineDelimiter = LineDelimiter.DOS;\n\n\t\tsqlCreateTable = true;\n\t\tsqlDropTable = true;\n\t\tsqlExtendedInserts = true;\n\t\tsqlTableName = \"\";\n\n\t\thtmlStyled = true;\n\t\thtmlRepeatHeader = 0;\n\t\thtmlIGB = false;\n\t}\n\n\tpublic boolean isCsv() {\n\t\treturn exportFormat == ExportFormat.CSV;\n\t}\n\n\tpublic DecimalSeparator getDecimalSeparator() {\n\t\treturn decimalSeparator;\n\t}\n\n\tpublic void setDecimalSeparator(final DecimalSeparator decimalSeparator) {\n\t\tthis.decimalSeparator = decimalSeparator;\n\t}\n\n\tpublic FieldDelimiter getCsvFieldDelimiter() {\n\t\treturn decimalSeparator.getFieldDelimiter();\n\t}\n\n\tpublic LineDelimiter getCsvLineDelimiter() {\n\t\treturn csvLineDelimiter;\n\t}\n\n\tpublic void setCsvLineDelimiter(final LineDelimiter csvLineDelimiter) {\n\t\tthis.csvLineDelimiter = csvLineDelimiter;\n\t}\n\n\tpublic boolean isSql() {\n\t\treturn exportFormat == ExportFormat.SQL;\n\t}\n\n\tpublic boolean isSqlCreateTable() {\n\t\treturn sqlCreateTable;\n\t}\n\n\tpublic void setSqlCreateTable(final boolean sqlCreateTable) {\n\t\tthis.sqlCreateTable = sqlCreateTable;\n\t}\n\n\tpublic boolean isSqlDropTable() {\n\t\treturn sqlDropTable;\n\t}\n\n\tpublic void setSqlDropTable(final boolean sqlDropTable) {\n\t\tthis.sqlDropTable = sqlDropTable;\n\t}\n\n\tpublic boolean isSqlExtendedInserts() {\n\t\treturn sqlExtendedInserts;\n\t}\n\n\tpublic void setSqlExtendedInserts(final boolean sqlExtendedInserts) {\n\t\tthis.sqlExtendedInserts = sqlExtendedInserts;\n\t}\n\n\tpublic String getSqlTableName() {\n\t\tif (sqlTableName.isEmpty()) { //Ensure never empty\n\t\t\treturn getDefaultTableName(toolName);\n\t\t}\n\t\treturn sqlTableName;\n\t}\n\n\tpublic void setSqlTableName(String sqlTableName) {\n\t\tthis.sqlTableName = sqlTableName;\n\t}\n\n\tpublic boolean isHtml() {\n\t\treturn exportFormat == ExportFormat.HTML;\n\t}\n\n\tpublic boolean isHtmlStyled() {\n\t\treturn htmlStyled;\n\t}\n\n\tpublic void setHtmlStyled(boolean htmlStyled) {\n\t\tthis.htmlStyled = htmlStyled;\n\t}\n\n\tpublic int getHtmlRepeatHeader() {\n\t\treturn htmlRepeatHeader;\n\t}\n\n\tpublic void setHtmlRepeatHeader(int htmlRepeatHeader) {\n\t\tthis.htmlRepeatHeader = htmlRepeatHeader;\n\t}\n\n\tpublic boolean isHtmlIGB() {\n\t\treturn htmlIGB;\n\t}\n\n\tpublic void setHtmlIGB(boolean htmlIGB) {\n\t\tthis.htmlIGB = htmlIGB;\n\t}\n\n\tpublic ExportFormat getExportFormat() {\n\t\treturn exportFormat;\n\t}\n\n\tpublic void setExportFormat(ExportFormat exportFormat) {\n\t\tthis.exportFormat = exportFormat;\n\t}\n\n\tpublic FilterSelection getFilterSelection() {\n\t\treturn filterSelection;\n\t}\n\n\tpublic void setFilterSelection(FilterSelection filterSelection) {\n\t\tthis.filterSelection = filterSelection;\n\t}\n\n\tpublic ColumnSelection getColumnSelection() {\n\t\treturn columnSelection;\n\t}\n\n\tpublic void setColumnSelection(ColumnSelection columnSelection) {\n\t\tthis.columnSelection = columnSelection;\n\t}\n\n\tpublic String getFilterName() {\n\t\treturn filterName;\n\t}\n\n\tpublic void setFilterName(String filterName) {\n\t\tthis.filterName = filterName;\n\t}\n\n\tpublic String getViewName() {\n\t\treturn viewName;\n\t}\n\n\tpublic void setViewName(String viewName) {\n\t\tthis.viewName = viewName;\n\t}\n\n\tpublic boolean isFormulas() {\n\t\treturn formulas;\n\t}\n\n\tpublic void setFormulas(boolean formulas) {\n\t\tthis.formulas = formulas;\n\t}\n\n\tpublic boolean isJumps() {\n\t\treturn jumps;\n\t}\n\n\tpublic void setJumps(boolean jumps) {\n\t\tthis.jumps = jumps;\n\t}\n\n\tpublic String getFilename() {\n\t\tif(this.fileName != null && !this.fileName.isEmpty()) {\n\t\t\treturn this.fileName;\n\t\t}\n\t\treturn getDefaultFilename();\n\t}\n\n\tpublic String getPath() {\n\t\tString pathname = getFilename();\n\t\tint end = pathname.lastIndexOf(File.separator);\n\t\tif (end >= 0) {\n\t\t\treturn pathname.substring(0, end + 1);\n\t\t} else {\n\t\t\treturn getDefaultPath();\n\t\t}\n\t}\n\n\tpublic void setFilename(final String fileName) {\n\t\tthis.fileName = fileName;\n\t}\n\n\tpublic List<String> getTableExportColumns() {\n\t\treturn tableExportColumns;\n\t}\n\n\tpublic void putTableExportColumns(final List<String> selectedColumns) {\n\t\t\ttableExportColumns.clear();\n\t\t\tif (selectedColumns != null) {\n\t\t\t\ttableExportColumns.addAll(selectedColumns);\n\t\t\t}\n\t}\n\n\tpublic String getDefaultPath() {\n\t\treturn PATH;\n\t}\n\n\tpublic String getDefaultFilename() {\n\t\treturn PATH + this.toolName + \"_export.\" + exportFormat.getExtension();\n\t}\n\n\tpublic static String getDefaultTableName(String toolName) {\n\t\treturn Program.PROGRAM_NAME.toLowerCase() + \"_\" + toolName.toLowerCase();\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/ManufacturingSettings.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\nimport java.util.concurrent.TimeUnit;\r\nimport static net.nikr.eve.jeveasset.data.settings.Settings.getNow;\r\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\r\n\r\n\r\npublic class ManufacturingSettings {\r\n\r\n\tpublic static enum ManufacturingFacility {\r\n\t\tSTATION(0,0) {\r\n\t\t\t@Override\r\n\t\t\tpublic String getText() {\r\n\t\t\t\treturn DialoguesSettings.get().manufacturingFacilityStation();\r\n\t\t\t}\r\n\t\t},\r\n\t\tENGINEERING_COMPLEX_MEDIUM(1, 3){\r\n\t\t\t@Override\r\n\t\t\tpublic String getText() {\r\n\t\t\t\treturn DialoguesSettings.get().manufacturingFacilityMedium();\r\n\t\t\t}\r\n\t\t},\r\n\t\tENGINEERING_COMPLEX_LARGE(1, 4){\r\n\t\t\t@Override\r\n\t\t\tpublic String getText() {\r\n\t\t\t\treturn DialoguesSettings.get().manufacturingFacilityLarge();\r\n\t\t\t}\r\n\t\t},\r\n\t\tENGINEERING_COMPLEX_XLARGE(1, 5){\r\n\t\t\t@Override\r\n\t\t\tpublic String getText() {\r\n\t\t\t\treturn DialoguesSettings.get().manufacturingFacilityXLarge();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprivate final double materialBonus;\r\n\t\tprivate final double feeBonus;\r\n\r\n\t\tprivate ManufacturingFacility(double materialBonus, double feeBonus) {\r\n\t\t\tthis.materialBonus = materialBonus;\r\n\t\t\tthis.feeBonus = feeBonus;\r\n\t\t}\r\n\r\n\t\tpublic abstract String getText();\r\n\r\n\t\t@Override\r\n\t\tpublic String toString() {\r\n\t\t\treturn getText();\r\n\t\t}\r\n\r\n\t\tpublic double getMaterialBonus() {\r\n\t\t\treturn materialBonus;\r\n\t\t}\r\n\r\n\t\tpublic double getFeeBonus() {\r\n\t\t\treturn feeBonus;\r\n\t\t}\r\n\r\n\t\tpublic static ManufacturingFacility getDefault() {\r\n\t\t\treturn ENGINEERING_COMPLEX_MEDIUM;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static enum ManufacturingRigs {\r\n\t\tNONE(0) {\r\n\t\t\t@Override\r\n\t\t\tpublic String getText() {\r\n\t\t\t\treturn DialoguesSettings.get().manufacturingRigsNone();\r\n\t\t\t}\r\n\t\t},\r\n\t\tT1(2.0) {\r\n\t\t\t@Override\r\n\t\t\tpublic String getText() {\r\n\t\t\t\treturn DialoguesSettings.get().manufacturingRigsT1();\r\n\t\t\t}\r\n\t\t},\r\n\t\tT2(2.40) {\r\n\t\t\t@Override\r\n\t\t\tpublic String getText() {\r\n\t\t\t\treturn DialoguesSettings.get().manufacturingRigsT2();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprivate final double materialBonus;\r\n\r\n\t\tprivate ManufacturingRigs(double materialBonus) {\r\n\t\t\tthis.materialBonus = materialBonus;\r\n\t\t}\r\n\r\n\t\tpublic abstract String getText();\r\n\r\n\t\t@Override\r\n\t\tpublic String toString() {\r\n\t\t\treturn getText();\r\n\t\t\t//return getText() + \" (\" + materialBonus + \"%)\";\r\n\t\t}\r\n\r\n\t\tpublic double getMaterialBonus() {\r\n\t\t\treturn materialBonus;\r\n\t\t}\r\n\r\n\t\tpublic static ManufacturingRigs getDefault() {\r\n\t\t\treturn NONE;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static enum ReactionRigs {\r\n\t\tNONE(0) {\r\n\t\t\t@Override\r\n\t\t\tpublic String getText() {\r\n\t\t\t\treturn DialoguesSettings.get().manufacturingRigsNone();\r\n\t\t\t}\r\n\t\t},\r\n\t\tT1(2.0) {\r\n\t\t\t@Override\r\n\t\t\tpublic String getText() {\r\n\t\t\t\treturn DialoguesSettings.get().manufacturingRigsT1();\r\n\t\t\t}\r\n\t\t},\r\n\t\tT2(2.40) {\r\n\t\t\t@Override\r\n\t\t\tpublic String getText() {\r\n\t\t\t\treturn DialoguesSettings.get().manufacturingRigsT2();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprivate final double materialBonus;\r\n\r\n\t\tprivate ReactionRigs(double materialBonus) {\r\n\t\t\tthis.materialBonus = materialBonus;\r\n\t\t}\r\n\r\n\t\tpublic abstract String getText();\r\n\r\n\t\t@Override\r\n\t\tpublic String toString() {\r\n\t\t\treturn getText();\r\n\t\t\t//return getText() + \" (\" + materialBonus + \"%)\";\r\n\t\t}\r\n\r\n\t\tpublic double getMaterialBonus() {\r\n\t\t\treturn materialBonus;\r\n\t\t}\r\n\r\n\t\tpublic static ReactionRigs getDefault() {\r\n\t\t\treturn NONE;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static enum ManufacturingSecurity {\r\n\t\tHIGHSEC(1) {\r\n\t\t\t@Override\r\n\t\t\tpublic String getText() {\r\n\t\t\t\treturn DialoguesSettings.get().manufacturingSecurityHighSec();\r\n\t\t\t}\r\n\t\t},\r\n\t\tLOWSEC(1.9) {\r\n\t\t\t@Override\r\n\t\t\tpublic String getText() {\r\n\t\t\t\treturn DialoguesSettings.get().manufacturingSecurityLowSec();\r\n\t\t\t}\r\n\t\t},\r\n\t\tNULLSEC(2.1) {\r\n\t\t\t@Override\r\n\t\t\tpublic String getText() {\r\n\t\t\t\treturn DialoguesSettings.get().manufacturingSecurityNullSec();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprivate final double rigBonus;\r\n\r\n\t\tprivate ManufacturingSecurity(double rigBonus) {\r\n\t\t\tthis.rigBonus = rigBonus;\r\n\t\t}\r\n\r\n\t\tpublic abstract String getText();\r\n\r\n\t\tpublic double getRigBonus() {\r\n\t\t\treturn rigBonus;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic String toString() {\r\n\t\t\treturn getText();\r\n\t\t\t//return getText() + \" (\" + rigBonus + \"%)\";\r\n\t\t}\r\n\r\n\t\tpublic static ManufacturingSecurity getDefault() {\r\n\t\t\treturn HIGHSEC;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static enum ReactionSecurity {\r\n\t\tLOWSEC(1.0) {\r\n\t\t\t@Override\r\n\t\t\tpublic String getText() {\r\n\t\t\t\treturn DialoguesSettings.get().manufacturingSecurityLowSec();\r\n\t\t\t}\r\n\t\t},\r\n\t\tNULLSEC(1.1) {\r\n\t\t\t@Override\r\n\t\t\tpublic String getText() {\r\n\t\t\t\treturn DialoguesSettings.get().manufacturingSecurityNullSec();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprivate final double rigBonus;\r\n\r\n\t\tprivate ReactionSecurity(double rigBonus) {\r\n\t\t\tthis.rigBonus = rigBonus;\r\n\t\t}\r\n\r\n\t\tpublic abstract String getText();\r\n\r\n\t\tpublic double getRigBonus() {\r\n\t\t\treturn rigBonus;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic String toString() {\r\n\t\t\treturn getText();\r\n\t\t\t//return getText() + \" (\" + rigBonus + \"%)\";\r\n\t\t}\r\n\r\n\t\tpublic static ReactionSecurity getDefault() {\r\n\t\t\treturn LOWSEC;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Map<Integer, Double> prices = new HashMap<>(); //Adjusted Prices\r\n\tprivate Map<Integer, Float> systems = new HashMap<>(); //System Indexs\r\n\tprivate Date nextUpdate = getNow();\r\n\t//Defaults\r\n\tprivate int systemID = 30000142; //Jita for now\r\n\tprivate int materialEfficiency = 0;\r\n\tprivate ManufacturingFacility facility = ManufacturingFacility.getDefault();\r\n\tprivate ManufacturingRigs rigs = ManufacturingRigs.getDefault();\r\n\tprivate ManufacturingSecurity security = ManufacturingSecurity.getDefault();\r\n\tprivate double tax = 0;\r\n\r\n\tpublic Map<Integer, Double> getPrices() {\r\n\t\treturn prices;\r\n\t}\r\n\r\n\tpublic void setPrices(Map<Integer, Double> prices) {\r\n\t\tthis.prices = prices;\r\n\t}\r\n\r\n\tpublic Map<Integer, Float> getSystems() {\r\n\t\treturn systems;\r\n\t}\r\n\r\n\tpublic void setSystems(Map<Integer, Float> systems) {\r\n\t\tthis.systems = systems;\r\n\t}\r\n\r\n\tpublic Date getNextUpdate() {\r\n\t\treturn nextUpdate;\r\n\t}\r\n\r\n\tpublic boolean isSystemsNeedsUpdating() {\r\n\t\treturn systems.isEmpty() \r\n\t\t\t\t|| Settings.getNow().after(new Date(nextUpdate.getTime() + TimeUnit.HOURS.toMillis(23))); //Last updated 1 day ago\r\n\t}\r\n\r\n\tpublic void setNextUpdate(Date nextUpdate) {\r\n\t\tthis.nextUpdate = nextUpdate;\r\n\t}\r\n\r\n\tpublic int getSystemID() {\r\n\t\treturn systemID;\r\n\t}\r\n\r\n\tpublic void setSystemID(int systemID) {\r\n\t\tthis.systemID = systemID;\r\n\t}\r\n\r\n\tpublic int getMaterialEfficiency() {\r\n\t\treturn materialEfficiency;\r\n\t}\r\n\r\n\tpublic void setMaterialEfficiency(int materialEfficiency) {\r\n\t\tthis.materialEfficiency = materialEfficiency;\r\n\t}\r\n\r\n\tpublic ManufacturingFacility getFacility() {\r\n\t\treturn facility;\r\n\t}\r\n\r\n\tpublic void setFacility(ManufacturingFacility facility) {\r\n\t\tthis.facility = facility;\r\n\t}\r\n\r\n\tpublic ManufacturingRigs getRigs() {\r\n\t\treturn rigs;\r\n\t}\r\n\r\n\tpublic void setRigs(ManufacturingRigs rigs) {\r\n\t\tthis.rigs = rigs;\r\n\t}\r\n\r\n\tpublic ManufacturingSecurity getSecurity() {\r\n\t\treturn security;\r\n\t}\r\n\r\n\tpublic void setSecurity(ManufacturingSecurity security) {\r\n\t\tthis.security = security;\r\n\t}\r\n\r\n\tpublic double getTax() {\r\n\t\treturn tax;\r\n\t}\r\n\r\n\tpublic void setTax(double tax) {\r\n\t\tthis.tax = tax;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/MarketOrdersSettings.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\npublic class MarketOrdersSettings {\r\n\r\n\tprivate int expireWarnDays = 1; //Default, one day\r\n\tprivate int remainingWarnPercent = 10; //Default, 10 percent\r\n\r\n\tpublic MarketOrdersSettings() { }\r\n\r\n\tpublic int getExpireWarnDays() {\r\n\t\treturn expireWarnDays;\r\n\t}\r\n\r\n\tpublic void setExpireWarnDays(int expireWarnDays) {\r\n\t\tthis.expireWarnDays = expireWarnDays;\r\n\t}\r\n\r\n\tpublic int getRemainingWarnPercent() {\r\n\t\treturn remainingWarnPercent;\r\n\t}\r\n\r\n\tpublic void setRemainingWarnPercent(int remainingWarnPercent) {\r\n\t\tthis.remainingWarnPercent = remainingWarnPercent;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/MarketPriceData.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport java.util.Date;\r\n\r\n\r\npublic class MarketPriceData {\r\n\r\n\tprivate Date latestDate = null;\r\n\tprivate double latest = 0;\r\n\tprivate double maximum = 0;\r\n\tprivate double minimum = -1;\r\n\tprivate double total = 0;\r\n\tprivate double count = 0;\r\n\r\n\tpublic MarketPriceData() { }\r\n\r\n\tpublic void update(final double price, final double count, final Date date) {\r\n\t\t//Max\r\n\t\tif (price > maximum) {\r\n\t\t\tthis.maximum = price;\r\n\t\t}\r\n\t\t//Min\r\n\t\tif (price < minimum || minimum < 0) {\r\n\t\t\tthis.minimum = price;\r\n\t\t}\r\n\t\t//Average\r\n\t\tthis.total = total + (price * count);\r\n\t\tthis.count = this.count + count;\r\n\t\t//Latest\r\n\t\tif (latestDate == null || latestDate.before(date)) {\r\n\t\t\tlatest = price;\r\n\t\t\tlatestDate = date;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic double getLatest() {\r\n\t\treturn latest;\r\n\t}\r\n\r\n\tpublic double getMaximum() {\r\n\t\treturn maximum;\r\n\t}\r\n\r\n\tpublic double getMinimum() {\r\n\t\tif (minimum < 0) {\r\n\t\t\treturn 0;\r\n\t\t} else {\r\n\t\t\treturn minimum;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic double getAverage() {\r\n\t\tif (total > 0 && count > 0) {\r\n\t\t\treturn total / count;\r\n\t\t} else {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static double getAverage(MarketPriceData buy, MarketPriceData sell) {\r\n\t\tdouble total = buy.total + sell.total;\r\n\t\tdouble count = buy.count + sell.count;\r\n\t\tif (total > 0 && count > 0) {\r\n\t\t\treturn total / count;\r\n\t\t} else {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/PriceData.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.data.settings;\n\n\npublic class PriceData {\n\n\tpublic static PriceData EMPTY = new PriceData();\n\n\tprivate double sellMax = 0;\n\tprivate double sellAvg = 0;\n\tprivate double sellMedian = 0;\n\tprivate double sellPercentile = 0;\n\tprivate double sellMin = 0;\n\tprivate double buyMax = 0;\n\tprivate double buyAvg = 0;\n\tprivate double buyMedian = 0;\n\tprivate double buyPercentile = 0;\n\tprivate double buyMin = 0;\n\n\tpublic PriceData() { }\n\n\tpublic double getBuyAvg() {\n\t\treturn buyAvg;\n\t}\n\n\tpublic void setBuyAvg(final double buyAvg) {\n\t\tthis.buyAvg = buyAvg;\n\t}\n\n\tpublic double getBuyMax() {\n\t\treturn buyMax;\n\t}\n\n\tpublic void setBuyMax(final double buyMax) {\n\t\tthis.buyMax = buyMax;\n\t}\n\n\tpublic double getBuyMedian() {\n\t\treturn buyMedian;\n\t}\n\n\tpublic void setBuyMedian(final double buyMedian) {\n\t\tthis.buyMedian = buyMedian;\n\t}\n\n\tpublic double getBuyMin() {\n\t\treturn buyMin;\n\t}\n\n\tpublic void setBuyMin(final double buyMin) {\n\t\tthis.buyMin = buyMin;\n\t}\n\n\tpublic double getSellAvg() {\n\t\treturn sellAvg;\n\t}\n\n\tpublic void setSellAvg(final double sellAvg) {\n\t\tthis.sellAvg = sellAvg;\n\t}\n\n\tpublic double getSellMax() {\n\t\treturn sellMax;\n\t}\n\n\tpublic void setSellMax(final double sellMax) {\n\t\tthis.sellMax = sellMax;\n\t}\n\n\tpublic double getSellMedian() {\n\t\treturn sellMedian;\n\t}\n\n\tpublic void setSellMedian(final double sellMedian) {\n\t\tthis.sellMedian = sellMedian;\n\t}\n\n\tpublic double getSellMin() {\n\t\treturn sellMin;\n\t}\n\n\tpublic double getBuyPercentile() {\n\t\treturn buyPercentile;\n\t}\n\n\tpublic void setBuyPercentile(final double buyPercentile) {\n\t\tthis.buyPercentile = buyPercentile;\n\t}\n\n\tpublic double getSellPercentile() {\n\t\treturn sellPercentile;\n\t}\n\n\tpublic void setSellPercentile(final double sellPercentile) {\n\t\tthis.sellPercentile = sellPercentile;\n\t}\n\n\tpublic void setSellMin(final double sellMin) {\n\t\tthis.sellMin = sellMin;\n\t}\n\n\tpublic boolean isEmpty() {\n\t\treturn !(sellMax > 0\n\t\t\t\t|| sellAvg > 0\n\t\t\t\t|| sellMedian > 0\n\t\t\t\t|| sellPercentile > 0\n\t\t\t\t|| sellMin > 0\n\t\t\t\t|| buyMax > 0\n\t\t\t\t|| buyAvg > 0\n\t\t\t\t|| buyMedian > 0\n\t\t\t\t|| buyPercentile > 0\n\t\t\t\t|| buyMin > 0\n\t\t\t\t);\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\treturn \"sellMax : \" + sellMax\n\t\t\t\t+ \" sellAvg: \" + sellAvg\n\t\t\t\t+ \" sellMedian: \" + sellMedian\n\t\t\t\t+ \" sellPercentile: \" + sellPercentile\n\t\t\t\t+ \" sellMin: \" + sellMin\n\t\t\t\t+ \" buyMax: \" + buyMax\n\t\t\t\t+ \" buyAvg: \" + buyAvg\n\t\t\t\t+ \" buyMedian: \" + buyMedian\n\t\t\t\t+ \" buyPercentile: \" + buyPercentile\n\t\t\t\t+ \" buyMin: \" + buyMin;\n\t}\n\n\t@Override\n\tpublic int hashCode() {\n\t\tint hash = 7;\n\t\thash = 37 * hash + (int) (Double.doubleToLongBits(this.sellMax) ^ (Double.doubleToLongBits(this.sellMax) >>> 32));\n\t\thash = 37 * hash + (int) (Double.doubleToLongBits(this.sellAvg) ^ (Double.doubleToLongBits(this.sellAvg) >>> 32));\n\t\thash = 37 * hash + (int) (Double.doubleToLongBits(this.sellMedian) ^ (Double.doubleToLongBits(this.sellMedian) >>> 32));\n\t\thash = 37 * hash + (int) (Double.doubleToLongBits(this.sellPercentile) ^ (Double.doubleToLongBits(this.sellPercentile) >>> 32));\n\t\thash = 37 * hash + (int) (Double.doubleToLongBits(this.sellMin) ^ (Double.doubleToLongBits(this.sellMin) >>> 32));\n\t\thash = 37 * hash + (int) (Double.doubleToLongBits(this.buyMax) ^ (Double.doubleToLongBits(this.buyMax) >>> 32));\n\t\thash = 37 * hash + (int) (Double.doubleToLongBits(this.buyAvg) ^ (Double.doubleToLongBits(this.buyAvg) >>> 32));\n\t\thash = 37 * hash + (int) (Double.doubleToLongBits(this.buyMedian) ^ (Double.doubleToLongBits(this.buyMedian) >>> 32));\n\t\thash = 37 * hash + (int) (Double.doubleToLongBits(this.buyPercentile) ^ (Double.doubleToLongBits(this.buyPercentile) >>> 32));\n\t\thash = 37 * hash + (int) (Double.doubleToLongBits(this.buyMin) ^ (Double.doubleToLongBits(this.buyMin) >>> 32));\n\t\treturn hash;\n\t}\n\n\t@Override\n\tpublic boolean equals(Object obj) {\n\t\tif (this == obj) {\n\t\t\treturn true;\n\t\t}\n\t\tif (obj == null) {\n\t\t\treturn false;\n\t\t}\n\t\tif (getClass() != obj.getClass()) {\n\t\t\treturn false;\n\t\t}\n\t\tfinal PriceData other = (PriceData) obj;\n\t\tif (Double.doubleToLongBits(this.sellMax) != Double.doubleToLongBits(other.sellMax)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (Double.doubleToLongBits(this.sellAvg) != Double.doubleToLongBits(other.sellAvg)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (Double.doubleToLongBits(this.sellMedian) != Double.doubleToLongBits(other.sellMedian)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (Double.doubleToLongBits(this.sellPercentile) != Double.doubleToLongBits(other.sellPercentile)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (Double.doubleToLongBits(this.sellMin) != Double.doubleToLongBits(other.sellMin)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (Double.doubleToLongBits(this.buyMax) != Double.doubleToLongBits(other.buyMax)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (Double.doubleToLongBits(this.buyAvg) != Double.doubleToLongBits(other.buyAvg)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (Double.doubleToLongBits(this.buyMedian) != Double.doubleToLongBits(other.buyMedian)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (Double.doubleToLongBits(this.buyPercentile) != Double.doubleToLongBits(other.buyPercentile)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn Double.doubleToLongBits(this.buyMin) == Double.doubleToLongBits(other.buyMin);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/PriceDataSettings.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.data.settings;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Objects;\nimport javax.swing.Icon;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.i18n.DataModelPriceDataSettings;\nimport uk.me.candle.eve.pricing.impl.Janice.JaniceLocation;\nimport uk.me.candle.eve.pricing.options.LocationType;\nimport uk.me.candle.eve.pricing.options.PriceType;\nimport uk.me.candle.eve.pricing.options.PricingFetch;\n\n\npublic class PriceDataSettings {\n\n\tpublic enum PriceSource {\n\t\tFUZZWORK(PricingFetch.FUZZWORK, LocationType.REGION, 10000002L, Images.LINK_FUZZWORK.getIcon()) {\n\t\t\t@Override String getI18N() {\n\t\t\t\treturn DataModelPriceDataSettings.get().sourceFuzzwork();\n\t\t\t}\n\t\t},\n\t\t/*\n\t\tEVE_TYCOON(PricingFetch.EVE_TYCOON, LocationType.REGION, 10000002L, Images.LINK_EVE_TYCOON.getIcon()) {\n\t\t\t@Override String getI18N() {\n\t\t\t\treturn DataModelPriceDataSettings.get().sourceEveTycoon();\n\t\t\t}\n\t\t},\n\t\t*/\n\t\tJANICE(PricingFetch.JANICE, LocationType.STATION, JaniceLocation.JITA_4_4.getPriceLocation().getLocationID(), Images.LINK_JANICE.getIcon()) {\n\t\t\t@Override String getI18N() {\n\t\t\t\treturn DataModelPriceDataSettings.get().sourceJanice();\n\t\t\t}\n\t\t},\n\t\t;\n\t\tprivate final PricingFetch pricingFetch;\n\t\tprivate final LocationType defaultLocationType;\n\t\tprivate final Long defaultLocationID;\n\t\tprivate final Icon icon;\n\n\t\tprivate PriceSource(final PricingFetch pricingFetch,\n\t\t\t\tfinal LocationType defaultLocationType,\n\t\t\t\tfinal Long defaultLocationID,\n\t\t\t\tfinal Icon icon) {\n\t\t\tthis.pricingFetch = pricingFetch;\n\t\t\tthis.defaultLocationType = defaultLocationType;\n\t\t\tthis.defaultLocationID = defaultLocationID;\n\t\t\tthis.icon = icon;\n\t\t}\n\n\t\tabstract String getI18N();\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\treturn getI18N();\n\t\t}\n\n\t\tpublic List<PriceMode> getSupportedPriceModes() {\n\t\t\tList<PriceMode> priceModes = new ArrayList<>();\n\t\t\tfor (PriceMode priceMode : PriceMode.values()) {\n\t\t\t\tif (pricingFetch.getSupportedPricingTypes().contains(priceMode.getPricingType())) {\n\t\t\t\t\tpriceModes.add(priceMode);\n\t\t\t\t} else if (priceMode == PriceMode.PRICE_MIDPOINT\n\t\t\t\t\t\t&& pricingFetch.getSupportedPricingTypes().contains(PriceType.SELL_LOW)\n\t\t\t\t\t\t&& pricingFetch.getSupportedPricingTypes().contains(PriceType.BUY_HIGH)\n\t\t\t\t\t\t) {\n\t\t\t\t\tpriceModes.add(priceMode);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn priceModes;\n\t\t}\n\n\t\tpublic LocationType getDefaultLocationType() {\n\t\t\treturn defaultLocationType;\n\t\t}\n\n\t\tpublic Long getDefaultLocationID() {\n\t\t\treturn defaultLocationID;\n\t\t}\n\n\t\tpublic PricingFetch getPricingFetch() {\n\t\t\treturn pricingFetch;\n\t\t}\n\n\t\tpublic boolean supportRegions() {\n\t\t\treturn pricingFetch.getSupportedLocationTypes().contains(LocationType.REGION);\n\t\t}\n\n\t\tpublic boolean supportStations() {\n\t\t\treturn pricingFetch.getSupportedLocationTypes().contains(LocationType.STATION);\n\t\t}\n\n\t\tpublic boolean supportSystems() {\n\t\t\treturn pricingFetch.getSupportedLocationTypes().contains(LocationType.SYSTEM);\n\t\t}\n\n\t\tpublic Icon getIcon() {\n\t\t\treturn icon;\n\t\t}\n\n\t\tpublic boolean isValid(LocationType locationType, Long locationID) {\n\t\t\tif (null != locationType && locationID != null) {\n\t\t\t\tif (this == JANICE && !JaniceLocation.isValid(locationID)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tswitch (locationType) {\n\t\t\t\t\tcase REGION:\n\t\t\t\t\t\treturn supportRegions();\n\t\t\t\t\tcase SYSTEM:\n\t\t\t\t\t\treturn supportSystems();\n\t\t\t\t\tcase STATION:\n\t\t\t\t\t\treturn supportStations();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false; //Should never happen\n\t\t}\n\t}\n\n\tpublic enum PriceMode {\n\t\tPRICE_SELL_MAX(PriceType.SELL_HIGH) {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DataModelPriceDataSettings.get().priceSellMax();\n\t\t\t}\n\t\t},\n\t\tPRICE_SELL_AVG(PriceType.SELL_MEAN) {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DataModelPriceDataSettings.get().priceSellAvg();\n\t\t\t}\n\t\t},\n\t\tPRICE_SELL_MEDIAN(PriceType.SELL_MEDIAN) {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DataModelPriceDataSettings.get().priceSellMedian();\n\t\t\t}\n\t\t},\n\t\tPRICE_SELL_PERCENTILE(PriceType.SELL_PERCENTILE) {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DataModelPriceDataSettings.get().priceSellPercentile();\n\t\t\t}\n\t\t},\n\t\tPRICE_SELL_MIN(PriceType.SELL_LOW) {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DataModelPriceDataSettings.get().priceSellMin();\n\t\t\t}\n\t\t},\n\t\tPRICE_MIDPOINT(null) {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DataModelPriceDataSettings.get().priceMidpoint();\n\t\t\t}\n\t\t},\n\t\tPRICE_BUY_MAX(PriceType.BUY_HIGH) {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DataModelPriceDataSettings.get().priceBuyMax();\n\t\t\t}\n\t\t},\n\t\tPRICE_BUY_PERCENTILE(PriceType.BUY_PERCENTILE) {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DataModelPriceDataSettings.get().priceBuyPercentile();\n\t\t\t}\n\t\t},\n\t\tPRICE_BUY_AVG(PriceType.BUY_MEAN) {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DataModelPriceDataSettings.get().priceBuyAvg();\n\t\t\t}\n\t\t},\n\t\tPRICE_BUY_MEDIAN(PriceType.BUY_MEDIAN) {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DataModelPriceDataSettings.get().priceBuyMedian();\n\t\t\t}\n\t\t},\n\t\tPRICE_BUY_MIN(PriceType.BUY_LOW) {\n\t\t\t@Override\n\t\t\tString getI18N() {\n\t\t\t\treturn DataModelPriceDataSettings.get().priceBuyMin();\n\t\t\t}\n\t\t};\n\t\tabstract String getI18N();\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\treturn getI18N();\n\t\t}\n\n\t\tPriceType priceType;\n\n\t\tprivate PriceMode(PriceType priceType) {\n\t\t\tthis.priceType = priceType;\n\t\t}\n\n\t\tpublic PriceType getPricingType() {\n\t\t\treturn priceType;\n\t\t}\n\n\t\tpublic static void setDefaultPrice(final PriceData priceData, final PriceMode priceMode, final double price) {\n\t\t\tif (priceData != null) {\n\t\t\t\tif (priceMode == PriceMode.PRICE_SELL_MAX) {\n\t\t\t\t\tpriceData.setSellMax(price);\n\t\t\t\t}\n\t\t\t\tif (priceMode == PriceMode.PRICE_SELL_AVG) {\n\t\t\t\t\tpriceData.setSellAvg(price);\n\t\t\t\t}\n\t\t\t\tif (priceMode == PriceMode.PRICE_SELL_MEDIAN) {\n\t\t\t\t\tpriceData.setSellMedian(price);\n\t\t\t\t}\n\t\t\t\tif (priceMode == PriceMode.PRICE_SELL_PERCENTILE) {\n\t\t\t\t\tpriceData.setSellPercentile(price);\n\t\t\t\t}\n\t\t\t\tif (priceMode == PriceMode.PRICE_SELL_MIN) {\n\t\t\t\t\tpriceData.setSellMin(price);\n\t\t\t\t}\n\t\t\t\tif (priceMode == PriceMode.PRICE_MIDPOINT) {\n\t\t\t\t\t//Ignore calculated prices\n\t\t\t\t}\n\t\t\t\tif (priceMode == PriceMode.PRICE_BUY_MAX) {\n\t\t\t\t\tpriceData.setBuyMax(price);\n\t\t\t\t}\n\t\t\t\tif (priceMode == PriceMode.PRICE_BUY_AVG) {\n\t\t\t\t\tpriceData.setBuyAvg(price);\n\t\t\t\t}\n\t\t\t\tif (priceMode == PriceMode.PRICE_BUY_MEDIAN) {\n\t\t\t\t\tpriceData.setBuyMedian(price);\n\t\t\t\t}\n\t\t\t\tif (priceMode == PriceMode.PRICE_BUY_PERCENTILE) {\n\t\t\t\t\tpriceData.setBuyPercentile(price);\n\t\t\t\t}\n\t\t\t\tif (priceMode == PriceMode.PRICE_BUY_MIN) {\n\t\t\t\t\tpriceData.setBuyMin(price);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic static double getDefaultPrice(final PriceData priceData, final PriceMode priceMode) {\n\t\t\tif (priceData != null) {\n\t\t\t\tif (priceMode == PriceMode.PRICE_SELL_MAX) {\n\t\t\t\t\treturn priceData.getSellMax();\n\t\t\t\t}\n\t\t\t\tif (priceMode == PriceMode.PRICE_SELL_AVG) {\n\t\t\t\t\treturn priceData.getSellAvg();\n\t\t\t\t}\n\t\t\t\tif (priceMode == PriceMode.PRICE_SELL_MEDIAN) {\n\t\t\t\t\treturn priceData.getSellMedian();\n\t\t\t\t}\n\t\t\t\tif (priceMode == PriceMode.PRICE_SELL_PERCENTILE) {\n\t\t\t\t\treturn priceData.getSellPercentile();\n\t\t\t\t}\n\t\t\t\tif (priceMode == PriceMode.PRICE_SELL_MIN) {\n\t\t\t\t\treturn priceData.getSellMin();\n\t\t\t\t}\n\t\t\t\tif (priceMode == PriceMode.PRICE_MIDPOINT) {\n\t\t\t\t\tif (priceData.getSellMin() > 0 && priceData.getBuyMax() > 0) { //Working as intended\n\t\t\t\t\t\treturn (priceData.getSellMin() + priceData.getBuyMax()) / 2;\n\t\t\t\t\t} else if (priceData.getBuyMax() > 0) { //Using BuyMax (fallback)\n\t\t\t\t\t\treturn priceData.getBuyMax();\n\t\t\t\t\t} else { //Using SellMin (fallback)\n\t\t\t\t\t\treturn priceData.getSellMin(); //SellMin or Zero\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (priceMode == PriceMode.PRICE_BUY_MAX) {\n\t\t\t\t\treturn priceData.getBuyMax();\n\t\t\t\t}\n\t\t\t\tif (priceMode == PriceMode.PRICE_BUY_AVG) {\n\t\t\t\t\treturn priceData.getBuyAvg();\n\t\t\t\t}\n\t\t\t\tif (priceMode == PriceMode.PRICE_BUY_MEDIAN) {\n\t\t\t\t\treturn priceData.getBuyMedian();\n\t\t\t\t}\n\t\t\t\tif (priceMode == PriceMode.PRICE_BUY_PERCENTILE) {\n\t\t\t\t\treturn priceData.getBuyPercentile();\n\t\t\t\t}\n\t\t\t\tif (priceMode == PriceMode.PRICE_BUY_MIN) {\n\t\t\t\t\treturn priceData.getBuyMin();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\n\t\tpublic static PriceMode getDefaultPriceType() {\n\t\t\treturn PriceMode.PRICE_MIDPOINT;\n\t\t}\n\t}\n\n\t//Default\n\tprivate final LocationType locationType;\n\tprivate final Long locationID;\n\tprivate final PriceSource priceSource;\n\tprivate PriceMode priceType;\n\tprivate PriceMode priceReprocessedType;\n\tprivate PriceMode priceManufacturingType;\n\tprivate String janiceKey;\n\n\tpublic PriceDataSettings() {\n\t\tlocationType = LocationType.REGION;\n\t\tlocationID = getDefaultLocationID();\n\t\tpriceSource = getDefaultPriceSource();\n\t\tpriceType = PriceMode.getDefaultPriceType();\n\t\tpriceReprocessedType = PriceMode.getDefaultPriceType();\n\t\tpriceManufacturingType = PriceMode.getDefaultPriceType();\n\t}\n\n\tpublic PriceDataSettings(final LocationType locationType, final Long locationID, final PriceSource priceSource, final PriceMode priceType, final PriceMode priceReprocessedType, final PriceMode priceManufacturingType, final String janiceKey) {\n\t\tif (locationType != null && locationID != null) {\n\t\t\tthis.locationType = locationType;\n\t\t\tthis.locationID = locationID;\n\t\t} else {\n\t\t\tthis.locationType = LocationType.REGION;\n\t\t\tthis.locationID = getDefaultLocationID();\n\t\t}\n\t\tthis.priceSource = priceSource;\n\t\tthis.priceType = priceType;\n\t\tthis.priceReprocessedType = priceReprocessedType;\n\t\tthis.priceManufacturingType = priceManufacturingType;\n\t\tif (janiceKey == null) { //empty string instead of null\n\t\t\tthis.janiceKey = \"\";\n\t\t} else {\n\t\t\tthis.janiceKey = janiceKey;\n\t\t}\n\t}\n\n\tpublic PriceSource getSource() {\n\t\treturn priceSource;\n\t}\n\n\tpublic Long getLocationID() {\n\t\treturn locationID;\n\t}\n\n\tpublic LocationType getLocationType() {\n\t\treturn locationType;\n\t}\n\n\tpublic double getDefaultPrice(final PriceData priceData) {\n\t\treturn PriceMode.getDefaultPrice(priceData, priceType);\n\t}\n\n\tpublic double getDefaultPriceReprocessed(final PriceData priceData) {\n\t\treturn PriceMode.getDefaultPrice(priceData, priceReprocessedType);\n\t}\n\n\tpublic double getDefaultPriceManufacturing(final PriceData priceData) {\n\t\treturn PriceMode.getDefaultPrice(priceData, priceManufacturingType);\n\t}\n\n\tpublic static Long getDefaultLocationID() {\n\t\treturn 10000002L;\n\t}\n\n\tpublic static PriceSource getDefaultPriceSource() {\n\t\treturn PriceSource.FUZZWORK;\n\t}\n\n\tpublic void setPriceType(final PriceMode priceSource) {\n\t\tthis.priceType = priceSource;\n\t}\n\n\tpublic void setPriceReprocessedType(final PriceMode reprocessedPriceType) {\n\t\tthis.priceReprocessedType = reprocessedPriceType;\n\t}\n\n\tpublic void setPriceManufacturingType(PriceMode priceManufacturingType) {\n\t\tthis.priceManufacturingType = priceManufacturingType;\n\t}\n\n\tpublic PriceMode getPriceType() {\n\t\treturn priceType;\n\t}\n\n\tpublic PriceMode getPriceReprocessedType() {\n\t\treturn priceReprocessedType;\n\t}\n\n\tpublic PriceMode getPriceManufacturingType() {\n\t\treturn priceManufacturingType;\n\t}\n\n\tpublic String getJaniceKey() {\n\t\treturn janiceKey;\n\t}\n\n\t@Override\n\tpublic boolean equals(Object obj) {\n\t\tif (this == obj) {\n\t\t\treturn true;\n\t\t}\n\t\tif (obj == null) {\n\t\t\treturn false;\n\t\t}\n\t\tif (getClass() != obj.getClass()) {\n\t\t\treturn false;\n\t\t}\n\t\tfinal PriceDataSettings other = (PriceDataSettings) obj;\n\t\tif (this.locationType != other.locationType) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!Objects.equals(this.locationID, other.locationID)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this.priceSource != other.priceSource) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic int hashCode() {\n\t\tint hash = 5;\n\t\thash = 29 * hash + Objects.hashCode(this.locationType);\n\t\thash = 29 * hash + Objects.hashCode(this.locationID);\n\t\thash = 29 * hash + Objects.hashCode(this.priceSource);\n\t\treturn hash;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/PriceHistoryDatabase.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport java.sql.Connection;\r\nimport java.sql.DriverManager;\r\nimport java.sql.PreparedStatement;\r\nimport java.sql.ResultSet;\r\nimport java.sql.SQLException;\r\nimport java.sql.Statement;\r\nimport java.text.ParseException;\r\nimport java.util.Calendar;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.Map;\r\nimport java.util.NavigableSet;\r\nimport java.util.Set;\r\nimport java.util.TreeSet;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.settings.PriceDataSettings.PriceMode;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter.DateFormatThreadSafe;\r\nimport net.nikr.eve.jeveasset.gui.tabs.prices.PriceChangesTab.PriceChange;\r\nimport net.nikr.eve.jeveasset.gui.tabs.prices.PriceHistoryTab.PriceHistoryData;\r\nimport net.nikr.eve.jeveasset.io.local.profile.ProfileTable.Rows;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class PriceHistoryDatabase {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(PriceHistoryDatabase.class);\r\n\r\n\tpublic static final String ZKILLBOARD_TABLE = \"zkillboard\";\r\n\tpublic static final String ZBLACKLIST_TABLE = \"zblacklist\";\r\n\tpublic static final String PRICEDATA_TABLE = \"pricedata\";\r\n\r\n\tpublic static final DateFormatThreadSafe DATE = new DateFormatThreadSafe(\"yyyy-MM-dd\", true);\r\n\r\n\tprivate static PriceHistoryDatabase instance;\r\n\r\n\tpublic PriceHistoryDatabase() {\r\n\t\tthis(false);\r\n\t}\r\n\r\n\tprotected PriceHistoryDatabase(boolean createTable) {\r\n\t\tif (createTable) {\r\n\t\t\tinit();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void init() {\r\n\t\tif (!tableZKillboardExist()) { //New database: Empty\r\n\t\t\tcreateZKillboardTable();\r\n\t\t}\r\n\t\tif (!tableZBlacklistExist()) { //New database: Empty\r\n\t\t\tcreateZBlacklistTable();\r\n\t\t}\r\n\t\tif (!tablePriceDataExist()) { //New database: Empty\r\n\t\t\tcreatePriceDataTable();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static String getConnectionUrl() {\r\n\t\treturn \"jdbc:sqlite:\" + FileUtil.getPathPriceHistoryDatabase();\r\n\t}\r\n\r\n\tprivate static PriceHistoryDatabase getInstance() {\r\n\t\tif (instance == null) {\r\n\t\t\tinstance = new PriceHistoryDatabase();\r\n\t\t}\r\n\t\treturn instance;\r\n\t}\r\n\r\n\tpublic static void load() {\r\n\t\tgetInstance().init();\r\n\t}\r\n\r\n\t/**\r\n\t * Get typeIDs that have data for today.\r\n\t * @return\r\n\t */\r\n\tpublic static Set<Integer> getZKillboardUpdated() {\r\n\t\treturn getInstance().selectZKillboardUpdated();\r\n\t}\r\n\r\n\t/**\r\n\t * Add data to database.\r\n\t * Handles duplicates\r\n\t * @param data\r\n\t */\r\n\tpublic static void setZKillboard(Map<Item, Set<PriceHistoryData>> data) {\r\n\t\tgetInstance().updateZKillboard(data);\r\n\t}\r\n\r\n\t/**\r\n\t * Add typeIDs to database.\r\n\t * Handles duplicates\r\n\t * @param typeIDs\r\n\t */\r\n\tpublic static void setZBlacklist(Set<Integer> typeIDs) {\r\n\t\tgetInstance().insertZBlaclist(typeIDs);\r\n\t}\r\n\r\n\t/**\r\n\t * clear database.\r\n\t */\r\n\tpublic static void clearZBlacklist() {\r\n\t\tgetInstance().deleteZBlaclist();\r\n\t}\r\n\r\n\t/**\r\n\t * Get typeIDs\r\n\t * @return\r\n\t */\r\n\tpublic static Set<Integer> getZBlacklist() {\r\n\t\treturn getInstance().selectZBlacklist();\r\n\t}\r\n\r\n\t/**\r\n\t * Add data to database.\r\n\t * Handles duplicates\r\n\t * @param data\r\n\t */\r\n\tpublic static void setPriceData(Map<Integer, PriceData> data) {\r\n\t\tgetInstance().insertPriceData(data);\r\n\t}\r\n\r\n\t/**\r\n\t * Get all data in database.\r\n\t * @param typeIDs\r\n\t * @return\r\n\t */\r\n\tpublic static Map<Item, Set<PriceHistoryData>> getZKillboard(Set<Integer> typeIDs) {\r\n\t\treturn getInstance().selectZKillboard(typeIDs);\r\n\t}\r\n\r\n\t/**\r\n\t * Get all data in database.\r\n\t * @param typeIDs\r\n\t * @param priceMode\r\n\t * @return\r\n\t */\r\n\tpublic static Map<Item, Set<PriceHistoryData>> getPriceData(Set<Integer> typeIDs, PriceMode priceMode) {\r\n\t\treturn getInstance().selectPriceData(typeIDs, priceMode);\r\n\t}\r\n\r\n\t/**\r\n\t * Get price changes between from and to in database.\r\n\t * @param priceMode\r\n\t * @param ownedOnly\r\n\t * @param typeIDs\r\n\t * @param from\r\n\t * @param to\r\n\t * @return\r\n\t */\r\n\tpublic static Set<PriceChange> getPriceChanges(Map<Integer, Long> typeIDs, boolean ownedOnly, PriceMode priceMode, Date from, Date to) {\r\n\t\treturn getInstance().selectPriceChanges(typeIDs, ownedOnly, priceMode, from, to);\r\n\t}\r\n\r\n\t/**\r\n\t * Get all dates in database.\r\n\t * @param typeIDs\r\n\t * @return\r\n\t */\r\n\tpublic static NavigableSet<String> getPriceChangesDate(Set<Integer> typeIDs) {\r\n\t\treturn getInstance().selectPriceChangesDate(typeIDs);\r\n\t}\r\n\r\n\tprivate void updateZKillboard(Map<Item, Set<PriceHistoryData>> map) {\r\n\t\tSet<PriceHistoryData> insert = new HashSet<>();\r\n\t\t//Add new data\r\n\t\tfor (Set<PriceHistoryData> set : map.values()) {\r\n\t\t\tinsert.addAll(set);\r\n\t\t}\r\n\t\t//Update database\r\n\t\tinsertZKillboard(insert);\r\n\t}\r\n\r\n\tprivate void insertZKillboard(Set<PriceHistoryData> insert) {\r\n\t\tif (insert == null || insert.isEmpty()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tString sql = \"INSERT OR IGNORE INTO \" + ZKILLBOARD_TABLE + \"  (typeid,date,price) VALUES(?,?,?)\";\r\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionUrl());\r\n\t\t\t\tPreparedStatement statement = connection.prepareStatement(sql)) {\r\n\t\t\tRows rows = new Rows(statement, insert.size());\r\n\t\t\tconnection.setAutoCommit(false);\r\n\t\t\tfor (PriceHistoryData killboardData : insert) {\r\n\t\t\t\tstatement.setInt(1, killboardData.getTypeID());\r\n\t\t\t\tstatement.setString(2, killboardData.getDateString());\r\n\t\t\t\tstatement.setDouble(3, killboardData.getPrice());\r\n\t\t\t\trows.addRow();\r\n\t\t\t}\r\n\t\t\tconnection.commit();\r\n\t\t\tconnection.setAutoCommit(true);\r\n\t\t} catch (SQLException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void insertZBlaclist(Set<Integer> insert) {\r\n\t\tif (insert == null || insert.isEmpty()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tString sql = \"INSERT OR IGNORE INTO \" + ZBLACKLIST_TABLE + \"  (typeid) VALUES(?)\";\r\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionUrl());\r\n\t\t\t\tPreparedStatement statement = connection.prepareStatement(sql)) {\r\n\t\t\tRows rows = new Rows(statement, insert.size());\r\n\t\t\tconnection.setAutoCommit(false);\r\n\t\t\tfor (Integer typeID : insert) {\r\n\t\t\t\tstatement.setInt(1, typeID);\r\n\t\t\t\trows.addRow();\r\n\t\t\t}\r\n\t\t\tconnection.commit();\r\n\t\t\tconnection.setAutoCommit(true);\r\n\t\t} catch (SQLException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void deleteZBlaclist() {\r\n\t\tString sql = \"DELETE FROM \" + ZBLACKLIST_TABLE;\r\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionUrl());\r\n\t\t\t\tStatement statement = connection.createStatement()) {\r\n\t\t\tstatement.execute(sql);\r\n\t\t} catch (SQLException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void insertPriceData(Map<Integer, PriceData> insert) {\r\n\t\tif (insert == null || insert.isEmpty()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tString date = DATE.format(new Date()); //Todays date\r\n\t\tString sql = \"INSERT OR REPLACE INTO \" + PRICEDATA_TABLE + \" (typeid,date,\"\r\n\t\t\t\t+ \"sellmax,\"\r\n\t\t\t\t+ \"sellavg,\"\r\n\t\t\t\t+ \"sellmedian,\"\r\n\t\t\t\t+ \"sellpercentile,\"\r\n\t\t\t\t+ \"sellmin,\"\r\n\t\t\t\t+ \"buymax,\"\r\n\t\t\t\t+ \"buypercentile,\"\r\n\t\t\t\t+ \"buyavg,\"\r\n\t\t\t\t+ \"buymedian,\"\r\n\t\t\t\t+ \"buymin)\"\r\n\t\t\t\t+ \"VALUES(?,?,?,?,?,?,?,?,?,?,?,?)\";\r\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionUrl());\r\n\t\t\t\tPreparedStatement statement = connection.prepareStatement(sql)) {\r\n\t\t\tRows rows = new Rows(statement, insert.size());\r\n\t\t\tconnection.setAutoCommit(false);\r\n\t\t\tfor (Map.Entry<Integer, PriceData> entry : insert.entrySet()) {\r\n\t\t\t\tstatement.setInt(1, entry.getKey());\r\n\t\t\t\tstatement.setString(2, date);\r\n\t\t\t\tstatement.setDouble(3, entry.getValue().getSellMax());\r\n\t\t\t\tstatement.setDouble(4, entry.getValue().getSellAvg());\r\n\t\t\t\tstatement.setDouble(5, entry.getValue().getSellMedian());\r\n\t\t\t\tstatement.setDouble(6, entry.getValue().getSellPercentile());\r\n\t\t\t\tstatement.setDouble(7, entry.getValue().getSellMin());\r\n\t\t\t\tstatement.setDouble(8, entry.getValue().getBuyMax());\r\n\t\t\t\tstatement.setDouble(9, entry.getValue().getBuyPercentile());\r\n\t\t\t\tstatement.setDouble(10, entry.getValue().getBuyAvg());\r\n\t\t\t\tstatement.setDouble(11, entry.getValue().getBuyMedian());\r\n\t\t\t\tstatement.setDouble(12, entry.getValue().getBuyMin());\r\n\t\t\t\trows.addRow();\r\n\t\t\t}\r\n\t\t\tconnection.commit();\r\n\t\t\tconnection.setAutoCommit(true);\r\n\t\t} catch (SQLException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Map<Item, Set<PriceHistoryData>> selectZKillboard(Set<Integer> typeIDs) {\r\n\t\tMap<Item, Set<PriceHistoryData>> data = new HashMap<>();\r\n\t\tStringBuilder builder = new StringBuilder();\r\n\t\tboolean first = true;\r\n\t\tfor (int typeID : typeIDs) {\r\n\t\t\tif (first) {\r\n\t\t\t\tfirst = false;\r\n\t\t\t} else {\r\n\t\t\t\tbuilder.append(\", \");\r\n\t\t\t}\r\n\t\t\tbuilder.append(typeID);\r\n\t\t}\r\n\r\n\t\tfor (int typeID : typeIDs) {\r\n\t\t\tdata.put(ApiIdConverter.getItem(typeID), new TreeSet<>());\r\n\t\t}\r\n\t\tString sql = \"SELECT * FROM \" + ZKILLBOARD_TABLE + \" WHERE typeid IN (\" + builder.toString()  + \")\";\r\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionUrl());\r\n\t\t\t\tPreparedStatement statement = connection.prepareStatement(sql);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tint typeID = rs.getInt(\"typeid\");\r\n\t\t\t\tString date = rs.getString(\"date\");\r\n\t\t\t\tdouble price = rs.getDouble(\"price\");\r\n\t\t\t\ttry {\r\n\t\t\t\t\tItem item = ApiIdConverter.getItem(typeID);\r\n\t\t\t\t\tdata.get(item).add(new PriceHistoryData(typeID, item, date, price));\r\n\t\t\t\t} catch (ParseException ex) {\r\n\t\t\t\t\t//Ignore\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} catch (SQLException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t}\r\n\t\treturn data;\r\n\t}\r\n\r\n\tprivate Map<Item, Set<PriceHistoryData>> selectPriceData(Set<Integer> typeIDs, PriceMode priceMode) {\r\n\t\tMap<Item, Set<PriceHistoryData>> data = new HashMap<>();\r\n\t\tStringBuilder builder = new StringBuilder();\r\n\t\tboolean first = true;\r\n\t\tfor (int typeID : typeIDs) {\r\n\t\t\tif (first) {\r\n\t\t\t\tfirst = false;\r\n\t\t\t} else {\r\n\t\t\t\tbuilder.append(\", \");\r\n\t\t\t}\r\n\t\t\tbuilder.append(typeID);\r\n\t\t}\r\n\t\tfor (int typeID : typeIDs) {\r\n\t\t\tdata.put(ApiIdConverter.getItem(typeID), new TreeSet<>());\r\n\t\t}\r\n\t\tString sql = \"SELECT * FROM \" + PRICEDATA_TABLE + \" WHERE typeid IN (\" + builder.toString()  + \")\";\r\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionUrl());\r\n\t\t\t\tPreparedStatement statement = connection.prepareStatement(sql);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tint typeID = rs.getInt(\"typeid\");\r\n\t\t\t\tString date = rs.getString(\"date\");\r\n\t\t\t\tPriceData priceData = new PriceData();\r\n\t\t\t\tpriceData.setSellMax(rs.getDouble(\"sellmax\"));\r\n\t\t\t\tpriceData.setSellAvg(rs.getDouble(\"sellavg\"));\r\n\t\t\t\tpriceData.setSellMedian(rs.getDouble(\"sellmedian\"));\r\n\t\t\t\tpriceData.setSellPercentile(rs.getDouble(\"sellpercentile\"));\r\n\t\t\t\tpriceData.setSellMin(rs.getDouble(\"sellmin\"));\r\n\t\t\t\tpriceData.setBuyMax(rs.getDouble(\"buymax\"));\r\n\t\t\t\tpriceData.setBuyPercentile(rs.getDouble(\"buypercentile\"));\r\n\t\t\t\tpriceData.setBuyAvg(rs.getDouble(\"buyavg\"));\r\n\t\t\t\tpriceData.setBuyMedian(rs.getDouble(\"buymedian\"));\r\n\t\t\t\tpriceData.setBuyMin(rs.getDouble(\"buymin\"));\r\n\t\t\t\ttry {\r\n\t\t\t\t\tItem item = ApiIdConverter.getItem(typeID);\r\n\t\t\t\t\tdata.get(item).add(new PriceHistoryData(typeID, item, date, PriceMode.getDefaultPrice(priceData, priceMode)));\r\n\t\t\t\t} catch (ParseException ex) {\r\n\t\t\t\t\t//Ignore\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} catch (SQLException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t}\r\n\t\treturn data;\r\n\t}\r\n\r\n\tprivate NavigableSet<String> selectPriceChangesDate(Set<Integer> typeIDs) {\r\n\t\tNavigableSet<String> data = new TreeSet<>();\r\n\t\tStringBuilder typeFilter = new StringBuilder();\r\n\t\tif (!typeIDs.isEmpty()) {\r\n\t\t\ttypeFilter.append(\" WHERE typeid IN (\");\r\n\t\t\tboolean first = true;\r\n\t\t\tfor (int typeID : typeIDs) {\r\n\t\t\t\tif (first) {\r\n\t\t\t\t\tfirst = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttypeFilter.append(\", \");\r\n\t\t\t\t}\r\n\t\t\t\ttypeFilter.append(typeID);\r\n\t\t\t}\r\n\t\t\ttypeFilter.append(\") \");\r\n\t\t}\r\n\t\tString sql = \"SELECT date FROM \" + PRICEDATA_TABLE + typeFilter.toString()  + \" GROUP BY date\";\r\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionUrl());\r\n\t\t\t\tPreparedStatement statement = connection.prepareStatement(sql);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tString date = rs.getString(\"date\");\r\n\t\t\t\tdata.add(date);\r\n\t\t\t}\r\n\t\t} catch (SQLException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t}\r\n\t\treturn data;\r\n\t}\r\n\r\n\tprivate Set<PriceChange> selectPriceChanges(Map<Integer, Long> typeIDs, boolean ownedOnly, PriceMode priceMode, Date from, Date to) {\r\n\t\tString fromString = DATE.format(from);\r\n\t\tString toString = DATE.format(to);\r\n\t\tMap<Integer, PriceChange> data = new HashMap<>();\r\n\t\tStringBuilder typeFilter = new StringBuilder();\r\n\t\tif (!typeIDs.isEmpty() && ownedOnly) {\r\n\t\t\ttypeFilter.append(\" AND typeid IN (\");\r\n\t\t\tboolean first = true;\r\n\t\t\tfor (int typeID : typeIDs.keySet()) {\r\n\t\t\t\tif (first) {\r\n\t\t\t\t\tfirst = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttypeFilter.append(\", \");\r\n\t\t\t\t}\r\n\t\t\t\ttypeFilter.append(typeID);\r\n\t\t\t}\r\n\t\t\ttypeFilter.append(\") \");\r\n\t\t}\r\n\t\tStringBuilder dateFilter = new StringBuilder();\r\n\t\tdateFilter.append(\"\\\"\");\r\n\t\tdateFilter.append(fromString);\r\n\t\tdateFilter.append(\"\\\",\\\"\");\r\n\t\tdateFilter.append(toString);\r\n\t\tdateFilter.append(\"\\\"\");\r\n\t\tString sql = \"SELECT * FROM \" + PRICEDATA_TABLE + \" WHERE date IN (\" + dateFilter.toString() + \") \" + typeFilter.toString() + \" ORDER BY date\";\r\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionUrl());\r\n\t\t\t\tPreparedStatement statement = connection.prepareStatement(sql);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tint typeID = rs.getInt(\"typeid\");\r\n\t\t\t\tString date = rs.getString(\"date\");\r\n\t\t\t\tPriceData priceData = new PriceData();\r\n\t\t\t\tpriceData.setSellMax(rs.getDouble(\"sellmax\"));\r\n\t\t\t\tpriceData.setSellAvg(rs.getDouble(\"sellavg\"));\r\n\t\t\t\tpriceData.setSellMedian(rs.getDouble(\"sellmedian\"));\r\n\t\t\t\tpriceData.setSellPercentile(rs.getDouble(\"sellpercentile\"));\r\n\t\t\t\tpriceData.setSellMin(rs.getDouble(\"sellmin\"));\r\n\t\t\t\tpriceData.setBuyMax(rs.getDouble(\"buymax\"));\r\n\t\t\t\tpriceData.setBuyPercentile(rs.getDouble(\"buypercentile\"));\r\n\t\t\t\tpriceData.setBuyAvg(rs.getDouble(\"buyavg\"));\r\n\t\t\t\tpriceData.setBuyMedian(rs.getDouble(\"buymedian\"));\r\n\t\t\t\tpriceData.setBuyMin(rs.getDouble(\"buymin\"));\r\n\t\t\t\tPriceChange priceChange = data.get(typeID);\r\n\t\t\t\tdouble price = PriceMode.getDefaultPrice(priceData, priceMode);\r\n\t\t\t\tif (priceChange == null) {\r\n\t\t\t\t\tItem item = ApiIdConverter.getItem(typeID);\r\n\t\t\t\t\tpriceChange = new PriceChange(typeID, item, typeIDs.getOrDefault(typeID, 0L));\r\n\t\t\t\t\tdata.put(typeID, priceChange);\r\n\t\t\t\t}\r\n\t\t\t\tif (date.equals(fromString)) {\r\n\t\t\t\t\tpriceChange.setPriceFrom(price);\r\n\t\t\t\t} else if (date.equals(toString)) {\r\n\t\t\t\t\tpriceChange.setPriceTo(price);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tLOG.warn(\"Date is don't equals to or from???\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} catch (SQLException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t}\r\n\t\treturn new HashSet<>(data.values());\r\n\t}\r\n\r\n\tpublic static String getZKillboardDate() {\r\n\t\tCalendar cal = Calendar.getInstance();\r\n\t\tcal.set(Calendar.MINUTE,0);\r\n\t\tcal.set(Calendar.SECOND,0);\r\n\t\tcal.set(Calendar.MILLISECOND,0);\r\n\t\tcal.add(Calendar.DAY_OF_MONTH, -2);\r\n\t\treturn DATE.format(cal.getTime());\r\n\t}\r\n\r\n\tprivate Set<Integer> selectZKillboardUpdated() {\r\n\t\tSet<Integer> typeIDs = new HashSet<>();\r\n\t\tString sql = \"SELECT typeid FROM \" + ZKILLBOARD_TABLE + \" WHERE date = ?\";\r\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionUrl());\r\n\t\t\t\tPreparedStatement statement = connection.prepareStatement(sql);\r\n\t\t\t\t) {\r\n\t\t\t\tstatement.setString(1, getZKillboardDate());\r\n\t\t\t\tResultSet rs = statement.executeQuery();\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\ttypeIDs.add(rs.getInt(\"typeid\"));\r\n\t\t\t}\r\n\t\t} catch (SQLException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t}\r\n\t\treturn typeIDs;\r\n\t}\r\n\r\n\tprivate Set<Integer> selectZBlacklist() {\r\n\t\tSet<Integer> typeIDs = new HashSet<>();\r\n\t\tString sql = \"SELECT typeid FROM \" + ZBLACKLIST_TABLE;\r\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionUrl());\r\n\t\t\t\tPreparedStatement statement = connection.prepareStatement(sql);\r\n\t\t\t\tResultSet rs = statement.executeQuery();\r\n\t\t\t\t) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\ttypeIDs.add(rs.getInt(\"typeid\"));\r\n\t\t\t}\r\n\t\t} catch (SQLException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t}\r\n\t\treturn typeIDs;\r\n\t}\r\n\r\n\tprivate void createZKillboardTable() {\r\n\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + ZKILLBOARD_TABLE + \" (\\n\"\r\n\t\t\t\t+ \"\ttypeid INTEGER,\\n\"\r\n\t\t\t\t+ \"\tdate TEXT,\\n\"\r\n\t\t\t\t+ \"\tprice REAL,\\n\"\r\n\t\t\t\t+ \"\tUNIQUE(typeid, date)\\n\"\r\n\t\t\t\t+ \");\";\r\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionUrl());\r\n\t\t\t\tStatement statement = connection.createStatement()) {\r\n\t\t\tstatement.execute(sql);\r\n\t\t} catch (SQLException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void createZBlacklistTable() {\r\n\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + ZBLACKLIST_TABLE + \" (\\n\"\r\n\t\t\t\t+ \"\ttypeid INTEGER\\n\"\r\n\t\t\t\t+ \");\";\r\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionUrl());\r\n\t\t\t\tStatement statement = connection.createStatement()) {\r\n\t\t\tstatement.execute(sql);\r\n\t\t} catch (SQLException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void createPriceDataTable() {\r\n\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + PRICEDATA_TABLE + \" (\\n\"\r\n\t\t\t\t+ \"\ttypeid INTEGER,\\n\"\r\n\t\t\t\t+ \"\tdate TEXT,\\n\"\r\n\t\t\t\t+ \"\tsellmax REAL,\\n\"\r\n\t\t\t\t+ \"\tsellavg REAL,\\n\"\r\n\t\t\t\t+ \"\tsellmedian REAL,\\n\"\r\n\t\t\t\t+ \"\tsellpercentile REAL,\\n\"\r\n\t\t\t\t+ \"\tsellmin REAL,\\n\"\r\n\t\t\t\t+ \"\tbuymax REAL,\\n\"\r\n\t\t\t\t+ \"\tbuypercentile REAL,\\n\"\r\n\t\t\t\t+ \"\tbuyavg REAL,\\n\"\r\n\t\t\t\t+ \"\tbuymedian REAL,\\n\"\r\n\t\t\t\t+ \"\tbuymin REAL,\\n\"\r\n\t\t\t\t+ \"\tUNIQUE(typeid, date)\\n\"\r\n\t\t\t\t+ \");\";\r\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionUrl());\r\n\t\t\t\tStatement statement = connection.createStatement()) {\r\n\t\t\tstatement.execute(sql);\r\n\t\t} catch (SQLException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate boolean tableZKillboardExist() {\r\n\t\treturn tableExist(ZKILLBOARD_TABLE);\r\n\t}\r\n\r\n\tprivate boolean tableZBlacklistExist() {\r\n\t\treturn tableExist(ZBLACKLIST_TABLE);\r\n\t}\r\n\r\n\tprivate boolean tablePriceDataExist() {\r\n\t\treturn tableExist(PRICEDATA_TABLE);\r\n\t}\r\n\r\n\tpublic static boolean tableExist(String tableName) {\r\n\t\tString sql = \"SELECT name FROM sqlite_master WHERE type='table' AND name='\" + tableName + \"'\";\r\n\t\ttry (Connection connection = DriverManager.getConnection(getConnectionUrl());\r\n\t\t\t\tStatement statement = connection.createStatement();\r\n\t\t\t\tResultSet rs = statement.executeQuery(sql)) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t} catch (SQLException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/ProxyData.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport java.io.IOException;\r\nimport java.net.Authenticator;\r\nimport java.net.InetSocketAddress;\r\nimport java.net.PasswordAuthentication;\r\nimport java.net.Proxy;\r\nimport java.net.ProxySelector;\r\nimport java.net.SocketAddress;\r\nimport java.net.URI;\r\nimport java.util.ArrayList;\r\nimport java.util.Collections;\r\nimport java.util.List;\r\n\r\npublic class ProxyData {\r\n\r\n\tprivate final String address;\r\n\tprivate final Proxy.Type type;\r\n\tprivate final int port;\r\n\tprivate final String username;\r\n\tprivate final String password;\r\n\r\n\tpublic ProxyData() {\r\n\t\tthis.address = \"\";\r\n\t\tthis.type = Proxy.Type.DIRECT;\r\n\t\tthis.port = 0;\r\n\t\tthis.username = null;\r\n\t\tthis.password = null;\r\n\t\tupdateProxy();\r\n\t}\r\n\r\n\tpublic ProxyData(String address, Proxy.Type type, int port, String username, String password) {\r\n\t\tthis.address = address;\r\n\t\tthis.type = type;\r\n\t\tthis.port = port;\r\n\t\tthis.username = username;\r\n\t\tthis.password = password;\r\n\t\tupdateProxy();\r\n\t}\r\n\r\n\tpublic boolean isAuth() {\r\n\t\treturn username != null && password != null;\r\n\t}\r\n\r\n\tprivate void updateProxy() {\r\n\t\t//Reset everything\r\n\t\tAuthenticator.setDefault(null); //Auth\r\n\t\tProxySelector.setDefault(new ProxyHost(Proxy.NO_PROXY)); //Proxy\r\n\t\t//Host\r\n\t\tSystem.clearProperty(\"http.proxyHost\"); //http\r\n\t\tSystem.clearProperty(\"https.proxyHost\");//https\r\n\t\tSystem.clearProperty(\"socksProxyHost\"); //socks\r\n\t\t//Port\r\n\t\tSystem.clearProperty(\"http.proxyPort\"); //http\r\n\t\tSystem.clearProperty(\"https.proxyPort\");//https\r\n\t\tSystem.clearProperty(\"socksProxyPort\"); //socks\r\n\t\t//Username\r\n\t\tSystem.clearProperty(\"http.proxyUser\"); //http\r\n\t\tSystem.clearProperty(\"https.proxyUser\");//https\r\n\t\tSystem.clearProperty(\"java.net.socks.username\"); //socks\r\n\t\t//Password\r\n\t\tSystem.clearProperty(\"http.proxyPassword\"); //http\r\n\t\tSystem.clearProperty(\"https.proxyPassword\");//https\r\n\t\tSystem.clearProperty(\"java.net.socks.password\"); //socks\r\n\t\tif (type == Proxy.Type.HTTP) { //HTTP/HTTPS Proxy\r\n\t\t\t//Proxy\r\n\t\t\tProxySelector.setDefault(new ProxyHost(getProxy()));\r\n\t\t\t//Address\r\n\t\t\tSystem.setProperty(\"http.proxyHost\", getAddress());\r\n\t\t\tSystem.setProperty(\"https.proxyHost\", getAddress());\r\n\t\t\t//Port\r\n\t\t\tSystem.setProperty(\"http.proxyPort\", String.valueOf(getPort()));\r\n\t\t\tSystem.setProperty(\"https.proxyPort\", String.valueOf(getPort()));\r\n\t\t\tif (isAuth()) {\r\n\t\t\t\t//Username\r\n\t\t\t\tSystem.setProperty(\"http.proxyUser\", getUsername());\r\n\t\t\t\tSystem.setProperty(\"https.proxyUser\", getUsername());\r\n\t\t\t\t//Password\r\n\t\t\t\tSystem.setProperty(\"http.proxyPassword\", getPassword());\r\n\t\t\t\tSystem.setProperty(\"https.proxyPassword\", getPassword());\r\n\t\t\t\t//Auth\r\n\t\t\t\tAuthenticator.setDefault(new ProxyAuth(getUsername(), getPassword()));\r\n\t\t\t}\r\n\t\t} else if (type == Proxy.Type.SOCKS) { //SOCKS Proxy\r\n\t\t\t//Proxy\r\n\t\t\tProxySelector.setDefault(new ProxyHost(getProxy()));\r\n\t\t\t//Address\r\n\t\t\tSystem.setProperty(\"socksProxyHost\", getAddress());\r\n\t\t\t//Port\r\n\t\t\tSystem.setProperty(\"socksProxyPort\", String.valueOf(getPort()));\r\n\t\t\tif (isAuth()) {\r\n\t\t\t\t//Username\r\n\t\t\t\tSystem.setProperty(\"java.net.socks.username\", getUsername());\r\n\t\t\t\t//Password\r\n\t\t\t\tSystem.setProperty(\"java.net.socks.password\", getPassword());\r\n\t\t\t\t//Auth\r\n\t\t\t\tAuthenticator.setDefault(new ProxyAuth(getUsername(), getPassword()));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Proxy getProxy() {\r\n\t\tif (type == Proxy.Type.DIRECT) {\r\n\t\t\treturn Proxy.NO_PROXY;\r\n\t\t} else {\r\n\t\t\treturn new Proxy(type, new InetSocketAddress(address, port));\r\n\t\t}\r\n\t}\r\n\r\n\tpublic String getAddress() {\r\n\t\treturn address;\r\n\t}\r\n\r\n\tpublic Proxy.Type getType() {\r\n\t\treturn type;\r\n\t}\r\n\r\n\tpublic int getPort() {\r\n\t\treturn port;\r\n\t}\r\n\r\n\tpublic String getUsername() {\r\n\t\treturn username;\r\n\t}\r\n\r\n\tpublic String getPassword() {\r\n\t\treturn password;\r\n\t}\r\n\r\n\tpublic List<String> getArgs() {\r\n\t\tList<String> args = new ArrayList<String>();\r\n\t\tif (type == Proxy.Type.HTTP) { // HTTP/HTTPS Proxy\r\n\t\t\t//Address\r\n\t\t\targs.add(format(\"https.proxyHost\", getAddress()));\r\n\t\t\t//Port\r\n\t\t\targs.add(format(\"https.proxyPort\", String.valueOf(getPort())));\r\n\t\t\tif (isAuth()) {\r\n\t\t\t\t//Username\r\n\t\t\t\targs.add(format(\"https.proxyUser\", getUsername()));\r\n\t\t\t\t//Password\r\n\t\t\t\targs.add(format(\"https.proxyPassword\", getPassword()));\r\n\t\t\t}\r\n\t\t}\r\n\t\t//SOCKS Proxy\r\n\t\tif (type == Proxy.Type.SOCKS) {\r\n\t\t\t//Address\r\n\t\t\targs.add(format(\"socksProxyHost\", getAddress()));\r\n\t\t\t//Port\r\n\t\t\targs.add(format(\"socksProxyPort\", String.valueOf(getPort())));\r\n\t\t\tif (isAuth()) {\r\n\t\t\t\t//Username\r\n\t\t\t\targs.add(format(\"java.net.socks.username\", getUsername()));\r\n\t\t\t\t//Password\r\n\t\t\t\targs.add(format(\"java.net.socks.password\", getPassword()));\r\n\t\t\t\t//Auth\r\n\t\t\t\tAuthenticator.setDefault(new ProxyAuth(getUsername(), getPassword()));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn args;\r\n\t}\r\n\r\n\tprivate String format(String key, String value) {\r\n\t\treturn \"-D\" + key + \"=\" + value;\r\n\t}\r\n\r\n\tpublic static class ProxyAuth extends Authenticator {\r\n\r\n\t\tprivate final PasswordAuthentication auth;\r\n\r\n\t\tprivate ProxyAuth(String user, String password) {\r\n\t\t\tauth = new PasswordAuthentication(user, password == null ? new char[]{} : password.toCharArray());\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tprotected PasswordAuthentication getPasswordAuthentication() {\r\n\t\t\treturn auth;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static class ProxyHost extends ProxySelector {\r\n\r\n\t\tprivate final Proxy proxy;\r\n\r\n\t\tpublic ProxyHost(Proxy proxy) {\r\n\t\t\tthis.proxy = proxy;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic List<Proxy> select(URI uri) {\r\n\t\t\treturn Collections.singletonList(proxy);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void connectFailed(URI uri, SocketAddress sa, IOException ioe) {\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/ReprocessSettings.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.data.settings;\n\n\npublic class ReprocessSettings {\n\n\tprivate static final ReprocessSettings MAX = new ReprocessSettings(65.129, 5, 5, 5, 5);\n\n\tprivate final double station;\n\tprivate final int reprocessingLevel;\n\tprivate final int reprocessingEfficiencyLevel;\n\tprivate final int oreProcessingLevel;\n\tprivate final int scrapmetalProcessingLevel;\n\n\t//Defaults\n\tpublic ReprocessSettings() {\n\t\tthis(50, 0, 0, 0, 0);\n\t}\n\n\tpublic ReprocessSettings(final double station, final int reprocessingLevel, final int reprocessingEfficiencyLevel, int oreProcessingLevel, final int scrapmetalProcessing) {\n\t\tthis.station = station;\n\t\tthis.reprocessingLevel = inRange(reprocessingLevel);\n\t\tthis.reprocessingEfficiencyLevel = inRange(reprocessingEfficiencyLevel, this.reprocessingLevel);\n\t\tthis.oreProcessingLevel = inRange(oreProcessingLevel, this.reprocessingEfficiencyLevel);\n\t\tthis.scrapmetalProcessingLevel = inRange(scrapmetalProcessing);\n\t}\n\n\tprivate int inRange(final int level, int required) {\n\t\tif (required < 4) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn inRange(level);\n\t}\n\n\tprivate int inRange(final int level) {\n\t\tif (level < 0) {\n\t\t\treturn 0;\n\t\t} else if (level > 5) {\n\t\t\treturn 5;\n\t\t} else {\n\t\t\treturn level;\n\t\t}\n\t}\n\n\tpublic int getReprocessingEfficiencyLevel() {\n\t\treturn reprocessingEfficiencyLevel;\n\t}\n\n\tpublic int getReprocessingLevel() {\n\t\treturn reprocessingLevel;\n\t}\n\n\tpublic int getOreProcessingLevel() {\n\t\treturn oreProcessingLevel;\n\t}\n\n\tpublic int getScrapmetalProcessingLevel() {\n\t\treturn scrapmetalProcessingLevel;\n\t}\n\n\tpublic double getStation() {\n\t\treturn station;\n\t}\n\n\tpublic static int getMax(final long start, final boolean ore) {\n\t\treturn MAX.getLeft(start, ore);\n\t}\n\n\tpublic int getLeft(final long start, final boolean ore) {\n\t\treturn (int) Math.floor((((double) start) / 100.0) * getPercent(ore));\n\t}\n\n\tprotected double getPercent(final boolean ore) {\n\t\tdouble percent;\n\t\tif (ore) {\n\t\t\tpercent = ((station / 100.0)\n\t\t\t* (1.0 + ((double) reprocessingLevel * 0.03))\n\t\t\t* (1.0 + ((double) reprocessingEfficiencyLevel * 0.02))\n\t\t\t* (1.0 + ((double) oreProcessingLevel * 0.02))\n\t\t\t) * 100.0;\n\t\t} else {\n\t\t\tpercent = (0.5 //Station is always 50% for scrap metal\n\t\t\t* (1.0 + ((double) scrapmetalProcessingLevel * 0.02))\n\t\t\t) * 100.0;\n\t\t}\n\t\tif (percent > 100) {\n\t\t\treturn 100;\n\t\t}\n\t\treturn percent;\n\t}\n\n\t@Override\n\tpublic boolean equals(Object obj) {\n\t\tif (this == obj) {\n\t\t\treturn true;\n\t\t}\n\t\tif (obj == null) {\n\t\t\treturn false;\n\t\t}\n\t\tif (getClass() != obj.getClass()) {\n\t\t\treturn false;\n\t\t}\n\t\tfinal ReprocessSettings other = (ReprocessSettings) obj;\n\t\tif (Double.doubleToLongBits(this.station) != Double.doubleToLongBits(other.station)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this.reprocessingLevel != other.reprocessingLevel) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this.reprocessingEfficiencyLevel != other.reprocessingEfficiencyLevel) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this.oreProcessingLevel != other.oreProcessingLevel) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this.scrapmetalProcessingLevel != other.scrapmetalProcessingLevel) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic int hashCode() {\n\t\tint hash = 5;\n\t\thash = 61 * hash + (int) (Double.doubleToLongBits(this.station) ^ (Double.doubleToLongBits(this.station) >>> 32));\n\t\thash = 61 * hash + this.reprocessingLevel;\n\t\thash = 61 * hash + this.reprocessingEfficiencyLevel;\n\t\thash = 61 * hash + this.oreProcessingLevel;\n\t\thash = 61 * hash + this.scrapmetalProcessingLevel;\n\t\treturn hash;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/RouteAvoidSettings.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\nimport java.util.Objects;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.gui.tabs.routing.SolarSystem;\r\n\r\npublic class RouteAvoidSettings {\r\n\tprivate double secMin;\r\n\tprivate double secMax;\r\n\tprivate final Map<Long, SolarSystem> avoid = new HashMap<>();\r\n\tprivate final Map<String, Set<Long>> presets = new HashMap<>();\r\n\r\n\tpublic RouteAvoidSettings() {\r\n\t\tsecMin = 0.0;\r\n\t\tsecMax = 1.0;\r\n\t}\r\n\r\n\tpublic double getSecMin() {\r\n\t\treturn secMin;\r\n\t}\r\n\r\n\tpublic void setSecMin(double secMin) {\r\n\t\tthis.secMin = secMin;\r\n\t}\r\n\r\n\tpublic double getSecMax() {\r\n\t\treturn secMax;\r\n\t}\r\n\r\n\tpublic void setSecMax(double secMax) {\r\n\t\tthis.secMax = secMax;\r\n\t}\r\n\r\n\tpublic Map<Long, SolarSystem> getAvoid() {\r\n\t\treturn avoid;\r\n\t}\r\n\r\n\tpublic Map<String, Set<Long>> getPresets() {\r\n\t\treturn presets;\r\n\t}\r\n\r\n\tpublic void update(RouteAvoidSettings avoidSettings) {\r\n\t\tsecMin = avoidSettings.getSecMin();\r\n\t\tsecMax = avoidSettings.getSecMax();\r\n\t\tavoid.clear();\r\n\t\tavoid.putAll(avoidSettings.getAvoid());\r\n\t\tpresets.clear();\r\n\t\tpresets.putAll(avoidSettings.getPresets());\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 5;\r\n\t\thash = 53 * hash + (int) (Double.doubleToLongBits(this.secMin) ^ (Double.doubleToLongBits(this.secMin) >>> 32));\r\n\t\thash = 53 * hash + (int) (Double.doubleToLongBits(this.secMax) ^ (Double.doubleToLongBits(this.secMax) >>> 32));\r\n\t\thash = 53 * hash + Objects.hashCode(this.avoid);\r\n\t\thash = 53 * hash + Objects.hashCode(this.presets);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal RouteAvoidSettings other = (RouteAvoidSettings) obj;\r\n\t\tif (Double.doubleToLongBits(this.secMin) != Double.doubleToLongBits(other.secMin)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (Double.doubleToLongBits(this.secMax) != Double.doubleToLongBits(other.secMax)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (!Objects.equals(this.avoid, other.avoid)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn Objects.equals(this.presets, other.presets);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/RouteResult.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Objects;\r\nimport net.nikr.eve.jeveasset.gui.tabs.routing.SolarSystem;\r\nimport net.nikr.eve.jeveasset.i18n.TabsRouting;\r\n\r\n\r\npublic class RouteResult {\r\n\tprivate final List<List<SolarSystem>> route;\r\n\tprivate final Map<Long, List<SolarSystem>> stations;\r\n\tprivate final int waypoints;\r\n\tprivate final String algorithmName;\r\n\tprivate final long algorithmTime;\r\n\tprivate final int jumps;\r\n\tprivate final String avoid;\r\n\tprivate final String security;\r\n\r\n\tpublic RouteResult(List<List<SolarSystem>> route, Map<Long, List<SolarSystem>> stations, int waypoints, String algorithmName, long algorithmTime, int jumps, String avoid, String security) {\r\n\t\tthis.route = route;\r\n\t\tthis.stations = stations;\r\n\t\tthis.waypoints = waypoints;\r\n\t\tthis.algorithmName = algorithmName;\r\n\t\tthis.algorithmTime = algorithmTime;\r\n\t\tthis.jumps = jumps;\r\n\t\tif (avoid != null) {\r\n\t\t\tthis.avoid = avoid;\r\n\t\t} else {\r\n\t\t\tthis.avoid = TabsRouting.get().resultUnknownValue();\r\n\t\t}\r\n\t\tif (security != null) {\r\n\t\t\tthis.security = security;\r\n\t\t} else {\r\n\t\t\tthis.security = TabsRouting.get().resultUnknownValue();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic List<List<SolarSystem>> getRoute() {\r\n\t\treturn route;\r\n\t}\r\n\r\n\tpublic Map<Long, List<SolarSystem>> getStations() {\r\n\t\treturn stations;\r\n\t}\r\n\r\n\tpublic int getWaypoints() {\r\n\t\treturn waypoints;\r\n\t}\r\n\r\n\tpublic String getAlgorithmName() {\r\n\t\treturn algorithmName;\r\n\t}\r\n\r\n\tpublic long getAlgorithmTime() {\r\n\t\treturn algorithmTime;\r\n\t}\r\n\r\n\tpublic int getJumps() {\r\n\t\treturn jumps;\r\n\t}\r\n\r\n\tpublic String getAvoid() {\r\n\t\treturn avoid;\r\n\t}\r\n\r\n\tpublic String getSecurity() {\r\n\t\treturn security;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 5;\r\n\t\thash = 97 * hash + Objects.hashCode(this.route);\r\n\t\thash = 97 * hash + Objects.hashCode(this.stations);\r\n\t\thash = 97 * hash + this.waypoints;\r\n\t\thash = 97 * hash + Objects.hashCode(this.algorithmName);\r\n\t\thash = 97 * hash + (int) (this.algorithmTime ^ (this.algorithmTime >>> 32));\r\n\t\thash = 97 * hash + this.jumps;\r\n\t\thash = 97 * hash + Objects.hashCode(this.avoid);\r\n\t\thash = 97 * hash + Objects.hashCode(this.security);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal RouteResult other = (RouteResult) obj;\r\n\t\tif (this.waypoints != other.waypoints) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (this.algorithmTime != other.algorithmTime) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (this.jumps != other.jumps) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (!Objects.equals(this.algorithmName, other.algorithmName)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (!Objects.equals(this.avoid, other.avoid)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (!Objects.equals(this.security, other.security)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (!Objects.equals(this.route, other.route)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (!Objects.equals(this.stations, other.stations)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/RoutingSettings.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport java.util.TreeMap;\r\nimport net.nikr.eve.jeveasset.gui.tabs.routing.SolarSystem;\r\n\r\npublic class RoutingSettings {\r\n\tprivate final RouteAvoidSettings avoidSettings = new RouteAvoidSettings();\r\n\tprivate final Map<String, RouteResult> routes = new TreeMap<>();\r\n\r\n\tpublic Map<String, RouteResult> getRoutes() {\r\n\t\treturn routes;\r\n\t}\r\n\r\n\tpublic RouteAvoidSettings getAvoidSettings() {\r\n\t\treturn avoidSettings;\r\n\t}\r\n\r\n\tpublic double getSecMin() {\r\n\t\treturn avoidSettings.getSecMin();\r\n\t}\r\n\r\n\tpublic void setSecMin(double secMin) {\r\n\t\tavoidSettings.setSecMin(secMin);\r\n\t}\r\n\r\n\tpublic double getSecMax() {\r\n\t\treturn avoidSettings.getSecMax();\r\n\t}\r\n\r\n\tpublic void setSecMax(double secMax) {\r\n\t\tavoidSettings.setSecMax(secMax);\r\n\t}\r\n\r\n\tpublic Map<Long, SolarSystem> getAvoid() {\r\n\t\treturn avoidSettings.getAvoid();\r\n\t}\r\n\r\n\tpublic Map<String, Set<Long>> getPresets() {\r\n\t\treturn avoidSettings.getPresets();\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/Settings.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.data.settings;\n\nimport java.awt.Dimension;\nimport java.awt.Point;\nimport java.text.DateFormat;\nimport java.text.SimpleDateFormat;\nimport java.util.ArrayList;\nimport java.util.Date;\nimport java.util.EnumMap;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport java.util.TreeMap;\nimport net.nikr.eve.jeveasset.SplashUpdater;\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\nimport net.nikr.eve.jeveasset.data.api.raw.RawIndustryJob.IndustryJobStatus;\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder.MarketOrderRange;\nimport net.nikr.eve.jeveasset.data.settings.tag.Tag;\nimport net.nikr.eve.jeveasset.data.settings.tag.TagID;\nimport net.nikr.eve.jeveasset.data.settings.tag.Tags;\nimport net.nikr.eve.jeveasset.gui.dialogs.settings.SoundsSettingsPanel.SoundOption;\nimport net.nikr.eve.jeveasset.gui.shared.StringComparators;\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JFormulaDialog.Formula;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuJumps.Jump;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor.ResizeMode;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor.SimpleColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.View;\nimport net.nikr.eve.jeveasset.gui.sounds.Sound;\nimport net.nikr.eve.jeveasset.gui.tabs.jobs.IndustryJobTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.jobs.IndustryJobsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.mining.ExtractionsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.mining.ExtractionsTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.journal.JournalTab;\nimport net.nikr.eve.jeveasset.gui.tabs.journal.JournalTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.orders.MarketOrdersTab;\nimport net.nikr.eve.jeveasset.gui.tabs.orders.MarketTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.orders.Outbid;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewGroup;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile;\nimport net.nikr.eve.jeveasset.gui.tabs.transaction.TransactionTab;\nimport net.nikr.eve.jeveasset.gui.tabs.transaction.TransactionTableFormat;\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\nimport net.nikr.eve.jeveasset.i18n.TabsJobs;\nimport net.nikr.eve.jeveasset.i18n.TabsJournal;\nimport net.nikr.eve.jeveasset.i18n.TabsMining;\nimport net.nikr.eve.jeveasset.i18n.TabsOrders;\nimport net.nikr.eve.jeveasset.i18n.TabsTransaction;\nimport net.nikr.eve.jeveasset.io.local.SettingsReader;\nimport net.nikr.eve.jeveasset.io.local.SettingsWriter;\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\npublic class Settings {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(Settings.class);\n\n\tpublic static enum SettingFlag {\n\t\tFLAG_IGNORE_SECURE_CONTAINERS,\n\t\tFLAG_FILTER_ON_ENTER,\n\t\tFLAG_REPROCESS_COLORS,\n\t\tFLAG_INCLUDE_SELL_ORDERS,\n\t\tFLAG_INCLUDE_BUY_ORDERS,\n\t\tFLAG_INCLUDE_SELL_CONTRACTS,\n\t\tFLAG_INCLUDE_BUY_CONTRACTS,\n\t\tFLAG_INCLUDE_MANUFACTURING,\n\t\tFLAG_INCLUDE_COPYING,\n\t\tFLAG_INCLUDE_JUMP_CLONES,\n\t\tFLAG_INCLUDE_PLUGGED_IN_IMPLANTS,\n\t\tFLAG_HIGHLIGHT_SELECTED_ROWS,\n\t\tFLAG_STOCKPILE_FOCUS_TAB,\n\t\tFLAG_STOCKPILE_HALF_COLORS,\n\t\tFLAG_BLUEPRINT_BASE_PRICE_TECH_1,\n\t\tFLAG_BLUEPRINT_BASE_PRICE_TECH_2,\n\t\tFLAG_TRANSACTION_HISTORY,\n\t\tFLAG_JOURNAL_HISTORY,\n\t\tFLAG_MARKET_ORDER_HISTORY,\n\t\tFLAG_ASKED_CHECK_ALL_TRACKER,\n\t\tFLAG_TRACKER_USE_ASSET_PRICE_FOR_SELL_ORDERS,\n\t\tFLAG_FOCUS_EVE_ONLINE_ON_ESI_UI_CALLS,\n\t\tFLAG_SAVE_TOOLS_ON_EXIT,\n\t\tFLAG_SAVE_CONTRACT_HISTORY,\n\t\tFLAG_SAVE_MINING_HISTORY,\n\t\tFLAG_MANUFACTURING_DEFAULT,\n\t\tFLAG_EASY_CHART_COLORS,\n\t\tFLAG_CONTAINERS_SHOW_ITEM_ID,\n\t\tFLAG_LOCK_TOOLS,\n\t\tFLAG_SHOW_SUBPILE_TREE,\n\t\tFLAG_INDUSTRY_JOBS_HISTORY,\n\t\tFLAG_ASSETS_CONTRACTS_OWNER_CORP,\n\t\tFLAG_ASSETS_CONTRACTS_OWNER_BOTH,\n\t\tFLAG_CELL_VALUE_CACHE,\n\t\tFLAG_LOAD_TOOLS_BACKGROUND,\n\t\tFLAG_LOAD_TOOLS_STARTUP,\n\t\tFLAG_EVE_GATECAMP_CHECK_SET,\n\t\tFLAG_EVE_GATECAMP_CHECK_ALWAYS_OPEN,\n\t\tFLAG_EVE_GATECAMP_CHECK_NEVER_OPEN,\n\t\tFLAG_EVE_GATECAMP_CHECK_SECURE,\n\t\tFLAG_EVE_GATECAMP_CHECK_UNSECURE\n\t}\n\n\tpublic static enum TransactionProfitPrice {\n\t\tLASTEST() {\n\t\t\t@Override\n\t\t\tpublic String getText() {\n\t\t\t\treturn DialoguesSettings.get().transactionsPriceLatest();\n\t\t\t}\n\t\t},\n\t\tAVERAGE() {\n\t\t\t@Override\n\t\t\tpublic String getText() {\n\t\t\t\treturn DialoguesSettings.get().transactionsPriceAverage();\n\t\t\t}\n\t\t},\n\t\tMINIMUM() {\n\t\t\t@Override\n\t\t\tpublic String getText() {\n\t\t\t\treturn DialoguesSettings.get().transactionsPriceMinimum();\n\t\t\t}\n\t\t},\n\t\tMAXIMUM() {\n\t\t\t@Override\n\t\t\tpublic String getText() {\n\t\t\t\treturn DialoguesSettings.get().transactionsPriceMaximum();\n\t\t\t}\n\t\t};\n\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\treturn getText();\n\t\t}\n\n\t\tprotected abstract String getText();\n\t}\n\n\tprivate static final SettingsLock LOCK = new SettingsLock();\n\tprivate static Settings settings;\n\tprivate static boolean testMode = false;\n\n//External\n\t//Price\t\t\t\t\t\tSaved by PriceDataGetter.process() in pricedata.dat (on api update)\n\tprivate Map<Integer, PriceData> priceDatas = new HashMap<>(); //TypeID : int\n//API Data\n\t//Api id to owner name\t\tSaved by TaskDialog.update() (on API update)\n\tprivate final Map<Long, Date> ownersNextUpdate = new HashMap<>();\n\tprivate final Map<Long, String> owners = new HashMap<>();\n//!! - Values\n\t//OK - Custom Price\t\t\tSaved by JUserListPanel.edit()/delete() + SettingsDialog.save()\n\t//Lock OK\n\tprivate Map<Integer, UserItem<Integer, Double>> userPrices = new HashMap<>(); //TypeID : int\n\t//OK - Custom Item Name\t\tSaved by JUserListPanel.edit()/delete() + SettingsDialog.save()\n\t//Lock OK\n\tprivate Map<Long, UserItem<Long, String>> userNames = new HashMap<>(); //ItemID : long\n\t//Eve Item Name\t\t\t\tSaved by TaskDialog.update() (on API update)\n\t//Lock ???\n\tprivate Map<Long, String> eveNames = new HashMap<>();\n//!! - Stockpile\t\t\t\tSaved by StockpileTab.removeItems() / addStockpile() / removeStockpile()\n\t//\t\t\t\t\t\t\tCould be more selective...\n\t//Lock FAIL!!!\n\tprivate final List<Stockpile> stockpiles = new ArrayList<>();\n\tprivate int stockpileColorGroup2 = 100;\n\tprivate int stockpileColorGroup3 = 0;\n\tprivate final StockpileGroupSettings stockpileGroupSettings = new StockpileGroupSettings();\n//Routing\t\t\t\t\t\tSaved by ???\n\t//Lock ???\n\tprivate final RoutingSettings routingSettings = new RoutingSettings();\n//Jumps\n\t//Lock ???\n\tprivate final RouteAvoidSettings jumpsAvoidSettings = new RouteAvoidSettings();\n//Overview\t\t\t\t\t\tSaved by JOverviewMenu.ListenerClass.NEW/DELETE/RENAME\n\t//Lock OK\n\tprivate final Map<String, OverviewGroup> overviewGroups = new HashMap<>();\n//Export\t\t\t\t\t\tSaved in ExportDialog.saveSettings()\n\t//Lock OK\n\tprivate final CopySettings copySettings = new CopySettings();\n\tprivate final Map<String, ExportSettings> exportSettings = new HashMap<>();\n//Import\n\tprivate final Map<String, String> importSettings = new HashMap<>();\n//Tracker\t\t\t\t\t\tSaved by TaskDialog.update() (on API update)\n\tprivate final TrackerSettings trackerSettings = new TrackerSettings();\n//Price History\n\tprivate final Map<String, Set<Integer>> priceHistorySets = new HashMap<>();\n//Runtime flags\t\t\t\t\tIs not saved to file\n\tprivate boolean settingsLoadError = false;\n//Settings Dialog:\t\t\t\tSaved by SettingsDialog.save()\n\t//Lock OK\n\t//Mixed boolean flags\n\tprivate final Map<SettingFlag, Boolean> flags = new EnumMap<>(SettingFlag.class);\n\t//Price\n\tprivate PriceDataSettings priceDataSettings = new PriceDataSettings();\n\t//Proxy (API)\n\tprivate ProxyData proxyData = new ProxyData();\n\t//FIXME - - > Settings: Create windows settings\n\t//Window\n\t//\t\t\t\t\t\t\tSaved by MainWindow.ListenerClass.componentMoved() (on change)\n\tprivate Point windowLocation = new Point(0, 0);\n\t//\t\t\t\t\t\t\tSaved by MainWindow.ListenerClass.componentResized() (on change)\n\tprivate Dimension windowSize = new Dimension(800, 600);\n\t//\t\t\t\t\t\t\tSaved by MainWindow.ListenerClass.componentMoved() (on change)\n\tprivate boolean windowMaximized = false;\n\t//\t\t\t\t\t\t\tSaved by SettingsDialog.save()\n\tprivate boolean windowAutoSave = true;\n\tprivate boolean windowAlwaysOnTop = false;\n\t//Assets\n\tprivate int maximumPurchaseAge = 0;\n\tprivate int transactionProfitMargin = 0;\n\tprivate TransactionProfitPrice transactionProfitPrice = TransactionProfitPrice.LASTEST;\n\t//Reprocess price\n\tprivate ReprocessSettings reprocessSettings = new ReprocessSettings();\n\t//Public Market Orders Last Update\n\tprivate Date publicMarketOrdersLastUpdate = null;\n\t//Public Market Orders Next Update\n\tprivate Date publicMarketOrdersNextUpdate = getNow();\n\t//Faction Warfare System Owners\n\tprivate Map<Long, String> factionWarfareSystemOwners = new HashMap<>();\n\t//Faction Warfare Next Update\n\tprivate Date factionWarfareNextUpdate = getNow();\n\t//Market Orders Outbid\n\tprivate Map<Long, Outbid> marketOrdersOutbid = new HashMap<>();\n\t//SellOrderRange\n\tprivate MarketOrderRange outbidOrderRange = MarketOrderRange.REGION;\n\t//Expire Warning Days\n\tprivate final MarketOrdersSettings marketOrdersSettings = new MarketOrdersSettings();\n\t//Cache\n\tprivate Boolean filterOnEnter = null; //Filter tools\n\tprivate Boolean highlightSelectedRows = null; //Assets\n\tprivate Boolean reprocessColors = null; //Assets\n\tprivate Boolean stockpileHalfColors = null; //Stockpile\n\tprivate Boolean containersShowItemID = null; //Container ItemID\n\tprivate Boolean cellValueCache = null; //Cell value cache\n//Table settings\n\t//Filters\t\t\t\t\tSaved by ExportFilterControl.saveSettings()\n\t//Lock OK\n\tprivate final Map<String, Map<String, List<Filter>>> tableFilters = new HashMap<>();\n\t//Columns\t\t\t\t\tSaved by EnumTableFormatAdaptor.getMenu() - Reset\n\t//\t\t\t\t\t\t\t\t\t EditColumnsDialog.save() - Edit Columns\n\t//\t\t\t\t\t\t\t\t\t JAutoColumnTable.ListenerClass.mouseReleased() - Moved\n\t//\t\t\t\t\t\t\t\t\t ViewManager.loadView() - Load View\n\t//Lock OK\n\tprivate final Map<String, Map<String, List<Filter>>> defaultTableFilters = new HashMap<>();\n\tprivate final Map<String, List<Filter>> currentTableFilters = new HashMap<>();\n\tprivate final Map<String, Boolean> currentTableFiltersShown = new HashMap<>();\n\tprivate final Map<String, String> currentTableSorting = new HashMap<>();\n\tprivate final Map<String, List<SimpleColumn>> tableColumns = new HashMap<>();\n\t//Column Width\t\t\t\tSaved by JAutoColumnTable.saveColumnsWidth()\n\t//Lock OK\n\tprivate final Map<String, Map<String, Integer>> tableColumnsWidth = new HashMap<>();\n\t//Resize Mode\t\t\t\tSaved by EnumTableFormatAdaptor.getMenu()\n\t//Lock OK\n\tprivate final Map<String, ResizeMode> tableResize = new HashMap<>();\n\t//Views\t\t\t\t\t\tSaved by EnumTableFormatAdaptor.getMenu() - New\n\t//\t\t\t\t\t\t\t\t\t ViewManager.rename() - Rename\n\t//\t\t\t\t\t\t\t\t\t ViewManager.delete() - Delete\n\t//Lock OK\n\tprivate final Map<String, Map<String, View>> tableViews = new HashMap<>();\n\t//Formula Columns\n\tprivate final Map<String, List<Formula>> tableFormulas = new HashMap<>();\n\t//Jump Columns\n\tprivate final Map<String, List<Jump>> tableJumps = new HashMap<>();\n\t// Skill Plans: plan name -> (skill typeID -> target level)\n\tprivate final Map<String, Map<Integer, Integer>> skillPlans = new HashMap<>();\n//Tags\t\t\t\t\t\tSaved by JMenuTags.addTag()/removeTag() + SettingsDialog.save()\n\t//Lock OK\n\tprivate final Map<String, Tag> tags = new HashMap<>();\n\tprivate final Map<TagID, Tags> tagIds = new HashMap<>();\n//Changed\n\tprivate final Map<String, Date> tableChanged = new HashMap<>();\n//Tools\n\tprivate final List<String> showTools = new ArrayList<>();\n//Colors\n\tprivate final ColorSettings colorSettings = new ColorSettings();\n//Sounds\n\tprivate final Map<SoundOption, Sound> soundSettings = new EnumMap<>(SoundOption.class);\n//Manufacturing\n\tprivate final ManufacturingSettings manufacturingSettings = new ManufacturingSettings();\n\n\tprotected Settings() {\n\t\t//Settings\n\t\tflags.put(SettingFlag.FLAG_FILTER_ON_ENTER, false); //Cached\n\t\tflags.put(SettingFlag.FLAG_HIGHLIGHT_SELECTED_ROWS, true); //Cached\n\t\tflags.put(SettingFlag.FLAG_REPROCESS_COLORS, false); //Cached\n\t\tflags.put(SettingFlag.FLAG_IGNORE_SECURE_CONTAINERS, true);\n\t\tflags.put(SettingFlag.FLAG_STOCKPILE_FOCUS_TAB, true);\n\t\tflags.put(SettingFlag.FLAG_STOCKPILE_HALF_COLORS, false); //Cached\n\t\tflags.put(SettingFlag.FLAG_INCLUDE_SELL_ORDERS, false);\n\t\tflags.put(SettingFlag.FLAG_INCLUDE_BUY_ORDERS, false);\n\t\tflags.put(SettingFlag.FLAG_INCLUDE_SELL_CONTRACTS, false);\n\t\tflags.put(SettingFlag.FLAG_INCLUDE_BUY_CONTRACTS, false);\n\t\tflags.put(SettingFlag.FLAG_INCLUDE_MANUFACTURING, false);\n\t\tflags.put(SettingFlag.FLAG_INCLUDE_COPYING, false);\n\t\tflags.put(SettingFlag.FLAG_INCLUDE_JUMP_CLONES, true);\n\t\tflags.put(SettingFlag.FLAG_INCLUDE_PLUGGED_IN_IMPLANTS, true);\n\t\tflags.put(SettingFlag.FLAG_BLUEPRINT_BASE_PRICE_TECH_1, true);\n\t\tflags.put(SettingFlag.FLAG_BLUEPRINT_BASE_PRICE_TECH_2, false);\n\t\tflags.put(SettingFlag.FLAG_TRANSACTION_HISTORY, true);\n\t\tflags.put(SettingFlag.FLAG_JOURNAL_HISTORY, true);\n\t\tflags.put(SettingFlag.FLAG_MARKET_ORDER_HISTORY, true);\n\t\tflags.put(SettingFlag.FLAG_ASKED_CHECK_ALL_TRACKER, false);\n\t\tflags.put(SettingFlag.FLAG_TRACKER_USE_ASSET_PRICE_FOR_SELL_ORDERS, false);\n\t\tflags.put(SettingFlag.FLAG_FOCUS_EVE_ONLINE_ON_ESI_UI_CALLS, true);\n\t\tflags.put(SettingFlag.FLAG_SAVE_TOOLS_ON_EXIT, false);\n\t\tflags.put(SettingFlag.FLAG_SAVE_CONTRACT_HISTORY, true);\n\t\tflags.put(SettingFlag.FLAG_SAVE_MINING_HISTORY, true);\n\t\tflags.put(SettingFlag.FLAG_MANUFACTURING_DEFAULT, true);\n\t\tflags.put(SettingFlag.FLAG_EASY_CHART_COLORS, false);\n\t\tflags.put(SettingFlag.FLAG_CONTAINERS_SHOW_ITEM_ID, true);\n\t\tflags.put(SettingFlag.FLAG_LOCK_TOOLS, false);\n\t\tflags.put(SettingFlag.FLAG_SHOW_SUBPILE_TREE, true);\n\t\tflags.put(SettingFlag.FLAG_INDUSTRY_JOBS_HISTORY, true);\n\t\tflags.put(SettingFlag.FLAG_ASSETS_CONTRACTS_OWNER_CORP, false);\n\t\tflags.put(SettingFlag.FLAG_ASSETS_CONTRACTS_OWNER_BOTH, false);\n\t\tflags.put(SettingFlag.FLAG_CELL_VALUE_CACHE, true);\n\t\tflags.put(SettingFlag.FLAG_LOAD_TOOLS_BACKGROUND, true);\n\t\tflags.put(SettingFlag.FLAG_LOAD_TOOLS_STARTUP, false);\n\t\tflags.put(SettingFlag.FLAG_EVE_GATECAMP_CHECK_SET, false);\n\t\tflags.put(SettingFlag.FLAG_EVE_GATECAMP_CHECK_ALWAYS_OPEN, false);\n\t\tflags.put(SettingFlag.FLAG_EVE_GATECAMP_CHECK_NEVER_OPEN, false);\n\t\tflags.put(SettingFlag.FLAG_EVE_GATECAMP_CHECK_UNSECURE, false);\n\t\tflags.put(SettingFlag.FLAG_EVE_GATECAMP_CHECK_SECURE, false);\n\t\tcacheFlags();\n\t\t//Default Filters\n\t\tList<Filter> filter;\n\t\t//Market Orders: Default Filters\n\t\tMap<String, List<Filter>> marketOrdersDefaultFilters = new HashMap<>();\n\t\tfilter = new ArrayList<>();\n\t\tfilter.add(new Filter(Filter.LogicType.AND, MarketTableFormat.ORDER_TYPE, Filter.CompareType.EQUALS, TabsOrders.get().buy()));\n\t\tfilter.add(new Filter(Filter.LogicType.AND, MarketTableFormat.STATUS, Filter.CompareType.EQUALS, TabsOrders.get().statusActive()));\n\t\tmarketOrdersDefaultFilters.put(TabsOrders.get().activeBuyOrders(), filter);\n\t\tfilter = new ArrayList<>();\n\t\tfilter.add(new Filter(Filter.LogicType.AND, MarketTableFormat.ORDER_TYPE, Filter.CompareType.EQUALS, TabsOrders.get().sell()));\n\t\tfilter.add(new Filter(Filter.LogicType.AND, MarketTableFormat.STATUS, Filter.CompareType.EQUALS, TabsOrders.get().statusActive()));\n\t\tmarketOrdersDefaultFilters.put(TabsOrders.get().activeSellOrders(), filter);\n\t\tdefaultTableFilters.put(MarketOrdersTab.NAME, marketOrdersDefaultFilters);\n\t\t//Journal: Default Filters\n\t\tMap<String, List<Filter>> journalDefaultFilters = new HashMap<>();\n\t\tfilter = new ArrayList<>();\n\t\tfilter.add(new Filter(Filter.LogicType.OR, JournalTableFormat.REF_TYPE, Filter.CompareType.CONTAINS, \"Bounty\"));\n\t\tfilter.add(new Filter(Filter.LogicType.OR, JournalTableFormat.REF_TYPE, Filter.CompareType.CONTAINS, \"ESS\"));\n\t\tfilter.add(new Filter(Filter.LogicType.AND, JournalTableFormat.DATE, Filter.CompareType.LAST_DAYS, \"7\"));\n\t\tjournalDefaultFilters.put(TabsJournal.get().rattingIncome(), filter);\n\t\tdefaultTableFilters.put(JournalTab.NAME, journalDefaultFilters);\n\t\t//Transactions: Default Filters\n\t\tMap<String, List<Filter>> transactionsDefaultFilters = new HashMap<>();\n\t\tfilter = new ArrayList<>();\n\t\tfilter.add(new Filter(Filter.LogicType.AND, TransactionTableFormat.TYPE, Filter.CompareType.EQUALS, TabsTransaction.get().buy()));\n\t\ttransactionsDefaultFilters.put(TabsTransaction.get().buy(), filter);\n\t\tfilter = new ArrayList<>();\n\t\tfilter.add(new Filter(Filter.LogicType.AND, TransactionTableFormat.TYPE, Filter.CompareType.EQUALS, TabsTransaction.get().sell()));\n\t\ttransactionsDefaultFilters.put(TabsTransaction.get().sell(), filter);\n\t\tdefaultTableFilters.put(TransactionTab.NAME, transactionsDefaultFilters);\n\t\t//Industry Jobs: Default Filters\n\t\tMap<String, List<Filter>> industryJobsTabDefaultFilters = new HashMap<>();\n\t\tfilter = new ArrayList<>();\n\t\tfilter.add(new Filter(Filter.LogicType.AND, IndustryJobTableFormat.STATE, Filter.CompareType.EQUALS_NOT, MyIndustryJob.getStatusName(IndustryJobStatus.DELIVERED)));\n\t\tfilter.add(new Filter(Filter.LogicType.AND, IndustryJobTableFormat.STATE, Filter.CompareType.EQUALS_NOT, MyIndustryJob.getStatusName(IndustryJobStatus.CANCELLED)));\n\t\tfilter.add(new Filter(Filter.LogicType.AND, IndustryJobTableFormat.STATE, Filter.CompareType.EQUALS_NOT, MyIndustryJob.getStatusName(IndustryJobStatus.REVERTED)));\n\t\tfilter.add(new Filter(Filter.LogicType.AND, IndustryJobTableFormat.STATE, Filter.CompareType.EQUALS_NOT, MyIndustryJob.getStatusName(IndustryJobStatus.ARCHIVED)));\n\t\tindustryJobsTabDefaultFilters.put(TabsJobs.get().active(), filter);\n\t\tfilter = new ArrayList<>();\n\t\tfilter.add(new Filter(Filter.LogicType.OR, IndustryJobTableFormat.STATE, Filter.CompareType.EQUALS, MyIndustryJob.getStatusName(IndustryJobStatus.DELIVERED)));\n\t\tfilter.add(new Filter(Filter.LogicType.OR, IndustryJobTableFormat.STATE, Filter.CompareType.EQUALS, MyIndustryJob.getStatusName(IndustryJobStatus.CANCELLED)));\n\t\tfilter.add(new Filter(Filter.LogicType.OR, IndustryJobTableFormat.STATE, Filter.CompareType.EQUALS, MyIndustryJob.getStatusName(IndustryJobStatus.REVERTED)));\n\t\tfilter.add(new Filter(Filter.LogicType.OR, IndustryJobTableFormat.STATE, Filter.CompareType.EQUALS, MyIndustryJob.getStatusName(IndustryJobStatus.ARCHIVED)));\n\t\tindustryJobsTabDefaultFilters.put(TabsJobs.get().completed(), filter);\n\t\tdefaultTableFilters.put(IndustryJobsTab.NAME, industryJobsTabDefaultFilters);\n\t\t//Extractions Default Filters\n\t\tMap<String, List<Filter>> extractionsDefaultFilters = new HashMap<>();\n\t\tfilter = new ArrayList<>();\n\t\tfilter.add(new Filter(Filter.LogicType.OR, ExtractionsTableFormat.ARRIVAL, Filter.CompareType.NEXT_DAYS, \"2\"));\n\t\tfilter.add(new Filter(Filter.LogicType.OR, ExtractionsTableFormat.DECAY, Filter.CompareType.LAST_DAYS, \"2\"));\n\t\textractionsDefaultFilters.put(TabsMining.get().extractionsActiveSoon(), filter);\n\t\tdefaultTableFilters.put(ExtractionsTab.NAME, extractionsDefaultFilters);\n\t}\n\n\tpublic static Settings get() {\n\t\tload();\n\t\treturn settings;\n\t}\n\n\tpublic static void setTestMode(boolean testMode) {\n\t\tSettings.testMode = testMode;\n\t}\n\n\tpublic static boolean isTestMode() {\n\t\treturn testMode;\n\t}\n\n\tpublic static void lock(String msg) {\n\t\tLOCK.lock(msg);\n\t}\n\n\tpublic static void unlock(String msg) {\n\t\tLOCK.unlock(msg);\n\t}\n\n\tpublic static boolean ignoreSave() {\n\t\treturn LOCK.ignoreSave();\n\t}\n\n\tpublic static void waitForEmptySaveQueue() {\n\t\tLOCK.waitForEmptySaveQueue();\n\t}\n\n\tpublic static void saveStart() {\n\t\tLOCK.saveStart();\n\t}\n\n\tpublic static void saveEnd() {\n\t\tLOCK.saveEnd();\n\t}\n\n\tpublic synchronized static void load() {\n\t\tif (settings == null) {\n\t\t\tSplashUpdater.setProgress(30);\n\t\t\tsettings = SettingsReader.load(new EmptySettingsFactory(), FileUtil.getPathSettings());\n\t\t\tSplashUpdater.setProgress(35);\n\t\t}\n\t}\n\n\t/***\n\t *\n\t * @return\n\t */\n\tpublic Map<String, ExportSettings> getExportSettings() {\n\t\treturn exportSettings;\n\t}\n\n\t/***\n\t *\n\t * @param toolName\n\t * @return\n\t */\n\tpublic ExportSettings getExportSettings(String toolName) {\n\t\tif (!exportSettings.containsKey(toolName)) {\n\t\t\texportSettings.put(toolName, new ExportSettings(toolName));\n\t\t}\n\t\treturn exportSettings.get(toolName);\n\t}\n\n\t/***\n\t *\n\t * @return\n\t */\n\tpublic Map<String, String> getImportSettings() {\n\t\treturn importSettings;\n\t}\n\n\t/***\n\t *\n\t * @param toolName\n\t * @param defaultValue\n\t * @return\n\t */\n\tpublic String getImportSettings(String toolName, Enum<?> defaultValue) {\n\t\tif (!importSettings.containsKey(toolName)) {\n\t\t\timportSettings.put(toolName, defaultValue.name());\n\t\t}\n\t\treturn importSettings.get(toolName);\n\t}\n\n\t/***\n\t *\n\t * @param toolName\n\t * @param type\n\t */\n\tpublic void putImportSettings(String toolName, Enum<?> type) {\n\t\timportSettings.put(toolName, type.name());\n\t}\n\n\tpublic CopySettings getCopySettings() {\n\t\treturn copySettings;\n\t}\n\n\tpublic static void saveSettings() {\n\t\tLOCK.lock(\"Save Settings\");\n\t\ttry {\n\t\t\tSettingsWriter.save(settings, FileUtil.getPathSettings());\n\t\t} finally {\n\t\t\tLOCK.unlock(\"Save Settings\");\n\t\t}\n\t}\n\n\tpublic TrackerSettings getTrackerSettings() {\n\t\treturn trackerSettings;\n\t}\n\n\tpublic Map<String, Set<Integer>> getPriceHistorySets() {\n\t\treturn priceHistorySets;\n\t}\n\n\tpublic PriceDataSettings getPriceDataSettings() {\n\t\treturn priceDataSettings;\n\t}\n\n\tpublic void setPriceDataSettings(final PriceDataSettings priceDataSettings) {\n\t\tthis.priceDataSettings = priceDataSettings;\n\t}\n\n\tpublic Map<Integer, UserItem<Integer, Double>> getUserPrices() {\n\t\treturn userPrices;\n\t}\n\n\tpublic void setUserPrices(final Map<Integer, UserItem<Integer, Double>> userPrices) {\n\t\tthis.userPrices = userPrices;\n\t}\n\n\tpublic Map<Long, UserItem<Long, String>> getUserItemNames() {\n\t\treturn userNames;\n\t}\n\n\tpublic void setUserItemNames(final Map<Long, UserItem<Long, String>> userItemNames) {\n\t\tthis.userNames = userItemNames;\n\t}\n\n\tpublic void setPriceData(final Map<Integer, PriceData> priceData) {\n\t\tthis.priceDatas = priceData;\n\t}\n\n\tpublic Map<Long, String> getEveNames() {\n\t\treturn eveNames;\n\t}\n\n\tpublic void setEveNames(Map<Long, String> eveNames) {\n\t\tthis.eveNames = eveNames;\n\t}\n\n\tpublic Map<Integer, PriceData> getPriceData() {\n\t\treturn priceDatas;\n\t}\n\n\tpublic Map<SettingFlag, Boolean> getFlags() {\n\t\treturn flags;\n\t}\n\n\tpublic final void cacheFlags() {\n\t\thighlightSelectedRows = flags.get(SettingFlag.FLAG_HIGHLIGHT_SELECTED_ROWS);\n\t\tfilterOnEnter = flags.get(SettingFlag.FLAG_FILTER_ON_ENTER);\n\t\treprocessColors = flags.get(SettingFlag.FLAG_REPROCESS_COLORS);\n\t\tstockpileHalfColors = flags.get(SettingFlag.FLAG_STOCKPILE_HALF_COLORS);\n\t\tcontainersShowItemID = flags.get(SettingFlag.FLAG_CONTAINERS_SHOW_ITEM_ID);\n\t\tcellValueCache = flags.get(SettingFlag.FLAG_CELL_VALUE_CACHE);\n\t}\n\n\tpublic ReprocessSettings getReprocessSettings() {\n\t\treturn reprocessSettings;\n\t}\n\n\tpublic void setReprocessSettings(final ReprocessSettings reprocessSettings) {\n\t\tthis.reprocessSettings = reprocessSettings;\n\t}\n\n\tpublic RoutingSettings getRoutingSettings() {\n\t\treturn routingSettings;\n\t}\n\n\tpublic RouteAvoidSettings getJumpsAvoidSettings() {\n\t\treturn jumpsAvoidSettings;\n\t}\n\n\tpublic Map<String, List<Jump>> getTableJumps() {\n\t\treturn tableJumps;\n\t}\n\n\tpublic List<Jump> getTableJumps(String toolName) {\n\t\tList<Jump> jumps = tableJumps.get(toolName);\n\t\tif (jumps == null) {\n\t\t\tjumps = new ArrayList<>();\n\t\t\ttableJumps.put(toolName, jumps);\n\t\t}\n\t\treturn jumps;\n\t}\n\n\tpublic Map<SoundOption, Sound> getSoundSettings() {\n\t\treturn soundSettings;\n\t}\n\n\tpublic Map<String, Date> getTableChanged() {\n\t\treturn tableChanged;\n\t}\n\n\tpublic Date getTableChanged(String toolName) {\n\t\tDate date = tableChanged.get(toolName);\n\t\tif (date == null) {\n\t\t\tdate = new Date();\n\t\t\ttableChanged.put(toolName, date);\n\t\t}\n\t\treturn date;\n\t}\n\n\tpublic ProxyData getProxyData() {\n\t\treturn proxyData;\n\t}\n\n\tpublic void setProxyData(ProxyData proxyData) {\n\t\tthis.proxyData = proxyData;\n\t}\n\n\tpublic Map<Long, Date> getOwnersNextUpdate() {\n\t\treturn ownersNextUpdate;\n\t}\n\n\tpublic Map<Long, String> getOwners() {\n\t\treturn owners;\n\t}\n\n\tpublic Map<String, Map<String, List<Filter>>> getTableFilters() {\n\t\treturn tableFilters;\n\t}\n\n\tpublic Map<String, List<Filter>> getTableFilters(final String key) {\n\t\tif (!tableFilters.containsKey(key)) {\n\t\t\ttableFilters.put(key, new HashMap<>());\n\t\t}\n\t\treturn tableFilters.get(key);\n\t}\n\n\tpublic Map<String, List<Filter>> getDefaultTableFilters(final String key) {\n\t\tif (!defaultTableFilters.containsKey(key)) {\n\t\t\tdefaultTableFilters.put(key, new HashMap<>());\n\t\t}\n\t\treturn defaultTableFilters.get(key);\n\t}\n\n\t/***\n\t * @return Current table filters, list may be empty but should never be null.\n\t */\n\tpublic Map<String, List<Filter>> getCurrentTableFilters() {\n\t\treturn currentTableFilters;\n\t}\n\n\t/***\n\t * @param tableName Table to look up.\n\t * @return The value of the filter if {@code key} is found. If {@code key} is not found it will be added with an\n\t * empty list and then returned.\n\t */\n\tpublic List<Filter> getCurrentTableFilters(final String tableName) {\n\t\tif (!currentTableFilters.containsKey(tableName)) {\n\t\t\tcurrentTableFilters.put(tableName, new ArrayList<>());\n\t\t}\n\t\treturn currentTableFilters.get(tableName);\n\t}\n\n\t/***\n\t * @return current table filters visibility state, list may be empty but should never be null.\n\t */\n\tpublic Map<String, Boolean> getCurrentTableFiltersShown() {\n\t\treturn currentTableFiltersShown;\n\t}\n\n\t/***\n\t * @param tableName Table to look up.\n\t * @return The value of the filter visibility state if key is found. If key is not found it will be added as visible\n\t * and then returned.\n\t */\n\tpublic boolean getCurrentTableFiltersShown(final String tableName) {\n\t\tif (!currentTableFiltersShown.containsKey(tableName)) {\n\t\t\tcurrentTableFiltersShown.put(tableName, true);\n\t\t}\n\t\treturn currentTableFiltersShown.get(tableName);\n\t}\n\n\t/***\n\t * @return Current table sorting state, values may be empty but should never be null.\n\t */\n\tpublic Map<String, String> getCurrentTableSorting() {\n\t\treturn currentTableSorting;\n\t}\n\n\t/***\n\t * @param toolName Tool to look up.\n\t * @return Current table sorting. Can be empty, but, never null.\n\t */\n\tpublic String getCurrentTableSorting(final String toolName) {\n\t\treturn currentTableSorting.getOrDefault(toolName, \"\");\n\t}\n\n\tpublic Map<String, List<SimpleColumn>> getTableColumns() {\n\t\treturn tableColumns;\n\t}\n\n\tpublic Map<String, Map<String, Integer>> getTableColumnsWidth() {\n\t\treturn tableColumnsWidth;\n\t}\n\n\tpublic Map<String, ResizeMode> getTableResize() {\n\t\treturn tableResize;\n\t}\n\n\tpublic Map<String, Map<String, View>> getTableViews() {\n\t\treturn tableViews;\n\t}\n\n\tpublic Map<String, View> getTableViews(String name) {\n\t\tMap<String, View> views = tableViews.get(name);\n\t\tif (views == null) {\n\t\t\tviews = new TreeMap<>(StringComparators.CASE_INSENSITIVE);\n\t\t\ttableViews.put(name, views);\n\t\t}\n\t\treturn views;\n\t}\n\n\t/**\n\t * Skill Plans storage.\n\t * Key: plan name; Value: map of skill typeID to target level (1..5).\n\t * @return \n\t */\n\tpublic Map<String, Map<Integer, Integer>> getSkillPlans() {\n\t\treturn skillPlans;\n\t}\n\n\tpublic Map<String, List<Formula>> getTableFormulas() {\n\t\treturn tableFormulas;\n\t}\n\n\tpublic List<Formula> getTableFormulas(String name) {\n\t\tList<Formula> formula = tableFormulas.get(name);\n\t\tif (formula == null) {\n\t\t\tformula = new ArrayList<>();\n\t\t\ttableFormulas.put(name, formula);\n\t\t}\n\t\treturn formula;\n\t}\n\n\tpublic Map<String, Tag> getTags() {\n\t\treturn tags;\n\t}\n\n\tpublic Tags getTags(TagID tagID) {\n\t\tTags set = tagIds.get(tagID);\n\t\tif (set == null) {\n\t\t\tset = new Tags();\n\t\t\ttagIds.put(tagID, set);\n\t\t}\n\t\treturn set;\n\t}\n\n\tpublic Map<Long, String> getFactionWarfareSystemOwners() {\n\t\treturn factionWarfareSystemOwners;\n\t}\n\n\tpublic void setFactionWarfareSystemOwners(Map<Long, String> factionWarfareSystemOwners) {\n\t\tthis.factionWarfareSystemOwners = factionWarfareSystemOwners;\n\t}\n\n\tpublic Date getFactionWarfareNextUpdate() {\n\t\treturn factionWarfareNextUpdate;\n\t}\n\n\tpublic void setFactionWarfareNextUpdate(Date factionWarfareNextUpdate) {\n\t\tthis.factionWarfareNextUpdate = factionWarfareNextUpdate;\n\t}\n\n\tpublic ManufacturingSettings getManufacturingSettings() {\n\t\treturn manufacturingSettings;\n\t}\n\n\tpublic Date getPublicMarketOrdersNextUpdate() {\n\t\treturn publicMarketOrdersNextUpdate;\n\t}\n\n\tpublic void setPublicMarketOrdersNextUpdate(Date publicMarketOrdersNextUpdate) {\n\t\tthis.publicMarketOrdersNextUpdate = publicMarketOrdersNextUpdate;\n\t}\n\n\tpublic Date getPublicMarketOrdersLastUpdate() {\n\t\treturn publicMarketOrdersLastUpdate;\n\t}\n\n\tpublic void setPublicMarketOrdersLastUpdate(Date publicMarketOrdersLastUpdate) {\n\t\tthis.publicMarketOrdersLastUpdate = publicMarketOrdersLastUpdate;\n\t}\n\n\tpublic MarketOrderRange getOutbidOrderRange() {\n\t\treturn outbidOrderRange;\n\t}\n\n\tpublic void setOutbidOrderRange(MarketOrderRange sellOrderOutbidRange) {\n\t\tthis.outbidOrderRange = sellOrderOutbidRange;\n\t}\n\n\tpublic Map<Long, Outbid> getMarketOrdersOutbid() {\n\t\treturn marketOrdersOutbid;\n\t}\n\n\tpublic void setMarketOrdersOutbid(Map<Long, Outbid> marketOrdersOutbid) {\n\t\tthis.marketOrdersOutbid = marketOrdersOutbid;\n\t}\n\n\tpublic int getMaximumPurchaseAge() {\n\t\treturn maximumPurchaseAge;\n\t}\n\n\tpublic void setMaximumPurchaseAge(final int maximumPurchaseAge) {\n\t\tthis.maximumPurchaseAge = maximumPurchaseAge;\n\t}\n\n\tpublic TransactionProfitPrice getTransactionProfitPrice() {\n\t\treturn transactionProfitPrice;\n\t}\n\n\tpublic void setTransactionProfitPrice(TransactionProfitPrice transactionProfitPrice) {\n\t\tthis.transactionProfitPrice = transactionProfitPrice;\n\t}\n\n\tpublic int getTransactionProfitMargin() {\n\t\treturn transactionProfitMargin;\n\t}\n\n\tpublic void setTransactionProfitMargin(int transactionProfitMargin) {\n\t\tthis.transactionProfitMargin = transactionProfitMargin;\n\t}\n\n\tpublic boolean isFilterOnEnter() {\n\t\treturn filterOnEnter;\n\t}\n\n\tpublic void setFilterOnEnter(final boolean filterOnEnter) {\n\t\tflags.put(SettingFlag.FLAG_FILTER_ON_ENTER, filterOnEnter); //Save & Load\n\t\tthis.filterOnEnter = filterOnEnter;\n\t}\n\n\tpublic boolean isHighlightSelectedRows() { //High volume call - Map.get is too slow, use cache\n\t\treturn highlightSelectedRows;\n\t}\n\n\tpublic void setHighlightSelectedRows(final boolean highlightSelectedRows) {\n\t\tflags.put(SettingFlag.FLAG_HIGHLIGHT_SELECTED_ROWS, highlightSelectedRows);\n\t\tthis.highlightSelectedRows = highlightSelectedRows;\n\t}\n\n\tpublic boolean isIgnoreSecureContainers() {\n\t\treturn flags.get(SettingFlag.FLAG_IGNORE_SECURE_CONTAINERS);\n\t}\n\n\tpublic void setIgnoreSecureContainers(final boolean ignoreSecureContainers) {\n\t\tflags.put(SettingFlag.FLAG_IGNORE_SECURE_CONTAINERS, ignoreSecureContainers);\n\t}\n\n\tpublic boolean isReprocessColors() { //High volume call - Map.get is too slow, use cache\n\t\treturn reprocessColors;\n\t}\n\n\tpublic void setReprocessColors(final boolean reprocessColors) {\n\t\tflags.put(SettingFlag.FLAG_REPROCESS_COLORS, reprocessColors);\n\t\tthis.reprocessColors = reprocessColors;\n\t}\n\n\tpublic boolean isStockpileFocusTab() {\n\t\treturn flags.get(SettingFlag.FLAG_STOCKPILE_FOCUS_TAB);\n\t}\n\n\tpublic void setStockpileFocusTab(final boolean stockpileFocusOnAdd) {\n\t\tflags.put(SettingFlag.FLAG_STOCKPILE_FOCUS_TAB, stockpileFocusOnAdd);\n\t}\n\n\tpublic boolean isStockpileHalfColors() {\n\t\treturn stockpileHalfColors;\n\t}\n\n\tpublic void setStockpileHalfColors(final boolean stockpileHalfColors) {\n\t\tflags.put(SettingFlag.FLAG_STOCKPILE_HALF_COLORS, stockpileHalfColors);\n\t\tthis.stockpileHalfColors = stockpileHalfColors;\n\t}\n\n\tpublic boolean isIncludeSellOrders() {\n\t\treturn flags.get(SettingFlag.FLAG_INCLUDE_SELL_ORDERS);\n\t}\n\n\tpublic void setIncludeSellOrders(final boolean includeSellOrders) {\n\t\tflags.put(SettingFlag.FLAG_INCLUDE_SELL_ORDERS, includeSellOrders);\n\t}\n\n\tpublic boolean isIncludeBuyOrders() {\n\t\treturn flags.get(SettingFlag.FLAG_INCLUDE_BUY_ORDERS);\n\t}\n\n\tpublic void setIncludeBuyOrders(final boolean includeBuyOrders) {\n\t\tflags.put(SettingFlag.FLAG_INCLUDE_BUY_ORDERS, includeBuyOrders);\n\t}\n\n\tpublic boolean isIncludeBuyContracts() {\n\t\treturn flags.get(SettingFlag.FLAG_INCLUDE_BUY_CONTRACTS);\n\t}\n\n\tpublic void setIncludeBuyContracts(final boolean includeBuyContracts) {\n\t\tflags.put(SettingFlag.FLAG_INCLUDE_BUY_CONTRACTS, includeBuyContracts);\n\t}\n\n\tpublic boolean isIncludeSellContracts() {\n\t\treturn flags.get(SettingFlag.FLAG_INCLUDE_SELL_CONTRACTS);\n\t}\n\n\tpublic void setIncludeSellContracts(final boolean includeSellContracts) {\n\t\tflags.put(SettingFlag.FLAG_INCLUDE_SELL_CONTRACTS, includeSellContracts);\n\t}\n\n\tpublic boolean isIncludeManufacturing() {\n\t\treturn flags.get(SettingFlag.FLAG_INCLUDE_MANUFACTURING);\n\t}\n\n\tpublic boolean setIncludeManufacturing(final boolean includeManufacturing) {\n\t\treturn flags.put(SettingFlag.FLAG_INCLUDE_MANUFACTURING, includeManufacturing);\n\t}\n\n\tpublic boolean isIncludeCopying() {\n\t\treturn flags.get(SettingFlag.FLAG_INCLUDE_COPYING);\n\t}\n\n\tpublic boolean setIncludeCopying(final boolean includeCopying) {\n\t\treturn flags.put(SettingFlag.FLAG_INCLUDE_COPYING, includeCopying);\n\t}\n\n\tpublic boolean isIncludeJumpClones() {\n\t\treturn flags.get(SettingFlag.FLAG_INCLUDE_JUMP_CLONES);\n\t}\n\n\tpublic boolean setIncludeJumpClones(final boolean includeJumpClones) {\n\t\treturn flags.put(SettingFlag.FLAG_INCLUDE_JUMP_CLONES, includeJumpClones);\n\t}\n\n\tpublic boolean isIncludePluggedInImplants() {\n\t\treturn flags.get(SettingFlag.FLAG_INCLUDE_PLUGGED_IN_IMPLANTS);\n\t}\n\n\tpublic boolean setIncludePluggedInImplants(final boolean includePluggedInImplants) {\n\t\treturn flags.put(SettingFlag.FLAG_INCLUDE_PLUGGED_IN_IMPLANTS, includePluggedInImplants);\n\t}\n\n\tpublic boolean isBlueprintBasePriceTech1() {\n\t\treturn flags.get(SettingFlag.FLAG_BLUEPRINT_BASE_PRICE_TECH_1);\n\t}\n\n\tpublic void setBlueprintBasePriceTech1(final boolean blueprintsTech1) {\n\t\tflags.put(SettingFlag.FLAG_BLUEPRINT_BASE_PRICE_TECH_1, blueprintsTech1);\n\t}\n\n\tpublic boolean isBlueprintBasePriceTech2() {\n\t\treturn flags.get(SettingFlag.FLAG_BLUEPRINT_BASE_PRICE_TECH_2);\n\t}\n\n\tpublic void setBlueprintBasePriceTech2(final boolean blueprintsTech2) {\n\t\tflags.put(SettingFlag.FLAG_BLUEPRINT_BASE_PRICE_TECH_2, blueprintsTech2);\n\t}\n\n\tpublic boolean isManufacturingDefault() {\n\t\treturn flags.get(SettingFlag.FLAG_MANUFACTURING_DEFAULT);\n\t}\n\n\tpublic void setManufacturingDefault(final boolean manufacturingDefault) {\n\t\tflags.put(SettingFlag.FLAG_MANUFACTURING_DEFAULT, manufacturingDefault);\n\t}\n\n\tpublic boolean isEasyChartColors() {\n\t\treturn flags.get(SettingFlag.FLAG_EASY_CHART_COLORS);\n\t}\n\n\tpublic void setEasyChartColors(final boolean easyChartColors) {\n\t\tflags.put(SettingFlag.FLAG_EASY_CHART_COLORS, easyChartColors);\n\t}\n\n\tpublic boolean isToolsLocked() {\n\t\treturn flags.get(SettingFlag.FLAG_LOCK_TOOLS);\n\t}\n\n\tpublic void setToolsLocked(final boolean toolsLocked) {\n\t\tflags.put(SettingFlag.FLAG_LOCK_TOOLS, toolsLocked);\n\t}\n\n\tpublic boolean isShowSubpileTree() {\n\t\treturn flags.get(SettingFlag.FLAG_SHOW_SUBPILE_TREE);\n\t}\n\n\tpublic void setShowSubpileTree(final boolean showSubpileTree) {\n\t\tflags.put(SettingFlag.FLAG_SHOW_SUBPILE_TREE, showSubpileTree);\n\t}\n\n\tpublic boolean isContainersShowItemID() {\n\t\treturn containersShowItemID;\n\t}\n\n\tpublic void setContainersShowItemID(final boolean containersShowItemID) {\n\t\tflags.put(SettingFlag.FLAG_CONTAINERS_SHOW_ITEM_ID, containersShowItemID);\n\t\tthis.containersShowItemID = containersShowItemID;\n\t}\n\n\tpublic boolean isTransactionHistory() {\n\t\treturn flags.get(SettingFlag.FLAG_TRANSACTION_HISTORY);\n\t}\n\n\tpublic void setTransactionHistory(final boolean transactionHistory) {\n\t\tflags.put(SettingFlag.FLAG_TRANSACTION_HISTORY, transactionHistory);\n\t}\n\n\tpublic boolean isJournalHistory() {\n\t\treturn flags.get(SettingFlag.FLAG_JOURNAL_HISTORY);\n\t}\n\n\tpublic void setJournalHistory(final boolean journalHistory) {\n\t\tflags.put(SettingFlag.FLAG_JOURNAL_HISTORY, journalHistory);\n\t}\n\n\tpublic boolean isIndustryJobsHistory() {\n\t\treturn flags.get(SettingFlag.FLAG_INDUSTRY_JOBS_HISTORY);\n\t}\n\n\tpublic void setIndustryJobsHistory(final boolean industryJobsHistory) {\n\t\tflags.put(SettingFlag.FLAG_INDUSTRY_JOBS_HISTORY, industryJobsHistory);\n\t}\n\n\tpublic boolean isAssetsContractsOwnerCorporation() {\n\t\treturn flags.get(SettingFlag.FLAG_ASSETS_CONTRACTS_OWNER_CORP);\n\t}\n\n\tpublic void setAssetsContractsOwnerCorporation(final boolean assetsContractsOwnerCorporation) {\n\t\tflags.put(SettingFlag.FLAG_ASSETS_CONTRACTS_OWNER_CORP, assetsContractsOwnerCorporation);\n\t}\n\n\tpublic boolean isAssetsContractsOwnerBoth() {\n\t\treturn flags.get(SettingFlag.FLAG_ASSETS_CONTRACTS_OWNER_BOTH);\n\t}\n\n\tpublic void setAssetsContractsOwnerBoth(final boolean assetsContractsOwnerBoth) {\n\t\tflags.put(SettingFlag.FLAG_ASSETS_CONTRACTS_OWNER_BOTH, assetsContractsOwnerBoth);\n\t}\n\n\tpublic boolean isColumnValueCache() {\n\t\treturn cellValueCache;\n\t}\n\n\tpublic void setCellValueCache(final boolean cellValueCache) {\n\t\tflags.put(SettingFlag.FLAG_CELL_VALUE_CACHE, cellValueCache);\n\t\tthis.cellValueCache = cellValueCache;\n\t}\n\n\tpublic boolean isLoadToolsBackground() {\n\t\treturn flags.get(SettingFlag.FLAG_LOAD_TOOLS_BACKGROUND);\n\t}\n\n\tpublic void setLoadToolsBackground(final boolean loadToolsBackground) {\n\t\tflags.put(SettingFlag.FLAG_LOAD_TOOLS_BACKGROUND, loadToolsBackground);\n\t}\n\n\tpublic boolean isLoadToolsStartup() {\n\t\treturn flags.get(SettingFlag.FLAG_LOAD_TOOLS_STARTUP);\n\t}\n\n\tpublic void setLoadToolsStartup(final boolean loadToolsStartup) {\n\t\tflags.put(SettingFlag.FLAG_LOAD_TOOLS_STARTUP, loadToolsStartup);\n\t}\n\n\tpublic boolean isEveGatecampCheckSet() {\n\t\treturn flags.get(SettingFlag.FLAG_EVE_GATECAMP_CHECK_SET);\n\t}\n\n\tpublic void setEveGatecampCheckSet(final boolean eveGatecampCheckSet) {\n\t\tflags.put(SettingFlag.FLAG_EVE_GATECAMP_CHECK_SET, eveGatecampCheckSet);\n\t}\n\n\tpublic boolean isEveGatecampCheckAlwaysOpen() {\n\t\treturn flags.get(SettingFlag.FLAG_EVE_GATECAMP_CHECK_ALWAYS_OPEN);\n\t}\n\n\tpublic void setEveGatecampCheckAlwaysOpen(final boolean eveGatecampCheckAlwaysOpen) {\n\t\tflags.put(SettingFlag.FLAG_EVE_GATECAMP_CHECK_ALWAYS_OPEN, eveGatecampCheckAlwaysOpen);\n\t}\n\n\tpublic boolean isEveGatecampCheckNeverOpen() {\n\t\treturn flags.get(SettingFlag.FLAG_EVE_GATECAMP_CHECK_NEVER_OPEN);\n\t}\n\t\n\tpublic void setEveGatecampCheckNeverOpen(final boolean eveGatecampCheckNeverOpen) {\n\t\tflags.put(SettingFlag.FLAG_EVE_GATECAMP_CHECK_NEVER_OPEN, eveGatecampCheckNeverOpen);\n\t}\n\t\t\n\tpublic boolean isEveGatecampCheckSecure() {\n\t\treturn flags.get(SettingFlag.FLAG_EVE_GATECAMP_CHECK_SECURE);\n\t}\n\t\n\tpublic void setEveGatecampCheckSecure(final boolean eveGatecampCheckSecure) {\n\t\tflags.put(SettingFlag.FLAG_EVE_GATECAMP_CHECK_SECURE, eveGatecampCheckSecure);\n\t}\n\n\tpublic boolean isEveGatecampCheckUnsecure() {\n\t\treturn flags.get(SettingFlag.FLAG_EVE_GATECAMP_CHECK_UNSECURE);\n\t}\n\t\n\tpublic void setEveGatecampCheckUnsecure(final boolean eveGatecampCheckUnsecure) {\n\t\tflags.put(SettingFlag.FLAG_EVE_GATECAMP_CHECK_UNSECURE, eveGatecampCheckUnsecure);\n\t}\n\n\tpublic boolean isMarketOrderHistory() {\n\t\treturn flags.get(SettingFlag.FLAG_MARKET_ORDER_HISTORY);\n\t}\n\n\tpublic void setMarketOrderHistory(final boolean marketOrderHistory) {\n\t\tflags.put(SettingFlag.FLAG_MARKET_ORDER_HISTORY, marketOrderHistory);\n\t}\n\n\tpublic boolean isContractHistory() {\n\t\treturn flags.get(SettingFlag.FLAG_SAVE_CONTRACT_HISTORY);\n\t}\n\n\tpublic void setContractHistory(final boolean contractHistory) {\n\t\tflags.put(SettingFlag.FLAG_SAVE_CONTRACT_HISTORY, contractHistory);\n\t}\n\n\tpublic boolean isMiningHistory() {\n\t\treturn flags.get(SettingFlag.FLAG_SAVE_MINING_HISTORY);\n\t}\n\n\tpublic void setMiningHistory(final boolean contractHistory) {\n\t\tflags.put(SettingFlag.FLAG_SAVE_MINING_HISTORY, contractHistory);\n\t}\n\n\tpublic MarketOrdersSettings getMarketOrdersSettings() {\n\t\treturn marketOrdersSettings;\n\t}\n\n\tpublic boolean isAskedCheckAllTracker() {\n\t\treturn flags.get(SettingFlag.FLAG_ASKED_CHECK_ALL_TRACKER);\n\t}\n\n\tpublic void setAskedCheckAllTracker(final boolean checkAllTracker) {\n\t\tflags.put(SettingFlag.FLAG_ASKED_CHECK_ALL_TRACKER, checkAllTracker);\n\t}\n\n\tpublic boolean isTrackerUseAssetPriceForSellOrders() {\n\t\treturn flags.get(SettingFlag.FLAG_TRACKER_USE_ASSET_PRICE_FOR_SELL_ORDERS);\n\t}\n\n\tpublic void setTrackerUseAssetPriceForSellOrders(final boolean checkAllTracker) {\n\t\tflags.put(SettingFlag.FLAG_TRACKER_USE_ASSET_PRICE_FOR_SELL_ORDERS, checkAllTracker);\n\t}\n\n\tpublic boolean isFocusEveOnlineOnEsiUiCalls() {\n\t\treturn flags.get(SettingFlag.FLAG_FOCUS_EVE_ONLINE_ON_ESI_UI_CALLS);\n\t}\n\n\tpublic void setFocusEveOnlineOnEsiUiCalls(final boolean focusEveOnlineOnEsiUiCalls) {\n\t\tflags.put(SettingFlag.FLAG_FOCUS_EVE_ONLINE_ON_ESI_UI_CALLS, focusEveOnlineOnEsiUiCalls);\n\t}\n\n\tpublic boolean isSaveToolsOnExit() {\n\t\treturn flags.get(SettingFlag.FLAG_SAVE_TOOLS_ON_EXIT);\n\t}\n\n\tpublic void setSaveToolsOnExit(final boolean saveToolsOnExit) {\n\t\tflags.put(SettingFlag.FLAG_SAVE_TOOLS_ON_EXIT, saveToolsOnExit);\n\t}\n\n\tpublic List<String> getShowTools() {\n\t\treturn showTools;\n\t}\n\n\tpublic ColorSettings getColorSettings() {\n\t\treturn colorSettings;\n\t}\n\n\tpublic List<Stockpile> getStockpiles() {\n\t\treturn stockpiles;\n\t}\n\n\tpublic StockpileGroupSettings getStockpileGroupSettings() {\n\t\treturn stockpileGroupSettings;\n\t}\n\n\tpublic int getStockpileColorGroup2() {\n\t\treturn stockpileColorGroup2;\n\t}\n\n\tpublic void setStockpileColorGroup2(int stockpileColorGroup1) {\n\t\tthis.stockpileColorGroup2 = stockpileColorGroup1;\n\t}\n\n\tpublic int getStockpileColorGroup3() {\n\t\treturn stockpileColorGroup3;\n\t}\n\n\tpublic void setStockpileColorGroup3(int stockpileColorGroup2) {\n\t\tthis.stockpileColorGroup3 = stockpileColorGroup2;\n\t}\n\n\t//Window\n\tpublic Point getWindowLocation() {\n\t\treturn windowLocation;\n\t}\n\n\tpublic void setWindowLocation(final Point windowLocation) {\n\t\tthis.windowLocation = windowLocation;\n\t}\n\n\tpublic boolean isWindowMaximized() {\n\t\treturn windowMaximized;\n\t}\n\n\tpublic void setWindowMaximized(final boolean windowMaximized) {\n\t\tthis.windowMaximized = windowMaximized;\n\t}\n\n\tpublic Dimension getWindowSize() {\n\t\treturn windowSize;\n\t}\n\n\tpublic void setWindowSize(final Dimension windowSize) {\n\t\tthis.windowSize = windowSize;\n\t}\n\n\tpublic boolean isWindowAutoSave() {\n\t\treturn windowAutoSave;\n\t}\n\n\tpublic void setWindowAutoSave(final boolean windowAutoSave) {\n\t\tthis.windowAutoSave = windowAutoSave;\n\t}\n\n\tpublic boolean isWindowAlwaysOnTop() {\n\t\treturn windowAlwaysOnTop;\n\t}\n\n\tpublic void setWindowAlwaysOnTop(final boolean windowAlwaysOnTop) {\n\t\tthis.windowAlwaysOnTop = windowAlwaysOnTop;\n\t}\n\n\tpublic boolean isSettingsLoadError() {\n\t\treturn settingsLoadError;\n\t}\n\n\tpublic void setSettingsLoadError(boolean settingsLoadError) {\n\t\tthis.settingsLoadError = settingsLoadError;\n\t}\n\n\tpublic Map<String, OverviewGroup> getOverviewGroups() {\n\t\treturn overviewGroups;\n\t}\n\n\tpublic static Date getNow() {\n\t\treturn new Date();\n\t}\n\n\tpublic static DateFormat getSettingsDateFormat() {\n\t\treturn new SimpleDateFormat(\"yyyy-MM-dd'T'HH:mm:ss.SSSZ\");\n\t}\n\n\tprivate static class SettingsLock {\n\n\t\tprivate boolean locked = false;\n\t\tprivate final SettingsQueue settingsQueue = new SettingsQueue();\n\n\t\tpublic boolean ignoreSave() {\n\t\t\treturn settingsQueue.ignoreSave();\n\t\t}\n\n\t\tpublic void saveStart() {\n\t\t\tsettingsQueue.saveStart();\n\t\t}\n\n\t\tpublic void saveEnd() {\n\t\t\tsettingsQueue.saveEnd();\n\t\t}\n\n\t\tpublic void waitForEmptySaveQueue() {\n\t\t\tsettingsQueue.waitForEmptySaveQueue();\n\t\t}\n\n\t\tpublic synchronized void lock(String msg) {\n\t\t\twhile (locked) {\n\t\t\t\ttry {\n\t\t\t\t\twait();\n\t\t\t\t} catch (InterruptedException ex) {\n\n\t\t\t\t}\n\t\t\t}\n\t\t\tlocked = true;\n\t\t\tLOG.debug(\"Settings Locked: \" + msg);\n\t\t}\n\n\t\tpublic synchronized void unlock(String msg) {\n\t\t\tlocked = false;\n\t\t\tLOG.debug(\"Settings Unlocked: \" + msg);\n\t\t\tnotify();\n\t\t}\n\t}\n\n\tprivate static class SettingsQueue {\n\n\t\tprivate short savesQueue = 0;\n\n\t\tpublic synchronized boolean ignoreSave() {\n\t\t\tLOG.debug(\"Save Queue: \" + savesQueue + \" ignore: \" + (savesQueue > 1));\n\t\t\treturn savesQueue > 1;\n\t\t}\n\n\t\tpublic synchronized void saveStart() {\n\t\t\tthis.savesQueue++;\n\t\t\tnotifyAll();\n\t\t}\n\n\t\tpublic synchronized void saveEnd() {\n\t\t\tthis.savesQueue--;\n\t\t\tnotifyAll();\n\t\t}\n\n\t\tpublic synchronized void waitForEmptySaveQueue() {\n\t\t\twhile (savesQueue > 0) {\n\t\t\t\ttry {\n\t\t\t\t\twait();\n\t\t\t\t} catch (InterruptedException ex) {\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static class EmptySettingsFactory implements SettingsFactory {\n\t\t@Override\n\t\tpublic Settings create() {\n\t\t\treturn new Settings();\n\t\t}\n\t}\n\n\tpublic static interface SettingsFactory {\n\t\tpublic Settings create();\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/SettingsUpdateListener.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\n/**\r\n * Listener for capturing settings updates.\r\n */\r\npublic interface SettingsUpdateListener {\r\n\r\n\t/**\r\n\t * Primary method called on settings update\r\n\t */\r\n\tvoid settingChanged();\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/StockpileGroupSettings.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\nimport java.util.Collections;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport java.util.TreeSet;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile;\r\n\r\n\r\npublic class StockpileGroupSettings {\r\n//Save/Load\r\n\tprivate final Map<Stockpile, String> stockpileGroups = new HashMap<>();\r\n\tprivate final Map<Stockpile, Boolean> stockpileExpanded = new HashMap<>();\r\n//GUI\r\n\t//List of groups\r\n\tprivate final Set<String> uniqueGroups = new TreeSet<>();\r\n\t//List stockpiles in group\r\n\tprivate final Map<String, List<Stockpile>> groupStockpiles = new HashMap<>();\r\n\t//Groups expanded or collapsed\r\n\tprivate final Map<String, Boolean> groupExpanded = new HashMap<>();\r\n\t//The first stockpile in each group\r\n\tprivate final Map<String, Stockpile> groupFirst = new HashMap<>();\r\n\r\n\tprivate void updateGroups() {\r\n\t\tList<Stockpile> sortedStockpiles = new ArrayList<>(stockpileGroups.keySet());\r\n\t\tCollections.sort(sortedStockpiles);\r\n\t\tuniqueGroups.clear();\r\n\t\tgroupStockpiles.clear();\r\n\t\tfor (Stockpile stockpile : sortedStockpiles) {\r\n\t\t\tString group = getGroup(stockpile);\r\n\t\t\tuniqueGroups.add(group);\r\n\t\t\tList<Stockpile> stockpiles = groupStockpiles.get(group);\r\n\t\t\tif (stockpiles == null) {\r\n\t\t\t\tstockpiles = new ArrayList<>();\r\n\t\t\t\tgroupStockpiles.put(group, stockpiles);\r\n\t\t\t}\r\n\t\t\tstockpiles.add(stockpile);\r\n\t\t}\r\n\t\t//Remove deleted groups\r\n\t\tgroupExpanded.keySet().retainAll(uniqueGroups);\r\n\t}\r\n\r\n\tpublic Map<Stockpile, String> getStockpileGroups() {\r\n\t\treturn stockpileGroups;\r\n\t}\r\n\r\n\tpublic List<Stockpile> getStockpiles(String group) {\r\n\t\treturn groupStockpiles.getOrDefault(group, new ArrayList<>());\r\n\t}\r\n\r\n\tpublic String getGroup(Stockpile stockpile) {\r\n\t\treturn stockpileGroups.getOrDefault(stockpile, \"\");\r\n\t}\r\n\r\n\tpublic void setGroup(Stockpile stockpile, String newGroup) {\r\n\t\tif (newGroup == null || newGroup.isEmpty()) {\r\n\t\t\treturn; //Invalid group\r\n\t\t}\r\n\t\tstockpileGroups.put(stockpile, newGroup);\r\n\t\tupdateGroups();\r\n\t}\r\n\r\n\tpublic void removeGroup(Stockpile stockpile) {\r\n\t\tstockpileGroups.remove(stockpile);\r\n\t\tstockpileExpanded.remove(stockpile); //No longer part of a group, so no longer tracked\r\n\t\tupdateGroups();\r\n\t}\r\n\r\n\tpublic Set<String> getGroups() {\r\n\t\treturn uniqueGroups;\r\n\t}\r\n\r\n\tpublic boolean isGroupExpanded(String group) {\r\n\t\treturn groupExpanded.getOrDefault(group, true);\r\n\t}\r\n\r\n\tpublic void setGroupExpanded(String group, boolean expanded) {\r\n\t\tgroupExpanded.put(group, expanded);\r\n\t}\r\n\r\n\tpublic boolean isStockpileExpanded(Stockpile stockpile) {\r\n\t\treturn stockpileExpanded.getOrDefault(stockpile, true);\r\n\t}\r\n\r\n\tpublic void setStockpileExpanded(Stockpile stockpile, boolean expanded) {\r\n\t\tstockpileExpanded.put(stockpile, expanded);\r\n\t}\r\n\r\n\tpublic void setStockpileExpanded(Collection<Stockpile> stockpiles, boolean expanded) {\r\n\t\tfor (Stockpile stockpile: stockpiles) {\r\n\t\t\tstockpileExpanded.put(stockpile, expanded);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void setGroupFirst(Map<String, Stockpile> groupFirst) {\r\n\t\tthis.groupFirst.clear();\r\n\t\tthis.groupFirst.putAll(groupFirst);\r\n\t}\r\n\r\n\tpublic boolean isGroupFirst(Stockpile stockpile) {\r\n\t\tString group = getGroup(stockpile);\r\n\t\tif (!isGroupExpanded(group)) {\r\n\t\t\treturn true; //Only one separator, it's always first\r\n\t\t}\r\n\t\tStockpile first = groupFirst.get(group);\r\n\t\tif (first == null) {\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn first.equals(stockpile);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/TempDirs.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport java.io.File;\r\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic enum TempDirs {\r\n\tDEFAULT(System.getProperty(\"java.io.tmpdir\")), //Default\r\n\tUSER_HOME(System.getProperty(\"user.home\")), //User Home Directory\r\n\tUSER_DIR(System.getProperty(\"user.dir\")), //jEveAssets Working Directory\r\n\tDATA_DIR(FileUtil.getPathDataDirectory()), //jEveAssets Data Directory\r\n\tPROGRAM_DIR(FileUtil.getStaticFile(\"\")), //jEveAssets Program Directory\r\n\t;\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(TempDirs.class);\r\n\tprivate static boolean fixed = false;\r\n\tprivate final String dir;\r\n\tprivate final File file;\r\n\r\n\tprivate TempDirs(String dir) {\r\n\t\tthis.dir = dir;\r\n\t\tthis.file = new File(dir);\r\n\t}\r\n\r\n\tpublic boolean isValid() {\r\n\t\treturn file.exists() && file.isDirectory() && file.canRead() && file.canWrite() && file.canExecute();\r\n\t}\r\n\r\n\tpublic String getDir() {\r\n\t\treturn dir;\r\n\t}\r\n\r\n\tpublic void setTmpDir() {\r\n\t\tSystem.setProperty(\"java.io.tmpdir\", dir);\r\n\t}\r\n\r\n\tpublic static void fixTempDir() {\r\n\t\tif (fixed) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tfor (TempDirs tempDirs : TempDirs.values()) {\r\n\t\t\tif (tempDirs.isValid()) {\r\n\t\t\t\ttempDirs.setTmpDir();\r\n\t\t\t\tLOG.info(\"Using \" + tempDirs.name() + \" for java.io.tmpdir (\" + tempDirs.getDir() + \")\");\r\n\t\t\t\tfixed = true;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/TrackerData.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport java.util.TreeSet;\r\nimport java.util.concurrent.locks.ReentrantReadWriteLock;\r\nimport net.nikr.eve.jeveasset.CliOptions;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.Value;\r\nimport net.nikr.eve.jeveasset.io.local.TrackerReader;\r\nimport net.nikr.eve.jeveasset.io.local.TrackerWriter;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class TrackerData {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(TrackerData.class);\r\n\tprivate static final Map<String, List<Value>> TRACKER_DATA = new HashMap<>(); //ownerID :: long\r\n\tprivate static final ReentrantReadWriteLock LOCK = new ReentrantReadWriteLock();\r\n\tprivate static final Object SAVE_QUEUE_SYNC = new Object();\r\n\tprivate static Integer SAVE_QUEUE = 0;\r\n\r\n\tpublic static void readLock() {\r\n\t\tLOCK.readLock().lock();\r\n\t}\r\n\r\n\tpublic static void readUnlock() {\r\n\t\tLOCK.readLock().unlock();\r\n\t}\r\n\r\n\tpublic static void writeLock() {\r\n\t\tLOCK.writeLock().lock();\r\n\t}\r\n\r\n\tpublic static void writeUnlock() {\r\n\t\tLOCK.writeLock().unlock();\r\n\t}\r\n\r\n\tpublic static void waitForEmptySaveQueue() {\r\n\t\twhile (!saveQueueEmpty()) {\r\n\t\t\tsynchronized(SAVE_QUEUE_SYNC) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tSAVE_QUEUE_SYNC.wait();\r\n\t\t\t\t} catch (InterruptedException ex) {\r\n\t\t\t\t\t//No problem\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void load() {\r\n\t\tMap<String, List<Value>> trackerData = TrackerReader.load();\r\n\t\tTrackerData.set(trackerData);\r\n\t}\r\n\r\n\tpublic static void save(String msg) {\r\n\t\tsave(msg, false);\r\n\t}\r\n\r\n\tpublic static void save(String msg, boolean wait) {\r\n\t\tif (saveQueueIgnore()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsaveQueueAdd();\r\n\t\tSave save = new Save(msg);\r\n\t\tsave.start();\r\n\t\tif (wait) {\r\n\t\t\ttry {\r\n\t\t\t\tsave.join();\r\n\t\t\t} catch (InterruptedException ex) {\r\n\t\t\t\t//No problem\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static Map<String, List<Value>> get() {\r\n\t\tif (CliOptions.get().isDebug() && LOCK.getReadHoldCount() == 0 && LOCK.getWriteHoldCount() == 0) {\r\n\t\t\tthrow new RuntimeException(\"Tracker Data not read locked\");\r\n\t\t}\r\n\t\treturn TRACKER_DATA;\r\n\t}\r\n\r\n\tpublic static void add(String owner, Value add) {\r\n\t\ttry {\r\n\t\t\tLOCK.writeLock().lock();\r\n\t\t\tList<Value> list = TRACKER_DATA.get(owner);\r\n\t\t\tif (list == null) {\r\n\t\t\t\tlist = new ArrayList<>();\r\n\t\t\t\tTRACKER_DATA.put(owner, list);\r\n\t\t\t}\r\n\t\t\tlist.add(add);\r\n\t\t} finally {\r\n\t\t\tLOCK.writeLock().unlock();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void addAll(Map<String, List<Value>> trackerData, boolean overwrite) {\r\n\t\ttry {\r\n\t\t\tLOCK.writeLock().lock();\r\n\t\t\tfor (Map.Entry<String, List<Value>> entry : trackerData.entrySet()) {\r\n\t\t\t\t//For each owner\r\n\t\t\t\tString owner = entry.getKey();\r\n\t\t\t\tList<Value> list = TRACKER_DATA.get(owner);\r\n\t\t\t\tif (list == null) { //Owner doesn't exist\r\n\t\t\t\t\tlist = new ArrayList<>();\r\n\t\t\t\t\tTRACKER_DATA.put(owner, list);\r\n\t\t\t\t}\r\n\t\t\t\t//Remove duplicates, while staying in order\r\n\t\t\t\tSet<Value> set = new TreeSet<>(Value.DATE_COMPARATOR);\r\n\t\t\t\tif (overwrite) {\r\n\t\t\t\t\tset.addAll(entry.getValue()); //Add new data (First)\r\n\t\t\t\t\tset.addAll(list); //Add old data (Second, only add if not already contains)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tset.addAll(list); //Add old data (First)\r\n\t\t\t\t\tset.addAll(entry.getValue()); //Add new data (Second, only add if not already contains)\r\n\t\t\t\t}\r\n\t\t\t\tlist.clear(); //Clear old data\r\n\t\t\t\tlist.addAll(set); //Set new merged data\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tLOCK.writeLock().unlock();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void set(Map<String, List<Value>> trackerData) {\r\n\t\tif (trackerData == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\ttry {\r\n\t\t\tLOCK.writeLock().lock();\r\n\t\t\tTRACKER_DATA.clear();\r\n\t\t\tTRACKER_DATA.putAll(trackerData);\r\n\t\t} finally {\r\n\t\t\tLOCK.writeLock().unlock();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void remove(String owner, Value remove) {\r\n\t\ttry {\r\n\t\t\tLOCK.writeLock().lock();\r\n\t\t\tList<Value> values = TRACKER_DATA.get(owner);\r\n\t\t\tif (values != null) {\r\n\t\t\t\tvalues.remove(remove);\r\n\t\t\t\tif (values.isEmpty()) { //Remove empty list\r\n\t\t\t\t\tTRACKER_DATA.remove(owner);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tLOCK.writeLock().unlock();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void removeAll(String owner, Collection<Value> remove) {\r\n\t\ttry {\r\n\t\t\tLOCK.writeLock().lock();\r\n\t\t\tList<Value> values = TRACKER_DATA.get(owner);\r\n\t\t\tif (values != null) {\r\n\t\t\t\tvalues.removeAll(remove);\r\n\t\t\t\tif (values.isEmpty()) { //Remove empty list\r\n\t\t\t\t\tTRACKER_DATA.remove(owner);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tLOCK.writeLock().unlock();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate synchronized static boolean saveQueueIgnore() {\r\n\t\treturn SAVE_QUEUE > 1;\r\n\t}\r\n\r\n\tprivate synchronized static void saveQueueAdd() {\r\n\t\tSAVE_QUEUE++;\r\n\t\tsynchronized(SAVE_QUEUE_SYNC) {\r\n\t\t\tSAVE_QUEUE_SYNC.notifyAll();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate synchronized static void saveQueueRemove() {\r\n\t\tSAVE_QUEUE--;\r\n\t\tsynchronized(SAVE_QUEUE_SYNC) {\r\n\t\t\tSAVE_QUEUE_SYNC.notifyAll();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate synchronized static boolean saveQueueEmpty() {\r\n\t\treturn SAVE_QUEUE == 0;\r\n\t}\r\n\r\n\tprivate static class Save extends Thread {\r\n\t\tprivate final String msg;\r\n\r\n\t\tpublic Save(String msg) {\r\n\t\t\tthis.msg = msg;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void run() {\r\n\t\t\tlong before = System.currentTimeMillis();\r\n\r\n\t\t\tLOG.info(\"Saving tracker data: \" + msg);\r\n\t\t\tTrackerData.readLock();\r\n\t\t\tTrackerWriter.save();\r\n\t\t\tTrackerData.readUnlock();\r\n\t\t\tsaveQueueRemove();\r\n\t\t\tLOG.debug(\"Tracker data saved in: \" + (System.currentTimeMillis() - before) + \"ms\");\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/TrackerSettings.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.data.settings;\n\nimport java.util.Date;\nimport java.util.EnumSet;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport net.nikr.eve.jeveasset.gui.tabs.tracker.TrackerDate;\nimport net.nikr.eve.jeveasset.gui.tabs.tracker.TrackerNote;\nimport net.nikr.eve.jeveasset.gui.tabs.tracker.TrackerSkillPointFilter;\n\n\npublic class TrackerSettings {\n\n\tpublic enum ShowOption {\n\t\tALL,\n\t\tTOTAL,\n\t\tWALLET,\n\t\tASSET,\n\t\tIMPLANT,\n\t\tSELL_ORDER,\n\t\tESCROW,\n\t\tESCROW_TO_COVER,\n\t\tMANUFACTURING,\n\t\tCOLLATERAL,\n\t\tCONTRACT,\n\t\tSKILL_POINT;\n\t}\n\n\tpublic enum DisplayType {\n\t\tLINEAR,\n\t\tLOGARITHMIC;\n\t}\n\n\tprivate boolean allProfiles = false;\n\tprivate boolean characterCorporations = false;\n\tprivate DisplayType displayType = DisplayType.LINEAR;\n\tprivate final Map<String, Boolean> filters = new HashMap<>();\n\tprivate Date fromDate = null;\n\tprivate boolean includeZero = true;\n\tprivate final Map<TrackerDate, TrackerNote> notes = new HashMap<>();\n\tprivate boolean selectNew = true;\n\tprivate List<String> selectedOwners = null;\n\tprivate final Set<ShowOption> showOptions = EnumSet.noneOf(ShowOption.class);\n\tprivate final Map<String, TrackerSkillPointFilter> skillPointFilters = new HashMap<>();\n\tprivate Date toDate = null;\n\n\tpublic TrackerSettings() {\n\t\tshowOptions.add(ShowOption.ALL);\n\t}\n\n\tpublic boolean isAllProfiles() {\n\t\treturn allProfiles;\n\t}\n\n\tpublic void setAllProfiles(boolean allProfiles) {\n\t\tthis.allProfiles = allProfiles;\n\t}\n\n\tpublic boolean isCharacterCorporations() {\n\t\treturn characterCorporations;\n\t}\n\n\tpublic void setCharacterCorporations(boolean characterCorporations) {\n\t\tthis.characterCorporations = characterCorporations;\n\t}\n\n\tpublic DisplayType getDisplayType() {\n\t\treturn displayType;\n\t}\n\n\tpublic void setDisplayType(DisplayType displayType) {\n\t\tthis.displayType = displayType;\n\t}\n\n\tpublic Map<String, Boolean> getFilters() {\n\t\treturn filters;\n\t}\n\n\tpublic Date getFromDate() {\n\t\treturn fromDate;\n\t}\n\n\tpublic void setFromDate(Date fromDate) {\n\t\tthis.fromDate = fromDate;\n\t}\n\n\tpublic boolean isIncludeZero() {\n\t\treturn includeZero;\n\t}\n\n\tpublic void setIncludeZero(boolean includeZero) {\n\t\tthis.includeZero = includeZero;\n\t}\n\n\tpublic Map<TrackerDate, TrackerNote> getNotes() {\n\t\treturn notes;\n\t}\n\n\tpublic boolean isSelectNew() {\n\t\treturn selectNew;\n\t}\n\n\tpublic void setSelectNew(boolean selectNew) {\n\t\tthis.selectNew = selectNew;\n\t}\n\n\tpublic List<String> getSelectedOwners() {\n\t\treturn selectedOwners;\n\t}\n\n\tpublic void setSelectedOwners(List<String> trackerOwners) {\n\t\tthis.selectedOwners = trackerOwners;\n\t}\n\n\tpublic Set<ShowOption> getShowOptions() {\n\t\treturn showOptions;\n\t}\n\n\t/***\n\t * Helper function to return if the show options has the {@code searchOption}. Null {@code searchOption} will return\n\t * false.\n\t * @param searchOption The options to look for in the show options.\n\t * @return True if the {@code searchOption} is found. False if it is not found or {@code searchOption} is null.\n\t */\n\tpublic boolean hasShowOption(ShowOption searchOption) {\n\t\tif (searchOption == null) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.showOptions.contains(searchOption);\n\t}\n\n\tpublic Map<String, TrackerSkillPointFilter> getSkillPointFilters() {\n\t\treturn skillPointFilters;\n\t}\n\n\tpublic Date getToDate() {\n\t\treturn toDate;\n\t}\n\n\tpublic void setToDate(Date toDate) {\n\t\tthis.toDate = toDate;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/UserItem.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.data.settings;\n\n\npublic abstract class UserItem<K, V extends Comparable<V>> implements Comparable<UserItem<K, V>> {\n\n\tprivate V value;\n\tprivate String name;\n\tprivate K key;\n\n\tpublic UserItem(final UserItem<K, V> item) {\n\t\tthis(item.getValue(), item.getKey(), item.getName());\n\t}\n\n\tpublic UserItem(final V value, final K key, final String name) {\n\t\tthis.value = value;\n\t\tthis.key = key;\n\t\tthis.name = name;\n\t}\n\n\tpublic K getKey() {\n\t\treturn key;\n\t}\n\n\tpublic V getValue() {\n\t\treturn value;\n\t}\n\n\tpublic void setValue(final V value) {\n\t\tthis.value = value;\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic abstract String getValueFormatted();\n\tpublic abstract int compare(UserItem<K, V> o1, UserItem<K, V> o2);\n\n\t@Override\n\tpublic int compareTo(final UserItem<K, V> o) {\n\t\treturn compare(this, o);\n\t}\n\n\t@Override\n\tpublic boolean equals(final Object obj) {\n\t\tif (obj == null) {\n\t\t\treturn false;\n\t\t}\n\t\tif (getClass() != obj.getClass()) {\n\t\t\treturn false;\n\t\t}\n\t\tfinal UserItem<?, ?> other = (UserItem<?, ?>) obj;\n\t\tif (this.value != other.value && (this.value == null || !this.value.equals(other.value))) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this.key != other.key && (this.key == null || !this.key.equals(other.key))) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic int hashCode() {\n\t\tint hash = 7;\n\t\thash = 41 * hash + (this.value != null ? this.value.hashCode() : 0);\n\t\thash = 41 * hash + (this.key != null ? this.key.hashCode() : 0);\n\t\treturn hash;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/tag/Tag.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings.tag;\r\n\r\nimport java.util.HashSet;\r\nimport java.util.Set;\r\n\r\n\r\npublic class Tag implements Comparable<Tag> {\r\n\tprivate String name;\r\n\tprivate TagColor color;\r\n\tprivate final Set<TagID> ids = new HashSet<TagID>();\r\n\r\n\tpublic Tag(String name, TagColor color) {\r\n\t\tthis.name = name;\r\n\t\tthis.color = color;\r\n\t}\r\n\r\n\tpublic String getName() {\r\n\t\treturn name;\r\n\t}\r\n\r\n\tpublic TagColor getColor() {\r\n\t\treturn color;\r\n\t}\r\n\r\n\tpublic final Set<TagID> getIDs() {\r\n\t\treturn ids;\r\n\t}\r\n\r\n\tpublic void update(Tag tag) {\r\n\t\tthis.name = tag.getName();\r\n\t\tthis.color = tag.getColor();\r\n\t}\r\n\r\n\tpublic void setColor(TagColor color) {\r\n\t\tthis.color = color;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(Tag o) {\r\n\t\treturn this.getName().compareToIgnoreCase(o.getName());\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 5;\r\n\t\thash = 97 * hash + (this.name != null ? this.name.hashCode() : 0);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal Tag other = (Tag) obj;\r\n\t\tif ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/tag/TagColor.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings.tag;\r\n\r\nimport java.awt.Color;\r\n\r\n\r\npublic class TagColor {\r\n\r\n\tprivate static final TagColor[] VALUES = {\r\n\t\tnew TagColor(Color.WHITE, Color.BLACK), //White and black\r\n\t\tnew TagColor(Color.WHITE, Color.RED.darker().darker()), //White and red\r\n\t\tnew TagColor(Color.WHITE, Color.GREEN.darker().darker()), //White and green\r\n\t\tnew TagColor(Color.WHITE, Color.BLUE.darker().darker()), //White and blue\r\n\t\tnew TagColor(Color.LIGHT_GRAY, Color.BLACK), //Gray\r\n\t\tnew TagColor(Color.BLACK, Color.WHITE), //Black\r\n\t\tnew TagColor(Color.CYAN, Color.BLACK), //Cyan\r\n\t\tnew TagColor(Color.BLUE, Color.WHITE), //Blue\r\n\t\tnew TagColor(Color.MAGENTA, Color.BLACK), //Magenta\r\n\t\tnew TagColor(Color.PINK, Color.BLACK), //Pink\r\n\t\tnew TagColor(Color.RED, Color.BLACK), //Red\r\n\t\tnew TagColor(Color.ORANGE, Color.BLACK), //Orange\r\n\t\tnew TagColor(Color.YELLOW, Color.BLACK), //Yellow\r\n\t\tnew TagColor(Color.GREEN, Color.BLACK), //Green\r\n\t};\r\n\r\n\tprivate Color backgroundColor;\r\n\tprivate Color foregroundColor;\r\n\tprivate String backgroundHtml;\r\n\tprivate String foregroundHtml;\r\n\r\n\tpublic TagColor(Color background, Color foreground) {\r\n\t\tthis(colorToHex(background), colorToHex(foreground));\r\n\t}\r\n\r\n\tpublic TagColor(String background, String foreground) {\r\n\t\tthis.backgroundColor = Color.decode(\"0x\"+background);\r\n\t\tthis.foregroundColor = Color.decode(\"0x\"+foreground);\r\n\t\tthis.backgroundHtml = background;\r\n\t\tthis.foregroundHtml = foreground;\r\n\t}\r\n\r\n\tpublic Color getBackground() {\r\n\t\treturn backgroundColor;\r\n\t}\r\n\r\n\tpublic Color getForeground() {\r\n\t\treturn foregroundColor;\r\n\t}\r\n\r\n\tpublic String getBackgroundHtml() {\r\n\t\treturn backgroundHtml;\r\n\t}\r\n\r\n\tpublic String getForegroundHtml() {\r\n\t\treturn foregroundHtml;\r\n\t}\r\n\r\n\tpublic static TagColor[] getValues() {\r\n\t\treturn VALUES;\r\n\t}\r\n\r\n\tprivate static String colorToHex(Color color) {\r\n\t\tString rgb = Integer.toHexString(color.getRGB());\r\n\t\treturn rgb.substring(2, rgb.length());\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/tag/TagID.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings.tag;\r\n\r\nimport java.util.Objects;\r\n\r\n\r\npublic class TagID {\r\n\tprivate final String tool;\r\n\tprivate final long id;\r\n\tprivate final double d;\r\n\r\n\tpublic TagID(String tool, long id) {\r\n\t\tthis(tool, id, 0);\r\n\t}\r\n\t\t\r\n\tpublic TagID(String tool, long id, double d) {\r\n\t\tthis.tool = tool;\r\n\t\tthis.id = id;\r\n\t\tthis.d = d;\r\n\t}\r\n\r\n\tpublic String getTool() {\r\n\t\treturn tool;\r\n\t}\r\n\r\n\tpublic long getID() {\r\n\t\treturn id;\r\n\t}\r\n\r\n\tpublic double getDouble() {\r\n\t\treturn d;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 5;\r\n\t\thash = 67 * hash + Objects.hashCode(this.tool);\r\n\t\thash = 67 * hash + (int) (this.id ^ (this.id >>> 32));\r\n\t\thash = 67 * hash + (int) (Double.doubleToLongBits(this.d) ^ (Double.doubleToLongBits(this.d) >>> 32));\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal TagID other = (TagID) obj;\r\n\t\tif (this.id != other.id) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (Double.doubleToLongBits(this.d) != Double.doubleToLongBits(other.d)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn Objects.equals(this.tool, other.tool);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/tag/TagUpdate.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings.tag;\r\n\r\n\r\npublic interface TagUpdate {\r\n\tpublic void updateTags();\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/tag/Tags.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings.tag;\r\n\r\nimport ca.odell.glazedlists.GlazedLists;\r\nimport java.awt.Font;\r\nimport java.util.Collection;\r\nimport java.util.Objects;\r\nimport java.util.TreeSet;\r\nimport javax.swing.BorderFactory;\r\nimport javax.swing.Box;\r\nimport javax.swing.BoxLayout;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JPanel;\r\nimport net.nikr.eve.jeveasset.gui.shared.ColorUtil;\r\nimport net.nikr.eve.jeveasset.i18n.General;\r\n\r\n\r\npublic class Tags extends TreeSet<Tag> implements Comparable<Tags>{\r\n\r\n\tprivate static Font emptyFont = null;\r\n\tprivate static Font plainFont = null;\r\n\tprivate String tags;\r\n\tprivate String html;\r\n\tprivate final JPanel jPanel;\r\n\tprivate Font font = null;\r\n\r\n\tpublic Tags() {\r\n\t\tsuper(GlazedLists.comparableComparator());\r\n\t\tjPanel = new JPanel();\r\n\t\tBoxLayout layout = new BoxLayout(jPanel, BoxLayout.X_AXIS);\r\n\t\tjPanel.setLayout(layout);\r\n\r\n\t\tupdateTags();\r\n\t}\r\n\r\n\tpublic static void setFont(Font font) {\r\n\t\tif (plainFont == null) {\r\n\t\t\tplainFont = font;\r\n\t\t\temptyFont = new Font(font.getName(), Font.ITALIC, font.getSize());\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean add(Tag e) {\r\n\t\tboolean add = super.add(e);\r\n\t\tupdateTags();\r\n\t\treturn add;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean addAll(Collection<? extends Tag> c) {\r\n\t\tboolean addAll = super.addAll(c);\r\n\t\tupdateTags();\r\n\t\treturn addAll;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean remove(Object o) {\r\n\t\tboolean remove = super.remove(o);\r\n\t\tupdateTags();\r\n\t\treturn remove;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean removeAll(Collection<?> c) {\r\n\t\tboolean removeAll = super.removeAll(c);\r\n\t\tupdateTags();\r\n\t\treturn removeAll;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void clear() {\r\n\t\tsuper.clear();\r\n\t\tupdateTags();\r\n\t}\r\n\r\n\tpublic final void updateTags() {\r\n\t\tupdateString();\r\n\t\tupdatePanel();\r\n\t\tupdateHTML();\r\n\t}\r\n\r\n\tpublic final void updateFont() {\r\n\t\tif (font == null || !font.equals(plainFont)) {\r\n\t\t\tfont = plainFont;\r\n\t\t\tupdatePanel();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void updateString() {\r\n\t\tStringBuilder sb = new StringBuilder();\r\n\t\tboolean first = true;\r\n\t\tfor (Tag tag : this) {\r\n\t\t\tif (first) {\r\n\t\t\t\tfirst = false;\r\n\t\t\t} else {\r\n\t\t\t\tsb.append(\" \");\r\n\t\t\t}\r\n\t\t\tsb.append(tag.getName());\r\n\t\t}\r\n\t\tif (isEmpty()) {\r\n\t\t\ttags = General.get().none();\r\n\t\t} else {\r\n\t\t\ttags = sb.toString();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void updatePanel() {\r\n\t\tjPanel.removeAll();\r\n\t\tboolean first = true;\r\n\t\tfor (Tag tag : this) {\r\n\t\t\tif (first) {\r\n\t\t\t\tfirst = false;\r\n\t\t\t} else {\r\n\t\t\t\tjPanel.add(Box.createHorizontalStrut(3));\r\n\t\t\t}\r\n\t\t\tJLabel jLabel = new JLabel(tag.getName());\r\n\t\t\tif (plainFont != null) {\r\n\t\t\t\tjLabel.setFont(plainFont);\r\n\t\t\t}\r\n\t\t\tjLabel.setOpaque(true);\r\n\t\t\tjLabel.setBackground(tag.getColor().getBackground());\r\n\t\t\tjLabel.setForeground(tag.getColor().getForeground());\r\n\t\t\tjLabel.setBorder(BorderFactory.createEmptyBorder(0, 3, 0, 2));\r\n\t\t\tjPanel.add(jLabel);\r\n\t\t}\r\n\t\tif (isEmpty()) {\r\n\t\t\tJLabel jLabel = new JLabel(General.get().none());\r\n\t\t\tif (emptyFont != null) {\r\n\t\t\t\tjLabel.setFont(emptyFont);\r\n\t\t\t}\r\n\t\t\tif (ColorUtil.isBrightColor(jLabel.getBackground())) { //Light background color\r\n\t\t\t\tjLabel.setForeground(jLabel.getBackground().darker().darker().darker());\r\n\t\t\t} else { //Dark background color\r\n\t\t\t\tjLabel.setForeground(jLabel.getBackground().brighter().brighter());\r\n\t\t\t}\r\n\t\t\tjPanel.add(jLabel);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void updateHTML() {\r\n\t\tStringBuilder builder = new StringBuilder();\r\n\t\tboolean first = true;\r\n\t\tfor (Tag tag : this) {\r\n\t\t\tif (first) {\r\n\t\t\t\tfirst = false;\r\n\t\t\t} else {\r\n\t\t\t\tbuilder.append(\"&nbsp;\");\r\n\t\t\t}\r\n\t\t\tbuilder.append(\"<span_style=\\\"\");\r\n\t\t\tbuilder.append(\"background-color:_#\");\r\n\t\t\tbuilder.append(tag.getColor().getBackgroundHtml());\r\n\t\t\tbuilder.append(\";_\");\r\n\t\t\tbuilder.append(\"color:_#\");\r\n\t\t\tbuilder.append(tag.getColor().getForegroundHtml());\r\n\t\t\tbuilder.append(\";_\");\r\n\t\t\tbuilder.append(\"\\\">\");\r\n\t\t\tbuilder.append(\" \");\r\n\t\t\tbuilder.append(tag.getName());\r\n\t\t\tbuilder.append(\" \");\r\n\t\t\tbuilder.append(\"</span>\");\r\n\t\t}\r\n\t\thtml = builder.toString();\r\n\t}\r\n\r\n\tpublic JPanel getPanel() {\r\n\t\treturn jPanel;\r\n\t}\r\n\r\n\tpublic String getHtml() {\r\n\t\treturn html;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn tags;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(Tags o) {\r\n\t\tif (isEmpty() && o.isEmpty()) {\r\n\t\t\treturn 0;\r\n\t\t} else if (isEmpty() && !o.isEmpty()) {\r\n\t\t\treturn 1;\r\n\t\t} else if (!isEmpty() && o.isEmpty()) {\r\n\t\t\treturn -1;\r\n\t\t} else {\r\n\t\t\treturn toString().compareTo(o.toString());\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 3;\r\n\t\thash = 89 * hash + Objects.hashCode(this.tags);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal Tags other = (Tags) obj;\r\n\t\tif (!Objects.equals(this.tags, other.tags)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n}"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/types/BlueprintType.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings.types;\r\n\r\n\r\npublic interface BlueprintType {\r\n\tpublic boolean isBPO();\r\n\tpublic boolean isBPC();\r\n\tpublic int getRuns();\r\n\tpublic int getMaterialEfficiency();\r\n\tpublic int getTimeEfficiency();\r\n\tpublic Integer getTypeID();\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/types/CorporationType.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings.types;\r\n\r\n\r\npublic interface CorporationType {\r\n\tpublic Integer getCorporationID();\r\n\tpublic String getCorporationName();\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/types/EditableLocationType.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings.types;\r\n\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\n\r\n\r\npublic interface EditableLocationType extends LocationType {\r\n\r\n\tpublic void setLocation(MyLocation location);\r\n\r\n\tpublic long getLocationID();\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/types/EditablePriceType.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings.types;\r\n\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\n\r\n\r\npublic interface EditablePriceType extends PriceType {\r\n\tpublic void setDynamicPrice(double price);\r\n\tpublic boolean isBPC();\r\n\tpublic Item getItem();\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/types/EsiType.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings.types;\r\n\r\n\r\npublic interface EsiType {\r\n\tpublic boolean archive();\r\n\tpublic void setESI(boolean esi);\r\n\tpublic boolean isESI();\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/types/ItemType.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings.types;\r\n\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\n\r\n\r\npublic interface ItemType {\r\n\tpublic Item getItem();\r\n\tpublic long getItemCount();\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/types/LastTransactionType.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings.types;\r\n\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Percent;\r\n\r\n\r\npublic interface LastTransactionType {\r\n\r\n\tpublic double getTransactionPrice();\r\n\tpublic double getTransactionProfitDifference();\r\n\tpublic Percent getTransactionProfitPercent();\r\n\tdefault double getTransactionMargin() {\r\n\t\treturn getTransactionPrice() + (getTransactionPrice() / 100.0 * Settings.get().getTransactionProfitMargin());\r\n\t}\r\n\tpublic void setTransactionPrice(double transactionPrice);\r\n\tpublic void setTransactionProfit(double transactionProfit);\r\n\tpublic void setTransactionProfitPercent(Percent transactionProfitPercent);\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/types/LocationType.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings.types;\r\n\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\n\r\n\r\npublic interface LocationType {\r\n\tpublic MyLocation getLocation();\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/types/LocationsType.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings.types;\r\n\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\n\r\n\r\npublic interface LocationsType {\r\n\tpublic Set<MyLocation> getLocations();\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/types/MarketDetailType.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.data.settings.types;\n\nimport javax.swing.JButton;\n\n\npublic interface MarketDetailType {\n\tpublic JButton getButton();\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/types/OwnersType.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings.types;\r\n\r\nimport java.util.Set;\r\n\r\n\r\npublic interface OwnersType {\r\n\tpublic Set<Long> getOwners();\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/types/PriceType.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings.types;\r\n\r\n\r\npublic interface PriceType {\r\n\tpublic Double getDynamicPrice();\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/data/settings/types/TagsType.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.data.settings.types;\r\n\r\nimport net.nikr.eve.jeveasset.data.settings.tag.TagID;\r\nimport net.nikr.eve.jeveasset.data.settings.tag.Tags;\r\n\r\n\r\npublic interface TagsType {\r\n\tpublic Tags getTags();\r\n\tpublic void setTags(Tags tags);\r\n\tpublic TagID getTagID();\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/AboutDialog.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs;\n\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.net.URL;\nimport javax.swing.BorderFactory;\nimport javax.swing.GroupLayout;\nimport javax.swing.JButton;\nimport javax.swing.JComponent;\nimport javax.swing.JEditorPane;\nimport javax.swing.JLabel;\nimport javax.swing.JScrollPane;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.Colors;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\nimport net.nikr.eve.jeveasset.i18n.DialoguesAbout;\nimport net.nikr.eve.jeveasset.io.online.Updater;\nimport net.nikr.eve.jeveasset.io.shared.DesktopUtil;\n\n\npublic class AboutDialog extends JDialogCentered {\n\n\tprivate enum AboutAction {\n\t\tCLOSE\n\t}\n\n\tprivate final JButton jClose;\n\n\tpublic AboutDialog(final Program program) {\n\t\tsuper(program, DialoguesAbout.get().about(), Images.DIALOG_ABOUT.getImage());\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tJLabel jIcon = new JLabel();\n\t\tjIcon.setIcon(Images.MISC_ASSETS_64.getIcon());\n\n\t\tJEditorPane jProgram = createEditorPane(false,\n\t\t\t\t\"<div style=\\\"font-size: 30pt;\\\"><b>\" + Program.PROGRAM_NAME + \"</b></div>\"\n\t\t\t\t+ \"Copyright &copy; 2009-2026 Contributors<br>\"\n\t\t\t\t);\n\n\t\tString s = Updater.getPackageMaintainers();\n\t\tStringBuilder packageManager = new StringBuilder();\n\t\tif (s != null) {\n\t\t\tString[] names = s.split(\",\");\n\t\t\tpackageManager.append(\"<b>Package Maintainers</b><br>\");\n\t\t\tfor (String name : names) {\n\t\t\t\tpackageManager.append(\"&nbsp;\");\n\t\t\t\tpackageManager.append(name.trim());\n\t\t\t\tpackageManager.append(\"<br>\");\n\t\t\t}\n\t\t\tpackageManager.append(\"<br>\");\n\t\t}\n\n\t\tJEditorPane jInfo = createEditorPane(\n\t\t\t\t\"<b>Version</b><br>\"\n\t\t\t\t+ \"&nbsp;\" + Program.PROGRAM_VERSION + \"<br>\"\n\t\t\t\t+ \"<br>\"\n\t\t\t\t+ \"<b>Data</b><br>\"\n\t\t\t\t+ \"&nbsp;\" + program.getProgramDataVersion() + \"<br>\"\n\t\t\t\t+ \"<br>\"\n\t\t\t\t+ \"<b>License</b><br>\"\n\t\t\t\t+ \"&nbsp;<a href=\\\"http://www.gnu.org/licenses/old-licenses/gpl-2.0.html\\\">GNU General Public License 2.0</a><br>\"\n\t\t\t\t+ \"<br>\"\n\t\t\t\t+ \"<b>www</b><br>\"\n\t\t\t\t+ \"&nbsp;<a href=\\\"\" + Program.PROGRAM_HOMEPAGE + \"\\\">Homepage</a> (download and source)<br>\"\n\t\t\t\t+ \"&nbsp;<a href=\\\"https://github.com/GoldenGnu/jeveassets\\\">GitHub Project</a> (developers)<br>\"\n\t\t\t\t+ \"&nbsp;<a href=\\\"https://forums.eveonline.com/t/13255\\\">Forum Thread</a> (feedback)<br>\"\n\t\t\t\t+ \"&nbsp;<a href=\\\"https://wiki.jeveassets.org\\\">Wiki</a> (user documentation)<br>\"\n\t\t\t\t+ \"<br>\"\n\t\t\t\t+ \"<b>Developers</b><br>\"\n\t\t\t\t+ \"&nbsp;Niklas Kyster Rasmussen (Golden Gnu)<br>\"\n\t\t\t\t+ \"&nbsp;Dultas<br>\"\n\t\t\t\t+ \"&nbsp;Tsuro Tsero<br>\"\n\t\t\t\t+ \"<br>\"\n\t\t\t\t+ \"<b>Testers</b><br>\"\n\t\t\t\t+ \"&nbsp;Huzid<br>\"\t\n\t\t\t\t+ \"<br>\"\n\t\t\t\t+ \"<b>Contributors</b><br>\"\n\t\t\t\t+ \"&nbsp;Flaming Candle<br>\"\n\t\t\t\t+ \"&nbsp;Jochen Bedersdorfer<br>\"\n\t\t\t\t+ \"&nbsp;TryfanMan<br>\"\n\t\t\t\t+ \"&nbsp;Jan<br>\"\n\t\t\t\t+ \"&nbsp;Ima Sohmbadi<br>\"\n\t\t\t\t+ \"&nbsp;Saulvin<br>\"\n\t\t\t\t+ \"&nbsp;AnrDaemon<br>\"\n\t\t\t\t+ \"&nbsp;Madetara (Ray Kavier)<br>\"\n\t\t\t\t+ \"&nbsp;Kaylee Syntax<br>\"\n\t\t\t\t+ \"&nbsp;Inoruuk<br>\"\n\t\t\t\t+ \"&nbsp;Burberius<br>\"\n\t\t\t\t+ \"&nbsp;Lazaren<br>\"\n\t\t\t\t+ \"&nbsp;Boran Lordsworth<br>\"\n\t\t\t\t+ \"&nbsp;Ed Thelleres<br>\"\n\t\t\t\t+ \"&nbsp;Salartarium<br>\"\n\t\t\t\t+ \"&nbsp;WildGear<br>\"\n\t\t\t\t+ \"&nbsp;snipereagle1<br>\"\n\t\t\t\t+ \"&nbsp;Ansirane Solette<br>\"\n\t\t\t\t+ \"<br>\"\n\t\t\t\t+ \"<b>Retired Testers</b><br>\"\n\t\t\t\t+ \"&nbsp;Varo Jan<br>\"\n\t\t\t\t+ \"&nbsp;Scrapyard Bob<br>\"\n\t\t\t\t+ \"&nbsp;Johann Hemphill<br>\"\n\t\t\t\t+ \"&nbsp;Tomasz (kitsibas) Wiktorski<br>\"\n\t\t\t\t+ \"<br>\"\n\t\t\t\t+ packageManager.toString()\n\t\t\t\t+ \"<b>Special Thanks</b><br>\"\n\t\t\t\t+ \"&nbsp;jEveAssets is heavily based on the user interface in EVE Asset Manager by William J. Rogers<br>\"\n\t\t\t\t+ \"<br>\"\n\t\t\t\t+ \"<b>Content</b><br>\"\n\t\t\t\t+ \"&nbsp;<a href=\\\"https://www.eveonline.com/\\\">EVE-Online</a> (api and sde)<br> \"\n\t\t\t\t+ \"&nbsp;<a href=\\\"https://market.fuzzwork.co.uk/api/\\\">fuzzwork.co.uk</a> (price data api)<br>\"\n\t\t\t\t+ \"&nbsp;<a href=\\\"https://janice.e-351.com/api/rest/docs/index.html\\\">Janice</a> (price data api)<br>\"\n\t\t\t\t+ \"&nbsp;<a href=\\\"https://github.com/zKillboard/zKillboard/wiki/API-(Prices)\\\">zKillboard</a> (price history api)<br>\"\n\t\t\t\t+ \"&nbsp;<a href=\\\"https://docs.everef.net/datasets/reference-data.html\\\">EVE Ref</a> (reference data api)<br>\"\n\t\t\t\t+ \"&nbsp;<a href=\\\"https://sde.hoboleaks.space/\\\">Hoboleaks</a> (data export)<br>\"\n\t\t\t\t+ \"&nbsp;<a href=\\\"http://www.famfamfam.com/lab/icons/silk/\\\">Silk icons</a> (icons)<br>\"\n\t\t\t\t+ \"<br>\"\n\t\t\t\t+ \"<b>Libraries</b><br>\"\n\t\t\t\t+ \"&nbsp;<a href=\\\"http://publicobject.com/glazedlists/\\\">Glazed Lists</a> (table sorting and filtering)<br> \"\n\t\t\t\t+ \"&nbsp;<a href=\\\"http://super-csv.github.io/super-csv/\\\">Super CSV</a> (csv export)<br> \"\n\t\t\t\t+ \"&nbsp;<a href=\\\"https://github.com/burberius/eve-esi\\\">eve-esi</a> (esi endpoints)<br> \"\n\t\t\t\t+ \"&nbsp;<a href=\\\"https://github.com/LGoodDatePicker/LGoodDatePicker\\\">LGoodDatePicker</a> (date input)<br> \"\n\t\t\t\t+ \"&nbsp;<a href=\\\"https://www.jfree.org/jfreechart/\\\">JFreeChart</a> (charts)<br> \"\n\t\t\t\t+ \"&nbsp;<a href=\\\"https://junit.org\\\">JUnit</a> (unit testing)<br>\"\n\t\t\t\t+ \"&nbsp;<a href=\\\"https://www.slf4j.org/\\\">slf4J</a> (logging)<br>\"\n\t\t\t\t+ \"&nbsp;<a href=\\\"https://logback.qos.ch/\\\">logback</a> (logging)<br>\"\n\t\t\t\t+ \"&nbsp;<a href=\\\"https://github.com/xerial/sqlite-jdbc\\\">SQLite</a> (database)<br>\"\n\t\t\t\t+ \"&nbsp;<a href=\\\"https://www.formdev.com/flatlaf\\\">FlatLaf</a> (look and feel and native mac os x support)<br>\"\n\t\t\t\t+ \"&nbsp;<a href=\\\"https://github.com/GoldenGnu/price\\\">Pricing</a> (parsing price data api)<br>\"\n\t\t\t\t+ \"&nbsp;<a href=\\\"https://github.com/GoldenGnu/routing\\\">Routing</a> (routing tool)<br>\"\n\t\t\t\t+ \"&nbsp;<a href=\\\"https://github.com/GoldenGnu/graph\\\">Graph</a> (routing tool)<br>\"\n\t\t\t\t+ \"&nbsp;<a href=\\\"https://github.com/GoldenGnu/translations\\\">Translations</a> (i18n)<br>\"\n\t\t\t\t+ \"&nbsp;<a href=\\\"https://github.com/uklimaschewski/EvalEx\\\">EvalEx</a> (formula columns)<br>\"\n\t\t\t\t+ \"&nbsp;<a href=\\\"https://picocli.info\\\">Picocli</a> (CLI)<br>\"\n\t\t\t\t+ \"<br>\"\n\t\t\t\t+ \"<center><a href=\\\"https://cultofthepartyparrot.com/\\\"><img border=\\\"0\\\" src=\\\"\" + getPartyParrot() +\"\\\" /></a><br></center>\"\n\t\t\t\t);\n\n\t\tJScrollPane jInfoScroll = new JScrollPane(jInfo, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);\n\n\t\tJLabel jPartner = new JLabel();\n\t\tjPartner.setIcon(Images.MISC_PARTNER.getIcon());\n\n\t\tjClose = new JButton(DialoguesAbout.get().close());\n\t\tjClose.setActionCommand(AboutAction.CLOSE.name());\n\t\tjClose.addActionListener(listener);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jIcon)\n\t\t\t\t\t.addComponent(jProgram)\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER)\n\t\t\t\t\t.addComponent(jInfoScroll)\n\t\t\t\t\t.addComponent(jPartner, 300, 300, 300)\n\t\t\t\t\t.addComponent(jClose, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jIcon)\n\t\t\t\t\t.addComponent(jProgram)\n\t\t\t\t)\n\t\t\t\t.addComponent(jInfoScroll, 300, 300, 300)\n\t\t\t\t.addComponent(jPartner, 50, 50, 50)\n\t\t\t\t.addComponent(jClose, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t);\n\t}\n\n\tprivate String getPartyParrot() {\n\t\tURL url = Images.class.getResource(Images.MISC_PARTYPARROT.getFilename());\n\t\tif (url != null) {\n\t\t\treturn url.toString();\n\t\t}\n\t\treturn \"\";\n\t}\n\n\tprivate JEditorPane createEditorPane(final String text) {\n\t\treturn createEditorPane(true, text);\n\t}\n\n\tprivate JEditorPane createEditorPane(final boolean addBorder, final String text) {\n\t\tJEditorPane jEditorPane = new JEditorPane(\"text/html\",\n\t\t\t\t\"<html><div style=\\\"font-family: Arial, Helvetica, sans-serif; font-size: 11pt; white-space: nowrap;\\\">\"\n\t\t\t\t+ text\n\t\t\t\t+ \"</div>\"\n\t\t\t\t);\n\t\tjEditorPane.setEditable(false);\n\t\tjEditorPane.setFocusable(false);\n\t\tjEditorPane.setOpaque(false);\n\t\tjEditorPane.setBackground(Colors.COMPONENT_TRANSPARENT.getColor());\n\t\tjEditorPane.setFont(jPanel.getFont());\n\t\tjEditorPane.addHyperlinkListener(DesktopUtil.getHyperlinkListener(getDialog()));\n\t\tif (addBorder) {\n\t\t\tjEditorPane.setBorder(BorderFactory.createEmptyBorder(11, 11, 11, 11));\n\t\t}\n\t\treturn jEditorPane;\n\t}\n\n\t@Override\n\tpublic JComponent getDefaultFocus() {\n\t\treturn jClose;\n\t}\n\n\t@Override\n\tprotected JButton getDefaultButton() {\n\t\treturn jClose;\n\t}\n\n\t@Override\n\tprotected void windowShown() {}\n\n\t@Override\n\tprotected void save() { }\n\n\tprivate class ListenerClass implements ActionListener {\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (AboutAction.CLOSE.name().equals(e.getActionCommand())) {\n\t\t\t\tsetVisible(false);\n\t\t\t}\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/account/AccountImportDialog.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs.account;\n\nimport java.awt.CardLayout;\nimport java.awt.Color;\nimport java.awt.Font;\nimport java.awt.LayoutManager;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.WindowEvent;\nimport java.awt.event.WindowFocusListener;\nimport java.beans.PropertyChangeEvent;\nimport java.beans.PropertyChangeListener;\nimport java.io.BufferedReader;\nimport java.io.BufferedWriter;\nimport java.io.File;\nimport java.io.FileReader;\nimport java.io.FileWriter;\nimport java.io.IOException;\nimport java.io.UnsupportedEncodingException;\nimport java.nio.charset.StandardCharsets;\nimport java.util.ArrayList;\nimport java.util.Base64;\nimport java.util.EnumMap;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Objects;\nimport java.util.Set;\nimport java.util.concurrent.CancellationException;\nimport java.util.concurrent.ExecutionException;\nimport javax.swing.BorderFactory;\nimport javax.swing.ButtonGroup;\nimport javax.swing.GroupLayout;\nimport javax.swing.JButton;\nimport javax.swing.JCheckBox;\nimport javax.swing.JCheckBoxMenuItem;\nimport javax.swing.JComponent;\nimport javax.swing.JFileChooser;\nimport javax.swing.JLabel;\nimport javax.swing.JOptionPane;\nimport javax.swing.JPanel;\nimport javax.swing.JRadioButton;\nimport javax.swing.JScrollPane;\nimport javax.swing.JTextArea;\nimport javax.swing.JTextField;\nimport javax.swing.SwingUtilities;\nimport javax.swing.SwingWorker;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.accounts.ApiType;\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\nimport net.nikr.eve.jeveasset.data.settings.Colors;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.CopyHandler;\nimport net.nikr.eve.jeveasset.gui.shared.components.JCustomFileChooser;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDropDownButton;\nimport net.nikr.eve.jeveasset.gui.shared.components.JLabelMultiline;\nimport net.nikr.eve.jeveasset.gui.shared.components.JLabelMultilineHtml;\nimport net.nikr.eve.jeveasset.gui.shared.components.JWorking;\nimport net.nikr.eve.jeveasset.i18n.DialoguesAccount;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\nimport net.nikr.eve.jeveasset.io.esi.EsiAuth;\nimport net.nikr.eve.jeveasset.io.esi.EsiCallbackURL;\nimport net.nikr.eve.jeveasset.io.esi.EsiOwnerGetter;\nimport net.nikr.eve.jeveasset.io.esi.EsiScopes;\nimport net.nikr.eve.jeveasset.io.shared.AccountAdder;\nimport net.nikr.eve.jeveasset.io.shared.AccountAdderAdapter;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n\npublic class AccountImportDialog extends JDialogCentered {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(AccountImportDialog.class);\n\n\tprivate enum AccountImportAction {\n\t\tADD_KEY_CANCEL,\n\t\tSHARE_TO_CLIPBOARD,\n\t\tSHARE_TO_FILE,\n\t\tSHARE_FROM_CLIPBOARD,\n\t\tSHARE_FROM_FILE,\n\t\tNEXT,\n\t\tPREVIOUS\n\t}\n\n\tprivate enum AccountImportCard {\n\t\tADD_ESI,\n\t\tSHARE_EXPORT,\n\t\tSHARE_IMPORT,\n\t\tAUTHCODE,\n\t\tBROWSER,\n\t\tVALIDATE,\n\t\tDONE,\n\t\tEXIT\n\t}\n\n\tprivate final AccountManagerDialog apiManager;\n\n\tprivate enum Result {\n\t\tFAIL_API_FAIL,\n\t\tFAIL_INVALID,\n\t\tFAIL_NOT_ENOUGH_PRIVILEGES,\n\t\tFAIL_WRONG_ENTRY,\n\t\tFAIL_CANCEL,\n\t\tOK_EXIST, //OK\n\t\tOK_EXIST_LIMITED_ACCESS, //OK\n\t\tOK_LIMITED_ACCESS, //OK\n\t\tOK_ACCOUNT_VALID //OK\n\t}\n\n\tprivate enum Share {\n\t\tIMPORT, EXPORT\n\t}\n\n\t//EsiPanel\n\tprivate JDropDownButton jScopes;\n\tprivate JRadioButton jCharacter;\n\tprivate JRadioButton jCorporation;\n\tprivate JLabel jCharacterLabel;\n\tprivate JLabel jCorporationLabel;\n\tprivate JCheckBox jWorkaround;\n\t//AuthCodePanel\n\tprivate JTextField jAuthCode;\n\t//ExportPanel\n\tprivate JTextArea jExport;\n\tprivate JButton jExportClipboard;\n\tprivate JButton jExportFile;\n\t//ImportPanel\n\tprivate JTextArea jImport;\n\tprivate JButton jImportClipboard;\n\tprivate JButton jImportFile;\n\t//Done\n\tprivate JLabel jResultHeader;\n\tprivate JLabelMultilineHtml jResultText;\n\t//Main\n\tprivate final JButton jNext;\n\tprivate final JButton jPrevious;\n\tprivate final CardLayout cardLayout;\n\tprivate final JPanel jContent;\n\tprivate final ListenerClass listener = new ListenerClass();\n\tprivate final EsiAuth esiAuth = new EsiAuth();\n\tprivate final JCustomFileChooser jFileChooser;\n\n\tprivate EsiOwner esiOwner;\n\tprivate EsiOwner editEsiOwner;\n\tprivate AccountImportCard currentCard;\n\tprivate ApiType apiType;\n\tprivate Share share;\n\tprivate AddTask addTask;\n\tprivate final Map<EsiScopes, JCheckBoxMenuItem> scopesMap = new EnumMap<>(EsiScopes.class);\n\n\tpublic AccountImportDialog(final AccountManagerDialog apiManager, final Program program) {\n\t\tsuper(program, DialoguesAccount.get().dialogueNameAccountImport(), apiManager.getDialog());\n\t\tthis.apiManager = apiManager;\n\n\t\tthis.getDialog().addWindowFocusListener(listener);\n\n\t\tjFileChooser = new JCustomFileChooser(\"txt\");\n\t\tjFileChooser.setMultiSelectionEnabled(false);\n\t\tjFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);\n\n\t\tcardLayout = new CardLayout();\n\t\tjContent = new JPanel(cardLayout);\n\t\tjContent.add(new ImportPanel(), AccountImportCard.SHARE_IMPORT.name());\n\t\tjContent.add(new EsiPanel(), AccountImportCard.ADD_ESI.name());\n\t\tjContent.add(new AuthCodePanel(), AccountImportCard.AUTHCODE.name());\n\t\tjContent.add(new BrowserPanel(), AccountImportCard.BROWSER.name());\n\t\tjContent.add(new ValidatePanel(), AccountImportCard.VALIDATE.name());\n\t\tjContent.add(new ExportPanel(), AccountImportCard.SHARE_EXPORT.name());\n\t\tjContent.add(new DonePanel(), AccountImportCard.DONE.name());\n\n\t\tjPrevious = new JButton(DialoguesAccount.get().previousArrow());\n\t\tjPrevious.setActionCommand(AccountImportAction.PREVIOUS.name());\n\t\tjPrevious.addActionListener(listener);\n\n\t\tjNext = new JButton(DialoguesAccount.get().nextArrow());\n\t\tjNext.setActionCommand(AccountImportAction.NEXT.name());\n\t\tjNext.addActionListener(listener);\n\n\t\tJButton jCancel = new JButton(DialoguesAccount.get().cancel());\n\t\tjCancel.setActionCommand(AccountImportAction.ADD_KEY_CANCEL.name());\n\t\tjCancel.addActionListener(listener);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t.addComponent(jContent)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jPrevious, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addComponent(jNext, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addGap(20)\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jContent)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jPrevious, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jNext, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t);\n\t}\n\n\tprivate String getAuthCode() {\n\t\treturn jAuthCode.getText().trim();\n\t}\n\n\tprivate void focus() {\n\t\tif (currentCard == AccountImportCard.AUTHCODE) {\n\t\t\tjAuthCode.requestFocusInWindow();\n\t\t} else if (jNext.isEnabled()) {\n\t\t\tjNext.requestFocusInWindow();\n\t\t} else if (jPrevious.isEnabled()) {\n\t\t\tjNext.requestFocusInWindow();\n\t\t}\n\t}\n\n\t@Override\n\tprotected JComponent getDefaultFocus() {\n\t\treturn jNext;\n\t}\n\n\t@Override\n\tprotected JButton getDefaultButton() {\n\t\treturn jNext;\n\t}\n\n\t@Override\n\tprotected void windowShown() { }\n\n\t@Override\n\tprotected void save() { }\n\n\tpublic void add() {\n\t\tshow(null, AccountImportCard.ADD_ESI, null);\n\t}\n\n\tpublic void shareExport() {\n\t\tshow(Share.EXPORT, AccountImportCard.ADD_ESI, null);\n\t}\n\n\tpublic void shareImport() {\n\t\tshow(Share.IMPORT, AccountImportCard.SHARE_IMPORT, null);\n\t}\n\n\tpublic void editEsi(final EsiOwner editEsiOwner) {\n\t\tshow(null, AccountImportCard.ADD_ESI, editEsiOwner);\n\t}\n\n\tprivate void show(Share share, AccountImportCard accountImportCard, final EsiOwner editEsiOwner) {\n\t\tcurrentCard = accountImportCard;\n\t\tthis.share = share;\n\t\tthis.editEsiOwner = editEsiOwner;\n\t\tif (editEsiOwner != null) { //Edit ESI\n\t\t\tjCharacter.setVisible(false);\n\t\t\tjCorporation.setVisible(false);\n\t\t\tif (editEsiOwner.isCorporation()) {\n\t\t\t\tjCorporationLabel.setVisible(true);\n\t\t\t\tjCharacterLabel.setVisible(false);\n\t\t\t\tjCorporation.setSelected(true);\n\t\t\t} else {\n\t\t\t\tjCharacterLabel.setVisible(true);\n\t\t\t\tjCorporationLabel.setVisible(false);\n\t\t\t\tjCharacter.setSelected(true);\n\t\t\t}\n\t\t} else { //Add\n\t\t\tjImport.setText(\"\");\n\t\t\tjCharacter.setVisible(true);\n\t\t\tjCorporation.setVisible(true);\n\t\t\tjCharacterLabel.setVisible(false);\n\t\t\tjCorporationLabel.setVisible(false);\n\t\t\tjCharacter.setSelected(true);\n\t\t}\n\t\tupdateTab();\n\t\tsuper.setVisible(true);\n\t}\n\n\t@Override\n\tpublic void setVisible(final boolean b) {\n\t\tif (b) {\n\t\t\tadd();\n\t\t} else {\n\t\t\tsuper.setVisible(false);\n\t\t}\n\t}\n\n\tprivate Set<String> getScopes() {\n\t\tSet<String> scopes = new HashSet<>();\n\t\tfor (Map.Entry<EsiScopes, JCheckBoxMenuItem> entry : scopesMap.entrySet()) {\n\t\t\tif (entry.getValue().isSelected()) {\n\t\t\t\tscopes.add(entry.getKey().getScope());\n\t\t\t}\n\t\t}\n\t\treturn scopes;\n\t}\n\n\tprivate void startImport() {\n\t\tif (share == Share.IMPORT) {\n\t\t\tesiOwner = EsiOwner.create();\n\t\t\ttry {\n\t\t\t\tString code = new String(Base64.getUrlDecoder().decode(jImport.getText().trim()), \"UTF-8\");\n\t\t\t\tString[] codes = code.split(\" \");\n\t\t\t\tesiOwner.setAuth(EsiCallbackURL.valueOf(codes[0]), codes[1], null);\n\t\t\t} catch (UnsupportedEncodingException | IllegalArgumentException | ArrayIndexOutOfBoundsException ex) {\n\t\t\t\tLOG.error(\"Failed to import jEveAssets ESI Key\", ex); //Will fail the update, so, we just ignore it here\n\t\t\t}\n\t\t\taddTask = new ImportTask();\n\t\t\taddTask.addPropertyChangeListener(listener);\n\t\t\taddTask.execute();\n\t\t} else if (apiType == ApiType.ESI) {\n\t\t\tif (editEsiOwner == null) { //Add\n\t\t\t\tesiOwner = EsiOwner.create();\n\t\t\t} else { //Edit\n\t\t\t\tesiOwner = new EsiOwner(editEsiOwner);\n\t\t\t}\n\t\t\taddTask = new EsiTask();\n\t\t\taddTask.addPropertyChangeListener(listener);\n\t\t\taddTask.execute();\n\t\t}\n\t}\n\n\tprivate void showEsiTap() {\n\t\tcardLayout.show(jContent, AccountImportCard.ADD_ESI.name());\n\t\tjPrevious.setEnabled(false);\n\t\tjWorkaround.setSelected(false);\n\t\tjNext.setEnabled(true);\n\t\tjNext.setText(DialoguesAccount.get().nextArrow());\n\t\tgetDialog().setIconImage(Images.MISC_ESI.getImage());\n\t\tif (share == Share.EXPORT) {\n\t\t\tgetDialog().setTitle(DialoguesAccount.get().dialogueNameAccountExport());\n\t\t} else {\n\t\t\tgetDialog().setTitle(DialoguesAccount.get().dialogueNameAccountImport());\n\t\t}\n\t\tesiAuth.cancelImport();\n\t\tupdateScopes();\n\t\tfocus();\n\t}\n\n\tprivate void showImportTap() {\n\t\tcardLayout.show(jContent, AccountImportCard.SHARE_IMPORT.name());\n\t\tjPrevious.setEnabled(false);\n\t\tjNext.setEnabled(true);\n\t\tjNext.setText(DialoguesAccount.get().nextArrow());\n\t\tgetDialog().setIconImage(Images.MISC_ESI.getImage());\n\t\tgetDialog().setTitle(DialoguesAccount.get().dialogueNameAccountImport());\n\t}\n\n\tprivate void showExportTap() {\n\t\tcardLayout.show(jContent, AccountImportCard.SHARE_EXPORT.name());\n\t\tjPrevious.setEnabled(true);\n\t\tjNext.setEnabled(true);\n\t\tjNext.setText(DialoguesAccount.get().ok());\n\t\ttry {\n\t\t\tString value = esiOwner.getCallbackURL().name() + \" \" + esiOwner.getRefreshToken();\n\t\t\tString code = new String(Base64.getUrlEncoder().encode(value.getBytes(StandardCharsets.UTF_8)), \"UTF-8\").replace(\"=\", \"\");\n\t\t\tjExport.setText(code);\n\t\t\tjExport.setFocusable(true);\n\t\t\tjExportClipboard.setEnabled(true);\n\t\t\tjExportFile.setEnabled(true);\n\t\t} catch (UnsupportedEncodingException ex) {\n\t\t\tjExport.setText(DialoguesAccount.get().shareExportFail());\n\t\t\tjExport.setFocusable(false);\n\t\t\tjExportClipboard.setEnabled(false);\n\t\t\tjExportFile.setEnabled(false);\n\t\t}\n\t}\n\n\tprivate void showAuthCodeTab() {\n\t\tcardLayout.show(jContent, AccountImportCard.AUTHCODE.name());\n\t\tjAuthCode.setText(\"\");\n\t\tjPrevious.setEnabled(true);\n\t\tjNext.setEnabled(true);\n\t\tjNext.setText(DialoguesAccount.get().nextArrow());\n\t}\n\n\tprivate void showBrowserTab() {\n\t\tcardLayout.show(jContent, AccountImportCard.BROWSER.name());\n\t\tjPrevious.setEnabled(true);\n\t\tjNext.setEnabled(false);\n\t\tjNext.setText(DialoguesAccount.get().nextArrow());\n\t\tstartImport();\n\t}\n\n\tprivate void showValidateTab() {\n\t\tcardLayout.show(jContent, AccountImportCard.VALIDATE.name());\n\t\tjPrevious.setEnabled(true);\n\t\tjNext.setEnabled(false);\n\t\tjNext.setText(DialoguesAccount.get().nextArrow());\n\t}\n\n\tprivate void showDoneTab() {\n\t\tjPrevious.setEnabled(true);\n\t\tif (share == Share.EXPORT) {\n\t\t\tjNext.setText(DialoguesAccount.get().nextArrow());\n\t\t} else {\n\t\t\tjNext.setText(DialoguesAccount.get().ok());\n\t\t}\n\t\tcardLayout.show(jContent, AccountImportCard.DONE.name());\n\t}\n\n\tprivate void done() {\n\t\tif (apiType == ApiType.ESI && share != Share.EXPORT) {\n\t\t\tList<EsiOwner> existingEsiOwners = getExistingEsiOwners();\n\t\t\tif (!existingEsiOwners.isEmpty()) { //Update\n\t\t\t\tfor (EsiOwner owner : existingEsiOwners) {\n\t\t\t\t\towner.updateAuth(esiOwner);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (editEsiOwner != null) { //Add & Edit\n\t\t\t\t\tprogram.getProfileManager().getEsiOwners().remove(editEsiOwner);\n\t\t\t\t}\n\t\t\t\tprogram.getProfileManager().getEsiOwners().add(esiOwner);\n\t\t\t}\n\t\t\tapiManager.forceUpdate();\n\t\t\tapiManager.updateTable();\n\t\t}\n\t\tthis.setVisible(false);\n\t}\n\n\tprivate void updateTab() {\n\t\tswitch (currentCard) {\n\t\t\tcase ADD_ESI:\n\t\t\t\tapiType = ApiType.ESI;\n\t\t\t\tshowEsiTap();\n\t\t\t\tbreak;\n\t\t\tcase AUTHCODE:\n\t\t\t\tshowAuthCodeTab();\n\t\t\t\tbreak;\n\t\t\tcase BROWSER:\n\t\t\t\tshowBrowserTab();\n\t\t\t\tbreak;\n\t\t\tcase VALIDATE:\n\t\t\t\tif (apiType == ApiType.ESI) {\n\t\t\t\t\t//Move to front\n\t\t\t\t\tgetDialog().setAlwaysOnTop(true);\n\t\t\t\t\tgetDialog().setAlwaysOnTop(false);\n\t\t\t\t}\n\t\t\t\tshowValidateTab();\n\t\t\t\tbreak;\n\t\t\tcase DONE:\n\t\t\t\tshowDoneTab();\n\t\t\t\tbreak;\n\t\t\tcase SHARE_IMPORT:\n\t\t\t\tapiType = ApiType.ESI;\n\t\t\t\tshowImportTap();\n\t\t\t\tbreak;\n\t\t\tcase SHARE_EXPORT:\n\t\t\t\tshowExportTap();\n\t\t\t\tbreak;\n\t\t\tcase EXIT:\n\t\t\t\tdone();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate void updateScopes() {\n\t\tscopesMap.clear();\n\t\tjScopes.removeAll();\n\t\tfor (EsiScopes scope : EsiScopes.values()) {\n\t\t\tif (scope.isPublicScope()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (jCharacter.isSelected() && !scope.isCharacterScope()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (jCorporation.isSelected() && !scope.isCorporationScope()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tJCheckBoxMenuItem jCheckBoxMenuItem = new JCheckBoxMenuItem(scope.toString());\n\t\t\tjCheckBoxMenuItem.setSelected(true);\n\t\t\tjCheckBoxMenuItem.setEnabled(!scope.isForced());\n\t\t\tjCheckBoxMenuItem.addActionListener(new ActionListener() {\n\t\t\t\t@Override\n\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\tboolean enabled = false;\n\t\t\t\t\tfor (Map.Entry<EsiScopes, JCheckBoxMenuItem> entry : scopesMap.entrySet()) {\n\t\t\t\t\t\tif (entry.getValue().isSelected() && !entry.getKey().isForced()) {\n\t\t\t\t\t\t\tenabled = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjNext.setEnabled(enabled);\n\t\t\t\t}\n\t\t\t});\n\t\t\tjScopes.add(jCheckBoxMenuItem, true);\n\t\t\tscopesMap.put(scope, jCheckBoxMenuItem);\n\t\t}\n\t}\n\n\tprivate List<EsiOwner> getExistingEsiOwners() {\n\t\tList<EsiOwner> esiOwners = new ArrayList<>();\n\t\tfor (EsiOwner owner : program.getProfileManager().getEsiOwners()) {\n\t\t\tif (Objects.equals(owner.getOwnerID(), esiOwner.getOwnerID())) {\n\t\t\t\tesiOwners.add(owner);\n\t\t\t}\n\t\t}\n\t\treturn esiOwners;\n\t}\n\n\tprivate class ListenerClass implements ActionListener, PropertyChangeListener,\n\t\t\t\t\t\t\t\t\t\t\tWindowFocusListener {\n\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (AccountImportAction.ADD_KEY_CANCEL.name().equals(e.getActionCommand())) {\n\t\t\t\tif (addTask != null) {\n\t\t\t\t\taddTask.cancel(true);\n\t\t\t\t}\n\t\t\t\tesiAuth.cancelImport();\n\t\t\t\tsetVisible(false);\n\t\t\t} else if (AccountImportAction.PREVIOUS.name().equals(e.getActionCommand())) {\n\t\t\t\tswitch (currentCard) {\n\t\t\t\t\tcase ADD_ESI: //Previous: None\n\t\t\t\t\t\tcurrentCard = AccountImportCard.ADD_ESI;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase AUTHCODE: //Previous: Add\n\t\t\t\t\t\tif (share == Share.IMPORT) {\n\t\t\t\t\t\t\tcurrentCard = AccountImportCard.SHARE_IMPORT;\n\t\t\t\t\t\t} else if (apiType == ApiType.ESI) {\n\t\t\t\t\t\t\tcurrentCard = AccountImportCard.ADD_ESI;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (addTask != null) {\n\t\t\t\t\t\t\taddTask.cancel(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BROWSER: //Previous: Add\n\t\t\t\t\t\tif (share == Share.IMPORT) {\n\t\t\t\t\t\t\tcurrentCard = AccountImportCard.SHARE_IMPORT;\n\t\t\t\t\t\t} else if (apiType == ApiType.ESI) {\n\t\t\t\t\t\t\tcurrentCard = AccountImportCard.ADD_ESI;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (addTask != null) {\n\t\t\t\t\t\t\taddTask.cancel(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase VALIDATE: //Previous: Add\n\t\t\t\t\t\tif (share == Share.IMPORT) {\n\t\t\t\t\t\t\tcurrentCard = AccountImportCard.SHARE_IMPORT;\n\t\t\t\t\t\t} else if (apiType == ApiType.ESI) {\n\t\t\t\t\t\t\tcurrentCard = AccountImportCard.ADD_ESI;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (addTask != null) {\n\t\t\t\t\t\t\taddTask.cancel(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase DONE: //Previous: Add\n\t\t\t\t\t\tif (share == Share.IMPORT) {\n\t\t\t\t\t\t\tcurrentCard = AccountImportCard.SHARE_IMPORT;\n\t\t\t\t\t\t} else if (apiType == ApiType.ESI) {\n\t\t\t\t\t\t\tcurrentCard = AccountImportCard.ADD_ESI;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase SHARE_EXPORT:\n\t\t\t\t\t\tif (jResultHeader.getText().isEmpty()) {\n\t\t\t\t\t\t\tcurrentCard = AccountImportCard.ADD_ESI;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentCard = AccountImportCard.DONE;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase EXIT: //Previous: Exit\n\t\t\t\t\t\tcurrentCard = AccountImportCard.EXIT;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tupdateTab();\n\t\t\t} else if (AccountImportAction.NEXT.name().equals(e.getActionCommand())) {\n\t\t\t\tswitch (currentCard) {\n\t\t\t\t\tcase ADD_ESI: //Next: Validate\n\t\t\t\t\t\tSet<String> scopes = getScopes();\n\t\t\t\t\t\tif (esiAuth.isServerStarted() && !jWorkaround.isSelected()) { //Localhost\n\t\t\t\t\t\t\tesiAuth.openWebpage(EsiCallbackURL.LOCALHOST, scopes, getDialog());\n\t\t\t\t\t\t\tcurrentCard = AccountImportCard.BROWSER;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tesiAuth.openWebpage(EsiCallbackURL.EVE_NIKR_NET, scopes, getDialog());\n\t\t\t\t\t\t\tcurrentCard = AccountImportCard.AUTHCODE;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase SHARE_IMPORT: //Next: Browser\n\t\t\t\t\t\tcurrentCard = AccountImportCard.VALIDATE;\n\t\t\t\t\t\tstartImport();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase AUTHCODE: //Next Validate\n\t\t\t\t\t\tcurrentCard = AccountImportCard.VALIDATE;\n\t\t\t\t\t\tstartImport();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BROWSER: //Next Validate\n\t\t\t\t\t\tcurrentCard = AccountImportCard.VALIDATE;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase VALIDATE: //Next Done\n\t\t\t\t\t\tcurrentCard = AccountImportCard.DONE;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase DONE: //Next Exit\n\t\t\t\t\t\tif (share == Share.EXPORT) {\n\t\t\t\t\t\t\tcurrentCard = AccountImportCard.SHARE_EXPORT;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentCard = AccountImportCard.EXIT;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase SHARE_EXPORT:\n\t\t\t\t\t\tcurrentCard = AccountImportCard.EXIT;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase EXIT: //Next Exit\n\t\t\t\t\t\tcurrentCard = AccountImportCard.EXIT;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tupdateTab();\n\t\t\t} else if (AccountImportAction.SHARE_TO_CLIPBOARD.name().equals(e.getActionCommand())) {\n\t\t\t\tCopyHandler.toClipboard(jExport.getText());\n\t\t\t} else if (AccountImportAction.SHARE_TO_FILE.name().equals(e.getActionCommand())) {\n\t\t\t\tFile file = jFileChooser.getSelectedFile();\n\t\t\t\tif (file != null) {\n\t\t\t\t\tjFileChooser.setSelectedFile(new File(\"\"));\n\t\t\t\t\tjFileChooser.setCurrentDirectory(file.getParentFile());\n\t\t\t\t}\n\t\t\t\tint showSaveDialog = jFileChooser.showSaveDialog(getDialog());\n\t\t\t\tif (showSaveDialog == JCustomFileChooser.APPROVE_OPTION) {\n\t\t\t\t\tBufferedWriter writer = null;\n\t\t\t\t\ttry {\n\t\t\t\t\t\twriter = new BufferedWriter(new FileWriter(jFileChooser.getSelectedFile()));\n\t\t\t\t\t\twriter.write(jExport.getText());\n\t\t\t\t\t\twriter.close();\n\t\t\t\t\t} catch (IOException ex) {\n\t\t\t\t\t\tJOptionPane.showMessageDialog(getDialog(), GuiShared.get().textSaveFailMsg(), GuiShared.get().textSaveFailTitle(), JOptionPane.WARNING_MESSAGE);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif (writer != null) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\twriter.close();\n\t\t\t\t\t\t\t} catch (IOException ex) {\n\t\t\t\t\t\t\t\t//Ohh well we tried our best\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (AccountImportAction.SHARE_FROM_CLIPBOARD.name().equals(e.getActionCommand())) {\n\t\t\t\tString s = CopyHandler.fromClipboard();\n\t\t\t\tif (s != null) {\n\t\t\t\t\tjImport.setText(s);\n\t\t\t\t}\n\t\t\t} else if (AccountImportAction.SHARE_FROM_FILE.name().equals(e.getActionCommand())) {\n\t\t\t\tFile file = jFileChooser.getSelectedFile();\n\t\t\t\tif (file != null) {\n\t\t\t\t\tjFileChooser.setSelectedFile(new File(\"\"));\n\t\t\t\t\tjFileChooser.setCurrentDirectory(file.getParentFile());\n\t\t\t\t}\n\t\t\t\tint showSaveDialog = jFileChooser.showOpenDialog(getDialog());\n\t\t\t\tif (showSaveDialog == JCustomFileChooser.APPROVE_OPTION) {\n\t\t\t\t\tBufferedReader reader = null;\n\t\t\t\t\ttry {\n\t\t\t\t\t\treader = new BufferedReader(new FileReader(jFileChooser.getSelectedFile()));\n\t\t\t\t\t\tString line;\n\t\t\t\t\t\tStringBuilder builder = new StringBuilder();\n\t\t\t\t\t\twhile ((line = reader.readLine()) != null) {\n\t\t\t\t\t\t\tbuilder.append(line);\n\t\t\t\t\t\t\tbuilder.append(\"\\r\\n\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tjImport.setText(builder.toString());\n\t\t\t\t\t} catch (IOException ex) {\n\t\t\t\t\t\tJOptionPane.showMessageDialog(getDialog(), GuiShared.get().textLoadFailMsg(), GuiShared.get().textLoadFailTitle(), JOptionPane.WARNING_MESSAGE);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif (reader != null) {\n\t\t\t\t\t\t\t\treader.close();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (IOException ex) {\n\t\t\t\t\t\t\t//Ohh well we tried our best\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void propertyChange(final PropertyChangeEvent evt) {\n\t\t\tObject o = evt.getSource();\n\t\t\tif (o instanceof AddTask) {\n\t\t\t\tAddTask addTask = (AddTask) o;\n\t\t\t\tif (addTask.done) {\n\t\t\t\t\taddTask.done = false;\n\t\t\t\t\tswitch (addTask.result) {\n\t\t\t\t\t\tcase FAIL_API_FAIL:\n\t\t\t\t\t\t\tcurrentCard = AccountImportCard.DONE;\n\t\t\t\t\t\t\tjNext.setEnabled(false);\n\t\t\t\t\t\t\tjResultHeader.setText(DialoguesAccount.get().failApiError());\n\t\t\t\t\t\t\tjResultText.setText(DialoguesAccount.get().failApiErrorText(addTask.error));\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase FAIL_INVALID:\n\t\t\t\t\t\t\tcurrentCard = AccountImportCard.DONE;\n\t\t\t\t\t\t\tjNext.setEnabled(false);\n\t\t\t\t\t\t\tjResultHeader.setText(DialoguesAccount.get().failNotValid());\n\t\t\t\t\t\t\tjResultText.setText(DialoguesAccount.get().failNotValidText());\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase FAIL_NOT_ENOUGH_PRIVILEGES:\n\t\t\t\t\t\t\tcurrentCard = AccountImportCard.DONE;\n\t\t\t\t\t\t\tjNext.setEnabled(false);\n\t\t\t\t\t\t\tjResultHeader.setText(DialoguesAccount.get().failNotEnoughPrivileges());\n\t\t\t\t\t\t\tjResultText.setText(DialoguesAccount.get().failNotEnoughPrivilegesText());\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase FAIL_WRONG_ENTRY:\n\t\t\t\t\t\t\tcurrentCard = AccountImportCard.DONE;\n\t\t\t\t\t\t\tjNext.setEnabled(false);\n\t\t\t\t\t\t\tjResultHeader.setText(DialoguesAccount.get().failWrongEntry());\n\t\t\t\t\t\t\tjResultText.setText(DialoguesAccount.get().failWrongEntryText());\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase FAIL_CANCEL:\n\t\t\t\t\t\t\tswitch(apiType) {\n\t\t\t\t\t\t\t\tcase ESI:\n\t\t\t\t\t\t\t\t\tcurrentCard = AccountImportCard.ADD_ESI;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase OK_EXIST:\n\t\t\t\t\t\t\tcurrentCard = AccountImportCard.DONE;\n\t\t\t\t\t\t\tjNext.setEnabled(true);\n\t\t\t\t\t\t\tjResultHeader.setText(DialoguesAccount.get().okUpdate());\n\t\t\t\t\t\t\tjResultText.setText(DialoguesAccount.get().okUpdateText());\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase OK_EXIST_LIMITED_ACCESS:\n\t\t\t\t\t\t\tcurrentCard = AccountImportCard.DONE;\n\t\t\t\t\t\t\tjNext.setEnabled(true);\n\t\t\t\t\t\t\tjResultHeader.setText(DialoguesAccount.get().okUpdate());\n\t\t\t\t\t\t\tjResultText.setText(DialoguesAccount.get().okUpdateLimitedText());\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase OK_LIMITED_ACCESS:\n\t\t\t\t\t\t\tcurrentCard = AccountImportCard.DONE;\n\t\t\t\t\t\t\tjNext.setEnabled(true);\n\t\t\t\t\t\t\tjResultHeader.setText(DialoguesAccount.get().okLimited());\n\t\t\t\t\t\t\tif (share == Share.EXPORT) {\n\t\t\t\t\t\t\t\tjResultText.setText(DialoguesAccount.get().okLimitedExportText());\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjResultText.setText(DialoguesAccount.get().okLimitedText());\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase OK_ACCOUNT_VALID:\n\t\t\t\t\t\t\tjNext.setEnabled(true);\n\t\t\t\t\t\t\tif (share == Share.EXPORT) {\n\t\t\t\t\t\t\t\tcurrentCard = AccountImportCard.SHARE_EXPORT;\n\t\t\t\t\t\t\t\tjResultHeader.setText(\"\");\n\t\t\t\t\t\t\t\tjResultText.setText(\"\");\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcurrentCard = AccountImportCard.DONE;\n\t\t\t\t\t\t\t\tjResultHeader.setText(DialoguesAccount.get().okValid());\n\t\t\t\t\t\t\t\tjResultText.setText(DialoguesAccount.get().okValidText());\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tupdateTab();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void windowGainedFocus(final WindowEvent e) {\n\t\t\tfocus();\n\t\t}\n\n\t\t@Override\n\t\tpublic void windowLostFocus(final WindowEvent e) { }\n\t}\n\n\tprivate class EsiPanel extends JCardPanel {\n\n\t\tpublic EsiPanel() {\n\t\t\tJLabel jAuthLabel = new JLabel(DialoguesAccount.get().authorize());\n\t\t\tJLabel jType = new JLabel(DialoguesAccount.get().accountType());\n\t\t\tButtonGroup type = new ButtonGroup();\n\t\t\tjCharacterLabel = new JLabel(DialoguesAccount.get().character());\n\t\t\tjCharacter = new JRadioButton(DialoguesAccount.get().character());\n\t\t\tjCharacter.addActionListener(new ActionListener() {\n\t\t\t\t@Override\n\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\tupdateScopes();\n\t\t\t\t}\n\t\t\t});\n\t\t\ttype.add(jCharacter);\n\t\t\tjCorporationLabel = new JLabel(DialoguesAccount.get().corporation());\n\t\t\tjCorporation = new JRadioButton(DialoguesAccount.get().corporation());\n\t\t\tjCorporation.addActionListener(new ActionListener() {\n\t\t\t\t@Override\n\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\tupdateScopes();\n\t\t\t\t}\n\t\t\t});\n\t\t\ttype.add(jCorporation);\n\n\t\t\tjScopes = new JDropDownButton(DialoguesAccount.get().scopes(), Images.MISC_ESI.getIcon(), JDropDownButton.LEFT, JDropDownButton.TOP);\n\n\t\t\tJLabel jWorkaroundLabel = new JLabel(DialoguesAccount.get().workaroundLabel());\n\t\t\tjWorkaround = new JCheckBox(DialoguesAccount.get().workaroundCheckbox());\n\n\t\t\tJLabelMultiline jHelp = new JLabelMultiline(DialoguesAccount.get().esiHelpText());\n\n\t\t\tlayout.setHorizontalGroup(\n\t\t\t\tlayout.createParallelGroup()\n\t\t\t\t\t.addComponent(jHelp)\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t\t\t\t.addComponent(jAuthLabel)\n\t\t\t\t\t\t\t.addComponent(jType)\n\t\t\t\t\t\t\t.addComponent(jWorkaroundLabel)\n\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t\t\t.addComponent(jCharacter)\n\t\t\t\t\t\t\t\t.addComponent(jCorporation)\n\t\t\t\t\t\t\t\t.addComponent(jCharacterLabel)\n\t\t\t\t\t\t\t\t.addComponent(jCorporationLabel)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.addComponent(jScopes, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t\t\t.addComponent(jWorkaround)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t);\n\t\t\tlayout.setVerticalGroup(\n\t\t\t\tlayout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jHelp, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)\n\t\t\t\t\t\t.addComponent(jType, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jCharacter, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jCorporation, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jCharacterLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jCorporationLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t)\n\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)\n\t\t\t\t\t\t.addComponent(jAuthLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jScopes, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t)\n\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)\n\t\t\t\t\t\t.addComponent(jWorkaroundLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jWorkaround, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\t\n\t\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate class AuthCodePanel extends JCardPanel {\n\n\t\tpublic AuthCodePanel() {\n\t\t\tJLabel jAuthCodeLabel = new JLabel(DialoguesAccount.get().authCode());\n\t\t\tjAuthCode = new JTextField();\n\n\t\t\tJLabelMultiline jHelp = new JLabelMultiline(DialoguesAccount.get().authCodeHelpText());\n\n\t\t\tlayout.setHorizontalGroup(\n\t\t\t\tlayout.createParallelGroup()\n\t\t\t\t\t.addComponent(jHelp)\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t.addComponent(jAuthCodeLabel)\n\t\t\t\t\t\t.addComponent(jAuthCode, 150, 150, Integer.MAX_VALUE)\n\t\t\t\t\t)\n\t\t\t);\n\t\t\tlayout.setVerticalGroup(\n\t\t\t\tlayout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jHelp, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)\n\t\t\t\t\t\t.addComponent(jAuthCodeLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jAuthCode, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t)\n\t\t\t\t\t.addGap(10, 10, Integer.MAX_VALUE)\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate class BrowserPanel extends JCardPanel {\n\n\t\tpublic BrowserPanel() {\n\t\t\tJLabelMultiline jHelp = new JLabelMultiline(DialoguesAccount.get().browseHelpText());\n\n\t\t\tlayout.setHorizontalGroup(\n\t\t\t\tlayout.createSequentialGroup()\n\t\t\t\t\t.addGap(10, 10, Integer.MAX_VALUE)\n\t\t\t\t\t.addComponent(jHelp)\n\t\t\t\t\t.addGap(10, 10, Integer.MAX_VALUE)\n\t\t\t);\n\t\t\tlayout.setVerticalGroup(\n\t\t\t\tlayout.createSequentialGroup()\n\t\t\t\t\t.addGap(10, 10, Integer.MAX_VALUE)\n\t\t\t\t\t.addComponent(jHelp)\n\t\t\t\t\t.addGap(10, 10, Integer.MAX_VALUE)\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate class ValidatePanel extends JCardPanel {\n\n\t\tpublic ValidatePanel() {\n\t\t\tJLabel jHelp = new JLabel(DialoguesAccount.get().validatingMessage());\n\n\t\t\tJWorking jWorking = new JWorking();\n\n\t\t\tlayout.setHorizontalGroup(\n\t\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.CENTER)\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t.addGap(10, 10, Integer.MAX_VALUE)\n\t\t\t\t\t\t.addComponent(jWorking)\n\t\t\t\t\t\t.addGap(10, 10, Integer.MAX_VALUE)\n\t\t\t\t\t)\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t.addGap(10, 10, Integer.MAX_VALUE)\n\t\t\t\t\t\t.addComponent(jHelp)\n\t\t\t\t\t\t.addGap(10, 10, Integer.MAX_VALUE)\n\t\t\t\t\t)\n\t\t\t);\n\t\t\tlayout.setVerticalGroup(\n\t\t\t\tlayout.createSequentialGroup()\n\t\t\t\t\t.addGap(10, 10, Integer.MAX_VALUE)\n\t\t\t\t\t.addComponent(jWorking)\n\t\t\t\t\t.addComponent(jHelp)\n\t\t\t\t\t.addGap(10, 10, Integer.MAX_VALUE)\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate class DonePanel extends JCardPanel {\n\n\t\tpublic DonePanel() {\n\t\t\tjResultHeader = new JLabel();\n\t\t\tjResultHeader.setFont(new Font(this.getFont().getName(), Font.BOLD, this.getFont().getSize()));\n\n\t\t\tjResultText = new JLabelMultilineHtml(getDialog());\n\t\t\tjResultText.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));\n\n\t\t\tJScrollPane jScroll = new JScrollPane(jResultText, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);\n\t\t\tjScroll.setBorder(BorderFactory.createLineBorder(this.getBackground().darker(), 1));\n\n\t\t\tlayout.setHorizontalGroup(\n\t\t\t\tlayout.createParallelGroup()\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t.addGap(5)\n\t\t\t\t\t\t.addComponent(jResultHeader)\n\t\t\t\t\t)\n\t\t\t\t\t.addComponent(jScroll, 400, 400, 400)\n\t\t\t);\n\t\t\tlayout.setVerticalGroup(\n\t\t\t\tlayout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jResultHeader, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jScroll, 98, 98, 98)\n\t\t\t);\n\t\t}\n\n\t}\n\n\tprivate class ImportPanel extends JCardPanel {\n\n\t\tpublic ImportPanel() {\n\t\t\tJLabelMultiline jHelp = new JLabelMultiline(DialoguesAccount.get().shareImportHelpText());\n\n\t\t\tjImportClipboard = new JButton(DialoguesAccount.get().shareImportClipboard() , Images.EDIT_PASTE.getIcon());\n\t\t\tjImportClipboard.setActionCommand(AccountImportAction.SHARE_FROM_CLIPBOARD.name());\n\t\t\tjImportClipboard.addActionListener(listener);\n\n\t\t\tjImportFile = new JButton(DialoguesAccount.get().shareImportFile(), Images.FILTER_LOAD.getIcon());\n\t\t\tjImportFile.setActionCommand(AccountImportAction.SHARE_FROM_FILE.name());\n\t\t\tjImportFile.addActionListener(listener);\n\n\t\t\tjImport = new JTextArea();\n\t\t\tjImport.setFont(getFont());\n\t\t\tjImport.setEditable(true);\n\t\t\tjImport.setFocusable(true);\n\t\t\tjImport.setOpaque(true);\n\t\t\tjImport.setLineWrap(true);\n\t\t\tjImport.setWrapStyleWord(false);\n\n\t\t\tJScrollPane jScroll = new JScrollPane(jImport, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);\n\t\t\tjScroll.setBorder(BorderFactory.createLineBorder(this.getBackground().darker(), 1));\n\n\t\t\tlayout.setHorizontalGroup(\n\t\t\t\tlayout.createParallelGroup()\n\t\t\t\t\t.addComponent(jHelp)\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t.addComponent(jScroll)\n\t\t\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t\t\t.addComponent(jImportClipboard, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t\t\t.addComponent(jImportFile, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t);\n\t\t\tlayout.setVerticalGroup(\n\t\t\t\tlayout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jHelp, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t\t.addComponent(jScroll)\n\t\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t\t.addComponent(jImportClipboard, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t\t.addComponent(jImportFile, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate class ExportPanel extends JCardPanel {\n\n\t\tpublic ExportPanel() {\n\t\t\tJLabel jHelp = new JLabel(DialoguesAccount.get().shareExportHelp() );\n\n\t\t\tjExportClipboard = new JButton(DialoguesAccount.get().shareExportClipboard(), Images.EDIT_COPY.getIcon());\n\t\t\tjExportClipboard.setActionCommand(AccountImportAction.SHARE_TO_CLIPBOARD.name());\n\t\t\tjExportClipboard.addActionListener(listener);\n\n\t\t\tjExportFile = new JButton(DialoguesAccount.get().shareExportFile(), Images.FILTER_SAVE.getIcon());\n\t\t\tjExportFile.setActionCommand(AccountImportAction.SHARE_TO_FILE.name());\n\t\t\tjExportFile.addActionListener(listener);\n\n\t\t\tjExport = new JTextArea();\n\t\t\tjExport.setFont(getFont());\n\t\t\tjExport.setEditable(false);\n\t\t\tjExport.setFocusable(true);\n\t\t\tjExport.setOpaque(false);\n\t\t\tjExport.setBackground(Colors.COMPONENT_TRANSPARENT.getColor());\n\t\t\tjExport.setLineWrap(true);\n\t\t\tjExport.setWrapStyleWord(false);\n\n\t\t\tJScrollPane jScroll = new JScrollPane(jExport, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);\n\t\t\tjScroll.setBorder(BorderFactory.createLineBorder(this.getBackground().darker(), 1));\n\n\t\t\tlayout.setHorizontalGroup(\n\t\t\t\tlayout.createParallelGroup()\n\t\t\t\t\t.addComponent(jHelp)\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t.addComponent(jScroll)\n\t\t\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t\t\t.addComponent(jExportClipboard, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t\t\t.addComponent(jExportFile, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t);\n\t\t\tlayout.setVerticalGroup(\n\t\t\t\tlayout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jHelp)\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t\t.addComponent(jScroll)\n\t\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t\t.addComponent(jExportClipboard, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t\t.addComponent(jExportFile, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate abstract class JCardPanel extends JPanel {\n\n\t\tprotected GroupLayout layout;\n\n\t\tpublic JCardPanel() {\n\t\t\tlayout = new GroupLayout(this);\n\t\t\tsetLayout(layout);\n\t\t\tlayout.setAutoCreateGaps(true);\n\t\t\tlayout.setAutoCreateContainerGaps(false);\n\t\t}\n\n\t\t@Override\n\t\tpublic final Font getFont() {\n\t\t\treturn super.getFont();\n\t\t}\n\n\t\t@Override\n\t\tpublic final Color getBackground() {\n\t\t\treturn super.getBackground();\n\t\t}\n\n\t\t@Override\n\t\tpublic final void setLayout(LayoutManager mgr) {\n\t\t\tsuper.setLayout(mgr);\n\t\t}\n\n\t}\n\n\tclass ImportTask extends AddTask {\n\n\t\tprivate final EsiOwnerGetter esiOwnerGetter = new EsiOwnerGetter(esiOwner, true);\n\n\t\t@Override\n\t\tpublic boolean exist() {\n\t\t\tif (editEsiOwner != null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (EsiOwner owner : program.getProfileManager().getEsiOwners()) {\n\t\t\t\tif (Objects.equals(owner.getOwnerID(), esiOwner.getOwnerID())) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t@Override\n\t\tpublic void load() {\n\t\t\tesiOwnerGetter.start();\n\t\t}\n\n\t\t@Override\n\t\tpublic AccountAdder getAccountAdder() {\n\t\t\treturn esiOwnerGetter;\n\t\t}\n\t}\n\n\tclass EsiTask extends AddTask {\n\n\t\tprivate final EsiOwnerGetter esiOwnerGetter = new EsiOwnerGetter(esiOwner, true);\n\t\tprivate AccountAdder accountAdder;\n\n\t\t@Override\n\t\tpublic boolean exist() {\n\t\t\tif (editEsiOwner != null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (share == Share.EXPORT) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (EsiOwner owner : program.getProfileManager().getEsiOwners()) {\n\t\t\t\tif (Objects.equals(owner.getOwnerID(), esiOwner.getOwnerID())) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t@Override\n\t\tpublic void load() {\n\t\t\tboolean ok = esiAuth.finishFlow(esiOwner, getAuthCode());\n\t\t\tif (!ok) {\n\t\t\t\taccountAdder = new AccountAdderAdapter() {\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic boolean hasError() {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic boolean isInvalid() {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tSwingUtilities.invokeLater(new Runnable() {\n\t\t\t\t@Override\n\t\t\t\tpublic void run() {\n\t\t\t\t\tcurrentCard = AccountImportCard.VALIDATE;\n\t\t\t\t\tupdateTab();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t});\n\t\t\taccountAdder = esiOwnerGetter;\n\t\t\tesiOwnerGetter.start();\n\t\t}\n\n\t\t@Override\n\t\tpublic AccountAdder getAccountAdder() {\n\t\t\treturn accountAdder;\n\t\t}\n\t}\n\n\tabstract static class AddTask extends SwingWorker<Void, Void> {\n\n\t\tprivate Result result = null;\n\t\tprivate boolean done = false;\n\t\tprivate String error = \"\";\n\n\t\tpublic abstract boolean exist();\n\t\tpublic abstract void load();\n\t\tpublic abstract AccountAdder getAccountAdder();\n\n\t\t@Override\n\t\tpublic final Void doInBackground() {\n\t\t\tsetProgress(0);\n\t\t\tload();\n\t\t\tif (getAccountAdder().hasError() || getAccountAdder().isPrivilegesInvalid()) { //Failed to add new account\n\t\t\t\tString s = getAccountAdder().getError();\n\t\t\t\tif (getAccountAdder().isInvalid()) { //invalid account\n\t\t\t\t\tresult = Result.FAIL_INVALID;\n\t\t\t\t} else if (getAccountAdder().isPrivilegesInvalid()) { // Not enough privileges\n\t\t\t\t\tresult = Result.FAIL_NOT_ENOUGH_PRIVILEGES;\n\t\t\t\t} else if (getAccountAdder().isWrongEntry()) { // Editing account to a different character/corporation\n\t\t\t\t\tresult = Result.FAIL_WRONG_ENTRY;\n\t\t\t\t} else { //String error\n\t\t\t\t\terror = s;\n\t\t\t\t\tresult = Result.FAIL_API_FAIL;\n\t\t\t\t}\n\t\t\t} else { //Successfully added new account\n\t\t\t\tif (exist()) { //account already exist\n\t\t\t\t\tif (getAccountAdder().isPrivilegesLimited()) {\n\t\t\t\t\t\tresult = Result.OK_EXIST_LIMITED_ACCESS; //limited privileges\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = Result.OK_EXIST;\n\t\t\t\t\t}\n\t\t\t\t} else if (getAccountAdder().isPrivilegesLimited()) { //limited privileges\n\t\t\t\t\tresult = Result.OK_LIMITED_ACCESS;\n\t\t\t\t} else { //All okay\n\t\t\t\t\tresult = Result.OK_ACCOUNT_VALID;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\n\t\t@Override\n\t\tpublic final void done() {\n\t\t\ttry {\n\t\t\t\tget();\n\t\t\t} catch (CancellationException ex) {\n\t\t\t\tresult = Result.FAIL_CANCEL;\n\t\t\t} catch (InterruptedException | ExecutionException ex) {\n\t\t\t\tLOG.error(ex.getMessage(), ex);\n\t\t\t\tthrow new RuntimeException(ex);\n\t\t\t}\n\t\t\tdone = true;\n\t\t\tsetProgress(100);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/account/AccountManagerDialog.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs.account;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.ListSelection;\nimport ca.odell.glazedlists.SeparatorList;\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport java.awt.Dimension;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport javax.swing.GroupLayout.Alignment;\nimport javax.swing.JButton;\nimport javax.swing.JComponent;\nimport javax.swing.JMenuItem;\nimport javax.swing.JOptionPane;\nimport javax.swing.JScrollPane;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\nimport net.nikr.eve.jeveasset.gui.dialogs.account.AccountSeparatorTableCell.AccountCellAction;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDropDownButton;\nimport net.nikr.eve.jeveasset.gui.shared.components.JLockWindow;\nimport net.nikr.eve.jeveasset.gui.shared.components.JLockWindow.LockWorkerAdaptor;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.JSeparatorTable;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\nimport net.nikr.eve.jeveasset.i18n.DialoguesAccount;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\nimport net.nikr.eve.jeveasset.io.local.profile.ProfileDatabase;\nimport net.troja.eve.esi.ApiClientBuilder;\nimport net.troja.eve.esi.auth.OAuth;\n\n\npublic class AccountManagerDialog extends JDialogCentered {\n\n\tprivate enum AccountManagerAction {\n\t\tADD,\n\t\tREVALIDATE,\n\t\tSHARE_EXPORT,\n\t\tSHARE_IMPORT,\n\t\tCLOSE,\n\t\tCOLLAPSE,\n\t\tEXPAND,\n\t\tCHECK_ALL,\n\t\tUNCHECK_ALL,\n\t\tCHECK_SELECTED,\n\t\tUNCHECK_SELECTED\n\t}\n\n\t//GUI\n\tprivate final AccountImportDialog accountImportDialog;\n\tprivate final JSeparatorTable jTable;\n\tprivate final JButton jAdd;\n\tprivate final JButton jRevalidate;\n\tprivate final JButton jExpand;\n\tprivate final JButton jCollapse;\n\tprivate final JDropDownButton jAssets;\n\tprivate final JButton jClose;\n\tprivate final EventList<OwnerType> eventList;\n\tprivate final DefaultEventTableModel<OwnerType> tableModel;\n\tprivate final SeparatorList<OwnerType> separatorList;\n\tprivate final DefaultEventSelectionModel<OwnerType> selectionModel;\n\tprivate final JLockWindow jLockWindow;\n\tprivate final JLockWindow jRevalidateLock;\n\tprivate final Map<OwnerType, Boolean> ownersShownCache = new HashMap<>();\n\n\tprivate boolean updated = false;\n\n\tpublic AccountManagerDialog(final Program program) {\n\t\tsuper(program, DialoguesAccount.get().dialogueNameAccountManagement(), Images.DIALOG_ACCOUNTS.getImage());\n\n\t\taccountImportDialog = new AccountImportDialog(this, program);\n\n\t\tjLockWindow = new JLockWindow(program.getMainWindow().getFrame());\n\t\tjRevalidateLock = new JLockWindow(getDialog());\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\teventList = EventListManager.create();\n\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tseparatorList = new SeparatorList<>(eventList, new SeparatorListComparator(), 1, 3);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\n\t\ttableModel = EventModels.createTableModel(separatorList, TableFormatFactory.accountTableFormat());\n\t\tjTable = new JAccountTable(program, tableModel, separatorList);\n\t\tjTable.getTableHeader().setReorderingAllowed(false);\n\t\tjTable.setSeparatorRenderer(new AccountSeparatorTableCell(this, listener, jTable, separatorList));\n\t\tjTable.setSeparatorEditor(new AccountSeparatorTableCell(this, listener, jTable, separatorList));\n\n\t\tJScrollPane jTableScroll = new JScrollPane(jTable);\n\t\tjTableScroll.getVerticalScrollBar().setUnitIncrement(19);\n\n\t\tselectionModel = EventModels.createSelectionModel(separatorList);\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\n\t\tjTable.setSelectionModel(selectionModel);\n\n\t\t//Buttons\n\t\tjAdd = new JButton(DialoguesAccount.get().add());\n\t\tjAdd.setActionCommand(AccountManagerAction.ADD.name());\n\t\tjAdd.addActionListener(listener);\n\n\t\tjRevalidate = new JButton(DialoguesAccount.get().revalidate());\n\t\tjRevalidate.setActionCommand(AccountManagerAction.REVALIDATE.name());\n\t\tjRevalidate.addActionListener(listener);\n\n\t\tJDropDownButton jShare = new JDropDownButton(DialoguesAccount.get().share());\n\n\t\tJMenuItem jExport = new JMenuItem(DialoguesAccount.get().shareExport(), Images.MISC_ESI.getIcon());\n\t\tjExport.setActionCommand(AccountManagerAction.SHARE_EXPORT.name());\n\t\tjExport.addActionListener(listener);\n\t\tjShare.add(jExport);\n\n\t\tJMenuItem jImport = new JMenuItem(DialoguesAccount.get().shareImport(), Images.TOOL_ASSETS.getIcon());\n\t\tjImport.setActionCommand(AccountManagerAction.SHARE_IMPORT.name());\n\t\tjImport.addActionListener(listener);\n\t\tjShare.add(jImport);\n\n\t\tjCollapse = new JButton(DialoguesAccount.get().collapse());\n\t\tjCollapse.setActionCommand(AccountManagerAction.COLLAPSE.name());\n\t\tjCollapse.addActionListener(listener);\n\n\t\tjExpand = new JButton(DialoguesAccount.get().expand());\n\t\tjExpand.setActionCommand(AccountManagerAction.EXPAND.name());\n\t\tjExpand.addActionListener(listener);\n\n\t\tjAssets = new JDropDownButton(DialoguesAccount.get().showAssets());\n\t\tJMenuItem menuItem;\n\n\t\tmenuItem = new JMenuItem(DialoguesAccount.get().checkAll());\n\t\tmenuItem.setActionCommand(AccountManagerAction.CHECK_ALL.name());\n\t\tmenuItem.addActionListener(listener);\n\t\tjAssets.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(DialoguesAccount.get().uncheckAll());\n\t\tmenuItem.setActionCommand(AccountManagerAction.UNCHECK_ALL.name());\n\t\tmenuItem.addActionListener(listener);\n\t\tjAssets.add(menuItem);\n\n\t\tjAssets.addSeparator();\n\n\t\tmenuItem = new JMenuItem(DialoguesAccount.get().checkSelected());\n\t\tmenuItem.setActionCommand(AccountManagerAction.CHECK_SELECTED.name());\n\t\tmenuItem.addActionListener(listener);\n\t\tjAssets.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(DialoguesAccount.get().uncheckSelected());\n\t\tmenuItem.setActionCommand(AccountManagerAction.UNCHECK_SELECTED.name());\n\t\tmenuItem.addActionListener(listener);\n\t\tjAssets.add(menuItem);\n\n\t\t//Done Button\n\t\tjClose = new JButton(DialoguesAccount.get().close());\n\t\tjClose.setActionCommand(AccountManagerAction.CLOSE.name());\n\t\tjClose.addActionListener(listener);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addGroup(layout.createParallelGroup(Alignment.TRAILING)\n\t\t\t\t\t.addComponent(jTableScroll, 750, 750, Short.MAX_VALUE)\n\t\t\t\t\t.addComponent(jClose, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jAdd, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addComponent(jRevalidate, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addComponent(jShare, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addComponent(jCollapse, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addComponent(jExpand, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addGap(0, 0, Short.MAX_VALUE)\n\t\t\t\t\t.addComponent(jAssets, Program.getButtonsWidth() + 20, Program.getButtonsWidth() + 20, Program.getButtonsWidth() + 20)\n\t\t\t\t)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jAdd, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jRevalidate, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jShare, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jCollapse, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jExpand, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jAssets, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addComponent(jTableScroll, 450, 450, Short.MAX_VALUE)\n\t\t\t\t.addComponent(jClose, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t);\n\t\t// Pack then take the dialog dimensions to use as the minimum dimension.\n\t\tgetDialog().pack();\n\t\tDimension d = new Dimension(getDialog().getWidth() + 10, getDialog().getHeight() + 10); // Use 10 pixel buffer to offset the resize 'bug'.\n\t\tgetDialog().setMinimumSize(d);\n\t\tgetDialog().setResizable(true);\n\t}\n\n\tpublic void forceUpdate() {\n\t\tupdated = true;\n\t}\n\n\tpublic void updateTable() {\n\t\t//Collect owners\n\t\tList<OwnerType> ownerTypes = new ArrayList<>();\n\t\t//ESI\n\t\townerTypes.addAll(program.getProfileManager().getEsiOwners());\n\t\t//Update rows (Add all rows)\n\t\ttry {\n\t\t\teventList.getReadWriteLock().writeLock().lock();\n\t\t\teventList.clear();\n\t\t\teventList.addAll(ownerTypes);\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t\t//Revalidate\n\t\tboolean invalid = false;\n\t\tfor (EsiOwner owner : program.getProfileManager().getEsiOwners()) {\n\t\t\tif (owner.isInvalid()) {\n\t\t\t\tinvalid = true;\n\t\t\t\tbreak; //search done\n\t\t\t}\n\t\t}\n\t\tjRevalidate.setEnabled(invalid);\n\n\t\tif (!ownerTypes.isEmpty()) {\n\t\t\tjTable.setRowSelectionInterval(1, 1);\n\t\t\tjAssets.setEnabled(true);\n\t\t\tjCollapse.setEnabled(true);\n\t\t\tjExpand.setEnabled(true);\n\t\t} else {\n\t\t\tjAssets.setEnabled(false);\n\t\t\tjCollapse.setEnabled(false);\n\t\t\tjExpand.setEnabled(false);\n\t\t}\n\t}\n\n\tprivate void checkAssets(final boolean selected, final boolean check) {\n\t\tif (selected) { //Set selected to check value\n\t\t\tint[] selectedRows = jTable.getSelectedRows();\n\t\t\tfor (int i = 0; i < selectedRows.length; i++) {\n\t\t\t\tObject o = tableModel.getElementAt(selectedRows[i]);\n\t\t\t\tif (o instanceof OwnerType) {\n\t\t\t\t\tOwnerType owner = (OwnerType) o;\n\t\t\t\t\tif (!owner.getOwnerName().equals(DialoguesAccount.get().noOwners())) {\n\t\t\t\t\t\towner.setShowOwner(check);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else { //Set all the check value\n\t\t\tfor (OwnerType owner : program.getOwnerTypes()) {\n\t\t\t\tif (!owner.getOwnerName().equals(DialoguesAccount.get().noOwners())) {\n\t\t\t\t\towner.setShowOwner(check);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (int row = 0; row < jTable.getRowCount(); row++) {\n\t\t\ttableModel.fireTableCellUpdated(row, 0);\n\t\t}\n\t}\n\n\t@Override\n\tprotected JComponent getDefaultFocus() {\n\t\treturn jAdd;\n\t}\n\n\t@Override\n\tprotected JButton getDefaultButton() {\n\t\treturn jClose;\n\t}\n\n\t@Override\n\tprotected void windowShown() {\n\t\tif (program.getOwnerTypes().isEmpty()) {\n\t\t\taccountImportDialog.add();\n\t\t}\n\t}\n\n\t@Override\n\tprotected void save() {\n\t\tsuper.setVisible(false);\n\t\tif (!updated) {\n\t\t\tMap<OwnerType, Boolean> ownersShownNow = new HashMap<>();\n\t\t\tfor (OwnerType ownerType : program.getProfileManager().getOwnerTypes()) {\n\t\t\t\townersShownNow.put(ownerType, ownerType.isShowOwner());\n\t\t\t}\n\t\t\tupdated = !ownersShownNow.equals(ownersShownCache);\n\t\t}\n\t\tif (updated) {\n\t\t\tjLockWindow.show(GuiShared.get().updating(), new LockWorkerAdaptor() {\n\t\t\t\t@Override\n\t\t\t\tpublic void task() {\n\t\t\t\t\tprogram.saveTable(ProfileDatabase.Table.OWNERS);\n\t\t\t\t\tprogram.updateEventLists();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t@Override\n\tpublic void setVisible(final boolean b) {\n\t\tif (b) {\n\t\t\tupdated = false;\n\t\t\townersShownCache.clear();\n\t\t\tfor (OwnerType ownerType : program.getProfileManager().getOwnerTypes()) {\n\t\t\t\townersShownCache.put(ownerType, ownerType.isShowOwner());\n\t\t\t}\n\t\t\tupdateTable();\n\t\t\tsuper.setVisible(b);\n\t\t} else {\n\t\t\tsave();\n\t\t}\n\t}\n\n\tprivate class ListenerClass implements ActionListener {\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (AccountManagerAction.ADD.name().equals(e.getActionCommand())) {\n\t\t\t\taccountImportDialog.add();\n\t\t\t} else if (AccountManagerAction.SHARE_EXPORT.name().equals(e.getActionCommand())) {\n\t\t\t\taccountImportDialog.shareExport();\n\t\t\t} else if (AccountManagerAction.SHARE_IMPORT.name().equals(e.getActionCommand())) {\n\t\t\t\taccountImportDialog.shareImport();\n\t\t\t} else if (AccountManagerAction.COLLAPSE.name().equals(e.getActionCommand())) {\n\t\t\t\tjTable.expandSeparators(false);\n\t\t\t} else if (AccountManagerAction.EXPAND.name().equals(e.getActionCommand())) {\n\t\t\t\tjTable.expandSeparators(true);\n\t\t\t} else if (AccountManagerAction.CLOSE.name().equals(e.getActionCommand())) {\n\t\t\t\tsave();\n\t\t\t} else if (AccountCellAction.EDIT.name().equals(e.getActionCommand())) {\n\t\t\t\tint index = jTable.getSelectedRow();\n\t\t\t\tObject o = tableModel.getElementAt(index);\n\t\t\t\tif (o instanceof SeparatorList.Separator<?>) {\n\t\t\t\t\tSeparatorList.Separator<?> separator = (SeparatorList.Separator<?>) o;\n\t\t\t\t\tObject object = separator.first();\n\t\t\t\t\tif (object instanceof EsiOwner) {\n\t\t\t\t\t\tEsiOwner esiOwner = (EsiOwner) object;\n\t\t\t\t\t\taccountImportDialog.editEsi(esiOwner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (AccountCellAction.DELETE.name().equals(e.getActionCommand())) {\n\t\t\t\tint index = jTable.getSelectedRow();\n\t\t\t\tObject o = tableModel.getElementAt(index);\n\t\t\t\tif (o instanceof SeparatorList.Separator<?>) {\n\t\t\t\t\tint nReturn = JOptionPane.showConfirmDialog(program.getMainWindow().getFrame()\n\t\t\t\t\t\t\t, DialoguesAccount.get().deleteAccountQuestion()\n\t\t\t\t\t\t\t, DialoguesAccount.get().deleteAccount()\n\t\t\t\t\t\t\t, JOptionPane.YES_NO_OPTION\n\t\t\t\t\t\t\t, JOptionPane.PLAIN_MESSAGE);\n\t\t\t\t\tif (nReturn == JOptionPane.YES_OPTION) {\n\t\t\t\t\t\tSeparatorList.Separator<?> separator = (SeparatorList.Separator<?>) o;\n\t\t\t\t\t\tObject object = separator.first();\n\t\t\t\t\t\tif (object instanceof EsiOwner) {\n\t\t\t\t\t\t\tEsiOwner esiOwner = (EsiOwner) object;\n\t\t\t\t\t\t\tprogram.getProfileManager().getEsiOwners().remove(esiOwner);\n\t\t\t\t\t\t\tforceUpdate();\n\t\t\t\t\t\t\tupdateTable();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (AccountManagerAction.REVALIDATE.name().equals(e.getActionCommand())) {\n\t\t\t\tjRevalidateLock.show(GuiShared.get().updating(), new LockWorkerAdaptor() {\n\t\t\t\t\tprivate int done = 0;\n\t\t\t\t\tprivate int total = 0;\n\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic void task() {\n\t\t\t\t\t\tfor (EsiOwner owner : program.getProfileManager().getEsiOwners()) {\n\t\t\t\t\t\t\tif (owner.isInvalid()) {\n\t\t\t\t\t\t\t\ttotal++;\n\t\t\t\t\t\t\t\tOAuth oAuth = (OAuth) owner.getApiClient().getAuthentication(ApiClientBuilder.AUTHENTICATION);\n\t\t\t\t\t\t\t\tString accessToken = oAuth.getAccessToken();\n\t\t\t\t\t\t\t\tif (accessToken != null) {\n\t\t\t\t\t\t\t\t\towner.setInvalid(false);\n\t\t\t\t\t\t\t\t\tdone++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic void gui() {\n\t\t\t\t\t\tif (done > 0) {\n\t\t\t\t\t\t\tforceUpdate();\n\t\t\t\t\t\t\tupdateTable();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic void hidden() {\n\t\t\t\t\t\tif (total > 0) {\n\t\t\t\t\t\t\tif (done == total) { //All\n\t\t\t\t\t\t\t\tJOptionPane.showMessageDialog(getDialog(), DialoguesAccount.get().revalidateMsgAll(total), DialoguesAccount.get().revalidate(), JOptionPane.PLAIN_MESSAGE);\n\t\t\t\t\t\t\t} else if (done == 0) { //None\n\t\t\t\t\t\t\t\tJOptionPane.showMessageDialog(getDialog(), DialoguesAccount.get().revalidateMsgNone(total), DialoguesAccount.get().revalidate(), JOptionPane.PLAIN_MESSAGE);\n\t\t\t\t\t\t\t} else { //Some\n\t\t\t\t\t\t\t\tJOptionPane.showMessageDialog(getDialog(), DialoguesAccount.get().revalidateMsgSome(total, done, total-done), DialoguesAccount.get().revalidate(), JOptionPane.PLAIN_MESSAGE);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t});\n\t\t\t} else if (AccountManagerAction.CHECK_ALL.name().equals(e.getActionCommand())) {\n\t\t\t\tcheckAssets(false, true);\n\t\t\t} else if (AccountManagerAction.UNCHECK_ALL.name().equals(e.getActionCommand())) {\n\t\t\t\tcheckAssets(false, false);\n\t\t\t} else if (AccountManagerAction.CHECK_SELECTED.name().equals(e.getActionCommand())) {\n\t\t\t\tcheckAssets(true, true);\n\t\t\t} else if (AccountManagerAction.UNCHECK_SELECTED.name().equals(e.getActionCommand())) {\n\t\t\t\tcheckAssets(true, false);\n\t\t\t}\n\t\t}\n\t}\n}"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/account/AccountSeparatorTableCell.java",
    "content": "/* Glazed Lists                                                 (c) 2003-2006 */\n/* http://publicobject.com/glazedlists/                      publicobject.com,*/\n/*                                                     O'Dell Engineering Ltd.*/\n\npackage net.nikr.eve.jeveasset.gui.dialogs.account;\n\nimport ca.odell.glazedlists.SeparatorList;\nimport ca.odell.glazedlists.SeparatorList.Separator;\nimport java.awt.Color;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.FocusEvent;\nimport java.awt.event.FocusListener;\nimport java.awt.event.KeyEvent;\nimport java.awt.event.KeyListener;\nimport javax.swing.BorderFactory;\nimport javax.swing.GroupLayout;\nimport javax.swing.JButton;\nimport javax.swing.JLabel;\nimport javax.swing.JTable;\nimport javax.swing.JTextField;\nimport javax.swing.event.CellEditorListener;\nimport javax.swing.event.ChangeEvent;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\nimport net.nikr.eve.jeveasset.data.settings.Colors;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.table.SeparatorTableCell;\nimport net.nikr.eve.jeveasset.i18n.DialoguesAccount;\n\n/**\n *\n * @author <a href=\"mailto:jesse@swank.ca\">Jesse Wilson</a>\n */\npublic class AccountSeparatorTableCell extends SeparatorTableCell<OwnerType> {\n\n\tpublic enum AccountCellAction {\n\t\tACCOUNT_NAME,\n\t\tEDIT,\n\t\tDELETE,\n\t}\n\n\tprivate final JTextField jAccountName;\n\tprivate final JLabel jAccountType;\n\tprivate final JButton jEdit;\n\tprivate final JButton jDelete;\n\tprivate final JLabel jInvalidLabel;\n\tprivate final JLabel jExpiredLabel;\n\tprivate final JLabel jSeparatorLabel;\n\n\tprivate final Color defaultColor;\n\tprivate final AccountManagerDialog accountManagerDialog;\n\n\tpublic AccountSeparatorTableCell(final AccountManagerDialog accountManagerDialog, final ActionListener actionListener, final JTable jTable, final SeparatorList<OwnerType> separatorList) {\n\t\tsuper(jTable, separatorList);\n\t\tthis.accountManagerDialog = accountManagerDialog;\n\n\t\tdefaultColor = jPanel.getBackground();\n\n\t\tListenerClass listener = new ListenerClass();\n\t\taddCellEditorListener(listener);\n\n\t\tjSeparatorLabel = new JLabel();\n\t\tjSeparatorLabel.setBackground(jTable.getBackground());\n\t\tjSeparatorLabel.setOpaque(true);\n\t\tjSeparatorLabel.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, jTable.getGridColor()));\n\t\tjAccountType = new JLabel();\n\n\t\tjEdit = new JButton(DialoguesAccount.get().edit());\n\t\tjEdit.setOpaque(false);\n\t\tjEdit.setActionCommand(AccountCellAction.EDIT.name());\n\t\tjEdit.addActionListener(actionListener);\n\n\t\tjDelete = new JButton(DialoguesAccount.get().delete());\n\t\tjDelete.setOpaque(false);\n\t\tjDelete.setActionCommand(AccountCellAction.DELETE.name());\n\t\tjDelete.addActionListener(actionListener);\n\n\t\tjAccountName = new JTextField();\n\t\tjAccountName.setBorder(null);\n\t\tjAccountName.setOpaque(false);\n\t\tjAccountName.setBackground(Colors.COMPONENT_TRANSPARENT.getColor());\n\t\tjAccountName.setActionCommand(AccountCellAction.ACCOUNT_NAME.name());\n\t\tjAccountName.addActionListener(listener);\n\t\tjAccountName.addKeyListener(listener);\n\t\tjAccountName.addFocusListener(new FocusListener() {\n\t\t\t@Override\n\t\t\tpublic void focusGained(FocusEvent e) {\n\t\t\t\tjAccountName.selectAll();\n\t\t\t}\n\t\t\t@Override\n\t\t\tpublic void focusLost(FocusEvent e) { }\n\t\t});\n\n\t\tjInvalidLabel = new JLabel(DialoguesAccount.get().accountInvalid());\n\n\t\tjExpiredLabel = new JLabel(DialoguesAccount.get().accountExpired());\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addComponent(jSeparatorLabel, 0, 0, Integer.MAX_VALUE)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jExpand)\n\t\t\t\t\t.addGap(1)\n\t\t\t\t\t.addComponent(jEdit, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addComponent(jDelete, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addGap(5)\n\t\t\t\t\t.addComponent(jAccountType)\n\t\t\t\t\t.addGap(5)\n\t\t\t\t\t.addComponent(jAccountName, 120, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t\t.addGap(10)\n\t\t\t\t\t.addComponent(jExpiredLabel)\n\t\t\t\t\t.addComponent(jInvalidLabel)\n\t\t\t\t)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jSeparatorLabel, jTable.getRowHeight(), jTable.getRowHeight(), jTable.getRowHeight())\n\t\t\t\t.addGap(1)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jExpand, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jAccountType, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jEdit, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jDelete, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jAccountName, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jInvalidLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jExpiredLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGap(2)\n\t\t);\n\t}\n\n\t@Override\n\tprotected void configure(final Separator<?> separator) {\n\t\tOwnerType owner = (OwnerType) separator.first();\n\t\tif (owner == null) { // handle 'late' rendering calls after this separator is invalid\n\t\t\treturn;\n\t\t}\n\t\tjSeparatorLabel.setVisible(currentRow != 0);\n\n\t\tswitch (owner.getAccountAPI()) {\n\t\t\tcase ESI:\n\t\t\t\tjAccountType.setIcon(Images.MISC_ESI.getIcon());\n\t\t\t\tbreak;\n\t\t}\n\t\tjAccountName.setText(owner.getAccountName());\n\t\t//Expired\n\t\tjExpiredLabel.setVisible(owner.isExpired());\n\n\t\t//Invalid\n\t\tjInvalidLabel.setVisible(owner.isInvalid());\n\n\t\t//Invalid / Expired\n\t\tif (owner.isInvalid() || owner.isExpired()) {\n\t\t\tColorSettings.config(jPanel, ColorEntry.GLOBAL_ENTRY_INVALID);\n\t\t} else {\n\t\t\tjPanel.setBackground(defaultColor);\n\t\t}\n\t}\n\n\tprivate void setAccountName(OwnerType owner) {\n\t\tif (owner == null) {\n\t\t\treturn;\n\t\t}\n\t\tif (jAccountName.getText().isEmpty()) {\n\t\t\towner.setResetAccountName();\n\t\t} else {\n\t\t\towner.setAccountName(jAccountName.getText());\n\t\t}\n\t\taccountManagerDialog.forceUpdate();\n\t}\n\n\tprivate class ListenerClass implements ActionListener, CellEditorListener, KeyListener {\n\n\t\tprivate boolean update = true;\n\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (AccountCellAction.ACCOUNT_NAME.name().equals(e.getActionCommand())) {\n\t\t\t\tstopCellEditing();\n\t\t\t\texpandSeparator(true);\n\t\t\t\tint index = jTable.getSelectedRow() + 1;\n\t\t\t\tif (jTable.getRowCount() >= index) {\n\t\t\t\t\tjTable.setRowSelectionInterval(index, index);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void editingStopped(ChangeEvent e) {\n\t\t\tsaveAccountName();\n\t\t}\n\n\t\t@Override\n\t\tpublic void editingCanceled(ChangeEvent e) {\n\t\t\tsaveAccountName();\n\t\t}\n\n\t\t@Override\n\t\tpublic void keyTyped(KeyEvent e) { }\n\n\t\t@Override\n\t\tpublic void keyPressed(KeyEvent e) {\n\t\t\tif (e.getKeyCode() == KeyEvent.VK_ESCAPE) {\n\t\t\t\tupdate = false;\n\t\t\t\tstopCellEditing();\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void keyReleased(KeyEvent e) { }\n\n\t\tprivate void saveAccountName() {\n\t\t\tif (!update) {\n\t\t\t\tupdate = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tOwnerType owner = (OwnerType) currentSeparator.first();\n\t\t\tif (owner == null) { // handle 'late' rendering calls after this separator is invalid\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetAccountName(owner);\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/account/AccountTableFormat.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs.account;\n\nimport java.util.Comparator;\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.ExpirerDate;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.YesNo;\nimport net.nikr.eve.jeveasset.i18n.DialoguesAccount;\n\n\npublic enum AccountTableFormat implements EnumTableColumn<OwnerType> {\n\tSHOW_ASSETS(Boolean.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn \"\";\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn from.isShowOwner() && !from.getOwnerName().equals(DialoguesAccount.get().noOwners());\n\t\t}\n\t\t@Override\n\t\tpublic boolean isColumnEditable(final Object baseObject) {\n\t\t\tif (baseObject instanceof OwnerType) {\n\t\t\t\tOwnerType owner = (OwnerType) baseObject;\n\t\t\t\treturn !owner.getOwnerName().equals(DialoguesAccount.get().noOwners());\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\t@Override\n\t\tpublic boolean setColumnValue(final Object baseObject, final Object editedValue) {\n\t\t\tif ((editedValue instanceof Boolean) && (baseObject instanceof OwnerType)) {\n\t\t\t\tOwnerType owner = (OwnerType) baseObject;\n\t\t\t\tboolean before = owner.isShowOwner();\n\t\t\t\tboolean after = (Boolean) editedValue;\n\t\t\t\towner.setShowOwner(after);\n\t\t\t\treturn before != after;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t},\n\tNAME(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatName();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn from.getOwnerName();\n\t\t}\n\t},\n\tCORPORATION(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatCorporation();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn YesNo.get(from.isCorporation());\n\t\t}\n\t},\n\tASSET_LIST(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatAssetList();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn YesNo.get(from.isAssetList());\n\t\t}\n\t},\n\tACCOUNT_BALANCE(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatAccountBalance();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn YesNo.get(from.isAccountBalance());\n\t\t}\n\t},\n\tINDUSTRY_JOBS(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatIndustryJobs();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn YesNo.get(from.isIndustryJobs());\n\t\t}\n\t},\n\tMARKET_ORDERS(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatMarketOrders();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn YesNo.get(from.isMarketOrders());\n\t\t}\n\t},\n\tTRANSACTIONS(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatTransactions();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn YesNo.get(from.isTransactions());\n\t\t}\n\t},\n\tJOURNAL(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatJournal();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn YesNo.get(from.isJournal());\n\t\t}\n\t},\n\tCONTRACTS(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatContracts();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn YesNo.get(from.isContracts());\n\t\t}\n\t},\n\tLOCATIONS(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatLocations();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn YesNo.get(from.isLocations());\n\t\t}\n\t},\n\tSTRUCTURES(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatStructures();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn YesNo.get(from.isStructures());\n\t\t}\n\t},\n\tMARKET_STRUCTURES(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatMarketStructures();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn YesNo.get(from.isMarketStructures());\n\t\t}\n\t},\n\tBLUEPRINTS(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatBlueprints();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn YesNo.get(from.isBlueprints());\n\t\t}\n\t},\n\tDIVISIONS(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatDivisions();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn YesNo.get(from.isDivisions());\n\t\t}\n\t},\n\tSHIP(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatShip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn YesNo.get(from.isShip());\n\t\t}\n\t},\n\tPLANETARY_INTERACTION(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatPlanetaryInteraction();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn YesNo.get(from.isPlanetaryInteraction());\n\t\t}\n\t},\n\tOPEN_WINDOWS(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatOpenWindows();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn YesNo.get(from.isOpenWindows());\n\t\t}\n\t},\n\tAUTOPILOT(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatAutopilot();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn YesNo.get(from.isAutopilot());\n\t\t}\n\t},\n\tSKILLS(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatSkills();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn YesNo.get(from.isSkills());\n\t\t}\n\t},\n\tMINING(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatMining();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn YesNo.get(from.isMining());\n\t\t}\n\t},\n\tCLONES(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatClones();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn YesNo.get(from.isClones());\n\t\t}\n\t},\n\tIMPLANTS(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatImplants();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn YesNo.get(from.isImplants());\n\t\t}\n\t},\n\tLOYALTY_POINTS(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatLoyaltyPoints();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn YesNo.get(from.isLoyaltyPoints());\n\t\t}\n\t},\n\tNPC_STANDING(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatNpcStanding();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn YesNo.get(from.isNpcStanding());\n\t\t}\n\t},\n\tEXPIRES(ExpirerDate.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesAccount.get().tableFormatExpires();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final OwnerType from) {\n\t\t\treturn new ExpirerDate(from.getExpire());\n\t\t}\n\t};\n\n\tprivate final Class<?> type;\n\tprivate final Comparator<?> comparator;\n\tprivate AccountTableFormat(final Class<?> type) {\n\t\tthis.type = type;\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\n\t}\n\t@Override\n\tpublic Class<?> getType() {\n\t\treturn type;\n\t}\n\t@Override\n\tpublic Comparator<?> getComparator() {\n\t\treturn comparator;\n\t}\n\t@Override\n\tpublic String toString() {\n\t\treturn getColumnName();\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/account/JAccountTable.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs.account;\n\nimport ca.odell.glazedlists.SeparatorList;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport java.awt.Component;\nimport javax.swing.table.TableCellRenderer;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\nimport net.nikr.eve.jeveasset.gui.shared.table.JSeparatorTable;\nimport net.nikr.eve.jeveasset.i18n.DialoguesAccount;\n\n\npublic class JAccountTable extends JSeparatorTable {\n\n\tprivate final DefaultEventTableModel<OwnerType> tableModel;\n\n\tpublic JAccountTable(final Program program, final DefaultEventTableModel<OwnerType> tableModel, SeparatorList<OwnerType> separatorList) {\n\t\tsuper(program, tableModel, separatorList);\n\t\tthis.tableModel = tableModel;\n\t}\n\n\t@Override\n\tpublic Component prepareRenderer(final TableCellRenderer renderer, final int row, final int column) {\n\t\tComponent component = super.prepareRenderer(renderer, row, column);\n\t\tObject object = tableModel.getElementAt(row);\n\n\t\t//No Owners\n\t\tif (object instanceof OwnerType) {\n\t\t\tOwnerType owner = (OwnerType) object;\n\t\t\tif (owner.getOwnerName().equals(DialoguesAccount.get().noOwners())) {\n\t\t\t\tcomponent.setEnabled(false);\n\t\t\t\treturn component;\n\t\t\t} else {\n\t\t\t\tcomponent.setEnabled(true);\n\t\t\t\treturn component;\n\t\t\t}\n\t\t}\n\t\treturn component;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/account/SeparatorListComparator.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs.account;\n\nimport java.util.Comparator;\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\n\n\npublic class SeparatorListComparator implements Comparator<OwnerType> {\n\n\t@Override\n\tpublic int compare(final OwnerType o1, final OwnerType o2) {\n\t\treturn o1.getComparator().compareTo(o2.getComparator());\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/profile/JValidatedInputDialog.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs.profile;\n\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport javax.swing.GroupLayout.Alignment;\nimport javax.swing.JButton;\nimport javax.swing.JComponent;\nimport javax.swing.JTextArea;\nimport javax.swing.JTextField;\nimport javax.swing.text.PlainDocument;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.gui.shared.DocumentFactory;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\nimport net.nikr.eve.jeveasset.i18n.DialoguesProfiles;\n\n\npublic class JValidatedInputDialog extends JDialogCentered {\n\n\tprivate enum InputDialogAction {\n\t\tOK, CANCEL\n\t}\n\n\tprivate final JTextArea jMessage;\n\tprivate final JTextField jName;\n\tprivate final JButton jOK;\n\n\tprivate boolean failed = false;\n\n\tpublic JValidatedInputDialog(final Program program, final JDialogCentered jDialogCentered) {\n\t\tsuper(program, \"\", jDialogCentered.getDialog());\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tjMessage = new JTextArea();\n\t\tjMessage.setFocusable(false);\n\t\tjMessage.setEditable(false);\n\t\tjMessage.setBackground(getDialog().getBackground());\n\t\tjMessage.setFont(getDialog().getFont());\n\n\t\tjName = new JTextField();\n\n\t\tjOK = new JButton(DialoguesProfiles.get().ok());\n\t\tjOK.setActionCommand(InputDialogAction.OK.name());\n\t\tjOK.addActionListener(listener);\n\n\t\tJButton jCancel = new JButton(DialoguesProfiles.get().cancel());\n\t\tjCancel.setActionCommand(InputDialogAction.CANCEL.name());\n\t\tjCancel.addActionListener(listener);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addComponent(jMessage, 250, 250, 250)\n\t\t\t\t.addComponent(jName, 250, 250, 250)\n\t\t\t\t.addGroup(Alignment.TRAILING, layout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jMessage)\n\t\t\t\t.addComponent(jName, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t);\n\t}\n\n\tpublic String show(final String title, final String message, final String defaultValue, final int restrictions) {\n\t\tif (title != null) {\n\t\t\tthis.getDialog().setTitle(title);\n\t\t} else {\n\t\t\tthis.getDialog().setTitle(\"\");\n\t\t}\n\t\tif (message != null) {\n\t\t\tjMessage.setText(message);\n\t\t} else {\n\t\t\tjMessage.setText(\"\");\n\t\t}\n\t\tswitch (restrictions) {\n\t\t\tcase WORDS_ONLY:\n\t\t\t\tjName.setDocument(DocumentFactory.getWordPlainDocument());\n\t\t\t\tbreak;\n\t\t\tcase INTEGERS_ONLY:\n\t\t\t\tjName.setDocument(DocumentFactory.getIntegerPlainDocument());\n\t\t\t\tbreak;\n\t\t\tcase NUMBERS_ONLY:\n\t\t\t\tjName.setDocument(DocumentFactory.getDoublePlainDocument());\n\t\t\t\tbreak;\n\t\t\tcase NO_RESTRICTIONS:\n\t\t\t\tjName.setDocument(new PlainDocument());\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tjName.setDocument(new PlainDocument());\n\t\t\t\tbreak;\n\t\t}\n\t\tif (defaultValue != null) {\n\t\t\tjName.setText(defaultValue);\n\t\t} else {\n\t\t\tjName.setText(\"\");\n\t\t}\n\t\tjName.selectAll();\n\t\tthis.setVisible(true);\n\t\tif (failed) {\n\t\t\treturn null;\n\t\t}\n\t\treturn jName.getText();\n\t}\n\n\t@Override\n\tprotected JComponent getDefaultFocus() {\n\t\treturn jName;\n\t}\n\n\t@Override\n\tprotected JButton getDefaultButton() {\n\t\treturn jOK;\n\t}\n\n\t@Override\n\tprotected void windowShown() { }\n\n\t@Override\n\tprotected void save() { }\n\n\tprivate class ListenerClass implements ActionListener {\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (InputDialogAction.OK.name().equals(e.getActionCommand())) {\n\t\t\t\tfailed = false;\n\t\t\t\tsetVisible(false);\n\t\t\t}\n\t\t\tif (InputDialogAction.CANCEL.name().equals(e.getActionCommand())) {\n\t\t\t\tfailed = true;\n\t\t\t\tsetVisible(false);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/profile/ProfileDialog.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs.profile;\n\nimport java.awt.Component;\nimport java.awt.Font;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.MouseEvent;\nimport java.awt.event.MouseListener;\nimport java.util.Collections;\nimport java.util.List;\nimport javax.swing.*;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.profile.Profile;\nimport net.nikr.eve.jeveasset.data.profile.Profile.ProfileType;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\nimport net.nikr.eve.jeveasset.gui.shared.components.JLockWindow;\nimport net.nikr.eve.jeveasset.gui.shared.components.JLockWindow.LockWorkerAdaptor;\nimport net.nikr.eve.jeveasset.i18n.DialoguesProfiles;\n\n\npublic class ProfileDialog extends JDialogCentered {\n\n\tprivate enum ProfileDialogAction {\n\t\tNEW, LOAD, RENAME, DELETE, DEFAULT, CLOSE\n\t}\n\n\tprivate final JList<Profile> jProfiles;\n\tprivate final JButton jNew;\n\tprivate final JButton jLoad;\n\tprivate final JButton jRename;\n\tprivate final JButton jDelete;\n\tprivate final JButton jDefault;\n\tprivate final JButton jClose;\n\tprivate final JLockWindow jLockWindow;\n\tprivate final JValidatedInputDialog jValidatedInputDialog;\n\n\tpublic ProfileDialog(final Program program) {\n\t\tsuper(program, DialoguesProfiles.get().profiles(), Images.DIALOG_PROFILES.getImage());\n\n\t\tjLockWindow = new JLockWindow(getDialog());\n\t\tjValidatedInputDialog = new JValidatedInputDialog(program, this);\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tjProfiles = new JList<>();\n\t\tjProfiles.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\n\t\tjProfiles.setVisibleRowCount(-1);\n\t\tjProfiles.setCellRenderer(new JProfileListRenderer(jProfiles.getCellRenderer()));\n\t\tjProfiles.addMouseListener(listener);\n\t\tJScrollPane jProfilesScrollPane = new JScrollPane(jProfiles);\n\n\t\tjLoad = new JButton(DialoguesProfiles.get().load());\n\t\tjLoad.setActionCommand(ProfileDialogAction.LOAD.name());\n\t\tjLoad.addActionListener(listener);\n\n\t\tjNew = new JButton(DialoguesProfiles.get().newP());\n\t\tjNew.setActionCommand(ProfileDialogAction.NEW.name());\n\t\tjNew.addActionListener(listener);\n\n\t\tjRename = new JButton(DialoguesProfiles.get().rename());\n\t\tjRename.setActionCommand(ProfileDialogAction.RENAME.name());\n\t\tjRename.addActionListener(listener);\n\n\t\tjDelete = new JButton(DialoguesProfiles.get().delete());\n\t\tjDelete.setActionCommand(ProfileDialogAction.DELETE.name());\n\t\tjDelete.addActionListener(listener);\n\n\t\tjDefault = new JButton(DialoguesProfiles.get().defaultP());\n\t\tjDefault.setActionCommand(ProfileDialogAction.DEFAULT.name());\n\t\tjDefault.addActionListener(listener);\n\n\t\tjClose = new JButton(DialoguesProfiles.get().close());\n\t\tjClose.setActionCommand(ProfileDialogAction.CLOSE.name());\n\t\tjClose.addActionListener(listener);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jProfilesScrollPane, 150, 150, 150)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jLoad, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addComponent(jDefault, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addComponent(jNew, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addComponent(jRename, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addComponent(jDelete, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addComponent(jClose, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t)\n\n\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addComponent(jProfilesScrollPane)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jLoad, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jDefault, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addGap(25)\n\t\t\t\t\t.addComponent(jNew, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jRename, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jDelete, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addGap(45)\n\t\t\t\t\t.addComponent(jClose, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t);\n\t}\n\n\tprivate void updateProfiles() {\n\t\tDefaultListModel<Profile> listModel = new DefaultListModel<>();\n\t\tList<Profile> profiles = program.getProfileManager().getProfiles();\n\t\tCollections.sort(profiles);\n\t\tfor (Profile profile : profiles) {\n\t\t\tlistModel.addElement(profile);\n\t\t}\n\t\tjProfiles.setModel(listModel);\n\t\tif (!profiles.isEmpty()) {\n\t\t\tjProfiles.setSelectedValue(program.getProfileManager().getActiveProfile(), true);\n\t\t}\n\t}\n\n\n\tprivate void startLoadProfile() {\n\t\tProfile profile = jProfiles.getSelectedValue();\n\t\tif (profile.isActiveProfile()) {\n\t\t\tJOptionPane.showMessageDialog(this.getDialog(),\n\t\t\t\t\tDialoguesProfiles.get().profileLoaded(),\n\t\t\t\t\tDialoguesProfiles.get().loadProfile(),\n\t\t\t\t\tJOptionPane.INFORMATION_MESSAGE);\n\t\t} else {\n\t\t\tjLockWindow.show(DialoguesProfiles.get().loadingProfile(), new LoadProfile(profile));\n\t\t}\n\t}\n\n\tprivate void loadProfileWork(final Profile profile) {\n\t\tif (profile != null && !profile.isActiveProfile()) {\n\t\t\t//Clear active profile flag (from all profiles)\n\t\t\tfor (Profile profileLoop : program.getProfileManager().getProfiles()) {\n\t\t\t\tprofileLoop.setActiveProfile(false);\n\t\t\t}\n\t\t\t//Clear accounts\n\t\t\tprogram.getProfileManager().clear();\n\t\t\t//Clear data\n\t\t\tprogram.updateEventLists();\n\t\t\t//Set active profile\n\t\t\tprogram.getProfileManager().setActiveProfile(profile);\n\t\t\tprofile.setActiveProfile(true);\n\t\t\t//Load new profile\n\t\t\tprogram.getProfileManager().loadActiveProfile();\n\t\t\t//Update data\n\t\t\tprogram.updateEventLists();\n\t\t}\n\t}\n\n\tprivate void loadProfileGui() {\n\t\t//Update GUI (this dialog)\n\t\tupdateProfiles();\n\t\tjProfiles.updateUI();\n\t\t//Update window title\n\t\tprogram.getMainWindow().updateTitle();\n\t\t//Warn on profile load error\n\t\tprogram.getProfileManager().showProfileLoadErrorWarning(this.getDialog());\n\t\t//Ask to clear filters - if needed\n\t\tif (!program.getAssetsTab().isFiltersEmpty()) {\n\t\t\tint value = JOptionPane.showConfirmDialog(this.getDialog(),\n\t\t\t\t\tDialoguesProfiles.get().clearFilter(),\n\t\t\t\t\tDialoguesProfiles.get().profileLoadedMsg(),\n\t\t\t\t\tJOptionPane.YES_NO_OPTION,\n\t\t\t\t\tJOptionPane.QUESTION_MESSAGE);\n\t\t\tif (value == JOptionPane.YES_OPTION) {\n\t\t\t\tprogram.getAssetsTab().clearFilters();\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tprotected JComponent getDefaultFocus() {\n\t\treturn jClose;\n\t}\n\n\t@Override\n\tprotected JButton getDefaultButton() {\n\t\treturn jClose;\n\t}\n\n\t@Override\n\tprotected void windowShown() {\n\t\tupdateProfiles();\n\t}\n\n\t@Override\n\tprotected void save() { }\n\n\tprivate class ListenerClass implements ActionListener, MouseListener {\n\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (ProfileDialogAction.NEW.name().equals(e.getActionCommand())) {\n\t\t\t\tString s = jValidatedInputDialog.show(\n\t\t\t\t\t\tDialoguesProfiles.get().newProfile(),\n\t\t\t\t\t\tDialoguesProfiles.get().typeName(),\n\t\t\t\t\t\t\"\",\n\t\t\t\t\t\tJDialogCentered.WORDS_ONLY);\n\t\t\t\tif (s == null || s.isEmpty()) {\n\t\t\t\t\treturn; //Cancel or invalid name\n\t\t\t\t}\n\t\t\t\tif (program.getProfileManager().containsProfileName(s)) {\n\t\t\t\t\tJOptionPane.showMessageDialog(getDialog(),\n\t\t\t\t\t\t\tDialoguesProfiles.get().nameAlreadyExists(),\n\t\t\t\t\t\t\tDialoguesProfiles.get().newProfile(),\n\t\t\t\t\t\t\tJOptionPane.INFORMATION_MESSAGE);\n\t\t\t\t\treturn; //Existing name\n\t\t\t\t}\n\t\t\t\t//Create new profile\n\t\t\t\tjLockWindow.show(DialoguesProfiles.get().creatingProfile(), new NewProfile(s));\n\t\t\t} else if (ProfileDialogAction.LOAD.name().equals(e.getActionCommand())) {\n\t\t\t\tstartLoadProfile();\n\t\t\t} else if (ProfileDialogAction.RENAME.name().equals(e.getActionCommand())) {\n\t\t\t\tProfile profile = jProfiles.getSelectedValue();\n\t\t\t\tif (profile == null) {\n\t\t\t\t\treturn; //nothing selected\n\t\t\t\t}\n\t\t\t\tString s = jValidatedInputDialog.show(DialoguesProfiles.get().renameProfile(),\n\t\t\t\t\t\tDialoguesProfiles.get().enterNewName(),\n\t\t\t\t\t\tprofile.getName(),\n\t\t\t\t\t\tJDialogCentered.WORDS_ONLY);\n\t\t\t\tif (s == null || s.isEmpty()) {\n\t\t\t\t\treturn; //Cancel or invalid name\n\t\t\t\t}\n\t\t\t\tif (program.getProfileManager().containsProfileName(s)) {\n\t\t\t\t\tJOptionPane.showMessageDialog(getDialog(),\n\t\t\t\t\t\t\tDialoguesProfiles.get().nameAlreadyExists(),\n\t\t\t\t\t\t\tDialoguesProfiles.get().renameProfile(),\n\t\t\t\t\t\t\tJOptionPane.INFORMATION_MESSAGE);\n\t\t\t\t\treturn; //Existing name\n\t\t\t\t}\n\t\t\t\t//Rename profile\n\t\t\t\tprofile.setName(s);\n\t\t\t\tprogram.getMainWindow().updateTitle();\n\t\t\t\tjProfiles.updateUI();\n\t\t\t} else if (ProfileDialogAction.DELETE.name().equals(e.getActionCommand())) {\n\t\t\t\tProfile profile = jProfiles.getSelectedValue();\n\t\t\t\tif (profile == null) {\n\t\t\t\t\treturn; //Nothing selected\n\t\t\t\t}\n\t\t\t\tif (profile.isActiveProfile()) {\n\t\t\t\t\tJOptionPane.showMessageDialog(getDialog(),\n\t\t\t\t\t\t\tDialoguesProfiles.get().cannotDeleteActive(),\n\t\t\t\t\t\t\tDialoguesProfiles.get().deleteProfile(),\n\t\t\t\t\t\t\tJOptionPane.INFORMATION_MESSAGE);\n\t\t\t\t\treturn; //Can not delete the active profile\n\t\t\t\t}\n\t\t\t\tif (profile.isDefaultProfile()) {\n\t\t\t\t\tJOptionPane.showMessageDialog(getDialog(),\n\t\t\t\t\t\t\tDialoguesProfiles.get().cannotDeleteDefault(),\n\t\t\t\t\t\t\tDialoguesProfiles.get().deleteProfile(),\n\t\t\t\t\t\t\tJOptionPane.INFORMATION_MESSAGE);\n\t\t\t\t\treturn; //Can not delete the default profile\n\t\t\t\t}\n\t\t\t\tint value = JOptionPane.showConfirmDialog(getDialog(),\n\t\t\t\t\t\tDialoguesProfiles.get().deleteProfileConfirm(profile.getName()),\n\t\t\t\t\t\tDialoguesProfiles.get().deleteProfile(),\n\t\t\t\t\t\tJOptionPane.YES_NO_OPTION,\n\t\t\t\t\t\tJOptionPane.QUESTION_MESSAGE);\n\t\t\t\tif (value != JOptionPane.YES_OPTION) {\n\t\t\t\t\treturn; //Cancel\n\t\t\t\t}\n\t\t\t\t//Delete profile\n\t\t\t\tprogram.getProfileManager().getProfiles().remove(profile);\n\t\t\t\tprofile.delete();\n\t\t\t\tupdateProfiles();\n\t\t\t\tprogram.getMainWindow().updateTitle();\n\t\t\t\tjProfiles.updateUI();\n\n\t\t\t} else if (ProfileDialogAction.DEFAULT.name().equals(e.getActionCommand())) {\n\t\t\t\tProfile profile = jProfiles.getSelectedValue();\n\t\t\t\tif (profile == null || profile.isDefaultProfile()) {\n\t\t\t\t\treturn; //Cancel or already default\n\t\t\t\t}\n\t\t\t\t//Clear default profile\n\t\t\t\tfor (Profile profileLoop : program.getProfileManager().getProfiles()) {\n\t\t\t\t\tprofileLoop.setDefaultProfile(false);\n\t\t\t\t}\n\t\t\t\t//Set default profile\n\t\t\t\tprofile.setDefaultProfile(true);\n\t\t\t\tjProfiles.updateUI();\n\t\t\t} else if (ProfileDialogAction.CLOSE.name().equals(e.getActionCommand())) {\n\t\t\t\tsetVisible(false);\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void mouseClicked(final MouseEvent e) {\n\t\t\tif (e.getClickCount() == 2 && getDialog().isEnabled()) {\n\t\t\t\tstartLoadProfile();\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void mousePressed(final MouseEvent e) { }\n\n\t\t@Override\n\t\tpublic void mouseReleased(final MouseEvent e) { }\n\n\t\t@Override\n\t\tpublic void mouseEntered(final MouseEvent e) { }\n\n\t\t@Override\n\t\tpublic void mouseExited(final MouseEvent e) { }\n\t}\n\tpublic class JProfileListRenderer implements ListCellRenderer<Profile> {\n\n\t\tprivate final ListCellRenderer<? super Profile> renderer;\n\n\t\tpublic JProfileListRenderer(ListCellRenderer<? super Profile> renderer) {\n\t\t\tthis.renderer = renderer;\n\t\t}\n\n\t\t@Override\n\t\tpublic Component getListCellRendererComponent(JList<? extends Profile> list, Profile value, int index, boolean isSelected, boolean cellHasFocus) {\n\t\t\tComponent component = renderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);\n\t\t\tif (value.isActiveProfile()) {\n\t\t\t\tFont font = component.getFont();\n\t\t\t\tcomponent.setFont(new Font(font.getName(), font.getStyle() + Font.BOLD, font.getSize()));\n\t\t\t}\n\t\t\treturn component;\n\t\t}\n\t}\n\n\n\n\tprivate class NewProfile extends LockWorkerAdaptor {\n\n\t\tprivate final String profileName;\n\n\t\tpublic NewProfile(final String profileName) {\n\t\t\tthis.profileName = profileName;\n\t\t}\n\n\t\t@Override\n\t\tpublic void task() {\n\t\t\tProfile profile = new Profile(profileName, false, false, ProfileType.SQLITE);\n\t\t\tprogram.getProfileManager().getProfiles().add(profile);\n\t\t\tprofile.save();\n\t\t\tloadProfileWork(profile);\n\t\t}\n\n\t\t@Override\n\t\tpublic void hidden() {\n\t\t\tloadProfileGui();\n\t\t}\n\t}\n\n\tprivate class LoadProfile extends LockWorkerAdaptor {\n\n\t\tprivate final Profile profile;\n\n\t\tpublic LoadProfile(final Profile profile) {\n\t\t\tthis.profile = profile;\n\t\t}\n\n\t\t@Override\n\t\tpublic void task() {\n\t\t\tloadProfileWork(profile);\n\t\t}\n\n\t\t@Override\n\t\tpublic void hidden() {\n\t\t\tloadProfileGui();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/AssetsToolSettingsPanel.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\n\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport javax.swing.GroupLayout;\nimport javax.swing.JCheckBox;\nimport javax.swing.JComboBox;\nimport javax.swing.JLabel;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\n\n\npublic class AssetsToolSettingsPanel extends JSettingsPanel {\n\n\tprivate static enum ContractsOwnerFormat {\n\t\tISSUER_CHARACTER() {\n\t\t\t@Override\n\t\t\tprotected String getName() {\n\t\t\t\treturn DialoguesSettings.get().contractAssetsCharacter();\n\t\t\t}\n\t\t},\n\t\tISSUER_CORPORATION() {\n\t\t\t@Override\n\t\t\tprotected String getName() {\n\t\t\t\treturn DialoguesSettings.get().contractAssetsCorporation();\n\t\t\t}\n\t\t},\n\t\tISSUER_BOTH() {\n\t\t\t@Override\n\t\t\tprotected String getName() {\n\t\t\t\treturn DialoguesSettings.get().contractAssetsBoth();\n\t\t\t}\n\t\t};\n\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\treturn getName();\n\t\t}\n\n\t\tprotected abstract String getName();\n\t}\n\n\tprivate final JCheckBox jSellOrders;\n\tprivate final JCheckBox jBuyOrders;\n\tprivate final JCheckBox jSellContracts;\n\tprivate final JCheckBox jBuyContracts;\n\tprivate final JComboBox<ContractsOwnerFormat> jContractsOwner;\n\tprivate final JCheckBox jManufacturing;\n\tprivate final JCheckBox jCopying;\n\tprivate final JCheckBox jJumpClones;\n\tprivate final JCheckBox jPluggedInImplants;\n\tprivate final JCheckBox jContainerItemID;\n\n\tpublic AssetsToolSettingsPanel(final Program program, final SettingsDialog settingsDialog) {\n\t\tsuper(program, settingsDialog, DialoguesSettings.get().assets(), Images.TOOL_ASSETS.getIcon());\n\n\t\tjSellOrders = new JCheckBox(DialoguesSettings.get().includeSellOrders());\n\t\tjBuyOrders = new JCheckBox(DialoguesSettings.get().includeBuyOrders());\n\t\tjSellContracts = new JCheckBox(DialoguesSettings.get().includeSellContracts());\n\t\tjBuyContracts = new JCheckBox(DialoguesSettings.get().includeBuyContracts());\n\t\tJLabel jContractsOwnerLabel = new JLabel(DialoguesSettings.get().contractAssetsLabel());\n\t\tJLabel jContractsOwnerWarn = new JLabel(DialoguesSettings.get().contractAssetsLabelWarn());\n\t\tjContractsOwner = new JComboBox<>(ContractsOwnerFormat.values());\n\t\tjContractsOwner.setPrototypeDisplayValue(ContractsOwnerFormat.ISSUER_BOTH);\n\t\tjContractsOwner.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tjContractsOwnerWarn.setVisible(jContractsOwner.getItemAt(jContractsOwner.getSelectedIndex()) == ContractsOwnerFormat.ISSUER_BOTH);\n\t\t\t}\n\t\t});\n\t\tjManufacturing = new JCheckBox(DialoguesSettings.get().includeManufacturing());\n\t\tjCopying = new JCheckBox(DialoguesSettings.get().includeCopying());\n\t\tjJumpClones = new JCheckBox(DialoguesSettings.get().includeJumpClones());\n\t\tjPluggedInImplants = new JCheckBox(DialoguesSettings.get().includePluggedInImplants());\n\t\tjContainerItemID = new JCheckBox(DialoguesSettings.get().showContainerItemID());\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t\t.addComponent(jSellOrders)\n\t\t\t\t\t\t.addComponent(jBuyOrders)\n\t\t\t\t\t\t.addComponent(jSellContracts)\n\t\t\t\t\t\t.addComponent(jBuyContracts)\n\t\t\t\t\t\t.addComponent(jManufacturing)\n\t\t\t\t\t\t.addComponent(jCopying)\n\t\t\t\t\t\t.addComponent(jJumpClones)\n\t\t\t\t\t\t.addComponent(jPluggedInImplants)\n\t\t\t\t\t)\n\t\t\t\t\t.addGap(0, 0, 100)\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t\t.addComponent(jContractsOwnerLabel)\n\t\t\t\t\t\t.addComponent(jContractsOwner, 200, 200, 200)\n\t\t\t\t\t\t.addComponent(jContractsOwnerWarn)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.addComponent(jContainerItemID)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jSellOrders, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jBuyOrders, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addGap(0)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t\t\t.addComponent(jSellContracts, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t\t.addComponent(jContractsOwnerLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.addGap(0)\n\t\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t\t\t.addComponent(jBuyContracts, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t\t.addComponent(jContractsOwner, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.addGap(0)\n\t\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t\t\t.addComponent(jContractsOwnerWarn, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t\t.addComponent(jManufacturing, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.addGap(0)\n\t\t\t\t.addComponent(jCopying, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jJumpClones, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jPluggedInImplants, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jContainerItemID, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t);\n\t}\n\n\t@Override\n\tpublic UpdateType save() {\n\t\tContractsOwnerFormat contractsOwnerFormat = jContractsOwner.getItemAt(jContractsOwner.getSelectedIndex());\n\t\t\n\t\tboolean fullUpdate = jSellOrders.isSelected() != Settings.get().isIncludeSellOrders()\n\t\t\t\t\t\t|| jBuyOrders.isSelected() != Settings.get().isIncludeBuyOrders()\n\t\t\t\t\t\t|| jSellContracts.isSelected() != Settings.get().isIncludeSellContracts()\n\t\t\t\t\t\t|| jBuyContracts.isSelected() != Settings.get().isIncludeBuyContracts()\n\t\t\t\t\t\t|| jManufacturing.isSelected() != Settings.get().isIncludeManufacturing()\n\t\t\t\t\t\t|| jCopying.isSelected() != Settings.get().isIncludeCopying()\n\t\t\t\t\t\t|| jJumpClones.isSelected() != Settings.get().isIncludeJumpClones()\n\t\t\t\t\t\t|| jPluggedInImplants.isSelected() != Settings.get().isIncludePluggedInImplants()\n\t\t\t\t\t\t|| ((jSellContracts.isSelected() || jBuyContracts.isSelected())\n\t\t\t\t\t\t&& ((contractsOwnerFormat == ContractsOwnerFormat.ISSUER_CHARACTER && (Settings.get().isAssetsContractsOwnerCorporation() || Settings.get().isAssetsContractsOwnerBoth()))\n\t\t\t\t\t\t|| (contractsOwnerFormat == ContractsOwnerFormat.ISSUER_CORPORATION && !Settings.get().isAssetsContractsOwnerCorporation())\n\t\t\t\t\t\t|| (contractsOwnerFormat == ContractsOwnerFormat.ISSUER_BOTH && !Settings.get().isAssetsContractsOwnerBoth())))\n\t\t\t\t\t\t;\n\t\tboolean updateContainers = jContainerItemID.isSelected() != Settings.get().isContainersShowItemID();\n\t\tSettings.get().setIncludeSellOrders(jSellOrders.isSelected());\n\t\tSettings.get().setIncludeBuyOrders(jBuyOrders.isSelected());\n\t\tSettings.get().setIncludeSellContracts(jSellContracts.isSelected());\n\t\tSettings.get().setIncludeBuyContracts(jBuyContracts.isSelected());\n\t\tSettings.get().setIncludeManufacturing(jManufacturing.isSelected());\n\t\tSettings.get().setIncludeCopying(jCopying.isSelected());\n\t\tSettings.get().setIncludeJumpClones(jJumpClones.isSelected());\n\t\tSettings.get().setIncludePluggedInImplants(jPluggedInImplants.isSelected());\n\t\tSettings.get().setContainersShowItemID(jContainerItemID.isSelected());\n\t\tSettings.get().setAssetsContractsOwnerCorporation(contractsOwnerFormat == ContractsOwnerFormat.ISSUER_CORPORATION);\n\t\tSettings.get().setAssetsContractsOwnerBoth(contractsOwnerFormat == ContractsOwnerFormat.ISSUER_BOTH);\n\t\tif (fullUpdate) {\n\t\t\treturn UpdateType.FULL_UPDATE;\n\t\t} else if (updateContainers) {\n\t\t\treturn UpdateType.UPDATE_ASSET_TABLES;\n\t\t} else {\n\t\t\treturn UpdateType.NONE;\n\t\t}\n\t}\n\n\t@Override\n\tpublic void load() {\n\t\tjSellOrders.setSelected(Settings.get().isIncludeSellOrders());\n\t\tjBuyOrders.setSelected(Settings.get().isIncludeBuyOrders());\n\t\tjSellContracts.setSelected(Settings.get().isIncludeSellContracts());\n\t\tjBuyContracts.setSelected(Settings.get().isIncludeBuyContracts());\n\t\tjManufacturing.setSelected(Settings.get().isIncludeManufacturing());\n\t\tjCopying.setSelected(Settings.get().isIncludeCopying());\n\t\tjJumpClones.setSelected(Settings.get().isIncludeJumpClones());\n\t\tjPluggedInImplants.setSelected(Settings.get().isIncludePluggedInImplants());\n\t\tjContainerItemID.setSelected(Settings.get().isContainersShowItemID());\n\t\tif (Settings.get().isAssetsContractsOwnerCorporation()) {\n\t\t\tjContractsOwner.setSelectedItem(ContractsOwnerFormat.ISSUER_CORPORATION);\n\t\t} else if (Settings.get().isAssetsContractsOwnerBoth()) {\n\t\t\tjContractsOwner.setSelectedItem(ContractsOwnerFormat.ISSUER_BOTH);\n\t\t} else {\n\t\t\tjContractsOwner.setSelectedItem(ContractsOwnerFormat.ISSUER_CHARACTER);\n\t\t}\n\t}\n}\n\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/ColorSeparatorTableCell.java",
    "content": "/* Glazed Lists                                                 (c) 2003-2006 */\n/* http://publicobject.com/glazedlists/                      publicobject.com,*/\n/*                                                     O'Dell Engineering Ltd.*/\n\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\n\nimport ca.odell.glazedlists.SeparatorList;\nimport javax.swing.*;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings.ColorRow;\nimport net.nikr.eve.jeveasset.gui.shared.table.SeparatorTableCell;\n\n/**\n *\n * @author <a href=\"mailto:jesse@swank.ca\">Jesse Wilson</a>\n */\npublic class ColorSeparatorTableCell extends SeparatorTableCell<ColorRow> {\n\n\tprivate final JLabel jGroup;\n\n\tpublic ColorSeparatorTableCell(final JTable jTable, final SeparatorList<ColorRow> separatorList) {\n\t\tsuper(jTable, separatorList);\n\n\t\tjGroup = new JLabel();\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jExpand)\n\t\t\t\t.addComponent(jGroup)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addComponent(jExpand, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jGroup, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t);\n\t}\n\n\t@Override\n\tprotected void configure(final SeparatorList.Separator<?> separator) {\n\t\tColorRow colorRow = (ColorRow) separator.first();\n\t\tif (colorRow == null) { // handle 'late' rendering calls after this separator is invalid\n\t\t\treturn;\n\t\t}\n\t\tjGroup.setText(colorRow.getColorEntry().getGroup().getName());\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/ColorSettingsPanel.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.FilterList;\nimport ca.odell.glazedlists.ListSelection;\nimport ca.odell.glazedlists.SeparatorList;\nimport ca.odell.glazedlists.TextFilterator;\nimport ca.odell.glazedlists.matchers.MatcherEditor;\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport ca.odell.glazedlists.swing.TextComponentMatcherEditor;\nimport java.awt.Color;\nimport java.awt.Point;\nimport java.awt.Rectangle;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.MouseAdapter;\nimport java.awt.event.MouseEvent;\nimport java.util.ArrayList;\nimport java.util.Comparator;\nimport java.util.List;\nimport javax.swing.ButtonGroup;\nimport javax.swing.GroupLayout;\nimport javax.swing.JButton;\nimport javax.swing.JCheckBoxMenuItem;\nimport javax.swing.JOptionPane;\nimport javax.swing.JRadioButtonMenuItem;\nimport javax.swing.JScrollPane;\nimport javax.swing.JTextField;\nimport javax.swing.SwingUtilities;\nimport javax.swing.UIManager;\nimport javax.swing.UIManager.LookAndFeelInfo;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings.ColorRow;\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings.PredefinedLookAndFeel;\nimport net.nikr.eve.jeveasset.data.settings.ColorTheme.ColorThemeTypes;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.JSimpleColorPicker;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDropDownButton;\nimport net.nikr.eve.jeveasset.gui.shared.components.JFixedToolBar;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\n\n\npublic class ColorSettingsPanel extends JSettingsPanel {\n\n\tprivate final JCheckBoxMenuItem  jChartColor;\n\tprivate final JTextField jFilter;\n\t//Table\n\tprivate final JColorTable jTable;\n\tprivate final DefaultEventTableModel<ColorRow> tableModel;\n\tprivate final EventList<ColorRow> eventList;\n\tprivate final DefaultEventSelectionModel<ColorRow> selectionModel;\n\tprivate ColorThemeTypes colorThemeTypes;\n\tprivate List<ColorRow> colors;\n\tprivate String lookAndFeelClass;\n\tprivate boolean updateLock = false;\n\tprivate final List<JThemeMenuItem> jThemeMenuItems = new ArrayList<>();\n\tprivate final List<JLookAndFeelMenuItem> jLafMenuItems = new ArrayList<>();\n\n\tpublic ColorSettingsPanel(final Program program, final SettingsDialog settingsDialog) {\n\t\tsuper(program, settingsDialog, DialoguesSettings.get().colors(), Images.SETTINGS_COLORS.getIcon());\n\n\t\tJSimpleColorPicker jSimpleColorPicker = new JSimpleColorPicker(settingsDialog.getDialog());\n\n\t\t//Backend\n\t\teventList = EventListManager.create();\n\n\t\t//Filter\n\t\tjFilter = new JTextField();\n\t\tMatcherEditor<ColorRow> matcherEditor = new TextComponentMatcherEditor<>(jFilter, new ColorRowTextFilterator());\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tFilterList<ColorRow> filterList = new FilterList<>(eventList, matcherEditor);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\n\t\t//Separator\n\t\tSeparatorList<ColorRow> separatorList = new SeparatorList<>(filterList, new ColorRowSeparatorComparator(), 1, Integer.MAX_VALUE);\n\n\t\t//Table Model\n\t\ttableModel = EventModels.createTableModel(separatorList, TableFormatFactory.colorsTableFormat());\n\t\t//Table\n\t\tjTable = new JColorTable(program, tableModel, separatorList);\n\t\tjTable.setSeparatorRenderer(new ColorSeparatorTableCell(jTable, separatorList));\n\t\tjTable.setSeparatorEditor(new ColorSeparatorTableCell(jTable, separatorList));\n\t\tjTable.setCellSelectionEnabled(true);\n\t\tjTable.setRowSelectionAllowed(true);\n\t\tjTable.setColumnSelectionAllowed(true);\n\t\tjTable.addMouseListener(new MouseAdapter() {\n\t\t\tint lastShownRow = -1;\n\t\t\tint lastShownColumn = -1;\n\t\t\tboolean ignore = false;\n\n\t\t\t@Override\n\t\t\tpublic void mousePressed(MouseEvent e) {\n\t\t\t\tint row = jTable.rowAtPoint(e.getPoint());\n\t\t\t\tint column = jTable.columnAtPoint(e.getPoint());\n\t\t\t\tif (column == lastShownColumn && row == lastShownRow) {\n\t\t\t\t\tignore = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void mouseClicked(MouseEvent e) {\n\t\t\t\tif (ignore) {\n\t\t\t\t\tignore = false;\n\t\t\t\t\tlastShownRow = -1;\n\t\t\t\t\tlastShownColumn = -1;\n\t\t\t\t\treturn; //Ignore same cell click\n\t\t\t\t}\n\t\t\t\tint row = jTable.rowAtPoint(e.getPoint());\n\t\t\t\tint column = jTable.columnAtPoint(e.getPoint());\n\n\t\t\t\tObject object = tableModel.getElementAt(row);\n\t\t\t\tif (!(object instanceof ColorRow)) {\n\t\t\t\t\treturn; //Ignore Separator\n\t\t\t\t}\n\t\t\t\tColorRow colorRow = (ColorRow) object;\n\n\t\t\t\tString columnName = (String) jTable.getTableHeader().getColumnModel().getColumn(column).getHeaderValue();\n\n\t\t\t\tRectangle cellRect = jTable.getCellRect(row, column, false);\n\t\t\t\tPoint table = jTable.getLocationOnScreen();\n\t\t\t\tPoint point = new Point(table.x + cellRect.x + cellRect.width, table.y + cellRect.y + cellRect.height);\n\t\t\t\tif (columnName.equals(ColorsTableFormat.BACKGROUND.getColumnName())) {\n\t\t\t\t\tif (!colorRow.getColorEntry().isBackgroundEditable()) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tjTable.startEditCell(row, column);\n\t\t\t\t\tjSimpleColorPicker.show(colorRow.getBackground(), colorRow.getDefaultBackground(), colorRow.getColorEntry().isBackgroundNullable(), point, new JSimpleColorPicker.ColorListenere() {\n\t\t\t\t\t\t@Override\n\t\t\t\t\t\tpublic void colorChanged(Color color) {\n\t\t\t\t\t\t\tcolorRow.setBackground(color);\n\t\t\t\t\t\t\tjTable.stopEditCell();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@Override\n\t\t\t\t\t\tpublic void cancelled() {\n\t\t\t\t\t\t\tupdate(row, column);\n\t\t\t\t\t\t\tjTable.stopEditCell();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (columnName.equals(ColorsTableFormat.FOREGROUND.getColumnName())) {\n\t\t\t\t\tif (!colorRow.getColorEntry().isForegroundEditable()) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tjTable.startEditCell(row, column);\n\t\t\t\t\tjSimpleColorPicker.show(colorRow.getForeground(), colorRow.getDefaultForeground(), colorRow.getColorEntry().isForegroundNullable(), point, new JSimpleColorPicker.ColorListenere() {\n\t\t\t\t\t\t@Override\n\t\t\t\t\t\tpublic void colorChanged(Color color) {\n\t\t\t\t\t\t\tcolorRow.setForeground(color);\n\t\t\t\t\t\t\tjTable.stopEditCell();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@Override\n\t\t\t\t\t\tpublic void cancelled() {\n\t\t\t\t\t\t\tupdate(row, column);\n\t\t\t\t\t\t\tjTable.stopEditCell();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tprivate void update(int row, int column) {\n\t\t\t\tlastShownRow = row;\n\t\t\t\tlastShownColumn = column;\n\t\t\t\ttableModel.fireTableCellUpdated(row, 3);\n\t\t\t\tSwingUtilities.invokeLater(new Runnable() {\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic void run() {\n\t\t\t\t\t\t//In case we click outside the table\n\t\t\t\t\t\tlastShownRow = -1;\n\t\t\t\t\t\tlastShownColumn = -1;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t//Selection Model\n\t\tselectionModel = EventModels.createSelectionModel(separatorList);\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\n\t\tjTable.setSelectionModel(selectionModel);\n\n\t\tJScrollPane jTableScroll = new JScrollPane(jTable);\n\n\t\tJFixedToolBar jToolBar = new JFixedToolBar();\n\n\t\tJDropDownButton jSetting = new JDropDownButton(Images.DIALOG_SETTINGS.getIcon());\n\t\tjToolBar.addButtonIcon(jSetting);\n\n\t\tjChartColor = new JCheckBoxMenuItem (DialoguesSettings.get().chartColors());\n\t\tjSetting.add(jChartColor);\n\n\t\tjToolBar.addSeparator();\n\n\t\tJDropDownButton jLookAndFeel = new JDropDownButton(DialoguesSettings.get().lookAndFeel(), Images.FILTER_LOAD.getIcon());\n\t\tjToolBar.addButton(jLookAndFeel);\n\n\t\tButtonGroup lafButtonGroup = new ButtonGroup();\n\t\t//Predefined LookAndFeels\n\t\tfor (PredefinedLookAndFeel predefinedLookAndFeel : PredefinedLookAndFeel.values()) {\n\t\t\tJLookAndFeelMenuItem jMenuItem = new JLookAndFeelMenuItem(predefinedLookAndFeel.getLookAndFeelInfo(), jLookAndFeel, settingsDialog);\n\t\t\tjMenuItem.setSelected(predefinedLookAndFeel.isSelected());\n\t\t\tjLookAndFeel.add(jMenuItem);\n\t\t\tlafButtonGroup.add(jMenuItem);\n\t\t\tjLafMenuItems.add(jMenuItem);\n\t\t}\n\t\t//Installed LookAndFeels\n\t\tfor (LookAndFeelInfo laf : UIManager.getInstalledLookAndFeels()) {\n\t\t\tif (laf.getClassName().equals(UIManager.getSystemLookAndFeelClassName())) {\n\t\t\t\tcontinue; //Skip system LaF\n\t\t\t}\n\t\t\tJLookAndFeelMenuItem jMenuItem = new JLookAndFeelMenuItem(laf, jLookAndFeel, settingsDialog);\n\t\t\tjLookAndFeel.add(jMenuItem);\n\t\t\tlafButtonGroup.add(jMenuItem);\n\t\t\tjLafMenuItems.add(jMenuItem);\n\t\t}\n\n\t\tJDropDownButton jTheme = new JDropDownButton(DialoguesSettings.get().theme(), Images.FILTER_LOAD.getIcon());\n\t\tjToolBar.addButton(jTheme);\n\n\t\tButtonGroup buttonGroup = new ButtonGroup();\n\t\tfor (ColorThemeTypes theme : ColorThemeTypes.values()) {\n\t\t\tJThemeMenuItem jMenuItem = new JThemeMenuItem(theme);\n\t\t\tjTheme.add(jMenuItem);\n\t\t\tbuttonGroup.add(jMenuItem);\n\t\t\tjThemeMenuItems.add(jMenuItem);\n\t\t}\n\n\t\tJButton jCollapse = new JButton(DialoguesSettings.get().collapse(), Images.MISC_COLLAPSED.getIcon());\n\t\tjCollapse.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tjTable.expandSeparators(false);\n\t\t\t}\n\t\t});\n\t\tjToolBar.addButton(jCollapse);\n\n\t\tJButton jExpand = new JButton(DialoguesSettings.get().expand(), Images.MISC_EXPANDED.getIcon());\n\t\tjExpand.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tjTable.expandSeparators(true);\n\t\t\t}\n\t\t});\n\t\tjToolBar.addButton(jExpand);\n\n\t\tJFixedToolBar jToolBarSearch = new JFixedToolBar();\n\n\t\tjToolBarSearch.add(jFilter);\n\n\t\tJButton jClear = new JButton(Images.TAB_CLOSE.getIcon());\n\t\tjClear.setContentAreaFilled(false);\n\t\tjClear.setFocusPainted(false);\n\t\tjClear.setPressedIcon(Images.TAB_CLOSE_ACTIVE.getIcon());\n\t\tjClear.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tjFilter.setText(\"\");\n\t\t\t}\n\t\t});\n\t\tjToolBarSearch.add(jClear);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t.addComponent(jToolBar, jToolBar.getMinimumSize().width, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t.addComponent(jToolBarSearch, jToolBarSearch.getMinimumSize().width, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t.addComponent(jTableScroll, 375, 375, Integer.MAX_VALUE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jToolBar ,GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t.addComponent(jToolBarSearch, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t.addComponent(jTableScroll, 250, 250, Integer.MAX_VALUE)\n\t\t);\n\t}\n\n\t@Override\n\tpublic UpdateType save() {\n\t\tboolean lookAndfeelChanged = !Settings.get().getColorSettings().getLookAndFeelClass().equals(lookAndFeelClass);\n\t\tSettings.get().getColorSettings().setColorTheme(colorThemeTypes.getInstance(), true); //Later overwritten by table values, but, set uneditable values\n\t\tSettings.get().getColorSettings().setLookAndFeelClass(lookAndFeelClass);\n\t\ttry {\n\t\t\teventList.getReadWriteLock().readLock().lock();\n\t\t\tfor (ColorRow row : eventList) {\n\t\t\t\tSettings.get().getColorSettings().set(row);\n\t\t\t}\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t\tboolean easyChartColors = jChartColor.isSelected();\n\t\tboolean repaint = !Settings.get().getColorSettings().get().equals(colors)\n\t\t\t\t\t\t|| Settings.get().isEasyChartColors() != easyChartColors;\n\t\tSettings.get().setEasyChartColors(easyChartColors);\n\t\tcolors = Settings.get().getColorSettings().get(); //Copy to check for changes on save\n\t\tif (lookAndfeelChanged && !UIManager.getLookAndFeel().getClass().getName().equals(lookAndFeelClass)) {\n\t\t\tJOptionPane.showMessageDialog(parent, DialoguesSettings.get().lookAndFeelMsg(), DialoguesSettings.get().lookAndFeelTitle(), JOptionPane.PLAIN_MESSAGE);\n\t\t}\n\t\treturn repaint ? UpdateType.FULL_REPAINT : UpdateType.NONE;\n\t}\n\n\t@Override\n\tpublic void load() {\n\t\tupdateLock = true;\n\t\tcolors = Settings.get().getColorSettings().get(); //Copy to check for changes on save\n\t\tupdateTable(Settings.get().getColorSettings().get()); //This copy will be edited\n\t\tcolorThemeTypes = Settings.get().getColorSettings().getColorTheme().getType();\n\t\tjChartColor.setSelected(Settings.get().isEasyChartColors());\n\t\tselect(colorThemeTypes);\n\t\tlookAndFeelClass = Settings.get().getColorSettings().getLookAndFeelClass();\n\t\tselect(lookAndFeelClass);\n\t\tupdateLock = false;\n\t}\n\n\tprivate void updateLookAndFeelClass(String lookAndFeelClass) {\n\t\tthis.lookAndFeelClass = lookAndFeelClass;\n\t}\n\n\tprivate void updateTheme(ColorThemeTypes colorTheme) {\n\t\tList<ColorRow> rows = EventListManager.safeList(eventList);\n\t\tboolean overwrite;\n\t\tif (changed(rows)) {\n\t\t\tint value = JOptionPane.showConfirmDialog(parent, DialoguesSettings.get().overwriteMsg(), DialoguesSettings.get().overwriteTitle(), JOptionPane.YES_NO_CANCEL_OPTION);\n\t\t\tif (value == JOptionPane.CANCEL_OPTION) {\n\t\t\t\tupdateLock = true;\n\t\t\t\tselect(colorThemeTypes);\n\t\t\t\tupdateLock = false;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\toverwrite = value == JOptionPane.YES_OPTION;\n\t\t} else {\n\t\t\toverwrite = true;\n\t\t}\n\t\tcolorThemeTypes = colorTheme;\n\t\tupdateTable(colorThemeTypes.getInstance().get(overwrite, rows));\n\t}\n\n\tpublic boolean changed(List<ColorRow> old) {\n\t\tfor (ColorRow colorRow : old) {\n\t\t\tif (!colorRow.isBackgroundDefault() || !colorRow.isForegroundDefault()) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate void select(ColorThemeTypes colorTheme) {\n\t\tfor (JThemeMenuItem jThemeMenuItem : jThemeMenuItems) {\n\t\t\tif (jThemeMenuItem.getTheme().equals(colorTheme)) {\n\t\t\t\tjThemeMenuItem.setSelected(true);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void select(String lookAndFeelClass) {\n\t\tfor (JLookAndFeelMenuItem jLookAndFeelMenuItem : jLafMenuItems) {\n\t\t\tif (jLookAndFeelMenuItem.getLookAndFeelClass().equals(lookAndFeelClass)) {\n\t\t\t\tjLookAndFeelMenuItem.setSelected(true);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void updateTable(List<ColorRow> rows) {\n\t\tjTable.lock();\n\t\tjTable.saveExpandedState();\n\t\ttry {\n\t\t\teventList.getReadWriteLock().writeLock().lock();\n\t\t\teventList.clear();\n\t\t\teventList.addAll(rows);\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t\tjTable.loadExpandedState();\n\t\tjTable.unlock();\n\t}\n\n\tpublic static class ColorRowSeparatorComparator implements Comparator<ColorRow> {\n\t\t@Override\n\t\tpublic int compare(final ColorRow o1, final ColorRow o2) {\n\t\t\treturn o1.getColorEntry().getGroup().compareTo(o2.getColorEntry().getGroup());\n\t\t}\n\t}\n\n\tclass ColorRowTextFilterator implements TextFilterator<ColorRow> {\n\n\t\t@Override\n\t\tpublic void getFilterStrings(List<String> baseList, ColorRow element) {\n\t\t\tbaseList.add(element.getColorEntry().getDescription());\n\t\t\tbaseList.add(element.getColorEntry().getGroup().getName());\n\t\t}\n\t}\n\n\tprivate final class JThemeMenuItem extends JRadioButtonMenuItem {\n\t\tprivate final ColorThemeTypes theme;\n\n\t\tpublic JThemeMenuItem(ColorThemeTypes theme) {\n\t\t\tsuper(theme.toString());\n\t\t\tthis.theme = theme;\n\t\t\taddActionListener(new ActionListener() {\n\t\t\t\t@Override\n\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\tif (updateLock) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tupdateTheme(theme);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tpublic ColorThemeTypes getTheme() {\n\t\t\treturn theme;\n\t\t}\n\n\t}\n\n\tprivate final class JLookAndFeelMenuItem extends JRadioButtonMenuItem {\n\t\tprivate final String lookAndFeelClass;\n\n\t\tpublic JLookAndFeelMenuItem(LookAndFeelInfo lookAndFeel, JDropDownButton jDropDownButton, final SettingsDialog settingsDialog) {\n\t\t\tsuper(lookAndFeel.getName());\n\t\t\tthis.lookAndFeelClass = lookAndFeel.getClassName();\n\t\t\taddActionListener(new ActionListener() {\n\t\t\t\t@Override\n\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\tif (updateLock) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tupdateLookAndFeelClass(lookAndFeelClass);\n\t\t\t\t}\n\t\t\t});\n\t\t\tLookAndFeelPreview.install(lookAndFeelClass, jDropDownButton, this, settingsDialog);\n\t\t}\n\n\t\tpublic String getLookAndFeelClass() {\n\t\t\treturn lookAndFeelClass;\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/ColorsTableFormat.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\n\nimport java.awt.Color;\nimport java.util.Comparator;\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings.ColorRow;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\n\npublic enum ColorsTableFormat implements EnumTableColumn<ColorRow> {\n\tNAME(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesSettings.get().columnName();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final ColorRow from) {\n\t\t\treturn from.getColorEntry().getDescription();\n\t\t}\n\t},\n\tBACKGROUND(Color.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesSettings.get().columnBackground();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final ColorRow from) {\n\t\t\treturn from.getBackground();\n\t\t}\n\t},\n\tFOREGROUND(Color.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesSettings.get().columnForeground();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final ColorRow from) {\n\t\t\treturn from.getForeground();\n\t\t}\n\t},\n\tPREVIEW(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesSettings.get().columnPreview();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final ColorRow from) {\n\t\t\treturn DialoguesSettings.get().testText();\n\t\t}\n\t},\n\tSELECTED(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn DialoguesSettings.get().columnSelected();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final ColorRow from) {\n\t\t\treturn DialoguesSettings.get().testSelectedText();\n\t\t}\n\t};\n\n\tprivate final Class<?> type;\n\tprivate final Comparator<?> comparator;\n\n\tprivate ColorsTableFormat(final Class<?> type) {\n\t\tthis.type = type;\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\n\t}\n\t@Override\n\tpublic Class<?> getType() {\n\t\treturn type;\n\t}\n\t@Override\n\tpublic Comparator<?> getComparator() {\n\t\treturn comparator;\n\t}\n\t@Override\n\tpublic String toString() {\n\t\treturn getColumnName();\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/ContractToolSettingsPanel.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\r\n\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JCheckBox;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JLabelMultiline;\r\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\r\n\r\n\r\npublic class ContractToolSettingsPanel extends JSettingsPanel {\r\n\r\n\tprivate final JCheckBox jSaveHistory;\r\n\r\n\tpublic ContractToolSettingsPanel(final Program program, final SettingsDialog settingsDialog) {\r\n\t\tsuper(program, settingsDialog, DialoguesSettings.get().contracts(), Images.TOOL_CONTRACTS.getIcon());\r\n\r\n\t\tjSaveHistory = new JCheckBox(DialoguesSettings.get().contractsSaveHistory());\r\n\r\n\t\tJLabelMultiline jSaveHistoryWarning = new JLabelMultiline(DialoguesSettings.get().saveHistoryWarning(), 2);\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t.addComponent(jSaveHistory)\r\n\t\t\t\t.addComponent(jSaveHistoryWarning, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(jSaveHistory, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jSaveHistoryWarning, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\r\n\t\t);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic UpdateType save() {\r\n\t\tSettings.get().setContractHistory(jSaveHistory.isSelected());\r\n\t\treturn UpdateType.NONE;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void load() {\r\n\t\tjSaveHistory.setSelected(Settings.get().isContractHistory());\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/ExperimentalSettingsPanel.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\n\nimport javax.swing.GroupLayout;\nimport javax.swing.JCheckBox;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.images.Images;\n\n\npublic class ExperimentalSettingsPanel extends JSettingsPanel {\n\n\tprivate final JCheckBox jCellValueCache;\n\n\tpublic ExperimentalSettingsPanel(final Program program, final SettingsDialog settingsDialog) {\n\t\tsuper(program, settingsDialog, \"Experimental\", Images.JOBS_INVENTION_SUCCESS.getIcon());\n\t\tjCellValueCache = new JCheckBox(\"Filter cell value cache\");\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t.addComponent(jCellValueCache)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jCellValueCache, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t);\n\t}\n\n\t@Override\n\tpublic UpdateType save() {\n\t\tSettings.get().setCellValueCache(jCellValueCache.isSelected());\n\t\treturn UpdateType.NONE;\n\t}\n\n\t@Override\n\tpublic void load() {\n\t\tjCellValueCache.setSelected(Settings.get().isColumnValueCache());\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/GeneralSettingsPanel.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\n\nimport com.sun.jna.Platform;\nimport java.awt.event.FocusAdapter;\nimport java.awt.event.FocusEvent;\nimport javax.swing.ButtonGroup;\nimport javax.swing.GroupLayout;\nimport javax.swing.JCheckBox;\nimport javax.swing.JComboBox;\nimport javax.swing.JLabel;\nimport javax.swing.JRadioButton;\nimport javax.swing.JTextField;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.ToolLoader;\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings.DecimalSeparator;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.Settings.TransactionProfitPrice;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.DocumentFactory;\nimport net.nikr.eve.jeveasset.gui.shared.components.JIntegerField;\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\n\n\npublic class GeneralSettingsPanel extends JSettingsPanel {\n\n\tprivate final JRadioButton jLoadToolsBackground;\n\tprivate final JRadioButton jLoadToolsOpen;\n\tprivate final JRadioButton jLoadToolsStartup;\n\tprivate final JCheckBox jEnterFilters;\n\tprivate final JCheckBox jHighlightSelectedRow;\n\tprivate final JCheckBox jFocusEveOnline;\n\tprivate final JTextField jMaxOrderAge;\n\tprivate final JTextField jTransactionProfitMargin;\n\tprivate final JComboBox<TransactionProfitPrice> jTransactionProfitPrice;\n\tprivate final JComboBox<DecimalSeparator> jDecimalSeparator;\n\n\n\tpublic GeneralSettingsPanel(final Program program, final SettingsDialog optionsDialog) {\n\t\tsuper(program, optionsDialog, DialoguesSettings.get().general(), Images.DIALOG_SETTINGS.getIcon());\n\n\t\tButtonGroup tools = new ButtonGroup();\n\t\tjLoadToolsBackground = new JRadioButton(DialoguesSettings.get().loadToolsBackground());\n\t\ttools.add(jLoadToolsBackground);\n\t\tjLoadToolsOpen = new JRadioButton(DialoguesSettings.get().loadToolsOpen());\n\t\ttools.add(jLoadToolsOpen);\n\t\tjLoadToolsStartup = new JRadioButton(DialoguesSettings.get().loadToolsStartup());\n\t\ttools.add(jLoadToolsStartup);\n\n\t\tjEnterFilters = new JCheckBox(DialoguesSettings.get().enterFilter());\n\n\t\tjHighlightSelectedRow = new JCheckBox(DialoguesSettings.get().highlightSelectedRow());\n\n\t\tjFocusEveOnline = new JCheckBox(DialoguesSettings.get().focusEveOnline());\n\n\t\tJLabel jDecimalSeparatorLabel = new JLabel(DialoguesSettings.get().copyDecimalSeparator());\n\t\tjDecimalSeparator = new JComboBox<>(DecimalSeparator.values());\n\n\t\tJLabel jFocusEveOnlineLinuxHelp = new JLabel(DialoguesSettings.get().focusEveOnlineLinuxHelp());\n\t\tjFocusEveOnlineLinuxHelp.setVisible(Platform.isLinux());\n\t\tJLabel jFocusEveOnlineLinuxHelp2 = new JLabel(DialoguesSettings.get().focusEveOnlineLinuxHelp2());\n\t\tjFocusEveOnlineLinuxHelp2.setVisible(Platform.isLinux());\n\t\tJTextField jFocusEveOnlineLinuxCmd = new JTextField(DialoguesSettings.get().focusEveOnlineLinuxCmd());\n\t\tjFocusEveOnlineLinuxCmd.addFocusListener(new FocusAdapter() {\n\t\t\t@Override\n\t\t\tpublic void focusGained(FocusEvent e) {\n\t\t\t\tjFocusEveOnlineLinuxCmd.selectAll();\n\t\t\t}\n\t\t});\n\t\tjFocusEveOnlineLinuxCmd.setEditable(false);\n\t\tjFocusEveOnlineLinuxCmd.setVisible(Platform.isLinux());\n\n\t\tJLabel jTransactionProfitLabel = new JLabel(DialoguesSettings.get().transactionsProfit());\n\n\t\tJLabel jMaxOrderAgeLabel = new JLabel(DialoguesSettings.get().includeDays());\n\t\tjMaxOrderAge = new JIntegerField(\"0\", DocumentFactory.ValueFlag.POSITIVE_AND_ZERO);\n\t\tJLabel jDaysLabel = new JLabel(DialoguesSettings.get().days());\n\n\t\tJLabel jTransactionProfitPriceLabel = new JLabel(DialoguesSettings.get().transactionsPrice());\n\t\tjTransactionProfitPrice = new JComboBox<>(TransactionProfitPrice.values());\n\t\tjTransactionProfitPrice.setPrototypeDisplayValue(TransactionProfitPrice.LASTEST);\n\n\t\tJLabel jTransactionProfitMarginLabel = new JLabel(DialoguesSettings.get().transactionsMargin());\n\t\tjTransactionProfitMargin = new JIntegerField(\"0\", DocumentFactory.ValueFlag.POSITIVE_AND_ZERO);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t.addComponent(jLoadToolsBackground)\n\t\t\t\t.addComponent(jLoadToolsOpen)\n\t\t\t\t.addComponent(jLoadToolsStartup)\n\t\t\t\t.addComponent(jEnterFilters)\n\t\t\t\t.addComponent(jHighlightSelectedRow)\n\t\t\t\t.addComponent(jFocusEveOnline)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addGap(25)\n\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t\t\t.addComponent(jFocusEveOnlineLinuxHelp)\n\t\t\t\t\t\t.addComponent(jFocusEveOnlineLinuxHelp2)\n\t\t\t\t\t\t.addComponent(jFocusEveOnlineLinuxCmd)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.addComponent(jTransactionProfitLabel)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t\t\t.addComponent(jDecimalSeparatorLabel)\n\t\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t\t.addGap(25)\n\t\t\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t\t\t\t\t.addComponent(jTransactionProfitPriceLabel)\n\t\t\t\t\t\t\t\t.addComponent(jMaxOrderAgeLabel)\n\t\t\t\t\t\t\t\t.addComponent(jTransactionProfitMarginLabel)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t\t\t.addComponent(jMaxOrderAge)\n\t\t\t\t\t\t.addComponent(jTransactionProfitPrice)\n\t\t\t\t\t\t.addComponent(jTransactionProfitMargin)\n\t\t\t\t\t\t.addComponent(jDecimalSeparator)\n\t\t\t\t\t)\n\t\t\t\t\t.addComponent(jDaysLabel)\n\t\t\t\t)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jLoadToolsBackground, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jLoadToolsOpen, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jLoadToolsStartup, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addGap(10)\n\t\t\t\t.addComponent(jEnterFilters, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jHighlightSelectedRow, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jFocusEveOnline, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jFocusEveOnlineLinuxHelp, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jFocusEveOnlineLinuxHelp2, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jFocusEveOnlineLinuxCmd, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addGap(10)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jDecimalSeparatorLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jDecimalSeparator, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addComponent(jTransactionProfitLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jMaxOrderAgeLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jMaxOrderAge, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jDaysLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jTransactionProfitPriceLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jTransactionProfitPrice, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jTransactionProfitMarginLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jTransactionProfitMargin, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t);\n\t}\n\n\t@Override\n\tpublic UpdateType save() {\n\t\tint maximumPurchaseAge;\n\t\ttry {\n\t\t\tmaximumPurchaseAge = Integer.valueOf(jMaxOrderAge.getText());\n\t\t} catch (NumberFormatException ex) {\n\t\t\tmaximumPurchaseAge = 0;\n\t\t}\n\t\tTransactionProfitPrice transactionProfitPrice = jTransactionProfitPrice.getItemAt(jTransactionProfitPrice.getSelectedIndex());\n\t\tint transactionProfitMargin;\n\t\ttry {\n\t\t\ttransactionProfitMargin = Integer.valueOf(jTransactionProfitMargin.getText());\n\t\t} catch (NumberFormatException ex) {\n\t\t\ttransactionProfitMargin = 0;\n\t\t}\n\t\tDecimalSeparator copyDecimalSeparator = jDecimalSeparator.getItemAt(jDecimalSeparator.getSelectedIndex());\n\t\tboolean update = maximumPurchaseAge != Settings.get().getMaximumPurchaseAge()\n\t\t\t\t\t\t|| transactionProfitPrice != Settings.get().getTransactionProfitPrice()\n\t\t\t\t\t\t|| transactionProfitMargin != Settings.get().getTransactionProfitMargin();\n\t\tboolean repaint = jHighlightSelectedRow.isSelected() != Settings.get().isHighlightSelectedRows();\n\t\tboolean loadToolsBackground = jLoadToolsBackground.isSelected();\n\t\tSettings.get().setLoadToolsBackground(jLoadToolsBackground.isSelected());\n\t\tSettings.get().setLoadToolsStartup(jLoadToolsStartup.isSelected());\n\t\tSettings.get().setFilterOnEnter(jEnterFilters.isSelected());\n\t\tSettings.get().setHighlightSelectedRows(jHighlightSelectedRow.isSelected());\n\t\tSettings.get().setFocusEveOnlineOnEsiUiCalls(jFocusEveOnline.isSelected());\n\t\tSettings.get().setMaximumPurchaseAge(maximumPurchaseAge);\n\t\tSettings.get().setTransactionProfitPrice(transactionProfitPrice);\n\t\tSettings.get().setTransactionProfitMargin(transactionProfitMargin);\n\t\tSettings.get().getCopySettings().setCopyDecimalSeparator(copyDecimalSeparator);\n\t\tif (loadToolsBackground) {\n\t\t\tToolLoader.startBackgroundToolLoading(program);\n\t\t} else {\n\t\t\tToolLoader.stopBackgroundToolLoading();\n\t\t}\n\t\tif (update) {\n\t\t\treturn UpdateType.FULL_UPDATE;\n\t\t} else if (repaint) {\n\t\t\treturn UpdateType.FULL_REPAINT;\n\t\t} else {\n\t\t\treturn UpdateType.NONE;\n\t\t}\n\t}\n\n\t@Override\n\tpublic void load() {\n\t\tjLoadToolsOpen.setSelected(true);\n\t\tjLoadToolsBackground.setSelected(Settings.get().isLoadToolsBackground());\n\t\tjLoadToolsStartup.setSelected(Settings.get().isLoadToolsStartup());\n\t\tjEnterFilters.setSelected(Settings.get().isFilterOnEnter());\n\t\tjHighlightSelectedRow.setSelected(Settings.get().isHighlightSelectedRows());\n\t\tjFocusEveOnline.setSelected(Settings.get().isFocusEveOnlineOnEsiUiCalls());\n\t\tjMaxOrderAge.setText(String.valueOf(Settings.get().getMaximumPurchaseAge()));\n\t\tjTransactionProfitPrice.setSelectedItem(Settings.get().getTransactionProfitPrice());\n\t\tjTransactionProfitMargin.setText(String.valueOf(Settings.get().getTransactionProfitMargin()));\n\t\tjDecimalSeparator.setSelectedItem(Settings.get().getCopySettings().getCopyDecimalSeparator());\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/IndustryJobsToolSettingsPanel.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\r\n\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JCheckBox;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JLabelMultiline;\r\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\r\n\r\n\r\npublic class IndustryJobsToolSettingsPanel extends JSettingsPanel {\r\n\r\n\tprivate final JCheckBox jSaveHistory;\r\n\r\n\tpublic IndustryJobsToolSettingsPanel(final Program program, final SettingsDialog settingsDialog) {\r\n\t\tsuper(program, settingsDialog, DialoguesSettings.get().industryJobs(), Images.TOOL_INDUSTRY_JOBS.getIcon());\r\n\r\n\t\tjSaveHistory = new JCheckBox(DialoguesSettings.get().industryJobsSaveHistory());\r\n\r\n\t\tJLabelMultiline jSaveHistoryWarning = new JLabelMultiline(DialoguesSettings.get().saveHistoryWarning(), 2);\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t.addComponent(jSaveHistory)\r\n\t\t\t\t.addComponent(jSaveHistoryWarning, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(jSaveHistory, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jSaveHistoryWarning, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\r\n\t\t);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic UpdateType save() {\r\n\t\tSettings.get().setIndustryJobsHistory(jSaveHistory.isSelected());\r\n\t\treturn UpdateType.NONE;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void load() {\r\n\t\tjSaveHistory.setSelected(Settings.get().isIndustryJobsHistory());\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/JColorTable.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\n\nimport ca.odell.glazedlists.SeparatorList;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport java.awt.Color;\nimport java.awt.Component;\nimport java.awt.Graphics;\nimport java.awt.Graphics2D;\nimport java.awt.Rectangle;\nimport java.awt.event.MouseAdapter;\nimport java.awt.event.MouseEvent;\nimport java.beans.PropertyChangeEvent;\nimport java.beans.PropertyChangeListener;\nimport javax.swing.BorderFactory;\nimport javax.swing.GroupLayout;\nimport javax.swing.JComponent;\nimport javax.swing.JLabel;\nimport javax.swing.JPanel;\nimport javax.swing.JTable;\nimport javax.swing.table.DefaultTableCellRenderer;\nimport javax.swing.table.JTableHeader;\nimport javax.swing.table.TableCellRenderer;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings.ColorRow;\nimport net.nikr.eve.jeveasset.data.settings.Colors;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.ColorUtil;\nimport net.nikr.eve.jeveasset.gui.shared.table.JSeparatorTable;\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\n\n\npublic class JColorTable extends JSeparatorTable {\n\n\tprivate final DefaultEventTableModel<ColorSettings.ColorRow> tableModel;\n\tprivate final MyComboBox jForeground;\n\tprivate final MyComboBox jBackground;\n\tprivate final JLabel jPreview;\n\tprivate final JLabel jSelected;\n\tprivate final JNullableLabel jNotEditable;\n\tprivate int mouseRow = -1;\n\tprivate int mouseColumn = -1;\n\tprivate int editRow = -1;\n\tprivate int editColumn = -1;\n\n\tpublic JColorTable(final Program program, final DefaultEventTableModel<ColorRow> tableModel, SeparatorList<?> separatorList) {\n\t\tsuper(program, tableModel, separatorList);\n\n\t\tthis.tableModel = tableModel;\n\t\tthis.getTableHeader().setDefaultRenderer(new IconTableCellRenderer(this));\n\n\t\tthis.setDefaultRenderer(Color.class, new ColorCellRenderer());\n\n\t\tthis.getTableHeader().setReorderingAllowed(false);\n\t\tthis.getTableHeader().setResizingAllowed(false);\n\n\t\tthis.addMouseListener(new MouseAdapter() {\n\t\t@Override\n\t\t\tpublic void mouseExited(MouseEvent e) {\n\t\t\t\t//Repaint\n\t\t\t\tRectangle oldCell = getCellRect(mouseRow, mouseColumn, true);\n\t\t\t\trepaint(oldCell);\n\t\t\t\t//Reset\n\t\t\t\tmouseRow = -1;\n\t\t\t\tmouseColumn = -1;\n\t\t\t}\n\t\t});\n\n\t\tthis.addMouseMotionListener(new MouseAdapter() {\n\t\t\t@Override\n\t\t\tpublic void mouseMoved(MouseEvent e) {\n\t\t\t\tboolean update = false;\n\t\t\t\tint oldRow = mouseRow;\n\t\t\t\tint newRow = rowAtPoint(e.getPoint());\n\t\t\t\tif (newRow != mouseRow) {\n\t\t\t\t\tmouseRow = newRow;\n\t\t\t\t\tupdate = true;\n\t\t\t\t}\n\t\t\t\tint oldColumn = mouseColumn;\n\t\t\t\tint newColumn = columnAtPoint(e.getPoint());\n\t\t\t\tif (newColumn != mouseColumn) {\n\t\t\t\t\tmouseColumn = newColumn;\n\t\t\t\t\tupdate = true;\n\t\t\t\t}\n\t\t\t\tif (update) {\n\t\t\t\t\tRectangle oldCell = getCellRect(oldRow, oldColumn, true);\n\t\t\t\t\tRectangle newCell = getCellRect(newRow, newColumn, true);\n\t\t\t\t\trepaint(oldCell);\n\t\t\t\t\trepaint(newCell);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tjForeground = new MyComboBox();\n\t\tjBackground = new MyComboBox();\n\n\t\tjNotEditable = new JNullableLabel();\n\t\tjNotEditable.setBackground(null);\n\n\t\tjPreview = new JLabel(DialoguesSettings.get().testText());\n\t\tjPreview.setOpaque(true);\n\t\tjPreview.setHorizontalAlignment(JLabel.CENTER);\n\n\t\tjSelected = new JLabel(DialoguesSettings.get().testSelectedText());\n\t\tjSelected.setOpaque(true);\n\t\tjSelected.setHorizontalAlignment(JLabel.CENTER);\n\t}\n\n\tpublic void startEditCell(int editRow, int editColumn) {\n\t\tthis.editRow = editRow;\n\t\tthis.editColumn = editColumn;\n\t}\n\n\tpublic void stopEditCell() {\n\t\t//Repaint\n\t\tRectangle oldCell = getCellRect(editRow, editColumn, true);\n\t\trepaint(oldCell);\n\t\t//Reset\n\t\teditRow = -1;\n\t\teditColumn = -1;\n\t}\n\n\t@Override\n\tpublic Component prepareRenderer(final TableCellRenderer renderer, final int row, final int column) {\n\t\tComponent component = super.prepareRenderer(renderer, row, column);\n\t\t//boolean isSelected = isCellSelected(row, column);\n\t\tObject object = tableModel.getElementAt(row);\n\t\tif (!(object instanceof ColorRow)) {\n\t\t\treturn component;\n\t\t}\n\t\tColorRow colorRow = (ColorRow) object;\n\t\tString columnName = (String) this.getTableHeader().getColumnModel().getColumn(column).getHeaderValue();\n\n\t\tboolean mouseCell = row == mouseRow && column == mouseColumn;\n\t\tboolean editCell = row == editRow && column == editColumn;\n\t\tif (columnName.equals(ColorsTableFormat.BACKGROUND.getColumnName())) {\n\t\t\tif (colorRow.getColorEntry().isBackgroundEditable()) {\n\t\t\t\tjBackground.config(colorRow.getBackground(), colorRow.isBackgroundDefault(), mouseCell, editCell);\n\t\t\t\treturn jBackground.getjPanel();\n\t\t\t} else {\n\t\t\t\treturn jNotEditable;\n\t\t\t}\n\t\t}\n\t\tif (columnName.equals(ColorsTableFormat.FOREGROUND.getColumnName())) {\n\t\t\tif (colorRow.getColorEntry().isForegroundEditable()) {\n\t\t\t\tjForeground.config(colorRow.getForeground(), colorRow.isForegroundDefault(), mouseCell, editCell);\n\t\t\t\treturn jForeground.getjPanel();\n\t\t\t} else {\n\t\t\t\treturn jNotEditable;\n\t\t\t}\n\t\t}\n\t\tColor background = colorRow.getBackground();\n\t\tColor foreground = colorRow.getForeground();\n\t\tif (columnName.equals(ColorsTableFormat.PREVIEW.getColumnName())) {\n\t\t\tjPreview.setBackground(this.getBackground());\n\t\t\tjPreview.setForeground(this.getForeground());\n\t\t\tColorSettings.configCell(jPreview, foreground, background, false);\n\t\t\treturn jPreview;\n\t\t}\n\t\tif (columnName.equals(ColorsTableFormat.SELECTED.getColumnName())) {\n\t\t\tColorSettings.configCell(jSelected, foreground, background, true);\n\t\t\treturn jSelected;\n\t\t}\n\t\treturn component;\n\t}\n\n\tpublic static class ColorCellRenderer extends DefaultTableCellRenderer {\n\n\t\t@Override\n\t\tpublic void setValue(final Object value) {\n\t\t\tsetText(\"\");\n\t\t}\n\t}\n\n\tprivate static class IconTableCellRenderer implements TableCellRenderer {\n\n\t\tprivate final JTable jTable;\n\t\tprivate TableCellRenderer tableCellRenderer;\n\n\t\tpublic IconTableCellRenderer(JTable jTable) {\n\t\t\tthis.jTable = jTable;\n\t\t\tthis.tableCellRenderer = jTable.getTableHeader().getDefaultRenderer();\n\t\t\tif (tableCellRenderer.getClass().getName().contains(\"XPDefaultRenderer\")) {\n\t\t\t\tinstallWorkaround();\n\t\t\t}\n\t\t}\n\n\t\tprivate void installWorkaround() {\n\t\t\tjTable.getTableHeader().addPropertyChangeListener(\"UI\", new PropertyChangeListener() {\n\t\t\t\t@Override\n\t\t\t\tpublic void propertyChange(PropertyChangeEvent evt) {\n\t\t\t\t\t/**\n\t\t\t\t\t* Workaround for: https://github.com/GoldenGnu/jeveassets/issues/279 (JDK-6429812)\n\t\t\t\t\t* On TableHeader UI update:\n\t\t\t\t\t* Create decoupled DefaultTableCellHeaderRenderer to replace the now defunct wrapped renderer\n\t\t\t\t\t*/\n\t\t\t\t\tIconTableCellRenderer.this.tableCellRenderer = new JTableHeader() {\n\t\t\t\t\t\t@Override\n\t\t\t\t\t\tpublic TableCellRenderer createDefaultRenderer() {\n\t\t\t\t\t\t\treturn super.createDefaultRenderer();\n\t\t\t\t\t\t}\n\t\t\t\t\t}.createDefaultRenderer();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t@Override\n\t\tpublic Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {\n\t\t\tComponent component = tableCellRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);\n\t\t\tString columnName = (String) jTable.getTableHeader().getColumnModel().getColumn(column).getHeaderValue();\n\t\t\tif (component instanceof JLabel) {\n\t\t\t\tJLabel jLabel = (JLabel) component;\n\t\t\t\tif (columnName.equals(ColorsTableFormat.NAME.getColumnName())) {\n\t\t\t\t\tjLabel.setHorizontalAlignment(JLabel.LEFT);\n\t\t\t\t}\n\t\t\t\tif (columnName.equals(ColorsTableFormat.BACKGROUND.getColumnName())) {\n\t\t\t\t\tjLabel.setText(\"\");\n\t\t\t\t\tjLabel.setIcon(Images.SETTINGS_COLOR_BACKGROUND.getIcon());\n\t\t\t\t\tjLabel.setHorizontalAlignment(JLabel.CENTER);\n\t\t\t\t}\n\t\t\t\tif (columnName.equals(ColorsTableFormat.FOREGROUND.getColumnName())) {\n\t\t\t\t\tjLabel.setText(\"\");\n\t\t\t\t\tjLabel.setIcon(Images.SETTINGS_COLOR_FOREGROUND.getIcon());\n\t\t\t\t\tjLabel.setHorizontalAlignment(JLabel.CENTER);\n\t\t\t\t}\n\t\t\t\tif (columnName.equals(ColorsTableFormat.PREVIEW.getColumnName())) {\n\t\t\t\t\tjLabel.setText(\"\");\n\t\t\t\t\tjLabel.setIcon(Images.EDIT_SHOW.getIcon());\n\t\t\t\t\tjLabel.setHorizontalAlignment(JLabel.CENTER);\n\t\t\t\t}\n\t\t\t\tif (columnName.equals(ColorsTableFormat.SELECTED.getColumnName())) {\n\t\t\t\t\tjLabel.setText(\"\");\n\t\t\t\t\tjLabel.setIcon(Images.EDIT_SHOW.getIcon());\n\t\t\t\t\tjLabel.setHorizontalAlignment(JLabel.CENTER);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn component;\n\t\t}\n\t}\n\n\tprivate class MyComboBox {\n\n\t\tprivate final static double FACTOR = 0.9;\n\n\t\tprivate final JPanel jPanel;\n\t\tprivate final JNullableLabel jDefault;\n\t\tprivate final JLabel jPickerIcon;\n\n\t\tpublic MyComboBox() {\n\n\t\t\tjPanel = new JPanel();\n\n\t\t\tGroupLayout layout = new GroupLayout(jPanel);\n\t\t\tjPanel.setLayout(layout);\n\t\t\tlayout.setAutoCreateGaps(false);\n\t\t\tlayout.setAutoCreateContainerGaps(false);\n\n\t\t\tjDefault = new JNullableLabel();\n\t\t\tjDefault.setHorizontalAlignment(JLabel.CENTER);\n\t\t\tjDefault.setVerticalAlignment(JLabel.CENTER);\n\t\t\tjDefault.setOpaque(true);\n\n\t\t\tjPickerIcon = new JLabel(Images.SETTINGS_COLOR_PICKER.getIcon());\n\t\t\tjPickerIcon.setHorizontalTextPosition(JLabel.CENTER);\n\t\t\tjPickerIcon.setHorizontalAlignment(JLabel.CENTER);\n\t\t\tjPickerIcon.setVerticalAlignment(JLabel.CENTER);\n\t\t\tjPickerIcon.setOpaque(true);\n\n\t\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jDefault, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t\t.addComponent(jPickerIcon, 16, 16, 16)\n\t\t\t);\n\t\t\tlayout.setVerticalGroup(\n\t\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t\t.addComponent(jDefault, 0, 0, Integer.MAX_VALUE)\n\t\t\t\t\t.addComponent(jPickerIcon, 0, 0, Integer.MAX_VALUE)\n\t\t\t);\n\t\t}\n\n\t\tpublic JComponent getjPanel() {\n\t\t\treturn jPanel;\n\t\t}\n\n\t\tpublic void config(Color color, boolean isDefault, boolean mouseCell, boolean editCell) {\n\t\t\tjDefault.setBackground(color);\n\t\t\tif (color == null) {\n\t\t\t\tcolor = Colors.TABLE_SELECTION_FOREGROUND.getColor();\n\t\t\t}\n\t\t\tboolean isBrightColor = ColorUtil.isBrightColor(color);\n\t\t\tif (editCell) {\n\t\t\t\tjPanel.setBorder(BorderFactory.createLineBorder(getSelectionBackground().darker(), 1));\n\t\t\t\tjDefault.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, ColorUtil.brighter(getSelectionBackground().darker(), FACTOR)));\n\t\t\t} else if (mouseCell) {\n\t\t\t\tjPanel.setBorder(BorderFactory.createLineBorder(getSelectionBackground(), 1));\n\t\t\t\tjDefault.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, ColorUtil.brighter(getSelectionBackground(), FACTOR)));\n\t\t\t} else {\n\t\t\t\tjPanel.setBorder(BorderFactory.createLineBorder(jPickerIcon.getBackground(), 1));\n\t\t\t\tif (isBrightColor) {\n\t\t\t\t\tjDefault.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, color.darker()));\n\t\t\t\t} else {\n\t\t\t\t\tjDefault.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, ColorUtil.brighter(color, FACTOR)));\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isDefault) {\n\t\t\t\tjDefault.setIcon(null);\n\t\t\t} else {\n\t\t\t\tif (isBrightColor) {\n\t\t\t\t\tjDefault.setIcon(Images.SETTINGS_COLOR_CHECK_BLACK_ALPHA.getIcon());\n\t\t\t\t} else {\n\t\t\t\t\tjDefault.setIcon(Images.SETTINGS_COLOR_CHECK_WHITE_ALPHA.getIcon());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static class JNullableLabel extends JLabel {\n\n\t\tboolean paintBackground = false;\n\n\t\t@Override\n\t\tpublic void setBackground(Color bg) {\n\t\t\tsuper.setBackground(bg);\n\t\t\tif (bg == null) {\n\t\t\t\tpaintBackground = true;\n\t\t\t\tthis.setOpaque(false);\n\t\t\t} else {\n\t\t\t\tpaintBackground = false;\n\t\t\t\tthis.setOpaque(true);\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void paintComponent(Graphics g) {\n\t\t\tGraphics2D g2d = (Graphics2D) g;\n\t\t\tif (paintBackground) {\n\t\t\t\tboolean firstDark = true;\n\t\t\t\tboolean dark;\n\t\t\t\tfor (int y = 0; y < getSize().getHeight() + 4; y = y + 4) {\n\t\t\t\t\tif (firstDark) {\n\t\t\t\t\t\tfirstDark = false;\n\t\t\t\t\t\tdark = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfirstDark = true;\n\t\t\t\t\t\tdark = false;\n\t\t\t\t\t}\n\t\t\t\t\tfor (int x = 0; x < getSize().getWidth() + 4; x = x + 4) {\n\t\t\t\t\t\tif (dark) {\n\t\t\t\t\t\t\tg2d.setColor(Color.GRAY);\n\t\t\t\t\t\t\tdark = false;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tg2d.setColor(Color.LIGHT_GRAY);\n\t\t\t\t\t\t\tdark = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tg2d.fillRect(x, y, 4, 4);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tsuper.paintComponent(g);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/JSettingsPanel.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\n\nimport java.awt.Window;\nimport javax.swing.GroupLayout;\nimport javax.swing.Icon;\nimport javax.swing.JPanel;\nimport javax.swing.tree.DefaultMutableTreeNode;\nimport net.nikr.eve.jeveasset.Program;\n\n\npublic abstract class JSettingsPanel {\n\n\tpublic static enum UpdateType {\n\t\tNONE,\n\t\tFULL_UPDATE,\n\t\tUPDATE_OVERVIEW,\n\t\tUPDATE_TAGS,\n\t\tUPDATE_ASSET_TABLES,\n\t\tFULL_REPAINT,\n\t\tREPAINT_MARKET_ORDERS_TABLE,\n\t\tREPAINT_STOCKPILE_TABLE,\n\t}\n\n\tprotected Program program;\n\tprotected String title;\n\tprotected JPanel jPanel;\n\tprotected GroupLayout layout;\n\tprotected Window parent;\n\tprotected DefaultMutableTreeNode treeNode;\n\tprivate final Icon icon;\n\n\tpublic JSettingsPanel(final Program program, final SettingsDialog settingsDialog, final String title, final Icon icon) {\n\t\tthis.program = program;\n\t\tthis.title = title;\n\t\tthis.parent = settingsDialog.getDialog();\n\t\tthis.icon = icon;\n\n\t\tjPanel = new JPanel();\n\n\t\tlayout = new GroupLayout(jPanel);\n\t\tjPanel.setLayout(layout);\n\t\tlayout.setAutoCreateGaps(true);\n\t\tlayout.setAutoCreateContainerGaps(true);\n\t}\n\n\tpublic abstract UpdateType save();\n\tpublic abstract void load();\n\n\tpublic JPanel getPanel() {\n\t\treturn jPanel;\n\t}\n\n\tpublic String getTitle() {\n\t\treturn title;\n\t}\n\n\tpublic DefaultMutableTreeNode getTreeNode() {\n\t\treturn treeNode;\n\t}\n\n\tpublic void setTreeNode(DefaultMutableTreeNode treeNode) {\n\t\tthis.treeNode = treeNode;\n\t}\n\n\tpublic Icon getIcon() {\n\t\treturn icon;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/JUserListPanel.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\n\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.util.*;\nimport java.util.Map.Entry;\nimport javax.swing.*;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.UserItem;\nimport net.nikr.eve.jeveasset.gui.shared.JOptionInput;\nimport net.nikr.eve.jeveasset.gui.shared.components.JLabelMultiline;\nimport net.nikr.eve.jeveasset.gui.shared.components.ListComboBoxModel;\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\n\n\npublic abstract class JUserListPanel<K, V extends Comparable<V>> extends JSettingsPanel {\n\n\tprivate enum UserListAction {\n\t\tDELETE, EDIT\n\t}\n\n\tprivate final JComboBox<UserItem<K, V>> jItems;\n\tprivate final JButton jEdit;\n\tprivate final JButton jDelete;\n\n\tprivate Map<K, UserItem<K, V>> items;\n\tprivate List<UserItem<K, V>> listItems;\n\tprivate final String type;\n\n\tpublic JUserListPanel(final Program program, final SettingsDialog optionsDialog, final Icon icon, final String title, final String type, final String help) {\n\t\tsuper(program, optionsDialog, title, icon);\n\t\tthis.type = type;\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tjItems = new JComboBox<>();\n\n\t\tjEdit = new JButton(DialoguesSettings.get().editItem());\n\t\tjEdit.setActionCommand(UserListAction.EDIT.name());\n\t\tjEdit.addActionListener(listener);\n\n\t\tjDelete = new JButton(DialoguesSettings.get().deleteItem());\n\t\tjDelete.setActionCommand(UserListAction.DELETE.name());\n\t\tjDelete.addActionListener(listener);\n\n\t\tJLabelMultiline jHelp = new JLabelMultiline(help);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t.addComponent(jItems)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jEdit, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addComponent(jDelete, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t)\n\t\t\t\t.addComponent(jHelp, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jItems, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jEdit, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jDelete, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addComponent(jHelp, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t);\n\t}\n\n\tprotected abstract Map<K, UserItem<K, V>> getItems();\n\tprotected abstract void setItems(Map<K, UserItem<K, V>> items);\n\tprotected abstract V valueOf(String value);\n\tprotected abstract UserItem<K, V> newUserItem(UserItem<K, V> userItem);\n\tprotected abstract void updateEventList(List<K> keys);\n\n\tprivate void setEnabledAll(final boolean b) {\n\t\tjItems.setEnabled(b);\n\t\tjEdit.setEnabled(b);\n\t\tjDelete.setEnabled(b);\n\t}\n\n\t//Work on live data AKA getItems() - no need to re-cache (never cancel) or update GUI (never shown)\n\tpublic boolean contains(final List<UserItem<K, V>> userItems) {\n\t\tfor (UserItem<K, V> userItem : userItems) {\n\t\t\tif (getItems().containsKey(userItem.getKey())) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\t//Work on live data AKA getItems() - no need to re-cache (never cancel) or update GUI (never shown)\n\tpublic boolean containsKey(final Set<K> key) {\n\t\tfor (K k : key) {\n\t\t\tif (getItems().containsKey(k)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic void edit(final UserItem<K, V> userItem) {\n\t\tedit(Collections.singletonList(userItem), true, null);\n\t}\n\n\tpublic boolean edit(final List<UserItem<K, V>> userItems) {\n\t\treturn edit(userItems, true, null);\n\t}\n\n\tprivate boolean edit(final UserItem<K, V> userItem, final boolean save) {\n\t\treturn edit(Collections.singletonList(userItem), save, null);\n\t}\n\n\tprivate boolean edit(final List<UserItem<K, V>> userItems, final boolean save, final String oldValue) {\n\t\tif (save) {\n\t\t\tload();\n\t\t}\n\t\tString name;\n\t\tString formattedValue = oldValue;\n\t\tif (userItems.size() == 1) {\n\t\t\tname = userItems.get(0).getName();\n\t\t\tif (oldValue == null) {\n\t\t\t\tformattedValue = userItems.get(0).getValueFormatted();\n\t\t\t}\n\t\t} else {\n\t\t\tname = DialoguesSettings.get().items(userItems.size());\n\t\t}\n\t\tif (formattedValue == null) {\n\t\t\tformattedValue = \"0\";\n\t\t}\n\t\tString value = (String) JOptionInput.showInputDialog(program.getMainWindow().getFrame(), name, DialoguesSettings.get().editTypeTitle(type), JOptionPane.PLAIN_MESSAGE, null, null, formattedValue);\n\t\tif (value == null) {\n\t\t\treturn false; //Cancel\n\t\t}\n\t\tV v = valueOf(value);\n\t\tif (v != null) { //Update value\n\t\t\tList<K> containedKeys = new ArrayList<>();\n\t\t\tfor (UserItem<K, V> userItem : userItems) {\n\t\t\t\tUserItem<K, V> userItemExisting = items.get(userItem.getKey());\n\t\t\t\tif (userItemExisting == null) { //Add new\n\t\t\t\t\tuserItemExisting = userItem;\n\t\t\t\t\titems.put(userItem.getKey(), userItem);\n\t\t\t\t}\n\t\t\t\tcontainedKeys.add(userItem.getKey());\n\t\t\t\t//Update Value\n\t\t\t\tuserItemExisting.setValue(v);\n\t\t\t}\n\t\t\t//Update GUI\n\t\t\tupdateGUI();\n\t\t\tif (save) { //Save (if not in settings dialog)\n\t\t\t\tSettings.lock(\"Custom Price/Name (Edit)\"); //Lock for Custom Price/Name (Edit)\n\t\t\t\tUpdateType updateType = save();\n\t\t\t\tSettings.unlock(\"Custom Price/Name (Edit)\"); //Unlock for Custom Price/Name (Edit)\n\t\t\t\tif (updateType == UpdateType.FULL_UPDATE) {\n\t\t\t\t\t//FIXME - - - > Price/Name: Update Price/Name (no need to update all date - just need to update the data in tags column)\n\t\t\t\t\tupdateEventList(containedKeys);\n\t\t\t\t}\n\t\t\t\tprogram.saveSettings(\"Custom Price/Name (Edit)\"); //Save Custom Price/Name (Edit)\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), DialoguesSettings.get().inputNotValid(), DialoguesSettings.get().badInput(), JOptionPane.PLAIN_MESSAGE);\n\t\t\treturn edit(userItems, save, value);\n\t\t}\n\t}\n\n\tpublic void delete(final List<UserItem<K, V>> userItems) {\n\t\tdelete(userItems, true);\n\t}\n\n\tprivate void delete(final UserItem<K, V> userItem, final boolean save) {\n\t\tdelete(Collections.singletonList(userItem), save);\n\t}\n\n\tprivate void delete(final List<UserItem<K, V>> userItems, final boolean save) {\n\t\tif (save) {\n\t\t\tload();\n\t\t}\n\t\tint count = 0;\n\t\tString name = \"\"; //Never used\n\t\tList<K> containedKeys = new ArrayList<>();\n\t\tfor (UserItem<K, V> userItem : userItems) {\n\t\t\tif (items.containsKey(userItem.getKey())) {\n\t\t\t\tcount++;\n\t\t\t\tname = userItem.getName();\n\t\t\t\tcontainedKeys.add(userItem.getKey());\n\t\t\t}\n\t\t}\n\t\tif (count > 1) {\n\t\t\tname = DialoguesSettings.get().items(count);\n\t\t}\n\t\tif (name.isEmpty()) { //this should never happen!\n\t\t\treturn;\n\t\t}\n\t\tint value = JOptionPane.showConfirmDialog(program.getMainWindow().getFrame(), name, DialoguesSettings.get().deleteTypeTitle(type), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);\n\t\tif (value == JOptionPane.OK_OPTION) {\n\t\t\titems.keySet().removeAll(containedKeys);\n\t\t\tupdateGUI();\n\t\t\tif (save) { //Save (if not in settings dialog)\n\t\t\t\tSettings.lock(\"Custom Price/Name (Delete)\"); //Lock for Custom Price/Name (Delete)\n\t\t\t\tUpdateType updateType = save();\n\t\t\t\tSettings.unlock(\"Custom Price/Name (Delete)\"); //Unlock for Custom Price/Name (Delete)\n\t\t\t\tif (updateType == UpdateType.FULL_UPDATE) {\n\t\t\t\t\tupdateEventList(containedKeys);\n\t\t\t\t}\n\t\t\t\tprogram.saveSettings(\"Custom Price/Name (Delete)\"); //Save Custom Price/Name (Delete)\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void updateGUI() {\n\t\tif (items.isEmpty()) {\n\t\t\tsetEnabledAll(false);\n\t\t\tjItems.setModel(new ListComboBoxModel<>());\n\t\t\tjItems.getModel().setSelectedItem(DialoguesSettings.get().itemEmpty());\n\t\t\tlistItems = new ArrayList<>(); //Clear list\n\t\t} else {\n\t\t\tsetEnabledAll(true);\n\t\t\tlistItems = new ArrayList<>(new TreeSet<>(items.values()));\n\t\t\tjItems.setModel(new ListComboBoxModel<>(listItems));\n\t\t}\n\t}\n\n\t@Override\n\tpublic UpdateType save() {\n\t\tboolean update = !getItems().equals(items);\n\t\t//Update Settings\n\t\tsetItems(items);\n\t\t//Update this\n\t\tint selected = jItems.getSelectedIndex();\n\t\tif (update) {\n\t\t\tload();\n\t\t}\n\t\tif (selected >= 0) {\n\t\t\tjItems.setSelectedIndex(selected);\n\t\t}\n\t\t//Update table if needed\n\t\treturn update ? UpdateType.FULL_UPDATE : UpdateType.NONE;\n\t}\n\n\t@Override\n\tpublic void load() {\n\t\titems = new HashMap<>();\n\t\tfor (Entry<K, UserItem<K, V>> entry : getItems().entrySet()) {\n\t\t\tUserItem<K, V> userItem = newUserItem(entry.getValue());\n\t\t\titems.put(entry.getKey(), userItem);\n\t\t}\n\t\tupdateGUI();\n\t}\n\n\tprivate class ListenerClass implements ActionListener {\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (UserListAction.DELETE.name().equals(e.getActionCommand())) {\n\t\t\t\tint index = jItems.getSelectedIndex();\n\t\t\t\tif (index >= 0) {\n\t\t\t\t\tdelete(listItems.get(index), false);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (UserListAction.EDIT.name().equals(e.getActionCommand())) {\n\t\t\t\tint index = jItems.getSelectedIndex();\n\t\t\t\tif (index >= 0) {\n\t\t\t\t\tedit(listItems.get(index), false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/JournalToolSettingsPanel.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\r\n\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JCheckBox;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JLabelMultiline;\r\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\r\n\r\n\r\npublic class JournalToolSettingsPanel extends JSettingsPanel {\r\n\r\n\tprivate final JCheckBox jSaveHistory;\r\n\r\n\tpublic JournalToolSettingsPanel(final Program program, final SettingsDialog settingsDialog) {\r\n\t\tsuper(program, settingsDialog, DialoguesSettings.get().journal(), Images.TOOL_JOURNAL.getIcon());\r\n\r\n\t\tjSaveHistory = new JCheckBox(DialoguesSettings.get().journalSaveHistory());\r\n\r\n\t\tJLabelMultiline jSaveHistoryWarning = new JLabelMultiline(DialoguesSettings.get().saveHistoryWarning(), 2);\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t.addComponent(jSaveHistory)\r\n\t\t\t\t.addComponent(jSaveHistoryWarning, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(jSaveHistory, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jSaveHistoryWarning, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\r\n\t\t);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic UpdateType save() {\r\n\t\tSettings.get().setJournalHistory(jSaveHistory.isSelected());\r\n\t\treturn UpdateType.NONE;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void load() {\r\n\t\tjSaveHistory.setSelected(Settings.get().isJournalHistory());\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/JumpsSettingsPanel.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\n\nimport javax.swing.BorderFactory;\nimport javax.swing.GroupLayout;\nimport javax.swing.JComboBox;\nimport javax.swing.JLabel;\nimport javax.swing.JPanel;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.sde.RouteFinder.RouteFinderFilter;\nimport net.nikr.eve.jeveasset.data.settings.RouteAvoidSettings;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuUI.EveGatecampCheck;\nimport net.nikr.eve.jeveasset.gui.tabs.routing.JAvoid;\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\n\n\npublic class JumpsSettingsPanel extends JSettingsPanel {\n\n\tprivate final JAvoid jAvoid;\n\tprivate final JComboBox<String> jOpenOptions;\n\tprivate final JComboBox<String> jRouteOptions;\n\tprivate final RouteAvoidSettings avoidSettings = new RouteAvoidSettings();\n\n\tpublic JumpsSettingsPanel(final Program program, final SettingsDialog settingsDialog) {\n\t\tsuper(program, settingsDialog, DialoguesSettings.get().jumps(), Images.TOOL_ROUTING.getIcon());\n\t\tjAvoid = new JAvoid(program, avoidSettings, false, null);\n\t\tjAvoid.updateSystemDialog(RouteFinderFilter.JUMPS.getGraph().getNodes());\n\n\t\tJPanel jEveGatecampCheck = new JPanel();\n\t\tjEveGatecampCheck.setBorder(BorderFactory.createTitledBorder(DialoguesSettings.get().eveGatecampCheck()));\n\t\tGroupLayout eveGatecampCheckLayout = new GroupLayout(jEveGatecampCheck);\n\t\tjEveGatecampCheck.setLayout(eveGatecampCheckLayout);\n\t\teveGatecampCheckLayout.setAutoCreateGaps(true);\n\t\teveGatecampCheckLayout.setAutoCreateContainerGaps(true);\n\n\t\tJLabel jOpenOptionsLabel = new JLabel(DialoguesSettings.get().eveGatecampCheckOpenOptions());\n\t\tjOpenOptions = new JComboBox<>(EveGatecampCheck.EVE_GATECAMP_CHECK_OPEN_OPTIONS);\n\n\t\tJLabel jRouteOptionsLabel = new JLabel(DialoguesSettings.get().eveGatecampCheckRouteOptions());\n\t\tjRouteOptions = new JComboBox<>(EveGatecampCheck.EVE_GATECAMP_CHECK_ROUTE_OPTIONS);\n\n\t\teveGatecampCheckLayout.setHorizontalGroup(\n\t\t\teveGatecampCheckLayout.createSequentialGroup()\n\t\t\t\t.addComponent(jOpenOptionsLabel)\n\t\t\t\t.addComponent(jOpenOptions)\n\t\t\t\t.addComponent(jRouteOptionsLabel)\n\t\t\t\t.addComponent(jRouteOptions)\n\t\t);\n\t\teveGatecampCheckLayout.setVerticalGroup(\n\t\t\teveGatecampCheckLayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t.addComponent(jOpenOptionsLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jOpenOptions, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jRouteOptionsLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jRouteOptions, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t.addComponent(jAvoid.getSecurityPanel())\n\t\t\t\t.addComponent(jAvoid.getAvoidPanel())\n\t\t\t\t.addComponent(jAvoid.getAvoidPanel())\n\t\t\t\t.addComponent(jEveGatecampCheck)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jAvoid.getSecurityPanel())\n\t\t\t\t.addComponent(jAvoid.getAvoidPanel())\n\t\t\t\t.addComponent(jEveGatecampCheck)\n\t\t);\n\t}\n\n\t@Override\n\tpublic UpdateType save() {\n\t\tRouteAvoidSettings current = Settings.get().getJumpsAvoidSettings();\n\t\tif (!current.equals(avoidSettings)) {\n\t\t\tcurrent.update(avoidSettings);\n\t\t\tRouteFinderFilter.JUMPS.update();\n\t\t\tjAvoid.updateSystemDialog(RouteFinderFilter.JUMPS.getGraph().getNodes());\n\t\t\treturn UpdateType.FULL_UPDATE;\n\t\t}\n\t\tEveGatecampCheck.setOpenOption(jOpenOptions.getSelectedItem());\n\t\tEveGatecampCheck.setRouteOption(jRouteOptions.getSelectedItem());\n\t\treturn UpdateType.NONE;\n\t}\n\n\t@Override\n\tpublic void load() {\n\t\tjAvoid.setData(Settings.get().getJumpsAvoidSettings());\n\t\tjOpenOptions.setSelectedItem(EveGatecampCheck.getOpenOption());\n\t\tjRouteOptions.setSelectedItem(EveGatecampCheck.getRouteOption());\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/LookAndFeelPreview.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\r\n\r\nimport java.awt.Color;\r\nimport java.awt.Component;\r\nimport java.awt.Graphics;\r\nimport java.awt.Graphics2D;\r\nimport java.awt.Point;\r\nimport java.awt.event.MouseEvent;\r\nimport java.awt.event.MouseListener;\r\nimport java.awt.event.WindowEvent;\r\nimport java.awt.event.WindowListener;\r\nimport java.awt.image.BufferedImage;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JCheckBox;\r\nimport javax.swing.JComboBox;\r\nimport javax.swing.JComponent;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JPanel;\r\nimport javax.swing.JRadioButton;\r\nimport javax.swing.JTextField;\r\nimport javax.swing.LookAndFeel;\r\nimport javax.swing.SwingUtilities;\r\nimport javax.swing.UIManager;\r\nimport javax.swing.UnsupportedLookAndFeelException;\r\nimport javax.swing.event.PopupMenuEvent;\r\nimport javax.swing.event.PopupMenuListener;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JDropDownButton;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class LookAndFeelPreview {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(LookAndFeelPreview.class);\r\n\r\n\tpublic static void install(String lookAndFeelClass, JDropDownButton jDropDownButton, JComponent jComponent, SettingsDialog settingsDialog) {\r\n\t\tLookAndFeelPreviewListener listener = new LookAndFeelPreviewListener(lookAndFeelClass, jDropDownButton, jComponent, settingsDialog);\r\n\t}\r\n\r\n\tprivate LookAndFeelPreview() { }\r\n\r\n\tprivate static class LookAndFeelPreviewListener implements PopupMenuListener, MouseListener, WindowListener {\r\n\t\tprivate static PreviewMock previewWindowMock;\r\n\t\tprivate final String lookAndFeelClass;\r\n\t\tprivate final JComponent jComponent;\r\n\t\tprivate final SettingsDialog settingsDialog;\r\n\t\tprivate BufferedImage bufferedImage;\r\n\r\n\t\tpublic LookAndFeelPreviewListener(String lookAndFeelClass, JDropDownButton jDropDownButton, JComponent jComponent, SettingsDialog settingsDialog) {\r\n\t\t\tthis.lookAndFeelClass = lookAndFeelClass;\r\n\t\t\tthis.jComponent = jComponent;\r\n\t\t\tthis.settingsDialog = settingsDialog;\r\n\t\t\tjComponent.addMouseListener(this);\r\n\t\t\tjDropDownButton.getPopupMenu().addPopupMenuListener(this);\r\n\t\t\tsettingsDialog.getDialog().addWindowListener(this);\r\n\t\t\tif (previewWindowMock == null) {\r\n\t\t\t\tpreviewWindowMock = new PreviewMock();\r\n\t\t\t\tsettingsDialog.getDialog().setGlassPane(previewWindowMock);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void mouseEntered(MouseEvent e) {\r\n\t\t\tshow();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void mouseExited(MouseEvent e) {\r\n\t\t\thide();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void mouseClicked(MouseEvent e) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void mousePressed(MouseEvent e) {}\r\n\r\n\t\t@Override\r\n\t\tpublic void mouseReleased(MouseEvent e) {}\r\n\r\n\t\t@Override\r\n\t\tpublic void popupMenuWillBecomeVisible(PopupMenuEvent e) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void popupMenuWillBecomeInvisible(PopupMenuEvent e) {\r\n\t\t\thide();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void popupMenuCanceled(PopupMenuEvent e) {\r\n\t\t\thide();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void windowOpened(WindowEvent e) {\r\n\t\t\tif (bufferedImage == null) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tLookAndFeel currentLAF = UIManager.getLookAndFeel();\r\n\t\t\t\t\tUIManager.setLookAndFeel(lookAndFeelClass);\r\n\t\t\t\t\tPreviewComponent previewComponent = new PreviewComponent();\r\n\t\t\t\t\tSwingUtilities.updateComponentTreeUI(previewComponent.getOuter());\r\n\t\t\t\t\tsettingsDialog.addCard(previewComponent.getOuter(), lookAndFeelClass);\r\n\t\t\t\t\tsettingsDialog.getDialog().revalidate();\r\n\t\t\t\t\tbufferedImage = createImage(previewComponent.getInner());\r\n\t\t\t\t\tsettingsDialog.removeCard(previewComponent.getOuter());\r\n\t\t\t\t\tUIManager.setLookAndFeel(currentLAF);\r\n\t\t\t\t\tSwingUtilities.updateComponentTreeUI(previewComponent.getOuter());\r\n\t\t\t\t} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {\r\n\t\t\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void windowClosing(WindowEvent e) {}\r\n\r\n\t\t@Override\r\n\t\tpublic void windowClosed(WindowEvent e) {}\r\n\r\n\t\t@Override\r\n\t\tpublic void windowIconified(WindowEvent e) {}\r\n\r\n\t\t@Override\r\n\t\tpublic void windowDeiconified(WindowEvent e) {}\r\n\r\n\t\t@Override\r\n\t\tpublic void windowActivated(WindowEvent e) {}\r\n\r\n\t\t@Override\r\n\t\tpublic void windowDeactivated(WindowEvent e) {\t}\r\n\r\n\t\tprivate void show() {\r\n\t\t\tpreviewWindowMock.config(bufferedImage, jComponent);\r\n\t\t\tpreviewWindowMock.setVisible(true);\r\n\t\t}\r\n\r\n\t\tprivate void hide() {\r\n\t\t\tpreviewWindowMock.setVisible(false);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tpublic static BufferedImage createImage(Component comp) {\r\n\t\tint w = comp.getWidth();\r\n\t\tint h = comp.getHeight();\r\n\t\tBufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);\r\n\t\tGraphics2D g = bi.createGraphics();\r\n\t\tcomp.paint(g);\r\n\t\treturn bi;\r\n\t}\r\n\r\n\tprivate static class PreviewComponent {\r\n\r\n\t\tprivate static final int WIDTH = 100;\r\n\t\tprivate static final int SIZE = (WIDTH * 2) + 30;\r\n\t\tprivate final JPanel jInner;\r\n\t\tprivate final JPanel jOuter;\r\n\r\n\t\tprivate PreviewComponent() {\r\n\t\t\tjInner = new JPanel();\r\n\t\t\tGroupLayout innerLayout = new GroupLayout(jInner);\r\n\t\t\tjInner.setLayout(innerLayout);\r\n\t\t\tinnerLayout.setAutoCreateGaps(true);\r\n\t\t\tinnerLayout.setAutoCreateContainerGaps(true);\r\n\r\n\t\t\tString[] comboBoxValues = {\"ComboBox\"};\r\n\t\t\tJComboBox<String> jComboBox = new JComboBox<>(comboBoxValues);\r\n\r\n\t\t\tJTextField jTextField = new JTextField(\"TextField\");\r\n\r\n\t\t\tJButton jButton = new JButton(\"Button\");\r\n\r\n\t\t\tJLabel jLabel = new JLabel(\"Label\");\r\n\r\n\t\t\tJCheckBox jCheckBox = new JCheckBox(\"CheckBox\");\r\n\t\t\tjCheckBox.setSelected(true);\r\n\r\n\t\t\tJRadioButton jRadioButton = new JRadioButton(\"RadioButton\");\r\n\t\t\tjRadioButton.setSelected(true);\r\n\t\t\tint height = 22;\r\n\t\t\theight = Math.max(height, new JComboBox<>().getPreferredSize().height);\r\n\t\t\theight = Math.max(height, new JTextField().getPreferredSize().height);\r\n\t\t\theight = Math.max(height, new JButton().getPreferredSize().height);\r\n\r\n\t\t\tinnerLayout.setHorizontalGroup(\r\n\t\t\t\t\tinnerLayout.createSequentialGroup()\r\n\t\t\t\t\t\t.addGroup(innerLayout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t\t\t\t.addComponent(jTextField, WIDTH, WIDTH, WIDTH)\r\n\t\t\t\t\t\t\t.addComponent(jLabel, WIDTH, WIDTH, WIDTH)\r\n\t\t\t\t\t\t\t.addComponent(jCheckBox, WIDTH, WIDTH, WIDTH)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.addGroup(innerLayout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t\t\t\t.addComponent(jComboBox, WIDTH, WIDTH, WIDTH)\r\n\t\t\t\t\t\t\t.addComponent(jButton, WIDTH, WIDTH, WIDTH)\r\n\t\t\t\t\t\t\t.addComponent(jRadioButton, WIDTH, WIDTH, WIDTH)\r\n\t\t\t\t\t\t)\r\n\t\t\t);\r\n\t\t\tinnerLayout.setVerticalGroup(\r\n\t\t\t\t\tinnerLayout.createSequentialGroup()\r\n\t\t\t\t\t\t.addGroup(innerLayout.createParallelGroup(GroupLayout.Alignment.CENTER)\r\n\t\t\t\t\t\t\t.addComponent(jTextField, height, height, height)\r\n\t\t\t\t\t\t\t.addComponent(jComboBox, height, height, height)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.addGroup(innerLayout.createParallelGroup(GroupLayout.Alignment.CENTER)\r\n\t\t\t\t\t\t\t.addComponent(jLabel, height, height, height)\r\n\t\t\t\t\t\t\t.addComponent(jButton, height, height, height)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.addGroup(innerLayout.createParallelGroup(GroupLayout.Alignment.CENTER)\r\n\t\t\t\t\t\t\t.addComponent(jCheckBox, height, height, height)\r\n\t\t\t\t\t\t\t.addComponent(jRadioButton, height, height, height)\r\n\t\t\t\t\t\t)\r\n\t\t\t);\r\n\r\n\t\t\tjOuter = new JPanel();\r\n\t\t\tGroupLayout outerLayout = new GroupLayout(jOuter);\r\n\t\t\tjOuter.setLayout(outerLayout);\r\n\t\t\touterLayout.setAutoCreateGaps(false);\r\n\t\t\touterLayout.setAutoCreateContainerGaps(false);\r\n\r\n\t\t\touterLayout.setHorizontalGroup(\r\n\t\t\t\t\touterLayout.createSequentialGroup()\r\n\t\t\t\t\t\t.addComponent(jInner, SIZE, SIZE, SIZE)\r\n\t\t\t);\r\n\t\t\touterLayout.setVerticalGroup(\r\n\t\t\t\t\touterLayout.createSequentialGroup()\r\n\t\t\t\t\t\t.addComponent(jInner)\r\n\t\t\t\t\t\t.addGap(0, 0, Integer.MAX_VALUE)\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tpublic JPanel getInner() {\r\n\t\t\treturn jInner;\r\n\t\t}\r\n\r\n\t\tpublic JPanel getOuter() {\r\n\t\t\treturn jOuter;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tprivate static class PreviewMock extends JComponent {\r\n\r\n\t\tprivate static final int OFFSET = 2;\r\n\t\tprivate static final int BORDER = 2;\r\n\r\n\t\tprivate BufferedImage bufferedImage;\r\n\t\tprivate JComponent jComponent;\r\n\t\tprivate Point point;\r\n\r\n\t\tprivate PreviewMock() { }\r\n\r\n\t\tpublic void config(BufferedImage bufferedImage, JComponent jComponent) {\r\n\t\t\tthis.bufferedImage = bufferedImage;\r\n\t\t\tthis.jComponent = jComponent;\r\n\t\t\tpoint = SwingUtilities.convertPoint(jComponent, new Point(0, 0), this);\r\n\t\t}\r\n\r\n\t\tpublic BufferedImage getBufferedImage() {\r\n\t\t\treturn bufferedImage;\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic void paint(Graphics g) {\r\n\t\t\tif (bufferedImage != null) {\r\n\t\t\t\tGraphics2D graphics2D = (Graphics2D) g;\r\n\t\t\t\tgraphics2D.setColor(Color.BLACK);\r\n\t\t\t\tgraphics2D.fillRect(point.x + jComponent.getWidth() + OFFSET, point.y, bufferedImage.getWidth() + BORDER * 2, bufferedImage.getHeight() + BORDER * 2);\r\n\t\t\t\tgraphics2D.drawImage(bufferedImage, point.x + jComponent.getWidth() + OFFSET + BORDER, point.y + BORDER, null);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/ManufacturingSettingsPanel.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\r\n\r\nimport ca.odell.glazedlists.EventList;\r\nimport ca.odell.glazedlists.SortedList;\r\nimport ca.odell.glazedlists.TextFilterator;\r\nimport ca.odell.glazedlists.swing.AutoCompleteSupport;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport java.util.Objects;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JComboBox;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JSpinner;\r\nimport javax.swing.SpinnerNumberModel;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\r\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings;\r\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings.ManufacturingFacility;\r\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings.ManufacturingRigs;\r\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings.ManufacturingSecurity;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\nimport net.nikr.eve.jeveasset.gui.shared.InstantToolTip;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\r\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\n\r\n\r\npublic class ManufacturingSettingsPanel extends JSettingsPanel {\r\n\r\n\tprivate final JComboBox<SystemIndex> jSystems;\r\n\tprivate final JComboBox<Integer> jMe;\r\n\tprivate final JComboBox<ManufacturingFacility> jFacility;\r\n\tprivate final JComboBox<ManufacturingRigs> jRigs;\r\n\tprivate final JComboBox<ManufacturingSecurity> jSecurity;\r\n\tprivate final SpinnerNumberModel taxModel;\r\n\tprivate final JLabel jSystemWarning;\r\n\r\n\t//Data\r\n\tprivate final AutoCompleteSupport<SystemIndex> systemsAutoComplete;\r\n\tprivate final EventList<SystemIndex> systemsEventList;\r\n\r\n\tpublic ManufacturingSettingsPanel(final Program program, final SettingsDialog settingsDialog) {\r\n\t\tsuper(program, settingsDialog, DialoguesSettings.get().manufacturing(), Images.SETTINGS_MANUFACTURING.getIcon());\r\n\t\t\r\n\t\tsystemsEventList = EventListManager.create();\r\n\r\n\t\tSystemIndex system = null;\r\n\t\tList<SystemIndex> systems = new ArrayList<>();\r\n\t\tfor (MyLocation location : StaticData.get().getLocations()) {\r\n\t\t\tif (location.isSystem()) {\r\n\t\t\t\tSystemIndex systemIndex = new SystemIndex(location);\r\n\t\t\t\tsystems.add(systemIndex);\r\n\t\t\t\tif (system == null || system.toString().length() < systemIndex.toString().length()) {\r\n\t\t\t\t\tsystem = systemIndex;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tupdateSystemList(systems);\r\n\r\n\t\tsystemsEventList.getReadWriteLock().readLock().lock();\r\n\t\tSortedList<SystemIndex> systemsSortedList = new SortedList<>(systemsEventList);\r\n\t\tsystemsEventList.getReadWriteLock().readLock().unlock();\r\n\r\n\t\tJLabel jSystemsLabel = new JLabel(DialoguesSettings.get().manufacturingSystems());\r\n\t\tjSystems = new JComboBox<>();\r\n\t\tif (system != null) {\r\n\t\t\tjSystems.setPrototypeDisplayValue(system);\r\n\t\t}\r\n\t\tsystemsAutoComplete = AutoCompleteSupport.install(jSystems, EventModels.createSwingThreadProxyList(systemsSortedList), new SystemIndexFilterator());\r\n\t\tsystemsAutoComplete.setStrict(true);\r\n\r\n\t\tjSystemWarning = new JLabel(Images.UPDATE_DONE_ERROR.getIcon());\r\n\t\tjSystemWarning.setVisible(false);\r\n\t\tjSystemWarning.setToolTipText(DialoguesSettings.get().manufacturingSystemsWarning());\r\n\t\tInstantToolTip.install(jSystemWarning);\r\n\r\n\t\tJLabel jManufacturingMeLabel = new JLabel(DialoguesSettings.get().manufacturingME());\r\n\t\tInteger[] me = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};\r\n\t\tjMe = new JComboBox<>(me);\r\n\t\tjMe.setPrototypeDisplayValue(10);\r\n\t\tjMe.setMaximumRowCount(me.length);\r\n\r\n\t\tJLabel jFacilityLabel = new JLabel(DialoguesSettings.get().manufacturingFacility());\r\n\t\tjFacility = new JComboBox<>(ManufacturingFacility.values());\r\n\t\tjFacility.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tManufacturingFacility facility = jFacility.getItemAt(jFacility.getSelectedIndex());\r\n\t\t\t\tif (facility == ManufacturingFacility.STATION) {\r\n\t\t\t\t\tjRigs.setSelectedIndex(0);\r\n\t\t\t\t\tjRigs.setEnabled(false);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tjRigs.setEnabled(true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tJLabel jRigsLabel = new JLabel(DialoguesSettings.get().manufacturingRigs());\r\n\t\tjRigs = new JComboBox<>(ManufacturingRigs.values());\r\n\t\tjRigs.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tManufacturingRigs rigs = jRigs.getItemAt(jRigs.getSelectedIndex());\r\n\t\t\t\tif (rigs == ManufacturingRigs.NONE) {\r\n\t\t\t\t\tjSecurity.setSelectedIndex(0);\r\n\t\t\t\t\tjSecurity.setEnabled(false);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tjSecurity.setEnabled(true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tJLabel jSecurityLabel = new JLabel(DialoguesSettings.get().manufacturingSecurity());\r\n\t\tjSecurity = new JComboBox<>(ManufacturingSecurity.values());\r\n\r\n\t\ttaxModel = new SpinnerNumberModel(0.25, 0, 10, 0.01);\r\n\t\tJLabel jTaxLabel = new JLabel(DialoguesSettings.get().manufacturingTax());\r\n\t\tJSpinner jTax = new JSpinner(taxModel);\r\n\t\tJLabel jTaxPercentLabel = new JLabel(DialoguesSettings.get().manufacturingPercent());\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup()\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t.addComponent(jSystemsLabel)\r\n\t\t\t\t\t\t.addComponent(jManufacturingMeLabel)\r\n\t\t\t\t\t\t.addComponent(jFacilityLabel)\r\n\t\t\t\t\t\t.addComponent(jRigsLabel)\r\n\t\t\t\t\t\t.addComponent(jSecurityLabel)\r\n\t\t\t\t\t\t.addComponent(jTaxLabel)\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t.addComponent(jSystems, 200, 200, 200)\r\n\t\t\t\t\t\t.addComponent(jMe, 200, 200, 200)\r\n\t\t\t\t\t\t.addComponent(jFacility, 200, 200, 200)\r\n\t\t\t\t\t\t.addComponent(jRigs, 200, 200, 200)\r\n\t\t\t\t\t\t.addComponent(jSecurity, 200, 200, 200)\r\n\t\t\t\t\t\t.addComponent(jTax, 200, 200, 200)\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t.addComponent(jSystemWarning)\r\n\t\t\t\t\t\t.addComponent(jTaxPercentLabel)\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\r\n\t\t\t\t\t.addComponent(jSystemsLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jSystems, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jSystemWarning, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\r\n\t\t\t\t\t.addComponent(jManufacturingMeLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jMe, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\r\n\t\t\t\t\t.addComponent(jFacilityLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jFacility, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\r\n\t\t\t\t\t.addComponent(jRigsLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jRigs, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\r\n\t\t\t\t\t.addComponent(jSecurityLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jSecurity, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\r\n\t\t\t\t\t.addComponent(jTaxLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jTax, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jTaxPercentLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic UpdateType save() {\r\n\t\tSystemIndex systemIndex = jSystems.getItemAt(jSystems.getSelectedIndex());\r\n\t\tint materialEfficiency = jMe.getItemAt(jMe.getSelectedIndex());\r\n\t\tManufacturingFacility facility = jFacility.getItemAt(jFacility.getSelectedIndex());\r\n\t\tManufacturingRigs rigs = jRigs.getItemAt(jRigs.getSelectedIndex());\r\n\t\tManufacturingSecurity security = jSecurity.getItemAt(jSecurity.getSelectedIndex());\r\n\t\tdouble tax = taxModel.getNumber().doubleValue();\r\n\t\t//Eval if table need to be updated\r\n\t\tboolean update = !Objects.equals(systemIndex.getSystemID(), Settings.get().getManufacturingSettings().getSystemID())\r\n\t\t\t\t\t\t\t\t|| !Objects.equals(materialEfficiency, Settings.get().getManufacturingSettings().getMaterialEfficiency())\r\n\t\t\t\t\t\t\t\t|| !Objects.equals(facility, Settings.get().getManufacturingSettings().getFacility())\r\n\t\t\t\t\t\t\t\t|| !Objects.equals(rigs, Settings.get().getManufacturingSettings().getRigs())\r\n\t\t\t\t\t\t\t\t|| !Objects.equals(security, Settings.get().getManufacturingSettings().getSecurity())\r\n\t\t\t\t\t\t\t\t|| !Objects.equals(tax, Settings.get().getManufacturingSettings().getTax())\r\n\t\t\t\t\t\t\t\t;\r\n\t\tManufacturingSettings manufacturingSettings = Settings.get().getManufacturingSettings();\r\n\t\tmanufacturingSettings.setSystemID(systemIndex.getSystemID());\r\n\t\tmanufacturingSettings.setMaterialEfficiency(materialEfficiency);\r\n\t\tmanufacturingSettings.setFacility(facility);\r\n\t\tmanufacturingSettings.setRigs(rigs);\r\n\t\tmanufacturingSettings.setSecurity(security);\r\n\t\tmanufacturingSettings.setTax(tax);\r\n\t\t//Update table if needed\r\n\t\treturn update ? UpdateType.FULL_UPDATE : UpdateType.NONE;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void load() {\r\n\t\tManufacturingSettings manufacturingSettings = Settings.get().getManufacturingSettings();\r\n\t\tList<SystemIndex> systems = EventListManager.safeList(systemsEventList);\r\n\t\tupdateSystemList(systems);\r\n\t\tint systemID = manufacturingSettings.getSystemID();\r\n\t\tMyLocation system = ApiIdConverter.getLocation(systemID);\r\n\t\tif (!system.isEmpty()) {\r\n\t\t\tjSystems.setSelectedItem(new SystemIndex(system));\r\n\t\t}\r\n\t\tjSystemWarning.setVisible(manufacturingSettings.isSystemsNeedsUpdating());\r\n\t\tjMe.setSelectedItem(manufacturingSettings.getMaterialEfficiency());\r\n\t\tjFacility.setSelectedItem(manufacturingSettings.getFacility());\r\n\t\tjRigs.setSelectedItem(manufacturingSettings.getRigs());\r\n\t\tjSecurity.setSelectedItem(manufacturingSettings.getSecurity());\r\n\t\ttaxModel.setValue(manufacturingSettings.getTax());\r\n\t}\r\n\r\n\tprivate void updateSystemList(List<SystemIndex> systems) {\r\n\t\ttry {\r\n\t\t\tsystemsEventList.getReadWriteLock().writeLock().lock();\r\n\t\t\tsystemsEventList.clear();\r\n\t\t\tsystemsEventList.addAll(systems);\r\n\t\t} finally {\r\n\t\t\tsystemsEventList.getReadWriteLock().writeLock().unlock();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static class SystemIndex implements Comparable<SystemIndex> {\r\n\t\tprivate final MyLocation location;\r\n\r\n\t\tpublic SystemIndex(MyLocation location) {\r\n\t\t\tthis.location = location;\r\n\t\t}\r\n\r\n\t\tpublic int getSystemID() {\r\n\t\t\treturn (int) location.getLocationID();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic String toString() {\r\n\t\t\tFloat index = Settings.get().getManufacturingSettings().getSystems().get((int) location.getLocationID());\r\n\t\t\tif (index != null) {\r\n\t\t\t\treturn location.getLocation() + \" (\" + Formatter.floatFormat(index * 100) + \"%)\";\r\n\t\t\t} else {\r\n\t\t\t\treturn location.getLocation();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int compareTo(SystemIndex o) {\r\n\t\t\treturn this.toString().compareTo(o.toString());\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int hashCode() {\r\n\t\t\tint hash = 3;\r\n\t\t\thash = 59 * hash + Objects.hashCode(this.location);\r\n\t\t\treturn hash;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean equals(Object obj) {\r\n\t\t\tif (this == obj) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif (obj == null) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (getClass() != obj.getClass()) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tfinal SystemIndex other = (SystemIndex) obj;\r\n\t\t\treturn Objects.equals(this.location, other.location);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static class SystemIndexFilterator implements TextFilterator<SystemIndex> {\r\n\t\t@Override\r\n\t\tpublic void getFilterStrings(final List<String> baseList, final SystemIndex element) {\r\n\t\t\tbaseList.add(element.toString());\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/MarketOrdersToolSettingsPanel.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\r\n\r\nimport java.awt.event.FocusEvent;\r\nimport java.awt.event.FocusListener;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JCheckBox;\r\nimport javax.swing.JLabel;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.MarketOrdersSettings;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.DocumentFactory.ValueFlag;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JIntegerField;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JLabelMultiline;\r\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\r\n\r\n\r\npublic class MarketOrdersToolSettingsPanel extends JSettingsPanel {\r\n\r\n\tprivate final JCheckBox jSaveHistory;\r\n\tprivate final JIntegerField jExpireWarnDays;\r\n\tprivate final JIntegerField jRemainingWarnPercent;\r\n\r\n\tpublic MarketOrdersToolSettingsPanel(final Program program, final SettingsDialog settingsDialog) {\r\n\t\tsuper(program, settingsDialog, DialoguesSettings.get().marketOrders(), Images.TOOL_MARKET_ORDERS.getIcon());\r\n\r\n\t\tJLabelMultiline jSaveHistoryWarning = new JLabelMultiline(DialoguesSettings.get().saveHistoryWarning(), 2);\r\n\t\tJLabel jExpireWarnDaysLabel = new JLabel(DialoguesSettings.get().expireWarnDays());\r\n\t\tJLabel jRemainingWarnPercentsLabel = new JLabel(DialoguesSettings.get().remainingWarnPercent());\r\n\r\n\t\tjSaveHistory = new JCheckBox(DialoguesSettings.get().marketOrdersSaveHistory());\r\n\t\tjExpireWarnDays = new JIntegerField(\"0\", ValueFlag.POSITIVE_AND_ZERO);\r\n\t\tjExpireWarnDays.addFocusListener(new FocusListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void focusGained(FocusEvent e) {}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic void focusLost(FocusEvent e) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\t//Max time of market orders is 90 days so anything over that doesn't make sense\r\n\t\t\t\t\tif(Integer.parseInt(jExpireWarnDays.getText()) > 90) {\r\n\t\t\t\t\t\tjExpireWarnDays.setText(\"90\");\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (NumberFormatException ex) {\r\n\t\t\t\t\t//No problem\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tjRemainingWarnPercent = new JIntegerField(\"10\", ValueFlag.POSITIVE_AND_ZERO);\r\n\t\tjRemainingWarnPercent.addFocusListener(new FocusListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void focusGained(FocusEvent e) {}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic void focusLost(FocusEvent e) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\t//Max percent that makes sense is 100 so anything over that should be lowered to 100\r\n\t\t\t\t\tif(Integer.parseInt(jRemainingWarnPercent.getText()) > 100) {\r\n\t\t\t\t\t\tjRemainingWarnPercent.setText(\"100\");\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (NumberFormatException ex) {\r\n\t\t\t\t\t//No problem\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t.addComponent(jSaveHistory)\r\n\t\t\t\t.addComponent(jSaveHistoryWarning, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t.addComponent(jExpireWarnDaysLabel)\r\n\t\t\t\t\t\t.addComponent(jRemainingWarnPercentsLabel)\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t.addComponent(jExpireWarnDays)\r\n\t\t\t\t\t\t.addComponent(jRemainingWarnPercent)\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(jSaveHistory, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jSaveHistoryWarning, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\r\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\r\n\t\t\t\t\t.addComponent(jExpireWarnDaysLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jExpireWarnDays, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\r\n\t\t\t\t\t.addComponent(jRemainingWarnPercentsLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jRemainingWarnPercent, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic UpdateType save() {\r\n\t\tint expireWarnDays;\r\n\t\ttry {\r\n\t\t\texpireWarnDays = Integer.parseInt(jExpireWarnDays.getText());\r\n\t\t} catch (NumberFormatException ex) {\r\n\t\t\texpireWarnDays = 0;\r\n\t\t}\r\n\r\n\t\tint remainingWarnPercent;\r\n\t\ttry {\r\n\t\t\tremainingWarnPercent = Integer.parseInt(jRemainingWarnPercent.getText());\r\n\t\t} catch (NumberFormatException ex) {\r\n\t\t\tremainingWarnPercent = 0;\r\n\t\t}\r\n\r\n\t\tboolean repaint = Settings.get().getMarketOrdersSettings().getExpireWarnDays() != expireWarnDays\r\n\t\t\t\t\t|| Settings.get().getMarketOrdersSettings().getRemainingWarnPercent() != remainingWarnPercent;\r\n\r\n\t\tSettings.get().setMarketOrderHistory(jSaveHistory.isSelected());\r\n\t\tSettings.get().getMarketOrdersSettings().setExpireWarnDays(expireWarnDays);\r\n\t\tSettings.get().getMarketOrdersSettings().setRemainingWarnPercent(remainingWarnPercent);\r\n\r\n\t\treturn repaint ? UpdateType.REPAINT_MARKET_ORDERS_TABLE : UpdateType.NONE;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void load() {\r\n\t\tfinal MarketOrdersSettings marketOrdersSettings = Settings.get().getMarketOrdersSettings();\r\n\r\n\t\tjSaveHistory.setSelected(Settings.get().isMarketOrderHistory());\r\n\t\tjExpireWarnDays.setText(String.valueOf(marketOrdersSettings.getExpireWarnDays()));\r\n\t\tjRemainingWarnPercent.setText(String.valueOf(marketOrdersSettings.getRemainingWarnPercent()));\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/MiningToolSettingsPanel.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\r\n\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JCheckBox;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JLabelMultiline;\r\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\r\n\r\n\r\npublic class MiningToolSettingsPanel extends JSettingsPanel {\r\n\r\n\tprivate final JCheckBox jSaveHistory;\r\n\r\n\tpublic MiningToolSettingsPanel(final Program program, final SettingsDialog settingsDialog) {\r\n\t\tsuper(program, settingsDialog, DialoguesSettings.get().mining(), Images.TOOL_MINING.getIcon());\r\n\r\n\t\tjSaveHistory = new JCheckBox(DialoguesSettings.get().miningSaveHistory());\r\n\r\n\t\tJLabelMultiline jSaveHistoryWarning = new JLabelMultiline(DialoguesSettings.get().saveHistoryWarning(), 2);\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t.addComponent(jSaveHistory)\r\n\t\t\t\t.addComponent(jSaveHistoryWarning, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(jSaveHistory, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jSaveHistoryWarning, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\r\n\t\t);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic UpdateType save() {\r\n\t\tSettings.get().setMiningHistory(jSaveHistory.isSelected());\r\n\t\treturn UpdateType.NONE;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void load() {\r\n\t\tjSaveHistory.setSelected(Settings.get().isMiningHistory());\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/OverviewToolSettingsPanel.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\n\nimport javax.swing.GroupLayout;\nimport javax.swing.JCheckBox;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\n\n\npublic class OverviewToolSettingsPanel extends JSettingsPanel {\n\n\tprivate final JCheckBox jIgnoreContainers;\n\n\tpublic OverviewToolSettingsPanel(final Program program, final SettingsDialog settingsDialog) {\n\t\tsuper(program, settingsDialog, DialoguesSettings.get().overview(), Images.TOOL_OVERVIEW.getIcon());\n\t\tjIgnoreContainers = new JCheckBox(DialoguesSettings.get().ignoreContainers());\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t.addComponent(jIgnoreContainers)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jIgnoreContainers, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t);\n\t}\n\n\t@Override\n\tpublic UpdateType save() {\n\t\tboolean update = jIgnoreContainers.isSelected() != Settings.get().isIgnoreSecureContainers();\n\t\tSettings.get().setIgnoreSecureContainers(jIgnoreContainers.isSelected());\n\t\treturn update ? UpdateType.UPDATE_OVERVIEW : UpdateType.NONE;\n\t}\n\n\t@Override\n\tpublic void load() {\n\t\tjIgnoreContainers.setSelected(Settings.get().isIgnoreSecureContainers());\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/PriceDataSettingsPanel.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.SortedList;\nimport ca.odell.glazedlists.TextFilterator;\nimport ca.odell.glazedlists.swing.AutoCompleteSupport;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.FocusEvent;\nimport java.awt.event.FocusListener;\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.swing.ButtonGroup;\nimport javax.swing.GroupLayout;\nimport javax.swing.JButton;\nimport javax.swing.JCheckBox;\nimport javax.swing.JComboBox;\nimport javax.swing.JLabel;\nimport javax.swing.JOptionPane;\nimport javax.swing.JRadioButton;\nimport javax.swing.JTextField;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\nimport net.nikr.eve.jeveasset.data.settings.PriceDataSettings;\nimport net.nikr.eve.jeveasset.data.settings.PriceDataSettings.PriceMode;\nimport net.nikr.eve.jeveasset.data.settings.PriceDataSettings.PriceSource;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.JLabelMultiline;\nimport net.nikr.eve.jeveasset.gui.shared.components.ListComboBoxModel;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\nimport net.nikr.eve.jeveasset.io.shared.DesktopUtil;\nimport uk.me.candle.eve.pricing.impl.Janice.JaniceLocation;\nimport uk.me.candle.eve.pricing.options.LocationType;\nimport uk.me.candle.eve.pricing.options.NamedPriceLocation;\nimport uk.me.candle.eve.pricing.options.impl.NamedLocation;\n\n\npublic class PriceDataSettingsPanel extends JSettingsPanel {\n\n\tprivate enum PriceDataSettingsAction {\n\t\tSOURCE_SELECTED, LOCATION_SELECTED, JANICE_GET_API_KEY\n\t}\n\n\tprivate final JRadioButton jRadioRegions;\n\tprivate final JRadioButton jRadioSystems;\n\tprivate final JRadioButton jRadioStations;\n\tprivate final JCheckBox jBlueprintsTech1;\n\tprivate final JCheckBox jBlueprintsTech2;\n\tprivate final JCheckBox jManufacturingDefault;\n\tprivate final JComboBox<NamedPriceLocation> jRegions;\n\tprivate final JComboBox<NamedPriceLocation> jSystems;\n\tprivate final JComboBox<NamedPriceLocation> jStations;\n\tprivate final JComboBox<PriceMode> jPriceType;\n\tprivate final JComboBox<PriceMode> jPriceReprocessedType;\n\tprivate final JComboBox<PriceMode> jPriceManufacturingType;\n\tprivate final JComboBox<PriceSource> jSource;\n\tprivate final JButton jJaniceGetApiKey;\n\tprivate final JTextField jJaniceApiKey;\n\n\tprivate final EventList<NamedPriceLocation> stationsEventList = EventListManager.create();\n\tprivate final List<NamedPriceLocation> stations = new ArrayList<>();\n\n\tprivate final AutoCompleteSupport<NamedPriceLocation> regionsAutoComplete;\n\tprivate final AutoCompleteSupport<NamedPriceLocation> systemsAutoComplete;\n\tprivate final AutoCompleteSupport<NamedPriceLocation> stationsAutoComplete;\n\n\tpublic PriceDataSettingsPanel(final Program program, final SettingsDialog optionsDialog) {\n\t\tsuper(program, optionsDialog, DialoguesSettings.get().priceData(), Images.SETTINGS_PRICE_DATA.getIcon());\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tMyLocation system = null;\n\t\tMyLocation station = null;\n\t\tMyLocation region = null;\n\t\tEventList<NamedPriceLocation> systemsEventList = EventListManager.create();\n\t\tEventList<NamedPriceLocation> regionsEventList = EventListManager.create();\n\t\ttry {\n\t\t\tsystemsEventList.getReadWriteLock().writeLock().lock();\n\t\t\tregionsEventList.getReadWriteLock().writeLock().lock();\n\t\t\tfor (MyLocation location : StaticData.get().getLocations()) {\n\t\t\t\tif (location.isStation() && !location.isCitadel() && !location.isUserLocation()) { //Ignore citadels and user locations and planets\n\t\t\t\t\tstations.add(location);\n\t\t\t\t\tif (station == null || station.getLocation().length() < location.getLocation().length()) {\n\t\t\t\t\t\tstation = location;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (location.isSystem()) {\n\t\t\t\t\tsystemsEventList.add(location);\n\t\t\t\t\tif (system == null || system.getLocation().length() < location.getLocation().length()) {\n\t\t\t\t\t\tsystem = location;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t//New-eden Regions - Ignore Wormhole and Abyssal\n\t\t\t\tif (location.isRegion() && location.getRegionID() >= 10000000 && location.getRegionID() <= 11000000) {\n\t\t\t\t\tregionsEventList.add(location);\n\t\t\t\t\tif (region == null || region.getLocation().length() < location.getLocation().length()) {\n\t\t\t\t\t\tregion = location;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tsystemsEventList.getReadWriteLock().writeLock().unlock();\n\t\t\tregionsEventList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t\tsystemsEventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<NamedPriceLocation> systemsSortedList = new SortedList<>(systemsEventList);\n\t\tsystemsEventList.getReadWriteLock().readLock().unlock();\n\n\t\tstationsEventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<NamedPriceLocation> stationsSortedList = new SortedList<>(stationsEventList);\n\t\tstationsEventList.getReadWriteLock().readLock().unlock();\n\n\t\tButtonGroup group = new ButtonGroup();\n\n\t\tjRadioRegions = new JRadioButton();\n\t\tjRadioRegions.setActionCommand(PriceDataSettingsAction.LOCATION_SELECTED.name());\n\t\tjRadioRegions.addActionListener(listener);\n\t\tgroup.add(jRadioRegions);\n\n\t\tjRadioSystems = new JRadioButton();\n\t\tjRadioSystems.setActionCommand(PriceDataSettingsAction.LOCATION_SELECTED.name());\n\t\tjRadioSystems.addActionListener(listener);\n\t\tgroup.add(jRadioSystems);\n\n\t\tjRadioStations = new JRadioButton();\n\t\tjRadioStations.setActionCommand(PriceDataSettingsAction.LOCATION_SELECTED.name());\n\t\tjRadioStations.addActionListener(listener);\n\t\tgroup.add(jRadioStations);\n\n\t\tJLabel jRegionsLabel = new JLabel(DialoguesSettings.get().includeRegions());\n\t\tjRegions = new JComboBox<>();\n\t\tjRegions.setPrototypeDisplayValue(region);\n\t\tjRegions.getEditor().getEditorComponent().addFocusListener(listener);\n\t\tregionsAutoComplete = AutoCompleteSupport.install(jRegions, EventModels.createSwingThreadProxyList(regionsEventList), new LocationsFilterator());\n\t\tregionsAutoComplete.setStrict(true);\n\n\t\tJLabel jSystemsLabel = new JLabel(DialoguesSettings.get().includeSystems());\n\t\tjSystems = new JComboBox<>();\n\t\tjSystems.setPrototypeDisplayValue(system);\n\t\tjSystems.getEditor().getEditorComponent().addFocusListener(listener);\n\t\tsystemsAutoComplete = AutoCompleteSupport.install(jSystems, EventModels.createSwingThreadProxyList(systemsSortedList), new LocationsFilterator());\n\t\tsystemsAutoComplete.setStrict(true);\n\n\t\tJLabel jStationsLabel = new JLabel(DialoguesSettings.get().includeStations());\n\t\tjStations = new JComboBox<>();\n\t\tjStations.setPrototypeDisplayValue(station);\n\t\tjStations.getEditor().getEditorComponent().addFocusListener(listener);\n\t\tstationsAutoComplete = AutoCompleteSupport.install(jStations, EventModels.createSwingThreadProxyList(stationsSortedList), new LocationsFilterator());\n\t\tstationsAutoComplete.setStrict(true);\n\n\t\tJLabel jPriceTypeLabel = new JLabel(DialoguesSettings.get().price());\n\t\tjPriceType = new JComboBox<>(PriceMode.values());\n\n\t\tJLabel jPriceReprocessedTypeLabel = new JLabel(DialoguesSettings.get().priceReprocessed());\n\t\tjPriceReprocessedType = new JComboBox<>(PriceMode.values());\n\n\t\tJLabel jPriceManufacturingTypeLabel = new JLabel(DialoguesSettings.get().priceManufacturing());\n\t\tjPriceManufacturingType = new JComboBox<>(PriceMode.values());\n\n\t\tJLabel jSourceLabel = new JLabel(DialoguesSettings.get().source());\n\t\tjSource = new JComboBox<>(PriceSource.values());\n\t\tjSource.setActionCommand(PriceDataSettingsAction.SOURCE_SELECTED.name());\n\t\tjSource.addActionListener(listener);\n\n\t\tJLabel jBlueprintsLabel = new JLabel(DialoguesSettings.get().priceBase());\n\t\tjBlueprintsTech1 = new JCheckBox(DialoguesSettings.get().priceTech1());\n\t\tjBlueprintsTech2 = new JCheckBox(DialoguesSettings.get().priceTech2());\n\n\t\tJLabel jManufacturingDefaultLabel = new JLabel(DialoguesSettings.get().priceManufacturing());\n\t\tjManufacturingDefault = new JCheckBox(DialoguesSettings.get().manufacturingDefault());\n\n\t\tJLabel jJaniceApiKeyLabel = new JLabel(DialoguesSettings.get().janiceApiKey());\n\t\tjJaniceApiKey = new JTextField();\n\n\t\tjJaniceGetApiKey = new JButton(Images.MISC_HELP.getIcon());\n\t\tjJaniceGetApiKey.setActionCommand(PriceDataSettingsAction.JANICE_GET_API_KEY.name());\n\t\tjJaniceGetApiKey.addActionListener(listener);\n\n\t\tJLabelMultiline jWarning = new JLabelMultiline(DialoguesSettings.get().changeSourceWarning(), 2);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t\t.addComponent(jSourceLabel)\n\t\t\t\t\t\t.addComponent(jPriceTypeLabel)\n\t\t\t\t\t\t.addComponent(jPriceReprocessedTypeLabel)\n\t\t\t\t\t\t.addComponent(jPriceManufacturingTypeLabel)\n\t\t\t\t\t\t.addComponent(jBlueprintsLabel)\n\t\t\t\t\t\t.addComponent(jManufacturingDefaultLabel)\n\t\t\t\t\t\t.addComponent(jJaniceApiKeyLabel)\n\t\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t\t\t\t.addComponent(jRegionsLabel)\n\t\t\t\t\t\t\t\t.addComponent(jSystemsLabel)\n\t\t\t\t\t\t\t\t.addComponent(jStationsLabel)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.addGap(0, 0, 100)\n\t\t\t\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t\t\t\t.addComponent(jRadioRegions, GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t\t\t\t.addComponent(jRadioSystems, GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t\t\t\t.addComponent(jRadioStations, GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t\t.addComponent(jSource, 200, 200, 200)\n\t\t\t\t\t\t.addComponent(jRegions, 200, 200, 200)\n\t\t\t\t\t\t.addComponent(jSystems, 200, 200, 200)\n\t\t\t\t\t\t.addComponent(jStations, 200, 200, 200)\n\t\t\t\t\t\t.addComponent(jPriceType, 200, 200, 200)\n\t\t\t\t\t\t.addComponent(jPriceReprocessedType, 200, 200, 200)\n\t\t\t\t\t\t.addComponent(jPriceManufacturingType, 200, 200, 200)\n\t\t\t\t\t\t.addComponent(jManufacturingDefault, 200, 200, 200)\n\t\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t\t.addComponent(jJaniceApiKey, 169, 169, 169)\n\t\t\t\t\t\t\t.addGap(1)\n\t\t\t\t\t\t\t.addComponent(jJaniceGetApiKey, Program.getIconButtonsWidth(), Program.getIconButtonsWidth(), Program.getIconButtonsWidth())\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t\t.addComponent(jBlueprintsTech1)\n\t\t\t\t\t\t\t.addComponent(jBlueprintsTech2)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.addComponent(jWarning, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t.addComponent(jSourceLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jSource, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t.addComponent(jRegionsLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jRadioRegions, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jRegions, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t.addComponent(jSystemsLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jRadioSystems, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jSystems, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t.addComponent(jStationsLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jRadioStations, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jStations, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t.addComponent(jPriceTypeLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jPriceType, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t.addComponent(jPriceReprocessedTypeLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jPriceReprocessedType, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t.addComponent(jPriceManufacturingTypeLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jPriceManufacturingType, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t.addComponent(jJaniceApiKeyLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jJaniceApiKey, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jJaniceGetApiKey, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t.addComponent(jManufacturingDefaultLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jManufacturingDefault, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t.addComponent(jBlueprintsLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jBlueprintsTech1, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jBlueprintsTech2, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addComponent(jWarning, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t);\n\t}\n\n\t@Override\n\tpublic UpdateType save() {\n\t\tLong locationID;\n\t\tLocationType locationType = null;\n\t\tObject location = null;\n\t\tif (jRadioRegions.isSelected()) {\n\t\t\tlocationType = LocationType.REGION;\n\t\t\tlocation = jRegions.getSelectedItem();\n\t\t} else if (jRadioSystems.isSelected()) {\n\t\t\tlocationType = LocationType.SYSTEM;\n\t\t\tlocation = jSystems.getSelectedItem();\n\t\t} else if (jRadioStations.isSelected()) {\n\t\t\tlocationType = LocationType.STATION;\n\t\t\tlocation = jStations.getSelectedItem();\n\t\t}\n\t\tif (location instanceof NamedPriceLocation) {\n\t\t\tNamedPriceLocation priceLocation = (NamedPriceLocation) location;\n\t\t\tlocationID = priceLocation.getLocationID();\n\t\t} else { //XXX - Workaround for invalid locations: https://eve.nikr.net/jeveassets/bugs/#bugid631\n\t\t\tlocationID = Settings.get().getPriceDataSettings().getLocationID();\n\t\t\tlocationType = Settings.get().getPriceDataSettings().getLocationType();\n\t\t}\n\t\t//Price Type\n\t\tPriceMode priceType = get(jPriceType, Settings.get().getPriceDataSettings().getPriceType());\n\t\t//Price Reprocessed Type\n\t\tPriceMode priceReprocessedType = get(jPriceReprocessedType, Settings.get().getPriceDataSettings().getPriceReprocessedType());\n\t\t//Price Manufacturing Type\n\t\tPriceMode priceManufacturingType = get(jPriceManufacturingType, Settings.get().getPriceDataSettings().getPriceManufacturingType());\n\t\t//Janice\n\t\tString janiceKey = jJaniceApiKey.getText();\n\t\t//Source\n\t\tPriceSource source = (PriceSource) jSource.getSelectedItem();\n\t\t//Blueprints\n\t\tboolean blueprintsTech1 = jBlueprintsTech1.isSelected();\n\t\tboolean blueprintsTech2 = jBlueprintsTech2.isSelected();\n\t\t//Manufacturing Price for non-market items\n\t\tboolean manufacturingDefault = jManufacturingDefault.isSelected();\n\n\t\t//Eval if table need to be updated\n\t\tboolean update = priceType != Settings.get().getPriceDataSettings().getPriceType()\n\t\t\t\t\t\t|| priceReprocessedType != Settings.get().getPriceDataSettings().getPriceReprocessedType()\n\t\t\t\t\t\t|| priceManufacturingType != Settings.get().getPriceDataSettings().getPriceManufacturingType()\n\t\t\t\t\t\t|| blueprintsTech1 != Settings.get().isBlueprintBasePriceTech1()\n\t\t\t\t\t\t|| blueprintsTech2 != Settings.get().isBlueprintBasePriceTech2()\n\t\t\t\t\t\t|| manufacturingDefault != Settings.get().isManufacturingDefault();\n\n\t\t//Update settings\n\t\tSettings.get().setPriceDataSettings(new PriceDataSettings(locationType, locationID, source, priceType, priceReprocessedType, priceManufacturingType, janiceKey));\n\t\tSettings.get().setBlueprintBasePriceTech1(blueprintsTech1);\n\t\tSettings.get().setBlueprintBasePriceTech2(blueprintsTech2);\n\t\tSettings.get().setManufacturingDefault(manufacturingDefault);\n\n\t\t//Update table if needed\n\t\treturn update ? UpdateType.FULL_UPDATE : UpdateType.NONE;\n\t}\n\n\t@Override\n\tpublic void load() {\n\t\tjSource.setSelectedItem(Settings.get().getPriceDataSettings().getSource());\n\t\tjBlueprintsTech1.setSelected(Settings.get().isBlueprintBasePriceTech1());\n\t\tjBlueprintsTech2.setSelected(Settings.get().isBlueprintBasePriceTech2());\n\t\tjManufacturingDefault.setSelected(Settings.get().isManufacturingDefault());\n\t\tjJaniceApiKey.setText(Settings.get().getPriceDataSettings().getJaniceKey());\n\t}\n\n\tprivate void updateSource(final PriceSource source) {\n\t\tLong locationID = Settings.get().getPriceDataSettings().getLocationID();\n\t\tLocationType locationType = Settings.get().getPriceDataSettings().getLocationType();\n\t\t//Price Types\n\t\tset(jPriceType, Settings.get().getPriceDataSettings().getPriceType(), source);\n\t\t//Price Reprocessed Types\n\t\tset(jPriceReprocessedType, Settings.get().getPriceDataSettings().getPriceReprocessedType(), source);\n\t\t//Price Manufacturing Types\n\t\tset(jPriceManufacturingType, Settings.get().getPriceDataSettings().getPriceManufacturingType(), source);\n\t\tjJaniceApiKey.setEnabled(source == PriceSource.JANICE);\n\t\tjJaniceGetApiKey.setEnabled(source == PriceSource.JANICE);\n\t\t//Default\n\t\tjRadioRegions.setSelected(true);\n\n\t//REGIONS\n\t\tif (source.supportRegions()) {\n\t\t\tregionsAutoComplete.removeFirstItem();\n\t\t\tjRegions.setEnabled(true);\n\t\t\tjRadioRegions.setEnabled(true);\n\t\t} else {\n\t\t\tjRegions.setEnabled(false);\n\t\t\tjRadioRegions.setEnabled(false);\n\t\t\tregionsAutoComplete.setFirstItem(new NamedLocation(DialoguesSettings.get().notConfigurable(), -1, -1));\n\t\t}\n\t\tif (locationType == LocationType.REGION && jRadioRegions.isEnabled()) {\n\t\t\tif (locationID != null) {\n\t\t\t\tjRegions.setSelectedItem(StaticData.get().getLocation(locationID));\n\t\t\t}\n\t\t\tjRadioRegions.setSelected(true);\n\t\t} else {\n\t\t\tjRegions.setSelectedIndex(0);\n\t\t}\n\t//SYSTEM\n\t\tif (source.supportSystems()) {\n\t\t\tsystemsAutoComplete.removeFirstItem();\n\t\t\tjRadioSystems.setEnabled(true);\n\t\t\tjSystems.setEnabled(true);\n\t\t} else {\n\t\t\tjRadioSystems.setEnabled(false);\n\t\t\tjSystems.setEnabled(false);\n\t\t\tsystemsAutoComplete.setFirstItem(new NamedLocation(DialoguesSettings.get().notConfigurable(), -1, -1));\n\t\t}\n\t\tif (locationType == LocationType.SYSTEM && jRadioSystems.isEnabled()) {\n\t\t\tif (locationID != null) {\n\t\t\t\tjSystems.setSelectedItem(StaticData.get().getLocation(locationID));\n\t\t\t}\n\t\t\tjRadioSystems.setSelected(true);\n\t\t} else {\n\t\t\tjSystems.setSelectedIndex(0);\n\t\t}\n\t//STATION\n\t\tif (source.supportStations()) {\n\t\t\tList<NamedPriceLocation> list;\n\t\t\tif (source == PriceSource.FUZZWORK) {\n\t\t\t\tlist = new ArrayList<>();\n\t\t\t\tlist.add(ApiIdConverter.getLocation(60003760));\n\t\t\t\tlist.add(ApiIdConverter.getLocation(60008494));\n\t\t\t\tlist.add(ApiIdConverter.getLocation(60011866));\n\t\t\t\tlist.add(ApiIdConverter.getLocation(60004588));\n\t\t\t\tlist.add(ApiIdConverter.getLocation(60005686));\n\t\t\t} else if (source == PriceSource.JANICE) {\n\t\t\t\tlist = new ArrayList<>();\n\t\t\t\tfor (JaniceLocation janiceLocation : JaniceLocation.values()) {\n\t\t\t\t\tlist.add(janiceLocation.getPriceLocation());\n\t\t\t\t}\n\t\t\t\tlocationType = LocationType.STATION;\n\t\t\t} else {\n\t\t\t\tlist = stations;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tstationsEventList.getReadWriteLock().writeLock().lock();\n\t\t\t\tstationsEventList.clear();\n\t\t\t\tstationsEventList.addAll(list);\n\t\t\t} finally {\n\t\t\t\tstationsEventList.getReadWriteLock().writeLock().unlock();\n\t\t\t}\n\t\t\tstationsAutoComplete.removeFirstItem();\n\t\t\tjRadioStations.setEnabled(true);\n\t\t\tjStations.setEnabled(true);\n\t\t} else {\n\t\t\tjRadioStations.setEnabled(false);\n\t\t\tjStations.setEnabled(false);\n\t\t\tstationsAutoComplete.setFirstItem(new NamedLocation(DialoguesSettings.get().notConfigurable(), -1, -1));\n\t\t}\n\t\tif (locationType == LocationType.STATION && jRadioStations.isEnabled()) {\n\t\t\tif (locationID != null) {\n\t\t\t\tNamedPriceLocation location;\n\t\t\t\tif (source == PriceSource.JANICE) {\n\t\t\t\t\tlocation = JaniceLocation.getLocation(locationID);\n\t\t\t\t} else {\n\t\t\t\t\tlocation = StaticData.get().getLocation(locationID);\n\t\t\t\t}\n\t\t\t\tif (location != null && EventListManager.contains(stationsEventList, location)) {\n\t\t\t\t\tjStations.setSelectedItem(location);\n\t\t\t\t}\n\t\t\t}\n\t\t\tjRadioStations.setSelected(true);\n\t\t} else {\n\t\t\tjStations.setSelectedIndex(0);\n\t\t}\n\t}\n\n\tprivate void set(final JComboBox<PriceMode> jComboBox, PriceMode priceMode, final PriceSource source) {\n\t\tjComboBox.setModel(new ListComboBoxModel<>(source.getSupportedPriceModes()));\n\t\tjComboBox.setSelectedItem(priceMode);\n\t\tif (source.getSupportedPriceModes().isEmpty()) { //Empty\n\t\t\tjComboBox.getModel().setSelectedItem(DialoguesSettings.get().notConfigurable());\n\t\t\tjComboBox.setEnabled(false);\n\t\t} else {\n\t\t\tjComboBox.setEnabled(true);\n\t\t}\n\t}\n\n\tprivate PriceMode get(final JComboBox<PriceMode> jComboBox, PriceMode defaultPriceMode) {\n\t\tObject object = jComboBox.getSelectedItem();\n\t\tif (object instanceof PriceMode) {\n\t\t\treturn (PriceMode) object;\n\t\t} else {\n\t\t\treturn defaultPriceMode;\n\t\t}\n\t}\n\n\tprivate class ListenerClass implements ActionListener, FocusListener {\n\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (PriceDataSettingsAction.SOURCE_SELECTED.name().equals(e.getActionCommand())) {\n\t\t\t\tPriceSource priceSource = (PriceSource) jSource.getSelectedItem();\n\t\t\t\tupdateSource(priceSource);\n\t\t\t} else if (PriceDataSettingsAction.LOCATION_SELECTED.name().equals(e.getActionCommand())) {\n\t\t\t\tif (jRadioRegions.isSelected()) {\n\t\t\t\t\tjRegions.requestFocusInWindow();\n\t\t\t\t} else if (jRadioSystems.isSelected()) {\n\t\t\t\t\tjSystems.requestFocusInWindow();\n\t\t\t\t} else if (jRadioStations.isSelected()) {\n\t\t\t\t\tjStations.requestFocusInWindow();\n\t\t\t\t}\n\t\t\t} else if (PriceDataSettingsAction.JANICE_GET_API_KEY.name().equals(e.getActionCommand())) {\n\t\t\t\tint returnValue = JOptionPane.showConfirmDialog(parent,  DialoguesSettings.get().janiceApiKeyMsg(),  DialoguesSettings.get().janiceApiKeyTitle(), JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, Images.LINK_JANICE_32.getIcon());\n\t\t\t\tif (returnValue == JOptionPane.OK_OPTION) {\n\t\t\t\t\tDesktopUtil.browse(\"https://discord.com/invite/7McHR3r\", parent);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void focusGained(final FocusEvent e) {\n\t\t\tif (jRegions.getEditor().getEditorComponent().equals(e.getSource())) {\n\t\t\t\tjRadioRegions.setSelected(true);\n\t\t\t}\n\t\t\tif (jSystems.getEditor().getEditorComponent().equals(e.getSource())) {\n\t\t\t\tjRadioSystems.setSelected(true);\n\t\t\t}\n\t\t\tif (jStations.getEditor().getEditorComponent().equals(e.getSource())) {\n\t\t\t\tjRadioStations.setSelected(true);\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void focusLost(final FocusEvent e) { }\n\t}\n\n\tstatic class LocationsFilterator implements TextFilterator<NamedPriceLocation> {\n\t\t@Override\n\t\tpublic void getFilterStrings(final List<String> baseList, final NamedPriceLocation element) {\n\t\t\tbaseList.add(element.getLocation());\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/PriceHistoryToolSettingsPanel.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JOptionPane;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.PriceHistoryDatabase;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\r\n\r\n\r\npublic class PriceHistoryToolSettingsPanel extends JSettingsPanel {\r\n\r\n\tprivate final JButton jClearBlacklist;\r\n\r\n\tpublic PriceHistoryToolSettingsPanel(final Program program, final SettingsDialog settingsDialog) {\r\n\t\tsuper(program, settingsDialog, DialoguesSettings.get().priceHistory(), Images.TOOL_PRICE_HISTORY.getIcon());\r\n\r\n\t\tjClearBlacklist = new JButton(DialoguesSettings.get().clearBlacklist());\r\n\t\tjClearBlacklist.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tint returnValue = JOptionPane.showConfirmDialog(parent, DialoguesSettings.get().clearBlacklistMsg(), DialoguesSettings.get().clearBlacklistTitle(), JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, Images.LINK_ZKILLBOARD_32.getIcon());\r\n\t\t\t\tif (returnValue == JOptionPane.OK_OPTION) {\r\n\t\t\t\t\tPriceHistoryDatabase.clearZBlacklist();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t.addComponent(jClearBlacklist)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(jClearBlacklist, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic UpdateType save() {\r\n\t\treturn UpdateType.NONE;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void load() { }\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/ProxySettingsPanel.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\n\nimport java.awt.Dimension;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.net.Proxy;\nimport javax.swing.*;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.ProxyData;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.ListComboBoxModel;\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\n\n/**\n *\n * @author Flaming Candle\n */\npublic class ProxySettingsPanel extends JSettingsPanel {\n\n\tprivate final JComboBox<Proxy.Type> jProxyType;\n\tprivate final JTextField jProxyAddress;\n\tprivate final JSpinner jProxyPort;\n\tprivate final JCheckBox jEnableAuth;\n\tprivate final JTextField jProxyUsername;\n\tprivate final JPasswordField jProxyPassword;\n\n\tpublic ProxySettingsPanel(final Program program, final SettingsDialog optionsDialog) {\n\t\tsuper(program, optionsDialog, DialoguesSettings.get().proxy(), Images.SETTINGS_PROXY.getIcon());\n\n\t\tJLabel jProxyTypeLabel = new JLabel(DialoguesSettings.get().type());\n\t\tjProxyType = new JComboBox<>(new ListComboBoxModel<>(Proxy.Type.values()));\n\t\tjProxyType.setEnabled(true);\n\t\tjProxyType.setPreferredSize(new Dimension(200, (int) jProxyType.getPreferredSize().getHeight()));\n\t\tjProxyType.setSelectedItem(Proxy.Type.DIRECT);\n\t\tjProxyType.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\t\tenableProxy(jProxyType.getSelectedItem() != Proxy.Type.DIRECT);\n\t\t\t}\n\t\t});\n\n\t\tJLabel jProxyAddressLabel = new JLabel(DialoguesSettings.get().address());\n\t\tjProxyAddress = new JTextField();\n\t\tjProxyAddress.setEnabled(false);\n\n\t\tJLabel jProxyPortLabel = new JLabel(DialoguesSettings.get().port());\n\t\tjProxyPort = new JSpinner(new SpinnerNumberModel(0, 0, 65536, 1));\n\t\tjProxyPort.setEnabled(false);\n\n\t\tjEnableAuth = new JCheckBox(DialoguesSettings.get().auth());\n\t\tjEnableAuth.setSelected(false);\n\t\tjEnableAuth.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tjProxyUsername.setEnabled(jEnableAuth.isSelected());\n\t\t\t\tjProxyPassword.setEnabled(jEnableAuth.isSelected());\n\t\t\t}\n\t\t});\n\n\t\tJLabel jProxyUsernameLabel = new JLabel(DialoguesSettings.get().username());\n\t\tjProxyUsername = new JTextField();\n\t\tjProxyUsername.setEnabled(false);\n\n\t\tJLabel jProxyPasswordLabel = new JLabel(DialoguesSettings.get().password());\n\t\tjProxyPassword = new JPasswordField();\n\t\tjProxyPassword.setEnabled(false);\n\n\t\t// note: the layout is defined in the super class.\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.TRAILING).addGroup(\n\t\t\t\tlayout.createSequentialGroup()\n\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t\t.addComponent(jProxyTypeLabel)\n\t\t\t\t\t\t.addComponent(jProxyAddressLabel)\n\t\t\t\t\t\t.addComponent(jProxyPortLabel)\n\t\t\t\t\t\t.addComponent(jProxyUsernameLabel)\n\t\t\t\t\t\t.addComponent(jProxyPasswordLabel)\n\t\t\t\t\t)\n\t\t\t\t\t.addGap(10)\n\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t\t\t.addComponent(jProxyType)\n\t\t\t\t\t\t.addComponent(jProxyAddress)\n\t\t\t\t\t\t.addComponent(jProxyPort)\n\t\t\t\t\t\t.addComponent(jEnableAuth)\n\t\t\t\t\t\t.addComponent(jProxyUsername)\n\t\t\t\t\t\t.addComponent(jProxyPassword)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)\n\t\t\t\t\t.addComponent(jProxyTypeLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jProxyType, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)\n\t\t\t\t\t.addComponent(jProxyAddressLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jProxyAddress, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)\n\t\t\t\t\t.addComponent(jProxyPortLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jProxyPort, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)\n\t\t\t\t\t.addComponent(jEnableAuth, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)\n\t\t\t\t\t.addComponent(jProxyUsernameLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jProxyUsername, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)\n\t\t\t\t\t.addComponent(jProxyPasswordLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jProxyPassword, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t);\n\t}\n\n\tprivate void enableProxy(final boolean b) {\n\t\tjProxyAddress.setEnabled(b);\n\t\tjProxyPort.setEnabled(b);\n\t\tif (b) {\n\t\t\tjEnableAuth.setEnabled(true);\n\t\t\tjEnableAuth.setSelected(false);\n\t\t\tjProxyUsername.setEnabled(false);\n\t\t\tjProxyPassword.setEnabled(false);\n\t\t} else {\n\t\t\tjEnableAuth.setEnabled(false);\n\t\t\tjEnableAuth.setSelected(false);\n\t\t\tjProxyUsername.setEnabled(false);\n\t\t\tjProxyPassword.setEnabled(false);\n\t\t}\n\t}\n\n\t@Override\n\tpublic UpdateType save() {\n\t\t//Save proxy data\n\t\tif (jProxyType.getSelectedItem() != Proxy.Type.DIRECT) {\n\t\t\tString address = jProxyAddress.getText();\n\t\t\tint port = (int) jProxyPort.getValue();\n\t\t\tProxy.Type type = (Proxy.Type) jProxyType.getSelectedItem();\n\t\t\tString username;\n\t\t\tString password;\n\t\t\tif (jEnableAuth.isSelected()) {\n\t\t\t\tusername = jProxyUsername.getText();\n\t\t\t\tchar[] passwordChars = jProxyPassword.getPassword();\n\t\t\t\tpassword = String.valueOf(passwordChars);\n\t\t\t} else {\n\t\t\t\tusername = null;\n\t\t\t\tpassword = null;\n\t\t\t}\n\t\t\tSettings.get().setProxyData(new ProxyData(address, type, port, username, password));\n\t\t} else {\n\t\t\tSettings.get().setProxyData(new ProxyData());\n\t\t}\n\t\treturn UpdateType.NONE;\n\t}\n\n\t@Override\n\tpublic void load() {\n\t\tProxyData proxyData = Settings.get().getProxyData();\n\t\tif (proxyData.getType() == Proxy.Type.DIRECT) {\n\t\t\tjProxyType.setSelectedItem(Proxy.Type.DIRECT);\n\t\t\tjProxyAddress.setText(\"\");\n\t\t\tjProxyPort.setValue(0);\n\t\t\tjProxyUsername.setText(\"\");\n\t\t\tjProxyPassword.setText(\"\");\n\t\t\tenableProxy(false);\n\t\t} else {\n\t\t\tenableProxy(true);\n\t\t\tjProxyType.setSelectedItem(proxyData.getType());\n\t\t\tjProxyAddress.setText(proxyData.getAddress());\n\t\t\tjProxyPort.setValue(proxyData.getPort());\n\t\t\tif (proxyData.isAuth()) {\n\t\t\t\tjEnableAuth.setSelected(true);\n\t\t\t\tjProxyUsername.setEnabled(true);\n\t\t\t\tjProxyUsername.setText(proxyData.getUsername());\n\t\t\t\tjProxyPassword.setEnabled(true);\n\t\t\t\tjProxyPassword.setText(proxyData.getPassword());\n\t\t\t} else {\n\t\t\t\tjEnableAuth.setSelected(false);\n\t\t\t\tjProxyUsername.setEnabled(false);\n\t\t\t\tjProxyUsername.setText(\"\");\n\t\t\t\tjProxyPassword.setEnabled(false);\n\t\t\t\tjProxyPassword.setText(\"\");\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/ReprocessingSettingsPanel.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\n\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.MouseAdapter;\nimport java.awt.event.MouseEvent;\nimport javax.swing.*;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.ReprocessSettings;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.DocumentFactory;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDoubleField;\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\n\n\npublic class ReprocessingSettingsPanel extends JSettingsPanel {\n\n\tprivate static final int LEVEL0 = 0;\n\tprivate static final int LEVEL1 = 1;\n\tprivate static final int LEVEL2 = 2;\n\tprivate static final int LEVEL3 = 3;\n\tprivate static final int LEVEL4 = 4;\n\tprivate static final int LEVEL5 = 5;\n\n\tprivate final JRadioButton jStation50;\n\tprivate final JRadioButton jStationOther;\n\tprivate final JTextField jStation;\n\tprivate final JRadioButton[] jReprocessing;\n\tprivate final JRadioButton[] jReprocessingEfficiency;\n\tprivate final JRadioButton[] jOreProcessing;\n\tprivate final JRadioButton[] jScrapmetalProcessing;\n\n\tpublic ReprocessingSettingsPanel(final Program program, final SettingsDialog optionsDialog) {\n\t\tsuper(program, optionsDialog, DialoguesSettings.get().reprocessing(), Images.SETTINGS_REPROCESSING.getIcon());\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tJLabel jNotes = new JLabel(DialoguesSettings.get().reprocessingWarning());\n\n\t\tJLabel jStationLabel = new JLabel(DialoguesSettings.get().stationEquipment());\n\t\tjStation50 = new JRadioButton(DialoguesSettings.get().fiftyPercent());\n\t\tjStation50.addActionListener(listener);\n\t\tjStationOther = new JRadioButton();\n\t\tjStationOther.addActionListener(listener);\n\t\tjStation = new JDoubleField(DocumentFactory.ValueFlag.POSITIVE_AND_ZERO);\n\t\tjStation.addMouseListener(listener);\n\t\tjStation.setColumns(7);\n\t\tJLabel jStationPercentLabel = new JLabel(DialoguesSettings.get().percentSymbol());\n\n\t\tButtonGroup jStationButtonGroup = new ButtonGroup();\n\t\tjStationButtonGroup.add(jStation50);\n\t\tjStationButtonGroup.add(jStationOther);\n\n\t\tJLabel jOre0 = new JLabel(DialoguesSettings.get().zero());\n\t\tJLabel jOre1 = new JLabel(DialoguesSettings.get().one());\n\t\tJLabel jOre2 = new JLabel(DialoguesSettings.get().two());\n\t\tJLabel jOre3 = new JLabel(DialoguesSettings.get().three());\n\t\tJLabel jOre4 = new JLabel(DialoguesSettings.get().four());\n\t\tJLabel jOre5 = new JLabel(DialoguesSettings.get().five());\n\n\t\tJLabel jReprocessingLabel= new JLabel(DialoguesSettings.get().reprocessingLevel());\n\t\tjReprocessing = new JRadioButton[6];\n\t\tjReprocessing[LEVEL0] = new JRadioButton();\n\t\tjReprocessing[LEVEL0].addActionListener(listener);\n\t\tjReprocessing[LEVEL1] = new JRadioButton();\n\t\tjReprocessing[LEVEL1].addActionListener(listener);\n\t\tjReprocessing[LEVEL2] = new JRadioButton();\n\t\tjReprocessing[LEVEL2].addActionListener(listener);\n\t\tjReprocessing[LEVEL3] = new JRadioButton();\n\t\tjReprocessing[LEVEL3].addActionListener(listener);\n\t\tjReprocessing[LEVEL4] = new JRadioButton();\n\t\tjReprocessing[LEVEL4].addActionListener(listener);\n\t\tjReprocessing[LEVEL5] = new JRadioButton();\n\t\tjReprocessing[LEVEL5].addActionListener(listener);\n\n\t\tButtonGroup jReprocessingButtonGroup = new ButtonGroup();\n\t\tjReprocessingButtonGroup.add(jReprocessing[LEVEL0]);\n\t\tjReprocessingButtonGroup.add(jReprocessing[LEVEL1]);\n\t\tjReprocessingButtonGroup.add(jReprocessing[LEVEL2]);\n\t\tjReprocessingButtonGroup.add(jReprocessing[LEVEL3]);\n\t\tjReprocessingButtonGroup.add(jReprocessing[LEVEL4]);\n\t\tjReprocessingButtonGroup.add(jReprocessing[LEVEL5]);\n\n\t\tJLabel jReprocessingEfficiencyLabel = new JLabel(DialoguesSettings.get().reprocessingEfficiencyLevel());\n\t\tjReprocessingEfficiency = new JRadioButton[6];\n\t\tjReprocessingEfficiency[LEVEL0] = new JRadioButton();\n\t\tjReprocessingEfficiency[LEVEL0].addActionListener(listener);\n\t\tjReprocessingEfficiency[LEVEL1] = new JRadioButton();\n\t\tjReprocessingEfficiency[LEVEL1].addActionListener(listener);\n\t\tjReprocessingEfficiency[LEVEL2] = new JRadioButton();\n\t\tjReprocessingEfficiency[LEVEL2].addActionListener(listener);\n\t\tjReprocessingEfficiency[LEVEL3] = new JRadioButton();\n\t\tjReprocessingEfficiency[LEVEL3].addActionListener(listener);\n\t\tjReprocessingEfficiency[LEVEL4] = new JRadioButton();\n\t\tjReprocessingEfficiency[LEVEL4].addActionListener(listener);\n\t\tjReprocessingEfficiency[LEVEL5] = new JRadioButton();\n\t\tjReprocessingEfficiency[LEVEL5].addActionListener(listener);\n\n\t\tButtonGroup jReprocessingEfficiencyButtonGroup = new ButtonGroup();\n\t\tjReprocessingEfficiencyButtonGroup.add(jReprocessingEfficiency[LEVEL0]);\n\t\tjReprocessingEfficiencyButtonGroup.add(jReprocessingEfficiency[LEVEL1]);\n\t\tjReprocessingEfficiencyButtonGroup.add(jReprocessingEfficiency[LEVEL2]);\n\t\tjReprocessingEfficiencyButtonGroup.add(jReprocessingEfficiency[LEVEL3]);\n\t\tjReprocessingEfficiencyButtonGroup.add(jReprocessingEfficiency[LEVEL4]);\n\t\tjReprocessingEfficiencyButtonGroup.add(jReprocessingEfficiency[LEVEL5]);\n\n\t\tJLabel jOreLabel = new JLabel(DialoguesSettings.get().oreProcessingLevel());\n\t\tjOreProcessing = new JRadioButton[6];\n\t\tjOreProcessing[LEVEL0] = new JRadioButton();\n\t\tjOreProcessing[LEVEL1] = new JRadioButton();\n\t\tjOreProcessing[LEVEL2] = new JRadioButton();\n\t\tjOreProcessing[LEVEL3] = new JRadioButton();\n\t\tjOreProcessing[LEVEL4] = new JRadioButton();\n\t\tjOreProcessing[LEVEL5] = new JRadioButton();\n\n\t\tButtonGroup jOreButtonGroup = new ButtonGroup();\n\t\tjOreButtonGroup.add(jOreProcessing[LEVEL0]);\n\t\tjOreButtonGroup.add(jOreProcessing[LEVEL1]);\n\t\tjOreButtonGroup.add(jOreProcessing[LEVEL2]);\n\t\tjOreButtonGroup.add(jOreProcessing[LEVEL3]);\n\t\tjOreButtonGroup.add(jOreProcessing[LEVEL4]);\n\t\tjOreButtonGroup.add(jOreProcessing[LEVEL5]);\n\n\t\tJLabel jScrap0 = new JLabel(DialoguesSettings.get().zero());\n\t\tJLabel jScrap1 = new JLabel(DialoguesSettings.get().one());\n\t\tJLabel jScrap2 = new JLabel(DialoguesSettings.get().two());\n\t\tJLabel jScrap3 = new JLabel(DialoguesSettings.get().three());\n\t\tJLabel jScrap4 = new JLabel(DialoguesSettings.get().four());\n\t\tJLabel jScrap5 = new JLabel(DialoguesSettings.get().five());\n\n\t\tJLabel jScrapmetalLabel = new JLabel(DialoguesSettings.get().scrapmetalProcessingLevel());\n\t\tjScrapmetalProcessing = new JRadioButton[6];\n\t\tjScrapmetalProcessing[LEVEL0] = new JRadioButton();\n\t\tjScrapmetalProcessing[LEVEL1] = new JRadioButton();\n\t\tjScrapmetalProcessing[LEVEL2] = new JRadioButton();\n\t\tjScrapmetalProcessing[LEVEL3] = new JRadioButton();\n\t\tjScrapmetalProcessing[LEVEL4] = new JRadioButton();\n\t\tjScrapmetalProcessing[LEVEL5] = new JRadioButton();\n\n\t\tButtonGroup jScrapmetalButtonGroup = new ButtonGroup();\n\t\tjScrapmetalButtonGroup.add(jScrapmetalProcessing[LEVEL0]);\n\t\tjScrapmetalButtonGroup.add(jScrapmetalProcessing[LEVEL1]);\n\t\tjScrapmetalButtonGroup.add(jScrapmetalProcessing[LEVEL2]);\n\t\tjScrapmetalButtonGroup.add(jScrapmetalProcessing[LEVEL3]);\n\t\tjScrapmetalButtonGroup.add(jScrapmetalProcessing[LEVEL4]);\n\t\tjScrapmetalButtonGroup.add(jScrapmetalProcessing[LEVEL5]);\n\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t.addComponent(jNotes)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t\t.addComponent(jStationLabel)\n\t\t\t\t\t\t.addComponent(jReprocessingLabel)\n\t\t\t\t\t\t.addComponent(jReprocessingEfficiencyLabel)\n\t\t\t\t\t\t.addComponent(jOreLabel)\n\t\t\t\t\t\t.addComponent(jScrapmetalLabel)\n\t\t\t\t\t)\n\t\t\t\t\t.addGap(5)\n\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t\t.addComponent(jStation50)\n\t\t\t\t\t\t\t.addComponent(jStationOther)\n\t\t\t\t\t\t\t.addComponent(jStation, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t\t\t\t.addComponent(jStationPercentLabel)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER)\n\t\t\t\t\t\t\t\t.addComponent(jOre0)\n\t\t\t\t\t\t\t\t.addComponent(jReprocessing[LEVEL0])\n\t\t\t\t\t\t\t\t.addComponent(jReprocessingEfficiency[LEVEL0])\n\t\t\t\t\t\t\t\t.addComponent(jOreProcessing[LEVEL0])\n\t\t\t\t\t\t\t\t.addComponent(jScrap0)\n\t\t\t\t\t\t\t\t.addComponent(jScrapmetalProcessing[LEVEL0])\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER)\n\t\t\t\t\t\t\t\t.addComponent(jOre1)\n\t\t\t\t\t\t\t\t.addComponent(jReprocessing[LEVEL1])\n\t\t\t\t\t\t\t\t.addComponent(jReprocessingEfficiency[LEVEL1])\n\t\t\t\t\t\t\t\t.addComponent(jOreProcessing[LEVEL1])\n\t\t\t\t\t\t\t\t.addComponent(jScrap1)\n\t\t\t\t\t\t\t\t.addComponent(jScrapmetalProcessing[LEVEL1])\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER)\n\t\t\t\t\t\t\t\t.addComponent(jOre2)\n\t\t\t\t\t\t\t\t.addComponent(jReprocessing[LEVEL2])\n\t\t\t\t\t\t\t\t.addComponent(jReprocessingEfficiency[LEVEL2])\n\t\t\t\t\t\t\t\t.addComponent(jOreProcessing[LEVEL2])\n\t\t\t\t\t\t\t\t.addComponent(jScrap2)\n\t\t\t\t\t\t\t\t.addComponent(jScrapmetalProcessing[LEVEL2])\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER)\n\t\t\t\t\t\t\t\t.addComponent(jOre3)\n\t\t\t\t\t\t\t\t.addComponent(jReprocessing[LEVEL3])\n\t\t\t\t\t\t\t\t.addComponent(jReprocessingEfficiency[LEVEL3])\n\t\t\t\t\t\t\t\t.addComponent(jOreProcessing[LEVEL3])\n\t\t\t\t\t\t\t\t.addComponent(jScrap3)\n\t\t\t\t\t\t\t\t.addComponent(jScrapmetalProcessing[LEVEL3])\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER)\n\t\t\t\t\t\t\t\t.addComponent(jOre4)\n\t\t\t\t\t\t\t\t.addComponent(jReprocessing[LEVEL4])\n\t\t\t\t\t\t\t\t.addComponent(jReprocessingEfficiency[LEVEL4])\n\t\t\t\t\t\t\t\t.addComponent(jOreProcessing[LEVEL4])\n\t\t\t\t\t\t\t\t.addComponent(jScrap4)\n\t\t\t\t\t\t\t\t.addComponent(jScrapmetalProcessing[LEVEL4])\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER)\n\t\t\t\t\t\t\t\t.addComponent(jOre5)\n\t\t\t\t\t\t\t\t.addComponent(jReprocessing[LEVEL5])\n\t\t\t\t\t\t\t\t.addComponent(jReprocessingEfficiency[LEVEL5])\n\t\t\t\t\t\t\t\t.addComponent(jOreProcessing[LEVEL5])\n\t\t\t\t\t\t\t\t.addComponent(jScrap5)\n\t\t\t\t\t\t\t\t.addComponent(jScrapmetalProcessing[LEVEL5])\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t.addComponent(jStationLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jStation50, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jStationOther, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jStation, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jStationPercentLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t.addComponent(jOre0, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jOre1, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jOre2, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jOre3, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jOre4, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jOre5, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGap(0)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t.addComponent(jReprocessingLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jReprocessing[LEVEL0], Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jReprocessing[LEVEL1], Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jReprocessing[LEVEL2], Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jReprocessing[LEVEL3], Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jReprocessing[LEVEL4], Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jReprocessing[LEVEL5], Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t.addComponent(jReprocessingEfficiencyLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jReprocessingEfficiency[LEVEL0], Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jReprocessingEfficiency[LEVEL1], Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jReprocessingEfficiency[LEVEL2], Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jReprocessingEfficiency[LEVEL3], Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jReprocessingEfficiency[LEVEL4], Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jReprocessingEfficiency[LEVEL5], Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t.addComponent(jOreLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jOreProcessing[LEVEL0], Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jOreProcessing[LEVEL1], Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jOreProcessing[LEVEL2], Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jOreProcessing[LEVEL3], Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jOreProcessing[LEVEL4], Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jOreProcessing[LEVEL5], Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGap(Program.getButtonsHeight())\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t.addComponent(jScrap0, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jScrap1, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jScrap2, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jScrap3, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jScrap4, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jScrap5, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGap(0)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t.addComponent(jScrapmetalLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jScrapmetalProcessing[LEVEL0], Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jScrapmetalProcessing[LEVEL1], Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jScrapmetalProcessing[LEVEL2], Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jScrapmetalProcessing[LEVEL3], Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jScrapmetalProcessing[LEVEL4], Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jScrapmetalProcessing[LEVEL5], Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGap(Program.getButtonsHeight())\n\t\t\t\t.addComponent(jNotes, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t);\n\t}\n\n\n\n\t@Override\n\tpublic UpdateType save() {\n\t\tReprocessSettings reprocessSettings = new ReprocessSettings(Double.parseDouble(jStation.getText()), getSelected(jReprocessing), getSelected(jReprocessingEfficiency), getSelected(jOreProcessing), getSelected(jScrapmetalProcessing));\n\t\tboolean update = !Settings.get().getReprocessSettings().equals(reprocessSettings);\n\t\tSettings.get().setReprocessSettings(reprocessSettings);\n\t\t//Update table if needed\n\t\treturn update ? UpdateType.FULL_UPDATE : UpdateType.NONE;\n\t}\n\n\t@Override\n\tpublic void load() {\n\t\tReprocessSettings reprocessSettings = Settings.get().getReprocessSettings();\n\t\tif (reprocessSettings.getStation() == 50) {\n\t\t\t jStation50.setSelected(true);\n\t\t} else {\n\t\t\tjStationOther.setSelected(true);\n\t\t}\n\t\tjStation.setText(String.valueOf(reprocessSettings.getStation()));\n\t\tjReprocessing[reprocessSettings.getReprocessingLevel()].setSelected(true);\n\t\tjReprocessingEfficiency[reprocessSettings.getReprocessingEfficiencyLevel()].setSelected(true);\n\t\tjOreProcessing[reprocessSettings.getOreProcessingLevel()].setSelected(true);\n\t\tjScrapmetalProcessing[reprocessSettings.getScrapmetalProcessingLevel()].setSelected(true);\n\t\tvalidateSkills();\n\t\tvalidateStation();\n\t}\n\n\tprivate int getSelected(final JRadioButton[] jRadioButtons) {\n\t\tfor (int i = 0; i < jRadioButtons.length; i++) {\n\t\t\tif (jRadioButtons[i].isSelected()) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t}\n\n\tprivate void setEnabled(final JRadioButton[] jRadioButtons, final boolean enabled) {\n\t\tfor (JRadioButton jRadioButton : jRadioButtons) {\n\t\t\tjRadioButton.setEnabled(enabled);\n\t\t}\n\t}\n\n\tprivate void validateSkills() {\n\t\tif (getSelected(jReprocessing) < 4) {\n\t\t\tsetEnabled(jReprocessingEfficiency, false);\n\t\t\tjReprocessingEfficiency[LEVEL0].setSelected(true);\n\t\t} else {\n\t\t\tsetEnabled(jReprocessingEfficiency, true);\n\t\t}\n\t\tif (getSelected(jReprocessingEfficiency) < 5) {\n\t\t\tsetEnabled(jOreProcessing, false);\n\t\t\tjOreProcessing[LEVEL0].setSelected(true);\n\t\t} else {\n\t\t\tsetEnabled(jOreProcessing, true);\n\t\t}\n\t}\n\n\tprivate void validateStation() {\n\t\tif (jStation50.isSelected()) {\n\t\t\tjStation.setText(\"50\");\n\t\t\tjStation.setEnabled(false);\n\t\t}\n\t\tif (jStationOther.isSelected()) {\n\t\t\tjStation.setEnabled(true);\n\t\t}\n\t}\n\n\tprivate class ListenerClass extends MouseAdapter implements ActionListener {\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tvalidateSkills();\n\t\t\tvalidateStation();\n\t\t\tif (e.getSource().equals(jStationOther)) {\n\t\t\t\tjStation.requestFocusInWindow();\n\t\t\t\tjStation.selectAll();\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void mouseClicked(MouseEvent e) {\n\t\t\tjStationOther.setSelected(true);\n\t\t\tjStation.setEnabled(true);\n\t\t\tjStation.requestFocusInWindow();\n\t\t\tjStation.selectAll();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/SettingsDialog.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\n\nimport java.awt.CardLayout;\nimport java.awt.Component;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.util.Enumeration;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.Map;\nimport java.util.Set;\nimport javax.swing.GroupLayout;\nimport javax.swing.Icon;\nimport javax.swing.JButton;\nimport javax.swing.JComponent;\nimport javax.swing.JLabel;\nimport javax.swing.JPanel;\nimport javax.swing.JScrollPane;\nimport javax.swing.JSeparator;\nimport javax.swing.JTree;\nimport javax.swing.event.TreeSelectionEvent;\nimport javax.swing.event.TreeSelectionListener;\nimport javax.swing.tree.DefaultMutableTreeNode;\nimport javax.swing.tree.DefaultTreeCellRenderer;\nimport javax.swing.tree.DefaultTreeModel;\nimport javax.swing.tree.TreeCellRenderer;\nimport javax.swing.tree.TreeNode;\nimport javax.swing.tree.TreePath;\nimport javax.swing.tree.TreeSelectionModel;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.dialogs.settings.JSettingsPanel.UpdateType;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\nimport net.nikr.eve.jeveasset.gui.tabs.orders.MarketOrdersTab;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewTab;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.StockpileTab;\nimport net.nikr.eve.jeveasset.gui.tabs.tree.TreeTab;\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\nimport net.nikr.eve.jeveasset.io.shared.DesktopUtil;\nimport net.nikr.eve.jeveasset.io.shared.DesktopUtil.HelpLink;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n\npublic class SettingsDialog extends JDialogCentered {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(SettingsDialog.class);\n\n\tprivate enum SettingsDialogAction {\n\t\tOK, CANCEL, APPLY, HELP\n\t}\n\n\tprivate final JTree jTree;\n\tprivate final JPanel jContent;\n\tprivate final JButton jOK;\n\tprivate final Map<String, JSettingsPanel> settingsPanels;\n\tprivate final Map<Object, Icon> icons;\n\tprivate final DefaultMutableTreeNode rootNode;\n\tprivate final DefaultTreeModel treeModel;\n\tprivate final CardLayout cardLayout;\n\n\tprivate final UserPriceSettingsPanel userPriceSettingsPanel;\n\tprivate final UserNameSettingsPanel userNameSettingsPanel;\n\tprivate final UserLocationSettingsPanel locationSettingsPanel;\n\tprivate final JumpsSettingsPanel jumpsSettingsPanel;\n\tprivate boolean tabSelected = false;\n\n\tpublic SettingsDialog(final Program program) {\n\t\tsuper(program, DialoguesSettings.get().settings(Program.PROGRAM_NAME), Images.DIALOG_SETTINGS.getImage());\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tsettingsPanels = new HashMap<>();\n\t\ticons = new HashMap<>();\n\n\t\trootNode = new DefaultMutableTreeNode(DialoguesSettings.get().root());\n\t\ttreeModel = new DefaultTreeModel(rootNode);\n\t\tjTree = new JTree(treeModel);\n\t\tjTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);\n\t\tjTree.putClientProperty(\"JTree.lineStyle\", \"None\");\n\t\tjTree.setCellRenderer(new IconTreeCellRenderer(icons));\n\t\tjTree.setExpandsSelectedPaths(true);\n\t\tjTree.setRootVisible(false);\n\t\tjTree.setShowsRootHandles(true);\n\t\tjTree.addTreeSelectionListener(listener);\n\t\tjTree.setVisibleRowCount(0);\n\n\t\tcardLayout = new CardLayout();\n\t\tjContent = new JPanel(cardLayout);\n\n\t\tGeneralSettingsPanel generalSettingsPanel = new GeneralSettingsPanel(program, this);\n\t\tadd(generalSettingsPanel);\n\n\t\tadd(new ExperimentalSettingsPanel(program, this));\n\n\t\tDefaultMutableTreeNode toolNode = addGroup(DialoguesSettings.get().tools(), Images.SETTINGS_TOOLS.getIcon());\n\n\t\tadd(toolNode, new ShowToolSettingsPanel(program, this));\n\n\t\tadd(toolNode, new AssetsToolSettingsPanel(program, this));\n\n\t\tadd(toolNode, new OverviewToolSettingsPanel(program, this));\n\n\t\tadd(toolNode, new StockpileToolSettingsPanel(program, this));\n\n\t\tadd(toolNode, new MarketOrdersToolSettingsPanel(program, this));\n\n\t\tadd(toolNode, new TransactionsToolSettingsPanel(program, this));\n\n\t\tadd(toolNode, new JournalToolSettingsPanel(program, this));\n\n\t\tadd(toolNode, new IndustryJobsToolSettingsPanel(program, this));\n\n\t\tadd(toolNode, new ContractToolSettingsPanel(program, this));\n\n\t\tadd(toolNode, new TrackerToolSettingsPanel(program, this));\n\n\t\tadd(toolNode, new PriceHistoryToolSettingsPanel(program, this));\n\n\t\tadd(toolNode, new MiningToolSettingsPanel(program, this));\n\n\t\tDefaultMutableTreeNode valuesNode = addGroup(DialoguesSettings.get().values(), Images.EDIT_RENAME.getIcon());\n\n\t\tuserPriceSettingsPanel = new UserPriceSettingsPanel(program, this);\n\t\tadd(valuesNode, userPriceSettingsPanel);\n\n\t\tuserNameSettingsPanel = new UserNameSettingsPanel(program, this);\n\t\tadd(valuesNode, userNameSettingsPanel);\n\n\t\tlocationSettingsPanel = new UserLocationSettingsPanel(program, this);\n\t\tadd(valuesNode, locationSettingsPanel);\n\n\t\tadd(valuesNode, new TagsSettingsPanel(program, this));\n\t\t\n\t\tjumpsSettingsPanel = new JumpsSettingsPanel(program, this);\n\t\tadd(jumpsSettingsPanel);\n\n\t\tadd(new ColorSettingsPanel(program, this));\n\n\t\tadd(new SoundsSettingsPanel(program, this));\n\n\t\tadd(new PriceDataSettingsPanel(program, this));\n\n\t\tadd(new ReprocessingSettingsPanel(program, this));\n\n\t\tadd(new ManufacturingSettingsPanel(program, this));\n\n\t\tadd(new ProxySettingsPanel(program, this));\n\n\t\tadd(new WindowSettingsPanel(program, this));\n\n\t\tJScrollPane jTreeScroller = new JScrollPane(jTree);\n\n\t\tJSeparator jSeparator = new JSeparator();\n\n\t\tJButton jHelp = new JButton(Images.MISC_HELP.getIcon());\n\t\tjHelp.setActionCommand(SettingsDialogAction.HELP.name());\n\t\tjHelp.addActionListener(listener);\n\n\t\tjOK = new JButton(DialoguesSettings.get().ok());\n\t\tjOK.setActionCommand(SettingsDialogAction.OK.name());\n\t\tjOK.addActionListener(listener);\n\n\t\tJButton jApply = new JButton(DialoguesSettings.get().apply());\n\t\tjApply.setActionCommand(SettingsDialogAction.APPLY.name());\n\t\tjApply.addActionListener(listener);\n\n\t\tJButton jCancel = new JButton(DialoguesSettings.get().cancel());\n\t\tjCancel.setActionCommand(SettingsDialogAction.CANCEL.name());\n\t\tjCancel.addActionListener(listener);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jTreeScroller, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t\t.addComponent(jContent, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t)\n\t\t\t\t.addComponent(jSeparator)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jHelp, Program.getIconButtonsWidth(), Program.getIconButtonsWidth(), Program.getIconButtonsWidth())\n\t\t\t\t\t.addGap(0, 0, Integer.MAX_VALUE)\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addComponent(jApply, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jTreeScroller, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t\t.addComponent(jContent, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t)\n\t\t\t\t.addComponent(jSeparator, 5, 5, 5)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jHelp, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jApply, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t);\n\t}\n\n\tprivate DefaultMutableTreeNode addGroup(final String name, final Icon icon) {\n\t\tSettingsGroup group = new SettingsGroup(program, this, name, icon);\n\t\tadd(group);\n\t\treturn group.getTreeNode();\n\t}\n\n\tprivate void add(final JSettingsPanel jSettingsPanel) {\n\t\tadd(null, jSettingsPanel);\n\t}\n\n\tprotected void addCard(final JPanel jPanel, final String title) {\n\t\tjContent.add(jPanel, title);\n\t}\n\n\tprotected void removeCard(final JPanel jPanel) {\n\t\tjContent.remove(jPanel);\n\t}\n\n\tprivate void add(final DefaultMutableTreeNode parentNode, final JSettingsPanel jSettingsPanel) {\n\t\tsettingsPanels.put(jSettingsPanel.getTitle(), jSettingsPanel);\n\t\ticons.put(jSettingsPanel.getTitle(), jSettingsPanel.getIcon());\n\t\tjContent.add(jSettingsPanel.getPanel(), jSettingsPanel.getTitle());\n\t\tjTree.setVisibleRowCount(jTree.getVisibleRowCount() + 1);\n\t\tDefaultMutableTreeNode node = new DefaultMutableTreeNode(jSettingsPanel.getTitle());\n\t\tif (parentNode == null) {\n\t\t\ttreeModel.insertNodeInto(node, rootNode, rootNode.getChildCount());\n\t\t} else {\n\t\t\ttreeModel.insertNodeInto(node, parentNode, parentNode.getChildCount());\n\t\t}\n\t\tjSettingsPanel.setTreeNode(node);\n\t}\n\n\tpublic UserNameSettingsPanel getUserNameSettingsPanel() {\n\t\treturn userNameSettingsPanel;\n\t}\n\n\tpublic UserPriceSettingsPanel getUserPriceSettingsPanel() {\n\t\treturn userPriceSettingsPanel;\n\t}\n\n\tpublic UserLocationSettingsPanel getUserLocationSettingsPanel() {\n\t\treturn locationSettingsPanel;\n\t}\n\n\tpublic void showJumpsSettingsPanel() {\n\t\tsetVisible(jumpsSettingsPanel);\n\t}\n\n\tprivate void expandAll(final TreePath parent, final boolean expand) {\n\t\tTreeNode node = (TreeNode) parent.getLastPathComponent();\n\t\tif (node.getChildCount() >= 0) {\n\t\t\tfor (Enumeration<?> e = node.children(); e.hasMoreElements();) {\n\t\t\t\tTreeNode n = (TreeNode) e.nextElement();\n\t\t\t\tTreePath path = parent.pathByAddingChild(n);\n\t\t\t\texpandAll(path, expand);\n\t\t\t}\n\t\t}\n\t\tif (expand) {\n\t\t\tjTree.expandPath(parent);\n\t\t} else {\n\t\t\tjTree.collapsePath(parent);\n\t\t}\n\t}\n\n\t@Override\n\tprotected JComponent getDefaultFocus() {\n\t\treturn jOK;\n\t}\n\n\t@Override\n\tprotected JButton getDefaultButton() {\n\t\treturn jOK;\n\t}\n\n\t@Override\n\tprotected void windowShown() { }\n\n\t@Override\n\tprotected void save() {\n\t\tsave(true);\n\t}\n\n\tprivate void save(boolean hideWindow) {\n\t\tSet<UpdateType> updates = new HashSet<>();\n\t\tSettings.lock(\"Settings Dialog\"); //Lock for Settings Dialog\n\t\tfor (Map.Entry<String, JSettingsPanel> entry : settingsPanels.entrySet()) {\n\t\t\tUpdateType save = entry.getValue().save();\n\t\t\tif (save != UpdateType.NONE) {\n\t\t\t\tLOG.info(entry.getKey() + \" returned \" + save.name());\n\t\t\t}\n\t\t\tupdates.add(save);\n\t\t}\n\t\tSettings.unlock(\"Settings Dialog\"); //Unlock for Settings Dialog\n\t\tif (hideWindow) {\n\t\t\tsetVisible(false);\n\t\t}\n\t\tif (updates.contains(UpdateType.FULL_UPDATE)) {\n\t\t\tif (hideWindow) {\n\t\t\t\tprogram.updateEventListsWithProgress();\n\t\t\t} else {\n\t\t\t\tprogram.updateEventListsWithProgress(getDialog());\n\t\t\t}\n\t\t} else {\n\t\t\tif (updates.contains(UpdateType.FULL_REPAINT)) {\n\t\t\t\tprogram.repaintTables();\n\t\t\t} else {\n\t\t\t\tif (updates.contains(UpdateType.REPAINT_MARKET_ORDERS_TABLE)) {\n\t\t\t\t\tMarketOrdersTab marketOrdersTab = program.getMarketOrdersTab(false);\n\t\t\t\t\tif (marketOrdersTab != null) {\n\t\t\t\t\t\tmarketOrdersTab.repaintTable();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (updates.contains(UpdateType.REPAINT_STOCKPILE_TABLE)) {\n\t\t\t\t\tStockpileTab stockpileTab = program.getStockpileTab(false);\n\t\t\t\t\tif (stockpileTab != null) {\n\t\t\t\t\t\tstockpileTab.repaintTable();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (updates.contains(UpdateType.UPDATE_ASSET_TABLES)) {\n\t\t\t\tprogram.getAssetsTab().tableDataChanged();\n\t\t\t\tTreeTab treeTab = program.getTreeTab(false);\n\t\t\t\tif (treeTab != null) {\n\t\t\t\t\ttreeTab.tableDataChanged();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (updates.contains(UpdateType.UPDATE_OVERVIEW)) {\n\t\t\t\tOverviewTab overviewTab = program.getOverviewTab(false);\n\t\t\t\tif (overviewTab != null) {\n\t\t\t\t\toverviewTab.updateData();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (updates.contains(UpdateType.UPDATE_TAGS)) {\n\t\t\t\tprogram.updateTags();\n\t\t\t}\n\t\t}\n\t\tprogram.saveSettings(\"Settings Dialog\"); //Save Settings Dialog\n\t}\n\n\tpublic void setVisible(final JSettingsPanel c) {\n\t\tjTree.setSelectionPath(new TreePath(c.getTreeNode().getPath()));\n\t\ttabSelected = true;\n\t\tsetVisible(true);\n\t}\n\n\t@Override\n\tpublic void setVisible(final boolean b) {\n\t\tif (b) {\n\t\t\tgetDialog().pack(); //XXX - Workaround for LookAndFeelPreview being temperamental and resizing the dialog when generating the LAF previews\n\t\t\tfor (Map.Entry<String, JSettingsPanel> entry : settingsPanels.entrySet()) {\n\t\t\t\tentry.getValue().load();\n\t\t\t}\n\t\t\texpandAll(new TreePath((rootNode)), true);\n\t\t\tif (!tabSelected) {\n\t\t\t\tjTree.setSelectionRow(0);\n\t\t\t}\n\t\t}\n\t\ttabSelected = false;\n\t\tsuper.setVisible(b);\n\t}\n\n\tprivate class ListenerClass implements ActionListener, TreeSelectionListener {\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (SettingsDialogAction.OK.name().equals(e.getActionCommand())) {\n\t\t\t\tsave(true);\n\t\t\t} else if (SettingsDialogAction.CANCEL.name().equals(e.getActionCommand())) {\n\t\t\t\tsetVisible(false);\n\t\t\t} else if (SettingsDialogAction.APPLY.name().equals(e.getActionCommand())) {\n\t\t\t\tsave(false);\n\t\t\t} else if (SettingsDialogAction.HELP.name().equals(e.getActionCommand())) {\n\t\t\t\tDesktopUtil.browse(new HelpLink(\"https://wiki.jeveassets.org/manual/options\", GuiShared.get().helpSettings()), getDialog());\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void valueChanged(final TreeSelectionEvent e) {\n\t\t\tTreePath[] paths = jTree.getSelectionPaths();\n\t\t\tif (paths != null && paths.length == 1) {\n\t\t\t\tcardLayout.show(jContent, paths[0].getLastPathComponent().toString());\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic class IconTreeCellRenderer implements TreeCellRenderer {\n\n\t\tprivate Map<Object, Icon> icons = null;\n\t\tprivate final DefaultTreeCellRenderer cellRenderer = new DefaultTreeCellRenderer();\n\n\t\tpublic IconTreeCellRenderer(final Map<Object, Icon> icons) {\n\t\t\tthis.icons = icons;\n\t\t}\n\n\t\t@Override\n\t\tpublic Component getTreeCellRendererComponent(final JTree tree, final Object value, final boolean selected, final boolean expanded, final boolean leaf, final int row, final boolean hasFocus) {\n\t\t\tJLabel label = (JLabel) cellRenderer.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);\n\t\t\tlabel.setIcon(icons.get(value.toString()));\n\t\t\treturn label;\n\t\t}\n\n\t}\n\n\tprivate static class SettingsGroup extends JSettingsPanel {\n\n\t\tpublic SettingsGroup(final Program program, final SettingsDialog settingsDialog, final String sTitle, final Icon icon) {\n\t\t\tsuper(program, settingsDialog, sTitle, icon);\n\t\t}\n\n\t\t@Override\n\t\tpublic UpdateType save() { return UpdateType.NONE; }\n\n\t\t@Override\n\t\tpublic void load() { }\n\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/ShowToolSettingsPanel.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\n\nimport java.awt.Component;\nimport java.awt.datatransfer.DataFlavor;\nimport java.awt.datatransfer.Transferable;\nimport java.awt.datatransfer.UnsupportedFlavorException;\nimport java.awt.dnd.DragSource;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.io.IOException;\nimport java.io.Serializable;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Objects;\nimport java.util.TreeSet;\nimport javax.swing.ButtonGroup;\nimport javax.swing.DefaultListModel;\nimport javax.swing.DropMode;\nimport javax.swing.GroupLayout;\nimport javax.swing.JCheckBox;\nimport javax.swing.JComponent;\nimport javax.swing.JLabel;\nimport javax.swing.JList;\nimport javax.swing.JRadioButton;\nimport javax.swing.JScrollPane;\nimport javax.swing.ListSelectionModel;\nimport javax.swing.TransferHandler;\nimport static javax.swing.TransferHandler.MOVE;\nimport javax.swing.TransferHandler.TransferSupport;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.ToolLoader;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTab;\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n\npublic class ShowToolSettingsPanel extends JSettingsPanel {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(ShowToolSettingsPanel.class);\n\n\tprivate final static double COLUMN_COUNT = 4.0;\n\n\tprivate final JRadioButton jSelected;\n\tprivate final JRadioButton jSave;\n\tprivate final JLabel jToolsLabel;\n\tprivate final DefaultListModel<Tool> model = new DefaultListModel<>();\n\tprivate final JList<Tool> jTools;\n\tTreeSet<Tool> tools = new TreeSet<>();\n\n\tpublic ShowToolSettingsPanel(final Program program, final SettingsDialog settingsDialog) {\n\t\tsuper(program, settingsDialog, DialoguesSettings.get().show(), Images.EDIT_SHOW.getIcon());\n\n\t\tfor (String toolTitle : ToolLoader.getToolTitles(program)) {\n\t\t\ttools.add(new Tool(toolTitle));\n\t\t}\n\n\t\tButtonGroup buttonGroup = new ButtonGroup();\n\t\tjSave = new JRadioButton(DialoguesSettings.get().saveTools());\n\t\tjSave.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tsetEnabled(false);\n\t\t\t}\n\t\t});\n\t\tbuttonGroup.add(jSave);\n\n\t\tjSelected = new JRadioButton(DialoguesSettings.get().selectTools());\n\t\tjSelected.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tsetEnabled(true);\n\t\t\t}\n\t\t});\n\n\t\tbuttonGroup.add(jSelected);\n\n\t\tGroupLayout.SequentialGroup horizontal = layout.createSequentialGroup();\n\t\tList<GroupLayout.ParallelGroup> columns = new ArrayList<>();\n\t\tfor (int i = 0; i < COLUMN_COUNT; i++) {\n\t\t\tGroupLayout.ParallelGroup column = layout.createParallelGroup(GroupLayout.Alignment.LEADING);\n\t\t\thorizontal.addGroup(column);\n\t\t\tcolumns.add(column);\n\t\t}\n\t\tint rowCount = (int) Math.ceil(tools.size() / COLUMN_COUNT);\n\t\tGroupLayout.SequentialGroup vertical = layout.createSequentialGroup();\n\t\tList<GroupLayout.ParallelGroup> rows = new ArrayList<>();\n\t\tfor (int i = 0; i < rowCount; i++) {\n\t\t\tGroupLayout.ParallelGroup row = layout.createParallelGroup(GroupLayout.Alignment.LEADING);\n\t\t\tvertical.addGroup(row);\n\t\t\trows.add(row);\n\t\t}\n\t\tint row = 0;\n\t\tint column = 0;\n\t\tfor (Tool tool : tools) {\n\t\t\tif (row >= rowCount) {\n\t\t\t\trow = 0;\n\t\t\t\tcolumn++;\n\t\t\t}\n\t\t\tJCheckBox jCheckBox = tool.getCheckBox();\n\t\t\tjCheckBox.addActionListener(new ActionListener() {\n\t\t\t\t@Override\n\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\tif (jCheckBox.isSelected()) {\n\t\t\t\t\t\tif (!model.contains(tool)) {\n\t\t\t\t\t\t\tmodel.addElement(tool);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmodel.removeElement(tool);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\trows.get(row).addComponent(jCheckBox);\n\t\t\tcolumns.get(column).addComponent(jCheckBox);\n\t\t\trow++;\n\t\t}\n\n\t\tjToolsLabel = new JLabel(DialoguesSettings.get().toolsOrderHelp());\n\n\t\tjTools = new JList<>(model);\n\t\tjTools.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\n\t\tjTools.setTransferHandler(new ListItemTransferHandler());\n\t\tjTools.setDropMode(DropMode.INSERT);\n\t\tjTools.setDragEnabled(true);\n\n\t\tJScrollPane jToolsOrderScroll = new JScrollPane(jTools);\n\t\tjToolsOrderScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t.addComponent(jSave)\n\t\t\t\t.addComponent(jSelected)\n\t\t\t\t.addGroup(horizontal)\n\t\t\t\t.addComponent(jToolsLabel)\n\t\t\t\t.addComponent(jToolsOrderScroll)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jSave, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jSelected, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addGroup(vertical)\n\t\t\t\t.addComponent(jToolsLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addGap(0)\n\t\t\t\t.addComponent(jToolsOrderScroll, 140, 140, Integer.MAX_VALUE)\n\t\t);\n\t}\n\n\t@Override\n\tpublic UpdateType save() {\n\t\tSettings.get().setSaveToolsOnExit(jSave.isSelected()); //must be before: program.getMainWindow().saveShown() (or it won't save)\n\t\tif (jSave.isSelected()) {\n\t\t\tSettings.get().getShowTools().clear();\n\t\t\tfor (JMainTab tab : program.getMainWindow().getTabs()) {\n\t\t\t\tSettings.get().getShowTools().add(tab.getTitle());\n\t\t\t}\n\t\t} else {\n\t\t\tSettings.get().getShowTools().clear();\n\t\t\tfor (int i = 0; i < model.size(); i++) {\n\t\t\t\tSettings.get().getShowTools().add(model.get(i).getTitle());\n\t\t\t}\n\t\t}\n\t\treturn UpdateType.NONE;\n\t}\n\n\t@Override\n\tpublic void load() {\n\t\t//Reset\n\t\tmodel.removeAllElements();\n\t\tfor (Tool tool : tools) {\n\t\t\ttool.setSelected(false);\n\t\t}\n\t\tif (Settings.get().isSaveToolsOnExit()) {\n\t\t\tjSave.setSelected(true);\n\t\t} else {\n\t\t\tjSelected.setSelected(true);\n\t\t\tfor (String toolTitle :Settings.get().getShowTools()) {\n\t\t\t\tfor (Tool tool : tools) {\n\t\t\t\t\tif (tool.getTitle().equals(toolTitle)) {\n\t\t\t\t\t\ttool.setSelected(true);\n\t\t\t\t\t\tmodel.addElement(tool);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tsetEnabled(!Settings.get().isSaveToolsOnExit());\n\t}\n\n\tprivate void setEnabled(boolean b) {\n\t\tjTools.setEnabled(b);\n\t\tjToolsLabel.setEnabled(b);\n\t\tfor (Tool tool : tools) {\n\t\t\ttool.setEnabled(b);\n\t\t}\n\t}\n\n\tprivate static class Tool implements Comparable<Tool>, Serializable {\n\t\tprivate final String title;\n\t\tprivate final JCheckBox jCheckBox;\n\n\t\tpublic Tool(String title) {\n\t\t\tthis.title = title;\n\t\t\tthis.jCheckBox = new JCheckBox(title);\n\t\t}\n\n\t\tpublic String getTitle() {\n\t\t\treturn title;\n\t\t}\n\n\t\tpublic void setSelected(boolean b) {\n\t\t\tjCheckBox.setSelected(b);\n\t\t}\n\n\t\tpublic void setEnabled(boolean b) {\n\t\t\tjCheckBox.setEnabled(b);\n\t\t}\n\n\t\tpublic boolean isSelected() {\n\t\t\treturn jCheckBox.isSelected();\n\t\t}\n\n\t\tpublic JCheckBox getCheckBox() {\n\t\t\treturn jCheckBox;\n\t\t}\n\n\t\t@Override\n\t\tpublic int compareTo(Tool o) {\n\t\t\treturn title.compareTo(o.title);\n\t\t}\n\n\t\t@Override\n\t\tpublic int hashCode() {\n\t\t\tint hash = 7;\n\t\t\thash = 83 * hash + Objects.hashCode(this.title);\n\t\t\treturn hash;\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean equals(Object obj) {\n\t\t\tif (this == obj) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (obj == null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (getClass() != obj.getClass()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfinal Tool other = (Tool) obj;\n\t\t\tif (!Objects.equals(this.title, other.title)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\treturn title;\n\t\t}\n\t}\n\n\t// @camickr already suggested above.\n\t// https://docs.oracle.com/javase/tutorial/uiswing/dnd/dropmodedemo.html\n\t@SuppressWarnings(\"serial\")\n\tpublic static class ListItemTransferHandler extends TransferHandler {\n\n\t\tprotected final DataFlavor localObjectFlavor;\n\t\tprotected int[] indices;\n\t\tprotected int addIndex = -1; // Location where items were added\n\t\tprotected int addCount; // Number of items added.\n\n\t\tpublic ListItemTransferHandler() {\n\t\t\tsuper();\n\t\t\t// localObjectFlavor = new ActivationDataFlavor(\n\t\t\t// Object[].class, DataFlavor.javaJVMLocalObjectMimeType, \"Array of items\");\n\t\t\tlocalObjectFlavor = new DataFlavor(Object[].class, \"Array of items\");\n\t\t}\n\n\t\t@Override\n\t\tprotected Transferable createTransferable(JComponent c) {\n\t\t\tJList<?> source = (JList<?>) c;\n\t\t\tc.getRootPane().getGlassPane().setVisible(true);\n\n\t\t\tindices = source.getSelectedIndices();\n\t\t\tObject[] transferedObjects = source.getSelectedValuesList().toArray(new Object[0]);\n\t\t\t// return new DataHandler(transferedObjects, localObjectFlavor.getMimeType());\n\t\t\treturn new Transferable() {\n\t\t\t\t@Override\n\t\t\t\tpublic DataFlavor[] getTransferDataFlavors() {\n\t\t\t\t\treturn new DataFlavor[]{localObjectFlavor};\n\t\t\t\t}\n\n\t\t\t\t@Override\n\t\t\t\tpublic boolean isDataFlavorSupported(DataFlavor flavor) {\n\t\t\t\t\treturn Objects.equals(localObjectFlavor, flavor);\n\t\t\t\t}\n\n\t\t\t\t@Override\n\t\t\t\tpublic Object getTransferData(DataFlavor flavor)\n\t\t\t\t\t\tthrows UnsupportedFlavorException, IOException {\n\t\t\t\t\tif (isDataFlavorSupported(flavor)) {\n\t\t\t\t\t\treturn transferedObjects;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new UnsupportedFlavorException(flavor);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean canImport(TransferSupport info) {\n\t\t\treturn info.isDrop() && info.isDataFlavorSupported(localObjectFlavor);\n\t\t}\n\n\t\t@Override\n\t\tpublic int getSourceActions(JComponent c) {\n\t\t\tComponent glassPane = c.getRootPane().getGlassPane();\n\t\t\tglassPane.setCursor(DragSource.DefaultMoveDrop);\n\t\t\treturn MOVE; // COPY_OR_MOVE;\n\t\t}\n\n\t\t@SuppressWarnings(\"unchecked\")\n\t\t@Override\n\t\tpublic boolean importData(TransferSupport info) {\n\t\t\tTransferHandler.DropLocation tdl = info.getDropLocation();\n\t\t\tif (!canImport(info) || !(tdl instanceof JList.DropLocation)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tJList.DropLocation dl = (JList.DropLocation) tdl;\n\t\t\tJList<?> target = (JList) info.getComponent();\n\t\t\tDefaultListModel<Object> listModel = (DefaultListModel) target.getModel();\n\t\t\tint max = listModel.getSize();\n\t\t\tint index = dl.getIndex();\n\t\t\tindex = index < 0 ? max : index; // If it is out of range, it is appended to the end\n\t\t\tindex = Math.min(index, max);\n\n\t\t\taddIndex = index;\n\n\t\t\ttry {\n\t\t\t\tObject[] values = (Object[]) info.getTransferable().getTransferData(localObjectFlavor);\n\t\t\t\tfor (Object value : values) {\n\t\t\t\t\tint idx = index++;\n\t\t\t\t\tlistModel.add(idx, value);\n\t\t\t\t\ttarget.addSelectionInterval(idx, idx);\n\t\t\t\t}\n\t\t\t\taddCount = values.length;\n\t\t\t\treturn true;\n\t\t\t} catch (UnsupportedFlavorException | IOException ex) {\n\t\t\t\tLOG.error(ex.getMessage(), ex);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tprotected void exportDone(JComponent c, Transferable data, int action) {\n\t\t\tc.getRootPane().getGlassPane().setVisible(false);\n\t\t\tcleanup(c, action == MOVE);\n\t\t}\n\n\t\tprivate void cleanup(JComponent c, boolean remove) {\n\t\t\tif (remove && Objects.nonNull(indices)) {\n\t\t\t\tif (addCount > 0) {\n\t\t\t\t\t// https://github.com/aterai/java-swing-tips/blob/master/DragSelectDropReordering/src/java/example/MainPanel.java\n\t\t\t\t\tfor (int i = 0; i < indices.length; i++) {\n\t\t\t\t\t\tif (indices[i] >= addIndex) {\n\t\t\t\t\t\t\tindices[i] += addCount;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tJList<?> source = (JList) c;\n\t\t\t\tDefaultListModel<?> model = (DefaultListModel) source.getModel();\n\t\t\t\tfor (int i = indices.length - 1; i >= 0; i--) {\n\t\t\t\t\tmodel.remove(indices[i]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tindices = null;\n\t\t\taddCount = 0;\n\t\t\taddIndex = -1;\n\t\t}\n\t}\n}\n\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/SoundsSettingsPanel.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.io.File;\r\nimport java.io.IOException;\r\nimport java.nio.file.Files;\r\nimport java.nio.file.Path;\r\nimport java.nio.file.Paths;\r\nimport java.util.ArrayList;\r\nimport java.util.Arrays;\r\nimport java.util.Collection;\r\nimport java.util.List;\r\nimport javax.swing.DefaultComboBoxModel;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JComboBox;\r\nimport javax.swing.JFileChooser;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JOptionPane;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JCustomFileChooser;\r\nimport net.nikr.eve.jeveasset.gui.sounds.DefaultSound;\r\nimport net.nikr.eve.jeveasset.gui.sounds.Sound;\r\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\r\nimport net.nikr.eve.jeveasset.gui.sounds.SoundPlayer;\r\nimport net.nikr.eve.jeveasset.io.local.SoundFinder;\r\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\r\n\r\n\r\npublic class SoundsSettingsPanel extends JSettingsPanel {\r\n\r\n\tprivate enum SoundsSettingsAction {\r\n\t\tDELETE, ADD\r\n\t}\r\n\r\n\tpublic static enum SoundOption {\r\n\t\tOUTBID_UPDATE_COMPLETED() {\r\n\t\t\t@Override\r\n\t\t\tpublic String getText() {\r\n\t\t\t\treturn DialoguesSettings.get().soundsOutbidUpdateCompleted();\r\n\t\t\t}\r\n\t\t},\r\n\t\tOUTBID_UPDATE_AVAILABLE() {\r\n\t\t\t@Override\r\n\t\t\tpublic String getText() {\r\n\t\t\t\treturn DialoguesSettings.get().soundsOutbidUpdateAvailable();\r\n\t\t\t}\r\n\t\t},\r\n\t\tINDUSTRY_JOB_COMPLETED() {\r\n\t\t\t@Override\r\n\t\t\tpublic String getText() {\r\n\t\t\t\treturn DialoguesSettings.get().soundsIndustryJobCompleted();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t@Override\r\n\t\tpublic String toString() {\r\n\t\t\treturn getText();\r\n\t\t}\r\n\r\n\t\tpublic abstract String getText();\r\n\t}\r\n\r\n\tprivate static final int COMBOBOX_SIZE = 160;\r\n\tprivate static final List<Sound> DEFAULT_SOUNDS = Arrays.asList(DefaultSound.values());\r\n\r\n\tprivate final JCustomFileChooser jFileChooser;\r\n\tprivate final JComboBox<Sound> jUserSounds;\r\n\tprivate final JButton jDelete;\r\n\tprivate final JButton jPlay;\r\n\tprivate final JButton jStop;\r\n\tprivate final List<SoundPanel> soundPanels = new ArrayList<>();\r\n\r\n\tprivate Sound playing = null;\r\n\r\n\tpublic SoundsSettingsPanel(final Program program, final SettingsDialog settingsDialog) {\r\n\t\tsuper(program, settingsDialog, DialoguesSettings.get().sounds(), Images.MISC_SOUNDS.getIcon());\r\n\r\n\t\tListenerClass listener = new ListenerClass();\r\n\r\n\t\tjFileChooser = new JCustomFileChooser(\"mp3\");\r\n\t\tjFileChooser.setMultiSelectionEnabled(false);\r\n\t\tjFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);\r\n\r\n\t\tjUserSounds = new JComboBox<>();\r\n\r\n\t\tJButton jAdd = new JButton(DialoguesSettings.get().soundsMp3Add(), Images.EDIT_ADD.getIcon());\r\n\t\tjAdd.setActionCommand(SoundsSettingsAction.ADD.name());\r\n\t\tjAdd.addActionListener(listener);\r\n\r\n\t\tjDelete = new JButton(Images.EDIT_DELETE.getIcon());\r\n\t\tjDelete.setActionCommand(SoundsSettingsAction.DELETE.name());\r\n\t\tjDelete.addActionListener(listener);\r\n\r\n\t\tjPlay = new JButton(Images.MISC_PLAY.getIcon());\r\n\t\tjPlay.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tplay();\r\n\t\t\t}\r\n\t\t});\r\n\t\tjStop = new JButton(Images.MISC_STOP.getIcon());\r\n\t\tjStop.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tstopAll();\r\n\t\t\t}\r\n\t\t});\r\n\t\tfor (SoundOption option : SoundOption.values()) {\r\n\t\t\tsoundPanels.add(new SoundPanel(option));\r\n\t\t}\r\n\r\n\t\tGroupLayout.ParallelGroup horizontalLabels = layout.createParallelGroup(GroupLayout.Alignment.LEADING);\r\n\t\tGroupLayout.ParallelGroup horizontalComboBoxs = layout.createParallelGroup(GroupLayout.Alignment.LEADING);\r\n\t\tGroupLayout.ParallelGroup horizontalPlays = layout.createParallelGroup(GroupLayout.Alignment.LEADING);\r\n\t\tGroupLayout.ParallelGroup horizontalStops = layout.createParallelGroup(GroupLayout.Alignment.LEADING);\r\n\t\tGroupLayout.SequentialGroup verticalGroup = layout.createSequentialGroup();\r\n\r\n\t\thorizontalLabels.addGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(jAdd)\r\n\t\t\t\t.addComponent(jDelete, Program.getIconButtonsWidth(), Program.getIconButtonsWidth(), Program.getIconButtonsWidth())\r\n\t\t);\r\n\t\thorizontalComboBoxs.addComponent(jUserSounds, COMBOBOX_SIZE, COMBOBOX_SIZE, COMBOBOX_SIZE);\r\n\t\thorizontalPlays.addComponent(jPlay, Program.getIconButtonsWidth(), Program.getIconButtonsWidth(), Program.getIconButtonsWidth());\r\n\t\thorizontalStops.addComponent(jStop, Program.getIconButtonsWidth(), Program.getIconButtonsWidth(), Program.getIconButtonsWidth());\r\n\r\n\t\tverticalGroup.addGroup(\r\n\t\t\tlayout.createParallelGroup()\r\n\t\t\t\t.addComponent(jDelete, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jAdd, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jUserSounds, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jPlay, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jStop, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t);\r\n\t\tfor (SoundPanel panel : soundPanels) {\r\n\t\t\thorizontalLabels.addComponent(panel.jLabel);\r\n\t\t\thorizontalComboBoxs.addComponent(panel.jComboBox, COMBOBOX_SIZE, COMBOBOX_SIZE, COMBOBOX_SIZE);\r\n\t\t\thorizontalPlays.addComponent(panel.jPlay, Program.getIconButtonsWidth(), Program.getIconButtonsWidth(), Program.getIconButtonsWidth());\r\n\t\t\thorizontalStops.addComponent(panel.jStop, Program.getIconButtonsWidth(), Program.getIconButtonsWidth(), Program.getIconButtonsWidth());\r\n\t\t\tverticalGroup.addGroup(\r\n\t\t\t\tlayout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(panel.jLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(panel.jComboBox, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(panel.jPlay, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(panel.jStop, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t);\r\n\t\t}\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addGroup(horizontalLabels)\r\n\t\t\t\t.addGroup(horizontalComboBoxs)\r\n\t\t\t\t.addGroup(horizontalPlays)\r\n\t\t\t\t.addGroup(horizontalStops)\r\n\t\t\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(verticalGroup);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic UpdateType save() {\r\n\t\tfor (SoundPanel panel : soundPanels) {\r\n\t\t\tpanel.save();\r\n\t\t}\r\n\t\tstopAll();\r\n\t\treturn UpdateType.NONE;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void load() {\r\n\t\tupdateSoundOptions();\r\n\t\tfor (SoundPanel panel : soundPanels) {\r\n\t\t\tpanel.load();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void updateSoundOptions() {\r\n\t\tList<Sound> userSounds = SoundFinder.load();\r\n\t\tList<Sound> sounds = new ArrayList<>();\r\n\t\tsounds.addAll(DEFAULT_SOUNDS);\r\n\t\tsounds.addAll(userSounds);\r\n\t\tSound[] arrSounds = toArray(sounds);\r\n\t\tfor (SoundPanel panel : soundPanels) {\r\n\t\t\tpanel.updateSoundOptions(arrSounds);\r\n\t\t}\r\n\t\tif (userSounds.isEmpty()) {\r\n\t\t\tjUserSounds.getModel().setSelectedItem(DialoguesSettings.get().soundsMp3NoFilesAdded());\r\n\t\t\tjUserSounds.setEnabled(false);\r\n\t\t\tjDelete.setEnabled(false);\r\n\t\t\tjPlay.setEnabled(false);\r\n\t\t\tjStop.setEnabled(false);\r\n\t\t} else {\r\n\t\t\tjUserSounds.setModel(new DefaultComboBoxModel<>(toArray(userSounds)));\r\n\t\t\tjUserSounds.setEnabled(true);\r\n\t\t\tjDelete.setEnabled(true);\r\n\t\t\tjPlay.setEnabled(true);\r\n\t\t\tjStop.setEnabled(true);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void stopAll() {\r\n\t\tSoundPlayer.stop(playing);\r\n\t\tfor (SoundPanel panel : soundPanels) {\r\n\t\t\tpanel.stop();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void play() {\r\n\t\tstopAll();\r\n\t\tplaying = jUserSounds.getItemAt(jUserSounds.getSelectedIndex());\r\n\t\tSoundPlayer.play(playing);\r\n\t}\r\n\r\n\tprivate Sound[] toArray(Collection<Sound> c) {\r\n\t\tSound[] arr = new Sound[c.size()];\r\n\t\tc.toArray(arr);\r\n\t\treturn arr;\r\n\t}\r\n\r\n\tprivate class SoundPanel {\r\n\t\tprivate final SoundOption option;\r\n\t\tprivate final JLabel jLabel;\r\n\t\tprivate final JComboBox<Sound> jComboBox;\r\n\t\tprivate final JButton jPlay;\r\n\t\tprivate final JButton jStop;\r\n\t\tprivate Sound playing = null;\r\n\r\n\t\tpublic SoundPanel(SoundOption key) {\r\n\t\t\tthis.option = key;\r\n\t\t\tjLabel = new JLabel(key.getText());\r\n\t\t\tjComboBox = new JComboBox<>();\r\n\t\t\tjPlay = new JButton(Images.MISC_PLAY.getIcon());\r\n\t\t\tjPlay.addActionListener(new ActionListener() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\t\tplay();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tjStop = new JButton(Images.MISC_STOP.getIcon());\r\n\t\t\tjStop.addActionListener(new ActionListener() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\t\tstopAll();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tpublic void updateSoundOptions(Sound[] options) {\r\n\t\t\tObject selected = jComboBox.getSelectedItem();\r\n\t\t\tjComboBox.setModel(new DefaultComboBoxModel<>(options));\r\n\t\t\tjComboBox.setSelectedItem(selected);\r\n\t\t}\r\n\r\n\t\tpublic void save() {\r\n\t\t\tSound sound = jComboBox.getItemAt(jComboBox.getSelectedIndex());\r\n\t\t\tSettings.get().getSoundSettings().put(option, sound);\r\n\t\t}\r\n\r\n\t\tpublic void load() {\r\n\t\t\tSound sound = Settings.get().getSoundSettings().get(option);\r\n\t\t\tif (sound == null) {\r\n\t\t\t\tjComboBox.setSelectedIndex(0);\r\n\t\t\t} else {\r\n\t\t\t\tjComboBox.setSelectedItem(sound);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate void play() {\r\n\t\t\tstopAll();\r\n\t\t\tplaying = jComboBox.getItemAt(jComboBox.getSelectedIndex());\r\n\t\t\tSoundPlayer.play(playing);\r\n\t\t}\r\n\r\n\t\tprivate void stop() {\r\n\t\t\tSoundPlayer.stop(playing);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener {\r\n\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\tif (SoundsSettingsAction.ADD.name().equals(e.getActionCommand())) {\r\n\t\t\t\tint returnValue = jFileChooser.showOpenDialog(parent);\r\n\t\t\t\tif (returnValue != JCustomFileChooser.APPROVE_OPTION) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tFile fromFile = jFileChooser.getSelectedFile();\r\n\t\t\t\tFile toFile = new File(FileUtil.getPathSounds(fromFile.getName()));\r\n\t\t\t\tif (toFile.exists()) {\r\n\t\t\t\t\tJOptionPane.showMessageDialog(parent, DialoguesSettings.get().soundsMp3ImportExist(), DialoguesSettings.get().soundsMp3ImportTitle(), JOptionPane.PLAIN_MESSAGE);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tPath from = Paths.get(fromFile.getAbsolutePath());\r\n\t\t\t\tPath to = Paths.get(toFile.getAbsolutePath());\r\n\t\t\t\ttry {\r\n\t\t\t\t\tFiles.copy(from, to);\r\n\t\t\t\t\tupdateSoundOptions();\r\n\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\tJOptionPane.showMessageDialog(parent, DialoguesSettings.get().soundsMp3ImportCopy(), DialoguesSettings.get().soundsMp3ImportTitle(), JOptionPane.PLAIN_MESSAGE);\r\n\t\t\t\t}\r\n\t\t\t} else if (SoundsSettingsAction.DELETE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tSound sound = jUserSounds.getItemAt(jUserSounds.getSelectedIndex());\r\n\t\t\t\tint returnValue = JOptionPane.showConfirmDialog(parent, DialoguesSettings.get().soundsMp3DeleteMsg(sound.getID()), DialoguesSettings.get().soundsMp3DeleteTitle(), JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);\r\n\t\t\t\tif (returnValue != JOptionPane.OK_OPTION) {\r\n\t\t\t\t\treturn; //Cancelled\r\n\t\t\t\t}\r\n\t\t\t\tFile file = new File(FileUtil.getPathSounds(sound.getID()));\r\n\t\t\t\tfile.delete();\r\n\t\t\t\tupdateSoundOptions();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/StockpileToolSettingsPanel.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\n\nimport java.awt.Color;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.FocusEvent;\nimport java.awt.event.FocusListener;\nimport java.awt.event.MouseAdapter;\nimport java.awt.event.MouseEvent;\nimport java.text.DecimalFormat;\nimport java.text.DecimalFormatSymbols;\nimport java.util.Locale;\nimport javax.swing.BorderFactory;\nimport javax.swing.ButtonGroup;\nimport javax.swing.GroupLayout;\nimport javax.swing.JCheckBox;\nimport javax.swing.JFormattedTextField;\nimport javax.swing.JLabel;\nimport javax.swing.JRadioButton;\nimport javax.swing.SwingUtilities;\nimport javax.swing.text.JTextComponent;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\n\n\npublic class StockpileToolSettingsPanel extends JSettingsPanel {\n\n\tprivate final JCheckBox jSwitchTab;\n\tprivate final JRadioButton jTwoGroups;\n\tprivate final JRadioButton jThreeGroups;\n\tprivate final JFormattedTextField jGroup2;\n\tprivate final JFormattedTextField jGroup3;\n\tprivate final JLabel jGroup1Label;\n\tprivate final JLabel jGroup2Label;\n\tprivate final JLabel jGroup3Label;\n\n\tpublic StockpileToolSettingsPanel(final Program program, final SettingsDialog settingsDialog) {\n\t\tsuper(program, settingsDialog, DialoguesSettings.get().stockpile(), Images.TOOL_STOCKPILE.getIcon());\n\n\t\tjSwitchTab = new JCheckBox(DialoguesSettings.get().stockpileSwitchTab());\n\n\t\tButtonGroup group = new ButtonGroup();\n\n\t\tjTwoGroups = new JRadioButton(DialoguesSettings.get().stockpileTwoGroups());\n\t\tjTwoGroups.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tuseTwoGroups();\n\t\t\t}\n\t\t});\n\t\tgroup.add(jTwoGroups);\n\n\t\tjThreeGroups = new JRadioButton(DialoguesSettings.get().stockpileThreeGroups());\n\t\tjThreeGroups.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tuseThreeGroups();\n\t\t\t}\n\t\t});\n\t\tgroup.add(jThreeGroups);\n\n\t\tJLabel jColors = new JLabel(DialoguesSettings.get().stockpileColors());\n\n\t\tjGroup1Label = new JLabel();\n\t\tjGroup1Label.setOpaque(true);\n\t\tjGroup1Label.setHorizontalAlignment(JLabel.CENTER);\n\t\tColorSettings.config(jGroup1Label, ColorEntry.STOCKPILE_TABLE_BELOW_THRESHOLD);\n\t\tjGroup1Label.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));\n\n\t\tjGroup2 = new JFormattedTextField(new DecimalFormat(\"##0\", new DecimalFormatSymbols(Locale.ENGLISH)) );\n\t\tjGroup2.setOpaque(true);\n\t\tjGroup2.setHorizontalAlignment(JLabel.TRAILING);\n\t\tjGroup2.addFocusListener(new FocusListener() {\n\t\t\t@Override\n\t\t\tpublic void focusGained(FocusEvent e) {\n\t\t\t\tvalidate();\n\t\t\t\tSwingUtilities.invokeLater(new Runnable() {\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic void run() {\n\t\t\t\t\t\tjGroup2.selectAll();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t@Override\n\t\t\tpublic void focusLost(FocusEvent e) {\n\t\t\t\tvalidate();\n\t\t\t}\n\t\t});\n\n\t\tjGroup2Label = new JLabel();\n\t\tjGroup2Label.setOpaque(true);\n\t\tjGroup2Label.setHorizontalAlignment(JLabel.LEADING);\n\t\tjGroup2Label.setBorder(BorderFactory.createMatteBorder(1, 0, 1, 1, Color.BLACK));\n\t\tjGroup2Label.addMouseListener(new MouseAdapter() {\n\t\t\t@Override\n\t\t\tpublic void mousePressed(MouseEvent e) {\n\t\t\t\tjGroup2.requestFocusInWindow();\n\t\t\t}\n\t\t});\n\n\t\tjGroup3 = new JFormattedTextField(new DecimalFormat(\"##0\", new DecimalFormatSymbols(Locale.ENGLISH)) );\n\t\tjGroup3.setOpaque(true);\n\t\tjGroup3.setHorizontalAlignment(JLabel.TRAILING);\n\t\tjGroup3.addFocusListener(new FocusListener() {\n\t\t\t@Override\n\t\t\tpublic void focusGained(FocusEvent e) {\n\t\t\t\tvalidate();\n\t\t\t\tSwingUtilities.invokeLater(new Runnable() {\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic void run() {\n\t\t\t\t\t\tjGroup3.selectAll();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t@Override\n\t\t\tpublic void focusLost(FocusEvent e) {\n\t\t\t\tvalidate();\n\t\t\t}\n\t\t});\n\n\t\tjGroup3Label = new JLabel();\n\t\tjGroup3Label.setOpaque(true);\n\t\tjGroup3Label.setHorizontalAlignment(JLabel.LEADING);\n\t\tjGroup3Label.setBorder(BorderFactory.createMatteBorder(1, 0, 1, 1, Color.BLACK));\n\t\tjGroup3Label.addMouseListener(new MouseAdapter() {\n\t\t\t@Override\n\t\t\tpublic void mousePressed(MouseEvent e) {\n\t\t\t\tif (jGroup3.isEnabled()) {\n\t\t\t\t\tjGroup3.requestFocusInWindow();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\n\t\tjTwoGroups.setSelected(true);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t.addComponent(jSwitchTab)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t\t.addComponent(jColors)\n\t\t\t\t\t\t.addComponent(jGroup1Label, 70, 70, Integer.MAX_VALUE)\n\t\t\t\t\t)\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t\t.addComponent(jTwoGroups)\n\t\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t\t.addComponent(jGroup2, 35, 35, Integer.MAX_VALUE)\n\t\t\t\t\t\t\t.addGap(0)\n\t\t\t\t\t\t\t.addComponent(jGroup2Label, 35, 35, Integer.MAX_VALUE)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t\t.addComponent(jThreeGroups)\n\t\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t\t.addComponent(jGroup3, 35, 35, Integer.MAX_VALUE)\n\t\t\t\t\t\t\t.addGap(0)\n\t\t\t\t\t\t\t.addComponent(jGroup3Label, 35, 35, Integer.MAX_VALUE)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jSwitchTab, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addGap(20)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jColors, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jTwoGroups, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jThreeGroups, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jGroup1Label, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jGroup2, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jGroup2Label, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jGroup3, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jGroup3Label, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t);\n\t}\n\n\t@Override\n\tpublic UpdateType save() {\n\t\tint group2 = getNumber(jGroup2);\n\t\tint group3 = getNumber(jGroup3);\n\t\tboolean repaint = Settings.get().isStockpileHalfColors() != jThreeGroups.isSelected()\n\t\t\t\t|| group2 != Settings.get().getStockpileColorGroup2()\n\t\t\t\t|| group3 != Settings.get().getStockpileColorGroup3();\n\t\tSettings.get().setStockpileColorGroup2(group2);\n\t\tSettings.get().setStockpileFocusTab(jSwitchTab.isSelected());\n\t\tSettings.get().setStockpileHalfColors(jThreeGroups.isSelected());\n\t\tSettings.get().setStockpileColorGroup3(group3);\n\t\treturn repaint ? UpdateType.REPAINT_STOCKPILE_TABLE : UpdateType.NONE;\n\t}\n\n\t@Override\n\tpublic void load() {\n\t\tjSwitchTab.setSelected(Settings.get().isStockpileFocusTab());\n\t\tint group1 = Settings.get().getStockpileColorGroup2();\n\t\tint group2 = Settings.get().getStockpileColorGroup3();\n\t\tif (Settings.get().isStockpileHalfColors()) {\n\t\t\tjThreeGroups.setSelected(true);\n\t\t\tif (group1 > 0) {\n\t\t\t\tjGroup2.setText(String.valueOf(group1));\n\t\t\t} else {\n\t\t\t\tjGroup2.setText(\"50\");\n\t\t\t}\n\t\t\tif (group2 > 0) {\n\t\t\t\tjGroup3.setText(String.valueOf(group2));\n\t\t\t} else {\n\t\t\t\tjGroup3.setText(\"100\");\n\t\t\t}\n\t\t\tuseThreeGroups();\n\t\t} else {\n\t\t\tjTwoGroups.setSelected(true);\n\t\t\tif (group1 > 0) {\n\t\t\t\tjGroup2.setText(String.valueOf(group1));\n\t\t\t} else {\n\t\t\t\tjGroup2.setText(\"100\");\n\t\t\t}\n\t\t\tuseTwoGroups();\n\t\t}\n\t\tvalidate();\n\t}\n\n\tprivate void validate() {\n\t\tint group2 = getNumber(jGroup2);\n\t\tif (group2 <= 0) {\n\t\t\tgroup2 = 1;\n\t\t\tjGroup2.setText(\"1\");\n\t\t}\n\t\tjGroup1Label.setText(\"0-\" + jGroup2.getText() + DialoguesSettings.get().percentSymbol());\n\t\tif (jGroup3.isEnabled()) {\n\t\t\tint group3 = getNumber(jGroup3);\n\t\t\tif (group2 >= group3) {\n\t\t\t\tjGroup3.setText(String.valueOf(group2 + 1));\n\t\t\t}\n\t\t\tjGroup2Label.setText(\"-\" + jGroup3.getText() + DialoguesSettings.get().percentSymbol());\n\t\t\tjGroup3Label.setText(DialoguesSettings.get().percentPlusSymbol());\n\t\t} else {\n\t\t\tjGroup3Label.setText(\"\");\n\t\t\tjGroup2Label.setText(DialoguesSettings.get().percentPlusSymbol());\n\t\t}\n\t}\n\n\tprivate void useTwoGroups() {\n\t\tColorSettings.config(jGroup2Label, ColorEntry.STOCKPILE_ICON_OVER_THRESHOLD);\n\t\tjGroup3Label.setBackground(Color.LIGHT_GRAY);\n\t\tjGroup3.setText(\"\");\n\t\tjGroup3.setEnabled(false);\n\t\tjGroup2.requestFocusInWindow();\n\t}\n\tprivate void useThreeGroups() {\n\t\tColorSettings.config(jGroup2Label, ColorEntry.STOCKPILE_TABLE_BELOW_THRESHOLD_2ND);\n\t\tColorSettings.config(jGroup3Label, ColorEntry.STOCKPILE_ICON_OVER_THRESHOLD);\n\t\tjGroup3.setEnabled(true);\n\t\tjGroup2.requestFocusInWindow();\n\t}\n\n\tprivate int getNumber(JTextComponent jText) {\n\t\tint number;\n\t\ttry {\n\t\t\tnumber = Integer.valueOf(jText.getText());\n\t\t} catch (NumberFormatException ex) {\n\t\t\tnumber = 0;\n\t\t}\n\t\treturn number;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/TagsSettingsPanel.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\r\n\r\nimport ca.odell.glazedlists.GlazedLists;\r\nimport java.awt.Component;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.util.ArrayList;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Set;\r\nimport java.util.TreeSet;\r\nimport javax.swing.DefaultListModel;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JList;\r\nimport javax.swing.JScrollPane;\r\nimport javax.swing.ListCellRenderer;\r\nimport javax.swing.ListSelectionModel;\r\nimport javax.swing.event.ListSelectionEvent;\r\nimport javax.swing.event.ListSelectionListener;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.data.settings.tag.Tag;\r\nimport net.nikr.eve.jeveasset.data.settings.tag.TagID;\r\nimport net.nikr.eve.jeveasset.data.settings.tag.Tags;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JTagsDialog;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\npublic class TagsSettingsPanel extends JSettingsPanel {\r\n\r\n\tprivate enum TagsSettingsAction {\r\n\t\tEDIT, DELETE, ADD\r\n\t}\r\n\r\n\t//GUI\r\n\tprivate final JList<Tag> jTags;\r\n\tprivate final JButton jEdit;\r\n\tprivate final JButton jDelete;\r\n\tprivate final DefaultListModel<Tag> listModel;\r\n\tprivate final JTagsDialog jTagsDialog;\r\n\r\n\t//Date\r\n\tprivate final List<TagTask> tasks = new ArrayList<>();\r\n\tprivate final Set<String> currentTags = new HashSet<>();\r\n\r\n\tpublic TagsSettingsPanel(Program program, SettingsDialog settingsDialog) {\r\n\t\tsuper(program, settingsDialog, GuiShared.get().tags(), Images.TAG_GRAY.getIcon());\r\n\r\n\t\tListenerClass listener = new ListenerClass();\r\n\r\n\t\tjTagsDialog = new JTagsDialog(program);\r\n\r\n\t\tlistModel = new DefaultListModel<>();\r\n\r\n\t\tjTags = new JList<>(listModel);\r\n\t\tjTags.setCellRenderer(new TagListCellRenderer(jTags.getCellRenderer()));\r\n\t\tjTags.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r\n\t\tjTags.addListSelectionListener(listener);\r\n\r\n\t\tJButton jAdd = new JButton(GuiShared.get().add());\r\n\t\tjAdd.setActionCommand(TagsSettingsAction.ADD.name());\r\n\t\tjAdd.addActionListener(listener);\r\n\r\n\t\tjEdit = new JButton(GuiShared.get().edit());\r\n\t\tjEdit.setActionCommand(TagsSettingsAction.EDIT.name());\r\n\t\tjEdit.addActionListener(listener);\r\n\r\n\t\tjDelete = new JButton(GuiShared.get().delete());\r\n\t\tjDelete.setActionCommand(TagsSettingsAction.DELETE.name());\r\n\t\tjDelete.addActionListener(listener);\r\n\r\n\t\tJScrollPane jTagsScroll = new JScrollPane(jTags);\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(jTagsScroll, 200, 200, Integer.MAX_VALUE)\r\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t\t.addComponent(jAdd, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t\t.addComponent(jEdit, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t\t.addComponent(jDelete, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t.addComponent(jTagsScroll, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addComponent(jAdd, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jEdit, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jDelete, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic UpdateType save() {\r\n\t\tfor (TagTask task : tasks) {\r\n\t\t\ttask.runTask();\r\n\t\t}\r\n\t\treturn tasks.isEmpty() ? UpdateType.NONE : UpdateType.UPDATE_TAGS;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void load() {\r\n\t\ttasks.clear();\r\n\r\n\t\tSet<Tag> allTags = new TreeSet<>(GlazedLists.comparableComparator());\r\n\t\tallTags.addAll(Settings.get().getTags().values());\r\n\r\n\t\tcurrentTags.clear();\r\n\t\tcurrentTags.addAll(Settings.get().getTags().keySet());\r\n\r\n\t\tjTags.clearSelection();\r\n\r\n\t\tlistModel.clear();\r\n\t\tfor (Tag tag : allTags) {\r\n\t\t\tlistModel.addElement(tag);\r\n\t\t}\r\n\r\n\t\tjEdit.setEnabled(false);\r\n\t\tjDelete.setEnabled(false);\r\n\t}\r\n\r\n\tprivate int addToList(Tag tag) {\r\n\t\tboolean ok = false;\r\n\t\tint index = 0;\r\n\t\tfor (int i = index; i < listModel.size(); i++) {\r\n\t\t\tTag listTag = listModel.get(i);\r\n\t\t\tint compareTo = listTag.compareTo(tag);\r\n\t\t\tif (compareTo >= 0) {\r\n\t\t\t\tlistModel.insertElementAt(tag, i);\r\n\t\t\t\tindex = i; //Update selected index\r\n\t\t\t\tok = true;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!ok) { //Handle insert if last in list\r\n\t\t\tlistModel.addElement(tag);\r\n\t\t\tindex = listModel.size() - 1; //Update selected index\r\n\t\t}\r\n\t\treturn index;\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ListSelectionListener, ActionListener {\r\n\r\n\t\t@Override\r\n\t\tpublic void valueChanged(ListSelectionEvent e) {\r\n\t\t\tint index = jTags.getSelectedIndex();\r\n\t\t\tboolean valid = (index >= 0);\r\n\t\t\tjEdit.setEnabled(valid);\r\n\t\t\tjDelete.setEnabled(valid);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\tif (TagsSettingsAction.ADD.name().equals(e.getActionCommand())) {\r\n\t\t\t\tTag tag = jTagsDialog.show(currentTags);\r\n\t\t\t\tif (tag != null && !tag.getName().isEmpty()) {\r\n\t\t\t\t\t//Save for update (only executed if saved AKA ignored on cancel)\r\n\t\t\t\t\ttasks.add(new AddTask(tag));\r\n\t\t\t\t\t//Update List\r\n\t\t\t\t\taddToList(tag);\r\n\t\t\t\t\t//Update current tags\r\n\t\t\t\t\tcurrentTags.add(tag.getName());\r\n\t\t\t\t}\r\n\t\t\t} else if (TagsSettingsAction.EDIT.name().equals(e.getActionCommand())) {\r\n\t\t\t\tTag tag = jTags.getSelectedValue();\r\n\t\t\t\tTag editedTag = jTagsDialog.show(tag, currentTags);\r\n\t\t\t\tif (editedTag != null && !editedTag.getName().isEmpty()) {\r\n\t\t\t\t\t//Update count\r\n\t\t\t\t\teditedTag.getIDs().addAll(tag.getIDs());\r\n\t\t\t\t\t//Update current tags\r\n\t\t\t\t\tcurrentTags.remove(tag.getName());\r\n\t\t\t\t\tcurrentTags.add(editedTag.getName());\r\n\t\t\t\t\t//Remove from List\r\n\t\t\t\t\tlistModel.removeElement(tag);\r\n\t\t\t\t\t//Get original tag\r\n\t\t\t\t\tif (tag instanceof EditTag) {\r\n\t\t\t\t\t\tEditTag editTag = (EditTag) tag;\r\n\t\t\t\t\t\ttag = editTag.getTag();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//Save for update (only executed if saved AKA ignored on cancel)\r\n\t\t\t\t\ttasks.add(new EditTask(tag, editedTag));\r\n\t\t\t\t\t//Add to list\r\n\t\t\t\t\tint index = addToList(new EditTag(tag, editedTag));\r\n\t\t\t\t\t//Load selected index\r\n\t\t\t\t\tjTags.setSelectedIndex(index);\r\n\t\t\t\t}\r\n\t\t\t} else if (TagsSettingsAction.DELETE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tTag tag = jTags.getSelectedValue();\r\n\t\t\t\t//Save for update (only executed if saved AKA ignored on cancel)\r\n\t\t\t\ttasks.add(new DeleteTask(tag));\r\n\t\t\t\t//Update List\r\n\t\t\t\tlistModel.removeElement(tag);\r\n\t\t\t\t//Update current tags\r\n\t\t\t\tcurrentTags.remove(tag.getName());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate abstract static class TagTask {\r\n\t\tpublic abstract void runTask();\r\n\t}\r\n\r\n\tprivate static class EditTask extends TagTask {\r\n\t\tprivate final Tag tag;\r\n\t\tprivate final Tag editedTag;\r\n\r\n\t\tpublic EditTask(Tag tag, Tag editedTag) {\r\n\t\t\tthis.tag = tag;\r\n\t\t\tthis.editedTag = editedTag;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void runTask() {\r\n\t\t\t//Remove old\r\n\t\t\tSettings.get().getTags().remove(tag.getName());\r\n\t\t\t//Update tag\r\n\t\t\ttag.update(editedTag);\r\n\t\t\t//Add updated\r\n\t\t\tSettings.get().getTags().put(tag.getName(), tag);\r\n\t\t\t//Update tags\r\n\t\t\tfor (TagID ids : tag.getIDs()) {\r\n\t\t\t\tTags tags = Settings.get().getTags(ids);\r\n\t\t\t\ttags.updateTags();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class AddTask extends TagTask {\r\n\t\tprivate final Tag tag;\r\n\r\n\t\tpublic AddTask(Tag tag) {\r\n\t\t\tthis.tag = tag;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void runTask() {\r\n\t\t\tSettings.get().getTags().put(tag.getName(), tag);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class DeleteTask extends TagTask {\r\n\t\tprivate final Tag tag;\r\n\r\n\t\tpublic DeleteTask(Tag tag) {\r\n\t\t\tthis.tag = tag;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void runTask() {\r\n\t\t\tfor (TagID tagID : tag.getIDs()) { //Remove from all items\r\n\t\t\t\tTags tags = Settings.get().getTags(tagID);\r\n\t\t\t\ttags.remove(tag);\r\n\t\t\t}\r\n\t\t\t//Remove from settings\r\n\t\t\tSettings.get().getTags().remove(tag.getName());\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class EditTag extends Tag {\r\n\t\tprivate final Tag tag;\r\n\r\n\t\tpublic EditTag(Tag tag, Tag editedTag) {\r\n\t\t\tsuper(editedTag.getName(), editedTag.getColor());\r\n\t\t\tthis.tag = tag;\r\n\t\t\tthis.getIDs().addAll(editedTag.getIDs());\r\n\t\t}\r\n\r\n\t\tpublic Tag getTag() {\r\n\t\t\treturn tag;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class TagListCellRenderer implements ListCellRenderer<Tag> {\r\n\r\n\t\tprivate final ListCellRenderer<? super Tag> renderer;\r\n\r\n\t\tpublic TagListCellRenderer(ListCellRenderer<? super Tag> renderer) {\r\n\t\t\tthis.renderer = renderer;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic Component getListCellRendererComponent(JList<? extends Tag> list, Tag value, int index, boolean isSelected, boolean cellHasFocus) {\r\n\t\t\tJLabel jLabel = (JLabel) renderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);\r\n\t\t\tjLabel.setText(GuiShared.get().tagsName(value.getName(), value.getIDs().size()));\r\n\t\t\tjLabel.setIcon(new JTagsDialog.TagIcon(value.getColor()));\r\n\t\t\treturn jLabel;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/TrackerToolSettingsPanel.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\r\n\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JCheckBox;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\r\n\r\npublic class TrackerToolSettingsPanel extends JSettingsPanel {\r\n\r\n\tprivate final JCheckBox jUseAssetPriceForSellOrders;\r\n\r\n\tpublic TrackerToolSettingsPanel(Program program, SettingsDialog settingsDialog) {\r\n\t\tsuper(program, settingsDialog, DialoguesSettings.get().tracker(), Images.TOOL_TRACKER.getIcon());\r\n\r\n\t\tjUseAssetPriceForSellOrders = new JCheckBox(DialoguesSettings.get().useAssetPriceForSellOrders());\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t\t.addComponent(jUseAssetPriceForSellOrders)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t\t.addComponent(jUseAssetPriceForSellOrders, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic UpdateType save() {\r\n\t\tSettings.get().setTrackerUseAssetPriceForSellOrders(jUseAssetPriceForSellOrders.isSelected());\r\n\t\treturn UpdateType.NONE;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void load() {\r\n\t\tjUseAssetPriceForSellOrders.setSelected(Settings.get().isTrackerUseAssetPriceForSellOrders());\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/TransactionsToolSettingsPanel.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\r\n\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JCheckBox;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JLabelMultiline;\r\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\r\n\r\n\r\npublic class TransactionsToolSettingsPanel extends JSettingsPanel {\r\n\r\n\tprivate final JCheckBox jSaveHistory;\r\n\r\n\tpublic TransactionsToolSettingsPanel(final Program program, final SettingsDialog settingsDialog) {\r\n\t\tsuper(program, settingsDialog, DialoguesSettings.get().transactions(), Images.TOOL_TRANSACTION.getIcon());\r\n\r\n\t\tjSaveHistory = new JCheckBox(DialoguesSettings.get().transactionsSaveHistory());\r\n\r\n\t\tJLabelMultiline jSaveHistoryWarning = new JLabelMultiline(DialoguesSettings.get().saveHistoryWarning(), 2);\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t.addComponent(jSaveHistory)\r\n\t\t\t\t.addComponent(jSaveHistoryWarning, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(jSaveHistory, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jSaveHistoryWarning, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\r\n\t\t);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic UpdateType save() {\r\n\t\tSettings.get().setTransactionHistory(jSaveHistory.isSelected());\r\n\t\treturn UpdateType.NONE;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void load() {\r\n\t\tjSaveHistory.setSelected(Settings.get().isTransactionHistory());\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/UserLocationSettingsPanel.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.util.ArrayList;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport java.util.TreeSet;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JComboBox;\r\nimport javax.swing.JOptionPane;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\r\nimport net.nikr.eve.jeveasset.data.settings.Citadel;\r\nimport net.nikr.eve.jeveasset.data.settings.Citadel.CitadelSource;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.JOptionInput;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JAutoCompleteDialog;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JLabelMultiline;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.ListComboBoxModel;\r\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\nimport net.nikr.eve.jeveasset.io.online.CitadelGetter;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\n\r\n\r\npublic class UserLocationSettingsPanel extends JSettingsPanel {\r\n\r\n\tprivate enum UserListAction {\r\n\t\tDELETE, EDIT\r\n\t}\r\n\r\n\tprivate final JComboBox<MyLocation> jItems;\r\n\tprivate final JButton jEdit;\r\n\tprivate final JButton jDelete;\r\n\tprivate final JAutoCompleteDialog<MyLocation> jSystemDialog;\r\n\tprivate final Set<Long> delete = new HashSet<>();\r\n\tprivate final List<Citadel> edit = new ArrayList<>();\r\n\tprivate final Map<Long, MyLocation> citadels = new HashMap<>();\r\n\r\n\tpublic UserLocationSettingsPanel(Program program, SettingsDialog settingsDialog) {\r\n\t\tsuper(program, settingsDialog, GuiShared.get().location(), Images.LOC_LOCATIONS.getIcon());\r\n\r\n\t\tListenerClass listener = new ListenerClass();\r\n\r\n\t\tjSystemDialog = new JAutoCompleteDialog<>(program, GuiShared.get().locationRename(), settingsDialog.getDialog(), Images.LOC_LOCATIONS.getImage(), GuiShared.get().locationSystem(), true, JAutoCompleteDialog.LOCATION_OPTIONS);\r\n\r\n\t\tjItems = new JComboBox<>();\r\n\r\n\t\tjEdit = new JButton(DialoguesSettings.get().editItem());\r\n\t\tjEdit.setActionCommand(UserListAction.EDIT.name());\r\n\t\tjEdit.addActionListener(listener);\r\n\r\n\t\tjDelete = new JButton(DialoguesSettings.get().deleteItem());\r\n\t\tjDelete.setActionCommand(UserListAction.DELETE.name());\r\n\t\tjDelete.addActionListener(listener);\r\n\r\n\t\tJLabelMultiline jHelp = new JLabelMultiline(DialoguesSettings.get().locationsInstructions());\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\r\n\t\t\t\t.addComponent(jItems)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addComponent(jEdit, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t\t.addComponent(jDelete, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t)\r\n\t\t\t\t.addComponent(jHelp, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(jItems, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jEdit, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jDelete, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addComponent(jHelp, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\r\n\t\t);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic UpdateType save() {\r\n\t\tCitadelGetter.remove(delete);\r\n\t\tCitadelGetter.set(edit);\r\n\t\treturn delete.isEmpty() && edit.isEmpty() ? UpdateType.NONE : UpdateType.FULL_UPDATE;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void load() {\r\n\t\tdelete.clear();\r\n\t\tedit.clear();\r\n\t\tcitadels.clear();\r\n\t\tfor (Map.Entry<Long, Citadel> entry : CitadelGetter.getAll()) {\r\n\t\t\tif (entry.getValue().isUserLocation()) {\r\n\t\t\t\tcitadels.put(entry.getKey(), entry.getValue().toLocation());\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (citadels.isEmpty()) {\r\n\t\t\tsetEnabledAll(false);\r\n\t\t\tjItems.setModel(new ListComboBoxModel<>());\r\n\t\t\tjItems.getModel().setSelectedItem(DialoguesSettings.get().itemEmpty());\r\n\t\t} else {\r\n\t\t\tsetEnabledAll(true);\r\n\t\t\tjItems.setModel(new ListComboBoxModel<>(new ArrayList<>(new TreeSet<>(citadels.values()))));\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void updateGUI() {\r\n\t\tif (citadels.isEmpty()) {\r\n\t\t\tsetEnabledAll(false);\r\n\t\t\tjItems.setModel(new ListComboBoxModel<>());\r\n\t\t\tjItems.getModel().setSelectedItem(DialoguesSettings.get().itemEmpty());\r\n\t\t} else {\r\n\t\t\tsetEnabledAll(true);\r\n\t\t\tObject selectedItem = jItems.getSelectedItem();\r\n\t\t\tjItems.setModel(new ListComboBoxModel<>(new ArrayList<>(new TreeSet<>(citadels.values()))));\r\n\t\t\tjItems.setSelectedItem(selectedItem);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate MyLocation getSelectedItem() {\r\n\t\tObject object = jItems.getSelectedItem();\r\n\t\tif (object != null && object instanceof MyLocation) {\r\n\t\t\treturn (MyLocation)object;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate void setEnabledAll(final boolean b) {\r\n\t\tjItems.setEnabled(b);\r\n\t\tjEdit.setEnabled(b);\r\n\t\tjDelete.setEnabled(b);\r\n\t}\r\n\r\n\tpublic Long deleteLocation(MyLocation location) {\r\n\t\tif (location == null) { //Cancel\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tint value2 = JOptionPane.showConfirmDialog(program.getMainWindow().getFrame(), GuiShared.get().locationClearConfirm(location.getLocation()), GuiShared.get().locationClear(), JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);\r\n\t\tif (value2 != JOptionPane.OK_OPTION) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn location.getLocationID();\r\n\t}\r\n\r\n\r\n\tpublic Citadel editLocation(MyLocation renameLocation) {\r\n\t\tif (renameLocation == null) { //Cancel\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tString locationName;\r\n\t\tif (renameLocation.isUserLocation()) { //Input previous value\r\n\t\t\tlocationName = getLocationName(CitadelGetter.get(renameLocation.getLocationID()).getLocation());\r\n\t\t} else {\r\n\t\t\tlocationName = getLocationName(\"\");\r\n\t\t}\r\n\r\n\t\tif (locationName == null) { //Cancel\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\t//Create data for the system dialog\r\n\t\tList<MyLocation> locations = new ArrayList<>();\r\n\t\tfor (MyLocation system : StaticData.get().getLocations()) {\r\n\t\t\tif (system.isSystem()) {\r\n\t\t\t\tlocations.add(system);\r\n\t\t\t}\r\n\t\t}\r\n\t\tjSystemDialog.updateData(locations);\r\n\t\tMyLocation system;\r\n\t\tif (renameLocation.isUserLocation()) { //Input previous value\r\n\t\t\tMyLocation renameSystem = ApiIdConverter.getLocation(renameLocation.getSystemID());\r\n\t\t\tsystem = jSystemDialog.show(renameSystem);\r\n\t\t} else {\r\n\t\t\tsystem = jSystemDialog.show();\r\n\t\t}\r\n\t\tif (system == null) { //Cancel\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn new Citadel(renameLocation.getLocationID(), locationName, system.getSystemID(), true, true, CitadelSource.USER);\r\n\t}\r\n\r\n\tprivate String getLocationName(String text) {\r\n\t\ttext = (String) JOptionInput.showInputDialog(program.getMainWindow().getFrame(), GuiShared.get().locationName(), GuiShared.get().locationRename(), JOptionPane.PLAIN_MESSAGE, null, null, text);\r\n\t\tif (text == null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tif (text.isEmpty()) {\r\n\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), GuiShared.get().locationEmpty(), GuiShared.get().locationRename(), JOptionPane.WARNING_MESSAGE);\r\n\t\t\treturn getLocationName(text);\r\n\t\t}\r\n\t\treturn text;\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener {\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\tif (UserListAction.DELETE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tMyLocation location = getSelectedItem();\r\n\t\t\t\tif (location != null) {\r\n\t\t\t\t\tLong locationID = deleteLocation(location);\r\n\t\t\t\t\tif (locationID != null) {\r\n\t\t\t\t\t\tdelete.add(locationID);\r\n\t\t\t\t\t\tcitadels.remove(locationID);\r\n\t\t\t\t\t\tupdateGUI();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (UserListAction.EDIT.name().equals(e.getActionCommand())) {\r\n\t\t\t\tMyLocation location = getSelectedItem();\r\n\t\t\t\tif (location != null) {\r\n\t\t\t\t\tCitadel citadel = editLocation(location);\r\n\t\t\t\t\tif (citadel != null) {\r\n\t\t\t\t\t\tedit.add(citadel);\r\n\t\t\t\t\t\tcitadels.put(citadel.getLocationID(), citadel.toLocation());\r\n\t\t\t\t\t\tupdateGUI();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/UserNameSettingsPanel.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\n\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Map;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.UserItem;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\n\n\npublic class UserNameSettingsPanel extends JUserListPanel<Long, String> {\n\n\tpublic UserNameSettingsPanel(final Program program, final SettingsDialog optionsDialog) {\n\t\tsuper(program, optionsDialog, Images.SETTINGS_USER_NAME.getIcon(),\n\t\t\t\tDialoguesSettings.get().names(),\n\t\t\t\tDialoguesSettings.get().name(),\n\t\t\t\tDialoguesSettings.get().namesInstruction()\n\t\t\t\t);\n\t}\n\n\t@Override\n\tprotected void updateEventList(List<Long> keys) {\n\t\tprogram.updateNames(new HashSet<>(keys));\n\t}\n\n\t@Override\n\tprotected String valueOf(final String value) {\n\t\treturn value;\n\t}\n\n\t@Override\n\tprotected Map<Long, UserItem<Long, String>> getItems() {\n\t\treturn Settings.get().getUserItemNames();\n\t}\n\n\t@Override\n\tprotected void setItems(final Map<Long, UserItem<Long, String>> items) {\n\t\tSettings.get().setUserItemNames(items);\n\t}\n\n\t@Override\n\tprotected UserItem<Long, String> newUserItem(final UserItem<Long, String> userItem) {\n\t\treturn new UserName(userItem);\n\t}\n\n\tpublic static class UserName extends UserItem<Long, String> {\n\n\t\tpublic UserName(final UserItem<Long, String> userItem) {\n\t\t\tsuper(userItem);\n\t\t}\n\t\tpublic UserName(final MyAsset asset) {\n\t\t\tsuper(asset.getName(), asset.getItemID(), asset.getItem().getTypeName());\n\t\t}\n\t\tpublic UserName(final String value, final Long key, final String name) {\n\t\t\tsuper(value, key, name);\n\t\t}\n\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\treturn getValue();\n\t\t}\n\n\t\t@Override\n\t\tpublic String getValueFormatted() {\n\t\t\treturn getValue();\n\t\t}\n\n\t\t@Override\n\t\tpublic int compare(final UserItem<Long, String> o1, final UserItem<Long, String> o2) {\n\t\t\treturn o1.getValue().compareToIgnoreCase(o2.getValue());\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/UserPriceSettingsPanel.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\n\nimport java.text.DecimalFormat;\nimport java.text.DecimalFormatSymbols;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.Map;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.UserItem;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\n\n\npublic class UserPriceSettingsPanel extends JUserListPanel<Integer, Double> {\n\n\tpublic UserPriceSettingsPanel(final Program program, final SettingsDialog optionsDialog) {\n\t\tsuper(program, optionsDialog, Images.SETTINGS_USER_PRICE.getIcon(),\n\t\t\t\tDialoguesSettings.get().pricePrices(),\n\t\t\t\tDialoguesSettings.get().pricePrice(),\n\t\t\t\tDialoguesSettings.get().priceInstructions()\n\t\t\t\t);\n\t}\n\n\t@Override\n\tprotected void updateEventList(List<Integer> keys) {\n\t\tprogram.updatePrices(new HashSet<>(keys));\n\t}\n\n\t@Override\n\tprotected Map<Integer, UserItem<Integer, Double>> getItems() {\n\t\treturn Settings.get().getUserPrices();\n\t}\n\n\t@Override\n\tprotected void setItems(final Map<Integer, UserItem<Integer, Double>> items) {\n\t\tSettings.get().setUserPrices(items);\n\t}\n\n\t@Override\n\tprotected Double valueOf(final String value) {\n\t\ttry {\n\t\t\treturn Double.valueOf(value);\n\t\t} catch (NumberFormatException ex) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t@Override\n\tprotected UserItem<Integer, Double> newUserItem(final UserItem<Integer, Double> userItem) {\n\t\treturn new UserPrice(userItem);\n\t}\n\n\tpublic static class UserPrice extends UserItem<Integer, Double> {\n\n\t\tprivate final DecimalFormat simpleFormat = new DecimalFormat(\"0.##\", new DecimalFormatSymbols(Locale.ENGLISH));\n\n\t\tpublic UserPrice(final UserItem<Integer, Double> userItem) {\n\t\t\tsuper(userItem);\n\t\t}\n\n\t\tpublic UserPrice(final Double value, final Integer key, final String name) {\n\t\t\tsuper(value, key, name);\n\t\t}\n\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\treturn getName();\n\t\t}\n\n\t\t@Override\n\t\tpublic String getValueFormatted() {\n\t\t\treturn simpleFormat.format(getValue());\n\t\t}\n\n\t\t@Override\n\t\tpublic int compare(final UserItem<Integer, Double> o1, final UserItem<Integer, Double> o2) {\n\t\t\treturn o1.getName().compareToIgnoreCase(o2.getName());\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/settings/WindowSettingsPanel.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs.settings;\n\nimport java.awt.Dimension;\nimport java.awt.Point;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport javax.swing.*;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.DocumentFactory;\nimport net.nikr.eve.jeveasset.gui.shared.components.JIntegerField;\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\n\n\npublic class WindowSettingsPanel extends JSettingsPanel {\n\n\tprivate enum WindowSettingsAction {\n\t\tAUTO_SAVE, FIXED, DEFAULT\n\t}\n\n\tpublic static final int SAVE_ON_EXIT = 1;\n\tpublic static final int FLAG_SAVE_MAXIMIZED = 2;\n\tpublic static final int FLAG_SAVE_FIXED = 3;\n\n\tprivate final JRadioButton jAutoSave;\n\tprivate final JRadioButton jFixed;\n\tprivate final JTextField jWidth;\n\tprivate final JTextField jHeight;\n\tprivate final JTextField jX;\n\tprivate final JTextField jY;\n\tprivate final JCheckBox jMaximized;\n\tprivate final JCheckBox jAlwaysOnTop;\n\tprivate final JButton jDefault;\n\n\tpublic WindowSettingsPanel(final Program program, final SettingsDialog optionsDialog) {\n\t\tsuper(program, optionsDialog, DialoguesSettings.get().windowWindow(), Images.SETTINGS_WINDOW.getIcon());\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tjAutoSave = new JRadioButton(DialoguesSettings.get().windowSaveOnExit());\n\t\tjAutoSave.setActionCommand(WindowSettingsAction.AUTO_SAVE.name());\n\t\tjAutoSave.addActionListener(listener);\n\n\t\tjFixed = new JRadioButton(DialoguesSettings.get().windowFixed());\n\t\tjFixed.setActionCommand(WindowSettingsAction.FIXED.name());\n\t\tjFixed.addActionListener(listener);\n\n\t\tJLabel jWidthLabel = new JLabel(DialoguesSettings.get().windowWidth());\n\t\tjWidth = new JIntegerField(DocumentFactory.ValueFlag.POSITIVE_AND_ZERO);\n\n\t\tJLabel jHeightLabel = new JLabel(DialoguesSettings.get().windowHeight());\n\t\tjHeight = new JIntegerField(DocumentFactory.ValueFlag.POSITIVE_AND_ZERO);\n\n\t\tJLabel jXLabel = new JLabel(DialoguesSettings.get().windowX());\n\t\tjX = new JIntegerField(DocumentFactory.ValueFlag.POSITIVE_AND_ZERO);\n\n\t\tJLabel jYLabel = new JLabel(DialoguesSettings.get().windowY());\n\t\tjY = new JIntegerField(DocumentFactory.ValueFlag.POSITIVE_AND_ZERO);\n\n\t\tjMaximized = new JCheckBox(DialoguesSettings.get().windowMaximised());\n\n\t\tjAlwaysOnTop = new JCheckBox(DialoguesSettings.get().windowAlwaysOnTop());\n\n\t\tButtonGroup group = new ButtonGroup();\n\t\tgroup.add(jAutoSave);\n\t\tgroup.add(jFixed);\n\n\t\tjDefault = new JButton(\"Default\");\n\t\tjDefault.setActionCommand(WindowSettingsAction.DEFAULT.name());\n\t\tjDefault.addActionListener(listener);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t.addComponent(jAlwaysOnTop)\n\t\t\t\t.addComponent(jAutoSave)\n\t\t\t\t.addComponent(jFixed)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t\t.addComponent(jWidthLabel)\n\t\t\t\t\t\t.addComponent(jXLabel)\n\t\t\t\t\t)\n\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t\t\t.addComponent(jWidth)\n\t\t\t\t\t\t.addComponent(jX)\n\t\t\t\t\t)\n\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t\t.addComponent(jHeightLabel)\n\t\t\t\t\t\t.addComponent(jYLabel)\n\t\t\t\t\t)\n\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t\t.addComponent(jHeight)\n\t\t\t\t\t\t.addComponent(jY)\n\t\t\t\t\t\t.addComponent(jDefault)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.addComponent(jMaximized)\n\t\t);\n\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jAlwaysOnTop, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jAutoSave, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jFixed, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t.addComponent(jWidthLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jWidth, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jHeightLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jHeight, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t.addComponent(jXLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jX, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jYLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jY, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t.addComponent(jMaximized, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jDefault, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t);\n\t}\n\n\tprivate void setValuesFromSettings() {\n\t\tjWidth.setText(String.valueOf(program.getMainWindow().getFrame().getSize().width));\n\t\tjHeight.setText(String.valueOf(program.getMainWindow().getFrame().getSize().height));\n\t\tjX.setText(String.valueOf(fixValue(program.getMainWindow().getFrame().getLocation().x)));\n\t\tjY.setText(String.valueOf(fixValue(program.getMainWindow().getFrame().getLocation().y)));\n\t\tjMaximized.setSelected(program.getMainWindow().getFrame().getState() == JFrame.MAXIMIZED_BOTH);\n\t}\n\n\tprivate int fixValue(int i) {\n\t\tif (i < 0) {\n\t\t\treturn 0;\n\t\t} else {\n\t\t\treturn i;\n\t\t}\n\t}\n\n\tprivate void setValuesFromWindow() {\n\t\tjWidth.setText(String.valueOf(Settings.get().getWindowSize().width));\n\t\tjHeight.setText(String.valueOf(Settings.get().getWindowSize().height));\n\t\tjX.setText(String.valueOf(Settings.get().getWindowLocation().x));\n\t\tjY.setText(String.valueOf(Settings.get().getWindowLocation().y));\n\t\tjMaximized.setSelected(Settings.get().isWindowMaximized());\n\t}\n\n\tprivate int validate(final String s) {\n\t\tint n;\n\t\ttry {\n\t\t\tn = Integer.valueOf(s);\n\t\t} catch (NumberFormatException ex) {\n\t\t\tn = 0;\n\t\t}\n\t\tif (n < 0) {\n\t\t\tn = 0;\n\t\t}\n\t\treturn n;\n\t}\n\n\tprivate void setInputEnabled(final boolean b) {\n\t\tjWidth.setEnabled(b);\n\t\tjHeight.setEnabled(b);\n\t\tjX.setEnabled(b);\n\t\tjY.setEnabled(b);\n\t\tjMaximized.setEnabled(b);\n\t\tjDefault.setEnabled(b);\n\t}\n\n\t@Override\n\tpublic UpdateType save() {\n\t\tif (jAutoSave.isSelected()) {\n\t\t\tSettings.get().setWindowAutoSave(true);\n\t\t} else {\n\t\t\tint width = validate(jWidth.getText());\n\t\t\tint height = validate(jHeight.getText());\n\t\t\tint x = validate(jX.getText());\n\t\t\tint y = validate(jY.getText());\n\t\t\tboolean maximized = jMaximized.isSelected();\n\t\t\tDimension d = new Dimension(width, height);\n\t\t\tPoint p = new Point(x, y);\n\t\t\tboolean first = Settings.get().isWindowAutoSave();\n\t\t\tSettings.get().setWindowAutoSave(false);\n\n\t\t\t//if changed...\n\t\t\tif ((Settings.get().getWindowSize().height != d.height)\n\t\t\t\t\t|| (Settings.get().getWindowSize().width != d.width)\n\t\t\t\t\t|| (Settings.get().getWindowLocation().x != p.x)\n\t\t\t\t\t|| (Settings.get().getWindowLocation().y != p.y)\n\t\t\t\t\t|| (Settings.get().isWindowMaximized() != maximized)\n\t\t\t\t\t|| first) {\n\t\t\t\tSettings.get().setWindowSize(d);\n\t\t\t\tSettings.get().setWindowLocation(p);\n\t\t\t\tSettings.get().setWindowMaximized(maximized);\n\t\t\t\tprogram.getMainWindow().setSizeAndLocation(d, p, maximized);\n\t\t\t}\n\t\t}\n\t\tboolean alwaysOnTop = jAlwaysOnTop.isSelected();\n\t\tSettings.get().setWindowAlwaysOnTop(alwaysOnTop);\n\t\tprogram.getMainWindow().getFrame().setAlwaysOnTop(alwaysOnTop);\n\t\treturn UpdateType.NONE;\n\t}\n\n\t@Override\n\tpublic void load() {\n\t\tif (Settings.get().isWindowAutoSave()) {\n\t\t\tjAutoSave.setSelected(true);\n\t\t\tsetValuesFromSettings();\n\t\t\tsetInputEnabled(false);\n\t\t} else {\n\t\t\tjFixed.setSelected(true);\n\t\t\tsetValuesFromWindow();\n\t\t\tsetInputEnabled(true);\n\t\t}\n\t\tjAlwaysOnTop.setSelected(Settings.get().isWindowAlwaysOnTop());\n\t}\n\n\tprivate class ListenerClass implements ActionListener {\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (WindowSettingsAction.AUTO_SAVE.name().equals(e.getActionCommand())) {\n\t\t\t\tsetInputEnabled(false);\n\t\t\t}\n\t\t\tif (WindowSettingsAction.FIXED.name().equals(e.getActionCommand())) {\n\t\t\t\tsetInputEnabled(true);\n\t\t\t}\n\t\t\tif (WindowSettingsAction.DEFAULT.name().equals(e.getActionCommand())) {\n\t\t\t\tjWidth.setText(\"800\");\n\t\t\t\tjHeight.setText(\"600\");\n\t\t\t\tjX.setText(\"0\");\n\t\t\t\tjY.setText(\"0\");\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/update/StructureUpdateDialog.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.dialogs.update;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.util.ArrayList;\r\nimport java.util.Collections;\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport java.util.Set;\r\nimport javax.swing.ButtonGroup;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JCheckBox;\r\nimport javax.swing.JComboBox;\r\nimport javax.swing.JComponent;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JOptionPane;\r\nimport javax.swing.JRadioButton;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel.UpdateType;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\nimport net.nikr.eve.jeveasset.gui.shared.Updatable;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.ListComboBoxModel;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.AssetValue;\r\nimport net.nikr.eve.jeveasset.i18n.DialoguesStructure;\r\nimport net.nikr.eve.jeveasset.i18n.DialoguesUpdate;\r\nimport net.nikr.eve.jeveasset.io.esi.EsiStructuresGetter;\r\n\r\n\r\npublic class StructureUpdateDialog extends JDialogCentered {\r\n\r\n\tprivate final JRadioButton jOwnersAll;\r\n\tprivate final JRadioButton jOwnersSingle;\r\n\tprivate final JRadioButton jLocationsAll;\r\n\tprivate final JRadioButton jLocationsOwned;\r\n\tprivate final JRadioButton jLocationsSelected;\r\n\tprivate final JCheckBox jTrackerLocations;\r\n\tprivate final JLabel jTime;\r\n\tprivate final JComboBox<EsiOwner> jOwners;\r\n\tprivate final JButton jOk;\r\n\tprivate final JButton jCancel;\r\n\r\n\tprivate final List<EsiOwner> owners = new ArrayList<>();;\r\n\tprivate Set<MyLocation> locations;\r\n\tprivate boolean minimizable;\r\n\r\n\tpublic StructureUpdateDialog(Program program) {\r\n\t\tsuper(program, DialoguesStructure.get().title(), Images.DIALOG_UPDATE.getImage());\r\n\r\n\t\tButtonGroup ownersGroup = new ButtonGroup();\r\n\r\n\t\tjOwnersAll = new JRadioButton(DialoguesStructure.get().ownersAll());\r\n\t\tjOwnersAll.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tjOwners.setEnabled(false);\r\n\t\t\t\tupdateETA();\r\n\t\t\t}\r\n\t\t});\r\n\t\townersGroup.add(jOwnersAll);\r\n\r\n\t\tjOwnersSingle = new JRadioButton(DialoguesStructure.get().ownersSingle());\r\n\t\tjOwnersSingle.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tjOwners.setEnabled(true);\r\n\t\t\t\tupdateETA();\r\n\t\t\t}\r\n\t\t});\r\n\t\townersGroup.add(jOwnersSingle);\r\n\r\n\t\tjOwners = new JComboBox<>();\r\n\t\tjOwners.setEnabled(false);\r\n\r\n\t\tButtonGroup LocationsGroup = new ButtonGroup();\r\n\r\n\t\tjLocationsAll = new JRadioButton(DialoguesStructure.get().locationsAll());\r\n\t\tjLocationsAll.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tupdateETA();\r\n\t\t\t}\r\n\t\t});\r\n\t\tLocationsGroup.add(jLocationsAll);\r\n\r\n\t\tjLocationsOwned = new JRadioButton(DialoguesStructure.get().locationsItem());\r\n\t\tjLocationsOwned.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tupdateETA();\r\n\t\t\t}\r\n\t\t});\r\n\t\tLocationsGroup.add(jLocationsOwned);\r\n\r\n\t\tjLocationsSelected = new JRadioButton(DialoguesStructure.get().locationsSelected());\r\n\t\tjLocationsSelected.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tupdateETA();\r\n\t\t\t}\r\n\t\t});\r\n\t\tLocationsGroup.add(jLocationsSelected);\r\n\r\n\t\tjTrackerLocations = new JCheckBox(DialoguesStructure.get().locationsTracker());\r\n\t\tjTrackerLocations.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tupdateETA();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tjOk = new JButton(DialoguesUpdate.get().ok());\r\n\t\tjOk.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tsave();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tjCancel = new JButton(DialoguesUpdate.get().cancel());\r\n\t\tjCancel.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tsetVisible(false);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tjTime = new JLabel();\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t\t\t.addComponent(jOwnersAll)\r\n\t\t\t\t\t\t.addComponent(jOwnersSingle)\r\n\t\t\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t\t\t.addGap(20)\r\n\t\t\t\t\t\t\t.addComponent(jOwners)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addGap(20)\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t\t\t.addComponent(jLocationsAll)\r\n\t\t\t\t\t\t.addComponent(jLocationsOwned)\r\n\t\t\t\t\t\t.addComponent(jLocationsSelected)\r\n\t\t\t\t\t\t.addComponent(jTrackerLocations)\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addComponent(jTime)\r\n\t\t\t\t\t.addGap(0, 0, Integer.MAX_VALUE)\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addComponent(jOk, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t)\r\n\t\t);\r\n\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t\t.addComponent(jOwnersAll, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t\t.addComponent(jOwnersSingle, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t\t.addComponent(jOwners, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t\t.addComponent(jLocationsAll, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t\t.addComponent(jLocationsOwned, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t\t.addComponent(jLocationsSelected, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t\t.addComponent(jTrackerLocations, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\t.addComponent(jTime, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jOk, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JComponent getDefaultFocus() {\r\n\t\treturn jOk;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JButton getDefaultButton() {\r\n\t\treturn jOk;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void windowShown() {}\r\n\r\n\t@Override\r\n\tprotected void save() {\r\n\t\tList<EsiOwner> esiOwners;\r\n\t\tif (jOwnersAll.isSelected()) {\r\n\t\t\tesiOwners = owners;\r\n\t\t} else {\r\n\t\t\tEsiOwner owner = (EsiOwner) jOwners.getSelectedItem();\r\n\t\t\tesiOwners = Collections.singletonList(owner);\r\n\t\t}\r\n\t\tList<OwnerType> ownerTypes;\r\n\t\tif (jLocationsAll.isSelected()) {\r\n\t\t\townerTypes = program.getOwnerTypes();\r\n\t\t} else {\r\n\t\t\townerTypes = null;\r\n\t\t}\r\n\t\tsetVisible(false);\r\n\t\tTaskDialog taskDialog = new TaskDialog(program,\r\n\t\t\t\tnew StructureUpdateTask(esiOwners, ownerTypes, locations, jTrackerLocations.isSelected()),\r\n\t\t\t\tesiOwners.size() > 1,\r\n\t\t\t\tfalse,\r\n\t\t\t\tfalse,\r\n\t\t\t\tminimizable ? UpdateType.STRUCTURE : null,\r\n\t\t\t\tnew TaskDialog.TasksCompleted() {\r\n\t\t\t@Override\r\n\t\t\tpublic void tasksCompleted(TaskDialog taskDialog) {\r\n\t\t\t\t//Update tracker locations\r\n\t\t\t\tAssetValue.updateData(); //Change and save tracker data\r\n\t\t\t\t//Update eventlists\r\n\t\t\t\tprogram.updateEventLists();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tpublic void show(Set<MyLocation> locations, boolean minimizable) {\r\n\t\tthis.locations = locations;\r\n\t\tthis.minimizable = minimizable;\r\n\t\tsetVisible(true);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setVisible(boolean b) {\r\n\t\tif (b) {\r\n\t\t\towners.clear();\r\n\t\t\tDate structuresNextUpdate = null;\r\n\t\t\tfor (EsiOwner esiOwner : program.getProfileManager().getEsiOwners()) {\r\n\t\t\t\tif (!esiOwner.isShowOwner() || !esiOwner.isStructures() || esiOwner.isInvalid()) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tif (esiOwner.getStructuresNextUpdate() != null && (structuresNextUpdate == null || esiOwner.getStructuresNextUpdate().after(structuresNextUpdate))) {\r\n\t\t\t\t\tstructuresNextUpdate = esiOwner.getStructuresNextUpdate();\r\n\t\t\t\t}\r\n\t\t\t\towners.add(esiOwner);\r\n\t\t\t}\r\n\t\t\tif (structuresNextUpdate == null) { //No ESI owners with structure scope\r\n\t\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), DialoguesStructure.get().invalid(), DialoguesStructure.get().title(), JOptionPane.PLAIN_MESSAGE);\r\n\t\t\t\treturn; //Do not show\r\n\t\t\t}\r\n\t\t\tif (!Updatable.isUpdatable(structuresNextUpdate)) { //Update not allowed yet...\r\n\t\t\t\tlong time = structuresNextUpdate.getTime() - Settings.getNow().getTime();\r\n\t\t\t\tString updatableIn;\r\n\t\t\t\tif (time <= 1000) { //less than 1 second\r\n\t\t\t\t\tupdatableIn = \"seconds\";\r\n\t\t\t\t} else if (time < (60 * 1000)) { //less than 1 minute\r\n\t\t\t\t\tupdatableIn = Formatter.milliseconds(time, false, true, false, true);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tupdatableIn = Formatter.milliseconds(time, false, true, true, true, true, false);\r\n\t\t\t\t}\r\n\t\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), DialoguesStructure.get().nextUpdate(updatableIn), DialoguesStructure.get().title(), JOptionPane.PLAIN_MESSAGE);\r\n\t\t\t\treturn; //Do not show\r\n\t\t\t}\r\n\t\t\tjOwners.setModel(new ListComboBoxModel<>(owners));\r\n\t\t\tjOwnersAll.setSelected(true);\r\n\t\t\tif (locations != null) {\r\n\t\t\t\tjLocationsSelected.setEnabled(true);\r\n\t\t\t\tjLocationsAll.setEnabled(false);\r\n\t\t\t\tjLocationsOwned.setEnabled(false);\r\n\t\t\t\tjTrackerLocations.setEnabled(false);\r\n\t\t\t\tjTrackerLocations.setSelected(false);\r\n\t\t\t\tjLocationsSelected.setSelected(true);\r\n\t\t\t} else {\r\n\t\t\t\tjLocationsSelected.setEnabled(false);\r\n\t\t\t\tjLocationsAll.setEnabled(true);\r\n\t\t\t\tjLocationsOwned.setEnabled(true);\r\n\t\t\t\tjLocationsAll.setSelected(true);\r\n\t\t\t\tjTrackerLocations.setEnabled(true);\r\n\t\t\t\tjTrackerLocations.setSelected(true);\r\n\t\t\t}\r\n\t\t\tupdateETA();\r\n\t\t}\r\n\t\tsuper.setVisible(b);\r\n\t}\r\n\r\n\tprivate void updateETA() {\r\n\t\tList<EsiOwner> esiOwners;\r\n\t\tif (jOwnersAll.isSelected()) {\r\n\t\t\tesiOwners = owners;\r\n\t\t} else {\r\n\t\t\tEsiOwner owner = (EsiOwner) jOwners.getSelectedItem();\r\n\t\t\tesiOwners = Collections.singletonList(owner);\r\n\t\t}\r\n\t\tList<OwnerType> ownerTypes;\r\n\t\tif (jLocationsAll.isSelected()) {\r\n\t\t\townerTypes = program.getOwnerTypes();\r\n\t\t} else {\r\n\t\t\townerTypes = null;\r\n\t\t}\r\n\t\tjTime.setText(DialoguesStructure.get().eta(EsiStructuresGetter.estimate(esiOwners, ownerTypes, locations, jTrackerLocations.isSelected())));\r\n\t}\r\n\r\n\tpublic static boolean structuresUpdatable(Program program) {\r\n\t\tboolean updatable = true;\r\n\t\tboolean structures = false;\r\n\t\tfor (EsiOwner esiOwner : program.getProfileManager().getEsiOwners()) {\r\n\t\t\tif (!esiOwner.isShowOwner() || !esiOwner.isStructures() || esiOwner.isInvalid()) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tstructures = true;\r\n\t\t\tif (esiOwner.getStructuresNextUpdate() != null\r\n\t\t\t\t\t&& !Updatable.isUpdatable(esiOwner.getStructuresNextUpdate())) {\r\n\t\t\t\tupdatable = false;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn updatable && structures;\r\n\t}\r\n\r\n\tprivate static class StructureUpdateTask extends UpdateTask {\r\n\r\n\t\tprivate final List<EsiOwner> owners;\r\n\t\tprivate final List<OwnerType> ownerTypes;\r\n\t\tprivate final Set<MyLocation> locations;\r\n\t\tprivate final boolean tracker;\r\n\r\n\t\tpublic StructureUpdateTask(List<EsiOwner> owners, List<OwnerType> ownerTypes, Set<MyLocation> locations, boolean tracker) {\r\n\t\t\tsuper(DialoguesUpdate.get().structures());\r\n\t\t\tthis.owners = new ArrayList<>(owners); //Copy, since we do this in the background it may be changed\r\n\t\t\tthis.ownerTypes = ownerTypes;\r\n\t\t\tthis.locations = locations;\r\n\t\t\tthis.tracker = tracker;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void update() {\r\n\t\t\tsetIcon(Images.MISC_ESI.getIcon());\r\n\t\t\tif (locations != null) {\r\n\t\t\t\tEsiStructuresGetter.createIDsFromLocations(locations);\r\n\t\t\t} else if (ownerTypes != null) {\r\n\t\t\t\tEsiStructuresGetter.createIDsFromOwners(ownerTypes, tracker);\r\n\t\t\t} else {\r\n\t\t\t\tEsiStructuresGetter.createIDsFromOwner();\r\n\t\t\t}\r\n\t\t\tint progress = 0;\r\n\t\t\tfor (EsiOwner owner : owners) {\r\n\t\t\t\tif (isCancelled()) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tEsiStructuresGetter esiStructuresGetter = new EsiStructuresGetter(this, owner, tracker);\r\n\t\t\t\tesiStructuresGetter.run();\r\n\t\t\t\tprogress++;\r\n\t\t\t\tsetTotalProgress(owners.size(), progress, 0, 100);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/update/TaskDialog.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs.update;\n\nimport java.awt.Font;\nimport java.awt.Window;\nimport java.awt.event.*;\nimport java.beans.PropertyChangeEvent;\nimport java.beans.PropertyChangeListener;\nimport java.util.Collections;\nimport java.util.List;\nimport javax.swing.GroupLayout;\nimport javax.swing.GroupLayout.ParallelGroup;\nimport javax.swing.GroupLayout.SequentialGroup;\nimport javax.swing.JButton;\nimport javax.swing.JDialog;\nimport javax.swing.JLabel;\nimport javax.swing.JOptionPane;\nimport javax.swing.JPanel;\nimport javax.swing.JProgressBar;\nimport javax.swing.JScrollPane;\nimport javax.swing.JTextPane;\nimport javax.swing.SwingUtilities;\nimport javax.swing.WindowConstants;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.Colors;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel.Progress;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel.UpdateType;\nimport net.nikr.eve.jeveasset.gui.shared.components.JLockWindow;\nimport net.nikr.eve.jeveasset.gui.shared.components.JLockWindow.LockWorkerAdaptor;\nimport net.nikr.eve.jeveasset.i18n.DialoguesUpdate;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\n\n\npublic class TaskDialog {\n\n\tprivate enum TaskAction {\n\t\tOK, CANCEL, MINIMIZE\n\t}\n\n\tprivate static final int WIDTH_LOG = 280;\n\n\t//GUI\n\tprivate final JDialog jWindow;\n\tprivate final JLabel jIcon;\n\tprivate final JProgressBar jProgressBar;\n\tprivate final JProgressBar jTotalProgressBar;\n\tprivate final JButton jOK;\n\tprivate final JButton jCancel;\n\tprivate final JButton jMinimize;\n\tprivate final JTextPane jErrorMessage;\n\tprivate final JLabel jErrorName;\n\tprivate final JScrollPane jErrorScroll;\n\tprivate final JLockWindow jLockWindow;\n\n\tprivate final ListenerClass listener;\n\n\tprivate final Program program;\n\n\t//Data\n\tprivate List<UpdateTask> updateTasks;\n\tprivate int index;\n\tprivate UpdateTask updateTask;\n\tprivate Progress progress;\n\tprivate final TasksCompleted completed;\n\tprivate final boolean auto;\n\n\tpublic TaskDialog(final Program program, final UpdateTask updateTask, boolean totalProgress, boolean minimized, boolean auto, UpdateType updateType, TasksCompleted completed) {\n\t\tthis(program, Collections.singletonList(updateTask), totalProgress, minimized, auto, updateType, completed);\n\t}\n\n\tpublic TaskDialog(final Program program, final List<UpdateTask> updateTasks, boolean totalProgress, boolean minimized, boolean auto, UpdateType updateType, TasksCompleted completed) {\n\t\tthis.program = program;\n\t\tthis.updateTasks = updateTasks;\n\t\tthis.completed = completed;\n\t\tthis.auto = auto;\n\n\t\tlistener = new ListenerClass();\n\n\t\tjWindow = new JDialog(program.getMainWindow().getFrame(), JDialog.DEFAULT_MODALITY_TYPE);\n\t\tjWindow.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);\n\t\tjWindow.setResizable(false);\n\t\tjWindow.addWindowListener(listener);\n\n\t\tjLockWindow = new JLockWindow(jWindow);\n\n\t\tJPanel jPanel = new JPanel();\n\n\t\tGroupLayout layout = new GroupLayout(jPanel);\n\t\tjPanel.setLayout(layout);\n\t\tlayout.setAutoCreateGaps(true);\n\t\tlayout.setAutoCreateContainerGaps(true);\n\n\t\tjWindow.add(jPanel);\n\n\t\tJLabel jUpdate = new JLabel(DialoguesUpdate.get().updating());\n\t\tjUpdate.setFont(new Font(jUpdate.getFont().getName(), Font.BOLD, 15));\n\n\t\tjMinimize = new JButton(DialoguesUpdate.get().minimize());\n\t\tjMinimize.setActionCommand(TaskAction.MINIMIZE.name());\n\t\tjMinimize.addActionListener(listener);\n\t\tjMinimize.setVisible(updateType != null);\n\t\tif (updateType != null) {\n\t\t\tprogress = program.getStatusPanel().addProgress(updateType, new StatusPanel.ProgressControl() {\n\t\t\t\t@Override\n\t\t\t\tpublic void show() {\n\t\t\t\t\tif (auto) {\n\t\t\t\t\t\treturn; //Ignore on auto\n\t\t\t\t\t}\n\t\t\t\t\tprogress.setVisible(false);\n\t\t\t\t\tSwingUtilities.invokeLater(new Runnable() {\n\t\t\t\t\t\t@Override\n\t\t\t\t\t\tpublic void run() {\n\t\t\t\t\t\t\tjWindow.setVisible(true); //Blocking - do later\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tif (progress.isDone()) {\n\t\t\t\t\t\tSwingUtilities.invokeLater(new Runnable() {\n\t\t\t\t\t\t\t@Override\n\t\t\t\t\t\t\tpublic void run() {\n\t\t\t\t\t\t\t\tdone(); //Needs to be done after showing the dialog (add to EDT queue)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@Override\n\t\t\t\tpublic void cancel() {\n\t\t\t\t\tcancelUpdate();\n\t\t\t\t}\n\t\t\t\t@Override\n\t\t\t\tpublic void setPause(boolean pause) {\n\t\t\t\t\tupdateTask.setPause(pause);\n\t\t\t\t}\n\t\t\t\t@Override\n\t\t\t\tpublic boolean isAuto() {\n\t\t\t\t\treturn auto;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tjIcon = new JLabel(new UpdateTask.EmptyIcon());\n\n\t\tjProgressBar = new JProgressBar(0, 100);\n\t\tjTotalProgressBar = new JProgressBar(0, 100);\n\t\tjTotalProgressBar.setIndeterminate(true);\n\n\t\tjOK = new JButton(DialoguesUpdate.get().ok());\n\t\tjOK.setActionCommand(TaskAction.OK.name());\n\t\tjOK.addActionListener(listener);\n\n\t\tjCancel = new JButton(DialoguesUpdate.get().cancel());\n\t\tjCancel.setActionCommand(TaskAction.CANCEL.name());\n\t\tjCancel.addActionListener(listener);\n\n\t\tjErrorName = new JLabel(\"\");\n\t\tjErrorName.setFont(new Font(jErrorName.getFont().getName(), Font.BOLD, 15));\n\t\tjErrorName.setVisible(false);\n\n\t\tjErrorMessage = new JTextPane();\n\t\tjErrorMessage.setText(\"\");\n\t\tjErrorMessage.setEditable(false);\n\t\tjErrorMessage.setFocusable(true);\n\t\tjErrorMessage.setOpaque(false);\n\t\tjErrorMessage.setBackground(Colors.COMPONENT_TRANSPARENT.getColor());\n\n\t\tjErrorScroll = new JScrollPane(jErrorMessage);\n\t\tjErrorScroll.setVisible(false);\n\n\t\tParallelGroup horizontalGroup = layout.createParallelGroup(GroupLayout.Alignment.CENTER);\n\t\thorizontalGroup.addGroup(layout.createSequentialGroup()\n\t\t\t\t.addComponent(jUpdate)\n\t\t\t\t.addGap(0, 0, Integer.MAX_VALUE)\n\t\t\t\t.addComponent(jMinimize)\n\t\t);\n\t\tint taskWidth = 230;\n\t\tfor (UpdateTask updateTaskLoop : updateTasks) {\n\t\t\thorizontalGroup.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addComponent(updateTaskLoop.getTextLabel(), 100, 100, Integer.MAX_VALUE)\n\t\t\t\t\t.addComponent(updateTaskLoop.getShowButton(), 20, 20, 20)\n\t\t\t\t\t.addGap(5)\n\t\t\t);\n\t\t\tupdateTaskLoop.addErrorListener(new ErrorListener(updateTaskLoop));\n\t\t\ttaskWidth = Math.max(taskWidth, updateTaskLoop.getWidth() + 25);\n\t\t}\n\t\thorizontalGroup.addGroup(layout.createSequentialGroup()\n\t\t\t.addComponent(jIcon, 16, 16, 16)\n\t\t\t.addGap(5)\n\t\t\t.addComponent(jProgressBar, taskWidth, taskWidth, taskWidth)\n\t\t);\n\t\tif (totalProgress) {\n\t\t\thorizontalGroup.addComponent(jTotalProgressBar);\n\t\t}\n\t\thorizontalGroup.addGroup(layout.createSequentialGroup()\n\t\t\t\t.addComponent(jOK, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t);\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addGroup(horizontalGroup)\n\t\t\t\t.addGap(5)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jErrorName)\n\t\t\t\t\t.addComponent(jErrorScroll, WIDTH_LOG, WIDTH_LOG, WIDTH_LOG)\n\t\t\t\t)\n\t\t);\n\n\t\tSequentialGroup verticalGroup = layout.createSequentialGroup();\n\t\tverticalGroup.addGroup(layout.createParallelGroup()\n\t\t\t\t.addComponent(jUpdate, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jMinimize, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t);\n\t\tfor (UpdateTask updateTaskLoop : updateTasks) {\n\t\t\tverticalGroup.addGroup(layout.createParallelGroup()\n\t\t\t\t.addComponent(updateTaskLoop.getTextLabel(), Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(updateTaskLoop.getShowButton(), Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t);\n\t\t}\n\t\tverticalGroup.addGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addComponent(jIcon, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jProgressBar, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t);\n\t\tif (totalProgress) {\n\t\t\tverticalGroup.addComponent(jTotalProgressBar, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight());\n\t\t}\n\t\tverticalGroup.addGroup(layout.createParallelGroup()\n\t\t\t\t.addComponent(jOK, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addGroup(verticalGroup)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jErrorName)\n\t\t\t\t\t.addComponent(jErrorScroll)\n\t\t\t\t)\n\t\t);\n\t\tif (!updateTasks.isEmpty()) {\n\t\t\tindex = 0;\n\t\t\tupdate();\n\t\t\tsetVisible(true, minimized);\n\t\t}\n\t}\n\n\tpublic JDialog getDialog() {\n\t\treturn jWindow;\n\t}\n\n\tprivate void update() {\n\t\tif (index < updateTasks.size()) {\n\t\t\tjOK.setEnabled(false);\n\t\t\tif (updateTask != null) { //Remove PropertyChangeListener from last updateTask\n\t\t\t\tupdateTask.removePropertyChangeListener(listener);\n\t\t\t}\n\t\t\tupdateTask = updateTasks.get(index);\n\t\t\tupdateTask.addPropertyChangeListener(listener);\n\t\t\tupdateTask.execute();\n\t\t} else { //Done\n\t\t\tjIcon.setIcon(new UpdateTask.EmptyIcon());\n\t\t\tjCancel.setEnabled(false);\n\t\t\tif (!auto && progress != null && progress.isVisible()) {\n\t\t\t\tprogress.setDone(true);\n\t\t\t} else {\n\t\t\t\tdone();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void done() {\n\t\tif (!auto || jWindow.isVisible()) {\n\t\t\tjLockWindow.show(GuiShared.get().updating(), new LockWorkerAdaptor() {\n\t\t\t\t@Override\n\t\t\t\tpublic void task() {\n\t\t\t\t\tcompleted.tasksCompleted(TaskDialog.this);\n\t\t\t\t}\n\t\t\t\t@Override\n\t\t\t\tpublic void gui() {\n\t\t\t\t\tjOK.setEnabled(true);\n\t\t\t\t\tjMinimize.setEnabled(false); //Should not minimize after completed\n\t\t\t\t}\n\t\t\t\t@Override\n\t\t\t\tpublic void hidden() {\n\t\t\t\t\tif (completed instanceof TasksCompletedAdvanced) {\n\t\t\t\t\t\t((TasksCompletedAdvanced) completed).tasksHidden(TaskDialog.this);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tJLockWindow jLockMainFrame = new JLockWindow(getTopWindow(program.getMainWindow().getFrame()));\n\t\t\tjLockMainFrame.show(GuiShared.get().updating(), new LockWorkerAdaptor() {\n\t\t\t\t@Override\n\t\t\t\tpublic void task() {\n\t\t\t\t\tcompleted.tasksCompleted(TaskDialog.this);\n\t\t\t\t}\n\t\t\t\t@Override\n\t\t\t\tpublic void gui() {\n\t\t\t\t\tsetVisible(false);\n\t\t\t\t}\n\t\t\t\t@Override\n\t\t\t\tpublic void hidden() {\n\t\t\t\t\tif (completed instanceof TasksCompletedAdvanced) {\n\t\t\t\t\t\t((TasksCompletedAdvanced) completed).tasksHidden(TaskDialog.this);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate Window getTopWindow(Window in) {\n\t\tfor (Window window : in.getOwnedWindows()) {\n\t\t\tif (window.isVisible()) {\n\t\t\t\treturn getTopWindow(window);\n\t\t\t}\n\t\t}\n\t\treturn in;\n\t}\n\n\tprivate void centerWindow() {\n\t\tjWindow.pack();\n\t\tjWindow.setLocationRelativeTo(jWindow.getParent());\n\t}\n\n\tprivate void setVisible(final boolean b) {\n\t\tsetVisible(b, false);\n\t}\n\n\tprivate void setVisible(final boolean b, boolean minimized) {\n\t\tif (b) {\n\t\t\tcenterWindow();\n\t\t\tif (minimized) {\n\t\t\t\tif (progress != null) {\n\t\t\t\t\tprogress.setVisible(true);\n\t\t\t\t}\n\t\t\t\tjWindow.setVisible(false);\n\t\t\t} else {\n\t\t\t\tif (progress != null) {\n\t\t\t\t\tprogress.setVisible(false);\n\t\t\t\t}\n\t\t\t\tjWindow.setVisible(true);\n\t\t\t}\n\t\t} else { //Memory\n\t\t\tfor (UpdateTask task : updateTasks) {\n\t\t\t\tfor (MouseListener mouseListener : task.getTextLabel().getMouseListeners()) {\n\t\t\t\t\ttask.getTextLabel().removeMouseListener(mouseListener);\n\t\t\t\t}\n\t\t\t}\n\t\t\tjWindow.removeWindowListener(listener);\n\t\t\tjOK.removeActionListener(listener);\n\t\t\tjCancel.removeActionListener(listener);\n\t\t\tjMinimize.removeActionListener(listener);\n\t\t\tupdateTask.removePropertyChangeListener(listener);\n\t\t\tfor (UpdateTask updateTaskLoop : updateTasks) {\n\t\t\t\tupdateTaskLoop.removeErrorListener();\n\t\t\t}\n\t\t\tif (progress != null) {\n\t\t\t\tprogram.getStatusPanel().removeProgress(progress);\n\t\t\t}\n\t\t\tjWindow.setVisible(false);\n\t\t}\n\t}\n\n\tprivate void cancelUpdate() {\n\t\tint cancelledIndex = index;\n\t\tindex = updateTasks.size();\n\t\tupdateTask.addWarning(\"Update\", \"Cancelled\");\n\t\tupdateTask.cancel(true);\n\t\tfor (int i = cancelledIndex; i < updateTasks.size(); i++) {\n\t\t\tupdateTasks.get(i).cancelled();\n\t\t}\n\t\tjProgressBar.setIndeterminate(false);\n\t\tjProgressBar.setValue(0);\n\t\tjIcon.setIcon(new UpdateTask.EmptyIcon());\n\t\tjMinimize.setEnabled(false); //Should not minimize after cancel\n\t}\n\n\tprivate class ListenerClass implements PropertyChangeListener, ActionListener, WindowListener {\n\n\t\t@Override\n\t\tpublic void propertyChange(final PropertyChangeEvent evt) {\n\t\t\tInteger totalProgress = updateTask.getTotalProgress();\n\t\t\tif (totalProgress != null && totalProgress > 0 && totalProgress <= 100) {\n\t\t\t\tjTotalProgressBar.setValue(totalProgress);\n\t\t\t\tjTotalProgressBar.setIndeterminate(false);\n\t\t\t} else {\n\t\t\t\tjTotalProgressBar.setIndeterminate(true);\n\t\t\t}\n\t\t\tif (progress != null) {\n\t\t\t\tif (totalProgress != null && totalProgress > 0 && totalProgress <= 100) {\n\t\t\t\t\tprogress.setValue(totalProgress);\n\t\t\t\t\tprogress.setIndeterminate(false);\n\t\t\t\t} else {\n\t\t\t\t\tprogress.setIndeterminate(true);\n\t\t\t\t}\n\t\t\t}\n\t\t\tint value = updateTask.getProgress();\n\t\t\tjIcon.setIcon(updateTask.getIcon());\n\t\t\tif (value == 100 && updateTask.isTaskDone()) {\n\t\t\t\tupdateTask.setTaskDone(false);\n\t\t\t\tjProgressBar.setValue(100);\n\t\t\t\tjProgressBar.setIndeterminate(false);\n\t\t\t\tindex++;\n\t\t\t\tupdate();\n\t\t\t} else if (value > 1) {\n\t\t\t\tjProgressBar.setIndeterminate(false);\n\t\t\t\tjProgressBar.setValue(value);\n\t\t\t} else {\n\t\t\t\tjProgressBar.setIndeterminate(true);\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (TaskAction.OK.name().equals(e.getActionCommand())) {\n\t\t\t\tsetVisible(false);\n\t\t\t} else if (TaskAction.CANCEL.name().equals(e.getActionCommand())) {\n\t\t\t\tcancelUpdate();\n\t\t\t} else if (TaskAction.MINIMIZE.name().equals(e.getActionCommand())) {\n\t\t\t\tprogress.setVisible(true);\n\t\t\t\tjWindow.setVisible(false);\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void windowOpened(final WindowEvent e) { }\n\n\t\t@Override\n\t\tpublic void windowClosing(final WindowEvent e) {\n\t\t\tif (index >= updateTasks.size()) {\n\t\t\t\tsetVisible(false);\n\t\t\t} else {\n\t\t\t\tint value = JOptionPane.showConfirmDialog(jWindow, DialoguesUpdate.get().cancelQuestion(), DialoguesUpdate.get().cancelQuestionTitle(), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);\n\t\t\t\tif (value == JOptionPane.YES_OPTION) {\n\t\t\t\t\tcancelUpdate();\n\t\t\t\t\tsetVisible(false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void windowClosed(final WindowEvent e) { }\n\n\t\t@Override\n\t\tpublic void windowIconified(final WindowEvent e) { }\n\n\t\t@Override\n\t\tpublic void windowDeiconified(final WindowEvent e) { }\n\n\t\t@Override\n\t\tpublic void windowActivated(final WindowEvent e) { }\n\n\t\t@Override\n\t\tpublic void windowDeactivated(final WindowEvent e) { }\n\n\t}\n\n\tpublic class ErrorListener implements MouseListener, ActionListener {\n\n\t\tprivate final UpdateTask mouseTask;\n\n\t\tpublic ErrorListener(final UpdateTask mouseTask) {\n\t\t\tthis.mouseTask = mouseTask;\n\t\t}\n\n\t\t@Override\n\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\thandleEvent();\n\t\t}\n\n\t\t@Override\n\t\tpublic void mouseClicked(final MouseEvent e) {\n\t\t\tif (e.getButton() == MouseEvent.BUTTON1) {\n\t\t\t\thandleEvent();\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void mousePressed(final MouseEvent e) { }\n\n\t\t@Override\n\t\tpublic void mouseReleased(final MouseEvent e) { }\n\n\t\t@Override\n\t\tpublic void mouseEntered(final MouseEvent e) { }\n\n\t\t@Override\n\t\tpublic void mouseExited(final MouseEvent e) { }\n\n\t\tprivate void handleEvent() {\n\t\t\tif (mouseTask.hasLog()) {\n\t\t\t\tjErrorMessage.setText(\"\");\n\t\t\t\tjErrorName.setText(\"\");\n\t\t\t\tboolean shown = mouseTask.isErrorShown();\n\t\t\t\tfor (UpdateTask task : updateTasks) {\n\t\t\t\t\ttask.showLog(false);\n\t\t\t\t}\n\t\t\t\tif (shown) {\n\t\t\t\t\tmouseTask.showLog(false);\n\t\t\t\t\tjErrorScroll.setVisible(false);\n\t\t\t\t\tjErrorName.setVisible(false);\n\t\t\t\t\tjWindow.pack();\n\t\t\t\t} else {\n\t\t\t\t\tjErrorScroll.setVisible(true);\n\t\t\t\t\tjErrorName.setVisible(true);\n\t\t\t\t\tjWindow.pack();\n\t\t\t\t\tmouseTask.showLog(true);\n\t\t\t\t\tmouseTask.insertLog(jErrorMessage);\n\t\t\t\t\tjErrorName.setText(mouseTask.getName());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static interface TasksCompleted {\n\t\tpublic void tasksCompleted(TaskDialog taskDialog);\n\t}\n\n\tpublic static interface TasksCompletedAdvanced extends TasksCompleted {\n\t\tpublic void tasksHidden(TaskDialog taskDialog);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/update/UpdateDialog.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.dialogs.update;\n\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport javax.swing.ButtonGroup;\nimport javax.swing.GroupLayout;\nimport javax.swing.GroupLayout.Alignment;\nimport javax.swing.JButton;\nimport javax.swing.JCheckBox;\nimport javax.swing.JComponent;\nimport javax.swing.JLabel;\nimport javax.swing.JRadioButton;\nimport javax.swing.JToggleButton;\nimport javax.swing.Timer;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\nimport net.nikr.eve.jeveasset.data.profile.ProfileData;\nimport net.nikr.eve.jeveasset.data.profile.ProfileManager;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\nimport net.nikr.eve.jeveasset.gui.shared.Updatable;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\nimport net.nikr.eve.jeveasset.gui.tabs.values.AssetValue;\nimport net.nikr.eve.jeveasset.i18n.DialoguesUpdate;\nimport net.nikr.eve.jeveasset.i18n.General;\nimport net.nikr.eve.jeveasset.io.esi.EsiAccountBalanceGetter;\nimport net.nikr.eve.jeveasset.io.esi.EsiAssetsGetter;\nimport net.nikr.eve.jeveasset.io.esi.EsiBlueprintsGetter;\nimport net.nikr.eve.jeveasset.io.esi.EsiClonesGetter;\nimport net.nikr.eve.jeveasset.io.esi.EsiContractItemsGetter;\nimport net.nikr.eve.jeveasset.io.esi.EsiContractsGetter;\nimport net.nikr.eve.jeveasset.io.esi.EsiDivisionsGetter;\nimport net.nikr.eve.jeveasset.io.esi.EsiFactionWarfareGetter;\nimport net.nikr.eve.jeveasset.io.esi.EsiIndustryJobsGetter;\nimport net.nikr.eve.jeveasset.io.esi.EsiJournalGetter;\nimport net.nikr.eve.jeveasset.io.esi.EsiLocationsGetter;\nimport net.nikr.eve.jeveasset.io.esi.EsiLoyaltyPointsGetter;\nimport net.nikr.eve.jeveasset.io.esi.EsiManufacturingPrices;\nimport net.nikr.eve.jeveasset.io.esi.EsiMarketOrdersGetter;\nimport net.nikr.eve.jeveasset.io.esi.EsiMiningGetter;\nimport net.nikr.eve.jeveasset.io.esi.EsiNameGetter;\nimport net.nikr.eve.jeveasset.io.esi.EsiOwnerGetter;\nimport net.nikr.eve.jeveasset.io.esi.EsiPlanetaryInteractionGetter;\nimport net.nikr.eve.jeveasset.io.esi.EsiShipGetter;\nimport net.nikr.eve.jeveasset.io.esi.EsiSkillGetter;\nimport net.nikr.eve.jeveasset.io.esi.EsiNpcStandingGetter;\nimport net.nikr.eve.jeveasset.io.esi.EsiTransactionsGetter;\nimport net.nikr.eve.jeveasset.io.online.EveImageGetter;\nimport net.nikr.eve.jeveasset.io.online.PriceDataGetter;\nimport net.nikr.eve.jeveasset.io.shared.ThreadWoker;\n\n\npublic class UpdateDialog extends JDialogCentered {\n\n\tprivate enum UpdateDialogAction {\n\t\tCANCEL, UPDATE, CHANGED, CHECK_ALL\n\t}\n\n\tpublic static enum Updates {\n\t\tMARKET_ORDERS(DialoguesUpdate.get().marketOrders()){\n\t\t\t@Override\n\t\t\tpublic boolean isEnabled(OwnerType owner) {\n\t\t\t\treturn owner.isMarketOrders();\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic Date getNextUpdate(OwnerType owner) {\n\t\t\t\treturn owner.getMarketOrdersNextUpdate();\n\t\t\t}\n\t\t},\n\t\tJOURNAL(DialoguesUpdate.get().journal()){\n\t\t\t@Override\n\t\t\tpublic boolean isEnabled(OwnerType owner) {\n\t\t\t\treturn owner.isJournal();\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic Date getNextUpdate(OwnerType owner) {\n\t\t\t\treturn owner.getJournalNextUpdate();\n\t\t\t}\n\t\t},\n\t\tTRANSACTIONS(DialoguesUpdate.get().transactions()){\n\t\t\t@Override\n\t\t\tpublic boolean isEnabled(OwnerType owner) {\n\t\t\t\treturn owner.isTransactions();\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic Date getNextUpdate(OwnerType owner) {\n\t\t\t\treturn owner.getTransactionsNextUpdate();\n\t\t\t}\n\t\t},\n\t\tINDUSTRY_JOBS(DialoguesUpdate.get().industryJobs()){\n\t\t\t@Override\n\t\t\tpublic boolean isEnabled(OwnerType owner) {\n\t\t\t\treturn owner.isIndustryJobs();\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic Date getNextUpdate(OwnerType owner) {\n\t\t\t\treturn owner.getIndustryJobsNextUpdate();\n\t\t\t}\n\t\t},\n\t\tACCOUNT_BALANCE(DialoguesUpdate.get().accountBalance()){\n\t\t\t@Override\n\t\t\tpublic boolean isEnabled(OwnerType owner) {\n\t\t\t\treturn owner.isAccountBalance();\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic Date getNextUpdate(OwnerType owner) {\n\t\t\t\treturn owner.getBalanceNextUpdate();\n\t\t\t}\n\t\t},\n\t\tCONTRACTS(DialoguesUpdate.get().contracts()){\n\t\t\t@Override\n\t\t\tpublic boolean isEnabled(OwnerType owner) {\n\t\t\t\treturn owner.isContracts();\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic Date getNextUpdate(OwnerType owner) {\n\t\t\t\treturn owner.getContractsNextUpdate();\n\t\t\t}\n\t\t},\n\t\tASSETS(DialoguesUpdate.get().assets()) {\n\t\t\t@Override\n\t\t\tpublic boolean isEnabled(OwnerType owner) {\n\t\t\t\treturn owner.isAssetList();\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic Date getNextUpdate(OwnerType owner) {\n\t\t\t\treturn owner.getAssetNextUpdate();\n\t\t\t}\n\t\t},\n\t\tBLUEPRINTS(DialoguesUpdate.get().blueprints()){\n\t\t\t@Override\n\t\t\tpublic boolean isEnabled(OwnerType owner) {\n\t\t\t\treturn owner.isBlueprints();\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic Date getNextUpdate(OwnerType owner) {\n\t\t\t\treturn owner.getBlueprintsNextUpdate();\n\t\t\t}\n\t\t},\n\t\tSKILLS(DialoguesUpdate.get().skills()){\n\t\t\t@Override\n\t\t\tpublic boolean isEnabled(OwnerType owner) {\n\t\t\t\treturn owner.isSkills();\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic Date getNextUpdate(OwnerType owner) {\n\t\t\t\treturn owner.getSkillsNextUpdate();\n\t\t\t}\n\t\t},\n\t\tLOYALTY_POINTS(DialoguesUpdate.get().loyaltyPoints()){\n\t\t\t@Override\n\t\t\tpublic boolean isEnabled(OwnerType owner) {\n\t\t\t\treturn owner.isLoyaltyPoints();\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic Date getNextUpdate(OwnerType owner) {\n\t\t\t\treturn owner.getLoyaltyPointsNextUpdate();\n\t\t\t}\n\t\t},\n\t\tNPC_STANDING(DialoguesUpdate.get().npcStanding()) {\n\t\t\t@Override\n\t\t\tpublic boolean isEnabled(OwnerType owner) {\n\t\t\t\treturn owner.isNpcStanding();\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic Date getNextUpdate(OwnerType owner) {\n\t\t\t\treturn owner.getNpcStandingNextUpdate();\n\t\t\t}\n\t\t},\n\t\tMINING(DialoguesUpdate.get().mining()){\n\t\t\t@Override\n\t\t\tpublic boolean isEnabled(OwnerType owner) {\n\t\t\t\treturn owner.isMining();\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic Date getNextUpdate(OwnerType owner) {\n\t\t\t\treturn owner.getMiningNextUpdate();\n\t\t\t}\n\t\t};\n\n\t\tprivate final String title;\n\t\tprivate UpdateUI updateUI = null;\n\t\tprivate Date first = null;\n\t\tprivate Date last = null;\n\t\tprivate Updates(String title) {\n\t\t\tthis.title = title;\n\t\t}\n\n\t\tpublic abstract boolean isEnabled(OwnerType owner);\n\t\tpublic abstract Date getNextUpdate(OwnerType owner);\n\n\t\tpublic Date getFirst() {\n\t\t\treturn first;\n\t\t}\n\n\t\tpublic Date getLast() {\n\t\t\treturn last;\n\t\t}\n\n\t\tpublic JCheckBox getCheckBox() {\n\t\t\treturn getUI().getCheckBox();\n\t\t}\n\n\t\tpublic JLabel getLeftFirst() {\n\t\t\treturn getUI().getLeftFirst();\n\t\t}\n\n\t\tpublic JLabel getLeftLast() {\n\t\t\treturn getUI().getLeftLast();\n\t\t}\n\n\t\tpublic boolean isSelected() {\n\t\t\treturn getCheckBox().isSelected();\n\t\t}\n\n\t\tpublic void setSelected(boolean b) {\n\t\t\tgetCheckBox().setSelected(b);\n\t\t}\n\n\t\tpublic void reset() {\n\t\t\tfirst = null;\n\t\t\tlast = null;\n\t\t}\n\n\t\tpublic void updateDates(OwnerType owner) {\n\t\t\tif (isEnabled(owner)) {\n\t\t\t\tfirst = updateFirst(first, getNextUpdate(owner));\n\t\t\t\tlast = updateLast(last, getNextUpdate(owner));\n\t\t\t}\n\t\t}\n\n\t\tprivate UpdateUI getUI() {\n\t\t\tif (updateUI == null) {\n\t\t\t\tupdateUI = new UpdateUI(title);\n\t\t\t}\n\t\t\treturn updateUI;\n\t\t}\n\n\t\tprivate Date updateFirst(Date nextUpdate, Date thisUpdate) {\n\t\t\tif (nextUpdate == null) { //First\n\t\t\t\tnextUpdate = thisUpdate;\n\t\t\t} else if (thisUpdate.before(nextUpdate)) {\n\t\t\t\tnextUpdate = thisUpdate;\n\t\t\t}\n\t\t\treturn nextUpdate;\n\t\t}\n\n\t\tprivate Date updateLast(Date lastUpdate, Date thisUpdate) {\n\t\t\tif (lastUpdate == null) { //First\n\t\t\t\tlastUpdate = thisUpdate;\n\t\t\t} else if (thisUpdate.after(lastUpdate)) {\n\t\t\t\tlastUpdate = thisUpdate;\n\t\t\t}\n\t\t\treturn lastUpdate;\n\t\t}\n\t}\n\n\tprivate final JCheckBox jCheckAll;\n\tprivate final JRadioButton jPriceDataAll;\n\tprivate final JRadioButton jPriceDataNew;\n\tprivate final JRadioButton jPriceDataNone;\n\tprivate final JLabel jPriceDataLeft;\n\tprivate final JButton jUpdate;\n\tprivate final JButton jCancel;\n\tprivate final Timer timer;\n\n\tpublic UpdateDialog(final Program program) {\n\t\tsuper(program, DialoguesUpdate.get().update(), Images.DIALOG_UPDATE.getImage());\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\ttimer = new Timer(1000, new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tupdate(false);\n\t\t\t}\n\t\t});\n\n\t\tjCheckAll = new JCheckBox(General.get().all());\n\t\tjCheckAll.setActionCommand(UpdateDialogAction.CHECK_ALL.name());\n\t\tjCheckAll.addActionListener(listener);\n\t\tJLabel jLeftFirst = new JLabel(DialoguesUpdate.get().firstAccount());\n\t\tJLabel jLeftLast = new JLabel(DialoguesUpdate.get().allAccounts());\n\n\t\tjPriceDataAll = new JRadioButton(DialoguesUpdate.get().priceData());\n\t\tjPriceDataAll.setActionCommand(UpdateDialogAction.CHANGED.name());\n\t\tjPriceDataAll.addActionListener(listener);\n\t\tjPriceDataNew = new JRadioButton(DialoguesUpdate.get().priceDataNew());\n\t\tjPriceDataNew.setActionCommand(UpdateDialogAction.CHANGED.name());\n\t\tjPriceDataNew.addActionListener(listener);\n\t\tjPriceDataNone = new JRadioButton(DialoguesUpdate.get().priceDataNone());\n\t\tjPriceDataNone.setActionCommand(UpdateDialogAction.CHANGED.name());\n\t\tjPriceDataNone.addActionListener(listener);\n\t\tjPriceDataLeft = new JLabel();\n\t\tButtonGroup buttonGroup = new ButtonGroup();\n\t\tbuttonGroup.add(jPriceDataAll);\n\t\tbuttonGroup.add(jPriceDataNew);\n\t\tbuttonGroup.add(jPriceDataNone);\n\n\t\tjUpdate = new JButton(DialoguesUpdate.get().update());\n\t\tjUpdate.setActionCommand(UpdateDialogAction.UPDATE.name());\n\t\tjUpdate.addActionListener(listener);\n\n\t\tjCancel = new JButton(DialoguesUpdate.get().cancel());\n\t\tjCancel.setActionCommand(UpdateDialogAction.CANCEL.name());\n\t\tjCancel.addActionListener(listener);\n\n\t\tGroupLayout.ParallelGroup horizontalCheckBox = layout.createParallelGroup();\n\t\tGroupLayout.ParallelGroup horizontalLeftFirst = layout.createParallelGroup(Alignment.TRAILING);\n\t\tGroupLayout.ParallelGroup horizontalLeftLast = layout.createParallelGroup(Alignment.TRAILING);\n\t\thorizontalCheckBox.addComponent(jCheckAll);\n\t\thorizontalLeftFirst.addComponent(jLeftFirst);\n\t\thorizontalLeftLast.addComponent(jLeftLast);\n\n\t\tGroupLayout.SequentialGroup vertical = layout.createSequentialGroup();\n\t\tvertical.addGroup(layout.createParallelGroup()\n\t\t\t\t.addComponent(jCheckAll, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jLeftFirst, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jLeftLast, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t);\n\t\t\n\t\tfor (Updates updates : Updates.values()) {\n\t\t\tJCheckBox jCheckBox = updates.getCheckBox();\n\t\t\thorizontalCheckBox.addComponent(jCheckBox);\n\t\t\thorizontalLeftFirst.addComponent(updates.getLeftFirst());\n\t\t\thorizontalLeftLast.addComponent(updates.getLeftLast());\n\t\t\tvertical.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(updates.getCheckBox(), Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(updates.getLeftFirst(), Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(updates.getLeftLast(), Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t);\n\t\t\tjCheckBox.setActionCommand(UpdateDialogAction.CHANGED.name());\n\t\t\tjCheckBox.addActionListener(listener);\n\t\t}\n\t\thorizontalLeftLast.addComponent(jPriceDataLeft);\n\n\t\tvertical.addGroup(layout.createParallelGroup()\n\t\t\t\t.addComponent(jPriceDataAll, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jPriceDataNew, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jPriceDataNone, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jPriceDataLeft, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t)\n\t\t\t.addGap(30)\n\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t.addComponent(jUpdate, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t\t.addGroup(horizontalCheckBox)\n\t\t\t\t\t\t\t.addGap(20)\n\t\t\t\t\t\t\t.addGroup(horizontalLeftFirst)\n\t\t\t\t\t\t\t.addGap(20)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t\t.addComponent(jPriceDataAll)\n\t\t\t\t\t\t\t.addGap(10)\n\t\t\t\t\t\t\t.addComponent(jPriceDataNew)\n\t\t\t\t\t\t\t.addGap(10)\n\t\t\t\t\t\t\t.addComponent(jPriceDataNone)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t.addGroup(horizontalLeftLast)\n\t\t\t\t)\n\t\t\t\t.addGroup(Alignment.TRAILING, layout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jUpdate, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t)\n\t\t);\n\t\tlayout.setVerticalGroup(vertical);\n\t}\n\n\tprivate void changed() {\n\t\tboolean allChecked = true;\n\t\tboolean someChecked = false;\n\t\tboolean allDisabled = true;\n\t\tfor (Updates updates : Updates.values()) {\n\t\t\tJCheckBox jCheckBox = updates.getCheckBox();\n\t\t\tif (jCheckBox.isEnabled()) {\n\t\t\t\tif (jCheckBox.isSelected()) {\n\t\t\t\t\tsomeChecked = true;\n\t\t\t\t} else {\n\t\t\t\t\tallChecked = false;\n\t\t\t\t}\n\t\t\t\tallDisabled = false;\n\t\t\t}\n\t\t}\n\t\tif (jPriceDataAll.isEnabled()) {\n\t\t\tif (jPriceDataAll.isSelected()) {\n\t\t\t\tsomeChecked = true;\n\t\t\t} else { //Not selected\n\t\t\t\tallChecked = false;\n\t\t\t}\n\t\t\tallDisabled = false;\n\t\t} else if (jPriceDataNew.isEnabled()) {\n\t\t\tif (!jPriceDataNew.isSelected()) {\n\t\t\t\tallChecked = false;\n\t\t\t}\n\t\t\tallDisabled = false;\n\t\t}\n\t\tjUpdate.setEnabled(someChecked);\n\t\tjCheckAll.setSelected(allChecked && !allDisabled);\n\t\tjCheckAll.setEnabled(!allDisabled);\n\t}\n\n\tprivate void update(boolean check) {\n\t\tfor (Updates updates : Updates.values()) {\n\t\t\tupdates.reset();\n\t\t}\n\t\tDate priceData = program.getPriceDataGetter().getNextUpdate();\n\t\tfor (OwnerType owner : program.getOwnerTypes()) {\n\t\t\tif (!owner.isShowOwner() || owner.isInvalid() || owner.isExpired()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfor (Updates updates : Updates.values()) {\n\t\t\t\tupdates.updateDates(owner);\n\t\t\t}\n\t\t}\n\t\tif (program.getOwnerTypes().isEmpty()) {\n\t\t\tjPriceDataNone.setSelected(true);\n\t\t\tjPriceDataNone.setEnabled(false);\n\t\t\tjPriceDataNew.setEnabled(false);\n\t\t\tjPriceDataAll.setEnabled(false);\n\t\t\tsetUpdateLabel(null, jPriceDataLeft, jPriceDataAll, null, null, check);\n\t\t} else {\n\t\t\tjPriceDataNone.setEnabled(true);\n\t\t\tjPriceDataNew.setEnabled(true);\n\t\t\tjPriceDataAll.setEnabled(true);\n\t\t\tsetUpdateLabel(null, jPriceDataLeft, jPriceDataAll, null, priceData, check);\n\t\t\tif (!jPriceDataAll.isEnabled() && jPriceDataNew.isEnabled() && !jPriceDataNone.isSelected()) {\n\t\t\t\tjPriceDataNew.setSelected(true);\n\t\t\t}\n\t\t}\n\t\tfor (Updates updates : Updates.values()) {\n\t\t\tsetUpdateLabel(updates.getLeftFirst(), updates.getLeftLast(), updates.getCheckBox(), updates.getFirst(), updates.getLast(), check);\n\t\t}\n\t\tchanged();\n\n\t}\n\n\tprivate void setUpdateLabel(final JLabel jFirst, final JLabel jLast, final JToggleButton jCheckBox, final Date first, final Date last, boolean check) {\n\t\tif (jFirst != null) {\n\t\t\tif (Updatable.isUpdatable(last)) {\n\t\t\t\tjFirst.setText(\"\");\n\t\t\t} else {\n\t\t\t\tjFirst.setText(getFormattedDuration(first));\n\t\t\t}\n\t\t\tjFirst.setEnabled(first != null);\n\t\t} else {\n\t\t}\n\t\tif (jLast != null) {\n\t\t\tjLast.setText(getFormattedDuration(last));\n\t\t\tjLast.setEnabled(last != null);\n\t\t}\n\t\tif (jCheckBox != null) {\n\t\t\tif ((Updatable.isUpdatable(first) || Updatable.isUpdatable(last))) {\n\t\t\t\tif (!jCheckBox.isEnabled()) {\n\t\t\t\t\tif (check) {\n\t\t\t\t\t\tjCheckBox.setSelected(true);\n\t\t\t\t\t}\n\t\t\t\t\tjCheckBox.setEnabled(true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tjCheckBox.setEnabled(false);\n\t\t\t\tjCheckBox.setSelected(false);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate String getFormattedDuration(Date date) {\n\t\tif (date == null) { //less than 1 second\n\t\t\treturn DialoguesUpdate.get().noAccounts();\n\t\t} else if (Updatable.isUpdatable(date)) {\n\t\t\treturn DialoguesUpdate.get().now();\n\t\t} else {\n\t\t\tlong time = date.getTime() - Settings.getNow().getTime();\n\t\t\tif (time <= 1000) { //less than 1 second\n\t\t\t\treturn \"...\";\n\t\t\t} else if (time < (60 * 1000)) { //less than 1 minute\n\t\t\t\treturn Formatter.milliseconds(time, false, false, false, true);\n\t\t\t} else {\n\t\t\t\treturn Formatter.milliseconds(time, true, true, true, false);\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tprotected JComponent getDefaultFocus() {\n\t\treturn jUpdate;\n\t}\n\n\t@Override\n\tprotected JButton getDefaultButton() {\n\t\treturn jUpdate;\n\t}\n\n\t@Override\n\tprotected void windowShown() {\n\t}\n\n\t@Override\n\tpublic void setVisible(boolean b) {\n\t\tif (b) {\n\t\t\tfor (Updates updates : Updates.values()) {\n\t\t\t\tupdates.setSelected(true);\n\t\t\t}\n\t\t\tjPriceDataAll.setSelected(true);\n\t\t\tupdate(true);\n\t\t\ttimer.start();\n\t\t} else {\n\t\t\ttimer.stop();\n\t\t}\n\t\tsuper.setVisible(b);\n\t}\n\n\t@Override\n\tprotected void save() {\n\n\t}\n\n\tprivate class ListenerClass implements ActionListener {\n\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (UpdateDialogAction.UPDATE.name().equals(e.getActionCommand())) {\n\t\t\t\tsetVisible(false);\n\t\t\t\tList<UpdateTask> updateTasks = new ArrayList<>();\n\t\t\t\tif (Updates.ASSETS.isSelected()\n\t\t\t\t\t\t|| Updates.ACCOUNT_BALANCE.isSelected()\n\t\t\t\t\t\t|| Updates.BLUEPRINTS.isSelected()\n\t\t\t\t\t\t|| Updates.CONTRACTS.isSelected()\n\t\t\t\t\t\t|| Updates.INDUSTRY_JOBS.isSelected()\n\t\t\t\t\t\t|| Updates.JOURNAL.isSelected()\n\t\t\t\t\t\t|| Updates.MARKET_ORDERS.isSelected()\n\t\t\t\t\t\t|| Updates.MINING.isSelected()\n\t\t\t\t\t\t|| Updates.TRANSACTIONS.isSelected()\n\t\t\t\t\t\t|| Updates.SKILLS.isSelected()\n\t\t\t\t\t\t|| Updates.LOYALTY_POINTS.isSelected()\n\t\t\t\t\t\t|| Updates.NPC_STANDING.isSelected()\n\t\t\t\t\t\t) {\n\t\t\t\t\tupdateTasks.add(new Step1Task(program.getProfileManager()));\n\t\t\t\t\tupdateTasks.add(new Step2Task(program.getProfileManager(),\n\t\t\t\t\t\t\tUpdates.ASSETS.isSelected(),\n\t\t\t\t\t\t\tUpdates.ACCOUNT_BALANCE.isSelected(),\n\t\t\t\t\t\t\tUpdates.BLUEPRINTS.isSelected(),\n\t\t\t\t\t\t\tUpdates.CONTRACTS.isSelected(),\n\t\t\t\t\t\t\tUpdates.INDUSTRY_JOBS.isSelected(),\n\t\t\t\t\t\t\tUpdates.JOURNAL.isSelected(),\n\t\t\t\t\t\t\tUpdates.MARKET_ORDERS.isSelected(),\n\t\t\t\t\t\t\tUpdates.MINING.isSelected(),\n\t\t\t\t\t\t\tUpdates.TRANSACTIONS.isSelected(),\n\t\t\t\t\t\t\tUpdates.SKILLS.isSelected(),\n\t\t\t\t\t\t\tUpdates.LOYALTY_POINTS.isSelected(),\n\t\t\t\t\t\t\tUpdates.NPC_STANDING.isSelected()));\n\t\t\t\t\tupdateTasks.add(new Step3Task(program.getProfileManager(), Updates.ASSETS.isSelected()));\n\t\t\t\t}\n\t\t\t\tif (Updates.CONTRACTS.isSelected()) {\n\t\t\t\t\tupdateTasks.add(new Step4Task(program.getProfileManager()));\n\t\t\t\t}\n\t\t\t\tif (jPriceDataAll.isSelected() || jPriceDataNew.isSelected()) {\n\t\t\t\t\tupdateTasks.add(new PriceDataTask(program.getPriceDataGetter(), program.getProfileData(), jPriceDataAll.isSelected()));\n\t\t\t\t}\n\t\t\t\tif (!updateTasks.isEmpty()) {\n\t\t\t\t\t//Pause structure update\n\t\t\t\t\tprogram.getStatusPanel().setPauseUpdates(true);\n\t\t\t\t\tTaskDialog taskDialog = new TaskDialog(program, updateTasks, false, false, false, null, new TaskDialog.TasksCompleted() {\n\t\t\t\t\t\t@Override\n\t\t\t\t\t\tpublic void tasksCompleted(TaskDialog taskDialog) {\n\t\t\t\t\t\t\t//Update tracker locations\n\t\t\t\t\t\t\tAssetValue.updateData();\n\t\t\t\t\t\t\t//Update eventlists\n\t\t\t\t\t\t\tprogram.updateEventLists();\n\t\t\t\t\t\t\t//Create value tracker point\n\t\t\t\t\t\t\tprogram.createTrackerDataPoint();\n\t\t\t\t\t\t\t//Save settings after updating (if we crash later)\n\t\t\t\t\t\t\tprogram.saveSettingsAndProfile(); //Save updated id<->name data\n\t\t\t\t\t\t\t//Resume structure update\n\t\t\t\t\t\t\tprogram.getStatusPanel().setPauseUpdates(false);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (UpdateDialogAction.CANCEL.name().equals(e.getActionCommand())) {\n\t\t\t\tsetVisible(false);\n\t\t\t}\n\t\t\tif (UpdateDialogAction.CHANGED.name().equals(e.getActionCommand())) {\n\t\t\t\tchanged();\n\t\t\t}\n\t\t\tif (UpdateDialogAction.CHECK_ALL.name().equals(e.getActionCommand())) {\n\t\t\t\tboolean checked = jCheckAll.isSelected();\n\t\t\t\tfor (Updates updates : Updates.values()) {\n\t\t\t\t\tJCheckBox jCheckBox = updates.getCheckBox();\n\t\t\t\t\tif (jCheckBox.isEnabled()) {\n\t\t\t\t\t\tjCheckBox.setSelected(checked);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (checked) {\n\t\t\t\t\tif (jPriceDataAll.isEnabled()) {\n\t\t\t\t\t\tjPriceDataAll.setSelected(true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjPriceDataNew.setSelected(true);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tjPriceDataNone.setSelected(true);\n\t\t\t\t}\n\t\t\t\tchanged();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class Step1Task extends UpdateTask {\n\n\t\tprivate final ProfileManager profileManager;\n\n\t\tpublic Step1Task(final ProfileManager profileManager) {\n\t\t\tsuper(DialoguesUpdate.get().step1());\n\t\t\tthis.profileManager = profileManager;\n\t\t}\n\n\t\t@Override\n\t\tpublic void update() {\n\t\t\tsetIcon(null);\n\t\t\t//Esi\n\t\t\tList<Runnable> updates = new ArrayList<>();\n\t\t\tfor (EsiOwner esiOwner : profileManager.getEsiOwners()) {\n\t\t\t\tupdates.add(new EsiOwnerGetter(this, esiOwner));\n\t\t\t}\n\t\t\tThreadWoker.start(this, updates);\n\t\t}\n\t}\n\n\tpublic static class Step2Task extends UpdateTask {\n\n\t\tprivate final ProfileManager profileManager;\n\t\tprivate final boolean assets;\n\t\tprivate final boolean accountBalance;\n\t\tprivate final boolean blueprints;\n\t\tprivate final boolean contracts;\n\t\tprivate final boolean industryJobs;\n\t\tprivate final boolean journal;\n\t\tprivate final boolean marketOrders;\n\t\tprivate final boolean mining;\n\t\tprivate final boolean transactions;\n\t\tprivate final boolean skills;\n\t\tprivate final boolean loyaltyPoints;\n\t\tprivate final boolean npcStanding;\n\n\t\tpublic Step2Task(final ProfileManager profileManager,\n\t\t\t\t\t\t\t\tfinal boolean assets,\n\t\t\t\t\t\t\t\tfinal boolean accountBalance,\n\t\t\t\t\t\t\t\tfinal boolean blueprints,\n\t\t\t\t\t\t\t\tfinal boolean contracts,\n\t\t\t\t\t\t\t\tfinal boolean industryJobs,\n\t\t\t\t\t\t\t\tfinal boolean journal,\n\t\t\t\t\t\t\t\tfinal boolean marketOrders,\n\t\t\t\t\t\t\t\tfinal boolean mining,\n\t\t\t\t\t\t\t\tfinal boolean transactions,\n\t\t\t\t\t\t\t\tfinal boolean skills,\n\t\t\t\t\t\t\t\tfinal boolean loyaltyPoints,\n\t\t\t\t\t\t\t\tfinal boolean npcStanding) {\n\t\t\tsuper(DialoguesUpdate.get().step2());\n\t\t\tthis.profileManager = profileManager;\n\t\t\tthis.assets = assets;\n\t\t\tthis.accountBalance = accountBalance;\n\t\t\tthis.blueprints = blueprints;\n\t\t\tthis.contracts = contracts;\n\t\t\tthis.industryJobs = industryJobs;\n\t\t\tthis.journal = journal;\n\t\t\tthis.marketOrders = marketOrders;\n\t\t\tthis.mining = mining;\n\t\t\tthis.transactions = transactions;\n\t\t\tthis.skills = skills;\n\t\t\tthis.loyaltyPoints = loyaltyPoints;\n\t\t\tthis.npcStanding = npcStanding;\n\t\t}\n\n\t\t@Override\n\t\tpublic void update() {\n\t\t\tsetIcon(null);\n\t\t\t//Esi\n\t\t\tList<Runnable> updates = new ArrayList<>();\n\t\t\tfor (EsiOwner esiOwner : profileManager.getEsiOwners()) {\n\t\t\t\tif (accountBalance) {\n\t\t\t\t\tupdates.add(new EsiAccountBalanceGetter(this, esiOwner));\n\t\t\t\t}\n\t\t\t\tif (assets) {\n\t\t\t\t\tupdates.add(new EsiAssetsGetter(this, esiOwner));\n\t\t\t\t\tif (esiOwner.isCorporation()) {\n\t\t\t\t\t\tupdates.add(new EsiDivisionsGetter(this, esiOwner));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (industryJobs) {\n\t\t\t\t\tupdates.add(new EsiIndustryJobsGetter(this, esiOwner, Settings.get().isIndustryJobsHistory()));\n\t\t\t\t}\n\t\t\t\tif (mining) {\n\t\t\t\t\tupdates.add(new EsiMiningGetter(this, esiOwner, Settings.get().isMiningHistory()));\n\t\t\t\t}\n\t\t\t\tif (marketOrders) {\n\t\t\t\t\tupdates.add(new EsiMarketOrdersGetter(this, esiOwner, Settings.get().isMarketOrderHistory()));\n\t\t\t\t}\n\t\t\t\tif (journal) {\n\t\t\t\t\tupdates.add(new EsiJournalGetter(this, esiOwner, Settings.get().isJournalHistory()));\n\t\t\t\t}\n\t\t\t\tif (transactions) {\n\t\t\t\t\tupdates.add(new EsiTransactionsGetter(this, esiOwner, Settings.get().isTransactionHistory()));\n\t\t\t\t}\n\t\t\t\tif (contracts) {\n\t\t\t\t\tupdates.add(new EsiContractsGetter(this, esiOwner, Settings.get().isContractHistory()));\n\t\t\t\t}\n\t\t\t\tif (blueprints) {\n\t\t\t\t\tupdates.add(new EsiBlueprintsGetter(this, esiOwner));\n\t\t\t\t}\n\t\t\t\tif (skills) {\n\t\t\t\t\tupdates.add(new EsiSkillGetter(this, esiOwner));\n\t\t\t\t}\n\t\t\t\tif (loyaltyPoints) {\n\t\t\t\t\tupdates.add(new EsiLoyaltyPointsGetter(this, esiOwner));\n\t\t\t\t}\n\t\t\t\tif (npcStanding) {\n\t\t\t\t\tupdates.add(new EsiNpcStandingGetter(this, esiOwner));\n\t\t\t\t}\n\t\t\t}\n\t\t\tThreadWoker.start(this, updates);\n\t\t}\n\t}\n\n\tpublic static class Step3Task extends UpdateTask {\n\n\t\tprivate final ProfileManager profileManager;\n\t\tprivate final boolean assets;\n\t\tprivate final Map<EsiOwner, Date> assetNextUpdate = new HashMap<>();\n\n\t\tpublic Step3Task(final ProfileManager profileManager, final boolean assets) {\n\t\t\tsuper(DialoguesUpdate.get().step3());\n\t\t\tthis.profileManager = profileManager;\n\t\t\tthis.assets = assets;\n\t\t\tfor (EsiOwner esiOwner : profileManager.getEsiOwners()) {\n\t\t\t\tassetNextUpdate.put(esiOwner, esiOwner.getAssetNextUpdate());\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void update() {\n\t\t\tsetIcon(null);\n\t\t\tList<Runnable> updates = new ArrayList<>();\n\t\t\t//Locations\n\t\t\tif (assets) {\n\t\t\t\t//Esi\n\t\t\t\tfor (EsiOwner esiOwner : profileManager.getEsiOwners()) {\n\t\t\t\t\tupdates.add(new EsiLocationsGetter(this, esiOwner));\n\t\t\t\t\tupdates.add(new EsiShipGetter(this, esiOwner, assetNextUpdate.getOrDefault(esiOwner, Settings.getNow())));\n\t\t\t\t\tupdates.add(new EsiPlanetaryInteractionGetter(this, esiOwner, assetNextUpdate.getOrDefault(esiOwner, Settings.getNow())));\n\t\t\t\t\tupdates.add(new EsiClonesGetter(this, esiOwner, assetNextUpdate.getOrDefault(esiOwner, Settings.getNow())));\n\t\t\t\t}\n\t\t\t}\n\t\t\tupdates.add(new EsiFactionWarfareGetter(this));\n\t\t\t//char/corp/alliance IDs to names (ESI)\n\t\t\tupdates.add(new EsiNameGetter(this, profileManager.getOwnerTypes()));\n\t\t\t//char/corp/alliance images\n\t\t\tupdates.add(new EveImageGetter(this, profileManager.getOwnerTypes()));\n\t\t\tThreadWoker.start(this, updates);\n\t\t}\n\t}\n\n\tpublic static class Step4Task extends UpdateTask {\n\n\t\tprivate final ProfileManager profileManager;\n\n\t\tpublic Step4Task(final ProfileManager profileManager) {\n\t\t\tsuper(DialoguesUpdate.get().step4());\n\t\t\tthis.profileManager = profileManager;\n\t\t}\n\n\t\t@Override\n\t\tpublic void update() {\n\t\t\tsetIcon(null);\n\t\t\t//Contract Items\n\t\t\t//Esi\n\t\t\tList<Runnable> updates = new ArrayList<>();\n\t\t\tEsiContractItemsGetter.reset();\n\t\t\tfor (EsiOwner esiOwner : profileManager.getEsiOwners()) {\n\t\t\t\tupdates.add(new EsiContractItemsGetter(this, esiOwner, profileManager.getEsiOwners(), Settings.get().isContractHistory()));\n\t\t\t}\n\t\t\tThreadWoker.start(this, updates, false);\n\t\t}\n\t}\n\n\tpublic static class PriceDataTask extends UpdateTask {\n\n\t\tprivate final PriceDataGetter priceDataGetter;\n\t\tprivate final ProfileData profileData;\n\t\tprivate final boolean update;\n\n\t\tpublic PriceDataTask(final PriceDataGetter priceDataGetter, final ProfileData profileData, final boolean update) {\n\t\t\tsuper(DialoguesUpdate.get().priceData() + \" (\" + (Settings.get().getPriceDataSettings().getSource().toString()) + \")\");\n\t\t\tthis.priceDataGetter = priceDataGetter;\n\t\t\tthis.profileData = profileData;\n\t\t\tthis.update = update;\n\t\t}\n\n\t\t@Override\n\t\tpublic void update() {\n\t\t\tsetIcon(Settings.get().getPriceDataSettings().getSource().getIcon());\n\t\t\tThreadWoker.start(this, Collections.singleton(new EsiManufacturingPrices(this)), false);\n\t\t\tif (update) {\n\t\t\t\tpriceDataGetter.updateAll(profileData, this);\n\t\t\t} else {\n\t\t\t\tpriceDataGetter.updateNew(profileData, this);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static class UpdateUI {\n\t\tprivate final JCheckBox jCheckBox;\n\t\tprivate final JLabel jLeftFirst;\n\t\tprivate final JLabel jLeftLast;\n\n\t\tpublic UpdateUI(String title) {\n\t\t\tjCheckBox = new JCheckBox(title);\n\t\t\tjLeftFirst = new JLabel();\n\t\t\tjLeftLast = new JLabel();\n\t\t}\n\n\t\tpublic JCheckBox getCheckBox() {\n\t\t\treturn jCheckBox;\n\t\t}\n\n\t\tpublic JLabel getLeftFirst() {\n\t\t\treturn jLeftFirst;\n\t\t}\n\n\t\tpublic JLabel getLeftLast() {\n\t\t\treturn jLeftLast;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/dialogs/update/UpdateTask.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.dialogs.update;\n\nimport java.awt.Component;\nimport java.awt.Cursor;\nimport java.awt.Font;\nimport java.awt.Graphics;\nimport java.beans.PropertyChangeEvent;\nimport java.beans.PropertyChangeListener;\nimport java.text.DateFormat;\nimport java.text.ParseException;\nimport java.text.SimpleDateFormat;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.Date;\nimport java.util.List;\nimport java.util.concurrent.CancellationException;\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\nimport javax.swing.Icon;\nimport javax.swing.JButton;\nimport javax.swing.JLabel;\nimport javax.swing.JTextPane;\nimport javax.swing.SwingWorker;\nimport javax.swing.text.*;\nimport net.nikr.eve.jeveasset.gui.dialogs.update.TaskDialog.ErrorListener;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\nimport net.nikr.eve.jeveasset.i18n.DialoguesUpdate;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n\npublic abstract class UpdateTask extends SwingWorker<Void, Void> {\n\tprivate static final Logger LOG = LoggerFactory.getLogger(UpdateTask.class);\n\n\tprivate Icon icon;\n\tprivate final JLabel jText;\n\tprivate final JButton jShow;\n\tprivate final List<LogClass> log;\n\tprivate final String name;\n\tprivate Integer totalProgress = null;\n\n\tprivate boolean info = false;\n\tprivate boolean warning = false;\n\tprivate boolean error = false;\n\tprivate boolean errorShown = false;\n\tprivate boolean taskDone = false;\n\tprivate boolean pause = false;\n\n\tprivate ErrorListener errorListener;\n\n\tpublic UpdateTask(final String name) {\n\t\tthis.name = name;\n\t\tthis.addPropertyChangeListener(new ListenerClass());\n\t\tjText = new JLabel(name);\n\t\tjText.setIcon(Images.UPDATE_NOT_STARTED.getIcon());\n\t\tjText.setFont(jText.getFont().deriveFont(Font.PLAIN));\n\t\tjShow = new JButton();\n\t\tjShow.setFocusPainted(false);\n\t\tjShow.setIcon(Images.MISC_EXPANDED.getIcon());\n\t\tjShow.setVisible(false);\n\t\tlog = Collections.synchronizedList(new ArrayList<>());\n\t}\n\n\tpublic void addErrorListener(ErrorListener errorListener) {\n\t\tremoveErrorListener();\n\t\tjShow.addActionListener(errorListener);\n\t\tjText.addMouseListener(errorListener);\n\t\tthis.errorListener = errorListener;\n\t}\n\n\tpublic void removeErrorListener() {\n\t\tif (errorListener != null) {\n\t\t\tjShow.removeActionListener(errorListener);\n\t\t\tjText.removeMouseListener(errorListener);\n\t\t\terrorListener = null;\n\t\t}\n\t}\n\n\tpublic void setTotalProgress(final float end, final float progress, final int minimum, final int maximum) {\n\t\tint percent = Math.round(((progress / end) * (maximum - minimum)) + minimum);\n\t\tif (percent > 100) {\n\t\t\tpercent = 100;\n\t\t} else if (percent < 0) {\n\t\t\tpercent = 0;\n\t\t}\n\t\tif (totalProgress == null || totalProgress != percent) {\n\t\t\tInteger oldValue = totalProgress;\n\t\t\ttotalProgress = percent;\n\t\t\tfirePropertyChange(\"TotalProgress\", oldValue, percent);\n\t\t}\n\t}\n\n\tpublic void pause() {\n\t\twhile (isPause()) {\n\t\t\tsynchronized(this) {\n\t\t\t\ttry {\n\t\t\t\t\twait();\n\t\t\t\t} catch (InterruptedException ex) {\n\t\t\t\t\t//No problem\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic synchronized boolean isPause() {\n\t\treturn pause;\n\t}\n\n\tpublic synchronized void setPause(boolean pause) {\n\t\tthis.pause = pause;\n\t\tnotifyAll();\n\t}\n\n\tpublic Integer getTotalProgress() {\n\t\treturn totalProgress;\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic JLabel getTextLabel() {\n\t\treturn jText;\n\t}\n\n\tpublic int getWidth() {\n\t\tint width = jText.getPreferredSize().width;\n\t\tint plain = jText.getFontMetrics(jText.getFont()).stringWidth(name);\n\t\tint bold = jText.getFontMetrics(jText.getFont().deriveFont(Font.BOLD)).stringWidth(name);\n\t\treturn width + (bold - plain);\n\t}\n\n\tpublic JButton getShowButton() {\n\t\treturn jShow;\n\t}\n\n\tpublic void addError(final String owner, final String msg) {\n\t\tlog.add(new LogClass(owner, msg));\n\t\terror = true;\n\t}\n\n\tpublic void addWarning(final String owner, final String msg) {\n\t\tlog.add(new LogClass(owner, msg));\n\t\twarning = true;\n\t}\n\n\tpublic void addInfo(final String owner, final String msg) {\n\t\tlog.add(new LogClass(owner, msg));\n\t\tinfo = true;\n\t}\n\n\tpublic boolean hasInfo() {\n\t\treturn info;\n\t}\n\n\tpublic boolean hasWarning() {\n\t\treturn warning;\n\t}\n\n\tpublic boolean hasError() {\n\t\treturn error;\n\t}\n\n\tpublic boolean hasLog() {\n\t\treturn !log.isEmpty();\n\t}\n\n\tpublic Icon getIcon() {\n\t\tif (icon == null) {\n\t\t\ticon = Images.UPDATE_WORKING.getIcon();\n\t\t}\n\t\treturn icon;\n\t}\n\n\tpublic final void setIcon(Icon icon) {\n\t\tthis.icon = icon;\n\t}\n\n\tpublic abstract void update();\n\n\t@Override\n\tpublic Void doInBackground() {\n\t\tsetProgress(0);\n\t\tupdate();\n\t\treturn null;\n\t}\n\n\t@Override\n\tpublic void done() {\n\t\ttry {\n\t\t\tget();\n\t\t} catch (CancellationException ex) {\n\t\t\tLOG.info(\"Update cancelled by user\");\n\t\t} catch (Exception ex) { //InterruptedException, ExecutionException\n\t\t\tLOG.error(ex.getMessage(), ex);\n\t\t\tthrow new RuntimeException(ex);\n\t\t}\n\t\ttaskDone = true;\n\t\tsetProgress(100);\n\t}\n\n\tpublic boolean isTaskDone() {\n\t\treturn taskDone;\n\t}\n\n\tpublic void setTaskDone(final boolean done) {\n\t\tthis.taskDone = done;\n\t}\n\n\tprotected void setTaskProgress(final int progress) {\n\t\tthis.setProgress(progress);\n\t}\n\n\tpublic void insertLog(final JTextPane jError) {\n\t\tif (!log.isEmpty()) {\n\t\t\tStyledDocument doc = new DefaultStyledDocument();\n\t\t\tUpdateTask.this.insertLog(doc);\n\t\t\tjError.setDocument(doc);\n\t\t}\n\t}\n\n\tpublic void insertLog(final StyledDocument doc) {\n\t\tif (!log.isEmpty()) {\n\t\t\tSimpleAttributeSet errorAttributeSet = new SimpleAttributeSet();\n\t\t\terrorAttributeSet.addAttribute(StyleConstants.CharacterConstants.Foreground, jText.getBackground().darker().darker());\n\n\t\t\ttry {\n\t\t\t\tboolean first = true;\n\t\t\t\tsynchronized (log) {\n\t\t\t\t\tfor (LogClass errorClass : log) {\n\t\t\t\t\t\tif (first) {\n\t\t\t\t\t\t\tfirst = false;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdoc.insertString(doc.getLength(), \"\\n\\r\", null);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdoc.insertString(doc.getLength(), errorClass.getOwner(), null);\n\t\t\t\t\t\tdoc.insertString(doc.getLength(), \"\\r\\n\" + processError(errorClass.getError()), errorAttributeSet);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (BadLocationException ex) {\n\t\t\t\tLOG.warn(\"Ignoring exception: \" + ex.getMessage(), ex);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic void setTaskProgress(final float progressEnd, final float progressNow, final int minimum, final int maximum) {\n\t\tint progress = Math.round(((progressNow / progressEnd) * (maximum - minimum)) + minimum);\n\t\tif (progress > 100) {\n\t\t\tprogress = 100;\n\t\t} else if (progress < 0) {\n\t\t\tprogress = 0;\n\t\t}\n\t\tif (progress != getProgress()) {\n\t\t\tsetProgress(progress);\n\t\t}\n\t}\n\n\tpublic void resetTaskProgress() {\n\t\tsetProgress(0);\n\t}\n\n\tpublic void cancelled() {\n\t\tjText.setIcon(Images.UPDATE_CANCELLED.getIcon());\n\t}\n\n\tpublic void showLog(final boolean b) {\n\t\tif (!log.isEmpty()) {\n\t\t\tif (b) {\n\t\t\t\terrorShown = true;\n\t\t\t\tjText.setFont(jText.getFont().deriveFont(Font.BOLD));\n\t\t\t\tjShow.setIcon(Images.MISC_COLLAPSED.getIcon());\n\t\t\t\tjShow.setSelected(true);\n\t\t\t\tjShow.requestFocusInWindow();\n\t\t\t} else {\n\t\t\t\tjText.setFont(jText.getFont().deriveFont(Font.PLAIN));\n\t\t\t\tjShow.setIcon(Images.MISC_EXPANDED.getIcon());\n\t\t\t\tjShow.setSelected(false);\n\t\t\t\terrorShown = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic boolean isErrorShown() {\n\t\treturn errorShown;\n\t}\n\n\tprivate String processError(String error) {\n\t\tif (error == null) {\n\t\t\treturn \"\";\n\t\t}\n\t\tPattern p = Pattern.compile(\"\\\\d{4}-\\\\d{2}-\\\\d{2} \\\\d{2}:\\\\d{2}:\\\\d{2}\");\n\t\tDateFormat df = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");\n\t\tMatcher m = p.matcher(error);\n\t\twhile (m.find()) {\n\t\t\tint start = m.start();\n\t\t\tint end = m.end();\n\t\t\tString time = error.substring(start, end);\n\t\t\ttry {\n\t\t\t\tDate date = df.parse(time);\n\t\t\t\ttime = Formatter.weekdayAndTime(date);\n\t\t\t} catch (ParseException ex) {\n\t\t\t\ttime = error.substring(start, end);\n\t\t\t}\n\t\t\terror = error.substring(0, start) + time + error.substring(end);\n\t\t\terror = error.replace(\"retry after\", \"\\r\\n\" + DialoguesUpdate.get().nextUpdate());\n\t\t}\n\t\treturn error;\n\t}\n\n\tprivate class ListenerClass implements PropertyChangeListener {\n\n\t\t@Override\n\t\tpublic void propertyChange(final PropertyChangeEvent evt) {\n\t\t\tint value = getProgress();\n\t\t\tif (value == 100) {\n\t\t\t\tif (error) {\n\t\t\t\t\tjText.setIcon(Images.UPDATE_DONE_ERROR.getIcon());\n\t\t\t\t\tjShow.setVisible(true);\n\t\t\t\t} else if (isCancelled() || warning) {\n\t\t\t\t\tjText.setIcon(Images.UPDATE_DONE_SOME.getIcon());\n\t\t\t\t\tjShow.setVisible(true);\n\t\t\t\t} else if (info) {\n\t\t\t\t\tjText.setIcon(Images.UPDATE_DONE_INFO.getIcon());\n\t\t\t\t\tjShow.setVisible(true);\n\t\t\t\t} else {\n\t\t\t\t\tjShow.setVisible(false);\n\t\t\t\t\tjText.setIcon(Images.UPDATE_DONE_OK.getIcon());\n\t\t\t\t}\n\t\t\t\tif (!log.isEmpty()) {\n\t\t\t\t\tjText.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tjText.setIcon(Images.UPDATE_WORKING.getIcon());\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static class LogClass {\n\t\tprivate final String owner;\n\t\tprivate final String error;\n\n\t\tpublic LogClass(String owner, String error) {\n\t\t\tthis.owner = owner;\n\t\t\tthis.error = error;\n\t\t}\n\n\t\tpublic String getOwner() {\n\t\t\treturn owner;\n\t\t}\n\n\t\tpublic String getError() {\n\t\t\treturn error;\n\t\t}\n\t}\n\n\tpublic static class EmptyIcon implements Icon {\n\n\t\t@Override\n\t\tpublic void paintIcon(Component c, Graphics g, int x, int y) {\n\t\t\t//Nothing to paint\n\t\t}\n\n\t\t@Override\n\t\tpublic int getIconWidth() {\n\t\t\treturn 16;\n\t\t}\n\n\t\t@Override\n\t\tpublic int getIconHeight() {\n\t\t\treturn 16;\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/frame/MainMenu.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.frame;\n\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.KeyEvent;\nimport java.util.concurrent.ExecutionException;\nimport javax.swing.JCheckBoxMenuItem;\nimport javax.swing.JMenu;\nimport javax.swing.JMenuBar;\nimport javax.swing.JMenuItem;\nimport net.nikr.eve.jeveasset.CliOptions;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.i18n.GuiFrame;\n\n\npublic class MainMenu extends JMenuBar {\n\n\tprivate static final long serialVersionUID = 1L;\n\n\tpublic enum MainMenuAction {\n\t\tVALUES,\n\t\tVALUE_TABLE,\n\t\tPRICE_HISTORY,\n\t\tLOADOUTS,\n\t\tMARKET_ORDERS,\n\t\tTRANSACTION,\n\t\tJOURNAL,\n\t\tINDUSTRY_JOBS,\n\t\tOVERVIEW,\n\t\tMATERIALS,\n\t\tACCOUNT_MANAGER,\n\t\tPROFILES,\n\t\tOPTIONS,\n\t\tABOUT,\n\t\tLICENSE,\n\t\tCREDITS,\n\t\tREADME,\n\t\tCHANGELOG,\n\t\tLINK_FEEDBACK_AND_HELP,\n\t\tLINK_WIKI,\n\t\tLINK_DISCORD,\n\t\tROUTING,\n\t\tSTOCKPILE,\n\t\tUPDATE,\n\t\tUPDATE_STRUCTURE,\n\t\tITEMS,\n\t\tTREE,\n\t\tTRACKER,\n\t\tREPROCESSED,\n\t\tCONTRACTS,\n\t\tSLOTS,\n\t\tSKILLS,\n\t\tSKILLS_OVERVIEW,\n\t\tLOYALTY_POINTS,\n\t\tNPC_STANDING,\n\t\tAGENTS,\n\t\tMINING_ALL,\n\t\tMINING_LOG,\n\t\tMINING_GRAPH,\n\t\tEXTRACTIONS,\n\t\tPRICE_CHANGES,\n\t\tEXIT_PROGRAM\n\t}\n\n\tprivate final JMenuItem jUpdateMenu;\n\tprivate final JMenuItem jStructureMenu;\n\tprivate final JMenu jTableMenu;\n\n\tpublic MainMenu(final Program program) {\n\t\tJMenu menu;\n\t\tJMenu submenu;\n\t\tJMenuItem menuItem;\n\t\tJCheckBoxMenuItem checkBoxMenuItem;\n\n//FILE\n\t\tmenu = new JMenu(GuiFrame.get().file());\n\t\tmenu.setMnemonic(KeyEvent.VK_F);\n\t\tthis.add(menu);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().exit());\n\t\tmenuItem.setIcon(Images.MISC_EXIT.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.EXIT_PROGRAM.name());\n\t\tmenuItem.addActionListener(program);\n\t\tmenu.add(menuItem);\n\n//TOOLS\n\t\tmenu = new JMenu(GuiFrame.get().tools());\n\t\tmenu.setMnemonic(KeyEvent.VK_T);\n\t\tthis.add(menu);\n\n\t//ISK\n\t\tsubmenu = new JMenu(GuiFrame.get().netWorth());\n\t\tsubmenu.setIcon(Images.TOOL_VALUES.getIcon());\n\t\tmenu.add(submenu);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().tracker());\n\t\tmenuItem.setIcon(Images.TOOL_TRACKER.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.TRACKER.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().values());\n\t\tmenuItem.setIcon(Images.TOOL_VALUES.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.VALUES.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().valueTable());\n\t\tmenuItem.setIcon(Images.TOOL_VALUE_TABLE.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.VALUE_TABLE.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t\tsubmenu.addSeparator();\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().priceHistory());\n\t\tmenuItem.setIcon(Images.TOOL_PRICE_HISTORY.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.PRICE_HISTORY.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().priceChanges());\n\t\tmenuItem.setIcon(Images.TOOL_PRICE_CHANGE.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.PRICE_CHANGES.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t//Invertory\n\t\tsubmenu = new JMenu(GuiFrame.get().inventory()); //\n\t\tsubmenu.setIcon(Images.TOOL_ASSETS.getIcon());\n\t\tmenu.add(submenu);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().tree());\n\t\tmenuItem.setIcon(Images.TOOL_TREE.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.TREE.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().stockpile());\n\t\tmenuItem.setIcon(Images.TOOL_STOCKPILE.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.STOCKPILE.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().overview());\n\t\tmenuItem.setIcon(Images.TOOL_OVERVIEW.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.OVERVIEW.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().materials());\n\t\tmenuItem.setIcon(Images.TOOL_MATERIALS.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.MATERIALS.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t\tsubmenu = new JMenu(GuiFrame.get().mining());\n\t\tsubmenu.setIcon(Images.TOOL_MINING.getIcon());\n\t\tmenu.add(submenu);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().miningAll());\n\t\tmenuItem.setIcon(Images.TOOL_MINING.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.MINING_ALL.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t\tsubmenu.addSeparator();\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().miningLog());\n\t\tmenuItem.setIcon(Images.TOOL_MINING_LOG.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.MINING_LOG.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().miningGraph());\n\t\tmenuItem.setIcon(Images.TOOL_MINING_GRAPH.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.MINING_GRAPH.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t\tsubmenu.addSeparator();\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().extractions());\n\t\tmenuItem.setIcon(Images.TOOL_EXTRACTIONS.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.EXTRACTIONS.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t//Business\n\t\tsubmenu = new JMenu(GuiFrame.get().business());\n\t\tsubmenu.setIcon(Images.TOOL_JOURNAL.getIcon());\n\t\tmenu.add(submenu);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().journal());\n\t\tmenuItem.setIcon(Images.TOOL_JOURNAL.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.JOURNAL.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().transaction());\n\t\tmenuItem.setIcon(Images.TOOL_TRANSACTION.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.TRANSACTION.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t\tsubmenu.addSeparator();\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().market());\n\t\tmenuItem.setIcon(Images.TOOL_MARKET_ORDERS.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.MARKET_ORDERS.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().contracts());\n\t\tmenuItem.setIcon(Images.TOOL_CONTRACTS.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.CONTRACTS.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t\tsubmenu.addSeparator();\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().industry());\n\t\tmenuItem.setIcon(Images.TOOL_INDUSTRY_JOBS.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.INDUSTRY_JOBS.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().slots());\n\t\tmenuItem.setIcon(Images.TOOL_SLOTS.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.SLOTS.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t//Owners\n\t\tsubmenu = new JMenu(GuiFrame.get().owners());\n\t\tsubmenu.setIcon(Images.MISC_OWNERS.getIcon());\n\t\tmenu.add(submenu);\n\t\t\n\t\tmenuItem = new JMenuItem(GuiFrame.get().skills());\n\t\tmenuItem.setIcon(Images.TOOL_SKILLS.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.SKILLS.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().skillsOverview());\n\t\tmenuItem.setIcon(Images.TOOL_SKILLS.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.SKILLS_OVERVIEW.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().loyaltyPoints());\n\t\tmenuItem.setIcon(Images.TOOL_LOYALTY_POINTS.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.LOYALTY_POINTS.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().npcStanding());\n\t\tmenuItem.setIcon(Images.TOOL_NPC_STANDING.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.NPC_STANDING.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t//Misc\n\t\tsubmenu = new JMenu(GuiFrame.get().misc());\n\t\tsubmenu.setIcon(Images.MISC_MISC.getIcon());\n\t\tmenu.add(submenu);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().routing());\n\t\tmenuItem.setIcon(Images.TOOL_ROUTING.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.ROUTING.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().ship());\n\t\tmenuItem.setIcon(Images.TOOL_SHIP_LOADOUTS.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.LOADOUTS.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().reprocessed());\n\t\tmenuItem.setIcon(Images.TOOL_REPROCESSED.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.REPROCESSED.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().items());\n\t\tmenuItem.setIcon(Images.TOOL_ITEMS.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.ITEMS.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().agents());\n\t\tmenuItem.setIcon(Images.TOOL_AGENTS.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.AGENTS.name());\n\t\tmenuItem.addActionListener(program);\n\t\tsubmenu.add(menuItem);\n\n\t//Lock\n\t\tmenu.addSeparator();\n\n\t\tcheckBoxMenuItem = new JCheckBoxMenuItem(GuiFrame.get().lock());\n\t\tcheckBoxMenuItem.setSelected(Settings.get().isToolsLocked());\n\t\tcheckBoxMenuItem.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tSettings.lock(\"Lock Tools\");\n\t\t\t\tSettings.get().setToolsLocked(checkBoxMenuItem.isSelected());\n\t\t\t\tSettings.unlock(\"Lock Tools\");\n\t\t\t\tprogram.saveSettings(\"Lock Tools\");\n\t\t\t\tprogram.getMainWindow().updateTabCloseButtons();\n\t\t\t}\n\t\t});\n\t\tmenu.add(checkBoxMenuItem);\n\n//UPDATE\n\t\tmenu = new JMenu(GuiFrame.get().update());\n\t\tmenu.setMnemonic(KeyEvent.VK_U);\n\t\tthis.add(menu);\n\n\t\tjUpdateMenu = new JMenuItem(GuiFrame.get().update1());\n\t\tjUpdateMenu.setIcon(Images.DIALOG_UPDATE.getIcon());\n\t\tjUpdateMenu.setActionCommand(MainMenuAction.UPDATE.name());\n\t\tjUpdateMenu.addActionListener(program);\n\t\tmenu.add(jUpdateMenu);\n\n\t\tmenu.addSeparator();\n\n\t\tjStructureMenu = new JMenuItem(GuiFrame.get().updateStructure());\n\t\tjStructureMenu.setIcon(Images.DIALOG_UPDATE.getIcon());\n\t\tjStructureMenu.setActionCommand(MainMenuAction.UPDATE_STRUCTURE.name());\n\t\tjStructureMenu.addActionListener(program);\n\t\tmenu.add(jStructureMenu);\n\n//TABLE\n\t\tjTableMenu = new JMenu(GuiFrame.get().table());\n\t\tjTableMenu.setMnemonic(KeyEvent.VK_A);\n\t\tthis.add(jTableMenu);\n\n//OPTIONS\n\t\tmenu = new JMenu(GuiFrame.get().options());\n\t\tmenu.setMnemonic(KeyEvent.VK_O);\n\t\tthis.add(menu);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().accounts());\n\t\tmenuItem.setIcon(Images.DIALOG_ACCOUNTS.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.ACCOUNT_MANAGER.name());\n\t\tmenuItem.addActionListener(program);\n\t\tmenu.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().profiles());\n\t\tmenuItem.setIcon(Images.DIALOG_PROFILES.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.PROFILES.name());\n\t\tmenuItem.addActionListener(program);\n\t\tmenu.add(menuItem);\n\n\t\tmenu.addSeparator();\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().options1());\n\t\tmenuItem.setIcon(Images.DIALOG_SETTINGS.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.OPTIONS.name());\n\t\tmenuItem.addActionListener(program);\n\t\tmenu.add(menuItem);\n\n//HELP\n\t\tmenu = new JMenu(GuiFrame.get().help());\n\t\tmenu.setMnemonic(KeyEvent.VK_H);\n\t\tthis.add(menu);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().linkWiki());\n\t\tmenuItem.setIcon(Images.TOOL_ASSETS.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.LINK_WIKI.name());\n\t\tmenuItem.addActionListener(program);\n\t\tmenu.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().linkFeedbackAndHelp());\n\t\tmenuItem.setIcon(Images.MISC_HELP.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.LINK_FEEDBACK_AND_HELP.name());\n\t\tmenuItem.addActionListener(program);\n\t\tmenu.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().linkDiscord());\n\t\tmenuItem.setIcon(Images.MISC_DISCORD.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.LINK_DISCORD.name());\n\t\tmenuItem.addActionListener(program);\n\t\tmenu.add(menuItem);\n\n\t\tmenu.addSeparator();\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().readme());\n\t\tmenuItem.setIcon(Images.STOCKPILE_SHOPPING_LIST.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.README.name());\n\t\tmenuItem.addActionListener(program);\n\t\tmenu.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().credits());\n\t\tmenuItem.setIcon(Images.STOCKPILE_SHOPPING_LIST.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.CREDITS.name());\n\t\tmenuItem.addActionListener(program);\n\t\tmenu.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().license());\n\t\tmenuItem.setIcon(Images.STOCKPILE_SHOPPING_LIST.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.LICENSE.name());\n\t\tmenuItem.addActionListener(program);\n\t\tmenu.add(menuItem);\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().change());\n\t\tmenuItem.setIcon(Images.STOCKPILE_SHOPPING_LIST.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.CHANGELOG.name());\n\t\tmenuItem.addActionListener(program);\n\t\tmenu.add(menuItem);\n\n\t\tmenu.addSeparator();\n\n\t\tmenuItem = new JMenuItem(GuiFrame.get().about());\n\t\tmenuItem.setIcon(Images.DIALOG_ABOUT.getIcon());\n\t\tmenuItem.setActionCommand(MainMenuAction.ABOUT.name());\n\t\tmenuItem.addActionListener(program);\n\t\tmenu.add(menuItem);\n\n//DEBUG\n\t\tif (CliOptions.get().isDebug()) {\n\t\t\tmenu = new JMenu(\"Debug\");\n\t\t\t//FIXME - - > Remove for production\n\t\t\t//this.add(menu);\n\n\t\t\tmenuItem = new JMenuItem(\"Update EventLists\", Images.MISC_DEBUG.getIcon());\n\t\t\tmenuItem.addActionListener(new ActionListener() {\n\t\t\t\t@Override\n\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\tprogram.updateEventLists();\n\t\t\t\t}\n\t\t\t});\n\t\t\tmenu.add(menuItem);\n\n\t\t\tmenuItem = new JMenuItem(\"Create Tracker Point\", Images.MISC_DEBUG.getIcon());\n\t\t\tmenuItem.addActionListener(new ActionListener() {\n\t\t\t\t@Override\n\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\tprogram.createTrackerDataPoint();\n\t\t\t\t}\n\t\t\t});\n\t\t\tmenu.add(menuItem);\n\n\t\t\tmenuItem = new JMenuItem(\"Throw out of memory\", Images.MISC_DEBUG.getIcon());\n\t\t\tmenuItem.addActionListener(new ActionListener() {\n\t\t\t\t@Override\n\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\tOutOfMemoryError oome = new OutOfMemoryError();\n\t\t\t\t\tExecutionException ee = new ExecutionException(oome);\n\t\t\t\t\tRuntimeException re = new RuntimeException(ee);\n\t\t\t\t\tthrow re;\n\t\t\t\t}\n\t\t\t});\n\t\t\tmenu.add(menuItem);\n\t\t}\n\t}\n\n\t@Override\n\tpublic final JMenu add(JMenu c) {\n\t\treturn super.add(c);\n\t}\n\n\tpublic JMenu getTableMenu() {\n\t\treturn jTableMenu;\n\t}\n\n\tpublic void timerTicked(final boolean updatable, final boolean structure) {\n\t\tif (updatable) {\n\t\t\tjUpdateMenu.setIcon(Images.DIALOG_UPDATE.getIcon());\n\t\t\tjUpdateMenu.setToolTipText(GuiFrame.get().updatable());\n\t\t} else {\n\t\t\tjUpdateMenu.setIcon(Images.DIALOG_UPDATE_DISABLED.getIcon());\n\t\t\tjUpdateMenu.setToolTipText(GuiFrame.get().not());\n\t\t}\n\t\tif (structure) {\n\t\t\tjStructureMenu.setIcon(Images.DIALOG_UPDATE.getIcon());\n\t\t\tjStructureMenu.setToolTipText(GuiFrame.get().updatable());\n\t\t} else {\n\t\t\tjStructureMenu.setIcon(Images.DIALOG_UPDATE_DISABLED.getIcon());\n\t\t\tjStructureMenu.setToolTipText(GuiFrame.get().not());\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/frame/MainWindow.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.frame;\n\nimport java.awt.*;\nimport java.awt.event.*;\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.swing.*;\nimport javax.swing.event.ChangeEvent;\nimport javax.swing.event.ChangeListener;\nimport javax.swing.plaf.basic.BasicButtonUI;\nimport net.nikr.eve.jeveasset.CliOptions;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.TextManager;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDragTabbedPane;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDragTabbedPane.TabMoveListener;\nimport net.nikr.eve.jeveasset.gui.shared.components.JLockWindow;\nimport net.nikr.eve.jeveasset.gui.shared.components.JLockWindow.LockWorkerAdaptor;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTab;\nimport net.nikr.eve.jeveasset.i18n.GuiFrame;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n\npublic class MainWindow {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(MainWindow.class);\n\n\tprivate static final String RE_OPEN_TAB = \"reOpenTab\";\n\n\t//GUI\n\tprivate final MainMenu mainMenu;\n\tprivate final JFrame jFrame;\n\tprivate final JDragTabbedPane jTabbedPane;\n\tprivate final StatusPanel statusPanel;\n\tprivate final JLockWindow jLockWindow;\n\n\tprivate final Timer timer;\n\n\t//Data\n\tprivate final Program program;\n\tprivate final List<JMainTab> tabs = new ArrayList<>();\n\tprivate final List<JMainTab> closed = new ArrayList<>();\n\n\tpublic MainWindow(final Program program) {\n\t\tthis.program = program;\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\ttimer = new Timer(1000, listener);\n\n\t\t//Frame\n\t\tjFrame = new JFrame();\n\t\tupdateTitle();\n\t\tsetSizeAndLocation(Settings.get().getWindowSize(), Settings.get().getWindowLocation(), Settings.get().isWindowMaximized());\n\t\tjFrame.setAlwaysOnTop(Settings.get().isWindowAlwaysOnTop());\n\t\tList<Image> icons = new ArrayList<>();\n\t\ticons.add(Images.TOOL_ASSETS.getImage());\n\t\ticons.add(Images.MISC_ASSETS_32.getImage());\n\t\ticons.add(Images.MISC_ASSETS_64.getImage());\n\t\tjFrame.setIconImages(icons);\n\t\tjFrame.addWindowListener(listener);\n\t\tjFrame.addComponentListener(listener);\n\t\tjFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);\n\n\t\tjLockWindow = new JLockWindow(jFrame);\n\n\t\tJPanel jPanel = new JPanel();\n\t//Global key shortcuts\n\t//Re-open closed tab\n\t\t//Windows/Linux\n\t\tjPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.CTRL_DOWN_MASK + InputEvent.SHIFT_DOWN_MASK), RE_OPEN_TAB);\n\t\t//Mac OSX\n\t\tjPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.META_DOWN_MASK + InputEvent.SHIFT_DOWN_MASK), RE_OPEN_TAB);\n\t\tjPanel.getActionMap().put(RE_OPEN_TAB, new AbstractAction() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tif (closed.isEmpty()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\taddTab(closed.get(closed.size() - 1), true);\n\t\t\t}\n\t\t});\n\t\tGroupLayout layout = new GroupLayout(jPanel);\n\t\tjPanel.setLayout(layout);\n\t\tlayout.setAutoCreateGaps(false);\n\t\tlayout.setAutoCreateContainerGaps(false);\n\t\tjFrame.getContentPane().add(jPanel);\n\n\t\tmainMenu = new MainMenu(program);\n\t\tjFrame.setJMenuBar(mainMenu);\n\n\t\tjTabbedPane = new JDragTabbedPane();\n\t\tjTabbedPane.addChangeListener(listener);\n\t\tjTabbedPane.addMouseListener(new MouseAdapter() {\n\t\t\t@Override\n\t\t\tpublic void mousePressed(final MouseEvent e) {\n\t\t\t\tif (e.getButton() == MouseEvent.BUTTON2) {\n\t\t\t\t\tint index = jTabbedPane.indexAtLocation(e.getX(), e.getY());\n\t\t\t\t\tif (index < 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tJMainTab jMainTab = tabs.get(index);\n\t\t\t\t\tif (isCloseable(jMainTab)) {\n\t\t\t\t\t\tremoveTab(jMainTab);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tjTabbedPane.addTabMoveListeners(listener);\n\t\tjTabbedPane.addDragLock(0);\n\n\t\tstatusPanel = new StatusPanel(program);\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addComponent(jTabbedPane, 0, 0, Short.MAX_VALUE)\n\t\t\t\t.addComponent(statusPanel.getPanel(), 0, 0, Short.MAX_VALUE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jTabbedPane, 0, 0, Short.MAX_VALUE)\n\t\t\t\t.addComponent(statusPanel.getPanel(), Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t);\n\t}\n\n\tpublic final void updateTitle() {\n\t\tjFrame.setTitle(GuiFrame.get().windowTitle(\n\t\t\t\t\t\tProgram.PROGRAM_NAME,\n\t\t\t\t\t\tProgram.PROGRAM_VERSION,\n\t\t\t\t\t\tCliOptions.get().isPortable() ? 1 : 0,\n\t\t\t\t\t\tprogram.getProfileManager().getProfiles().size(),\n\t\t\t\t\t\tprogram.getProfileManager().getActiveProfile().getName()\n\t\t\t\t\t\t));\n\t}\n\n\tpublic void addTab(final MainTabInit mainTabInit) {\n\t\tif (jFrame.isVisible()) {\n\t\t\tjLockWindow.show(GuiShared.get().updating(), new LockWorkerAdaptor() {\n\t\t\t\t@Override\n\t\t\t\tpublic void task() {\n\n\t\t\t\t}\n\n\t\t\t\t@Override\n\t\t\t\tpublic void hidden() {\n\t\t\t\t\t\n\t\t\t\t}\n\n\t\t\t\t@Override\n\t\t\t\tpublic void gui() {\n\t\t\t\t\taddTab(mainTabInit.init(), true, false);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\taddTab(mainTabInit.init(), true, false);\n\t\t}\n\t}\n\n\tpublic void addTab(final JMainTab jMainTab) {\n\t\taddTab(jMainTab, true, true);\n\t}\n\n\tpublic void addTab(final JMainTab jMainTab, final boolean focus) {\n\t\taddTab(jMainTab, focus, true);\n\t}\n\n\tpublic void addTab(final JMainTab jMainTab, final boolean focus, boolean lockWindow) {\n\t\tif (!tabs.contains(jMainTab)) {\n\t\t\tLOG.info(\"Opening tab: \" + jMainTab.getTitle());\n\t\t\tTextManager.installAll(jMainTab.getPanel());\n\t\t\tjMainTab.loadCurrentSorting();\n\t\t\tjMainTab.beforeUpdateData();\n\t\t\tjMainTab.updateData();\n\t\t\tjMainTab.afterUpdateData();\n\t\t\tif (lockWindow && jFrame.isVisible()) {\n\t\t\t\tjLockWindow.show(GuiShared.get().updating(), new LockWorkerAdaptor() {\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic void task() {\n\t\t\t\t\t\tjMainTab.updateCache();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tjMainTab.updateCache();\n\t\t\t}\n\t\t\ttabs.add(jMainTab);\n\t\t\tclosed.remove(jMainTab);\n\t\t\tjTabbedPane.addTab(jMainTab.getTitle(), jMainTab.getIcon(), jMainTab.getPanel());\n\t\t\tjTabbedPane.setTabComponentAt(jTabbedPane.getTabCount() - 1, new TabCloseButton(jMainTab));\n\t\t\tif (Settings.get().isSaveToolsOnExit() && !Settings.get().getShowTools().contains(jMainTab.getTitle())) {\n\t\t\t\tSettings.get().getShowTools().add(jMainTab.getTitle());\n\t\t\t\tprogram.saveSettings(\"Showing Tool\");\n\t\t\t}\n\t\t}\n\t\tif (focus) {\n\t\t\tLOG.info(\"Focusing tab: \" + jMainTab.getTitle());\n\t\t\tjTabbedPane.setSelectedComponent(jMainTab.getPanel());\n\t\t}\n\t}\n\n\tpublic boolean isOpen(final JMainTab jMainTab) {\n\t\treturn tabs.contains(jMainTab);\n\t}\n\n\tpublic JMainTab getSelectedTab() {\n\t\treturn tabs.get(jTabbedPane.getSelectedIndex());\n\t}\n\n\tprivate void removeTab(final JMainTab jMainTab) {\n\t\tLOG.info(\"Closing tab: \" + jMainTab.getTitle());\n\t\tint index = tabs.indexOf(jMainTab);\n\t\tjTabbedPane.removeTabAt(index);\n\t\ttabs.remove(index);\n\t\tclosed.add(jMainTab);\n\t\tjMainTab.clearData();\n\t\tif (Settings.get().isSaveToolsOnExit()) {\n\t\t\tboolean removed = Settings.get().getShowTools().remove(jMainTab.getTitle());\n\t\t\tif (removed) {\n\t\t\t\tprogram.saveSettings(\"Hiding Tool\");\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic List<JMainTab> getTabs() {\n\t\treturn tabs;\n\t}\n\n\tpublic MainMenu getMenu() {\n\t\treturn mainMenu;\n\t}\n\n\tpublic void show() {\n\t\tjFrame.setVisible(true);\n\t}\n\n\tpublic final void setSizeAndLocation(final Dimension windowSize, final Point windowLocation, final boolean windowMaximized) {\n\t\tRectangle screen = null;\n\t\tfor (GraphicsDevice screenDevices :GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()) {\n\t\t\tRectangle bounds = screenDevices.getDefaultConfiguration().getBounds();\n\t\t\tif (windowLocation.x >= bounds.x && windowLocation.x <= bounds.x + bounds.width\n\t\t\t\t\t&& windowLocation.y >= bounds.y && windowLocation.y <= bounds.y + bounds.height) {\n\t\t\t\tscreen = bounds;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (screen == null) {\n\t\t\tDimension d = Toolkit.getDefaultToolkit().getScreenSize();\n\t\t\tscreen = new Rectangle(0, 0, d.width, d.height);\n\t\t}\n\n\t\t//Fix size\n\t\tif (windowSize.width > screen.width) {\n\t\t\twindowSize.width = screen.width;\n\t\t}\n\t\tif (windowSize.height > screen.height) {\n\t\t\twindowSize.height = screen.height;\n\t\t}\n\t\tif (windowSize.width < 200) {\n\t\t\twindowSize.width = 200;\n\t\t}\n\t\tif (windowSize.height < 200) {\n\t\t\twindowSize.height = 200;\n\t\t}\n\n\t\t//Fix location\n\t\tif (windowLocation.x + windowSize.width > screen.x + screen.width) {\n\t\t\twindowLocation.x = screen.x + screen.width - windowSize.width;\n\t\t}\n\t\tif (windowLocation.y + windowSize.height > screen.y + screen.height) {\n\t\t\twindowLocation.y = screen.y + screen.height - windowSize.height;\n\t\t}\n\t\t\n\t\tif (windowLocation.x < screen.x) {\n\t\t\twindowLocation.x = screen.x;\n\t\t}\n\t\tif (windowLocation.y < screen.y) {\n\t\t\twindowLocation.y = screen.y;\n\t\t}\n\n\t\t//Set location, size, and state\n\t\tjFrame.setLocation(windowLocation);\n\t\tjFrame.setSize(windowSize);\n\t\tif (windowMaximized) {\n\t\t\tjFrame.setExtendedState(JFrame.MAXIMIZED_BOTH);\n\t\t} else {\n\t\t\tjFrame.setExtendedState(JFrame.NORMAL);\n\t\t}\n\t}\n\n\tpublic JFrame getFrame() {\n\t\treturn jFrame;\n\t}\n\n\tpublic StatusPanel getStatusPanel() {\n\t\treturn statusPanel;\n\t}\n\n\tpublic void updateSettings() {\n\t\tif (Settings.get().isWindowAutoSave()) {\n\t\t\tSettings.get().setWindowMaximized(isMaximized());\n\t\t\tif (!isMaximized()) {\n\t\t\t\tSettings.get().setWindowSize(jFrame.getSize());\n\t\t\t\tSettings.get().setWindowLocation(jFrame.getLocation());\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic void updateTabCloseButtons() {\n\t\tfor (int i =  0; i < jTabbedPane.getTabCount(); i++) {\n\t\t\tComponent component = jTabbedPane.getTabComponentAt(i);\n\t\t\tif (component instanceof TabCloseButton) {\n\t\t\t\tTabCloseButton tabCloseButton = (TabCloseButton) component;\n\t\t\t\ttabCloseButton.updateCloseButton();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate boolean isMaximized() {\n\t\treturn ((jFrame.getExtendedState() & JFrame.MAXIMIZED_BOTH) == JFrame.MAXIMIZED_BOTH);\n\t}\n\n\tprivate class ListenerClass implements WindowListener, ChangeListener, ComponentListener, ActionListener, TabMoveListener {\n\t\tprivate short move = 0;\n\t\tprivate short resize = 0;\n\n\t\t@Override\n\t\tpublic void windowOpened(final WindowEvent e) { }\n\n\t\t@Override\n\t\tpublic void windowClosing(final WindowEvent e) {\n\t\t\tprogram.exit();\n\t\t}\n\n\t\t@Override\n\t\tpublic void windowClosed(final WindowEvent e) { }\n\n\t\t@Override\n\t\tpublic void windowIconified(final WindowEvent e) { }\n\n\t\t@Override\n\t\tpublic void windowDeiconified(final WindowEvent e) { }\n\n\t\t@Override\n\t\tpublic void windowActivated(final WindowEvent e) { }\n\n\t\t@Override\n\t\tpublic void windowDeactivated(final WindowEvent e) { }\n\n\t\t@Override\n\t\tpublic void stateChanged(final ChangeEvent e) {\n\t\t\tprogram.tabChanged();\n\t\t}\n\n\t\t@Override\n\t\tpublic void componentResized(ComponentEvent e) {\n\t\t\tif (Settings.get().isWindowAutoSave() && !isMaximized()) {\n\t\t\t\tif (move > 1) { //Ignore the two first updates\n\t\t\t\t\tprogram.saveSettings(\"Window Resized\");\n\t\t\t\t} else {\n\t\t\t\t\tmove++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void componentMoved(ComponentEvent e) {\n\t\t\tif (Settings.get().isWindowAutoSave()) {\n\t\t\t\tif (resize > 1) { //Ignore the two first updates\n\t\t\t\t\ttimer.stop();\n\t\t\t\t\ttimer.start();\n\t\t\t\t} else {\n\t\t\t\t\tresize++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void componentShown(ComponentEvent e) { }\n\n\t\t@Override\n\t\tpublic void componentHidden(ComponentEvent e) { }\n\n\t\t@Override\n\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\ttimer.stop();\n\t\t\tif (isMaximized()) {\n\t\t\t\tprogram.saveSettings(\"Window Maximized\");\n\t\t\t} else {\n\t\t\t\tprogram.saveSettings(\"Window Moved\");\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void tabMoved(int from, int to) {\n\t\t\tLOG.info(\"Moving tab: \" + tabs.get(from).getTitle() + \" from: \" + from + \" to: \" + to);\n\t\t\tJMainTab jMainTab = tabs.remove(from);\n\t\t\ttabs.add(to, jMainTab);\n\t\t\tif (Settings.get().isSaveToolsOnExit()) {\n\t\t\t\tSettings.get().getShowTools().remove(jMainTab.getTitle());\n\t\t\t\tSettings.get().getShowTools().add(to, jMainTab.getTitle());\n\t\t\t\tprogram.saveSettings(\"Moved Tool\");\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static boolean isCloseable(final JMainTab jMainTab) {\n\t\treturn jMainTab.isCloseable() && !Settings.get().isToolsLocked();\n\t}\n\n\tprivate class TabCloseButton extends JPanel {\n\n\t\tprivate final JButton jClose;\n\t\tprivate final JMainTab jMainTab;\n\n\t\tpublic TabCloseButton(final JMainTab jMainTab) {\n\t\t\tsuper(new FlowLayout(FlowLayout.LEFT, 0, 0));\n\t\t\tthis.jMainTab = jMainTab;\n\t\t\tthis.setOpaque(false);\n\t\t\tJLabel jTitle = new JLabel(jMainTab.getTitle(), jMainTab.getIcon(), SwingConstants.LEFT);\n\t\t\tadd(jTitle);\n\t\t\tjClose = new JButton();\n\t\t\tjClose.setToolTipText(GuiFrame.get().close());\n\t\t\tjClose.setIcon(Images.TAB_CLOSE.getIcon());\n\t\t\tjClose.setRolloverIcon(Images.TAB_CLOSE_ACTIVE.getIcon());\n\t\t\tjClose.setUI(new BasicButtonUI());\n\t\t\tjClose.setPreferredSize(new Dimension(16, 16));\n\t\t\tjClose.setOpaque(false);\n\t\t\tjClose.setContentAreaFilled(false);\n\t\t\tjClose.setFocusable(false);\n\t\t\tjClose.setBorderPainted(false);\n\t\t\tjClose.setRolloverEnabled(true);\n\t\t\tjClose.addMouseListener(new MouseAdapter() {\n\t\t\t\t@Override\n\t\t\t\tpublic void mousePressed(final MouseEvent e) {\n\t\t\t\t\tif (e.getButton() == MouseEvent.BUTTON2) {\n\t\t\t\t\t\tif (isCloseable(jMainTab)) {\n\t\t\t\t\t\t\tremoveTab(jMainTab);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tjClose.addActionListener(new ActionListener() {\n\t\t\t\t@Override\n\t\t\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\t\t\tif (isCloseable(jMainTab)) {\n\t\t\t\t\t\tremoveTab(jMainTab);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (jMainTab.isCloseable()) {\n\t\t\t\tadd(jClose);\n\t\t\t}\n\t\t\tjClose.setEnabled(isCloseable(jMainTab));\n\t\t}\n\n\t\tprivate void updateCloseButton() {\n\t\t\tjClose.setEnabled(isCloseable(jMainTab));\n\t\t}\n\t}\n\n\t\n\t@FunctionalInterface\n\tpublic static interface MainTabInit {\n\t\tpublic JMainTab init();\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/frame/StatusPanel.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.frame;\n\nimport java.awt.Dimension;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.MouseAdapter;\nimport java.awt.event.MouseEvent;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\nimport javax.swing.GroupLayout;\nimport javax.swing.Icon;\nimport javax.swing.JButton;\nimport javax.swing.JLabel;\nimport javax.swing.JProgressBar;\nimport javax.swing.Timer;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.ColorUtil;\nimport net.nikr.eve.jeveasset.gui.shared.CopyHandler;\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\nimport net.nikr.eve.jeveasset.gui.shared.components.JFixedToolBar;\nimport net.nikr.eve.jeveasset.gui.shared.components.JGroupLayoutPanel;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo.AutoNumberFormat;\nimport net.nikr.eve.jeveasset.i18n.DialoguesStructure;\nimport net.nikr.eve.jeveasset.i18n.GuiFrame;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\nimport net.nikr.eve.jeveasset.i18n.TabsPriceHistory;\nimport net.nikr.eve.jeveasset.i18n.TabsOrders;\n\n\npublic class StatusPanel extends JGroupLayoutPanel {\n\n\t//GUI\n\tprivate final JButton jUpdate;\n\tprivate final JLabel jEveTime;\n\tprivate final JLabel jApiUpdate;\n\tprivate final JFixedToolBar jToolBar;\n\tprivate final Timer eveTimer;\n\tprivate final Timer updateTimer;\n\n\tprivate final List<Progress> progressStatus = Collections.synchronizedList(new ArrayList<>());\n\tprivate final List<JLabel> programStatus = new ArrayList<>();\n\n\tpublic StatusPanel(final Program program) {\n\t\tsuper(program);\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tlayout.setAutoCreateGaps(true);\n\t\tlayout.setAutoCreateContainerGaps(false);\n\n\t\tjToolBar = new JFixedToolBar();\n\n\t\tboolean update = canUpdate();\n\t\tjUpdate = new JButton(GuiFrame.get().programUpdateText(), Images.MISC_UPDATE.getIcon());\n\t\tjUpdate.setToolTipText(GuiFrame.get().programUpdateTip());\n\t\tjUpdate.setVisible(update);\n\t\tjUpdate.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tprogram.update();\n\t\t\t}\n\t\t});\n\t\tupdateTimer = new Timer(3600000, new ActionListener() { //Check for updates once an hour\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tboolean update = canUpdate();\n\t\t\t\tjUpdate.setVisible(update);\n\t\t\t\tif (update) {\n\t\t\t\t\tdoLayout();\n\t\t\t\t\tupdateTimer.stop(); //Update found, no reason to keep checking for updates\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tif (!update) { //Update found, no reason to keep checking for updates\n\t\t\tupdateTimer.start();\n\t\t}\n\n\t\tjApiUpdate = createIcon(Images.DIALOG_UPDATE.getIcon(), GuiFrame.get().updatable());\n\t\tprogramStatus.add(jApiUpdate);\n\n\t\tjEveTime = createLabel(GuiFrame.get().eve(), Images.MISC_EVE.getIcon(), null);\n\t\tprogramStatus.add(jEveTime);\n\n\t\teveTimer = new Timer(1000, listener);\n\t\teveTimer.start();\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jToolBar, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jToolBar, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t);\n\t}\n\n\tpublic Progress addProgress(UpdateType updateType, ProgressControl progressShow) {\n\t\tProgress progress = new Progress(updateType, progressShow);\n\t\tprogressStatus.add(progress);\n\t\treturn progress;\n\t}\n\n\tpublic boolean updateing(UpdateType updateType) {\n\t\tsynchronized (progressStatus) {\n\t\t\tfor (Progress progress : progressStatus) {\n\t\t\t\tif (progress.getTaskType() == updateType) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic int updateInProgress() {\n\t\treturn progressStatus.size();\n\t}\n\n\tpublic void cancelUpdates() {\n\t\tsynchronized (progressStatus) {\n\t\t\tfor (Progress progress : progressStatus) {\n\t\t\t\tprogress.cancel();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic void setPauseUpdates(boolean pause) {\n\t\tsynchronized (progressStatus) {\n\t\t\tfor (Progress progress : progressStatus) {\n\t\t\t\tprogress.setPause(pause);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic void removeProgress(Progress progress) {\n\t\tprogressStatus.remove(progress);\n\t\tdoLayout();\n\t}\n\n\tpublic void tabChanged() {\n\t\tdoLayout();\n\t}\n\n\tprivate boolean canUpdate() {\n\t\treturn (program.checkProgramUpdate() || program.checkDataUpdate()) && !Program.isDevBuild();\n\t}\n\n\tprivate void doLayout() {\n\t\tjToolBar.removeAll();\n\t\taddSpace(5);\n\t\tif (jUpdate.isVisible()) {\n\t\t\tjToolBar.add(jUpdate);\n\t\t}\n\t\tsynchronized (progressStatus) {\n\t\t\tfor (Progress progress : progressStatus) {\n\t\t\t\tif (progress.isVisible()) {\n\t\t\t\t\tjToolBar.add(progress.getProgress());\n\t\t\t\t\taddSpace(10);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (JLabel jLabel : programStatus) {\n\t\t\tjToolBar.add(jLabel);\n\t\t\tif (jLabel instanceof JStatusLabel) {\n\t\t\t\taddSpace(6);\n\t\t\t} else {\n\t\t\t\taddSpace(8);\n\t\t\t}\n\t\t}\n\t\tfor (JLabel jLabel : program.getMainWindow().getSelectedTab().getStatusbarLabels()) {\n\t\t\tjToolBar.add(jLabel);\n\t\t\tif (jLabel instanceof JStatusLabel) {\n\t\t\t\taddSpace(6);\n\t\t\t} else {\n\t\t\t\taddSpace(8);\n\t\t\t}\n\t\t}\n\t\taddSpace(10);\n\t\tthis.getPanel().updateUI();\n\n\t}\n\n\tpublic void timerTicked(final boolean updatable) {\n\t\tif (updatable) {\n\t\t\tjApiUpdate.setIcon(Images.DIALOG_UPDATE.getIcon());\n\t\t\tjApiUpdate.setToolTipText(GuiFrame.get().updatable());\n\t\t} else {\n\t\t\tjApiUpdate.setIcon(Images.DIALOG_UPDATE_DISABLED.getIcon());\n\t\t\tjApiUpdate.setToolTipText(GuiFrame.get().not());\n\t\t}\n\t}\n\n\tpublic static JLabel createIcon(final Icon icon, final String toolTip) {\n\t\tJLabel jLabel = new JLabel();\n\t\tjLabel.setIcon(icon);\n\t\tjLabel.setHorizontalAlignment(JLabel.CENTER);\n\t\tjLabel.setToolTipText(toolTip);\n\t\treturn jLabel;\n\t}\n\n\tpublic static JStatusLabel createLabel(final String toolTip, final Icon icon, final AutoNumberFormat format) {\n\t\treturn new JStatusLabel(toolTip, icon, format);\n\t}\n\n\tprivate void addSpace(final int width) {\n\t\tJLabel jSpace = new JLabel();\n\t\tjSpace.setMinimumSize(new Dimension(width, 25));\n\t\tjSpace.setPreferredSize(new Dimension(width, 25));\n\t\tjSpace.setMaximumSize(new Dimension(width, 25));\n\t\tjToolBar.add(jSpace);\n\t}\n\n\tprivate class ListenerClass implements ActionListener {\n\t\t@Override\n\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\tjEveTime.setText(Formatter.eveTime(Settings.getNow()));\n\t\t}\n\t}\n\n\tpublic class Progress {\n\n\t\tprivate final UpdateType updateType;\n\t\tprivate final String text;\n\t\tprivate final ProgressControl progressControl;\n\t\tprivate final JProgressBar jProgress;\n\t\tprivate final long id = System.currentTimeMillis();\n\t\tprivate boolean done = false;\n\n\t\tpublic Progress(UpdateType updateType, ProgressControl progressShow) {\n\t\t\tthis.updateType = updateType;\n\t\t\tthis.progressControl = progressShow;\n\t\t\tswitch (updateType) {\n\t\t\t\tcase STRUCTURE:\n\t\t\t\t\ttext = DialoguesStructure.get().updateTitle();\n\t\t\t\t\tbreak;\n\t\t\t\tcase PUBLIC_MARKET_ORDERS:\n\t\t\t\t\ttext = TabsOrders.get().updateTitle();\n\t\t\t\t\tbreak;\n\t\t\t\tcase PRICE_HISTORY:\n\t\t\t\t\ttext = TabsPriceHistory.get().updateTitle();\n\t\t\t\t\tbreak;\n\t\t\t\tcase TOOLS:\n\t\t\t\t\ttext = GuiShared.get().toolsUpdateTitle();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\ttext = \"\";\n\t\t\t}\n\t\t\tjProgress = new JProgressBar(0, 100);\n\t\t\tDimension size = new Dimension(Program.getButtonsWidth() * 2, Program.getButtonsHeight());\n\t\t\tjProgress.setMinimumSize(size);\n\t\t\tjProgress.setPreferredSize(size);\n\t\t\tjProgress.setMaximumSize(size);\n\t\t\tjProgress.setVisible(false);\n\n\t\t\tjProgress.setStringPainted(true);\n\t\t\tif (progressShow.isAuto()) {\n\t\t\t\tjProgress.setString(text);\n\t\t\t} else {\n\t\t\t\tjProgress.setString(GuiFrame.get().clickToShow(text));\n\t\t\t\tjProgress.addMouseListener(new MouseAdapter() {\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic void mouseClicked(MouseEvent e) {\n\t\t\t\t\t\tprogressShow.show();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tpublic void setDone(boolean done) {\n\t\t\tthis.done = done;\n\t\t\tif (done) {\n\t\t\t\tjProgress.setString(GuiFrame.get().clickToApply(text));\n\t\t\t\tjProgress.setValue(100);\n\t\t\t}\n\t\t}\n\n\t\tpublic boolean isDone() {\n\t\t\treturn done;\n\t\t}\n\n\t\tpublic boolean isVisible() {\n\t\t\treturn jProgress.isVisible();\n\t\t}\n\n\t\tpublic void setVisible(boolean aFlag) {\n\t\t\tjProgress.setVisible(aFlag);\n\t\t\tdoLayout();\n\t\t}\n\n\t\tpublic void setIndeterminate(boolean newValue) {\n\t\t\tjProgress.setIndeterminate(newValue);\n\t\t}\n\n\t\tpublic void setValue(int n) {\n\t\t\tjProgress.setValue(n);\n\t\t}\n\n\t\tprivate UpdateType getTaskType() {\n\t\t\treturn updateType;\n\t\t}\n\n\t\tprivate void cancel() {\n\t\t\tprogressControl.cancel();\n\t\t}\n\n\t\tpublic void setPause(boolean pause) {\n\t\t\tprogressControl.setPause(pause);\n\t\t}\n\n\t\tprivate JProgressBar getProgress() {\n\t\t\treturn jProgress;\n\t\t}\n\n\t\t@Override\n\t\tpublic int hashCode() {\n\t\t\tint hash = 7;\n\t\t\thash = 41 * hash + (int) (this.id ^ (this.id >>> 32));\n\t\t\treturn hash;\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean equals(Object obj) {\n\t\t\tif (this == obj) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (obj == null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (getClass() != obj.getClass()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfinal Progress other = (Progress) obj;\n\t\t\tif (this.id != other.id) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tpublic static class JStatusLabel extends JLabel {\n\n\t\tprivate final AutoNumberFormat format;\n\t\tprivate String text = null;\n\t\tprivate Number number = null;\n\n\t\tpublic JStatusLabel(final String toolTip, final Icon icon, AutoNumberFormat format) {\n\t\t\tthis.format = format;\n\t\t\tinit(toolTip, icon);\n\t\t}\n\n\t\tprivate void init(final String toolTip, final Icon icon) {\n\t\t\tsetIcon(icon);\n\t\t\tif (ColorUtil.isBrightColor(getBackground())) { //Light background color\n\t\t\t\tsetForeground(getBackground().darker().darker().darker());\n\t\t\t} else { //Dark background color\n\t\t\t\tsetForeground(getBackground().brighter().brighter());\n\t\t\t}\n\t\t\tsetIconTextGap(3);\n\t\t\tsetToolTipText(GuiShared.get().clickToCopyWrap(toolTip));\n\t\t\tsetHorizontalAlignment(JLabel.LEFT);\n\n\t\t\taddMouseListener(new MouseAdapter() {\n\t\t\t\t@Override\n\t\t\t\tpublic void mousePressed(MouseEvent e) {\n\t\t\t\t\tif (e.getButton() == MouseEvent.BUTTON1) {\n\t\t\t\t\t\tif (number != null) {\n\t\t\t\t\t\t\tCopyHandler.toClipboard(Formatter.copyFormat(number));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tCopyHandler.toClipboard(text);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinal Icon restore;\n\t\t\t\t\t\tif (icon == null) {\n\t\t\t\t\t\t\trestore = getIcon();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\trestore = icon;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tJStatusLabel.super.setText(GuiShared.get().selectionCopiedToClipboard());\n\t\t\t\t\t\tsetIcon(Images.EDIT_COPY.getIcon());\n\t\t\t\t\t\tfinal Timer timer = new Timer(JMenuInfo.COPY_DELAY, null);\n\t\t\t\t\t\ttimer.addActionListener(new ActionListener() {\n\t\t\t\t\t\t\t@Override\n\t\t\t\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\t\t\t\tupdateText();\n\t\t\t\t\t\t\t\tsetIcon(restore);\n\t\t\t\t\t\t\t\ttimer.stop();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\ttimer.start();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t@Override\n\t\tpublic void setText(String text) {\n\t\t\tthis.text = text;\n\t\t\tthis.number = null;\n\t\t\tupdateText();\n\t\t}\n\n\t\tpublic void setNumber(Number number) {\n\t\t\tthis.text = null;\n\t\t\tthis.number = number;\n\t\t\tupdateText();\n\t\t}\n\n\t\tpublic void setNumber(String text, double number) {\n\t\t\tthis.text = text;\n\t\t\tthis.number = number;\n\t\t\tupdateText();\n\t\t}\n\n\t\tpublic void updateText() {\n\t\t\tif (text != null && number != null && format != null) {\n\t\t\t\tsuper.setText(text + JMenuInfo.format(number, format));\n\t\t\t} else if (text != null) {\n\t\t\t\tsuper.setText(text);\n\t\t\t} else if (number != null && format != null) {\n\t\t\t\tsuper.setText(JMenuInfo.format(number, format));\n\t\t\t} else {\n\t\t\t\tsuper.setText(\"\");\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static interface ProgressControl {\n\t\tpublic boolean isAuto();\n\t\tpublic void show();\n\t\tpublic void cancel();\n\t\tpublic void setPause(boolean pause);\n\t}\n\n\tpublic static enum UpdateType {\n\t\tSTRUCTURE, PUBLIC_MARKET_ORDERS, PRICE_HISTORY, TOOLS\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/images/Images.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.images;\n\nimport java.awt.Color;\nimport java.awt.Graphics2D;\nimport java.awt.Image;\nimport java.awt.image.BufferedImage;\nimport java.io.IOException;\nimport javax.imageio.ImageIO;\nimport javax.swing.Icon;\nimport javax.swing.ImageIcon;\nimport net.nikr.eve.jeveasset.SplashUpdater;\nimport net.nikr.eve.jeveasset.data.api.my.MyLoyaltyPoints;\nimport net.nikr.eve.jeveasset.data.api.my.MyNpcStanding;\nimport net.nikr.eve.jeveasset.io.online.EveImageGetter;\nimport net.nikr.eve.jeveasset.io.online.EveImageGetter.ImageCategory;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\npublic enum Images {\n\tASSETS_AVERAGE (\"assets_average.png\"),\n\tASSETS_VOLUME (\"assets_volume.png\"),\n\n\tJOBS_INVENTION_SUCCESS (\"jobs_invention_success.png\"),\n\n\tORDERS_SELL (\"orders_sell.png\"),\n\tORDERS_SOLD (\"orders_sold.png\"),\n\tORDERS_BUY (\"orders_buy.png\"),\n\tORDERS_BOUGHT (\"orders_bought.png\"),\n\tORDERS_ESCROW (\"orders_escrow.png\"),\n\tORDERS_TO_COVER (\"orders_to_cover.png\"),\n\n\tDIALOG_UPDATE (\"dialog_update.png\"),\n\tDIALOG_UPDATE_DISABLED (\"dialog_update_disabled.png\"),\n\tDIALOG_ACCOUNTS (\"dialog_accounts.png\"),\n\tDIALOG_PROFILES (\"dialog_profiles.png\"),\n\tDIALOG_SETTINGS (\"dialog_settings.png\"),\n\tDIALOG_ABOUT (\"dialog_about.png\"),\n\tDIALOG_CSV_EXPORT (\"dialog_csv_export.png\"),\n\n\tEDIT_COPY (\"edit_copy.png\"),\n\tEDIT_CUT (\"edit_cut.png\"),\n\tEDIT_PASTE (\"edit_paste.png\"),\n\tEDIT_EDIT (\"edit_edit.png\"),\n\tEDIT_RENAME (\"edit_rename.png\"),\n\tEDIT_DATE (\"edit_date.png\"),\n\tEDIT_DELETE (\"edit_delete.png\"),\n\tEDIT_DELETE_WHITE (\"edit_delete_white.png\"),\n\tEDIT_ADD (\"edit_add.png\"),\n\tEDIT_ADD_WHITE (\"edit_add_white.png\"),\n\tEDIT_SET (\"edit_set.png\"),\n\tEDIT_IMPORT (\"edit_import.png\"),\n\tEDIT_EDIT_WHITE (\"edit_edit_white.png\"),\n\tEDIT_EDIT_BACKGROUND (\"edit_edit_background.png\"),\n\tEDIT_REDO (\"edit_redo.png\"),\n\tEDIT_UNDO (\"edit_undo.png\"),\n\tEDIT_SHOW (\"edit_show.png\"),\n\n\tFILTER_CLEAR (\"filter_clear.png\"),\n\tFILTER_SAVE (\"filter_save.png\"),\n\tFILTER_LOAD (\"filter_load.png\"),\n\tFILTER_LOAD_DEFAULT (\"filter_load_default.png\"),\n\tFILTER_NOT_CONTAIN (\"filter_not_contain.png\"),\n\tFILTER_CONTAIN (\"filter_contain.png\"),\n\tFILTER_NOT_EQUAL (\"filter_not_equal.png\"),\n\tFILTER_REGEX (\"filter_regex.png\"),\n\tFILTER_EQUAL (\"filter_equal.png\"),\n\tFILTER_EQUAL_DATE (\"filter_equal_date.png\"),\n\tFILTER_NOT_EQUAL_DATE (\"filter_not_equal_date.png\"),\n\tFILTER_GREATER_THAN (\"filter_greater_than.png\"),\n\tFILTER_LAST_DAYS (\"filter_last_days.png\"),\n\tFILTER_NEXT_DAYS (\"filter_next_days.png\"),\n\tFILTER_LAST_HOURS (\"filter_last_hours.png\"),\n\tFILTER_NEXT_HOURS (\"filter_next_hours.png\"),\n\tFILTER_LESS_THAN (\"filter_less_than.png\"),\n\tFILTER_AFTER (\"filter_after.png\"),\n\tFILTER_BEFORE (\"filter_before.png\"),\n\tFILTER_CONTAIN_COLUMN(\"filter_contain_column.png\"),\n\tFILTER_EQUAL_COLUMN (\"filter_equal_column.png\"),\n\tFILTER_NOT_CONTAIN_COLUMN (\"filter_not_contain_column.png\"),\n\tFILTER_NOT_EQUAL_COLUMN (\"filter_not_equal_column.png\"),\n\tFILTER_GREATER_THAN_COLUMN (\"filter_greater_than_column.png\"),\n\tFILTER_LESS_THAN_COLUMN (\"filter_less_than_column.png\"),\n\tFILTER_AFTER_COLUMN (\"filter_after_column.png\"),\n\tFILTER_BEFORE_COLUMN (\"filter_before_column.png\"),\n\n\tLINK_EVE_MARKETDATA (\"link_eve_marketdata.png\"),\n\tLINK_EVEINFO (\"link_eveinfo.png\"),\n\tLINK_DOTLAN_EVEMAPS (\"link_dotlan_evemaps.png\"),\n\tLINK_LOOKUP (\"link_lookup.png\"),\n\tLINK_CHRUKER (\"link_chruker.png\"),\n\tLINK_EVE_TYCOON (\"link_eve_tycoon.png\"),\n\tLINK_JANICE (\"link_janice.png\"),\n\tLINK_JANICE_32 (\"link_janice_32.png\"),\n\tLINK_FUZZWORK (\"link_fuzzwork.png\"),\n\tLINK_ZKILLBOARD (\"link_zkillboard.png\"),\n\tLINK_ZKILLBOARD_32 (\"link_zkillboard_32.png\"),\n\tLINK_ADAM4EVE (\"link_adam4eve.png\"),\n\tLINK_EVE_COOKBOOK (\"link_eve_cookbook.png\"),\n\tLINK_EVEMISSIONEER (\"link_evemissioneer.png\"),\n\tLINK_EVE_REF (\"link_eve_ref.png\"),\n\tLINK_EVE_MARKET_BROWSER (\"link_eve_market_browser.png\"),\n\tLINK_JITA_SPACE (\"link_jita_space.png\"),\n\tLINK_EVECONOMY (\"link_eveconomy.png\"),\n\tLINK_QUANTUM_ANOMALY (\"link_quantum_anomaly.png\"),\n\n\tLOC_GROUPS (\"loc_groups.png\"),\n\tLOC_PIN_COMMAND (\"loc_pin_command.png\"),\n\tLOC_PIN_EXTRACTOR (\"loc_pin_extractor.png\"),\n\tLOC_PIN_PROCESSOR (\"loc_pin_processor.png\"),\n\tLOC_PIN_SPACEPORT (\"loc_pin_spaceport.png\"),\n\tLOC_PIN_STORAGE (\"loc_pin_storage.png\"),\n\tLOC_PLANET (\"loc_planet.png\"),\n\tLOC_STATION (\"loc_station.png\"),\n\tLOC_SYSTEM (\"loc_system.png\"),\n\tLOC_CONSTELLATION (\"loc_constellation.png\"),\n\tLOC_REGION (\"loc_region.png\"),\n\tLOC_CONTAINER (\"loc_container.png\"),\n\tLOC_CONTAINER_WHITE (\"loc_container_white.png\"),\n\tLOC_LOCATIONS (\"loc_locations.png\"),\n\tLOC_FLAG (\"loc_flag.png\"),\n\tLOC_OWNER (\"loc_owner.png\"),\n\tLOC_INCLUDE (\"loc_include.png\"),\n\tLOC_HANGAR_ITEMS (\"loc_hangar_items.png\"),\n\tLOC_HANGAR_SHIPS (\"loc_hangar_ships.png\"),\n\tLOC_DELIVERIES (\"loc_deliveries.png\"),\n\tLOC_OFFICE (\"loc_office.png\"),\n\tLOC_DIVISION (\"loc_division.png\"),\n\tLOC_INDUSTRY (\"loc_industry.png\"),\n\tLOC_MARKET (\"loc_market.png\"),\n\tLOC_CONTRACTS (\"loc_contracts.png\"),\n\tLOC_SAFTY (\"loc_safty.png\"),\n\tLOC_SHIP (\"loc_ship.png\"),\n\tLOC_CLONEBAY (\"loc_clonebay.png\"),\n\n\tINCLUDE_ASSETS_SELECTED (\"include_assets_selected.png\"),\n\tINCLUDE_ASSETS (\"include_assets.png\"),\n\tINCLUDE_JOBS_SELECTED (\"include_jobs_selected.png\"),\n\tINCLUDE_JOBS (\"include_jobs.png\"),\n\tINCLUDE_CONTRACTS_SELECTED (\"include_contracts_selected.png\"),\n\tINCLUDE_CONTRACTS (\"include_contracts.png\"),\n\tINCLUDE_ORDERS_SELECTED (\"include_orders_selected.png\"),\n\tINCLUDE_ORDERS (\"include_orders.png\"),\n\tINCLUDE_PACKAGED (\"include_packaged.png\"),\n\tINCLUDE_ADD_FILTER (\"include_add_filter.png\"),\n\n\tMISC_EVE (\"misc_eve.png\"),\n\tMISC_ESI (\"misc_esi.png\"),\n\tMISC_EXIT (\"misc_exit.png\"),\n\tMISC_HELP (\"misc_help.png\"),\n\tMISC_EXPANDED (\"misc_expanded.png\"),\n\tMISC_COLLAPSED (\"misc_collapsed.png\"),\n\tMISC_EXPANDED_WHITE (\"misc_expanded_white.png\"),\n\tMISC_COLLAPSED_WHITE (\"misc_collapsed_white.png\"),\n\tMISC_COLLAPSE (\"misc_collapse.png\"),\n\tMISC_AND (\"misc_and.png\"),\n\tMISC_ASSETS_32 (\"misc_assets_32.png\"),\n\tMISC_ASSETS_64 (\"misc_assets_64.png\"),\n\tMISC_DEBUG (\"misc_debug.png\"),\n\tMISC_UPDATE (\"misc_update.png\"),\n\tMISC_RUNS (\"misc_runs.png\"),\n\tMISC_BLUEPRINT (\"misc_blueprint.png\"),\n\tMISC_BPC (\"misc_bpc.png\"),\n\tMISC_BPO (\"misc_bpo.png\"),\n\tMISC_COPYING (\"misc_copying.png\"),\n\tMISC_INVENTION (\"misc_invention.png\"),\n\tMISC_MANUFACTURING (\"misc_manufacturing.png\"),\n\tMISC_SUM (\"misc_sum.png\"),\n\tMISC_FORMULA (\"misc_formula.png\"),\n\tMISC_REACTION (\"misc_reaction.png\"),\n\tMISC_CONTRACTS (\"misc_contracts.png\"),\n\tMISC_CONTRACTS_CORP (\"misc_contracts_corp.png\"),\n\tMISC_MARKET_ORDERS (\"misc_market_orders.png\"),\n\tMISC_AVG (\"misc_avg.png\"),\n\tMISC_COUNT (\"misc_count.png\"),\n\tMISC_INFO (\"misc_info.png\"),\n\tMISC_MAX (\"misc_max.png\"),\n\tMISC_MIN (\"misc_min.png\"),\n\tMISC_STATUS (\"misc_status.png\"),\n\tMISC_SOUNDS (\"misc_sounds.png\"),\n\tMISC_PLAY (\"misc_play.png\"),\n\tMISC_STOP (\"misc_stop.png\"),\n\tMISC_PARTNER (\"misc_partner.png\"),\n\tMISC_PARTYPARROT (\"misc_partyparrot.gif\"),\n\tMISC_MATERIALS (\"misc_materials.png\"),\n\tMISC_ORE (\"misc_ore.png\"),\n\tMISC_COMMODITY (\"misc_commodity.png\"),\n\tMISC_PI (\"misc_pi.png\"),\n\tMISC_XML (\"misc_xml.png\"),\n\tMISC_DATE (\"misc_date.png\"),\n\tMISC_NUMBER (\"misc_number.png\"),\n\tMISC_DISCORD (\"misc_discord.png\"),\n\tMISC_MISC (\"misc_misc.png\"),\n\tMISC_OWNERS (\"misc_owners.png\"),\n\n\tSETTINGS_TOOLS (\"settings_tools.png\"),\n\tSETTINGS_PRICE_DATA (\"settings_price_data.png\"),\n\tSETTINGS_USER_PRICE (\"settings_user_price.png\"),\n\tSETTINGS_USER_NAME (\"settings_user_name.png\"),\n\tSETTINGS_REPROCESSING (\"settings_reprocessing.png\"),\n\tSETTINGS_PROXY (\"settings_proxy.png\"),\n\tSETTINGS_WINDOW (\"settings_window.png\"),\n\tSETTINGS_COLORS (\"settings_colors.png\"),\n\tSETTINGS_COLOR_PICKER (\"settings_color_picker.png\"),\n\tSETTINGS_COLOR_CHECK_BLACK (\"settings_color_check_black.png\"),\n\tSETTINGS_COLOR_CHECK_BLACK_ALPHA (\"settings_color_check_black_alpha.png\"),\n\tSETTINGS_COLOR_CHECK_WHITE (\"settings_color_check_white.png\"),\n\tSETTINGS_COLOR_CHECK_WHITE_ALPHA (\"settings_color_check_white_alpha.png\"),\n\tSETTINGS_COLOR_FOREGROUND (\"settings_color_foreground.png\"),\n\tSETTINGS_COLOR_BACKGROUND (\"settings_color_background.png\"),\n\tSETTINGS_MANUFACTURING (\"settings_manufacturing.png\"),\n\n\tSLOTS_CONTRACTS (\"slots_contracts.png\"),\n\tSLOTS_CONTRACTS_CORP (\"slots_contracts_corp.png\"),\n\tSLOTS_MANUFACTURING (\"slots_manufacturing.png\"),\n\tSLOTS_MARKET_ORDERS (\"slots_market_orders.png\"),\n\tSLOTS_REACTIONS (\"slots_reactions.png\"),\n\tSLOTS_RESEARCH (\"slots_research.png\"),\n\n\tSTOCKPILE_SHOPPING_LIST (\"stockpile_shopping_list.png\"),\n\n\tTAB_CLOSE (\"tab_close.png\"),\n\tTAB_CLOSE_ACTIVE (\"tab_close_active.png\"),\n\n\tTAG_GRAY (\"tag_gray.png\"),\n\tTAG_TICK (\"tag_tick.png\"),\n\n\tTABLE_COLUMN_RESIZE (\"table_column_resize.png\"),\n\tTABLE_COLUMN_SHOW (\"table_column_show.png\"),\n\n\tTOOL_ASSETS (\"tool_assets.png\"),\n\tTOOL_OVERVIEW (\"tool_overview.png\"),\n\tTOOL_MARKET_ORDERS (\"tool_market_orders.png\"),\n\tTOOL_VALUES (\"tool_values.png\"),\n\tTOOL_VALUE_TABLE (\"tool_value_table.png\"),\n\tTOOL_INDUSTRY_JOBS (\"tool_industry_jobs.png\"),\n\tTOOL_SLOTS (\"tool_slots.png\"),\n\tTOOL_ROUTING (\"tool_routing.png\"),\n\tTOOL_MATERIALS (\"tool_materials.png\"),\n\tTOOL_SHIP_LOADOUTS (\"tool_ship_loadouts.png\"),\n\tTOOL_STOCKPILE (\"tool_stockpile.png\"),\n\tTOOL_ITEMS (\"tool_items.png\"),\n\tTOOL_TRACKER (\"tool_tracker.png\"),\n\tTOOL_REPROCESSED (\"tool_reprocessed.png\"),\n\tTOOL_CONTRACTS (\"tool_contracts.png\"),\n\tTOOL_TRANSACTION (\"tool_transaction.png\"),\n\tTOOL_JOURNAL (\"tool_journal.png\"),\n\tTOOL_TREE (\"tool_tree.png\"),\n\tTOOL_PRICE_HISTORY (\"tool_price_history.png\"),\n\tTOOL_SKILLS (\"tool_skills.png\"),\n\tTOOL_MINING (\"tool_mining.png\"),\n\tTOOL_MINING_LOG (\"tool_mining_log.png\"),\n\tTOOL_MINING_GRAPH (\"tool_mining_graph.png\"),\n\tTOOL_EXTRACTIONS (\"tool_extractions.png\"),\n\tTOOL_PRICE_CHANGE (\"tool_price_change.png\"),\n\tTOOL_LOYALTY_POINTS (\"tool_loyalty_points.png\"),\n\tTOOL_NPC_STANDING (\"tool_npc_standing.png\"),\n\tTOOL_AGENTS (\"tool_agents.png\"),\n\n\tUPDATE_NOT_STARTED (\"update_not_started.png\"),\n\tUPDATE_WORKING (\"update_working.png\"),\n\tUPDATE_CANCELLED (\"update_cancelled.png\"),\n\tUPDATE_DONE_OK (\"update_done_ok.png\"),\n\tUPDATE_DONE_INFO (\"update_done_info.png\"),\n\tUPDATE_DONE_SOME (\"update_done_some.png\"),\n\tUPDATE_DONE_ERROR (\"update_done_error.png\");\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(Images.class);\n\tprivate final String filename;\n\tprivate BufferedImage image = null;\n\tprivate Icon icon;\n\n\tImages(final String filename) {\n\t\tthis.filename = filename;\n\t}\n\n\tpublic Icon getIcon() {\n\t\tload();\n\t\treturn icon;\n\t}\n\n\tpublic Image getImage() {\n\t\tload();\n\t\treturn image;\n\t}\n\n\tpublic String getFilename() {\n\t\treturn filename;\n\t}\n\n\tprivate boolean load() {\n\t\tif (image == null) {\n\t\t\timage = getBufferedImage(filename);\n\t\t\ticon = new ImageIcon(image);\n\t\t}\n\t\treturn (image != null);\n\t}\n\n\tpublic static boolean preload() {\n\t\tint count = 0;\n\t\tboolean ok = true;\n\t\tfor (Images i : Images.values()) {\n\t\t\tif (!i.load()) {\n\t\t\t\tok = false;\n\t\t\t}\n\t\t\tcount++;\n\t\t\tSplashUpdater.setSubProgress((int) (count * 100.0 / Images.values().length));\n\t\t}\n\t\tSplashUpdater.setSubProgress(100);\n\t\treturn ok;\n\t}\n\n\tpublic static BufferedImage getBufferedImage(final String s) {\n\t\ttry {\n\t\t\tjava.net.URL imgURL = Images.class.getResource(s);\n\t\t\tif (imgURL != null) {\n\t\t\t\treturn ImageIO.read(imgURL);\n\t\t\t} else {\n\t\t\t\tLOG.warn(\"image: \" + s + \" not found (URL == null)\");\n\t\t\t}\n\t\t} catch (IOException ex) {\n\t\t\tLOG.warn(\"image: \" + s + \" not found (IOException)\");\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic static BufferedImage getBufferedImage(int corporationID, ImageCategory imageCategory) {\n\t\treturn EveImageGetter.getBufferedImage(corporationID, imageCategory);\n\t}\n\n\tpublic static ImageIcon getIcon(int corporationID, ImageCategory imageCategory) {\n\t\tBufferedImage bufferedImage = getBufferedImage(corporationID, imageCategory);\n\t\tif (bufferedImage != null) {\n\t\t\tbufferedImage = setBackground(bufferedImage, Color.BLACK);\n\t\t\treturn new ImageIcon(bufferedImage);\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic static BufferedImage getBufferedImage(MyNpcStanding npcStanding) {\n\t\treturn EveImageGetter.getBufferedImage(npcStanding);\n\t}\n\n\tpublic static ImageIcon getIcon(MyNpcStanding npcStanding) {\n\t\tBufferedImage bufferedImage = getBufferedImage(npcStanding);\n\t\tif (bufferedImage != null) {\n\t\t\tbufferedImage = setBackground(bufferedImage, Color.BLACK);\n\t\t\treturn new ImageIcon(bufferedImage);\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic static BufferedImage getBufferedImage(MyLoyaltyPoints loyaltyPoints) {\n\t\treturn EveImageGetter.getBufferedImage(loyaltyPoints);\n\t}\n\n\tpublic static ImageIcon getIcon(MyLoyaltyPoints loyaltyPoints) {\n\t\tBufferedImage bufferedImage = getBufferedImage(loyaltyPoints);\n\t\tif (bufferedImage != null) {\n\t\t\tbufferedImage = setBackground(bufferedImage, Color.BLACK);\n\t\t\treturn new ImageIcon(bufferedImage);\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate static BufferedImage setBackground(BufferedImage input, Color color) {\n\t\tBufferedImage output = new BufferedImage(input.getWidth(), input.getHeight(), BufferedImage.TYPE_INT_RGB); \n\t\tGraphics2D g2d = output.createGraphics();\n\t\tg2d.setBackground(color);\n\t\tg2d.clearRect(0, 0, input.getWidth(), input.getHeight());\n\t\tg2d.drawImage(input, 0, 0, null);\n\t\tg2d.dispose();\n\t\treturn output;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/ColorIcon.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared;\r\n\r\nimport java.awt.Color;\r\nimport java.awt.Component;\r\nimport java.awt.Graphics;\r\nimport java.awt.Graphics2D;\r\nimport java.awt.RenderingHints;\r\nimport javax.swing.Icon;\r\n\r\n\r\npublic class ColorIcon implements Icon {\r\n\r\n\tprivate final Color color;\r\n\r\n\tpublic ColorIcon(Color color) {\r\n\t\tthis.color = color;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void paintIcon(Component c, Graphics g, int x, int y) {\r\n\t\tGraphics2D g2d = (Graphics2D) g;\r\n\t\t//Render settings\r\n\t\t//g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);\r\n\t\tg2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);\r\n\t\tg2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);\r\n\r\n\t\t//Border\r\n\t\tg2d.setColor(Color.BLACK);\r\n\t\tg2d.fillOval(x + 2, y + 2, getIconWidth() - 4, getIconHeight() - 4);\r\n\r\n\t\t//Background\r\n\t\tg2d.setColor(color);\r\n\t\tg2d.fillOval(x + 3, y + 3, getIconWidth() - 6, getIconHeight() - 6);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int getIconWidth() {\r\n\t\treturn 16;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int getIconHeight() {\r\n\t\treturn 16;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/ColorUtil.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared;\r\n\r\nimport java.awt.Color;\r\n\r\n\r\npublic class ColorUtil {\r\n\r\n\tprivate ColorUtil() { }\r\n\r\n\tpublic static double luminance(Color color) {\r\n\t\treturn (0.299 * color.getRed() + 0.587 * color.getGreen() + 0.114 * color.getBlue()) / 255;\r\n\t}\r\n\r\n\tpublic static boolean isBrightColor(Color color) {\r\n\t\treturn luminance(color) > 0.5;\r\n\t}\r\n\r\n\tpublic static Color brighter(Color c, double factor) {\r\n\t\tint r = c.getRed();\r\n\t\tint g = c.getGreen();\r\n\t\tint b = c.getBlue();\r\n\r\n\t\tif (factor > 1) {\r\n\t\t\tfactor = 1;\r\n\t\t} else if (factor < 0) {\r\n\t\t\tfactor = 0;\r\n\t\t}\r\n\t\t/* From 2D group:\r\n\t * 1. black.brighter() should return grey\r\n\t * 2. applying brighter to blue will always return blue, brighter\r\n\t * 3. non pure color (non zero rgb) will eventually return white\r\n\t\t */\r\n\t\tint i = (int) (1.0 / (1.0 - factor));\r\n\t\tif (r == 0 && g == 0 && b == 0) {\r\n\t\t\treturn new Color(i, i, i);\r\n\t\t}\r\n\t\tif (r > 0 && r < i) {\r\n\t\t\tr = i;\r\n\t\t}\r\n\t\tif (g > 0 && g < i) {\r\n\t\t\tg = i;\r\n\t\t}\r\n\t\tif (b > 0 && b < i) {\r\n\t\t\tb = i;\r\n\t\t}\r\n\r\n\t\treturn new Color(\r\n\t\t\t\tMath.min((int) (r / factor), 255),\r\n\t\t\t\tMath.min((int) (g / factor), 255),\r\n\t\t\t\tMath.min((int) (b / factor), 255));\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/CopyHandler.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared;\r\n\r\nimport ca.odell.glazedlists.SeparatorList;\r\nimport java.awt.Toolkit;\r\nimport java.awt.datatransfer.Clipboard;\r\nimport java.awt.datatransfer.DataFlavor;\r\nimport java.awt.datatransfer.StringSelection;\r\nimport java.awt.datatransfer.Transferable;\r\nimport java.awt.datatransfer.UnsupportedFlavorException;\r\nimport java.awt.event.ActionEvent;\r\nimport java.io.IOException;\r\nimport java.util.Date;\r\nimport javax.swing.AbstractAction;\r\nimport javax.swing.AbstractButton;\r\nimport javax.swing.JTable;\r\nimport javax.swing.text.JTextComponent;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.HierarchyColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.NumberValue;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class CopyHandler {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(CopyHandler.class);\r\n\r\n\tpublic static void installCopyAction(AbstractButton abstractButton, JTable jTable) {\r\n\t\tabstractButton.addActionListener(new ListenerClass(jTable));\r\n\t}\r\n\r\n\t/**\r\n\t * Install default copy format\r\n\t * @param jTable\r\n\t */\r\n\tpublic static void installCopyFormatter(JTable jTable) {\r\n\t\tListenerClass listenerClass = new ListenerClass(jTable);\r\n\t\t//jTable.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(\"ctrl C\"), \"copy\");\r\n\t\tjTable.getActionMap().put(\"copy\", listenerClass);\r\n\t\tjTable.getActionMap().put(\"cut\", listenerClass);\r\n\t}\r\n\r\n\tpublic static void toClipboard(final String text) {\r\n\t\ttoClipboard(text, 0);\r\n\t}\r\n\r\n\tprivate static void toClipboard(final String text, int retries) {\r\n\t\tif (text == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (text.length() == 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tToolkit toolkit = Toolkit.getDefaultToolkit();\r\n\t\tStringSelection selection = new StringSelection(text);\r\n\t\tClipboard clipboard = toolkit.getSystemClipboard();\r\n\t\ttry {\r\n\t\t\tclipboard.setContents(selection, null);\r\n\t\t} catch (IllegalStateException ex) {\r\n\t\t\tif (retries < 3) { //Retry 3 times\r\n\t\t\t\tretries++;\r\n\t\t\t\tLOG.info(\"Retrying copy to clipboard (\" + retries + \" of 3)\" );\r\n\t\t\t\ttry {\r\n\t\t\t\t\tThread.sleep(100);\r\n\t\t\t\t} catch (InterruptedException ex1) {\r\n\t\t\t\t\t//No problem\r\n\t\t\t\t}\r\n\t\t\t\ttoClipboard(text, retries);\r\n\t\t\t} else {\r\n\t\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static String fromClipboard() {\r\n\t\tToolkit toolkit = Toolkit.getDefaultToolkit();\r\n\t\tClipboard clipboard = toolkit.getSystemClipboard();\r\n\t\tTransferable transferable = clipboard.getContents(null);\r\n\t\ttry {\r\n\t\t\treturn (String) transferable.getTransferData(DataFlavor.stringFlavor);\r\n\t\t} catch (UnsupportedFlavorException ex) {\r\n\t\t\treturn null;\r\n\t\t} catch (IOException ex) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void paste(JTextComponent jText) {\r\n\t\tString s = CopyHandler.fromClipboard();\r\n\t\tif (s == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tString text = jText.getText();\r\n\t\tString before = text.substring(0, jText.getSelectionStart());\r\n\t\tString after = text.substring(jText.getSelectionEnd(), text.length());\r\n\t\tjText.setText(before + s + after);\r\n\t\tint caretPosition = before.length() + s.length();\r\n\t\tif (caretPosition <= jText.getText().length()) {\r\n\t\t\tjText.setCaretPosition(before.length() + s.length());\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void cut(JTextComponent jText) {\r\n\t\tString s = jText.getSelectedText();\r\n\t\tif (s == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (s.length() == 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tString text = jText.getText();\r\n\t\tString before = text.substring(0, jText.getSelectionStart());\r\n\t\tString after = text.substring(jText.getSelectionEnd(), text.length());\r\n\t\tjText.setText(before + after);\r\n\t\tCopyHandler.toClipboard(s);\r\n\t}\r\n\r\n\tprivate static void copy(JTable jTable) {\r\n\t\t//Rows\r\n\t\tint[] rows;\r\n\t\tif (jTable.getRowSelectionAllowed()) { //Selected rows\r\n\t\t\trows = jTable.getSelectedRows();\r\n\t\t} else { //All rows (if row selection is not allowed)\r\n\t\t\trows = new int[jTable.getRowCount()];\r\n\t\t\tfor (int i = 0; i < jTable.getRowCount(); i++) {\r\n\t\t\t\trows[i] = i;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//Columns\r\n\t\tint[] columns;\r\n\t\tif (jTable.getColumnSelectionAllowed()) { //Selected columns\r\n\t\t\tcolumns = jTable.getSelectedColumns();\r\n\t\t} else { //All columns (if column selection is not allowed)\r\n\t\t\tcolumns = new int[jTable.getColumnCount()];\r\n\t\t\tfor (int i = 0; i < jTable.getColumnCount(); i++) {\r\n\t\t\t\tcolumns[i] = i;\r\n\t\t\t}\r\n\t\t}\r\n\t\tStringBuilder tableText = new StringBuilder(); //Table text buffer\r\n\t\tString separatorText = \"\"; //Separator text buffer (is never added to, only set for each separator)\r\n\t\tint rowCount = 0; //used to find last row\r\n\r\n\t\tfor (int row : rows) {\r\n\t\t\trowCount++; //count rows\r\n\t\t\tStringBuilder rowText = new StringBuilder(); //Row text buffer\r\n\t\t\tboolean firstColumn = true; //used to find first column\r\n\t\t\tfor (int column : columns) {\r\n\t\t\t\t//Get value\r\n\t\t\t\tObject value = jTable.getValueAt(row, column);\r\n\r\n\t\t\t\t//Handle Separator\r\n\t\t\t\tif (value instanceof SeparatorList.Separator) {\r\n\t\t\t\t\tSeparatorList.Separator<?> separator = (SeparatorList.Separator) value;\r\n\t\t\t\t\tObject object = separator.first();\r\n\t\t\t\t\tif (object instanceof CopySeparator) {\r\n\t\t\t\t\t\tCopySeparator copySeparator = (CopySeparator) object;\r\n\t\t\t\t\t\tseparatorText = copySeparator.getCopyString();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//Add tab separator (except for first column)\r\n\t\t\t\tif (firstColumn) {\r\n\t\t\t\t\tfirstColumn = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\trowText.append(\"\\t\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//Add value\r\n\t\t\t\tif (value instanceof NumberValue) {\r\n\t\t\t\t\tvalue = ((NumberValue)value).getNumber();\r\n\t\t\t\t}\r\n\t\t\t\tif (value != null) { //Ignore null\r\n\t\t\t\t\tif (value instanceof Number) {\r\n\t\t\t\t\t\trowText.append(Formatter.copyFormat((Number)value));\r\n\t\t\t\t\t} else if (value instanceof Date) {\r\n\t\t\t\t\t\trowText.append(Formatter.columnDate(value));\r\n\t\t\t\t\t} else if (value instanceof HierarchyColumn) {\r\n\t\t\t\t\t\tHierarchyColumn hierarchyColumn = (HierarchyColumn) value;\r\n\t\t\t\t\t\trowText.append(hierarchyColumn.getExport());\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\trowText.append(value.toString()); //Default\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//Add\r\n\t\t\tif (rowText.length() > 0 || (!separatorText.isEmpty() && rowCount == rows.length)) {\r\n\t\t\t\ttableText.append(separatorText); //Add separator text (will be empty for normal tables)\r\n\t\t\t\tif (rowText.length() > 0 && !separatorText.isEmpty()) { //Add tab separator (if needed)\r\n\t\t\t\t\ttableText.append(\"\\t\");\r\n\t\t\t\t}\r\n\t\t\t\ttableText.append(rowText.toString()); //Add row text (will be empty if only copying sinlge separator)\r\n\t\t\t\tif (rowCount != rows.length) {\r\n\t\t\t\t\ttableText.append(\"\\r\\n\");\r\n\t\t\t\t} //Add end line\r\n\t\t\t}\r\n\t\t}\r\n\t\ttoClipboard(tableText.toString()); //Send it all to the clipboard\r\n\t}\r\n\r\n\t/**\r\n\t * SeparatorList.Separator string value implementation\r\n\t */\r\n\tpublic interface CopySeparator {\r\n\t\tpublic String getCopyString();\r\n\t}\r\n\r\n\tprivate static class ListenerClass extends AbstractAction {\r\n\r\n\t\tprivate final JTable jTable;\r\n\r\n\t\tpublic ListenerClass(JTable jTable) {\r\n\t\t\tthis.jTable = jTable;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\tcopy(jTable);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/DocumentFactory.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared;\n\nimport java.awt.Toolkit;\nimport java.util.regex.Pattern;\nimport javax.swing.text.AttributeSet;\nimport javax.swing.text.BadLocationException;\nimport javax.swing.text.DefaultStyledDocument;\nimport javax.swing.text.PlainDocument;\n\n\npublic final class DocumentFactory {\n\n\tpublic enum ValueFlag {\n\t\tPOSITIVE_AND_NOT_ZERO {\n\t\t\t@Override\n\t\t\tpublic boolean match(int i) {\n\t\t\t\treturn i > 0;\n\t\t\t}\n\t\t\t@Override\n\t\t\tpublic boolean match(double i) {\n\t\t\t\treturn i > 0;\n\t\t\t}\n\t\t},\n\t\tPOSITIVE_AND_ZERO {\n\t\t\t@Override\n\t\t\tpublic boolean match(int i) {\n\t\t\t\treturn i >= 0;\n\t\t\t}\n\t\t\t@Override\n\t\t\tpublic boolean match(double i) {\n\t\t\t\treturn i >= 0;\n\t\t\t}\n\t\t},\n\t\tNEGATIVE_AND_NOT_ZERO {\n\t\t\t@Override\n\t\t\tpublic boolean match(int i) {\n\t\t\t\treturn i < 0;\n\t\t\t}\n\t\t\t@Override\n\t\t\tpublic boolean match(double i) {\n\t\t\t\treturn i < 0;\n\t\t\t}\n\t\t},\n\t\tNEGATIVE_AND_ZERO {\n\t\t\t@Override\n\t\t\tpublic boolean match(int i) {\n\t\t\t\treturn i <= 0;\n\t\t\t}\n\t\t\t@Override\n\t\t\tpublic boolean match(double i) {\n\t\t\t\treturn i <= 0;\n\t\t\t}\n\t\t},\n\t\tANY_NUMBER {\n\t\t\t@Override\n\t\t\tpublic boolean match(int i) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t@Override\n\t\t\tpublic boolean match(double i) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\tNOT_ZERO {\n\t\t\t@Override\n\t\t\tpublic boolean match(int i) {\n\t\t\t\treturn i != 0;\n\t\t\t}\n\t\t\t@Override\n\t\t\tpublic boolean match(double i) {\n\t\t\t\treturn i != 0;\n\t\t\t}\n\t\t};\n\t\tpublic abstract boolean match(int i);\n\t\tpublic abstract boolean match(double d);\n\t}\n\n\tpublic static IntegerPlainDocument getIntegerPlainDocument() {\n\t\treturn new IntegerPlainDocument(ValueFlag.ANY_NUMBER);\n\t}\n\tpublic static IntegerPlainDocument getIntegerPlainDocument(ValueFlag flag) {\n\t\treturn new IntegerPlainDocument(flag);\n\t}\n\tpublic static WordPlainDocument getWordPlainDocument() {\n\t\treturn new WordPlainDocument();\n\t}\n\tpublic static DoublePlainDocument getDoublePlainDocument() {\n\t\treturn new DoublePlainDocument(ValueFlag.ANY_NUMBER);\n\t}\n\tpublic static DoublePlainDocument getDoublePlainDocument(ValueFlag flag) {\n\t\treturn new DoublePlainDocument(flag);\n\t}\n\tpublic static MaxLengthPlainDocument getMaxLengthPlainDocument(final int maxLength) {\n\t\treturn new MaxLengthPlainDocument(maxLength);\n\t}\n\tpublic static MaxLengthStyledDocument getMaxLengthStyledDocument(final int maxLength) {\n\t\treturn new MaxLengthStyledDocument(maxLength);\n\t}\n\n\tprivate DocumentFactory() {\t}\n\n\tpublic static class IntegerPlainDocument extends PlainDocument {\n\n\t\tValueFlag flag;\n\n\t\tpublic IntegerPlainDocument(ValueFlag flag) {\n\t\t\tthis.flag = flag;\n\t\t}\n\n\t\t@Override\n\t\tpublic void insertString(final int offset, final String string, final AttributeSet attributes) throws BadLocationException {\n\t\t\tint length = getLength();\n\t\t\tif (string == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tString newValue;\n\t\t\tif (length == 0) {\n\t\t\t\tnewValue = string;\n\t\t\t} else {\n\t\t\t\tString currentContent = getText(0, length);\n\t\t\t\tStringBuilder currentBuffer = new StringBuilder(currentContent);\n\t\t\t\tcurrentBuffer.insert(offset, string);\n\t\t\t\tnewValue = currentBuffer.toString();\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tif (flag.match(Integer.parseInt(newValue))) {\n\t\t\t\t\tsuper.insertString(offset, string, attributes);\n\t\t\t\t} else {\n\t\t\t\t\tToolkit.getDefaultToolkit().beep();\n\t\t\t\t}\n\t\t\t} catch (NumberFormatException exception) {\n\t\t\t\tToolkit.getDefaultToolkit().beep();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class DoublePlainDocument extends PlainDocument {\n\n\t\tValueFlag flag;\n\n\t\tpublic DoublePlainDocument(ValueFlag flag) {\n\t\t\tthis.flag = flag;\n\t\t}\n\n\t\t@Override\n\t\tpublic void insertString(final int offset, final String string, final AttributeSet attributes) throws BadLocationException {\n\t\t\tint length = getLength();\n\t\t\tif (string == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tString newValue;\n\t\t\tif (length == 0) {\n\t\t\t\tnewValue = string;\n\t\t\t} else {\n\t\t\t\tString currentContent = getText(0, length);\n\t\t\t\tStringBuilder currentBuffer = new StringBuilder(currentContent);\n\t\t\t\tcurrentBuffer.insert(offset, string);\n\t\t\t\tnewValue = currentBuffer.toString();\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tif (flag.match(Double.parseDouble(newValue))) {\n\t\t\t\t\tsuper.insertString(offset, string, attributes);\n\t\t\t\t} else {\n\t\t\t\t\tToolkit.getDefaultToolkit().beep();\n\t\t\t\t}\n\t\t\t} catch (NumberFormatException exception) {\n\t\t\t\tToolkit.getDefaultToolkit().beep();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class WordPlainDocument extends PlainDocument {\n\n\t\t@Override\n\t\tpublic void insertString(final int offset, final String string, final AttributeSet attributes) throws BadLocationException {\n\t\t\tint length = getLength();\n\t\t\tif (string == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tString newValue;\n\t\t\tif (length == 0) {\n\t\t\t\tnewValue = string;\n\t\t\t} else {\n\t\t\t\tString currentContent = getText(0, length);\n\t\t\t\tStringBuilder currentBuffer = new StringBuilder(currentContent);\n\t\t\t\tcurrentBuffer.insert(offset, string);\n\t\t\t\tnewValue = currentBuffer.toString();\n\t\t\t}\n\t\t\tboolean b = Pattern.matches(\"[\\\\w\\\\s]*\", newValue);\n\t\t\tif (b && !newValue.isEmpty()) {\n\t\t\t\tsuper.insertString(offset, string, attributes);\n\t\t\t} else {\n\t\t\t\tToolkit.getDefaultToolkit().beep();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class MaxLengthPlainDocument extends PlainDocument {\n\n\t\tprivate int maxLength;\n\n\t\tpublic MaxLengthPlainDocument(final int maxLength) {\n\t\t\tthis.maxLength = maxLength;\n\t\t}\n\n\t\t@Override\n\t\tpublic void insertString(final int offset, final String string, final AttributeSet attributes) throws BadLocationException {\n\t\t\tint length = getLength();\n\t\t\tif (string == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (length + string.length() > maxLength) {\n\t\t\t\tToolkit.getDefaultToolkit().beep();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsuper.insertString(offset, string, attributes);\n\t\t}\n\n\t}\n\n\tpublic static class MaxLengthStyledDocument extends DefaultStyledDocument {\n\n\t\tprivate int maxLength;\n\n\t\tpublic MaxLengthStyledDocument(final int maxLength) {\n\t\t\tthis.maxLength = maxLength;\n\t\t}\n\n\t\t@Override\n\t\tpublic void insertString(final int offset, final String string, final AttributeSet attributes) throws BadLocationException {\n\t\t\tint length = getLength();\n\t\t\tif (string == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (length + string.length() > maxLength) {\n\t\t\t\tToolkit.getDefaultToolkit().beep();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsuper.insertString(offset, string, attributes);\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/Formatter.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared;\n\nimport java.text.DateFormat;\nimport java.text.DecimalFormat;\nimport java.text.DecimalFormatSymbols;\nimport java.text.FieldPosition;\nimport java.text.NumberFormat;\nimport java.text.ParseException;\nimport java.text.ParsePosition;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterMatcher;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\n\n\npublic final class Formatter {\n\n\t//Must not be changed! please see: FilterControl\n\tprivate static final String COLUMN_DATETIME = \"yyyy-MM-dd HH:mm\";\n\tpublic static final String COLUMN_DATE = \"yyyy-MM-dd\";\n\n\tprivate static final DecimalFormat ISK_FORMAT = new DecimalFormat(\"#,##0.00 isk\");\n\tprivate static final DecimalFormat ITEM_FORMAT = new DecimalFormat(\"#,##0 item\");\n\tprivate static final DecimalFormat ITEMS_FORMAT = new DecimalFormat(\"#,##0 items\");\n\tprivate static final DecimalFormat PERCENT_FORMAT = new DecimalFormat(\"##0%\");\n\tprivate static final DecimalFormat TIMES_FORMAT = new DecimalFormat(\"##0x\");\n\tprivate static final DecimalFormat INTEGER_FORMAT = new DecimalFormat(\"0\");\n\tprivate static final DecimalFormat DECIMAL_FORMAT = new DecimalFormat(\"#,##0.00\");\n\tprivate static final DecimalFormat FLOAT_FORMAT = new DecimalFormat(\"#,##0.####\");\n\tprivate static final DecimalFormat COMPARE_FORMAT = new DecimalFormat(\"0.####\", new DecimalFormatSymbols(FilterMatcher.LOCALE));\n\tprivate static final DecimalFormat SECURITY_FORMAT = new DecimalFormat(\"0.0\", new DecimalFormatSymbols(Locale.ENGLISH));\n\tprivate static final DecimalFormat COPY_FORMAT = new DecimalFormat(\"0.##\", new DecimalFormatSymbols(Locale.ENGLISH));\n\tpublic static final DecimalFormat LONG_FORMAT = new DecimalFormat(\"#,##0\");\n\tpublic static final NumberFormat MILLIONS_FORMAT = new FixedFormat(1_000_000.0, \"M\");\n\tpublic static final NumberFormat BILLIONS_FORMAT = new FixedFormat(1_000_000_000.0, \"B\");\n\tpublic static final NumberFormat TRILLIONS_FORMAT = new FixedFormat(1_000_000_000_000.0, \"T\");\n\tpublic static final NumberFormat AUTO_FORMAT = new AutoFormat();\n\n\tprivate static final DateFormatThreadSafe EXPIRE_DATE1 = new DateFormatThreadSafe(\"EEE, dd MMM yyyy kk:mm:ss zzz\"); //Tue, 04 Oct 2016 18:21:28 GMT\n\tprivate static final DateFormatThreadSafe EXPIRE_DATE2 = new DateFormatThreadSafe(\"dd MMM yyyy kk:mm:ss zzz\");\n\tprivate static final DateFormatThreadSafe COLUMN_DATE_FORMAT = new DateFormatThreadSafe(COLUMN_DATE);\n\tprivate static final DateFormatThreadSafe COLUMN_DATETIME_FORMAT = new DateFormatThreadSafe(COLUMN_DATETIME);\n\tprivate static final DateFormatThreadSafe TODAYS_DATE = new DateFormatThreadSafe(\"yyyyMMdd\");\n\tprivate static final DateFormatThreadSafe TIME_ONLY = new DateFormatThreadSafe(\"HH:mm z\");\n\tprivate static final DateFormatThreadSafe WEEKDAY_AND_TIME = new DateFormatThreadSafe(\"EEEEE HH:mm\");\n\tprivate static final DateFormatThreadSafe FILETIME = new DateFormatThreadSafe(\"yyyy-MM-dd--HH-mm\", TimeZone.getDefault());\n\tprivate static final DateFormatThreadSafe SIMPLE_DATE = new DateFormatThreadSafe(\"yyyyMMddHHmm\");\n\tprivate static final DateFormatThreadSafe DATE_ONLY = new DateFormatThreadSafe(\"yyyy-MM-dd\");\n\n\tprivate Formatter() { }\n\n\tpublic static Date parseExpireDate(String date) {\n\t\ttry {\n\t\t\treturn EXPIRE_DATE1.parse(date);\n\t\t} catch (ParseException ex) {\n\n\t\t}\n\t\ttry {\n\t\t\treturn EXPIRE_DATE2.parse(date);\n\t\t} catch (ParseException ex) {\n\t\t\treturn new Date();\n\t\t}\n\t}\n\n\tpublic static String copyFormat(final Number number) {\n\t\tDecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(Locale.ENGLISH);\n\t\tswitch (Settings.get().getCopySettings().getCopyDecimalSeparator()) {\n\t\t\tcase COMMA: otherSymbols.setDecimalSeparator(','); break;\n\t\t\tcase DOT: otherSymbols.setDecimalSeparator('.'); break;\n\t\t}\n\t\tCOPY_FORMAT.setDecimalFormatSymbols(otherSymbols);\n\t\treturn COPY_FORMAT.format(number);\n\t}\n\tpublic static String iskFormat(final Number number) {\n\t\treturn ISK_FORMAT.format(number);\n\t}\n\tpublic static String percentFormat(final Number number) {\n\t\treturn PERCENT_FORMAT.format(number);\n\t}\n\tpublic static String timesFormat(final Double number) {\n\t\treturn TIMES_FORMAT.format(number);\n\t}\n\tpublic static String itemsFormat(final Number number) {\n\t\tif (number.longValue() == 1) {\n\t\t\treturn ITEM_FORMAT.format(number);\n\t\t} else {\n\t\t\treturn ITEMS_FORMAT.format(number);\n\t\t}\n\t}\n\tpublic static String doubleFormat(final Object obj) {\n\t\treturn DECIMAL_FORMAT.format(obj);\n\t}\n\tpublic static String compareFormat(final Object obj) {\n\t\treturn COMPARE_FORMAT.format(obj);\n\t}\n\tpublic static String securityFormat(final Object obj) {\n\t\treturn SECURITY_FORMAT.format(obj);\n\t}\n\t/**\n\t * WARNING: This is not an good format for columns\n\t * It does however give a very precise result.\n\t *\n\t * @param obj value to be formatted\n\t * @return formatted value\n\t */\n\tpublic static String floatFormat(final Object obj) {\n\t\treturn FLOAT_FORMAT.format(obj);\n\t}\n\tpublic static String integerFormat(final Object obj) {\n\t\treturn INTEGER_FORMAT.format(obj);\n\t}\n\tpublic static String longFormat(final Object obj) {\n\t\treturn LONG_FORMAT.format(obj);\n\t}\n\n\tpublic static double longParse(final String s) throws ParseException{\n\t\treturn LONG_FORMAT.parse(s).doubleValue();\n\t}\n\n\tpublic static double round(final double number, final int decimalPlaces) {\n\t\tdouble modifier = Math.pow(10.0, decimalPlaces);\n\t\treturn Math.round(number * modifier) / modifier;\n\t}\n\n//DATE\n\n\tpublic static String weekdayAndTime(final Date date) {\n\t\tif (today(date)) {\n\t\t\treturn GuiShared.get().today(TIME_ONLY.format(date));\n\t\t} else {\n\t\t\treturn WEEKDAY_AND_TIME.format(date);\n\t\t}\n\t}\n\n\tpublic static String columnDate(final Object date) {\n\t\treturn COLUMN_DATETIME_FORMAT.format(date);\n\t}\n\n\t/**\n\t * Do not use unless only date information is available.\n\t * @param date\n\t * @return\n\t */\n\tpublic static String columnDateOnly(final Object date) {\n\t\treturn COLUMN_DATE_FORMAT.format(date);\n\t}\n\n\tpublic static String fileDate(final Object date) {\n\t\treturn FILETIME.format(date);\n\t}\n\n\tpublic static Date columnStringToDate(final String date) {\n\t\ttry {\n\t\t\treturn COLUMN_DATETIME_FORMAT.parse(date);\n\t\t} catch (ParseException ex) {\n\n\t\t}\n\t\ttry {\n\t\t\treturn COLUMN_DATE_FORMAT.parse(date);\n\t\t} catch (ParseException ex) {\n\n\t\t}\n\t\treturn null;\n\t}\n\tpublic static String timeOnly(final Date date) {\n\t\treturn TIME_ONLY.format(date);\n\t}\n\n\tpublic static String eveTime(final Date date) {\n\t\treturn TIME_ONLY.format(date);\n\t}\n\n\tpublic static String simpleDate(final Date date) {\n\t\treturn SIMPLE_DATE.format(date);\n\t}\n\n\tpublic static String dateOnly(final Object date) {\n\t\treturn DATE_ONLY.format(date);\n\t}\n\n\tprivate static boolean today(final Date date) {\n\t\tString sDate = TODAYS_DATE.format(date);\n\t\tString sNow = TODAYS_DATE.format(Settings.getNow());\n\t\treturn sDate.equals(sNow);\n\t}\n\n\tpublic static String milliseconds(long time) {\n\t\treturn milliseconds(time, false, false, true, true, true, true);\n\t}\n\n\tpublic static String milliseconds(long time, boolean first, boolean verbose) {\n\t\treturn milliseconds(time, first, verbose, true, true, true, true);\n\t}\n\n\tpublic static String milliseconds(long time, boolean showDays, boolean showHours, boolean showMinutes, boolean showSeconds) {\n\t\treturn milliseconds(time, false, false, showDays, showHours, showMinutes, showSeconds);\n\t}\n\n\tpublic static String milliseconds(long time, boolean first, boolean verbose, boolean showDays, boolean showHours, boolean showMinutes, boolean showSeconds) {\n\t\tfinal StringBuilder timeString = new StringBuilder();\n\t\tlong days = time / (24 * 60 * 60 * 1000);\n\t\tboolean space = false;\n\t\tif (days > 0 && showDays) {\n\t\t\ttimeString.append(days);\n\t\t\tif (verbose) {\n\t\t\t\tif (days > 1) {\n\t\t\t\t\ttimeString.append(\" days\");\n\t\t\t\t} else {\n\t\t\t\t\ttimeString.append(\" day\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttimeString.append(\"d\");\n\t\t\t}\n\t\t\tif (first) {\n\t\t\t\treturn timeString.toString();\n\t\t\t}\n\t\t\tspace = true;\n\t\t}\n\t\tlong hours = time / (60 * 60 * 1000) % 24;\n\t\tif (!showDays) {\n\t\t\thours = hours + (days * 24);\n\t\t}\n\t\tif (hours > 0 && showHours) {\n\t\t\tif (space) {\n\t\t\t\ttimeString.append(\" \");\n\t\t\t}\n\t\t\ttimeString.append(hours);\n\t\t\tif (verbose) {\n\t\t\t\tif (hours > 1) {\n\t\t\t\t\ttimeString.append(\" hours\");\n\t\t\t\t} else {\n\t\t\t\t\ttimeString.append(\" hour\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttimeString.append(\"h\");\n\t\t\t}\n\t\t\tif (first) {\n\t\t\t\treturn timeString.toString();\n\t\t\t}\n\t\t\tspace = true;\n\t\t}\n\t\tlong minutes = time / (60 * 1000) % 60;\n\t\tif (!showHours) {\n\t\t\tminutes = minutes + (hours * 60);\n\t\t}\n\t\tif (minutes > 0 && showMinutes) {\n\t\t\tif (space) {\n\t\t\t\ttimeString.append(\" \");\n\t\t\t}\n\t\t\ttimeString.append(minutes);\n\t\t\tif (verbose) {\n\t\t\t\tif (minutes > 1) {\n\t\t\t\t\ttimeString.append(\" minutes\");\n\t\t\t\t} else {\n\t\t\t\t\ttimeString.append(\" minute\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttimeString.append(\"m\");\n\t\t\t}\n\t\t\tif (first) {\n\t\t\t\treturn timeString.toString();\n\t\t\t}\n\t\t\tspace = true;\n\t\t}\n\t\tlong seconds = time / (1000) % 60;\n\t\tif (!showMinutes) {\n\t\t\tseconds = seconds + (minutes * 60);\n\t\t}\n\t\tif (seconds > 0 && showSeconds) {\n\t\t\tif (space) {\n\t\t\t\ttimeString.append(\" \");\n\t\t\t}\n\t\t\ttimeString.append(seconds);\n\t\t\tif (verbose) {\n\t\t\t\tif (seconds > 1) {\n\t\t\t\t\ttimeString.append(\" seconds\");\n\t\t\t\t} else {\n\t\t\t\t\ttimeString.append(\" second\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttimeString.append(\"s\");\n\t\t\t}\n\t\t\tif (first) {\n\t\t\t\treturn timeString.toString();\n\t\t\t}\n\t\t}\n\t\tif (days == 0 && hours == 0 && minutes == 0 && seconds == 0) {\n\t\t\ttimeString.append(time);\n\t\t\ttimeString.append(\"ms\");\n\t\t}\n\t\treturn timeString.toString();\n\t}\n\n\tpublic static class AutoFormat extends NumberFormat {\n\n\t\tprivate static final String[] UNITS = new String[] { \"\", \"K\", \"M\", \"B\", \"T\", \"P\", \"E\" };\n\t\tprivate final NumberFormat format;\n\n\t\tpublic AutoFormat() {\n\t\t\tformat = new DecimalFormat(\"#,##0.#\");\n\t\t}\n\n\t\tprivate String formatNumber(Number number) {\n\t\t\tlong value = number.longValue();\n\t\t\tif(value <= 0) {\n\t\t\t\treturn \"0\";\n\t\t\t} else {\n\t\t\t\tint digitGroups = (int) (Math.log10(value)/Math.log10(1000));\n\t\t\t\treturn format.format(value/Math.pow(1000, digitGroups)) + UNITS[digitGroups];\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) {\n\t\t\ttoAppendTo.append(formatNumber(number));\n\t\t\treturn toAppendTo;\n\t\t}\n\n\t\t@Override\n\t\tpublic StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos) {\n\t\t\ttoAppendTo.append(formatNumber(number));\n\t\t\treturn toAppendTo;\n\t\t}\n\n\t\t@Override\n\t\tpublic Number parse(String source, ParsePosition parsePosition) {\n\t\t\treturn format.parse(source, parsePosition);\n\t\t}\n\t}\n\n\tpublic static class FixedFormat extends NumberFormat {\n\n\t\tprivate final NumberFormat format;\n\t\tprivate final double fix;\n\n\t\tpublic FixedFormat(final double fix, final String name) {\n\t\t\tthis.fix = fix;\n\t\t\tformat = new DecimalFormat(\"#,##0.0\"+name);\n\t\t}\n\n\t\t@Override\n\t\tpublic StringBuffer format(final double number, final StringBuffer toAppendTo, final FieldPosition pos) {\n\t\t\ttoAppendTo.append(format.format(number/fix));\n\t\t\treturn toAppendTo;\n\t\t}\n\n\t\t@Override\n\t\tpublic StringBuffer format(final long number, final StringBuffer toAppendTo, final FieldPosition pos) {\n\t\t\ttoAppendTo.append(format.format(number/fix));\n\t\t\treturn toAppendTo;\n\t\t}\n\n\t\t@Override\n\t\tpublic Number parse(String source, ParsePosition parsePosition) {\n\t\t\treturn format.parse(source, parsePosition);\n\t\t}\n\n\t}\n\n\tpublic static class DateFormatThreadSafe {\n\n\t\tprivate static final TimeZone TIME_ZONE = TimeZone.getTimeZone(\"GMT\");\n\n\t\tprivate final String format;\n\t\tprivate final boolean lenient;\n\t\tprivate final TimeZone timeZone;\n\n\t\tprivate final ThreadLocal<DateFormat> df = new ThreadLocal<DateFormat>() {\n\t\t\t@Override\n\t\t\tprotected DateFormat initialValue() {\n\t\t\t\tSimpleDateFormat value = new SimpleDateFormat(format, new Locale(\"en\"));\n\t\t\t\tvalue.setTimeZone(timeZone);\n\t\t\t\tvalue.setLenient(lenient);\n\t\t\t\treturn value;\n\t\t\t}\n\t\t};\n\n\t\tpublic DateFormatThreadSafe(String format) {\n\t\t\tthis(format, false);\n\t\t}\n\n\t\tpublic DateFormatThreadSafe(String format, boolean lenient) {\n\t\t\tthis(format, lenient, TIME_ZONE);\n\t\t}\n\n\t\tpublic DateFormatThreadSafe(String format, TimeZone timeZone) {\n\t\t\tthis(format, false, timeZone);\n\t\t}\n\n\t\tpublic DateFormatThreadSafe(String format, boolean lenient, TimeZone timeZone) {\n\t\t\tthis.format = format;\n\t\t\tthis.lenient = lenient;\n\t\t\tthis.timeZone = timeZone;\n\t\t}\n\n\t\tpublic Date parse(String dateString) throws ParseException {\n\t\t\treturn df.get().parse(dateString);\n\t\t}\n\n\t\tpublic String format(final Object date) {\n\t\t\treturn df.get().format(date);\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/InstantToolTip.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared;\r\n\r\nimport java.awt.Component;\r\nimport java.awt.event.MouseAdapter;\r\nimport java.awt.event.MouseEvent;\r\nimport java.awt.event.MouseListener;\r\nimport javax.swing.ToolTipManager;\r\n\r\n\r\npublic class InstantToolTip {\r\n\r\n\tprivate final MouseListener listener;\r\n\tprivate final Component component;\r\n\r\n\tprivate InstantToolTip(Component component) {\r\n\t\tthis.component = component;\r\n\t\tthis.listener = new MouseAdapter() { //Instant ToolTips\r\n\t\t\tprivate int defaultDismissTimeout;\r\n\t\t\tprivate int defaultInitialDelay;\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic void mouseEntered(MouseEvent me) {\r\n\t\t\t\tdefaultDismissTimeout = ToolTipManager.sharedInstance().getDismissDelay();\r\n\t\t\t\tdefaultInitialDelay = ToolTipManager.sharedInstance().getInitialDelay();\r\n\t\t\t\tToolTipManager.sharedInstance().setDismissDelay(60000);\r\n\t\t\t\tToolTipManager.sharedInstance().setInitialDelay(0);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic void mouseExited(MouseEvent me) {\r\n\t\t\t\tToolTipManager.sharedInstance().setDismissDelay(defaultDismissTimeout);\r\n\t\t\t\tToolTipManager.sharedInstance().setInitialDelay(defaultInitialDelay);\r\n\t\t\t}\r\n\t\t};\r\n\t\tcomponent.addMouseListener(listener);\r\n\t}\r\n\r\n\tpublic static InstantToolTip install(Component component) {\r\n\t\treturn new InstantToolTip(component);\r\n\t}\r\n\r\n\tpublic void uninstall() {\r\n\t\tcomponent.removeMouseListener(listener);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/JFreeChartUtil.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared;\r\n\r\nimport java.awt.BasicStroke;\r\nimport java.awt.Color;\r\nimport java.awt.Font;\r\nimport java.awt.Shape;\r\nimport java.awt.Stroke;\r\nimport java.awt.geom.Ellipse2D;\r\nimport java.text.DateFormat;\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.Date;\r\nimport java.util.Locale;\r\nimport java.util.concurrent.TimeUnit;\r\nimport javax.swing.JLabel;\r\nimport net.nikr.eve.jeveasset.data.settings.Colors;\r\nimport org.jfree.chart.ChartPanel;\r\nimport org.jfree.chart.JFreeChart;\r\nimport org.jfree.chart.LegendItem;\r\nimport org.jfree.chart.axis.DateAxis;\r\nimport org.jfree.chart.axis.DateTickUnit;\r\nimport org.jfree.chart.axis.DateTickUnitType;\r\nimport org.jfree.chart.axis.LogarithmicAxis;\r\nimport org.jfree.chart.axis.NumberAxis;\r\nimport org.jfree.chart.axis.ValueAxis;\r\nimport org.jfree.chart.plot.Plot;\r\nimport org.jfree.chart.plot.XYPlot;\r\nimport org.jfree.chart.renderer.xy.XYItemRenderer;\r\nimport org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;\r\nimport org.jfree.data.general.DatasetUtils;\r\nimport org.jfree.data.time.TimePeriodValuesCollection;\r\nimport org.jfree.data.xy.XYDataset;\r\n\r\n\r\npublic class JFreeChartUtil {\r\n\r\n\tprivate static final DateFormat dateFormat = new SimpleDateFormat(Formatter.COLUMN_DATE, new Locale(\"en\"));\r\n\tprivate static final DateFormat yearsFormat = new SimpleDateFormat(\"yyyy\", new Locale(\"en\"));\r\n\tprivate static final DateFormat yearFormat = new SimpleDateFormat(\"yyyy-MM\", new Locale(\"en\"));\r\n\tprivate static final DateFormat monthsFormat = new SimpleDateFormat(\"MMM\", new Locale(\"en\"));\r\n\tprivate static final DateFormat monthFormat = new SimpleDateFormat(\"MMM dd\", new Locale(\"en\"));\r\n\tprivate static final DateFormat daysFormat = new SimpleDateFormat(\"EEE\", new Locale(\"en\"));\r\n\tprivate static final DateTickUnit yearTick = new DateTickUnit(DateTickUnitType.YEAR, 1);\r\n\tprivate static final DateTickUnit monthTick = new DateTickUnit(DateTickUnitType.MONTH, 1);\r\n\tprivate static final DateTickUnit daysTick = new DateTickUnit(DateTickUnitType.DAY, 1);\r\n\tprivate static Font font = null;\r\n\r\n\tpublic static DateFormat getDateFormat() {\r\n\t\treturn dateFormat;\r\n\t}\r\n\r\n\tprivate JFreeChartUtil() { }\r\n\r\n\tprivate static Font getFont() {\r\n\t\tif (font == null) {\r\n\t\t\tfont = new JLabel().getFont();\r\n\t\t}\r\n\t\treturn font;\r\n\t}\r\n\r\n\tpublic static DateAxis createDateAxis() {\r\n\t\tDateAxis dateAxis = new DateAxis();\r\n\t\tdateAxis.setDateFormatOverride(JFreeChartUtil.getDateFormat());\r\n\t\tdateAxis.setVerticalTickLabels(true);\r\n\t\tdateAxis.setAutoTickUnitSelection(true);\r\n\t\tdateAxis.setAutoRange(true);\r\n\t\tdateAxis.setTickLabelFont(getFont());\r\n\t\tdateAxis.setTickLabelPaint(Colors.TEXTFIELD_FOREGROUND.getColor());\r\n\t\treturn dateAxis;\r\n\t}\r\n\r\n\tpublic static LogarithmicAxis createLogarithmicAxis(boolean includeZero) {\r\n\t\tLogarithmicAxis logarithmicAxis = new LogarithmicAxis(\"\");\r\n\t\tlogarithmicAxis.setStrictValuesFlag(false);\r\n\t\tlogarithmicAxis.setNumberFormatOverride(Formatter.AUTO_FORMAT);\r\n\t\tlogarithmicAxis.setTickLabelFont(getFont());\r\n\t\tlogarithmicAxis.setTickLabelPaint(Colors.TEXTFIELD_FOREGROUND.getColor());\r\n\t\tlogarithmicAxis.setAutoRangeIncludesZero(includeZero);\r\n\t\treturn logarithmicAxis;\r\n\t}\r\n\r\n\tpublic static NumberAxis createNumberAxis(boolean includeZero) {\r\n\t\tNumberAxis numberAxis = new NumberAxis();\r\n\t\tnumberAxis.setAutoRange(true);\r\n\t\tnumberAxis.setNumberFormatOverride(Formatter.AUTO_FORMAT);\r\n\t\tnumberAxis.setStandardTickUnits(NumberAxis.createStandardTickUnits());\r\n\t\tnumberAxis.setTickLabelFont(getFont());\r\n\t\tnumberAxis.setTickLabelPaint(Colors.TEXTFIELD_FOREGROUND.getColor());\r\n\t\tnumberAxis.setAutoRangeIncludesZero(includeZero);\r\n\t\treturn numberAxis;\r\n\t}\r\n\r\n\tpublic static XYPlot createPlot(XYDataset dataset, ValueAxis domainAxis, ValueAxis rangeAxis, XYItemRenderer renderer) {\r\n\t\tXYPlot plot = new XYPlot(dataset, domainAxis, rangeAxis, renderer);\r\n\t\tplot.setBackgroundPaint(Colors.TEXTFIELD_BACKGROUND.getColor());\r\n\t\tplot.setRangeGridlinePaint(Color.LIGHT_GRAY);\r\n\t\tplot.setDomainGridlinePaint(Color.LIGHT_GRAY);\r\n\t\tplot.setDomainCrosshairLockedOnData(true);\r\n\t\tplot.setDomainCrosshairStroke(new BasicStroke(1));\r\n\t\tplot.setDomainCrosshairPaint(Color.BLACK);\r\n\t\tplot.setDomainCrosshairVisible(false);\r\n\t\tplot.setRangeCrosshairLockedOnData(true);\r\n\t\tplot.setRangeCrosshairVisible(false);\r\n\t\treturn plot;\r\n\t}\r\n\r\n\tpublic static JFreeChart createChart(Plot plot) {\r\n\t\tJFreeChart jFreeChart = new JFreeChart(plot);\r\n\t\tjFreeChart.setAntiAlias(true);\r\n\t\tjFreeChart.setBackgroundPaint(Colors.COMPONENT_BACKGROUND.getColor());\r\n\t\tjFreeChart.addProgressListener(null);\r\n\t\tjFreeChart.getLegend().setItemFont(getFont());\r\n\t\tjFreeChart.getLegend().setItemPaint(Colors.TEXTFIELD_FOREGROUND.getColor());\r\n\t\tjFreeChart.getLegend().setBackgroundPaint(Colors.COMPONENT_BACKGROUND.getColor());\r\n\t\treturn jFreeChart;\r\n\t\t//jFreeChart.setTextAntiAlias(false);\r\n\t\t//jFreeChart.setAntiAlias(false);\r\n\t\t/*\r\n\t\tMap<RenderingHints.Key,Object> rh = new HashMap<>();\r\n\t\trh.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);\r\n\t\t//rh.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_DEFAULT);\r\n\t\t//rh.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);\r\n\r\n\r\n\t\t//rh.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);\r\n\t\trh.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_DEFAULT);\r\n\t\t//rh.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_SPEED);\r\n\r\n\t\t//rh.put(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);\r\n\t\trh.put(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DEFAULT);\r\n\t\t//rh.put(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DISABLE);\r\n\r\n\t\t//rh.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);\r\n\t\trh.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT);\r\n\t\t//rh.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);\r\n\t\t//rh.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HBGR);\r\n\t\t//rh.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB);\r\n\t\t//rh.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_VBGR);\r\n\t\t//rh.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_VRGB);\r\n\t\t//rh.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);\r\n\r\n\t\t//rh.put(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);\r\n\t\trh.put(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_DEFAULT);\r\n\t\t//rh.put(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_OFF);\r\n\r\n\t\t//rh.put(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);\r\n\t\trh.put(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);\r\n\t\t//rh.put(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);\r\n\r\n\t\t//rh.put(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);\r\n\t\trh.put(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_DEFAULT);\r\n\t\t//rh.put(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED);\r\n\r\n\t\t//rh.put(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);\r\n\t\trh.put(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_DEFAULT);\r\n\t\t//rh.put(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_SPEED);\r\n\r\n\t\t//rh.put(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_NORMALIZE);\r\n\t\trh.put(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_DEFAULT);\r\n\t\t//rh.put(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);\r\n\r\n\t\tjFreeChart.setRenderingHints(new RenderingHints(rh));\r\n\t\t*/\r\n\t}\r\n\r\n\tpublic static ChartPanel createChartPanel(JFreeChart jChart) {\r\n\t\tChartPanel jChartPanel = new ChartPanel(jChart);\r\n\t\tInstantToolTip.install(jChartPanel);\r\n\t\tjChartPanel.setDomainZoomable(false);\r\n\t\tjChartPanel.setRangeZoomable(false);\r\n\t\tjChartPanel.setPopupMenu(null);\r\n\t\t//jChartPanel.addChartMouseListener(listener);\r\n\t\tjChartPanel.setMaximumDrawHeight(Integer.MAX_VALUE);\r\n\t\tjChartPanel.setMaximumDrawWidth(Integer.MAX_VALUE);\r\n\t\tjChartPanel.setMinimumDrawWidth(10);\r\n\t\tjChartPanel.setMinimumDrawHeight(10);\r\n\t\treturn jChartPanel;\r\n\t}\r\n\r\n\tpublic static XYLineAndShapeRenderer createRenderer() {\r\n\t\treturn new SimpleRenderer();\r\n\t}\r\n\r\n\tpublic static void updateTickScale(DateAxis domainAxis, NumberAxis numberAxis, TimePeriodValuesCollection dataset) {\r\n\t\tupdateTickScale(domainAxis);\r\n\t\tupdateTickScale(numberAxis, dataset);\r\n\t}\r\n\r\n\tpublic static void updateTickScale(DateAxis domainAxis, NumberAxis numberAxis, Number maxNumber) {\r\n\t\tupdateTickScale(domainAxis);\r\n\t\tupdateTickScale(numberAxis, maxNumber);\r\n\t}\r\n\r\n\tpublic static void updateTickScale(NumberAxis numberAxis, TimePeriodValuesCollection dataset) {\r\n\t\tupdateTickScale(numberAxis, DatasetUtils.findMaximumRangeValue(dataset));\r\n\t}\r\n\r\n\tpublic static void updateTickScale(NumberAxis numberAxis, Number maxNumber) {\r\n\t\tif (maxNumber != null && maxNumber instanceof Double) {\r\n\t\t\tdouble max = (Double) maxNumber;\r\n\t\t\tif (max >     1_000_000_000_000.0) {//Higher than 1 Trillion\r\n\t\t\t\tnumberAxis.setNumberFormatOverride(Formatter.TRILLIONS_FORMAT);\r\n\t\t\t} else if (max > 1_000_000_000.0) {\t//Higher than 1 Billion\r\n\t\t\t\tnumberAxis.setNumberFormatOverride(Formatter.BILLIONS_FORMAT);\r\n\t\t\t} else if (max >     1_000_000.0) {\t//Higher than 1 Million\r\n\t\t\t\tnumberAxis.setNumberFormatOverride(Formatter.MILLIONS_FORMAT);\r\n\t\t\t} else {\t\t\t\t\t\t\t//Default\r\n\t\t\t\tnumberAxis.setNumberFormatOverride(Formatter.LONG_FORMAT);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void updateTickScale(DateAxis domainAxis) {\r\n\t\tDate maximumDate = domainAxis.getMaximumDate();\r\n\t\tDate minimumDate = domainAxis.getMinimumDate();\r\n\t\tlong diff = Math.abs(maximumDate.getTime() - minimumDate.getTime());\r\n\t\tlong days = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);\r\n\t\tif (days > 732) {\t\t // above 2 years\r\n\t\t\tdomainAxis.setTickUnit(yearTick, false, true);\r\n\t\t\tdomainAxis.setDateFormatOverride(yearsFormat);\r\n\t\t} else if (days > 400) { // above 1 years\r\n\t\t\tdomainAxis.setTickUnit(monthTick, false, true);\r\n\t\t\tdomainAxis.setDateFormatOverride(yearFormat);\r\n\t\t} else if (days > 60) {  // above 2 months\r\n\t\t\tdomainAxis.setTickUnit(monthTick, false, true);\r\n\t\t\tdomainAxis.setDateFormatOverride(monthsFormat);\r\n\t\t} else if (days > 7) {  // above 7 days\r\n\t\t\tdomainAxis.setAutoTickUnitSelection(true, false); //Auto (hard zone to do well)\r\n\t\t\tdomainAxis.setDateFormatOverride(monthFormat);\r\n\t\t} else {\t\t\t\t// bellow 7 days\r\n\t\t\tdomainAxis.setTickUnit(daysTick, false, true);\r\n\t\t\tdomainAxis.setDateFormatOverride(daysFormat);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static class SimpleRenderer extends XYLineAndShapeRenderer {\r\n\r\n\t\tprivate final Stroke LEGEND_STROKE = new BasicStroke(0.9f);\r\n\t\tprivate final Shape LEGEND_SHAPE = new Ellipse2D.Float(-5.5f, -5.5f, 11f, 11f);\r\n\t\tprivate final Shape ITEM_SHAPE = new Ellipse2D.Float(-3.0f, -3.0f, 6.0f, 6.0f);\r\n\r\n\r\n\t\tpublic SimpleRenderer(boolean lines, boolean shapes) {\r\n\t\t\tsuper(lines, shapes);\r\n\t\t}\r\n\r\n\t\tpublic SimpleRenderer() {\r\n\t\t\tsuper(true, false);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic LegendItem getLegendItem(int datasetIndex, int series) {\r\n\t\t\tLegendItem original = super.getLegendItem(datasetIndex, series); //To change body of generated methods, choose Tools | Templates.\r\n\t\t\tLegendItem fixed = new LegendItem(\r\n\t\t\t\toriginal.getLabel(),\r\n\t\t\t\toriginal.getDescription(),\r\n\t\t\t\toriginal.getToolTipText(),\r\n\t\t\t\t\"\", //urlText\r\n\t\t\t\tLEGEND_SHAPE,\r\n\t\t\t\toriginal.getLinePaint(), //set fill paint to line paint\r\n\t\t\t\tLEGEND_STROKE, //original.getOutlineStroke(),\r\n\t\t\t\tColor.BLACK\r\n\t\t\t);\r\n\t\t\tfixed.setSeriesIndex(series);\r\n\t\t\tfixed.setDatasetIndex(datasetIndex);\r\n\t\t\treturn fixed;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic Shape getItemShape(int row, int column) {\r\n\t\t\treturn ITEM_SHAPE;\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/JOptionInput.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared;\r\n\r\nimport java.awt.Component;\r\nimport java.awt.HeadlessException;\r\nimport java.util.Locale;\r\nimport javax.swing.Icon;\r\nimport javax.swing.JDialog;\r\nimport javax.swing.JOptionPane;\r\nimport static javax.swing.JOptionPane.OK_CANCEL_OPTION;\r\nimport static javax.swing.JOptionPane.QUESTION_MESSAGE;\r\nimport static javax.swing.JOptionPane.UNINITIALIZED_VALUE;\r\nimport static javax.swing.JOptionPane.getRootFrame;\r\nimport javax.swing.UIManager;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\npublic class JOptionInput {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(JOptionInput.class);\r\n\r\n\tpublic static String showInputDialog(Object message) throws HeadlessException {\r\n\t\treturn showInputDialog(null, message);\r\n\t}\r\n\r\n\tpublic static String showInputDialog(Object message, Object initialSelectionValue) {\r\n\t\treturn showInputDialog(null, message, initialSelectionValue);\r\n\t}\r\n\r\n\tpublic static String showInputDialog(Component parentComponent, Object message) throws HeadlessException {\r\n\t\treturn showInputDialog(parentComponent, message, getString(\"OptionPane.inputDialogTitle\", parentComponent), QUESTION_MESSAGE);\r\n\t}\r\n\r\n\tpublic static String showInputDialog(Component parentComponent, Object message, Object initialSelectionValue) {\r\n\t\treturn (String) showInputDialog(parentComponent, message, getString(\"OptionPane.inputDialogTitle\", parentComponent), QUESTION_MESSAGE, null, null, initialSelectionValue);\r\n\t}\r\n\r\n\tpublic static String showInputDialog(Component parentComponent, Object message, String title, int messageType) {\r\n\t\treturn (String) showInputDialog(parentComponent, message, title,\r\n\t\t\t\tmessageType, null, null, null);\r\n\t}\r\n\r\n\tpublic static Object showInputDialog(Component parentComponent, Object message, String title, int messageType, Icon icon, Object[] selectionValues, Object initialSelectionValue) {\r\n\t\ttry {\r\n\t\t\treturn internalInputDialog(parentComponent, message, title, messageType, icon, selectionValues, initialSelectionValue);\r\n\t\t} catch (Throwable ex) { //Fallback on ANY error\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t\treturn JOptionPane.showInputDialog(parentComponent, message, title, messageType, icon, selectionValues, initialSelectionValue);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static Object internalInputDialog(Component parentComponent, Object message, String title, int messageType, Icon icon, Object[] selectionValues, Object initialSelectionValue) {\r\n\t\tJOptionPane pane = new JOptionPane(message, messageType,\r\n\t\t\t\tOK_CANCEL_OPTION, icon,\r\n\t\t\t\tnull, null);\r\n\r\n\t\tpane.setWantsInput(true);\r\n\t\tpane.setSelectionValues(selectionValues);\r\n\t\tpane.setInitialSelectionValue(initialSelectionValue);\r\n\t\tpane.setComponentOrientation(((parentComponent == null)\r\n\t\t\t\t? getRootFrame() : parentComponent).getComponentOrientation());\r\n\r\n\t\tTextManager.installAll(pane);\r\n\r\n\t\tJDialog dialog = pane.createDialog(parentComponent, title);\r\n\r\n\t\tpane.selectInitialValue();\r\n\t\tdialog.setVisible(true);\r\n\t\tdialog.dispose();\r\n\r\n\t\tObject value = pane.getInputValue();\r\n\r\n\t\tif (value == UNINITIALIZED_VALUE) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn value;\r\n\t}\r\n\r\n\tprivate static String getString(Object key, Component c) {\r\n\t\tLocale l = (c == null) ? Locale.getDefault() : c.getLocale();\r\n\t\treturn UIManager.getString(key, l);\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/JSimpleColorPicker.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared;\r\n\r\nimport java.awt.AlphaComposite;\r\nimport java.awt.Color;\r\nimport java.awt.Component;\r\nimport java.awt.Composite;\r\nimport java.awt.Dimension;\r\nimport java.awt.Graphics;\r\nimport java.awt.Graphics2D;\r\nimport java.awt.GridLayout;\r\nimport java.awt.Point;\r\nimport java.awt.RenderingHints;\r\nimport java.awt.Window;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.awt.event.MouseAdapter;\r\nimport java.awt.event.MouseEvent;\r\nimport java.awt.event.WindowAdapter;\r\nimport java.awt.event.WindowEvent;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport java.util.Objects;\r\nimport javax.swing.BorderFactory;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.Icon;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JColorChooser;\r\nimport javax.swing.JDialog;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JPanel;\r\nimport javax.swing.JPopupMenu;\r\nimport javax.swing.border.Border;\r\nimport net.nikr.eve.jeveasset.data.settings.Colors;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\npublic class JSimpleColorPicker {\r\n\r\n\tprivate final JDialog jDialog;\r\n\tprivate final List<ButtonColorIcon> icons = new ArrayList<>();\r\n\tprivate final JButton jDefault;\r\n\tprivate final JButton jNone;\r\n\tprivate Color input;\r\n\tprivate Color defaultColor;\r\n\tprivate ColorListenere colorListenere;\r\n\r\n\tpublic JSimpleColorPicker(Window jParent) {\r\n\r\n\t\tjDialog = new JDialog(jParent);\r\n\t\tjDialog.setUndecorated(true);\r\n\t\tjDialog.addWindowListener(new WindowAdapter() {\r\n\t\t\t@Override\r\n\t\t\tpublic void windowDeactivated(WindowEvent e) {\r\n\t\t\t\tcancel();\r\n\t\t\t}\r\n\t\t});\r\n\t\tJPanel jPanel = new JPanel();\r\n\t\tif (ColorUtil.isBrightColor(jPanel.getBackground())) { //Light background color\r\n\t\t\tjPanel.setBackground(Color.WHITE);\r\n\t\t} else { //Dark background color\r\n\t\t\tjPanel.setBackground(Color.BLACK);\r\n\t\t}\r\n\r\n\t\tjPanel.setBorder(new JPopupMenu().getBorder());\r\n\t\tGroupLayout groupLayout = new GroupLayout(jPanel);\r\n\t\tgroupLayout.setAutoCreateContainerGaps(true);\r\n\t\tgroupLayout.setAutoCreateGaps(true);\r\n\t\tjPanel.setLayout(groupLayout);\r\n\t\tjDialog.add(jPanel);\r\n\r\n\t\tjDefault = createButton(GuiShared.get().colorDefault());\r\n\t\tjDefault.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\treset();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tjNone = createButton(GuiShared.get().colorNone());\r\n\t\tjNone.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tnone();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tJPanel jColorPanel = new JPanel();\r\n\t\tjColorPanel.setOpaque(false);\r\n\t\tjColorPanel.setLayout(new GridLayout(0, 10, 0, 1));\r\n\r\n\t\tfor (Color color : getColors()) {\r\n\t\t\tadd(jColorPanel, color);\r\n\t\t}\r\n\r\n\t\tList<Colors> colors = new ArrayList<>();\r\n\t\tcolors.add(Colors.LIGHT_GRAY);\r\n\t\tcolors.add(Colors.STRONG_GRAY);\r\n\t\tcolors.add(Colors.FOREGROUND_RED);\r\n\t\tcolors.add(Colors.FOREGROUND_GREEN);\r\n\t\tcolors.add(Colors.LIGHT_RED);\r\n\t\tcolors.add(Colors.STRONG_RED);\r\n\t\tcolors.add(Colors.LIGHT_ORANGE);\r\n\t\tcolors.add(Colors.STRONG_ORANGE);\r\n\t\tcolors.add(Colors.LIGHT_YELLOW);\r\n\t\tcolors.add(Colors.STRONG_YELLOW);\r\n\t\tcolors.add(Colors.LIGHT_GREEN);\r\n\t\tcolors.add(Colors.STRONG_GREEN);\r\n\t\tcolors.add(Colors.LIGHT_BLUE);\r\n\t\tcolors.add(Colors.STRONG_BLUE);\r\n\t\tcolors.add(Colors.LIGHT_MAGENTA);\r\n\t\tcolors.add(Colors.STRONG_MAGENTA);\r\n\r\n\t\tJPanel jClassicPanel = new JPanel();\r\n\t\tjClassicPanel.setOpaque(false);\r\n\t\tjClassicPanel.setLayout(new GridLayout(0, 2, 0, 1));\r\n\r\n\t\tfor (Colors defaultColors : colors) {\r\n\t\t\tadd(jClassicPanel, defaultColors);\r\n\t\t}\r\n\r\n\t\tList<Colors> blindColors = new ArrayList<>();\r\n\t\tblindColors.add(Colors.DARK_GRAY);\r\n\t\tblindColors.add(Colors.COLORBLIND_FOREGROUND_GREEN);\r\n\t\tblindColors.add(Colors.COLORBLIND_FOREGROUND_RED);\r\n\t\tblindColors.add(Colors.COLORBLIND_ORANGE);\r\n\t\tblindColors.add(Colors.COLORBLIND_YELLOW);\r\n\t\tblindColors.add(Colors.COLORBLIND_GREEN);\r\n\t\tblindColors.add(Colors.COLORBLIND_BLUE);\r\n\t\tblindColors.add(Colors.COLORBLIND_MAGENTA);\r\n\r\n\t\tJPanel jBlindPanel = new JPanel();\r\n\t\tjBlindPanel.setOpaque(false);\r\n\t\tjBlindPanel.setLayout(new GridLayout(0, 1, 0, 1));\r\n\r\n\t\tfor (Colors defaultColors : blindColors) {\r\n\t\t\tadd(jBlindPanel, defaultColors);\r\n\t\t}\r\n\r\n\t\tList<Colors> darkColors = new ArrayList<>();\r\n\t\tdarkColors.add(Colors.DARK_FOREGROUND_GREEN);\r\n\t\tdarkColors.add(Colors.DARK_FOREGROUND_RED);\r\n\t\tdarkColors.add(Colors.DARK_RED);\r\n\t\tdarkColors.add(Colors.DARK_ORANGE);\r\n\t\tdarkColors.add(Colors.DARK_YELLOW);\r\n\t\tdarkColors.add(Colors.DARK_GREEN);\r\n\t\tdarkColors.add(Colors.DARK_BLUE);\r\n\t\tdarkColors.add(Colors.DARK_MAGENTA);\r\n\r\n\t\tJPanel jDarkPanel = new JPanel();\r\n\t\tjDarkPanel.setOpaque(false);\r\n\t\tjDarkPanel.setLayout(new GridLayout(0, 1, 0, 1));\r\n\r\n\t\tfor (Colors defaultColors : darkColors) {\r\n\t\t\tadd(jDarkPanel, defaultColors);\r\n\t\t}\r\n\r\n\t\tJButton jCustom = createButton(GuiShared.get().colorCustom());\r\n\t\tjCustom.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tColor color = JColorChooser.showDialog(jParent, null, input);\r\n\t\t\t\tif (color == null) {\r\n\t\t\t\t\tcancel();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsave(color);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tgroupLayout.setHorizontalGroup(\r\n\t\t\t\tgroupLayout.createParallelGroup(GroupLayout.Alignment.CENTER)\r\n\t\t\t\t\t\t.addGroup(groupLayout.createSequentialGroup()\r\n\t\t\t\t\t\t\t.addComponent(jDefault, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\r\n\t\t\t\t\t\t\t.addComponent(jNone, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.addGroup(groupLayout.createSequentialGroup()\r\n\t\t\t\t\t\t\t.addComponent(jColorPanel)\r\n\t\t\t\t\t\t\t.addGap(15)\r\n\t\t\t\t\t\t\t.addComponent(jClassicPanel)\r\n\t\t\t\t\t\t\t.addGap(0)\r\n\t\t\t\t\t\t\t.addComponent(jBlindPanel)\r\n\t\t\t\t\t\t\t.addGap(0)\r\n\t\t\t\t\t\t\t.addComponent(jDarkPanel)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.addComponent(jCustom, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\r\n\t\t);\r\n\t\tgroupLayout.setVerticalGroup(\r\n\t\t\t\tgroupLayout.createSequentialGroup()\r\n\t\t\t\t\t\t.addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.CENTER)\r\n\t\t\t\t\t\t\t.addComponent(jDefault)\r\n\t\t\t\t\t\t\t.addComponent(jNone)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t\t\t\t.addComponent(jColorPanel)\r\n\t\t\t\t\t\t\t.addComponent(jClassicPanel)\r\n\t\t\t\t\t\t\t.addComponent(jBlindPanel)\r\n\t\t\t\t\t\t\t.addComponent(jDarkPanel)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.addComponent(jCustom)\r\n\t\t);\r\n\t}\r\n\r\n\tprivate void add(JPanel jPanel, Colors color) {\r\n\t\tadd(jPanel, color != null ? color.getColor() : null);\r\n\t}\r\n\tprivate void add(JPanel jPanel, Color color) {\r\n\t\tif (color == null) {\r\n\t\t\tJLabel jLabel = new JLabel();\r\n\t\t\tDimension dimension = new Dimension(ButtonColorIcon.SIZE, ButtonColorIcon.SIZE);\r\n\t\t\tjLabel.setMinimumSize(dimension);\r\n\t\t\tjLabel.setPreferredSize(dimension);\r\n\t\t\tjLabel.setMaximumSize(dimension);\r\n\t\t\tjPanel.add(jLabel);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tButtonColorIcon icon = new ButtonColorIcon(color, ColorUtil.isBrightColor(jPanel.getBackground()));\r\n\t\ticons.add(icon);\r\n\r\n\t\tJButton jButton = createButton(icon);\r\n\t\tjButton.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tsave(color);\r\n\t\t\t}\r\n\t\t});\r\n\t\tjPanel.add(jButton);\r\n\t}\r\n\r\n\tpublic void show(Color input, Color defaultColor, boolean nullable, Point point, ColorListenere colorListenere) {\r\n\t\tthis.input = input;\r\n\t\tthis.defaultColor = defaultColor;\r\n\t\tthis.colorListenere = colorListenere;\r\n\t\tfor (ButtonColorIcon icon : icons) {\r\n\t\t\ticon.setSelect(input);\r\n\t\t}\r\n\t\tjDefault.setEnabled(!Objects.equals(input, defaultColor));\r\n\t\tjDefault.setBorder(getBorder(jDefault));\r\n\t\tjNone.setEnabled(input != null && nullable);\r\n\t\tjNone.setBorder(getBorder(jNone));\r\n\t\tjDialog.pack();\r\n\t\tjDialog.setLocation(point.x - jDialog.getSize().width, point.y);\r\n\t\tjDialog.setVisible(true);\r\n\t}\r\n\r\n\tprivate void cancel() {\r\n\t\tjDialog.setVisible(false);\r\n\t\tcolorListenere.cancelled();\r\n\t}\r\n\r\n\tprivate void reset() {\r\n\t\tcolorListenere.colorChanged(defaultColor);\r\n\t\tjDialog.setVisible(false);\r\n\t}\r\n\r\n\tprivate void none() {\r\n\t\tcolorListenere.colorChanged(null);\r\n\t\tjDialog.setVisible(false);\r\n\t}\r\n\r\n\tprivate void save(Color color) {\r\n\t\tcolorListenere.colorChanged(color);\r\n\t\tjDialog.setVisible(false);\r\n\t}\r\n\r\n\tprivate Border getBorderInner(JButton jButton) {\r\n\t\tif (jButton.isEnabled()) {\r\n\t\t\tif (ColorUtil.isBrightColor(jButton.getBackground())) { //Light background color\r\n\t\t\t\treturn BorderFactory.createLineBorder(Color.BLACK, 1);\r\n\t\t\t} else { //Dark background color\r\n\t\t\t\treturn BorderFactory.createLineBorder(Color.WHITE, 1);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn BorderFactory.createLineBorder(Color.DARK_GRAY, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Border getBorder(JButton jButton) {\r\n\t\treturn BorderFactory.createCompoundBorder(getBorderInner(jButton), BorderFactory.createEmptyBorder(2, 2, 2, 2));\r\n\t}\r\n\r\n\tprivate JButton createButton(String text) {\r\n\t\treturn config(text, null, true);\r\n\t}\r\n\r\n\tprivate JButton createButton(Icon icon) {\r\n\t\treturn config(null, icon, false);\r\n\t}\r\n\r\n\tprivate JButton config(String text, Icon icon, boolean border) {\r\n\t\tJButton jButton = new JButton();\r\n\t\tif (text != null) {\r\n\t\t\tjButton.setText(text);\r\n\t\t\tjButton.setBackground(Colors.TABLE_SELECTION_BACKGROUND.getColor());\r\n\t\t\tjButton.addMouseListener(new MouseAdapter() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void mouseEntered(MouseEvent e) {\r\n\t\t\t\t\tif (jButton.isEnabled()) {\r\n\t\t\t\t\t\tjButton.setBorder(BorderFactory.createCompoundBorder(getBorderInner(jButton),\r\n\t\t\t\t\t\t\tBorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Colors.TABLE_SELECTION_BACKGROUND.getColor(), 1),\r\n\t\t\t\t\t\t\tBorderFactory.createEmptyBorder(1, 1, 1, 1))));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void mouseExited(MouseEvent e) {\r\n\t\t\t\t\tjButton.setBorder(getBorder(jButton));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (icon != null) {\r\n\t\t\tjButton.setIcon(icon);\r\n\t\t\tif (icon instanceof ButtonColorIcon) {\r\n\t\t\t\tButtonColorIcon buttonColorIcon = (ButtonColorIcon) icon;\r\n\t\t\t\tjButton.addMouseListener(new MouseAdapter() {\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tpublic void mouseEntered(MouseEvent e) {\r\n\t\t\t\t\t\tif (jButton.isEnabled()) {\r\n\t\t\t\t\t\t\tbuttonColorIcon.setHover(true);\r\n\t\t\t\t\t\t\tjButton.repaint();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tpublic void mouseExited(MouseEvent e) {\r\n\t\t\t\t\t\tbuttonColorIcon.setHover(false);\r\n\t\t\t\t\t\tjButton.repaint();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tjButton.setFocusPainted(false);\r\n\t\tif (border) {\r\n\t\t\tjButton.setBorder(getBorder(jButton));\r\n\t\t} else {\r\n\t\t\tjButton.setBorder(null);\r\n\t\t}\r\n\t\tjButton.setContentAreaFilled(false);\r\n\t\treturn jButton;\r\n\t}\r\n\r\n\tpublic static interface ColorListenere {\r\n\t\tpublic void colorChanged(Color color);\r\n\t\tpublic void cancelled();\r\n\t}\r\n\r\n\tpublic static class ButtonColorIcon implements Icon {\r\n\r\n\t\tprivate static final int SIZE = 22;\r\n\r\n\t\tprivate final Color color;\r\n\t\tprivate final boolean backgroundIsBright;\r\n\t\tprivate final boolean colorIsBright;\r\n\t\tprivate boolean selected = false;\r\n\t\tprivate boolean hover = false;\r\n\r\n\t\tpublic ButtonColorIcon(Color color, boolean brightBorder) {\r\n\t\t\tthis.color = color;\r\n\t\t\tthis.backgroundIsBright = brightBorder;\r\n\t\t\tcolorIsBright = ColorUtil.isBrightColor(color);\r\n\t\t}\r\n\r\n\t\tpublic void setSelect(Color match) {\r\n\t\t\tthis.selected = color.equals(match);\r\n\t\t}\r\n\r\n\t\tpublic void setHover(boolean hover) {\r\n\t\t\tthis.hover = hover;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void paintIcon(Component c, Graphics g, int x, int y) {\r\n\t\t\tGraphics2D g2d = (Graphics2D) g;\r\n\r\n\t\t\tg2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);\r\n\t\t\tg2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);\r\n\r\n\t\t\tif (hover) {\r\n\t\t\t\t//Hover\r\n\t\t\t\tAlphaComposite newValue = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f);\r\n\t\t\t\tComposite oldValue = g2d.getComposite();\r\n\t\t\t\tg2d.setComposite(newValue);\r\n\t\t\t\tif (backgroundIsBright) {\r\n\t\t\t\t\tg2d.setColor(Color.BLACK);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tg2d.setColor(Color.WHITE);\r\n\t\t\t\t}\r\n\t\t\t\tfillOval(g2d, 0, x, y);\r\n\t\t\t\tg2d.setComposite(oldValue);\r\n\t\t\t}\r\n\r\n\t\t\t//Border\r\n\t\t\tif (backgroundIsBright) {\r\n\t\t\t\tg2d.setColor(color.darker());\r\n\t\t\t} else {\r\n\t\t\t\tif (color.equals(Color.BLACK)) {\r\n\t\t\t\t\tg2d.setColor(Color.DARK_GRAY);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tg2d.setColor(color.brighter());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfillOval(g2d, 2, x, y);\r\n\r\n\t\t\t//Background\r\n\t\t\tg2d.setColor(color);\r\n\t\t\tfillOval(g2d, 3, x, y);\r\n\r\n\t\t\t//Icon\r\n\t\t\tif (selected) {\r\n\t\t\t\tif (colorIsBright) {\r\n\t\t\t\t\tg2d.drawImage(Images.SETTINGS_COLOR_CHECK_BLACK.getImage(), x + (getIconWidth()-16)/2, y + (getIconWidth()-16)/2, null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tg2d.drawImage(Images.SETTINGS_COLOR_CHECK_WHITE.getImage(), x + (getIconWidth()-16)/2, y + (getIconWidth()-16)/2, null);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate void fillOval(Graphics2D g2d, int offset, int x, int y) {\r\n\t\t\tg2d.fillOval(x + (offset), y + (offset), getIconWidth() - (offset*2), getIconHeight() - (offset*2));\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int getIconWidth() {\r\n\t\t\treturn SIZE;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int getIconHeight() {\r\n\t\t\treturn SIZE;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static List<Color> getColors() {\r\n\t\tList<Color> colors = new ArrayList<>();\r\n\t\t//Black Gray White\r\n\t\tcolors.add(new Color(0, 0, 0));\r\n\t\tcolors.add(new Color(67, 67, 67));\r\n\t\tcolors.add(new Color(102, 102, 102));\r\n\t\tcolors.add(new Color(153, 153, 153));\r\n\t\tcolors.add(new Color(183, 183, 183));\r\n\t\tcolors.add(new Color(204, 204, 204));\r\n\t\tcolors.add(new Color(217, 217, 217));\r\n\t\tcolors.add(new Color(239, 239, 239));\r\n\t\tcolors.add(new Color(243, 243, 243));\r\n\t\tcolors.add(new Color(255, 255, 255));\r\n\r\n\t\t//Strong\r\n\t\tcolors.add(new Color(152, 0, 0));\t//Brown\r\n\t\tcolors.add(new Color(255, 0, 0));\t//Red\r\n\t\tcolors.add(new Color(255, 152, 0));\t//Orange\r\n\t\tcolors.add(new Color(255, 255, 0));\t//Yellow\r\n\t\tcolors.add(new Color(0, 255, 0));\t//Green\r\n\t\tcolors.add(new Color(0, 255, 255));\t//Cyan\r\n\t\tcolors.add(new Color(74, 134, 232));//Light Blue\r\n\t\tcolors.add(new Color(0, 0, 255));\t//Blue\r\n\t\tcolors.add(new Color(152, 0, 255));\t//Purple\r\n\t\tcolors.add(new Color(255, 0, 255));\t//Magenta\r\n\r\n\t\tcolors.add(new Color(230, 184, 175));//Brown\r\n\t\tcolors.add(new Color(244, 204, 204));//Red\r\n\t\tcolors.add(new Color(252, 229, 205));//Orange\r\n\t\tcolors.add(new Color(255, 242, 204));//Yellow\r\n\t\tcolors.add(new Color(217, 234, 211));//Green\r\n\t\tcolors.add(new Color(208, 224, 227));//Cyan\r\n\t\tcolors.add(new Color(201, 218, 248));//Light Blue\r\n\t\tcolors.add(new Color(207, 226, 243));//Blue\r\n\t\tcolors.add(new Color(217, 210, 233));//Purple\r\n\t\tcolors.add(new Color(234, 209, 220));//Magenta\r\n\r\n\t\tcolors.add(new Color(221, 126, 107)); //Brown\r\n\t\tcolors.add(new Color(234, 153, 153)); //Red\r\n\t\tcolors.add(new Color(249, 203, 156)); //Orange\r\n\t\tcolors.add(new Color(255, 229, 153)); //Yellow\r\n\t\tcolors.add(new Color(182, 215, 168)); //Green\r\n\t\tcolors.add(new Color(162, 196, 201)); //Cyan\r\n\t\tcolors.add(new Color(164, 194, 244)); //Light Blue\r\n\t\tcolors.add(new Color(159, 197, 232)); //Blue\r\n\t\tcolors.add(new Color(180, 167, 214)); //Purple\r\n\t\tcolors.add(new Color(213, 166, 189)); //Magenta\r\n\r\n\t\tcolors.add(new Color(204, 65, 37)); //Brown\r\n\t\tcolors.add(new Color(224, 102, 102)); //Red\r\n\t\tcolors.add(new Color(246, 178, 107)); //Orange\r\n\t\tcolors.add(new Color(255, 217, 102)); //Yellow\r\n\t\tcolors.add(new Color(147, 196, 125)); //Green\r\n\t\tcolors.add(new Color(118, 165, 175)); //Cyan\r\n\t\tcolors.add(new Color(109, 158, 235)); //Light Blue\r\n\t\tcolors.add(new Color(111, 168, 220)); //Blue\r\n\t\tcolors.add(new Color(142, 124, 195)); //Purple\r\n\t\tcolors.add(new Color(194, 123, 160)); //Magenta\r\n\r\n\t\tcolors.add(new Color(166, 28, 0)); //Brown\r\n\t\tcolors.add(new Color(204, 0, 0)); //Red\r\n\t\tcolors.add(new Color(230, 145, 56)); //Orange\r\n\t\tcolors.add(new Color(241, 194, 50)); //Yellow\r\n\t\tcolors.add(new Color(106, 168, 79)); //Green\r\n\t\tcolors.add(new Color(69, 129, 142)); //Cyan\r\n\t\tcolors.add(new Color(60, 120, 216)); //Light Blue\r\n\t\tcolors.add(new Color(61, 133, 198)); //Blue\r\n\t\tcolors.add(new Color(103, 78, 167)); //Purple\r\n\t\tcolors.add(new Color(166, 77, 121)); //Magenta\r\n\r\n\t\tcolors.add(new Color(133, 32, 12)); //Brown\r\n\t\tcolors.add(new Color(153, 0, 0)); //Red\r\n\t\tcolors.add(new Color(180, 95, 6)); //Orange\r\n\t\tcolors.add(new Color(191, 144, 0)); //Yellow\r\n\t\tcolors.add(new Color(56, 118, 29)); //Green\r\n\t\tcolors.add(new Color(19, 79, 92)); //Cyan\r\n\t\tcolors.add(new Color(17, 85, 204)); //Light Blue\r\n\t\tcolors.add(new Color(11, 83, 148)); //Blue\r\n\t\tcolors.add(new Color(53, 28, 117)); //Purple\r\n\t\tcolors.add(new Color(116, 27, 71)); //Magenta\r\n\r\n\t\tcolors.add(new Color(91, 15, 0)); //Brown\r\n\t\tcolors.add(new Color(102, 0, 0)); //Red\r\n\t\tcolors.add(new Color(120, 63, 5)); //Orange\r\n\t\tcolors.add(new Color(127, 96, 0)); //Yellow\r\n\t\tcolors.add(new Color(39, 78, 19)); //Green\r\n\t\tcolors.add(new Color(12, 52, 61)); //Cyan\r\n\t\tcolors.add(new Color(28, 69, 135)); //Light Blue\r\n\t\tcolors.add(new Color(7, 55, 99)); //Blue\r\n\t\tcolors.add(new Color(32, 18, 77)); //Purple\r\n\t\tcolors.add(new Color(76, 17, 48)); //Magenta\r\n\r\n\t\treturn colors;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/MarketDetailsColumn.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared;\r\n\r\nimport ca.odell.glazedlists.EventList;\r\nimport ca.odell.glazedlists.event.ListEvent;\r\nimport ca.odell.glazedlists.event.ListEventListener;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport javax.swing.JButton;\r\nimport net.nikr.eve.jeveasset.data.settings.types.MarketDetailType;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JButtonNull;\r\n\r\n\r\npublic class MarketDetailsColumn {\r\n\tpublic static <E extends MarketDetailType> void install(EventList<E> eventList, MarketDetailsActionListener<E> marketDetailsActionListener) {\r\n\t\teventList.addListEventListener(new ListEventListener<E>() {\r\n\t\t\t@Override @SuppressWarnings(\"deprecation\")\r\n\t\t\tpublic void listChanged(ListEvent<E> listChanges) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\t\t\t\twhile(listChanges.next()) {\r\n\t\t\t\t\t\tswitch (listChanges.getType()) {\r\n\t\t\t\t\t\t\tcase ListEvent.DELETE:\r\n\t\t\t\t\t\t\t\tE oldMarketDetails = listChanges.getOldValue();\r\n\t\t\t\t\t\t\t\tJButton jOldButton = oldMarketDetails.getButton();\r\n\t\t\t\t\t\t\t\t//check null button\r\n\t\t\t\t\t\t\t\tif (jOldButton == null || jOldButton instanceof JButtonNull) {\r\n\t\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t//remove old ActionListener(s)\r\n\t\t\t\t\t\t\t\tfor (ActionListener actionListener : jOldButton.getActionListeners()) {\r\n\t\t\t\t\t\t\t\t\tjOldButton.removeActionListener(actionListener);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase ListEvent.INSERT:\r\n\t\t\t\t\t\t\t\tint index = listChanges.getIndex();\r\n\t\t\t\t\t\t\t\t//check index\r\n\t\t\t\t\t\t\t\tif (index < 0 || index >= eventList.size()) {\r\n\t\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tE newMarketDetails = eventList.get(index);\r\n\t\t\t\t\t\t\t\tJButton jNewButton = newMarketDetails.getButton();\r\n\t\t\t\t\t\t\t\t//check null button\r\n\t\t\t\t\t\t\t\tif (jNewButton == null || jNewButton instanceof JButtonNull) {\r\n\t\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t//remove old ActionListener(s)\r\n\t\t\t\t\t\t\t\tfor (ActionListener actionListener : jNewButton.getActionListeners()) {\r\n\t\t\t\t\t\t\t\t\tjNewButton.removeActionListener(actionListener);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t//add new ActionListener\r\n\t\t\t\t\t\t\t\tjNewButton.addActionListener(new ActionListener() {\r\n\t\t\t\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\t\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\t\t\t\t\t\t\tmarketDetailsActionListener.openMarketDetails(newMarketDetails);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} finally {\r\n\t\t\t\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tpublic static interface MarketDetailsActionListener<E extends MarketDetailType> {\r\n\t\tpublic void openMarketDetails(E marketDetails);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/MenuScroller.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * Original code by Darryl (http://tips4java.wordpress.com/2009/02/01/menu-scroller/)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared;\r\n\r\nimport java.awt.*;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.awt.event.MouseEvent;\r\nimport java.awt.event.MouseListener;\r\nimport java.awt.event.MouseWheelEvent;\r\nimport java.awt.event.MouseWheelListener;\r\nimport javax.swing.*;\r\nimport javax.swing.event.ChangeEvent;\r\nimport javax.swing.event.ChangeListener;\r\nimport javax.swing.event.MenuEvent;\r\nimport javax.swing.event.MenuListener;\r\nimport javax.swing.event.PopupMenuEvent;\r\nimport javax.swing.event.PopupMenuListener;\r\n\r\n/**\r\n * A class that provides scrolling capabilities to a long menu dropdown or popup\r\n * menu. A number of items can optionally be frozen at the top and/or bottom of\r\n * the menu. <P> <B>Implementation note:</B> The default number of items to\r\n * display at a time is 15, and the default scrolling interval is 125\r\n * milliseconds. <P>\r\n *\r\n * @author Darryl, http://tips4java.wordpress.com/2009/02/01/menu-scroller/\r\n */\r\npublic class MenuScroller {\r\n\r\n\tprivate MenuContainer menu;\r\n\tprivate Component[] menuItems;\r\n\tprivate MenuScrollItem upItem;\r\n\tprivate MenuScrollItem downItem;\r\n\tprivate final MenuScrollListener menuListener = new MenuScrollListener();\r\n\tprivate final MouseScrollListener mouseListener = new MouseScrollListener();\r\n\tprivate int scrollCount;\r\n\tprivate int interval;\r\n\tprivate int topFixedCount;\r\n\tprivate int bottomFixedCount;\r\n\tprivate int firstIndex = 0;\r\n\tprivate int keepVisibleIndex = -1;\r\n\r\n\t/**\r\n\t * Constructs a\r\n\t * <code>MenuScroller</code> that scrolls a popup menu with the default\r\n\t * number of items to display at a time, and default scrolling interval.\r\n\t *\r\n\t * @param menu the popup menu\r\n\t */\r\n\tpublic MenuScroller(final JPopupMenu menu) {\r\n\t\tthis(menu, 15);\r\n\t}\r\n\r\n\t/**\r\n\t * Constructs a\r\n\t * <code>MenuScroller</code> that scrolls a popup menu with the specified\r\n\t * number of items to display at a time, and specified scrolling interval.\r\n\t *\r\n\t * @param menu the popup menu\r\n\t * @param interval the scroll interval, in milliseconds\r\n\t * @throws IllegalArgumentException if scrollCount or interval is 0 or\r\n\t * negative\r\n\t */\r\n\tpublic MenuScroller(final JPopupMenu menu, final int interval) {\r\n\t\tthis(menu, interval, 0, 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Constructs a\r\n\t * <code>MenuScroller</code> that scrolls a popup menu with the specified\r\n\t * number of items to display in the scrolling region, the specified\r\n\t * scrolling interval, and the specified numbers of items fixed at the top\r\n\t * and bottom of the popup menu.\r\n\t *\r\n\t * @param menu the popup menu\r\n\t * @param interval the scroll interval, in milliseconds\r\n\t * @param topFixedCount the number of items to fix at the top. May be 0\r\n\t * @param bottomFixedCount the number of items to fix at the bottom. May be\r\n\t * 0\r\n\t * @throws IllegalArgumentException if scrollCount or interval is 0 or\r\n\t * negative or if topFixedCount or bottomFixedCount is negative\r\n\t */\r\n\tpublic MenuScroller(final JPopupMenu menu, final int interval, final int topFixedCount, final int bottomFixedCount) {\r\n\t\tthis(new MenuContainer(menu), interval, topFixedCount, bottomFixedCount);\r\n\t}\r\n\r\n\tpublic MenuScroller(final JMenu menu) {\r\n\t\tthis(menu, 15);\r\n\t}\r\n\r\n\tpublic MenuScroller(final JMenu menu, final int interval) {\r\n\t\tthis(menu, interval, 0, 0);\r\n\t}\r\n\r\n\tpublic MenuScroller(final JMenu menu, final int interval, final int topFixedCount, final int bottomFixedCount) {\r\n\t\tthis(new MenuContainer(menu), interval, topFixedCount, bottomFixedCount);\r\n\t}\r\n\r\n\tprivate MenuScroller(final MenuContainer menu, final int interval, final int topFixedCount, final int bottomFixedCount) {\r\n\t\tif (interval <= 0) {\r\n\t\t\tthrow new IllegalArgumentException(\"interval must be greater than 0\");\r\n\t\t}\r\n\t\tif (topFixedCount < 0 || bottomFixedCount < 0) {\r\n\t\t\tthrow new IllegalArgumentException(\"topFixedCount and bottomFixedCount cannot be negative\");\r\n\t\t}\r\n\r\n\t\tupItem = new MenuScrollItem(MenuIcon.UP, -1);\r\n\t\tdownItem = new MenuScrollItem(MenuIcon.DOWN, +1);\r\n\t\tscrollCount = 0;\r\n\t\tsetInterval(interval);\r\n\t\tsetTopFixedCount(topFixedCount);\r\n\t\tsetBottomFixedCount(bottomFixedCount);\r\n\r\n\t\tthis.menu = menu;\r\n\t\t\r\n\t\tmenu.addListener(menuListener, mouseListener);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the scroll interval in milliseconds.\r\n\t *\r\n\t * @return the scroll interval in milliseconds\r\n\t */\r\n\tpublic int getInterval() {\r\n\t\treturn interval;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the scroll interval in milliseconds.\r\n\t *\r\n\t * @param interval the scroll interval in milliseconds\r\n\t * @throws IllegalArgumentException if interval is 0 or negative\r\n\t */\r\n\tpublic final void setInterval(final int interval) {\r\n\t\tif (interval <= 0) {\r\n\t\t\tthrow new IllegalArgumentException(\"interval must be greater than 0\");\r\n\t\t}\r\n\t\tupItem.setInterval(interval);\r\n\t\tdownItem.setInterval(interval);\r\n\t\tthis.interval = interval;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the number of items fixed at the top of the menu or popup menu.\r\n\t *\r\n\t * @return the number of items\r\n\t */\r\n\tpublic int getTopFixedCount() {\r\n\t\treturn topFixedCount;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the number of items to fix at the top of the menu or popup menu.\r\n\t *\r\n\t * @param topFixedCount the number of items\r\n\t */\r\n\tpublic final void setTopFixedCount(final int topFixedCount) {\r\n\t\tif (firstIndex <= topFixedCount) {\r\n\t\t\tfirstIndex = topFixedCount;\r\n\t\t} else {\r\n\t\t\tfirstIndex += (topFixedCount - this.topFixedCount);\r\n\t\t}\r\n\t\tthis.topFixedCount = topFixedCount;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the number of items fixed at the bottom of the menu or popup\r\n\t * menu.\r\n\t *\r\n\t * @return the number of items\r\n\t */\r\n\tpublic int getBottomFixedCount() {\r\n\t\treturn bottomFixedCount;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the number of items to fix at the bottom of the menu or popup menu.\r\n\t *\r\n\t * @param bottomFixedCount the number of items\r\n\t */\r\n\tpublic final void setBottomFixedCount(final int bottomFixedCount) {\r\n\t\tthis.bottomFixedCount = bottomFixedCount;\r\n\t}\r\n\r\n\t/**\r\n\t * Scrolls the specified item into view each time the menu is opened. Call\r\n\t * this method with\r\n\t * <code>null</code> to restore the default behavior, which is to show the\r\n\t * menu as it last appeared.\r\n\t *\r\n\t * @param item the item to keep visible\r\n\t * @see #keepVisible(int)\r\n\t */\r\n\tpublic void keepVisible(final JMenuItem item) {\r\n\t\tif (item == null) {\r\n\t\t\tkeepVisibleIndex = -1;\r\n\t\t} else {\r\n\t\t\tint index = menu.getComponentIndex(item);\r\n\t\t\tkeepVisibleIndex = index;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Scrolls the item at the specified index into view each time the menu is\r\n\t * opened. Call this method with\r\n\t * <code>-1</code> to restore the default behavior, which is to show the\r\n\t * menu as it last appeared.\r\n\t *\r\n\t * @param index the index of the item to keep visible\r\n\t * @see #keepVisible(javax.swing.JMenuItem)\r\n\t */\r\n\tpublic void keepVisible(final int index) {\r\n\t\tkeepVisibleIndex = index;\r\n\t}\r\n\r\n\t/**\r\n\t * Removes this MenuScroller from the associated menu and restores the\r\n\t * default behavior of the menu.\r\n\t */\r\n\tpublic void dispose() {\r\n\t\tif (menu != null) {\r\n\t\t\tmenu.removeListener(menuListener, mouseListener);\r\n\t\t\tmenu = null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void refreshMenu() {\r\n\t\tif (menuItems != null && menuItems.length > 0) {\r\n\t\t\tint maxScroll = menuItems.length - (topFixedCount + bottomFixedCount + 2);\r\n\t\t\tif (scrollCount == maxScroll) { //Show All\r\n\t\t\t\tmenu.setPreferredSize(null);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tfirstIndex = Math.max(topFixedCount, firstIndex);\r\n\t\t\tfirstIndex = Math.min(menuItems.length - bottomFixedCount - scrollCount, firstIndex);\r\n\t\t\tupItem.setEnabled(firstIndex > topFixedCount);\r\n\t\t\tdownItem.setEnabled(firstIndex + scrollCount < menuItems.length - bottomFixedCount);\r\n\r\n\t\t\tmenu.removeAll();\r\n\t\t\t//Top Fixed\r\n\t\t\tfor (int i = 0; i < topFixedCount && i < menuItems.length; i++) {\r\n\t\t\t\tmenu.add(menuItems[i]);\r\n\t\t\t}\r\n\t\t\t//Scroll\r\n\t\t\tmenu.add(upItem);\r\n\t\t\tfor (int i = firstIndex; i < scrollCount + firstIndex; i++) {\r\n\t\t\t\tmenu.add(menuItems[i]);\r\n\t\t\t}\r\n\t\t\tmenu.add(downItem);\r\n\r\n\t\t\t//Bottom Fixed\r\n\t\t\tfor (int i = menuItems.length - bottomFixedCount; i < menuItems.length; i++) {\r\n\t\t\t\tmenu.add(menuItems[i]);\r\n\t\t\t}\r\n\t\t\tint preferredWidth = 0;\r\n\t\t\tfor (Component item : menuItems) {\r\n\t\t\t\tpreferredWidth = Math.max(preferredWidth, item.getPreferredSize().width);\r\n\t\t\t}\r\n\t\t\tmenu.setPreferredSize(null); //Reset height\r\n\t\t\tmenu.setPreferredSize(new Dimension(preferredWidth, menu.getPreferredSize().height));\r\n\r\n\t\t\tJComponent parent = (JComponent) upItem.getParent();\r\n\t\t\tparent.revalidate();\r\n\t\t\tparent.repaint();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void scrollCountForScreen() {\r\n\t\tint maxHeight = 0;\r\n\t\tif (menuItems != null && menuItems.length > 0) {\r\n\t\t\tfor (Component item : menuItems) {\r\n\t\t\t\tmaxHeight = Math.max(maxHeight, item.getPreferredSize().height);\r\n\t\t\t}\r\n\t\t\tDimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();\r\n\t\t\tint height = screenSize.height;\r\n\t\t\tint maxScroll = (height / maxHeight) - (topFixedCount + bottomFixedCount + 2); // 2 just takes the menu up a bit from the bottom which looks nicer\r\n\t\t\tscrollCount = Math.min(maxScroll, menuItems.length - (topFixedCount + bottomFixedCount + 2));\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class MenuScrollListener implements PopupMenuListener, MenuListener {\r\n\r\n\t\t@Override\r\n\t\tpublic void menuSelected(MenuEvent e) {\r\n\t\t\tsetMenuItems();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void menuDeselected(MenuEvent e) {\r\n\t\t\trestoreMenuItems();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void menuCanceled(MenuEvent e) {\r\n\t\t\t//restoreMenuItems();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void popupMenuWillBecomeVisible(final PopupMenuEvent e) {\r\n\t\t\tsetMenuItems();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void popupMenuWillBecomeInvisible(final PopupMenuEvent e) {\r\n\t\t\trestoreMenuItems();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void popupMenuCanceled(final PopupMenuEvent e) {\r\n\t\t\trestoreMenuItems();\r\n\t\t}\r\n\r\n\t\tprivate void setMenuItems() {\r\n\t\t\tmenuItems = menu.getComponents();\r\n\t\t\tscrollCountForScreen();\r\n\t\t\tif (keepVisibleIndex >= topFixedCount\r\n\t\t\t\t\t&& keepVisibleIndex <= menuItems.length - bottomFixedCount\r\n\t\t\t\t\t&& (keepVisibleIndex > firstIndex + scrollCount\r\n\t\t\t\t\t|| keepVisibleIndex < firstIndex)) {\r\n\t\t\t\tfirstIndex = Math.min(firstIndex, keepVisibleIndex);\r\n\t\t\t\tfirstIndex = Math.max(firstIndex, keepVisibleIndex - scrollCount + 1);\r\n\t\t\t}\r\n\t\t\tif (menuItems.length > topFixedCount + scrollCount + bottomFixedCount) {\r\n\t\t\t\trefreshMenu();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate void restoreMenuItems() {\r\n\t\t\tmenu.removeAll();\r\n\t\t\tfor (Component component : menuItems) {\r\n\t\t\t\tmenu.add(component);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class MouseScrollListener implements MouseWheelListener {\r\n\r\n\t\t@Override\r\n\t\tpublic void mouseWheelMoved(final MouseWheelEvent mwe) {\r\n\t\t\tfirstIndex += mwe.getWheelRotation();\r\n\t\t\tmwe.consume();\r\n\t\t\trefreshMenu();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class MenuScrollItem extends JMenuItem implements ChangeListener, MouseListener{\r\n\r\n\t\tprivate Timer timer;\r\n\r\n\t\tpublic MenuScrollItem(final MenuIcon icon, final int increment) {\r\n\t\t\tsetIcon(icon);\r\n\t\t\tsetDisabledIcon(icon);\r\n\t\t\ttimer = new Timer(interval, new ActionListener() {\r\n\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\t\t\tfirstIndex += increment;\r\n\t\t\t\t\trefreshMenu();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\taddChangeListener(this);\r\n\t\t\taddMouseListener(this);\r\n\t\t}\r\n\r\n\t\tpublic void setInterval(final int interval) {\r\n\t\t\ttimer.setDelay(interval);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tprotected void processMouseEvent(MouseEvent e) {\r\n\t\t\tif (e.getButton() == MouseEvent.NOBUTTON) { //Ignore mouse clicks\r\n\t\t\t\tsuper.processMouseEvent(e); //Process mouse event like normal\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void mouseClicked(MouseEvent e) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void mousePressed(MouseEvent e) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void mouseReleased(MouseEvent e) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void mouseEntered(MouseEvent e) {\r\n\t\t\tif (!isArmed()) {\r\n\t\t\t\tsetArmed(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void mouseExited(MouseEvent e) {\r\n\t\t\tif (isArmed()) {\r\n\t\t\t\tsetArmed(false);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void stateChanged(final ChangeEvent e) {\r\n\t\t\tif (isArmed() && !timer.isRunning()) {\r\n\t\t\t\ttimer.start();\r\n\t\t\t}\r\n\t\t\tif (!isArmed() && timer.isRunning()) {\r\n\t\t\t\ttimer.stop();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static enum MenuIcon implements Icon {\r\n\r\n\t\tUP(7, 3, 7),\r\n\t\tDOWN(3, 7, 3);\r\n\t\tprivate final int[] xPoints = {1, 5, 9};\r\n\t\tprivate final int[] yPoints;\r\n\t\tprivate final boolean bright;\r\n\r\n\t\tMenuIcon(final int... yPoints) {\r\n\t\t\tthis.yPoints = yPoints;\r\n\t\t\tbright = ColorUtil.isBrightColor(new JPanel().getBackground());\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void paintIcon(final Component c, final Graphics g, final int x, final int y) {\r\n\t\t\tDimension size = c.getSize();\r\n\t\t\tGraphics g2 = g.create(size.width / 2 - 5, size.height / 2 - 5, 10, 10);\r\n\t\t\tif (bright) {\r\n\t\t\t\tif (c.isEnabled()) {\r\n\t\t\t\t\tg2.setColor(Color.BLACK);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tg2.setColor(Color.LIGHT_GRAY);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (c.isEnabled()) {\r\n\t\t\t\t\tg2.setColor(Color.GRAY.brighter());\r\n\t\t\t\t} else {\r\n\t\t\t\t\tg2.setColor(Color.GRAY.darker());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tg2.fillPolygon(xPoints, yPoints, 3);\r\n\t\t\tif (bright) {\r\n\t\t\t\tif (c.isEnabled()) {\r\n\t\t\t\t\tg2.setColor(Color.DARK_GRAY);\r\n\t\t\t\t} else {\t\r\n\t\t\t\t\tg2.setColor(Color.LIGHT_GRAY);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (c.isEnabled()) {\r\n\t\t\t\t\tg2.setColor(Color.LIGHT_GRAY);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tg2.setColor(Color.DARK_GRAY);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tg2.drawPolygon(xPoints, yPoints, 3);\r\n\t\t\tg2.dispose();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int getIconWidth() {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int getIconHeight() {\r\n\t\t\treturn 10;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class MenuContainer {\r\n\t\tprivate final JPopupMenu jPopupMenu;\r\n\t\tprivate final JMenu jMenu;\r\n\t\tprivate final JComponent component;\r\n\r\n\t\tpublic MenuContainer(JPopupMenu jPopupMenu) {\r\n\t\t\tthis.jPopupMenu = jPopupMenu;\r\n\t\t\tthis.jMenu = null;\r\n\t\t\tthis.component = jPopupMenu;\r\n\t\t}\t\t\r\n\r\n\t\tpublic MenuContainer(JMenu jMenu) {\r\n\t\t\tthis.jPopupMenu = null;\r\n\t\t\tthis.jMenu = jMenu;\r\n\t\t\tthis.component = jMenu;\r\n\t\t}\t\t\r\n\r\n\t\tprivate int getComponentIndex(JMenuItem item) {\r\n\t\t\tif (jPopupMenu != null) {\r\n\t\t\t\treturn jPopupMenu.getComponentIndex(item);\r\n\t\t\t} else {\r\n\t\t\t\tint ncomponents = jMenu.getComponentCount();\r\n\t\t\t\tComponent[] components = jMenu.getComponents();\r\n\t\t\t\tfor (int i = 0 ; i < ncomponents ; i++) {\r\n\t\t\t\t\tComponent comp = components[i];\r\n\t\t\t\t\tif (comp == item)\r\n\t\t\t\t\t\treturn i;\r\n\t\t\t\t}\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate void setPreferredSize(Dimension preferredSize) {\r\n\t\t\tcomponent.setPreferredSize(preferredSize);\r\n\t\t}\r\n\r\n\t\tprivate void removeAll() {\r\n\t\t\tcomponent.removeAll();\r\n\t\t}\r\n\r\n\t\tprivate void add(Component menuItem) {\r\n\t\t\tcomponent.add(menuItem);\r\n\t\t}\r\n\r\n\t\tprivate Dimension getPreferredSize() {\r\n\t\t\treturn component.getPreferredSize();\r\n\t\t}\r\n\r\n\t\tprivate Component[] getComponents() {\r\n\t\t\tif (jPopupMenu != null) {\r\n\t\t\t\treturn jPopupMenu.getComponents();\r\n\t\t\t} else {\r\n\t\t\t\treturn jMenu.getMenuComponents();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate void addListener(MenuScrollListener menuListener, MouseScrollListener mouseListener) {\r\n\t\t\tif (jPopupMenu != null) {\r\n\t\t\t\tjPopupMenu.addPopupMenuListener(menuListener);\r\n\t\t\t\tjPopupMenu.addMouseWheelListener(mouseListener);\r\n\t\t\t} else {\r\n\t\t\t\tjMenu.addMenuListener(menuListener);\r\n\t\t\t\tJPopupMenu popup = jMenu.getPopupMenu();\r\n\t\t\t\tif (popup != null) {\r\n\t\t\t\t\tpopup.addMouseWheelListener(mouseListener);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate void removeListener(MenuScrollListener menuListener, MouseScrollListener mouseListener) {\r\n\t\t\tif (jPopupMenu != null) {\r\n\t\t\t\tjPopupMenu.removePopupMenuListener(menuListener);\r\n\t\t\t\tjPopupMenu.removeMouseWheelListener(mouseListener);\r\n\t\t\t} else {\r\n\t\t\t\tjMenu.removeMenuListener(menuListener);\r\n\t\t\t\tJPopupMenu popup = jMenu.getPopupMenu();\r\n\t\t\t\tif (popup != null) {\r\n\t\t\t\t\tpopup.removeMouseWheelListener(mouseListener);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/NativeUtil.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared;\r\n\r\nimport com.sun.jna.Native;\r\nimport com.sun.jna.Platform;\r\nimport com.sun.jna.platform.win32.WinDef.HWND;\r\nimport static com.sun.jna.platform.win32.WinUser.SW_RESTORE;\r\nimport static com.sun.jna.platform.win32.WinUser.SW_SHOWMINIMIZED;\r\nimport com.sun.jna.platform.win32.WinUser.WINDOWPLACEMENT;\r\nimport com.sun.jna.win32.StdCallLibrary;\r\nimport java.io.IOException;\r\n\r\n\r\npublic class NativeUtil {\r\n\r\n\tinterface User32 extends StdCallLibrary {\r\n\r\n\t\t//FindWindowA:         https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-findwindowa\r\n\t\tHWND FindWindowA(String className, String windowName);\r\n\r\n\t\t//ShowWindow:          https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-showwindow\r\n\t\tboolean ShowWindow(HWND hWnd, int command);\r\n\r\n\t\t//SetForegroundWindow: https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setforegroundwindow\r\n\t\tboolean SetForegroundWindow(HWND hWnd);\r\n\r\n\t\t//GetWindowPlacement:  https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getwindowplacement\r\n\t\t//WINDOWPLACEMENT:     https://docs.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-windowplacement\r\n\t\tboolean GetWindowPlacement(HWND hWnd, WINDOWPLACEMENT lpwndpl);\r\n\r\n\t}\r\n\r\n\tpublic static boolean focusEveOnline(String characterName) {\r\n\t\tfinal String windowName = \"EVE - \" + characterName;\r\n\t\tif (Platform.isWindows()) {\r\n\t\t\tfinal User32 user32 = Native.load(\"User32.dll\", User32.class);\r\n\t\t\tHWND window = user32.FindWindowA(null, windowName);\r\n\t\t\tWINDOWPLACEMENT windowPlacement = new WINDOWPLACEMENT();\r\n\t\t\tuser32.GetWindowPlacement(window, windowPlacement);\r\n\t\t\tif (windowPlacement.showCmd == SW_SHOWMINIMIZED) {\r\n\t\t\t\tuser32.ShowWindow(window, SW_RESTORE);\r\n\t\t\t} else {\r\n\t\t\t\tuser32.SetForegroundWindow(window);\r\n\t\t\t}\r\n\t\t} else if (Platform.isLinux()) {\r\n\t\t\ttry {\r\n\t\t\t\tRuntime runtime = Runtime.getRuntime();\r\n\t\t\t\tString[] args = { \"wmctrl\", \"-a\", windowName};\r\n\t\t\t\truntime.exec(args);\r\n\t\t\t\treturn true;\r\n\t\t\t} catch (IOException ex) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t} else if (Platform.isMac()) {\r\n\t\t\ttry {\r\n\t\t\t\tRuntime runtime = Runtime.getRuntime();\r\n\t\t\t\tString[] args = { \"osascript\", \"-e\", \"tell app \\\"\" + windowName + \"\\\" to activate\" };\r\n\t\t\t\truntime.exec(args);\r\n\t\t\t\treturn true;\r\n\t\t\t} catch (IOException ex) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/StringComparators.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared;\r\n\r\nimport java.util.Comparator;\r\n\r\n\r\npublic class StringComparators  {\r\n\r\n\t/**\r\n\t * //null compatible - contrary to String.CASE_INSENSITIVE_ORDER and GlazedLists.caseInsensitiveComparator()\r\n\t */\r\n\tpublic static final Comparator<String> CASE_INSENSITIVE = new CaseInsensitiveComparator();\r\n\t/**\r\n\t * null compatible toString() comparator\r\n\t */\r\n\tpublic static final Comparator<Object> TO_STRING = new ToStringComparator();\r\n\r\n\t\r\n\r\n\tprivate static class CaseInsensitiveComparator implements Comparator<String> {\r\n\r\n\t\tprivate CaseInsensitiveComparator() { }\r\n\r\n\t\t@Override\r\n\t\tpublic int compare(String o1, String o2) {\r\n\t\t\tif (o1 != null && o2 != null) {\r\n\t\t\t\treturn o1.compareToIgnoreCase(o2);\r\n\t\t\t}\r\n\r\n\t\t\t// compare nulls\r\n\t\t\tif (o1 == null) {\r\n\t\t\t\tif (o2 == null) {\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\t\t\t\treturn -1;\r\n\t\t\t} else {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class ToStringComparator implements Comparator<Object> {\r\n\r\n\t\tprivate ToStringComparator() { }\r\n\r\n\t\t@Override\r\n\t\tpublic int compare(Object o1, Object o2) {\r\n\t\t\tif (o1 != null && o2 != null) {\r\n\t\t\t\treturn o1.toString().compareToIgnoreCase(o2.toString());\r\n\t\t\t}\r\n\r\n\t\t\t// compare nulls\r\n\t\t\tif (o1 == null) {\r\n\t\t\t\tif (o2 == null) {\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\t\t\t\treturn -1;\r\n\t\t\t} else {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/TextImport.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared;\r\n\r\nimport javax.swing.JOptionPane;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JTextDialog;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JTextDialog.SimpleTextImport;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JTextDialog.TextReturn;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\npublic class TextImport<T extends Enum<?> & SimpleTextImport> {\r\n\tprivate final Program program;\r\n\tprivate final String toolName;\r\n\tprivate final JTextDialog jTextDialog;\r\n\r\n\tpublic TextImport(Program program, String toolName) {\r\n\t\tthis.program = program;\r\n\t\tthis.toolName = toolName;\r\n\r\n\t\tjTextDialog = new JTextDialog(program.getMainWindow().getFrame());\r\n\t}\r\n\r\n\tpublic void importText(String text, T[] types, T selected, TextImportHandler<T> handler) {\r\n\t\t//Get string from clipboard\r\n\t\tTextReturn<T> textReturn = jTextDialog.importText(text, types, selected);\r\n\t\tString importText = textReturn.getText();\r\n\t\tT importType = textReturn.getType();\r\n\t\tif (importType != null) {\r\n\t\t\tSettings.lock(\"Import (\" + toolName + \")\");\r\n\t\t\tSettings.get().putImportSettings(toolName, importType);\r\n\t\t\tSettings.unlock(\"Import (\" + toolName + \")\");\r\n\t\t\tprogram.saveSettings(\"Import (\" + toolName + \")\");\r\n\t\t}\r\n\t\tif (importText == null || importType == null) {\r\n\t\t\treturn; //Cancelled\r\n\t\t}\r\n\r\n\t\t//Validate Input\r\n\t\timportText = importText.trim();\r\n\t\tif (importText.isEmpty()) { //Empty sting\r\n\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), GuiShared.get().textEmpty(), GuiShared.get().textImport(), JOptionPane.PLAIN_MESSAGE);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\thandler.addItems(textReturn);\r\n\t}\r\n\r\n\tpublic static interface TextImportHandler<T extends SimpleTextImport> {\r\n\t\tpublic void addItems(TextReturn<T> textReturn);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/TextManager.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.shared;\n\nimport com.sun.jna.Platform;\nimport java.awt.Component;\nimport java.awt.Container;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.InputEvent;\nimport java.awt.event.KeyEvent;\nimport java.awt.event.MouseEvent;\nimport java.awt.event.MouseListener;\nimport javax.swing.JMenuItem;\nimport javax.swing.JPopupMenu;\nimport javax.swing.KeyStroke;\nimport javax.swing.event.UndoableEditListener;\nimport javax.swing.text.AbstractDocument;\nimport javax.swing.text.Document;\nimport javax.swing.text.JTextComponent;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.CompoundUndoManager;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\n\n\npublic final class TextManager {\n\n\tprivate enum CopyPopupAction {\n\t\tCUT, COPY, PASTE\n\t}\n\n\tprivate final JTextComponent component;\n\tprivate final JPopupMenu jPopupMenu;\n\tprivate final JMenuItem jCut;\n\tprivate final JMenuItem jCopy;\n\tprivate final JMenuItem jPaste;\n\tprivate final JMenuItem jUndo;\n\tprivate final JMenuItem jRedo;\n\n\tpublic static void installAll(final Container container) {\n\t\tfor (Component component : container.getComponents()) {\n\t\t\tif (component instanceof Container) {\n\t\t\t\tinstallAll((Container) component);\n\t\t\t}\n\t\t\tif (component instanceof JTextComponent) {\n\t\t\t\tinstallTextComponent((JTextComponent) component);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static void installTextComponent(final JTextComponent component) {\n\t\t//Make sure this component does not already have a UndoManager\n\t\tDocument document = component.getDocument();\n\t\tif (document instanceof AbstractDocument) {\n\t\t\tAbstractDocument abstractDocument = (AbstractDocument) document;\n\t\t\tfor (UndoableEditListener editListener : abstractDocument.getUndoableEditListeners()) {\n\t\t\t\tif (editListener.getClass().equals(CompoundUndoManager.class)) {\n\t\t\t\t\tCompoundUndoManager undoManager = (CompoundUndoManager) editListener;\n\t\t\t\t\tundoManager.reset();\n\t\t\t\t\treturn; //already installed\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tnew TextManager(component);\n\t}\n\n\tprivate TextManager(final JTextComponent component) {\n\t\tthis.component = component;\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tcomponent.addMouseListener(listener);\n\n\t\tjPopupMenu = new JPopupMenu();\n\n\t\tjCut = new JMenuItem(GuiShared.get().cut());\n\t\tjCut.setIcon(Images.EDIT_CUT.getIcon());\n\t\tif (Platform.isMac()) {\n\t\t\tjCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.META_DOWN_MASK));\n\t\t} else {\n\t\t\tjCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_DOWN_MASK));\n\t\t}\n\t\tjCut.setActionCommand(CopyPopupAction.CUT.name());\n\t\tjCut.addActionListener(listener);\n\n\t\tjCopy = new JMenuItem(GuiShared.get().copy());\n\t\tif (Platform.isMac()) {\n\t\t\tjCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.META_DOWN_MASK));\n\t\t} else {\n\t\t\tjCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_DOWN_MASK));\n\t\t}\n\t\tjCopy.setIcon(Images.EDIT_COPY.getIcon());\n\t\tjCopy.setActionCommand(CopyPopupAction.COPY.name());\n\t\tjCopy.addActionListener(listener);\n\n\t\tjPaste = new JMenuItem(GuiShared.get().paste());\n\t\tjPaste.setIcon(Images.EDIT_PASTE.getIcon());\n\t\tif (Platform.isMac()) {\n\t\t\tjPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.META_DOWN_MASK));\n\t\t} else {\n\t\t\tjPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_DOWN_MASK));\n\t\t}\n\t\tjPaste.setActionCommand(CopyPopupAction.PASTE.name());\n\t\tjPaste.addActionListener(listener);\n\n\t\tCompoundUndoManager undoManager = new CompoundUndoManager(component);\n\n\t\tjUndo = new JMenuItem(undoManager.getUndoAction());\n\t\tjUndo.setIcon(Images.EDIT_UNDO.getIcon());\n\n\t\tjRedo = new JMenuItem(undoManager.getRedoAction());\n\t\tjRedo.setIcon(Images.EDIT_REDO.getIcon());\n\t}\n\n\tprivate void showPopupMenu(final MouseEvent e) {\n\t\tif (!component.isFocusable()) { //Don't show anything for unfocusable components\n\t\t\treturn;\n\t\t}\n\n\t\tif (!component.hasFocus()) {\n\t\t\tcomponent.requestFocus();\n\t\t}\n\n\t\tjPopupMenu.removeAll();\n\n\t\tString s = component.getSelectedText();\n\t\tboolean canCopy = true;\n\t\tif (s == null) {\n\t\t\tcanCopy = false;\n\t\t} else if (s.length() == 0) {\n\t\t\tcanCopy = false;\n\t\t}\n\n\t\tif (component.isEditable()) {\n\t\t\tjCut.setEnabled(canCopy);\n\t\t\tjPopupMenu.add(jCut);\n\t\t}\n\n\t\tjCopy.setEnabled(canCopy);\n\t\tjPopupMenu.add(jCopy);\n\n\t\tif (component.isEditable()) {\n\t\t\tjPopupMenu.add(jPaste);\n\t\t\tjPopupMenu.addSeparator();\n\t\t\tjPopupMenu.add(jUndo);\n\t\t\tjPopupMenu.add(jRedo);\n\t\t}\n\n\t\tjPopupMenu.show(e.getComponent(), e.getX(), e.getY());\n\t}\n\n\tprivate class ListenerClass implements MouseListener, ActionListener {\n\n\t\t@Override\n\t\tpublic void mouseClicked(final MouseEvent e) {\n\t\t\tif (e.isPopupTrigger()) {\n\t\t\t\tshowPopupMenu(e);\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void mousePressed(final MouseEvent e) {\n\t\t\tif (e.isPopupTrigger()) {\n\t\t\t\tshowPopupMenu(e);\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void mouseReleased(final MouseEvent e) {\n\t\t\tif (e.isPopupTrigger()) {\n\t\t\t\tshowPopupMenu(e);\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void mouseEntered(final MouseEvent e) { }\n\n\t\t@Override\n\t\tpublic void mouseExited(final MouseEvent e) { }\n\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (CopyPopupAction.CUT.name().equals(e.getActionCommand())) {\n\t\t\t\tCopyHandler.cut(component);\n\t\t\t}\n\t\t\tif (CopyPopupAction.COPY.name().equals(e.getActionCommand())) {\n\t\t\t\tCopyHandler.toClipboard(component.getSelectedText());\n\t\t\t}\n\t\t\tif (CopyPopupAction.PASTE.name().equals(e.getActionCommand())) {\n\t\t\t\tCopyHandler.paste(component);\n\t\t\t}\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/TreeSelectDialog.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\n\npackage net.nikr.eve.jeveasset.gui.shared;\n\nimport java.awt.Dimension;\nimport javax.swing.GroupLayout.Alignment;\nimport javax.swing.*;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\n\npublic class TreeSelectDialog extends JDialogCentered {\n\n\t//Form components\n\tprivate JDialog dialog;\n\tprivate JLabel leafFilterLabel;\n\tprivate JTextField leafFilterTextField;\n\tprivate JLabel filterInfoLabel;\n\tprivate JLabel filterInfoResultLabel;\n\tprivate JLabel selectedLeafLabel;\n\tprivate JLabel selectedLeafValueLabel;\n\tprivate JButton cancelButton;\n\tprivate JButton addButton;\n\tprivate JTree tree;\n\tprivate JScrollPane treeScrollPane;\n\n\tpublic TreeSelectDialog(final Program program, final String title) {\n\t\tsuper(program, title);\n\t\tdialog = getDialog();\n\t\tdialog.setResizable(true);\n\t\tdialog.setMinimumSize(new Dimension(300, 400));\n\t\tleafFilterLabel = new JLabel();\n\t\tleafFilterTextField = new JTextField();\n\t\tfilterInfoLabel = new JLabel();\n\t\tfilterInfoResultLabel = new JLabel();\n\t\tselectedLeafLabel = new JLabel();\n\t\tselectedLeafValueLabel = new JLabel();\n\t\tcancelButton = new JButton();\n\t\taddButton = new JButton();\n\t\ttree = new JTree();\n\t\ttreeScrollPane = new JScrollPane(tree);\n\t\tlayoutComponents();\n\t}\n\n\t// <editor-fold defaultstate=\"collapsed\" desc=\"Component Accessors\">\n\n\t/**\n\t * @return the leafFilterLabel\n\t */\n\tpublic JLabel getLeafFilterLabel() {\n\t\treturn leafFilterLabel;\n\t}\n\n\t/**\n\t * @return the leafFilterTextField\n\t */\n\tpublic JTextField getLeafFilterTextField() {\n\t\treturn leafFilterTextField;\n\t}\n\n\t/**\n\t * @return the filterInfoLabel\n\t */\n\tpublic JLabel getFilterInfoLabel() {\n\t\treturn filterInfoLabel;\n\t}\n\n\t/**\n\t * @return the filterInfoResultLabel\n\t */\n\tpublic JLabel getFilterInfoResultLabel() {\n\t\treturn filterInfoResultLabel;\n\t}\n\n\t/**\n\t * @return the selectedLeafLabel\n\t */\n\tpublic JLabel getSelectedLeafLabel() {\n\t\treturn selectedLeafLabel;\n\t}\n\n\t/**\n\t * @return the selectedLeafValueLabel\n\t */\n\tpublic JLabel getSelectedLeafValueLabel() {\n\t\treturn selectedLeafValueLabel;\n\t}\n\n\t/**\n\t * @return the cancelButton\n\t */\n\tpublic JButton getCancelButton() {\n\t\treturn cancelButton;\n\t}\n\n\t/**\n\t * @return the addButton\n\t */\n\tpublic JButton getAddButton() {\n\t\treturn addButton;\n\t}\n\n\t/**\n\t * @return the tree\n\t */\n\tpublic JTree getTree() {\n\t\treturn tree;\n\t}\n\n\t// </editor-fold>\n\n\tprivate void layoutComponents() {\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addComponent(getLeafFilterLabel())\n\t\t\t\t\t.addComponent(getLeafFilterTextField())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addComponent(getFilterInfoLabel())\n\t\t\t\t\t.addComponent(getFilterInfoResultLabel())\n\t\t\t\t)\n\t\t\t\t.addComponent(treeScrollPane)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addComponent(getSelectedLeafLabel())\n\t\t\t\t\t.addComponent(getSelectedLeafValueLabel())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addGap(0, 0, Short.MAX_VALUE)\n\t\t\t\t\t.addComponent(getAddButton())\n\t\t\t\t\t.addComponent(getCancelButton())\n\t\t\t\t)\n\t\t);\n\t\tlayout.linkSize(SwingConstants.HORIZONTAL, getAddButton(), getCancelButton());\n\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addGroup(layout.createParallelGroup(Alignment.BASELINE)\n\t\t\t\t\t.addComponent(getLeafFilterLabel())\n\t\t\t\t\t.addComponent(getLeafFilterTextField())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup(Alignment.BASELINE)\n\t\t\t\t\t.addComponent(getFilterInfoLabel())\n\t\t\t\t\t.addComponent(getFilterInfoResultLabel())\n\t\t\t\t)\n\t\t\t\t.addComponent(treeScrollPane)\n\t\t\t\t.addGroup(layout.createParallelGroup(Alignment.BASELINE)\n\t\t\t\t\t.addComponent(getSelectedLeafLabel())\n\t\t\t\t\t.addComponent(getSelectedLeafValueLabel()))\n\t\t\t\t.addGroup(layout.createParallelGroup(Alignment.BASELINE)\n\t\t\t\t\t.addComponent(getAddButton())\n\t\t\t\t\t.addComponent(getCancelButton())\n\t\t\t)\n\t\t);\n\n\t}\n\n\n\t@Override\n\tprotected JComponent getDefaultFocus() {\n\t\treturn null;\n\t}\n\n\t@Override\n\tprotected JButton getDefaultButton() {\n\t\treturn null;\n\t}\n\n\t@Override\n\tprotected void windowShown() {\t}\n\n\t@Override\n\tprotected void save() {\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/Updatable.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared;\n\nimport java.util.Date;\nimport net.nikr.eve.jeveasset.CliOptions;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateDialog.Updates;\n\n\npublic class Updatable {\n\n\tprivate final Program program;\n\n\tpublic Updatable(final Program program) {\n\t\tthis.program = program;\n\t}\n\n\tpublic boolean isUpdatable() {\n\t\tif (isUpdatable(program.getPriceDataGetter().getNextUpdate())) {\n\t\t\treturn true;\n\t\t}\n\t\tfor (OwnerType owner : program.getOwnerTypes()) {\n\t\t\tif (!owner.isShowOwner() || owner.isInvalid() || owner.isExpired()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfor (Updates update : Updates.values()) {\n\t\t\t\tif (update.isEnabled(owner) && isUpdatable(update.getNextUpdate(owner))) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static boolean isUpdatable(Date nextUpdate) {\n\t\tDate now = Settings.getNow();\n\t\treturn nextUpdate != null &&\n\t\t\t\t((now.after(nextUpdate)\n\t\t\t\t|| now.equals(nextUpdate)\n\t\t\t\t|| CliOptions.get().isForceUpdate())\n\t\t\t\t&& !CliOptions.get().isForceNoUpdate());\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/CheckBoxNode.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.components;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.i18n.TabsTracker;\r\n\r\npublic class CheckBoxNode implements Comparable<CheckBoxNode>{\r\n\r\n\tprivate final String nodeId;\r\n\tprivate final String nodeName;\r\n\tprivate final String match;\r\n\tprivate final List<CheckBoxNode> children = new ArrayList<>();\r\n\tprivate CheckBoxNode parent;\r\n\tprivate int childrenSelected = 0;\r\n\tprivate int childrenShown = 0;\r\n\tprivate boolean selected;\r\n\tprivate boolean shown;\r\n\r\n\tpublic CheckBoxNode(CheckBoxNode parent, CheckBoxNode clone) {\r\n\t\tthis(parent, clone.nodeId, clone.nodeName, clone.selected);\r\n\t}\r\n\r\n\tpublic CheckBoxNode(CheckBoxNode parent, String nodeId, String nodeName, boolean selected) {\r\n\t\tthis.nodeId = nodeId;\r\n\t\tthis.nodeName = nodeName;\r\n\t\tthis.match = nodeName.toLowerCase();\r\n\t\tthis.selected = selected;\r\n\t\tthis.parent = parent;\r\n\t\tthis.shown = true;\r\n\t\tif (parent != null) {\r\n\t\t\tparent.addChild(this);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic boolean isShown() {\r\n\t\treturn shown;\r\n\t}\r\n\r\n\tpublic void hide() {\r\n\t\tsetShown(false);\r\n\t}\r\n\r\n\tpublic void show() {\r\n\t\tupdateShown(true);\r\n\t}\r\n\r\n\tpublic boolean matches(String text) {\r\n\t\tif (match.contains(text)) { //Matches Self (include everything)\r\n\t\t\tshownParents();\r\n\t\t\tupdateShown(true);\r\n\t\t\tshownChildren();\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (matchesParent(text)) { //Matches Parent (include everything)\r\n\t\t\tshownParents();\r\n\t\t\tupdateShown(true);\r\n\t\t\tshownChildren();\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (matchesChildren(text)) { //Matches Child (include self and parent)\r\n\t\t\tshownParents();\r\n\t\t\tupdateShown(true);\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tpublic CheckBoxNode getParent() {\r\n\t\treturn parent;\r\n\t}\r\n\r\n\tpublic boolean isParent() {\r\n\t\treturn !children.isEmpty();\r\n\t}\r\n\r\n\tprivate boolean isOther() {\r\n\t\treturn this.nodeName.equals(TabsTracker.get().other());\r\n\t}\r\n\r\n\tpublic boolean isSelected() {\r\n\t\treturn selected;\r\n\t}\r\n\r\n\tpublic boolean setSelected(boolean newValue) {\r\n\t\tboolean update = selected != newValue;\r\n\t\tif (!update) { //Nothing changed -> do nothing\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tselected = newValue;\r\n\t\tif (isParent()) { //If have children -> Update Tree\r\n\t\t\tupdate = selectionToChildren(newValue) || update;\r\n\t\t}\r\n\t\tif (selected != newValue) {\r\n\t\t\tthrow new RuntimeException();\r\n\t\t}\r\n\t\tif (parent != null && isShown()) {\r\n\t\t\tif (selected) {\r\n\t\t\t\tparent.childSelected();\r\n\t\t\t} else {\r\n\t\t\t\tparent.childDeselected();\r\n\t\t\t}\r\n\t\t\tparent.updateSelection();\r\n\t\t}\r\n\t\treturn update;\r\n\t}\r\n\r\n\tpublic String getNodeID() {\r\n\t\treturn nodeId;\r\n\t}\r\n\r\n\tpublic String getNodeName() {\r\n\t\treturn nodeName;\r\n\t}\r\n\r\n\tprivate void addChild(CheckBoxNode child) {\r\n\t\tchildren.add(child);\r\n\t\tif (child.isSelected()) {\r\n\t\t\tchildSelected();\r\n\t\t}\r\n\t\tif (child.isShown()) {\r\n\t\t\tchildShown();\r\n\t\t}\r\n\t\tupdateSelection();\r\n\t}\r\n\r\n\tprivate void childShown() {\r\n\t\tchildrenShown++;\r\n\t}\r\n\r\n\tprivate void childHidden() {\r\n\t\tchildrenShown--;\r\n\t}\r\n\r\n\tprivate void childSelected() {\r\n\t\tchildrenSelected++;\r\n\t}\r\n\r\n\tprivate void childDeselected() {\r\n\t\tchildrenSelected--;\r\n\t}\r\n\r\n\tprivate boolean setShown(boolean newValue) {\r\n\t\tboolean updated = this.shown != newValue;\r\n\t\tthis.shown = newValue;\r\n\t\tif (parent != null && updated) {\r\n\t\t\tif (shown) { //If shown: add shown and update\r\n\t\t\t\tparent.childShown();\r\n\t\t\t\tif (selected) { //If selected -> add selection\r\n\t\t\t\t\tparent.childSelected();\r\n\t\t\t\t}\r\n\t\t\t} else { //Remove\r\n\t\t\t\tparent.childHidden();\r\n\t\t\t\tif (selected) { //If selected -> remove selection\r\n\t\t\t\t\tparent.childDeselected();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn updated;\r\n\t}\r\n\r\n\tprivate void updateShown(boolean newValue) {\r\n\t\tif (setShown(newValue) && parent != null) {\r\n\t\t\tparent.updateSelection();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate boolean matchesParent(String text) {\r\n\t\tif (parent != null) {\r\n\t\t\tif (parent.match.contains(text)) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif (parent.matchesParent(text)) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate boolean matchesChildren(String text) {\r\n\t\tfor (CheckBoxNode node : children) {\r\n\t\t\tif (node.match.contains(text)) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif (node.matchesChildren(text)) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate void shownParents() {\r\n\t\tif (parent != null) {\r\n\t\t\tparent.shownParents();\r\n\t\t\tparent.updateShown(true);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void shownChildren() {\r\n\t\tfor (CheckBoxNode child : children) {\r\n\t\t\tchild.updateShown(true);\r\n\t\t\tchild.shownChildren();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate boolean updateSelection() {\r\n\t\tif (!isParent()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tboolean oldValue = selected;\r\n\t\tselected = childrenSelected == childrenShown;\r\n\t\tselected = childrenSelected == childrenShown;\r\n\t\tboolean updated = oldValue != selected;\r\n\t\tif (updated && parent != null) { //Value changed -> Update Tree\r\n\t\t\tif (selected) {\r\n\t\t\t\tparent.childSelected();\r\n\t\t\t} else {\r\n\t\t\t\tparent.childDeselected();\r\n\t\t\t}\r\n\t\t\tupdated = parent.updateSelection() || updated;\r\n\t\t}\r\n\t\treturn updated;\r\n\t}\r\n\r\n\tprivate boolean selectionToChildren(boolean newValue) {\r\n\t\tboolean updated = false;\r\n\t\tfor (CheckBoxNode node : children) {\r\n\t\t\tif (!node.isShown()) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (node.isSelected() != newValue) {\r\n\t\t\t\tnode.selected = newValue;\r\n\t\t\t\tif (newValue) {\r\n\t\t\t\t\tchildSelected();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tchildDeselected();\r\n\t\t\t\t}\r\n\t\t\t\tupdated = true;\r\n\t\t\t}\r\n\t\t\tnode.selectionToChildren(newValue);\r\n\t\t}\r\n\t\tif (newValue) {\r\n\t\t\tif (childrenShown != childrenSelected) {\r\n\t\t\t\tthrow new RuntimeException();\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (childrenSelected != 0) {\r\n\t\t\t\tthrow new RuntimeException();\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn updated;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn nodeName;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(CheckBoxNode o) {\r\n\t\tif (this.isOther() && o.isOther()) {\r\n\t\t\treturn nodeId.compareToIgnoreCase(o.nodeId);\r\n\t\t} else if (this.isOther()) {\r\n\t\t\treturn 1;\r\n\t\t} else if (o.isOther()) {\r\n\t\t\treturn -1;\r\n\t\t} else {\r\n\t\t\treturn nodeId.compareToIgnoreCase(o.nodeId);\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 7;\r\n\t\thash = 47 * hash + (this.nodeId != null ? this.nodeId.hashCode() : 0);\r\n\t\thash = 47 * hash + (this.nodeName != null ? this.nodeName.hashCode() : 0);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal CheckBoxNode other = (CheckBoxNode) obj;\r\n\t\tif ((this.nodeId == null) ? (other.nodeId != null) : !this.nodeId.equals(other.nodeId)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif ((this.nodeName == null) ? (other.nodeName != null) : !this.nodeName.equals(other.nodeName)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/CheckBoxNodeEditor.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.components;\r\n\r\nimport ca.odell.glazedlists.TreeList;\r\nimport java.awt.Component;\r\nimport java.awt.event.ItemEvent;\r\nimport java.awt.event.ItemListener;\r\nimport java.awt.event.MouseEvent;\r\nimport java.util.EventObject;\r\nimport javax.swing.AbstractCellEditor;\r\nimport javax.swing.JCheckBox;\r\nimport javax.swing.JTree;\r\nimport javax.swing.SwingUtilities;\r\nimport javax.swing.tree.DefaultMutableTreeNode;\r\nimport javax.swing.tree.TreeCellEditor;\r\nimport javax.swing.tree.TreePath;\r\n\r\n\r\npublic class CheckBoxNodeEditor extends AbstractCellEditor implements TreeCellEditor {\r\n\r\n\tprivate final CheckBoxNodeRenderer renderer = new CheckBoxNodeRenderer();\r\n\r\n\tprivate final JTree tree;\r\n\r\n\tpublic CheckBoxNodeEditor(JTree tree) {\r\n\t\tthis.tree = tree;\r\n\t}\r\n\r\n\tprivate CheckBoxNode getCheckBoxNode() {\r\n\t\treturn getCheckBoxNode(tree.getSelectionPath());\r\n\t}\r\n\r\n\tprivate CheckBoxNode getCheckBoxNode(TreePath path) {\r\n\t\tObject value = path.getLastPathComponent();\r\n\t\tObject userObject = null;\r\n\t\tif (value != null && value instanceof DefaultMutableTreeNode) {\r\n\t\t\tuserObject = ((DefaultMutableTreeNode) value).getUserObject();\r\n\t\t}\r\n\t\tif (value != null && value instanceof TreeList.Node) {\r\n\t\t\tuserObject = ((TreeList.Node) value).getElement();\r\n\t\t}\r\n\t\tif (userObject != null && userObject instanceof CheckBoxNode) {\r\n\t\t\treturn (CheckBoxNode) userObject;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Object getCellEditorValue() {\r\n\t\treturn getCheckBoxNode();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean isCellEditable(EventObject event) {\r\n\t\tif (event instanceof MouseEvent) {\r\n\t\t\tMouseEvent mouseEvent = (MouseEvent) event;\r\n\t\t\tTreePath path = tree.getPathForLocation(mouseEvent.getX(), mouseEvent.getY());\r\n\t\t\treturn getCheckBoxNode(path) != null;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Component getTreeCellEditorComponent(final JTree tree, Object value,\r\n\t\t\tboolean selected, boolean expanded, boolean leaf, int row) {\r\n\r\n\t\tComponent editor = renderer.getTreeCellRendererComponent(tree, value,\r\n\t\t\t\ttrue, expanded, leaf, row, true);\r\n\r\n\t\t// editor always selected / focused\r\n\t\tif (editor instanceof JCheckBox) {\r\n\t\t\tfinal JCheckBox checkBox = (JCheckBox) editor;\r\n\t\t\tcheckBox.addItemListener(new ItemListener() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void itemStateChanged(ItemEvent e) {\r\n\t\t\t\t\tif (stopCellEditing()) {\r\n\t\t\t\t\t\tfireEditingStopped();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tCheckBoxNode checkBoxNode = getCheckBoxNode();\r\n\t\t\t\t\tif (checkBoxNode != null) {\r\n\t\t\t\t\t\tboolean updated = checkBoxNode.setSelected(checkBox.isSelected());\r\n\t\t\t\t\t\tif (updated) {\r\n\t\t\t\t\t\t\tSwingUtilities.invokeLater(new Runnable() {\r\n\t\t\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\t\t\tpublic void run() {\r\n\t\t\t\t\t\t\t\t\ttree.repaint();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcheckBox.removeItemListener(this);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn editor;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/CheckBoxNodeRenderer.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.components;\r\n\r\nimport ca.odell.glazedlists.TreeList;\r\nimport java.awt.Color;\r\nimport java.awt.Component;\r\nimport java.awt.Font;\r\nimport javax.swing.JCheckBox;\r\nimport javax.swing.JTree;\r\nimport javax.swing.UIManager;\r\nimport javax.swing.tree.DefaultMutableTreeNode;\r\nimport javax.swing.tree.TreeCellRenderer;\r\n\r\npublic class CheckBoxNodeRenderer implements TreeCellRenderer {\r\n\r\n\tprivate final JCheckBox leafRenderer = new JCheckBox();\r\n\r\n\tprivate final Color selectionBorderColor, selectionForeground, selectionBackground,\r\n\t\t\ttextForeground, textBackground;\r\n\r\n\tprotected JCheckBox getLeafRenderer() {\r\n\t\treturn leafRenderer;\r\n\t}\r\n\r\n\tpublic CheckBoxNodeRenderer() {\r\n\t\tFont fontValue;\r\n\t\tfontValue = UIManager.getFont(\"Tree.font\");\r\n\t\tif (fontValue != null) {\r\n\t\t\tleafRenderer.setFont(fontValue);\r\n\t\t}\r\n\t\tBoolean booleanValue = (Boolean) UIManager.get(\"Tree.drawsFocusBorderAroundIcon\");\r\n\t\tleafRenderer.setFocusPainted(booleanValue != null && booleanValue);\r\n\r\n\t\tselectionBorderColor = UIManager.getColor(\"Tree.selectionBorderColor\");\r\n\t\tselectionForeground = UIManager.getColor(\"Tree.selectionForeground\");\r\n\t\tselectionBackground = UIManager.getColor(\"Tree.selectionBackground\");\r\n\t\ttextForeground = UIManager.getColor(\"Tree.textForeground\");\r\n\t\ttextBackground = UIManager.getColor(\"Tree.textBackground\");\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Component getTreeCellRendererComponent(JTree tree, Object value,\r\n\t\t\tboolean selected, boolean expanded, boolean leaf, int row,\r\n\t\t\tboolean hasFocus) {\r\n\r\n\t\tString stringValue = tree.convertValueToText(value, selected,\r\n\t\t\t\texpanded, leaf, row, false);\r\n\t\tleafRenderer.setText(stringValue);\r\n\t\tleafRenderer.setSelected(false);\r\n\r\n\t\tleafRenderer.setEnabled(tree.isEnabled());\r\n\r\n\t\tif (selected) {\r\n\t\t\tleafRenderer.setForeground(selectionForeground);\r\n\t\t\tleafRenderer.setBackground(selectionBackground);\r\n\t\t} else {\r\n\t\t\tleafRenderer.setForeground(textForeground);\r\n\t\t\tleafRenderer.setBackground(textBackground);\r\n\t\t}\r\n\t\tObject userObject = null;\r\n\t\tif (value != null && value instanceof DefaultMutableTreeNode) {\r\n\t\t\tuserObject = ((DefaultMutableTreeNode) value).getUserObject();\r\n\t\t}\r\n\t\tif (value != null && value instanceof TreeList.Node) {\r\n\t\t\tuserObject = ((TreeList.Node) value).getElement();\r\n\t\t}\r\n\t\tif (userObject != null && userObject instanceof CheckBoxNode) {\r\n\t\t\tfinal CheckBoxNode node = (CheckBoxNode) userObject;\r\n\t\t\tleafRenderer.setText(node.getNodeName());\r\n\t\t\tleafRenderer.setSelected(node.isSelected());\r\n\t\t}\r\n\t\treturn leafRenderer;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/CompoundUndoManager.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * Original code from https://tips4java.wordpress.com/2008/10/27/compound-undo-manager/\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.components;\r\n\r\nimport com.sun.jna.Platform;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.InputEvent;\r\nimport java.awt.event.KeyEvent;\r\nimport java.beans.PropertyChangeEvent;\r\nimport java.beans.PropertyChangeListener;\r\nimport javax.swing.AbstractAction;\r\nimport javax.swing.Action;\r\nimport javax.swing.KeyStroke;\r\nimport javax.swing.SwingUtilities;\r\nimport javax.swing.event.DocumentEvent;\r\nimport javax.swing.event.DocumentListener;\r\nimport javax.swing.event.UndoableEditEvent;\r\nimport javax.swing.event.UndoableEditListener;\r\nimport javax.swing.text.AbstractDocument;\r\nimport javax.swing.text.Document;\r\nimport javax.swing.text.JTextComponent;\r\nimport javax.swing.undo.CannotRedoException;\r\nimport javax.swing.undo.CannotUndoException;\r\nimport javax.swing.undo.CompoundEdit;\r\nimport javax.swing.undo.UndoManager;\r\nimport javax.swing.undo.UndoableEdit;\r\n\r\n/*\r\n** This class will merge individual edits into a single larger edit.\r\n** That is, characters entered sequentially will be grouped together and\r\n** undone as a group. Any attribute changes will be considered as part\r\n** of the group and will therefore be undone when the group is undone.\r\n */\r\npublic class CompoundUndoManager extends UndoManager\r\n\t\timplements UndoableEditListener, DocumentListener {\r\n\r\n\tprivate final UndoManager undoManager;\r\n\tprivate final JTextComponent textComponent;\r\n\tprivate final UndoAction undoAction;\r\n\tprivate final RedoAction redoAction;\r\n\tprivate CompoundEdit compoundEdit;\r\n\r\n\t// These fields are used to help determine whether the edit is an\r\n\t// incremental edit. The offset and length should increase by 1 for\r\n\t// each character added or decrease by 1 for each character removed.\r\n\tprivate int lastOffset;\r\n\tprivate int lastLength;\r\n\r\n\tpublic CompoundUndoManager(JTextComponent component) {\r\n\t\tthis.textComponent = component;\r\n\t\tundoManager = this;\r\n\t\tundoAction = new UndoAction();\r\n\t\tredoAction = new RedoAction();\r\n\r\n\t\tcomponent.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_DOWN_MASK), \"undoKeystroke\");\r\n\t\tcomponent.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.META_DOWN_MASK), \"undoKeystroke\");\r\n\t\tcomponent.getActionMap().put(\"undoKeystroke\", undoAction);\r\n\r\n\t\tcomponent.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_Y, InputEvent.CTRL_DOWN_MASK), \"redoKeystroke\");\r\n\t\tcomponent.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.META_DOWN_MASK + InputEvent.SHIFT_DOWN_MASK), \"redoKeystroke\");\r\n\t\tcomponent.getActionMap().put(\"redoKeystroke\", redoAction);\r\n\r\n\t\tcomponent.addPropertyChangeListener(\"document\", new PropertyChangeListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void propertyChange(PropertyChangeEvent evt) {\r\n\t\t\t\tObject oldValue = evt.getOldValue();\r\n\t\t\t\tif (oldValue != null && oldValue instanceof Document) { //Remove old\r\n\t\t\t\t\tDocument document = (Document) oldValue;\r\n\t\t\t\t\tdocument.removeUndoableEditListener(undoManager);\r\n\t\t\t\t}\r\n\t\t\t\tObject newValue = evt.getNewValue();\r\n\t\t\t\tif (newValue != null && newValue instanceof Document) { //Remove old\r\n\t\t\t\t\tDocument document = (Document) newValue;\r\n\t\t\t\t\tdocument.addUndoableEditListener(undoManager); //New document\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tcomponent.getDocument().addUndoableEditListener(this);\r\n\r\n\t\t//component.setBorder(BorderFactory.createLineBorder(Color.GREEN, 1));\r\n\t}\r\n\r\n\tpublic void reset() {\r\n\t\tint limit = getLimit();\r\n\t\tsetLimit(0);\r\n\t\tsetLimit(limit);\r\n\t\tcompoundEdit = null;\r\n\t\tlastOffset = 0;\r\n\t\tlastLength = 0;\r\n\t\tundoAction.updateUndoState();\r\n\t\tredoAction.updateRedoState();\r\n\t}\r\n\r\n\t/*\r\n\t** Add a DocumentLister before the undo is done so we can position\r\n\t** the Caret correctly as each edit is undone.\r\n\t */\r\n\t@Override\r\n\tpublic synchronized void undo() {\r\n\t\ttextComponent.getDocument().addDocumentListener(this);\r\n\t\tsuper.undo();\r\n\t\ttextComponent.getDocument().removeDocumentListener(this);\r\n\t}\r\n\r\n\t/*\r\n\t** Add a DocumentLister before the redo is done so we can position\r\n\t** the Caret correctly as each edit is redone.\r\n\t */\r\n\t@Override\r\n\tpublic synchronized void redo() {\r\n\t\ttextComponent.getDocument().addDocumentListener(this);\r\n\t\tsuper.redo();\r\n\t\ttextComponent.getDocument().removeDocumentListener(this);\r\n\t}\r\n\r\n\t/*\r\n\t** Whenever an UndoableEdit happens the edit will either be absorbed\r\n\t** by the current compound edit or a new compound edit will be started\r\n\t */\r\n\t@Override\r\n\tpublic void undoableEditHappened(UndoableEditEvent e) {\r\n\t\t// Start a new compound edit\r\n\r\n\t\tif (compoundEdit == null) {\r\n\t\t\tcompoundEdit = startCompoundEdit(e.getEdit());\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tint offsetChange = textComponent.getCaretPosition() - lastOffset;\r\n\t\tint lengthChange = textComponent.getDocument().getLength() - lastLength;\r\n\r\n\t\t// Check for an attribute change\r\n\t\tUndoableEdit edit = e.getEdit();\r\n\t\tif (edit instanceof AbstractDocument.DefaultDocumentEvent) {\r\n\t\t\tAbstractDocument.DefaultDocumentEvent event = (AbstractDocument.DefaultDocumentEvent) e.getEdit();\r\n\t\t\tif (event.getType().equals(DocumentEvent.EventType.CHANGE)) {\r\n\t\t\t\tif (offsetChange == 0) {\r\n\t\t\t\t\tcompoundEdit.addEdit(e.getEdit());\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Check for an incremental edit or backspace.\r\n\t\t// The Change in Caret position and Document length should both be\r\n\t\t// either 1 or -1.\r\n\t\tif (offsetChange == lengthChange\r\n\t\t\t\t&& Math.abs(offsetChange) == 1) {\r\n\t\t\tcompoundEdit.addEdit(e.getEdit());\r\n\t\t\tlastOffset = textComponent.getCaretPosition();\r\n\t\t\tlastLength = textComponent.getDocument().getLength();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Not incremental edit, end previous edit and start a new one\r\n\t\tcompoundEdit.end();\r\n\t\tcompoundEdit = startCompoundEdit(e.getEdit());\r\n\t}\r\n\r\n\t/*\r\n\t** Each CompoundEdit will store a group of related incremental edits\r\n\t** (ie. each character typed or backspaced is an incremental edit)\r\n\t */\r\n\tprivate CompoundEdit startCompoundEdit(UndoableEdit anEdit) {\r\n\t\t// Track Caret and Document information of this compound edit\r\n\r\n\t\tlastOffset = textComponent.getCaretPosition();\r\n\t\tlastLength = textComponent.getDocument().getLength();\r\n\r\n\t\t// The compound edit is used to store incremental edits\r\n\t\tcompoundEdit = new MyCompoundEdit();\r\n\t\tcompoundEdit.addEdit(anEdit);\r\n\r\n\t\t// The compound edit is added to the UndoManager. All incremental\r\n\t\t// edits stored in the compound edit will be undone/redone at once\r\n\t\taddEdit(compoundEdit);\r\n\r\n\t\tundoAction.updateUndoState();\r\n\t\tredoAction.updateRedoState();\r\n\r\n\t\treturn compoundEdit;\r\n\t}\r\n\r\n\t/*\r\n\t * The Action to Undo changes to the Document.\r\n\t * The state of the Action is managed by the CompoundUndoManager\r\n\t */\r\n\tpublic Action getUndoAction() {\r\n\t\treturn undoAction;\r\n\t}\r\n\r\n\t/*\r\n\t * The Action to Redo changes to the Document.\r\n\t * The state of the Action is managed by the CompoundUndoManager\r\n\t */\r\n\tpublic Action getRedoAction() {\r\n\t\treturn redoAction;\r\n\t}\r\n//\r\n// Implement DocumentListener\r\n//\r\n\r\n\t/*\r\n\t * Updates to the Document as a result of Undo/Redo will cause the\r\n\t * Caret to be repositioned\r\n\t */\r\n\t@Override\r\n\tpublic void insertUpdate(final DocumentEvent e) {\r\n\t\tSwingUtilities.invokeLater(new Runnable() {\r\n\t\t\t@Override\r\n\t\t\tpublic void run() {\r\n\t\t\t\tint offset = e.getOffset() + e.getLength();\r\n\t\t\t\toffset = Math.min(offset, textComponent.getDocument().getLength());\r\n\t\t\t\ttextComponent.setCaretPosition(offset);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void removeUpdate(DocumentEvent e) {\r\n\t\ttextComponent.setCaretPosition(e.getOffset());\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void changedUpdate(DocumentEvent e) {\r\n\t}\r\n\r\n\tclass MyCompoundEdit extends CompoundEdit {\r\n\r\n\t\t@Override\r\n\t\tpublic boolean isInProgress() {\r\n\t\t\t// in order for the canUndo() and canRedo() methods to work\r\n\t\t\t// assume that the compound edit is never in progress\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void undo() throws CannotUndoException {\r\n\t\t\t// End the edit so future edits don't get absorbed by this edit\r\n\t\t\tif (compoundEdit != null) {\r\n\t\t\t\tcompoundEdit.end();\r\n\t\t\t}\r\n\r\n\t\t\tsuper.undo();\r\n\r\n\t\t\t// Always start a new compound edit after an undo\r\n\t\t\tcompoundEdit = null;\r\n\t\t}\r\n\t}\r\n\r\n\t/*\r\n\t *\tPerform the Undo and update the state of the undo/redo Actions\r\n\t */\r\n\tclass UndoAction extends AbstractAction {\r\n\r\n\t\tpublic UndoAction() {\r\n\t\t\tputValue(Action.NAME, \"Undo\");\r\n\t\t\tputValue(Action.SHORT_DESCRIPTION, getValue(Action.NAME));\r\n\t\t\tputValue(Action.MNEMONIC_KEY, KeyEvent.VK_U);\r\n\t\t\tif (Platform.isMac()) {\r\n\t\t\t\tputValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.META_DOWN_MASK));\r\n\t\t\t} else {\r\n\t\t\t\tputValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_DOWN_MASK));\r\n\t\t\t}\r\n\t\t\tsetEnabled(false);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\ttry {\r\n\t\t\t\tundoManager.undo();\r\n\t\t\t\ttextComponent.requestFocusInWindow();\r\n\t\t\t} catch (CannotUndoException ex) {\r\n\t\t\t}\r\n\r\n\t\t\tupdateUndoState();\r\n\t\t\tredoAction.updateRedoState();\r\n\t\t}\r\n\r\n\t\tprivate void updateUndoState() {\r\n\t\t\tsetEnabled(undoManager.canUndo());\r\n\t\t}\r\n\t}\r\n\r\n\t/*\r\n\t *\tPerform the Redo and update the state of the undo/redo Actions\r\n\t */\r\n\tclass RedoAction extends AbstractAction {\r\n\r\n\t\tpublic RedoAction() {\r\n\t\t\tputValue(Action.NAME, \"Redo\");\r\n\t\t\tputValue(Action.SHORT_DESCRIPTION, getValue(Action.NAME));\r\n\t\t\tputValue(Action.MNEMONIC_KEY, KeyEvent.VK_R);\r\n\t\t\tif (Platform.isMac()) {\r\n\t\t\t\tputValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.META_DOWN_MASK + InputEvent.SHIFT_DOWN_MASK));\r\n\t\t\t} else {\r\n\t\t\t\tputValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_Y, InputEvent.CTRL_DOWN_MASK));\r\n\t\t\t}\r\n\t\t\tsetEnabled(false);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\ttry {\r\n\t\t\t\tundoManager.redo();\r\n\t\t\t\ttextComponent.requestFocusInWindow();\r\n\t\t\t} catch (CannotRedoException ex) {\r\n\t\t\t}\r\n\r\n\t\t\tupdateRedoState();\r\n\t\t\tundoAction.updateUndoState();\r\n\t\t}\r\n\r\n\t\tprotected void updateRedoState() {\r\n\t\t\tsetEnabled(undoManager.canRedo());\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JAutoCompleteDialog.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.components;\r\n\r\nimport ca.odell.glazedlists.EventList;\r\nimport ca.odell.glazedlists.GlazedLists;\r\nimport ca.odell.glazedlists.SortedList;\r\nimport ca.odell.glazedlists.TextFilterator;\r\nimport ca.odell.glazedlists.matchers.TextMatcherEditor;\r\nimport ca.odell.glazedlists.swing.AutoCompleteSupport;\r\nimport java.awt.Image;\r\nimport java.awt.Window;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.util.Collection;\r\nimport java.util.Comparator;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JComboBox;\r\nimport javax.swing.JComponent;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JOptionPane;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.gui.shared.StringComparators;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels.ItemFilterator;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels.LocationFilterator;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels.SolarSystemFilterator;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels.StringFilterator;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels.ViewFilterator;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.View;\r\nimport net.nikr.eve.jeveasset.gui.tabs.routing.SolarSystem;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\npublic class JAutoCompleteDialog<T> extends JDialogCentered {\r\n\r\n\tpublic static final AutoCompleteOptions<String> STRING_OPTIONS = new AutoCompleteOptions<String>() {\r\n\t\t@Override\r\n\t\tpublic Comparator<String> getComparator() {\r\n\t\t\treturn StringComparators.CASE_INSENSITIVE;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic TextFilterator<String> getFilterator() {\r\n\t\t\treturn new StringFilterator();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic String getValue(Object object) {\r\n\t\t\tif (object instanceof String) {\r\n\t\t\t\treturn (String) object;\r\n\t\t\t} else {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean isEmpty(String t) {\r\n\t\t\treturn t.isEmpty();\r\n\t\t}\r\n\t};\r\n\r\n\tpublic static final AutoCompleteOptions<MyLocation> LOCATION_OPTIONS = new AutoCompleteOptions<MyLocation>() {\r\n\t\t@Override\r\n\t\tpublic Comparator<MyLocation> getComparator() {\r\n\t\t\treturn GlazedLists.comparableComparator();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic TextFilterator<MyLocation> getFilterator() {\r\n\t\t\treturn new LocationFilterator();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic MyLocation getValue(Object object) {\r\n\t\t\tif (object instanceof MyLocation) {\r\n\t\t\t\treturn (MyLocation) object;\r\n\t\t\t} else {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean isEmpty(MyLocation t) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t};\r\n\r\n\tpublic static final AutoCompleteOptions<View> VIEW_OPTIONS = new AutoCompleteOptions<View>() {\r\n\t\t@Override\r\n\t\tpublic Comparator<View> getComparator() {\r\n\t\t\treturn GlazedLists.comparableComparator();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic TextFilterator<View> getFilterator() {\r\n\t\t\treturn new ViewFilterator();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic View getValue(Object object) {\r\n\t\t\tif (object instanceof View) {\r\n\t\t\t\treturn (View) object;\r\n\t\t\t} else if (object instanceof String) {\r\n\t\t\t\treturn new View((String) object);\r\n\t\t\t} else {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean isEmpty(View t) {\r\n\t\t\treturn t.getName().isEmpty();\r\n\t\t}\r\n\t};\r\n\r\n\tpublic static final AutoCompleteOptions<Item> ITEM_OPTIONS = new AutoCompleteOptions<Item>() {\r\n\t\t@Override\r\n\t\tpublic Comparator<Item> getComparator() {\r\n\t\t\treturn GlazedLists.comparableComparator();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic TextFilterator<Item> getFilterator() {\r\n\t\t\treturn new ItemFilterator();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic Item getValue(Object object) {\r\n\t\t\tif (object instanceof Item) {\r\n\t\t\t\treturn (Item) object;\r\n\t\t\t} else {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean isEmpty(Item t) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t};\r\n\r\n\tpublic static final AutoCompleteOptions<SolarSystem> SOLAR_SYSTEM_OPTIONS = new AutoCompleteOptions<SolarSystem>() {\r\n\t\t@Override\r\n\t\tpublic Comparator<SolarSystem> getComparator() {\r\n\t\t\treturn new SystemComparator();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic TextFilterator<SolarSystem> getFilterator() {\r\n\t\t\treturn new SolarSystemFilterator();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic SolarSystem getValue(Object object) {\r\n\t\t\tif (object instanceof SolarSystem) {\r\n\t\t\t\treturn (SolarSystem) object;\r\n\t\t\t} else {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean isEmpty(SolarSystem t) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t};\r\n\r\n\tprivate static class SystemComparator implements Comparator<SolarSystem> {\r\n\t\t@Override\r\n\t\tpublic int compare(SolarSystem o1, SolarSystem o2) {\r\n\t\t\treturn o1.getName().compareToIgnoreCase(o2.getName());\r\n\t\t}\r\n\t}\r\n\r\n\tprivate enum AutoCompleteAction {\r\n\t\tOK, CANCEL\r\n\t}\r\n\r\n\tprivate final EventList<T> eventList;\r\n\tprivate final AutoCompleteSupport<T> autoComplete;\r\n\tprivate final JComboBox<T> jItems;\r\n\tprivate final JButton jOK;\r\n\r\n\tprivate final AutoCompleteOptions<T> autoCompleteOptions;\r\n\tprivate final boolean strict;\r\n\tprivate final boolean askOverwrite;\r\n\r\n\tprivate T value;\r\n\r\n\tpublic JAutoCompleteDialog(Program program, String title, Image image, String msg, boolean strict, AutoCompleteOptions<T> autoCompleteOptions) {\r\n\t\tthis(program, title, program.getMainWindow().getFrame(), image, msg, strict, true, autoCompleteOptions);\r\n\t}\r\n\r\n\tpublic JAutoCompleteDialog(Program program, String title, Window window, Image image, String msg, boolean strict, AutoCompleteOptions<T> autoCompleteOptions) {\r\n\t\tthis(program, title, window, image, msg, strict, true, autoCompleteOptions);\r\n\t}\r\n\r\n\tpublic JAutoCompleteDialog(Program program, String title, Image image, String msg, boolean strict, boolean askOverwrite, AutoCompleteOptions<T> autoCompleteOptions) {\r\n\t\tthis(program, title, program.getMainWindow().getFrame(), image, msg, strict, askOverwrite, autoCompleteOptions);\r\n\t}\r\n\r\n\tpublic JAutoCompleteDialog(Program program, String title, Window window, Image image, String msg, boolean strict, boolean askOverwrite, AutoCompleteOptions<T> autoCompleteOptions) {\r\n\t\tsuper(program, title, window, image);\r\n\t\tthis.strict = strict;\r\n\t\tthis.askOverwrite = askOverwrite;\r\n\t\tthis.autoCompleteOptions = autoCompleteOptions;\r\n\t\t\r\n\t\tListenerClass listener = new ListenerClass();\r\n\r\n\t\tJLabel jText = new JLabel();\r\n\t\tif (msg != null) {\r\n\t\t\tjText.setText(msg);\r\n\t\t} else {\r\n\t\t\tjText.setVisible(false);\r\n\t\t}\r\n\r\n\t\tjItems = new JComboBox<>();\r\n\t\teventList = EventListManager.create();\r\n\r\n\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\tSortedList<T> sortedList = new SortedList<>(eventList, autoCompleteOptions.getComparator());\r\n\t\teventList.getReadWriteLock().readLock().unlock();\r\n\r\n\t\tautoComplete = AutoCompleteSupport.install(jItems, EventModels.createSwingThreadProxyList(sortedList), autoCompleteOptions.getFilterator());\r\n\t\tif (!strict) {\r\n\t\t\tautoComplete.setFilterMode(TextMatcherEditor.CONTAINS);\r\n\t\t}\r\n\t\tautoComplete.setStrict(strict);\r\n\r\n\t\tjOK = new JButton(GuiShared.get().ok());\r\n\t\tjOK.setActionCommand(AutoCompleteAction.OK.name());\r\n\t\tjOK.addActionListener(listener);\r\n\r\n\t\tJButton jCancel = new JButton(GuiShared.get().cancel());\r\n\t\tjCancel.setActionCommand(AutoCompleteAction.CANCEL.name());\r\n\t\tjCancel.addActionListener(listener);\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t.addComponent(jText)\r\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\r\n\t\t\t\t\t.addComponent(jItems, 220, 220, 220)\r\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t\t.addComponent(jOK, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(jText, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jItems, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\tpublic final void updateData(Collection<T> list) {\r\n\t\tboolean same = false;\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\t\tsame = eventList.equals(list);\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t\tif (!same) {\r\n\t\t\ttry {\r\n\t\t\t\teventList.getReadWriteLock().writeLock().lock();\r\n\t\t\t\teventList.clear();\r\n\t\t\t\teventList.addAll(list);\r\n\t\t\t} finally {\r\n\t\t\t\teventList.getReadWriteLock().writeLock().unlock();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic T show(T t) {\r\n\t\tjItems.getModel().setSelectedItem(t);\r\n\t\tvalue = null;\r\n\t\tsetVisible(true);\r\n\t\treturn value;\r\n\t}\r\n\r\n\tpublic T show() {\r\n\t\tautoComplete.removeFirstItem();\r\n\t\tif (jItems.getModel().getSize() > 0) {\r\n\t\t\tjItems.setSelectedIndex(0);\r\n\t\t}\r\n\t\tif (!strict) { //No effect when strict (except a beep)\r\n\t\t\tjItems.getModel().setSelectedItem(\"\");\r\n\t\t}\r\n\t\tvalue = null;\r\n\t\tsetVisible(true);\r\n\t\treturn value;\r\n\t}\r\n\r\n\tprotected boolean valid(T value) {\r\n\t\tif (value == null || autoCompleteOptions.isEmpty(value)) {\r\n\t\t\tJOptionPane.showMessageDialog(getDialog(), GuiShared.get().invalidMsg(), GuiShared.get().invalidTitle(), JOptionPane.PLAIN_MESSAGE);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (strict || !askOverwrite) {\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\tif (EventListManager.contains(eventList, value)) {\r\n\t\t\t\tint nReturn = JOptionPane.showConfirmDialog(getDialog(), GuiShared.get().overwrite(), GuiShared.get().overwriteTitle(), JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE);\r\n\t\t\t\tif (nReturn == JOptionPane.NO_OPTION) { //Overwrite cancelled\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JComponent getDefaultFocus() {\r\n\t\treturn jItems;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JButton getDefaultButton() {\r\n\t\treturn jOK;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void windowShown() { }\r\n\r\n\t@Override\r\n\tprotected void save() {\r\n\t\tvalue = autoCompleteOptions.getValue(jItems.getSelectedItem());\r\n\t\tif (valid(value)) {\r\n\t\t\tsetVisible(false);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener {\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\tif (AutoCompleteAction.OK.name().equals(e.getActionCommand())) {\r\n\t\t\t\tsave();\r\n\t\t\t}\r\n\t\t\tif (AutoCompleteAction.CANCEL.name().equals(e.getActionCommand())) {\r\n\t\t\t\tvalue = null;\r\n\t\t\t\tsetVisible(false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static interface AutoCompleteOptions<T> {\r\n\t\tpublic Comparator<T> getComparator();\r\n\t\tpublic TextFilterator<T> getFilterator();\r\n\t\tpublic T getValue(Object object);\r\n\t\tpublic boolean isEmpty(T t);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JButtonComparable.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.components;\r\n\r\nimport com.formdev.flatlaf.ui.FlatButtonBorder;\r\nimport java.awt.Color;\r\nimport java.awt.Component;\r\nimport java.util.Objects;\r\nimport javax.swing.Icon;\r\nimport javax.swing.JButton;\r\nimport javax.swing.border.Border;\r\n\r\n\r\npublic class JButtonComparable extends JButton implements Comparable<Component> {\r\n\r\n\tprivate boolean lock = false;\r\n\r\n\tpublic JButtonComparable() {\r\n\t\tthis(null, null);\r\n\t}\r\n\r\n\tpublic JButtonComparable(Icon icon) {\r\n\t\tthis(null, icon);\r\n\t}\r\n\r\n\tpublic JButtonComparable(String text) {\r\n\t\tthis(text, null);\r\n\t}\r\n\r\n\tpublic JButtonComparable(String text, Icon icon) {\r\n\t\tsuper(text, icon);\r\n\t\tupdateBorder();\r\n\t\tlock();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setBackground(Color bg) {\r\n\t\tif (lock) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsuper.setBackground(bg);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setForeground(Color fg) {\r\n\t\tif (lock) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsuper.setForeground(fg);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setBorder(Border border) {\r\n\t\tif (lock) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsuper.setBorder(border);\r\n\t}\r\n\r\n\t/**\r\n\t * Workaround for: https://github.com/JFormDesigner/FlatLaf/issues/331\r\n\t */\r\n\tprivate void updateBorder() {\r\n\t\tif (getBorder() instanceof FlatButtonBorder) {\r\n\t\t\tsuper.setBorder(new FlatButtonBorder() {\r\n\t\t\t\t@Override\r\n\t\t\t\tprotected boolean isCellEditor(Component c) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void lock() {\r\n\t\tthis.lock = true;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(Component o) {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn getText();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 5;\r\n\t\thash = 97 * hash + Objects.hashCode(this.getText());\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal JButtonComparable other = (JButtonComparable) obj;\r\n\t\tif (!Objects.equals(this.getText(), other.getText())) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JButtonNull.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.shared.components;\n\nimport java.awt.Component;\nimport java.awt.Graphics;\nimport javax.swing.JButton;\n\n\npublic class JButtonNull extends JButton implements Comparable<Component> {\n\n\tpublic JButtonNull() {\n\t\tsetBorderPainted(false);\n\t}\n\n\t@Override\n\tpublic int compareTo(Component o) {\n\t\treturn 0;\n\t}\n\n\t@Override\n\tpublic void paintComponent(Graphics g) {\n\t\tg.setColor(getBackground());\n\t\tg.fillRect(0, 0, getSize().width, getSize().height);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JCustomFileChooser.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.components;\n\nimport java.awt.Component;\nimport java.awt.HeadlessException;\nimport java.io.File;\nimport java.util.Collections;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Objects;\nimport java.util.Set;\nimport javax.swing.JFileChooser;\nimport javax.swing.JOptionPane;\nimport javax.swing.UIManager;\nimport javax.swing.filechooser.FileFilter;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\n\n\npublic final class JCustomFileChooser {\n\n\tpublic static final int APPROVE_OPTION = JFileChooser.APPROVE_OPTION;\n\tprivate static OverwriteFileChooser FILE_CHOOSER = null;\n\n\tprivate List<String> extensions;\n\tprivate File file = null;\n\tprivate boolean multiSelection = false;\n\tprivate int fileSelectionMode = JFileChooser.FILES_ONLY;\n\tprivate File currentDirectory = null;\n\n\tpublic JCustomFileChooser(String extension) {\n\t\tthis(Collections.singletonList(extension));\n\t}\n\n\tpublic JCustomFileChooser(List<String> extensions) {\n\t\tthis.extensions = extensions;\n\t\tif (FILE_CHOOSER == null) {\n\t\t\t//XXX - Workaround for https://bugs.openjdk.java.net/browse/JDK-8179014\n\t\t\tUIManager.put(\"FileChooser.useSystemExtensionHiding\", false);\n\t\t\tFILE_CHOOSER = new OverwriteFileChooser();\n\t\t}\n\t}\n\n\tpublic void setSelectedFile(File file) {\n\t\tif (FILE_CHOOSER.getDialogType() != JFileChooser.OPEN_DIALOG && file != null) {\n\t\t\tString filename = file.getAbsolutePath();\n\t\t\tif (filename.matches(\"(?i).*\\\\.\\\\w{0,4}$\")) { //Already got a extension - remove it\n\t\t\t\tint end = filename.lastIndexOf(\".\");\n\t\t\t\tfilename = filename.substring(0, end);\n\t\t\t}\n\t\t\tfilename = filename + \".\" + extensions.get(0);\n\t\t\tfile = new File(filename);\n\t\t}\n\t\tthis.file = file;\n\t}\n\n\tprivate void loadSettings() {\n\t\tFILE_CHOOSER.setSelectedFile(file);\n\t\tFILE_CHOOSER.resetChoosableFileFilters();\n\t\tFILE_CHOOSER.addChoosableFileFilter(new CustomFileFilter(extensions));\n\t\tFILE_CHOOSER.setMultiSelectionEnabled(multiSelection);\n\t\tFILE_CHOOSER.setFileSelectionMode(fileSelectionMode);\n\t\tFILE_CHOOSER.setCurrentDirectory(currentDirectory);\n\t}\n\n\tpublic File getSelectedFile() {\n\t\tfile = FILE_CHOOSER.getSelectedFile();\n\t\treturn file;\n\t}\n\n\tpublic int showDialog(Component parent, String approveButtonText) throws HeadlessException {\n\t\tloadSettings();\n\t\treturn FILE_CHOOSER.showDialog(parent, approveButtonText);\n\t}\n\n\tpublic int showSaveDialog(Component parent) throws HeadlessException {\n\t\tloadSettings();\n\t\treturn FILE_CHOOSER.showSaveDialog(parent);\n\t}\n\n\tpublic int showOpenDialog(Component parent) throws HeadlessException {\n\t\tloadSettings();\n\t\treturn FILE_CHOOSER.showOpenDialog(parent);\n\t}\n\n\tpublic void setExtension(String extension) {\n\t\textensions = Collections.singletonList(extension);\n\t}\n\n\tpublic void setMultiSelectionEnabled(boolean b) {\n\t\tthis.multiSelection = b;\n\t}\n\n\tpublic void setFileSelectionMode(int mode) {\n\t\tthis.fileSelectionMode = mode;\n\t}\n\n\tpublic void setCurrentDirectory(File dir) {\n\t\tthis.currentDirectory = dir;\n\t\t\n\t}\n\n\tpublic static class CustomFileFilter extends FileFilter {\n\n\t\tprivate final Set<String> extensions = new HashSet<>();\n\t\tprivate final String description;\n\n\t\tpublic CustomFileFilter(final List<String> extensions) {\n\t\t\tStringBuilder builder = new StringBuilder();\n\t\t\tboolean first = true;\n\t\t\tfor (String extension : extensions) {\n\t\t\t\tif (first) {\n\t\t\t\t\tfirst = false;\n\t\t\t\t} else {\n\t\t\t\t\tbuilder.append(\"/\");\n\t\t\t\t}\n\t\t\t\tbuilder.append(extension.toUpperCase());\n\t\t\t\tthis.extensions.add(extension.toLowerCase());\n\t\t\t}\n\t\t\tdescription = GuiShared.get().files(builder.toString());\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean accept(final File f) {\n\t\t\tif (f.isDirectory()) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tString currentExtension = FileUtil.getExtension(f);\n\t\t\treturn currentExtension != null && extensions.contains(currentExtension);\n\t\t}\n\n\t\t//The description of this filter\n\t\t@Override\n\t\tpublic String getDescription() {\n\t\t\treturn description;\n\t\t}\n\n\t\t@Override\n\t\tpublic int hashCode() {\n\t\t\tint hash = 7;\n\t\t\thash = 53 * hash + Objects.hashCode(this.extensions);\n\t\t\treturn hash;\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean equals(Object obj) {\n\t\t\tif (this == obj) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (obj == null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (getClass() != obj.getClass()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfinal CustomFileFilter other = (CustomFileFilter) obj;\n\t\t\tif (!Objects.equals(this.extensions, other.extensions)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tprivate static class OverwriteFileChooser extends JFileChooser {\n\n\t\tprivate Component parent;\n\n\t\tpublic OverwriteFileChooser() {\n\t\t\tsetAcceptAllFileFilterUsed(false);\n\t\t}\n\n\t\t@Override\n\t\tpublic int showDialog(Component parent, String approveButtonText) throws HeadlessException {\n\t\t\tthis.parent = parent;\n\t\t\treturn super.showDialog(parent, approveButtonText);\n\t\t}\n\n\t\t@Override\n\t\tpublic int showSaveDialog(Component parent) throws HeadlessException {\n\t\t\tthis.parent = parent;\n\t\t\treturn super.showSaveDialog(parent);\n\t\t}\n\n\t\t@Override\n\t\tpublic int showOpenDialog(Component parent) throws HeadlessException {\n\t\t\tthis.parent = parent;\n\t\t\treturn super.showOpenDialog(parent);\n\t\t}\n\n\t\t@Override\n\t\tpublic void approveSelection() {\n\t\t\tFile selectedFile = this.getSelectedFile();\n\t\t\t//Confirm Overwrite file\n\t\t\tif (getDialogType() != JFileChooser.OPEN_DIALOG && selectedFile != null && selectedFile.exists()) {\n\t\t\t\tint nReturn = JOptionPane.showConfirmDialog(\n\t\t\t\t\t\tparent,\n\t\t\t\t\t\tGuiShared.get().overwrite(),\n\t\t\t\t\t\tGuiShared.get().overwriteFile(),\n\t\t\t\t\t\tJOptionPane.YES_NO_OPTION,\n\t\t\t\t\t\tJOptionPane.PLAIN_MESSAGE\n\t\t\t\t);\n\t\t\t\tif (nReturn == JOptionPane.NO_OPTION) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tsuper.approveSelection();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JDateChooser.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.components;\r\n\r\nimport com.github.lgooddatepicker.components.DatePicker;\r\nimport com.github.lgooddatepicker.components.DatePickerSettings;\r\nimport com.github.lgooddatepicker.optionalusertools.DateChangeListener;\r\nimport com.github.lgooddatepicker.zinternaltools.DateChangeEvent;\r\nimport java.time.Instant;\r\nimport java.time.LocalDate;\r\nimport java.time.LocalDateTime;\r\nimport java.time.ZoneId;\r\nimport java.util.Date;\r\nimport java.util.Locale;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JTextField;\r\nimport javax.swing.SwingUtilities;\r\nimport net.nikr.eve.jeveasset.data.settings.Colors;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\n\r\n\r\npublic class JDateChooser extends DatePicker {\r\n\r\n\tpublic JDateChooser(boolean allowEmptyDates) {\r\n\t\tsuper(new DefaultDatePickerSettings(allowEmptyDates));\r\n\r\n\t\tJTextField jTextField = getComponentDateTextField();\r\n\t\tjTextField.setEditable(false);\r\n\t\tjTextField.setBorder(null);\r\n\t\tjTextField.setOpaque(false);\r\n\t\tjTextField.setBackground(Colors.COMPONENT_TRANSPARENT.getColor());\r\n\t\tjTextField.setHorizontalAlignment(JTextField.CENTER);\r\n\t\tJButton jButton = getComponentToggleCalendarButton();\r\n\t\tjButton.setIcon(Images.EDIT_DATE.getIcon());\r\n\t\tjButton.setText(\"\");\r\n\r\n\t\taddDateChangeListener(new DateChangeListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void dateChanged(DateChangeEvent event) {\r\n\t\t\t\tSwingUtilities.invokeLater(new Runnable() {\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tpublic void run() {\r\n\t\t\t\t\t\tjTextField.setBackground(Colors.COMPONENT_TRANSPARENT.getColor());\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final JTextField getComponentDateTextField() {\r\n\t\treturn super.getComponentDateTextField();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic final JButton getComponentToggleCalendarButton() {\r\n\t\treturn super.getComponentToggleCalendarButton();\r\n\t}\r\n\r\n\tpublic void setDate(Date date) {\r\n\t\tsuper.setDate(dateToLocalDate(date));\r\n\t}\r\n\r\n\tpublic void clearDate() {\r\n\t\tsuper.setDate(null);\r\n\t}\r\n\r\n\tprivate LocalDate dateToLocalDate(Date date) {\r\n\t\tInstant instant = date.toInstant();\r\n\t\treturn LocalDateTime.ofInstant(instant, ZoneId.of(\"GMT\")).toLocalDate();\r\n\t}\r\n\r\n\tprivate static class DefaultDatePickerSettings extends DatePickerSettings {\r\n\r\n\t\tpublic DefaultDatePickerSettings(boolean allowEmptyDates) {\r\n\t\t\tsuper(Locale.ENGLISH);\r\n\t\t\tsetAllowEmptyDates(allowEmptyDates);\r\n\t\t\tsetFormatForDatesCommonEra(Formatter.COLUMN_DATE);\r\n\t\t\tsetFormatForDatesBeforeCommonEra(Formatter.COLUMN_DATE);\r\n\r\n\t\t\t//Use UIManager default\r\n\t\t\tsetColor(DatePickerSettings.DateArea.BackgroundOverallCalendarPanel, Colors.COMPONENT_BACKGROUND.getColor());\r\n\t\t\tsetColor(DatePickerSettings.DateArea.BackgroundClearLabel, Colors.BUTTON_BACKGROUND.getColor());\r\n\t\t\tsetColor(DatePickerSettings.DateArea.TextClearLabel, Colors.BUTTON_FOREGROUND.getColor());\r\n\t\t\tsetColor(DatePickerSettings.DateArea.BackgroundMonthAndYearMenuLabels, Colors.BUTTON_BACKGROUND.getColor());\r\n\t\t\tsetColor(DatePickerSettings.DateArea.TextMonthAndYearMenuLabels, Colors.BUTTON_FOREGROUND.getColor());\r\n\t\t\tsetColor(DatePickerSettings.DateArea.BackgroundTodayLabel, Colors.BUTTON_BACKGROUND.getColor());\r\n\t\t\tsetColor(DatePickerSettings.DateArea.TextTodayLabel, Colors.BUTTON_FOREGROUND.getColor());\r\n\t\t\tsetColor(DatePickerSettings.DateArea.DatePickerTextValidDate, new JLabel().getForeground());\r\n\t\t}\r\n\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JDefaultField.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.components;\r\n\r\nimport java.awt.event.FocusEvent;\r\nimport java.awt.event.FocusListener;\r\nimport javax.swing.JTextField;\r\n\r\n\r\npublic class JDefaultField extends JTextField {\r\n\r\n\tprivate String defaultValue;\r\n\tprivate boolean autoSelectAll;\r\n\r\n\tpublic JDefaultField(final String defaultValue) {\r\n\t\tthis.defaultValue = defaultValue;\r\n\t\tautoSelectAll = false;\r\n\r\n\t\tListenerClass listener = new ListenerClass();\r\n\r\n\t\taddFocusListener(listener);\r\n\t}\r\n\r\n\tprivate void restoreDefault() {\r\n\t\tif (super.getText().isEmpty()) {\r\n\t\t\tsuper.setText(defaultValue);\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getText() {\r\n\t\trestoreDefault();\r\n\t\treturn super.getText();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setText(final String t) {\r\n\t\tif (t.isEmpty()) {\r\n\t\t\tsuper.setText(defaultValue);\r\n\t\t} else {\r\n\t\t\tsuper.setText(t);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic boolean isAutoSelectAll() {\r\n\t\treturn autoSelectAll;\r\n\t}\r\n\r\n\tpublic void setAutoSelectAll(boolean autoSelectAll) {\r\n\t\tthis.autoSelectAll = autoSelectAll;\r\n\t}\r\n\r\n\tprivate class ListenerClass implements FocusListener {\r\n\t\t@Override\r\n\t\tpublic void focusGained(final FocusEvent e) {\r\n\t\t\tif (autoSelectAll) {\r\n\t\t\t\tselectAll();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void focusLost(final FocusEvent e) {\r\n\t\t\trestoreDefault();\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JDialogCentered.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.components;\n\nimport java.awt.Component;\nimport java.awt.Dimension;\nimport java.awt.Image;\nimport java.awt.Window;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.WindowEvent;\nimport java.awt.event.WindowFocusListener;\nimport java.awt.event.WindowListener;\nimport javax.swing.*;\nimport javax.swing.text.DefaultEditorKit;\nimport javax.swing.text.JTextComponent;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.gui.shared.TextManager;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n\npublic abstract class JDialogCentered {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(JDialogCentered.class);\n\n\tprivate enum DialogCenteredAction {\n\t\tOK, CANCEL\n\t}\n\n\tpublic static final int NO_RESTRICTIONS = 0;\n\tpublic static final int WORDS_ONLY = 1;\n\tpublic static final int INTEGERS_ONLY = 2;\n\tpublic static final int NUMBERS_ONLY = 3;\n\n\tprotected Program program;\n\tprotected Window parent;\n\tprotected JPanel jPanel;\n\tprotected GroupLayout layout;\n\n\tprivate JDialog dialog;\n\tprivate boolean firstActivating = false;\n\tprivate boolean firstFocus = false;\n\n\t/**\n\t *\n\t * @param load does nothing except change the signature.\n\t */\n\tprotected JDialogCentered(final boolean load) { }\n\n\tpublic JDialogCentered(final Program program, final String title) {\n\t\tthis(program, title, program.getMainWindow().getFrame(), null);\n\t}\n\tpublic JDialogCentered(final Program program, final String title, final Image image) {\n\t\tthis(program, title, program.getMainWindow().getFrame(), image);\n\t}\n\tpublic JDialogCentered(final Program program, final String title, final Window parent) {\n\t\tthis(program, title, parent, null);\n\t}\n\tpublic JDialogCentered(final Program program, final String title, final Window parent, final Image image) {\n\t\tthis.program = program;\n\t\tthis.parent = parent;\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tdialog = new JDialog(parent, JDialog.DEFAULT_MODALITY_TYPE);\n\t\tdialog.setTitle(title);\n\t\tdialog.setResizable(false);\n\t\tdialog.addWindowListener(listener);\n\t\tdialog.addWindowFocusListener(listener);\n\t\tif (image != null) {\n\t\t\tdialog.setIconImage(image);\n\t\t}\n\n\t\tjPanel = new JPanel();\n\n\t\tlayout = new GroupLayout(jPanel);\n\t\tjPanel.setLayout(layout);\n\t\tlayout.setAutoCreateGaps(true);\n\t\tlayout.setAutoCreateContainerGaps(true);\n\t\tdialog.add(jPanel);\n\n\t\tdialog.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(\"ESCAPE\"), DialogCenteredAction.CANCEL.name());\n\t\tdialog.getRootPane().getActionMap().put(DialogCenteredAction.CANCEL.name(), new HideAction(DialogCenteredAction.CANCEL.name()));\n\t\tdialog.getRootPane().getActionMap().put(DefaultEditorKit.insertBreakAction, new HideAction(DialogCenteredAction.OK.name()));\n\t}\n\n\tprotected abstract JComponent getDefaultFocus();\n\tprotected abstract JButton getDefaultButton();\n\tprotected abstract void windowShown();\n\tprotected abstract void save();\n\n\tpublic final JDialog getDialog() {\n\t\treturn dialog;\n\t}\n\n\tpublic void setVisible(final boolean b) {\n\t\tif (b) {\n\t\t\tLOG.info(\"Showing: {} Dialog\", dialog.getTitle());\n\t\t\tdialog.pack();\n\t\t\tif (dialog.isResizable()) {\n\t\t\t\tdialog.setMinimumSize(dialog.getSize());\n\t\t\t}\n\n\t\t\t//Get the parent size\n\t\t\tDimension screenSize = parent.getSize();\n\n\t\t\t//Calculate the frame location\n\t\t\tint x = (screenSize.width - dialog.getWidth()) / 2;\n\t\t\tint y = (screenSize.height - dialog.getHeight()) / 2;\n\n\t\t\t//Set the new frame location\n\t\t\tdialog.setLocation(x, y);\n\t\t\tdialog.setLocationRelativeTo(parent);\n\n\t\t\tfirstActivating = true;\n\t\t\tfirstFocus = true;\n\t\t\tTextManager.installAll(dialog);\n\t\t} else {\n\t\t\tLOG.info(\"Hiding: {} Dialog\", dialog.getTitle());\n\t\t}\n\t\tdialog.setVisible(b);\n\t}\n\n\t//Find JTextComponent(s) and overwrite the default enter action\n\tprivate void fixTextComponents(final JComponent jComponent) {\n\t\tfor (int i = 0; i < jComponent.getComponentCount(); i++) {\n\t\t\tComponent c = jComponent.getComponent(i);\n\t\t\tif (c instanceof JTextComponent) {\n\t\t\t\tJTextComponent jTextComponent = (JTextComponent) c;\n\t\t\t\tif (!jTextComponent.isEditable()) {\n\t\t\t\t\tjTextComponent.getActionMap().put(DefaultEditorKit.insertBreakAction, new HideAction(DialogCenteredAction.OK.name()));\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (c instanceof JComponent) {\n\t\t\t\tfixTextComponents((JComponent) c);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate class ListenerClass implements WindowListener, WindowFocusListener {\n\t\t@Override\n\t\tpublic void windowOpened(final WindowEvent e) {\n\t\t\t//Set default close button\n\t\t\tif (dialog.getRootPane().getDefaultButton() == null) {\n\t\t\t\tdialog.getRootPane().setDefaultButton(getDefaultButton());\n\t\t\t}\n\t\t\t//Fix none editable JTextComponent(s)\n\t\t\tfixTextComponents(jPanel);\n\t\t}\n\n\t\t@Override\n\t\tpublic void windowClosing(final WindowEvent e) {\n\t\t\tLOG.info(\"Hiding: {} Dialog (close)\", dialog.getTitle());\n\t\t\tsetVisible(false);\n\t\t}\n\n\t\t@Override\n\t\tpublic void windowClosed(final WindowEvent e) { }\n\n\t\t@Override\n\t\tpublic void windowIconified(final WindowEvent e) { }\n\n\t\t@Override\n\t\tpublic void windowDeiconified(final WindowEvent e) { }\n\n\t\t@Override\n\t\tpublic void windowActivated(final WindowEvent e) {\n\t\t\tif (firstActivating) {\n\t\t\t\tfirstActivating = false;\n\t\t\t\twindowShown();\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void windowGainedFocus(final WindowEvent e) {\n\t\t\t//We can not change focus before dialog have focus...\n\t\t\tJComponent defaultFocus = getDefaultFocus();\n\t\t\tif (defaultFocus == null) {\n\t\t\t\tLOG.warn(\"No default focus for: {}\", dialog.getTitle());\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (firstFocus) {\n\t\t\t\tfirstFocus = false;\n\t\t\t\tif (defaultFocus.isEnabled()) {\n\t\t\t\t\tdefaultFocus.requestFocusInWindow();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void windowLostFocus(final WindowEvent e) { }\n\n\t\t@Override\n\t\tpublic void windowDeactivated(final WindowEvent e) { }\n\t}\n\n\tprivate class HideAction extends AbstractAction {\n\t\tprivate static final long serialVersionUID = 1L;\n\n\t\tpublic HideAction(final String actionCommand) {\n\t\t\tthis.putValue(Action.ACTION_COMMAND_KEY, actionCommand);\n\t\t}\n\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (DialogCenteredAction.CANCEL.name().equals(e.getActionCommand())) {\n\t\t\t\tsetVisible(false);\n\t\t\t}\n\t\t\tif (DialogCenteredAction.OK.name().equals(e.getActionCommand())) {\n\t\t\t\tsave();\n\t\t\t}\n\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JDoubleField.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.components;\r\n\r\nimport net.nikr.eve.jeveasset.gui.shared.DocumentFactory;\r\n\r\n\r\npublic class JDoubleField extends JDefaultField {\r\n\r\n\tpublic JDoubleField() {\r\n\t\tthis(\"0\", DocumentFactory.ValueFlag.ANY_NUMBER);\r\n\t}\r\n\r\n\tpublic JDoubleField(DocumentFactory.ValueFlag flag) {\r\n\t\tthis(\"0\", flag);\r\n\t}\r\n\r\n\tpublic JDoubleField(final String defaultValue) {\r\n\t\tthis(defaultValue, DocumentFactory.ValueFlag.ANY_NUMBER);\r\n\t}\r\n\r\n\tpublic JDoubleField(final String defaultValue, DocumentFactory.ValueFlag flag) {\r\n\t\tsuper(defaultValue);\r\n\t\tthis.setDocument(DocumentFactory.getDoublePlainDocument(flag));\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JDragTabbedPane.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * Original code by aterai (https://java-swing-tips.blogspot.com/2008/04/drag-and-drop-tabs-in-jtabbedpane.html)\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.components;\r\n\r\nimport java.awt.AlphaComposite;\r\nimport java.awt.Color;\r\nimport java.awt.Component;\r\nimport java.awt.Graphics;\r\nimport java.awt.Graphics2D;\r\nimport java.awt.Point;\r\nimport java.awt.Rectangle;\r\nimport java.awt.datatransfer.DataFlavor;\r\nimport java.awt.datatransfer.Transferable;\r\nimport java.awt.dnd.DnDConstants;\r\nimport java.awt.dnd.DragGestureEvent;\r\nimport java.awt.dnd.DragGestureListener;\r\nimport java.awt.dnd.DragSource;\r\nimport java.awt.dnd.DragSourceDragEvent;\r\nimport java.awt.dnd.DragSourceDropEvent;\r\nimport java.awt.dnd.DragSourceEvent;\r\nimport java.awt.dnd.DragSourceListener;\r\nimport java.awt.dnd.DropTarget;\r\nimport java.awt.dnd.DropTargetDragEvent;\r\nimport java.awt.dnd.DropTargetDropEvent;\r\nimport java.awt.dnd.DropTargetEvent;\r\nimport java.awt.dnd.DropTargetListener;\r\nimport java.awt.dnd.InvalidDnDOperationException;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.image.BufferedImage;\r\nimport java.util.ArrayList;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Set;\r\nimport javax.swing.Action;\r\nimport javax.swing.ActionMap;\r\nimport javax.swing.Icon;\r\nimport javax.swing.JPanel;\r\nimport javax.swing.JTabbedPane;\r\nimport static javax.swing.JTabbedPane.SCROLL_TAB_LAYOUT;\r\nimport static javax.swing.SwingConstants.BOTTOM;\r\nimport static javax.swing.SwingConstants.LEFT;\r\nimport static javax.swing.SwingConstants.RIGHT;\r\nimport static javax.swing.SwingConstants.TOP;\r\nimport javax.swing.SwingUtilities;\r\n\r\npublic class JDragTabbedPane extends JTabbedPane {\r\n\r\n\tprivate static final int LINEWIDTH = 3;\r\n\tprivate static final String NAME = \"test\";\r\n\tprivate final GhostGlassPane glassPane = new GhostGlassPane();\r\n\tprivate final Rectangle lineRect = new Rectangle();\r\n\tprivate final Color lineColor = new Color(0, 100, 255);\r\n\tprivate int sourceTabIndex = -1;\r\n\r\n\tprivate final List<TabMoveListener> tabMoveListeners = new ArrayList<>();\r\n\tprivate final Set<Integer> locked = new HashSet<>();\r\n\r\n\tpublic void addTabMoveListeners(TabMoveListener tabMoveListener) {\r\n\t\ttabMoveListeners.add(tabMoveListener);\r\n\t}\r\n\r\n\tpublic void removeTabMoveListeners(TabMoveListener tabMoveListener) {\r\n\t\ttabMoveListeners.remove(tabMoveListener);\r\n\t}\r\n\r\n\tpublic void addDragLock(Integer index) {\r\n\t\tlocked.add(index);\r\n\t}\r\n\r\n\tpublic void removeDragLock(Integer index) {\r\n\t\tlocked.remove(index);\r\n\t}\r\n\r\n\tprivate void clickArrowButton(String actionKey) {\r\n\t\tActionMap map = getActionMap();\r\n\t\tif (map != null) {\r\n\t\t\tAction action = map.get(actionKey);\r\n\t\t\tif (action != null && action.isEnabled()) {\r\n\t\t\t\taction.actionPerformed(new ActionEvent(\r\n\t\t\t\t\t\tthis, ActionEvent.ACTION_PERFORMED, null, 0, 0));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tprivate static Rectangle backward = new Rectangle();\r\n\tprivate static Rectangle forward = new Rectangle();\r\n\tprivate static final int RWH = 20;\r\n\tprivate static final int BUTTON_SIZE = 30;//XXX: magic number of scroll button size\r\n\r\n\tprivate void autoScrollTest(Point glassPt) {\r\n\t\tRectangle r = getTabAreaBounds();\r\n\t\tint placement = getTabPlacement();\r\n\t\tif (placement == TOP || placement == BOTTOM) {\r\n\t\t\tbackward.setBounds(r.x, r.y, RWH, r.height);\r\n\t\t\tforward.setBounds(r.x + r.width - RWH - BUTTON_SIZE, r.y, RWH + BUTTON_SIZE, r.height);\r\n\t\t} else if (placement == LEFT || placement == RIGHT) {\r\n\t\t\tbackward.setBounds(r.x, r.y, r.width, RWH);\r\n\t\t\tforward.setBounds(r.x, r.y + r.height - RWH - BUTTON_SIZE, r.width, RWH + BUTTON_SIZE);\r\n\t\t}\r\n\t\tbackward = SwingUtilities.convertRectangle(getParent(), backward, glassPane);\r\n\t\tforward = SwingUtilities.convertRectangle(getParent(), forward, glassPane);\r\n\t\tif (backward.contains(glassPt)) {\r\n\t\t\tclickArrowButton(\"scrollTabsBackwardAction\");\r\n\t\t} else if (forward.contains(glassPt)) {\r\n\t\t\tclickArrowButton(\"scrollTabsForwardAction\");\r\n\t\t}\r\n\t}\r\n\r\n\tpublic JDragTabbedPane() {\r\n\t\tsuper();\r\n\t\tfinal DragSourceListener dsl = new DragSourceListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void dragEnter(DragSourceDragEvent e) {\r\n\t\t\t\te.getDragSourceContext().setCursor(DragSource.DefaultMoveDrop);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic void dragExit(DragSourceEvent e) {\r\n\t\t\t\te.getDragSourceContext().setCursor(DragSource.DefaultMoveNoDrop);\r\n\t\t\t\tlineRect.setRect(0, 0, 0, 0);\r\n\t\t\t\tglassPane.setPoint(new Point(-1000, -1000));\r\n\t\t\t\tglassPane.repaint();\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic void dragOver(DragSourceDragEvent e) {\r\n\t\t\t\tPoint glassPt = e.getLocation();\r\n\t\t\t\tSwingUtilities.convertPointFromScreen(glassPt, glassPane);\r\n\t\t\t\tif (isValidTarget(getTargetTabIndex(glassPt))) {\r\n\t\t\t\t\te.getDragSourceContext().setCursor(DragSource.DefaultMoveDrop);\r\n\t\t\t\t\tglassPane.setCursor(DragSource.DefaultMoveDrop);\r\n\t\t\t\t} else {\r\n\t\t\t\t\te.getDragSourceContext().setCursor(DragSource.DefaultMoveNoDrop);\r\n\t\t\t\t\tglassPane.setCursor(DragSource.DefaultMoveNoDrop);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic void dragDropEnd(DragSourceDropEvent e) {\r\n\t\t\t\tlineRect.setRect(0, 0, 0, 0);\r\n\t\t\t\tsourceTabIndex = -1;\r\n\t\t\t\tglassPane.setVisible(false);\r\n\t\t\t\tif (hasGhost()) {\r\n\t\t\t\t\tglassPane.setVisible(false);\r\n\t\t\t\t\tglassPane.setImage(null);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic void dropActionChanged(DragSourceDragEvent e) {\r\n\t\t\t}\r\n\t\t};\r\n\t\tfinal Transferable t = new Transferable() {\r\n\t\t\tprivate final DataFlavor FLAVOR = new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType, NAME);\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic Object getTransferData(DataFlavor flavor) {\r\n\t\t\t\treturn JDragTabbedPane.this;\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic DataFlavor[] getTransferDataFlavors() {\r\n\t\t\t\tDataFlavor[] f = new DataFlavor[1];\r\n\t\t\t\tf[0] = this.FLAVOR;\r\n\t\t\t\treturn f;\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic boolean isDataFlavorSupported(DataFlavor flavor) {\r\n\t\t\t\treturn flavor.getHumanPresentableName().equals(NAME);\r\n\t\t\t}\r\n\t\t};\r\n\t\tfinal DragGestureListener dgl = new DragGestureListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void dragGestureRecognized(DragGestureEvent e) {\r\n\t\t\t\tif (getTabCount() <= 1) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tPoint tabPt = e.getDragOrigin();\r\n\t\t\t\tsourceTabIndex = indexAtLocation(tabPt.x, tabPt.y);\r\n\t\t\t\t//\"disabled tab problem\".\r\n\t\t\t\tif (sourceTabIndex < 0 || !isEnabledAt(sourceTabIndex) || locked.contains(sourceTabIndex)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tinitGlassPane(e.getComponent(), e.getDragOrigin());\r\n\t\t\t\ttry {\r\n\t\t\t\t\te.startDrag(DragSource.DefaultMoveDrop, t, dsl);\r\n\t\t\t\t} catch (InvalidDnDOperationException idoe) {\r\n\t\t\t\t\t//No problem\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\tnew DropTarget(glassPane, DnDConstants.ACTION_COPY_OR_MOVE, new CDropTargetListener(), true);\r\n\t\tnew DragSource().createDefaultDragGestureRecognizer(this, DnDConstants.ACTION_COPY_OR_MOVE, dgl);\r\n\t}\r\n\r\n\tclass CDropTargetListener implements DropTargetListener {\r\n\r\n\t\t@Override\r\n\t\tpublic void dragEnter(DropTargetDragEvent e) {\r\n\t\t\tif (isDragAcceptable(e)) {\r\n\t\t\t\te.acceptDrag(e.getDropAction());\r\n\t\t\t} else {\r\n\t\t\t\te.rejectDrag();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void dragExit(DropTargetEvent e) {\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void dropActionChanged(DropTargetDragEvent e) {\r\n\t\t}\r\n\r\n\t\tprivate Point _glassPt = new Point();\r\n\r\n\t\t@Override\r\n\t\tpublic void dragOver(final DropTargetDragEvent e) {\r\n\t\t\tPoint glassPt = e.getLocation();\r\n\t\t\tif (getTabPlacement() == JTabbedPane.TOP\r\n\t\t\t\t\t|| getTabPlacement() == JTabbedPane.BOTTOM) {\r\n\t\t\t\tinitTargetLeftRightLine(getTargetTabIndex(glassPt));\r\n\t\t\t} else {\r\n\t\t\t\tinitTargetTopBottomLine(getTargetTabIndex(glassPt));\r\n\t\t\t}\r\n\t\t\tif (hasGhost()) {\r\n\t\t\t\tglassPane.setPoint(glassPt);\r\n\t\t\t}\r\n\t\t\tif (!_glassPt.equals(glassPt)) {\r\n\t\t\t\tglassPane.repaint();\r\n\t\t\t}\r\n\t\t\t_glassPt = glassPt;\r\n\t\t\tautoScrollTest(glassPt);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void drop(DropTargetDropEvent e) {\r\n\t\t\tif (isDropAcceptable(e)) {\r\n\t\t\t\tint targetTabIndex = getTargetTabIndex(e.getLocation());\r\n\t\t\t\tif (!locked.contains(targetTabIndex)) {\r\n\t\t\t\t\tconvertTab(targetTabIndex);\r\n\t\t\t\t\te.dropComplete(true);\r\n\t\t\t\t\trepaint();\r\n\t\t\t\t\treturn; //Moved\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\te.dropComplete(false);\r\n\t\t\trepaint();\r\n\t\t}\r\n\r\n\t\tprivate boolean isDragAcceptable(DropTargetDragEvent e) {\r\n\t\t\tTransferable t = e.getTransferable();\r\n\t\t\tif (t == null) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tDataFlavor[] f = e.getCurrentDataFlavors();\r\n\t\t\tif (t.isDataFlavorSupported(f[0]) && sourceTabIndex >= 0) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tprivate boolean isDropAcceptable(DropTargetDropEvent e) {\r\n\t\t\tTransferable t = e.getTransferable();\r\n\t\t\tif (t == null) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tDataFlavor[] f = t.getTransferDataFlavors();\r\n\t\t\tif (t.isDataFlavorSupported(f[0]) && sourceTabIndex >= 0) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate boolean hasGhost = true;\r\n\r\n\tpublic void setPaintGhost(boolean flag) {\r\n\t\thasGhost = flag;\r\n\t}\r\n\r\n\tpublic boolean hasGhost() {\r\n\t\treturn hasGhost;\r\n\t}\r\n\tprivate boolean isPaintScrollArea = true;\r\n\r\n\tpublic void setPaintScrollArea(boolean flag) {\r\n\t\tisPaintScrollArea = flag;\r\n\t}\r\n\r\n\tpublic boolean isPaintScrollArea() {\r\n\t\treturn isPaintScrollArea;\r\n\t}\r\n\r\n\tprivate int getTargetTabIndex(Point glassPt) {\r\n\t\tPoint tabPt = SwingUtilities.convertPoint(glassPane, glassPt, JDragTabbedPane.this);\r\n\t\tboolean isTB = getTabPlacement() == JTabbedPane.TOP\r\n\t\t\t\t|| getTabPlacement() == JTabbedPane.BOTTOM;\r\n\t\tfor (int i = 0; i < getTabCount(); i++) {\r\n\t\t\tRectangle r = getBoundsAt(i);\r\n\t\t\tif (isTB) {\r\n\t\t\t\tr.setRect(r.x - r.width / 2, r.y, r.width, r.height);\r\n\t\t\t} else {\r\n\t\t\t\tr.setRect(r.x, r.y - r.height / 2, r.width, r.height);\r\n\t\t\t}\r\n\t\t\tif (r.contains(tabPt)) {\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t\tRectangle r = getBoundsAt(getTabCount() - 1);\r\n\t\tif (isTB) {\r\n\t\t\tr.setRect(r.x + r.width / 2, r.y, r.width, r.height);\r\n\t\t} else {\r\n\t\t\tr.setRect(r.x, r.y + r.height / 2, r.width, r.height);\r\n\t\t}\r\n\t\treturn r.contains(tabPt) ? getTabCount() : -1;\r\n\t}\r\n\r\n\tprivate void convertTab(int targetTabIndex) {\r\n\t\tif (targetTabIndex < 0 || sourceTabIndex == targetTabIndex) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tComponent cmp = getComponentAt(sourceTabIndex);\r\n\t\tComponent tab = getTabComponentAt(sourceTabIndex);\r\n\t\tString str = getTitleAt(sourceTabIndex);\r\n\t\tIcon icon = getIconAt(sourceTabIndex);\r\n\t\tString tip = getToolTipTextAt(sourceTabIndex);\r\n\t\tboolean flg = isEnabledAt(sourceTabIndex);\r\n\t\tint fixedTargetTabIndex = sourceTabIndex > targetTabIndex ? targetTabIndex : targetTabIndex - 1;\r\n\t\tremove(sourceTabIndex);\r\n\t\tinsertTab(str, icon, cmp, tip, fixedTargetTabIndex);\r\n\t\tsetEnabledAt(fixedTargetTabIndex, flg);\r\n\t\t//When you drag'n'drop a disabled tab, it finishes enabled and selected.\r\n\t\t//pointed out by dlorde\r\n\t\tif (flg) {\r\n\t\t\tsetSelectedIndex(fixedTargetTabIndex);\r\n\t\t}\r\n\r\n\t\t//I have a component in all tabs (jlabel with an X to close the tab)\r\n\t\t//and when i move a tab the component disappear.\r\n\t\t//pointed out by Daniel Dario Morales Salas\r\n\t\tsetTabComponentAt(fixedTargetTabIndex, tab);\r\n\r\n\t\t//Notify listeners\r\n\t\tfor (TabMoveListener tabMoveListener : tabMoveListeners) {\r\n\t\t\ttabMoveListener.tabMoved(sourceTabIndex, fixedTargetTabIndex);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void initTargetLeftRightLine(int targetTabIndex) {\r\n\t\tif (isInvalidTarget(targetTabIndex)) {\r\n\t\t\tlineRect.setRect(0, 0, 0, 0);\r\n\t\t} else if (targetTabIndex == 0) {\r\n\t\t\tRectangle r = SwingUtilities.convertRectangle(\r\n\t\t\t\t\tthis, getBoundsAt(0), glassPane);\r\n\t\t\tlineRect.setRect(r.x - LINEWIDTH / 2, r.y, LINEWIDTH, r.height);\r\n\t\t} else {\r\n\t\t\tRectangle r = SwingUtilities.convertRectangle(\r\n\t\t\t\t\tthis, getBoundsAt(targetTabIndex - 1), glassPane);\r\n\t\t\tlineRect.setRect(r.x + r.width - LINEWIDTH / 2, r.y, LINEWIDTH, r.height);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void initTargetTopBottomLine(int targetTabIndex) {\r\n\t\tif (isInvalidTarget(targetTabIndex)) {\r\n\t\t\tlineRect.setRect(0, 0, 0, 0);\r\n\t\t} else if (targetTabIndex == 0) {\r\n\t\t\tRectangle r = SwingUtilities.convertRectangle(\r\n\t\t\t\t\tthis, getBoundsAt(0), glassPane);\r\n\t\t\tlineRect.setRect(r.x, r.y - LINEWIDTH / 2, r.width, LINEWIDTH);\r\n\t\t} else {\r\n\t\t\tRectangle r = SwingUtilities.convertRectangle(\r\n\t\t\t\t\tthis, getBoundsAt(targetTabIndex - 1), glassPane);\r\n\t\t\tlineRect.setRect(r.x, r.y + r.height - LINEWIDTH / 2, r.width, LINEWIDTH);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate boolean isInvalidTarget(int targetTabIndex) {\r\n\t\treturn !isValidTarget(targetTabIndex);\r\n\t}\r\n\r\n\tprivate boolean isValidTarget(int targetTabIndex) {\r\n\t\treturn targetTabIndex >= 0\r\n\t\t\t\t&& targetTabIndex != sourceTabIndex\r\n\t\t\t\t&& targetTabIndex != sourceTabIndex + 1\r\n\t\t\t\t&& !locked.contains(targetTabIndex);\r\n\t}\r\n\r\n\tprivate void initGlassPane(Component c, Point tabPt) {\r\n\t\tgetRootPane().setGlassPane(glassPane);\r\n\t\tif (hasGhost()) {\r\n\t\t\tRectangle rect = getBoundsAt(sourceTabIndex);\r\n\t\t\tBufferedImage image = new BufferedImage(c.getWidth(), c.getHeight(), BufferedImage.TYPE_INT_ARGB);\r\n\t\t\tGraphics g = image.getGraphics();\r\n\t\t\tc.paint(g);\r\n\t\t\trect.x = rect.x < 0 ? 0 : rect.x;\r\n\t\t\trect.y = rect.y < 0 ? 0 : rect.y;\r\n\t\t\timage = image.getSubimage(rect.x, rect.y, rect.width, rect.height);\r\n\t\t\tglassPane.setImage(image);\r\n\t\t}\r\n\t\tPoint glassPt = SwingUtilities.convertPoint(c, tabPt, glassPane);\r\n\t\tglassPane.setPoint(glassPt);\r\n\t\tglassPane.setVisible(true);\r\n\t}\r\n\r\n\tprivate Rectangle getTabAreaBounds() {\r\n\t\tRectangle tabbedRect = getBounds();\r\n\t\t//pointed out by daryl. NullPointerException: i.e. addTab(\"Tab\",null)\r\n\t\t//Rectangle compRect = getSelectedComponent().getBounds();\r\n\t\tComponent comp = getSelectedComponent();\r\n\t\tint idx = 0;\r\n\t\twhile (comp == null && idx < getTabCount()) {\r\n\t\t\tcomp = getComponentAt(idx++);\r\n\t\t}\r\n\t\tRectangle compRect = (comp == null) ? new Rectangle() : comp.getBounds();\r\n\t\tint placement = getTabPlacement();\r\n\t\tif (placement == TOP) {\r\n\t\t\ttabbedRect.height = tabbedRect.height - compRect.height;\r\n\t\t} else if (placement == BOTTOM) {\r\n\t\t\ttabbedRect.y = tabbedRect.y + compRect.y + compRect.height;\r\n\t\t\ttabbedRect.height = tabbedRect.height - compRect.height;\r\n\t\t} else if (placement == LEFT) {\r\n\t\t\ttabbedRect.width = tabbedRect.width - compRect.width;\r\n\t\t} else if (placement == RIGHT) {\r\n\t\t\ttabbedRect.x = tabbedRect.x + compRect.x + compRect.width;\r\n\t\t\ttabbedRect.width = tabbedRect.width - compRect.width;\r\n\t\t}\r\n\t\ttabbedRect.grow(2, 2);\r\n\t\treturn tabbedRect;\r\n\t}\r\n\r\n\tclass GhostGlassPane extends JPanel {\r\n\r\n\t\tprivate final AlphaComposite composite;\r\n\t\tprivate Point location = new Point(0, 0);\r\n\t\tprivate BufferedImage draggingGhost = null;\r\n\r\n\t\tpublic GhostGlassPane() {\r\n\t\t\tsetOpaque(false);\r\n\t\t\tcomposite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f);\r\n\t\t\t//[JDK-6700748] Cursor flickering during D&D when using CellRendererPane with validation - Java Bug System\r\n\t\t\t//https://bugs.openjdk.java.net/browse/JDK-6700748\r\n\t\t\t//setCursor(null);\r\n\t\t}\r\n\r\n\t\tpublic void setImage(BufferedImage draggingGhost) {\r\n\t\t\tthis.draggingGhost = draggingGhost;\r\n\t\t}\r\n\r\n\t\tpublic void setPoint(Point location) {\r\n\t\t\tthis.location = location;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void paintComponent(Graphics g) {\r\n\t\t\tGraphics2D g2 = (Graphics2D) g;\r\n\t\t\tg2.setComposite(composite);\r\n\t\t\tif (isPaintScrollArea() && getTabLayoutPolicy() == SCROLL_TAB_LAYOUT) {\r\n\t\t\t\tg2.setPaint(Color.RED);\r\n\t\t\t\tg2.fill(backward);\r\n\t\t\t\tg2.fill(forward);\r\n\t\t\t}\r\n\t\t\tif (draggingGhost != null) {\r\n\t\t\t\tdouble xx = location.getX() - (draggingGhost.getWidth(this) / 2d);\r\n\t\t\t\tdouble yy = location.getY() - (draggingGhost.getHeight(this) / 2d);\r\n\t\t\t\tg2.drawImage(draggingGhost, (int) xx, (int) yy, null);\r\n\t\t\t}\r\n\t\t\tif (sourceTabIndex >= 0) {\r\n\t\t\t\tg2.setPaint(lineColor);\r\n\t\t\t\tg2.fill(lineRect);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic interface TabMoveListener {\r\n\t\tpublic void tabMoved(int from, int to);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JDropDownButton.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.components;\n\nimport java.awt.Component;\nimport java.awt.Dimension;\nimport java.awt.event.KeyEvent;\nimport java.awt.event.KeyListener;\nimport java.awt.event.MouseAdapter;\nimport java.awt.event.MouseEvent;\nimport java.awt.event.MouseListener;\nimport javax.swing.Icon;\nimport javax.swing.JButton;\nimport javax.swing.JMenuItem;\nimport javax.swing.JPopupMenu;\nimport javax.swing.event.PopupMenuEvent;\nimport javax.swing.event.PopupMenuListener;\nimport net.nikr.eve.jeveasset.gui.shared.MenuScroller;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\n\n\npublic class JDropDownButton extends JButton {\n\n\tprivate boolean showPopupMenuMouse = true;\n\tprivate boolean showPopupMenuKey = true;\n\tprivate boolean mouseOverThis = false;\n\tprivate boolean mousePressedThis = false;\n\t//private JButton jButton;\n\tprivate int popupHorizontalAlignment;\n\tprivate int popupVerticalAlignment;\n\tprivate final JPopupMenu jPopupMenu;\n\tprivate final MenuScroller menuScroller;\n\n\tpublic JDropDownButton() {\n\t\tthis(GuiShared.get().emptyString(), null, LEFT, BOTTOM);\n\t}\n\n\tpublic JDropDownButton(final Icon icon) {\n\t\tthis(GuiShared.get().emptyString(), icon, LEFT, BOTTOM);\n\t}\n\n\tpublic JDropDownButton(final Icon icon, final int popupHorizontalAlignment) {\n\t\tthis(GuiShared.get().emptyString(), icon, popupHorizontalAlignment, BOTTOM);\n\t}\n\n\tpublic JDropDownButton(final String text) {\n\t\tthis(text, null, LEFT, BOTTOM);\n\t}\n\n\tpublic JDropDownButton(final String text, final Icon icon) {\n\t\tthis(text, icon, LEFT, BOTTOM);\n\t}\n\n\tpublic JDropDownButton(final int popupHorizontalAlignment) {\n\t\tthis(GuiShared.get().emptyString(), null, popupHorizontalAlignment, BOTTOM);\n\t}\n\n\tpublic JDropDownButton(final int popupHorizontalAlignment, final int popupVerticalAlignment) {\n\t\tthis(GuiShared.get().emptyString(), null, popupHorizontalAlignment, popupVerticalAlignment);\n\t}\n\n\tpublic JDropDownButton(final String text, final int popupHorizontalAlignment) {\n\t\tthis(text, null, popupHorizontalAlignment, BOTTOM);\n\t}\n\n\tpublic JDropDownButton(final String text, final int popupHorizontalAlignment, final int popupVerticalAlignment) {\n\t\tthis(text, null, popupHorizontalAlignment, popupVerticalAlignment);\n\t}\n\n\tpublic JDropDownButton(final String text, final Icon icon, final int popupHorizontalAlignment, final int popupVerticalAlignment) {\n\t\tsuper(text, icon);\n\t\tif (popupHorizontalAlignment != LEFT && popupHorizontalAlignment != RIGHT && popupHorizontalAlignment != CENTER) {\n\t\t\tthrow new IllegalArgumentException(\"Must be SwingConstants.RIGHT, SwingConstants.LEFT, or SwingConstants.CENTER\");\n\t\t}\n\t\tif (popupVerticalAlignment != TOP && popupVerticalAlignment != BOTTOM && popupVerticalAlignment != CENTER) {\n\t\t\tthrow new IllegalArgumentException(\"Must be SwingConstants.TOP, SwingConstants.BOTTOM, or SwingConstants.CENTER\");\n\t\t}\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tthis.popupHorizontalAlignment = popupHorizontalAlignment;\n\t\tthis.popupVerticalAlignment = popupVerticalAlignment;\n\t\tthis.setText(text);\n\t\tthis.addMouseListener(listener);\n\t\tthis.addKeyListener(listener);\n\t\tjPopupMenu = new JPopupMenu();\n\t\tjPopupMenu.addPopupMenuListener(listener);\n\t\tmenuScroller = new MenuScroller(jPopupMenu);\n\t}\n\n\tpublic JPopupMenu getPopupMenu() {\n\t\treturn jPopupMenu;\n\t}\n\n\t@Override\n\tpublic void removeAll() {\n\t\tjPopupMenu.removeAll();\n\t}\n\n\tpublic void addSeparator() {\n\t\tjPopupMenu.addSeparator();\n\t}\n\n\tpublic Component add(final JMenuItem jMenuItem, boolean keepOpen) {\n\t\tif (keepOpen) {\n\t\t\t//jPopupMenu.setLightWeightPopupEnabled(true);\n\t\t\tjMenuItem.addMouseListener(new MouseAdapter() {\n\t\t\t\t@Override\n\t\t\t\tpublic void mouseReleased(MouseEvent e) {\n\t\t\t\t\tshowPopupMenu();\n\t\t\t\t\tjMenuItem.setArmed(true);\n\t\t\t\t}\n\t\t\t\t@Override\n\t\t\t\tpublic void mouseEntered(MouseEvent e) {\n\t\t\t\t\tjMenuItem.setArmed(true);\n\t\t\t\t}\n\t\t\t\t@Override\n\t\t\t\tpublic void mouseExited(MouseEvent e) {\n\t\t\t\t\tjMenuItem.setArmed(false);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn add(jMenuItem);\n\t}\n\n\t@Override\n\tpublic Component add(final Component component) {\n\t\tjPopupMenu.add(component);\n\t\treturn component;\n\t}\n\n\tpublic int getPopupHorizontalAlignment() {\n\t\treturn popupHorizontalAlignment;\n\t}\n\n\tpublic void setPopupHorizontalAlignment(final int popupHorizontalAlignment) {\n\t\tif (popupHorizontalAlignment != LEFT && popupHorizontalAlignment != RIGHT && popupHorizontalAlignment != CENTER) {\n\t\t\tthrow new IllegalArgumentException(\"Must be SwingConstants.RIGHT, SwingConstants.LEFT, or SwingConstants.CENTER\");\n\t\t}\n\t\tthis.popupHorizontalAlignment = popupHorizontalAlignment;\n\t}\n\n\tpublic int getPopupVerticalAlignment() {\n\t\treturn popupVerticalAlignment;\n\t}\n\n\tpublic void setPopupVerticalAlignment(final int popupVerticalAlignment) {\n\t\tif (popupVerticalAlignment != TOP && popupVerticalAlignment != BOTTOM && popupVerticalAlignment != CENTER) {\n\t\t\tthrow new IllegalArgumentException(\"Must be SwingConstants.TOP, SwingConstants.BOTTOM, or SwingConstants.CENTER\");\n\t\t}\n\t\tthis.popupVerticalAlignment = popupVerticalAlignment;\n\t}\n\n\tpublic void keepVisible(final int index) {\n\t\tmenuScroller.keepVisible(index);\n\t}\n\tpublic final void setTopFixedCount(final int topFixedCount) {\n\t\tmenuScroller.setTopFixedCount(topFixedCount);\n\t}\n\tpublic final void setBottomFixedCount(final int bottomFixedCount) {\n\t\tmenuScroller.setBottomFixedCount(bottomFixedCount);\n\t}\n\tpublic final void setInterval(final int interval) {\n\t\tmenuScroller.setInterval(interval);\n\t}\n\n\tprivate void showPopupMenu() {\n\t\tif (!this.isEnabled()) {\n\t\t\treturn;\n\t\t}\n\t\t///XXX Workaround for BugID: 281\n\t\t//https://eve.nikr.net/jeveassets/bugs/#bugid281\n\t\t//https://eve.nikr.net/jeveassets/bugs/#bugid420\n\t\tif (!this.isShowing()) {\n\t\t\treturn;\n\t\t}\n\t\tint verticalPosition = this.getHeight();\n\t\tint horizontalPosition = 0;\n\t\tDimension popupMenuSize = jPopupMenu.getPreferredSize();\n\t\tswitch (popupHorizontalAlignment) {\n\t\tcase LEFT: //OK\n\t\t\thorizontalPosition = 0;\n\t\t\tbreak;\n\t\tcase RIGHT: //OK\n\t\t\thorizontalPosition = this.getWidth() - popupMenuSize.width;\n\t\t\tbreak;\n\t\tcase CENTER: //OK\n\t\t\thorizontalPosition = (this.getWidth() / 2) - (popupMenuSize.width / 2);\n\t\t\tbreak;\n\t\t}\n\t\tswitch (popupVerticalAlignment) {\n\t\t\tcase TOP: //OK\n\t\t\t\tverticalPosition = -popupMenuSize.height + 2;\n\t\t\t\tbreak;\n\t\t\tcase BOTTOM: //OK\n\t\t\t\tverticalPosition = this.getHeight() - 2;\n\t\t\t\tbreak;\n\t\t\tcase CENTER: //OK\n\t\t\t\tverticalPosition = -(popupMenuSize.height / 2) + (this.getHeight() / 2);\n\t\t}\n\t\tjPopupMenu.show(this, horizontalPosition, verticalPosition);\n\t\tthis.getModel().setRollover(true);\n\t}\n\n\tprivate class ListenerClass implements PopupMenuListener, MouseListener, KeyListener {\n\t\t@Override\n\t\tpublic void popupMenuWillBecomeVisible(final PopupMenuEvent e) { }\n\n\t\t@Override\n\t\tpublic void popupMenuWillBecomeInvisible(final PopupMenuEvent e) { }\n\n\t\t@Override\n\t\tpublic void popupMenuCanceled(final PopupMenuEvent e) {\n\t\t\tif (mouseOverThis) {\n\t\t\t\tshowPopupMenuMouse = false;\n\t\t\t} else {\n\t\t\t\tshowPopupMenuMouse = true;\n\t\t\t}\n\t\t\tgetModel().setRollover(false);\n\t\t}\n\n\t\t@Override\n\t\tpublic void mouseClicked(final MouseEvent e) { }\n\n\t\t@Override\n\t\tpublic void mousePressed(final MouseEvent e) {\n\t\t\tmousePressedThis = true;\n\t\t}\n\n\t\t@Override\n\t\tpublic void mouseReleased(final MouseEvent e) {\n\t\t\tif (mousePressedThis) {\n\t\t\t\tif (showPopupMenuMouse) {\n\t\t\t\t\tshowPopupMenu();\n\t\t\t\t} else {\n\t\t\t\t\tshowPopupMenuMouse = true;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tmousePressedThis = false;\n\t\t}\n\n\t\t@Override\n\t\tpublic void mouseEntered(final MouseEvent e) {\n\t\t\tmouseOverThis = true;\n\n\t\t}\n\n\t\t@Override\n\t\tpublic void mouseExited(final MouseEvent e) {\n\t\t\tmouseOverThis = false;\n\t\t\tif (jPopupMenu.isShowing()) {\n\t\t\t\tgetModel().setRollover(true);\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void keyTyped(final KeyEvent e) {\n\t\t\tif (showPopupMenuKey) {\n\t\t\t\tshowPopupMenu();\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void keyPressed(final KeyEvent e) {\n\t\t\tif (e.getKeyCode() == KeyEvent.VK_SPACE || e.getKeyCode() == KeyEvent.VK_ENTER) {\n\t\t\t\tshowPopupMenuKey = true;\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void keyReleased(final KeyEvent e) {\n\t\t\tshowPopupMenuKey = false;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JFixedToolBar.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.components;\r\n\r\nimport java.awt.Dimension;\r\nimport javax.swing.AbstractButton;\r\nimport javax.swing.Box;\r\nimport javax.swing.BoxLayout;\r\nimport javax.swing.JCheckBox;\r\nimport javax.swing.JComboBox;\r\nimport javax.swing.JComponent;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JToolBar;\r\nimport javax.swing.SwingConstants;\r\nimport net.nikr.eve.jeveasset.Program;\r\n\r\n\r\npublic class JFixedToolBar extends JToolBar {\r\n\r\n\tprivate Integer height = null;\r\n\tprivate final Orientation orientation;\r\n\r\n\tpublic static enum Orientation {\r\n\t\tHORIZONTAL,\r\n\t\tVERTICAL\r\n\t}\r\n\r\n\tpublic JFixedToolBar() {\r\n\t\tthis(Orientation.HORIZONTAL);\r\n\t}\r\n\r\n\tpublic JFixedToolBar(Orientation orientation) {\r\n\t\tsuper(); //We don't need orientation as it's only used by DefaultToolBarLayout\r\n\t\tthis.orientation = orientation;\r\n\t\tsetLayout(new BoxLayout(this, orientation == Orientation.HORIZONTAL ? BoxLayout.LINE_AXIS : BoxLayout.PAGE_AXIS));\r\n\t\tsetFloatable(false);\r\n\t\tsetRollover(true);\r\n\t\tgetSize();\r\n\t}\r\n\r\n\tpublic void addGlue() {\r\n\t\tadd(Box.createGlue());\r\n\t}\r\n\r\n\tpublic void addGlue(int width) {\r\n\t\tadd(new Box.Filler(new Dimension(width, 0), new Dimension(width, 0), new Dimension(Short.MAX_VALUE, Short.MAX_VALUE)));\r\n\t}\r\n\r\n\tpublic void add(JCheckBox jCheckBox) {\r\n\t\taddSpace(5);\r\n\t\tjCheckBox.setBorder(null);\r\n\t\tsuper.add(jCheckBox);\r\n\t\taddSpace(5);\r\n\t}\r\n\r\n\tpublic void add(final JComponent jComponent, int width) {\r\n\t\tif (width > 0) {\r\n\t\t\tsetSize(jComponent, width);\r\n\t\t}\r\n\t\tsuper.add(jComponent);\r\n\t}\r\n\r\n\tpublic void addPreferedSize(final JComponent jComponent) {\r\n\t\tint preferredWidth = jComponent.getPreferredSize().width;\r\n\t\tif (preferredWidth > 0) {\r\n\t\t\tsetSize(jComponent, preferredWidth);\r\n\t\t}\r\n\t\tsuper.add(jComponent);\r\n\t}\r\n\r\n\tpublic void addComboBox(final JComboBox<?> jComboBox, int width) {\r\n\t\tif (width > 0) {\r\n\t\t\tsetSize(jComboBox, width);\r\n\t\t}\r\n\t\tsuper.add(jComboBox);\r\n\t}\r\n\r\n\tpublic void addLabelIcon(final JLabel jButton) {\r\n\t\tDimension dimension = new Dimension(Program.getIconButtonsWidth(), Program.getButtonsHeight());\r\n\t\tjButton.setPreferredSize(dimension);\r\n\t\tjButton.setMaximumSize(dimension);\r\n\r\n\t\tjButton.setHorizontalAlignment(SwingConstants.CENTER);\r\n\t\tsuper.add(jButton);\r\n\t}\r\n\r\n\tpublic void addButtonIcon(final AbstractButton jButton) {\r\n\t\tDimension dimension = new Dimension(Program.getIconButtonsWidth(), Program.getButtonsHeight());\r\n\t\tjButton.setPreferredSize(dimension);\r\n\t\tjButton.setMaximumSize(dimension);\r\n\r\n\t\tjButton.setHorizontalAlignment(SwingConstants.CENTER);\r\n\t\tsuper.add(jButton);\r\n\t}\r\n\r\n\tpublic void addButton(final AbstractButton jButton) {\r\n\t\taddButton(jButton, 100, SwingConstants.LEFT);\r\n\t}\r\n\r\n\tpublic void addButton(final AbstractButton jButton, final int width, final int alignment) {\r\n\t\tif (width > 0) {\r\n\t\t\tsetSize(jButton, width);\r\n\t\t}\r\n\t\tjButton.setHorizontalAlignment(alignment);\r\n\t\tsuper.add(jButton);\r\n\t}\r\n\r\n\tpublic void addSpace(final int width) {\r\n\t\tsuper.add(Box.createRigidArea(new Dimension(width,0)));\r\n\t}\r\n\r\n\tprivate void setSize(JComponent jComponent, int width) {\r\n\t\tsetSize(jComponent, width, Program.getButtonsHeight());\r\n\t}\r\n\r\n\tprivate void setSize(final JComponent jComponent, final int width, final int height) {\r\n\t\tint preferredWidth = jComponent.getPreferredSize().width;\r\n\t\tDimension dimension;\r\n\t\tif (preferredWidth > width) {\r\n\t\t\tdimension = new Dimension(preferredWidth, height);\r\n\t\t} else {\r\n\t\t\tdimension = new Dimension(width, height);\r\n\t\t}\r\n\t\tjComponent.setPreferredSize(dimension);\r\n\t\tjComponent.setMaximumSize(dimension);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Dimension getPreferredSize() {\r\n\t\tif (orientation == Orientation.VERTICAL) {\r\n\t\t\treturn super.getPreferredSize();\r\n\t\t} else {\r\n\t\t\tif (height == null) {\r\n\t\t\t\theight = getInsets().top + getInsets().bottom + Program.getButtonsHeight();\r\n\t\t\t}\r\n\t\t\tDimension preferredSize = super.getPreferredSize();\r\n\t\t\treturn new Dimension(preferredSize.width, height);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JGroupLayoutPanel.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.components;\n\nimport javax.swing.GroupLayout;\nimport javax.swing.JPanel;\nimport net.nikr.eve.jeveasset.Program;\n\n\npublic abstract class JGroupLayoutPanel {\n\n\tprotected Program program;\n\tprotected GroupLayout layout;\n\tprivate JPanel jPanel;\n\n\tpublic JGroupLayoutPanel(final Program program) {\n\t\tthis.program = program;\n\n\t\tjPanel = new JPanel();\n\n\t\tlayout = new GroupLayout(jPanel);\n\t\tjPanel.setLayout(layout);\n\t\tlayout.setAutoCreateGaps(true);\n\t\tlayout.setAutoCreateContainerGaps(true);\n\t}\n\n\t/**\n\t *\n\t * @param load does nothing except change the signature.\n\t */\n\tprotected JGroupLayoutPanel(final boolean load) { }\n\n\tpublic JPanel getPanel() {\n\t\treturn jPanel;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JImportDialog.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.components;\r\n\r\nimport java.awt.Font;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport javax.swing.ButtonGroup;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JCheckBox;\r\nimport javax.swing.JComponent;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JRadioButton;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\npublic class JImportDialog extends JDialogCentered {\r\n\r\n\tprivate enum StockpileImportAction {\r\n\t\tOK,\r\n\t\tCANCEL\r\n\t}\r\n\r\n\tpublic enum ImportReturn {\r\n\t\tRENAME,\r\n\t\tRENAME_ALL,\r\n\t\tMERGE,\r\n\t\tMERGE_ALL,\r\n\t\tOVERWRITE,\r\n\t\tOVERWRITE_ALL,\r\n\t\tSKIP,\r\n\t\tSKIP_ALL,\r\n\t}\r\n\r\n\tprivate final JRadioButton jRename;\r\n\tprivate final JRadioButton jMerge;\r\n\tprivate final JRadioButton jOverwrite;\r\n\tprivate final JRadioButton jSkip;\r\n\tprivate final JLabel jName;\r\n\tprivate final JLabel jRenameLabel;\r\n\tprivate final JLabel jMergeLabel;\r\n\tprivate final JLabel jOverwriteLabel;\r\n\tprivate final JLabel jSkipLabel;\r\n\tprivate final JCheckBox jAll;\r\n\tprivate final JButton jOK;\r\n\tprivate final JButton jCancel;\r\n\tprivate final ListenerClass listenerClass;\r\n\tprivate final ImportOptions importOptions;\r\n\r\n\tprivate ImportReturn importReturn;\r\n\r\n\tpublic JImportDialog(Program program, ImportOptions importOptions) {\r\n\t\tsuper(program, GuiShared.get().importOptions());\r\n\t\tthis.importOptions = importOptions;\r\n\r\n\t\tlistenerClass = new ListenerClass();\r\n\r\n\t\tjName = new JLabel();\r\n\t\tjName.setFont(new Font(jName.getFont().getName(), Font.BOLD, jName.getFont().getSize() + 1));\r\n\t\tjRenameLabel = new JLabel(importOptions.getTextRenameHelp());\r\n\t\tjRename = new JRadioButton(GuiShared.get().importOptionsRename());\r\n\t\tjMergeLabel = new JLabel(importOptions.getTextMergeHelp());\r\n\t\tjMerge = new JRadioButton(GuiShared.get().importOptionsMerge());\r\n\t\tjOverwriteLabel = new JLabel(importOptions.getTextOverwriteHelp());\r\n\t\tjOverwrite = new JRadioButton(GuiShared.get().importOptionsOverwrite());\r\n\t\tjSkipLabel = new JLabel(importOptions.getTextSkipHelp());\r\n\t\tjSkip = new JRadioButton(GuiShared.get().importOptionsSkip());\r\n\r\n\t\tjRenameLabel.setVisible(importOptions.isRenameSupported());\r\n\t\tjRename.setVisible(importOptions.isRenameSupported());\r\n\t\tjMergeLabel.setVisible(importOptions.isMergeSupported());\r\n\t\tjMerge.setVisible(importOptions.isMergeSupported());\r\n\t\tjOverwriteLabel.setVisible(importOptions.isOverwriteSupported());\r\n\t\tjOverwrite.setVisible(importOptions.isOverwriteSupported());\r\n\t\tjSkipLabel.setVisible(importOptions.isSkipSupported());\r\n\t\tjSkip.setVisible(importOptions.isSkipSupported());\r\n\r\n\t\tButtonGroup buttonGroup = new ButtonGroup();\r\n\t\tbuttonGroup.add(jRename);\r\n\t\tbuttonGroup.add(jMerge);\r\n\t\tbuttonGroup.add(jOverwrite);\r\n\t\tbuttonGroup.add(jSkip);\r\n\r\n\t\tjAll = new JCheckBox();\r\n\r\n\t\tjOK = new JButton(GuiShared.get().ok());\r\n\t\tjOK.setActionCommand(StockpileImportAction.OK.name());\r\n\t\tjOK.addActionListener(listenerClass);\r\n\r\n\t\tjCancel = new JButton(GuiShared.get().cancel());\r\n\t\tjCancel.setActionCommand(StockpileImportAction.CANCEL.name());\r\n\t\tjCancel.addActionListener(listenerClass);\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.CENTER)\r\n\t\t\t\t.addComponent(jName)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t\t\t.addComponent(jRename)\r\n\t\t\t\t\t\t.addComponent(jMerge)\r\n\t\t\t\t\t\t.addComponent(jOverwrite)\r\n\t\t\t\t\t\t.addComponent(jSkip)\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addGap(20)\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t\t\t.addComponent(jRenameLabel)\r\n\t\t\t\t\t\t.addComponent(jMergeLabel)\r\n\t\t\t\t\t\t.addComponent(jOverwriteLabel)\r\n\t\t\t\t\t\t.addComponent(jSkipLabel)\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addComponent(jAll)\r\n\t\t\t\t\t.addGap(0, 0, Integer.MAX_VALUE)\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(jName, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t\t.addComponent(jRename, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jRenameLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t\t.addComponent(jMerge, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jMergeLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t\t.addComponent(jOverwrite, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jOverwriteLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t\t.addComponent(jSkip, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jSkipLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGap(20)\r\n\t\t\t\t.addComponent(jAll, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addGap(20)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\tpublic void resetToDefault() {\r\n\t\tjRename.setSelected(true);\r\n\t\tjAll.setSelected(false);\r\n\t}\r\n\r\n\tpublic ImportReturn show(String name, int count) {\r\n\t\tjName.setText(name);\r\n\t\tjAll.setText(importOptions.getTextAll(count));\r\n\t\tjAll.setEnabled(count > 1);\r\n\t\tsetVisible(true);\r\n\t\treturn importReturn;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JComponent getDefaultFocus() {\r\n\t\treturn jOK;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JButton getDefaultButton() {\r\n\t\treturn jOK;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void windowShown() { }\r\n\r\n\t@Override\r\n\tprotected void save() {\r\n\t\tselected(jRename, ImportReturn.RENAME, ImportReturn.RENAME_ALL);\r\n\t\tselected(jMerge, ImportReturn.MERGE, ImportReturn.MERGE_ALL);\r\n\t\tselected(jOverwrite, ImportReturn.OVERWRITE, ImportReturn.OVERWRITE_ALL);\r\n\t\tselected(jSkip, ImportReturn.SKIP, ImportReturn.SKIP_ALL);\r\n\t\tsetVisible(false);\r\n\t}\r\n\r\n\tprivate void selected(JRadioButton jRadioButton, ImportReturn single, ImportReturn all) {\r\n\t\tif (jRadioButton.isSelected()) {\r\n\t\t\tif (jAll.isSelected()) {\r\n\t\t\t\timportReturn = all;\r\n\t\t\t} else {\r\n\t\t\t\timportReturn = single;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener {\r\n\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\tif (StockpileImportAction.OK.name().equals(e.getActionCommand())) {\r\n\t\t\t\tsave();\r\n\t\t\t}\r\n\t\t\tif (StockpileImportAction.CANCEL.name().equals(e.getActionCommand())) {\r\n\t\t\t\timportReturn = ImportReturn.SKIP_ALL;\r\n\t\t\t\tsetVisible(false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static interface ImportOptions {\r\n\t\tpublic boolean isRenameSupported();\r\n\t\tpublic boolean isMergeSupported();\r\n\t\tpublic boolean isOverwriteSupported();\r\n\t\tpublic boolean isSkipSupported();\r\n\t\tpublic String getTextRenameHelp();\r\n\t\tpublic String getTextMergeHelp();\r\n\t\tpublic String getTextOverwriteHelp();\r\n\t\tpublic String getTextSkipHelp();\r\n\t\tpublic String getTextAll(int count);\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JIntegerField.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.components;\n\nimport net.nikr.eve.jeveasset.gui.shared.DocumentFactory;\nimport net.nikr.eve.jeveasset.gui.shared.DocumentFactory.ValueFlag;\n\n\npublic class JIntegerField extends JDefaultField {\n\n\tpublic JIntegerField() {\n\t\tthis(\"0\", ValueFlag.ANY_NUMBER);\n\t}\n\n\tpublic JIntegerField(ValueFlag flag) {\n\t\tthis(\"0\", flag);\n\t}\n\n\tpublic JIntegerField(final String defaultValue) {\n\t\tthis(defaultValue, ValueFlag.ANY_NUMBER);\n\t}\n\n\tpublic JIntegerField(final String defaultValue, ValueFlag flag) {\n\t\tsuper(defaultValue);\n\t\tthis.setDocument(DocumentFactory.getIntegerPlainDocument(flag));\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JLabelMultiline.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.components;\r\n\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JTextArea;\r\nimport net.nikr.eve.jeveasset.data.settings.Colors;\r\n\r\n\r\npublic class JLabelMultiline extends JTextArea {\r\n\r\n\tpublic JLabelMultiline(String text) {\r\n\t\tthis(text, text.trim().split(\"\\r\\n|\\r|\\n\").length);\r\n\t}\r\n\r\n\tpublic JLabelMultiline(String text, int rows) {\r\n\t\tsuper(text);\r\n\t\t//Init\r\n\t\tJLabel jLabel = new JLabel();\r\n\t\tsetFont(jLabel.getFont());\r\n\t\tsetBackground(Colors.COMPONENT_TRANSPARENT.getColor());\r\n\t\tsetLineWrap(true);\r\n\t\tsetWrapStyleWord(true);\r\n\t\tsetFocusable(false);\r\n\t\tsetEditable(false);\r\n\t\tsetOpaque(false);\r\n\t\tsetBorder(null);\r\n\t\tsetRows(rows);\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JLabelMultilineHtml.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.components;\r\n\r\nimport java.awt.Font;\r\nimport java.awt.Window;\r\nimport javax.swing.JEditorPane;\r\nimport javax.swing.JLabel;\r\nimport net.nikr.eve.jeveasset.data.settings.Colors;\r\nimport net.nikr.eve.jeveasset.io.shared.DesktopUtil;\r\n\r\n\r\npublic class JLabelMultilineHtml extends JEditorPane {\r\n\r\n\tprivate static Font font;\r\n\r\n\tpublic JLabelMultilineHtml(String text) {\r\n\t\tthis(null, text);\r\n\t}\r\n\r\n\tpublic JLabelMultilineHtml(Window parent) {\r\n\t\tthis(parent, \"\");\r\n\t}\r\n\r\n\tpublic JLabelMultilineHtml(Window parent, String text) {\r\n\t\tsuper(\"text/html\", text);\r\n\t\t//jHelp.setLineWrap(true);\r\n\t\t//jHelp.setWrapStyleWord(true);\r\n\t\taddHyperlinkListener(DesktopUtil.getHyperlinkListener(parent));\r\n\t\tsetFont( getLabelFont());\r\n\t\tsetEditable(false);\r\n\t\tsetOpaque(false);\r\n\t\tsetBackground(Colors.COMPONENT_TRANSPARENT.getColor());\r\n\t\tsetFocusable(false);\r\n\t}\r\n\r\n\tprivate Font getLabelFont() {\r\n\t\tif (font == null) {\r\n\t\t\tfont = new JLabel().getFont();\r\n\t\t}\r\n\t\treturn font;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setText(final String text) {\r\n\t\tsuper.setText(\"<html><body style=\\\"font-family: \" + getLabelFont().getName() + \"; font-size: \" + getLabelFont().getSize() + \"pt\\\">\"\r\n\t\t\t+ text\r\n\t\t\t+ \"</body></html>\");\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JLockWindow.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.components;\n\nimport java.awt.Dimension;\nimport java.awt.Window;\nimport java.util.concurrent.ExecutionException;\nimport javax.swing.BorderFactory;\nimport javax.swing.GroupLayout;\nimport javax.swing.JLabel;\nimport javax.swing.JPanel;\nimport javax.swing.JProgressBar;\nimport javax.swing.JWindow;\nimport javax.swing.SwingWorker;\n\n\npublic class JLockWindow {\n\n\tprivate final JWindow jWindow;\n\tprivate final JLabel jLabel;\n\tprivate final Window parent;\n\tprivate final JProgressBar jProgress;\n\n\tpublic JLockWindow(final Window parent) {\n\t\tthis.parent = parent;\n\t\tjWindow = new JWindow(parent);\n\n\t\tjProgress = new JProgressBar(0, 100);\n\n\t\tJPanel jPanel = new JPanel();\n\t\tjPanel.setBorder(BorderFactory.createRaisedBevelBorder());\n\t\tGroupLayout layout = new GroupLayout(jPanel);\n\t\tjPanel.setLayout(layout);\n\t\tlayout.setAutoCreateGaps(true);\n\t\tlayout.setAutoCreateContainerGaps(true);\n\t\tjWindow.add(jPanel);\n\n\t\tjLabel = new JLabel();\n\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.CENTER)\n\t\t\t\t.addComponent(jLabel)\n\t\t\t\t.addComponent(jProgress)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jLabel)\n\t\t\t\t.addComponent(jProgress)\n\t\t);\n\t}\n\n\tpublic void show(final String text, final LockWorker lockWorker) {\n\t\tjLabel.setText(text);\n\t\tjWindow.pack();\n\t\t//Get the parent size\n\t\tDimension parentSize = parent.getSize();\n\n\t\t//Calculate the frame location\n\t\tint x = (parentSize.width - jWindow.getWidth()) / 2;\n\t\tint y = (parentSize.height - jWindow.getHeight()) / 2;\n\n\t\t//Set the new frame location\n\t\tjWindow.setLocation(x, y);\n\t\tjWindow.setLocationRelativeTo(parent);\n\t\tparent.setEnabled(false);\n\t\tjProgress.setIndeterminate(false);\n\t\tjProgress.setIndeterminate(true);\n\t\tjWindow.setVisible(true); //Does not block!\n\t\tWait wait = new Wait(lockWorker);\n\t\twait.execute();\n\t}\n\n\tprivate void hide() {\n\t\tparent.setEnabled(true);\n\t\tjWindow.setVisible(false);\n\t}\n\n\tclass Wait extends SwingWorker<Void, Void>{\n\n\t\tprivate final LockWorker worker;\n\n\t\tpublic Wait(LockWorker worker) {\n\t\t\tthis.worker = worker;\n\t\t}\n\n\t\t@Override\n\t\tprotected Void doInBackground() throws Exception {\n\t\t\tworker.task();\n\t\t\treturn null;\n\t\t}\n\n\t\t@Override\n\t\tprotected void done() {\n\t\t\tworker.gui();\n\t\t\thide();\n\t\t\tworker.hidden();\n\t\t\ttry {\n\t\t\t\tget();\n\t\t\t} catch (InterruptedException | ExecutionException ex) {\n\t\t\t\tthrow new RuntimeException(ex);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static interface LockWorker {\n\t\tpublic void task();\n\t\tpublic void gui();\n\t\tpublic void hidden();\n\t}\n\n\tpublic static class LockWorkerAdaptor implements LockWorker {\n\t\t@Override public void task() {}\n\t\t@Override public void gui() {}\n\t\t@Override public void hidden() {}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JMainTab.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.components;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.gui.TableFormat;\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport ca.odell.glazedlists.swing.TableComparatorChooser;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Set;\nimport javax.swing.GroupLayout;\nimport javax.swing.Icon;\nimport javax.swing.JComponent;\nimport javax.swing.JLabel;\nimport javax.swing.JMenu;\nimport javax.swing.JPanel;\nimport javax.swing.JPopupMenu;\nimport javax.swing.ListSelectionModel;\nimport javax.swing.table.TableModel;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.SettingsUpdateListener;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;\nimport net.nikr.eve.jeveasset.gui.shared.table.ColumnManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\nimport net.nikr.eve.jeveasset.gui.shared.table.JSeparatorTable;\n\n\npublic abstract class JMainTab {\n\n\tprivate String title;\n\tprivate Icon icon;\n\tprivate boolean closeable;\n\tprivate final List<JLabel> statusbarLabels = new ArrayList<>();\n\tprotected Program program;\n\tprotected JPanel jPanel;\n\tprotected GroupLayout layout;\n\tprivate JAutoColumnTable jTable;\n\tprivate DefaultEventSelectionModel<?> eventSelectionModel;\n\tprivate DefaultEventTableModel<?> eventTableModel;\n\tprivate FilterControl<?> filterControl;\n\tprivate TableComparatorChooser<?> comparatorChooser;\n\tprivate List<Object> selected;\n\tprivate int[] selectedColumns;\n\tprivate String toolName;\n\tprivate Class<?> clazz;\n\tprivate boolean sortLock = false;\n\tprotected JMainTab(final boolean load) { }\n\n\tpublic JMainTab(final Program program, final String toolName, final String title, final Icon icon, final boolean closeable) {\n\t\tthis.program = program;\n\t\tthis.toolName = toolName;\n\t\tthis.title = title;\n\t\tthis.icon = icon;\n\t\tthis.closeable = closeable;\n\n\t\tprogram.addMainTab(toolName, this);\n\n\t\tjPanel = new JPanel();\n\n\t\tlayout = new GroupLayout(jPanel);\n\t\tjPanel.setLayout(layout);\n\t\tlayout.setAutoCreateGaps(true);\n\t\tlayout.setAutoCreateContainerGaps(true);\n\t}\n\n\tpublic final <T extends Enum<T> & EnumTableColumn<Q>, Q> void installTableTool(final TableMenu<Q> tableMenu, EnumTableFormatAdaptor<T, Q> tableFormat, TableComparatorChooser<Q> comparatorChooser, DefaultEventTableModel<Q> tableModel, JAutoColumnTable jTable, EventList<Q> eventList, final Class<Q> clazz) {\n\t\tinstallTableTool(tableMenu, tableFormat, comparatorChooser, tableModel, jTable, eventList, null, clazz);\n\t}\n\n\tpublic final <T extends Enum<T> & EnumTableColumn<Q>, Q> void installTableTool(final TableMenu<Q> tableMenu, EnumTableFormatAdaptor<T, Q> tableFormat, TableComparatorChooser<Q> comparatorChooser, DefaultEventTableModel<Q> tableModel, JAutoColumnTable jTable, FilterControl<Q> filterControl, final Class<Q> clazz) {\n\t\tinstallTableTool(tableMenu, tableFormat, comparatorChooser, tableModel, jTable, filterControl.getEventList(), filterControl, clazz);\n\t}\n\n\tprivate <T extends Enum<T> & EnumTableColumn<Q>, Q> void installTableTool(final TableMenu<Q> tableMenu, EnumTableFormatAdaptor<T, Q> tableFormat, TableComparatorChooser<Q> comparatorChooser, DefaultEventTableModel<Q> tableModel, JAutoColumnTable jTable, EventList<Q> eventList, FilterControl<Q> filterControl, final Class<Q> clazz) {\n\t\tthis.clazz = clazz;\n\t\tthis.comparatorChooser = comparatorChooser; //Can be null\n\t\tMenuManager.install(program, tableMenu, jTable, new ColumnManager<>(program, toolName, tableFormat, tableModel, jTable, eventList, filterControl), clazz);\n\t\tif(filterControl != null && toolName != null && !toolName.isEmpty()) {\n\t\t\tfilterControl.clearCurrentFilters();\n\t\t\tfilterControl.addFilters(Settings.get().getCurrentTableFilters(toolName));\n\t\t\tfilterControl.setFilterShown(Settings.get().getCurrentTableFiltersShown(toolName));\n\t\t\tSettingsUpdateListener listener = new ListenerClass();\n\t\t\tfilterControl.getSettingsUpdateListenerList().add(listener);\n\t\t\tthis.filterControl = filterControl;\n\t\t}\n\t\tif (comparatorChooser != null) { //Save current sorting\n\t\t\tcomparatorChooser.addSortActionListener(new ActionListener() {\n\t\t\t\t@Override\n\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\tif (sortLock) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tSettings.lock(\"Current Sorting\");\n\t\t\t\t\tSettings.get().getCurrentTableSorting().put(toolName, comparatorChooser.toString());\n\t\t\t\t\tSettings.unlock(\"Current Sorting\");\n\t\t\t\t\tprogram.saveSettings(\"Current Sorting\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Restore sorting from settings\n\t */\n\tpublic void loadCurrentSorting() {\n\t\tsetSorting(Settings.get().getCurrentTableSorting(toolName), false);\n\t}\n\n\t/**\n\t * Set sorting - does not save the new sorting\n\t * @param sorting \n\t * @param save Save settings\n\t */\n\tprivate void setSorting(String sorting, boolean save) {\n\t\tif (comparatorChooser != null && sorting != null && !sorting.isEmpty()) { //Load sorting\n\t\t\ttry {\n\t\t\t\tsortLock = true;\n\t\t\t\tcomparatorChooser.fromString(sorting);\n\t\t\t} finally {\n\t\t\t\tsortLock = false;\n\t\t\t}\n\t\t\tif (save) {\n\t\t\t\tSettings.lock(\"Set Sorting\");\n\t\t\t\tSettings.get().getCurrentTableSorting().put(toolName, comparatorChooser.toString());\n\t\t\t\tSettings.unlock(\"SetSorting\");\n\t\t\t\tprogram.saveSettings(\"Set Sorting\");\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Supports sorting\n\t * @return \n\t */\n\tpublic boolean isSortingSupported() {\n\t\treturn comparatorChooser != null;\n\t}\n\n\tpublic void updateTableMenu() {\n\t\tMenuManager.update(program ,clazz);\n\t}\n\n\tpublic void createTableMenu() {\n\t\tMenuManager.create(program ,clazz);\n\t}\n\n\tpublic void tableStructureChanged() {\n\t\tif (eventTableModel != null && jTable != null) {\n\t\t\teventTableModel.fireTableStructureChanged();\n\t\t\tjTable.autoResizeColumns();\n\t\t}\n\t}\n\n\tpublic void tableDataChanged() {\n\t\tbeforeUpdateDataKeepCache();\n\t\tif (eventTableModel != null) {\n\t\t\teventTableModel.fireTableDataChanged();\n\t\t}\n\t\tafterUpdateData();\n\t}\n\n\tpublic void repaintTable() {\n\t\tif (jTable != null) {\n\t\t\tjTable.repaint();\n\t\t}\n\t\trepaintFilters();\n\t}\n\n\tpublic void repaintFilters() {\n\t\tif (filterControl != null) {\n\t\t\tfilterControl.repaint();\n\t\t}\n\t}\n\n\tpublic final void saveSettings() {\n\t\t//Save Settings\n\t\tif (eventTableModel != null && jTable != null && toolName != null) {\n\t\t\tTableFormat<?> tableFormat = eventTableModel.getTableFormat();\n\t\t\tif (tableFormat instanceof EnumTableFormatAdaptor) {\n\t\t\t\tEnumTableFormatAdaptor<?, ?> formatAdaptor = (EnumTableFormatAdaptor<?, ?>) tableFormat;\n\t\t\t\tSettings.get().getTableColumns().put(toolName, formatAdaptor.getColumns());\n\t\t\t\tSettings.get().getTableResize().put(toolName, formatAdaptor.getResizeMode());\n\t\t\t\tSettings.get().getTableColumnsWidth().put(toolName, jTable.getColumnsWidth());\n\t\t\t\tif(filterControl != null) {\n\t\t\t\t\tSettings.get().getCurrentTableFilters().put(toolName, filterControl.getCurrentFilters());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic final synchronized void addStatusbarLabel(final JLabel jLabel) {\n\t\tstatusbarLabels.add(jLabel);\n\t}\n\n\tpublic final synchronized void clearStatusbarLabels() {\n\t\tstatusbarLabels.clear();\n\t}\n\n\tpublic synchronized List<JLabel> getStatusbarLabels() {\n\t\treturn new ArrayList<>(statusbarLabels); //Copy\n\t}\n\n\tpublic final void beforeUpdateData() {\n\t\tbeforeUpdateData(true);\n\t}\n\n\tpublic final void beforeUpdateDataKeepCache() {\n\t\tbeforeUpdateData(false);\n\t}\n\n\tprivate void beforeUpdateData(boolean resetFormulaCache) {\n\t\tif (eventSelectionModel != null) {\n\t\t\tselected = new ArrayList<>(eventSelectionModel.getSelected());\n\t\t}\n\t\tif (jTable != null) {\n\t\t\tselectedColumns = jTable.getColumnModel().getSelectedColumns();\n\t\t\tjTable.lock();\n\t\t} else {\n\t\t\tselectedColumns = null;\n\t\t}\n\t\tif (jTable instanceof JSeparatorTable) {\n\t\t\tJSeparatorTable jSeparatorTable = (JSeparatorTable) jTable;\n\t\t\tjSeparatorTable.saveExpandedState();\n\t\t}\n\t\tif (resetFormulaCache) {\n\t\t\tMenuManager.updateFormula(clazz);\n\t\t} else {\n\t\t\tMenuManager.lock(clazz);\n\t\t}\n\t}\n\n\tpublic final void afterUpdateData() {\n\t\tMenuManager.updateJumps(clazz);\n\t\tMenuManager.unlock(clazz);\n\t\tif (eventSelectionModel != null && eventTableModel != null && selected != null) {\n\t\t\teventSelectionModel.setValueIsAdjusting(true);\n\t\t\tfor (int i = 0; i < eventTableModel.getRowCount(); i++) {\n\t\t\t\tObject object = eventTableModel.getElementAt(i);\n\t\t\t\tif (selected.contains(object)) {\n\t\t\t\t\teventSelectionModel.addSelectionInterval(i, i);\n\t\t\t\t}\n\t\t\t}\n\t\t\teventSelectionModel.setValueIsAdjusting(false);\n\t\t\tselected = null;\n\t\t}\n\t\tif (selectedColumns != null && jTable != null) {\n\t\t\tfor (int index : selectedColumns) {\n\t\t\t\tjTable.getColumnModel().getSelectionModel().addSelectionInterval(index, index);\n\t\t\t}\n\t\t}\n\t\tif (jTable != null) {\n\t\t\tjTable.unlock();\n\t\t}\n\t\tif (jTable instanceof JSeparatorTable) {\n\t\t\tJSeparatorTable jSeparatorTable = (JSeparatorTable) jTable;\n\t\t\tjSeparatorTable.loadExpandedState();\n\t\t}\n\t}\n\n\tpublic abstract void updateNames(Set<Long> itemIDs);\n\tpublic abstract void updateLocations(Set<Long> locationIDs);\n\tpublic abstract void updatePrices(Set<Integer> typeIDs);\n\tpublic abstract void updateData();\n\tpublic abstract void updateCache();\n\tpublic abstract void clearData();\n\tpublic abstract Collection<LocationType> getLocations();\n\n\tpublic final Icon getIcon() {\n\t\treturn icon;\n\t}\n\n\tpublic JPanel getPanel() {\n\t\treturn jPanel;\n\t}\n\n\tpublic String getTitle() {\n\t\treturn title;\n\t}\n\n\tpublic boolean isCloseable() {\n\t\treturn closeable;\n\t}\n\n\tprotected void addSeparator(final JComponent jComponent) {\n\t\tif (jComponent instanceof JMenu) {\n\t\t\tJMenu jMenu = (JMenu) jComponent;\n\t\t\tjMenu.addSeparator();\n\t\t}\n\t\tif (jComponent instanceof JPopupMenu) {\n\t\t\tJPopupMenu jPopupMenu = (JPopupMenu) jComponent;\n\t\t\tjPopupMenu.addSeparator();\n\t\t}\n\t\tif (jComponent instanceof JDropDownButton) {\n\t\t\tJDropDownButton jDropDownButton = (JDropDownButton) jComponent;\n\t\t\tjDropDownButton.addSeparator();\n\t\t}\n\t}\n\n\t/**\n\t * Table automation\n\t * 1. Saving table settings (TableColumns, TableResize, TableColumnsWidth)\n\t * 2. Restore table selection after update\n\t * 3. Restore expanded state for JSeparatorTable after update\n\t * 4. Lock/unlock table doing update\n\t *\n\t * @param jTable\n\t */\n\tprotected final void installTable(final JAutoColumnTable jTable) {\n\t\t//Table Selection\n\t\tListSelectionModel selectionModel = jTable.getSelectionModel();\n\t\tif (selectionModel instanceof DefaultEventSelectionModel) {\n\t\t\tthis.eventSelectionModel = (DefaultEventSelectionModel<?>) selectionModel;\n\t\t}\n\t\tTableModel tableModel = jTable.getModel();\n\t\tif (tableModel instanceof DefaultEventTableModel) {\n\t\t\tthis.eventTableModel = (DefaultEventTableModel<?>) tableModel;\n\t\t}\n\n\t\t//Table lock\n\t\tthis.jTable = jTable;\n\n\t\t//Load Settings\n\t\tif (eventTableModel != null && toolName != null) {\n\t\t\tTableFormat<?> tableFormat = eventTableModel.getTableFormat();\n\t\t\tif (tableFormat instanceof EnumTableFormatAdaptor) {\n\t\t\t\tEnumTableFormatAdaptor<?, ?> formatAdaptor = (EnumTableFormatAdaptor<?, ?>) tableFormat;\n\t\t\t\tformatAdaptor.setColumns(Settings.get().getTableColumns().get(toolName));\n\t\t\t\tformatAdaptor.setResizeMode(Settings.get().getTableResize().get(toolName));\n\t\t\t\tjTable.setColumnsWidth(Settings.get().getTableColumnsWidth().get(toolName));\n\t\t\t\teventTableModel.fireTableStructureChanged();\n\t\t\t}\n\t\t}\n\t}\n\n\t/***\n\t * Inner class to define the listener for settings updates and perform actions when the event fires.\n\t */\n\tprivate class ListenerClass implements SettingsUpdateListener {\n\t\t@Override\n\t\tpublic void settingChanged() {\n\t\t\t//Shows in a primitive so we need to update it before saving\n\t\t\tprogram.saveSettings(\"Save current filter change.\");\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JMainTabPrimary.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.components;\r\n\r\nimport java.util.Set;\r\nimport javax.swing.Icon;\r\nimport net.nikr.eve.jeveasset.Program;\r\n\r\n\r\npublic abstract class JMainTabPrimary extends JMainTab {\r\n\r\n\tpublic JMainTabPrimary(Program program, final String toolName, String title, Icon icon, boolean closeable) {\r\n\t\tsuper(program, toolName, title, icon, closeable);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void updateNames(Set<Long> itemIDs) { }\r\n\r\n\t@Override\r\n\tpublic void updateLocations(Set<Long> locationIDs) { }\r\n\r\n\t@Override\r\n\tpublic void updatePrices(Set<Integer> typeIDs) { }\r\n\r\n\t@Override\r\n\tpublic void updateData() { }\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JMainTabSecondary.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.components;\r\n\r\nimport java.util.Set;\r\nimport javax.swing.Icon;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.gui.tabs.tree.TreeTab;\r\n\r\n\r\npublic abstract class JMainTabSecondary extends JMainTab {\r\n\r\n\tpublic JMainTabSecondary(Program program, final String toolName, String title, Icon icon, boolean closeable) {\r\n\t\tsuper(program, toolName, title, icon, closeable);\r\n\t}\r\n\r\n\tpublic JMainTabSecondary(final boolean load) {\r\n\t\tsuper(false);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void updateNames(Set<Long> itemIDs) {\r\n\t\tif (this instanceof TreeTab) {\r\n\t\t\tupdateData();\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void updateLocations(Set<Long> locationIDs) {\r\n\t\tupdateData();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void updatePrices(Set<Integer> typeIDs) {\r\n\t\tupdateData();\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JManagerDialog.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.components;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.awt.event.MouseEvent;\r\nimport java.awt.event.MouseListener;\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\nimport java.util.Collections;\r\nimport java.util.List;\r\nimport javax.swing.DefaultListModel;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JComponent;\r\nimport javax.swing.JFrame;\r\nimport javax.swing.JList;\r\nimport javax.swing.JOptionPane;\r\nimport javax.swing.JScrollPane;\r\nimport javax.swing.SwingConstants;\r\nimport javax.swing.event.ListSelectionEvent;\r\nimport javax.swing.event.ListSelectionListener;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.StringComparators;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\npublic abstract class JManagerDialog extends JDialogCentered {\r\n\r\n\tprivate enum ManageDialogAction {\r\n\t\tDONE,\r\n\t\tLOAD,\r\n\t\tEDIT,\r\n\t\tMERGE,\r\n\t\tCOPY,\r\n\t\tRENAME,\r\n\t\tDELETE,\r\n\t\tEXPORT,\r\n\t\tIMPORT\r\n\t}\r\n\r\n\tprivate final DefaultListModel<String> listModel;\r\n\tprivate final JList<String> jList;\r\n\tprivate final JAutoCompleteDialog<String> jSaveDialog;\r\n\tprivate final JButton jDelete;\r\n\tprivate final JButton jLoad;\r\n\tprivate final JButton jEdit;\r\n\tprivate final JButton jMerge;\r\n\tprivate final JButton jCopy;\r\n\tprivate final JButton jRename;\r\n\tprivate final JButton jExport;\r\n\tprivate final JButton jImport;\r\n\tprivate final JButton jClose;\r\n\tprivate final boolean mergeReplaceLoad;\r\n\tprivate final boolean mergeReplaceEdit;\r\n\r\n\tpublic JManagerDialog(Program program, JFrame jFrame, String title, boolean supportLoad, boolean supportEdit, boolean supportCopy, boolean supportMerge, boolean supportExport) {\r\n\t\tsuper(program, title, jFrame, Images.DIALOG_SETTINGS.getImage());\r\n\t\tmergeReplaceLoad = supportLoad && supportMerge && !supportEdit;\r\n\t\tmergeReplaceEdit = !supportLoad && supportMerge && supportEdit;\r\n\r\n\t\tListenerClass listener = new ListenerClass();\r\n\r\n\t\tjSaveDialog = new JAutoCompleteDialog<>(program, \"\", getDialog(), Images.DIALOG_SETTINGS.getImage(), textEnterName(), false, false, JAutoCompleteDialog.STRING_OPTIONS);\r\n\r\n\t\t//Load\r\n\t\tjLoad = new JButton(GuiShared.get().managerLoad(), Images.FILTER_LOAD.getIcon());\r\n\t\tjLoad.setActionCommand(ManageDialogAction.LOAD.name());\r\n\t\tjLoad.addActionListener(listener);\r\n\t\tjLoad.setVisible(supportLoad);\r\n\t\tjLoad.setHorizontalAlignment(SwingConstants.LEFT);\r\n\r\n\t\t//Edit\r\n\t\tjEdit = new JButton(GuiShared.get().managerEdit(), Images.EDIT_EDIT.getIcon());\r\n\t\tjEdit.setActionCommand(ManageDialogAction.EDIT.name());\r\n\t\tjEdit.addActionListener(listener);\r\n\t\tjEdit.setVisible(supportEdit);\r\n\t\tjEdit.setHorizontalAlignment(SwingConstants.LEFT);\r\n\r\n\t\t//Merge\r\n\t\tjMerge = new JButton(GuiShared.get().managerMerge(), Images.EDIT_ADD.getIcon());\r\n\t\tjMerge.setActionCommand(ManageDialogAction.MERGE.name());\r\n\t\tjMerge.addActionListener(listener);\r\n\t\tjMerge.setVisible(supportMerge && !mergeReplaceLoad && !mergeReplaceEdit);\r\n\t\tjMerge.setHorizontalAlignment(SwingConstants.LEFT);\r\n\r\n\t\t//Copy\r\n\t\tjCopy = new JButton(GuiShared.get().managerCopy(), Images.EDIT_COPY.getIcon());\r\n\t\tjCopy.setActionCommand(ManageDialogAction.COPY.name());\r\n\t\tjCopy.addActionListener(listener);\r\n\t\tjCopy.setVisible(supportCopy);\r\n\t\tjCopy.setHorizontalAlignment(SwingConstants.LEFT);\r\n\r\n\t\t//Rename\r\n\t\tjRename = new JButton(GuiShared.get().managerRename(), Images.EDIT_RENAME.getIcon());\r\n\t\tjRename.setActionCommand(ManageDialogAction.RENAME.name());\r\n\t\tjRename.addActionListener(listener);\r\n\t\tjRename.setHorizontalAlignment(SwingConstants.LEFT);\r\n\r\n\t\t//Delete\r\n\t\tjDelete = new JButton(GuiShared.get().managerDelete(), Images.EDIT_DELETE.getIcon());\r\n\t\tjDelete.setActionCommand(ManageDialogAction.DELETE.name());\r\n\t\tjDelete.addActionListener(listener);\r\n\t\tjDelete.setHorizontalAlignment(SwingConstants.LEFT);\r\n\r\n\t\t//Export\r\n\t\tjExport = new JButton(GuiShared.get().managerExport(), Images.DIALOG_CSV_EXPORT.getIcon());\r\n\t\tjExport.setActionCommand(ManageDialogAction.EXPORT.name());\r\n\t\tjExport.addActionListener(listener);\r\n\t\tjExport.setVisible(supportExport);\r\n\t\tjExport.setHorizontalAlignment(SwingConstants.LEFT);\r\n\r\n\t\t//Import\r\n\t\tjImport = new JButton(GuiShared.get().managerImport(), Images.EDIT_IMPORT.getIcon());\r\n\t\tjImport.setActionCommand(ManageDialogAction.IMPORT.name());\r\n\t\tjImport.addActionListener(listener);\r\n\t\tjImport.setVisible(supportExport);\r\n\t\tjImport.setHorizontalAlignment(SwingConstants.LEFT);\r\n\r\n\t\t//Done\r\n\t\tjClose = new JButton(GuiShared.get().managerClose());\r\n\t\tjClose.setActionCommand(ManageDialogAction.DONE.name());\r\n\t\tjClose.addActionListener(listener);\r\n\r\n\t\t//List\r\n\t\tlistModel = new DefaultListModel<>();\r\n\t\tjList = new JList<>(listModel);\r\n\t\tjList.addMouseListener(listener);\r\n\t\tjList.addListSelectionListener(listener);\r\n\t\tJScrollPane jScrollPanel = new JScrollPane(jList);\r\n\t\tjPanel.add(jScrollPanel);\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(jScrollPanel, 175, 175, 175)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jLoad, 100, 100, 100)\r\n\t\t\t\t\t.addComponent(jEdit, 100, 100, 100)\r\n\t\t\t\t\t.addComponent(jMerge, 100, 100, 100)\r\n\t\t\t\t\t.addComponent(jCopy, 100, 100, 100)\r\n\t\t\t\t\t.addComponent(jRename, 100, 100, 100)\r\n\t\t\t\t\t.addComponent(jDelete, 100, 100, 100)\r\n\t\t\t\t\t.addComponent(jExport, 100, 100, 100)\r\n\t\t\t\t\t.addComponent(jImport, 100, 100, 100)\r\n\t\t\t\t\t.addComponent(jClose, 100, 100, 100)\r\n\t\t\t\t)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createParallelGroup()\r\n\t\t\t\t.addComponent(jScrollPanel, 250, 250, 250)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addComponent(jLoad, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jEdit, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jMerge, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jCopy, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jRename, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jDelete, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addGap(15, 15, 15)\r\n\t\t\t\t\t.addComponent(jExport, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jImport, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addGap(0, 0, Integer.MAX_VALUE)\r\n\t\t\t\t\t.addComponent(jClose, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\tprivate String getSelectedString() {\r\n\t\tint selectedIndex = jList.getSelectedIndex();\r\n\t\tif (selectedIndex != -1) {\r\n\t\t\treturn listModel.get(jList.getSelectedIndex());\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void setEnabledAll(boolean b) {\r\n\t\tjLoad.setEnabled(b);\r\n\t\tjEdit.setEnabled(b);\r\n\t\tjMerge.setEnabled(b);\r\n\t\tjRename.setEnabled(b);\r\n\t\tjCopy.setEnabled(b);\r\n\t\tjDelete.setEnabled(b);\r\n\t\tjExport.setEnabled(b);\r\n\t}\r\n\r\n\tprotected final void update(Collection<String> list) {\r\n\t\tupdate(new ArrayList<>(list));\r\n\t}\r\n\r\n\tprotected final void update(List<String> list) {\r\n\t\tjSaveDialog.updateData(list);\r\n\t\tlistModel.clear();\r\n\t\tCollections.sort(list, StringComparators.CASE_INSENSITIVE);\r\n\t\tfor (String filter: list) {\r\n\t\t\tlistModel.addElement(filter);\r\n\t\t}\r\n\t\tif (!listModel.isEmpty()) {\r\n\t\t\tif (getSelectedString() == null) {\r\n\t\t\t\tjList.setSelectedIndex(0);\r\n\t\t\t}\r\n\t\t\tsetEnabledAll(true);\r\n\t\t} else {\r\n\t\t\tsetEnabledAll(false);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected boolean validateName(final String name, final String oldName, final String title) {\r\n\t\tif (listModel.contains(name) && (oldName.isEmpty() || !oldName.equals(name))) {\r\n\t\t\tint nReturn = JOptionPane.showConfirmDialog(this.getDialog(), GuiShared.get().overwrite(), textOverwrite(), JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE);\r\n\t\t\tif (nReturn == JOptionPane.NO_OPTION) { //Overwrite cancelled\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JComponent getDefaultFocus() {\r\n\t\treturn jList;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JButton getDefaultButton() {\r\n\t\treturn jClose;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void windowShown() { }\r\n\r\n\t@Override\r\n\tprotected void save() {\r\n\t\tthis.setVisible(false);\r\n\t}\r\n\r\n\tprotected abstract void load(final String name);\r\n\tprotected abstract void edit(final String name);\r\n\tprotected abstract void merge(final String name, final List<String> list);\r\n\tprotected abstract void copy(final String fromName, final String toName);\r\n\tprotected abstract void rename(final String name, final String oldName);\r\n\tprotected abstract void delete(final List<String> list);\r\n\tprotected abstract void export(final List<String> list);\r\n\tprotected abstract void importData();\r\n\tprotected abstract String textDeleteMultipleMsg(int size);\r\n\tprotected abstract String textDelete();\r\n\tprotected abstract String textEnterName();\r\n\tprotected abstract String textMerge();\r\n\tprotected abstract String textRename();\r\n\tprotected abstract String textOverwrite();\r\n\r\n\tprivate void delete() {\r\n\t\tList<String> list = new ArrayList<>();\r\n\t\tfor (int index : jList.getSelectedIndices()) {\r\n\t\t\tString filterName = listModel.get(index);\r\n\t\t\tlist.add(filterName);\r\n\t\t}\r\n\t\tint value;\r\n\t\tif (list.size() > 1) {\r\n\t\t\tvalue = JOptionPane.showConfirmDialog(this.getDialog(), textDeleteMultipleMsg(list.size()), textDelete(), JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE);\r\n\t\t} else if (list.size() == 1) {\r\n\t\t\tvalue = JOptionPane.showConfirmDialog(this.getDialog(), list.get(0), textDelete(), JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE);\r\n\t\t} else {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (value == JOptionPane.YES_OPTION) {\r\n\t\t\tdelete(list);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void export() {\r\n\t\tList<String> list = new ArrayList<>();\r\n\t\tfor (int index : jList.getSelectedIndices()) {\r\n\t\t\tString filterName = listModel.get(index);\r\n\t\t\tlist.add(filterName);\r\n\t\t}\r\n\t\texport(list);\r\n\t}\r\n\r\n\tprivate void load() {\r\n\t\tString name = getSelectedString();\r\n\t\tif (name == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tload(name);\r\n\t}\r\n\r\n\tprivate void edit() {\r\n\t\tString name = getSelectedString();\r\n\t\tif (name == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tedit(name);\r\n\t}\r\n\r\n\tprivate void merge() {\r\n\t\tString name = showNameDialog(\"\", \"\", textMerge());\r\n\t\tif (name == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tList<String> list = new ArrayList<>();\r\n\t\tfor (int index : jList.getSelectedIndices()) {\r\n\t\t\tString filterName = listModel.get(index);\r\n\t\t\tlist.add(filterName);\r\n\t\t}\r\n\t\tmerge(name, list);\r\n\t}\r\n\r\n\tprivate void copy() {\r\n\t\tString fromName = getSelectedString();\r\n\t\tif (fromName == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tString toName = showNameDialog(\"\", \"\", textEnterName());\r\n\t\tif (toName == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tcopy(fromName, toName);\r\n\t}\r\n\r\n\tprivate String showNameDialog(final String oldValue, final String oldName, final String title) {\r\n\t\t//Show dialog\r\n\t\tjSaveDialog.getDialog().setTitle(title);\r\n\t\tString name = jSaveDialog.show(oldValue);\r\n\t\tif (name == null) { //Cancel (do nothing)\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (!validateName(name, oldName, title)) {\r\n\t\t\treturn showNameDialog(name, oldName, title);\r\n\t\t}\r\n\t\treturn name;\r\n\t}\r\n\r\n\tprivate void rename() {\r\n\t\t//Get selected filter name\r\n\t\tString selectedName = getSelectedString();\r\n\t\tif (selectedName == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tString name = showNameDialog(selectedName, selectedName, textRename());\r\n\t\tif (name == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\trename(name, selectedName);\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener, MouseListener, ListSelectionListener {\r\n\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\tif (ManageDialogAction.DONE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tsave();\r\n\t\t\t} else if (ManageDialogAction.LOAD.name().equals(e.getActionCommand())) {\r\n\t\t\t\tload();\r\n\t\t\t} else if (ManageDialogAction.EDIT.name().equals(e.getActionCommand())) {\r\n\t\t\t\tedit();\r\n\t\t\t} else if (ManageDialogAction.MERGE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tmerge();\r\n\t\t\t} else if (ManageDialogAction.COPY.name().equals(e.getActionCommand())) {\r\n\t\t\t\tcopy();\r\n\t\t\t} else if (ManageDialogAction.RENAME.name().equals(e.getActionCommand())) {\r\n\t\t\t\trename();\r\n\t\t\t} else if (ManageDialogAction.DELETE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tdelete();\r\n\t\t\t} else if (ManageDialogAction.EXPORT.name().equals(e.getActionCommand())) {\r\n\t\t\t\texport();\r\n\t\t\t} else if (ManageDialogAction.IMPORT.name().equals(e.getActionCommand())) {\r\n\t\t\t\timportData();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void mouseClicked(final MouseEvent e) {\r\n\t\t\tObject o = e.getSource();\r\n\t\t\tif (o instanceof JList && e.getClickCount() == 2\r\n\t\t\t\t\t&& !e.isControlDown() && !e.isShiftDown()) {\r\n\t\t\t\tload();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void mousePressed(final MouseEvent e) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void mouseReleased(final MouseEvent e) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void mouseEntered(final MouseEvent e) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void mouseExited(final MouseEvent e) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void valueChanged(final ListSelectionEvent e) {\r\n\t\t\tboolean greatThanZero = jList.getSelectedIndices().length > 0;\r\n\t\t\tboolean greatThanOne = jList.getSelectedIndices().length > 1;\r\n\t\t\tboolean equalToOne = jList.getSelectedIndices().length == 1;\r\n\t\t\tjLoad.setEnabled(equalToOne);\r\n\t\t\tjEdit.setEnabled(equalToOne);\r\n\t\t\tjMerge.setEnabled(greatThanOne);\r\n\t\t\tjCopy.setEnabled(equalToOne);\r\n\t\t\tjRename.setEnabled(equalToOne);\r\n\t\t\tjDelete.setEnabled(greatThanZero);\r\n\t\t\tjExport.setEnabled(greatThanZero);\r\n\t\t\tif (mergeReplaceLoad) {\r\n\t\t\t\tjMerge.setVisible(greatThanOne);\r\n\t\t\t\tjLoad.setVisible(!greatThanOne);\r\n\t\t\t}\r\n\t\t\tif (mergeReplaceEdit) {\r\n\t\t\t\tjMerge.setVisible(greatThanOne);\r\n\t\t\t\tjEdit.setVisible(!greatThanOne);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JMultiSelectionDialog.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.components;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\nimport java.util.List;\r\nimport javax.swing.AbstractListModel;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JCheckBox;\r\nimport javax.swing.JComponent;\r\nimport javax.swing.JScrollPane;\r\nimport javax.swing.event.ListSelectionEvent;\r\nimport javax.swing.event.ListSelectionListener;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\npublic class JMultiSelectionDialog<T> extends JDialogCentered {\r\n\r\n\tprivate enum MultiSelectionActions {\r\n\t\tOK, CANCEL, CHECK_ALL, SUBSET\r\n\t}\r\n\r\n\t//GUI\r\n\tprivate final JCheckBox jAll;\r\n\tprivate final JCheckBox jSubset;\r\n\tprivate final JMultiSelectionList<T> jList;\r\n\tprivate final JButton jOK;\r\n\r\n\t//Data\r\n\tprivate List<T> data;\r\n\tprivate List<T> list;\r\n\tprivate List<T> list2;\r\n\tprivate boolean emptyAllowed;\r\n\r\n\tpublic JMultiSelectionDialog(final Program program, String title) {\r\n\t\tsuper(program, title);\r\n\r\n\t\tListenerClass listener = new ListenerClass();\r\n\r\n\t\tjAll = new JCheckBox(GuiShared.get().all());\r\n\t\tjAll.setActionCommand(MultiSelectionActions.CHECK_ALL.name());\r\n\t\tjAll.addActionListener(listener);\r\n\r\n\t\tjSubset = new JCheckBox();\r\n\t\tjSubset.setActionCommand(MultiSelectionActions.SUBSET.name());\r\n\t\tjSubset.addActionListener(listener);\r\n\r\n\t\tjList = new JMultiSelectionList<>();\r\n\t\tjList.addListSelectionListener(listener);\r\n\t\tJScrollPane jListScroll = new JScrollPane(jList);\r\n\r\n\t\tjOK = new JButton(GuiShared.get().ok());\r\n\t\tjOK.setActionCommand(MultiSelectionActions.OK.name());\r\n\t\tjOK.addActionListener(listener);\r\n\t\tjOK.setEnabled(false);\r\n\r\n\t\tJButton jCancel = new JButton(GuiShared.get().cancel());\r\n\t\tjCancel.setActionCommand(MultiSelectionActions.CANCEL.name());\r\n\t\tjCancel.addActionListener(listener);\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addComponent(jAll)\r\n\t\t\t\t\t.addGap(0, 0, Integer.MAX_VALUE)\r\n\t\t\t\t\t.addComponent(jSubset)\r\n\t\t\t\t)\r\n\t\t\t\t.addComponent(jListScroll, 300, 300, 300)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addGap(0, 0, Integer.MAX_VALUE)\r\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jAll, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jSubset, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addComponent(jListScroll, 200, 200, 200)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JComponent getDefaultFocus() {\r\n\t\treturn jOK;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JButton getDefaultButton() {\r\n\t\treturn jOK;\r\n\t}\r\n\r\n\tpublic List<T> show(Collection<T> items, boolean emptyAllowed) {\r\n\t\treturn show(items, new ArrayList<>(), null, null, emptyAllowed);\r\n\t}\r\n\r\n\tpublic List<T> show(Collection<T> items, Collection<T> selected, boolean emptyAllowed) {\r\n\t\treturn show(items, selected, null, null, emptyAllowed);\r\n\t}\r\n\r\n\tpublic List<T> show(Collection<T> items, Collection<T> other, String otherTitle, boolean emptyAllowed) {\r\n\t\treturn show(items, new ArrayList<>(), other, otherTitle, emptyAllowed);\r\n\t}\r\n\r\n\tpublic List<T> show(Collection<T> items, Collection<T> selected, Collection<T> other, String otherTitle, boolean emptyAllowed) {\r\n\t\tthis.emptyAllowed = emptyAllowed;\r\n\t\tlist = new ArrayList<>(items);\r\n\t\tif (other != null && otherTitle != null) {\r\n\t\t\tlist2 = new ArrayList<>(other);\r\n\t\t\tjSubset.setText(otherTitle);\r\n\t\t\tjSubset.setSelected(false);\r\n\t\t\tjSubset.setVisible(true);\r\n\t\t} else {\r\n\t\t\tlist2 = null;\r\n\t\t\tjSubset.setVisible(false);\r\n\t\t}\r\n\t\tjList.setModel(new DataListModel<>(list));\r\n\t\tfor (T item : selected) {\r\n\t\t\tint index = list.indexOf(item);\r\n\t\t\tif (index >= 0) {\r\n\t\t\t\tjList.addSelectionInterval(index, index);\r\n\t\t\t}\r\n\t\t}\r\n\t\tjAll.setSelected(jList.getSelectedIndices().length == list.size());\r\n\t\tthis.data = null;\r\n\t\tthis.setVisible(true);\r\n\t\treturn this.data;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void windowShown() { }\r\n\r\n\t@Override\r\n\tprotected void save() {\r\n\t\tdata = new ArrayList<>(jList.getSelectedValuesList());\r\n\t\tthis.setVisible(false);\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ListSelectionListener, ActionListener {\r\n\t\t@Override\r\n\t\tpublic void valueChanged(final ListSelectionEvent e) {\r\n\t\t\tjOK.setEnabled(emptyAllowed || jList.getSelectedIndices().length > 0);\r\n\t\t\tjAll.setSelected(jList.getSelectedIndices().length == jList.getModel().getSize());\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\tif (MultiSelectionActions.OK.name().equals(e.getActionCommand())) {\r\n\t\t\t\tsave();\r\n\t\t\t} else if (MultiSelectionActions.CANCEL.name().equals(e.getActionCommand())) {\r\n\t\t\t\tsetVisible(false);\r\n\t\t\t} else if (MultiSelectionActions.CHECK_ALL.name().equals(e.getActionCommand())) {\r\n\t\t\t\tif (jAll.isSelected()) {\r\n\t\t\t\t\tjList.selectAll();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tjList.clearSelection();\r\n\t\t\t\t}\r\n\t\t\t} else if (MultiSelectionActions.SUBSET.name().equals(e.getActionCommand())) {\r\n\t\t\t\tif (jSubset.isSelected() && list2 != null) {\r\n\t\t\t\t\tList<T> selected = jList.getSelectedValuesList();\r\n\t\t\t\t\tjList.clearSelection();\r\n\t\t\t\t\tjList.setModel(new DataListModel<>(list2));\r\n\t\t\t\t\tfor (T item : selected) {\r\n\t\t\t\t\t\tint index = list.indexOf(item);\r\n\t\t\t\t\t\tif (index >= 0) {\r\n\t\t\t\t\t\t\tjList.addSelectionInterval(index, index);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tList<T> selected = jList.getSelectedValuesList();\r\n\t\t\t\t\tjList.clearSelection();\r\n\t\t\t\t\tjList.setModel(new DataListModel<>(list));\r\n\t\t\t\t\tfor (T item : selected) {\r\n\t\t\t\t\t\tint index = list.indexOf(item);\r\n\t\t\t\t\t\tif (index >= 0) {\r\n\t\t\t\t\t\t\tjList.addSelectionInterval(index, index);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class DataListModel<T> extends AbstractListModel<T> {\r\n\r\n\t\tprivate final List<T> data;\r\n\r\n\t\tpublic DataListModel(final List<T> data) {\r\n\t\t\tthis.data = data;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int getSize() {\r\n\t\t\treturn data.size();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic T getElementAt(final int index) {\r\n\t\t\treturn data.get(index);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JMultiSelectionList.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.components;\n\nimport java.awt.event.*;\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.swing.*;\nimport javax.swing.event.ListDataEvent;\nimport javax.swing.event.ListDataListener;\n\n\npublic class JMultiSelectionList<T> extends JList<T> {\n\n\tprivate List<Integer> selectedList;\n\tprivate ListenerClass listener = new ListenerClass();\n\n\tpublic JMultiSelectionList() {\n\t\tthis(new DefaultListModel<T>());\n\t}\n\n\tpublic JMultiSelectionList(final List<T> listData) {\n\t\tthis (\n\t\t\tnew AbstractListModel<T>() {\n\t\t\t\t@Override\n\t\t\t\tpublic int getSize() { return listData.size(); }\n\t\t\t\t@Override\n\t\t\t\tpublic T getElementAt(final int i) { return listData.get(i); }\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic JMultiSelectionList(final ListModel<T> model) {\n\t\tsuper(model);\n\t\tmodel.addListDataListener(listener);\n\n\t\tselectedList = new ArrayList<>();\n\n\t\tthis.addMouseListener(listener);\n\t\tthis.addKeyListener(listener);\n\t\tthis.addMouseMotionListener(listener);\n\t\tthis.setDragEnabled(false);\n\n\t\tthis.setSelectionModel(new DefaultListSelectionModel());\n\t}\n\n\t@Override\n\tpublic void clearSelection() {\n \t\tsuper.clearSelection();\n \t\tselectedList.clear();\n \t}\n\t@Override\n\tpublic void setSelectedIndex(final int index) {\n\t\tsuper.setSelectedIndex(index);\n\t\tselectedList.clear();\n\t\tselectedList.add((Integer) index);\n\t}\n\n\t@Override\n\tpublic void setSelectedIndices(final int[] indices) {\n\t\tsuper.setSelectedIndices(indices);\n\t\tselectedList.clear();\n\t\tfor (int i = 0; i < indices.length; i++) {\n\t\t\tselectedList.add((Integer) indices[i]);\n\t\t}\n\t}\n\n\t@Override\n\tpublic void setSelectedValue(final Object anObject, final boolean shouldScrool) {\n\t\tsuper.setSelectedValue(anObject, shouldScrool);\n\t\tselectedList.clear();\n\t\tselectedList.add((Integer) getSelectedIndex());\n\t}\n\n\t@Override\n\tpublic void addSelectionInterval(final int anchor, final int lead) {\n\t\tsuper.addSelectionInterval(anchor, lead);\n\t\tint start;\n\t\tint end;\n\t\tif (anchor < lead) {\n\t\t\tstart = anchor;\n\t\t\tend = lead;\n\t\t} else {\n\t\t\tstart = lead;\n\t\t\tend = anchor;\n\t\t}\n\t\tfor (int i = start; i <= end; i++) {\n\t\t\tif (!selectedList.contains((Integer) i)) {\n\t\t\t\tselectedList.add((Integer) i);\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic void removeSelectionInterval(final int index0, final int index1) {\n\t\tsuper.removeSelectionInterval(index0, index1);\n\t\tint start;\n\t\tint end;\n\t\tif (index0 < index1) {\n\t\t\tstart = index0;\n\t\t\tend = index1;\n\t\t} else {\n\t\t\tstart = index1;\n\t\t\tend = index0;\n\t\t}\n\t\tfor (int i = start; i <= end; i++) {\n\t\t\tif (!selectedList.contains((Integer) i)) {\n\t\t\t\tselectedList.add((Integer) i);\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic void setModel(final ListModel<T> model) {\n\t\tsuper.setModel(model);\n\t\tmodel.addListDataListener(listener);\n\t}\n\n\tprivate class ListenerClass implements MouseListener, KeyListener, ListDataListener, MouseMotionListener {\n\t\t//MouseListener\n\t\t@Override\n\t\tpublic void mouseClicked(final MouseEvent e) { }\n\n\t\t@Override\n\t\tpublic void mouseReleased(final MouseEvent e) { }\n\n\t\t@Override\n\t\tpublic void mouseEntered(final MouseEvent e) { }\n\n\t\t@Override\n\t\tpublic void mouseExited(final MouseEvent e) { }\n\n\t\t@Override\n\t\tpublic void mousePressed(final MouseEvent e) {\n\t\t\tint index = locationToIndex(e.getPoint());\n\t\t\tif (e.getButton() == MouseEvent.BUTTON1) {\n\t\t\t\ttoggleSelectedIndex(index);\n\t\t\t\te.consume();\n\t\t\t}\n\t\t}\n\n\t\t//KeyListener\n\t\t@Override\n\t\tpublic void keyTyped(final KeyEvent e) { }\n\n\t\t@Override\n\t\tpublic void keyReleased(final KeyEvent e) { }\n\n\t\t@Override\n\t\tpublic void keyPressed(final KeyEvent e) {\n\t\t\tif (e.getKeyCode() == KeyEvent.VK_A && e.isControlDown()) {\n\t\t\t\ttoggleSelectAll();\n\t\t\t}\n\t\t\tif (e.getKeyCode() == KeyEvent.VK_UP) {\n\t\t\t\tsetAnchor(getAnchorSelectionIndex() - 1);\n\t\t\t}\n\t\t\tif (e.getKeyCode() == KeyEvent.VK_DOWN) {\n\t\t\t\tsetAnchor(getAnchorSelectionIndex() + 1);\n\t\t\t}\n\t\t\tif (e.getKeyCode() == KeyEvent.VK_SPACE || e.getKeyCode() == KeyEvent.VK_ENTER) {\n\t\t\t\tint index = getAnchorSelectionIndex();\n\t\t\t\ttoggleSelectedIndex(index);\n\t\t\t}\n\t\t\te.consume();\n\t\t}\n\t\t//MouseMotionListener\n\t\t@Override\n\t\tpublic void mouseMoved(final MouseEvent e) { }\n\n\t\t@Override\n\t\tpublic void mouseDragged(final MouseEvent e) {\n\t\t\tupdateSelections();\n\t\t}\n\n\t\t//ListDataListener\n\t\t@Override\n\t\tpublic void contentsChanged(final ListDataEvent e) { }\n\n\t\t@Override\n\t\tpublic void intervalAdded(final ListDataEvent e) {\n\t\t\tint index0 = e.getIndex0();\n\t\t\tint index1 = e.getIndex1();\n\t\t\tif (index0 == index1) {\n\t\t\t\tupdateList(index0, 1);\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void intervalRemoved(final ListDataEvent e) {\n\t\t\tint index0 = e.getIndex0();\n\t\t\tint index1 = e.getIndex1();\n\t\t\tif (index0 == index1) {\n\t\t\t\tselectedList.remove((Integer) index0);\n\t\t\t\tupdateList(index0, -1);\n\t\t\t} else {\n\t\t\t\tselectedList.clear();\n\t\t\t}\n\t\t\tensureIndexIsVisible(index1);\n\t\t}\n\t}\n\t//Public Methods\n\tpublic void addSelection(final int index, final boolean bSelected) {\n\t\tInteger indexObj = index;\n\n\t\t//is this selected? if so remove it.\n\t\tif (selectedList.contains(indexObj) && !bSelected) {\n\t\t\tselectedList.remove(indexObj);\n\t\t}\n\t\tif (!selectedList.contains(indexObj) && bSelected) {\n\t\t\tselectedList.add(indexObj);\n\t\t}\n\n\t\t//set selected indices\n\t\tupdateSelections();\n\t\tsetAnchor(index);\n\t}\n\tpublic void toggleSelectAll() {\n\t\tif (!isEnabled()) {\n\t\t\treturn;\n\t\t} //Ingnore update when disabled\n\t\tif (selectedList.size() != this.getModel().getSize()) {\n\t\t\tselectAll();\n\t\t} else {\n\t\t\tclearSelection();\n\t\t}\n\t}\n\n\tpublic void selectAll() {\n\t\tsetValueIsAdjusting(true);\n\t\tListModel<T> lm = this.getModel();\n\t\tselectedList.clear();\n\t\tfor (int i = 0; i < lm.getSize(); i++) {\n\t\t\tselectedList.add(i);\n\t\t}\n\t\tsetSelectionInterval(0, lm.getSize() - 1);\n\t\tsetAnchor(0);\n\t}\n\t//Private Methods\n\tprivate void updateList(final int index, final int fix) {\n\t\tList<Integer> fixedIndices = new ArrayList<>(selectedList.size());\n\t\tfor (int i = 0; i < selectedList.size(); i++) {\n\t\t\tint item = selectedList.get(i);\n\t\t\tif (item >= index) {\n\t\t\t\titem = item + fix;\n\t\t\t\tfixedIndices.add(item);\n\t\t\t} else {\n\t\t\t\tfixedIndices.add(item);\n\t\t\t}\n\t\t}\n\t\tselectedList = fixedIndices;\n\t}\n\tprivate void setAnchor(final int nAnchor) {\n\t\tsetValueIsAdjusting(true);\n\t\tListSelectionModel sm = this.getSelectionModel();\n\t\tListModel<T> lm = this.getModel();\n\t\tif (nAnchor >= 0 && nAnchor < lm.getSize()) {\n\t\t\tif (this.isSelectedIndex(nAnchor)) {\n\t\t\t\tsm.removeSelectionInterval(nAnchor, nAnchor);\n\t\t\t\tsm.addSelectionInterval(nAnchor, nAnchor);\n\t\t\t} else {\n\t\t\t\tsm.addSelectionInterval(nAnchor, nAnchor);\n\t\t\t\tsm.removeSelectionInterval(nAnchor, nAnchor);\n\t\t\t}\n\t\t\tensureIndexIsVisible(nAnchor);\n\t\t}\n\t\tsetValueIsAdjusting(false);\n\t}\n\tprivate void toggleSelectedIndex(final int index) {\n\t\tif (!isEnabled()) {\n\t\t\treturn;\n\t\t} //Ingnore update when disabled\n\t\tInteger indexObj = index;\n\n\t\t//is this selected? if so remove it.\n\t\tif (selectedList.contains(indexObj)) {\n\t\t\tselectedList.remove(indexObj);\n\t\t} else { //otherwise add it to our list\n\t\t\tselectedList.add(indexObj);\n\t\t}\n\n\t\t//set selected indices\n\t\tupdateSelections();\n\t\tsetAnchor(index);\n\t}\n\tprivate void updateSelections() {\n\t\t//copy to an int array\n\t\tint[] arr = new int[selectedList.size()];\n\t\tfor (int i = 0; i < arr.length; i++) {\n\t\t\tint item = selectedList.get(i);\n\t\t\tarr[i] = item;\n\t\t}\n\t\t//set selected indices\n\t\tsetSelectedIndices(arr);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JOptionsDialog.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.components;\r\n\r\nimport java.awt.Font;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport javax.swing.ButtonGroup;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.GroupLayout.Group;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JCheckBox;\r\nimport javax.swing.JComponent;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JRadioButton;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\npublic class JOptionsDialog extends JDialogCentered {\r\n\r\n\tprivate enum StockpileImportAction {\r\n\t\tOK,\r\n\t\tCANCEL\r\n\t}\r\n\r\n\tprivate static final CancelOption CANCEL_OPTION = new CancelOption();\r\n\r\n\tprivate final JLabel jName;\r\n\tprivate final JCheckBox jAll;\r\n\tprivate final JButton jOK;\r\n\tprivate final JButton jCancel;\r\n\tprivate final List<OptionsContainer> containers = new ArrayList<>();\r\n\tprivate final ListenerClass listenerClass;\r\n\tprivate OptionEnum option = null;\r\n\r\n\r\n\tpublic JOptionsDialog(Program program) {\r\n\t\tsuper(program, GuiShared.get().importOptions());\r\n\r\n\t\tlistenerClass = new ListenerClass();\r\n\r\n\t\tjName = new JLabel();\r\n\t\tjName.setFont(jName.getFont().deriveFont(Font.BOLD));\r\n\r\n\t\tjAll = new JCheckBox();\r\n\r\n\t\tjOK = new JButton(GuiShared.get().ok());\r\n\t\tjOK.setActionCommand(StockpileImportAction.OK.name());\r\n\t\tjOK.addActionListener(listenerClass);\r\n\r\n\t\tjCancel = new JButton(GuiShared.get().cancel());\r\n\t\tjCancel.setActionCommand(StockpileImportAction.CANCEL.name());\r\n\t\tjCancel.addActionListener(listenerClass);\r\n\t}\r\n\r\n\tprivate void doLayout(List<OptionEnum> options, OptionEnum defaultOption, boolean showAll) {\r\n\t\tjPanel.removeAll();\r\n\t\tcontainers.clear();\r\n\r\n\t\tGroup optionHorizontalGroup = layout.createParallelGroup(GroupLayout.Alignment.LEADING);\r\n\t\tGroup helpHorizontalGroup = layout.createParallelGroup(GroupLayout.Alignment.LEADING);\r\n\t\tGroup horizontalGroup = layout.createParallelGroup(GroupLayout.Alignment.CENTER);\r\n\t\tGroup verticalGroup = layout.createSequentialGroup();\r\n\t\t//Name\r\n\t\tif (!jName.getText().isEmpty()) {\r\n\t\t\tverticalGroup.addComponent(jName, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight());\r\n\t\t\thorizontalGroup.addComponent(jName);\r\n\t\t}\r\n\t\t//Options\r\n\t\tif (defaultOption == null && !options.isEmpty()) {\r\n\t\t\tdefaultOption = options.get(0);\r\n\t\t}\r\n\t\tButtonGroup buttonGroup = new ButtonGroup();\r\n\t\tfor (OptionEnum optionEnum : options) {\r\n\t\t\tOptionsContainer optionsContainer = new OptionsContainer(optionEnum);\r\n\t\t\tcontainers.add(optionsContainer);\r\n\t\t\tbuttonGroup.add(optionsContainer.getRadioButton());\r\n\t\t\toptionHorizontalGroup.addComponent(optionsContainer.getRadioButton());\r\n\t\t\thelpHorizontalGroup.addComponent(optionsContainer.getLabel());\r\n\t\t\toptionsContainer.getRadioButton().setSelected(defaultOption == optionEnum);\r\n\t\t\tverticalGroup.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t.addComponent(optionsContainer.getRadioButton(), Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(optionsContainer.getLabel(), Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t);\r\n\t\t}\r\n\t\thorizontalGroup\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addGroup(optionHorizontalGroup)\r\n\t\t\t\t\t.addGap(20)\r\n\t\t\t\t\t.addGroup(helpHorizontalGroup)\r\n\t\t\t\t);\r\n\t\tverticalGroup.addGap(20);\r\n\t\t//All\r\n\t\tif (showAll) {\r\n\t\t\thorizontalGroup\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addComponent(jAll)\r\n\t\t\t\t\t.addGap(0, 0, Integer.MAX_VALUE)\r\n\t\t\t\t);\r\n\t\t\tverticalGroup\r\n\t\t\t\t\t.addComponent(jAll, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addGap(20);\r\n\r\n\t\t}\r\n\t\t//OK/Cancel\r\n\t\tverticalGroup.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t);\r\n\t\thorizontalGroup.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t);\r\n\r\n\t\tlayout.setHorizontalGroup(horizontalGroup);\r\n\t\tlayout.setVerticalGroup(verticalGroup);\r\n\t}\r\n\r\n\tpublic OptionEnum show(String heading, String title, String all, boolean enableAll, boolean showAll, List<OptionEnum> options, OptionEnum defaultOption) {\r\n\t\toption = null;\r\n\t\tjName.setText(heading);\r\n\t\tgetDialog().setTitle(title);\r\n\t\tdoLayout(options, defaultOption, showAll);\r\n\t\tjAll.setSelected(false);\r\n\t\tjAll.setText(all);\r\n\t\tjAll.setEnabled(enableAll);\r\n\t\tsetVisible(true);\r\n\t\treturn option;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JComponent getDefaultFocus() {\r\n\t\treturn jOK;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JButton getDefaultButton() {\r\n\t\treturn jOK;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void windowShown() { }\r\n\r\n\t@Override\r\n\tprotected void save() {\r\n\t\tfor (OptionsContainer container : containers) {\r\n\t\t\tif (container.getRadioButton().isSelected()) {\r\n\t\t\t\toption = container.getOption();\r\n\t\t\t\toption.setAll(jAll.isSelected());\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tsetVisible(false);\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener {\r\n\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\tif (StockpileImportAction.OK.name().equals(e.getActionCommand())) {\r\n\t\t\t\tsave();\r\n\t\t\t}\r\n\t\t\tif (StockpileImportAction.CANCEL.name().equals(e.getActionCommand())) {\r\n\t\t\t\toption = CANCEL_OPTION;\r\n\t\t\t\tsetVisible(false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static interface OptionEnum {\r\n\t\tpublic String getText();\r\n\t\tpublic String getHelp();\r\n\t\tpublic boolean isAll();\r\n\t\tpublic void setAll(boolean all);\r\n\t}\r\n\r\n\tprivate static class CancelOption implements OptionEnum {\r\n\r\n\t\t@Override\r\n\t\tpublic String getText() {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic String getHelp() {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean isAll() {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void setAll(boolean all) { }\r\n\r\n\t}\r\n\r\n\tprivate static class OptionsContainer {\r\n\t\tprivate final OptionEnum option;\r\n\t\tprivate final JRadioButton jRadioButton;\r\n\t\tprivate final JLabel jLabel;\r\n\r\n\t\tpublic OptionsContainer(OptionEnum option) {\r\n\t\t\tthis.option = option;\r\n\t\t\toption.setAll(false); //Reset\r\n\r\n\t\t\tjRadioButton = new JRadioButton(option.getText());\r\n\r\n\t\t\tjLabel = new JLabel(option.getHelp());\r\n\t\t}\r\n\r\n\t\tpublic OptionEnum getOption() {\r\n\t\t\treturn option;\r\n\t\t}\r\n\r\n\t\tpublic JRadioButton getRadioButton() {\r\n\t\t\treturn jRadioButton;\r\n\t\t}\r\n\r\n\t\tpublic JLabel getLabel() {\r\n\t\t\treturn jLabel;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JSelectionDialog.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.components;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.util.Collection;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JComboBox;\r\nimport javax.swing.JComponent;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\npublic class JSelectionDialog<T> extends JDialogCentered {\r\n\r\n\tprivate enum ContainerDialogAction {\r\n\t\tOK, CANCEL\r\n\t}\r\n\r\n\tprivate final JComboBox<T> jLocations;\r\n\tprivate final JButton jOK;\r\n\tprivate T selected = null;\r\n\r\n\tpublic JSelectionDialog(Program program) {\r\n\t\tsuper(program, \"\");\r\n\r\n\t\tListenerClass listenerClass = new ListenerClass();\r\n\r\n\t\tjLocations = new JComboBox<>();\r\n\r\n\t\tjOK = new JButton(GuiShared.get().ok());\r\n\t\tjOK.setActionCommand(ContainerDialogAction.OK.name());\r\n\t\tjOK.addActionListener(listenerClass);\r\n\r\n\t\tJButton jCancel = new JButton(GuiShared.get().cancel());\r\n\t\tjCancel.setActionCommand(ContainerDialogAction.CANCEL.name());\r\n\t\tjCancel.addActionListener(listenerClass);\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\r\n\t\t\t\t\t.addComponent(jLocations, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, 600)\r\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t\t.addComponent(jOK, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(jLocations, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\tpublic T show(String title, Collection<T> data) {\r\n\t\tif (data.size() == 1) {\r\n\t\t\treturn data.iterator().next();\r\n\t\t}\r\n\t\tgetDialog().setTitle(title);\r\n\t\tselected = null;\r\n\t\tjLocations.setModel(new ListComboBoxModel<>(data));\r\n\t\tsetVisible(true);\r\n\t\treturn selected;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JComponent getDefaultFocus() {\r\n\t\treturn jLocations;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JButton getDefaultButton() {\r\n\t\treturn jOK;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void windowShown() {}\r\n\r\n\t@Override\r\n\tprotected void save() {\r\n\t\tselected = jLocations.getItemAt(jLocations.getSelectedIndex());\r\n\t\tsetVisible(false);\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener {\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\tif (ContainerDialogAction.OK.name().equals(e.getActionCommand())) {\r\n\t\t\t\tsave();\r\n\t\t\t}\r\n\t\t\tif (ContainerDialogAction.CANCEL.name().equals(e.getActionCommand())) {\r\n\t\t\t\tsetVisible(false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JTextAreaPlaceholder.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.components;\r\n\r\nimport java.awt.Color;\r\nimport java.awt.Dimension;\r\nimport java.awt.Font;\r\nimport java.awt.Graphics;\r\nimport java.awt.Insets;\r\nimport java.awt.event.ComponentEvent;\r\nimport java.awt.event.ComponentListener;\r\nimport java.awt.event.FocusEvent;\r\nimport java.awt.event.FocusListener;\r\nimport javax.swing.BorderFactory;\r\nimport javax.swing.JTextArea;\r\nimport javax.swing.border.Border;\r\nimport javax.swing.event.DocumentEvent;\r\nimport javax.swing.event.DocumentListener;\r\n\r\n/**\r\n * JTextArea with information text displayed when empty.\r\n */\r\npublic class JTextAreaPlaceholder extends JTextArea {\r\n\t/**\r\n\t * Placeholder font.\r\n\t */\r\n\tprivate Font placeholderFont = null;\r\n\t/**\r\n\t * Placeholder italic font.\r\n\t */\r\n\tprivate boolean italic = true;\r\n\t/**\r\n\t * Placeholder mock used for painting.\r\n\t */\r\n\tprivate JTextArea jPlaceholder;\r\n\t/**\r\n\t * Text to display when empty.\r\n\t */\r\n\tprivate String placeholderText;\r\n\t/**\r\n\t * Paint placeholder.\r\n\t */\r\n\tprivate boolean paintPlaceholder;\r\n\r\n\t/**\r\n\t * Create a textfield with hint.\r\n\t */\r\n\tpublic JTextAreaPlaceholder() {\r\n\t\tthis(null, null);\r\n\t}\r\n\r\n\tpublic JTextAreaPlaceholder(String placeholder) {\r\n\t\tthis(null, placeholder);\r\n\t}\r\n\t/**\r\n\t * Create a textfield with hint.\r\n\t *\r\n\t * @param text\r\n\t * @param placeholder Text displayed when empty\r\n\t */\r\n\tpublic JTextAreaPlaceholder(String text, String placeholder) {\r\n\t\tsuper(text);\r\n\t\tif (placeholder == null) {\r\n\t\t\tplaceholder = \"\";\r\n\t\t}\r\n\t\tthis.placeholderText = placeholder;\r\n\t\tgetMock().setOpaque(false);\r\n\t\tgetMock().setBackground(new Color(0,0,0,0)); //Nimbus LaF\r\n\t\tgetMock().setForeground(getDisabledTextColor());\r\n\t\tplaceholderFont = getFont();\r\n\t\tupdatePlaceholderBorder();\r\n\t\tupdatePlaceholderFont();\r\n\r\n\t\taddFocusListener(new FocusListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void focusLost(FocusEvent e) {\r\n\t\t\t\tupdateShown();\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic void focusGained(FocusEvent e) {\r\n\t\t\t\tupdateShown();\r\n\t\t\t}\r\n\t\t});\r\n\t\tgetDocument().addDocumentListener(new DocumentListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void insertUpdate(DocumentEvent e) {\r\n\t\t\t\tupdateShown();\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic void removeUpdate(DocumentEvent e) {\r\n\t\t\t\tupdateShown();\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic void changedUpdate(DocumentEvent e) {\r\n\t\t\t\tupdateShown();\r\n\t\t\t}\r\n\t\t});\r\n\t\taddComponentListener(new ComponentListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void componentResized(ComponentEvent e) {\r\n\t\t\t\tupdateSize();\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic void componentMoved(ComponentEvent e) { }\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic void componentShown(ComponentEvent e) {\r\n\t\t\t\tupdateSize();\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic void componentHidden(ComponentEvent e) { }\r\n\t\t});\r\n\t}\r\n\r\n\tprivate JTextArea getMock() {\r\n\t\tif (jPlaceholder == null) {\r\n\t\t\tjPlaceholder = new JTextArea();\r\n\t\t}\r\n\t\treturn jPlaceholder;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setFont(Font f) {\r\n\t\tplaceholderFont = f;\r\n\t\tupdatePlaceholderFont();\r\n\t\tsuper.setFont(f);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setColumns(int columns) {\r\n\t\tgetMock().setColumns(columns);\r\n\t\tsuper.setColumns(columns);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setRows(int rows) {\r\n\t\tgetMock().setRows(rows);\r\n\t\tsuper.setRows(rows);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setTabSize(int size) {\r\n\t\tgetMock().setTabSize(size);\r\n\t\tsuper.setTabSize(size);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setWrapStyleWord(boolean word) {\r\n\t\tgetMock().setWrapStyleWord(word);\r\n\t\tsuper.setWrapStyleWord(word);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setLineWrap(boolean wrap) {\r\n\t\tgetMock().setLineWrap(wrap);\r\n\t\tsuper.setLineWrap(wrap);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setBorder(Border border) {\r\n\t\tsuper.setBorder(border);\r\n\t\tupdatePlaceholderBorder();\r\n\t}\r\n\r\n\tprivate void updatePlaceholderBorder() {\r\n\t\tInsets insets = getInsets();\r\n\t\tgetMock().setBorder(BorderFactory.createEmptyBorder(insets.top, insets.left, insets.bottom, insets.right));\r\n\t\trevalidate();\r\n\t\trepaint();\r\n\t}\r\n\r\n\tprivate void updateShown() {\r\n\t\tupdateShown(false);\r\n\t}\r\n\r\n\tprivate void updateShown(boolean forceRepaint) {\r\n\t\tboolean paint = getText().isEmpty() && placeholderText != null && !placeholderText.isEmpty();\r\n\t\tboolean repaint = forceRepaint || paint != paintPlaceholder;\r\n\t\tgetMock().setText(placeholderText);\r\n\t\tpaintPlaceholder = paint;\r\n\t\tif (repaint) {\r\n\t\t\trevalidate();\r\n\t\t\trepaint();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void updateSize() {\r\n\t\tDimension size = getSize();\r\n\t\tboolean repaint = getMock().getSize() != size;\r\n\t\tgetMock().setSize(size);\r\n\t\tif (repaint) {\r\n\t\t\trevalidate();\r\n\t\t\trepaint();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void setPlaceholderText(String placeholder) {\r\n\t\tthis.placeholderText = placeholder;\r\n\t\tupdateShown(true);\r\n\t}\r\n\r\n\tpublic void setPlaceholderForeground(Color fg) {\r\n\t\tgetMock().setForeground(fg);\r\n\t\trevalidate();\r\n\t\trepaint();\r\n\t}\r\n\r\n\tpublic boolean isPlaceholderItalic() {\r\n\t\treturn italic;\r\n\t}\r\n\r\n\tpublic void setPlaceholderFont(Font f) {\r\n\t\tplaceholderFont = f;\r\n\t\tupdatePlaceholderFont();\r\n\t}\r\n\r\n\tpublic void setPlaceholderItalic(boolean italic) {\r\n\t\tthis.italic = italic;\r\n\t\tupdatePlaceholderFont();\r\n\t}\r\n\r\n\tprivate void updatePlaceholderFont() {\r\n\t\tif (italic) {\r\n\t\t\tgetMock().setFont(placeholderFont.deriveFont(Font.ITALIC));\r\n\t\t} else {\r\n\t\t\tgetMock().setFont(placeholderFont);\r\n\t\t}\r\n\t\trevalidate();\r\n\t\trepaint();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void paint(Graphics g) {\r\n\t\tif (paintPlaceholder) {\r\n\t\t\tsuper.paint(g);\r\n\t\t\tgetMock().paint(g);\r\n\t\t} else {\r\n\t\t\tsuper.paint(g);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JTextDialog.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.components;\r\n\r\nimport java.awt.Color;\r\nimport java.awt.Component;\r\nimport java.awt.Window;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.io.BufferedReader;\r\nimport java.io.BufferedWriter;\r\nimport java.io.FileReader;\r\nimport java.io.FileWriter;\r\nimport java.io.IOException;\r\nimport javax.swing.DefaultComboBoxModel;\r\nimport javax.swing.DefaultListCellRenderer;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.Icon;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JComboBox;\r\nimport javax.swing.JComponent;\r\nimport javax.swing.JFileChooser;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JList;\r\nimport javax.swing.JOptionPane;\r\nimport javax.swing.JScrollPane;\r\nimport javax.swing.ListCellRenderer;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.Colors;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.CopyHandler;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\npublic class JTextDialog extends JDialogCentered {\r\n\r\n\tprivate enum TextDialogAction {\r\n\t\tIMPORT_TYPE,\r\n\t\tTO_CLIPBOARD,\r\n\t\tTO_FILE,\r\n\t\tFROM_CLIPBOARD,\r\n\t\tFROM_FILE,\r\n\t\tCANCEL,\r\n\t\tOK\r\n\t}\r\n\r\n\tprivate final JTextAreaPlaceholder jText;\r\n\tprivate final JComboBox<SimpleTextImport> jImportTypes;\r\n\tprivate final JButton jToClipboard;\r\n\tprivate final JButton jFromClipboard;\r\n\tprivate final JButton jToFile;\r\n\tprivate final JButton jFromFile;\r\n\tprivate final JButton jOK;\r\n\tprivate final JButton jCancel;\r\n\tprivate final Color importColor;\r\n\tprivate final JCustomFileChooser jFileChooser;\r\n\r\n\tprivate String returnValue = null;\r\n\r\n\tpublic JTextDialog(Window window) {\r\n\t\tsuper(null, \"\", window, null);\r\n\r\n\t\tjFileChooser = new JCustomFileChooser(\"txt\");\r\n\t\tjFileChooser.setMultiSelectionEnabled(false);\r\n\t\tjFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);\r\n\r\n\t\tListenerClass listener = new ListenerClass();\r\n\r\n\t\tjImportTypes = new JComboBox<>();\r\n\t\tjImportTypes.setRenderer(new TextImportListRenderer());\r\n\t\tjImportTypes.setActionCommand(TextDialogAction.IMPORT_TYPE.name());\r\n\t\tjImportTypes.addActionListener(listener);\r\n\r\n\t\tjToClipboard = new JButton(GuiShared.get().textToClipboard(), Images.EDIT_COPY.getIcon());\r\n\t\tjToClipboard.setActionCommand(TextDialogAction.TO_CLIPBOARD.name());\r\n\t\tjToClipboard.addActionListener(listener);\r\n\r\n\t\tjToFile = new JButton(GuiShared.get().textToFile(), Images.FILTER_SAVE.getIcon());\r\n\t\tjToFile.setActionCommand(TextDialogAction.TO_FILE.name());\r\n\t\tjToFile.addActionListener(listener);\r\n\r\n\t\tjFromClipboard = new JButton(GuiShared.get().textFromClipboard(), Images.EDIT_PASTE.getIcon());\r\n\t\tjFromClipboard.setActionCommand(TextDialogAction.FROM_CLIPBOARD.name());\r\n\t\tjFromClipboard.addActionListener(listener);\r\n\r\n\t\tjFromFile = new JButton(GuiShared.get().textFromFile(), Images.FILTER_LOAD.getIcon());\r\n\t\tjFromFile.setActionCommand(TextDialogAction.FROM_FILE.name());\r\n\t\tjFromFile.addActionListener(listener);\r\n\r\n\t\tjOK = new JButton();\r\n\t\tjOK.setActionCommand(TextDialogAction.OK.name());\r\n\t\tjOK.addActionListener(listener);\r\n\r\n\t\tjCancel = new JButton(GuiShared.get().cancel());\r\n\t\tjCancel.setActionCommand(TextDialogAction.CANCEL.name());\r\n\t\tjCancel.addActionListener(listener);\r\n\r\n\t\tjText = new JTextAreaPlaceholder();\r\n\t\tjText.setTabSize(4);\r\n\t\tjText.setLineWrap(true);\r\n\t\tjText.setEditable(false);\r\n\t\tjText.setFont(jPanel.getFont());\r\n\r\n\t\timportColor = jText.getBackground();\r\n\r\n\t\tJScrollPane jTextScroll = new JScrollPane(jText);\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addComponent(jImportTypes)\r\n\t\t\t\t\t.addComponent(jToClipboard)\r\n\t\t\t\t\t.addComponent(jToFile)\r\n\t\t\t\t\t.addComponent(jFromClipboard)\r\n\t\t\t\t\t.addComponent(jFromFile)\r\n\t\t\t\t)\r\n\t\t\t\t.addComponent(jTextScroll, 500, 500, Integer.MAX_VALUE)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addGap(0, 0, Integer.MAX_VALUE)\r\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jImportTypes, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jToClipboard, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jToFile, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jFromClipboard, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jFromFile, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addComponent(jTextScroll, 400, 400, Integer.MAX_VALUE)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JComponent getDefaultFocus() {\r\n\t\treturn jText;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JButton getDefaultButton() {\r\n\t\treturn jOK;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void windowShown() { }\r\n\r\n\t@Override\r\n\tprotected void save() { }\r\n\r\n\tpublic void setLineWrap(boolean wrap) {\r\n\t\tjText.setLineWrap(wrap);\r\n\t}\r\n\r\n\tpublic String importText() {\r\n\t\treturn importText(\"\", \"\");\r\n\t}\r\n\r\n\tpublic String importText(String text) {\r\n\t\treturn importText(text, \"\");\r\n\t}\r\n\r\n\tpublic String importText(String text, String example) {\r\n\t\treturn importText(text, example, null, null).getText();\r\n\t}\r\n\r\n\tpublic <E extends SimpleTextImport> TextReturn<E> importText(E[] imports) {\r\n\t\treturn importText(\"\", \"\", imports, null);\r\n\t}\r\n\r\n\tpublic <E extends SimpleTextImport> TextReturn<E> importText(E[] imports, E selected) {\r\n\t\treturn importText(\"\", \"\", imports, selected);\r\n\t}\r\n\r\n\tpublic <E extends SimpleTextImport> TextReturn<E> importText(String text, E[] imports) {\r\n\t\treturn importText(text, \"\", imports, null);\r\n\t}\r\n\r\n\tpublic <E extends SimpleTextImport> TextReturn<E> importText(String text, E[] imports, E selected) {\r\n\t\treturn importText(text, \"\", imports, selected);\r\n\t}\r\n\r\n\tpublic <E extends SimpleTextImport> TextReturn<E> importText(String text, String example, E[] imports, E selected) {\r\n\t\tgetDialog().setTitle(GuiShared.get().textImport());\r\n\t\tif (imports == null || imports.length < 1) {\r\n\t\t\tjImportTypes.removeAllItems();\r\n\t\t\tjImportTypes.setVisible(false);\r\n\t\t} else {\r\n\t\t\tjImportTypes.setModel(new DefaultComboBoxModel<>(imports));\r\n\t\t\tif (selected != null) {\r\n\t\t\t\tjImportTypes.setSelectedItem(selected);\r\n\t\t\t} else {\r\n\t\t\t\tjImportTypes.setSelectedIndex(0);\r\n\t\t\t}\r\n\t\t\texample = jImportTypes.getItemAt(jImportTypes.getSelectedIndex()).getExample();\r\n\t\t\tjImportTypes.setVisible(true);\r\n\t\t}\r\n\t\tjText.setEditable(true);\r\n\t\tjText.setOpaque(true);\r\n\t\tjText.setBackground(importColor);\r\n\t\tjText.setText(text);\r\n\t\tif (example == null) {\r\n\t\t\texample = \"\"; //null not allowed!\r\n\t\t}\r\n\t\tjText.setPlaceholderText(example);\r\n\t\tjOK.setText(GuiShared.get().ok());\r\n\t\tjCancel.setVisible(true);\r\n\t\tjFromClipboard.setVisible(true);\r\n\t\tjFromFile.setVisible(true);\r\n\t\tjToClipboard.setVisible(false);\r\n\t\tjToFile.setVisible(false);\r\n\t\treturnValue = null;\r\n\t\tsetVisible(true);\r\n\t\tif (imports == null) {\r\n\t\t\treturn new TextReturn<>(returnValue, null);\r\n\t\t} else {\r\n\t\t\treturn new TextReturn<>(returnValue, imports[jImportTypes.getSelectedIndex()]);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void exportText(String text) {\r\n\t\tgetDialog().setTitle(GuiShared.get().textExport());\r\n\t\tjText.setEditable(false);\r\n\t\tjText.setOpaque(false);\r\n\t\tjText.setBackground(Colors.COMPONENT_TRANSPARENT.getColor());\r\n\t\tjText.setText(text);\r\n\t\tjOK.setText(GuiShared.get().textClose());\r\n\t\tjCancel.setVisible(false);\r\n\t\tjFromClipboard.setVisible(false);\r\n\t\tjFromFile.setVisible(false);\r\n\t\tjImportTypes.setVisible(false);\r\n\t\tjToClipboard.setVisible(true);\r\n\t\tjToFile.setVisible(true);\r\n\t\tsetVisible(true);\r\n\t}\r\n\r\n\tprivate void toFile() {\r\n\t\tint showSaveDialog = jFileChooser.showSaveDialog(getDialog());\r\n\t\tif (showSaveDialog == JCustomFileChooser.APPROVE_OPTION) {\r\n\t\t\tBufferedWriter writer = null;\r\n\t\t\ttry {\r\n\t\t\t\twriter = new BufferedWriter(new FileWriter(jFileChooser.getSelectedFile()));\r\n\t\t\t\twriter.write(jText.getText());\r\n\t\t\t\twriter.close();\r\n\t\t\t} catch (IOException ex) {\r\n\t\t\t\tJOptionPane.showMessageDialog(getDialog(), GuiShared.get().textSaveFailMsg(), GuiShared.get().textSaveFailTitle(), JOptionPane.WARNING_MESSAGE);\r\n\t\t\t} finally {\r\n\t\t\t\tif (writer != null) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\twriter.close();\r\n\t\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\t\t//Ohh well we tried our best\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void fromFile() {\r\n\t\tint showSaveDialog = jFileChooser.showOpenDialog(getDialog());\r\n\t\tif (showSaveDialog == JCustomFileChooser.APPROVE_OPTION) {\r\n\t\t\tBufferedReader reader = null;\r\n\t\t\ttry {\r\n\t\t\t\treader = new BufferedReader(new FileReader(jFileChooser.getSelectedFile()));\r\n\t\t\t\tString line;\r\n\t\t\t\tStringBuilder builder = new StringBuilder();\r\n\t\t\t\twhile ((line = reader.readLine()) != null) {\r\n\t\t\t\t\tbuilder.append(line);\r\n\t\t\t\t\tbuilder.append(\"\\r\\n\");\r\n\t\t\t\t}\r\n\t\t\t\tjText.setText(builder.toString());\r\n\t\t\t} catch (IOException e) {\r\n\t\t\t\tJOptionPane.showMessageDialog(getDialog(), GuiShared.get().textLoadFailMsg(), GuiShared.get().textLoadFailTitle(), JOptionPane.WARNING_MESSAGE);\r\n\t\t\t} finally {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tif (reader != null) {\r\n\t\t\t\t\t\treader.close();\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\t//Ohh well we tried our best\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static interface SimpleTextImport {\r\n\t\tpublic String getExample();\r\n\t\tpublic Icon getIcon();\r\n\t\tpublic String getType();\r\n\t}\r\n\r\n\tpublic static class TextReturn<E extends SimpleTextImport> {\r\n\t\tprivate final String text;\r\n\t\tprivate final E type;\r\n\r\n\t\tpublic TextReturn(String text, E type) {\r\n\t\t\tthis.text = text;\r\n\t\t\tthis.type = type;\r\n\t\t}\r\n\r\n\t\tpublic String getText() {\r\n\t\t\treturn text;\r\n\t\t}\r\n\r\n\t\tpublic E getType() {\r\n\t\t\treturn type;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener {\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\tif (TextDialogAction.TO_CLIPBOARD.name().equals(e.getActionCommand())) {\r\n\t\t\t\tCopyHandler.toClipboard(jText.getText());\r\n\t\t\t} else if (TextDialogAction.TO_FILE.name().equals(e.getActionCommand())) {\r\n\t\t\t\ttoFile();\r\n\t\t\t} else if (TextDialogAction.FROM_CLIPBOARD.name().equals(e.getActionCommand())) {\r\n\t\t\t\tCopyHandler.paste(jText);\r\n\t\t\t} else if (TextDialogAction.FROM_FILE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tfromFile();\r\n\t\t\t} else if (TextDialogAction.OK.name().equals(e.getActionCommand())) {\r\n\t\t\t\treturnValue = jText.getText();\r\n\t\t\t\tsetVisible(false);\r\n\t\t\t} else if (TextDialogAction.CANCEL.name().equals(e.getActionCommand())) {\r\n\t\t\t\treturnValue = null;\r\n\t\t\t\tsetVisible(false);\r\n\t\t\t} else if (TextDialogAction.IMPORT_TYPE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tSimpleTextImport textImport = jImportTypes.getItemAt(jImportTypes.getSelectedIndex());\r\n\t\t\t\tjText.setPlaceholderText(textImport.getExample());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclass TextImportListRenderer implements ListCellRenderer<SimpleTextImport> {\r\n\r\n\t\tprivate final DefaultListCellRenderer renderer;\r\n\r\n\t\tpublic TextImportListRenderer() {\r\n\t\t\trenderer = new DefaultListCellRenderer();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic Component getListCellRendererComponent(JList<? extends SimpleTextImport> list, SimpleTextImport value, int index, boolean isSelected, boolean cellHasFocus) {\r\n\t\t\tJLabel label = (JLabel) renderer.getListCellRendererComponent(list, value.getType(), index, isSelected, cellHasFocus);\r\n\t\t\t// Set icon to display for value \r\n\t\t\tlabel.setIcon(value.getIcon());\r\n\t\t\treturn label;\r\n\t\t}\r\n\r\n\t\t\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JTreemap.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.components;\n\nimport java.awt.Color;\nimport java.awt.Dimension;\nimport java.awt.Font;\nimport java.awt.FontMetrics;\nimport java.awt.Graphics;\nimport java.awt.Graphics2D;\nimport java.awt.Insets;\nimport java.awt.Point;\nimport java.awt.RenderingHints;\nimport java.awt.event.ComponentAdapter;\nimport java.awt.event.ComponentEvent;\nimport java.awt.event.MouseAdapter;\nimport java.awt.event.MouseEvent;\nimport java.awt.event.MouseMotionAdapter;\nimport java.awt.geom.Rectangle2D;\nimport java.awt.image.BufferedImage;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.Comparator;\nimport java.util.List;\nimport java.util.Map;\nimport javax.swing.JComponent;\nimport javax.swing.SwingUtilities;\nimport javax.swing.UIManager;\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\n\n\npublic class JTreemap extends JComponent {\n\n\tpublic interface SelectionListener {\n\t\tvoid itemSelected(String name);\n\t}\n\n\tprivate static final double GAP = 1.0;\n\tprivate static final double MAX_TILE_ASPECT_RATIO = 4.0;\n\tprivate static final int MIN_TILE_SIZE = 6;\n\tprivate static final int LABEL_PADDING = 4;\n\tprivate static final int AMBIENT_LIGHT = 30;\n\tprivate static final double LIGHT_X = 0.09759;\n\tprivate static final double LIGHT_Y = 0.19518;\n\tprivate static final double LIGHT_Z = 0.9759;\n\tprivate static final double CUSHION_HEIGHT = 0.35;\n\n\tprivate final SelectionListener selectionListener;\n\tprivate final List<Tile> tiles = new ArrayList<>();\n\tprivate Dimension lastSize;\n\tprivate boolean layoutDirty = true;\n\tprivate Tile hovered;\n\tprivate final Font labelFont;\n\n\tpublic JTreemap(final SelectionListener selectionListener) {\n\t\tthis.selectionListener = selectionListener;\n\t\tsetOpaque(true);\n\t\tColor background = UIManager.getColor(\"Panel.background\");\n\t\tif (background != null) {\n\t\t\tsetBackground(background);\n\t\t}\n\t\tlabelFont = UIManager.getFont(\"Label.font\");\n\t\tsetToolTipText(\"\");\n\n\t\taddComponentListener(new ComponentAdapter() {\n\t\t\t@Override\n\t\t\tpublic void componentResized(ComponentEvent e) {\n\t\t\t\tlayoutDirty = true;\n\t\t\t\trepaint();\n\t\t\t}\n\t\t});\n\n\t\taddMouseMotionListener(new MouseMotionAdapter() {\n\t\t\t@Override\n\t\t\tpublic void mouseMoved(MouseEvent e) {\n\t\t\t\tTile tile = findTile(e.getPoint());\n\t\t\t\tif (tile != hovered) {\n\t\t\t\t\thovered = tile;\n\t\t\t\t\trepaint();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\taddMouseListener(new MouseAdapter() {\n\t\t\t@Override\n\t\t\tpublic void mouseExited(MouseEvent e) {\n\t\t\t\tif (hovered != null) {\n\t\t\t\t\thovered = null;\n\t\t\t\t\trepaint();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void mouseClicked(MouseEvent e) {\n\t\t\t\tif (!SwingUtilities.isLeftMouseButton(e)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tTile tile = findTile(e.getPoint());\n\t\t\t\tif (tile != null && selectionListener != null) {\n\t\t\t\t\tselectionListener.itemSelected(tile.name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic void setItems(final Map<String, Double> valuesByName) {\n\t\ttiles.clear();\n\t\thovered = null;\n\t\tif (valuesByName != null) {\n\t\t\tfor (Map.Entry<String, Double> entry : valuesByName.entrySet()) {\n\t\t\t\tString name = entry.getKey();\n\t\t\t\tif (name == null || name.isEmpty()) {\n\t\t\t\t\tname = \"Unknown\";\n\t\t\t\t}\n\t\t\t\tdouble value = entry.getValue() == null ? 0.0 : entry.getValue();\n\t\t\t\tif (value <= 0) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\ttiles.add(new Tile(name, value));\n\t\t\t}\n\t\t}\n\t\tCollections.sort(tiles, new Comparator<Tile>() {\n\t\t\t@Override\n\t\t\tpublic int compare(Tile o1, Tile o2) {\n\t\t\t\treturn Double.compare(o2.value, o1.value);\n\t\t\t}\n\t\t});\n\t\tlayoutDirty = true;\n\t\trepaint();\n\t}\n\n\t@Override\n\tpublic String getToolTipText(MouseEvent event) {\n\t\tTile tile = findTile(event.getPoint());\n\t\tif (tile == null) {\n\t\t\treturn null;\n\t\t}\n\t\treturn \"<html><b>\" + escapeHtml(tile.name) + \"</b><br>\" + Formatter.iskFormat(tile.value) + \"</html>\";\n\t}\n\n\t@Override\n\tprotected void paintComponent(Graphics g) {\n\t\tsuper.paintComponent(g);\n\t\tif (tiles.isEmpty()) {\n\t\t\treturn;\n\t\t}\n\t\tGraphics2D g2 = (Graphics2D) g.create();\n\t\tg2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);\n\t\tupdateLayoutIfNeeded();\n\t\tfor (Tile tile : tiles) {\n\t\t\tif (tile.rect == null || tile.rect.width <= 0 || tile.rect.height <= 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tRectangle2D.Double paintRect = inset(tile.rect, GAP);\n\t\t\tif (paintRect.width <= 0 || paintRect.height <= 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tpaintCushion(g2, tile, paintRect);\n\t\t\tg2.setColor(tile.borderColor);\n\t\t\tg2.draw(paintRect);\n\t\t\tpaintLabel(g2, tile, paintRect);\n\t\t}\n\t\tif (hovered != null && hovered.rect != null) {\n\t\t\tRectangle2D.Double paintRect = inset(hovered.rect, GAP);\n\t\t\tg2.setColor(hovered.highlightColor);\n\t\t\tg2.draw(paintRect);\n\t\t}\n\t\tg2.dispose();\n\t}\n\n\tprivate void updateLayoutIfNeeded() {\n\t\tDimension size = getSize();\n\t\tif (size.width <= 0 || size.height <= 0) {\n\t\t\treturn;\n\t\t}\n\t\tif (!layoutDirty && lastSize != null && lastSize.equals(size)) {\n\t\t\treturn;\n\t\t}\n\t\tlastSize = size;\n\t\tlayoutDirty = false;\n\t\tlayoutTiles(size);\n\t}\n\n\tprivate void layoutTiles(Dimension size) {\n\t\tdouble total = 0.0;\n\t\tfor (Tile tile : tiles) {\n\t\t\ttotal += tile.value;\n\t\t\ttile.rect = null;\n\t\t}\n\t\tif (total <= 0) {\n\t\t\treturn;\n\t\t}\n\t\tInsets insets = getInsets();\n\t\tdouble x = insets.left;\n\t\tdouble y = insets.top;\n\t\tdouble width = size.getWidth() - insets.left - insets.right;\n\t\tdouble height = size.getHeight() - insets.top - insets.bottom;\n\t\tif (width <= 0 || height <= 0) {\n\t\t\treturn;\n\t\t}\n\t\tdouble aspect = width / height;\n\t\tif (aspect > MAX_TILE_ASPECT_RATIO) {\n\t\t\tdouble newWidth = height * MAX_TILE_ASPECT_RATIO;\n\t\t\tx += (width - newWidth) / 2.0;\n\t\t\twidth = newWidth;\n\t\t} else if ((1.0 / aspect) > MAX_TILE_ASPECT_RATIO) {\n\t\t\tdouble newHeight = width * MAX_TILE_ASPECT_RATIO;\n\t\t\ty += (height - newHeight) / 2.0;\n\t\t\theight = newHeight;\n\t\t}\n\t\tdouble area = width * height;\n\t\tdouble scale = area / total;\n\t\tif (!Double.isFinite(scale) || scale <= 0) {\n\t\t\treturn;\n\t\t}\n\t\tdouble minValue = MIN_TILE_SIZE / scale;\n\t\tList<Tile> layoutTiles = new ArrayList<>();\n\t\tfor (Tile tile : tiles) {\n\t\t\tif (tile.value >= minValue) {\n\t\t\t\tlayoutTiles.add(tile);\n\t\t\t}\n\t\t}\n\t\tif (layoutTiles.isEmpty()) {\n\t\t\treturn;\n\t\t}\n\t\tRectangle2D.Double remaining = new Rectangle2D.Double(x, y, width, height);\n\t\tint index = 0;\n\t\twhile (index < layoutTiles.size()) {\n\t\t\tList<Tile> row = squarifyRow(layoutTiles, index, remaining, scale);\n\t\t\tif (row.isEmpty()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tRectangle2D.Double next = layoutRow(remaining, scale, row);\n\t\t\tif (next == null) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tindex += row.size();\n\t\t\tremaining = next;\n\t\t}\n\t}\n\n\tprivate List<Tile> squarifyRow(List<Tile> tiles, int startIndex, Rectangle2D.Double rect, double scale) {\n\t\tList<Tile> row = new ArrayList<>();\n\t\tdouble length = Math.max(rect.width, rect.height);\n\t\tif (length <= 0 || scale <= 0) {\n\t\t\treturn row;\n\t\t}\n\t\tdouble scaledLengthSquare = (length * length) / scale;\n\t\tdouble sum = 0.0;\n\t\tdouble lastWorst = -1.0;\n\t\tfor (int i = startIndex; i < tiles.size(); i++) {\n\t\t\tTile tile = tiles.get(i);\n\t\t\tdouble nextSum = sum + tile.value;\n\t\t\tif (nextSum <= 0 || tile.value <= 0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdouble sumSquare = nextSum * nextSum;\n\t\t\tdouble worst = row.isEmpty()\n\t\t\t\t? Math.max(scaledLengthSquare * tile.value / sumSquare, sumSquare / (scaledLengthSquare * tile.value))\n\t\t\t\t: Math.max(scaledLengthSquare * row.get(0).value / sumSquare, sumSquare / (scaledLengthSquare * tile.value));\n\t\t\tif (lastWorst >= 0.0 && worst > lastWorst) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tlastWorst = worst;\n\t\t\trow.add(tile);\n\t\t\tsum = nextSum;\n\t\t}\n\t\tif (row.isEmpty() || lastWorst > MAX_TILE_ASPECT_RATIO) {\n\t\t\trow.clear();\n\t\t}\n\t\treturn row;\n\t}\n\n\tprivate Rectangle2D.Double layoutRow(Rectangle2D.Double rect, double scale, List<Tile> row) {\n\t\tif (row.isEmpty()) {\n\t\t\treturn null;\n\t\t}\n\t\tdouble sum = sumValues(row);\n\t\tif (sum <= 0) {\n\t\t\treturn null;\n\t\t}\n\t\tdouble primary = Math.max(rect.width, rect.height);\n\t\tif (primary <= 0) {\n\t\t\treturn null;\n\t\t}\n\t\tdouble secondary = (sum * scale) / primary;\n\t\tif (secondary < MIN_TILE_SIZE) {\n\t\t\treturn null;\n\t\t}\n\t\tboolean horizontal = rect.width >= rect.height;\n\t\tdouble offset = 0.0;\n\t\tdouble remaining = primary;\n\t\tfor (int i = 0; i < row.size(); i++) {\n\t\t\tTile tile = row.get(i);\n\t\t\tdouble childSize = tile.value / sum * primary;\n\t\t\tif (childSize > remaining) {\n\t\t\t\tchildSize = remaining;\n\t\t\t}\n\t\t\tremaining -= childSize;\n\t\t\tif (childSize >= MIN_TILE_SIZE) {\n\t\t\t\tif (horizontal) {\n\t\t\t\t\ttile.rect = new Rectangle2D.Double(rect.x + offset, rect.y, childSize, secondary);\n\t\t\t\t} else {\n\t\t\t\t\ttile.rect = new Rectangle2D.Double(rect.x, rect.y + offset, secondary, childSize);\n\t\t\t\t}\n\t\t\t\toffset += childSize;\n\t\t\t}\n\t\t}\n\t\tif (horizontal) {\n\t\t\treturn new Rectangle2D.Double(rect.x, rect.y + secondary, rect.width, rect.height - secondary);\n\t\t}\n\t\treturn new Rectangle2D.Double(rect.x + secondary, rect.y, rect.width - secondary, rect.height);\n\t}\n\n\tprivate double sumValues(List<Tile> tiles) {\n\t\tdouble sum = 0.0;\n\t\tfor (Tile tile : tiles) {\n\t\t\tsum += tile.value;\n\t\t}\n\t\treturn sum;\n\t}\n\n\tprivate Tile findTile(Point point) {\n\t\tupdateLayoutIfNeeded();\n\t\tfor (Tile tile : tiles) {\n\t\t\tif (tile.rect != null && tile.rect.contains(point)) {\n\t\t\t\treturn tile;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate void paintLabel(Graphics2D g2, Tile tile, Rectangle2D.Double rect) {\n\t\tif (labelFont != null) {\n\t\t\tg2.setFont(labelFont);\n\t\t}\n\t\tFontMetrics metrics = g2.getFontMetrics();\n\t\tint maxWidth = (int) (rect.width - LABEL_PADDING * 2);\n\t\tint maxHeight = (int) (rect.height - LABEL_PADDING * 2);\n\t\tif (maxWidth <= 10 || maxHeight < metrics.getHeight()) {\n\t\t\treturn;\n\t\t}\n\t\tg2.setColor(tile.textColor);\n\t\tString name = truncate(tile.name, metrics, maxWidth);\n\t\tif (!name.isEmpty()) {\n\t\t\tint x = (int) (rect.x + LABEL_PADDING);\n\t\t\tint y = (int) (rect.y + LABEL_PADDING + metrics.getAscent());\n\t\t\tg2.drawString(name, x, y);\n\t\t}\n\t\tif (maxHeight >= metrics.getHeight() * 2 + 2) {\n\t\t\tString value = Formatter.iskFormat(tile.value);\n\t\t\tString valueText = truncate(value, metrics, maxWidth);\n\t\t\tif (!valueText.isEmpty()) {\n\t\t\t\tint x = (int) (rect.x + LABEL_PADDING);\n\t\t\t\tint y = (int) (rect.y + LABEL_PADDING + metrics.getAscent() + metrics.getHeight() + 2);\n\t\t\t\tg2.drawString(valueText, x, y);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void paintCushion(Graphics2D g2, Tile tile, Rectangle2D.Double rect) {\n\t\tint width = (int) Math.round(rect.width);\n\t\tint height = (int) Math.round(rect.height);\n\t\tif (width < 2 || height < 2) {\n\t\t\tg2.setColor(tile.color);\n\t\t\tg2.fill(rect);\n\t\t\treturn;\n\t\t}\n\t\tBufferedImage cushion = getCushion(tile, width, height);\n\t\tif (cushion == null) {\n\t\t\tg2.setColor(tile.color);\n\t\t\tg2.fill(rect);\n\t\t\treturn;\n\t\t}\n\t\tint x = (int) Math.round(rect.x);\n\t\tint y = (int) Math.round(rect.y);\n\t\tg2.drawImage(cushion, x, y, width, height, null);\n\t}\n\n\tprivate BufferedImage getCushion(Tile tile, int width, int height) {\n\t\tif (tile.cushion != null && tile.cushionWidth == width && tile.cushionHeight == height) {\n\t\t\treturn tile.cushion;\n\t\t}\n\t\tBufferedImage cushion = renderCushion(tile, width, height);\n\t\ttile.cushion = cushion;\n\t\ttile.cushionWidth = width;\n\t\ttile.cushionHeight = height;\n\t\treturn cushion;\n\t}\n\n\tprivate BufferedImage renderCushion(Tile tile, int width, int height) {\n\t\tif (width <= 0 || height <= 0) {\n\t\t\treturn null;\n\t\t}\n\t\tdouble xx2 = 0.0;\n\t\tdouble xx1 = 0.0;\n\t\tdouble yy2 = 0.0;\n\t\tdouble yy1 = 0.0;\n\t\tif (width > 1) {\n\t\t\txx2 = squareRidge(xx2, CUSHION_HEIGHT, 0, width - 1);\n\t\t\txx1 = linearRidge(xx1, CUSHION_HEIGHT, 0, width - 1);\n\t\t}\n\t\tif (height > 1) {\n\t\t\tyy2 = squareRidge(yy2, CUSHION_HEIGHT, 0, height - 1);\n\t\t\tyy1 = linearRidge(yy1, CUSHION_HEIGHT, 0, height - 1);\n\t\t}\n\t\tBufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);\n\t\tint maxRed = Math.max(0, tile.color.getRed() - AMBIENT_LIGHT);\n\t\tint maxGreen = Math.max(0, tile.color.getGreen() - AMBIENT_LIGHT);\n\t\tint maxBlue = Math.max(0, tile.color.getBlue() - AMBIENT_LIGHT);\n\t\tfor (int y = 0; y < height; y++) {\n\t\t\tfor (int x = 0; x < width; x++) {\n\t\t\t\tdouble nx = 2.0 * xx2 * x + xx1;\n\t\t\t\tdouble ny = 2.0 * yy2 * y + yy1;\n\t\t\t\tdouble denom = Math.sqrt(nx * nx + ny * ny + 1.0);\n\t\t\t\tdouble cosa = (nx * LIGHT_X + ny * LIGHT_Y + LIGHT_Z) / denom;\n\t\t\t\tint red = (int) (maxRed * cosa + 0.5);\n\t\t\t\tint green = (int) (maxGreen * cosa + 0.5);\n\t\t\t\tint blue = (int) (maxBlue * cosa + 0.5);\n\t\t\t\tif (red < 0) {\n\t\t\t\t\tred = 0;\n\t\t\t\t}\n\t\t\t\tif (green < 0) {\n\t\t\t\t\tgreen = 0;\n\t\t\t\t}\n\t\t\t\tif (blue < 0) {\n\t\t\t\t\tblue = 0;\n\t\t\t\t}\n\t\t\t\tred = Math.min(255, red + AMBIENT_LIGHT);\n\t\t\t\tgreen = Math.min(255, green + AMBIENT_LIGHT);\n\t\t\t\tblue = Math.min(255, blue + AMBIENT_LIGHT);\n\t\t\t\tint rgb = (0xFF << 24) | (red << 16) | (green << 8) | blue;\n\t\t\t\timage.setRGB(x, y, rgb);\n\t\t\t}\n\t\t}\n\t\treturn image;\n\t}\n\n\tprivate double squareRidge(double squareCoefficient, double height, int x1, int x2) {\n\t\tif (x2 != x1) {\n\t\t\tsquareCoefficient -= 4.0 * height / (x2 - x1);\n\t\t}\n\t\treturn squareCoefficient;\n\t}\n\n\tprivate double linearRidge(double linearCoefficient, double height, int x1, int x2) {\n\t\tif (x2 != x1) {\n\t\t\tlinearCoefficient += 4.0 * height * (x2 + x1) / (x2 - x1);\n\t\t}\n\t\treturn linearCoefficient;\n\t}\n\n\tprivate Rectangle2D.Double inset(Rectangle2D.Double rect, double inset) {\n\t\tdouble value = inset / 2.0;\n\t\tdouble x = rect.x + value;\n\t\tdouble y = rect.y + value;\n\t\tdouble width = rect.width - inset;\n\t\tdouble height = rect.height - inset;\n\t\treturn new Rectangle2D.Double(x, y, width, height);\n\t}\n\n\tprivate String truncate(String text, FontMetrics metrics, int maxWidth) {\n\t\tif (text == null) {\n\t\t\treturn \"\";\n\t\t}\n\t\tif (metrics.stringWidth(text) <= maxWidth) {\n\t\t\treturn text;\n\t\t}\n\t\tString ellipsis = \"...\";\n\t\tint ellipsisWidth = metrics.stringWidth(ellipsis);\n\t\tint available = maxWidth - ellipsisWidth;\n\t\tif (available <= 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tint length = text.length();\n\t\twhile (length > 0 && metrics.stringWidth(text.substring(0, length)) > available) {\n\t\t\tlength--;\n\t\t}\n\t\tif (length <= 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn text.substring(0, length) + ellipsis;\n\t}\n\n\tprivate String escapeHtml(String text) {\n\t\tif (text == null) {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn text.replace(\"&\", \"&amp;\").replace(\"<\", \"&lt;\").replace(\">\", \"&gt;\");\n\t}\n\n\tprivate static Color colorForName(String name) {\n\t\tint hash = name.hashCode();\n\t\tfloat hue = ((hash >>> 16) & 0xFF) / 255f;\n\t\tfloat saturation = 0.45f + ((hash >>> 8) & 0x7F) / 255f * 0.35f;\n\t\tfloat brightness = 0.85f;\n\t\treturn Color.getHSBColor(hue, saturation, brightness);\n\t}\n\n\tprivate static Color darken(Color color, double factor) {\n\t\tint r = (int) Math.max(0, color.getRed() * factor);\n\t\tint g = (int) Math.max(0, color.getGreen() * factor);\n\t\tint b = (int) Math.max(0, color.getBlue() * factor);\n\t\treturn new Color(r, g, b, color.getAlpha());\n\t}\n\n\tprivate static boolean isDark(Color color) {\n\t\tdouble luminance = (0.299 * color.getRed() + 0.587 * color.getGreen() + 0.114 * color.getBlue()) / 255.0;\n\t\treturn luminance < 0.5;\n\t}\n\n\tprivate static class Tile {\n\t\tprivate final String name;\n\t\tprivate final double value;\n\t\tprivate final Color color;\n\t\tprivate final Color borderColor;\n\t\tprivate final Color highlightColor;\n\t\tprivate final Color textColor;\n\t\tprivate Rectangle2D.Double rect;\n\t\tprivate BufferedImage cushion;\n\t\tprivate int cushionWidth;\n\t\tprivate int cushionHeight;\n\n\t\tprivate Tile(String name, double value) {\n\t\t\tthis.name = name;\n\t\t\tthis.value = value;\n\t\t\tthis.color = colorForName(name);\n\t\t\tthis.borderColor = darken(color, 0.85);\n\t\t\tthis.highlightColor = darken(color, 0.65);\n\t\t\tthis.textColor = isDark(color) ? Color.WHITE : Color.BLACK;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/JWorking.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.components;\n\nimport java.awt.Dimension;\nimport java.awt.Graphics;\nimport java.awt.Graphics2D;\nimport java.awt.image.BufferedImage;\nimport javax.swing.JPanel;\nimport javax.swing.event.AncestorEvent;\nimport javax.swing.event.AncestorListener;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.gui.images.Images;\n\n\npublic class JWorking extends JPanel {\n\n\tprivate static final int IMG_FRAMES = 24;\n\tprivate static final int IMG_WIDTH = 32;\n\tprivate static final int IMG_HEIGHT = 32;\n\n\tprivate final BufferedImage[] loadingImages;\n\tprivate int currentLoadingImage = 0;\n\tprivate Worker worker;\n\n\tpublic JWorking() {\n\t\tthis.setMinimumSize(new Dimension(IMG_WIDTH, IMG_HEIGHT));\n\t\tthis.setPreferredSize(new Dimension(IMG_WIDTH, IMG_HEIGHT));\n\t\tthis.setMaximumSize(new Dimension(IMG_WIDTH, IMG_HEIGHT));\n\t\tthis.setDoubleBuffered(true);\n\t\tloadingImages = new BufferedImage[IMG_FRAMES];\n\t\tfor (int i = 0; i < IMG_FRAMES; i++) {\n\t\t\tString number;\n\t\t\tif ((i + 1) < 10) {\n\t\t\t\tnumber = \"0\" + (i + 1);\n\t\t\t} else {\n\t\t\t\tnumber = \"\" + (i + 1);\n\t\t\t}\n\t\t\tloadingImages[i] = Images.getBufferedImage(\"working\" + number + \".png\");\n\t\t}\n\t\tListenerClass listenerClass = new ListenerClass();\n\t\taddAncestorListener(listenerClass);\n\t}\n\n\tprivate void start() {\n\t\tif (worker == null || worker.isStopped()) { //Only start if not already running\n\t\t\tworker = new Worker(this);\n\t\t\tworker.start();\n\t\t}\n\t}\n\n\tprivate void end() {\n\t\tif (worker != null) {\n\t\t\tworker.stopASAP();\n\t\t}\n\t}\n\n\t@Override\n\tprotected void paintComponent(final Graphics g) {\n\t\tsuper.paintComponent(g);\n\t\tGraphics2D g2 = (Graphics2D) g;\n\t\tif (loadingImages[currentLoadingImage] != null) {\n\t\t\tg2.drawImage(loadingImages[currentLoadingImage], 0, 0, null);\n\t\t}\n\t}\n\n\tprivate class ListenerClass implements AncestorListener {\n\n\t\t@Override\n\t\tpublic void ancestorAdded(AncestorEvent event) {\n\t\t\tstart();\n\t\t}\n\n\t\t@Override\n\t\tpublic void ancestorRemoved(AncestorEvent event) {\n\t\t\t end();\n\t\t}\n\n\t\t@Override\n\t\tpublic void ancestorMoved(AncestorEvent event) { }\n\t}\n\n\tpublic class Worker extends Thread {\n\n\t\tprivate static final int UPDATE_DELAY = 100;\n\t\tprivate final JWorking jWorking;\n\t\tprivate boolean run = true;\n\n\t\tpublic Worker(final JWorking jWorking) {\n\t\t\tthis.jWorking = jWorking;\n\t\t\tcurrentLoadingImage = 0;\n\t\t}\n\n\t\t@Override\n\t\tpublic void run() {\n\t\t\twhile (isRun()) {\n\t\t\t\tcurrentLoadingImage++;\n\t\t\t\tif (currentLoadingImage >= IMG_FRAMES) {\n\t\t\t\t\tcurrentLoadingImage = 0;\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tProgram.ensureEDT(new Runnable() {\n\t\t\t\t\t\t@Override\n\t\t\t\t\t\tpublic void run() {\n\t\t\t\t\t\t\tjWorking.repaint();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} catch (RuntimeException e) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tsynchronized(this) {\n\t\t\t\t\t\twait(UPDATE_DELAY);\n\t\t\t\t\t}\n\t\t\t\t} catch (InterruptedException e) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate synchronized boolean isRun() {\n\t\t\treturn run;\n\t\t}\n\n\t\tpublic synchronized void stopASAP() {\n\t\t\trun = false;\n\t\t}\n\n\t\tpublic synchronized boolean isStopped() {\n\t\t\treturn !run;\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/components/ListComboBoxModel.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.components;\r\n\r\nimport java.util.Collection;\r\nimport javax.swing.DefaultComboBoxModel;\r\n\r\n\r\npublic class ListComboBoxModel<E> extends DefaultComboBoxModel<E> {\r\n\r\n\tpublic ListComboBoxModel() {}\r\n\r\n\tpublic ListComboBoxModel(Collection<E> items) {\r\n\t\tsuper();\r\n\t\tfor (E e : items) {\r\n\t\t\taddElement(e);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic ListComboBoxModel(E[] items) {\r\n\t\tsuper(items);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/filter/ColumnCache.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.filter;\r\n\r\nimport java.util.Map;\r\n\r\n\r\npublic interface ColumnCache<E> {\r\n\tpublic Map<E, String> getCache();\r\n\tpublic void addCache(E e, String haystack);\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/filter/ExportDialog.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.filter;\n\nimport ca.odell.glazedlists.EventList;\nimport java.awt.CardLayout;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.io.File;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport javax.swing.AbstractListModel;\nimport javax.swing.BorderFactory;\nimport javax.swing.ButtonGroup;\nimport javax.swing.GroupLayout;\nimport javax.swing.JButton;\nimport javax.swing.JCheckBox;\nimport javax.swing.JComboBox;\nimport javax.swing.JComponent;\nimport javax.swing.JFrame;\nimport javax.swing.JLabel;\nimport javax.swing.JOptionPane;\nimport javax.swing.JPanel;\nimport javax.swing.JRadioButton;\nimport javax.swing.JScrollPane;\nimport javax.swing.JSeparator;\nimport javax.swing.JSlider;\nimport javax.swing.JTextField;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings;\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings.ColumnSelection;\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings.DecimalSeparator;\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings.ExportFormat;\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings.FilterSelection;\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings.LineDelimiter;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.StringComparators;\nimport net.nikr.eve.jeveasset.gui.shared.DocumentFactory;\nimport net.nikr.eve.jeveasset.gui.shared.components.JCustomFileChooser;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDefaultField;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMultiSelectionList;\nimport net.nikr.eve.jeveasset.gui.shared.components.ListComboBoxModel;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.View;\nimport net.nikr.eve.jeveasset.i18n.DialoguesExport;\n\npublic class ExportDialog<E> extends JDialogCentered {\n\n\tprivate enum ExportAction {\n\t\tOK,\n\t\tCANCEL,\n\t\tDEFAULT,\n\t\tFILTER_CHANGED,\n\t\tVIEW_CHANGED,\n\t\tFORMAT_CHANGED\n\t}\n\n\t//Filter\n\tprivate final JRadioButton jNoFilter;\n\tprivate final JRadioButton jSavedFilter;\n\tprivate final JRadioButton jCurrentFilter;\n\tprivate final JComboBox<String> jFilters;\n\t//Columns\n\tprivate final JRadioButton jViewCurrent;\n\tprivate final JRadioButton jViewSelect;\n\tprivate final JRadioButton jViewSaved;\n\tprivate final JComboBox<String> jViews;\n\tprivate final JMultiSelectionList<EnumTableColumn<E>> jColumnSelection;\n\tprivate final JButton jViewSelectAll;\n\t//Format\n\tprivate final JRadioButton jCsv;\n\tprivate final JRadioButton jHtml;\n\tprivate final JRadioButton jSql;\n\t//Options\n\tprivate final CardLayout cardLayout;\n\tprivate final JPanel jOptionPanel;\n\t//CSV\n\tprivate final JComboBox<LineDelimiter> jLineDelimiter;\n\tprivate final JComboBox<DecimalSeparator> jDecimalSeparator;\n\t//Html\n\tprivate final JCheckBox jHtmlStyle;\n\tprivate final JCheckBox jHtmlIGB;\n\tprivate final JSlider jHtmlHeaderRepeat;\n\t//SQL\n\tprivate final JTextField jTableName;\n\tprivate final JCheckBox jDropTable;\n\tprivate final JCheckBox jCreateTable;\n\tprivate final JCheckBox jExtendedInserts;\n\n\tprivate final JButton jOK;\n\n\tprivate final JCustomFileChooser jFileChooser;\n\n\tprivate final String toolName;\n\tprivate final ColumnCache<E> columnCache;\n\tprivate final SimpleFilterControl<E> filterControl;\n\tprivate final SimpleTableFormat<E> tableFormat;\n\tprivate final EventList<E> eventList;\n\n\tprivate final Map<String, EnumTableColumn<E>> columns = new HashMap<>();\n\tprivate final List<EnumTableColumn<E>> columnIndex = new ArrayList<>();\n\n\tpublic ExportDialog(final JFrame jFrame, final String toolName, ColumnCache<E> columnCache, final SimpleFilterControl<E> filterControl, SimpleTableFormat<E> tableFormat, final EventList<E> eventList) {\n\t\tsuper(null, DialoguesExport.get().export(), jFrame, Images.DIALOG_CSV_EXPORT.getImage());\n\t\tthis.toolName = toolName;\n\t\tthis.columnCache = columnCache;\n\t\tthis.filterControl = filterControl;\n\t\tthis.tableFormat = tableFormat;\n\t\tthis.eventList = eventList;\n\n\t\tListenerClass listener = new ListenerClass();\n\t\tlayout.setAutoCreateContainerGaps(false);\n\n\t\tjFileChooser = new JCustomFileChooser(Settings.get().getExportSettings(toolName).getExportFormat().getExtension());\n\t//Format\n\t\tJPanel jFormatPanel = new JPanel();\n\t\tjFormatPanel.setBorder(BorderFactory.createTitledBorder(DialoguesExport.get().format()));\n\t\tGroupLayout formatLayout = new GroupLayout(jFormatPanel);\n\t\tjFormatPanel.setLayout(formatLayout);\n\t\tformatLayout.setAutoCreateGaps(true);\n\t\tformatLayout.setAutoCreateContainerGaps(true);\n\n\t\tjCsv = new JRadioButton(DialoguesExport.get().csv());\n\t\tjCsv.setActionCommand(ExportAction.FORMAT_CHANGED.name());\n\t\tjCsv.addActionListener(listener);\n\n\t\tjHtml = new JRadioButton(DialoguesExport.get().html());\n\t\tjHtml.setActionCommand(ExportAction.FORMAT_CHANGED.name());\n\t\tjHtml.addActionListener(listener);\n\n\t\tjSql = new JRadioButton(DialoguesExport.get().sql());\n\t\tjSql.setActionCommand(ExportAction.FORMAT_CHANGED.name());\n\t\tjSql.addActionListener(listener);\n\n\t\tButtonGroup jFormatButtonGroup = new ButtonGroup();\n\t\tjFormatButtonGroup.add(jCsv);\n\t\tjFormatButtonGroup.add(jHtml);\n\t\tjFormatButtonGroup.add(jSql);\n\n\t\tformatLayout.setHorizontalGroup(\n\t\t\tformatLayout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jCsv)\n\t\t\t\t\t.addComponent(jHtml)\n\t\t\t\t\t.addComponent(jSql)\n\t\t);\n\t\tformatLayout.setVerticalGroup(\n\t\t\tformatLayout.createParallelGroup()\n\t\t\t\t\t.addComponent(jCsv, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jHtml, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jSql, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t);\n\t//Options\n\t\tcardLayout = new CardLayout();\n\t\tjOptionPanel = new JPanel(cardLayout);\n\t//Csv\n\t\tJOptionPanel jCsvPanel = new JOptionPanel();\n\t\tjOptionPanel.add(jCsvPanel, ExportFormat.CSV.name());\n\n\t\tJLabel jLineDelimiterLabel = new JLabel(DialoguesExport.get().linesTerminated());\n\t\tjLineDelimiter = new JComboBox<>(LineDelimiter.values());\n\t\tjCsvPanel.add(jLineDelimiterLabel);\n\t\tjCsvPanel.add(jLineDelimiter);\n\t//Sql\n\t\tJOptionPanel jSqlPanel = new JOptionPanel();\n\t\tjOptionPanel.add(jSqlPanel, ExportFormat.SQL.name());\n\n\t\tJLabel jTableNameLabel = new JLabel(DialoguesExport.get().tableName());\n\t\tjTableName = new JDefaultField(ExportSettings.getDefaultTableName(toolName));\n\t\tjTableName.setDocument(DocumentFactory.getWordPlainDocument());\n\t\tjSqlPanel.add(jTableNameLabel);\n\t\tjSqlPanel.add(jTableName);\n\n\t\tjDropTable = new JCheckBox(DialoguesExport.get().dropTable());\n\t\tjSqlPanel.add(jDropTable);\n\n\t\tjCreateTable = new JCheckBox(DialoguesExport.get().createTable());\n\t\tjSqlPanel.add(jCreateTable);\n\n\t\tjExtendedInserts = new JCheckBox(DialoguesExport.get().extendedInserts());\n\t\tjSqlPanel.add(jExtendedInserts);\n\t//Html\n\t\tJOptionPanel jHtmlPanel = new JOptionPanel();\n\t\tjOptionPanel.add(jHtmlPanel, ExportFormat.HTML.name());\n\n\t\tjHtmlStyle = new JCheckBox(DialoguesExport.get().htmlStyled());\n\t\tjHtmlPanel.add(jHtmlStyle);\n\n\t\tjHtmlIGB = new JCheckBox(DialoguesExport.get().htmlIGB());\n\t\tjHtmlPanel.add(jHtmlIGB);\n\n\t\tJLabel jHtmlHeaderRepeatLabel = new JLabel(DialoguesExport.get().htmlHeaderRepeat());\n\t\tjHtmlHeaderRepeat = new JSlider(JSlider.HORIZONTAL, 0, 50, 0);\n\t\tjHtmlHeaderRepeat.setMajorTickSpacing(10);\n\t\tjHtmlHeaderRepeat.setMinorTickSpacing(5);\n\t\tjHtmlHeaderRepeat.setSnapToTicks(true);\n\t\tjHtmlHeaderRepeat.setPaintTicks(true);\n\t\tjHtmlHeaderRepeat.setPaintLabels(true);\n\t\tjHtmlPanel.add(jHtmlHeaderRepeatLabel);\n\t\tjHtmlPanel.add(jHtmlHeaderRepeat);\n\t//Decimal\n\t\tJPanel jDecimalPanel = new JPanel();\n\t\tjDecimalPanel.setBorder(BorderFactory.createTitledBorder(DialoguesExport.get().decimalSeparator()));\n\t\tGroupLayout decimalLayout = new GroupLayout(jDecimalPanel);\n\t\tjDecimalPanel.setLayout(decimalLayout);\n\t\tdecimalLayout.setAutoCreateGaps(true);\n\t\tdecimalLayout.setAutoCreateContainerGaps(true);\n\n\t\tjDecimalSeparator = new JComboBox<>(DecimalSeparator.values());\n\t\tjDecimalPanel.add(jDecimalSeparator);\n\n\t\tdecimalLayout.setHorizontalGroup(\n\t\t\tdecimalLayout.createParallelGroup()\n\t\t\t\t\t.addComponent(jDecimalSeparator)\n\t\t);\n\t\tdecimalLayout.setVerticalGroup(\n\t\t\tdecimalLayout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jDecimalSeparator, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t);\n\t//Filters\n\t\tJPanel jFilterPanel = new JPanel();\n\t\tjFilterPanel.setBorder(BorderFactory.createTitledBorder(DialoguesExport.get().filters()));\n\t\tGroupLayout filterLayout = new GroupLayout(jFilterPanel);\n\t\tjFilterPanel.setLayout(filterLayout);\n\t\tfilterLayout.setAutoCreateGaps(true);\n\t\tfilterLayout.setAutoCreateContainerGaps(true);\n\n\t\tjNoFilter = new JRadioButton(DialoguesExport.get().noFilter());\n\t\tjNoFilter.setActionCommand(ExportAction.FILTER_CHANGED.name());\n\t\tjNoFilter.addActionListener(listener);\n\t\tjNoFilter.setSelected(true);\n\n\t\tjCurrentFilter = new JRadioButton(DialoguesExport.get().currentFilter());\n\t\tjCurrentFilter.setActionCommand(ExportAction.FILTER_CHANGED.name());\n\t\tjCurrentFilter.addActionListener(listener);\n\n\t\tjSavedFilter = new JRadioButton(DialoguesExport.get().savedFilter());\n\t\tjSavedFilter.setActionCommand(ExportAction.FILTER_CHANGED.name());\n\t\tjSavedFilter.addActionListener(listener);\n\n\t\tButtonGroup jFilterButtonGroup = new ButtonGroup();\n\t\tjFilterButtonGroup.add(jNoFilter);\n\t\tjFilterButtonGroup.add(jSavedFilter);\n\t\tjFilterButtonGroup.add(jCurrentFilter);\n\n\t\tjFilters = new JComboBox<>();\n\n\t\tfilterLayout.setHorizontalGroup(\n\t\t\tfilterLayout.createParallelGroup()\n\t\t\t\t\t.addComponent(jNoFilter)\n\t\t\t\t\t.addComponent(jCurrentFilter)\n\t\t\t\t\t.addComponent(jSavedFilter)\n\t\t\t\t\t.addGroup(filterLayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t\t.addGroup(filterLayout.createSequentialGroup()\n\t\t\t\t\t\t\t.addGap(20)\n\t\t\t\t\t\t\t.addComponent(jFilters, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t);\n\t\tfilterLayout.setVerticalGroup(\n\t\t\tfilterLayout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jNoFilter, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jCurrentFilter, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jSavedFilter, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jFilters, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t);\n\t//Columns\n\t\tJPanel jColumnPanel = new JPanel();\n\t\tjColumnPanel.setBorder(BorderFactory.createTitledBorder(DialoguesExport.get().columns()));\n\t\tGroupLayout columnLayout = new GroupLayout(jColumnPanel);\n\t\tjColumnPanel.setLayout(columnLayout);\n\t\tcolumnLayout.setAutoCreateGaps(true);\n\t\tcolumnLayout.setAutoCreateContainerGaps(true);\n\n\t\tjViewCurrent = new JRadioButton(DialoguesExport.get().viewCurrent());\n\t\tjViewCurrent.setActionCommand(ExportAction.VIEW_CHANGED.name());\n\t\tjViewCurrent.addActionListener(listener);\n\t\tjViewCurrent.setSelected(true);\n\n\t\tjViewSaved = new JRadioButton(DialoguesExport.get().viewSaved());\n\t\tjViewSaved.setActionCommand(ExportAction.VIEW_CHANGED.name());\n\t\tjViewSaved.addActionListener(listener);\n\n\t\tjViews = new JComboBox<>();\n\n\t\tjViewSelect = new JRadioButton(DialoguesExport.get().viewSelect());\n\t\tjViewSelect.setActionCommand(ExportAction.VIEW_CHANGED.name());\n\t\tjViewSelect.addActionListener(listener);\n\n\t\tfinal List<EnumTableColumn<E>> enumColumns = tableFormat.getAllColumns();\n\t\tcolumnIndex.addAll(enumColumns);\n\t\tfor (EnumTableColumn<E> column : enumColumns) {\n\t\t\tcolumns.put(column.name(), column);\n\t\t}\n\n\t\tjViewSelectAll = new JButton(DialoguesExport.get().viewSelectAll());\n\t\tjViewSelectAll.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tjColumnSelection.toggleSelectAll();\n\t\t\t}\n\t\t});\n\t\tjViewSelectAll.setEnabled(false);\n\n\t\tjColumnSelection = new JMultiSelectionList<>(columnIndex);\n\t\tjColumnSelection.clearSelection();\n\t\tjColumnSelection.setEnabled(false);\n\n\t\tJScrollPane jColumnSelectionPanel = new JScrollPane(jColumnSelection);\n\n\t\tButtonGroup jViewButtonGroup = new ButtonGroup();\n\t\tjViewButtonGroup.add(jViewCurrent);\n\t\tjViewButtonGroup.add(jViewSaved);\n\t\tjViewButtonGroup.add(jViewSelect);\n\n\t\tcolumnLayout.setHorizontalGroup(\n\t\t\tcolumnLayout.createParallelGroup()\n\t\t\t\t\t.addComponent(jViewCurrent)\n\t\t\t\t\t.addComponent(jViewSaved)\n\t\t\t\t\t.addComponent(jViewSelect)\n\t\t\t\t\t.addGroup(columnLayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t\t.addGroup(columnLayout.createSequentialGroup()\n\t\t\t\t\t\t\t.addGap(20)\n\t\t\t\t\t\t\t.addGroup(columnLayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t\t\t\t.addComponent(jViews, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t\t\t\t\t.addComponent(jViewSelectAll, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t\t\t\t\t.addComponent(jColumnSelectionPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t);\n\t\tcolumnLayout.setVerticalGroup(\n\t\t\tcolumnLayout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jViewCurrent, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jViewSaved, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jViews, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jViewSelect, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jColumnSelectionPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t\t.addComponent(jViewSelectAll, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t);\n\t//Buttons\n\t\tJSeparator jButtonSeparator = new JSeparator();\n\n\t\tjOK = new JButton(DialoguesExport.get().ok());\n\t\tjOK.setActionCommand(ExportAction.OK.name());\n\t\tjOK.addActionListener(listener);\n\n\t\tJButton jDefault = new JButton(DialoguesExport.get().defaultSettings());\n\t\tjDefault.setActionCommand(ExportAction.DEFAULT.name());\n\t\tjDefault.addActionListener(listener);\n\n\t\tJButton jCancel = new JButton(DialoguesExport.get().cancel());\n\t\tjCancel.setActionCommand(ExportAction.CANCEL.name());\n\t\tjCancel.addActionListener(listener);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addContainerGap()\n\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t\t//Format\n\t\t\t\t\t\t.addComponent(jFormatPanel, 250, 250, 250)\n\t\t\t\t\t\t.addComponent(jOptionPanel, 250, 250, 250)\n\t\t\t\t\t\t.addComponent(jDecimalPanel, 250, 250, 250)\n\t\t\t\t\t\t.addComponent(jFilterPanel, 250, 250, 250)\n\t\t\t\t\t)\n\t\t\t\t\t.addGap(10)\n\t\t\t\t\t.addComponent(jColumnPanel, 250, 250, 250)\n\t\t\t\t\t.addContainerGap()\n\t\t\t\t)\n\t\t\t\t.addComponent(jButtonSeparator)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addContainerGap()\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addComponent(jDefault, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addContainerGap()\n\t\t\t\t)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addContainerGap()\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t.addComponent(jFormatPanel)\n\t\t\t\t\t\t.addComponent(jOptionPanel)\n\t\t\t\t\t\t.addComponent(jDecimalPanel)\n\t\t\t\t\t\t.addComponent(jFilterPanel)\n\t\t\t\t\t)\n\t\t\t\t\t.addComponent(jColumnPanel)\n\t\t\t\t)\n\t\t\t\t.addComponent(jButtonSeparator, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jDefault, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addContainerGap()\n\t\t);\n\t}\n\n\tprivate void updateColumns() {\n\t\tfinal List<EnumTableColumn<E>> enumColumns = tableFormat.getAllColumns();\n\t\tcolumns.clear();\n\t\tcolumnIndex.clear();\n\t\tcolumnIndex.addAll(enumColumns);\n\t\tfor (EnumTableColumn<E> column : enumColumns) {\n\t\t\tcolumns.put(column.name(), column);\n\t\t}\n\t\tjColumnSelection.setModel(new AbstractListModel<EnumTableColumn<E>>() {\n\t\t\t@Override\n\t\t\tpublic int getSize() {\n\t\t\t\treturn columnIndex.size();\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic EnumTableColumn<E> getElementAt(int index) {\n\t\t\t\treturn columnIndex.get(index);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate List<String> getExportColumns() {\n\t\tList<String> selectedColumns = new ArrayList<>();\n\t\tfor (EnumTableColumn<E> column : jColumnSelection.getSelectedValuesList()) {\n\t\t\tselectedColumns.add(column.name());\n\t\t}\n\t\treturn selectedColumns;\n\t}\n\n\tprivate boolean browse() {\n\t\tFile file = new File(Settings.get().getExportSettings(toolName).getFilename());\n\t\tFile path = new File(Settings.get().getExportSettings(toolName).getPath());\n\t\tif (path.exists()) {\n\t\t\tjFileChooser.setCurrentDirectory(path);\n\t\t\tjFileChooser.setSelectedFile(file);\n\t\t} else {\n\t\t\tjFileChooser.setCurrentDirectory(new File(Settings.get().getExportSettings(toolName).getDefaultPath()));\n\t\t\tjFileChooser.setSelectedFile(new File(Settings.get().getExportSettings(toolName).getDefaultFilename()));\n\t\t}\n\t\tint bFound = jFileChooser.showDialog(getDialog(), DialoguesExport.get().ok());\n\t\tif (bFound == JCustomFileChooser.APPROVE_OPTION) {\n\t\t\tfile = jFileChooser.getSelectedFile();\n\t\t\tSettings.get().getExportSettings(toolName).setFilename(file.getAbsolutePath());\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tprivate void saveSettings() {\n\t\tSettings.lock(\"Export Settings (Save)\"); //Lock for Export Settings (Save)\n\t\t//Decimal\n\t\tSettings.get().getExportSettings(toolName).setDecimalSeparator((DecimalSeparator) jDecimalSeparator.getSelectedItem());\n\t\t//CSV\n\t\tSettings.get().getExportSettings(toolName).setCsvLineDelimiter((LineDelimiter) jLineDelimiter.getSelectedItem());\n\t\t//SQL\n\t\tSettings.get().getExportSettings(toolName).setSqlTableName(jTableName.getText());\n\t\tSettings.get().getExportSettings(toolName).setSqlDropTable(jDropTable.isSelected());\n\t\tSettings.get().getExportSettings(toolName).setSqlCreateTable(jCreateTable.isSelected());\n\t\tSettings.get().getExportSettings(toolName).setSqlExtendedInserts(jExtendedInserts.isSelected());\n\t\t//HTML\n\t\tSettings.get().getExportSettings(toolName).setHtmlStyled(jHtmlStyle.isSelected());\n\t\tSettings.get().getExportSettings(toolName).setHtmlIGB(jHtmlIGB.isSelected());\n\t\tSettings.get().getExportSettings(toolName).setHtmlRepeatHeader(jHtmlHeaderRepeat.getValue());\n\t\t//Format\n\t\tExportFormat exportFormat = ExportFormat.CSV;\n\t\tif (jCsv.isSelected()) {\n\t\t\texportFormat = ExportFormat.CSV;\n\t\t} else if (jHtml.isSelected()) {\n\t\t\texportFormat = ExportFormat.HTML;\n\t\t} else if (jSql.isSelected()) {\n\t\t\texportFormat = ExportFormat.SQL;\n\t\t}\n\t\tSettings.get().getExportSettings(toolName).setExportFormat(exportFormat);\n\t\t//Filter\n\t\tFilterSelection filterSelection = FilterSelection.NONE;\n\t\tif (jNoFilter.isSelected()) {\n\t\t\tfilterSelection = FilterSelection.NONE;\n\t\t} else if (jCurrentFilter.isSelected()) {\n\t\t\tfilterSelection = FilterSelection.CURRENT;\n\t\t} else if (jSavedFilter.isSelected()) {\n\t\t\tfilterSelection = FilterSelection.SAVED;\n\t\t}\n\t\tSettings.get().getExportSettings(toolName).setFilterSelection(filterSelection);\n\t\t//View\n\t\tColumnSelection columnSelection = ColumnSelection.SHOWN;\n\t\tif (jViewCurrent.isSelected()) {\n\t\t\tcolumnSelection = ColumnSelection.SHOWN;\n\t\t} else if (jViewSaved.isSelected()) {\n\t\t\tcolumnSelection = ColumnSelection.SAVED;\n\t\t} else if (jViewSelect.isSelected()) {\n\t\t\tcolumnSelection = ColumnSelection.SELECTED;\n\t\t}\n\t\tSettings.get().getExportSettings(toolName).setColumnSelection(columnSelection);\n\t\t//Columns\n\t\tif (jColumnSelection.getSelectedIndices().length == columns.size()) { //All is selected - nothing worth saving...\n\t\t\tSettings.get().getExportSettings(toolName).putTableExportColumns(null); //null = all\n\t\t} else {\n\t\t\tSettings.get().getExportSettings(toolName).putTableExportColumns(getExportColumns());\n\t\t}\n\t\t//Filter Name (Make sure there is a selected item and that it is not the filler text for empty list)\n\t\tif (jFilters.getSelectedItem() != null\n\t\t\t\t&& !DialoguesExport.get().noSavedFilter().equals(jFilters.getSelectedItem())) {\n\t\t\tSettings.get().getExportSettings(toolName).setFilterName((String) jFilters.getSelectedItem());\n\t\t} else {\n\t\t\tSettings.get().getExportSettings(toolName).setFilterName(null);\n\t\t}\n\t\t//View Name (Make sure there is a selected item and that is is not filler text for empty list)\n\t\tif (jViews.getSelectedItem() != null\n\t\t\t\t&& !DialoguesExport.get().viewNoSaved().equals(jViews.getSelectedItem())) {\n\t\t\tSettings.get().getExportSettings(toolName).setViewName((String) jViews.getSelectedItem());\n\t\t} else {\n\t\t\tSettings.get().getExportSettings(toolName).setViewName(null);\n\t\t}\n\t\tSettings.unlock(\"Export Settings (Save)\"); //Unlock for Export Settings (Save)\n\t\tfilterControl.saveSettings(\"Export Settings (Save)\");\n\t}\n\n\tprivate void loadSettings() {\n\t\t//Decimal\n\t\tjDecimalSeparator.setSelectedItem(Settings.get().getExportSettings(toolName).getDecimalSeparator());\n\t\t//CSV\n\t\tjLineDelimiter.setSelectedItem(Settings.get().getExportSettings(toolName).getCsvLineDelimiter());\n\t\t//SQL\n\t\tjTableName.setText(Settings.get().getExportSettings(toolName).getSqlTableName());\n\t\tjDropTable.setSelected(Settings.get().getExportSettings(toolName).isSqlDropTable());\n\t\tjCreateTable.setSelected(Settings.get().getExportSettings(toolName).isSqlCreateTable());\n\t\tjExtendedInserts.setSelected(Settings.get().getExportSettings(toolName).isSqlExtendedInserts());\n\t\t//HTML\n\t\tjHtmlStyle.setSelected(Settings.get().getExportSettings(toolName).isHtmlStyled());\n\t\tjHtmlIGB.setSelected(Settings.get().getExportSettings(toolName).isHtmlIGB());\n\t\tjHtmlHeaderRepeat.setValue(Settings.get().getExportSettings(toolName).getHtmlRepeatHeader());\n\t\t//Filename\n\t\tExportFormat exportFormat = Settings.get().getExportSettings(toolName).getExportFormat();\n\t\tjFileChooser.setExtension(exportFormat.getExtension());\n\t\t//Columns (Shared)\n\t\tjColumnSelection.clearSelection();\n\t\tList<String> selectedColumns = Settings.get().getExportSettings(toolName).getTableExportColumns();\n\t\tif (selectedColumns.isEmpty()) {\n\t\t\tjColumnSelection.selectAll();\n\t\t} else {\n\t\t\tList<Integer> selections = new ArrayList<>();\n\t\t\tfor (String column : selectedColumns) {\n\t\t\t\ttry {\n\t\t\t\t\tEnumTableColumn<E> enumColumn = tableFormat.valueOf(column);\n\t\t\t\t\tif (enumColumn != null) {\n\t\t\t\t\t\tint index = columnIndex.indexOf(enumColumn);\n\t\t\t\t\t\tselections.add(index);\n\t\t\t\t\t}\n\t\t\t\t} catch (IllegalArgumentException ex) {\n\t\t\t\t\t//ignore missing columns...\n\t\t\t\t}\n\t\t\t}\n\t\t\tint[] indices = new int[selections.size()];\n\t\t\tfor (int i = 0; i < selections.size(); i++) {\n\t\t\t\tindices[i] = selections.get(i);\n\t\t\t}\n\t\t\tjColumnSelection.setSelectedIndices(indices);\n\t\t}\n\n\t\tString filterName = Settings.get().getExportSettings(toolName).getFilterName();\n\t\tList<String> filterNames = new ArrayList<>(filterControl.getAllFilters().keySet());\n\t\tif (!filterNames.isEmpty()) {\n\t\t\tCollections.sort(filterNames, StringComparators.CASE_INSENSITIVE);\n\t\t\tjFilters.setModel(new ListComboBoxModel<>(filterNames));\n\t\t\tif(hasItem(jFilters, filterName)) {\n\t\t\t\tjFilters.setSelectedItem(filterName);\n\t\t\t}\n\t\t} else {\n\t\t\tjFilters.setModel(new ListComboBoxModel<>());\n\t\t}\n\n\t\tString viewName = Settings.get().getExportSettings(toolName).getViewName();\n\t\tList<String> viewNames = new ArrayList<>(Settings.get().getTableViews(toolName).keySet());\n\t\tif (!viewNames.isEmpty()) {\n\t\t\tCollections.sort(viewNames, StringComparators.CASE_INSENSITIVE);\n\t\t\tjViews.setModel(new ListComboBoxModel<>(viewNames));\n\t\t\tif (hasItem(jViews, viewName)) {\n\t\t\t\tjViews.setSelectedItem(viewName);\n\t\t\t}\n\t\t} else {\n\t\t\tjViews.setModel(new ListComboBoxModel<>());\n\t\t}\n\t\tupdateDisplayElements();\n\t}\n\n\tprivate void resetSettings() {\n\t\tSettings.lock(\"Export Settings (Reset)\"); //Lock for Export Settings (Reset)\n\t\tExportSettings oldSettings = Settings.get().getExportSettings(toolName);\n\t\tExportSettings newSettings = new ExportSettings(toolName);\n\t\tnewSettings.putTableExportColumns(oldSettings.getTableExportColumns());\n\t\tSettings.get().getExportSettings().put(toolName, newSettings);\n\t\tSettings.unlock(\"Export Settings (Reset)\"); //Unlock for Export Settings (Reset)\n\t\tloadSettings();\n\t}\n\n\t/***\n\t *Updates the UI elements that are displayed based on the current data. This will hide or show panels. Enable\n\t *combo boxes. Etc.\n\t */\n\tpublic void updateDisplayElements() {\n\t\tExportFormat exportFormat = Settings.get().getExportSettings(toolName).getExportFormat();\n\t\tcardLayout.show(jOptionPanel, exportFormat.name());\n\t\tif (exportFormat == ExportFormat.HTML) {\n\t\t\tjHtml.setSelected(true);\n\t\t\tjOptionPanel.setBorder(BorderFactory.createTitledBorder(DialoguesExport.get().html()));\n\t\t} else if (exportFormat == ExportFormat.SQL) {\n\t\t\tjSql.setSelected(true);\n\t\t\tjOptionPanel.setBorder(BorderFactory.createTitledBorder(DialoguesExport.get().sql()));\n\t\t} else { //CSV and Default\n\t\t\tjCsv.setSelected(true);\n\t\t\tjOptionPanel.setBorder(BorderFactory.createTitledBorder(DialoguesExport.get().csv()));\n\t\t}\n\n\t\tFilterSelection filterSelection = Settings.get().getExportSettings(toolName).getFilterSelection();\n\t\tString filterName = Settings.get().getExportSettings(toolName).getFilterName();\n\t\tif (filterSelection == FilterSelection.NONE) {\n\t\t\tjNoFilter.setSelected(true);\n\t\t\tjFilters.setEnabled(false);\n\t\t} else if (filterSelection == FilterSelection.CURRENT && !filterControl.isFiltersEmpty()) {\n\t\t\tjCurrentFilter.setSelected(true);\n\t\t\tjFilters.setEnabled(false);\n\t\t} else if (filterSelection == FilterSelection.SAVED && hasItem(jFilters, filterName)) {\n\t\t\tjSavedFilter.setSelected(true);\n\t\t\tjFilters.setEnabled(true);\n\t\t} else {\n\t\t\t//If we got here then the filter selection didn't match the data and we had to default, so reset the value\n\t\t\t//in the settings.\n\t\t\tjNoFilter.setSelected(true);\n\t\t\tjFilters.setEnabled(false);\n\t\t\tSettings.get().getExportSettings(toolName).setFilterSelection(FilterSelection.NONE);\n\t\t}\n\n\t\t//Filters current\n\t\tif (filterControl.isFiltersEmpty()) {\n\t\t\tjCurrentFilter.setEnabled(false);\n\t\t} else {\n\t\t\tjCurrentFilter.setEnabled(true);\n\t\t}\n\n\t\t//Filters saved\n\t\tif (filterControl.getAllFilters().isEmpty()) {\n\t\t\tjSavedFilter.setEnabled(false);\n\t\t\tjFilters.getModel().setSelectedItem(DialoguesExport.get().noSavedFilter());\n\t\t} else {\n\t\t\tjSavedFilter.setEnabled(true);\n\t\t}\n\n\t\tColumnSelection columnSelection = Settings.get().getExportSettings(toolName).getColumnSelection();\n\t\tString viewName = Settings.get().getExportSettings(toolName).getViewName();\n\t\tif (columnSelection == ColumnSelection.SHOWN) {\n\t\t\tjViewCurrent.setSelected(true);\n\t\t\tjViews.setEnabled(false);\n\t\t\tjColumnSelection.setEnabled(false);\n\t\t\tjViewSelectAll.setEnabled(false);\n\t\t} else if (columnSelection == ColumnSelection.SAVED && hasItem(jViews, viewName)) {\n\t\t\tjViewSaved.setSelected(true);\n\t\t\tjViews.setEnabled(true);\n\t\t\tjColumnSelection.setEnabled(false);\n\t\t\tjViewSelectAll.setEnabled(false);\n\t\t} else if (columnSelection == ColumnSelection.SELECTED) {\n\t\t\tjViewSelect.setSelected(true);\n\t\t\tjViews.setEnabled(false);\n\t\t\tjColumnSelection.setEnabled(true);\n\t\t\tjViewSelectAll.setEnabled(true);\n\t\t} else {\n\t\t\t//If we got here then the column selection didn't match the data and we had to default, so reset the value\n\t\t\t//in the settings.\n\t\t\tjViewCurrent.setSelected(true);\n\t\t\tjViews.setEnabled(false);\n\t\t\tSettings.get().getExportSettings(toolName).setColumnSelection(ColumnSelection.SHOWN);\n\t\t}\n\n\t\t//Views\n\t\tMap<String, View> tableViews = Settings.get().getTableViews(toolName);\n\t\tif (tableViews.isEmpty()) {\n\t\t\tjViewSaved.setEnabled(false);\n\t\t\tjViews.getModel().setSelectedItem(DialoguesExport.get().viewNoSaved());\n\t\t} else {\n\t\t\tjViewSaved.setEnabled(true);\n\t\t}\n\t}\n\n\t@Override\n\tpublic void setVisible(final boolean b) {\n\t\tif (b) {\n\t\t\t//Columns\n\t\t\tupdateColumns();\n\t\t\t//Settings\n\t\t\tloadSettings();\n\t\t}\n\t\tsuper.setVisible(b);\n\t}\n\n\t@Override\n\tprotected JComponent getDefaultFocus() {\n\t\treturn jOK;\n\t}\n\n\t@Override\n\tprotected JButton getDefaultButton() {\n\t\treturn jOK;\n\t}\n\n\t@Override\n\tprotected void windowShown() { }\n\n\t@Override\n\tprotected void save() {\n\t//Bad options\n\t\tif (jColumnSelection.isEnabled() && jColumnSelection.getSelectedIndices().length == 0) {\n\t\t\tJOptionPane.showMessageDialog(getDialog(), DialoguesExport.get().noColumnsSelected(), DialoguesExport.get().export(), JOptionPane.PLAIN_MESSAGE);\n\t\t\treturn;\n\t\t}\n\t//Save location\n\t\tboolean ok = browse();\n\t\tif (!ok) {\n\t\t\treturn;\n\t\t}\n\t//Save settings\n\t\tsaveSettings();\n\t//Save file\n\t\tboolean saved = ExportTableData.exportAuto(eventList, columnCache, tableFormat, toolName, Settings.get().getExportSettings(toolName));\n\t\tif (!saved) {\n\t\t\tJOptionPane.showMessageDialog(getDialog(),\n\t\t\t\t\tDialoguesExport.get().failedToSave(),\n\t\t\t\t\tDialoguesExport.get().export(),\n\t\t\t\t\tJOptionPane.PLAIN_MESSAGE);\n\t\t}\n\t\tsetVisible(false);\n\t}\n\n\t/***\n\t * Helper function to return if the comboBox has the item. Null string or item will return false.\n\t * @param comboBox The combo box to look for the item in.\n\t * @param item The item to look for int he combo box.\n\t * @return True if the item is found (case sensitive). False if it is not found or either parameter is null.\n\t */\n\tprivate boolean hasItem(JComboBox<String> comboBox, String item) {\n\t\tif (comboBox == null || item == null) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (int i = 0; i < comboBox.getModel().getSize(); i++) {\n\t\t\tString comboItem = comboBox.getModel().getElementAt(i);\n\t\t\tif (item.equals(comboItem)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tprivate class ListenerClass implements ActionListener {\n\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (ExportAction.OK.name().equals(e.getActionCommand())) {\n\t\t\t\tsave();\n\t\t\t} else if (ExportAction.DEFAULT.name().equals(e.getActionCommand())) {\n\t\t\t\tresetSettings();\n\t\t\t} else if (ExportAction.CANCEL.name().equals(e.getActionCommand())) {\n\t\t\t\tsetVisible(false);\n\t\t\t\tsaveSettings();\n\t\t\t} else if (ExportAction.FORMAT_CHANGED.name().equals(e.getActionCommand())) {\n\t\t\t\tExportFormat exportFormat = ExportFormat.CSV;\n\t\t\t\tif (jCsv.isSelected()) {\n\t\t\t\t\texportFormat = ExportFormat.CSV;\n\t\t\t\t\tjOptionPanel.setBorder(BorderFactory.createTitledBorder(DialoguesExport.get().csv()));\n\t\t\t\t} else if (jHtml.isSelected()) {\n\t\t\t\t\texportFormat = ExportFormat.HTML;\n\t\t\t\t\tjOptionPanel.setBorder(BorderFactory.createTitledBorder(DialoguesExport.get().html()));\n\t\t\t\t} else if (jSql.isSelected()) {\n\t\t\t\t\texportFormat = ExportFormat.SQL;\n\t\t\t\t\tjOptionPanel.setBorder(BorderFactory.createTitledBorder(DialoguesExport.get().sql()));\n\t\t\t\t}\n\t\t\t\tSettings.get().getExportSettings(toolName).setExportFormat(exportFormat);\n\t\t\t\tcardLayout.show(jOptionPanel, exportFormat.name());\n\t\t\t\tjFileChooser.setExtension(exportFormat.getExtension());\n\t\t\t} else if (ExportAction.FILTER_CHANGED.name().equals(e.getActionCommand())) {\n\t\t\t\tjFilters.setEnabled(jSavedFilter.isSelected());\n\t\t\t\tFilterSelection filterSelection = FilterSelection.NONE;\n\t\t\t\tif (jNoFilter.isSelected()) {\n\t\t\t\t\tfilterSelection = FilterSelection.NONE;\n\t\t\t\t} else if (jCurrentFilter.isSelected()) {\n\t\t\t\t\tfilterSelection = FilterSelection.CURRENT;\n\t\t\t\t} else if (jSavedFilter.isSelected()) {\n\t\t\t\t\tfilterSelection = FilterSelection.SAVED;\n\t\t\t\t}\n\t\t\t\tSettings.get().getExportSettings(toolName).setFilterSelection(filterSelection);\n\t\t\t} else if (ExportAction.VIEW_CHANGED.name().equals(e.getActionCommand())) {\n\t\t\t\tjViews.setEnabled(jViewSaved.isSelected());\n\t\t\t\tjColumnSelection.setEnabled(jViewSelect.isSelected());\n\t\t\t\tjViewSelectAll.setEnabled(jViewSelect.isSelected());\n\t\t\t\tColumnSelection columnSelection = ColumnSelection.SHOWN;\n\t\t\t\tif (jViewCurrent.isSelected()) {\n\t\t\t\t\tcolumnSelection = ColumnSelection.SHOWN;\n\t\t\t\t} else if (jViewSaved.isSelected()) {\n\t\t\t\t\tcolumnSelection = ColumnSelection.SAVED;\n\t\t\t\t} else if (jViewSelect.isSelected()) {\n\t\t\t\t\tcolumnSelection = ColumnSelection.SELECTED;\n\t\t\t\t}\n\t\t\t\tSettings.get().getExportSettings(toolName).setColumnSelection(columnSelection);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class JOptionPanel extends JPanel {\n\t\tprotected final GroupLayout layout;\n\t\tprivate final List<JComponent> components = new ArrayList<>();\n\n\t\tprivate JOptionPanel() {\n\t\t\tlayout = new GroupLayout(this);\n\t\t\tthis.setLayout(layout);\n\t\t\tlayout.setAutoCreateGaps(false);\n\t\t\tlayout.setAutoCreateContainerGaps(true);\n\t\t}\n\n\t\tpublic void add(JComponent comp) {\n\t\t\tcomponents.add(comp);\n\t\t\tcreateLayout();\n\t\t}\n\n\t\tprotected void createLayout() {\n\t\t\tthis.removeAll();\n\t\t\tGroupLayout.ParallelGroup horizontalGroup = layout.createParallelGroup();\n\t\t\tGroupLayout.SequentialGroup verticalGroup = layout.createSequentialGroup();\n\n\t\t\tfor (JComponent jComponent : components) {\n\t\t\t\thorizontalGroup.addComponent(jComponent);\n\t\t\t\tif (jComponent instanceof JLabel\n\t\t\t\t\t\t|| jComponent instanceof JButton\n\t\t\t\t\t\t|| jComponent instanceof JCheckBox\n\t\t\t\t\t\t|| jComponent instanceof JTextField\n\t\t\t\t\t\t|| jComponent instanceof JComboBox) {\n\t\t\t\t\tverticalGroup.addComponent(jComponent, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight());\n\t\t\t\t} else {\n\t\t\t\t\tverticalGroup.addComponent(jComponent);\n\t\t\t\t}\n\t\t\t}\n\t\t\tlayout.setHorizontalGroup(\n\t\t\t\tlayout.createSequentialGroup()\n\t\t\t\t\t.addGroup(horizontalGroup)\n\t\t\t\t);\n\t\t\tlayout.setVerticalGroup(\n\t\t\t\tlayout.createSequentialGroup()\n\t\t\t\t\t.addGroup(verticalGroup)\n\t\t\t\t);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/filter/ExportTableData.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.filter;\r\n\r\nimport ca.odell.glazedlists.EventList;\r\nimport ca.odell.glazedlists.FilterList;\r\nimport ca.odell.glazedlists.matchers.Matcher;\r\nimport java.io.File;\r\nimport java.text.DecimalFormat;\r\nimport java.text.DecimalFormatSymbols;\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Locale;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport java.util.TreeSet;\r\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings;\r\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings.DecimalSeparator;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.data.settings.tag.Tags;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JFormulaDialog.Formula;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuJumps.Jump;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.ColumnManager.FormulaColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.ColumnManager.JumpColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor.SimpleColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.View;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.HierarchyColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.NumberValue;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Percent;\r\nimport net.nikr.eve.jeveasset.gui.tabs.tree.TreeAsset;\r\nimport net.nikr.eve.jeveasset.gui.tabs.tree.TreeTab;\r\nimport net.nikr.eve.jeveasset.io.local.CsvWriter;\r\nimport net.nikr.eve.jeveasset.io.local.HtmlWriter;\r\nimport net.nikr.eve.jeveasset.io.local.SqlWriter;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\nimport org.supercsv.prefs.CsvPreference;\r\n\r\n\r\npublic class ExportTableData {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(ExportTableData.class);\r\n\r\n\tprivate static final DecimalFormat INTEGER_DOT_FORMAT = new DecimalFormat(\"###0\", new DecimalFormatSymbols(new Locale(\"en\")));\r\n\tprivate static final DecimalFormat INTEGER_COMMA_FORMAT = new DecimalFormat(\"###0\", new DecimalFormatSymbols(new Locale(\"da\")));\r\n\tprivate static final DecimalFormat DECIMAL_HTML_DOT_FORMAT = new DecimalFormat(\"#,##0.00##\", new DecimalFormatSymbols(new Locale(\"en\")));\r\n\tprivate static final DecimalFormat DECIMAL_HTML_COMMA_FORMAT = new DecimalFormat(\"#,##0.00##\", new DecimalFormatSymbols(new Locale(\"da\")));\r\n\tprivate static final DecimalFormat DECIMAL_CSV_DOT_FORMAT = new DecimalFormat(\"###0.00##\", new DecimalFormatSymbols(new Locale(\"en\")));\r\n\tprivate static final DecimalFormat DECIMAL_CSV_COMMA_FORMAT = new DecimalFormat(\"###0.00##\", new DecimalFormatSymbols(new Locale(\"da\")));\r\n\r\n\t/**\r\n\t * Get Filters and Views from Settings (No Column Cache).\r\n\t * @param <Q>\r\n\t * @param eventList\r\n\t * @param tableFormat\r\n\t * @param toolName\r\n\t * @param exportSettings\r\n\t * @return\r\n\t */\r\n\tpublic static <Q> boolean exportAutoNoCache(EventList<Q> eventList, final SimpleTableFormat<Q> tableFormat, String toolName, ExportSettings exportSettings) {\r\n\t\treturn exportAuto(eventList, null, tableFormat, toolName, exportSettings);\r\n\t}\r\n\r\n\t/**\r\n\t * Get Filters and Views from Settings (With Column Cache)\r\n\t * @param <Q>\r\n\t * @param eventList\r\n\t * @param columnCache\r\n\t * @param tableFormat\r\n\t * @param toolName\r\n\t * @param exportSettings\r\n\t * @return\r\n\t */\r\n\tpublic static <Q> boolean exportAuto(EventList<Q> eventList, ColumnCache<Q> columnCache, final SimpleTableFormat<Q> tableFormat, String toolName, ExportSettings exportSettings) {\r\n\t\treturn export(eventList, columnCache, tableFormat, toolName, Settings.get().getTableViews(toolName), Settings.get().getTableFilters(toolName), Settings.get().getDefaultTableFilters(toolName), Settings.get().getCurrentTableFilters(toolName), exportSettings);\r\n\t}\r\n\t/**\r\n\t * No Filters and Views from Settings\r\n\t * @param <Q>\r\n\t * @param eventList\r\n\t * @param tableFormat\r\n\t * @param toolName\r\n\t * @param exportSettings\r\n\t * @return\r\n\t */\r\n\tpublic static <Q> boolean exportEmpty(EventList<Q> eventList, final SimpleTableFormat<Q> tableFormat, String toolName, ExportSettings exportSettings) {\r\n\t\treturn export(eventList, null, tableFormat, toolName, new HashMap<>(), new HashMap<>(), new HashMap<>(), new ArrayList<>(), exportSettings);\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param <Q>\r\n\t * @param eventList\r\n\t * @param columnCache\r\n\t * @param tableFormat\r\n\t * @param toolName\r\n\t * @param views\r\n\t * @param filters\r\n\t * @param currentFilters\r\n\t * @param exportSettings\r\n\t * @return\r\n\t */\r\n\tprivate static <Q> boolean export(EventList<Q> eventList, ColumnCache<Q> columnCache, final SimpleTableFormat<Q> tableFormat, String toolName, Map<String, View> views, Map<String, List<Filter>> filters, Map<String, List<Filter>> defaultFilters, List<Filter> currentFilters, ExportSettings exportSettings) {\r\n\t\t//Filter\r\n\t\tfinal List<Filter> filter;\r\n\t\tswitch (exportSettings.getFilterSelection()) {\r\n\t\t\tcase NONE:\r\n\t\t\t\tfilter = new ArrayList<>();\r\n\t\t\t\tbreak;\r\n\t\t\tcase CURRENT:\r\n\t\t\t\tfilter = currentFilters;\r\n\t\t\t\tbreak;\r\n\t\t\tcase SAVED:\r\n\t\t\t\tString filterName = exportSettings.getFilterName();\r\n\t\t\t\tif (filterName == null) {\r\n\t\t\t\t\tLOG.error(toolName + \" -> Filter name is null\");\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tList<Filter> f = filters.get(filterName);\r\n\t\t\t\tif (f != null) {\r\n\t\t\t\t\tfilter = f;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfilter = defaultFilters.get(filterName);\r\n\t\t\t\t\tif (filter == null) {\r\n\t\t\t\t\t\tLOG.error(toolName + \" -> No such filter: \" + filterName);\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tLOG.error(toolName + \" -> Unknown FilterSelection: \" + exportSettings.getFilterSelection());\r\n\t\t\t\treturn false;\r\n\t\t}\r\n\t\t//Columns + Header\r\n\t\tMap<String, EnumTableColumn<Q>> columns = new HashMap<>(); //Column lookup\r\n\t\tfor (EnumTableColumn<Q> column : tableFormat.getAllColumns()) {\r\n\t\t\tcolumns.put(column.name(), column);\r\n\t\t}\r\n\t\tfinal List<EnumTableColumn<Q>> header;\r\n\t\tswitch (exportSettings.getColumnSelection()) {\r\n\t\t\tcase SELECTED: //Selected/All columns\r\n\t\t\t\tList<String> selectedColumns = exportSettings.getTableExportColumns();\r\n\t\t\t\tif (!selectedColumns.isEmpty()) { //Selected columns\r\n\t\t\t\t\theader = new ArrayList<>();\r\n\t\t\t\t\tfor (String selectedColumn : selectedColumns) {\r\n\t\t\t\t\t\tEnumTableColumn<Q> column = columns.get(selectedColumn);\r\n\t\t\t\t\t\tif (column != null) {\r\n\t\t\t\t\t\t\theader.add(column);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else { //All columns\r\n\t\t\t\t\theader = new ArrayList<>(tableFormat.getAllColumns()); //Copy (Otherwise added columns to the tableformat will also add it to the header)\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase SHOWN: //Current shown columns in order\r\n\t\t\t\theader = new ArrayList<>();\r\n\t\t\t\tfor (SimpleColumn simpleColumn : Settings.get().getTableColumns().get(toolName)) {\r\n\t\t\t\t\tif (simpleColumn.isShown()) {\r\n\t\t\t\t\t\tEnumTableColumn<Q> column = columns.get(simpleColumn.getEnumName());\r\n\t\t\t\t\t\tif (column != null) {\r\n\t\t\t\t\t\t\theader.add(column);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase SAVED: //Saved View\r\n\t\t\t\tString viewName = exportSettings.getViewName();\r\n\t\t\t\tif (viewName == null) {\r\n\t\t\t\t\tLOG.error(toolName + \" -> View name is null\");\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tView view = views.get(viewName);\r\n\t\t\t\tif (view == null) {\r\n\t\t\t\t\tLOG.error(toolName + \" -> No such view: \" + viewName);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\theader = new ArrayList<>();\r\n\t\t\t\tfor (SimpleColumn simpleColumn : view.getColumns()) {\r\n\t\t\t\t\tif (simpleColumn.isShown()) {\r\n\t\t\t\t\t\tEnumTableColumn<Q> column = columns.get(simpleColumn.getEnumName());\r\n\t\t\t\t\t\tif (column != null) {\r\n\t\t\t\t\t\t\theader.add(column);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tLOG.error(toolName + \" -> Unknown ColumnSelection: \" + exportSettings.getColumnSelection());\r\n\t\t\t\treturn false;\r\n\t\t}\r\n\t\tif (header.isEmpty()) {\r\n\t\t\tLOG.error(toolName + \" -> No columns selected for ColumnSelection: \" + exportSettings.getColumnSelection());\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//Formula\r\n\t\tfor (Formula formula : Settings.get().getTableFormulas(toolName)) {\r\n\t\t\tFormulaColumn<Q> formulaColumn = new FormulaColumn<>(formula);\r\n\t\t\ttableFormat.addColumn(formulaColumn); //Add the column for filters\r\n\t\t\tif (exportSettings.isFormulas()) {\r\n\t\t\t\theader.add(formulaColumn); //Export\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Jump\r\n\t\tfor (Jump jump : Settings.get().getTableJumps(toolName)) {\r\n\t\t\tJumpColumn<Q> jumpColumn = new JumpColumn<>(jump);\r\n\t\t\ttableFormat.addColumn(jumpColumn); //Add the column for filters\r\n\t\t\tif (exportSettings.isJumps()) {\r\n\t\t\t\theader.add(jumpColumn); //Export\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Apply Filters\r\n\t\tList<Q> items = new ArrayList<>();\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\t\tFilterList<Q> filterList = new FilterList<>(eventList, new FilterLogicalMatcher<>(tableFormat, columnCache, filter));\r\n\t\t\tif (!eventList.isEmpty() && eventList.get(0) instanceof TreeAsset) {\r\n\t\t\t\tFilterList<Q> treeFilterList = new FilterList<>(eventList, new TreeMatcher<>(filterList));\r\n\t\t\t\titems.addAll(treeFilterList);\r\n\t\t\t} else {\r\n\t\t\t\titems.addAll(filterList);\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t\t//File\r\n\t\tString filename = exportSettings.getFilename();\r\n\t\tFile dir = new File(filename).getParentFile();\r\n\t\tif (dir.isFile()) { //If parent dir is a file, cancel\r\n\t\t\treturn false;\r\n\t\t} else if (!dir.exists()) { //If parent dir dosn't exsit, create it\r\n\t\t\tdir.mkdirs();\r\n\t\t}\r\n\t\tif (exportSettings.isCsv()) {\r\n\t\t\t//CSV\r\n\t\t\t//Create data\r\n\t\t\tList<String> headerStrings = new ArrayList<>(header.size());\r\n\t\t\tList<String> headerKeys = new ArrayList<>(header.size());\r\n\t\t\tfor (EnumTableColumn<Q> column : header) {\r\n\t\t\t\theaderStrings.add(column.getColumnName());\r\n\t\t\t\theaderKeys.add(column.name());\r\n\t\t\t}\r\n\t\t\tList<Map<String, String>> rows = new ArrayList<>();\r\n\t\t\tfor (Q e : items) {\r\n\t\t\t\tMap<String, String> row = new HashMap<>();\r\n\t\t\t\tfor (EnumTableColumn<Q> column : header) {\r\n\t\t\t\t\trow.put(column.name(), format(tableFormat.getColumnValue(e, column.name()), exportSettings.getDecimalSeparator(), false));\r\n\t\t\t\t}\r\n\t\t\t\trows.add(row);\r\n\t\t\t}\r\n\t\t\t//Save data\r\n\t\t\treturn CsvWriter.save(exportSettings.getFilename(),\r\n\t\t\t\t\trows,\r\n\t\t\t\t\theaderStrings.toArray(new String[headerStrings.size()]),\r\n\t\t\t\t\theaderKeys.toArray(new String[headerKeys.size()]),\r\n\t\t\t\t\tnew CsvPreference.Builder('\\\"', exportSettings.getCsvFieldDelimiter().getValue(), exportSettings.getCsvLineDelimiter().getValue()).build());\r\n\t\t} else if (exportSettings.isHtml()) {\r\n\t\t\t//HTML\r\n\t\t\t//Create data\r\n\t\t\tList<Map<EnumTableColumn<?>, String>> rows = new ArrayList<>();\r\n\t\t\tfor (Q e : items) {\r\n\t\t\t\tMap<EnumTableColumn<?>, String> row = new HashMap<>();\r\n\t\t\t\tfor (EnumTableColumn<Q> column : header) {\r\n\t\t\t\t\trow.put(column, format(tableFormat.getColumnValue(e, column.name()), exportSettings.getDecimalSeparator(), true));\r\n\t\t\t\t}\r\n\t\t\t\trows.add(row);\r\n\t\t\t}\r\n\t\t\t//Save data\r\n\t\t\treturn HtmlWriter.save(exportSettings.getFilename(),\r\n\t\t\t\t\trows,\r\n\t\t\t\t\tnew ArrayList<>(header),\r\n\t\t\t\t\texportSettings.isHtmlIGB() ? new ArrayList<>(items) : null,\r\n\t\t\t\t\texportSettings.isHtmlStyled(),\r\n\t\t\t\t\texportSettings.getHtmlRepeatHeader(),\r\n\t\t\t\t\ttoolName.equals(TreeTab.NAME));\r\n\t\t} else if (exportSettings.isSql()) {\r\n\t\t\t//SQL\r\n\t\t\t//Create data\r\n\t\t\tList<Map<EnumTableColumn<?>, Object>> rows = new ArrayList<>();\r\n\t\t\tfor (Q e : items) {\r\n\t\t\t\tMap<EnumTableColumn<?>, Object> row = new HashMap<>();\r\n\t\t\t\tfor (EnumTableColumn<Q> column : header) {\r\n\t\t\t\t\trow.put(column, tableFormat.getColumnValue(e, column.name()));\r\n\t\t\t\t}\r\n\t\t\t\trows.add(row);\r\n\t\t\t}\r\n\t\t\t//Save data\r\n\t\t\treturn SqlWriter.save(exportSettings.getFilename(),\r\n\t\t\t\t\trows,\r\n\t\t\t\t\tnew ArrayList<>(header),\r\n\t\t\t\t\texportSettings.getSqlTableName(),\r\n\t\t\t\t\texportSettings.isSqlDropTable(),\r\n\t\t\t\t\texportSettings.isSqlCreateTable(),\r\n\t\t\t\t\texportSettings.isSqlExtendedInserts());\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class TreeMatcher<E> implements Matcher<E> {\r\n\r\n\t\tprivate final EventList<E> eventList;\r\n\t\tprivate final Set<TreeAsset> parentTree = new HashSet<>();\r\n\r\n\t\tpublic TreeMatcher(EventList<E> eventList) {\r\n\t\t\tthis.eventList = eventList;\r\n\t\t\tSet<TreeAsset> items = new TreeSet<>(new TreeTab.AssetTreeComparator());\r\n\t\t\tfor (E e : eventList) {\r\n\t\t\t\tif (e instanceof TreeAsset) {\r\n\t\t\t\t\tTreeAsset tree = (TreeAsset) e;\r\n\t\t\t\t\titems.add(tree);\r\n\t\t\t\t\tparentTree.addAll(tree.getTree());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfor (TreeAsset treeAsset : parentTree) {\r\n\t\t\t\ttreeAsset.resetValues();\r\n\t\t\t\tif (treeAsset.isItem()) {\r\n\t\t\t\t\titems.add(treeAsset);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfor (TreeAsset treeAsset : items) {\r\n\t\t\t\ttreeAsset.updateParents();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean matches(E item) { //XXX - Expensive\r\n\t\t\tif (item instanceof TreeAsset) {\r\n\t\t\t\tTreeAsset treeAsset = (TreeAsset) item;\r\n\t\t\t\tif (treeAsset.isParent()) {\r\n\t\t\t\t\treturn parentTree.contains(treeAsset);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn eventList.contains(item);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tprivate static String format(Object object, final DecimalSeparator decimalSeparator, final boolean html) {\r\n\t\tif (object != null && object instanceof NumberValue && !(object instanceof Percent)) { //Unpack NumberValue\r\n\t\t\tobject = ((NumberValue)object).getNumber();\r\n\t\t}\r\n\t\tif (object == null) {\r\n\t\t\treturn \"\";\r\n\t\t} else if (object instanceof HierarchyColumn) {\r\n\t\t\tHierarchyColumn column = (HierarchyColumn) object;\r\n\t\t\treturn column.getExport();\r\n\t\t} else if (object instanceof Percent) {\r\n\t\t\tPercent percent = (Percent) object;\r\n\t\t\treturn percent.toString();\r\n\t\t} else if (object instanceof Number) {\r\n\t\t\tNumber number = (Number) object;\r\n\t\t\tif (object instanceof Integer || object instanceof Long) {\r\n\t\t\t\tif (decimalSeparator == DecimalSeparator.DOT) {\r\n\t\t\t\t\treturn INTEGER_DOT_FORMAT.format(number);\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn INTEGER_COMMA_FORMAT.format(number);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (html) {\r\n\t\t\t\t\tif (decimalSeparator == DecimalSeparator.DOT) {\r\n\t\t\t\t\t\treturn DECIMAL_HTML_DOT_FORMAT.format(number);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn DECIMAL_HTML_COMMA_FORMAT.format(number);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (decimalSeparator == DecimalSeparator.DOT) {\r\n\t\t\t\t\t\treturn DECIMAL_CSV_DOT_FORMAT.format(number);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn DECIMAL_CSV_COMMA_FORMAT.format(number);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (object instanceof Tags && html) {\r\n\t\t\tTags tags = (Tags) object;\r\n\t\t\treturn tags.getHtml();\r\n\t\t} else if (object instanceof Date) {\r\n\t\t\treturn Formatter.columnDate(object);\r\n\t\t} else {\r\n\t\t\treturn object.toString();\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/filter/Filter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.filter;\r\n\r\nimport java.util.Comparator;\r\nimport javax.swing.Icon;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\npublic class Filter {\r\n\r\n\tpublic static class AllColumn<T> implements EnumTableColumn<T> {\r\n\r\n\t\tpublic static final AllColumn<Object> ALL = new AllColumn<>();\r\n\r\n\t\t@Override\r\n\t\tpublic Class<?> getType() {\r\n\t\t\treturn Object.class;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic Comparator<?> getComparator() {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn GuiShared.get().filterAll();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(T from) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic String name() {\r\n\t\t\treturn \"ALL\";\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic String toString() {\r\n\t\t\treturn GuiShared.get().filterAll();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean equals(Object obj) {\r\n\t\t\tif (obj == null) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (getClass() != obj.getClass()) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tfinal AllColumn<?> other = (AllColumn<?>) obj;\r\n\t\t\treturn this.name().equals(other.name());\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int hashCode() {\r\n\t\t\tint hash = 5;\r\n\t\t\treturn hash;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic enum CompareType {\r\n\t\tCONTAINS(Images.FILTER_CONTAIN.getIcon()) {\r\n\t\t\t@Override String getI18N() { return GuiShared.get().filterContains(); }\r\n\t\t},\r\n\t\tCONTAINS_NOT(Images.FILTER_NOT_CONTAIN.getIcon()) {\r\n\t\t\t@Override String getI18N() { return GuiShared.get().filterContainsNot(); }\r\n\t\t},\r\n\t\tEQUALS(Images.FILTER_EQUAL.getIcon()) {\r\n\t\t\t@Override String getI18N() { return GuiShared.get().filterEquals(); }\r\n\t\t},\r\n\t\tEQUALS_NOT(Images.FILTER_NOT_EQUAL.getIcon()) {\r\n\t\t\t@Override String getI18N() { return GuiShared.get().filterEqualsNot(); }\r\n\t\t},\r\n\t\tREGEX(Images.FILTER_REGEX.getIcon()) {\r\n\t\t\t@Override String getI18N() { return GuiShared.get().filterRegex(); }\r\n\t\t},\r\n\t\tGREATER_THAN(Images.FILTER_GREATER_THAN.getIcon()) {\r\n\t\t\t@Override String getI18N() { return GuiShared.get().filterGreaterThan(); }\r\n\t\t},\r\n\t\tLESS_THAN(Images.FILTER_LESS_THAN.getIcon()) {\r\n\t\t\t@Override String getI18N() { return GuiShared.get().filterLessThan(); }\r\n\t\t},\r\n\t\tEQUALS_DATE(Images.FILTER_EQUAL_DATE.getIcon()) {\r\n\t\t\t@Override String getI18N() { return GuiShared.get().filterEqualsDate(); }\r\n\t\t},\r\n\t\tEQUALS_NOT_DATE(Images.FILTER_NOT_EQUAL_DATE.getIcon()) {\r\n\t\t\t@Override String getI18N() { return GuiShared.get().filterEqualsNotDate(); }\r\n\t\t},\r\n\t\tBEFORE(Images.FILTER_BEFORE.getIcon()) {\r\n\t\t\t@Override String getI18N() { return GuiShared.get().filterBefore(); }\r\n\t\t},\r\n\t\tAFTER(Images.FILTER_AFTER.getIcon()) {\r\n\t\t\t@Override String getI18N() { return GuiShared.get().filterAfter(); }\r\n\t\t},\r\n\t\tLAST_DAYS(Images.FILTER_LAST_DAYS.getIcon()) {\r\n\t\t\t@Override String getI18N() { return GuiShared.get().filterLastDays(); }\r\n\t\t},\r\n\t\tNEXT_DAYS(Images.FILTER_NEXT_DAYS.getIcon()) {\r\n\t\t\t@Override String getI18N() { return GuiShared.get().filterNextDays(); }\r\n\t\t},\r\n\t\tLAST_HOURS(Images.FILTER_LAST_HOURS.getIcon()) {\r\n\t\t\t@Override String getI18N() { return GuiShared.get().filterLastHours(); }\r\n\t\t},\r\n\t\tNEXT_HOURS(Images.FILTER_NEXT_HOURS.getIcon()) {\r\n\t\t\t@Override String getI18N() { return GuiShared.get().filterNextHours(); }\r\n\t\t},\r\n\t\tCONTAINS_COLUMN(Images.FILTER_CONTAIN_COLUMN.getIcon()) {\r\n\t\t\t@Override String getI18N() { return GuiShared.get().filterContainsColumn(); }\r\n\t\t},\r\n\t\tCONTAINS_NOT_COLUMN(Images.FILTER_NOT_CONTAIN_COLUMN.getIcon()) {\r\n\t\t\t@Override String getI18N() { return GuiShared.get().filterContainsNotColumn(); }\r\n\t\t},\r\n\t\tEQUALS_COLUMN(Images.FILTER_EQUAL_COLUMN.getIcon()) {\r\n\t\t\t@Override String getI18N() { return GuiShared.get().filterEqualsColumn(); }\r\n\t\t},\r\n\t\tEQUALS_NOT_COLUMN(Images.FILTER_NOT_EQUAL_COLUMN.getIcon()) {\r\n\t\t\t@Override String getI18N() { return GuiShared.get().filterEqualsNotColumn(); }\r\n\t\t},\r\n\t\tGREATER_THAN_COLUMN(Images.FILTER_GREATER_THAN_COLUMN.getIcon()) {\r\n\t\t\t@Override String getI18N() { return GuiShared.get().filterGreaterThanColumn(); }\r\n\t\t},\r\n\t\tLESS_THAN_COLUMN(Images.FILTER_LESS_THAN_COLUMN.getIcon()) {\r\n\t\t\t@Override String getI18N() { return GuiShared.get().filterLessThanColumn(); }\r\n\t\t},\r\n\t\tBEFORE_COLUMN(Images.FILTER_BEFORE_COLUMN.getIcon()) {\r\n\t\t\t@Override String getI18N() { return GuiShared.get().filterBeforeColumn(); }\r\n\t\t},\r\n\t\tAFTER_COLUMN(Images.FILTER_AFTER_COLUMN.getIcon()) {\r\n\t\t\t@Override String getI18N() { return GuiShared.get().filterAfterColumn(); }\r\n\t\t};\r\n\r\n\t\tprivate static final CompareType[] VALUES_ALL = new CompareType[]\r\n\t\t\t{CONTAINS,\r\n\t\t\tCONTAINS_NOT,\r\n\t\t\tEQUALS,\r\n\t\t\tEQUALS_NOT,\r\n\t\t\tREGEX,\r\n\t\t};\r\n\t\tprivate static final CompareType[] VALUES_STRING = new CompareType[]\r\n\t\t\t{CONTAINS,\r\n\t\t\tCONTAINS_NOT,\r\n\t\t\tEQUALS,\r\n\t\t\tEQUALS_NOT,\r\n\t\t\tREGEX,\r\n\t\t\tCONTAINS_COLUMN,\r\n\t\t\tCONTAINS_NOT_COLUMN,\r\n\t\t\tEQUALS_COLUMN,\r\n\t\t\tEQUALS_NOT_COLUMN\r\n\t\t};\r\n\t\tprivate static final CompareType[] VALUES_NUMERIC = new CompareType[]\r\n\t\t\t{CONTAINS,\r\n\t\t\tCONTAINS_NOT,\r\n\t\t\tEQUALS,\r\n\t\t\tEQUALS_NOT,\r\n\t\t\tREGEX,\r\n\t\t\tGREATER_THAN,\r\n\t\t\tLESS_THAN,\r\n\t\t\tCONTAINS_COLUMN,\r\n\t\t\tCONTAINS_NOT_COLUMN,\r\n\t\t\tEQUALS_COLUMN,\r\n\t\t\tEQUALS_NOT_COLUMN,\r\n\t\t\tGREATER_THAN_COLUMN,\r\n\t\t\tLESS_THAN_COLUMN,\r\n\t\t};\r\n\t\tprivate static final CompareType[] VALUES_DATE = new CompareType[]\r\n\t\t\t{CONTAINS,\r\n\t\t\tCONTAINS_NOT,\r\n\t\t\tEQUALS,\r\n\t\t\tEQUALS_NOT,\r\n\t\t\tREGEX,\r\n\t\t\tEQUALS_DATE,\r\n\t\t\tEQUALS_NOT_DATE,\r\n\t\t\tBEFORE,\r\n\t\t\tAFTER,\r\n\t\t\tLAST_DAYS,\r\n\t\t\tNEXT_DAYS,\r\n\t\t\tLAST_HOURS,\r\n\t\t\tNEXT_HOURS,\r\n\t\t\t//CONTAINS_COLUMN,\r\n\t\t\t//CONTAINS_NOT_COLUMN,\r\n\t\t\tEQUALS_COLUMN,\r\n\t\t\tEQUALS_NOT_COLUMN,\r\n\t\t\tBEFORE_COLUMN,\r\n\t\t\tAFTER_COLUMN,\r\n\t\t};\r\n\r\n\t\tprivate final Icon icon;\r\n\t\tprivate CompareType(final Icon icon) {\r\n\t\t\tthis.icon = icon;\r\n\t\t}\r\n\r\n\t\tpublic Icon getIcon() {\r\n\t\t\treturn icon;\r\n\t\t}\r\n\r\n\t\tabstract String getI18N();\r\n\t\t@Override\r\n\t\tpublic String toString() {\r\n\t\t\treturn getI18N();\r\n\t\t}\r\n\t\tpublic static CompareType[] valuesAll() {\r\n\t\t\treturn VALUES_ALL;\r\n\t\t}\r\n\t\tpublic static CompareType[] valuesString() {\r\n\t\t\treturn VALUES_STRING;\r\n\t\t}\r\n\t\tpublic static CompareType[] valuesNumeric() {\r\n\t\t\treturn VALUES_NUMERIC;\r\n\t\t}\r\n\t\tpublic static CompareType[] valuesDate() {\r\n\t\t\treturn VALUES_DATE;\r\n\t\t}\r\n\r\n\t\tpublic static boolean isRegexCompare(final CompareType compareType) {\r\n\t\t\treturn compareType == CompareType.REGEX;\r\n\t\t}\r\n\t\tpublic static boolean isColumnCompare(final CompareType compareType) {\r\n\t\t\treturn compareType == CompareType.GREATER_THAN_COLUMN\r\n\t\t\t\t|| compareType == CompareType.LESS_THAN_COLUMN\r\n\t\t\t\t|| compareType == CompareType.EQUALS_COLUMN\r\n\t\t\t\t|| compareType == CompareType.EQUALS_NOT_COLUMN\r\n\t\t\t\t|| compareType == CompareType.CONTAINS_COLUMN\r\n\t\t\t\t|| compareType == CompareType.CONTAINS_NOT_COLUMN\r\n\t\t\t\t|| compareType == CompareType.BEFORE_COLUMN\r\n\t\t\t\t|| compareType == CompareType.AFTER_COLUMN;\r\n\t\t}\r\n\t\tpublic static boolean isNumericCompare(final CompareType compareType) {\r\n\t\t\treturn compareType == CompareType.GREATER_THAN_COLUMN\r\n\t\t\t\t|| compareType == CompareType.LESS_THAN_COLUMN\r\n\t\t\t\t|| compareType == CompareType.GREATER_THAN\r\n\t\t\t\t|| compareType == CompareType.LESS_THAN;\r\n\t\t}\r\n\t\tpublic static boolean isDateCompare(final CompareType compareType) {\r\n\t\t\treturn compareType == CompareType.BEFORE\r\n\t\t\t\t|| compareType == CompareType.AFTER\r\n\t\t\t\t|| compareType == CompareType.EQUALS_DATE\r\n\t\t\t\t|| compareType == CompareType.EQUALS_NOT_DATE\r\n\t\t\t\t|| compareType == CompareType.BEFORE_COLUMN\r\n\t\t\t\t|| compareType == CompareType.AFTER_COLUMN;\r\n\t\t}\r\n\t}\r\n\tpublic enum LogicType {\r\n\t\tAND() {\r\n\t\t\t@Override\r\n\t\t\tpublic String getI18N() {\r\n\t\t\t\treturn GuiShared.get().filterAnd();\r\n\t\t\t}\r\n\t\t},\r\n\t\tOR() {\r\n\t\t\t@Override\r\n\t\t\tpublic String getI18N() {\r\n\t\t\t\treturn GuiShared.get().filterOr();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tabstract String getI18N();\r\n\t\t@Override\r\n\t\tpublic String toString() {\r\n\t\t\treturn getI18N();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate final int group;\r\n\tprivate final LogicType logic;\r\n\tprivate final EnumTableColumn<?> column;\r\n\tprivate final CompareType compare;\r\n\tprivate final String text;\r\n\tprivate final boolean enabled;\r\n\r\n\t/**\r\n\t * Legacy support\r\n\t * @param logic\r\n\t * @param column\r\n\t * @param compare\r\n\t * @param text\r\n\t */\r\n\tpublic Filter(final LogicType logic, final EnumTableColumn<?> column, final CompareType compare, final String text) {\r\n\t\tthis(1, logic, column, compare, text, true);\r\n\t}\r\n\r\n\tpublic Filter(int group, final String logic, final EnumTableColumn<?> column, final String compare, final String text) {\r\n\t\tthis(group, LogicType.valueOf(logic), column, CompareType.valueOf(compare), text, true);\r\n\t}\r\n\r\n\tpublic Filter(int group, final String logic, final EnumTableColumn<?> column, final String compare, final String text, final boolean enabled) {\r\n\t\tthis(group, LogicType.valueOf(logic), column, CompareType.valueOf(compare), text, enabled);\r\n\t}\r\n\r\n\tpublic Filter(int group, final LogicType logic, final EnumTableColumn<?> column, final CompareType compare, final String text, final boolean enabled) {\r\n\t\tif (logic == LogicType.AND) {\r\n\t\t\tthis.group = 0;\r\n\t\t} else {\r\n\t\t\tthis.group = group;\r\n\t\t}\r\n\t\tthis.logic = logic;\r\n\t\tthis.column = column;\r\n\t\tthis.compare = compare;\r\n\t\tthis.text = text;\r\n\t\tthis.enabled = enabled;\r\n\t}\r\n\r\n\tpublic int getGroup() {\r\n\t\treturn group;\r\n\t}\r\n\r\n\tpublic EnumTableColumn<?> getColumn() {\r\n\t\treturn column;\r\n\t}\r\n\r\n\tpublic CompareType getCompareType() {\r\n\t\treturn compare;\r\n\t}\r\n\r\n\tpublic boolean isAnd() {\r\n\t\treturn logic == LogicType.AND;\r\n\t}\r\n\r\n\tpublic LogicType getLogic() {\r\n\t\treturn logic;\r\n\t}\r\n\r\n\tpublic boolean isEmpty() {\r\n\t\treturn text.isEmpty();\r\n\t}\r\n\r\n\tpublic boolean isEnabled() {\r\n\t\treturn enabled;\r\n\t}\r\n\r\n\tpublic String getText() {\r\n\t\treturn text;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn text;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(final Object obj) {\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal Filter other = (Filter) obj;\r\n\t\tif (this.logic != other.logic) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (!this.column.equals(other.column)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (this.compare != other.compare) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn !((this.text == null) ? (other.text != null) : !this.text.equals(other.text));\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 5;\r\n\t\thash = 43 * hash + (this.logic != null ? this.logic.hashCode() : 0);\r\n\t\thash = 43 * hash + (this.column != null ? this.column.hashCode() : 0);\r\n\t\thash = 43 * hash + (this.compare != null ? this.compare.hashCode() : 0);\r\n\t\thash = 43 * hash + (this.text != null ? this.text.hashCode() : 0);\r\n\t\treturn hash;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/filter/FilterControl.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.filter;\r\n\r\nimport ca.odell.glazedlists.EventList;\r\nimport ca.odell.glazedlists.FilterList;\r\nimport ca.odell.glazedlists.SeparatorList;\r\nimport ca.odell.glazedlists.event.ListEvent;\r\nimport ca.odell.glazedlists.event.ListEventListener;\r\nimport java.util.ArrayList;\r\nimport java.util.Arrays;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport javax.swing.Icon;\r\nimport javax.swing.JFrame;\r\nimport javax.swing.JMenu;\r\nimport javax.swing.JMenuItem;\r\nimport javax.swing.JPanel;\r\nimport javax.swing.JTable;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.data.settings.SettingsUpdateListener;\r\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter.AllColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterMenu.SimpleFilter;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.NumberValue;\r\nimport net.nikr.eve.jeveasset.io.shared.DesktopUtil.HelpLink;\r\n\r\n\r\npublic abstract class FilterControl<E> implements ColumnCache<E>, SimpleFilterControl<E> {\r\n\r\n\tprivate final JFrame jFrame;\r\n\tprivate final String toolName;\r\n\tprivate final SimpleTableFormat<E> tableFormat;\r\n\tprivate final EventList<E> eventList;\r\n\tprivate final EventList<E> exportEventList;\r\n\tprivate final List<SettingsUpdateListener> settingsUpdateListenerList = new ArrayList<>();\r\n\tprivate final FilterList<E> filterList;\r\n\tprivate final Map<String, List<Filter>> filters;\r\n\tprivate final Map<String, List<Filter>> defaultFilters;\r\n\tprivate final FilterGui<E> gui;\r\n\tprivate final Map<E, String> cache;\r\n\r\n\t/** Do not use this constructor - it's here only for test purposes. */\r\n\tprotected FilterControl() {\r\n\t\tjFrame = null;\r\n\t\ttoolName = null;\r\n\t\ttableFormat = null;\r\n\t\teventList = null;\r\n\t\texportEventList = null;\r\n\t\tfilterList = null;\r\n\t\tfilters = null;\r\n\t\tdefaultFilters = null;\r\n\t\tgui = null;\r\n\t\tcache = new HashMap<>();\r\n\t}\r\n\r\n\tprotected FilterControl(final JFrame jFrame, final String toolName, SimpleTableFormat<E> tableFormat, final EventList<E> eventList, final EventList<E> exportEventList, final FilterList<E> filterList) {\r\n\t\tthis.jFrame = jFrame;\r\n\t\tthis.toolName = toolName;\r\n\t\tthis.tableFormat = tableFormat;\r\n\t\tthis.eventList = eventList;\r\n\t\tthis.exportEventList = exportEventList;\r\n\t\tthis.filterList = filterList;\r\n\t\tthis.filters = Settings.get().getTableFilters(toolName);\r\n\t\tthis.defaultFilters = Settings.get().getDefaultTableFilters(toolName);\r\n\t\teventList.addListEventListener(new ListEventListener<E>() {\r\n\t\t\t@Override @SuppressWarnings(\"deprecation\")\r\n\t\t\tpublic void listChanged(ListEvent<E> listChanges) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\t\t\t\tList<E> delete = new ArrayList<>();\r\n\t\t\t\t\tList<E> update = new ArrayList<>();\r\n\t\t\t\t\twhile(listChanges.next()) {\r\n\t\t\t\t\t\tswitch (listChanges.getType()) {\r\n\t\t\t\t\t\t\tcase ListEvent.DELETE:\r\n\t\t\t\t\t\t\t\taddSafe(delete, listChanges.getOldValue());\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase ListEvent.UPDATE:\r\n\t\t\t\t\t\t\t\taddSafe(eventList, update, listChanges.getIndex());\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcacheDelete(delete);\r\n\t\t\t\t\tcacheUpdate(update);\r\n\t\t\t\t} finally {\r\n\t\t\t\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tListenerClass listener = new ListenerClass();\r\n\t\tfilterList.addListEventListener(listener);\r\n\t\tgui = new FilterGui<>(jFrame, this, tableFormat);\r\n\t\tcache = new HashMap<>();\r\n\t}\r\n\r\n\tpublic void clearCache() {\r\n\t\tcache.clear();\r\n\t}\r\n\r\n\tpublic void createCache() {\r\n\t\tcacheRebuild();\r\n\t}\r\n\r\n\tpublic void refilter() {\r\n\t\tgui.refilter();\r\n\t}\r\n\r\n\tpublic void repaint() {\r\n\t\tgui.repaint();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Map<E, String> getCache() {\r\n\t\treturn cache;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void addCache(E e, String haystack) {\r\n\t\tcache.put(e, haystack);\r\n\t}\r\n\r\n\tprivate void cacheDelete(List<E> update) {\r\n\t\tif (update.isEmpty()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tfor (E e : update) {\r\n\t\t\tcache.remove(e); //Remove deleted cache\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void cacheUpdate(List<E> update) {\r\n\t\tif (update.isEmpty()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tfor (E e : update) {\r\n\t\t\tcache.put(e, FilterMatcher.buildItemCache(tableFormat, e)); //Update outdated cache\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void cacheRebuild() {\r\n\t\tcache.clear();\r\n\t\ttry {\r\n\t\t\tgetEventList().getReadWriteLock().readLock().lock();\r\n\t\t\tfor (E e : getEventList()) {\r\n\t\t\t\tString s = FilterMatcher.buildItemCache(tableFormat, e);\r\n\t\t\t\tcache.put(e, s);\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tgetEventList().getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void addSafe(final EventList<E> eventList, List<E> list, int index) {\r\n\t\tif (index >= 0 && index < eventList.size()) {\r\n\t\t\tlist.add(eventList.get(index));\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void addSafe(List<E> list, E e) {\r\n\t\tif (e != null) {\r\n\t\t\tlist.add(e);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void updateColumns(boolean rebuildCache) {\r\n\t\tgui.updateColumns();\r\n\t\tif (rebuildCache) {\r\n\t\t\tcacheRebuild(); //Add or Remove column means everything have to be rebuild...\r\n\t\t\trefilter();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic List<Filter> getCurrentFilters() {\r\n\t\treturn gui.getFilters();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean isFiltersEmpty() {\r\n\t\treturn gui.isFiltersEmpty();\r\n\t}\r\n\r\n\tpublic void clearCurrentFilters() {\r\n\t\tgui.clear();\r\n\t}\r\n\r\n\tpublic void addFilter(final Filter filter) {\r\n\t\tgui.addFilter(filter);\r\n\t}\r\n\r\n\tpublic void addFilters(final List<Filter> filters) {\r\n\t\tgui.addFilters(filters);\r\n\t}\r\n\r\n\tpublic String getCurrentFilterName() {\r\n\t\treturn gui.getCurrentFilterName();\r\n\t}\r\n\r\n\tpublic JPanel getPanel() {\r\n\t\treturn gui.getPanel();\r\n\t}\r\n\r\n\tpublic void addExportOption(final JMenuItem jMenuItem) {\r\n\t\tgui.addExportOption(jMenuItem);\r\n\t}\r\n\r\n\tpublic void setManualLink(final HelpLink helpLink, Icon icon) {\r\n\t\tgui.setManualLink(helpLink, icon);\r\n\t}\r\n\r\n\tpublic JMenu getMenu(final JTable jTable, final List<E> items) {\r\n\t\tboolean isNumeric = false;\r\n\t\tboolean isDate = false;\r\n\t\tint columnIndex = jTable.getSelectedColumn();\r\n\t\tSet<SimpleFilter> simpleFilters = new HashSet<>();\r\n\t\tif (jTable.getSelectedColumnCount() == 1 //Single cell (column)\r\n\t\t\t\t//&& jTable.getSelectedRowCount() == 1 //Single cell (row)\r\n\t\t\t\t&& !items.isEmpty() //Single element\r\n\t\t\t\t&& !(items.get(0) instanceof SeparatorList.Separator) //Not Separator\r\n\t\t\t\t&& columnIndex >= 0 //Shown column\r\n\t\t\t\t&& columnIndex < tableFormat.getShownColumns().size()) { //Shown column\r\n\t\t\tEnumTableColumn<?> column = tableFormat.getShownColumns().get(columnIndex);\r\n\t\t\tif (column != null) {\r\n\t\t\t\tisNumeric = isNumeric(column);\r\n\t\t\t\tisDate = isDate(column);\r\n\t\t\t\tfor (E e : items) {\r\n\t\t\t\t\tString text = FilterMatcher.formatFilter(tableFormat.getColumnValue(e, column.name()));\r\n\t\t\t\t\tif (text != null) {\r\n\t\t\t\t\t\tsimpleFilters.add(new SimpleFilter(column, text));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new FilterMenu<>(jFrame, gui, simpleFilters, isNumeric, isDate);\r\n\t}\r\n\r\n\tString getName() {\r\n\t\treturn toolName;\r\n\t}\r\n\r\n\tpublic EventList<E> getEventList() {\r\n\t\treturn eventList;\r\n\t}\r\n\r\n\tpublic EventList<E> getExportEventList() {\r\n\t\treturn exportEventList;\r\n\t}\r\n\r\n\tpublic FilterList<E> getFilterList() {\r\n\t\treturn filterList;\r\n\t}\r\n\r\n\tMap<String, List<Filter>> getFilters() {\r\n\t\treturn filters;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Map<String, List<Filter>> getAllFilters() {\r\n\t\t//Need to be updated each time something has changed....\r\n\t\tMap<String, List<Filter>> allFilters = new HashMap<>();\r\n\t\tallFilters.putAll(defaultFilters);\r\n\t\tallFilters.putAll(filters);\r\n\t\treturn allFilters;\r\n\t}\r\n\r\n\tMap<String, List<Filter>> getDefaultFilters() {\r\n\t\treturn defaultFilters;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Current list of settings update listeners. List may be empty but should never be null.\r\n\t */\r\n\tpublic List<SettingsUpdateListener> getSettingsUpdateListenerList() {\r\n\t\treturn settingsUpdateListenerList;\r\n\t}\r\n\r\n\t/***\r\n\t * @return Is the filter panel shown\r\n\t */\r\n\tpublic boolean isFilterShown() {\r\n\t\treturn gui.isFilterShown();\r\n\t}\r\n\r\n\t/***\r\n\t * @param shown Whether to show the filter panel\r\n\t */\r\n\tpublic void setFilterShown(boolean shown) {\r\n\t\tgui.setFilterShown(shown);\r\n\t}\r\n\r\n\t/**\r\n\t * Overwrite to do stuff before filtering.\r\n\t */\r\n\tprotected void beforeFilter() { }\r\n\r\n\t/**\r\n\t * Overwrite to do stuff after filtering.\r\n\t */\r\n\tprotected void afterFilter() { }\r\n\r\n\t/**\r\n\t * Overwrite to do stuff after saved filters have been changed.\r\n\t */\r\n\tprotected void updateFilters() { }\r\n\r\n\tprotected List<EnumTableColumn<E>> columnsAsList(final EnumTableColumn<E>[] fixme) {\r\n\t\tList<EnumTableColumn<E>> columns = new ArrayList<>();\r\n\t\tcolumns.addAll(Arrays.asList(fixme));\r\n\t\treturn columns;\r\n\t}\r\n\r\n\tboolean isNumeric(final EnumTableColumn<?> column) {\r\n\t\tif (column == null) {\r\n\t\t\treturn false;\r\n\t\t} else if (column instanceof AllColumn) {\r\n\t\t\treturn false;\r\n\t\t} else if (Number.class.isAssignableFrom(column.getType())) {\r\n\t\t\treturn true;\r\n\t\t} else if (NumberValue.class.isAssignableFrom(column.getType())) {\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tboolean isDate(final EnumTableColumn<?> column) {\r\n\t\tif (column == null) {\r\n\t\t\treturn false;\r\n\t\t} else if (column instanceof AllColumn) {\r\n\t\t\treturn false;\r\n\t\t} else if (Date.class.isAssignableFrom(column.getType())) {\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tboolean isAll(final EnumTableColumn<?> column) {\r\n\t\treturn (column instanceof AllColumn);\r\n\t}\r\n\r\n\r\n\tprivate class ListenerClass implements ListEventListener<E> {\r\n\t\t@Override\r\n\t\tpublic void listChanged(final ListEvent<E> listChanges) {\r\n\t\t\tgui.updateShowing();\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/filter/FilterExport.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.filter;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.regex.Matcher;\r\nimport java.util.regex.Pattern;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JFormulaDialog.Formula;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuJumps.Jump;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.ColumnManager;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.ColumnManager.FormulaColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.ColumnManager.JumpColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.SimpleColumnManager;\r\nimport net.nikr.eve.jeveasset.io.local.SettingsReader;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\n\r\n\r\npublic class FilterExport {\r\n\t//Constants\r\n\tprivate final String ENABLED = \"enabled\";\r\n\tprivate final String DISABLED = \"disabled\";\r\n\tprivate final String FORMULA = \"FORMULA\";\r\n\tprivate final String JUMP = \"JUMP\";\r\n\r\n\tprivate final String toolName;\r\n\r\n\tprivate SimpleColumnManager<?> columnManager;\r\n\r\n\tpublic FilterExport(String toolName) {\r\n\t\tthis(toolName, null);\r\n\t}\r\n\r\n\t/**\r\n\t * For testing\r\n\t * @param toolName\r\n\t * @param columnManager\r\n\t */\r\n\tprotected FilterExport(String toolName, SimpleColumnManager<?> columnManager) {\r\n\t\tthis.toolName = toolName;\r\n\t\tthis.columnManager = columnManager;\r\n\t}\r\n\r\n\tprotected String exportFilter(String filterName, List<Filter> filterList) {\r\n\t\tStringBuilder builder = new StringBuilder();\r\n\t\texportFilter(builder, filterName, filterList);\r\n\t\treturn builder.toString();\r\n\t}\r\n\r\n\tprotected void exportFilter(StringBuilder builder, String filterName, List<Filter> filterList) {\r\n\t\t//Header\r\n\t\taddHeader(builder, filterName);\r\n\t\t//Each filter\r\n\t\tfor (Filter filter : filterList) {\r\n\t\t\taddFilter(builder, filter);\r\n\t\t}\r\n\t\tbuilder.append(\"\\r\\n\");\r\n\t}\r\n\r\n\tprivate void addHeader(StringBuilder builder, String filterName) {\r\n\t\tbuilder.append(\"[\");\r\n\t\tbuilder.append(toolName.toUpperCase()); //Never used, but, usefull to identify where the filters fit\r\n\t\tbuilder.append(\"] [\");\r\n\t\tbuilder.append(wrap(filterName));\r\n\t\tbuilder.append(\"]\\r\\n\");\r\n\t}\r\n\r\n\tprivate void addFilter(StringBuilder builder, Filter filter) {\r\n\t\tbuilder.append(\"[\");\r\n\t\tbuilder.append(filter.getGroup());\r\n\t\tbuilder.append(\"] [\");\r\n\t\tbuilder.append(filter.getLogic().name());\r\n\t\tbuilder.append(\"] [\");\r\n\t\tEnumTableColumn<?> column = filter.getColumn();\r\n\t\tbuilder.append(column.name());\r\n\t\tbuilder.append(\"] [\");\r\n\t\tbuilder.append(filter.getCompareType().name());\r\n\t\tbuilder.append(\"] [\");\r\n\t\tbuilder.append(wrap(filter.getText()));\r\n\t\tbuilder.append(\"] [\");\r\n\t\tbuilder.append(wrapEnabled(filter.isEnabled()));\r\n\t\tbuilder.append(\"]\");\r\n\t\tif (column instanceof FormulaColumn) {\r\n\t\t\tFormulaColumn<?> formulaColumn = (FormulaColumn) column;\r\n\t\t\tbuilder.append(\" [\");\r\n\t\t\tbuilder.append(FORMULA);\r\n\t\t\tbuilder.append(wrap(formulaColumn.getFormula().getOriginalExpression()).replace(\" \", \"\"));\r\n\t\t\tbuilder.append(\"]\");\r\n\t\t}\r\n\t\tif (column instanceof JumpColumn) {\r\n\t\t\tJumpColumn<?> jumpColumn = (JumpColumn) column;\r\n\t\t\tbuilder.append(\" [\");\r\n\t\t\tbuilder.append(JUMP);\r\n\t\t\tbuilder.append(jumpColumn.getJump().getSystemID());\r\n\t\t\tbuilder.append(\"]\");\r\n\t\t}\r\n\t\tbuilder.append(\"\\r\\n\");\r\n\t}\r\n\r\n\tprotected Map<String, List<Filter>> importFilter(String importText) {\r\n\t\tList<Filter> filterList = new ArrayList<>();\r\n\t\tMap<String, List<Filter>> filters = new HashMap<>();\r\n\t\tboolean headerLoaded = false;\r\n\t\tif (importText == null) {\r\n\t\t\treturn filters;\r\n\t\t}\r\n\t\tList<String> groups = new ArrayList<>();\r\n\t\tfor (String line : importText.split(\"[\\r\\n]+\")) {\r\n\t\t\tgroups.clear(); //Clear old data\r\n\r\n\t\t\t//For each [*]\r\n\t\t\tPattern pattern = Pattern.compile(\"\\\\[([^\\\\]]|\\\\]\\\\])*\\\\]\"); //\t\\[([^\\]]|\\]\\])*\\]\tA([^B]|BB)*B\r\n\t\t\tMatcher m = pattern.matcher(line);\r\n\t\t\twhile (m.find()) {\r\n\t\t\t\tgroups.add(m.group());\r\n\t\t\t}\r\n\t\t\t//Header\r\n\t\t\tif (groups.size() == 2) {\r\n\t\t\t\tfilterList = new ArrayList<>(); //New list (as the list is passed to \"filters\")\r\n\t\t\t\tString filterName = unwrap(groups.get(1));\r\n\t\t\t\tfilters.put(filterName, filterList);\r\n\t\t\t\theaderLoaded = true;\r\n\t\t\t}\r\n\t\t\t//Filter\r\n\t\t\tif (headerLoaded) {\r\n\t\t\t\tif (groups.size() == 4) { //backward compatibility (5.7.X and bellow)\r\n\t\t\t\t\t//Logic\r\n\t\t\t\t\tFilter.LogicType logic = null;\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tlogic = Filter.LogicType.valueOf(unwrap(groups.get(0)));\r\n\t\t\t\t\t} catch (IllegalArgumentException ex) {\r\n\t\t\t\t\t\t//Already null;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//Column\r\n\t\t\t\t\tEnumTableColumn<?> column = SettingsReader.getColumn(unwrap(groups.get(1)), toolName, Settings.get());\r\n\r\n\t\t\t\t\t//Compare\r\n\t\t\t\t\tFilter.CompareType compare = null;\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tcompare = Filter.CompareType.valueOf(unwrap(groups.get(2)));\r\n\t\t\t\t\t} catch (IllegalArgumentException ex) {\r\n\t\t\t\t\t\t//Already null;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tString text = null;\r\n\t\t\t\t\tEnumTableColumn<?> compareColumn = null;\r\n\t\t\t\t\tif (Filter.CompareType.isColumnCompare(compare)) {\r\n\t\t\t\t\t\tcompareColumn = SettingsReader.getColumn(unwrap(groups.get(3)), toolName, Settings.get());\r\n\t\t\t\t\t\tif (compareColumn != null) { //Valid\r\n\t\t\t\t\t\t\ttext = unwrap(groups.get(3));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttext = unwrap(groups.get(3));\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (logic != null && column != null && compare != null && (text != null || compareColumn != null)) {\r\n\t\t\t\t\t\tFilter filter = new Filter(logic, column, compare, text);\r\n\t\t\t\t\t\tfilterList.add(filter);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (groups.size() >= 5 && headerLoaded) {\r\n\t\t\t\t\t//Group\r\n\t\t\t\t\tInteger group = null;\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tgroup = Integer.valueOf(unwrap(groups.get(0)));\r\n\t\t\t\t\t} catch (IllegalArgumentException ex) {\r\n\t\t\t\t\t\t//Already null;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//Logic\r\n\t\t\t\t\tFilter.LogicType logic = null;\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tlogic = Filter.LogicType.valueOf(unwrap(groups.get(1)));\r\n\t\t\t\t\t} catch (IllegalArgumentException ex) {\r\n\t\t\t\t\t\t//Already null;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//Column\r\n\t\t\t\t\tString columnName = unwrap(groups.get(2));\r\n\t\t\t\t\tEnumTableColumn<?> column = SettingsReader.getColumn(columnName, toolName, Settings.get());\r\n\r\n\t\t\t\t\t//Compare\r\n\t\t\t\t\tFilter.CompareType compare = null;\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tcompare = Filter.CompareType.valueOf(unwrap(groups.get(3)));\r\n\t\t\t\t\t} catch (IllegalArgumentException ex) {\r\n\t\t\t\t\t\t//Already null;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tString text = null;\r\n\t\t\t\t\tEnumTableColumn<?> compareColumn = null;\r\n\t\t\t\t\tif (Filter.CompareType.isColumnCompare(compare)) {\r\n\t\t\t\t\t\tcompareColumn = SettingsReader.getColumn(unwrap(groups.get(4)), toolName, Settings.get());\r\n\t\t\t\t\t\tif (compareColumn != null) { //Valid\r\n\t\t\t\t\t\t\ttext = unwrap(groups.get(4));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttext = unwrap(groups.get(4));\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//Enabled\r\n\t\t\t\t\tboolean enabled = true;\r\n\t\t\t\t\tif (groups.size() >= 6) {\r\n\t\t\t\t\t\tenabled = unwrapEnabled(groups.get(5));\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//Special Columns\r\n\t\t\t\t\tif (groups.size() == 7 && column == null) { //Only if the column doesn't already exist\r\n\t\t\t\t\t\tString columnData = unwrap(groups.get(6));\r\n\t\t\t\t\t\tif (columnData.startsWith(FORMULA)) {\r\n\t\t\t\t\t\t\tString expresion = columnData.replaceFirst(FORMULA, \"\");\r\n\t\t\t\t\t\t\tFormula formula = new Formula(columnName, expresion, null);\r\n\t\t\t\t\t\t\tif (columnManager == null) { //Lazy load (as it's initialized after this class)\r\n\t\t\t\t\t\t\t\tcolumnManager = ColumnManager.getColumnManager(toolName);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (columnManager != null) {\r\n\t\t\t\t\t\t\t\tcolumn = columnManager.addColumn(formula);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else if (columnData.startsWith(JUMP)) {\r\n\t\t\t\t\t\t\tString system = columnData.replaceFirst(JUMP, \"\");\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\tlong systemID = Long.valueOf(system);\r\n\t\t\t\t\t\t\t\tMyLocation from = ApiIdConverter.getLocation(systemID);\r\n\t\t\t\t\t\t\t\tJump jump = new Jump(from);\r\n\t\t\t\t\t\t\t\tif (columnManager == null) { //Lazy load (as it's initialized after this class)\r\n\t\t\t\t\t\t\t\t\tcolumnManager = ColumnManager.getColumnManager(toolName);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (columnManager != null) {\r\n\t\t\t\t\t\t\t\t\tcolumn = columnManager.addColumn(jump);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} catch (NumberFormatException ex) {\r\n\t\t\t\t\t\t\t\t//No nothing\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (group != null && logic != null && column != null && compare != null && (text != null || compareColumn != null)) {\r\n\t\t\t\t\t\tFilter filter = new Filter(group, logic, column, compare, text, enabled);\r\n\t\t\t\t\t\tfilterList.add(filter);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Ignore everything that does not match the syntax\r\n\t\t}\r\n\t\treturn filters;\r\n\t}\r\n\r\n\tprotected <E> String createExample(List<EnumTableColumn<E>> columns) {\r\n\t\tStringBuilder builder = new StringBuilder();\r\n\t\taddHeader(builder, \"Example Filter\");\r\n\t\tboolean s = true;\r\n\t\tboolean d = true;\r\n\t\tfor (EnumTableColumn<E> column : columns) {\r\n\t\t\tif (s && column.getType().equals(String.class)) {\r\n\t\t\t\taddFilter(builder, new Filter(Filter.LogicType.AND, column, Filter.CompareType.CONTAINS, \"text\"));\r\n\t\t\t\tbuilder.append(\"\\r\\n\");\r\n\t\t\t\ts = false;\r\n\t\t\t}\r\n\t\t\tif (d && column.getType().equals(Double.class)) {\r\n\t\t\t\taddFilter(builder, new Filter(Filter.LogicType.AND, column, Filter.CompareType.GREATER_THAN, \"0\"));\r\n\t\t\t\tbuilder.append(\"\\r\\n\");\r\n\t\t\t\td = false;\r\n\t\t\t}\r\n\t\t\tif (!d && !s) {\r\n\t\t\t\tbreak; //both found\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn builder.toString();\r\n\t}\r\n\r\n\tprivate String wrap(String text) {\r\n\t\treturn text.replace(\"]\", \"]]\");\r\n\t}\r\n\r\n\t/**\r\n\t * *\r\n\t * Convert the enabled disable flag into a readable format for export.\r\n\t *\r\n\t * @param enabled The state of the flag.\r\n\t * @return A string that contains an export element in human readable form,\r\n\t * either \"enabled\" or \"disabled\".\r\n\t */\r\n\tprivate String wrapEnabled(boolean enabled) {\r\n\t\tif (enabled) {\r\n\t\t\treturn wrap(ENABLED);\r\n\t\t}\r\n\t\treturn wrap(DISABLED);\r\n\t}\r\n\r\n\tprivate String unwrap(String text) {\r\n\t\ttext = text.substring(1, text.length() - 1);\r\n\t\ttext = text.replace(\"]]\", \"]\");\r\n\t\treturn text;\r\n\t}\r\n\r\n\t/**\r\n\t * *\r\n\t * Unwrap and convert the human readable enable disable flag to a boolean,\r\n\t * case insensitive.\r\n\t *\r\n\t * @param text The text of the element to be unwrapped and converted.\r\n\t * @return \"disabled\" returns false, all others (including invalid data)\r\n\t * return true.\r\n\t */\r\n\tprivate boolean unwrapEnabled(String text) {\r\n\t\tString unwrapped = unwrap(text);\r\n\t\tif (DISABLED.equalsIgnoreCase(unwrapped)) {\r\n\t\t\treturn false;\r\n\t\t} else if (ENABLED.equalsIgnoreCase(unwrapped)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\t//Assume true if no match.\r\n\t\treturn true;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/filter/FilterGui.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.filter;\r\n\r\nimport java.awt.Component;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.util.ArrayList;\r\nimport java.util.Collections;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.Icon;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JCheckBox;\r\nimport javax.swing.JFrame;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JMenuItem;\r\nimport javax.swing.JOptionPane;\r\nimport javax.swing.JPanel;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.data.settings.SettingsUpdateListener;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.StringComparators;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JDropDownButton;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JFixedToolBar;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\nimport net.nikr.eve.jeveasset.io.shared.DesktopUtil;\r\nimport net.nikr.eve.jeveasset.io.shared.DesktopUtil.HelpLink;\r\n\r\n\r\nclass FilterGui<E> {\r\n\r\n\tprivate enum FilterGuiAction {\r\n\t\tADD,\r\n\t\tCLEAR,\r\n\t\tSAVE,\r\n\t\tMANAGER,\r\n\t\tSHOW_FILTERS,\r\n\t\tEXPORT,\r\n\t\tMANUAL_FILTER,\r\n\t\tMANUAL_TOOL\r\n\t}\r\n\r\n\tprivate final JPanel jPanel;\r\n\tprivate final GroupLayout layout;\r\n\tprivate final JFixedToolBar jToolBar;\r\n\tprivate final JButton jExportButton;\r\n\tprivate final JDropDownButton jExportMenu;\r\n\tprivate final JDropDownButton jLoadFilter;\r\n\tprivate final JButton jFilterHelp;\r\n\tprivate final JDropDownButton jHelp;\r\n\tprivate final JMenuItem jToolHelpMenuItem;\r\n\tprivate final JCheckBox jShowFilters;\r\n\tprivate final JLabel jShowing;\r\n\tprivate final JFrame jFrame;\r\n\r\n\tprivate final FilterControl<E> filterControl;\r\n\tprivate final SimpleTableFormat<E> tableFormat;\r\n\r\n\tprivate final List<FilterPanel<E>> filterPanels = new ArrayList<>();\r\n\tprivate final FilterSave filterSave;\r\n\tprivate final JFilterManagerDialog<E> jFilterManagerDialog;\r\n\r\n\tprivate final ExportDialog<E> exportDialog;\r\n\tprivate boolean multiUpdate = false;\r\n\tprivate HelpLink helpLink = null;\r\n\r\n\tprivate final ListenerClass listener = new ListenerClass();\r\n\r\n\tprotected FilterGui(final JFrame jFrame, final FilterControl<E> filterControl, SimpleTableFormat<E> tableFormat) {\r\n\t\tthis.jFrame = jFrame;\r\n\t\tthis.filterControl = filterControl;\r\n\t\tthis.tableFormat = tableFormat;\r\n\r\n\t\texportDialog = new ExportDialog<>(jFrame, filterControl.getName(), filterControl, filterControl, tableFormat, filterControl.getExportEventList());\r\n\r\n\t\tjPanel = new JPanel();\r\n\r\n\t\tlayout = new GroupLayout(jPanel);\r\n\t\tjPanel.setLayout(layout);\r\n\t\tlayout.setAutoCreateGaps(true);\r\n\t\tlayout.setAutoCreateContainerGaps(false);\r\n\r\n\t\tjToolBar = new JFixedToolBar();\r\n\r\n\t\t//Add\r\n\t\tJButton jAddField = new JButton(GuiShared.get().addField());\r\n\t\tjAddField.setToolTipText(GuiShared.get().addFieldToolTip());\r\n\t\tjAddField.setIcon(Images.EDIT_ADD.getIcon());\r\n\t\tjAddField.setActionCommand(FilterGuiAction.ADD.name());\r\n\t\tjAddField.addActionListener(listener);\r\n\t\tjToolBar.addButton(jAddField);\r\n\r\n\t\t//Reset\r\n\t\tJButton jClearFields = new JButton(GuiShared.get().clearField());\r\n\t\tjClearFields.setToolTipText(GuiShared.get().clearFieldToolTip());\r\n\t\tjClearFields.setIcon(Images.FILTER_CLEAR.getIcon());\r\n\t\tjClearFields.setActionCommand(FilterGuiAction.CLEAR.name());\r\n\t\tjClearFields.addActionListener(listener);\r\n\t\tjToolBar.addButton(jClearFields);\r\n\r\n\t\tjToolBar.addSeparator();\r\n\r\n\t\t//Save Filter\r\n\t\tJButton jSaveFilter = new JButton(GuiShared.get().saveFilter());\r\n\t\tjSaveFilter.setToolTipText(GuiShared.get().saveFilterToolTip());\r\n\t\tjSaveFilter.setIcon(Images.FILTER_SAVE.getIcon());\r\n\t\tjSaveFilter.setActionCommand(FilterGuiAction.SAVE.name());\r\n\t\tjSaveFilter.addActionListener(listener);\r\n\t\tjToolBar.addButton(jSaveFilter);\r\n\r\n\t\t//Load Filter\r\n\t\tjLoadFilter = new JDropDownButton(GuiShared.get().loadFilter());\r\n\t\tjLoadFilter.setToolTipText(GuiShared.get().loadFilterToolTip());\r\n\t\tjLoadFilter.setIcon(Images.FILTER_LOAD.getIcon());\r\n\t\tjLoadFilter.keepVisible(2);\r\n\t\tjLoadFilter.setTopFixedCount(2);\r\n\t\tjLoadFilter.setInterval(125);\r\n\t\tjToolBar.addButton(jLoadFilter);\r\n\r\n\t\tjToolBar.addSeparator();\r\n\r\n\t\t//Export\r\n\t\tjExportButton = new JButton(GuiShared.get().export());\r\n\t\tjExportButton.setToolTipText(GuiShared.get().exportToolTip());\r\n\t\tjExportButton.setIcon(Images.DIALOG_CSV_EXPORT.getIcon());\r\n\t\tjExportButton.setActionCommand(FilterGuiAction.EXPORT.name());\r\n\t\tjExportButton.addActionListener(listener);\r\n\t\tjToolBar.addButton(jExportButton);\r\n\r\n\t\tjExportMenu = new JDropDownButton(GuiShared.get().export(), Images.DIALOG_CSV_EXPORT.getIcon());\r\n\t\tjExportMenu.setToolTipText(GuiShared.get().exportToolTip());\r\n\t\tjExportMenu.setVisible(false);\r\n\t\tjToolBar.addButton(jExportMenu);\r\n\r\n\t\tJMenuItem jExportMenuItem = new JMenuItem(GuiShared.get().exportTableData());\r\n\t\tjExportMenuItem.setIcon(Images.DIALOG_CSV_EXPORT.getIcon());\r\n\t\tjExportMenuItem.setActionCommand(FilterGuiAction.EXPORT.name());\r\n\t\tjExportMenuItem.addActionListener(listener);\r\n\t\tjExportMenu.add(jExportMenuItem);\r\n\r\n\t\tjToolBar.addSeparator();\r\n\r\n\t\t//Show Filters\r\n\t\tjShowFilters = new JCheckBox(GuiShared.get().showFilters());\r\n\t\tjShowFilters.setToolTipText(GuiShared.get().showFiltersToolTip());\r\n\t\tjShowFilters.setActionCommand(FilterGuiAction.SHOW_FILTERS.name());\r\n\t\tjShowFilters.addActionListener(listener);\r\n\t\tjShowFilters.setSelected(true);\r\n\t\tjToolBar.add(jShowFilters);\r\n\r\n\t\tjToolBar.addGlue(5);\r\n\r\n\t\t//Showing\r\n\t\tjShowing = new JLabel();\r\n\t\tjShowing.setHorizontalAlignment(JLabel.RIGHT);\r\n\t\tjToolBar.add(jShowing);\r\n\r\n\t\tjToolBar.addSpace(5);\r\n\r\n\t\tjHelp = new JDropDownButton(Images.MISC_HELP.getIcon());\r\n\t\tjHelp.setVisible(false);\r\n\t\tjToolBar.addButtonIcon(jHelp);\r\n\r\n\t\tJMenuItem jFilterHelpMenuItem = new JMenuItem(GuiShared.get().helpFilter(), Images.MISC_HELP.getIcon());\r\n\t\tjFilterHelpMenuItem.setActionCommand(FilterGuiAction.MANUAL_FILTER.name());\r\n\t\tjFilterHelpMenuItem.addActionListener(listener);\r\n\t\tjHelp.add(jFilterHelpMenuItem);\r\n\r\n\t\tjToolHelpMenuItem = new JMenuItem(Images.SETTINGS_TOOLS.getIcon());\r\n\t\tjToolHelpMenuItem.setActionCommand(FilterGuiAction.MANUAL_TOOL.name());\r\n\t\tjToolHelpMenuItem.addActionListener(listener);\r\n\t\tjHelp.add(jToolHelpMenuItem);\r\n\r\n\t\tjFilterHelp = new JButton(Images.MISC_HELP.getIcon());\r\n\t\tjFilterHelp.setActionCommand(FilterGuiAction.MANUAL_FILTER.name());\r\n\t\tjFilterHelp.addActionListener(listener);\r\n\t\tjToolBar.addButtonIcon(jFilterHelp);\r\n\r\n\t\tupdateFilters();\r\n\t\tadd();\r\n\r\n\t\tfilterSave = new FilterSave(jFrame);\r\n\t\tjFilterManagerDialog = new JFilterManagerDialog<>(jFrame, filterControl.getName(), this, tableFormat.getAllColumns(), filterControl.getFilters(), filterControl.getDefaultFilters());\r\n\t}\r\n\r\n\tprotected JPanel getPanel() {\r\n\t\treturn jPanel;\r\n\t}\r\n\r\n\tpublic void updateColumns() {\r\n\t\tfor (FilterPanel<E> filterPanel : filterPanels) {\r\n\t\t\tfilterPanel.updateColumns();\r\n\t\t}\r\n\t}\r\n\r\n\t/***\r\n\t * @return Is the filter panel shown\r\n\t */\r\n\tpublic boolean isFilterShown() {\r\n\t\treturn jShowFilters.isSelected();\r\n\t}\r\n\r\n\t/***\r\n\t * @param shown Whether to show the filter panel\r\n\t */\r\n\tpublic void setFilterShown(boolean shown) {\r\n\t\tjShowFilters.setSelected(shown);\r\n\t\tupdate();\r\n\t}\r\n\r\n\tprotected final void addExportOption(final JMenuItem jMenuItem) {\r\n\t\tif (!jExportMenu.isVisible()) { //First\r\n\t\t\tjExportMenu.setVisible(true);\r\n\t\t\tjExportButton.setVisible(false);\r\n\t\t}\r\n\t\tjExportMenu.add(jMenuItem);\r\n\t}\r\n\r\n\tprotected final void setManualLink(final HelpLink helpLink, Icon icon) {\r\n\t\tthis.helpLink = helpLink;\r\n\t\tif (helpLink != null) {\r\n\t\t\tjToolHelpMenuItem.setText(helpLink.getTitle());\r\n\t\t\tjToolHelpMenuItem.setIcon(icon);\r\n\t\t\tjHelp.setVisible(true);\r\n\t\t\tjFilterHelp.setVisible(false);\r\n\t\t} else {\r\n\t\t\tjHelp.setVisible(false);\r\n\t\t\tjFilterHelp.setVisible(true);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected void updateShowing() {\r\n\t\tjShowing.setText(GuiShared.get().filterShowing(EventListManager.size(filterControl.getFilterList()), EventListManager.size(filterControl.getEventList()), getCurrentFilterName()));\r\n\t}\r\n\r\n\tprotected String getCurrentFilterName() {\r\n\t\tif (isFiltersEmpty()) {\r\n\t\t\treturn GuiShared.get().filterEmpty();\r\n\t\t}\r\n\t\tList<Filter> filters = getFilters();\r\n\t\tif (filterControl.getAllFilters().containsValue(filters)) {\r\n\t\t\tfor (Map.Entry<String, List<Filter>> entry : filterControl.getAllFilters().entrySet()) {\r\n\t\t\t\tif (entry.getValue().equals(filters)) {\r\n\t\t\t\t\treturn entry.getKey();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn GuiShared.get().filterUntitled();\r\n\t}\r\n\r\n\tprotected List<Filter> getFilters() {\r\n\t\tList<Filter> filters = new ArrayList<>();\r\n\t\tfor (FilterPanel<E> filterPanel : filterPanels) {\r\n\t\t\tfilters.add(filterPanel.getFilter());\r\n\t\t}\r\n\t\treturn filters;\r\n\t}\r\n\r\n\tprotected boolean isFiltersEmpty() {\r\n\t\t//One filter that is empty. Otherwise not empty\r\n\t\treturn filterPanels.size() == 1 && filterPanels.get(0).getFilter().isEmpty();\r\n\t}\r\n\r\n\tprivate List<FilterMatcher<E>> getMatchers() {\r\n\t\tList<FilterMatcher<E>> matchers = new ArrayList<>();\r\n\t\tfor (FilterPanel<E> filterPanel : filterPanels) {\r\n\t\t\tFilterMatcher<E> matcher = filterPanel.getMatcher();\r\n\t\t\tif (!matcher.isEmpty()) {\r\n\t\t\t\tmatchers.add(matcher);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn matchers;\r\n\t}\r\n\r\n\tprotected void update() {\r\n\t\tupdate(true);\r\n\t}\r\n\r\n\tprivate void update(boolean sort) {\r\n\t\t//Save focus owner\r\n\t\tComponent focusOwner = jFrame.getFocusOwner();\r\n\t\t//Update group\r\n\t\tupdateGroupSize();\r\n\t\tjPanel.removeAll();\r\n\t\tGroupLayout.ParallelGroup horizontalGroup = layout.createParallelGroup();\r\n\t\tGroupLayout.SequentialGroup verticalGroup = layout.createSequentialGroup();\r\n\t\t//Toolbars\r\n\t\thorizontalGroup.addComponent(jToolBar, jToolBar.getMinimumSize().width, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE);\r\n\t\tverticalGroup.addComponent(jToolBar, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE);\r\n\t\t//Filters\r\n\t\tif (jShowFilters.isSelected()) {\r\n\t\t\tif (sort) {\r\n\t\t\t\tCollections.sort(filterPanels);\r\n\t\t\t}\r\n\t\t\tint group = -1;\r\n\t\t\tfor (FilterPanel<E> filterPanel : filterPanels) {\r\n\t\t\t\tif (!filterPanel.isMoving()) {\r\n\t\t\t\t\tif (group > -1 && group != filterPanel.getGroup()) {\r\n\t\t\t\t\t\tFilterPanelSeparator separator = new FilterPanelSeparator(group);\r\n\t\t\t\t\t\thorizontalGroup.addComponent(separator.getPanel());\r\n\t\t\t\t\t\tverticalGroup.addGap(0).addComponent(separator.getPanel(), GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE).addGap(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgroup = filterPanel.getGroup();\r\n\t\t\t\t}\r\n\t\t\t\thorizontalGroup.addComponent(filterPanel.getPanel());\r\n\t\t\t\tverticalGroup.addComponent(filterPanel.getPanel(), GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE);\r\n\t\t\t}\r\n\t\t}\r\n\t\tlayout.setHorizontalGroup(horizontalGroup);\r\n\t\tlayout.setVerticalGroup(verticalGroup);\r\n\t\t//Load focus owner\r\n\t\tif (focusOwner != null) {\r\n\t\t\tfocusOwner.requestFocusInWindow();\r\n\t\t}\r\n\t}\r\n\r\n\tprotected void updateGroupSize() {\r\n\t\tSet<Integer> groups = new HashSet<>();\r\n\t\tfor (FilterPanel<E> filterPanel : filterPanels) {\r\n\t\t\tif (!filterPanel.isAnd()) {\r\n\t\t\t\tgroups.add(filterPanel.getGroup());\r\n\t\t\t}\r\n\t\t}\r\n\t\tint groupSize = groups.size() + 1;\r\n\t\tfor (FilterPanel<E> filterPanel : filterPanels) {\r\n\t\t\tfilterPanel.updateGroupSize(groupSize);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected int getFromIndex(FilterPanel<E> filterPanel) {\r\n\t\treturn filterPanels.indexOf(filterPanel);\r\n\t}\r\n\r\n\tprotected int getToIndex(FilterPanel<E> filterPanel) {\r\n\t\tList<FilterPanel<E>> list = new ArrayList<>(filterPanels);\r\n\t\tCollections.sort(list);\r\n\t\treturn list.indexOf(filterPanel);\r\n\t}\r\n\r\n\tprotected void move(FilterPanel<E> filterPanel, int index) {\r\n\t\tfilterPanels.remove(filterPanel);\r\n\t\tfilterPanels.add(index, filterPanel);\r\n\t\tupdate(false);\r\n\t}\r\n\r\n\tprotected boolean fade(FilterPanel<E> filterPanel) {\r\n\t\tint index = filterPanels.indexOf(filterPanel);\r\n\t\tList<FilterPanel<E>> list = new ArrayList<>(filterPanels);\r\n\t\tCollections.sort(list);\r\n\t\treturn index != list.indexOf(filterPanel);\r\n\t}\r\n\r\n\tprotected void clone(final FilterPanel<E> filterPanel) {\r\n\t\tint index = filterPanels.indexOf(filterPanel);\r\n\t\tFilterPanel<E> clone = new FilterPanel<>(this, filterControl, tableFormat);\r\n\t\tclone.setFilter(filterPanel.getFilter());\r\n\t\tfilterPanels.add(index, clone);\r\n\t\tif (!multiUpdate) {\r\n\t\t\tupdate();\r\n\t\t}\r\n\t}\r\n\r\n\tprotected void remove(final FilterPanel<E> filterPanel) {\r\n\t\tfilterPanels.remove(filterPanel);\r\n\t\tif (!multiUpdate) {\r\n\t\t\tupdate();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void add() {\r\n\t\tadd(new FilterPanel<>(this, filterControl, tableFormat));\r\n\t}\r\n\r\n\tprivate void add(final FilterPanel<E> filterPanel) {\r\n\t\tfilterPanels.add(filterPanel);\r\n\t\tif (!multiUpdate) {\r\n\t\t\tupdate();\r\n\t\t}\r\n\t}\r\n\r\n\tprotected void addEmpty() {\r\n\t\tif (filterPanels.isEmpty()) {\r\n\t\t\tadd();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void clearEmpty() {\r\n\t\tif (isFiltersEmpty()) {\r\n\t\t\tremove(filterPanels.get(0));\r\n\t\t}\r\n\t}\r\n\r\n\tprotected void clear() {\r\n\t\tmultiUpdate = true;\r\n\t\twhile (!filterPanels.isEmpty()) {\r\n\t\t\tremove(filterPanels.get(0));\r\n\t\t}\r\n\t\taddEmpty();\r\n\t\tmultiUpdate = false;\r\n\t\tupdate();\r\n\t\trefilter();\r\n\t}\r\n\r\n\tprivate void loadFilter(final String filterName, final boolean add) {\r\n\t\tif (filterName == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (filterControl.getAllFilters().containsKey(filterName)) {\r\n\t\t\tList<Filter> filters = filterControl.getAllFilters().get(filterName);\r\n\t\t\tif (add) {\r\n\t\t\t\taddFilters(filters);\r\n\t\t\t} else {\r\n\t\t\t\tsetFilters(filters);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected void setFilters(final List<Filter> filters) {\r\n\t\tmultiUpdate = true;\r\n\t\twhile (!filterPanels.isEmpty()) {\r\n\t\t\tremove(filterPanels.get(0));\r\n\t\t}\r\n\t\tmultiUpdate = false;\r\n\t\taddFilters(filters);\r\n\t}\r\n\r\n\tprotected void addFilter(final Filter filter) {\r\n\t\taddFilters(Collections.singletonList(filter));\r\n\t}\r\n\r\n\tprotected void addFilters(final List<Filter> filters) {\r\n\t\tmultiUpdate = true;\r\n\t\tclearEmpty(); //Remove single empty filter...\r\n\t\tfor (Filter filter : filters) {\r\n\t\t\tFilterPanel<E> filterPanel = new FilterPanel<>(this, filterControl, tableFormat);\r\n\t\t\tfilterPanel.setFilter(filter);\r\n\t\t\tadd(filterPanel);\r\n\t\t}\r\n\t\taddEmpty(); //Add single filter (if empty)\r\n\t\tmultiUpdate = false;\r\n\t\tupdate();\r\n\t\trefilter();\r\n\t}\r\n\r\n\tprotected final void updateFilters() {\r\n\t\tjLoadFilter.removeAll();\r\n\t\tJMenuItem jMenuItem;\r\n\r\n\t\tjMenuItem = new JMenuItem(GuiShared.get().manageFilters(), Images.DIALOG_SETTINGS.getIcon());\r\n\t\tjMenuItem.setActionCommand(FilterGuiAction.MANAGER.name());\r\n\t\tjMenuItem.addActionListener(listener);\r\n\t\tjMenuItem.setRolloverEnabled(true);\r\n\t\tjLoadFilter.add(jMenuItem);\r\n\r\n\t\tList<String> filters = new ArrayList<>(filterControl.getFilters().keySet());\r\n\t\tCollections.sort(filters, StringComparators.CASE_INSENSITIVE);\r\n\r\n\t\tList<String> defaultFilters = new ArrayList<>(filterControl.getDefaultFilters().keySet());\r\n\t\tCollections.sort(defaultFilters, StringComparators.CASE_INSENSITIVE);\r\n\r\n\t\tif (!filters.isEmpty() || !defaultFilters.isEmpty()) {\r\n\t\t\tjLoadFilter.addSeparator();\r\n\t\t}\r\n\r\n\t\tfor (String s : defaultFilters) {\r\n\t\t\tjMenuItem = new JMenuItem(s, Images.FILTER_LOAD_DEFAULT.getIcon());\r\n\t\t\tjMenuItem.setRolloverEnabled(true);\r\n\t\t\tjMenuItem.setActionCommand(s);\r\n\t\t\tjMenuItem.addActionListener(listener);\r\n\t\t\tjLoadFilter.add(jMenuItem);\r\n\t\t}\r\n\r\n\t\tfor (String s : filters) {\r\n\t\t\tjMenuItem = new JMenuItem(s, Images.FILTER_LOAD.getIcon());\r\n\t\t\tjMenuItem.setRolloverEnabled(true);\r\n\t\t\tjMenuItem.setActionCommand(s);\r\n\t\t\tjMenuItem.addActionListener(listener);\r\n\t\t\tjLoadFilter.add(jMenuItem);\r\n\t\t}\r\n\t\tupdateShowing();\r\n\t\tfilterControl.updateFilters();\r\n\t}\r\n\r\n\tprotected void saveSettings(String msg) {\r\n\t\tfilterControl.saveSettings(msg);\r\n\t}\r\n\r\n\tprotected void refilter() {\r\n\t\tfilterControl.beforeFilter();\r\n\t\tList<FilterMatcher<E>> matchers = getMatchers();\r\n\t\tboolean empty = true;\r\n\t\tfor (FilterMatcher<E> matcher : matchers) {\r\n\t\t\tif (!matcher.isEmpty()) {\r\n\t\t\t\tempty = false;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (empty) {\r\n\t\t\tfilterControl.getFilterList().setMatcher(null);\r\n\t\t} else {\r\n\t\t\tfilterControl.getFilterList().setMatcher(new FilterLogicalMatcher<>(matchers));\r\n\t\t}\r\n\r\n\t\tfilterControl.afterFilter();\r\n\t\tupdateShowing();\r\n\t\tfireSettingsUpdate();\r\n\t}\r\n\r\n\tprotected void repaint() {\r\n\t\tfor (FilterPanel<E> filterPanel : filterPanels) {\r\n\t\t\tfilterPanel.repaint();\r\n\t\t}\r\n\t}\r\n\r\n\tprotected String getFilterName() {\r\n\t\treturn filterSave.show(new ArrayList<>(filterControl.getFilters().keySet()), new ArrayList<>(filterControl.getDefaultFilters().keySet()));\r\n\t}\r\n\r\n\t/**\r\n\t * Loop though set update listeners and trigger their action.\r\n\t */\r\n\tprivate void fireSettingsUpdate() {\r\n\t\tfor (SettingsUpdateListener updateListener : filterControl.getSettingsUpdateListenerList()) {\r\n\t\t\tupdateListener.settingChanged();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener {\r\n\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\tif (FilterGuiAction.ADD.name().equals(e.getActionCommand())) {\r\n\t\t\t\tadd();\r\n\t\t\t\tupdateShowing();\r\n\t\t\t\tfireSettingsUpdate();\r\n\t\t\t} else if (FilterGuiAction.CLEAR.name().equals(e.getActionCommand())) {\r\n\t\t\t\tclear();\r\n\t\t\t} else if (FilterGuiAction.MANAGER.name().equals(e.getActionCommand())) {\r\n\t\t\t\tjFilterManagerDialog.setVisible(true);\r\n\t\t\t} else if (FilterGuiAction.SHOW_FILTERS.name().equals(e.getActionCommand())) {\r\n\t\t\t\tupdate();\r\n\t\t\t\tSettings.get().getCurrentTableFiltersShown().put(filterControl.getName(), isFilterShown());\r\n\t\t\t\tfireSettingsUpdate();\r\n\t\t\t} else if (FilterGuiAction.SAVE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tif (isFiltersEmpty()) {\r\n\t\t\t\t\tJOptionPane.showMessageDialog(jFrame, GuiShared.get().nothingToSave(), GuiShared.get().saveFilter(), JOptionPane.PLAIN_MESSAGE);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tString name = filterSave.show(new ArrayList<>(filterControl.getFilters().keySet()), new ArrayList<>(filterControl.getDefaultFilters().keySet()));\r\n\t\t\t\t\tif (name != null && !name.isEmpty()) {\r\n\t\t\t\t\t\tSettings.lock(\"Filter (New)\"); //Lock for Filter (New)\r\n\t\t\t\t\t\tfilterControl.getFilters().put(name, getFilters());\r\n\t\t\t\t\t\tSettings.unlock(\"Filter (New)\"); //Unlock for Filter (New)\r\n\t\t\t\t\t\tsaveSettings(\"Filter (New)\"); //Save Filter (New)\r\n\t\t\t\t\t\tupdateFilters();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (FilterGuiAction.EXPORT.name().equals(e.getActionCommand())) {\r\n\t\t\t\texportDialog.setVisible(true);\r\n\t\t\t} else if (FilterGuiAction.MANUAL_FILTER.name().equals(e.getActionCommand())) {\r\n\t\t\t\tDesktopUtil.browse(new HelpLink(\"https://wiki.jeveassets.org/manual/filters\", GuiShared.get().helpFilter()), jFrame);\r\n\t\t\t} else if (FilterGuiAction.MANUAL_TOOL.name().equals(e.getActionCommand())) {\r\n\t\t\t\tDesktopUtil.browse(helpLink, jFrame);\r\n\t\t\t} else {\r\n\t\t\t\tloadFilter(e.getActionCommand(), (e.getModifiers() & ActionEvent.CTRL_MASK) != 0);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/filter/FilterLogicalMatcher.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.filter;\n\nimport ca.odell.glazedlists.matchers.Matcher;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n\npublic class FilterLogicalMatcher<E> implements Matcher<E> {\n\n\tprivate final List<FilterMatcher<E>> and = new ArrayList<>();\n\tprivate final Map<Integer, List<FilterMatcher<E>>> or = new HashMap<>();\n\n\tpublic FilterLogicalMatcher(final List<FilterMatcher<E>> matchers) {\n\t\tfor (FilterMatcher<E> matcher : matchers) {\n\t\t\taddMatcher(matcher);\n\t\t}\n\t}\n\n\tpublic FilterLogicalMatcher(final SimpleTableFormat<E> tableFormat, ColumnCache<E> columnCache, final List<Filter> filters) {\n\t\tfor (Filter filter : filters) {\n\t\t\tFilterMatcher<E> matcher = new FilterMatcher<>(tableFormat, columnCache, filter);\n\t\t\taddMatcher(matcher);\n\t\t}\n\t}\n\n\tprivate void addMatcher(FilterMatcher<E> matcher) {\n\t\tif (!matcher.isEmpty()) {\n\t\t\tif (matcher.isAnd()) { //And\n\t\t\t\tand.add(matcher);\n\t\t\t} else {\n\t\t\t\tList<FilterMatcher<E>> list = or.get(matcher.getGroup());\n\t\t\t\tif (list == null) {\n\t\t\t\t\tlist = new ArrayList<>();\n\t\t\t\t\tor.put(matcher.getGroup(), list);\n\t\t\t\t}\n\t\t\t\tlist.add(matcher);\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic boolean matches(final E item) {\n\t\tfor (FilterMatcher<E> matcher : and) {\n\t\t\tif (!matcher.matches(item)) { //if just one don't match, none match\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\t//All ANDs matches\n\t\tfor (List<FilterMatcher<E>> list : or.values()) {\n\t\t\tboolean found = false;\n\t\t\tfor (FilterMatcher<E> matcher : list) {\n\t\t\t\tif (matcher.matches(item)) { //if just one is true all is true\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) { //if none in group match (just need to match one)\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true; //Matched\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/filter/FilterMatcher.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.filter;\r\n\r\nimport ca.odell.glazedlists.matchers.Matcher;\r\nimport java.text.NumberFormat;\r\nimport java.text.ParsePosition;\r\nimport java.util.Calendar;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.Locale;\r\nimport java.util.Map;\r\nimport java.util.TimeZone;\r\nimport java.util.regex.Pattern;\r\nimport java.util.regex.PatternSyntaxException;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter.CompareType;\r\nimport static net.nikr.eve.jeveasset.gui.shared.filter.Filter.CompareType.NEXT_DAYS;\r\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter.LogicType;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.AssetContainer;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.NumberValue;\r\n\r\n\r\npublic class FilterMatcher<E> implements Matcher<E> {\r\n\r\n\tpublic static final Locale LOCALE = Locale.ENGLISH; //Use english AKA US_EN\r\n\tprivate static final NumberFormat NUMBER_FORMAT = NumberFormat.getInstance(LOCALE);\r\n\tprivate static final NumberFormat PERCENT_FORMAT = NumberFormat.getPercentInstance(LOCALE);\r\n\tprivate static final Calendar CALENDAR = Calendar.getInstance(TimeZone.getTimeZone(\"GMT\"));\r\n\tprivate static final Map<Object, String> CELL_VALUE_CACHE = new HashMap<>();\r\n\tprivate static boolean cellValueCache = false; //Cell value cache\r\n\r\n\tprivate final SimpleTableFormat<E> tableFormat;\r\n\tprivate final ColumnCache<E> columnCache;\r\n\tprivate final int group;\r\n\tprivate final boolean and;\r\n\tprivate final EnumTableColumn<?> enumColumn;\r\n\tprivate final CompareType compare;\r\n\tprivate final String text;\r\n\tprivate final Pattern pattern;\r\n\tprivate final boolean empty;\r\n\r\n\tFilterMatcher(final SimpleTableFormat<E> filterControl, ColumnCache<E> columnCache, final Filter filter) {\r\n\t\tthis(filterControl, columnCache, filter.getGroup(), filter.getLogic(), filter.getColumn(), filter.getCompareType(), filter.getText(), filter.isEnabled());\r\n\t}\r\n\r\n\tFilterMatcher(final SimpleTableFormat<E> tableFormat, ColumnCache<E> columnCache, int group, final LogicType logic, final EnumTableColumn<?> enumColumn, final CompareType compare, final String text, final boolean enabled) {\r\n\t\tthis.tableFormat = tableFormat;\r\n\t\tthis.columnCache = columnCache;\r\n\t\tthis.group = group;\r\n\t\tthis.enumColumn = enumColumn;\r\n\t\tthis.compare = compare;\r\n\t\tPattern compiled;\r\n\t\tif (text == null) {\r\n\t\t\tthis.pattern = null;\r\n\t\t} else {\r\n\t\t\ttry {\r\n\t\t\t\tcompiled = Pattern.compile(format(text), Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);\r\n\t\t\t} catch (PatternSyntaxException ex) {\r\n\t\t\t\tcompiled = Pattern.compile(\"\", Pattern.CASE_INSENSITIVE);\r\n\t\t\t}\r\n\t\t\tthis.pattern = compiled;\r\n\t\t}\r\n\t\tif (CompareType.isColumnCompare(compare)) {\r\n\t\t\tthis.text = text;\r\n\t\t} else {\r\n\t\t\tthis.text = formatData(text, true);\r\n\t\t}\r\n\t\tempty = !enabled || text == null || text.isEmpty();\r\n\t\tand = logic == Filter.LogicType.AND;\r\n\t}\r\n\r\n\tpublic int getGroup() {\r\n\t\treturn group;\r\n\t}\r\n\r\n\tprotected boolean isAnd() {\r\n\t\treturn and;\r\n\t}\r\n\r\n\tpublic boolean isEmpty() {\r\n\t\treturn empty;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean matches(final E item) {\r\n\t\tif (enumColumn instanceof Filter.AllColumn) {\r\n\t\t\treturn matchesAll(item);\r\n\t\t}\r\n\t\tObject column = tableFormat.getColumnValue(item, enumColumn.name());\r\n\t\tif (column == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (null == compare) { //Fallback: show all...\r\n\t\t\treturn true;\r\n\t\t} else switch (compare) {\r\n\t\t\tcase CONTAINS:\r\n\t\t\t\treturn contains(column, text);\r\n\t\t\tcase CONTAINS_NOT:\r\n\t\t\t\treturn !contains(column, text);\r\n\t\t\tcase EQUALS:\r\n\t\t\t\treturn equals(column, text);\r\n\t\t\tcase EQUALS_DATE:\r\n\t\t\t\treturn equalsDate(column, text);\r\n\t\t\tcase EQUALS_NOT:\r\n\t\t\t\treturn !equals(column, text);\r\n\t\t\tcase REGEX:\r\n\t\t\t\treturn regex(column, pattern);\r\n\t\t\tcase EQUALS_NOT_DATE:\r\n\t\t\t\treturn !equalsDate(column, text);\r\n\t\t\tcase GREATER_THAN:\r\n\t\t\t\treturn great(column, text);\r\n\t\t\tcase LESS_THAN:\r\n\t\t\t\treturn less(column, text);\r\n\t\t\tcase BEFORE:\r\n\t\t\t\treturn before(column, text);\r\n\t\t\tcase AFTER:\r\n\t\t\t\treturn after(column, text);\r\n\t\t\tcase GREATER_THAN_COLUMN:\r\n\t\t\t\treturn great(column, tableFormat.getColumnValue(item, text));\r\n\t\t\tcase LESS_THAN_COLUMN:\r\n\t\t\t\treturn less(column, tableFormat.getColumnValue(item, text));\r\n\t\t\tcase EQUALS_COLUMN:\r\n\t\t\t\treturn equals(column, formatData(tableFormat.getColumnValue(item, text), false));\r\n\t\t\tcase EQUALS_NOT_COLUMN:\r\n\t\t\t\treturn !equals(column, formatData(tableFormat.getColumnValue(item, text), false));\r\n\t\t\tcase CONTAINS_COLUMN:\r\n\t\t\t\treturn contains(column, formatData(tableFormat.getColumnValue(item, text), false));\r\n\t\t\tcase CONTAINS_NOT_COLUMN:\r\n\t\t\t\treturn !contains(column, formatData(tableFormat.getColumnValue(item, text), false));\r\n\t\t\tcase BEFORE_COLUMN:\r\n\t\t\t\treturn before(column, tableFormat.getColumnValue(item, text));\r\n\t\t\tcase AFTER_COLUMN:\r\n\t\t\t\treturn after(column, tableFormat.getColumnValue(item, text));\r\n\t\t\tcase LAST_DAYS:\r\n\t\t\t\treturn lastDays(column, text);\r\n\t\t\tcase NEXT_DAYS:\r\n\t\t\t\treturn nextDays(column, text);\r\n\t\t\tcase LAST_HOURS:\r\n\t\t\t\treturn lastHours(column, text);\r\n\t\t\tcase NEXT_HOURS:\r\n\t\t\t\treturn nextHours(column, text);\r\n\t\t\tdefault:\r\n\t\t\t\t//Fallback: show all...\r\n\t\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static <E> String buildItemCache(SimpleTableFormat<E> filterControl, E e) {\r\n\t\tStringBuilder builder = new StringBuilder();\r\n\t\tfor (EnumTableColumn<E> testColumn : filterControl.getAllColumns()) {\r\n\t\t\tObject columnValue = filterControl.getColumnValue(e, testColumn.name());\r\n\t\t\tif (columnValue != null) {\r\n\t\t\t\tbuilder.append(\"\\n\");\r\n\t\t\t\tbuilder.append(formatData(columnValue, false));\r\n\t\t\t\tbuilder.append(\"\\r\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn builder.toString();\r\n\t}\r\n\r\n\tprivate boolean matchesAll(final E item) {\r\n\t\tString haystack;\r\n\t\tif (columnCache != null) {\r\n\t\t\thaystack = columnCache.getCache().get(item);\r\n\t\t\tif (haystack == null) { //Will be build on update if any filter is set\r\n\t\t\t\thaystack = buildItemCache(tableFormat, item);\r\n\t\t\t\tcolumnCache.addCache(item, haystack);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\thaystack = buildItemCache(tableFormat, item);\r\n\t\t}\r\n\t\tif (compare == null || text == null) {\r\n\t\t\treturn true;\r\n\t\t} else switch (compare) {\r\n\t\t\tcase CONTAINS:\r\n\t\t\t\treturn haystack.contains(text);\r\n\t\t\tcase CONTAINS_NOT:\r\n\t\t\t\treturn !haystack.contains(text);\r\n\t\t\tcase EQUALS:\r\n\t\t\t\treturn haystack.contains(\"\\n\" + text + \"\\r\");\r\n\t\t\tcase EQUALS_NOT:\r\n\t\t\t\treturn !haystack.contains(\"\\n\" + text + \"\\r\");\r\n\t\t\tcase REGEX:\r\n\t\t\t\treturn pattern.matcher(haystack).find();\r\n\t\t\tdefault:\r\n\t\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate boolean equals(final Object object1, final String formattedText) {\r\n\t\t//Null\r\n\t\tif (object1 == null || formattedText == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t//Equals (case insentive)\r\n\t\treturn formatData(object1, false).equals(formattedText);\r\n\t}\r\n\r\n\tprivate boolean regex(final Object object1, final Pattern pattern) {\r\n\t\t//Null\r\n\t\tif (object1 == null || pattern == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t//Rexex\r\n\t\treturn pattern.matcher(formatData(object1, false)).find();\r\n\t}\r\n\r\n\tprivate boolean contains(final Object object1, final String formattedText) {\r\n\t\t//Null\r\n\t\tif (object1 == null || formattedText == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t//Contains (case insentive)\r\n\t\treturn formatData(object1, false).contains(formattedText);\r\n\t}\r\n\r\n\tprivate boolean less(final Object object1, final Object object2) {\r\n\t\treturn greatThen(object2, object1, false);\r\n\t}\r\n\r\n\tprivate boolean great(final Object object1, final Object object2) {\r\n\t\treturn greatThen(object1, object2, true);\r\n\t}\r\n\r\n\tprivate boolean greatThen(final Object object1, final Object object2, final boolean fallback) {\r\n\t\t//Null\r\n\t\tif (object1 == null || object2 == null) {\r\n\t\t\treturn fallback;\r\n\t\t}\r\n\r\n\t\t//Double / Float\r\n\t\tDouble double1 = getDouble(object1);\r\n\t\tDouble double2 = getDouble(object2);\r\n\r\n\t\t//Long / Integer\r\n\t\tLong long1 = getLong(object1);\r\n\t\tLong long2 = getLong(object2);\r\n\r\n\t\tif (long1 != null && long2 != null) {\r\n\t\t\treturn long1 > long2;\r\n\t\t}\r\n\t\tif (long1 != null && double2 != null) {\r\n\t\t\treturn long1 > double2;\r\n\t\t}\r\n\t\tif (double1 != null && double2 != null) {\r\n\t\t\treturn double1 > double2;\r\n\t\t}\r\n\t\tif (double1 != null && long2 != null) {\r\n\t\t\treturn double1 > long2;\r\n\t\t}\r\n\r\n\r\n\t\treturn fallback; //Fallback\r\n\t}\r\n\r\n\tprivate boolean before(final Object object1, final Object object2) {\r\n\t\t//Date\r\n\t\tDate date1 = getDate(object1, false);\r\n\t\tDate date2 = getDate(object2, true);\r\n\t\tif (date1 != null && date2 != null) {\r\n\t\t\tCALENDAR.setTime(date2);\r\n\t\t\tCALENDAR.set(Calendar.HOUR_OF_DAY, 0);\r\n\t\t\tCALENDAR.set(Calendar.MINUTE, 0);\r\n\t\t\tCALENDAR.set(Calendar.SECOND, 0);\r\n\t\t\tCALENDAR.set(Calendar.MILLISECOND, 0);\r\n\t\t\treturn date1.before(CALENDAR.getTime());\r\n\t\t}\r\n\t\treturn false; //Fallback\r\n\t}\r\n\r\n\tprivate boolean after(final Object object1, final Object object2) {\r\n\t\tDate date1 = getDate(object1, false);\r\n\t\tDate date2 = getDate(object2, true);\r\n\t\tif (date1 != null && date2 != null) {\r\n\t\t\tCALENDAR.setTime(date2);\r\n\t\t\tCALENDAR.set(Calendar.HOUR_OF_DAY, 23);\r\n\t\t\tCALENDAR.set(Calendar.MINUTE, 59);\r\n\t\t\tCALENDAR.set(Calendar.SECOND, 59);\r\n\t\t\tCALENDAR.set(Calendar.MILLISECOND, 999);\r\n\t\t\treturn date1.after(CALENDAR.getTime());\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate boolean equalsDate(final Object object1, final Object object2) {\r\n\t\tDate date1 = getDate(object1, false);\r\n\t\tDate date2 = getDate(object2, true);\r\n\t\tif (date1 != null && date2 != null) {\r\n\t\t\tCALENDAR.setTime(date2);\r\n\t\t\tCALENDAR.set(Calendar.HOUR_OF_DAY, 12);\r\n\t\t\tCALENDAR.set(Calendar.MINUTE, 0);\r\n\t\t\tCALENDAR.set(Calendar.SECOND, 0);\r\n\t\t\tCALENDAR.set(Calendar.MILLISECOND, 0);\r\n\t\t\tdate2 = CALENDAR.getTime();\r\n\t\t\tCALENDAR.setTime(date1);\r\n\t\t\tCALENDAR.set(Calendar.HOUR_OF_DAY, 12);\r\n\t\t\tCALENDAR.set(Calendar.MINUTE, 0);\r\n\t\t\tCALENDAR.set(Calendar.SECOND, 0);\r\n\t\t\tCALENDAR.set(Calendar.MILLISECOND, 0);\r\n\t\t\tdate1 = CALENDAR.getTime();\r\n\t\t\treturn date1.equals(date2);\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate boolean lastDays(final Object object1, final Object object2) {\r\n\t\tDate date = getDate(object1, false);\r\n\t\tNumber days = createNumber(object2);\r\n\t\tif (date != null && days != null) {\r\n\t\t\tCALENDAR.setTime(new Date());\r\n\t\t\tCALENDAR.set(Calendar.HOUR_OF_DAY, 0);\r\n\t\t\tCALENDAR.set(Calendar.MINUTE, 0);\r\n\t\t\tCALENDAR.set(Calendar.SECOND, 0);\r\n\t\t\tCALENDAR.set(Calendar.MILLISECOND, 0);\r\n\t\t\tCALENDAR.add(Calendar.DAY_OF_MONTH, -days.intValue());\r\n\t\t\treturn date.before(Settings.getNow()) && date.after(CALENDAR.getTime());\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate boolean nextDays(final Object object1, final Object object2) {\r\n\t\tDate date = getDate(object1, false);\r\n\t\tNumber days = createNumber(object2);\r\n\t\tif (date != null && days != null) {\r\n\t\t\tCALENDAR.setTime(new Date());\r\n\t\t\tCALENDAR.set(Calendar.HOUR_OF_DAY, 23);\r\n\t\t\tCALENDAR.set(Calendar.MINUTE, 59);\r\n\t\t\tCALENDAR.set(Calendar.SECOND, 59);\r\n\t\t\tCALENDAR.set(Calendar.MILLISECOND, 999);\r\n\t\t\tCALENDAR.add(Calendar.DAY_OF_MONTH, days.intValue());\r\n\t\t\treturn date.after(Settings.getNow()) && date.before(CALENDAR.getTime());\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate boolean lastHours(final Object object1, final Object object2) {\r\n\t\tDate date = getDate(object1, false);\r\n\t\tNumber hours = createNumber(object2);\r\n\t\tif (date != null && hours != null) {\r\n\t\t\tCALENDAR.setTime(new Date());\r\n\t\t\tCALENDAR.add(Calendar.HOUR_OF_DAY, -hours.intValue());\r\n\t\t\treturn date.before(Settings.getNow()) && date.after(CALENDAR.getTime());\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate boolean nextHours(final Object object1, final Object object2) {\r\n\t\tDate date = getDate(object1, false);\r\n\t\tNumber hours = createNumber(object2);\r\n\t\tif (date != null && hours != null) {\r\n\t\t\tCALENDAR.setTime(new Date());\r\n\t\t\tCALENDAR.add(Calendar.HOUR_OF_DAY, hours.intValue());\r\n\t\t\treturn date.after(Settings.getNow()) && date.before(CALENDAR.getTime());\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate static Number getNumber(final Object obj, final boolean userInput) {\r\n\t\tif (obj instanceof Number) {\r\n\t\t\treturn (Number) obj;\r\n\t\t} else if (obj instanceof NumberValue) {\r\n\t\t\treturn ((NumberValue) obj).getNumber();\r\n\t\t} else if (userInput) {\r\n\t\t\treturn createNumber(obj);\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Double getDouble(final Object obj) {\r\n\t\tif (obj instanceof Double) {\r\n\t\t\treturn (Double) obj;\r\n\t\t} else if (obj instanceof Float) {\r\n\t\t\treturn Double.valueOf((Float) obj);\r\n\t\t} else if (obj instanceof NumberValue) {\r\n\t\t\treturn ((NumberValue) obj).getDouble();\r\n\t\t} else {\r\n\t\t\treturn createDouble(obj);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Long getLong(final Object obj) {\r\n\t\tif (obj instanceof Long) {\r\n\t\t\treturn (Long) obj;\r\n\t\t} else if (obj instanceof Integer) {\r\n\t\t\treturn Long.valueOf((Integer) obj);\r\n\t\t} else if (obj instanceof NumberValue) {\r\n\t\t\treturn ((NumberValue) obj).getLong();\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static Double createDouble(final Object object) {\r\n\t\tNumber number = parse(object, NUMBER_FORMAT);\r\n\t\tif (number != null) {\r\n\t\t\treturn number.doubleValue();\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static Number createNumber(final Object object) {\r\n\t\tNumber number = parse(object, NUMBER_FORMAT);\r\n\t\tif (number != null) {\r\n\t\t\treturn number;\r\n\t\t} else {\r\n\t\t\treturn createPercent(object);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static Double createPercent(final Object object) {\r\n\t\tNumber d = parse(object, PERCENT_FORMAT);\r\n\t\tif (d != null) {\r\n\t\t\treturn d.doubleValue() * 100;\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static Number parse(final Object object, final NumberFormat numberFormat) {\r\n\t\tif (object instanceof String) {\r\n\t\t\tString filterValue = (String) object;\r\n\t\t\t//Used to check if parsing was successful\r\n\t\t\tParsePosition position = new ParsePosition(0);\r\n\t\t\t//Parse number using the Locale\r\n\t\t\tNumber n = numberFormat.parse(filterValue, position);\r\n\t\t\tif (n != null && position.getIndex() == filterValue.length()) { //Numeric\r\n\t\t\t\treturn n;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate static Date getDate(final Object obj, final boolean userInput) {\r\n\t\tif (obj instanceof Date) {\r\n\t\t\treturn (Date) obj;\r\n\t\t} else if (userInput && (obj instanceof String)) {\r\n\t\t\treturn Formatter.columnStringToDate((String) obj);\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static AssetContainer getAssetContainer(final Object obj) {\r\n\t\tif (obj instanceof AssetContainer) {\r\n\t\t\treturn (AssetContainer) obj;\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static String formatFilter(final Object object) {\r\n\t\treturn format(object, false);\r\n\t}\r\n\r\n\tprivate static String formatData(final Object object, final boolean userInput) {\r\n\t\tif (object == null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn format(object, userInput).toLowerCase();\r\n\t}\r\n\r\n\tpublic static void clearColumnValueCache() {\r\n\t\tCELL_VALUE_CACHE.clear();\r\n\t\tcellValueCache = Settings.get().isColumnValueCache();\r\n\t}\r\n\r\n\tprivate static String format(final Object object, final boolean userInput) {\r\n\t\tif (cellValueCache) {\r\n\t\t\tString value = CELL_VALUE_CACHE.get(object);\r\n\t\t\tif (value != null) {\r\n\t\t\t\treturn value;\r\n\t\t\t} else {\r\n\t\t\t\tvalue = createFormat(object, userInput);\r\n\t\t\t\tCELL_VALUE_CACHE.put(object, value);\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn createFormat(object, userInput);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static String createFormat(final Object object, final boolean userInput) {\r\n\t\tif (object == null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t//Number\r\n\t\tNumber number = getNumber(object, userInput);\r\n\t\tif (number != null) {\r\n\t\t\treturn Formatter.compareFormat(number);\r\n\t\t}\r\n\r\n\t\t//Date\r\n\t\tDate date = getDate(object, userInput);\r\n\t\tif (date != null) {\r\n\t\t\treturn Formatter.columnDate(date);\r\n\t\t}\r\n\r\n\t\t//AssetContainer\r\n\t\tAssetContainer assetContainer = getAssetContainer(object);\r\n\t\tif (assetContainer != null) {\r\n\t\t\treturn assetContainer.getContainer();\r\n\t\t}\r\n\r\n\t\t//String\r\n\t\treturn format(object.toString());\r\n\t}\r\n\r\n\tprivate static String format(String string) {\r\n\t\treturn string\r\n\t\t\t\t.replace(\"„\", \"\\\"\") //Index\r\n\t\t\t\t.replace(\"“\", \"\\\"\") //Set transmit state\r\n\t\t\t\t.replace(\"”\", \"\\\"\") //Cancel character\r\n\t\t\t\t.replace(\"‘\", \"'\") //Private use one\r\n\t\t\t\t.replace(\"’\", \"'\") //Private use two\r\n\t\t\t\t.replace(\"`\", \"'\") //Grave accent\r\n\t\t\t\t.replace(\"´\", \"'\") //Acute accent\r\n\t\t\t\t.replace(\"–\", \"-\") //En dash\r\n\t\t\t\t.replace(\"‐\", \"-\") //Hyphen\r\n\t\t\t\t.replace(\"‑\", \"-\") //Non-breaking hyphen\r\n\t\t\t\t.replace(\"‒\", \"-\") //Figure dash\r\n\t\t\t\t.replace(\"—\", \"-\") //Em dash\r\n\t\t\t\t;\r\n\t}\r\n}"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/filter/FilterMenu.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.filter;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.util.Date;\r\nimport java.util.Objects;\r\nimport java.util.Set;\r\nimport java.util.concurrent.TimeUnit;\r\nimport javax.swing.JFrame;\r\nimport javax.swing.JMenu;\r\nimport javax.swing.JMenuItem;\r\nimport javax.swing.JOptionPane;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter.CompareType;\r\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter.LogicType;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\nclass FilterMenu<E> extends JMenu {\r\n\r\n\tprivate final JFrame jFrame;\r\n\tprivate final FilterGui<E> gui;\r\n\tprivate final Set<SimpleFilter> filters;\r\n\r\n\tFilterMenu(final JFrame jFrame, final FilterGui<E> gui, Set<SimpleFilter> filters, final boolean isNumeric, final boolean isDate) {\r\n\t\tsuper(GuiShared.get().popupMenuAddField());\r\n\t\tthis.jFrame = jFrame;\r\n\t\tthis.gui = gui;\r\n\t\tthis.setIcon(Images.FILTER_CONTAIN.getIcon());\r\n\t\tthis.filters = filters;\r\n\r\n\t\tListenerClass listener = new ListenerClass();\r\n\r\n\t\tJMenuItem jMenuItem;\r\n\t\tCompareType[] compareTypes;\r\n\t\tif (isNumeric) {\r\n\t\t\tcompareTypes = CompareType.valuesNumeric();\r\n\t\t} else if (isDate) {\r\n\t\t\tcompareTypes = CompareType.valuesDate();\r\n\t\t} else {\r\n\t\t\tcompareTypes = CompareType.valuesString();\r\n\t\t}\r\n\r\n\t\tfor (CompareType compareType : compareTypes) {\r\n\t\t\tjMenuItem = new JMenuItem(compareType.toString());\r\n\t\t\tjMenuItem.setIcon(compareType.getIcon());\r\n\t\t\tjMenuItem.setActionCommand(compareType.name());\r\n\t\t\tjMenuItem.addActionListener(listener);\r\n\t\t\tjMenuItem.setEnabled(!filters.isEmpty());\r\n\t\t\tadd(jMenuItem);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener {\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\tif (filters.size() > 1) {\r\n\t\t\t\tint returnValue = JOptionPane.showConfirmDialog(jFrame, GuiShared.get().popupMenuAddFieldMsg(filters.size()), GuiShared.get().popupMenuAddField(), JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);\r\n\t\t\t\tif (returnValue == JOptionPane.CANCEL_OPTION) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfor (SimpleFilter filter : filters) {\r\n\t\t\t\tgui.addFilter(filter.getFilter(e.getActionCommand()));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static class SimpleFilter {\r\n\t\tprivate final EnumTableColumn<?> column;\r\n\t\tprivate final String text;\r\n\r\n\t\tpublic SimpleFilter(EnumTableColumn<?> column, String text) {\r\n\t\t\tthis.column = column;\r\n\t\t\tthis.text = text;\r\n\t\t}\r\n\r\n\t\tpublic Filter getFilter(String s) {\r\n\t\t\tCompareType compareType = Filter.CompareType.valueOf(s);\r\n\t\t\tif (CompareType.isColumnCompare(compareType)) {\r\n\t\t\t\treturn new Filter(LogicType.AND, column, compareType, column.name());\r\n\t\t\t} else if (compareType == CompareType.LAST_DAYS || compareType == CompareType.NEXT_DAYS) {\r\n\t\t\t\treturn new Filter(LogicType.AND, column, compareType, between(TimeUnit.DAYS));\r\n\t\t\t} else if (compareType == CompareType.LAST_HOURS || compareType == CompareType.NEXT_HOURS) {\r\n\t\t\t\treturn new Filter(LogicType.AND, column, compareType, between(TimeUnit.HOURS));\r\n\t\t\t} else {\r\n\t\t\t\treturn new Filter(LogicType.AND, column, compareType, text);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate String between(TimeUnit unit) {\r\n\t\t\tDate date = Formatter.columnStringToDate(text);\r\n\r\n\t\t\tlong diff = Math.abs(date.getTime() - Settings.getNow().getTime());\r\n\t\t\tlong hours = unit.convert(diff, TimeUnit.MILLISECONDS) + 1;\r\n\r\n\t\t\treturn String.valueOf(hours);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int hashCode() {\r\n\t\t\tint hash = 7;\r\n\t\t\thash = 79 * hash + Objects.hashCode(this.column);\r\n\t\t\thash = 79 * hash + Objects.hashCode(this.text);\r\n\t\t\treturn hash;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean equals(Object obj) {\r\n\t\t\tif (this == obj) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif (obj == null) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (getClass() != obj.getClass()) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tfinal SimpleFilter other = (SimpleFilter) obj;\r\n\t\t\tif (!Objects.equals(this.text, other.text)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn Objects.equals(this.column, other.column);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/filter/FilterPanel.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.filter;\r\n\r\nimport com.github.lgooddatepicker.optionalusertools.DateChangeListener;\r\nimport com.github.lgooddatepicker.zinternaltools.DateChangeEvent;\r\nimport java.awt.Color;\r\nimport java.awt.Component;\r\nimport java.awt.Dimension;\r\nimport java.awt.FontMetrics;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.awt.event.KeyEvent;\r\nimport java.awt.event.KeyListener;\r\nimport java.time.Instant;\r\nimport java.time.LocalDate;\r\nimport java.time.ZoneId;\r\nimport java.util.ArrayList;\r\nimport java.util.Collections;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.concurrent.Executor;\r\nimport java.util.concurrent.Executors;\r\nimport java.util.regex.Pattern;\r\nimport java.util.regex.PatternSyntaxException;\r\nimport javax.swing.BorderFactory;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JCheckBox;\r\nimport javax.swing.JComboBox;\r\nimport javax.swing.JFormattedTextField;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JPanel;\r\nimport javax.swing.JSpinner;\r\nimport javax.swing.JTextField;\r\nimport javax.swing.SpinnerListModel;\r\nimport javax.swing.SpinnerNumberModel;\r\nimport javax.swing.Timer;\r\nimport javax.swing.UIManager;\r\nimport javax.swing.border.Border;\r\nimport javax.swing.border.CompoundBorder;\r\nimport javax.swing.event.ChangeEvent;\r\nimport javax.swing.event.ChangeListener;\r\nimport javax.swing.event.DocumentEvent;\r\nimport javax.swing.event.DocumentListener;\r\nimport javax.swing.plaf.synth.SynthFormattedTextFieldUI;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\nimport net.nikr.eve.jeveasset.gui.shared.TextManager;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JDateChooser;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.ListComboBoxModel;\r\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter.AllColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter.CompareType;\r\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter.LogicType;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\n\r\n\r\nclass FilterPanel<E> implements Comparable<FilterPanel<E>> {\r\n\r\n\tprivate enum FilterPanelAction {\r\n\t\tFILTER, FILTER_TIMER, GROUP_TIMER, REMOVE, CLONE\r\n\t}\r\n\r\n\tprivate final JPanel jPanel;\r\n\tprivate final GroupLayout layout;\r\n\r\n\tprivate final JCheckBox jEnabled;\r\n\tprivate final JComboBox<LogicType> jLogic;\r\n\tprivate final JSpinner jGroup;\r\n\tprivate final JComboBox<EnumTableColumn<E>> jColumn;\r\n\tprivate final JComboBox<CompareType> jCompare;\r\n\tprivate final JTextField jText;\r\n\tprivate final JComboBox<EnumTableColumn<E>> jCompareColumn;\r\n\tprivate final JDateChooser jDate;\r\n\r\n\tprivate final JLabel jSpacing;\r\n\tprivate final JButton jRemove;\r\n\tprivate final JButton jClone;\r\n\r\n\tprivate final Timer timer;\r\n\tprivate final Timer groupTimer;\r\n\r\n\tprivate final FilterGui<E> gui;\r\n\tprivate final FilterControl<E> filterControl;\r\n\tprivate final SimpleTableFormat<E> tableFormat;\r\n\tprivate final List<EnumTableColumn<E>> allColumns;\r\n\tprivate final List<EnumTableColumn<E>> numericColumns;\r\n\tprivate final List<EnumTableColumn<E>> dateColumns;\r\n\tprivate final SpinnerNumberModel groupModel;\r\n\r\n\tprivate final Executor fades = Executors.newSingleThreadExecutor();\r\n\tprivate boolean loading = false;\r\n\tprivate boolean moving = false;\r\n\r\n\tFilterPanel(final FilterGui<E> gui, final FilterControl<E> filterControl, SimpleTableFormat<E> tableFormat) {\r\n\t\tthis.gui = gui;\r\n\t\tthis.filterControl = filterControl;\r\n\t\tthis.tableFormat = tableFormat;\r\n\r\n\t\tListenerClass listener = new ListenerClass();\r\n\r\n\t\tgroupTimer = new Timer(500, listener);\r\n\t\tgroupTimer.setActionCommand(FilterPanelAction.GROUP_TIMER.name());\r\n\r\n\t\tgroupModel = new SpinnerNumberModel(0, 0, 0, 1);\r\n\t\tgroupModel.addChangeListener(listener);\r\n\t\tjGroup = new JSpinner(groupModel);\r\n\t\tjGroup.setEnabled(false);\r\n\r\n\t\tallColumns = new ArrayList<>();\r\n\t\tallColumns.add(new AllColumn<>());\r\n\t\tallColumns.addAll(tableFormat.getAllColumns());\r\n\r\n\t\tnumericColumns = new ArrayList<>();\r\n\t\tfor (EnumTableColumn<E> object : tableFormat.getAllColumns()) {\r\n\t\t\tif (filterControl.isNumeric(object)) {\r\n\t\t\t\tnumericColumns.add(object);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdateColumns = new ArrayList<>();\r\n\t\tfor (EnumTableColumn<E> object : tableFormat.getAllColumns()) {\r\n\t\t\tif (filterControl.isDate(object)) {\r\n\t\t\t\tdateColumns.add(object);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tjEnabled = new JCheckBox();\r\n\t\tjEnabled.setSelected(true);\r\n\t\tjEnabled.addActionListener(listener);\r\n\t\tjEnabled.setActionCommand(FilterPanelAction.FILTER.name());\r\n\r\n\t\tjLogic = new JComboBox<>(LogicType.values());\r\n\t\tjLogic.setPrototypeDisplayValue(LogicType.AND);\r\n\t\tjLogic.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tboolean oldValue = loading;\r\n\t\t\t\tloading = true;\r\n\t\t\t\tDimension preferredSize = ((JSpinner.DefaultEditor) jGroup.getEditor()).getTextField().getPreferredSize();\r\n\t\t\t\tgroupModel.removeChangeListener(listener);\r\n\t\t\t\tif (isAnd()) {\r\n\t\t\t\t\tgroupModel.setMinimum(0);\r\n\t\t\t\t\tgroupModel.setValue(0);\r\n\t\t\t\t\tjGroup.setEditor(new JSpinner.DefaultEditor(jGroup));\r\n\t\t\t\t\tjGroup.setModel(new SpinnerListModel(Collections.singletonList(\"\")));\r\n\t\t\t\t\tjGroup.setEditor(new JSpinner.DefaultEditor(jGroup));\r\n\t\t\t\t\tjGroup.setEnabled(false);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tgroupModel.addChangeListener(listener);\r\n\t\t\t\t\tjGroup.setModel(groupModel);\r\n\t\t\t\t\tjGroup.setEditor(new JSpinner.NumberEditor(jGroup));\r\n\t\t\t\t\tgroupModel.setMinimum(1);\r\n\t\t\t\t\tif (groupModel.getNumber().intValue() == 0) {\r\n\t\t\t\t\t\tgroupModel.setValue(1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tjGroup.setEnabled(true);\r\n\t\t\t\t}\r\n\t\t\t\t((JSpinner.DefaultEditor) jGroup.getEditor()).getTextField().setHorizontalAlignment(JTextField.CENTER);\r\n\t\t\t\t((JSpinner.DefaultEditor) jGroup.getEditor()).getTextField().setPreferredSize(preferredSize);\r\n\t\t\t\t((JSpinner.DefaultEditor) jGroup.getEditor()).getTextField().setMaximumSize(preferredSize);\r\n\t\t\t\t((JSpinner.DefaultEditor) jGroup.getEditor()).getTextField().setMinimumSize(preferredSize);\r\n\t\t\t\t((JSpinner.DefaultEditor) jGroup.getEditor()).getTextField().setEditable(false);\r\n\t\t\t\t((JSpinner.DefaultEditor) jGroup.getEditor()).getTextField().setFocusable(false);\r\n\t\t\t\tloading = oldValue;\r\n\t\t\t\tif (!loading) {\r\n\t\t\t\t\tgroupChanged();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tloading = true;\r\n\t\tjLogic.setSelectedIndex(0);\r\n\t\tloading = false;\r\n\t\tupdateGroupColor();\r\n\r\n\t\tJComboBox<String> jComboBox = new JComboBox<>();\r\n\t\tFontMetrics fontMetrics = jComboBox.getFontMetrics(jComboBox.getFont());\r\n\t\tEnumTableColumn<E> longestColumn = null;\r\n\t\tfor (EnumTableColumn<E> column : allColumns) {\r\n\t\t\tif (longestColumn == null || fontMetrics.stringWidth(longestColumn.getColumnName()) < fontMetrics.stringWidth(column.getColumnName())) {\r\n\t\t\t\tlongestColumn = column;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tjColumn = new JComboBox<>(new ListComboBoxModel<>(allColumns));\r\n\t\tjColumn.setPrototypeDisplayValue(longestColumn);\r\n\t\tjColumn.addActionListener(listener);\r\n\t\tjColumn.setActionCommand(FilterPanelAction.FILTER.name());\r\n\r\n\t\tjCompare = new JComboBox<>();\r\n\t\tjCompare.setPrototypeDisplayValue(CompareType.CONTAINS_NOT_COLUMN);\r\n\t\tjCompare.addActionListener(listener);\r\n\t\tjCompare.setActionCommand(FilterPanelAction.FILTER.name());\r\n\r\n\t\tjText = new JTextField();\r\n\t\tjText.getDocument().addDocumentListener(listener);\r\n\t\tjText.addKeyListener(listener);\r\n\t\tTextManager.installTextComponent(jText);\r\n\r\n\t\tjCompareColumn = new JComboBox<>();\r\n\t\tjCompareColumn.setPrototypeDisplayValue(longestColumn);\r\n\t\tjCompareColumn.addActionListener(listener);\r\n\t\tjCompareColumn.setActionCommand(FilterPanelAction.FILTER.name());\r\n\r\n\t\tjDate = new JDateChooser(false);\r\n\t\tjDate.addDateChangeListener(listener);\r\n\r\n\t\tjSpacing = new JLabel();\r\n\r\n\t\tjClone = new JButton();\r\n\t\tjClone.setIcon(Images.EDIT_COPY.getIcon());\r\n\t\tjClone.addActionListener(listener);\r\n\t\tjClone.setActionCommand(FilterPanelAction.CLONE.name());\r\n\r\n\t\tjRemove = new JButton();\r\n\t\tjRemove.setIcon(Images.EDIT_DELETE.getIcon());\r\n\t\tjRemove.addActionListener(listener);\r\n\t\tjRemove.setActionCommand(FilterPanelAction.REMOVE.name());\r\n\r\n\t\ttimer = new Timer(500, listener);\r\n\t\ttimer.setActionCommand(FilterPanelAction.FILTER_TIMER.name());\r\n\r\n\t\tjPanel = new JPanel();\r\n\r\n\t\tlayout = new GroupLayout(jPanel);\r\n\t\tjPanel.setLayout(layout);\r\n\t\tlayout.setAutoCreateGaps(true);\r\n\t\tlayout.setAutoCreateContainerGaps(false);\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(jEnabled, Program.getIconButtonsWidth(), Program.getIconButtonsWidth(), Program.getIconButtonsWidth())\r\n\t\t\t\t.addGap(0)\r\n\t\t\t\t.addComponent(jLogic, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\r\n\t\t\t\t.addComponent(jGroup, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\r\n\t\t\t\t.addComponent(jColumn, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\r\n\t\t\t\t.addComponent(jCompare, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\r\n\t\t\t\t.addComponent(jText, 50, 50, Integer.MAX_VALUE)\r\n\t\t\t\t.addComponent(jCompareColumn, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\r\n\t\t\t\t.addComponent(jDate, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\r\n\t\t\t\t.addComponent(jSpacing, 0, 0, Integer.MAX_VALUE)\r\n\t\t\t\t.addComponent(jClone, Program.getIconButtonsWidth(), Program.getIconButtonsWidth(), Program.getIconButtonsWidth())\r\n\t\t\t\t.addComponent(jRemove, Program.getIconButtonsWidth(), Program.getIconButtonsWidth(), Program.getIconButtonsWidth())\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createParallelGroup()\r\n\t\t\t\t.addComponent(jEnabled, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jLogic, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jGroup, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jColumn, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jCompare, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jText, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jCompareColumn, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jDate, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jSpacing, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jClone, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jRemove, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t);\r\n\t\tupdateNumeric(false);\r\n\t}\r\n\r\n\tprotected void updateColumns() {\r\n\t\tEnumTableColumn<E> selectedItem = jColumn.getItemAt(jColumn.getSelectedIndex());\r\n\t\tallColumns.clear();\r\n\t\tallColumns.add(new AllColumn<>());\r\n\t\tallColumns.addAll(tableFormat.getAllColumns());\r\n\t\tnumericColumns.clear();\r\n\t\tfor (EnumTableColumn<E> object : tableFormat.getAllColumns()) {\r\n\t\t\tif (filterControl.isNumeric(object)) {\r\n\t\t\t\tnumericColumns.add(object);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdateColumns.clear();\r\n\t\tfor (EnumTableColumn<E> object : tableFormat.getAllColumns()) {\r\n\t\t\tif (filterControl.isDate(object)) {\r\n\t\t\t\tdateColumns.add(object);\r\n\t\t\t}\r\n\t\t}\r\n\t\tjColumn.setActionCommand(\"comboBoxChanged\");\r\n\t\tjColumn.setModel(new ListComboBoxModel<>(allColumns));\r\n\t\tif (allColumns.contains(selectedItem)) {\r\n\t\t\tjColumn.setSelectedItem(selectedItem);\r\n\t\t\tjColumn.setActionCommand(FilterPanelAction.FILTER.name()); //After: Do not refilter\r\n\t\t} else if (!allColumns.isEmpty()) {\r\n\t\t\tjColumn.setActionCommand(FilterPanelAction.FILTER.name()); //Before: refilter\r\n\t\t\tjColumn.setSelectedIndex(0);\r\n\t\t}\r\n\t}\r\n\r\n\tboolean isAnd() {\r\n\t\treturn ((LogicType) jLogic.getSelectedItem()) == LogicType.AND;\r\n\t}\r\n\r\n\tboolean isMoving() {\r\n\t\treturn moving;\r\n\t}\r\n\r\n\tInteger getGroup() {\r\n\t\treturn groupModel.getNumber().intValue();\r\n\t}\r\n\r\n\tJPanel getPanel() {\r\n\t\treturn jPanel;\r\n\t}\r\n\r\n\tFilterMatcher<E> getMatcher() {\r\n\t\tint group = getGroup();\r\n\t\tboolean enabled = jEnabled.isSelected();\r\n\t\tLogicType logic = (LogicType) jLogic.getSelectedItem();\r\n\t\tEnumTableColumn<?> column = (EnumTableColumn<?>) jColumn.getSelectedItem();\r\n\t\tCompareType compare = (CompareType) jCompare.getSelectedItem();\r\n\t\tString text;\r\n\t\tif (isColumnCompare()) {\r\n\t\t\tEnumTableColumn<?> compareColumn = (EnumTableColumn<?>) jCompareColumn.getSelectedItem();\r\n\t\t\ttext = compareColumn.name();\r\n\t\t} else if (isDateCompare()) {\r\n\t\t\ttext = getDataString();\r\n\t\t} else {\r\n\t\t\ttext = jText.getText();\r\n\t\t}\r\n\t\treturn new FilterMatcher<>(tableFormat, filterControl, group, logic, column, compare, text, enabled);\r\n\t}\r\n\r\n\tFilter getFilter() {\r\n\t\tint group = getGroup();\r\n\t\tboolean enabled = jEnabled.isSelected();\r\n\t\tLogicType logic = (LogicType) jLogic.getSelectedItem();\r\n\t\tEnumTableColumn<?> column = (EnumTableColumn<?>) jColumn.getSelectedItem();\r\n\t\tCompareType compare = (CompareType) jCompare.getSelectedItem();\r\n\t\tString text;\r\n\t\tif (isColumnCompare()) {\r\n\t\t\tEnumTableColumn<?> compareColumn = (EnumTableColumn<?>) jCompareColumn.getSelectedItem();\r\n\t\t\ttext = compareColumn.name();\r\n\t\t} else if (isDateCompare()) {\r\n\t\t\ttext = getDataString();\r\n\t\t} else {\r\n\t\t\ttext = jText.getText();\r\n\t\t}\r\n\t\treturn new Filter(group, logic, column, compare, text, enabled);\r\n\t}\r\n\r\n\tvoid setFilter(final Filter filter) {\r\n\t\tboolean oldValue = loading;\r\n\t\tloading = true;\r\n\t\tjEnabled.setSelected(filter.isEnabled());\r\n\t\tjLogic.setSelectedItem(filter.getLogic());\r\n\t\tgroupModel.setValue(filter.getGroup());\r\n\t\tupdateGroupColor();\r\n\t\tjColumn.setSelectedItem(filter.getColumn());\r\n\t\tjCompare.setSelectedItem(filter.getCompareType());\r\n\t\tif (isColumnCompare()) {\r\n\t\t\ttry {\r\n\t\t\t\tEnumTableColumn<E> enumColumn = tableFormat.valueOf(filter.getText());\r\n\t\t\t\tif (enumColumn != null) {\r\n\t\t\t\t\tjCompareColumn.setSelectedItem(enumColumn);\r\n\t\t\t\t}\r\n\t\t\t} catch (IllegalArgumentException ex) {\r\n\t\t\t\t//ignore missing columns...\r\n\t\t\t}\r\n\t\t} else if (isDateCompare()) {\r\n\t\t\tsetDateString(Formatter.columnStringToDate(filter.getText()));\r\n\t\t} else {\r\n\t\t\tjText.setText(filter.getText());\r\n\t\t\ttimer.stop();\r\n\t\t}\r\n\t\tloading = oldValue;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(FilterPanel<E> o) {\r\n\t\tif (this.isAnd() && o.isAnd()) {\r\n\t\t\treturn 0;\r\n\t\t} else if (this.isAnd()) {\r\n\t\t\treturn 1;\r\n\t\t} else if (o.isAnd()) {\r\n\t\t\treturn -1;\r\n\t\t} else {\r\n\t\t\treturn this.getGroup().compareTo(o.getGroup());\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void setDateString(Date date) {\r\n\t\tjDate.setDate(date);\r\n\t}\r\n\r\n\tprivate String getDataString() {\r\n\t\tLocalDate date = jDate.getDate();\r\n\t\tInstant instant = date.atStartOfDay().atZone(ZoneId.of(\"GMT\")).toInstant(); //End of day - GMT\r\n\t\treturn Formatter.columnDate(Date.from(instant));\r\n\t}\r\n\r\n\tprivate void refilter() {\r\n\t\tif (!loading) {\r\n\t\t\tgui.refilter();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate boolean isInvalidRegex() {\r\n\t\tif (!isRegexCompare()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tString text = jText.getText();\r\n\t\ttry {\r\n\t\t\tPattern.compile(text, Pattern.CASE_INSENSITIVE);\r\n\t\t\treturn false;\r\n\t\t} catch (PatternSyntaxException ex) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate boolean isRegexCompare() {\r\n\t\tCompareType compareType = (CompareType) jCompare.getSelectedItem();\r\n\t\treturn CompareType.isRegexCompare(compareType);\r\n\t}\r\n\r\n\tprivate boolean isColumnCompare() {\r\n\t\tCompareType compareType = (CompareType) jCompare.getSelectedItem();\r\n\t\treturn CompareType.isColumnCompare(compareType);\r\n\t}\r\n\r\n\tprivate boolean isNumericCompare() {\r\n\t\tCompareType compareType = (CompareType) jCompare.getSelectedItem();\r\n\t\treturn CompareType.isNumericCompare(compareType);\r\n\t}\r\n\r\n\tprivate boolean isDateCompare() {\r\n\t\tCompareType compareType = (CompareType) jCompare.getSelectedItem();\r\n\t\treturn CompareType.isDateCompare(compareType);\r\n\t}\r\n\r\n\tprivate void updateNumeric(final boolean saveIndex) {\r\n\t\tObject object = jCompare.getSelectedItem();\r\n\t\tCompareType[] compareTypes;\r\n\t\tif (filterControl.isNumeric((EnumTableColumn<?>) jColumn.getSelectedItem())) {\r\n\t\t\tcompareTypes = CompareType.valuesNumeric();\r\n\t\t} else if (filterControl.isDate((EnumTableColumn<?>) jColumn.getSelectedItem())) {\r\n\t\t\tcompareTypes = CompareType.valuesDate();\r\n\t\t} else if (filterControl.isAll((EnumTableColumn<?>) jColumn.getSelectedItem())) {\r\n\t\t\tcompareTypes = CompareType.valuesAll();\r\n\t\t} else {\r\n\t\t\tcompareTypes = CompareType.valuesString();\r\n\t\t}\r\n\t\tjCompare.setModel(new ListComboBoxModel<>(compareTypes));\r\n\t\tfor (CompareType compareType : compareTypes) {\r\n\t\t\tif (compareType.equals(object) && saveIndex) {\r\n\t\t\t\tjCompare.setSelectedItem(compareType);\r\n\t\t\t}\r\n\t\t}\r\n\t\tupdateCompare(saveIndex);\r\n\t}\r\n\r\n\tprivate void updateCompare(final boolean saveIndex) {\r\n\t\tif (isColumnCompare()) { //Column\r\n\t\t\tjText.setVisible(false);\r\n\t\t\tjCompareColumn.setVisible(true);\r\n\t\t\tjDate.setVisible(false);\r\n\t\t\tjSpacing.setVisible(true);\r\n\t\t} else if (isDateCompare()) { //Date\r\n\t\t\tjText.setVisible(false);\r\n\t\t\tjCompareColumn.setVisible(false);\r\n\t\t\tjDate.setVisible(true);\r\n\t\t\tjSpacing.setVisible(true);\r\n\t\t} else { //String\r\n\t\t\tjText.setVisible(true);\r\n\t\t\tjCompareColumn.setVisible(false);\r\n\t\t\tjDate.setVisible(false);\r\n\t\t\tjSpacing.setVisible(false);\r\n\t\t}\r\n\t\tObject object = jCompareColumn.getSelectedItem();\r\n\t\tList<EnumTableColumn<E>> compareColumns;\r\n\t\tif (isNumericCompare()) {\r\n\t\t\tcompareColumns = new ArrayList<>(numericColumns);\r\n\t\t} else if (isDateCompare()) {\r\n\t\t\tcompareColumns = new ArrayList<>(dateColumns);\r\n\t\t} else {\r\n\t\t\tcompareColumns = new ArrayList<>(tableFormat.getAllColumns());\r\n\t\t}\r\n\t\tjCompareColumn.setModel(new ListComboBoxModel<>(compareColumns));\r\n\t\tfor (Object column : compareColumns) {\r\n\t\t\tif (column.equals(object) && saveIndex) {\r\n\t\t\t\tjCompareColumn.setSelectedItem(column);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void processFilterAction(final ActionEvent e) {\r\n\t\t//Get the initial loading state so we can reset it at the end.\r\n\t\t//We need to do this in the even that we were loading true when we entered we do not want to blindly\r\n\t\t//set false after one pass.\r\n\t\t//This should mean that no events triggered hear would cause additional refreshes.\r\n\t\tboolean oldValue = loading;\r\n\t\tloading = true;\r\n\t\tif (jColumn.equals(e.getSource())) {\r\n\t\t\tupdateNumeric(true);\r\n\t\t}\r\n\t\tif (jCompare.equals(e.getSource())) {\r\n\t\t\tupdateCompare(true);\r\n\t\t}\r\n\t\tupdateEnabledColor();\r\n\t\ttimer.stop();\r\n\t\tloading = oldValue;\r\n\t\trefilter();\r\n\t}\r\n\r\n\tvoid updateGroupSize(int size) {\r\n\t\tboolean oldValue = loading;\r\n\t\tloading = true;\r\n\t\tif (size > 9) {\r\n\t\t\tsize = 9;\r\n\t\t}\r\n\t\tgroupModel.setMaximum(size);\r\n\t\tif (groupModel.getNumber().intValue() > size) {\r\n\t\t\tgroupModel.setValue(size);\r\n\t\t}\r\n\t\tloading = oldValue;\r\n\t}\r\n\r\n\tprotected void repaint() {\r\n\t\tupdateEnabledColor();\r\n\t\tupdateGroupColor();\r\n\t}\r\n\r\n\tprivate void updateEnabledColor() {\r\n\t\tif (jEnabled.isSelected()) {\r\n\t\t\tif (isInvalidRegex()) {\r\n\t\t\t\tColorSettings.config(jText, ColorEntry.GLOBAL_ENTRY_WARNING);\r\n\t\t\t} else {\r\n\t\t\t\tColorSettings.configReset(jText);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tColorSettings.config(jText, ColorEntry.GLOBAL_ENTRY_INVALID);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void updateGroupColor() {\r\n\t\tColor color = getGroupColor();\r\n\t\tBorder border = jGroup.getBorder();\r\n\t\tJFormattedTextField jTextField = ((JSpinner.DefaultEditor) jGroup.getEditor()).getTextField();\r\n\t\tif (\"Nimbus\".equals(UIManager.getLookAndFeel().getName())) {\r\n\t\t\tif (color == Color.GRAY) {\r\n\t\t\t\tjTextField.setUI(null);\r\n\t\t\t\tjTextField.updateUI();\r\n\t\t\t} else {\r\n\t\t\t\tjTextField.setUI(new SynthFormattedTextFieldUI() {\r\n\t\t\t\t@Override\r\n\t\t\t\tprotected void paint(javax.swing.plaf.synth.SynthContext context, java.awt.Graphics g) {\r\n\t\t\t\t\tg.setColor(color);\r\n\t\t\t\t\tg.fillRect(3, 3, getComponent().getWidth()-3, getComponent().getHeight()-6);\r\n\t\t\t\t\tsuper.paint(context, g);\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (color == Color.GRAY) {\r\n\t\t\t\tjTextField.setOpaque(false);\r\n\t\t\t} else {\r\n\t\t\t\tjTextField.setBackground(color);\r\n\t\t\t\tjTextField.setOpaque(true);\r\n\t\t\t}\r\n\t\t\tif (border instanceof CompoundBorder) {\r\n\t\t\t\tCompoundBorder compoundBorder = (CompoundBorder) border;\r\n\t\t\t\tif (color == Color.GRAY) {\r\n\t\t\t\t\tjGroup.setBorder(BorderFactory.createCompoundBorder(compoundBorder.getOutsideBorder(), BorderFactory.createLineBorder(jGroup.getBackground(), 2)));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tjGroup.setBorder(BorderFactory.createCompoundBorder(compoundBorder.getOutsideBorder(), BorderFactory.createLineBorder(color, 2)));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Color getGroupColor() {\r\n\t\tswitch (getGroup()) {\r\n\t\t\tcase 0: return Color.GRAY;\r\n\t\t\tcase 1: return ColorSettings.background(ColorEntry.FILTER_OR_GROUP_1);\r\n\t\t\tcase 2: return ColorSettings.background(ColorEntry.FILTER_OR_GROUP_2);\r\n\t\t\tcase 3: return ColorSettings.background(ColorEntry.FILTER_OR_GROUP_3);\r\n\t\t\tcase 4: return ColorSettings.background(ColorEntry.FILTER_OR_GROUP_4);\r\n\t\t\tcase 5: return ColorSettings.background(ColorEntry.FILTER_OR_GROUP_5);\r\n\t\t\tcase 6: return ColorSettings.background(ColorEntry.FILTER_OR_GROUP_6);\r\n\t\t\tcase 7: return ColorSettings.background(ColorEntry.FILTER_OR_GROUP_7);\r\n\t\t\tdefault: return Color.GRAY;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void groupChanged() {\r\n\t\trefilter();\r\n\t\tif (!loading) {\r\n\t\t\tif (gui.fade(FilterPanel.this)) {\r\n\t\t\t\tfades.execute(new FadeThread());\r\n\t\t\t} else {\r\n\t\t\t\tupdateGroupColor();\r\n\t\t\t\tgui.updateGroupSize();\r\n\t\t\t\tgui.update();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener, KeyListener, DocumentListener, DateChangeListener, ChangeListener {\r\n\r\n\t\t@Override\r\n\t\tpublic void insertUpdate(final DocumentEvent e) {\r\n\t\t\ttimer.stop();\r\n\t\t\ttimer.start();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void removeUpdate(final DocumentEvent e) {\r\n\t\t\ttimer.stop();\r\n\t\t\ttimer.start();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void changedUpdate(final DocumentEvent e) {\r\n\t\t\ttimer.stop();\r\n\t\t\ttimer.start();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void keyTyped(final KeyEvent e) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void keyPressed(final KeyEvent e) {\r\n\t\t\tif (e.getKeyCode() == KeyEvent.VK_ENTER) {\r\n\t\t\t\trefilter();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void keyReleased(final KeyEvent e) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\tif (FilterPanelAction.REMOVE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tgui.remove(FilterPanel.this);\r\n\t\t\t\tgui.addEmpty();\r\n\t\t\t\trefilter();\r\n\t\t\t} else if (FilterPanelAction.CLONE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tgui.clone(FilterPanel.this);\r\n\t\t\t\trefilter();\r\n\t\t\t\tjText.requestFocusInWindow();\r\n\t\t\t\tjCompareColumn.requestFocusInWindow();\r\n\t\t\t\tjDate.getComponentToggleCalendarButton().requestFocusInWindow();\r\n\t\t\t} else if (FilterPanelAction.FILTER.name().equals(e.getActionCommand())) {\r\n\t\t\t\tprocessFilterAction(e);\r\n\t\t\t} else if (FilterPanelAction.FILTER_TIMER.name().equals(e.getActionCommand())) {\r\n\t\t\t\tif (!Settings.get().isFilterOnEnter()) {\r\n\t\t\t\t\tprocessFilterAction(e);\r\n\t\t\t\t}\r\n\t\t\t} else if (FilterPanelAction.GROUP_TIMER.name().equals(e.getActionCommand())) {\r\n\t\t\t\tgroupTimer.stop();\r\n\t\t\t\tgroupChanged();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void dateChanged(DateChangeEvent e) {\r\n\t\t\trefilter();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void stateChanged(ChangeEvent e) {\r\n\t\t\tif (!loading) {\r\n\t\t\t\tgroupTimer.stop();\r\n\t\t\t\tgroupTimer.start();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class FadeThread implements Runnable, ActionListener {\r\n\r\n\t\tprivate final List<FadeComponent> components = new ArrayList<>();\r\n\t\tprivate final Timer moveTimer = new Timer(50, this);\r\n\t\tprivate int from;\r\n\t\tprivate int to;\r\n\t\tprivate int index;\r\n\r\n\t\tpublic FadeThread() {\r\n\t\t\tcomponents.add(new FadeComponent(jEnabled));\r\n\t\t\tcomponents.add(new FadeComponent(jPanel));\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void run() {\r\n\t\t\tif (!gui.fade(FilterPanel.this)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tmoving = true;\r\n\t\t\tFade fadeIn = new Fade(components, 100, Color.GRAY);\r\n\t\t\tfadeIn.start(true);\r\n\r\n\t\t\tfrom = gui.getFromIndex(FilterPanel.this);\r\n\t\t\tto = gui.getToIndex(FilterPanel.this);\r\n\t\t\tindex = from;\r\n\t\t\tmoveTimer.start();\r\n\t\t\tsynchronized (this) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\twait();\r\n\t\t\t\t} catch (InterruptedException ex) {\r\n\t\t\t\t\t//No problem\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tFade fadeOut = new Fade(components, 750);\r\n\t\t\tfadeOut.start(true);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\tif (from < to) {\r\n\t\t\t\tindex++;\r\n\t\t\t} else if (from > to) {\r\n\t\t\t\tindex--;\r\n\t\t\t} else {\r\n\t\t\t\t//Should never happen\r\n\t\t\t}\r\n\t\t\tgui.move(FilterPanel.this, index);\r\n\t\t\tif (index == to) {\r\n\t\t\t\tmoveTimer.stop();\r\n\t\t\t\tupdateGroupColor();\r\n\t\t\t\tmoving = false;\r\n\t\t\t\tgui.update();\r\n\t\t\t\tsynchronized (this) {\r\n\t\t\t\t\tnotifyAll();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class Fade implements ActionListener {\r\n\r\n\t\tprivate static final float MS_PER_FRAME = 20; //(100/3);\r\n\r\n\t\tprivate final int frames;\r\n\t\tprivate final Map<Component, List<Color>> map = new HashMap<>();\r\n\t\tprivate final Timer timer;\r\n\t\tprivate int frameCount = 0;\r\n\r\n\t\tprivate Fade(List<FadeComponent> fadeComponents, int duration) {\r\n\t\t\tthis(fadeComponents, duration, null);\r\n\t\t}\r\n\r\n\t\tprivate Fade(List<FadeComponent> fadeComponents, int duration, Color to) {\r\n\t\t\tthis.frames = (int) (duration / MS_PER_FRAME);\r\n\r\n\t\t\tfor (FadeComponent fadeComponent : fadeComponents) {\r\n\t\t\t\tColor from = fadeComponent.getComponent().getBackground();\r\n\t\t\t\tList<Color> colors = new ArrayList<>();\r\n\t\t\t\tColor toColor = to == null ? fadeComponent.getColor() : to;\r\n\t\t\t\tfloat redDiff = (from.getRed() - toColor.getRed()) / frames;\r\n\t\t\t\tfloat blueDiff = (from.getBlue() - toColor.getBlue()) / frames;\r\n\t\t\t\tfloat greenDiff = (from.getGreen() - toColor.getGreen()) / frames;\r\n\t\t\t\tfor (int i = 1; i <= frames; i++) {\r\n\t\t\t\t\tcolors.add(new Color((int) (from.getRed() - (i * redDiff)),\r\n\t\t\t\t\t\t\t (int) (from.getGreen() - (i * greenDiff)),\r\n\t\t\t\t\t\t\t (int) (from.getBlue() - (i * blueDiff))));\r\n\t\t\t\t}\r\n\t\t\t\tcolors.add(toColor);\r\n\t\t\t\tmap.put(fadeComponent.getComponent(), colors);\r\n\t\t\t}\r\n\t\t\ttimer = new Timer((int) MS_PER_FRAME, this);\r\n\t\t}\r\n\r\n\t\tpublic void start(boolean wait) {\r\n\t\t\ttimer.start();\r\n\t\t\tif (wait) {\r\n\t\t\t\tsynchronized (this) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\twait();\r\n\t\t\t\t\t} catch (InterruptedException ex) {\r\n\t\t\t\t\t\t//Done waiting\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tpublic void stop() {\r\n\t\t\ttimer.stop();\r\n\t\t\tfor (Map.Entry<Component, List<Color>> entry : map.entrySet()) {\r\n\t\t\t\tentry.getKey().setBackground(entry.getValue().get(entry.getValue().size() - 1));\r\n\t\t\t}\r\n\t\t\tsynchronized (this) {\r\n\t\t\t\tnotifyAll();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\tframeCount++;\r\n\t\t\tif (frameCount >= frames) {\r\n\t\t\t\ttimer.stop();\r\n\t\t\t\tfor (Map.Entry<Component, List<Color>> entry : map.entrySet()) {\r\n\t\t\t\t\tentry.getKey().setBackground(entry.getValue().get(entry.getValue().size() - 1));\r\n\t\t\t\t}\r\n\t\t\t\tsynchronized (this) {\r\n\t\t\t\t\tnotifyAll();\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (Map.Entry<Component, List<Color>> entry : map.entrySet()) {\r\n\t\t\t\t\tentry.getKey().setBackground(entry.getValue().get(frameCount));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class FadeComponent {\r\n\r\n\t\tprivate final Component jComponent;\r\n\t\tprivate final Color color;\r\n\r\n\t\tpublic FadeComponent(Component jComponent) {\r\n\t\t\tthis.jComponent = jComponent;\r\n\t\t\tthis.color = jComponent.getBackground();\r\n\t\t}\r\n\r\n\t\tpublic Component getComponent() {\r\n\t\t\treturn jComponent;\r\n\t\t}\r\n\r\n\t\tpublic Color getColor() {\r\n\t\t\treturn color;\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/filter/FilterPanelSeparator.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.filter;\r\n\r\nimport java.awt.Color;\r\nimport java.awt.image.BufferedImage;\r\nimport java.awt.image.BufferedImageOp;\r\nimport java.awt.image.LookupOp;\r\nimport java.awt.image.LookupTable;\r\nimport java.util.Arrays;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.ImageIcon;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JPanel;\r\nimport javax.swing.UIManager;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\n\r\n\r\npublic class FilterPanelSeparator {\r\n\r\n\tprivate final JPanel jPanel;\r\n\tprivate final int group;\r\n\r\n\tpublic FilterPanelSeparator(int group) {\r\n\t\tthis.group = group;\r\n\r\n\t\tjPanel = new JPanel();\r\n\r\n\t\tGroupLayout layout = new GroupLayout(jPanel);\r\n\t\tjPanel.setLayout(layout);\r\n\t\tlayout.setAutoCreateGaps(true);\r\n\t\tlayout.setAutoCreateContainerGaps(false);\r\n\r\n\t\tBufferedImageOp lookup = new LookupOp(new ColorMapper(Color.WHITE, getColor(\"nimbusBlueGrey\", \"Separator.foreground\")), null);\r\n\t\tBufferedImage convertedImage = lookup.filter((BufferedImage)Images.MISC_AND.getImage(), null);\r\n\t\tJLabel jIcon = new JLabel(new ImageIcon(convertedImage));\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addGap(30)\r\n\t\t\t\t.addComponent(jIcon, 12, 12, 12)\r\n\t\t);\r\n\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addGap(1)\r\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER)\r\n\t\t\t\t\t.addComponent(jIcon, 4, 4, 4)\r\n\t\t\t\t)\r\n\t\t\t\t.addGap(1)\r\n\t\t);\r\n\t}\r\n\r\n\tpublic JPanel getPanel() {\r\n\t\treturn jPanel;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 7;\r\n\t\thash = 47 * hash + this.group;\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal FilterPanelSeparator other = (FilterPanelSeparator) obj;\r\n\t\tif (this.group != other.group) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate static Color getColor(String ... values) {\r\n\t\tfor (String s : values) {\r\n\t\t\tColor color = UIManager.getColor(s);\r\n\t\t\tif (color != null) {\r\n\t\t\t\treturn color;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn Color.BLACK;\r\n\t}\r\n\r\n\tprivate static class ColorMapper extends LookupTable {\r\n\r\n\t\tprivate final int[] from;\r\n\t\tprivate final int[] to;\r\n\r\n\t\tpublic ColorMapper(Color from,\r\n\t\t\t\tColor to) {\r\n\t\t\tsuper(0, 4);\r\n\r\n\t\t\tthis.from = new int[]{\r\n\t\t\t\tfrom.getRed(),\r\n\t\t\t\tfrom.getGreen(),\r\n\t\t\t\tfrom.getBlue(),\r\n\t\t\t\tfrom.getAlpha(),};\r\n\t\t\tthis.to = new int[]{\r\n\t\t\t\tto.getRed(),\r\n\t\t\t\tto.getGreen(),\r\n\t\t\t\tto.getBlue(),\r\n\t\t\t\tto.getAlpha(),};\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int[] lookupPixel(int[] src, int[] dest) {\r\n\t\t\tif (dest == null) {\r\n\t\t\t\tdest = new int[src.length];\r\n\t\t\t}\r\n\r\n\t\t\tint[] newColor = (Arrays.equals(src, from) ? to : src);\r\n\t\t\tSystem.arraycopy(newColor, 0, dest, 0, newColor.length);\r\n\r\n\t\t\treturn dest;\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/filter/FilterSave.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.filter;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.matchers.TextMatcherEditor;\nimport ca.odell.glazedlists.swing.AutoCompleteSupport;\nimport java.awt.AWTException;\nimport java.awt.Robot;\nimport java.awt.Window;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.KeyEvent;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\nimport javax.swing.GroupLayout;\nimport javax.swing.JButton;\nimport javax.swing.JComboBox;\nimport javax.swing.JComponent;\nimport javax.swing.JLabel;\nimport javax.swing.JOptionPane;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.gui.shared.StringComparators;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels.StringFilterator;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\n\n\npublic class FilterSave extends JDialogCentered {\n\n\tprivate enum FilterSaveAction {\n\t\tSAVE, CANCEL\n\t}\n\n\tprivate final EventList<String> filters;\n\tprivate final List<String> defaultFilters = new ArrayList<>();\n\tprivate final JComboBox<String> jName;\n\tprivate final JButton jSave;\n\n\tprivate String returnString;\n\n\tpublic FilterSave(final Window window) {\n\t\tsuper(null, GuiShared.get().saveFilter(), window);\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tJLabel jText = new JLabel(GuiShared.get().enterFilterName());\n\n\t\tjName = new JComboBox<>();\n\t\tfilters = EventListManager.create();\n\t\tAutoCompleteSupport<String> nameAutoComplete = AutoCompleteSupport.install(jName, EventModels.createSwingThreadProxyList(filters), new StringFilterator());\n\t\tnameAutoComplete.setFilterMode(TextMatcherEditor.CONTAINS);\n\t\tjSave = new JButton(GuiShared.get().save());\n\t\tjSave.setActionCommand(FilterSaveAction.SAVE.name());\n\t\tjSave.addActionListener(listener);\n\n\t\tJButton jCancel = new JButton(GuiShared.get().cancel());\n\t\tjCancel.setActionCommand(FilterSaveAction.CANCEL.name());\n\t\tjCancel.addActionListener(listener);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t.addComponent(jText)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t.addComponent(jName, 220, 220, 220)\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t.addComponent(jSave, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jText, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jName, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jSave, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t);\n\t}\n\n\tString show(final List<String> filters, final List<String> defaultFilters) {\n\t\treturnString = null;\n\t\tCollections.sort(filters, StringComparators.CASE_INSENSITIVE);\n\t\ttry {\n\t\t\tthis.filters.getReadWriteLock().writeLock().lock();\n\t\t\tthis.filters.clear();\n\t\t\tthis.filters.addAll(filters);\n\t\t} finally {\n\t\t\tthis.filters.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t\tthis.defaultFilters.clear();\n\t\tthis.defaultFilters.addAll(defaultFilters);\n\t\tthis.setVisible(true);\n\t\treturn returnString;\n\t}\n\n\tprivate boolean validate() {\n\t\tString name = (String) jName.getSelectedItem();\n\t\tif (name == null) {\n\t\t\tJOptionPane.showMessageDialog(this.getDialog(), GuiShared.get().noFilterName(), GuiShared.get().saveFilter(), JOptionPane.PLAIN_MESSAGE);\n\t\t\treturn false;\n\t\t}\n\t\tif (name.isEmpty()) {\n\t\t\tJOptionPane.showMessageDialog(this.getDialog(), GuiShared.get().noFilterName(), GuiShared.get().saveFilter(), JOptionPane.PLAIN_MESSAGE);\n\t\t\treturn false;\n\t\t}\n\t\tfor (String filter : defaultFilters) {\n\t\t\tif (filter.toLowerCase().equals(name.toLowerCase())) { //Case insetitive contains\n\t\t\t\tJOptionPane.showMessageDialog(this.getDialog(), GuiShared.get().overwriteDefaultFilter(), GuiShared.get().saveFilter(), JOptionPane.PLAIN_MESSAGE);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\ttry {\n\t\t\tfilters.getReadWriteLock().readLock().lock();\n\t\t\tif (filters.contains(name)) {\n\t\t\t\tint nReturn = JOptionPane.showConfirmDialog(this.getDialog(), GuiShared.get().overwrite(), GuiShared.get().overwriteFilter(), JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE);\n\t\t\t\tif (nReturn == JOptionPane.NO_OPTION) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tfilters.getReadWriteLock().readLock().unlock();\n\t\t}\n\t\treturn true;\n\t}\n\n\t@Override\n\tprotected JComponent getDefaultFocus() {\n\t\treturn jName;\n\t}\n\n\t@Override\n\tprotected JButton getDefaultButton() {\n\t\treturn jSave;\n\t}\n\n\t@Override\n\tprotected void windowShown() { }\n\n\t@Override\n\tprotected void save() {\n\t\tif (validate()) {\n\t\t\treturnString = (String) jName.getSelectedItem();\n\t\t\tsetVisible(false);\n\t\t}\n\t\t//XXX - Workaround for strange bug:\n\t\t// 1. Tricker validation by pressing enter in the jName JComboBox\n\t\t// 2. Doing validate JOptionPane is shown and lose focus (to another program)\n\t\t// 3. JOptionPane is hidden (by mouse click)\n\t\t// 4. jName is not responding (string is locked)\n\t\ttry {\n\t\t\tRobot robot = new Robot();\n\t\t\trobot.keyRelease(KeyEvent.VK_ENTER);\n\t\t} catch (AWTException e) {\n\n\t\t}\n\t}\n\n\t@Override\n\tpublic void setVisible(final boolean b) {\n\t\tif (b) {\n\t\t\tjName.getModel().setSelectedItem(\"\");\n\t\t}\n\t\tsuper.setVisible(b);\n\t}\n\n\tprivate class ListenerClass implements ActionListener {\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (FilterSaveAction.SAVE.name().equals(e.getActionCommand())) {\n\t\t\t\tsave();\n\t\t\t}\n\t\t\tif (FilterSaveAction.CANCEL.name().equals(e.getActionCommand())) {\n\t\t\t\tsetVisible(false);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/filter/JFilterManagerDialog.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.shared.filter;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Map;\nimport javax.swing.JFrame;\nimport javax.swing.JOptionPane;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.shared.components.JManagerDialog;\nimport net.nikr.eve.jeveasset.gui.shared.components.JTextDialog;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\n\npublic class JFilterManagerDialog<E> extends JManagerDialog {\n\n\tprivate final Map<String, List<Filter>> filters;\n\tprivate final Map<String, List<Filter>> defaultFilters;\n\tprivate final List<EnumTableColumn<E>> columns;\n\tprivate final FilterGui<E> gui;\n\tprivate final JTextDialog jTextDialog;\n\tprivate final FilterExport filterExport;\n\n\tJFilterManagerDialog(final JFrame jFrame, final String toolName, final FilterGui<E> gui, List<EnumTableColumn<E>> columns, final Map<String, List<Filter>> filters, final Map<String, List<Filter>> defaultFilters) {\n\t\tsuper(null, jFrame, GuiShared.get().filterManager(), true, false, false, true, true);\n\t\tthis.gui = gui;\n\t\tthis.columns = columns;\n\t\tthis.filters = filters;\n\t\tthis.defaultFilters = defaultFilters;\n\t\tjTextDialog = new JTextDialog(jFrame);\n\t\tfilterExport = new FilterExport(toolName);\n\t}\n\n\t@Override\n\tprotected void load(final String name) {\n\t\tList<Filter> filter = filters.get(name);\n\t\tgui.setFilters(filter);\n\t\tthis.setVisible(false);\n\t}\n\n\t@Override\n\tprotected void edit(String name) {\n\t\t//Edit is not supported\n\t}\n\n\t@Override\n\tprotected void merge(final String name, final List<String> list) {\n\t\t//Get filters to merge\n\t\tSettings.lock(\"Filter (Merge)\"); //Lock for Filter (Merge)\n\t\tList<Filter> filter = new ArrayList<>();\n\t\tfor (String mergeName : list) {\n\t\t\tfor (Filter currentFilter : filters.get(mergeName)) {\n\t\t\t\tif (!filter.contains(currentFilter)) {\n\t\t\t\t\tfilter.add(currentFilter);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfilters.put(name, filter);\n\t\tupdateFilters();\n\t\tSettings.unlock(\"Filter (Merge)\"); //Unlock for Filter (Merge)\n\t\tgui.saveSettings(\"Filter (Merge)\"); //Save Filter (Merge)\n\t}\n\n\t@Override\n\tprotected void copy(String fromName, String toName) {\n\t\t//Copy is not supported\n\t}\n\n\t@Override\n\tprotected void rename(final String name, final String oldName) {\n\t\tList<Filter> filter = filters.get(oldName);\n\t\tSettings.lock(\"Filter (Rename)\"); //Lock for Filter (Rename)\n\t\tfilters.remove(oldName); //Remove renamed filter (with old name)\n\t\tfilters.remove(name); //Remove overwritten filter\n\t\tfilters.put(name, filter); //Add renamed filter (with new name)\n\t\tupdateFilters();\n\t\tSettings.unlock(\"Filter (Rename)\"); //Unlock for Filter (Rename)\n\t\tgui.saveSettings(\"Filter (Rename)\"); //Save Filter (Rename)\n\t}\n\n\t@Override\n\tprotected void delete(final List<String> list) {\n\t\tSettings.lock(\"Filter (Delete)\"); //Lock for Filter (Delete)\n\t\tfor (String filterName : list) {\n\t\t\tfilters.remove(filterName);\n\t\t}\n\t\tupdateFilters();\n\t\tSettings.unlock(\"Filter (Delete)\"); //Unlock for Filter (Delete)\n\t\tgui.saveSettings(\"Filter (Delete)\"); //Save Filter (Delete)\n\t}\n\n\t@Override\n\tprotected void export(List<String> list) {\n\t\tStringBuilder builder = new StringBuilder();\n\t\tfor (String filterName : list) {\n\t\t\tfilterExport.exportFilter(builder, filterName, filters.get(filterName));\n\t\t}\n\t\tjTextDialog.exportText(builder.toString());\n\t}\n\n\t@Override\n\tprotected void importData() {\n\t\timportData(\"\");\n\t}\n\n\tprivate void importData(String oldText) {\n\t\tString importText = jTextDialog.importText(oldText, filterExport.createExample(columns));\n\t\tif (importText == null) {\n\t\t\treturn; //Cancel\n\t\t}\n\t\tMap<String, List<Filter>> importedFilters = filterExport.importFilter(importText);\n\t\tif (importedFilters.isEmpty()) {\n\t\t\tint value = JOptionPane.showConfirmDialog(getDialog(), GuiShared.get().managerImportFailMsg(), GuiShared.get().managerImportFailTitle(), JOptionPane.OK_CANCEL_OPTION);\n\t\t\tif (value == JOptionPane.OK_OPTION) { //Not cancelled\n\t\t\t\timportData(importText);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tboolean filtersSaved = false;\n\t\tfor (Map.Entry<String, List<Filter>> entry : importedFilters.entrySet()) {\n\t\t\tfiltersSaved = saveFilter(entry.getKey(), entry.getValue()) || filtersSaved;\n\t\t}\n\t\tif (filtersSaved) {\n\t\t\tupdateFilters();\n\t\t\tgui.saveSettings(\"Filter (Import)\"); //Save Filter (Import);\n\t\t}\n\t}\n\n\tprivate boolean saveFilter(String filterName, List<Filter> filterList) {\n\t\tif (filterList.isEmpty() || filterName == null || filterName.isEmpty()) {\n\t\t\treturn false;\n\t\t}\n\t\tList<Filter> filter = filters.get(filterName);\n\t\tif (filter != null) { //Filter already exist\n\t\t\tfilterName = gui.getFilterName(); //get new name\n\t\t}\n\t\tif (filterName != null && !filterName.isEmpty()) {\n\t\t\tSettings.lock(\"Filter (Import)\"); //Lock for Filter (Merge)\n\t\t\tfilters.put(filterName, filterList);\n\t\t\tSettings.unlock(\"Filter (Import)\"); //Lock for Filter (Merge)\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t@Override\n\tprotected boolean validateName(final String name, final String oldName, final String title) {\n\t\tfor (String filter : defaultFilters.keySet()) {\n\t\t\tif (filter.equalsIgnoreCase(name)) {\n\t\t\t\tJOptionPane.showMessageDialog(this.getDialog(), GuiShared.get().overwriteDefaultFilter(), title, JOptionPane.PLAIN_MESSAGE);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn super.validateName(name, oldName, title);\n\t}\n\n\t@Override protected String textDeleteMultipleMsg(int size) { return GuiShared.get().deleteFilters(size); }\n\t@Override protected String textDelete() { return GuiShared.get().deleteFilter(); }\n\t@Override protected String textEnterName() { return GuiShared.get().enterFilterName(); }\n\t@Override protected String textMerge() { return GuiShared.get().mergeFilters(); }\n\t@Override protected String textRename() { return GuiShared.get().renameFilter(); }\n\t@Override protected String textOverwrite() { return GuiShared.get().overwriteFilter(); }\n\n\tpublic final void updateFilters() {\n\t\tupdate(filters.keySet());\n\t\tgui.updateFilters();\n\t}\n\n\t@Override\n\tpublic void setVisible(final boolean b) {\n\t\tif (b) {\n\t\t\tupdateFilters();\n\t\t}\n\t\tsuper.setVisible(b);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/filter/SimpleFilterControl.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.filter;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\n\r\npublic interface SimpleFilterControl<E> {\r\n\r\n\tpublic void saveSettings(final String msg);\r\n\r\n\tpublic default Map<String, List<Filter>> getAllFilters() {\r\n\t\treturn new HashMap<>();\r\n\t}\r\n\r\n\tpublic default boolean isFiltersEmpty() {\r\n\t\treturn true;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/filter/SimpleTableFormat.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.filter;\r\n\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\n\r\n\r\npublic interface SimpleTableFormat<E> {\r\n\tpublic Object getColumnValue(E item, String column);\r\n\tpublic List<EnumTableColumn<E>> getAllColumns();\r\n\tpublic List<EnumTableColumn<E>> getShownColumns();\r\n\tpublic EnumTableColumn<E> valueOf(String column) throws IllegalArgumentException;\r\n\tpublic void addColumn(EnumTableColumn<E> column);\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/menu/JFormulaDialog.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.shared.menu;\n\nimport com.udojava.evalex.Expression;\nimport com.udojava.evalex.LazyFunction;\nimport com.udojava.evalex.LazyOperator;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.math.BigDecimal;\nimport java.math.MathContext;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Objects;\nimport java.util.Set;\nimport javax.swing.GroupLayout;\nimport javax.swing.JButton;\nimport javax.swing.JComponent;\nimport javax.swing.JLabel;\nimport javax.swing.JMenuItem;\nimport javax.swing.JTextField;\nimport javax.swing.event.CaretEvent;\nimport javax.swing.event.CaretListener;\nimport javax.swing.text.BadLocationException;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDropDownButton;\nimport net.nikr.eve.jeveasset.gui.shared.table.ColumnManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.NumberValue;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\n\n\npublic class JFormulaDialog<T extends Enum<T> & EnumTableColumn<Q>, Q> extends JDialogCentered {\n\n\tpublic static MathContext FORMULA_PRECISION = MathContext.DECIMAL64; //64bit == Double size\n\n\tprivate enum FormulaDialogAction {\n\t\tOK, CANCEL\n\t}\n\n\tprivate final JTextField jName;\n\tprivate final JTextField jFormula;\n\tprivate final JButton jOK;\n\n\tprivate final List<String> columnNames = new ArrayList<>();\n\tprivate final List<String> columnStaticNames = new ArrayList<>();\n\tprivate final ColumnManager<T, Q> columnManager;\n\n\tprivate Formula returnValue = null;\n\n\tpublic JFormulaDialog(Program program, ColumnManager<T, Q> columnManager) {\n\t\tsuper(program, GuiShared.get().formulaTitle(), Images.MISC_FORMULA.getImage());\n\n\t\tthis.columnManager = columnManager;\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tJLabel jNameLabel = new JLabel(GuiShared.get().formulaName());\n\n\t\tjName = new JTextField();\n\t\tjName.addCaretListener(listener);\n\n\t\tJLabel jFormulaLabel = new JLabel(GuiShared.get().formulaString());\n\n\t\tjFormula = new JTextField();\n\t\tjFormula.addCaretListener(listener);\n\n\t\tJDropDownButton jColumns = new JDropDownButton(GuiShared.get().formulaColumns());\n\n\t\tfor (T t : columnManager.getEnumConstants()) {\n\t\t\tif (isAssignableFrom(t.getType())) {\n\t\t\t\tString column = getSoftName(t);\n\t\t\t\tJMenuItem jMenuItem = new JMenuItem(t.getColumnName());\n\t\t\t\tif (isNumber(t.getType())) {\n\t\t\t\t\tjMenuItem.setIcon(Images.MISC_NUMBER.getIcon());\n\t\t\t\t} else if (isDate(t.getType())) {\n\t\t\t\t\tjMenuItem.setIcon(Images.MISC_DATE.getIcon());\n\t\t\t\t\tjMenuItem.setToolTipText(GuiShared.get().formulaDateToolTip());\n\t\t\t\t}\n\t\t\t\tjMenuItem.addActionListener(new ActionListener() {\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tjFormula.getDocument().insertString(jFormula.getCaretPosition(), column, null);\n\t\t\t\t\t\t\tjFormula.requestFocusInWindow();\n\t\t\t\t\t\t} catch (BadLocationException ex) {\n\t\t\t\t\t\t\t//No problem\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tjColumns.add(jMenuItem);\n\t\t\t}\n\t\t}\n\t\tJDropDownButton jFunctions = new JDropDownButton(GuiShared.get().formulaFunctions());\n\n\t\tExpressionValues expression = new ExpressionValues();\n\t\tfor (LazyFunction function : expression.getFunctions()) {\n\t\t\tStringBuilder builder = new StringBuilder();\n\t\t\tfor (int i = 1; i < function.getNumParams(); i++) {\n\t\t\t\tbuilder.append(\",\");\n\t\t\t}\n\t\t\tbuilder.append(\")\");\n\t\t\tString after = builder.toString();\n\t\t\tString before = function.getName().toLowerCase() + \"(\";\n\t\t\tJMenuItem jMenuItem = new JMenuItem(before + after);\n\t\t\tjMenuItem.addActionListener(new ActionListener() {\n\t\t\t\t@Override\n\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tint start = jFormula.getSelectionStart();\n\t\t\t\t\t\tint end = jFormula.getSelectionEnd();\n\t\t\t\t\t\tjFormula.getDocument().insertString(end, after, null);\n\t\t\t\t\t\tjFormula.getDocument().insertString(start, before, null);\n\t\t\t\t\t\tjFormula.setCaretPosition(start + before.length());\n\t\t\t\t\t\tjFormula.requestFocusInWindow();\n\t\t\t\t\t} catch (BadLocationException ex) {\n\t\t\t\t\t\t//No problem\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tjFunctions.add(jMenuItem);\n\t\t}\n\n\t\tJDropDownButton jOperators = new JDropDownButton(GuiShared.get().formulaOperations());\n\t\tfor (LazyOperator operator : expression.getOperators()) {\n\t\t\tJMenuItem jMenuItem = new JMenuItem(operator.getOper());\n\t\t\tjMenuItem.addActionListener(new ActionListener() {\n\t\t\t\t@Override\n\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tjFormula.getDocument().insertString(jFormula.getCaretPosition(), operator.getOper(), null);\n\t\t\t\t\t\tjFormula.requestFocusInWindow();\n\t\t\t\t\t} catch (BadLocationException ex) {\n\t\t\t\t\t\t//No problem\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tjOperators.add(jMenuItem);\n\t\t}\n\n\t\t//Static columns - does not change\n\t\tfor (T t : columnManager.getEnumConstants()) {\n\t\t\tcolumnStaticNames.add(toColumnName(t.getColumnName()));\n\t\t}\n\t\t//System names (reserved for jump columns) - does not change\n\t\tfor (MyLocation location : StaticData.get().getLocations()) {\n\t\t\tif (location.isSystem()) {\n\t\t\t\tcolumnStaticNames.add(toColumnName(location.getSystem()));\n\t\t\t}\n\t\t}\n\n\t\tjOK = new JButton(GuiShared.get().ok());\n\t\tjOK.setActionCommand(FormulaDialogAction.OK.name());\n\t\tjOK.addActionListener(listener);\n\n\t\tJButton jCancel = new JButton(GuiShared.get().cancel());\n\t\tjCancel.setActionCommand(FormulaDialogAction.CANCEL.name());\n\t\tjCancel.addActionListener(listener);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t\t\t.addComponent(jNameLabel)\n\t\t\t\t\t\t.addComponent(jFormulaLabel)\n\t\t\t\t\t)\n\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t\t.addComponent(jName)\n\t\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t\t.addComponent(jColumns, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t\t\t.addComponent(jFunctions, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t\t\t.addComponent(jOperators, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.addComponent(jFormula)\n\t\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t\t.addComponent(jOK, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t\t.addComponent(jNameLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jName, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t\t.addComponent(jColumns, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jFunctions, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jOperators, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t\t.addComponent(jFormulaLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jFormula, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t);\n\t}\n\n\t@Override\n\tprotected JComponent getDefaultFocus() {\n\t\treturn jName;\n\t}\n\n\t@Override\n\tprotected JButton getDefaultButton() {\n\t\treturn jOK;\n\t}\n\n\t@Override\n\tprotected void windowShown() {\n\t\tvalidate();\n\t}\n\n\t@Override\n\tprotected void save() {\n\t\treturnValue = new Formula(jName.getText(), getExpressionString(), null);\n\t\tsetVisible(false);\n\t}\n\n\tpublic Formula edit(Formula formula) {\n\t\treset(formula.getColumnName(), formula.getOriginalExpression());\n\t\tsetVisible(true);\n\t\treturn returnValue;\n\t}\n\n\tpublic Formula add() {\n\t\treset(\"\", \"\");\n\t\tsetVisible(true);\n\t\treturn returnValue;\n\t}\n\n\tprivate void reset(String name, String expression) {\n\t\treturnValue = null;\n\t\tcolumnNames.clear();\n\t\tfor (Formula f : columnManager.getFormulas()) {\n\t\t\tcolumnNames.add(toColumnName(f.getColumnName()));\n\t\t}\n\t\tcolumnNames.addAll(columnStaticNames);\n\t\tcolumnNames.remove(toColumnName(name)); //Remove current name (that is still vaild)\n\t\tjName.setText(name);\n\t\tjFormula.setText(fromExpressionString(expression));\n\t\tvalidate();\n\t}\n\n\tpublic static String getHardName(EnumTableColumn<?> t) {\n\t\treturn t.name().replace(\"_\", \"\");\n\t}\n\n\tprivate static String getSoftName(EnumTableColumn<?> t) {\n\t\treturn \"[\" + t.getColumnName() + \"]\";\n\t}\n\n\tprivate String toColumnName(String text) {\n\t\treturn text.toLowerCase();\n\t}\n\n\tprivate String getExpressionString() {\n\t\treturn toExpressionString(jFormula.getText());\n\t}\n\n\tprivate String toExpressionString(String text) {\n\t\tfor (T t : columnManager.getEnumConstants()) {\n\t\t\tif (isAssignableFrom(t.getType())) {\n\t\t\t\ttext = text.replace(getSoftName(t), getHardName(t));\n\t\t\t}\n\t\t}\n\t\treturn text;\n\t}\n\n\tprivate String fromExpressionString(String text) {\n\t\tfor (T t : columnManager.getEnumConstants()) {\n\t\t\tif (isAssignableFrom(t.getType())) {\n\t\t\t\ttext = replaceAll(t, text);\n\t\t\t}\n\t\t}\n\t\treturn text;\n\t}\n\n\tpublic static String replaceAll(EnumTableColumn<?> enumColumn, String text) {\n\t\treturn text.replaceAll(\"\\\\b\" + getHardName(enumColumn) + \"\\\\b\", getSoftName(enumColumn).replace(\"$\", \"\\\\$\")); //$ is reserved for\n\t}\n\n\tprivate Expression getExpression() {\n\t\treturn new Expression(getExpressionString(), FORMULA_PRECISION);\n\t}\n\n\tprivate boolean isFomulaValid() {\n\t\tExpression expression = getExpression();\n\t\tSet<String> hardNames = new HashSet<>();\n\t\tfor (T t : columnManager.getEnumConstants()) {\n\t\t\tif (isAssignableFrom(t.getType())) {\n\t\t\t\tString hardName = getHardName(t);\n\t\t\t\texpression.setVariable(hardName, new BigDecimal(2.0));\n\t\t\t\thardNames.add(hardName);\n\t\t\t}\n\t\t}\n\t\treturn safeEval(hardNames, expression);\n\t}\n\n\tprivate boolean isAssignableFrom(Class<?> c) {\n\t\treturn Number.class.isAssignableFrom(c)\n\t\t\t\t|| NumberValue.class.isAssignableFrom(c)\n\t\t\t\t|| Date.class.isAssignableFrom(c);\n\t}\n\n\tprivate boolean isNumber(Class<?> c) {\n\t\treturn Number.class.isAssignableFrom(c)\n\t\t\t\t|| NumberValue.class.isAssignableFrom(c);\n\t}\n\n\tprivate boolean isDate(Class<?> c) {\n\t\treturn Date.class.isAssignableFrom(c);\n\t}\n\n\tpublic static boolean safeEval(Set<String> hardNames, Expression expression) {\n\t\ttry {\n\t\t\tif (!hardNames.containsAll(expression.getUsedVariables())) {\n\t\t\t\treturn false; //Invalid variable\n\t\t\t}\n\t\t\texpression.eval();\n\t\t\treturn true;\n\t\t} catch (RuntimeException ex) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tprivate boolean isNameValid() {\n\t\tString name = jName.getText();\n\t\treturn !name.isEmpty() && !columnNames.contains(toColumnName(name));\n\t}\n\n\tprivate void validate() {\n\t\tboolean nameValid = isNameValid();\n\t\tboolean fomulaValid = isFomulaValid();\n\t\tif (nameValid) {\n\t\t\tColorSettings.configReset(jName);\n\t\t} else {\n\t\t\tColorSettings.config(jName, ColorEntry.GLOBAL_ENTRY_INVALID);\n\t\t}\n\t\tif (fomulaValid) {\n\t\t\tColorSettings.configReset(jFormula);\n\t\t} else {\n\t\t\tColorSettings.config(jFormula, ColorEntry.GLOBAL_ENTRY_INVALID);\n\t\t}\n\t\tjOK.setEnabled(nameValid && fomulaValid);\n\t}\n\n\tprivate class ListenerClass implements ActionListener, CaretListener {\n\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (FormulaDialogAction.OK.name().equals(e.getActionCommand())) {\n\t\t\t\tsave();\n\t\t\t} else if (FormulaDialogAction.CANCEL.name().equals(e.getActionCommand())) {\n\t\t\t\tsetVisible(false);\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void caretUpdate(CaretEvent e) {\n\t\t\tvalidate();\n\t\t}\n\t}\n\n\tprivate static class ExpressionValues extends Expression {\n\n\t\tpublic ExpressionValues() {\n\t\t\tsuper(\"\", FORMULA_PRECISION);\n\t\t}\n\n\t\tpublic Collection<LazyOperator> getOperators() {\n\t\t\treturn operators.values();\n\t\t}\n\n\t\tpublic Collection<com.udojava.evalex.LazyFunction> getFunctions() {\n\t\t\treturn functions.values();\n\t\t}\n\t}\n\n\tpublic static class Formula implements Comparable<Formula> {\n\t\tprivate final String columnName;\n\t\tprivate final Expression expression;\n\t\tprivate final Map<Object, Object> values = new HashMap<>();\n\t\tprivate final Collection<String> usedVariables;\n\t\tprivate final Collection<String> variableColumns = new ArrayList<>();\n\t\tprivate final boolean isBoolean;\n\t\tprivate Integer index;\n\n\t\tpublic Formula(String columnName, String expressionString, Integer index) {\n\t\t\tthis.expression = new Expression(expressionString, FORMULA_PRECISION);\n\t\t\tthis.columnName = columnName;\n\t\t\tthis.index = index;\n\t\t\tthis.usedVariables = expression.getUsedVariables();\n\t\t\tthis.isBoolean = expression.isBoolean();\n\t\t}\n\n\t\tpublic String getColumnName() {\n\t\t\treturn columnName;\n\t\t}\n\n\t\tpublic String getOriginalExpression() {\n\t\t\treturn expression.getOriginalExpression();\n\t\t}\n\n\t\tpublic Expression getExpression() {\n\t\t\treturn expression;\n\t\t}\n\n\t\tpublic boolean isBoolean() {\n\t\t\treturn isBoolean;\n\t\t}\n\n\t\tpublic Integer getIndex() {\n\t\t\treturn index;\n\t\t}\n\n\t\tpublic Map<Object, Object> getValues() {\n\t\t\treturn values;\n\t\t}\n\n\t\tpublic Collection<String> getUsedVariables() {\n\t\t\treturn usedVariables;\n\t\t}\n\n\t\tpublic Collection<String> getVariableColumns() {\n\t\t\treturn variableColumns;\n\t\t}\n\n\t\tpublic void setIndex(Integer index) {\n\t\t\tthis.index = index;\n\t\t}\n\n\t\t@Override\n\t\tpublic int hashCode() {\n\t\t\tint hash = 7;\n\t\t\thash = 47 * hash + Objects.hashCode(this.columnName);\n\t\t\treturn hash;\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean equals(Object obj) {\n\t\t\tif (this == obj) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (obj == null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (getClass() != obj.getClass()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfinal Formula other = (Formula) obj;\n\t\t\tif (!Objects.equals(this.columnName, other.columnName)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\t@Override\n\t\tpublic int compareTo(Formula other) {\n\t\t\treturn this.columnName.compareTo(other.columnName);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/menu/JMenuAssetFilter.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.menu;\n\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Set;\nimport javax.swing.JMenuItem;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter;\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter.CompareType;\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter.LogicType;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.JAutoMenu;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.gui.tabs.assets.AssetTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewGroup;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewLocation;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewTab;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewTab.OverviewTableMenu;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\nimport net.nikr.eve.jeveasset.i18n.TabsOverview;\n\n\npublic class JMenuAssetFilter<T> extends JAutoMenu<T> {\n\n\tprivate enum MenuAssetFilterAction {\n\t\tSTATION_FILTER,\n\t\tPLANET_FILTER,\n\t\tSYSTEM_FILTER,\n\t\tREGION_FILTER,\n\t\tCONSTELLATION_FILTER,\n\t\tOVERVIEW_GROUP_FILTER,\n\t\tITEM_TYPE_FILTER\n\t}\n\n\tprivate final JMenuItem jTypeID;\n\tprivate final JMenuItem jPlanet;\n\tprivate final JMenuItem jStation;\n\tprivate final JMenuItem jSystem;\n\tprivate final JMenuItem jConstellation;\n\tprivate final JMenuItem jRegion;\n\tprivate final JMenuItem jLocations;\n\n\tpublic JMenuAssetFilter(final Program program) {\n\t\tsuper(GuiShared.get().addFilter(), program);\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tthis.setIcon(Images.TOOL_ASSETS.getIcon());\n\n\t\tjTypeID = new JMenuItem(GuiShared.get().item());\n\t\tjTypeID.setIcon(Images.EDIT_ADD.getIcon());\n\t\tjTypeID.setActionCommand(MenuAssetFilterAction.ITEM_TYPE_FILTER.name());\n\t\tjTypeID.addActionListener(listener);\n\t\tadd(jTypeID);\n\n\t\taddSeparator();\n\n\t\tjStation = new JMenuItem(GuiShared.get().station());\n\t\tjStation.setIcon(Images.LOC_STATION.getIcon());\n\t\tjStation.setActionCommand(MenuAssetFilterAction.STATION_FILTER.name());\n\t\tjStation.addActionListener(listener);\n\t\tadd(jStation);\n\n\t\tjPlanet = new JMenuItem(GuiShared.get().planet());\n\t\tjPlanet.setIcon(Images.LOC_PLANET.getIcon());\n\t\tjPlanet.setActionCommand(MenuAssetFilterAction.PLANET_FILTER.name());\n\t\tjPlanet.addActionListener(listener);\n\t\tadd(jPlanet);\n\n\t\tjSystem = new JMenuItem(GuiShared.get().system());\n\t\tjSystem.setIcon(Images.LOC_SYSTEM.getIcon());\n\t\tjSystem.setActionCommand(MenuAssetFilterAction.SYSTEM_FILTER.name());\n\t\tjSystem.addActionListener(listener);\n\t\tadd(jSystem);\n\n\t\tjConstellation = new JMenuItem(GuiShared.get().constellation());\n\t\tjConstellation.setIcon(Images.LOC_CONSTELLATION.getIcon());\n\t\tjConstellation.setActionCommand(MenuAssetFilterAction.CONSTELLATION_FILTER.name());\n\t\tjConstellation.addActionListener(listener);\n\t\tadd(jConstellation);\n\n\t\tjRegion = new JMenuItem(GuiShared.get().region());\n\t\tjRegion.setIcon(Images.LOC_REGION.getIcon());\n\t\tjRegion.setActionCommand(MenuAssetFilterAction.REGION_FILTER.name());\n\t\tjRegion.addActionListener(listener);\n\t\tadd(jRegion);\n\n\t\tjLocations = new JMenuItem(TabsOverview.get().locations());\n\t\tjLocations.setIcon(Images.LOC_LOCATIONS.getIcon());\n\t\tjLocations.setActionCommand(MenuAssetFilterAction.OVERVIEW_GROUP_FILTER.name());\n\t\tjLocations.addActionListener(listener);\n\t}\n\n\t@Override\n\tpublic void updateMenuData() {\n\t\tjTypeID.setEnabled(!menuData.getTypeIDs().isEmpty());\n\t\tjStation.setEnabled(!menuData.getStationAndCitadelNames().isEmpty());\n\t\tjPlanet.setEnabled(!menuData.getPlanetNames().isEmpty());\n\t\tjSystem.setEnabled(!menuData.getSystemNames().isEmpty());\n\t\tjConstellation.setEnabled(!menuData.getConstellationNames().isEmpty());\n\t\tjRegion.setEnabled(!menuData.getRegionNames().isEmpty());\n\t}\n\n\tpublic void setTool(Object object) {\n\t\tif (object instanceof OverviewTableMenu) {\n\t\t\tOverviewTab overviewTab = ((OverviewTableMenu)object).getOverviewTab();\n\t\t\tjLocations.setEnabled(overviewTab.isGroupAndNotEmpty());\n\t\t\tadd(jLocations);\n\t\t} else {\n\t\t\tremove(jLocations);\n\t\t}\n\t}\n\n\tpublic static <T extends Enum<T> & EnumTableColumn<Q>, Q> List<Filter> getFilters(Set<String> names, T column, CompareType compareType) {\n\t\tList<Filter> filters = new ArrayList<>();\n\t\tboolean and = names.size() < 2;\n\t\tfor (String name : names) {\n\t\t\tfilters.add(new Filter(and ? LogicType.AND : LogicType.OR, column, compareType, name));\n\t\t}\n\t\treturn filters;\n\t}\n\n\tprivate void addFilters(Set<String> names, AssetTableFormat column, CompareType compareType) {\n\t\tList<Filter> filters = getFilters(names, column, compareType);\n\t\tprogram.getAssetsTab().addFilters(filters);\n\t\tprogram.getMainWindow().addTab(program.getAssetsTab());\n\t}\n\n\tprivate class ListenerClass implements ActionListener {\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (MenuAssetFilterAction.STATION_FILTER.name().equals(e.getActionCommand())) {\n\t\t\t\taddFilters(menuData.getStationAndCitadelNames(), AssetTableFormat.LOCATION, CompareType.EQUALS);\n\t\t\t} else if (MenuAssetFilterAction.PLANET_FILTER.name().equals(e.getActionCommand())) {\n\t\t\t\taddFilters(menuData.getPlanetNames(), AssetTableFormat.LOCATION, CompareType.EQUALS);\n\t\t\t} else if (MenuAssetFilterAction.SYSTEM_FILTER.name().equals(e.getActionCommand())) {\n\t\t\t\taddFilters(menuData.getSystemNames(), AssetTableFormat.SYSTEM, CompareType.EQUALS);\n\t\t\t} else if (MenuAssetFilterAction.CONSTELLATION_FILTER.name().equals(e.getActionCommand())) {\n\t\t\t\taddFilters(menuData.getConstellationNames(), AssetTableFormat.CONSTELLATION, CompareType.EQUALS);\n\t\t\t} else if (MenuAssetFilterAction.REGION_FILTER.name().equals(e.getActionCommand())) {\n\t\t\t\taddFilters(menuData.getRegionNames(), AssetTableFormat.REGION, CompareType.EQUALS);\n\t\t\t} else if (MenuAssetFilterAction.OVERVIEW_GROUP_FILTER.name().equals(e.getActionCommand())) {\n\t\t\t\tOverviewGroup overviewGroup = program.getOverviewTab(true).getSelectGroup();\n\t\t\t\tif (overviewGroup == null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tList<Filter> filters = new ArrayList<>();\n\t\t\t\tfor (OverviewLocation location : overviewGroup.getLocations()) {\n\t\t\t\t\tif (location.isStation()) {\n\t\t\t\t\t\tfilters.add(new Filter(LogicType.OR, AssetTableFormat.LOCATION, CompareType.EQUALS, location.getName()));\n\t\t\t\t\t}\n\t\t\t\t\tif (location.isPlanet()) {\n\t\t\t\t\t\tfilters.add(new Filter(LogicType.OR, AssetTableFormat.LOCATION, CompareType.EQUALS, location.getName()));\n\t\t\t\t\t}\n\t\t\t\t\tif (location.isSystem()) {\n\t\t\t\t\t\tfilters.add(new Filter(LogicType.OR, AssetTableFormat.SYSTEM, CompareType.EQUALS, location.getName()));\n\t\t\t\t\t}\n\t\t\t\t\tif (location.isConstellation()) {\n\t\t\t\t\t\tfilters.add(new Filter(LogicType.OR, AssetTableFormat.CONSTELLATION, CompareType.EQUALS, location.getName()));\n\t\t\t\t\t}\n\t\t\t\t\tif (location.isRegion()) {\n\t\t\t\t\t\tfilters.add(new Filter(LogicType.OR, AssetTableFormat.REGION, CompareType.EQUALS, location.getName()));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tprogram.getAssetsTab().addFilters(filters);\n\t\t\t\tprogram.getMainWindow().addTab(program.getAssetsTab());\n\t\t\t} else if (MenuAssetFilterAction.ITEM_TYPE_FILTER.name().equals(e.getActionCommand())) {\n\t\t\t\taddFilters(menuData.getTypeNames(), AssetTableFormat.NAME, CompareType.CONTAINS);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/menu/JMenuColumns.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.menu;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.util.ArrayList;\r\nimport java.util.Map;\r\nimport javax.swing.ButtonGroup;\r\nimport javax.swing.JMenu;\r\nimport javax.swing.JMenuItem;\r\nimport javax.swing.JRadioButtonMenuItem;\r\nimport javax.swing.table.AbstractTableModel;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JAutoCompleteDialog;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.JEditColumnsDialog;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor.ResizeMode;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.View;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.JViewManagerDialog;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\npublic class JMenuColumns<T extends Enum<T> & EnumTableColumn<Q>, Q> extends JMenu {\r\n\r\n\tprivate JEditColumnsDialog<T, Q> jEditColumnsDialog;\r\n\tprivate JAutoCompleteDialog<View> jViewSaveDialog;\r\n\tprivate JViewManagerDialog jViewManagerDialog;\r\n\r\n\tpublic JMenuColumns(final Program program, EnumTableFormatAdaptor<T, Q> tableFormatAdaptor, final AbstractTableModel tableModel, final JAutoColumnTable jTable, final String name) {\r\n\t\tthis(program, tableFormatAdaptor, tableModel, jTable, name, true);\r\n\t}\r\n\r\n\tpublic JMenuColumns(final Program program, EnumTableFormatAdaptor<T, Q> tableFormatAdaptor, final AbstractTableModel tableModel, final JAutoColumnTable jTable, final String name, final boolean editable) {\r\n\t\tsuper(GuiShared.get().tableSettings());\r\n\t\tJMenuItem jMenuItem;\r\n\t\tsetIcon(Images.TABLE_COLUMN_SHOW.getIcon());\r\n\r\n\t\tif (editable) {\r\n\t\t\tif (jEditColumnsDialog == null) { //Create dialog (only once)\r\n\t\t\t\tjEditColumnsDialog = new JEditColumnsDialog<>(program, tableFormatAdaptor);\r\n\t\t\t}\r\n\t\t\tif (jViewSaveDialog == null) { //Create dialog (only once)\r\n\t\t\t\tjViewSaveDialog = new JAutoCompleteDialog<>(program, GuiShared.get().saveView(), Images.FILTER_SAVE.getImage(), GuiShared.get().saveViewMsg(), false, JAutoCompleteDialog.VIEW_OPTIONS);\r\n\t\t\t}\r\n\t\t\tif (jViewManagerDialog == null) { //Create dialog (only once)\r\n\t\t\t\tjViewManagerDialog = new JViewManagerDialog(program, tableFormatAdaptor, tableModel, jTable);\r\n\t\t\t}\r\n\t\t\tjMenuItem = new JMenuItem(GuiShared.get().tableColumns(), Images.DIALOG_SETTINGS.getIcon());\r\n\t\t\tjMenuItem.addActionListener(new ActionListener() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\t\t\tjEditColumnsDialog.setVisible(true);\r\n\t\t\t\t\ttableModel.fireTableStructureChanged();\r\n\t\t\t\t\tjTable.autoResizeColumns();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tadd(jMenuItem);\r\n\r\n\t\t\taddSeparator();\r\n\r\n\t\t\tjMenuItem = new JMenuItem(GuiShared.get().saveView(), Images.FILTER_SAVE.getIcon());\r\n\t\t\tjMenuItem.addActionListener(new ActionListener() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\t\t\t//Get views...\r\n\t\t\t\t\tMap<String, View> views = Settings.get().getTableViews(name);\r\n\t\t\t\t\tjViewSaveDialog.updateData(new ArrayList<>(views.values())); //Update views\r\n\t\t\t\t\tView view = jViewSaveDialog.show();\r\n\t\t\t\t\tif (view != null) { //Validate\r\n\t\t\t\t\t\tview.setColumns(tableFormatAdaptor.getColumns()); //Set data\r\n\t\t\t\t\t\tSettings.lock(\"View (New)\"); //Lock for View (New)\r\n\t\t\t\t\t\tviews.remove(view.getName()); //Remove old\r\n\t\t\t\t\t\tviews.put(view.getName(), view); //Add new\r\n\t\t\t\t\t\tSettings.unlock(\"View (New)\"); //Unlock for View (New)\r\n\t\t\t\t\t\tprogram.saveSettings(\"View (New)\"); //Save View (New)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tadd(jMenuItem);\r\n\r\n\t\t\tJMenu jLoad = new JMenu(GuiShared.get().loadView());\r\n\t\t\tjLoad.setIcon(Images.FILTER_LOAD.getIcon());\r\n\t\t\tadd(jLoad);\r\n\r\n\t\t\tJMenuItem jManage = new JMenuItem(GuiShared.get().editViews(), Images.DIALOG_SETTINGS.getIcon());\r\n\t\t\tjManage.addActionListener(new ActionListener() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\t\t\tMap<String, View> views = Settings.get().getTableViews(name);\r\n\t\t\t\t\tjViewManagerDialog.updateData(views);\r\n\t\t\t\t\tjViewManagerDialog.setVisible(true);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (!Settings.get().getTableViews(name).isEmpty()) {\r\n\t\t\t\tjLoad.setEnabled(true);\r\n\r\n\t\t\t\tjLoad.add(jManage);\r\n\r\n\t\t\t\tjLoad.addSeparator();\r\n\r\n\t\t\t\tfor (final View view : Settings.get().getTableViews(name).values()) {\r\n\t\t\t\t\tjMenuItem = new JMenuItem(view.getName(), Images.FILTER_LOAD.getIcon());\r\n\t\t\t\t\tjMenuItem.addActionListener(new ActionListener() {\r\n\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\t\t\t\t\tjViewManagerDialog.loadView(view);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tjLoad.add(jMenuItem);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tjLoad.setEnabled(false);\r\n\t\t\t}\r\n\r\n\t\t\taddSeparator();\r\n\t\t}\r\n\r\n\t\tjMenuItem = new JMenuItem(GuiShared.get().tableColumnsReset(), Images.TABLE_COLUMN_SHOW.getIcon());\r\n\t\tjMenuItem.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\t\ttableFormatAdaptor.reset();\r\n\t\t\t\ttableModel.fireTableStructureChanged();\r\n\t\t\t\tjTable.autoResizeColumns();\r\n\t\t\t\tprogram.saveSettings(\"Columns (Reset)\"); //Save Resize Mode\r\n\t\t\t}\r\n\t\t});\r\n\t\tadd(jMenuItem);\r\n\r\n\t\taddSeparator();\r\n\r\n\t\tButtonGroup buttonGroup = new ButtonGroup();\r\n\t\tJRadioButtonMenuItem jRadioButton;\r\n\t\tfor (final ResizeMode mode : ResizeMode.values()) {\r\n\t\t\tjRadioButton = new JRadioButtonMenuItem(mode.toString(), Images.TABLE_COLUMN_RESIZE.getIcon());\r\n\t\t\tjRadioButton.setSelected(tableFormatAdaptor.getResizeMode() == mode);\r\n\t\t\t\tjRadioButton.addActionListener(new ActionListener() {\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\t\t\t\ttableFormatAdaptor.setResizeMode(mode);\r\n\t\t\t\t\t\tjTable.saveColumnsWidth();\r\n\t\t\t\t\t\tjTable.autoResizeColumns();\r\n\t\t\t\t\t\tprogram.updateTableMenu();\r\n\t\t\t\t\t\tprogram.saveSettings(\"Resize Mode\"); //Save Resize Mode\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\tbuttonGroup.add(jRadioButton);\r\n\t\t\tadd(jRadioButton);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/menu/JMenuCopy.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.shared.menu;\n\nimport javax.swing.JMenuItem;\nimport javax.swing.JTable;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.CopyHandler;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\n\npublic class JMenuCopy extends JMenuItem {\n\n\tpublic JMenuCopy(final JTable jTable) {\n\t\tsuper(GuiShared.get().copy());\n\t\tthis.setIcon(Images.EDIT_COPY.getIcon());\n\t\tCopyHandler.installCopyAction(this, jTable);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/menu/JMenuCopyPlus.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.shared.menu;\n\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.text.DecimalFormat;\nimport java.util.Map;\nimport javax.swing.JMenuItem;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.JTextDialog;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.JAutoMenu;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\n\npublic class JMenuCopyPlus<T> extends JAutoMenu<T> {\n\n\tprivate final DecimalFormat number = new DecimalFormat(\"0\");\n\tprivate final JTextDialog jTextDialog;\n\tprivate final JMenuItem jEveMultiBuy;\n\n\n\tpublic JMenuCopyPlus(Program program) {\n\t\tsuper(GuiShared.get().copyPlus(), program);\n\t\tsetIcon(Images.EDIT_COPY.getIcon());\n\n\t\tjTextDialog = new JTextDialog(program.getMainWindow().getFrame());\n\n\t\tjEveMultiBuy = new JMenuItem(GuiShared.get().copyEveMultiBuy());\n\t\tjEveMultiBuy.setIcon(Images.MISC_EVE.getIcon());\n\t\tjEveMultiBuy.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tStringBuilder builder = new StringBuilder();\n\t\t\t\tfor (Map.Entry<Item, Long> entry : menuData.getItemCounts().entrySet()) {\n\t\t\t\t\tbuilder.append(entry.getKey().getTypeName());\n\t\t\t\t\tbuilder.append(\" \");\n\t\t\t\t\tbuilder.append(number.format(entry.getValue()));\n\t\t\t\t\tbuilder.append(\"\\r\\n\");\n\t\t\t\t}\n\t\t\t\tjTextDialog.exportText(builder.toString());\n\t\t\t}\n\t\t});\n\t\tadd(jEveMultiBuy);\n\t}\n\n\t@Override\n\tprotected void updateMenuData() {\n\t\tjEveMultiBuy.setEnabled(!menuData.getItemCounts().isEmpty());\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/menu/JMenuFormula.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.shared.menu;\n\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\nimport javax.swing.JMenu;\nimport javax.swing.JMenuItem;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.MenuScroller;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JFormulaDialog.Formula;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.JAutoMenu;\nimport net.nikr.eve.jeveasset.gui.shared.table.ColumnManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\n\n\npublic class JMenuFormula<T extends Enum<T> & EnumTableColumn<Q>, Q> extends JAutoMenu<Q> {\n\n\tprivate enum MenuFormulaAction {\n\t\tADD\n\t}\n\n\tprivate final JMenuItem jAdd;\n\tprivate final JFormulaDialog<T, Q> jFormulaDialog;\n\tprivate final ColumnManager<T, Q> columnManager;\n\n\n\tpublic JMenuFormula(Program program, ColumnManager<T, Q> columnManager) {\n\t\tsuper(GuiShared.get().formulaMenu(), program);\n\n\t\tthis.columnManager = columnManager;\n\n\t\tsetIcon(Images.MISC_FORMULA.getIcon());\n\n\t\tMenuScroller menuScroller = new MenuScroller(this);\n\t\tmenuScroller.keepVisible(2);\n\t\tmenuScroller.setTopFixedCount(2);\n\t\tmenuScroller.setInterval(125);\n\n\t\tjFormulaDialog = new JFormulaDialog<>(program, columnManager);\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tjAdd = new JMenuItem(GuiShared.get().add());\n\t\tjAdd.setIcon(Images.EDIT_ADD.getIcon());\n\t\tjAdd.setActionCommand(MenuFormulaAction.ADD.name());\n\t\tjAdd.addActionListener(listener);\n\t}\n\n\t@Override\n\tprotected void updateMenuData() {\n\t\tremoveAll();\n\n\t\tadd(jAdd);\n\n\t\tList<Formula> columns = new ArrayList<>(columnManager.getFormulas());\n\n\t\tif (!columns.isEmpty()) {\n\t\t\taddSeparator();\n\t\t\tCollections.sort(columns);\n\t\t}\n\n\t\tfor (Formula formula : columns) {\n\t\t\tJMenuItem menuItem;\n\t\t\tJMenu jMenu = new JMenu(formula.getColumnName());\n\t\t\tadd(jMenu);\n\n\t\t\tmenuItem = new JMenuItem(GuiShared.get().delete(), Images.EDIT_DELETE.getIcon());\n\t\t\tmenuItem.addActionListener(new ActionListener() {\n\t\t\t\t@Override\n\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\tcolumnManager.removeColumn(formula);\n\t\t\t\t}\n\t\t\t});\n\t\t\tjMenu.add(menuItem);\n\n\t\t\tmenuItem = new JMenuItem(GuiShared.get().edit(), Images.EDIT_EDIT.getIcon());\n\t\t\tmenuItem.addActionListener(new ActionListener() {\n\t\t\t\t@Override\n\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\tFormula edited = jFormulaDialog.edit(formula);\n\t\t\t\t\tif (edited == null) {\n\t\t\t\t\t\treturn; //Cancel\n\t\t\t\t\t}\n\t\t\t\t\tedited.setIndex(formula.getIndex()); //Stay at the same index...\n\t\t\t\t\tcolumnManager.editColumn(formula, edited);\n\t\t\t\t}\n\t\t\t});\n\t\t\tjMenu.add(menuItem);\n\t\t}\n\t}\n\n\tprivate class ListenerClass implements ActionListener {\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (MenuFormulaAction.ADD.name().equals(e.getActionCommand())) {\n\t\t\t\tFormula formula = jFormulaDialog.add();\n\t\t\t\tif (formula == null) {\n\t\t\t\t\treturn; //Cancel\n\t\t\t\t}\n\t\t\t\tcolumnManager.addColumn(formula);\n\t\t\t}\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/menu/JMenuInfo.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.menu;\r\n\r\nimport ca.odell.glazedlists.SeparatorList;\r\nimport java.awt.Color;\r\nimport java.awt.Dimension;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.awt.event.MouseAdapter;\r\nimport java.awt.event.MouseEvent;\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Set;\r\nimport javax.swing.BorderFactory;\r\nimport javax.swing.Icon;\r\nimport javax.swing.JMenuItem;\r\nimport javax.swing.JPanel;\r\nimport javax.swing.JPopupMenu;\r\nimport javax.swing.SwingConstants;\r\nimport javax.swing.Timer;\r\nimport javax.swing.border.Border;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.CopyHandler;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo.InfoItem;\r\nimport net.nikr.eve.jeveasset.gui.tabs.loadout.Loadout;\r\nimport net.nikr.eve.jeveasset.gui.tabs.materials.Material;\r\nimport net.nikr.eve.jeveasset.gui.tabs.materials.Material.MaterialType;\r\nimport net.nikr.eve.jeveasset.gui.tabs.slots.Slots;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileItem;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileTotal;\r\nimport net.nikr.eve.jeveasset.gui.tabs.tree.TreeAsset;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\nimport net.nikr.eve.jeveasset.i18n.TabsLoadout;\r\n\r\n\r\npublic class JMenuInfo {\r\n\r\n\tprivate static Border border = null;\r\n\tpublic static final int COPY_DELAY = 500;\r\n\r\n\tprivate JMenuInfo() {\r\n\t}\r\n\r\n\tpublic static void treeAsset(final JPopupMenu jPopupMenu, final List<TreeAsset> list) {\r\n\t\tSet<TreeAsset> items = new HashSet<>();\r\n\t\tfor (TreeAsset asset : list) {\r\n\t\t\titems.addAll(asset.getItems());\r\n\t\t\tif (asset.isItem()) {\r\n\t\t\t\titems.add(asset);\r\n\t\t\t}\r\n\t\t}\r\n\t\tinfoItem(jPopupMenu, items);\r\n\t}\r\n\r\n\tpublic static <T extends InfoItem> void infoItem(final JPopupMenu jPopupMenu, final Collection<T> list) {\r\n\t\tList<MenuItemValue> values = createDefault(jPopupMenu);\r\n\r\n\t\tdouble averageValue = 0;\r\n\t\tdouble totalValue = 0;\r\n\t\tlong totalCount = 0;\r\n\t\tdouble totalVolume = 0;\r\n\t\tdouble totalReprocessed = 0;\r\n\t\tfor (InfoItem infoItem : list) {\r\n\t\t\ttotalValue = totalValue + infoItem.getValue();\r\n\t\t\ttotalCount = totalCount + infoItem.getCount();\r\n\t\t\ttotalVolume = totalVolume + infoItem.getVolumeTotal();\r\n\t\t\ttotalReprocessed = totalReprocessed + infoItem.getValueReprocessed();\r\n\t\t}\r\n\t\tif (totalCount > 0 && totalValue > 0) {\r\n\t\t\taverageValue = totalValue / totalCount;\r\n\t\t}\r\n\t\tcreateMenuItem(values, jPopupMenu, totalValue, AutoNumberFormat.ISK, GuiShared.get().selectionValue(), GuiShared.get().selectionShortValue(), Images.TOOL_VALUES.getIcon());\r\n\t\tcreateMenuItem(values, jPopupMenu, totalReprocessed, AutoNumberFormat.ISK, GuiShared.get().selectionValueReprocessed(), GuiShared.get().selectionShortReprocessedValue(), Images.SETTINGS_REPROCESSING.getIcon());\r\n\t\tcreateMenuItem(values, jPopupMenu, averageValue, AutoNumberFormat.ISK, GuiShared.get().selectionAverage(), GuiShared.get().selectionShortAverage(), Images.ASSETS_AVERAGE.getIcon());\r\n\t\tcreateMenuItem(values, jPopupMenu, totalVolume, AutoNumberFormat.DOUBLE, GuiShared.get().selectionVolume(), GuiShared.get().selectionShortVolume(), Images.ASSETS_VOLUME.getIcon());\r\n\t\tcreateMenuItem(values, jPopupMenu, totalCount, AutoNumberFormat.ITEMS, GuiShared.get().selectionCount(), GuiShared.get().selectionShortCount(), Images.EDIT_ADD.getIcon());\r\n\t}\r\n\r\n\tpublic static void contracts(final Program program, final JPopupMenu jPopupMenu, final List<MyContractItem> list) {\r\n\t\tList<MenuItemValue> values = createDefault(jPopupMenu);\r\n\r\n\t\tdouble sellingPrice = 0;\r\n\t\tdouble sellingAssets = 0;\r\n\t\tdouble buying = 0;\r\n\t\tdouble sold = 0;\r\n\t\tdouble bought = 0;\r\n\t\tdouble collateralIssuer = 0;\r\n\t\tdouble collateralAcceptor = 0;\r\n\t\tSet<MyContract> contracts = new HashSet<>();\r\n\t\tfor (Object object : list) {\r\n\t\t\tif (object instanceof SeparatorList.Separator) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (object == null) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tMyContractItem contractItem = (MyContractItem) object;\r\n\t\t\tcontracts.add(contractItem.getContract());\r\n\t\t\tMyContract contract = contractItem.getContract();\r\n\t\t\tif (contract.isIgnoreContract()) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tboolean isIssuer = contract.isForCorp() ? program.getOwners().keySet().contains(contract.getIssuerCorpID()) : program.getOwners().keySet().contains(contract.getIssuerID());\r\n\t\t\tif (isIssuer && //Issuer\r\n\t\t\t\t\tcontract.isOpen() //Not completed\r\n\t\t\t\t\t&& contractItem.isIncluded()) { //Selling\r\n\t\t\t\tsellingAssets = sellingAssets + contractItem.getDynamicPrice() * contractItem.getQuantity();\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (MyContract contract : contracts) {\r\n\t\t\tboolean isIssuer = contract.isForCorp() ? program.getOwners().keySet().contains(contract.getIssuerCorpID()) : program.getOwners().keySet().contains(contract.getIssuerID());\r\n\t\t\tboolean isAcceptor = contract.getAcceptorID() > 0 && program.getOwners().keySet().contains(contract.getAcceptorID());\r\n\t\t\tif (contract.isCourierContract()) {\r\n\t\t\t\tif (isIssuer && (contract.isInProgress() || contract.isOpen())) { //Collateral Issuer\r\n\t\t\t\t\tcollateralIssuer = collateralIssuer + contract.getCollateral();\r\n\t\t\t\t}\r\n\t\t\t\tif (isAcceptor && contract.isInProgress()) { //Collateral Acceptor\r\n\t\t\t\t\tcollateralAcceptor = collateralAcceptor + contract.getCollateral();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (contract.isIgnoreContract()) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (isIssuer //Issuer\r\n\t\t\t\t\t&& contract.isOpen() //Not completed\r\n\t\t\t\t\t) { //Selling/Buying\r\n\t\t\t\tsellingPrice = sellingPrice + contract.getPrice(); //Positive\r\n\t\t\t\tbuying = buying - contract.getReward(); //Negative\r\n\t\t\t} else if (contract.isCompletedSuccessful()) { //Completed\r\n\t\t\t\tif (isIssuer) { //Sold/Bought\r\n\t\t\t\t\tsold = sold + contract.getPrice(); //Positive\r\n\t\t\t\t\tbought = bought - contract.getReward(); //Negative\r\n\t\t\t\t}\r\n\t\t\t\tif (isAcceptor) { //Reverse of the above\r\n\t\t\t\t\tsold = sold + contract.getReward(); //Positive\r\n\t\t\t\t\tbought = bought - contract.getPrice(); //Negative\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tList<MenuItemValue> sell = createMenuItemGroup(jPopupMenu, GuiShared.get().selectionTitleSell(), Images.ORDERS_SELL.getIcon());\r\n\t\tcreateMenuItem(sell, jPopupMenu, sellingPrice, AutoNumberFormat.ISK, GuiShared.get().selectionContractsSellingPriceToolTip(), GuiShared.get().selectionContractsSellingPrice(), Images.ORDERS_SELL.getIcon());\r\n\t\tcreateMenuItem(sell, jPopupMenu, sellingAssets, AutoNumberFormat.ISK, GuiShared.get().selectionContractsSellingAssetsToolTip(), GuiShared.get().selectionContractsSellingAssets(), Images.TOOL_VALUES.getIcon());\r\n\t\tcreateMenuItem(sell, jPopupMenu, sold, AutoNumberFormat.ISK, GuiShared.get().selectionContractsSoldToolTip(), GuiShared.get().selectionContractsSold(), Images.ORDERS_SOLD.getIcon());\r\n\t\tvalues.addAll(sell);\r\n\t\tList<MenuItemValue> buy = createMenuItemGroup(jPopupMenu, GuiShared.get().selectionTitleBuy(), Images.ORDERS_BUY.getIcon());\r\n\t\tcreateMenuItem(buy, jPopupMenu, buying, AutoNumberFormat.ISK, GuiShared.get().selectionContractsBuyingToolTip(), GuiShared.get().selectionContractsBuying(), Images.ORDERS_BUY.getIcon());\r\n\t\tcreateMenuItem(buy, jPopupMenu, bought, AutoNumberFormat.ISK, GuiShared.get().selectionContractsBoughtToolTip(), GuiShared.get().selectionContractsBought(), Images.ORDERS_BOUGHT.getIcon());\r\n\t\tvalues.addAll(buy);\r\n\t\tList<MenuItemValue> collateral = createMenuItemGroup(jPopupMenu, GuiShared.get().selectionTitleCollateral(), Images.ORDERS_ESCROW.getIcon());\r\n\t\tcreateMenuItem(collateral, jPopupMenu, collateralIssuer, AutoNumberFormat.ISK, GuiShared.get().selectionContractsCollateralIssuerToolTip(), GuiShared.get().selectionContractsCollateralIssuer(), Images.ORDERS_ESCROW.getIcon());\r\n\t\tcreateMenuItem(collateral, jPopupMenu, collateralAcceptor, AutoNumberFormat.ISK, GuiShared.get().selectionContractsCollateralAcceptorToolTip(), GuiShared.get().selectionContractsCollateralAcceptor(), Images.UPDATE_WORKING.getIcon());\r\n\t\tvalues.addAll(collateral);\r\n\t}\r\n\r\n\tpublic static void marketOrder(final JPopupMenu jPopupMenu, final List<MyMarketOrder> list) {\r\n\t\tList<MenuItemValue> values = createDefault(jPopupMenu);\r\n\r\n\t\tdouble sellOrdersTotal = 0;\r\n\t\tdouble sellBrokersFeeTotal = 0;\r\n\t\tdouble buyOrdersTotal = 0;\r\n\t\tdouble buyBrokersFeeTotal = 0;\r\n\t\tdouble toCoverTotal = 0;\r\n\t\tdouble escrowTotal = 0;\r\n\t\tlong volumeRemain = 0;\r\n\t\tlong volumeTotal = 0;\r\n\t\tfor (MyMarketOrder marketOrder : list) {\r\n\t\t\tif (marketOrder.isBuyOrder()) { //Buy\r\n\t\t\t\tbuyOrdersTotal += marketOrder.getPrice() * marketOrder.getVolumeTotal();\r\n\t\t\t\tescrowTotal += marketOrder.getEscrow();\r\n\t\t\t\ttoCoverTotal += (marketOrder.getPrice() * marketOrder.getVolumeTotal()) - marketOrder.getEscrow();\r\n\t\t\t\tbuyBrokersFeeTotal += marketOrder.getBrokersFeeNotNull();\r\n\t\t\t} else { //Sell\r\n\t\t\t\tsellOrdersTotal += marketOrder.getPrice() * marketOrder.getVolumeTotal();\r\n\t\t\t\tsellBrokersFeeTotal += marketOrder.getBrokersFeeNotNull();\r\n\t\t\t}\r\n\t\t\tvolumeRemain += marketOrder.getVolumeRemain();\r\n\t\t\tvolumeTotal += marketOrder.getVolumeTotal();\r\n\t\t}\r\n\t\tcreateMenuItem(values, jPopupMenu, GuiShared.get().selectionOrdersCountValue(Formatter.longFormat(volumeRemain), Formatter.itemsFormat(volumeTotal)), GuiShared.get().selectionOrdersCount(), GuiShared.get().selectionShortCount(), Images.EDIT_ADD.getIcon());\r\n\t\tcreateMenuItem(values, jPopupMenu, sellOrdersTotal + sellBrokersFeeTotal, AutoNumberFormat.ISK, GuiShared.get().selectionOrdersSellTotal(), GuiShared.get().selectionShortSell(), Images.ORDERS_SELL.getIcon());\r\n\t\tcreateMenuItem(values, jPopupMenu, buyOrdersTotal + buyBrokersFeeTotal, AutoNumberFormat.ISK, GuiShared.get().selectionOrdersBuyTotal(), GuiShared.get().selectionShortBuy(), Images.ORDERS_BUY.getIcon());\r\n\t\tcreateMenuItem(values, jPopupMenu, escrowTotal, AutoNumberFormat.ISK, GuiShared.get().selectionOrdersBuyEscrow(), GuiShared.get().selectionShortEscrow(), Images.ORDERS_ESCROW.getIcon());\r\n\t\tcreateMenuItem(values, jPopupMenu, toCoverTotal, AutoNumberFormat.ISK, GuiShared.get().selectionOrdersBuyToCover(), GuiShared.get().selectionShortIskToCover(), Images.ORDERS_TO_COVER.getIcon());\r\n\t\tcreateMenuItem(values, jPopupMenu, sellBrokersFeeTotal + buyBrokersFeeTotal, AutoNumberFormat.ISK, GuiShared.get().selectionOrdersBrokersFee(), GuiShared.get().selectionShortBrokerFees(), Images.MISC_COLLAPSED.getIcon());\r\n\t}\r\n\r\n\tpublic static void transctions(final JPopupMenu jPopupMenu, final List<MyTransaction> transactions) {\r\n\t\tList<MenuItemValue> values = createDefault(jPopupMenu);\r\n\r\n\t\tdouble sellTotal = 0;\r\n\t\tdouble sellTaxTotal = 0;\r\n\t\tdouble buyTotal = 0;\r\n\t\tlong sellCount = 0;\r\n\t\tlong buyCount = 0;\r\n\t\tfor (MyTransaction transaction : transactions) {\r\n\t\t\tif (transaction.isSell()) { //Sell\r\n\t\t\t\tsellTotal += transaction.getPrice() * transaction.getQuantity();\r\n\t\t\t\tsellCount += transaction.getQuantity();\r\n\t\t\t\tsellTaxTotal += transaction.getTaxNotNull();\r\n\t\t\t} else { //Buy\r\n\t\t\t\tbuyTotal += transaction.getPrice() * transaction.getQuantity();\r\n\t\t\t\tbuyCount += transaction.getQuantity();\r\n\t\t\t}\r\n\t\t}\r\n\t\tdouble sellAvg = 0;\r\n\t\tif (sellTotal > 0 && sellCount > 0) {\r\n\t\t\tsellAvg = (sellTotal + sellTaxTotal) / sellCount;\r\n\t\t}\r\n\t\tdouble buyAvg = 0;\r\n\t\tif (buyTotal > 0 && buyCount > 0) {\r\n\t\t\tbuyAvg = buyTotal / buyCount;\r\n\t\t}\r\n\t\tdouble bothTotal = sellTotal + buyTotal;\r\n\t\tdouble bothCount = sellCount + buyCount;\r\n\t\tdouble bothAvg = 0;\r\n\t\tif (bothTotal > 0 && bothCount > 0) {\r\n\t\t\tbothAvg = (bothTotal + sellTaxTotal) / bothCount;\r\n\t\t}\r\n\t\t//Sell\r\n\t\tList<MenuItemValue> sell = createMenuItemGroup(jPopupMenu, GuiShared.get().selectionTitleSell(), Images.ORDERS_SELL.getIcon());\r\n\t\tcreateMenuItem(sell, jPopupMenu, sellCount, AutoNumberFormat.ITEMS, GuiShared.get().selectionTransactionsSellCount(), GuiShared.get().selectionShortCount(), Images.EDIT_ADD.getIcon());\r\n\t\tcreateMenuItem(sell, jPopupMenu, sellTotal + sellTaxTotal, AutoNumberFormat.ISK, GuiShared.get().selectionTransactionsSellTotal(), GuiShared.get().selectionShortValue(), Images.TOOL_VALUES.getIcon());\r\n\t\tcreateMenuItem(sell, jPopupMenu, sellAvg, AutoNumberFormat.ISK, GuiShared.get().selectionTransactionsSellAvg(), GuiShared.get().selectionShortAverage(), Images.ASSETS_AVERAGE.getIcon());\r\n\t\tcreateMenuItem(sell, jPopupMenu, sellTaxTotal, AutoNumberFormat.ISK, GuiShared.get().selectionTransactionsSellTax(), GuiShared.get().selectionShortTax(), Images.MISC_COLLAPSED.getIcon());\r\n\t\tvalues.addAll(sell);\r\n\t\t//Both\r\n\t\tList<MenuItemValue> both = createMenuItemGroup(jPopupMenu, GuiShared.get().selectionTitleBoth(), Images.TOOL_TRANSACTION.getIcon());\r\n\t\tcreateMenuItem(both, jPopupMenu, sellCount + buyCount, AutoNumberFormat.ITEMS, GuiShared.get().selectionTransactionsBothCount(), GuiShared.get().selectionShortCount(), Images.EDIT_ADD.getIcon());\r\n\t\tcreateMenuItem(both, jPopupMenu, bothTotal + sellTaxTotal, AutoNumberFormat.ISK, GuiShared.get().selectionTransactionsBothTotal(), GuiShared.get().selectionShortValue(), Images.TOOL_VALUES.getIcon());\r\n\t\tcreateMenuItem(both, jPopupMenu, bothAvg, AutoNumberFormat.ISK, GuiShared.get().selectionTransactionsBothAvg(), GuiShared.get().selectionShortAverage(), Images.ASSETS_AVERAGE.getIcon());\r\n\t\tvalues.addAll(both);\r\n\t\t//Buy\r\n\t\tList<MenuItemValue> buy = createMenuItemGroup(jPopupMenu, GuiShared.get().selectionTitleBuy(), Images.ORDERS_BUY.getIcon());\r\n\t\tcreateMenuItem(buy, jPopupMenu, buyCount, AutoNumberFormat.ITEMS, GuiShared.get().selectionTransactionsBuyCount(), GuiShared.get().selectionShortCount(), Images.EDIT_ADD.getIcon());\r\n\t\tcreateMenuItem(buy, jPopupMenu, buyTotal, AutoNumberFormat.ISK, GuiShared.get().selectionTransactionsBuyTotal(), GuiShared.get().selectionShortValue(), Images.TOOL_VALUES.getIcon());\r\n\t\tcreateMenuItem(buy, jPopupMenu, buyAvg, AutoNumberFormat.ISK, GuiShared.get().selectionTransactionsBuyAvg(), GuiShared.get().selectionShortAverage(), Images.ASSETS_AVERAGE.getIcon());\r\n\t\tvalues.addAll(buy);\r\n\t}\r\n\r\n\tpublic static void slots(final JPopupMenu jPopupMenu, final List<Slots> list) {\r\n\t\tList<MenuItemValue> values = createDefault(jPopupMenu);\r\n\r\n\t\tSlots total = new Slots(\"\");\r\n\t\tfor (Slots slots : list) {\r\n\t\t\tif (slots.isGrandTotal()) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\ttotal.count(slots);\r\n\t\t}\r\n\r\n\t\tList<MenuItemValue> manufacturing = createMenuItemGroup(jPopupMenu, GuiShared.get().selectionSlotsManufacturing(), Images.MISC_MANUFACTURING.getIcon());\r\n\t\tcreateMenuItem(manufacturing, jPopupMenu, total.getManufacturingDone(), AutoNumberFormat.LONG, GuiShared.get().selectionSlotsManufacturingDoneToolTip(), GuiShared.get().selectionSlotsManufacturingDone(), Images.EDIT_SET.getIcon());\r\n\t\tcreateMenuItem(manufacturing, jPopupMenu, total.getManufacturingFree(), AutoNumberFormat.LONG, GuiShared.get().selectionSlotsManufacturingFreeToolTip(), GuiShared.get().selectionSlotsManufacturingFree(), Images.EDIT_ADD.getIcon());\r\n\t\tcreateMenuItem(manufacturing, jPopupMenu, total.getManufacturingActive(), AutoNumberFormat.LONG, GuiShared.get().selectionSlotsManufacturingActiveToolTip(), GuiShared.get().selectionSlotsManufacturingActive(), Images.UPDATE_WORKING.getIcon());\r\n\t\tcreateMenuItem(manufacturing, jPopupMenu, total.getManufacturingMax(), AutoNumberFormat.LONG, GuiShared.get().selectionSlotsManufacturingMaxToolTip(), GuiShared.get().selectionSlotsManufacturingMax(), Images.UPDATE_DONE_OK.getIcon());\r\n\t\tvalues.addAll(manufacturing);\r\n\r\n\t\tList<MenuItemValue> research = createMenuItemGroup(jPopupMenu, GuiShared.get().selectionSlotsResearch(), Images.MISC_INVENTION.getIcon());\r\n\t\tcreateMenuItem(research, jPopupMenu, total.getResearchDone(), AutoNumberFormat.LONG, GuiShared.get().selectionSlotsResearchDoneToolTip(), GuiShared.get().selectionSlotsResearchDone(), Images.EDIT_SET.getIcon());\r\n\t\tcreateMenuItem(research, jPopupMenu, total.getResearchFree(), AutoNumberFormat.LONG, GuiShared.get().selectionSlotsResearchFreeToolTip(), GuiShared.get().selectionSlotsResearchFree(), Images.EDIT_ADD.getIcon());\r\n\t\tcreateMenuItem(research, jPopupMenu, total.getResearchActive(), AutoNumberFormat.LONG, GuiShared.get().selectionSlotsResearchActiveToolTip(), GuiShared.get().selectionSlotsResearchActive(), Images.UPDATE_WORKING.getIcon());\r\n\t\tcreateMenuItem(research, jPopupMenu, total.getResearchMax(), AutoNumberFormat.LONG, GuiShared.get().selectionSlotsResearchMaxToolTip(), GuiShared.get().selectionSlotsResearchMax(), Images.UPDATE_DONE_OK.getIcon());\r\n\t\tvalues.addAll(research);\r\n\r\n\t\tList<MenuItemValue> reactions = createMenuItemGroup(jPopupMenu, GuiShared.get().selectionSlotsReactions(), Images.MISC_REACTION.getIcon());\r\n\t\tcreateMenuItem(reactions, jPopupMenu, total.getReactionsDone(), AutoNumberFormat.LONG, GuiShared.get().selectionSlotsReactionsDoneToolTip(), GuiShared.get().selectionSlotsReactionsDone(), Images.EDIT_SET.getIcon());\r\n\t\tcreateMenuItem(reactions, jPopupMenu, total.getReactionsFree(), AutoNumberFormat.LONG, GuiShared.get().selectionSlotsReactionsFreeToolTip(), GuiShared.get().selectionSlotsReactionsFree(), Images.EDIT_ADD.getIcon());\r\n\t\tcreateMenuItem(reactions, jPopupMenu, total.getReactionsActive(), AutoNumberFormat.LONG, GuiShared.get().selectionSlotsReactionsActiveToolTip(), GuiShared.get().selectionSlotsReactionsActive(), Images.UPDATE_WORKING.getIcon());\r\n\t\tcreateMenuItem(reactions, jPopupMenu, total.getReactionsMax(), AutoNumberFormat.LONG, GuiShared.get().selectionSlotsReactionsMaxToolTip(), GuiShared.get().selectionSlotsReactionsMax(), Images.UPDATE_DONE_OK.getIcon());\r\n\t\tvalues.addAll(reactions);\r\n\r\n\t\tList<MenuItemValue> marketOrders = createMenuItemGroup(jPopupMenu, GuiShared.get().selectionSlotsMarketOrders(), Images.MISC_MARKET_ORDERS.getIcon());\r\n\t\tcreateMenuItem(marketOrders, jPopupMenu, total.getMarketOrdersFree(), AutoNumberFormat.LONG, GuiShared.get().selectionSlotsMarketOrdersFreeToolTip(), GuiShared.get().selectionSlotsMarketOrdersFree(), Images.EDIT_ADD.getIcon());\r\n\t\tcreateMenuItem(marketOrders, jPopupMenu, total.getMarketOrdersActive(), AutoNumberFormat.LONG, GuiShared.get().selectionSlotsMarketOrdersActiveToolTip(), GuiShared.get().selectionSlotsMarketOrdersActive(), Images.UPDATE_WORKING.getIcon());\r\n\t\tcreateMenuItem(marketOrders, jPopupMenu, total.getMarketOrdersMax(), AutoNumberFormat.LONG, GuiShared.get().selectionSlotsMarketOrdersMaxToolTip(), GuiShared.get().selectionSlotsMarketOrdersMax(), Images.UPDATE_DONE_OK.getIcon());\r\n\t\tvalues.addAll(marketOrders);\r\n\r\n\t\tList<MenuItemValue> contractCharacter = createMenuItemGroup(jPopupMenu, GuiShared.get().selectionSlotsContractCharacter(), Images.MISC_CONTRACTS.getIcon());\r\n\t\tcreateMenuItem(contractCharacter, jPopupMenu, total.getContractCharacterFree(), AutoNumberFormat.LONG, GuiShared.get().selectionSlotsContractCharacterFreeToolTip(), GuiShared.get().selectionSlotsContractCharacterFree(), Images.EDIT_ADD.getIcon());\r\n\t\tcreateMenuItem(contractCharacter, jPopupMenu, total.getContractCharacterActive(), AutoNumberFormat.LONG, GuiShared.get().selectionSlotsContractCharacterActiveToolTip(), GuiShared.get().selectionSlotsContractCharacterActive(), Images.UPDATE_WORKING.getIcon());\r\n\t\tcreateMenuItem(contractCharacter, jPopupMenu, total.getContractCharacterMax(), AutoNumberFormat.LONG, GuiShared.get().selectionSlotsContractCharacterMaxToolTip(), GuiShared.get().selectionSlotsContractCharacterMax(), Images.UPDATE_DONE_OK.getIcon());\r\n\t\tvalues.addAll(contractCharacter);\r\n\r\n\t\tList<MenuItemValue> contractCorporation = createMenuItemGroup(jPopupMenu, GuiShared.get().selectionSlotsContractCorporation(), Images.MISC_CONTRACTS_CORP.getIcon());\r\n\t\tcreateMenuItem(contractCorporation, jPopupMenu, total.getContractCorporationFree(), AutoNumberFormat.LONG, GuiShared.get().selectionSlotsContractCorporationFreeToolTip(), GuiShared.get().selectionSlotsContractCorporationFree(), Images.EDIT_ADD.getIcon());\r\n\t\tcreateMenuItem(contractCorporation, jPopupMenu, total.getContractCorporationActive(), AutoNumberFormat.LONG, GuiShared.get().selectionSlotsContractCorporationActiveToolTip(), GuiShared.get().selectionSlotsContractCorporationActive(), Images.UPDATE_WORKING.getIcon());\r\n\t\tcreateMenuItem(contractCorporation, jPopupMenu, total.getContractCorporationMax(), AutoNumberFormat.LONG, GuiShared.get().selectionSlotsContractCorporationMaxToolTip(), GuiShared.get().selectionSlotsContractCorporationMax(), Images.UPDATE_DONE_OK.getIcon());\r\n\t\tvalues.addAll(contractCorporation);\r\n\t}\r\n\r\n\tpublic static void industryJob(final JPopupMenu jPopupMenu, final List<MyIndustryJob> list) {\r\n\t\tList<MenuItemValue> values = createDefault(jPopupMenu);\r\n\r\n\t\tint inventionCount = 0;\r\n\t\tlong count = 0;\r\n\t\tdouble success = 0;\r\n\t\tdouble outputValue = 0;\r\n\t\tfor (MyIndustryJob industryJob : list) {\r\n\t\t\tcount++;\r\n\t\t\tif (industryJob.isInvention() && industryJob.isDone()) {\r\n\t\t\t\tinventionCount++;\r\n\t\t\t\tif (industryJob.isCompletedSuccessful()) {\r\n\t\t\t\t\tsuccess++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (industryJob.isNotDeliveredToAssets()) { //Only include active jobs\r\n\t\t\t\toutputValue += industryJob.getOutputValue();\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (inventionCount <= 0) {\r\n\t\t\tcreateMenuItem(values, jPopupMenu, 0.0, AutoNumberFormat.PERCENT, GuiShared.get().selectionInventionSuccess(), GuiShared.get().selectionShortInventionSuccess(), Images.JOBS_INVENTION_SUCCESS.getIcon());\r\n\t\t} else {\r\n\t\t\tcreateMenuItem(values, jPopupMenu, success / count, AutoNumberFormat.PERCENT, GuiShared.get().selectionInventionSuccess(), GuiShared.get().selectionShortInventionSuccess(), Images.JOBS_INVENTION_SUCCESS.getIcon());\r\n\t\t}\r\n\t\tcreateMenuItem(values, jPopupMenu, outputValue, AutoNumberFormat.ISK, GuiShared.get().selectionManufactureJobsValue(), GuiShared.get().selectionShortOutputValue(), Images.TOOL_VALUES.getIcon());\r\n\t\tcreateMenuItem(values, jPopupMenu, count, AutoNumberFormat.ITEMS, GuiShared.get().selectionCount(), GuiShared.get().selectionShortCount(), Images.EDIT_ADD.getIcon());\r\n\t}\r\n\r\n\tpublic static void stockpileItem(final JPopupMenu jPopupMenu, final List<StockpileItem> list) {\r\n\t\tList<MenuItemValue> values = createDefault(jPopupMenu);\r\n\r\n\t\tdouble volumnNow = 0;\r\n\t\tdouble volumnNeeded = 0;\r\n\t\tdouble valueNow = 0;\r\n\t\tdouble valueNeeded = 0;\r\n\r\n\t\tfor (int i = 0; i < list.size(); i++) {\r\n\t\t\tObject object = list.get(i);\r\n\t\t\tif (object instanceof SeparatorList.Separator) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (object instanceof StockpileTotal) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (object == null) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tStockpileItem item = (StockpileItem) object;\r\n\t\t\tvolumnNow = volumnNow + item.getVolumeNow();\r\n\t\t\tif (item.getVolumeNeeded() < 0) { //Only add if negative\r\n\t\t\t\tvolumnNeeded = volumnNeeded + item.getVolumeNeeded();\r\n\t\t\t}\r\n\t\t\tvalueNow = valueNow + item.getValueNow();\r\n\t\t\tif (item.getValueNeeded() < 0) { //Only add if negative\r\n\t\t\t\tvalueNeeded = valueNeeded + item.getValueNeeded();\r\n\t\t\t}\r\n\t\t}\r\n\t\tList<MenuItemValue> now = createMenuItemGroup(jPopupMenu, GuiShared.get().selectionTitleNow());\r\n\t\tcreateMenuItem(now, jPopupMenu, valueNow, AutoNumberFormat.ISK, GuiShared.get().selectionValueNow(), GuiShared.get().selectionShortValue(), Images.TOOL_VALUES.getIcon());\r\n\t\tcreateMenuItem(now, jPopupMenu, volumnNow, AutoNumberFormat.DOUBLE, GuiShared.get().selectionVolumeNow(), GuiShared.get().selectionShortVolume(), Images.ASSETS_VOLUME.getIcon());\r\n\t\tvalues.addAll(now);\r\n\t\tList<MenuItemValue> needed = createMenuItemGroup(jPopupMenu, GuiShared.get().selectionTitleNeeded());\r\n\t\tcreateMenuItem(needed, jPopupMenu, valueNeeded, AutoNumberFormat.ISK, GuiShared.get().selectionValueNeeded(), GuiShared.get().selectionShortValue(), Images.TOOL_VALUES.getIcon());\r\n\t\tcreateMenuItem(needed, jPopupMenu, volumnNeeded, AutoNumberFormat.DOUBLE, GuiShared.get().selectionVolumeNeeded(), GuiShared.get().selectionShortVolume(), Images.ASSETS_VOLUME.getIcon());\r\n\t\tvalues.addAll(needed);\r\n\t}\r\n\r\n\tpublic static void material(final JPopupMenu jPopupMenu, final List<Material> selected, final List<Material> all) {\r\n\t\tList<MenuItemValue> values = createDefault(jPopupMenu);\r\n\r\n\t\tMaterialTotal materialTotal = calcMaterialTotal(new ArrayList<>(selected), all);\r\n\r\n\t\tcreateMenuItem(values, jPopupMenu, materialTotal.getTotalValue(), AutoNumberFormat.ISK, GuiShared.get().selectionValue(), GuiShared.get().selectionShortValue(), Images.TOOL_VALUES.getIcon());\r\n\t\tcreateMenuItem(values, jPopupMenu, materialTotal.getAverageValue(), AutoNumberFormat.ISK, GuiShared.get().selectionAverage(), GuiShared.get().selectionShortAverage(), Images.ASSETS_AVERAGE.getIcon());\r\n\t\tcreateMenuItem(values, jPopupMenu, materialTotal.getTotalCount(), AutoNumberFormat.ITEMS, GuiShared.get().selectionCount(), GuiShared.get().selectionShortCount(), Images.EDIT_ADD.getIcon());\r\n\t}\r\n\r\n\tstatic MaterialTotal calcMaterialTotal(final List<Material> selectedList, final List<Material> all) {\r\n\t\t//Remove none-Material classes\r\n\t\tList<Material> selected = new ArrayList<>(selectedList);\r\n\t\tfor (int i = 0; i < selected.size(); i++) {\r\n\t\t\tObject object = selected.get(i);\r\n\t\t\tif (!(object instanceof Material)) {\r\n\t\t\t\tselected.remove(i);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t\tlong totalCount = 0;\r\n\t\tdouble totalValue = 0;\r\n\t\tdouble averageValue = 0;\r\n\t\tboolean add;\r\n\t\tfor (Material material : all) {\r\n\t\t\tif (material.getType() == MaterialType.LOCATIONS) {\r\n\t\t\t\tadd = false;\r\n\t\t\t\tfor (Material selectedMaterial : selected) {\r\n\t\t\t\t\t//Equals anything/all\r\n\t\t\t\t\tif (selectedMaterial.getType() == MaterialType.SUMMARY_ALL) {\r\n\t\t\t\t\t\tadd = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//Equals group\r\n\t\t\t\t\tif (selectedMaterial.getType() == MaterialType.SUMMARY_TOTAL\r\n\t\t\t\t\t\t\t&& material.getGroup().equals(selectedMaterial.getName())) {\r\n\t\t\t\t\t\tadd = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//Equals name\r\n\t\t\t\t\tif (selectedMaterial.getType() == MaterialType.SUMMARY\r\n\t\t\t\t\t\t\t&& material.getName().equals(selectedMaterial.getName())) {\r\n\t\t\t\t\t\tadd = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//Equals location\r\n\t\t\t\t\tif (selectedMaterial.getType() == MaterialType.LOCATIONS_ALL\r\n\t\t\t\t\t\t\t&& material.getHeader().equals(selectedMaterial.getHeader())) {\r\n\t\t\t\t\t\tadd = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//Equals location and group\r\n\t\t\t\t\tif (selectedMaterial.getType() == MaterialType.LOCATIONS_TOTAL\r\n\t\t\t\t\t\t\t&& material.getHeader().equals(selectedMaterial.getHeader())\r\n\t\t\t\t\t\t\t&& material.getGroup().equals(selectedMaterial.getName())) {\r\n\t\t\t\t\t\tadd = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//Equals location and name\r\n\t\t\t\t\tif (selectedMaterial.getType() == MaterialType.LOCATIONS\r\n\t\t\t\t\t\t\t&& material.getHeader().equals(selectedMaterial.getHeader())\r\n\t\t\t\t\t\t\t&& material.getName().equals(selectedMaterial.getName())) {\r\n\t\t\t\t\t\tadd = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (add) {\r\n\t\t\t\t\ttotalCount = totalCount + material.getCount();\r\n\t\t\t\t\ttotalValue = totalValue + material.getValue();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (totalCount > 0 && totalValue > 0) {\r\n\t\t\taverageValue = totalValue / totalCount;\r\n\t\t}\r\n\t\treturn new MaterialTotal(totalCount, totalValue, averageValue);\r\n\t}\r\n\r\n\tpublic static void module(final JPopupMenu jPopupMenu, final List<Loadout> selected) {\r\n\t\tList<MenuItemValue> values = createDefault(jPopupMenu);\r\n\r\n\t\tlong totalCount = 0;\r\n\t\tdouble totalValue = 0;\r\n\t\tdouble averageValue = 0;\r\n\t\tLoadout totalShip = null;\r\n\t\tLoadout totalModule = null;\r\n\t\tLoadout totalAll = null;\r\n\t\tfor (int i = 0; i < selected.size(); i++) {\r\n\t\t\tObject object = selected.get(i);\r\n\t\t\tif (object instanceof Loadout) {\r\n\t\t\t\tLoadout module = (Loadout) object;\r\n\t\t\t\tif (module.getName().equals(TabsLoadout.get().totalShip())) {\r\n\t\t\t\t\ttotalShip = module;\r\n\t\t\t\t} else if (module.getName().equals(TabsLoadout.get().totalModules())) {\r\n\t\t\t\t\ttotalModule = module;\r\n\t\t\t\t} else if (module.getName().equals(TabsLoadout.get().totalAll())) {\r\n\t\t\t\t\ttotalAll = module;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttotalCount = totalCount + module.getCount();\r\n\t\t\t\t\ttotalValue = totalValue + module.getValue();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (totalAll != null) { //All\r\n\t\t\ttotalValue = totalAll.getValue();\r\n\t\t\ttotalCount = totalAll.getCount();\r\n\t\t} else {\r\n\t\t\tif (totalModule != null) { //Module IS total\r\n\t\t\t\ttotalValue = totalModule.getValue();\r\n\t\t\t\ttotalCount = totalModule.getCount();\r\n\t\t\t}\r\n\t\t\tif (totalShip != null) { //Ship is added to total\r\n\t\t\t\ttotalValue = totalValue + totalShip.getValue();\r\n\t\t\t\ttotalCount = totalCount + totalShip.getCount();\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (totalCount > 0 && totalValue > 0) {\r\n\t\t\taverageValue = totalValue / totalCount;\r\n\t\t}\r\n\t\tcreateMenuItem(values, jPopupMenu, totalValue, AutoNumberFormat.ISK, GuiShared.get().selectionValue(), GuiShared.get().selectionShortValue(), Images.TOOL_VALUES.getIcon());\r\n\t\tcreateMenuItem(values, jPopupMenu, averageValue, AutoNumberFormat.ISK, GuiShared.get().selectionAverage(), GuiShared.get().selectionShortAverage(), Images.ASSETS_AVERAGE.getIcon());\r\n\t\tcreateMenuItem(values, jPopupMenu, totalCount, AutoNumberFormat.ISK, GuiShared.get().selectionCount(), GuiShared.get().selectionShortCount(), Images.EDIT_ADD.getIcon());\r\n\t}\r\n\r\n\tpublic static JMenuItem createMenuItem(List<MenuItemValue> values, final JPopupMenu jPopupMenu, final Number number, AutoNumberFormat numberFormat, final String toolTip, String copyText, final Icon icon) {\r\n\t\treturn createMenuItem(values, jPopupMenu, null, number, numberFormat, toolTip, copyText, icon);\r\n\t}\r\n\r\n\tpublic static JMenuItem createMenuItem(List<MenuItemValue> values, final JPopupMenu jPopupMenu, final String text, final String toolTip, String copyText, final Icon icon) {\r\n\t\treturn createMenuItem(values, jPopupMenu, text, null, null, toolTip, copyText, icon);\r\n\t}\r\n\r\n\tprivate static JMenuItem createMenuItem(List<MenuItemValue> values, final JPopupMenu jPopupMenu, final String text, final Number number, AutoNumberFormat numberFormat, final String toolTip, String copyText, final Icon icon) {\r\n\t\tif (values != null) {\r\n\t\t\tvalues.add(new MenuItemValue(copyText, text, number));\r\n\t\t}\r\n\t\tJMenuItem jMenuItem;\r\n\t\tif (text == null) { //Numeric Value\r\n\t\t\tjMenuItem = new JMenuItem(format(number, numberFormat));\r\n\t\t} else { //Text value\r\n\t\t\tjMenuItem = new JMenuItem(text);\r\n\t\t}\r\n\t\tjMenuItem.setToolTipText(GuiShared.get().clickToCopyWrap(toolTip));\r\n\t\tjMenuItem.setEnabled(false);\r\n\t\tjMenuItem.setDisabledIcon(icon);\r\n\t\tjMenuItem.setForeground(Color.BLACK);\r\n\t\tjMenuItem.setHorizontalAlignment(SwingConstants.RIGHT);\r\n\t\tif (jPopupMenu != null) {\r\n\t\t\tjPopupMenu.add(jMenuItem);\r\n\t\t}\r\n\t\tjMenuItem.addMouseListener(new MouseAdapter() {\r\n\t\t\t@Override\r\n\t\t\tpublic void mousePressed(MouseEvent e) {\r\n\t\t\t\tif (e.getButton() == MouseEvent.BUTTON1) {\r\n\t\t\t\t\tif (number != null) {\r\n\t\t\t\t\t\tCopyHandler.toClipboard(Formatter.copyFormat(number));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tCopyHandler.toClipboard(text);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tjMenuItem.setText(GuiShared.get().selectionCopiedToClipboard());\r\n\t\t\t\t\tjMenuItem.setDisabledIcon(Images.EDIT_COPY.getIcon());\r\n\t\t\t\t\tfinal Timer timer = new Timer(COPY_DELAY, null);\r\n\t\t\t\t\ttimer.addActionListener(new ActionListener() {\r\n\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\t\t\t\tif (text == null) {\r\n\t\t\t\t\t\t\t\tjMenuItem.setText(format(number, numberFormat));\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tjMenuItem.setText(text);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tjMenuItem.setDisabledIcon(icon);\r\n\t\t\t\t\t\t\ttimer.stop();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\ttimer.start();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn jMenuItem;\r\n\t}\r\n\r\n\tprivate static List<MenuItemValue> createMenuItemGroup(final JPopupMenu jPopupMenu, final String text) {\r\n\t\treturn createMenuItemGroup(jPopupMenu, text, null);\r\n\t}\r\n\r\n\tprivate static List<MenuItemValue> createMenuItemGroup(final JPopupMenu jPopupMenu, final String text, final Icon icon) {\r\n\t\tList<MenuItemValue> values = new ArrayList<>();\r\n\t\tJMenuItem jMenuItem = new JMenuItem(text);\r\n\t\tjMenuItem.setToolTipText(GuiShared.get().clickToCopyGroup());\r\n\t\tif (icon != null) {\r\n\t\t\tjMenuItem.setDisabledIcon(icon);\r\n\t\t}\r\n\t\tvalues.add(new MenuItemValue(null, GuiShared.get().selectionShortGroup(text), null));\r\n\t\tjMenuItem.setEnabled(false);\r\n\t\tif (border == null) {\r\n\t\t\tborder = BorderFactory.createCompoundBorder(\r\n\t\t\t\t\tBorderFactory.createCompoundBorder(\r\n\t\t\t\t\t\t\tBorderFactory.createMatteBorder(1, 0, 0, 0, jMenuItem.getBackground().darker()),\r\n\t\t\t\t\t\t\t BorderFactory.createMatteBorder(1, 0, 0, 0, jMenuItem.getBackground().brighter())),\r\n\t\t\t\t\t BorderFactory.createCompoundBorder(\r\n\t\t\t\t\t\t\tBorderFactory.createMatteBorder(0, 0, 1, 0, jMenuItem.getBackground().brighter()),\r\n\t\t\t\t\t\t\t BorderFactory.createMatteBorder(0, 0, 1, 0, jMenuItem.getBackground().darker())));\r\n\t\t}\r\n\t\tjMenuItem.setForeground(Color.BLACK);\r\n\t\tjMenuItem.setBorder(border);\r\n\t\tjMenuItem.setBorderPainted(true);\r\n\t\tjMenuItem.addMouseListener(new MouseAdapter() {\r\n\t\t\t@Override\r\n\t\t\tpublic void mousePressed(MouseEvent e) {\r\n\t\t\t\tif (e.getButton() == MouseEvent.BUTTON1) {\r\n\t\t\t\t\tCopyHandler.toClipboard(format(values));\r\n\t\t\t\t\tjMenuItem.setText(GuiShared.get().selectionCopiedToClipboard());\r\n\t\t\t\t\tjMenuItem.setDisabledIcon(Images.EDIT_COPY.getIcon());\r\n\t\t\t\t\tfinal Timer timer = new Timer(COPY_DELAY, null);\r\n\t\t\t\t\ttimer.addActionListener(new ActionListener() {\r\n\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\t\t\t\tjMenuItem.setText(text);\r\n\t\t\t\t\t\t\tjMenuItem.setDisabledIcon(icon);\r\n\t\t\t\t\t\t\ttimer.stop();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\ttimer.start();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tjPopupMenu.add(jMenuItem);\r\n\t\treturn values;\r\n\t}\r\n\r\n\r\n\tpublic static List<MenuItemValue> createDefault(final JPopupMenu jPopupMenu) {\r\n\t\treturn createDefault(jPopupMenu, new JMenuItem(), GuiShared.get().selectionTitle(), GuiShared.get().clickToCopySelectionInfo(), Images.DIALOG_ABOUT.getIcon());\r\n\t}\r\n\r\n\tpublic static List<MenuItemValue> createDefault(final JPopupMenu jPopupMenu, final JMenuItem jMenuItem, String title, String toolTip, Icon icon) {\r\n\t\tfinal List<MenuItemValue> values = new ArrayList<>();\r\n\t\tvalues.add(new MenuItemValue(null, title, null));\r\n\r\n\t\tif (jPopupMenu != null) {\r\n\t\t\tjPopupMenu.addSeparator();\r\n\t\t}\r\n\r\n\t\tjMenuItem.setText(title);\r\n\t\tjMenuItem.setToolTipText(toolTip);\r\n\t\tjMenuItem.setDisabledIcon(icon);\r\n\t\tjMenuItem.setEnabled(false);\r\n\t\tjMenuItem.setForeground(Color.BLACK);\r\n\t\tjMenuItem.addMouseListener(new MouseAdapter() {\r\n\t\t\t@Override\r\n\t\t\tpublic void mousePressed(MouseEvent e) {\r\n\t\t\t\tif (e.getButton() == MouseEvent.BUTTON1) {\r\n\t\t\t\t\tCopyHandler.toClipboard(format(values));\r\n\t\t\t\t\tjMenuItem.setText(GuiShared.get().selectionCopiedToClipboard());\r\n\t\t\t\t\tjMenuItem.setDisabledIcon(Images.EDIT_COPY.getIcon());\r\n\t\t\t\t\tfinal Timer timer = new Timer(COPY_DELAY, null);\r\n\t\t\t\t\ttimer.addActionListener(new ActionListener() {\r\n\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\t\t\t\tjMenuItem.setText(GuiShared.get().selectionTitle());\r\n\t\t\t\t\t\t\tjMenuItem.setDisabledIcon(Images.DIALOG_ABOUT.getIcon());\r\n\t\t\t\t\t\t\ttimer.stop();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\ttimer.start();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (jPopupMenu != null) {\r\n\t\t\tjPopupMenu.add(jMenuItem);\r\n\r\n\t\t\tJPanel jSpacePanel = new JPanel();\r\n\t\t\tjSpacePanel.setOpaque(false);\r\n\t\t\tjSpacePanel.setMinimumSize(new Dimension(50, 5));\r\n\t\t\tjSpacePanel.setPreferredSize(new Dimension(50, 5));\r\n\t\t\tjSpacePanel.setMaximumSize(new Dimension(50, 5));\r\n\t\t\tjPopupMenu.add(jSpacePanel);\r\n\t\t}\r\n\t\treturn values;\r\n\t}\r\n\r\n\tpublic static String format(final Number number, AutoNumberFormat numberFormat) {\r\n\t\tswitch(numberFormat) {\r\n\t\t\tcase ISK: return Formatter.iskFormat(number);\r\n\t\t\tcase DOUBLE: return Formatter.doubleFormat(number);\r\n\t\t\tcase ITEMS: return Formatter.itemsFormat(number);\r\n\t\t\tcase PERCENT: return Formatter.percentFormat(number);\r\n\t\t\tcase LONG: return Formatter.longFormat(number);\r\n\t\t\tdefault: return String.valueOf(number);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static String format(final List<MenuItemValue> values) {\r\n\t\tStringBuilder builder = new StringBuilder();\r\n\t\tfor (MenuItemValue item : values) {\r\n\t\t\tif (item.type != null) {\r\n\t\t\t\tbuilder.append(item.type);\r\n\t\t\t\tbuilder.append(\": \");\r\n\t\t\t}\r\n\t\t\tif (item.number != null) {\r\n\t\t\t\tbuilder.append(Formatter.copyFormat(item.number));\r\n\t\t\t\tbuilder.append(\"\\r\\n\");\r\n\t\t\t} else if (item.text != null) {\r\n\t\t\t\tbuilder.append(item.text);\r\n\t\t\t\tbuilder.append(\"\\r\\n\");\r\n\t\t\t} else {\r\n\t\t\t\tbuilder.append(\"\\r\\n\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn builder.toString();\r\n\t}\r\n\r\n\tpublic static class MaterialTotal {\r\n\r\n\t\tprivate final long totalCount;\r\n\t\tprivate final double totalValue;\r\n\t\tprivate final double averageValue;\r\n\r\n\t\tpublic MaterialTotal(final long totalCount, final double totalValue, final double averageValue) {\r\n\t\t\tthis.totalCount = totalCount;\r\n\t\t\tthis.totalValue = totalValue;\r\n\t\t\tthis.averageValue = averageValue;\r\n\t\t}\r\n\r\n\t\tpublic double getAverageValue() {\r\n\t\t\treturn averageValue;\r\n\t\t}\r\n\r\n\t\tpublic long getTotalCount() {\r\n\t\t\treturn totalCount;\r\n\t\t}\r\n\r\n\t\tpublic double getTotalValue() {\r\n\t\t\treturn totalValue;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static class MenuItemValue {\r\n\t\tprivate final String type;\r\n\t\tprivate final String text;\r\n\t\tprivate final Number number;\r\n\r\n\t\tpublic MenuItemValue(String type, String text, Number number) {\r\n\t\t\tthis.type = type;\r\n\t\t\tthis.text = text;\r\n\t\t\tthis.number = number;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tpublic enum AutoNumberFormat {\r\n\t\tISK, DOUBLE, ITEMS, PERCENT, LONG\r\n\t}\r\n\r\n\tpublic interface InfoItem {\r\n\r\n\t\tdouble getValue();\r\n\r\n\t\tlong getCount();\r\n\r\n\t\tdouble getVolumeTotal();\r\n\r\n\t\tdouble getValueReprocessed();\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/menu/JMenuJumps.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.menu;\n\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Set;\nimport javax.swing.JMenuItem;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.data.sde.RouteFinder;\nimport net.nikr.eve.jeveasset.data.sde.RouteFinder.RouteFinderFilter;\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.MenuScroller;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuJumps.Jump;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.JAutoMenu;\nimport net.nikr.eve.jeveasset.gui.shared.table.ColumnManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.gui.tabs.routing.SolarSystem;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\n\n\npublic class JMenuJumps<T extends Enum<T> & EnumTableColumn<Q>, Q> extends JAutoMenu<Q> {\n\n\tprivate enum MenuJumpsAction {\n\t\tADD_SELECTED, ADD_OTHER, CLEAR, SETTINGS\n\t}\n\n\tprivate final JMenuItem jAddOther;\n\tprivate final JMenuItem jAddSelected;\n\tprivate final JMenuItem jSettings;\n\tprivate final JMenuItem jClear;\n\tprivate final ColumnManager<T, Q> columnManager;\n\n\tpublic JMenuJumps(Program program, ColumnManager<T, Q> columnManager) {\n\t\tsuper(GuiShared.get().jumps(), program);\n\t\tthis.columnManager = columnManager;\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tthis.setIcon(Images.TOOL_ROUTING.getIcon());\n\n\t\tMenuScroller menuScroller = new MenuScroller(this);\n\t\tmenuScroller.keepVisible(4);\n\t\tmenuScroller.setTopFixedCount(4);\n\t\tmenuScroller.setInterval(125);\n\n\t\tjAddOther = new JMenuItem(GuiShared.get().jumpsAddCustom());\n\t\tjAddOther.setIcon(Images.EDIT_SET.getIcon());\n\t\tjAddOther.setActionCommand(MenuJumpsAction.ADD_OTHER.name());\n\t\tjAddOther.addActionListener(listener);\n\n\t\tjAddSelected = new JMenuItem(GuiShared.get().jumpsAddSelected());\n\t\tjAddSelected.setIcon(Images.EDIT_ADD.getIcon());\n\t\tjAddSelected.setActionCommand(MenuJumpsAction.ADD_SELECTED.name());\n\t\tjAddSelected.addActionListener(listener);\n\n\t\tjSettings = new JMenuItem(GuiShared.get().jumpsSettings());\n\t\tjSettings.setIcon(Images.DIALOG_SETTINGS.getIcon());\n\t\tjSettings.setActionCommand(MenuJumpsAction.SETTINGS.name());\n\t\tjSettings.addActionListener(listener);\n\n\t\tjClear = new JMenuItem(GuiShared.get().jumpsClear());\n\t\tjClear.setIcon(Images.EDIT_DELETE.getIcon());\n\t\tjClear.setActionCommand(MenuJumpsAction.CLEAR.name());\n\t\tjClear.addActionListener(listener);\n\t}\n\n\t@Override\n\tpublic void updateMenuData() {\n\t\tremoveAll();\n\n\t\tadd(jAddSelected);\n\t\tjAddSelected.setEnabled(!menuData.getSystemLocations().isEmpty());\n\n\t\tadd(jAddOther);\n\n\t\taddSeparator();\n\n\t\tadd(jSettings);\n\n\t\taddSeparator();\n\n\t\tadd(jClear);\n\n\t\tSet<Jump> locations = columnManager.getJumps();\n\n\t\tjClear.setEnabled(!locations.isEmpty());\n\n\t\tif (!locations.isEmpty()) {\n\t\t\taddSeparator();\n\t\t}\n\n\t\tfor (final Jump jump : locations) {\n\t\t\t//Add to menu\n\t\t\tfinal JMenuItem jMenuItem = new JMenuItem(jump.getName()); //FIXME !Jumps i18n - Clear System\n\t\t\tjMenuItem.setIcon(Images.EDIT_DELETE.getIcon());\n\t\t\tjMenuItem.addActionListener(new ActionListener() {\n\t\t\t\t@Override\n\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\t//Remove from settings\n\t\t\t\t\tcolumnManager.removeColumn(jump);\n\t\t\t\t}\n\t\t\t});\n\t\t\tadd(jMenuItem);\n\t\t}\n\t}\n\n\tprivate class ListenerClass implements ActionListener {\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (MenuJumpsAction.ADD_SELECTED.name().equals(e.getActionCommand())) {\n\t\t\t\tcolumnManager.addColumns(menuData.getSystemLocations());\n\t\t\t} else if (MenuJumpsAction.CLEAR.name().equals(e.getActionCommand())) {\n\t\t\t\tcolumnManager.clearJumpColumns();\n\t\t\t} else if (MenuJumpsAction.ADD_OTHER.name().equals(e.getActionCommand())) {\n\t\t\t\t//Clear tab\n\t\t\t\tSolarSystem solarSystem = program.getRoutingTab(true).getSolarSystem();\n\t\t\t\tif (solarSystem != null) {\n\t\t\t\t\tMyLocation location = StaticData.get().getLocation(solarSystem.getSystemID());\n\t\t\t\t\tif (location != null) {\n\t\t\t\t\t\tcolumnManager.addColumn(new Jump(location));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (MenuJumpsAction.SETTINGS.name().equals(e.getActionCommand())) {\n\t\t\t\tprogram.showJumpsSettingsPanel();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class Jump {\n\t\tprivate final MyLocation from;\n\t\tprivate final Map<Object, Integer> jumps = new HashMap<>();\n\t\tprivate Integer index;\n\n\t\tpublic Jump(MyLocation from) {\n\t\t\tthis(from, null);\n\t\t}\n\n\t\tpublic Jump(MyLocation from, Integer index) {\n\t\t\tthis.from = from;\n\t\t\tthis.index = index;\n\t\t}\n\n\t\tpublic String getName() {\n\t\t\treturn from.getSystem();\n\t\t}\n\n\t\tpublic long getSystemID() {\n\t\t\treturn from.getSystemID();\n\t\t}\n\n\t\tpublic Integer addJump(LocationType locationType) {\n\t\t\tMyLocation location = locationType.getLocation();\n\t\t\tif (location == null) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tlong systemID = location.getSystemID();\n\t\t\tif (systemID <= 0) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tInteger distanceBetween = RouteFinder.get().distanceBetween(RouteFinderFilter.JUMPS, getSystemID(), systemID);\n\t\t\tjumps.put(locationType, distanceBetween);\n\t\t\treturn distanceBetween;\n\t\t}\n\n\t\tpublic Integer getJumps(Object object) {\n\t\t\tInteger count = jumps.get(object);\n\t\t\tif (count != null) {\n\t\t\t\treturn count;\n\t\t\t} if (object instanceof LocationType) {\n\t\t\t\treturn addJump((LocationType) object);\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tpublic Integer getIndex() {\n\t\t\treturn index;\n\t\t}\n\n\t\tpublic void setIndex(Integer index) {\n\t\t\tthis.index = index;\n\t\t}\n\n\t\t@Override\n\t\tpublic int hashCode() {\n\t\t\tint hash = 7;\n\t\t\thash = 89 * hash + (int) (this.from.getSystemID() ^ (this.from.getSystemID() >>> 32));\n\t\t\treturn hash;\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean equals(Object obj) {\n\t\t\tif (this == obj) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (obj == null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (getClass() != obj.getClass()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfinal Jump other = (Jump) obj;\n\t\t\tif (this.from.getSystemID() != other.from.getSystemID()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/menu/JMenuLoadout.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.menu;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport javax.swing.JMenuItem;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JSelectionDialog;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.JAutoMenu;\r\nimport net.nikr.eve.jeveasset.gui.tabs.loadout.LoadoutsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.tree.TreeAsset;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\npublic class JMenuLoadout<T> extends JAutoMenu<T> {\r\n\r\n\tprivate enum MenuLoadoutAction {\r\n\t\tOPEN\r\n\t}\r\n\r\n\tprivate List<MyAsset> ships;\r\n\r\n\tprivate final JMenuItem jOpen;\r\n\tprivate final JSelectionDialog<MyAsset> jShipDialog;\r\n\r\n\tpublic JMenuLoadout(final Program program) {\r\n\t\tsuper(GuiShared.get().loadout(), program);\r\n\t\tsetIcon(Images.TOOL_SHIP_LOADOUTS.getIcon());\r\n\r\n\t\tListenerClass listener = new ListenerClass();\r\n\r\n\t\tjShipDialog = new JSelectionDialog<>(program);\r\n\r\n\t\tjOpen = new JMenuItem(GuiShared.get().loadoutOpen());\r\n\t\t//jOpen.setIcon(Images.LOC_SHIP.getIcon());\r\n\t\tjOpen.setIcon(Images.EDIT_SET.getIcon());\r\n\t\tjOpen.setActionCommand(MenuLoadoutAction.OPEN.name());\r\n\t\tjOpen.addActionListener(listener);\r\n\t\tadd(jOpen);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void updateMenuData() {\r\n\t\tships = new ArrayList<>();\r\n\t\tfor (MyAsset asset : menuData.getAssets()) {\r\n\t\t\tif (asset == null) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\t//Add Tree sub assets\r\n\t\t\tif (asset instanceof TreeAsset) {\r\n\t\t\t\tfor (TreeAsset treeAsset : ((TreeAsset) asset).getItems()) {\r\n\t\t\t\t\tif (!treeAsset.getItem().isShip() || !treeAsset.isSingleton() || !treeAsset.isItem()) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tships.add(treeAsset);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Add\r\n\t\t\tif (!asset.getItem().isShip() || !asset.isSingleton()) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tships.add(asset);\r\n\t\t}\r\n\t\tjOpen.setEnabled(!ships.isEmpty());\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener {\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\tif (MenuLoadoutAction.OPEN.name().equals(e.getActionCommand())) {\r\n\t\t\t\tMyAsset ship = null;\r\n\t\t\t\tif (ships.size() > 1) {\r\n\t\t\t\t\tship = jShipDialog.show(GuiShared.get().loadoutSelectShip(), ships);\r\n\t\t\t\t} else if (!ships.isEmpty()) {\r\n\t\t\t\t\tship = ships.get(0);\r\n\t\t\t\t}\r\n\t\t\t\tif (ship == null) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tLoadoutsTab loadoutsTab = program.getLoadoutsTab(true);\r\n\t\t\t\tprogram.getMainWindow().addTab(loadoutsTab, true);\r\n\t\t\t\tloadoutsTab.selectShip(ship);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/menu/JMenuLocation.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.menu;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.util.Collections;\r\nimport java.util.HashSet;\r\nimport java.util.Set;\r\nimport javax.swing.JMenuItem;\r\nimport javax.swing.JOptionPane;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.settings.Citadel;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.StructureUpdateDialog;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JSelectionDialog;\r\nimport net.nikr.eve.jeveasset.i18n.GuiFrame;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\nimport net.nikr.eve.jeveasset.io.online.CitadelGetter;\r\n\r\n\r\npublic class JMenuLocation<T> extends MenuManager.JAutoMenu<T> {\r\n\r\n\tprivate enum MenuLocationAction {\r\n\t\tEDIT,\r\n\t\tCLEAR,\r\n\t\tUPDATE\r\n\t}\r\n\r\n\tprivate final JMenuItem jUpdate;\r\n\tprivate final JMenuItem jEdit;\r\n\tprivate final JMenuItem jReset;\r\n\tprivate final JSelectionDialog<MyLocation> jLocationDialog;\r\n\r\n\tpublic JMenuLocation(final Program program) {\r\n\t\tsuper((GuiShared.get().location()), program);\r\n\t\tsetIcon(Images.LOC_LOCATIONS.getIcon());\r\n\r\n\t\tListenerClass listener = new ListenerClass();\r\n\r\n\t\tjLocationDialog = new JSelectionDialog<MyLocation>(program);\r\n\r\n\t\tjEdit = new JMenuItem(GuiShared.get().itemEdit());\r\n\t\tjEdit.setIcon(Images.EDIT_EDIT.getIcon());\r\n\t\tjEdit.setActionCommand(MenuLocationAction.EDIT.name());\r\n\t\tjEdit.addActionListener(listener);\r\n\t\tadd(jEdit);\r\n\r\n\t\taddSeparator();\r\n\r\n\t\tjUpdate = new JMenuItem(GuiShared.get().updateStructures());\r\n\t\tjUpdate.setIcon(Images.DIALOG_UPDATE.getIcon());\r\n\t\tjUpdate.setActionCommand(MenuLocationAction.UPDATE.name());\r\n\t\tjUpdate.addActionListener(listener);\r\n\t\tadd(jUpdate);\r\n\r\n\t\taddSeparator();\r\n\r\n\t\tjReset = new JMenuItem(GuiShared.get().itemDelete());\r\n\t\tjReset.setIcon(Images.EDIT_DELETE.getIcon());\r\n\t\tjReset.setActionCommand(MenuLocationAction.CLEAR.name());\r\n\t\tjReset.addActionListener(listener);\r\n\t\tadd(jReset);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void updateMenuData() {\r\n\t\tjEdit.setEnabled(!menuData.getEditableCitadelLocations().isEmpty());\r\n\t\tjUpdate.setEnabled(!menuData.getEditableCitadelLocations().isEmpty());\r\n\t\tif (StructureUpdateDialog.structuresUpdatable(program)) {\r\n\t\t\tjUpdate.setIcon(Images.DIALOG_UPDATE.getIcon());\r\n\t\t\tjUpdate.setToolTipText(GuiFrame.get().updatable());\r\n\t\t} else {\r\n\t\t\tjUpdate.setIcon(Images.DIALOG_UPDATE_DISABLED.getIcon());\r\n\t\t\tjUpdate.setToolTipText(GuiFrame.get().not());\r\n\t\t}\r\n\t\tjReset.setEnabled(!menuData.getUserLocations().isEmpty());\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener {\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\tif (MenuLocationAction.CLEAR.name().equals(e.getActionCommand())) {\r\n\t\t\t\tif (menuData.getUserLocations().size() == 1) { //Single\r\n\t\t\t\t\tMyLocation location = menuData.getUserLocations().iterator().next();\r\n\t\t\t\t\tLong locationID = program.getUserLocationSettingsPanel().deleteLocation(location);\r\n\t\t\t\t\tif (locationID != null) {\r\n\t\t\t\t\t\tCitadelGetter.remove(locationID);\r\n\t\t\t\t\t\tprogram.updateLocations(Collections.singleton(location.getLocationID()));\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tint value = JOptionPane.showConfirmDialog(program.getMainWindow().getFrame(), GuiShared.get().locationClearConfirmAll(menuData.getUserLocations().size()), GuiShared.get().locationClear(), JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);\r\n\t\t\t\t\tif (value == JOptionPane.OK_OPTION) { //All\r\n\t\t\t\t\t\tSet<Long> locationIDs = new HashSet<>();\r\n\t\t\t\t\t\tfor (MyLocation location : menuData.getUserLocations()) {\r\n\t\t\t\t\t\t\tlocationIDs.add(location.getLocationID());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tCitadelGetter.remove(locationIDs);\r\n\t\t\t\t\t\tprogram.updateLocations(locationIDs);\r\n\t\t\t\t\t} else { //Single\r\n\t\t\t\t\t\tMyLocation location = jLocationDialog.show(GuiShared.get().locationID(), menuData.getUserLocations());\r\n\t\t\t\t\t\tLong locationID = program.getUserLocationSettingsPanel().deleteLocation(location);\r\n\t\t\t\t\t\tif (locationID != null) {\r\n\t\t\t\t\t\t\tCitadelGetter.remove(locationID);\r\n\t\t\t\t\t\t\tprogram.updateLocations(Collections.singleton(location.getLocationID()));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (MenuLocationAction.EDIT.name().equals(e.getActionCommand())) {\r\n\t\t\t\tMyLocation renameLocation = jLocationDialog.show(GuiShared.get().locationID(), menuData.getEditableCitadelLocations());\r\n\t\t\t\tCitadel citadel = program.getUserLocationSettingsPanel().editLocation(renameLocation);\r\n\t\t\t\tif (citadel != null) {\r\n\t\t\t\t\tCitadelGetter.set(citadel);\r\n\t\t\t\t\tprogram.updateLocations(Collections.singleton(renameLocation.getLocationID()));\r\n\t\t\t\t}\r\n\t\t\t} else if (MenuLocationAction.UPDATE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tprogram.updateStructures(menuData.getEditableCitadelLocations(), true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/menu/JMenuLookup.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.menu;\n\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.util.Collections;\nimport java.util.EnumMap;\nimport java.util.HashSet;\nimport java.util.Map;\nimport java.util.Set;\nimport javax.swing.Icon;\nimport javax.swing.JMenu;\nimport javax.swing.JMenuItem;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.JAutoMenu;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewGroup;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewLocation;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewTab;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewTab.OverviewTableMenu;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\nimport net.nikr.eve.jeveasset.i18n.TabsOverview;\nimport net.nikr.eve.jeveasset.io.shared.DesktopUtil;\n\n\npublic class JMenuLookup<T> extends JAutoMenu<T> {\n\n\tpublic static enum LookupLinks {\n\t//Locations\n\t\tZKILLBOARD_SYSTEM(GuiShared.get().system(), Images.LOC_SYSTEM.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (MyLocation location : menuData.getSystemLocations()) {\n\t\t\t\t\turls.add(\"https://zkillboard.com/system/\" +location.getLocationID() + \"/\");\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getSystemLocations().isEmpty();\n\t\t\t}\n\t\t},\n\t\tZKILLBOARD_CONSTELLATION(GuiShared.get().constellation(), Images.LOC_CONSTELLATION.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (MyLocation location : menuData.getConstellationLocations()) {\n\t\t\t\t\turls.add(\"https://zkillboard.com/constellation/\" +location.getLocationID() + \"/\");\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getConstellationLocations().isEmpty();\n\t\t\t}\n\t\t},\n\t\tZKILLBOARD_REGION(GuiShared.get().region(), Images.LOC_REGION.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (MyLocation location : menuData.getRegionLocations()) {\n\t\t\t\t\turls.add(\"https://zkillboard.com/region/\" +location.getLocationID() + \"/\");\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getRegionLocations().isEmpty();\n\t\t\t}\n\t\t},\n\t\tZKILLBOARD_OVERVIEW_GROUP(TabsOverview.get().locations(), Images.LOC_REGION.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\treturn Collections.emptySet();\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void open(Program program, MenuData<?> menuData) {\n\t\t\t\tOverviewGroup overviewGroup = program.getOverviewTab(true).getSelectGroup();\n\t\t\t\tif (overviewGroup == null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tMenuData<String> data = new MenuData<>();\n\t\t\t\tfor (OverviewLocation location : overviewGroup.getLocations()) {\n\t\t\t\t\tif (location.isStation()) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tif (location.isPlanet()) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tfor (MyLocation myLocation : StaticData.get().getLocations()) {\n\t\t\t\t\t\tif (!myLocation.getLocation().equals(location.getName())) {\n\t\t\t\t\t\t\tcontinue; //Not the location you're looking for\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (location.isSystem()) {\n\t\t\t\t\t\t\tdata.getSystemLocations().add(myLocation);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (location.isConstellation()) {\n\t\t\t\t\t\t\tdata.getConstellationLocations().add(myLocation);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (location.isRegion()) {\n\t\t\t\t\t\t\tdata.getRegionLocations().add(myLocation);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak; //Location found\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\turls.addAll(LookupLinks.ZKILLBOARD_SYSTEM.getLinks(data));\n\t\t\t\turls.addAll(LookupLinks.ZKILLBOARD_CONSTELLATION.getLinks(data));\n\t\t\t\turls.addAll(LookupLinks.ZKILLBOARD_REGION.getLinks(data));\n\t\t\t\tDesktopUtil.browse(urls, program);\n\t\t\t}\n\t\t},\n\t\tEVEMAPS_DOTLAN_STATION(GuiShared.get().station(), Images.LOC_STATION.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (String station : menuData.getStationNames()) {\n\t\t\t\t\turls.add(\"https://evemaps.dotlan.net/station/\" + station.replace(\" \", \"_\"));\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getStationNames().isEmpty();\n\t\t\t}\n\t\t},\n\t\tEVEMAPS_DOTLAN_PLANET(GuiShared.get().planet(), Images.LOC_PLANET.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (String planet : menuData.getPlanetNames()) {\n\t\t\t\t\turls.add(\"https://evemaps.dotlan.net/system/\" + replaceLast(planet, \" \", \"/\").replace(\" \", \"_\"));\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getPlanetNames().isEmpty();\n\t\t\t}\n\t\t},\n\t\tEVEMAPS_DOTLAN_SYSTEM(GuiShared.get().system(), Images.LOC_SYSTEM.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (String system : menuData.getSystemNames()) {\n\t\t\t\t\turls.add(\"https://evemaps.dotlan.net/system/\" + system.replace(\" \", \"_\"));\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getSystemNames().isEmpty();\n\t\t\t}\n\t\t},\n\t\tEVEMAPS_DOTLAN_SYSTEM_REGION(GuiShared.get().systemRegion(), Images.LOC_SYSTEM.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (MyLocation system : menuData.getSystemLocations()) {\n\t\t\t\t\turls.add(\"https://evemaps.dotlan.net/map/\" + system.getRegion().replace(\" \", \"_\")+ \"/\" + system.getSystem().replace(\" \", \"_\"));\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getSystemLocations().isEmpty();\n\t\t\t}\n\t\t},\n\t\tEVEMAPS_DOTLAN_CONSTELLATION(GuiShared.get().constellation(), Images.LOC_CONSTELLATION.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (MyLocation constellation : menuData.getConstellationLocations()) {\n\t\t\t\t\turls.add(\"https://evemaps.dotlan.net/map/\" + constellation.getRegion().replace(\" \", \"_\") + \"/\" + constellation.getConstellation().replace(\" \", \"_\"));\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getConstellationLocations().isEmpty();\n\t\t\t}\n\t\t},\n\t\tEVEMAPS_DOTLAN_REGION(GuiShared.get().region(), Images.LOC_REGION.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (String region : menuData.getRegionNames()) {\n\t\t\t\t\turls.add(\"https://evemaps.dotlan.net/map/\" + region.replace(\" \", \"_\"));\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getRegionNames().isEmpty();\n\t\t\t}\n\t\t},\n\t\tEVEMAPS_DOTLAN_OVERVIEW_GROUP(TabsOverview.get().locations(), Images.LOC_LOCATIONS.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\treturn Collections.emptySet();\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void open(Program program, MenuData<?> menuData) {\n\t\t\t\tOverviewGroup overviewGroup = program.getOverviewTab(true).getSelectGroup();\n\t\t\t\tif (overviewGroup == null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tMenuData<String> data = new MenuData<>();\n\t\t\t\tfor (OverviewLocation location : overviewGroup.getLocations()) {\n\t\t\t\t\tif (location.isStation()) {\n\t\t\t\t\t\tdata.getStationNames().add(location.getName());\n\t\t\t\t\t}\n\t\t\t\t\tif (location.isPlanet()) {\n\t\t\t\t\t\tdata.getPlanetNames().add(location.getName());\n\t\t\t\t\t}\n\t\t\t\t\tif (location.isSystem()) {\n\t\t\t\t\t\tdata.getSystemNames().add(location.getName());\n\t\t\t\t\t}\n\t\t\t\t\tif (location.isRegion()) {\n\t\t\t\t\t\tdata.getRegionNames().add(location.getName());\n\t\t\t\t\t}\n\t\t\t\t\tfor (MyLocation myLocation : StaticData.get().getLocations()) {\n\t\t\t\t\t\tif (!myLocation.getLocation().equals(location.getName())) {\n\t\t\t\t\t\t\tcontinue; //Not the location you're looking for\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (location.isConstellation()) {\n\t\t\t\t\t\t\tdata.getConstellationLocations().add(myLocation);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak; //Location found\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\turls.addAll(LookupLinks.EVEMAPS_DOTLAN_STATION.getLinks(data));\n\t\t\t\turls.addAll(LookupLinks.EVEMAPS_DOTLAN_PLANET.getLinks(data));\n\t\t\t\turls.addAll(LookupLinks.EVEMAPS_DOTLAN_SYSTEM.getLinks(data));\n\t\t\t\turls.addAll(LookupLinks.EVEMAPS_DOTLAN_CONSTELLATION.getLinks(data));\n\t\t\t\turls.addAll(LookupLinks.EVEMAPS_DOTLAN_REGION.getLinks(data));\n\t\t\t\tDesktopUtil.browse(urls, program);\n\t\t\t}\n\t\t},\n\t\tEVEMISSIONEER_SYSTEM(GuiShared.get().system(), Images.LOC_SYSTEM.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (MyLocation location : menuData.getSystemLocations()) {\n\t\t\t\t\turls.add(\"https://evemissioneer.com/s/\" + location.getLocationID());\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getSystemLocations().isEmpty();\n\t\t\t}\n\t\t},\n\t\tEVEMISSIONEER_CONSTELLATION(GuiShared.get().constellation(), Images.LOC_CONSTELLATION.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (MyLocation location : menuData.getConstellationLocations()) {\n\t\t\t\t\turls.add(\"https://evemissioneer.com/c/\" + location.getLocationID());\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getConstellationLocations().isEmpty();\n\t\t\t}\n\t\t},\n\t\tEVEMISSIONEER_REGION(GuiShared.get().region(), Images.LOC_REGION.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (MyLocation location : menuData.getRegionLocations()) {\n\t\t\t\t\turls.add(\"https://evemissioneer.com/r/\" + location.getLocationID());\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getRegionLocations().isEmpty();\n\t\t\t}\n\t\t},\n\t//Market\n\t\tFUZZWORK_MARKET(GuiShared.get().fuzzworkMarket(), Images.LINK_FUZZWORK.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (int marketTypeID : menuData.getMarketTypeIDs()) {\n\t\t\t\t\turls.add(\"https://market.fuzzwork.co.uk/hub/type/\" + marketTypeID + \"/\");\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getMarketTypeIDs().isEmpty();\n\t\t\t}\n\t\t},\n\t\tEVE_TYCOON(GuiShared.get().eveTycoon(), Images.LINK_EVE_TYCOON.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (int marketTypeID : menuData.getMarketTypeIDs()) {\n\t\t\t\t\turls.add(\"https://evetycoon.com/market/\" + marketTypeID);\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getMarketTypeIDs().isEmpty();\n\t\t\t}\n\t\t},\n\t\tADAM4EVE(GuiShared.get().adam4eve(), Images.LINK_ADAM4EVE.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (int marketTypeID : menuData.getMarketTypeIDs()) {\n\t\t\t\t\turls.add(\"https://www.adam4eve.eu/commodity.php?typeID=\" + marketTypeID);\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getMarketTypeIDs().isEmpty();\n\t\t\t}\n\t\t},\n\t\tEVE_MARKET_BROWSER(GuiShared.get().eveMarketBrowser(), Images.LINK_EVE_MARKET_BROWSER.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (int marketTypeID : menuData.getMarketTypeIDs()) {\n\t\t\t\t\turls.add(\"https://evemarketbrowser.com/region/0/type/\" + marketTypeID);\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getMarketTypeIDs().isEmpty();\n\t\t\t}\n\t\t},\n\t\tJITA_SPACE_MARKET (GuiShared.get().jitaSpace(), Images.LINK_JITA_SPACE.getIcon()){\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (int marketTypeID : menuData.getMarketTypeIDs()) {\n\t\t\t\t\turls.add(\"https://www.jita.space/market/\" + marketTypeID);\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getMarketTypeIDs().isEmpty();\n\t\t\t}\n\t\t},\n\t\tEVECONOMY(GuiShared.get().eveconomy(), Images.LINK_EVECONOMY.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (int marketTypeID : menuData.getMarketTypeIDs()) {\n\t\t\t\t\turls.add(\"https://eveconomy.online/item/\" + marketTypeID);\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getMarketTypeIDs().isEmpty();\n\t\t\t}\n\t\t},\n\t//Info\n\t\tGAMES_CHRUKER(GuiShared.get().chruker(), Images.LINK_CHRUKER.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (int typeID : menuData.getTypeIDs()) {\n\t\t\t\t\turls.add(\"http://games.chruker.dk/eve_online/item.php?type_id=\" + typeID);\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getTypeIDs().isEmpty();\n\t\t\t}\n\t\t},\n\t\tEVE_INFO(GuiShared.get().eveInfo(), Images.LINK_EVEINFO.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (int typeID : menuData.getTypeIDs()) {\n\t\t\t\t\turls.add(\"https://eveinfo.com/item/\" + typeID);\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getTypeIDs().isEmpty();\n\t\t\t}\n\t\t},\n\t\tFUZZWORK_ITEMS(GuiShared.get().fuzzworkItems(), Images.LINK_FUZZWORK.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (int typeID : menuData.getTypeIDs()) {\n\t\t\t\t\turls.add(\"https://www.fuzzwork.co.uk/info/?typeid=\" + typeID);\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getTypeIDs().isEmpty();\n\t\t\t}\n\t\t},\n\t\tZKILLBOARD_ITEM(GuiShared.get().zKillboard(), Images.LINK_ZKILLBOARD.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (int typeID : menuData.getTypeIDs()) {\n\t\t\t\t\turls.add(\"https://zkillboard.com/item/\" + typeID + \"/\");\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getTypeIDs().isEmpty();\n\t\t\t}\n\t\t},\n\t\tEVE_REF(GuiShared.get().eveRef(), Images.LINK_EVE_REF.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (int typeID : menuData.getTypeIDs()) {\n\t\t\t\t\turls.add(\"https://everef.net/types/\" + typeID + \"?utm_source=jeveassets\");\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getTypeIDs().isEmpty();\n\t\t\t}\n\t\t},\n\t\tJITA_SPACE_ITEM(GuiShared.get().jitaSpace(), Images.LINK_JITA_SPACE.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (int typeID : menuData.getTypeIDs()) {\n\t\t\t\t\turls.add(\"https://www.jita.space/type/\" + typeID);\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getTypeIDs().isEmpty();\n\t\t\t}\n\t\t},\n\t//Industry\n\t\tFUZZWORK_BLUEPRINTS(GuiShared.get().fuzzworkBlueprints(), Images.LINK_FUZZWORK.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (int typeID : menuData.getBlueprintTypeIDs()) {\n\t\t\t\t\turls.add(\"https://www.fuzzwork.co.uk/blueprint/?typeid=\" + typeID);\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getBlueprintTypeIDs().isEmpty();\n\t\t\t}\n\t\t},\n\t\tEVE_COOKBOOK(GuiShared.get().eveCookbook(), Images.LINK_EVE_COOKBOOK.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (int typeID : menuData.getBlueprintTypeIDs()) {\n\t\t\t\t\turls.add(\"https://evecookbook.com/?blueprintTypeId=\" + typeID);\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getBlueprintTypeIDs().isEmpty();\n\t\t\t}\n\t\t},\n\t//Corporation\n\t\tEVEMAPS_DOTLAN_CORPORATION(GuiShared.get().dotlan(), Images.LINK_DOTLAN_EVEMAPS.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (String corporationName : menuData.getCorporationNames()) {\n\t\t\t\t\turls.add(\"https://evemaps.dotlan.net/npc/\" + corporationName.replace(\" \", \"_\"));\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getCorporationNames().isEmpty();\n\t\t\t}\n\t\t},\n\t\tEVEMISSIONEER_CORPORATION(GuiShared.get().eveMissioneer(), Images.LINK_EVEMISSIONEER.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (int corporationID : menuData.getCorporationIDs()) {\n\t\t\t\t\turls.add(\"https://evemissioneer.com/co/\" + corporationID);\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getCorporationIDs().isEmpty();\n\t\t\t}\n\t\t},\n\t\tJITA_SPACE_CORPORATION(GuiShared.get().jitaSpace(), Images.LINK_JITA_SPACE.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (int corporationID : menuData.getCorporationIDs()) {\n\t\t\t\t\turls.add(\"https://www.jita.space/corporation/\" + corporationID);\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getCorporationNames().isEmpty();\n\t\t\t}\n\t\t},\n\t\tZKILLBOARD_CORPORATION(GuiShared.get().zKillboard(), Images.LINK_ZKILLBOARD.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (int corporationID : menuData.getCorporationIDs()) {\n\t\t\t\t\turls.add(\"https://zkillboard.com/corporation/\" + corporationID + \"/\");\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getCorporationNames().isEmpty();\n\t\t\t}\n\t\t},\n\t//Loyalty Points Store\n\t\tFUZZWORK_LP_SELL(GuiShared.get().fuzzworkLPSell(), Images.ORDERS_SELL.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (int corporationID : menuData.getCorporationIDs()) {\n\t\t\t\t\turls.add(\"https://www.fuzzwork.co.uk/lpstore/sell/10000002/\" + corporationID + \"/withblueprints\");\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getCorporationIDs().isEmpty();\n\t\t\t}\n\t\t},\n\t\tFUZZWORK_LP_BUY(GuiShared.get().fuzzworkLPBuy(), Images.ORDERS_BUY.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (int corporationID : menuData.getCorporationIDs()) {\n\t\t\t\t\turls.add(\"https://www.fuzzwork.co.uk/lpstore/buy/10000002/\" + corporationID + \"/withblueprints\");\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getCorporationIDs().isEmpty();\n\t\t\t}\n\t\t},\n\t\tJITA_SPACE_LP(GuiShared.get().jitaSpace(), Images.LINK_JITA_SPACE.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (String corporationName : menuData.getCorporationNames()) {\n\t\t\t\t\turls.add(\"https://www.jita.space/lp-store/\" + corporationName.replace(\" \", \"_\"));\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getCorporationNames().isEmpty();\n\t\t\t}\n\t\t},\n\t\tQUANTUM_ANOMALY_LP(GuiShared.get().quantumAnomaly(), Images.LINK_QUANTUM_ANOMALY.getIcon()) {\n\t\t\t@Override\n\t\t\tpublic Set<String> getLinks(MenuData<?> menuData) {\n\t\t\t\tSet<String> urls = new HashSet<>();\n\t\t\t\tfor (int corporationID : menuData.getCorporationIDs()) {\n\t\t\t\t\turls.add(\"https://www.qsna.eu/eve/loyalty-stores/\" + corporationID + \"/\");\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic <T> Boolean isEnabled(MenuData<T> menuData) {\n\t\t\t\treturn !menuData.getCorporationIDs().isEmpty();\n\t\t\t}\n\t\t};\n\t\t\n\n\t\tprivate final String title;\n\t\tprivate final Icon icon;\n\n\t\tprivate LookupLinks(String title, Icon icon) {\n\t\t\tthis.title = title;\n\t\t\tthis.icon = icon;\n\t\t}\n\n\t\tpublic abstract Set<String> getLinks(MenuData<?> menuData);\n\t\tpublic abstract <T> Boolean isEnabled(MenuData<T> menuData);\n\n\t\tpublic JMenuItem createMenuItem(ActionListener listener) {\n\t\t\tJMenuItem jMenuItem = new JMenuItem(title);\n\t\t\tjMenuItem.setIcon(icon);\n\t\t\tjMenuItem.setActionCommand(name());\n\t\t\tjMenuItem.addActionListener(listener);\n\t\t\treturn jMenuItem;\n\t\t}\n\n\t\tpublic void open(Program program, MenuData<?> menuData) {\n\t\t\tDesktopUtil.browse(getLinks(menuData), program);\n\t\t}\n\t}\n\n\tprivate final JMenu jLocations;\n\tprivate final JMenu jzKillboard;\n\tprivate final JMenuItem jzKillboardLocations;\n\tprivate final JMenu jDotlan;\n\tprivate final JMenuItem jDotlanLocations;\n\tprivate final JMenu jEveMissioneer;\n\tprivate final JMenu jMarket;\n\tprivate final JMenu jItemDatabase;\n\tprivate final JMenu jIndustry;\n\tprivate final JMenu jCorporation;\n\tprivate final Map<LookupLinks, JMenuItem> jMenuItems = new EnumMap<>(LookupLinks.class);\n\n\tpublic JMenuLookup(final Program program) {\n\t\tsuper(GuiShared.get().lookup(), program);\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tthis.setIcon(Images.LINK_LOOKUP.getIcon());\n//Locations\n\t\tjLocations = new JMenu(GuiShared.get().location());\n\t\tjLocations.setIcon(Images.LOC_LOCATIONS.getIcon());\n\t\tadd(jLocations);\n\n\t//zKillboard\n\t\tjzKillboard = new JMenu(GuiShared.get().zKillboard());\n\t\tjzKillboard.setIcon(Images.LINK_ZKILLBOARD.getIcon());\n\t\tjLocations.add(jzKillboard);\n\t\tadd(jzKillboard, LookupLinks.ZKILLBOARD_SYSTEM, listener);\n\t\tadd(jzKillboard, LookupLinks.ZKILLBOARD_CONSTELLATION, listener);\n\t\tadd(jzKillboard, LookupLinks.ZKILLBOARD_REGION, listener);\n\t\tjzKillboardLocations = add(jzKillboard, LookupLinks.ZKILLBOARD_OVERVIEW_GROUP, listener);\n\t//Dotlan\n\t\tjDotlan = new JMenu(GuiShared.get().dotlan());\n\t\tjDotlan.setIcon(Images.LINK_DOTLAN_EVEMAPS.getIcon());\n\t\tjLocations.add(jDotlan);\n\t\tadd(jDotlan, LookupLinks.EVEMAPS_DOTLAN_PLANET, listener);\n\t\tadd(jDotlan, LookupLinks.EVEMAPS_DOTLAN_SYSTEM, listener);\n\t\tadd(jDotlan, LookupLinks.EVEMAPS_DOTLAN_SYSTEM_REGION, listener);\n\t\tadd(jDotlan, LookupLinks.EVEMAPS_DOTLAN_CONSTELLATION, listener);\n\t\tadd(jDotlan, LookupLinks.EVEMAPS_DOTLAN_REGION, listener);\n\t\tjDotlanLocations = add(jDotlan, LookupLinks.EVEMAPS_DOTLAN_OVERVIEW_GROUP, listener);\n\t//EveMissioneer\n\t\tjEveMissioneer = new JMenu(GuiShared.get().eveMissioneer());\n\t\tjEveMissioneer.setIcon(Images.LINK_EVEMISSIONEER.getIcon());\n\t\tjLocations.add(jEveMissioneer);\n\t\tadd(jEveMissioneer, LookupLinks.EVEMISSIONEER_SYSTEM, listener);\n\t\tadd(jEveMissioneer, LookupLinks.EVEMISSIONEER_CONSTELLATION, listener);\n\t\tadd(jEveMissioneer, LookupLinks.EVEMISSIONEER_REGION, listener);\n\n//Market\n\t\tjMarket = new JMenu(GuiShared.get().market());\n\t\tjMarket.setIcon(Images.ORDERS_SELL.getIcon());\n\t\tadd(jMarket);\n\t\tadd(jMarket, LookupLinks.FUZZWORK_MARKET, listener);\n\t\tadd(jMarket, LookupLinks.EVE_TYCOON, listener);\n\t\tadd(jMarket, LookupLinks.ADAM4EVE, listener);\n\t\tadd(jMarket, LookupLinks.EVE_MARKET_BROWSER, listener);\n\t\tadd(jMarket, LookupLinks.JITA_SPACE_MARKET, listener);\n\t\tadd(jMarket, LookupLinks.EVECONOMY, listener);\n\n//Items\n\t\tjItemDatabase = new JMenu(GuiShared.get().itemDatabase());\n\t\tjItemDatabase.setIcon(Images.TOOL_ASSETS.getIcon());\n\t\tadd(jItemDatabase);\n\t\tadd(jItemDatabase, LookupLinks.GAMES_CHRUKER, listener);\n\t\tadd(jItemDatabase, LookupLinks.EVE_INFO, listener);\n\t\tadd(jItemDatabase, LookupLinks.FUZZWORK_ITEMS, listener);\n\t\tadd(jItemDatabase, LookupLinks.ZKILLBOARD_ITEM, listener);\n\t\tadd(jItemDatabase, LookupLinks.EVE_REF, listener);\n\t\tadd(jItemDatabase, LookupLinks.JITA_SPACE_ITEM, listener);\n\n//Industry\n\t\tjIndustry = new JMenu(GuiShared.get().industry());\n\t\tjIndustry.setIcon(Images.TOOL_INDUSTRY_JOBS.getIcon());\n\t\tadd(jIndustry);\n\n\t\tadd(jIndustry, LookupLinks.FUZZWORK_BLUEPRINTS, listener);\n\t//Other\n\t\tadd(jIndustry, LookupLinks.EVE_COOKBOOK, listener);\n//Corporation\n\t\tjCorporation = new JMenu(GuiShared.get().corporation());\n\t\tjCorporation.setIcon(Images.LINK_LOOKUP.getIcon());\n\t\tadd(jCorporation);\n\t\tadd(jCorporation, LookupLinks.EVEMAPS_DOTLAN_CORPORATION, listener);\n\t\tadd(jCorporation, LookupLinks.EVEMISSIONEER_CORPORATION, listener);\n\t\tadd(jCorporation, LookupLinks.JITA_SPACE_CORPORATION, listener);\n\t\tadd(jCorporation, LookupLinks.ZKILLBOARD_CORPORATION, listener);\n\n\t\tJMenu jLoyaltyPointsStore = new JMenu(GuiShared.get().loyaltyPointsStore());\n\t\tjLoyaltyPointsStore.setIcon(Images.TOOL_LOYALTY_POINTS.getIcon());\n\t\tjCorporation.add(jLoyaltyPointsStore);\n\n\t\tJMenu jFuzzwork = new JMenu(GuiShared.get().fuzzworkLP());\n\t\tjFuzzwork.setIcon(Images.LINK_FUZZWORK.getIcon());\n\t\tjLoyaltyPointsStore.add(jFuzzwork);\n\t\tadd(jFuzzwork, LookupLinks.FUZZWORK_LP_SELL, listener);\n\t\tadd(jFuzzwork, LookupLinks.FUZZWORK_LP_BUY, listener);\n\n\t\tadd(jLoyaltyPointsStore, LookupLinks.JITA_SPACE_LP, listener);\n\n\t\tadd(jLoyaltyPointsStore, LookupLinks.QUANTUM_ANOMALY_LP, listener);\n\t}\n\n\t@Override\n\tpublic void updateMenuData() {\n\t\tfor (Map.Entry<LookupLinks, JMenuItem> entry : jMenuItems.entrySet()) {\n\t\t\tBoolean enabled = entry.getKey().isEnabled(menuData);\n\t\t\tif (enabled != null) {\n\t\t\t\tentry.getValue().setEnabled(enabled);\n\t\t\t}\n\t\t}\n\t//Location\n\t\tjLocations.setEnabled(!menuData.getStationNames().isEmpty() || !menuData.getSystemNames().isEmpty() || !menuData.getRegionNames().isEmpty());\n\t//Market\n\t\tjMarket.setEnabled(!menuData.getMarketTypeIDs().isEmpty());\n\t//Info\n\t\tjItemDatabase.setEnabled(!menuData.getTypeIDs().isEmpty());\n\t//Industry\n\t\tjIndustry.setEnabled(!menuData.getBlueprintTypeIDs().isEmpty());\n\t//Corporation\n\t\tjCorporation.setEnabled(!menuData.getCorporationNames().isEmpty() || !menuData.getCorporationIDs().isEmpty());\n\t}\n\n\tpublic void setTool(Object object) {\n\t\tif (object instanceof OverviewTableMenu) {\n\t\t\tOverviewTab overviewTab = ((OverviewTableMenu)object).getOverviewTab();\n\t\t\tboolean enabled = overviewTab.isGroupAndNotEmpty();\n\t\t\tjDotlanLocations.setEnabled(enabled);\n\t\t\tjDotlan.add(jDotlanLocations);\n\n\t\t\tjzKillboardLocations.setEnabled(enabled);\n\t\t\tjzKillboard.add(jzKillboardLocations);\n\n\t\t\tjLocations.setEnabled(enabled || !overviewTab.isGroup());\n\t\t} else {\n\t\t\tjDotlan.remove(jDotlanLocations);\n\t\t\tjzKillboard.remove(jzKillboardLocations);\n\t\t}\n\t}\n\n\tprivate JMenuItem add(JMenu jMenu, LookupLinks lookupLinks, ListenerClass listener) {\n\t\tJMenuItem jMenuItem = lookupLinks.createMenuItem(listener);\n\t\tjMenuItems.put(lookupLinks, jMenuItem);\n\t\tjMenu.add(jMenuItem);\n\t\treturn jMenuItem;\n\t}\n\n\tprivate class ListenerClass implements ActionListener {\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\t//Locations\n\t\t\ttry {\n\t\t\t\tLookupLinks links = LookupLinks.valueOf(e.getActionCommand());\n\t\t\t\tlinks.open(program, menuData);\n\t\t\t} catch (IllegalArgumentException ex) {\n\t\t\t\t//Ignore this\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static String replaceLast(String string, String toReplace, String replacement) {\n\t\tint pos = string.lastIndexOf(toReplace);\n\t\tif (pos > -1) {\n\t\t\treturn string.substring(0, pos)\n\t\t\t\t + replacement\n\t\t\t\t + string.substring(pos + toReplace.length(), string.length());\n\t\t} else {\n\t\t\treturn string;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/menu/JMenuName.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.menu;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport javax.swing.JMenuItem;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.settings.UserItem;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.settings.UserNameSettingsPanel.UserName;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JSelectionDialog;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.JAutoMenu;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\npublic class JMenuName<T> extends JAutoMenu<T> {\r\n\r\n\tprivate enum MenuNameAction {\r\n\t\tEDIT_NAME,\r\n\t\tDELETE_NAME,\r\n\t\tEDIT_CONTAINER,\r\n\t\tDELETE_CONTAINERS\r\n\t}\r\n\r\n\tprivate List<UserItem<Long, String>> itemNames;\r\n\tprivate List<UserItem<Long, String>> containerNames;\r\n\tprivate MyAsset selected;\r\n\r\n\tprivate final JMenuItem jEditItem;\r\n\tprivate final JMenuItem jResetItem;\r\n\tprivate final JMenuItem jEditContainer;\r\n\tprivate final JMenuItem jResetContainer;\r\n\tprivate final JSelectionDialog<MyAsset> jContainerDialog;\r\n\r\n\tpublic JMenuName(final Program program) {\r\n\t\tsuper(GuiShared.get().itemNameTitle(), program);\r\n\t\tthis.setIcon(Images.SETTINGS_USER_NAME.getIcon());\r\n\r\n\t\tListenerClass listener = new ListenerClass();\r\n\r\n\t\tjContainerDialog = new JSelectionDialog<>(program);\r\n\r\n\t\tjEditItem = new JMenuItem(GuiShared.get().itemEdit());\r\n\t\tjEditItem.setIcon(Images.EDIT_EDIT.getIcon());\r\n\t\tjEditItem.setActionCommand(MenuNameAction.EDIT_NAME.name());\r\n\t\tjEditItem.addActionListener(listener);\r\n\t\tadd(jEditItem);\r\n\r\n\t\tjResetItem = new JMenuItem(GuiShared.get().itemDelete());\r\n\t\tjResetItem.setIcon(Images.EDIT_DELETE.getIcon());\r\n\t\tjResetItem.setActionCommand(MenuNameAction.DELETE_NAME.name());\r\n\t\tjResetItem.addActionListener(listener);\r\n\t\tadd(jResetItem);\r\n\r\n\t\taddSeparator();\r\n\r\n\t\tjEditContainer = new JMenuItem(GuiShared.get().containerEdit());\r\n\t\tjEditContainer.setIcon(Images.EDIT_EDIT.getIcon());\r\n\t\tjEditContainer.setActionCommand(MenuNameAction.EDIT_CONTAINER.name());\r\n\t\tjEditContainer.addActionListener(listener);\r\n\t\tadd(jEditContainer);\r\n\r\n\t\tjResetContainer = new JMenuItem(GuiShared.get().containerDelete());\r\n\t\tjResetContainer.setIcon(Images.EDIT_DELETE.getIcon());\r\n\t\tjResetContainer.setActionCommand(MenuNameAction.DELETE_CONTAINERS.name());\r\n\t\tjResetContainer.addActionListener(listener);\r\n\t\tadd(jResetContainer);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void updateMenuData() {\r\n\t\titemNames = new ArrayList<>();\r\n\t\tcontainerNames = new ArrayList<>();\r\n\t\tfor (MyAsset asset : menuData.getAssets()) {\r\n\t\t\tif (asset.getOwner() == null) {\r\n\t\t\t\tcontinue; //Ignore TreeAsset for Location/Group/Category\r\n\t\t\t}\r\n\t\t\titemNames.add(new UserName(asset));\r\n\t\t\tfor (MyAsset parent : asset.getParents()) {\r\n\t\t\t\tcontainerNames.add(new UserName(parent));\r\n\t\t\t}\r\n\t\t}\r\n\t\tjEditItem.setEnabled(itemNames.size() == 1);\r\n\t\tjResetItem.setEnabled(program.getUserNameSettingsPanel() != null && program.getUserNameSettingsPanel().contains(itemNames));\r\n\t\tjEditContainer.setEnabled(menuData.getAssets().size() == 1 && !menuData.getAssets().get(0).getParents().isEmpty());\r\n\t\tjResetContainer.setEnabled(program.getUserNameSettingsPanel() != null && program.getUserNameSettingsPanel().contains(containerNames));\r\n\t\tif (menuData.getAssets().size() == 1) {\r\n\t\t\tselected = menuData.getAssets().get(0);\r\n\t\t} else {\r\n\t\t\tselected = null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener {\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\tif (MenuNameAction.EDIT_NAME.name().equals(e.getActionCommand())) {\r\n\t\t\t\tprogram.getUserNameSettingsPanel().edit(itemNames.get(0));\r\n\t\t\t}\r\n\t\t\tif (MenuNameAction.DELETE_NAME.name().equals(e.getActionCommand())) {\r\n\t\t\t\tprogram.getUserNameSettingsPanel().delete(itemNames);\r\n\t\t\t}\r\n\t\t\tif (MenuNameAction.EDIT_CONTAINER.name().equals(e.getActionCommand())) {\r\n\t\t\t\tif (selected != null) {\r\n\t\t\t\t\tMyAsset value = jContainerDialog.show(GuiShared.get().containerText(), selected.getParents());\r\n\t\t\t\t\tif (value != null) {\r\n\t\t\t\t\t\tprogram.getUserNameSettingsPanel().edit(new UserName(value));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (MenuNameAction.DELETE_CONTAINERS.name().equals(e.getActionCommand())) {\r\n\t\t\t\tprogram.getUserNameSettingsPanel().delete(containerNames);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/menu/JMenuPrice.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.menu;\n\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Map;\nimport javax.swing.JMenuItem;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.data.settings.UserItem;\nimport net.nikr.eve.jeveasset.gui.dialogs.settings.UserPriceSettingsPanel.UserPrice;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.JAutoMenu;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n\npublic class JMenuPrice<T> extends JAutoMenu<T> {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(JMenuPrice.class);\n\n\tprivate enum MenuPriceAction {\n\t\tEDIT, DELETE\n\t}\n\n\tprivate final JMenuItem jEdit;\n\tprivate final JMenuItem jReset;\n\n\tpublic JMenuPrice(final Program program) {\n\t\tsuper(GuiShared.get().itemPriceTitle(), program); //\n\t\tthis.setIcon(Images.SETTINGS_USER_PRICE.getIcon());\n\n\t\tListenerClass listener =new ListenerClass();\n\n\t\tjEdit = new JMenuItem(GuiShared.get().itemEdit());\n\t\tjEdit.setIcon(Images.EDIT_EDIT.getIcon());\n\t\tjEdit.setActionCommand(MenuPriceAction.EDIT.name());\n\t\tjEdit.addActionListener(listener);\n\t\tadd(jEdit);\n\n\t\tjReset = new JMenuItem(GuiShared.get().itemDelete());\n\t\tjReset.setIcon(Images.EDIT_DELETE.getIcon());\n\t\tjReset.setActionCommand(MenuPriceAction.DELETE.name());\n\t\tjReset.addActionListener(listener);\n\t\tadd(jReset);\n\t}\n\n\t@Override\n\tpublic void updateMenuData() {\n\t\tjEdit.setEnabled(!menuData.getPrices().isEmpty());\n\t\tjReset.setEnabled(!menuData.getPrices().isEmpty() && program.getUserPriceSettingsPanel().containsKey(menuData.getPrices().keySet()));\n\t}\n\n\tprivate List<UserItem<Integer, Double>> createList() {\n\t\tList<UserItem<Integer, Double>> itemPrices = new ArrayList<>();\n\t\tfor (Map.Entry<Integer, Double> entry : menuData.getPrices().entrySet()) {\n\t\t\tItem item = ApiIdConverter.getItem(Math.abs(entry.getKey()));\n\t\t\tString name = \"\";\n\t\t\tif (!item.isEmpty()) {\n\t\t\t\tif (item.isBlueprint()) {\n\t\t\t\t\t//Blueprint\n\t\t\t\t\tif (entry.getKey() < 0) {\n\t\t\t\t\t\t//Copy\n\t\t\t\t\t\tname = item.getTypeName() + \" (BPC)\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\t//Original\n\t\t\t\t\t\tname = item.getTypeName() + \" (BPO)\";\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t//Not blueprint\n\t\t\t\t\tname = item.getTypeName();\n\t\t\t\t}\n\t\t\t}\n\t\t\titemPrices.add(new UserPrice(entry.getValue(), entry.getKey(), name));\n\t\t}\n\t\treturn itemPrices;\n\t}\n\n\tprivate class ListenerClass implements ActionListener {\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (MenuPriceAction.EDIT.name().equals(e.getActionCommand())) {\n\t\t\t\tif (!menuData.getBpcTypeIDs().isEmpty() && !menuData.getPrices().isEmpty() && !menuData.getTypeNames().isEmpty()) {\n\t\t\t\t\tprogram.getUserPriceSettingsPanel().edit(createList());\n\t\t\t\t}\n\t\t\t} else if (MenuPriceAction.DELETE.name().equals(e.getActionCommand())) {\n\t\t\t\tif (!menuData.getBpcTypeIDs().isEmpty() && !menuData.getPrices().isEmpty() && !menuData.getTypeNames().isEmpty()) {\n\t\t\t\t\tprogram.getUserPriceSettingsPanel().delete(createList());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/menu/JMenuPriceHistory.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.menu;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport javax.swing.JMenuItem;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.JAutoMenu;\r\nimport net.nikr.eve.jeveasset.gui.tabs.prices.PriceHistoryTab;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\npublic class JMenuPriceHistory<T> extends JAutoMenu<T> {\r\n\r\n\tprivate enum MenuPriceHistoryAction {\r\n\t\tADD, SET\r\n\t}\r\n\r\n\tprivate final JMenuItem jAdd;\r\n\tprivate final JMenuItem jSet;\r\n\r\n\tpublic JMenuPriceHistory(Program program) {\r\n\t\tsuper(GuiShared.get().priceHistory(), program);\r\n\r\n\t\tthis.setIcon(Images.TOOL_PRICE_HISTORY.getIcon());\r\n\r\n\t\tListenerClass listener =new ListenerClass();\r\n\r\n\t\tjAdd = new JMenuItem(GuiShared.get().add());\r\n\t\tjAdd.setIcon(Images.EDIT_ADD.getIcon());\r\n\t\tjAdd.setActionCommand(MenuPriceHistoryAction.ADD.name());\r\n\t\tjAdd.addActionListener(listener);\r\n\t\tadd(jAdd);\r\n\r\n\t\tjSet = new JMenuItem(GuiShared.get().set());\r\n\t\tjSet.setIcon(Images.EDIT_SET.getIcon());\r\n\t\tjSet.setActionCommand(MenuPriceHistoryAction.SET.name());\r\n\t\tjSet.addActionListener(listener);\r\n\t\tadd(jSet);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void updateMenuData() {\r\n\t\tjAdd.setEnabled(!menuData.getTypeIDs().isEmpty());\r\n\t\tjSet.setEnabled(!menuData.getTypeIDs().isEmpty());\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener {\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\tif (MenuPriceHistoryAction.ADD.name().equals(e.getActionCommand())) {\r\n\t\t\t\tPriceHistoryTab priceHistoryTab = program.getPriceHistoryTab(true);\r\n\t\t\t\tprogram.getMainWindow().addTab(priceHistoryTab);\r\n\t\t\t\tpriceHistoryTab.addItems(menuData.getTypeIDs());\r\n\t\t\t} else if (MenuPriceHistoryAction.SET.name().equals(e.getActionCommand())) {\r\n\t\t\t\tPriceHistoryTab priceHistoryTab = program.getPriceHistoryTab(true);\r\n\t\t\t\tprogram.getMainWindow().addTab(priceHistoryTab);\r\n\t\t\t\tpriceHistoryTab.setItems(menuData.getTypeIDs());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/menu/JMenuReprocessed.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.menu;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\nimport javax.swing.JMenuItem;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.JAutoMenu;\r\nimport net.nikr.eve.jeveasset.gui.tabs.reprocessed.ReprocessedTab;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\npublic class JMenuReprocessed<T> extends JAutoMenu<T> {\r\n\r\n\tprivate enum MenuReprocessedAction {\r\n\t\tADD, SET\r\n\t}\r\n\r\n\tprivate final JMenuItem jAdd;\r\n\tprivate final JMenuItem jSet;\r\n\tprivate final Map<Item, Long> items = new HashMap<>();\r\n\r\n\tpublic JMenuReprocessed(final Program program) {\r\n\t\tsuper(GuiShared.get().reprocessed(), program);\r\n\t\tsetIcon(Images.TOOL_REPROCESSED.getIcon());\r\n\r\n\t\tListenerClass listener = new ListenerClass();\r\n\r\n\t\tjAdd = new JMenuItem(GuiShared.get().add());\r\n\t\tjAdd.setIcon(Images.EDIT_ADD.getIcon());\r\n\t\tjAdd.setActionCommand(MenuReprocessedAction.ADD.name());\r\n\t\tjAdd.addActionListener(listener);\r\n\t\tadd(jAdd);\r\n\r\n\t\tjSet = new JMenuItem(GuiShared.get().set());\r\n\t\tjSet.setIcon(Images.EDIT_SET.getIcon());\r\n\t\tjSet.setActionCommand(MenuReprocessedAction.SET.name());\r\n\t\tjSet.addActionListener(listener);\r\n\t\tadd(jSet);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void updateMenuData() {\r\n\t\titems.clear();\r\n\t\tfor (Map.Entry<Item, Long> entry : menuData.getItemCounts().entrySet()) {\r\n\t\t\tif (!entry.getKey().getReprocessedMaterial().isEmpty()) {\r\n\t\t\t\titems.put(entry.getKey(), entry.getValue());\r\n\t\t\t}\r\n\t\t}\r\n\t\tjAdd.setEnabled(!items.isEmpty());\r\n\t\tjSet.setEnabled(!items.isEmpty());\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener {\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\tif (MenuReprocessedAction.ADD.name().equals(e.getActionCommand())) {\r\n\t\t\t\tReprocessedTab reprocessedTab = program.getReprocessedTab(true);\r\n\t\t\t\treprocessedTab.add(items);\r\n\t\t\t\treprocessedTab.show();\r\n\t\t\t}\r\n\t\t\tif (MenuReprocessedAction.SET.name().equals(e.getActionCommand())) {\r\n\t\t\t\tReprocessedTab reprocessedTab = program.getReprocessedTab(true);\r\n\t\t\t\treprocessedTab.set(items);\r\n\t\t\t\treprocessedTab.show();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/menu/JMenuRouting.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.menu;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.util.Collections;\r\nimport java.util.Set;\r\nimport javax.swing.JMenuItem;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.tabs.routing.RoutingTab;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\npublic class JMenuRouting<T> extends MenuManager.JAutoMenu<T> {\r\n\r\n\tprivate enum MenuRoutingAction {\r\n\t\tSYSTEM,\r\n\t\tSTATION\r\n\t}\r\n\r\n\tprivate final JMenuItem jSystem;\r\n\tprivate final JMenuItem jStation;\r\n\r\n\tpublic JMenuRouting(Program program) {\r\n\t\tsuper(GuiShared.get().routing(), program);\r\n\t\tthis.setIcon(Images.TOOL_ROUTING.getIcon());\r\n\r\n\t\tListenerClass listener = new ListenerClass();\r\n\r\n\t\tjStation = new JMenuItem(GuiShared.get().uiStation());\r\n\t\tjStation.setIcon(Images.LOC_STATION.getIcon());\r\n\t\tjStation.setActionCommand(MenuRoutingAction.STATION.name());\r\n\t\tjStation.addActionListener(listener);\r\n\t\tadd(jStation);\r\n\r\n\t\tjSystem = new JMenuItem(GuiShared.get().uiSystem());\r\n\t\tjSystem.setIcon(Images.LOC_SYSTEM.getIcon());\r\n\t\tjSystem.setActionCommand(MenuRoutingAction.SYSTEM.name());\r\n\t\tjSystem.addActionListener(listener);\r\n\t\tadd(jSystem);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void updateMenuData() {\r\n\t\tjStation.setEnabled(!menuData.getAutopilotStationLocations().isEmpty() && menuData.getContracts().size() <= 1);\r\n\t\tjSystem.setEnabled(!menuData.getSystemLocations().isEmpty() && menuData.getContracts().size() <= 1);\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener {\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\tif (MenuRoutingAction.STATION.name().equals(e.getActionCommand())) {\r\n\t\t\t\tSet<MyLocation> locations;\r\n\t\t\t\tif (menuData.getContracts().size() == 1) {\r\n\t\t\t\t\tMyLocation station = JMenuUI.selectLocation(program, menuData.getAutopilotStationLocations());\r\n\t\t\t\t\tif (station == null) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlocations = Collections.singleton(station);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlocations = menuData.getAutopilotStationLocations();\r\n\t\t\t\t}\r\n\t\t\t\tRoutingTab routingTab = program.getRoutingTab(true);\r\n\t\t\t\tprogram.getMainWindow().addTab(routingTab);\r\n\t\t\t\tfor (MyLocation location : locations) {\r\n\t\t\t\t\troutingTab.addLocation(location);\r\n\t\t\t\t}\r\n\t\t\t} else if (MenuRoutingAction.SYSTEM.name().equals(e.getActionCommand())) {\r\n\t\t\t\tSet<MyLocation> locations;\r\n\t\t\t\tif (menuData.getContracts().size() == 1) {\r\n\t\t\t\t\tMyLocation system = JMenuUI.selectLocation(program, menuData.getSystemLocations());\r\n\t\t\t\t\tif (system == null) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlocations = Collections.singleton(system);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlocations = menuData.getSystemLocations();\r\n\t\t\t\t}\r\n\t\t\t\tRoutingTab routingTab = program.getRoutingTab(true);\r\n\t\t\t\tprogram.getMainWindow().addTab(routingTab);\r\n\t\t\t\tfor (MyLocation location : locations) {\r\n\t\t\t\t\troutingTab.addLocation(location);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/menu/JMenuStockpile.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.menu;\n\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport javax.swing.JMenuItem;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.sde.IndustryMaterial;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.MenuScroller;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.JAutoMenu;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileItem;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.StockpileBpDialog;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.StockpileBpDialog.BpData;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.StockpileTab;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\nimport net.nikr.eve.jeveasset.i18n.TabsStockpile;\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\n\n\npublic class JMenuStockpile<T> extends JAutoMenu<T> {\n\n\tprivate enum MenuStockpileAction {\n\t\tADD_TO\n\t}\n\n\tprivate static StockpileBpDialog stockpileBpDialog = null;\n\n\tprivate final JMenuItem jAddToNew;\n\n\tListenerClass listener = new ListenerClass();\n\n\tpublic JMenuStockpile(final Program program) {\n\t\tsuper(GuiShared.get().stockpile(), program);\n\t\tthis.setIcon(Images.TOOL_STOCKPILE.getIcon());\n\n\t\tMenuScroller menuScroller = new MenuScroller(this);\n\t\tmenuScroller.keepVisible(2);\n\t\tmenuScroller.setTopFixedCount(2);\n\t\tmenuScroller.setInterval(125);\n\n\t\tjAddToNew = new JStockpileMenu(GuiShared.get().newStockpile());\n\t\tjAddToNew.setIcon(Images.EDIT_ADD.getIcon());\n\t\tjAddToNew.setActionCommand(MenuStockpileAction.ADD_TO.name());\n\t\tjAddToNew.addActionListener(listener);\n\t}\n\n\t@Override\n\tpublic void updateMenuData() {\n\t\tList<Stockpile> stockpiles = StockpileTab.getShownStockpiles(program);\n\t\tboolean enabled = !menuData.getTypeIDs().isEmpty();\n\n\t\tremoveAll();\n\n\t\tjAddToNew.setEnabled(enabled);\n\t\tadd(jAddToNew); //Add \"To new Stockpile\"\n\n\t\tif (!stockpiles.isEmpty()) { //Add Separator (if we have stockpiles)\n\t\t\taddSeparator();\n\t\t}\n\n\t\tfor (Stockpile stockpile : stockpiles) { //Create menu items\n\t\t\tJMenuItem jMenuItem = new JStockpileMenu(stockpile);\n\t\t\tjMenuItem.setIcon(Images.TOOL_STOCKPILE.getIcon());\n\t\t\tjMenuItem.setActionCommand(MenuStockpileAction.ADD_TO.name());\n\t\t\tjMenuItem.addActionListener(listener);\n\t\t\tjMenuItem.setEnabled(enabled);\n\t\t\tadd(jMenuItem);\n\t\t}\n\t}\n\n\tprivate class ListenerClass implements ActionListener {\n\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (MenuStockpileAction.ADD_TO.name().equals(e.getActionCommand())) {\n\t\t\t\tObject source = e.getSource();\n\t\t\t\tif (source instanceof JStockpileMenu) {\n\t\t\t\t\tJStockpileMenu jStockpileMenu = (JStockpileMenu) source;\n\t\t\t\t\tStockpile stockpile = jStockpileMenu.getStockpile();\n\t\t\t\t\tList<StockpileItem> items = toStockpileItems(program, stockpile, menuData.getTypeIDs(), menuData.getCounts(), menuData.getRuns(), true);\n\t\t\t\t\tif (items == null) {\n\t\t\t\t\t\treturn; //Cancel\n\t\t\t\t\t}\n\t\t\t\t\tStockpileTab stockpileTab = program.getStockpileTab(true);\n\t\t\t\t\tstockpile = stockpileTab.addToStockpile(stockpile, items, true, true);\n\t\t\t\t\tif (stockpile != null) {\n\t\t\t\t\t\tprogram.getMainWindow().addTab(stockpileTab, Settings.get().isStockpileFocusTab());\n\t\t\t\t\t\tif (Settings.get().isStockpileFocusTab()) {\n\t\t\t\t\t\t\tstockpileTab.scrollToSctockpile(stockpile); //Updated when other tools gain focus\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tprogram.updateTableMenu(); //Needs update (to include new stockpile)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static BpOptions selectBpImportOptions(Program program, Collection<Integer> typeIDs, boolean source) {\n\t\tBpData blueprintSelect = null;\n\t\tBpData formulaSelect = null;\n\t\tfor (int typeID : typeIDs) {\n\t\t\tItem item = ApiIdConverter.getItem(Math.abs(typeID));\n\t\t\tif (item.isBlueprint() && blueprintSelect == null) {\n\t\t\t\tblueprintSelect = getBlueprintSelect(program, source);\n\t\t\t\tif (blueprintSelect == null) {\n\t\t\t\t\treturn null; //Cancel\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (item.getItem().isFormula() && formulaSelect == null) {\n\t\t\t\tformulaSelect = getFormulaSelect(program);\n\t\t\t\tif (formulaSelect == null) {\n\t\t\t\t\treturn null; //Cancel\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn new BpOptions(blueprintSelect, formulaSelect);\n\t}\n\n\tpublic static List<StockpileItem> toStockpileItems(Program program, BpOptions bpOptions, Stockpile stockpile, Collection<Integer> typeIDs, Map<Integer, Double> counts, Map<Integer, Double> runs) {\n\t\treturn toStockpileItems(program, bpOptions.getBlueprintSelect(), bpOptions.getFormulaSelect(), stockpile, typeIDs, counts, runs, false);\n\t}\n\n\tpublic static List<StockpileItem> toStockpileItems(Program program, Stockpile stockpile, Collection<Integer> typeIDs, Map<Integer, Double> counts, Map<Integer, Double> runs, boolean source) {\n\t\treturn toStockpileItems(program, null, null, stockpile, typeIDs, counts, runs, source);\n\t}\n\n\tprivate static List<StockpileItem> toStockpileItems(Program program, BpData blueprintSelect, BpData formulaSelect, Stockpile stockpile, Collection<Integer> typeIDs, Map<Integer, Double> counts, Map<Integer, Double> runs, boolean source) {\n\t\tList<StockpileItem> items = new ArrayList<>();\n\t\tfor (int typeID : typeIDs) {\n\t\t\tItem item = ApiIdConverter.getItem(Math.abs(typeID));\n\t\t\tif (item.isBlueprint() && blueprintSelect == null) {\n\t\t\t\tblueprintSelect = getBlueprintSelect(program, source);\n\t\t\t\tif (blueprintSelect == null) {\n\t\t\t\t\treturn null; //Cancel\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (item.isFormula() && formulaSelect == null) {\n\t\t\t\tformulaSelect = getFormulaSelect(program);\n\t\t\t\tif (formulaSelect == null) {\n\t\t\t\t\treturn null; //Cancel\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (match(item, blueprintSelect, formulaSelect, TabsStockpile.get().original())) {\n\t\t\t\t//PBO\n\t\t\t\titems.add(new StockpileItem(stockpile, item, Math.abs(typeID), total(counts, typeID), false));\n\t\t\t} else if (match(item, blueprintSelect, null, TabsStockpile.get().copy())) {\n\t\t\t\t//BPC\n\t\t\t\titems.add(new StockpileItem(stockpile, item, -Math.abs(typeID), total(counts, typeID), false));\n\t\t\t} else if (match(item, blueprintSelect, null, TabsStockpile.get().runs())) {\n\t\t\t\t//BPC Runs\n\t\t\t\titems.add(new StockpileItem(stockpile, item, -Math.abs(typeID), runs(counts, runs, typeID), true));\n\t\t\t} else if (match(item, blueprintSelect, null, TabsStockpile.get().materialsManufacturing())) {\n\t\t\t\t//BP Materials\n\t\t\t\tfor (IndustryMaterial material : item.getManufacturingMaterials()) {\n\t\t\t\t\tdouble count = blueprintSelect.doMath(material.getQuantity(), total(counts, typeID));\n\t\t\t\t\tItem materialItem = ApiIdConverter.getItem(material.getTypeID());\n\t\t\t\t\titems.add(new StockpileItem(stockpile, materialItem, material.getTypeID(), count, false));\n\t\t\t\t}\n\t\t\t} else if (match(item, null, formulaSelect, TabsStockpile.get().materialsReaction())) {\n\t\t\t\t//Reaction Materials\n\t\t\t\tfor (IndustryMaterial material : item.getReactionMaterials()) {\n\t\t\t\t\tItem materialItem = ApiIdConverter.getItem(material.getTypeID());\n\t\t\t\t\tdouble count = formulaSelect.doMath(material.getQuantity(), total(counts, typeID));\n\t\t\t\t\titems.add(new StockpileItem(stockpile, materialItem, material.getTypeID(), count, false));\n\t\t\t\t}\n\t\t\t} else { //source or not bluepint/formula\n\t\t\t\t//PBO or not BP\n\t\t\t\tDouble count = counts.get(Math.abs(typeID));\n\t\t\t\tif (count != null) {\n\t\t\t\t\titems.add(new StockpileItem(stockpile, item, Math.abs(typeID), count, false));\n\t\t\t\t}\n\t\t\t\t//BPC\n\t\t\t\tDouble bpc = counts.get(-Math.abs(typeID));\n\t\t\t\tif (bpc != null) {\n\t\t\t\t\titems.add(new StockpileItem(stockpile, item, -Math.abs(typeID), bpc, false));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn items;\n\t}\n\n\tpublic static BpData getBlueprintSelect(Program program, boolean source) {\n\t\tString[] sources = {TabsStockpile.get().source(), TabsStockpile.get().original(), TabsStockpile.get().copy(), TabsStockpile.get().runs(), TabsStockpile.get().materialsManufacturing()};\n\t\tString[] options = {TabsStockpile.get().original(), TabsStockpile.get().copy(), TabsStockpile.get().runs(), TabsStockpile.get().materialsManufacturing()};\n\t\tif (stockpileBpDialog == null) {\n\t\t\tstockpileBpDialog = new StockpileBpDialog(program);\n\t\t}\n\t\treturn stockpileBpDialog.show(TabsStockpile.get().addBlueprintTitle(), TabsStockpile.get().addBlueprintMsg(), source ? sources : options);\n\t}\n\n\tpublic static BpData getFormulaSelect(Program program) {\n\t\tString[] options = {TabsStockpile.get().original(), TabsStockpile.get().materialsReaction()};\n\t\tif (stockpileBpDialog == null) {\n\t\t\tstockpileBpDialog = new StockpileBpDialog(program);\n\t\t}\n\t\treturn stockpileBpDialog.show(TabsStockpile.get().addFormulaTitle(), TabsStockpile.get().addFormulaMsg(), options);\n\t}\n\n\tpublic static boolean match(Item item, BpData blueprintSelect, BpData formulaSelect, String match) {\n\t\treturn (item.isBlueprint() && blueprintSelect != null && blueprintSelect.matches(match))\n\t\t\t|| (item.isFormula() && formulaSelect != null && formulaSelect.matches(match));\n\t}\n\n\tprivate static double runs(Map<Integer, Double> counts, Map<Integer, Double> runs, int typeID) {\n\t\tDouble bpc = runs.get(-Math.abs(typeID)); //PBC Runs\n\t\tif (bpc == null) { //If no runs data, use count instead\n\t\t\tbpc = runs.getOrDefault(-Math.abs(typeID), 0.0); //BPC count\n\t\t} //Else use count\n\t\treturn bpc + counts.getOrDefault(Math.abs(typeID), 0.0); //BPO\n\t}\n\n\tprivate static double total(Map<Integer, Double> counts, int typeID) {\n\t\treturn counts.getOrDefault(Math.abs(typeID), 0.0) //PBOs\n\t\t\t+ counts.getOrDefault(-Math.abs(typeID), 0.0); //BPCs\n\t}\n\n\tpublic static class JStockpileMenu extends JMenuItem {\n\n\t\tprivate final Stockpile stockpile;\n\n\t\tpublic JStockpileMenu(final String text) {\n\t\t\tsuper(text);\n\t\t\tthis.stockpile = null;\n\t\t}\n\n\t\tpublic JStockpileMenu(final Stockpile stockpile) {\n\t\t\tsuper(stockpile.getName());\n\t\t\tthis.stockpile = stockpile;\n\t\t}\n\n\t\tpublic Stockpile getStockpile() {\n\t\t\treturn stockpile;\n\t\t}\n\t}\n\n\tpublic static class BpOptions {\n\t\tprivate final BpData blueprintSelect;\n\t\tprivate final BpData formulaSelect;\n\n\t\tpublic BpOptions(BpData blueprintSelect, BpData formulaSelect) {\n\t\t\tthis.blueprintSelect = blueprintSelect;\n\t\t\tthis.formulaSelect = formulaSelect;\n\t\t}\n\n\t\tpublic BpData getBlueprintSelect() {\n\t\t\treturn blueprintSelect;\n\t\t}\n\n\t\tpublic BpData getFormulaSelect() {\n\t\t\treturn formulaSelect;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/menu/JMenuSum.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.menu;\n\nimport java.math.BigDecimal;\nimport java.math.RoundingMode;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.List;\nimport javax.swing.Icon;\nimport javax.swing.JComponent;\nimport javax.swing.JMenuItem;\nimport javax.swing.JTable;\nimport javax.swing.SwingConstants;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo.AutoNumberFormat;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo.MenuItemValue;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.JAutoMenuComponent;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.NumberValue;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\n\n\npublic class JMenuSum<T> extends JAutoMenuComponent<T> {\n\n\tprivate final JTable jTable;\n\tprivate final Collection<JComponent> menuItems = new ArrayList<>();\n\n\tpublic JMenuSum(final Program program, final JTable jTable) {\n\t\tsuper(program);\n\t\tthis.jTable = jTable;\n\t}\n\n\t@Override\n\tpublic Collection<JComponent> getMenuItems() {\n\t\treturn menuItems;\n\t}\n\n\tpublic void updateMenuDataColumn(int column) {\n\t\tSum sum = new Sum();\n\t\tfor (int row = 0; row < jTable.getRowCount(); row++) {\n\t\t\tsum.add(jTable.getValueAt(row, column));\n\t\t}\n\t\tshow(sum, true);\n\t}\n\n\t@Override\n\tpublic void updateMenuData() {\n\t\tSum sum = new Sum();\n\t\tfor (int row : jTable.getSelectedRows()) {\n\t\t\tfor (int column : jTable.getSelectedColumns()) {\n\t\t\t\tsum.add(jTable.getValueAt(row, column));\n\t\t\t}\n\t\t}\n\t\tshow(sum, false);\n\t}\n\n\tprivate void show(Sum sum, boolean column) {\n\t\tmenuItems.clear();\n\t\tJMenuItem jTitle = new JMenuItem();\n\t\tfinal String title;\n\t\tfinal String toolTip;\n\t\tif (column) {\n\t\t\ttitle = GuiShared.get().cellInformationColumn();\n\t\t\ttoolTip = GuiShared.get().cellInformationColumnToolTip();\n\t\t} else {\n\t\t\ttitle = GuiShared.get().cellInformation();\n\t\t\ttoolTip = GuiShared.get().cellInformationToolTip();\n\t\t}\n\t\tList<MenuItemValue> values = JMenuInfo.createDefault(null, jTitle, title, toolTip, Images.MISC_INFO.getIcon());\n\t\tmenuItems.add(jTitle);\n\t\tmenuItems.add(createMenuItem(values, sum.getSum(), GuiShared.get().cellSum(), GuiShared.get().cellSumToolTip(), Images.MISC_SUM.getIcon()));\n\t\tmenuItems.add(createMenuItem(values, sum.getCount(), GuiShared.get().cellCount(), GuiShared.get().cellCountToolTip(), Images.MISC_COUNT.getIcon()));\n\t\tmenuItems.add(createMenuItem(values, sum.getAvg(), GuiShared.get().cellAverage(), GuiShared.get().cellAverageToolTip(), Images.MISC_AVG.getIcon()));\n\t\tmenuItems.add(createMenuItem(values, sum.getMax(), GuiShared.get().cellMaximum(), GuiShared.get().cellMaximumToolTip(), Images.MISC_MAX.getIcon()));\n\t\tmenuItems.add(createMenuItem(values, sum.getMin(), GuiShared.get().cellMinimum(), GuiShared.get().cellMinimumToolTip(), Images.MISC_MIN.getIcon()));\n\t}\n\n\tprivate JMenuItem createMenuItem(List<MenuItemValue> values, BigDecimal bigDecimal, String copyText, String toolTip, Icon icon) {\n\t\tif (bigDecimal != null) {\n\t\t\tdouble doubleValue = bigDecimal.doubleValue();\n\t\t\tAutoNumberFormat format;\n\t\t\tif (doubleValue % 1 == 0) {\n\t\t\t\tformat = AutoNumberFormat.LONG;\n\t\t\t} else {\n\t\t\t\tformat = AutoNumberFormat.DOUBLE;\n\t\t\t}\n\t\t\treturn JMenuInfo.createMenuItem(values, null, bigDecimal.doubleValue(), format, toolTip, copyText, icon);\n\t\t} else {\n\t\t\treturn createEmptyMenuItem(toolTip, icon);\n\t\t}\n\t}\n\n\tprivate JMenuItem createEmptyMenuItem(String toolTip, Icon icon) {\n\t\tJMenuItem jMenuItem = new JMenuItem(GuiShared.get().none());\n\t\tjMenuItem.setToolTipText(toolTip);\n\t\tjMenuItem.setEnabled(false);\n\t\tjMenuItem.setDisabledIcon(icon);\n\t\tjMenuItem.setHorizontalAlignment(SwingConstants.RIGHT);\n\t\treturn jMenuItem;\n\t}\n\n\tprivate static class Sum {\n\t\tprivate BigDecimal sum = null;\n\t\tprivate BigDecimal count = null;\n\t\tprivate BigDecimal max = null;\n\t\tprivate BigDecimal min = null;\n\n\t\tpublic void add(Object value) {\n\t\t\tif (value instanceof Double) {\n\t\t\t\tadd(new BigDecimal((Double)value));\n\t\t\t} else if (value instanceof Float) {\n\t\t\t\tadd(new BigDecimal((Float)value));\n\t\t\t} else if (value instanceof Long) {\n\t\t\t\tadd(new BigDecimal((Long)value));\n\t\t\t} else if (value instanceof Integer) {\n\t\t\t\tadd(new BigDecimal((Integer)value));\n\t\t\t} else if (value instanceof NumberValue) {\n\t\t\t\tNumberValue numberValue = (NumberValue) value;\n\t\t\t\tif (numberValue.getDouble() != null) {\n\t\t\t\t\tadd(new BigDecimal(numberValue.getDouble()));\n\t\t\t\t} else if (numberValue.getLong() != null) {\n\t\t\t\t\tadd(new BigDecimal(numberValue.getLong()));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate void add(BigDecimal value) {\n\t\t\tif (sum == null) {\n\t\t\t\tsum = value;\n\t\t\t} else {\n\t\t\t\tsum = sum.add(value);\n\t\t\t}\n\t\t\tif (count == null) {\n\t\t\t\tcount = new BigDecimal(0);\n\t\t\t}\n\t\t\tcount = count.add(BigDecimal.ONE);\n\t\t\tif (max == null) {\n\t\t\t\tmax = value;\n\t\t\t} else {\n\t\t\t\tmax = max.max(value);\n\t\t\t}\n\t\t\tif (min == null) {\n\t\t\t\tmin = value;\n\t\t\t} else {\n\t\t\t\tmin = min.min(value);\n\t\t\t}\n\t\t}\n\n\t\tpublic boolean isEmpty(BigDecimal bigDecimal) {\n\t\t\treturn bigDecimal == null || bigDecimal.compareTo(BigDecimal.ZERO) == 0;\n\t\t}\n\n\t\tpublic BigDecimal getSum() {\n\t\t\treturn sum;\n\t\t}\n\n\t\tpublic BigDecimal getCount() {\n\t\t\treturn count;\n\t\t}\n\n\t\tpublic BigDecimal getAvg() {\n\t\t\tif (isEmpty(sum) || isEmpty(count)) {\n\t\t\t\treturn null;\n\t\t\t} else {\n\t\t\t\treturn sum.divide(count, 2, RoundingMode.HALF_UP);\n\t\t\t}\n\t\t}\n\n\t\tpublic BigDecimal getMax() {\n\t\t\treturn max;\n\t\t}\n\n\t\tpublic BigDecimal getMin() {\n\t\t\treturn min;\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/menu/JMenuTags.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.shared.menu;\n\nimport ca.odell.glazedlists.GlazedLists;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Set;\nimport java.util.TreeSet;\nimport javax.swing.JCheckBoxMenuItem;\nimport javax.swing.JMenuItem;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.tag.Tag;\nimport net.nikr.eve.jeveasset.data.settings.types.TagsType;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.MenuScroller;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JTagsDialog.TagIcon;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.JAutoMenu;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\n\n\npublic class JMenuTags<T> extends JAutoMenu<T> {\n\n\tprivate enum TagsAction {\n\t\tACTION_NEW_TAG,\n\t}\n\n\tprivate final JMenuItem jNew;\n\tprivate final ListenerClass listener = new ListenerClass();\n\tprivate final JTagsDialog jTagsDialog;\n\tprivate List<TagsType> tagsTypes = new ArrayList<>();\n\n\tpublic JMenuTags(Program program) {\n\t\tsuper(GuiShared.get().tags(), program);\n\t\tsetIcon(Images.TAG_GRAY.getIcon());\n\n\t\tMenuScroller menuScroller = new MenuScroller(this);\n\t\tmenuScroller.keepVisible(2);\n\t\tmenuScroller.setTopFixedCount(2);\n\t\tmenuScroller.setInterval(125);\n\n\t\tjTagsDialog = new JTagsDialog(program);\n\n\t\tjNew = new JMenuItem(GuiShared.get().tagsNew(), Images.EDIT_ADD.getIcon());\n\t\tjNew.setActionCommand(TagsAction.ACTION_NEW_TAG.name());\n\t\tjNew.addActionListener(listener);\n\t}\n\n\t@Override\n\tpublic void updateMenuData() {\n\t\ttagsTypes = menuData.getTags();\n\n\t\tboolean valid = !tagsTypes.isEmpty();\n\n\t\tremoveAll();\n\n\t\t//Add New\n\t\tadd(jNew);\n\t\tjNew.setEnabled(valid);\n\n\t\t//All Tags\n\t\tSet<Tag> allTags = new TreeSet<>(GlazedLists.comparableComparator());\n\t\tallTags.addAll(Settings.get().getTags().values());\n\n\t\t//Separator\n\t\tif (!allTags.isEmpty()) {\n\t\t\taddSeparator();\n\t\t}\n\n\t\t//Add To\n\t\tJCheckBoxMenuItem jCheckMenuItem;\n\t\tfor (Tag tag : allTags) {\n\t\t\tInteger count = menuData.getTagCount().get(tag);\n\t\t\tif (count == null) {\n\t\t\t\tcount = 0;\n\t\t\t}\n\t\t\tboolean selected = count == tagsTypes.size() && valid;\n\t\t\tif (selected) {\n\t\t\t\tcount = 0;\n\t\t\t}\n\t\t\tjCheckMenuItem = new JTagCheckMenuItem(tag, count);\n\t\t\tif (selected) {\n\t\t\t\tjCheckMenuItem.setIcon(new TagIcon(tag.getColor(), true));\n\t\t\t} else {\n\t\t\t\tjCheckMenuItem.setIcon(new TagIcon(tag.getColor()));\n\t\t\t}\n\t\t\tjCheckMenuItem.addActionListener(listener);\n\t\t\tjCheckMenuItem.setSelected(selected);\n\t\t\tjCheckMenuItem.setEnabled(valid);\n\t\t\tadd(jCheckMenuItem);\n\t\t}\n\t}\n\n\tprivate void addTag(Tag tag) {\n\t\tif (tag != null && !tag.getName().isEmpty()) {\n\t\t\tSettings.lock(\"Tags (New)\"); //Lock for Tags (New)\n\t\t\tTag settingsTag = Settings.get().getTags().get(tag.getName());\n\t\t\tif (settingsTag != null) { //Update\n\t\t\t\t//Load tag\n\t\t\t\ttag = settingsTag;\n\t\t\t} else { //Add new\n\t\t\t\tSettings.get().getTags().put(tag.getName(), tag);\n\t\t\t}\n\t\t\tfor (TagsType tagsType : tagsTypes) {\n\t\t\t\t//Add tag to item\n\t\t\t\ttagsType.getTags().add(tag);\n\t\t\t\t//Add ID to tag\n\t\t\t\ttag.getIDs().add(tagsType.getTagID());\n\t\t\t\t//Update settings\n\t\t\t\tSettings.get().getTags(tagsType.getTagID()).add(tag);\n\t\t\t}\n\t\t\tSettings.unlock(\"Tags (New)\"); //Unlock for Tags (New)\n\t\t\tprogram.updateTags();\n\t\t\tprogram.saveSettings(\"Tags (New)\"); //Save Tags (New)\n\t\t}\n\t}\n\n\tprivate void removeTag(Tag tag) {\n\t\tif (tag != null) {\n\t\t\tSettings.lock(\"Tags (Delete)\"); //Lock for Tags (Delete)\n\t\t\tfor (TagsType tagsType : tagsTypes) {\n\t\t\t\t//Remove tag form item\n\t\t\t\ttagsType.getTags().remove(tag);\n\t\t\t\t//Remove ID from tag\n\t\t\t\ttag.getIDs().remove(tagsType.getTagID());\n\t\t\t\t//Update settings\n\t\t\t\tSettings.get().getTags(tagsType.getTagID()).remove(tag);\n\t\t\t}\n\t\t\tSettings.unlock(\"Tags (Delete)\"); //Unlock for Tags (Delete)\n\t\t\tprogram.updateTags();\n\t\t\tprogram.saveSettings(\"Tags (Delete)\"); //Save Tags (Delete)\n\t\t}\n\t}\n\n\tprivate class ListenerClass implements ActionListener {\n\n\t\t@Override\n\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\tObject object = e.getSource();\n\t\t\tif (object instanceof JTagCheckMenuItem) {\n\t\t\t\tJTagCheckMenuItem jCheckBoxMenuItem = (JTagCheckMenuItem) object;\n\t\t\t\tTag tag = jCheckBoxMenuItem.getTag();\n\t\t\t\tif (!jCheckBoxMenuItem.isSelected()) { //State change before this is called\n\t\t\t\t\tremoveTag(tag);\n\t\t\t\t} else {\n\t\t\t\t\taddTag(tag);\n\t\t\t\t}\n\t\t\t} else if (TagsAction.ACTION_NEW_TAG.name().equals(e.getActionCommand())) {\n\t\t\t\tTag tag = jTagsDialog.show();\n\t\t\t\taddTag(tag);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static class JTagCheckMenuItem extends JCheckBoxMenuItem {\n\n\t\tprivate final Tag tag;\n\n\t\tpublic JTagCheckMenuItem(Tag tag, Integer count) {\n\t\t\tsuper(GuiShared.get().tagsName(tag.getName(), count));\n\t\t\tthis.tag = tag;\n\t\t}\n\n\t\tpublic Tag getTag() {\n\t\t\treturn tag;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/menu/JMenuTransactionFilter.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.menu;\n\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Set;\nimport javax.swing.JMenuItem;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter;\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter.CompareType;\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter.LogicType;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.JAutoMenu;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewGroup;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewLocation;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewTab;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewTab.OverviewTableMenu;\nimport net.nikr.eve.jeveasset.gui.tabs.transaction.TransactionTab;\nimport net.nikr.eve.jeveasset.gui.tabs.transaction.TransactionTableFormat;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\nimport net.nikr.eve.jeveasset.i18n.TabsOverview;\n\n\npublic class JMenuTransactionFilter<T> extends JAutoMenu<T> {\n\n\tprivate enum MenuTransactionFilterAction {\n\t\tSTATION_FILTER,\n\t\tPLANET_FILTER,\n\t\tSYSTEM_FILTER,\n\t\tCONSTELLATION_FILTER,\n\t\tREGION_FILTER,\n\t\tOVERVIEW_GROUP_FILTER,\n\t\tITEM_TYPE_FILTER\n\t}\n\n\tprivate final JMenuItem jTypeID;\n\tprivate final JMenuItem jPlanet;\n\tprivate final JMenuItem jStation;\n\tprivate final JMenuItem jSystem;\n\tprivate final JMenuItem jConstellation;\n\tprivate final JMenuItem jRegion;\n\tprivate final JMenuItem jLocations;\n\n\tpublic JMenuTransactionFilter(final Program program) {\n\t\tsuper(GuiShared.get().addTransactionFilter(), program);\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tthis.setIcon(Images.TOOL_TRANSACTION.getIcon());\n\n\t\tjTypeID = new JMenuItem(GuiShared.get().item());\n\t\tjTypeID.setIcon(Images.EDIT_ADD.getIcon());\n\t\tjTypeID.setActionCommand(MenuTransactionFilterAction.ITEM_TYPE_FILTER.name());\n\t\tjTypeID.addActionListener(listener);\n\t\tadd(jTypeID);\n\n\t\taddSeparator();\n\n\t\tjStation = new JMenuItem(GuiShared.get().station());\n\t\tjStation.setIcon(Images.LOC_STATION.getIcon());\n\t\tjStation.setActionCommand(MenuTransactionFilterAction.STATION_FILTER.name());\n\t\tjStation.addActionListener(listener);\n\t\tadd(jStation);\n\n\t\tjPlanet = new JMenuItem(GuiShared.get().planet());\n\t\tjPlanet.setIcon(Images.LOC_PLANET.getIcon());\n\t\tjPlanet.setActionCommand(MenuTransactionFilterAction.PLANET_FILTER.name());\n\t\tjPlanet.addActionListener(listener);\n\t\tadd(jPlanet);\n\n\t\tjSystem = new JMenuItem(GuiShared.get().system());\n\t\tjSystem.setIcon(Images.LOC_SYSTEM.getIcon());\n\t\tjSystem.setActionCommand(MenuTransactionFilterAction.SYSTEM_FILTER.name());\n\t\tjSystem.addActionListener(listener);\n\t\tadd(jSystem);\n\n\t\tjConstellation = new JMenuItem(GuiShared.get().constellation());\n\t\tjConstellation.setIcon(Images.LOC_CONSTELLATION.getIcon());\n\t\tjConstellation.setActionCommand(MenuTransactionFilterAction.CONSTELLATION_FILTER.name());\n\t\tjConstellation.addActionListener(listener);\n\t\tadd(jConstellation);\n\n\t\tjRegion = new JMenuItem(GuiShared.get().region());\n\t\tjRegion.setIcon(Images.LOC_REGION.getIcon());\n\t\tjRegion.setActionCommand(MenuTransactionFilterAction.REGION_FILTER.name());\n\t\tjRegion.addActionListener(listener);\n\t\tadd(jRegion);\n\n\t\tjLocations = new JMenuItem(TabsOverview.get().locations());\n\t\tjLocations.setIcon(Images.LOC_LOCATIONS.getIcon());\n\t\tjLocations.setActionCommand(MenuTransactionFilterAction.OVERVIEW_GROUP_FILTER.name());\n\t\tjLocations.addActionListener(listener);\n\t}\n\n\t@Override\n\tpublic void updateMenuData() {\n\t\tjTypeID.setEnabled(!menuData.getTypeIDs().isEmpty());\n\t\tjStation.setEnabled(!menuData.getStationAndCitadelNames().isEmpty());\n\t\tjPlanet.setEnabled(!menuData.getPlanetNames().isEmpty());\n\t\tjSystem.setEnabled(!menuData.getSystemNames().isEmpty());\n\t\tjConstellation.setEnabled(!menuData.getConstellationNames().isEmpty());\n\t\tjRegion.setEnabled(!menuData.getRegionNames().isEmpty());\n\t}\n\n\tpublic void setTool(Object object) {\n\t\tif (object instanceof OverviewTableMenu) {\n\t\t\tOverviewTab overviewTab = ((OverviewTableMenu)object).getOverviewTab();\n\t\t\tjLocations.setEnabled(overviewTab.isGroupAndNotEmpty());\n\t\t\tadd(jLocations);\n\t\t} else {\n\t\t\tremove(jLocations);\n\t\t}\n\t}\n\n\tprivate void addFilters(Set<String> names, TransactionTableFormat column, CompareType compareType) {\n\t\tList<Filter> filters = JMenuAssetFilter.getFilters(names, column, compareType);\n\t\tTransactionTab transactionsTab = program.getTransactionsTab(true);\n\t\ttransactionsTab.addFilters(filters);\n\t\tprogram.getMainWindow().addTab(transactionsTab);\n\t}\n\n\tprivate class ListenerClass implements ActionListener {\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (MenuTransactionFilterAction.STATION_FILTER.name().equals(e.getActionCommand())) {\n\t\t\t\taddFilters(menuData.getStationAndCitadelNames(), TransactionTableFormat.LOCATION, CompareType.EQUALS);\n\t\t\t} else if (MenuTransactionFilterAction.PLANET_FILTER.name().equals(e.getActionCommand())) {\n\t\t\t\taddFilters(menuData.getPlanetNames(), TransactionTableFormat.LOCATION, CompareType.EQUALS);\n\t\t\t} else if (MenuTransactionFilterAction.SYSTEM_FILTER.name().equals(e.getActionCommand())) {\n\t\t\t\taddFilters(menuData.getSystemNames(), TransactionTableFormat.SYSTEM, CompareType.EQUALS);\n\t\t\t} else if (MenuTransactionFilterAction.CONSTELLATION_FILTER.name().equals(e.getActionCommand())) {\n\t\t\t\taddFilters(menuData.getConstellationNames(), TransactionTableFormat.CONSTELLATION, CompareType.EQUALS);\n\t\t\t} else if (MenuTransactionFilterAction.REGION_FILTER.name().equals(e.getActionCommand())) {\n\t\t\t\taddFilters(menuData.getRegionNames(), TransactionTableFormat.REGION, CompareType.EQUALS);\n\t\t\t} else if (MenuTransactionFilterAction.OVERVIEW_GROUP_FILTER.name().equals(e.getActionCommand())) {\n\t\t\t\tOverviewGroup overviewGroup = program.getOverviewTab(true).getSelectGroup();\n\t\t\t\tif (overviewGroup == null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tList<Filter> filters = new ArrayList<>();\n\t\t\t\tfor (OverviewLocation location : overviewGroup.getLocations()) {\n\t\t\t\t\tif (location.isStation()) {\n\t\t\t\t\t\tfilters.add(new Filter(LogicType.OR, TransactionTableFormat.LOCATION, CompareType.EQUALS, location.getName()));\n\t\t\t\t\t}\n\t\t\t\t\tif (location.isPlanet()) {\n\t\t\t\t\t\tfilters.add(new Filter(LogicType.OR, TransactionTableFormat.LOCATION, CompareType.EQUALS, location.getName()));\n\t\t\t\t\t}\n\t\t\t\t\tif (location.isSystem()) {\n\t\t\t\t\t\tfilters.add(new Filter(LogicType.OR, TransactionTableFormat.SYSTEM, CompareType.EQUALS, location.getName()));\n\t\t\t\t\t}\n\t\t\t\t\tif (location.isConstellation()) {\n\t\t\t\t\t\tfilters.add(new Filter(LogicType.OR, TransactionTableFormat.CONSTELLATION, CompareType.EQUALS, location.getName()));\n\t\t\t\t\t}\n\t\t\t\t\tif (location.isRegion()) {\n\t\t\t\t\t\tfilters.add(new Filter(LogicType.OR, TransactionTableFormat.REGION, CompareType.EQUALS, location.getName()));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tTransactionTab transactionsTab = program.getTransactionsTab(true);\n\t\t\t\ttransactionsTab.addFilters(filters);\n\t\t\t\tprogram.getMainWindow().addTab(transactionsTab);\n\t\t\t} else if (MenuTransactionFilterAction.ITEM_TYPE_FILTER.name().equals(e.getActionCommand())) {\n\t\t\t\taddFilters(menuData.getTypeNames(), TransactionTableFormat.NAME, CompareType.CONTAINS);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/menu/JMenuUI.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.menu;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.util.ArrayList;\r\nimport java.util.Collections;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Set;\r\nimport javax.swing.JMenu;\r\nimport javax.swing.JMenuItem;\r\nimport javax.swing.JOptionPane;\r\nimport javax.swing.SwingUtilities;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyShip;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.JOptionInput;\r\nimport net.nikr.eve.jeveasset.gui.shared.NativeUtil;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JLockWindow;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JLockWindow.LockWorkerAdaptor;\r\nimport net.nikr.eve.jeveasset.gui.tabs.routing.SolarSystem;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\nimport net.nikr.eve.jeveasset.io.esi.AbstractEsiGetter;\r\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.DesktopUtil;\r\nimport net.troja.eve.esi.api.UserInterfaceApi;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class JMenuUI <T> extends MenuManager.JAutoMenu<T> {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(JMenuUI.class);\r\n\r\n\tprivate enum MenuUIAction {\r\n\t\tAUTOPILOT_SYSTEM,\r\n\t\tAUTOPILOT_STATION,\r\n\t\tMARKET,\r\n\t\tOWNER,\r\n\t\tCONTRACTS\r\n\t}\r\n\r\n\tpublic static enum EsiOwnerRequirement {\r\n\t\tAUTOPILOT,\r\n\t\tOPEN_WINDOW,\r\n\t}\r\n\r\n\tprivate final JMenu jWaypoints;\r\n\tprivate final JMenuItem jSystem;\r\n\tprivate final JMenuItem jStation;\r\n\tprivate final JMenuItem jMarket;\r\n\tprivate final JMenuItem jOwner;\r\n\tprivate final JMenuItem jContracts;\r\n\r\n\tprivate static JLockWindow jLockWindow = null;\r\n\r\n\tpublic JMenuUI(Program program) {\r\n\t\tsuper(GuiShared.get().ui(), program);\r\n\t\tsetIcon(Images.MISC_EVE.getIcon());\r\n\r\n\t\tListenerClass listener = new ListenerClass();\r\n\r\n\t\tjWaypoints = new JMenu(GuiShared.get().uiWaypoint());\r\n\t\tjWaypoints.setIcon(Images.TOOL_ROUTING.getIcon());\r\n\t\tadd(jWaypoints);\r\n\r\n\t\tjStation = new JMenuItem(GuiShared.get().uiStation());\r\n\t\tjStation.setIcon(Images.LOC_STATION.getIcon());\r\n\t\tjStation.setActionCommand(MenuUIAction.AUTOPILOT_STATION.name());\r\n\t\tjStation.addActionListener(listener);\r\n\t\tjWaypoints.add(jStation);\r\n\r\n\t\tjSystem = new JMenuItem(GuiShared.get().uiSystem());\r\n\t\tjSystem.setIcon(Images.LOC_SYSTEM.getIcon());\r\n\t\tjSystem.setActionCommand(MenuUIAction.AUTOPILOT_SYSTEM.name());\r\n\t\tjSystem.addActionListener(listener);\r\n\t\tjWaypoints.add(jSystem);\r\n\r\n\t\tjMarket = new JMenuItem(GuiShared.get().uiMarket());\r\n\t\tjMarket.setIcon(Images.TOOL_MARKET_ORDERS.getIcon());\r\n\t\tjMarket.setActionCommand(MenuUIAction.MARKET.name());\r\n\t\tjMarket.addActionListener(listener);\r\n\t\tadd(jMarket);\r\n\r\n\t\tjOwner = new JMenuItem(GuiShared.get().uiOwner());\r\n\t\tjOwner.setIcon(Images.DIALOG_PROFILES.getIcon());\r\n\t\tjOwner.setActionCommand(MenuUIAction.OWNER.name());\r\n\t\tjOwner.addActionListener(listener);\r\n\t\tadd(jOwner);\r\n\r\n\t\tjContracts = new JMenuItem(GuiShared.get().uiContract());\r\n\t\tjContracts.setIcon(Images.TOOL_CONTRACTS.getIcon());\r\n\t\tjContracts.setActionCommand(MenuUIAction.CONTRACTS.name());\r\n\t\tjContracts.addActionListener(listener);\r\n\t\tadd(jContracts);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void updateMenuData() {\r\n\t\tjWaypoints.setEnabled(menuData.getSystemLocations().size() == 1 || menuData.getAutopilotStationLocations().size() == 1 || menuData.getContracts().size() == 1);\r\n\t\tjStation.setEnabled(menuData.getAutopilotStationLocations().size() == 1 || menuData.getContracts().size() == 1);\r\n\t\tjSystem.setEnabled(menuData.getSystemLocations().size() == 1 || menuData.getContracts().size() == 1);\r\n\t\tjMarket.setEnabled(menuData.getMarketTypeIDs().size() == 1);\r\n\t\tjOwner.setEnabled(!menuData.getOwnerIDs().isEmpty());\r\n\t\tjContracts.setEnabled(menuData.getContracts().size() == 1);\r\n\t}\r\n\r\n\tprivate JLockWindow getLockWindow() {\r\n\t\treturn getLockWindow(program);\r\n\t}\r\n\r\n\tpublic static JLockWindow getLockWindow(Program program) {\r\n\t\tif (jLockWindow == null) {\r\n\t\t\tjLockWindow = new JLockWindow(program.getMainWindow().getFrame());\r\n\t\t}\r\n\t\treturn jLockWindow;\r\n\t}\r\n\r\n\tprivate EsiOwner selectOwner(EsiOwnerRequirement requirement) {\r\n\t\treturn selectOwner(program, requirement);\r\n\t}\r\n\r\n\tpublic static EsiOwner selectOwner(Program program, EsiOwnerRequirement requirement) {\r\n\t\tList<EsiOwner> owners = new ArrayList<>();\r\n\t\tfor (EsiOwner owner : program.getProfileManager().getEsiOwners()) {\r\n\t\t\tif (requirement == EsiOwnerRequirement.OPEN_WINDOW && owner.isOpenWindows()) {\r\n\t\t\t\towners.add(owner);\r\n\t\t\t}\r\n\t\t\tif (requirement == EsiOwnerRequirement.AUTOPILOT && owner.isAutopilot()) {\r\n\t\t\t\towners.add(owner);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (owners.isEmpty()) {\r\n\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), GuiShared.get().uiCharacterInvalidMsg(), GuiShared.get().uiCharacterTitle(), JOptionPane.PLAIN_MESSAGE);\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tObject object = JOptionInput.showInputDialog(program.getMainWindow().getFrame(), GuiShared.get().uiCharacterMsg(), GuiShared.get().uiCharacterTitle(), JOptionPane.PLAIN_MESSAGE, null, owners.toArray(new EsiOwner[owners.size()]), owners.get(0));\r\n\t\tif (object == null) {\r\n\t\t\treturn null; //Cancel\r\n\t\t} else if (object instanceof EsiOwner) {\r\n\t\t\treturn (EsiOwner) object;\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate MyLocation selectLocation(Set<MyLocation> locations) {\r\n\t\treturn selectLocation(program, locations);\r\n\t}\r\n\r\n\tpublic static MyLocation selectLocation(Program program, Set<MyLocation> locations) {\r\n\t\tif (locations.isEmpty()) {\r\n\t\t\treturn null;\r\n\t\t} else if (locations.size() == 1) {\r\n\t\t\treturn locations.iterator().next();\r\n\t\t} else {\r\n\t\t\tObject object = JOptionInput.showInputDialog(program.getMainWindow().getFrame(), null, GuiShared.get().uiLocationTitle(), JOptionPane.PLAIN_MESSAGE, null, locations.toArray(new MyLocation[locations.size()]), locations.iterator().next());\r\n\t\t\tif (object == null) {\r\n\t\t\t\treturn null; //Cancel\r\n\t\t\t} else if (object instanceof MyLocation) {\r\n\t\t\t\treturn (MyLocation) object;\r\n\t\t\t} else {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void setAutopilot(Long locationID, EsiOwner owner) {\r\n\t\tboolean addToBeginning;\r\n\t\tboolean clearOtherWaypoints;\r\n\t\tint clearValue = JOptionPane.showConfirmDialog(program.getMainWindow().getFrame(), GuiShared.get().uiWaypointClear(), GuiShared.get().uiWaypointTitle(), JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE);\r\n\t\tclearOtherWaypoints = clearValue == JOptionPane.YES_OPTION;\r\n\t\tif (clearOtherWaypoints) {\r\n\t\t\taddToBeginning = false;\r\n\t\t} else {\r\n\t\t\tint beginningValue = JOptionPane.showConfirmDialog(program.getMainWindow().getFrame(), GuiShared.get().uiWaypointBeginning(), GuiShared.get().uiWaypointTitle(), JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE);\r\n\t\t\taddToBeginning = beginningValue == JOptionPane.YES_OPTION;\r\n\t\t}\t\t\r\n\t\tgetLockWindow().show(GuiShared.get().updating(), new EsiUpdate(owner) {\r\n\t\t\t@Override\r\n\t\t\tprotected void updateESI() throws Throwable {\r\n\t\t\t\tgetApi().postUiAutopilotWaypoint(addToBeginning, clearOtherWaypoints, locationID, AbstractEsiGetter.COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t}\r\n\t\t\t@Override\r\n\t\t\tprotected void ok() {\r\n\t\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), GuiShared.get().uiWaypointOk(), GuiShared.get().uiWaypointTitle(), JOptionPane.PLAIN_MESSAGE);\r\n\t\t\t\tEveGatecampCheck.open(program, owner, locationID);\r\n\t\t\t}\r\n\t\t\t@Override\r\n\t\t\tprotected void fail() {\r\n\t\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), GuiShared.get().uiWaypointFail(), GuiShared.get().uiWaypointTitle(), JOptionPane.PLAIN_MESSAGE);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tpublic static class ContractMenuData extends MenuData<MyContractItem> {\r\n\r\n\t\tpublic ContractMenuData(List<MyContractItem> items) {\r\n\t\t\tsuper(items);\r\n\t\t\tSet<MyContract> contracts = new HashSet<>();\r\n\t\t\tfor (Object item : items) {\r\n\t\t\t\tif (item instanceof MyContractItem) {\r\n\t\t\t\t\tcontracts.add(((MyContractItem)item).getContract());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tsetContracts(contracts);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener {\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\tif (MenuUIAction.AUTOPILOT_STATION.name().equals(e.getActionCommand())) {\r\n\t\t\t\tEsiOwner owner = selectOwner(EsiOwnerRequirement.AUTOPILOT);\r\n\t\t\t\tif (owner == null) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tMyLocation station = selectLocation(menuData.getAutopilotStationLocations());\r\n\t\t\t\tif (station == null) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tsetAutopilot(station.getStationID() != 0 ? station.getStationID() : station.getLocationID(), owner);\r\n\t\t\t} else if (MenuUIAction.AUTOPILOT_SYSTEM.name().equals(e.getActionCommand())) {\r\n\t\t\t\tEsiOwner owner = selectOwner(EsiOwnerRequirement.AUTOPILOT);\r\n\t\t\t\tif (owner == null) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tMyLocation system = selectLocation(menuData.getSystemLocations());\r\n\t\t\t\tif (system == null) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tsetAutopilot(system.getSystemID(), owner);\r\n\t\t\t} else if (MenuUIAction.MARKET.name().equals(e.getActionCommand())) {\r\n\t\t\t\tEsiOwner owner = selectOwner(EsiOwnerRequirement.OPEN_WINDOW);\r\n\t\t\t\tInteger typeID = menuData.getMarketTypeIDs().iterator().next();\r\n\t\t\t\topenMarketDetails(program, owner, typeID, true);\r\n\t\t\t} else if (MenuUIAction.OWNER.name().equals(e.getActionCommand())) {\r\n\t\t\t\tEsiOwner esiOwner = selectOwner(EsiOwnerRequirement.OPEN_WINDOW);\r\n\t\t\t\tif (esiOwner == null) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tList<Owner> owners = new ArrayList<>();\r\n\t\t\t\tfor (Long ownerID : menuData.getOwnerIDs()) {\r\n\t\t\t\t\tif (ownerID != null && ownerID > 0) {\r\n\t\t\t\t\t\tString name = Settings.get().getOwners().get(ownerID);\r\n\t\t\t\t\t\tif (name == null) {\r\n\t\t\t\t\t\t\tname = GuiShared.get().unknownOwner();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\towners.add(new Owner(ownerID, name));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tOwner owner;\r\n\t\t\t\tif (owners.size() > 1) {\r\n\t\t\t\t\tCollections.sort(owners);\r\n\t\t\t\t\tObject object = JOptionInput.showInputDialog(program.getMainWindow().getFrame(), GuiShared.get().uiOwnerMsg(), GuiShared.get().uiOwnerTitle(), JOptionPane.PLAIN_MESSAGE, null, owners.toArray(new Owner[owners.size()]), owners.get(0));\r\n\t\t\t\t\tif (object == null) {\r\n\t\t\t\t\t\treturn; //Cancel\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (object instanceof Owner) {\r\n\t\t\t\t\t\towner = (Owner) object;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (!owners.isEmpty()) {\r\n\t\t\t\t\towner = owners.get(0);\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tgetLockWindow().show(GuiShared.get().updating(), new EsiUpdate(esiOwner) {\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tprotected void updateESI() throws Throwable {\r\n\t\t\t\t\t\tgetApi().postUiOpenwindowInformation(owner.getID(), AbstractEsiGetter.COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tprotected void ok() {\r\n\t\t\t\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), GuiShared.get().uiOwnerOk(), GuiShared.get().uiOwnerTitle(), JOptionPane.PLAIN_MESSAGE);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tprotected void fail() {\r\n\t\t\t\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), GuiShared.get().uiOwnerFail(), GuiShared.get().uiOwnerTitle(), JOptionPane.PLAIN_MESSAGE);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else if (MenuUIAction.CONTRACTS.name().equals(e.getActionCommand())) {\r\n\t\t\t\tEsiOwner owner = selectOwner(EsiOwnerRequirement.OPEN_WINDOW);\r\n\t\t\t\tif (owner == null) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tMyContract contract = menuData.getContracts().iterator().next();\r\n\t\t\t\tgetLockWindow().show(GuiShared.get().updating(), new EsiUpdate(owner) {\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tprotected void updateESI() throws Throwable {\r\n\t\t\t\t\t\tgetApi().postUiOpenwindowContract(SafeConverter.toLong(contract.getContractID()), AbstractEsiGetter.COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tprotected void ok() {\r\n\t\t\t\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), GuiShared.get().uiContractOk(), GuiShared.get().uiContractTitle(), JOptionPane.PLAIN_MESSAGE);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tprotected void fail() {\r\n\t\t\t\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), GuiShared.get().uiContractFail(), GuiShared.get().uiContractTitle(), JOptionPane.PLAIN_MESSAGE);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void openMarketDetails(Program program, EsiOwner owner, Integer typeID, boolean showOkMsg) {\r\n\t\tif (owner == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tgetLockWindow(program).show(GuiShared.get().updating(), new EsiUpdate(owner) {\r\n\t\t\t@Override\r\n\t\t\tprotected void updateESI() throws Throwable {\r\n\t\t\t\tgetApi().postUiOpenwindowMarketdetails(SafeConverter.toLong(typeID), AbstractEsiGetter.COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t}\r\n\t\t\t@Override\r\n\t\t\tprotected void ok() {\r\n\t\t\t\tif (showOkMsg) {\r\n\t\t\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), GuiShared.get().uiMarketOk(), GuiShared.get().uiMarketTitle(), JOptionPane.PLAIN_MESSAGE);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t@Override\r\n\t\t\tprotected void fail() {\r\n\t\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), GuiShared.get().uiMarketFail(), GuiShared.get().uiMarketTitle(), JOptionPane.PLAIN_MESSAGE);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate static class Owner implements Comparable<Owner> {\r\n\t\tprivate final long id;\r\n\t\tprivate final String name;\r\n\r\n\t\tpublic Owner(long id, String name) {\r\n\t\t\tthis.id = id;\r\n\t\t\tthis.name = name;\r\n\t\t}\r\n\r\n\t\tpublic long getID() {\r\n\t\t\treturn id;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic String toString() {\r\n\t\t\treturn name;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int compareTo(Owner o) {\r\n\t\t\treturn this.name.compareTo(o.name);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static abstract class EsiUpdate extends LockWorkerAdaptor {\r\n\r\n\t\tprivate boolean ok;\r\n\r\n\t\tprotected abstract void updateESI() throws Throwable;\r\n\t\tprotected abstract void ok();\r\n\t\tprotected abstract void fail();\r\n\r\n\t\tprivate final EsiOwner owner;\r\n\r\n\t\tpublic EsiUpdate(EsiOwner owner) {\r\n\t\t\tthis.owner = owner;\r\n\t\t}\r\n\r\n\t\tprotected UserInterfaceApi getApi() {\r\n\t\t\tif (owner != null) { //Auth\r\n\t\t\t\treturn owner.getUserInterfaceApiAuth();\r\n\t\t\t} else {\r\n\t\t\t\treturn AbstractEsiGetter.USER_INTERFACE_API;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void task() {\r\n\t\t\ttry {\r\n\t\t\t\tupdateESI();\r\n\t\t\t\tok = true;\r\n\t\t\t} catch (Throwable t) {\r\n\t\t\t\tok = false;\r\n\t\t\t\tLOG.error(t.getMessage(), t);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void gui() {\r\n\t\t\tSwingUtilities.invokeLater(new Runnable() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void run() {\r\n\t\t\t\t\tif (ok) {\r\n\t\t\t\t\t\tok();\r\n\t\t\t\t\t\tif (Settings.get().isFocusEveOnlineOnEsiUiCalls()) {\r\n\t\t\t\t\t\t\tNativeUtil.focusEveOnline(owner.getOwnerName());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tfail();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static class EveGatecampCheck {\r\n\r\n\t\tpublic static final String[] EVE_GATECAMP_CHECK_ROUTE_OPTIONS = {\r\n\t\t\t\t\tGuiShared.get().uiWaypointEveGatecampCheckSecure(),\r\n\t\t\t\t\tGuiShared.get().uiWaypointEveGatecampCheckUnsecure(),\r\n\t\t\t\t\tGuiShared.get().uiWaypointEveGatecampCheckShortest()\r\n\t\t\t\t};\r\n\t\tpublic static final String[] EVE_GATECAMP_CHECK_OPEN_OPTIONS = {\r\n\t\t\t\t\tGuiShared.get().uiWaypointEveGatecampCheckAsk(),\r\n\t\t\t\t\tGuiShared.get().uiWaypointEveGatecampCheckAlwaysOpen(),\r\n\t\t\t\t\tGuiShared.get().uiWaypointEveGatecampCheckNeverOpen()\r\n\t\t\t\t};\r\n\r\n\t\tpublic static void setOpenOption(Object object) {\r\n\t\t\tif (object == null) {\r\n\t\t\t\treturn; //Cancel\r\n\t\t\t}\r\n\t\t\tif (GuiShared.get().uiWaypointEveGatecampCheckAlwaysOpen().equals(object)) {\r\n\t\t\t\t//Secure\r\n\t\t\t\tSettings.get().setEveGatecampCheckAlwaysOpen(true);\r\n\t\t\t\tSettings.get().setEveGatecampCheckNeverOpen(false);\r\n\t\t\t} else if (GuiShared.get().uiWaypointEveGatecampCheckNeverOpen().equals(object)) {\r\n\t\t\t\t//Unsecure\r\n\t\t\t\tSettings.get().setEveGatecampCheckSecure(false);\r\n\t\t\t\tSettings.get().setEveGatecampCheckUnsecure(true);\r\n\t\t\t} else if (GuiShared.get().uiWaypointEveGatecampCheckAsk().equals(object)) {\r\n\t\t\t\t//Shortest\r\n\t\t\t\tSettings.get().setEveGatecampCheckSecure(false);\r\n\t\t\t\tSettings.get().setEveGatecampCheckUnsecure(false);\r\n\t\t\t} else {\r\n\t\t\t\t//Default\r\n\t\t\t\tSettings.get().setEveGatecampCheckSecure(false);\r\n\t\t\t\tSettings.get().setEveGatecampCheckUnsecure(false);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tpublic static String getOpenOption() {\r\n\t\t\tif (Settings.get().isEveGatecampCheckAlwaysOpen()) {\r\n\t\t\t\treturn GuiShared.get().uiWaypointEveGatecampCheckAlwaysOpen();\r\n\t\t\t} else if (Settings.get().isEveGatecampCheckNeverOpen()) {\r\n\t\t\t\treturn GuiShared.get().uiWaypointEveGatecampCheckNeverOpen();\r\n\t\t\t} else {\r\n\t\t\t\treturn GuiShared.get().uiWaypointEveGatecampCheckAsk();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tpublic static String setRouteOption(Object object) {\r\n\t\t\tif (object == null) {\r\n\t\t\t\treturn \"\"; //Cancel\r\n\t\t\t}\r\n\t\t\tif (GuiShared.get().uiWaypointEveGatecampCheckSecure().equals(object)) {\r\n\t\t\t\t//Secure\r\n\t\t\t\tSettings.get().setEveGatecampCheckSecure(true);\r\n\t\t\t\tSettings.get().setEveGatecampCheckUnsecure(false);\r\n\t\t\t\treturn \":secure\";\r\n\t\t\t} else if (GuiShared.get().uiWaypointEveGatecampCheckUnsecure().equals(object)) {\r\n\t\t\t\t//Unsecure\r\n\t\t\t\tSettings.get().setEveGatecampCheckSecure(false);\r\n\t\t\t\tSettings.get().setEveGatecampCheckUnsecure(true);\r\n\t\t\t\treturn \":insecure\";\r\n\t\t\t} else if (GuiShared.get().uiWaypointEveGatecampCheckShortest().equals(object)) {\r\n\t\t\t\t//Shortest\r\n\t\t\t\tSettings.get().setEveGatecampCheckSecure(false);\r\n\t\t\t\tSettings.get().setEveGatecampCheckUnsecure(false);\r\n\t\t\t\treturn \":shortest\";\r\n\t\t\t}\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\tpublic static String getRouteOption() {\r\n\t\t\tif (Settings.get().isEveGatecampCheckSecure()) {\r\n\t\t\t\t//Secure\r\n\t\t\t\treturn GuiShared.get().uiWaypointEveGatecampCheckSecure();\r\n\t\t\t} else if (Settings.get().isEveGatecampCheckUnsecure()) {\r\n\t\t\t\t//Unsecure\r\n\t\t\t\treturn GuiShared.get().uiWaypointEveGatecampCheckUnsecure();\r\n\t\t\t} else {\r\n\t\t\t\t//Shortest\r\n\t\t\t\treturn GuiShared.get().uiWaypointEveGatecampCheckShortest();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tpublic static void open(Program program, EsiOwner owner, long locationID) {\r\n\t\t\topen(program, owner, Collections.singleton(locationID));\r\n\t\t}\r\n\r\n\t\tpublic static void open(Program program, EsiOwner owner, Set<Long> locationIDs) {\r\n\t\t\tif (owner == null) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tMyShip activeShip = owner.getActiveShip();\r\n\t\t\t\r\n\t\t\tif (activeShip == null || activeShip.getLocation().isEmpty()) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tString from = activeShip.getLocation().getSystem();\r\n\r\n\t\t\tStringBuilder routeBuilder = new StringBuilder();\r\n\t\t\tSet<String> route = new HashSet<>();\r\n\t\t\tfor (Long locationID : locationIDs) {\r\n\t\t\t\tMyLocation toLocation = ApiIdConverter.getLocation(locationID);\r\n\t\t\t\tif (toLocation.isEmpty()) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tString to = toLocation.getSystem();\r\n\t\t\t\tif (routeBuilder.length() > 0) {\r\n\t\t\t\t\trouteBuilder.append(\",\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (from.equals(to)) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\troute.add(to);\r\n\t\t\t\trouteBuilder.append(to.replace(\" \", \"%20\"));\r\n\t\t\t}\r\n\t\t\tif (routeBuilder.length() == 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tStringBuilder avoidBuilder = new StringBuilder();\r\n\t\t\tboolean avoidInRoute = false;\r\n\t\t\tfor (SolarSystem system : Settings.get().getJumpsAvoidSettings().getAvoid().values()) {\r\n\t\t\t\tif (avoidBuilder.length() > 0) {\r\n\t\t\t\t\tavoidBuilder.append(\",\");\r\n\t\t\t\t}\r\n\t\t\t\tString systemName = system.getName();\r\n\t\t\t\tif (!avoidInRoute && route.contains(systemName)) {\r\n\t\t\t\t\tavoidInRoute = true;\r\n\t\t\t\t}\r\n\t\t\t\tavoidBuilder.append(systemName.replace(\" \", \"%20\"));\r\n\t\t\t}\r\n\t\t\tif (!Settings.get().isEveGatecampCheckSet()) {\r\n\t\t\t\t//Default Options\r\n\t\t\t\t\r\n\t\t\t\tint returnValue = JOptionPane.showOptionDialog(program.getMainWindow().getFrame(), GuiShared.get().uiWaypointEveGatecampCheckOptions(), GuiShared.get().uiWaypointTitle(), JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, EVE_GATECAMP_CHECK_OPEN_OPTIONS, EVE_GATECAMP_CHECK_OPEN_OPTIONS[0]);\r\n\t\t\t\tif (returnValue == JOptionPane.CLOSED_OPTION) {\r\n\t\t\t\t\treturn; //Cancel\r\n\t\t\t\t}\r\n\t\t\t\tString openOption = EVE_GATECAMP_CHECK_OPEN_OPTIONS[returnValue];\r\n\t\t\t\tif (GuiShared.get().uiWaypointEveGatecampCheckAlwaysOpen().equals(openOption)) { //Always Open\r\n\t\t\t\t\t//Default Route Options\r\n\t\t\t\t\tObject routeOption = JOptionInput.showInputDialog(program.getMainWindow().getFrame(), GuiShared.get().uiWaypointEveGatecampCheckDefault(), GuiShared.get().uiWaypointTitle(), JOptionPane.PLAIN_MESSAGE, null, EVE_GATECAMP_CHECK_ROUTE_OPTIONS, EVE_GATECAMP_CHECK_ROUTE_OPTIONS[0]);\r\n\t\t\t\t\tif (routeOption == null) {\r\n\t\t\t\t\t\treturn; //cancel\r\n\t\t\t\t\t}\r\n\t\t\t\t\tsetRouteOption(routeOption);\r\n\t\t\t\t}\r\n\t\t\t\tsetOpenOption(openOption);\r\n\t\t\t\tSettings.get().setEveGatecampCheckSet(true);\r\n\t\t\t}\r\n\t\t\tif (Settings.get().isEveGatecampCheckNeverOpen()) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tString routeOption;\r\n\t\t\tif (Settings.get().isEveGatecampCheckAlwaysOpen()) {\r\n\t\t\t\tif (Settings.get().isEveGatecampCheckSecure()) {\r\n\t\t\t\t\t//Secure\r\n\t\t\t\t\trouteOption = \":secure\";\r\n\t\t\t\t} else if (Settings.get().isEveGatecampCheckUnsecure()) {\r\n\t\t\t\t\t//Unsecure\r\n\t\t\t\t\trouteOption = \":insecure\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\t//Shortest\r\n\t\t\t\t\trouteOption = \":shortest\";\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tString defaultOption = getRouteOption();\r\n\t\t\t\tObject object = JOptionInput.showInputDialog(program.getMainWindow().getFrame(), GuiShared.get().uiWaypointEveGatecampCheck(), GuiShared.get().uiWaypointTitle(), JOptionPane.PLAIN_MESSAGE, null, EVE_GATECAMP_CHECK_ROUTE_OPTIONS, defaultOption);\r\n\t\t\t\tif (object == null) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\trouteOption = setRouteOption(object);\r\n\t\t\t}\r\n\t\t\t/*\r\n\t\t\tif (avoidInRoute) {\r\n\t\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().get, EAST);\r\n\t\t\t}\r\n\t\t\t*/\r\n\t\t\tDesktopUtil.browse(\"https://eve-gatecheck.space/eve/#\" + from + \":\" + routeBuilder.toString() + routeOption + \":\" + avoidBuilder.toString(), program);\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/menu/JTagsDialog.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.menu;\r\n\r\nimport java.awt.Color;\r\nimport java.awt.Component;\r\nimport java.awt.Graphics;\r\nimport java.awt.Graphics2D;\r\nimport java.awt.GridLayout;\r\nimport java.awt.Image;\r\nimport java.awt.Point;\r\nimport java.awt.RenderingHints;\r\nimport java.awt.Toolkit;\r\nimport java.awt.Window;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.awt.event.FocusEvent;\r\nimport java.awt.event.FocusListener;\r\nimport java.awt.image.FilteredImageSource;\r\nimport java.awt.image.RGBImageFilter;\r\nimport java.util.HashSet;\r\nimport java.util.Set;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.Icon;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JColorChooser;\r\nimport javax.swing.JComponent;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JPanel;\r\nimport javax.swing.JPopupMenu;\r\nimport javax.swing.JTextField;\r\nimport javax.swing.JWindow;\r\nimport javax.swing.event.CaretEvent;\r\nimport javax.swing.event.CaretListener;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.data.settings.tag.Tag;\r\nimport net.nikr.eve.jeveasset.data.settings.tag.TagColor;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\npublic class JTagsDialog extends JDialogCentered {\r\n\r\n\tprivate enum TagsDialogAction {\r\n\t\tOK, CANCEL, SHOW_COLOR\r\n\t}\r\n\r\n\t//GUI\r\n\tprivate ColorPicker colorPicker;\r\n\tprivate JTextField jTextField;\r\n\tprivate JButton jColor;\r\n\tprivate JButton jOK;\r\n\r\n\t//Data\r\n\tprivate Tag tag;\r\n\tprivate Tag editTag;\r\n\tprivate Set<String> unique;\r\n\r\n\tpublic JTagsDialog(Program program) {\r\n\t\tsuper(program, \"\", Images.TAG_GRAY.getImage());\r\n\r\n\t\tListenerClass listener = new ListenerClass();\r\n\r\n\t\tJLabel jLabel = new JLabel(GuiShared.get().tagsNewMsg());\r\n\r\n\t\tjTextField = new JTextField();\r\n\t\tjTextField.addFocusListener(listener);\r\n\t\tjTextField.addCaretListener(listener);\r\n\r\n\t\tjColor = new JButton();\r\n\r\n\t\tcolorPicker = new ColorPicker(getDialog(), jColor);\r\n\t\tjColor.addFocusListener(listener);\r\n\t\tjColor.setActionCommand(TagsDialogAction.SHOW_COLOR.name());\r\n\t\tjColor.addActionListener(listener);\r\n\r\n\t\tjOK = new JButton(GuiShared.get().ok());\r\n\t\tjOK.setActionCommand(TagsDialogAction.OK.name());\r\n\t\tjOK.addActionListener(listener);\r\n\t\tjOK.addFocusListener(listener);\r\n\r\n\t\tJButton jCancel = new JButton(GuiShared.get().cancel());\r\n\t\tjCancel.setActionCommand(TagsDialogAction.CANCEL.name());\r\n\t\tjCancel.addActionListener(listener);\r\n\t\tjCancel.addFocusListener(listener);\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.CENTER)\r\n\t\t\t\t.addComponent(jLabel, 250, 250, Integer.MAX_VALUE)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addComponent(jTextField, 200, 200, 200)\r\n\t\t\t\t\t.addComponent(jColor, Program.getIconButtonsWidth(), Program.getIconButtonsWidth(), Program.getIconButtonsWidth())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(jLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jTextField, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jColor, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\tpublic Tag show(Tag editTag) {\r\n\t\treturn show(editTag, new HashSet<>(Settings.get().getTags().keySet()));\r\n\t}\r\n\r\n\tpublic Tag show(Tag editTag, Set<String> unique) {\r\n\t\tgetDialog().setTitle(GuiShared.get().tagsEditTitle());\r\n\t\tthis.editTag = editTag;\r\n\t\tthis.unique = unique;\r\n\t\ttag = null;\r\n\t\tjColor.setIcon(new TagIcon(editTag.getColor()));\r\n\t\tjTextField.setText(editTag.getName());\r\n\t\tsetVisible(true);\r\n\t\treturn tag;\r\n\t}\r\n\r\n\tpublic Tag show() {\r\n\t\treturn show(new HashSet<>(Settings.get().getTags().keySet()));\r\n\t}\r\n\r\n\tpublic Tag show(Set<String> unique) {\r\n\t\tgetDialog().setTitle(GuiShared.get().tagsNewTitle());\r\n\t\tthis.unique = unique;\r\n\t\teditTag = null;\r\n\t\ttag = null;\r\n\t\tjColor.setIcon(new TagIcon(TagColor.getValues()[0]));\r\n\t\tjTextField.setText(\"\");\r\n\t\tsetVisible(true);\r\n\t\treturn tag;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JComponent getDefaultFocus() {\r\n\t\treturn jTextField;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JButton getDefaultButton() {\r\n\t\treturn jOK;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void windowShown() {\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void save() {\r\n\t\tString name = jTextField.getText();\r\n\t\tTagIcon icon = (TagIcon) jColor.getIcon();\r\n\t\tTagColor color = icon.getTagColor();\r\n\t\ttag = new Tag(name, color);\r\n\t\tsetVisible(false);\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener, FocusListener, CaretListener {\r\n\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\tif (TagsDialogAction.OK.name().equals(e.getActionCommand())) {\r\n\t\t\t\tsave();\r\n\t\t\t} else if (TagsDialogAction.CANCEL.name().equals(e.getActionCommand())) {\r\n\t\t\t\tsetVisible(false);\r\n\t\t\t} else if (TagsDialogAction.SHOW_COLOR.name().equals(e.getActionCommand())) {\r\n\t\t\t\tcolorPicker.show();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void focusGained(FocusEvent e) {\r\n\t\t\tcolorPicker.hide();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void focusLost(FocusEvent e) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void caretUpdate(CaretEvent e) {\r\n\t\t\tString name = jTextField.getText();\r\n\t\t\tif (unique.contains(name) && (editTag == null || !editTag.getName().equals(name))) {\r\n\t\t\t\tColorSettings.config(jTextField, ColorEntry.GLOBAL_ENTRY_INVALID);\r\n\t\t\t\tjOK.setEnabled(false);\r\n\t\t\t} else {\r\n\t\t\t\tColorSettings.configReset(jTextField);\r\n\t\t\t\tjOK.setEnabled(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static class TagIcon implements Icon {\r\n\r\n\t\tprivate TagColor tagColor;\r\n\t\tprivate Image image = null;\r\n\r\n\t\tpublic TagIcon(TagColor tagColor) {\r\n\t\t\tthis(tagColor, false);\r\n\t\t}\r\n\r\n\t\tpublic TagIcon(TagColor tagColor, boolean selected) {\r\n\t\t\tthis.tagColor = tagColor;\r\n\t\t\tif (selected) {\r\n\t\t\t\timage = Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(Images.TAG_TICK.getImage().getSource(), new ColorFilter(tagColor.getForeground())));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void paintIcon(Component c, Graphics g, int x, int y) {\r\n\t\t\tGraphics2D g2d = (Graphics2D) g;\r\n\t\t\tif (image != null) { //Selected\r\n\t\t\t\t//Render settings\r\n\t\t\t\t//g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);\r\n\t\t\t\tg2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);\r\n\t\t\t\tg2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);\r\n\r\n\t\t\t\t//Border\r\n\t\t\t\tg2d.setColor(Color.BLACK);\r\n\t\t\t\tg2d.fillOval(x, y, getIconWidth() - 1, getIconHeight() - 1);\r\n\r\n\t\t\t\t//Background\r\n\t\t\t\tg2d.setColor(tagColor.getBackground());\r\n\t\t\t\tg2d.fillOval(x + 1, y + 1, getIconWidth() - 3, getIconHeight() - 3);\r\n\r\n\t\t\t\t//Image\r\n\t\t\t\tg2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);\r\n\t\t\t\tg.drawImage(image, x + 2, y + 2, null);\r\n\t\t\t} else { //Not selected\r\n\t\t\t\t//Render settings\r\n\t\t\t\tg2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);\r\n\r\n\t\t\t\t//Background\r\n\t\t\t\tg2d.setColor(tagColor.getBackground());\r\n\t\t\t\tg2d.fillRect(x, y, getIconWidth() - 1, getIconHeight() - 1);\r\n\r\n\t\t\t\t//Border\r\n\t\t\t\tg2d.setColor(Color.BLACK);\r\n\t\t\t\tg2d.drawRect(x, y, getIconWidth() - 1, getIconHeight() - 1);\r\n\r\n\t\t\t\t//Text\r\n\t\t\t\tg2d.setFont(new JLabel().getFont());\r\n\t\t\t\tg2d.setColor(tagColor.getForeground());\r\n\t\t\t\tg2d.drawString(\"a\", x + 5, y + 11);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int getIconWidth() {\r\n\t\t\treturn 16;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int getIconHeight() {\r\n\t\t\treturn 16;\r\n\t\t}\r\n\r\n\t\tpublic TagColor getTagColor() {\r\n\t\t\treturn tagColor;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class ColorFilter extends RGBImageFilter {\r\n\r\n\t\tprivate final int foreground;\r\n\t\tprivate final int white;\r\n\r\n\t\tpublic ColorFilter(Color foreground) {\r\n\t\t\tthis.foreground = foreground.getRGB();\r\n\t\t\twhite = Color.WHITE.getRGB();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int filterRGB(int x, int y, int rgb) {\r\n\t\t\tif ((rgb | 0xFFFFFF00) == white) {\r\n\t\t\t\treturn (foreground & 0x00FFFFFF) | (rgb & 0xFF000000) ;\r\n\t\t\t} else {\r\n\t\t\t\treturn rgb;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tprivate static class ColorPicker {\r\n\r\n\t\tprivate JWindow jWindow;\r\n\t\tprivate JButton jButton;\r\n\r\n\t\tpublic ColorPicker(final Window owner, final JButton jButton) {\r\n\t\t\tthis.jButton = jButton;\r\n\r\n\t\t\tjWindow = new JWindow(owner);\r\n\r\n\t\t\tJPanel jPanel = new JPanel();\r\n\r\n\t\t\tjPanel.setBorder(new JPopupMenu().getBorder());\r\n\t\t\tGroupLayout groupLayout = new GroupLayout(jPanel);\r\n\t\t\tgroupLayout.setAutoCreateContainerGaps(true);\r\n\t\t\tgroupLayout.setAutoCreateGaps(true);\r\n\t\t\tjPanel.setLayout(groupLayout);\r\n\t\t\tjWindow.add(jPanel);\r\n\r\n\t\t\tJPanel jButtonPanel = new JPanel();\r\n\t\t\tGridLayout gridLayout = new GridLayout(0, 4, 5, 5);\r\n\t\t\tjButtonPanel.setLayout(gridLayout);\r\n\r\n\t\t\tfor (TagColor tagColor : TagColor.getValues()) {\r\n\t\t\t\tfinal TagIcon tagIcon = new TagIcon(tagColor);\r\n\t\t\t\tJButton button = new JButton(tagIcon);\r\n\t\t\t\tbutton.addActionListener(new ActionListener() {\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\t\t\tjButton.setIcon(tagIcon);\r\n\t\t\t\t\t\tjWindow.setVisible(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tbutton.setBorder(null);\r\n\t\t\t\tbutton.setContentAreaFilled(false);\r\n\t\t\t\tjButtonPanel.add(button);\r\n\t\t\t}\r\n\t\t\tJButton jCustom = new JButton(GuiShared.get().custom()); //Custom...\r\n\t\t\tjCustom.addActionListener(new ActionListener() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\t\tjWindow.setVisible(false);\r\n\t\t\t\t\tTagIcon icon = (TagIcon) jButton.getIcon();\r\n\t\t\t\t\tColor background = JColorChooser.showDialog(owner, GuiShared.get().background(), icon.getTagColor().getBackground());\r\n\t\t\t\t\tif (background == null) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tColor foreground = JColorChooser.showDialog(owner, GuiShared.get().foreground(), icon.getTagColor().getForeground());\r\n\t\t\t\t\tif (foreground == null) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\ticon = new TagIcon(new TagColor(background, foreground));\r\n\t\t\t\t\tjButton.setIcon(icon);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tgroupLayout.setHorizontalGroup(\r\n\t\t\t\tgroupLayout.createParallelGroup(GroupLayout.Alignment.CENTER)\r\n\t\t\t\t\t.addComponent(jButtonPanel)\r\n\t\t\t\t\t.addComponent(jCustom)\r\n\t\t\t);\r\n\t\t\tgroupLayout.setVerticalGroup(\r\n\t\t\t\tgroupLayout.createSequentialGroup()\r\n\t\t\t\t\t.addComponent(jButtonPanel)\r\n\t\t\t\t\t.addComponent(jCustom)\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tpublic void show() {\r\n\t\t\tPoint point = jButton.getLocationOnScreen();\r\n\t\t\tjWindow.pack();\r\n\t\t\tjWindow.setLocation(point.x + 2, point.y + jButton.getHeight() - 1);\r\n\t\t\tjWindow.setVisible(true);\r\n\t\t}\r\n\r\n\t\tpublic void hide() {\r\n\t\t\tjWindow.setVisible(false);\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/menu/MenuData.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.menu;\n\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.data.settings.tag.Tag;\nimport net.nikr.eve.jeveasset.data.settings.types.BlueprintType;\nimport net.nikr.eve.jeveasset.data.settings.types.CorporationType;\nimport net.nikr.eve.jeveasset.data.settings.types.ItemType;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationsType;\nimport net.nikr.eve.jeveasset.data.settings.types.OwnersType;\nimport net.nikr.eve.jeveasset.data.settings.types.PriceType;\nimport net.nikr.eve.jeveasset.data.settings.types.TagsType;\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\n\n\npublic class MenuData<T> {\n\n\tprivate final Set<Integer> typeIDs = new HashSet<>();\n\tprivate final Set<MyLocation> autopilotStationLocations = new HashSet<>();\n\tprivate final Set<MyLocation> systemLocations = new HashSet<>();\n\tprivate final Set<MyLocation> regionLocations = new HashSet<>();\n\tprivate final Set<MyLocation> constellationLocations = new HashSet<>();\n\tprivate final Set<MyLocation> editableCitadelLocations = new HashSet<>();\n\tprivate final Set<MyLocation> userLocations = new HashSet<>();\n\tprivate final Map<Integer, Double> prices = new HashMap<>();\n\tprivate final Set<String> typeNames = new HashSet<>();\n\tprivate final Set<String> stationsAndCitadelsNames = new HashSet<>();\n\tprivate final Set<String> stationNames = new HashSet<>();\n\tprivate final Set<String> planetNames = new HashSet<>();\n\tprivate final Set<String> systemNames = new HashSet<>();\n\tprivate final Set<String> constellationNames = new HashSet<>();\n\tprivate final Set<String> regionNames = new HashSet<>();\n\tprivate final Set<Integer> marketTypeIDs = new HashSet<>();\n\tprivate final Set<Integer> blueprintTypeIDs = new HashSet<>();\n\tprivate final Set<Integer> inventionTypeIDs = new HashSet<>();\n\tprivate final Set<Integer> bpcTypeIDs = new HashSet<>();\n\tprivate final Set<Long> ownerIDs = new HashSet<>();\n\tprivate final Map<Tag, Integer> tagCount = new HashMap<>();\n\tprivate final List<TagsType> tags = new ArrayList<>();\n\tprivate final List<MyAsset> assets = new ArrayList<>();\n\tprivate final Set<MyContract> contracts = new HashSet<>();\n\tprivate final Map<Item, Long> itemCounts = new HashMap<>();\n\tprivate final Map<Integer, Double> counts = new HashMap<>();\n\tprivate final Map<Integer, Double> runs = new HashMap<>();\n\tprivate final Set<String> corporationNames = new HashSet<>();\n\tprivate final Set<Integer> corporationIDs = new HashSet<>();\n\n\tpublic MenuData() { }\n\n\tpublic MenuData(final List<T> items) {\n\t\tif (items == null) { //Skip null\n\t\t\treturn;\n\t\t}\n\n\t\tfor (T t : items) {\n\t\t\tif (t == null) { //Skip null\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tSet<MyLocation> locations = new HashSet<>();\n\t\t\tif (t instanceof LocationType) {\n\t\t\t\tLocationType type = (LocationType) t;\n\t\t\t\tlocations.add(type.getLocation());\n\t\t\t}\n\n\t\t\tif (t instanceof LocationsType) {\n\t\t\t\tLocationsType type = (LocationsType) t;\n\t\t\t\tlocations.addAll(type.getLocations());\n\t\t\t}\n\n\t\t\tSet<Long> owners = new HashSet<>();\n\t\t\tif (t instanceof OwnersType) {\n\t\t\t\tOwnersType ownersType = (OwnersType) t;\n\t\t\t\towners.addAll(ownersType.getOwners());\n\t\t\t}\n\n\t\t\tItemType itemType = null;\n\t\t\tif (t instanceof ItemType) {\n\t\t\t\titemType = (ItemType) t;\n\t\t\t}\n\n\t\t\tBlueprintType blueprint = null;\n\t\t\tif (t instanceof BlueprintType) {\n\t\t\t\tblueprint = (BlueprintType) t;\n\t\t\t}\n\n\t\t\tDouble price = null;\n\t\t\tif (t instanceof PriceType) {\n\t\t\t\tPriceType priceType = (PriceType) t;\n\t\t\t\tprice = priceType.getDynamicPrice();\n\t\t\t}\n\n\t\t\tTagsType tagsType = null;\n\t\t\tif (t instanceof TagsType) {\n\t\t\t\ttagsType = (TagsType) t;\n\t\t\t}\n\n\t\t\tCorporationType corporationType = null;\n\t\t\tif (t instanceof CorporationType) {\n\t\t\t\tcorporationType = (CorporationType) t;\n\t\t\t}\n\n\t\t\tif (t instanceof Item) {\n\t\t\t\tItem item = (Item) t;\n\t\t\t\tif (items.size() == 1) { //Always zero for multiple items\n\t\t\t\t\tprice = ApiIdConverter.getPrice(item.getTypeID(), false);\n\t\t\t\t}\n\t\t\t\tif (price == null || price == 0) {\n\t\t\t\t\tprice = item.getPriceBase();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tadd(itemType, locations, price, blueprint, tagsType, owners, corporationType);\n\t\t}\n\t}\n\n\tprivate void add(final ItemType itemType, final Collection<MyLocation> locations, final Double price, final BlueprintType blueprintType, final TagsType tagsType, Set<Long> owners, CorporationType corporationType) {\n\t\tif (itemType != null) {\n\t\t\tItem item = itemType.getItem();\n\t\t\tif (item != null && !item.isEmpty()) {\n\t\t\t\t//Type Name\n\t\t\t\ttypeNames.add(item.getTypeName());\n\t\t\t\t//TypeID\n\t\t\t\tint typeID = item.getTypeID();\n\t\t\t\ttypeIDs.add(typeID);\n\n\t\t\t\tif (item.isBlueprint()) {\n\t\t\t\t\tblueprintTypeIDs.add(item.getTypeID());\n\t\t\t\t\tif (item.getMeta() == 0 && item.getTypeName().contains(\" I \")) {\n\t\t\t\t\t\tinventionTypeIDs.add(item.getTypeID());\n\t\t\t\t\t}\n\t\t\t\t} else if (item.isProduct()) {\n\t\t\t\t\tblueprintTypeIDs.addAll(item.getBlueprintTypeIDs());\n\t\t\t\t\tif (item.getMeta() == 0 && item.getTypeName().endsWith(\" I\")) {\n\t\t\t\t\t\tinventionTypeIDs.addAll(item.getBlueprintTypeIDs());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t//Market TypeID\n\t\t\t\tif (item.isMarketGroup()) {\n\t\t\t\t\tmarketTypeIDs.add(typeID);\n\t\t\t\t}\n\t\t\t\t//Blueprint TypeID\n\t\t\t\tint blueprintTypeID;\n\t\t\t\tif (blueprintType != null && blueprintType.isBPC()) {\n\t\t\t\t\tblueprintTypeID = -typeID;\n\t\t\t\t\t//Runs\n\t\t\t\t\tdouble r = blueprintType.getRuns();\n\t\t\t\t\tif (r > 0) {\n\t\t\t\t\t\tr = r + runs.getOrDefault(blueprintTypeID, 0.0);\n\t\t\t\t\t\truns.put(blueprintTypeID, r);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tblueprintTypeID = typeID;\n\t\t\t\t}\n\t\t\t\tbpcTypeIDs.add(blueprintTypeID);\n\t\t\t\t//Item Count\n\t\t\t\tLong itemCount = itemCounts.getOrDefault(item, 0L);\n\t\t\t\titemCount = itemCount + itemType.getItemCount();\n\t\t\t\titemCounts.put(item, itemCount);\n\t\t\t\t//Count\n\t\t\t\tdouble count = counts.getOrDefault(blueprintTypeID, 0.0);\n\t\t\t\tcount = count + itemType.getItemCount();\n\t\t\t\tcounts.put(blueprintTypeID, count);\n\t\t\t\t//Price TypeID\n\t\t\t\tif (price != null) { //Not unique\n\t\t\t\t\tprices.put(blueprintTypeID, price);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\townerIDs.addAll(owners);\n\n\t\t//Locations\n\t\tfor (MyLocation location : locations) {\n\t\t\tif (location == null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif ((location.isEmpty() && location.getLocationID() != 0) || location.isUserLocation()) { //Empty with locationID or user\n\t\t\t\teditableCitadelLocations.add(location);\n\t\t\t}\n\t\t\tif (location.isUserLocation()) { //User\n\t\t\t\tuserLocations.add(location);\n\t\t\t}\n\t\t\tif (location.getLocationID() != 0 && (location.isStation() || location.isEmpty())) { //Any station with a locationID (not planets)\n\t\t\t\tstationsAndCitadelsNames.add(location.getStation()); //Assets Station (support citadels)\n\t\t\t\tautopilotStationLocations.add(location); //Autopilot Station (support citadels)\n\t\t\t}\n\t\t\tif (location.isEmpty()) {\n\t\t\t\tcontinue; //Ignore empty locations for the rest of the loop\n\t\t\t}\n\t\t\t//Staion\n\t\t\tif (location.isStation() && !location.isCitadel()) { //Not planet\n\t\t\t\tstationNames.add(location.getStation()); //Dotlan Station (does not support citadels)\n\t\t\t}\n\t\t\t//Planet\n\t\t\tif (location.isPlanet()) {\n\t\t\t\tplanetNames.add(location.getLocation()); //Dotlan + Assets Planet\n\t\t\t}\n\t\t\t//System\n\t\t\tif (location.isStation() || location.isPlanet() || location.isSystem()) { //Station, Planet, or System\n\t\t\t\tsystemNames.add(location.getSystem()); //Dotlan + Assets System\n\t\t\t\t//Jumps\n\t\t\t\tMyLocation system = ApiIdConverter.getLocation(location.getSystemID());\n\t\t\t\tif (!system.isEmpty()) {\n\t\t\t\t\tsystemLocations.add(system); //Jumps + Autopilot + zKillboard System\n\t\t\t\t}\n\t\t\t}\n\t\t\t//Constellation\n\t\t\tif (location.isStation() || location.isPlanet() || location.isSystem() || location.isConstellation()) { //Station, Planet, System or Constellation\n\t\t\t\tconstellationNames.add(location.getConstellation()); //Assets Constellation\n\t\t\t\tMyLocation constellation = ApiIdConverter.getLocation(location.getConstellationID());\n\t\t\t\tif (!constellation.isEmpty()) {\n\t\t\t\t\tconstellationLocations.add(constellation); //Dotlan + zKillboard Constellation\n\t\t\t\t}\n\t\t\t}\n\t\t\t//Region\n\t\t\tif (location.isStation() || location.isPlanet() || location.isSystem() || location.isConstellation() || location.isRegion()) { //Station, Planet, System, Constellation or Region\n\t\t\t\tregionNames.add(location.getRegion()); //Dotlan + Assets Region\n\t\t\t\tMyLocation region = ApiIdConverter.getLocation(location.getRegionID());\n\t\t\t\tif (!region.isEmpty()) {\n\t\t\t\t\tregionLocations.add(region); //zKillboard Region\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t//Tags\n\t\tif (tagsType != null && tagsType.getTags() != null) {\n\t\t\ttags.add(tagsType);\n\t\t\tfor (Tag tagKey : tagsType.getTags()) {\n\t\t\t\tInteger count = tagCount.get(tagKey);\n\t\t\t\tif (count != null) {\n\t\t\t\t\tcount++;\n\t\t\t\t} else {\n\t\t\t\t\tcount = 1;\n\t\t\t\t}\n\t\t\t\ttagCount.put(tagKey, count);\n\t\t\t}\n\t\t}\n\t\t//Corporations\n\t\tif (corporationType != null) {\n\t\t\tInteger corporationID = corporationType.getCorporationID();\n\t\t\tif (corporationID != null) {\n\t\t\t\tcorporationIDs.add(corporationID);\n\t\t\t}\n\t\t\tString corporationName = corporationType.getCorporationName();\n\t\t\tif (corporationName != null && !corporationName.isEmpty()) {\n\t\t\t\tcorporationNames.add(corporationName);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic Map<Tag, Integer> getTagCount() {\n\t\treturn tagCount;\n\t}\n\n\tpublic List<TagsType> getTags() {\n\t\treturn tags;\n\t}\n\n\tpublic Set<Integer> getTypeIDs() {\n\t\treturn typeIDs;\n\t}\n\n\tpublic Map<Integer, Double> getPrices() {\n\t\treturn prices;\n\t}\n\n\tpublic Set<String> getTypeNames() {\n\t\treturn typeNames;\n\t}\n\n\t//JMenuAssetFilter\n\tpublic Set<String> getStationAndCitadelNames() {\n\t\treturn stationsAndCitadelsNames;\n\t}\n\n\t//JMenuLookup\n\tpublic Set<String> getStationNames() {\n\t\treturn stationNames;\n\t}\n\n\t//JMenuLookup + JMenuAssetFilter\n\tpublic Set<String> getPlanetNames() {\n\t\treturn planetNames;\n\t}\n\n\t//JMenuLookup + JMenuAssetFilter\n\tpublic Set<String> getSystemNames() {\n\t\treturn systemNames;\n\t}\n\n\t//JMenuAssetFilter\n\tpublic Set<String> getConstellationNames() {\n\t\treturn constellationNames;\n\t}\n\n\t//JMenuLookup + JMenuAssetFilter\n\tpublic Set<String> getRegionNames() {\n\t\treturn regionNames;\n\t}\n\n\t//JMenuLookup\n\tpublic Set<MyLocation> getRegionLocations() {\n\t\treturn regionLocations;\n\t}\n\n\t//JMenuLookup\n\tpublic Set<MyLocation> getConstellationLocations() {\n\t\treturn constellationLocations;\n\t}\n\n\t//JMenuJumps and JMenuUI\n\tpublic Set<MyLocation> getSystemLocations() {\n\t\treturn systemLocations;\n\t}\n\n\t//JMenuUI\n\tpublic Set<MyLocation> getAutopilotStationLocations() {\n\t\treturn autopilotStationLocations;\n\t}\n\n\t//JMenuLocation\n\tpublic Set<MyLocation> getUserLocations() {\n\t\treturn userLocations;\n\t}\n\n\t//JMenuLocation\n\tpublic Set<MyLocation> getEditableCitadelLocations() {\n\t\treturn editableCitadelLocations;\n\t}\n\n\tpublic Set<Integer> getMarketTypeIDs() {\n\t\treturn marketTypeIDs;\n\t}\n\n\tpublic Set<Integer> getBpcTypeIDs() {\n\t\treturn bpcTypeIDs;\n\t}\n\n\tpublic Set<Integer> getBlueprintTypeIDs() {\n\t\treturn blueprintTypeIDs;\n\t}\n\n\tpublic Set<Integer> getInventionTypeIDs() {\n\t\treturn inventionTypeIDs;\n\t}\n\n\tpublic Set<Long> getOwnerIDs() {\n\t\treturn ownerIDs;\n\t}\n\n\tpublic <T extends MyAsset> void setAssets(List<T> assets) {\n\t\tthis.assets.clear();\n\t\tthis.assets.addAll(assets);\n\t}\n\n\tpublic List<MyAsset> getAssets() {\n\t\treturn assets;\n\t}\n\n\tpublic Set<MyContract> getContracts() {\n\t\treturn contracts;\n\t}\n\n\tpublic void setContracts(Set<MyContract> contracts) {\n\t\tthis.contracts.clear();\n\t\tthis.contracts.addAll(contracts);\n\t}\n\n\tpublic Map<Item, Long> getItemCounts() {\n\t\treturn itemCounts;\n\t}\n\n\tpublic Map<Integer, Double> getCounts() {\n\t\treturn counts;\n\t}\n\n\tpublic Map<Integer, Double> getRuns() {\n\t\treturn runs;\n\t}\n\n\tpublic Set<String> getCorporationNames() {\n\t\treturn corporationNames;\n\t}\n\n\tpublic Set<Integer> getCorporationIDs() {\n\t\treturn corporationIDs;\n\t}\n\n\tpublic static class AssetMenuData <T extends MyAsset> extends MenuData<T> {\n\n\t\tpublic AssetMenuData(List<T> items) {\n\t\t\tsuper(items);\n\t\t\tsetAssets(items);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/menu/MenuManager.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.menu;\r\n\r\nimport java.awt.Component;\r\nimport java.awt.Point;\r\nimport java.awt.event.MouseEvent;\r\nimport java.awt.event.MouseListener;\r\nimport java.util.Arrays;\r\nimport java.util.Collection;\r\nimport java.util.Collections;\r\nimport java.util.EnumMap;\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\nimport javax.swing.JComponent;\r\nimport javax.swing.JMenu;\r\nimport javax.swing.JPopupMenu;\r\nimport javax.swing.JTable;\r\nimport javax.swing.event.ListSelectionEvent;\r\nimport javax.swing.event.ListSelectionListener;\r\nimport javax.swing.event.MenuEvent;\r\nimport javax.swing.event.MenuListener;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.settings.types.CorporationType;\r\nimport net.nikr.eve.jeveasset.data.settings.types.ItemType;\r\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\r\nimport net.nikr.eve.jeveasset.data.settings.types.LocationsType;\r\nimport net.nikr.eve.jeveasset.data.settings.types.PriceType;\r\nimport net.nikr.eve.jeveasset.data.settings.types.TagsType;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JDropDownButton;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.ColumnManager;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileItem;\r\nimport net.nikr.eve.jeveasset.gui.tabs.tree.TreeAsset;\r\n\r\n\r\npublic class MenuManager<T extends Enum<T> & EnumTableColumn<Q>, Q> {\r\n\r\n\tprivate enum MenuEnum {\r\n\t\tASSET_FILTER,\r\n\t\tTRANSACTION_FILTER,\r\n\t\tTAGS,\r\n\t\tSTOCKPILE,\r\n\t\tLOOKUP,\r\n\t\tLOCATION,\r\n\t\tUI,\r\n\t\tPRICE,\r\n\t\tNAME,\r\n\t\tREPROCESSED,\r\n\t\tPRICE_HISTORY,\r\n\t\tJUMPS,\r\n\t\tROUTING,\r\n\t\tCOPY_PLUS,\r\n\t\tSUM,\r\n\t\tFORMULA,\r\n\t\tLOADOUT,\r\n\t}\r\n\r\n\tprivate boolean priceSupported = false;\r\n\tprivate boolean itemSupported = false;\r\n\tprivate boolean locationSupported = false;\r\n\tprivate boolean corporationSupported = false;\r\n\tprivate boolean jumpsSupported = false;\r\n\tprivate boolean assets = false;\r\n\tprivate boolean tree = false;\r\n\tprivate boolean transactions = false;\r\n\tprivate boolean stockpile = false;\r\n\tprivate boolean tagsSupported = false;\r\n\r\n\tprivate final Map<MenuEnum, AutoMenu<Q>> mainMenu = new EnumMap<>(MenuEnum.class);\r\n\tprivate final Map<MenuEnum, AutoMenu<Q>> tablePopupMenu = new EnumMap<>(MenuEnum.class);\r\n\r\n\tprivate final TableMenu<Q> tableMenu;\r\n\tprivate final JTable jTable;\r\n\tprivate final Program program;\r\n\tprivate final ColumnManager<T, Q> columnManager;\r\n\tprivate static final Map<Class<?>, MenuManager<?, ?>> MANAGERS = new HashMap<Class<?>, MenuManager<?, ?>>();\r\n\tprivate static Boolean changed = null;\r\n\r\n\tpublic static <T extends Enum<T> & EnumTableColumn<Q>, Q> void install(final Program program, final TableMenu<Q> tableMenu, JTable jTable, final ColumnManager<T, Q> columnManager, final Class<Q> clazz) {\r\n\t\tMenuManager<T, Q> menuManager = new MenuManager<>(program, tableMenu, jTable, columnManager, clazz);\r\n\t\tMenuManager<?, ?> put = MANAGERS.put(clazz, menuManager);\r\n\t\tif (put != null) {\r\n\t\t\tthrow new RuntimeException(\"Duplicated MenuManager Class\");\r\n\t\t}\r\n\t\tif (changed == null) { //Only do once\r\n\t\t\tchanged = false;\r\n\t\t\tprogram.getMainWindow().getMenu().getTableMenu().addMenuListener(new MenuListener() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void menuSelected(MenuEvent e) {\r\n\t\t\t\t\tif (changed) {\r\n\t\t\t\t\t\tchanged = false;\r\n\t\t\t\t\t\tProgram.ensureEDT(new Runnable() {\r\n\t\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\t\tpublic void run() {\r\n\t\t\t\t\t\t\t\tprogram.getMainWindow().getSelectedTab().createTableMenu();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void menuDeselected(MenuEvent e) { }\r\n\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void menuCanceled(MenuEvent e) { }\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void update(final Program program, final Class<?> clazz) {\r\n\t\tMenuManager<?, ?> menuManager = MANAGERS.get(clazz);\r\n\t\tJMenu jMenu = program.getMainWindow().getMenu().getTableMenu();\r\n\t\tif (menuManager != null) {\r\n\t\t\tjMenu.setEnabled(true);\r\n\t\t\tchanged = true;\r\n\t\t} else { //No table menu\r\n\t\t\tjMenu.removeAll();\r\n\t\t\tjMenu.setEnabled(false);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tpublic static void create(final Program program, final Class<?> clazz) {\r\n\t\tMenuManager<?, ?> menuManager = MANAGERS.get(clazz);\r\n\t\tif (menuManager != null) {\r\n\t\t\tmenuManager.updateMainTableMenu();\r\n\t\t} else { //No table menu\r\n\t\t\tJMenu jMenu = program.getMainWindow().getMenu().getTableMenu();\r\n\t\t\tjMenu.removeAll();\r\n\t\t\tjMenu.setEnabled(false);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void updateFormula(final Class<?> clazz) {\r\n\t\tMenuManager<?, ?> menuManager = MANAGERS.get(clazz);\r\n\t\tif (menuManager != null) {\r\n\t\t\tmenuManager.columnManager.resetFormulaData();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void lock(final Class<?> clazz) {\r\n\t\tMenuManager<?, ?> menuManager = MANAGERS.get(clazz);\r\n\t\tif (menuManager != null) {\r\n\t\t\tmenuManager.columnManager.lock();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void unlock(final Class<?> clazz) {\r\n\t\tMenuManager<?, ?> menuManager = MANAGERS.get(clazz);\r\n\t\tif (menuManager != null) {\r\n\t\t\tmenuManager.columnManager.unlock();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void updateJumps(final Class<?> clazz) {\r\n\t\tMenuManager<?, ?> menuManager = MANAGERS.get(clazz);\r\n\t\tif (menuManager != null) {\r\n\t\t\tmenuManager.columnManager.updateJumpsData();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate MenuManager(final Program program, final TableMenu<Q> tableMenu, JTable jTable, ColumnManager<T, Q> columnManager, final Class<Q> clazz) {\r\n\t\tthis.program = program;\r\n\t\tthis.tableMenu = tableMenu;\r\n\t\tthis.jTable = jTable;\r\n\t\tthis.columnManager = columnManager;\r\n\t\tassets = MyAsset.class.equals(clazz);\r\n\t\ttree = TreeAsset.class.equals(clazz);\r\n\t\ttransactions = MyTransaction.class.isAssignableFrom(clazz);\r\n\t\tstockpile = StockpileItem.class.isAssignableFrom(clazz);\r\n\t\tlocationSupported = LocationType.class.isAssignableFrom(clazz) || LocationsType.class.isAssignableFrom(clazz);\r\n\t\tcorporationSupported = CorporationType.class.isAssignableFrom(clazz);\r\n\t\tjumpsSupported = LocationType.class.isAssignableFrom(clazz);\r\n\t\titemSupported = ItemType.class.isAssignableFrom(clazz);\r\n\t\ttagsSupported = TagsType.class.isAssignableFrom(clazz);\r\n\t\tpriceSupported = PriceType.class.isAssignableFrom(clazz) || Item.class.isAssignableFrom(clazz);\r\n\t\tcreateCashe(program, mainMenu, columnManager);\r\n\t\tcreateCashe(program, tablePopupMenu, columnManager);\r\n\t\tListenerClass listener = new ListenerClass();\r\n\t\tjTable.addMouseListener(listener);\r\n\t\tjTable.getTableHeader().addMouseListener(listener);\r\n\t\tjTable.getSelectionModel().addListSelectionListener(listener);\r\n\t\tjTable.getColumnModel().getSelectionModel().addListSelectionListener(listener);\r\n\t\tupdateMainTableMenu();\r\n\t}\r\n\r\n\tprivate void createCashe(final Program program, final Map<MenuEnum, AutoMenu<Q>> menus, ColumnManager<T, Q> columnManager) {\r\n\t//COPY SIMPLE\r\n\t\tif (itemSupported) {\r\n\t\t\tmenus.put(MenuEnum.COPY_PLUS, new JMenuCopyPlus<>(program));\r\n\t\t}\r\n\t//ASSET FILTER\r\n\t\tif (!assets && (itemSupported || locationSupported)) {\r\n\t\t\tmenus.put(MenuEnum.ASSET_FILTER, new JMenuAssetFilter<>(program));\r\n\t\t}\r\n\t//TRANSACTION FILTER\r\n\t\tif (!transactions && (itemSupported || locationSupported)) {\r\n\t\t\tmenus.put(MenuEnum.TRANSACTION_FILTER, new JMenuTransactionFilter<>(program));\r\n\t\t}\r\n\t//STOCKPILE (Add To)\r\n\t\tif (!stockpile && itemSupported) {\r\n\t\t\tmenus.put(MenuEnum.STOCKPILE, new JMenuStockpile<>(program));\r\n\t\t}\r\n\t//LOOKUP\r\n\t\tif (itemSupported || locationSupported || corporationSupported) {\r\n\t\t\tmenus.put(MenuEnum.LOOKUP, new JMenuLookup<>(program));\r\n\t\t}\r\n\t//EDIT\r\n\t\tif (priceSupported) {\r\n\t\t\tmenus.put(MenuEnum.PRICE, new JMenuPrice<>(program));\r\n\t\t}\r\n\t\tif (assets || tree) {\r\n\t\t\tmenus.put(MenuEnum.NAME, new JMenuName<>(program));\r\n\t\t}\r\n\t\tif (tagsSupported) {\r\n\t\t\tmenus.put(MenuEnum.TAGS, new JMenuTags<>(program));\r\n\t\t}\r\n\t//LOADOUT\r\n\t\tif (assets || tree) {\r\n\t\t\tmenus.put(MenuEnum.LOADOUT, new JMenuLoadout<>(program));\r\n\t\t}\r\n\t//REPROCESSED\r\n\t\tif (itemSupported) {\r\n\t\t\tmenus.put(MenuEnum.REPROCESSED, new JMenuReprocessed<>(program));\r\n\t\t}\r\n\t//PRICE HISTORY\r\n\t\tif (itemSupported) {\r\n\t\t\tmenus.put(MenuEnum.PRICE_HISTORY, new JMenuPriceHistory<>(program));\r\n\t\t}\r\n\t//JUMPS\r\n\t\tif (jumpsSupported) {\r\n\t\t\tmenus.put(MenuEnum.JUMPS, new JMenuJumps<>(program, columnManager));\r\n\t\t}\r\n\t\tif (locationSupported) {\r\n\t\t\tmenus.put(MenuEnum.ROUTING, new JMenuRouting<>(program));\r\n\t\t}\r\n\t//LOCATION\r\n\t\tif (locationSupported) {\r\n\t\t\tmenus.put(MenuEnum.LOCATION, new JMenuLocation<>(program));\r\n\t\t}\r\n\t\tif (locationSupported || priceSupported || itemSupported) {\r\n\t\t\tmenus.put(MenuEnum.UI, new JMenuUI<>(program));\r\n\t\t}\r\n\t//FORMULA\r\n\t\tmenus.put(MenuEnum.FORMULA, new JMenuFormula<>(program, columnManager));\r\n\t//SUM\r\n\t\tmenus.put(MenuEnum.SUM, new JMenuSum<>(program, jTable));\r\n\t}\r\n\r\n\tprivate void createMenu(JPopupMenu jPopupMenu) {\r\n\t\tcreateMenu(jPopupMenu, tablePopupMenu);\r\n\t}\r\n\r\n\tpublic void createMenu(JMenu jMenu) {\r\n\t\tcreateMenu(jMenu, mainMenu);\r\n\t}\r\n\r\n\tprivate void createMenu(JComponent jComponent, Map<MenuEnum, AutoMenu<Q>> menus) {\r\n\t\tjComponent.removeAll();\r\n\t\tboolean notEmpty = false;\r\n\t//UPDATE\r\n\t\tMenuData<Q> menuData = tableMenu.getMenuData();\r\n\t\tfor (AutoMenu<Q> jAutoMenu : menus.values()) {\r\n\t\t\tjAutoMenu.setMenuData(menuData);\r\n\t\t}\r\n\t//COPY\r\n\t\tif (jComponent instanceof JPopupMenu) {\r\n\t\t\tjComponent.add(new JMenuCopy(jTable));\r\n\t\t\taddSeparator(jComponent);\r\n\t\t\tnotEmpty = true;\r\n\t\t}\r\n\t//TOOL MENU\r\n\t\ttableMenu.addToolMenu(jComponent);\r\n\t//COPY+\r\n\t\tAutoMenu<Q> jcopyPlus = menus.get(MenuEnum.COPY_PLUS);\r\n\t\tif (jcopyPlus != null) {\r\n\t\t\tfor (JComponent c : jcopyPlus.getMenuItems()) {\r\n\t\t\t\tjComponent.add(c);\r\n\t\t\t}\r\n\t\t\tnotEmpty = true;\r\n\t\t}\r\n\t//FILTER\r\n\t\tJMenu filterMenu = tableMenu.getFilterMenu();\r\n\t\tif (filterMenu != null) {\r\n\t\t\tjComponent.add(filterMenu);\r\n\t\t\tnotEmpty = true;\r\n\t\t}\r\n\t//ASSET FILTER\r\n\t\tAutoMenu<Q> jAssetFilter = menus.get(MenuEnum.ASSET_FILTER);\r\n\t\tif (jAssetFilter != null) {\r\n\t\t\tfor (JComponent c : jAssetFilter.getMenuItems()) {\r\n\t\t\t\tjComponent.add(c);\r\n\t\t\t}\r\n\t\t\tnotEmpty = true;\r\n\t\t\tif (jAssetFilter instanceof JMenuAssetFilter) {\r\n\t\t\t\tJMenuAssetFilter<?> jMenuAssetFilter = (JMenuAssetFilter) jAssetFilter;\r\n\t\t\t\tjMenuAssetFilter.setTool(tableMenu);\r\n\t\t\t}\r\n\t\t}\r\n\t//TRANSACTION FILTER\r\n\t\tAutoMenu<Q> jTransactionFilter = menus.get(MenuEnum.TRANSACTION_FILTER);\r\n\t\tif (jTransactionFilter != null) {\r\n\t\t\tfor (JComponent c : jTransactionFilter.getMenuItems()) {\r\n\t\t\t\tjComponent.add(c);\r\n\t\t\t}\r\n\t\t\tnotEmpty = true;\r\n\t\t\tif (jTransactionFilter instanceof JMenuTransactionFilter) {\r\n\t\t\t\tJMenuTransactionFilter<?> jMenuAssetFilter = (JMenuTransactionFilter) jTransactionFilter;\r\n\t\t\t\tjMenuAssetFilter.setTool(tableMenu);\r\n\t\t\t}\r\n\t\t}\r\n\t//STOCKPILE (Add To)\r\n\t\tAutoMenu<Q> jStockpile = menus.get(MenuEnum.STOCKPILE);\r\n\t\tif (jStockpile != null) {\r\n\t\t\tfor (JComponent c : jStockpile.getMenuItems()) {\r\n\t\t\t\tjComponent.add(c);\r\n\t\t\t}\r\n\t\t\tnotEmpty = true;\r\n\t\t}\r\n\t//LOOKUP\r\n\t\tAutoMenu<Q> jLookup = menus.get(MenuEnum.LOOKUP);\r\n\t\tif (jLookup != null) {\r\n\t\t\tfor (JComponent c : jLookup.getMenuItems()) {\r\n\t\t\t\tjComponent.add(c);\r\n\t\t\t}\r\n\t\t\tnotEmpty = true;\r\n\t\t\tif (jLookup instanceof JMenuLookup) {\r\n\t\t\t\tJMenuLookup<?> jMenuLookup = (JMenuLookup) jLookup;\r\n\t\t\t\tjMenuLookup.setTool(tableMenu);\r\n\t\t\t}\r\n\t\t}\r\n\t//EDIT\r\n\t\tAutoMenu<Q> jPrice = menus.get(MenuEnum.PRICE);\r\n\t\tif (jPrice != null) {\r\n\t\t\tfor (JComponent c : jPrice.getMenuItems()) {\r\n\t\t\t\tjComponent.add(c);\r\n\t\t\t}\r\n\t\t\tnotEmpty = true;\r\n\t\t}\r\n\t\tAutoMenu<Q> jName = menus.get(MenuEnum.NAME);\r\n\t\tif (jName != null) {\r\n\t\t\tfor (JComponent c : jName.getMenuItems()) {\r\n\t\t\t\tjComponent.add(c);\r\n\t\t\t}\r\n\t\t\tnotEmpty = true;\r\n\t\t}\r\n\t\tAutoMenu<Q> jTags = menus.get(MenuEnum.TAGS);\r\n\t\tif (jTags != null) {\r\n\t\t\tfor (JComponent c : jTags.getMenuItems()) {\r\n\t\t\t\tjComponent.add(c);\r\n\t\t\t}\r\n\t\t\tnotEmpty = true;\r\n\t\t}\r\n\t//LOADOUT\r\n\t\tAutoMenu<Q> jLoadout = menus.get(MenuEnum.LOADOUT);\r\n\t\tif (jLoadout != null) {\r\n\t\t\tfor (JComponent c : jLoadout.getMenuItems()) {\r\n\t\t\t\tjComponent.add(c);\r\n\t\t\t}\r\n\t\t\tnotEmpty = true;\r\n\t\t}\r\n\t//REPROCESSED\r\n\t\tAutoMenu<Q> jReprocessed = menus.get(MenuEnum.REPROCESSED);\r\n\t\tif (jReprocessed != null) {\r\n\t\t\tfor (JComponent c : jReprocessed.getMenuItems()) {\r\n\t\t\t\tjComponent.add(c);\r\n\t\t\t}\r\n\t\t\tnotEmpty = true;\r\n\t\t}\r\n\t//PRICE HISTORY\r\n\t\tAutoMenu<Q> jPriceHistory = menus.get(MenuEnum.PRICE_HISTORY);\r\n\t\tif (jPriceHistory != null) {\r\n\t\t\tfor (JComponent c : jPriceHistory.getMenuItems()) {\r\n\t\t\t\tjComponent.add(c);\r\n\t\t\t}\r\n\t\t\tnotEmpty = true;\r\n\t\t}\r\n\t//JUMPS\r\n\t\tAutoMenu<Q> jJumps = menus.get(MenuEnum.JUMPS);\r\n\t\tif (jJumps != null) {\r\n\t\t\tfor (JComponent c : jJumps.getMenuItems()) {\r\n\t\t\t\tjComponent.add(c);\r\n\t\t\t}\r\n\t\t\tnotEmpty = true;\r\n\t\t}\r\n\t\tAutoMenu<Q> jRouting = menus.get(MenuEnum.ROUTING);\r\n\t\tif (jRouting != null) {\r\n\t\t\tfor (JComponent c : jRouting.getMenuItems()) {\r\n\t\t\t\tjComponent.add(c);\r\n\t\t\t}\r\n\t\t\tnotEmpty = true;\r\n\t\t}\r\n\t//FORMULA\r\n\t\tAutoMenu<Q> jFormula = menus.get(MenuEnum.FORMULA);\r\n\t\tif (jFormula != null) {\r\n\t\t\tfor (JComponent c : jFormula.getMenuItems()) {\r\n\t\t\t\tjComponent.add(c);\r\n\t\t\t}\r\n\t\t\tnotEmpty = true;\r\n\t\t}\r\n\t//LOCATION\r\n\t\tAutoMenu<Q> jLocation = menus.get(MenuEnum.LOCATION);\r\n\t\tif (jLocation != null) {\r\n\t\t\tfor (JComponent c : jLocation.getMenuItems()) {\r\n\t\t\t\tjComponent.add(c);\r\n\t\t\t}\r\n\t\t\tnotEmpty = true;\r\n\t\t}\r\n\t\tAutoMenu<Q> jUi = menus.get(MenuEnum.UI);\r\n\t\tif (jUi != null) {\r\n\t\t\tfor (JComponent c : jUi.getMenuItems()) {\r\n\t\t\t\tjComponent.add(c);\r\n\t\t\t}\r\n\t\t\tnotEmpty = true;\r\n\t\t}\r\n\t//COLUMNS\r\n\t\tJMenu columnMenu = tableMenu.getColumnMenu();\r\n\t\tif (columnMenu != null) {\r\n\t\t\tjComponent.add(columnMenu);\r\n\t\t\tnotEmpty = true;\r\n\t\t}\r\n\t//INFO\r\n\t\tif (jComponent instanceof JPopupMenu) {\r\n\t\t\ttableMenu.addInfoMenu((JPopupMenu) jComponent);\r\n\t\t}\r\n\t//SUM\r\n\t\tAutoMenu<Q> jSum = menus.get(MenuEnum.SUM);\r\n\t\tif (jSum != null) {\r\n\t\t\taddSeparator(jComponent);\r\n\t\t\tfor (JComponent c : jSum.getMenuItems()) {\r\n\t\t\t\tjComponent.add(c);\r\n\t\t\t}\r\n\t\t\tnotEmpty = true;\r\n\t\t}\r\n\t\tjComponent.setEnabled(notEmpty);\r\n\t}\r\n\r\n\tprivate void updateMainTableMenu() {\r\n\t\tcreateMenu(program.getMainWindow().getMenu().getTableMenu());\r\n\t}\r\n\r\n\tprivate void showTableHeaderPopupMenu(final MouseEvent e) {\r\n\t\tJPopupMenu jTableHeaderPopupMenu = new JPopupMenu();\r\n\t\tJMenu columnMenu = tableMenu.getColumnMenu();\r\n\t\tif (columnMenu != null) {\r\n\t\t\tfor (Component component : columnMenu.getMenuComponents()) { //Clone!\r\n\t\t\t\tjTableHeaderPopupMenu.add(component);\r\n\t\t\t}\r\n\t\t}\r\n\t\t//SUM\r\n\t\tjTableHeaderPopupMenu.addSeparator();\r\n\t\tAutoMenu<Q> jSum = tablePopupMenu.get(MenuEnum.SUM);\r\n\t\tif (jSum instanceof JMenuSum) {\r\n\t\t\t((JMenuSum)jSum).updateMenuDataColumn(jTable.columnAtPoint(e.getPoint()));\r\n\t\t\tfor (JComponent c : jSum.getMenuItems()) {\r\n\t\t\t\tjTableHeaderPopupMenu.add(c);\r\n\t\t\t}\r\n\t\t}\r\n\t\tjTableHeaderPopupMenu.show(e.getComponent(), e.getX(), e.getY());\r\n\t}\r\n\r\n\tprivate void showTablePopupMenu(final MouseEvent e) {\r\n\t\tJPopupMenu jTablePopupMenu = new JPopupMenu();\r\n\r\n\t\tselectClickedCell(e);\r\n\r\n\t\t//updateTableMenu(jTablePopupMenu);\r\n\t\tcreateMenu(jTablePopupMenu);\r\n\r\n\t\tjTablePopupMenu.show(e.getComponent(), e.getX(), e.getY());\r\n\t}\r\n\r\n\tprivate void selectClickedCell(final MouseEvent e) {\r\n\t\tObject source = e.getSource();\r\n\t\tif (source instanceof JTable) {\r\n\t\t\tJTable jSelectTable = (JTable) source;\r\n\r\n\t\t\tPoint point = e.getPoint();\r\n\t\t\tif (!jSelectTable.getVisibleRect().contains(point)) { //Ignore clickes outside table\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tint clickedRow = jSelectTable.rowAtPoint(point);\r\n\t\t\tint clickedColumn = jSelectTable.columnAtPoint(point);\r\n\r\n\t\t\t//Rows\r\n\t\t\tboolean clickInRowsSelection;\r\n\t\t\tif (jSelectTable.getRowSelectionAllowed()) { //clicked in selected rows?\r\n\t\t\t\tclickInRowsSelection = false;\r\n\t\t\t\tint[] selectedRows = jSelectTable.getSelectedRows();\r\n\t\t\t\tfor (int i = 0; i < selectedRows.length; i++) {\r\n\t\t\t\t\tif (selectedRows[i] == clickedRow) {\r\n\t\t\t\t\t\tclickInRowsSelection = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else { //Row selection not allowed - all rows selected\r\n\t\t\t\tclickInRowsSelection = true;\r\n\t\t\t}\r\n\r\n\t\t\t//Column\r\n\t\t\tboolean clickInColumnsSelection;\r\n\t\t\tif (jSelectTable.getColumnSelectionAllowed()) { //clicked in selected columns?\r\n\t\t\t\tclickInColumnsSelection = false;\r\n\t\t\t\tint[] selectedColumns = jSelectTable.getSelectedColumns();\r\n\t\t\t\tfor (int i = 0; i < selectedColumns.length; i++) {\r\n\t\t\t\t\tif (selectedColumns[i] == clickedColumn) {\r\n\t\t\t\t\t\tclickInColumnsSelection = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else { //Column selection not allowed - all columns selected\r\n\t\t\t\tclickInColumnsSelection = true;\r\n\t\t\t}\r\n\r\n\t\t\t//Clicked outside selection, select clicked cell\r\n\t\t\tif ( (!clickInRowsSelection || !clickInColumnsSelection) && clickedRow >= 0 && clickedColumn >= 0) {\r\n\t\t\t\tjSelectTable.setRowSelectionInterval(clickedRow, clickedRow);\r\n\t\t\t\tjSelectTable.setColumnSelectionInterval(clickedColumn, clickedColumn);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class ListenerClass implements MouseListener, ListSelectionListener {\r\n\r\n\t\tint[] selectedColumns;\r\n\t\tint[] selectedRows;\r\n\r\n\t\t@Override\r\n\t\tpublic void mouseClicked(final MouseEvent e) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void mousePressed(final MouseEvent e) {\r\n\t\t\tif (e.isPopupTrigger()) {\r\n\t\t\t\tif (e.getSource().equals(jTable)) {\r\n\t\t\t\t\tshowTablePopupMenu(e);\r\n\t\t\t\t}\r\n\t\t\t\tif (jTable != null && e.getSource().equals(jTable.getTableHeader())) {\r\n\t\t\t\t\tshowTableHeaderPopupMenu(e);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void mouseReleased(final MouseEvent e) {\r\n\t\t\tif (e.isPopupTrigger()) {\r\n\t\t\t\tif (e.getSource().equals(jTable)) {\r\n\t\t\t\t\tshowTablePopupMenu(e);\r\n\t\t\t\t}\r\n\t\t\t\tif (jTable != null && e.getSource().equals(jTable.getTableHeader())) {\r\n\t\t\t\t\tshowTableHeaderPopupMenu(e);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void mouseEntered(final MouseEvent e) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void mouseExited(final MouseEvent e) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void valueChanged(final ListSelectionEvent e) {\r\n\t\t\tif (!e.getValueIsAdjusting()) {\r\n\t\t\t\tif (changed) {\r\n\t\t\t\t\treturn; //already changed\r\n\t\t\t\t}\r\n\t\t\t\tif (selectedColumns == null || selectedRows == null || !Arrays.equals(selectedColumns, jTable.getSelectedColumns()) || !Arrays.equals(selectedRows, jTable.getSelectedRows())) {\r\n\t\t\t\t\tselectedColumns = jTable.getSelectedColumns();\r\n\t\t\t\t\tselectedRows = jTable.getSelectedRows();\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void addSeparator(final JComponent jComponent) {\r\n\t\tif (jComponent instanceof JMenu) {\r\n\t\t\tJMenu jMenu = (JMenu) jComponent;\r\n\t\t\tjMenu.addSeparator();\r\n\t\t}\r\n\t\tif (jComponent instanceof JPopupMenu) {\r\n\t\t\tJPopupMenu jPopupMenu = (JPopupMenu) jComponent;\r\n\t\t\tjPopupMenu.addSeparator();\r\n\t\t}\r\n\t\tif (jComponent instanceof JDropDownButton) {\r\n\t\t\tJDropDownButton jDropDownButton = (JDropDownButton) jComponent;\r\n\t\t\tjDropDownButton.addSeparator();\r\n\t\t}\r\n\t}\r\n\r\n\tprotected static interface AutoMenu<T> {\r\n\t\tpublic void setMenuData(MenuData<T> menuData);\r\n\t\tpublic Collection<JComponent> getMenuItems();\r\n\t}\r\n\r\n\tprotected abstract static class JAutoMenu<T> extends JMenu implements AutoMenu<T> {\r\n\r\n\t\tprotected Program program;\r\n\t\tprotected MenuData<T> menuData;\r\n\r\n\t\tpublic JAutoMenu(final String s, final Program program) {\r\n\t\t\tsuper(s);\r\n\t\t\tthis.program = program;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic final void setMenuData(MenuData<T> menuData) {\r\n\t\t\tthis.menuData = menuData;\r\n\t\t\tupdateMenuData();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic Collection<JComponent> getMenuItems() {\r\n\t\t\treturn Collections.singleton(this);\r\n\t\t}\r\n\r\n\t\tprotected abstract void updateMenuData();\r\n\t}\r\n\r\n\tprotected abstract static class JAutoMenuComponent<T> implements AutoMenu<T> {\r\n\r\n\t\tprotected Program program;\r\n\t\tprotected MenuData<T> menuData;\r\n\r\n\t\tpublic JAutoMenuComponent(final Program program) {\r\n\t\t\tthis.program = program;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic final void setMenuData(MenuData<T> menuData) {\r\n\t\t\tthis.menuData = menuData;\r\n\t\t\tupdateMenuData();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic abstract Collection<JComponent> getMenuItems();\r\n\r\n\t\tprotected abstract void updateMenuData();\r\n\t}\r\n\r\n\tpublic static interface TableMenu<T> {\r\n\t\tpublic MenuData<T> getMenuData();\r\n\t\tpublic JMenu getFilterMenu();\r\n\t\tpublic JMenu getColumnMenu();\r\n\t\tpublic void addInfoMenu(JPopupMenu jPopupMenu);\r\n\t\tpublic void addToolMenu(JComponent jComponent);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/ColumnManager.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.shared.table;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.GlazedLists;\nimport ca.odell.glazedlists.event.ListEvent;\nimport ca.odell.glazedlists.event.ListEventListener;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Comparator;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Objects;\nimport java.util.Set;\nimport javax.swing.SwingUtilities;\nimport javax.swing.event.ChangeEvent;\nimport javax.swing.event.ListSelectionEvent;\nimport javax.swing.event.TableColumnModelEvent;\nimport javax.swing.event.TableColumnModelListener;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JFormulaDialog.Formula;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuJumps.Jump;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\n\n\npublic class ColumnManager<T extends Enum<T> & EnumTableColumn<Q>, Q> implements SimpleColumnManager<Q> {\n\n\tprivate static final Map<String, ColumnManager<?, ?>> COLUMN_MANAGERS = new HashMap<>();\n\tprivate static final Set<String> loaded = new HashSet<>();\n\tprivate final Program program;\n\tprivate final String toolName;\n\tprivate final EnumTableFormatAdaptor<T, Q> tableFormat;\n\tprivate final DefaultEventTableModel<Q> tableModel;\n\tprivate final JAutoColumnTable jTable;\n\tprivate final FilterControl<Q> filterControl;\n\n\tprivate final Map<Formula, FormulaColumn<Q>> formulaColumns = new HashMap<>();\n\tprivate final Map<Jump, JumpColumn<Q>> jumpColumns = new HashMap<>();\n\n\tprivate boolean locked = false;\n\n\tpublic ColumnManager(Program program, String toolName, EnumTableFormatAdaptor<T, Q> tableFormat, DefaultEventTableModel<Q> tableModel, JAutoColumnTable jTable, EventList<Q> eventList, FilterControl<Q> filterControl) {\n\t\tthis.program = program;\n\t\tthis.toolName = toolName;\n\t\tthis.tableFormat = tableFormat;\n\t\tthis.tableModel = tableModel;\n\t\tthis.jTable = jTable;\n\t\tthis.filterControl = filterControl;\n\t\t//Load columns\n\t\tif (!loaded.contains(toolName)) {\n\t\t\tloaded.add(toolName);\n\t\t\tload();\n\t\t}\n\t\t//Reset cached Formula values on list changes\n\t\teventList.addListEventListener(new ListEventListener<Q>() {\n\t\t\t@Override @SuppressWarnings(\"deprecation\")\n\t\t\tpublic void listChanged(ListEvent<Q> listChanges) {\n\t\t\t\tif (locked) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\teventList.getReadWriteLock().readLock().lock();\n\t\t\t\t\tList<Q> reset = new ArrayList<>();\n\t\t\t\t\t//For each list event\n\t\t\t\t\twhile(listChanges.next()) {\n\t\t\t\t\t\tswitch (listChanges.getType()) {\n\t\t\t\t\t\t\tcase ListEvent.DELETE:\n\t\t\t\t\t\t\t\tQ q = listChanges.getOldValue();\n\t\t\t\t\t\t\t\tif (q != null) {\n\t\t\t\t\t\t\t\t\treset.add(q);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase ListEvent.UPDATE:\n\t\t\t\t\t\t\t\tint index = listChanges.getIndex();\n\t\t\t\t\t\t\t\tif (index >= 0 && index < eventList.size()) {\n\t\t\t\t\t\t\t\t\treset.add(eventList.get(index));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//Remove changed values\n\t\t\t\t\tif (!reset.isEmpty()) {\n\t\t\t\t\t\tfor (Formula formula : formulaColumns.keySet()) {\n\t\t\t\t\t\t\tformula.getValues().keySet().removeAll(reset);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tif (filterControl != null) {\n\t\t\tjTable.getColumnModel().addColumnModelListener( new TableColumnModelListener() {\n\t\t\t\t@Override\n\t\t\t\tpublic void columnAdded(TableColumnModelEvent e) {}\n\n\t\t\t\t@Override\n\t\t\t\tpublic void columnRemoved(TableColumnModelEvent e) {}\n\n\t\t\t\t@Override\n\t\t\t\tpublic void columnMoved(TableColumnModelEvent e) {\n\t\t\t\t\tSwingUtilities.invokeLater(new Runnable() {\n\t\t\t\t\t\t@Override\n\t\t\t\t\t\tpublic void run() {\n\t\t\t\t\t\t\tfilterControl.updateColumns(false);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t@Override\n\t\t\t\tpublic void columnMarginChanged(ChangeEvent e) { }\n\n\t\t\t\t@Override\n\t\t\t\tpublic void columnSelectionChanged(ListSelectionEvent e) { }\n\t\t\t});\n\t\t}\n\t\tCOLUMN_MANAGERS.put(toolName, this);\n\t}\n\n\tpublic static ColumnManager<?, ?> getColumnManager(String toolName) {\n\t\treturn COLUMN_MANAGERS.get(toolName);\n\t}\n\n\tpublic Set<Formula> getFormulas() {\n\t\treturn formulaColumns.keySet();\n\t}\n\n\tpublic Set<Jump> getJumps() {\n\t\treturn jumpColumns.keySet();\n\t}\n\n\tpublic T[] getEnumConstants() {\n\t\treturn tableFormat.getEnumConstants();\n\t}\n\n\tprivate FormulaColumn<Q> get(Formula formula) {\n\t\tFormulaColumn<Q> column = formulaColumns.get(formula);\n\t\tif (column == null) { //Better save than sorry\n\t\t\tcolumn = new FormulaColumn<>(formula);\n\t\t}\n\t\treturn column;\n\t}\n\n\tprivate JumpColumn<Q> get(Jump jump) {\n\t\tJumpColumn<Q> column = jumpColumns.get(jump);\n\t\tif (column == null) { //Better save than sorry\n\t\t\tcolumn = new JumpColumn<>(jump);\n\t\t}\n\t\treturn column;\n\t}\n\n\tprivate void updateGUI() {\n\t\ttableModel.fireTableStructureChanged();\n\t\tjTable.autoResizeColumns();\n\t\tif (filterControl != null) {\n\t\t\tfilterControl.updateColumns(true);\n\t\t}\n\t}\n\n\tprivate void remove(Formula remove) {\n\t\ttableFormat.removeColumn(get(remove));\n\t\tformulaColumns.remove(remove);\n\t}\n\n\tprivate void remove(Jump remove) {\n\t\ttableFormat.removeColumn(get(remove));\n\t\tjumpColumns.remove(remove);\n\t}\n\n\tprivate FormulaColumn<Q> add(Formula add) {\n\t\tFormulaColumn<Q> toColumn = get(add);\n\t\ttableFormat.addColumn(toColumn);\n\t\tformulaColumns.put(add, toColumn);\n\t\treturn toColumn;\n\t}\n\n\tprivate JumpColumn<Q> add(Jump add) {\n\t\tJumpColumn<Q> toColumn = get(add);\n\t\ttableFormat.addColumn(toColumn);\n\t\tjumpColumns.put(add, toColumn);\n\t\t//Update Data\n\t\tupdateJumpsData(add);\n\t\treturn toColumn;\n\t}\n\n\tprivate boolean contains(Jump add) {\n\t\treturn jumpColumns.containsKey(add);\n\t}\n\n\tpublic void editColumn(Formula remove, Formula add) {\n\t\t//Remove old\n\t\tremove(remove);\n\t\t//Add new\n\t\tadd(add);\n\t\t//Update GUI\n\t\tupdateGUI();\n\t\t//Settings\n\t\tSettings.lock(\"Formulas (Edit)\");\n\t\tSettings.get().getTableFormulas(toolName).remove(remove);\n\t\tSettings.get().getTableFormulas(toolName).add(add);\n\t\tSettings.unlock(\"Formulas (Edit)\");\n\t\tprogram.saveSettings(\"Formulas (Edit)\");\n\t}\n\n\tpublic void removeColumn(Formula remove) {\n\t\t//Remove\n\t\tremove(remove);\n\t\t//Update GUI\n\t\tupdateGUI();\n\t\t//Settings\n\t\tSettings.lock(\"Formulas (Remove)\");\n\t\tSettings.get().getTableFormulas(toolName).remove(remove);\n\t\tSettings.unlock(\"Formulas (Remove)\");\n\t\tprogram.saveSettings(\"Formulas (Remove)\");\n\t}\n\n\tpublic void removeColumn(Jump remove) {\n\t\t//Remove old\n\t\tremove(remove);\n\t\t//Update GUI\n\t\tupdateGUI(); //ToDo\n\t\t//Settings\n\t\tSettings.lock(\"Jumps (remove)\");\n\t\tSettings.get().getTableJumps(toolName).remove(remove);\n\t\tSettings.unlock(\"Jumps (remove)\");\n\t\tprogram.saveSettings(\"Jumps (remove)\");\n\t}\n\n\tprivate void load() {\n\t\t//Add\n\t\tfor (Formula add : Settings.get().getTableFormulas(toolName)) {\n\t\t\tadd(add);\n\t\t}\n\t\tfor (Jump add : Settings.get().getTableJumps(toolName)) {\n\t\t\tadd(add);\n\t\t}\n\t\t//Update GUI\n\t\tupdateGUI();\n\t}\n\n\t@Override\n\tpublic FormulaColumn<Q> addColumn(Formula add) {\n\t\t//Add\n\t\tFormulaColumn<Q> column = add(add);\n\t\t//Update GUI\n\t\tupdateGUI();\n\t\t//Settings\n\t\tSettings.lock(\"Formulas (add)\");\n\t\tSettings.get().getTableFormulas(toolName).add(add);\n\t\tSettings.unlock(\"Formulas (add)\");\n\t\tprogram.saveSettings(\"Formulas (add)\");\n\t\treturn column;\n\t}\n\n\t@Override\n\tpublic JumpColumn<Q> addColumn(Jump add) {\n\t\tif (contains(add)) {\n\t\t\treturn null; //Skip existing\n\t\t}\n\t\t//Add\n\t\tJumpColumn<Q> column = add(add);\n\t\t//Update GUI\n\t\tupdateGUI();\n\t\t//Settings\n\t\tSettings.lock(\"Jumps (add)\");\n\t\tSettings.get().getTableJumps(toolName).add(add);\n\t\tSettings.unlock(\"Jumps (add)\");\n\t\tprogram.saveSettings(\"Jumps (add)\");\n\t\treturn column;\n\t}\n\n\tpublic void addColumns(Collection<MyLocation> locations) {\n\t\t//Convert\n\t\tList<Jump> jumps = new ArrayList<>();\n\t\tfor (MyLocation location : locations) {\n\t\t\tJump add = new Jump(location);\n\t\t\tif (contains(add)) {\n\t\t\t\tcontinue; //Skip existing\n\t\t\t}\n\t\t\tjumps.add(add);\n\t\t}\n\t\t//Add\n\t\tfor (Jump add : jumps) {\n\t\t\tadd(add);\n\t\t}\n\t\t//Update GUI\n\t\tupdateGUI();\n\t\t//Settings\n\t\tSettings.lock(\"Jumps (add)\");\n\t\tfor (Jump add : jumps) {\n\t\t\tSettings.get().getTableJumps(toolName).add(add);\n\t\t}\n\t\tSettings.unlock(\"Jumps (add)\");\n\t\tprogram.saveSettings(\"Jumps (add)\");\n\t}\n\n\tpublic void clearJumpColumns() {\n\t\t//Remove\n\t\tfor (Jump remove : Settings.get().getTableJumps(toolName)) {\n\t\t\tremove(remove);\n\t\t}\n\t\t//Update GUI\n\t\tupdateGUI();\n\t\t//Settings\n\t\tSettings.lock(\"Jumps (clear)\");\n\t\tSettings.get().getTableJumps(toolName).clear();\n\t\tSettings.unlock(\"Jumps (clear)\");\n\t\tprogram.saveSettings(\"Jumps (clear)\");\n\t}\n\n\tpublic void resetFormulaData() {\n\t\tfor (Formula formula : formulaColumns.keySet()) {\n\t\t\tformula.getValues().clear(); //Reset calculations\n\t\t}\n\t}\n\n\tpublic void lock() {\n\t\tlocked = true;\n\t}\n\n\tpublic void unlock() {\n\t\tlocked = false;\n\t}\n\n\tpublic void updateJumpsData(Jump jump) {\n\t\tfor (LocationType locationType : program.getMainTabs().get(toolName).getLocations()) {\n\t\t\tMyLocation location = locationType.getLocation();\n\t\t\tif (location == null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlong systemID = location.getSystemID();\n\t\t\tif (systemID <= 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tjump.addJump(locationType);\n\t\t}\n\t}\n\n\tpublic void updateJumpsData() {\n\t\tfor (LocationType locationType : program.getMainTabs().get(toolName).getLocations()) {\n\t\t\tMyLocation location = locationType.getLocation();\n\t\t\tif (location == null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlong systemID = location.getSystemID();\n\t\t\tif (systemID <= 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfor (Jump jump : Settings.get().getTableJumps(toolName)) {\n\t\t\t\tjump.addJump(locationType);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static interface IndexColumn<Q> extends EnumTableColumn<Q> {\n\t\tpublic Integer getIndex();\n\t\tpublic void setIndex(Integer index);\n\t}\n\n\tpublic static class FormulaColumn<Q> implements IndexColumn<Q> {\n\n\t\tprivate final Formula formula;\n\n\t\tpublic FormulaColumn(Formula formula) {\n\t\t\tthis.formula = formula;\n\t\t}\n\n\t\tpublic Formula getFormula() {\n\t\t\treturn formula;\n\t\t}\n\n\t\t@Override\n\t\tpublic Integer getIndex() {\n\t\t\treturn formula.getIndex();\n\t\t}\n\n\t\t@Override\n\t\tpublic void setIndex(Integer index) {\n\t\t\tformula.setIndex(index);\n\t\t}\n\n\t\t@Override\n\t\tpublic Class<?> getType() {\n\t\t\tif (formula.isBoolean()) {\n\t\t\t\treturn String.class;\n\t\t\t} else {\n\t\t\t\treturn Double.class;\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic Comparator<?> getComparator() {\n\t\t\treturn GlazedLists.comparableComparator();\n\t\t}\n\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn formula.getColumnName();\n\t\t}\n\n\t\t@Override\n\t\tpublic Object getColumnValue(Q from) {\n\t\t\treturn formula;\n\t\t}\n\n\t\t@Override\n\t\tpublic String name() {\n\t\t\treturn formula.getColumnName();\n\t\t}\n\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\treturn getColumnName();\n\t\t}\n\n\t\t@Override\n\t\tpublic int hashCode() {\n\t\t\tint hash = 7;\n\t\t\thash = 37 * hash + Objects.hashCode(this.formula.getColumnName());\n\t\t\treturn hash;\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean equals(Object obj) {\n\t\t\tif (this == obj) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (obj == null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (getClass() != obj.getClass()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfinal FormulaColumn<?> other = (FormulaColumn<?>) obj;\n\t\t\tif (!Objects.equals(this.formula.getColumnName(), other.formula.getColumnName())) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tpublic static class JumpColumn<Q> implements IndexColumn<Q> {\n\n\t\tprivate final Jump jump;\n\n\t\tpublic JumpColumn(Jump jump) {\n\t\t\tthis.jump = jump;\n\t\t}\n\n\t\tpublic Jump getJump() {\n\t\t\treturn jump;\n\t\t}\n\n\t\t@Override\n\t\tpublic Integer getIndex() {\n\t\t\treturn jump.getIndex();\n\t\t}\n\n\t\t@Override\n\t\tpublic void setIndex(Integer index) {\n\t\t\tjump.setIndex(index);\n\t\t}\n\n\t\t@Override\n\t\tpublic Class<?> getType() {\n\t\t\treturn Integer.class;\n\t\t}\n\n\t\t@Override\n\t\tpublic Comparator<?> getComparator() {\n\t\t\treturn GlazedLists.comparableComparator();\n\t\t}\n\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn jump.getName();\n\t\t}\n\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn GuiShared.get().jumpsColumnToolTip(jump.getName());\n\t\t}\n\n\t\t@Override\n\t\tpublic Object getColumnValue(Q from) {\n\t\t\treturn jump.getJumps(from);\n\t\t}\n\n\t\t@Override\n\t\tpublic String name() {\n\t\t\treturn jump.getName();\n\t\t}\n\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\treturn getColumnName();\n\t\t}\n\n\t\t@Override\n\t\tpublic int hashCode() {\n\t\t\tint hash = 3;\n\t\t\thash = 59 * hash + (int) (this.jump.getSystemID() ^ (this.jump.getSystemID() >>> 32));\n\t\t\treturn hash;\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean equals(Object obj) {\n\t\t\tif (obj == null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (getClass() != obj.getClass()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfinal JumpColumn<?> other = (JumpColumn<?>) obj;\n\t\t\treturn this.jump.getSystemID() == other.jump.getSystemID();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/EnumTableColumn.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.table;\n\nimport ca.odell.glazedlists.GlazedLists;\nimport java.awt.Color;\nimport java.awt.Component;\nimport java.util.Comparator;\nimport javax.swing.Icon;\nimport net.nikr.eve.jeveasset.data.api.my.MyNpcStanding;\nimport net.nikr.eve.jeveasset.data.api.raw.RawNpcStanding;\nimport net.nikr.eve.jeveasset.gui.shared.StringComparators;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.ISK;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.ModulePriceValue;\n\n/**\n *\n * @author Candle\n * @param <Q>\n */\npublic interface EnumTableColumn<Q> {\n\tpublic Class<?> getType();\n\tpublic Comparator<?> getComparator();\n\tpublic String getColumnName();\n\tpublic Object getColumnValue(Q from);\n\tpublic String name();\n\tpublic default boolean isColumnEditable(Object baseObject) {\n\t\treturn false;\n\t}\n\tpublic default boolean isShowDefault() {\n\t\treturn true;\n\t}\n\tpublic default boolean setColumnValue(Object baseObject, Object editedValue) {\n\t\treturn false;\n\t}\n\tpublic default String getColumnToolTip() {\n\t\treturn null;\n\t}\n\n\tpublic static Comparator<?> getComparator(final Class<?> type) {\n\t\tif (type.equals(String.class)) {\n\t\t\treturn StringComparators.TO_STRING;\n\t\t} else if (type.equals(Icon.class)) {\n\t\t\treturn null; //Not sortable\n\t\t} else if (type.equals(RawNpcStanding.FromType.class)) {\n\t\t\treturn  MyNpcStanding.FROM_TYPE_COMPARATOR;\n\t\t} else if (Comparable.class.isAssignableFrom(type))  {\n\t\t\treturn GlazedLists.comparableComparator();\n\t\t} else if (Component.class.isAssignableFrom(type)\n\t\t\t\t|| ModulePriceValue.class.isAssignableFrom(type)\n\t\t\t\t|| ISK.class.isAssignableFrom(type)\n\t\t\t\t|| Color.class.isAssignableFrom(type)\n\t\t\t\t)  {\n\t\t\treturn null; //Not sortable\n\t\t} else {\n\t\t\tthrow new RuntimeException(type.getName() + \" is not comparable\");\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/EnumTableFormatAdaptor.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.table;\n\nimport ca.odell.glazedlists.gui.AdvancedTableFormat;\nimport ca.odell.glazedlists.gui.WritableTableFormat;\nimport com.udojava.evalex.Expression;\nimport java.math.BigDecimal;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Collections;\nimport java.util.Comparator;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.TimeUnit;\nimport net.nikr.eve.jeveasset.gui.shared.filter.SimpleTableFormat;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JFormulaDialog;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JFormulaDialog.Formula;\nimport net.nikr.eve.jeveasset.gui.shared.table.ColumnManager.IndexColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.NumberValue;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileItem;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileTotal;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.StockpileTableFormat;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n/**\n *\n * @author Candle\n * @param <T>\n * @param <Q>\n */\npublic class EnumTableFormatAdaptor<T extends Enum<T> & EnumTableColumn<Q>, Q> implements AdvancedTableFormat<Q>, WritableTableFormat<Q>, SimpleTableFormat<Q> {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(EnumTableFormatAdaptor.class);\n\n\tpublic static enum ResizeMode {\n\t\tTEXT {\n\t\t\t@Override String getI18N() {\n\t\t\t\treturn GuiShared.get().tableResizeText();\n\t\t\t}\n\t\t},\n\t\tWINDOW {\n\t\t\t@Override String getI18N() {\n\t\t\t\treturn GuiShared.get().tableResizeWindow();\n\t\t\t}\n\t\t},\n\t\tNONE {\n\t\t\t@Override String getI18N() {\n\t\t\t\treturn GuiShared.get().tableResizeNone();\n\t\t\t}\n\t\t};\n\n\t\tabstract String getI18N();\n\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\treturn getI18N();\n\t\t}\n\t}\n\n\tprivate final static Object NULL_PLACEHOLDER = new Object();\n\n\tprivate final List<ColumnValueChangeListener> listeners = new ArrayList<>();\n\n\tprivate final Class<T> enumClass;\n\tprivate final Map<String, EnumTableColumn<Q>> extendedTableFormats = new HashMap<>();\n\tprivate final List<EnumTableColumn<Q>> shownColumns = new ArrayList<>();\n\tprivate final Map<String, EnumTableColumn<Q>> orderColumnsName = new HashMap<>();\n\tprivate final List<EnumTableColumn<Q>> allColumns = new ArrayList<>();\n\tprivate final List<EnumTableColumn<Q>> orderColumns = new ArrayList<>();\n\tprivate final List<EnumTableColumn<Q>> tempColumns = new ArrayList<>();\n\tprivate final ColumnComparator columnComparator;\n\tprivate ResizeMode resizeMode;\n\n\tprotected EnumTableFormatAdaptor(final Class<T> enumClass) {\n\t\tthis(enumClass, new ArrayList<>());\n\t}\n\n\tprotected EnumTableFormatAdaptor(final Class<T> enumClass, final List<EnumTableColumn<Q>> enumTableColumns) {\n\t\tthis.enumClass = enumClass;\n\t\tfor (EnumTableColumn<Q> column : enumTableColumns) {\n\t\t\textendedTableFormats.put(column.name(), column);\n\t\t}\n\t\tallColumns.addAll(Arrays.asList(enumClass.getEnumConstants()));\n\t\tallColumns.addAll(extendedTableFormats.values());\n\t\tcolumnComparator = new ColumnComparator();\n\t\tresizeMode = ResizeMode.TEXT;\n\t\treset();\n\t}\n\n\tpublic T[] getEnumConstants() {\n\t\treturn enumClass.getEnumConstants();\n\t}\n\n\tpublic final void reset() {\n\t\tshownColumns.clear();\n\t\torderColumnsName.clear();\n\t\torderColumns.clear();\n\t\tfor (T t : enumClass.getEnumConstants()) {\n\t\t\tif (t.isShowDefault()) {\n\t\t\t\tshownColumns.add(t);\n\t\t\t}\n\t\t\torderColumnsName.put(t.name(), t);\n\t\t}\n\t\torderColumns.addAll(Arrays.asList(enumClass.getEnumConstants()));\n\t\taddTempColumns();\n\t}\n\n\tprivate void addTempColumns() {\n\t\tfor (EnumTableColumn<Q> column : tempColumns) {\n\t\t\taddColumn(column, false);\n\t\t}\n\t}\n\n\t/**\n\t * Used to add special columns (Ex: FormulaColumn and JumpColumn)\n\t * @param column\n\t */\n\t@Override\n\tpublic void addColumn(EnumTableColumn<Q> column) {\n\t\taddColumn(column, true);\n\t}\n\n\tprivate void addColumn(EnumTableColumn<Q> column, boolean temp) {\n\t\tInteger index = null;\n\t\tif (column instanceof IndexColumn) {\n\t\t\tindex = ((IndexColumn)column).getIndex();\n\t\t}\n\t\tif (!shownColumns.contains(column)) {\n\t\t\torderColumnsName.put(column.name(), column);\n\t\t\tshownColumns.add(column);\n\t\t\tif (index != null && index >= 0 && index < orderColumns.size()) {\n\t\t\t\torderColumns.add(index, column);\n\t\t\t\tallColumns.add(index, column);\n\t\t\t\tupdateColumns();\n\t\t\t} else {\n\t\t\t\torderColumns.add(column);\n\t\t\t\tallColumns.add(column);\n\t\t\t}\n\t\t\tif (temp) {\n\t\t\t\ttempColumns.add(column);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Used to remove special columns (Ex: FormulaColumn and JumpColumn)\n\t * @param column\n\t */\n\tpublic void removeColumn(EnumTableColumn<Q> column) {\n\t\torderColumnsName.remove(column.name());\n\t\tshownColumns.remove(column);\n\t\torderColumns.remove(column);\n\t\ttempColumns.remove(column);\n\t\tallColumns.remove(column);\n\t}\n\n\t@Override\n\tpublic List<EnumTableColumn<Q>> getShownColumns() {\n\t\treturn shownColumns;\n\t}\n\n\t@Override\n\tpublic List<EnumTableColumn<Q>> getAllColumns() {\n\t\treturn allColumns;\n\t}\n\n\tpublic ResizeMode getResizeMode() {\n\t\treturn resizeMode;\n\t}\n\n\tpublic void setResizeMode(final ResizeMode resizeMode) {\n\t\tif (resizeMode == null) {\n\t\t\treturn;\n\t\t}\n\t\tthis.resizeMode = resizeMode;\n\t}\n\n\tpublic void setColumns(final List<SimpleColumn> columns) {\n\t\tif (columns == null) {\n\t\t\treturn;\n\t\t}\n\t\torderColumns.clear();\n\t\tshownColumns.clear();\n\t\torderColumnsName.clear();\n\t\tList<T> originalColumns = new ArrayList<>(Arrays.asList(enumClass.getEnumConstants()));\n\t\tfor (SimpleColumn column : columns) {\n\t\t\ttry {\n\t\t\t\tT t = Enum.valueOf(enumClass, column.getEnumName());\n\t\t\t\torderColumns.add(t);\n\t\t\t\torderColumnsName.put(t.name(), t);\n\t\t\t\tif (column.isShown()) {\n\t\t\t\t\tshownColumns.add(t);\n\t\t\t\t}\n\t\t\t} catch (IllegalArgumentException ex) {\n\t\t\t\tLOG.info(\"Removing column: \" + column.getEnumName());\n\t\t\t}\n\t\t}\n\t\t//Add new columns\n\t\tfor (T t : originalColumns) {\n\t\t\tif (!orderColumns.contains(t)) {\n\t\t\t\tLOG.info(\"Adding column: \" + t.getColumnName());\n\t\t\t\tint index = originalColumns.indexOf(t);\n\t\t\t\tif (index > orderColumns.size()) {\n\t\t\t\t\tindex = orderColumns.size();\n\t\t\t\t}\n\t\t\t\torderColumns.add(index, t);\n\t\t\t\torderColumnsName.put(t.name(), t);\n\t\t\t\tif (t.isShowDefault()) {\n\t\t\t\t\tshownColumns.add(t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\taddTempColumns();\n\t\tupdateColumns();\n\t}\n\n\tpublic List<SimpleColumn> getColumns() {\n\t\tList<SimpleColumn> columns = new ArrayList<>(orderColumns.size());\n\t\tfor (EnumTableColumn<Q> t : orderColumns) {\n\t\t\tif (tempColumns.contains(t)) { //Ignore temp columns\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tString columnName = t.getColumnName();\n\t\t\tString enumName = t.name();\n\t\t\tboolean shown = shownColumns.contains(t);\n\t\t\tcolumns.add(new SimpleColumn(enumName, columnName, shown));\n\t\t}\n\t\treturn columns;\n\t}\n\n\tpublic void moveColumn(final int from, final int to) {\n\t\tif (from == to) {\n\t\t\treturn;\n\t\t}\n\t\tEnumTableColumn<Q> fromColumn = getColumn(from);\n\t\tEnumTableColumn<Q> toColumn = getColumn(to);\n\n\t\tint fromIndex = orderColumns.indexOf(fromColumn);\n\t\torderColumns.remove(fromIndex);\n\n\t\tint toIndex = orderColumns.indexOf(toColumn);\n\t\tif (to > from) {\n\t\t\ttoIndex++;\n\t\t}\n\t\torderColumns.add(toIndex, fromColumn);\n\t\t//Update IndexColumn\n\t\tfor (int i = 0; i < orderColumns.size(); i++) {\n\t\t\tEnumTableColumn<Q> column = orderColumns.get(i);\n\t\t\tif (column instanceof IndexColumn) {\n\t\t\t\t((IndexColumn)column).setIndex(i);\n\t\t\t}\n\t\t}\n\t\tupdateColumns();\n\t}\n\n\tpublic void hideColumn(final T column) {\n\t\tif (!shownColumns.contains(column)) {\n\t\t\treturn;\n\t\t}\n\t\tshownColumns.remove(column);\n\t\tupdateColumns();\n\t}\n\n\tpublic void showColumn(final T column) {\n\t\tif (shownColumns.contains(column)) {\n\t\t\treturn;\n\t\t}\n\t\tshownColumns.add(column);\n\t\tupdateColumns();\n\t}\n\n\tpublic void addListener(ColumnValueChangeListener listener) {\n\t\tlisteners.add(listener);\n\t}\n\n\tpublic void removeListener(ColumnValueChangeListener listener) {\n\t\tlisteners.remove(listener);\n\t}\n\n\tprivate void notifyListeners() {\n\t\tfor (ColumnValueChangeListener listener : listeners) {\n\t\t\tlistener.columnValueChanged();\n\t\t}\n\t}\n\n\tprivate EnumTableColumn<Q> getColumn(final int i) throws IndexOutOfBoundsException {\n\t\treturn getShownColumns().get(i);\n\t}\n\n\tprivate void updateColumns() {\n\t\tCollections.sort(shownColumns, columnComparator);\n\t}\n\n\t@Override public Class<?> getColumnClass(final int i) {\n\t\ttry {\n\t\t\treturn getColumn(i).getType();\n\t\t} catch (IndexOutOfBoundsException ex) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t@Override public Comparator<?> getColumnComparator(final int i) {\n\t\ttry {\n\t\t\treturn getColumn(i).getComparator();\n\t\t} catch (IndexOutOfBoundsException ex) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t@Override public int getColumnCount() {\n\t\treturn getShownColumns().size();\n\t}\n\n\t@Override public String getColumnName(final int i) {\n\t\ttry {\n\t\t\treturn getColumn(i).getColumnName();\n\t\t} catch (IndexOutOfBoundsException ex) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic String getColumnToolTip(final int i) {\n\t\ttry {\n\t\t\treturn getColumn(i).getColumnToolTip();\n\t\t} catch (IndexOutOfBoundsException ex) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t@Override\n\tpublic EnumTableColumn<Q> valueOf(String column) {\n\t\tEnumTableColumn<Q> enumTableColumn = extendedTableFormats.get(column);\n\t\tif (enumTableColumn != null) {\n\t\t\treturn enumTableColumn;\n\t\t}\n\t\treturn orderColumnsName.get(column);\n\t}\n\n\t@Override public Object getColumnValue(final Q e, final int i) {\n\t\ttry {\n\t\t\treturn getColumnValue(e, getColumn(i));\n\t\t} catch (IndexOutOfBoundsException ex) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t@Override\n\tpublic Object getColumnValue(final Q e, final String columnName) {\n\t\tEnumTableColumn<Q> column = extendedTableFormats.get(columnName);\n\t\tif (column == null) {\n\t\t\tcolumn = orderColumnsName.get(columnName);\n\t\t}\n\t\treturn getColumnValue(e, column);\n\t}\n\n\tprivate Object getColumnValue(final Q e, final EnumTableColumn<Q> column) {\n\t\tif (column == null) { //Better safe than sorry\n\t\t\treturn null;\n\t\t}\n\t\tObject object = column.getColumnValue(e);\n\t\tif (object instanceof Formula) {\n\t\t\tFormula formula = (Formula) object;\n\t\t\tObject value = formula.getValues().get(e);\n\t\t\tif (value == null) { //eval\n\t\t\t\tvalue = eval(formula, e);\n\t\t\t\tif (value == null) {\n\t\t\t\t\tvalue = NULL_PLACEHOLDER;\n\t\t\t\t}\n\t\t\t\tformula.getValues().put(e, value);\n\t\t\t}\n\t\t\tif (value.equals(NULL_PLACEHOLDER)) { //Handle NULL_PLACEHOLDER\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn object;\n\t\t}\n\t}\n\n\tprivate Object eval(Formula formula, Q e) {\n\t\tfinal Expression expression = formula.getExpression();\n\t\t//Populate variableColumns\n\t\tif (formula.getVariableColumns().isEmpty()) {\n\t\t\tfor (T t : enumClass.getEnumConstants()) {\n\t\t\t\tif (formula.getUsedVariables().contains(JFormulaDialog.getHardName(t))) {\n\t\t\t\t\tformula.getVariableColumns().add(t.name());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t//Set variables\n\t\tif (e instanceof StockpileTotal) {\n\t\t\tif (formula.isBoolean()) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tStockpileTotal totalItem = (StockpileTotal) e;\n\t\t\tdouble total = 0.0;\n\t\t\tfor (StockpileItem item : totalItem.getStockpile().getClaims()) {\n\t\t\t\tsetVariables(formula, StockpileTableFormat.values(), item);\n\t\t\t\tBigDecimal value = safeEval(expression);\n\t\t\t\tif (value != null) {\n\t\t\t\t\ttotal = total + value.doubleValue();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn total;\n\t\t} else { //Default\n\t\t\tsetVariables(formula, enumClass.getEnumConstants(), e);\n\t\t\t//Eval\n\t\t\tBigDecimal value = safeEval(expression);\n\t\t\tif (value == null) {\n\t\t\t\treturn null;\n\t\t\t} else if (formula.isBoolean()) {\n\t\t\t\treturn value.compareTo(BigDecimal.ZERO) > 0 ? \"True\" : \"False\";\n\t\t\t} else {\n\t\t\t\treturn value.doubleValue();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static BigDecimal safeEval(Expression expression) {\n\t\ttry {\n\t\t\treturn expression.eval();\n\t\t} catch (RuntimeException ex) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate static <T extends Enum<T> & EnumTableColumn<Q>, Q> void setVariables(Formula formula, T[] enumColumns, Q e) {\n\t\tfinal Expression expression = formula.getExpression();\n\t\tfor (T t : enumColumns) {\n\t\t\tif (!formula.getVariableColumns().contains(t.name())) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tNumber number = getValue(t, e);\n\t\t\tif (number != null) {\n\t\t\t\texpression.setVariable(JFormulaDialog.getHardName(t), new BigDecimal(number.toString()));\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static <T extends Enum<T> & EnumTableColumn<Q>, Q> Number getValue(T t, Q e) {\n\t\tif (Number.class.isAssignableFrom(t.getType())) {\n\t\t\tNumber number = (Number) t.getColumnValue(e);\n\t\t\tif (number == null) { //Handle null\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\treturn number;\n\t\t} else if (NumberValue.class.isAssignableFrom(t.getType())) {\n\t\t\tNumberValue numberValue = (NumberValue) t.getColumnValue(e);\n\t\t\tif (numberValue == null) { //Handle null\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tNumber number = numberValue.getNumber();\n\t\t\tif (number == null) { //Handle null\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\treturn number;\n\t\t} else if (Date.class.isAssignableFrom(t.getType())) {\n\t\t\tDate date = (Date) t.getColumnValue(e);\n\t\t\tlong diff = date.getTime() - System.currentTimeMillis();\n\t\t\treturn TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);\n\t\t}\n\t\treturn null; //Not a valid numeric column\n\t}\n\n\t//Used by the JSeparatorTable\n\t@Override public boolean isEditable(final Q baseObject, final int i) {\n\t\ttry {\n\t\t\treturn getColumn(i).isColumnEditable(baseObject);\n\t\t} catch (IndexOutOfBoundsException ex) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t@Override public Q setColumnValue(final Q baseObject, final Object editedValue, final int i) {\n\t\ttry {\n\t\t\tboolean changed = getColumn(i).setColumnValue(baseObject, editedValue);\n\t\t\tif (changed) {\n\t\t\t\tnotifyListeners();\n\t\t\t}\n\t\t} catch (IndexOutOfBoundsException ex) {\n\t\t\t//No problem\n\t\t}\n\t\treturn baseObject;\n\t}\n\n\tclass ColumnComparator implements Comparator<EnumTableColumn<Q>> {\n\n\t\t@Override\n\t\tpublic int compare(final EnumTableColumn<Q> o1, final EnumTableColumn<Q> o2) {\n\t\t\treturn orderColumns.indexOf(o1) - orderColumns.indexOf(o2);\n\t\t}\n\n\t}\n\n\tpublic static class SimpleColumn {\n\t\tprivate final String enumName;\n\t\tprivate final String columnName;\n\t\tprivate boolean shown;\n\n\t\tpublic SimpleColumn(final String enumName, final boolean shown) {\n\t\t\tthis.enumName = enumName;\n\t\t\tthis.columnName = \"\";\n\t\t\tthis.shown = shown;\n\t\t}\n\n\t\tpublic SimpleColumn(final String enumName, final String columnName, final boolean shown) {\n\t\t\tthis.enumName = enumName;\n\t\t\tthis.columnName = columnName;\n\t\t\tthis.shown = shown;\n\t\t}\n\n\t\tpublic String getColumnName() {\n\t\t\treturn columnName;\n\t\t}\n\n\t\tpublic String getEnumName() {\n\t\t\treturn enumName;\n\t\t}\n\n\t\tpublic boolean isShown() {\n\t\t\treturn shown;\n\t\t}\n\n\t\tpublic void setShown(final boolean shown) {\n\t\t\tthis.shown = shown;\n\t\t}\n\t}\n\n\tpublic static interface ColumnValueChangeListener {\n\t\tpublic void columnValueChanged();\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/EventListManager.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.table;\r\n\r\nimport ca.odell.glazedlists.BasicEventList;\r\nimport ca.odell.glazedlists.DebugList;\r\nimport ca.odell.glazedlists.EventList;\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.CliOptions;\r\n\r\n\r\npublic class EventListManager {\r\n\r\n\tprivate EventListManager() { }\r\n\r\n\tpublic static <E> EventList<E> create() {\r\n\t\tif (CliOptions.get().isDebug()) {\r\n\t\t\tDebugList<E> debugList = new DebugList<>();\r\n\t\t\tdebugList.setLockCheckingEnabled(true);\r\n\t\t\treturn debugList;\r\n\t\t} else {\r\n\t\t\treturn new BasicEventList<>();\r\n\t\t}\r\n\t}\r\n\tpublic static <E> EventList<E> create(Collection<E> data) {\r\n\t\tEventList<E> eventList = create();\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().writeLock().lock();\r\n\t\t\teventList.addAll(data);\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\r\n\t\t}\r\n\t\treturn eventList;\r\n\t}\r\n\tpublic static <E> List<E> safeList(EventList<E> eventList) {\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\t\treturn new ArrayList<>(eventList);\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t}\r\n\tpublic static <E> boolean isEmpty(EventList<E> eventList) {\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\t\treturn eventList.isEmpty();\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t}\r\n\tpublic static <E> boolean contains(EventList<E> eventList, E e) {\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\t\treturn eventList.contains(e);\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t}\r\n\tpublic static <E> int size(EventList<E> eventList) {\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\t\treturn eventList.size();\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t}\r\n\tpublic static <E> E get(EventList<E> eventList, int index) {\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\t\treturn eventList.get(index);\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t}\r\n\tpublic static <E> int indexOf(EventList<E> eventList, Object object) {\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\t\treturn eventList.indexOf(object);\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/EventModels.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.table;\r\n\r\nimport ca.odell.glazedlists.EventList;\r\nimport ca.odell.glazedlists.TextFilterator;\r\nimport ca.odell.glazedlists.gui.TableFormat;\r\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\r\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\r\nimport ca.odell.glazedlists.swing.GlazedListsSwing;\r\nimport java.util.List;\r\nimport javax.swing.JTable;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.gui.tabs.routing.SolarSystem;\r\n\r\n\r\npublic class EventModels {\r\n\r\n\t//EventModels.createTableModel\r\n\tpublic static <E> DefaultEventTableModel<E> createTableModel(EventList<E> source, TableFormat<E> tableFormat) {\r\n\t\t// XXX - Workaround for java bug: https://bugs.openjdk.java.net/browse/JDK-8068824\r\n\t\t//return new DefaultEventTableModel<E>(createSwingThreadProxyList(source), tableFormat);\r\n\t\treturn new FixedEventTableModel<>(createSwingThreadProxyList(source), tableFormat);\r\n\t}\r\n\r\n\t//EventModels.createSelectionModel\r\n\tpublic static <E> DefaultEventSelectionModel<E> createSelectionModel(EventList<E> source) {\r\n\t\treturn new DefaultEventSelectionModel<>(createSwingThreadProxyList(source));\r\n\t}\r\n\r\n\tpublic static <E> EventList<E> createSwingThreadProxyList(EventList<E> source) {\r\n\t\tfinal EventList<E> result;\r\n\t\tsource.getReadWriteLock().readLock().lock();\r\n\t\ttry {\r\n\t\t\tresult = GlazedListsSwing.swingThreadProxyList(source);\r\n\t\t} finally {\r\n\t\t\tsource.getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// XXX - Workaround for java bug: https://bugs.openjdk.java.net/browse/JDK-8068824\r\n\tpublic static class FixedEventTableModel<E> extends DefaultEventTableModel<E> {\r\n\r\n\t\tprivate JTable jTable;\r\n\r\n\t\tpublic FixedEventTableModel(EventList<E> source, TableFormat<E> tableFormat) {\r\n\t\t\tsuper(source, tableFormat);\r\n\t\t}\r\n\r\n\t\tpublic FixedEventTableModel(EventList<E> source, boolean disposeSource, TableFormat<E> tableFormat) {\r\n\t\t\tsuper(source, disposeSource, tableFormat);\r\n\t\t}\r\n\r\n\t\tpublic void setTable(JTable jTable) {\r\n\t\t\tthis.jTable = jTable;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void fireTableStructureChanged() {\r\n\t\t\tif (jTable != null) {\r\n\t\t\t\tjTable.getTableHeader().setDraggedColumn(null);\r\n\t\t\t}\r\n\t\t\tsuper.fireTableStructureChanged();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tpublic static class StringFilterator implements TextFilterator<String> {\r\n\t\t@Override\r\n\t\tpublic void getFilterStrings(final List<String> baseList, final String element) {\r\n\t\t\tif (element.length() > 0) {\r\n\t\t\t\tbaseList.add(element);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static class LocationFilterator implements TextFilterator<MyLocation> {\r\n\t\t@Override\r\n\t\tpublic void getFilterStrings(final List<String> baseList, final MyLocation element) {\r\n\t\t\tbaseList.add(element.getLocation());\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static class ItemFilterator implements TextFilterator<Item> {\r\n\t\t@Override\r\n\t\tpublic void getFilterStrings(List<String> baseList, Item element) {\r\n\t\t\tbaseList.add(element.getTypeName());\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static class ViewFilterator implements TextFilterator<View> {\r\n\t\t@Override\r\n\t\tpublic void getFilterStrings(final List<String> baseList, final View element) {\r\n\t\t\tbaseList.add(element.getName());\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static class SolarSystemFilterator implements TextFilterator<SolarSystem> {\r\n\t\t@Override\r\n\t\tpublic void getFilterStrings(final List<String> baseList, final SolarSystem element) {\r\n\t\t\tbaseList.add(element.getName());\r\n\t\t}\r\n\t}\r\n}"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/JAutoColumnTable.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.table;\n\nimport ca.odell.glazedlists.gui.TableFormat;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport java.awt.Component;\nimport java.awt.Container;\nimport java.awt.event.*;\nimport java.beans.PropertyChangeEvent;\nimport java.beans.PropertyChangeListener;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport javax.swing.Icon;\nimport javax.swing.JComponent;\nimport javax.swing.JScrollPane;\nimport javax.swing.JTable;\nimport javax.swing.JViewport;\nimport javax.swing.SwingConstants;\nimport javax.swing.SwingUtilities;\nimport javax.swing.event.AncestorEvent;\nimport javax.swing.event.AncestorListener;\nimport javax.swing.event.ChangeEvent;\nimport javax.swing.event.ListSelectionEvent;\nimport javax.swing.event.TableColumnModelEvent;\nimport javax.swing.event.TableColumnModelListener;\nimport javax.swing.event.TableModelEvent;\nimport javax.swing.event.TableModelListener;\nimport javax.swing.table.JTableHeader;\nimport javax.swing.table.TableCellEditor;\nimport javax.swing.table.TableCellRenderer;\nimport javax.swing.table.TableColumn;\nimport javax.swing.table.TableColumnModel;\nimport javax.swing.table.TableModel;\nimport javax.swing.text.JTextComponent;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.tag.Tags;\nimport net.nikr.eve.jeveasset.gui.shared.CopyHandler;\nimport net.nikr.eve.jeveasset.gui.shared.InstantToolTip;\nimport net.nikr.eve.jeveasset.gui.shared.TextManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor.ResizeMode;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor.SimpleColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels.FixedEventTableModel;\nimport net.nikr.eve.jeveasset.gui.shared.table.SeparatorTableCell.JSeparatorPanel;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableCellRenderers.BetterNumberEditor;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableCellRenderers.ComponentEditor;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableCellRenderers.ComponentRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableCellRenderers.DateCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableCellRenderers.DateOnlyCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableCellRenderers.DoubleCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableCellRenderers.FloatCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableCellRenderers.IconTableCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableCellRenderers.IntegerCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableCellRenderers.LongCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableCellRenderers.StandingTableCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableCellRenderers.TagsCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableCellRenderers.TextIconTableCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableCellRenderers.ToStringCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.AssetContainer;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.DateOnly;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Duration;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.ExpirerDate;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Standing;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.TextIcon;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.YesNo;\n\n\npublic class JAutoColumnTable extends JTable {\n\n\tprivate JViewport jViewport = null;\n\tprivate int size = 0;\n\tprivate ResizeMode resizeMode = null;\n\tprivate boolean loadingWidth = false;\n\tprivate final Map<String, Integer> columnsWidth = new HashMap<>();\n\tprivate final Map<Object, Integer> rowsWidth = new HashMap<>();\n\tprotected Program program;\n\tprivate boolean autoResizeLock = false;\n\tprivate final Set<String> disableColumnResizeCache = new HashSet<>();\n\tprivate boolean overwrite;\n\n\tpublic JAutoColumnTable(final Program program, final TableModel tableModel) {\n\t\tsuper(tableModel);\n\t\tthis.program = program;\n\n\t\t// XXX - Workaround for java bug: https://bugs.openjdk.java.net/browse/JDK-8068824\n\t\tif (tableModel instanceof FixedEventTableModel) {\n\t\t\tFixedEventTableModel<?> eventTableModel = (FixedEventTableModel) tableModel;\n\t\t\teventTableModel.setTable(this);\n\t\t}\n\n\t\ttry {\n\t\t\toverwrite = !getClass().getMethod(\"getCellRenderer\", int.class, int.class).getDeclaringClass().equals(JTable.class);\n\t\t} catch (NoSuchMethodException ex) {\n\t\t\toverwrite = true; //should never happen, but, will use safe value if it does\n\t\t} catch (SecurityException ex) {\n\t\t\toverwrite = true; //should never happen, but, will use safe value if it does\n\t\t}\n\n\t\t//Listeners\n\t\tListenerClass listener = new ListenerClass();\n\t\tthis.addHierarchyListener(listener);\n\t\tthis.getModel().addTableModelListener(listener);\n\t\tthis.addPropertyChangeListener(\"model\", listener);\n\t\tthis.getTableHeader().addMouseListener(listener);\n\t\tthis.addPropertyChangeListener(\"tableHeader\", listener);\n\t\tthis.getColumnModel().addColumnModelListener(listener);\n\t\tthis.addPropertyChangeListener(\"columnModel\", listener);\n\n\t\tCopyHandler.installCopyFormatter(this);\n\n\t\t//Renders\n\t\tthis.setDefaultRenderer(Float.class, new FloatCellRenderer());\n\t\tthis.setDefaultRenderer(Double.class, new DoubleCellRenderer());\n\t\tthis.setDefaultRenderer(Long.class, new LongCellRenderer());\n\t\tthis.setDefaultRenderer(Integer.class, new IntegerCellRenderer());\n\t\tthis.setDefaultRenderer(Date.class, new DateCellRenderer());\n\t\tthis.setDefaultRenderer(DateOnly.class, new DateOnlyCellRenderer());\n\t\tthis.setDefaultRenderer(Duration.class, new ToStringCellRenderer(SwingConstants.RIGHT));\n\t\tthis.setDefaultRenderer(String.class, new ToStringCellRenderer(SwingConstants.LEFT));\n\t\tthis.setDefaultRenderer(Object.class, new ToStringCellRenderer());\n\t\tthis.setDefaultRenderer(AssetContainer.class, new ToStringCellRenderer(SwingConstants.LEFT));\n\t\tthis.setDefaultRenderer(Enum.class, new ToStringCellRenderer(SwingConstants.LEFT));\n\t\tthis.setDefaultRenderer(Tags.class, new TagsCellRenderer());\n\t\tthis.setDefaultRenderer(YesNo.class, new ToStringCellRenderer(SwingConstants.CENTER));\n\t\tthis.setDefaultRenderer(ExpirerDate.class, new ToStringCellRenderer(SwingConstants.CENTER));\n\t\tthis.setDefaultRenderer(Icon.class, new IconTableCellRenderer());\n\t\tthis.setDefaultRenderer(TextIcon.class, new TextIconTableCellRenderer());\n\t\tthis.setDefaultRenderer(Standing.class, new StandingTableCellRenderer());\n\t\tthis.setDefaultRenderer(Component.class, new ComponentRenderer());\n\t\tthis.setDefaultEditor(Component.class, new ComponentEditor(this.getDefaultEditor(Component.class)));\n\t\tthis.setDefaultEditor(Number.class, new BetterNumberEditor());\n\n\t\tSwingUtilities.invokeLater(new Runnable() {\n\t\t\t@Override\n\t\t\tpublic void run() {\n\t\t\t\tautoResizeColumns();\n\t\t\t}\n\t\t});\n\n\t\tfixScrollPaneRedraw();\n\t}\n\n\t@Override\n\tprotected JTableHeader createDefaultTableHeader() {\n\t\tJTableHeader jTableHeader = new JTableHeader(columnModel) {\n\t\t\t@Override\n\t\t\tpublic String getToolTipText(MouseEvent e) {\n\t\t\t\tjava.awt.Point p = e.getPoint();\n\t\t\t\tint index = columnModel.getColumnIndexAtX(p.x);\n\t\t\t\tif (index < 0 || index >= columnModel.getColumnCount()) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tint realIndex = columnModel.getColumn(index).getModelIndex();\n\t\t\t\treturn getEnumTableFormatAdaptor().getColumnToolTip(realIndex);\n\t\t\t}\n\t\t};\n\t\tInstantToolTip.install(jTableHeader);\n\t\treturn jTableHeader;\n\t}\n\n\t@Override\n\tpublic Component prepareRenderer(final TableCellRenderer renderer, final int row, final int column) {\n\t\tComponent component = super.prepareRenderer(renderer, row, column);\n\n\t\tif (component instanceof JSeparatorPanel) { //Ignore Separator Panels\n\t\t\treturn component;\n\t\t}\n\n\t\t//Default Colors\n\t\tif (isCellSelected(row, column)) {\n\t\t\tcomponent.setForeground(this.getSelectionForeground());\n\t\t\tcomponent.setBackground(this.getSelectionBackground());\n\t\t} else {\n\t\t\tcomponent.setForeground(this.getForeground());\n\t\t\t//Highlight selected row\n\t\t\tif (Settings.get().isHighlightSelectedRows() && this.isRowSelected(row)) {\n\t\t\t\tColorSettings.config(component, ColorEntry.GLOBAL_SELECTED_ROW_HIGHLIGHTING);\n\t\t\t\treturn component;\n\t\t\t} else {\n\t\t\t\tcomponent.setBackground(this.getBackground());\n\t\t\t}\n\t\t}\n\t\treturn component;\n\t}\n\n\t@Override\n\tpublic Component prepareEditor(TableCellEditor editor, int row, int column) {\n\t\tComponent component = super.prepareEditor(editor, row, column);\n\t\tif (component instanceof JTextComponent) {\n\t\t\tJTextComponent jTextComponent = (JTextComponent) component;\n\t\t\tTextManager.installTextComponent(jTextComponent);\n\t\t\tjTextComponent.selectAll();\n\t\t} else if (component instanceof Container) {\n\t\t\tTextManager.installAll((Container) component);\n\t\t}\n\t\treturn component;\n\t}\n\n\tpublic void lock() {\n\t\tautoResizeLock = true;\n\t}\n\n\tpublic void unlock() {\n\t\tif (isLocked()) { //only if locked\n\t\t\tautoResizeLock = false; //unlock\n\t\t\tautoResizeColumns(); //Update after unlock\n\t\t}\n\t}\n\n\tpublic boolean isLocked() {\n\t\treturn autoResizeLock;\n\t}\n\n\tpublic final void autoResizeColumns() {\n\t\tif (isLocked()) {\n\t\t\treturn;\n\t\t}\n\t\tEnumTableFormatAdaptor<?, ?> tableFormat = getEnumTableFormatAdaptor();\n\t\tloadingWidth = true;\n\t\tif (tableFormat == null || tableFormat.getResizeMode() == ResizeMode.TEXT) {\n\t\t\tresizeColumnsText();\n\t\t} else if (tableFormat.getResizeMode() == ResizeMode.WINDOW) {\n\t\t\tresizeColumnsWindow();\n\t\t} else if (tableFormat.getResizeMode() == ResizeMode.NONE) {\n\t\t\tresizeColumnsNone();\n\t\t}\n\t\tloadingWidth = false;\n\t}\n\n\tpublic void setColumnsWidth(final Map<String, Integer> columnsWidth) {\n\t\tif (columnsWidth != null) {\n\t\t\tthis.columnsWidth.putAll(columnsWidth);\n\t\t}\n\t}\n\n\tpublic Map<String, Integer> getColumnsWidth() {\n\t\treturn columnsWidth;\n\t}\n\n\tpublic void disableColumnResizeCache(EnumTableColumn<?> column) {\n\t\tdisableColumnResizeCache.add(column.getColumnName());\n\t}\n\n\tpublic void enableColumnResizeCache(EnumTableColumn<?> column) {\n\t\tdisableColumnResizeCache.remove(column.getColumnName());\n\t}\n\n\tprivate JTable getTable() {\n\t\treturn this;\n\t}\n\n\tprivate DefaultEventTableModel<?> getEventTableModel() {\n\t\tTableModel model = this.getModel();\n\t\tif (model instanceof DefaultEventTableModel) {\n\t\t\treturn (DefaultEventTableModel) model;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate EnumTableFormatAdaptor<?, ?> getEnumTableFormatAdaptor() {\n\t\tif (getEventTableModel() != null) {\n\t\t\tTableFormat<?> tableFormat = getEventTableModel().getTableFormat();\n\t\t\tif (tableFormat instanceof EnumTableFormatAdaptor) {\n\t\t\t\treturn (EnumTableFormatAdaptor) tableFormat;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate JScrollPane getParentScrollPane() {\n\t\tContainer container = this.getParent();\n\t\tif (container != null) {\n\t\t\tcontainer = container.getParent();\n\t\t}\n\n\t\tif (container instanceof JScrollPane) {\n\t\t\treturn (JScrollPane) container;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * This is a work-around for issue #254. The JScrollPane viewport gets\n\t * corrupted when it is moved to the right with the horizontal scrollbar.\n\t * The following AdjustmentListener cannot fix the issue but it forces\n\t * AWT to repaint the viewport content. Because the event firing frequency\n\t * is lower than the viewport scroll rate, it may still flicker during\n\t * the scrolling, but at least ensures that the viewport is drawn properly\n\t * when the scrolling is stopped.\n\t * This is bug somewhere between OpenJDK and certain graphics drivers\n\t * under Linux and can be fixed by disabling the driver's acceleration.\n\t * @author Jan\n\t */\n\tprivate void fixScrollPaneRedraw() {\n\t\t/* This component has not been added to the JScrollPanel at\n\t\t * construction time. This one listens to an ANCESTOR_ADD\n\t\t * event and registers the repaint method at the JScrollPanel\n\t\t * parent as soon as this component has been added to it.\n\t\t */\n\t\tthis.addAncestorListener(new AncestorListener() {\n\n\t\t\t@Override\n\t\t\tpublic void ancestorAdded(final AncestorEvent ae) {\n\t\t\t\tJComponent jComponent = ae.getComponent();\n\t\t\t\tif (jComponent instanceof JAutoColumnTable) {\n\t\t\t\t\tJAutoColumnTable jTable = (JAutoColumnTable) jComponent;\n\t\t\t\t\tJScrollPane jScrollPane = jTable.getParentScrollPane();\n\t\t\t\t\tif (jScrollPane != null) {\n\t\t\t\t\t\tjScrollPane.getHorizontalScrollBar().addAdjustmentListener(new JScrollPaneAdjustmentListener(jScrollPane));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void ancestorMoved(final AncestorEvent event) { }\n\n\t\t\t@Override\n\t\t\tpublic void ancestorRemoved(final AncestorEvent event) { }\n\n\t\t});\n\t}\n\n\tprivate JViewport getParentViewport() {\n\t\tContainer container = this.getParent();\n\t\tif (container instanceof JViewport) {\n\t\t\treturn (JViewport) container;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate void resizeColumnsText() {\n\t\tsize = 0;\n\t\tif (resizeMode != ResizeMode.TEXT) {\n\t\t\tresizeMode = ResizeMode.TEXT;\n\t\t\tthis.getTableHeader().setResizingAllowed(false);\n\t\t}\n\t\tfor (int i = 0; i < getColumnCount(); i++) {\n\t\t\tsize = size + resizeColumn(this, getColumnModel().getColumn(i), i);\n\t\t}\n\t\tupdateScroll();\n\t}\n\n\tpublic void resizeColumnsWindow() {\n\t\tif (resizeMode != ResizeMode.WINDOW) { //Only do once\n\t\t\tresizeMode = ResizeMode.WINDOW;\n\t\t\tthis.getTableHeader().setResizingAllowed(true);\n\t\t\tfor (int i = 0; i < getColumnCount(); i++) {\n\t\t\t\tgetColumnModel().getColumn(i).setPreferredWidth(75);\n\t\t\t}\n\t\t}\n\t\tupdateScroll();\n\t}\n\tpublic void resizeColumnsNone() {\n\t\tif (resizeMode != ResizeMode.NONE) { //Only do once\n\t\t\tresizeMode = ResizeMode.NONE;\n\t\t\tthis.getTableHeader().setResizingAllowed(true);\n\t\t}\n\t\tEnumTableFormatAdaptor<?, ?> tableFormat = getEnumTableFormatAdaptor();\n\t\tList<SimpleColumn> columns = tableFormat.getColumns();\n\t\tint i = 0;\n\t\tfor (SimpleColumn column : columns) {\n\t\t\tif (column.isShown()) {\n\t\t\t\tInteger width = columnsWidth.get(column.getEnumName());\n\t\t\t\tif (width != null) {\n\t\t\t\t\tgetColumnModel().getColumn(i).setPreferredWidth(width);\n\t\t\t\t}\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\t\tupdateScroll();\n\t}\n\n\tprivate void updateScroll() {\n\t\tEnumTableFormatAdaptor<?, ?> tableFormat = getEnumTableFormatAdaptor();\n\t\tif (tableFormat == null || tableFormat.getResizeMode() == ResizeMode.TEXT) {\n\t\t\tif (jViewport != null && size < jViewport.getSize().width) {\n\t\t\t\tthis.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);\n\t\t\t} else {\n\t\t\t\tthis.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);\n\t\t\t}\n\t\t} else if (tableFormat.getResizeMode() == ResizeMode.WINDOW) {\n\t\t\tthis.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);\n\t\t} else if (tableFormat.getResizeMode() == ResizeMode.NONE) {\n\t\t\tthis.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);\n\t\t}\n\t}\n\n\tprivate int resizeColumn(final JTable jTable, final TableColumn column, final int columnIndex) {\n\t\t//Header width\n\t\tTableCellRenderer renderer = column.getHeaderRenderer();\n\t\tif (renderer == null) {\n\t\t\trenderer = jTable.getTableHeader().getDefaultRenderer();\n\t\t}\n\t\tComponent component = renderer.getTableCellRendererComponent(jTable, column.getHeaderValue(), false, false, 0, columnIndex);\n\t\tint maxWidth = component.getPreferredSize().width;\n\n\t\tif (!overwrite) {\n\t\t\trenderer = column.getCellRenderer();\n\t\t\tif (renderer == null) {\n\t\t\t\trenderer = getDefaultRenderer(getColumnClass(columnIndex));\n\t\t\t}\n\t\t}\n\t\tString columnName = (String) column.getHeaderValue();\n\t\tboolean useCache = !disableColumnResizeCache.contains(columnName);\n\t\t//Rows width\n\t\tfinal int rowCount = jTable.getRowCount();\n\t\tfor (int rowIndex = 0; rowIndex < rowCount; rowIndex++) {\n\t\t\tfinal Object cellValue = jTable.getValueAt(rowIndex, columnIndex); //Get cell value\n\t\t\tif (cellValue == null) { //Ignore null\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tInteger savedWidth;\n\t\t\tif (useCache) {\n\t\t\t\tsavedWidth = rowsWidth.get(cellValue);\n\t\t\t} else {\n\t\t\t\tsavedWidth = null;\n\t\t\t}\n\t\t\tif (savedWidth != null) { //Load row width\n\t\t\t\tmaxWidth = Math.max(maxWidth, savedWidth);\n\t\t\t} else { //Calculate the row width\n\t\t\t\tif (overwrite) {\n\t\t\t\t\trenderer = jTable.getCellRenderer(rowIndex, columnIndex);\n\t\t\t\t}\n\t\t\t\t//Ignore SeparatorTableCell\n\t\t\t\tif (renderer instanceof SeparatorTableCell) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tcomponent = renderer.getTableCellRendererComponent(jTable, jTable.getValueAt(rowIndex, columnIndex), false, false, rowIndex, columnIndex);\n\t\t\t\tint width = component.getPreferredSize().width;\n\t\t\t\tif (useCache) {\n\t\t\t\t\trowsWidth.put(cellValue, width);\n\t\t\t\t}\n\t\t\t\tmaxWidth = Math.max(maxWidth, width);\n\t\t\t}\n\t\t}\n\t\t//Add margin\n\t\tmaxWidth = maxWidth + 4;\n\t\t//Set width\n\t\tcolumn.setPreferredWidth(maxWidth);\n\t\treturn maxWidth; //Return width\n\t}\n\n\tpublic void saveColumnsWidth() {\n\t\tEnumTableFormatAdaptor<?, ?> tableFormat = getEnumTableFormatAdaptor();\n\t\tif (!loadingWidth && tableFormat != null && tableFormat.getResizeMode() == ResizeMode.NONE) {\n\t\t\tList<SimpleColumn> columns = tableFormat.getColumns();\n\t\t\tint i = 0;\n\t\t\tfor (SimpleColumn column : columns) {\n\t\t\t\tif (column.isShown()) {\n\t\t\t\t\tint width = getColumnModel().getColumn(i).getPreferredWidth();\n\t\t\t\t\tcolumnsWidth.put(column.getEnumName(), width);\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t}\n\t\t\tprogram.saveSettings(\"Columns (Width)\"); //Save Columns Width\n\t\t}\n\t}\n\n\tprivate class ListenerClass implements TableModelListener, ComponentListener,\n\t\t\tPropertyChangeListener, HierarchyListener, TableColumnModelListener, MouseListener {\n\n\t\tprivate boolean columnMoved = false;\n\t\tprivate boolean columnResized = false;\n\t\tprivate int from = 0;\n\t\tprivate int to = 0;\n\t\tprivate int rowsLastTime = 0;\n\t\tprivate int rowsCount = 0;\n\n\t\t@Override\n\t\tpublic void tableChanged(final TableModelEvent e) {\n\t\t\t//XXX - Workaround for Java 7\n\t\t\tif (getTable().isEditing()) {\n\t\t\t\tgetTable().getCellEditor().cancelCellEditing();\n\t\t\t}\n\t\t\tif (e.getType() == TableModelEvent.DELETE) {\n\t\t\t\trowsCount = rowsCount - (Math.abs(e.getFirstRow() - e.getLastRow()) + 1);\n\t\t\t}\n\t\t\tif (e.getType() == TableModelEvent.INSERT) {\n\t\t\t\trowsCount = rowsCount + (Math.abs(e.getFirstRow() - e.getLastRow()) + 1);\n\t\t\t}\n\t\t\tif (Math.abs(rowsLastTime + rowsCount) == getRowCount() //Last Table Update\n\t\t\t\t\t&& (e.getType() != TableModelEvent.UPDATE\n\t\t\t\t\t|| (e.getType() == TableModelEvent.UPDATE && e.getFirstRow() >= 0))) {\n\t\t\t\trowsLastTime = getRowCount();\n\t\t\t\trowsCount = 0;\n\t\t\t\tautoResizeColumns();\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void componentResized(final ComponentEvent e) {\n\t\t\tupdateScroll();\n\t\t}\n\n\t\t@Override\n\t\tpublic void componentMoved(final ComponentEvent e) { }\n\n\t\t@Override\n\t\tpublic void componentShown(final ComponentEvent e) { }\n\n\t\t@Override\n\t\tpublic void componentHidden(final ComponentEvent e) { }\n\n\t\t@Override\n\t\tpublic void propertyChange(final PropertyChangeEvent evt) {\n\t\t\tObject newValue = evt.getNewValue();\n\t\t\tObject oldValue = evt.getOldValue();\n\t\t\tif (newValue instanceof JTableHeader && oldValue instanceof JTableHeader) {\n\t\t\t\tJTableHeader newModel = (JTableHeader) newValue;\n\t\t\t\tJTableHeader oldModel = (JTableHeader) oldValue;\n\t\t\t\toldModel.removeMouseListener(this);\n\t\t\t\tnewModel.addMouseListener(this);\n\n\t\t\t}\n\t\t\tif (newValue instanceof TableColumnModel && oldValue instanceof TableColumnModel) {\n\t\t\t\tTableColumnModel newModel = (TableColumnModel) newValue;\n\t\t\t\tTableColumnModel oldModel = (TableColumnModel) oldValue;\n\t\t\t\toldModel.removeColumnModelListener(this);\n\t\t\t\tnewModel.addColumnModelListener(this);\n\n\t\t\t}\n\t\t\tif (newValue instanceof TableModel && oldValue instanceof TableModel) {\n\t\t\t\tTableModel newModel = (TableModel) newValue;\n\t\t\t\tTableModel oldModel = (TableModel) oldValue;\n\t\t\t\toldModel.removeTableModelListener(this);\n\t\t\t\tnewModel.addTableModelListener(this);\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void hierarchyChanged(final HierarchyEvent e) {\n\t\t\tif ((e.getChangeFlags() & HierarchyEvent.PARENT_CHANGED) == HierarchyEvent.PARENT_CHANGED) {\n\t\t\t\tif (jViewport != null) {\n\t\t\t\t\tjViewport.removeComponentListener(this);\n\t\t\t\t}\n\t\t\t\tjViewport = getParentViewport();\n\t\t\t\tif (jViewport != null) {\n\t\t\t\t\tjViewport.addComponentListener(this);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void columnAdded(final TableColumnModelEvent e) { }\n\n\t\t@Override\n\t\tpublic void columnRemoved(final TableColumnModelEvent e) { }\n\n\t\t@Override\n\t\tpublic void columnMoved(final TableColumnModelEvent e) {\n\t\t\tif (e.getFromIndex() != e.getToIndex()) {\n\t\t\t\tif (!columnMoved) {\n\t\t\t\t\tfrom = e.getFromIndex();\n\t\t\t\t}\n\t\t\t\tto = e.getToIndex();\n\t\t\t\tcolumnMoved = true;\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void columnMarginChanged(final ChangeEvent e) {\n\t\t\tcolumnResized = true;\n\t\t}\n\n\t\t@Override\n\t\tpublic void columnSelectionChanged(final ListSelectionEvent e) { }\n\n\t\t@Override\n\t\tpublic void mouseClicked(final MouseEvent e) {\n\t\t\tSwingUtilities.invokeLater(new Runnable() {\n\t\t\t\t@Override\n\t\t\t\tpublic void run() {\n\t\t\t\t\tautoResizeColumns(); //Sorted!\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t@Override\n\t\tpublic void mousePressed(final MouseEvent e) {\n\t\t\tcolumnMoved = false;\n\t\t\tcolumnResized = false;\n\t\t}\n\n\t\t@Override\n\t\tpublic void mouseReleased(final MouseEvent e) {\n\t\t\tif (columnMoved) {\n\t\t\t\tcolumnMoved = false;\n\t\t\t\tEnumTableFormatAdaptor<?, ?> tableFormat = getEnumTableFormatAdaptor();\n\t\t\t\tDefaultEventTableModel<?> model = getEventTableModel();\n\t\t\t\tif (tableFormat != null && model != null) {\n\t\t\t\t\ttableFormat.moveColumn(from, to);\n\t\t\t\t\tmodel.fireTableStructureChanged();\n\t\t\t\t\tif (from != to) {\n\t\t\t\t\t\tprogram.saveSettings(\"Columns (Moved)\"); //Save Columns (Moved)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tautoResizeColumns();\n\t\t\t}\n\t\t\tif (columnResized) {\n\t\t\t\tcolumnResized = false;\n\t\t\t\tsaveColumnsWidth();\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void mouseEntered(final MouseEvent e) { }\n\n\t\t@Override\n\t\tpublic void mouseExited(final MouseEvent e) { }\n\t}\n\n\t/**\n\t * @see JAutoColumnTable#fixScrollPaneRedraw()\n\t */\n\tprivate class JScrollPaneAdjustmentListener implements AdjustmentListener {\n\t\t/**\n\t\t * Holds the JScrollPane we want to force repainting its content.\n\t\t */\n\t\tprivate final JScrollPane jScrollPane;\n\n\t\t/**\n\t\t * Holds the last scrollbar position for direction tracking.\n\t\t */\n\t\tprivate int lastValue;\n\n\t\tprivate boolean repaint;\n\n\t\tpublic JScrollPaneAdjustmentListener(final JScrollPane jScrollPane) {\n\t\t\tthis.jScrollPane = jScrollPane;\n\t\t\trepaint = false;\n\t\t}\n\n\t\t@Override\n\t\tpublic void adjustmentValueChanged(final AdjustmentEvent e) {\n\t\t\tif (e.getValue() > lastValue) {\n\t\t\t\t// scrollbar has been dragged to the right\n\t\t\t\trepaint = true;\n\t\t\t}\n\t\t\tif (!e.getValueIsAdjusting() && repaint) {\n\t\t\t\t//Done scrolling - repaint if needed\n\t\t\t\tjScrollPane.repaint();\n\t\t\t\trepaint = false;\n\t\t\t}\n\t\t\tlastValue = e.getValue();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/JEditColumnsDialog.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.table;\r\n\r\nimport java.awt.Component;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.awt.event.MouseAdapter;\r\nimport java.awt.event.MouseEvent;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport javax.swing.*;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.Colors;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor.SimpleColumn;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\npublic class JEditColumnsDialog<T extends Enum<T> & EnumTableColumn<Q>, Q> extends JDialogCentered {\r\n\r\n\tprivate enum EditColumnsAction {\r\n\t\tOK,\r\n\t\tCANCEL,\r\n\t\tCHECK_ALL\r\n\t}\r\n\r\n\tprivate final DefaultListModel<SimpleColumn> listModel = new DefaultListModel<>();\r\n\tprivate final JList<SimpleColumn> jColumns;\r\n\tprivate final JCheckBox jAll;\r\n\tprivate final JButton jOk;\r\n\tprivate final JButton jCancel;\r\n\r\n\tprivate final JTextArea jInfo;\r\n\tprivate final EnumTableFormatAdaptor<T, Q> adaptor;\r\n\r\n\tpublic JEditColumnsDialog(final Program program, final EnumTableFormatAdaptor<T, Q> adaptor) {\r\n\t\tsuper(program, GuiShared.get().tableColumnsTitle(), Images.TABLE_COLUMN_SHOW.getImage());\r\n\t\tthis.adaptor = adaptor;\r\n\r\n\t\tListenerClass listener = new ListenerClass();\r\n\r\n\t\tjInfo = new JTextArea();\r\n\t\tjInfo.setFont(jPanel.getFont());\r\n\t\tjInfo.setOpaque(false);\r\n\t\tjInfo.setBackground(Colors.COMPONENT_TRANSPARENT.getColor());\r\n\t\tjInfo.setBorder(null);\r\n\t\tjInfo.setFocusable(false);\r\n\t\tjInfo.setEditable(false);\r\n\t\tjInfo.setLineWrap(true);\r\n\t\tjInfo.setWrapStyleWord(true);\r\n\t\tjInfo.setText(GuiShared.get().tableColumnsTip());\r\n\r\n\t\tjColumns = new JList<>(listModel);\r\n\t\tjColumns.setCellRenderer(new JCheckBoxListRenderer(jColumns.getCellRenderer()));\r\n\t\tjColumns.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r\n\t\t//jList.setBorder(BorderFactory.createLineBorder(Color.GRAY, 1));\r\n\r\n\t\tjColumns.addMouseListener(new MouseAdapter() {\r\n\t\t\t@Override\r\n\t\t\tpublic void mouseClicked(final MouseEvent event) {\r\n\t\t\t\t// Get index of item clicked\r\n\t\t\t\tint index = jColumns.locationToIndex(event.getPoint());\r\n\t\t\t\tSimpleColumn column = jColumns.getModel().getElementAt(index);\r\n\r\n\t\t\t\t// Toggle selected state\r\n\t\t\t\tcolumn.setShown(!column.isShown());\r\n\r\n\t\t\t\tupdateAll();\r\n\r\n\t\t\t\t// Repaint cell\r\n\t\t\t\tjColumns.repaint(jColumns.getCellBounds(index, index));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tJScrollPane jColumnsScroll = new JScrollPane(jColumns);\r\n\r\n\t\tjCancel = new JButton(GuiShared.get().cancel());\r\n\t\tjCancel.setActionCommand(EditColumnsAction.CANCEL.name());\r\n\t\tjCancel.addActionListener(listener);\r\n\r\n\t\tjAll = new JCheckBox(GuiShared.get().checkAll());\r\n\t\tjAll.setActionCommand(EditColumnsAction.CHECK_ALL.name());\r\n\t\tjAll.addActionListener(listener);\r\n\r\n\t\tjOk = new JButton(GuiShared.get().ok());\r\n\t\tjOk.setActionCommand(EditColumnsAction.OK.name());\r\n\t\tjOk.addActionListener(listener);\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t.addComponent(jAll)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addGap(2)\r\n\t\t\t\t\t.addComponent(jColumnsScroll, 300, 300, 300)\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\r\n\t\t\t\t\t.addComponent(jInfo, 300, 300, 300)\r\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t\t.addComponent(jOk, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(jAll, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jColumnsScroll, 300, 400, Integer.MAX_VALUE)\r\n\t\t\t\t.addComponent(jInfo, 50, 50, 50)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jOk, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JComponent getDefaultFocus() {\r\n\t\treturn jOk;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JButton getDefaultButton() {\r\n\t\treturn jOk;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void windowShown() { }\r\n\r\n\t@Override\r\n\tpublic void setVisible(final boolean b) {\r\n\t\tif (b) {\r\n\t\t\tload();\r\n\t\t}\r\n\t\tsuper.setVisible(b);\r\n\t}\r\n\r\n\tprivate void load() {\r\n\t\tlistModel.clear();\r\n\t\tfor (SimpleColumn column : adaptor.getColumns()) {\r\n\t\t\tlistModel.addElement(column);\r\n\t\t}\r\n\t\tupdateAll();\r\n\t}\r\n\r\n\tprivate void updateAll() {\r\n\t\tboolean allCheck = true;\r\n\t\tfor (int i = 0; i < listModel.size(); i++) {\r\n\t\t\tSimpleColumn column = listModel.getElementAt(i);\r\n\t\t\tif (!column.isShown()) {\r\n\t\t\t\tallCheck = false;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tjAll.setSelected(allCheck);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void save() {\r\n\t\tList<SimpleColumn> columns = new ArrayList<>();\r\n\t\tfor (int i = 0; i < listModel.size(); i++) {\r\n\t\t\tcolumns.add(listModel.getElementAt(i));\r\n\t\t}\r\n\t\tadaptor.setColumns(columns);\r\n\t\tprogram.saveSettings(\"Columns (Edit)\"); //Save Columns (Changed - Edit Columns)\r\n\t\tsetVisible(false);\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener {\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\tif (EditColumnsAction.OK.name().equals(e.getActionCommand())) {\r\n\t\t\t\tsave();\r\n\t\t\t}\r\n\t\t\tif (EditColumnsAction.CHECK_ALL.name().equals(e.getActionCommand())) {\r\n\t\t\t\tboolean check = jAll.isSelected();\r\n\t\t\t\tfor (int i = 0; i < listModel.size(); i++) {\r\n\t\t\t\t\tSimpleColumn column = listModel.getElementAt(i);\r\n\t\t\t\t\tcolumn.setShown(check);\r\n\t\t\t\t}\r\n\t\t\t\tjColumns.repaint();\r\n\t\t\t}\r\n\t\t\tif (EditColumnsAction.CANCEL.name().equals(e.getActionCommand())) {\r\n\t\t\t\tsetVisible(false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class JCheckBoxListRenderer implements ListCellRenderer<SimpleColumn> {\r\n\r\n\t\tprivate final JCheckBox checkBox = new JCheckBox();\r\n\r\n\t\tprivate final ListCellRenderer<? super SimpleColumn> renderer;\r\n\r\n\t\tpublic JCheckBoxListRenderer(ListCellRenderer<? super SimpleColumn> renderer) {\r\n\t\t\tthis.renderer = renderer;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic Component getListCellRendererComponent(JList<? extends SimpleColumn> list, SimpleColumn value, int index, boolean isSelected, boolean cellHasFocus) {\r\n\t\t\tJLabel jLabel = (JLabel) renderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);\r\n\r\n\t\t\t//Formating\r\n\t\t\tcheckBox.setEnabled(jLabel.isEnabled());\r\n\t\t\tcheckBox.setFont(jLabel.getFont());\r\n\t\t\tcheckBox.setBackground(jLabel.getBackground());\r\n\t\t\tcheckBox.setForeground(jLabel.getForeground());\r\n\t\t\tcheckBox.setBorder(jLabel.getBorder());\r\n\r\n\t\t\t//Values\r\n\t\t\tcheckBox.setSelected(value.isShown());\r\n\t\t\tcheckBox.setText(value.getColumnName());\r\n\t\t\treturn checkBox;\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/JSeparatorTable.java",
    "content": "/* Glazed Lists                                                 (c) 2003-2006 */\n/* http://publicobject.com/glazedlists/                      publicobject.com,*/\n/*                                                     O'Dell Engineering Ltd.*/\npackage net.nikr.eve.jeveasset.gui.shared.table;\n\nimport ca.odell.glazedlists.SeparatorList;\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport java.awt.Component;\nimport java.awt.Graphics;\nimport java.awt.Point;\nimport java.awt.Rectangle;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport javax.swing.JComponent;\nimport javax.swing.event.ListSelectionEvent;\nimport javax.swing.event.TableModelEvent;\nimport javax.swing.plaf.basic.BasicTableUI;\nimport javax.swing.table.*;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileItem;\n\n/**\n * @author <a href=\"mailto:jesse@swank.ca\">Jesse Wilson</a>\n */\npublic class JSeparatorTable extends JAutoColumnTable {\n\n\t/** working with separator cells. */\n\tprivate TableCellRenderer separatorRenderer;\n\tprivate TableCellEditor separatorEditor;\n\tprivate final SeparatorList<?> separatorList;\n\tprivate final Map<Object, Boolean> expandedSate = new HashMap<>();\n\tprivate final List<Integer> selectedRows = new ArrayList<>(); //XXX - Workaround for Autoscroller less then optimal behavior on SeparatorList.Separator\n\tprivate boolean defaultState = true;\n\n\tpublic JSeparatorTable(final Program program, final DefaultEventTableModel<?> tableModel, SeparatorList<?> separatorList) {\n\t\tsuper(program, tableModel);\n\t\tsetUI(new SpanTableUI());\n\t\tthis.separatorList = separatorList;\n\n\t\t// use a toString() renderer for the separator\n\t\tthis.separatorRenderer = getDefaultRenderer(Object.class);\n\t}\n\n\tpublic void expandSeparators(final boolean expand) {\n\t\tclearExpandedState(); //Reset\n\t\tdefaultState = expand;\n\t\tfinal int newLimit = expand ? Integer.MAX_VALUE : 0;\n\t\tlock();\n\t\tfinal DefaultEventSelectionModel<?> selectModel = getEventSelectionModel();\n\t\tif (selectModel != null) {\n\t\t\tselectModel.setEnabled(false);\n\t\t}\n\t\ttry {\n\t\t\tseparatorList.getReadWriteLock().readLock().lock();\n\t\t\tfor (int i = 0; i < separatorList.size(); i++) {\n\t\t\t\tObject object = separatorList.get(i);\n\t\t\t\tif (object instanceof SeparatorList.Separator) {\n\t\t\t\t\tSeparatorList.Separator<?> separator = (SeparatorList.Separator<?>) object;\n\t\t\t\t\tObject first = separator.first();\n\t\t\t\t\tif (first instanceof StockpileItem && ((StockpileItem) first).isGroupCollapsed(expand)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tif (separator.getLimit() != newLimit) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tseparatorList.getReadWriteLock().readLock().unlock();\n\t\t\t\t\t\t\tseparatorList.getReadWriteLock().writeLock().lock();\n\t\t\t\t\t\t\tseparator.setLimit(newLimit);\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tseparatorList.getReadWriteLock().writeLock().unlock();\n\t\t\t\t\t\t\tseparatorList.getReadWriteLock().readLock().lock();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tseparatorList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t\tif (selectModel != null) {\n\t\t\tselectModel.setEnabled(true);\n\t\t}\n\t\tunlock();\n\t}\n\n\tpublic void clearExpandedState() {\n\t\texpandedSate.clear();\n\t\tdefaultState = true;\n\t}\n\n\tpublic void saveExpandedState() {\n\t\ttry {\n\t\t\tseparatorList.getReadWriteLock().readLock().lock();\n\t\t\tfor (int i = 0; i < separatorList.size(); i++) {\n\t\t\t\tObject object = separatorList.get(i);\n\t\t\t\tif (object instanceof SeparatorList.Separator) {\n\t\t\t\t\tSeparatorList.Separator<?> separator = (SeparatorList.Separator) object;\n\t\t\t\t\tfinal int limit = separator.getLimit();\n\t\t\t\t\tif (limit == 0) { //Collapsed\n\t\t\t\t\t\tfor (Object item : separator.getGroup()) {\n\t\t\t\t\t\t\texpandedSate.put(item, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor (int x = i + 1; x < separatorList.size(); x++) {\n\t\t\t\t\t\t\tObject xObject = separatorList.get(x);\n\t\t\t\t\t\t\tif (xObject instanceof SeparatorList.Separator) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\texpandedSate.put(xObject, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tseparatorList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t}\n\n\tpublic void loadExpandedState() {\n\t\ttry {\n\t\t\tseparatorList.getReadWriteLock().readLock().lock();\n\t\t\tfor (int i = 0; i < separatorList.size(); i++) {\n\t\t\t\tObject object = separatorList.get(i);\n\t\t\t\tif (object instanceof SeparatorList.Separator) {\n\t\t\t\t\tSeparatorList.Separator<?> separator = (SeparatorList.Separator) object;\n\t\t\t\t\tBoolean expanded = null;\n\t\t\t\t\tfinal int oldLimit = separator.getLimit();\n\t\t\t\t\tif (separator.getLimit() == 0) { //Collapsed\n\t\t\t\t\t\tObject first = separator.first(); //Lets try first\n\t\t\t\t\t\texpanded = expandedSate.get(first);\n\t\t\t\t\t\tif (expanded == null) { //No luck, now it's going to get expensive\n\t\t\t\t\t\t\tfor (Object item : separator.getGroup()) {\n\t\t\t\t\t\t\t\texpanded = expandedSate.get(item);\n\t\t\t\t\t\t\t\tif (expanded != null) {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor (int x = i + 1; x < separatorList.size(); x++) {\n\t\t\t\t\t\t\tObject xObject = separatorList.get(x);\n\t\t\t\t\t\t\tif (xObject instanceof SeparatorList.Separator) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\texpanded = expandedSate.get(xObject);\n\t\t\t\t\t\t\tif (expanded != null) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (expanded == null) {\n\t\t\t\t\t\texpanded = defaultState;\n\t\t\t\t\t}\n\t\t\t\t\tfinal int newLimit = expanded ? Integer.MAX_VALUE : 0;\n\t\t\t\t\tif (oldLimit != newLimit) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tseparatorList.getReadWriteLock().readLock().unlock();\n\t\t\t\t\t\t\tseparatorList.getReadWriteLock().writeLock().lock();\n\t\t\t\t\t\t\tseparator.setLimit(newLimit);\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tseparatorList.getReadWriteLock().writeLock().unlock();\n\t\t\t\t\t\t\tseparatorList.getReadWriteLock().readLock().lock();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tseparatorList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t}\n\n\tprivate DefaultEventSelectionModel<?> getEventSelectionModel() {\n\t\tif (selectionModel instanceof DefaultEventSelectionModel<?>) {\n\t\t\treturn (DefaultEventSelectionModel) selectionModel;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * A convenience method to cast the TableModel to the expected\n\t * EventTableModel implementation.\n\t *\n\t * @return the EventTableModel that backs this table\n\t */\n\tprivate DefaultEventTableModel<?> getEventTableModel() {\n\t\treturn (DefaultEventTableModel) getModel();\n\t}\n\n\n\t/** {@inheritDoc} */\n\t@Override\n\tpublic Rectangle getCellRect(final int row, final int column, final boolean includeSpacing) {\n\t\tfinal DefaultEventTableModel<?> eventTableModel = getEventTableModel();\n\n\t\t// sometimes JTable asks for a cellrect that doesn't exist anymore, due\n\t\t// to an editor being installed before a bunch of rows were removed.\n\t\t// In this case, just return an empty rectangle, since it's going to\n\t\t// be discarded anyway\n\t\tif (row >= eventTableModel.getRowCount() || row < 0) {\n\t\t\treturn new Rectangle();\n\t\t}\n\n\t\t// if it's the separator row, return the entire row as one big rectangle\n\t\tObject rowValue = eventTableModel.getElementAt(row);\n\t\tif (rowValue instanceof SeparatorList.Separator) {\n\t\t\tRectangle firstColumn = super.getCellRect(row, 0, includeSpacing);\n\t\t\tRectangle lastColumn = super.getCellRect(row, getColumnCount() - 1, includeSpacing);\n\t\t\treturn firstColumn.union(lastColumn);\n\n\t\t// otherwise it's business as usual\n\t\t} else {\n\t\t\treturn super.getCellRect(row, column, includeSpacing);\n\t\t}\n\t}\n\n\tpublic Rectangle getCellRectWithoutSpanning(final int row, final int column, final boolean includeSpacing) {\n\t\treturn super.getCellRect(row, column, includeSpacing);\n\t}\n\n\t/** {@inheritDoc} */\n\t@Override\n\tpublic Object getValueAt(final int row, final int column) {\n\t\tfinal Object rowValue = getEventTableModel().getElementAt(row);\n\n\t\t// if it's the separator row, return the value directly\n\t\tif (rowValue instanceof SeparatorList.Separator) {\n\t\t\treturn rowValue;\n\t\t}\n\n\t\t// otherwise it's business as usual\n\t\treturn super.getValueAt(row, column);\n\t}\n\n\t@Override\n\tpublic void setValueAt(Object aValue, int row, int column) {\n\t\tfinal Object rowValue = getEventTableModel().getElementAt(row);\n\n\t\t// if it's the separator row, ignore the call\n\t\tif (rowValue instanceof SeparatorList.Separator) {\n\t\t\treturn;\n\t\t}\n\n\t\t// otherwise it's business as usual\n\t\tsuper.setValueAt(aValue, row, column);\n\t}\n\n\t/** {@inheritDoc} */\n\t@Override\n\tpublic TableCellRenderer getCellRenderer(final int row, final int column) {\n\t\t// if it's the separator row, use the separator renderer\n\t\tif (getEventTableModel().getElementAt(row) instanceof SeparatorList.Separator) {\n\t\t\treturn separatorRenderer;\n\t\t}\n\t\t// otherwise it's business as usual\n\t\treturn super.getCellRenderer(row, column);\n\t}\n\n\t/** {@inheritDoc} */\n\t@Override\n\tpublic TableCellEditor getCellEditor(final int row, final int column) {\n\t\t// if it's the separator row, use the separator editor\n\t\tif (getEventTableModel().getElementAt(row) instanceof SeparatorList.Separator) {\n\t\t\treturn separatorEditor;\n\t\t}\n\t\t// otherwise it's business as usual\n\t\treturn super.getCellEditor(row, column);\n\t}\n\n\t/** {@inheritDoc} */\n\t@Override\n\tpublic boolean isCellEditable(final int row, final int column) {\n\t\t// if it's the separator row, it is always editable (so that the separator can be collapsed/expanded)\n\t\tif (getEventTableModel().getElementAt(row) instanceof SeparatorList.Separator) {\n\t\t\treturn true;\n\t\t}\n\t\t// otherwise it's business as usual\n\t\treturn super.isCellEditable(row, column);\n\t}\n\n\t/**\n\t * Get the renderer for separator rows.\n\t * @return\n\t */\n\tpublic TableCellRenderer getSeparatorRenderer() { return separatorRenderer; }\n\tpublic void setSeparatorRenderer(final TableCellRenderer separatorRenderer) { this.separatorRenderer = separatorRenderer; }\n\n\t/**\n\t * Get the editor for separator rows.\n\t * @return\n\t */\n\tpublic TableCellEditor getSeparatorEditor() { return separatorEditor; }\n\tpublic void setSeparatorEditor(final TableCellEditor separatorEditor) { this.separatorEditor = separatorEditor; }\n\n\t//XXX - Workaround for Autoscroller less then optimal behavior on SeparatorList.Separator\n\t/** {@inheritDoc} */\n\t@Override\n\tpublic void valueChanged(final ListSelectionEvent e) {\n\t\tif (e.getValueIsAdjusting()) {\n\t\t\tfor (int row = e.getFirstIndex(); row <= e.getLastIndex(); row++) {\n\t\t\t\tif (this.isRowSelected(row)) {\n\t\t\t\t\tif (!selectedRows.contains(row)) {\n\t\t\t\t\t\tselectedRows.add(row);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (selectedRows.contains(row)) {\n\t\t\t\t\t\tselectedRows.remove(selectedRows.indexOf(row));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!selectedRows.isEmpty()\n\t\t\t\t&& selectedRows.get(selectedRows.size() - 1) < getEventTableModel().getRowCount()\n\t\t\t\t&& (getEventTableModel().getElementAt(selectedRows.get(selectedRows.size() - 1)) instanceof SeparatorList.Separator)) {\n\t\t\tsetAutoscrolls(false);\n\t\t} else {\n\t\t\tsetAutoscrolls(true);\n\t\t}\n\t\tsuper.valueChanged(e);\n\t}\n\n\t@Override\n\tpublic void unlock() {\n\t\tif (isLocked()) { //only if locked\n\t\t\tsuper.unlock(); //Unlock JAutoColumnTable\n\t\t\tautoResizeRows(); //Update after unlock\n\t\t}\n\t}\n\n\tprivate void autoResizeRows() {\n\t\tif (isLocked()) {\n\t\t\treturn;\n\t\t}\n\t\tfor (int row = 0; row < getEventTableModel().getRowCount(); row++) {\n\t\t\tautoResizeRow(row, getRowHeight());\n\t\t}\n\t}\n\n\tprivate void autoResizeRow(final int row, int defaultHeight) {\n\t\tif (row < 0 || row > getEventTableModel().getRowCount()) {\n\t\t\treturn;\n\t\t}\n\t\tint height;\n\t\tfinal Object rowValue = getEventTableModel().getElementAt(row);\n\t\tif (separatorRenderer != null && rowValue instanceof SeparatorList.Separator) {\n\t\t\t//Calculate the Separator row height\n\t\t\t//This is done every time, because Separator can never be identified 100%\n\t\t\t//Because elements is changed by filters and sorting\n\t\t\t//If saved: the list keep growing with useless hash keys\n\t\t\tComponent component = separatorRenderer.getTableCellRendererComponent(this, getValueAt(row, 0), false, false, row, 0);\n\t\t\theight = component.getPreferredSize().height;\n\t\t} else { //Calculate the row height\n\t\t\theight = defaultHeight;\n\t\t}\n\n\t\t//Set row height, if needed (is expensive because repaint is needed)\n\t\tif (this.getRowHeight(row) != height) {\n\t\t\tthis.setRowHeight(row, Math.max(1, height));\n\t\t}\n\t}\n\n\t/** {@inheritDoc} */\n\t@Override\n\tpublic void tableChanged(final TableModelEvent e) {\n\t\t// stop edits when the table changes, or else we might\n\t\t// get a relocated edit in the wrong cell!\n\t\tif (isEditing()) {\n\t\t\tsuper.getCellEditor().cancelCellEditing();\n\t\t}\n\n\t\t// handle the change event\n\t\tsuper.tableChanged(e);\n\n\t\t//set row heigh\n\t\tautoResizeRows();\n\t}\n\n}\n/**\n * Modified from BasicTableUI to allow for spanning cells.\n */\nclass SpanTableUI extends BasicTableUI {\n\n\tprivate JSeparatorTable separatorTable;\n\n\t@Override\n\tpublic void installUI(final JComponent c) {\n\t\tthis.separatorTable = (JSeparatorTable) c;\n\t\tsuper.installUI(c);\n\t}\n\n\t/** Paint a representation of the <code>table</code> instance\n\t * that was set in installUI().\n\t */\n\t@Override\n\tpublic void paint(final Graphics g, final JComponent c) {\n\t\tRectangle clip = g.getClipBounds();\n\n\t\tRectangle bounds = table.getBounds();\n\t\t// account for the fact that the graphics has already been translated\n\t\t// into the table's bounds\n\t\tbounds.x = bounds.y = 0;\n\n\t\tif (table.getRowCount() <= 0 || table.getColumnCount() <= 0\n\t\t\t// this check prevents us from painting the entire table\n\t\t\t// when the clip doesn't intersect our bounds at all\n\t\t\t|| !bounds.intersects(clip)) {\n\n\t\t\treturn;\n\t\t}\n\n\t\tPoint upperLeft = clip.getLocation();\n\t\tPoint lowerRight = new Point(clip.x + clip.width - 1, clip.y + clip.height - 1);\n\t\tint rMin = table.rowAtPoint(upperLeft);\n\t\tint rMax = table.rowAtPoint(lowerRight);\n\t\t// This should never happen (as long as our bounds intersect the clip,\n\t\t// which is why we bail above if that is the case).\n\t\tif (rMin == -1) {\n\t\t\trMin = 0;\n\t\t}\n\t\t// If the table does not have enough rows to fill the view we'll get -1.\n\t\t// (We could also get -1 if our bounds don't intersect the clip,\n\t\t// which is why we bail above if that is the case).\n\t\t// Replace this with the index of the last row.\n\t\tif (rMax == -1) {\n\t\t\trMax = table.getRowCount() - 1;\n\t\t}\n\n\t\tboolean ltr = table.getComponentOrientation().isLeftToRight();\n\t\tint cMin = table.columnAtPoint(ltr ? upperLeft : lowerRight);\n\t\tint cMax = table.columnAtPoint(ltr ? lowerRight : upperLeft);\n\t\t// This should never happen.\n\t\tif (cMin == -1) {\n\t\t\tcMin = 0;\n\t\t}\n\t\t// If the table does not have enough columns to fill the view we'll get -1.\n\t\t// Replace this with the index of the last column.\n\t\tif (cMax == -1) {\n\t\t\tcMax = table.getColumnCount() - 1;\n\t\t}\n\n\t\t// Paint the grid.\n\t\tpaintGrid(g, rMin, rMax, cMin, cMax);\n\n\t\t// Paint the cells.\n\t\tpaintCells(g, rMin, rMax, cMin, cMax);\n\t}\n\tprivate void paintCell(final Graphics g, final Rectangle cellRect, final int row, final int column) {\n\t\tif (table.isEditing() && table.getEditingRow() == row && table.getEditingColumn() == column) {\n\t\t\tComponent component = table.getEditorComponent();\n\t\t\tcomponent.setBounds(cellRect);\n\t\t\tcomponent.validate();\n\t\t} else {\n\t\t\tTableCellRenderer renderer = table.getCellRenderer(row, column);\n\t\t\tComponent component = table.prepareRenderer(renderer, row, column);\n\t\t\trendererPane.paintComponent(g, component, table, cellRect.x, cellRect.y, cellRect.width, cellRect.height, true);\n\t\t}\n\t}\n\tprivate void paintCells(final Graphics g, final int rMin, final int rMax, final int cMin, final int cMax) {\n\t\tJTableHeader header = table.getTableHeader();\n\t\tTableColumn draggedColumn = (header == null) ? null : header.getDraggedColumn();\n\n\t\tTableColumnModel cm = table.getColumnModel();\n\t\tint columnMargin = cm.getColumnMargin();\n\n\t\tRectangle cellRect;\n\t\tTableColumn aColumn;\n\t\tint columnWidth;\n\t\tif (table.getComponentOrientation().isLeftToRight()) {\n\t\t\tfor (int row = rMin; row <= rMax; row++) {\n\t\t\t\tfor (int column = 0; column <= cMax; column++) {\n\t\t\t\t\taColumn = cm.getColumn(column);\n\t\t\t\t\tcellRect = table.getCellRect(row, column, false);\n\t\t\t\t\tif (aColumn != draggedColumn) {\n\t\t\t\t\t\tpaintCell(g, cellRect, row, column);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (int row = rMin; row <= rMax; row++) {\n\t\t\t\tcellRect = table.getCellRect(row, cMin, false);\n\t\t\t\taColumn = cm.getColumn(cMin);\n\t\t\t\tif (aColumn != draggedColumn) {\n\t\t\t\t\tcolumnWidth = aColumn.getWidth();\n\t\t\t\t\tcellRect.width = columnWidth - columnMargin;\n\t\t\t\t\tpaintCell(g, cellRect, row, cMin);\n\t\t\t\t}\n\t\t\t\tfor (int column = cMin + 1; column <= cMax; column++) {\n\t\t\t\t\taColumn = cm.getColumn(column);\n\t\t\t\t\tcolumnWidth = aColumn.getWidth();\n\t\t\t\t\tcellRect.width = columnWidth - columnMargin;\n\t\t\t\t\tcellRect.x -= columnWidth;\n\t\t\t\t\tif (aColumn != draggedColumn) {\n\t\t\t\t\t\tpaintCell(g, cellRect, row, column);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Paint the dragged column if we are dragging.\n\t\tif (draggedColumn != null) {\n\t\t\tpaintDraggedArea(g, rMin, rMax, draggedColumn, header.getDraggedDistance());\n\t\t}\n\n\t\t// Remove any renderers that may be left in the rendererPane.\n\t\trendererPane.removeAll();\n\t}\n\n\t/*\n\t * Paints the grid lines within <I>aRect</I>, using the grid\n\t * color set with <I>setGridColor</I>. Paints vertical lines\n\t * if <code>getShowVerticalLines()</code> returns true and paints\n\t * horizontal lines if <code>getShowHorizontalLines()</code>\n\t * returns true.\n\t */\n\tprivate void paintGrid(final Graphics g, final int rMin, final int rMax, final int cMin, final int cMax) {\n\t\tg.setColor(table.getGridColor());\n\n\t\tRectangle minCell = table.getCellRect(rMin, cMin, true);\n\t\tRectangle maxCell = table.getCellRect(rMax, cMax, true);\n\t\tRectangle damagedArea = minCell.union(maxCell);\n\n\t\tif (table.getShowHorizontalLines()) {\n\t\t\tint tableWidth = damagedArea.x + damagedArea.width;\n\t\t\tint y = damagedArea.y;\n\t\t\tfor (int row = rMin; row <= rMax; row++) {\n\t\t\t\ty += table.getRowHeight(row);\n\t\t\t\tg.drawLine(damagedArea.x, y - 1, tableWidth - 1, y - 1);\n\t\t\t}\n\t\t}\n\t\tif (table.getShowVerticalLines()) {\n\t\t\tTableColumnModel cm = table.getColumnModel();\n\t\t\tint tableHeight = damagedArea.y + damagedArea.height;\n\t\t\tint x;\n\t\t\tif (table.getComponentOrientation().isLeftToRight()) {\n\t\t\t\tx = 0; //damagedArea.x;\n\t\t\t\tfor (int column = 0; column <= cMax; column++) {\n\t\t\t\t\tx += cm.getColumn(column).getWidth();\n\t\t\t\t\t// redraw the grid lines for this column if it is damaged\n\t\t\t\t\tif (column >= cMin) {\n\t\t\t\t\t\tg.drawLine(x - 1, 0, x - 1, tableHeight - 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tx = damagedArea.x + damagedArea.width;\n\t\t\t\tfor (int column = cMin; column < cMax; column++) {\n\t\t\t\t\tx -= cm.getColumn(column).getWidth();\n\t\t\t\t\tg.drawLine(x - 1, 0, x - 1, tableHeight - 1);\n\t\t\t\t}\n\t\t\t\tx -= cm.getColumn(cMax).getWidth();\n\t\t\t\tg.drawLine(x, 0, x, tableHeight - 1);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate int viewIndexForColumn(final TableColumn aColumn) {\n\t\tTableColumnModel cm = table.getColumnModel();\n\t\tfor (int column = 0; column < cm.getColumnCount(); column++) {\n\t\t\tif (cm.getColumn(column) == aColumn) {\n\t\t\t\treturn column;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t}\n\n\tprivate void paintDraggedArea(final Graphics g, final int rMin, final int rMax, final TableColumn draggedColumn, final int distance) {\n\t\tint draggedColumnIndex = viewIndexForColumn(draggedColumn);\n\n\t\tfor (int row = rMin; row <= rMax; row++) {\n\t\t\t// skip separator rows\n\t\t\tObject rowValue = ((DefaultEventTableModel) separatorTable.getModel()).getElementAt(row);\n\n\t\t\t// only paint the cell on non-separator rows\n\t\t\tif (!(rowValue instanceof SeparatorList.Separator)) {\n\n\t\t\t\tRectangle cellRect = table.getCellRect(row, draggedColumnIndex, false);\n\n\t\t\t\t// Paint a gray well in place of the moving column.\n\t\t\t\tg.setColor(table.getParent().getBackground());\n\t\t\t\tg.fillRect(cellRect.x, cellRect.y, cellRect.width, cellRect.height);\n\n\t\t\t\t// Move to the where the cell has been dragged.\n\t\t\t\tcellRect.x += distance;\n\n\t\t\t\t// Fill the background.\n\t\t\t\tg.setColor(table.getBackground());\n\t\t\t\tg.fillRect(cellRect.x, cellRect.y, cellRect.width, cellRect.height);\n\n\t\t\t\t// Paint the vertical grid lines if necessary.\n\t\t\t\tif (table.getShowVerticalLines()) {\n\t\t\t\t\tg.setColor(table.getGridColor());\n\t\t\t\t\tint x1 = cellRect.x;\n\t\t\t\t\tint y1 = cellRect.y;\n\t\t\t\t\tint x2 = x1 + cellRect.width - 1;\n\t\t\t\t\tint y2 = y1 + cellRect.height - 1;\n\t\t\t\t\t// Left\n\t\t\t\t\tg.drawLine(x1 - 1, y1, x1 - 1, y2);\n\t\t\t\t\t// Right\n\t\t\t\t\tg.drawLine(x2, y1, x2, y2);\n\t\t\t\t}\n\n\t\t\t\t// Render the cell value\n\t\t\t\tpaintCell(g, cellRect, row, draggedColumnIndex);\n\t\t\t}\n\n\t\t\t// Paint the (lower) horizontal grid line if necessary.\n\t\t\tif (table.getShowHorizontalLines()) {\n\t\t\t\tg.setColor(table.getGridColor());\n\t\t\t\tRectangle rcr = table.getCellRect(row, draggedColumnIndex, true);\n\t\t\t\trcr.x += distance;\n\t\t\t\tint x1 = rcr.x;\n\t\t\t\tint y1 = rcr.y;\n\t\t\t\tint x2 = x1 + rcr.width - 1;\n\t\t\t\tint y2 = y1 + rcr.height - 1;\n\t\t\t\tg.drawLine(x1, y2, x2, y2);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/JViewManagerDialog.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.table;\r\n\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport javax.swing.table.AbstractTableModel;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JManagerDialog;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\npublic class JViewManagerDialog extends JManagerDialog {\r\n\r\n\tprivate final EnumTableFormatAdaptor<?, ?> tableFormat;\r\n\tprivate final AbstractTableModel tableModel;\r\n\tprivate final JAutoColumnTable jTable;\r\n\tprivate Map<String, View> views;\r\n\r\n\tpublic JViewManagerDialog(Program program, EnumTableFormatAdaptor<?, ?> tableFormat, AbstractTableModel tableModel, JAutoColumnTable jTable) {\r\n\t\tsuper(program, program.getMainWindow().getFrame(), GuiShared.get().manageViews(), true, false, false, false, false);\r\n\t\tthis.tableFormat = tableFormat;\r\n\t\tthis.tableModel = tableModel;\r\n\t\tthis.jTable = jTable;\r\n\t}\r\n\r\n\tpublic final void updateData(Map<String, View> views) {\r\n\t\tthis.views = views;\r\n\t\tupdate();\r\n\t}\r\n\r\n\tpublic final void update() {\r\n\t\tupdate(views.keySet());\r\n\t\tprogram.updateTableMenu();\r\n\t}\r\n\r\n\tpublic void loadView(View view) {\r\n\t\ttableFormat.setColumns(view.getColumns());\r\n\t\ttableModel.fireTableStructureChanged();\r\n\t\tjTable.autoResizeColumns();\r\n\t\tprogram.updateTableMenu();\r\n\t\tprogram.saveSettings(\"View (Load)\"); //Save Columns (Changed - Load View)\r\n\t}\r\n\r\n\r\n\t@Override\r\n\tprotected void load(String name) {\r\n\t\tView view = views.get(name);\r\n\t\tloadView(view);\r\n\t\tsetVisible(false);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void edit(String name) {\r\n\t\t//Edit is not supported...\r\n\t}\r\n\t\r\n\t@Override\r\n\tprotected void merge(String name, List<String> list) {\r\n\t\t//Merge is not supported...\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void copy(String fromName, String toName) {\r\n\t\t//Copy is not supported\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void rename(String name, String oldName) {\r\n\t\tView view = views.get(oldName);\r\n\t\tSettings.lock(\"View (Rename)\"); //Lock for View (Rename)\r\n\t\tview.setName(name);\r\n\t\tviews.remove(oldName); //Remove renamed filter (with old name)\r\n\t\tviews.remove(name); //Remove overwritten filter\r\n\t\tviews.put(name, view); //Add renamed filter (with new name)\r\n\t\tupdate();\r\n\t\tSettings.unlock(\"View (Rename)\");//Unlock for View (Rename)\r\n\t\tprogram.saveSettings(\"View (Rename)\"); //Save View (Rename)\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void delete(List<String> list) {\r\n\t\tSettings.lock(\"View (Delete)\"); //Lock for View (Delete)\r\n\t\tfor (String name : list) {\r\n\t\t\tviews.remove(name);\r\n\t\t}\r\n\t\tupdate();\r\n\t\tSettings.unlock(\"View (Delete)\"); //Unlock for View (Delete)\r\n\t\tprogram.saveSettings(\"View (Delete)\"); //Save View (Delete)\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void export(List<String> list) {\r\n\t\t//Export is not supported\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void importData() {\r\n\t\t//Import is not supported\r\n\t}\r\n\r\n\t@Override protected String textDeleteMultipleMsg(int size) { return GuiShared.get().deleteViews(size); }\r\n\t@Override protected String textDelete() { return GuiShared.get().deleteView(); }\r\n\t@Override protected String textEnterName() { return GuiShared.get().enterViewName(); }\r\n\t@Override protected String textMerge() { return \"\"; }\r\n\t@Override protected String textRename() { return GuiShared.get().renameView(); }\r\n\t@Override protected String textOverwrite() { return GuiShared.get().overwriteView(); }\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/PaddingTableCellRenderer.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.table;\n\nimport java.awt.Component;\nimport java.util.EnumMap;\nimport java.util.Map;\nimport javax.swing.BorderFactory;\nimport javax.swing.JComponent;\nimport javax.swing.JTable;\nimport javax.swing.border.Border;\nimport javax.swing.table.DefaultTableCellRenderer;\nimport javax.swing.table.TableCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableCellRenderers.IconTableCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableCellRenderers.TextIconTableCellRenderer;\n\n\npublic final class PaddingTableCellRenderer implements TableCellRenderer {\n\n\tprivate enum BorderState {\n\t\tSELECTED_AND_FOCUSED(true, true),\n\t\tSELECTED_AND_NOT_FOCUSED(true, false),\n\t\tNOT_SELECTED_AND_FOCUSED(false, true),\n\t\tNOT_SELECTED_AND_NOT_FOCUSED(false, false);\n\n\t\tprivate final boolean selected;\n\t\tprivate final boolean focused;\n\n\t\tprivate BorderState(boolean selected, boolean focused) {\n\t\t\tthis.selected = selected;\n\t\t\tthis.focused = focused;\n\t\t}\n\n\t\tpublic static BorderState getState(final boolean isSelected, final boolean hasFocus) {\n\t\t\tfor (BorderState borderState : values()) {\n\t\t\t\tif (borderState.selected == isSelected && borderState.focused == hasFocus) {\n\t\t\t\t\treturn borderState;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn BorderState.NOT_SELECTED_AND_NOT_FOCUSED;\n\t\t}\n\t}\n\n\tprivate final TableCellRenderer renderer;\n\tprivate final Border border;\n\tprivate final Map<BorderState, Border> borders = new EnumMap<>(BorderState.class);\n\n\tpublic static void install(final JTable jTable, final int padding) {\n\t\tinstall(jTable, padding, padding, padding, padding);\n\t}\n\n\tpublic static void install(final JTable jTable, final int top, final int left, final int bottom, final int right) {\n\t\tfor (int i = 0; i < jTable.getColumnCount(); i++) {\n\t\t\tClass<?> clazz = jTable.getColumnClass(i);\n\t\t\tTableCellRenderer defaultRenderer = jTable.getDefaultRenderer(clazz);\n\t\t\tif (defaultRenderer == null) {\n\t\t\t\tdefaultRenderer = new DefaultTableCellRenderer();\n\t\t\t}\n\t\t\tif (!(defaultRenderer instanceof PaddingTableCellRenderer)\n\t\t\t\t\t&& !(defaultRenderer instanceof TextIconTableCellRenderer)\n\t\t\t\t\t&& !(defaultRenderer instanceof IconTableCellRenderer)) {\n\t\t\t\tjTable.setDefaultRenderer(clazz, new PaddingTableCellRenderer(defaultRenderer, top, left, bottom, right));\n\t\t\t}\n\t\t}\n\t\tjTable.setRowHeight(jTable.getRowHeight() + top + bottom);\n\t}\n\n\tprivate PaddingTableCellRenderer(final TableCellRenderer renderer, final int top, final int left, final int bottom, final int right) {\n\t\tif (renderer != null) {\n\t\t\tthis.renderer = renderer;\n\t\t} else {\n\t\t\tthis.renderer = new DefaultTableCellRenderer();\n\t\t}\n\t\tborder = BorderFactory.createEmptyBorder(top, left, bottom, right);\n\t}\n\n\t@Override\n\tpublic Component getTableCellRendererComponent(final JTable table, final Object value, final boolean isSelected, final boolean hasFocus, final int row, final int column) {\n\t\tJComponent jComponent = (JComponent) renderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);\n\t\tBorderState state = BorderState.getState(isSelected, hasFocus);\n\t\tBorder compoundBorder = borders.get(state);\n\t\tif (compoundBorder == null) {\n\t\t\tcompoundBorder = BorderFactory.createCompoundBorder(jComponent.getBorder(), border);\n\t\t\tborders.put(state, compoundBorder);\n\t\t}\n\t\tjComponent.setBorder(compoundBorder);\n\t\treturn jComponent;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/SeparatorTableCell.java",
    "content": "/* Glazed Lists                                                 (c) 2003-2006 */\n/* http://publicobject.com/glazedlists/                      publicobject.com,*/\n/*                                                     O'Dell Engineering Ltd.*/\n\npackage net.nikr.eve.jeveasset.gui.shared.table;\n\nimport ca.odell.glazedlists.SeparatorList;\nimport java.awt.*;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.MouseAdapter;\nimport java.awt.event.MouseEvent;\nimport javax.swing.*;\nimport javax.swing.border.Border;\nimport javax.swing.table.TableCellEditor;\nimport javax.swing.table.TableCellRenderer;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.ColorUtil;\n\n/**\n *\n * @author <a href=\"mailto:jesse@swank.ca\">Jesse Wilson</a>\n * @param <E>\n */\npublic abstract class SeparatorTableCell<E> extends AbstractCellEditor\n\t\timplements TableCellRenderer, TableCellEditor {\n\n\tprotected static final Border EMPTY_TWO_PIXEL_BORDER = BorderFactory.createEmptyBorder(2, 2, 2, 2);\n\n\t/** the separator list to lock. */\n\tprotected final SeparatorList<E> separatorList;\n\tprotected SeparatorList.Separator<?> currentSeparator;\n\tprotected int currentRow;\n\n\tprivate final JSeparatorPanel jEditor;\n\tprotected final JSeparatorPanel jPanel;\n\tprotected final JButton jExpand;\n\tprotected final GroupLayout layout;\n\tprotected final JTable jTable;\n\n\tpublic SeparatorTableCell(final JTable jTable, final SeparatorList<E> separatorList) {\n\t\tthis.jTable = jTable;\n\t\tthis.separatorList = separatorList;\n\n\t\tjPanel = new JSeparatorPanel(new BorderLayout());\n\t\tif (ColorUtil.isBrightColor(jPanel.getBackground())) { //Light background color\n\t\t\tjPanel.setBackground(Color.LIGHT_GRAY);\n\t\t} else { //Dark background color\n\t\t\tjPanel.setBackground(Color.DARK_GRAY);\n\t\t}\n\n\t\tjPanel.addMouseListener(new MouseAdapter() {\n\t\t\t@Override public void mouseClicked(final MouseEvent e) {\n\t\t\t\tif (e.getClickCount() >= 2) {\n\t\t\t\t\texpandSeparator(currentSeparator.getLimit() == 0);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tlayout = new GroupLayout(jPanel);\n\t\tjPanel.setLayout(layout);\n\t\tlayout.setAutoCreateGaps(false);\n\t\tlayout.setAutoCreateContainerGaps(false);\n\n\t\t/*\n\t\tXXX - Workaround for square button borders in table with FlatLAF\n\t\thttps://stackoverflow.com/questions/67657036/jbuttons-in-jtable-cell-change-shape-on-row-selection\n\t\thttps://github.com/JFormDesigner/FlatLaf/blob/main/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatUIUtils.java#L215\n\t\t*/\n\t\tif (Settings.get().getColorSettings().isFlatLAF()) {\n\t\t\tJSeparatorPanel jLast = jPanel;\n\t\t\tfor (int i = 0; i < 3; i++) {\n\t\t\t\tJSeparatorPanel jSeparatorPanel = new JSeparatorPanel(new BorderLayout());\n\t\t\t\tjSeparatorPanel.add(jLast);\n\t\t\t\tjLast = jSeparatorPanel;\n\t\t\t}\n\t\t\tjEditor = jLast;\n\t\t} else {\n\t\t\tjEditor = jPanel;\n\t\t}\n\n\t\tjExpand = new JButton(Images.MISC_EXPANDED.getIcon());\n\t\tjExpand.setOpaque(false);\n\t\tjExpand.setContentAreaFilled(false);\n\t\tjExpand.setBorder(EMPTY_TWO_PIXEL_BORDER);\n\t\tjExpand.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\t\texpandSeparator(currentSeparator.getLimit() == 0);\n\t\t\t}\n\t\t});\n\t}\n\n\t@Override\n\tpublic Component getTableCellEditorComponent(final JTable table, final Object value, final boolean isSelected, final int row, final int column) {\n\t\tconfigure(value, row);\n\t\treturn jEditor;\n\t}\n\n\t@Override\n\tpublic Component getTableCellRendererComponent(final JTable table, final Object value, final boolean isSelected, final boolean hasFocus, final int row, final int column) {\n\t\tconfigure(value, row);\n\t\treturn jEditor;\n\t}\n\n\t@Override\n\tpublic Object getCellEditorValue() {\n\t\treturn this.currentSeparator;\n\t}\n\n\tprivate void configure(final Object value, final int row) {\n\t\tif (value instanceof SeparatorList.Separator<?>) {\n\t\t\tthis.currentRow = row;\n\t\t\tthis.currentSeparator = (SeparatorList.Separator<?>) value;\n\t\t\tjExpand.setIcon(currentSeparator.getLimit() == 0 ? Images.MISC_EXPANDED.getIcon() : Images.MISC_COLLAPSED.getIcon());\n\t\t\tconfigure(currentSeparator);\n\t\t}\n\t}\n\n\tprotected abstract void configure(final SeparatorList.Separator<?> separator);\n\n\tprotected void expandSeparator(final boolean expand) {\n\t\ttry {\n\t\t\tseparatorList.getReadWriteLock().writeLock().lock();\n\t\t\tcurrentSeparator.setLimit(expand ? Integer.MAX_VALUE : 0);\n\t\t} finally {\n\t\t\tseparatorList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t\tif (expand) {\n\t\t\tscrollToRow(currentRow + currentSeparator.size());\n\t\t}\n\t}\n\n\tprivate void scrollToRow(final int row) {\n\t\tif (!(jTable.getParent() instanceof JViewport)) {\n\t\t\treturn;\n\t\t}\n\n\t\tJViewport viewport = (JViewport) jTable.getParent();\n\n\t\t// This rectangle is relative to the table where the\n\t\t// northwest corner of cell (0,0) is always (0,0).\n\t\tRectangle rect = jTable.getCellRect(row, 0, true);\n\n\t\t// The location of the viewport relative to the table\n\t\tPoint pt = viewport.getViewPosition();\n\n\t\t// Translate the cell location so that it is relative\n\t\t// to the view, assuming the northwest corner of the\n\t\t// view is (0,0)\n\t\trect.setLocation(rect.x - pt.x, rect.y - pt.y);\n\n\t\t// Scroll the area into view\n\t\tviewport.scrollRectToVisible(rect);\n\n\t\t//Ensure stockpile cell is visible\n\t\trect = jTable.getCellRect(currentRow, 0, true);\n\t\tpt = viewport.getViewPosition();\n\t\trect.setLocation(rect.x - pt.x, rect.y - pt.y);\n\t\tviewport.scrollRectToVisible(rect);\n\t}\n\n\tpublic class JSeparatorPanel extends JPanel {\n\n\t\tpublic JSeparatorPanel(LayoutManager layout, boolean isDoubleBuffered) {\n\t\t\tsuper(layout, isDoubleBuffered);\n\t\t}\n\n\t\tpublic JSeparatorPanel(LayoutManager layout) {\n\t\t\tsuper(layout);\n\t\t}\n\n\t\tpublic JSeparatorPanel(boolean isDoubleBuffered) {\n\t\t\tsuper(isDoubleBuffered);\n\t\t}\n\n\t\tpublic JSeparatorPanel() {\n\t\t\tsuper();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/SimpleColumnManager.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.shared.table;\n\nimport net.nikr.eve.jeveasset.gui.shared.menu.JFormulaDialog.Formula;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuJumps.Jump;\nimport net.nikr.eve.jeveasset.gui.shared.table.ColumnManager.FormulaColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.ColumnManager.JumpColumn;\n\n\npublic interface SimpleColumnManager<Q> {\n\n\tpublic FormulaColumn<Q> addColumn(Formula add);\n\tpublic JumpColumn<Q> addColumn(Jump add);\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/TableCellRenderers.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.shared.table;\n\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport java.awt.Color;\nimport java.awt.Component;\nimport java.awt.Dimension;\nimport java.awt.GradientPaint;\nimport java.awt.Graphics;\nimport java.awt.Graphics2D;\nimport java.util.Date;\nimport javax.swing.AbstractCellEditor;\nimport javax.swing.DefaultCellEditor;\nimport javax.swing.Icon;\nimport javax.swing.JComponent;\nimport javax.swing.JLabel;\nimport javax.swing.JPanel;\nimport javax.swing.JTable;\nimport javax.swing.JTextField;\nimport javax.swing.SwingConstants;\nimport javax.swing.border.LineBorder;\nimport javax.swing.table.DefaultTableCellRenderer;\nimport javax.swing.table.TableCellEditor;\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\nimport net.nikr.eve.jeveasset.data.settings.tag.Tags;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\nimport net.nikr.eve.jeveasset.gui.shared.components.JButtonComparable;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Standing;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.TextIcon;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileItem;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.StockpileTableFormat;\n\n\npublic class TableCellRenderers {\n\n\tpublic static class LongCellRenderer extends DefaultTableCellRenderer {\n\t\tpublic LongCellRenderer() {\n\t\t\tthis.setHorizontalTextPosition(DefaultTableCellRenderer.RIGHT);\n\t\t\tthis.setHorizontalAlignment(DefaultTableCellRenderer.RIGHT);\n\t\t}\n\t\t@Override\n\t\tpublic void setValue(final Object value) {\n\t\t\tif (value == null) {\n\t\t\t\tsetText(\"\");\n\t\t\t} else if (value instanceof Number) {\n\t\t\t\tsetText(Formatter.longFormat(value));\n\t\t\t} else {\n\t\t\t\tsetText(value.toString());\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class DoubleCellRenderer extends DefaultTableCellRenderer {\n\t\tpublic DoubleCellRenderer() {\n\t\t\tthis.setHorizontalTextPosition(DefaultTableCellRenderer.RIGHT);\n\t\t\tthis.setHorizontalAlignment(DefaultTableCellRenderer.RIGHT);\n\t\t}\n\t\t@Override\n\t\tpublic void setValue(final Object value) {\n\t\t\tif (value == null) {\n\t\t\t\tsetText(\"\");\n\t\t\t} else if (value instanceof Number) {\n\t\t\t\tsetText(Formatter.doubleFormat(value));\n\t\t\t} else {\n\t\t\t\tsetText(value.toString());\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class IntegerCellRenderer extends DefaultTableCellRenderer {\n\t\tpublic IntegerCellRenderer() {\n\t\t\tthis.setHorizontalTextPosition(DefaultTableCellRenderer.RIGHT);\n\t\t\tthis.setHorizontalAlignment(DefaultTableCellRenderer.RIGHT);\n\t\t}\n\n\t\t@Override\n\t\tpublic void setValue(final Object value) {\n\t\t\tif (value == null) {\n\t\t\t\tsetText(\"\");\n\t\t\t} else if (value instanceof Number) {\n\t\t\t\tsetText(Formatter.integerFormat(value));\n\t\t\t} else {\n\t\t\t\tsetText(value.toString());\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class FloatCellRenderer extends DefaultTableCellRenderer {\n\t\tpublic FloatCellRenderer() {\n\t\t\tthis.setHorizontalTextPosition(DefaultTableCellRenderer.RIGHT);\n\t\t\tthis.setHorizontalAlignment(DefaultTableCellRenderer.RIGHT);\n\t\t}\n\t\t@Override\n\t\tpublic void setValue(final Object value) {\n\t\t\tif (value == null) {\n\t\t\t\tsetText(\"\");\n\t\t\t} else if (value instanceof Number) {\n\t\t\t\tsetText(Formatter.floatFormat(value));\n\t\t\t} else {\n\t\t\t\tsetText(value.toString());\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class DateCellRenderer extends DefaultTableCellRenderer {\n\t\tpublic DateCellRenderer() {\n\t\t\tthis.setHorizontalTextPosition(DefaultTableCellRenderer.RIGHT);\n\t\t\tthis.setHorizontalAlignment(DefaultTableCellRenderer.RIGHT);\n\t\t}\n\t\t@Override\n\t\tpublic void setValue(final Object value) {\n\t\t\tif (value == null) {\n\t\t\t\tsetText(\"\");\n\t\t\t} else if (value instanceof Date) {\n\t\t\t\tsetText(Formatter.columnDate(value));\n\t\t\t} else {\n\t\t\t\tsetText(value.toString());\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class DateOnlyCellRenderer extends DefaultTableCellRenderer {\n\t\tpublic DateOnlyCellRenderer() {\n\t\t\tthis.setHorizontalTextPosition(DefaultTableCellRenderer.RIGHT);\n\t\t\tthis.setHorizontalAlignment(DefaultTableCellRenderer.RIGHT);\n\t\t}\n\t\t@Override\n\t\tpublic void setValue(final Object value) {\n\t\t\tif (value == null) {\n\t\t\t\tsetText(\"\");\n\t\t\t} else if (value instanceof Date) {\n\t\t\t\tsetText(Formatter.columnDateOnly(value));\n\t\t\t} else {\n\t\t\t\tsetText(value.toString());\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class ToStringCellRenderer extends DefaultTableCellRenderer {\n\n\t\tpublic ToStringCellRenderer() {\tthis(SwingConstants.RIGHT); }\n\t\tpublic ToStringCellRenderer(final int alignment) {\n\t\t\tthis.setHorizontalTextPosition(alignment);\n\t\t\tthis.setHorizontalAlignment(alignment);\n\t\t}\n\t\t@Override\n\t\tpublic void setValue(final Object value) {\n\t\t\tif (value == null) {\n\t\t\t\tsetText(\"\");\n\t\t\t} else {\n\t\t\t\tsetText(value.toString());\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class StandingTableCellRenderer extends DefaultTableCellRenderer {\n\n\t\tprivate static final int TICK_HEIGHT = 1;\n\n\t\tprivate final JStandingLabel jStandingLabel = new JStandingLabel();\n\n\t\t@Override\n\t\tpublic Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {\n\t\t\tComponent component = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);\n\t\t\tif (component instanceof JLabel) {\n\t\t\t\tJLabel jLabel = (JLabel) component;\n\t\t\t\tif (value instanceof Standing) {\n\t\t\t\t\tjStandingLabel.setup(jLabel, (Standing) value, isSelected);\n\t\t\t\t\treturn jStandingLabel;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn component;\n\t\t}\n\n\t\tprivate static class JStandingLabel extends JLabel {\n\n\t\t\tprivate double standing = 0;\n\t\t\tprivate boolean selected;\n\n\t\t\tpublic JStandingLabel() {\n\t\t\t\tthis.setHorizontalTextPosition(DefaultTableCellRenderer.RIGHT);\n\t\t\t\tthis.setHorizontalAlignment(DefaultTableCellRenderer.RIGHT);\n\t\t\t\tthis.setOpaque(false);\n\t\t\t}\n\n\t\t\tpublic void setup(JLabel jLabel, Standing standing, boolean selected) {\n\t\t\t\tsetBackground(jLabel.getBackground());\n\t\t\t\tsetForeground(jLabel.getForeground());\n\t\t\t\tsetBorder(jLabel.getBorder());\n\t\t\t\tsetText(jLabel.getText());\n\t\t\t\tsetFont(jLabel.getFont());\n\t\t\t\tif (standing != null) {\n\t\t\t\t\tthis.standing = standing.getStanding();\n\t\t\t\t} else {\n\t\t\t\t\tthis.standing = 0;\n\t\t\t\t}\n\t\t\t\tthis.selected = selected;\n\t\t\t}\n\t\t\t\n\t\t\t@Override\n\t\t\tprotected void paintComponent(Graphics g) {\n\t\t\t\tGraphics2D g2D = (Graphics2D) g;\n\t\t\t\tg2D.setBackground(getBackground());\n\t\t\t\tDimension size = getSize();\n\t\t\t\tg2D.clearRect(0, 0, size.width, size.height);\n\t\t\t\t\n\t\t\t\tdouble tickSise = size.width / 20.0;\n\t\t\t\tint middle = size.width / 2;\n\t\t\t\tint width = (int)Math.ceil(tickSise * Math.abs(standing));\n\t\t\t\tColor standingColor;\n\t\t\t\tColor middleColor;\n\t\t\t\tif (selected) {\n\t\t\t\t\tstandingColor = getBackground().darker().darker();\n\t\t\t\t\tmiddleColor = getBackground();\n\t\t\t\t} else if (standing < 0) {\n\t\t\t\t\tstandingColor = ColorSettings.background(ColorEntry.NPC_STANDING_NEGATIVE);\n\t\t\t\t\tmiddleColor = ColorSettings.background(ColorEntry.NPC_STANDING_NEGATIVE_MIDDLE);\n\t\t\t\t} else if (standing > 0) {\n\t\t\t\t\tstandingColor = ColorSettings.background(ColorEntry.NPC_STANDING_POSITIVE);\n\t\t\t\t\tmiddleColor = ColorSettings.background(ColorEntry.NPC_STANDING_POSITIVE_MIDDLE);\n\t\t\t\t} else {\n\t\t\t\t\tstandingColor = getBackground();\n\t\t\t\t\tmiddleColor = getBackground();\n\t\t\t\t}\n\t\t\t\tg2D.setColor(standingColor);\n\t\t\t\tif (standing < 0) {\n\t\t\t\t\tint start = middle - width;\n\t\t\t\t\tg2D.setPaint(new GradientPaint(0, 0, standingColor, middle, 0, middleColor));\n\t\t\t\t\tg2D.fillRect(start, 0, width, size.height);\n\t\t\t\t} else if (standing > 0) {\n\t\t\t\t\tg2D.setPaint(new GradientPaint(middle, 0, middleColor, size.width, 0, standingColor));\n\t\t\t\t\tg2D.fillRect(middle, 0, width, size.height);\n\t\t\t\t}\n\n\t\t\t\tg2D.setColor(new Color(getForeground().getRed(), getForeground().getGreen(), getForeground().getBlue(), 100));\n\t\t\t\t//g2D.setColor(gridColor);\n\t\t\t\tg2D.drawLine(middle, 0, middle, size.height);\n\t\t\t\tint bottom = size.height - TICK_HEIGHT;\n\n\t\t\t\tint attack = middle - (int)(tickSise * 5);\n\t\t\t\tg2D.drawLine(attack, bottom, attack, size.height);\n\t\t\t\tg2D.drawLine(attack, 0, attack, TICK_HEIGHT);\n\n\t\t\t\tint level1 = middle - (int)(tickSise * 2);\n\t\t\t\tg2D.drawLine(level1, bottom, level1, size.height);\n\t\t\t\tg2D.drawLine(level1, 0, level1, TICK_HEIGHT);\n\n\t\t\t\tint level2 = middle + (int)(tickSise * 1);\n\t\t\t\tg2D.drawLine(level2, bottom, level2, size.height);\n\t\t\t\tg2D.drawLine(level2, 0, level2, TICK_HEIGHT);\n\n\t\t\t\tint level3 = middle + (int)(tickSise * 3);\n\t\t\t\tg2D.drawLine(level3, bottom, level3, size.height);\n\t\t\t\tg2D.drawLine(level3, 0, level3, TICK_HEIGHT);\n\n\t\t\t\tint level4 = middle + (int)(tickSise * 5);\n\t\t\t\tg2D.drawLine(level4, bottom, level4, size.height);\n\t\t\t\tg2D.drawLine(level4, 0, level4, TICK_HEIGHT);\n\n\t\t\t\tint level5 = middle + (int)(tickSise * 7);\n\t\t\t\tg2D.drawLine(level5, bottom, level5, size.height);\n\t\t\t\tg2D.drawLine(level5, 0, level5, TICK_HEIGHT);\n\n\t\t\t\tsuper.paintComponent(g);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class IconTableCellRenderer extends DefaultTableCellRenderer {\n\n\t\t@Override\n\t\tpublic Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {\n\t\t\tComponent component = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);\n\t\t\tif (component instanceof JLabel) {\n\t\t\t\tJLabel jLabel = (JLabel) component;\n\t\t\t\tif (value instanceof Icon) {\n\t\t\t\t\tjLabel.setIcon((Icon) value);\n\t\t\t\t\tjLabel.setText(\"\");\n\t\t\t\t} else {\n\t\t\t\t\tjLabel.setIcon(null);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn component;\n\t\t}\n\t}\n\n\tpublic static class TextIconTableCellRenderer extends DefaultTableCellRenderer {\n\n\t\t@Override\n\t\tpublic Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {\n\t\t\tComponent component = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);\n\t\t\tif (component instanceof JLabel) {\n\t\t\t\tJLabel jLabel = (JLabel) component;\n\t\t\t\tif (value instanceof TextIcon) {\n\t\t\t\t\tTextIcon textIcon = (TextIcon) value;\n\t\t\t\t\tjLabel.setIcon(textIcon.getIcon());\n\t\t\t\t\tjLabel.setText(textIcon.getText());\n\t\t\t\t} else {\n\t\t\t\t\tjLabel.setIcon(null);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn component;\n\t\t}\n\t}\n\n\tpublic static class TargetCellRenderer extends DefaultTableCellRenderer {\n\n\t\tpublic static final int MINIMUM_ICON_TEXT_GAP = 10;\n\t\tprivate final DefaultEventTableModel<StockpileItem> tableModel;\n\n\t\tpublic TargetCellRenderer(DefaultEventTableModel<StockpileItem> tableModel) {\n\t\t\tthis.tableModel = tableModel;\n\t\t\tthis.setHorizontalTextPosition(DefaultTableCellRenderer.RIGHT);\n\t\t\tthis.setHorizontalAlignment(DefaultTableCellRenderer.RIGHT);\n\t\t}\n\n\t\t@Override\n\t\tpublic Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {\n\t\t\tString columnName = (String) table.getTableHeader().getColumnModel().getColumn(column).getHeaderValue();\n\t\t\tObject object = tableModel.getElementAt(row);\n\t\t\tComponent component = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);\n\t\t\tif (component instanceof JLabel) {\n\t\t\t\tJLabel jLabel = (JLabel) component;\n\t\t\t\tif (object instanceof StockpileItem) {\n\t\t\t\t\tStockpileItem stockpileItem = (StockpileItem) object;\n\t\t\t\t\tif (stockpileItem.isEditable() && columnName.equals(StockpileTableFormat.COUNT_MINIMUM.getColumnName())) {\n\t\t\t\t\t\tjLabel.setIcon(Images.EDIT_EDIT_BACKGROUND.getIcon());\n\t\t\t\t\t\tjLabel.setHorizontalTextPosition(JLabel.TRAILING);\n\t\t\t\t\t\tjLabel.setIconTextGap(MINIMUM_ICON_TEXT_GAP);\n\t\t\t\t\t\treturn component;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tjLabel.setIcon(null);\n\t\t\t\tjLabel.setIconTextGap(0);\n\t\t\t}\n\t\t\treturn component;\n\t\t}\n\n\t\t@Override\n\t\tpublic void setValue(final Object value) {\n\t\t\tif (value == null) {\n\t\t\t\tsetText(\"\");\n\t\t\t} else if (value instanceof Number) {\n\t\t\t\tsetText(Formatter.doubleFormat(value));\n\t\t\t} else {\n\t\t\t\tsetText(value.toString());\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class TagsCellRenderer extends DefaultTableCellRenderer {\n\n\t\tpublic TagsCellRenderer() {\n\t\t\tthis.setHorizontalTextPosition(SwingConstants.CENTER);\n\t\t\tthis.setHorizontalAlignment(SwingConstants.CENTER);\n\t\t}\n\n\t\t@Override\n\t\tpublic Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {\n\t\t\tJLabel jLabel = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); //To change body of generated methods, choose Tools | Templates.\n\t\t\tif (value instanceof Tags) {\n\t\t\t\tTags tags = (Tags) value;\n\t\t\t\tTags.setFont(jLabel.getFont());\n\t\t\t\ttags.updateFont();\n\t\t\t\tJPanel jPanel = tags.getPanel();\n\t\t\t\tjPanel.setBackground(jLabel.getBackground());\n\t\t\t\tjPanel.setForeground(jLabel.getForeground());\n\t\t\t\tjPanel.setBorder(jLabel.getBorder());\n\t\t\t\treturn jPanel;\n\t\t\t}\n\t\t\treturn jLabel;\n\t\t}\n\t}\n\n\tpublic static class ComponentRenderer extends DefaultTableCellRenderer {\n\n\t\t@Override\n\t\tpublic Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {\n\t\t\tif (value instanceof JButtonComparable) {\n\t\t\t\tJButtonComparable jButton = (JButtonComparable) value;\n\t\t\t\tif (isSelected && table.getSelectedColumns().length == 1 && table.getSelectedRows().length == 1) {\n\t\t\t\t\tjButton.getModel().setRollover(true);\n\t\t\t\t\tjButton.getModel().setSelected(true);\n\t\t\t\t} else {\n\t\t\t\t\tjButton.getModel().setRollover(false);\n\t\t\t\t\tjButton.getModel().setSelected(false);\n\t\t\t\t}\n\t\t\t\treturn jButton;\n\t\t\t} else if (value instanceof Component) {\n\t\t\t\treturn (Component) value;\n\t\t\t} else {\n\t\t\t\treturn super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class ComponentEditor extends AbstractCellEditor implements TableCellEditor {\n\n\t\tprivate final TableCellEditor defaultTableCellEditor;\n\n\t\tpublic ComponentEditor(TableCellEditor defaultTableCellEditor) {\n\t\t\tthis.defaultTableCellEditor = defaultTableCellEditor;\n\t\t}\n\n\t\t@Override\n\t\tpublic Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {\n\t\t\tif (value instanceof Component) {\n\t\t\t\treturn (Component) value;\n\t\t\t} else {\n\t\t\t\treturn defaultTableCellEditor.getTableCellEditorComponent(table, value, isSelected, row, column);\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic Object getCellEditorValue() {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * NumberEditor that handle space and comma thousand separator\n\t * Original code from JTable.GenericEditor and JTable.NumberEditor\n\t */\n\tstatic class BetterNumberEditor extends DefaultCellEditor {\n\n\t\tClass<?>[] argTypes = new Class<?>[]{String.class};\n\t\tjava.lang.reflect.Constructor<?> constructor;\n\t\tObject value;\n\n\t\tpublic BetterNumberEditor() {\n\t\t\tsuper(new JTextField());\n\t\t\tgetComponent().setName(\"Table.editor\");\n\t\t\t((JTextField)getComponent()).setHorizontalAlignment(JTextField.RIGHT);\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean stopCellEditing() {\n\t\t\tString s = (String)super.getCellEditorValue();\n\n\t\t\t//Workaround start\n\t\t\ts = s.replace(\",\", \"\"); //Ignore thousands separator\n\t\t\ts = s.replace(\" \", \"\"); //Ignore thousands separator\n\t\t\t//workaround end (All other code is directly from Java core)\n\n\t\t\t// Here we are dealing with the case where a user\n\t\t\t// has deleted the string value in a cell, possibly\n\t\t\t// after a failed validation. Return null, so that\n\t\t\t// they have the option to replace the value with\n\t\t\t// null or use escape to restore the original.\n\t\t\t// For Strings, return \"\" for backward compatibility.\n\t\t\ttry {\n\t\t\t\tif (\"\".equals(s)) {\n\t\t\t\t\tif (constructor.getDeclaringClass() == String.class) {\n\t\t\t\t\t\tvalue = s;\n\t\t\t\t\t}\n\t\t\t\t\treturn super.stopCellEditing();\n\t\t\t\t}\n\t\t\t\tvalue = constructor.newInstance(new Object[]{s});\n\t\t\t}\n\t\t\tcatch (Exception e) {\n\t\t\t\t((JComponent)getComponent()).setBorder(new LineBorder(Color.red));\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn super.stopCellEditing();\n\t\t}\n\n\t\t@Override\n\t\tpublic Component getTableCellEditorComponent(JTable table, Object value,\n\t\t\t\t\t\t\t\t\t\t\t\t boolean isSelected,\n\t\t\t\t\t\t\t\t\t\t\t\t int row, int column) {\n\t\t\tthis.value = null;\n\t\t\t((JComponent)getComponent()).setBorder(new LineBorder(Color.black));\n\t\t\ttry {\n\t\t\t\tClass<?> type = table.getColumnClass(column);\n\t\t\t\t// Since our obligation is to produce a value which is\n\t\t\t\t// assignable for the required type it is OK to use the\n\t\t\t\t// String constructor for columns which are declared\n\t\t\t\t// to contain Objects. A String is an Object.\n\t\t\t\tif (type == Object.class) {\n\t\t\t\t\ttype = String.class;\n\t\t\t\t}\n\t\t\t\tconstructor = type.getConstructor(argTypes);\n\t\t\t}\n\t\t\tcatch (Exception e) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn super.getTableCellEditorComponent(table, value, isSelected, row, column);\n\t\t}\n\n\t\t@Override\n\t\tpublic Object getCellEditorValue() {\n\t\t\treturn value;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/TableFormatFactory.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.shared.table;\n\nimport java.util.Arrays;\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\nimport net.nikr.eve.jeveasset.data.api.my.MyExtraction;\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\nimport net.nikr.eve.jeveasset.data.api.my.MyJournal;\nimport net.nikr.eve.jeveasset.data.api.my.MyLoyaltyPoints;\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\nimport net.nikr.eve.jeveasset.data.api.my.MyMining;\nimport net.nikr.eve.jeveasset.data.api.my.MyNpcStanding;\nimport net.nikr.eve.jeveasset.data.api.my.MySkill;\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\nimport net.nikr.eve.jeveasset.data.sde.Agent;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings.ColorRow;\nimport net.nikr.eve.jeveasset.gui.dialogs.account.AccountTableFormat;\nimport net.nikr.eve.jeveasset.gui.dialogs.settings.ColorsTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.agents.AgentsTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.assets.AssetTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.contracts.ContractsTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.items.ItemTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.jobs.IndustryJobTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.journal.JournalTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.loadout.Loadout;\nimport net.nikr.eve.jeveasset.gui.tabs.loadout.LoadoutExtendedTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.loadout.LoadoutTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.loyalty.LoyaltyPointsTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.materials.Material;\nimport net.nikr.eve.jeveasset.gui.tabs.materials.MaterialExtendedTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.materials.MaterialTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.mining.ExtractionsTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.mining.MiningTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.orders.MarketTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.Overview;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.prices.PriceChangesTab.PriceChange;\nimport net.nikr.eve.jeveasset.gui.tabs.prices.PriceChangesTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.reprocessed.ReprocessedExtendedTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.reprocessed.ReprocessedInterface;\nimport net.nikr.eve.jeveasset.gui.tabs.reprocessed.ReprocessedTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.skills.SkillsOverviewTab.SkillsOverview;\nimport net.nikr.eve.jeveasset.gui.tabs.skills.SkillsOverviewTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.skills.SkillsTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.slots.Slots;\nimport net.nikr.eve.jeveasset.gui.tabs.slots.SlotsTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.standing.NpcStandingTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileItem;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.StockpileExtendedTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.StockpileTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.tracker.TrackerSkillPointFilter;\nimport net.nikr.eve.jeveasset.gui.tabs.tracker.TrackerSkillPointsFilterTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.transaction.TransactionTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.tree.TreeAsset;\nimport net.nikr.eve.jeveasset.gui.tabs.tree.TreeTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.values.Value;\nimport net.nikr.eve.jeveasset.gui.tabs.values.ValueTableFormat;\n\n\npublic class TableFormatFactory {\n\n\tpublic static EnumTableFormatAdaptor<SkillsOverviewTableFormat, SkillsOverview> skillsOverviewTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(SkillsOverviewTableFormat.class);\n\t}\n\n\tpublic static EnumTableFormatAdaptor<AccountTableFormat, OwnerType> accountTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(AccountTableFormat.class);\n\t}\n\n\tpublic static EnumTableFormatAdaptor<AssetTableFormat, MyAsset> assetTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(AssetTableFormat.class);\n\t}\n\n\tpublic static EnumTableFormatAdaptor<ColorsTableFormat, ColorRow> colorsTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(ColorsTableFormat.class);\n\t}\n\n\t//Extended\n\tpublic static EnumTableFormatAdaptor<ContractsTableFormat, MyContractItem> contractsTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(ContractsTableFormat.class);\n\t}\n\n\tpublic static EnumTableFormatAdaptor<IndustryJobTableFormat, MyIndustryJob> industryJobTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(IndustryJobTableFormat.class);\n\t}\n\n\tpublic static EnumTableFormatAdaptor<SlotsTableFormat, Slots> slotTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(SlotsTableFormat.class);\n\t}\n\n\tpublic static EnumTableFormatAdaptor<ItemTableFormat, Item> itemTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(ItemTableFormat.class);\n\t}\n\n\tpublic static EnumTableFormatAdaptor<JournalTableFormat, MyJournal> journalTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(JournalTableFormat.class);\n\t}\n\n\t//Extended\n\tpublic static EnumTableFormatAdaptor<LoadoutTableFormat, Loadout> loadoutTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(LoadoutTableFormat.class, Arrays.asList(LoadoutExtendedTableFormat.values()));\n\t}\n\n\tpublic static EnumTableFormatAdaptor<MarketTableFormat, MyMarketOrder> marketTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(MarketTableFormat.class);\n\t}\n\n\t//Extended\n\tpublic static EnumTableFormatAdaptor<MaterialTableFormat, Material> materialTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(MaterialTableFormat.class, Arrays.asList(MaterialExtendedTableFormat.values()));\n\t}\n\n\tpublic static EnumTableFormatAdaptor<OverviewTableFormat, Overview> overviewTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(OverviewTableFormat.class);\n\t}\n\n\t//Extended\n\tpublic static EnumTableFormatAdaptor<ReprocessedTableFormat, ReprocessedInterface> reprocessedTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(ReprocessedTableFormat.class, Arrays.asList(ReprocessedExtendedTableFormat.values()));\n\t}\n\n\t//Extended\n\tpublic static EnumTableFormatAdaptor<StockpileTableFormat, StockpileItem> stockpileTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(StockpileTableFormat.class, Arrays.asList(StockpileExtendedTableFormat.values()));\n\t}\n\n\tpublic static EnumTableFormatAdaptor<TrackerSkillPointsFilterTableFormat, TrackerSkillPointFilter> trackerSkillPointsFilterTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(TrackerSkillPointsFilterTableFormat.class);\n\t}\n\n\tpublic static EnumTableFormatAdaptor<TransactionTableFormat, MyTransaction> transactionTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(TransactionTableFormat.class);\n\t}\n\n\tpublic static EnumTableFormatAdaptor<TreeTableFormat, TreeAsset> treeTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(TreeTableFormat.class);\n\t}\n\n\tpublic static EnumTableFormatAdaptor<ValueTableFormat, Value> valueTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(ValueTableFormat.class);\n\t}\n\n\tpublic static EnumTableFormatAdaptor<SkillsTableFormat, MySkill> skillsTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(SkillsTableFormat.class);\n\t}\n\n\tpublic static EnumTableFormatAdaptor<LoyaltyPointsTableFormat, MyLoyaltyPoints> loyaltyPointsTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(LoyaltyPointsTableFormat.class);\n\t}\n\n\tpublic static EnumTableFormatAdaptor<NpcStandingTableFormat, MyNpcStanding> npcStandingTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(NpcStandingTableFormat.class);\n\t}\n\n\tpublic static EnumTableFormatAdaptor<AgentsTableFormat, Agent> agentsTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(AgentsTableFormat.class);\n\t}\n\n\tpublic static EnumTableFormatAdaptor<MiningTableFormat, MyMining> miningTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(MiningTableFormat.class);\n\t}\n\n\tpublic static EnumTableFormatAdaptor<ExtractionsTableFormat, MyExtraction> extractionsTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(ExtractionsTableFormat.class);\n\t}\n\n\tpublic static EnumTableFormatAdaptor<PriceChangesTableFormat, PriceChange> priceChangesTableFormat() {\n\t\treturn new EnumTableFormatAdaptor<>(PriceChangesTableFormat.class);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/View.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.table;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor.SimpleColumn;\r\n\r\n\r\npublic class View implements Comparable<View> {\r\n\tprivate String name;\r\n\tprivate List<SimpleColumn> columns = new ArrayList<SimpleColumn>();\r\n\r\n\tpublic View(String name) {\r\n\t\tthis.name = name;\r\n\t}\r\n\r\n\tpublic String getName() {\r\n\t\treturn name;\r\n\t}\r\n\r\n\tpublic void setName(String name) {\r\n\t\tthis.name = name;\r\n\t}\r\n\r\n\tpublic List<SimpleColumn> getColumns() {\r\n\t\treturn columns;\r\n\t}\r\n\r\n\tpublic void setColumns(List<SimpleColumn> columns) {\r\n\t\tthis.columns = columns;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn getName();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(View o) {\r\n\t\treturn this.getName().compareToIgnoreCase(o.getName());\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 7;\r\n\t\thash = 47 * hash + (this.name != null ? this.name.hashCode() : 0);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal View other = (View) obj;\r\n\t\tif ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/containers/AssetContainer.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.table.containers;\r\n\r\nimport java.util.Objects;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.i18n.General;\r\n\r\n\r\npublic class AssetContainer implements Comparable<AssetContainer>{\r\n\r\n\tprivate final String container;\r\n\tprivate final String containerSimple; //No ItemID\r\n\r\n\tpublic AssetContainer() {\r\n\t\tthis.container = \"\";\r\n\t\tthis.containerSimple = \"\";\r\n\t}\r\n\r\n\tpublic AssetContainer(MyAsset asset) {\r\n\t\tStringBuilder builder = new StringBuilder();\r\n\t\tStringBuilder simpleBuilder = new StringBuilder();\r\n\t\tif (asset.getParents().isEmpty()) {\r\n\t\t\tbuilder.append(General.get().none());\r\n\t\t\tsimpleBuilder.append(General.get().none());\r\n\t\t} else {\r\n\t\t\tboolean first = true;\r\n\t\t\tfor (MyAsset parentAsset : asset.getParents()) {\r\n\t\t\t\tif (first) {\r\n\t\t\t\t\tfirst = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbuilder.append(\" > \");\r\n\t\t\t\t\tsimpleBuilder.append(\" > \");\r\n\t\t\t\t}\r\n\t\t\t\tsimpleBuilder.append(parentAsset.getName());\r\n\t\t\t\tbuilder.append(parentAsset.getName());\r\n\t\t\t\tif (!parentAsset.isUserName()) {\r\n\t\t\t\t\tbuilder.append(\" #\");\r\n\t\t\t\t\tbuilder.append(parentAsset.getItemID());\r\n\t\t\t\t}\t\t\t\t\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.container = builder.toString().intern();\r\n\t\tthis.containerSimple = simpleBuilder.toString().intern();\r\n\t}\r\n\r\n\tpublic String getContainer() {\r\n\t\treturn container;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(AssetContainer o) {\r\n\t\treturn this.container.compareTo(o.container);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\tif (Settings.get().isContainersShowItemID()) {\r\n\t\t\treturn container;\r\n\t\t} else {\r\n\t\t\treturn containerSimple;\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 7;\r\n\t\tif (Settings.get().isContainersShowItemID()) {\r\n\t\t\thash = 37 * hash + Objects.hashCode(this.container);\r\n\t\t} else {\r\n\t\t\thash = 37 * hash + Objects.hashCode(this.containerSimple);\r\n\t\t}\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal AssetContainer other = (AssetContainer) obj;\r\n\t\tif (Settings.get().isContainersShowItemID()) {\r\n\t\t\treturn Objects.equals(this.container, other.container);\r\n\t\t} else {\r\n\t\t\treturn Objects.equals(this.containerSimple, other.containerSimple);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/containers/DateOnly.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.table.containers;\r\n\r\nimport java.util.Date;\r\n\r\n\r\npublic class DateOnly extends Date {\r\n\r\n\tpublic DateOnly(Date date) {\r\n\t\tsuper(date.getTime());\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/containers/Duration.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.table.containers;\r\n\r\nimport com.google.common.primitives.Longs;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\npublic class Duration implements Comparable<Duration> {\r\n\r\n\tpublic static final Duration NEVER = new Duration(GuiShared.get().durationNever());\r\n\tpublic static final Duration DONE = new Duration(GuiShared.get().durationDone());\r\n\r\n\tprivate final long duration;\r\n\tprivate final String formatted;\r\n\t\r\n\tpublic Duration(String formatted) {\r\n\t\tthis.duration = 0;\r\n\t\tthis.formatted = formatted;\r\n\t}\r\n\r\n\tpublic Duration(long time) {\r\n\t\tthis(time, false, false, true, true, true, true);\r\n\t}\r\n\r\n\tpublic Duration(long time, boolean first, boolean verbose) {\r\n\t\tthis(time, first, verbose, true, true, true, true);\r\n\t}\r\n\r\n\tpublic Duration(long time, boolean showDays, boolean showHours, boolean showMinutes, boolean showSeconds) {\r\n\t\tthis(time, false, false, showDays, showHours, showMinutes, showSeconds);\r\n\t}\r\n\r\n\tpublic Duration(long time, boolean first, boolean verbose, boolean showDays, boolean showHours, boolean showMinutes, boolean showSeconds) {\r\n\t\tduration = time;\r\n\t\tformatted = Formatter.milliseconds(time, showDays, showHours, showMinutes, showSeconds);\r\n\t}\r\n\r\n\tpublic long getDuration() {\r\n\t\treturn duration;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 5;\r\n\t\thash = 97 * hash + (int) (this.duration ^ (this.duration >>> 32));\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal Duration other = (Duration) obj;\r\n\t\treturn this.duration == other.duration;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn formatted;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(Duration o) {\r\n\t\treturn Longs.compare(duration, o.duration);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/containers/ExpirerDate.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.table.containers;\r\n\r\nimport java.util.Date;\r\nimport java.util.Objects;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\n\r\n\r\npublic class ExpirerDate implements Comparable<ExpirerDate> {\r\n\tprivate final Date expirer;\r\n\r\n\tpublic ExpirerDate(final Date expirer) {\r\n\t\tthis.expirer = expirer;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\tif (expirer == null) {\r\n\t\t\treturn \"Never\";\r\n\t\t} else if (Settings.getNow().after(expirer)) {\r\n\t\t\treturn \"Expired\";\r\n\t\t} else {\r\n\t\t\treturn Formatter.dateOnly(expirer);\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(final ExpirerDate o) {\r\n\t\treturn this.expirer.compareTo(o.expirer);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 5;\r\n\t\thash = 79 * hash + Objects.hashCode(this.expirer);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal ExpirerDate other = (ExpirerDate) obj;\r\n\t\tif (!Objects.equals(this.expirer, other.expirer)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n}"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/containers/HierarchyColumn.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.table.containers;\r\n\r\nimport java.util.Objects;\r\n\r\n\r\npublic class HierarchyColumn implements Comparable<HierarchyColumn>{\r\n\tprivate final String export;\r\n\tprivate final String gui;\r\n\t//private final String compare;\r\n\r\n\tpublic HierarchyColumn(String text, boolean parent) {\r\n\t\tthis.gui = text.trim();\r\n\t\tif (parent) {\r\n\t\t\tint split = text.indexOf(gui);\r\n\t\t\tthis.export = text.substring(0, split) + \"+\" + text.substring(split);\r\n\t\t} else {\r\n\t\t\tthis.export = text;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic String getExport() {\r\n\t\treturn export;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(HierarchyColumn o) {\r\n\t\treturn this.toString().compareTo(o.toString());\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn gui;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 5;\r\n\t\thash = 67 * hash + Objects.hashCode(this.gui);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal HierarchyColumn other = (HierarchyColumn) obj;\r\n\t\tif (!Objects.equals(this.gui, other.gui)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/containers/ISK.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.table.containers;\r\n\r\nimport java.util.Objects;\r\n\r\n\r\npublic class ISK implements NumberValue {\r\n\r\n\tprivate final String price;\r\n\tprivate final double value;\r\n\r\n\tpublic ISK(final String price, double value) {\r\n\t\tthis.price = price;\r\n\t\tthis.value = value;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn price;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Double getDouble() {\r\n\t\treturn value;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Number getNumber() {\r\n\t\treturn value;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 7;\r\n\t\thash = 29 * hash + Objects.hashCode(this.price);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal ISK other = (ISK) obj;\r\n\t\tif (!Objects.equals(this.price, other.price)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n}"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/containers/LongInt.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.table.containers;\r\n\r\nimport java.util.Objects;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\n\r\n\r\npublic class LongInt implements NumberValue, Comparable<LongInt> {\r\n\tprivate final Long number;\r\n\tprivate final String formatted;\r\n\r\n\tpublic LongInt(final Long number) {\r\n\t\tif (number == null) {\r\n\t\t\tthis.number = 0L;\r\n\t\t\tthis.formatted = \"\";\r\n\t\t} else {\r\n\t\t\tthis.number = number;\r\n\t\t\tthis.formatted = Formatter.integerFormat(number);\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Number getNumber() {\r\n\t\treturn number;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Long getLong() {\r\n\t\treturn number;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn formatted;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(final LongInt o) {\r\n\t\treturn number.compareTo(o.getLong());\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 7;\r\n\t\thash = 53 * hash + Objects.hashCode(this.number);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal LongInt other = (LongInt) obj;\r\n\t\tif (!Objects.equals(this.number, other.number)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/containers/ModulePriceValue.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.table.containers;\r\n\r\nimport java.util.Objects;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\n\r\n\r\npublic class ModulePriceValue {\r\n\tprivate final Double price;\r\n\tprivate final double value;\r\n\tprivate final long count;\r\n\r\n\tpublic ModulePriceValue(final Double price, final double value, final long count) {\r\n\t\tthis.price = price;\r\n\t\tthis.value = value;\r\n\t\tthis.count = count;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\tif (count > 1 && price != null) {\r\n\t\t\treturn Formatter.iskFormat(price) + \" (\" + Formatter.iskFormat(value) + \")\";\r\n\t\t} else {\r\n\t\t\treturn Formatter.iskFormat(value);\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 7;\r\n\t\thash = 79 * hash + Objects.hashCode(this.price);\r\n\t\thash = 79 * hash + (int) (Double.doubleToLongBits(this.value) ^ (Double.doubleToLongBits(this.value) >>> 32));\r\n\t\thash = 79 * hash + (int) (this.count ^ (this.count >>> 32));\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal ModulePriceValue other = (ModulePriceValue) obj;\r\n\t\tif (Double.doubleToLongBits(this.value) != Double.doubleToLongBits(other.value)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (this.count != other.count) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (!Objects.equals(this.price, other.price)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/containers/NumberValue.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.table.containers;\r\n\r\n\r\npublic interface NumberValue {\r\n\tpublic default Double getDouble() {\r\n\t\treturn null;\r\n\t}\r\n\tpublic default Long getLong() {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tpublic Number getNumber();\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/containers/Percent.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.table.containers;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\n\r\n\r\npublic class Percent implements NumberValue, Comparable<Percent> {\r\n\r\n\tprivate final static Map<Double, Percent> CACHE = new HashMap<>();\r\n\r\n\tprivate final double percent;\r\n\tprivate final String formatted;\r\n\r\n\tpublic static Percent create(final double decimalPercent) {\r\n\t\tPercent cached = CACHE.get(decimalPercent);\r\n\t\tif (cached == null) {\r\n\t\t\tcached = new Percent(decimalPercent);\r\n\t\t\tCACHE.put(decimalPercent, cached);\r\n\t\t}\r\n\t\treturn cached;\r\n\t}\r\n\r\n\tprivate Percent(final double percent) {\r\n\t\tthis.percent = percent;\r\n\t\tif (Double.isInfinite(percent)) {\r\n\t\t\tformatted = Formatter.integerFormat(percent);\r\n\t\t} else {\r\n\t\t\tformatted = Formatter.percentFormat(percent);\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Double getDouble() {\r\n\t\treturn round(percent * 100.0, 2);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Number getNumber() {\r\n\t\treturn getDouble();\r\n\t}\r\n\r\n\tprivate static double round(final double value, int decimals) {\r\n\t\tdouble p = Math.pow(10, decimals);\r\n\t\tdouble tmp = value * p;\r\n\t\ttmp = Math.round(tmp);\r\n\t\treturn tmp / p;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn formatted;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(final Percent o) {\r\n\t\treturn Double.compare(percent, o.percent);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 5;\r\n\t\thash = 71 * hash + (int) (Double.doubleToLongBits(this.percent) ^ (Double.doubleToLongBits(this.percent) >>> 32));\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal Percent other = (Percent) obj;\r\n\t\tif (Double.doubleToLongBits(this.percent) != Double.doubleToLongBits(other.percent)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/containers/Runs.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.table.containers;\r\n\r\nimport java.util.Objects;\r\n\r\n\r\npublic class Runs implements NumberValue, Comparable<Runs> {\r\n\r\n\tprivate final String runsString;\r\n\tprivate final Long runs;\r\n\r\n\tpublic Runs(int runs) {\r\n\t\tif (runs > 0) {\r\n\t\t\tthis.runs = (long) runs;\r\n\t\t\tthis.runsString = String.valueOf(runs);\r\n\t\t} else if (runs == 0) { // Not Blueprint\r\n\t\t\tthis.runsString = \"\";\r\n\t\t\tthis.runs = 0L;\r\n\t\t} else {\r\n\t\t\tthis.runsString = \"BPO\";\r\n\t\t\tthis.runs = null;\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Number getNumber() {\r\n\t\treturn runs;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Long getLong() {\r\n\t\treturn runs;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(Runs o) {\r\n\t\tif (this.runs == null && o.runs == null) {\r\n\t\t\treturn 0; //Both BPO: Equals\r\n\t\t} else if (this.runs == null) {\r\n\t\t\treturn 1; // This is BPO: This is Greater\r\n\t\t} else if (o.runs == null) {\r\n\t\t\treturn -1; // Other is BPO: This is Less\r\n\t\t}\r\n\t\treturn Long.compare(this.runs, o.runs); //Both BPC: Compare runs\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn runsString;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 5;\r\n\t\thash = 67 * hash + Objects.hashCode(this.runs);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal Runs other = (Runs) obj;\r\n\t\tif (!Objects.equals(this.runs, other.runs)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/containers/Security.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.table.containers;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\nimport java.util.Objects;\r\n\r\n\r\npublic class Security implements NumberValue, Comparable<Security> {\r\n\r\n\tprivate final static Map<String, Security> CACHE = new HashMap<>();\r\n\r\n\tprivate final String security;\r\n\tprivate final Double securityValue;\r\n\r\n\tpublic static Security create(String key) {\r\n\t\tSecurity cached = CACHE.get(key);\r\n\t\tif (cached == null) {\r\n\t\t\tcached = new Security(key);\r\n\t\t\tCACHE.put(key, cached);\r\n\t\t}\r\n\t\treturn cached;\r\n\t}\r\n\r\n\tprivate Security(String security) {\r\n\t\tthis.security = security;\r\n\t\tDouble d;\r\n\t\ttry {\r\n\t\t\t d = Double.valueOf(security);\r\n\t\t} catch (NumberFormatException e) {\r\n\t\t\t d = null;\r\n\t\t}\r\n\t\tsecurityValue = d;\r\n\t}\r\n\r\n\tpublic String getSecurity() {\r\n\t\treturn security;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Double getDouble() {\r\n\t\treturn securityValue; //To change body of generated methods, choose Tools | Templates.\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Number getNumber() {\r\n\t\treturn securityValue;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn security;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(Security o) {\r\n\t\treturn this.getSecurity().compareTo(o.getSecurity());\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 7;\r\n\t\thash = 37 * hash + Objects.hashCode(this.security);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal Security other = (Security) obj;\r\n\t\tif (!Objects.equals(this.security, other.security)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/containers/Standing.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.table.containers;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\n\r\n\r\npublic class Standing implements NumberValue, Comparable<Standing> {\r\n\r\n\tprivate final static Map<String, Standing> CACHE = new HashMap<>();\r\n\r\n\tprivate final String standingFormatted;\r\n\tprivate final double standing;\r\n\r\n\tpublic static Standing create(final double standing) {\r\n\t\tString standingFormat = Formatter.doubleFormat(standing);\r\n\t\tStanding cached = CACHE.get(standingFormat);\r\n\t\tif (cached == null) {\r\n\t\t\tcached = new Standing(standing, standingFormat);\r\n\t\t\tCACHE.put(standingFormat, cached);\r\n\t\t}\r\n\t\treturn cached;\r\n\t}\r\n\r\n\tprivate Standing(double standing, String standingFormat) {\r\n\t\tthis.standing = standing;\r\n\t\tthis.standingFormatted = standingFormat;\r\n\t}\r\n\r\n\tpublic double getStanding() {\r\n\t\treturn standing;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Number getNumber() {\r\n\t\treturn standing;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Double getDouble() {\r\n\t\treturn standing;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(Standing o) {\r\n\t\treturn Double.compare(standing, o.standing);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn standingFormatted;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/containers/TextIcon.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.table.containers;\r\n\r\nimport java.util.Objects;\r\nimport javax.swing.Icon;\r\n\r\n\r\npublic class TextIcon implements Comparable<TextIcon> {\r\n\r\n\tpublic final Icon icon;\r\n\tpublic final String text;\r\n\r\n\tpublic TextIcon(Icon icon, String text) {\r\n\t\tthis.icon = icon;\r\n\t\tthis.text = text;\r\n\t}\r\n\r\n\tpublic Icon getIcon() {\r\n\t\treturn icon;\r\n\t}\r\n\r\n\tpublic String getText() {\r\n\t\treturn text;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(TextIcon o) {\r\n\t\treturn text.compareToIgnoreCase(o.text);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\tif (text == null) {\r\n\t\t\treturn \"\";\r\n\t\t} else {\r\n\t\t\treturn text;\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 5;\r\n\t\thash = 29 * hash + Objects.hashCode(this.text);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal TextIcon other = (TextIcon) obj;\r\n\t\treturn Objects.equals(this.text, other.text);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/shared/table/containers/YesNo.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.table.containers;\r\n\r\nimport net.nikr.eve.jeveasset.i18n.DialoguesAccount;\r\n\r\n\r\npublic class YesNo implements Comparable<YesNo> {\r\n\r\n\tprivate static final YesNo YES = new YesNo(true);\r\n\tprivate static final YesNo NO = new YesNo(false);\r\n\r\n\tpublic static YesNo get(final boolean b) {\r\n\t\tif (b) {\r\n\t\t\treturn YES;\r\n\t\t} else {\r\n\t\t\treturn NO;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate final boolean b;\r\n\tprivate final String text;\r\n\r\n\tprivate YesNo(final boolean b) {\r\n\t\tthis.b = b;\r\n\t\tif (b) {\r\n\t\t\ttext = DialoguesAccount.get().tableFormatYes();\r\n\t\t} else {\r\n\t\t\ttext =DialoguesAccount.get().tableFormatNo();\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn text;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(final YesNo o) {\r\n\t\treturn this.toString().compareToIgnoreCase(o.toString());\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 3;\r\n\t\thash = 17 * hash + (this.b ? 1 : 0);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal YesNo other = (YesNo) obj;\r\n\t\tif (this.b != other.b) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/sounds/DefaultSound.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.sounds;\r\n\r\nimport java.awt.Toolkit;\r\nimport java.io.IOException;\r\nimport java.io.InputStream;\r\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\r\n\r\n\r\npublic enum DefaultSound implements Sound {\r\n\tNONE(\"\") {\r\n\t\t@Override\r\n\t\tpublic void play() { }\r\n\r\n\t\t@Override\r\n\t\tpublic void stop() { }\r\n\r\n\t\t@Override\r\n\t\tpublic String getText() {\r\n\t\t\treturn DialoguesSettings.get().soundsNone();\r\n\t\t}\r\n\t},\r\n\tARMOR(\"armor.mp3\") {\r\n\t\t@Override\r\n\t\tpublic String getText() {\r\n\t\t\treturn DialoguesSettings.get().soundsEveArmor();\r\n\t\t}\r\n\t},\r\n\tCAPACITOR(\"capacitor.mp3\") {\r\n\t\t@Override\r\n\t\tpublic String getText() {\r\n\t\t\treturn DialoguesSettings.get().soundsEveCapacitor();\r\n\t\t}\r\n\t},\r\n\tCARGO(\"cargo.mp3\") {\r\n\t\t@Override\r\n\t\tpublic String getText() {\r\n\t\t\treturn DialoguesSettings.get().soundsEveCargo();\r\n\t\t}\r\n\t},\r\n\tCHARACTER_SELECT(\"character_select.mp3\") {\r\n\t\t@Override\r\n\t\tpublic String getText() {\r\n\t\t\treturn DialoguesSettings.get().soundsEveCharacterSelection();\r\n\t\t}\r\n\t},\r\n\tLOGIN(\"login.mp3\") {\r\n\t\t@Override\r\n\t\tpublic String getText() {\r\n\t\t\treturn DialoguesSettings.get().soundsEveLogin();\r\n\t\t}\r\n\t},\r\n\tNOTIFICATION_PING(\"notification_ping.mp3\") {\r\n\t\t@Override\r\n\t\tpublic String getText() {\r\n\t\t\treturn DialoguesSettings.get().soundsEveNotificationPing();\r\n\t\t}\r\n\t},\r\n\tSHIELD(\"shield.mp3\") {\r\n\t\t@Override\r\n\t\tpublic String getText() {\r\n\t\t\treturn DialoguesSettings.get().soundsEveShield();\r\n\t\t}\r\n\t},\r\n\tSKILL(\"skill.mp3\") {\r\n\t\t@Override\r\n\t\tpublic String getText() {\r\n\t\t\treturn DialoguesSettings.get().soundsEveSkill();\r\n\t\t}\r\n\t},\r\n\tSTART(\"start.mp3\") {\r\n\t\t@Override\r\n\t\tpublic String getText() {\r\n\t\t\treturn DialoguesSettings.get().soundsEveStart();\r\n\t\t}\r\n\t},\r\n\tSTRUCTURE(\"structure.mp3\") {\r\n\t\t@Override\r\n\t\tpublic String getText() {\r\n\t\t\treturn DialoguesSettings.get().soundsEveStructure();\r\n\t\t}\r\n\t},\r\n\tBEEP(\"\") {\r\n\t\t@Override\r\n\t\tpublic void play() {\r\n\t\t\tToolkit.getDefaultToolkit().beep();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void stop() {\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic String getText() {\r\n\t\t\treturn DialoguesSettings.get().soundsBeep();\r\n\t\t}\r\n\t},;\r\n\t\r\n\r\n\tpublic abstract String getText();\r\n\r\n\tprivate final String filename;\r\n\tprivate SoundThread thread = null;\r\n\r\n\tprivate DefaultSound(String filename) {\r\n\t\tthis.filename = filename;\r\n\t}\r\n\r\n\tprotected String getFilename() {\r\n\t\treturn filename;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean exist() {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getID() {\r\n\t\treturn name();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void play() {\r\n\t\tthread = new SoundThread(this);\r\n\t\tthread.start();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic InputStream createInputStream() throws IOException {\r\n\t\treturn DefaultSound.class.getResourceAsStream(filename);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void stop() {\r\n\t\tif (thread != null) {\r\n\t\t\tthread.stopPlayback();\r\n\t\t\tthread = null;\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn getText();\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/sounds/FileSound.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.sounds;\r\n\r\nimport java.io.File;\r\nimport java.io.FileInputStream;\r\nimport java.io.IOException;\r\nimport java.io.InputStream;\r\nimport java.util.Objects;\r\n\r\n\r\npublic class FileSound implements Sound {\r\n\r\n\tprivate final File file;\r\n\tprivate SoundThread thread = null;\r\n\r\n\tpublic FileSound(File file) {\r\n\t\tthis.file = file;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getID() {\r\n\t\treturn file.getName();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean exist() {\r\n\t\treturn file.exists();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic InputStream createInputStream() throws IOException {\r\n\t\treturn new FileInputStream(file);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void play() {\r\n\t\tthread = new SoundThread(this);\r\n\t\tthread.start();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void stop() {\r\n\t\tif (thread != null) {\r\n\t\t\tthread.stopPlayback();\r\n\t\t\tthread = null;\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn file.getName();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 3;\r\n\t\thash = 29 * hash + Objects.hashCode(this.file);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal FileSound other = (FileSound) obj;\r\n\t\treturn Objects.equals(this.file, other.file);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/sounds/Sound.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.sounds;\r\n\r\nimport java.io.IOException;\r\nimport java.io.InputStream;\r\n\r\n\r\npublic interface Sound {\r\n\tpublic void play();\r\n\tpublic void stop();\r\n\tpublic boolean exist();\r\n\tpublic InputStream createInputStream() throws IOException;\r\n\tpublic String getID();\r\n\t\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/sounds/SoundPlayer.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.sounds;\r\n\r\nimport java.util.Date;\r\nimport java.util.concurrent.Executors;\r\nimport java.util.concurrent.ScheduledExecutorService;\r\nimport java.util.concurrent.TimeUnit;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.settings.SoundsSettingsPanel.SoundOption;\r\n\r\n\r\npublic class SoundPlayer {\r\n\r\n\tprivate static ScheduledExecutorService EXECUTOR = Executors.newSingleThreadScheduledExecutor();\r\n\tprivate static boolean play = false;\r\n\r\n\tprivate SoundPlayer() { }\r\n\r\n\tpublic static void load() {\r\n\t\tSoundPlayer.play = true;\r\n\t}\r\n\r\n\tpublic static void play(SoundOption option) {\r\n\t\tplay(Settings.get().getSoundSettings().get(option));\r\n\t}\r\n\r\n\tpublic static void play(Sound sound) {\r\n\t\tif (!play) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (sound != null) {\r\n\t\t\tsound.play();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic synchronized static void playAt(Date date, SoundOption option) {\r\n\t\tif (date == null || date.before(Settings.getNow())) {\r\n\t\t\treturn; //In the past\r\n\t\t}\r\n\t\tlong diff = Math.abs(date.getTime() - Settings.getNow().getTime());\r\n\t\tlong ms = TimeUnit.MILLISECONDS.convert(diff, TimeUnit.MILLISECONDS);\r\n\t\tEXECUTOR.schedule(new Runnable(){\r\n\t\t\t@Override\r\n\t\t\tpublic void run() {\r\n\t\t\t\tplay(option);\r\n\t\t\t}\r\n\t\t}, ms, TimeUnit.MILLISECONDS);\r\n\t}\r\n\r\n\tpublic synchronized static void cancelAll() {\r\n\t\tEXECUTOR.shutdownNow();\r\n\t\tEXECUTOR = Executors.newSingleThreadScheduledExecutor();\r\n\t}\r\n\r\n\tpublic static void stop(Sound sound) {\r\n\t\tif (sound != null) {\r\n\t\t\tsound.stop();\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/sounds/SoundThread.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.sounds;\r\n\r\nimport java.io.IOException;\r\nimport java.io.InputStream;\r\nimport javazoom.jl.decoder.JavaLayerException;\r\nimport javazoom.jl.player.Player;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class SoundThread extends Thread {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(SoundThread.class);\r\n\r\n\tprivate final Sound sound;\r\n\tprivate Player player = null;\r\n\r\n\tpublic SoundThread(Sound sound) {\r\n\t\tthis.sound = sound;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void run() {\r\n\t\ttry {\r\n\t\t\tInputStream is = sound.createInputStream();\r\n\t\t\tif (is == null) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tplayer = new Player(is);\r\n\t\t\tplayer.play();\r\n\t\t} catch (JavaLayerException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t} catch (IOException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t} finally {\r\n\t\t\tplayer.close();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void stopPlayback() {\r\n\t\tif (player != null) {\r\n\t\t\tplayer.close();\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/agents/AgentsTab.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.agents;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.FilterList;\nimport ca.odell.glazedlists.ListSelection;\nimport ca.odell.glazedlists.SortedList;\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport ca.odell.glazedlists.swing.TableComparatorChooser;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.List;\nimport javax.swing.JComponent;\nimport javax.swing.JMenu;\nimport javax.swing.JPopupMenu;\nimport javax.swing.JScrollPane;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.sde.Agent;\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\nimport net.nikr.eve.jeveasset.data.settings.tag.TagUpdate;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabPrimary;\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter;\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuColumns;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\nimport net.nikr.eve.jeveasset.i18n.TabsAgents;\n\n\npublic class AgentsTab extends JMainTabPrimary implements TagUpdate {\n\n\t//GUI\n\tprivate final JAutoColumnTable jTable;\n\n\t//Table\n\tprivate final AgentsFilterControl filterControl;\n\tprivate final EnumTableFormatAdaptor<AgentsTableFormat, Agent> tableFormat;\n\tprivate final DefaultEventTableModel<Agent> tableModel;\n\tprivate final EventList<Agent> eventList;\n\tprivate final FilterList<Agent> filterList;\n\tprivate final DefaultEventSelectionModel<Agent> selectionModel;\n\n\tpublic static final String NAME = \"agents\"; //Not to be changed!\n\n\tpublic AgentsTab(final Program program) {\n\t\tsuper(program, NAME, TabsAgents.get().agents(), Images.TOOL_AGENTS.getIcon(), true);\n\t\tlayout.setAutoCreateGaps(true);\n\n\t\t//Table Format\n\t\ttableFormat = TableFormatFactory.agentsTableFormat();\n\t\t//Backend\n\t\teventList = EventListManager.create();\n\t\t//Sorting (per column)\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<Agent> sortedList = new SortedList<>(eventList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\n\t\t//Filter\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tfilterList = new FilterList<>(sortedList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\n\t\t//Table Model\n\t\ttableModel = EventModels.createTableModel(filterList, tableFormat);\n\t\t//Table\n\t\tjTable = new JAutoColumnTable(program, tableModel);\n\t\tjTable.setCellSelectionEnabled(true);\n\t\tjTable.setRowSelectionAllowed(true);\n\t\tjTable.setColumnSelectionAllowed(true);\n\t\t//Sorting\n\t\tTableComparatorChooser<Agent> comparatorChooser = TableComparatorChooser.install(jTable, sortedList, TableComparatorChooser.MULTIPLE_COLUMN_MOUSE, tableFormat);\n\t\t//Selection Model\n\t\tselectionModel = EventModels.createSelectionModel(filterList);\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\n\t\tjTable.setSelectionModel(selectionModel);\n\n\t\t//Listeners\n\t\tinstallTable(jTable);\n\t\t//Scroll\n\t\tJScrollPane jTableScroll = new JScrollPane(jTable);\n\t\t//Table Filter\n\t\tfilterControl = new AgentsFilterControl(sortedList);\n\t\t//Menu\n\t\tinstallTableTool(new AgentsTableMenu(), tableFormat, comparatorChooser, tableModel, jTable, filterControl, Agent.class);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\n\t\ttry {\n\t\t\teventList.getReadWriteLock().writeLock().lock();\n\t\t\teventList.clear();\n\t\t\teventList.addAll(StaticData.get().getAgents().values());\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t}\n\n\t@Override\n\tpublic void updateTags() {\n\t\tbeforeUpdateData();\n\t\ttableModel.fireTableDataChanged();\n\t\tfilterControl.refilter();\n\t\tafterUpdateData();\n\t}\n\n\t@Override\n\tpublic void clearData() { }\n\n\t@Override\n\tpublic void updateCache() {\n\t\tfilterControl.createCache();\n\t}\n\n\t@Override\n\tpublic Collection<LocationType> getLocations() {\n\t\treturn new ArrayList<>(); //LocationsType\n\t}\n\n\tpublic boolean isFiltersEmpty() {\n\t\treturn filterControl.isFiltersEmpty();\n\t}\n\n\tpublic void addFilters(final List<Filter> filters) {\n\t\tfilterControl.addFilters(filters);\n\t}\n\n\tpublic void clearFilters() {\n\t\tfilterControl.clearCurrentFilters();\n\t}\n\n\tpublic String getCurrentFilterName() {\n\t\treturn filterControl.getCurrentFilterName();\n\t}\n\n\tprivate class AgentsTableMenu implements TableMenu<Agent> {\n\t\t@Override\n\t\tpublic MenuData<Agent> getMenuData() {\n\t\t\treturn new MenuData<>(selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getFilterMenu() {\n\t\t\treturn filterControl.getMenu(jTable, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getColumnMenu() {\n\t\t\treturn new JMenuColumns<>(program, tableFormat, tableModel, jTable, NAME);\n\t\t}\n\n\t\t@Override\n\t\tpublic void addInfoMenu(JPopupMenu jPopupMenu) { }\n\n\t\t@Override\n\t\tpublic void addToolMenu(JComponent jComponent) { }\n\t}\n\n\tprivate class AgentsFilterControl extends FilterControl<Agent> {\n\n\t\tpublic AgentsFilterControl(EventList<Agent> exportEventList) {\n\t\t\tsuper(program.getMainWindow().getFrame(),\n\t\t\t\t\tNAME,\n\t\t\t\t\ttableFormat,\n\t\t\t\t\teventList,\n\t\t\t\t\texportEventList,\n\t\t\t\t\tfilterList\n\t\t\t\t\t);\n\t\t}\n\n\t\t@Override\n\t\tpublic void saveSettings(final String msg) {\n\t\t\tprogram.saveSettings(\"Agents Table: \" + msg); //Save Agents Filters and Export Settings\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/agents/AgentsTableFormat.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.agents;\n\nimport java.util.Comparator;\nimport net.nikr.eve.jeveasset.data.sde.Agent;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Security;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.YesNo;\nimport net.nikr.eve.jeveasset.i18n.TabsAgents;\n\n\npublic enum AgentsTableFormat implements EnumTableColumn<Agent> {\n\tAGENT(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAgents.get().columnName();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Agent from) {\n\t\t\treturn from.getAgent();\n\t\t}\n\t},\n\tCORPORATION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAgents.get().columnCorporation();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Agent from) {\n\t\t\treturn from.getCorporationName();\n\t\t}\n\t},\n\tFACTION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAgents.get().columnFaction();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Agent from) {\n\t\t\treturn from.getFaction();\n\t\t}\n\t},\n\tLEVEL(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAgents.get().columnLevel();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Agent from) {\n\t\t\treturn from.getLevel();\n\t\t}\n\t},\n\tLOCATION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAgents.get().columnLocation();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Agent from) {\n\t\t\treturn from.getLocation().getLocation();\n\t\t}\n\t},\n\tSECURITY(Security.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAgents.get().columnSecurity();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Agent from) {\n\t\t\treturn from.getLocation().getSecurityObject();\n\t\t}\n\t},\n\tSYSTEM(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAgents.get().columnSystem();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Agent from) {\n\t\t\treturn from.getLocation().getSystem();\n\t\t}\n\t},\n\tCONSTELLATION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAgents.get().columnConstellation();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Agent from) {\n\t\t\treturn from.getLocation().getConstellation();\n\t\t}\n\t},\n\tREGION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAgents.get().columnRegion();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Agent from) {\n\t\t\treturn from.getLocation().getRegion();\n\t\t}\n\t},\n\tDIVISION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAgents.get().columnDivision();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Agent from) {\n\t\t\treturn from.getDivision();\n\t\t}\n\t},\n\tAGENT_TYPE(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAgents.get().columnType();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Agent from) {\n\t\t\treturn from.getAgentType();\n\t\t}\n\t},\n\tLOCATOR(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAgents.get().columnLocator();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Agent from) {\n\t\t\treturn YesNo.get(from.isLocator());\n\t\t}\n\t},\n\tAGENT_ID(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAgents.get().columnAgentID();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Agent from) {\n\t\t\treturn from.getAgentID();\n\t\t}\n\t},\n\tCORPORATION_ID(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAgents.get().columnCorporationID();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Agent from) {\n\t\t\treturn from.getCorporationID();\n\t\t}\n\t},\n\tFACTION_ID(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAgents.get().columnFactionID();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Agent from) {\n\t\t\treturn from.getFactionID();\n\t\t}\n\t};\n\n\tprivate final Class<?> type;\n\tprivate final Comparator<?> comparator;\n\n\tprivate AgentsTableFormat(final Class<?> type) {\n\t\tthis.type = type;\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\n\t}\n\n\t@Override\n\tpublic Class<?> getType() {\n\t\treturn type;\n\t}\n\t@Override\n\tpublic Comparator<?> getComparator() {\n\t\treturn comparator;\n\t}\n\t@Override\n\tpublic String toString() {\n\t\treturn getColumnName();\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/assets/AssetTableFormat.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.assets;\n\nimport java.util.Comparator;\nimport java.util.Date;\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\nimport net.nikr.eve.jeveasset.data.settings.tag.Tags;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.AssetContainer;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.LongInt;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Percent;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Runs;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Security;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.YesNo;\nimport net.nikr.eve.jeveasset.i18n.TabsAssets;\n\n\npublic enum AssetTableFormat implements EnumTableColumn<MyAsset> {\n\tNAME(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnName();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getName();\n\t\t}\n\t},\n\tNAME_TYPE(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnNameType();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getTypeName();\n\t\t}\n\t\t@Override\n\t\tpublic boolean isShowDefault() {\n\t\t\treturn false;\n\t\t}\n\t},\n\tNAME_CUSTOM(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnNameCustom();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getItemName();\n\t\t}\n\t\t@Override\n\t\tpublic boolean isShowDefault() {\n\t\t\treturn false;\n\t\t}\n\t},\n\tTAGS(Tags.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnTags();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getTags();\n\t\t}\n\t},\n\tGROUP(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnGroup();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getItem().getGroup();\n\t\t}\n\t},\n\tCATEGORY(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnCategory();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getItem().getCategory();\n\t\t}\n\t},\n\tSLOT(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnSlot();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getItem().getSlot();\n\t\t}\n\t},\n\tCHARGE_SIZE(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnChargeSize();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getItem().getChargeSize();\n\t\t}\n\t},\n\tOWNER(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnOwner();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getOwnerName();\n\t\t}\n\t},\n\tLOCATION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnLocation();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getLocation().getLocation();\n\t\t}\n\t},\n\tSECURITY(Security.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnSecurity();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getLocation().getSecurityObject();\n\t\t}\n\t},\n\tSYSTEM(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnSystem();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getLocation().getSystem();\n\t\t}\n\t},\n\tCONSTELLATION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnConstellation();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getLocation().getConstellation();\n\t\t}\n\t},\n\tREGION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnRegion();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getLocation().getRegion();\n\t\t}\n\t},\n\tFACTION_WARFARE_SYSTEM_OWNER(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnFactionWarfareSystemOwner();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnFactionWarfareSystemOwnerToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getLocation().getFactionWarfareSystemOwner();\n\t\t}\n\t},\n\tCONTAINER(AssetContainer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnContainer();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getAssetContainer();\n\t\t}\n\t},\n\tFLAG(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnFlag();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getFlagName();\n\t\t}\n\t},\n\tPRICE(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnPrice();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnPriceToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getDynamicPrice();\n\t\t}\n\t},\n\tPRICE_SELL_MIN(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnPriceSellMin();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnPriceSellMinToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getPriceSellMin();\n\t\t}\n\t},\n\tPRICE_BUY_MAX(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnPriceBuyMax();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnPriceBuyMaxToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getPriceBuyMax();\n\t\t}\n\t},\n\tPRICE_REPROCESSED(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnPriceReprocessed();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnPriceReprocessedToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getPriceReprocessed();\n\t\t}\n\t},\n\tPRICE_MANUFACTURING(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnPriceManufacturing();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnPriceManufacturingToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getItem().getPriceManufacturing();\n\t\t}\n\t},\n\tTRANSACTION_PRICE_LATEST(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnTransactionPriceLatest();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnTransactionPriceLatestToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getMarketPriceData().getLatest();\n\t\t}\n\t},\n\tTRANSACTION_PRICE_AVERAGE(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnTransactionPriceAverage();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnTransactionPriceAverageToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getMarketPriceData().getAverage();\n\t\t}\n\t},\n\tTRANSACTION_PRICE_MAXIMUM(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnTransactionPriceMaximum();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnTransactionPriceMaximumToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getMarketPriceData().getMaximum();\n\t\t}\n\t},\n\tTRANSACTION_PRICE_MINIMUM(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnTransactionPriceMinimum();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnTransactionPriceMinimumToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getMarketPriceData().getMinimum();\n\t\t}\n\t},\n\tPRICE_BASE(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnPriceBase();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnPriceBaseToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getItem().getPriceBase();\n\t\t}\n\t},\n\tVALUE_REPROCESSED(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnValueReprocessed();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnValueReprocessedToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getValueReprocessed();\n\t\t}\n\t},\n\tVALUE(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnValue();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnValueToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getValue();\n\t\t}\n\t},\n\tPRICE_REPROCESSED_DIFFERENCE(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnPriceReprocessedDifference();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnPriceReprocessedDifferenceToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getPriceReprocessedDifference();\n\t\t}\n\t},\n\tPRICE_REPROCESSED_PERCENT(Percent.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnPriceReprocessedPercent();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnPriceReprocessedPercentToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn Percent.create(from.getPriceReprocessedPercent());\n\t\t}\n\t},\n\tCOUNT(Long.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnCount();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getCount();\n\t\t}\n\t},\n\tCOUNT_TYPE(Long.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnTypeCount();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnTypeCountToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getTypeCount();\n\t\t}\n\t},\n\tMETA(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnMeta();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getItem().getMeta();\n\t\t}\n\t},\n\tTECH(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnTech();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getItem().getTech();\n\t\t}\n\t},\n\tVOLUME(Float.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnVolume();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getVolume();\n\t\t}\n\t},\n\tVOLUME_TOTAL(Float.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnVolumeTotal();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnVolumeTotalToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getVolumeTotal();\n\t\t}\n\t},\n\tVOLUME_PACKAGED(Float.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnVolumePackaged();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnVolumePackagedToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getItem().getVolumePackaged();\n\t\t}\n\t},\n\tVALUE_PER_VOLUME(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnValuePerVolume();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getValuePerVolume();\n\t\t}\n\t},\n\tSINGLETON(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnSingleton();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getSingleton();\n\t\t}\n\t},\n\tADDED(Date.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnAdded();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnAddedToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getAdded();\n\t\t}\n\t\t@Override\n\t\tpublic boolean isShowDefault() {\n\t\t\treturn false;\n\t\t}\n\t},\n\tMATERIAL_EFFICIENCY(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnMaterialEfficiency();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnMaterialEfficiencyToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getMaterialEfficiency();\n\t\t}\n\t},\n\tTIME_EFFICIENCY(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnTimeEfficiency();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnTimeEfficiencyToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getTimeEfficiency();\n\t\t}\n\t},\n\tRUNS(Runs.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnRuns();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnRunsToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn new Runs(from.getRuns());\n\t\t}\n\t},\n\tCITADEL(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnStructure();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnStructureToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn YesNo.get(from.getLocation().isCitadel());\n\t\t}\n\t\t@Override\n\t\tpublic boolean isShowDefault() {\n\t\t\treturn false;\n\t\t}\n\t},\n\tITEM_ID(LongInt.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnItemID();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnItemIDToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn new LongInt(from.getItemID());\n\t\t}\n\t},\n\tLOCATION_ID(LongInt.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnLocationID();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnLocationIDToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn new LongInt(from.getLocationID());\n\t\t}\n\t},\n\tTYPE_ID(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnTypeID();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnTypeIDToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyAsset from) {\n\t\t\treturn from.getItem().getTypeID();\n\t\t}\n\t};\n\n\tprivate final Class<?> type;\n\tprivate final Comparator<?> comparator;\n\n\tprivate AssetTableFormat(final Class<?> type) {\n\t\tthis.type = type;\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\n\t}\n\t@Override\n\tpublic Class<?> getType() {\n\t\treturn type;\n\t}\n\t@Override\n\tpublic Comparator<?> getComparator() {\n\t\treturn comparator;\n\t}\n\t@Override\n\tpublic String toString() {\n\t\treturn getColumnName();\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/assets/AssetsTab.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.assets;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.FilterList;\nimport ca.odell.glazedlists.ListSelection;\nimport ca.odell.glazedlists.SortedList;\nimport ca.odell.glazedlists.event.ListEvent;\nimport ca.odell.glazedlists.event.ListEventListener;\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport ca.odell.glazedlists.swing.TableComparatorChooser;\nimport java.awt.CardLayout;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport javax.swing.GroupLayout;\nimport javax.swing.JButton;\nimport javax.swing.JComponent;\nimport javax.swing.JMenu;\nimport javax.swing.JPanel;\nimport javax.swing.JPopupMenu;\nimport javax.swing.JScrollPane;\nimport javax.swing.JToggleButton;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.tag.TagUpdate;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel.JStatusLabel;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.JFixedToolBar;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabPrimary;\nimport net.nikr.eve.jeveasset.gui.shared.components.JTreemap;\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter;\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuColumns;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo.AutoNumberFormat;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData.AssetMenuData;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewTab;\nimport net.nikr.eve.jeveasset.gui.tabs.tree.TreeTab;\nimport net.nikr.eve.jeveasset.i18n.TabsAssets;\n\n\npublic class AssetsTab extends JMainTabPrimary implements TagUpdate {\n\n\tprivate enum AssetsAction {\n\t\tREPROCESS_COLORS,\n\t\tTREEMAP_VIEW\n\t}\n\n\t//GUI\n\tprivate final JAssetTable jTable;\n\tprivate final JToggleButton jReprocessColors;\n\tprivate final JToggleButton jTreemap;\n\tprivate final JStatusLabel jValue;\n\tprivate final JStatusLabel jReprocessed;\n\tprivate final JStatusLabel jCount;\n\tprivate final JStatusLabel jAverage;\n\tprivate final JStatusLabel jVolume;\n\tprivate final JButton jClearNew;\n\tprivate final JTreemap jTreemapView;\n\tprivate final JPanel jViewPanel;\n\tprivate final CardLayout viewLayout;\n\n\tprivate static final String VIEW_TABLE = \"table\";\n\tprivate static final String VIEW_TREEMAP = \"treemap\";\n\n\t//Table\n\tprivate final AssetFilterControl filterControl;\n\tprivate final EnumTableFormatAdaptor<AssetTableFormat, MyAsset> tableFormat;\n\tprivate final DefaultEventTableModel<MyAsset> tableModel;\n\tprivate final EventList<MyAsset> eventList;\n\tprivate final FilterList<MyAsset> filterList;\n\tprivate final DefaultEventSelectionModel<MyAsset> selectionModel;\n\n\tpublic static final String NAME = \"assets\"; //Not to be changed!\n\n\tpublic AssetsTab(final Program program) {\n\t\tsuper(program, NAME, TabsAssets.get().assets(), Images.TOOL_ASSETS.getIcon(), false);\n\t\tlayout.setAutoCreateGaps(true);\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tJFixedToolBar jToolBar = new JFixedToolBar();\n\n\t\tjClearNew = new JButton(TabsAssets.get().clearNew(), Images.UPDATE_DONE_OK.getIcon());\n\t\tjClearNew.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tSettings.get().getTableChanged().put(NAME, new Date());\n\t\t\t\tjTable.repaint();\n\t\t\t\tjClearNew.setEnabled(false);\n\t\t\t\tprogram.saveSettings(\"Table Changed (assets cleared)\");\n\t\t\t}\n\t\t});\n\t\tjToolBar.addButton(jClearNew);\n\n\t\tjReprocessColors = new JToggleButton(TabsAssets.get().reprocessColors(), Images.TOOL_REPROCESSED.getIcon());\n\t\tjReprocessColors.setToolTipText(TabsAssets.get().reprocessColorsToolTip());\n\t\tjReprocessColors.setSelected(Settings.get().isReprocessColors());\n\t\tjReprocessColors.setActionCommand(AssetsAction.REPROCESS_COLORS.name());\n\t\tjReprocessColors.addActionListener(listener);\n\t\tjToolBar.addButton(jReprocessColors);\n\n\t\tjTreemap = new JToggleButton(TabsAssets.get().treemap(), Images.TOOL_TREE.getIcon());\n\t\tjTreemap.setToolTipText(TabsAssets.get().treemapToolTip());\n\t\tjTreemap.setActionCommand(AssetsAction.TREEMAP_VIEW.name());\n\t\tjTreemap.addActionListener(listener);\n\t\tjToolBar.addButton(jTreemap);\n\n\t\t//Table Format\n\t\ttableFormat = TableFormatFactory.assetTableFormat();\n\t\t//Backend\n\t\teventList = program.getProfileData().getAssetsEventList();\n\t\t//Sorting (per column)\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<MyAsset> sortedList = new SortedList<>(eventList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\n\t\t//Filter\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tfilterList = new FilterList<>(sortedList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\n\t\tfilterList.addListEventListener(listener);\n\t\t//Table Model\n\t\ttableModel = EventModels.createTableModel(filterList, tableFormat);\n\t\t//Table\n\t\tjTable = new JAssetTable(program, tableModel);\n\t\tjTable.setCellSelectionEnabled(true);\n\t\tjTable.setRowSelectionAllowed(true);\n\t\tjTable.setColumnSelectionAllowed(true);\n\t\t//Sorting\n\t\tTableComparatorChooser<MyAsset> comparatorChooser = TableComparatorChooser.install(jTable, sortedList, TableComparatorChooser.MULTIPLE_COLUMN_MOUSE, tableFormat);\n\t\t//Selection Model\n\t\tselectionModel = EventModels.createSelectionModel(filterList);\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\n\t\tjTable.setSelectionModel(selectionModel);\n\n\t\t//Listeners\n\t\tinstallTable(jTable);\n\t\t//Scroll\n\t\tJScrollPane jTableScroll = new JScrollPane(jTable);\n\t\t//Table Filter\n\t\tfilterControl = new AssetFilterControl(sortedList);\n\t\t//Menu\n\t\tinstallTableTool(new AssetTableMenu(), tableFormat, comparatorChooser, tableModel, jTable, filterControl, MyAsset.class);\n\n\t\tjTreemapView = new JTreemap(new JTreemap.SelectionListener() {\n\t\t\t@Override\n\t\t\tpublic void itemSelected(String group) {\n\t\t\t\tapplyGroupFilter(group);\n\t\t\t}\n\t\t});\n\t\tviewLayout = new CardLayout();\n\t\tjViewPanel = new JPanel(viewLayout);\n\t\tjViewPanel.add(jTableScroll, VIEW_TABLE);\n\t\tjViewPanel.add(jTreemapView, VIEW_TREEMAP);\n\t\tviewLayout.show(jViewPanel, VIEW_TABLE);\n\n\t\tjVolume = StatusPanel.createLabel(TabsAssets.get().totalVolume(), Images.ASSETS_VOLUME.getIcon(), AutoNumberFormat.DOUBLE);\n\t\tthis.addStatusbarLabel(jVolume);\n\n\t\tjCount = StatusPanel.createLabel(TabsAssets.get().totalCount(), Images.EDIT_ADD.getIcon(), AutoNumberFormat.ITEMS);\n\t\tthis.addStatusbarLabel(jCount);\n\n\t\tjAverage = StatusPanel.createLabel(TabsAssets.get().average(), Images.ASSETS_AVERAGE.getIcon(), AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jAverage);\n\n\t\tjReprocessed = StatusPanel.createLabel(TabsAssets.get().totalReprocessed(), Images.SETTINGS_REPROCESSING.getIcon(), AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jReprocessed);\n\n\t\tjValue = StatusPanel.createLabel(TabsAssets.get().totalValue(), Images.TOOL_VALUES.getIcon(), AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jValue);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jToolBar)\n\t\t\t\t.addComponent(jViewPanel, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jToolBar, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t.addComponent(jViewPanel, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t}\n\n\t@Override\n\tpublic void updateTags() {\n\t\tbeforeUpdateData();\n\t\ttableModel.fireTableDataChanged();\n\t\tfilterControl.refilter();\n\t\tafterUpdateData();\n\t}\n\n\t@Override\n\tpublic void clearData() { }\n\n\t@Override\n\tpublic void updateCache() {\n\t\tDate current = Settings.get().getTableChanged(NAME);\n\t\tboolean newFound = false;\n\t\ttry {\n\t\t\teventList.getReadWriteLock().readLock().lock();\n\t\t\tfor (MyAsset asset : eventList) {\n\t\t\t\tif (current.before(asset.getAdded())) {\n\t\t\t\t\tnewFound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t\tfilterControl.createCache();\n\t\tfinal boolean found = newFound;\n\t\tProgram.ensureEDT(new Runnable() {\n\t\t\t@Override\n\t\t\tpublic void run() {\n\t\t\t\tjClearNew.setEnabled(found);\n\t\t\t}\n\t\t});\n\t}\n\n\t@Override\n\tpublic Collection<LocationType> getLocations() {\n\t\ttry {\n\t\t\teventList.getReadWriteLock().readLock().lock();\n\t\t\treturn new ArrayList<>(eventList);\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t}\n\n\tpublic boolean isFiltersEmpty() {\n\t\treturn filterControl.isFiltersEmpty();\n\t}\n\n\tpublic void addFilters(final List<Filter> filters) {\n\t\tfilterControl.addFilters(filters);\n\t}\n\n\tpublic void clearFilters() {\n\t\tfilterControl.clearCurrentFilters();\n\t}\n\n\tpublic String getCurrentFilterName() {\n\t\treturn filterControl.getCurrentFilterName();\n\t}\n\n\tprivate void updateStatusbar() {\n\t\tdouble averageValue = 0;\n\t\tdouble totalValue = 0;\n\t\tlong totalCount = 0;\n\t\tdouble totalVolume = 0;\n\t\tdouble totalReprocessed = 0;\n\t\ttry {\n\t\t\tfilterList.getReadWriteLock().readLock().lock();\n\t\t\tfor (MyAsset asset : filterList) {\n\t\t\t\ttotalValue = totalValue + (asset.getDynamicPrice() * asset.getCount());\n\t\t\t\ttotalCount = totalCount + asset.getCount();\n\t\t\t\ttotalVolume = totalVolume + asset.getVolumeTotal();\n\t\t\t\ttotalReprocessed = totalReprocessed + asset.getValueReprocessed();\n\t\t\t}\n\t\t} finally {\n\t\t\tfilterList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t\tif (totalCount > 0 && totalValue > 0) {\n\t\t\taverageValue = totalValue / totalCount;\n\t\t}\n\t\tjVolume.setNumber(totalVolume);\n\t\tjCount.setNumber(totalCount);\n\t\tjAverage.setNumber(averageValue);\n\t\tjReprocessed.setNumber(totalReprocessed);\n\t\tjValue.setNumber(totalValue);\n\t}\n\n\tpublic void updateReprocessColors() {\n\t\tjReprocessColors.setSelected(Settings.get().isReprocessColors());\n\t}\n\n\t@Override\n\tpublic void tableDataChanged() {\n\t\tsuper.tableDataChanged();\n\t\tif (jTreemap.isSelected()) {\n\t\t\tupdateTreemapData();\n\t\t}\n\t}\n\n\tprivate void updateTreemapData() {\n\t\tMap<String, Double> groupValues = new HashMap<>();\n\t\ttry {\n\t\t\tfilterList.getReadWriteLock().readLock().lock();\n\t\t\tfor (MyAsset asset : filterList) {\n\t\t\t\tString group = asset.getItem().getGroup();\n\t\t\t\tif (group == null || group.isEmpty()) {\n\t\t\t\t\tgroup = \"Unknown\";\n\t\t\t\t}\n\t\t\t\tdouble value = asset.getValue();\n\t\t\t\tif (value <= 0) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tgroupValues.put(group, groupValues.getOrDefault(group, 0.0) + value);\n\t\t\t}\n\t\t} finally {\n\t\t\tfilterList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t\tjTreemapView.setItems(groupValues);\n\t}\n\n\tprivate void showTreemap(boolean show) {\n\t\tif (show) {\n\t\t\tupdateTreemapData();\n\t\t\tviewLayout.show(jViewPanel, VIEW_TREEMAP);\n\t\t} else {\n\t\t\tviewLayout.show(jViewPanel, VIEW_TABLE);\n\t\t}\n\t}\n\n\tprivate void applyGroupFilter(String group) {\n\t\tif (group == null || group.isEmpty()) {\n\t\t\treturn;\n\t\t}\n\t\tif (jTreemap.isSelected()) {\n\t\t\tjTreemap.setSelected(false);\n\t\t\tshowTreemap(false);\n\t\t}\n\t\tList<Filter> filters = new ArrayList<>();\n\t\tfor (Filter filter : filterControl.getCurrentFilters()) {\n\t\t\tif (filter == null || filter.isEmpty()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (filter.getColumn() instanceof AssetTableFormat) {\n\t\t\t\tAssetTableFormat column = (AssetTableFormat) filter.getColumn();\n\t\t\t\tif (column == AssetTableFormat.GROUP) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfilters.add(filter);\n\t\t}\n\t\tfilters.add(new Filter(Filter.LogicType.AND, AssetTableFormat.GROUP, Filter.CompareType.EQUALS, group));\n\t\tfilterControl.clearCurrentFilters();\n\t\tfilterControl.addFilters(filters);\n\t}\n\t/**\n\t * returns a new list of the filtered assets, thus the list is modifiable.\n\t * @return a list of the filtered assets.\n\t */\n\tpublic List<MyAsset> getFilteredAssets() {\n\t\treturn EventListManager.safeList(filterList);\n\t}\n\n\tprivate class AssetTableMenu implements TableMenu<MyAsset> {\n\t\t@Override\n\t\tpublic MenuData<MyAsset> getMenuData() {\n\t\t\treturn new AssetMenuData<>(selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getFilterMenu() {\n\t\t\treturn filterControl.getMenu(jTable, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getColumnMenu() {\n\t\t\treturn new JMenuColumns<>(program, tableFormat, tableModel, jTable, NAME);\n\t\t}\n\n\t\t@Override\n\t\tpublic void addInfoMenu(JPopupMenu jPopupMenu) {\n\t\t\tJMenuInfo.infoItem(jPopupMenu, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic void addToolMenu(JComponent jComponent) { }\n\t}\n\n\n\tprivate class ListenerClass implements ListEventListener<MyAsset>, ActionListener {\n\t\t@Override\n\t\tpublic void listChanged(final ListEvent<MyAsset> listChanges) {\n\t\t\tupdateStatusbar();\n\t\t\tOverviewTab overviewTab = program.getOverviewTab(false);\n\t\t\tif (overviewTab != null) {\n\t\t\t\toverviewTab.updateTable();\n\t\t\t}\n\t\t\tif (jTreemap.isSelected()) {\n\t\t\t\tupdateTreemapData();\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\tif (e.getActionCommand().equals(AssetsAction.REPROCESS_COLORS.name())) {\n\t\t\t\tboolean oldValue = Settings.get().isReprocessColors();\n\t\t\t\tboolean newValue = jReprocessColors.isSelected();\n\t\t\t\tif (oldValue != newValue) {\n\t\t\t\t\tSettings.lock(\"Reprocess Colors\");\n\t\t\t\t\tSettings.get().setReprocessColors(newValue);\n\t\t\t\t\tSettings.unlock(\"Reprocess Colors\");\n\t\t\t\t\tprogram.saveSettings(\"Reprocess Colors\");\n\t\t\t\t\tjTable.repaint();\n\t\t\t\t\tTreeTab treeTab = program.getTreeTab(false);\n\t\t\t\t\tif (treeTab != null) {\n\t\t\t\t\t\ttreeTab.updateReprocessColors();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (e.getActionCommand().equals(AssetsAction.TREEMAP_VIEW.name())) {\n\t\t\t\tshowTreemap(jTreemap.isSelected());\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate class AssetFilterControl extends FilterControl<MyAsset> {\n\n\t\tpublic AssetFilterControl(EventList<MyAsset> exportEventList) {\n\t\t\tsuper(program.getMainWindow().getFrame(),\n\t\t\t\t\tNAME,\n\t\t\t\t\ttableFormat,\n\t\t\t\t\teventList,\n\t\t\t\t\texportEventList,\n\t\t\t\t\tfilterList\n\t\t\t\t\t);\n\t\t}\n\n\t\t@Override\n\t\tprotected void updateFilters() {\n\t\t\tif (program != null) {\n\t\t\t\tOverviewTab overviewTab = program.getOverviewTab(false);\n\t\t\t\tif (overviewTab != null) {\n\t\t\t\t\toverviewTab.updateFilters();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void saveSettings(final String msg) {\n\t\t\tprogram.saveSettings(\"Assets Table: \" + msg); //Save Asset Filters and Export Settings\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/assets/JAssetTable.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.assets;\n\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport java.awt.Component;\nimport javax.swing.table.TableCellRenderer;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\n\n\npublic class JAssetTable extends JAutoColumnTable {\n\n\tprivate final DefaultEventTableModel<MyAsset> tableModel;\n\n\tpublic JAssetTable(final Program program, final DefaultEventTableModel<MyAsset> tableModel) {\n\t\tsuper(program, tableModel);\n\t\tthis.tableModel = tableModel;\n\t}\n\n\t@Override\n\tpublic Component prepareRenderer(final TableCellRenderer renderer, final int row, final int column) {\n\t\tComponent component = super.prepareRenderer(renderer, row, column);\n\t\tboolean isSelected = isCellSelected(row, column);\n\t\tMyAsset asset = tableModel.getElementAt(row);\n\t\tString columnName = (String) this.getTableHeader().getColumnModel().getColumn(column).getHeaderValue();\n\n\t\t//User set price\n\t\tif (asset.isUserPrice() && columnName.equals(AssetTableFormat.PRICE.getColumnName())) {\n\t\t\tColorSettings.configCell(component, ColorEntry.CUSTOM_PRICE, isSelected);\n\t\t\treturn component;\n\t\t}\n\t\t//User set name\n\t\tif (asset.isUserName() && columnName.equals(AssetTableFormat.NAME.getColumnName())) {\n\t\t\tColorSettings.configCell(component, ColorEntry.CUSTOM_ASSET_NAME, isSelected);\n\t\t\treturn component;\n\t\t}\n\t\t//User set location\n\t\tif (asset.getLocation().isUserLocation() && columnName.equals(AssetTableFormat.LOCATION.getColumnName())) {\n\t\t\tColorSettings.configCell(component, ColorEntry.CUSTOM_USER_LOCATION, isSelected);\n\t\t\treturn component;\n\t\t}\n\t\t//Blueprint Original\n\t\tif (asset.isBPO()\n\t\t\t\t&& asset.getItem().isBlueprint()\n\t\t\t\t&& (columnName.equals(AssetTableFormat.PRICE.getColumnName())\n\t\t\t\t|| columnName.equals(AssetTableFormat.PRICE_SELL_MIN.getColumnName())\n\t\t\t\t|| columnName.equals(AssetTableFormat.PRICE_BUY_MAX.getColumnName())\n\t\t\t\t|| columnName.equals(AssetTableFormat.NAME.getColumnName()))) {\n\t\t\tColorSettings.configCell(component, ColorEntry.GLOBAL_BPO, isSelected);\n\t\t\treturn component;\n\t\t}\n\t\t//Blueprint Copy\n\t\tif (asset.isBPC()\n\t\t\t\t&& asset.getItem().isBlueprint()\n\t\t\t\t&& (columnName.equals(AssetTableFormat.PRICE.getColumnName())\n\t\t\t\t|| columnName.equals(AssetTableFormat.PRICE_SELL_MIN.getColumnName())\n\t\t\t\t|| columnName.equals(AssetTableFormat.PRICE_BUY_MAX.getColumnName())\n\t\t\t\t|| columnName.equals(AssetTableFormat.NAME.getColumnName()))) {\n\t\t\tColorSettings.configCell(component, ColorEntry.GLOBAL_BPC, isSelected);\n\t\t\treturn component;\n\t\t}\n\n\t\t//Reprocessing Colors\n\t\tif (Settings.get().isReprocessColors() && !isSelected) {\n\t\t\t//Zero price (White)\n\t\t\tif (asset.getPriceReprocessed() == 0 || asset.getDynamicPrice() == 0) {\n\t\t\t\treturn component;\n\t\t\t}\n\t\t\t//Equal price (Yellow)\n\t\t\tboolean rowSelection = (this.isRowSelected(row) && Settings.get().isHighlightSelectedRows());\n\t\t\tif (asset.getPriceReprocessed() == asset.getDynamicPrice()) {\n\t\t\t\tColorSettings.configCell(component, ColorEntry.ASSETS_REPROCESSING_EQUAL, rowSelection, true);\n\t\t\t\treturn component;\n\t\t\t}\n\t\t\t//Reprocessed highest (Red)\n\t\t\tif (asset.getPriceReprocessed() > asset.getDynamicPrice()) {\n\t\t\t\tColorSettings.configCell(component, ColorEntry.ASSETS_REPROCESSING_REPROCES, rowSelection, true);\n\t\t\t\treturn component;\n\t\t\t}\n\t\t\t//Price highest (Green)\n\t\t\tif (asset.getPriceReprocessed() < asset.getDynamicPrice()) {\n\t\t\t\tColorSettings.configCell(component, ColorEntry.ASSETS_REPROCESSING_SELL, rowSelection, true);\n\t\t\t\treturn component;\n\t\t\t}\n\t\t}\n\t\t//Reproccessed is greater then price\n\t\tif (asset.getPriceReprocessed() > asset.getDynamicPrice() && columnName.equals(AssetTableFormat.PRICE_REPROCESSED.getColumnName())) {\n\t\t\tColorSettings.configCell(component, ColorEntry.ASSETS_REPROCESS, isSelected);\n\t\t\treturn component;\n\t\t}\n\t\t//Added date\n\t\tif (columnName.equals(AssetTableFormat.ADDED.getColumnName()) && Settings.get().getTableChanged(AssetsTab.NAME).before(asset.getAdded())) {\n\t\t\tColorSettings.configCell(component, ColorEntry.ASSETS_NEW, isSelected);\n\t\t}\n\t\treturn component;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/contracts/ContractsSeparatorTableCell.java",
    "content": "/* Glazed Lists                                                 (c) 2003-2006 */\r\n/* http://publicobject.com/glazedlists/                      publicobject.com,*/\r\n/*                                                     O'Dell Engineering Ltd.*/\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.contracts;\r\n\r\nimport ca.odell.glazedlists.SeparatorList;\r\nimport java.awt.Font;\r\nimport java.awt.event.ActionListener;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JTable;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.SeparatorTableCell;\r\nimport net.nikr.eve.jeveasset.i18n.TabsContracts;\r\n\r\n\r\npublic class ContractsSeparatorTableCell extends SeparatorTableCell<MyContractItem> {\r\n\r\n\tprivate final JLabel jName;\r\n\tprivate final JLabel jType;\r\n\r\n\tpublic ContractsSeparatorTableCell(final JTable jTable, final SeparatorList<MyContractItem> separatorList, final ActionListener actionListener) {\r\n\t\tsuper(jTable, separatorList);\r\n\r\n\t\tjName = new JLabel();\r\n\t\tFont font = jName.getFont();\r\n\t\tjName.setFont(new Font(font.getName(), Font.BOLD, font.getSize() + 1));\r\n\r\n\t\tJLabel jTypeLabel = new JLabel(TabsContracts.get().type());\r\n\t\tjTypeLabel.setFont(new Font(font.getName(), Font.BOLD, font.getSize()));\r\n\t\tjType = new JLabel();\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup()\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addComponent(jExpand)\r\n\t\t\t\t\t.addGap(10)\r\n\t\t\t\t\t.addComponent(jName, 220, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\r\n\t\t\t\t\t.addGap(10)\r\n\t\t\t\t\t.addComponent(jTypeLabel)\r\n\t\t\t\t\t.addGap(4)\r\n\t\t\t\t\t.addComponent(jType)\r\n\t\t\t\t)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addGap(2)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jExpand, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jName, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jTypeLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jType, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGap(2)\r\n\t\t);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void configure(SeparatorList.Separator<?> separator) {\r\n\t\tMyContractItem item = (MyContractItem) separator.first();\r\n\t\tif (item == null) { // handle 'late' rendering calls after this separator is invalid\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tjName.setText(item.getContract().getTitle());\r\n\t\tjType.setText(item.getContract().getTypeName());\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/contracts/ContractsTab.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.tabs.contracts;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.FilterList;\nimport ca.odell.glazedlists.ListSelection;\nimport ca.odell.glazedlists.SeparatorList;\nimport ca.odell.glazedlists.SortedList;\nimport ca.odell.glazedlists.event.ListEvent;\nimport ca.odell.glazedlists.event.ListEventListener;\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport ca.odell.glazedlists.swing.TableComparatorChooser;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Comparator;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport javax.swing.GroupLayout;\nimport javax.swing.JButton;\nimport javax.swing.JComponent;\nimport javax.swing.JMenu;\nimport javax.swing.JPopupMenu;\nimport javax.swing.JRadioButtonMenuItem;\nimport javax.swing.JScrollPane;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\nimport net.nikr.eve.jeveasset.data.api.raw.RawContract.ContractStatus;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel.JStatusLabel;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.JFixedToolBar;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabPrimary;\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter;\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuColumns;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo.AutoNumberFormat;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuUI.ContractMenuData;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.JSeparatorTable;\nimport net.nikr.eve.jeveasset.gui.shared.table.PaddingTableCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\nimport net.nikr.eve.jeveasset.i18n.TabsContracts;\nimport net.nikr.eve.jeveasset.io.local.profile.ProfileDatabase;\n\n\npublic class ContractsTab extends JMainTabPrimary {\n\n\tprivate enum ContractsAction {\n\t\tCOLLAPSE, EXPAND\n\t}\n\n\t//GUI\n\tprivate final JSeparatorTable jTable;\n\tprivate final JStatusLabel jContractCount;\n\tprivate final JStatusLabel jSellingPrice;\n\tprivate final JStatusLabel jSellingAssets;\n\tprivate final JStatusLabel jBuying;\n\tprivate final JStatusLabel jSold;\n\tprivate final JStatusLabel jBought;\n\tprivate final JStatusLabel jCollateralIssuer;\n\tprivate final JStatusLabel jCollateralAcceptor;\n\n\t//Table\n\tprivate final EventList<MyContractItem> eventList;\n\tprivate final FilterList<MyContractItem> filterList;\n\tprivate final SeparatorList<MyContractItem> separatorList;\n\tprivate final DefaultEventSelectionModel<MyContractItem> selectionModel;\n\tprivate final DefaultEventTableModel<MyContractItem> tableModel;\n\tprivate final EnumTableFormatAdaptor<ContractsTableFormat, MyContractItem> tableFormat;\n\tprivate final ContractsFilterControl filterControl;\n\n\tpublic static final String NAME = \"contracts\"; //Not to be changed!\n\n\tpublic ContractsTab(Program program) {\n\t\tsuper(program, NAME, TabsContracts.get().title(), Images.TOOL_CONTRACTS.getIcon(), true);\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t//StatusPanels must be initialized before the eventlist\n\t\tjContractCount = StatusPanel.createLabel(TabsContracts.get().contractCount(), Images.INCLUDE_CONTRACTS.getIcon(), AutoNumberFormat.LONG);\n\t\taddStatusbarLabel(jContractCount);\n\t\t\n\t\tjSellingPrice = StatusPanel.createLabel(TabsContracts.get().sellingPrice(), Images.ORDERS_SELL.getIcon(), AutoNumberFormat.ISK);\n\t\taddStatusbarLabel(jSellingPrice);\n\n\t\tjSellingAssets = StatusPanel.createLabel(TabsContracts.get().sellingAssets(), Images.TOOL_VALUES.getIcon(), AutoNumberFormat.ISK);\n\t\taddStatusbarLabel(jSellingAssets);\n\n\t\tjBuying = StatusPanel.createLabel(TabsContracts.get().buying(), Images.ORDERS_BUY.getIcon(), AutoNumberFormat.ISK);\n\t\taddStatusbarLabel(jBuying);\n\n\t\tjSold = StatusPanel.createLabel(TabsContracts.get().sold(), Images.ORDERS_SOLD.getIcon(), AutoNumberFormat.ISK);\n\t\taddStatusbarLabel(jSold);\n\n\t\tjBought = StatusPanel.createLabel(TabsContracts.get().bought(), Images.ORDERS_BOUGHT.getIcon(), AutoNumberFormat.ISK);\n\t\taddStatusbarLabel(jBought);\n\n\t\tjCollateralIssuer = StatusPanel.createLabel(TabsContracts.get().collateralIssuer(), Images.ORDERS_ESCROW.getIcon(), AutoNumberFormat.ISK);\n\t\taddStatusbarLabel(jCollateralIssuer);\n\n\t\tjCollateralAcceptor = StatusPanel.createLabel(TabsContracts.get().collateralAcceptor(), Images.UPDATE_WORKING.getIcon(), AutoNumberFormat.ISK);\n\t\taddStatusbarLabel(jCollateralAcceptor);\n\n\t\tJFixedToolBar jToolBar = new JFixedToolBar();\n\n\t\tjToolBar.addGlue();\n\n\t\tJButton jCollapse = new JButton(TabsContracts.get().collapse(), Images.MISC_COLLAPSED.getIcon());\n\t\tjCollapse.setActionCommand(ContractsAction.COLLAPSE.name());\n\t\tjCollapse.addActionListener(listener);\n\t\tjToolBar.addButton(jCollapse);\n\n\t\tJButton jExpand = new JButton(TabsContracts.get().expand(), Images.MISC_EXPANDED.getIcon());\n\t\tjExpand.setActionCommand(ContractsAction.EXPAND.name());\n\t\tjExpand.addActionListener(listener);\n\t\tjToolBar.addButton(jExpand);\n\n\t\t//Table Format\n\t\ttableFormat = TableFormatFactory.contractsTableFormat();\n\t\t//Backend\n\t\teventList = program.getProfileData().getContractItemEventList();\n\t\t//Sorting (per column)\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<MyContractItem> sortedListColumn = new SortedList<>(eventList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\n\t\t//Sorting Separator (ensure export always has the right order)\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<MyContractItem> sortedListSeparator = new SortedList<>(sortedListColumn, new SeparatorComparator());\n\t\teventList.getReadWriteLock().readLock().unlock();\n\n\t\t//Filter\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tfilterList = new FilterList<>(sortedListColumn);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t//Statusbar updater\n\t\tfilterList.addListEventListener(listener);\n\t\t//Separator\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tseparatorList = new SeparatorList<>(filterList, new SeparatorComparator(), 1, Integer.MAX_VALUE);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t//Table Model\n\t\ttableModel = EventModels.createTableModel(separatorList, tableFormat);\n\t\t//Table\n\t\tjTable = new JContractsTable(program, tableModel, separatorList);\n\t\tjTable.setSeparatorRenderer(new ContractsSeparatorTableCell(jTable, separatorList, listener));\n\t\tjTable.setSeparatorEditor(new ContractsSeparatorTableCell(jTable, separatorList, listener));\n\t\tjTable.setCellSelectionEnabled(true);\n\t\tPaddingTableCellRenderer.install(jTable, 3);\n\t\t//Sorting\n\t\tTableComparatorChooser<MyContractItem> comparatorChooser = TableComparatorChooser.install(jTable, sortedListColumn, TableComparatorChooser.MULTIPLE_COLUMN_MOUSE, tableFormat);\n\t\tcomparatorChooser.addSortActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tseparatorList.setComparator(new SeparatorComparator(comparatorChooser));\n\t\t\t}\n\t\t});\n\t\t//Selection Model\n\t\tselectionModel = EventModels.createSelectionModel(separatorList);\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\n\t\tjTable.setSelectionModel(selectionModel);\n\t\t//Listeners\n\t\tinstallTable(jTable);\n\t\t//Scroll\n\t\tJScrollPane jTableScroll = new JScrollPane(jTable);\n\t\t//Table Filter\n\t\tfilterControl = new ContractsFilterControl(sortedListSeparator);\n\t\t//Menu\n\t\tinstallTableTool(new ContractsTableMenu(), tableFormat, comparatorChooser, tableModel, jTable, filterControl, MyContractItem.class);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jToolBar, jToolBar.getMinimumSize().width, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jToolBar, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t}\n\n\t@Override\n\tpublic void clearData() {\n\t\tfilterControl.clearCache();\n\t}\n\n\t@Override\n\tpublic void updateCache() {\n\t\tfilterControl.createCache();\n\t}\n\n\t@Override\n\tpublic Collection<LocationType> getLocations() {\n\t\treturn new ArrayList<>(); //LocationsType\n\t}\n\n\tprivate MyContract getSelectedContract() {\n\t\tint index = jTable.getSelectedRow();\n\t\tif (index < 0 || index >= tableModel.getRowCount()) {\n\t\t\treturn null;\n\t\t}\n\t\tObject o = tableModel.getElementAt(index);\n\t\tif (o instanceof SeparatorList.Separator<?>) {\n\t\t\tSeparatorList.Separator<?> separator = (SeparatorList.Separator<?>) o;\n\t\t\tMyContractItem item = (MyContractItem) separator.first();\n\t\t\treturn item.getContract();\n\t\t} else if (o instanceof MyContractItem) {\n\t\t\tMyContractItem item = (MyContractItem) o;\n\t\t\treturn item.getContract();\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic void addFilters(final List<Filter> filters) {\n\t\tfilterControl.addFilters(filters);\n\t}\n\n\tprivate class ContractsTableMenu implements TableMenu<MyContractItem> {\n\n\t\t@Override\n\t\tpublic MenuData<MyContractItem> getMenuData() {\n\t\t\treturn new ContractMenuData(selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getFilterMenu() {\n\t\t\treturn filterControl.getMenu(jTable, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getColumnMenu() {\n\t\t\treturn new JMenuColumns<>(program, tableFormat, tableModel, jTable, NAME);\n\t\t}\n\n\t\t@Override\n\t\tpublic void addInfoMenu(JPopupMenu jPopupMenu) {\n\t\t\tJMenuInfo.contracts(program, jPopupMenu, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic void addToolMenu(JComponent jComponent) {\n\t\t\tMyContract contract = getSelectedContract();\n\t\t\tboolean enabled = contract != null && !contract.isESI() && selectionModel.getSelected().size() == 1;\n\n\t\t\tJMenu jStatus = new JMenu(TabsContracts.get().status());\n\t\t\tjStatus.setIcon(Images.MISC_STATUS.getIcon());\n\t\t\tif (!enabled) {\n\t\t\t\tjStatus.setIcon(jStatus.getDisabledIcon());\n\t\t\t}\n\t\t\tjComponent.add(jStatus);\n\n\t\t\tJRadioButtonMenuItem jMenuItem;\n\t\t\tfor (ContractStatus status : ContractStatus.values()) {\n\t\t\t\tjMenuItem = new JRadioButtonMenuItem(MyContract.getStatusName(status));\n\t\t\t\tjMenuItem.setEnabled(enabled);\n\t\t\t\tjMenuItem.setSelected(enabled && status == contract.getStatus());\n\t\t\t\tjMenuItem.addActionListener(new ActionListener() {\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\t\tif (contract == null || contract.isESI() || status == contract.getStatus()) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tboolean before = contract.isOpen();\n\t\t\t\t\t\tcontract.setStatus(status);\n\t\t\t\t\t\tif (before != contract.isOpen()) {\n\t\t\t\t\t\t\tprogram.updateEventListsWithProgress();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttableModel.fireTableDataChanged();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogram.saveTable(ProfileDatabase.Table.CONTRACTS);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tjStatus.add(jMenuItem);\n\t\t\t}\n\t\t\tMenuManager.addSeparator(jComponent);\n\t\t}\n\t}\n\n\tprivate class ListenerClass implements ActionListener, ListEventListener<MyContractItem> {\n\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (ContractsAction.COLLAPSE.name().equals(e.getActionCommand())) {\n\t\t\t\tjTable.expandSeparators(false);\n\t\t\t}\n\t\t\tif (ContractsAction.EXPAND.name().equals(e.getActionCommand())) {\n\t\t\t\tjTable.expandSeparators(true);\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void listChanged(final ListEvent<MyContractItem> listChanges) {\n\t\t\tdouble contractCount = 0;\n\t\t\tdouble sellingPrice = 0;\n\t\t\tdouble sellingAssets = 0;\n\t\t\tdouble buying = 0;\n\t\t\tdouble sold = 0;\n\t\t\tdouble bought = 0;\n\t\t\tdouble collateralIssuer = 0;\n\t\t\tdouble collateralAcceptor = 0;\n\t\t\ttry {\n\t\t\t\tfilterList.getReadWriteLock().readLock().lock();\n\t\t\t\tSet<MyContract> contracts = new HashSet<>();\n\t\t\t\tfor (MyContractItem contractItem : filterList) {\n\t\t\t\t\tcontracts.add(contractItem.getContract());\n\t\t\t\t\tMyContract contract = contractItem.getContract();\n\t\t\t\t\tif (contract.isIgnoreContract()) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tboolean isIssuer = contract.isForCorp() ? program.getOwners().keySet().contains(contract.getIssuerCorpID()) : program.getOwners().keySet().contains(contract.getIssuerID());\n\t\t\t\t\tif (isIssuer && //Issuer\n\t\t\t\t\t\t\tcontract.isOpen() //Not completed\n\t\t\t\t\t\t\t&& contractItem.isIncluded()) { //Selling\n\t\t\t\t\t\tsellingAssets = sellingAssets + contractItem.getDynamicPrice() * contractItem.getQuantity();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontractCount = contracts.size();\n\t\t\t\tfor (MyContract contract : contracts) {\n\t\t\t\t\tboolean isIssuer = contract.isForCorp() ? program.getOwners().keySet().contains(contract.getIssuerCorpID()) : program.getOwners().keySet().contains(contract.getIssuerID());\n\t\t\t\t\tboolean isAcceptor = contract.getAcceptorID() > 0 && program.getOwners().keySet().contains(contract.getAcceptorID());\n\t\t\t\t\tif (contract.isCourierContract()) {\n\t\t\t\t\t\tif (isIssuer && (contract.isInProgress() || contract.isOpen())) { //Collateral Issuer\n\t\t\t\t\t\t\tcollateralIssuer = collateralIssuer + contract.getCollateral();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (isAcceptor && contract.isInProgress()) { //Collateral Acceptor\n\t\t\t\t\t\t\tcollateralAcceptor = collateralAcceptor + contract.getCollateral();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (contract.isIgnoreContract()) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tif (isIssuer //Issuer\n\t\t\t\t\t\t\t&& contract.isOpen() //Not completed\n\t\t\t\t\t\t\t) { //Selling/Buying\n\t\t\t\t\t\tsellingPrice = sellingPrice + contract.getPrice(); //Positive\n\t\t\t\t\t\tbuying = buying - contract.getReward(); //Negative\n\t\t\t\t\t} else if (contract.isCompletedSuccessful()) { //Completed\n\t\t\t\t\t\tif (isIssuer) { //Sold/Bought\n\t\t\t\t\t\t\tsold = sold + contract.getPrice(); //Positive\n\t\t\t\t\t\t\tbought = bought - contract.getReward(); //Negative\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (isAcceptor) { //Reverse of the above\n\t\t\t\t\t\t\tsold = sold + contract.getReward(); //Positive\n\t\t\t\t\t\t\tbought = bought - contract.getPrice(); //Negative\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tfilterList.getReadWriteLock().readLock().unlock();\n\t\t\t}\n\t\t\tjContractCount.setNumber(contractCount);\n\t\t\tjSellingPrice.setNumber(sellingPrice);\n\t\t\tjSellingAssets.setNumber(sellingAssets);\n\t\t\tjSold.setNumber(sold);\n\t\t\tjBuying.setNumber(buying);\n\t\t\tjBought.setNumber(bought);\n\t\t\tjCollateralIssuer.setNumber(collateralIssuer);\n\t\t\tjCollateralAcceptor.setNumber(collateralAcceptor);\n\t\t}\n\t}\n\n\tpublic class SeparatorComparator implements Comparator<MyContractItem> {\n\n\t\tprivate final List<Comparator<MyContractItem>> comparators = new ArrayList<>();\n\n\t\tpublic SeparatorComparator() { }\n\n\t\t@SuppressWarnings({\"unchecked\", \"rawtypes\"})\n\t\tpublic SeparatorComparator(TableComparatorChooser<MyContractItem> install) {\n\t\t\tif (install == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tMap<Integer, ContractsTableFormat> formats = new HashMap<>();\n\t\t\tfor (ContractsTableFormat format : ContractsTableFormat.values()) {\n\t\t\t\tformats.put(format.ordinal(), format);\n\t\t\t}\n\t\t\tList<Integer> sortingColumns = install.getSortingColumns();\n\t\t\tfor (Integer index : sortingColumns) {\n\t\t\t\tContractsTableFormat format = formats.get(index);\n\t\t\t\tif (!format.isContract()) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tboolean reverse = install.isColumnReverse(index);\n\t\t\t\tList<Comparator> columnComparators = install.getComparatorsForColumn(index);\n\t\t\t\tint comparatorIndex = install.getColumnComparatorIndex(index);\n\t\t\t\tif (comparatorIndex < 0 || comparatorIndex >= columnComparators.size()) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tComparator comparator;\n\t\t\t\tif (reverse) {\n\t\t\t\t\tcomparator = columnComparators.get(comparatorIndex).reversed();\n\t\t\t\t} else {\n\t\t\t\t\tcomparator = columnComparators.get(comparatorIndex);\n\t\t\t\t}\n\t\t\t\tthis.comparators.add(comparator);\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic int compare(final MyContractItem o1, final MyContractItem o2) {\n\t\t\tInteger l1 = o1.getContract().getContractID();\n\t\t\tInteger l2 = o2.getContract().getContractID();\n\t\t\tint group = l1.compareTo(l2);\n\t\t\tif (group == 0) {\n\t\t\t\treturn group;\n\t\t\t}\n\t\t\tfor (Comparator<MyContractItem> comparator : comparators) {\n\t\t\t\tint order = comparator.compare(o1, o2);\n\t\t\t\tif (order != 0) {\n\t\t\t\t\treturn order;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn group;\n\t\t}\n\t}\n\n\tprivate class ContractsFilterControl extends FilterControl<MyContractItem> {\n\n\t\tpublic ContractsFilterControl(EventList<MyContractItem> exportEventList) {\n\t\t\tsuper(program.getMainWindow().getFrame(),\n\t\t\t\t\tNAME,\n\t\t\t\t\ttableFormat,\n\t\t\t\t\teventList,\n\t\t\t\t\texportEventList,\n\t\t\t\t\tfilterList\n\t\t\t\t\t);\n\t\t}\n\n\t\t@Override\n\t\tprotected void afterFilter() {\n\t\t\tjTable.loadExpandedState();\n\t\t}\n\n\t\t@Override\n\t\tprotected void beforeFilter() {\n\t\t\tjTable.saveExpandedState();\n\t\t}\n\n\t\t@Override\n\t\tpublic void saveSettings(final String msg) {\n\t\t\tprogram.saveSettings(\"Contracts Table: \" + msg); //Save Contract Filters and Export Settings\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/contracts/ContractsTableFormat.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.contracts;\r\n\r\nimport java.util.Comparator;\r\nimport java.util.Date;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.LongInt;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Runs;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.YesNo;\r\nimport net.nikr.eve.jeveasset.i18n.TabsContracts;\r\n\r\n\r\npublic enum ContractsTableFormat implements EnumTableColumn<MyContractItem> {\r\n\tNAME(String.class, false) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnName();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getName();\r\n\t\t}\r\n\t},\r\n\tTITLE(String.class, true) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnTitle();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getContract().getTitle();\r\n\t\t}\r\n\t},\r\n\tTYPE(String.class, true) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnType();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getContract().getTypeName();\r\n\t\t}\r\n\t},\r\n\tSTATUS(String.class, true) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnStatus();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getContract().getStatusFormatted();\r\n\t\t}\r\n\t},\r\n\tAVAILABILITY(String.class, true) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnAvailability();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getContract().getAvailabilityFormatted();\r\n\t\t}\r\n\t},\r\n\tINCLUDED(String.class, false) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnIncluded();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getIncluded();\r\n\t\t}\r\n\t},\r\n\tQUANTITY(Long.class, false) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnQuantity();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getQuantity();\r\n\t\t}\r\n\t},\r\n\tSINGLETON(String.class, false) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnSingleton();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getSingleton();\r\n\t\t}\r\n\t},\r\n\tTYPE_ID(Integer.class, false) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnTypeID();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getTypeID();\r\n\t\t}\r\n\t},\r\n\tVOLUME(Double.class, true) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnVolume();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getContract().getVolume();\r\n\t\t}\r\n\t},\r\n\tRuns(Runs.class, false) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnRuns();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsContracts.get().columnRunsToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn new Runs(from.getRuns());\r\n\t\t}\r\n\t},\r\n\tME(Integer.class, false) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnMaterialEfficiency();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsContracts.get().columnMaterialEfficiencyToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getME();\r\n\t\t}\r\n\t},\r\n\tTE(Integer.class, false) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnTimeEfficiency();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsContracts.get().columnTimeEfficiencyToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getTE();\r\n\t\t}\r\n\t},\r\n\tMARKET_PRICE(Double.class, false) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnMarketPrice();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getDynamicPrice();\r\n\t\t}\r\n\t},\r\n\tPRICE_REPROCESSED(Double.class, false) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnPriceReprocessed();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsContracts.get().columnPriceReprocessedToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getItem().getPriceReprocessed();\r\n\t\t}\r\n\t},\r\n\tPRICE_MANUFACTURING(Double.class, false) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnPriceManufacturing();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsContracts.get().columnPriceManufacturingToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getItem().getPriceManufacturing();\r\n\t\t}\r\n\t},\r\n\tMARKET_VALUE(Double.class, false) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnMarketValue();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsContracts.get().columnMarketValueToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getDynamicPrice() * from.getQuantity();\r\n\t\t}\r\n\t},\r\n\tREPROCESSED_VALUE(Double.class, false) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnValueReprocessed();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsContracts.get().columnValueReprocessedToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getItem().getPriceReprocessed() * from.getQuantity();\r\n\t\t}\r\n\t},\r\n\tMANUFACTURING_VALUE(Double.class, false) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnValueManufacturing();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsContracts.get().columnValueManufacturingToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getItem().getPriceManufacturing() * from.getQuantity();\r\n\t\t}\r\n\t},\r\n\tPRICE(Double.class, true) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnPrice();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getContract().getPrice();\r\n\t\t}\r\n\t},\r\n\tBUYOUT(Double.class, true) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnBuyout();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getContract().getBuyout();\r\n\t\t}\r\n\t},\r\n\tCOLLATERAL(Double.class, true) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnCollateral();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getContract().getCollateral();\r\n\t\t}\r\n\t},\r\n\tNUM_DAYS(Integer.class, true) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnNumDays();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getContract().getDaysToComplete();\r\n\t\t}\r\n\t},\r\n\tREWARD(Double.class, true) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnReward();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getContract().getReward();\r\n\t\t}\r\n\t},\r\n\tFOR_CORP(YesNo.class, true) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnForCorp();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn YesNo.get(from.getContract().isForCorp());\r\n\t\t}\r\n\t},\r\n\tISSUER(String.class, true) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnIssuer();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getContract().getIssuer();\r\n\t\t}\r\n\t},\r\n\tISSUER_CORP(String.class, true) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnIssuerCorp();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getContract().getIssuerCorp();\r\n\t\t}\r\n\t},\r\n\tASSIGNEE(String.class, true) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnAssignee();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getContract().getAssignee();\r\n\t\t}\r\n\t},\r\n\tACCEPTOR(String.class, true) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnAcceptor();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getContract().getAcceptor();\r\n\t\t}\r\n\t},\r\n\tOWNED(YesNo.class, true) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnOwned();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsContracts.get().columnOwnedToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn YesNo.get(from.getContract().isOwned());\r\n\t\t}\r\n\t},\r\n\tSTART_STATION(String.class, true) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnStartStation();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getContract().getStartLocation();\r\n\t\t}\r\n\t},\r\n\tEND_STATION(String.class, true) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnEndStation();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getContract().getEndLocation();\r\n\t\t}\r\n\t},\r\n\tISSUED_DATE(Date.class, true) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnIssued();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getContract().getDateIssued();\r\n\t\t}\r\n\t},\r\n\tEXPIRED_DATE(Date.class, true) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnExpired();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getContract().getDateExpired();\r\n\t\t}\r\n\t},\r\n\tACCEPTED_DATE(Date.class, true) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnAccepted();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getContract().getDateAccepted();\r\n\t\t}\r\n\t},\r\n\tCOMPLETED_DATE(Date.class, true) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnCompleted();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getContract().getDateCompleted();\r\n\t\t}\r\n\t},\r\n\tCONTRACT_ID(Integer.class, true) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnContractID();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn from.getContract().getContractID();\r\n\t\t}\r\n\t},\r\n\tRECORD_ID(LongInt.class, false) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnRecordID();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn new LongInt(from.getRecordID());\r\n\t\t}\r\n\t},\r\n\tITEM_ID(LongInt.class, false) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsContracts.get().columnItemID();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyContractItem from) {\r\n\t\t\treturn new LongInt(from.getItemID());\r\n\t\t}\r\n\t};\r\n\r\n\tprivate final Class<?> type;\r\n\tprivate final boolean contract;\r\n\tprivate final Comparator<?> comparator;\r\n\r\n\tprivate ContractsTableFormat(final Class<?> type, boolean contract) {\r\n\t\tthis.type = type;\r\n\t\tthis.contract = contract;\r\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\r\n\t}\r\n\t@Override\r\n\tpublic Class<?> getType() {\r\n\t\treturn type;\r\n\t}\r\n\t@Override\r\n\tpublic Comparator<?> getComparator() {\r\n\t\treturn comparator;\r\n\t}\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn getColumnName();\r\n\t}\r\n\tpublic boolean isContract() {\r\n\t\treturn contract;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/contracts/JContractsTable.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.contracts;\r\n\r\nimport ca.odell.glazedlists.SeparatorList;\r\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\r\nimport java.awt.Component;\r\nimport javax.swing.table.TableCellRenderer;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.JSeparatorTable;\r\n\r\n\r\npublic class JContractsTable extends JSeparatorTable {\r\n\r\n\tprivate final DefaultEventTableModel<MyContractItem> tableModel;\r\n\r\n\tpublic JContractsTable(final Program program, final DefaultEventTableModel<MyContractItem> tableModel, SeparatorList<?> separatorList) {\r\n\t\tsuper(program, tableModel, separatorList);\r\n\t\tthis.tableModel = tableModel;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Component prepareRenderer(final TableCellRenderer renderer, final int row, final int column) {\r\n\t\tComponent component = super.prepareRenderer(renderer, row, column);\r\n\t\tboolean isSelected = isCellSelected(row, column);\r\n\t\tObject object = tableModel.getElementAt(row);\r\n\t\tString columnName = (String) this.getTableHeader().getColumnModel().getColumn(column).getHeaderValue();\r\n\r\n\t\tif (object instanceof MyContractItem) {\r\n\t\t\tMyContractItem item = (MyContractItem) object;\r\n\t\t\tif (!item.getContract().isCourierContract() && item.getTypeID() == 0) {\r\n\t\t\t\tColorSettings.configCell(component, ColorEntry.GLOBAL_ENTRY_INVALID, isSelected);\r\n\t\t\t} else if (columnName.equals(ContractsTableFormat.NAME.getColumnName())) {\r\n\t\t\t\tif (item.getContract().isCourierContract()) {\r\n\t\t\t\t\tColorSettings.configCell(component, ColorEntry.CONTRACTS_COURIER, isSelected);\r\n\t\t\t\t} else if (item.isIncluded()) {\r\n\t\t\t\t\tColorSettings.configCell(component, ColorEntry.CONTRACTS_INCLUDED, isSelected);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tColorSettings.configCell(component, ColorEntry.CONTRACTS_EXCLUDED, isSelected);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//User set location\r\n\t\t\tif ((item.getContract().getStartLocation() != null && item.getContract().getStartLocation().isUserLocation() && columnName.equals(ContractsTableFormat.START_STATION.getColumnName()))\r\n\t\t\t\t\t|| (item.getContract().getEndLocation() != null && item.getContract().getEndLocation().isUserLocation() && columnName.equals(ContractsTableFormat.END_STATION.getColumnName()))) {\r\n\t\t\t\tColorSettings.configCell(component, ColorEntry.CUSTOM_USER_LOCATION, isSelected);\r\n\t\t\t\treturn component;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn component;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/items/ItemTableFormat.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.items;\r\n\r\nimport java.util.Comparator;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.i18n.TabsItems;\r\n\r\n\r\npublic enum ItemTableFormat implements EnumTableColumn<Item> {\r\n\tNAME(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsItems.get().columnName();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Item from) {\r\n\t\t\treturn from.getTypeName();\r\n\t\t}\r\n\t},\r\n\tGROUP(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsItems.get().columnGroup();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Item from) {\r\n\t\t\treturn from.getGroup();\r\n\t\t}\r\n\t},\r\n\tCATEGORY(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsItems.get().columnCategory();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Item from) {\r\n\t\t\treturn from.getCategory();\r\n\t\t}\r\n\t},\r\n\tSLOT(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsItems.get().columnSlot();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Item from) {\r\n\t\t\treturn from.getSlot();\r\n\t\t}\r\n\t},\r\n\tCHARGE_SIZE(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsItems.get().columnChargeSize();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Item from) {\r\n\t\t\treturn from.getChargeSize();\r\n\t\t}\r\n\t},\r\n\tPRICE_BASE(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsItems.get().columnPriceBase();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Item from) {\r\n\t\t\treturn from.getPriceBase();\r\n\t\t}\r\n\t},\r\n\tPRICE_REPROCESSED(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsItems.get().columnPriceReprocessed();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Item from) {\r\n\t\t\treturn from.getPriceReprocessed();\r\n\t\t}\r\n\t},\r\n\tPRICE_MANUFACTURING(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsItems.get().columnPriceManufacturing();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsItems.get().columnPriceManufacturingToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Item from) {\r\n\t\t\treturn from.getItem().getPriceManufacturing();\r\n\t\t}\r\n\t},\r\n\tMETA(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsItems.get().columnMeta();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Item from) {\r\n\t\t\treturn from.getMeta();\r\n\t\t}\r\n\t},\r\n\tTECH(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsItems.get().columnTech();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Item from) {\r\n\t\t\treturn from.getTech();\r\n\t\t}\r\n\t},\r\n\tVOLUME(Float.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsItems.get().columnVolume();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Item from) {\r\n\t\t\treturn from.getVolume();\r\n\t\t}\r\n\t},\r\n\tVOLUME_PACKAGED(Float.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsItems.get().columnVolumePackaged();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Item from) {\r\n\t\t\treturn from.getVolumePackaged();\r\n\t\t}\r\n\t},\r\n\tTYPE_ID(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsItems.get().columnTypeID();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Item from) {\r\n\t\t\treturn from.getTypeID();\r\n\t\t}\r\n\t};\r\n\tprivate final Class<?> type;\r\n\tprivate final Comparator<?> comparator;\r\n\tprivate ItemTableFormat(final Class<?> type) {\r\n\t\tthis.type = type;\r\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\r\n\t}\r\n\t@Override\r\n\tpublic Class<?> getType() {\r\n\t\treturn type;\r\n\t}\r\n\t@Override\r\n\tpublic Comparator<?> getComparator() {\r\n\t\treturn comparator;\r\n\t}\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn getColumnName();\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/items/ItemsTab.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.items;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.FilterList;\nimport ca.odell.glazedlists.ListSelection;\nimport ca.odell.glazedlists.SortedList;\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport ca.odell.glazedlists.swing.TableComparatorChooser;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport javax.swing.JComponent;\nimport javax.swing.JMenu;\nimport javax.swing.JPopupMenu;\nimport javax.swing.JScrollPane;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabPrimary;\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuColumns;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\nimport net.nikr.eve.jeveasset.i18n.TabsItems;\n\n\npublic class ItemsTab extends JMainTabPrimary {\n\n\tprivate final JAutoColumnTable jTable;\n\n\t//Table\n\tprivate final ItemsFilterControl filterControl;\n\tprivate final EnumTableFormatAdaptor<ItemTableFormat, Item> tableFormat;\n\tprivate final DefaultEventTableModel<Item> tableModel;\n\tprivate final FilterList<Item> filterList;\n\tprivate final EventList<Item> eventList;\n\tprivate final DefaultEventSelectionModel<Item> selectionModel;\n\n\tpublic static final String NAME = \"items\"; //Not to be changed!\n\n\tpublic ItemsTab(final Program program) {\n\t\tsuper(program, NAME, TabsItems.get().items(), Images.TOOL_ITEMS.getIcon(), true);\n\n\t\t//Table Format\n\t\ttableFormat = TableFormatFactory.itemTableFormat();\n\t\t//Backend\n\t\teventList = EventListManager.create();\n\t\t//Sorting (per column)\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<Item> sortedList = new SortedList<>(eventList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t//Filter\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tfilterList = new FilterList<>(sortedList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\n\t\t//Table Model\n\t\ttableModel = EventModels.createTableModel(filterList, tableFormat);\n\t\t//Table\n\t\tjTable = new JAutoColumnTable(program, tableModel);\n\t\tjTable.setCellSelectionEnabled(true);\n\t\t//Sorting\n\t\tTableComparatorChooser<Item> comparatorChooser = TableComparatorChooser.install(jTable, sortedList, TableComparatorChooser.MULTIPLE_COLUMN_MOUSE, tableFormat);\n\t\t//Selection Model\n\t\tselectionModel = EventModels.createSelectionModel(filterList);\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\n\t\tjTable.setSelectionModel(selectionModel);\n\t\t//Listeners\n\t\tinstallTable(jTable);\n\t\t//Scroll\n\t\tJScrollPane jTableScroll = new JScrollPane(jTable);\n\t\t//Table Filter\n\t\tfilterControl = new ItemsFilterControl(sortedList);\n\t\t//Menu\n\t\tinstallTableTool(new ItemTableMenu(), tableFormat, comparatorChooser, tableModel, jTable, filterControl, Item.class);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\n\t\ttry {\n\t\t\teventList.getReadWriteLock().writeLock().lock();\n\t\t\teventList.clear();\n\t\t\teventList.addAll(StaticData.get().getItems().values());\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t}\n\n\t@Override\n\tpublic void clearData() {\n\t\tfilterControl.clearCache();\n\t}\n\n\t@Override\n\tpublic void updateCache() {\n\t\tfilterControl.createCache();\n\t}\n\n\t@Override\n\tpublic Collection<LocationType> getLocations() {\n\t\treturn new ArrayList<>(); //No Location\n\t}\n\n\tprivate class ItemTableMenu implements TableMenu<Item> {\n\t\t@Override\n\t\tpublic MenuData<Item> getMenuData() {\n\t\t\treturn new MenuData<>(selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getFilterMenu() {\n\t\t\treturn filterControl.getMenu(jTable, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getColumnMenu() {\n\t\t\treturn new JMenuColumns<>(program, tableFormat, tableModel, jTable, NAME);\n\t\t}\n\n\t\t@Override\n\t\tpublic void addInfoMenu(JPopupMenu jPopupMenu) { }\n\n\t\t@Override\n\t\tpublic void addToolMenu(JComponent jComponent) { }\n\t}\n\n\tprivate class ItemsFilterControl extends FilterControl<Item> {\n\n\t\tpublic ItemsFilterControl(SortedList<Item> exportEventList) {\n\t\t\tsuper(program.getMainWindow().getFrame(),\n\t\t\t\t\tNAME,\n\t\t\t\t\ttableFormat,\n\t\t\t\t\teventList,\n\t\t\t\t\texportEventList,\n\t\t\t\t\tfilterList\n\t\t\t\t\t);\n\t\t}\n\n\t\t@Override\n\t\tpublic void saveSettings(final String msg) {\n\t\t\tprogram.saveSettings(\"Items Table: \" + msg); //Save Item Filters and Export Settings\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/jobs/IndustryJobTableFormat.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.jobs;\n\nimport java.util.Comparator;\nimport java.util.Date;\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Duration;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.YesNo;\nimport net.nikr.eve.jeveasset.i18n.TabsJobs;\n\n\npublic enum IndustryJobTableFormat implements EnumTableColumn<MyIndustryJob> {\n\tSTATE(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnState();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getStatusFormatted();\n\t\t}\n\t},\n\tACTIVITY(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnActivity();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getActivity();\n\t\t}\n\t},\n\tNAME(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnName();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getName();\n\t\t}\n\t},\n\tGROUP(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnGroup();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getItem().getGroup();\n\t\t}\n\t},\n\tOWNER(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnOwner();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getOwnerName();\n\t\t}\n\t},\n\tINSTALLER(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnInstaller();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getInstaller();\n\t\t}\n\t},\n\tOWNED(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnOwned();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsJobs.get().columnOwnedToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn YesNo.get(from.isOwned());\n\t\t}\n\t},\n\tCOMPLETED_CHARACTER(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnCompletedCharacter();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getCompletedCharacter();\n\t\t}\n\t},\n\tLOCATION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnLocation();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getLocation().getLocation();\n\t\t}\n\t},\n\tSYSTEM(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnSystem();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getLocation().getSystem();\n\t\t}\n\t},\n\tCONSTELLATION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnConstellation();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getLocation().getConstellation();\n\t\t}\n\t},\n\tREGION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnRegion();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getLocation().getRegion();\n\t\t}\n\t},\n\tSTART_DATE(Date.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnStartDate();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getStartDate();\n\t\t}\n\t},\n\tEND_DATE(Date.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnEndDate();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getEndDate();\n\t\t}\n\t},\n\tCOMPLETED_DATE(Date.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnCompletedDate();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getCompletedDate();\n\t\t}\n\t},\n\tTIME_LEFT(Duration.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnTimeLeft();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getTimeLeft();\n\t\t}\n\t},\n\tPAUSE_DATE(Date.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnPauseDate();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getPauseDate();\n\t\t}\n\t},\n\tRUNS(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnRuns();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getRuns();\n\t\t}\n\t},\n\tOUTPUT_COUNT(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnOutputCount();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getOutputCount();\n\t\t}\n\t},\n\tOUTPUT_VALUE(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnOutputValue();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getOutputValue();\n\t\t}\n\t},\n\tOUTPUT_VOLUME(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnOutputVolume();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsJobs.get().columnOutputVolumeToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getOutputVolume();\n\t\t}\n\t},\n\tOUTPUT_TYPE(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnOutputType();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getOutputItem().getTypeName();\n\t\t}\n\t},\n\tOUTPUT_GROUP(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnOutputGroup();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getOutputItem().getGroup();\n\t\t}\n\t},\n\tOUTPUT_CATEGORY(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnOutputCategory();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getOutputItem().getCategory();\n\t\t}\n\t},\n\tBPO(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnBPO();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\tif (from.isBPC()) {\n\t\t\t\treturn TabsJobs.get().bpc();\n\t\t\t} else {\n\t\t\t\treturn TabsJobs.get().bpo();\n\t\t\t}\n\t\t}\n\t},\n\tMATERIAL_EFFICIENCY(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnMaterialEfficiency();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getMaterialEfficiency();\n\t\t}\n\t},\n\tTIME_EFFICIENCY(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnTimeEfficiency();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getTimeEfficiency();\n\t\t}\n\t},\n\tCOST(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnCost();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getCost();\n\t\t}\n\t},\n\tJOB_ID(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsJobs.get().columnJobID();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyIndustryJob from) {\n\t\t\treturn from.getJobID();\n\t\t}\n\t\t@Override\n\t\tpublic boolean isShowDefault() {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tprivate final Class<?> type;\n\tprivate final Comparator<?> comparator;\n\tprivate IndustryJobTableFormat(final Class<?> type) {\n\t\tthis.type = type;\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\n\t}\n\t@Override\n\tpublic Class<?> getType() {\n\t\treturn type;\n\t}\n\t@Override\n\tpublic Comparator<?> getComparator() {\n\t\treturn comparator;\n\t}\n\t@Override\n\tpublic String toString() {\n\t\treturn getColumnName();\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/jobs/IndustryJobsTab.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.jobs;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.FilterList;\nimport ca.odell.glazedlists.ListSelection;\nimport ca.odell.glazedlists.SortedList;\nimport ca.odell.glazedlists.event.ListEvent;\nimport ca.odell.glazedlists.event.ListEventListener;\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport ca.odell.glazedlists.swing.TableComparatorChooser;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.List;\nimport javax.swing.JComponent;\nimport javax.swing.JMenu;\nimport javax.swing.JPopupMenu;\nimport javax.swing.JRadioButtonMenuItem;\nimport javax.swing.JScrollPane;\nimport javax.swing.Timer;\nimport javax.swing.event.TableModelEvent;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\nimport net.nikr.eve.jeveasset.data.api.raw.RawIndustryJob.IndustryJobStatus;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel.JStatusLabel;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabPrimary;\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter;\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuColumns;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo.AutoNumberFormat;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\nimport net.nikr.eve.jeveasset.gui.shared.table.PaddingTableCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\nimport net.nikr.eve.jeveasset.i18n.TabsJobs;\nimport net.nikr.eve.jeveasset.io.local.profile.ProfileDatabase;\n\n\npublic class IndustryJobsTab extends JMainTabPrimary {\n\n\tprivate static final int TIME_LEFT_SECONDS = 63;\n\tprivate static final int TIME_LEFT_SECONDS_MS = TIME_LEFT_SECONDS * 1000;\n\tprivate final JAutoColumnTable jTable;\n\tprivate final JStatusLabel jCount;\n\tprivate final JStatusLabel jInventionSuccess;\n\tprivate final JStatusLabel jManufactureOutputValue;\n\n\tprivate final Timer updateTimeLeftColumnSeconds;\n\tprivate final Timer updateTimeLeftColumnMinutes;\n\tprivate Timer startTimeLeftColumnSeconds;\n\tprivate int updatedSeconds;\n\n\t//Table\n\tprivate final EventList<MyIndustryJob> eventList;\n\tprivate final FilterList<MyIndustryJob> filterList;\n\tprivate final DefaultEventTableModel<MyIndustryJob> tableModel;\n\tprivate final DefaultEventSelectionModel<MyIndustryJob> selectionModel;\n\tprivate final IndustryJobsFilterControl filterControl;\n\tprivate final EnumTableFormatAdaptor<IndustryJobTableFormat, MyIndustryJob> tableFormat;\n\n\tpublic static final String NAME = \"industryjobs\"; //Not to be changed!\n\n\tpublic IndustryJobsTab(final Program program) {\n\t\tsuper(program, NAME, TabsJobs.get().industry(), Images.TOOL_INDUSTRY_JOBS.getIcon(), true);\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tupdateTimeLeftColumnSeconds = new Timer(1000, new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tupdatedSeconds++;\n\t\t\t\tupdateTimeLeft();\n\t\t\t\tif (updatedSeconds > TIME_LEFT_SECONDS) {\n\t\t\t\t\tstartTimeLeft();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tupdateTimeLeftColumnMinutes = new Timer(60 * 1000, new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tupdateTimeLeft();\n\t\t\t}\n\t\t});\n\t//StatusPanels must be initialized before the eventlist\n\t\tjInventionSuccess = StatusPanel.createLabel(TabsJobs.get().inventionSuccess(), Images.JOBS_INVENTION_SUCCESS.getIcon(), AutoNumberFormat.PERCENT);\n\t\tthis.addStatusbarLabel(jInventionSuccess);\n\n\t\tjManufactureOutputValue = StatusPanel.createLabel(TabsJobs.get().manufactureJobsValue(), Images.TOOL_VALUES.getIcon(), AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jManufactureOutputValue);\n\n\t\tjCount = StatusPanel.createLabel(TabsJobs.get().count(), Images.EDIT_ADD.getIcon(), AutoNumberFormat.ITEMS);\n\t\tthis.addStatusbarLabel(jCount);\n\t\t\n\t\t//Table Format\n\t\ttableFormat = TableFormatFactory.industryJobTableFormat();\n\t\t//Backend\n\t\teventList = program.getProfileData().getIndustryJobsEventList();\n\t\t//Sorting (per column)\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<MyIndustryJob> sortedList = new SortedList<>(eventList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\n\t\t//Filter\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tfilterList = new FilterList<>(sortedList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\tfilterList.addListEventListener(listener);\n\t\t//Table Model\n\t\ttableModel = EventModels.createTableModel(filterList, tableFormat);\n\t\t//Table\n\t\tjTable = new JIndustryJobsTable(program, tableModel);\n\t\tjTable.setCellSelectionEnabled(true);\n\t\tPaddingTableCellRenderer.install(jTable, 1);\n\t\t//Sorting\n\t\tTableComparatorChooser<MyIndustryJob> comparatorChooser = TableComparatorChooser.install(jTable, sortedList, TableComparatorChooser.MULTIPLE_COLUMN_MOUSE, tableFormat);\n\t\t//Selection Model\n\t\tselectionModel = EventModels.createSelectionModel(filterList);\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\n\t\tjTable.setSelectionModel(selectionModel);\n\t\t//Listeners\n\t\tinstallTable(jTable);\n\t\t//Scroll\n\t\tJScrollPane jTableScroll = new JScrollPane(jTable);\n\t\t//Table Filter\n\t\tfilterControl = new IndustryJobsFilterControl(sortedList);\n\t\t//Menu\n\t\tinstallTableTool(new JobsTableMenu(), tableFormat, comparatorChooser, tableModel, jTable, filterControl, MyIndustryJob.class);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jTableScroll, 700, 700, Short.MAX_VALUE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jTableScroll, 100, 400, Short.MAX_VALUE)\n\t\t);\n\t}\n\n\t@Override\n\tpublic void clearData() {\n\t\tfilterControl.clearCache();\n\t}\n\n\t@Override\n\tpublic void updateCache() {\n\t\tfilterControl.createCache();\n\t}\n\n\t@Override\n\tpublic Collection<LocationType> getLocations() {\n\t\ttry {\n\t\t\teventList.getReadWriteLock().readLock().lock();\n\t\t\treturn new ArrayList<>(eventList);\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t}\n\n\tpublic void addFilters(final List<Filter> filters) {\n\t\tfilterControl.addFilters(filters);\n\t}\n\n\tprivate MyIndustryJob getSelectedIndustryJob() {\n\t\tint index = jTable.getSelectedRow();\n\t\tif (index < 0 || index >= tableModel.getRowCount()) {\n\t\t\treturn null;\n\t\t}\n\t\treturn tableModel.getElementAt(index);\n\t}\n\n\tpublic void tabChanged() {\n\t\tstartTimeLeft();\n\t}\n\n\tprivate void updateTimeLeft() {\n\t\tfor (int column = 0; column < jTable.getColumnCount(); column++) {\n\t\t\tString columnName = (String) jTable.getTableHeader().getColumnModel().getColumn(column).getHeaderValue();\n\t\t\tif (columnName.equals(IndustryJobTableFormat.TIME_LEFT.getColumnName())) {\n\t\t\t\ttableModel.fireTableChanged(new TableModelEvent(tableModel, 0, jTable.getRowCount() - 1, column));\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void stopTimeLeft() {\n\t\t//Stop\n\t\tif (startTimeLeftColumnSeconds != null) {\n\t\t\tstartTimeLeftColumnSeconds.stop();\n\t\t\tstartTimeLeftColumnSeconds = null;\n\t\t}\n\t\tupdateTimeLeftColumnSeconds.stop();\n\t\tupdateTimeLeftColumnMinutes.stop();\n\t}\n\n\tprivate void startTimeLeft() {\n\t\tstopTimeLeft();\n\t\tif (!program.getMainWindow().getSelectedTab().equals(this)) {\n\t\t\treturn; //No focus\n\t\t}\n\t\t//Find next complete\n\t\tLong duration = null;\n\t\ttry {\n\t\t\teventList.getReadWriteLock().readLock().lock();\n\t\t\tfor (MyIndustryJob industryJob : eventList) {\n\t\t\t\tif (industryJob.getTimeLeft().getDuration()<= 0) {\n\t\t\t\t\tcontinue; //Already completed\n\t\t\t\t}\n\t\t\t\tif (duration == null) {\n\t\t\t\t\tduration = industryJob.getTimeLeft().getDuration();\n\t\t\t\t} else {\n\t\t\t\t\tduration = Math.min(duration, industryJob.getTimeLeft().getDuration());\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t\tif (duration != null && duration < TIME_LEFT_SECONDS_MS) {\n\t\t\tupdatedSeconds = 0;\n\t\t\tupdateTimeLeftColumnSeconds.start();\n\t\t} else {\n\t\t\tif (duration != null) {\n\t\t\t\tstartTimeLeftColumnSeconds = new Timer((int) (duration - TIME_LEFT_SECONDS_MS), new ActionListener() {\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\t\tstopTimeLeft();\n\t\t\t\t\t\tupdatedSeconds = 0;\n\t\t\t\t\t\tupdateTimeLeftColumnSeconds.start();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tstartTimeLeftColumnSeconds.start();\n\t\t\t} //Else: No in-progress industry jobs\n\t\t\tupdateTimeLeftColumnMinutes.start();\n\t\t}\n\t}\n\n\tprivate class JobsTableMenu implements TableMenu<MyIndustryJob> {\n\t\t@Override\n\t\tpublic MenuData<MyIndustryJob> getMenuData() {\n\t\t\treturn new MenuData<>(selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getFilterMenu() {\n\t\t\treturn filterControl.getMenu(jTable, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getColumnMenu() {\n\t\t\treturn new JMenuColumns<>(program, tableFormat, tableModel, jTable, NAME);\n\t\t}\n\n\t\t@Override\n\t\tpublic void addInfoMenu(JPopupMenu jPopupMenu) {\n\t\t\tJMenuInfo.industryJob(jPopupMenu, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic void addToolMenu(JComponent jComponent) {\n\t\t\tMyIndustryJob industryJob = getSelectedIndustryJob();\n\t\t\tboolean enabled = industryJob != null && !industryJob.isESI() && selectionModel.getSelected().size() == 1;\n\n\t\t\tJMenu jStatus = new JMenu(TabsJobs.get().status());\n\t\t\tjStatus.setIcon(Images.MISC_STATUS.getIcon());\n\t\t\tif (!enabled) {\n\t\t\t\tjStatus.setIcon(jStatus.getDisabledIcon());\n\t\t\t}\n\t\t\tjComponent.add(jStatus);\n\n\t\t\tJRadioButtonMenuItem jMenuItem;\n\t\t\tfor (IndustryJobStatus status : IndustryJobStatus.values()) {\n\t\t\t\tjMenuItem = new JRadioButtonMenuItem(MyIndustryJob.getStatusName(status));\n\t\t\t\tjMenuItem.setEnabled(enabled);\n\t\t\t\tjMenuItem.setSelected(enabled && status == industryJob.getStatus());\n\t\t\t\tjMenuItem.addActionListener(new ActionListener() {\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\t\tif (industryJob == null || industryJob.isESI() || industryJob.getStatus() == status) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tboolean before = industryJob.isNotDeliveredToAssets();\n\t\t\t\t\t\tindustryJob.setStatus(status);\n\t\t\t\t\t\tif (before != industryJob.isNotDeliveredToAssets()) {\n\t\t\t\t\t\t\tprogram.updateEventListsWithProgress();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttableModel.fireTableDataChanged();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogram.saveTable(ProfileDatabase.Table.INDUSTRY_JOBS);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tjStatus.add(jMenuItem);\n\t\t\t}\n\t\t\tMenuManager.addSeparator(jComponent);\n\t\t}\n\t}\n\n\tprivate class ListenerClass implements ListEventListener<MyIndustryJob> {\n\t\t@Override\n\t\tpublic void listChanged(final ListEvent<MyIndustryJob> listChanges) {\n\t\t\tstartTimeLeft();\n\t\t\tint inventionCount = 0;\n\t\t\tlong count = 0;\n\t\t\tdouble success = 0;\n\t\t\tdouble outputValue = 0;\n\t\t\ttry {\n\t\t\t\tfilterList.getReadWriteLock().readLock().lock();\n\t\t\t\tfor (MyIndustryJob industryJob : filterList) {\n\t\t\t\t\tcount++;\n\t\t\t\t\tif (industryJob.isInvention() && industryJob.isDone()) {\n\t\t\t\t\t\tinventionCount++;\n\t\t\t\t\t\tif (industryJob.isCompletedSuccessful()) {\n\t\t\t\t\t\t\tsuccess++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (industryJob.isNotDeliveredToAssets()) { //Only include active jobs\n\t\t\t\t\t\toutputValue += industryJob.getOutputValue();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tfilterList.getReadWriteLock().readLock().unlock();\n\t\t\t}\n\t\t\tif (inventionCount <= 0) {\n\t\t\t\tjInventionSuccess.setNumber(0.0);\n\t\t\t} else {\n\t\t\t\tjInventionSuccess.setNumber(success / inventionCount);\n\t\t\t}\n\t\t\tjManufactureOutputValue.setNumber(outputValue);\n\t\t\tjCount.setNumber(count);\n\t\t}\n\t}\n\n\tpublic class IndustryJobsFilterControl extends FilterControl<MyIndustryJob> {\n\n\t\tpublic IndustryJobsFilterControl(EventList<MyIndustryJob> exportEventList) {\n\t\t\tsuper(program.getMainWindow().getFrame(),\n\t\t\t\t\tNAME,\n\t\t\t\t\ttableFormat,\n\t\t\t\t\teventList,\n\t\t\t\t\texportEventList,\n\t\t\t\t\tfilterList\n\t\t\t\t\t);\n\t\t}\n\n\t\t@Override\n\t\tpublic void saveSettings(final String msg) {\n\t\t\tprogram.saveSettings(\"Industry Jobs Table: \" + msg); //Save Industry Job Filters and Export Settings\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/jobs/JIndustryJobsTable.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.jobs;\r\n\r\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\r\nimport java.awt.Component;\r\nimport javax.swing.table.TableCellRenderer;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawIndustryJob.IndustryJobStatus;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\r\n\r\n\r\npublic class JIndustryJobsTable extends JAutoColumnTable {\r\n\r\n\tprivate final DefaultEventTableModel<MyIndustryJob> tableModel;\r\n\r\n\tpublic JIndustryJobsTable(Program program, final DefaultEventTableModel<MyIndustryJob> tableModel) {\r\n\t\tsuper(program, tableModel);\r\n\t\tthis.tableModel = tableModel;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Component prepareRenderer(final TableCellRenderer renderer, final int row, final int column) {\r\n\t\tComponent component = super.prepareRenderer(renderer, row, column);\r\n\t\tboolean isSelected = isCellSelected(row, column);\r\n\t\tMyIndustryJob industryJob = tableModel.getElementAt(row);\r\n\t\tString columnName = (String) this.getTableHeader().getColumnModel().getColumn(column).getHeaderValue();\r\n\r\n\t\t//BPO\r\n\t\tif (industryJob.isBPO() && columnName.equals(IndustryJobTableFormat.NAME.getColumnName())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.GLOBAL_BPO, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\t//BPC\r\n\t\tif (industryJob.isBPC() && columnName.equals(IndustryJobTableFormat.NAME.getColumnName())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.GLOBAL_BPC, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\t//Completed\r\n\t\tif (industryJob.getStatus() == IndustryJobStatus.READY && columnName.equals(IndustryJobTableFormat.END_DATE.getColumnName())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.INDUSTRY_JOBS_DONE, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\tif (columnName.equals(IndustryJobTableFormat.ACTIVITY.getColumnName())) {\r\n\t\t\tColorEntry entry = null;\r\n\t\t\tswitch (industryJob.getActivity()) {\r\n\t\t\t\tcase ACTIVITY_MANUFACTURING:\r\n\t\t\t\t\tentry = ColorEntry.INDUSTRY_JOBS_ACTIVITY_MANUFACTURING;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase ACTIVITY_RESEARCHING_TECHNOLOGY:\r\n\t\t\t\t\tentry = ColorEntry.INDUSTRY_JOBS_ACTIVITY_RESEARCHING_TECHNOLOGY;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase ACTIVITY_RESEARCHING_METERIAL_PRODUCTIVITY:\r\n\t\t\t\t\tentry = ColorEntry.INDUSTRY_JOBS_ACTIVITY_RESEARCHING_METERIAL_PRODUCTIVITY;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase ACTIVITY_RESEARCHING_TIME_PRODUCTIVITY:\r\n\t\t\t\t\tentry = ColorEntry.INDUSTRY_JOBS_ACTIVITY_RESEARCHING_TIME_PRODUCTIVITY;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase ACTIVITY_COPYING:\r\n\t\t\t\t\tentry = ColorEntry.INDUSTRY_JOBS_ACTIVITY_COPYING;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase ACTIVITY_DUPLICATING:\r\n\t\t\t\t\tentry = ColorEntry.INDUSTRY_JOBS_ACTIVITY_DUPLICATING;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase ACTIVITY_REVERSE_ENGINEERING:\r\n\t\t\t\t\tentry = ColorEntry.INDUSTRY_JOBS_ACTIVITY_REVERSE_ENGINEERING;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase ACTIVITY_REVERSE_INVENTION:\r\n\t\t\t\t\tentry = ColorEntry.INDUSTRY_JOBS_ACTIVITY_REVERSE_INVENTION;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase ACTIVITY_REACTIONS:\r\n\t\t\t\t\tentry = ColorEntry.INDUSTRY_JOBS_ACTIVITY_REACTIONS;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif (entry != null) {\r\n\t\t\t\tColorSettings.configCell(component, entry, isSelected);\r\n\t\t\t\treturn component;\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Delivered\r\n\t\tif (industryJob.getStatus()== IndustryJobStatus.DELIVERED && columnName.equals(IndustryJobTableFormat.END_DATE.getColumnName())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.INDUSTRY_JOBS_DELIVERED, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\t//User set location\r\n\t\tif (industryJob.getLocation().isUserLocation() && columnName.equals(IndustryJobTableFormat.LOCATION.getColumnName())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.CUSTOM_USER_LOCATION, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\treturn component;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/journal/JJournalTable.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.journal;\r\n\r\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\r\nimport java.awt.Component;\r\nimport javax.swing.table.TableCellRenderer;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyJournal;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\r\n\r\n\r\npublic class JJournalTable extends JAutoColumnTable {\r\n\r\n\tprivate final DefaultEventTableModel<MyJournal> tableModel;\r\n\r\n\tpublic JJournalTable(Program program, final DefaultEventTableModel<MyJournal> tableModel) {\r\n\t\tsuper(program, tableModel);\r\n\t\tthis.tableModel = tableModel;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Component prepareRenderer(final TableCellRenderer renderer, final int row, final int column) {\r\n\t\tComponent component = super.prepareRenderer(renderer, row, column);\r\n\t\tboolean isSelected = isCellSelected(row, column);\r\n\t\tMyJournal journal = tableModel.getElementAt(row);\r\n\t\tString columnName = (String) this.getTableHeader().getColumnModel().getColumn(column).getHeaderValue();\r\n\r\n\t\tif (columnName.equals(JournalTableFormat.AMOUNT.getColumnName()) && journal.getAmount() < 0) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.GLOBAL_VALUE_NEGATIVE, isSelected);\r\n\t\t}\r\n\t\tif (columnName.equals(JournalTableFormat.BALANCE.getColumnName()) && journal.getBalance() < 0) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.GLOBAL_VALUE_NEGATIVE, isSelected);\r\n\t\t}\r\n\t\t//Added date\r\n\t\tif (columnName.equals(JournalTableFormat.ADDED.getColumnName()) && Settings.get().getTableChanged(JournalTab.NAME).before(journal.getAdded())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.JOURNAL_NEW, isSelected);\r\n\t\t}\r\n\t\treturn component;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/journal/JournalChartDialog.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.journal;\n\nimport java.awt.Dimension;\nimport java.time.Instant;\nimport java.time.LocalDate;\nimport java.time.ZoneId;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport java.util.TreeMap;\nimport javax.swing.JButton;\nimport javax.swing.JComponent;\nimport javax.swing.GroupLayout;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.my.MyJournal;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\nimport net.nikr.eve.jeveasset.gui.shared.JFreeChartUtil;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\nimport net.nikr.eve.jeveasset.i18n.TabsJournal;\nimport org.jfree.chart.ChartPanel;\nimport org.jfree.chart.JFreeChart;\nimport org.jfree.chart.axis.DateAxis;\nimport org.jfree.chart.axis.NumberAxis;\nimport org.jfree.chart.labels.XYToolTipGenerator;\nimport org.jfree.chart.plot.XYPlot;\nimport org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;\nimport org.jfree.data.time.SimpleTimePeriod;\nimport org.jfree.data.time.TimePeriodValues;\nimport org.jfree.data.time.TimePeriodValuesCollection;\nimport org.jfree.data.xy.XYDataset;\n\npublic class JournalChartDialog extends JDialogCentered {\n\n\tprivate static final ZoneId CHART_ZONE = ZoneId.of(\"GMT\");\n\tprivate static final int MIN_WIDTH = 720;\n\tprivate static final int MIN_HEIGHT = 420;\n\n\tprivate final TimePeriodValuesCollection dataset = new TimePeriodValuesCollection();\n\tprivate final XYLineAndShapeRenderer renderer;\n\tprivate final DateAxis domainAxis;\n\tprivate final NumberAxis rangeAxis;\n\tprivate final ChartPanel jChartPanel;\n\tprivate final JButton jClose;\n\n\tpublic JournalChartDialog(final Program program) {\n\t\tsuper(program, TabsJournal.get().chartTitle(), Images.TOOL_JOURNAL.getImage());\n\n\t\tdomainAxis = JFreeChartUtil.createDateAxis();\n\t\trangeAxis = JFreeChartUtil.createNumberAxis(true);\n\t\trenderer = JFreeChartUtil.createRenderer();\n\t\trenderer.setDefaultToolTipGenerator(new XYToolTipGenerator() {\n\t\t\t@Override\n\t\t\tpublic String generateToolTip(XYDataset dataset, int series, int item)\t{\n\t\t\t\tDate date = new Date(dataset.getX(series, item).longValue());\n\t\t\t\tNumber value = dataset.getY(series, item);\n\t\t\t\treturn \"<html><b>\" + dataset.getSeriesKey(series) + \":</b> \"\n\t\t\t\t\t\t+ Formatter.iskFormat(value)\n\t\t\t\t\t\t+ \"<br><b>Date:</b> \"\n\t\t\t\t\t\t+ Formatter.columnDateOnly(date);\n\t\t\t}\n\t\t});\n\n\t\tXYPlot plot = JFreeChartUtil.createPlot(dataset, domainAxis, rangeAxis, renderer);\n\t\tJFreeChart jFreeChart = JFreeChartUtil.createChart(plot);\n\t\tjChartPanel = JFreeChartUtil.createChartPanel(jFreeChart);\n\t\tjChartPanel.setPreferredSize(new Dimension(MIN_WIDTH, MIN_HEIGHT));\n\n\t\tjClose = new JButton(TabsJournal.get().close());\n\t\tjClose.addActionListener(e -> getDialog().setVisible(false));\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addComponent(jChartPanel)\n\t\t\t\t.addComponent(jClose, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jChartPanel)\n\t\t\t\t.addComponent(jClose, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t);\n\n\t\tgetDialog().setResizable(true);\n\t\tgetDialog().setMinimumSize(new Dimension(MIN_WIDTH, MIN_HEIGHT));\n\t\tgetDialog().setModalityType(java.awt.Dialog.ModalityType.MODELESS);\n\t}\n\n\tpublic void showChart(final List<MyJournal> journals) {\n\t\tupdateData(journals);\n\t\tsetVisible(true);\n\t}\n\n\tprivate void updateData(final List<MyJournal> journals) {\n\t\twhile (dataset.getSeriesCount() != 0) {\n\t\t\tdataset.removeSeries(0);\n\t\t}\n\t\tif (journals == null || journals.isEmpty()) {\n\t\t\treturn;\n\t\t}\n\t\tTreeMap<Date, Map<String, Double>> values = new TreeMap<>();\n\t\tSet<String> owners = new HashSet<>();\n\t\tfor (MyJournal journal : journals) {\n\t\t\tDate day = toDay(journal.getDate());\n\t\t\tMap<String, Double> map = values.get(day);\n\t\t\tif (map == null) {\n\t\t\t\tmap = new HashMap<>();\n\t\t\t\tvalues.put(day, map);\n\t\t\t}\n\t\t\tString ownerName = journal.getOwnerName();\n\t\t\towners.add(ownerName);\n\t\t\tdouble amount = journal.getAmount() != null ? journal.getAmount() : 0.0;\n\t\t\tmap.put(ownerName, map.getOrDefault(ownerName, 0.0) + amount);\n\t\t}\n\t\tList<String> names = new ArrayList<>(owners);\n\t\tCollections.sort(names, String.CASE_INSENSITIVE_ORDER);\n\t\tLocalDate startLocal = values.firstKey().toInstant().atZone(CHART_ZONE).toLocalDate();\n\t\tLocalDate endLocal = values.lastKey().toInstant().atZone(CHART_ZONE).toLocalDate();\n\t\tfor (LocalDate date = startLocal; !date.isAfter(endLocal); date = date.plusDays(1)) {\n\t\t\tDate bucket = Date.from(date.atStartOfDay().atZone(CHART_ZONE).toInstant());\n\t\t\tMap<String, Double> map = values.get(bucket);\n\t\t\tfor (String name : names) {\n\t\t\t\tdouble value = map != null ? map.getOrDefault(name, 0.0) : 0.0;\n\t\t\t\tTimePeriodValues timePeriod = getSeries(name);\n\t\t\t\ttimePeriod.add(new SimpleTimePeriod(bucket, bucket), value);\n\t\t\t}\n\t\t}\n\n\t\tdouble max = 0.0;\n\t\tint count = 0;\n\t\tfor (int i = 0; i < dataset.getSeriesCount(); i++) {\n\t\t\tcount = Math.max(count, dataset.getItemCount(i));\n\t\t\tfor (int j = 0; j < dataset.getItemCount(i); j++) {\n\t\t\t\tNumber value = dataset.getY(i, j);\n\t\t\t\tif (value != null) {\n\t\t\t\t\tmax = Math.max(max, value.doubleValue());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tJFreeChartUtil.updateTickScale(domainAxis, rangeAxis, max);\n\t\trenderer.setDefaultShapesVisible(count < 2);\n\t}\n\n\tprivate TimePeriodValues getSeries(final String name) {\n\t\tfor (int i = 0; i < dataset.getSeriesCount(); i++) {\n\t\t\tif (dataset.getSeries(i).getKey().equals(name)) {\n\t\t\t\treturn dataset.getSeries(i);\n\t\t\t}\n\t\t}\n\t\tTimePeriodValues series = new TimePeriodValues(name);\n\t\tdataset.addSeries(series);\n\t\treturn series;\n\t}\n\n\tprivate Date toDay(Date date) {\n\t\tInstant instant = date.toInstant();\n\t\tLocalDate localDate = instant.atZone(CHART_ZONE).toLocalDate();\n\t\treturn Date.from(localDate.atStartOfDay().atZone(CHART_ZONE).toInstant());\n\t}\n\n\t@Override\n\tprotected JComponent getDefaultFocus() {\n\t\treturn jClose;\n\t}\n\n\t@Override\n\tprotected JButton getDefaultButton() {\n\t\treturn jClose;\n\t}\n\n\t@Override\n\tprotected void windowShown() { }\n\n\t@Override\n\tprotected void save() { }\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/journal/JournalTab.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.journal;\n\nimport ca.odell.glazedlists.*;\nimport ca.odell.glazedlists.event.ListEvent;\nimport ca.odell.glazedlists.event.ListEventListener;\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport ca.odell.glazedlists.swing.TableComparatorChooser;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Date;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Set;\nimport javax.swing.GroupLayout;\nimport javax.swing.JButton;\nimport javax.swing.JComponent;\nimport javax.swing.JOptionPane;\nimport javax.swing.JMenu;\nimport javax.swing.JMenuItem;\nimport javax.swing.JPopupMenu;\nimport javax.swing.JScrollPane;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.my.MyJournal;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.tag.TagUpdate;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel.JStatusLabel;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.JFixedToolBar;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabPrimary;\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter;\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter.CompareType;\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterMatcher;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuAssetFilter;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuColumns;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\nimport net.nikr.eve.jeveasset.gui.shared.table.PaddingTableCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\nimport net.nikr.eve.jeveasset.gui.tabs.contracts.ContractsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.contracts.ContractsTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.jobs.IndustryJobTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.jobs.IndustryJobsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.transaction.TransactionTab;\nimport net.nikr.eve.jeveasset.gui.tabs.transaction.TransactionTableFormat;\nimport net.nikr.eve.jeveasset.i18n.TabsJournal;\n\n\npublic class JournalTab extends JMainTabPrimary implements TagUpdate {\n\n\tprivate final JStatusLabel jPositiveTotal;\n\tprivate final JStatusLabel jBothTotal;\n\tprivate final JStatusLabel jNegativeTotal;\n\n\tprivate final JAutoColumnTable jTable;\n\tprivate final JButton jClearNew;\n\tprivate final JButton jChart;\n\tprivate final JournalChartDialog chartDialog;\n\n\t//Table\n\tprivate final JournalFilterControl filterControl;\n\tprivate final EnumTableFormatAdaptor<JournalTableFormat, MyJournal> tableFormat;\n\tprivate final DefaultEventTableModel<MyJournal> tableModel;\n\tprivate final EventList<MyJournal> eventList;\n\tprivate final FilterList<MyJournal> filterList;\n\tprivate final DefaultEventSelectionModel<MyJournal> selectionModel;\n\n\tpublic static final String NAME = \"journal\"; //Not to be changed!\n\n\tpublic JournalTab(final Program program) {\n\t\tsuper(program, NAME, TabsJournal.get().title(), Images.TOOL_JOURNAL.getIcon(), true);\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t//StatusPanels must be initialized before the eventlist\n\t\t//Positive\n\t\tjPositiveTotal = StatusPanel.createLabel(TabsJournal.get().totalPositive(), Images.ORDERS_SELL.getIcon(), JMenuInfo.AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jPositiveTotal);\n\n\t\tjBothTotal = StatusPanel.createLabel(TabsJournal.get().total(), Images.TOOL_TRANSACTION.getIcon(), JMenuInfo.AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jBothTotal);\n\n\t\t//Negative\n\t\tjNegativeTotal = StatusPanel.createLabel(TabsJournal.get().totalNegative(), Images.ORDERS_BUY.getIcon(), JMenuInfo.AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jNegativeTotal);\n\n\t\tJFixedToolBar jToolBar = new JFixedToolBar();\n\n\t\tjClearNew = new JButton(TabsJournal.get().clearNew(), Images.UPDATE_DONE_OK.getIcon());\n\t\tjClearNew.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tSettings.get().getTableChanged().put(NAME, new Date());\n\t\t\t\tjTable.repaint();\n\t\t\t\tjClearNew.setEnabled(false);\n\t\t\t\tprogram.saveSettings(\"Table Changed (journal cleared)\");\n\t\t\t}\n\t\t});\n\t\tjToolBar.addButton(jClearNew);\n\n\t\tjChart = new JButton(TabsJournal.get().chart(), Images.TOOL_MINING_GRAPH.getIcon());\n\t\tjChart.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tshowChart();\n\t\t\t}\n\t\t});\n\t\tjToolBar.addButton(jChart);\n\n\t\t//Table Format\n\t\ttableFormat = TableFormatFactory.journalTableFormat();\n\t\t//Backend\n\t\teventList = program.getProfileData().getJournalEventList();\n\t\t//Sorting (per column)\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<MyJournal> sortedList = new SortedList<>(eventList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t//Filter\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tfilterList = new FilterList<>(sortedList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\tfilterList.addListEventListener(listener);\n\t\t//Table Model\n\t\ttableModel = EventModels.createTableModel(filterList, tableFormat);\n\t\t//Table\n\t\tjTable = new JJournalTable(program, tableModel);\n\t\tjTable.setCellSelectionEnabled(true);\n\t\tPaddingTableCellRenderer.install(jTable, 1);\n\t\t//Sorting\n\t\tTableComparatorChooser<MyJournal> comparatorChooser = TableComparatorChooser.install(jTable, sortedList, TableComparatorChooser.MULTIPLE_COLUMN_MOUSE, tableFormat);\n\t\t//Selection Model\n\t\tselectionModel = EventModels.createSelectionModel(filterList);\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\n\t\tjTable.setSelectionModel(selectionModel);\n\t\t//Listeners\n\t\tinstallTable(jTable);\n\t\t//Scroll Panels\n\t\tJScrollPane jTableScroll = new JScrollPane(jTable);\n\t\t//Table Filter\n\t\tfilterControl = new JournalFilterControl(sortedList);\n\t\t//Menu\n\t\tinstallTableTool(new JournalTableMenu(), tableFormat, comparatorChooser, tableModel, jTable, filterControl, MyJournal.class);\n\t\tchartDialog = new JournalChartDialog(program);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jToolBar, jToolBar.getMinimumSize().width, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jToolBar, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t}\n\n\tprivate void showChart() {\n\t\tList<MyJournal> journals = new ArrayList<>();\n\t\tfilterList.getReadWriteLock().readLock().lock();\n\t\ttry {\n\t\t\tjournals.addAll(filterList);\n\t\t} finally {\n\t\t\tfilterList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t\tif (journals.isEmpty()) {\n\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), TabsJournal.get().noDataFound(), TabsJournal.get().chartTitle(), JOptionPane.PLAIN_MESSAGE);\n\t\t\treturn;\n\t\t}\n\t\tchartDialog.showChart(journals);\n\t}\n\n\t@Override\n\tpublic void updateTags() {\n\t\tbeforeUpdateData();\n\t\ttableModel.fireTableDataChanged();\n\t\tfilterControl.refilter();\n\t\tafterUpdateData();\n\t}\n\n\t@Override\n\tpublic void clearData() {\n\t\tfilterControl.clearCache();\n\t}\n\n\t@Override\n\tpublic void updateCache() {\n\t\tDate current = Settings.get().getTableChanged(NAME);\n\t\tboolean newFound = false;\n\t\ttry {\n\t\t\teventList.getReadWriteLock().readLock().lock();\n\t\t\tfor (MyJournal journal : eventList) {\n\t\t\t\tif (current.before(journal.getAdded())) {\n\t\t\t\t\tnewFound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t\tfilterControl.createCache();\n\t\tfinal boolean found = newFound;\n\t\tProgram.ensureEDT(new Runnable() {\n\t\t\t@Override\n\t\t\tpublic void run() {\n\t\t\t\tjClearNew.setEnabled(found);\n\t\t\t}\n\t\t});\n\t}\n\n\t@Override\n\tpublic Collection<LocationType> getLocations() {\n\t\treturn new ArrayList<>(); //No Location\n\t}\n\n\tprivate class JournalTableMenu implements TableMenu<MyJournal> {\n\t\t@Override\n\t\tpublic JMenu getFilterMenu() {\n\t\t\treturn filterControl.getMenu(jTable, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getColumnMenu() {\n\t\t\treturn new JMenuColumns<>(program, tableFormat, tableModel, jTable, NAME);\n\t\t}\n\n\t\t@Override\n\t\tpublic MenuData<MyJournal> getMenuData() {\n\t\t\treturn new MenuData<>(selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic void addInfoMenu(JPopupMenu jPopupMenu) { }\n\n\t\t@Override\n\t\tpublic void addToolMenu(JComponent jComponent) {\n\t\t\tJMenu jJournal = new JMenu(TabsJournal.get().findIn());\n\t\t\tjJournal.setIcon(Images.TOOL_JOURNAL.getIcon());\n\t\t\tjComponent.add(jJournal);\n\n\t\t\tSet<String> contractIDs = new HashSet<>();\n\t\t\tSet<String> industryJobIDs = new HashSet<>();\n\t\t\tSet<String> transactionIDs = new HashSet<>();\n\t\t\tfor (MyJournal journal : selectionModel.getSelected()) {\n\t\t\t\tif (null == journal.getContextType()) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tswitch (journal.getContextType()) {\n\t\t\t\t\tcase CONTRACT_ID:\n\t\t\t\t\t\taddSafe(contractIDs, journal.getContextID());\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase INDUSTRY_JOB_ID:\n\t\t\t\t\t\taddSafe(industryJobIDs, journal.getContextID());\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase MARKET_TRANSACTION_ID:\n\t\t\t\t\t\taddSafe(transactionIDs, journal.getContextID());\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tJMenuItem jContracts = new JMenuItem(TabsJournal.get().contracts(), Images.TOOL_CONTRACTS.getIcon());\n\t\t\tjContracts.setEnabled(!contractIDs.isEmpty());\n\t\t\tjContracts.addActionListener(new ActionListener() {\n\t\t\t\t@Override\n\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\tList<Filter> filters = JMenuAssetFilter.getFilters(contractIDs, ContractsTableFormat.CONTRACT_ID, CompareType.EQUALS);\n\t\t\t\t\tContractsTab contractsTab = program.getContractsTab(true);\n\t\t\t\t\tcontractsTab.addFilters(filters);\n\t\t\t\t\tprogram.getMainWindow().addTab(contractsTab);\n\t\t\t\t}\n\t\t\t});\n\t\t\tjJournal.add(jContracts);\n\n\t\t\tJMenuItem jIndustryJobs = new JMenuItem(TabsJournal.get().industryJobs(), Images.TOOL_INDUSTRY_JOBS.getIcon());\n\t\t\tjIndustryJobs.setEnabled(!industryJobIDs.isEmpty());\n\t\t\tjIndustryJobs.addActionListener(new ActionListener() {\n\t\t\t\t@Override\n\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\tList<Filter> filters = JMenuAssetFilter.getFilters(industryJobIDs, IndustryJobTableFormat.JOB_ID, CompareType.EQUALS);\n\t\t\t\t\tIndustryJobsTab industryJobsTab = program.getIndustryJobsTab(true);\n\t\t\t\t\tindustryJobsTab.addFilters(filters);\n\t\t\t\t\tprogram.getMainWindow().addTab(industryJobsTab);\n\t\t\t\t}\n\t\t\t});\n\t\t\tjJournal.add(jIndustryJobs);\n\n\t\t\tJMenuItem jTransactions = new JMenuItem(TabsJournal.get().transactions(), Images.TOOL_TRANSACTION.getIcon());\n\t\t\tjTransactions.setEnabled(!transactionIDs.isEmpty());\n\t\t\tjTransactions.addActionListener(new ActionListener() {\n\t\t\t\t@Override\n\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\tList<Filter> filters = JMenuAssetFilter.getFilters(transactionIDs, TransactionTableFormat.TRANSACTION_ID, CompareType.EQUALS);\n\t\t\t\t\tTransactionTab transactionsTab = program.getTransactionsTab(true);\n\t\t\t\t\ttransactionsTab.addFilters(filters);\n\t\t\t\t\tprogram.getMainWindow().addTab(transactionsTab);\n\t\t\t\t}\n\t\t\t});\n\t\t\tjJournal.add(jTransactions);\n\t\t}\n\t}\n\n\tprivate void addSafe(Set<String> set, Long value) {\n\t\tif (value == null || value < 100) {\n\t\t\treturn;\n\t\t}\n\t\tset.add(FilterMatcher.formatFilter(value));\n\t}\n\n\tprivate class ListenerClass implements ListEventListener<MyJournal> {\n\n\t\t@Override\n\t\tpublic void listChanged(ListEvent<MyJournal> listChanges) {\n\t\t\tdouble positiveTotal = 0;\n\t\t\tdouble negativeTotal = 0;\n\t\t\ttry {\n\t\t\t\tfilterList.getReadWriteLock().readLock().lock();\n\t\t\t\tfor (MyJournal journal : filterList) {\n\t\t\t\t\tDouble amount = journal.getAmount();\n\t\t\t\t\tif (amount > 0) { //Sell\n\t\t\t\t\t\tpositiveTotal += journal.getAmount();\n\t\t\t\t\t} else { //Buy\n\t\t\t\t\t\tnegativeTotal += journal.getAmount();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tfilterList.getReadWriteLock().readLock().unlock();\n\t\t\t}\n\t\t\tdouble bothTotal = positiveTotal + negativeTotal;\n\t\t\tjPositiveTotal.setNumber(positiveTotal);\n\t\t\tjBothTotal.setNumber(bothTotal);\n\t\t\tjNegativeTotal.setNumber(negativeTotal);\n\t\t}\n\t}\n\n\tprivate class JournalFilterControl extends FilterControl<MyJournal> {\n\n\t\tpublic JournalFilterControl(SortedList<MyJournal> exportEventList) {\n\t\t\tsuper(program.getMainWindow().getFrame(),\n\t\t\t\t\tNAME,\n\t\t\t\t\ttableFormat,\n\t\t\t\t\teventList,\n\t\t\t\t\texportEventList,\n\t\t\t\t\tfilterList\n\t\t\t\t\t);\n\t\t}\n\n\t\t@Override\n\t\tpublic void saveSettings(final String msg) {\n\t\t\tprogram.saveSettings(\"Journal Table: \" + msg); //Save Journal Filters and Export Settings\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/journal/JournalTableFormat.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.journal;\r\n\r\nimport java.util.Comparator;\r\nimport java.util.Date;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyJournal;\r\nimport net.nikr.eve.jeveasset.data.settings.tag.Tags;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.LongInt;\r\nimport net.nikr.eve.jeveasset.i18n.TabsJournal;\r\n\r\n\r\npublic enum JournalTableFormat implements EnumTableColumn<MyJournal> {\r\n\tDATE(Date.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsJournal.get().columnDate();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyJournal from) {\r\n\t\t\treturn from.getDate();\r\n\t\t}\r\n\t},\r\n\tTAGS(Tags.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsJournal.get().columnTags();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyJournal from) {\r\n\t\t\treturn from.getTags();\r\n\t\t}\r\n\t},\r\n\tADDED(Date.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsJournal.get().columnAdded();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsJournal.get().columnAddedToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyJournal from) {\r\n\t\t\treturn from.getAdded();\r\n\t\t}\r\n\t},\r\n\tREF_TYPE(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsJournal.get().columnRefType();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyJournal from) {\r\n\t\t\treturn from.getRefTypeFormatted();\r\n\t\t}\r\n\t},\r\n\tAMOUNT(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsJournal.get().columnAmount();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyJournal from) {\r\n\t\t\treturn from.getAmount();\r\n\t\t}\r\n\t},\r\n\tBALANCE(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsJournal.get().columnBalance();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyJournal from) {\r\n\t\t\treturn from.getBalance();\r\n\t\t}\r\n\t},\r\n\tOWNER(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsJournal.get().columnOwner();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyJournal from) {\r\n\t\t\treturn from.getOwnerName();\r\n\t\t}\r\n\t},\r\n\tOWNER_NAME_1(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsJournal.get().columnOwnerName1();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyJournal from) {\r\n\t\t\treturn from.getFirstPartyName();\r\n\t\t}\r\n\t},\r\n\tOWNER_NAME_2(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsJournal.get().columnOwnerName2();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyJournal from) {\r\n\t\t\treturn from.getSecondPartyName();\r\n\t\t}\r\n\t},\r\n\tACCOUNT_KEY(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsJournal.get().columnAccountKey();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyJournal from) {\r\n\t\t\treturn from.getAccountKeyFormatted();\r\n\t\t}\r\n\t},\r\n\tTAX_AMOUNT(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsJournal.get().columnTaxAmount();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyJournal from) {\r\n\t\t\treturn from.getTaxAmount();\r\n\t\t}\r\n\t},\r\n\tREASON(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsJournal.get().columnReason();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyJournal from) {\r\n\t\t\treturn from.getReason();\r\n\t\t}\r\n\t},\r\n\tCONTEXT_NAME(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsJournal.get().columnContextName();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyJournal from) {\r\n\t\t\treturn from.getContext();\r\n\t\t}\r\n\t},\r\n\tCONTEXT_TYPE(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsJournal.get().columnContextType();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyJournal from) {\r\n\t\t\treturn from.getContextTypeName();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic boolean isShowDefault() {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t},\r\n\tCONTEXT_ID(LongInt.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsJournal.get().columnContextID();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyJournal from) {\r\n\t\t\treturn new LongInt(from.getContextID());\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic boolean isShowDefault() {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t};\r\n\tprivate final Class<?> type;\r\n\tprivate final Comparator<?> comparator;\r\n\tprivate JournalTableFormat(final Class<?> type) {\r\n\t\tthis.type = type;\r\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\r\n\t}\r\n\t@Override\r\n\tpublic Class<?> getType() {\r\n\t\treturn type;\r\n\t}\r\n\t@Override\r\n\tpublic Comparator<?> getComparator() {\r\n\t\treturn comparator;\r\n\t}\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn getColumnName();\r\n\t}\r\n\r\n}"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/loadout/Loadout.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\n\npackage net.nikr.eve.jeveasset.gui.tabs.loadout;\n\nimport ca.odell.glazedlists.matchers.Matcher;\nimport java.util.Collections;\nimport java.util.Set;\nimport net.nikr.eve.jeveasset.data.api.accounts.SimpleOwner;\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.data.settings.types.ItemType;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.data.settings.types.OwnersType;\nimport net.nikr.eve.jeveasset.data.settings.types.PriceType;\nimport net.nikr.eve.jeveasset.gui.shared.CopyHandler.CopySeparator;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.ModulePriceValue;\nimport net.nikr.eve.jeveasset.i18n.TabsLoadout;\n\n\npublic class Loadout implements Comparable<Loadout>, LocationType, ItemType, PriceType, CopySeparator, OwnersType {\n\n\tpublic enum FlagType {\n\t\tTOTAL_VALUE(\"Total Value\") {\n\t\t\t@Override String i18n() {\n\t\t\t\treturn TabsLoadout.get().flagTotalValue();\n\t\t\t}\n\t\t},\n\t\tHIGH_SLOT(\"HiSlot\") {\n\t\t\t@Override String i18n() {\n\t\t\t\treturn TabsLoadout.get().flagHighSlot();\n\t\t\t}\n\t\t},\n\t\tMEDIUM_SLOT(\"MedSlot\") {\n\t\t\t@Override String i18n() {\n\t\t\t\treturn TabsLoadout.get().flagMediumSlot();\n\t\t\t}\n\t\t},\n\t\tLOW_SLOT(\"LoSlot\") {\n\t\t\t@Override String i18n() {\n\t\t\t\treturn TabsLoadout.get().flagLowSlot();\n\t\t\t}\n\t\t},\n\t\tRIG_SLOTS(\"RigSlot\") {\n\t\t\t@Override String i18n() {\n\t\t\t\treturn TabsLoadout.get().flagRigSlot();\n\t\t\t}\n\t\t},\n\t\tSUB_SYSTEMS(\"SubSystem\") {\n\t\t\t@Override String i18n() {\n\t\t\t\treturn TabsLoadout.get().flagSubSystem();\n\t\t\t}\n\t\t},\n\t\tDRONE_BAY(\"DroneBay\") {\n\t\t\t@Override String i18n() {\n\t\t\t\treturn TabsLoadout.get().flagDroneBay();\n\t\t\t}\n\t\t},\n\t\tCARGO(\"Cargo\") {\n\t\t\t@Override String i18n() {\n\t\t\t\treturn TabsLoadout.get().flagCargo();\n\t\t\t}\n\t\t},\n\t\tOTHER(\"\") {\n\t\t\t@Override String i18n() {\n\t\t\t\treturn TabsLoadout.get().flagOther();\n\t\t\t}\n\t\t};\n\n\t\tprivate final String flag;\n\n\t\tprivate FlagType(String flag) {\n\t\t\tthis.flag = flag;\n\t\t}\n\n\t\tabstract String i18n();\n\n\t\tpublic String getFlag() {\n\t\t\treturn flag;\n\t\t}\n\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\treturn i18n();\n\t\t}\n\t}\n\n\tprivate final Item item;\n\tprivate final MyLocation location; //New objects are created by updateData() - no need to update\n\tprivate final SimpleOwner owner;\n\tprivate final String name;\n\tprivate final String shipTypeName;\n\tprivate final String shipItemName;\n\tprivate final Integer shipTypeID;\n\tprivate final String key;\n\tprivate final FlagType flag;\n\tprivate final Double price;\n\tprivate double value;\n\tprivate long count;\n\tprivate final boolean first;\n\tprivate final Set<Long> owners;\n\n\tpublic Loadout(Item item, MyLocation location, SimpleOwner owner, String name, MyAsset ship, String flag, Double price, double value, long count, boolean first) {\n\t\tthis.item = item;\n\t\tthis.location = location;\n\t\tthis.owner = owner;\n\t\tthis.name = name;\n\t\tthis.shipTypeName = ship.getItem().getTypeName(); //MyAsset.getTypeName() does not return the exact name\n\t\tthis.shipItemName = ship.getItemName();\n\t\tthis.shipTypeID = ship.getTypeID();\n\t\tthis.key = ship.getName() + \" #\" + ship.getItemID();\n\t\tthis.flag = convertFlag(flag);\n\t\tthis.price = price;\n\t\tthis.value = value;\n\t\tthis.count = count;\n\t\tthis.first = first;\n\t\tthis.owners = Collections.singleton(owner.getOwnerID());\n\t}\n\n\tprivate FlagType convertFlag(final String s) {\n\t\tfor (FlagType type : FlagType.values()) {\n\t\t\tif (s.contains(type.getFlag())) {\n\t\t\t\treturn type;\n\t\t\t}\n\t\t}\n\t\treturn FlagType.OTHER;\n\t}\n\n\tprivate String convertName(final String nameFix) {\n\t\tif (nameFix.equals(TabsLoadout.get().totalShip())) {\n\t\t\treturn \"1\";\n\t\t} else if (nameFix.equals(TabsLoadout.get().totalModules())) {\n\t\t\treturn \"2\";\n\t\t} else if (nameFix.equals(TabsLoadout.get().totalAll())) {\n\t\t\treturn \"3\";\n\t\t} else {\n\t\t\treturn nameFix;\n\t\t}\n\t}\n\n\tpublic void addCount(final long addCount) {\n\t\tthis.count = this.count + addCount;\n\t}\n\tpublic void addValue(final double addValue) {\n\t\tthis.value = this.value + addValue;\n\t}\n\n\tpublic long getCount() {\n\t\treturn count;\n\t}\n\n\tpublic String getShipTypeName() {\n\t\treturn shipTypeName;\n\t}\n\n\tpublic String getShipItemName() {\n\t\treturn shipItemName;\n\t}\n\n\tpublic Integer getShipTypeID() {\n\t\treturn shipTypeID;\n\t}\n\n\t@Override\n\tpublic Double getDynamicPrice() {\n\t\treturn price;\n\t}\n\n\tpublic double getValue() {\n\t\treturn value;\n\t}\n\n\tpublic String getFlag() {\n\t\treturn flag.toString();\n\t}\n\n\tpublic String getName() {\n\t\tif (getCount() > 1 && flag != FlagType.TOTAL_VALUE) {\n\t\t\treturn getCount() + \"x \" + name;\n\t\t} else {\n\t\t\treturn name;\n\t\t}\n\t}\n\n\t@Override\n\tpublic Item getItem() {\n\t\treturn item;\n\t}\n\n\t@Override\n\tpublic long getItemCount() {\n\t\treturn getCount();\n\t}\n\n\t@Override\n\tpublic MyLocation getLocation() {\n\t\treturn location;\n\t}\n\n\t@Override\n\tpublic Set<Long> getOwners() {\n\t\treturn owners;\n\t}\n\n\tpublic String getOwnerName() {\n\t\treturn owner.getOwnerName();\n\t}\n\n\tpublic ModulePriceValue getModulePriceValue() {\n\t\treturn new ModulePriceValue(price, value, count);\n\t}\n\n\tpublic boolean isFirst() {\n\t\treturn first;\n\t}\n\n\tpublic String getKey() {\n\t\treturn key;\n\t}\n\n\tpublic String getSeparator() {\n\t\treturn String.valueOf(flag.ordinal());\n\t}\n\n\tprotected String getCompare() {\n\t\treturn key + flag.ordinal() + convertName(name);\n\t}\n\n\t@Override\n\tpublic String getCopyString() {\n\t\tStringBuilder builder = new StringBuilder();\n\t\tbuilder.append(getFlag());\n\t\treturn builder.toString();\n\t}\n\n\t@Override\n\tpublic boolean equals(final Object obj) {\n\t\tif (obj == null) {\n\t\t\treturn false;\n\t\t}\n\t\tif (getClass() != obj.getClass()) {\n\t\t\treturn false;\n\t\t}\n\t\tfinal Loadout other = (Loadout) obj;\n\t\tif ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {\n\t\t\treturn false;\n\t\t}\n\t\tif ((this.key == null) ? (other.key != null) : !this.key.equals(other.key)) {\n\t\t\treturn false;\n\t\t}\n\t\tif ((this.location == null) ? (other.location != null) : !this.location.equals(other.location)) {\n\t\t\treturn false;\n\t\t}\n\t\tif ((this.flag == null) ? (other.flag != null) : !this.flag.equals(other.flag)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic int hashCode() {\n\t\tint hash = 3;\n\t\thash = 67 * hash + (this.name != null ? this.name.hashCode() : 0);\n\t\thash = 67 * hash + (this.key != null ? this.key.hashCode() : 0);\n\t\thash = 67 * hash + (this.location != null ? this.location.hashCode() : 0);\n\t\thash = 67 * hash + (this.flag != null ? this.flag.hashCode() : 0);\n\t\treturn hash;\n\t}\n\t/***\n\t * Used by Collections.sort(...).\n\t * @param o\n\t * @return\n\t */\n\t@Override\n\tpublic int compareTo(final Loadout o) {\n\t\treturn this.getCompare().compareTo(o.getCompare());\n\t}\n\n\tpublic static class LoadoutMatcher implements Matcher<Loadout> {\n\n\t\tprivate final String key;\n\n\t\tpublic LoadoutMatcher(final String key) {\n\t\t\tthis.key = key;\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean matches(final Loadout item) {\n\t\t\treturn item.getKey().equals(key);\n\t\t}\n\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/loadout/LoadoutData.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.loadout;\r\n\r\nimport ca.odell.glazedlists.EventList;\r\nimport java.util.ArrayList;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileData;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileManager;\r\nimport net.nikr.eve.jeveasset.data.profile.TableData;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\r\nimport net.nikr.eve.jeveasset.i18n.TabsLoadout;\r\n\r\n\r\npublic class LoadoutData extends TableData {\r\n\r\n\tpublic LoadoutData(Program program) {\r\n\t\tsuper(program);\r\n\t}\r\n\r\n\tpublic LoadoutData(ProfileManager profileManager, ProfileData profileData) {\r\n\t\tsuper(profileManager, profileData);\r\n\t}\r\n\r\n\tpublic EventList<Loadout> getData() {\r\n\t\tEventList<Loadout> eventList = EventListManager.create();\r\n\t\tupdateData(eventList);\r\n\t\treturn eventList;\r\n\t}\r\n\r\n\tpublic void updateData(EventList<Loadout> eventList) {\r\n\t\tList<Loadout> ship = new ArrayList<>();\r\n\t\tfor (MyAsset asset : profileData.getAssetsList()) {\r\n\t\t\tif (!asset.getItem().isShip() || !asset.isSingleton()) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tLoadout moduleShip = new Loadout(asset.getItem(), asset.getLocation(), asset.getOwner(), TabsLoadout.get().totalShip(), asset, TabsLoadout.get().flagTotalValue(), null, asset.getDynamicPrice(), 1, true);\r\n\t\t\tLoadout moduleModules = new Loadout(new Item(0), asset.getLocation(), asset.getOwner(), TabsLoadout.get().totalModules(), asset, TabsLoadout.get().flagTotalValue(), null, 0, 0, false);\r\n\t\t\tLoadout moduleTotal = new Loadout(new Item(0), asset.getLocation(), asset.getOwner(), TabsLoadout.get().totalAll(), asset, TabsLoadout.get().flagTotalValue(), null, asset.getDynamicPrice(), 1, false);\r\n\t\t\tship.add(moduleShip);\r\n\t\t\tship.add(moduleModules);\r\n\t\t\tship.add(moduleTotal);\r\n\t\t\tMap<Integer, Loadout> modules = new HashMap<>();\r\n\t\t\tfor (MyAsset assetModule : asset.getAssets()) {\r\n\t\t\t\tLoadout module = modules.get(assetModule.getTypeID());\r\n\t\t\t\tif (module == null //New\r\n\t\t\t\t\t\t|| assetModule.getFlag().contains(Loadout.FlagType.HIGH_SLOT.getFlag())\r\n\t\t\t\t\t\t|| assetModule.getFlag().contains(Loadout.FlagType.MEDIUM_SLOT.getFlag())\r\n\t\t\t\t\t\t|| assetModule.getFlag().contains(Loadout.FlagType.LOW_SLOT.getFlag())\r\n\t\t\t\t\t\t|| assetModule.getFlag().contains(Loadout.FlagType.RIG_SLOTS.getFlag())\r\n\t\t\t\t\t\t|| assetModule.getFlag().contains(Loadout.FlagType.SUB_SYSTEMS.getFlag())\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\tmodule = new Loadout(assetModule.getItem(), assetModule.getLocation(), assetModule.getOwner(), assetModule.getName(), asset, assetModule.getFlag(), assetModule.getDynamicPrice(), (assetModule.getDynamicPrice() * assetModule.getCount()), assetModule.getCount(), false);\r\n\t\t\t\t\tmodules.put(assetModule.getTypeID(), module);\r\n\t\t\t\t\tship.add(module);\r\n\t\t\t\t} else { //Add count\r\n\t\t\t\t\tmodule.addCount(assetModule.getCount());\r\n\t\t\t\t\tmodule.addValue(assetModule.getDynamicPrice() * assetModule.getCount());\r\n\t\t\t\t}\r\n\t\t\t\tmoduleModules.addValue(assetModule.getDynamicPrice() * assetModule.getCount());\r\n\t\t\t\tmoduleModules.addCount(assetModule.getCount());\r\n\t\t\t\tmoduleTotal.addValue(assetModule.getDynamicPrice() * assetModule.getCount());\r\n\t\t\t\tmoduleTotal.addCount(assetModule.getCount());\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Update list\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().writeLock().lock();\r\n\t\t\teventList.clear();\r\n\t\t\teventList.addAll(ship);\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/loadout/LoadoutExtendedTableFormat.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.loadout;\r\n\r\nimport java.util.Comparator;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.i18n.TabsLoadout;\r\n\r\n\r\npublic enum LoadoutExtendedTableFormat implements EnumTableColumn<Loadout> {\r\n\tLOCATION(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsLoadout.get().columnLocation();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Loadout from) {\r\n\t\t\treturn from.getLocation().getLocation();\r\n\t\t}\r\n\t},\r\n\tSLOT(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsLoadout.get().columnSlot();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Loadout from) {\r\n\t\t\treturn from.getFlag();\r\n\t\t}\r\n\t},\r\n\tOWNER(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsLoadout.get().columnOwner();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Loadout from) {\r\n\t\t\treturn from.getOwnerName();\r\n\t\t}\r\n\t},\r\n\tSHIP(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsLoadout.get().columnShip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Loadout from) {\r\n\t\t\treturn from.getKey();\r\n\t\t}\r\n\t};\r\n\r\n\tprivate final Class<?> type;\r\n\tprivate final Comparator<?> comparator;\r\n\tprivate LoadoutExtendedTableFormat(final Class<?> type) {\r\n\t\tthis.type = type;\r\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\r\n\t}\r\n\t@Override\r\n\tpublic Class<?> getType() {\r\n\t\treturn type;\r\n\t}\r\n\t@Override\r\n\tpublic Comparator<?> getComparator() {\r\n\t\treturn comparator;\r\n\t}\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn getColumnName();\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/loadout/LoadoutSeparatorComparator.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.loadout;\n\nimport java.util.Comparator;\n\n\npublic class LoadoutSeparatorComparator implements Comparator<Loadout> {\n\n\t@Override\n\tpublic int compare(final Loadout o1, final Loadout o2) {\n\t\treturn o1.getSeparator().compareTo(o2.getSeparator());\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/loadout/LoadoutSeparatorTableCell.java",
    "content": "/* Glazed Lists                                                 (c) 2003-2006 */\n/* http://publicobject.com/glazedlists/                      publicobject.com,*/\n/*                                                     O'Dell Engineering Ltd.*/\n\npackage net.nikr.eve.jeveasset.gui.tabs.loadout;\n\nimport ca.odell.glazedlists.SeparatorList;\nimport java.awt.Color;\nimport java.awt.Font;\nimport javax.swing.JLabel;\nimport javax.swing.JTable;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.gui.shared.table.SeparatorTableCell;\nimport net.nikr.eve.jeveasset.i18n.TabsLoadout;\n\n/**\n *\n * @author <a href=\"mailto:jesse@swank.ca\">Jesse Wilson</a>\n */\npublic class LoadoutSeparatorTableCell extends SeparatorTableCell<Loadout> {\n\n\tprivate final JLabel jOwner;\n\tprivate final JLabel jLocation;\n\tprivate final JLabel jFlag;\n\n\tpublic LoadoutSeparatorTableCell(final JTable jTable, final SeparatorList<Loadout> separatorList) {\n\t\tsuper(jTable, separatorList);\n\n\t\tjOwner = new JLabel();\n\t\tFont largeFont = new Font(jOwner.getFont().getName(), Font.BOLD, jOwner.getFont().getSize() + 1);\n\t\tjOwner.setBorder(null);\n\t\tjOwner.setBackground(Color.BLACK);\n\t\tjOwner.setForeground(Color.WHITE);\n\t\tjOwner.setOpaque(true);\n\t\tjOwner.setFont(largeFont);\n\n\t\tjLocation = new JLabel();\n\t\tjLocation.setBorder(null);\n\t\tjLocation.setBackground(Color.BLACK);\n\t\tjLocation.setForeground(Color.WHITE);\n\t\tjLocation.setOpaque(true);\n\t\tjLocation.setFont(largeFont);\n\n\t\tjFlag = new JLabel();\n\t\tjFlag.setBorder(null);\n\t\tjFlag.setOpaque(false);\n\t\tjFlag.setBackground(Color.BLACK);\n\t\tjFlag.setFont(largeFont);\n\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addGap(1)\n\t\t\t\t\t.addComponent(jOwner, 0, 0, Integer.MAX_VALUE)\n\t\t\t\t\t.addGap(1)\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addGap(1)\n\t\t\t\t\t.addComponent(jLocation, 0, 0, Integer.MAX_VALUE)\n\t\t\t\t\t.addGap(1)\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jExpand)\n\t\t\t\t\t.addGap(1)\n\t\t\t\t\t.addComponent(jFlag, 0, 0, Integer.MAX_VALUE)\n\t\t\t\t)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addGap(1)\n\t\t\t\t.addComponent(jOwner, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jLocation, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addGap(1)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jExpand, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jFlag, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGap(2)\n\t\t);\n\t}\n\n\t@Override\n\tprotected void configure(final SeparatorList.Separator<?> separator) {\n\t\tLoadout module = (Loadout) separator.first();\n\t\tif (module == null) { // handle 'late' rendering calls after this separator is invalid\n\t\t\treturn;\n\t\t}\n\t\tjLocation.setVisible(module.isFirst());\n\t\tjLocation.setText(TabsLoadout.get().whitespace10(module.getLocation().getLocation()));\n\t\tjOwner.setVisible(module.isFirst());\n\t\tjOwner.setText(TabsLoadout.get().whitespace10(module.getOwnerName()));\n\t\tjFlag.setText(module.getFlag());\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/loadout/LoadoutTableFormat.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.loadout;\n\nimport java.util.Comparator;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.ModulePriceValue;\nimport net.nikr.eve.jeveasset.i18n.TabsLoadout;\n\n/**\n *\n * @author Candle\n */\npublic enum LoadoutTableFormat implements EnumTableColumn<Loadout> {\n\tNAME(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsLoadout.get().columnName();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Loadout from) {\n\t\t\treturn from.getName();\n\t\t}\n\t},\n\tVALUE(ModulePriceValue.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsLoadout.get().columnValue();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Loadout from) {\n\t\t\treturn from.getModulePriceValue();\n\t\t}\n\t};\n\n\tprivate final Class<?> type;\n\tprivate final Comparator<?> comparator;\n\tprivate LoadoutTableFormat(final Class<?> type) {\n\t\tthis.type = type;\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\n\t}\n\t@Override\n\tpublic Class<?> getType() {\n\t\treturn type;\n\t}\n\t@Override\n\tpublic Comparator<?> getComparator() {\n\t\treturn comparator;\n\t}\n\t@Override\n\tpublic String toString() {\n\t\treturn getColumnName();\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/loadout/LoadoutsExportDialog.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.loadout;\n\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport javax.swing.*;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.DocumentFactory;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\nimport net.nikr.eve.jeveasset.i18n.TabsLoadout;\n\n\npublic class LoadoutsExportDialog extends JDialogCentered {\n\n\tprivate enum LoadoutsExportAction {\n\t\tOK, CANCEL\n\t}\n\n\tprivate final JTextField jName;\n\tprivate final JTextPane jDescription;\n\tprivate final JButton jOK;\n\n\tprivate final LoadoutsTab loadoutsDialog;\n\n\tpublic LoadoutsExportDialog(final Program program, final LoadoutsTab loadoutsDialog) {\n\t\tsuper(program, TabsLoadout.get().export(), Images.TOOL_SHIP_LOADOUTS.getImage());\n\t\tthis.loadoutsDialog = loadoutsDialog;\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tJLabel jNameLabel = new JLabel(TabsLoadout.get().name());\n\t\tjPanel.add(jNameLabel);\n\n\t\tjName = new JTextField();\n\t\tjName.setDocument(DocumentFactory.getMaxLengthPlainDocument(40)); //max length: 40\n\t\tjPanel.add(jName);\n\n\t\tJLabel jDescriptionLabel = new JLabel(TabsLoadout.get().description());\n\t\tjPanel.add(jDescriptionLabel);\n\n\t\tjDescription = new JTextPane();\n\t\tjDescription.setDocument(DocumentFactory.getMaxLengthStyledDocument(400)); //max length: 400\n\t\tJScrollPane jDescriptionScrollPane = new JScrollPane(jDescription);\n\t\tjPanel.add(jDescriptionScrollPane);\n\n\t\tjOK = new JButton(TabsLoadout.get().oK());\n\t\tjOK.setActionCommand(LoadoutsExportAction.OK.name());\n\t\tjOK.addActionListener(listener);\n\t\tjPanel.add(jOK);\n\n\t\tJButton jCancel = new JButton(TabsLoadout.get().cancel());\n\t\tjCancel.setActionCommand(LoadoutsExportAction.CANCEL.name());\n\t\tjCancel.addActionListener(listener);\n\t\tjPanel.add(jCancel);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t\t.addComponent(jNameLabel)\n\t\t\t\t\t.addComponent(jName, 373, 373, 373)\n\t\t\t\t\t.addComponent(jDescriptionLabel)\n\t\t\t\t\t.addComponent(jDescriptionScrollPane, 373, 373, 373)\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jNameLabel)\n\t\t\t\t.addComponent(jName, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t.addComponent(jDescriptionLabel)\n\t\t\t\t.addComponent(jDescriptionScrollPane, 110, 110, 110)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t);\n\t}\n\n\tpublic String getFittingName() {\n\t\treturn jName.getText();\n\t}\n\tpublic String getFittingDescription() {\n\t\tString text = jDescription.getText();\n\t\ttext = text.replace(\"\\r\\n\", \"&lt;br&gt;\");\n\t\ttext = text.replace(\"\\r\", \"&lt;br&gt;\");\n\t\ttext = text.replace(\"\\n\", \"&lt;br&gt;\");\n\t\treturn text;\n\t}\n\n\t@Override\n\tprotected JComponent getDefaultFocus() {\n\t\treturn jName;\n\t}\n\n\t@Override\n\tprotected JButton getDefaultButton() {\n\t\treturn jOK;\n\t}\n\n\t@Override\n\tprotected void windowShown() { }\n\n\t@Override\n\tprotected void save() {\n\t\tloadoutsDialog.exportXml();\n\t}\n\n\t@Override\n\tpublic void setVisible(final boolean b) {\n\t\tif (b) {\n\t\t\tjName.setText(\"\");\n\t\t\tjDescription.setText(\"\");\n\t\t}\n\t\tsuper.setVisible(b);\n\t}\n\n\tprivate class ListenerClass implements ActionListener {\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (LoadoutsExportAction.OK.name().equals(e.getActionCommand())) {\n\t\t\t\tsave();\n\t\t\t}\n\t\t\tif (LoadoutsExportAction.CANCEL.name().equals(e.getActionCommand())) {\n\t\t\t\tsetVisible(false);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/loadout/LoadoutsTab.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.loadout;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.FilterList;\nimport ca.odell.glazedlists.ListSelection;\nimport ca.odell.glazedlists.SeparatorList;\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.io.File;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport javax.swing.GroupLayout;\nimport javax.swing.JButton;\nimport javax.swing.JComboBox;\nimport javax.swing.JComponent;\nimport javax.swing.JLabel;\nimport javax.swing.JMenu;\nimport javax.swing.JMenuItem;\nimport javax.swing.JOptionPane;\nimport javax.swing.JPopupMenu;\nimport javax.swing.JScrollPane;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.StringComparators;\nimport net.nikr.eve.jeveasset.gui.shared.JOptionInput;\nimport net.nikr.eve.jeveasset.gui.shared.components.JCustomFileChooser;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDropDownButton;\nimport net.nikr.eve.jeveasset.gui.shared.components.JFixedToolBar;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabSecondary;\nimport net.nikr.eve.jeveasset.gui.shared.components.JTextDialog;\nimport net.nikr.eve.jeveasset.gui.shared.components.ListComboBoxModel;\nimport net.nikr.eve.jeveasset.gui.shared.filter.ExportDialog;\nimport net.nikr.eve.jeveasset.gui.shared.filter.SimpleFilterControl;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuColumns;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.JSeparatorTable;\nimport net.nikr.eve.jeveasset.gui.shared.table.PaddingTableCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\nimport net.nikr.eve.jeveasset.gui.tabs.loadout.Loadout.LoadoutMatcher;\nimport net.nikr.eve.jeveasset.i18n.General;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\nimport net.nikr.eve.jeveasset.i18n.TabsLoadout;\nimport net.nikr.eve.jeveasset.io.local.EveFittingWriter;\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n\npublic class LoadoutsTab extends JMainTabSecondary {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(LoadoutsTab.class);\n\n\tprivate enum LoadoutsAction {\n\t\tFILTER,\n\t\tOWNERS,\n\t\tEXPORT,\n\t\tEXPORT_EVE_SELECTED,\n\t\tEXPORT_EVE_ALL,\n\t\tEXPORT_EFT,\n\t\tCOLLAPSE,\n\t\tEXPAND\n\t}\n\n\t//GUI\n\tprivate final JComboBox<String> jOwners;\n\tprivate final JComboBox<String> jShips;\n\tprivate final JButton jExpand;\n\tprivate final JButton jCollapse;\n\tprivate final JSeparatorTable jTable;\n\tprivate final JDropDownButton jExport;\n\tprivate final LoadoutsExportDialog loadoutsExportDialog;\n\tprivate final JCustomFileChooser jXmlFileChooser;\n\tprivate final JTextDialog jEftDialog;\n\n\t//Table\n\tprivate final EventList<Loadout> eventList;\n\tprivate final FilterList<Loadout> filterList;\n\tprivate final SeparatorList<Loadout> separatorList;\n\tprivate final DefaultEventSelectionModel<Loadout> selectionModel;\n\tprivate final DefaultEventTableModel<Loadout> tableModel;\n\tprivate final EnumTableFormatAdaptor<LoadoutTableFormat, Loadout> tableFormat;\n\n\t//Dialog\n\tprivate final ExportDialog<Loadout> exportDialog;\n\n\tprivate final LoadoutData loadoutData;\n\n\tpublic static final String NAME = \"loadouts\"; //Not to be changed!\n\n\tpublic LoadoutsTab(final Program program) {\n\t\tsuper(program, NAME, TabsLoadout.get().ship(), Images.TOOL_SHIP_LOADOUTS.getIcon(), true);\n\n\t\tloadoutData = new LoadoutData(program);\n\n\t\tloadoutsExportDialog = new LoadoutsExportDialog(program, this);\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tjXmlFileChooser = new JCustomFileChooser(\"xml\");\n\n\t\tjEftDialog = new JTextDialog(program.getMainWindow().getFrame());\n\n\t\tJFixedToolBar jToolBarTop = new JFixedToolBar();\n\n\t\tJLabel jOwnersLabel = new JLabel(TabsLoadout.get().owner());\n\t\tjToolBarTop.add(jOwnersLabel);\n\n\t\tjToolBarTop.addSpace(5);\n\n\t\tjOwners = new JComboBox<>();\n\t\tjOwners.setActionCommand(LoadoutsAction.OWNERS.name());\n\t\tjOwners.addActionListener(listener);\n\t\tjToolBarTop.addComboBox(jOwners, 200);\n\n\t\tjToolBarTop.addSpace(15);\n\n\t\tJLabel jShipsLabel = new JLabel(TabsLoadout.get().ship1());\n\t\tjToolBarTop.add(jShipsLabel);\n\n\t\tjToolBarTop.addSpace(5);\n\n\t\tjShips = new JComboBox<>();\n\t\tjShips.setActionCommand(LoadoutsAction.FILTER.name());\n\t\tjShips.addActionListener(listener);\n\t\tjToolBarTop.addComboBox(jShips, 0);\n\n\t\tJFixedToolBar jToolBarBottom = new JFixedToolBar();\n\n\t\tjExport = new JDropDownButton(GuiShared.get().export(), Images.DIALOG_CSV_EXPORT.getIcon());\n\t\tjToolBarBottom.addButton(jExport);\n\n\t\tJMenuItem jExportSqlCsvHtml = new JMenuItem(TabsLoadout.get().exportTableData(), Images.DIALOG_CSV_EXPORT.getIcon());\n\t\tjExportSqlCsvHtml.setActionCommand(LoadoutsAction.EXPORT.name());\n\t\tjExportSqlCsvHtml.addActionListener(listener);\n\t\tjExport.add(jExportSqlCsvHtml);\n\n\t\tJMenu jMenu = new JMenu(TabsLoadout.get().exportEveXml());\n\t\tjMenu.setIcon(Images.MISC_EVE.getIcon());\n\t\tjExport.add(jMenu);\n\n\t\tJMenuItem jExportEveXml = new JMenuItem(TabsLoadout.get().exportEveXmlSelected());\n\t\tjExportEveXml.setActionCommand(LoadoutsAction.EXPORT_EVE_SELECTED.name());\n\t\tjExportEveXml.addActionListener(listener);\n\t\tjMenu.add(jExportEveXml);\n\n\t\tJMenuItem jExportEveXmlAll = new JMenuItem(TabsLoadout.get().exportEveXmlAll());\n\t\tjExportEveXmlAll.setActionCommand(LoadoutsAction.EXPORT_EVE_ALL.name());\n\t\tjExportEveXmlAll.addActionListener(listener);\n\t\tjMenu.add(jExportEveXmlAll);\n\n\t\tJMenuItem jExportEft = new JMenuItem(TabsLoadout.get().exportEft());\n\t\tjExportEft.setActionCommand(LoadoutsAction.EXPORT_EFT.name());\n\t\tjExportEft.addActionListener(listener);\n\t\tjExportEft.setIcon(Images.TOOL_SHIP_LOADOUTS.getIcon());\n\t\tjExport.add(jExportEft);\n\n\t\tjToolBarBottom.addGlue();\n\n\t\tjCollapse = new JButton(TabsLoadout.get().collapse(), Images.MISC_COLLAPSED.getIcon());\n\t\tjCollapse.setActionCommand(LoadoutsAction.COLLAPSE.name());\n\t\tjCollapse.addActionListener(listener);\n\t\tjToolBarBottom.addButton(jCollapse);\n\n\t\tjExpand = new JButton(TabsLoadout.get().expand(), Images.MISC_EXPANDED.getIcon());\n\t\tjExpand.setActionCommand(LoadoutsAction.EXPAND.name());\n\t\tjExpand.addActionListener(listener);\n\t\tjToolBarBottom.addButton(jExpand);\n\n\t\t//Table Format\n\t\ttableFormat = TableFormatFactory.loadoutTableFormat();\n\t\t//Backend\n\t\teventList = EventListManager.create();\n\t\t//Filter\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tfilterList = new FilterList<>(eventList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t//Separator\n\t\tseparatorList = new SeparatorList<>(filterList, new LoadoutSeparatorComparator(), 1, Integer.MAX_VALUE);\n\t\t//Table Model\n\t\ttableModel = EventModels.createTableModel(separatorList, tableFormat);\n\t\t//Table\n\t\tjTable = new JSeparatorTable(program, tableModel, separatorList);\n\t\tjTable.setSeparatorRenderer(new LoadoutSeparatorTableCell(jTable, separatorList));\n\t\tjTable.setSeparatorEditor(new LoadoutSeparatorTableCell(jTable, separatorList));\n\t\tPaddingTableCellRenderer.install(jTable, 3);\n\t\t//Selection Model\n\t\tselectionModel = EventModels.createSelectionModel(separatorList);\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\n\t\tjTable.setSelectionModel(selectionModel);\n\t\t//Listeners\n\t\tinstallTable(jTable);\n\t\t//Scroll\n\t\tJScrollPane jTableScroll = new JScrollPane(jTable);\n\t\t//Menu\n\t\tinstallTableTool(new LoadoutTableMenu(), tableFormat, null, tableModel, jTable, eventList, Loadout.class);\n\n\t\texportDialog = new ExportDialog<>(program.getMainWindow().getFrame(), NAME, null, new LoadoutsFilterControl(), tableFormat, filterList);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t.addComponent(jToolBarTop, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t.addComponent(jToolBarBottom, jToolBarBottom.getMinimumSize().width, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jToolBarTop, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t.addComponent(jToolBarBottom, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t}\n\n\t@Override\n\tpublic void updateData() {\n\t\tif (!program.getOwnerNames(false).isEmpty()) {\n\t\t\tjOwners.setEnabled(true);\n\t\t\tString selectedItem = (String) jOwners.getSelectedItem();\n\t\t\tjOwners.setModel(new ListComboBoxModel<>(program.getOwnerNames(true)));\n\t\t\tif (selectedItem != null && program.getOwnerNames(true).contains(selectedItem)) {\n\t\t\t\tjOwners.setSelectedItem(selectedItem);\n\t\t\t} else {\n\t\t\t\tjOwners.setSelectedIndex(0);\n\t\t\t}\n\t\t} else {\n\t\t\tjOwners.setEnabled(false);\n\t\t\tjOwners.setModel(new ListComboBoxModel<>());\n\t\t\tjOwners.getModel().setSelectedItem(TabsLoadout.get().no());\n\t\t\tjShips.setModel(new ListComboBoxModel<>());\n\t\t\tjShips.getModel().setSelectedItem(TabsLoadout.get().no());\n\t\t}\n\t\tupdateTable();\n\t}\n\n\t@Override\n\tpublic void clearData() {\n\t\ttry {\n\t\t\teventList.getReadWriteLock().writeLock().lock();\n\t\t\teventList.clear();\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t}\n\n\t@Override\n\tpublic void updateCache() { }\n\n\t@Override\n\tpublic Collection<LocationType> getLocations() {\n\t\ttry {\n\t\t\teventList.getReadWriteLock().readLock().lock();\n\t\t\treturn new ArrayList<>(eventList);\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t}\n\n\tpublic void selectShip(MyAsset asset) {\n\t\tString owner = (String) jOwners.getSelectedItem();\n\t\t//Select the owner (if all is not selected)\n\t\tif (!owner.equals(General.get().all())) {\n\t\t\tjOwners.setSelectedItem(asset.getOwnerName());\n\t\t}\n\t\t//Select Ship\n\t\tString selecctedShip = asset.getName() + \" #\" + asset.getItemID();\n\t\tjShips.setSelectedItem(selecctedShip);\n\t}\n\n\tprivate String browse() {\n\t\tFile windows = new File(javax.swing.filechooser.FileSystemView.getFileSystemView().getDefaultDirectory()\n\t\t\t\t\t\t\t+ File.separator + \"EVE\"\n\t\t\t\t\t\t\t+ File.separator + \"fittings\"\n\t\t\t\t\t\t\t);\n\t\tFile mac = new File(System.getProperty(\"user.home\", \".\")\n\t\t\t\t\t\t\t+ File.separator + \"Library\"\n\t\t\t\t\t\t\t+ File.separator + \"Preferences\"\n\t\t\t\t\t\t\t+ File.separator + \"EVE Online Preferences\"\n\t\t\t\t\t\t\t+ File.separator + \"p_drive\"\n\t\t\t\t\t\t\t+ File.separator + \"My Documents\"\n\t\t\t\t\t\t\t+ File.separator + \"EVE\"\n\t\t\t\t\t\t\t+ File.separator + \"fittings\"\n\t\t\t\t\t\t\t);\n\t\tLOG.info(\"Mac Browsing: {}\", mac.getAbsolutePath());\n\t\tif (windows.exists()) { //Windows\n\t\t\tjXmlFileChooser.setCurrentDirectory(windows);\n\t\t} else if (mac.exists()) { //Mac\n\t\t\t//PENDING TEST if fittings path is set correct on mac\n\t\t\t//\t\t\tshould open: ~library/preferences/eve online preferences/p_drive/my documents/eve/overview\n\t\t\tjXmlFileChooser.setCurrentDirectory(mac);\n\t\t} else { //Others: use program directory is there is only Win & Mac clients\n\t\t\tjXmlFileChooser.setCurrentDirectory(new File(FileUtil.getUserDirectory()));\n\t\t}\n\t\tint bFound = jXmlFileChooser.showSaveDialog(program.getMainWindow().getFrame());\n\t\tif (bFound == JCustomFileChooser.APPROVE_OPTION) {\n\t\t\tFile file = jXmlFileChooser.getSelectedFile();\n\t\t\treturn file.getAbsolutePath();\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic void exportXml() {\n\t\tString fitName = loadoutsExportDialog.getFittingName();\n\t\tString fitDescription = loadoutsExportDialog.getFittingDescription();\n\t\tif (!fitName.isEmpty()) {\n\t\t\tString selectedShip = (String) jShips.getSelectedItem();\n\t\t\tMyAsset exportAsset = null;\n\t\t\tfor (MyAsset asset : program.getAssetsList()) {\n\t\t\t\t\tString key = asset.getName() + \" #\" + asset.getItemID();\n\t\t\t\t\tif (selectedShip.equals(key)) {\n\t\t\t\t\t\texportAsset = asset;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tloadoutsExportDialog.setVisible(false);\n\t\t\tif (exportAsset == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tString filename = browse();\n\t\t\tif (filename != null) {\n\t\t\t\tEveFittingWriter.save(Collections.singletonList(exportAsset), filename, fitName, fitDescription);\n\t\t\t}\n\t\t} else {\n\t\t\tJOptionPane.showMessageDialog(loadoutsExportDialog.getDialog(),\n\t\t\t\t\tTabsLoadout.get().name1(),\n\t\t\t\t\tTabsLoadout.get().empty(),\n\t\t\t\t\tJOptionPane.PLAIN_MESSAGE);\n\t\t}\n\t}\n\n\tprivate void exportEFT() {\n\t\tString selectedShip = (String) jShips.getSelectedItem();\n\t\tMyAsset exportAsset = null;\n\t\tfor (MyAsset asset : program.getAssetsList()) {\n\t\t\t\tString key = asset.getName() + \" #\" + asset.getItemID();\n\t\t\t\tif (selectedShip.equals(key)) {\n\t\t\t\t\texportAsset = asset;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\tif (exportAsset == null) {\n\t\t\treturn;\n\t\t}\n\t\tString buildName = getBuildName(exportAsset.getName());\n\t\tif (buildName == null) {\n\t\t\treturn; //Cancel\n\t\t}\n\t\tMap<String, Long> droneBay = new HashMap<>();\n\t\tMap<String, Long> cargo = new HashMap<>();\n\t\tMap<String, Map<Integer, String>> modulesByFlag = new HashMap<>();\n\t\tfor (MyAsset asset : exportAsset.getAssets()) {\n\t\t\tif (asset.getFlag().equals(\"DroneBay\")) {\n\t\t\t\tLong count = droneBay.get(asset.getTypeName());\n\t\t\t\tif (count == null) {\n\t\t\t\t\tcount = 0L;\n\t\t\t\t}\n\t\t\t\tdroneBay.put(asset.getTypeName(), count + asset.getCount());\n\t\t\t} else if (asset.getFlag().equals(\"Cargo\")) {\n\t\t\t\tLong count = cargo.get(asset.getTypeName());\n\t\t\t\tif (count == null) {\n\t\t\t\t\tcount = 0L;\n\t\t\t\t}\n\t\t\t\tcargo.put(asset.getTypeName(), count + asset.getCount());\n\t\t\t} else if (asset.getItem().getCategory().equals(\"Charge\")){\n\t\t\t\tLong count = cargo.get(asset.getTypeName());\n\t\t\t\tif (count == null) {\n\t\t\t\t\tcount = 0L;\n\t\t\t\t}\n\t\t\t\tcargo.put(asset.getTypeName(), count + asset.getCount());\n\t\t\t} \n\t\t\t\n\t\t\telse {\n\t\t\t\tString flag = asset.getFlag().replaceAll(\"\\\\d\", \"\");\n\t\t\t\tint index;\n\t\t\t\ttry {\n\t\t\t\t\tindex = Integer.valueOf(asset.getFlag().replaceAll(\"\\\\D\", \"\"));\n\t\t\t\t} catch (NumberFormatException ex) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tMap<Integer, String> modules = modulesByFlag.get(flag);\n\t\t\t\tif (modules == null) {\n\t\t\t\t\tmodules = new HashMap<>();\n\t\t\t\t\tmodulesByFlag.put(flag, modules);\n\t\t\t\t}\n\t\t\t\tif (asset.getCount() > 1) {\n\t\t\t\t\tmodules.put(index, asset.getTypeName() + \" x\" + asset.getCount() + \"\\r\\n\");\n\t\t\t\t} else {\n\t\t\t\t\tmodules.put(index, asset.getTypeName() + \"\\r\\n\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tStringBuilder builder = new StringBuilder();\n\t\t//Type and Name\n\t\tbuilder.append(\"[\");\n\t\tbuilder.append(exportAsset.getTypeName());\n\t\tbuilder.append(\", \");\n\t\tbuilder.append(buildName);\n\t\tbuilder.append(\"]\\r\\n\");\n\t\twriteModuls(builder, modulesByFlag.get(\"LoSlot\"));\n\t\twriteModuls(builder, modulesByFlag.get(\"MedSlot\"));\n\t\twriteModuls(builder, modulesByFlag.get(\"HiSlot\"));\n\t\twriteModuls(builder, modulesByFlag.get(\"RigSlot\"));\n\t\twriteModuls(builder, modulesByFlag.get(\"SubSystem\"));\n\t\twriteCount(builder, droneBay);\n\t\twriteCount(builder, cargo);\n\n\t\tjEftDialog.exportText(builder.toString());\n\t}\n\n\tprivate void writeModuls(StringBuilder builder, Map<Integer, String> modules) {\n\t\tif (modules == null || modules.isEmpty()) {\n\t\t\treturn;\n\t\t}\n\t\tbuilder.append(\"\\r\\n\");\n\t\tfor (String module : modules.values()) {\n\t\t\tbuilder.append(module);\n\t\t}\n\t}\n\tprivate void writeCount(StringBuilder builder, Map<String, Long> modules) {\n\t\tif (modules == null || modules.isEmpty()) {\n\t\t\treturn;\n\t\t}\n\t\tbuilder.append(\"\\r\\n\");\n\t\tfor (Map.Entry<String, Long> entry : modules.entrySet()) {\n\t\t\tif (entry.getValue() > 1) {\n\t\t\t\tbuilder.append(entry.getKey());\n\t\t\t\tbuilder.append(\" x\");\n\t\t\t\tbuilder.append(entry.getValue());\n\t\t\t\tbuilder.append(\"\\r\\n\");\n\t\t\t} else {\n\t\t\t\tbuilder.append(entry.getKey());\n\t\t\t\tbuilder.append(\"\\r\\n\");\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate String getBuildName(String shipName) {\n\t\tString defaultName = shipName.replaceFirst(\"\\\\s*\\\\([^)]*\\\\)\\\\s*$\", \"\");\n\t\tString buildName = (String) JOptionInput.showInputDialog(program.getMainWindow().getFrame(), \"Enter Build Name\", \"Export EFT\", JOptionPane.PLAIN_MESSAGE, null, null, defaultName);\n\t\tif (buildName == null) {\n\t\t\treturn null; //Cancel\n\t\t} else if (buildName.isEmpty()) {\n\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(),\n\t\t\t\t\tTabsLoadout.get().name1(),\n\t\t\t\t\tTabsLoadout.get().empty(),\n\t\t\t\t\tJOptionPane.PLAIN_MESSAGE);\n\t\t\treturn getBuildName(defaultName);\n\t\t} else {\n\t\t\treturn buildName;\n\t\t}\n\t}\n\n\tprivate void updateTable() {\n\t\t//Save separator expanded/collapsed state\n\t\tjTable.saveExpandedState();\n\t\t//Update Data\n\t\tloadoutData.updateData(eventList);\n\t\t//Restore separator expanded/collapsed state\n\t\tjTable.loadExpandedState();\n\t}\n\n\tprivate class LoadoutTableMenu implements TableMenu<Loadout> {\n\t\t@Override\n\t\tpublic MenuData<Loadout> getMenuData() {\n\t\t\treturn new MenuData<>(selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getFilterMenu() {\n\t\t\treturn null;\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getColumnMenu() {\n\t\t\treturn new JMenuColumns<>(program, tableFormat, tableModel, jTable, NAME, false);\n\t\t}\n\n\t\t@Override\n\t\tpublic void addInfoMenu(JPopupMenu jPopupMenu) {\n\t\t\tJMenuInfo.module(jPopupMenu, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic void addToolMenu(JComponent jComponent) { }\n\t}\n\n\tprivate class ListenerClass implements ActionListener {\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (LoadoutsAction.OWNERS.name().equals(e.getActionCommand())) {\n\t\t\t\tString owner = (String) jOwners.getSelectedItem();\n\t\t\t\tList<String> charShips = new ArrayList<>();\n\t\t\t\tfor (MyAsset asset : program.getAssetsList()) {\n\t\t\t\t\tString key = asset.getName() + \" #\" + asset.getItemID();\n\t\t\t\t\tif (!asset.getItem().isShip() || !asset.isSingleton()) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tif (!owner.equals(asset.getOwnerName()) && !owner.equals(General.get().all())) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tcharShips.add(key);\n\t\t\t\t}\n\t\t\t\tif (!charShips.isEmpty()) {\n\t\t\t\t\tCollections.sort(charShips, StringComparators.CASE_INSENSITIVE);\n\t\t\t\t\tjExpand.setEnabled(true);\n\t\t\t\t\tjCollapse.setEnabled(true);\n\t\t\t\t\tjExport.setEnabled(true);\n\t\t\t\t\tjOwners.setEnabled(true);\n\t\t\t\t\tjShips.setEnabled(true);\n\t\t\t\t\tString selectedItem = (String) jShips.getSelectedItem();\n\t\t\t\t\tjShips.setModel(new ListComboBoxModel<>(charShips));\n\t\t\t\t\tif (selectedItem != null && charShips.contains(selectedItem)) {\n\t\t\t\t\t\tjShips.setSelectedItem(selectedItem);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjShips.setSelectedIndex(0);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tjExpand.setEnabled(false);\n\t\t\t\t\tjCollapse.setEnabled(false);\n\t\t\t\t\tjExport.setEnabled(false);\n\t\t\t\t\tjShips.setEnabled(false);\n\t\t\t\t\tjShips.setModel(new ListComboBoxModel<>());\n\t\t\t\t\tjShips.getModel().setSelectedItem(TabsLoadout.get().no1());\n\t\t\t\t}\n\t\t\t} else if (LoadoutsAction.FILTER.name().equals(e.getActionCommand())) {\n\t\t\t\tString selectedShip = (String) jShips.getSelectedItem();\n\t\t\t\tfilterList.setMatcher(new LoadoutMatcher(selectedShip));\n\t\t\t} else if (LoadoutsAction.COLLAPSE.name().equals(e.getActionCommand())) {\n\t\t\t\tjTable.expandSeparators(false);\n\t\t\t} else if (LoadoutsAction.EXPAND.name().equals(e.getActionCommand())) {\n\t\t\t\tjTable.expandSeparators(true);\n\t\t\t} else if (LoadoutsAction.EXPORT_EVE_SELECTED.name().equals(e.getActionCommand())) {\n\t\t\t\tloadoutsExportDialog.setVisible(true);\n\t\t\t} else if (LoadoutsAction.EXPORT_EVE_ALL.name().equals(e.getActionCommand())) {\n\t\t\t\tString filename = browse();\n\t\t\t\tList<MyAsset> ships = new ArrayList<>();\n\t\t\t\tfor (MyAsset asset : program.getAssetsList()) {\n\t\t\t\t\tif (!asset.getItem().isShip() || !asset.isSingleton() || asset.getAssets().isEmpty()) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tships.add(asset);\n\t\t\t\t}\n\t\t\t\tif (filename != null) {\n\t\t\t\t\tEveFittingWriter.save(new ArrayList<>(ships), filename);\n\t\t\t\t}\n\t\t\t} else if (LoadoutsAction.EXPORT_EFT.name().equals(e.getActionCommand())) {\n\t\t\t\texportEFT();\n\t\t\t} else if (LoadoutsAction.EXPORT.name().equals(e.getActionCommand())) {\n\t\t\t\texportDialog.setVisible(true);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate class LoadoutsFilterControl implements SimpleFilterControl<Loadout> {\n\n\t\t@Override\n\t\tpublic void saveSettings(final String msg) {\n\t\t\tprogram.saveSettings(\"Ship Loudouts Table: \" + msg); //Save Ship Loudout Export Settings (Filters not used)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/loyalty/LoyaltyPointsTab.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.loyalty;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.FilterList;\nimport ca.odell.glazedlists.ListSelection;\nimport ca.odell.glazedlists.SortedList;\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport ca.odell.glazedlists.swing.TableComparatorChooser;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.List;\nimport javax.swing.JComponent;\nimport javax.swing.JMenu;\nimport javax.swing.JPopupMenu;\nimport javax.swing.JScrollPane;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.my.MyLoyaltyPoints;\nimport net.nikr.eve.jeveasset.data.settings.tag.TagUpdate;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabPrimary;\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter;\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuColumns;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\nimport net.nikr.eve.jeveasset.gui.shared.table.PaddingTableCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\nimport net.nikr.eve.jeveasset.i18n.TabsLoyaltyPoints;\n\n\npublic class LoyaltyPointsTab extends JMainTabPrimary implements TagUpdate {\n\n\t//GUI\n\tprivate final JAutoColumnTable jTable;\n\n\t//Table\n\tprivate final LoyaltyPointsFilterControl filterControl;\n\tprivate final EnumTableFormatAdaptor<LoyaltyPointsTableFormat, MyLoyaltyPoints> tableFormat;\n\tprivate final DefaultEventTableModel<MyLoyaltyPoints> tableModel;\n\tprivate final EventList<MyLoyaltyPoints> eventList;\n\tprivate final FilterList<MyLoyaltyPoints> filterList;\n\tprivate final DefaultEventSelectionModel<MyLoyaltyPoints> selectionModel;\n\n\tpublic static final String NAME = \"loyaltypoints\"; //Not to be changed!\n\n\tpublic LoyaltyPointsTab(final Program program) {\n\t\tsuper(program, NAME, TabsLoyaltyPoints.get().loyaltyPoints(), Images.TOOL_LOYALTY_POINTS.getIcon(), true);\n\t\tlayout.setAutoCreateGaps(true);\n\n\t\t//Table Format\n\t\ttableFormat = TableFormatFactory.loyaltyPointsTableFormat();\n\t\t//Backend\n\t\teventList = program.getProfileData().getLoyaltyPointsEventList();\n\t\t//Sorting (per column)\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<MyLoyaltyPoints> sortedList = new SortedList<>(eventList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\n\t\t//Filter\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tfilterList = new FilterList<>(sortedList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\n\t\t//Table Model\n\t\ttableModel = EventModels.createTableModel(filterList, tableFormat);\n\t\t//Table\n\t\tjTable = new JAutoColumnTable(program, tableModel);\n\t\tjTable.setCellSelectionEnabled(true);\n\t\tjTable.setRowSelectionAllowed(true);\n\t\tjTable.setColumnSelectionAllowed(true);\n\t\tjTable.setRowHeight(MyLoyaltyPoints.IMAGE_SIZE.getSize());\n\t\tPaddingTableCellRenderer.install(jTable, 0, 5, 0, 5);\n\t\t//Sorting\n\t\tTableComparatorChooser<MyLoyaltyPoints> comparatorChooser = TableComparatorChooser.install(jTable, sortedList, TableComparatorChooser.MULTIPLE_COLUMN_MOUSE, tableFormat);\n\t\t//Selection Model\n\t\tselectionModel = EventModels.createSelectionModel(filterList);\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\n\t\tjTable.setSelectionModel(selectionModel);\n\n\t\t//Listeners\n\t\tinstallTable(jTable);\n\t\t//Scroll\n\t\tJScrollPane jTableScroll = new JScrollPane(jTable);\n\t\t//Table Filter\n\t\tfilterControl = new LoyaltyPointsFilterControl(sortedList);\n\t\t//Menu\n\t\tinstallTableTool(new LoyaltyPointsTableMenu(), tableFormat, comparatorChooser, tableModel, jTable, filterControl, MyLoyaltyPoints.class);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t}\n\n\t@Override\n\tpublic void updateTags() {\n\t\tbeforeUpdateData();\n\t\ttableModel.fireTableDataChanged();\n\t\tfilterControl.refilter();\n\t\tafterUpdateData();\n\t}\n\n\t@Override\n\tpublic void clearData() { }\n\n\t@Override\n\tpublic void updateCache() {\n\t\tfilterControl.createCache();\n\t}\n\n\t@Override\n\tpublic Collection<LocationType> getLocations() {\n\t\treturn new ArrayList<>(); //LocationsType\n\t}\n\n\tpublic boolean isFiltersEmpty() {\n\t\treturn filterControl.isFiltersEmpty();\n\t}\n\n\tpublic void addFilters(final List<Filter> filters) {\n\t\tfilterControl.addFilters(filters);\n\t}\n\n\tpublic void clearFilters() {\n\t\tfilterControl.clearCurrentFilters();\n\t}\n\n\tpublic String getCurrentFilterName() {\n\t\treturn filterControl.getCurrentFilterName();\n\t}\n\n\tprivate class LoyaltyPointsTableMenu implements TableMenu<MyLoyaltyPoints> {\n\t\t@Override\n\t\tpublic MenuData<MyLoyaltyPoints> getMenuData() {\n\t\t\treturn new MenuData<>(selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getFilterMenu() {\n\t\t\treturn filterControl.getMenu(jTable, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getColumnMenu() {\n\t\t\treturn new JMenuColumns<>(program, tableFormat, tableModel, jTable, NAME);\n\t\t}\n\n\t\t@Override\n\t\tpublic void addInfoMenu(JPopupMenu jPopupMenu) { }\n\n\t\t@Override\n\t\tpublic void addToolMenu(JComponent jComponent) { }\n\t}\n\n\tprivate class LoyaltyPointsFilterControl extends FilterControl<MyLoyaltyPoints> {\n\n\t\tpublic LoyaltyPointsFilterControl(EventList<MyLoyaltyPoints> exportEventList) {\n\t\t\tsuper(program.getMainWindow().getFrame(),\n\t\t\t\t\tNAME,\n\t\t\t\t\ttableFormat,\n\t\t\t\t\teventList,\n\t\t\t\t\texportEventList,\n\t\t\t\t\tfilterList\n\t\t\t\t\t);\n\t\t}\n\n\t\t@Override\n\t\tpublic void saveSettings(final String msg) {\n\t\t\tprogram.saveSettings(\"Loyalty Points Table: \" + msg); //Save Loyalty Points Filters and Export Settings\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/loyalty/LoyaltyPointsTableFormat.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.loyalty;\n\nimport java.util.Comparator;\nimport net.nikr.eve.jeveasset.data.api.my.MyLoyaltyPoints;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.TextIcon;\nimport net.nikr.eve.jeveasset.i18n.TabsLoyaltyPoints;\n\n\npublic enum LoyaltyPointsTableFormat implements EnumTableColumn<MyLoyaltyPoints> {\n\tOWNER(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsLoyaltyPoints.get().columnOwner();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyLoyaltyPoints from) {\n\t\t\treturn from.getOwnerName();\n\t\t}\n\t},\n\tCORPORATION_NAME(TextIcon.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsLoyaltyPoints.get().columnCorporationName();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyLoyaltyPoints from) {\n\t\t\treturn from.getTextIcon();\n\t\t}\n\t},\n\tLOYALTY_POINTS(Long.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsLoyaltyPoints.get().columnLoyaltyPoints();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyLoyaltyPoints from) {\n\t\t\treturn from.getLoyaltyPoints();\n\t\t}\n\t};\n\n\tprivate final Class<?> type;\n\tprivate final Comparator<?> comparator;\n\n\tprivate LoyaltyPointsTableFormat(final Class<?> type) {\n\t\tthis.type = type;\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\n\t}\n\t@Override\n\tpublic Class<?> getType() {\n\t\treturn type;\n\t}\n\t@Override\n\tpublic Comparator<?> getComparator() {\n\t\treturn comparator;\n\t}\n\t@Override\n\tpublic String toString() {\n\t\treturn getColumnName();\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/loyalty/TotalLoyaltyPoints.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.loyalty;\r\n\r\nimport net.nikr.eve.jeveasset.data.api.my.MyLoyaltyPoints;\r\nimport net.nikr.eve.jeveasset.i18n.TabsLoyaltyPoints;\r\n\r\n\r\npublic class TotalLoyaltyPoints extends MyLoyaltyPoints {\r\n\r\n\tprivate int totalLoyaltyPoints = 0;\r\n\r\n\tpublic TotalLoyaltyPoints(MyLoyaltyPoints rawLoyaltyPoints) {\r\n\t\tsuper(rawLoyaltyPoints, null);\r\n\t\tsetCorporationName(rawLoyaltyPoints.getCorporationName());\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getOwnerName() {\r\n\t\treturn TabsLoyaltyPoints.get().total(); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/OverriddenMethodBody\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Integer getLoyaltyPoints() {\r\n\t\treturn totalLoyaltyPoints;\r\n\t}\r\n\r\n\tpublic void add(MyLoyaltyPoints loyaltyPoints) {\r\n\t\ttotalLoyaltyPoints += loyaltyPoints.getLoyaltyPoints();\r\n\t}\r\n\t\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/materials/Material.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\n\npackage net.nikr.eve.jeveasset.gui.tabs.materials;\n\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.data.settings.types.ItemType;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.data.settings.types.PriceType;\nimport net.nikr.eve.jeveasset.gui.shared.CopyHandler.CopySeparator;\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\n\n\npublic class Material implements Comparable<Material>, LocationType, ItemType, PriceType, CopySeparator {\n\n\tpublic enum MaterialType {\n\t\tLOCATIONS(2, 1, 1),\n\t\tLOCATIONS_TOTAL(2, 2, 1),\n\t\tLOCATIONS_ALL(2, 2, 2),\n\t\tSUMMARY(1, 1, 1),\n\t\tSUMMARY_TOTAL(1, 2, 1),\n\t\tSUMMARY_ALL(1, 2, 2);\n\n\t\tprivate final int headerOrder;\n\t\tprivate final int goupeOrder;\n\t\tprivate final int nameOrder;\n\t\tprivate MaterialType(final int headerOrder, final int goupeOrder, final int nameOrder) {\n\t\t\tthis.headerOrder = headerOrder;\n\t\t\tthis.goupeOrder = goupeOrder;\n\t\t\tthis.nameOrder = nameOrder;\n\t\t}\n\n\t\tpublic int getHeaderOrder() {\n\t\t\treturn headerOrder;\n\t\t}\n\n\t\tpublic int getGoupeOrder() {\n\t\t\treturn goupeOrder;\n\t\t}\n\n\t\tpublic int getNameOrder() {\n\t\t\treturn nameOrder;\n\t\t}\n\t}\n\n\tprivate final String header;\n\tprivate final String group;\n\tprivate final String name;\n\tprivate final MyLocation location; //New objects are created by updateData() - no need to update\n\tprivate final Item item;\n\tprivate final Integer typeID;\n\n\tprivate double value = 0;\n\tprivate long count = 0;\n\tprivate boolean first = false;\n\tprivate final Double price;\n\tprivate final MaterialType type;\n\n\tpublic Material(final MaterialType type, final MyAsset asset, final String header, final String group, final String name) {\n\t\tthis.type = type;\n\t\tthis.header = header;\n\t\tthis.group = group;\n\t\tthis.name = name;\n\t\tif (asset != null) {\n\t\t\t//Has item\n\t\t\tif (type == MaterialType.LOCATIONS || type == MaterialType.SUMMARY) {\n\t\t\t\tthis.item = asset.getItem();\n\t\t\t\tthis.typeID = asset.getTypeID();\n\t\t\t\tthis.price = asset.getDynamicPrice();\n\t\t\t} else {\n\t\t\t\tthis.item = new Item(0);\n\t\t\t\tthis.price = null;\n\t\t\t\tthis.typeID = null;\n\t\t\t}\n\t\t\t//Has location\n\t\t\tif (type == MaterialType.LOCATIONS || type == MaterialType.LOCATIONS_TOTAL || type == MaterialType.LOCATIONS_ALL) {\n\t\t\t\tlocation = asset.getLocation();\n\t\t\t} else {\n\t\t\t\tlocation = MyLocation.create(0);\n\t\t\t}\n\t\t} else {\n\t\t\tlocation = MyLocation.create(0);\n\t\t\tthis.item = new Item(0);\n\t\t\tthis.price = null;\n\t\t\tthis.typeID = null;\n\t\t}\n\t}\n\n\tpublic void updateValue(final long updateCount, final double updatePrice) {\n\t\tthis.count = this.count + updateCount;\n\t\tthis.value = this.value + (updateCount * updatePrice);\n\t}\n\n\tpublic long getCount() {\n\t\treturn count;\n\t}\n\n\tpublic String getHeader() {\n\t\treturn header;\n\t}\n\n\t@Override\n\tpublic Item getItem() {\n\t\treturn item;\n\t}\n\n\t@Override\n\tpublic long getItemCount() {\n\t\treturn getCount();\n\t}\n\n\t@Override\n\tpublic MyLocation getLocation() {\n\t\treturn location;\n\t}\n\n\tpublic Integer getTypeID() {\n\t\treturn typeID;\n\t}\n\n\tpublic String getGroup() {\n\t\treturn group;\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic MaterialType getType() {\n\t\treturn type;\n\t}\n\n\tpublic boolean isFirst() {\n\t\treturn first;\n\t}\n\n\tpublic void first() {\n\t\tfirst = true;\n\t}\n\n\t@Override\n\tpublic Double getDynamicPrice() {\n\t\treturn price;\n\t}\n\n\tpublic double getValue() {\n\t\treturn Formatter.round(value, 2);\n\t}\n\n\tpublic String getSeparator() {\n\t\treturn type.getHeaderOrder() + header + type.getGoupeOrder() + group;\n\t}\n\n\tprotected String getCompare() {\n\t\treturn type.getHeaderOrder() + header + type.getGoupeOrder() + group + type.getNameOrder() + name;\n\t}\n\n\t@Override\n\tpublic String getCopyString() {\n\t\tStringBuilder builder = new StringBuilder();\n\t\tbuilder.append(getHeader());\n\t\tbuilder.append(\"\\t\");\n\t\tbuilder.append(getGroup());\n\t\treturn builder.toString();\n\t}\n\n\t@Override\n\tpublic boolean equals(final Object obj) {\n\t\tif (obj == null) {\n\t\t\treturn false;\n\t\t}\n\t\tif (getClass() != obj.getClass()) {\n\t\t\treturn false;\n\t\t}\n\t\tfinal Material other = (Material) obj;\n\t\tif ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {\n\t\t\treturn false;\n\t\t}\n\t\tif ((this.header == null) ? (other.header != null) : !this.header.equals(other.header)) {\n\t\t\treturn false;\n\t\t}\n\t\tif ((this.group == null) ? (other.group != null) : !this.group.equals(other.group)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic int hashCode() {\n\t\tint hash = 3;\n\t\thash = 29 * hash + (this.name != null ? this.name.hashCode() : 0);\n\t\thash = 29 * hash + (this.header != null ? this.header.hashCode() : 0);\n\t\thash = 29 * hash + (this.group != null ? this.group.hashCode() : 0);\n\t\treturn hash;\n\t}\n\n\t@Override\n\tpublic int compareTo(final Material o) {\n\t\treturn this.getCompare().compareToIgnoreCase(o.getCompare());\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/materials/MaterialExtendedTableFormat.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.materials;\n\nimport java.util.Comparator;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.i18n.TabsMaterials;\n\n\npublic enum MaterialExtendedTableFormat implements EnumTableColumn<Material> {\n\tLOCATION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsMaterials.get().columnLocation();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Material from) {\n\t\t\treturn from.getHeader();\n\t\t}\n\t},\n\tGROUP(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsMaterials.get().columnGroup();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Material from) {\n\t\t\treturn from.getGroup();\n\t\t}\n\t};\n\n\tprivate final Class<?> type;\n\tprivate final Comparator<?> comparator;\n\tprivate MaterialExtendedTableFormat(final Class<?> type) {\n\t\tthis.type = type;\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\n\t}\n\t@Override\n\tpublic Class<?> getType() {\n\t\treturn type;\n\t}\n\t@Override\n\tpublic Comparator<?> getComparator() {\n\t\treturn comparator;\n\t}\n\t@Override\n\tpublic String toString() {\n\t\treturn getColumnName();\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/materials/MaterialSeparatorComparator.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.materials;\n\nimport java.util.Comparator;\n\n\npublic class MaterialSeparatorComparator implements Comparator<Material> {\n\n\t@Override\n\tpublic int compare(final Material o1, final Material o2) {\n\t\treturn o1.getSeparator().compareTo(o2.getSeparator());\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/materials/MaterialTableFormat.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.materials;\n\nimport java.util.Comparator;\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.ISK;\nimport net.nikr.eve.jeveasset.i18n.TabsMaterials;\n\n\npublic enum MaterialTableFormat implements EnumTableColumn<Material> {\n\tNAME(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsMaterials.get().columnName();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Material from) {\n\t\t\treturn from.getName();\n\t\t}\n\t},\n\tCOUNT(Long.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsMaterials.get().columnCount();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Material from) {\n\t\t\treturn from.getCount();\n\t\t}\n\t},\n\tPRICE(ISK.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsMaterials.get().columnPrice();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Material from) {\n\t\t\tif (from.getDynamicPrice() != null) {\n\t\t\t\treturn new ISK(Formatter.iskFormat(from.getDynamicPrice()), from.getDynamicPrice());\n\t\t\t} else {\n\t\t\t\treturn new ISK(\"(\" + Formatter.iskFormat(from.getValue() / from.getCount()) + \")\", from.getValue() / from.getCount());\n\t\t\t}\n\t\t}\n\t},\n\tVALUE(ISK.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsMaterials.get().columnValue();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Material from) {\n\t\t\treturn new ISK(Formatter.iskFormat(from.getValue()), from.getValue());\n\t\t}\n\t},\n\tTYPE_ID(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsMaterials.get().columnTypeID();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Material from) {\n\t\t\treturn from.getTypeID();\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean isShowDefault() {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tprivate final Class<?> type;\n\tprivate final Comparator<?> comparator;\n\tprivate MaterialTableFormat(final Class<?> type) {\n\t\tthis.type = type;\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\n\t}\n\t@Override\n\tpublic Class<?> getType() {\n\t\treturn type;\n\t}\n\t@Override\n\tpublic Comparator<?> getComparator() {\n\t\treturn comparator;\n\t}\n\t@Override\n\tpublic String toString() {\n\t\treturn getColumnName();\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/materials/MaterialsData.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.materials;\r\n\r\nimport ca.odell.glazedlists.EventList;\r\nimport java.util.ArrayList;\r\nimport java.util.Collections;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileData;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileManager;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.profile.TableData;\r\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\r\nimport net.nikr.eve.jeveasset.i18n.General;\r\nimport net.nikr.eve.jeveasset.i18n.TabsMaterials;\r\n\r\n\r\npublic class MaterialsData extends TableData {\r\n\r\n\tpublic MaterialsData(Program program) {\r\n\t\tsuper(program);\r\n\t}\r\n\r\n\tpublic MaterialsData(ProfileManager profileManager, ProfileData profileData) {\r\n\t\tsuper(profileManager, profileData);\r\n\t}\r\n\r\n\tpublic EventList<Material> getData(String owner, boolean ore, boolean pi, boolean commodity) {\r\n\t\tSet<String> groups = new HashSet<>();\r\n\t\tfor (Item item : StaticData.get().getItems().values()) {\r\n\t\t\tif (item.getCategory().equals(Item.CATEGORY_MATERIAL)) {\r\n\t\t\t\tgroups.add(item.getGroup());\r\n\t\t\t}\r\n\t\t\tif (commodity && item.getCategory().equals(Item.CATEGORY_COMMODITY)) {\r\n\t\t\t\tgroups.add(item.getGroup());\r\n\t\t\t}\r\n\t\t\tif (pi && item.isPiMaterial()) {\r\n\t\t\t\tgroups.add(item.getGroup());\r\n\t\t\t}\r\n\t\t\tif (ore && item.isMined()) {\r\n\t\t\t\tgroups.add(item.getGroup());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn getData(owner, groups);\r\n\t}\r\n\r\n\tpublic EventList<Material> getData(String owner, Set<String> groups) {\r\n\t\tEventList<Material> eventList = EventListManager.create();\r\n\t\tupdateData(eventList, owner, groups);\r\n\t\treturn eventList;\r\n\t}\r\n\r\n\tprotected boolean updateData(EventList<Material> eventList, String owner, Set<String> groups) {\r\n\t\tif (owner == null || owner.isEmpty()) {\r\n\t\t\towner = General.get().all();\r\n\t\t}\r\n\t\tboolean includeAll = owner.equals(General.get().all());\r\n\t\tList<Material> materials = new ArrayList<>();\r\n\t\tMap<String, Material> uniqueMaterials = new HashMap<>();\r\n\t\tMap<String, Material> totalMaterials = new HashMap<>();\r\n\t\tMap<String, Material> totalAllMaterials = new HashMap<>();\r\n\t\tMap<String, Material> summary = new HashMap<>();\r\n\t\tMap<String, Material> total = new HashMap<>();\r\n\t\t//Summary Total All\r\n\t\tMaterial summaryTotalAllMaterial = new Material(Material.MaterialType.SUMMARY_ALL, null, TabsMaterials.get().summary(), TabsMaterials.get().grandTotal(), General.get().all());\r\n\t\tfor (MyAsset asset : profileData.getAssetsList()) {\r\n\t\t\t//Skip\r\n\t\t\tif (!groups.contains(asset.getItem().getGroup())) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\t//Skip not selected owners\r\n\t\t\tif (!owner.equals(asset.getOwnerName()) && !includeAll) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t//Locations\r\n\t\t\tMaterial material = uniqueMaterials.get(asset.getLocation().getLocation() + asset.getName());\r\n\t\t\tif (material == null) { //New\r\n\t\t\t\tmaterial = new Material(Material.MaterialType.LOCATIONS, asset, asset.getLocation().getLocation(), asset.getItem().getGroup(), asset.getName());\r\n\t\t\t\tuniqueMaterials.put(asset.getLocation().getLocation() + asset.getName(), material);\r\n\t\t\t\tmaterials.add(material);\r\n\t\t\t}\r\n\r\n\t\t\t//Locations Total\r\n\t\t\tMaterial totalMaterial = totalMaterials.get(asset.getLocation().getLocation() + asset.getItem().getGroup());\r\n\t\t\tif (totalMaterial == null) { //New\r\n\t\t\t\ttotalMaterial = new Material(Material.MaterialType.LOCATIONS_TOTAL, asset, asset.getLocation().getLocation(), TabsMaterials.get().total(), asset.getItem().getGroup());\r\n\t\t\t\ttotalMaterials.put(asset.getLocation().getLocation() + asset.getItem().getGroup(), totalMaterial);\r\n\t\t\t\tmaterials.add(totalMaterial);\r\n\t\t\t}\r\n\r\n\t\t\t//Locations Total All\r\n\t\t\tMaterial totalAllMaterial = totalAllMaterials.get(asset.getLocation().getLocation());\r\n\t\t\tif (totalAllMaterial == null) { //New\r\n\t\t\t\ttotalAllMaterial = new Material(Material.MaterialType.LOCATIONS_ALL, asset, asset.getLocation().getLocation(), TabsMaterials.get().total(), General.get().all());\r\n\t\t\t\ttotalAllMaterials.put(asset.getLocation().getLocation(), totalAllMaterial);\r\n\t\t\t\tmaterials.add(totalAllMaterial);\r\n\t\t\t}\r\n\r\n\t\t\t//Summary\r\n\t\t\tMaterial summaryMaterial = summary.get(asset.getName());\r\n\t\t\tif (summaryMaterial == null) { //New\r\n\t\t\t\tsummaryMaterial = new Material(Material.MaterialType.SUMMARY, asset, TabsMaterials.get().summary(), asset.getItem().getGroup(), asset.getName());\r\n\t\t\t\tsummary.put(asset.getName(), summaryMaterial);\r\n\t\t\t\tmaterials.add(summaryMaterial);\r\n\t\t\t}\r\n\r\n\t\t\t//Summary Total\r\n\t\t\tMaterial summaryTotalMaterial = total.get(asset.getItem().getGroup());\r\n\t\t\tif (summaryTotalMaterial == null) { //New\r\n\t\t\t\tsummaryTotalMaterial = new Material(Material.MaterialType.SUMMARY_TOTAL, null, TabsMaterials.get().summary(), TabsMaterials.get().grandTotal(), asset.getItem().getGroup());\r\n\t\t\t\ttotal.put(asset.getItem().getGroup(), summaryTotalMaterial);\r\n\t\t\t\tmaterials.add(summaryTotalMaterial);\r\n\t\t\t}\r\n\r\n\t\t\t//Update values\r\n\t\t\tmaterial.updateValue(asset.getCount(), asset.getDynamicPrice());\r\n\t\t\ttotalMaterial.updateValue(asset.getCount(), asset.getDynamicPrice());\r\n\t\t\ttotalAllMaterial.updateValue(asset.getCount(), asset.getDynamicPrice());\r\n\t\t\tsummaryMaterial.updateValue(asset.getCount(), asset.getDynamicPrice());\r\n\t\t\tsummaryTotalMaterial.updateValue(asset.getCount(), asset.getDynamicPrice());\r\n\t\t\tsummaryTotalAllMaterial.updateValue(asset.getCount(), asset.getDynamicPrice());\r\n\t\t}\r\n\t\tif (!materials.isEmpty()) {\r\n\t\t\tmaterials.add(summaryTotalAllMaterial);\r\n\t\t}\r\n\t\tCollections.sort(materials);\r\n\t\tString location = \"\";\r\n\t\tfor (Material material : materials) {\r\n\t\t\tif (!location.equals(material.getHeader())) {\r\n\t\t\t\tmaterial.first();\r\n\t\t\t\tlocation = material.getHeader();\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Update list\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().writeLock().lock();\r\n\t\t\teventList.clear();\r\n\t\t\teventList.addAll(materials);\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\r\n\t\t}\r\n\t\treturn materials.isEmpty();\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/materials/MaterialsSeparatorTableCell.java",
    "content": "/* Glazed Lists                                                 (c) 2003-2006 */\n/* http://publicobject.com/glazedlists/                      publicobject.com,*/\n/*                                                     O'Dell Engineering Ltd.*/\n\npackage net.nikr.eve.jeveasset.gui.tabs.materials;\n\nimport ca.odell.glazedlists.SeparatorList;\nimport java.awt.Color;\nimport java.awt.Font;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.MouseAdapter;\nimport java.awt.event.MouseEvent;\nimport javax.swing.GroupLayout;\nimport javax.swing.JButton;\nimport javax.swing.JLabel;\nimport javax.swing.JPanel;\nimport javax.swing.JTable;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.table.SeparatorTableCell;\n\n/**\n *\n * @author <a href=\"mailto:jesse@swank.ca\">Jesse Wilson</a>\n */\npublic class MaterialsSeparatorTableCell extends SeparatorTableCell<Material> {\n\n\tprivate final JLabel jLocation;\n\tprivate final JLabel jGroup;\n\tprivate final JButton jExpandLocation;\n\tprivate final JPanel jLocationPanel;\n\n\tpublic MaterialsSeparatorTableCell(final JTable jTable, final SeparatorList<Material> separatorList) {\n\t\tsuper(jTable, separatorList);\n\n\t\tjLocationPanel = new JPanel();\n\t\tjLocationPanel.setBackground(Color.BLACK);\n\t\tGroupLayout locationLayout = new GroupLayout(jLocationPanel);\n\t\tjLocationPanel.setLayout(locationLayout);\n\t\tlocationLayout.setAutoCreateGaps(false);\n\t\tlocationLayout.setAutoCreateContainerGaps(false);\n\n\t\tjLocation = new JLabel();\n\t\tjLocation.setBorder(null);\n\t\tjLocation.setForeground(Color.WHITE);\n\t\tFont font = jLocation.getFont();\n\t\tjLocation.setFont(new Font(font.getName(), Font.BOLD, font.getSize() + 1));\n\t\tjLocation.addMouseListener(new MouseAdapter() {\n\t\t\t@Override public void mouseClicked(final MouseEvent e) {\n\t\t\t\tif (e.getClickCount() >= 2) {\n\t\t\t\t\texpandHeader();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tjGroup = new JLabel();\n\t\tjGroup.setFont(new Font(font.getName(), Font.BOLD, font.getSize() + 1));\n\t\tjExpandLocation = new JButton(Images.MISC_COLLAPSED_WHITE.getIcon());\n\t\tjExpandLocation.setOpaque(true);\n\t\tjExpandLocation.setContentAreaFilled(false);\n\t\tjExpandLocation.setBorder(EMPTY_TWO_PIXEL_BORDER);\n\t\tjExpandLocation.setBackground(Color.BLACK);\n\t\tjExpandLocation.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\t\texpandHeader();\n\t\t\t}\n\t\t});\n\n\t\tlocationLayout.setHorizontalGroup(\n\t\t\tlocationLayout.createParallelGroup()\n\t\t\t\t.addGroup(locationLayout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jExpandLocation)\n\t\t\t\t\t.addComponent(jLocation, 0, 0, Integer.MAX_VALUE)\n\t\t\t\t)\n\t\t);\n\t\tlocationLayout.setVerticalGroup(\n\t\t\tlocationLayout.createSequentialGroup()\n\t\t\t\t.addGroup(locationLayout.createParallelGroup()\n\t\t\t\t\t.addComponent(jExpandLocation, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jLocation, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t);\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addComponent(jLocationPanel)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jExpand)\n\t\t\t\t\t.addGap(1)\n\t\t\t\t\t.addComponent(jGroup, 0, 0, Integer.MAX_VALUE)\n\t\t\t\t)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jLocationPanel)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jExpand, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jGroup, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGap(2)\n\t\t);\n\t}\n\n\t@Override\n\tprotected void configure(final SeparatorList.Separator<?> separator) {\n\t\tMaterial material = (Material) separator.first();\n\t\tif (material == null) {\n\t\t\treturn;\n\t\t} // handle 'late' rendering calls after this separator is invalid\n\t\tjLocationPanel.setVisible(material.isFirst());\n\t\tjLocation.setText(material.getHeader());\n\t\tjGroup.setText(material.getGroup());\n\t\tif (material.isFirst()) {\n\t\t\tjExpandLocation.setIcon(isHeaderCollapsed() ? Images.MISC_EXPANDED_WHITE.getIcon() : Images.MISC_COLLAPSED_WHITE.getIcon());\n\t\t}\n\t}\n\n\tprivate void expandHeader() {\n\t\tMaterial material = (Material) currentSeparator.first();\n\t\tboolean expand = isHeaderCollapsed();\n\t\ttry {\n\t\t\tseparatorList.getReadWriteLock().readLock().lock();\n\t\t\tfor (int i = 0; i < separatorList.size(); i++) {\n\t\t\t\tObject object = separatorList.get(i);\n\t\t\t\tif (object instanceof SeparatorList.Separator<?>) {\n\t\t\t\t\tSeparatorList.Separator<?> separator = (SeparatorList.Separator<?>) object;\n\t\t\t\t\tMaterial currentMaterial = (Material) separator.first();\n\t\t\t\t\tif (currentMaterial.getHeader().equals(material.getHeader())) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tseparatorList.getReadWriteLock().readLock().unlock();\n\t\t\t\t\t\t\tseparatorList.getReadWriteLock().writeLock().lock();\n\t\t\t\t\t\t\tseparator.setLimit(expand ? Integer.MAX_VALUE : 0);\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tseparatorList.getReadWriteLock().writeLock().unlock();\n\t\t\t\t\t\t\tseparatorList.getReadWriteLock().readLock().lock();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tseparatorList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t}\n\n\tprivate boolean isHeaderCollapsed() {\n\t\tMaterial material = (Material) currentSeparator.first();\n\t\ttry {\n\t\t\tseparatorList.getReadWriteLock().readLock().lock();\n\t\t\tint start;\n\t\t\tif (material.isFirst()) {\n\t\t\t\tstart = currentRow;\n\t\t\t} else {\n\t\t\t\tstart = 0;\n\t\t\t}\n\t\t\tboolean found = false;\n\t\t\tfor (int i = start; i < separatorList.size(); i++) {\n\t\t\t\tObject object = separatorList.get(i);\n\t\t\t\tif (object instanceof SeparatorList.Separator<?>) {\n\t\t\t\t\tSeparatorList.Separator<?> separator = (SeparatorList.Separator<?>) object;\n\t\t\t\t\tMaterial currentMaterial = (Material) separator.first();\n\t\t\t\t\tif (currentMaterial.getHeader().equals(material.getHeader())) {\n\t\t\t\t\t\tif (separator.getLimit() != 0) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfound = true;\n\t\t\t\t\t} else if (found) {\n\t\t\t\t\t\tbreak; //No longer the same header...\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tseparatorList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t\treturn true;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/materials/MaterialsTab.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.tabs.materials;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.ListSelection;\nimport ca.odell.glazedlists.SeparatorList;\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport java.awt.Point;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Set;\nimport java.util.TreeSet;\nimport javax.swing.GroupLayout;\nimport javax.swing.JButton;\nimport javax.swing.JCheckBoxMenuItem;\nimport javax.swing.JComboBox;\nimport javax.swing.JComponent;\nimport javax.swing.JMenu;\nimport javax.swing.JPopupMenu;\nimport javax.swing.JScrollPane;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDropDownButton;\nimport net.nikr.eve.jeveasset.gui.shared.components.JFixedToolBar;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabSecondary;\nimport net.nikr.eve.jeveasset.gui.shared.components.ListComboBoxModel;\nimport net.nikr.eve.jeveasset.gui.shared.filter.ExportDialog;\nimport net.nikr.eve.jeveasset.gui.shared.filter.SimpleFilterControl;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuColumns;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.JSeparatorTable;\nimport net.nikr.eve.jeveasset.gui.shared.table.PaddingTableCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\nimport net.nikr.eve.jeveasset.i18n.TabsMaterials;\n\n\npublic class MaterialsTab extends JMainTabSecondary {\n\n\tprivate enum MaterialsAction {\n\t\tSELECTED,\n\t\tCOLLAPSE,\n\t\tEXPAND,\n\t\tEXPORT\n\t}\n\n\t//GUI\n\tprivate final JComboBox<String> jOwners;\n\tprivate final JButton jExport;\n\tprivate final JButton jExpand;\n\tprivate final JButton jCollapse;\n\tprivate final JDropDownButton jMaterial;\n\tprivate final JCheckBoxMenuItem jMaterialAll;\n\tprivate final JDropDownButton jPi;\n\tprivate final JCheckBoxMenuItem jPiAll;\n\tprivate final JDropDownButton jOre;\n\tprivate final JCheckBoxMenuItem jOreAll;\n\tprivate final JDropDownButton jCommodity;\n\tprivate final JCheckBoxMenuItem jCommodityAll;\n\tprivate final List<JCheckBoxMenuItem> jMaterialGroups = new ArrayList<>();\n\tprivate final List<JCheckBoxMenuItem> jPiGroups = new ArrayList<>();\n\tprivate final List<JCheckBoxMenuItem> jOreGroups = new ArrayList<>();\n\tprivate final List<JCheckBoxMenuItem> jCommodityGroups = new ArrayList<>();\n\tprivate final JSeparatorTable jTable;\n\tprivate final JScrollPane jTableScroll;\n\n\t//Table\n\tprivate final EventList<Material> eventList;\n\tprivate final SeparatorList<Material> separatorList;\n\tprivate final DefaultEventSelectionModel<Material> selectionModel;\n\tprivate final DefaultEventTableModel<Material> tableModel;\n\tprivate final EnumTableFormatAdaptor<MaterialTableFormat, Material> tableFormat;\n\n\t//Dialog\n\tprivate final ExportDialog<Material> exportDialog;\n\n\t//Data\n\tprivate final MaterialsData materialsData;\n\n\tpublic static final String NAME = \"materials\"; //Not to be changed!\n\n\tpublic MaterialsTab(final Program program) {\n\t\tsuper(program, NAME, TabsMaterials.get().materials(), Images.TOOL_MATERIALS.getIcon(), true);\n\n\t\tmaterialsData = new MaterialsData(program);\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tJFixedToolBar jToolBar = new JFixedToolBar();\n\n\t\tjOwners = new JComboBox<>();\n\t\tjOwners.setActionCommand(MaterialsAction.SELECTED.name());\n\t\tjOwners.addActionListener(listener);\n\t\tjToolBar.addComboBox(jOwners, 200);\n\n\t\tjToolBar.addSpace(5);\n\n\t\tjMaterial = new JDropDownButton(TabsMaterials.get().includeMaterials(), Images.MISC_MATERIALS.getIcon());\n\t\tjToolBar.addButton(jMaterial);\n\t\tjMaterialAll = new JCheckBoxMenuItem(TabsMaterials.get().all());\n\t\tcreateAll(jMaterialGroups, jMaterialAll);\n\n\t\tjPi = new JDropDownButton(TabsMaterials.get().includePI(), Images.MISC_PI.getIcon());\n\t\tjToolBar.addButton(jPi);\n\t\tjPiAll = new JCheckBoxMenuItem(TabsMaterials.get().all());\n\t\tcreateAll(jPiGroups, jPiAll);\n\n\t\tjOre = new JDropDownButton(TabsMaterials.get().includeOre(), Images.MISC_ORE.getIcon());\n\t\tjToolBar.addButton(jOre);\n\t\tjOreAll = new JCheckBoxMenuItem(TabsMaterials.get().all());\n\t\tcreateAll(jOreGroups, jOreAll);\n\n\t\tjCommodity = new JDropDownButton(TabsMaterials.get().includeCommodity(), Images.MISC_COMMODITY.getIcon());\n\t\tjToolBar.addButton(jCommodity);\n\t\tjCommodityAll = new JCheckBoxMenuItem(TabsMaterials.get().all());\n\t\tcreateAll(jCommodityGroups, jCommodityAll);\n\n\t\tjToolBar.addSeparator();\n\n\t\tjExport = new JButton(GuiShared.get().export(), Images.DIALOG_CSV_EXPORT.getIcon());\n\t\tjExport.setActionCommand(MaterialsAction.EXPORT.name());\n\t\tjExport.addActionListener(listener);\n\t\tjToolBar.addButton(jExport);\n\n\t\tjToolBar.addGlue();\n\n\t\tjCollapse = new JButton(TabsMaterials.get().collapse(), Images.MISC_COLLAPSED.getIcon());\n\t\tjCollapse.setActionCommand(MaterialsAction.COLLAPSE.name());\n\t\tjCollapse.addActionListener(listener);\n\t\tjToolBar.addButton(jCollapse);\n\n\t\tjExpand = new JButton(TabsMaterials.get().expand(), Images.MISC_EXPANDED.getIcon());\n\t\tjExpand.setActionCommand(MaterialsAction.EXPAND.name());\n\t\tjExpand.addActionListener(listener);\n\t\tjToolBar.addButton(jExpand);\n\n\t\t//Table Format\n\t\ttableFormat = TableFormatFactory.materialTableFormat();\n\t\t//Backend\n\t\teventList = EventListManager.create();\n\t\t//Separator\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tseparatorList = new SeparatorList<>(eventList, new MaterialSeparatorComparator(), 1, Integer.MAX_VALUE);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t//Table Model\n\t\ttableModel = EventModels.createTableModel(separatorList, tableFormat);\n\t\t//Table\n\t\tjTable = new JSeparatorTable(program, tableModel, separatorList);\n\t\tjTable.setSeparatorRenderer(new MaterialsSeparatorTableCell(jTable, separatorList));\n\t\tjTable.setSeparatorEditor(new MaterialsSeparatorTableCell(jTable, separatorList));\n\t\tPaddingTableCellRenderer.install(jTable, 3);\n\t\t//Selection Model\n\t\tselectionModel = EventModels.createSelectionModel(separatorList);\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\n\t\tjTable.setSelectionModel(selectionModel);\n\t\t//Listeners\n\t\tinstallTable(jTable);\n\t\t//Scroll\n\t\tjTableScroll = new JScrollPane(jTable);\n\t\t//Menu\n\t\tinstallTableTool(new MaterialTableMenu(), tableFormat, null, tableModel, jTable, eventList, Material.class);\n\n\t\texportDialog = new ExportDialog<>(program.getMainWindow().getFrame(), NAME, null, new MaterialsFilterControl(), tableFormat, eventList);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addComponent(jToolBar, jToolBar.getMinimumSize().width, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jToolBar, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t}\n\n\t@Override\n\tpublic void updateData() {\n\t\tif (!program.getOwnerNames(false).isEmpty()) {\n\t\t\tSet<String> materialGroups = new TreeSet<>();\n\t\t\tSet<String> piGroups = new TreeSet<>();\n\t\t\tSet<String> oreGroups = new TreeSet<>();\n\t\t\tSet<String> commodityGroups = new TreeSet<>();\n\t\t\tfor (MyAsset asset : program.getAssetsList()) {\n\t\t\t\tItem item = asset.getItem();\n\t\t\t\tif (item.getCategory().equals(Item.CATEGORY_MATERIAL)) {\n\t\t\t\t\tmaterialGroups.add(item.getGroup());\n\t\t\t\t}\n\t\t\t\tif (item.getCategory().equals(Item.CATEGORY_COMMODITY)) {\n\t\t\t\t\tcommodityGroups.add(item.getGroup());\n\t\t\t\t}\n\t\t\t\tif (item.isPiMaterial()) {\n\t\t\t\t\tpiGroups.add(item.getGroup());\n\t\t\t\t}\n\t\t\t\tif (item.isMined()) {\n\t\t\t\t\toreGroups.add(item.getGroup());\n\t\t\t\t}\n\t\t\t}\n\t\t\tcreateGroups(materialGroups, jMaterialGroups, jMaterialAll, jMaterial);\n\t\t\tcreateGroups(piGroups, jPiGroups, jPiAll, jPi);\n\t\t\tcreateGroups(oreGroups, jOreGroups, jOreAll, jOre);\n\t\t\tcreateGroups(commodityGroups, jCommodityGroups, jCommodityAll, jCommodity);\n\t\t\tjExport.setEnabled(true);\n\t\t\tjExpand.setEnabled(true);\n\t\t\tjCollapse.setEnabled(true);\n\t\t\tjOwners.setEnabled(true);\n\t\t\tString selectedItem = (String) jOwners.getSelectedItem();\n\t\t\tjOwners.setModel(new ListComboBoxModel<>(program.getOwnerNames(true)));\n\t\t\tif (selectedItem != null && program.getOwnerNames(true).contains(selectedItem)) {\n\t\t\t\tjOwners.setSelectedItem(selectedItem);\n\t\t\t} else {\n\t\t\t\tjOwners.setSelectedIndex(0);\n\t\t\t}\n\t\t} else {\n\t\t\tjExport.setEnabled(false);\n\t\t\tjExpand.setEnabled(false);\n\t\t\tjCollapse.setEnabled(false);\n\t\t\tjOwners.setEnabled(false);\n\t\t\tjOwners.setModel(new ListComboBoxModel<>());\n\t\t\tjOwners.getModel().setSelectedItem(TabsMaterials.get().no());\n\t\t}\n\t}\n\n\t@Override\n\tpublic void clearData() {\n\t\ttry {\n\t\t\teventList.getReadWriteLock().writeLock().lock();\n\t\t\teventList.clear();\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t}\n\n\t@Override\n\tpublic void updateCache() { }\n\n\t@Override\n\tpublic Collection<LocationType> getLocations() {\n\t\ttry {\n\t\t\teventList.getReadWriteLock().readLock().lock();\n\t\t\treturn new ArrayList<>(eventList);\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t}\n\n\tprivate void updateTable() {\n\t\tbeforeUpdateData();\n\t\tString owner = (String) jOwners.getSelectedItem();\n\t\tSet<String> groups = new HashSet<>();\n\t\taddGroups(groups, jPiGroups, jPiAll);\n\t\taddGroups(groups, jMaterialGroups, jMaterialAll);\n\t\taddGroups(groups, jOreGroups, jOreAll);\n\t\taddGroups(groups, jCommodityGroups, jCommodityAll);\n\t\t//Save separator expanded/collapsed state\n\t\tjTable.saveExpandedState();\n\t\t//Update Data\n\t\tboolean isEmpty = materialsData.updateData(eventList, owner, groups);\n\t\t//Restore separator expanded/collapsed state\n\t\tjTable.loadExpandedState();\n\t\tif (!isEmpty) {\n\t\t\tjExport.setEnabled(true);\n\t\t\tjExpand.setEnabled(true);\n\t\t\tjCollapse.setEnabled(true);\n\t\t} else {\n\t\t\tjExport.setEnabled(false);\n\t\t\tjExpand.setEnabled(false);\n\t\t\tjCollapse.setEnabled(false);\n\t\t}\n\t\tjTableScroll.getViewport().setViewPosition(new Point(0, 0));\n\t\tafterUpdateData();\n\t}\n\n\tprivate void addGroups(Set<String> groups, List<JCheckBoxMenuItem> jGroups, JCheckBoxMenuItem jAll) {\n\t\tboolean all = true;\n\t\tfor (JCheckBoxMenuItem jGroup : jGroups) {\n\t\t\tif (jGroup.isSelected()) {\n\t\t\t\tgroups.add(jGroup.getText());\n\t\t\t} else {\n\t\t\t\tall = false;\n\t\t\t}\n\t\t}\n\t\tjAll.setSelected(all);\n\t}\n\n\tprivate void createGroups(Set<String> groups, List<JCheckBoxMenuItem> jGroups, JCheckBoxMenuItem jAll, JDropDownButton jButton) {\n\t\tjButton.removeAll();\n\t\tjGroups.clear();\n\n\t\tjAll.setSelected(true);\n\t\tjButton.add(jAll);\n\n\t\tfor (String group : groups) {\n\t\t\tJCheckBoxMenuItem jGroup = new JCheckBoxMenuItem(group);\n\t\t\tjGroup.setSelected(true);\n\t\t\tjGroup.addActionListener(new ActionListener() {\n\t\t\t\t@Override\n\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\tupdateTable();\n\t\t\t\t}\n\t\t\t});\n\t\t\tjButton.add(jGroup, true);\n\t\t\tjGroups.add(jGroup);\n\t\t}\n\t}\n\n\tprivate void createAll(List<JCheckBoxMenuItem> jGroups, JCheckBoxMenuItem jAll) {\n\t\tjAll.setSelected(true);\n\t\tjAll.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tboolean selected = jAll.isSelected();\n\t\t\t\tfor (JCheckBoxMenuItem jGroup : jGroups) {\n\t\t\t\t\tjGroup.setSelected(selected);\n\t\t\t\t}\n\t\t\t\tupdateTable();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate class MaterialTableMenu implements TableMenu<Material> {\n\t\t@Override\n\t\tpublic MenuData<Material> getMenuData() {\n\t\t\treturn new MenuData<>(selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getFilterMenu() {\n\t\t\treturn null;\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getColumnMenu() {\n\t\t\treturn new JMenuColumns<>(program, tableFormat, tableModel, jTable, NAME);\n\t\t}\n\n\t\t@Override\n\t\tpublic void addInfoMenu(JPopupMenu jPopupMenu) {\n\t\t\tJMenuInfo.material(jPopupMenu, selectionModel.getSelected(), eventList);\n\t\t}\n\n\t\t@Override\n\t\tpublic void addToolMenu(JComponent jComponent) { }\n\t}\n\n\tprivate class ListenerClass implements ActionListener {\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (MaterialsAction.SELECTED.name().equals(e.getActionCommand())) {\n\t\t\t\tupdateTable();\n\t\t\t}\n\t\t\tif (MaterialsAction.COLLAPSE.name().equals(e.getActionCommand())) {\n\t\t\t\tjTable.expandSeparators(false);\n\t\t\t}\n\t\t\tif (MaterialsAction.EXPAND.name().equals(e.getActionCommand())) {\n\t\t\t\tjTable.expandSeparators(true);\n\t\t\t}\n\t\t\tif (MaterialsAction.EXPORT.name().equals(e.getActionCommand())) {\n\t\t\t\texportDialog.setVisible(true);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate class MaterialsFilterControl implements SimpleFilterControl<Material> {\n\n\t\t@Override\n\t\tpublic void saveSettings(final String msg) {\n\t\t\tprogram.saveSettings(\"Materials Table \" + msg); //Save Material Export Settings (Filters not used)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/mining/ExtractionsTab.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.mining;\r\n\r\nimport ca.odell.glazedlists.EventList;\r\nimport ca.odell.glazedlists.FilterList;\r\nimport ca.odell.glazedlists.ListSelection;\r\nimport ca.odell.glazedlists.SortedList;\r\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\r\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\r\nimport ca.odell.glazedlists.swing.TableComparatorChooser;\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\nimport javax.swing.JComponent;\r\nimport javax.swing.JMenu;\r\nimport javax.swing.JPopupMenu;\r\nimport javax.swing.JScrollPane;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyExtraction;\r\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabPrimary;\r\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuColumns;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\r\nimport net.nikr.eve.jeveasset.i18n.TabsMining;\r\n\r\n\r\npublic class ExtractionsTab extends JMainTabPrimary {\r\n\t//GUI\r\n\tprivate final JAutoColumnTable jTable;\r\n\r\n\t//Table\r\n\tprivate final ExtractionFilterControl filterControl;\r\n\tprivate final EnumTableFormatAdaptor<ExtractionsTableFormat, MyExtraction> tableFormat;\r\n\tprivate final DefaultEventTableModel<MyExtraction> tableModel;\r\n\tprivate final EventList<MyExtraction> eventList;\r\n\tprivate final FilterList<MyExtraction> filterList;\r\n\tprivate final DefaultEventSelectionModel<MyExtraction> selectionModel;\r\n\r\n\tpublic static final String NAME = \"extractions\"; //Not to be changed!\r\n\r\n\tpublic ExtractionsTab(Program program) {\r\n\t\tsuper(program, NAME, TabsMining.get().extractions(), Images.TOOL_EXTRACTIONS.getIcon(), true);\r\n\r\n\t\t//Table Format\r\n\t\ttableFormat = TableFormatFactory.extractionsTableFormat();\r\n\t\t//Backend\r\n\t\teventList = program.getProfileData().getExtractionsEventList();\r\n\t\t//Sorting (per column)\r\n\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\tSortedList<MyExtraction> sortedList = new SortedList<>(eventList);\r\n\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t//Filter\r\n\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\tfilterList = new FilterList<>(sortedList);\r\n\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t//Table Model\r\n\t\ttableModel = EventModels.createTableModel(filterList, tableFormat);\r\n\t\t//Table\r\n\t\tjTable = new JExtractionsTable(program, tableModel);\r\n\t\tjTable.setCellSelectionEnabled(true);\r\n\t\tjTable.setRowSelectionAllowed(true);\r\n\t\tjTable.setColumnSelectionAllowed(true);\r\n\t\t//Sorting\r\n\t\tTableComparatorChooser<MyExtraction> comparatorChooser = TableComparatorChooser.install(jTable, sortedList, TableComparatorChooser.MULTIPLE_COLUMN_MOUSE, tableFormat);\r\n\t\t//Selection Model\r\n\t\tselectionModel = EventModels.createSelectionModel(filterList);\r\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\r\n\t\tjTable.setSelectionModel(selectionModel);\r\n\r\n\t\t//Listeners\r\n\t\tinstallTable(jTable);\r\n\t\t//Scroll\r\n\t\tJScrollPane jTableScroll = new JScrollPane(jTable);\r\n\t\t//Table Filter\r\n\t\tfilterControl = new ExtractionFilterControl(sortedList);\r\n\t\t//Menu\r\n\t\tinstallTableTool(new ExtractionTableMenu(), tableFormat, comparatorChooser, tableModel, jTable, filterControl, MyExtraction.class);\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup()\r\n\t\t\t\t.addComponent(filterControl.getPanel())\r\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(filterControl.getPanel())\r\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\r\n\t\t);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void updateCache() { }\r\n\r\n\t@Override\r\n\tpublic void clearData() { }\r\n\r\n\t@Override\r\n\tpublic Collection<LocationType> getLocations() {\r\n\t\treturn new ArrayList<>(); //No Location\r\n\t}\r\n\r\n\tprivate class ExtractionTableMenu implements TableMenu<MyExtraction> {\r\n\t\t@Override\r\n\t\tpublic MenuData<MyExtraction> getMenuData() {\r\n\t\t\treturn new MenuData<>(selectionModel.getSelected());\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic JMenu getFilterMenu() {\r\n\t\t\treturn filterControl.getMenu(jTable, selectionModel.getSelected());\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic JMenu getColumnMenu() {\r\n\t\t\treturn new JMenuColumns<>(program, tableFormat, tableModel, jTable, NAME);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void addInfoMenu(JPopupMenu jPopupMenu) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void addToolMenu(JComponent jComponent) { }\r\n\t}\r\n\r\n\tprivate class ExtractionFilterControl extends FilterControl<MyExtraction> {\r\n\r\n\t\tpublic ExtractionFilterControl(EventList<MyExtraction> exportEventList) {\r\n\t\t\tsuper(program.getMainWindow().getFrame(),\r\n\t\t\t\t\tNAME,\r\n\t\t\t\t\ttableFormat,\r\n\t\t\t\t\teventList,\r\n\t\t\t\t\texportEventList,\r\n\t\t\t\t\tfilterList\r\n\t\t\t\t\t);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void saveSettings(final String msg) {\r\n\t\t\tprogram.saveSettings(\"Extractions Table: \" + msg); //Save Mining Filters and Export Settings\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/mining/ExtractionsTableFormat.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.mining;\r\n\r\nimport java.util.Comparator;\r\nimport java.util.Date;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyExtraction;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.i18n.TabsMining;\r\n\r\n\r\npublic enum ExtractionsTableFormat implements EnumTableColumn<MyExtraction> {\r\n\tLOCATION(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsMining.get().columnLocation();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyExtraction from) {\r\n\t\t\treturn from.getLocation().getLocation();\r\n\t\t}\r\n\t},\r\n\tMOON(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsMining.get().columnMoon();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyExtraction from) {\r\n\t\t\treturn from.getMoon().getLocation();\r\n\t\t}\r\n\t},\r\n\tSTART(Date.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsMining.get().columnExtractionStartTime();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyExtraction from) {\r\n\t\t\treturn from.getExtractionStartTime();\r\n\t\t}\r\n\t},\r\n\tARRIVAL(Date.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsMining.get().columnChunkArrivalTime();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyExtraction from) {\r\n\t\t\treturn from.getChunkArrivalTime();\r\n\t\t}\r\n\t},\r\n\tDECAY(Date.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsMining.get().columnNaturalDecayTime();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyExtraction from) {\r\n\t\t\treturn from.getNaturalDecayTime();\r\n\t\t}\r\n\t};\r\n\r\n\tprivate final Class<?> type;\r\n\tprivate final Comparator<?> comparator;\r\n\r\n\tprivate ExtractionsTableFormat(final Class<?> type) {\r\n\t\tthis.type = type;\r\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\r\n\t}\r\n\t@Override\r\n\tpublic Class<?> getType() {\r\n\t\treturn type;\r\n\t}\r\n\t@Override\r\n\tpublic Comparator<?> getComparator() {\r\n\t\treturn comparator;\r\n\t}\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn getColumnName();\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/mining/JExtractionsTable.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.mining;\n\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport java.awt.Component;\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.TimeZone;\nimport javax.swing.table.TableCellRenderer;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.my.MyExtraction;\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\n\n\npublic class JExtractionsTable extends JAutoColumnTable {\n\n\tprivate static final Calendar CALENDAR = Calendar.getInstance(TimeZone.getTimeZone(\"GMT\"));\n\n\tprivate final DefaultEventTableModel<MyExtraction> tableModel;\n\n\tpublic JExtractionsTable(final Program program, final DefaultEventTableModel<MyExtraction> tableModel) {\n\t\tsuper(program, tableModel);\n\t\tthis.tableModel = tableModel;\n\t}\n\n\t@Override\n\tpublic Component prepareRenderer(final TableCellRenderer renderer, final int row, final int column) {\n\t\tComponent component = super.prepareRenderer(renderer, row, column);\n\t\tboolean isSelected = isCellSelected(row, column);\n\t\tMyExtraction extraction = tableModel.getElementAt(row);\n\t\tString columnName = (String) this.getTableHeader().getColumnModel().getColumn(column).getHeaderValue();\n\n\t\tif (columnName.equals(ExtractionsTableFormat.ARRIVAL.getColumnName())) {\n\t\t\tDate start = extraction.getChunkArrivalTime();\n\t\t\tif ((nextDays(start, 2) || lastDays(start, 2))) {\n\t\t\t\tColorSettings.configCell(component, ColorEntry.EXTRACTIONS_DAYS, isSelected);\n\t\t\t} else if (nextDays(start, 7)) {\n\t\t\t\tColorSettings.configCell(component, ColorEntry.EXTRACTIONS_WEEK, isSelected);\n\t\t\t} else if (!past(start)) {\n\t\t\t\tColorSettings.configCell(component, ColorEntry.EXTRACTIONS_WEEKS, isSelected);\n\t\t\t}\n\t\t}\n\t\tif (columnName.equals(ExtractionsTableFormat.DECAY.getColumnName())) {\n\t\t\tDate end = extraction.getNaturalDecayTime();\n\t\t\tif (lastDays(end, 2)) {\n\t\t\t\tColorSettings.configCell(component, ColorEntry.EXTRACTIONS_DAYS, isSelected);\n\t\t\t}\n\t\t}\n\t\treturn component;\n\t}\n\n\tprivate boolean lastDays(final Date date, final int days) {\n\t\tCALENDAR.setTime(new Date());\n\t\tCALENDAR.add(Calendar.DAY_OF_MONTH, -days);\n\t\treturn date.before(Settings.getNow()) && date.after(CALENDAR.getTime());\n\t}\n\n\tprivate boolean past(final Date date) {\n\t\treturn date.before(Settings.getNow());\n\t}\n\n\tprivate boolean nextDays(final Date date, final int days) {\n\t\tCALENDAR.setTime(new Date());\n\t\tCALENDAR.add(Calendar.DAY_OF_MONTH, days);\n\t\treturn date.after(Settings.getNow()) && date.before(CALENDAR.getTime());\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/mining/MiningGraphTab.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.mining;\r\n\r\nimport com.github.lgooddatepicker.optionalusertools.DateChangeListener;\r\nimport com.github.lgooddatepicker.zinternaltools.DateChangeEvent;\r\nimport java.awt.Color;\r\nimport java.awt.Font;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.time.Instant;\r\nimport java.time.LocalDate;\r\nimport java.time.ZoneId;\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\nimport java.util.Collections;\r\nimport java.util.Comparator;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport java.util.TreeMap;\r\nimport javax.swing.AbstractListModel;\r\nimport javax.swing.ButtonGroup;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JCheckBoxMenuItem;\r\nimport javax.swing.JComboBox;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JRadioButtonMenuItem;\r\nimport javax.swing.JScrollPane;\r\nimport javax.swing.JSeparator;\r\nimport javax.swing.ListModel;\r\nimport javax.swing.SwingUtilities;\r\nimport javax.swing.event.ListSelectionEvent;\r\nimport javax.swing.event.ListSelectionListener;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMining;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\r\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel;\r\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel.JStatusLabel;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.ColorIcon;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\nimport net.nikr.eve.jeveasset.gui.shared.JFreeChartUtil;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JDateChooser;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JDropDownButton;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabSecondary;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JMultiSelectionList;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo.AutoNumberFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.tracker.QuickDate;\r\nimport net.nikr.eve.jeveasset.i18n.General;\r\nimport net.nikr.eve.jeveasset.i18n.TabsMining;\r\nimport net.nikr.eve.jeveasset.i18n.TabsTracker;\r\nimport org.jfree.chart.ChartPanel;\r\nimport org.jfree.chart.JFreeChart;\r\nimport org.jfree.chart.axis.DateAxis;\r\nimport org.jfree.chart.axis.LogarithmicAxis;\r\nimport org.jfree.chart.axis.NumberAxis;\r\nimport org.jfree.chart.labels.XYToolTipGenerator;\r\nimport org.jfree.chart.plot.XYPlot;\r\nimport org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;\r\nimport org.jfree.data.time.SimpleTimePeriod;\r\nimport org.jfree.data.time.TimePeriodValues;\r\nimport org.jfree.data.time.TimePeriodValuesCollection;\r\nimport org.jfree.data.xy.XYDataset;\r\n\r\n\r\npublic class MiningGraphTab extends JMainTabSecondary {\r\n\r\n\tprivate enum MiningGraphAction {\r\n\t\tTYPE_CHANGE,\r\n\t\tQUICK_DATE,\r\n\t\tINCLUDE_ZERO,\r\n\t\tLOGARITHMIC,\r\n\t\tSHOW_ALL,\r\n\t\tUPDATE_SHOWN,\r\n\t}\r\n\r\n\tprivate enum Type {\r\n\t\tORE(AutoNumberFormat.ISK) {\r\n\t\t\t@Override\r\n\t\t\tpublic double toValue(MyMining mining) {\r\n\t\t\t\treturn mining.getValue();\r\n\t\t\t}\r\n\t\t\t@Override\r\n\t\t\tpublic String getText() {\r\n\t\t\t\treturn TabsMining.get().valueOre();\r\n\t\t\t}\r\n\t\t},\r\n\t\tREPROCESSED(AutoNumberFormat.ISK) {\r\n\t\t\t@Override\r\n\t\t\tpublic double toValue(MyMining mining) {\r\n\t\t\t\treturn mining.getValueReprocessed();\r\n\t\t\t}\r\n\t\t\t@Override\r\n\t\t\tpublic String getText() {\r\n\t\t\t\treturn TabsMining.get().valueReprocessed();\r\n\t\t\t}\r\n\t\t},\r\n\t\tREPROCESSED_MAX(AutoNumberFormat.ISK) {\r\n\t\t\t@Override\r\n\t\t\tpublic double toValue(MyMining mining) {\r\n\t\t\t\treturn mining.getValueReprocessedMax();\r\n\t\t\t}\r\n\t\t\t@Override\r\n\t\t\tpublic String getText() {\r\n\t\t\t\treturn TabsMining.get().valueReprocessedMax();\r\n\t\t\t}\r\n\t\t},\r\n\t\tVOLUME(AutoNumberFormat.DOUBLE) {\r\n\t\t\t@Override\r\n\t\t\tpublic double toValue(MyMining mining) {\r\n\t\t\t\treturn mining.getVolumeTotal();\r\n\t\t\t}\r\n\t\t\t@Override\r\n\t\t\tpublic String getText() {\r\n\t\t\t\treturn TabsMining.get().volume();\r\n\t\t\t}\r\n\t\t},\r\n\t\tCOUNT(AutoNumberFormat.ITEMS) {\r\n\t\t\t@Override\r\n\t\t\tpublic double toValue(MyMining mining) {\r\n\t\t\t\treturn mining.getCount();\r\n\t\t\t}\r\n\t\t\t@Override\r\n\t\t\tpublic String getText() {\r\n\t\t\t\treturn TabsMining.get().count();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprivate final AutoNumberFormat format;\r\n\r\n\t\tprivate Type(AutoNumberFormat format) {\r\n\t\t\tthis.format = format;\r\n\t\t}\r\n\r\n\t\tpublic String format(Number value) {\r\n\t\t\treturn JMenuInfo.format(value, format);\r\n\t\t}\r\n\r\n\t\tprivate AutoNumberFormat getAutoNumberFormat() {\r\n\t\t\treturn format;\r\n\t\t}\r\n\r\n\t\tpublic abstract double toValue(MyMining mining);\r\n\t\tpublic abstract String getText();\r\n\r\n\t\t@Override\r\n\t\tpublic String toString() {\r\n\t\t\treturn getText();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate final int PANEL_WIDTH_MINIMUM = 215;\r\n\r\n\t//GUI\r\n\tprivate final JComboBox<Type> jType;\r\n\tprivate final JComboBox<QuickDate> jQuickDate;\r\n\tprivate final JDateChooser jFrom;\r\n\tprivate final JDateChooser jTo;\r\n\tprivate final JDropDownButton jShow;\r\n\tprivate final JCheckBoxMenuItem jAll;\r\n\tprivate final JMultiSelectionList<String> jOwners;\r\n\tprivate final JCheckBoxMenuItem jIncludeZero;\r\n\tprivate final JRadioButtonMenuItem jLogarithmic;\r\n\r\n\t//Graph\r\n\tprivate final JFreeChart jFreeChart;\r\n\tprivate final ChartPanel jChartPanel;\r\n\tprivate final XYLineAndShapeRenderer renderer;\r\n\tprivate final DateAxis domainAxis;\r\n\tprivate final LogarithmicAxis rangeLogarithmicAxis;\r\n\tprivate final NumberAxis rangeLinearAxis;\r\n\r\n\t//Listener\r\n\tprivate final ListenerClass listener = new ListenerClass();\r\n\r\n\t//Data\r\n\tprivate final TotalComparator comparator = new TotalComparator();\r\n\tprivate final List<String> shownOrder = new ArrayList<>();\r\n\tprivate final Map<String, TimePeriodValues> series = new HashMap<>();\r\n\tprivate final Map<String, Double> seriesMax = new HashMap<>();\r\n\tprivate final Map<String, Double> seriesTotals = new HashMap<>();\r\n\tprivate final Map<String, String> seriesGroup = new HashMap<>();\r\n\tprivate final TimePeriodValuesCollection dataset = new TimePeriodValuesCollection();\r\n\tprivate final Map<String, JCheckBoxMenuItem> items = new TreeMap<>();\r\n\r\n\t//Settings ToDo\r\n\tprivate Date fromDate = null;\r\n\tprivate Date toDate = null;\r\n\tpublic static final String NAME = \"mininggraph\"; //Not to be changed!\r\n\r\n\r\n\tpublic MiningGraphTab(Program program) {\r\n\t\tsuper(program, NAME, TabsMining.get().miningGraph(), Images.TOOL_MINING_GRAPH.getIcon(), true);\r\n\r\n\t\tjType = new JComboBox<>(Type.values());\r\n\t\tjType.setActionCommand(MiningGraphAction.TYPE_CHANGE.name());\r\n\t\tjType.addActionListener(listener);\r\n\r\n\t\tJSeparator jTypeSeparator = new JSeparator();\r\n\r\n\t\tjQuickDate = new JComboBox<>(QuickDate.values());\r\n\t\tjQuickDate.setActionCommand(MiningGraphAction.QUICK_DATE.name());\r\n\t\tjQuickDate.addActionListener(listener);\r\n\r\n\t\tJLabel jFromLabel = new JLabel(TabsMining.get().from());\r\n\t\tjFrom = new JDateChooser(true);\r\n\t\tif (fromDate != null) {\r\n\t\t\tjFrom.setDate(fromDate);\r\n\t\t}\r\n\t\tjFrom.addDateChangeListener(listener);\r\n\r\n\t\tJLabel jToLabel = new JLabel(TabsMining.get().to());\r\n\t\tjTo = new JDateChooser(true);\r\n\t\tif (toDate != null) {\r\n\t\t\tjTo.setDate(toDate);\r\n\t\t}\r\n\t\tjTo.addDateChangeListener(listener);\r\n\r\n\t\tJSeparator jDateSeparator = new JSeparator();\r\n\r\n\t\tjShow = new JDropDownButton(TabsMining.get().show(), Images.LOC_INCLUDE.getIcon());\r\n\t\tjShow.setHorizontalAlignment(JButton.LEFT);\r\n\r\n\t\tjAll = new JCheckBoxMenuItem(General.get().all());\r\n\t\tjAll.setSelected(true);\r\n\t\tjAll.setActionCommand(MiningGraphAction.SHOW_ALL.name());\r\n\t\tjAll.addActionListener(listener);\r\n\t\tjAll.setFont(new Font(jAll.getFont().getName(), Font.ITALIC, jAll.getFont().getSize()));\r\n\r\n\t\tJSeparator jShowSeparator = new JSeparator();\r\n\r\n\t\tJDropDownButton jSettings = new JDropDownButton(Images.DIALOG_SETTINGS.getIcon());\r\n\r\n\t\tjIncludeZero = new JCheckBoxMenuItem(TabsMining.get().includeZero());\r\n\t\tjIncludeZero.setSelected(true);\r\n\t\tjIncludeZero.setActionCommand(MiningGraphAction.INCLUDE_ZERO.name());\r\n\t\tjIncludeZero.addActionListener(listener);\r\n\t\tjSettings.add(jIncludeZero);\r\n\r\n\t\tjSettings.addSeparator();\r\n\r\n\t\tButtonGroup buttonGroup = new ButtonGroup();\r\n\r\n\t\tJRadioButtonMenuItem jLinear = new JRadioButtonMenuItem(TabsMining.get().scaleLinear());\r\n\t\tjLinear.setSelected(true);\r\n\t\tjLinear.setActionCommand(MiningGraphAction.LOGARITHMIC.name());\r\n\t\tjLinear.addActionListener(listener);\r\n\t\tjSettings.add(jLinear);\r\n\t\tbuttonGroup.add(jLinear);\r\n\r\n\t\tjLogarithmic = new JRadioButtonMenuItem(TabsMining.get().scaleLogarithmic());\r\n\t\tjLogarithmic.setSelected(false);\r\n\t\tjLogarithmic.setActionCommand(MiningGraphAction.LOGARITHMIC.name());\r\n\t\tjLogarithmic.addActionListener(listener);\r\n\t\tjSettings.add(jLogarithmic);\r\n\t\tbuttonGroup.add(jLogarithmic);\r\n\r\n\t\tjOwners = new JMultiSelectionList<>();\r\n\t\tjOwners.getSelectionModel().addListSelectionListener(listener);\r\n\t\tJScrollPane jOwnersScroll = new JScrollPane(jOwners);\r\n\r\n\t\tdomainAxis = JFreeChartUtil.createDateAxis();\r\n\t\trangeLogarithmicAxis = JFreeChartUtil.createLogarithmicAxis(true);\r\n\t\trangeLinearAxis = JFreeChartUtil.createNumberAxis(true);\r\n\r\n\t\trenderer = JFreeChartUtil.createRenderer();\r\n\t\trenderer.setDefaultToolTipGenerator(new XYToolTipGenerator() {\r\n\t\t\t@Override\r\n\t\t\tpublic String generateToolTip(XYDataset dataset, int series, int item)\t{\r\n\t\t\t\tDate date = new Date(dataset.getX(series, item).longValue());\r\n\t\t\t\tNumber value = dataset.getY(series, item);\r\n\t\t\t\tType type = jType.getItemAt(jType.getSelectedIndex());\r\n\t\t\t\treturn TabsMining.get().graphToolTip(dataset.getSeriesKey(series), type.format(value), Formatter.columnDateOnly(date));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tXYPlot plot = JFreeChartUtil.createPlot(dataset, domainAxis, rangeLinearAxis, renderer);\r\n\t\tjFreeChart = JFreeChartUtil.createChart(plot);\r\n\t\tjChartPanel = JFreeChartUtil.createChartPanel(jFreeChart);\r\n\r\n\t\tint gapWidth = 5;\r\n\t\tint labelWidth = Math.max(jFromLabel.getPreferredSize().width, jToLabel.getPreferredSize().width);\r\n\t\tint panelWidth = PANEL_WIDTH_MINIMUM;\r\n\t\tpanelWidth = Math.max(panelWidth, jFrom.getPreferredSize().width + labelWidth + gapWidth);\r\n\t\tpanelWidth = Math.max(panelWidth, jTo.getPreferredSize().width + labelWidth + gapWidth);\r\n\t\tint dateWidth = panelWidth - labelWidth - gapWidth;\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jChartPanel)\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jType, panelWidth, panelWidth, panelWidth)\r\n\t\t\t\t\t.addComponent(jTypeSeparator, panelWidth, panelWidth, panelWidth)\r\n\t\t\t\t\t.addComponent(jQuickDate, panelWidth, panelWidth, panelWidth)\r\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t\t.addComponent(jFromLabel, labelWidth, labelWidth, labelWidth)\r\n\t\t\t\t\t\t\t.addComponent(jToLabel, labelWidth, labelWidth, labelWidth)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.addGap(gapWidth)\r\n\t\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t\t.addComponent(jFrom, dateWidth, dateWidth, dateWidth)\r\n\t\t\t\t\t\t\t.addComponent(jTo, dateWidth, dateWidth, dateWidth)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addComponent(jDateSeparator, panelWidth, panelWidth, panelWidth)\r\n\t\t\t\t\t.addComponent(jShow, panelWidth, panelWidth, panelWidth)\r\n\t\t\t\t\t.addComponent(jShowSeparator, panelWidth, panelWidth, panelWidth)\r\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t\t.addComponent(jSettings)\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addComponent(jOwnersScroll, panelWidth, panelWidth, panelWidth)\r\n\t\t\t\t)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createParallelGroup()\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addComponent(jChartPanel)\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addComponent(jType, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jTypeSeparator, 3, 3, 3)\r\n\t\t\t\t\t.addComponent(jQuickDate, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t.addComponent(jFromLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t\t.addComponent(jFrom, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t.addComponent(jToLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t\t.addComponent(jTo, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addComponent(jDateSeparator, 3, 3, 3)\r\n\t\t\t\t\t.addComponent(jShow, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jShowSeparator, 3, 3, 3)\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t.addComponent(jSettings, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addComponent(jOwnersScroll, 70, 70, Integer.MAX_VALUE)\r\n\t\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void updateData() {\r\n\t\tcreateData();\r\n\t\tupdateGUI();\r\n\t\tupdateShown();\r\n\t\tSwingUtilities.invokeLater(new Runnable() {\r\n\t\t\t@Override\r\n\t\t\tpublic void run() {\r\n\t\t\t\tupdateStatusbar(); //Must be done after being shown\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void updateCache() { }\r\n\r\n\t@Override\r\n\tpublic void clearData() { }\r\n\r\n\t@Override\r\n\tpublic Collection<LocationType> getLocations() {\r\n\t\treturn new ArrayList<>(); //No Location\r\n\t}\r\n\r\n\tprivate void updateGUI() {\r\n\t\tSet<String> ownerSet = new HashSet<>(program.getOwnerNames(false));\r\n\t\ttry {\r\n\t\t\tprogram.getProfileData().getMiningEventList().getReadWriteLock().readLock().lock();\r\n\t\t\tfor (MyMining mining : program.getProfileData().getMiningEventList()) {\r\n\t\t\t\townerSet.add(mining.getCharacterName());\r\n\t\t\t\tif(mining.isForCorporation()) {\r\n\t\t\t\t\townerSet.add(mining.getCorporationName());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tprogram.getProfileData().getMiningEventList().getReadWriteLock().readLock().unlock();\r\n \t\t}\r\n\t\tList<String> owners = new ArrayList<>(ownerSet);\r\n\t\tCollections.sort(owners);\r\n\t\tlistener.valueIsAdjusting = true;\r\n\t\tif (owners.isEmpty()) {\r\n\t\t\tjOwners.setEnabled(false);\r\n\t\t\tjOwners.setModel(new AbstractListModel<String>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize() {\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic String getElementAt(int index) {\r\n\t\t\t\t\treturn TabsTracker.get().noDataFound();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tList<String> selectedOwners = jOwners.getSelectedValuesList();\r\n\t\t\tjOwners.setEnabled(true);\r\n\t\t\tjOwners.setModel(new AbstractListModel<String>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize() {\r\n\t\t\t\t\treturn owners.size();\r\n\t\t\t\t}\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic String getElementAt(int index) {\r\n\t\t\t\t\treturn owners.get(index);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif (items.isEmpty()) {\r\n\t\t\t\tjOwners.selectAll();\r\n\t\t\t} else {\r\n\t\t\t\tListModel<String> model = jOwners.getModel();\r\n\t\t\t\tfor (int i = 0; i < model.getSize(); i++) {\r\n\t\t\t\t\tString ownerName = model.getElementAt(i);\r\n\t\t\t\t\tif (selectedOwners.contains(ownerName)) {\r\n\t\t\t\t\t\tjOwners.addSelectionInterval(i, i);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcreateData();\r\n\r\n\t\tjShow.removeAll();\r\n\t\tif (shownOrder.isEmpty()) {\r\n\t\t\tjShow.setEnabled(false);\r\n\t\t} else {\r\n\t\t\tjShow.setEnabled(true);\r\n\t\t\tjShow.add(jAll, true);\r\n\t\t\tList<String> itemsList = new ArrayList<>(shownOrder);\r\n\t\t\tCollections.sort(itemsList, comparator);\r\n\t\t\tfor (String s : itemsList) {\r\n\t\t\t\tJCheckBoxMenuItem jMenuItem = items.get(s);\r\n\t\t\t\tif (jMenuItem == null) { //Create new item\r\n\t\t\t\t\tjMenuItem = new JCheckBoxMenuItem(s);\r\n\t\t\t\t\tjMenuItem.setSelected(true);\r\n\t\t\t\t\tjMenuItem.setActionCommand(MiningGraphAction.UPDATE_SHOWN.name());\r\n\t\t\t\t\tjMenuItem.addActionListener(listener);\r\n\t\t\t\t\titems.put(s, jMenuItem);\r\n\t\t\t\t}\r\n\t\t\t\tjShow.add(jMenuItem, true);\r\n\t\t\t}\r\n\t\t}\r\n\t\tlistener.valueIsAdjusting = false;\r\n\t\tupdateShown();\r\n\t}\r\n\r\n\tprivate void createData() {\r\n\t\tDate from = getFromDate();\r\n\t\tDate to = getToDate();\r\n\t\tType type = jType.getItemAt(jType.getSelectedIndex());\r\n\t\t//Remove All\r\n\t\twhile (dataset.getSeriesCount() != 0) {\r\n\t\t\tdataset.removeSeries(0);\r\n\t\t}\r\n\t\tseries.clear();\r\n\t\tshownOrder.clear();\r\n\t\tseriesMax.clear();\r\n\t\tseriesTotals.clear();\r\n\t\tseriesGroup.clear();\r\n\t\t//dataset\r\n\t\tMap<String, Set<String>> groupCounts = new HashMap<>();\r\n\t\tMap<Date, Map<String, Double>> values = new TreeMap<>();\r\n\t\tSet<String> names = new HashSet<>();\r\n\t\tfinal String grandTotal = TabsMining.get().grandTotal();\r\n\t\tList<String> selectedOwners = getSelectedOwners();\r\n\t\ttry {\r\n\t\t\tprogram.getProfileData().getMiningEventList().getReadWriteLock().readLock().lock();\r\n\t\t\tfor (MyMining mining : program.getProfileData().getMiningEventList()) {\r\n\t\t\t\tfinal Date date = mining.getDate();\r\n\t\t\t\t//Filter\r\n\t\t\t\tif ((from != null && !date.after(from)) || (to != null && !date.before(to))) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tif (!selectedOwners.contains(mining.getCharacterName()) || (mining.isForCorporation() && !selectedOwners.contains(mining.getCorporationName()))) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\t//Type\r\n\t\t\t\tfinal String typeName = getTypeName(mining.getItem());\r\n\t\t\t\tfinal double value = type.toValue(mining);\r\n\t\t\t\tMap<String, Double> map = values.get(date);\r\n\t\t\t\tif (map == null) {\r\n\t\t\t\t\tmap = new HashMap<>();\r\n\t\t\t\t\tvalues.put(date, map);\r\n\t\t\t\t}\r\n\t\t\t\tnames.add(typeName);\r\n\t\t\t\tDouble typeTotal = map.getOrDefault(typeName, 0.0);\r\n\t\t\t\tmap.put(typeName, typeTotal + value);\r\n\t\t\t\t//Group Total\r\n\t\t\t\tfinal String groupName = TabsMining.get().groupTotal(mining.getItem().getGroup());\r\n\t\t\t\tdouble groupTotal = map.getOrDefault(groupName, 0.0);\r\n\t\t\t\tnames.add(groupName);\r\n\t\t\t\tmap.put(groupName, groupTotal + value);\r\n\t\t\t\tSet<String> set = groupCounts.get(groupName);\r\n\t\t\t\tif (set == null) {\r\n\t\t\t\t\tset = new HashSet<>();\r\n\t\t\t\t\tgroupCounts.put(groupName, set);\r\n\t\t\t\t}\r\n\t\t\t\tset.add(typeName);\r\n\t\t\t\tseriesGroup.put(typeName, groupName);\r\n\t\t\t\t//GrandTotal\r\n\t\t\t\tdouble total = map.getOrDefault(grandTotal, 0.0);\r\n\t\t\t\tnames.add(grandTotal);\r\n\t\t\t\tmap.put(grandTotal, total + value);\r\n\t\t\t\t//Totals\r\n\t\t\t\tdouble d;\r\n\t\t\t\td = seriesTotals.getOrDefault(typeName, 0.0);\r\n\t\t\t\td = d + value;\r\n\t\t\t\tseriesTotals.put(typeName, d);\r\n\t\t\t\td = seriesTotals.getOrDefault(groupName, 0.0);\r\n\t\t\t\td = d + value;\r\n\t\t\t\tseriesTotals.put(groupName, d);\r\n\t\t\t\td = seriesTotals.getOrDefault(grandTotal, 0.0);\r\n\t\t\t\td = d + value;\r\n\t\t\t\tseriesTotals.put(grandTotal, d);\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tprogram.getProfileData().getMiningEventList().getReadWriteLock().readLock().unlock();\r\n \t\t}\r\n\t\t//Remove group totals for groups with only one entry\r\n\t\tfor (Map.Entry<String, Set<String>> entry : groupCounts.entrySet()) {\r\n\t\t\tif (entry.getValue().size() < 2) {\r\n\t\t\t\tnames.remove(entry.getKey());\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Remove grand total if only one entry\r\n\t\tif (names.size() == 1) {\r\n\t\t\tnames.remove(grandTotal);\r\n\t\t}\r\n\t\tfor (Map.Entry<Date, Map<String, Double>> entry : values.entrySet()) {\r\n\t\t\tfinal Date date = entry.getKey();\r\n\t\t\tMap<String, Double> map = entry.getValue();\r\n\t\t\tfor (String name : names) {\r\n\t\t\t\tfinal double value = map.getOrDefault(name, 0.0);\r\n\t\t\t\tTimePeriodValues timePeriod = series.get(name);\r\n\t\t\t\tif (timePeriod == null) {\r\n\t\t\t\t\ttimePeriod = new TimePeriodValues(name);\r\n\t\t\t\t\tseries.put(name, timePeriod);\r\n\t\t\t\t}\r\n\t\t\t\tdouble max = seriesMax.getOrDefault(name, 0.0);\r\n\t\t\t\tmax = Math.max(max, value);\r\n\t\t\t\tseriesMax.put(name, max);\r\n\t\t\t\tSimpleTimePeriod simpleTimePeriod = new SimpleTimePeriod(date, date);\r\n\t\t\t\ttimePeriod.add(simpleTimePeriod, value);\r\n\t\t\t}\r\n\t\t}\r\n\t\tshownOrder.addAll(names);\r\n\t\tCollections.sort(shownOrder, comparator);\r\n\t\t//Add all\r\n\t\tfor (String typeName : shownOrder) {\r\n\t\t\tdataset.addSeries(series.get(typeName));\r\n\t\t}\r\n\t}\r\n\r\n\tprivate String getTypeName(Item item) {\r\n\t\tif (item.getTypeName().equals(item.getGroup())) {\r\n\t\t\treturn TabsMining.get().groupBasic(item.getTypeName());\r\n\t\t} else {\r\n\t\t\tString oreType = item.getTypeName().replace(item.getGroup(), \"\").trim();\r\n\t\t\treturn TabsMining.get().groupName(item.getGroup(), oreType);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate List<String> getSelectedItems() {\r\n\t\tList<String> selected = new ArrayList<>();\r\n\t\tfor (Map.Entry<String, JCheckBoxMenuItem> entry : items.entrySet()) {\r\n\t\t\tif (!entry.getValue().isSelected()) {\r\n\t\t\t\tcontinue; //Not selected\r\n\t\t\t}\r\n\t\t\tselected.add(entry.getKey());\r\n\t\t}\r\n\t\treturn selected;\r\n\t}\r\n\r\n\tprivate List<String> getSelectedOwners() {\r\n\t\treturn jOwners.getSelectedValuesList();\r\n\t}\r\n\r\n\tprivate void updateStatusbar() {\r\n\t\tType type = jType.getItemAt(jType.getSelectedIndex());\r\n\t\tList<String> selected = getSelectedItems();\r\n\t\tSet<String> shownGroups = new HashSet<>();\r\n\t\tSet<String> shownTypes = new HashSet<>();\r\n\t\tfor (String typeName : selected) {\r\n\t\t\tString groupName = seriesGroup.get(typeName);\r\n\t\t\tif (groupName == null) { //Group or Grand total\r\n\t\t\t\tshownGroups.add(typeName);\r\n\t\t\t} else {\r\n\t\t\t\tshownTypes.add(typeName);\r\n\t\t\t}\r\n\t\t}\r\n\t\tclearStatusbarLabels();\r\n\t\tfor (int i = 0; i < shownOrder.size(); i++) {\r\n\t\t\tfinal String typeName = shownOrder.get(i);\r\n\t\t\tfinal Double value = seriesTotals.get(typeName);\r\n\t\t\tString group = seriesGroup.get(typeName);\r\n\t\t\tif (value != null &&\r\n\t\t\t\t\t(shownGroups.contains(typeName) //Shown group\r\n\t\t\t\t\t|| (shownTypes.contains(typeName) && !shownGroups.contains(group)))) { //Shown Type\r\n\t\t\t\tfinal Color color = (Color) renderer.getSeriesPaint(i);\r\n\t\t\t\tJStatusLabel jStatusLabel = StatusPanel.createLabel(typeName, new ColorIcon(color), type.getAutoNumberFormat());\r\n\t\t\t\tjStatusLabel.setNumber(value);\r\n\t\t\t\taddStatusbarLabel(jStatusLabel);\r\n\t\t\t}\r\n\t\t}\r\n\t\tprogram.getStatusPanel().tabChanged();\r\n\t}\r\n\r\n\tprivate void updateShown() {\r\n\t\tList<String> selected = getSelectedItems();\r\n\t\tdouble max = 0;\r\n\t\tint count = 0;\r\n\t\tfor (int i = 0; i < dataset.getSeriesCount(); i++) {\r\n\t\t\tString typeName = shownOrder.get(i);\r\n\t\t\tboolean fromVisible = renderer.isSeriesVisible(i);\r\n\t\t\tboolean toVisible = selected.contains(typeName);\r\n\t\t\tif (fromVisible != toVisible) {\r\n\t\t\t\trenderer.setSeriesVisible(i, toVisible);\r\n\t\t\t}\r\n\t\t\tmax = Math.max(max, seriesMax.get(typeName));\r\n\t\t\tcount = Math.max(count, dataset.getItemCount(i));\r\n\t\t}\r\n\t\tJFreeChartUtil.updateTickScale(domainAxis, rangeLinearAxis, max);\r\n\t\trenderer.setDefaultShapesVisible(count < 2);\r\n\t\tupdateStatusbar();\r\n\t}\r\n\r\n\tprivate Date getFromDate() {\r\n\t\tLocalDate date = jFrom.getDate();\r\n\t\tif (date == null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tInstant instant = date.atStartOfDay().atZone(ZoneId.of(\"GMT\")).toInstant(); //Start of day - GMT\r\n\t\treturn Date.from(instant);\r\n\t}\r\n\r\n\tprivate Date getToDate() {\r\n\t\tLocalDate date = jTo.getDate();\r\n\t\tif (date == null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tInstant instant = date.atTime(23, 59, 59).atZone(ZoneId.of(\"GMT\")).toInstant(); //End of day - GMT\r\n\t\treturn Date.from(instant);\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener, DateChangeListener, ListSelectionListener {\r\n\r\n\t\tboolean valueIsAdjusting = false;\r\n\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\tif (MiningGraphAction.TYPE_CHANGE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tcreateData();\r\n\t\t\t\tupdateShown();\r\n\t\t\t} else if (MiningGraphAction.QUICK_DATE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tQuickDate quickDate = (QuickDate) jQuickDate.getSelectedItem();\r\n\t\t\t\tif (quickDate == QuickDate.RESET) {\r\n\t\t\t\t\tjTo.clearDate();\r\n\t\t\t\t\tjFrom.clearDate();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tDate toDate = getToDate();\r\n\t\t\t\t\tif (toDate == null) {\r\n\t\t\t\t\t\ttoDate = new Date(); //now\r\n\t\t\t\t\t}\r\n\t\t\t\t\tDate fromDate = quickDate.apply(toDate);\r\n\t\t\t\t\tif (fromDate != null) {\r\n\t\t\t\t\t\tjFrom.setDate(fromDate);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (MiningGraphAction.INCLUDE_ZERO.name().equals(e.getActionCommand())) {\r\n\t\t\t\trangeLogarithmicAxis.setAutoRangeIncludesZero(jIncludeZero.isSelected());\r\n\t\t\t\trangeLinearAxis.setAutoRangeIncludesZero(jIncludeZero.isSelected());\r\n\t\t\t} else if (MiningGraphAction.LOGARITHMIC.name().equals(e.getActionCommand())) {\r\n\t\t\t\tif (jLogarithmic.isSelected()) {\r\n\t\t\t\t\tjFreeChart.getXYPlot().setRangeAxis(rangeLogarithmicAxis);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tjFreeChart.getXYPlot().setRangeAxis(rangeLinearAxis);\r\n\t\t\t\t}\r\n\t\t\t} else if (MiningGraphAction.SHOW_ALL.name().equals(e.getActionCommand())) {\r\n\t\t\t\tif (valueIsAdjusting) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tvalueIsAdjusting = true;\r\n\t\t\t\tfor (JCheckBoxMenuItem jMenuItem : items.values()) {\r\n\t\t\t\t\tjMenuItem.setSelected(jAll.isSelected());\r\n\t\t\t\t}\r\n\t\t\t\tvalueIsAdjusting = false;\r\n\t\t\t\tupdateShown();\r\n\t\t\t} else if (MiningGraphAction.UPDATE_SHOWN.name().equals(e.getActionCommand())) {\r\n\t\t\t\tif (valueIsAdjusting) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tvalueIsAdjusting = true;\r\n\t\t\t\tjAll.setSelected(getSelectedItems().size() == items.size());\r\n\t\t\t\tvalueIsAdjusting = false;\r\n\t\t\t\tupdateShown();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void dateChanged(DateChangeEvent event) {\r\n\t\t\tDate from = getFromDate();\r\n\t\t\tDate to = getToDate();\r\n\t\t\tQuickDate quickDate = (QuickDate) jQuickDate.getSelectedItem();\r\n\t\t\tif (!quickDate.isValid(from, to)) {\r\n\t\t\t\tQuickDate selected = quickDate.getSelected(from, to);\r\n\t\t\t\tjQuickDate.setSelectedItem(selected);\r\n\t\t\t}\r\n\t\t\tif (from != null && to != null && from.after(to)) {\r\n\t\t\t\tjTo.setDate(from);\r\n\t\t\t}\r\n\t\t\tcreateData();\r\n\t\t\tupdateShown();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void valueChanged(ListSelectionEvent e) {\r\n\t\t\tif (e.getValueIsAdjusting() || valueIsAdjusting) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tcreateData();\r\n\t\t\tupdateShown();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic class TotalComparator implements Comparator<String> {\r\n\r\n\t\tprivate final String grandTotal = TabsMining.get().grandTotal();\r\n\t\tprivate final String groupTotal = TabsMining.get().groupTotal(\"\");\r\n\r\n\t@Override\r\n\t\tpublic int compare(String o1, String o2) {\r\n\t\t\tboolean t1 = o1.equals(grandTotal);\r\n\t\t\tboolean t2 = o2.equals(grandTotal);\r\n\t\t\tif (t1) {\r\n\t\t\t\treturn -1;\r\n\t\t\t} else if (t2) {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\t\t\tboolean g1 = o1.contains(groupTotal);\r\n\t\t\tboolean g2 = o2.contains(groupTotal);\r\n\t\t\tif (g1) {\r\n\t\t\t\tString type = o1.replace(groupTotal, \"\").trim();\r\n\t\t\t\tif (o2.contains(type)) {\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (g2) {\r\n\t\t\t\tString type = o2.replace(groupTotal, \"\").trim();\r\n\t\t\t\tif (o1.contains(type)) {\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn o1.compareToIgnoreCase(o2);\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/mining/MiningTab.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.mining;\r\n\r\nimport ca.odell.glazedlists.EventList;\r\nimport ca.odell.glazedlists.FilterList;\r\nimport ca.odell.glazedlists.ListSelection;\r\nimport ca.odell.glazedlists.SortedList;\r\nimport ca.odell.glazedlists.event.ListEvent;\r\nimport ca.odell.glazedlists.event.ListEventListener;\r\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\r\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\r\nimport ca.odell.glazedlists.swing.TableComparatorChooser;\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\nimport javax.swing.JComponent;\r\nimport javax.swing.JMenu;\r\nimport javax.swing.JPopupMenu;\r\nimport javax.swing.JScrollPane;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMining;\r\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\r\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel;\r\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel.JStatusLabel;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabPrimary;\r\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuColumns;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo.AutoNumberFormat;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\r\nimport net.nikr.eve.jeveasset.i18n.TabsMining;\r\n\r\n\r\npublic class MiningTab extends JMainTabPrimary {\r\n\t//GUI\r\n\tprivate final JAutoColumnTable jTable;\r\n\tprivate final JStatusLabel jValue;\r\n\tprivate final JStatusLabel jReprocessed;\r\n\tprivate final JStatusLabel jCount;\r\n\tprivate final JStatusLabel jAverage;\r\n\tprivate final JStatusLabel jVolume;\r\n\r\n\t//Table\r\n\tprivate final MiningFilterControl filterControl;\r\n\tprivate final EnumTableFormatAdaptor<MiningTableFormat, MyMining> tableFormat;\r\n\tprivate final DefaultEventTableModel<MyMining> tableModel;\r\n\tprivate final EventList<MyMining> eventList;\r\n\tprivate final FilterList<MyMining> filterList;\r\n\tprivate final DefaultEventSelectionModel<MyMining> selectionModel;\r\n\r\n\tpublic static final String NAME = \"mining\"; //Not to be changed!\r\n\r\n\tpublic MiningTab(Program program) {\r\n\t\tsuper(program, NAME, TabsMining.get().miningLog(), Images.TOOL_MINING_LOG.getIcon(), true);\r\n\r\n\t\tListenerClass listener = new ListenerClass();\r\n\r\n\t//StatusPanels must be initialized before the eventlist\r\n\t\tjVolume = StatusPanel.createLabel(TabsMining.get().totalVolume(), Images.ASSETS_VOLUME.getIcon(), AutoNumberFormat.DOUBLE);\r\n\t\tthis.addStatusbarLabel(jVolume);\r\n\r\n\t\tjCount = StatusPanel.createLabel(TabsMining.get().totalCount(), Images.EDIT_ADD.getIcon(), AutoNumberFormat.ITEMS);\r\n\t\tthis.addStatusbarLabel(jCount);\r\n\r\n\t\tjAverage = StatusPanel.createLabel(TabsMining.get().average(), Images.ASSETS_AVERAGE.getIcon(), AutoNumberFormat.ISK);\r\n\t\tthis.addStatusbarLabel(jAverage);\r\n\r\n\t\tjReprocessed = StatusPanel.createLabel(TabsMining.get().totalReprocessed(), Images.SETTINGS_REPROCESSING.getIcon(), AutoNumberFormat.ISK);\r\n\t\tthis.addStatusbarLabel(jReprocessed);\r\n\r\n\t\tjValue = StatusPanel.createLabel(TabsMining.get().totalValue(), Images.TOOL_VALUES.getIcon(), AutoNumberFormat.ISK);\r\n\t\tthis.addStatusbarLabel(jValue);\r\n\r\n\t\t//Table Format\r\n\t\ttableFormat = TableFormatFactory.miningTableFormat();\r\n\t\t//Backend\r\n\t\teventList = program.getProfileData().getMiningEventList();\r\n\t\t//Sorting (per column)\r\n\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\tSortedList<MyMining> sortedList = new SortedList<>(eventList);\r\n\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t//Filter\r\n\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\tfilterList = new FilterList<>(sortedList);\r\n\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t//Listener\r\n\t\tfilterList.addListEventListener(listener);\r\n\t\t//Table Model\r\n\t\ttableModel = EventModels.createTableModel(filterList, tableFormat);\r\n\t\t//Table\r\n\t\tjTable = new JAutoColumnTable(program, tableModel);\r\n\t\tjTable.setCellSelectionEnabled(true);\r\n\t\tjTable.setRowSelectionAllowed(true);\r\n\t\tjTable.setColumnSelectionAllowed(true);\r\n\t\t//Sorting\r\n\t\tTableComparatorChooser<MyMining> comparatorChooser = TableComparatorChooser.install(jTable, sortedList, TableComparatorChooser.MULTIPLE_COLUMN_MOUSE, tableFormat);\r\n\t\t//Selection Model\r\n\t\tselectionModel = EventModels.createSelectionModel(filterList);\r\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\r\n\t\tjTable.setSelectionModel(selectionModel);\r\n\r\n\t\t//Listeners\r\n\t\tinstallTable(jTable);\r\n\t\t//Scroll\r\n\t\tJScrollPane jTableScroll = new JScrollPane(jTable);\r\n\t\t//Table Filter\r\n\t\tfilterControl = new MiningFilterControl(sortedList);\r\n\t\t//Menu\r\n\t\tinstallTableTool(new MiningTableMenu(), tableFormat, comparatorChooser, tableModel, jTable, filterControl, MyMining.class);\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup()\r\n\t\t\t\t.addComponent(filterControl.getPanel())\r\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(filterControl.getPanel())\r\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\r\n\t\t);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void updateCache() { }\r\n\r\n\t@Override\r\n\tpublic void clearData() { }\r\n\r\n\t@Override\r\n\tpublic Collection<LocationType> getLocations() {\r\n\t\treturn new ArrayList<>(); //No Location\r\n\t}\r\n\r\n\tprivate void updateStatusbar() {\r\n\t\tdouble averageValue = 0;\r\n\t\tdouble totalValue = 0;\r\n\t\tlong totalCount = 0;\r\n\t\tdouble totalVolume = 0;\r\n\t\tdouble totalReprocessed = 0;\r\n\t\ttry {\r\n\t\t\tfilterList.getReadWriteLock().readLock().lock();\r\n\t\t\tfor (MyMining mining : filterList) {\r\n\t\t\t\ttotalValue = totalValue + mining.getValue();\r\n\t\t\t\ttotalCount = totalCount + mining.getCount();\r\n\t\t\t\ttotalVolume = totalVolume + mining.getVolumeTotal();\r\n\t\t\t\ttotalReprocessed = totalReprocessed + mining.getValueReprocessed();\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tfilterList.getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t\tif (totalCount > 0 && totalValue > 0) {\r\n\t\t\taverageValue = totalValue / totalCount;\r\n\t\t}\r\n\t\tjVolume.setNumber(totalVolume);\r\n\t\tjCount.setNumber(totalCount);\r\n\t\tjAverage.setNumber(averageValue);\r\n\t\tjReprocessed.setNumber(totalReprocessed);\r\n\t\tjValue.setNumber(totalValue);\r\n\t}\r\n\r\n\tprivate class MiningTableMenu implements TableMenu<MyMining> {\r\n\t\t@Override\r\n\t\tpublic MenuData<MyMining> getMenuData() {\r\n\t\t\treturn new MenuData<>(selectionModel.getSelected());\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic JMenu getFilterMenu() {\r\n\t\t\treturn filterControl.getMenu(jTable, selectionModel.getSelected());\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic JMenu getColumnMenu() {\r\n\t\t\treturn new JMenuColumns<>(program, tableFormat, tableModel, jTable, NAME);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void addInfoMenu(JPopupMenu jPopupMenu) {\r\n\t\t\tJMenuInfo.infoItem(jPopupMenu, selectionModel.getSelected());\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void addToolMenu(JComponent jComponent) { }\r\n\t}\r\n\r\n\tprivate class MiningFilterControl extends FilterControl<MyMining> {\r\n\r\n\t\tpublic MiningFilterControl(EventList<MyMining> exportEventList) {\r\n\t\t\tsuper(program.getMainWindow().getFrame(),\r\n\t\t\t\t\tNAME,\r\n\t\t\t\t\ttableFormat,\r\n\t\t\t\t\teventList,\r\n\t\t\t\t\texportEventList,\r\n\t\t\t\t\tfilterList\r\n\t\t\t\t\t);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void saveSettings(final String msg) {\r\n\t\t\tprogram.saveSettings(\"Mining Table: \" + msg); //Save Mining Filters and Export Settings\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ListEventListener<MyMining> {\r\n\t\t@Override\r\n\t\tpublic void listChanged(final ListEvent<MyMining> listChanges) {\r\n\t\t\tupdateStatusbar();\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/mining/MiningTableFormat.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.mining;\r\n\r\nimport java.util.Comparator;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMining;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.DateOnly;\r\nimport net.nikr.eve.jeveasset.i18n.TabsMining;\r\n\r\n\r\npublic enum MiningTableFormat implements EnumTableColumn<MyMining> {\r\n\tDATE(DateOnly.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsMining.get().columnDate();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyMining from) {\r\n\t\t\treturn from.getDateOnly();\r\n\t\t}\r\n\t},\r\n\tNAME(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsMining.get().columnName();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyMining from) {\r\n\t\t\treturn from.getItem().getTypeName();\r\n\t\t}\r\n\t},\r\n\tGROUP(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsMining.get().columnGroup();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyMining from) {\r\n\t\t\treturn from.getItem().getGroup();\r\n\t\t}\r\n\t},\r\n\tCATEGORY(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsMining.get().columnCategory();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyMining from) {\r\n\t\t\treturn from.getItem().getCategory();\r\n\t\t}\r\n\t},\r\n\tOWNER(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsMining.get().columnOwner();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyMining from) {\r\n\t\t\treturn from.getCharacterName();\r\n\t\t}\r\n\t},\r\n\tLOCATION(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsMining.get().columnLocation();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyMining from) {\r\n\t\t\treturn from.getLocation().getLocation();\r\n\t\t}\r\n\t},\r\n\tCOUNT(Long.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsMining.get().columnCount();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyMining from) {\r\n\t\t\treturn from.getCount();\r\n\t\t}\r\n\t},\r\n\tPRICE_ORE(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsMining.get().columnPriceOre();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyMining from) {\r\n\t\t\treturn from.getDynamicPrice();\r\n\t\t}\r\n\t},\r\n\tPRICE_REPROCESSED(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsMining.get().columnPriceReprocessed();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsMining.get().columnPriceReprocessedToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyMining from) {\r\n\t\t\treturn from.getPriceReprocessed();\r\n\t\t}\r\n\t},\r\n\tPRICE_REPROCESSED_MAX(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsMining.get().columnPriceReprocessedMax();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsMining.get().columnPriceReprocessedMaxToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyMining from) {\r\n\t\t\treturn from.getPriceReprocessedMax();\r\n\t\t}\r\n\t},\r\n\tVALUE_ORE(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsMining.get().columnValueOre();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyMining from) {\r\n\t\t\treturn from.getValue();\r\n\t\t}\r\n\t},\r\n\tVALUE_REPROCESSED(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsMining.get().columnValueReprocessed();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsMining.get().columnValueReprocessedToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyMining from) {\r\n\t\t\treturn from.getValueReprocessed();\r\n\t\t}\r\n\t},\r\n\r\n\tVALUE_REPROCESSED_MAX(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsMining.get().columnValueReprocessedMax();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsMining.get().columnValueReprocessedMaxToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyMining from) {\r\n\t\t\treturn from.getValueReprocessedMax();\r\n\t\t}\r\n\t},\r\n\tVOLUME(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsMining.get().columnVolume();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyMining from) {\r\n\t\t\treturn from.getVolumeTotal();\r\n\t\t}\r\n\t},\r\n\tVALUE_PER_VOLUME_ORE(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsMining.get().columnValuePerVolumeOre();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyMining from) {\r\n\t\t\treturn from.getValuePerVolumeOre();\r\n\t\t}\r\n\t},\r\n\tVALUE_PER_VOLUME_REPROCESSED(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsMining.get().columnValuePerVolumeReprocessed();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsMining.get().columnValuePerVolumeReprocessedToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyMining from) {\r\n\t\t\treturn from.getValuePerVolumeReprocessed();\r\n\t\t}\r\n\t},\r\n\tVALUE_PER_VOLUME_REPROCESSED_MAX(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsMining.get().columnValuePerVolumeReprocessedMax();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsMining.get().columnValuePerVolumeReprocessedMaxToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyMining from) {\r\n\t\t\treturn from.getValuePerVolumeReprocessedMax();\r\n\t\t}\r\n\t},\r\n\tCORPORATION(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsMining.get().columnCorporation();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyMining from) {\r\n\t\t\treturn from.getCorporationName();\r\n\t\t}\r\n\t},\r\n\tFOR_CORPORATION(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsMining.get().columnForCorporation();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyMining from) {\r\n\t\t\treturn from.isForCorporation() ? TabsMining.get().corporation() : TabsMining.get().character();\r\n\t\t}\r\n\t};\r\n\r\n\tprivate final Class<?> type;\r\n\tprivate final Comparator<?> comparator;\r\n\r\n\tprivate MiningTableFormat(final Class<?> type) {\r\n\t\tthis.type = type;\r\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\r\n\t}\r\n\t@Override\r\n\tpublic Class<?> getType() {\r\n\t\treturn type;\r\n\t}\r\n\t@Override\r\n\tpublic Comparator<?> getComparator() {\r\n\t\treturn comparator;\r\n\t}\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn getColumnName();\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/orders/JMarketOrdersTable.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.orders;\r\n\r\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\r\nimport java.awt.Component;\r\nimport javax.swing.table.TableCellRenderer;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\r\n\r\n\r\npublic class JMarketOrdersTable extends JAutoColumnTable {\r\n\r\n\tprivate final DefaultEventTableModel<MyMarketOrder> tableModel;\r\n\r\n\tpublic JMarketOrdersTable(final Program program, final DefaultEventTableModel<MyMarketOrder> tableModel) {\r\n\t\tsuper(program, tableModel);\r\n\t\tthis.tableModel = tableModel;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Component prepareRenderer(final TableCellRenderer renderer, final int row, final int column) {\r\n\t\tComponent component = super.prepareRenderer(renderer, row, column);\r\n\t\tboolean isSelected = isCellSelected(row, column);\r\n\t\tMyMarketOrder marketOrder = tableModel.getElementAt(row);\r\n\t\tString columnName = (String) this.getTableHeader().getColumnModel().getColumn(column).getHeaderValue();\r\n\r\n\t\tif (columnName.equals(MarketTableFormat.EXPIRES.getColumnName())) {\r\n\t\t\tif (marketOrder.isExpired()) {\r\n\t\t\t\tColorSettings.configCell(component, ColorEntry.MARKET_ORDERS_EXPIRED, isSelected);\r\n\t\t\t} else if (marketOrder.isNearExpired()) {\r\n\t\t\t\tColorSettings.configCell(component, ColorEntry.MARKET_ORDERS_NEAR_EXPIRED, isSelected);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (columnName.equals(MarketTableFormat.OUTBID_PRICE.getColumnName())) {\r\n\t\t\tif (marketOrder.haveOutbid()) {\r\n\t\t\t\tif (marketOrder.isOutbid()) {\r\n\t\t\t\t\tif (marketOrder.isOutbidOwned()) {\r\n\t\t\t\t\t\tColorSettings.configCell(component, ColorEntry.MARKET_ORDERS_OUTBID_NOT_BEST_OWNED, isSelected);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tColorSettings.configCell(component, ColorEntry.MARKET_ORDERS_OUTBID_NOT_BEST, isSelected);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tColorSettings.configCell(component, ColorEntry.MARKET_ORDERS_OUTBID_BEST, isSelected);\r\n\t\t\t\t}\r\n\t\t\t} else if (marketOrder.isActive()) {\r\n\t\t\t\tColorSettings.configCell(component, ColorEntry.MARKET_ORDERS_OUTBID_UNKNOWN, isSelected);\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Order filled warning\r\n\t\tif (columnName.equals(MarketTableFormat.QUANTITY.getColumnName())) {\r\n\t\t\tif (marketOrder.isNearFilled()) {\r\n\t\t\t\tColorSettings.configCell(component, ColorEntry.MARKET_ORDERS_NEAR_FILLED, isSelected);\r\n\t\t\t}\r\n\t\t}\r\n\t\t//User set location\r\n\t\tif (marketOrder.getLocation().isUserLocation() && columnName.equals(MarketTableFormat.LOCATION.getColumnName())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.CUSTOM_USER_LOCATION, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\t//Changed date\r\n\t\tif (columnName.equals(MarketTableFormat.CHANGED.getColumnName()) && Settings.get().getTableChanged(MarketOrdersTab.NAME).before(marketOrder.getChanged())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.MARKET_ORDERS_NEW, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\r\n\t\treturn component;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/orders/MarketLog.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.orders;\r\n\r\nimport java.util.Date;\r\n\r\n\r\npublic class MarketLog {\r\n\r\n\tprivate Double price;\r\n\tprivate Double volRemaining;\r\n\tprivate Integer typeID;\r\n\tprivate Integer range;\r\n\tprivate Long orderID;\r\n\tprivate Integer volEntered;\r\n\tprivate Integer minVolume;\r\n\tprivate Boolean bid;\r\n\tprivate Date issueDate;\r\n\tprivate Integer duration;\r\n\tprivate Long stationID;\r\n\tprivate Long regionID;\r\n\tprivate Long solarSystemID;\r\n\tprivate Integer jumps;\r\n\tprivate String empty;\r\n\r\n\tpublic MarketLog() {\r\n\t}\r\n\r\n\tpublic MarketLog(Double price, Double volRemaining, Integer typeID, Integer range, Long orderID, Integer volEntered, Integer minVolume, Boolean bid, Date issueDate, Integer duration, Long stationID, Long regionID, Long solarSystemID, Integer jumps, String empty) {\r\n\t\tthis.price = price;\r\n\t\tthis.volRemaining = volRemaining;\r\n\t\tthis.typeID = typeID;\r\n\t\tthis.range = range;\r\n\t\tthis.orderID = orderID;\r\n\t\tthis.volEntered = volEntered;\r\n\t\tthis.minVolume = minVolume;\r\n\t\tthis.bid = bid;\r\n\t\tthis.issueDate = issueDate;\r\n\t\tthis.duration = duration;\r\n\t\tthis.stationID = stationID;\r\n\t\tthis.regionID = regionID;\r\n\t\tthis.solarSystemID = solarSystemID;\r\n\t\tthis.jumps = jumps;\r\n\t\tthis.empty = empty;\r\n\t}\r\n\r\n\tpublic Double getPrice() {\r\n\t\treturn price;\r\n\t}\r\n\r\n\tpublic void setPrice(Double price) {\r\n\t\tthis.price = price;\r\n\t}\r\n\r\n\tpublic Double getVolRemaining() {\r\n\t\treturn volRemaining;\r\n\t}\r\n\r\n\tpublic void setVolRemaining(Double volRemaining) {\r\n\t\tthis.volRemaining = volRemaining;\r\n\t}\r\n\r\n\tpublic Integer getTypeID() {\r\n\t\treturn typeID;\r\n\t}\r\n\r\n\tpublic void setTypeID(Integer typeID) {\r\n\t\tthis.typeID = typeID;\r\n\t}\r\n\r\n\tpublic Integer getRange() {\r\n\t\treturn range;\r\n\t}\r\n\r\n\tpublic void setRange(Integer range) {\r\n\t\tthis.range = range;\r\n\t}\r\n\r\n\tpublic Long getOrderID() {\r\n\t\treturn orderID;\r\n\t}\r\n\r\n\tpublic void setOrderID(Long orderID) {\r\n\t\tthis.orderID = orderID;\r\n\t}\r\n\r\n\tpublic Integer getVolEntered() {\r\n\t\treturn volEntered;\r\n\t}\r\n\r\n\tpublic void setVolEntered(Integer volEntered) {\r\n\t\tthis.volEntered = volEntered;\r\n\t}\r\n\r\n\tpublic Integer getMinVolume() {\r\n\t\treturn minVolume;\r\n\t}\r\n\r\n\tpublic void setMinVolume(Integer minVolume) {\r\n\t\tthis.minVolume = minVolume;\r\n\t}\r\n\r\n\tpublic Boolean getBid() {\r\n\t\treturn bid;\r\n\t}\r\n\r\n\tpublic void setBid(Boolean bid) {\r\n\t\tthis.bid = bid;\r\n\t}\r\n\r\n\tpublic Date getIssueDate() {\r\n\t\treturn issueDate;\r\n\t}\r\n\r\n\tpublic void setIssueDate(Date issueDate) {\r\n\t\tthis.issueDate = issueDate;\r\n\t}\r\n\r\n\tpublic Integer getDuration() {\r\n\t\treturn duration;\r\n\t}\r\n\r\n\tpublic void setDuration(Integer duration) {\r\n\t\tthis.duration = duration;\r\n\t}\r\n\r\n\tpublic Long getStationID() {\r\n\t\treturn stationID;\r\n\t}\r\n\r\n\tpublic void setStationID(Long stationID) {\r\n\t\tthis.stationID = stationID;\r\n\t}\r\n\r\n\tpublic Long getRegionID() {\r\n\t\treturn regionID;\r\n\t}\r\n\r\n\tpublic void setRegionID(Long regionID) {\r\n\t\tthis.regionID = regionID;\r\n\t}\r\n\r\n\tpublic Long getSolarSystemID() {\r\n\t\treturn solarSystemID;\r\n\t}\r\n\r\n\tpublic void setSolarSystemID(Long solarSystemID) {\r\n\t\tthis.solarSystemID = solarSystemID;\r\n\t}\r\n\r\n\tpublic Integer getJumps() {\r\n\t\treturn jumps;\r\n\t}\r\n\r\n\tpublic void setJumps(Integer jumps) {\r\n\t\tthis.jumps = jumps;\r\n\t}\r\n\r\n\tpublic String getEmpty() {\r\n\t\treturn empty;\r\n\t}\r\n\r\n\tpublic void setEmpty(String empty) {\r\n\t\tthis.empty = empty;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/orders/MarketOrdersTab.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.tabs.orders;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.FilterList;\nimport ca.odell.glazedlists.ListSelection;\nimport ca.odell.glazedlists.SortedList;\nimport ca.odell.glazedlists.event.ListEvent;\nimport ca.odell.glazedlists.event.ListEventListener;\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport ca.odell.glazedlists.swing.TableComparatorChooser;\nimport java.awt.Color;\nimport java.awt.Component;\nimport java.awt.Graphics;\nimport java.awt.Graphics2D;\nimport java.awt.Image;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.io.File;\nimport java.io.IOException;\nimport java.math.BigDecimal;\nimport java.math.RoundingMode;\nimport java.nio.file.FileSystems;\nimport java.nio.file.Path;\nimport java.nio.file.StandardWatchEventKinds;\nimport static java.nio.file.StandardWatchEventKinds.OVERFLOW;\nimport java.nio.file.WatchEvent;\nimport java.nio.file.WatchKey;\nimport java.nio.file.WatchService;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Date;\nimport java.util.List;\nimport java.util.Objects;\nimport javax.swing.GroupLayout;\nimport javax.swing.Icon;\nimport javax.swing.JButton;\nimport javax.swing.JComboBox;\nimport javax.swing.JComponent;\nimport javax.swing.JLabel;\nimport javax.swing.JMenu;\nimport javax.swing.JOptionPane;\nimport javax.swing.JPopupMenu;\nimport javax.swing.JRadioButtonMenuItem;\nimport javax.swing.JScrollPane;\nimport javax.swing.Timer;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder.MarketOrderRange;\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder.MarketOrderState;\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\nimport net.nikr.eve.jeveasset.data.settings.Colors;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.dialogs.settings.SoundsSettingsPanel.SoundOption;\nimport net.nikr.eve.jeveasset.gui.dialogs.update.StructureUpdateDialog;\nimport net.nikr.eve.jeveasset.gui.dialogs.update.TaskDialog;\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel.JStatusLabel;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.CopyHandler;\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\nimport net.nikr.eve.jeveasset.gui.shared.InstantToolTip;\nimport net.nikr.eve.jeveasset.gui.shared.MarketDetailsColumn;\nimport net.nikr.eve.jeveasset.gui.shared.MarketDetailsColumn.MarketDetailsActionListener;\nimport net.nikr.eve.jeveasset.gui.shared.Updatable;\nimport net.nikr.eve.jeveasset.gui.shared.components.JFixedToolBar;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabPrimary;\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuColumns;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo.AutoNumberFormat;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuUI;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\nimport net.nikr.eve.jeveasset.gui.shared.table.PaddingTableCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\nimport net.nikr.eve.jeveasset.gui.tabs.orders.OutbidProcesser.OutbidProcesserInput;\nimport net.nikr.eve.jeveasset.gui.tabs.orders.OutbidProcesser.OutbidProcesserOutput;\nimport net.nikr.eve.jeveasset.i18n.DialoguesUpdate;\nimport net.nikr.eve.jeveasset.i18n.TabsOrders;\nimport net.nikr.eve.jeveasset.io.esi.EsiPublicMarketOrdersGetter;\nimport net.nikr.eve.jeveasset.io.local.MarketLogReader;\nimport net.nikr.eve.jeveasset.gui.sounds.SoundPlayer;\nimport net.nikr.eve.jeveasset.io.local.profile.ProfileDatabase;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n\npublic class MarketOrdersTab extends JMainTabPrimary {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(MarketOrdersTab.class);\n\n\tprivate enum MarketOrdersAction {\n\t\tUPDATE,\n\t\tORDER_TYPE,\n\t\tORDER_RANGE\n\t}\n\n\tprivate static final int SIGNIFICANT_FIGURES = 4;\n\n\tprivate final JAutoColumnTable jTable;\n\tprivate final JButton jUpdate;\n\tprivate final JButton jClearNew;\n\tprivate final JComboBox<MarketOrderRange> jOrderRangeNext;\n\tprivate final JComboBox<String> jOrderType;\n\tprivate final JStatusLabel jSellOrdersTotal;\n\tprivate final JStatusLabel jBuyOrdersTotal;\n\tprivate final JStatusLabel jEscrowTotal;\n\tprivate final JStatusLabel jToCoverTotal;\n\tprivate final JStatusLabel jSellOrderRangeLast;\n\tprivate final JStatusLabel jLastEsiUpdate;\n\tprivate final JStatusLabel jLastLogUpdate;\n\tprivate final JStatusLabel jClipboard;\n\tprivate final Timer timer;\n\tprivate final FileListener fileListener;\n\tprivate static Date lastLogUpdate = null;\n\tprivate static String clipboardData = null;\n\tprivate boolean showUnknownLocationsWarning = true;\n\n\t//Table\n\tprivate final MarketOrdersFilterControl filterControl;\n\tprivate final EnumTableFormatAdaptor<MarketTableFormat, MyMarketOrder> tableFormat;\n\tprivate final DefaultEventTableModel<MyMarketOrder> tableModel;\n\tprivate final EventList<MyMarketOrder> eventList;\n\tprivate final FilterList<MyMarketOrder> filterList;\n\tprivate final DefaultEventSelectionModel<MyMarketOrder> selectionModel;\n\n\tpublic static final String NAME = \"marketorders\"; //Not to be changed!\n\n\tpublic MarketOrdersTab(final Program program) {\n\t\tsuper(program, NAME, TabsOrders.get().market(), Images.TOOL_MARKET_ORDERS.getIcon(), true);\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tJFixedToolBar jToolBar = new JFixedToolBar();\n\n\t\tjClearNew = new JButton(TabsOrders.get().clearNew(), Images.UPDATE_DONE_OK.getIcon());\n\t\tjClearNew.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tSettings.get().getTableChanged().put(NAME, new Date());\n\t\t\t\tjTable.repaint();\n\t\t\t\tjClearNew.setEnabled(false);\n\t\t\t\tprogram.saveSettings(\"Table Changed (market orders cleared)\");\n\t\t\t}\n\t\t});\n\t\tjToolBar.addButton(jClearNew);\n\n\t\tjToolBar.addSeparator();\n\n\t\tjToolBar.addSpace(5);\n\n\t\tjOrderRangeNext = new JComboBox<>(MarketOrderRange.valuesSorted());\n\t\tjOrderRangeNext.setSelectedItem(Settings.get().getOutbidOrderRange());\n\t\tjOrderRangeNext.setActionCommand(MarketOrdersAction.ORDER_RANGE.name());\n\t\tjOrderRangeNext.addActionListener(listener);\n\t\tjToolBar.add(jOrderRangeNext, 95);\n\n\t\tjToolBar.addSpace(1);\n\n\t\tJLabel jOrderRangeNextLabel = new JLabel(Images.MISC_HELP.getIcon());\n\t\tjOrderRangeNextLabel.setToolTipText(TabsOrders.get().sellOrderRangeToolTip());\n\t\tInstantToolTip.install(jOrderRangeNextLabel);\n\t\tjToolBar.addLabelIcon(jOrderRangeNextLabel);\n\n\t\tjToolBar.addSpace(7);\n\n\t\tString[] orderTypes = {TabsOrders.get().updateOutbidFileBuy(), TabsOrders.get().updateOutbidFileSell()};\n\t\tjOrderType = new JComboBox<>(orderTypes);\n\t\tjOrderType.setSelectedItem(TabsOrders.get().updateOutbidFileBuy());\n\t\tjOrderType.setActionCommand(MarketOrdersAction.ORDER_TYPE.name());\n\t\tjOrderType.addActionListener(listener);\n\t\tjToolBar.add(jOrderType, 95);\n\n\t\tjToolBar.addSpace(1);\n\n\t\tJLabel jOrderTypeLabel = new JLabel(Images.MISC_HELP.getIcon());\n\t\tjOrderTypeLabel.setToolTipText(TabsOrders.get().marketLogTypeToolTip());\n\t\tInstantToolTip.install(jOrderTypeLabel);\n\t\tjToolBar.addLabelIcon(jOrderTypeLabel);\n\n\t\tjToolBar.addSpace(7);\n\n\t\tjToolBar.addSeparator();\n\n\t\tjUpdate = new JButton(TabsOrders.get().updateOutbidEsi(), Images.DIALOG_UPDATE.getIcon());\n\t\tjUpdate.setActionCommand(MarketOrdersAction.UPDATE.name());\n\t\tjUpdate.addActionListener(listener);\n\t\tjToolBar.addButton(jUpdate);\n\n\t//StatusPanels must be initialized before the eventlist\n\t\tjSellOrdersTotal = StatusPanel.createLabel(TabsOrders.get().totalSellOrders(), Images.ORDERS_SELL.getIcon(), AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jSellOrdersTotal);\n\n\t\tjBuyOrdersTotal = StatusPanel.createLabel(TabsOrders.get().totalBuyOrders(), Images.ORDERS_BUY.getIcon(), AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jBuyOrdersTotal);\n\n\t\tjEscrowTotal = StatusPanel.createLabel(TabsOrders.get().totalEscrow(), Images.ORDERS_ESCROW.getIcon(), AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jEscrowTotal);\n\n\t\tjToCoverTotal = StatusPanel.createLabel(TabsOrders.get().totalToCover(), Images.ORDERS_TO_COVER.getIcon(), AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jToCoverTotal);\n\n\t\tjSellOrderRangeLast = StatusPanel.createLabel(TabsOrders.get().sellOrderRangeLastToolTip(), Images.ORDERS_SELL.getIcon(), null);\n\t\tthis.addStatusbarLabel(jSellOrderRangeLast);\n\t\tjSellOrderRangeLast.setText(TabsOrders.get().sellOrderRangeSelcted(Settings.get().getOutbidOrderRange().toString()));\n\n\t\tjClipboard = StatusPanel.createLabel(TabsOrders.get().lastClipboardToolTip(), Images.EDIT_COPY.getIcon(), null);\n\t\tthis.addStatusbarLabel(jClipboard);\n\t\tsetClipboardData(TabsOrders.get().none());\n\n\t\tjLastLogUpdate = StatusPanel.createLabel(TabsOrders.get().lastLogUpdateToolTip(), null, null);\n\t\tthis.addStatusbarLabel(jLastLogUpdate);\n\n\t\tjLastEsiUpdate = StatusPanel.createLabel(TabsOrders.get().lastEsiUpdateToolTip(), null, null);\n\t\tthis.addStatusbarLabel(jLastEsiUpdate);\n\n\t\t//Table Format\n\t\ttableFormat = TableFormatFactory.marketTableFormat();\n\t\t//Backend\n\t\teventList = program.getProfileData().getMarketOrdersEventList();\n\t\t//Sorting (per column)\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<MyMarketOrder> sortedList = new SortedList<>(eventList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t//Filter\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tfilterList = new FilterList<>(sortedList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\tfilterList.addListEventListener(listener);\n\t\t//Table Model\n\t\ttableModel = EventModels.createTableModel(filterList, tableFormat);\n\t\t//Table\n\t\tjTable = new JMarketOrdersTable(program, tableModel);\n\t\tjTable.setCellSelectionEnabled(true);\n\t\t//Padding\n\t\tPaddingTableCellRenderer.install(jTable, 1);\n\t\t//Sorting\n\t\tTableComparatorChooser<MyMarketOrder> comparatorChooser = TableComparatorChooser.install(jTable, sortedList, TableComparatorChooser.MULTIPLE_COLUMN_MOUSE, tableFormat);\n\t\t//Selection Model\n\t\tselectionModel = EventModels.createSelectionModel(filterList);\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\n\t\tjTable.setSelectionModel(selectionModel);\n\t\t//Market Details\n\t\tMarketDetailsColumn.install(eventList, new MarketDetailsActionListener<MyMarketOrder>() {\n\t\t\t@Override\n\t\t\tpublic void openMarketDetails(MyMarketOrder marketOrder) {\n\t\t\t\topenEve(marketOrder);\n\t\t\t}\n\t\t});\n\t\t//Listeners\n\t\tinstallTable(jTable);\n\t\t//Scroll Panels\n\t\tJScrollPane jTableScroll = new JScrollPane(jTable);\n\t\t//Table Filter\n\t\tfilterControl = new MarketOrdersFilterControl(sortedList);\n\t\t//Menu\n\t\tinstallTableTool(new OrdersTableMenu(), tableFormat, comparatorChooser, tableModel, jTable, filterControl, MyMarketOrder.class);\n\n\t\tupdateDates();\n\n\t\ttimer = new Timer(1000, new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tupdateDates();\n\t\t\t}\n\t\t});\n\t\ttimer.start();\n\n\t\tfileListener = new FileListener(program, Settings.get().getOutbidOrderRange());\n\t\tfileListener.start();\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jToolBar, jToolBar.getMinimumSize().width, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jToolBar, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t}\n\n\t@Override\n\tpublic void clearData() {\n\t\tfilterControl.clearCache();\n\t}\n\n\t@Override\n\tpublic void updateCache() {\n\t\tDate current = Settings.get().getTableChanged(NAME);\n\t\tboolean newFound = false;\n\t\ttry {\n\t\t\teventList.getReadWriteLock().readLock().lock();\n\t\t\tfor (MyMarketOrder marketOrder : eventList) {\n\t\t\t\tif (current.before(marketOrder.getChanged())) {\n\t\t\t\t\tnewFound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t\tfilterControl.createCache();\n\t\tfinal boolean found = newFound;\n\t\tProgram.ensureEDT(new Runnable() {\n\t\t\t@Override\n\t\t\tpublic void run() {\n\t\t\t\tjClearNew.setEnabled(found);\n\t\t\t}\n\t\t});\n\t}\n\n\t@Override\n\tpublic Collection<LocationType> getLocations() {\n\t\ttry {\n\t\t\teventList.getReadWriteLock().readLock().lock();\n\t\t\treturn new ArrayList<>(eventList);\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t}\n\n\tpublic synchronized static Date getLastLogUpdate() {\n\t\treturn lastLogUpdate;\n\t}\n\n\tpublic synchronized static void setLastLogUpdate() {\n\t\tMarketOrdersTab.lastLogUpdate = new Date();\n\t}\n\n\tpublic synchronized static String getClipboardData() {\n\t\treturn clipboardData;\n\t}\n\n\tpublic synchronized static void setClipboardData(String clipboardData) {\n\t\tMarketOrdersTab.clipboardData = clipboardData;\n\t}\n\n\tprivate void openEve(MyMarketOrder marketOrder) {\n\t\tOwnerType owner = null;\n\t\tif (marketOrder.isCorporation()) {\n\t\t\t//Look for issuing owner\n\t\t\tif (marketOrder.getIssuedBy() != null) {\n\t\t\t\tfor (OwnerType ownerType : program.getProfileData().getOwners().values()) { //Copy = thread safe\n\t\t\t\t\tif (marketOrder.getIssuedBy() == ownerType.getOwnerID()) {\n\t\t\t\t\t\towner = ownerType;\n\t\t\t\t\t\tif (owner.isOpenWindows()) {\n\t\t\t\t\t\t\tbreak; //Found valid owner - otherwise keep looking\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\towner = marketOrder.getOwner();\n\t\t}\n\t\t//Issuer not found\n\t\tif (owner == null) {\n\t\t\tint value = JOptionPane.showConfirmDialog(program.getMainWindow().getFrame(), TabsOrders.get().ownerNotFoundMsg(), TabsOrders.get().ownerNotFoundTitle(), JOptionPane.OK_CANCEL_OPTION);\n\t\t\tif (value != JOptionPane.OK_OPTION) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\towner = JMenuUI.selectOwner(program, JMenuUI.EsiOwnerRequirement.OPEN_WINDOW);\n\t\t\tif (owner == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t//Issuer missing scope\n\t\tif (!owner.isOpenWindows()) {\n\t\t\tint value = JOptionPane.showConfirmDialog(program.getMainWindow().getFrame(), TabsOrders.get().ownerInvalidScopeMsg(), TabsOrders.get().ownerInvalidScopeTitle(), JOptionPane.OK_CANCEL_OPTION);\n\t\t\tif (value != JOptionPane.OK_OPTION) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\towner = JMenuUI.selectOwner(program, JMenuUI.EsiOwnerRequirement.OPEN_WINDOW);\n\t\t\tif (owner == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (!(owner instanceof EsiOwner)) {\n\t\t\treturn;\n\t\t}\n\t\tEsiOwner esiOwner = (EsiOwner) owner;\n\t\tif (marketOrder.isOutbid()) {\n\t\t\tcopy(marketOrder, marketOrder.getOutbidPrice());\n\t\t}\n\t\tJMenuUI.openMarketDetails(program, esiOwner, marketOrder.getTypeID(), false);\n\t}\n\n\tprivate static void copy(MyMarketOrder marketOrder, Double price) {\n\t\tif (price != null) {\n\t\t\tif (marketOrder.isBuyOrder()) {\n\t\t\t\tprice = significantIncrement(price);\n\t\t\t} else { //Sell\n\t\t\t\tprice = significantDecrement(price);\n\t\t\t}\n\t\t\tString copy = Formatter.copyFormat(price);\n\t\t\tCopyHandler.toClipboard(copy);\n\t\t\tsetClipboardData(copy);\n\t\t} else {\n\t\t\tsetClipboardData(TabsOrders.get().none());\n\t\t}\n\t}\n\n\tprivate void updateDates() {\n\t\tDate nextUpdate = Settings.get().getPublicMarketOrdersNextUpdate();\n\t\tif (Updatable.isUpdatable(nextUpdate)) {\n\t\t\tjUpdate.setText(TabsOrders.get().updateOutbidEsi());\n\t\t\tjUpdate.setEnabled(true);\n\t\t} else {\n\t\t\tlong diff = nextUpdate.getTime() - System.currentTimeMillis();\n\t\t\tif (diff < 1000) {\n\t\t\t\tjUpdate.setText(TabsOrders.get().updateOutbidWhen(\"...\"));\n\t\t\t} else {\n\t\t\t\tjUpdate.setText(TabsOrders.get().updateOutbidWhen(Formatter.milliseconds(diff, false, false, true, true, true, true)));\n\t\t\t}\n\t\t\tjUpdate.setEnabled(false);\n\t\t}\n\t\tDate lastEsiUpdate = Settings.get().getPublicMarketOrdersLastUpdate();\n\t\tupdate(jLastEsiUpdate, lastEsiUpdate, Images.MISC_ESI);\n\t\tDate logUpdate = getLastLogUpdate();\n\t\tupdate(jLastLogUpdate, logUpdate, Images.FILTER_LOAD);\n\t\tjClipboard.setText(getClipboardData());\n\t}\n\n\tprivate void update(JLabel jLastUpdate, Date lastUpdate, Images images) {\n\t\tif (lastUpdate != null) {\n\t\t\tlong diff = Math.abs(System.currentTimeMillis() - lastUpdate.getTime());\n\t\t\tlong diffMinutes = diff / (60 * 1000) % 60;\n\t\t\tjLastUpdate.setOpaque(true);\n\t\t\tif (diffMinutes < 2) {\n\t\t\t\tjLastUpdate.setIcon(new IconColorIcon(Colors.STRONG_GREEN.getColor(), images.getImage()));\n\t\t\t\tColorSettings.config(jLastUpdate, ColorEntry.GLOBAL_ENTRY_VALID);\n\t\t\t} else if (diffMinutes < 5) {\n\t\t\t\tjLastUpdate.setIcon(new IconColorIcon(Colors.STRONG_YELLOW.getColor(), images.getImage()));\n\t\t\t\tColorSettings.config(jLastUpdate, ColorEntry.GLOBAL_ENTRY_WARNING);\n\t\t\t} else {\n\t\t\t\tjLastUpdate.setIcon(new IconColorIcon(Colors.STRONG_RED.getColor(), images.getImage()));\n\t\t\t\tColorSettings.config(jLastUpdate, ColorEntry.GLOBAL_ENTRY_INVALID);\n\t\t\t}\n\t\t\tjLastUpdate.setText(Formatter.milliseconds(diff, false, false, true, true, true, true));\n\t\t} else {\n\t\t\tjLastUpdate.setOpaque(false);\n\t\t\tjLastUpdate.setIcon(images.getIcon());\n\t\t\tjLastUpdate.setText(TabsOrders.get().none());\n\t\t}\n\t}\n\n\tprivate void updateESI() {\n\t\ttimer.stop();\n\t\tjUpdate.setText(TabsOrders.get().updateOutbidUpdating());\n\t\tjUpdate.setEnabled(false);\n\t\tOutbidProcesserInput input = new OutbidProcesserInput(program.getProfileData(), Settings.get().getOutbidOrderRange());\n\t\tif (input.getRegionIDs().isEmpty()) {\n\t\t\tLOG.info(\"no active orders found\");\n\t\t\tupdateDates();\n\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), TabsOrders.get().updateNoActiveMsg(), TabsOrders.get().updateNoActiveTitle(), JOptionPane.PLAIN_MESSAGE);\n\t\t\treturn;\n\t\t}\n\t\tfinal Date currentUpdate = Settings.get().getPublicMarketOrdersNextUpdate();\n\t\tOutbidProcesserOutput output = new OutbidProcesserOutput();\n\t\tfinal PublicMarketOrdersUpdateTask updateTask = new PublicMarketOrdersUpdateTask(input, output);\n\t\tTaskDialog taskDialog = new TaskDialog(program, updateTask, false, false, false, StatusPanel.UpdateType.PUBLIC_MARKET_ORDERS, new TaskDialog.TasksCompletedAdvanced() {\n\t\t\t@Override\n\t\t\tpublic void tasksCompleted(TaskDialog taskDialog) {\n\t\t\t\t//Set data\n\t\t\t\tSettings.lock(\"Outbid (ESI)\");\n\t\t\t\tSettings.get().setMarketOrdersOutbid(output.getOutbids());\n\t\t\t\tSettings.unlock(\"Outbid (ESI)\");\n\t\t\t\t//Ensure we don't update repeatedly on errors\n\t\t\t\tif (Settings.get().getPublicMarketOrdersNextUpdate().equals(currentUpdate)) {\n\t\t\t\t\t//if next update did not change, set the next update to be 5 minutes in the future\n\t\t\t\t\tSettings.get().setPublicMarketOrdersNextUpdate(new Date(System.currentTimeMillis() + (1000 * 60 * 5)));\n\t\t\t\t}\n\t\t\t\t//Update eventlists\n\t\t\t\tif (!output.getOutbids().isEmpty() || !output.getUpdates().isEmpty()) {\n\t\t\t\t\tLOG.info(\"Updating Orders EventList\");\n\t\t\t\t\tprogram.updateMarketOrders(output);\n\t\t\t\t}\n\t\t\t\t//Save Settings\n\t\t\t\tif (!output.getOutbids().isEmpty()) {\n\t\t\t\t\tLOG.info(\"Saving Settings\");\n\t\t\t\t\tprogram.saveSettings(\"Marketlog\");\n\t\t\t\t}\n\t\t\t\t//Save Profile\n\t\t\t\tif (!output.getUpdates().isEmpty()) {\n\t\t\t\t\tLOG.info(\"Saving Profile\");\n\t\t\t\t\tprogram.saveTable(ProfileDatabase.Table.MARKET_ORDERS);\n\t\t\t\t}\n\t\t\t\t//Update time again\n\t\t\t\ttimer.start();\n\t\t\t\tProgram.ensureEDT(new Runnable() {\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic void run() {\n\t\t\t\t\t\t//Sell Order Range\n\t\t\t\t\t\tjSellOrderRangeLast.setText(TabsOrders.get().sellOrderRangeSelcted(Settings.get().getOutbidOrderRange().toString()));\n\t\t\t\t\t\t//Last Update\n\t\t\t\t\t\tupdateDates();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t//Play sound\n\t\t\t\tSoundPlayer.play(SoundOption.OUTBID_UPDATE_COMPLETED);\n\t\t\t\tSoundPlayer.playAt(Settings.get().getPublicMarketOrdersNextUpdate(), SoundOption.OUTBID_UPDATE_AVAILABLE);\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void tasksHidden(TaskDialog taskDialog) {\n\t\t\t\tif (output.hasUnknownLocations()) {\n\t\t\t\t\tif (showUnknownLocationsWarning) {\n\t\t\t\t\t\tshowUnknownLocationsWarning = false; //Only shown once per run\n\t\t\t\t\t\tif (StructureUpdateDialog.structuresUpdatable(program)) { //Strctures updatable\n\t\t\t\t\t\t\t//Ask to update structures\n\t\t\t\t\t\t\tint returnValue = JOptionPane.showConfirmDialog(program.getMainWindow().getFrame(), TabsOrders.get().unknownLocationsMsg(), TabsOrders.get().unknownLocationsTitle(), JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);\n\t\t\t\t\t\t\tif (returnValue == JOptionPane.OK_OPTION) { //Do update structures\n\t\t\t\t\t\t\t\t//Show structures update dialog\n\t\t\t\t\t\t\t\tprogram.showUpdateStructuresDialog(false);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else { //Strctures not updatable\n\t\t\t\t\t\t\t//Show help text about how to update later\n\t\t\t\t\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), TabsOrders.get().unknownLocationsMsgLater(), TabsOrders.get().unknownLocationsTitle(), JOptionPane.PLAIN_MESSAGE);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic static double significantIncrement(double value) {\n\t\treturn significantChange(value, +1);\n\t}\n\n\tpublic static double significantDecrement(double value) {\n\t\treturn significantChange(value, -1);\n\t}\n\n\tprivate static double significantChange(double value, double change) {\n\t\tint significantFigures;\n\t\tif (value <= 0.0) {\n\t\t\treturn 0.0;\n\t\t} else if (value == 0.01) {\n\t\t\tif (change > 0) {\n\t\t\t\treturn 0.02;\n\t\t\t} else {\n\t\t\t\treturn 0.01;\n\t\t\t}\n\t\t} else if (value < 0.1) {\n\t\t\tsignificantFigures = SIGNIFICANT_FIGURES - 3;\n\t\t} else if (value < 1.0) {\n\t\t\tsignificantFigures = SIGNIFICANT_FIGURES - 2;\n\t\t} else if (value < 10.0) {\n\t\t\tsignificantFigures = SIGNIFICANT_FIGURES - 1;\n\t\t} else {\n\t\t\tsignificantFigures = SIGNIFICANT_FIGURES;\n\t\t}\n\t\tdouble log10 = Math.log10(value);\n\t\tif (Math.round(log10) == log10 && value > 10 && change < 0) { //Power of 10\n\t\t\tsignificantFigures++;\n\t\t}\n\t\tdouble power = Math.pow(10, Math.floor(Math.log10(value)) - significantFigures + 1);\n\t\t//double power = Math.pow(10, Math.floor(Math.log10(value)) - significantFigures);\n\t\tvalue = value / power;\n\t\tvalue = value + change;\n\t\tvalue = value * power;\n\t\treturn new BigDecimal(value).setScale(2, RoundingMode.HALF_UP).doubleValue();\n\t}\n\n\tprivate MyMarketOrder getSelectedMarketOrder() {\n\t\tint index = jTable.getSelectedRow();\n\t\tif (index < 0 || index >= tableModel.getRowCount()) {\n\t\t\treturn null;\n\t\t}\n\t\treturn tableModel.getElementAt(index);\n\t}\n\n\tprivate class OrdersTableMenu implements TableMenu<MyMarketOrder> {\n\n\t\t@Override\n\t\tpublic MenuData<MyMarketOrder> getMenuData() {\n\t\t\treturn new MenuData<>(selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getFilterMenu() {\n\t\t\treturn filterControl.getMenu(jTable, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getColumnMenu() {\n\t\t\treturn new JMenuColumns<>(program, tableFormat, tableModel, jTable, NAME);\n\t\t}\n\n\t\t@Override\n\t\tpublic void addInfoMenu(JPopupMenu jPopupMenu) {\n\t\t\tJMenuInfo.marketOrder(jPopupMenu, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic void addToolMenu(JComponent jComponent) {\n\t\t\tMyMarketOrder marketOrder = getSelectedMarketOrder();\n\t\t\tboolean enabled = marketOrder != null && !marketOrder.isESI() && selectionModel.getSelected().size() == 1;\n\n\t\t\tJMenu jStatus = new JMenu(TabsOrders.get().status());\n\t\t\tjStatus.setIcon(Images.MISC_STATUS.getIcon());\n\t\t\tif (!enabled) {\n\t\t\t\tjStatus.setIcon(jStatus.getDisabledIcon());\n\t\t\t}\n\t\t\tjComponent.add(jStatus);\n\n\t\t\tJRadioButtonMenuItem jMenuItem;\n\t\t\tfor (MarketOrderState state : MarketOrderState.values()) {\n\t\t\t\tjMenuItem = new JRadioButtonMenuItem(MyMarketOrder.getStateName(state));\n\t\t\t\tjMenuItem.setEnabled(enabled);\n\t\t\t\tjMenuItem.setSelected(enabled && state == marketOrder.getState());\n\t\t\t\tjMenuItem.addActionListener(new ActionListener() {\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\t\tif (marketOrder == null || marketOrder.isESI() || marketOrder.getState() == state) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmarketOrder.setState(state);\n\t\t\t\t\t\ttableModel.fireTableDataChanged();\n\t\t\t\t\t\tprogram.saveTable(ProfileDatabase.Table.MARKET_ORDERS);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tjStatus.add(jMenuItem);\n\t\t\t}\n\t\t\tMenuManager.addSeparator(jComponent);\n\t\t}\n\t}\n\n\tprivate class ListenerClass implements ListEventListener<MyMarketOrder>, ActionListener {\n\n\t\t@Override\n\t\tpublic void listChanged(ListEvent<MyMarketOrder> listChanges) {\n\t\t\tdouble sellOrdersTotal = 0;\n\t\t\tdouble buyOrdersTotal = 0;\n\t\t\tdouble toCoverTotal = 0;\n\t\t\tdouble escrowTotal = 0;\n\t\t\ttry {\n\t\t\t\tfilterList.getReadWriteLock().readLock().lock();\n\t\t\t\tfor (MyMarketOrder marketOrder : filterList) {\n\t\t\t\t\tif (!marketOrder.isBuyOrder()) { //Sell\n\t\t\t\t\t\tsellOrdersTotal += marketOrder.getPrice() * marketOrder.getVolumeRemain();\n\t\t\t\t\t} else { //Buy\n\t\t\t\t\t\tbuyOrdersTotal += marketOrder.getPrice() * marketOrder.getVolumeRemain();\n\t\t\t\t\t\tescrowTotal += marketOrder.getEscrow();\n\t\t\t\t\t\ttoCoverTotal += (marketOrder.getPrice() * marketOrder.getVolumeRemain()) - marketOrder.getEscrow();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tfilterList.getReadWriteLock().readLock().unlock();\n\t\t\t}\n\t\t\tjSellOrdersTotal.setNumber(sellOrdersTotal);\n\t\t\tjBuyOrdersTotal.setNumber(buyOrdersTotal);\n\t\t\tjToCoverTotal.setNumber(toCoverTotal);\n\t\t\tjEscrowTotal.setNumber(escrowTotal);\n\t\t}\n\n\t\t@Override\n\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\tif (MarketOrdersAction.UPDATE.name().equals(e.getActionCommand())) {\n\t\t\t\tupdateDates();\n\t\t\t\tupdateESI();\n\t\t\t} else if (MarketOrdersAction.ORDER_TYPE.name().equals(e.getActionCommand())) {\n\t\t\t\tString value = jOrderType.getItemAt(jOrderType.getSelectedIndex());\n\t\t\t\tfileListener.setBuy(TabsOrders.get().updateOutbidFileBuy().equals(value));\n\t\t\t} else if (MarketOrdersAction.ORDER_RANGE.name().equals(e.getActionCommand())) {\n\t\t\t\tMarketOrderRange range = jOrderRangeNext.getItemAt(jOrderRangeNext.getSelectedIndex());\n\t\t\t\tSettings.lock(\"Outbid Range\");\n\t\t\t\tSettings.get().setOutbidOrderRange(range);\n\t\t\t\tSettings.unlock(\"Outbid Range\");\n\t\t\t\tfileListener.setRange(range);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate class MarketOrdersFilterControl extends FilterControl<MyMarketOrder> {\n\n\t\tpublic MarketOrdersFilterControl(EventList<MyMarketOrder> exportEventList) {\n\t\t\tsuper(program.getMainWindow().getFrame(),\n\t\t\t\t\tNAME,\n\t\t\t\t\ttableFormat,\n\t\t\t\t\teventList,\n\t\t\t\t\texportEventList,\n\t\t\t\t\tfilterList\n\t\t\t\t\t);\n\t\t}\n\n\t\t@Override\n\t\tpublic void saveSettings(final String msg) {\n\t\t\tprogram.saveSettings(\"Market Orders Table: \" + msg); //Save Market Order Filters and Export Settings\n\t\t}\n\t}\n\n\tprivate static class PublicMarketOrdersUpdateTask extends UpdateTask {\n\n\t\tprivate final OutbidProcesserInput input;\n\t\tprivate final OutbidProcesserOutput output;\n\n\t\tpublic PublicMarketOrdersUpdateTask(OutbidProcesserInput input, OutbidProcesserOutput output) {\n\t\t\tsuper(DialoguesUpdate.get().publicMarketOrders());\n\t\t\tthis.input = input;\n\t\t\tthis.output = output;\n\t\t}\n\n\t\t@Override\n\t\tpublic void update() {\n\t\t\tEsiPublicMarketOrdersGetter publicMarketOrdersGetter = new EsiPublicMarketOrdersGetter(this, input, output);\n\t\t\tpublicMarketOrdersGetter.run();\n\t\t}\n\t}\n\n\tpublic static class IconColorIcon implements Icon {\n\n\t\tprivate final Color color;\n\t\tprivate final Image image;\n\n\t\tpublic IconColorIcon(Color color, Image image) {\n\t\t\tthis.color = color;\n\t\t\tthis.image = image;\n\t\t}\n\n\t\t@Override\n\t\tpublic void paintIcon(Component c, Graphics g, int x, int y) {\n\t\t\tGraphics2D g2d = (Graphics2D) g;\n\n\t\t\t//Background\n\t\t\tg2d.setColor(color);\n\t\t\tg2d.fillRect(x, y, getIconWidth(), getIconHeight());\n\n\t\t\t//Icon\n\t\t\tg2d.drawImage(image, x+1, y, null);\n\t\t}\n\n\t\t@Override\n\t\tpublic int getIconWidth() {\n\t\t\treturn 16;\n\t\t}\n\n\t\t@Override\n\t\tpublic int getIconHeight() {\n\t\t\treturn 16;\n\t\t}\n\t}\n\n\tprivate static class FileListener extends Thread {\n\n\t\tprivate final Program program;\n\t\tprivate boolean buy;\n\t\tprivate MarketOrderRange range;\n\n\t\tpublic FileListener(Program program, MarketOrderRange range) {\n\t\t\tsuper(\"FileListener\");\n\t\t\tthis.program = program;\n\t\t\tthis.buy = true;\n\t\t\tthis.range = range;\n\t\t}\n\n\t\tpublic synchronized boolean isBuy() {\n\t\t\treturn buy;\n\t\t}\n\n\t\tpublic synchronized void setBuy(boolean buy) {\n\t\t\tthis.buy = buy;\n\t\t}\n\n\t\tpublic synchronized MarketOrderRange getRange() {\n\t\t\treturn range;\n\t\t}\n\n\t\tpublic synchronized void setRange(MarketOrderRange range) {\n\t\t\tthis.range = range;\n\t\t}\n\n\t\t@Override\n\t\tpublic void run() {\n\t\t\tPath dir = MarketLogReader.getMarketlogsDirectory().toPath();\n\t\t\tWatchService watcher;\n\t\t\twhile (true) {\n\t\t\t\tif (MarketLogReader.getMarketlogsDirectory().exists()) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\twatcher = FileSystems.getDefault().newWatchService();\n\t\t\t\t\t\tdir.register(watcher, StandardWatchEventKinds.ENTRY_CREATE);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} catch (IOException ex) {\n\t\t\t\t\t\tLOG.error(ex.getMessage(), ex);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tThread.sleep(15000); //Sleep 15 seconds, then tries again\n\t\t\t\t\t} catch (InterruptedException ex1) {\n\t\t\t\t\t\t//No problem\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\twhile (true) {\n\t\t\t\tWatchKey key;\n\t\t\t\ttry {\n\t\t\t\t\tLOG.info(\"waiting for changes...\");\n\t\t\t\t\tkey = watcher.take();\n\t\t\t\t\tLOG.info(\"change detected\");\n\t\t\t\t\tfor (WatchEvent<?> event : key.pollEvents()) {\n\t\t\t\t\t\t// This key is registered only\n\t\t\t\t\t\t// for ENTRY_CREATE events,\n\t\t\t\t\t\t// but an OVERFLOW event can\n\t\t\t\t\t\t// occur regardless if events\n\t\t\t\t\t\t// are lost or discarded.\n\t\t\t\t\t\tWatchEvent.Kind<?> kind = event.kind();\n\t\t\t\t\t\tif (kind == OVERFLOW) {\n\t\t\t\t\t\t\tLOG.info(\"Overflow...\");\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// The filename is the\n\t\t\t\t\t\t// context of the event.\n\t\t\t\t\t\tObject context = event.context();\n\t\t\t\t\t\tif (context instanceof Path) {\n\t\t\t\t\t\t\tPath path = (Path) context;\n\t\t\t\t\t\t\tFile file = dir.resolve(path).toFile();\n\t\t\t\t\t\t\tLOG.info(\"Starting marketlog file processing for \" + file.getName());\n\t\t\t\t\t\t\tlong start = System.currentTimeMillis();\n\t\t\t\t\t\t\tupdate(file);\n\t\t\t\t\t\t\tLOG.info(\"Marketlog file processing done in \" + Formatter.milliseconds(System.currentTimeMillis() - start) + \" for \" + file.getName());\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tkey.reset();\n\t\t\t\t} catch (InterruptedException ex) {\n\t\t\t\t\tLOG.info(\"FileListener Interrupted\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate void update(final File file) {\n\t\t\tOutbidProcesserOutput output = new OutbidProcesserOutput();\n\t\t\tboolean updated = update(file, output);\n\t\t\tif (!updated) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tThread thread = new Thread(new Runnable() {\n\t\t\t\t@Override\n\t\t\t\tpublic void run() {\n\t\t\t\t\tLOG.info(\"Starting marketlog update thread for \" + file.getName());\n\t\t\t\t\tlong start = System.currentTimeMillis();\n\t\t\t\t\tLOG.info(\"Setting setting\");\n\t\t\t\t\tSettings.lock(\"Outbids (files)\");\n\t\t\t\t\tSettings.get().setMarketOrdersOutbid(output.getOutbids());\n\t\t\t\t\tSettings.unlock(\"Outbids (files)\");\n\t\t\t\t\t//Update eventlists\n\t\t\t\t\tif (!output.getOutbids().isEmpty() || !output.getUpdates().isEmpty()) {\n\t\t\t\t\t\tLOG.info(\"Updating Orders EventList\");\n\t\t\t\t\t\tprogram.updateMarketOrdersWithProgress(output);\n\t\t\t\t\t}\n\t\t\t\t\t//Save Settings\n\t\t\t\t\tif (!output.getOutbids().isEmpty()) {\n\t\t\t\t\t\tLOG.info(\"Saving Settings\");\n\t\t\t\t\t\tprogram.saveSettings(\"Marketlog\");\n\t\t\t\t\t}\n\t\t\t\t\t//Save Profile\n\t\t\t\t\tif (!output.getUpdates().isEmpty()) {\n\t\t\t\t\t\tLOG.info(\"Saving Profile\");\n\t\t\t\t\t\tprogram.saveTable(ProfileDatabase.Table.MARKET_ORDERS);\n\t\t\t\t\t}\n\t\t\t\t\tLOG.info(\"Marketlog update thread done in \" + Formatter.milliseconds(System.currentTimeMillis() - start) + \" for \" + file.getName());\n\t\t\t\t}\n\t\t\t}, file.getName());\n\t\t\tthread.start();\n\t\t}\n\n\t\tprivate boolean update(final File file, final OutbidProcesserOutput output) {\n\t\t\tOutbidProcesserInput input = new OutbidProcesserInput(program.getProfileData(), Settings.get().getOutbidOrderRange());\n\t\t\tList<MarketLog> marketLogs = MarketLogReader.read(file, input, output);\n\t\t\tif (marketLogs == null || marketLogs.isEmpty()) {\n\t\t\t\tLOG.info(\"No marketslogs found\");\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t//Copy to clipart\n\t\t\tMyMarketOrder marketOrderCopy = null;\n\t\t\tfor (OwnerType ownerType : program.getProfileData().getOwners().values()) { //Copy = thread safe\n\t\t\t\tsynchronized (ownerType) {\n\t\t\t\t\tfor (MyMarketOrder marketOrder : ownerType.getMarketOrders()) { //Synchronized on owner = thread safe\n\t\t\t\t\t\tif (!Objects.equals(isBuy(), marketOrder.isBuyOrder())) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tOutbid outbid = output.getOutbids().get(marketOrder.getOrderID());\n\t\t\t\t\t\tif (outbid != null) {\n\t\t\t\t\t\t\tif (marketOrder.isBuyOrder()) {\n\t\t\t\t\t\t\t\t//Outbid and highest buy price\n\t\t\t\t\t\t\t\tif (outbid.getPrice() > marketOrder.getPrice() && (marketOrderCopy == null || marketOrder.getPrice() > marketOrderCopy.getPrice()) ) {\n\t\t\t\t\t\t\t\t\tmarketOrderCopy = marketOrder;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t//Outbid and lowest sell price\n\t\t\t\t\t\t\t\tif (outbid.getPrice() < marketOrder.getPrice() && (marketOrderCopy == null || marketOrder.getPrice() < marketOrderCopy.getPrice())) {\n\t\t\t\t\t\t\t\t\tmarketOrderCopy = marketOrder;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (marketOrderCopy != null) {\n\t\t\t\tLOG.info(\"Found matching order\");\n\t\t\t\tOutbid outbid = output.getOutbids().get(marketOrderCopy.getOrderID());\n\t\t\t\tif (outbid != null) { //Better safe than sorry\n\t\t\t\t\tcopy(marketOrderCopy, outbid.getPrice());\n\t\t\t\t\tsetLastLogUpdate();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//Nothing found - going region wide\n\t\t\tDouble price = null;\n\t\t\tfor (MarketLog marketLog : marketLogs) {\n\t\t\t\tif (!Objects.equals(isBuy(), marketLog.getBid())) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (marketLog.getJumps() > OutbidProcesser.getRange(getRange())) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (price == null) {\n\t\t\t\t\tprice = marketLog.getPrice();\n\t\t\t\t} else {\n\t\t\t\t\tif (marketLog.getBid()) {\n\t\t\t\t\t\tprice = Math.max(price, marketLog.getPrice());\n\t\t\t\t\t} else { //Sell\n\t\t\t\t\t\tprice = Math.min(price, marketLog.getPrice());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (price != null) {\n\t\t\t\tLOG.info(\"Found region price\");\n\t\t\t\tif (isBuy()) {\n\t\t\t\t\tprice = significantIncrement(price);\n\t\t\t\t} else { //Sell\n\t\t\t\t\tprice = significantDecrement(price);\n\t\t\t\t}\n\t\t\t\tString copy = Formatter.copyFormat(price);\n\t\t\t\tCopyHandler.toClipboard(copy);\n\t\t\t\tsetLastLogUpdate();\n\t\t\t\tsetClipboardData(copy);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tLOG.info(\"No price found....\");\n\t\t\tsetClipboardData(TabsOrders.get().none());\n\t\t\treturn false;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/orders/MarketTableFormat.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.orders;\n\nimport java.awt.Component;\nimport java.util.Comparator;\nimport java.util.Date;\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.LongInt;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Percent;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.YesNo;\nimport net.nikr.eve.jeveasset.i18n.TabsOrders;\n\n\npublic enum MarketTableFormat implements EnumTableColumn<MyMarketOrder> {\n\tORDER_TYPE(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnOrderType();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\tif (!from.isBuyOrder()) {\n\t\t\t\treturn TabsOrders.get().sell();\n\t\t\t} else {\n\t\t\t\treturn TabsOrders.get().buy();\n\t\t\t}\n\t\t}\n\t},\n\tNAME(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnName();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getItem().getTypeName();\n\t\t}\n\t},\n\tGROUP(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnGroup();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getItem().getGroup();\n\t\t}\n\t},\n\tCATEGORY(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnCategory();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getItem().getCategory();\n\t\t}\n\t},\n\tQUANTITY(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnVolumeRemain();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getVolumeRemain();\n\t\t}\n\t},\n\tQUANTITY_ENTERED(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnVolumeTotal();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getVolumeTotal();\n\t\t}\n\t},\n\tPRICE(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnPrice();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getPrice();\n\t\t}\n\t},\n\tOUTBID_PRICE(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnOutbidPrice();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsOrders.get().columnOutbidPriceToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getOutbidPrice();\n\t\t}\n\t},\n\tOUTBID_COUNT(Long.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnOutbidCount();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsOrders.get().columnOutbidCountToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getOutbidCount();\n\t\t}\n\t},\n\tOUTBID_DELTA(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnOutbidDelta();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsOrders.get().columnOutbidDeltaToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getOutbidDelta();\n\t\t}\n\t},\n\tEVE_UI(Component.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnEveUi();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsOrders.get().columnEveUiToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic boolean isColumnEditable(Object baseObject) {\n\t\t\treturn true;\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getButton();\n\t\t}\n\t},\n\tBROKERS_FEE(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnBrokersFee();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsOrders.get().columnBrokersFeeToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getBrokersFee();\n\t\t}\n\t},\n\tEDITS(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnEdits();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsOrders.get().columnEditsToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getEdits();\n\t\t}\n\t},\n\tPRICE_REPROCESSED(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnPriceReprocessed();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getPriceReprocessed();\n\t\t}\n\t},\n\tPRICE_MANUFACTURING(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnPriceManufacturing();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsOrders.get().columnPriceManufacturingToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getItem().getPriceManufacturing();\n\t\t}\n\t},\n\tISSUED(Date.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnIssued();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsOrders.get().columnIssuedToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getIssued();\n\t\t}\n\t},\n\tISSUED_FIRST(Date.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnIssuedFirst();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsOrders.get().columnIssuedFirstToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getCreatedOrIssued();\n\t\t}\n\t},\n\tEXPIRES(Date.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnExpires();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getExpires();\n\t\t}\n\t},\n\tCHANGED(Date.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnChanged();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsOrders.get().columnChangedToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getChanged();\n\t\t}\n\t},\n\tRANGE(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnRange();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getRange().toString();\n\t\t}\n\t},\n\tSTATUS(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnStatus();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getStateFormatted();\n\t\t}\n\t},\n\tMIN_VOLUME(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnMinimumQuantity();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getMinVolume();\n\t\t}\n\t},\n\tOWNER(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnOwner();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getOwnerName();\n\t\t}\n\t},\n\tISSUED_BY(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnIssuedBy();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getIssuedByName();\n\t\t}\n\t},\n\tOWNED(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnOwned();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsOrders.get().columnOwnedToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn YesNo.get(from.isOwned());\n\t\t}\n\t},\n\tWalletDivision(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnWalletDivision();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getWalletDivision();\n\t\t}\n\t},\n\tLOCATION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnLocation();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getLocation().getLocation();\n\t\t}\n\t},\n\tSYSTEM(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnSystem();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getLocation().getSystem();\n\t\t}\n\t},\n\tCONSTELLATION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnConstellation();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getLocation().getConstellation();\n\t\t}\n\t},\n\tREGION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnRegion();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getLocation().getRegion();\n\t\t}\n\t},\n\tVALUE(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnRemainingValue();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getVolumeRemain() * from.getPrice();\n\t\t}\n\t},\n\tTRANSACTION_PRICE(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnTransactionPrice();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsOrders.get().columnTransactionPriceToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getTransactionPrice();\n\t\t}\n\t},\n\tTRANSACTION_MARGIN(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnTransactionMargin();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsOrders.get().columnTransactionMarginToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getTransactionMargin();\n\t\t}\n\t},\n\tTRANSACTION_PROFIT(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnTransactionProfitDifference();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsOrders.get().columnTransactionProfitDifferenceToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getTransactionProfitDifference();\n\t\t}\n\t},\n\tTRANSACTION_PROFIT_PERCENT(Percent.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnTransactionProfitPercent();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsOrders.get().columnTransactionProfitPercentToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getTransactionProfitPercent();\n\t\t}\n\t},\n\tMARKET_PRICE(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnMarketPrice();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsOrders.get().columnMarketPriceToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getDynamicPrice();\n\t\t}\n\t},\n\tMARKET_PRICE_SELL_MIN(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnMarketPriceSellMin();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsOrders.get().columnMarketPriceSellMinToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getPriceSellMin();\n\t\t}\n\t},\n\tMARKET_PRICE_BUY_MAX(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnMarketPriceBuyMax();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsOrders.get().columnMarketPriceBuyMaxToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getPriceBuyMax();\n\t\t}\n\t},\n\tMARKET_MARGIN(Percent.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnMarketMargin();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsOrders.get().columnMarketMarginToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn Percent.create(from.getMarketMargin());\n\t\t}\n\t},\n\tMARKET_PROFIT(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnMarketProfit();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsOrders.get().columnMarketProfitToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getMarketProfit();\n\t\t}\n\t},\n\tVOLUME(Float.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnVolume();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getItem().getVolumePackaged();\n\t\t}\n\t},\n\tTYPE_ID(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnTypeID();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn from.getTypeID();\n\t\t}\n\t},\n\tORDER_ID(LongInt.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOrders.get().columnOrderID();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyMarketOrder from) {\n\t\t\treturn new LongInt(from.getOrderID());\n\t\t}\n\t\t@Override\n\t\tpublic boolean isShowDefault() {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tprivate final Class<?> type;\n\tprivate final Comparator<?> comparator;\n\n\tprivate MarketTableFormat(final Class<?> type) {\n\t\tthis.type = type;\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\n\t}\n\t@Override\n\tpublic Class<?> getType() {\n\t\treturn type;\n\t}\n\t@Override\n\tpublic Comparator<?> getComparator() {\n\t\treturn comparator;\n\t}\n\t@Override\n\tpublic String toString() {\n\t\treturn getColumnName();\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/orders/Outbid.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.orders;\r\n\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawPublicMarketOrder;\r\n\r\n\r\npublic class Outbid {\r\n\r\n\tprivate Double price;\r\n\tprivate long count;\r\n\r\n\tpublic Outbid(Double price, long count) {\r\n\t\tthis.price = price;\r\n\t\tthis.count = count;\r\n\t}\r\n\r\n\tpublic Outbid(RawPublicMarketOrder ordersResponse) {\r\n\t\tthis.price = ordersResponse.getPrice();\r\n\t\tthis.count = 0;\r\n\t}\r\n\r\n\tpublic Double getPrice() {\r\n\t\treturn price;\r\n\t}\r\n\r\n\tpublic void setPrice(Double price) {\r\n\t\tthis.price = price;\r\n\t}\r\n\r\n\tpublic long getCount() {\r\n\t\treturn count;\r\n\t}\r\n\r\n\tpublic void addCount(long count) {\r\n\t\tthis.count = this.count + count;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/orders/OutbidProcesser.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.orders;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Collections;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Objects;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder.MarketOrderRange;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawPublicMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileData;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.sde.RouteFinder;\r\nimport net.nikr.eve.jeveasset.data.sde.RouteFinder.RouteFinderFilter;\r\nimport net.nikr.eve.jeveasset.data.settings.Citadel;\r\nimport net.nikr.eve.jeveasset.io.online.CitadelGetter;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\r\nimport net.troja.eve.esi.api.MarketApi;\r\nimport net.troja.eve.esi.api.UniverseApi;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class OutbidProcesser {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(OutbidProcesser.class);\r\n\r\n\tprivate final OutbidProcesserInput input;\r\n\tprivate final OutbidProcesserOutput output;\r\n\r\n\tprivate OutbidProcesser(OutbidProcesserInput input, OutbidProcesserOutput output) {\r\n\t\tthis.input = input;\r\n\t\tthis.output = output;\r\n\t}\r\n\r\n\tpublic static void process(OutbidProcesserInput input, OutbidProcesserOutput output) {\r\n\t\tOutbidProcesser processer = new OutbidProcesser(input, output);\r\n\t\tprocesser.process();\r\n\t}\r\n\r\n\tprivate void process() {\r\n\t\t//Process order updates\r\n\t\tfor (RawPublicMarketOrder ordersResponse : input.getMarketOrders()) {\r\n\t\t\tSet<MyMarketOrder> orders = input.getTypeIDs().get(ordersResponse.getTypeID());\r\n\t\t\tif (orders != null) {\r\n\t\t\t\tfor (MyMarketOrder marketOrder : orders) {\r\n\t\t\t\t\tif (isSameOrder(marketOrder, ordersResponse)) { //Orders to be updated\r\n\t\t\t\t\t\toutput.getUpdates().put(ordersResponse.getOrderID(), ordersResponse);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Process outbid\r\n\t\tfor (RawPublicMarketOrder ordersResponse : input.getMarketOrders()) {\r\n\t\t\t//Regions with data\r\n\t\t\tMyLocation orderLocation = ApiIdConverter.getLocation(ordersResponse.getSystemID());\r\n\t\t\tif (!orderLocation.isEmpty()) {\r\n\t\t\t\toutput.getRegionIDs().add(orderLocation.getRegionID());\r\n\t\t\t}\r\n\t\t\tSet<MyMarketOrder> orders = input.getTypeIDs().get(ordersResponse.getTypeID());\r\n\t\t\tif (orders != null) {\r\n\t\t\t\t//Orders to match\r\n\t\t\t\tfor (MyMarketOrder marketOrder : orders) {\r\n\t\t\t\t\tif (isSameOrder(marketOrder, ordersResponse)) { //Orders to be updated\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!isSameType(marketOrder, ordersResponse)) { //Both buy or both sell\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!isInRange(marketOrder, ordersResponse)) { //Order range overlap\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tOutbid outbid = output.getOutbids().get(marketOrder.getOrderID());\r\n\t\t\t\t\tif (outbid == null) {\r\n\t\t\t\t\t\toutbid = new Outbid(ordersResponse);\r\n\t\t\t\t\t\toutput.getOutbids().put(marketOrder.getOrderID(), outbid);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tRawPublicMarketOrder rawPublicMarketOrder = output.getUpdates().get(marketOrder.getOrderID());\r\n\t\t\t\t\tfinal double price;\r\n\t\t\t\t\tfinal Date issued;\r\n\t\t\t\t\tif (rawPublicMarketOrder != null) { //Updated price/issued\r\n\t\t\t\t\t\tprice = rawPublicMarketOrder.getPrice();\r\n\t\t\t\t\t\tissued = rawPublicMarketOrder.getIssued();\r\n\t\t\t\t\t} else { //Old price/issued (better than nothing)\r\n\t\t\t\t\t\tprice = marketOrder.getPrice();\r\n\t\t\t\t\t\tissued = marketOrder.getIssued();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (marketOrder.isBuyOrder()) { //Buy (outbid is higher)\r\n\t\t\t\t\t\toutbid.setPrice(Math.max(outbid.getPrice(), ordersResponse.getPrice()));\r\n\t\t\t\t\t\tif (ordersResponse.getPrice() > price || (ordersResponse.getPrice() == price && ordersResponse.getIssued().before(issued))) {\r\n\t\t\t\t\t\t\toutbid.addCount(ordersResponse.getVolumeRemain());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else { //Sell (outbid is lower)\r\n\t\t\t\t\t\toutbid.setPrice(Math.min(outbid.getPrice(), ordersResponse.getPrice()));\r\n\t\t\t\t\t\tif (ordersResponse.getPrice() < price || (ordersResponse.getPrice() == price && ordersResponse.getIssued().before(issued))) {\r\n\t\t\t\t\t\t\toutbid.addCount(ordersResponse.getVolumeRemain());\r\n\t\t\t\t\t\t} else if (ordersResponse.getPrice() == price) {\r\n\t\t\t\t\t\t\t//TODO matching price, compare date?\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tCitadelGetter.set(input.getCitadels().values());\r\n\t}\r\n\r\n\tprivate boolean isInRange(MyMarketOrder fromMarketOrder, RawPublicMarketOrder toMarketOrder) {\r\n\t\tLong fromSystemID = getSystemID(fromMarketOrder.getLocationID());\r\n\t\tLong toSystemID = RawConverter.toLong(toMarketOrder.getSystemID());\r\n\t\tMyLocation fromSystemLocation = ApiIdConverter.getLocation(fromSystemID);\r\n\t\tMyLocation toSystemLocation = ApiIdConverter.getLocation(toSystemID);\r\n\t\tif (fromSystemLocation.isEmpty() || toSystemLocation.isEmpty()) {\r\n\t\t\tLOG.warn(\"Unknown market location ignored\");\r\n\t\t\toutput.setUnknownLocations();\r\n\t\t\treturn false; //We can't work with unknown locations\r\n\t\t}\r\n\t\tif (!Objects.equals(fromSystemLocation.getRegionID(), toSystemLocation.getRegionID())) {\r\n\t\t\treturn false; //Must be in same region\r\n\t\t}\r\n\t\tMarketOrderRange fromRange;\r\n\t\tMarketOrderRange toRange;\r\n\t\tif (fromMarketOrder.isBuyOrder()) {\r\n\t\t\tfromRange = fromMarketOrder.getRange();\r\n\t\t\ttoRange = toMarketOrder.getRange();\r\n\t\t} else {\r\n\t\t\tfromRange = input.getSellOrderRange();\r\n\t\t\ttoRange = input.getSellOrderRange();\r\n\t\t}\r\n\t\tif (fromRange == MarketOrderRange.REGION || toRange == MarketOrderRange.REGION) {\r\n\t\t\treturn true; //Match everything\r\n\t\t} else if (fromRange == MarketOrderRange.STATION && toRange == MarketOrderRange.STATION) {\r\n\t\t\treturn Objects.equals(fromMarketOrder.getLocationID(), toMarketOrder.getLocationID()); //Only match if in the same station\r\n\t\t} else {\r\n\t\t\tint range = getRange(fromRange) + getRange(toRange); //Find overlapping area\r\n\t\t\t//int range = Math.max(getRange(response), getRange(marketOrder)); //Use the order with the max range\r\n\t\t\tInteger distance = RouteFinder.get().distanceBetween(RouteFinderFilter.MARKET_ORDERS, fromSystemID, toSystemID);\r\n\t\t\tif (distance == null) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn distance <= range;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\tpublic static int getRange(MarketOrderRange range) {\r\n\t\tswitch (range) {\r\n\t\t\tcase REGION: return 32767;\r\n\t\t\tcase SOLARSYSTEM: return 0;\r\n\t\t\tcase STATION: return 0;\r\n\t\t\tcase _1: return 1;\r\n\t\t\tcase _2: return 2;\r\n\t\t\tcase _3: return 3;\r\n\t\t\tcase _4: return 4;\r\n\t\t\tcase _5: return 5;\r\n\t\t\tcase _10: return 10;\r\n\t\t\tcase _20: return 20;\r\n\t\t\tcase _30: return 30;\r\n\t\t\tcase _40: return 40;\r\n\t\t}\r\n\t\treturn Integer.MAX_VALUE;\r\n\t}\r\n\r\n\tprivate boolean isSameType(MyMarketOrder marketOrder, RawPublicMarketOrder response) {\r\n\t\treturn Objects.equals(marketOrder.isBuyOrder(), response.isBuyOrder());\r\n\t}\r\n\r\n\tprivate boolean isSameOrder(MyMarketOrder marketOrder, RawPublicMarketOrder response) {\r\n\t\treturn Objects.equals(marketOrder.getOrderID(), response.getOrderID());\r\n\t}\r\n\r\n\tprivate Long getSystemID(long locationID) {\r\n\t\tLong systemID = input.getLocationToSystem().get(locationID);\r\n\t\tif (systemID != null) {\r\n\t\t\treturn systemID;\r\n\t\t}\r\n\t\tMyLocation location = ApiIdConverter.getLocation(locationID);\r\n\t\tif (!location.isEmpty()) {\r\n\t\t\treturn location.getSystemID();\r\n\t\t}\r\n\t\tCitadel citadel = input.getCitadels().get(locationID);\r\n\t\tif (citadel != null) {\r\n\t\t\treturn citadel.getSystemID();\r\n\t\t}\r\n\t\tLOG.warn(\"Unknown market location\");\r\n\t\treturn null;\r\n\t}\r\n\r\n\tpublic static class OutbidProcesserInput {\r\n\r\n\t\tprivate static final Map<Integer, DatedMarketOrders> MARKET_ORDERS = Collections.synchronizedMap(new HashMap<>());\r\n\r\n\t\tprivate final Map<Long, Long> locationToSystem = new HashMap<>();\r\n\t\tprivate final Map<Long, Citadel> citadels = new HashMap<>();\r\n\t\tprivate final Map<Integer, Set<MyMarketOrder>> typeIDs = new HashMap<>();\r\n\t\tprivate final Set<Long> structureIDs = new HashSet<>();\r\n\t\tprivate final Set<Integer> regionIDs = new HashSet<>();\r\n\t\tprivate final MarketOrderRange sellOrderRange;\r\n\t\tprivate UniverseApi structuresApi = null;\r\n\t\tprivate MarketApi marketApi = null;\r\n\r\n\t\tpublic OutbidProcesserInput(ProfileData profileData, MarketOrderRange sellOrderRange) {\r\n\t\t\tthis.sellOrderRange = sellOrderRange;\r\n\t\t\tfor (OwnerType ownerType : profileData.getOwners().values()) { //Copy = thread safe\r\n\t\t\t\tsynchronized (ownerType) {\r\n\t\t\t\t\tfor (MyMarketOrder marketOrder : ownerType.getMarketOrders()) { //Synchronized on owner = thread safe\r\n\t\t\t\t\t\tif (marketOrder.isActive()) {\r\n\t\t\t\t\t\t\t//StructuresIDs\r\n\t\t\t\t\t\t\tif (marketOrder.getLocationID() > 100000000) {\r\n\t\t\t\t\t\t\t\tstructureIDs.add(marketOrder.getLocationID());\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t//TypeIDs\r\n\t\t\t\t\t\t\tSet<MyMarketOrder> set = typeIDs.get(marketOrder.getTypeID());\r\n\t\t\t\t\t\t\tif (set == null) {\r\n\t\t\t\t\t\t\t\tset = new HashSet<>();\r\n\t\t\t\t\t\t\t\ttypeIDs.put(marketOrder.getTypeID(), set);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tset.add(marketOrder);\r\n\t\t\t\t\t\t\t//RegionIDs\r\n\t\t\t\t\t\t\tInteger regionID = marketOrder.getRegionID();\r\n\t\t\t\t\t\t\tif (regionID != null && ((regionID >= 10000000 && regionID <= 13000000) || regionID == 19000001)) {\r\n\t\t\t\t\t\t\t\tregionIDs.add(regionID);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfor (OwnerType ownerType : profileData.getOwners().values()) { //Copy = thread safe\r\n\t\t\t\tif (ownerType instanceof EsiOwner) {\r\n\t\t\t\t\tEsiOwner esiOwner = (EsiOwner) ownerType;\r\n\t\t\t\t\tif (!esiOwner.isShowOwner() || esiOwner.isInvalid()) {\r\n\t\t\t\t\t\tcontinue; //Ignore hidden and invalid owners\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (esiOwner.isStructures()) {\r\n\t\t\t\t\t\tstructuresApi = esiOwner.getUniverseApiAuth();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (esiOwner.isMarketStructures()) {\r\n\t\t\t\t\t\tmarketApi = esiOwner.getMarketApiAuth();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tpublic void addOrders(Map<Integer, Set<RawPublicMarketOrder>> orders, Date date) {\r\n\t\t\tif (date == null) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tsynchronized (MARKET_ORDERS) {\r\n\t\t\t\tfor (Map.Entry<Integer, Set<RawPublicMarketOrder>> entry : orders.entrySet()) {\r\n\t\t\t\t\tDatedMarketOrders datedMarketOrders = MARKET_ORDERS.get(entry.getKey());\r\n\t\t\t\t\tif (datedMarketOrders != null && datedMarketOrders.getDate().after(date)) {\r\n\t\t\t\t\t\treturn; //Current is newer\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdatedMarketOrders = new DatedMarketOrders(date, entry.getValue());\r\n\t\t\t\t\tMARKET_ORDERS.put(entry.getKey(), datedMarketOrders);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tpublic List<RawPublicMarketOrder> getMarketOrders() {\r\n\t\t\tList<RawPublicMarketOrder> marketOrders = new ArrayList<>();\r\n\t\t\tsynchronized (MARKET_ORDERS) {\r\n\t\t\t\tfor (DatedMarketOrders datedMarketOrders : MARKET_ORDERS.values()) {\r\n\t\t\t\t\tmarketOrders.addAll(datedMarketOrders.getMarketOrders());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn marketOrders;\r\n\t\t}\r\n\r\n\t\tpublic Map<Long, Long> getLocationToSystem() {\r\n\t\t\treturn locationToSystem;\r\n\t\t}\r\n\r\n\t\tpublic Map<Long, Citadel> getCitadels() {\r\n\t\t\treturn citadels;\r\n\t\t}\r\n\r\n\t\tpublic Map<Integer, Set<MyMarketOrder>> getTypeIDs() {\r\n\t\t\treturn typeIDs;\r\n\t\t}\r\n\r\n\t\tpublic Set<Long> getStructureIDs() {\r\n\t\t\treturn structureIDs;\r\n\t\t}\r\n\r\n\t\tpublic Set<Integer> getRegionIDs() {\r\n\t\t\treturn regionIDs;\r\n\t\t}\r\n\r\n\t\tpublic MarketOrderRange getSellOrderRange() {\r\n\t\t\treturn sellOrderRange;\r\n\t\t}\r\n\r\n\t\tpublic UniverseApi getStructuresApi() {\r\n\t\t\treturn structuresApi;\r\n\t\t}\r\n\r\n\t\tpublic MarketApi getMarketApi() {\r\n\t\t\treturn marketApi;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static class OutbidProcesserOutput {\r\n\t\tprivate final Map<Long, Outbid> outbids = new HashMap<>();\r\n\t\tprivate final Map<Long, RawPublicMarketOrder> updates = new HashMap<>();\r\n\t\tprivate final Set<Long> regionIDs = new HashSet<>();\r\n\t\tprivate boolean unknownLocations = false;\r\n\r\n\t\tpublic Map<Long, Outbid> getOutbids() {\r\n\t\t\treturn outbids;\r\n\t\t}\r\n\r\n\t\tpublic Map<Long, RawPublicMarketOrder> getUpdates() {\r\n\t\t\treturn updates;\r\n\t\t}\r\n\r\n\t\tpublic Set<Long> getRegionIDs() {\r\n\t\t\treturn regionIDs;\r\n\t\t}\r\n\r\n\t\tpublic boolean hasUnknownLocations() {\r\n\t\t\treturn unknownLocations;\r\n\t\t}\r\n\r\n\t\tpublic void setUnknownLocations() {\r\n\t\t\tthis.unknownLocations = true;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class DatedMarketOrders {\r\n\r\n\t\tprivate final Date date;\r\n\t\tprivate final Set<RawPublicMarketOrder> marketOrders;\r\n\r\n\t\tpublic DatedMarketOrders(Date date, Set<RawPublicMarketOrder> marketOrders) {\r\n\t\t\tthis.date = date;\r\n\t\t\tthis.marketOrders = marketOrders;\r\n\t\t}\r\n\r\n\t\tpublic Date getDate() {\r\n\t\t\treturn date;\r\n\t\t}\r\n\r\n\t\tpublic Set<RawPublicMarketOrder> getMarketOrders() {\r\n\t\t\treturn marketOrders;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int hashCode() {\r\n\t\t\tint hash = 7;\r\n\t\t\thash = 47 * hash + Objects.hashCode(this.date);\r\n\t\t\treturn hash;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean equals(Object obj) {\r\n\t\t\tif (this == obj) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif (obj == null) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (getClass() != obj.getClass()) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tfinal DatedMarketOrders other = (DatedMarketOrders) obj;\r\n\t\t\tif (!Objects.equals(this.date, other.date)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/overview/JOverviewMenu.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.overview;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport javax.swing.JCheckBoxMenuItem;\r\nimport javax.swing.JMenu;\r\nimport javax.swing.JMenuItem;\r\nimport javax.swing.JOptionPane;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.JOptionInput;\r\nimport net.nikr.eve.jeveasset.i18n.TabsOverview;\r\n\r\n\r\npublic class JOverviewMenu extends JMenu {\r\n\r\n\tprivate enum OverviewMenu {\r\n\t\tRENAME,\r\n\t\tDELETE,\r\n\t\tNEW\r\n\t}\r\n\r\n\tprivate final Program program;\r\n\tprivate final OverviewTab overviewTab;\r\n\tprivate final AddToGroup addToGroup = new AddToGroup();\r\n\tprivate final RemoveFromGroup removeFromGroup = new RemoveFromGroup();\r\n\r\n\tpublic JOverviewMenu(Program program, OverviewTab overviewTab, List<Overview> selected) {\r\n\t\tsuper(TabsOverview.get().groups());\r\n\t\tthis.program = program;\r\n\t\tthis.overviewTab = overviewTab;\r\n\t\tthis.setIcon(Images.LOC_GROUPS.getIcon());\r\n\r\n\t\tListenerClass listener = new ListenerClass();\r\n\r\n\t\tJMenuItem jMenuItem;\r\n\t\tJCheckBoxMenuItem jCheckBoxMenuItem;\r\n\r\n\t\t//Station, System, Region views\r\n\t\tif (overviewTab.getSelectedView() != OverviewTab.View.GROUPS) {\r\n\t\t\tjMenuItem = new JMenuItem(TabsOverview.get().add());\r\n\t\t\tjMenuItem.setIcon(Images.EDIT_ADD.getIcon());\r\n\t\t\tjMenuItem.setEnabled(!selected.isEmpty());\r\n\t\t\tjMenuItem.setActionCommand(OverviewMenu.NEW.name());\r\n\t\t\tjMenuItem.addActionListener(listener);\r\n\t\t\tthis.add(jMenuItem);\r\n\r\n\t\t\tif (!Settings.get().getOverviewGroups().isEmpty()) {\r\n\t\t\t\tthis.addSeparator();\r\n\t\t\t}\r\n\r\n\t\t\tfor (Map.Entry<String, OverviewGroup> entry : Settings.get().getOverviewGroups().entrySet()) {\r\n\t\t\t\tOverviewGroup overviewGroup = entry.getValue();\r\n\t\t\t\tboolean found = overviewGroup.getLocations().containsAll(overviewTab.getSelectedLocations());\r\n\t\t\t\tjCheckBoxMenuItem = new JCheckBoxMenuItem(overviewGroup.getName());\r\n\t\t\t\tif (overviewTab.getSelectedView() == OverviewTab.View.PLANETS) {\r\n\t\t\t\t\tjCheckBoxMenuItem.setIcon(Images.LOC_PLANET.getIcon());\r\n\t\t\t\t} else if (overviewTab.getSelectedView() == OverviewTab.View.STATIONS) {\r\n\t\t\t\t\tjCheckBoxMenuItem.setIcon(Images.LOC_STATION.getIcon());\r\n\t\t\t\t} else if (overviewTab.getSelectedView() == OverviewTab.View.SYSTEMS) {\r\n\t\t\t\t\tjCheckBoxMenuItem.setIcon(Images.LOC_SYSTEM.getIcon());\r\n\t\t\t\t} else if (overviewTab.getSelectedView() == OverviewTab.View.CONSTELLATIONS) {\r\n\t\t\t\t\tjCheckBoxMenuItem.setIcon(Images.LOC_CONSTELLATION.getIcon());\r\n\t\t\t\t} else if (overviewTab.getSelectedView() == OverviewTab.View.REGIONS) {\r\n\t\t\t\t\tjCheckBoxMenuItem.setIcon(Images.LOC_REGION.getIcon());\r\n\t\t\t\t}\r\n\t\t\t\tjCheckBoxMenuItem.setEnabled(!selected.isEmpty());\r\n\t\t\t\tjCheckBoxMenuItem.setActionCommand(overviewGroup.getName());\r\n\t\t\t\tjCheckBoxMenuItem.addActionListener(addToGroup);\r\n\t\t\t\tjCheckBoxMenuItem.setSelected(found);\r\n\t\t\t\tthis.add(jCheckBoxMenuItem);\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Groups view\r\n\t\tif (overviewTab.getSelectedView() == OverviewTab.View.GROUPS) {\r\n\t\t\tjMenuItem = new JMenuItem(TabsOverview.get().renameGroup());\r\n\t\t\tjMenuItem.setIcon(Images.EDIT_RENAME.getIcon());\r\n\t\t\tjMenuItem.setEnabled(selected.size() == 1);\r\n\t\t\tjMenuItem.setActionCommand(OverviewMenu.RENAME.name());\r\n\t\t\tjMenuItem.addActionListener(listener);\r\n\t\t\tthis.add(jMenuItem);\r\n\r\n\t\t\tjMenuItem = new JMenuItem(TabsOverview.get().deleteGroup());\r\n\t\t\tjMenuItem.setIcon(Images.EDIT_DELETE.getIcon());\r\n\t\t\tjMenuItem.setEnabled(selected.size() == 1);\r\n\t\t\tjMenuItem.setActionCommand(OverviewMenu.DELETE.name());\r\n\t\t\tjMenuItem.addActionListener(listener);\r\n\t\t\tthis.add(jMenuItem);\r\n\r\n\t\t\tif (selected.size() == 1) { //Add the group locations\r\n\t\t\t\tOverview overview = selected.get(0);\r\n\t\t\t\tOverviewGroup overviewGroup = Settings.get().getOverviewGroups().get(overview.getName());\r\n\t\t\t\tif (overviewGroup != null) {\r\n\t\t\t\t\tif (!overviewGroup.getLocations().isEmpty()) {\r\n\t\t\t\t\t\tthis.addSeparator();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfor (OverviewLocation location : overviewGroup.getLocations()) {\r\n\t\t\t\t\t\tjCheckBoxMenuItem = new JCheckBoxMenuItem(location.getName());\r\n\t\t\t\t\t\tif (location.isPlanet()) {\r\n\t\t\t\t\t\t\tjCheckBoxMenuItem.setIcon(Images.LOC_PLANET.getIcon());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (location.isStation()) {\r\n\t\t\t\t\t\t\tjCheckBoxMenuItem.setIcon(Images.LOC_STATION.getIcon());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (location.isSystem()) {\r\n\t\t\t\t\t\t\tjCheckBoxMenuItem.setIcon(Images.LOC_SYSTEM.getIcon());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (location.isConstellation()) {\r\n\t\t\t\t\t\t\tjCheckBoxMenuItem.setIcon(Images.LOC_CONSTELLATION.getIcon());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (location.isRegion()) {\r\n\t\t\t\t\t\t\tjCheckBoxMenuItem.setIcon(Images.LOC_REGION.getIcon());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tjCheckBoxMenuItem.setActionCommand(location.getName());\r\n\t\t\t\t\t\tjCheckBoxMenuItem.addActionListener(removeFromGroup);\r\n\t\t\t\t\t\tjCheckBoxMenuItem.setSelected(true);\r\n\t\t\t\t\t\tthis.add(jCheckBoxMenuItem);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener {\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t//Group\r\n\t\t\tif (OverviewMenu.NEW.name().equals(e.getActionCommand())) {\r\n\t\t\t\tString value = JOptionInput.showInputDialog(program.getMainWindow().getFrame(), TabsOverview.get().groupName(), TabsOverview.get().addGroup(), JOptionPane.PLAIN_MESSAGE);\r\n\t\t\t\tif (value != null) {\r\n\t\t\t\t\tSettings.lock(\"Overview Groups (New)\"); //Lock for Overview Groups (New)\r\n\t\t\t\t\tOverviewGroup overviewGroup = new OverviewGroup(value);\r\n\t\t\t\t\tSettings.get().getOverviewGroups().put(overviewGroup.getName(), overviewGroup);\r\n\t\t\t\t\toverviewGroup.addAll(overviewTab.getSelectedLocations());\r\n\t\t\t\t\toverviewTab.updateTable();\r\n\t\t\t\t\tSettings.unlock(\"Overview Groups (New)\"); //Unlock for Overview Groups (New)\r\n\t\t\t\t\tprogram.saveSettings(\"Overview Groups (New)\"); //Save Overview Groups (New)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (OverviewMenu.DELETE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tOverviewGroup overviewGroup = overviewTab.getSelectGroup();\r\n\t\t\t\tint value = JOptionPane.showConfirmDialog(program.getMainWindow().getFrame(), TabsOverview.get().deleteTheGroup(overviewGroup.getName()), TabsOverview.get().deleteGroup(), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);\r\n\t\t\t\tif (value == JOptionPane.OK_OPTION) {\r\n\t\t\t\t\tSettings.lock(\"Overview Groups (Delete)\"); //Lock for Overview Groups (Delete)\r\n\t\t\t\t\tSettings.get().getOverviewGroups().remove(overviewGroup.getName());\r\n\t\t\t\t\toverviewTab.updateTable();\r\n\t\t\t\t\tSettings.unlock(\"Overview Groups (Delete)\"); //Unlock for Overview Groups (Delete)\r\n\t\t\t\t\tprogram.saveSettings(\"Overview Groups (Delete)\"); //Save Overview Groups (Delete)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (OverviewMenu.RENAME.name().equals(e.getActionCommand())) {\r\n\t\t\t\tOverviewGroup overviewGroup = overviewTab.getSelectGroup();\r\n\t\t\t\tString value = (String) JOptionInput.showInputDialog(program.getMainWindow().getFrame(), TabsOverview.get().groupName(), TabsOverview.get().renameGroup(), JOptionPane.PLAIN_MESSAGE, null, null, overviewGroup.getName());\r\n\t\t\t\tif (value != null) {\r\n\t\t\t\t\tSettings.lock(\"Overview Groups (Rename)\"); //Lock for Overview Groups (Rename)\r\n\t\t\t\t\tSettings.get().getOverviewGroups().remove(overviewGroup.getName());\r\n\t\t\t\t\toverviewGroup.setName(value);\r\n\t\t\t\t\tSettings.get().getOverviewGroups().put(overviewGroup.getName(), overviewGroup);\r\n\t\t\t\t\toverviewTab.updateTable();\r\n\t\t\t\t\tSettings.unlock(\"Overview Groups (Rename)\"); //Unlock for Overview Groups (Rename)\r\n\t\t\t\t\tprogram.saveSettings(\"Overview Groups (Rename)\"); //Save Overview Groups (Rename)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclass AddToGroup implements ActionListener {\r\n\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\tOverviewGroup overviewGroup = Settings.get().getOverviewGroups().get(e.getActionCommand());\r\n\t\t\tif (overviewGroup != null) {\r\n\t\t\t\tList<OverviewLocation> locations = overviewTab.getSelectedLocations();\r\n\t\t\t\tif (overviewGroup.getLocations().containsAll(locations)) {\r\n\t\t\t\t\toverviewGroup.removeAll(locations);\r\n\t\t\t\t} else { //Remove\r\n\t\t\t\t\toverviewGroup.addAll(locations);\r\n\t\t\t\t}\r\n\t\t\t\toverviewTab.updateTable();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclass RemoveFromGroup implements ActionListener {\r\n\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\tOverviewGroup overviewGroup = overviewTab.getSelectGroup();\r\n\t\t\tString location = e.getActionCommand();\r\n\t\t\toverviewGroup.remove(new OverviewLocation(location));\r\n\t\t\toverviewTab.updateTable();\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/overview/JOverviewTable.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.overview;\n\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport java.awt.Component;\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.swing.table.TableCellRenderer;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\n\n\nclass JOverviewTable extends JAutoColumnTable {\n\n\tprivate List<String> groupedLocations = new ArrayList<>();\n\tprivate final DefaultEventTableModel<Overview> tableModel;\n\n\tpublic JOverviewTable(final Program program, final DefaultEventTableModel<Overview> tableModel) {\n\t\tsuper(program, tableModel);\n\t\tthis.tableModel = tableModel;\n\t}\n\n\tpublic void setGroupedLocations(final List<String> groupedLocations) {\n\t\tthis.groupedLocations = groupedLocations;\n\t}\n\n\t@Override\n\tpublic Component prepareRenderer(final TableCellRenderer renderer, final int row, final int column) {\n\t\tComponent component = super.prepareRenderer(renderer, row, column);\n\t\tboolean isSelected = isCellSelected(row, column);\n\t\tOverview overview = tableModel.getElementAt(row);\n\t\tString columnName = (String) this.getTableHeader().getColumnModel().getColumn(column).getHeaderValue();\n\n\t\t//User set location\n\t\tif (columnName.equals(OverviewTableFormat.NAME.getColumnName())) {\n\t\t\tif (groupedLocations.contains(overview.getName())) { //In group\n\t\t\t\tColorSettings.configCell(component, ColorEntry.OVERVIEW_GROUPED_LOCATIONS, isSelected);\n\t\t\t\treturn component;\n\t\t\t} else if (overview.getLocation().isUserLocation()) {\n\t\t\t\tColorSettings.configCell(component, ColorEntry.CUSTOM_USER_LOCATION, isSelected);\n\t\t\t\treturn component;\n\t\t\t}\n\t\t}\n\t\tif (groupedLocations.contains(overview.getLocation().getSystem()) && columnName.equals(OverviewTableFormat.SYSTEM.getColumnName())) { //In group\n\t\t\tColorSettings.configCell(component, ColorEntry.OVERVIEW_GROUPED_LOCATIONS, isSelected);\n\t\t\treturn component;\n\t\t}\n\t\tif (groupedLocations.contains(overview.getLocation().getRegion()) && columnName.equals(OverviewTableFormat.REGION.getColumnName())) { //In group\n\t\t\tColorSettings.configCell(component, ColorEntry.OVERVIEW_GROUPED_LOCATIONS, isSelected);\n\t\t\treturn component;\n\t\t}\n\t\treturn component;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/overview/Overview.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.overview;\n\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo;\n\n\npublic class Overview implements Comparable<Overview>, JMenuInfo.InfoItem, LocationType {\n\tprivate final String name;\n\tprivate final MyLocation location; //New objects are created by updateData() - no need to update\n\tprivate double valueReprocessed;\n\tprivate double volume;\n\tprivate long count;\n\tprivate double value;\n\n\tpublic Overview(final String name, final MyLocation location, final double valueReprocessed, final double volume, final long count, final double value) {\n\t\tthis.name = name;\n\t\tthis.location = location;\n\t\tthis.valueReprocessed = valueReprocessed;\n\t\tthis.volume = volume;\n\t\tthis.count = count;\n\t\tthis.value = value;\n\t}\n\n\tpublic double getAverageValue() {\n\t\tif (value > 0 && count > 0) {\n\t\t\treturn value / count;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\t@Override\n\tpublic long getCount() {\n\t\treturn count;\n\t}\n\n\t@Override\n\tpublic MyLocation getLocation() {\n\t\treturn location;\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\t@Override\n\tpublic double getValueReprocessed() {\n\t\treturn valueReprocessed;\n\t}\n\n\t@Override\n\tpublic double getValue() {\n\t\treturn value;\n\t}\n\n\t@Override\n\tpublic double getVolumeTotal() {\n\t\treturn volume;\n\t}\n\n\tpublic double getValuePerVolume() {\n\t\tif (getVolumeTotal() > 0 && getValue() > 0) {\n\t\t\treturn getValue() / getVolumeTotal();\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\tpublic void addCount(final long addCount) {\n\t\tthis.count = this.count + addCount;\n\t}\n\n\tpublic void addValue(final double addValue) {\n\t\tthis.value = this.value + addValue;\n\t}\n\n\tpublic void addVolume(final double addVolume) {\n\t\tthis.volume = this.volume + addVolume;\n\t}\n\tpublic void addReprocessedValue(final double addReprocessedValue) {\n\t\tthis.valueReprocessed = this.valueReprocessed + addReprocessedValue;\n\t}\n\n\t@Override\n\tpublic int compareTo(final Overview o) {\n\t\treturn this.name.compareToIgnoreCase(o.getName());\n\t}\n\n\t@Override\n\tpublic boolean equals(final Object obj) {\n\t\tif (obj == null) {\n\t\t\treturn false;\n\t\t}\n\t\tif (getClass() != obj.getClass()) {\n\t\t\treturn false;\n\t\t}\n\t\tfinal Overview other = (Overview) obj;\n\t\tif ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic int hashCode() {\n\t\tint hash = 7;\n\t\thash = 43 * hash + (this.name != null ? this.name.hashCode() : 0);\n\t\treturn hash;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/overview/OverviewData.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.overview;\r\n\r\nimport ca.odell.glazedlists.EventList;\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileData;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileManager;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.data.profile.TableData;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\r\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewTab.View;\r\nimport net.nikr.eve.jeveasset.i18n.General;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\n\r\n\r\npublic class OverviewData extends TableData {\r\n\r\n\tprivate final List<String> groupedLocations = new ArrayList<>();\r\n\tprivate int rowCount;\r\n\r\n\tpublic OverviewData(Program program) {\r\n\t\tsuper(program);\r\n\t}\r\n\r\n\tpublic OverviewData(ProfileManager profileManager, ProfileData profileData) {\r\n\t\tsuper(profileManager, profileData);\r\n\t}\r\n\r\n\tpublic EventList<Overview> getData(final Collection<MyAsset> assets, final String owner, final View view) {\r\n\t\tEventList<Overview> eventList = EventListManager.create();\r\n\t\tupdateData(eventList, assets, owner, view);\r\n\t\treturn eventList;\r\n\t}\r\n\r\n\tpublic void updateData(EventList<Overview> eventList, final Collection<MyAsset> assets, String owner, final View view) {\r\n\t\tif (owner == null || owner.isEmpty()) {\r\n\t\t\towner = General.get().all();\r\n\t\t}\r\n\t\tgroupedLocations.clear();\r\n\t\tList<Overview> locations = new ArrayList<>();\r\n\t\tMap<String, Overview> locationsMap = new HashMap<>();\r\n\t\trowCount = 0;\r\n\t\tif (view == OverviewTab.View.GROUPS) { //Add all groups\r\n\t\t\tfor (Map.Entry<String, OverviewGroup> entry : Settings.get().getOverviewGroups().entrySet()) {\r\n\t\t\t\tOverviewGroup overviewGroup = entry.getValue();\r\n\t\t\t\tif (!locationsMap.containsKey(overviewGroup.getName())) { //Create new overview\r\n\t\t\t\t\tOverview overview = new Overview(overviewGroup.getName(), MyLocation.create(0), 0, 0, 0, 0);\r\n\t\t\t\t\tlocationsMap.put(overviewGroup.getName(), overview);\r\n\t\t\t\t\tlocations.add(overview);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else { //Add all grouped locations\r\n\t\t\tfor (Map.Entry<String, OverviewGroup> entry : Settings.get().getOverviewGroups().entrySet()) {\r\n\t\t\t\tOverviewGroup overviewGroup = entry.getValue();\r\n\t\t\t\tfor (OverviewLocation overviewLocation : overviewGroup.getLocations()) {\r\n\t\t\t\t\tif (!groupedLocations.contains(overviewLocation.getName())) {\r\n\t\t\t\t\t\tgroupedLocations.add(overviewLocation.getName());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tfinal boolean all = owner.equals(General.get().all());\r\n\t\tfor (MyAsset asset : assets) {\r\n\t\t\tif (asset.getItem().isContainer() && Settings.get().isIgnoreSecureContainers()) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (asset.getItem().getGroup().equals(Item.GROUP_STATION_SERVICES)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\t//Filters\r\n\t\t\tif (!owner.equals(asset.getOwnerName()) && !all) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\trowCount++;\r\n\r\n\t\t\tdouble reprocessedValue = asset.getValueReprocessed();\r\n\t\t\tdouble value = asset.getValue();\r\n\t\t\tlong count = asset.getCount();\r\n\t\t\tdouble volume = asset.getVolumeTotal();\r\n\t\t\tif (view != View.GROUPS) { //Locations\r\n\t\t\t\tString locationName = \"\";\r\n\t\t\t\tMyLocation location = asset.getLocation();\r\n\t\t\t\tif (view == View.STATIONS && location.isPlanet()) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tif (view == View.PLANETS && !location.isPlanet()) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tif (!location.isEmpty()) { //Always use the default location for empty locations\r\n\t\t\t\t\tif (view == View.REGIONS) {\r\n\t\t\t\t\t\tlocationName = asset.getLocation().getRegion();\r\n\t\t\t\t\t\tlocation = ApiIdConverter.getLocation(asset.getLocation().getRegionID());\r\n\t\t\t\t\t} else if (view == View.CONSTELLATIONS) {\r\n\t\t\t\t\t\tlocationName = asset.getLocation().getConstellation();\r\n\t\t\t\t\t\tlocation = ApiIdConverter.getLocation(asset.getLocation().getConstellationID());\r\n\t\t\t\t\t} else if (view == View.SYSTEMS) {\r\n\t\t\t\t\t\tlocationName = asset.getLocation().getSystem();\r\n\t\t\t\t\t\tlocation = ApiIdConverter.getLocation(asset.getLocation().getSystemID());\r\n\t\t\t\t\t} else if (view == View.PLANETS) {\r\n\t\t\t\t\t\tlocationName = asset.getLocation().getLocation();\r\n\t\t\t\t\t\tlocation = ApiIdConverter.getLocation(asset.getLocation().getLocationID());\r\n\t\t\t\t\t} else if (view == View.STATIONS) {\r\n\t\t\t\t\t\tlocationName = asset.getLocation().getLocation();\r\n\t\t\t\t\t\tlocation = ApiIdConverter.getLocation(asset.getLocation().getLocationID());\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlocationName = location.getLocation();\r\n\t\t\t\t}\r\n\t\t\t\tif (locationsMap.containsKey(locationName)) { //Update existing overview\r\n\t\t\t\t\tOverview overview = locationsMap.get(locationName);\r\n\t\t\t\t\toverview.addCount(count);\r\n\t\t\t\t\toverview.addValue(value);\r\n\t\t\t\t\toverview.addVolume(volume);\r\n\t\t\t\t\toverview.addReprocessedValue(reprocessedValue);\r\n\t\t\t\t} else { //Create new overview\r\n\t\t\t\t\tOverview overview = new Overview(locationName, location, reprocessedValue, volume, count, value);\r\n\t\t\t\t\tlocationsMap.put(locationName, overview);\r\n\t\t\t\t\tlocations.add(overview);\r\n\t\t\t\t}\r\n\t\t\t} else { //Groups\r\n\t\t\t\tfor (Map.Entry<String, OverviewGroup> entry : Settings.get().getOverviewGroups().entrySet()) {\r\n\t\t\t\t\tOverviewGroup overviewGroup = entry.getValue();\r\n\t\t\t\t\tfor (OverviewLocation overviewLocation : overviewGroup.getLocations()) {\r\n\t\t\t\t\t\tif (overviewLocation.equalsLocation(asset)) { //Update existing overview (group)\r\n\t\t\t\t\t\t\tOverview overview = locationsMap.get(overviewGroup.getName());\r\n\t\t\t\t\t\t\toverview.addCount(count);\r\n\t\t\t\t\t\t\toverview.addValue(value);\r\n\t\t\t\t\t\t\toverview.addVolume(volume);\r\n\t\t\t\t\t\t\toverview.addReprocessedValue(reprocessedValue);\r\n\t\t\t\t\t\t\tbreak; //Only add once....\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().writeLock().lock();\r\n\t\t\teventList.clear();\r\n\t\t\teventList.addAll(locations);\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic List<String> getGroupedLocations() {\r\n\t\treturn groupedLocations;\r\n\t}\r\n\r\n\tpublic int getRowCount() {\r\n\t\treturn rowCount;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/overview/OverviewGroup.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.overview;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n\npublic class OverviewGroup {\n\tprivate final List<OverviewLocation> locations = new ArrayList<OverviewLocation>();\n\tprivate String name;\n\n\tpublic OverviewGroup(final String name) {\n\t\tthis.name = name;\n\t}\n\n\tpublic void add(final OverviewLocation location) {\n\t\tif (locations.contains(location)) {\n\t\t\tlocations.remove(location);\n\t\t}\n\t\tlocations.add(location);\n\t}\n\n\tpublic void addAll(final List<OverviewLocation> list) {\n\t\tfor (OverviewLocation location : list) {\n\t\t\tadd(location);\n\t\t}\n\t}\n\n\tpublic void remove(final OverviewLocation location) {\n\t\tlocations.remove(location);\n\t}\n\tpublic void removeAll(final List<OverviewLocation> list) {\n\t\tlocations.removeAll(list);\n\t}\n\n\tpublic List<OverviewLocation> getLocations() {\n\t\treturn locations;\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic void setName(final String name) {\n\t\tthis.name = name;\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\treturn name;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/overview/OverviewLocation.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.overview;\n\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\n\n\npublic class OverviewLocation {\n\tpublic enum LocationType {\n\t\tTYPE_PLANET, TYPE_STATION, TYPE_SYSTEM, TYPE_CONSTELLATION, TYPE_REGION;\n\t}\n\n\tprivate String name;\n\tprivate LocationType type;\n\n\tpublic OverviewLocation(final String name) {\n\t\tthis(name, null);\n\t}\n\n\tpublic OverviewLocation(final String name, final LocationType type) {\n\t\tthis.name = name;\n\t\tthis.type = type;\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic LocationType getType() {\n\t\treturn type;\n\t}\n\n\tpublic boolean isPlanet() {\n\t\treturn type.equals(LocationType.TYPE_PLANET);\n\t}\n\n\tpublic boolean isStation() {\n\t\treturn type.equals(LocationType.TYPE_STATION);\n\t}\n\n\tpublic boolean isSystem() {\n\t\treturn type.equals(LocationType.TYPE_SYSTEM);\n\t}\n\n\tpublic boolean isConstellation() {\n\t\treturn type.equals(LocationType.TYPE_CONSTELLATION);\n\t}\n\n\tpublic boolean isRegion() {\n\t\treturn type.equals(LocationType.TYPE_REGION);\n\t}\n\n\tpublic boolean equalsLocation(final MyAsset asset) {\n\t\treturn (name.equals(asset.getLocation().getLocation())\n\t\t\t\t|| name.equals(asset.getLocation().getSystem())\n\t\t\t\t|| name.equals(asset.getLocation().getConstellation())\n\t\t\t\t|| name.equals(asset.getLocation().getRegion()));\n\t}\n\n\tpublic boolean equalsLocation(final Overview overview) {\n\t\treturn (name.equals(overview.getName())\n\t\t\t\t|| name.equals(overview.getLocation().getSystem())\n\t\t\t\t|| name.equals(overview.getLocation().getConstellation())\n\t\t\t\t|| name.equals(overview.getLocation().getRegion()));\n\t}\n\n\t@Override\n\tpublic boolean equals(final Object obj) {\n\t\tif (obj == null) {\n\t\t\treturn false;\n\t\t}\n\t\tif (getClass() != obj.getClass()) {\n\t\t\treturn false;\n\t\t}\n\t\tfinal OverviewLocation other = (OverviewLocation) obj;\n\t\tif ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic int hashCode() {\n\t\tint hash = 3;\n\t\thash = 23 * hash + (this.name != null ? this.name.hashCode() : 0);\n\t\treturn hash;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/overview/OverviewTab.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.overview;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.FilterList;\nimport ca.odell.glazedlists.ListSelection;\nimport ca.odell.glazedlists.SortedList;\nimport ca.odell.glazedlists.event.ListEvent;\nimport ca.odell.glazedlists.event.ListEventListener;\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport ca.odell.glazedlists.swing.TableComparatorChooser;\nimport java.awt.CardLayout;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport javax.swing.ButtonGroup;\nimport javax.swing.GroupLayout;\nimport javax.swing.JComboBox;\nimport javax.swing.JComponent;\nimport javax.swing.JLabel;\nimport javax.swing.JMenu;\nimport javax.swing.JMenuItem;\nimport javax.swing.JPopupMenu;\nimport javax.swing.JPanel;\nimport javax.swing.JScrollPane;\nimport javax.swing.JToggleButton;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel.JStatusLabel;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.StringComparators;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDropDownButton;\nimport net.nikr.eve.jeveasset.gui.shared.components.JFixedToolBar;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabSecondary;\nimport net.nikr.eve.jeveasset.gui.shared.components.JTreemap;\nimport net.nikr.eve.jeveasset.gui.shared.components.ListComboBoxModel;\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter;\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuColumns;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo.AutoNumberFormat;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo.InfoItem;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\nimport net.nikr.eve.jeveasset.gui.tabs.assets.AssetsTab;\nimport net.nikr.eve.jeveasset.i18n.TabsOverview;\n\n\npublic class OverviewTab extends JMainTabSecondary {\n\n\tpublic static enum OverviewAction {\n\t\tUPDATE_LIST,\n\t\tLOAD_FILTER,\n\t\tTREEMAP_VIEW\n\t}\n\n\tpublic static enum View {\n\t\tSTATIONS,\n\t\tPLANETS,\n\t\tSYSTEMS,\n\t\tCONSTELLATIONS,\n\t\tREGIONS,\n\t\tGROUPS,\n\t}\n\n\tprivate final JOverviewTable jTable;\n\tprivate final JToggleButton jStations;\n\tprivate final JToggleButton jPlanets;\n\tprivate final JToggleButton jSystems;\n\tprivate final JToggleButton jConstellations;\n\tprivate final JToggleButton jRegions;\n\tprivate final JToggleButton jGroups;\n\tprivate final JToggleButton jTreemap;\n\tprivate final JDropDownButton jLoadFilter;\n\tprivate final JComboBox<String> jOwner;\n\tprivate final JStatusLabel jValue;\n\tprivate final JStatusLabel jReprocessed;\n\tprivate final JStatusLabel jCount;\n\tprivate final JStatusLabel jAverage;\n\tprivate final JStatusLabel jVolume;\n\tprivate final JLabel jShowing;\n\tprivate final ListenerClass listener = new ListenerClass();\n\n\t//Table\n\tprivate final EventList<Overview> eventList;\n\tprivate final FilterList<Overview> filterList;\n\tprivate final DefaultEventTableModel<Overview> tableModel;\n\tprivate final EnumTableFormatAdaptor<OverviewTableFormat, Overview> tableFormat;\n\tprivate final OverviewTabFilterControl filterControl;\n\tprivate final DefaultEventSelectionModel<Overview> selectionModel;\n\n\t//Data\n\tprivate final OverviewData overviewData;\n\n\tpublic static final String NAME = \"overview\"; //Not to be changed!\n\tprivate static final String VIEW_TABLE = \"table\";\n\tprivate static final String VIEW_TREEMAP = \"treemap\";\n\n\tprivate final JTreemap jTreemapView;\n\tprivate final JPanel jViewPanel;\n\tprivate final CardLayout viewLayout;\n\n\tpublic OverviewTab(final Program program) {\n\t\tsuper(program, NAME, TabsOverview.get().overview(), Images.TOOL_OVERVIEW.getIcon(), true);\n\n\t\toverviewData = new OverviewData(program);\n\n\t\tJFixedToolBar jToolBar = new JFixedToolBar();\n\n\t\tJLabel jViewsLabel = new JLabel(TabsOverview.get().view());\n\t\tjToolBar.add(jViewsLabel);\n\n\t\tjToolBar.addSpace(10);\n\n\t\tjStations = new JToggleButton(Images.LOC_STATION.getIcon());\n\t\tjStations.setSelected(true);\n\t\tjStations.setToolTipText(TabsOverview.get().stations());\n\t\tjStations.setActionCommand(OverviewAction.UPDATE_LIST.name());\n\t\tjStations.addActionListener(listener);\n\t\tjToolBar.addButtonIcon(jStations);\n\n\t\tjPlanets = new JToggleButton(Images.LOC_PLANET.getIcon());\n\t\tjPlanets.setToolTipText(TabsOverview.get().planets());\n\t\tjPlanets.setActionCommand(OverviewAction.UPDATE_LIST.name());\n\t\tjPlanets.addActionListener(listener);\n\t\tjToolBar.addButtonIcon(jPlanets);\n\n\t\tjSystems = new JToggleButton(Images.LOC_SYSTEM.getIcon());\n\t\tjSystems.setToolTipText(TabsOverview.get().systems());\n\t\tjSystems.setActionCommand(OverviewAction.UPDATE_LIST.name());\n\t\tjSystems.addActionListener(listener);\n\t\tjToolBar.addButtonIcon(jSystems);\n\n\t\tjConstellations = new JToggleButton(Images.LOC_CONSTELLATION.getIcon());\n\t\tjConstellations.setToolTipText(TabsOverview.get().constellations());\n\t\tjConstellations.setActionCommand(OverviewAction.UPDATE_LIST.name());\n\t\tjConstellations.addActionListener(listener);\n\t\tjToolBar.addButtonIcon(jConstellations);\n\n\t\tjRegions = new JToggleButton(Images.LOC_REGION.getIcon());\n\t\tjRegions.setToolTipText(TabsOverview.get().regions());\n\t\tjRegions.setActionCommand(OverviewAction.UPDATE_LIST.name());\n\t\tjRegions.addActionListener(listener);\n\t\tjToolBar.addButtonIcon(jRegions);\n\n\t\tjGroups = new JToggleButton(Images.LOC_GROUPS.getIcon());\n\t\tjGroups.setToolTipText(TabsOverview.get().groups());\n\t\tjGroups.setActionCommand(OverviewAction.UPDATE_LIST.name());\n\t\tjGroups.addActionListener(listener);\n\t\tjToolBar.addButtonIcon(jGroups);\n\n\t\tjTreemap = new JToggleButton(TabsOverview.get().treemap(), Images.TOOL_TREE.getIcon());\n\t\tjTreemap.setToolTipText(TabsOverview.get().treemapToolTip());\n\t\tjTreemap.setActionCommand(OverviewAction.TREEMAP_VIEW.name());\n\t\tjTreemap.addActionListener(listener);\n\t\tjToolBar.addButton(jTreemap);\n\n\t\tButtonGroup group = new ButtonGroup();\n\t\tgroup.add(jStations);\n\t\tgroup.add(jPlanets);\n\t\tgroup.add(jSystems);\n\t\tgroup.add(jConstellations);\n\t\tgroup.add(jRegions);\n\t\tgroup.add(jGroups);\n\n\t\tjToolBar.addSeparator();\n\n\t\tjLoadFilter = new JDropDownButton(TabsOverview.get().loadFilter());\n\t\tjLoadFilter.setIcon(Images.FILTER_LOAD.getIcon());\n\t\tjToolBar.addButton(jLoadFilter);\n\n\t\tjToolBar.addSeparator();\n\n\t\tjToolBar.addSpace(5);\n\n\t\tJLabel jOwnerLabel = new JLabel(TabsOverview.get().owner());\n\t\tjToolBar.add(jOwnerLabel);\n\n\t\tjToolBar.addSpace(5);\n\n\t\tjOwner = new JComboBox<>();\n\t\tjOwner.setActionCommand(OverviewAction.UPDATE_LIST.name());\n\t\tjOwner.addActionListener(listener);\n\t\tjToolBar.addComboBox(jOwner, 150);\n\n\t\tjToolBar.addGlue(10);\n\n\t\tjShowing = new JLabel();\n\t\tjShowing.setHorizontalAlignment(JLabel.RIGHT);\n\t\tjToolBar.add(jShowing);\n\n\t\tupdateFilters();\n\n\t\t//Table Format\n\t\ttableFormat = TableFormatFactory.overviewTableFormat();\n\t\t//Backend\n\t\teventList = EventListManager.create();\n\t\t//Sorting (per column)\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<Overview> sortedList = new SortedList<>(eventList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t//Filter\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tfilterList = new FilterList<>(sortedList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\tfilterList.addListEventListener(new ListEventListener<Overview>() {\n\t\t\t@Override\n\t\t\tpublic void listChanged(ListEvent<Overview> listChanges) {\n\t\t\t\tif (jTreemap.isSelected()) {\n\t\t\t\t\tupdateTreemapData();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t//Table Model\n\t\ttableModel = EventModels.createTableModel(filterList, tableFormat);\n\t\t//Table\n\t\tjTable = new JOverviewTable(program, tableModel);\n\t\t//Sorting\n\t\tTableComparatorChooser<Overview> comparatorChooser = TableComparatorChooser.install(jTable, sortedList, TableComparatorChooser.MULTIPLE_COLUMN_MOUSE, tableFormat);\n\t\t//Selection Model\n\t\tselectionModel = EventModels.createSelectionModel(filterList);\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\n\t\tjTable.setSelectionModel(selectionModel);\n\t\t//Listeners\n\t\tinstallTable(jTable);\n\t\t//Scroll\n\t\tJScrollPane jTableScroll = new JScrollPane(jTable);\n\t\tjTreemapView = new JTreemap(new JTreemap.SelectionListener() {\n\t\t\t@Override\n\t\t\tpublic void itemSelected(String name) {\n\t\t\t\tapplyNameFilter(name);\n\t\t\t}\n\t\t});\n\t\tviewLayout = new CardLayout();\n\t\tjViewPanel = new JPanel(viewLayout);\n\t\tjViewPanel.add(jTableScroll, VIEW_TABLE);\n\t\tjViewPanel.add(jTreemapView, VIEW_TREEMAP);\n\t\tviewLayout.show(jViewPanel, VIEW_TABLE);\n\t\t//Table Filter\n\t\tfilterControl = new OverviewTabFilterControl(sortedList);\n\t\t//Menu\n\t\tinstallTableTool(new OverviewTableMenu(), tableFormat, comparatorChooser, tableModel, jTable, filterControl, Overview.class);\n\n\t\tjVolume = StatusPanel.createLabel(TabsOverview.get().totalVolume(), Images.ASSETS_VOLUME.getIcon(), AutoNumberFormat.DOUBLE);\n\t\tthis.addStatusbarLabel(jVolume);\n\n\t\tjCount = StatusPanel.createLabel(TabsOverview.get().totalCount(), Images.EDIT_ADD.getIcon(), AutoNumberFormat.ITEMS);\n\t\tthis.addStatusbarLabel(jCount);\n\n\t\tjAverage = StatusPanel.createLabel(TabsOverview.get().average(), Images.ASSETS_AVERAGE.getIcon(), AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jAverage);\n\n\t\tjReprocessed = StatusPanel.createLabel(TabsOverview.get().totalReprocessed(), Images.SETTINGS_REPROCESSING.getIcon(), AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jReprocessed);\n\n\t\tjValue = StatusPanel.createLabel(TabsOverview.get().totalValue(), Images.TOOL_VALUES.getIcon(), AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jValue);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jToolBar, jToolBar.getMinimumSize().width, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t.addComponent(jViewPanel, 400, 400, Short.MAX_VALUE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jToolBar, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t.addComponent(jViewPanel, 100, 400, Short.MAX_VALUE)\n\t\t);\n\t}\n\n\t@Override\n\tpublic void updateData() {\n\t\tObject object = jOwner.getSelectedItem();\n\t\tjOwner.setModel(new ListComboBoxModel<>(program.getOwnerNames(true)));\n\t\tif (object != null) {\n\t\t\tjOwner.setSelectedItem(object);\n\t\t}\n\t\tupdateTableInner();\n\t}\n\n\t@Override\n\tpublic void clearData() {\n\t\ttry {\n\t\t\teventList.getReadWriteLock().writeLock().lock();\n\t\t\teventList.clear();\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t}\n\n\t@Override\n\tpublic void updateCache() { }\n\n\t@Override\n\tpublic Collection<LocationType> getLocations() {\n\t\ttry {\n\t\t\teventList.getReadWriteLock().readLock().lock();\n\t\t\treturn new ArrayList<>(eventList);\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t}\n\n\tpublic ActionListener getListenerClass() {\n\t\treturn listener;\n\t}\n\n\tpublic boolean isGroup() {\n\t\treturn getSelectedView() == View.GROUPS;\n\t}\n\n\tpublic boolean isGroupAndNotEmpty() {\n\t\tOverviewGroup overviewGroup = getSelectGroup();\n\t\treturn isGroup() && overviewGroup != null && !overviewGroup.getLocations().isEmpty();\n\t}\n\n\tprivate void updateStatusbar() {\n\t\tdouble averageValue = 0;\n\t\tdouble totalValue = 0;\n\t\tlong totalCount = 0;\n\t\tdouble totalVolume = 0;\n\t\tdouble totalReprocessed = 0;\n\t\ttry {\n\t\t\teventList.getReadWriteLock().readLock().lock();\n\t\t\tfor (InfoItem infoItem : eventList) {\n\t\t\t\ttotalValue = totalValue + infoItem.getValue();\n\t\t\t\ttotalCount = totalCount + infoItem.getCount();\n\t\t\t\ttotalVolume = totalVolume + infoItem.getVolumeTotal();\n\t\t\t\ttotalReprocessed = totalReprocessed + infoItem.getValueReprocessed();\n\t\t\t}\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t\tif (totalCount > 0 && totalValue > 0) {\n\t\t\taverageValue = totalValue / totalCount;\n\t\t}\n\t\tjVolume.setNumber(totalVolume);\n\t\tjCount.setNumber(totalCount);\n\t\tjAverage.setNumber(averageValue);\n\t\tjReprocessed.setNumber(totalReprocessed);\n\t\tjValue.setNumber(totalValue);\n\t}\n\n\t@Override\n\tpublic void tableDataChanged() {\n\t\tsuper.tableDataChanged();\n\t\tif (jTreemap.isSelected()) {\n\t\t\tupdateTreemapData();\n\t\t}\n\t}\n\n\tprivate void updateTreemapData() {\n\t\tMap<String, Double> nameValues = new HashMap<>();\n\t\ttry {\n\t\t\tfilterList.getReadWriteLock().readLock().lock();\n\t\t\tfor (Overview overview : filterList) {\n\t\t\t\tString name = overview.getName();\n\t\t\t\tif (name == null || name.isEmpty()) {\n\t\t\t\t\tname = \"Unknown\";\n\t\t\t\t}\n\t\t\t\tdouble value = overview.getValue();\n\t\t\t\tif (value <= 0) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tnameValues.put(name, nameValues.getOrDefault(name, 0.0) + value);\n\t\t\t}\n\t\t} finally {\n\t\t\tfilterList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t\tjTreemapView.setItems(nameValues);\n\t}\n\n\tprivate void showTreemap(boolean show) {\n\t\tif (show) {\n\t\t\tupdateTreemapData();\n\t\t\tviewLayout.show(jViewPanel, VIEW_TREEMAP);\n\t\t} else {\n\t\t\tviewLayout.show(jViewPanel, VIEW_TABLE);\n\t\t}\n\t}\n\n\tprivate void applyNameFilter(String name) {\n\t\tif (name == null || name.isEmpty()) {\n\t\t\treturn;\n\t\t}\n\t\tif (jTreemap.isSelected()) {\n\t\t\tjTreemap.setSelected(false);\n\t\t\tshowTreemap(false);\n\t\t}\n\t\tList<Filter> filters = new ArrayList<>();\n\t\tfor (Filter filter : filterControl.getCurrentFilters()) {\n\t\t\tif (filter == null || filter.isEmpty()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (filter.getColumn() instanceof OverviewTableFormat) {\n\t\t\t\tOverviewTableFormat column = (OverviewTableFormat) filter.getColumn();\n\t\t\t\tif (column == OverviewTableFormat.NAME) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfilters.add(filter);\n\t\t}\n\t\tfilters.add(new Filter(Filter.LogicType.AND, OverviewTableFormat.NAME, Filter.CompareType.EQUALS, name));\n\t\tfilterControl.clearCurrentFilters();\n\t\tfilterControl.addFilters(filters);\n\t}\n\n\tprotected View getSelectedView() {\n\t\tif (jStations.isSelected()) {\n\t\t\treturn View.STATIONS;\n\t\t}\n\t\tif (jPlanets.isSelected()) {\n\t\t\treturn View.PLANETS;\n\t\t}\n\t\tif (jSystems.isSelected()) {\n\t\t\treturn View.SYSTEMS;\n\t\t}\n\t\tif (jConstellations.isSelected()) {\n\t\t\treturn View.CONSTELLATIONS;\n\t\t}\n\t\tif (jRegions.isSelected()) {\n\t\t\treturn View.REGIONS;\n\t\t}\n\t\tif (jGroups.isSelected()) {\n\t\t\treturn View.GROUPS;\n\t\t}\n\t\treturn View.STATIONS;\n\t}\n\n\tpublic final void updateFilters() {\n\t\tJMenuItem jMenuItem;\n\n\t\tjLoadFilter.removeAll();\n\n\t\tjMenuItem = new FilterMenuItem(TabsOverview.get().clear(), new ArrayList<>());\n\t\tjMenuItem.setIcon(Images.FILTER_CLEAR.getIcon());\n\t\tjMenuItem.setActionCommand(OverviewAction.LOAD_FILTER.name());\n\t\tjMenuItem.addActionListener(listener);\n\t\tjLoadFilter.add(jMenuItem);\n\n\t\tList<String> filterNames = new ArrayList<>(Settings.get().getTableFilters(AssetsTab.NAME).keySet());\n\t\tCollections.sort(filterNames, StringComparators.CASE_INSENSITIVE);\n\n\t\tif (!filterNames.isEmpty()) {\n\t\t\tjLoadFilter.addSeparator();\n\t\t}\n\n\t\tfor (String filterName : filterNames) {\n\t\t\tList<Filter> filters = Settings.get().getTableFilters(AssetsTab.NAME).get(filterName);\n\t\t\tjMenuItem = new FilterMenuItem(filterName, filters);\n\t\t\tjMenuItem.setActionCommand(OverviewAction.LOAD_FILTER.name());\n\t\t\tjMenuItem.addActionListener(listener);\n\t\t\tjLoadFilter.add(jMenuItem);\n\t\t}\n\t}\n\n\tpublic void updateTable() {\n\t\t//Only need to updateFormula when added to the main window\n\t\tif (!program.getMainWindow().getTabs().contains(this)) {\n\t\t\treturn;\n\t\t}\n\t\tupdateTableInner();\n\t}\n\n\tpublic static void updateShownColumns(EnumTableFormatAdaptor<OverviewTableFormat, Overview> tableFormat, View view) {\n\t\tswitch (view) {\n\t\t\tcase STATIONS:\n\t\t\t\ttableFormat.showColumn(OverviewTableFormat.SYSTEM);\n\t\t\t\ttableFormat.showColumn(OverviewTableFormat.CONSTELLATION);\n\t\t\t\ttableFormat.showColumn(OverviewTableFormat.REGION);\n\t\t\t\ttableFormat.showColumn(OverviewTableFormat.SECURITY);\n\t\t\t\tbreak;\n\t\t\tcase PLANETS:\n\t\t\t\ttableFormat.showColumn(OverviewTableFormat.SYSTEM);\n\t\t\t\ttableFormat.showColumn(OverviewTableFormat.CONSTELLATION);\n\t\t\t\ttableFormat.showColumn(OverviewTableFormat.REGION);\n\t\t\t\ttableFormat.showColumn(OverviewTableFormat.SECURITY);\n\t\t\t\tbreak;\n\t\t\tcase SYSTEMS:\n\t\t\t\ttableFormat.hideColumn(OverviewTableFormat.SYSTEM);\n\t\t\t\ttableFormat.showColumn(OverviewTableFormat.CONSTELLATION);\n\t\t\t\ttableFormat.showColumn(OverviewTableFormat.REGION);\n\t\t\t\ttableFormat.showColumn(OverviewTableFormat.SECURITY);\n\t\t\t\tbreak;\n\t\t\tcase CONSTELLATIONS:\n\t\t\t\ttableFormat.hideColumn(OverviewTableFormat.SYSTEM);\n\t\t\t\ttableFormat.hideColumn(OverviewTableFormat.CONSTELLATION);\n\t\t\t\ttableFormat.showColumn(OverviewTableFormat.REGION);\n\t\t\t\ttableFormat.hideColumn(OverviewTableFormat.SECURITY);\n\t\t\t\tbreak;\n\t\t\tcase REGIONS:\n\t\t\t\ttableFormat.hideColumn(OverviewTableFormat.SYSTEM);\n\t\t\t\ttableFormat.hideColumn(OverviewTableFormat.REGION);\n\t\t\t\ttableFormat.hideColumn(OverviewTableFormat.CONSTELLATION);\n\t\t\t\ttableFormat.hideColumn(OverviewTableFormat.SECURITY);\n\t\t\t\tbreak;\n\t\t\tcase GROUPS:\n\t\t\t\ttableFormat.hideColumn(OverviewTableFormat.SYSTEM);\n\t\t\t\ttableFormat.hideColumn(OverviewTableFormat.CONSTELLATION);\n\t\t\t\ttableFormat.hideColumn(OverviewTableFormat.REGION);\n\t\t\t\ttableFormat.hideColumn(OverviewTableFormat.SECURITY);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate void updateTableInner() {\n\t\tbeforeUpdateData();\n\t\tString owner = (String) jOwner.getSelectedItem();\n\t\tView view = getSelectedView();\n\t\tupdateShownColumns(tableFormat, view);\n\t\ttableModel.fireTableStructureChanged();\n\t\toverviewData.updateData(eventList, program.getAssetsTab().getFilteredAssets(), owner, view);\n\t\tjTable.setGroupedLocations(overviewData.getGroupedLocations());\n\t\tupdateStatusbar();\n\t\tprogram.overviewGroupsChanged();\n\t\tif (jTreemap.isSelected()) {\n\t\t\tupdateTreemapData();\n\t\t}\n\n\t\tjShowing.setText(TabsOverview.get().filterShowing(overviewData.getRowCount(), EventListManager.size(program.getProfileData().getAssetsEventList()), program.getAssetsTab().getCurrentFilterName()));\n\t\tafterUpdateData();\n\t}\n\n\tprotected List<OverviewLocation> getSelectedLocations() {\n\t\tList<OverviewLocation> locations = new ArrayList<>();\n\t\tfor (int row : jTable.getSelectedRows()) {\n\t\t\tOverview overview = tableModel.getElementAt(row);\n\t\t\tOverviewLocation overviewLocation = null;\n\t\t\tif (getSelectedView() == View.STATIONS) {\n\t\t\t\toverviewLocation = new OverviewLocation(overview.getName(), OverviewLocation.LocationType.TYPE_STATION);\n\t\t\t} else if (getSelectedView() == View.PLANETS) {\n\t\t\t\toverviewLocation = new OverviewLocation(overview.getName(), OverviewLocation.LocationType.TYPE_PLANET);\n\t\t\t} else if (getSelectedView() == View.SYSTEMS) {\n\t\t\t\toverviewLocation = new OverviewLocation(overview.getName(), OverviewLocation.LocationType.TYPE_SYSTEM);\n\t\t\t} else if (getSelectedView() == View.CONSTELLATIONS) {\n\t\t\t\toverviewLocation = new OverviewLocation(overview.getName(), OverviewLocation.LocationType.TYPE_CONSTELLATION);\n\t\t\t} else if (getSelectedView() == View.REGIONS) {\n\t\t\t\toverviewLocation = new OverviewLocation(overview.getName(), OverviewLocation.LocationType.TYPE_REGION);\n\t\t\t}\n\t\t\tif (overviewLocation != null) {\n\t\t\t\tlocations.add(overviewLocation);\n\t\t\t}\n\t\t}\n\t\treturn locations;\n\t}\n\n\tpublic OverviewGroup getSelectGroup() {\n\t\tint index = jTable.getSelectedRow();\n\t\tif (index < 0) {\n\t\t\treturn null;\n\t\t}\n\t\tOverview overview = tableModel.getElementAt(index);\n\t\tif (overview == null) {\n\t\t\treturn null;\n\t\t}\n\t\treturn Settings.get().getOverviewGroups().get(overview.getName());\n\t}\n\n\tpublic class OverviewTableMenu implements TableMenu<Overview> {\n\n\t\tpublic OverviewTab getOverviewTab() {\n\t\t\treturn OverviewTab.this;\n\t\t}\n\n\t\t@Override\n\t\tpublic MenuData<Overview> getMenuData() {\n\t\t\treturn new MenuData<>(selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getFilterMenu() {\n\t\t\treturn filterControl.getMenu(jTable, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getColumnMenu() {\n\t\t\treturn new JMenuColumns<>(program, tableFormat, tableModel, jTable, NAME, false);\n\t\t}\n\n\t\t@Override\n\t\tpublic void addInfoMenu(JPopupMenu jPopupMenu) {\n\t\t\tJMenuInfo.infoItem(jPopupMenu, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic void addToolMenu(JComponent jComponent) {\n\t\t\tjComponent.add(new JOverviewMenu(program, OverviewTab.this, selectionModel.getSelected()));\n\t\t\tMenuManager.addSeparator(jComponent);\n\t\t}\n\t}\n\n\tprivate class ListenerClass implements ActionListener {\n\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (OverviewAction.UPDATE_LIST.name().equals(e.getActionCommand())) {\n\t\t\t\tupdateTable();\n\t\t\t} else if (OverviewAction.LOAD_FILTER.name().equals(e.getActionCommand())) {\n\t\t\t\tObject source = e.getSource();\n\t\t\t\tif (source instanceof FilterMenuItem) {\n\t\t\t\t\tFilterMenuItem menuItem = (FilterMenuItem) source;\n\t\t\t\t\tprogram.getAssetsTab().clearFilters();\n\t\t\t\t\tif (!menuItem.getFilters().isEmpty()) {\n\t\t\t\t\t\tprogram.getAssetsTab().addFilters(menuItem.getFilters());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (OverviewAction.TREEMAP_VIEW.name().equals(e.getActionCommand())) {\n\t\t\t\tshowTreemap(jTreemap.isSelected());\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate class FilterMenuItem extends JMenuItem {\n\n\t\tprivate final List<Filter> filters;\n\n\t\tpublic FilterMenuItem(final String name, final List<Filter> filters) {\n\t\t\tsuper(name, Images.FILTER_LOAD.getIcon());\n\t\t\tthis.filters = filters;\n\t\t}\n\n\t\tpublic List<Filter> getFilters() {\n\t\t\treturn filters;\n\t\t}\n\t}\n\n\tpublic class OverviewTabFilterControl extends FilterControl<Overview> {\n\n\t\tpublic OverviewTabFilterControl(EventList<Overview> exportEventList) {\n\t\t\tsuper(program.getMainWindow().getFrame(),\n\t\t\t\t\tNAME,\n\t\t\t\t\ttableFormat,\n\t\t\t\t\teventList,\n\t\t\t\t\texportEventList,\n\t\t\t\t\tfilterList\n\t\t\t\t\t);\n\t\t}\n\n\t\t@Override\n\t\tpublic void saveSettings(final String msg) {\n\t\t\tprogram.saveSettings(\"Overview Table: \" + msg); //Save Overview Filters and Export Settings\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/overview/OverviewTableFormat.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.overview;\n\n\nimport java.util.Comparator;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Security;\nimport net.nikr.eve.jeveasset.i18n.TabsOverview;\n\n\npublic enum OverviewTableFormat implements EnumTableColumn<Overview> {\n\tNAME(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOverview.get().columnName();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Overview from) {\n\t\t\treturn from.getName();\n\t\t}\n\t},\n\tSYSTEM(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOverview.get().columnSystem();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Overview from) {\n\t\t\treturn from.getLocation().getSystem();\n\t\t}\n\t},\n\tCONSTELLATION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOverview.get().columnConstellation();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Overview from) {\n\t\t\treturn from.getLocation().getConstellation();\n\t\t}\n\t},\n\tREGION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOverview.get().columnRegion();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Overview from) {\n\t\t\treturn from.getLocation().getRegion();\n\t\t}\n\t},\n\tSECURITY(Security.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOverview.get().columnSecurity();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Overview from) {\n\t\t\treturn from.getLocation().getSecurityObject();\n\t\t}\n\t},\n\tVOLUME(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOverview.get().columnVolume();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Overview from) {\n\t\t\treturn from.getVolumeTotal();\n\t\t}\n\t},\n\tVALUE(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOverview.get().columnValue();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Overview from) {\n\t\t\treturn from.getValue();\n\t\t}\n\t},\n\tVALUE_PER_VOLUME(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOverview.get().columnValuePerVolume();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Overview from) {\n\t\t\treturn from.getValuePerVolume();\n\t\t}\n\t},\n\tCOUNT(Long.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOverview.get().columnCount();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Overview from) {\n\t\t\treturn from.getCount();\n\t\t}\n\t},\n\tAVERAGE_VALUE(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOverview.get().columnAverageValue();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Overview from) {\n\t\t\treturn from.getAverageValue();\n\t\t}\n\t},\n\tREPROCESSED_VALUE(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsOverview.get().columnReprocessedValue();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final Overview from) {\n\t\t\treturn from.getValueReprocessed();\n\t\t}\n\t};\n\tprivate final Class<?> type;\n\tprivate final Comparator<?> comparator;\n\tprivate OverviewTableFormat(final Class<?> type) {\n\t\tthis.type = type;\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\n\t}\n\t@Override\n\tpublic Class<?> getType() {\n\t\treturn type;\n\t}\n\t@Override\n\tpublic Comparator<?> getComparator() {\n\t\treturn comparator;\n\t}\n\t@Override\n\tpublic String toString() {\n\t\treturn getColumnName();\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/prices/JItemsManagerDialog.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.prices;\r\n\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Set;\r\nimport javax.swing.JOptionPane;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JManagerDialog;\r\nimport net.nikr.eve.jeveasset.i18n.TabsPriceHistory;\r\n\r\n\r\npublic class JItemsManagerDialog extends JManagerDialog {\r\n\r\n\tprivate final PriceHistoryTab priceHistoryTab;\r\n\r\n\tpublic JItemsManagerDialog(Program program, PriceHistoryTab priceHistoryTab) {\r\n\t\tsuper(program, program.getMainWindow().getFrame(), TabsPriceHistory.get().manageTitle(), true, false, false, true, false);\r\n\t\tthis.priceHistoryTab = priceHistoryTab;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void load(String name) {\r\n\t\tpriceHistoryTab.setItems(Settings.get().getPriceHistorySets().get(name));\r\n\t\tsetVisible(false);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void edit(String name) {\r\n\t\t//Edit is not supported\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void merge(String name, List<String> list) {\r\n\t\tSet<Integer> typeIDs = new HashSet<>();\r\n\t\tfor (String s : list) {\r\n\t\t\ttypeIDs.addAll(Settings.get().getPriceHistorySets().get(s));\r\n\t\t\tif (typeIDs.size() > priceHistoryTab.MAXIMUM_SHOWN) {\r\n\t\t\t\tJOptionPane.showMessageDialog(parent, TabsPriceHistory.get().mergeMax(priceHistoryTab.MAXIMUM_SHOWN), TabsPriceHistory.get().merge(), JOptionPane.PLAIN_MESSAGE);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tSettings.lock(\"Price History (Merge Sets)\");\r\n\t\tSettings.get().getPriceHistorySets().put(name, typeIDs);\r\n\t\tSettings.unlock(\"Price History (Merge Sets)\");\r\n\t\tprogram.saveSettings(\"Price History (Merge Set)\");\r\n\t\tupdateData();\r\n\t\tpriceHistoryTab.updateSaved();\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void copy(String fromName, String toName) {\r\n\t\t//Copy is not supported\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void rename(String name, String oldName) {\r\n\t\tSettings.lock(\"Price History (Rename Set)\");\r\n\t\tSet<Integer> typeIDs = Settings.get().getPriceHistorySets().remove(oldName);\r\n\t\tSettings.get().getPriceHistorySets().put(name, typeIDs);\r\n\t\tSettings.unlock(\"Price History (Rename Set)\");\r\n\t\tprogram.saveSettings(\"Price History (Rename Set)\");\r\n\t\tupdateData();\r\n\t\tpriceHistoryTab.updateSaved();\r\n\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void delete(List<String> list) {\r\n\t\tSettings.lock(\"Price History (Delete Sets)\");\r\n\t\tSettings.get().getPriceHistorySets().keySet().removeAll(list);\r\n\t\tSettings.unlock(\"Price History (Delete Sets)\");\r\n\t\tprogram.saveSettings(\"Price History (Delete Sets)\");\r\n\t\tupdateData();\r\n\t\tpriceHistoryTab.updateSaved();\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void export(List<String> list) {\r\n\t\t//Export is not supported\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void importData() {\r\n\t\t//Import is not supported\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setVisible(boolean b) {\r\n\t\tif (b) {\r\n\t\t\tupdateData();\r\n\t\t}\r\n\t\tsuper.setVisible(b);\r\n\t}\r\n\r\n\tprivate void updateData() {\r\n\t\tupdate(Settings.get().getPriceHistorySets().keySet());\r\n\t}\r\n\r\n\t@Override protected String textDeleteMultipleMsg(int size) { return TabsPriceHistory.get().deleteHistorySets(size); }\r\n\t@Override protected String textDelete() { return TabsPriceHistory.get().deleteHistorySet(); }\r\n\t@Override protected String textEnterName() { return TabsPriceHistory.get().enterName(); }\r\n\t@Override protected String textMerge() { return TabsPriceHistory.get().merge(); }\r\n\t@Override protected String textRename() { return TabsPriceHistory.get().rename(); }\r\n\t@Override protected String textOverwrite() { return TabsPriceHistory.get().overwrite(); }\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/prices/PriceChangesTab.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.prices;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.FilterList;\nimport ca.odell.glazedlists.ListSelection;\nimport ca.odell.glazedlists.SortedList;\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport ca.odell.glazedlists.swing.TableComparatorChooser;\nimport com.github.lgooddatepicker.optionalusertools.DateChangeListener;\nimport com.github.lgooddatepicker.optionalusertools.DateVetoPolicy;\nimport com.github.lgooddatepicker.zinternaltools.DateChangeEvent;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.text.ParseException;\nimport java.time.Instant;\nimport java.time.LocalDate;\nimport java.time.ZoneId;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.NavigableSet;\nimport java.util.Objects;\nimport java.util.TreeSet;\nimport javax.swing.GroupLayout;\nimport javax.swing.JButton;\nimport javax.swing.JCheckBox;\nimport javax.swing.JComboBox;\nimport javax.swing.JComponent;\nimport javax.swing.JLabel;\nimport javax.swing.JMenu;\nimport javax.swing.JPopupMenu;\nimport javax.swing.JScrollPane;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.data.settings.PriceDataSettings.PriceMode;\nimport net.nikr.eve.jeveasset.data.settings.PriceHistoryDatabase;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.types.EditablePriceType;\nimport net.nikr.eve.jeveasset.data.settings.types.ItemType;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDateChooser;\nimport net.nikr.eve.jeveasset.gui.shared.components.JFixedToolBar;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabSecondary;\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuColumns;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Percent;\nimport net.nikr.eve.jeveasset.i18n.TabsPriceChanges;\n\n\npublic class PriceChangesTab extends JMainTabSecondary {\n\n\tprivate enum PriceChangesAction {\n\t\tPRICE_MODE,\n\t\tOWNED,\n\t\tRESET_DATES\n\t}\n\n\t//GUI\n\tprivate final JComboBox<PriceMode> jPriceMode;\n\tprivate final JDateChooser jFrom;\n\tprivate final JDateChooser jTo;\n\tprivate final JCheckBox jOwned;\n\tprivate final JAutoColumnTable jTable;\n\n\t//Table\n\tprivate final PriceChangeFilterControl filterControl;\n\tprivate final EnumTableFormatAdaptor<PriceChangesTableFormat, PriceChange> tableFormat;\n\tprivate final DefaultEventTableModel<PriceChange> tableModel;\n\tprivate final EventList<PriceChange> eventList;\n\tprivate final FilterList<PriceChange> filterList;\n\tprivate final DefaultEventSelectionModel<PriceChange> selectionModel;\n\n\t//Date\n\tprivate Map<Integer, Long> ownedTypeIDs;\n\tprivate NavigableSet<String> priceChangesDate = new TreeSet<>();\n\n\tpublic static final String NAME = \"pricechange\"; //Not to be changed!\n\n\tpublic PriceChangesTab(final Program program) {\n\t\tsuper(program, NAME, TabsPriceChanges.get().title(), Images.TOOL_PRICE_CHANGE.getIcon(), true);\n\t\tlayout.setAutoCreateGaps(true);\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tJFixedToolBar jToolBar = new JFixedToolBar();\n\n\t\tjPriceMode = new JComboBox<>(PriceMode.values());\n\t\tjPriceMode.setSelectedItem(Settings.get().getPriceDataSettings().getPriceType());\n\t\tjPriceMode.setActionCommand(PriceChangesAction.PRICE_MODE.name());\n\t\tjPriceMode.addActionListener(listener);\n\t\tjPriceMode.setPrototypeDisplayValue(PriceMode.PRICE_BUY_PERCENTILE);\n\t\tjToolBar.addPreferedSize(jPriceMode);\n\n\t\tjToolBar.addSpace(5);\n\t\tjToolBar.addSeparator();\n\t\tjToolBar.addSpace(5);\n\n\t\tJLabel jFromLabel = new JLabel(TabsPriceChanges.get().from());\n\t\tjToolBar.add(jFromLabel);\n\n\t\tjToolBar.addSpace(5);\n\n\t\tjFrom = new JDateChooser(false);\n\t\tjFrom.getSettings().setVetoPolicy(new FromVetoPolicy());\n\t\tjFrom.addDateChangeListener(listener);\n\t\tjToolBar.addPreferedSize(jFrom);\n\n\t\tjToolBar.addSpace(5);\n\t\tjToolBar.addSeparator();\n\t\tjToolBar.addSpace(5);\n\n\t\tJLabel jToLabel = new JLabel(TabsPriceChanges.get().to());\n\t\tjToolBar.add(jToLabel);\n\n\t\tjToolBar.addSpace(5);\n\n\t\tjTo = new JDateChooser(false);\n\t\tjTo.getSettings().setVetoPolicy(new ToVetoPolicy());\n\t\tjTo.addDateChangeListener(listener);\n\t\tjToolBar.addPreferedSize(jTo);\n\n\t\tjToolBar.addSpace(5);\n\t\tjToolBar.addSeparator();\n\t\tjToolBar.addSpace(5);\n\n\t\tJButton jResetDates = new JButton(TabsPriceChanges.get().resetDates(), Images.FILTER_CLEAR.getIcon());\n\t\tjResetDates.setActionCommand(PriceChangesAction.RESET_DATES.name());\n\t\tjResetDates.addActionListener(listener);\n\t\tjToolBar.addButton(jResetDates);\n\n\t\tjToolBar.addSpace(5);\n\t\tjToolBar.addSeparator();\n\t\tjToolBar.addSpace(5);\n\n\t\t\n\t\t\n\t\tjOwned = new JCheckBox(TabsPriceChanges.get().owned(), true);\n\t\tjOwned.setActionCommand(PriceChangesAction.OWNED.name());\n\t\tjOwned.addActionListener(listener);\n\t\tjToolBar.addPreferedSize(jOwned);\n\n\t\t//Table Format\n\t\ttableFormat = TableFormatFactory.priceChangesTableFormat();\n\t\t//Backend\n\t\teventList = EventListManager.create();\n\t\t//Sorting (per column)\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<PriceChange> sortedList = new SortedList<>(eventList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\n\t\t//Filter\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tfilterList = new FilterList<>(sortedList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t//Table Model\n\t\ttableModel = EventModels.createTableModel(filterList, tableFormat);\n\t\t//Table\n\t\tjTable = new JAutoColumnTable(program, tableModel);\n\t\tjTable.setCellSelectionEnabled(true);\n\t\tjTable.setRowSelectionAllowed(true);\n\t\tjTable.setColumnSelectionAllowed(true);\n\t\t//Sorting\n\t\tTableComparatorChooser<PriceChange> comparatorChooser = TableComparatorChooser.install(jTable, sortedList, TableComparatorChooser.MULTIPLE_COLUMN_MOUSE, tableFormat);\n\t\t//Selection Model\n\t\tselectionModel = EventModels.createSelectionModel(filterList);\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\n\t\tjTable.setSelectionModel(selectionModel);\n\n\t\t//Listeners\n\t\tinstallTable(jTable);\n\t\t//Scroll\n\t\tJScrollPane jTableScroll = new JScrollPane(jTable);\n\t\t//Table Filter\n\t\tfilterControl = new PriceChangeFilterControl(sortedList);\n\t\t//Menu\n\t\tinstallTableTool(new PriceChangeTableMenu(), tableFormat, comparatorChooser, tableModel, jTable, filterControl, PriceChange.class);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jToolBar)\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jToolBar, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t}\n\n\t@Override\n\tpublic void updateData() {\n\t\tboolean setDefaults = ownedTypeIDs == null; //First run\n\t\t//Owned\n\t\townedTypeIDs = new HashMap<>();\t\t\n\t\tfor (MyAsset asset : program.getProfileData().getAssetsList()) {\n\t\t\tadd(ownedTypeIDs, asset.getTypeID(), asset.getItemCount());\n\t\t}\n\t\tfor (MyIndustryJob industryJob : program.getProfileData().getIndustryJobsList()) {\n\t\t\tif (industryJob.getItem().isMarketGroup() && industryJob.isNotDeliveredToAssets()) {\n\t\t\t\tadd(ownedTypeIDs, industryJob.getTypeID(), 1L);\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t//Price changes\n\t\tpriceChangesDate = PriceHistoryDatabase.getPriceChangesDate(ownedTypeIDs.keySet());\n\t\t//Defaults\n\t\tif (setDefaults) {\n\t\t\ttry {\n\t\t\t\tjFrom.setDate(getDate(priceChangesDate.first()));\n\t\t\t} catch (ParseException ex) {\n\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tjTo.setDate(getDate(priceChangesDate.last()));\n\t\t\t} catch (ParseException ex) {\n\n\t\t\t}\n\t\t}\n\t\t//Update table data\n\t\tupdateTable();\n\t}\n\n\tprivate void updateTable() {\n\t\tPriceMode priceMode = jPriceMode.getItemAt(jPriceMode.getSelectedIndex());\n\t\tboolean ownedOnly = jOwned.isSelected();\n\t\ttry {\n\t\t\teventList.getReadWriteLock().writeLock().lock();\n\t\t\teventList.clear();\n\t\t\teventList.addAll(PriceHistoryDatabase.getPriceChanges(ownedTypeIDs, ownedOnly, priceMode, getFromDate(), getToDate()));\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t}\n\n\t@Override\n\tpublic void clearData() {\n\t\ttry {\n\t\t\teventList.getReadWriteLock().writeLock().lock();\n\t\t\teventList.clear();\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t}\n\n\t@Override\n\tpublic void updateCache() { }\n\n\t@Override\n\tpublic Collection<LocationType> getLocations() {\n\t\treturn new ArrayList<>(); //No Location\n\t}\n\n\t\tprivate void add(Map<Integer, Long> priceTypeIDs, Integer typeID, Long count) {\n\t\tLong previous = priceTypeIDs.getOrDefault(typeID, 0L);\n\t\tpriceTypeIDs.put(typeID, previous + count);\n\t}\n\n\tprivate Date getFromDate() {\n\t\treturn getDate(jFrom.getDate());\n\t}\n\n\tprivate Date getToDate() {\n\t\treturn getDate(jTo.getDate());\n\t}\n\n\tprivate String getDateString(Date date) {\n\t\treturn PriceHistoryDatabase.DATE.format(date);\n\t}\n\n\tprivate static Date getDate(String date) throws ParseException {\n\t\treturn PriceHistoryDatabase.DATE.parse(date);\n\t}\n\n\tprivate Date getDate(LocalDate date) {\n\t\tif (date == null) {\n\t\t\treturn null;\n\t\t}\n\t\tInstant instant = date.atTime(12, 0, 0, 0).atZone(ZoneId.of(\"GMT\")).toInstant(); //End of day - GMT\n\t\treturn Date.from(instant);\n\t}\n\n\tprivate class PriceChangeTableMenu implements TableMenu<PriceChange> {\n\t\t@Override\n\t\tpublic MenuData<PriceChange> getMenuData() {\n\t\t\treturn new MenuData<>(selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getFilterMenu() {\n\t\t\treturn filterControl.getMenu(jTable, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getColumnMenu() {\n\t\t\treturn new JMenuColumns<>(program, tableFormat, tableModel, jTable, NAME);\n\t\t}\n\n\t\t@Override\n\t\tpublic void addInfoMenu(JPopupMenu jPopupMenu) {\n\t\t\t//JMenuInfo.infoItem(jPopupMenu, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic void addToolMenu(JComponent jComponent) { }\n\t}\n\n\tprivate class ListenerClass implements ActionListener, DateChangeListener {\n\n\t\t@Override\n\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\tif (e.getActionCommand().equals(PriceChangesAction.PRICE_MODE.name())) {\n\t\t\t\tupdateTable();\n\t\t\t} else if (e.getActionCommand().equals(PriceChangesAction.OWNED.name())) {\n\t\t\t\tupdateTable();\n\t\t\t} else if (e.getActionCommand().equals(PriceChangesAction.RESET_DATES.name())) {\n\t\t\t\ttry {\n\t\t\t\t\tjFrom.setDate(PriceHistoryDatabase.DATE.parse(priceChangesDate.first()));\n\t\t\t\t} catch (ParseException ex) {\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tjTo.setDate(PriceHistoryDatabase.DATE.parse(priceChangesDate.last()));\n\t\t\t\t} catch (ParseException ex) {\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void dateChanged(DateChangeEvent event) {\n\t\t\tupdateTable();\n\t\t}\n\t}\n\n\tprivate class PriceChangeFilterControl extends FilterControl<PriceChange> {\n\n\t\tpublic PriceChangeFilterControl(EventList<PriceChange> exportEventList) {\n\t\t\tsuper(program.getMainWindow().getFrame(),\n\t\t\t\t\tNAME,\n\t\t\t\t\ttableFormat,\n\t\t\t\t\teventList,\n\t\t\t\t\texportEventList,\n\t\t\t\t\tfilterList\n\t\t\t\t\t);\n\t\t}\n\n\t\t@Override\n\t\tpublic void saveSettings(final String msg) {\n\t\t\tprogram.saveSettings(\"Price Change Table: \" + msg); //Save Asset Filters and Export Settings\n\t\t}\n\t}\n\n\tpublic class FromVetoPolicy implements DateVetoPolicy {\n\n\t\t@Override\n\t\tpublic boolean isDateAllowed(LocalDate localDate) {\n\t\t\tDate date = getDate(localDate);\n\t\t\treturn priceChangesDate.contains(getDateString(date))\n\t\t\t\t\t&& getToDate().after(date);\n\t\t}\n\t}\n\n\tpublic class ToVetoPolicy implements DateVetoPolicy {\n\n\t\t@Override\n\t\tpublic boolean isDateAllowed(LocalDate localDate) {\n\t\t\tDate date = getDate(localDate);\n\t\t\treturn priceChangesDate.contains(getDateString(date))\n\t\t\t\t\t&& date.after(getFromDate());\n\t\t}\n\t}\n\n\tpublic static class PriceChange implements ItemType, EditablePriceType, Comparable<PriceChange> {\n\n\t\tprivate final int typeID;\n\t\tprivate final Item item;\n\t\tprivate final Long count;\n\t\tprivate double priceFrom;\n\t\tprivate double priceTo;\n\t\t\n\n\t\tpublic PriceChange(int typeID, Item item, Long count) {\n\t\t\tthis.typeID = typeID;\n\t\t\tthis.item = item;\n\t\t\tthis.count = count;\n\t\t}\n\n\t\tpublic int getTypeID() {\n\t\t\treturn typeID;\n\t\t}\n\n\t\tpublic Long getCount() {\n\t\t\treturn count;\n\t\t}\n\n\t\tpublic double getPriceFrom() {\n\t\t\treturn priceFrom;\n\t\t}\n\n\t\tpublic void setPriceFrom(double priceFrom) {\n\t\t\tthis.priceFrom = priceFrom;\n\t\t}\n\n\t\tpublic double getPriceTo() {\n\t\t\treturn priceTo;\n\t\t}\n\n\t\tpublic void setPriceTo(double priceTo) {\n\t\t\tthis.priceTo = priceTo;\n\t\t}\n\n\t\tpublic double getChange() {\n\t\t\treturn getPriceTo() - getPriceFrom();\n\t\t}\n\n\t\tpublic Percent getChangePercent() {\n\t\t\tif (getPriceFrom() > 0 && getPriceTo() > 0) {\n\t\t\t\treturn Percent.create(getPriceTo() / getPriceFrom());\n\t\t\t} else if (getPriceFrom() == 0 && getPriceTo() == 0) {\n\t\t\t\treturn Percent.create(0);\n\t\t\t} else if (getPriceFrom() == 0 && getPriceTo() > 0) {\n\t\t\t\treturn Percent.create(1);\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tpublic double getTotal() {\n\t\t\treturn getPriceTo() * getItemCount() - getPriceFrom() * getItemCount();\n\t\t}\n\n\t\t@Override\n\t\tpublic Item getItem() {\n\t\t\treturn item;\n\t\t}\n\n\t\t@Override\n\t\tpublic long getItemCount() {\n\t\t\treturn count;\n\t\t}\n\n\t\t@Override\n\t\tpublic void setDynamicPrice(double price) { }\n\n\t\t@Override\n\t\tpublic boolean isBPC() {\n\t\t\treturn false;\n\t\t}\n\n\t\t@Override\n\t\tpublic Double getDynamicPrice() {\n\t\t\treturn getPriceFrom();\n\t\t}\n\n\t\t@Override\n\t\tpublic int compareTo(PriceChange o) {\n\t\t\treturn item.getTypeName().compareTo(o.item.getTypeName());\n\t\t}\n\n\t\t@Override\n\t\tpublic int hashCode() {\n\t\t\tint hash = 7;\n\t\t\thash = 53 * hash + Objects.hashCode(this.item.getTypeName());\n\t\t\treturn hash;\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean equals(Object obj) {\n\t\t\tif (this == obj) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (obj == null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (getClass() != obj.getClass()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfinal PriceChange other = (PriceChange) obj;\n\t\t\treturn Objects.equals(this.item.getTypeName(), other.item.getTypeName());\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/prices/PriceChangesTableFormat.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.prices;\n\nimport java.util.Comparator;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Percent;\nimport net.nikr.eve.jeveasset.gui.tabs.prices.PriceChangesTab.PriceChange;\nimport net.nikr.eve.jeveasset.i18n.TabsPriceChanges;\n\n\npublic enum PriceChangesTableFormat implements EnumTableColumn<PriceChange> {\n\tNAME(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsPriceChanges.get().columnName();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final PriceChange from) {\n\t\t\treturn from.getItem().getTypeName();\n\t\t}\n\t},\n\tGROUP(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsPriceChanges.get().columnGroup();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final PriceChange from) {\n\t\t\treturn from.getItem().getGroup();\n\t\t}\n\t},\n\tCATEGORY(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsPriceChanges.get().columnCategory();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final PriceChange from) {\n\t\t\treturn from.getItem().getCategory();\n\t\t}\n\t},\n\tCOUNT(Long.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsPriceChanges.get().columnCount();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsPriceChanges.get().columnCountToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final PriceChange from) {\n\t\t\treturn from.getItemCount();\n\t\t}\n\t},\n\tPRICE_FROM(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsPriceChanges.get().columnPriceFrom();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final PriceChange from) {\n\t\t\treturn from.getPriceFrom();\n\t\t}\n\t},\n\tPRICE_TO(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsPriceChanges.get().columnPriceTo();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final PriceChange from) {\n\t\t\treturn from.getPriceTo();\n\t\t}\n\t},\n\tPRICE_CHANGE_PERCENT(Percent.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsPriceChanges.get().columnChangePercent();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsPriceChanges.get().columnChangePercentToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final PriceChange from) {\n\t\t\treturn from.getChangePercent();\n\t\t}\n\t},\n\tPRICE_CHANGE(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsPriceChanges.get().columnChange();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsPriceChanges.get().columnChangeToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final PriceChange from) {\n\t\t\treturn from.getChange();\n\t\t}\n\t},\n\tPRICE_TOTAL(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsPriceChanges.get().columnTotal();\n\t\t}\n\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsPriceChanges.get().columnTotalToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final PriceChange from) {\n\t\t\treturn from.getTotal();\n\t\t}\n\t},\n\t;\n\n\tprivate final Class<?> type;\n\tprivate final Comparator<?> comparator;\n\n\tprivate PriceChangesTableFormat(final Class<?> type) {\n\t\tthis.type = type;\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\n\t}\n\t@Override\n\tpublic Class<?> getType() {\n\t\treturn type;\n\t}\n\t@Override\n\tpublic Comparator<?> getComparator() {\n\t\treturn comparator;\n\t}\n\t@Override\n\tpublic String toString() {\n\t\treturn getColumnName();\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/prices/PriceHistoryTab.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.prices;\r\n\r\nimport com.github.lgooddatepicker.optionalusertools.DateChangeListener;\r\nimport com.github.lgooddatepicker.zinternaltools.DateChangeEvent;\r\nimport java.awt.Color;\r\nimport java.awt.Paint;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.awt.event.MouseEvent;\r\nimport java.awt.event.MouseListener;\r\nimport java.text.ParseException;\r\nimport java.time.Instant;\r\nimport java.time.LocalDate;\r\nimport java.time.ZoneId;\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\nimport java.util.Collections;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Objects;\r\nimport java.util.Set;\r\nimport java.util.TreeMap;\r\nimport java.util.TreeSet;\r\nimport java.util.concurrent.ExecutionException;\r\nimport javax.swing.ButtonGroup;\r\nimport javax.swing.DefaultListModel;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JCheckBoxMenuItem;\r\nimport javax.swing.JComboBox;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JMenuItem;\r\nimport javax.swing.JOptionPane;\r\nimport javax.swing.JRadioButtonMenuItem;\r\nimport javax.swing.JScrollPane;\r\nimport javax.swing.JSeparator;\r\nimport javax.swing.SwingUtilities;\r\nimport javax.swing.SwingWorker;\r\nimport javax.swing.event.ListSelectionEvent;\r\nimport javax.swing.event.ListSelectionListener;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\r\nimport net.nikr.eve.jeveasset.data.settings.PriceDataSettings.PriceMode;\r\nimport net.nikr.eve.jeveasset.data.settings.PriceHistoryDatabase;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\r\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel;\r\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel.Progress;\r\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel.UpdateType;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.StringComparators;\r\nimport net.nikr.eve.jeveasset.gui.shared.ColorUtil;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\nimport net.nikr.eve.jeveasset.gui.shared.JFreeChartUtil;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JAutoCompleteDialog;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JDateChooser;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JDropDownButton;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JLockWindow;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabSecondary;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JMultiSelectionList;\r\nimport net.nikr.eve.jeveasset.gui.tabs.tracker.QuickDate;\r\nimport net.nikr.eve.jeveasset.i18n.TabsPriceHistory;\r\nimport net.nikr.eve.jeveasset.io.online.ZkillboardPricesHistoryGetter;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\nimport org.jfree.chart.ChartPanel;\r\nimport org.jfree.chart.JFreeChart;\r\nimport org.jfree.chart.axis.DateAxis;\r\nimport org.jfree.chart.axis.LogarithmicAxis;\r\nimport org.jfree.chart.axis.NumberAxis;\r\nimport org.jfree.chart.labels.XYToolTipGenerator;\r\nimport org.jfree.chart.plot.DefaultDrawingSupplier;\r\nimport org.jfree.chart.plot.XYPlot;\r\nimport org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;\r\nimport org.jfree.data.time.SimpleTimePeriod;\r\nimport org.jfree.data.time.TimePeriodValues;\r\nimport org.jfree.data.time.TimePeriodValuesCollection;\r\nimport org.jfree.data.xy.XYDataset;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class PriceHistoryTab extends JMainTabSecondary {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(PriceHistoryTab.class);\r\n\r\n\tprivate enum PriceHistoryAction {\r\n\t\tQUICK_DATE,\r\n\t\tSOURCE,\r\n\t\tADD_ITEM,\r\n\t\tCLEAR_ITEMS,\r\n\t\tREMOVE_ITEMS,\r\n\t\tSAVE,\r\n\t\tMANAGE,\r\n\t\tINCLUDE_ZERO,\r\n\t\tLOGARITHMIC\r\n\t}\r\n\r\n\tprivate enum PriceHistorySource {\r\n\t\tZKILLBOARD() {\r\n\t\t\t@Override\r\n\t\t\tString getText() {\r\n\t\t\t\treturn TabsPriceHistory.get().sourcezKillboard();\r\n\t\t\t}\r\n\t\t},\r\n\t\tJEVEASSETS() {\r\n\t\t\t@Override\r\n\t\t\tString getText() {\r\n\t\t\t\treturn TabsPriceHistory.get().sourcejEveAssets();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\r\n\t\tabstract String getText();\r\n\r\n\t\t@Override\r\n\t\tpublic String toString() {\r\n\t\t\treturn getText();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate final int PANEL_WIDTH_MINIMUM = 215;\r\n\tpublic final int MAXIMUM_SHOWN = 50;\r\n\r\n\t//GUI\r\n\tprivate final JComboBox<PriceHistorySource> jSource;\r\n\tprivate final JComboBox<PriceMode> jPriceType;\r\n\tprivate final JComboBox<QuickDate> jQuickDate;\r\n\tprivate final JDateChooser jFrom;\r\n\tprivate final JDateChooser jTo;\r\n\tprivate final JDropDownButton jEdit;\r\n\tprivate final JMenuItem jRemove;\r\n\tprivate final JMenuItem jClear;\r\n\tprivate final JButton jSave;\r\n\tprivate final JDropDownButton jLoad;\r\n\tprivate final JMenuItem jManage;\r\n\tprivate final JMultiSelectionList<Item> jItems;\r\n\tprivate final JCheckBoxMenuItem jIncludeZero;\r\n\tprivate final JRadioButtonMenuItem jLogarithmic;\r\n\r\n\t//Graph\r\n\tprivate final JFreeChart jFreeChart;\r\n\tprivate final ChartPanel jChartPanel;\r\n\tprivate final XYLineAndShapeRenderer renderer;\r\n\tprivate final LogarithmicAxis rangeLogarithmicAxis;\r\n\tprivate final DateAxis domainAxis;\r\n\tprivate final NumberAxis rangeLinearAxis;\r\n\r\n\t//Dialog\r\n\tprivate final JAutoCompleteDialog<Item> jAddItemDialog;\r\n\tprivate final JAutoCompleteDialog<String> jSaveItemsDialog;\r\n\tprivate final JItemsManagerDialog jItemsManagerDialog;\r\n\tprivate final JLockWindow jLockWindow;\r\n\r\n\t//Listener\r\n\tprivate final ListenerClass listener = new ListenerClass();\r\n\r\n\t//Data\r\n\tprivate final DefaultListModel<Item> itemsModel;\r\n\tprivate final List<Item> shownOrder = new ArrayList<>();\r\n\tprivate final Set<Integer> shownTypeIDs = new HashSet<>();\r\n\tprivate final Map<Item, Set<PriceHistoryData>> shownData = new TreeMap<>();\r\n\tprivate final Map<Item, TimePeriodValues> series = new HashMap<>();\r\n\tprivate final Map<Item, Double> seriesMax = new HashMap<>();\r\n\tprivate final TimePeriodValuesCollection dataset = new TimePeriodValuesCollection();\r\n\r\n\t//Settings ToDo\r\n\tprivate Date fromDate = null;\r\n\tprivate Date toDate = null;\r\n\tpublic static final String NAME = \"pricehistory\"; //Not to be changed!\r\n\r\n\r\n\tpublic PriceHistoryTab(Program program) {\r\n\t\tsuper(program, NAME, TabsPriceHistory.get().title(), Images.TOOL_PRICE_HISTORY.getIcon(), true);\r\n\r\n\t\tjLockWindow = new JLockWindow(program.getMainWindow().getFrame());\r\n\r\n\t\tjSource = new JComboBox<>(PriceHistorySource.values());\r\n\t\tjSource.setActionCommand(PriceHistoryAction.SOURCE.name());\r\n\t\tjSource.addActionListener(listener);\r\n\r\n\t\tjPriceType = new JComboBox<>(PriceMode.values());\r\n\t\tjPriceType.setSelectedItem(Settings.get().getPriceDataSettings().getPriceType());\r\n\t\tjPriceType.setActionCommand(PriceHistoryAction.SOURCE.name());\r\n\t\tjPriceType.addActionListener(listener);\r\n\t\tjPriceType.setEnabled(false);\r\n\r\n\t\tJSeparator jDateSeparator = new JSeparator();\r\n\r\n\t\tjQuickDate = new JComboBox<>(QuickDate.values());\r\n\t\tjQuickDate.setActionCommand(PriceHistoryAction.QUICK_DATE.name());\r\n\t\tjQuickDate.addActionListener(listener);\r\n\r\n\t\tJLabel jFromLabel = new JLabel(TabsPriceHistory.get().from());\r\n\t\tjFrom = new JDateChooser(true);\r\n\t\tif (fromDate != null) {\r\n\t\t\tjFrom.setDate(fromDate);\r\n\t\t}\r\n\t\tjFrom.addDateChangeListener(listener);\r\n\r\n\t\tJLabel jToLabel = new JLabel(TabsPriceHistory.get().to());\r\n\t\tjTo = new JDateChooser(true);\r\n\t\tif (toDate != null) {\r\n\t\tjTo.setDate(toDate);\r\n\t\t}\r\n\t\tjTo.addDateChangeListener(listener);\r\n\r\n\t\tjAddItemDialog = new JAutoCompleteDialog<>(program, TabsPriceHistory.get().addTitle(), Images.TOOL_PRICE_HISTORY.getImage(), null, true, JAutoCompleteDialog.ITEM_OPTIONS);\r\n\t\tjAddItemDialog.updateData(StaticData.get().getItems().values());\r\n\r\n\t\tjSaveItemsDialog = new JAutoCompleteDialog<>(program, TabsPriceHistory.get().saveTitle(), Images.TOOL_PRICE_HISTORY.getImage(), null, false, JAutoCompleteDialog.STRING_OPTIONS);\r\n\t\tjItemsManagerDialog = new JItemsManagerDialog(program, this);\r\n\r\n\t\tjEdit = new JDropDownButton(Images.EDIT_EDIT.getIcon());\r\n\t\tjEdit.setToolTipText(TabsPriceHistory.get().edit());\r\n\r\n\t\tJMenuItem jAdd = new JMenuItem(TabsPriceHistory.get().add(), Images.EDIT_ADD.getIcon());\r\n\t\tjAdd.setActionCommand(PriceHistoryAction.ADD_ITEM.name());\r\n\t\tjAdd.addActionListener(listener);\r\n\t\tjEdit.add(jAdd);\r\n\r\n\t\tjRemove = new JMenuItem(TabsPriceHistory.get().remove(), Images.EDIT_DELETE.getIcon());\r\n\t\tjRemove.setActionCommand(PriceHistoryAction.REMOVE_ITEMS.name());\r\n\t\tjRemove.addActionListener(listener);\r\n\t\tjRemove.setEnabled(false);\r\n\t\tjEdit.add(jRemove);\r\n\r\n\t\tjClear = new JMenuItem(TabsPriceHistory.get().clear(), Images.MISC_EXIT.getIcon());\r\n\t\tjClear.setActionCommand(PriceHistoryAction.CLEAR_ITEMS.name());\r\n\t\tjClear.addActionListener(listener);\r\n\t\tjClear.setEnabled(false);\r\n\t\tjEdit.add(jClear);\r\n\r\n\t\tjSave = new JButton(Images.FILTER_SAVE.getIcon());\r\n\t\tjSave.setToolTipText(TabsPriceHistory.get().save());\r\n\t\tjSave.setActionCommand(PriceHistoryAction.SAVE.name());\r\n\t\tjSave.setEnabled(false);\r\n\t\tjSave.addActionListener(listener);\r\n\r\n\t\tjLoad = new JDropDownButton(Images.FILTER_LOAD.getIcon());\r\n\r\n\t\tjManage = new JMenuItem(TabsPriceHistory.get().manage(), Images.DIALOG_SETTINGS.getIcon());\r\n\t\tjManage.setActionCommand(PriceHistoryAction.MANAGE.name());\r\n\t\tjManage.addActionListener(listener);\r\n\r\n\t\titemsModel = new DefaultListModel<>();\r\n\t\tjItems = new JMultiSelectionList<>(itemsModel);\r\n\t\tjItems.getSelectionModel().addListSelectionListener(listener);\r\n\t\tjItems.addMouseListener(listener);\r\n\t\tJScrollPane jOwnersScroll = new JScrollPane(jItems);\r\n\r\n\t\tJDropDownButton jSettings = new JDropDownButton(Images.DIALOG_SETTINGS.getIcon());\r\n\r\n\t\tjIncludeZero = new JCheckBoxMenuItem(TabsPriceHistory.get().includeZero());\r\n\t\tjIncludeZero.setSelected(true);\r\n\t\tjIncludeZero.setActionCommand(PriceHistoryAction.INCLUDE_ZERO.name());\r\n\t\tjIncludeZero.addActionListener(listener);\r\n\t\tjSettings.add(jIncludeZero);\r\n\r\n\t\tjSettings.addSeparator();\r\n\r\n\t\tButtonGroup buttonGroup = new ButtonGroup();\r\n\r\n\t\tJRadioButtonMenuItem jLinear = new JRadioButtonMenuItem(TabsPriceHistory.get().scaleLinear());\r\n\t\tjLinear.setSelected(true);\r\n\t\tjLinear.setActionCommand(PriceHistoryAction.LOGARITHMIC.name());\r\n\t\tjLinear.addActionListener(listener);\r\n\t\tjSettings.add(jLinear);\r\n\t\tbuttonGroup.add(jLinear);\r\n\r\n\t\tjLogarithmic = new JRadioButtonMenuItem(TabsPriceHistory.get().scaleLogarithmic());\r\n\t\tjLogarithmic.setSelected(false);\r\n\t\tjLogarithmic.setActionCommand(PriceHistoryAction.LOGARITHMIC.name());\r\n\t\tjLogarithmic.addActionListener(listener);\r\n\t\tjSettings.add(jLogarithmic);\r\n\t\tbuttonGroup.add(jLogarithmic);\r\n\r\n\t\tdomainAxis = JFreeChartUtil.createDateAxis();\r\n\t\trangeLogarithmicAxis = JFreeChartUtil.createLogarithmicAxis(true);\r\n\t\trangeLinearAxis = JFreeChartUtil.createNumberAxis(true);\r\n\r\n\t\trenderer = JFreeChartUtil.createRenderer();\r\n\t\trenderer.setDefaultToolTipGenerator(new XYToolTipGenerator() {\r\n\t\t\t@Override\r\n\t\t\tpublic String generateToolTip(XYDataset dataset, int series, int item)\t{\r\n\t\t\t\tDate date = new Date(dataset.getX(series, item).longValue());\r\n\t\t\t\tNumber isk = dataset.getY(series, item);\r\n\t\t\t\treturn TabsPriceHistory.get().graphToolTip(dataset.getSeriesKey(series), Formatter.iskFormat(isk), Formatter.columnDateOnly(date));\r\n\t\t\t}\r\n\t\t});\r\n\t\tXYPlot plot = JFreeChartUtil.createPlot(dataset, domainAxis, rangeLinearAxis, renderer);\r\n\t\tjFreeChart = JFreeChartUtil.createChart(plot);\r\n\t\tjChartPanel = JFreeChartUtil.createChartPanel(jFreeChart);\r\n\r\n\t\tint gapWidth = 5;\r\n\t\tint labelWidth = Math.max(jFromLabel.getPreferredSize().width, jToLabel.getPreferredSize().width);\r\n\t\tint panelWidth = PANEL_WIDTH_MINIMUM;\r\n\t\tpanelWidth = Math.max(panelWidth, jFrom.getPreferredSize().width + labelWidth + gapWidth);\r\n\t\tpanelWidth = Math.max(panelWidth, jTo.getPreferredSize().width + labelWidth + gapWidth);\r\n\t\tint dateWidth = panelWidth - labelWidth - gapWidth;\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jChartPanel)\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jSource, panelWidth, panelWidth, panelWidth)\r\n\t\t\t\t\t.addComponent(jPriceType, panelWidth, panelWidth, panelWidth)\r\n\t\t\t\t\t.addComponent(jDateSeparator, panelWidth, panelWidth, panelWidth)\r\n\t\t\t\t\t.addComponent(jQuickDate, panelWidth, panelWidth, panelWidth)\r\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t\t.addComponent(jFromLabel, labelWidth, labelWidth, labelWidth)\r\n\t\t\t\t\t\t\t.addComponent(jToLabel, labelWidth, labelWidth, labelWidth)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.addGap(gapWidth)\r\n\t\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t\t.addComponent(jFrom, dateWidth, dateWidth, dateWidth)\r\n\t\t\t\t\t\t\t.addComponent(jTo, dateWidth, dateWidth, dateWidth)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t\t.addComponent(jEdit)\r\n\t\t\t\t\t\t.addComponent(jSave)\r\n\t\t\t\t\t\t.addComponent(jLoad)\r\n\t\t\t\t\t\t.addComponent(jSettings)\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addComponent(jOwnersScroll, panelWidth, panelWidth, panelWidth)\r\n\t\t\t\t)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createParallelGroup()\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addComponent(jChartPanel)\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addComponent(jSource, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jPriceType, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jDateSeparator, 3, 3, 3)\r\n\t\t\t\t\t.addComponent(jQuickDate, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t.addComponent(jFromLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t\t.addComponent(jFrom, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t.addComponent(jToLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t\t.addComponent(jTo, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t.addComponent(jEdit, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t\t.addComponent(jSave, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t\t.addComponent(jLoad, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t\t.addComponent(jSettings, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addComponent(jOwnersScroll, 70, 70, Integer.MAX_VALUE)\r\n\t\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void updateData() {\r\n\t\tsetItems(new HashSet<>(shownTypeIDs)); //Copy\r\n\t\tupdateSaved();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void repaintTable() {\r\n\t\tupdateSeries();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void updateCache() { }\r\n\r\n\t@Override\r\n\tpublic void clearData() { }\r\n\r\n\t@Override\r\n\tpublic Collection<LocationType> getLocations() {\r\n\t\treturn new ArrayList<>(); //No Location\r\n\t}\r\n\r\n\tpublic void addItems(Set<Integer> typeIDs) {\r\n\t\tSet<Integer> total = new HashSet<>();\r\n\t\ttotal.addAll(typeIDs);\r\n\t\ttotal.addAll(shownTypeIDs);\r\n\t\tif (invalid(total)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tshowItems(typeIDs);\r\n\t}\r\n\r\n\tpublic void setItems(Set<Integer> typeIDs) {\r\n\t\tif (invalid(typeIDs)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tjItems.getSelectionModel().removeListSelectionListener(listener);\r\n\t\tclearItems();\r\n\t\tjItems.getSelectionModel().addListSelectionListener(listener);\r\n\t\tshowItems(typeIDs);\r\n\t}\r\n\r\n\tprivate boolean invalid(Collection<Integer> typeIDs) {\r\n\t\tif (typeIDs.size() > MAXIMUM_SHOWN) {\r\n\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), TabsPriceHistory.get().maxItemsMsg(MAXIMUM_SHOWN), TabsPriceHistory.get().title(), JOptionPane.PLAIN_MESSAGE);\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (program.getStatusPanel().updateing(UpdateType.PRICE_HISTORY)) {\r\n\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), TabsPriceHistory.get().updatingMsg(), TabsPriceHistory.get().updatingTitle(), JOptionPane.PLAIN_MESSAGE, Images.LINK_ZKILLBOARD_32.getIcon());\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate void addItem() {\r\n\t\tSet<Integer> total = new HashSet<>();\r\n\t\ttotal.add(Integer.MAX_VALUE); // + 1\r\n\t\ttotal.addAll(shownTypeIDs);\r\n\t\tif (invalid(total)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tItem item = jAddItemDialog.show();\r\n\t\tif (item == null) {\r\n\t\t\treturn; //Cancelled\r\n\t\t}\r\n\t\tshowItems(Collections.singleton(item.getTypeID()));\r\n\t}\r\n\r\n\tprivate void showItems(Set<Integer> typeIDs) {\r\n\t\tif (program.getStatusPanel().updateing(UpdateType.PRICE_HISTORY)) {\r\n\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), TabsPriceHistory.get().updatingMsg(), TabsPriceHistory.get().updatingTitle(), JOptionPane.PLAIN_MESSAGE, Images.LINK_ZKILLBOARD_32.getIcon());\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tswitch(getPriceHistorySource()) {\r\n\t\t\tcase ZKILLBOARD:\r\n\t\t\t\tjPriceType.setEnabled(false);\r\n\t\t\t\tshowZKillboard(typeIDs);\r\n\t\t\t\tbreak;\r\n\t\t\tcase JEVEASSETS:\r\n\t\t\t\tjPriceType.setEnabled(true);\r\n\t\t\t\tshowPriceData(typeIDs);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void showPriceData(Set<Integer> typeIDs) {\r\n\t\taddNewItemsLocked(PriceHistoryDatabase.getPriceData(typeIDs, jPriceType.getItemAt(jPriceType.getSelectedIndex())));\r\n\t}\r\n\r\n\tprivate void showZKillboard(Set<Integer> typeIDs) {\r\n\t\tif (typeIDs == null || typeIDs.isEmpty()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t//Items to update\r\n\t\tSet<Integer> update = new HashSet<>(typeIDs);\r\n\t\t//Items to load\r\n\t\tSet<Integer> show = new HashSet<>(typeIDs);\r\n\t\t//Up-to-date items in the database\r\n\t\tSet<Integer> blacklist = PriceHistoryDatabase.getZBlacklist();\r\n\t\tSet<Integer> current = PriceHistoryDatabase.getZKillboardUpdated();\r\n\t\tcurrent.addAll(blacklist); //Do not update blacklisted items, but, do add them to the GUI\r\n\t\tupdate.removeAll(current); //Remove up-to-date items\r\n\t\tupdate.removeAll(shownTypeIDs); //Remove already in the GUI\r\n\t\tif (!update.isEmpty()) { //Update from zKillboard API\r\n\t\t\tsetUpdating(true);\r\n\t\t\tGetItems addItem = new GetItems(update);\r\n\t\t\taddItem.execute();\r\n\t\t}\r\n\t\tshow.retainAll(current); //Keep up-to-date items\r\n\t\tshow.removeAll(shownTypeIDs);//Remove already in the GUI\r\n\t\tif (!show.isEmpty()) { //Load from Database\r\n\t\t\tMap<Item, Set<PriceHistoryData>> load = PriceHistoryDatabase.getZKillboard(show);\r\n\t\t\tif (!load.isEmpty()) {\r\n\t\t\t\taddNewItemsLocked(load);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void addNewItemsLocked(Map<Item, Set<PriceHistoryData>> map) {\r\n\t\tjLockWindow.show(NAME, new JLockWindow.LockWorker() {\r\n\t\t\t@Override\r\n\t\t\tpublic void task() {\r\n\t\t\t\tcreateSeries(map);\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic void gui() {\r\n\t\t\t\tupdateGUI(map);\r\n\t\t\t\tupdateSeries();\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic void hidden() { }\r\n\t\t});\r\n\t}\r\n\r\n\tprivate void createSeries(Map<Item, Set<PriceHistoryData>> map) {\r\n\t\tif (map == null || map.isEmpty()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tshownData.putAll(map);\r\n\t\tDate from = getFromDate();\r\n\t\tDate to = getToDate();\r\n\t\tfor (Map.Entry<Item, Set<PriceHistoryData>> entry : map.entrySet()) {\r\n\t\t\tItem item = entry.getKey();\r\n\t\t\t//dataset\r\n\t\t\tshownOrder.add(item);\r\n\t\t\tshownTypeIDs.add(item.getTypeID());\r\n\t\t\tcreateSeries(from, to, item, entry.getValue());\r\n\t\t}\r\n\t\tCollections.sort(shownOrder);\r\n\t}\r\n\r\n\tprivate void updateGUI(Map<Item, Set<PriceHistoryData>> map) {\r\n\t\tif (map == null || map.isEmpty()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tjItems.getSelectionModel().removeListSelectionListener(listener);\r\n\t\t//List<Item> items = new ArrayList<>(map.keySet());\r\n\t\tfor (int index = 0; index < shownOrder.size(); index++) {\r\n\t\t\tItem item = shownOrder.get(index);\r\n\t\t\tif (!map.containsKey(item)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\t//GUI\r\n\t\t\titemsModel.add(index, item);\r\n\t\t\tjItems.addSelection(index, true);\r\n\t\t}\r\n\t\tjItems.getSelectionModel().addListSelectionListener(listener);\r\n\t}\r\n\r\n\tprivate void clearItems() {\r\n\t\tshownData.clear();\r\n\t\tshownOrder.clear();\r\n\t\tshownTypeIDs.clear();\r\n\t\tseriesMax.clear();\r\n\t\tseries.clear();\r\n\t\t//Remove All\r\n\t\twhile (dataset.getSeriesCount() != 0) {\r\n\t\t\tdataset.removeSeries(0);\r\n\t\t}\r\n\t\titemsModel.clear(); //Must be done after clearing the dataset\r\n\t}\r\n\r\n\tprivate void removeItem(Item item) {\r\n\t\tremoveItems(Collections.singletonList(item));\r\n\t}\r\n\r\n\tprivate void removeItems(Collection<Item> items) {\r\n\t\tif (items == null || items.isEmpty()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tshownData.keySet().removeAll(items);\r\n\t\tshownOrder.removeAll(items);\r\n\t\tseriesMax.keySet().removeAll(items);\r\n\t\tseries.keySet().removeAll(items);\r\n\t\tjItems.getSelectionModel().removeListSelectionListener(listener);\r\n\t\tfor (Item item : items) {\r\n\t\t\tshownTypeIDs.remove(item.getTypeID());\r\n\t\t\titemsModel.removeElement(item);\r\n\t\t}\r\n\t\tjItems.getSelectionModel().addListSelectionListener(listener);\r\n\t\tupdateSeries();\r\n\t}\r\n\r\n\tprivate PriceHistorySource getPriceHistorySource() {\r\n\t\treturn jSource.getItemAt(jSource.getSelectedIndex());\r\n\t}\r\n\r\n\tprivate void createData() {\r\n\t\t//dataset\r\n\t\tDate from = getFromDate();\r\n\t\tDate to = getToDate();\r\n\t\tfor (Map.Entry<Item, Set<PriceHistoryData>> entry : shownData.entrySet()) {\r\n\t\t\tcreateSeries(from, to, entry.getKey(), entry.getValue());\r\n\t\t}\r\n\t\tupdateSeries();\r\n\t}\r\n\r\n\tprivate void createSeries(Date from, Date to, Item item, Set<PriceHistoryData> set) {\r\n\t\tTimePeriodValues values = new TimePeriodValues(item.getTypeName());\r\n\t\tdouble max = 0;\r\n\t\tfor (PriceHistoryData priceHistoryData : set) {\r\n\t\t\tDate date = priceHistoryData.getDate();\r\n\t\t\tif ((from != null && !date.after(from)) || (to != null && !date.before(to))) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tdouble price = priceHistoryData.getPrice();\r\n\t\t\tmax = Math.max(max, price);\r\n\t\t\tvalues.add(priceHistoryData.getTimePeriod(), price);\r\n\t\t}\r\n\t\tseriesMax.put(item, max);\r\n\t\tseries.put(item, values);\r\n\t}\r\n\r\n\tprivate void updateSeries() {\r\n\t\t//Remove All\r\n\t\twhile (dataset.getSeriesCount() != 0) {\r\n\t\t\tdataset.removeSeries(0);\r\n\t\t}\r\n\t\t//Add all\r\n\t\tboolean bright = ColorUtil.isBrightColor(jPanel.getBackground());\r\n\t\tDefaultDrawingSupplier drawingSupplier = new DefaultDrawingSupplier();\r\n\t\tfor (Item item : shownOrder) {\r\n\t\t\tdataset.addSeries(series.get(item));\r\n\t\t\tPaint paint = getColor(bright, drawingSupplier);\r\n\t\t\tif (paint != null) {\r\n\t\t\t\trenderer.setSeriesPaint(dataset.getSeriesCount() - 1, paint);\r\n\t\t\t}\r\n\t\t}\r\n\t\tupdateShown();\r\n\t}\r\n\r\n\tprivate Paint getColor(boolean bright, DefaultDrawingSupplier drawingSupplier) {\r\n\t\tPaint paint = drawingSupplier.getNextPaint();\r\n\t\tif (Settings.get().isEasyChartColors() && paint instanceof Color) {\r\n\t\t\tColor color = (Color) paint;\r\n\t\t\tif (bright) {\r\n\t\t\t\tif (ColorUtil.luminance(color) > 0.8) { //Skip color > get next color\r\n\t\t\t\t\treturn getColor(bright, drawingSupplier);\r\n\t\t\t\t} else { //OK: return color\r\n\t\t\t\t\treturn color;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (ColorUtil.luminance(color) < 0.2) { //Skip color > get next color\r\n\t\t\t\t\treturn getColor(bright, drawingSupplier);\r\n\t\t\t\t} else { //OK: return color\r\n\t\t\t\t\treturn color;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t\treturn paint;\r\n\t}\r\n\r\n\tprivate void updateShown() {\r\n\t\tList<Item> selected = jItems.getSelectedValuesList();\r\n\t\tdouble max = 0;\r\n\t\tint count = 0;\r\n\t\tfor (int i = 0; i < dataset.getSeriesCount(); i++) {\r\n\t\t\tItem item = shownOrder.get(i);\r\n\t\t\tboolean fromVisible = renderer.isSeriesVisible(i);\r\n\t\t\tboolean toVisible = selected.contains(item);\r\n\t\t\tif (fromVisible != toVisible) {\r\n\t\t\t\trenderer.setSeriesVisible(i, toVisible);\r\n\t\t\t}\r\n\t\t\tif (toVisible) {\r\n\t\t\t\tmax = Math.max(max, seriesMax.get(item));\r\n\t\t\t\tcount = Math.max(count, dataset.getItemCount(i));\r\n\t\t\t}\r\n\t\t}\r\n\t\tJFreeChartUtil.updateTickScale(domainAxis, rangeLinearAxis, max);\r\n\t\trenderer.setDefaultShapesVisible(count < 2);\r\n\r\n\t\tjRemove.setEnabled(!selected.isEmpty());\r\n\t\tjClear.setEnabled(!itemsModel.isEmpty());\r\n\t\tjSave.setEnabled(!itemsModel.isEmpty());\r\n\t}\r\n\r\n\tpublic void updateSaved() {\r\n\t\tList<String> sets = new ArrayList<>(Settings.get().getPriceHistorySets().keySet());\r\n\t\tjLoad.removeAll();\r\n\t\tif (sets.isEmpty()) {\r\n\t\t\tjLoad.setEnabled(false);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tjLoad.setEnabled(true);\r\n\r\n\t\tjLoad.add(jManage);\r\n\r\n\t\tjLoad.addSeparator();\r\n\r\n\t\tCollections.sort(sets, StringComparators.CASE_INSENSITIVE);\r\n\t\tfor (String name : sets) {\r\n\t\t\tJMenuItem jMenuItem = new JMenuItem(name, Images.FILTER_LOAD.getIcon());\r\n\t\t\tjMenuItem.addActionListener(new ActionListener() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\t\tif ((e.getModifiers() & ActionEvent.CTRL_MASK) != 0) {\r\n\t\t\t\t\t\taddItems(Settings.get().getPriceHistorySets().get(name));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetItems(Settings.get().getPriceHistorySets().get(name));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tjLoad.add(jMenuItem);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void setUpdating(boolean updating) {\r\n\t\tjSource.setEnabled(!updating);\r\n\t\tjEdit.setEnabled(!updating);\r\n\t\tif (updating) {\r\n\t\t\tjSave.setEnabled(false);\r\n\t\t\tjLoad.setEnabled(false);\r\n\t\t} else {\r\n\t\t\tjSave.setEnabled(!itemsModel.isEmpty());\r\n\t\t\tjLoad.setEnabled(!Settings.get().getPriceHistorySets().isEmpty());\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tprivate Date getFromDate() {\r\n\t\tLocalDate date = jFrom.getDate();\r\n\t\tif (date == null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tInstant instant = date.atStartOfDay().atZone(ZoneId.of(\"GMT\")).toInstant(); //Start of day - GMT\r\n\t\treturn Date.from(instant);\r\n\t}\r\n\r\n\tprivate Date getToDate() {\r\n\t\tLocalDate date = jTo.getDate();\r\n\t\tif (date == null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tInstant instant = date.atTime(23, 59, 59).atZone(ZoneId.of(\"GMT\")).toInstant(); //End of day - GMT\r\n\t\treturn Date.from(instant);\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener, MouseListener, DateChangeListener, ListSelectionListener {\r\n\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\tif (PriceHistoryAction.QUICK_DATE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tQuickDate quickDate = (QuickDate) jQuickDate.getSelectedItem();\r\n\t\t\t\tif (quickDate == QuickDate.RESET) {\r\n\t\t\t\t\tjTo.clearDate();\r\n\t\t\t\t\tjFrom.clearDate();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tDate toDate = getToDate();\r\n\t\t\t\t\tif (toDate == null) {\r\n\t\t\t\t\t\ttoDate = new Date(); //now\r\n\t\t\t\t\t}\r\n\t\t\t\t\tDate fromDate = quickDate.apply(toDate);\r\n\t\t\t\t\tif (fromDate != null) {\r\n\t\t\t\t\t\tjFrom.setDate(fromDate);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (PriceHistoryAction.SOURCE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tupdateData();\r\n\t\t\t} else if (PriceHistoryAction.ADD_ITEM.name().equals(e.getActionCommand())) {\r\n\t\t\t\taddItem();\r\n\t\t\t} else if (PriceHistoryAction.CLEAR_ITEMS.name().equals(e.getActionCommand())) {\r\n\t\t\t\tclearItems();\r\n\t\t\t\tupdateShown();\r\n\t\t\t} else if (PriceHistoryAction.REMOVE_ITEMS.name().equals(e.getActionCommand())) {\r\n\t\t\t\tremoveItems(jItems.getSelectedValuesList());\r\n\t\t\t} else if (PriceHistoryAction.SAVE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tjSaveItemsDialog.updateData(Settings.get().getPriceHistorySets().keySet());\r\n\t\t\t\tString name = jSaveItemsDialog.show();\r\n\t\t\t\tif (name == null) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tSettings.lock(\"Price History (Save Set)\");\r\n\t\t\t\tSettings.get().getPriceHistorySets().put(name, new HashSet<>(shownTypeIDs)); //Copy\r\n\t\t\t\tSettings.unlock(\"Price History (Save Set)\");\r\n\t\t\t\tprogram.saveSettings(\"Price History (Save Set)\");\r\n\t\t\t\tupdateSaved();\r\n\t\t\t} else if (PriceHistoryAction.MANAGE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tjItemsManagerDialog.setVisible(true);\r\n\t\t\t} else if (PriceHistoryAction.INCLUDE_ZERO.name().equals(e.getActionCommand())) {\r\n\t\t\t\trangeLogarithmicAxis.setAutoRangeIncludesZero(jIncludeZero.isSelected());\r\n\t\t\t\trangeLinearAxis.setAutoRangeIncludesZero(jIncludeZero.isSelected());\r\n\t\t\t} else if (PriceHistoryAction.LOGARITHMIC.name().equals(e.getActionCommand())) {\r\n\t\t\t\tif (jLogarithmic.isSelected()) {\r\n\t\t\t\t\tjFreeChart.getXYPlot().setRangeAxis(rangeLogarithmicAxis);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tjFreeChart.getXYPlot().setRangeAxis(rangeLinearAxis);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void mouseClicked(MouseEvent e) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void mousePressed(MouseEvent e) {\r\n\t\t\tif (e.getButton() != MouseEvent.BUTTON2) { //Middle mouse button\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tint index = jItems.locationToIndex(e.getPoint());\r\n\t\t\tif (index < 0 || index > itemsModel.size()) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tremoveItem(itemsModel.get(index));\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void mouseReleased(MouseEvent e) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void mouseEntered(MouseEvent e) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void mouseExited(MouseEvent e) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void dateChanged(DateChangeEvent event) {\r\n\t\t\tDate from = getFromDate();\r\n\t\t\tDate to = getToDate();\r\n\t\t\tQuickDate quickDate = (QuickDate) jQuickDate.getSelectedItem();\r\n\t\t\tif (!quickDate.isValid(from, to)) {\r\n\t\t\t\tQuickDate selected = quickDate.getSelected(from, to);\r\n\t\t\t\tjQuickDate.setSelectedItem(selected);\r\n\t\t\t}\r\n\t\t\tif (from != null && to != null && from.after(to)) {\r\n\t\t\t\tjTo.setDate(from);\r\n\t\t\t}\r\n\t\t\tcreateData();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void valueChanged(ListSelectionEvent e) {\r\n\t\t\tif (e.getValueIsAdjusting()) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tupdateShown();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class GetItems extends SwingWorker<Map<Item, Set<PriceHistoryData>>, Void> {\r\n\r\n\t\tprivate final Map<Item, Set<PriceHistoryData>> data = new TreeMap<>();\r\n\t\tprivate final Set<Integer> blacklist = new HashSet<>();\r\n\t\tprivate final Progress progress;\r\n\t\tprivate final Set<Integer> typeIDs;\r\n\r\n\t\tpublic GetItems(Set<Integer> typeIDs) {\r\n\t\t\tthis.typeIDs = typeIDs;\r\n\t\t\tif (typeIDs.size() > 1) {\r\n\t\t\t\tprogress = program.getStatusPanel().addProgress(UpdateType.PRICE_HISTORY, new StatusPanel.ProgressControl() {\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tpublic boolean isAuto() {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tpublic void show() { }\r\n\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tpublic void cancel() { }\r\n\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tpublic void setPause(boolean pause) { }\r\n\t\t\t\t});\r\n\t\t\t\tprogress.setVisible(true);\r\n\t\t\t} else {\r\n\t\t\t\tprogress = null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tprotected Map<Item, Set<PriceHistoryData>> doInBackground() throws Exception {\r\n\t\t\tint done = 0;\r\n\t\t\tint total = typeIDs.size();\r\n\t\t\tfor (Integer typeID : typeIDs) {\r\n\t\t\t\tif (typeID == null) {\r\n\t\t\t\t\tdone++;\r\n\t\t\t\t\tupdateProgress(done, total);\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tItem item = ApiIdConverter.getItem(typeID);\r\n\t\t\t\t//Always Add Item\r\n\t\t\t\tSet<PriceHistoryData> output = new TreeSet<>();\r\n\t\t\t\tdata.put(item, output);\r\n\t\t\t\t//Update Item\r\n\t\t\t\tMap<String, Double> input = ZkillboardPricesHistoryGetter.getPriceHistory(typeID);\r\n\t\t\t\t//Verify Data\r\n\t\t\t\tif (input == null || input.isEmpty() || !input.containsKey(PriceHistoryDatabase.getZKillboardDate())) {\r\n\t\t\t\t\tblacklist.add(typeID);\r\n\t\t\t\t\tif (input == null || input.isEmpty()) {\r\n\t\t\t\t\t\tdone++;\r\n\t\t\t\t\t\tupdateProgress(done, total);\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t//Add Data\r\n\t\t\t\tfor (Map.Entry<String, Double> entry : input.entrySet()) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tPriceHistoryData priceHistoryData = new PriceHistoryData(typeID, item, entry.getKey(), entry.getValue());\r\n\t\t\t\t\t\toutput.add(priceHistoryData);\r\n\t\t\t\t\t} catch (ParseException ex) {\r\n\t\t\t\t\t\t//Ignore data\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tdone++;\r\n\t\t\t\tupdateProgress(done, total);\r\n\t\t\t}\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\tprivate void updateProgress(double done, double total) {\r\n\t\t\tif (progress == null) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tint progressDone = (int)(done / total * 100.0);\r\n\t\t\tSwingUtilities.invokeLater(new Runnable() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void run() {\r\n\t\t\t\t\tprogress.setValue(progressDone);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tprotected void done() {\r\n\t\t\tif (progress != null) {\r\n\t\t\t\tprogram.getStatusPanel().removeProgress(progress);\r\n\t\t\t}\r\n\t\t\tPriceHistoryDatabase.setZBlacklist(blacklist);\r\n\t\t\tPriceHistoryDatabase.setZKillboard(data); //Save to Database\r\n\t\t\taddNewItemsLocked(data);\r\n\t\t\tsetUpdating(false);\r\n\t\t\ttry {\r\n\t\t\t\tget();\r\n\t\t\t} catch (InterruptedException ex) {\r\n\t\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t\t} catch (ExecutionException ex) {\r\n\t\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static class PriceHistoryData implements Comparable<PriceHistoryData> {\r\n\r\n\t\tprivate final int typeID;\r\n\t\tprivate final Item item;\r\n\t\tprivate final String dateString;\r\n\t\tprivate final double price;\r\n\t\tprivate final Date date;\r\n\t\tprivate final SimpleTimePeriod simpleTimePeriod;\r\n\r\n\t\tpublic PriceHistoryData(int typeID, Item item, String dateString, double price) throws ParseException {\r\n\t\t\tthis.typeID = typeID;\r\n\t\t\tthis.item = item;\r\n\t\t\tthis.dateString = dateString;\r\n\t\t\tthis.price = price;\r\n\t\t\tthis.date = PriceHistoryDatabase.DATE.parse(dateString);\r\n\t\t\tthis.simpleTimePeriod = new SimpleTimePeriod(date, date);\r\n\t\t}\r\n\r\n\t\tpublic int getTypeID() {\r\n\t\t\treturn typeID;\r\n\t\t}\r\n\r\n\t\tpublic Item getItem() {\r\n\t\t\treturn item;\r\n\t\t}\r\n\r\n\t\tpublic String getDateString() {\r\n\t\t\treturn dateString;\r\n\t\t}\r\n\r\n\t\tpublic double getPrice() {\r\n\t\t\treturn price;\r\n\t\t}\r\n\r\n\t\tpublic Date getDate() {\r\n\t\t\treturn date;\r\n\t\t}\r\n\r\n\t\tpublic SimpleTimePeriod getTimePeriod() {\r\n\t\t\treturn simpleTimePeriod;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int compareTo(PriceHistoryData o) {\r\n\t\t\tint compare = item.getTypeName().compareTo(o.item.getTypeName());\r\n\t\t\tif (compare != 0) {\r\n\t\t\t\treturn compare;\r\n\t\t\t}\r\n\t\t\treturn dateString.compareTo(o.dateString);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int hashCode() {\r\n\t\t\tint hash = 3;\r\n\t\t\thash = 89 * hash + this.typeID;\r\n\t\t\thash = 89 * hash + Objects.hashCode(this.dateString);\r\n\t\t\treturn hash;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean equals(Object obj) {\r\n\t\t\tif (this == obj) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif (obj == null) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (getClass() != obj.getClass()) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tfinal PriceHistoryData other = (PriceHistoryData) obj;\r\n\t\t\tif (this.typeID != other.typeID) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (!Objects.equals(this.dateString, other.dateString)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/reprocessed/JReprocessedTable.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.reprocessed;\r\n\r\nimport ca.odell.glazedlists.SeparatorList;\r\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\r\nimport java.awt.Component;\r\nimport javax.swing.table.TableCellRenderer;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.JSeparatorTable;\r\n\r\n\r\npublic class JReprocessedTable extends JSeparatorTable {\r\n\r\n\tprivate final DefaultEventTableModel<ReprocessedInterface> tableModel;\r\n\r\n\tpublic JReprocessedTable(final Program program, final DefaultEventTableModel<ReprocessedInterface> tableModel, SeparatorList<?> separatorList) {\r\n\t\tsuper(program, tableModel, separatorList);\r\n\t\tthis.tableModel = tableModel;\r\n\t}\r\n\r\n\t\t@Override\r\n\tpublic Component prepareRenderer(final TableCellRenderer renderer, final int row, final int column) {\r\n\t\tComponent component = super.prepareRenderer(renderer, row, column);\r\n\t\tboolean isSelected = isCellSelected(row, column);\r\n\t\tObject object = tableModel.getElementAt(row);\r\n\t\t//String columnName = (String) this.getTableHeader().getColumnModel().getColumn(column).getHeaderValue();\r\n\r\n\t\tif (object instanceof ReprocessedInterface) {\r\n\t\t\tReprocessedInterface reprocessed = (ReprocessedInterface) object;\r\n\t\t\t//Background\r\n\t\t\tif (reprocessed.isTotal()) { //Total\r\n\t\t\t\tColorSettings.configCell(component, ColorEntry.GLOBAL_GRAND_TOTAL, isSelected);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn component;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/reprocessed/ReprocessedData.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.reprocessed;\r\n\r\nimport ca.odell.glazedlists.EventList;\r\nimport java.util.ArrayList;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileData;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileManager;\r\nimport net.nikr.eve.jeveasset.data.profile.TableData;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.ReprocessedMaterial;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\n\r\n\r\npublic class ReprocessedData extends TableData {\r\n\r\n\tprivate final Map<Item, ReprocessedGrandItem> grandItems = new HashMap<>();\r\n\tprivate ReprocessedGrandTotal grandTotal;\r\n\r\n\tpublic ReprocessedData(Program program) {\r\n\t\tsuper(program);\r\n\t}\r\n\r\n\tpublic ReprocessedData(ProfileManager profileManager, ProfileData profileData) {\r\n\t\tsuper(profileManager, profileData);\r\n\t}\r\n\r\n\tpublic EventList<ReprocessedInterface> getData(Map<Item, Long> items) {\r\n\t\tEventList<ReprocessedInterface> eventList = EventListManager.create();\r\n\t\tupdateData(eventList, items);\r\n\t\treturn eventList;\r\n\t}\r\n\r\n\tpublic void updateData(EventList<ReprocessedInterface> eventList, Map<Item, Long> items) {\r\n\t\tList<ReprocessedInterface> list = new ArrayList<>();\r\n\t\tgrandItems.clear();\r\n\t\tlong grandTotalCount = 1;\r\n\t\tif (grandTotal != null) { //Save grand total count\r\n\t\t\tgrandTotalCount = grandTotal.getCount();\r\n\t\t}\r\n\t\tgrandTotal = new ReprocessedGrandTotal(grandTotalCount);\r\n\t\tfor (Map.Entry<Item, Long> entry : items.entrySet()) {\r\n\t\t\tupdateItem(list, entry.getKey(), entry.getValue());\r\n\t\t}\r\n\t\tif (items.size() > 1) {\r\n\t\t\tgrandTotal.reCalc();\r\n\t\t\tlist.add(grandTotal);\r\n\t\t\tlist.addAll(grandItems.values());\r\n\t\t}\r\n\t\t//Update list\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().writeLock().lock();\r\n\t\t\teventList.clear();\r\n\t\t\teventList.addAll(list);\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void addItem(EventList<ReprocessedInterface> eventList, Item item, Long count) {\r\n\t\tList<ReprocessedInterface> list = new ArrayList<>();\r\n\t\tupdateItem(list, item, count);\r\n\t\tif (!EventListManager.isEmpty(eventList)) {\r\n\t\t\tgrandTotal.reCalc();\r\n\t\t\tif (!EventListManager.contains(eventList, grandTotal)) { //Add grand totals if needed\r\n\t\t\t\tlist.add(grandTotal);\r\n\t\t\t\tlist.addAll(grandItems.values());\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Add new items\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().writeLock().lock();\r\n\t\t\teventList.addAll(list);\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void removeItem(EventList<ReprocessedInterface> eventList, ReprocessedTotal total) {\r\n\t\tList<ReprocessedInterface> list = new ArrayList<>();\r\n\t\tlist.add(total);\r\n\t\tlist.addAll(total.getItems());\r\n\t\tint totals = 0;\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\t\tfor (ReprocessedInterface reprocessed : eventList) {\r\n\t\t\t\tif (reprocessed.isTotal() && !reprocessed.isGrandTotal()) {\r\n\t\t\t\t\ttotals++;\r\n\t\t\t\t}\r\n\t\t\t\tif (totals >= 3) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t\tif (totals < 3) { //Remove grand totals if needed\r\n\t\t\tlist.add(grandTotal);\r\n\t\t\tlist.addAll(grandItems.values());\r\n\t\t}\r\n\t\t//Add new items\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().writeLock().lock();\r\n\t\t\teventList.removeAll(list);\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void updateItem(List<ReprocessedInterface> list, Item item, Long count) {\r\n\t\tif (item.isEmpty() || item.getReprocessedMaterial().isEmpty()) {\r\n\t\t\treturn; //Ignore types without materials\r\n\t\t}\r\n\t\tdouble sellPrice = ApiIdConverter.getPrice(item.getTypeID(), false);\r\n\t\tReprocessedTotal itemTotal = new ReprocessedTotal(grandTotal, item, sellPrice, count);\r\n\t\tlist.add(itemTotal);\r\n\t\tfor (ReprocessedMaterial material : item.getReprocessedMaterial()) {\r\n\t\t\tItem materialItem = ApiIdConverter.getItem(material.getTypeID());\r\n\t\t\tif (!materialItem.isEmpty()) {\r\n\t\t\t\tdouble price = ApiIdConverter.getPrice(materialItem.getTypeID(), false);\r\n\t\t\t\tReprocessedItem reprocessedItem = new ReprocessedItem(itemTotal, materialItem, material, item.isOre(), price);\r\n\t\t\t\tlist.add(reprocessedItem);\r\n\t\t\t\t//Total\r\n\t\t\t\titemTotal.add(reprocessedItem);\r\n\t\t\t\t//Grand Item\r\n\t\t\t\tReprocessedGrandItem grandItem = grandItems.get(materialItem);\r\n\t\t\t\tif (grandItem == null) {\r\n\t\t\t\t\tgrandItem = new ReprocessedGrandItem(grandTotal, materialItem, price);\r\n\t\t\t\t\tgrandItems.put(materialItem, grandItem);\r\n\t\t\t\t\t//Grand Total\r\n\t\t\t\t\tgrandTotal.add(grandItem);\r\n\t\t\t\t}\r\n\t\t\t\tgrandItem.add(reprocessedItem);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/reprocessed/ReprocessedExtendedTableFormat.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.reprocessed;\r\n\r\nimport java.util.Comparator;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.i18n.TabsReprocessed;\r\n\r\n\r\npublic enum ReprocessedExtendedTableFormat implements EnumTableColumn<ReprocessedInterface> {\r\n\tTOTAL_NAME(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsReprocessed.get().columnTotalName();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final ReprocessedInterface from) {\r\n\t\t\treturn from.getTotal().getTypeName();\r\n\t\t}\r\n\t},\r\n\tTOTAL_PRICE(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsReprocessed.get().columnTotalPrice();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final ReprocessedInterface from) {\r\n\t\t\treturn from.getTotal().getSellPrice();\r\n\t\t}\r\n\t},\r\n\tTOTAL_VALUE(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsReprocessed.get().columnTotalValue();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final ReprocessedInterface from) {\r\n\t\t\treturn from.getTotal().getValue();\r\n\t\t}\r\n\t},\r\n\tTOTAL_BATCH(Long.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsReprocessed.get().columnTotalBatch();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final ReprocessedInterface from) {\r\n\t\t\treturn from.getTotal().getPortionSize();\r\n\t\t}\r\n\t};\r\n\r\n\tprivate final Class<?> type;\r\n\tprivate final Comparator<?> comparator;\r\n\tprivate ReprocessedExtendedTableFormat(final Class<?> type) {\r\n\t\tthis.type = type;\r\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\r\n\t}\r\n\t@Override\r\n\tpublic Class<?> getType() {\r\n\t\treturn type;\r\n\t}\r\n\t@Override\r\n\tpublic Comparator<?> getComparator() {\r\n\t\treturn comparator;\r\n\t}\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn getColumnName();\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/reprocessed/ReprocessedGrandItem.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.reprocessed;\r\n\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.i18n.TabsReprocessed;\r\n\r\n\r\npublic class ReprocessedGrandItem extends ReprocessedTotal {\r\n\r\n\tprivate final ReprocessedGrandTotal grandTotal;\r\n\tprivate final double price;\r\n\r\n\tpublic ReprocessedGrandItem(final ReprocessedGrandTotal grandTotal, final Item item, final double price) {\r\n\t\tsuper(grandTotal, item, 0, 1);\r\n\t\tthis.grandTotal = grandTotal;\r\n\t\tthis.price = price;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean isTotal() {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getTypeName() {\r\n\t\treturn TabsReprocessed.get().grandTotal();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getName() {\r\n\t\treturn getItem().getTypeName();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean isGrandTotal() {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic ReprocessedTotal getTotal() {\r\n\t\treturn grandTotal;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic long getPortionSize() {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Double getDynamicPrice() {\r\n\t\treturn price;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic long getQuantity100() {\r\n\t\treturn super.getQuantity100() * grandTotal.getCount();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic long getQuantityMax() {\r\n\t\treturn super.getQuantityMax() * grandTotal.getCount();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic long getQuantitySkill() {\r\n\t\treturn super.getQuantitySkill() * grandTotal.getCount();\r\n\t}\r\n}"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/reprocessed/ReprocessedGrandTotal.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.reprocessed;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.i18n.TabsReprocessed;\r\n\r\n\r\npublic class ReprocessedGrandTotal extends ReprocessedTotal {\r\n\r\n\tprivate final List<ReprocessedGrandItem> items = new ArrayList<>();\r\n\r\n\tpublic ReprocessedGrandTotal(long count) {\r\n\t\tsuper(null, new Item(0), 0, count);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean isGrandTotal() {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic ReprocessedGrandTotal getGrandTotal() {\r\n\t\treturn this;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void reCalc() {\r\n\t\tsuper.reCalc();\r\n\t\tfor (ReprocessedGrandItem reprocessed : items) {\r\n\t\t\treprocessed.reCalc();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void add(ReprocessedGrandItem item) {\r\n\t\tsuper.add(item);\r\n\t\titems.add(item);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getTypeName() {\r\n\t\treturn TabsReprocessed.get().grandTotal();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic long getPortionSize() {\r\n\t\treturn 0;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/reprocessed/ReprocessedInterface.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.reprocessed;\n\nimport net.nikr.eve.jeveasset.data.settings.types.ItemType;\nimport net.nikr.eve.jeveasset.data.settings.types.PriceType;\nimport net.nikr.eve.jeveasset.gui.shared.CopyHandler.CopySeparator;\n\n\npublic interface ReprocessedInterface extends Comparable<ReprocessedInterface>, ItemType, PriceType, CopySeparator {\n\tpublic String getName();\n\tpublic long getPortionSize();\n\tpublic long getQuantity100();\n\tpublic long getQuantityMax();\n\tpublic long getQuantitySkill();\n\tpublic double getValueMax();\n\tpublic double getValueSkill();\n\tpublic double getValueDifference();\n\tpublic boolean isTotal();\n\tpublic boolean isGrandTotal();\n\tpublic ReprocessedTotal getTotal();\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/reprocessed/ReprocessedItem.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.reprocessed;\r\n\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.ReprocessedMaterial;\r\nimport net.nikr.eve.jeveasset.data.settings.ReprocessSettings;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\n\r\n\r\npublic class ReprocessedItem implements ReprocessedInterface {\r\n\tprivate final ReprocessedTotal total;\r\n\tprivate final Item item;\r\n\tprivate final ReprocessedMaterial material;\r\n\tprivate final boolean ore;\r\n\tprivate final double price;\r\n\tprivate final String name;\r\n\r\n\tpublic ReprocessedItem(final ReprocessedTotal parent, final Item item, final ReprocessedMaterial material, final boolean ore, final double price) {\r\n\t\tthis.total = parent;\r\n\t\tthis.item = item;\r\n\t\tthis.material = material;\r\n\t\tthis.ore = ore;\r\n\t\tthis.price = price;\r\n\t\tthis.name = item.getTypeName();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic ReprocessedTotal getTotal() {\r\n\t\treturn total;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic long getPortionSize() {\r\n\t\treturn material.getPortionSize();\r\n\t}\r\n\r\n\tprivate long getQuantityRaw() {\r\n\t\treturn material.getQuantity() * total.getCount() / material.getPortionSize();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic long getQuantity100() {\r\n\t\treturn getQuantityRaw();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic long getQuantityMax() {\r\n\t\treturn ReprocessSettings.getMax(getQuantityRaw(), ore);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic long getQuantitySkill() {\r\n\t\treturn Settings.get().getReprocessSettings().getLeft(getQuantityRaw(), ore);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Double getDynamicPrice() {\r\n\t\treturn price;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getName() {\r\n\t\treturn name;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic double getValueMax() {\r\n\t\treturn getDynamicPrice() * getQuantityMax();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic double getValueSkill() {\r\n\t\treturn getDynamicPrice() * getQuantitySkill();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic double getValueDifference() {\r\n\t\treturn getValueMax() - getValueSkill();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getCopyString() {\r\n\t\tStringBuilder builder = new StringBuilder();\r\n\t\tbuilder.append(getTotal().getTypeName());\r\n\t\tbuilder.append(\"\\t\");\r\n\t\tbuilder.append(getTotal().getSellPrice());\r\n\t\tbuilder.append(\"\\t\");\r\n\t\tbuilder.append(getTotal().getValue());\r\n\t\treturn builder.toString();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(ReprocessedInterface o) {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean isTotal() {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean isGrandTotal() {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Item getItem() {\r\n\t\treturn item;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic long getItemCount() {\r\n\t\treturn getQuantitySkill();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 5;\r\n\t\thash = 29 * hash + (this.total != null ? this.total.hashCode() : 0);\r\n\t\thash = 29 * hash + getItem().getTypeID();\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal ReprocessedItem other = (ReprocessedItem) obj;\r\n\t\tif (this.total != other.total && (this.total == null || !this.total.equals(other.total))) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (this.getItem().getTypeID() != other.getItem().getTypeID()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/reprocessed/ReprocessedSeparatorComparator.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.reprocessed;\r\n\r\nimport java.util.Comparator;\r\n\r\n\r\npublic class ReprocessedSeparatorComparator implements Comparator<ReprocessedInterface> {\r\n\r\n\t@Override\r\n\tpublic int compare(final ReprocessedInterface o1, final ReprocessedInterface o2) {\r\n\t\tString a = o1.getTotal().getTypeName();\r\n\t\tString b = o2.getTotal().getTypeName();\r\n\t\tif (o1.getTotal().isGrandTotal() && o2.getTotal().isGrandTotal()) {\r\n\t\t\treturn a.compareToIgnoreCase(b); //Both is grand total: compare name\r\n\t\t} else if (o1.getTotal().isGrandTotal()) {\r\n\t\t\treturn -1; //First is grand total\r\n\t\t} else if (o2.getTotal().isGrandTotal()) {\r\n\t\t\treturn 1;//Second is grand total\r\n\t\t} else {\r\n\t\t\treturn a.compareToIgnoreCase(b); //Not grand total: compare name\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/reprocessed/ReprocessedSeparatorTableCell.java",
    "content": "/* Glazed Lists                                                 (c) 2003-2006 */\r\n/* http://publicobject.com/glazedlists/                      publicobject.com,*/\r\n/*                                                     O'Dell Engineering Ltd.*/\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.reprocessed;\r\n\r\nimport ca.odell.glazedlists.SeparatorList;\r\nimport ca.odell.glazedlists.SeparatorList.Separator;\r\nimport java.awt.Color;\r\nimport java.awt.Font;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.awt.event.KeyEvent;\r\nimport java.awt.event.KeyListener;\r\nimport javax.swing.BorderFactory;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JTable;\r\nimport javax.swing.JTextField;\r\nimport javax.swing.event.CellEditorListener;\r\nimport javax.swing.event.ChangeEvent;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\r\nimport net.nikr.eve.jeveasset.gui.shared.DocumentFactory;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JIntegerField;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.SeparatorTableCell;\r\nimport net.nikr.eve.jeveasset.i18n.TabsReprocessed;\r\n\r\n/**\r\n *\r\n * @author <a href=\"mailto:jesse@swank.ca\">Jesse Wilson</a>\r\n */\r\npublic class ReprocessedSeparatorTableCell extends SeparatorTableCell<ReprocessedInterface> {\r\n\r\n\tpublic enum ReprocessedCellAction {\r\n\t\tREMOVE, UPDATE_COUNT\r\n\t}\r\n\r\n\tprivate final JLabel jColor;\r\n\tprivate final JButton jRemove;\r\n\tprivate final JButton jRemoveTotal;\r\n\tprivate final JIntegerField jCount;\r\n\tprivate final JLabel jName;\r\n\tprivate final JLabel jSellPriceLabel;\r\n\tprivate final JLabel jSellPrice;\r\n\tprivate final JLabel jBatchSizeLabel;\r\n\tprivate final JLabel jBatchSize;\r\n\tprivate final JLabel jValueLabel;\r\n\tprivate final JLabel jValue;\r\n\tprivate final ReprocessedTab reprocessedTab;\r\n\r\n\tpublic ReprocessedSeparatorTableCell(final ReprocessedTab reprocessedTab, final JTable jTable, final SeparatorList<ReprocessedInterface> separatorList, final ActionListener actionListener) {\r\n\t\tsuper(jTable, separatorList);\r\n\t\tthis.reprocessedTab = reprocessedTab;\r\n\r\n\t\tListenerClass listener = new ListenerClass();\r\n\t\taddCellEditorListener(listener);\r\n\r\n\t\tjColor = new JLabel();\r\n\t\tjColor.setOpaque(true);\r\n\t\tjColor.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));\r\n\r\n\t\tjRemove = new JButton(TabsReprocessed.get().remove());\r\n\t\tjRemove.setOpaque(false);\r\n\t\tjRemove.setActionCommand(ReprocessedCellAction.REMOVE.name());\r\n\t\tjRemove.addActionListener(actionListener);\r\n\r\n\t\tjRemoveTotal = new JButton(TabsReprocessed.get().remove());\r\n\t\tjRemoveTotal.setOpaque(false);\r\n\t\tjRemoveTotal.setEnabled(false);\r\n\t\tjRemoveTotal.setVisible(false);\r\n\r\n\t\tjCount = new JIntegerField(\"1\", DocumentFactory.ValueFlag.POSITIVE_AND_NOT_ZERO);\r\n\t\tjCount.setAutoSelectAll(true);\r\n\t\tjCount.setHorizontalAlignment(JTextField.RIGHT);\r\n\t\tjCount.setActionCommand(ReprocessedCellAction.UPDATE_COUNT.name());\r\n\t\tjCount.addActionListener(listener);\r\n\t\tjCount.addKeyListener(listener);\r\n\r\n\t\tJLabel jCountLabel = new JLabel(TabsReprocessed.get().multiplierSign());\r\n\r\n\t\tjName = new JLabel();\r\n\t\tFont font = jName.getFont();\r\n\t\tjName.setFont(new Font(font.getName(), Font.BOLD, font.getSize() + 1));\r\n\r\n\t\tjSellPriceLabel = new JLabel(TabsReprocessed.get().price());\r\n\t\tjSellPriceLabel.setFont(new Font(font.getName(), Font.BOLD, font.getSize()));\r\n\t\tjSellPrice = new JLabel();\r\n\r\n\t\tjBatchSizeLabel = new JLabel(TabsReprocessed.get().batch());\r\n\t\tjBatchSizeLabel.setFont(new Font(font.getName(), Font.BOLD, font.getSize()));\r\n\t\tjBatchSize = new JLabel();\r\n\r\n\t\tjValueLabel = new JLabel(TabsReprocessed.get().value());\r\n\t\tjValueLabel.setFont(new Font(font.getName(), Font.BOLD, font.getSize()));\r\n\t\tjValue = new JLabel();\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(jExpand)\r\n\t\t\t\t.addGap(5)\r\n\t\t\t\t.addComponent(jColor, Program.getButtonsHeight() - 6, Program.getButtonsHeight() - 6, Program.getButtonsHeight() - 6)\r\n\t\t\t\t.addGap(10)\r\n\t\t\t\t.addComponent(jRemove, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t.addComponent(jRemoveTotal, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t.addGap(10)\r\n\t\t\t\t.addComponent(jCount, 50, 50, 50)\r\n\t\t\t\t.addComponent(jCountLabel)\r\n\t\t\t\t.addGap(10)\r\n\t\t\t\t.addComponent(jName, 220, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\r\n\t\t\t\t.addGap(10)\r\n\t\t\t\t.addComponent(jSellPriceLabel)\r\n\t\t\t\t.addGap(5)\r\n\t\t\t\t.addComponent(jSellPrice)\r\n\t\t\t\t.addGap(10)\r\n\t\t\t\t.addComponent(jValueLabel)\r\n\t\t\t\t.addGap(5)\r\n\t\t\t\t.addComponent(jValue)\r\n\t\t\t\t.addGap(10)\r\n\t\t\t\t.addComponent(jBatchSizeLabel)\r\n\t\t\t\t.addGap(5)\r\n\t\t\t\t.addComponent(jBatchSize)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addGap(2)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jExpand, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t\t.addGap(3)\r\n\t\t\t\t\t\t.addComponent(jColor, Program.getButtonsHeight() - 6, Program.getButtonsHeight() - 6, Program.getButtonsHeight() - 6)\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addComponent(jRemove, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jRemoveTotal, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jName, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jCount, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jCountLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jSellPriceLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jSellPrice, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jValueLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jValue, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jBatchSizeLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jBatchSize, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGap(2)\r\n\t\t);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void configure(Separator<?> separator) {\r\n\t\tReprocessedInterface material = (ReprocessedInterface) separator.first();\r\n\t\tif (material == null) { // handle 'late' rendering calls after this separator is invalid\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tjRemove.setVisible(!material.getTotal().isGrandTotal());\r\n\t\tjRemoveTotal.setVisible(material.getTotal().isGrandTotal());\r\n\t\tjName.setText(material.getTotal().getTypeName());\r\n\t\t//Count\r\n\t\tjCount.setText(String.valueOf(material.getTotal().getCount()));\r\n\t\t//Sell Price\r\n\t\tjSellPriceLabel.setVisible(!material.isGrandTotal());\r\n\t\tjSellPrice.setVisible(!material.isGrandTotal());\r\n\t\tjSellPrice.setText(Formatter.iskFormat(material.getTotal().getSellPrice()));\r\n\t\t//Value\r\n\t\tif (material.getTotal().getValue() != material.getTotal().getSellPrice()) {\r\n\t\t\tjValue.setText(Formatter.iskFormat(material.getTotal().getValue()));\r\n\t\t\tjValueLabel.setVisible(true);\r\n\t\t\tjValue.setVisible(true);\r\n\t\t} else {\r\n\t\t\tjValueLabel.setVisible(false);\r\n\t\t\tjValue.setVisible(false);\r\n\t\t}\r\n\t\t//Portion Size\r\n\t\tif (material.getPortionSize() > 1) {\r\n\t\t\tjBatchSize.setText(Formatter.longFormat(material.getPortionSize()));\r\n\t\t\tjBatchSizeLabel.setVisible(true);\r\n\t\t\tjBatchSize.setVisible(true);\r\n\t\t} else {\r\n\t\t\tjBatchSizeLabel.setVisible(false);\r\n\t\t\tjBatchSize.setVisible(false);\r\n\t\t}\r\n\t\t//Color\r\n\t\tif (material.isGrandTotal()) {\r\n\t\t\tColorSettings.config(jColor, ColorEntry.REPROCESSED_EQUAL);\r\n\t\t} else if (material.getTotal().isSell()) {\r\n\t\t\tColorSettings.config(jColor, ColorEntry.REPROCESSED_SELL);\r\n\t\t} else if (material.getTotal().isReprocess()) {\r\n\t\t\tColorSettings.config(jColor, ColorEntry.REPROCESSED_REPROCESS);\r\n\t\t} else {\r\n\t\t\tColorSettings.config(jColor, ColorEntry.REPROCESSED_EQUAL);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener, CellEditorListener, KeyListener {\r\n\r\n\t\tprivate boolean update = true;\r\n\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\tif (ReprocessedCellAction.UPDATE_COUNT.name().equals(e.getActionCommand())) {\r\n\t\t\t\tstopCellEditing();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void editingStopped(ChangeEvent e) {\r\n\t\t\tsaveMultiplier();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void editingCanceled(ChangeEvent e) {\r\n\t\t\tsaveMultiplier();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void keyTyped(KeyEvent e) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void keyPressed(KeyEvent e) {\r\n\t\t\tif (e.getKeyCode() == KeyEvent.VK_ESCAPE) {\r\n\t\t\t\tupdate = false;\r\n\t\t\t\tstopCellEditing();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void keyReleased(KeyEvent e) { }\r\n\r\n\t\tprivate void saveMultiplier() {\r\n\t\t\tif (!update) {\r\n\t\t\t\tupdate = true;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tReprocessedInterface reprocessed = (ReprocessedInterface) currentSeparator.first();\r\n\t\t\tif (reprocessed == null) { // handle 'late' rendering calls after this separator is invalid\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\treprocessedTab.setCount(reprocessed, jCount);\r\n\t\t}\r\n\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/reprocessed/ReprocessedTab.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.reprocessed;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.FilterList;\nimport ca.odell.glazedlists.GlazedLists;\nimport ca.odell.glazedlists.ListSelection;\nimport ca.odell.glazedlists.SeparatorList;\nimport ca.odell.glazedlists.SortedList;\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport ca.odell.glazedlists.swing.TableComparatorChooser;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Comparator;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport javax.swing.GroupLayout;\nimport javax.swing.JButton;\nimport javax.swing.JComponent;\nimport javax.swing.JMenu;\nimport javax.swing.JOptionPane;\nimport javax.swing.JPopupMenu;\nimport javax.swing.JScrollPane;\nimport javax.swing.JTextField;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.TextImport;\nimport net.nikr.eve.jeveasset.gui.shared.TextImport.TextImportHandler;\nimport net.nikr.eve.jeveasset.gui.shared.components.JAutoCompleteDialog;\nimport net.nikr.eve.jeveasset.gui.shared.components.JFixedToolBar;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabSecondary;\nimport net.nikr.eve.jeveasset.gui.shared.components.JTextDialog;\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuColumns;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.JSeparatorTable;\nimport net.nikr.eve.jeveasset.gui.shared.table.PaddingTableCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\nimport net.nikr.eve.jeveasset.gui.tabs.reprocessed.ReprocessedSeparatorTableCell.ReprocessedCellAction;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\nimport net.nikr.eve.jeveasset.i18n.TabsReprocessed;\nimport net.nikr.eve.jeveasset.io.local.text.TextImportType;\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\n\n\npublic class ReprocessedTab extends JMainTabSecondary {\n\n\tprivate enum ReprocessedAction {\n\t\tCOLLAPSE,\n\t\tEXPAND,\n\t\tCLEAR,\n\t\tADD_ITEM,\n\t\tIMPORT_TEXT_FORMATS,\n\t}\n\n\t//GUI\n\tprivate final JSeparatorTable jTable;\n\n\t//Dialogs\n\tprivate final JAutoCompleteDialog<Item> jAddItemDialog;\n\tprivate final TextImport<TextImportType> textImport;\n\n\t//Table\n\tprivate final ReprocessedFilterControl filterControl;\n\tprivate final EventList<ReprocessedInterface> eventList;\n\tprivate final FilterList<ReprocessedInterface> filterList;\n\tprivate final SeparatorList<ReprocessedInterface> separatorList;\n\tprivate final DefaultEventSelectionModel<ReprocessedInterface> selectionModel;\n\tprivate final DefaultEventTableModel<ReprocessedInterface> tableModel;\n\tprivate final EnumTableFormatAdaptor<ReprocessedTableFormat, ReprocessedInterface> tableFormat;\n\n\t//Listener\n\tprivate final ListenerClass listener = new ListenerClass();\n\n\t//Data\n\tprivate final Map<Item, Long> items = new HashMap<>();\n\tprivate final ReprocessedData reprocessedData;\n\n\tpublic static final String NAME = \"reprocessed\"; //Not to be changed!\n\n\tpublic ReprocessedTab(final Program program) {\n\t\tsuper(program, NAME, TabsReprocessed.get().title(), Images.TOOL_REPROCESSED.getIcon(), true);\n\n\t\treprocessedData = new ReprocessedData(program);\n\n\t\t//Add item dialog\n\t\tArrayList<Item> reprocessableItems = new ArrayList<>();\n\t\tfor(Item item : StaticData.get().getItems().values()) {\n\t\t\tif(!item.getReprocessedMaterial().isEmpty()) {\n\t\t\t\treprocessableItems.add(item);\n\t\t\t}\n\t\t}\n\t\tjAddItemDialog = new JAutoCompleteDialog<>(program, TabsReprocessed.get().addItem(), Images.TOOL_REPROCESSED.getImage(), TabsReprocessed.get().selectItem(), true, JAutoCompleteDialog.ITEM_OPTIONS);\n\t\tjAddItemDialog.updateData(reprocessableItems);\n\n\t\ttextImport = new TextImport<>(program, NAME);\n\n\t\tJFixedToolBar jToolBar = new JFixedToolBar();\n\n\t\tJButton jAddItem = new JButton(TabsReprocessed.get().addItem(), Images.EDIT_ADD.getIcon());\n\t\tjAddItem.setActionCommand(ReprocessedAction.ADD_ITEM.name());\n\t\tjAddItem.addActionListener(listener);\n\t\tjToolBar.addButton(jAddItem);\n\n\t\tJButton jClear = new JButton(TabsReprocessed.get().removeAll(), Images.EDIT_DELETE.getIcon());\n\t\tjClear.setActionCommand(ReprocessedAction.CLEAR.name());\n\t\tjClear.addActionListener(listener);\n\t\tjToolBar.addButton(jClear);\n\n\t\tJButton jImport = new JButton(TabsReprocessed.get().importButton(), Images.EDIT_IMPORT.getIcon());\n\t\tjImport.setActionCommand(ReprocessedAction.IMPORT_TEXT_FORMATS.name());\n\t\tjImport.addActionListener(listener);\n\t\tjToolBar.addButton(jImport);\n\n\t\tjToolBar.addGlue();\n\n\t\tJButton jCollapse = new JButton(TabsReprocessed.get().collapse(), Images.MISC_COLLAPSED.getIcon());\n\t\tjCollapse.setActionCommand(ReprocessedAction.COLLAPSE.name());\n\t\tjCollapse.addActionListener(listener);\n\t\tjToolBar.addButton(jCollapse);\n\n\t\tJButton jExpand = new JButton(TabsReprocessed.get().expand(), Images.MISC_EXPANDED.getIcon());\n\t\tjExpand.setActionCommand(ReprocessedAction.EXPAND.name());\n\t\tjExpand.addActionListener(listener);\n\t\tjToolBar.addButton(jExpand);\n\n\t\t//Table Format\n\t\ttableFormat = TableFormatFactory.reprocessedTableFormat();\n\t\t//Backend\n\t\teventList = EventListManager.create();\n\t\t//Sorting (per column)\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<ReprocessedInterface> sortedListColumn = new SortedList<>(eventList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\n\t\t//Sorting Total (Ensure that total is always last)\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<ReprocessedInterface> sortedListTotal = new SortedList<>(sortedListColumn, new TotalComparator());\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t//Filter\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tfilterList = new FilterList<>(sortedListTotal);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t//Separator\n\t\tseparatorList = new SeparatorList<>(filterList, new ReprocessedSeparatorComparator(), 1, Integer.MAX_VALUE);\n\t\t//Table Model\n\t\ttableModel = EventModels.createTableModel(separatorList, tableFormat);\n\t\t//Table\n\t\tjTable = new JReprocessedTable(program, tableModel, separatorList);\n\t\tjTable.setSeparatorRenderer(new ReprocessedSeparatorTableCell(this, jTable, separatorList, listener));\n\t\tjTable.setSeparatorEditor(new ReprocessedSeparatorTableCell(this, jTable, separatorList, listener));\n\t\tjTable.setCellSelectionEnabled(true);\n\t\tPaddingTableCellRenderer.install(jTable, 3);\n\t\t//Sorting\n\t\tTableComparatorChooser<ReprocessedInterface> comparatorChooser = TableComparatorChooser.install(jTable, sortedListColumn, TableComparatorChooser.MULTIPLE_COLUMN_MOUSE, tableFormat);\n\t\t//Selection Model\n\t\tselectionModel = EventModels.createSelectionModel(separatorList);\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\n\t\tjTable.setSelectionModel(selectionModel);\n\t\t//Listeners\n\t\tinstallTable(jTable);\n\t\t//Scroll\n\t\tJScrollPane jTableScroll = new JScrollPane(jTable);\n\t\t//Table Filter\n\t\tfilterControl = new ReprocessedFilterControl(sortedListTotal);\n\t\t//Menu\n\t\tinstallTableTool(new ReprocessedTableMenu(), tableFormat, comparatorChooser, tableModel, jTable, filterControl, ReprocessedInterface.class);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jToolBar, jToolBar.getMinimumSize().width, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jToolBar, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t}\n\n\t@Override\n\tpublic void updateData() {\n\t\t//Save separator expanded/collapsed state\n\t\tjTable.saveExpandedState();\n\t\t//Update Data\n\t\treprocessedData.updateData(eventList, items);\n\t\t//Restore separator expanded/collapsed state\n\t\tjTable.loadExpandedState();\n\t}\n\n\t@Override\n\tpublic void clearData() {\n\t\tfilterControl.clearCache();\n\t}\n\n\t@Override\n\tpublic void updateCache() {\n\t\tfilterControl.createCache();\n\t}\n\n\t@Override\n\tpublic Collection<LocationType> getLocations() {\n\t\treturn new ArrayList<>(); //No Location\n\t}\n\n\tpublic void set(final Map<Item, Long> newItems) {\n\t\titems.clear();\n\t\tadd(newItems);\n\t}\n\n\tpublic void add(final Map<Item, Long> newItems) {\n\t\tfor (Map.Entry<Item, Long> entry : newItems.entrySet()) {\n\t\t\tLong value = entry.getValue();\n\t\t\tif (value == null || value < 1) {\n\t\t\t\tvalue = 1L;\n\t\t\t}\n\t\t\tLong previous = items.put(entry.getKey(), value);\n\t\t\tif (previous != null) {\n\t\t\t\titems.put(entry.getKey(), value + previous);\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected void setCount(ReprocessedInterface reprocessed, JTextField jCount) {\n\t\tif (reprocessed == null) {\n\t\t\treturn;\n\t\t}\n\t\tReprocessedTotal total = reprocessed.getTotal();\n\t\tlong count;\n\t\ttry {\n\t\t\tcount = Long.parseLong(jCount.getText());\n\t\t} catch (NumberFormatException ex) {\n\t\t\tcount = 1;\n\t\t}\n\t\tif (count != total.getCount()) {\n\t\t\tItem item = total.getItem();\n\t\t\tif (!total.isGrandTotal()) {\n\t\t\t\titems.put(item, count);\n\t\t\t}\n\t\t\ttotal.setCount(count);\n\t\t\ttableModel.fireTableDataChanged();\n\t\t}\n\t}\n\n\tprivate ReprocessedInterface getSelectedReprocessed() {\n\t\tint index = jTable.getSelectedRow();\n\t\tif (index < 0 || index >= tableModel.getRowCount()) {\n\t\t\treturn null;\n\t\t}\n\t\tObject o = tableModel.getElementAt(index);\n\t\tif (o instanceof SeparatorList.Separator<?>) {\n\t\t\tSeparatorList.Separator<?> separator = (SeparatorList.Separator<?>) o;\n\t\t\treturn (ReprocessedInterface) separator.first();\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic void show() {\n\t\tjTable.clearExpandedState();\n\t\tif (program.getMainWindow().isOpen(this)) {\n\t\t\tupdateData(); //Also update data when already open\n\t\t}\n\t\tprogram.getMainWindow().addTab(this);\n\t}\n\n\tprivate void importText() {\n\t\tTextImportType systemType = TextImportType.EVE_MULTIBUY;\n\t\ttry {\n\t\t\tsystemType = TextImportType.valueOf(Settings.get().getImportSettings(NAME, systemType));\n\t\t} catch (IllegalArgumentException ex) {\n\t\t\t//No problem, use default\n\t\t}\n\t\timportText(\"\", systemType);\n\t}\n\n\tprivate void importText(String text, TextImportType selected) {\n\t\ttextImport.importText(text, TextImportType.values(), selected, new TextImportHandler<TextImportType>() {\n\t\t\t@Override\n\t\t\tpublic void addItems(JTextDialog.TextReturn<TextImportType> textReturn) {\n\t\t\t\tTextImportType importType = textReturn.getType();\n\t\t\t\tString importText = textReturn.getText();\n\t\t\t\tMap<Integer, Double> data = importType.importText(importText);\n\t\t\t\t//Validate Output\n\t\t\t\tif (data == null || data.isEmpty()) {\n\t\t\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), GuiShared.get().textInvalid(), GuiShared.get().textImport(), JOptionPane.PLAIN_MESSAGE);\n\t\t\t\t\timportText(importText, importType); //Again!\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t//Add items\n\t\t\t\tMap<Item, Long> newItems = new HashMap<>();\n\t\t\t\tfor (Map.Entry<Integer, Double> entry : data.entrySet()) {\n\t\t\t\t\tItem item = ApiIdConverter.getItemUpdate(entry.getKey());\n\t\t\t\t\tnewItems.put(item, entry.getValue().longValue());\n\t\t\t\t}\n\t\t\t\tadd(newItems);\n\t\t\t\tupdateData();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate class ReprocessedTableMenu implements TableMenu<ReprocessedInterface> {\n\t\t@Override\n\t\tpublic MenuData<ReprocessedInterface> getMenuData() {\n\t\t\treturn new MenuData<>(selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getFilterMenu() {\n\t\t\treturn filterControl.getMenu(jTable, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getColumnMenu() {\n\t\t\treturn new JMenuColumns<>(program, tableFormat, tableModel, jTable, NAME);\n\t\t}\n\n\t\t@Override\n\t\tpublic void addInfoMenu(JPopupMenu jPopupMenu) { }\n\n\t\t@Override\n\t\tpublic void addToolMenu(JComponent jComponent) { }\n\t}\n\n\tprivate class ListenerClass implements ActionListener {\n\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (ReprocessedAction.COLLAPSE.name().equals(e.getActionCommand())) {\n\t\t\t\tjTable.expandSeparators(false);\n\t\t\t} else if (ReprocessedAction.EXPAND.name().equals(e.getActionCommand())) {\n\t\t\t\tjTable.expandSeparators(true);\n\t\t\t} else if (ReprocessedAction.CLEAR.name().equals(e.getActionCommand())) {\n\t\t\t\titems.clear();\n\t\t\t\tupdateData();\n\t\t\t} else if (ReprocessedCellAction.REMOVE.name().equals(e.getActionCommand())) {\n\t\t\t\tReprocessedInterface reprocessed = getSelectedReprocessed();\n\t\t\t\tif (reprocessed != null) {\n\t\t\t\t\tReprocessedTotal total = reprocessed.getTotal();\n\t\t\t\t\titems.remove(total.getItem());\n\t\t\t\t\treprocessedData.removeItem(eventList, total);\n\t\t\t\t}\n\t\t\t} else if (ReprocessedAction.ADD_ITEM.name().equals(e.getActionCommand())) {\n\t\t\t\tItem selectedItem = jAddItemDialog.show();\n\t\t\t\tif (selectedItem != null) {\n\t\t\t\t\titems.put(selectedItem, 1L);\n\t\t\t\t\treprocessedData.addItem(eventList, selectedItem, 1L);\n\t\t\t\t}\n\t\t\t} else if (ReprocessedAction.IMPORT_TEXT_FORMATS.name().equals(e.getActionCommand())) { //Add stockpile (EFT Import)\n\t\t\t\timportText();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class TotalComparator implements Comparator<ReprocessedInterface> {\n\n\t\tprivate final Comparator<ReprocessedInterface> comparator;\n\n\t\tpublic TotalComparator() {\n\t\t\tList<Comparator<ReprocessedInterface>> comparators = new ArrayList<>();\n\t\t\tcomparators.add(new ReprocessedSeparatorComparator());\n\t\t\tcomparators.add(new InnerTotalComparator());\n\t\t\tcomparator = GlazedLists.chainComparators(comparators);\n\t\t}\n\n\t\t@Override\n\t\tpublic int compare(final ReprocessedInterface o1, final ReprocessedInterface o2) {\n\t\t\treturn comparator.compare(o1, o2);\n\t\t}\n\n\t\tprivate static class InnerTotalComparator implements Comparator<ReprocessedInterface> {\n\t\t\t@Override\n\t\t\tpublic int compare(final ReprocessedInterface o1, final ReprocessedInterface o2) {\n\t\t\t\tif (o1.isTotal() && o2.isTotal()) {\n\t\t\t\t\treturn 0; //Equal (both StockpileTotal)\n\t\t\t\t} else if (o1.isTotal()) {\n\t\t\t\t\treturn 1; //After\n\t\t\t\t} else if (o2.isTotal()) {\n\t\t\t\t\treturn -1; //Before\n\t\t\t\t} else {\n\t\t\t\t\treturn 0; //Equal (not StockpileTotal)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate class ReprocessedFilterControl extends FilterControl<ReprocessedInterface> {\n\n\t\tpublic ReprocessedFilterControl(EventList<ReprocessedInterface> exportEventList) {\n\t\t\tsuper(program.getMainWindow().getFrame(),\n\t\t\t\t\tNAME,\n\t\t\t\t\ttableFormat,\n\t\t\t\t\teventList,\n\t\t\t\t\texportEventList,\n\t\t\t\t\tfilterList\n\t\t\t\t\t);\n\t\t}\n\n\t\t@Override\n\t\tprotected void afterFilter() {\n\t\t\tjTable.loadExpandedState();\n\t\t}\n\n\t\t@Override\n\t\tprotected void beforeFilter() {\n\t\t\tjTable.saveExpandedState();\n\t\t}\n\n\t\t@Override\n\t\tpublic void saveSettings(final String msg) {\n\t\t\tprogram.saveSettings(\"Reprocessed Table: \" + msg); //Save Reprocessed Filters and Export Settings\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/reprocessed/ReprocessedTableFormat.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.reprocessed;\r\n\r\nimport java.util.Comparator;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.i18n.TabsReprocessed;\r\n\r\n\r\npublic enum ReprocessedTableFormat implements EnumTableColumn<ReprocessedInterface> {\r\n\tNAME(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsReprocessed.get().columnName();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final ReprocessedInterface from) {\r\n\t\t\treturn from.getName();\r\n\t\t}\r\n\t},\r\n\tQUANTITY_100(Long.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsReprocessed.get().columnQuantity100();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsReprocessed.get().columnQuantity100ToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final ReprocessedInterface from) {\r\n\t\t\treturn from.getQuantity100();\r\n\t\t}\r\n\t},\r\n\tQUANTITY_MAX(Long.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsReprocessed.get().columnQuantityMax();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsReprocessed.get().columnQuantityMaxToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final ReprocessedInterface from) {\r\n\t\t\treturn from.getQuantityMax();\r\n\t\t}\r\n\t},\r\n\tQUANTITY_SKILL(Long.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsReprocessed.get().columnQuantitySkill();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsReprocessed.get().columnQuantitySkillToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final ReprocessedInterface from) {\r\n\t\t\treturn from.getQuantitySkill();\r\n\t\t}\r\n\t},\r\n\tPRICE(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsReprocessed.get().columnPrice();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final ReprocessedInterface from) {\r\n\t\t\treturn from.getDynamicPrice();\r\n\t\t}\r\n\t},\r\n\tVALUE_MAX(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsReprocessed.get().columnValueMax();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final ReprocessedInterface from) {\r\n\t\t\treturn from.getValueMax();\r\n\t\t}\r\n\t},\r\n\tVALUE_SKILL(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsReprocessed.get().columnValueSkill();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final ReprocessedInterface from) {\r\n\t\t\treturn from.getValueSkill();\r\n\t\t}\r\n\t},\r\n\tVALUE_DIFFERENCE(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsReprocessed.get().columnValueDifference();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final ReprocessedInterface from) {\r\n\t\t\treturn from.getValueDifference();\r\n\t\t}\r\n\t},\r\n\tTYPE_ID(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsReprocessed.get().columnTypeID();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final ReprocessedInterface from) {\r\n\t\t\treturn from.getItem().getTypeID();\r\n\t\t}\r\n\t};\r\n\r\n\tprivate final Class<?> type;\r\n\tprivate final Comparator<?> comparator;\r\n\tprivate ReprocessedTableFormat(final Class<?> type) {\r\n\t\tthis.type = type;\r\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\r\n\t}\r\n\t@Override\r\n\tpublic Class<?> getType() {\r\n\t\treturn type;\r\n\t}\r\n\t@Override\r\n\tpublic Comparator<?> getComparator() {\r\n\t\treturn comparator;\r\n\t}\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn getColumnName();\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/reprocessed/ReprocessedTotal.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.reprocessed;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.i18n.TabsReprocessed;\r\n\r\n\r\npublic class ReprocessedTotal implements ReprocessedInterface {\r\n\r\n\tprivate final Item item;\r\n\tprivate final double sellPrice;\r\n\tprivate final ReprocessedGrandTotal grandTotal;\r\n\r\n\t//Calculated values\r\n\tprivate long count;\r\n\tprivate long portionSize;\r\n\tprivate long quantity100 = 0;\r\n\tprivate long quantityMax = 0;\r\n\tprivate long quantitySkill = 0;\r\n\tprivate double valueMax = 0;\r\n\tprivate double valueSkill = 0;\r\n\tprivate final List<ReprocessedInterface> items = new ArrayList<>();\r\n\tprivate final List<Double> prices = new ArrayList<>();\r\n\r\n\tpublic ReprocessedTotal(ReprocessedGrandTotal grandTotal, Item item, double sellPrice, long count) {\r\n\t\tthis.item = item;\r\n\t\tthis.sellPrice = sellPrice;\r\n\t\tthis.grandTotal = grandTotal;\r\n\t\tthis.count = count;\r\n\t}\r\n\r\n\tpublic void add(final ReprocessedInterface reprocessed) {\r\n\t\titems.add(reprocessed);\r\n\t\tportionSize = reprocessed.getPortionSize();\r\n\t\tquantity100 = quantity100 + reprocessed.getQuantity100();\r\n\t\tquantityMax = quantityMax + reprocessed.getQuantityMax();\r\n\t\tquantitySkill = quantitySkill + reprocessed.getQuantitySkill();\r\n\t\tvalueMax = valueMax + reprocessed.getValueMax();\r\n\t\tvalueSkill = valueSkill + reprocessed.getValueSkill();\r\n\t\tprices.add(reprocessed.getDynamicPrice());\r\n\t}\r\n\r\n\tpublic List<ReprocessedInterface> getItems() {\r\n\t\treturn items;\r\n\t}\r\n\r\n\tpublic long getCount() {\r\n\t\treturn count;\r\n\t}\r\n\r\n\tprotected void reCalc() {\r\n\t\tquantity100 = 0;\r\n\t\tquantityMax = 0;\r\n\t\tquantitySkill = 0;\r\n\t\tvalueMax = 0;\r\n\t\tvalueSkill = 0;\r\n\t\tfor (ReprocessedInterface reprocessed : items) {\r\n\t\t\tquantity100 = quantity100 + reprocessed.getQuantity100();\r\n\t\t\tquantityMax = quantityMax + reprocessed.getQuantityMax();\r\n\t\t\tquantitySkill = quantitySkill + reprocessed.getQuantitySkill();\r\n\t\t\tvalueMax = valueMax + reprocessed.getValueMax();\r\n\t\t\tvalueSkill = valueSkill + reprocessed.getValueSkill();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void setCount(long count) {\r\n\t\tboolean update = this.count != count;\r\n\t\tthis.count = count;\r\n\t\tif (update) {\r\n\t\t\treCalc();\r\n\t\t\tif (grandTotal != null) {\r\n\t\t\t\tgrandTotal.reCalc();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic double getSellPrice() {\r\n\t\treturn sellPrice;\r\n\t}\r\n\r\n\tpublic String getTypeName() {\r\n\t\treturn item.getTypeName();\r\n\t}\r\n\r\n\tpublic double getValue() {\r\n\t\treturn getSellPrice() * count;\r\n\t}\r\n\r\n\tpublic boolean isSell() {\r\n\t\treturn getValue() > getValueSkill();\r\n\t}\r\n\r\n\tpublic boolean isReprocess() {\r\n\t\treturn getValue() < getValueSkill();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean isGrandTotal() {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tpublic ReprocessedGrandTotal getGrandTotal() {\r\n\t\treturn grandTotal;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Item getItem() {\r\n\t\treturn item;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic long getItemCount() {\r\n\t\treturn getQuantitySkill();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getName() {\r\n\t\treturn TabsReprocessed.get().total();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic long getPortionSize() {\r\n\t\treturn portionSize;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic long getQuantity100() {\r\n\t\treturn quantity100;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic long getQuantityMax() {\r\n\t\treturn quantityMax;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic long getQuantitySkill() {\r\n\t\treturn quantitySkill;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Double getDynamicPrice() {\r\n\t\tdouble total = 0;\r\n\t\tfor (double price : prices) {\r\n\t\t\ttotal = total + price;\r\n\t\t}\r\n\t\treturn total / prices.size();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic double getValueMax() {\r\n\t\treturn valueMax;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic double getValueSkill() {\r\n\t\treturn valueSkill;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic double getValueDifference() {\r\n\t\treturn getValueMax() - getValueSkill();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean isTotal() {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic ReprocessedTotal getTotal() {\r\n\t\treturn this;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getCopyString() {\r\n\t\tStringBuilder builder = new StringBuilder();\r\n\t\tbuilder.append(getTypeName());\r\n\t\tbuilder.append(\"\\t\");\r\n\t\tbuilder.append(getSellPrice());\r\n\t\tbuilder.append(\"\\t\");\r\n\t\tbuilder.append(getValue());\r\n\t\treturn builder.toString();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(final ReprocessedInterface o) {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 7;\r\n\t\thash = 97 * hash + (this.item != null ? this.item.hashCode() : 0);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal ReprocessedTotal other = (ReprocessedTotal) obj;\r\n\t\tif (this.item != other.item && (this.item == null || !this.item.equals(other.item))) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/routing/EditableListModel.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.routing;\n\nimport java.util.*;\nimport javax.swing.AbstractListModel;\n\npublic class EditableListModel<T> extends AbstractListModel<T> {\n\n\tprivate static final long serialVersionUID = 1L;\n\tprivate List<T> backed = new ArrayList<>();\n\tprivate Comparator<T> sortComparator = new Comparator<T>() {\n\t\t@Override\n\t\tpublic int compare(final T o1, final T o2) {\n\t\t\treturn o2.hashCode() - o1.hashCode();\n\t\t}\n\t};\n\n\tpublic EditableListModel() {\n\t}\n\n\tpublic EditableListModel(final List<T> initial) {\n\t\tbacked.addAll(initial);\n\t}\n\n\tpublic EditableListModel(final List<T> initial, final Comparator<T> sortComparator) {\n\t\tbacked.addAll(initial);\n\t\tsetSortComparator(sortComparator);\n\t}\n\n\tpublic final void setSortComparator(final Comparator<T> sortComparator) {\n\t\tthis.sortComparator = sortComparator;\n\t\tCollections.sort(backed, sortComparator);\n\t}\n\n\tpublic Comparator<T> getSortComparator() {\n\t\treturn sortComparator;\n\t}\n\n\tpublic List<? extends T> getAll() {\n\t\treturn Collections.unmodifiableList(backed);\n\t}\n\n\t@Override\n\tpublic int getSize() {\n\t\treturn backed.size();\n\t}\n\n\t@Override\n\tpublic T getElementAt(final int index) {\n\t\treturn backed.get(index);\n\t}\n\n\tpublic T remove(final int index) {\n\t\tT b = backed.remove(index);\n\t\tfireRemoved(index, index);\n\t\treturn b;\n\t}\n\n\tpublic void clear() {\n\t\tif (backed.isEmpty()) {\n\t\t\treturn;\n\t\t}\n\t\tint end = backed.size() - 1;\n\t\tbacked.clear();\n\t\tfireRemoved(0, end);\n\t}\n\n\tpublic boolean remove(final T o) {\n\t\tint index = backed.indexOf(o);\n\t\tboolean b = backed.remove(o);\n\t\tif (b) {\n\t\t\tfireRemoved(index, index);\n\t\t}\n\t\treturn b;\n\t}\n\n\tpublic boolean add(final T e) {\n\t\tboolean b = backed.add(e);\n\t\tCollections.sort(backed, sortComparator);\n\t\tint index = backed.indexOf(e);\n\t\tfireAdded(index, index);\n\t\treturn b;\n\t}\n\n\tpublic boolean addAll(final Collection<? extends T> c) {\n\t\tboolean b = true;\n\t\tfor (T t : c) {\n\t\t\tb = add(t) && b;\n\t\t}\n\t\treturn b;\n\t}\n\n\tpublic boolean contains(final T o) {\n\t\treturn backed.contains(o);\n\t}\n\n\tprivate void fireRemoved(final int index0, final int index1) {\n\t\tsuper.fireIntervalRemoved(this, index0, index1);\n\t}\n\n\tprivate void fireAdded(final int index0, final int index1) {\n\t\tsuper.fireIntervalAdded(this, index0, index1);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/routing/JAvoid.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.routing;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.awt.event.MouseAdapter;\r\nimport java.awt.event.MouseEvent;\r\nimport java.awt.event.MouseListener;\r\nimport java.util.ArrayList;\r\nimport java.util.Collections;\r\nimport java.util.Comparator;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Set;\r\nimport javax.swing.BorderFactory;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JComboBox;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JList;\r\nimport javax.swing.JMenuItem;\r\nimport javax.swing.JPanel;\r\nimport javax.swing.JScrollPane;\r\nimport javax.swing.event.ListSelectionEvent;\r\nimport javax.swing.event.ListSelectionListener;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.RouteAvoidSettings;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JAutoCompleteDialog;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JDropDownButton;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JFixedToolBar;\r\nimport net.nikr.eve.jeveasset.i18n.TabsRouting;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\n\r\n\r\npublic class JAvoid {\r\n\r\n\tpublic static final SolarSystemComparator SOLAR_SYSTEM_COMPARATOR = new SolarSystemComparator();\r\n\r\n\tprivate enum AvoidAction {\r\n\t\tAVOID_ADD,\r\n\t\tAVOID_REMOVE,\r\n\t\tAVOID_CLEAR,\r\n\t\tAVOID_SAVE,\r\n\t\tAVOID_LOAD,\r\n\t\tAVOID_MANAGE,\r\n\t\tSAVE\r\n\t}\r\n\t//Filter\r\n\tprivate final JList<SolarSystem> jAvoid;\r\n\tprivate final EditableListModel<SolarSystem> avoidModel = new EditableListModel<>();\r\n\tprivate final JButton jAdd;\r\n\tprivate final JButton jRemove;\r\n\tprivate final JButton jClear;\r\n\tprivate final JButton jSave;\r\n\tprivate final JDropDownButton jLoad;\r\n\tprivate final JLabel jSecurityIcon;\r\n\tprivate final JComboBox<Double> jSecurityMinimum;\r\n\tprivate final JLabel jSecuritySeparatorLabel;\r\n\tprivate final JComboBox<Double> jSecurityMaximum;\r\n\tprivate final JPanel jAvoidPanel;\r\n\tprivate final JPanel jSecurityPanel;\r\n\r\n\t//Dialogs\r\n\tprivate final JAutoCompleteDialog<String> jSaveSystemDialog;\r\n\tprivate final JAvoidManagerDialog jAvoidManagerDialog;\r\n\tprivate final JAutoCompleteDialog<SolarSystem> jSystemDialog;\r\n\r\n\tprivate final Program program;\r\n\tprivate final ListenerClass listener;\r\n\tprivate final RouteAvoidSettings avoidSettings;\r\n\tprivate final boolean saveSettings;\r\n\tprivate final UpdateFilter updateFilter;\r\n\r\n\tpublic <E extends ActionListener & MouseListener> JAvoid(Program program, RouteAvoidSettings avoidSettings, boolean saveSettings, UpdateFilter updateFilter) {\r\n\t\tthis.program = program;\r\n\t\tthis.listener = new ListenerClass();\r\n\t\tthis.avoidSettings = avoidSettings;\r\n\t\tthis.saveSettings = saveSettings;\r\n\t\tthis.updateFilter = updateFilter;\r\n\r\n\t\tjSaveSystemDialog = new JAutoCompleteDialog<>(program, TabsRouting.get().saveFilterTitle(), Images.TOOL_ROUTING.getImage(), TabsRouting.get().saveFilterMsg(), false, JAutoCompleteDialog.STRING_OPTIONS);\r\n\t\tjAvoidManagerDialog = new JAvoidManagerDialog(this, program);\r\n\t\tjSystemDialog = new JAutoCompleteDialog<>(program, TabsRouting.get().addSystemTitle(), Images.TOOL_ROUTING.getImage(), TabsRouting.get().addSystemSelect(), true, JAutoCompleteDialog.SOLAR_SYSTEM_OPTIONS);\r\n\r\n\t\tjAvoidPanel = new JPanel();\r\n\t\tjAvoidPanel.setBorder(BorderFactory.createTitledBorder(TabsRouting.get().avoid()));\r\n\t\tGroupLayout avoidLayout = new GroupLayout(jAvoidPanel);\r\n\t\tjAvoidPanel.setLayout(avoidLayout);\r\n\t\tavoidLayout.setAutoCreateGaps(true);\r\n\t\tavoidLayout.setAutoCreateContainerGaps(true);\r\n\r\n\t\tjSecurityPanel = new JPanel();\r\n\t\tjSecurityPanel.setBorder(BorderFactory.createTitledBorder(TabsRouting.get().security()));\r\n\t\tGroupLayout securityLayout = new GroupLayout(jSecurityPanel);\r\n\t\tjSecurityPanel.setLayout(securityLayout);\r\n\t\tsecurityLayout.setAutoCreateGaps(true);\r\n\t\tsecurityLayout.setAutoCreateContainerGaps(true);\r\n\r\n\t\tavoidModel.setSortComparator(JAvoid.SOLAR_SYSTEM_COMPARATOR);\r\n\t\tavoidModel.addAll(avoidSettings.getAvoid().values());\r\n\r\n\t\tjAvoid = new JList<>(avoidModel);\r\n\t\tjAvoid.addMouseListener(listener);\r\n\t\tjAvoid.addListSelectionListener(new ListSelectionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void valueChanged(ListSelectionEvent e) {\r\n\t\t\t\tjRemove.setEnabled(jAvoid.getSelectedIndices().length > 0);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tJFixedToolBar jToolBar = new JFixedToolBar(JFixedToolBar.Orientation.VERTICAL);\r\n\r\n\t\tjAdd = new JButton(TabsRouting.get().avoidAdd(), Images.EDIT_ADD.getIcon());\r\n\t\tjAdd.setActionCommand(AvoidAction.AVOID_ADD.name());\r\n\t\tjAdd.addActionListener(listener);\r\n\t\tjToolBar.addButton(jAdd);\r\n\r\n\t\tjRemove = new JButton(TabsRouting.get().avoidRemove(), Images.EDIT_DELETE.getIcon());\r\n\t\tjRemove.setActionCommand(AvoidAction.AVOID_REMOVE.name());\r\n\t\tjRemove.addActionListener(listener);\r\n\t\tjRemove.setEnabled(false);\r\n\t\tjToolBar.addButton(jRemove);\r\n\r\n\t\tjClear = new JButton(TabsRouting.get().avoidClear(), Images.FILTER_CLEAR.getIcon());\r\n\t\tjClear.setActionCommand(AvoidAction.AVOID_CLEAR.name());\r\n\t\tjClear.addActionListener(listener);\r\n\t\tjToolBar.addButton(jClear);\r\n\r\n\t\tjSave = new JButton(TabsRouting.get().avoidSave(), Images.FILTER_SAVE.getIcon());\r\n\t\tjSave.setActionCommand(AvoidAction.AVOID_SAVE.name());\r\n\t\tjSave.addActionListener(listener);\r\n\t\tjToolBar.addButton(jSave);\r\n\r\n\t\tjLoad = new JDropDownButton(TabsRouting.get().avoidLoad(), Images.FILTER_LOAD.getIcon());\r\n\t\tjToolBar.addButton(jLoad);\r\n\r\n\t\tJScrollPane jAvoidScroll = new JScrollPane(jAvoid);\r\n\r\n\t\tDouble[] security = {0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0};\r\n\r\n\t\tjSecurityIcon = new JLabel();\r\n\r\n\t\tjSecurityMinimum = new JComboBox<>(security);\r\n\t\tjSecurityMinimum.setSelectedItem(avoidSettings.getSecMin());\r\n\t\tjSecurityMinimum.setActionCommand(AvoidAction.SAVE.name());\r\n\t\tjSecurityMinimum.addActionListener(listener);\r\n\r\n\t\tjSecuritySeparatorLabel = new JLabel(\" - \");\r\n\r\n\t\tjSecurityMaximum = new JComboBox<>(security);\r\n\t\tjSecurityMaximum.setSelectedItem(avoidSettings.getSecMax());\r\n\t\tjSecurityMaximum.setActionCommand(AvoidAction.SAVE.name());\r\n\t\tjSecurityMaximum.addActionListener(listener);\r\n\r\n\t\tupdateFilterLabels();\r\n\t\tupdateSavedFilters();\r\n\r\n\t\tavoidLayout.setHorizontalGroup(\r\n\t\t\tavoidLayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(jAvoidScroll, 300, 300, Integer.MAX_VALUE)\r\n\t\t\t\t.addComponent(jToolBar)\r\n\t\t);\r\n\t\tavoidLayout.setVerticalGroup(\r\n\t\t\tavoidLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false)\r\n\t\t\t\t.addComponent(jAvoidScroll, 160, 160, Integer.MAX_VALUE)\r\n\t\t\t\t.addComponent(jToolBar)\r\n\t\t);\r\n\t\tsecurityLayout.setHorizontalGroup(\r\n\t\t\tsecurityLayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(jSecurityIcon)\r\n\t\t\t\t.addComponent(jSecurityMinimum, 80, 80, Short.MAX_VALUE)\r\n\t\t\t\t.addComponent(jSecuritySeparatorLabel)\r\n\t\t\t\t.addComponent(jSecurityMaximum, 80, 80, Short.MAX_VALUE)\r\n\t\t);\r\n\t\tsecurityLayout.setVerticalGroup(\r\n\t\t\tsecurityLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false)\r\n\t\t\t\t.addComponent(jSecurityIcon, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jSecurityMinimum, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jSecuritySeparatorLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addComponent(jSecurityMaximum, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t);\r\n\t}\r\n\r\n\tpublic void setData(RouteAvoidSettings current) {\r\n\t\tavoidSettings.update(current);\r\n\t\tavoidModel.clear();\r\n\t\tavoidModel.addAll(current.getAvoid().values());\r\n\t\tjSecurityMinimum.setSelectedItem(current.getSecMin());\r\n\t\tjSecurityMaximum.setSelectedItem(current.getSecMax());\r\n\t\tupdateFilterLabels();\r\n\t\tupdateSavedFilters();\r\n\t}\r\n\r\n\tpublic void setEnabled(boolean b) {\r\n\t\tjAvoid.setEnabled(b);\r\n\t\tjAdd.setEnabled(b);\r\n\t\tif (b) {\r\n\t\t\tjRemove.setEnabled(jAvoid.getSelectedIndices().length > 0);\r\n\t\t\tjClear.setEnabled(!avoidModel.getAll().isEmpty());\r\n\t\t\tjSave.setEnabled(!avoidModel.getAll().isEmpty());\r\n\t\t\tjLoad.setEnabled(!avoidSettings.getPresets().isEmpty());\r\n\t\t} else {\r\n\t\t\tjRemove.setEnabled(b);\r\n\t\t\tjClear.setEnabled(b);\r\n\t\t\tjSave.setEnabled(b);\r\n\t\t\tjLoad.setEnabled(b);\r\n\t\t}\r\n\t\tjSecurityMinimum.setEnabled(b);\r\n\t\tjSecuritySeparatorLabel.setEnabled(b);\r\n\t\tjSecurityMaximum.setEnabled(b);\r\n\t}\r\n\r\n\tpublic Double getSecurityMinimum() {\r\n\t\tif (jSecurityMinimum != null) {\r\n\t\t\treturn (Double) jSecurityMinimum.getSelectedItem();\r\n\t\t} else {\r\n\t\t\treturn 0.0;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void setSecurityMaximum(Double d) {\r\n\t\tjSecurityMaximum.setSelectedItem(d);\r\n\t}\r\n\r\n\tpublic Double getSecurityMaximum() {\r\n\t\tif (jSecurityMaximum != null) {\r\n\t\t\treturn (Double) jSecurityMaximum.getSelectedItem();\r\n\t\t} else {\r\n\t\t\treturn 1.0;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void updateSystemDialog(Set<SolarSystem> nodes) {\r\n\t\tjSystemDialog.updateData(nodes); //Will be replaced by valid systems by processRouteInner()\r\n\t}\r\n\r\n\tpublic final void updateFilterLabels() {\r\n\t\tdouble secMin = avoidSettings.getSecMin();\r\n\t\tif (secMin == 0.0) {\r\n\t\t\tjSecurityIcon.setIcon(Images.UPDATE_CANCELLED.getIcon());\r\n\t\t} else if (secMin >= 0.5) {\r\n\t\t\tjSecurityIcon.setIcon(Images.UPDATE_DONE_OK.getIcon());\r\n\t\t} else {\r\n\t\t\tjSecurityIcon.setIcon(Images.UPDATE_DONE_SOME.getIcon());\r\n\t\t}\r\n\t\tjClear.setEnabled(!avoidModel.getAll().isEmpty());\r\n\t\tjSave.setEnabled(!avoidModel.getAll().isEmpty());\r\n\t\tjLoad.setEnabled(!avoidSettings.getPresets().isEmpty());\r\n\t\tif (updateFilter != null) {\r\n\t\t\tupdateFilter.updateFilterLabels();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void updateSavedFilters() {\r\n\t\tjLoad.removeAll();\r\n\r\n\t\tJMenuItem jManage = new JMenuItem(TabsRouting.get().avoidManage(), Images.DIALOG_SETTINGS.getIcon());\r\n\t\tjManage.setActionCommand(AvoidAction.AVOID_MANAGE.name());\r\n\t\tjManage.addActionListener(listener);\r\n\t\tjLoad.add(jManage);\r\n\r\n\t\tif (!avoidSettings.getPresets().isEmpty()) {\r\n\t\t\tjLoad.addSeparator();\r\n\t\t}\r\n\r\n\t\tArrayList<String> presets = new ArrayList<>(avoidSettings.getPresets().keySet());\r\n\t\tCollections.sort(presets);\r\n\t\tfor (String name : presets) {\r\n\t\t\tJMenuItem jMenuItem = new JLoadMenuItem(name, avoidSettings.getPresets().get(name));\r\n\t\t\tjMenuItem.setActionCommand(AvoidAction.AVOID_LOAD.name());\r\n\t\t\tjMenuItem.addActionListener(listener);\r\n\t\t\tjLoad.add(jMenuItem);\r\n\t\t}\r\n\t\tjLoad.setEnabled(!avoidSettings.getPresets().isEmpty());\r\n\t\tjAvoidManagerDialog.updateData();\r\n\t}\r\n\r\n\tpublic void loadFilter(Set<Long> systemIds) {\r\n\t\tavoidModel.clear();\r\n\t\tif (saveSettings) {\r\n\t\t\tSettings.lock(\"Route Avoid (Load Filter)\");\r\n\t\t}\r\n\t\tavoidSettings.getAvoid().clear();\r\n\t\tfor (Long systemID : systemIds) {\r\n\t\t\tSolarSystem system = new SolarSystem(ApiIdConverter.getLocation(systemID));\r\n\t\t\tavoidSettings.getAvoid().put(system.getSystemID(), system);\r\n\t\t\tavoidModel.add(system);\r\n\t\t}\r\n\t\tif (saveSettings) {\r\n\t\t\tSettings.unlock(\"Route Avoid (Load Filter)\");\r\n\t\t\tprogram.saveSettings(\"Route Avoid (Load Filter)\");\r\n\t\t}\r\n\t\tupdateFilterLabels();\r\n\t}\r\n\r\n\tpublic void deleteFilters(List<String> list) {\r\n\t\tif (saveSettings) {\r\n\t\t\tSettings.lock(\"Route Avoid (Delete Filters)\");\r\n\t\t}\r\n\t\tfor (String filter : list) {\r\n\t\t\tavoidSettings.getPresets().remove(filter);\r\n\t\t}\r\n\t\tif (saveSettings) {\r\n\t\t\tSettings.unlock(\"Route Avoid (Delete Filters)\");\r\n\t\t\tprogram.saveSettings(\"Route Avoid (Delete Filters)\");\r\n\t\t}\r\n\t\tupdateSavedFilters();\r\n\t}\r\n\r\n\tpublic void renameFilter(String name, String oldName) {\r\n\t\tif (saveSettings) {\r\n\t\t\tSettings.lock(\"Route Avoid (Rename Filter)\");\r\n\t\t}\r\n\t\tSet<Long> systemIDs = avoidSettings.getPresets().remove(oldName);\r\n\t\tavoidSettings.getPresets().put(name, systemIDs);\r\n\t\tif (saveSettings) {\r\n\t\t\tSettings.unlock(\"Route Avoid (Rename Filter)\");\r\n\t\t\tprogram.saveSettings(\"Route Avoid (Rename Filter)\");\r\n\t\t}\r\n\t\tupdateSavedFilters();\r\n\t}\r\n\r\n\tpublic void mergeFilters(String name, List<String> list) {\r\n\t\tSet<Long> systemIDs = new HashSet<>();\r\n\t\tif (saveSettings) {\r\n\t\t\tSettings.lock(\"Route Avoid (Merge Filters)\");\r\n\t\t}\r\n\t\tfor (String mergeName : list) {\r\n\t\t\tsystemIDs.addAll(avoidSettings.getPresets().get(mergeName));\r\n\t\t}\r\n\t\tavoidSettings.getPresets().put(name, systemIDs);\r\n\t\tif (saveSettings) {\r\n\t\t\tSettings.unlock(\"Route Avoid (Merge Filters)\");\r\n\t\t\tprogram.saveSettings(\"Route Avoid (Merge Filters)\");\r\n\t\t}\r\n\t\tupdateSavedFilters();\r\n\t}\r\n\r\n\tprivate void removeSystems() {\r\n\t\tif (saveSettings) {\r\n\t\t\tSettings.lock(\"Route Avoid (Delete Systems)\");\r\n\t\t}\r\n\t\tfor (SolarSystem system : jAvoid.getSelectedValuesList()) {\r\n\t\t\tavoidModel.remove(system);\r\n\t\t\tavoidSettings.getAvoid().remove(system.getSystemID());\r\n\t\t}\r\n\t\tif (saveSettings) {\r\n\t\t\tSettings.unlock(\"Route Avoid (Delete Systems)\");\r\n\t\t\tprogram.saveSettings(\"Route Avoid (Delete Systems)\");\r\n\t\t}\r\n\t\tupdateFilterLabels();\r\n\t}\r\n\r\n\tpublic JPanel getAvoidPanel() {\r\n\t\treturn jAvoidPanel;\r\n\t}\r\n\r\n\tpublic JPanel getSecurityPanel() {\r\n\t\treturn jSecurityPanel;\r\n\t}\r\n\r\n\tpublic static class SolarSystemComparator implements Comparator<SolarSystem> {\r\n\r\n\t\t@Override\r\n\t\tpublic int compare(SolarSystem o1, SolarSystem o2) {\r\n\t\t\treturn o1.getName().compareToIgnoreCase(o2.getName());\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n\tpublic static class JLoadMenuItem extends JMenuItem {\r\n\r\n\t\tprivate final Set<Long> systemIDs;\r\n\r\n\t\tpublic JLoadMenuItem(String name, Set<Long> systemIDs) {\r\n\t\t\tsuper(name, Images.FILTER_LOAD.getIcon());\r\n\t\t\tthis.systemIDs = systemIDs;\r\n\t\t}\r\n\r\n\t\tpublic Set<Long> getSystemIDs() {\r\n\t\t\treturn systemIDs;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class ListenerClass extends MouseAdapter implements ActionListener {\r\n\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\tif (AvoidAction.AVOID_REMOVE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tremoveSystems();\r\n\t\t\t} else if (AvoidAction.AVOID_CLEAR.name().equals(e.getActionCommand())) {\r\n\t\t\t\tif (saveSettings) {\r\n\t\t\t\t\tSettings.lock(\"Route Avoid (Clear Systems)\");\r\n\t\t\t\t}\r\n\t\t\t\tavoidSettings.getAvoid().clear();\r\n\t\t\t\tavoidModel.clear();\r\n\t\t\t\tupdateFilterLabels();\r\n\t\t\t\tif (saveSettings) {\r\n\t\t\t\t\tSettings.unlock(\"Route Avoid (Clear Systems)\");\r\n\t\t\t\t\tprogram.saveSettings(\"Route Avoid (Clear Systems)\");\r\n\t\t\t\t}\r\n\t\t\t} else if (AvoidAction.AVOID_ADD.name().equals(e.getActionCommand())) {\r\n\t\t\t\tSolarSystem system = jSystemDialog.show();\r\n\t\t\t\tif (system != null) {\r\n\t\t\t\t\tif (saveSettings) {\r\n\t\t\t\t\t\tSettings.lock(\"Route Avoid (Add System)\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\tavoidSettings.getAvoid().put(system.getSystemID(), system);\r\n\t\t\t\t\tavoidModel.clear();\r\n\t\t\t\t\tavoidModel.addAll(avoidSettings.getAvoid().values());\r\n\t\t\t\t\tif (saveSettings) {\r\n\t\t\t\t\t\tSettings.unlock(\"Route Avoid (Add System)\");\r\n\t\t\t\t\t\tprogram.saveSettings(\"Route Avoid (Add System)\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\tupdateFilterLabels();\r\n\t\t\t\t}\r\n\t\t\t} else if (AvoidAction.AVOID_SAVE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tjSaveSystemDialog.updateData(new ArrayList<>(avoidSettings.getPresets().keySet()));\r\n\t\t\t\tString name = jSaveSystemDialog.show();\r\n\t\t\t\tif (name != null) {\r\n\t\t\t\t\tif (saveSettings) {\r\n\t\t\t\t\t\tSettings.lock(\"Route Avoid (Save Filter)\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\tSet<Long> systemIDs = new HashSet<>();\r\n\t\t\t\t\tfor (SolarSystem system : avoidModel.getAll()) {\r\n\t\t\t\t\t\tsystemIDs.add(system.getSystemID());\r\n\t\t\t\t\t}\r\n\t\t\t\t\tavoidSettings.getPresets().put(name, systemIDs);\r\n\t\t\t\t\tif (saveSettings) {\r\n\t\t\t\t\t\tSettings.unlock(\"Route Avoid (Save Filter)\");\r\n\t\t\t\t\t\tprogram.saveSettings(\"Route Avoid (Save Filter)\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\tupdateSavedFilters();\r\n\t\t\t\t}\r\n\t\t\t} else if (AvoidAction.AVOID_LOAD.name().equals(e.getActionCommand())) {\r\n\t\t\t\tObject source = e.getSource();\r\n\t\t\t\tif (source instanceof JLoadMenuItem) {\r\n\t\t\t\t\tJLoadMenuItem menuItem = (JLoadMenuItem) source;\r\n\t\t\t\t\tloadFilter(menuItem.getSystemIDs());\r\n\t\t\t\t}\r\n\t\t\t} else if (AvoidAction.AVOID_MANAGE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tjAvoidManagerDialog.updateData();\r\n\t\t\t\tjAvoidManagerDialog.setVisible(true);\r\n\t\t\t} else if (AvoidAction.SAVE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tdouble min = getSecurityMinimum();\r\n\t\t\t\tdouble max = getSecurityMaximum();\r\n\t\t\t\tif (max < min) {\r\n\t\t\t\t\tmax = min;\r\n\t\t\t\t\tsetSecurityMaximum(min);\r\n\t\t\t\t}\r\n\t\t\t\tif (saveSettings) {\r\n\t\t\t\t\tSettings.lock(\"Route Avoid (Security)\");\r\n\t\t\t\t}\r\n\t\t\t\tavoidSettings.setSecMin(min);\r\n\t\t\t\tavoidSettings.setSecMax(max);\r\n\t\t\t\tif (saveSettings) {\r\n\t\t\t\t\tSettings.unlock(\"Route Avoid (Security)\");\r\n\t\t\t\t\tprogram.saveSettings(\"Route Avoid (Security)\");\r\n\t\t\t\t}\r\n\t\t\t\tupdateFilterLabels();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void mouseClicked(MouseEvent e) {\r\n\t\t\tif (e.getButton() == MouseEvent.BUTTON1\r\n\t\t\t\t\t\t&& e.getClickCount()% 2 == 0\r\n\t\t\t\t\t\t&& !e.isControlDown()\r\n\t\t\t\t\t\t&& !e.isShiftDown()\r\n\t\t\t\t\t\t) {\r\n\t\t\t\tif (e.getSource().equals(jAvoid) && jAvoid.isEnabled()) {\r\n\t\t\t\t\tremoveSystems();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static interface UpdateFilter {\r\n\t\tpublic void updateFilterLabels();\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/routing/JAvoidManagerDialog.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.routing;\r\n\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JManagerDialog;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\nimport net.nikr.eve.jeveasset.i18n.TabsRouting;\r\n\r\n\r\npublic class JAvoidManagerDialog extends JManagerDialog {\r\n\r\n\tprivate final JAvoid jAvoid;\r\n\r\n\tpublic JAvoidManagerDialog(JAvoid jAvoid, Program program) {\r\n\t\tsuper(program, program.getMainWindow().getFrame(), TabsRouting.get().manageFiltersTitle(), true, false, false, true, false);\r\n\t\tthis.jAvoid = jAvoid;\r\n\t}\r\n\r\n\tpublic void updateData() {\r\n\t\tupdate(Settings.get().getRoutingSettings().getPresets().keySet());\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void load(String name) {\r\n\t\tjAvoid.loadFilter(Settings.get().getRoutingSettings().getPresets().get(name));\r\n\t\tsetVisible(false);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void edit(String name) {\r\n\t\t//Edit is not supported\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void merge(String name, List<String> list) {\r\n\t\tjAvoid.mergeFilters(name, list);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void copy(String fromName, String toName) {\r\n\t\t//Copy is not supported\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void rename(String name, String oldName) {\r\n\t\tjAvoid.renameFilter(name, oldName);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void delete(List<String> list) {\r\n\t\tjAvoid.deleteFilters(list);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void export(List<String> list) {\r\n\t\t//Export is not supported\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void importData() {\r\n\t\t//Import is not supported\r\n\t}\r\n\r\n\t@Override protected String textDeleteMultipleMsg(int size) { return TabsRouting.get().deleteAvoids(size); }\r\n\t@Override protected String textDelete() { return TabsRouting.get().deleteAvoid(); }\r\n\t@Override protected String textEnterName() { return TabsRouting.get().enterAvoidName(); }\r\n\t@Override protected String textMerge() { return TabsRouting.get().mergeAvoids(); }\r\n\t@Override protected String textRename() { return TabsRouting.get().renameAvoid(); }\r\n\t@Override protected String textOverwrite() { return TabsRouting.get().overwriteAvoid(); }\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/routing/JRouteEditDialog.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.routing;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.io.Serializable;\r\nimport java.util.ArrayList;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport javax.swing.DefaultListModel;\r\nimport javax.swing.DropMode;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JComponent;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JList;\r\nimport javax.swing.JOptionPane;\r\nimport javax.swing.JScrollPane;\r\nimport javax.swing.ListSelectionModel;\r\nimport javax.swing.event.ListDataEvent;\r\nimport javax.swing.event.ListDataListener;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\r\nimport net.nikr.eve.jeveasset.data.settings.RouteResult;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.settings.ShowToolSettingsPanel.ListItemTransferHandler;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\r\nimport net.nikr.eve.jeveasset.i18n.TabsRouting;\r\nimport uk.me.candle.eve.graph.DisconnectedGraphException;\r\nimport uk.me.candle.eve.graph.Graph;\r\n\r\n\r\npublic class JRouteEditDialog extends JDialogCentered {\r\n\r\n\tprivate final DefaultListModel<Route> model = new DefaultListModel<>();\r\n\tprivate final JList<Route> jRoute;\r\n\tprivate final JButton jOK;\r\n\tprivate final JLabel jJumps;\r\n\tprivate final JLabel jDelta;\r\n\tprivate final JLabel jAvoid;\r\n\tprivate final JLabel jSecurity;\r\n\tprivate final RoutingTab routingTab;\r\n\tprivate Map<Long, SolarSystem> systemCache;\r\n\tprivate Graph<SolarSystem> filteredGraph;\r\n\tprivate RouteResult routeResult;\r\n\tprivate RouteResult returnResult;\r\n\tprivate boolean updating = false;\r\n\r\n\tpublic JRouteEditDialog(RoutingTab routingTab, Program program) {\r\n\t\tsuper(program, TabsRouting.get().resultEditTitle());\r\n\t\tthis.routingTab = routingTab;\r\n\r\n\t\tjJumps = new JLabel();\r\n\t\tjDelta = new JLabel();\r\n\t\tjAvoid = new JLabel();\r\n\t\tjSecurity = new JLabel();\r\n\t\tJLabel jHelp = new JLabel(TabsRouting.get().resultEditHelp());\r\n\t\tjHelp.setEnabled(false);\r\n\r\n\t\tjRoute = new JList<>(model);\r\n\t\tjRoute.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r\n\t\tjRoute.setTransferHandler(new ListItemTransferHandler());\r\n\t\tjRoute.setDropMode(DropMode.INSERT);\r\n\t\tjRoute.setDragEnabled(true);\r\n\r\n\t\tjOK = new JButton(TabsRouting.get().ok());\r\n\t\tjOK.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tsave();\r\n\t\t\t}\r\n\t\t});\r\n\t\tJButton jCancel = new JButton(TabsRouting.get().cancel());\r\n\t\tjCancel.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tsetVisible(false);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tmodel.addListDataListener(new ListDataListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void intervalAdded(ListDataEvent e) { }\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic void intervalRemoved(ListDataEvent e) {\r\n\t\t\t\trecalculateRoutes();\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic void contentsChanged(ListDataEvent e) { }\r\n\t\t});\r\n\r\n\t\tJScrollPane jToolsScroll = new JScrollPane(jRoute);\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t\t.addComponent(jJumps)\r\n\t\t\t\t\t\t.addGap(2)\r\n\t\t\t\t\t\t.addComponent(jDelta)\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addComponent(jAvoid, 300, 300, 300)\r\n\t\t\t\t\t.addComponent(jSecurity, 300, 300, 300)\r\n\t\t\t\t\t.addComponent(jHelp, 300, 300, 300)\r\n\t\t\t\t\t.addComponent(jToolsScroll, 300, 300, 300)\r\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t\t.addGap(0, 0, Integer.MAX_VALUE)\r\n\t\t\t\t\t\t.addComponent(jOK, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t\t)\r\n\t\t\t);\r\n\t\t\tlayout.setVerticalGroup(\r\n\t\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t.addComponent(jJumps)\r\n\t\t\t\t\t\t.addComponent(jDelta)\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addComponent(jAvoid)\r\n\t\t\t\t\t.addComponent(jSecurity)\r\n\t\t\t\t\t.addComponent(jHelp)\r\n\t\t\t\t\t.addComponent(jToolsScroll, 300, 300, 300)\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t.addComponent(jOK, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t)\r\n\t\t\t);\r\n\t}\r\n\r\n\tprivate boolean recalculateRoutes() {\r\n\t\tif (updating) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tList<Route> list = new ArrayList<>();\r\n\t\tfor (int i = 0; i < model.size(); i++) {\r\n\t\t\tlist.add(model.get(i));\r\n\t\t}\r\n\t\ttry {\r\n\t\t\tint jumps = 0;\r\n\t\t\tRoute last = null;\r\n\t\t\tfor (Route route : list) {\r\n\t\t\t\tif (last != null) {\r\n\t\t\t\t\tjumps = jumps + distanceBetween(systemCache, filteredGraph, last, route);\r\n\t\t\t\t}\r\n\t\t\t\tlast = route;\r\n\t\t\t}\r\n\t\t\tjumps = jumps + distanceBetween(systemCache, filteredGraph, last, list.get(0));\r\n\t\t\tcalculateInfo(jumps);\r\n\t\t\treturn true;\r\n\t\t} catch (DisconnectedGraphException ex) {\r\n\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame()\r\n\t\t\t\t\t\t\t, ex.getMessage()\r\n\t\t\t\t\t\t\t, TabsRouting.get().error()\r\n\t\t\t\t\t\t\t, JOptionPane.ERROR_MESSAGE);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void calculateInfo(int jumps) {\r\n\t\tif (jumps > routeResult.getJumps()) {\r\n\t\t\tjDelta.setText(\"+\" + (jumps - routeResult.getJumps()));\r\n\t\t\tColorSettings.config(jDelta, ColorEntry.GLOBAL_VALUE_NEGATIVE);\r\n\t\t} else if (jumps < routeResult.getJumps()) {\r\n\t\t\tjDelta.setText(\"-\" + (routeResult.getJumps() - jumps));\r\n\t\t\tColorSettings.config(jDelta, ColorEntry.GLOBAL_VALUE_POSITIVE);\r\n\t\t} else {\r\n\t\t\tjDelta.setText(\"\");\r\n\t\t}\r\n\t\tjJumps.setText(TabsRouting.get().resultEditJumps(jumps));\r\n\t}\r\n\r\n\tprivate static List<SolarSystem> routeBetween(Map<Long, SolarSystem> systemCache, Graph<SolarSystem> filteredGraph, Route from, Route to) {\r\n\t\treturn filteredGraph.routeBetween(systemCache.get(from.getSystemID()), systemCache.get(to.getSystemID()));\r\n\t}\r\n\r\n\r\n\tprivate static int distanceBetween(Map<Long, SolarSystem> systemCache, Graph<SolarSystem> filteredGraph, Route from, Route to) {\r\n\t\treturn filteredGraph.distanceBetween(systemCache.get(from.getSystemID()), systemCache.get(to.getSystemID()));\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JComponent getDefaultFocus() {\r\n\t\treturn jOK;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JButton getDefaultButton() {\r\n\t\treturn jOK;\r\n\t}\r\n\r\n\tpublic RouteResult show(Map<Long, SolarSystem> systemCache, Graph<SolarSystem> filteredGraph, RouteResult routeResult) {\r\n\t\tupdating = true;\r\n\t\tthis.filteredGraph = filteredGraph;\r\n\t\tthis.systemCache = systemCache;\r\n\t\tthis.routeResult = routeResult;\r\n\t\tthis.returnResult = null;\r\n\t\t//Reset\r\n\t\tmodel.removeAllElements();\r\n\t\tfor (List<SolarSystem> jumps : routeResult.getRoute()) {\r\n\t\t\tSolarSystem solarSystem = jumps.get(0);\r\n\t\t\tRoute route = new Route(solarSystem.getLocationID(), solarSystem.getSystem());\r\n\t\t\tmodel.addElement(route);\r\n\t\t}\r\n\t\tjAvoid.setText(TabsRouting.get().resultEditAvoid(routingTab.getAvoidString()));\r\n\t\tjSecurity.setText((TabsRouting.get().resultEditSecurity(routingTab.getSecurityString())));\r\n\t\tcalculateInfo(routeResult.getJumps());\r\n\t\tupdating = false;\r\n\t\tboolean valid = recalculateRoutes();\r\n\t\tif (valid) {\r\n\t\t\tsetVisible(true);\r\n\t\t}\r\n\t\treturn returnResult;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void windowShown() {}\r\n\r\n\t@Override\r\n\tprotected void save() {\r\n\t\tList<Route> list = new ArrayList<>();\r\n\t\tfor (int i = 0; i < model.size(); i++) {\r\n\t\t\tlist.add(model.get(i));\r\n\t\t}\r\n\t\ttry {\r\n\t\t\treturnResult = makeRouteResult(routingTab, systemCache, filteredGraph, list, TabsRouting.get().resultEdited(), routeResult.getStations());\r\n\t\t} catch (DisconnectedGraphException ex) {\r\n\t\t\treturnResult = null;\r\n\t\t}\r\n\t\tsetVisible(false);\r\n\t}\r\n\r\n\tpublic static RouteResult makeRouteResult(RoutingTab routingTab, Map<Long, SolarSystem> systemCache, Graph<SolarSystem> filteredGraph, List<Route> list, String algorithmName) throws DisconnectedGraphException {\r\n\t\treturn makeRouteResult(routingTab, systemCache, filteredGraph, list, algorithmName, new HashMap<>());\r\n\t}\r\n\r\n\tprivate static RouteResult makeRouteResult(RoutingTab routingTab, Map<Long, SolarSystem> systemCache, Graph<SolarSystem> filteredGraph, List<Route> list, String algorithmName, Map<Long, List<SolarSystem>> stations) throws DisconnectedGraphException {\r\n\t\tList<List<SolarSystem>> routes = new ArrayList<>();\r\n\t\tint jumps = 0;\r\n\t\tRoute last = null;\r\n\t\tfor (Route route : list) {\r\n\t\t\tif (last != null) {\r\n\t\t\t\tjumps = jumps + distanceBetween(systemCache, filteredGraph, last, route);\r\n\t\t\t\troutes.add(routeBetween(systemCache, filteredGraph, last, route));\r\n\t\t\t}\r\n\t\t\tlast = route;\r\n\t\t}\r\n\t\tjumps = jumps + distanceBetween(systemCache, filteredGraph, last, list.get(0));\r\n\t\troutes.add(routeBetween(systemCache, filteredGraph, last, list.get(0)));\r\n\t\treturn new RouteResult(routes, stations, routes.size(), algorithmName, 0, jumps, routingTab.getAvoidString(), routingTab.getSecurityString());\r\n\t}\r\n\r\n\tpublic static class Route implements Serializable {\r\n\t\tprivate final long systemID;\r\n\t\tprivate final String system;\r\n\r\n\t\tpublic Route(long systemID, String system) {\r\n\t\t\tthis.systemID = systemID;\r\n\t\t\tthis.system = system;\r\n\t\t}\r\n\r\n\t\tpublic long getSystemID() {\r\n\t\t\treturn systemID;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic String toString() {\r\n\t\t\treturn system;\r\n\t\t}\r\n\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/routing/JRouteManagerDialog.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.routing;\r\n\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.RouteResult;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JManagerDialog;\r\nimport net.nikr.eve.jeveasset.i18n.TabsRouting;\r\n\r\n\r\npublic class JRouteManagerDialog extends JManagerDialog {\r\n\r\n\tprivate final RoutingTab routingTab;\r\n\r\n\tpublic JRouteManagerDialog(RoutingTab routingTab, Program program) {\r\n\t\tsuper(program, program.getMainWindow().getFrame(), TabsRouting.get().resultManageTitle(), true, false, false, false, false);\r\n\t\tthis.routingTab = routingTab;\r\n\t}\r\n\r\n\tpublic void updateData() {\r\n\t\tupdate(Settings.get().getRoutingSettings().getRoutes().keySet());\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void load(String name) {\r\n\t\tRouteResult routeResult = Settings.get().getRoutingSettings().getRoutes().get(name);\r\n\t\troutingTab.setRouteResult(routeResult);\r\n\t\troutingTab.updateRoutes();\r\n\t\tsetVisible(false);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void edit(String name) {\r\n\t\t//Edit is not supported\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void merge(String name, List<String> list) {\r\n\t\t//Merge is not supported\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void copy(String fromName, String toName) {\r\n\t\t//Copy is not supported\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void rename(String name, String oldName) {\r\n\t\tSettings.lock(\"Routing (Rename Route)\");\r\n\t\tRouteResult routeResult = Settings.get().getRoutingSettings().getRoutes().remove(oldName);\r\n\t\tSettings.get().getRoutingSettings().getRoutes().put(name, routeResult);\r\n\t\tSettings.unlock(\"Routing (Rename Route)\");\r\n\t\tprogram.saveSettings(\"Routing (Rename Route)\");\r\n\t\troutingTab.updateRoutes();\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void delete(List<String> list) {\r\n\t\tSettings.lock(\"Routing (Delete Routes)\");\r\n\t\tfor (String name : list) {\r\n\t\t\tSettings.get().getRoutingSettings().getRoutes().remove(name);\r\n\t\t}\r\n\t\tSettings.unlock(\"Routing (Delete Routes)\");\r\n\t\tprogram.saveSettings(\"Routing (Delete Routes)\");\r\n\t\troutingTab.updateRoutes();\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void export(List<String> list) {\r\n\t\t//Export is not supported\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void importData() {\r\n\t\t//Import is not supported\r\n\t}\r\n\r\n\t@Override protected String textDeleteMultipleMsg(int size) { return TabsRouting.get().routeDeleteMsg(size); }\r\n\t@Override protected String textDelete() { return TabsRouting.get().routeDeleteTitle(); }\r\n\t@Override protected String textEnterName() { return TabsRouting.get().routeSaveMsg(); }\r\n\t@Override protected String textMerge() { return \"\"; } //Not supported\r\n\t@Override protected String textRename() { return TabsRouting.get().routeRenameTitle(); }\r\n\t@Override protected String textOverwrite() { return TabsRouting.get().routeOverwrite(); }\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/routing/MoveJList.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.routing;\n\nimport javax.swing.JList;\nimport javax.swing.ListModel;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\npublic class MoveJList<T> extends JList<T> {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(MoveJList.class);\n\n\tprivate static final long serialVersionUID = 1L;\n\n\tpublic MoveJList() {\n\t\tsetModel(new EditableListModel<T>());\n\t}\n\n\tpublic MoveJList(final EditableListModel<T> editableListModel) {\n\t\tsetModel(editableListModel);\n\t}\n\n\tpublic MoveJList(final ListModel<T> dataModel) {\n\t\tEditableListModel<T> m = new EditableListModel<T>();\n\t\tfor (int i = 0; i < dataModel.getSize(); ++i) {\n\t\t\tm.add(dataModel.getElementAt(i));\n\t\t}\n\t\tsetModel(m);\n\t}\n\n\tpublic EditableListModel<T> getEditableModel() {\n\t\treturn (EditableListModel<T>) getModel();\n\t}\n\n\t/**\n\t *\n\t * @param to\n\t * @param limit\n\t * @return true if all the items were added.\n\t */\n\tpublic boolean move(final MoveJList<T> to, final int limit) {\n\t\tEditableListModel<T> fModel = getEditableModel();\n\t\tEditableListModel<T> tModel = to.getEditableModel();\n\t\tfor (T ss : getSelectedValuesList()) {\n\t\t\tif (fModel.contains(ss)) {\n\t\t\t\tif (to.getModel().getSize() < limit) {\n\t\t\t\t\tLOG.debug(\"Moving {}\", ss);\n\t\t\t\t\tif (fModel.remove(ss)) {\n\t\t\t\t\t\ttModel.add(ss);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tsetSelectedIndices(new int[]{});\n\t\t\t\t\tto.setSelectedIndices(new int[]{});\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tsetSelectedIndices(new int[]{});\n\t\tto.setSelectedIndices(new int[]{});\n\t\treturn true;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/routing/RoutingTab.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.tabs.routing;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.swing.AutoCompleteSupport;\nimport java.awt.Color;\nimport java.awt.Font;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.MouseAdapter;\nimport java.awt.event.MouseEvent;\nimport java.awt.event.MouseWheelEvent;\nimport java.awt.event.MouseWheelListener;\nimport java.beans.PropertyChangeEvent;\nimport java.beans.PropertyChangeListener;\nimport java.io.File;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Collections;\nimport java.util.Comparator;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Map.Entry;\nimport java.util.Set;\nimport java.util.SortedSet;\nimport java.util.TreeSet;\nimport javax.swing.ButtonGroup;\nimport javax.swing.GroupLayout;\nimport javax.swing.Icon;\nimport javax.swing.JButton;\nimport javax.swing.JComboBox;\nimport javax.swing.JFileChooser;\nimport javax.swing.JLabel;\nimport javax.swing.JMenuItem;\nimport javax.swing.JOptionPane;\nimport javax.swing.JPanel;\nimport javax.swing.JProgressBar;\nimport javax.swing.JScrollPane;\nimport javax.swing.JTabbedPane;\nimport javax.swing.JTextArea;\nimport javax.swing.JToggleButton;\nimport javax.swing.JToolBar;\nimport javax.swing.SwingWorker;\nimport javax.swing.event.ListSelectionEvent;\nimport javax.swing.event.ListSelectionListener;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.data.sde.RouteFinder;\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\nimport net.nikr.eve.jeveasset.data.settings.RouteResult;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\nimport net.nikr.eve.jeveasset.gui.shared.TextImport;\nimport net.nikr.eve.jeveasset.gui.shared.TextImport.TextImportHandler;\nimport net.nikr.eve.jeveasset.gui.shared.components.JAutoCompleteDialog;\nimport net.nikr.eve.jeveasset.gui.shared.components.JCustomFileChooser;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDropDownButton;\nimport net.nikr.eve.jeveasset.gui.shared.components.JImportDialog;\nimport net.nikr.eve.jeveasset.gui.shared.components.JImportDialog.ImportReturn;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabSecondary;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMultiSelectionDialog;\nimport net.nikr.eve.jeveasset.gui.shared.components.JTextDialog;\nimport net.nikr.eve.jeveasset.gui.shared.components.JTextDialog.SimpleTextImport;\nimport net.nikr.eve.jeveasset.gui.shared.components.JTextDialog.TextReturn;\nimport net.nikr.eve.jeveasset.gui.shared.components.ListComboBoxModel;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuUI;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuUI.EveGatecampCheck;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels.StringFilterator;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewGroup;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewLocation;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewLocation.LocationType;\nimport net.nikr.eve.jeveasset.gui.tabs.routing.JAvoid.UpdateFilter;\nimport net.nikr.eve.jeveasset.gui.tabs.routing.JRouteEditDialog.Route;\nimport net.nikr.eve.jeveasset.i18n.General;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\nimport net.nikr.eve.jeveasset.i18n.TabsRouting;\nimport net.nikr.eve.jeveasset.io.esi.AbstractEsiGetter;\nimport net.nikr.eve.jeveasset.io.local.SettingsReader;\nimport net.nikr.eve.jeveasset.io.local.SettingsWriter;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport uk.me.candle.eve.graph.DisconnectedGraphException;\nimport uk.me.candle.eve.graph.Graph;\nimport uk.me.candle.eve.graph.distances.Jumps;\nimport uk.me.candle.eve.routing.BruteForce;\nimport uk.me.candle.eve.routing.Crossover;\nimport uk.me.candle.eve.routing.NearestNeighbour;\nimport uk.me.candle.eve.routing.Progress;\nimport uk.me.candle.eve.routing.RoutingAlgorithm;\nimport uk.me.candle.eve.routing.SimpleUnisexMutatorHibrid2Opt;\nimport uk.me.candle.eve.routing.cancel.CancelService;\n\n/**\n *\n * @author Candle\n */\npublic class RoutingTab extends JMainTabSecondary implements UpdateFilter {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(RoutingTab.class);\n\n\tenum ImportSystemType implements SimpleTextImport {\n\t\tSYSTEM_NAMES(TabsRouting.get().resultImportNames(), SYSTEM_NAMES_EXAMPLE, Images.STOCKPILE_SHOPPING_LIST.getIcon()),\n\t\tSYSTEM_IDS(TabsRouting.get().resultImportIDs(), SYSTEM_IDS_EXAMPLE, Images.LOC_SYSTEM.getIcon());\n\t\tprivate final String type;\n\t\tprivate final String example;\n\t\tprivate final Icon icon;\n\n\t\tprivate ImportSystemType(String type, String example, Icon icon) {\n\t\t\tthis.type = type;\n\t\t\tthis.example = example;\n\t\t\tthis.icon = icon;\n\t\t}\n\n\t\t@Override\n\t\tpublic String getType() {\n\t\t\treturn type;\n\t\t}\n\n\t\t@Override\n\t\tpublic String getExample() {\n\t\t\treturn example;\n\t\t}\n\n\t\t@Override\n\t\tpublic Icon getIcon() {\n\t\t\treturn icon;\n\t\t}\n\t\t\n\t}\n\n\tprivate static final String SYSTEM_NAMES_EXAMPLE =\n\t\t\t\"Jita\\n\" +\n\t\t\t\"Sobaseki\\n\" +\n\t\t\t\"Malkalen\\n\" +\n\t\t\t\"New Caldari\\n\" +\n\t\t\t\"Niyabainen\\n\" +\n\t\t\t\"Perimeter\\n\" +\n\t\t\t\"Maurasi\";\n\n\tprivate static final String SYSTEM_IDS_EXAMPLE = \"30000142 30001363 30001393 30000145 30000143 30000144 30000140\";\n\n\tprivate enum RoutingAction {\n\t\tADD,\n\t\tREMOVE,\n\t\tIMPORT_SYSTEMS,\n\t\tADD_SYSTEM,\n\t\tADD_STATION,\n\t\tSOURCE,\n\t\tALGORITHM,\n\t\tALGORITHM_HELP,\n\t\tCALCULATE,\n\t\tEVE_UI,\n\t\tROUTE_SAVE,\n\t\tROUTE_EDIT,\n\t\tROUTE_MANAGE,\n\t\tIMPORT_ROUTE_XML,\n\t\tIMPORT_ROUTE,\n\t\tROUTE_EXPORT,\n\t}\n\t//Routing\n\tprivate JLabel jAlgorithmLabel;\n\tprivate JComboBox<RoutingAlgorithmContainer> jAlgorithm;\n\tprivate JButton jAlgorithmInfo;\n\tprivate JLabel jFilterLabel;\n\tprivate JLabel jFilterSecurityIcon;\n\tprivate JLabel jFilterSecurity;\n\tprivate JLabel jFilterSystemIcon;\n\tprivate JLabel jFilterSystem;\n\tprivate JLabel jSourceLabel;\n\tprivate JComboBox<SourceItem> jSource;\n\tprivate JToggleButton jSystems;\n\tprivate JToggleButton jStations;\n\tprivate JLabel jStartLabel;\n\tprivate JComboBox<String> jStart;\n\tprivate EventList<String> startEventList;\n\tprivate MoveJList<SolarSystem> jAvailable;\n\tprivate JLabel jAvailableRemaining;\n\tprivate JButton jAdd;\n\tprivate JButton jRemove;\n\tprivate JButton jImportSystems;\n\tprivate JButton jAddSystem;\n\tprivate JButton jAddStation;\n\tprivate MoveJList<SolarSystem> jWaypoints;\n\tprivate JLabel jWaypointsRemaining;\n\t//Filter\n\tprivate JAvoid jAvoid;\n\t//Progress\n\tprivate JProgressBar jProgress;\n\tprivate JButton jCalculate;\n\t//Result\n\tprivate JTextArea jResult;\n\tprivate JTextArea jFullResult;\n\tprivate JTextArea jInfo;\n\tprivate List<ResultToolbar> resultToolbars = new ArrayList<>();\n\t//Dialogs\n\tprivate TextImport<ImportSystemType> textImport;\n\tprivate JTextDialog jImportSystemsDialog;\n\tprivate JAutoCompleteDialog<MyLocation> jStationDialog;\n\tprivate JAutoCompleteDialog<SolarSystem> jSystemDialog;\n\tprivate JAutoCompleteDialog<String> jSaveRouteDialog;\n\tprivate JRouteManagerDialog jRouteManagerDialog;\n\tprivate JRouteEditDialog jRouteEditDialog;\n\tprivate JMultiSelectionDialog<String> jRouteSelectionDialog;\n\tprivate JCustomFileChooser jFileChooser;\n\tprivate JImportDialog jImportDialog;\n\n\tprivate ListenerClass listener;\n\tprivate RouteFind routeFind;\n\n\t//Data\n\tprivate final Map<Long, SolarSystem> systemCache = new HashMap<>();\n\tprivate final Set<SolarSystem> available = new HashSet<>();\n\tprotected Graph<SolarSystem> filteredGraph;\n\tprivate double lastSecMin = 0.0;\n\tprivate double lastSecMax = 1.0;\n\tprivate List<Long> lastAvoid = new ArrayList<>();\n\tprivate boolean uiEnabled = true;\n\tprivate RouteResult routeResult = null;\n\n\tpublic static final String NAME = \"routing\"; //Not to be changed!\n\t/**\n\t *\n\t * @param load does nothing except change the signature.\n\t */\n\tprotected RoutingTab(final boolean load) {\n\t\tsuper(load);\n\t}\n\n\tpublic RoutingTab(final Program program) {\n\t\tsuper(program, NAME, TabsRouting.get().routingTitle(), Images.TOOL_ROUTING.getIcon(), true);\n\n\t\tlistener = new ListenerClass();\n\n\t\ttextImport = new TextImport<>(program, NAME);\n\t\tjImportSystemsDialog = new JTextDialog(program.getMainWindow().getFrame());\n\t\tjStationDialog = new JAutoCompleteDialog<>(program, TabsRouting.get().addStationTitle(), Images.TOOL_ROUTING.getImage(), TabsRouting.get().addStationSelect(), true, JAutoCompleteDialog.LOCATION_OPTIONS);\n\t\tjSystemDialog = new JAutoCompleteDialog<>(program, TabsRouting.get().addSystemTitle(), Images.TOOL_ROUTING.getImage(), TabsRouting.get().addSystemSelect(), true, JAutoCompleteDialog.SOLAR_SYSTEM_OPTIONS);\n\t\tjSaveRouteDialog = new JAutoCompleteDialog<>(program, TabsRouting.get().routeSaveTitle(), Images.TOOL_ROUTING.getImage(), TabsRouting.get().routeSaveMsg(), false, JAutoCompleteDialog.STRING_OPTIONS);\n\t\tjRouteManagerDialog = new JRouteManagerDialog(this, program);\n\t\tjRouteEditDialog = new JRouteEditDialog(this, program);\n\t\tjRouteSelectionDialog = new JMultiSelectionDialog<>(program, TabsRouting.get().resultSelectRoutes());\n\t\tjFileChooser = new JCustomFileChooser(\"xml\");\n\t\tjFileChooser.setMultiSelectionEnabled(false);\n\t\tjFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);\n\t\tjImportDialog = new JImportDialog(program, new JImportDialog.ImportOptions() {\n\t\t\t@Override public boolean isRenameSupported() {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t@Override public boolean isMergeSupported() {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t@Override public boolean isOverwriteSupported() {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t@Override public boolean isSkipSupported() {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t@Override public String getTextRenameHelp() {\n\t\t\t\treturn TabsRouting.get().importOptionsRenameHelp();\n\t\t\t}\n\t\t\t@Override public String getTextMergeHelp() {\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t\t@Override public String getTextOverwriteHelp() {\n\t\t\t\treturn TabsRouting.get().importOptionsOverwriteHelp();\n\t\t\t}\n\t\t\t@Override public String getTextSkipHelp() {\n\t\t\t\treturn TabsRouting.get().importOptionsSkipHelp();\n\t\t\t}\n\t\t\t@Override public String getTextAll(int count) {\n\t\t\t\treturn TabsRouting.get().importOptionsAll(count);\n\t\t\t}\n\t\t});\n\n\t//Routing\n\t\tJPanel jRoutingPanel = new JPanel();\n\t\tGroupLayout routingLayout = new GroupLayout(jRoutingPanel);\n\t\tjRoutingPanel.setLayout(routingLayout);\n\t\troutingLayout.setAutoCreateGaps(true);\n\t\troutingLayout.setAutoCreateContainerGaps(true);\n\n\t\tjAlgorithmLabel = new JLabel(TabsRouting.get().algorithm());\n\n\t\tjAlgorithm = new JComboBox<>(new ListComboBoxModel<>(RoutingAlgorithmContainer.getRegisteredList()));\n\t\tjAlgorithm.setSelectedIndex(0);\n\t\tjAlgorithm.setActionCommand(RoutingAction.ALGORITHM.name());\n\t\tjAlgorithm.addActionListener(listener);\n\n\t\tjAlgorithmInfo = new JButton(Images.MISC_HELP.getIcon());\n\t\tjAlgorithmInfo.setActionCommand(RoutingAction.ALGORITHM_HELP.name());\n\t\tjAlgorithmInfo.addActionListener(listener);\n\n\t\tjFilterLabel = new JLabel(TabsRouting.get().filters());\n\t\tjFilterSecurityIcon = new JLabel();\n\t\tjFilterSecurity = new JLabel();\n\t\tjFilterSystemIcon = new JLabel(Images.LOC_SYSTEM.getIcon());\n\t\tjFilterSystem = new JLabel();\n\t\tjFilterSystem.setIconTextGap(4);\n\n\t\tjSourceLabel = new JLabel(TabsRouting.get().source());\n\n\t\tjSource = new JComboBox<>();\n\t\tjSource.setActionCommand(RoutingAction.SOURCE.name());\n\t\tjSource.addActionListener(listener);\n\n\t\tButtonGroup buttonGroup = new ButtonGroup();\n\t\tjStations = new JToggleButton(Images.LOC_STATION.getIcon());\n\t\tjStations.setHorizontalAlignment(JToggleButton.LEFT);\n\t\tjStations.setActionCommand(RoutingAction.SOURCE.name());\n\t\tjStations.addActionListener(listener);\n\t\tbuttonGroup.add(jStations);\n\t\tjSystems = new JToggleButton(Images.LOC_SYSTEM.getIcon());\n\t\tjSystems.setHorizontalAlignment(JToggleButton.LEFT);\n\t\tjSystems.setSelected(true);\n\t\tjSystems.setActionCommand(RoutingAction.SOURCE.name());\n\t\tjSystems.addActionListener(listener);\n\t\tbuttonGroup.add(jSystems);\n\n\t\t//Start system\n\t\tjStartLabel = new JLabel(TabsRouting.get().startSystem());\n\n\t\tjStart = new JComboBox<>();\n\t\tjStart.setEnabled(false);\n\t\tstartEventList = EventListManager.create();\n\t\tAutoCompleteSupport<String> startAutoComplete = AutoCompleteSupport.install(jStart, EventModels.createSwingThreadProxyList(startEventList), new StringFilterator());\n\t\tstartAutoComplete.setStrict(true);\n\t\ttry {\n\t\t\tstartEventList.getReadWriteLock().writeLock().lock();\n\t\t\tstartEventList.add(TabsRouting.get().startEmpty());\n\t\t} finally {\n\t\t\tstartEventList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t\tjStart.setSelectedItem(TabsRouting.get().startEmpty());\n\n\t\tjAvoid = new JAvoid(program, Settings.get().getRoutingSettings().getAvoidSettings(), true, this);\n\n\t\tjAvailable = new MoveJList<>(new EditableListModel<>());\n\t\tjAvailable.getEditableModel().setSortComparator(JAvoid.SOLAR_SYSTEM_COMPARATOR);\n\t\tjAvailable.addMouseListener(listener);\n\t\tjAvailable.addListSelectionListener(listener);\n\n\t\tjAvailableRemaining = new JLabel();\n\n\t\tjAdd = new JButton(TabsRouting.get().add());\n\t\tjAdd.setActionCommand(RoutingAction.ADD.name());\n\t\tjAdd.addActionListener(listener);\n\n\t\tjRemove = new JButton(TabsRouting.get().remove());\n\t\tjRemove.setActionCommand(RoutingAction.REMOVE.name());\n\t\tjRemove.addActionListener(listener);\n\n\t\tjImportSystems = new JButton(Images.EDIT_IMPORT.getIcon());\n\t\tjImportSystems.setActionCommand(RoutingAction.IMPORT_SYSTEMS.name());\n\t\tjImportSystems.addActionListener(listener);\n\n\t\tjAddSystem = new JButton(TabsRouting.get().addSystem(), Images.LOC_SYSTEM.getIcon());\n\t\tjAddSystem.setHorizontalAlignment(JToggleButton.LEFT);\n\t\tjAddSystem.setActionCommand(RoutingAction.ADD_SYSTEM.name());\n\t\tjAddSystem.addActionListener(listener);\n\n\t\tjAddStation = new JButton(TabsRouting.get().addStation(), Images.LOC_STATION.getIcon());\n\t\tjAddStation.setHorizontalAlignment(JToggleButton.LEFT);\n\t\tjAddStation.setActionCommand(RoutingAction.ADD_STATION.name());\n\t\tjAddStation.addActionListener(listener);\n\n\t\tjWaypoints = new MoveJList<>(new EditableListModel<>());\n\t\tjWaypoints.getEditableModel().setSortComparator(JAvoid.SOLAR_SYSTEM_COMPARATOR);\n\t\tjWaypoints.addMouseListener(listener);\n\t\tjWaypoints.addListSelectionListener(listener);\n\n\t\tjWaypointsRemaining = new JLabel();\n\n\t\tJScrollPane jAvailableScroll = new JScrollPane(jAvailable);\n\t\tJScrollPane jWaypointsScroll = new JScrollPane(jWaypoints);\n\n\t\troutingLayout.setHorizontalGroup(\n\t\t\troutingLayout.createSequentialGroup()\n\t\t\t\t.addGroup(routingLayout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t\t.addGroup(routingLayout.createSequentialGroup()\n\t\t\t\t\t\t.addGroup(routingLayout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t\t\t\t.addComponent(jAlgorithmLabel)\n\t\t\t\t\t\t\t.addComponent(jSourceLabel)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.addGroup(routingLayout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t\t\t\t.addGroup(routingLayout.createSequentialGroup()\n\t\t\t\t\t\t\t\t.addComponent(jAlgorithm)\n\t\t\t\t\t\t\t\t.addGap(5)\n\t\t\t\t\t\t\t\t.addComponent(jAlgorithmInfo, Program.getIconButtonsWidth(), Program.getIconButtonsWidth(), Program.getIconButtonsWidth())\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.addComponent(jSource)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t.addComponent(jAvailableScroll, 300, 300, Short.MAX_VALUE)\n\t\t\t\t\t.addGroup(routingLayout.createSequentialGroup()\n\t\t\t\t\t\t.addComponent(jAvailableRemaining, 0, 0, Short.MAX_VALUE)\n\t\t\t\t\t\t.addComponent(jSystems, 65, 65, 65)\n\t\t\t\t\t\t.addComponent(jStations, 65, 65, 65)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.addGroup(routingLayout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t\t.addComponent(jAdd, 80, 80, 80)\n\t\t\t\t\t.addComponent(jRemove, 80, 80, 80)\n\t\t\t\t)\n\t\t\t\t.addGroup(routingLayout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t\t.addGroup(routingLayout.createSequentialGroup()\n\t\t\t\t\t\t.addGroup(routingLayout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t\t\t\t.addComponent(jStartLabel)\n\t\t\t\t\t\t\t.addComponent(jFilterLabel)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.addGroup(routingLayout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t\t\t\t.addGroup(routingLayout.createSequentialGroup()\n\t\t\t\t\t\t\t\t.addComponent(jFilterSecurityIcon)\n\t\t\t\t\t\t\t\t.addGap(0)\n\t\t\t\t\t\t\t\t.addComponent(jFilterSecurity)\n\t\t\t\t\t\t\t\t.addGap(20)\n\t\t\t\t\t\t\t\t.addComponent(jFilterSystemIcon)\n\t\t\t\t\t\t\t\t.addGap(4)\n\t\t\t\t\t\t\t\t.addComponent(jFilterSystem)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.addComponent(jStart)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t.addComponent(jWaypointsScroll, 300, 300, Integer.MAX_VALUE)\n\t\t\t\t\t.addGroup(routingLayout.createSequentialGroup()\n\t\t\t\t\t\t.addComponent(jWaypointsRemaining, 0, 0, Integer.MAX_VALUE)\n\t\t\t\t\t\t.addComponent(jImportSystems, Program.getIconButtonsWidth(), Program.getIconButtonsWidth(), Program.getIconButtonsWidth())\n\t\t\t\t\t\t.addComponent(jAddSystem, 65, 65, 65)\n\t\t\t\t\t\t.addComponent(jAddStation, 65, 65, 65)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t);\n\t\troutingLayout.setVerticalGroup(\n\t\t\troutingLayout.createSequentialGroup()\n\t\t\t\t.addGroup(routingLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false)\n\t\t\t\t\t.addComponent(jAlgorithmLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jAlgorithm, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jAlgorithmInfo, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jFilterLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jFilterSecurityIcon, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jFilterSecurity, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jFilterSystemIcon, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jFilterSystem, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(routingLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false)\n\t\t\t\t\t.addComponent(jSourceLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jSource, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jStartLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jStart, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(routingLayout.createParallelGroup(GroupLayout.Alignment.CENTER, false)\n\t\t\t\t\t.addComponent(jAvailableScroll, 130, 130, Integer.MAX_VALUE)\n\t\t\t\t\t.addComponent(jWaypointsScroll, 130, 130, Integer.MAX_VALUE)\n\t\t\t\t\t.addGroup(routingLayout.createSequentialGroup()\n\t\t\t\t\t\t.addComponent(jAdd, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jRemove, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.addGroup(routingLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false)\n\t\t\t\t\t.addComponent(jAvailableRemaining, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jSystems, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jStations, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jWaypointsRemaining, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jImportSystems, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jAddStation, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jAddSystem, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t);\n\t//Filters\n\t\tJPanel jFilterPanel = new JPanel();\n\t\tGroupLayout filterLayout = new GroupLayout(jFilterPanel);\n\t\tjFilterPanel.setLayout(filterLayout);\n\t\tfilterLayout.setAutoCreateGaps(true);\n\t\tfilterLayout.setAutoCreateContainerGaps(true);\n\n\t\tfilterLayout.setHorizontalGroup(\n\t\t\tfilterLayout.createSequentialGroup()\n\t\t\t\t.addComponent(jAvoid.getAvoidPanel())\n\t\t\t\t.addComponent(jAvoid.getSecurityPanel())\n\t\t);\n\t\tfilterLayout.setVerticalGroup(\n\t\t\tfilterLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false)\n\t\t\t\t.addComponent(jAvoid.getAvoidPanel())\n\t\t\t\t.addComponent(jAvoid.getSecurityPanel())\n\t\t);\n\t//Progress\n\t\tjProgress = new JProgressBar();\n\t\tjProgress.setValue(0);\n\t\tjProgress.setMaximum(100);\n\t\tjProgress.setMinimum(0);\n\n\t\tjCalculate = new JButton(TabsRouting.get().calculate());\n\t\tjCalculate.setActionCommand(RoutingAction.CALCULATE.name());\n\t\tjCalculate.addActionListener(listener);\n\t//Result\n\t\tJPanel jResultPanel = new JPanel();\n\t\tGroupLayout resultLayout = new GroupLayout(jResultPanel);\n\t\tjResultPanel.setLayout(resultLayout);\n\t\tresultLayout.setAutoCreateGaps(true);\n\t\tresultLayout.setAutoCreateContainerGaps(false);\n\n\t\tJPanel jFullResultPanel = new JPanel();\n\t\tGroupLayout fullResultLayout = new GroupLayout(jFullResultPanel);\n\t\tjFullResultPanel.setLayout(fullResultLayout);\n\t\tfullResultLayout.setAutoCreateGaps(true);\n\t\tfullResultLayout.setAutoCreateContainerGaps(false);\n\n\t\tJPanel jInfoPanel = new JPanel();\n\t\tGroupLayout infoLayout = new GroupLayout(jInfoPanel);\n\t\tjInfoPanel.setLayout(infoLayout);\n\t\tinfoLayout.setAutoCreateGaps(true);\n\t\tinfoLayout.setAutoCreateContainerGaps(false);\n\n\t\tResultToolbar jResultPanelToolBar = new ResultToolbar();\n\t\tresultToolbars.add(jResultPanelToolBar);\n\n\t\tjResult = new JTextArea();\n\t\tjResult.setEditable(false);\n\t\tjResult.setFont(jPanel.getFont());\n\n\t\tResultToolbar jFullResultToolBar = new ResultToolbar();\n\t\tresultToolbars.add(jFullResultToolBar);\n\n\t\tjFullResult = new JTextArea();\n\t\tjFullResult.setEditable(false);\n\t\tjFullResult.setFont(jPanel.getFont());\n\n\t\tResultToolbar jInfoToolBar = new ResultToolbar();\n\t\tresultToolbars.add(jInfoToolBar);\n\n\t\tjInfo = new JTextArea();\n\t\tjInfo.setEditable(false);\n\t\tjInfo.setFont(jPanel.getFont());\n\n\t\tfinal JScrollPane jResultScroll = new JScrollPane(jResult, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);\n\t\tJScrollPane jFullResultScroll = new JScrollPane(jFullResult, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);\n\t\tjFullResultScroll.getVerticalScrollBar().setModel(jResultScroll.getVerticalScrollBar().getModel());\n\t\tjFullResultScroll.setWheelScrollingEnabled(false);\n\t\tjFullResultScroll.addMouseWheelListener(new MouseWheelListener() {\n\t\t\t@Override\n\t\t\tpublic void mouseWheelMoved(MouseWheelEvent e) {\n\t\t\t\tjResultScroll.dispatchEvent(e);\n\t\t\t}\n\t\t});\n\t\tJScrollPane jInfoScroll = new JScrollPane(jInfo);\n\n\t\tresultLayout.setHorizontalGroup(\n\t\t\tresultLayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t.addComponent(jResultPanelToolBar.getComponent())\n\t\t\t\t.addComponent(jResultScroll)\n\t\t);\n\t\tresultLayout.setVerticalGroup(\n\t\t\tresultLayout.createSequentialGroup()\n\t\t\t\t.addComponent(jResultPanelToolBar.getComponent())\n\t\t\t\t.addComponent(jResultScroll)\n\t\t);\n\n\t\tfullResultLayout.setHorizontalGroup(\n\t\t\tfullResultLayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t.addComponent(jFullResultToolBar.getComponent())\n\t\t\t\t.addComponent(jFullResultScroll)\n\t\t);\n\t\tfullResultLayout.setVerticalGroup(\n\t\t\tfullResultLayout.createSequentialGroup()\n\t\t\t\t.addComponent(jFullResultToolBar.getComponent())\n\t\t\t\t.addComponent(jFullResultScroll)\n\t\t);\n\n\t\tinfoLayout.setHorizontalGroup(\n\t\t\tinfoLayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t.addComponent(jInfoToolBar.getComponent())\n\t\t\t\t.addComponent(jInfoScroll)\n\t\t);\n\t\tinfoLayout.setVerticalGroup(\n\t\t\tinfoLayout.createSequentialGroup()\n\t\t\t\t.addComponent(jInfoToolBar.getComponent())\n\t\t\t\t.addComponent(jInfoScroll)\n\t\t);\n\n\t\tJTabbedPane jResultTabs = new JTabbedPane();\n\t\tjResultTabs.addTab(TabsRouting.get().resultTabShort(), jResultPanel);\n\t\tjResultTabs.addTab(TabsRouting.get().resultTabFull(), jFullResultPanel);\n\t\tjResultTabs.addTab(TabsRouting.get().resultTabInfo(), jInfoPanel);\n\n\t\tJTabbedPane jSystemTabs = new JTabbedPane();\n\t\tjSystemTabs.addTab(TabsRouting.get().routingTab(), jRoutingPanel);\n\t\tjSystemTabs.addTab(TabsRouting.get().filtersTab(), jFilterPanel);\n\n\t\t// widths are defined in here.\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t.addComponent(jSystemTabs)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jProgress, GroupLayout.DEFAULT_SIZE, 100, Short.MAX_VALUE)\n\t\t\t\t\t.addComponent(jCalculate)\n\t\t\t\t)\n\t\t\t\t.addComponent(jResultTabs)\n\t\t\t);\n\t\t// heights are defined here.\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jSystemTabs, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)\n\t\t\t\t\t.addComponent(jProgress, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jCalculate, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addComponent(jResultTabs)\n\t\t);\n\t\tbuildGraph(true); //Build default Graph (0.0/All sec - no avoids)\n\t\tjSystemDialog.updateData(filteredGraph.getNodes()); //Will be replaced by valid systems by processRouteInner()\n\t\tjAvoid.updateSystemDialog(filteredGraph.getNodes()); //Will be replaced by valid systems by processRouteInner()\n\t}\n\n\t@Override\n\tpublic void updateData() {\n\t\t//Do everything the constructor does...\n\t\tjAvailable.getEditableModel().clear();\n\t\tjWaypoints.getEditableModel().clear();\n\t\toverviewGroupsChanged();\n\t\tjAlgorithm.setSelectedIndex(0);\n\t\tjResult.setText(TabsRouting.get().emptyResult());\n\t\tjResult.setCaretPosition(0);\n\t\tjResult.setEnabled(false);\n\t\tjFullResult.setText(TabsRouting.get().emptyResult());\n\t\tjFullResult.setCaretPosition(0);\n\t\tjFullResult.setEnabled(false);\n\t\tjInfo.setText(TabsRouting.get().emptyResult());\n\t\tjInfo.setCaretPosition(0);\n\t\tjInfo.setEnabled(false);\n\n\t\tList<MyLocation> stations = new ArrayList<>();\n\t\tfor (MyLocation location : StaticData.get().getLocations()) {\n\t\t\tif (location.isStation()) { //Not Planet\n\t\t\t\tstations.add(location);\n\t\t\t}\n\t\t}\n\t\tjStationDialog.updateData(stations);\n\n\t\tupdateRemaining();\n\t\tprocessFilteredAssets();\n\t\tupdateRoutes();\n\t}\n\n\tpublic void overviewGroupsChanged() {\n\t\tList<SourceItem> sources = new ArrayList<>();\n\t\tfor (Entry<String, OverviewGroup> entry : Settings.get().getOverviewGroups().entrySet()) {\n\t\t\tsources.add(new SourceItem(entry.getKey(), true));\n\t\t}\n\t\tCollections.sort(sources);\n\t\tsources.add(0, new SourceItem(TabsRouting.get().filteredAssets()));\n\t\tsources.add(0, new SourceItem(General.get().all()));\n\t\tjSource.setModel(new ListComboBoxModel<>(sources));\n\t}\n\n\t@Override\n\tpublic void clearData() {\n\t\tRoutingAlgorithm.setCache(false); //Clear cache\n\t}\n\n\t@Override\n\tpublic void updateCache() {}\n\n\t@Override\n\tpublic Collection<net.nikr.eve.jeveasset.data.settings.types.LocationType> getLocations() {\n\t\treturn new ArrayList<>(); //No Location\n\t}\n\n\tpublic void updateRoutes() {\n\t\tfor (ResultToolbar resultToolbar : resultToolbars) {\n\t\t\tresultToolbar.update();\n\t\t}\n\t\tjRouteManagerDialog.updateData();\n\t\tjSaveRouteDialog.updateData(Settings.get().getRoutingSettings().getRoutes().keySet());\n\t}\n\n\tpublic SolarSystem getSolarSystem() {\n\t\treturn jSystemDialog.show();\n\t}\n\n\tprivate void updateRemaining() {\n\t\tupdateWaypointsRemaining();\n\t\tupdateAvailableRemaining();\n\t\tvalidateLists();\n\t}\n\n\tprivate void updateWaypointsRemaining() {\n\t\tint max = ((RoutingAlgorithmContainer) jAlgorithm.getSelectedItem()).getWaypointLimit();\n\t\tint cur = getWaypointsSize();\n\t\tif (max < cur) {\n\t\t\tjWaypointsRemaining.setForeground(Color.RED);\n\t\t} else if (max == cur) {\n\t\t\tjWaypointsRemaining.setForeground(Color.BLUE);\n\t\t} else {\n\t\t\tjWaypointsRemaining.setForeground(Color.BLACK);\n\t\t}\n\t\tjWaypointsRemaining.setText(TabsRouting.get().allowed(cur, max));\n\t}\n\n\tprivate void updateAvailableRemaining() {\n\t\tint cur = jAvailable.getModel().getSize();\n\t\tint tot = cur + getWaypointsSize();\n\t\tjAvailableRemaining.setText(TabsRouting.get().total(cur, tot));\n\t}\n\n\tprotected final void buildGraph(boolean all) {\n\t\t// build the graph.\n\t\t// filter the solarsystems based on the settings.\n\t\tif (filteredGraph != null) {\n\t\t\tfilteredGraph.clear();\n\t\t}\n\t\tfilteredGraph = new Graph<>(new Jumps<>());\n\t\tRouteFinder.generateGraph(systemCache, filteredGraph, all ? null : Settings.get().getRoutingSettings().getAvoidSettings());\n\t}\n\n\tprotected void processFilteredAssets() {\n\t\t// select the active places.\n\t\tList<MyAsset> assets;\n\t\tSourceItem source = (SourceItem) jSource.getSelectedItem();\n\t\tif (source.getName().equals(General.get().all())) { //ALL\n\t\t\tassets = new ArrayList<>(program.getAssetsList());\n\t\t} else if (source.getName().equals(TabsRouting.get().filteredAssets())) { //FILTERS\n\t\t\tassets = program.getAssetsTab().getFilteredAssets();\n\t\t} else { //OVERVIEW GROUP\n\t\t\tassets = new ArrayList<>();\n\t\t\tOverviewGroup group = Settings.get().getOverviewGroups().get(source.getName());\n\t\t\tfor (OverviewLocation location : group.getLocations()) {\n\t\t\t\tfor (MyAsset asset : program.getAssetsList()) {\n\t\t\t\t\tif ((location.getName().equals(asset.getLocation().getLocation()))\n\t\t\t\t\t\t|| (location.getType() == LocationType.TYPE_SYSTEM && location.getName().equals(asset.getLocation().getSystem()))\n\t\t\t\t\t\t|| (location.getType() == LocationType.TYPE_CONSTELLATION && location.getName().equals(asset.getLocation().getConstellation()))\n\t\t\t\t\t\t|| (location.getType() == LocationType.TYPE_REGION && location.getName().equals(asset.getLocation().getRegion()))\n\t\t\t\t\t\t) {\n\t\t\t\t\t\tassets.add(asset);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tSortedSet<SolarSystem> allLocs = new TreeSet<>(new Comparator<SolarSystem>() {\n\t\t\t@Override\n\t\t\tpublic int compare(final SolarSystem o1, final SolarSystem o2) {\n\t\t\t\tString n1 = o1.getName();\n\t\t\t\tString n2 = o2.getName();\n\t\t\t\treturn n1.compareToIgnoreCase(n2);\n\t\t\t}\n\t\t});\n\t\tfor (MyAsset ea : assets) {\n\t\t\tSolarSystem loc = null;\n\t\t\tif (jSystems.isSelected()) { //System\n\t\t\t\tloc = systemCache.get(ea.getLocation().getSystemID());\n\t\t\t} else if (ea.getLocation().isStation()) { //Not planet\n\t\t\t\tloc = new SolarSystem(ea.getLocation());\n\t\t\t}\n\t\t\tif (loc != null && (loc.getRegionID() < 11000000 || loc.getRegionID() > 13000000)) { //Ignore Wormhole and Abyssal Regions\n\t\t\t\tallLocs.add(loc);\n\t\t\t} else {\n\t\t\t\tLOG.debug(\"ignoring {}\", ea.getLocation().getLocation());\n\t\t\t}\n\t\t}\n\t\tavailable.clear();\n\t\tavailable.addAll(allLocs);\n\t\tjAvailable.getEditableModel().addAll(allLocs);\n\t\tfor (SolarSystem system : jWaypoints.getEditableModel().getAll()) {\n\t\t\tjAvailable.getEditableModel().remove(system);\n\t\t}\n\t\tif (jSystems.isSelected()) {\n\t\t\tjSystems.setText(TabsRouting.get().checked());\n\t\t\tjStations.setText(TabsRouting.get().unchecked());\n\t\t} else {\n\t\t\tjSystems.setText(TabsRouting.get().unchecked());\n\t\t\tjStations.setText(TabsRouting.get().checked());\n\t\t}\n\t\tupdateRemaining();\n\t}\n\n\t/**\n\t * Moves the selected items in the 'from' JList to the 'to' JList.\n\t *\n\t * @param from\n\t * @param to\n\t * @return true if all the items were moved.\n\t */\n\tprivate void move(final MoveJList<SolarSystem> from, final MoveJList<SolarSystem> to) {\n\t\tfor (SolarSystem ss : from.getSelectedValuesList()) {\n\t\t\tif (from.getEditableModel().contains(ss)) {\n\t\t\t\tLOG.debug(\"Moving {}\", ss);\n\t\t\t\tif (from.getEditableModel().remove(ss)) {\n\t\t\t\t\tto.getEditableModel().add(ss);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfrom.setSelectedIndices(new int[]{});\n\t\tto.setSelectedIndices(new int[]{});\n\t\tList<SolarSystem> systems = new ArrayList<>(jAvailable.getEditableModel().getAll());\n\t\tfor (SolarSystem system : systems) {\n\t\t\tif (!available.contains(system)) {\n\t\t\t\tjAvailable.getEditableModel().remove(system);\n\t\t\t}\n\t\t}\n\t\tto.requestFocusInWindow();\n\t\tupdateRemaining();\n\t}\n\n\tprivate void processRoute() {\n\t\t//Disable the UI controls\n\t\tsetUIEnabled(false);\n\t\t//Reset Progress\n\t\tjProgress.setValue(0);\n\t\tjProgress.setIndeterminate(true);\n\t\t//Create Thread\n\t\trouteFind = new RouteFind();\n\t\t//Add progress listener\n\t\trouteFind.addPropertyChangeListener(new PropertyChangeListener() {\n\t\t\t@Override\n\t\t\tpublic void propertyChange(PropertyChangeEvent evt) {\n\t\t\t\tif (\"progress\".equals(evt.getPropertyName())) {\n\t\t\t\t\tint progress = (Integer) evt.getNewValue();\n\t\t\t\t\tif (jProgress.isIndeterminate() && progress > 0) {\n\t\t\t\t\t\tjProgress.setIndeterminate(false);\n\t\t\t\t\t}\n\t\t\t\t\tjProgress.setValue(progress);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t//Start Thread\n\t\trouteFind.execute();\n\t}\n\n\tprivate void processRouteInner() {\n\t\ttry {\n\t\t\t//Update Graph if needed (AKA filter has changed)\n\t\t\tif (lastSecMin != jAvoid.getSecurityMinimum()\n\t\t\t\t|| lastSecMax != jAvoid.getSecurityMaximum()\n\t\t\t\t|| !lastAvoid.equals(new ArrayList<>(Settings.get().getRoutingSettings().getAvoid().keySet()))) {\n\t\t\t\tbuildGraph(false);\n\t\t\t\tlastSecMin = jAvoid.getSecurityMinimum();\n\t\t\t\tlastSecMax = jAvoid.getSecurityMaximum();\n\t\t\t\tlastAvoid = new ArrayList<>(Settings.get().getRoutingSettings().getAvoid().keySet());\n\t\t\t}\n\t\t\t//Warning for 2 or less systems\n\t\t\tif (getWaypointsSize() <= 2) {\n\t\t\t\tProgram.ensureEDT(new Runnable() {\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic void run() {\n\t\t\t\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), TabsRouting.get().noSystems(), TabsRouting.get().noSystemsTitle(), JOptionPane.INFORMATION_MESSAGE);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\trouteResult = null;\n\t\t\t//Clear previous results\n\t\t\tProgram.ensureEDT(new Runnable() {\n\t\t\t\t@Override\n\t\t\t\tpublic void run() {\n\t\t\t\t\tjResult.setText(TabsRouting.get().emptyResult());\n\t\t\t\t\tjResult.setCaretPosition(0);\n\t\t\t\t\tjResult.setEnabled(false);\n\t\t\t\t\tjFullResult.setText(TabsRouting.get().emptyResult());\n\t\t\t\t\tjFullResult.setCaretPosition(0);\n\t\t\t\t\tjFullResult.setEnabled(false);\n\t\t\t\t\tjResult.setCaretPosition(0);\n\t\t\t\t\tjInfo.setText(TabsRouting.get().emptyResult());\n\t\t\t\t\tjInfo.setCaretPosition(0);\n\t\t\t\t\tjInfo.setEnabled(false);\n\t\t\t\t\tfor (ResultToolbar resultToolbar : resultToolbars) {\n\t\t\t\t\t\tresultToolbar.setEnabledResult(false);\n\t\t\t\t\t\tresultToolbar.update();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tString start = jStart.getItemAt(jStart.getSelectedIndex());\n\t\t\tString startSystem = null;\n\t\t\t//Update all SolarSystem with the latest from the new Graph\n\t\t\t//This is needed to get the proper Edge(s) parsed to the routing Algorithm\n\t\t\tMap<Long, List<SolarSystem>> stationsMap = new HashMap<>();\n\t\t\tSet<SolarSystem> waypoints = new HashSet<>();\n\t\t\tfor (SolarSystem solarSystem : jWaypoints.getEditableModel().getAll()) {\n\t\t\t\tif (solarSystem.isStation()) { //Not Planet\n\t\t\t\t\tList<SolarSystem> stations = stationsMap.get(solarSystem.getSystemID());\n\t\t\t\t\tif (stations == null) {\n\t\t\t\t\t\tstations = new ArrayList<>();\n\t\t\t\t\t\tstationsMap.put(solarSystem.getSystemID(), stations);\n\t\t\t\t\t}\n\t\t\t\t\tstations.add(solarSystem);\n\t\t\t\t}\n\t\t\t\tSolarSystem cachedSystem = systemCache.get(solarSystem.getSystemID());\n\t\t\t\tif (start.equals(solarSystem.getName())) {\n\t\t\t\t\tstartSystem = cachedSystem.getName();\n\t\t\t\t}\n\t\t\t\twaypoints.add(cachedSystem);\n\t\t\t}\n\t\t\tList<SolarSystem> inputWaypoints = new ArrayList<>(waypoints);\n\t\t\t//Move frist system to the top....\n\t\t\tif (!start.contains(TabsRouting.get().startEmpty())) {\n\t\t\t\tString startText;\n\t\t\t\tif (startSystem != null) {\n\t\t\t\t\tstartText = startSystem;\n\t\t\t\t} else {\n\t\t\t\t\tstartText = start;\n\t\t\t\t}\n\t\t\t\tCollections.sort(inputWaypoints, new Comparator<SolarSystem>() {\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic int compare(SolarSystem o1, SolarSystem o2) {\n\t\t\t\t\t\tif (o1.getName().equals(startText) && o2.getName().equals(startText)) {\n\t\t\t\t\t\t\treturn 0; //Equal\n\t\t\t\t\t\t} else if (o1.getName().equals(startText)) {\n\t\t\t\t\t\t\treturn -1; //Before\n\t\t\t\t\t\t} else if (o2.getName().equals(startText)) {\n\t\t\t\t\t\t\treturn 1; //After\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn o1.getName().compareTo(o2.getName());\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t//Start route finding:\n\t\t\tRoutingAlgorithmContainer algorithm = (RoutingAlgorithmContainer) jAlgorithm.getSelectedItem();\n\t\t\tList<SolarSystem> nodeRoute = executeRouteFinding(inputWaypoints, algorithm);\n\t\t\tif (nodeRoute.isEmpty()) { //Cancelled\n\t\t\t\talgorithm.resetCancelService();\n\t\t\t\treturn;\n\t\t\t} else { //Completed!\n\t\t\t\tProgram.ensureEDT(new Runnable() {\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic void run() {\n\t\t\t\t\t\tjProgress.setValue(jProgress.getMaximum());\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tSolarSystem last = null;\n\t\t\tList<List<SolarSystem>> route = new ArrayList<>();\n\t\t\tfor (SolarSystem current : nodeRoute) {\n\t\t\t\tif (last != null) {\n\t\t\t\t\troute.add(new ArrayList<>(filteredGraph.routeBetween(last, current)));\n\t\t\t\t}\n\t\t\t\tlast = current;\n\t\t\t}\n\t\t\tif (last != null) {\n\t\t\t\troute.add(new ArrayList<>(filteredGraph.routeBetween(last, nodeRoute.get(0))));\n\t\t\t}\n\t\t\tsetRouteResult(new RouteResult(route, stationsMap, inputWaypoints.size(), algorithm.getName(), algorithm.getLastTimeTaken(), algorithm.getLastDistance(), getAvoidString(), getSecurityString()));\n\t\t} catch (DisconnectedGraphException dce) {\n\t\t\tProgram.ensureEDT(new Runnable() {\n\t\t\t\t@Override\n\t\t\t\tpublic void run() {\n\t\t\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(),\n\t\t\t\t\t\t\t dce.getMessage(),\n\t\t\t\t\t\t\t TabsRouting.get().error(),\n\t\t\t\t\t\t\t JOptionPane.ERROR_MESSAGE);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic String getSecurityString() {\n\t\tfinal StringBuilder builder = new StringBuilder();\n\t\tbuilder.append(Formatter.securityFormat(jAvoid.getSecurityMinimum()));\n\t\tbuilder.append(\" - \");\n\t\tbuilder.append(Formatter.securityFormat(jAvoid.getSecurityMaximum()));\n\t\treturn builder.toString();\n\t}\n\n\tpublic String getAvoidString() {\n\t\tfinal StringBuilder builder = new StringBuilder();\n\t\tfor (SolarSystem avoidSystem : Settings.get().getRoutingSettings().getAvoid().values()) {\n\t\t\tif (!builder.toString().isEmpty()) {\n\t\t\t\tbuilder.append(\", \");\n\t\t\t}\n\t\t\tbuilder.append(avoidSystem.getName());\n\t\t}\n\t\tif (builder.toString().isEmpty()) {\n\t\t\tbuilder.append(TabsRouting.get().avoidNone());\n\t\t}\n\t\treturn builder.toString();\n\t}\n\n\tpublic void setRouteResult(RouteResult routeResult) {\n\t\tthis.routeResult = routeResult;\n\t//Route Result\n\t\tfinal StringBuilder fullRouteString = new StringBuilder();\n\t\tfinal StringBuilder routeString = new StringBuilder();\n\t\tboolean first = true;\n\t\tfor (List<SolarSystem> systems : routeResult.getRoute()) {\n\t\t\tif (first) {\n\t\t\t\tfirst = false;\n\t\t\t} else {\n\t\t\t\tfullRouteString.append('\\n');\n\t\t\t\trouteString.append('\\n');\n\t\t\t}\n\t\t\tboolean firstFull = true;\n\t\t\tfor (SolarSystem routeSystem : systems) {\n\t\t\t\tif (firstFull) {\n\t\t\t\t\tfirstFull = false;\n\t\t\t\t\tfullRouteString.append(routeSystem.getName());\n\t\t\t\t} else {\n\t\t\t\t\tfullRouteString.append(TabsRouting.get().resultArrow());\n\t\t\t\t\tfullRouteString.append(routeSystem.getName());\n\t\t\t\t}\n\t\t\t}\n\t\t\trouteString.append(systems.get(0).getName());\n\t\t\tList<SolarSystem> stations = routeResult.getStations().get(systems.get(0).getSystemID());\n\t\t\tif (stations != null) {\n\t\t\t\tfor (SolarSystem station : stations) {\n\t\t\t\t\tfullRouteString.append(\"\\n    • \");\n\t\t\t\t\tfullRouteString.append(station.getName());\n\t\t\t\t\trouteString.append(\"\\n    • \");\n\t\t\t\t\trouteString.append(station.getName());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t//Set results\n\t\tProgram.ensureEDT(new Runnable() {\n\t\t\t@Override\n\t\t\tpublic void run() {\n\t\t\t\tjResult.setText(routeString.toString());\n\t\t\t\tjResult.setEnabled(true);\n\t\t\t\tjResult.setCaretPosition(0);\n\t\t\t\tjFullResult.setText(fullRouteString.toString());\n\t\t\t\tjFullResult.setEnabled(true);\n\t\t\t\tjFullResult.setCaretPosition(0);\n\t\t\t\tjInfo.setText(TabsRouting.get().resultText(routeResult.getAlgorithmName(),\n\t\t\t\t\trouteResult.getJumps(),\n\t\t\t\t\trouteResult.getWaypoints(),\n\t\t\t\t\trouteResult.getSecurity(),\n\t\t\t\t\trouteResult.getAvoid(),\n\t\t\t\t\tFormatter.milliseconds(routeResult.getAlgorithmTime())));\n\t\t\t\tjInfo.setEnabled(true);\n\t\t\t\tjInfo.setCaretPosition(0);\n\t\t\t\tfor (ResultToolbar resultToolbar : resultToolbars) {\n\t\t\t\t\tresultToolbar.setEnabledResult(true);\n\t\t\t\t\tresultToolbar.update();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected Graph<SolarSystem> getGraph() {\n\t\treturn filteredGraph;\n\t}\n\n\tprivate List<SolarSystem> executeRouteFinding(final List<SolarSystem> inputWaypoints, final RoutingAlgorithmContainer algorithm) {\n\t\treturn algorithm.execute(routeFind, filteredGraph, inputWaypoints);\n\t}\n\n\tprivate void setUIEnabled(final boolean b) {\n\t\tuiEnabled = b;\n\t\t//Routing\n\t\tjAlgorithmLabel.setEnabled(b);\n\t\tjAlgorithm.setEnabled(b);\n\t\tjAlgorithmInfo.setEnabled(b);\n\t\tjFilterLabel.setEnabled(b);\n\t\tjFilterSecurity.setEnabled(b);\n\t\tjFilterSystem.setEnabled(b);\n\t\tjSourceLabel.setEnabled(b);\n\t\tjSource.setEnabled(b);\n\t\tjStartLabel.setEnabled(b);\n\t\tif (jStart.getItemAt(jStart.getSelectedIndex()).contains(TabsRouting.get().startEmpty())) {\n\t\t\tjStart.setEnabled(false);\n\t\t} else {\n\t\t\tjStart.setEnabled(b);\n\t\t}\n\t\tjAvailable.setEnabled(b);\n\t\tjAvailableRemaining.setEnabled(b);\n\t\tjAdd.setEnabled(b);\n\t\tjRemove.setEnabled(b);\n\t\tjImportSystems.setEnabled(b);\n\t\tjAddSystem.setEnabled(b);\n\t\tjAddStation.setEnabled(b);\n\t\tjSystems.setEnabled(b);\n\t\tjStations.setEnabled(b);\n\t\tjWaypoints.setEnabled(b);\n\t\tjWaypointsRemaining.setEnabled(b);\n\t\t//Filters\n\t\tjAvoid.setEnabled(b);\n\t\tfor (ResultToolbar resultToolbar : resultToolbars) {\n\t\t\tresultToolbar.setEnabled(b);\n\t\t}\n\t\t//Process\n\t\tif (b) {\n\t\t\tjCalculate.setText(TabsRouting.get().calculate());\n\t\t} else {\n\t\t\tjCalculate.setText(TabsRouting.get().cancel());\n\t\t}\n\t}\n\n\tprivate void cancelProcessing() {\n\t\t((RoutingAlgorithmContainer) jAlgorithm.getSelectedItem()).getCancelService().cancel();\n\t}\n\n\tprivate int getWaypointsSize() {\n\t\tSet<Long> waypoints = new HashSet<>();\n\t\tfor (SolarSystem solarSystem : jWaypoints.getEditableModel().getAll()) {\n\t\t\twaypoints.add(solarSystem.getSystemID());\n\t\t}\n\t\treturn waypoints.size();\n\t}\n\n\tprivate void validateLists() {\n\t\tint waypointsSize = getWaypointsSize();\n\t\tif (uiEnabled) {\n\t\t\tjRemove.setEnabled(jWaypoints.getSelectedIndices().length > 0);\n\t\t\tjAdd.setEnabled(jAvailable.getSelectedIndices().length > 0);\n\t\t}\n\t\tjCalculate.setEnabled(waypointsSize <= ((RoutingAlgorithmContainer) jAlgorithm.getSelectedItem()).getWaypointLimit());\n\t\tif (jWaypoints.getEditableModel().getAll().isEmpty()) {\n\t\t\ttry {\n\t\t\t\tstartEventList.getReadWriteLock().writeLock().lock();\n\t\t\t\tstartEventList.clear();\n\t\t\t\tstartEventList.add(TabsRouting.get().startEmpty());\n\t\t\t} finally {\n\t\t\t\tstartEventList.getReadWriteLock().writeLock().unlock();\n\t\t\t}\n\t\t\tjStart.setSelectedItem(TabsRouting.get().startEmpty());\n\t\t\tjStart.setEnabled(false);\n\t\t} else {\n\t\t\tString selected = jStart.getItemAt(jStart.getSelectedIndex());\n\t\t\tSet<String> systems = new TreeSet<>();\n\t\t\tfor (SolarSystem system : jWaypoints.getEditableModel().getAll()) {\n\t\t\t\tsystems.add(system.getName());\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tstartEventList.getReadWriteLock().writeLock().lock();\n\t\t\t\tstartEventList.clear();\n\t\t\t\tstartEventList.addAll(systems);\n\t\t\t} finally {\n\t\t\t\tstartEventList.getReadWriteLock().writeLock().unlock();\n\t\t\t}\n\t\t\tjStart.setEnabled(true);\n\t\t\tif (systems.contains(selected)) {\n\t\t\t\tjStart.setSelectedItem(selected);\n\t\t\t} else {\n\t\t\t\tjStart.setSelectedItem(systems.iterator().next());\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic void addLocation(MyLocation location) {\n\t\tif (location == null) {\n\t\t\treturn; //Cancel\n\t\t}\n\t\tSolarSystem system = systemCache.get(location.getSystemID());\n\t\tif (system == null) {\n\t\t\treturn; //Ignore system that was not found\n\t\t}\n\t\tSolarSystem solarSystem = new SolarSystem(location);\n\t\tif (!jWaypoints.getEditableModel().contains(solarSystem)\n\t\t\t&& !jAvailable.getEditableModel().contains(solarSystem)) {\n\t\t\t//New\n\t\t\tjWaypoints.getEditableModel().add(solarSystem);\n\t\t} else if (jAvailable.getEditableModel().contains(solarSystem)) {\n\t\t\t//In available: moving to waypoints\n\t\t\tjAvailable.getEditableModel().remove(solarSystem);\n\t\t\tjWaypoints.getEditableModel().add(solarSystem);\n\t\t} //Else: Already in waypoints - do nothing\n\t\tupdateRemaining();\n\t}\n\n\tprivate ImportReturn importOptions(final RouteResult routeResult, final String routeName, ImportReturn importReturn, final int count) {\n\t\tif (importReturn != ImportReturn.OVERWRITE_ALL\n\t\t\t\t&& importReturn != ImportReturn.MERGE_ALL\n\t\t\t\t&& importReturn != ImportReturn.RENAME_ALL\n\t\t\t\t&& importReturn != ImportReturn.SKIP_ALL) { //Not decided - ask what to do\n\t\t\timportReturn = jImportDialog.show(routeName, count);\n\t\t}\n\t\t//Rename\n\t\tif (importReturn == ImportReturn.RENAME || importReturn == ImportReturn.RENAME_ALL) {\n\t\t\tString name = jSaveRouteDialog.show(routeName);\n\t\t\tif (name == null) {\n\t\t\t\treturn importOptions(routeResult, routeName, ImportReturn.RENAME, count);\n\t\t\t}\n\t\t\tSettings.get().getRoutingSettings().getRoutes().put(name, routeResult);\n\t\t\tupdateRoutes();\n\t\t}\n\t\t//Overwrite\n\t\tif (importReturn == ImportReturn.OVERWRITE || importReturn == ImportReturn.OVERWRITE_ALL) {\n\t\t\tSettings.get().getRoutingSettings().getRoutes().put(routeName, routeResult);\n\t\t\tupdateRoutes();\n\t\t}\n\t\t//Skip - Do nothing\n\t\treturn importReturn;\n\t}\n\n\tprivate boolean makeRoute(List<Route> list) {\n\t\tif (list.isEmpty()) {\n\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), TabsRouting.get().resultImportRouteEmpty(), TabsRouting.get().resultImportRoute(), JOptionPane.PLAIN_MESSAGE);\n\t\t\treturn false;\n\t\t}\n\t\tif (list.size() < 2) {\n\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), TabsRouting.get().resultImportRouteInvalid(), TabsRouting.get().resultImportRoute(), JOptionPane.PLAIN_MESSAGE);\n\t\t\treturn false;\n\t\t}\n\t\tRouteResult result;\n\t\ttry {\n\t\t\tresult = JRouteEditDialog.makeRouteResult(this, systemCache, filteredGraph, list, TabsRouting.get().resultImported());\n\t\t} catch (DisconnectedGraphException ex) {\n\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(),\n\t\t\t\t\tex.getMessage(),\n\t\t\t\t\tTabsRouting.get().error(),\n\t\t\t\t\tJOptionPane.ERROR_MESSAGE);\n\t\t\treturn false;\n\t\t}\n\t\tif (jResult.isEnabled()) {\n\t\t\tint value = JOptionPane.showConfirmDialog(program.getMainWindow().getFrame(), TabsRouting.get().resultOverwrite(), TabsRouting.get().resultImportRoute(), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);\n\t\t\tif (value != JOptionPane.OK_OPTION) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tsetRouteResult(result);\n\t\treturn true;\n\t}\n\n\tprivate void importText() {\n\t\tImportSystemType systemType = ImportSystemType.SYSTEM_NAMES;\n\t\ttry {\n\t\t\tsystemType = ImportSystemType.valueOf(Settings.get().getImportSettings(NAME, systemType));\n\t\t} catch (IllegalArgumentException ex) {\n\t\t\t//No problem, use default\n\t\t}\n\t\timportText(\"\", systemType);\n\t}\n\n\tprivate void importText(String text, ImportSystemType selected) {\n\t\ttextImport.importText(text, ImportSystemType.values(), selected, new TextImportHandler<ImportSystemType>() {\n\t\t\t@Override\n\t\t\tpublic void addItems(TextReturn<ImportSystemType> textReturn) {\n\t\t\t\tString importText = textReturn.getText();\n\t\t\t\tImportSystemType importType = textReturn.getType();\n\t\t\t\tif (importText == null || importType == null) {\n\t\t\t\t\treturn; //Cancel\n\t\t\t\t}\n\t\t\t\tList<Route> list = new ArrayList<>();\n\t\t\t\tif (importType == ImportSystemType.SYSTEM_NAMES) {\n\t\t\t\t\t//Build lookup map\n\t\t\t\t\tMap<String, SolarSystem> systems = new HashMap<>();\n\t\t\t\t\tfor (SolarSystem node : systemCache.values()) {\n\t\t\t\t\t\tsystems.put(node.getSystem().toLowerCase(), node);\n\t\t\t\t\t}\n\t\t\t\t\t//For each line, check if the line matches a system name\n\n\t\t\t\t\tfor (String line : importText.split(\"[\\r\\n]+\")) {\n\t\t\t\t\t\tSolarSystem system = systems.get(line.toLowerCase().trim());\n\t\t\t\t\t\tif (system != null) {\n\t\t\t\t\t\t\tlist.add(new Route(system.getSystemID(), system.getName()));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (importType == ImportSystemType.SYSTEM_IDS) {\n\t\t\t\t\t//For each line, check if the line matches a system name\n\t\t\t\t\tfor (String line : importText.split(\"\\\\s+\")) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tlong systemID = Long.parseLong(line.toLowerCase().trim());\n\t\t\t\t\t\t\tSolarSystem system = systemCache.get(systemID);\n\t\t\t\t\t\t\tif (system != null) {\n\t\t\t\t\t\t\t\tlist.add(new Route(system.getSystemID(), system.getName()));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (NumberFormatException ex) {\n\t\t\t\t\t\t\t//Try next line...\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tboolean update = makeRoute(list);\n\t\t\t\tif (!update) {\n\t\t\t\t\timportText(importText, importType);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\t@Override\n\tpublic void updateFilterLabels() {\n\t\tdouble secMin = Settings.get().getRoutingSettings().getSecMin();\n\t\tdouble secMax = Settings.get().getRoutingSettings().getSecMax();\n\t\tint size = Settings.get().getRoutingSettings().getAvoid().size();\n\t\tjFilterSecurity.setText(Formatter.securityFormat(secMin) + \" - \" + Formatter.securityFormat(secMax));\n\t\tif (secMin == 0.0) {\n\t\t\tjFilterSecurityIcon.setIcon(Images.UPDATE_CANCELLED.getIcon());\n\t\t} else if (secMin >= 0.5) {\n\t\t\tjFilterSecurityIcon.setIcon(Images.UPDATE_DONE_OK.getIcon());\n\t\t} else {\n\t\t\tjFilterSecurityIcon.setIcon(Images.UPDATE_DONE_SOME.getIcon());\n\t\t}\n\t\tjFilterSystem.setText(String.valueOf(size));\n\t}\n\n\tprivate class ListenerClass extends MouseAdapter implements ActionListener, ListSelectionListener {\n\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tLOG.debug(e.getActionCommand());\n\t\t\tif (RoutingAction.ADD.name().equals(e.getActionCommand())) {\n\t\t\t\tmove(jAvailable, jWaypoints);\n\t\t\t} else if (RoutingAction.REMOVE.name().equals(e.getActionCommand())) {\n\t\t\t\tmove(jWaypoints, jAvailable);\n\t\t\t} else if (RoutingAction.CALCULATE.name().equals(e.getActionCommand())) {\n\t\t\t\tif (jCalculate.getText().equals(TabsRouting.get().cancel())) {\n\t\t\t\t\tcancelProcessing();\n\t\t\t\t} else {\n\t\t\t\t\tif (jResult.isEnabled()) {\n\t\t\t\t\t\tint value = JOptionPane.showConfirmDialog(program.getMainWindow().getFrame(), TabsRouting.get().resultOverwrite(), TabsRouting.get().calculate(), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);\n\t\t\t\t\t\tif (value != JOptionPane.OK_OPTION) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tprocessRoute();\n\t\t\t\t}\n\t\t\t} else if (RoutingAction.SOURCE.name().equals(e.getActionCommand())) {\n\t\t\t\tjAvailable.getEditableModel().clear();\n\t\t\t\tprocessFilteredAssets();\n\t\t\t} else if (RoutingAction.ALGORITHM.name().equals(e.getActionCommand())) {\n\t\t\t\tupdateRemaining();\n\t\t\t} else if (RoutingAction.ALGORITHM_HELP.name().equals(e.getActionCommand())) {\n\t\t\t\tRoutingAlgorithmContainer rac = ((RoutingAlgorithmContainer) jAlgorithm.getSelectedItem());\n\t\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), rac.getBasicDescription(), rac.getName(), JOptionPane.INFORMATION_MESSAGE);\n\t\t\t} else if (RoutingAction.IMPORT_SYSTEMS.name().equals(e.getActionCommand())) {\n\t\t\t\tString importText = jImportSystemsDialog.importText(\"\", SYSTEM_NAMES_EXAMPLE);\n\t\t\t\tif (importText == null || importText.isEmpty()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t//Build lookup map\n\t\t\t\tMap<String, SolarSystem> systems = new HashMap<>();\n\t\t\t\tfor (SolarSystem node : systemCache.values()) {\n\t\t\t\t\tsystems.put(node.getSystem().toLowerCase(), node);\n\t\t\t\t}\n\t\t\t\t//For each line, check if the line matches a system name\n\t\t\t\tfor (String line : importText.split(\"[\\r\\n]+\")) {\n\t\t\t\t\tSolarSystem system = systems.get(line.toLowerCase().trim());\n\t\t\t\t\tif (system != null) {\n\t\t\t\t\t\tif (!jWaypoints.getEditableModel().contains(system)\n\t\t\t\t\t\t\t&& !jAvailable.getEditableModel().contains(system)) {\n\t\t\t\t\t\t\t//New\n\t\t\t\t\t\t\tjWaypoints.getEditableModel().add(system);\n\t\t\t\t\t\t} else if (jAvailable.getEditableModel().contains(system)) {\n\t\t\t\t\t\t\t//In available: moving to waypoints\n\t\t\t\t\t\t\tjAvailable.getEditableModel().remove(system);\n\t\t\t\t\t\t\tjWaypoints.getEditableModel().add(system);\n\t\t\t\t\t\t} //Else: Already in waypoints - do nothing\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tupdateRemaining();\n\t\t\t} else if (RoutingAction.ADD_STATION.name().equals(e.getActionCommand())) {\n\t\t\t\tMyLocation station = jStationDialog.show();\n\t\t\t\taddLocation(station);\n\t\t\t} else if (RoutingAction.ADD_SYSTEM.name().equals(e.getActionCommand())) {\n\t\t\t\tSolarSystem system = jSystemDialog.show();\n\t\t\t\tif (system != null) {\n\t\t\t\t\tif (!jWaypoints.getEditableModel().contains(system)\n\t\t\t\t\t\t&& !jAvailable.getEditableModel().contains(system)) {\n\t\t\t\t\t\t//New\n\t\t\t\t\t\tjWaypoints.getEditableModel().add(system);\n\t\t\t\t\t} else if (jAvailable.getEditableModel().contains(system)) {\n\t\t\t\t\t\t//In available: moving to waypoints\n\t\t\t\t\t\tjAvailable.getEditableModel().remove(system);\n\t\t\t\t\t\tjWaypoints.getEditableModel().add(system);\n\t\t\t\t\t} //Else: Already in waypoints - do nothing\n\t\t\t\t\tupdateRemaining();\n\t\t\t\t}\n\t\t\t} else if (RoutingAction.EVE_UI.name().equals(e.getActionCommand())) {\n\t\t\t\tEsiOwner owner = JMenuUI.selectOwner(program, JMenuUI.EsiOwnerRequirement.AUTOPILOT);\n\t\t\t\tif (owner == null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tSet<Long> locationIDs = new HashSet<>();\n\t\t\t\tJMenuUI.getLockWindow(program).show(GuiShared.get().updating(), new JMenuUI.EsiUpdate(owner) {\n\t\t\t\t\t@Override\n\t\t\t\t\tprotected void updateESI() throws Throwable {\n\t\t\t\t\t\tboolean clear = true;\n\t\t\t\t\t\tfor (List<SolarSystem> systems : routeResult.getRoute()) {\n\t\t\t\t\t\t\tSolarSystem system = systems.get(0);\n\t\t\t\t\t\t\tList<SolarSystem> stations = routeResult.getStations().get(system.getSystemID());\n\t\t\t\t\t\t\tif (stations != null && !stations.isEmpty()) { //Station(s)\n\t\t\t\t\t\t\t\tfor (SolarSystem station : stations) {\n\t\t\t\t\t\t\t\t\tgetApi().postUiAutopilotWaypoint(false, clear, station.getLocationID(), AbstractEsiGetter.COMPATIBILITY_DATE, null, null, null);\n\t\t\t\t\t\t\t\t\tlocationIDs.add(station.getLocationID());\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else { //System\n\t\t\t\t\t\t\t\tgetApi().postUiAutopilotWaypoint(false, clear, system.getSystemID(), AbstractEsiGetter.COMPATIBILITY_DATE, null, null, null);\n\t\t\t\t\t\t\t\tlocationIDs.add(system.getSystemID());\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (clear) {\n\t\t\t\t\t\t\t\tclear = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t@Override\n\t\t\t\t\tprotected void ok() {\n\t\t\t\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), TabsRouting.get().resultUiOk(), GuiShared.get().uiWaypointTitle(), JOptionPane.PLAIN_MESSAGE);\n\t\t\t\t\t\tEveGatecampCheck.open(program, owner, locationIDs);\n\t\t\t\t\t}\n\t\t\t\t\t@Override\n\t\t\t\t\tprotected void fail() {\n\t\t\t\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), TabsRouting.get().resultUiFail(), GuiShared.get().uiWaypointTitle(), JOptionPane.PLAIN_MESSAGE);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (RoutingAction.ROUTE_SAVE.name().equals(e.getActionCommand())) {\n\t\t\t\tString name = jSaveRouteDialog.show();\n\t\t\t\tif (name == null) {\n\t\t\t\t\treturn; //Cancel\n\t\t\t\t}\n\t\t\t\tSettings.lock(\"Routing (Save Route)\");\n\t\t\t\tSettings.get().getRoutingSettings().getRoutes().put(name, routeResult);\n\t\t\t\tSettings.unlock(\"Routing (Save Route)\");\n\t\t\t\tprogram.saveSettings(\"Routing (Save Route)\");\n\t\t\t\tupdateRoutes();\n\t\t\t} else if (RoutingAction.ROUTE_EDIT.name().equals(e.getActionCommand())) {\n\t\t\t\tbuildGraph(false);\n\t\t\t\tRouteResult result = jRouteEditDialog.show(systemCache, filteredGraph, routeResult);\n\t\t\t\tif (result == null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsetRouteResult(result);\n\t\t\t} else if (RoutingAction.ROUTE_MANAGE.name().equals(e.getActionCommand())) {\n\t\t\t\tjRouteManagerDialog.updateData();\n\t\t\t\tjRouteManagerDialog.setVisible(true);\n\t\t\t} else if (RoutingAction.IMPORT_ROUTE_XML.name().equals(e.getActionCommand())) {\n\t\t\t\tjFileChooser.setSelectedFile(null);\n\t\t\t\tjFileChooser.setCurrentDirectory(null);\n\t\t\t\tint returnValue = jFileChooser.showOpenDialog(program.getMainWindow().getFrame());\n\t\t\t\tif (returnValue != JCustomFileChooser.APPROVE_OPTION) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tFile file = jFileChooser.getSelectedFile();\n\t\t\t\tif (file == null || !file.exists()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tMap<String, RouteResult> routes = SettingsReader.loadRoutes(file.getAbsolutePath());\n\t\t\t\tif (routes == null) {\n\t\t\t\t\troutes = new HashMap<>();\n\t\t\t\t}\n\t\t\t\tList<String> selected = jRouteSelectionDialog.show(routes.keySet(), false);\n\t\t\t\tif (selected == null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tList<String> added = new ArrayList<>();\n\t\t\t\tList<String> existing = new ArrayList<>();\n\t\t\t\tfor (String routeName : selected) {\n\t\t\t\t\tif (Settings.get().getRoutingSettings().getRoutes().containsKey(routeName)) {\n\t\t\t\t\t\texisting.add(routeName);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tadded.add(routeName);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tint count = existing.size();\n\t\t\t\tImportReturn importReturn = null;\n\t\t\t\tjImportDialog.resetToDefault();\n\t\t\t\tSettings.lock(\"Routing (Import Route)\");\n\t\t\t\tfor (String routeName : added) {\n\t\t\t\t\tRouteResult result = routes.get(routeName);\n\t\t\t\t\tSettings.get().getRoutingSettings().getRoutes().put(routeName, result);\n\t\t\t\t}\n\t\t\t\tupdateRoutes();\n\t\t\t\tfor (String routeName : existing) {\n\t\t\t\t\tRouteResult routeResult = routes.get(routeName);\n\t\t\t\t\timportReturn = importOptions(routeResult, routeName, importReturn, count);\n\t\t\t\t\tcount--;\n\t\t\t\t}\n\t\t\t\tSettings.unlock(\"Routing (Import Route)\");\n\t\t\t\tprogram.saveSettings(\"Routing (Import Route)\");\n\t\t\t} else if (RoutingAction.IMPORT_ROUTE.name().equals(e.getActionCommand())) {\n\t\t\t\timportText();\n\t\t\t} else if (RoutingAction.ROUTE_EXPORT.name().equals(e.getActionCommand())) {\n\t\t\t\tList<String> selected = jRouteSelectionDialog.show(Settings.get().getRoutingSettings().getRoutes().keySet(), false);\n\t\t\t\tif (selected == null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tjFileChooser.setSelectedFile(null);\n\t\t\t\tjFileChooser.setCurrentDirectory(null);\n\t\t\t\tint returnValue = jFileChooser.showSaveDialog(program.getMainWindow().getFrame());\n\t\t\t\tif (returnValue != JCustomFileChooser.APPROVE_OPTION) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tFile file = jFileChooser.getSelectedFile();\n\t\t\t\tif (file == null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tMap<String, RouteResult> routes = new HashMap<>();\n\t\t\t\tfor (String routeName : selected) {\n\t\t\t\t\tRouteResult result = Settings.get().getRoutingSettings().getRoutes().get(routeName);\n\t\t\t\t\tif (result != null) {\n\t\t\t\t\t\troutes.put(routeName, result);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tSettingsWriter.saveRoutes(routes, file.getAbsolutePath());\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void mouseClicked(MouseEvent e) {\n\t\t\tif (e.getButton() == MouseEvent.BUTTON1\n\t\t\t\t\t\t&& e.getClickCount()% 2 == 0\n\t\t\t\t\t\t&& !e.isControlDown()\n\t\t\t\t\t\t&& !e.isShiftDown()\n\t\t\t\t\t\t) {\n\t\t\t\tif (e.getSource().equals(jAvailable) && jAvailable.isEnabled()) {\n\t\t\t\t\tmove(jAvailable, jWaypoints);\n\t\t\t\t} else if (e.getSource().equals(jWaypoints) && jWaypoints.isEnabled()) {\n\t\t\t\t\tmove(jWaypoints, jAvailable);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void valueChanged(ListSelectionEvent e) {\n\t\t\tif (e.getSource().equals(jAvailable) || e.getSource().equals(jWaypoints)) {\n\t\t\t\tvalidateLists();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate class ResultToolbar {\n\n\t\tprivate final JToolBar jToolBar;\n\t\tprivate final JLabel jName;\n\t\tprivate final JButton jEveUiSetRoute;\n\t\tprivate final JButton jEditRoute;\n\t\tprivate final JButton jExportRoute;\n\t\tprivate final JButton jSaveRoute;\n\t\tprivate final JDropDownButton jLoadRoute;\n\t\tprivate final JMenuItem jManageRoutes;\n\t\tprivate final Font plain;\n\t\tprivate final Font italic;\n\n\t\tpublic ResultToolbar() {\n\t\t\tjToolBar = new JToolBar();\n\t\t\tGroupLayout layout = new GroupLayout(jToolBar);\n\t\t\tjToolBar.setLayout(layout);\n\t\t\tlayout.setAutoCreateGaps(true);\n\t\t\tlayout.setAutoCreateContainerGaps(false);\n\n\t\t\tjToolBar.setFloatable(false);\n\t\t\tjToolBar.setRollover(true);\n\n\t\t\tjName = new JLabel();\n\t\t\tplain = jName.getFont();\n\t\t\titalic = new Font(plain.getName(), Font.ITALIC, plain.getSize());\n\n\t\t\tjEveUiSetRoute = new JButton(TabsRouting.get().resultUiWaypoints(), Images.MISC_EVE.getIcon());\n\t\t\tjEveUiSetRoute.setActionCommand(RoutingAction.EVE_UI.name());\n\t\t\tjEveUiSetRoute.addActionListener(listener);\n\t\t\tjEveUiSetRoute.setEnabled(false);\n\n\t\t\tjEditRoute = new JButton(TabsRouting.get().resultEdit(), Images.EDIT_EDIT.getIcon());\n\t\t\tjEditRoute.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjEditRoute.setActionCommand(RoutingAction.ROUTE_EDIT.name());\n\t\t\tjEditRoute.addActionListener(listener);\n\t\t\tjEditRoute.setEnabled(false);\n\n\t\t\tjExportRoute = new JButton(TabsRouting.get().resultExport(), Images.DIALOG_CSV_EXPORT.getIcon());\n\t\t\tjExportRoute.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjExportRoute.setActionCommand(RoutingAction.ROUTE_EXPORT.name());\n\t\t\tjExportRoute.addActionListener(listener);\n\t\t\tjExportRoute.setEnabled(false);\n\n\t\t\tJDropDownButton jImport = new JDropDownButton(TabsRouting.get().resultImport(), Images.EDIT_IMPORT.getIcon());\n\n\t\t\tJMenuItem jImportXml = new JMenuItem(TabsRouting.get().resultImportXml(), Images.TOOL_ROUTING.getIcon());\n\t\t\tjImportXml.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjImportXml.setActionCommand(RoutingAction.IMPORT_ROUTE_XML.name());\n\t\t\tjImportXml.addActionListener(listener);\n\t\t\tjImport.add(jImportXml);\n\n\t\t\tjImport.addSeparator();\n\n\t\t\tJMenuItem jImportText = new JMenuItem(TabsRouting.get().resultImportText(), Images.STOCKPILE_SHOPPING_LIST.getIcon());\n\t\t\tjImportText.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjImportText.setActionCommand(RoutingAction.IMPORT_ROUTE.name());\n\t\t\tjImportText.addActionListener(listener);\n\t\t\tjImport.add(jImportText);\n\n\t\t\tjSaveRoute = new JButton(TabsRouting.get().resultSave(), Images.FILTER_SAVE.getIcon());\n\t\t\tjSaveRoute.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjSaveRoute.setActionCommand(RoutingAction.ROUTE_SAVE.name());\n\t\t\tjSaveRoute.addActionListener(listener);\n\t\t\tjSaveRoute.setEnabled(false);\n\n\t\t\tjLoadRoute = new JDropDownButton(TabsRouting.get().resultLoad(), Images.FILTER_LOAD.getIcon());\n\t\t\tjLoadRoute.setHorizontalAlignment(JButton.LEFT);\n\n\t\t\tlayout.setHorizontalGroup(\n\t\t\t\tlayout.createSequentialGroup()\n\t\t\t\t\t.addContainerGap()\n\t\t\t\t\t.addComponent(jName, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t\t.addGap(0, 0, Integer.MAX_VALUE)\n\t\t\t\t\t.addComponent(jEveUiSetRoute)\n\t\t\t\t\t.addComponent(jEditRoute, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, 100)\n\t\t\t\t\t.addComponent(jExportRoute, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, 100)\n\t\t\t\t\t.addComponent(jImport, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, 100)\n\t\t\t\t\t.addComponent(jSaveRoute, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, 100)\n\t\t\t\t\t.addComponent(jLoadRoute, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, 100)\n\t\t\t\t\t.addContainerGap()\n\t\t\t);\n\t\t\tlayout.setVerticalGroup(\n\t\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t.addComponent(jName)\n\t\t\t\t\t.addComponent(jEveUiSetRoute)\n\t\t\t\t\t.addComponent(jEditRoute)\n\t\t\t\t\t.addComponent(jExportRoute)\n\t\t\t\t\t.addComponent(jImport)\n\t\t\t\t\t.addComponent(jSaveRoute)\n\t\t\t\t\t.addComponent(jLoadRoute)\n\t\t\t);\n\n\t\t\tjManageRoutes = new JMenuItem(TabsRouting.get().resultManage(), Images.DIALOG_SETTINGS.getIcon());\n\t\t\tjManageRoutes.setActionCommand(RoutingAction.ROUTE_MANAGE.name());\n\t\t\tjManageRoutes.addActionListener(listener);\n\t\t}\n\n\t\tpublic JToolBar getComponent() {\n\t\t\treturn jToolBar;\n\t\t}\n\n\t\tpublic void update() {\n\t\t\tjLoadRoute.removeAll();\n\n\t\t\tjLoadRoute.setEnabled(!Settings.get().getRoutingSettings().getRoutes().isEmpty());\n\n\t\t\tif (!Settings.get().getRoutingSettings().getRoutes().isEmpty()) {\n\t\t\t\tjLoadRoute.add(jManageRoutes);\n\t\t\t\tjLoadRoute.addSeparator();\n\t\t\t}\n\n\t\t\tif (routeResult != null) {\n\t\t\t\tString name = null;\n\t\t\t\tfor (Map.Entry<String, RouteResult> entry : Settings.get().getRoutingSettings().getRoutes().entrySet()) {\n\t\t\t\t\tif (entry.getValue().equals(routeResult)) {\n\t\t\t\t\t\tname = entry.getKey();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (name == null) {\n\t\t\t\t\tname = TabsRouting.get().resultUntitled();\n\t\t\t\t\tjName.setFont(italic);\n\t\t\t\t\tjName.setEnabled(false);\n\t\t\t\t} else {\n\t\t\t\t\tjName.setFont(plain);\n\t\t\t\t\tjName.setEnabled(true);\n\t\t\t\t}\n\t\t\t\tjName.setText(name);\n\t\t\t} else {\n\t\t\t\tjName.setText(TabsRouting.get().resultEmpty());\n\t\t\t\tjName.setFont(italic);\n\t\t\t\tjName.setEnabled(false);\n\t\t\t}\n\n\t\t\tfor (Map.Entry<String, RouteResult> entry : Settings.get().getRoutingSettings().getRoutes().entrySet()) {\n\t\t\t\tJMenuItem jMenuItem = new JMenuItem(entry.getKey(), Images.FILTER_LOAD.getIcon());\n\t\t\t\tjMenuItem.addActionListener(new ActionListener() {\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\t\t\tsetRouteResult(entry.getValue());\n\t\t\t\t\t\tupdateRoutes();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tjLoadRoute.add(jMenuItem);\n\t\t\t}\n\t\t\tjExportRoute.setEnabled(!Settings.get().getRoutingSettings().getRoutes().isEmpty());\n\t\t}\n\n\t\tpublic void setEnabledResult(boolean b) {\n\t\t\tjEveUiSetRoute.setEnabled(b);\n\t\t\tjEditRoute.setEnabled(b);\n\t\t\tjSaveRoute.setEnabled(b);\n\t\t}\n\n\t\tpublic void setEnabled(boolean b) {\n\t\t\tif (b) {\n\t\t\t\tjLoadRoute.setEnabled(!Settings.get().getRoutingSettings().getRoutes().isEmpty());\n\t\t\t} else {\n\t\t\t\tjLoadRoute.setEnabled(b);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * A GUI compatible container for the routing algorithms.\n\t */\n\tprivate static class RoutingAlgorithmContainer {\n\n\t\tprivate RoutingAlgorithm<SolarSystem> contained;\n\n\t\tpublic RoutingAlgorithmContainer(final RoutingAlgorithm<SolarSystem> contained) {\n\t\t\tthis.contained = contained;\n\t\t}\n\n\t\tpublic int getWaypointLimit() {\n\t\t\treturn contained.getWaypointLimit();\n\t\t}\n\n\t\tpublic String getName() {\n\t\t\treturn contained.getName();\n\t\t}\n\n\t\tpublic String getTechnicalDescription() {\n\t\t\treturn contained.getTechnicalDescription();\n\t\t}\n\n\t\tpublic String getBasicDescription() {\n\t\t\treturn contained.getBasicDescription();\n\t\t}\n\n\t\tpublic List<SolarSystem> execute(final Progress progress, final Graph<SolarSystem> g, final List<SolarSystem> assetLocations) {\n\t\t\treturn contained.execute(progress, g, assetLocations);\n\t\t}\n\n\t\tpublic long getLastTimeTaken() {\n\t\t\treturn contained.getLastTimeTaken();\n\t\t}\n\n\t\tpublic int getLastDistance() {\n\t\t\treturn contained.getLastDistance();\n\t\t}\n\n\t\tpublic CancelService getCancelService() {\n\t\t\treturn contained.getCancelService();\n\t\t}\n\n\t\tpublic void resetCancelService() {\n\t\t\tcontained.resetCancelService();\n\t\t}\n\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\treturn getName();\n\t\t}\n\n\t\tpublic static List<RoutingAlgorithmContainer> getRegisteredList() {\n\t\t\tList<RoutingAlgorithmContainer> list = new ArrayList<>();\n\t\t\tlist.add(new RoutingAlgorithmContainer(new BruteForce<>()));\n\t\t\tlist.add(new RoutingAlgorithmContainer(new SimpleUnisexMutatorHibrid2Opt<>()));\n\t\t\tlist.add(new RoutingAlgorithmContainer(new Crossover<>()));\n\t\t\tlist.add(new RoutingAlgorithmContainer(new NearestNeighbour<>()));\n\t\t\treturn list;\n\t\t}\n\t}\n\n\tprivate class RouteFind extends SwingWorker<Void, Void> implements Progress {\n\n\t\tprivate int maximum = 1;\n\t\tprivate int minimum = 0;\n\t\tprivate int value = 0;\n\t\tprivate int oldProgress = 0;\n\n\t\t@Override\n\t\tprotected Void doInBackground() throws Exception {\n\t\t\tprocessRouteInner();\n\t\t\treturn null;\n\t\t}\n\n\t\t@Override\n\t\tprotected void done() {\n\t\t\tsetUIEnabled(true);\n\t\t\tjProgress.setValue(0);\n\t\t\tjProgress.setIndeterminate(false);\n\t\t}\n\n\t\t@Override\n\t\tpublic int getMaximum() {\n\t\t\treturn maximum;\n\t\t}\n\n\t\t@Override\n\t\tpublic void setMaximum(int maximum) {\n\t\t\tthis.maximum = maximum;\n\t\t}\n\n\t\t@Override\n\t\tpublic int getMinimum() {\n\t\t\treturn minimum;\n\t\t}\n\n\t\t@Override\n\t\tpublic void setMinimum(int minimum) {\n\t\t\tthis.minimum = minimum;\n\t\t}\n\n\t\t@Override\n\t\tpublic int getValue() {\n\t\t\treturn value;\n\t\t}\n\n\t\t@Override\n\t\tpublic void setValue(int value) {\n\t\t\tthis.value = value;\n\t\t\tint progress = (int) Math.floor(value * 100.0 / getMaximum());\n\t\t\tif (progress < 0) {\n\t\t\t\tprogress = 0;\n\t\t\t}\n\t\t\tif (progress > 100) {\n\t\t\t\tprogress = 100;\n\t\t\t}\n\t\t\tif (progress != oldProgress) {\n\t\t\t\toldProgress = progress;\n\t\t\t\tsetProgress(oldProgress);\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic class SourceItem implements Comparable<SourceItem> {\n\n\t\tprivate final String name;\n\t\tprivate final boolean group;\n\n\t\tpublic SourceItem(final String name) {\n\t\t\tthis.name = name;\n\t\t\tthis.group = false;\n\t\t}\n\n\t\tpublic SourceItem(final String name, final boolean group) {\n\t\t\tthis.name = name;\n\t\t\tthis.group = group;\n\t\t}\n\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\tif (group) {\n\t\t\t\treturn TabsRouting.get().overviewGroup(name);\n\t\t\t} else {\n\t\t\t\treturn name;\n\t\t\t}\n\t\t}\n\n\t\tpublic String getName() {\n\t\t\treturn name;\n\t\t}\n\n\t\t@Override\n\t\tpublic int compareTo(final SourceItem o) {\n\t\t\treturn this.getName().compareToIgnoreCase(o.getName());\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/routing/SolarSystem.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.routing;\n\nimport java.util.Map;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport uk.me.candle.eve.graph.Node;\n\n/**\n *\n * @author Candle\n */\npublic class SolarSystem extends Node {\n\n\tprivate final MyLocation location;\n\n\tpublic static SolarSystem create(Map<Long, SolarSystem> systemCache, final MyLocation location) {\n\t\tSolarSystem cached = systemCache.get(location.getSystemID());\n\t\tif (cached == null) {\n\t\t\tcached = new SolarSystem(location);\n\t\t\tsystemCache.put(location.getSystemID(), cached);\n\t\t}\n\t\treturn cached;\n\t}\n\n\tpublic SolarSystem(final MyLocation location) {\n\t\tsuper(location.getLocation());\n\t\tthis.location = location;\n\t}\n\n\tpublic final boolean isStation() {\n\t\treturn location.isStation(); //Not Planet\n\t}\n\n\tpublic String getSecurity() {\n\t\treturn location.getSecurity();\n\t}\n\n\tpublic long getRegionID() {\n\t\treturn location.getRegionID();\n\t}\n\n\tpublic long getLocationID() {\n\t\treturn location.getLocationID();\n\t}\n\n\tpublic long getSystemID() {\n\t\treturn location.getSystemID();\n\t}\n\n\tpublic String getSystem() {\n\t\treturn location.getSystem();\n\t}\n\n\t@Override\n\tpublic boolean equals(final Object obj) {\n\t\tif (obj == null) {\n\t\t\treturn false;\n\t\t}\n\t\tif (getClass() != obj.getClass()) {\n\t\t\treturn false;\n\t\t}\n\t\tfinal SolarSystem other = (SolarSystem) obj;\n\t\tif (this.location != other.location && (this.location == null || !this.location.equals(other.location))) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic int hashCode() {\n\t\tint hash = 7;\n\t\thash = 79 * hash + (this.location != null ? this.location.hashCode() : 0);\n\t\treturn hash;\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\treturn getName();\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/skills/JSkillPlansManageDialog.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.skills;\r\n\r\nimport java.util.Collections;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JManagerDialog;\r\nimport net.nikr.eve.jeveasset.i18n.TabsSkills;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\n\r\n\r\npublic class JSkillPlansManageDialog extends JManagerDialog {\r\n\r\n\tprivate final SkillsOverviewTab skillsOverviewTab;\r\n\r\n\tpublic JSkillPlansManageDialog(Program program, SkillsOverviewTab skillsOverviewTab) {\r\n\t\tsuper(program, program.getMainWindow().getFrame(), TabsSkills.get().manageTitle(), false, true, true, true, false);\r\n\t\tthis.skillsOverviewTab = skillsOverviewTab;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void load(String name) { }\r\n\r\n\t@Override\r\n\tprotected void edit(String name) {\r\n\t\tMap<Integer, Integer> oldSkills = Settings.get().getSkillPlans().getOrDefault(name, Collections.emptyMap());\r\n\t\tStringBuilder builder = new StringBuilder();\r\n\t\tfor (Map.Entry<Integer, Integer> e : oldSkills.entrySet()) {\r\n\t\t\tItem item = ApiIdConverter.getItem(e.getKey());\r\n\t\t\tif (!item.isEmpty()) {\r\n\t\t\t\tbuilder.append(item.getTypeName()).append(' ').append(e.getValue()).append('\\n');\r\n\t\t\t}\r\n\t\t}\r\n\t\tMap<Integer, Integer> newSkills = skillsOverviewTab.importSkillPlan(builder.toString());\r\n\t\tif (newSkills == null || newSkills.isEmpty()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tSettings.lock(\"Skills Overview (Edit Plan)\");\r\n\t\tSettings.get().getSkillPlans().put(name, newSkills);\r\n\t\tSettings.unlock(\"Skills Overview (Edit Plan)\");\r\n\t\tprogram.saveSettings(\"Skills Overview (Edit Plan)\");\r\n\t\tskillsOverviewTab.updateData();\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void merge(String name, List<String> list) {\r\n\t\tMap<Integer, Integer> output = new HashMap<>();\r\n\t\tfor (String s : list) {\r\n\t\t\tfor (Map.Entry<Integer, Integer> entry : Settings.get().getSkillPlans().getOrDefault(s, Collections.emptyMap()).entrySet()) {\r\n\t\t\t\tInteger key = entry.getKey();\r\n\t\t\t\tInteger newValue = entry.getValue();\r\n\t\t\t\tInteger oldValue = output.get(key);\r\n\t\t\t\tif (oldValue == null) {\r\n\t\t\t\t\toutput.put(key, newValue);\r\n\t\t\t\t} else {\r\n\t\t\t\t\toutput.put(key, Math.max(newValue, oldValue));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tSettings.lock(\"Skills Overview (Merge Plans)\");\r\n\t\tSettings.get().getSkillPlans().put(name, output);\r\n\t\tSettings.unlock(\"Skills Overview (Merge Plans)\");\r\n\t\tprogram.saveSettings(\"Skills Overview (Merge Plans)\");\r\n\t\tupdateData();\r\n\t\tskillsOverviewTab.updateData();\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void copy(String fromName, String toName) {\r\n\t\tMap<Integer, Integer> skills = Settings.get().getSkillPlans().getOrDefault(fromName, Collections.emptyMap());\r\n\t\tSettings.lock(\"Skills Overview (Copy Plan)\");\r\n\t\tSettings.get().getSkillPlans().put(toName, skills);\r\n\t\tSettings.unlock(\"Skills Overview (Copy Plan)\");\r\n\t\tprogram.saveSettings(\"Skills Overview (Copy Plan)\");\r\n\t\tupdateData();\r\n\t\tskillsOverviewTab.updateData();\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void rename(String name, String oldName) {\r\n\t\tSettings.lock(\"Skills Overview (Rename Plan)\");\r\n\t\tMap<Integer, Integer> remove = Settings.get().getSkillPlans().remove(oldName);\r\n\t\tSettings.get().getSkillPlans().put(name, remove);\r\n\t\tSettings.unlock(\"Skills Overview (Rename Plan)\");\r\n\t\tprogram.saveSettings(\"Skills Overview (Rename Plan)\");\r\n\t\tupdateData();\r\n\t\tskillsOverviewTab.updateData();\r\n\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void delete(List<String> list) {\r\n\t\tSettings.lock(\"Skills Overview (Delete Plans)\");\r\n\t\tSettings.get().getSkillPlans().keySet().removeAll(list);\r\n\t\tSettings.unlock(\"Skills Overview (Delete Plans)\");\r\n\t\tprogram.saveSettings(\"Skills Overview (Delete Plans)\");\r\n\t\tupdateData();\r\n\t\tskillsOverviewTab.updateData();\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void export(List<String> list) {\r\n\t\t//Export is not supported\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void importData() {\r\n\t\t//Import is not supported\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setVisible(boolean b) {\r\n\t\tif (b) {\r\n\t\t\tupdateData();\r\n\t\t}\r\n\t\tsuper.setVisible(b);\r\n\t}\r\n\r\n\tprivate void updateData() {\r\n\t\tupdate(Settings.get().getSkillPlans().keySet());\r\n\t}\r\n\r\n\t@Override protected String textDeleteMultipleMsg(int size) { return TabsSkills.get().deleteSkillPlans(size); }\r\n\t@Override protected String textDelete() { return TabsSkills.get().deleteSkillPlan(); }\r\n\t@Override protected String textEnterName() { return TabsSkills.get().enterName(); }\r\n\t@Override protected String textMerge() { return TabsSkills.get().merge(); }\r\n\t@Override protected String textRename() { return TabsSkills.get().rename(); }\r\n\t@Override protected String textOverwrite() { return TabsSkills.get().overwrite(); }\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/skills/SkillsOverviewTab.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.tabs.skills;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.FilterList;\nimport ca.odell.glazedlists.ListSelection;\nimport ca.odell.glazedlists.SortedList;\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport ca.odell.glazedlists.swing.TableComparatorChooser;\nimport java.awt.Canvas;\nimport java.awt.Font;\nimport java.awt.FontMetrics;\nimport java.awt.Toolkit;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Comparator;\nimport java.util.HashMap;\nimport java.util.LinkedHashMap;\nimport java.util.List;\nimport java.util.Map;\nimport javax.swing.GroupLayout;\nimport javax.swing.JComponent;\nimport javax.swing.JMenu;\nimport javax.swing.JMenuItem;\nimport javax.swing.JOptionPane;\nimport javax.swing.JPopupMenu;\nimport javax.swing.JScrollPane;\nimport javax.swing.JTable;\nimport javax.swing.UIDefaults;\nimport javax.swing.UIManager;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\nimport net.nikr.eve.jeveasset.data.api.my.MySkill;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\nimport net.nikr.eve.jeveasset.gui.shared.components.JAutoCompleteDialog;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDropDownButton;\nimport net.nikr.eve.jeveasset.gui.shared.components.JFixedToolBar;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabSecondary;\nimport net.nikr.eve.jeveasset.gui.shared.components.JTextDialog;\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuColumns;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Percent;\nimport net.nikr.eve.jeveasset.i18n.TabsSkills;\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\n\n\npublic class SkillsOverviewTab extends JMainTabSecondary {\n\n\tprivate enum SkillsOverviewAction {\n\t\tADD_SKILL_PLAN,\n\t\tMANAGE_SKILL_PLANS,\n\t}\n\n\tprivate static final double[] RANK_1_LEVELS = new double[]{250, 1415, 8000, 45255, 256000};\n\tprivate static final String SKILL_PLAN_EXAMPLE =\n\t\t\t\"Power Grid Management 1\\n\" +\n\t\t\t\"Science 1\\n\" +\n\t\t\t\"Gunnery 1\\n\" +\n\t\t\t\"Navigation 1\\n\" +\n\t\t\t\"Spaceship Command 1\\n\" +\n\t\t\t\"CPU Management 1\\n\" +\n\t\t\t\"Drones 1\\n\" +\n\t\t\t\"Small Hybrid Turret 1\\n\" +\n\t\t\t\"Afterburner 1\\n\" +\n\t\t\t\"Drone Avionics 1\\n\" +\n\t\t\t\"Gallente Frigate 1\\n\" +\n\t\t\t\"Power Grid Management 2\\n\" +\n\t\t\t\"CPU Management 2\\n\" +\n\t\t\t\"Drones 2\\n\" +\n\t\t\t\"Gunnery 2\\n\" +\n\t\t\t\"Drone Avionics 2\\n\" +\n\t\t\t\"Weapon Upgrades 1\\n\" +\n\t\t\t\"Shield Upgrades 1\\n\" +\n\t\t\t\"Gallente Frigate 2\\n\" +\n\t\t\t\"Electronics Upgrades 1\\n\" +\n\t\t\t\"Shield Upgrades 2\\n\" +\n\t\t\t\"Power Grid Management 3\\n\" +\n\t\t\t\"Drones 3\\n\" +\n\t\t\t\"Drone Avionics 3\\n\" +\n\t\t\t\"Tactical Shield Manipulation 1\\n\" +\n\t\t\t\"Gallente Frigate 3\\n\";\n\n\tprivate final JFixedToolBar jToolBar;\n\tprivate final JAutoColumnTable jTable;\n\n\t//Dialog\n\tprivate final JSkillPlansManageDialog jSkillPlansManageDialog;\n\tprivate final JTextDialog jTextDialog;\n\tprivate final JAutoCompleteDialog<String> jSaveDialog;\n\n\tprivate final SkillsOverviewFilterControl filterControl;\n\tprivate final DefaultEventTableModel<SkillsOverview> tableModel;\n\tprivate final EventList<SkillsOverview> eventList;\n\tprivate final FilterList<SkillsOverview> filterList;\n\tprivate final EnumTableFormatAdaptor<SkillsOverviewTableFormat, SkillsOverview> tableFormat;\n\tprivate final List<EnumTableColumn<SkillsOverview>> dynamicColumns = new ArrayList<>();\n\tprivate final DefaultEventSelectionModel<SkillsOverview> selectionModel;\n\n\tpublic static final String NAME = \"skillsoverview\";\n\n\tpublic SkillsOverviewTab(Program program) {\n\t\tsuper(program, NAME, TabsSkills.get().skillsOverview(), Images.TOOL_SKILLS.getIcon(), true);\n\n\t\tjSkillPlansManageDialog = new JSkillPlansManageDialog(program, this);\n\t\tjTextDialog = new JTextDialog(program.getMainWindow().getFrame());\n\t\tjSaveDialog = new JAutoCompleteDialog<>(program, TabsSkills.get().add(), Images.TOOL_SKILLS.getImage(), TabsSkills.get().enterName(), false, true, JAutoCompleteDialog.STRING_OPTIONS);\n\t\tfinal ListenerClass listener = new ListenerClass();\n\n\t\tjToolBar = new JFixedToolBar();\n\n\t\tJDropDownButton jSkills = new JDropDownButton(TabsSkills.get().skillPlans(), Images.TOOL_SKILLS.getIcon());\n\t\tjToolBar.addButton(jSkills);\n\n\t\tJMenuItem jManage = new JMenuItem(TabsSkills.get().manage(), Images.DIALOG_SETTINGS.getIcon());\n\t\tjManage.setActionCommand(SkillsOverviewAction.MANAGE_SKILL_PLANS.name());\n\t\tjManage.addActionListener(listener);\n\t\tjSkills.add(jManage);\n\n\t\tjSkills.addSeparator();\n\n\t\tJMenuItem jAdd = new JMenuItem(TabsSkills.get().add(), Images.EDIT_ADD.getIcon());\n\t\tjAdd.setActionCommand(SkillsOverviewAction.ADD_SKILL_PLAN.name());\n\t\tjAdd.addActionListener(listener);\n\t\tjSkills.add(jAdd);\n\n\t\t//Table Format\n\t\ttableFormat = TableFormatFactory.skillsOverviewTableFormat();\n\n\t\t//Backend\n\t\teventList = EventListManager.create();\n\t\t//Sorting (per column)\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<SkillsOverview> sortedColumns = new SortedList<>(eventList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t//Sorting (total)\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<SkillsOverview> sorted = new SortedList<>(sortedColumns, new TotalComparator());\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t//Filter\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tfilterList = new FilterList<>(sorted);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\n\t\t//Table Model\n\t\ttableModel = EventModels.createTableModel(filterList, tableFormat);\n\t\t//Table\n\t\tUIDefaults uiDefaults = UIManager.getLookAndFeelDefaults();\n\t\tFont font = uiDefaults.getFont(\"ToolTip.font\");\n\t\tif (font == null) {\n\t\t\tfont = new JTable().getFont(); //Better safe, than sorry...\n\t\t}\n\t\tFontMetrics fontMetrics = new Canvas().getFontMetrics(font);\n\t\tdouble maxHeight = Toolkit.getDefaultToolkit().getScreenSize().getHeight();\n\t\tint lineHeight = fontMetrics.getHeight();\n\t\tjTable = new JAutoColumnTable(program, tableModel) {\n\t\t\t@Override\n\t\t\tpublic String getToolTipText(java.awt.event.MouseEvent e) {\n\t\t\t\tint row = rowAtPoint(e.getPoint());\n\t\t\t\tint column = columnAtPoint(e.getPoint());\n\t\t\t\tif (row < 0 || column < 0) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tint modelColumn = convertColumnIndexToModel(column);\n\t\t\t\tString columnName = tableModel.getColumnName(modelColumn);\n\t\t\t\tMap<String, Map<Integer, Integer>> plans = Settings.get().getSkillPlans();\n\t\t\t\tif (!plans.containsKey(columnName)) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tSkillsOverview skillsOverview = filterList.get(row);\n\t\t\t\t\tMap<Integer, Long> have = skillsOverview.getOwnerSkillPoints();\n\t\t\t\t\tMap<Integer, Integer> plan = plans.get(columnName);\n\t\t\t\t\tStringBuilder builder = new StringBuilder();\n\t\t\t\t\tint missing = 0;\n\t\t\t\t\tfor (Map.Entry<Integer, Integer> required : plan.entrySet()) {\n\t\t\t\t\t\tint typeID = required.getKey();\n\t\t\t\t\t\tint targetLevel = Math.max(1, Math.min(5, required.getValue()));\n\t\t\t\t\t\tdouble targetSkillPoints = skillPointsForLevel(typeID, targetLevel);\n\t\t\t\t\t\tlong currentSkillPoints = have.getOrDefault(typeID, 0L);\n\t\t\t\t\t\tif (currentSkillPoints < targetSkillPoints) {\n\t\t\t\t\t\t\tmissing++;\n\t\t\t\t\t\t\tString name;\n\t\t\t\t\t\t\tname = ApiIdConverter.getItem(typeID).getTypeName();\n\t\t\t\t\t\t\tint approximateLevel = approximateLevelFromSkillPoints(currentSkillPoints);\n\t\t\t\t\t\t\tString percent = Formatter.percentFormat(Math.min(1.0, currentSkillPoints / Math.max(1.0, targetSkillPoints)));\n\t\t\t\t\t\t\tbuilder.append(TabsSkills.get().tableToolTipSkill(name, approximateLevel, targetLevel, percent));\n\t\t\t\t\t\t\tif (lineHeight * (missing + 3) > maxHeight) {\n\t\t\t\t\t\t\t\tbuilder.append(TabsSkills.get().tableToolTipTruncated());\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (missing == 0) {\n\t\t\t\t\t\treturn TabsSkills.get().tableToolTipCompleted();\n\t\t\t\t\t}\n\t\t\t\t\treturn TabsSkills.get().tableToolTipMissing(missing) + builder.toString().trim();\n\t\t\t\t} catch (Throwable t) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tjTable.setToolTipText(\"\");\n\t\tjTable.setCellSelectionEnabled(true);\n\t\tjTable.setRowSelectionAllowed(true);\n\t\tjTable.setColumnSelectionAllowed(true);\n\t\t//Sorting\n\t\tTableComparatorChooser<SkillsOverview> comparatorChooser = TableComparatorChooser.install(jTable, sortedColumns, TableComparatorChooser.MULTIPLE_COLUMN_MOUSE, tableFormat);\n\t\t//Selection Model\n\t\tselectionModel = EventModels.createSelectionModel(filterList);\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\n\t\tjTable.setSelectionModel(selectionModel);\n\n\t\t//Listeners\n\t\tinstallTable(jTable);\n\t\t//Scroll\n\t\tJScrollPane jScrollPane = new JScrollPane(jTable);\n\t\t//Table Filter\n\t\tfilterControl = new SkillsOverviewFilterControl(sorted);\n\t\t//Menu\n\t\tinstallTableTool(new SkillsOverviewTableMenu(), tableFormat, comparatorChooser, tableModel, jTable, eventList, SkillsOverview.class);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jToolBar, jToolBar.getMinimumSize().width, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t.addComponent(jScrollPane, 0, 0, Short.MAX_VALUE));\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jToolBar, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t.addComponent(jScrollPane, 0, 0, Short.MAX_VALUE));\n\t}\n\n\t@Override\n\tpublic void updateData() {\n\t\tList<SkillsOverview> skillsOverviews = new ArrayList<>();\n\t\tfor (EnumTableColumn<SkillsOverview> column : new ArrayList<>(dynamicColumns)) {\n\t\t\ttableFormat.removeColumn(column);\n\t\t}\n\t\tdynamicColumns.clear();\n\t\tfor (String planName : Settings.get().getSkillPlans().keySet()) {\n\t\t\tPlanColumn column = new PlanColumn(planName);\n\t\t\ttableFormat.addColumn(column);\n\t\t\tdynamicColumns.add(column);\n\t\t}\n\t\ttableModel.fireTableStructureChanged();\n\t\tfilterControl.updateColumns(true);\n\t\tMap<String, Map<Integer, Integer>> plans = Settings.get().getSkillPlans();\n\t\tMap<String, Map<Integer, Long>> ownerSkillPoints = new LinkedHashMap<>();\n\t\ttry {\n\t\t\tprogram.getProfileData().getSkillsEventList().getReadWriteLock().readLock().lock();\n\t\t\tfor (MySkill skill : program.getProfileData().getSkillsEventList()) {\n\t\t\t\tMap<Integer, Long> map = ownerSkillPoints.computeIfAbsent(skill.getOwnerName(), k -> new LinkedHashMap<>());\n\t\t\t\tmap.put(skill.getTypeID(), skill.getSkillpoints());\n\t\t\t}\n\t\t} finally {\n\t\t\tprogram.getProfileData().getSkillsEventList().getReadWriteLock().readLock().unlock();\n\t\t}\n\t\tfor (Map.Entry<String, Map<Integer, Long>> entry : ownerSkillPoints.entrySet()) {\n\t\t\tSkillsOverview skillsOverview = new SkillsOverview(entry.getKey());\n\t\t\tskillsOverview.setOwnerSkillPoints(entry.getValue());\n\t\t\t// Populate Total SP and Unallocated SP for this character\n\t\t\tOwnerType ownerType = null;\n\t\t\tfor (OwnerType owner : program.getOwnerTypes()) {\n\t\t\t\tif (owner.getOwnerName().equals(entry.getKey())) {\n\t\t\t\t\townerType = owner;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (ownerType != null) {\n\t\t\t\tskillsOverview.setTotalSkillPoints(ownerType.getTotalSkillPoints());\n\t\t\t\tskillsOverview.setUnallocatedSkillPoints(ownerType.getUnallocatedSkillPoints());\n\t\t\t}\n\t\t\tfor (Map.Entry<String, Map<Integer, Integer>> plan : plans.entrySet()) {\n\t\t\t\tdouble planPercent = computePlanPercent(entry.getValue(), plan.getValue());\n\t\t\t\tskillsOverview.planToPercent.put(plan.getKey(), Percent.create(planPercent));\n\t\t\t}\n\t\t\tskillsOverviews.add(skillsOverview);\n\t\t}\n\t\tSkillsOverview total = new SkillsOverview(TabsSkills.get().total());\n\t\tfor (String plan : plans.keySet()) {\n\t\t\tdouble sum = 0;\n\t\t\tint count = 0;\n\t\t\tfor (SkillsOverview skillsOverview : skillsOverviews) {\n\t\t\t\tPercent p = skillsOverview.planToPercent.get(plan);\n\t\t\t\tif (p != null) {\n\t\t\t\t\tsum += p.getDouble();\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttotal.planToPercent.put(plan, Percent.create(count == 0 ? 0 : (sum / 100.0 / count)));\n\t\t}\n\t\tskillsOverviews.add(total);\n\t\ttry {\n\t\t\teventList.getReadWriteLock().writeLock().lock();\n\t\t\teventList.clear();\n\t\t\teventList.addAll(skillsOverviews);\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t}\n\n\tprivate static class TotalComparator implements Comparator<SkillsOverview> {\n\n\t\t@Override\n\t\tpublic int compare(SkillsOverview a, SkillsOverview b) {\n\t\t\tif (a.isTotal() && b.isTotal()) {\n\t\t\t\treturn 0;\n\t\t\t} else if (a.isTotal()) {\n\t\t\t\treturn 1;\n\t\t\t} else if (b.isTotal()) {\n\t\t\t\treturn -1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate double computePlanPercent(Map<Integer, Long> ownerSkillSp, Map<Integer, Integer> plan) {\n\t\tdouble have = 0;\n\t\tdouble need = 0;\n\t\tfor (Map.Entry<Integer, Integer> required : plan.entrySet()) {\n\t\t\tint typeID = required.getKey();\n\t\t\tint level = Math.max(1, Math.min(5, required.getValue()));\n\t\t\tdouble targetSkillPoints = skillPointsForLevel(typeID, level);\n\t\t\tlong currentSkillPoints = ownerSkillSp.getOrDefault(typeID, 0L);\n\t\t\thave += Math.min(currentSkillPoints, targetSkillPoints);\n\t\t\tneed += targetSkillPoints;\n\t\t}\n\t\tif (need <= 0) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn have / need;\n\t}\n\n\tprivate static int approximateLevelFromSkillPoints(long currentSkillPoints) {\n\t\tfor (int i = 5; i >= 1; i--) {\n\t\t\tif (currentSkillPoints >= RANK_1_LEVELS[i - 1]) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t}\n\n\tprivate double skillPointsForLevel(int typeID, int level) {\n\t\tdouble rank = 1.0;\n\t\tApiIdConverter.getItem(typeID);\n\n\t\treturn RANK_1_LEVELS[level - 1] * rank;\n\t}\n\n\tpublic Map<Integer, Integer> importSkillPlan(String text) {\n\t\tString importText = jTextDialog.importText(text, SKILL_PLAN_EXAMPLE);\n\t\tif (importText == null) {\n\t\t\treturn null;\n\t\t}\n\t\t//Lookup Table\n\t\tMap<String, Integer> names = new HashMap<>();\n\t\tfor (Item item : StaticData.get().getItems().values()) {\n\t\t\tnames.put(item.getTypeName().toLowerCase(), item.getTypeID());\n\t\t}\n\n\t\tString[] lines = importText.split(\"[\\r\\n]+\");\n\t\tMap<Integer, Integer> skills = new LinkedHashMap<>();\n\t\tfor (String line : lines) {\n\t\t\tString trimmed = line.trim();\n\t\t\tif (trimmed.isEmpty()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tint space = lastSpaceIndex(trimmed);\n\t\t\tif (space <= 0 || space == trimmed.length() - 1) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tString skillName = trimmed.substring(0, space).trim();\n\t\t\tString levelStr = trimmed.substring(space + 1).trim();\n\t\t\tint level = 0;\n\t\t\ttry {\n\t\t\t\tlevel = Integer.parseInt(levelStr);\n\t\t\t} catch (NumberFormatException ex) {\n\t\t\t\tswitch (levelStr.toLowerCase()) {\n\t\t\t\t\tcase \"i\": level = 1; break;\n\t\t\t\t\tcase \"ii\": level = 2; break;\n\t\t\t\t\tcase \"iii\": level = 3; break;\n\t\t\t\t\tcase \"iv\": level = 4; break;\n\t\t\t\t\tcase \"v\": level = 5; break;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (level == 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlevel = Math.max(1, Math.min(5, level));\n\t\t\tInteger typeID = names.get(skillName.toLowerCase());\n\t\t\tif (typeID == null || typeID == 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tskills.put(typeID, level);\n\t\t}\n\t\tif (skills.isEmpty()) {\n\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), TabsSkills.get().noValidSkills (), TabsSkills.get().add(), JOptionPane.WARNING_MESSAGE);\n\t\t\treturn importSkillPlan(text);\n\t\t}\n\t\treturn skills;\n\t}\n\n\tpublic void newSkillPlan(Map<Integer, Integer> skills) {\n\t\tif (skills == null || skills.isEmpty()) {\n\t\t\treturn;\n\t\t}\n\t\tjSaveDialog.updateData(Settings.get().getSkillPlans().keySet());\n\t\tString name = jSaveDialog.show();\n\t\tif (name == null) {\n\t\t\treturn; //Cancel\n\t\t}\n\t\tSettings.lock(\"Skills Overview (New Plan)\");\n\t\tSettings.get().getSkillPlans().put(name, skills);\n\t\tSettings.unlock(\"Skills Overview (New Plan)\");\n\t\tprogram.saveSettings(\"Skills Overview (New Plan)\");\n\t\tupdateData();\n\t}\n\n\tprivate static int lastSpaceIndex(String s) {\n\t\tfor (int i = s.length() - 1; i >= 0; i--) {\n\t\t\tif (Character.isWhitespace(s.charAt(i)))\n\t\t\t\treturn i;\n\t\t}\n\t\treturn -1;\n\t}\n\n\t@Override\n\tpublic void clearData() {\n\t\ttry {\n\t\t\teventList.getReadWriteLock().writeLock().lock();\n\t\t\teventList.clear();\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t\tfilterControl.clearCache();\n\t}\n\n\t@Override\n\tpublic void updateCache() {\n\t\tfilterControl.createCache();\n\t}\n\n\t@Override\n\tpublic Collection<LocationType> getLocations() {\n\t\treturn new ArrayList<>();\n\t}\n\n\tpublic class SkillsOverview implements Comparable<SkillsOverview> {\n\n\t\tprivate final String owner;\n\t\tprivate final Map<String, Percent> planToPercent = new LinkedHashMap<>();\n\t\tprivate Long totalSkillsPoints;\n\t\tprivate Integer unallocatedSkillsPoints;\n\t\tprivate Map<Integer, Long> ownerSkillPoints;\n\n\t\tpublic SkillsOverview(String owner) {\n\t\t\tthis.owner = owner;\n\t\t}\n\n\t\tpublic String getOwner() {\n\t\t\treturn owner;\n\t\t}\n\n\t\tpublic Percent getPercent(String plan) {\n\t\t\treturn planToPercent.getOrDefault(plan, Percent.create(0));\n\t\t}\n\n\t\tpublic void setOwnerSkillPoints(Map<Integer, Long> ownerSkillPoints) {\n\t\t\tthis.ownerSkillPoints = ownerSkillPoints;\n\t\t}\n\n\t\tpublic Map<Integer, Long> getOwnerSkillPoints() {\n\t\t\treturn ownerSkillPoints != null ? ownerSkillPoints : new LinkedHashMap<>();\n\t\t}\n\n\t\tpublic void setTotalSkillPoints(Long totalSkillsPoints) {\n\t\t\tthis.totalSkillsPoints = totalSkillsPoints;\n\t\t}\n\n\t\tpublic Long getTotalSkillPoints() {\n\t\t\treturn totalSkillsPoints;\n\t\t}\n\n\t\tpublic void setUnallocatedSkillPoints(Integer unallocatedSkillsPoints) {\n\t\t\tthis.unallocatedSkillsPoints = unallocatedSkillsPoints;\n\t\t}\n\n\t\tpublic Integer getUnallocatedSkillPoints() {\n\t\t\treturn unallocatedSkillsPoints;\n\t\t}\n\n\t\tpublic boolean isTotal() {\n\t\t\treturn owner.equals(TabsSkills.get().total());\n\t\t}\n\n\t\t@Override\n\t\tpublic int compareTo(SkillsOverview o) {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\tprivate static class PlanColumn implements EnumTableColumn<SkillsOverview> {\n\n\t\tprivate final String plan;\n\n\t\tPlanColumn(String plan) {\n\t\t\tthis.plan = plan;\n\t\t}\n\n\t\t@Override\n\t\tpublic Class<?> getType() {\n\t\t\treturn Percent.class;\n\t\t}\n\n\t\t@Override\n\t\tpublic Comparator<?> getComparator() {\n\t\t\treturn EnumTableColumn.getComparator(Percent.class);\n\t\t}\n\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn plan;\n\t\t}\n\n\t\t@Override\n\t\tpublic Object getColumnValue(SkillsOverview from) {\n\t\t\treturn from.getPercent(plan);\n\t\t}\n\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\treturn getColumnName();\n\t\t}\n\n\t\t@Override\n\t\tpublic String name() {\n\t\t\treturn plan;\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean isShowDefault() {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tprivate class SkillsOverviewTableMenu implements TableMenu<SkillsOverview> {\n\n\t\t@Override\n\t\tpublic MenuData<SkillsOverview> getMenuData() {\n\t\t\treturn new MenuData<>(selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getFilterMenu() {\n\t\t\treturn filterControl.getMenu(jTable, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getColumnMenu() {\n\t\t\treturn new JMenuColumns<>(program, tableFormat, tableModel, jTable, NAME);\n\t\t}\n\n\t\t@Override\n\t\tpublic void addInfoMenu(JPopupMenu jPopupMenu) { }\n\n\t\t@Override\n\t\tpublic void addToolMenu(JComponent jComponent) { }\n\t}\n\n\tprivate class SkillsOverviewFilterControl extends FilterControl<SkillsOverview> {\n\n\t\tpublic SkillsOverviewFilterControl(EventList<SkillsOverview> exportEventList) {\n\t\t\tsuper(program.getMainWindow().getFrame(), NAME, tableFormat, eventList, exportEventList, filterList);\n\t\t}\n\n\t\t@Override\n\t\tpublic void saveSettings(final String msg) {\n\t\t\tprogram.saveSettings(\"Skills Overview Table: \" + msg);\n\t\t}\n\t}\n\n\tprivate class ListenerClass implements ActionListener {\n\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (SkillsOverviewAction.ADD_SKILL_PLAN.name().equals(e.getActionCommand())) {\n\t\t\t\tMap<Integer, Integer> skills = importSkillPlan(\"\");\n\t\t\t\tnewSkillPlan(skills);\n\t\t\t} else if (SkillsOverviewAction.MANAGE_SKILL_PLANS.name().equals(e.getActionCommand())) {\n\t\t\t\tjSkillPlansManageDialog.setVisible(true);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/skills/SkillsOverviewTableFormat.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.skills;\r\n\r\nimport java.util.Comparator;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.gui.tabs.skills.SkillsOverviewTab.SkillsOverview;\r\nimport net.nikr.eve.jeveasset.i18n.TabsSkills;\r\n\r\n\r\npublic enum SkillsOverviewTableFormat implements EnumTableColumn<SkillsOverview> {\r\n\tOWNER(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSkills.get().columnCharacter();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(SkillsOverview from) {\r\n\t\t\treturn from.getOwner();\r\n\t\t}\r\n\t},\r\n\tTOTAL_SP(Long.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSkills.get().columnTotal();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(SkillsOverview from) {\r\n\t\t\treturn from.getTotalSkillPoints();\r\n\t\t}\r\n\t},\r\n\tUNALLOCATED_SP(Long.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSkills.get().columnUnallocated();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(SkillsOverview from) {\r\n\t\t\treturn from.getUnallocatedSkillPoints();\r\n\t\t}\r\n\t};\r\n\r\n\tprivate final Class<?> type;\r\n\tprivate final Comparator<?> comparator;\r\n\r\n\tprivate SkillsOverviewTableFormat(final Class<?> type) {\r\n\t\tthis.type = type;\r\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Class<?> getType() {\r\n\t\treturn type;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Comparator<?> getComparator() {\r\n\t\treturn comparator;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn getColumnName();\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/skills/SkillsTab.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.skills;\r\n\r\nimport ca.odell.glazedlists.EventList;\r\nimport ca.odell.glazedlists.FilterList;\r\nimport ca.odell.glazedlists.ListSelection;\r\nimport ca.odell.glazedlists.SortedList;\r\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\r\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\r\nimport ca.odell.glazedlists.swing.TableComparatorChooser;\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\nimport javax.swing.JComponent;\r\nimport javax.swing.JMenu;\r\nimport javax.swing.JPopupMenu;\r\nimport javax.swing.JScrollPane;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.my.MySkill;\r\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabPrimary;\r\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuColumns;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\r\nimport net.nikr.eve.jeveasset.i18n.TabsSkills;\r\n\r\n\r\npublic class SkillsTab extends JMainTabPrimary {\r\n\r\n\t//GUI\r\n\tprivate final JAutoColumnTable jTable;\r\n\r\n\t//Table\r\n\tprivate final SkillsFilterControl filterControl;\r\n\tprivate final EnumTableFormatAdaptor<SkillsTableFormat, MySkill> tableFormat;\r\n\tprivate final DefaultEventTableModel<MySkill> tableModel;\r\n\tprivate final EventList<MySkill> eventList;\r\n\tprivate final FilterList<MySkill> filterList;\r\n\tprivate final DefaultEventSelectionModel<MySkill> selectionModel;\r\n\r\n\tpublic static final String NAME = \"skills\"; //Not to be changed!\r\n\r\n\tpublic SkillsTab(Program program) {\r\n\t\tsuper(program, NAME, TabsSkills.get().skills(), Images.TOOL_SKILLS.getIcon(), true);\r\n\r\n\t\t//Table Format\r\n\t\ttableFormat = TableFormatFactory.skillsTableFormat();\r\n\t\t//Backend\r\n\t\teventList = program.getProfileData().getSkillsEventList();\r\n\t\t//Sorting (per column)\r\n\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\tSortedList<MySkill> sortedList = new SortedList<>(eventList);\r\n\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t//Filter\r\n\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\tfilterList = new FilterList<>(sortedList);\r\n\t\teventList.getReadWriteLock().readLock().unlock();\r\n\r\n\t\t//Table Model\r\n\t\ttableModel = EventModels.createTableModel(filterList, tableFormat);\r\n\t\t//Table\r\n\t\tjTable = new JAutoColumnTable(program, tableModel);\r\n\t\tjTable.setCellSelectionEnabled(true);\r\n\t\tjTable.setRowSelectionAllowed(true);\r\n\t\tjTable.setColumnSelectionAllowed(true);\r\n\t\t//Sorting\r\n\t\tTableComparatorChooser<MySkill> comparatorChooser = TableComparatorChooser.install(jTable, sortedList, TableComparatorChooser.MULTIPLE_COLUMN_MOUSE, tableFormat);\r\n\t\t//Selection Model\r\n\t\tselectionModel = EventModels.createSelectionModel(filterList);\r\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\r\n\t\tjTable.setSelectionModel(selectionModel);\r\n\r\n\t\t//Listeners\r\n\t\tinstallTable(jTable);\r\n\t\t//Scroll\r\n\t\tJScrollPane jTableScroll = new JScrollPane(jTable);\r\n\t\t//Table Filter\r\n\t\tfilterControl = new SkillsFilterControl(sortedList);\r\n\t\t//Menu\r\n\t\tinstallTableTool(new SkillsTableMenu(), tableFormat, comparatorChooser, tableModel, jTable, filterControl, MySkill.class);\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup()\r\n\t\t\t\t.addComponent(filterControl.getPanel())\r\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(filterControl.getPanel())\r\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\r\n\t\t);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void updateCache() { }\r\n\r\n\t@Override\r\n\tpublic void clearData() { }\r\n\r\n\t@Override\r\n\tpublic Collection<LocationType> getLocations() {\r\n\t\treturn new ArrayList<>(); //No Location\r\n\t}\r\n\r\n\tprivate class SkillsTableMenu implements TableMenu<MySkill> {\r\n\t\t@Override\r\n\t\tpublic MenuData<MySkill> getMenuData() {\r\n\t\t\treturn new MenuData<>(selectionModel.getSelected());\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic JMenu getFilterMenu() {\r\n\t\t\treturn filterControl.getMenu(jTable, selectionModel.getSelected());\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic JMenu getColumnMenu() {\r\n\t\t\treturn new JMenuColumns<>(program, tableFormat, tableModel, jTable, NAME);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void addInfoMenu(JPopupMenu jPopupMenu) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void addToolMenu(JComponent jComponent) { }\r\n\t}\r\n\r\n\tprivate class SkillsFilterControl extends FilterControl<MySkill> {\r\n\r\n\t\tpublic SkillsFilterControl(EventList<MySkill> exportEventList) {\r\n\t\t\tsuper(program.getMainWindow().getFrame(),\r\n\t\t\t\t\tNAME,\r\n\t\t\t\t\ttableFormat,\r\n\t\t\t\t\teventList,\r\n\t\t\t\t\texportEventList,\r\n\t\t\t\t\tfilterList\r\n\t\t\t\t\t);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void saveSettings(final String msg) {\r\n\t\t\tprogram.saveSettings(\"Skills Table: \" + msg); //Save Asset Filters and Export Settings\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/skills/SkillsTableFormat.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.skills;\n\nimport java.util.Comparator;\nimport net.nikr.eve.jeveasset.data.api.my.MySkill;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.i18n.TabsSkills;\n\n\npublic enum SkillsTableFormat implements EnumTableColumn<MySkill> {\n\tNAME(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsSkills.get().columnSkill();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MySkill from) {\n\t\t\treturn from.getName();\n\t\t}\n\t},\n\tGROUP(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsSkills.get().columnGroup();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MySkill from) {\n\t\t\treturn from.getItem().getGroup();\n\t\t}\n\t},\n\tOWNER(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsSkills.get().columnCharacter();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MySkill from) {\n\t\t\treturn from.getOwnerName();\n\t\t}\n\t},\n\tACTIVE(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsSkills.get().columnActive();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MySkill from) {\n\t\t\treturn from.getActiveSkillLevel();\n\t\t}\n\t},\n\tTRAINED(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsSkills.get().columnTrained();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MySkill from) {\n\t\t\treturn from.getTrainedSkillLevel();\n\t\t}\n\t};\n\n\tprivate final Class<?> type;\n\tprivate final Comparator<?> comparator;\n\n\tprivate SkillsTableFormat(final Class<?> type) {\n\t\tthis.type = type;\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\n\t}\n\t@Override\n\tpublic Class<?> getType() {\n\t\treturn type;\n\t}\n\t@Override\n\tpublic Comparator<?> getComparator() {\n\t\treturn comparator;\n\t}\n\t@Override\n\tpublic String toString() {\n\t\treturn getColumnName();\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/slots/JSlotsTable.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.slots;\r\n\r\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\r\nimport java.awt.Component;\r\nimport javax.swing.table.TableCellRenderer;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\r\n\r\n\r\npublic class JSlotsTable extends JAutoColumnTable {\r\n\r\n\tprivate final DefaultEventTableModel<Slots> tableModel;\r\n\r\n\tpublic JSlotsTable(final Program program, final DefaultEventTableModel<Slots> tableModel) {\r\n\t\tsuper(program, tableModel);\r\n\t\tthis.tableModel = tableModel;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Component prepareRenderer(final TableCellRenderer renderer, final int row, final int column) {\r\n\t\tComponent component = super.prepareRenderer(renderer, row, column);\r\n\t\tboolean isSelected = isCellSelected(row, column);\r\n\t\tSlots slots = tableModel.getElementAt(row);\r\n\t\tString columnName = (String) this.getTableHeader().getColumnModel().getColumn(column).getHeaderValue();\r\n\t\t//Grand Total\r\n\t\tif (slots.isGrandTotal()) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.GLOBAL_GRAND_TOTAL, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\tif (slots.isEmpty() && columnName.equals(SlotsTableFormat.NAME.getColumnName())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.GLOBAL_ENTRY_INVALID, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\tif (slots.isManufacturingFree() && columnName.equals(SlotsTableFormat.MANUFACTURING_FREE.getColumnName())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.INDUSTRY_SLOTS_FREE, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\tif (slots.isManufacturingDone() && columnName.equals(SlotsTableFormat.MANUFACTURING_DONE.getColumnName())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.INDUSTRY_SLOTS_DONE, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\tif (slots.isManufacturingFull() && columnName.equals(SlotsTableFormat.MANUFACTURING_FREE.getColumnName())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.INDUSTRY_SLOTS_FULL, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\tif (slots.isReactionsFree() && columnName.equals(SlotsTableFormat.REACTIONS_FREE.getColumnName())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.INDUSTRY_SLOTS_FREE, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\tif (slots.isReactionsDone() && columnName.equals(SlotsTableFormat.REACTIONS_DONE.getColumnName())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.INDUSTRY_SLOTS_DONE, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\tif (slots.isReactionsFull() && columnName.equals(SlotsTableFormat.REACTIONS_FREE.getColumnName())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.INDUSTRY_SLOTS_FULL, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\tif (slots.isResearchFree() && columnName.equals(SlotsTableFormat.RESEARCH_FREE.getColumnName())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.INDUSTRY_SLOTS_FREE, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\tif (slots.isResearchDone() && columnName.equals(SlotsTableFormat.RESEARCH_DONE.getColumnName())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.INDUSTRY_SLOTS_DONE, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\tif (slots.isResearchFull() && columnName.equals(SlotsTableFormat.RESEARCH_FREE.getColumnName())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.INDUSTRY_SLOTS_FULL, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\tif (slots.isMarketOrdersFree() && columnName.equals(SlotsTableFormat.MARKET_ORDERS_FREE.getColumnName())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.INDUSTRY_SLOTS_FREE, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\tif (slots.isMarketOrdersFull() && columnName.equals(SlotsTableFormat.MARKET_ORDERS_FREE.getColumnName())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.INDUSTRY_SLOTS_FULL, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\tif (slots.isContractCharacterFree() && columnName.equals(SlotsTableFormat.CONTRACT_CHARACTER_FREE.getColumnName())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.INDUSTRY_SLOTS_FREE, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\tif (slots.isContractCharacterFull() && columnName.equals(SlotsTableFormat.CONTRACT_CHARACTER_FREE.getColumnName())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.INDUSTRY_SLOTS_FULL, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\tif (slots.isContractCorporationFree() && columnName.equals(SlotsTableFormat.CONTRACT_CORPORATION_FREE.getColumnName())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.INDUSTRY_SLOTS_FREE, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\tif (slots.isContractCorporationFull() && columnName.equals(SlotsTableFormat.CONTRACT_CORPORATION_FREE.getColumnName())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.INDUSTRY_SLOTS_FULL, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\treturn component;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/slots/Slots.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.slots;\r\n\r\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyShip;\r\nimport net.nikr.eve.jeveasset.data.api.my.MySkill;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawIndustryJob.IndustryJobStatus;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\r\n\r\n\r\npublic class Slots implements Comparable<Slots>, LocationType {\r\n\r\n\tprivate final String name;\r\n\tprivate final boolean total;\r\n\tprivate final boolean empty;\r\n\tprivate int manufacturingActive = 0;\r\n\tprivate int reactionsActive = 0;\r\n\tprivate int researchActive = 0;\r\n\tprivate int marketOrdersActive = 0;\r\n\tprivate int contractCharacterActive = 0;\r\n\tprivate int contractCorporationActive = 0;\r\n\tprivate int manufacturingDone = 0;\r\n\tprivate int reactionsDone = 0;\r\n\tprivate int researchDone = 0;\r\n\tprivate int manufacturingMax = 0;\r\n\tprivate int reactionsMax = 0;\r\n\tprivate int researchMax = 0;\r\n\tprivate int marketOrdersMax = 0;\r\n\tprivate int contractCharacterMax = 0;\r\n\tprivate int contractCorporationMax = 0;\r\n\tprivate MyShip activeShip = null;\r\n\r\n\tpublic Slots(OwnerType ownerType) {\r\n\t\tthis.name = ownerType.getOwnerName();\r\n\t\tthis.total = false;\r\n\t\tthis.empty = ownerType.getSkills().isEmpty();\r\n\t\tif(ownerType.isCharacter() && ownerType.getActiveShip() != null && ownerType.getActiveShip().getLocation() != null) {\r\n\t\t\tthis.activeShip = ownerType.getActiveShip();\r\n\t\t}\r\n\t\tcount(ownerType);\r\n\t}\r\n\r\n\tpublic Slots(String name) {\r\n\t\tthis.name = name;\r\n\t\tthis.total = true;\r\n\t\tthis.empty = false;\r\n\t}\r\n\r\n\tpublic final void count(Slots slots) {\r\n\t\tmanufacturingActive += slots.manufacturingActive;\r\n\t\treactionsActive += slots.reactionsActive;\r\n\t\tresearchActive += slots.researchActive;\r\n\t\tmanufacturingDone += slots.manufacturingDone;\r\n\t\treactionsDone += slots.reactionsDone;\r\n\t\tresearchDone += slots.researchDone;\r\n\t\tmanufacturingMax += slots.manufacturingMax;\r\n\t\treactionsMax += slots.reactionsMax;\r\n\t\tresearchMax += slots.researchMax;\r\n\t\tmarketOrdersActive += slots.marketOrdersActive;\r\n\t\tmarketOrdersMax += slots.marketOrdersMax;\r\n\t\tcontractCharacterActive += slots.contractCharacterActive;\r\n\t\tcontractCharacterMax += slots.contractCharacterMax;\r\n\t\tcontractCorporationActive += slots.contractCorporationActive;\r\n\t\tcontractCorporationMax += slots.contractCorporationMax;\r\n\t}\r\n\r\n\tpublic final void count(MyIndustryJob industryJob) {\r\n\t\tif (industryJob.isDone()) {\r\n\t\t\treturn; //Doesn't count as active\r\n\t\t}\r\n\t\tswitch (industryJob.getActivity()) {\r\n\t\t\tcase ACTIVITY_MANUFACTURING:\r\n\t\t\t\tif (industryJob.getStatus() == IndustryJobStatus.READY) {\r\n\t\t\t\t\tmanufacturingDone++;\r\n\t\t\t\t}\r\n\t\t\t\tmanufacturingActive++;\r\n\t\t\t\tbreak;\r\n\t\t\tcase ACTIVITY_REACTIONS:\r\n\t\t\t\tif (industryJob.getStatus() == IndustryJobStatus.READY) {\r\n\t\t\t\t\treactionsDone++;\r\n\t\t\t\t}\r\n\t\t\t\treactionsActive++;\r\n\t\t\t\tbreak;\r\n\t\t\tcase ACTIVITY_RESEARCHING_METERIAL_PRODUCTIVITY:\r\n\t\t\tcase ACTIVITY_RESEARCHING_TECHNOLOGY:\r\n\t\t\tcase ACTIVITY_RESEARCHING_TIME_PRODUCTIVITY:\r\n\t\t\tcase ACTIVITY_REVERSE_ENGINEERING:\r\n\t\t\tcase ACTIVITY_REVERSE_INVENTION:\r\n\t\t\tcase ACTIVITY_DUPLICATING:\r\n\t\t\tcase ACTIVITY_COPYING:\r\n\t\t\t\tif (industryJob.getStatus() == IndustryJobStatus.READY) {\r\n\t\t\t\t\tresearchDone++;\r\n\t\t\t\t}\r\n\t\t\t\tresearchActive++;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic final void count(MyContract contract) {\r\n\t\t//Only count open contracts\r\n\t\tif (!contract.isOpen()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t//Internal corporation contracts does not count as a used slot (no matter who issued them, corp or char)\r\n\t\tif (!contract.getIssuerCorp().isEmpty() && contract.getIssuerCorp().equals(contract.getAssignee())) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (contract.isForCorp()) { //Corporation\r\n\t\t\t\r\n\t\t\tcontractCorporationActive++;\r\n\t\t} else { //Character\r\n\t\t\tcontractCharacterActive++;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic final void count(MyMarketOrder marketOrder) {\r\n\t\tif (marketOrder.isActive()) {\r\n\t\t\tmarketOrdersActive++;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic final void count(OwnerType ownerType) {\r\n\t\t//Default\r\n\t\tmanufacturingMax = manufacturingMax + 1;\r\n\t\treactionsMax = reactionsMax + 1;\r\n\t\tresearchMax = researchMax + 1;\r\n\t\tmarketOrdersMax = marketOrdersMax + 5;\r\n\t\tcontractCharacterMax = contractCharacterMax + 1;\r\n\t\tcontractCorporationMax = contractCorporationMax + 10;\r\n\t\t//From Skills\r\n\t\tfor (MySkill skill : ownerType.getSkills()) {\r\n\t\t\tswitch (skill.getTypeID()) {\r\n\t\t\t\tcase 3387:  //Mass Production (+1)\r\n\t\t\t\tcase 24625: //Advanced Mass Production (+1)\r\n\t\t\t\t\tmanufacturingMax = manufacturingMax + skill.getActiveSkillLevel();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 45748: //Mass Reactions (+1)\r\n\t\t\t\tcase 45749: //Advanced Mass Reactions (+1)\r\n\t\t\t\t\treactionsMax = reactionsMax + skill.getActiveSkillLevel();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 3406:  //Laboratory Operation (+1)\r\n\t\t\t\tcase 24624: //Advanced Laboratory Operation (+1)\r\n\t\t\t\t\tresearchMax = researchMax + skill.getActiveSkillLevel();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 3443:  //Trade (+4)\r\n\t\t\t\t\tmarketOrdersMax = marketOrdersMax + (skill.getActiveSkillLevel() * 4);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 3444:  //Retail (+8)\r\n\t\t\t\t\tmarketOrdersMax = marketOrdersMax + (skill.getActiveSkillLevel() * 8);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 16596: //Wholesale (+16)\r\n\t\t\t\t\tmarketOrdersMax = marketOrdersMax + (skill.getActiveSkillLevel() * 16);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 18580: //Tycoon (+32)\r\n\t\t\t\t\tmarketOrdersMax = marketOrdersMax + (skill.getActiveSkillLevel() * 32);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 25235: //Contracting (+4)\r\n\t\t\t\tcase 73912: //Advanced Contracting (+4)\r\n\t\t\t\t\tcontractCharacterMax = contractCharacterMax + (skill.getActiveSkillLevel() * 4);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 25233: //Corporation Contracting (+10)\r\n\t\t\t\t\tcontractCorporationMax = contractCorporationMax + (skill.getActiveSkillLevel() * 10);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic String getName() {\r\n\t\treturn name;\r\n\t}\r\n\r\n\tpublic int getManufacturingFree() {\r\n\t\treturn manufacturingMax - manufacturingActive;\r\n\t}\r\n\r\n\tpublic int getResearchFree() {\r\n\t\treturn researchMax - researchActive;\r\n\t}\r\n\r\n\tpublic int getReactionsFree() {\r\n\t\treturn reactionsMax - reactionsActive;\r\n\t}\r\n\r\n\tpublic int getMarketOrdersFree() {\r\n\t\treturn marketOrdersMax - marketOrdersActive;\r\n\t}\r\n\r\n\tpublic int getContractCharacterFree() {\r\n\t\treturn contractCharacterMax - contractCharacterActive;\r\n\t}\r\n\r\n\tpublic int getContractCorporationFree() {\r\n\t\treturn contractCorporationMax - contractCorporationActive;\r\n\t}\r\n\r\n\tpublic int getManufacturingActive() {\r\n\t\treturn manufacturingActive;\r\n\t}\r\n\r\n\tpublic int getReactionsActive() {\r\n\t\treturn reactionsActive;\r\n\t}\r\n\r\n\tpublic int getResearchActive() {\r\n\t\treturn researchActive;\r\n\t}\r\n\r\n\tpublic int getMarketOrdersActive() {\r\n\t\treturn marketOrdersActive;\r\n\t}\r\n\r\n\tpublic int getContractCharacterActive() {\r\n\t\treturn contractCharacterActive;\r\n\t}\r\n\r\n\tpublic int getContractCorporationActive() {\r\n\t\treturn contractCorporationActive;\r\n\t}\r\n\r\n\tpublic int getManufacturingDone() {\r\n\t\treturn manufacturingDone;\r\n\t}\r\n\r\n\tpublic int getReactionsDone() {\r\n\t\treturn reactionsDone;\r\n\t}\r\n\r\n\tpublic int getResearchDone() {\r\n\t\treturn researchDone;\r\n\t}\r\n\r\n\tpublic int getManufacturingMax() {\r\n\t\treturn manufacturingMax;\r\n\t}\r\n\r\n\tpublic int getReactionsMax() {\r\n\t\treturn reactionsMax;\r\n\t}\r\n\r\n\tpublic int getResearchMax() {\r\n\t\treturn researchMax;\r\n\t}\r\n\r\n\tpublic int getMarketOrdersMax() {\r\n\t\treturn marketOrdersMax;\r\n\t}\r\n\r\n\tpublic int getContractCharacterMax() {\r\n\t\treturn contractCharacterMax;\r\n\t}\r\n\r\n\tpublic int getContractCorporationMax() {\r\n\t\treturn contractCorporationMax;\r\n\t}\r\n\r\n\tpublic String getActiveShip() {\r\n\t\tif (activeShip != null) {\r\n\t\t\treturn activeShip.getName();\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tpublic String getCurrentStation() {\r\n\t\tif (activeShip != null) {\r\n\t\t\treturn activeShip.getLocation().getStation();\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tpublic String getCurrentSystem() {\r\n\t\tif (activeShip != null) {\r\n\t\t\treturn activeShip.getLocation().getSystem();\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tpublic String getCurrentConstellation() {\r\n\t\tif (activeShip != null) {\r\n\t\t\treturn activeShip.getLocation().getConstellation();\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tpublic String getCurrentRegion() {\r\n\t\tif (activeShip != null) {\r\n\t\t\treturn activeShip.getLocation().getRegion();\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tpublic boolean isGrandTotal() {\r\n\t\treturn total;\r\n\t}\r\n\r\n\tpublic boolean isEmpty() {\r\n\t\treturn empty;\r\n\t}\r\n\r\n\tpublic boolean isManufacturingFree() {\r\n\t\treturn manufacturingActive < manufacturingMax;\r\n\t}\r\n\r\n\tpublic boolean isResearchFree() {\r\n\t\treturn researchActive < researchMax;\r\n\t}\r\n\r\n\tpublic boolean isReactionsFree() {\r\n\t\treturn reactionsActive < reactionsMax;\r\n\t}\r\n\r\n\tpublic boolean isMarketOrdersFree() {\r\n\t\treturn marketOrdersActive < marketOrdersMax;\r\n\t}\r\n\r\n\tpublic boolean isContractCharacterFree() {\r\n\t\treturn contractCharacterActive < contractCharacterMax;\r\n\t}\r\n\r\n\tpublic boolean isContractCorporationFree() {\r\n\t\treturn contractCorporationActive < contractCorporationMax;\r\n\t}\r\n\r\n\tpublic boolean isManufacturingDone() {\r\n\t\treturn manufacturingDone > 0;\r\n\t}\r\n\r\n\tpublic boolean isResearchDone() {\r\n\t\treturn researchDone > 0;\r\n\t}\r\n\r\n\tpublic boolean isReactionsDone() {\r\n\t\treturn reactionsDone > 0;\r\n\t}\r\n\r\n\tpublic boolean isManufacturingFull() {\r\n\t\treturn !isManufacturingFree();\r\n\t}\r\n\r\n\tpublic boolean isResearchFull() {\r\n\t\treturn !isResearchFree();\r\n\t}\r\n\r\n\tpublic boolean isReactionsFull() {\r\n\t\treturn !isReactionsFree();\r\n\t}\r\n\r\n\tpublic boolean isMarketOrdersFull() {\r\n\t\treturn !isMarketOrdersFree();\r\n\t}\r\n\r\n\tpublic boolean isContractCharacterFull() {\r\n\t\treturn !isContractCharacterFree();\r\n\t}\r\n\r\n\tpublic boolean isContractCorporationFull() {\r\n\t\treturn !isContractCorporationFree();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic MyLocation getLocation() {\r\n\t\tif(activeShip != null) {\r\n\t\t\treturn activeShip.getLocation();\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\t//Comparable Impl\r\n\t@Override\r\n\tpublic int compareTo(Slots o) {\r\n\t\treturn this.getName().compareTo(o.getName());\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/slots/SlotsData.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.slots;\r\n\r\nimport ca.odell.glazedlists.EventList;\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileData;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileManager;\r\nimport net.nikr.eve.jeveasset.data.profile.TableData;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\r\nimport net.nikr.eve.jeveasset.i18n.TabsSlots;\r\n\r\n\r\npublic class SlotsData extends TableData {\r\n\r\n\tpublic SlotsData(Program program) {\r\n\t\tsuper(program);\r\n\t}\r\n\r\n\tpublic SlotsData(ProfileManager profileManager, ProfileData profileData) {\r\n\t\tsuper(profileManager, profileData);\r\n\t}\r\n\r\n\tpublic EventList<Slots> getData() {\r\n\t\tEventList<Slots> eventList = EventListManager.create();\r\n\t\tupdateData(eventList);\r\n\t\treturn eventList;\r\n\t}\r\n\r\n\tpublic void updateData(EventList<Slots> eventList) {\r\n\t\tMap<Long, Slots> slotsByOwnerID = new HashMap<>();\r\n\t\tSlots total = new Slots(TabsSlots.get().grandTotal());\r\n\t\tfor (OwnerType ownerType : profileManager.getOwnerTypes()) {\r\n\t\t\tif (ownerType.isCorporation()) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tSlots old = slotsByOwnerID.put(ownerType.getOwnerID(), new Slots(ownerType));\r\n\t\t\tif (old == null) {\r\n\t\t\t\ttotal.count(ownerType);\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (MyIndustryJob industryJob : profileData.getIndustryJobsList()) {\r\n\t\t\tSlots slots = slotsByOwnerID.get(industryJob.getInstallerID());\r\n\t\t\tif (slots == null) {\r\n\t\t\t\tslots = slotsByOwnerID.get(industryJob.getOwnerID());\r\n\t\t\t}\r\n\t\t\tif (slots == null) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tslots.count(industryJob);\r\n\t\t\ttotal.count(industryJob);\r\n\t\t}\r\n\t\tfor (MyContract contract : profileData.getContractList()) {\r\n\t\t\tSlots slots = slotsByOwnerID.get(contract.getIssuerID());\r\n\t\t\tif (slots == null) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tslots.count(contract);\r\n\t\t\ttotal.count(contract);\r\n\t\t}\r\n\t\tfor (MyMarketOrder marketOrder : profileData.getMarketOrdersList()) {\r\n\t\t\tSlots slots;\r\n\t\t\tif (marketOrder.getIssuedBy() != null) {\r\n\t\t\t\tslots = slotsByOwnerID.get((long) marketOrder.getIssuedBy());\r\n\t\t\t} else {\r\n\t\t\t\tslots = slotsByOwnerID.get(marketOrder.getOwnerID());\r\n\t\t\t}\r\n\t\t\tif (slots == null) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tslots.count(marketOrder);\r\n\t\t\ttotal.count(marketOrder);\r\n\t\t}\r\n\t\tslotsByOwnerID.put(0L, total);\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().writeLock().lock();\r\n\t\t\teventList.clear();\r\n\t\t\teventList.addAll(slotsByOwnerID.values());\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/slots/SlotsTab.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.slots;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.FilterList;\nimport ca.odell.glazedlists.ListSelection;\nimport ca.odell.glazedlists.SortedList;\nimport ca.odell.glazedlists.event.ListEvent;\nimport ca.odell.glazedlists.event.ListEventListener;\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport ca.odell.glazedlists.swing.SortableRenderer;\nimport ca.odell.glazedlists.swing.TableComparatorChooser;\nimport java.awt.Component;\nimport java.awt.Graphics2D;\nimport java.awt.Image;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.image.BufferedImage;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Comparator;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Objects;\nimport javax.swing.ButtonGroup;\nimport javax.swing.GroupLayout;\nimport javax.swing.Icon;\nimport javax.swing.ImageIcon;\nimport javax.swing.JComponent;\nimport javax.swing.JLabel;\nimport javax.swing.JMenu;\nimport javax.swing.JPopupMenu;\nimport javax.swing.JScrollPane;\nimport javax.swing.JTable;\nimport javax.swing.JToggleButton;\nimport javax.swing.SwingConstants;\nimport javax.swing.table.DefaultTableCellRenderer;\nimport javax.swing.table.TableCellRenderer;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel.JStatusLabel;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.JFixedToolBar;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabSecondary;\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuColumns;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo.AutoNumberFormat;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\nimport net.nikr.eve.jeveasset.gui.shared.table.PaddingTableCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\nimport net.nikr.eve.jeveasset.i18n.TabsSlots;\n\n\npublic class SlotsTab extends JMainTabSecondary {\n\n\t//GUI\n\tprivate final JAutoColumnTable jTable;\n\tprivate final JToggleButton jIcons;\n\tprivate final JToggleButton jText;\n\tprivate final JLabel jManufacturing;\n\tprivate final JStatusLabel jManufacturingDone;\n\tprivate final JStatusLabel jManufacturingFree;\n\tprivate final JStatusLabel jManufacturingActive;\n\tprivate final JStatusLabel jManufacturingMax;\n\tprivate final JLabel jResearch;\n\tprivate final JStatusLabel jResearchDone;\n\tprivate final JStatusLabel jResearchFree;\n\tprivate final JStatusLabel jResearchActive;\n\tprivate final JStatusLabel jResearchMax;\n\tprivate final JLabel jReactions;\n\tprivate final JStatusLabel jReactionsDone;\n\tprivate final JStatusLabel jReactionsFree;\n\tprivate final JStatusLabel jReactionsActive;\n\tprivate final JStatusLabel jReactionsMax;\n\tprivate final JLabel jMarketOrders;\n\tprivate final JStatusLabel jMarketOrdersFree;\n\tprivate final JStatusLabel jMarketOrdersActive;\n\tprivate final JStatusLabel jMarketOrdersMax;\n\tprivate final JLabel jContractCharacter;\n\tprivate final JStatusLabel jContractCharacterFree;\n\tprivate final JStatusLabel jContractCharacterActive;\n\tprivate final JStatusLabel jContractCharacterMax;\n\tprivate final JLabel jContractCorporation;\n\tprivate final JStatusLabel jContractCorporationFree;\n\tprivate final JStatusLabel jContractCorporationActive;\n\tprivate final JStatusLabel jContractCorporationMax;\n\n\t//Table\n\tprivate final SlotsFilterControl filterControl;\n\tprivate final DefaultEventTableModel<Slots> tableModel;\n\tprivate final EventList<Slots> eventList;\n\tprivate final FilterList<Slots> filterList;\n\tprivate final EnumTableFormatAdaptor<SlotsTableFormat, Slots> tableFormat;\n\tprivate final DefaultEventSelectionModel<Slots> selectionModel;\n\tprivate final IconHeaderRender iconHeaderRender;\n\n\tpublic static final String NAME = \"industryslots\"; //Not to be changed!\n\n\tprivate final SlotsData slotsData;\n\n\tpublic SlotsTab(final Program program) {\n\t\tsuper(program, NAME, TabsSlots.get().title(), Images.TOOL_SLOTS.getIcon(), true);\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tslotsData = new SlotsData(program);\n\t\t//Table Format\n\t\ttableFormat = TableFormatFactory.slotTableFormat();\n\t\t//Backend\n\t\teventList = EventListManager.create();\n\t\t//Sorting (per column)\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<Slots> columnSortedList = new SortedList<>(eventList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t//Sorting Total\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<Slots> totalSortedList = new SortedList<>(columnSortedList, new TotalComparator());\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t//Filter\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tfilterList = new FilterList<>(totalSortedList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\tfilterList.addListEventListener(listener);\n\t\t//Table Model\n\t\ttableModel = EventModels.createTableModel(filterList, tableFormat);\n\t\t//Table\n\t\tjTable = new JSlotsTable(program, tableModel);\n\t\tjTable.setCellSelectionEnabled(true);\n\t\tjTable.setRowSelectionAllowed(true);\n\t\tjTable.setColumnSelectionAllowed(true);\n\t\ticonHeaderRender = new IconHeaderRender(jTable);\n\t\tjTable.getTableHeader().setDefaultRenderer(iconHeaderRender);\n\t\tPaddingTableCellRenderer.install(jTable, 3);\n\t\t//Sorting\n\t\tTableComparatorChooser<Slots> comparatorChooser = TableComparatorChooser.install(jTable, columnSortedList, TableComparatorChooser.MULTIPLE_COLUMN_MOUSE, tableFormat);\n\t\t//Selection Model\n\t\tselectionModel = EventModels.createSelectionModel(filterList);\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\n\t\tjTable.setSelectionModel(selectionModel);\n\t\t//Listeners\n\t\tinstallTable(jTable);\n\t\t//Scroll\n\t\tJScrollPane jTableScroll = new JScrollPane(jTable);\n\t\t//Table Filter\n\t\tfilterControl = new SlotsFilterControl(totalSortedList);\n\t\t//Menu\n\t\tinstallTableTool(new SlotsTableMenu(), tableFormat, comparatorChooser, tableModel, jTable, filterControl, Slots.class);\n\n\t\tJFixedToolBar jToolBar = new JFixedToolBar();\n\n\t\tJLabel jTableHeaderLabel = new JLabel(TabsSlots.get().tableHeader());\n\t\tjToolBar.add(jTableHeaderLabel);\n\n\t\tjToolBar.addSpace(10);\n\n\t\tButtonGroup buttonGroup = new ButtonGroup();\n\n\t\tjText = new JToggleButton(Images.SETTINGS_COLOR_FOREGROUND.getIcon());\n\t\tjText.setToolTipText(TabsSlots.get().tableHeaderText());\n\t\tjText.setSelected(true);\n\t\tjText.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\ticonHeaderRender.setShowIcon(false);\n\t\t\t\tjTable.autoResizeColumns();\n\t\t\t}\n\t\t});\n\t\tjToolBar.addButtonIcon(jText);\n\t\tbuttonGroup.add(jText);\n\n\t\tjIcons = new JToggleButton(Images.MISC_MANUFACTURING.getIcon());\n\t\tjIcons.setToolTipText(TabsSlots.get().tableHeaderIcon());\n\t\tjIcons.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\ticonHeaderRender.setShowIcon(true);\n\t\t\t\tjTable.autoResizeColumns();\n\t\t\t}\n\t\t});\n\t\tjToolBar.addButtonIcon(jIcons);\n\t\tbuttonGroup.add(jIcons);\n\n\t\tjManufacturing = StatusPanel.createIcon(Images.MISC_MANUFACTURING.getIcon(), TabsSlots.get().manufacturing());\n\t\tthis.addStatusbarLabel(jManufacturing);\n\t\tjManufacturingDone = StatusPanel.createLabel(TabsSlots.get().columnManufacturingDone(), Images.EDIT_SET.getIcon(), AutoNumberFormat.LONG);\n\t\tthis.addStatusbarLabel(jManufacturingDone);\n\t\tjManufacturingFree = StatusPanel.createLabel(TabsSlots.get().columnManufacturingFree(), Images.EDIT_ADD.getIcon(), AutoNumberFormat.LONG);\n\t\tthis.addStatusbarLabel(jManufacturingFree);\n\t\tjManufacturingActive = StatusPanel.createLabel(TabsSlots.get().columnManufacturingActive(), Images.UPDATE_WORKING.getIcon(), AutoNumberFormat.LONG);\n\t\tthis.addStatusbarLabel(jManufacturingActive);\n\t\tjManufacturingMax = StatusPanel.createLabel(TabsSlots.get().columnManufacturingMax(), Images.UPDATE_DONE_OK.getIcon(), AutoNumberFormat.LONG);\n\t\tthis.addStatusbarLabel(jManufacturingMax);\n\n\t\tjResearch = StatusPanel.createIcon(Images.MISC_INVENTION.getIcon(), TabsSlots.get().research());\n\t\tthis.addStatusbarLabel(jResearch);\n\t\tjResearchDone = StatusPanel.createLabel(TabsSlots.get().columnResearchDone(), Images.EDIT_SET.getIcon(), AutoNumberFormat.LONG);\n\t\tthis.addStatusbarLabel(jResearchDone);\n\t\tjResearchFree = StatusPanel.createLabel(TabsSlots.get().columnResearchFree(), Images.EDIT_ADD.getIcon(), AutoNumberFormat.LONG);\n\t\tthis.addStatusbarLabel(jResearchFree);\n\t\tjResearchActive = StatusPanel.createLabel(TabsSlots.get().columnResearchActive(), Images.UPDATE_WORKING.getIcon(), AutoNumberFormat.LONG);\n\t\tthis.addStatusbarLabel(jResearchActive);\n\t\tjResearchMax = StatusPanel.createLabel(TabsSlots.get().columnResearchMax(), Images.UPDATE_DONE_OK.getIcon(), AutoNumberFormat.LONG);\n\t\tthis.addStatusbarLabel(jResearchMax);\n\n\t\tjReactions = StatusPanel.createIcon(Images.MISC_REACTION.getIcon(), TabsSlots.get().reactions());\n\t\tthis.addStatusbarLabel(jReactions);\n\t\tjReactionsDone = StatusPanel.createLabel(TabsSlots.get().columnReactionsDone(), Images.EDIT_SET.getIcon(), AutoNumberFormat.LONG);\n\t\tthis.addStatusbarLabel(jReactionsDone);\n\t\tjReactionsFree = StatusPanel.createLabel(TabsSlots.get().columnReactionsFree(), Images.EDIT_ADD.getIcon(), AutoNumberFormat.LONG);\n\t\tthis.addStatusbarLabel(jReactionsFree);\n\t\tjReactionsActive = StatusPanel.createLabel(TabsSlots.get().columnReactionsActive(), Images.UPDATE_WORKING.getIcon(), AutoNumberFormat.LONG);\n\t\tthis.addStatusbarLabel(jReactionsActive);\n\t\tjReactionsMax = StatusPanel.createLabel(TabsSlots.get().columnReactionsMax(), Images.UPDATE_DONE_OK.getIcon(), AutoNumberFormat.LONG);\n\t\tthis.addStatusbarLabel(jReactionsMax);\n\n\t\tjMarketOrders = StatusPanel.createIcon(Images.MISC_MARKET_ORDERS.getIcon(), TabsSlots.get().marketOrders());\n\t\tthis.addStatusbarLabel(jMarketOrders);\n\t\tjMarketOrdersFree = StatusPanel.createLabel(TabsSlots.get().columnMarketOrdersFree(), Images.EDIT_ADD.getIcon(), AutoNumberFormat.LONG);\n\t\tthis.addStatusbarLabel(jMarketOrdersFree);\n\t\tjMarketOrdersActive = StatusPanel.createLabel(TabsSlots.get().columnMarketOrdersActive(), Images.UPDATE_WORKING.getIcon(), AutoNumberFormat.LONG);\n\t\tthis.addStatusbarLabel(jMarketOrdersActive);\n\t\tjMarketOrdersMax = StatusPanel.createLabel(TabsSlots.get().columnMarketOrdersMax(), Images.UPDATE_DONE_OK.getIcon(), AutoNumberFormat.LONG);\n\t\tthis.addStatusbarLabel(jMarketOrdersMax);\n\n\t\tjContractCharacter = StatusPanel.createIcon(Images.MISC_CONTRACTS.getIcon(), TabsSlots.get().contractCharacter());\n\t\tthis.addStatusbarLabel(jContractCharacter);\n\t\tjContractCharacterFree = StatusPanel.createLabel(TabsSlots.get().columnMarketOrdersFree(), Images.EDIT_ADD.getIcon(), AutoNumberFormat.LONG);\n\t\tthis.addStatusbarLabel(jContractCharacterFree);\n\t\tjContractCharacterActive = StatusPanel.createLabel(TabsSlots.get().columnMarketOrdersActive(), Images.UPDATE_WORKING.getIcon(), AutoNumberFormat.LONG);\n\t\tthis.addStatusbarLabel(jContractCharacterActive);\n\t\tjContractCharacterMax = StatusPanel.createLabel(TabsSlots.get().columnMarketOrdersMax(), Images.UPDATE_DONE_OK.getIcon(), AutoNumberFormat.LONG);\n\t\tthis.addStatusbarLabel(jContractCharacterMax);\n\n\t\tjContractCorporation = StatusPanel.createIcon(Images.MISC_CONTRACTS_CORP.getIcon(), TabsSlots.get().contractCorporation());\n\t\tthis.addStatusbarLabel(jContractCorporation);\n\t\tjContractCorporationFree = StatusPanel.createLabel(TabsSlots.get().columnMarketOrdersFree(), Images.EDIT_ADD.getIcon(), AutoNumberFormat.LONG);\n\t\tthis.addStatusbarLabel(jContractCorporationFree);\n\t\tjContractCorporationActive = StatusPanel.createLabel(TabsSlots.get().columnMarketOrdersActive(), Images.UPDATE_WORKING.getIcon(), AutoNumberFormat.LONG);\n\t\tthis.addStatusbarLabel(jContractCorporationActive);\n\t\tjContractCorporationMax = StatusPanel.createLabel(TabsSlots.get().columnMarketOrdersMax(), Images.UPDATE_DONE_OK.getIcon(), AutoNumberFormat.LONG);\n\t\tthis.addStatusbarLabel(jContractCorporationMax);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addComponent(jToolBar, jToolBar.getMinimumSize().width, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jToolBar, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t}\n\n\t@Override\n\tpublic void updateData() {\n\t\t//Update Data\n\t\tslotsData.updateData(eventList);\n\t}\n\n\t@Override\n\tpublic void clearData() {\n\t\ttry {\n\t\t\teventList.getReadWriteLock().writeLock().lock();\n\t\t\teventList.clear();\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t\tfilterControl.clearCache();\n\t}\n\n\t@Override\n\tpublic void updateCache() {\n\t\tfilterControl.createCache();\n\t}\n\n\t@Override\n\tpublic Collection<LocationType> getLocations() {\n\t\ttry {\n\t\t\teventList.getReadWriteLock().readLock().lock();\n\t\t\treturn new ArrayList<>(eventList);\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t}\n\n\tpublic EventList<Slots> getEventList() {\n\t\treturn eventList;\n\t}\n\n\tprivate class SlotsTableMenu implements TableMenu<Slots> {\n\t\t@Override\n\t\tpublic MenuData<Slots> getMenuData() {\n\t\t\treturn new MenuData<>(selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getFilterMenu() {\n\t\t\treturn filterControl.getMenu(jTable, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getColumnMenu() {\n\t\t\treturn new JMenuColumns<>(program, tableFormat, tableModel, jTable, NAME);\n\t\t}\n\n\t\t@Override\n\t\tpublic void addInfoMenu(JPopupMenu jPopupMenu) {\n\t\t\tJMenuInfo.slots(jPopupMenu, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic void addToolMenu(JComponent jComponent) { }\n\t}\n\n\tprivate class ListenerClass implements ListEventListener<Slots> {\n\t\t@Override\n\t\tpublic void listChanged(final ListEvent<Slots> listChanges) {\n\t\t\tSlots total = new Slots(\"\");\n\t\t\ttry {\n\t\t\t\tfilterList.getReadWriteLock().readLock().lock();\n\t\t\t\tfor (Slots slots : filterList) {\n\t\t\t\t\tif (slots.isGrandTotal()) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\ttotal.count(slots);\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tfilterList.getReadWriteLock().readLock().unlock();\n\t\t\t}\n\t\t\tjManufacturingDone.setNumber(total.getManufacturingDone());\n\t\t\tjManufacturingFree.setNumber(total.getManufacturingFree());\n\t\t\tjManufacturingActive.setNumber(total.getManufacturingActive());\n\t\t\tjManufacturingMax.setNumber(total.getManufacturingMax());\n\t\t\tjReactionsDone.setNumber(total.getReactionsDone());\n\t\t\tjReactionsFree.setNumber(total.getReactionsFree());\n\t\t\tjReactionsActive.setNumber(total.getReactionsActive());\n\t\t\tjReactionsMax.setNumber(total.getReactionsMax());\n\t\t\tjResearchDone.setNumber(total.getResearchDone());\n\t\t\tjResearchFree.setNumber(total.getResearchFree());\n\t\t\tjResearchActive.setNumber(total.getResearchActive());\n\t\t\tjResearchMax.setNumber(total.getResearchMax());\n\t\t\tjMarketOrdersFree.setNumber(total.getMarketOrdersFree());\n\t\t\tjMarketOrdersActive.setNumber(total.getMarketOrdersActive());\n\t\t\tjMarketOrdersMax.setNumber(total.getMarketOrdersMax());\n\t\t\tjContractCharacterFree.setNumber(total.getContractCharacterFree());\n\t\t\tjContractCharacterActive.setNumber(total.getContractCharacterActive());\n\t\t\tjContractCharacterMax.setNumber(total.getContractCharacterMax());\n\t\t\tjContractCorporationFree.setNumber(total.getContractCorporationFree());\n\t\t\tjContractCorporationActive.setNumber(total.getContractCorporationActive());\n\t\t\tjContractCorporationMax.setNumber(total.getContractCorporationMax());\n\t\t}\n\t}\n\n\tprivate class SlotsFilterControl extends FilterControl<Slots> {\n\n\t\tpublic SlotsFilterControl(EventList<Slots> exportEventList) {\n\t\t\tsuper(program.getMainWindow().getFrame(),\n\t\t\t\t\tNAME,\n\t\t\t\t\ttableFormat,\n\t\t\t\t\teventList,\n\t\t\t\t\texportEventList,\n\t\t\t\t\tfilterList\n\t\t\t\t\t);\n\t\t}\n\n\t\t@Override\n\t\tpublic void saveSettings(final String msg) {\n\t\t\tprogram.saveSettings(\"ISK Table: \" + msg); //Save ISK Filters and Export Settings\n\t\t}\n\t}\n\n\tpublic static class TotalComparator implements Comparator<Slots> {\n\t\t@Override\n\t\tpublic int compare(final Slots o1, final Slots o2) {\n\t\t\tif (o1.isGrandTotal() && o2.isGrandTotal()) {\n\t\t\t\treturn 0; //Equal (both StockpileTotal)\n\t\t\t} else if (o1.isGrandTotal()) {\n\t\t\t\treturn 1; //After\n\t\t\t} else if (o2.isGrandTotal()) {\n\t\t\t\treturn -1; //Before\n\t\t\t} else {\n\t\t\t\treturn 0; //Equal (not StockpileTotal)\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class IconHeaderRender implements TableCellRenderer, SortableRenderer {\n\n\t\tprivate static final Map<Icons, Icon> icons = new HashMap<>();\n\t\tprivate static final String MANUFACTURING = \"Manufacturing\";\n\t\tprivate static final String RESEARCH = \"Research\";\n\t\tprivate static final String REACTIONS = \"Reactions\";\n\t\tprivate static final String MARKET_ORDERS = \"Market Orders\";\n\t\tprivate static final String CONTRACTS_CHARACTER  = \"Character Contracts\";\n\t\tprivate static final String CONTRACTS_CORPORATION = \"Corporation Contracts\";\n\t\tprivate boolean showIcon = false;\n\t\tprivate TableCellRenderer delegateRenderer;\n\t\tprivate Icon sortIcon;\n\n\t\tpublic IconHeaderRender(JTable jTable) {\n\t\t\tthis.delegateRenderer = jTable.getTableHeader().getDefaultRenderer();\n\t\t}\n\n\t\tpublic TableCellRenderer getDelegateRenderer() {\n\t\t\treturn delegateRenderer;\n\t\t}\n\n\t\tpublic void setShowIcon(boolean showIcon) {\n\t\t\tthis.showIcon = showIcon;\n\t\t}\n\n\t\t@Override\n\t\tpublic Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {\n\t\t\tComponent rendered = getDelegateTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);\n\t\t\tif (rendered instanceof JLabel) {\n\t\t\t\tfinal JLabel jLabel = (JLabel) rendered;\n\t\t\t\tjLabel.setHorizontalTextPosition(SwingConstants.LEADING);\n\t\t\t\tif (showIcon) {\n\t\t\t\t\tString text = jLabel.getText();\n\t\t\t\t\tIcon icon = null;\n\t\t\t\t\tif (text.startsWith(MANUFACTURING)) {\n\t\t\t\t\t\ticon = Images.SLOTS_MANUFACTURING.getIcon();\n\t\t\t\t\t\tjLabel.setText(text.replace(MANUFACTURING, \"\").trim());\n\t\t\t\t\t} else if (text.startsWith(RESEARCH)) {\n\t\t\t\t\t\ticon = Images.SLOTS_RESEARCH.getIcon();\n\t\t\t\t\t\tjLabel.setText(text.replace(RESEARCH, \"\").trim());\n\t\t\t\t\t} else if (text.startsWith(REACTIONS)) {\n\t\t\t\t\t\ticon = Images.SLOTS_REACTIONS.getIcon();\n\t\t\t\t\t\tjLabel.setText(text.replace(REACTIONS, \"\").trim());\n\t\t\t\t\t} else if (text.startsWith(MARKET_ORDERS)) {\n\t\t\t\t\t\ticon = Images.SLOTS_MARKET_ORDERS.getIcon();\n\t\t\t\t\t\tjLabel.setText(text.replace(MARKET_ORDERS, \"\").trim());\n\t\t\t\t\t} else if (text.contains(CONTRACTS_CHARACTER)) {\n\t\t\t\t\t\ticon = Images.SLOTS_CONTRACTS.getIcon();\n\t\t\t\t\t\tjLabel.setText(text.replace(CONTRACTS_CHARACTER + \" \", \"\").trim());\n\t\t\t\t\t} else if (text.contains(CONTRACTS_CORPORATION)) {\n\t\t\t\t\t\ticon = Images.SLOTS_CONTRACTS_CORP.getIcon();\n\t\t\t\t\t\tjLabel.setText(text.replace(CONTRACTS_CORPORATION + \" \", \"\").trim());\n\t\t\t\t\t}\n\t\t\t\t\tif (sortIcon != null && icon != null) {\n\t\t\t\t\t\tjLabel.setIcon(getIcon(icon, sortIcon));\n\t\t\t\t\t} else if (sortIcon != null) {\n\t\t\t\t\t\tjLabel.setIcon(sortIcon);\n\t\t\t\t\t} else if (icon != null) {\n\t\t\t\t\t\tjLabel.setIcon(icon);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjLabel.setIcon(null);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tjLabel.setIcon(sortIcon);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn rendered;\n\t\t}\n\n\t\t@Override\n\t\tpublic void setSortIcon(Icon sortIcon) {\n\t\t\tthis.sortIcon = sortIcon;\n\t\t}\n\n\t\tprivate Component getDelegateTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {\n\t\t\ttry {\n\t\t\t\treturn delegateRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);\n\t\t\t} catch (RuntimeException e) {\n\t\t\t\tdelegateRenderer = new DefaultTableCellRenderer();\n\t\t\t\treturn delegateRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);\n\t\t\t}\n\t\t}\n\n\t\tprivate Icon getIcon(Icon icon1, Icon icon2) {\n\t\t\tIcons key = new Icons(icon1, icon2);\n\t\t\tIcon value = icons.get(key);\n\t\t\tif (value != null) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tvalue = createIcon(icon1, icon2);\n\t\t\ticons.put(key, value);\n\t\t\treturn value;\n\t\t}\n\n\t\tprivate Icon createIcon(Icon icon1, Icon icon2) {\n\t\t\tint w = icon1.getIconWidth() + icon2.getIconWidth() + 3;\n\t\t\tint h = Math.max(icon1.getIconHeight(), icon2.getIconHeight());\n\t\t\tint y1 = 0;\n\t\t\tint y2 = 0;\n\t\t\tif (icon1.getIconHeight() > icon2.getIconHeight()) {\n\t\t\t\ty2 = (int) Math.ceil((h - icon2.getIconHeight()) / 2.0);\n\t\t\t} else if (icon2.getIconHeight() > icon1.getIconHeight()) {\n\t\t\t\ty1 = (int) Math.ceil((h - icon1.getIconHeight()) / 2.0);\n\t\t\t}\n\t\t\tImage image = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);\n\t\t\tGraphics2D g2 = (Graphics2D) image.getGraphics();\n\t\t\ticon1.paintIcon(null, g2, 0, y1);\n\t\t\ticon2.paintIcon(null, g2, icon1.getIconWidth() + 3, y2);\n\t\t\tg2.dispose();\n\t\t\treturn new ImageIcon(image);\n\t\t}\n\n\t\tprivate static class Icons {\n\t\t\tprivate final Icon icon1;\n\t\t\tprivate final Icon icon2;\n\n\t\t\tpublic Icons(Icon icon1, Icon icon2) {\n\t\t\t\tthis.icon1 = icon1;\n\t\t\t\tthis.icon2 = icon2;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic int hashCode() {\n\t\t\t\tint hash = 7;\n\t\t\t\thash = 83 * hash + Objects.hashCode(this.icon1);\n\t\t\t\thash = 83 * hash + Objects.hashCode(this.icon2);\n\t\t\t\treturn hash;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic boolean equals(Object obj) {\n\t\t\t\tif (this == obj) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (obj == null) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (getClass() != obj.getClass()) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tfinal Icons other = (Icons) obj;\n\t\t\t\tif (!Objects.equals(this.icon1, other.icon1)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (!Objects.equals(this.icon2, other.icon2)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/slots/SlotsTableFormat.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.slots;\r\n\r\nimport java.util.Comparator;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.i18n.TabsSlots;\r\n\r\n\r\npublic enum SlotsTableFormat implements EnumTableColumn<Slots> {\r\n\tNAME(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnOwner();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getName();\r\n\t\t}\r\n\t},\r\n\tMANUFACTURING_DONE(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnManufacturingDone();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsSlots.get().columnManufacturingDone();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getManufacturingDone();\r\n\t\t}\r\n\t},\r\n\tMANUFACTURING_FREE(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnManufacturingFree();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsSlots.get().columnManufacturingFree();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getManufacturingFree();\r\n\t\t}\r\n\t},\r\n\tMANUFACTURING_ACTIVE(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnManufacturingActive();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsSlots.get().columnManufacturingActive();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getManufacturingActive();\r\n\t\t}\r\n\t},\r\n\tMANUFACTURING_MAX(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnManufacturingMax();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsSlots.get().columnManufacturingMax();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getManufacturingMax();\r\n\t\t}\r\n\t},\r\n\tRESEARCH_DONE(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnResearchDone();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsSlots.get().columnResearchDone();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getResearchDone();\r\n\t\t}\r\n\t},\r\n\tRESEARCH_FREE(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnResearchFree();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsSlots.get().columnResearchFree();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getResearchFree();\r\n\t\t}\r\n\t},\r\n\tRESEARCH_ACTIVE(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnResearchActive();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsSlots.get().columnResearchActive();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getResearchActive();\r\n\t\t}\r\n\t},\r\n\tRESEARCH_MAX(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnResearchMax();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsSlots.get().columnResearchMax();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getResearchMax();\r\n\t\t}\r\n\t},\r\n\tREACTIONS_DONE(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnReactionsDone();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsSlots.get().columnReactionsDone();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getReactionsDone();\r\n\t\t}\r\n\t},\r\n\tREACTIONS_FREE(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnReactionsFree();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsSlots.get().columnReactionsFree();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getReactionsFree();\r\n\t\t}\r\n\t},\r\n\tREACTIONS_ACTIVE(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnReactionsActive();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsSlots.get().columnReactionsActive();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getReactionsActive();\r\n\t\t}\r\n\t},\r\n\tREACTIONS_MAX(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnReactionsMax();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsSlots.get().columnReactionsMax();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getReactionsMax();\r\n\t\t}\r\n\t},\r\n\tMARKET_ORDERS_FREE(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnMarketOrdersFree();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsSlots.get().columnMarketOrdersFree();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getMarketOrdersFree();\r\n\t\t}\r\n\t},\r\n\tMARKET_ORDERS_ACTIVE(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnMarketOrdersActive();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsSlots.get().columnMarketOrdersActive();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getMarketOrdersActive();\r\n\t\t}\r\n\t},\r\n\tMARKET_ORDERS_MAX(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnMarketOrdersMax();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsSlots.get().columnMarketOrdersMax();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getMarketOrdersMax();\r\n\t\t}\r\n\t},\r\n\tCONTRACT_CHARACTER_FREE(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnContractCharacterFree();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsSlots.get().columnContractCharacterFree();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getContractCharacterFree();\r\n\t\t}\r\n\t},\r\n\tCONTRACT_CHARACTER_ACTIVE(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnContractCharacterActive();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsSlots.get().columnContractCharacterActive();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getContractCharacterActive();\r\n\t\t}\r\n\t},\r\n\tCONTRACT_CHARACTER_MAX(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnContractCharacterMax();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsSlots.get().columnContractCharacterMax();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getContractCharacterMax();\r\n\t\t}\r\n\t},\r\n\tCONTRACT_CORPORATION_FREE(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnContractCorporationFree();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsSlots.get().columnContractCorporationFree();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getContractCorporationFree();\r\n\t\t}\r\n\t},\r\n\tCONTRACT_CORPORATION_ACTIVE(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnContractCorporationActive();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsSlots.get().columnContractCorporationActive();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getContractCorporationActive();\r\n\t\t}\r\n\t},\r\n\tCONTRACT_CORPORATION_MAX(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnContractCorporationMax();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsSlots.get().columnContractCorporationMax();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getContractCorporationMax();\r\n\t\t}\r\n\t},\r\n\tCURRENT_SHIP(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnCurrentShip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getActiveShip();\r\n\t\t}\r\n\t},\r\n\tCURRENT_STATION(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnCurrentStation();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getCurrentStation();\r\n\t\t}\r\n\t},\r\n\tCURRENT_SYSTEM(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnCurrentSystem();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getCurrentSystem();\r\n\t\t}\r\n\t},\r\n\tCURRENT_CONSTELLATION(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnCurrentConstellation();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getCurrentConstellation();\r\n\t\t}\r\n\t},\r\n\tCURRENT_REGION(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsSlots.get().columnCurrentRegion();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Slots from) {\r\n\t\t\treturn from.getCurrentRegion();\r\n\t\t}\r\n\t};\r\n\r\n\tprivate final Class<?> type;\r\n\tprivate final Comparator<?> comparator;\r\n\r\n\tprivate SlotsTableFormat(final Class<?> type) {\r\n\t\tthis.type = type;\r\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\r\n\t}\r\n\t@Override\r\n\tpublic Class<?> getType() {\r\n\t\treturn type;\r\n\t}\r\n\t@Override\r\n\tpublic Comparator<?> getComparator() {\r\n\t\treturn comparator;\r\n\t}\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn getColumnName();\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/standing/NpcStandingTab.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.standing;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.FilterList;\nimport ca.odell.glazedlists.ListSelection;\nimport ca.odell.glazedlists.SortedList;\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport ca.odell.glazedlists.swing.TableComparatorChooser;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.List;\nimport javax.swing.JComponent;\nimport javax.swing.JMenu;\nimport javax.swing.JPopupMenu;\nimport javax.swing.JScrollPane;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.my.MyNpcStanding;\nimport net.nikr.eve.jeveasset.data.settings.tag.TagUpdate;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabPrimary;\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter;\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuColumns;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\nimport net.nikr.eve.jeveasset.gui.shared.table.PaddingTableCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\nimport net.nikr.eve.jeveasset.i18n.TabsNpcStanding;\n\n\npublic class NpcStandingTab extends JMainTabPrimary implements TagUpdate {\n\n\t//GUI\n\tprivate final JAutoColumnTable jTable;\n\n\t//Table\n\tprivate final NpcStandingFilterControl filterControl;\n\tprivate final EnumTableFormatAdaptor<NpcStandingTableFormat, MyNpcStanding> tableFormat;\n\tprivate final DefaultEventTableModel<MyNpcStanding> tableModel;\n\tprivate final EventList<MyNpcStanding> eventList;\n\tprivate final FilterList<MyNpcStanding> filterList;\n\tprivate final DefaultEventSelectionModel<MyNpcStanding> selectionModel;\n\n\tpublic static final String NAME = \"npcstanding\"; //Not to be changed!\n\n\tpublic NpcStandingTab(final Program program) {\n\t\tsuper(program, NAME, TabsNpcStanding.get().npcStanding(), Images.TOOL_NPC_STANDING.getIcon(), true);\n\t\tlayout.setAutoCreateGaps(true);\n\n\t\t//Table Format\n\t\ttableFormat = TableFormatFactory.npcStandingTableFormat();\n\t\t//Backend\n\t\teventList = program.getProfileData().getNpcStandingsEventList();\n\t\t//Sorting (per column)\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<MyNpcStanding> sortedList = new SortedList<>(eventList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\n\t\t//Filter\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tfilterList = new FilterList<>(sortedList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\n\t\t//Table Model\n\t\ttableModel = EventModels.createTableModel(filterList, tableFormat);\n\t\t//Table\n\t\tjTable = new JAutoColumnTable(program, tableModel);\n\t\tjTable.setCellSelectionEnabled(true);\n\t\tjTable.setRowSelectionAllowed(true);\n\t\tjTable.setColumnSelectionAllowed(true);\n\t\tjTable.setRowHeight(MyNpcStanding.IMAGE_SIZE.getSize());\n\t\tPaddingTableCellRenderer.install(jTable, 0, 5, 0, 5);\n\t\t//Sorting\n\t\tTableComparatorChooser<MyNpcStanding> comparatorChooser = TableComparatorChooser.install(jTable, sortedList, TableComparatorChooser.MULTIPLE_COLUMN_MOUSE, tableFormat);\n\t\t//Selection Model\n\t\tselectionModel = EventModels.createSelectionModel(filterList);\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\n\t\tjTable.setSelectionModel(selectionModel);\n\n\t\t//Listeners\n\t\tinstallTable(jTable);\n\t\t//Scroll\n\t\tJScrollPane jTableScroll = new JScrollPane(jTable);\n\t\t//Table Filter\n\t\tfilterControl = new NpcStandingFilterControl(sortedList);\n\t\t//Menu\n\t\tinstallTableTool(new NpcStandingTableMenu(), tableFormat, comparatorChooser, tableModel, jTable, filterControl, MyNpcStanding.class);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t}\n\n\t@Override\n\tpublic void updateTags() {\n\t\tbeforeUpdateData();\n\t\ttableModel.fireTableDataChanged();\n\t\tfilterControl.refilter();\n\t\tafterUpdateData();\n\t}\n\n\t@Override\n\tpublic void clearData() { }\n\n\t@Override\n\tpublic void updateCache() {\n\t\tfilterControl.createCache();\n\t}\n\n\t@Override\n\tpublic Collection<LocationType> getLocations() {\n\t\treturn new ArrayList<>(); //LocationsType\n\t}\n\n\tpublic boolean isFiltersEmpty() {\n\t\treturn filterControl.isFiltersEmpty();\n\t}\n\n\tpublic void addFilters(final List<Filter> filters) {\n\t\tfilterControl.addFilters(filters);\n\t}\n\n\tpublic void clearFilters() {\n\t\tfilterControl.clearCurrentFilters();\n\t}\n\n\tpublic String getCurrentFilterName() {\n\t\treturn filterControl.getCurrentFilterName();\n\t}\n\n\tprivate class NpcStandingTableMenu implements TableMenu<MyNpcStanding> {\n\t\t@Override\n\t\tpublic MenuData<MyNpcStanding> getMenuData() {\n\t\t\treturn new MenuData<>(selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getFilterMenu() {\n\t\t\treturn filterControl.getMenu(jTable, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getColumnMenu() {\n\t\t\treturn new JMenuColumns<>(program, tableFormat, tableModel, jTable, NAME);\n\t\t}\n\n\t\t@Override\n\t\tpublic void addInfoMenu(JPopupMenu jPopupMenu) { }\n\n\t\t@Override\n\t\tpublic void addToolMenu(JComponent jComponent) { }\n\t}\n\n\tprivate class NpcStandingFilterControl extends FilterControl<MyNpcStanding> {\n\n\t\tpublic NpcStandingFilterControl(EventList<MyNpcStanding> exportEventList) {\n\t\t\tsuper(program.getMainWindow().getFrame(),\n\t\t\t\t\tNAME,\n\t\t\t\t\ttableFormat,\n\t\t\t\t\teventList,\n\t\t\t\t\texportEventList,\n\t\t\t\t\tfilterList\n\t\t\t\t\t);\n\t\t}\n\n\t\t@Override\n\t\tpublic void saveSettings(final String msg) {\n\t\t\tprogram.saveSettings(\"Npc Standing Table: \" + msg); //Save Npc Standing Filters and Export Settings\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/standing/NpcStandingTableFormat.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.standing;\n\nimport java.util.Comparator;\nimport net.nikr.eve.jeveasset.data.api.my.MyNpcStanding;\nimport net.nikr.eve.jeveasset.data.api.raw.RawNpcStanding.FromType;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Security;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Standing;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.TextIcon;\nimport net.nikr.eve.jeveasset.i18n.TabsNpcStanding;\n\n\npublic enum NpcStandingTableFormat implements EnumTableColumn<MyNpcStanding> {\n\tOWNER(TextIcon.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsNpcStanding.get().columnOwner();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyNpcStanding from) {\n\t\t\treturn from.getOwnerTextIcon();\n\t\t}\n\t},\n\tFACTION(TextIcon.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsNpcStanding.get().columnFaction();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyNpcStanding from) {\n\t\t\treturn from.getFactionTextIcon();\n\t\t}\n\t},\n\tCORPORATION(TextIcon.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsNpcStanding.get().columnCorporation();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyNpcStanding from) {\n\t\t\treturn from.getCorporationTextIcon();\n\t\t}\n\t},\n\tAGENT(TextIcon.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsNpcStanding.get().columnAgent();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyNpcStanding from) {\n\t\t\treturn from.getAgentTextIcon();\n\t\t}\n\t},\n\tLEVEL(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsNpcStanding.get().columnAgentLevel();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyNpcStanding from) {\n\t\t\treturn from.getAgent().getLevel();\n\t\t}\n\t},\n\tDIVISION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsNpcStanding.get().columnAgentDivision();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyNpcStanding from) {\n\t\t\treturn from.getAgent().getDivision();\n\t\t}\n\t},\n\tAGENT_TYPE(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsNpcStanding.get().columnAgentType();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyNpcStanding from) {\n\t\t\treturn from.getAgent().getAgentType();\n\t\t}\n\t},\n\tTYPE(FromType.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsNpcStanding.get().columnType();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyNpcStanding from) {\n\t\t\treturn from.getFromType();\n\t\t}\n\t},\n\tRAW_STANDING(Standing.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsNpcStanding.get().columnRawStanding();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsNpcStanding.get().columnRawStandingToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyNpcStanding from) {\n\t\t\treturn Standing.create(from.getStanding());\n\t\t}\n\t},\n\tSTANDING(Standing.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsNpcStanding.get().columnStanding();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsNpcStanding.get().columnStandingToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyNpcStanding from) {\n\t\t\treturn Standing.create(from.getStandingEffective());\n\t\t}\n\t},\n\tMAX_STANDING(Standing.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsNpcStanding.get().columnStandingMax();\n\t\t}\n\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsNpcStanding.get().columnStandingMaxToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyNpcStanding from) {\n\t\t\treturn Standing.create(from.getStandingMaximum());\n\t\t}\n\t},\n\tLOCATION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsNpcStanding.get().columnLocation();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyNpcStanding from) {\n\t\t\treturn from.getLocation();\n\t\t}\n\t},\n\tSECURITY(Security.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsNpcStanding.get().columnSecurity();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyNpcStanding from) {\n\t\t\treturn from.getSecurityObject();\n\t\t}\n\t},\n\tSYSTEM(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsNpcStanding.get().columnSystem();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyNpcStanding from) {\n\t\t\treturn from.getSystem();\n\t\t}\n\t},\n\tCONSTELLATION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsNpcStanding.get().columnConstellation();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyNpcStanding from) {\n\t\t\treturn from.getConstellation();\n\t\t}\n\t},\n\tREGION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsNpcStanding.get().columnRegion();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyNpcStanding from) {\n\t\t\treturn from.getRegion();\n\t\t}\n\t},\n\tID(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsNpcStanding.get().columnID();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final MyNpcStanding from) {\n\t\t\treturn from.getFromID();\n\t\t}\n\t};\n\n\tprivate final Class<?> type;\n\tprivate final Comparator<?> comparator;\n\n\tprivate NpcStandingTableFormat(final Class<?> type) {\n\t\tthis.type = type;\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\n\t}\n\n\t@Override\n\tpublic Class<?> getType() {\n\t\treturn type;\n\t}\n\t@Override\n\tpublic Comparator<?> getComparator() {\n\t\treturn comparator;\n\t}\n\t@Override\n\tpublic String toString() {\n\t\treturn getColumnName();\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/stockpile/JStockpileItemMenu.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.stockpile;\r\n\r\nimport ca.odell.glazedlists.SeparatorList;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.util.ArrayList;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport javax.swing.Icon;\r\nimport javax.swing.JMenu;\r\nimport javax.swing.JMenuItem;\r\nimport javax.swing.JOptionPane;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.sde.IndustryMaterial;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.MenuScroller;\r\nimport static net.nikr.eve.jeveasset.gui.shared.menu.JMenuStockpile.getBlueprintSelect;\r\nimport static net.nikr.eve.jeveasset.gui.shared.menu.JMenuStockpile.getFormulaSelect;\r\nimport static net.nikr.eve.jeveasset.gui.shared.menu.JMenuStockpile.match;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileItem;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileTotal;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.StockpileBpDialog.BpData;\r\nimport net.nikr.eve.jeveasset.i18n.TabsStockpile;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\n\r\n\r\npublic class JStockpileItemMenu extends JMenu {\r\n\r\n\tprivate enum StockpileItemMenuAction {\r\n\t\tEDIT_ITEM,\r\n\t\tADD_TO,\r\n\t\tDELETE_ITEM,\r\n\t\tORIGINAL,\r\n\t\tCOPY,\r\n\t\tRUNS\r\n\t}\r\n\r\n\tprivate final StockpileTab stockpileTab;\r\n\tprivate Program program;\r\n\r\n\tpublic JStockpileItemMenu(final StockpileTab stockpileTab, final Program program, final List<StockpileItem> edit, final List<StockpileItem> delete, final List<StockpileItem> items) {\r\n\t\tsuper(TabsStockpile.get().stockpile());\r\n\t\tthis.program = program;\r\n\t\tthis.stockpileTab = stockpileTab;\r\n\t\tthis.setIcon(Images.TOOL_STOCKPILE.getIcon());\r\n\r\n\t\tListenerClass listener = new ListenerClass();\r\n\r\n\t\tJMenuItem jMenuItem;\r\n\t\tJMenu jMenu;\r\n\r\n\t\tJMenu jAddToo = new JMenu(TabsStockpile.get().addToStockpile());\r\n\t\tjAddToo.setIcon(Images.EDIT_ADD.getIcon());\r\n\t\tjAddToo.setEnabled(!items.isEmpty());\r\n\t\tthis.add(jAddToo);\r\n\r\n\t\tMenuScroller menuScroller = new MenuScroller(jAddToo);\r\n\t\tmenuScroller.keepVisible(2);\r\n\t\tmenuScroller.setTopFixedCount(2);\r\n\t\tmenuScroller.setInterval(125);\r\n\r\n\t\tif (!items.isEmpty()) {\r\n\t\t\tjMenuItem = new JStockpileMenuItem(TabsStockpile.get().addToNewStockpile(), Images.EDIT_ADD.getIcon(), items);\r\n\t\t\tjMenuItem.setActionCommand(StockpileItemMenuAction.ADD_TO.name());\r\n\t\t\tjMenuItem.addActionListener(listener);\r\n\t\t\tjAddToo.add(jMenuItem);\r\n\r\n\t\t\tjAddToo.addSeparator();\r\n\r\n\t\t\tfor (Stockpile stockpile : StockpileTab.getShownStockpiles(program)) {\r\n\t\t\t\tjMenuItem = new JStockpileMenuItem(stockpile, Images.TOOL_STOCKPILE.getIcon(), items);\r\n\t\t\t\tjMenuItem.setActionCommand(StockpileItemMenuAction.ADD_TO.name());\r\n\t\t\t\tjMenuItem.addActionListener(listener);\r\n\t\t\t\tjAddToo.add(jMenuItem);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tjMenuItem = new JStockpileMenuItem(TabsStockpile.get().editItem(), Images.EDIT_EDIT.getIcon(), edit);\r\n\t\tjMenuItem.setActionCommand(StockpileItemMenuAction.EDIT_ITEM.name());\r\n\t\tjMenuItem.addActionListener(listener);\r\n\t\tjMenuItem.setEnabled(edit.size() == 1);\r\n\t\tthis.add(jMenuItem);\r\n\r\n\t\tjMenuItem = new JStockpileMenuItem(TabsStockpile.get().deleteItem(), Images.EDIT_DELETE.getIcon(), delete);\r\n\t\tjMenuItem.setActionCommand(StockpileItemMenuAction.DELETE_ITEM.name());\r\n\t\tjMenuItem.addActionListener(listener);\r\n\t\tjMenuItem.setEnabled(!delete.isEmpty());\r\n\t\tthis.add(jMenuItem);\r\n\r\n\t\tboolean blueprint = false;\r\n\t\tfor (Object object : items) {\r\n\t\t\tif (object instanceof SeparatorList.Separator || object instanceof StockpileTotal || (!(object instanceof StockpileItem))) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tStockpileItem item = (StockpileItem) object;\r\n\t\t\tif (item.isBlueprint()) {\r\n\t\t\t\tblueprint = true;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.addSeparator();\r\n\r\n\t\tjMenu = new JMenu(TabsStockpile.get().blueprints());\r\n\t\tjMenu.setIcon(Images.MISC_BLUEPRINT.getIcon());\r\n\t\tthis.add(jMenu);\r\n\r\n\t\tjMenuItem = new JStockpileMenuItem(TabsStockpile.get().original(), Images.MISC_BPO.getIcon(), items);\r\n\t\tjMenuItem.setActionCommand(StockpileItemMenuAction.ORIGINAL.name());\r\n\t\tjMenuItem.addActionListener(listener);\r\n\t\tjMenuItem.setEnabled(blueprint);\r\n\t\tjMenu.add(jMenuItem);\r\n\r\n\t\tjMenuItem = new JStockpileMenuItem(TabsStockpile.get().copy(), Images.MISC_BPC.getIcon(), items);\r\n\t\tjMenuItem.setActionCommand(StockpileItemMenuAction.COPY.name());\r\n\t\tjMenuItem.addActionListener(listener);\r\n\t\tjMenuItem.setEnabled(blueprint);\r\n\t\tjMenu.add(jMenuItem);\r\n\r\n\t\tjMenuItem = new JStockpileMenuItem(TabsStockpile.get().runs(), Images.MISC_RUNS.getIcon(), items);\r\n\t\tjMenuItem.setActionCommand(StockpileItemMenuAction.RUNS.name());\r\n\t\tjMenuItem.addActionListener(listener);\r\n\t\tjMenuItem.setEnabled(blueprint);\r\n\t\tjMenu.add(jMenuItem);\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener {\r\n\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\tif (StockpileItemMenuAction.ADD_TO.name().equals(e.getActionCommand())) { //Add item to\r\n\t\t\t\tObject source = e.getSource();\r\n\t\t\t\tif (source instanceof JStockpileMenuItem) {\r\n\t\t\t\t\tJStockpileMenuItem jMenuItem = (JStockpileMenuItem) source;\r\n\t\t\t\t\tList<StockpileItem> items = new ArrayList<>();\r\n\t\t\t\t\tBpData blueprintSelect = null;\r\n\t\t\t\t\tBpData formulaSelect = null;\r\n\t\t\t\t\tfor (StockpileItem stockpileItem : jMenuItem.getItems()) {\r\n\t\t\t\t\t\tStockpile stockpile = stockpileItem.getStockpile();\r\n\t\t\t\t\t\tItem item = stockpileItem.getItem();\r\n\t\t\t\t\t\tif (stockpileItem.isBlueprint() && blueprintSelect == null) {\r\n\t\t\t\t\t\t\tblueprintSelect = getBlueprintSelect(program, true);\r\n\t\t\t\t\t\t\tif (blueprintSelect == null) {\r\n\t\t\t\t\t\t\t\treturn; //Cancel\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (item.isFormula() && formulaSelect == null) {\r\n\t\t\t\t\t\t\tformulaSelect = getFormulaSelect(program);\r\n\t\t\t\t\t\t\tif (formulaSelect == null) {\r\n\t\t\t\t\t\t\t\treturn; //Cancel\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (match(item, blueprintSelect, formulaSelect, TabsStockpile.get().original())) {\r\n\t\t\t\t\t\t\t//PBO\r\n\t\t\t\t\t\t\titems.add(new StockpileItem(stockpile, item, item.getTypeID(), stockpileItem.getCountMinimum(), false));\r\n\t\t\t\t\t\t} else if (match(item, blueprintSelect, null, TabsStockpile.get().copy())) {\r\n\t\t\t\t\t\t\t//BPC\r\n\t\t\t\t\t\t\titems.add(new StockpileItem(stockpile, item, -item.getTypeID(), stockpileItem.getCountMinimum(), false));\r\n\t\t\t\t\t\t} else if (match(item, blueprintSelect, null, TabsStockpile.get().runs())) {\r\n\t\t\t\t\t\t\t//BPC Runs\r\n\t\t\t\t\t\t\titems.add(new StockpileItem(stockpile, item, -item.getTypeID(), stockpileItem.getCountMinimum(), true));\r\n\t\t\t\t\t\t} else if (match(item, blueprintSelect, null, TabsStockpile.get().materialsManufacturing())) {\r\n\t\t\t\t\t\t\t//BP Materials\r\n\t\t\t\t\t\t\tfor (IndustryMaterial material : item.getManufacturingMaterials()) {\r\n\t\t\t\t\t\t\t\tdouble count = blueprintSelect.doMath(material.getQuantity(), stockpileItem.getCountMinimum());\r\n\t\t\t\t\t\t\t\tItem materialItem = ApiIdConverter.getItem(material.getTypeID());\r\n\t\t\t\t\t\t\t\titems.add(new StockpileItem(stockpile, materialItem, material.getTypeID(), count, false));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else if (match(item, null, formulaSelect, TabsStockpile.get().materialsReaction())) {\r\n\t\t\t\t\t\t\t//Reaction Materials\r\n\t\t\t\t\t\t\tfor (IndustryMaterial material : item.getReactionMaterials()) {\r\n\t\t\t\t\t\t\t\tItem materialItem = ApiIdConverter.getItem(material.getTypeID());\r\n\t\t\t\t\t\t\t\tdouble count = formulaSelect.doMath(material.getQuantity(), stockpileItem.getCountMinimum());\r\n\t\t\t\t\t\t\t\titems.add(new StockpileItem(stockpile, materialItem, material.getTypeID(), count, false));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else { //source or not bluepint/formula\r\n\t\t\t\t\t\t\titems.add(stockpileItem);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstockpileTab.addToStockpile(jMenuItem.getStockpile(), items, true, true);\r\n\t\t\t\t}\r\n\t\t\t} else if (StockpileItemMenuAction.RUNS.name().equals(e.getActionCommand())) { //Runs\r\n\t\t\t\tObject source = e.getSource();\r\n\t\t\t\tif (source instanceof JStockpileMenuItem) {\r\n\t\t\t\t\tupdateBlueprint((JStockpileMenuItem) source, new ChangeBlueprintType() {\r\n\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\tpublic StockpileItem getUpdatedItem(StockpileItem item) {\r\n\t\t\t\t\t\t\t//Runs: -typeID & runs=true\r\n\t\t\t\t\t\t\treturn new StockpileItem(item.getStockpile(), item.getItem(), -item.getTypeID(), item.getCountMinimum(), true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\tpublic boolean include(StockpileItem item) {\r\n\t\t\t\t\t\t\treturn !item.isRuns();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else if (StockpileItemMenuAction.ORIGINAL.name().equals(e.getActionCommand())) { //Original\r\n\t\t\t\tObject source = e.getSource();\r\n\t\t\t\tif (source instanceof JStockpileMenuItem) {\r\n\t\t\t\t\tupdateBlueprint((JStockpileMenuItem) source, new ChangeBlueprintType() {\r\n\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\tpublic StockpileItem getUpdatedItem(StockpileItem item) {\r\n\t\t\t\t\t\t\t//BPO: +typeID & runs=false\r\n\t\t\t\t\t\t\treturn new StockpileItem(item.getStockpile(), item.getItem(), item.getTypeID(), item.getCountMinimum(), false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\tpublic boolean include(StockpileItem item) {\r\n\t\t\t\t\t\t\treturn !item.isBPO();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else if (StockpileItemMenuAction.COPY.name().equals(e.getActionCommand())) { //Copy\r\n\t\t\t\tObject source = e.getSource();\r\n\t\t\t\tif (source instanceof JStockpileMenuItem) {\r\n\t\t\t\t\tupdateBlueprint((JStockpileMenuItem) source, new ChangeBlueprintType() {\r\n\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\tpublic StockpileItem getUpdatedItem(StockpileItem item) {\r\n\t\t\t\t\t\t\t//BPC: -typeID & runs=false\r\n\t\t\t\t\t\t\treturn new StockpileItem(item.getStockpile(), item.getItem(), -item.getTypeID(), item.getCountMinimum(), false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\tpublic boolean include(StockpileItem item) {\r\n\t\t\t\t\t\t\treturn item.isBPO() || item.isRuns();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else if (StockpileItemMenuAction.EDIT_ITEM.name().equals(e.getActionCommand())) { //Edit item\r\n\t\t\t\tObject source = e.getSource();\r\n\t\t\t\tif (source instanceof JStockpileMenuItem) {\r\n\t\t\t\t\tJStockpileMenuItem jMenuItem = (JStockpileMenuItem) source;\r\n\t\t\t\t\tList<StockpileItem> items = jMenuItem.getItems();\r\n\t\t\t\t\tif (items.size() == 1) {\r\n\t\t\t\t\t\tstockpileTab.editItem(items.get(0));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (StockpileItemMenuAction.DELETE_ITEM.name().equals(e.getActionCommand())) { //Delete item\r\n\t\t\t\tObject source = e.getSource();\r\n\t\t\t\tif (source instanceof JStockpileMenuItem) {\r\n\t\t\t\t\tJStockpileMenuItem jMenuItem = (JStockpileMenuItem) source;\r\n\t\t\t\t\tList<StockpileItem> items = jMenuItem.getItems();\r\n\t\t\t\t\tif (!items.isEmpty()) {\r\n\t\t\t\t\t\tint value;\r\n\t\t\t\t\t\tif (items.size() == 1) {\r\n\t\t\t\t\t\t\tvalue = JOptionPane.showConfirmDialog(program.getMainWindow().getFrame(), items.get(0).getName(), TabsStockpile.get().deleteItemTitle(), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tvalue = JOptionPane.showConfirmDialog(program.getMainWindow().getFrame(), TabsStockpile.get().deleteItems(items.size()), TabsStockpile.get().deleteItemTitle(), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (value == JOptionPane.OK_OPTION) {\r\n\t\t\t\t\t\t\tSettings.lock(\"Stokcpile (Stockpile Menu)\"); //Lock for Stokcpile (Stockpile Menu)\r\n\t\t\t\t\t\t\tfor (StockpileItem item : items) {\r\n\t\t\t\t\t\t\t\titem.getStockpile().remove(item);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tSettings.unlock(\"Stokcpile (Stockpile Menu)\"); //Unlock for Stokcpile (Stockpile Menu)\r\n\t\t\t\t\t\t\tprogram.saveSettings(\"Stokcpile (Stockpile Menu)\"); //Save Stokcpile (Stockpile Menu)\r\n\t\t\t\t\t\t\tstockpileTab.removeItems(items);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void updateBlueprint(JStockpileMenuItem jMenuItem, ChangeBlueprintType blueprintTypeChange) {\r\n\t\t//Find items that will be changed\r\n\t\tMap<Stockpile, List<StockpileItem>> update = new HashMap<>();\r\n\t\tfor (StockpileItem stockpileItem : jMenuItem.getItems()) {\r\n\t\t\tif (stockpileItem.isBlueprint() && blueprintTypeChange.include(stockpileItem)) {\r\n\t\t\t\tList<StockpileItem> list = update.get(stockpileItem.getStockpile());\r\n\t\t\t\tif (list == null) {\r\n\t\t\t\t\tlist = new ArrayList<>();\r\n\t\t\t\t\tupdate.put(stockpileItem.getStockpile(), list);\r\n\t\t\t\t}\r\n\t\t\t\tlist.add(stockpileItem);\r\n\t\t\t}\r\n\t\t}\r\n\t\tSettings.lock(\"Stokcpile (Stockpile Menu)\"); //Lock for Stokcpile (Stockpile Menu)\r\n\t\t//Remove items that will be changed\r\n\t\tfor (Map.Entry<Stockpile, List<StockpileItem>> entry : update.entrySet()) {\r\n\t\t\tfor (StockpileItem item : entry.getValue()) {\r\n\t\t\t\tentry.getKey().remove(item);\r\n\t\t\t}\r\n\t\t\tstockpileTab.removeItems(entry.getValue());\r\n\t\t}\r\n\t\t//Change items\r\n\t\tfor (Map.Entry<Stockpile, List<StockpileItem>> entry : update.entrySet()) {\r\n\t\t\tfor (StockpileItem item : entry.getValue()) {\r\n\t\t\t\titem.update(blueprintTypeChange.getUpdatedItem(item));\r\n\t\t\t}\r\n\t\t}\r\n\t\tSettings.unlock(\"Stokcpile (Stockpile Menu)\"); //Unlock for Stokcpile (Stockpile Menu)\r\n\t\t//Add changed items\r\n\t\tfor (Map.Entry<Stockpile, List<StockpileItem>> entry : update.entrySet()) {\r\n\t\t\tstockpileTab.addToStockpile(entry.getKey(), entry.getValue(), true, false);\r\n\t\t}\r\n\t\tprogram.saveSettings(\"Stockpile (Stockpile Menu)\"); //Save Stockpile (Stockpile Menu)\r\n\t}\r\n\r\n\tprivate interface ChangeBlueprintType {\r\n\t\tpublic StockpileItem getUpdatedItem(StockpileItem item);\r\n\t\tpublic boolean include(StockpileItem item);\r\n\t}\r\n\r\n\tpublic static class JStockpileMenuItem extends JMenuItem {\r\n\r\n\t\tprivate final List<StockpileItem> items = new ArrayList<>();\r\n\t\tprivate final Stockpile stockpile;\r\n\r\n\t\tpublic JStockpileMenuItem(final Stockpile stockpile, final Icon icon, final List<StockpileItem> items) {\r\n\t\t\tthis(stockpile.getName(), icon, items, stockpile);\r\n\t\t}\r\n\r\n\t\tpublic JStockpileMenuItem(final String title, final Icon icon, final List<StockpileItem> items) {\r\n\t\t\tthis(title, icon, items, null);\r\n\t\t}\r\n\r\n\t\tprivate JStockpileMenuItem(final String title, final Icon icon, final List<StockpileItem> items, final Stockpile stockpile) {\r\n\t\t\tsuper(title, icon);\r\n\t\t\tthis.stockpile = stockpile;\r\n\t\t\tfor (int i = 0; i < items.size(); i++) { //Remove StockpileTotal and SeparatorList.Separator\r\n\t\t\t\tObject item = items.get(i);\r\n\t\t\t\tif (!(item instanceof SeparatorList.Separator) && !(item instanceof StockpileTotal)) {\r\n\t\t\t\t\tthis.items.add((StockpileItem) item);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tpublic List<StockpileItem> getItems() {\r\n\t\t\treturn items;\r\n\t\t}\r\n\r\n\t\tpublic Stockpile getStockpile() {\r\n\t\t\treturn stockpile;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/stockpile/JStockpileTable.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.stockpile;\n\nimport ca.odell.glazedlists.SeparatorList;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport java.awt.Component;\nimport java.awt.Cursor;\nimport java.awt.Point;\nimport java.awt.event.MouseEvent;\nimport java.awt.event.MouseMotionListener;\nimport javax.swing.JLabel;\nimport javax.swing.ToolTipManager;\nimport javax.swing.table.TableCellRenderer;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.shared.InstantToolTip;\nimport net.nikr.eve.jeveasset.gui.shared.table.JSeparatorTable;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableCellRenderers.TargetCellRenderer;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileItem;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileTotal;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.SubpileItem;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.SubpileStock;\nimport net.nikr.eve.jeveasset.i18n.TabsStockpile;\n\n\npublic class JStockpileTable extends JSeparatorTable {\n\n\tprivate final DefaultEventTableModel<StockpileItem> tableModel;\n\tprivate int lastColumn = -1;\n\tprivate int lastRow = -1;\n\n\tpublic JStockpileTable(final Program program, final DefaultEventTableModel<StockpileItem> tableModel, SeparatorList<?> separatorList) {\n\t\tsuper(program, tableModel, separatorList);\n\t\tthis.tableModel = tableModel;\n\t\tInstantToolTip.install(this);\n\t\tthis.setDefaultRenderer(Double.class, new TargetCellRenderer(tableModel));\n\t\tthis.disableColumnResizeCache(StockpileTableFormat.COUNT_MINIMUM);\n\t\tfinal Cursor cursor = getCursor();\n\t\taddMouseMotionListener(new MouseMotionListener() {\n\t\t\t@Override\n\t\t\tpublic void mouseDragged(MouseEvent e) { }\n\n\t\t\t@Override\n\t\t\tpublic void mouseMoved(MouseEvent e) {\n\t\t\t\tPoint p = e.getPoint();\n\n\t\t\t\tint column = columnAtPoint(p);\n\t\t\t\tint row = rowAtPoint(p);\n\n\t\t\t\tif (lastColumn == column && lastRow == row) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (column < 0 || column >= getColumnCount()) {\n\t\t\t\t\treturn; //Out of bounce\n\t\t\t\t}\n\t\t\t\tif (row < 0 || row >= getRowCount()) {\n\t\t\t\t\treturn; //Out of bounce\n\t\t\t\t}\n\t\t\t\tlastColumn = column;\n\t\t\t\tlastRow = row;\n\n\t\t\t\tString columnName = (String) getTableHeader().getColumnModel().getColumn(column).getHeaderValue();\n\t\t\t\tif (columnName.equals(StockpileTableFormat.COUNT_MINIMUM.getColumnName())) {\n\t\t\t\t\tObject object = tableModel.getElementAt(row);\n\t\t\t\t\tif (object instanceof StockpileItem) {\n\t\t\t\t\t\tStockpileItem stockpileItem = (StockpileItem) object;\n\t\t\t\t\t\tif (stockpileItem.isEditable()) {\n\t\t\t\t\t\t\tsetCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));\n\t\t\t\t\t\t\tToolTipManager.sharedInstance().setEnabled(false);\n\t\t\t\t\t\t\tToolTipManager.sharedInstance().setEnabled(true);\n\t\t\t\t\t\t\tsetToolTipText(TabsStockpile.get().editCell());\n\t\t\t\t\t\t\treturn; //Don't set default\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t//Default\n\t\t\t\tsetToolTipText(null);\n\t\t\t\tsetCursor(cursor);\n\t\t\t}\n\t\t});\n\t}\n\n\t@Override\n\tpublic Component prepareRenderer(final TableCellRenderer renderer, final int row, final int column) {\n\t\tComponent component = super.prepareRenderer(renderer, row, column);\n\t\tboolean isSelected = isCellSelected(row, column);\n\t\tObject object = tableModel.getElementAt(row);\n\t\tString columnName = (String) this.getTableHeader().getColumnModel().getColumn(column).getHeaderValue();\t\n\t\tif (object instanceof StockpileItem) {\n\t\t\tStockpileItem stockpileItem = (StockpileItem) object;\n\t\t\tif (stockpileItem.isEditable() && columnName.equals(StockpileTableFormat.COUNT_MINIMUM.getColumnName())) {\n\t\t\t\tif (component instanceof JLabel) {\n\t\t\t\t\tJLabel jLabel = (JLabel) component;\n\t\t\t\t\tint columnWidth = getColumnModel().getColumn(column).getWidth() - 2 + TargetCellRenderer.MINIMUM_ICON_TEXT_GAP;\n\t\t\t\t\tint jLabelWidth = jLabel.getPreferredSize().width;\n\t\t\t\t\tjLabel.setIconTextGap(Math.max(TargetCellRenderer.MINIMUM_ICON_TEXT_GAP, columnWidth - jLabelWidth));\n\t\t\t\t}\n\t\t\t}\n\t\t\t//Background\n\t\t\tif (object instanceof SubpileStock) { //Subpile\n\t\t\t\tif (columnName.equals(StockpileTableFormat.COUNT_MINIMUM.getColumnName())) {\n\t\t\t\t\tif (!stockpileItem.isEditable()) {\n\t\t\t\t\t\tColorSettings.configCell(component, ColorEntry.GLOBAL_GRAND_TOTAL, isSelected);\n\t\t\t\t\t\treturn component;\n\t\t\t\t\t}\n\t\t\t\t} else if (columnName.equals(StockpileTableFormat.NAME.getColumnName())) {\n\t\t\t\t\tColorSettings.configCell(component, ColorEntry.GLOBAL_GRAND_TOTAL, isSelected);\n\t\t\t\t\treturn component;\n\t\t\t\t} else if (columnName.equals(StockpileTableFormat.TAGS.getColumnName())) {\n\t\t\t\t\tColorSettings.configCell(component, ColorEntry.GLOBAL_GRAND_TOTAL, isSelected);\n\t\t\t\t\treturn component;\n\t\t\t\t} else if (!columnName.equals(StockpileTableFormat.GROUP.getColumnName())\n\t\t\t\t\t\t\t&& !columnName.equals(StockpileTableFormat.COUNT_MINIMUM_MULTIPLIED.getColumnName())) {\n\t\t\t\t\tcomponent.setForeground(component.getBackground());\n\t\t\t\t\treturn component;\n\t\t\t\t}\n\t\t\t} else if (object instanceof SubpileItem) { //Total\n\t\t\t\tif (!stockpileItem.isEditable() && columnName.equals(StockpileTableFormat.COUNT_MINIMUM.getColumnName())) {\n\t\t\t\t\tColorSettings.configCell(component, ColorEntry.GLOBAL_GRAND_TOTAL, isSelected);\n\t\t\t\t} else if (columnName.equals(StockpileTableFormat.TAGS.getColumnName())) {\n\t\t\t\t\tColorSettings.configCell(component, ColorEntry.GLOBAL_GRAND_TOTAL, isSelected);\n\t\t\t\t}\n\t\t\t} else if (object instanceof StockpileTotal) { //Total\n\t\t\t\tColorSettings.configCell(component, ColorEntry.GLOBAL_GRAND_TOTAL, isSelected);\n\t\t\t}\n\t\t\tif (columnName.equals(StockpileTableFormat.NAME.getColumnName())) {\n\t\t\t\tif (Settings.get().isStockpileHalfColors()) {\n\t\t\t\t\tif (stockpileItem.getPercentNeeded() >= (Settings.get().getStockpileColorGroup3() / 100.0) ) {\n\t\t\t\t\t\t//Group 3\n\t\t\t\t\t\tColorSettings.configCell(component, ColorEntry.STOCKPILE_TABLE_OVER_THRESHOLD, isSelected);\n\t\t\t\t\t} else if (stockpileItem.getPercentNeeded() >= (Settings.get().getStockpileColorGroup2() / 100.0) ) {\n\t\t\t\t\t\t//Group 2\n\t\t\t\t\t\tColorSettings.configCell(component, ColorEntry.STOCKPILE_TABLE_BELOW_THRESHOLD_2ND, isSelected);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t//Group 1\n\t\t\t\t\t\tColorSettings.configCell(component, ColorEntry.STOCKPILE_TABLE_BELOW_THRESHOLD, isSelected);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (stockpileItem.getPercentNeeded() >= (Settings.get().getStockpileColorGroup2() / 100.0) ) {\n\t\t\t\t\t\t//Group 2\n\t\t\t\t\t\tColorSettings.configCell(component, ColorEntry.STOCKPILE_TABLE_OVER_THRESHOLD, isSelected);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t//Group 1\n\t\t\t\t\t\tColorSettings.configCell(component, ColorEntry.STOCKPILE_TABLE_BELOW_THRESHOLD, isSelected);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (stockpileItem.isIgnoreMultiplier() && columnName.equals(StockpileTableFormat.COUNT_MINIMUM_MULTIPLIED.getColumnName())) {\n\t\t\t\tColorSettings.configCell(component, ColorEntry.GLOBAL_GRAND_TOTAL, isSelected);\n\t\t\t}\n\t\t\t//Foreground\n\t\t\tif (columnName.equals(StockpileTableFormat.COUNT_NOW_INVENTORY.getColumnName()) && !stockpileItem.getStockpile().isAssets()) {\n\t\t\t\tcomponent.setForeground(component.getBackground());\n\t\t\t} else if (columnName.equals(StockpileTableFormat.COUNT_NOW_BUY_ORDERS.getColumnName()) && (!stockpileItem.getStockpile().isBuyOrders() || stockpileItem.isRuns())) {\n\t\t\t\tcomponent.setForeground(component.getBackground());\n\t\t\t} else if (columnName.equals(StockpileTableFormat.COUNT_NOW_SELL_ORDERS.getColumnName()) && (!stockpileItem.getStockpile().isSellOrders() || stockpileItem.isRuns())) {\n\t\t\t\tcomponent.setForeground(component.getBackground());\n\t\t\t} else if (columnName.equals(StockpileTableFormat.COUNT_NOW_BUY_TRANSACTIONS.getColumnName()) && (!stockpileItem.getStockpile().isBuyTransactions() || stockpileItem.isRuns())) {\n\t\t\t\tcomponent.setForeground(component.getBackground());\n\t\t\t} else if (columnName.equals(StockpileTableFormat.COUNT_NOW_SELL_TRANSACTIONS.getColumnName()) && (!stockpileItem.getStockpile().isSellTransactions() || stockpileItem.isRuns())) {\n\t\t\t\tcomponent.setForeground(component.getBackground());\n\t\t\t} else if (columnName.equals(StockpileTableFormat.COUNT_NOW_JOBS.getColumnName()) && !stockpileItem.getStockpile().isJobs()) {\n\t\t\t\tcomponent.setForeground(component.getBackground());\n\t\t\t} else if (columnName.equals(StockpileTableFormat.COUNT_NOW_SELLING_CONTRACTS.getColumnName()) && (!stockpileItem.getStockpile().isSellingContracts() || stockpileItem.isRuns())) {\n\t\t\t\tcomponent.setForeground(component.getBackground());\n\t\t\t} else if (columnName.equals(StockpileTableFormat.COUNT_NOW_SOLD_CONTRACTS.getColumnName()) && (!stockpileItem.getStockpile().isSoldContracts() || stockpileItem.isRuns())) {\n\t\t\t\tcomponent.setForeground(component.getBackground());\n\t\t\t} else if (columnName.equals(StockpileTableFormat.COUNT_NOW_BUYING_CONTRACTS.getColumnName()) && (!stockpileItem.getStockpile().isBuyingContracts() || stockpileItem.isRuns())) {\n\t\t\t\tcomponent.setForeground(component.getBackground());\n\t\t\t} else if (columnName.equals(StockpileTableFormat.COUNT_NOW_BOUGHT_CONTRACTS.getColumnName()) && (!stockpileItem.getStockpile().isBoughtContracts() || stockpileItem.isRuns())) {\n\t\t\t\tcomponent.setForeground(component.getBackground());\n\t\t\t} else if (columnName.equals(StockpileTableFormat.COUNT_NEEDED.getColumnName()) && stockpileItem.getCountNeeded() < 0) {\n\t\t\t\tColorSettings.configCell(component, ColorEntry.GLOBAL_VALUE_NEGATIVE, isSelected);\n\t\t\t} else if (columnName.equals(StockpileTableFormat.VALUE_NEEDED.getColumnName()) && stockpileItem.getValueNeeded() < 0) {\n\t\t\t\tColorSettings.configCell(component, ColorEntry.GLOBAL_VALUE_NEGATIVE, isSelected);\n\t\t\t} else if (columnName.equals(StockpileTableFormat.VOLUME_NEEDED.getColumnName()) && stockpileItem.getVolumeNeeded() < 0) {\n\t\t\t\tColorSettings.configCell(component, ColorEntry.GLOBAL_VALUE_NEGATIVE, isSelected);\n\t\t\t}\n\t\t}\n\t\treturn component;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/stockpile/Stockpile.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.tabs.stockpile;\n\nimport java.util.ArrayList;\nimport java.util.Calendar;\nimport java.util.Collection;\nimport java.util.Collections;\nimport java.util.Comparator;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Objects;\nimport java.util.Set;\nimport java.util.TimeZone;\nimport java.util.TreeSet;\nimport java.util.concurrent.atomic.AtomicLong;\nimport javax.swing.JButton;\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.data.sde.ItemFlag;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.data.settings.PriceData;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.tag.TagID;\nimport net.nikr.eve.jeveasset.data.settings.tag.Tags;\nimport net.nikr.eve.jeveasset.data.settings.types.BlueprintType;\nimport net.nikr.eve.jeveasset.data.settings.types.ItemType;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationsType;\nimport net.nikr.eve.jeveasset.data.settings.types.MarketDetailType;\nimport net.nikr.eve.jeveasset.data.settings.types.OwnersType;\nimport net.nikr.eve.jeveasset.data.settings.types.PriceType;\nimport net.nikr.eve.jeveasset.data.settings.types.TagsType;\nimport net.nikr.eve.jeveasset.gui.shared.CopyHandler.CopySeparator;\nimport net.nikr.eve.jeveasset.gui.shared.components.JButtonComparable;\nimport net.nikr.eve.jeveasset.gui.shared.components.JButtonNull;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter.StockpileContainer;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter.StockpileFlag;\nimport net.nikr.eve.jeveasset.i18n.General;\nimport net.nikr.eve.jeveasset.i18n.TabsStockpile;\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\n\n\npublic class Stockpile implements Comparable<Stockpile>, LocationsType, OwnersType {\n\n\tprivate static final Calendar CALENDAR = Calendar.getInstance(TimeZone.getTimeZone(\"GMT\"));\n\n\tprivate static final AtomicLong TS = new AtomicLong();\n\tprivate final long id;\n\tprivate String name;\n\tprivate String ownerName;\n\tprivate String flagName;\n\tprivate String locationName;\n\tprivate String containerName;\n\tprivate List<StockpileFilter> filters = new ArrayList<>();\n\tprivate final Set<StockpileItem> items = new TreeSet<>();\n\tprivate final StockpileTotal totalItem = new StockpileTotal(this);\n\tprivate final Map<Stockpile, Double> subpiles = new HashMap<>();\n\tprivate final List<Stockpile> subpileLinks = new ArrayList<>();\n\tprivate final List<SubpileItem> subpileAll = new ArrayList<>();\n\tprivate final List<SubpileItem> subpileItems = new ArrayList<>();\n\tprivate final List<SubpileStock> subpileStocks = new ArrayList<>();\n\tprivate double percentFull;\n\tprivate double multiplier;\n\tprivate boolean matchAll;\n\tprivate boolean assets = false;\n\tprivate boolean jobs = false;\n\tprivate boolean buyOrders = false;\n\tprivate boolean sellOrders = false;\n\tprivate boolean transactions = false;\n\tprivate boolean buyTransactions = false;\n\tprivate boolean sellTransactions = false;\n\tprivate boolean contracts = false;\n\tprivate boolean buyingContracts = false;\n\tprivate boolean sellingContracts = false;\n\tprivate boolean soldContracts = false;\n\tprivate boolean boughtContracts = false;\n\n\tprivate Stockpile(final Stockpile stockpile) {\n\t\tupdate(stockpile);\n\t\tfor (StockpileItem item : stockpile.getItems()) {\n\t\t\tif (item.isTotal()) {\n\t\t\t\tcontinue; //Ignore Total\n\t\t\t}\n\t\t\titems.add(new StockpileItem(this, item));\n\t\t}\n\t\titems.add(totalItem);\n\t\tthis.id = getNewID(); //New stockpile = new id\n\t}\n\n\t/**\n\t * Copy with new name.\n\t * @param name\n\t * @param stockpile \n\t */\n\tpublic Stockpile(final String name, final Stockpile stockpile) {\n\t\tupdate(stockpile);\n\t\tthis.name = name;\n\t\tthis.id = getNewID(); //New stockpile = new id\n\t\titems.add(totalItem);\n\t\tupdateDynamicValues();\n\t}\n\n\tpublic Stockpile(final String name, final Long id, final List<StockpileFilter> filters, double multiplier, boolean matchAll) {\n\t\tthis.name = name;\n\t\tthis.filters = filters;\n\t\tthis.multiplier = multiplier;\n\t\tthis.matchAll = matchAll;\n\t\tif (id == null) {\n\t\t\tthis.id = getNewID();\n\t\t} else {\n\t\t\tthis.id = id;\n\t\t}\n\t\titems.add(totalItem);\n\t\tupdateDynamicValues();\n\t}\n\n\tfinal void update(final Stockpile stockpile) {\n\t\tthis.name = stockpile.getName();\n\t\tthis.ownerName = stockpile.getOwnerName();\n\t\tthis.filters = stockpile.getFilters();\n\t\tthis.flagName = stockpile.getFlagName();\n\t\tthis.multiplier = stockpile.getMultiplier();\n\t\tthis.matchAll = stockpile.isMatchAll();\n\t\tupdateDynamicValues();\n\t}\n\n\tfinal void updateDynamicValues() {\n\t\tcreateContainerName();\n\t\tcreateLocationName();\n\t\tcreateInclude();\n\t}\n\n\tvoid updateTags() {\n\t\tfor (StockpileItem item : items) {\n\t\t\titem.updateTags();\n\t\t}\n\t}\n\n\tpublic long getStockpileID() {\n\t\treturn id;\n\t}\n\n\tpublic String getGroup() {\n\t\treturn Settings.get().getStockpileGroupSettings().getGroup(this);\n\t}\n\n\tprivate static long getNewID() {\n\t\tlong micros = System.currentTimeMillis() * 1000;\n\t\tfor ( ; ; ) {\n\t\t\tlong value = TS.get();\n\t\t\tif (micros <= value)\n\t\t\t\tmicros = value + 1;\n\t\t\tif (TS.compareAndSet(value, micros))\n\t\t\t\treturn micros;\n\t\t}\n\t}\n\n\tpublic void addSubpileLink(Stockpile subpile) {\n\t\tsubpileLinks.add(subpile);\n\t}\n\n\tpublic void removeSubpileLink(Stockpile subpile) {\n\t\tsubpileLinks.remove(subpile);\n\t}\n\n\tpublic List<Stockpile> getSubpileLinks() {\n\t\treturn Collections.unmodifiableList(subpileLinks);\n\t}\n\n\tpublic Map<Stockpile, Double> getSubpiles() {\n\t\treturn subpiles;\n\t}\n\n\tpublic List<SubpileItem> getSubpileItems() {\n\t\treturn subpileAll;\n\t}\n\n\tpublic List<SubpileStock> getSubpileStocks() {\n\t\treturn subpileStocks;\n\t}\n\n\tpublic List<SubpileItem> getSubpileTableItems() {\n\t\tif (Settings.get().isShowSubpileTree()) {\n\t\t\treturn subpileAll;\n\t\t} else {\n\t\t\treturn subpileItems;\n\t\t}\n\t}\n\n\tpublic void clearSubpileItems() {\n\t\tsubpileAll.clear();\n\t\tsubpileItems.clear();\n\t\tsubpileStocks.clear();\n\t}\n\n\tpublic void addSubpileItem(SubpileItem subpileItem) {\n\t\tsubpileAll.add(subpileItem);\n\t\tsubpileItems.add(subpileItem);\n\t}\n\tpublic void addSubpileStock(SubpileStock subpileStock) {\n\t\tsubpileAll.add(subpileStock);\n\t\tsubpileStocks.add(subpileStock);\n\t}\n\n\tprivate void createLocationName() {\n\t\tlocationName = General.get().all();\n\t\tfor (StockpileFilter filter : filters) {\n\t\t\t//Update Location\n\t\t\tMyLocation location = ApiIdConverter.getLocation(filter.getLocation().getLocationID());\n\t\t\tfilter.setLocation(location);\n\t\t\tif (location != null && !location.isEmpty()) { //Not All\n\t\t\t\tif (filters.size() > 1) {\n\t\t\t\t\tlocationName = TabsStockpile.get().multiple();\n\t\t\t\t} else {\n\t\t\t\t\tlocationName = location.getLocation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void createContainerName() {\n\t\tSet<String> containers = new HashSet<>();\n\t\tfor (StockpileFilter filter : getFilters()) {\n\t\t\tfor (StockpileContainer container : filter.getContainers()) {\n\t\t\t\tcontainers.add(container.getContainer());\n\t\t\t}\n\t\t}\n\t\tif (containers.isEmpty()) {\n\t\t\tcontainerName = General.get().all();\n\t\t} else if (containers.size() == 1) {\n\t\t\tfor (String container : containers) {\n\t\t\t\tcontainerName = container; //first (and only)\n\t\t\t}\n\t\t} else {\n\t\t\tcontainerName = TabsStockpile.get().multiple();\n\t\t}\n\t}\n\n\tprivate void createInclude() {\n\t\tif (getFilters().isEmpty()) {\n\t\t\tassets = true;\n\t\t\tjobs = true;\n\t\t\tbuyOrders = true;\n\t\t\tsellOrders = true;\n\t\t\ttransactions = true;\n\t\t\tbuyTransactions = true;\n\t\t\tsellTransactions = true;\n\t\t\tcontracts = true;\n\t\t\tbuyingContracts = true;\n\t\t\tsellingContracts = true;\n\t\t\tboughtContracts = true;\n\t\t\tsoldContracts = true;\n\t\t} else {\n\t\t\tassets = false;\n\t\t\tjobs = false;\n\t\t\tbuyOrders = false;\n\t\t\tsellOrders = false;\n\t\t\ttransactions = false;\n\t\t\tbuyTransactions = false;\n\t\t\tsellTransactions = false;\n\t\t\tcontracts = false;\n\t\t\tbuyingContracts = false;\n\t\t\tsellingContracts = false;\n\t\t\tboughtContracts = false;\n\t\t\tsoldContracts = false;\n\t\t}\n\t\tfor (StockpileFilter filter : getFilters()) {\n\t\t\tif (filter.isAssets()) {\n\t\t\t\tassets = true;\n\t\t\t}\n\t\t\tif (filter.isBuyOrders()) {\n\t\t\t\tbuyOrders = true;\n\t\t\t}\n\t\t\tif (filter.isSellOrders()) {\n\t\t\t\tsellOrders = true;\n\t\t\t}\n\t\t\tif (filter.isBuyTransactions()) {\n\t\t\t\tbuyTransactions = true;\n\t\t\t\ttransactions = true;\n\t\t\t}\n\t\t\tif (filter.isSellTransactions()) {\n\t\t\t\tsellTransactions = true;\n\t\t\t\ttransactions = true;\n\t\t\t}\n\t\t\tif (filter.isJobs()) {\n\t\t\t\tjobs = true;\n\t\t\t}\n\t\t\tif (filter.isSellingContracts()) {\n\t\t\t\tsellingContracts = true;\n\t\t\t\tcontracts = true;\n\t\t\t}\n\t\t\tif (filter.isSoldContracts()) {\n\t\t\t\tsoldContracts = true;\n\t\t\t\tcontracts = true;\n\t\t\t}\n\t\t\tif (filter.isBuyingContracts()) {\n\t\t\t\tcontracts = true;\n\t\t\t\tbuyingContracts = true;\n\t\t\t}\n\t\t\tif (filter.isBoughtContracts()) {\n\t\t\t\tcontracts = true;\n\t\t\t\tboughtContracts = true;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic boolean isEmpty() {\n\t\treturn (items.size() <= 1);\n\t}\n\n\tpublic boolean add(final StockpileItem item) {\n\t\treturn items.add(item);\n\t}\n\n\tpublic void remove(final StockpileItem item) {\n\t\tif (items.contains(item)) {\n\t\t\titems.remove(item);\n\t\t}\n\t\tif (items.isEmpty()) {\n\t\t\titems.add(totalItem);\n\t\t}\n\t}\n\n\tpublic void reset() {\n\t\tfor (StockpileItem item : items) {\n\t\t\titem.reset();\n\t\t}\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic double getMultiplier() {\n\t\treturn multiplier;\n\t}\n\n\tpublic boolean isMatchAll() {\n\t\treturn matchAll;\n\t}\n\n\tpublic boolean isAssets() {\n\t\treturn assets;\n\t}\n\n\tpublic boolean isBuyOrders() {\n\t\treturn buyOrders;\n\t}\n\n\tpublic boolean isSellOrders() {\n\t\treturn sellOrders;\n\t}\n\n\tpublic boolean isTransactions() {\n\t\treturn transactions;\n\t}\n\n\tpublic boolean isBuyTransactions() {\n\t\treturn buyTransactions;\n\t}\n\n\tpublic boolean isSellTransactions() {\n\t\treturn sellTransactions;\n\t}\n\n\tpublic boolean isJobs() {\n\t\treturn jobs;\n\t}\n\n\tpublic boolean isContracts() {\n\t\treturn contracts;\n\t}\n\n\tpublic boolean isSellingContracts() {\n\t\treturn sellingContracts;\n\t}\n\n\tpublic boolean isSoldContracts() {\n\t\treturn soldContracts;\n\t}\n\n\tpublic boolean isBuyingContracts() {\n\t\treturn buyingContracts;\n\t}\n\n\tpublic boolean isBoughtContracts() {\n\t\treturn boughtContracts;\n\t}\n\n\tpublic String getOwnerName() {\n\t\treturn ownerName;\n\t}\n\n\tpublic void setMultiplier(double multiplier) {\n\t\tthis.multiplier = multiplier;\n\t}\n\n\tpublic final void setOwnerName(final List<String> ownerNames) {\n\t\tif (ownerNames.isEmpty()) {\n\t\t\tthis.ownerName = General.get().all();\n\t\t} else if (ownerNames.size() == 1) {\n\t\t\tthis.ownerName = ownerNames.get(0);\n\t\t} else {\n\t\t\tthis.ownerName = TabsStockpile.get().multiple();\n\t\t}\n\t}\n\n\tpublic String getContainerName() {\n\t\treturn containerName;\n\t}\n\tpublic String getFlagName() {\n\t\treturn flagName;\n\t}\n\n\tpublic final void setFlagName(final Set<ItemFlag> flagNames) {\n\t\tif (flagNames.isEmpty()) {\n\t\t\tthis.flagName = General.get().all();\n\t\t} else if (flagNames.size() == 1) {\n\t\t\tthis.flagName = flagNames.iterator().next().toString();\n\t\t} else {\n\t\t\tthis.flagName = TabsStockpile.get().multiple();\n\t\t}\n\t}\n\n\tpublic Collection<StockpileItem> getItems() {\n\t\treturn items;\n\t}\n\n\tpublic List<StockpileItem> getClaims() {\n\t\treturn new ArrayList<>(getClaimsMap().values());\n\t}\n\n\tpublic Map<TypeIdentifier, StockpileItem> getClaimsMap() {\n\t\tMap<TypeIdentifier, StockpileItem> map = new HashMap<>();\n\t\t//Items\n\t\tfor (StockpileItem item : items) {\n\t\t\tif (item.isTotal()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tmap.put(item.getType(), item);\n\t\t}\n\t\t//SubpileItem (Overwrites StockpileItem items)\n\t\tfor (SubpileItem item : subpileItems) {\n\t\t\tmap.put(item.getType(), item);\n\t\t}\n\t\treturn map;\n\t}\n\n\t@Override\n\tpublic Set<MyLocation> getLocations() {\n\t\tSet<MyLocation> locations = new HashSet<>();\n\t\tfor (StockpileFilter filter : filters) {\n\t\t\tif (!filter.getLocation().isEmpty()) {\n\t\t\t\tlocations.add(filter.getLocation());\n\t\t\t}\n\t\t}\n\t\treturn locations;\n\t}\n\n\t@Override\n\tpublic Set<Long> getOwners() {\n\t\tSet<Long> owners = new HashSet<>();\n\t\tfor (StockpileFilter filter : filters) {\n\t\t\tif (!filter.getOwnerIDs().isEmpty()) {\n\t\t\t\towners.addAll(filter.getOwnerIDs());\n\t\t\t}\n\t\t}\n\t\treturn owners;\n\t}\n\n\tpublic List<StockpileFilter> getFilters() {\n\t\treturn filters;\n\t}\n\n\tpublic String getLocationName() {\n\t\treturn locationName;\n\t}\n\n\tpublic double getPercentFull() {\n\t\treturn percentFull;\n\t}\n\n\tpublic void updateTotal() {\n\t\ttotalItem.reset();\n\t\tpercentFull = Double.MAX_VALUE;\n\t\t//For each item type\n\t\tfor (StockpileItem item : getClaims()) {\n\t\t\tif (item.isTotal()) {\n\t\t\t\tcontinue; //Ignore Total\n\t\t\t}\n\t\t\tpercentFull = Math.min(item.getPercentNeeded(), percentFull);\n\t\t\ttotalItem.updateTotal(item);\n\t\t}\n\t\tif (percentFull == Double.MAX_VALUE) { //Default value\n\t\t\tpercentFull = 1;\n\t\t}\n\t}\n\n\tpublic StockpileTotal getTotal() {\n\t\treturn totalItem;\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\treturn getName();\n\t}\n\n\t@Override\n\tpublic boolean equals(final Object obj) {\n\t\tif (obj == null) {\n\t\t\treturn false;\n\t\t}\n\t\tif (getClass() != obj.getClass()) {\n\t\t\treturn false;\n\t\t}\n\t\tfinal Stockpile other = (Stockpile) obj;\n\t\treturn !((this.name == null) ? (other.name != null) : !this.name.equals(other.name));\n\t}\n\n\t@Override\n\tpublic int hashCode() {\n\t\tint hash = 5;\n\t\thash = 71 * hash + (this.name != null ? this.name.hashCode() : 0);\n\t\treturn hash;\n\t}\n\n\tpublic Stockpile deepClone() {\n\t\treturn new Stockpile(this);\n\t}\n\n\t@Override\n\tpublic int compareTo(final Stockpile o) {\n\t\treturn this.getName().compareToIgnoreCase(o.getName());\n\t}\n\n\tpublic static class StockpileItem implements Comparable<StockpileItem>, LocationsType, ItemType, BlueprintType, PriceType, CopySeparator, TagsType, OwnersType, MarketDetailType {\n\t\tprivate static final AtomicLong TS = new AtomicLong();\n\t\t//Constructor\n\t\tprivate final long id;\n\t\tprivate Stockpile stockpile;\n\t\tprivate Item item;\n\t\tprivate int typeID;\n\t\tprivate TypeIdentifier type;\n\t\tprivate double countMinimum;\n\t\tprivate boolean runs;\n\t\tprivate boolean ignoreMultiplier;\n\n\t\t//soft init\n\t\tprotected JButton jButton;\n\n\t\t//Updated values\n\t\tprivate double price = 0.0;\n\t\tprivate double volume = 0.0f;\n\t\tprivate Double transactionAveragePrice; //can be null!\n\t\tprivate PriceData priceData = new PriceData();\n\n\t\t//Dynamic values\n\t\tprivate Tags tags;\n\n\t\t//Updated counts\n\t\tprivate long inventoryCountNow = 0;\n\t\tprivate long sellOrdersCountNow = 0;\n\t\tprivate long buyOrdersCountNow = 0;\n\t\tprivate long jobsCountNow = 0;\n\t\tprivate long buyTransactionsCountNow = 0;\n\t\tprivate long sellTransactionsCountNow = 0;\n\t\tprivate long buyingContractsCountNow = 0;\n\t\tprivate long boughtContractsCountNow = 0;\n\t\tprivate long sellingContractsCountNow = 0;\n\t\tprivate long soldContractsCountNow = 0;\n\n\t\tpublic StockpileItem(final Stockpile stockpile, final StockpileItem stockpileItem) {\n\t\t\tthis(stockpile,\n\t\t\t\t\tstockpileItem.item,\n\t\t\t\t\tstockpileItem.typeID,\n\t\t\t\t\tstockpileItem.countMinimum,\n\t\t\t\t\tstockpileItem.runs,\n\t\t\t\t\tstockpileItem.ignoreMultiplier\n\t\t\t\t\t);\n\t\t}\n\n\t\tpublic StockpileItem(final Stockpile stockpile, final Item item, final int typeID, final double countMinimum, final boolean runs) {\n\t\t\tthis(stockpile, item, typeID, countMinimum, runs, false, getNewID());\n\t\t}\n\n\t\tpublic StockpileItem(final Stockpile stockpile, final Item item, final int typeID, final double countMinimum, final boolean runs, boolean ignoreMultiplier) {\n\t\t\tthis(stockpile, item, typeID, countMinimum, runs, ignoreMultiplier, getNewID());\n\t\t}\n\n\t\tpublic StockpileItem(final Stockpile stockpile, final Item item, final int typeID, final double countMinimum, final boolean runs, boolean ignoreMultiplier, final long id) {\n\t\t\tthis.stockpile = stockpile;\n\t\t\tthis.item = item;\n\t\t\tthis.typeID = typeID;\n\t\t\tthis.countMinimum = countMinimum;\n\t\t\tthis.runs = runs;\n\t\t\tthis.ignoreMultiplier = ignoreMultiplier;\n\t\t\tthis.id = id;\n\t\t\tthis.type = new TypeIdentifier(typeID, runs);\n\t\t}\n\n\t\tvoid update(StockpileItem stockpileItem) {\n\t\t\tthis.stockpile = stockpileItem.stockpile;\n\t\t\tthis.item = stockpileItem.item;\n\t\t\tthis.typeID = stockpileItem.typeID;\n\t\t\tthis.countMinimum = stockpileItem.countMinimum;\n\t\t\tthis.runs = stockpileItem.runs;\n\t\t\tthis.ignoreMultiplier = stockpileItem.ignoreMultiplier;\n\t\t\tthis.type = new TypeIdentifier(typeID, runs);\n\t\t}\n\n\t\t@Override\n\t\tpublic JButton getButton() {\n\t\t\tif (jButton == null) { //Soft init\n\t\t\t\tjButton = new JButtonComparable(TabsStockpile.get().eveUiOpen());\n\t\t\t}\n\t\t\treturn jButton;\n\t\t}\n\n\t\tprivate void updateTags() {\n\t\t\tsetTags(Settings.get().getTags(getTagID()));\n\t\t}\n\n\t\tpublic boolean isEditable() {\n\t\t\treturn true;\n\t\t}\n\n\t\tpublic boolean isIgnoreMultiplier() {\n\t\t\treturn ignoreMultiplier;\n\t\t}\n\n\t\tpublic void setIgnoreMultiplier(boolean ignoreMultiplier) {\n\t\t\tthis.ignoreMultiplier = ignoreMultiplier;\n\t\t}\n\n\t\tprivate void reset() {\n\t\t\tinventoryCountNow = 0;\n\t\t\tsellOrdersCountNow = 0;\n\t\t\tbuyOrdersCountNow = 0;\n\t\t\tjobsCountNow = 0;\n\t\t\tbuyTransactionsCountNow = 0;\n\t\t\tsellTransactionsCountNow = 0;\n\t\t\tbuyingContractsCountNow = 0;\n\t\t\tboughtContractsCountNow = 0;\n\t\t\tsellingContractsCountNow = 0;\n\t\t\tsoldContractsCountNow = 0;\n\t\t\tprice = 0.0;\n\t\t\tvolume = 0.0f;\n\t\t}\n\n\t\tpublic void updateValues(final double updatePrice, final float updateVolume, Double transactionAveragePrice, PriceData priceData) {\n\t\t\tthis.price = updatePrice;\n\t\t\tthis.volume = updateVolume;\n\t\t\tthis.transactionAveragePrice = transactionAveragePrice;\n\t\t\tthis.priceData = priceData;\n\t\t}\n\n\t\tLong matches(Object object) {\n\t\t\tif (object instanceof MyAsset) {\n\t\t\t\treturn matchesAsset((MyAsset) object, false);\n\t\t\t} else if (object instanceof MyMarketOrder) {\n\t\t\t\treturn matchesMarketOrder((MyMarketOrder) object, false);\n\t\t\t} else if (object instanceof MyIndustryJob) {\n\t\t\t\treturn matchesIndustryJob((MyIndustryJob) object, false);\n\t\t\t} else if (object instanceof MyTransaction) {\n\t\t\t\treturn matchesTransaction((MyTransaction) object, false);\n\t\t\t} else if (object instanceof MyContractItem) {\n\t\t\t\treturn matchesContract((MyContractItem) object, false);\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\n\t\tboolean matchesAsset(MyAsset asset) {\n\t\t\tLong l = matchesAsset(asset, false);\n\t\t\treturn l != null && l > 0;\n\t\t}\n\n\t\tvoid updateAsset(MyAsset asset) {\n\t\t\tmatchesAsset(asset, true);\n\t\t}\n\n\t\tprivate Long matchesAsset(MyAsset asset, boolean add) {\n\t\t\tif (asset != null) { //better safe then sorry\n\t\t\t\treturn matches(add, asset.isBPC() ? -asset.getTypeID() : asset.getTypeID(), asset.getOwnerID(), null, asset.getLocation(), asset, null, null, null, null);\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tvoid updateMarketOrder(final MyMarketOrder marketOrder) {\n\t\t\tmatchesMarketOrder(marketOrder, true);\n\t\t}\n\n\t\tprivate Long matchesMarketOrder(final MyMarketOrder marketOrder, boolean add) {\n\t\t\tif (marketOrder != null) { //better safe then sorry\n\t\t\t\treturn matches(add, marketOrder.getTypeID(), marketOrder.getOwnerID(), null, marketOrder.getLocation(), null, marketOrder, null, null, null);\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tvoid updateIndustryJob(final MyIndustryJob industryJob) {\n\t\t\tmatchesIndustryJob(industryJob, true);\n\t\t}\n\n\t\tprivate Long matchesIndustryJob(final MyIndustryJob industryJob, boolean add) {\n\t\t\tif (industryJob != null) { //better safe then sorry\n\t\t\t\tInteger productTypeID = industryJob.getProductTypeID();\n\t\t\t\tLong productCount = null;\n\t\t\t\tif (productTypeID != null) {\n\t\t\t\t\tproductCount = matches(add, productTypeID, industryJob.getOwnerID(), null, industryJob.getLocation(), null, null, industryJob, null, null);\n\t\t\t\t}\n\t\t\t\tLong runsCount = matches(add, -industryJob.getBlueprintTypeID(), industryJob.getOwnerID(), null, industryJob.getLocation(), null, null, industryJob, null, null);\n\t\t\t\tif (productCount != null && runsCount != null) {\n\t\t\t\t\treturn productCount + runsCount;\n\t\t\t\t} else if (productCount != null) {\n\t\t\t\t\treturn productCount;\n\t\t\t\t} else {\n\t\t\t\t\treturn runsCount; //May be null - that is okay\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tvoid updateTransaction(MyTransaction transaction) {\n\t\t\tmatchesTransaction(transaction, true);\n\t\t}\n\n\t\tprivate Long matchesTransaction(MyTransaction transaction, boolean add) {\n\t\t\tif (transaction != null) { //better safe then sorry\n\t\t\t\treturn matches(add, transaction.getTypeID(), transaction.getOwnerID(), null, transaction.getLocation(), null, null, null, transaction, null);\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tboolean matchesContract(MyContractItem contractItem) {\n\t\t\tLong l = matchesContract(contractItem, false);\n\t\t\treturn l != null && l > 0;\n\t\t}\n\n\t\tvoid updateContract(MyContractItem contractItem) {\n\t\t\tmatchesContract(contractItem, true);\n\t\t}\n\n\t\tprivate Long matchesContract(MyContractItem contractItem, boolean add) {\n\t\t\tif (contractItem != null) { //better safe then sorry\n\t\t\t\treturn matches(add, contractItem.isBPC() ? -contractItem.getTypeID() : contractItem.getTypeID(), contractItem.getContract().isForCorp() ? contractItem.getContract().getIssuerCorpID() : contractItem.getContract().getIssuerID(), null, contractItem.getContract().getLocations(), null, null, null, null, contractItem);\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tprivate Long matches(final boolean add, final int typeID, final Long ownerID, final Integer flagID, final MyLocation location, final MyAsset asset, final MyMarketOrder marketOrder, final MyIndustryJob industryJob, final MyTransaction transaction, final MyContractItem contractItem) {\n\t\t\treturn matches(add, typeID, ownerID, flagID, Collections.singleton(location), asset, marketOrder, industryJob, transaction, contractItem);\n\t\t}\n\n\t\tprivate Long matches(final boolean add, final int typeID, final Long ownerID, final Integer flagID, final Set<MyLocation> locations, final MyAsset asset, final MyMarketOrder marketOrder, final MyIndustryJob industryJob, final MyTransaction transaction, final MyContractItem contractItem) {\n\t\t\tif (stockpile.getFilters().isEmpty()) {\n\t\t\t\treturn null; //All\n\t\t\t}\n\t\t\tif (this.typeID != typeID) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t//Put exclude filters first\n\t\t\tList<StockpileFilter> filters = new ArrayList<>(stockpile.getFilters());\n\t\t\tCollections.sort(filters, new Comparator<StockpileFilter>() {\n\t\t\t\t@Override\n\t\t\t\tpublic int compare(StockpileFilter o1, StockpileFilter o2) {\n\t\t\t\t\tif (o1.isExclude() && o2.isExclude()) {\n\t\t\t\t\t\treturn 0; //Equals\n\t\t\t\t\t} else if (o1.isExclude()) {\n\t\t\t\t\t\treturn -1; //First\n\t\t\t\t\t} else if (o2.isExclude()) {\n\t\t\t\t\t\treturn 1; //Last\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn 0; //Equals\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t//Try to match one of the filters\n\t\t\tfor (StockpileFilter filter : filters) {\n\t\t\t\t//Owner\n\t\t\t\tif (contractItem != null) {\n\t\t\t\t\tlong issuer = contractItem.getContract().isForCorp() ? contractItem.getContract().getIssuerCorpID() : contractItem.getContract().getIssuerID();\n\t\t\t\t\tif (filter.isBoughtContracts() || filter.isBuyingContracts() || filter.isSellingContracts() || filter.isSellingContracts()) {\n\t\t\t\t\t\tif (!matchOwner(filter, issuer) && (contractItem.getContract().getAcceptorID() <= 0 || !matchOwner(filter, contractItem.getContract().getAcceptorID()))) {\n\t\t\t\t\t\t\tcontinue; //Do not match contract owner - try next filter\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (industryJob != null) {\n\t\t\t\t\tif (!matchOwner(filter, ownerID) && !matchOwner(filter, industryJob.getInstallerID())) {\n\t\t\t\t\t\tcontinue; //Do not match owner - try next filter\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (!matchOwner(filter, ownerID)) {\n\t\t\t\t\t\tcontinue; //Do not match owner - try next filter\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t//Container\n\t\t\t\tif (!matchContainer(filter, asset)) {\n\t\t\t\t\tcontinue; //Do not match container - try next filter\n\t\t\t\t}\n\t\t\t\t//Flags\n\t\t\t\tif (asset != null) {\n\t\t\t\t\tif (!matchFlag(filter, asset)) {\n\t\t\t\t\t\tcontinue; //Do not match asset flag - try next filter\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (!matchFlag(filter, flagID)) {\n\t\t\t\t\t\tcontinue; //Do not match flag - try next filter\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t//Singleton\n\t\t\t\tif (asset != null && filter.isSingleton() != null && !filter.isSingleton().equals(asset.isSingleton())) {\n\t\t\t\t\tcontinue; //Do not match - try next filter\n\t\t\t\t}\n\t\t\t\t//Industry Jobs: must complete in less than X days\n\t\t\t\tif (!matchJobsDaysLess(industryJob, filter.getJobsDaysLess())) {\n\t\t\t\t\tcontinue; //Do not match - try next filter\n\t\t\t\t}\n\t\t\t\t//Industry Jobs: must complete in more than X days\n\t\t\t\tif (!matchJobsDaysMore(industryJob, filter.getJobsDaysMore())) {\n\t\t\t\t\tcontinue; //Do not match - try next filter\n\t\t\t\t}\n\t\t\t\t//Location\n\t\t\t\tif (!matchLocation(filter, locations)) {\n\t\t\t\t\tcontinue; //Do not match location - try next filter\n\t\t\t\t}\n\t\t\t\t//Exclude\n\t\t\t\tif (filter.isExclude()) {\n\t\t\t\t\treturn null; //Match exclude filter AKA do not match any following filters\n\t\t\t\t}\n\t\t\t\tlong count = 0;\n\t\t\t\t//Assets\n\t\t\t\tif (asset != null) {\n\t\t\t\t\tif (runs && typeID < 0) { //BPC Runs\n\t\t\t\t\t\tif (filter.isAssets() && asset.isBPC()) {\n\t\t\t\t\t\t\tif (add) { //Match\n\t\t\t\t\t\t\t\tinventoryCountNow = inventoryCountNow + asset.getRuns();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcount = count + asset.getRuns();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (filter.isAssets()) {\n\t\t\t\t\t\tif (add) { //Match\n\t\t\t\t\t\t\tinventoryCountNow = inventoryCountNow + asset.getCount();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcount = count + asset.getCount();\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontinue; //Do not match - try next filter\n\t\t\t\t\t}\n\t\t\t\t //Jobs\n\t\t\t\t} else if (industryJob != null) {\n\t\t\t\t\t//Note: Industry jobs are also filtered for isNotDeliveredToAssets() in StockpileData.updateStockpileItems(Stockpile, boolean)\n\t\t\t\t\tif (typeID < 0) { //Copying in progress (not delivered to assets)\n\t\t\t\t\t\tif (filter.isJobs() && industryJob.isCopying() && industryJob.isNotDeliveredToAssets()) {\n\t\t\t\t\t\t\tif (runs) { //BPC Runs\n\t\t\t\t\t\t\t\tif (add) { //Match\n\t\t\t\t\t\t\t\t\tjobsCountNow = jobsCountNow + ((long)industryJob.getRuns() * (long)industryJob.getLicensedRuns());\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcount = count + ((long)industryJob.getRuns() * (long)industryJob.getLicensedRuns());\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else { //BPC\n\t\t\t\t\t\t\t\tif (add) { //Match\n\t\t\t\t\t\t\t\t\tjobsCountNow = jobsCountNow + (long)industryJob.getRuns();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcount = count + (long)industryJob.getRuns();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t//Manufacturing in progress (not delivered to assets)\n\t\t\t\t\t//Note: Industry jobs are also filtered for isNotDeliveredToAssets() in StockpileData.updateStockpileItems(Stockpile, boolean)\n\t\t\t\t\t} else if (filter.isJobs() && industryJob.isManufacturing() && industryJob.isNotDeliveredToAssets()) {\n\t\t\t\t\t\tif (add) { //Match\n\t\t\t\t\t\t\tjobsCountNow = jobsCountNow + ((long)industryJob.getRuns() * (long)industryJob.getProductQuantity());\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcount = count + ((long)industryJob.getRuns() * (long)industryJob.getProductQuantity());\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontinue; //Do not match - try next filter\n\t\t\t\t\t}\n\t\t\t\t//Orders\n\t\t\t\t} else if (marketOrder != null) {\n\t\t\t\t\tif (runs && typeID < 0) {\n\t\t\t\t\t\tcontinue; //Ignore BPC runs (Can't sell BPC)\n\t\t\t\t\t}\n\t\t\t\t\t//Note: Market orders are also filtered for isActive() in StockpileData.updateStockpileItems(Stockpile, boolean)\n\t\t\t\t\tif (!marketOrder.isBuyOrder() && marketOrder.isActive() && filter.isSellOrders()) {\n\t\t\t\t\t\tif (add) { //Open/Active sell order - match\n\t\t\t\t\t\t\tsellOrdersCountNow = sellOrdersCountNow + marketOrder.getVolumeRemain();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcount = count + marketOrder.getVolumeRemain();\n\t\t\t\t\t\t}\n\t\t\t\t\t//Note: Market orders are also filtered for isActive() in StockpileData.updateStockpileItems(Stockpile, boolean)\n\t\t\t\t\t} else if (marketOrder.isBuyOrder() && marketOrder.isActive() && filter.isBuyOrders()) {\n\t\t\t\t\t\tif (add) { //Open/Active buy order - match\n\t\t\t\t\t\t\tbuyOrdersCountNow = buyOrdersCountNow + marketOrder.getVolumeRemain();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcount = count + marketOrder.getVolumeRemain();\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontinue; //Do not match - try next filter\n\t\t\t\t\t}\n\t\t\t\t//Transactions\n\t\t\t\t} else if (transaction != null) {\n\t\t\t\t\tif (runs && typeID < 0) {\n\t\t\t\t\t\tcontinue; //Ignore BPC runs (Can't sell BPC)\n\t\t\t\t\t}\n\t\t\t\t\t//Note: Transactions are also filter for isAfterAssets() in StockpileData.updateStockpileItems(Stockpile, boolean)\n\t\t\t\t\tif (transaction.isAfterAssets() && transaction.isBuy() && filter.isBuyTransactions()) {\n\t\t\t\t\t\tif (add) { //Buy - match\n\t\t\t\t\t\t\tbuyTransactionsCountNow = buyTransactionsCountNow + transaction.getQuantity();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcount = count + transaction.getQuantity();\n\t\t\t\t\t\t}\n\t\t\t\t\t//Note: Transactions are also filter for isAfterAssets() in StockpileData.updateStockpileItems(Stockpile, boolean)\n\t\t\t\t\t} else if (transaction.isAfterAssets() && transaction.isSell() && filter.isSellTransactions()) {\n\t\t\t\t\t\tif (add) { //Sell - match\n\t\t\t\t\t\t\tsellTransactionsCountNow = sellTransactionsCountNow - transaction.getQuantity();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcount = count + -transaction.getQuantity();\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontinue; //Do not match - try next filter\n\t\t\t\t\t}\n\t\t\t\t//Contracts\n\t\t\t\t} else if (contractItem != null) {\n\t\t\t\t\tif (runs && typeID < 0) {\n\t\t\t\t\t\tcontinue; //Ignore BPC runs (We don't have blueprint info for contracts - yet)\n\t\t\t\t\t}\n\t\t\t\t\tboolean found = false;\n\t\t\t\t\t//Get issuer\n\t\t\t\t\tlong issuer = contractItem.getContract().isForCorp() ? contractItem.getContract().getIssuerCorpID() : contractItem.getContract().getIssuerID();\n\t\t\t\t\t//Only match owners once\n\t\t\t\t\tboolean isIssuer = matchOwner(filter, issuer);\n\t\t\t\t\tboolean isAcceptor = contractItem.getContract().getAcceptorID() > 0 && matchOwner(filter, contractItem.getContract().getAcceptorID());\n\t\t\t\t\t//Sell: Issuer Included or Acceptor Excluded\n\t\t\t\t\tif ((isIssuer && contractItem.isIncluded()) || (isAcceptor && !contractItem.isIncluded())) {\n\t\t\t\t\t\t//Note: Contract items are also filter for isOpen() in StockpileData.updateStockpileItems(Stockpile, boolean)\n\t\t\t\t\t\tif (contractItem.getContract().isOpen() && filter.isSellingContracts()) {\n\t\t\t\t\t\t\tif (add) { //Selling\n\t\t\t\t\t\t\t\tsellingContractsCountNow = sellingContractsCountNow + contractItem.getQuantity();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcount = count + contractItem.getQuantity();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\t//Note: Contract items are also filter for isCompletedSuccessful() in StockpileData.updateStockpileItems(Stockpile, boolean)\n\t\t\t\t\t\t} else if (contractItem.getContract().isCompletedSuccessful() && filter.isSoldContracts()) { //Sold\n\t\t\t\t\t\t\tif ((isIssuer && contractItem.getContract().isIssuerAfterAssets())\n\t\t\t\t\t\t\t\t\t|| isAcceptor && contractItem.getContract().isAcceptorAfterAssets()) {\n\t\t\t\t\t\t\t\tif (add) {\n\t\t\t\t\t\t\t\t\tsoldContractsCountNow = soldContractsCountNow - contractItem.getQuantity();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcount = count + -contractItem.getQuantity();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//Buy: Issuer Excluded or Acceptor Included\n\t\t\t\t\tif ((isIssuer && !contractItem.isIncluded()) || (isAcceptor && contractItem.isIncluded())) {\n\t\t\t\t\t\t//Note: Contract items are also filter for isOpen() in StockpileData.updateStockpileItems(Stockpile, boolean)\n\t\t\t\t\t\tif (contractItem.getContract().isOpen() && filter.isBuyingContracts()) {\n\t\t\t\t\t\t\tif (add) { //Buying\n\t\t\t\t\t\t\t\tbuyingContractsCountNow = buyingContractsCountNow + contractItem.getQuantity();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcount = count + contractItem.getQuantity();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\t//Note: Contract items are also filter for isCompletedSuccessful() in StockpileData.updateStockpileItems(Stockpile, boolean)\n\t\t\t\t\t\t} else if (contractItem.getContract().isCompletedSuccessful() && filter.isBoughtContracts()) { //Bought\n\t\t\t\t\t\t\tif ((isIssuer && contractItem.getContract().isIssuerAfterAssets())\n\t\t\t\t\t\t\t\t\t|| isAcceptor && contractItem.getContract().isAcceptorAfterAssets()) {\n\t\t\t\t\t\t\t\tif (add) {\n\t\t\t\t\t\t\t\t\tboughtContractsCountNow = boughtContractsCountNow + contractItem.getQuantity();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcount = count + contractItem.getQuantity();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!found) {\n\t\t\t\t\t\tcontinue; //Do not match - try next filter\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn count; //Filter matched - Items added\n\t\t\t}\n\t\t\treturn null; //Nothing matched, nothing added\n\t\t}\n\n\t\tprivate boolean matchOwner(final StockpileFilter filter, final Long ownerID) {\n\t\t\tif (ownerID == null) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (filter.getOwnerIDs().isEmpty()) {\n\t\t\t\treturn true; //All\n\t\t\t}\n\t\t\tfor (Long stockpileOwnerID : filter.getOwnerIDs()) {\n\t\t\t\tif (stockpileOwnerID.equals(ownerID)) { //Match\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false; //No match\n\t\t}\n\n\t\tprivate boolean matchContainer(final StockpileFilter filter, final MyAsset asset) {\n\t\t\tif (asset == null) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (filter.getContainers().isEmpty()) {\n\t\t\t\treturn true; //All\n\t\t\t}\n\n\t\t\t//Build include container String\n\t\t\tString container = asset.getContainer().toLowerCase();\n\n\t\t\tfor (StockpileContainer stockpileContainer : filter.getContainers()) {\n\t\t\t\tif (container.endsWith(stockpileContainer.getCompare())) { //Match\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (stockpileContainer.isIncludeSubs() && container.contains(stockpileContainer.getCompare())) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false; //No match\n\t\t}\n\n\t\tprivate boolean matchFlag(final StockpileFilter filter, final Integer flagID) {\n\t\t\tif (flagID == null) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (filter.getFlags().isEmpty()) {\n\t\t\t\treturn true; //All\n\t\t\t}\n\n\t\t\tfor (StockpileFlag flag : filter.getFlags()) {\n\t\t\t\tif (flagID.equals(flag.getFlagID())) { //Match\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false; //No match\n\t\t}\n\n\t\tprivate boolean matchFlag(final StockpileFilter filter, final MyAsset asset) {\n\t\t\tif (asset == null) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (filter.getFlags().isEmpty()) {\n\t\t\t\treturn true; //All\n\t\t\t}\n\t\t\tfor (StockpileFlag flag : filter.getFlags()) {\n\t\t\t\tif (asset.getFlagID() == flag.getFlagID()) { //Match self\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (flag.isIncludeSubs()) {\n\t\t\t\t\tfor (MyAsset parentAsset : asset.getParents()) { //Test parents\n\t\t\t\t\t\tif (parentAsset.getFlagID() == flag.getFlagID()) { //Match parent\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false; //No match\n\t\t}\n\n\t\tprivate boolean matchLocation(final StockpileFilter filter, final Collection<MyLocation> locations) {\n\t\t\tMyLocation stockpileLocation = filter.getLocation();\n\t\t\tfor (MyLocation location : locations) {\n\t\t\t\tif (filter.getLocation().isEmpty()) {\n\t\t\t\t\treturn true; //Nothing selected - always match (Univers/Galaxy)\n\t\t\t\t}\n\t\t\t\tif (stockpileLocation.getLocation().equals(location.getStation())) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (stockpileLocation.getLocation().equals(location.getSystem())) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (stockpileLocation.getLocation().equals(location.getConstellation())) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (stockpileLocation.getLocation().equals(location.getRegion())) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tprivate boolean matchJobsDaysLess(final MyIndustryJob industryJob, Integer jobsDays) {\n\t\t\tif (jobsDays == null || industryJob == null || industryJob.getEndDate() == null) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tCALENDAR.setTime(new Date());\n\t\t\tCALENDAR.set(Calendar.HOUR_OF_DAY, 23); //Less than -> End of day -> OK\n\t\t\tCALENDAR.set(Calendar.MINUTE, 59);\n\t\t\tCALENDAR.set(Calendar.SECOND, 59);\n\t\t\tCALENDAR.set(Calendar.MILLISECOND, 999);\n\t\t\tCALENDAR.add(Calendar.DAY_OF_MONTH, jobsDays);\n\t\t\treturn industryJob.getEndDate().before(CALENDAR.getTime()); //End before X days\n\t\t}\n\n\t\tprivate boolean matchJobsDaysMore(final MyIndustryJob industryJob, Integer jobsDays) {\n\t\t\tif (jobsDays == null || industryJob == null || industryJob.getEndDate() == null) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tCALENDAR.setTime(new Date());\n\t\t\tCALENDAR.set(Calendar.HOUR_OF_DAY, 0); //More than -> Start of day -> OK\n\t\t\tCALENDAR.set(Calendar.MINUTE, 0);\n\t\t\tCALENDAR.set(Calendar.SECOND, 0);\n\t\t\tCALENDAR.set(Calendar.MILLISECOND, 0);\n\t\t\tCALENDAR.add(Calendar.DAY_OF_MONTH, jobsDays);\n\t\t\treturn industryJob.getEndDate().after(CALENDAR.getTime()); //End after X days\n\t\t}\n\n\t\tpublic void setCountMinimum(final double countMinimum) {\n\t\t\tthis.countMinimum = countMinimum;\n\t\t\tthis.getStockpile().updateTotal();\n\t\t}\n\n\t\tpublic void addCountMinimum(final double countMinimum) {\n\t\t\tthis.countMinimum = this.countMinimum + countMinimum;\n\t\t\tthis.getStockpile().updateTotal();\n\t\t}\n\n\t\tpublic String getSeparator() {\n\t\t\tString group = getGroup();\n\t\t\tif (group.isEmpty() || Settings.get().getStockpileGroupSettings().isGroupExpanded(group)) {\n\t\t\t\treturn group + \"\\r\\n\" + stockpile.getName().toLowerCase() + \"\\r\\n\" + stockpile.getName(); //Sort lower case, but unique by case\n\t\t\t} else { //Collapsed Group (everything in a single group)\n\t\t\t\treturn group + \"\\r\\n\";\n\t\t\t}\n\t\t}\n\n\t\tpublic boolean isGroupCollapsed(boolean expand) {\n\t\t\tString group = getGroup();\n\t\t\treturn !Settings.get().getStockpileGroupSettings().isGroupExpanded(group);\n\t\t}\n\n\t\tpublic String getGroup() {\n\t\t\treturn Settings.get().getStockpileGroupSettings().getGroup(stockpile);\n\t\t}\n\n\t\tpublic Stockpile getStockpile() {\n\t\t\treturn stockpile;\n\t\t}\n\n\t\tpublic void setRuns(boolean runs) {\n\t\t\tthis.runs = runs;\n\t\t}\n\n\t\tpublic boolean isRuns() {\n\t\t\treturn runs;\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean isBPC() {\n\t\t\treturn (typeID < 0);\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean isBPO() {\n\t\t\treturn isBlueprint() && !isBPC();\n\t\t}\n\n\t\t@Override\n\t\tpublic int getRuns() {\n\t\t\treturn -1;\n\t\t}\n\n\t\t@Override\n\t\tpublic int getMaterialEfficiency() {\n\t\t\treturn 0;\n\t\t}\n\n\t\t@Override\n\t\tpublic int getTimeEfficiency() {\n\t\t\treturn 0;\n\t\t}\n\n\t\tpublic boolean isBlueprint() {\n\t\t\treturn item.isBlueprint();\n\t\t}\n\n\t\tpublic String getName() {\n\t\t\tif (isBPC()) { //Blueprint copy\n\t\t\t\tif (runs) {\n\t\t\t\t\treturn item.getTypeName() + \" (Runs)\";\n\t\t\t\t} else {\n\t\t\t\t\treturn item.getTypeName() + \" (BPC)\";\n\t\t\t\t}\n\t\t\t} else if (isBPO()) { //Blueprint original\n\t\t\t\treturn item.getTypeName() + \" (BPO)\";\n\t\t\t} else { //Everything else\n\t\t\t\treturn item.getTypeName();\n\t\t\t}\n\t\t}\n\n\t\tpublic double getCountMinimum() {\n\t\t\treturn countMinimum;\n\t\t}\n\n\t\tpublic long getCountMinimumMultiplied() {\n\t\t\tif (isIgnoreMultiplier()) {\n\t\t\t\treturn (long) Math.ceil(countMinimum);\n\t\t\t} else {\n\t\t\t\treturn (long) Math.ceil(stockpile.getMultiplier() * countMinimum);\n\t\t\t}\n\t\t}\n\n\t\tpublic long getCountNow() {\n\t\t\treturn inventoryCountNow\n\t\t\t\t\t+ buyOrdersCountNow\n\t\t\t\t\t+ sellOrdersCountNow\n\t\t\t\t\t+ jobsCountNow\n\t\t\t\t\t+ buyTransactionsCountNow\n\t\t\t\t\t+ sellTransactionsCountNow\n\t\t\t\t\t+ buyingContractsCountNow\n\t\t\t\t\t+ boughtContractsCountNow\n\t\t\t\t\t+ sellingContractsCountNow\n\t\t\t\t\t+ soldContractsCountNow\n\t\t\t\t\t;\n\t\t}\n\n\t\tpublic double getPercentNeeded() {\n\t\t\tlong countNow = getCountNow();\n\t\t\tlong countMinimumMultiplied = getCountMinimumMultiplied();\n\t\t\tif (countMinimumMultiplied == 0) {\n\t\t\t\treturn 100;\n\t\t\t} else if (countNow == 0) {\n\t\t\t\treturn 0;\n\t\t\t} else {\n\t\t\t\treturn countNow / (double) countMinimumMultiplied;\n\t\t\t}\n\t\t}\n\n\t\tpublic long getInventoryCountNow() {\n\t\t\treturn inventoryCountNow;\n\t\t}\n\n\t\tpublic long getBuyOrdersCountNow() {\n\t\t\treturn buyOrdersCountNow;\n\t\t}\n\n\t\tpublic long getSellOrdersCountNow() {\n\t\t\treturn sellOrdersCountNow;\n\t\t}\n\n\t\tpublic long getJobsCountNow() {\n\t\t\treturn jobsCountNow;\n\t\t}\n\n\t\tpublic long getBuyTransactionsCountNow() {\n\t\t\treturn buyTransactionsCountNow;\n\t\t}\n\n\t\tpublic long getSellTransactionsCountNow() {\n\t\t\treturn sellTransactionsCountNow;\n\t\t}\n\n\t\tpublic long getBuyingContractsCountNow() {\n\t\t\treturn buyingContractsCountNow;\n\t\t}\n\n\t\tpublic long getBoughtContractsCountNow() {\n\t\t\treturn boughtContractsCountNow;\n\t\t}\n\n\t\tpublic long getSellingContractsCountNow() {\n\t\t\treturn sellingContractsCountNow;\n\t\t}\n\n\t\tpublic long getSoldContractsCountNow() {\n\t\t\treturn soldContractsCountNow;\n\t\t}\n\n\t\tpublic long getCountNeeded() {\n\t\t\treturn getCountNow() - getCountMinimumMultiplied();\n\t\t}\n\n\t\t@Override\n\t\tpublic Double getDynamicPrice() {\n\t\t\treturn price;\n\t\t}\n\n\t\tpublic double getPriceBuyMax() {\n\t\t\treturn priceData.getBuyMax();\n\t\t}\n\n\t\tpublic double getPriceSellMin() {\n\t\t\treturn priceData.getSellMin();\n\t\t}\n\n\t\tpublic Double getTransactionAveragePrice() {\n\t\t\treturn transactionAveragePrice;\n\t\t}\n\n\t\tpublic TypeIdentifier getType() {\n\t\t\treturn type;\n\t\t}\n\n\t\tpublic int getItemTypeID() {\n\t\t\treturn typeID;\n\t\t}\n\n\t\t@Override\n\t\tpublic Integer getTypeID() {\n\t\t\treturn Math.abs(typeID);\n\t\t}\n\n\t\tpublic boolean isTotal() {\n\t\t\treturn typeID == 0;\n\t\t}\n\n\t\tpublic double getVolume() {\n\t\t\tif (runs) {\n\t\t\t\treturn 0.0;\n\t\t\t} else {\n\t\t\t\treturn volume;\n\t\t\t}\n\t\t}\n\n\t\tpublic double getValueNow() {\n\t\t\treturn getCountNow() * price;\n\t\t}\n\n\t\tpublic double getValueNeeded() {\n\t\t\treturn getCountNeeded() * price;\n\t\t}\n\n\t\tpublic double getVolumeNow() {\n\t\t\treturn getCountNow() * getVolume();\n\t\t}\n\n\t\tpublic double getVolumeNeeded() {\n\t\t\treturn getCountNeeded() * getVolume();\n\t\t}\n\n\t\tpublic long getID() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic Integer getMeta() {\n\t\t\treturn item.getMeta();\n\t\t}\n\n\t\tpublic static long getNewID() {\n\t\t\tlong micros = System.currentTimeMillis() * 1000;\n\t\t\tfor ( ; ; ) {\n\t\t\t\tlong value = TS.get();\n\t\t\t\tif (micros <= value)\n\t\t\t\t\tmicros = value + 1;\n\t\t\t\tif (TS.compareAndSet(value, micros))\n\t\t\t\t\treturn micros;\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic Tags getTags() {\n\t\t\treturn tags;\n\t\t}\n\n\t\t@Override\n\t\tpublic void setTags(Tags tags) {\n\t\t\tthis.tags = tags;\n\t\t}\n\n\t\t@Override\n\t\tpublic TagID getTagID() {\n\t\t\treturn new TagID(StockpileTab.NAME, getID());\n\t\t}\n\n\t\t@Override\n\t\tpublic Item getItem() {\n\t\t\treturn item;\n\t\t}\n\n\t\t@Override\n\t\tpublic long getItemCount() {\n\t\t\treturn getCountNeeded();\n\t\t}\n\n\t\t@Override\n\t\tpublic Set<MyLocation> getLocations() {\n\t\t\treturn stockpile.getLocations();\n\t\t}\n\n\t\t@Override\n\t\tpublic Set<Long> getOwners() {\n\t\t\treturn stockpile.getOwners();\n\t\t}\n\n\t\t@Override\n\t\tpublic String getCopyString() {\n\t\t\tStringBuilder builder = new StringBuilder();\n\t\t\tbuilder.append(getStockpile().getName());\n\t\t\tbuilder.append(\"\\t\");\n\t\t\tbuilder.append(getStockpile().getOwnerName());\n\t\t\tbuilder.append(\"\\t\");\n\t\t\tbuilder.append(getStockpile().getLocationName());\n\t\t\treturn builder.toString();\n\t\t}\n\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\treturn getName();\n\t\t}\n\n\t\t@Override\n\t\tpublic int hashCode() {\n\t\t\tint hash = 5;\n\t\t\thash = 97 * hash + Objects.hashCode(this.stockpile);\n\t\t\thash = 97 * hash + this.typeID;\n\t\t\thash = 97 * hash + (this.runs ? 1 : 0);\n\t\t\treturn hash;\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean equals(Object obj) {\n\t\t\tif (this == obj) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (obj == null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (getClass() != obj.getClass()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfinal StockpileItem other = (StockpileItem) obj;\n\t\t\tif (this.typeID != other.typeID) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (this.runs != other.runs) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (!Objects.equals(this.stockpile, other.stockpile)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\t@Override\n\t\tpublic int compareTo(final StockpileItem item) {\n\t\t\t//Compare groups\n\t\t\tint value = getItem().getGroup().compareToIgnoreCase(item.getItem().getGroup());\n\t\t\tif (value != 0) { //Not same group\n\t\t\t\treturn value;\n\t\t\t} else { //Same group - compare names\n\t\t\t\treturn this.getName().compareToIgnoreCase(item.getName());\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class StockpileTotal extends StockpileItem {\n\n\t\tprivate long inventoryCountNow = 0;\n\t\tprivate long sellOrdersCountNow = 0;\n\t\tprivate long buyOrdersCountNow = 0;\n\t\tprivate long jobsCountNow = 0;\n\t\tprivate long buyTransactionsCountNow = 0;\n\t\tprivate long sellTransactionsCountNow = 0;\n\t\tprivate long buyingContractsCountNow = 0;\n\t\tprivate long boughtContractsCountNow = 0;\n\t\tprivate long sellingContractsCountNow = 0;\n\t\tprivate long soldContractsCountNow = 0;\n\t\tprivate long countNeeded = 0;\n\t\tprivate double countMinimum = 0;\n\t\tprivate long countMinimumMultiplied = 0;\n\t\tprivate double totalPrice;\n\t\tprivate double totalPriceSellMin;\n\t\tprivate double totalPriceBuyMax;\n\t\tprivate double totalPriceCount;\n\t\tprivate double valueNow = 0;\n\t\tprivate double valueNeeded = 0;\n\t\tprivate double volumeNow = 0;\n\t\tprivate double volumeNeeded = 0;\n\n\t\tpublic StockpileTotal(final Stockpile stockpile) {\n\t\t\tsuper(stockpile, new Item(0), 0, 0, false, false, 0);\n\t\t}\n\n\t\tprivate void reset() {\n\t\t\tinventoryCountNow = 0;\n\t\t\tsellOrdersCountNow = 0;\n\t\t\tbuyOrdersCountNow = 0;\n\t\t\tjobsCountNow = 0;\n\t\t\tcountNeeded = 0;\n\t\t\tcountMinimum = 0;\n\t\t\ttotalPrice = 0;\n\t\t\ttotalPriceSellMin = 0;\n\t\t\ttotalPriceBuyMax = 0;\n\t\t\ttotalPriceCount = 0;\n\t\t\tvalueNow = 0;\n\t\t\tvalueNeeded = 0;\n\t\t\tvolumeNow = 0;\n\t\t\tvolumeNeeded = 0;\n\t\t\tcountMinimumMultiplied = 0;\n\t\t\tbuyTransactionsCountNow = 0;\n\t\t\tsellTransactionsCountNow = 0;\n\t\t\tbuyingContractsCountNow = 0;\n\t\t\tboughtContractsCountNow = 0;\n\t\t\tsellingContractsCountNow = 0;\n\t\t\tsoldContractsCountNow = 0;\n\t\t}\n\n\t\tprivate void updateTotal(final StockpileItem item) {\n\t\t\t//Assets\n\t\t\tinventoryCountNow = inventoryCountNow + item.getInventoryCountNow();\n\t\t\t//Market Orders\n\t\t\tsellOrdersCountNow = sellOrdersCountNow + item.getSellOrdersCountNow();\n\t\t\t//Buy Order\n\t\t\tbuyOrdersCountNow = buyOrdersCountNow + item.getBuyOrdersCountNow();\n\t\t\t//Jobs\n\t\t\tjobsCountNow = jobsCountNow + item.getJobsCountNow();\n\t\t\t//Transactions\n\t\t\tbuyTransactionsCountNow = buyTransactionsCountNow + item.getBuyTransactionsCountNow();\n\t\t\tsellTransactionsCountNow = sellTransactionsCountNow + item.getSellTransactionsCountNow();\n\t\t\t//Contracts\n\t\t\tbuyingContractsCountNow = buyingContractsCountNow + item.getBuyingContractsCountNow();\n\t\t\tboughtContractsCountNow = boughtContractsCountNow + item.getBoughtContractsCountNow();\n\t\t\tsellingContractsCountNow = sellingContractsCountNow + item.getSellingContractsCountNow();\n\t\t\tsoldContractsCountNow = soldContractsCountNow + item.getSoldContractsCountNow();\n\t\t\t//Only add if negative\n\t\t\tif (item.getCountNeeded() < 0) {\n\t\t\t\tcountNeeded = countNeeded + item.getCountNeeded();\n\t\t\t}\n\t\t\tcountMinimum = countMinimum + item.getCountMinimum();\n\t\t\tcountMinimumMultiplied = countMinimumMultiplied + item.getCountMinimumMultiplied();\n\t\t\ttotalPrice = totalPrice + item.getDynamicPrice();\n\t\t\ttotalPriceSellMin = totalPriceSellMin + item.getPriceSellMin();\n\t\t\ttotalPriceBuyMax = totalPriceBuyMax + item.getPriceBuyMax();\n\t\t\ttotalPriceCount++;\n\t\t\tvalueNow = valueNow + item.getValueNow();\n\t\t\t//Only add if negative\n\t\t\tif (item.getValueNeeded() < 0) {\n\t\t\t\tvalueNeeded = valueNeeded + item.getValueNeeded();\n\t\t\t}\n\t\t\tvolumeNow = volumeNow + item.getVolumeNow();\n\t\t\t//Only add if negative\n\t\t\tif (item.getVolumeNeeded() < 0) {\n\t\t\t\tvolumeNeeded = volumeNeeded + item.getVolumeNeeded();\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic JButton getButton() {\n\t\t\tif (jButton == null) { //Soft init\n\t\t\t\tjButton = new JButtonNull();\n\t\t\t}\n\t\t\treturn jButton;\n\t\t}\n\n\t\t@Override\n\t\tpublic void setTags(Tags tags) { }\n\n\t\t@Override\n\t\tpublic Tags getTags() {\n\t\t\treturn null;\n\t\t}\n\n\t\t@Override\n\t\tpublic String getName() {\n\t\t\treturn TabsStockpile.get().totalStockpile();\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean isEditable() {\n\t\t\treturn false;\n\t\t}\n\n\t\t@Override\n\t\tpublic double getCountMinimum() {\n\t\t\treturn countMinimum;\n\t\t}\n\n\t\t@Override\n\t\tpublic long getCountMinimumMultiplied() {\n\t\t\treturn countMinimumMultiplied;\n\t\t}\n\n\t\t@Override\n\t\tpublic long getCountNeeded() {\n\t\t\treturn countNeeded;\n\t\t}\n\n\t\t@Override\n\t\tpublic long getCountNow() {\n\t\t\treturn inventoryCountNow\n\t\t\t\t\t+ buyOrdersCountNow\n\t\t\t\t\t+ sellOrdersCountNow\n\t\t\t\t\t+ jobsCountNow\n\t\t\t\t\t+ buyTransactionsCountNow\n\t\t\t\t\t+ sellTransactionsCountNow\n\t\t\t\t\t+ buyingContractsCountNow\n\t\t\t\t\t+ boughtContractsCountNow\n\t\t\t\t\t+ sellingContractsCountNow\n\t\t\t\t\t+ soldContractsCountNow\n\t\t\t\t\t;\n\t\t}\n\n\t\t@Override\n\t\tpublic long getInventoryCountNow() {\n\t\t\treturn inventoryCountNow;\n\t\t}\n\n\t\t@Override\n\t\tpublic long getBuyOrdersCountNow() {\n\t\t\treturn buyOrdersCountNow;\n\t\t}\n\n\t\t@Override\n\t\tpublic long getJobsCountNow() {\n\t\t\treturn jobsCountNow;\n\t\t}\n\n\t\t@Override\n\t\tpublic long getSellOrdersCountNow() {\n\t\t\treturn sellOrdersCountNow;\n\t\t}\n\n\t\t@Override\n\t\tpublic long getSoldContractsCountNow() {\n\t\t\treturn soldContractsCountNow;\n\t\t}\n\n\t\t@Override\n\t\tpublic long getSellingContractsCountNow() {\n\t\t\treturn sellingContractsCountNow;\n\t\t}\n\n\t\t@Override\n\t\tpublic long getBoughtContractsCountNow() {\n\t\t\treturn boughtContractsCountNow;\n\t\t}\n\n\t\t@Override\n\t\tpublic long getBuyingContractsCountNow() {\n\t\t\treturn buyingContractsCountNow;\n\t\t}\n\n\t\t@Override\n\t\tpublic long getSellTransactionsCountNow() {\n\t\t\treturn sellTransactionsCountNow;\n\t\t}\n\n\t\t@Override\n\t\tpublic long getBuyTransactionsCountNow() {\n\t\t\treturn buyTransactionsCountNow;\n\t\t}\n\n\t\t@Override\n\t\tpublic Double getDynamicPrice() {\n\t\t\tif (totalPriceCount <= 0 || totalPrice <= 0) {\n\t\t\t\treturn 0.0;\n\t\t\t} else {\n\t\t\t\treturn totalPrice / totalPriceCount;\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic double getPriceSellMin() {\n\t\t\tif (totalPriceCount <= 0 || totalPriceSellMin <= 0) {\n\t\t\t\treturn 0.0;\n\t\t\t} else {\n\t\t\t\treturn totalPriceSellMin / totalPriceCount;\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic double getPriceBuyMax() {\n\t\t\tif (totalPriceCount <= 0 || totalPriceBuyMax <= 0) {\n\t\t\t\treturn 0.0;\n\t\t\t} else {\n\t\t\t\treturn totalPriceBuyMax / totalPriceCount;\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic double getValueNeeded() {\n\t\t\treturn valueNeeded;\n\t\t}\n\n\t\t@Override\n\t\tpublic double getValueNow() {\n\t\t\treturn valueNow;\n\t\t}\n\n\t\t@Override\n\t\tpublic double getVolumeNeeded() {\n\t\t\treturn volumeNeeded;\n\t\t}\n\n\t\t@Override\n\t\tpublic double getVolumeNow() {\n\t\t\treturn volumeNow;\n\t\t}\n\n\t\t@Override\n\t\tpublic double getPercentNeeded() {\n\t\t\treturn getStockpile().getPercentFull();\n\t\t}\n\n\t\t@Override\n\t\tpublic Integer getMeta() {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic static class StockpileFilter {\n\t\tprivate MyLocation location;\n\t\tprivate final boolean exclude;\n\t\tprivate final List<StockpileFlag> flags;\n\t\tprivate final List<StockpileContainer> containers;\n\t\tprivate final List<Long> ownerIDs;\n\t\tprivate final Integer jobsDaysLess;\n\t\tprivate final Integer jobsDaysMore;\n\t\tprivate final Boolean singleton;\n\t\tprivate final boolean assets;\n\t\tprivate final boolean sellOrders;\n\t\tprivate final boolean buyOrders;\n\t\tprivate final boolean buyTransactions;\n\t\tprivate final boolean sellTransactions;\n\t\tprivate final boolean jobs;\n\t\tprivate final boolean sellingContracts;\n\t\tprivate final boolean soldContracts;\n\t\tprivate final boolean buyingContracts;\n\t\tprivate final boolean boughtContracts;\n\n\n\t\tpublic StockpileFilter(MyLocation location, boolean exclude, List<StockpileFlag> flags, List<StockpileContainer> containers, List<Long> ownerIDs, Integer jobsDaysLess, Integer jobsDaysMore, Boolean singleton, boolean assets, boolean sellOrders, boolean buyOrders, boolean jobs, boolean buyTransactions, boolean sellTransactions, boolean sellingContracts, boolean soldContracts, boolean buyingContracts, boolean boughtContracts) {\n\t\t\tthis.location = location;\n\t\t\tthis.exclude = exclude;\n\t\t\tthis.flags = flags;\n\t\t\tthis.containers = containers;\n\t\t\tthis.ownerIDs = ownerIDs;\n\t\t\tthis.jobsDaysLess = jobsDaysLess;\n\t\t\tthis.jobsDaysMore = jobsDaysMore;\n\t\t\tthis.singleton = singleton;\n\t\t\tthis.assets = assets;\n\t\t\tthis.sellOrders = sellOrders;\n\t\t\tthis.buyOrders = buyOrders;\n\t\t\tthis.jobs = jobs;\n\t\t\tthis.buyTransactions = buyTransactions;\n\t\t\tthis.sellTransactions = sellTransactions;\n\t\t\tthis.sellingContracts = sellingContracts;\n\t\t\tthis.soldContracts = soldContracts;\n\t\t\tthis.buyingContracts = buyingContracts;\n\t\t\tthis.boughtContracts = boughtContracts;\n\t\t}\n\n\t\tpublic MyLocation getLocation() {\n\t\t\treturn location;\n\t\t}\n\n\t\tprivate void setLocation(MyLocation location) {\n\t\t\tthis.location = location;\n\t\t}\n\n\t\tpublic boolean isExclude() {\n\t\t\treturn exclude;\n\t\t}\n\n\t\tpublic List<StockpileFlag> getFlags() {\n\t\t\treturn flags;\n\t\t}\n\n\t\tpublic List<StockpileContainer> getContainers() {\n\t\t\treturn containers;\n\t\t}\n\n\t\tpublic List<Long> getOwnerIDs() {\n\t\t\treturn ownerIDs;\n\t\t}\n\n\t\tpublic Integer getJobsDaysLess() {\n\t\t\treturn jobsDaysLess;\n\t\t}\n\n\t\tpublic Integer getJobsDaysMore() {\n\t\t\treturn jobsDaysMore;\n\t\t}\n\n\t\tpublic Boolean isSingleton() {\n\t\t\treturn singleton;\n\t\t}\n\n\t\tpublic boolean isAssets() {\n\t\t\treturn assets;\n\t\t}\n\n\t\tpublic boolean isSellOrders() {\n\t\t\treturn sellOrders;\n\t\t}\n\n\t\tpublic boolean isBuyOrders() {\n\t\t\treturn buyOrders;\n\t\t}\n\n\t\tpublic boolean isBuyTransactions() {\n\t\t\treturn buyTransactions;\n\t\t}\n\n\t\tpublic boolean isSellTransactions() {\n\t\t\treturn sellTransactions;\n\t\t}\n\n\t\tpublic boolean isJobs() {\n\t\t\treturn jobs;\n\t\t}\n\n\t\tpublic boolean isSellingContracts() {\n\t\t\treturn sellingContracts;\n\t\t}\n\n\t\tpublic boolean isSoldContracts() {\n\t\t\treturn soldContracts;\n\t\t}\n\n\t\tpublic boolean isBuyingContracts() {\n\t\t\treturn buyingContracts;\n\t\t}\n\n\t\tpublic boolean isBoughtContracts() {\n\t\t\treturn boughtContracts;\n\t\t}\n\n\t\tpublic static class StockpileContainer {\n\t\t\tprivate final String container;\n\t\t\tprivate final String compare;\n\t\t\tprivate final boolean includeSubs;\n\n\t\t\tpublic StockpileContainer(String container, boolean includeSubs) {\n\t\t\t\tthis.container = container;\n\t\t\t\tthis.compare = container.toLowerCase();\n\t\t\t\tthis.includeSubs = includeSubs;\n\t\t\t}\n\n\t\t\tpublic String getContainer() {\n\t\t\t\treturn container;\n\t\t\t}\n\n\t\t\tpublic String getCompare() {\n\t\t\t\treturn compare;\n\t\t\t}\n\n\t\t\tpublic boolean isIncludeSubs() {\n\t\t\t\treturn includeSubs;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic int hashCode() {\n\t\t\t\tint hash = 7;\n\t\t\t\thash = 37 * hash + Objects.hashCode(this.container);\n\t\t\t\treturn hash;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic boolean equals(Object obj) {\n\t\t\t\tif (this == obj) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (obj == null) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (getClass() != obj.getClass()) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tfinal StockpileContainer other = (StockpileContainer) obj;\n\t\t\t\tif (!Objects.equals(this.container, other.container)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tpublic static class StockpileFlag {\n\t\t\tprivate final int flagID;\n\t\t\tprivate final boolean includeSubs;\n\n\t\t\tpublic StockpileFlag(int flagID, boolean includeSubs) {\n\t\t\t\tthis.flagID = flagID;\n\t\t\t\tthis.includeSubs = includeSubs;\n\t\t\t}\n\n\t\t\tpublic int getFlagID() {\n\t\t\t\treturn flagID;\n\t\t\t}\n\n\t\t\tpublic boolean isIncludeSubs() {\n\t\t\t\treturn includeSubs;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic int hashCode() {\n\t\t\t\tint hash = 7;\n\t\t\t\thash = 43 * hash + this.flagID;\n\t\t\t\treturn hash;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic boolean equals(Object obj) {\n\t\t\t\tif (this == obj) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (obj == null) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (getClass() != obj.getClass()) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tfinal StockpileFlag other = (StockpileFlag) obj;\n\t\t\t\treturn this.flagID == other.flagID;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class SubpileItem extends StockpileItem {\n\n\t\tprivate final List<SubpileItemLinks> itemLinks = new ArrayList<>();\n\t\tprivate String path;\n\t\tprivate String name = \"\";\n\t\tprivate String space = \"\";\n\t\tprivate int level;\n\n\t\tpublic SubpileItem(Stockpile stockpile, StockpileItem parentItem, SubpileStock subpileStock, int level, String path) {\n\t\t\tsuper(stockpile, parentItem.getItem(), parentItem.getItemTypeID(), parentItem.getCountMinimum(), parentItem.isRuns(), false);\n\t\t\titemLinks.add(new SubpileItemLinks(parentItem, subpileStock));\n\t\t\tsetLevel(level);\n\t\t\tthis.path = path;\n\t\t\tupdateText();\n\t\t}\n\n\t\tprivate SubpileItem(Stockpile stockpile, int level, String path) {\n\t\t\tsuper(stockpile, new Item(0, \"!\"+0, \"Stockpile\", \"\", 0, 0, 0, 0, 0, \"\", false, 0, 0, 1, \"\", \"\", null), 0, 0.0, false);\n\t\t\tsetLevel(level);\n\t\t\tthis.path = path;\n\t\t\tupdateText();\n\t\t}\n\n\t\tString getPath() {\n\t\t\treturn path;\n\t\t}\n\n\t\tpublic void setPath(String path) {\n\t\t\tthis.path = path;\n\t\t}\n\n\t\tpublic int getLevel() {\n\t\t\treturn level;\n\t\t}\n\n\t\tpublic final void setLevel(int level) {\n\t\t\tthis.level = level;\n\t\t\tStringBuilder spaceString = new StringBuilder();\n\t\t\tfor (int i = 0; i < level; i++) {\n\t\t\t\tspaceString.append(\"    \");\n\t\t\t}\n\t\t\tspace = spaceString.toString();\n\t\t}\n\n\t\tprivate String getSpace() {\n\t\t\treturn space;\n\t\t}\n\n\t\tprivate void updateText() {\n\t\t\tif (!itemLinks.isEmpty()) {\n\t\t\t\tname = itemLinks.get(0).getStockpileItem().getName().trim();\n\t\t\t} else {\n\t\t\t\tname = \"\";\n\t\t\t}\n\t\t}\n\n\t\tpublic String getOrder() {\n\t\t\treturn \"1\";\n\t\t}\n\n\t\tpublic void addItemLink(StockpileItem parentItem, SubpileStock subpileStock) {\n\t\t\titemLinks.add(new SubpileItemLinks(parentItem, subpileStock));\n\t\t\tupdateText();\n\t\t}\n\n\t\tpublic void clearItemLinks() {\n\t\t\titemLinks.clear();\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean isEditable() {\n\t\t\treturn false;\n\t\t}\n\n\t\t@Override\n\t\tpublic String getName() {\n\t\t\treturn \"Total: \" + name;\n\t\t\t//return getSpace() + \" - \" + name + \" Total\";\n\t\t}\n\n\t\t@Override\n\t\tpublic double getCountMinimum() {\n\t\t\tdouble countMinimum = 0;\n\t\t\tfor (SubpileItemLinks link : itemLinks) {\n\t\t\t\tSubpileStock stock = link.getSubpileStock();\n\t\t\t\tStockpileItem item =  link.getStockpileItem();\n\t\t\t\tif (item.isIgnoreMultiplier() || stock == null) {\n\t\t\t\t\tcountMinimum = countMinimum + item.getCountMinimum();\n\t\t\t\t} else {\n\t\t\t\t\tcountMinimum = countMinimum + (item.getCountMinimum() * stock.getSubMultiplier());\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn countMinimum;\n\t\t}\n\n\t\t@Override\n\t\tpublic long getCountMinimumMultiplied() {\n\t\t\tdouble countMinimum = 0;\n\t\t\tfor (SubpileItemLinks link : itemLinks) {\n\t\t\t\tSubpileStock stock = link.getSubpileStock();\n\t\t\t\tStockpileItem item =  link.getStockpileItem();\n\t\t\t\tif (item.isIgnoreMultiplier()) {\n\t\t\t\t\tcountMinimum = countMinimum + item.getCountMinimum();\n\t\t\t\t} else if (stock != null) {\n\t\t\t\t\tcountMinimum = countMinimum + (item.getCountMinimum() * stock.getSubMultiplier() * getStockpile().getMultiplier());\n\t\t\t\t} else {\n\t\t\t\t\tcountMinimum = countMinimum + (item.getCountMinimum() * getStockpile().getMultiplier());\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn (long) Math.ceil(countMinimum);\n\t\t}\n\n\t\tprivate static class SubpileItemLinks {\n\t\t\tprivate final StockpileItem stockpileItem;\n\t\t\tprivate final SubpileStock subpileStock;\n\n\t\t\tpublic SubpileItemLinks(StockpileItem stockpileItem, SubpileStock subpileStock) {\n\t\t\t\tthis.stockpileItem = stockpileItem;\n\t\t\t\tthis.subpileStock = subpileStock;\n\t\t\t}\n\n\t\t\tpublic StockpileItem getStockpileItem() {\n\t\t\t\treturn stockpileItem;\n\t\t\t}\n\n\t\t\tpublic SubpileStock getSubpileStock() {\n\t\t\t\treturn subpileStock;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class SubpileStock extends SubpileItem {\n\n\t\tprivate final Stockpile originalStockpile;\n\t\tprivate final Stockpile originalParentStockpile;\n\t\tprivate final SubpileStock parentStock;\n\t\tprivate double subMultiplier;\n\n\t\tpublic SubpileStock(Stockpile stockpile, Stockpile originalStockpile, Stockpile originalParentStockpile, SubpileStock parentStock, double subMultiplier, int level, String path) {\n\t\t\tsuper(stockpile, level, path);\n\t\t\tthis.originalStockpile = originalStockpile;\n\t\t\tthis.originalParentStockpile = originalParentStockpile;\n\t\t\tthis.parentStock = parentStock;\n\t\t\tthis.subMultiplier = subMultiplier;\n\t\t}\n\n\t\t@Override\n\t\tpublic JButton getButton() {\n\t\t\tif (jButton == null) { //Soft init\n\t\t\t\tjButton = new JButtonNull();\n\t\t\t}\n\t\t\treturn jButton;\n\t\t}\n\n\t\t@Override\n\t\tpublic String getOrder() {\n\t\t\treturn \"0\" + getPath();\n\t\t}\n\n\t\t@Override\n\t\tpublic String getName() {\n\t\t\treturn super.getSpace() + originalStockpile.getName();\n\t\t}\n\n\t\tpublic double getSubMultiplier() {\n\t\t\tDouble value = originalParentStockpile.getSubpiles().get(originalStockpile);\n\t\t\tif (value != null && parentStock != null) {\n\t\t\t\treturn value * parentStock.getSubMultiplier();\n\t\t\t} else if (value != null) {\n\t\t\t\treturn value;\n\t\t\t} else {\n\t\t\t\treturn subMultiplier;\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean isEditable() {\n\t\t\treturn parentStock == null;\n\t\t}\n\n\t\t@Override\n\t\tpublic double getCountMinimum() {\n\t\t\treturn getSubMultiplier();\n\t\t}\n\n\t\t@Override\n\t\tpublic void setCountMinimum(double subMultiplier) {\n\t\t\tthis.subMultiplier = subMultiplier;\n\t\t\tgetStockpile().getSubpiles().put(originalStockpile, subMultiplier);\n\t\t\tgetStockpile().updateTotal();\n\t\t}\n\n\t\t@Override\n\t\tpublic long getCountNow() { return 0; }\n\t\t@Override\n\t\tpublic long getCountNeeded() { return 0; }\n\t\t@Override\n\t\tpublic double getValueNow() { return 0; };\n\t\t@Override\n\t\tpublic double getValueNeeded() { return 0; };\n\t\t@Override\n\t\tpublic double getVolumeNow() { return 0; };\n\t\t@Override\n\t\tpublic double getVolumeNeeded() { return 0; };\n\n\t}\n\n\tpublic static class TypeIdentifier {\n\n\t\tprivate final int typeID;\n\t\tprivate final boolean runs;\n\n\t\tpublic TypeIdentifier(StockpileItem stockpileItem) {\n\t\t\tthis.typeID = stockpileItem.typeID;\n\t\t\tthis.runs = stockpileItem.isRuns();\n\t\t}\n\n\t\tpublic TypeIdentifier(int typeID, boolean runs) {\n\t\t\tthis.typeID = typeID;\n\t\t\tthis.runs = runs;\n\t\t}\n\n\t\tpublic boolean isEmpty() {\n\t\t\treturn typeID == 0;\n\t\t}\n\n\t\tpublic boolean isBPC() {\n\t\t\treturn typeID < 0;\n\t\t}\n\n\t\tpublic boolean isRuns() {\n\t\t\treturn runs;\n\t\t}\n\n\t\tpublic int getTypeID() {\n\t\t\treturn typeID;\n\t\t}\n\n\t\t@Override\n\t\tpublic int hashCode() {\n\t\t\tint hash = 7;\n\t\t\thash = 59 * hash + this.typeID;\n\t\t\thash = 59 * hash + (this.runs ? 1 : 0);\n\t\t\treturn hash;\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean equals(Object obj) {\n\t\t\tif (this == obj) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (obj == null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (getClass() != obj.getClass()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfinal TypeIdentifier other = (TypeIdentifier) obj;\n\t\t\tif (this.typeID != other.typeID) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (this.runs != other.runs) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/stockpile/StockpileBpDialog.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.stockpile;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport javax.swing.DefaultComboBoxModel;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JComboBox;\r\nimport javax.swing.JComponent;\r\nimport javax.swing.JLabel;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings.ManufacturingFacility;\r\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings.ManufacturingRigs;\r\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings.ManufacturingSecurity;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\r\nimport net.nikr.eve.jeveasset.i18n.TabsStockpile;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\n\r\n\r\npublic class StockpileBpDialog extends JDialogCentered {\r\n\r\n\tprivate enum StockpileBpAction {\r\n\t\tCANCEL,\r\n\t\tOK,\r\n\t\tTYPE_CHANGE\r\n\t}\r\n\r\n\tprivate static final int WIDTH = 200;\r\n\r\n\tprivate final JButton jOK;\r\n\tprivate final JLabel jBlueprintTypeLabel;\r\n\tprivate final JComboBox<String> jBlueprintType;\r\n\tprivate final JComboBox<Integer> jMe;\r\n\tprivate final JComboBox<ManufacturingFacility> jFacility;\r\n\tprivate final JComboBox<ManufacturingRigs> jRigs;\r\n\tprivate final JComboBox<ManufacturingSecurity> jSecurity;\r\n\r\n\tprivate final List<JComponent> manufacturingComponents = new ArrayList<>();\r\n\tprivate BpData returnValue;\r\n\r\n\tpublic StockpileBpDialog(Program program) {\r\n\t\tsuper(program, \"\", Images.TOOL_STOCKPILE.getImage());\r\n\r\n\t\tListenerClass listener = new ListenerClass();\r\n\r\n\t\tjBlueprintTypeLabel = new JLabel();\r\n\t\tjBlueprintType = new JComboBox<>();\r\n\t\tjBlueprintType.setActionCommand(StockpileBpAction.TYPE_CHANGE.name());\r\n\t\tjBlueprintType.addActionListener(listener);\r\n\r\n\t\tJLabel jMeLabel = new JLabel(TabsStockpile.get().me());\r\n\t\tmanufacturingComponents.add(jMeLabel);\r\n\t\tInteger[] me = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};\r\n\t\tjMe = new JComboBox<>(me);\r\n\t\tjMe.setPrototypeDisplayValue(10);\r\n\t\tjMe.setMaximumRowCount(me.length);\r\n\t\tmanufacturingComponents.add(jMe);\r\n\r\n\t\tJLabel jFacilityLabel = new JLabel(TabsStockpile.get().blueprintFacility());\r\n\t\tmanufacturingComponents.add(jFacilityLabel);\r\n\t\tjFacility = new JComboBox<>(ManufacturingFacility.values());\r\n\t\tjFacility.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tManufacturingFacility facility = jFacility.getItemAt(jFacility.getSelectedIndex());\r\n\t\t\t\tif (facility == ManufacturingFacility.STATION) {\r\n\t\t\t\t\tjRigs.setSelectedIndex(0);\r\n\t\t\t\t\tjRigs.setEnabled(false);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tjRigs.setEnabled(true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tmanufacturingComponents.add(jFacility);\r\n\r\n\t\tJLabel jRigsLabel = new JLabel(TabsStockpile.get().blueprintRigs());\r\n\t\tmanufacturingComponents.add(jRigsLabel);\r\n\t\tjRigs = new JComboBox<>(ManufacturingRigs.values());\r\n\t\tjRigs.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tManufacturingRigs rigs = jRigs.getItemAt(jRigs.getSelectedIndex());\r\n\t\t\t\tif (rigs == ManufacturingRigs.NONE) {\r\n\t\t\t\t\tjSecurity.setSelectedIndex(0);\r\n\t\t\t\t\tjSecurity.setEnabled(false);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tjSecurity.setEnabled(true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tmanufacturingComponents.add(jRigs);\r\n\r\n\t\tJLabel jSecurityLabel = new JLabel(TabsStockpile.get().blueprintSecurity());\r\n\t\tmanufacturingComponents.add(jSecurityLabel);\r\n\t\tjSecurity = new JComboBox<>(ManufacturingSecurity.values());\r\n\t\tmanufacturingComponents.add(jSecurity);\r\n\r\n\t\tjOK = new JButton(TabsStockpile.get().ok());\r\n\t\tjOK.setActionCommand(StockpileBpAction.OK.name());\r\n\t\tjOK.addActionListener(listener);\r\n\r\n\t\tJButton jCancel = new JButton(TabsStockpile.get().cancel());\r\n\t\tjCancel.setActionCommand(StockpileBpAction.CANCEL.name());\r\n\t\tjCancel.addActionListener(listener);\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jBlueprintTypeLabel, WIDTH, WIDTH, WIDTH)\r\n\t\t\t\t\t.addComponent(jBlueprintType, WIDTH, WIDTH, WIDTH)\r\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t\t.addComponent(jMeLabel)\r\n\t\t\t\t\t\t\t.addComponent(jFacilityLabel)\r\n\t\t\t\t\t\t\t.addComponent(jRigsLabel)\r\n\t\t\t\t\t\t\t.addComponent(jSecurityLabel)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t\t.addComponent(jMe)\r\n\t\t\t\t\t\t\t.addComponent(jFacility)\r\n\t\t\t\t\t\t\t.addComponent(jRigs)\r\n\t\t\t\t\t\t\t.addComponent(jSecurity)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(jBlueprintTypeLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addGap(0)\r\n\t\t\t\t.addComponent(jBlueprintType, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jMeLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jMe, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jFacilityLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jFacility, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jRigsLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jRigs, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jSecurityLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jSecurity, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\tpublic BpData show(String title, String msg, String[] options) {\r\n\t\treturnValue = null;\r\n\t\tjBlueprintTypeLabel.setText(msg);\r\n\t\tgetDialog().setTitle(title);\r\n\t\tjBlueprintType.setModel(new DefaultComboBoxModel<>(options));\r\n\t\tjBlueprintType.setSelectedIndex(0);\r\n\t\tjMe.setSelectedIndex(0);\r\n\t\tjFacility.setSelectedIndex(0);\r\n\t\tjRigs.setSelectedIndex(0);\r\n\t\tsetVisible(true);\r\n\t\treturn returnValue;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JComponent getDefaultFocus() {\r\n\t\treturn jBlueprintType;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JButton getDefaultButton() {\r\n\t\treturn jOK;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void windowShown() { }\r\n\r\n\t@Override\r\n\tprotected void save() {\r\n\t\tString type = jBlueprintType.getItemAt(jBlueprintType.getSelectedIndex());\r\n\t\tif (type.equals(TabsStockpile.get().materialsManufacturing())\r\n\t\t\t\t|| type.equals(TabsStockpile.get().materialsReaction())) {\r\n\t\t\tint me = jMe.getItemAt(jMe.getSelectedIndex());\r\n\t\t\tManufacturingFacility facility = jFacility.getItemAt(jFacility.getSelectedIndex());\r\n\t\t\tManufacturingRigs rigs = jRigs.getItemAt(jRigs.getSelectedIndex());\r\n\t\t\tManufacturingSecurity security = jSecurity.getItemAt(jSecurity.getSelectedIndex());\r\n\t\t\treturnValue = new BpData(type, me, facility, rigs, security);\r\n\t\t} else {\r\n\t\t\treturnValue = new BpData(type);\r\n\t\t}\r\n\t\tsetVisible(false);\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener {\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\tif (StockpileBpAction.OK.name().equals(e.getActionCommand())) {\r\n\t\t\t\tsave();\r\n\t\t\t} else if (StockpileBpAction.CANCEL.name().equals(e.getActionCommand())) {\r\n\t\t\t\tsetVisible(false);\r\n\t\t\t} else if (StockpileBpAction.TYPE_CHANGE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tString type = jBlueprintType.getItemAt(jBlueprintType.getSelectedIndex());\r\n\t\t\t\tif (type.equals(TabsStockpile.get().materialsManufacturing()) || type.equals(TabsStockpile.get().materialsReaction())) {\r\n\t\t\t\t\tfor (JComponent jComponent : manufacturingComponents) {\r\n\t\t\t\t\t\tjComponent.setVisible(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgetDialog().pack();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfor (JComponent jComponent : manufacturingComponents) {\r\n\t\t\t\t\t\tjComponent.setVisible(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgetDialog().pack();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static class BpData {\r\n\r\n\t\tprivate final String type;\r\n\t\tprivate final Integer me;\r\n\t\tprivate final ManufacturingFacility facility;\r\n\t\tprivate final ManufacturingRigs rigs;\r\n\t\tprivate final ManufacturingSecurity security;\r\n\r\n\t\tpublic BpData(String type) {\r\n\t\t\tthis.type = type;\r\n\t\t\tthis.me = null;\r\n\t\t\tthis.facility = null;\r\n\t\t\tthis.rigs = null;\r\n\t\t\tthis.security = null;\r\n\t\t}\r\n\r\n\t\tpublic BpData(String type, Integer me, ManufacturingFacility facility, ManufacturingRigs rigs, ManufacturingSecurity security) {\r\n\t\t\tthis.type = type;\r\n\t\t\tthis.me = me;\r\n\t\t\tthis.facility = facility;\r\n\t\t\tthis.rigs = rigs;\r\n\t\t\tthis.security = security;\r\n\t\t}\r\n\r\n\t\tpublic boolean matches(String value) {\r\n\t\t\treturn type.equals(value);\r\n\t\t}\r\n\r\n\t\tpublic double doMath(int quantity, double countMinimum) {\r\n\t\t\treturn ApiIdConverter.getManufacturingQuantity(quantity, me, facility, rigs, security, countMinimum, false);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/stockpile/StockpileData.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.stockpile;\r\n\r\nimport ca.odell.glazedlists.EventList;\r\nimport java.util.ArrayList;\r\nimport java.util.Collections;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileData;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileManager;\r\nimport net.nikr.eve.jeveasset.data.profile.TableData;\r\nimport net.nikr.eve.jeveasset.data.sde.ItemFlag;\r\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\r\nimport net.nikr.eve.jeveasset.data.settings.PriceData;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter.StockpileFlag;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileItem;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.SubpileItem;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.SubpileStock;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.TypeIdentifier;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\n\r\n\r\npublic class StockpileData extends TableData {\r\n\r\n\tprivate Map<Long, String> ownersName;\r\n\tprivate final Map<Stockpile, Map<Integer, Set<MyContractItem>>> contractItems = new HashMap<>();\r\n\tprivate final Map<Stockpile, Map<Integer, Set<MyAsset>>> assets = new HashMap<>();\r\n\tprivate final Map<Integer, Set<MyMarketOrder>> marketOrders = new HashMap<>();\r\n\tprivate final Map<Integer, Set<MyIndustryJob>> industryJobs = new HashMap<>();\r\n\tprivate final Map<Integer, Set<MyTransaction>> transactions = new HashMap<>();\r\n\r\n\tpublic StockpileData(Program program) {\r\n\t\tsuper(program);\r\n\t}\r\n\r\n\tpublic StockpileData(ProfileManager profileManager, ProfileData profileData) {\r\n\t\tsuper(profileManager, profileData);\r\n\t}\r\n\r\n\tpublic EventList<StockpileItem> getData() {\r\n\t\tEventList<StockpileItem> eventList = EventListManager.create();\r\n\t\tupdateData(eventList);\r\n\t\treturn eventList;\r\n\t}\r\n\r\n\tpublic void updateData(EventList<StockpileItem> eventList) {\r\n\t\t//Items\r\n\t\tList<StockpileItem> stockpileItems = new ArrayList<>();\r\n\r\n\t\tupdateOwners();\r\n\r\n\t\tcontractItems.clear();\r\n\t\tassets.clear();\r\n\t\tmarketOrders.clear();\r\n\t\tindustryJobs.clear();\r\n\t\ttransactions.clear();\r\n\r\n\t\t//Update Stockpiles (StockpileItem)\r\n\t\tfor (Stockpile stockpile : StockpileTab.getShownStockpiles(profileManager)) {\r\n\t\t\tstockpile.updateDynamicValues();\r\n\t\t\tupdateStockpile(stockpile);\r\n\t\t\tstockpileItems.addAll(stockpile.getItems());\r\n\t\t}\r\n\t\t//Update Subpiles (SubpileItem)\r\n\t\tstockpileItems.addAll(getUpdatedSubpiles());\r\n\t\t//Update EventList (GUI)\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().writeLock().lock();\r\n\t\t\teventList.clear();\r\n\t\t\tStockpileTab.enableGroupFirstUpdate();\r\n\t\t\teventList.addAll(stockpileItems);\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void updateOwners() {\r\n\t\t//Owners Look-Up\r\n\t\townersName = new HashMap<>();\r\n\t\tfor (OwnerType owner : profileManager.getOwnerTypes()) {\r\n\t\t\townersName.put(owner.getOwnerID(), owner.getOwnerName());\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void updateStockpile(Stockpile stockpile) {\r\n\t\t//Update owner name\r\n\t\tSet<String> owners = new HashSet<>();\r\n\t\tfor (StockpileFilter filter : stockpile.getFilters()) {\r\n\t\t\tfor (Long ownerID : filter.getOwnerIDs()) {\r\n\t\t\t\tString owner = ownersName.get(ownerID);\r\n\t\t\t\tif (owner != null) {\r\n\t\t\t\t\towners.add(owner);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tstockpile.setOwnerName(new ArrayList<>(owners));\r\n\t\t//Update Item flag name\r\n\t\tSet<ItemFlag> flags = new HashSet<>();\r\n\t\tfor (StockpileFilter filter : stockpile.getFilters()) {\r\n\t\t\tfor (StockpileFlag flag : filter.getFlags()) {\r\n\t\t\t\tItemFlag itemFlag = StaticData.get().getItemFlags().get(flag.getFlagID());\r\n\t\t\t\tif (itemFlag != null) {\r\n\t\t\t\t\tflags.add(itemFlag);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tstockpile.setFlagName(flags);\r\n\t\t//Update Tags\r\n\t\tstockpile.updateTags();\r\n\t\t//Update Items\r\n\t\tupdateStockpileItems(stockpile, true);\r\n\t}\r\n\r\n\tprivate void updateStockpileItems(Stockpile stockpile, boolean updateClaims) {\r\n\t\t//Create lookup set of TypeIDs\r\n\t\tSet<Integer> typeIDs = new HashSet<>();\r\n\t\taddTypeIDs(typeIDs, stockpile);\r\n\t\t//Create lookup maps of Items\r\n\t\tif (!typeIDs.isEmpty()) {\r\n\t\t\t//Contract Items\r\n\t\t\tif (stockpile.isContracts()) {\r\n\t\t\t\tget(contractItems, stockpile).clear();\r\n\t\t\t\tif (stockpile.isMatchAll()) {\r\n\t\t\t\t\tMap<MyContract, List<MyContractItem>> foundItems = contractsMatchAll(profileData, stockpile, updateClaims);\r\n\t\t\t\t\t//Add\r\n\t\t\t\t\tfor (List<MyContractItem> list : foundItems.values()) {\r\n\t\t\t\t\t\tfor (MyContractItem contractItem : list) {\r\n\t\t\t\t\t\t\tadd(get(contractItems, stockpile), get(contractItem.getTypeID(), contractItem.isBPC()), contractItem);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfor (MyContractItem contractItem : profileData.getContractItemList()) {\r\n\t\t\t\t\t\tif (contractItem.getContract().isIgnoreContract()) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (!contractItem.getContract().isOpen() && !contractItem.getContract().isCompletedSuccessful() ) {\r\n\t\t\t\t\t\t\tcontinue; //Only include open and successfully completed  contracts\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tInteger typeID = get(contractItem.getTypeID(), contractItem.isBPC());\r\n\t\t\t\t\t\t//Ignore null and wrong typeID\r\n\t\t\t\t\t\tif (ignore(typeIDs, typeID)) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t//Add Contract Item\r\n\t\t\t\t\t\tadd(get(contractItems, stockpile), typeID, contractItem);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Assets\r\n\t\t\tif (stockpile.isAssets()) {\r\n\t\t\t\tget(assets, stockpile).clear();\r\n\t\t\t\tif (stockpile.isMatchAll()) {\r\n\t\t\t\t\tMap<MyAsset, List<MyAsset>> foundItems = assetsMatchAll(profileData, stockpile, updateClaims);\r\n\t\t\t\t\t//Add\r\n\t\t\t\t\tfor (List<MyAsset> list : foundItems.values()) {\r\n\t\t\t\t\t\tfor (MyAsset asset : list) {\r\n\t\t\t\t\t\t\tadd(get(assets, stockpile), get(asset.getTypeID(), asset.isBPC()), asset);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfor (MyAsset asset : profileData.getAssetsList()) {\r\n\t\t\t\t\t\tif (asset.isGenerated()) { //Skip generated assets\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tInteger typeID = get(asset.getTypeID(), asset.isBPC());\r\n\t\t\t\t\t\t//Ignore null and wrong typeID\r\n\t\t\t\t\t\tif (ignore(typeIDs, typeID)) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t//Add Asset\r\n\t\t\t\t\t\tadd(get(assets, stockpile), typeID, asset);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Market Orders\r\n\t\t\tif (stockpile.isBuyOrders() || stockpile.isSellOrders()) {\r\n\t\t\t\tfor (MyMarketOrder marketOrder : profileData.getMarketOrdersList()) {\r\n\t\t\t\t\tif (!marketOrder.isActive()) {\r\n\t\t\t\t\t\tcontinue; //Only include active orders\r\n\t\t\t\t\t}\r\n\t\t\t\t\tInteger typeID = marketOrder.getTypeID();\r\n\t\t\t\t\t//Ignore null and wrong typeID\r\n\t\t\t\t\tif (ignore(typeIDs, typeID)) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//Add Market Order\r\n\t\t\t\t\tadd(marketOrders, typeID, marketOrder);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Industry Jobs\r\n\t\t\tif (stockpile.isJobs()) {\r\n\t\t\t\tfor (MyIndustryJob industryJob : profileData.getIndustryJobsList()) {\r\n\t\t\t\t\tif (!industryJob.isNotDeliveredToAssets()) {\r\n\t\t\t\t\t\tcontinue; //Only include industry jobs not delivered\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//Manufacturing\r\n\t\t\t\t\tInteger productTypeID = industryJob.getProductTypeID();\r\n\t\t\t\t\tif (!ignore(typeIDs, productTypeID)) { //Ignore null and wrong typeID\r\n\t\t\t\t\t\tadd(industryJobs, productTypeID, industryJob);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//Copying\r\n\t\t\t\t\tInteger blueprintTypeID = get(industryJob.getBlueprintTypeID(), true);  //Negative - match blueprints copies\r\n\t\t\t\t\tif (!ignore(typeIDs, blueprintTypeID)) { //Ignore null and wrong typeID\r\n\t\t\t\t\t\tadd(industryJobs, blueprintTypeID, industryJob);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Transactions\r\n\t\t\tif (stockpile.isTransactions()) {\r\n\t\t\t\tfor (MyTransaction transaction : profileData.getTransactionsList()) {\r\n\t\t\t\t\tif (!transaction.isAfterAssets()) {\r\n\t\t\t\t\t\tcontinue; //Only include transaction made after the last asset update\r\n\t\t\t\t\t}\r\n\t\t\t\t\tInteger typeID = transaction.getTypeID();\r\n\t\t\t\t\t//Ignore null and wrong typeID\r\n\t\t\t\t\tif (typeID == null || !typeIDs.contains(typeID)) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//Add Transaction\r\n\t\t\t\t\tadd(transactions, typeID, transaction);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tstockpile.reset();\r\n\t\tif (!stockpile.isEmpty()) {\r\n\t\t\tfor (StockpileItem item : stockpile.getItems()) {\r\n\t\t\t\tif (item.isTotal()) {\r\n\t\t\t\t\tcontinue; //Ignore Total\r\n\t\t\t\t}\r\n\t\t\t\tupdateItem(item, stockpile);\r\n\t\t\t}\r\n\t\t}\r\n\t\tstockpile.updateTotal();\r\n\t}\r\n\r\n\tpublic static Map<MyContract, List<MyContractItem>> contractsMatchAll(ProfileData profileData, Stockpile stockpile, boolean updateClaims) {\r\n\t\tMap<MyContract, Set<TypeIdentifier>> foundIDs =  new HashMap<>();\r\n\t\tMap<MyContract, List<MyContractItem>> foundItems =  new HashMap<>();\r\n\t\t//Init found maps\r\n\t\tfor (MyContract contract : profileData.getContractList()) {\r\n\t\t\tfoundIDs.put(contract, new HashSet<>());\r\n\t\t\tfoundItems.put(contract, new ArrayList<>());\r\n\t\t}\r\n\t\t//Update subpile claims\r\n\t\tif (updateClaims && !stockpile.getSubpiles().isEmpty()) {\r\n\t\t\tupdateSubpileClaims(stockpile);\r\n\t\t}\r\n\t\t//StockpileItem map lookup\r\n\t\tMap<TypeIdentifier, StockpileItem> stockpileItems = stockpile.getClaimsMap();\r\n\t\t//Contract Items matching\r\n\t\tfor (MyContractItem contractItem : profileData.getContractItemList()) {\r\n\t\t\t//Validate contract\r\n\t\t\tif (contractItem.getContract().isIgnoreContract()) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tboolean found = false;\r\n\t\t\tfor (TypeIdentifier type : getTypes(contractItem.getTypeID(), contractItem.isBPC())) {\r\n\t\t\t\t//Validate typeID\r\n\t\t\t\tif (ignore(stockpileItems.keySet(), type)) {\r\n\t\t\t\t\tcontinue; //Nothing left to do here\r\n\t\t\t\t}\r\n\t\t\t\t//Get items\r\n\t\t\t\tList<MyContractItem> items = foundItems.get(contractItem.getContract());\r\n\t\t\t\tif (items == null) {\r\n\t\t\t\t\tcontinue; //Happens when one or more typeIDs from the contract isn't in the stockpile\r\n\t\t\t\t}\r\n\t\t\t\t//Get contract typeIDs\r\n\t\t\t\tSet<TypeIdentifier> ids = foundIDs.get(contractItem.getContract());\r\n\t\t\t\tif (ids == null) {\r\n\t\t\t\t\tcontinue; //Should never happen, but, better safe than sorry\r\n\t\t\t\t}\r\n\t\t\t\t//Get StockpileItem\r\n\t\t\t\tStockpileItem stockpileItem = stockpileItems.get(type);\r\n\t\t\t\tif (stockpileItem == null) {\r\n\t\t\t\t\tcontinue; //Should never happen, but, better safe than sorry\r\n\t\t\t\t}\r\n\t\t\t\tif (stockpileItem.matchesContract(contractItem)) {\r\n\t\t\t\t\titems.add(contractItem);\r\n\t\t\t\t\tids.add(type);\r\n\t\t\t\t\tbreak; //Can only match once\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (!found) {\r\n\t\t\t\tfoundItems.remove(contractItem.getContract()); //Contract have items not in the stockpile\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Stockpile Items matching\r\n\t\tfor (Map.Entry<MyContract, Set<TypeIdentifier>> entry : foundIDs.entrySet()) {\r\n\t\t\t//Only compare the size of the sets, as both sets only contains valid and unique ids.\r\n\t\t\t//Therefore there should be no reason to compare the actualy IDs (which is really really slow)\r\n\t\t\tif (entry.getValue().size() != stockpileItems.keySet().size()) { //Stockpile have items not in the contract\r\n\t\t\t\tfoundItems.remove(entry.getKey());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn foundItems;\r\n\t}\r\n\r\n\tpublic static Map<MyAsset, List<MyAsset>> assetsMatchAll(ProfileData profileData, Stockpile stockpile, boolean updateClaims) {\r\n\t\tMap<MyAsset, Set<TypeIdentifier>> foundIDs =  new HashMap<>();\r\n\t\tMap<MyAsset, List<MyAsset>> foundItems =  new HashMap<>();\r\n\t\tMap<MyAsset, List<MyAsset>> parents =  new HashMap<>();\r\n\t\t//Init found maps\r\n\t\tfor (MyAsset asset : profileData.getAssetsList()) {\r\n\t\t\tif (asset.getAssets().isEmpty()) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tList<MyAsset> children = new ArrayList<>();\r\n\t\t\taddAssetChildren(children, asset);\r\n\t\t\tparents.put(asset, children);\r\n\t\t\tfoundIDs.put(asset, new HashSet<>());\r\n\t\t\tfoundItems.put(asset, new ArrayList<>());\r\n\t\t}\r\n\t\t//Update subpile claims\r\n\t\tif (updateClaims && !stockpile.getSubpiles().isEmpty()) {\r\n\t\t\tupdateSubpileClaims(stockpile);\r\n\t\t}\r\n\t\t//StockpileItem map lookup\r\n\t\tMap<TypeIdentifier, StockpileItem> stockpileItems =  stockpile.getClaimsMap();\r\n\t\t//Contract Items matching\r\n\t\tfor (Map.Entry<MyAsset, List<MyAsset>> entry : parents.entrySet()) {\r\n\t\t\tMyAsset parent = entry.getKey();\r\n\t\t\tfor (MyAsset child : entry.getValue()) {\r\n\t\t\t\t//Validate contract\r\n\t\t\t\tif (child.isGenerated()) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tboolean found = false;\r\n\t\t\t\tfor (TypeIdentifier type : getTypes(child.getTypeID(), child.isBPC())) {\r\n\t\t\t\t\t//Validate typeID\r\n\t\t\t\t\tif (ignore(stockpileItems.keySet(), type)) {\r\n\t\t\t\t\t\tcontinue; //Nothing left to do here\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//Get items\r\n\t\t\t\t\tList<MyAsset> items = foundItems.get(parent);\r\n\t\t\t\t\tif (items == null) {\r\n\t\t\t\t\t\tcontinue; //Happens when one or more typeIDs from the contract isn't in the stockpile\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//Get contract typeIDs\r\n\t\t\t\t\tSet<TypeIdentifier> ids = foundIDs.get(parent);\r\n\t\t\t\t\tif (ids == null) {\r\n\t\t\t\t\t\tcontinue; //Should never happen, but, better safe than sorry\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//Get StockpileItem\r\n\t\t\t\t\tStockpileItem stockpileItem = stockpileItems.get(type);\r\n\t\t\t\t\tif (stockpileItem == null) {\r\n\t\t\t\t\t\tcontinue; //Should never happen, but, better safe than sorry\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (stockpileItem.matchesAsset(child)) {\r\n\t\t\t\t\t\titems.add(child);\r\n\t\t\t\t\t\tids.add(type);\r\n\t\t\t\t\t\tfound = true;\r\n\t\t\t\t\t\tbreak; //Can only match once\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (!found) {\r\n\t\t\t\t\tfoundItems.remove(parent); //Contract have items not in the stockpile\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Stockpile Items matching\r\n\t\tfor (Map.Entry<MyAsset, Set<TypeIdentifier>> entry : foundIDs.entrySet()) {\r\n\t\t\t//Only compare the size of the sets, as both sets only contains valid and unique ids.\r\n\t\t\t//Therefore there should be no reason to compare the actualy IDs (which is really really slow)\r\n\t\t\tif (entry.getValue().size() != stockpileItems.keySet().size()) { //Stockpile have items not in the contract\r\n\t\t\t\tfoundItems.remove(entry.getKey());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn foundItems;\r\n\t}\r\n\r\n\tprivate static void addAssetChildren(List<MyAsset> assets, MyAsset asset) {\r\n\t\tassets.add(asset);\r\n\t\tfor (MyAsset child : asset.getAssets()) {\r\n\t\t\taddAssetChildren(assets, child);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static Integer get(Integer typeID, boolean bpc) {\r\n\t\t//Ignore null\r\n\t\tif (typeID == null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\t//BPC has negative value\r\n\t\tif (bpc) {\r\n\t\t\ttypeID = -typeID;\r\n\t\t}\r\n\t\t//Return fixed TypeID\r\n\t\treturn typeID;\r\n\t}\r\n\r\n\tpublic static List<TypeIdentifier> getTypes(Integer typeID, boolean bpc) {\r\n\t\t//Ignore null\r\n\t\tif (typeID == null) {\r\n\t\t\treturn Collections.emptyList();\r\n\t\t}\r\n\t\t//BPC has negative value\r\n\t\tif (bpc) {\r\n\t\t\ttypeID = -typeID;\r\n\t\t\tList<TypeIdentifier> list = new ArrayList<>();\r\n\t\t\tlist.add(new TypeIdentifier(typeID, true));\r\n\t\t\tlist.add(new TypeIdentifier(typeID, false));\r\n\t\t\treturn list;\r\n\t\t} else {\r\n\t\t\treturn Collections.singletonList(new TypeIdentifier(typeID, false));\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static boolean ignore(Set<Integer> typeIDs, Integer typeID) {\r\n\t\t//Ignore null\r\n\t\tif (typeID == null) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\t//Ignore wrong typeID\r\n\t\treturn !typeIDs.contains(typeID);\r\n\t}\r\n\r\n\tprivate static boolean ignore(Set<TypeIdentifier> typeIDs, TypeIdentifier typeID) {\r\n\t\t//Ignore null\r\n\t\tif (typeID == null) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\t//Ignore wrong typeID\r\n\t\treturn !typeIDs.contains(typeID);\r\n\t}\r\n\r\n\tprivate <T> void add(Map<Integer, Set<T>> map, Integer typeID, T t) {\r\n\t\tif (typeID == null) {\r\n\t\t\treturn; //Ignore null (should never happen: better safe than sorry)\r\n\t\t}\r\n\t\tSet<T> items = map.get(typeID);\r\n\t\tif (items == null) {\r\n\t\t\titems = new HashSet<>();\r\n\t\t\tmap.put(typeID, items);\r\n\t\t}\r\n\t\titems.add(t);\r\n\t}\r\n\r\n\tprivate void addTypeIDs(Set<Integer> typeIDs, Stockpile stockpile) {\r\n\t\tfor (StockpileItem item : stockpile.getItems()) {\r\n\t\t\tif (item.isTotal()) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\ttypeIDs.add(item.getItemTypeID());\r\n\t\t}\r\n\t\tfor (Stockpile subpile : stockpile.getSubpiles().keySet()) {\r\n\t\t\taddTypeIDs(typeIDs, subpile);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void updateItem(StockpileItem item, Stockpile stockpile) {\r\n\t\tfinal int TYPE_ID = item.getItemTypeID();\r\n\t\tdouble price = ApiIdConverter.getPrice(TYPE_ID, item.isBPC());\r\n\t\tfloat volume = ApiIdConverter.getVolume(item.getItem(), true);\r\n\t\tDouble transactionAveragePrice = profileData.getTransactionAveragePrice(TYPE_ID);\r\n\t\tPriceData priceData = ApiIdConverter.getPriceData(TYPE_ID, item.isBPC());\r\n\t\titem.updateValues(price, volume, transactionAveragePrice, priceData);\r\n\t\t//Contract Items\r\n\t\tif (stockpile.isContracts()) {\r\n\t\t\tSet<MyContractItem> items = get(contractItems, stockpile).get(TYPE_ID);\r\n\t\t\tif (items != null) {\r\n\t\t\t\tfor (MyContractItem contractItem : items) {\r\n\t\t\t\t\titem.updateContract(contractItem);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Assets\r\n\t\tif (stockpile.isAssets()) {\r\n\t\t\tSet<MyAsset> items = get(assets, stockpile).get(TYPE_ID);\r\n\t\t\tif (items != null) {\r\n\t\t\t\tfor (MyAsset asset : items) {\r\n\t\t\t\t\titem.updateAsset(asset);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Market Orders\r\n\t\tif (stockpile.isBuyOrders() || stockpile.isSellOrders()) {\r\n\t\t\tSet<MyMarketOrder> items = marketOrders.get(TYPE_ID);\r\n\t\t\tif (items != null) {\r\n\t\t\t\tfor (MyMarketOrder marketOrder : items) {\r\n\t\t\t\t\titem.updateMarketOrder(marketOrder);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Industry Job\r\n\t\tif (stockpile.isJobs()) {\r\n\t\t\tSet<MyIndustryJob> items = industryJobs.get(TYPE_ID);\r\n\t\t\tif (items != null) {\r\n\t\t\t\tfor (MyIndustryJob industryJob : items) {\r\n\t\t\t\t\titem.updateIndustryJob(industryJob);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Transactions\r\n\t\tif (stockpile.isTransactions()) {\r\n\t\t\tSet<MyTransaction> items = transactions.get(TYPE_ID);\r\n\t\t\tif (items != null) {\r\n\t\t\t\tfor (MyTransaction transaction : items) {\r\n\t\t\t\t\titem.updateTransaction(transaction);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate <E> Map<Integer, Set<E>> get(Map<Stockpile, Map<Integer, Set<E>>> map, Stockpile key) {\r\n\t\tMap<Integer, Set<E>> value = map.get(key);\r\n\t\tif (value == null) {\r\n\t\t\tvalue = new HashMap<>();\r\n\t\t\tmap.put(key, value);\r\n\t\t}\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * Update Subpiles for all stockpiles and return a list of the updated Subpiles.\r\n\t * This method does not change the EventList\r\n\t * @return\r\n\t */\r\n\tprivate List<StockpileItem> getUpdatedSubpiles() {\r\n\t\tList<StockpileItem> added = new ArrayList<>();\r\n\t\tfor (Stockpile stockpile : Settings.get().getStockpiles()) {\r\n\t\t\tupdateSubpile(added, null, stockpile);\r\n\t\t}\r\n\t\treturn added;\r\n\t}\r\n\r\n\t/**\r\n\t * Update Subpiles for a single stockpile.\r\n\t * This method will update the EventList (remove old, add new)\r\n\t * This method is very ineffective when updating multiple Stockpiles:\r\n\t * Use getUpdatedSubpiles() to update all\r\n\t * And updateSubpile(,,) for anything > 1\r\n\t * @param eventList\r\n\t * @param parent\r\n\t */\r\n\tpublic void updateSubpile(EventList<StockpileItem> eventList, Stockpile parent) {\r\n\t\tList<StockpileItem> updated = new ArrayList<>();\r\n\t\tList<StockpileItem> removed = new ArrayList<>();\r\n\t\tupdateSubpile(updated, removed, parent);\r\n\t\t//Update list\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().writeLock().lock();\r\n\t\t\teventList.removeAll(removed);\r\n\t\t\tStockpileTab.enableGroupFirstUpdate();\r\n\t\t\teventList.addAll(updated);\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Internal: Don't use this.\r\n\t * Update subpiles for a single stockpile. Does not modify the EventList.\r\n\t * @param updated Updated SubpileItem's\r\n\t * @param removed Removed SubpileItem's\r\n\t * @param parent\r\n\t */\r\n\tprivate void updateSubpile(List<StockpileItem> updated, List<StockpileItem> removed, Stockpile parent) {\r\n\t\tMap<Integer, StockpileItem> parentItems = new HashMap<>();\r\n\t\tfor (StockpileItem item : parent.getItems()) {\r\n\t\t\tparentItems.put(item.getItemTypeID(), item);\r\n\t\t}\r\n\t\t//Save old items (for them to be removed)\r\n\t\tList<SubpileItem> subpileItems = new ArrayList<>(parent.getSubpileItems());\r\n\t\t//Clear old items\r\n\t\tparent.clearSubpileItems();\r\n\t\tfor (SubpileItem subpileItem : subpileItems) {\r\n\t\t\tsubpileItem.clearItemLinks();\r\n\t\t}\r\n\t\t//Update subs\r\n\t\tfor (Stockpile stockpile : parent.getSubpileLinks()) {\r\n\t\t\tupdateSubpile(updated, removed, stockpile);\r\n\t\t}\r\n\t\t//Add new items\r\n\t\tupdateSubpileClaims(parent, parentItems);\r\n\t\t//Update stockpile items\r\n\t\tif (parent.isMatchAll() && (parent.isContracts() || parent.isAssets())) {\r\n\t\t\tupdateStockpileItems(parent, false);\r\n\t\t}\r\n\t\t//Update items\r\n\t\tfor (SubpileItem subpileItem : parent.getSubpileItems()) {\r\n\t\t\tupdateItem(subpileItem, subpileItem.getStockpile());\r\n\t\t}\r\n\t\tparent.updateTotal();\r\n\t\t//Update lists\r\n\t\tif (removed != null) {\r\n\t\t\tremoved.addAll(subpileItems);\r\n\t\t}\r\n\t\tupdated.removeAll(subpileItems);\r\n\t\tif (profileManager.getStockpileIDs().isShown(parent.getStockpileID())) {\r\n\t\t\tString group = Settings.get().getStockpileGroupSettings().getGroup(parent);\r\n\t\t\tif (Settings.get().getStockpileGroupSettings().isGroupExpanded(group)) { //Stockpile group expanded or not in group\r\n\t\t\t\tupdated.addAll(parent.getSubpileTableItems());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static void updateSubpileClaims(Stockpile topStockpile) {\r\n\t\tMap<Integer, StockpileItem> parentItems = new HashMap<>();\r\n\t\tfor (StockpileItem item : topStockpile.getItems()) {\r\n\t\t\tparentItems.put(item.getItemTypeID(), item);\r\n\t\t}\r\n\t\tupdateSubpileClaims(topStockpile, parentItems);\r\n\t}\r\n\r\n\tprivate static void updateSubpileClaims(Stockpile topStockpile, Map<Integer, StockpileItem> topItems) {\r\n\t\tupdateSubpileClaims(topStockpile, topStockpile, topItems, null, 0, \"\");\r\n\t}\r\n\r\n\t/**\r\n\t * Internal: Don't use this.\r\n\t * Do all the subpile calculations\r\n\t * (this where the magic happens, 100% certified unreadable code! As required for all critical parts of this software)\r\n\t * @param topStockpile\r\n\t * @param parentStockpile\r\n\t * @param topItems\r\n\t * @param parentStock\r\n\t * @param parentLevel\r\n\t * @param parentPath\r\n\t */\r\n\tprivate static void updateSubpileClaims(Stockpile topStockpile, Stockpile parentStockpile, Map<Integer, StockpileItem> topItems, SubpileStock parentStock, int parentLevel, String parentPath) {\r\n\t\tfor (Map.Entry<Stockpile, Double> entry : parentStockpile.getSubpiles().entrySet()) {\r\n\t\t\t//For each subpile (stockpile)\r\n\t\t\tStockpile currentStockpile = entry.getKey();\r\n\t\t\tDouble value = entry.getValue();\r\n\t\t\tString path = parentPath + currentStockpile.getName() + \"\\r\\n\";\r\n\t\t\tint level = parentLevel + 1;\r\n\t\t\tSubpileStock subpileStock = new SubpileStock(topStockpile, currentStockpile, parentStockpile, parentStock, value, parentLevel, path);\r\n\t\t\ttopStockpile.addSubpileStock(subpileStock);\r\n\t\t\tfor (StockpileItem stockpileItem : currentStockpile.getItems()) {\r\n\t\t\t\t//For each StockpileItem\r\n\t\t\t\tif (stockpileItem.isTotal()) {\r\n\t\t\t\t\tcontinue; //Ignore Total\r\n\t\t\t\t}\r\n\t\t\t\tStockpileItem parentItem = topItems.get(stockpileItem.getItemTypeID());\r\n\t\t\t\tSubpileItem subpileItem = new SubpileItem(topStockpile, stockpileItem, subpileStock, parentLevel, path);\r\n\t\t\t\tint linkIndex = topStockpile.getSubpileItems().indexOf(subpileItem);\r\n\t\t\t\tif (parentItem != null) { //Add link (Advanced: Item + Link)\r\n\t\t\t\t\tsubpileItem.addItemLink(parentItem, null); //Add link\r\n\t\t\t\t}\r\n\t\t\t\tif (linkIndex >= 0) { //Update item (Advanced: Link + Link = MultiLink)\r\n\t\t\t\t\tSubpileItem linkItem = topStockpile.getSubpileItems().get(linkIndex);\r\n\t\t\t\t\tlinkItem.addItemLink(stockpileItem, subpileStock);\r\n\t\t\t\t\tif (level >= linkItem.getLevel()) {\r\n\t\t\t\t\t\tlinkItem.setPath(path);\r\n\t\t\t\t\t\tlinkItem.setLevel(level);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else { //Add new item (Simple)\r\n\t\t\t\t\ttopStockpile.addSubpileItem(subpileItem);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tupdateSubpileClaims(topStockpile, currentStockpile, topItems, subpileStock, level, path);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/stockpile/StockpileDialog.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.stockpile;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.FilterList;\nimport ca.odell.glazedlists.matchers.Matcher;\nimport ca.odell.glazedlists.matchers.TextMatcherEditor;\nimport ca.odell.glazedlists.swing.AutoCompleteSupport;\nimport java.awt.Font;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.FocusAdapter;\nimport java.awt.event.FocusEvent;\nimport java.awt.event.ItemEvent;\nimport java.awt.event.ItemListener;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport javax.swing.BorderFactory;\nimport javax.swing.ButtonGroup;\nimport javax.swing.GroupLayout;\nimport javax.swing.GroupLayout.Group;\nimport javax.swing.GroupLayout.ParallelGroup;\nimport javax.swing.GroupLayout.SequentialGroup;\nimport javax.swing.Icon;\nimport javax.swing.JButton;\nimport javax.swing.JCheckBox;\nimport javax.swing.JCheckBoxMenuItem;\nimport javax.swing.JComboBox;\nimport javax.swing.JComponent;\nimport javax.swing.JLabel;\nimport javax.swing.JMenuItem;\nimport javax.swing.JPanel;\nimport javax.swing.JRadioButtonMenuItem;\nimport javax.swing.JScrollPane;\nimport javax.swing.JTextField;\nimport javax.swing.event.CaretEvent;\nimport javax.swing.event.CaretListener;\nimport javax.swing.event.DocumentEvent;\nimport javax.swing.event.DocumentListener;\nimport javax.swing.text.JTextComponent;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\nimport net.nikr.eve.jeveasset.data.sde.ItemFlag;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.StringComparators;\nimport net.nikr.eve.jeveasset.gui.shared.DocumentFactory;\nimport net.nikr.eve.jeveasset.gui.shared.DocumentFactory.ValueFlag;\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\nimport net.nikr.eve.jeveasset.gui.shared.InstantToolTip;\nimport net.nikr.eve.jeveasset.gui.shared.TextManager;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDoubleField;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDropDownButton;\nimport net.nikr.eve.jeveasset.gui.shared.components.JFixedToolBar;\nimport net.nikr.eve.jeveasset.gui.shared.components.JIntegerField;\nimport net.nikr.eve.jeveasset.gui.shared.components.ListComboBoxModel;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels.LocationFilterator;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels.StringFilterator;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter.StockpileContainer;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter.StockpileFlag;\nimport net.nikr.eve.jeveasset.i18n.DataModelAsset;\nimport net.nikr.eve.jeveasset.i18n.TabsStockpile;\n\n\npublic class StockpileDialog extends JDialogCentered {\n\n\tprivate enum StockpileDialogAction {\n\t\tFILTER_LOCATIONS,\n\t\tVALIDATE,\n\t\tCANCEL,\n\t\tOK,\n\t\tADD_PLANET,\n\t\tADD_STATION,\n\t\tADD_SYSTEM,\n\t\tADD_REGION,\n\t\tADD_CONSTELLATION,\n\t\tADD_UNIVERSE,\n\t\tADD_OWNER,\n\t\tADD_FLAG,\n\t\tADD_CONTAINER,\n\t\tADD_SINGLETON,\n\t\tADD_JOBS_DAYS,\n\t\tREMOVE,\n\t\tCLONE,\n\t\tCHANGE_LOCATION_TYPE\n\t}\n\n\tprivate static final int FIELD_WIDTH = 600;\n\n\tprivate final JTextField jName;\n\tprivate final JDoubleField jMultiplier;\n\tprivate final JCheckBox jMatchAll;\n\tprivate final JButton jOK;\n\tprivate final List<LocationPanel> locationPanels = new ArrayList<>();\n\tprivate final JPanel jFiltersPanel;\n\tprivate final JLabel jWarning;\n\tprivate final Font font;\n\n\tprivate Stockpile stockpile;\n\tprivate Stockpile cloneStockpile;\n\tprivate boolean template;\n\tprivate boolean updated = false;\n\n\t//Data\n\tprivate final EventList<MyLocation> planets;\n\tprivate final EventList<MyLocation> stations;\n\tprivate final EventList<MyLocation> systems;\n\tprivate final EventList<MyLocation> constellations;\n\tprivate final EventList<MyLocation> regions;\n\tprivate final Set<String> myLocations;\n\tprivate final List<OwnerType> owners;\n\tprivate final List<ItemFlag> itemFlags;\n\tprivate final List<String> containers;\n\tprivate boolean initialized = false;\n\n\tpublic StockpileDialog(final Program program) {\n\t\tsuper(program, TabsStockpile.get().addStockpileTitle(), Images.TOOL_STOCKPILE.getImage());\n\t//Data\n\t\t//Flags - static\n\t\titemFlags = new ArrayList<>(StaticData.get().getItemFlags().values());\n\t\tCollections.sort(itemFlags);\n\t\t//Locations - not static\n\t\tplanets = EventListManager.create();\n\t\tstations = EventListManager.create();\n\t\tsystems = EventListManager.create();\n\t\tconstellations = EventListManager.create();\n\t\tregions = EventListManager.create();\n\t\t//Owners - not static\n\t\towners = new ArrayList<>();\n\t\t//myLocations - not static\n\t\tmyLocations = new HashSet<>();\n\t\t//Containers - not static\n\t\tcontainers = new ArrayList<>();\n\n\t\tListenerClass listener = new ListenerClass();\n\t//Name\n\t\tBorderPanel jNamePanel = new BorderPanel(TabsStockpile.get().name());\n\t\tjName = new JTextField();\n\t\tjName.addFocusListener(new FocusAdapter() {\n\t\t\t@Override\n\t\t\tpublic void focusGained(final FocusEvent e) {\n\t\t\t\tjName.selectAll();\n\t\t\t}\n\t\t});\n\t\tjName.addCaretListener(listener);\n\t\tjNamePanel.add(jName);\n\t\tfont = jName.getFont();\n\t//Multiplier\n\t\tBorderPanel jMultiplierPanel = new BorderPanel(TabsStockpile.get().multiplier());\n\n\t\tjMultiplier = new JDoubleField(\"1\", DocumentFactory.ValueFlag.POSITIVE_AND_NOT_ZERO);\n\t\tjMultiplier.setAutoSelectAll(true);\n\t\tjMultiplierPanel.add(jMultiplier);\n\t//Match All\n\t\tBorderPanel jMatchAllPanel = new BorderPanel(TabsStockpile.get().match());\n\n\t\tjMatchAll = new JCheckBox(TabsStockpile.get().matchAll());\n\t\tjMatchAll.setToolTipText(TabsStockpile.get().matchAllTip());\n\t\tjMatchAllPanel.add(jMatchAll);\n\t\tjMatchAllPanel.addGab(5);\n\t//Add Filter\n\t\tJFixedToolBar jToolBar = new JFixedToolBar();\n\t\tjToolBar.setBorder(BorderFactory.createTitledBorder(TabsStockpile.get().addFilter()));\n\n\t\tJButton jStation = new JButton(TabsStockpile.get().station(), Images.LOC_STATION.getIcon());\n\t\tjStation.setHorizontalAlignment(JButton.LEFT);\n\t\tjStation.setActionCommand(StockpileDialogAction.ADD_STATION.name());\n\t\tjStation.addActionListener(listener);\n\t\tjToolBar.addButton(jStation);\n\n\t\tJButton jPlanet = new JButton(TabsStockpile.get().planet(), Images.LOC_PLANET.getIcon());\n\t\tjPlanet.setHorizontalAlignment(JButton.LEFT);\n\t\tjPlanet.setActionCommand(StockpileDialogAction.ADD_PLANET.name());\n\t\tjPlanet.addActionListener(listener);\n\t\tjToolBar.addButton(jPlanet);\n\n\t\tJButton jSystem = new JButton(TabsStockpile.get().system(), Images.LOC_SYSTEM.getIcon());\n\t\tjSystem.setHorizontalAlignment(JButton.LEFT);\n\t\tjSystem.setActionCommand(StockpileDialogAction.ADD_SYSTEM.name());\n\t\tjSystem.addActionListener(listener);\n\t\tjToolBar.addButton(jSystem);\n\n\t\tJButton jConstellation = new JButton(TabsStockpile.get().constellation(), Images.LOC_CONSTELLATION.getIcon());\n\t\tjConstellation.setHorizontalAlignment(JButton.LEFT);\n\t\tjConstellation.setActionCommand(StockpileDialogAction.ADD_CONSTELLATION.name());\n\t\tjConstellation.addActionListener(listener);\n\t\tjToolBar.addButton(jConstellation);\n\n\t\tJButton jRegion = new JButton(TabsStockpile.get().region(), Images.LOC_REGION.getIcon());\n\t\tjRegion.setHorizontalAlignment(JButton.LEFT);\n\t\tjRegion.setActionCommand(StockpileDialogAction.ADD_REGION.name());\n\t\tjRegion.addActionListener(listener);\n\t\tjToolBar.addButton(jRegion);\n\n\t\tJButton jUniverse = new JButton(TabsStockpile.get().universe(), Images.LOC_LOCATIONS.getIcon());\n\t\tjUniverse.setHorizontalAlignment(JButton.LEFT);\n\t\tjUniverse.setActionCommand(StockpileDialogAction.ADD_UNIVERSE.name());\n\t\tjUniverse.addActionListener(listener);\n\t\tjToolBar.addButton(jUniverse);\n\n\t\tjWarning = createToolTipLabel(Images.UPDATE_DONE_ERROR.getIcon(), TabsStockpile.get().addLocation());\n\t\tjToolBar.add(jWarning);\n\n\t//Filters\n\t\tjFiltersPanel = new JPanel();\n\n\t\tJScrollPane jFiltersScroll = new JScrollPane(jFiltersPanel);\n\t\tjFiltersScroll.getVerticalScrollBar().setUnitIncrement(16);\n\t\tjFiltersScroll.setBorder(null);\n\n\t//OK\n\t\tjOK = new JButton(TabsStockpile.get().ok());\n\t\tjOK.setActionCommand(StockpileDialogAction.OK.name());\n\t\tjOK.addActionListener(listener);\n\t\tjOK.setEnabled(false);\n\n\t\tJButton jCancel = new JButton(TabsStockpile.get().cancel());\n\t\tjCancel.setActionCommand(StockpileDialogAction.CANCEL.name());\n\t\tjCancel.addActionListener(listener);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jNamePanel.getPanel(), FIELD_WIDTH - 215, FIELD_WIDTH - 215, FIELD_WIDTH - 215)\n\t\t\t\t\t.addComponent(jMultiplierPanel.getPanel())\n\t\t\t\t\t.addComponent(jMatchAllPanel.getPanel())\n\t\t\t\t)\n\t\t\t\t.addComponent(jToolBar, FIELD_WIDTH, FIELD_WIDTH, FIELD_WIDTH)\n\t\t\t\t.addComponent(jFiltersScroll, FIELD_WIDTH, FIELD_WIDTH, FIELD_WIDTH)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jNamePanel.getPanel())\n\t\t\t\t\t.addComponent(jMultiplierPanel.getPanel())\n\t\t\t\t\t.addComponent(jMatchAllPanel.getPanel())\n\t\t\t\t)\n\t\t\t\t.addComponent(jToolBar, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t.addComponent(jFiltersScroll, 0, GroupLayout.DEFAULT_SIZE, 500)\n\t\t\t\t.addGap(15)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t);\n\t}\n\n\tprivate Stockpile getStockpile() {\n\t\t//Name\n\t\tString name;\n\t\tif (jName.isEnabled()) {\n\t\t\tname = jName.getText();\n\t\t} else {\n\t\t\tname = \"\";\n\t\t}\n\t\t//Filters\n\t\tList<StockpileFilter> stockpileFilters = new ArrayList<>();\n\t\tfor (LocationPanel locationPanel : locationPanels) {\n\t\t\tstockpileFilters.add(locationPanel.getFilter());\n\t\t}\n\t\t//Multiplier\n\t\tdouble multiplier;\n\t\ttry {\n\t\t\tmultiplier = Double.parseDouble(jMultiplier.getText());\n\t\t} catch (NumberFormatException ex) {\n\t\t\tmultiplier = 1;\n\t\t}\n\t\t//Match All\n\t\tboolean matchAll = jMatchAll.isSelected();\n\t\t//Add\n\t\treturn new Stockpile(name, null, stockpileFilters, multiplier, matchAll); //New id\n\t}\n\n\tprivate void autoValidate() {\n\t\tboolean b = true;\n\t\tif (locationPanels.isEmpty()) {\n\t\t\tb = false;\n\t\t}\n\t\tjWarning.setVisible(locationPanels.isEmpty());\n\t\tfor (LocationPanel locationPanel : locationPanels) {\n\t\t\tif (!locationPanel.isValid()) {\n\t\t\t\tb = false;\n\t\t\t}\n\t\t}\n\t\tif (Settings.get().getStockpiles().contains(getStockpile())) {\n\t\t\tif (stockpile != null && stockpile.getName().equals(getStockpile().getName())) {\n\t\t\t\tColorSettings.configReset(jName);\n\t\t\t} else {\n\t\t\t\tb = false;\n\t\t\t\tColorSettings.config(jName, ColorEntry.GLOBAL_ENTRY_INVALID);\n\t\t\t}\n\t\t} else if (!jName.isEnabled()) {\n\t\t\t//Do nothing\n\t\t} else if (jName.getText().isEmpty()) {\n\t\t\tColorSettings.config(jName, ColorEntry.GLOBAL_ENTRY_INVALID);\n\t\t\tb = false;\n\t\t} else {\n\t\t\tColorSettings.configReset(jName);\n\t\t}\n\t\tjOK.setEnabled(b);\n\t}\n\n\tboolean showEdit(final Stockpile stockpile) {\n\t\tclear();\n\t\tthis.stockpile = stockpile;\n\t\t//Title\n\t\tthis.getDialog().setTitle(TabsStockpile.get().editStockpileTitle());\n\t\t//Load\n\t\tloadStockpile(stockpile, stockpile.getName());\n\t\t//Show\n\t\tshow();\n\t\treturn updated;\n\t}\n\n\tStockpile showAdd() {\n\t\tclear();\n\t\tthis.getDialog().setTitle(TabsStockpile.get().addStockpileTitle());\n\t\tshow();\n\t\treturn stockpile;\n\t}\n\n\tStockpile showAdd(final String name) {\n\t\tclear();\n\t\tjName.setText(name);\n\t\tthis.getDialog().setTitle(TabsStockpile.get().addStockpileTitle());\n\t\tshow();\n\t\treturn stockpile;\n\t}\n\n\tStockpile showTemplate() {\n\t\tclear();\n\t\tColorSettings.configReset(jName);\n\t\ttemplate = true;\n\t\tjName.setEnabled(false);\n\t\tjName.setText(TabsStockpile.get().importOptionsTemplate());\n\t\tjName.setFont(font.deriveFont(Font.ITALIC));\n\t\tthis.getDialog().setTitle(TabsStockpile.get().addStockpileTitle());\n\t\tshow();\n\t\treturn stockpile;\n\t}\n\n\tStockpile showRename(final Stockpile stockpile) {\n\t\tclear();\n\t\tcloneStockpile = stockpile.deepClone();\n\t\t//Title\n\t\tthis.getDialog().setTitle(TabsStockpile.get().renameStockpileTitle());\n\t\t//Load\n\t\tloadStockpile(cloneStockpile, cloneStockpile.getName());\n\t\t//Show\n\t\tshow();\n\t\tif (updated) {\n\t\t\treturn cloneStockpile;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tStockpile showClone(final Stockpile stockpile) {\n\t\tclear();\n\t\tcloneStockpile = stockpile.deepClone();\n\t\t//Title\n\t\tthis.getDialog().setTitle(TabsStockpile.get().cloneStockpileTitle());\n\t\t//Load\n\t\tloadStockpile(cloneStockpile, stockpile.getName());\n\t\t//Show\n\t\tshow();\n\t\tif (updated) {\n\t\t\treturn cloneStockpile;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate void loadStockpile(Stockpile loadStockpile, String name) {\n\t\t//Name\n\t\tjName.setText(name);\n\n\t\t//Multiplier\n\t\tjMultiplier.setText(Formatter.compareFormat(loadStockpile.getMultiplier()));\n\n\t\t//Match All\n\t\tjMatchAll.setSelected(loadStockpile.isMatchAll());\n\n\t\t//Filters\n\t\tfor (StockpileFilter filter : loadStockpile.getFilters()) {\n\t\t\tLocationPanel locationPanel = new LocationPanel(filter);\n\t\t\tlocationPanels.add(locationPanel);\n\t\t}\n\n\t\tupdatePanels();\n\t}\n\n\tprivate void updatePanels() {\n\t\tjFiltersPanel.removeAll();\n\t\tGroupLayout groupLayout = new GroupLayout(jFiltersPanel);\n\t\tjFiltersPanel.setLayout(groupLayout);\n\t\tgroupLayout.setAutoCreateGaps(true);\n\t\tgroupLayout.setAutoCreateContainerGaps(false);\n\t\tParallelGroup horizontalGroup = groupLayout.createParallelGroup();\n\t\tSequentialGroup verticalGroup = groupLayout.createSequentialGroup();\n\t\tfor (LocationPanel locationPanel : locationPanels) {\n\t\t\thorizontalGroup.addComponent(locationPanel.getPanel());\n\t\t\tverticalGroup.addComponent(locationPanel.getPanel());\n\t\t}\n\t\tjFiltersPanel.setVisible(!locationPanels.isEmpty());\n\t\tgroupLayout.setHorizontalGroup(horizontalGroup);\n\t\tgroupLayout.setVerticalGroup(verticalGroup);\n\t\tautoValidate();\n\t\tthis.getDialog().pack();\n\t}\n\n\tprivate void show() {\n\t\tupdated = false;\n\t\tif (!initialized) {\n\t\t\tupdateData();\n\t\t}\n\t\tsuper.setVisible(true);\n\t}\n\n\tprivate void clear() {\n\t\tstockpile = null;\n\t\tcloneStockpile = null;\n\t\ttemplate = false;\n\n\t\tjName.setEnabled(true);\n\t\tjName.setFont(font);\n\t\tjName.setText(\"\");\n\t\tjMultiplier.setText(\"1\");\n\t\tjMatchAll.setSelected(false);\n\n\t\tlocationPanels.clear();\n\t\tupdatePanels();\n\t}\n\n\tvoid updateData() {\n\t\t//Locations\n\t\tList<MyLocation> planetList = new ArrayList<>();\n\t\tList<MyLocation> stationList = new ArrayList<>();\n\t\tList<MyLocation> systemList = new ArrayList<>();\n\t\tList<MyLocation> constellationList = new ArrayList<>();\n\t\tList<MyLocation> regionList = new ArrayList<>();\n\t\tfor (MyLocation location : StaticData.get().getLocations()) {\n\t\t\tif (location.isPlanet()) {\n\t\t\t\tplanetList.add(location);\n\t\t\t} else if (location.isStation()) { //Not planet\n\t\t\t\tstationList.add(location);\n\t\t\t} else if (location.isSystem()) {\n\t\t\t\tsystemList.add(location);\n\t\t\t} else if (location.isConstellation()) {\n\t\t\t\tconstellationList.add(location);\n\t\t\t} else if (location.isRegion()) {\n\t\t\t\tregionList.add(location);\n\t\t\t}\n\t\t}\n\t\tCollections.sort(planetList);\n\t\tCollections.sort(stationList);\n\t\tCollections.sort(systemList);\n\t\tCollections.sort(constellationList);\n\t\tCollections.sort(regionList);\n\t\ttry {\n\t\t\tplanets.getReadWriteLock().writeLock().lock();\n\t\t\tplanets.clear();\n\t\t\tplanets.addAll(planetList);\n\t\t} finally {\n\t\t\tplanets.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t\ttry {\n\t\t\tstations.getReadWriteLock().writeLock().lock();\n\t\t\tstations.clear();\n\t\t\tstations.addAll(stationList);\n\t\t} finally {\n\t\t\tstations.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t\ttry {\n\t\t\tsystems.getReadWriteLock().writeLock().lock();\n\t\t\tsystems.clear();\n\t\t\tsystems.addAll(systemList);\n\t\t} finally {\n\t\t\tsystems.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t\ttry {\n\t\t\tconstellations.getReadWriteLock().writeLock().lock();\n\t\t\tconstellations.clear();\n\t\t\tconstellations.addAll(constellationList);\n\t\t} finally {\n\t\t\tconstellations.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t\ttry {\n\t\t\tregions.getReadWriteLock().writeLock().lock();\n\t\t\tregions.clear();\n\t\t\tregions.addAll(regionList);\n\t\t} finally {\n\t\t\tregions.getReadWriteLock().writeLock().unlock();\n\t\t}\n\n\t\t//Name\n\t\tjName.setText(\"\");\n\n\t\t//Owners\n\t\tMap<Long, OwnerType> ownersById = new HashMap<>();\n\t\tfor (OwnerType owner : program.getOwnerTypes()) {\n\t\t\townersById.put(owner.getOwnerID(), owner);\n\t\t}\n\t\towners.clear();\n\t\towners.addAll(ownersById.values());\n\t\tCollections.sort(owners);\n\n\t\t//Containers & MyLocations Loop\n\t\tSet<String> containerSet = new HashSet<>();\n\t\tmyLocations.clear();\n\t\tfor (MyAsset asset : program.getAssetsList()) {\n\t\t\tif (!asset.getContainer().isEmpty()) {\n\t\t\t\tcontainerSet.add(asset.getContainer());\n\t\t\t}\n\t\t\tmyLocations.add(asset.getLocation().getLocation());\n\t\t\tmyLocations.add(asset.getLocation().getSystem());\n\t\t\tmyLocations.add(asset.getLocation().getConstellation());\n\t\t\tmyLocations.add(asset.getLocation().getRegion());\n\t\t}\n\t\tfor (MyIndustryJob industryJob : program.getIndustryJobsList()) {\n\t\t\tif (!industryJob.isNotDeliveredToAssets()) {\n\t\t\t\tcontinue; //Only open industry jobs\n\t\t\t}\n\t\t\tmyLocations.add(industryJob.getLocation().getLocation());\n\t\t\tmyLocations.add(industryJob.getLocation().getSystem());\n\t\t\tmyLocations.add(industryJob.getLocation().getConstellation());\n\t\t\tmyLocations.add(industryJob.getLocation().getRegion());\n\t\t}\n\t\tfor (MyMarketOrder marketOrder : program.getMarketOrdersList()) {\n\t\t\tif (!marketOrder.isActive()) {\n\t\t\t\tcontinue; //Only include active orders\n\t\t\t}\n\t\t\tmyLocations.add(marketOrder.getLocation().getLocation());\n\t\t\tmyLocations.add(marketOrder.getLocation().getSystem());\n\t\t\tmyLocations.add(marketOrder.getLocation().getConstellation());\n\t\t\tmyLocations.add(marketOrder.getLocation().getRegion());\n\t\t}\n\t\tfor (MyContract contract : program.getContractList()) {\n\t\t\tif (!contract.isOpen()) {\n\t\t\t\tcontinue; //Only include open contracts\n\t\t\t}\n\t\t\tmyLocations.add(contract.getStartLocation().getLocation());\n\t\t\tmyLocations.add(contract.getStartLocation().getSystem());\n\t\t\tmyLocations.add(contract.getStartLocation().getConstellation());\n\t\t\tmyLocations.add(contract.getStartLocation().getRegion());\n\t\t\tmyLocations.add(contract.getEndLocation().getLocation());\n\t\t\tmyLocations.add(contract.getEndLocation().getSystem());\n\t\t\tmyLocations.add(contract.getEndLocation().getConstellation());\n\t\t\tmyLocations.add(contract.getEndLocation().getRegion());\n\t\t}\n\t\t//Containers\n\t\tcontainers.clear();\n\t\tcontainers.addAll(containerSet);\n\t\tCollections.sort(containers, StringComparators.CASE_INSENSITIVE);\n\t\tinitialized = true;\n\t}\n\n\t@Override\n\tprotected JComponent getDefaultFocus() {\n\t\treturn jName;\n\t}\n\n\t@Override\n\tprotected JButton getDefaultButton() {\n\t\treturn jOK;\n\t}\n\n\t@Override\n\tprotected void windowShown() { }\n\n\t@Override\n\tprotected void save() {\n\t\tSettings.lock(\"Stockpile (Stockpile dialog)\"); //Lock for Stockpile (Stockpile dialog)\n\t\tif (template) { //Edit\n\t\t\tstockpile = getStockpile();\n\t\t\t//Don't save anything\n\t\t} else if (stockpile != null) { //Edit\n\t\t\tString group = Settings.get().getStockpileGroupSettings().getGroup(stockpile);\n\t\t\tSettings.get().getStockpileGroupSettings().removeGroup(stockpile);\n\t\t\tstockpile.update(getStockpile());\n\t\t\tSettings.get().getStockpileGroupSettings().setGroup(stockpile, group);\n\t\t} else if (cloneStockpile != null) { //Clone\n\t\t\tcloneStockpile.update(getStockpile());\n\t\t\tStockpileTab.addSettingStockpile(cloneStockpile, false); //Add Clone\n\t\t} else { //Add\n\t\t\tstockpile = getStockpile();\n\t\t\tStockpileTab.addSettingStockpile(stockpile, false); //Add\n\t\t}\n\t\tStockpileTab.sortSettingStockpile();\n\t\tupdated = true;\n\t\tSettings.unlock(\"Stockpile (Stockpile dialog)\"); //Unlock for Stockpile (Stockpile dialog)\n\t\tprogram.saveSettings(\"Stockpile (Stockpile dialog)\"); //Save Stockpile (Stockpile dialog)\n\t\tthis.setVisible(false);\n\t}\n\n\tprivate static JLabel createToolTipLabel(Icon icon, String toolTip) {\n\t\t\tJLabel jLabel = new JLabel(icon);\n\t\t\tjLabel.setToolTipText(toolTip);\n\t\t\tInstantToolTip.install(jLabel);\n\t\t\treturn jLabel;\n\t}\n\n\tprivate class ListenerClass implements ActionListener, CaretListener {\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (StockpileDialogAction.OK.name().equals(e.getActionCommand())) {\n\t\t\t\tsave();\n\t\t\t} else if (StockpileDialogAction.CANCEL.name().equals(e.getActionCommand())) {\n\t\t\t\tsetVisible(false);\n\t\t\t} else if (StockpileDialogAction.ADD_PLANET.name().equals(e.getActionCommand())) {\n\t\t\t\tlocationPanels.add(new LocationPanel(LocationType.PLANET));\n\t\t\t\tupdatePanels();\n\t\t\t} else if (StockpileDialogAction.ADD_STATION.name().equals(e.getActionCommand())) {\n\t\t\t\tlocationPanels.add(new LocationPanel(LocationType.STATION));\n\t\t\t\tupdatePanels();\n\t\t\t} else if (StockpileDialogAction.ADD_SYSTEM.name().equals(e.getActionCommand())) {\n\t\t\t\tlocationPanels.add(new LocationPanel(LocationType.SYSTEM));\n\t\t\t\tupdatePanels();\n\t\t\t} else if (StockpileDialogAction.ADD_CONSTELLATION.name().equals(e.getActionCommand())) {\n\t\t\t\tlocationPanels.add(new LocationPanel(LocationType.CONSTELLATION));\n\t\t\t\tupdatePanels();\n\t\t\t} else if (StockpileDialogAction.ADD_REGION.name().equals(e.getActionCommand())) {\n\t\t\t\tlocationPanels.add(new LocationPanel(LocationType.REGION));\n\t\t\t\tupdatePanels();\n\t\t\t} else if (StockpileDialogAction.ADD_UNIVERSE.name().equals(e.getActionCommand())) {\n\t\t\t\tlocationPanels.add(new LocationPanel(LocationType.UNIVERSE));\n\t\t\t\tupdatePanels();\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void caretUpdate(final CaretEvent e) {\n\t\t\tautoValidate();\n\t\t}\n\t}\n\n\tstatic class LocationsMatcher implements Matcher<MyLocation> {\n\n\t\tprivate Set<String> myLocations;\n\n\t\tpublic LocationsMatcher(final Set<String> myLocations) {\n\t\t\tthis.myLocations = myLocations;\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean matches(final MyLocation item) {\n\t\t\treturn myLocations.contains(item.getLocation());\n\t\t}\n\t}\n\n\tprivate enum FilterType {\n\t\tOWNER,\n\t\tFLAG,\n\t\tCONTAINER,\n\t\tSINGLETON,\n\t\tJOBS_DAYS,\n\t}\n\n\tprivate enum LocationType {\n\t\tPLANET,\n\t\tSTATION,\n\t\tSYSTEM,\n\t\tCONSTELLATION,\n\t\tREGION,\n\t\tUNIVERSE,\n\t}\n\n\tprivate class FilterPanel {\n\t\t//GUI\n\t\tprivate final JPanel jPanel;\n\t\tprivate final GroupLayout groupLayout;\n\t\tprivate final JButton jRemove;\n\t\tprivate final JLabel jType;\n\t\tprivate final JLabel jWarning;\n\t\t//Owner\n\t\tprivate JComboBox<OwnerType> jOwner;\n\t\t//Flag\n\t\tprivate JComboBox<ItemFlag> jFlag;\n\t\tprivate JCheckBox jFlagIncludeSubs;\n\t\t//Container\n\t\tprivate JComboBox<String> jContainer;\n\t\tprivate JCheckBox jContainerIncludeSubs;\n\t\t//Singleton\n\t\tprivate JComboBox<String> jSingleton;\n\t\t//Jobs Days\n\t\tprivate JIntegerField jJobsDays;\n\t\tprivate JComboBox<String> jJobsMoreOrLess;\n\n\t\tprivate final ListenerClass listener = new ListenerClass();\n\n\t\tprivate final LocationPanel locationPanel;\n\t\tprivate final FilterType filterType;\n\n\t\tpublic FilterPanel(final LocationPanel locationPanel, final StockpileContainer container) {\n\t\t\tthis(locationPanel, FilterType.CONTAINER);\n\n\t\t\tjContainer.setSelectedItem(container.getContainer());\n\t\t\tjContainerIncludeSubs.setSelected(container.isIncludeSubs());\n\t\t}\n\n\t\tpublic FilterPanel(final LocationPanel locationPanel, final ItemFlag itemFlag, final boolean matchParents) {\n\t\t\tthis(locationPanel, FilterType.FLAG);\n\n\t\t\tjFlag.setSelectedItem(itemFlag);\n\t\t\tjFlagIncludeSubs.setSelected(matchParents);\n\t\t}\n\n\t\tpublic FilterPanel(final LocationPanel locationPanel, final OwnerType owner) {\n\t\t\tthis(locationPanel, FilterType.OWNER);\n\n\t\t\tjOwner.setSelectedItem(owner);\n\t\t}\n\n\t\tpublic FilterPanel(final LocationPanel locationPanel, final boolean singleton) {\n\t\t\tthis(locationPanel, FilterType.SINGLETON);\n\n\t\t\tjSingleton.setSelectedItem(singleton ? DataModelAsset.get().unpackaged() : DataModelAsset.get().packaged());\n\t\t}\n\n\t\tpublic FilterPanel(final LocationPanel locationPanel, final int days, boolean less) {\n\t\t\tthis(locationPanel, FilterType.JOBS_DAYS);\n\t\t\tif (less) {\n\t\t\t\tjJobsMoreOrLess.setSelectedIndex(0);\n\t\t\t} else {\n\t\t\t\tjJobsMoreOrLess.setSelectedIndex(1);\n\t\t\t}\n\t\t\tjJobsDays.setText(String.valueOf(days));\n\t\t}\n\n\t\tpublic FilterPanel(final LocationPanel locationPanel, final FilterType filterType) {\n\t\t\tthis.locationPanel = locationPanel;\n\t\t\tthis.filterType = filterType;\n\t\t\tjPanel = new JPanel();\n\t\t\tgroupLayout = new GroupLayout(jPanel);\n\t\t\tjPanel.setLayout(groupLayout);\n\t\t\tgroupLayout.setAutoCreateGaps(true);\n\t\t\tgroupLayout.setAutoCreateContainerGaps(false);\n\n\t\t\tjRemove = new JButton(Images.EDIT_DELETE.getIcon());\n\t\t\tjRemove.setActionCommand(StockpileDialogAction.REMOVE.name());\n\t\t\tjRemove.addActionListener(listener);\n\n\t\t\tjWarning = createToolTipLabel(Images.UPDATE_DONE_ERROR.getIcon(), TabsStockpile.get().duplicate());\n\n\t\t\tjType = new JLabel();\n\n\t\t\tif (filterType == FilterType.CONTAINER) {\n\t\t\t\tjType.setIcon(Images.LOC_CONTAINER_WHITE.getIcon());\n\t\t\t\tjType.setToolTipText(TabsStockpile.get().container());\n\t\t\t\tEventList<String> containerEventList = EventListManager.create();\n\t\t\t\ttry {\n\t\t\t\t\tcontainerEventList.getReadWriteLock().writeLock().lock();\n\t\t\t\t\tcontainerEventList.addAll(containers);\n\t\t\t\t} finally {\n\t\t\t\t\tcontainerEventList.getReadWriteLock().writeLock().unlock();\n\t\t\t\t}\n\t\t\t\tjContainer = new JComboBox<>();\n\t\t\t\tjContainerIncludeSubs = new JCheckBox(TabsStockpile.get().containerIncludeSubs());\n\t\t\t\tjContainerIncludeSubs.setToolTipText(TabsStockpile.get().containerIncludeSubsToolTip());\n\t\t\t\tTextManager.installTextComponent((JTextComponent) jContainer.getEditor().getEditorComponent());\n\t\t\t\tAutoCompleteSupport<String> containerAutoComplete = AutoCompleteSupport.install(jContainer, EventModels.createSwingThreadProxyList(containerEventList), new StringFilterator());\n\t\t\t\tcontainerAutoComplete.setFilterMode(TextMatcherEditor.CONTAINS);\n\t\t\t\t((JTextComponent) jContainer.getEditor().getEditorComponent()).getDocument().addDocumentListener(listener);\n\t\t\t\tjContainer.setActionCommand(StockpileDialogAction.VALIDATE.name());\n\t\t\t\tjContainer.addActionListener(listener);\n\n\t\t\t\tgroupLayout.setHorizontalGroup(\n\t\t\t\t\tgroupLayout.createSequentialGroup()\n\t\t\t\t\t\t.addComponent(jType)\n\t\t\t\t\t\t.addComponent(jWarning)\n\t\t\t\t\t\t.addComponent(jContainer, 0, 0, FIELD_WIDTH)\n\t\t\t\t\t\t.addComponent(jContainerIncludeSubs)\n\t\t\t\t\t\t.addComponent(jRemove, Program.getIconButtonsWidth(), Program.getIconButtonsWidth(), Program.getIconButtonsWidth())\n\t\t\t\t);\n\t\t\t\tgroupLayout.setVerticalGroup(\n\t\t\t\t\tgroupLayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t\t.addComponent(jType, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jWarning, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jContainer, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jContainerIncludeSubs, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jRemove, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t);\n\t\t\t} else if (filterType == FilterType.SINGLETON) {\n\t\t\t\tjType.setIcon(Images.INCLUDE_PACKAGED.getIcon());\n\t\t\t\tjType.setToolTipText(TabsStockpile.get().container());\n\n\t\t\t\tString[] singleton = {DataModelAsset.get().unpackaged(), DataModelAsset.get().packaged()};\n\t\t\t\tjSingleton = new JComboBox<>(new ListComboBoxModel<>(singleton));\n\n\t\t\t\tgroupLayout.setHorizontalGroup(\n\t\t\t\t\tgroupLayout.createSequentialGroup()\n\t\t\t\t\t\t.addComponent(jType)\n\t\t\t\t\t\t.addComponent(jWarning)\n\t\t\t\t\t\t.addComponent(jSingleton, 0, 0, FIELD_WIDTH)\n\t\t\t\t\t\t.addComponent(jRemove, Program.getIconButtonsWidth(), Program.getIconButtonsWidth(), Program.getIconButtonsWidth())\n\t\t\t\t);\n\t\t\t\tgroupLayout.setVerticalGroup(\n\t\t\t\t\tgroupLayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t\t.addComponent(jType, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jWarning, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jSingleton, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jRemove, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t);\n\t\t\t} else if (filterType == FilterType.FLAG) {\n\t\t\t\tjType.setIcon(Images.LOC_FLAG.getIcon());\n\t\t\t\tjType.setToolTipText(TabsStockpile.get().flag());\n\n\t\t\t\tjFlag = new JComboBox<>(new ListComboBoxModel<>(itemFlags));\n\t\t\t\tjFlag.setActionCommand(StockpileDialogAction.VALIDATE.name());\n\t\t\t\tjFlag.addActionListener(listener);\n\n\t\t\t\tjFlagIncludeSubs = new JCheckBox(TabsStockpile.get().flagIncludeSubs());\n\t\t\t\tjFlagIncludeSubs.setToolTipText(TabsStockpile.get().flagIncludeSubsToolTip());\n\n\t\t\t\tgroupLayout.setHorizontalGroup(\n\t\t\t\t\tgroupLayout.createSequentialGroup()\n\t\t\t\t\t\t.addComponent(jType)\n\t\t\t\t\t\t.addComponent(jWarning)\n\t\t\t\t\t\t.addComponent(jFlag, 0, 0, FIELD_WIDTH)\n\t\t\t\t\t\t.addComponent(jFlagIncludeSubs)\n\t\t\t\t\t\t.addComponent(jRemove, Program.getIconButtonsWidth(), Program.getIconButtonsWidth(), Program.getIconButtonsWidth())\n\t\t\t\t);\n\t\t\t\tgroupLayout.setVerticalGroup(\n\t\t\t\t\tgroupLayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t\t.addComponent(jType, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jWarning, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jFlag, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jFlagIncludeSubs, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jRemove, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t);\n\t\t\t} else if (filterType == FilterType.OWNER) {\n\t\t\t\tjType.setIcon(Images.LOC_OWNER.getIcon());\n\t\t\t\tjType.setToolTipText(TabsStockpile.get().owner());\n\n\t\t\t\tjOwner = new JComboBox<>(new ListComboBoxModel<>(owners));\n\t\t\t\tjOwner.setActionCommand(StockpileDialogAction.VALIDATE.name());\n\t\t\t\tjOwner.addActionListener(listener);\n\t\t\t\tjOwner.setEnabled(!owners.isEmpty());\n\n\t\t\t\tgroupLayout.setHorizontalGroup(\n\t\t\t\t\tgroupLayout.createSequentialGroup()\n\t\t\t\t\t\t.addComponent(jType)\n\t\t\t\t\t\t.addComponent(jWarning)\n\t\t\t\t\t\t.addComponent(jOwner, 0, 0, FIELD_WIDTH)\n\t\t\t\t\t\t.addComponent(jRemove, Program.getIconButtonsWidth(), Program.getIconButtonsWidth(), Program.getIconButtonsWidth())\n\t\t\t\t);\n\t\t\t\tgroupLayout.setVerticalGroup(\n\t\t\t\t\tgroupLayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t\t.addComponent(jType, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jWarning, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jOwner, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jRemove, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t);\n\t\t\t} else if (filterType == FilterType.JOBS_DAYS) {\n\t\t\t\tjType.setIcon(Images.INCLUDE_JOBS.getIcon());\n\t\t\t\tjType.setToolTipText(TabsStockpile.get().jobsDaysTip());\n\n\t\t\t\tString[] moreOrLess = {TabsStockpile.get().jobsDaysLess(), TabsStockpile.get().jobsDaysMore()};\n\t\t\t\tjJobsMoreOrLess = new JComboBox<>(moreOrLess);\n\t\t\t\tjJobsMoreOrLess.setPrototypeDisplayValue(TabsStockpile.get().jobsDaysMore());\n\n\t\t\t\tjJobsDays = new JIntegerField(\"1\", ValueFlag.POSITIVE_AND_NOT_ZERO);\n\t\t\t\tjJobsDays.setHorizontalAlignment(JTextField.RIGHT);\n\t\t\t\tjJobsDays.addFocusListener(new FocusAdapter() {\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic void focusGained(FocusEvent e) {\n\t\t\t\t\t\tjJobsDays.selectAll();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tjWarning.setToolTipText(TabsStockpile.get().jobsDaysWarning());\n\n\t\t\t\tgroupLayout.setHorizontalGroup(\n\t\t\t\t\tgroupLayout.createSequentialGroup()\n\t\t\t\t\t\t.addComponent(jType)\n\t\t\t\t\t\t.addComponent(jWarning)\n\t\t\t\t\t\t.addComponent(jJobsDays, 0, 0, FIELD_WIDTH)\n\t\t\t\t\t\t.addComponent(jJobsMoreOrLess, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t\t\t.addComponent(jRemove, Program.getIconButtonsWidth(), Program.getIconButtonsWidth(), Program.getIconButtonsWidth())\n\t\t\t\t);\n\t\t\t\tgroupLayout.setVerticalGroup(\n\t\t\t\t\tgroupLayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t\t\t.addComponent(jType, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jWarning, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jJobsDays, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jJobsMoreOrLess, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jRemove, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tprivate void remove() {\n\t\t\tif (filterType == FilterType.SINGLETON) {\n\t\t\t\tlocationPanel.removeSingleton();\n\t\t\t} else if (filterType == FilterType.JOBS_DAYS) {\n\t\t\t\tlocationPanel.removeJobsDays();\n\t\t\t} else if (filterType == FilterType.CONTAINER) {\n\t\t\t\tlocationPanel.removeContainer(this);\n\t\t\t} else if (filterType == FilterType.FLAG) {\n\t\t\t\tlocationPanel.removeFlag(this);\n\t\t\t} else if (filterType == FilterType.OWNER) {\n\t\t\t\tlocationPanel.removeOwner(this);\n\t\t\t}\n\t\t\tupdatePanels();\n\t\t}\n\n\t\tpublic StockpileContainer getContainer() {\n\t\t\treturn new StockpileContainer(((JTextComponent) jContainer.getEditor().getEditorComponent()).getText(), jContainerIncludeSubs.isSelected());\n\t\t}\n\n\t\tpublic Integer getJobsDaysLess() {\n\t\t\tif (jJobsDays == null || !getValue(jJobsMoreOrLess, String.class).equals(TabsStockpile.get().jobsDaysLess())) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\treturn Integer.valueOf(jJobsDays.getText());\n\t\t\t} catch (NumberFormatException ex) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tpublic Integer getJobsDaysMore() {\n\t\t\tif (jJobsDays == null || !getValue(jJobsMoreOrLess, String.class).equals(TabsStockpile.get().jobsDaysMore())) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\treturn Integer.valueOf(jJobsDays.getText());\n\t\t\t} catch (NumberFormatException ex) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tpublic boolean getSingleton() {\n\t\t\treturn getValue(jSingleton, String.class).equals(DataModelAsset.get().unpackaged());\n\t\t}\n\n\t\tpublic StockpileFlag getFlag() {\n\t\t\treturn new StockpileFlag(getValue(jFlag, ItemFlag.class).getFlagID(), jFlagIncludeSubs.isSelected());\n\t\t}\n\n\t\tpublic Long getOwner() {\n\t\t\treturn getValue(jOwner, OwnerType.class).getOwnerID();\n\t\t}\n\n\t\tprivate <E> E getValue(JComboBox<E> jComboBox, Class<E> clazz) {\n\t\t\tif (jComboBox != null) {\n\t\t\t\tObject object = jComboBox.getSelectedItem();\n\t\t\t\tif (clazz.isInstance(object)) {\n\t\t\t\t\treturn clazz.cast(object);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\n\t\tpublic JPanel getPanel() {\n\t\t\treturn jPanel;\n\t\t}\n\n\t\tprivate void warning(boolean b) {\n\t\t\tjWarning.setVisible(b);\n\t\t}\n\n\t\tprivate class ListenerClass implements ActionListener, DocumentListener {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\t\tif (StockpileDialogAction.REMOVE.name().equals(e.getActionCommand())) {\n\t\t\t\t\tremove();\n\t\t\t\t} else if (StockpileDialogAction.VALIDATE.name().equals(e.getActionCommand())) {\n\t\t\t\t\tautoValidate();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void insertUpdate(DocumentEvent e) {\n\t\t\t\tautoValidate();\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void removeUpdate(DocumentEvent e) {\n\t\t\t\tautoValidate();\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void changedUpdate(DocumentEvent e) {\n\t\t\t\tautoValidate();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate class LocationPanel {\n\t\tprivate final List<FilterPanel> ownerPanels = new ArrayList<>();\n\t\tprivate final List<FilterPanel> flagPanels = new ArrayList<>();\n\t\tprivate final List<FilterPanel> containerPanels = new ArrayList<>();\n\t\tprivate FilterPanel singletonPanel = null;\n\t\tprivate FilterPanel jobsDaysPanel = null;\n\n\t\tprivate final JPanel jPanel;\n\t\tprivate final JPanel jFilters;\n\t\tprivate final ListenerClass listener = new ListenerClass();\n\t\t//Singleton\n\t\tprivate final JMenuItem jSingleton;\n\t\t//Jobs Days\n\t\tprivate final JMenuItem jJobsDays;\n\t\t//Location\n\t\tprivate final JLabel jLocationType;\n\t\tprivate final JComboBox<MyLocation> jLocation;\n\t\tprivate final JDropDownButton jMatch;\n\t\tprivate final JRadioButtonMenuItem jMatchExclude;\n\t\tprivate final JCheckBoxMenuItem jMyLocations;\n\t\tprivate FilterList<MyLocation> filterList;\n\t\tprivate AutoCompleteSupport<MyLocation> autoComplete;\n\t\t//Include\n\t\tprivate final JDropDownButton jInclude;\n\t\tprivate final JCheckBoxMenuItem jAssets;\n\t\tprivate final JCheckBoxMenuItem jJobs;\n\t\tprivate final JCheckBoxMenuItem jBuyingOrders;\n\t\tprivate final JCheckBoxMenuItem jSellingOrders;\n\t\tprivate final JCheckBoxMenuItem jBoughtTransactions;\n\t\tprivate final JCheckBoxMenuItem jSoldTransactions;\n\t\tprivate final JCheckBoxMenuItem jBuyingContracts;\n\t\tprivate final JCheckBoxMenuItem jSellingContracts;\n\t\tprivate final JCheckBoxMenuItem jBoughtContracts;\n\t\tprivate final JCheckBoxMenuItem jSoldContracts;\n\t\tprivate final JLabel jErrorLabel;\n\t\tprivate final JLabel jAssetsLabel;\n\t\tprivate final JLabel jJobsLabel;\n\t\tprivate final JLabel jOrdersLabel;\n\t\tprivate final JLabel jContractsLabel;\n\t\tprivate final JLabel jLocationWarning;\n\n\t\t//Edit\n\t\tprivate final JRadioButtonMenuItem jPlanet;\n\t\tprivate final JRadioButtonMenuItem jStation;\n\t\tprivate final JRadioButtonMenuItem jSystem;\n\t\tprivate final JRadioButtonMenuItem jConstellation;\n\t\tprivate final JRadioButtonMenuItem jRegion;\n\t\tprivate final JRadioButtonMenuItem jUniverse;\n\n\t\tprivate LocationType locationType;\n\n\t\tpublic LocationPanel(StockpileFilter stockpileFilter) {\n\t\t\tthis();\n\t\t\tif (stockpileFilter.getLocation() == null || stockpileFilter.getLocation().isEmpty()) {\n\t\t\t\tsetLocationType(LocationType.UNIVERSE);\n\t\t\t} else if (stockpileFilter.getLocation().isPlanet()) {\n\t\t\t\tsetLocationType(LocationType.PLANET);\n\t\t\t} else if (stockpileFilter.getLocation().isStation()) { //Not planet\n\t\t\t\tsetLocationType(LocationType.STATION);\n\t\t\t} else if (stockpileFilter.getLocation().isSystem()) {\n\t\t\t\tsetLocationType(LocationType.SYSTEM);\n\t\t\t} else if (stockpileFilter.getLocation().isConstellation()) {\n\t\t\t\tsetLocationType(LocationType.CONSTELLATION);\n\t\t\t} else if (stockpileFilter.getLocation().isRegion()) {\n\t\t\t\tsetLocationType(LocationType.REGION);\n\t\t\t} else {\n\t\t\t\tsetLocationType(LocationType.UNIVERSE);\n\t\t\t}\n\t\t\t//Location\n\t\t\tif(locationType != LocationType.UNIVERSE) {\n\t\t\t\tMyLocation location = stockpileFilter.getLocation();\n\t\t\t\tjMyLocations.setSelected(myLocations.contains(location.getLocation()));\n\t\t\t\trefilter();\n\t\t\t\tjLocation.setSelectedItem(location);\n\t\t\t}\n\t\t\t//Container\n\t\t\tfor (StockpileContainer container : stockpileFilter.getContainers()) {\n\t\t\t\tcontainerPanels.add(new FilterPanel(this, container));\n\t\t\t}\n\t\t\t//Owner\n\t\t\tSet<OwnerType> ownersFound = new HashSet<>();\n\t\t\tfor (long ownerID : stockpileFilter.getOwnerIDs()) {\n\t\t\t\tfor (OwnerType owner : owners) {\n\t\t\t\t\tif (owner.getOwnerID() == ownerID) {\n\t\t\t\t\t\townersFound.add(owner);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (OwnerType owner : ownersFound) {\n\t\t\t\townerPanels.add(new FilterPanel(this, owner));\n\t\t\t}\n\t\t\t//Flag\n\t\t\tfor (StockpileFlag flag : stockpileFilter.getFlags()) {\n\t\t\t\tItemFlag itemFlag = StaticData.get().getItemFlags().get(flag.getFlagID());\n\t\t\t\tif (itemFlag != null) {\n\t\t\t\t\tflagPanels.add(new FilterPanel(this, itemFlag, flag.isIncludeSubs()));\n\t\t\t\t}\n\t\t\t}\n\t\t\tBoolean singleton = stockpileFilter.isSingleton();\n\t\t\tif (singleton != null) {\n\t\t\t\tsingletonPanel = new FilterPanel(this, singleton);\n\t\t\t\tjSingleton.setEnabled(false);\n\t\t\t} else {\n\t\t\t\tjSingleton.setEnabled(true);\n\t\t\t}\n\t\t\tInteger jobsDaysLess = stockpileFilter.getJobsDaysLess();\n\t\t\tInteger jobsDaysMore = stockpileFilter.getJobsDaysMore();\n\t\t\tif (jobsDaysLess != null) {\n\t\t\t\tjobsDaysPanel = new FilterPanel(this, jobsDaysLess, true);\n\t\t\t\tjJobsDays.setEnabled(false); //One instance only\n\t\t\t} else if (jobsDaysMore != null) {\n\t\t\t\tjobsDaysPanel = new FilterPanel(this, jobsDaysMore, false);\n\t\t\t\tjJobsDays.setEnabled(false); //One instance only\n\t\t\t} else {\n\t\t\t\tjJobsDays.setEnabled(stockpileFilter.isJobs()); //Only enabled if industry jobs are active\n\t\t\t}\n\t\t\t//Exclude\n\t\t\tjMatchExclude.setSelected(stockpileFilter.isExclude());\n\t\t\t//Includes\n\t\t\tjAssets.setSelected(stockpileFilter.isAssets());\n\t\t\tjJobs.setSelected(stockpileFilter.isJobs());\n\t\t\tjBuyingOrders.setSelected(stockpileFilter.isBuyOrders());\n\t\t\tjSellingOrders.setSelected(stockpileFilter.isSellOrders());\n\t\t\tjBoughtTransactions.setSelected(stockpileFilter.isBuyTransactions());\n\t\t\tjSoldTransactions.setSelected(stockpileFilter.isSellTransactions());\n\t\t\tjBuyingContracts.setSelected(stockpileFilter.isBuyingContracts());\n\t\t\tjSellingContracts.setSelected(stockpileFilter.isSellingContracts());\n\t\t\tjBoughtContracts.setSelected(stockpileFilter.isBoughtContracts());\n\t\t\tjSoldContracts.setSelected(stockpileFilter.isSoldContracts());\n\t\t\tdoLayout();\n\t\t}\n\n\t\tpublic LocationPanel(LocationType type) {\n\t\t\tthis();\n\t\t\tsetLocationType(type);\n\t\t\trefilter();\n\t\t\tdoLayout();\n\t\t}\n\n\t\tprivate LocationPanel() {\n\t\t\tjFilters = new JPanel();\n\n\t\t\tjPanel = new JPanel();\n\t\t\tGroupLayout groupLayout = new GroupLayout(jPanel);\n\t\t\tjPanel.setLayout(groupLayout);\n\t\t\tgroupLayout.setAutoCreateGaps(true);\n\t\t\tgroupLayout.setAutoCreateContainerGaps(false);\n\n\t\t\tJFixedToolBar jToolBar = new JFixedToolBar();\n\n\t\t//MATCH\n\t\t\tjMatch = new JDropDownButton(Images.EDIT_ADD_WHITE.getIcon());\n\t\t\tjToolBar.addButtonIcon(jMatch);\n\n\t\t\tJRadioButtonMenuItem jMatchInclude = new JRadioButtonMenuItem(TabsStockpile.get().matchInclude(), Images.EDIT_ADD_WHITE.getIcon());\n\t\t\tjMatchInclude.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjMatchInclude.setActionCommand(StockpileDialogAction.VALIDATE.name());\n\t\t\tjMatchInclude.addActionListener(listener);\n\t\t\tjMatchInclude.setSelected(true);\n\t\t\tjMatch.add(jMatchInclude);\n\n\t\t\tjMatchExclude = new JRadioButtonMenuItem(TabsStockpile.get().matchExclude(), Images.EDIT_DELETE_WHITE.getIcon());\n\t\t\tjMatchExclude.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjMatchExclude.setActionCommand(StockpileDialogAction.VALIDATE.name());\n\t\t\tjMatchExclude.addActionListener(listener);\n\t\t\tjMatch.add(jMatchExclude);\n\n\t\t\tButtonGroup matchButtonGroup = new ButtonGroup();\n\t\t\tmatchButtonGroup.add(jMatchInclude);\n\t\t\tmatchButtonGroup.add(jMatchExclude);\n\t\t//ADD\n\t\t\tJDropDownButton jAdd = new JDropDownButton(TabsStockpile.get().filters(), Images.INCLUDE_ADD_FILTER.getIcon());\n\t\t\tjAdd.setToolTipText(TabsStockpile.get().include());\n\t\t\tjToolBar.addButton(jAdd);\n\n\t\t\tJMenuItem jOwner = new JMenuItem(TabsStockpile.get().owner(), Images.LOC_OWNER.getIcon());\n\t\t\tjOwner.setActionCommand(StockpileDialogAction.ADD_OWNER.name());\n\t\t\tjOwner.addActionListener(listener);\n\t\t\tjOwner.setEnabled(!owners.isEmpty());\n\t\t\tjAdd.add(jOwner);\n\n\t\t\tJMenuItem jFlag = new JMenuItem(TabsStockpile.get().flag(), Images.LOC_FLAG.getIcon());\n\t\t\tjFlag.setActionCommand(StockpileDialogAction.ADD_FLAG.name());\n\t\t\tjFlag.addActionListener(listener);\n\t\t\tjAdd.add(jFlag);\n\n\t\t\tJMenuItem jContainer = new JMenuItem(TabsStockpile.get().container(), Images.LOC_CONTAINER_WHITE.getIcon());\n\t\t\tjContainer.setActionCommand(StockpileDialogAction.ADD_CONTAINER.name());\n\t\t\tjContainer.addActionListener(listener);\n\t\t\tjAdd.add(jContainer);\n\n\t\t\tjSingleton = new JMenuItem(TabsStockpile.get().singleton(), Images.INCLUDE_PACKAGED.getIcon());\n\t\t\tjSingleton.setActionCommand(StockpileDialogAction.ADD_SINGLETON.name());\n\t\t\tjSingleton.addActionListener(listener);\n\t\t\tjAdd.add(jSingleton);\n\n\t\t\tjJobsDays = new JMenuItem(TabsStockpile.get().jobsDays(), Images.INCLUDE_JOBS.getIcon());\n\t\t\tjJobsDays.setEnabled(false); //No include selected by default, so defaults to disabled\n\t\t\tjJobsDays.setToolTipText(TabsStockpile.get().jobsDaysTip());\n\t\t\tjJobsDays.setActionCommand(StockpileDialogAction.ADD_JOBS_DAYS.name());\n\t\t\tjJobsDays.addActionListener(listener);\n\t\t\tjAdd.add(jJobsDays);\n\t\t//INCLUDE\n\t\t\tjInclude = new JDropDownButton(TabsStockpile.get().include(), Images.LOC_INCLUDE.getIcon());\n\t\t\tjInclude.setToolTipText(TabsStockpile.get().include());\n\t\t\tjToolBar.addButton(jInclude);\n\n\t\t\tjAssets = new JCheckBoxMenuItem(TabsStockpile.get().includeAssets());\n\t\t\tjAssets.setToolTipText(TabsStockpile.get().includeAssetsTip());\n\t\t\tjAssets.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjAssets.setActionCommand(StockpileDialogAction.VALIDATE.name());\n\t\t\tjAssets.addActionListener(listener);\n\t\t\tjInclude.add(jAssets, true);\n\n\t\t\tjJobs = new JCheckBoxMenuItem(TabsStockpile.get().includeJobs());\n\t\t\tjJobs.setToolTipText(TabsStockpile.get().includeJobsTip());\n\t\t\tjJobs.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjJobs.setActionCommand(StockpileDialogAction.VALIDATE.name());\n\t\t\tjJobs.addActionListener(listener);\n\t\t\tjInclude.add(jJobs, true);\n\n\t\t\tjBuyingOrders = new JCheckBoxMenuItem(TabsStockpile.get().includeBuyOrders());\n\t\t\tjBuyingOrders.setToolTipText(TabsStockpile.get().includeBuyOrdersTip());\n\t\t\tjBuyingOrders.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjBuyingOrders.setActionCommand(StockpileDialogAction.VALIDATE.name());\n\t\t\tjBuyingOrders.addActionListener(listener);\n\t\t\tjInclude.add(jBuyingOrders, true);\n\n\t\t\tjSellingOrders = new JCheckBoxMenuItem(TabsStockpile.get().includeSellOrders());\n\t\t\tjSellingOrders.setToolTipText(TabsStockpile.get().includeSellOrdersTip());\n\t\t\tjSellingOrders.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjSellingOrders.setActionCommand(StockpileDialogAction.VALIDATE.name());\n\t\t\tjSellingOrders.addActionListener(listener);\n\t\t\tjInclude.add(jSellingOrders, true);\n\n\t\t\tjBoughtTransactions = new JCheckBoxMenuItem(TabsStockpile.get().includeBuyTransactions());\n\t\t\tjBoughtTransactions.setToolTipText(TabsStockpile.get().includeBuyTransactionsTip());\n\t\t\tjBoughtTransactions.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjBoughtTransactions.setActionCommand(StockpileDialogAction.VALIDATE.name());\n\t\t\tjBoughtTransactions.addActionListener(listener);\n\t\t\tjInclude.add(jBoughtTransactions, true);\n\n\t\t\tjSoldTransactions = new JCheckBoxMenuItem(TabsStockpile.get().includeSellTransactions());\n\t\t\tjSoldTransactions.setToolTipText(TabsStockpile.get().includeSellTransactionsTip());\n\t\t\tjSoldTransactions.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjSoldTransactions.setActionCommand(StockpileDialogAction.VALIDATE.name());\n\t\t\tjSoldTransactions.addActionListener(listener);\n\t\t\tjInclude.add(jSoldTransactions, true);\n\n\t\t\tjBuyingContracts = new JCheckBoxMenuItem(TabsStockpile.get().includeBuyingContracts());\n\t\t\tjBuyingContracts.setToolTipText(TabsStockpile.get().includeBuyingContractsTip());\n\t\t\tjBuyingContracts.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjBuyingContracts.setActionCommand(StockpileDialogAction.VALIDATE.name());\n\t\t\tjBuyingContracts.addActionListener(listener);\n\t\t\tjInclude.add(jBuyingContracts, true);\n\n\t\t\tjSellingContracts = new JCheckBoxMenuItem(TabsStockpile.get().includeSellingContracts());\n\t\t\tjSellingContracts.setToolTipText(TabsStockpile.get().includeSellingContractsTip());\n\t\t\tjSellingContracts.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjSellingContracts.setActionCommand(StockpileDialogAction.VALIDATE.name());\n\t\t\tjSellingContracts.addActionListener(listener);\n\t\t\tjInclude.add(jSellingContracts, true);\n\n\t\t\tjBoughtContracts = new JCheckBoxMenuItem(TabsStockpile.get().includeBoughtContracts());\n\t\t\tjBoughtContracts.setToolTipText(TabsStockpile.get().includeBoughtContractsTip());\n\t\t\tjBoughtContracts.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjBoughtContracts.setActionCommand(StockpileDialogAction.VALIDATE.name());\n\t\t\tjBoughtContracts.addActionListener(listener);\n\t\t\tjInclude.add(jBoughtContracts, true);\n\n\t\t\tjSoldContracts = new JCheckBoxMenuItem(TabsStockpile.get().includeSoldContracts());\n\t\t\tjSoldContracts.setToolTipText(TabsStockpile.get().includeSoldContractsTip());\n\t\t\tjSoldContracts.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjSoldContracts.setActionCommand(StockpileDialogAction.VALIDATE.name());\n\t\t\tjSoldContracts.addActionListener(listener);\n\t\t\tjInclude.add(jSoldContracts, true);\n\n\t\t//INCLIDE LABELS\n\t\t\tjErrorLabel = new JLabel(TabsStockpile.get().includeHelp());\n\t\t\tjErrorLabel.setIcon(Images.UPDATE_DONE_ERROR.getIcon());\n\t\t\tjAssetsLabel = new JLabel();\n\t\t\tjAssetsLabel.setDisabledIcon(Images.INCLUDE_ASSETS.getIcon());\n\t\t\tjAssetsLabel.setEnabled(false);\n\t\t\tjJobsLabel = new JLabel();\n\t\t\tjJobsLabel.setDisabledIcon(Images.INCLUDE_JOBS.getIcon());\n\t\t\tjJobsLabel.setEnabled(false);\n\t\t\tjOrdersLabel = new JLabel();\n\t\t\tjOrdersLabel.setDisabledIcon(Images.INCLUDE_ORDERS.getIcon());\n\t\t\tjOrdersLabel.setEnabled(false);\n\t\t\tjContractsLabel = new JLabel();\n\t\t\tjContractsLabel.setDisabledIcon(Images.INCLUDE_CONTRACTS.getIcon());\n\t\t\tjContractsLabel.setEnabled(false);\n\n\t\t//EDIT\n\t\t\tJDropDownButton jEdit = new JDropDownButton(TabsStockpile.get().editStockpileFilter(), Images.EDIT_EDIT_WHITE.getIcon());\n\t\t\tjToolBar.addButton(jEdit);\n\n\t\t\tJMenuItem jRemove = new JMenuItem(TabsStockpile.get().remove(), Images.EDIT_DELETE.getIcon());\n\t\t\tjRemove.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjRemove.setActionCommand(StockpileDialogAction.REMOVE.name());\n\t\t\tjRemove.addActionListener(listener);\n\t\t\tjEdit.add(jRemove);\n\n\t\t\tJMenuItem jClone = new JMenuItem(TabsStockpile.get().cloneStockpileFilter(), Images.EDIT_COPY.getIcon());\n\t\t\tjClone.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjClone.setActionCommand(StockpileDialogAction.CLONE.name());\n\t\t\tjClone.addActionListener(listener);\n\t\t\tjEdit.add(jClone);\n\t\t//LOCATION OPTIONS\n\t\t\tJDropDownButton jOptions = new JDropDownButton(Images.DIALOG_SETTINGS.getIcon());\n\t\t\tjOptions.setEnabled(locationType != LocationType.UNIVERSE);\n\n\t\t\tjMyLocations = new JCheckBoxMenuItem(TabsStockpile.get().myLocations());\n\t\t\tjMyLocations.setActionCommand(StockpileDialogAction.FILTER_LOCATIONS.name());\n\t\t\tjMyLocations.addActionListener(listener);\n\t\t\tjMyLocations.setSelected(!myLocations.isEmpty());\n\t\t\tjMyLocations.setEnabled(!myLocations.isEmpty());\n\t\t\tjOptions.add(jMyLocations);\n\n\t\t\tjOptions.addSeparator();\n\n\t\t\tjStation = new JRadioButtonMenuItem(TabsStockpile.get().station(), Images.LOC_STATION.getIcon());\n\t\t\tjStation.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjStation.setActionCommand(StockpileDialogAction.CHANGE_LOCATION_TYPE.name());\n\t\t\tjStation.addActionListener(listener);\n\t\t\tjOptions.add(jStation);\n\n\t\t\tjPlanet = new JRadioButtonMenuItem(TabsStockpile.get().planet(), Images.LOC_PLANET.getIcon());\n\t\t\tjPlanet.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjPlanet.setActionCommand(StockpileDialogAction.CHANGE_LOCATION_TYPE.name());\n\t\t\tjPlanet.addActionListener(listener);\n\t\t\tjOptions.add(jPlanet);\n\n\t\t\tjSystem = new JRadioButtonMenuItem(TabsStockpile.get().system(), Images.LOC_SYSTEM.getIcon());\n\t\t\tjSystem.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjSystem.setActionCommand(StockpileDialogAction.CHANGE_LOCATION_TYPE.name());\n\t\t\tjSystem.addActionListener(listener);\n\t\t\tjOptions.add(jSystem);\n\n\t\t\tjConstellation = new JRadioButtonMenuItem(TabsStockpile.get().constellation(), Images.LOC_CONSTELLATION.getIcon());\n\t\t\tjConstellation.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjConstellation.setActionCommand(StockpileDialogAction.CHANGE_LOCATION_TYPE.name());\n\t\t\tjConstellation.addActionListener(listener);\n\t\t\tjOptions.add(jConstellation);\n\n\t\t\tjRegion = new JRadioButtonMenuItem(TabsStockpile.get().region(), Images.LOC_REGION.getIcon());\n\t\t\tjRegion.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjRegion.setActionCommand(StockpileDialogAction.CHANGE_LOCATION_TYPE.name());\n\t\t\tjRegion.addActionListener(listener);\n\t\t\tjOptions.add(jRegion);\n\n\t\t\tjUniverse = new JRadioButtonMenuItem(TabsStockpile.get().universe(), Images.LOC_LOCATIONS.getIcon());\n\t\t\tjUniverse.setHorizontalAlignment(JButton.LEFT);\n\t\t\tjUniverse.setActionCommand(StockpileDialogAction.CHANGE_LOCATION_TYPE.name());\n\t\t\tjUniverse.addActionListener(listener);\n\t\t\tjOptions.add(jUniverse);\n\n\t\t\tButtonGroup buttonGroup = new ButtonGroup();\n\t\t\tbuttonGroup.add(jPlanet);\n\t\t\tbuttonGroup.add(jStation);\n\t\t\tbuttonGroup.add(jSystem);\n\t\t\tbuttonGroup.add(jConstellation);\n\t\t\tbuttonGroup.add(jRegion);\n\t\t\tbuttonGroup.add(jUniverse);\n\n\t\t\tjLocationType = new JLabel();\n\n\t\t\tjLocationWarning = createToolTipLabel(Images.UPDATE_DONE_ERROR.getIcon(), TabsStockpile.get().noLocationsFound());\n\t\t\tjLocationWarning.setVisible(false);\n\n\t\t\tjLocation = new JComboBox<>();\n\n\t\t\tgroupLayout.setHorizontalGroup(\n\t\t\t\tgroupLayout.createParallelGroup()\n\t\t\t\t\t.addComponent(jToolBar, 0, 0, FIELD_WIDTH)\n\t\t\t\t\t.addGroup(groupLayout.createSequentialGroup()\n\t\t\t\t\t\t.addComponent(jLocationType)\n\t\t\t\t\t\t.addComponent(jLocationWarning)\n\t\t\t\t\t\t.addComponent(jLocation, 0, 0, FIELD_WIDTH)\n\t\t\t\t\t\t.addComponent(jOptions, Program.getIconButtonsWidth(), Program.getIconButtonsWidth(), Program.getIconButtonsWidth())\n\t\t\t\t\t)\n\t\t\t\t\t.addComponent(jFilters)\n\t\t\t\t\t.addGroup(groupLayout.createSequentialGroup()\n\t\t\t\t\t\t.addComponent(jErrorLabel)\n\t\t\t\t\t\t.addComponent(jAssetsLabel)\n\t\t\t\t\t\t.addComponent(jJobsLabel)\n\t\t\t\t\t\t.addComponent(jOrdersLabel)\n\t\t\t\t\t\t.addComponent(jContractsLabel)\n\t\t\t\t\t)\n\t\t\t);\n\n\t\t\tgroupLayout.setVerticalGroup(\n\t\t\t\tgroupLayout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jToolBar, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t\t.addGroup(groupLayout.createParallelGroup()\n\t\t\t\t\t\t.addComponent(jLocationType, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jLocationWarning, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jLocation, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jOptions, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t)\n\t\t\t\t\t.addComponent(jFilters)\n\t\t\t\t\t.addGroup(groupLayout.createParallelGroup()\n\t\t\t\t\t\t.addComponent(jErrorLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jAssetsLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jJobsLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jOrdersLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jContractsLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tprivate void doLayout() {\n\t\t\tautoValidate();\n\t\t\tjFilters.removeAll();\n\n\t\t\tGroupLayout layout = new GroupLayout(jFilters);\n\t\t\tjFilters.setLayout(layout);\n\t\t\tlayout.setAutoCreateGaps(true);\n\t\t\tlayout.setAutoCreateContainerGaps(false);\n\n\t\t\tParallelGroup horizontalGroup = layout.createParallelGroup();\n\t\t\tSequentialGroup verticalGroup = layout.createSequentialGroup();\n\t\t\tfor (FilterPanel ownerPanel : ownerPanels) {\n\t\t\t\thorizontalGroup.addComponent(ownerPanel.getPanel());\n\t\t\t\tverticalGroup.addComponent(ownerPanel.getPanel());\n\t\t\t}\n\n\t\t\tfor (FilterPanel flagPanel : flagPanels) {\n\t\t\t\thorizontalGroup.addComponent(flagPanel.getPanel());\n\t\t\t\tverticalGroup.addComponent(flagPanel.getPanel());\n\t\t\t}\n\n\t\t\tfor (FilterPanel containerPanel : containerPanels) {\n\t\t\t\thorizontalGroup.addComponent(containerPanel.getPanel());\n\t\t\t\tverticalGroup.addComponent(containerPanel.getPanel());\n\t\t\t}\n\t\t\tif (singletonPanel != null) {\n\t\t\t\thorizontalGroup.addComponent(singletonPanel.getPanel());\n\t\t\t\tverticalGroup.addComponent(singletonPanel.getPanel());\n\t\t\t}\n\t\t\tif (jobsDaysPanel != null) {\n\t\t\t\thorizontalGroup.addComponent(jobsDaysPanel.getPanel());\n\t\t\t\tverticalGroup.addComponent(jobsDaysPanel.getPanel());\n\t\t\t}\n\n\t\t\tlayout.setVerticalGroup(verticalGroup);\n\t\t\tlayout.setHorizontalGroup(horizontalGroup);\n\t\t\tgetDialog().pack();\n\t\t}\n\n\t\tprivate void setLocationType(LocationType locationType) {\n\t\t\tthis.locationType = locationType;\n\t\t\tboolean empty = false;\n\t\t\tif (locationType == LocationType.PLANET) {\n\t\t\t\tjLocationType.setIcon(Images.LOC_PLANET.getIcon());\n\t\t\t\tjLocationType.setToolTipText(TabsStockpile.get().planet());\n\t\t\t\tjPanel.setBorder(BorderFactory.createTitledBorder(TabsStockpile.get().planet()));\n\t\t\t\ttry {\n\t\t\t\t\tplanets.getReadWriteLock().readLock().lock();\n\t\t\t\t\tempty = planets.isEmpty();\n\t\t\t\t\tfilterList = new FilterList<>(planets);\n\t\t\t\t} finally {\n\t\t\t\t\tplanets.getReadWriteLock().readLock().unlock();\n\t\t\t\t}\n\t\t\t\tjPlanet.setSelected(true);\n\t\t\t} else if (locationType == LocationType.STATION) {\n\t\t\t\tjLocationType.setIcon(Images.LOC_STATION.getIcon());\n\t\t\t\tjLocationType.setToolTipText(TabsStockpile.get().station());\n\t\t\t\tjPanel.setBorder(BorderFactory.createTitledBorder(TabsStockpile.get().station()));\n\t\t\t\ttry {\n\t\t\t\t\tstations.getReadWriteLock().readLock().lock();\n\t\t\t\t\tempty = stations.isEmpty();\n\t\t\t\t\tfilterList = new FilterList<>(stations);\n\t\t\t\t} finally {\n\t\t\t\t\tstations.getReadWriteLock().readLock().unlock();\n\t\t\t\t}\n\t\t\t\tjStation.setSelected(true);\n\t\t\t} else if (locationType == LocationType.SYSTEM) {\n\t\t\t\tjLocationType.setIcon(Images.LOC_SYSTEM.getIcon());\n\t\t\t\tjLocationType.setToolTipText(TabsStockpile.get().system());\n\t\t\t\tjPanel.setBorder(BorderFactory.createTitledBorder(TabsStockpile.get().system()));\n\t\t\t\ttry {\n\t\t\t\t\tsystems.getReadWriteLock().readLock().lock();\n\t\t\t\t\tempty = systems.isEmpty();\n\t\t\t\t\tfilterList = new FilterList<>(systems);\n\t\t\t\t} finally {\n\t\t\t\t\tsystems.getReadWriteLock().readLock().unlock();\n\t\t\t\t}\n\t\t\t\tjSystem.setSelected(true);\n\t\t\t} else if (locationType == LocationType.CONSTELLATION) {\n\t\t\t\tjLocationType.setIcon(Images.LOC_CONSTELLATION.getIcon());\n\t\t\t\tjLocationType.setToolTipText(TabsStockpile.get().constellation());\n\t\t\t\tjPanel.setBorder(BorderFactory.createTitledBorder(TabsStockpile.get().constellation()));\n\t\t\t\ttry {\n\t\t\t\t\tconstellations.getReadWriteLock().readLock().lock();\n\t\t\t\t\tempty = constellations.isEmpty();\n\t\t\t\t\tfilterList = new FilterList<>(constellations);\n\t\t\t\t} finally {\n\t\t\t\t\tconstellations.getReadWriteLock().readLock().unlock();\n\t\t\t\t}\n\t\t\t\tjConstellation.setSelected(true);\n\t\t\t} else if (locationType == LocationType.REGION) {\n\t\t\t\tjLocationType.setIcon(Images.LOC_REGION.getIcon());\n\t\t\t\tjLocationType.setToolTipText(TabsStockpile.get().region());\n\t\t\t\tjPanel.setBorder(BorderFactory.createTitledBorder(TabsStockpile.get().region()));\n\t\t\t\ttry {\n\t\t\t\t\tregions.getReadWriteLock().readLock().lock();\n\t\t\t\t\tempty = regions.isEmpty();\n\t\t\t\t\tfilterList = new FilterList<>(regions);\n\t\t\t\t} finally {\n\t\t\t\t\tregions.getReadWriteLock().readLock().unlock();\n\t\t\t\t}\n\t\t\t\tjRegion.setSelected(true);\n\t\t\t} else {\n\t\t\t\tjLocationType.setIcon(Images.LOC_LOCATIONS.getIcon());\n\t\t\t\tjLocationType.setToolTipText(TabsStockpile.get().universe());\n\t\t\t\tjPanel.setBorder(BorderFactory.createTitledBorder(TabsStockpile.get().universe()));\n\t\t\t\tEventList<MyLocation> eventList = EventListManager.create();\n\t\t\t\ttry {\n\t\t\t\t\teventList.getReadWriteLock().readLock().lock();\n\t\t\t\t\tfilterList = new FilterList<>(eventList);\n\t\t\t\t} finally {\n\t\t\t\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t\t\t}\n\t\t\t\tjUniverse.setSelected(true);\n\t\t\t}\n\t\t\tif (autoComplete != null) { //Remove old\n\t\t\t\tjLocation.removeItemListener(listener);\n\t\t\t\tautoComplete.uninstall();\n\t\t\t\tautoComplete = null;\n\t\t\t}\n\t\t\tif (locationType != LocationType.UNIVERSE) {\n\t\t\t\tif (empty) {\n\t\t\t\t\tjLocation.setEnabled(false);\n\t\t\t\t\tjLocation.getModel().setSelectedItem(TabsStockpile.get().noLocationsFound());\n\t\t\t\t} else {\n\t\t\t\t\tjLocation.setEnabled(true);\n\t\t\t\t\tautoComplete = AutoCompleteSupport.install(jLocation, EventModels.createSwingThreadProxyList(filterList), new LocationFilterator());\n\t\t\t\t\tautoComplete.setStrict(true);\n\t\t\t\t\tjLocation.addItemListener(listener); //Must be added after AutoCompleteSupport\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tjLocation.setEnabled(false);\n\t\t\t\tjLocation.getModel().setSelectedItem(TabsStockpile.get().universe());\n\t\t\t}\n\t\t}\n\n\t\tpublic JPanel getPanel() {\n\t\t\treturn jPanel;\n\t\t}\n\n\t\tpublic StockpileFilter getFilter () {\n\t\t\tList<Long> ownerIDs = new ArrayList<>();\n\t\t\tfor (FilterPanel ownerPanel : ownerPanels) {\n\t\t\t\townerIDs.add(ownerPanel.getOwner());\n\t\t\t}\n\t\t\tList<StockpileFlag> flags = new ArrayList<>();\n\t\t\tfor (FilterPanel flagPanel : flagPanels) {\n\t\t\t\tflags.add(flagPanel.getFlag());\n\t\t\t}\n\t\t\tList<StockpileContainer> containers = new ArrayList<>();\n\t\t\tfor (FilterPanel containerPanel : containerPanels) {\n\t\t\t\tcontainers.add(containerPanel.getContainer());\n\t\t\t}\n\t\t\tObject object = jLocation.getSelectedItem();\n\t\t\tMyLocation location;\n\t\t\tif (object instanceof MyLocation) {\n\t\t\t\tlocation = (MyLocation) object;\n\t\t\t} else {\n\t\t\t\tlocation = MyLocation.create(0);\n\t\t\t}\n\t\t\tBoolean singleton;\n\t\t\tif (singletonPanel != null) {\n\t\t\t\tsingleton = singletonPanel.getSingleton();\n\t\t\t} else {\n\t\t\t\tsingleton = null;\n\t\t\t}\n\t\t\tInteger jobsDaysLess = null;\n\t\t\tInteger jobsDaysMore = null;\n\t\t\tif (jobsDaysPanel != null) {\n\t\t\t\tjobsDaysLess = jobsDaysPanel.getJobsDaysLess();\n\t\t\t\tjobsDaysMore = jobsDaysPanel.getJobsDaysMore();\n\t\t\t}\n\t\t\treturn new StockpileFilter(location, jMatchExclude.isSelected(), flags, containers, ownerIDs\n\t\t\t\t\t,jobsDaysLess\n\t\t\t\t\t,jobsDaysMore\n\t\t\t\t\t,singleton\n\t\t\t\t\t,jAssets.isSelected()\n\t\t\t\t\t,jSellingOrders.isSelected()\n\t\t\t\t\t,jBuyingOrders.isSelected()\n\t\t\t\t\t,jJobs.isSelected()\n\t\t\t\t\t,jBoughtTransactions.isSelected()\n\t\t\t\t\t,jSoldTransactions.isSelected()\n\t\t\t\t\t,jSellingContracts.isSelected()\n\t\t\t\t\t,jSoldContracts.isSelected()\n\t\t\t\t\t,jBuyingContracts.isSelected()\n\t\t\t\t\t,jBoughtContracts.isSelected()\n\t\t\t\t\t);\n\t\t}\n\n\t\tpublic boolean isValid() {\n\t\t\tboolean ok = true;\n\t\t\tSet<Long> owners = new HashSet<>();\n\t\t\tfor (FilterPanel ownerPanel : ownerPanels) {\n\t\t\t\tlong owner = ownerPanel.getOwner();\n\t\t\t\tboolean add = owners.add(owner);\n\t\t\t\townerPanel.warning(!add);\n\t\t\t\tif (!add) {\n\t\t\t\t\tok = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tSet<StockpileFlag> flags = new HashSet<>();\n\t\t\tfor (FilterPanel flagPanel : flagPanels) {\n\t\t\t\tStockpileFlag flag = flagPanel.getFlag();\n\t\t\t\tboolean add = flags.add(flag);\n\t\t\t\tflagPanel.warning(!add);\n\t\t\t\tif (!add) {\n\t\t\t\t\tok = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tSet<StockpileContainer> containers = new HashSet<>();\n\t\t\tfor (FilterPanel containerPanel : containerPanels) {\n\t\t\t\tStockpileContainer container = containerPanel.getContainer();\n\t\t\t\tboolean add = containers.add(container);\n\t\t\t\tcontainerPanel.warning(!add);\n\t\t\t\tif (!add) {\n\t\t\t\t\tok = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tObject object = jLocation.getSelectedItem();\n\t\t\tif (TabsStockpile.get().noLocationsFound().equals(object)) {\n\t\t\t\tok = false;\n\t\t\t\tjLocationWarning.setVisible(true);\n\t\t\t} else {\n\t\t\t\tjLocationWarning.setVisible(false);\n\t\t\t}\n\t\t\tif (singletonPanel != null) {\n\t\t\t\tsingletonPanel.warning(false);\n\t\t\t}\n\t\t\tif (jobsDaysPanel != null) {\n\t\t\t\tif (!jJobs.isSelected()) {\n\t\t\t\t\tjobsDaysPanel.warning(true);\n\t\t\t\t\tok = false;\n\t\t\t\t} else {\n\t\t\t\t\tjobsDaysPanel.warning(false);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tjJobsDays.setEnabled(jJobs.isSelected());\n\t\t\t}\n\t\t\tif (!jAssets.isSelected()\n\t\t\t\t\t&& !jJobs.isSelected()\n\t\t\t\t\t&& !jBuyingOrders.isSelected()\n\t\t\t\t\t&& !jSellingOrders.isSelected()\n\t\t\t\t\t&& !jBoughtTransactions.isSelected()\n\t\t\t\t\t&& !jSoldTransactions.isSelected()\n\t\t\t\t\t&& !jSellingContracts.isSelected()\n\t\t\t\t\t&& !jBuyingContracts.isSelected()\n\t\t\t\t\t&& !jSoldContracts.isSelected()\n\t\t\t\t\t&& !jBoughtContracts.isSelected()\n\t\t\t\t\t) {\n\t\t\t\tok = false;\n\t\t\t\tjInclude.setIcon(Images.UPDATE_DONE_ERROR.getIcon());\n\t\t\t\tColorSettings.config(jInclude, ColorEntry.GLOBAL_ENTRY_INVALID);\n\t\t\t\tjErrorLabel.setVisible(true);\n\t\t\t} else {\n\t\t\t\tjInclude.setIcon(Images.LOC_INCLUDE.getIcon());\n\t\t\t\tColorSettings.configReset(jInclude);\n\t\t\t\tjErrorLabel.setVisible(false);\n\t\t\t}\n\n\t\t\tjAssetsLabel.setVisible(jAssets.isSelected());\n\n\t\t\tjJobsLabel.setVisible(jJobs.isSelected());\n\n\t\t\tint orders = 0;\n\t\t\tif (jBuyingOrders.isSelected()) {\n\t\t\t\torders++;\n\t\t\t}\n\t\t\tif (jSellingOrders.isSelected()) {\n\t\t\t\torders++;\n\t\t\t}\n\t\t\tif (jBoughtTransactions.isSelected()) {\n\t\t\t\torders++;\n\t\t\t}\n\t\t\tif (jSoldTransactions.isSelected()) {\n\t\t\t\torders++;\n\t\t\t}\n\t\t\tjOrdersLabel.setVisible(orders > 0);\n\t\t\tjOrdersLabel.setText(TabsStockpile.get().includeCount(orders));\n\n\t\t\tint contracts = 0;\n\t\t\tif (jBuyingContracts.isSelected()) {\n\t\t\t\tcontracts++;\n\t\t\t}\n\t\t\tif (jSellingContracts.isSelected()) {\n\t\t\t\tcontracts++;\n\t\t\t}\n\t\t\tif (jBoughtContracts.isSelected()) {\n\t\t\t\tcontracts++;\n\t\t\t}\n\t\t\tif (jSoldContracts.isSelected()) {\n\t\t\t\tcontracts++;\n\t\t\t}\n\t\t\tjContractsLabel.setText(TabsStockpile.get().includeCount(contracts));\n\t\t\tjContractsLabel.setVisible(contracts > 0);\n\n\t\t\tjMatch.setIcon(jMatchExclude.isSelected() ? Images.EDIT_DELETE_WHITE.getIcon() : Images.EDIT_ADD_WHITE.getIcon());\n\t\t\tjAssets.setIcon(jAssets.isSelected() ? Images.INCLUDE_ASSETS_SELECTED.getIcon() : Images.INCLUDE_ASSETS.getIcon());\n\t\t\tjJobs.setIcon(jJobs.isSelected() ? Images.INCLUDE_JOBS_SELECTED.getIcon() : Images.INCLUDE_JOBS.getIcon());\n\t\t\tjBuyingOrders.setIcon(jBuyingOrders.isSelected() ? Images.INCLUDE_ORDERS_SELECTED.getIcon() : Images.INCLUDE_ORDERS.getIcon());\n\t\t\tjSellingOrders.setIcon(jSellingOrders.isSelected() ? Images.INCLUDE_ORDERS_SELECTED.getIcon() : Images.INCLUDE_ORDERS.getIcon());\n\t\t\tjBoughtTransactions.setIcon(jBoughtTransactions.isSelected() ? Images.INCLUDE_ORDERS_SELECTED.getIcon() : Images.INCLUDE_ORDERS.getIcon());\n\t\t\tjSoldTransactions.setIcon(jSoldTransactions.isSelected() ? Images.INCLUDE_ORDERS_SELECTED.getIcon() : Images.INCLUDE_ORDERS.getIcon());\n\t\t\tjSellingContracts.setIcon(jSellingContracts.isSelected() ? Images.INCLUDE_CONTRACTS_SELECTED.getIcon() : Images.INCLUDE_CONTRACTS.getIcon());\n\t\t\tjBuyingContracts.setIcon(jBuyingContracts.isSelected() ? Images.INCLUDE_CONTRACTS_SELECTED.getIcon() : Images.INCLUDE_CONTRACTS.getIcon());\n\t\t\tjBoughtContracts.setIcon(jBoughtContracts.isSelected() ? Images.INCLUDE_CONTRACTS_SELECTED.getIcon() : Images.INCLUDE_CONTRACTS.getIcon());\n\t\t\tjSoldContracts.setIcon(jSoldContracts.isSelected() ? Images.INCLUDE_CONTRACTS_SELECTED.getIcon() : Images.INCLUDE_CONTRACTS.getIcon());\n\t\t\tgetDialog().pack();\n\t\t\treturn ok;\n\t\t}\n\n\t\tprivate void refilter() {\n\t\t\tObject object = jLocation.getSelectedItem();\n\t\t\tMyLocation location;\n\t\t\tif (object instanceof MyLocation) {\n\t\t\t\tlocation = (MyLocation) object;\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (jMyLocations.isSelected()) {\n\t\t\t\tfilterList.setMatcher(new LocationsMatcher(myLocations));\n\t\t\t} else {\n\t\t\t\tfilterList.setMatcher(null);\n\t\t\t}\n\t\t\tif (EventListManager.contains(filterList, location)) {\n\t\t\t\tjLocation.setSelectedItem(location);\n\t\t\t} else if (!filterList.isEmpty()) {\n\t\t\t\tjLocation.setSelectedIndex(0);\n\t\t\t}\n\t\t}\n\n\t\tpublic void removeOwner(FilterPanel ownerPanel) {\n\t\t\townerPanels.remove(ownerPanel);\n\t\t\tdoLayout();\n\t\t}\n\t\tpublic void removeFlag(FilterPanel flagPanel) {\n\t\t\tflagPanels.remove(flagPanel);\n\t\t\tdoLayout();\n\t\t}\n\t\tpublic void removeContainer(FilterPanel containerPanel) {\n\t\t\tcontainerPanels.remove(containerPanel);\n\t\t\tdoLayout();\n\t\t}\n\t\tpublic void removeSingleton() {\n\t\t\tsingletonPanel = null;\n\t\t\tjSingleton.setEnabled(true);\n\t\t\tdoLayout();\n\t\t}\n\t\tpublic void removeJobsDays() {\n\t\t\tjobsDaysPanel = null;\n\t\t\tjJobsDays.setEnabled(jJobs.isSelected());\n\t\t\tdoLayout();\n\t\t}\n\n\t\tprivate void remove() {\n\t\t\tlocationPanels.remove(this);\n\t\t\tupdatePanels();\n\t\t}\n\n\t\tprivate void newClone() {\n\t\t\tLocationPanel locationPanel = new LocationPanel(getFilter());\n\t\t\tlocationPanels.add(locationPanel);\n\t\t\tupdatePanels();\n\t\t}\n\n\t\tprivate void addOwner() {\n\t\t\townerPanels.add(new FilterPanel(this, FilterType.OWNER));\n\t\t\tdoLayout();\n\t\t}\n\n\t\tprivate void addFlag() {\n\t\t\tflagPanels.add(new FilterPanel(this, FilterType.FLAG));\n\t\t\tdoLayout();\n\t\t}\n\n\t\tprivate void addContainer() {\n\t\t\tcontainerPanels.add(new FilterPanel(this, FilterType.CONTAINER));\n\t\t\tdoLayout();\n\t\t}\n\n\t\tprivate void addSingleton() {\n\t\t\tsingletonPanel = new FilterPanel(this, FilterType.SINGLETON);\n\t\t\tdoLayout();\n\t\t\tjSingleton.setEnabled(false);\n\t\t\tsingletonPanel.jSingleton.requestFocusInWindow();\n\t\t}\n\n\t\tprivate void addJobsDays() {\n\t\t\tjobsDaysPanel = new FilterPanel(this, FilterType.JOBS_DAYS);\n\t\t\tdoLayout();\n\t\t\tjJobsDays.setEnabled(false);\n\t\t\tjobsDaysPanel.jJobsDays.requestFocusInWindow();\n\t\t}\n\n\t\tprivate void changeLocationType() {\n\t\t\tif (jPlanet.isSelected()) {\n\t\t\t\tsetLocationType(LocationType.PLANET);\n\t\t\t} else if (jStation.isSelected()) {\n\t\t\t\tsetLocationType(LocationType.STATION);\n\t\t\t} else if (jSystem.isSelected()) {\n\t\t\t\tsetLocationType(LocationType.SYSTEM);\n\t\t\t} else if (jConstellation.isSelected()) {\n\t\t\t\tsetLocationType(LocationType.CONSTELLATION);\n\t\t\t} else if (jRegion.isSelected()) {\n\t\t\t\tsetLocationType(LocationType.REGION);\n\t\t\t} else {\n\t\t\t\tsetLocationType(LocationType.UNIVERSE);\n\t\t\t}\n\t\t\trefilter();\n\t\t\tautoValidate();\n\t\t}\n\n\t\tprivate class ListenerClass implements ActionListener, ItemListener {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\t\tif (StockpileDialogAction.ADD_OWNER.name().equals(e.getActionCommand())) {\n\t\t\t\t\taddOwner();\n\t\t\t\t} else if (StockpileDialogAction.ADD_FLAG.name().equals(e.getActionCommand())) {\n\t\t\t\t\taddFlag();\n\t\t\t\t} else if (StockpileDialogAction.ADD_CONTAINER.name().equals(e.getActionCommand())) {\n\t\t\t\t\taddContainer();\n\t\t\t\t} else if (StockpileDialogAction.ADD_SINGLETON.name().equals(e.getActionCommand())) {\n\t\t\t\t\taddSingleton();\n\t\t\t\t} else if (StockpileDialogAction.ADD_JOBS_DAYS.name().equals(e.getActionCommand())) {\n\t\t\t\t\taddJobsDays();\n\t\t\t\t} else if (StockpileDialogAction.FILTER_LOCATIONS.name().equals(e.getActionCommand())) {\n\t\t\t\t\trefilter();\n\t\t\t\t} else if (StockpileDialogAction.VALIDATE.name().equals(e.getActionCommand())) {\n\t\t\t\t\tautoValidate();\n\t\t\t\t} else if (StockpileDialogAction.REMOVE.name().equals(e.getActionCommand())) {\n\t\t\t\t\tremove();\n\t\t\t\t} else if (StockpileDialogAction.CLONE.name().equals(e.getActionCommand())) {\n\t\t\t\t\tnewClone();\n\t\t\t\t} else if (StockpileDialogAction.CHANGE_LOCATION_TYPE.name().equals(e.getActionCommand())) {\n\t\t\t\t\tchangeLocationType();\n\t\t\t\t}\n\t\t\t}\n\t\t\t@Override\n\t\t\tpublic void itemStateChanged(final ItemEvent e) {\n\t\t\t\tautoValidate();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static class BorderPanel {\n\n\t\tprivate enum Alignment {\n\t\t\tHORIZONTAL,\n\t\t\tVERTICAL\n\t\t}\n\n\t\tprivate final GroupLayout layout;\n\t\tprivate final JPanel jPanel;\n\t\tprivate final List<JComponent> components = new ArrayList<>();\n\t\tprivate final Alignment alignment;\n\n\t\tpublic BorderPanel(String title) {\n\t\t\tthis(title, Alignment.HORIZONTAL);\n\t\t}\n\n\t\tpublic BorderPanel(String title, Alignment alignment) {\n\t\t\tthis.alignment = alignment;\n\t\t\tjPanel = new JPanel();\n\t\t\tlayout = new GroupLayout(jPanel);\n\t\t\tjPanel.setLayout(layout);\n\t\t\tlayout.setAutoCreateGaps(true);\n\t\t\tlayout.setAutoCreateContainerGaps(false);\n\t\t\tjPanel.setBorder(BorderFactory.createTitledBorder(title));\n\t\t}\n\n\t\tpublic void addGab(int size) {\n\t\t\tcomponents.add(new BorderPanelGab(size));\n\t\t\tdoLayout();\n\t\t}\n\n\t\tpublic void addGab(int min, int pref, int max) {\n\t\t\tcomponents.add(new BorderPanelGab(min, pref, max));\n\t\t\tdoLayout();\n\t\t}\n\n\t\tpublic void add(JComponent jComponent) {\n\t\t\tcomponents.add(jComponent);\n\t\t\tdoLayout();\n\t\t}\n\n\t\tprivate void doLayout() {\n\t\t\tjPanel.removeAll();\n\t\t\tGroup horizontalGroup;\n\t\t\tGroup verticalGroup;\n\t\t\tif (alignment == Alignment.HORIZONTAL) {\n\t\t\t\thorizontalGroup = layout.createSequentialGroup();\n\t\t\t\tverticalGroup = layout.createParallelGroup();\n\t\t\t} else {\n\t\t\t\thorizontalGroup = layout.createParallelGroup();\n\t\t\t\tverticalGroup = layout.createSequentialGroup();\n\t\t\t}\n\t\t\tfor (JComponent component : components) {\n\t\t\t\tif (component instanceof BorderPanelGab) {\n\t\t\t\t\tBorderPanelGab gab = (BorderPanelGab) component;\n\t\t\t\t\tif (alignment == Alignment.HORIZONTAL) {\n\t\t\t\t\t\tgab.addGab(horizontalGroup);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgab.addGab(verticalGroup);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\thorizontalGroup.addComponent(component);\n\t\t\t\t\tif (alignment == Alignment.HORIZONTAL) {\n\t\t\t\t\t\tverticalGroup.addComponent(component, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tverticalGroup.addComponent(component);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tlayout.setHorizontalGroup(horizontalGroup);\n\t\t\tlayout.setVerticalGroup(verticalGroup);\n\t\t}\n\n\t\tpublic void setVisible(boolean aFlag) {\n\t\t\tjPanel.setVisible(aFlag);\n\t\t}\n\n\t\tpublic JPanel getPanel() {\n\t\t\treturn jPanel;\n\t\t}\n\t}\n\n\tprivate static class BorderPanelGab extends JComponent {\n\t\tprivate final int min;\n\t\tprivate final int pref;\n\t\tprivate final int max;\n\n\t\tpublic BorderPanelGab(int size) {\n\t\t\tthis(size, size, size);\n\t\t}\n\n\t\tpublic BorderPanelGab(int min, int pref, int max) {\n\t\t\tthis.min = min;\n\t\t\tthis.pref = pref;\n\t\t\tthis.max = max;\n\t\t}\n\n\t\tpublic void addGab(Group group) {\n\t\t\tgroup.addGap(min, pref, max);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/stockpile/StockpileExtendedTableFormat.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.stockpile;\r\n\r\nimport java.util.Comparator;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileItem;\r\nimport net.nikr.eve.jeveasset.i18n.TabsStockpile;\r\n\r\n\r\npublic enum StockpileExtendedTableFormat implements EnumTableColumn<StockpileItem> {\r\n\tSTOCKPILE_NAME(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsStockpile.get().getFilterStockpileName();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final StockpileItem from) {\r\n\t\t\treturn from.getStockpile().getName();\r\n\t\t}\r\n\t},\r\n\tSTOCKPILE_OWNER(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsStockpile.get().getFilterStockpileOwner();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final StockpileItem from) {\r\n\t\t\treturn from.getStockpile().getOwnerName();\r\n\t\t}\r\n\t},\r\n\tSTOCKPILE_LOCATION(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsStockpile.get().getFilterStockpileLocation();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final StockpileItem from) {\r\n\t\t\treturn from.getStockpile().getLocationName();\r\n\t\t}\r\n\t},\r\n\tSTOCKPILE_FLAG(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsStockpile.get().getFilterStockpileFlag();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final StockpileItem from) {\r\n\t\t\treturn from.getStockpile().getFlagName();\r\n\t\t}\r\n\t},\r\n\tSTOCKPILE_CONTAINER(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsStockpile.get().getFilterStockpileContainer();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final StockpileItem from) {\r\n\t\t\treturn from.getStockpile().getContainerName();\r\n\t\t}\r\n\t};\r\n\r\n\tprivate final Class<?> type;\r\n\tprivate final Comparator<?> comparator;\r\n\tprivate StockpileExtendedTableFormat(final Class<?> type) {\r\n\t\tthis.type = type;\r\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\r\n\t}\r\n\t@Override\r\n\tpublic Class<?> getType() {\r\n\t\treturn type;\r\n\t}\r\n\t@Override\r\n\tpublic Comparator<?> getComparator() {\r\n\t\treturn comparator;\r\n\t}\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn getColumnName();\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/stockpile/StockpileItemDialog.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.stockpile;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.swing.AutoCompleteSupport;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.FocusAdapter;\nimport java.awt.event.FocusEvent;\nimport java.awt.event.ItemEvent;\nimport java.awt.event.ItemListener;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\nimport javax.swing.DefaultComboBoxModel;\nimport javax.swing.GroupLayout;\nimport javax.swing.JButton;\nimport javax.swing.JCheckBox;\nimport javax.swing.JComboBox;\nimport javax.swing.JComponent;\nimport javax.swing.JLabel;\nimport javax.swing.JTextField;\nimport javax.swing.SwingUtilities;\nimport javax.swing.event.CaretEvent;\nimport javax.swing.event.CaretListener;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.sde.IndustryMaterial;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings;\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings.ManufacturingFacility;\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings.ManufacturingRigs;\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings.ReactionRigs;\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings.ManufacturingSecurity;\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings.ReactionSecurity;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels.ItemFilterator;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileItem;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.SubpileStock;\nimport net.nikr.eve.jeveasset.i18n.TabsStockpile;\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\n\n\npublic class StockpileItemDialog extends JDialogCentered {\n\n\tprivate enum StockpileItemAction {\n\t\tCANCEL,\n\t\tOK,\n\t\tTYPE_CHANGE\n\t}\n\n\tpublic static enum BlueprintAddType {\n\t\tNONE(TabsStockpile.get().none()),\n\t\tBPO(TabsStockpile.get().original()),\n\t\tBPC(TabsStockpile.get().copy()),\n\t\tRUNS(TabsStockpile.get().runs()),\n\t\tMANUFACTURING_MATERIALS(TabsStockpile.get().materialsManufacturing()),\n\t\tREACTION_MATERIALS(TabsStockpile.get().materialsReaction()),\n\t\t;\n\t\tfinal String name;\n\n\t\tpublic static BlueprintAddType[] EMPTY = {NONE};\n\t\tpublic static BlueprintAddType[] EDIT_BLUEPRINT = {BPO, BPC, RUNS};\n\t\tpublic static BlueprintAddType[] EDIT_FORMULA = {BPO};\n\t\tpublic static BlueprintAddType[] ADD_BLUEPRINT = {BPO, BPC, RUNS, MANUFACTURING_MATERIALS};\n\t\tpublic static BlueprintAddType[] ADD_FORMULA = {BPO, REACTION_MATERIALS};\n\n\t\tprivate BlueprintAddType(String name) {\n\t\t\tthis.name = name;\n\t\t}\n\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\treturn name;\n\t\t}\n\t}\n\n\tprivate final JButton jOK;\n\tprivate final JComboBox<Item> jItems;\n\tprivate final JLabel jSubpile;\n\tprivate JTextField jCountMinimum;\n\tprivate final JLabel jBlueprintTypeLabel;\n\tprivate final JComboBox<BlueprintAddType> jBlueprintType;\n\tprivate final JComboBox<Integer> jMe;\n\tprivate final JComboBox<ManufacturingFacility> jFacility;\n\tprivate final JComboBox<ManufacturingRigs> jRigs;\n\tprivate final JComboBox<ReactionRigs> jRigsReactions;\n\tprivate final JComboBox<ManufacturingSecurity> jSecurity;\n\tprivate final JComboBox<ReactionSecurity> jSecurityReactions;\n\tprivate final JLabel jIgnoreMultiplierLabel;\n\tprivate final JCheckBox jIgnoreMultiplier;\n\n\tprivate final StockpileTab stockpileTab;\n\tprivate final List<JComponent> manufacturingComponents = new ArrayList<>();\n\tprivate final List<JComponent> reactionComponents = new ArrayList<>();\n\tprivate final EventList<Item> items = EventListManager.create();\n\tprivate Stockpile stockpile;\n\tprivate StockpileItem stockpileItem;\n\tprivate List<StockpileItem> stockpileItems;\n\tprivate BlueprintAddType lastBlueprintAddType = null;\n\tprivate boolean updating = false;\n\n\tpublic StockpileItemDialog(final StockpileTab stockpileTab, final Program program) {\n\t\tsuper(program, TabsStockpile.get().addStockpileItem(), Images.TOOL_STOCKPILE.getImage());\n\t\tthis.stockpileTab = stockpileTab;\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tJLabel jItemsLabel = new JLabel(TabsStockpile.get().item());\n\t\tjItems = new JComboBox<>();\n\t\tAutoCompleteSupport<Item> itemAutoComplete = AutoCompleteSupport.install(jItems, EventModels.createSwingThreadProxyList(items), new ItemFilterator());\n\t\titemAutoComplete.setStrict(true);\n\t\tjItems.addItemListener(listener); //Must be added after AutoCompleteSupport\n\n\t\tjSubpile = new JLabel();\n\n\t\tJLabel jCountMinimumLabel = new JLabel(TabsStockpile.get().countMinimum());\n\t\tjCountMinimum = new JTextField();\n\t\tjCountMinimum.addFocusListener(new FocusAdapter() {\n\t\t\t@Override\n\t\t\tpublic void focusGained(final FocusEvent e) {\n\t\t\t\tjCountMinimum.selectAll();\n\t\t\t}\n\t\t});\n\t\tjCountMinimum.addCaretListener(listener);\n\n\t\tjIgnoreMultiplierLabel = new JLabel(TabsStockpile.get().multiplier());\n\t\tjIgnoreMultiplier = new JCheckBox(TabsStockpile.get().multiplierIgnore());\n\n\t\tjBlueprintTypeLabel = new JLabel(TabsStockpile.get().blueprintType());\n\t\tjBlueprintType = new JComboBox<>(BlueprintAddType.values());\n\t\tjBlueprintType.setActionCommand(StockpileItemAction.TYPE_CHANGE.name());\n\t\tjBlueprintType.addActionListener(listener);\n\n\t\tJLabel jMeLabel = new JLabel(TabsStockpile.get().blueprintMe());\n\t\tmanufacturingComponents.add(jMeLabel);\n\t\tInteger[] me = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};\n\t\tjMe = new JComboBox<>(me);\n\t\tjMe.setPrototypeDisplayValue(10);\n\t\tjMe.setMaximumRowCount(me.length);\n\t\tmanufacturingComponents.add(jMe);\n\n\t\tJLabel jFacilityLabel = new JLabel(TabsStockpile.get().blueprintFacility());\n\t\tmanufacturingComponents.add(jFacilityLabel);\n\t\tjFacility = new JComboBox<>(ManufacturingSettings.ManufacturingFacility.values());\n\t\tjFacility.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tManufacturingFacility facility = jFacility.getItemAt(jFacility.getSelectedIndex());\n\t\t\t\tif (facility == ManufacturingFacility.STATION) {\n\t\t\t\t\tjRigs.setSelectedIndex(0);\n\t\t\t\t\tjRigs.setEnabled(false);\n\t\t\t\t} else {\n\t\t\t\t\tjRigs.setEnabled(true);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tmanufacturingComponents.add(jFacility);\n\n\t\tJLabel jRigsLabel = new JLabel(TabsStockpile.get().blueprintRigs());\n\t\tmanufacturingComponents.add(jRigsLabel);\n\t\tjRigs = new JComboBox<>(ManufacturingRigs.values());\n\t\tjRigs.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tManufacturingRigs rigs = jRigs.getItemAt(jRigs.getSelectedIndex());\n\t\t\t\tif (rigs == ManufacturingRigs.NONE) {\n\t\t\t\t\tjSecurity.setSelectedIndex(0);\n\t\t\t\t\tjSecurity.setEnabled(false);\n\t\t\t\t} else {\n\t\t\t\t\tjSecurity.setEnabled(true);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tmanufacturingComponents.add(jRigs);\n\n\t\tJLabel jRigsReactionsLabel = new JLabel(TabsStockpile.get().blueprintRigs());\n\t\treactionComponents.add(jRigsReactionsLabel);\n\t\tjRigsReactions = new JComboBox<>(ReactionRigs.values());\n\t\tjRigsReactions.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tReactionRigs rigs = jRigsReactions.getItemAt(jRigsReactions.getSelectedIndex());\n\t\t\t\tif (rigs == ReactionRigs.NONE) {\n\t\t\t\t\tjSecurityReactions.setSelectedIndex(0);\n\t\t\t\t\tjSecurityReactions.setEnabled(false);\n\t\t\t\t} else {\n\t\t\t\t\tjSecurityReactions.setEnabled(true);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treactionComponents.add(jRigsReactions);\n\n\n\t\tJLabel jSecurityLabel = new JLabel(TabsStockpile.get().blueprintSecurity());\n\t\tmanufacturingComponents.add(jSecurityLabel);\n\t\tjSecurity = new JComboBox<>(ManufacturingSecurity.values());\n\t\tmanufacturingComponents.add(jSecurity);\n\n\t\tJLabel jSecurityReactionsLabel = new JLabel(TabsStockpile.get().blueprintSecurity());\n\t\treactionComponents.add(jSecurityReactionsLabel);\n\t\tjSecurityReactions = new JComboBox<>(ReactionSecurity.values());\n\t\treactionComponents.add(jSecurityReactions);\n\n\n\t\tjOK = new JButton(TabsStockpile.get().ok());\n\t\tjOK.setActionCommand(StockpileItemAction.OK.name());\n\t\tjOK.addActionListener(listener);\n\t\tjOK.setEnabled(false);\n\n\t\tJButton jCancel = new JButton(TabsStockpile.get().cancel());\n\t\tjCancel.setActionCommand(StockpileItemAction.CANCEL.name());\n\t\tjCancel.addActionListener(listener);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t\t.addComponent(jItemsLabel)\n\t\t\t\t\t\t.addComponent(jBlueprintTypeLabel)\n\t\t\t\t\t\t.addComponent(jMeLabel)\n\t\t\t\t\t\t.addComponent(jFacilityLabel)\n\t\t\t\t\t\t.addComponent(jRigsLabel)\n\t\t\t\t\t\t.addComponent(jRigsReactionsLabel)\n\t\t\t\t\t\t.addComponent(jSecurityLabel)\n\t\t\t\t\t\t.addComponent(jSecurityReactionsLabel)\n\t\t\t\t\t\t.addComponent(jIgnoreMultiplierLabel)\n\t\t\t\t\t\t.addComponent(jCountMinimumLabel)\n\t\t\t\t\t)\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t\t.addComponent(jItems, 300, 300, 300)\n\t\t\t\t\t\t.addComponent(jSubpile, 300, 300, 300)\n\t\t\t\t\t\t.addComponent(jBlueprintType, 300, 300, 300)\n\t\t\t\t\t\t.addComponent(jMe, 300, 300, 300)\n\t\t\t\t\t\t.addComponent(jFacility, 300, 300, 300)\n\t\t\t\t\t\t.addComponent(jRigs, 300, 300, 300)\n\t\t\t\t\t\t.addComponent(jRigsReactions, 300, 300, 300)\n\t\t\t\t\t\t.addComponent(jSecurity, 300, 300, 300)\n\t\t\t\t\t\t.addComponent(jSecurityReactions, 300, 300, 300)\n\t\t\t\t\t\t.addComponent(jIgnoreMultiplier, 300, 300, 300)\n\t\t\t\t\t\t.addComponent(jCountMinimum, 300, 300, 300)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jItemsLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jItems, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jSubpile, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jBlueprintTypeLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jBlueprintType, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jMeLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jMe, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jFacilityLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jFacility, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jRigsLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jRigs, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t\t.addComponent(jRigsReactionsLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jRigsReactions, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jSecurityLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jSecurity, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t\t.addComponent(jSecurityReactionsLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t\t.addComponent(jSecurityReactions, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jIgnoreMultiplierLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jIgnoreMultiplier, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jCountMinimumLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jCountMinimum, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup()\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t);\n\t}\n\n\tprotected StockpileItem showEdit(final StockpileItem editStockpileItem) {\n\t\tupdateData();\n\t\tthis.stockpileItem = editStockpileItem;\n\t\tthis.getDialog().setTitle(TabsStockpile.get().editStockpileItem());\n\t\tItem item = ApiIdConverter.getItem(editStockpileItem.getTypeID());\n\t\tif (editStockpileItem instanceof SubpileStock) {\n\t\t\tjSubpile.setText(editStockpileItem.getName());\n\t\t\tjSubpile.setVisible(true);\n\t\t\tjBlueprintTypeLabel.setVisible(false);\n\t\t\tjBlueprintType.setVisible(false);\n\t\t\tjIgnoreMultiplierLabel.setVisible(false);\n\t\t\tjIgnoreMultiplier.setVisible(false);\n\t\t\tjItems.setVisible(false);\n\t\t} else {\n\t\t\tjItems.setSelectedItem(item);\n\t\t\tjSubpile.setVisible(false);\n\t\t\tjBlueprintTypeLabel.setVisible(true);\n\t\t\tjBlueprintType.setVisible(true);\n\t\t\tjIgnoreMultiplierLabel.setVisible(true);\n\t\t\tjIgnoreMultiplier.setVisible(true);\n\t\t\tjItems.setVisible(true);\n\t\t}\n\t\tif (item.isBlueprint()) {\n\t\t\tjBlueprintType.setModel(new DefaultComboBoxModel<>(BlueprintAddType.EDIT_BLUEPRINT));\n\t\t} else if (item.isFormula()) {\n\t\t\tjBlueprintType.setModel(new DefaultComboBoxModel<>(BlueprintAddType.EDIT_FORMULA));\n\t\t} else {\n\t\t\tjBlueprintType.setModel(new DefaultComboBoxModel<>(BlueprintAddType.EMPTY));\n\t\t}\n\t\tif (editStockpileItem.isBPO()) {\n\t\t\tjBlueprintType.setSelectedItem(BlueprintAddType.BPO);\n\t\t} else if (editStockpileItem.isBPC()) {\n\t\t\tjBlueprintType.setSelectedItem(BlueprintAddType.BPC);\n\t\t} else if (editStockpileItem.isRuns()) {\n\t\t\tjBlueprintType.setSelectedItem(BlueprintAddType.RUNS);\n\t\t}\n\t\tjBlueprintType.setEnabled(item.isBlueprint());\n\t\tjCountMinimum.setText(String.valueOf(editStockpileItem.getCountMinimum()));\n\t\tshow();\n\t\treturn stockpileItem;\n\t}\n\n\tprotected List<StockpileItem> showAdd(final Stockpile addStockpile) {\n\t\tupdateData();\n\t\tthis.stockpile = addStockpile;\n\t\tthis.getDialog().setTitle(TabsStockpile.get().addStockpileItem());\n\t\tjBlueprintType.setModel(new DefaultComboBoxModel<>(BlueprintAddType.EMPTY));\n\t\tshow();\n\t\tif (stockpileItems != null) {\n\t\t\treturn stockpileItems;\n\t\t} else if (stockpileItem != null) {\n\t\t\treturn Collections.singletonList(stockpileItem);\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate void updateData() {\n\t\tstockpile = null;\n\t\tstockpileItem = null;\n\t\tthis.stockpileItems = null;\n\t\tList<Item> itemsList = new ArrayList<>(StaticData.get().getItems().values());\n\t\tCollections.sort(itemsList);\n\t\ttry {\n\t\t\titems.getReadWriteLock().writeLock().lock();\n\t\t\titems.clear();\n\t\t\titems.addAll(itemsList);\n\t\t} finally {\n\t\t\titems.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t\tjSubpile.setVisible(false);\n\t\tjItems.setVisible(true);\n\t\tjItems.setSelectedIndex(0);\n\t\tjCountMinimum.setText(\"\");\n\t\tjIgnoreMultiplier.setSelected(false);\n\t}\n\n\tprivate void show() {\n\t\tautoValidate();\n\t\tautoSet();\n\t\tsuper.setVisible(true);\n\t}\n\n\tprivate Stockpile getStockpile() {\n\t\tif (stockpile != null) {\n\t\t\treturn stockpile;\n\t\t} else if (stockpileItem != null) {\n\t\t\treturn stockpileItem.getStockpile();\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate StockpileItem getStockpileItem() {\n\t\tItem item = (Item) jItems.getSelectedItem();\n\t\tdouble countMinimum;\n\t\ttry {\n\t\t\tcountMinimum = Double.parseDouble(jCountMinimum.getText());\n\t\t} catch (NumberFormatException ex) {\n\t\t\tcountMinimum = 0;\n\t\t}\n\t\tboolean runs = jBlueprintType.isEnabled() && jBlueprintType.getItemAt(jBlueprintType.getSelectedIndex()) == BlueprintAddType.RUNS;\n\t\tboolean copy = runs || (jBlueprintType.isEnabled() && jBlueprintType.getItemAt(jBlueprintType.getSelectedIndex()) == BlueprintAddType.BPC);\n\t\tint typeID;\n\t\tif (copy) {\n\t\t\ttypeID = -item.getTypeID();\n\t\t} else {\n\t\t\ttypeID = item.getTypeID();\n\t\t}\n\t\tboolean ignoreMultiplier = jIgnoreMultiplier.isSelected();\n\t\treturn new StockpileItem(getStockpile(), item, typeID, countMinimum, runs, ignoreMultiplier);\n\t}\n\n\tprivate List<StockpileItem> getStockpileItems() {\n\t\tList<StockpileItem> itemsMaterial = new ArrayList<>();\n\t\tItem item = (Item) jItems.getSelectedItem();\n\t\tdouble countMinimum;\n\t\ttry {\n\t\t\tcountMinimum = Double.parseDouble(jCountMinimum.getText());\n\t\t} catch (NumberFormatException ex) {\n\t\t\tcountMinimum = 0;\n\t\t}\n\t\tboolean ignoreMultiplier = jIgnoreMultiplier.isSelected();\n\t\tInteger me = jMe.getItemAt(jMe.getSelectedIndex());\n\t\tManufacturingFacility facility = jFacility.getItemAt(jFacility.getSelectedIndex());\n\t\tManufacturingRigs rigs = jRigs.getItemAt(jRigs.getSelectedIndex());\n\t\tReactionRigs rigsReactions = jRigsReactions.getItemAt(jRigsReactions.getSelectedIndex());\n\t\tManufacturingSecurity security = jSecurity.getItemAt(jSecurity.getSelectedIndex());\n\t\tReactionSecurity securityReactions = jSecurityReactions.getItemAt(jSecurityReactions.getSelectedIndex());\n\t\tif (jBlueprintType.isEnabled() && jBlueprintType.getItemAt(jBlueprintType.getSelectedIndex()) == BlueprintAddType.MANUFACTURING_MATERIALS) {\n\t\t\t //Manufacturing Materials\n\t\t\tfor (IndustryMaterial material : item.getManufacturingMaterials()) {\n\t\t\t\tItem materialItem = ApiIdConverter.getItem(material.getTypeID());\n\t\t\t\tdouble count = ApiIdConverter.getManufacturingQuantity(material.getQuantity(), me, facility, rigs, security, countMinimum, false);\n\t\t\t\titemsMaterial.add(new StockpileItem(getStockpile(), materialItem, material.getTypeID(), count, false, ignoreMultiplier));\n\t\t\t}\n\t\t} else if (jBlueprintType.isEnabled() && jBlueprintType.getItemAt(jBlueprintType.getSelectedIndex()) == BlueprintAddType.REACTION_MATERIALS) {\n\t\t\t//Reaction Materials\n\t\t\tfor (IndustryMaterial material : item.getReactionMaterials()) {\n\t\t\t\tItem materialItem = ApiIdConverter.getItem(material.getTypeID());\n\t\t\t\tdouble count = ApiIdConverter.getReactionQuantity(material.getQuantity(), rigsReactions, securityReactions, countMinimum, false);\n\t\t\t\titemsMaterial.add(new StockpileItem(getStockpile(), materialItem, material.getTypeID(), count, false, ignoreMultiplier));\n\t\t\t}\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t\treturn itemsMaterial;\n\t}\n\n\tprivate boolean itemExist() {\n\t\treturn getExistingItem() != null;\n\t}\n\n\tprivate StockpileItem getExistingItem() {\n\t\tObject object = jItems.getSelectedItem();\n\t\tif (object == null) {\n\t\t\treturn null;\n\t\t}\n\t\tif (!(object instanceof Item)) {\n\t\t\treturn null;\n\t\t}\n\t\tItem typeItem = (Item) object;\n\t\tStockpile existing = getStockpile();\n\t\tif (existing == null) {\n\t\t\treturn null;\n\t\t}\n\t\tboolean materials = jBlueprintType.isEnabled() &&\n\t\t\t\t(jBlueprintType.getItemAt(jBlueprintType.getSelectedIndex()) == BlueprintAddType.MANUFACTURING_MATERIALS\n\t\t\t\t|| jBlueprintType.getItemAt(jBlueprintType.getSelectedIndex()) == BlueprintAddType.REACTION_MATERIALS);\n\t\tif (materials) { //Never exists\n\t\t\treturn null;\n\t\t}\n\t\tboolean runs = jBlueprintType.isEnabled() && jBlueprintType.getItemAt(jBlueprintType.getSelectedIndex()) == BlueprintAddType.RUNS;\n\t\tboolean copy = runs || (jBlueprintType.isEnabled() && jBlueprintType.getItemAt(jBlueprintType.getSelectedIndex()) == BlueprintAddType.BPC);\n\t\tfor (StockpileItem item : existing.getItems()) {\n\t\t\tif (item.getTypeID() == typeItem.getTypeID() && copy == item.isBPC() && runs == item.isRuns()) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate void autoValidate() {\n\t\tif (updating) {\n\t\t\treturn;\n\t\t}\n\t\tboolean oldUpdateValue = updating;\n\t\tupdating = true;\n\t\tboolean valid = true;\n\t\tboolean colorIsSet = false;\n\t\tObject object = jItems.getSelectedItem();\n\t\tif (object == null || !(object instanceof Item)) {\n\t\t\tvalid = false; //No item selected\n\t\t}\n\t\tif (itemExist()) { //Editing existing item\n\t\t\tcolorIsSet = true;\n\t\t\tColorSettings.config(jCountMinimum, ColorEntry.GLOBAL_ENTRY_WARNING);\n\t\t}\n\t\ttry {\n\t\t\tdouble d = Double.parseDouble(jCountMinimum.getText());\n\t\t\tif (d <= 0) {\n\t\t\t\tvalid = false; //Negative and zero is not valid\n\t\t\t\tcolorIsSet = true;\n\t\t\t\tColorSettings.config(jCountMinimum, ColorEntry.GLOBAL_ENTRY_INVALID);\n\t\t\t}\n\t\t} catch (NumberFormatException ex) {\n\t\t\tvalid = false; //Empty and NaN is not valid\n\t\t\tif (!jCountMinimum.getText().isEmpty()) {\n\t\t\t\tcolorIsSet = true;\n\t\t\t\tColorSettings.config(jCountMinimum, ColorEntry.GLOBAL_ENTRY_INVALID);\n\t\t\t}\n\t\t}\n\t\tif (!colorIsSet) {\n\t\t\tColorSettings.configReset(jCountMinimum);\n\t\t}\n\t\tjOK.setEnabled(valid);\n\t\tupdating = oldUpdateValue;\n\t}\n\n\tprivate void autoSet() {\n\t\tif (jItems.getSelectedItem() == null || !(jItems.getSelectedItem() instanceof Item)) {\n\t\t\tjBlueprintType.setEnabled(false);\n\t\t\tjBlueprintType.setModel(new DefaultComboBoxModel<>(BlueprintAddType.EMPTY));\n\t\t} else {\n\t\t\tItem item = (Item) jItems.getSelectedItem();\n\t\t\tBlueprintAddType oldValue = jBlueprintType.getItemAt(jBlueprintType.getSelectedIndex());\n\t\t\tif (stockpileItem != null) { //Can not add Materials\n\t\t\t\tif (item.isBlueprint()) {\n\t\t\t\t\tjBlueprintType.setModel(new DefaultComboBoxModel<>(BlueprintAddType.EDIT_BLUEPRINT));\n\t\t\t\t\tjBlueprintType.setEnabled(true);\n\t\t\t\t} else if (item.isFormula()) {\n\t\t\t\t\tjBlueprintType.setModel(new DefaultComboBoxModel<>(BlueprintAddType.EDIT_FORMULA));\n\t\t\t\t\tjBlueprintType.setEnabled(false);\n\t\t\t\t} else {\n\t\t\t\t\tjBlueprintType.setModel(new DefaultComboBoxModel<>(BlueprintAddType.EMPTY));\n\t\t\t\t\tjBlueprintType.setEnabled(false);\n\t\t\t\t}\n\t\t\t} else if (!item.getManufacturingMaterials().isEmpty()) {\n\t\t\t\tjBlueprintType.setModel(new DefaultComboBoxModel<>(BlueprintAddType.ADD_BLUEPRINT));\n\t\t\t\tjBlueprintType.setEnabled(true);\n\t\t\t} else if (!item.getReactionMaterials().isEmpty()) {\n\t\t\t\tjBlueprintType.setModel(new DefaultComboBoxModel<>(BlueprintAddType.ADD_FORMULA));\n\t\t\t\tjBlueprintType.setEnabled(true);\n\t\t\t} else if (item.isBlueprint()) {\n\t\t\t\tjBlueprintType.setModel(new DefaultComboBoxModel<>(BlueprintAddType.EDIT_BLUEPRINT));\n\t\t\t\tjBlueprintType.setEnabled(true);\n\t\t\t} else if (item.isFormula()) {\n\t\t\t\tjBlueprintType.setModel(new DefaultComboBoxModel<>(BlueprintAddType.EDIT_FORMULA));\n\t\t\t\tjBlueprintType.setEnabled(true);\n\t\t\t} else {\n\t\t\t\tjBlueprintType.setModel(new DefaultComboBoxModel<>(BlueprintAddType.EMPTY));\n\t\t\t\tjBlueprintType.setEnabled(false);\n\t\t\t}\n\t\t\tjBlueprintType.setSelectedItem(oldValue);\n\t\t}\n\t\tfinal StockpileItem item = getExistingItem();\n\t\tif (item != null) {\n\t\t\tSwingUtilities.invokeLater(new Runnable() {\n\t\t\t\t@Override\n\t\t\t\tpublic void run() {\n\t\t\t\t\tif (updating) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tboolean oldUpdateValue = updating;\n\t\t\t\t\tupdating = true;\n\t\t\t\t\tjCountMinimum.setText(String.valueOf(item.getCountMinimum()));\n\t\t\t\t\tjIgnoreMultiplier.setSelected(item.isIgnoreMultiplier());\n\t\t\t\t\tupdating = oldUpdateValue;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t@Override\n\tprotected JComponent getDefaultFocus() {\n\t\tif (jItems.isEnabled()) {\n\t\t\treturn jItems;\n\t\t} else {\n\t\t\treturn jCountMinimum;\n\t\t}\n\t}\n\n\t@Override\n\tprotected JButton getDefaultButton() {\n\t\treturn jOK;\n\t}\n\n\t@Override\n\tprotected void windowShown() { }\n\n\t@Override\n\tprotected void save() {\n\t\tSettings.lock(\"Stockpile (Items Dialog)\"); //Lock for Stockpile (Items Dialog)\n\t\tif (stockpileItem instanceof SubpileStock) { //Edit SubpileStock\n\t\t\tSubpileStock subpileStock = (SubpileStock) stockpileItem;\n\t\t\tStockpileItem editItem = getStockpileItem();\n\t\t\tsubpileStock.setCountMinimum(editItem.getCountMinimum());\n\t\t} else if (stockpileItem != null) { //EDIT\n\t\t\tif (itemExist()) { //EDIT + UPDATING (Editing to an existing item)\n\t\t\t\tStockpileItem existingItem = getExistingItem();\n\t\t\t\texistingItem.getStockpile().remove(existingItem);\n\t\t\t\tstockpileTab.removeItem(existingItem);\n\t\t\t}\n\t\t\tstockpileItem.update(getStockpileItem());\n\t\t} else if (itemExist()) { //UPDATING (Adding an existing item)\n\t\t\tstockpileItem = getExistingItem();\n\t\t\tstockpileItem.update(getStockpileItem());\n\t\t} else { //ADD\n\t\t\tstockpileItems = getStockpileItems();\n\t\t\tif (stockpileItems != null) {\n\t\t\t\tfor (StockpileItem item : stockpileItems) {\n\t\t\t\t\tif (!stockpile.add(item)) { //ADD MERGE (Only used by manufacturing materials)\n\t\t\t\t\t\tfor (StockpileItem current : stockpile.getItems()) {\n\t\t\t\t\t\t\tif (!current.getTypeID().equals(item.getTypeID())) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcurrent.setCountMinimum(item.getCountMinimum() + current.getCountMinimum());\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tstockpileItem = getStockpileItem();\n\t\t\t\tstockpile.add(stockpileItem);\n\t\t\t}\n\t\t}\n\t\tSettings.unlock(\"Stockpile (Items Dialog)\"); //Unlock for Stockpile (Items Dialog)\n\t\tprogram.saveSettings(\"Stockpile (Items Dialog)\");\n\t\tsuper.setVisible(false);\n\t}\n\n\tprivate class ListenerClass implements ActionListener, CaretListener, ItemListener {\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (StockpileItemAction.OK.name().equals(e.getActionCommand())) {\n\t\t\t\tsave();\n\t\t\t} else if (StockpileItemAction.CANCEL.name().equals(e.getActionCommand())) {\n\t\t\t\tsetVisible(false);\n\t\t\t} else if (StockpileItemAction.TYPE_CHANGE.name().equals(e.getActionCommand())) {\n\t\t\t\tautoSet();\n\t\t\t\tautoValidate();\n\t\t\t\tBlueprintAddType currentBlueprintAddType = jBlueprintType.getItemAt(jBlueprintType.getSelectedIndex());\n\t\t\t\tif (lastBlueprintAddType != currentBlueprintAddType) {\n\t\t\t\t\tif (lastBlueprintAddType == null) {\n\t\t\t\t\t\tfor (JComponent jComponent : manufacturingComponents) {\n\t\t\t\t\t\t\tjComponent.setVisible(false);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (JComponent jComponent : reactionComponents) {\n\t\t\t\t\t\t\tjComponent.setVisible(false);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tswitch (lastBlueprintAddType) {\n\t\t\t\t\t\t\tcase MANUFACTURING_MATERIALS:\n\t\t\t\t\t\t\t\tfor (JComponent jComponent : manufacturingComponents) {\n\t\t\t\t\t\t\t\t\tjComponent.setVisible(false);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase REACTION_MATERIALS:\n\t\t\t\t\t\t\t\tfor (JComponent jComponent : reactionComponents) {\n\t\t\t\t\t\t\t\t\tjComponent.setVisible(false);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (jBlueprintType.isEnabled()) {\n\t\t\t\t\t\tswitch (currentBlueprintAddType) {\n\t\t\t\t\t\t\tcase MANUFACTURING_MATERIALS:\n\t\t\t\t\t\t\t\tfor (JComponent jComponent : manufacturingComponents) {\n\t\t\t\t\t\t\t\t\tjComponent.setVisible(true);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tjMe.setSelectedIndex(0);\n\t\t\t\t\t\t\t\tjFacility.setSelectedIndex(0);\n\t\t\t\t\t\t\t\tjRigs.setSelectedIndex(0);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase REACTION_MATERIALS:\n\t\t\t\t\t\t\t\tfor (JComponent jComponent : reactionComponents) {\n\t\t\t\t\t\t\t\t\tjComponent.setVisible(true);\n\t\t\t\t\t\t\t\t\tjComponent.setEnabled(true);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tjRigsReactions.setSelectedIndex(0);\n\t\t\t\t\t\t\t\tjRigsReactions.setEnabled(true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tgetDialog().pack();\n\t\t\t\t}\n\t\t\t\tlastBlueprintAddType = currentBlueprintAddType;\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void caretUpdate(final CaretEvent e) {\n\t\t\tautoValidate();\n\t\t}\n\n\t\t@Override\n\t\tpublic void itemStateChanged(final ItemEvent e) {\n\t\t\tautoValidate();\n\t\t\tautoSet();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/stockpile/StockpileSeparatorTableCell.java",
    "content": "/* Glazed Lists                                                 (c) 2003-2006 */\n/* http://publicobject.com/glazedlists/                      publicobject.com,*/\n/*                                                     O'Dell Engineering Ltd.*/\n\npackage net.nikr.eve.jeveasset.gui.tabs.stockpile;\n\nimport ca.odell.glazedlists.SeparatorList;\nimport java.awt.Color;\nimport java.awt.Component;\nimport java.awt.Container;\nimport java.awt.Dimension;\nimport java.awt.Font;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.AdjustmentEvent;\nimport java.awt.event.AdjustmentListener;\nimport java.awt.event.HierarchyEvent;\nimport java.awt.event.HierarchyListener;\nimport java.awt.event.KeyEvent;\nimport java.awt.event.KeyListener;\nimport java.awt.event.MouseAdapter;\nimport java.awt.event.MouseEvent;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Set;\nimport javax.swing.BorderFactory;\nimport javax.swing.GroupLayout;\nimport javax.swing.JButton;\nimport javax.swing.JCheckBoxMenuItem;\nimport javax.swing.JLabel;\nimport javax.swing.JMenu;\nimport javax.swing.JMenuItem;\nimport javax.swing.JPanel;\nimport javax.swing.JScrollPane;\nimport javax.swing.JTable;\nimport javax.swing.JTextField;\nimport javax.swing.JViewport;\nimport javax.swing.event.CellEditorListener;\nimport javax.swing.event.ChangeEvent;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.DocumentFactory;\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDoubleField;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDropDownButton;\nimport net.nikr.eve.jeveasset.gui.shared.table.SeparatorTableCell;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileItem;\nimport net.nikr.eve.jeveasset.i18n.TabsStockpile;\n\n/**\n *\n * @author <a href=\"mailto:jesse@swank.ca\">Jesse Wilson</a>\n */\npublic class StockpileSeparatorTableCell extends SeparatorTableCell<StockpileItem> {\n\n\tpublic enum StockpileCellAction {\n\t\tGROUP_NEW,\n\t\tGROUP_CHANGE_ADD,\n\t\tGROUP_TOGGLE_COLLAPSE,\n\t\tGROUP_EXPAND,\n\t\tGROUP_RENAME,\n\t\tGROUP_SHOPPING_LIST,\n\t\tGROUP_COLLAPSE,\n\t\tDELETE_STOCKPILE,\n\t\tEDIT_STOCKPILE,\n\t\tCLONE_STOCKPILE,\n\t\tHIDE_STOCKPILE,\n\t\tSHOPPING_LIST_SINGLE,\n\t\tADD_ITEM,\n\t\tSUBPILES,\n\t\tUPDATE_MULTIPLIER\n\t}\n\n\tprivate final static List<JCheckBoxMenuItem> jGroupMenuItems = new ArrayList<>();\n\tprivate final JPanel jGroupPanel;\n\tprivate final JLabel jGroup;\n\tprivate final JMenu jGroupMenu;\n\tprivate final JMenuItem jGroupNew;\n\tprivate final JButton jExpandGroup;\n\tprivate final JButton jCollapseGroupStockpiles;\n\tprivate final JButton jExpandGroupStockpiles;\n\tprivate final JButton jRenameGroup;\n\tprivate final JButton jGroupShoppingList;\n\tprivate final JPanel jInfoPanel;\n\tprivate final JLabel jStartSpaceGroup;\n\tprivate final JLabel jStartSpace;\n\tprivate final JLabel jColor;\n\tprivate final JLabel jColorDisabled;\n\tprivate final JDropDownButton jStockpile;\n\tprivate final JDoubleField jMultiplier;\n\tprivate final JLabel jMultiplierLabel;\n\tprivate final JLabel jName;\n\tprivate final JLabel jAvailableLabel;\n\tprivate final JLabel jAvailable;\n\tprivate final JLabel jOwnerLabel;\n\tprivate final JLabel jOwner;\n\tprivate final JLabel jLocation;\n\tprivate final JLabel jLocationLabel;\n\tprivate final Program program;\n\tprivate final StockpileTab stockpileTab;\n\n\tprivate Component focusOwner;\n\n\tpublic StockpileSeparatorTableCell(final StockpileTab stockpileTab, final Program program, final JTable jTable, final SeparatorList<StockpileItem> separatorList, final ActionListener actionListener) {\n\t\tsuper(jTable, separatorList);\n\t\tthis.program = program;\n\t\tthis.stockpileTab = stockpileTab;\n\n\t\tListenerClass listener = new ListenerClass();\n\t\taddCellEditorListener(listener);\n\n\t\tjTable.addHierarchyListener(listener);\n\n\t\tjGroupPanel = new JPanel();\n\t\tjGroupPanel.setBackground(Color.BLACK);\n\t\tGroupLayout groupLayout = new GroupLayout(jGroupPanel);\n\t\tjGroupPanel.setLayout(groupLayout);\n\t\tgroupLayout.setAutoCreateGaps(false);\n\t\tgroupLayout.setAutoCreateContainerGaps(false);\n\n\t\tjStartSpaceGroup = new JLabel();\n\n\t\tjExpandGroup = new JButton(Images.MISC_COLLAPSED_WHITE.getIcon());\n\t\tjExpandGroup.setOpaque(true);\n\t\tjExpandGroup.setContentAreaFilled(false);\n\t\tjExpandGroup.setBorder(EMPTY_TWO_PIXEL_BORDER);\n\t\tjExpandGroup.setBackground(Color.BLACK);\n\t\tjExpandGroup.setActionCommand(StockpileCellAction.GROUP_TOGGLE_COLLAPSE.name());\n\t\tjExpandGroup.addActionListener(actionListener);\n\n\t\tjCollapseGroupStockpiles = new JButton(Images.MISC_COLLAPSED.getIcon());\n\t\tjCollapseGroupStockpiles.setOpaque(false);\n\t\tjCollapseGroupStockpiles.setActionCommand(StockpileCellAction.GROUP_COLLAPSE.name());\n\t\tjCollapseGroupStockpiles.addActionListener(actionListener);\n\n\t\tjExpandGroupStockpiles = new JButton(Images.MISC_EXPANDED.getIcon());\n\t\tjExpandGroupStockpiles.setOpaque(false);\n\t\tjExpandGroupStockpiles.setActionCommand(StockpileCellAction.GROUP_EXPAND.name());\n\t\tjExpandGroupStockpiles.addActionListener(actionListener);\n\n\t\tjRenameGroup = new JButton(Images.EDIT_EDIT_WHITE.getIcon());\n\t\tjRenameGroup.setOpaque(false);\n\t\tjRenameGroup.setActionCommand(StockpileCellAction.GROUP_RENAME.name());\n\t\tjRenameGroup.addActionListener(actionListener);\n\n\t\tjGroupShoppingList = new JButton(Images.STOCKPILE_SHOPPING_LIST.getIcon());\n\t\tjGroupShoppingList.setOpaque(false);\n\t\tjGroupShoppingList.setActionCommand(StockpileCellAction.GROUP_SHOPPING_LIST.name());\n\t\tjGroupShoppingList.addActionListener(actionListener);\n\n\t\tjGroup = new JLabel();\n\t\tjGroup.setBorder(null);\n\t\tjGroup.setForeground(Color.WHITE);\n\t\tFont font = jGroup.getFont();\n\t\tjGroup.setFont(new Font(font.getName(), Font.BOLD, font.getSize() + 1));\n\t\tjGroup.addMouseListener(new MouseAdapter() {\n\t\t\t@Override public void mouseClicked(final MouseEvent e) {\n\t\t\t\tif (e.getClickCount() >= 2) {\n\t\t\t\t\tactionListener.actionPerformed(new ActionEvent(jGroup, MouseEvent.MOUSE_RELEASED, StockpileCellAction.GROUP_TOGGLE_COLLAPSE.name()));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tgroupLayout.setHorizontalGroup(\n\t\t\tgroupLayout.createParallelGroup()\n\t\t\t\t.addGroup(groupLayout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jStartSpaceGroup)\n\t\t\t\t\t.addComponent(jExpandGroup)\n\t\t\t\t\t.addGap(5)\n\t\t\t\t\t.addComponent(jCollapseGroupStockpiles, Program.getIconButtonsWidth(), Program.getIconButtonsWidth(), Program.getIconButtonsWidth())\n\t\t\t\t\t.addGap(5)\n\t\t\t\t\t.addComponent(jExpandGroupStockpiles, Program.getIconButtonsWidth(), Program.getIconButtonsWidth(), Program.getIconButtonsWidth())\n\t\t\t\t\t.addGap(5)\n\t\t\t\t\t.addComponent(jRenameGroup, Program.getIconButtonsWidth(), Program.getIconButtonsWidth(), Program.getIconButtonsWidth())\n\t\t\t\t\t.addGap(5)\n\t\t\t\t\t.addComponent(jGroupShoppingList, Program.getIconButtonsWidth(), Program.getIconButtonsWidth(), Program.getIconButtonsWidth())\n\t\t\t\t\t.addGap(10)\n\t\t\t\t\t.addComponent(jGroup, 0, 0, Integer.MAX_VALUE)\n\t\t\t\t)\n\t\t);\n\t\tgroupLayout.setVerticalGroup(\n\t\t\tgroupLayout.createSequentialGroup()\n\t\t\t\t.addGap(2)\n\t\t\t\t.addGroup(groupLayout.createParallelGroup()\n\t\t\t\t\t.addComponent(jStartSpaceGroup, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jExpandGroup, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jCollapseGroupStockpiles, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jExpandGroupStockpiles, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jRenameGroup, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jGroupShoppingList, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jGroup, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGap(2)\n\t\t);\n\n\t\tjInfoPanel = new JPanel();\n\t\tjInfoPanel.setOpaque(false);\n\t\tGroupLayout infoLayout = new GroupLayout(jInfoPanel);\n\t\tjInfoPanel.setLayout(infoLayout);\n\t\tinfoLayout.setAutoCreateGaps(false);\n\t\tinfoLayout.setAutoCreateContainerGaps(false);\n\n\t\tjStartSpace = new JLabel();\n\n\t\tjColor = new JLabel();\n\t\tjColor.setOpaque(true);\n\t\tjColor.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));\n\n\t\tjColorDisabled = new JLabel();\n\t\tjColorDisabled.setOpaque(false);\n\t\tjColorDisabled.setBorder(BorderFactory.createLineBorder(Color.GRAY, 1));\n\t\tjColorDisabled.setVisible(false);\n\n\t\tjMultiplier = new JDoubleField(\"1\", DocumentFactory.ValueFlag.POSITIVE_AND_NOT_ZERO);\n\t\tjMultiplier.setAutoSelectAll(true);\n\t\tjMultiplier.setHorizontalAlignment(JTextField.RIGHT);\n\t\tjMultiplier.setActionCommand(StockpileCellAction.UPDATE_MULTIPLIER.name());\n\t\tjMultiplier.addActionListener(listener);\n\t\tjMultiplier.addKeyListener(listener);\n\n\t\tjMultiplierLabel = new JLabel(TabsStockpile.get().multiplierSign());\n\n\t\tjName = createLabel(\"\");\n\n\t\t//Available\n\t\tjAvailableLabel = createLabel(TabsStockpile.get().stockpileAvailable());\n\t\tjAvailable = createLabel();\n\n\t\t//Owner\n\t\tjOwnerLabel = createLabel(TabsStockpile.get().stockpileOwner());\n\t\tjOwner = createLabel();\n\n\t\t//Location\n\t\tjLocationLabel = createLabel(TabsStockpile.get().stockpileLocation());\n\t\tjLocation = createLabel();\n\n\t\t//Stockpile Edit/Add/etc.\n\t\tjStockpile = new JDropDownButton(TabsStockpile.get().stockpile());\n\t\tjStockpile.setOpaque(false);\n\t\tjStockpile.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) { //Update when shown\n\t\t\t\t//Group Menu\n\t\t\t\tjGroupMenu.removeAll();\n\t\t\t\tjGroupMenu.add(jGroupNew);\n\n\t\t\t\tif (!jGroupMenuItems.isEmpty()) {\n\t\t\t\t\tjGroupMenu.addSeparator();\n\t\t\t\t}\n\t\t\t\tStockpileItem stockpileItem = (StockpileItem) currentSeparator.first();\n\t\t\t\tif (stockpileItem == null) { // handle 'late' rendering calls after this separator is invalid\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tString group = stockpileItem.getGroup();\n\t\t\t\tfor (JCheckBoxMenuItem jMenuItem : jGroupMenuItems) {\n\t\t\t\t\tjMenuItem.setSelected(group.equals(jMenuItem.getText()));\n\t\t\t\t\tjGroupMenu.add(jMenuItem);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tJMenuItem jMenuItem;\n\n\t\tJMenuItem jAdd = new JMenuItem(TabsStockpile.get().addItem(), Images.EDIT_ADD.getIcon());\n\t\tjAdd.setActionCommand(StockpileCellAction.ADD_ITEM.name());\n\t\tjAdd.addActionListener(actionListener);\n\t\tjStockpile.add(jAdd);\n\n\t\tjStockpile.addSeparator();\n\n\t\tjMenuItem = new JMenuItem(TabsStockpile.get().editStockpile(), Images.EDIT_EDIT.getIcon());\n\t\tjMenuItem.setActionCommand(StockpileCellAction.EDIT_STOCKPILE.name());\n\t\tjMenuItem.addActionListener(actionListener);\n\t\tjStockpile.add(jMenuItem);\n\n\t\tjMenuItem = new JMenuItem(TabsStockpile.get().cloneStockpile(), Images.EDIT_COPY.getIcon());\n\t\tjMenuItem.setActionCommand(StockpileCellAction.CLONE_STOCKPILE.name());\n\t\tjMenuItem.addActionListener(actionListener);\n\t\tjStockpile.add(jMenuItem);\n\n\t\tjMenuItem = new JMenuItem(TabsStockpile.get().hideStockpile(), Images.EDIT_SHOW.getIcon());\n\t\tjMenuItem.setActionCommand(StockpileCellAction.HIDE_STOCKPILE.name());\n\t\tjMenuItem.addActionListener(actionListener);\n\t\tjStockpile.add(jMenuItem);\n\n\t\tjMenuItem = new JMenuItem(TabsStockpile.get().deleteStockpile(), Images.EDIT_DELETE.getIcon());\n\t\tjMenuItem.setActionCommand(StockpileCellAction.DELETE_STOCKPILE.name());\n\t\tjMenuItem.addActionListener(actionListener);\n\t\tjStockpile.add(jMenuItem);\n\n\t\tjStockpile.addSeparator();\n\n\t\tjGroupMenu = new JMenu(TabsStockpile.get().groupMenu());\n\t\tjGroupMenu.setIcon(Images.FILTER_LOAD.getIcon());\n\t\tjStockpile.add(jGroupMenu);\n\n\t\tjGroupNew = new JMenuItem(TabsStockpile.get().groupAddNew(), Images.EDIT_ADD.getIcon());\n\t\tjGroupNew.setActionCommand(StockpileCellAction.GROUP_NEW.name());\n\t\tjGroupNew.addActionListener(actionListener);\n\t\tjGroupMenu.add(jGroupNew);\n\n\t\tjStockpile.addSeparator();\n\n\t\tJMenuItem jSubStockpile = new JMenuItem(TabsStockpile.get().subpiles(), Images.TOOL_STOCKPILE.getIcon());\n\t\tjSubStockpile.setActionCommand(StockpileCellAction.SUBPILES.name());\n\t\tjSubStockpile.addActionListener(actionListener);\n\t\tjStockpile.add(jSubStockpile);\n\n\t\tjStockpile.addSeparator();\n\n\t\tjMenuItem = new JMenuItem(TabsStockpile.get().getShoppingList(), Images.STOCKPILE_SHOPPING_LIST.getIcon());\n\t\tjMenuItem.setActionCommand(StockpileCellAction.SHOPPING_LIST_SINGLE.name());\n\t\tjMenuItem.addActionListener(actionListener);\n\t\tjStockpile.add(jMenuItem);\n\n\t\tinfoLayout.setHorizontalGroup(\n\t\t\tinfoLayout.createParallelGroup()\n\t\t\t\t.addGroup(infoLayout.createSequentialGroup()\n\t\t\t\t\t.addComponent(jStartSpace)\n\t\t\t\t\t.addComponent(jExpand)\n\t\t\t\t\t.addGap(5)\n\t\t\t\t\t.addComponent(jColor, Program.getButtonsHeight() - 6, Program.getButtonsHeight() - 6, Program.getButtonsHeight() - 6)\n\t\t\t\t\t.addComponent(jColorDisabled, Program.getButtonsHeight() - 6, Program.getButtonsHeight() - 6, Program.getButtonsHeight() - 6)\n\t\t\t\t\t.addGap(10)\n\t\t\t\t\t.addComponent(jStockpile, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\n\t\t\t\t\t.addGap(5)\n\t\t\t\t\t.addComponent(jMultiplier, 50, 50, 50)\n\t\t\t\t\t.addComponent(jMultiplierLabel)\n\t\t\t\t\t.addGap(10)\n\t\t\t\t\t.addComponent(jName, 150, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t\t.addGap(10)\n\t\t\t\t\t.addComponent(jAvailableLabel)\n\t\t\t\t\t.addGap(5)\n\t\t\t\t\t.addComponent(jAvailable, 30, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t\t.addGap(10)\n\t\t\t\t\t.addComponent(jOwnerLabel)\n\t\t\t\t\t.addGap(5)\n\t\t\t\t\t.addComponent(jOwner, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t\t.addGap(10)\n\t\t\t\t\t.addComponent(jLocationLabel)\n\t\t\t\t\t.addGap(5)\n\t\t\t\t\t.addComponent(jLocation, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t)\n\t\t);\n\t\tinfoLayout.setVerticalGroup(\n\t\t\tinfoLayout.createSequentialGroup()\n\t\t\t\t.addGap(2)\n\t\t\t\t.addGroup(infoLayout.createParallelGroup()\n\t\t\t\t\t.addComponent(jStartSpace, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jExpand, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addGroup(infoLayout.createSequentialGroup()\n\t\t\t\t\t\t.addGap(3)\n\t\t\t\t\t\t.addComponent(jColor, Program.getButtonsHeight() - 6, Program.getButtonsHeight() - 6, Program.getButtonsHeight() - 6)\n\t\t\t\t\t\t.addComponent(jColorDisabled, Program.getButtonsHeight() - 6, Program.getButtonsHeight() - 6, Program.getButtonsHeight() - 6)\n\t\t\t\t\t)\n\t\t\t\t\t.addComponent(jStockpile, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jMultiplier, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jMultiplierLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jName, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addGroup(infoLayout.createSequentialGroup()\n\t\t\t\t\t\t.addGap(4)\n\t\t\t\t\t\t.addGroup(infoLayout.createParallelGroup()\n\t\t\t\t\t\t\t.addComponent(jAvailableLabel)\n\t\t\t\t\t\t\t.addComponent(jAvailable)\n\t\t\t\t\t\t\t.addComponent(jOwnerLabel)\n\t\t\t\t\t\t\t.addComponent(jOwner)\n\t\t\t\t\t\t\t.addComponent(jLocationLabel)\n\t\t\t\t\t\t\t.addComponent(jLocation)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.addGap(2)\n\t\t);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addComponent(jGroupPanel)\n\t\t\t\t.addComponent(jInfoPanel)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(jGroupPanel)\n\t\t\t\t.addComponent(jInfoPanel)\n\t\t);\n\t\tupdateGroups(actionListener);\n\t}\n\n\tpublic static void updateGroups(ActionListener actionListener) {\n\t\tSet<String> groups = Settings.get().getStockpileGroupSettings().getGroups();\n\t\tjGroupMenuItems.clear();\n\n\t\tfor (String g : groups) {\n\t\t\tif (g.isEmpty()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tJCheckBoxMenuItem jMenuItem = new JCheckBoxMenuItem(g);\n\t\t\tjMenuItem.setActionCommand(StockpileCellAction.GROUP_CHANGE_ADD.name());\n\t\t\tjMenuItem.addActionListener(actionListener);\n\t\t\tjGroupMenuItems.add(jMenuItem);\n\t\t}\n\t}\n\n\tprivate JLabel createLabel() {\n\t\treturn createLabel(null);\n\t}\n\n\tprivate JLabel createLabel(String text) {\n\t\tJLabel jLabel = new JLabel();\n\t\tjLabel.setBorder(null);\n\t\tjLabel.setOpaque(false);\n\t\t//jLabel.setVerticalAlignment(SwingConstants.BOTTOM);\n\t\tif (text != null) {\n\t\t\tjLabel.setText(text);\n\t\t\tjLabel.setFont(new Font(jLabel.getFont().getName(), Font.BOLD, jLabel.getFont().getSize() + 1));\n\t\t}\n\t\treturn jLabel;\n\t}\n\n\tprivate void setEnabled(final boolean enabled) {\n\t\tif (!enabled) { //Save focus owner\n\t\t\tfocusOwner = program.getMainWindow().getFrame().getFocusOwner();\n\t\t}\n\t\tjExpandGroup.setEnabled(enabled);\n\t\tjCollapseGroupStockpiles.setEnabled(enabled);\n\t\tjExpandGroupStockpiles.setEnabled(enabled);\n\t\tjExpand.setEnabled(enabled);\n\t\tjColor.setVisible(enabled);\n\t\tjColorDisabled.setVisible(!enabled);\n\t\tjStockpile.setEnabled(enabled);\n\t\tjMultiplier.setEnabled(enabled);\n\t\tjMultiplierLabel.setEnabled(enabled);\n\t\tjName.setEnabled(enabled);\n\t\tjAvailableLabel.setEnabled(enabled);\n\t\tjAvailable.setEnabled(enabled);\n\t\tjOwnerLabel.setEnabled(enabled);\n\t\tjOwner.setEnabled(enabled);\n\t\tjLocation.setEnabled(enabled);\n\t\tjLocationLabel.setEnabled(enabled);\n\t\tif (enabled && focusOwner != null) { //Load focus owner\n\t\t\tfocusOwner.requestFocusInWindow();\n\t\t}\n\t}\n\n\t@Override\n\tprotected void configure(final SeparatorList.Separator<?> separator) {\n\t\tStockpileItem stockpileItem = (StockpileItem) separator.first();\n\t\tif (stockpileItem == null) { // handle 'late' rendering calls after this separator is invalid\n\t\t\treturn;\n\t\t}\n\t\t//Color\n\t\tif (Settings.get().isStockpileHalfColors()) {\n\t\t\tif (stockpileItem.getStockpile().getPercentFull() >= (Settings.get().getStockpileColorGroup3() / 100.0) ) {\n\t\t\t\tColorSettings.config(jColor, ColorEntry.STOCKPILE_ICON_OVER_THRESHOLD);\n\t\t\t} else if (stockpileItem.getStockpile().getPercentFull() >= (Settings.get().getStockpileColorGroup2() / 100.0)) {\n\t\t\t\tColorSettings.config(jColor, ColorEntry.STOCKPILE_ICON_BELOW_THRESHOLD_2ND);\n\t\t\t} else {\n\t\t\t\tColorSettings.config(jColor, ColorEntry.STOCKPILE_ICON_BELOW_THRESHOLD);\n\t\t\t}\n\t\t} else {\n\t\t\tif (stockpileItem.getStockpile().getPercentFull() >= (Settings.get().getStockpileColorGroup2() / 100.0)) {\n\t\t\t\tColorSettings.config(jColor, ColorEntry.STOCKPILE_ICON_OVER_THRESHOLD);\n\t\t\t} else {\n\t\t\t\tColorSettings.config(jColor, ColorEntry.STOCKPILE_ICON_BELOW_THRESHOLD);\n\t\t\t}\n\t\t}\n\t\t//Group\n\t\tString group = stockpileItem.getGroup();\n\t\tjGroup.setText(group);\n\t\tif (Settings.get().getStockpileGroupSettings().isGroupExpanded(group)) {\n\t\t\tjInfoPanel.setVisible(true);\n\t\t\tjExpandGroup.setIcon(Images.MISC_COLLAPSED_WHITE.getIcon());\n\t\t} else {\n\t\t\tjInfoPanel.setVisible(false);\n\t\t\tjExpandGroup.setIcon(Images.MISC_EXPANDED_WHITE.getIcon());\n\t\t}\n\t\tif (Settings.get().getStockpileGroupSettings().isGroupFirst(stockpileItem.getStockpile())) {\n\t\t\tjGroupPanel.setVisible(true);\n\t\t} else {\n\t\t\tjGroupPanel.setVisible(false);\n\t\t}\n\n\t\t//Multiplier\n\t\tjMultiplier.setText(Formatter.compareFormat(stockpileItem.getStockpile().getMultiplier()));\n\t\t//Name\n\t\tjName.setText(stockpileItem.getStockpile().getName());\n\t\t//Available\n\t\tString available = Formatter.doubleFormat(stockpileItem.getStockpile().getPercentFull());\n\t\tjAvailable.setText(available);\n\t\t//Owner\n\t\tString owner = stockpileItem.getStockpile().getOwnerName();\n\t\tjOwner.setText(owner);\n\t\t//Location\n\t\tString location = stockpileItem.getStockpile().getLocationName();\n\t\tjLocation.setText(location);\n\t}\n\n\tprotected JViewport getParentViewport() {\n\t\tContainer container = jTable.getParent();\n\t\tif (container instanceof JViewport) {\n\t\t\treturn (JViewport) container;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t@Override\n\tprotected void expandSeparator(final boolean expand) {\n\t\tsuper.expandSeparator(expand);\n\t\tStockpileItem currentItem = (StockpileItem) currentSeparator.first();\n\t\tif (currentItem == null) { // handle 'late' rendering calls after this separator is invalid\n\t\t\treturn;\n\t\t}\n\t\tSettings.get().getStockpileGroupSettings().setStockpileExpanded(currentItem.getStockpile(), expand);\n\t}\n\n\tprivate class ListenerClass implements HierarchyListener, AdjustmentListener, ActionListener, CellEditorListener, KeyListener {\n\n\t\tprivate boolean update = true;\n\n\t\t@Override\n\t\tpublic void hierarchyChanged(final HierarchyEvent e) {\n\t\t\tif ((e.getChangeFlags() & HierarchyEvent.PARENT_CHANGED) == HierarchyEvent.PARENT_CHANGED) {\n\t\t\t\tJViewport jViewport = getParentViewport();\n\t\t\t\tif (jViewport != null) {\n\t\t\t\t\tContainer container = getParentViewport().getParent();\n\t\t\t\t\tif (container instanceof JScrollPane) {\n\t\t\t\t\t\tJScrollPane jScroll = (JScrollPane) container;\n\t\t\t\t\t\t//jScroll.getVerticalScrollBar().removeAdjustmentListener(this);\n\t\t\t\t\t\tjScroll.getHorizontalScrollBar().removeAdjustmentListener(this);\n\t\t\t\t\t\t//jScroll.getVerticalScrollBar().addAdjustmentListener(this);\n\t\t\t\t\t\tjScroll.getHorizontalScrollBar().addAdjustmentListener(this);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void adjustmentValueChanged(final AdjustmentEvent e) {\n\t\t\tif (!e.getValueIsAdjusting()) {\n\t\t\t\tint position = getParentViewport().getViewPosition().x;\n\t\t\t\tjStartSpace.setMinimumSize(new Dimension(position, Program.getButtonsHeight()));\n\t\t\t\tjStartSpaceGroup.setMinimumSize(new Dimension(position, Program.getButtonsHeight()));\n\t\t\t\tsetEnabled(true);\n\t\t\t\tjTable.repaint();\n\t\t\t} else {\n\t\t\t\tif (jExpand.isEnabled()) { //Only do once\n\t\t\t\t\tsetEnabled(false);\n\t\t\t\t\tjTable.repaint();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\tif (StockpileCellAction.UPDATE_MULTIPLIER.name().equals(e.getActionCommand())) { //Multiplier\n\t\t\t\tstopCellEditing();\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void editingStopped(ChangeEvent e) {\n\t\t\tsaveCount();\n\t\t}\n\n\t\t@Override\n\t\tpublic void editingCanceled(ChangeEvent e) {\n\t\t\tsaveCount();\n\t\t}\n\n\t\t@Override\n\t\tpublic void keyTyped(KeyEvent e) { }\n\n\t\t@Override\n\t\tpublic void keyPressed(KeyEvent e) {\n\t\t\tif (e.getKeyCode() == KeyEvent.VK_ESCAPE) {\n\t\t\t\tupdate = false;\n\t\t\t\tstopCellEditing();\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void keyReleased(KeyEvent e) { }\n\n\t\tprivate void saveCount() {\n\t\t\tif (!update) {\n\t\t\t\tupdate = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tStockpileItem stockpileItem = (StockpileItem) currentSeparator.first();\n\t\t\tif (stockpileItem == null) { // handle 'late' rendering calls after this separator is invalid\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tstockpileTab.setMultiplyer(stockpileItem.getStockpile(), jMultiplier);\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/stockpile/StockpileShoppingListDialog.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.stockpile;\r\n\r\nimport java.awt.Component;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.text.DecimalFormat;\r\nimport java.util.ArrayList;\r\nimport java.util.Collections;\r\nimport java.util.EnumMap;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Objects;\r\nimport java.util.Set;\r\nimport java.util.TreeSet;\r\nimport javax.swing.DefaultListCellRenderer;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.Icon;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JComboBox;\r\nimport javax.swing.JComponent;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JList;\r\nimport javax.swing.JScrollPane;\r\nimport javax.swing.JTextArea;\r\nimport javax.swing.JTextField;\r\nimport javax.swing.ListCellRenderer;\r\nimport javax.swing.event.CaretEvent;\r\nimport javax.swing.event.CaretListener;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.CopyHandler;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JIntegerField;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileItem;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.SubpileStock;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.TypeIdentifier;\r\nimport net.nikr.eve.jeveasset.i18n.TabsStockpile;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\nclass StockpileShoppingListDialog extends JDialogCentered {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(StockpileShoppingListDialog.class);\r\n\r\n\tprivate enum StockpileShoppingListAction {\r\n\t\tCLIPBOARD_STOCKPILE,\r\n\t\tCLOSE,\r\n\t\tFORMAT_CHANGED\r\n\t}\r\n\r\n\tprivate static final DecimalFormat NUMBER = new DecimalFormat(\"0\");\r\n\r\n\tprivate final JTextArea jText;\r\n\tprivate final JButton jClose;\r\n\tprivate final JTextField jPercentFull;\r\n\tprivate final JTextField jPercentIgnore;\r\n\tprivate final JComboBox<ShoppingListType> jFormat;\r\n\tprivate final JComboBox<String> jOutput;\r\n\tprivate final Map<ShoppingListType, ShoppingListData> outputData = new EnumMap<>(ShoppingListType.class);\r\n\r\n\tprivate List<Stockpile> stockpiles;\r\n\tprivate boolean updating = false;\r\n\r\n\tStockpileShoppingListDialog(final Program program) {\r\n\t\tsuper(program, TabsStockpile.get().shoppingList(), Images.TOOL_STOCKPILE.getImage());\r\n\r\n\t\tthis.getDialog().setResizable(true);\r\n\r\n\t\tListenerClass listener = new ListenerClass();\r\n\r\n\t\tJButton jCopyToClipboard = new JButton(TabsStockpile.get().clipboardStockpile(), Images.EDIT_COPY.getIcon());\r\n\t\tjCopyToClipboard.setActionCommand(StockpileShoppingListAction.CLIPBOARD_STOCKPILE.name());\r\n\t\tjCopyToClipboard.addActionListener(listener);\r\n\r\n\t\tjFormat = new JComboBox<>(ShoppingListType.values());\r\n\t\tjFormat.setRenderer(new IconListCellRendererRenderer());\r\n\t\tjFormat.setActionCommand(StockpileShoppingListAction.FORMAT_CHANGED.name());\r\n\t\tjFormat.addActionListener(listener);\r\n\r\n\t\tString[] types = {TabsStockpile.get().itemsMissing(), TabsStockpile.get().itemsRequired(), TabsStockpile.get().itemsOwned()};\r\n\t\tjOutput = new JComboBox<>(types);\r\n\t\tjOutput.setActionCommand(StockpileShoppingListAction.FORMAT_CHANGED.name());\r\n\t\tjOutput.addActionListener(listener);\r\n\r\n\t\tJLabel jFullLabel = new JLabel(TabsStockpile.get().percentFull());\r\n\t\tJLabel jFullPercentLabel = new JLabel(TabsStockpile.get().percent());\r\n\r\n\t\tjPercentFull = new JIntegerField(\"\");\r\n\t\tjPercentFull.addCaretListener(listener);\r\n\r\n\t\tJLabel jIgnoreLabel = new JLabel(TabsStockpile.get().percentIgnore());\r\n\t\tJLabel jIgnorePercentLabel = new JLabel(TabsStockpile.get().percent());\r\n\r\n\t\tjPercentIgnore = new JIntegerField(\"\");\r\n\t\tjPercentIgnore.addCaretListener(listener);\r\n\r\n\t\tjClose = new JButton(TabsStockpile.get().close());\r\n\t\tjClose.setActionCommand(StockpileShoppingListAction.CLOSE.name());\r\n\t\tjClose.addActionListener(listener);\r\n\r\n\t\tjText = new JTextArea();\r\n\t\tjText.setEditable(false);\r\n\t\tjText.setFont(jPanel.getFont());\r\n\t\tjText.setBackground(jPanel.getBackground());\r\n\r\n\t\tJScrollPane jTextScroll = new JScrollPane(jText);\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)\r\n\t\t\t\t\t\t.addComponent(jCopyToClipboard)\r\n\t\t\t\t\t\t.addComponent(jFormat)\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addComponent(jOutput)\r\n\t\t\t\t\t.addGap(0, 0, Integer.MAX_VALUE)\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t.addComponent(jFullLabel)\r\n\t\t\t\t\t\t.addComponent(jIgnoreLabel)\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t.addComponent(jPercentFull, 100, 100, 100)\r\n\t\t\t\t\t\t.addComponent(jPercentIgnore, 100, 100, 100)\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t.addComponent(jFullPercentLabel)\r\n\t\t\t\t\t\t.addComponent(jIgnorePercentLabel)\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER)\r\n\t\t\t\t\t.addComponent(jTextScroll, 500, 500, Integer.MAX_VALUE)\r\n\t\t\t\t\t.addComponent(jClose)\r\n\t\t\t\t)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jCopyToClipboard, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jFullLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jPercentFull, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jFullPercentLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jFormat, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jOutput, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jIgnoreLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jPercentIgnore, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jIgnorePercentLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addComponent(jTextScroll, 400, 400, Integer.MAX_VALUE)\r\n\t\t\t\t.addComponent(jClose, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t);\r\n\t}\r\n\r\n\tvoid show(final Stockpile stockpile) {\r\n\t\tshow(Collections.singletonList(stockpile));\r\n\t}\r\n\r\n\tvoid show(final List<Stockpile> addStockpiles) {\r\n\t\tupdating = true;\r\n\t\tthis.stockpiles = addStockpiles;\r\n\t\tjPercentFull.setText(\"100\");\r\n\t\tjPercentIgnore.setText(\"100\");\r\n\t\tjFormat.setSelectedIndex(0);\r\n\t\tupdateList();\r\n\t\tupdating = false;\r\n\t\tsuper.setVisible(true);\r\n\t}\r\n\r\n\tprivate void updateList() {\r\n\t\t//Multiplier\r\n\t\tlong percent;\r\n\t\ttry {\r\n\t\t\tpercent = Long.parseLong(jPercentFull.getText());\r\n\t\t\tif (percent <= 0) {\r\n\t\t\t\tpercent = 100;\r\n\t\t\t}\r\n\t\t} catch (NumberFormatException e) {\r\n\t\t\tpercent = 100;\r\n\t\t}\r\n\t\tlong hide;\r\n\t\ttry {\r\n\t\t\thide = Long.parseLong(jPercentIgnore.getText());\r\n\t\t\tif (hide <= 0) {\r\n\t\t\t\thide = 100;\r\n\t\t\t} else if (hide > 100) {\r\n\t\t\t\thide = 100;\r\n\t\t\t}\r\n\t\t} catch (NumberFormatException e) {\r\n\t\t\thide = 100;\r\n\t\t}\r\n\t\toutputData.clear();\r\n\t\tfor (ShoppingListType type : ShoppingListType.values()) {\r\n\t\t\toutputData.put(type, new ShoppingListData(type));\r\n\t\t}\r\n\t//All claims\r\n\t\tMap<TypeIdentifier, List<StockClaim>> claims = new HashMap<>();\r\n\t\tMap<String, Double> subpiles = new HashMap<>();\r\n\t\tStringBuilder stockpileNamesBuilder = new StringBuilder();\r\n\t\tfor (Stockpile stockpile : stockpiles) {\r\n\t\t\tstockpileNamesBuilder.append(Formatter.copyFormat(stockpile.getMultiplier()));\r\n\t\t\tstockpileNamesBuilder.append(\"x \");\r\n\t\t\tstockpileNamesBuilder.append(stockpile.getName());\r\n\t\t\tstockpileNamesBuilder.append(\"\\r\\n\");\r\n\t\t\tSet<Integer> contractIDs = null;\r\n\t\t\tSet<Long> assetsIDs = null;\r\n\t\t\tif (stockpile.isMatchAll()) {\r\n\t\t\t\tif (stockpile.isContracts()) {\r\n\t\t\t\t\tcontractIDs = new HashSet<>();\r\n\t\t\t\t\tMap<MyContract, List<MyContractItem>> foundItems = StockpileData.contractsMatchAll(program.getProfileData(), stockpile, false);\r\n\t\t\t\t\t//Add\r\n\t\t\t\t\tfor (MyContract contract : foundItems.keySet()) {\r\n\t\t\t\t\t\tcontractIDs.add(contract.getContractID());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (stockpile.isAssets()) {\r\n\t\t\t\t\tassetsIDs = new HashSet<>();\r\n\t\t\t\t\tMap<MyAsset, List<MyAsset>> foundItems = StockpileData.assetsMatchAll(program.getProfileData(), stockpile, false);\r\n\t\t\t\t\t//Add\r\n\t\t\t\t\tfor (Map.Entry<MyAsset, List<MyAsset>> entry : foundItems.entrySet()) {\r\n\t\t\t\t\t\tassetsIDs.add(entry.getKey().getItemID());\r\n\t\t\t\t\t\tfor (MyAsset asset : entry.getValue()) {\r\n\t\t\t\t\t\t\tassetsIDs.add(asset.getItemID());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfor (SubpileStock stockpileItem : stockpile.getSubpileStocks()) {\r\n\t\t\t\tString key = stockpileItem.getName().trim();\r\n\t\t\t\tdouble value = subpiles.getOrDefault(key, 0.0);\r\n\t\t\t\tsubpiles.put(key, value + stockpileItem.getSubMultiplier());\r\n\t\t\t}\r\n\t\t\tfor (StockpileItem stockpileItem : stockpile.getClaims()) {\r\n\t\t\t\tTypeIdentifier type = stockpileItem.getType();\r\n\t\t\t\tif (!type.isEmpty()) { //Ignore Total\r\n\t\t\t\t\tList<StockClaim> claimList = claims.get(type);\r\n\t\t\t\t\tif (claimList == null) {\r\n\t\t\t\t\t\tclaimList = new ArrayList<>();\r\n\t\t\t\t\t\tclaims.put(type, claimList);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tclaimList.add(new StockClaim(stockpileItem, contractIDs, assetsIDs, percent));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tStringBuilder subpileNamesBuilder = new StringBuilder();\r\n\t\tfor (Map.Entry<String, Double> entry : subpiles.entrySet()) {\r\n\t\t\tsubpileNamesBuilder.append(Formatter.copyFormat(entry.getValue()));\r\n\t\t\tsubpileNamesBuilder.append(\"x \");\r\n\t\t\tsubpileNamesBuilder.append(entry.getKey());\r\n\t\t\tsubpileNamesBuilder.append(\"\\r\\n\");\r\n\t\t}\r\n\t\tfor (ShoppingListData data : outputData.values()) {\r\n\t\t\tdata.printHeader(stockpileNamesBuilder, subpileNamesBuilder, subpiles, percent);\r\n\t\t}\r\n\t\t//All items\r\n\t\tMap<TypeIdentifier, List<StockItem>> items = new HashMap<>();\r\n\t\t//Assets\r\n\t\tfor (MyAsset asset : program.getAssetsList()) {\r\n\t\t\tif (asset.isGenerated()) { //Skip generated assets\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tInteger typeID = StockpileData.get(asset.getTypeID(), asset.isBPC());\r\n\t\t\tadd(new TypeIdentifier(typeID, false), asset, claims, items);\r\n\t\t\tadd(new TypeIdentifier(typeID, true), asset, claims, items);\r\n\t\t}\r\n\t\t//Market Orders\r\n\t\tfor (MyMarketOrder marketOrder : program.getMarketOrdersList()) {\r\n\t\t\tadd(new TypeIdentifier(marketOrder.getTypeID(), false), marketOrder, claims, items);\r\n\t\t}\r\n\t\t//Industry Jobs\r\n\t\tfor (MyIndustryJob industryJob : program.getIndustryJobsList()) {\r\n\t\t\t//Manufacturing\r\n\t\t\tInteger productTypeID = industryJob.getProductTypeID();\r\n\t\t\tif (productTypeID != null) {\r\n\t\t\t\tadd(new TypeIdentifier(productTypeID, false), industryJob, claims, items);\r\n\t\t\t}\r\n\t\t\t//Copying\r\n\t\t\tadd(new TypeIdentifier(-industryJob.getBlueprintTypeID(), true), industryJob, claims, items);\r\n\t\t}\r\n\t\t//Transactions\r\n\t\tfor (MyTransaction transaction : program.getTransactionsList()) {\r\n\t\t\tadd(new TypeIdentifier(transaction.getTypeID(), false), transaction, claims, items);\r\n\t\t}\r\n\t\t//ContractItems\r\n\t\tfor (MyContractItem contractItem : program.getContractItemList()) {\r\n\t\t\tif (contractItem.getContract().isIgnoreContract()) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tInteger typeID = StockpileData.get(contractItem.getTypeID(), contractItem.isBPC());\r\n\t\t\tadd(new TypeIdentifier(typeID, false), contractItem, claims, items);\r\n\t\t}\r\n\r\n\t//Owned before claming\r\n\t\tdouble ownedVolume = 0;\r\n\t\tdouble ownedValue = 0;\r\n\t\tfor (Map.Entry<TypeIdentifier, List<StockItem>> entry : items.entrySet()) {\r\n\t\t\tboolean bpc = false;\r\n\t\t\tboolean bpo = false;\r\n\t\t\tboolean runs = false;\r\n\t\t\tItem item;\r\n\t\t\tif (entry.getKey().isBPC()) {\r\n\t\t\t\titem = ApiIdConverter.getItem(Math.abs(entry.getKey().getTypeID()));\r\n\t\t\t\tbpc = true;\r\n\t\t\t\truns = entry.getKey().isRuns();\r\n\t\t\t} else {\r\n\t\t\t\titem = ApiIdConverter.getItem(entry.getKey().getTypeID());\r\n\t\t\t\tbpo = item.isBlueprint();\r\n\t\t\t}\r\n\t\t\tfloat volume = ApiIdConverter.getVolume(item, true);\r\n\t\t\tdouble price = ApiIdConverter.getPrice(entry.getKey().getTypeID(), bpc);\r\n\t\t\tlong ownedCount = 0;\r\n\t\t\tfor (StockItem stockItem : entry.getValue()) {\r\n\t\t\t\tSet<Count> counts = stockItem.getCounts();\r\n\t\t\t\tif (counts.size() != 1) {\r\n\t\t\t\t\tLOG.error(\"StockpileShoppingListDialog counts size was: \" + counts.size() + \" expected: 1\", new Exception());\r\n\t\t\t\t}\r\n\t\t\t\tif (counts.isEmpty()) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tCount count = counts.iterator().next();\r\n\t\t\t\t//Required count\r\n\t\t\t\townedCount = ownedCount + count.getCount();\r\n\t\t\t\t//Required volume\r\n\t\t\t\townedVolume = ownedVolume + (count.getCount() * volume);\r\n\t\t\t\t//Required value\r\n\t\t\t\townedValue = ownedValue + (count.getCount() * price);\r\n\t\t\t}\r\n\t\t\tfor (ShoppingListData data : outputData.values()) {\r\n\t\t\t\tdata.printOwned(ownedCount, item, bpc, bpo, runs);\r\n\t\t\t}\r\n\t\t}\r\n\t//Claim items\r\n\t\tfor (Map.Entry<TypeIdentifier, List<StockItem>> entry : items.entrySet()) {\r\n\t\t\tfor (StockItem stockItem : entry.getValue()) {\r\n\t\t\t\tstockItem.claim();\r\n\t\t\t}\r\n\t\t}\r\n\t//Show missing\r\n\t\tdouble missingVolume = 0;\r\n\t\tdouble missingValue = 0;\r\n\t\tdouble requiredVolume = 0;\r\n\t\tdouble requiredValue = 0;\r\n\t\tfor (Map.Entry<TypeIdentifier, List<StockClaim>> entry : claims.entrySet()) {\r\n\t\t\tboolean bpc = false;\r\n\t\t\tboolean bpo = false;\r\n\t\t\tboolean runs = false;\r\n\t\t\tItem item;\r\n\t\t\tif (entry.getKey().isBPC()) {\r\n\t\t\t\titem = ApiIdConverter.getItem(Math.abs(entry.getKey().getTypeID()));\r\n\t\t\t\tbpc = true;\r\n\t\t\t\truns = entry.getKey().isRuns();\r\n\t\t\t} else {\r\n\t\t\t\titem = ApiIdConverter.getItem(entry.getKey().getTypeID());\r\n\t\t\t\tbpo = item.isBlueprint();\r\n\t\t\t}\r\n\t\t\tlong missingCount = 0;\r\n\t\t\tlong requiredCount = 0;\r\n\t\t\tfor (StockClaim stockClaim : entry.getValue()) {\r\n\t\t\t\tif (stockClaim.getPercentFull() > hide) {\r\n\t\t\t\t\tcontinue; //Ignore everything above x% percent\r\n\t\t\t\t}\r\n\t\t\t\t//Missing count\r\n\t\t\t\tmissingCount = missingCount + stockClaim.getCountMinimum();\r\n\t\t\t\t//Missing volume (will add zero if nothing is needed)\r\n\t\t\t\tmissingVolume = missingVolume + (stockClaim.getCountMinimum() * stockClaim.getVolume());\r\n\t\t\t\t//Missing value (will add zero if nothing is needed)\r\n\t\t\t\tmissingValue = missingValue + (stockClaim.getCountMinimum() * stockClaim.getDynamicPrice());\r\n\t\t\t\t//Required count\r\n\t\t\t\trequiredCount = requiredCount + stockClaim.getTotalNeed();\r\n\t\t\t\t//Required volume\r\n\t\t\t\trequiredVolume = requiredVolume + (stockClaim.getTotalNeed() * stockClaim.getVolume());\r\n\t\t\t\t//Required value\r\n\t\t\t\trequiredValue = requiredValue + (stockClaim.getTotalNeed() * stockClaim.getDynamicPrice());\r\n\t\t\t}\r\n\t\t\tfor (ShoppingListData data : outputData.values()) {\r\n\t\t\t\tdata.printMissing(missingCount, item, bpc, bpo, runs);\r\n\t\t\t\tdata.printRequired(requiredCount, item, bpc, bpo, runs);\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (ShoppingListData data : outputData.values()) {\r\n\t\t\t//Print sorted items\r\n\t\t\tdata.printItems();\r\n\t\t\t//Print footer\r\n\t\t\tdata.printFooterMissing(missingVolume, missingValue);\r\n\t\t\tdata.printFooterRequired(requiredVolume, requiredValue);\r\n\t\t\tdata.printFooterOwned(ownedVolume, ownedValue);\r\n\t\t}\r\n\t\tsetText();\r\n\t}\r\n\r\n\r\n\r\n\t//Add claims to item\r\n\tprivate void add(final TypeIdentifier typeID, final Object object, final Map<TypeIdentifier, List<StockClaim>> claims, final Map<TypeIdentifier, List<StockItem>> items) {\r\n\t\t//Get claims by typeID\r\n\t\tList<StockClaim> minimumList = claims.get(typeID);\r\n\t\tif (minimumList == null) { //if no claims for typeID: return\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//Get item list by typeID\r\n\t\tList<StockItem> itemList = items.get(typeID);\r\n\t\tif (itemList == null) {\r\n\t\t\titemList = new ArrayList<>();\r\n\t\t\titems.put(typeID, itemList);\r\n\t\t}\r\n\r\n\t\tStockItem stockItem = null;\r\n\t\tfor (StockClaim stockMinimum : minimumList) {\r\n\t\t\tif (stockMinimum.isContractMatchAll() && object instanceof MyContractItem) {\r\n\t\t\t\tMyContractItem contractItem = (MyContractItem) object;\r\n\t\t\t\tif (!stockMinimum.getContractIDs().contains(contractItem.getContract().getContractID())) {\r\n\t\t\t\t\tcontinue; //Ignore none matching contracts\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (stockMinimum.isAssetMatchAll() && object instanceof MyAsset) {\r\n\t\t\t\tMyAsset asset = (MyAsset) object;\r\n\t\t\t\tif (!stockMinimum.getAssetIDs().contains(asset.getItemID())) {\r\n\t\t\t\t\tcontinue; //Ignore none matching assets\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tLong count = stockMinimum.matches(object);\r\n\t\t\tif (count != null && count != 0) { //if match (have claim)\r\n\t\t\t\tif (stockItem == null) { //if item not added already - add to items list\r\n\t\t\t\t\tstockItem = new StockItem();\r\n\t\t\t\t\titemList.add(stockItem);\r\n\t\t\t\t}\r\n\t\t\t\tstockItem.addClaim(stockMinimum, count); //Add claim\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void setText() {\r\n\t\tShoppingListType type = jFormat.getItemAt(jFormat.getSelectedIndex());\r\n\t\tObject output = jOutput.getSelectedItem();\r\n\t\tShoppingListData shoppingListData = outputData.get(type);\r\n\t\tif (shoppingListData != null) {\r\n\t\t\tjText.setText(shoppingListData.get(output));\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JComponent getDefaultFocus() {\r\n\t\treturn jClose;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JButton getDefaultButton() {\r\n\t\treturn null;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void windowShown() { }\r\n\r\n\t@Override\r\n\tprotected void save() { }\r\n\r\n\tprivate class ListenerClass implements ActionListener, CaretListener {\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(final ActionEvent e) {\r\n\t\t\tif (StockpileShoppingListAction.CLIPBOARD_STOCKPILE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tCopyHandler.toClipboard(jText.getText());\r\n\t\t\t}\r\n\t\t\tif (StockpileShoppingListAction.CLOSE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tsetVisible(false);\r\n\t\t\t}\r\n\t\t\tif (StockpileShoppingListAction.FORMAT_CHANGED.name().equals(e.getActionCommand())) {\r\n\t\t\t\tsetText();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void caretUpdate(final CaretEvent e) {\r\n\t\t\tif (!updating) {\r\n\t\t\t\tupdateList();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class StockClaim implements Comparable<StockClaim>{\r\n\t\tprivate final StockpileItem stockpileItem;\r\n\t\tprivate final Set<Integer> contractIDs;\r\n\t\tprivate final Set<Long> assetIDs;\r\n\t\tprivate final long totalNeed;\r\n\t\tprivate long countMinimum;\r\n\t\tprivate long available = 0;\r\n\r\n\t\tpublic StockClaim(StockpileItem stockpileItem, Set<Integer> contractIDs, Set<Long> assetIDs, long percent) {\r\n\t\t\tthis.stockpileItem = stockpileItem;\r\n\t\t\tthis.contractIDs = contractIDs;\r\n\t\t\tthis.assetIDs = assetIDs;\r\n\t\t\tthis.totalNeed = (long)(stockpileItem.getCountMinimumMultiplied() * percent / 100.0);\r\n\t\t\tthis.countMinimum = this.totalNeed;\r\n\t\t}\r\n\r\n\t\tpublic double getPercentFull() {\r\n\t\t\treturn (totalNeed - countMinimum) * 100.0 / totalNeed ;\r\n\t\t}\r\n\r\n\t\tpublic double getVolume() {\r\n\t\t\treturn stockpileItem.getVolume();\r\n\t\t}\r\n\r\n\t\tpublic Double getDynamicPrice() {\r\n\t\t\treturn stockpileItem.getDynamicPrice();\r\n\t\t}\r\n\r\n\t\tprivate Long matches(Object object) {\r\n\t\t\treturn stockpileItem.matches(object);\r\n\t\t}\r\n\r\n\t\tpublic long getTotalNeed() {\r\n\t\t\treturn totalNeed;\r\n\t\t}\r\n\r\n\t\tpublic long getCountMinimum() {\r\n\t\t\treturn countMinimum;\r\n\t\t}\r\n\r\n\t\tpublic void addCount(long count) {\r\n\t\t\tcountMinimum = countMinimum - count;\r\n\t\t}\r\n\r\n\t\tpublic void addAvailable(long available) {\r\n\t\t\tthis.available = this.available + available;\r\n\t\t}\r\n\r\n\t\tprivate long getNeed() { //Claim optimization\r\n\t\t\treturn available - countMinimum;\r\n\t\t}\r\n\r\n\t\tpublic Set<Integer> getContractIDs() {\r\n\t\t\treturn contractIDs;\r\n\t\t}\r\n\r\n\t\tpublic Set<Long> getAssetIDs() {\r\n\t\t\treturn assetIDs;\r\n\t\t}\r\n\r\n\t\tpublic boolean isContractMatchAll() {\r\n\t\t\treturn contractIDs != null;\r\n\t\t}\r\n\r\n\t\tpublic boolean isAssetMatchAll() {\r\n\t\t\treturn assetIDs != null;\r\n\t\t}\r\n\r\n\t\tpublic boolean isMatchAll() {\r\n\t\t\treturn assetIDs != null || contractIDs != null;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int compareTo(StockClaim o) {\r\n\t\t\tif (this.isMatchAll() && !o.isMatchAll()) {\r\n\t\t\t\treturn 1;\r\n\t\t\t} else if (!this.isMatchAll() && o.isMatchAll()) {\r\n\t\t\t\treturn -1;\r\n\t\t\t} else if (this.getNeed() > o.getNeed()) {\r\n\t\t\t\treturn 1;\r\n\t\t\t} else if (this.getNeed() < o.getNeed()) {\r\n\t\t\t\treturn -1;\r\n\t\t\t} else {\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class StockItem {\r\n\t\tprivate final Map<Count, List<StockClaim>> claims = new HashMap<>();\r\n\r\n\t\tpublic StockItem() { }\r\n\r\n\t\tpublic void addClaim(StockClaim stockMinimum, long count) {\r\n\t\t\tList<StockClaim> claimList = claims.get(new Count(count));\r\n\t\t\tif (claimList == null) {\r\n\t\t\t\tclaimList = new ArrayList<>();\r\n\t\t\t\tclaims.put(new Count(count), claimList);\r\n\t\t\t}\r\n\t\t\tclaimList.add(stockMinimum);\r\n\t\t\tstockMinimum.addAvailable(count);\r\n\t\t}\r\n\r\n\t\tpublic Set<Count> getCounts() {\r\n\t\t\treturn claims.keySet();\r\n\t\t}\r\n\r\n\t\tpublic void claim() {\r\n\t\t\tfor (Map.Entry<Count, List<StockClaim>> entry : claims.entrySet()) {\r\n\t\t\t\tList<StockClaim> claimList = entry.getValue();\r\n\t\t\t\tCount count = entry.getKey();\r\n\t\t\t\tCollections.sort(claimList); //Sort by need\r\n\t\t\t\tfor (StockClaim stockMinimum : claimList) {\r\n\t\t\t\t\tif (stockMinimum.getCountMinimum() >= count.getCount()) { //Add all\r\n\t\t\t\t\t\tstockMinimum.addCount(count.getCount());\r\n\t\t\t\t\t\tcount.takeAll();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t} else { //Add part of the count\r\n\t\t\t\t\t\tlong missing = stockMinimum.getCountMinimum();\r\n\t\t\t\t\t\tstockMinimum.addCount(missing);\r\n\t\t\t\t\t\tcount.take(missing);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class Count {\r\n\t\tprivate final long id;\r\n\t\tprivate long count;\r\n\r\n\t\tpublic Count(long count) {\r\n\t\t\tthis.count = count;\r\n\t\t\tthis.id = count;\r\n\t\t}\r\n\r\n\t\tpublic void takeAll() {\r\n\t\t\tcount = 0;\r\n\t\t}\r\n\r\n\t\tpublic void take(long missing) {\r\n\t\t\tcount = count - missing;\r\n\t\t}\r\n\r\n\t\tpublic long getCount() {\r\n\t\t\treturn count;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int hashCode() {\r\n\t\t\tint hash = 5;\r\n\t\t\thash = 67 * hash + (int) (this.id ^ (this.id >>> 32));\r\n\t\t\treturn hash;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean equals(Object obj) {\r\n\t\t\tif (this == obj) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif (obj == null) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (getClass() != obj.getClass()) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tfinal Count other = (Count) obj;\r\n\t\t\tif (this.id != other.id) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static enum ShoppingListType {\r\n\t\tSHOPPING_LIST(TabsStockpile.get().shoppingList(), Images.STOCKPILE_SHOPPING_LIST.getIcon()){\r\n\t\t\t@Override\r\n\t\t\tpublic void printHeader(StringBuilder stockpileNames, StringBuilder subpileNames, StringBuilder builder, Map<String, Double> subpiles, long percent) {\r\n\t\t\t\t//Add stockpile\r\n\t\t\t\tbuilder.append(TabsStockpile.get().stockpileShoppingList());\r\n\t\t\t\tif (percent != 100) { //adds percent if it's not 100%\r\n\t\t\t\t\tbuilder.append(\" (\");\r\n\t\t\t\t\tbuilder.append(percent);\r\n\t\t\t\t\tbuilder.append(TabsStockpile.get().percent());\r\n\t\t\t\t\tbuilder.append(\")\");\r\n\t\t\t\t}\r\n\t\t\t\tbuilder.append(\":\\r\\n\");\r\n\t\t\t\tbuilder.append(stockpileNames.toString());\r\n\t\t\t\tbuilder.append(\"\\r\\n\");\r\n\t\t\t\t//Add subpiles\r\n\t\t\t\tif (!subpiles.isEmpty()) {\r\n\t\t\t\t\tbuilder.append(TabsStockpile.get().subpileShoppingList());\r\n\t\t\t\t\tbuilder.append(\"\\r\\n\");\r\n\t\t\t\t\tbuilder.append(subpileNames.toString());\r\n\t\t\t\t\tbuilder.append(\"\\r\\n\");\r\n\t\t\t\t}\r\n\t\t\t\tbuilder.append(TabsStockpile.get().itemsShoppingList());\r\n\t\t\t\tbuilder.append(\"\\r\\n\");\r\n\t\t\t}\r\n\t\t\t@Override\r\n\t\t\tpublic void printItem(StringBuilder builder, long count, Item item, boolean bpc, boolean bpo, boolean runs) {\r\n\t\t\t\t//Shopping List\r\n\t\t\t\tbuilder.append(Formatter.longFormat(count));\r\n\t\t\t\tbuilder.append(\"x \");\r\n\t\t\t\tbuilder.append(item.getTypeName());\r\n\t\t\t\tif (bpc) {\r\n\t\t\t\t\tif (runs) {\r\n\t\t\t\t\t\tbuilder.append(\" (Runs)\");\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tbuilder.append(\" (BPC)\");\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (bpo) {\r\n\t\t\t\t\tbuilder.append(\" (BPO)\");\r\n\t\t\t\t}\r\n\t\t\t\tbuilder.append(\"\\r\\n\");\r\n\t\t\t}\r\n\t\t\t@Override\r\n\t\t\tpublic void printFooter(StringBuilder builder, double volume, double value, boolean empty) {\r\n\t\t\t\tif (empty) { //if string is empty, nothing is needed\r\n\t\t\t\t\tbuilder.append(TabsStockpile.get().nothingNeeded());\r\n\t\t\t\t} else { //Add total volume and value\r\n\t\t\t\t\tbuilder.append(\"\\r\\n\");\r\n\t\t\t\t\tbuilder.append(TabsStockpile.get().totalToHaul());\r\n\t\t\t\t\tbuilder.append(Formatter.doubleFormat(Math.abs(volume)));\r\n\t\t\t\t\tbuilder.append(\"\\r\\n\");\r\n\t\t\t\t\tbuilder.append(TabsStockpile.get().estimatedMarketValue());\r\n\t\t\t\t\tbuilder.append(Formatter.iskFormat(Math.abs(value)));\r\n\t\t\t\t}\r\n\t\t\t}\t\t\t\r\n\t\t},\r\n\t\tEVE_MULTIBUY(TabsStockpile.get().eveMultibuy(), Images.MISC_EVE.getIcon()){\r\n\t\t\t@Override\r\n\t\t\tpublic void printItem(StringBuilder builder, long count, Item item, boolean bpc, boolean bpo, boolean runs) {\r\n\t\t\t\t//Multibuy\r\n\t\t\t\tbuilder.append(item.getTypeName());\r\n\t\t\t\tbuilder.append(\" \");\r\n\t\t\t\tbuilder.append(NUMBER.format(count));\r\n\t\t\t\tbuilder.append(\"\\r\\n\");\r\n\t\t\t}\r\n\t\t},\r\n\t\tCSV(TabsStockpile.get().csv(), Images.TABLE_COLUMN_RESIZE.getIcon()){\r\n\t\t\t@Override\r\n\t\t\tpublic void printItem(StringBuilder builder, long count, Item item, boolean bpc, boolean bpo, boolean runs) {\r\n\t\t\t\t//CSV\r\n\t\t\t\tif (item.getTypeName().contains(\"\\\"\")\r\n\t\t\t\t\t\t|| item.getTypeName().contains(\",\")) {\r\n\t\t\t\t\tbuilder.append(\"\\\"\");\r\n\t\t\t\t\tbuilder.append(item.getTypeName().replace(\"\\\"\", \"\\\"\\\"\"));\r\n\t\t\t\t\tbuilder.append(\"\\\"\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbuilder.append(item.getTypeName());\r\n\t\t\t\t}\r\n\t\t\t\tbuilder.append(\",\");\r\n\t\t\t\tbuilder.append(NUMBER.format(count));\r\n\t\t\t\tbuilder.append(\"\\r\\n\");\r\n\t\t\t}\r\n\t\t},\r\n\t\tSPREADSHEET(TabsStockpile.get().spreadsheet(), Images.TABLE_COLUMN_SHOW.getIcon()){\r\n\t\t\t@Override\r\n\t\t\tpublic void printItem(StringBuilder builder, long count, Item item, boolean bpc, boolean bpo, boolean runs) {\r\n\t\t\t\t//CSV\r\n\t\t\t\tbuilder.append(item.getTypeName());\r\n\t\t\t\tbuilder.append(\"\\t\");\r\n\t\t\t\tbuilder.append(NUMBER.format(count));\r\n\t\t\t\tbuilder.append(\"\\r\\n\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprivate final String name;\r\n\t\tprivate final Icon icon;\r\n\r\n\t\tprivate ShoppingListType(String name, Icon icon) {\r\n\t\t\tthis.name = name;\r\n\t\t\tthis.icon = icon;\r\n\t\t}\r\n\r\n\t\tpublic Icon getIcon() {\r\n\t\t\treturn icon;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic String toString() {\r\n\t\t\treturn name;\r\n\t\t}\r\n\r\n\t\tpublic void printHeader(StringBuilder stockpileNames, StringBuilder subpileNames, StringBuilder builder, Map<String, Double> subpiles, long percent) { }\r\n\t\tpublic abstract void printItem(StringBuilder builder, long count, Item item, boolean bpc, boolean bpo, boolean runs);\r\n\t\tpublic void printFooter(StringBuilder builder, double volume, double value, boolean empty) { }\r\n\t}\r\n\r\n\tprivate static class ShoppingListData {\r\n\t\tprivate final ShoppingListType type;\r\n\t\tprivate final Set<ShoppingListDataEntry> missing = new TreeSet<>();\r\n\t\tprivate final Set<ShoppingListDataEntry> required = new TreeSet<>();\r\n\t\tprivate final Set<ShoppingListDataEntry> owned = new TreeSet<>();\r\n\t\tprivate final StringBuilder missingBuilder = new StringBuilder();\r\n\t\tprivate final StringBuilder requiredBuilder = new StringBuilder();\r\n\t\tprivate final StringBuilder ownedBuilder = new StringBuilder();\r\n\t\tprivate boolean missingEmpty = true;\r\n\t\tprivate boolean requiredEmpty = true;\r\n\t\tprivate boolean ownedEmpty = true;\r\n\r\n\t\tpublic ShoppingListData(ShoppingListType type) {\r\n\t\t\tthis.type = type;\r\n\t\t}\r\n\r\n\t\tpublic String get(Object output) {\r\n\t\t\tif (TabsStockpile.get().itemsMissing().equals(output)) {\r\n\t\t\t\treturn missingBuilder.toString();\r\n\t\t\t} else if (TabsStockpile.get().itemsOwned().equals(output)) {\r\n\t\t\t\treturn ownedBuilder.toString();\r\n\t\t\t} else {\r\n\t\t\t\treturn requiredBuilder.toString();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate void printOwned(long count, Item item, boolean bpc, boolean bpo, boolean runs) {\r\n\t\t\tif (count > 0) {\r\n\t\t\t\townedEmpty = false;\r\n\t\t\t\towned.add(new ShoppingListDataEntry(count, item, bpc, bpo, runs));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate void printRequired(long count, Item item, boolean bpc, boolean bpo, boolean runs) {\r\n\t\t\tif (count > 0) {\r\n\t\t\t\trequiredEmpty = false;\r\n\t\t\t\trequired.add(new ShoppingListDataEntry(count, item, bpc, bpo, runs));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate void printMissing(long count, Item item, boolean bpc, boolean bpo, boolean runs) {\r\n\t\t\tif (count > 0) {\r\n\t\t\t\tmissingEmpty = false;\r\n\t\t\t\tmissing.add(new ShoppingListDataEntry(count, item, bpc, bpo, runs));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate void printItems() {\r\n\t\t\tfor (ShoppingListDataEntry entry : missing) {\r\n\t\t\t\tentry.print(type, missingBuilder);\r\n\t\t\t}\r\n\t\t\tfor (ShoppingListDataEntry entry : required) {\r\n\t\t\t\tentry.print(type, requiredBuilder);\r\n\t\t\t}\r\n\t\t\tfor (ShoppingListDataEntry entry : owned) {\r\n\t\t\t\tentry.print(type, ownedBuilder);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate void printFooterOwned(double volume, double value) {\r\n\t\t\ttype.printFooter(ownedBuilder, volume, value, ownedEmpty);\r\n\t\t}\r\n\t\tprivate void printFooterRequired(double volume, double value) {\r\n\t\t\ttype.printFooter(requiredBuilder, volume, value, requiredEmpty);\r\n\t\t}\r\n\t\tprivate void printFooterMissing(double volume, double value) {\r\n\t\t\ttype.printFooter(missingBuilder, volume, value, missingEmpty);\r\n\t\t}\r\n\r\n\t\tprivate void printHeader(StringBuilder stockpileNamesBuilder, StringBuilder subpileNamesBuilder, Map<String, Double> subpiles, long percent) {\r\n\t\t\ttype.printHeader(stockpileNamesBuilder, subpileNamesBuilder, ownedBuilder, subpiles, percent);\r\n\t\t\ttype.printHeader(stockpileNamesBuilder, subpileNamesBuilder, requiredBuilder, subpiles, percent);\r\n\t\t\ttype.printHeader(stockpileNamesBuilder, subpileNamesBuilder, missingBuilder, subpiles, percent);\r\n\t\t}\t\r\n\t}\r\n\r\n\tprivate static class ShoppingListDataEntry implements Comparable<ShoppingListDataEntry> {\r\n\t\tprivate final long count;\r\n\t\tprivate final Item item;\r\n\t\tprivate final boolean bpc;\r\n\t\tprivate final boolean bpo;\r\n\t\tprivate final boolean runs;\r\n\r\n\t\tpublic ShoppingListDataEntry(long count, Item item, boolean bpc, boolean bpo, boolean runs) {\r\n\t\t\tthis.count = count;\r\n\t\t\tthis.item = item;\r\n\t\t\tthis.bpc = bpc;\r\n\t\t\tthis.bpo = bpo;\r\n\t\t\tthis.runs = runs;\r\n\t\t}\r\n\r\n\t\tpublic void print(ShoppingListType type, StringBuilder builder) {\r\n\t\t\ttype.printItem(builder, count, item, bpc, bpo, runs);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int compareTo(ShoppingListDataEntry o) {\r\n\t\t\tint compared;\r\n\t\t\t/*\r\n\t\t\t//Sort by group first (defualt in the table)\r\n\t\t\tcompared = item.getGroup().compareTo(o.item.getGroup());\r\n\t\t\tif (compared != 0) {\r\n\t\t\t\treturn compared;\r\n\t\t\t}\r\n\t\t\t*/\r\n\t\t\tcompared = this.item.getTypeName().compareTo(o.item.getTypeName());\r\n\t\t\tif (compared != 0) {\r\n\t\t\t\treturn compared;\r\n\t\t\t}\r\n\t\t\tcompared = Boolean.compare(this.bpc, o.bpc);\r\n\t\t\tif (compared != 0) {\r\n\t\t\t\treturn compared;\r\n\t\t\t}\r\n\t\t\tcompared = Boolean.compare(this.bpo, o.bpo);\r\n\t\t\tif (compared != 0) {\r\n\t\t\t\treturn compared;\r\n\t\t\t}\r\n\t\t\tcompared = Boolean.compare(this.runs, o.runs);\r\n\t\t\tif (compared != 0) {\r\n\t\t\t\treturn compared;\r\n\t\t\t}\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int hashCode() {\r\n\t\t\tint hash = 5;\r\n\t\t\thash = 41 * hash + (int) (this.count ^ (this.count >>> 32));\r\n\t\t\thash = 41 * hash + Objects.hashCode(this.item);\r\n\t\t\thash = 41 * hash + (this.bpc ? 1 : 0);\r\n\t\t\thash = 41 * hash + (this.bpo ? 1 : 0);\r\n\t\t\thash = 41 * hash + (this.runs ? 1 : 0);\r\n\t\t\treturn hash;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean equals(Object obj) {\r\n\t\t\tif (this == obj) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif (obj == null) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (getClass() != obj.getClass()) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tfinal ShoppingListDataEntry other = (ShoppingListDataEntry) obj;\r\n\t\t\tif (this.count != other.count) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (this.bpc != other.bpc) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (this.bpo != other.bpo) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (this.runs != other.runs) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn Objects.equals(this.item, other.item);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class IconListCellRendererRenderer implements ListCellRenderer<ShoppingListType> {\r\n\t\tDefaultListCellRenderer renderer = new DefaultListCellRenderer();\r\n\r\n\t\t@Override\r\n\t\tpublic Component getListCellRendererComponent(JList<? extends ShoppingListType> list, ShoppingListType value, int index, boolean isSelected, boolean cellHasFocus) {\r\n\t\t\tComponent component = renderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);\r\n\t\t\tif (component instanceof JLabel) {\r\n\t\t\t\tJLabel jLabel = (JLabel) component;\r\n\t\t\t\tjLabel.setIcon(value.getIcon());\r\n\t\t\t}\r\n\t\t\treturn component;\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/stockpile/StockpileTab.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.stockpile;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.FilterList;\nimport ca.odell.glazedlists.GlazedLists;\nimport ca.odell.glazedlists.ListSelection;\nimport ca.odell.glazedlists.SeparatorList;\nimport ca.odell.glazedlists.SortedList;\nimport ca.odell.glazedlists.event.ListEvent;\nimport ca.odell.glazedlists.event.ListEventListener;\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport ca.odell.glazedlists.swing.TableComparatorChooser;\nimport java.awt.Rectangle;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.ComponentEvent;\nimport java.awt.event.ComponentListener;\nimport java.io.File;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Collection;\nimport java.util.Collections;\nimport java.util.Comparator;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport javax.swing.DefaultComboBoxModel;\nimport javax.swing.GroupLayout;\nimport javax.swing.JButton;\nimport javax.swing.JCheckBoxMenuItem;\nimport javax.swing.JComboBox;\nimport javax.swing.JComponent;\nimport javax.swing.JFileChooser;\nimport javax.swing.JLabel;\nimport javax.swing.JMenu;\nimport javax.swing.JMenuItem;\nimport javax.swing.JOptionPane;\nimport javax.swing.JPopupMenu;\nimport javax.swing.JScrollPane;\nimport javax.swing.JTextField;\nimport javax.swing.SwingUtilities;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\nimport net.nikr.eve.jeveasset.data.profile.ProfileManager;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.tag.TagUpdate;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel.JStatusLabel;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.InstantToolTip;\nimport net.nikr.eve.jeveasset.gui.shared.JOptionInput;\nimport net.nikr.eve.jeveasset.gui.shared.MarketDetailsColumn;\nimport net.nikr.eve.jeveasset.gui.shared.MarketDetailsColumn.MarketDetailsActionListener;\nimport net.nikr.eve.jeveasset.gui.shared.TextImport;\nimport net.nikr.eve.jeveasset.gui.shared.TextImport.TextImportHandler;\nimport net.nikr.eve.jeveasset.gui.shared.components.JAutoCompleteDialog;\nimport net.nikr.eve.jeveasset.gui.shared.components.JCustomFileChooser;\nimport net.nikr.eve.jeveasset.gui.shared.components.JDropDownButton;\nimport net.nikr.eve.jeveasset.gui.shared.components.JFixedToolBar;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabSecondary;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMultiSelectionDialog;\nimport net.nikr.eve.jeveasset.gui.shared.components.JOptionsDialog;\nimport net.nikr.eve.jeveasset.gui.shared.components.JOptionsDialog.OptionEnum;\nimport net.nikr.eve.jeveasset.gui.shared.components.JTextDialog;\nimport net.nikr.eve.jeveasset.gui.shared.components.JTextDialog.TextReturn;\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuColumns;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo.AutoNumberFormat;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuStockpile;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuStockpile.BpOptions;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuUI;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor.ColumnValueChangeListener;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.JSeparatorTable;\nimport net.nikr.eve.jeveasset.gui.shared.table.PaddingTableCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileItem;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileTotal;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.SubpileItem;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.SubpileStock;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.StockpileSeparatorTableCell.StockpileCellAction;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\nimport net.nikr.eve.jeveasset.i18n.TabsStockpile;\nimport net.nikr.eve.jeveasset.io.local.EveFittingReader;\nimport net.nikr.eve.jeveasset.io.local.SettingsReader;\nimport net.nikr.eve.jeveasset.io.local.SettingsWriter;\nimport net.nikr.eve.jeveasset.io.local.StockpileReader;\nimport net.nikr.eve.jeveasset.io.local.StockpileWriter;\nimport net.nikr.eve.jeveasset.io.local.text.TextImportType;\nimport net.nikr.eve.jeveasset.io.shared.DesktopUtil.HelpLink;\n\n\npublic class StockpileTab extends JMainTabSecondary implements TagUpdate {\n\n\tprivate enum StockpileAction {\n\t\tADD_STOCKPILE,\n\t\tDELETE_STOCKPILE_MULTI,\n\t\tEDIT_GROUPS,\n\t\tSHOPPING_LIST_MULTI,\n\t\tSHOW_HIDE,\n\t\tIMPORT_TEXT,\n\t\tIMPORT_XML_TEXT,\n\t\tIMPORT_XML,\n\t\tIMPORT_EVE_XML_FIT,\n\t\tEXPORT_TEXT,\n\t\tEXPORT_XML,\n\t\tCOLLAPSE,\n\t\tEXPAND,\n\t\tCOLLAPSE_GROUPS,\n\t\tEXPAND_GROUPS,\n\t\tSUBPILE_TREE\n\t}\n\n\tpublic enum ImportOptions implements OptionEnum {\n\t\tKEEP() {\n\t\t\t@Override\n\t\t\tpublic String getText() {\n\t\t\t\treturn TabsStockpile.get().importOptionsKeep();\n\t\t\t}\n\t\t\t@Override\n\t\t\tpublic String getHelp() {\n\t\t\t\treturn TabsStockpile.get().importOptionsKeepHelp();\n\t\t\t}\n\t\t},\n\t\tTEMPLATE() {\n\t\t\t@Override\n\t\t\tpublic String getText() {\n\t\t\t\treturn TabsStockpile.get().importOptionsTemplate();\n\t\t\t}\n\t\t\t@Override\n\t\t\tpublic String getHelp() {\n\t\t\t\treturn TabsStockpile.get().importOptionsTemplateHelp();\n\t\t\t}\n\t\t},\n\t\tNEW() {\n\t\t\t@Override\n\t\t\tpublic String getText() {\n\t\t\t\treturn TabsStockpile.get().importOptionsNew();\n\t\t\t}\n\t\t\t@Override\n\t\t\tpublic String getHelp() {\n\t\t\t\treturn TabsStockpile.get().importOptionsNewHelp();\n\t\t\t}\n\t\t},\n\t\tRENAME() {\n\t\t\t@Override\n\t\t\tpublic String getText() {\n\t\t\t\treturn TabsStockpile.get().importOptionsRename();\n\t\t\t}\n\t\t\t@Override\n\t\t\tpublic String getHelp() {\n\t\t\t\treturn TabsStockpile.get().importOptionsRenameHelp();\n\t\t\t}\n\t\t},\n\t\tMERGE() {\n\t\t\t@Override\n\t\t\tpublic String getText() {\n\t\t\t\treturn TabsStockpile.get().importOptionsMerge();\n\t\t\t}\n\t\t\t@Override\n\t\t\tpublic String getHelp() {\n\t\t\t\treturn TabsStockpile.get().importOptionsMergeHelp();\n\t\t\t}\n\t\t},\n\t\tOVERWRITE() {\n\t\t\t@Override\n\t\t\tpublic String getText() {\n\t\t\t\treturn TabsStockpile.get().importOptionsOverwrite();\n\t\t\t}\n\t\t\t@Override\n\t\t\tpublic String getHelp() {\n\t\t\t\treturn TabsStockpile.get().importOptionsOverwriteHelp();\n\t\t\t}\n\t\t},\n\t\tADD() {\n\t\t\t@Override\n\t\t\tpublic String getText() {\n\t\t\t\treturn TabsStockpile.get().importOptionsAdd();\n\t\t\t}\n\t\t\t@Override\n\t\t\tpublic String getHelp() {\n\t\t\t\treturn TabsStockpile.get().importOptionsAddHelp();\n\t\t\t}\n\t\t},\n\t\tSKIP() {\n\t\t\t@Override\n\t\t\tpublic String getText() {\n\t\t\t\treturn TabsStockpile.get().importOptionsSkip();\n\t\t\t}\n\t\t\t@Override\n\t\t\tpublic String getHelp() {\n\t\t\t\treturn TabsStockpile.get().importOptionsSkipHelp();\n\t\t\t}\n\t\t};\n\n\t\tprivate boolean all = false;\n\n\t\t@Override\n\t\tpublic boolean isAll() {\n\t\t\treturn all;\n\t\t}\n\n\t\t@Override\n\t\tpublic void setAll(boolean all) {\n\t\t\tthis.all = all;\n\t\t}\n\t}\n\n\tprivate static final MatchAllGroups MATCH_ALL_GROUPS = new MatchAllGroups();\n\n\t//StatusBar\n\tprivate final JStatusLabel jVolumeNow;\n\tprivate final JStatusLabel jVolumeNeeded;\n\tprivate final JStatusLabel jValueNow;\n\tprivate final JStatusLabel jValueNeeded;\n\n\t//Dialogs\n\tprivate final JCustomFileChooser jFileChooser;\n\tprivate final StockpileDialog stockpileDialog;\n\tprivate final StockpileItemDialog stockpileItemDialog;\n\tprivate final StockpileShoppingListDialog stockpileShoppingListDialog;\n\tprivate final JMultiSelectionDialog<Stockpile> stockpileSelectionDialog;\n\tprivate final JMultiSelectionDialog<String> fitsSelectionDialog;\n\tprivate final JOptionsDialog stockpileImportDialog;\n\tprivate final JTextDialog jTextDialog;\n\tprivate final TextImport<TextImportType> textImport;\n\n\t//Table\n\tprivate final JSeparatorTable jTable;\n\tprivate final EnumTableFormatAdaptor<StockpileTableFormat, StockpileItem> tableFormat;\n\tprivate final DefaultEventTableModel<StockpileItem> tableModel;\n\tprivate final EventList<StockpileItem> eventList;\n\tprivate final FilterList<StockpileItem> filterList;\n\tprivate final SeparatorList<StockpileItem> separatorList;\n\tprivate final DefaultEventSelectionModel<StockpileItem> selectionModel;\n\tprivate final StockpileFilterControl filterControl;\n\n\t//Toolbar\n\tprivate final JFixedToolBar jToolBar;\n\tprivate final JCheckBoxMenuItem jShowSubpileTree;\n\tprivate final JDropDownButton jCollapse;\n\tprivate final JButton jCollapseGroup;\n\tprivate final JButton jExpandGroup;\n\tprivate final JButton jCollapseStockpile;\n\tprivate final JButton jExpandStockpile;\n\tprivate final JComboBox<EsiOwner> jOwners;\n\tprivate final DefaultComboBoxModel<EsiOwner> ownerModel;\n\tprivate final JAutoCompleteDialog<String> jAutoCompleteDialog;\n\n\t//Data\n\tprivate final StockpileData stockpileData;\n\tprivate int toolBarMinWidth;\n\tprivate Stockpile template = null;\n\tprivate boolean collapsed = false;\n\tprivate static boolean updateFirstStockpileGroup = false;\n\n\tpublic static final String NAME = \"stockpile\"; //Not to be changed!\n\n\tpublic StockpileTab(final Program program) {\n\t\tsuper(program, NAME, TabsStockpile.get().stockpile(), Images.TOOL_STOCKPILE.getIcon(), true);\n\n\t\tstockpileData = new StockpileData(program);\n\n\t\tfinal ListenerClass listener = new ListenerClass();\n\n\t\tjAutoCompleteDialog = new JAutoCompleteDialog<>(program, TabsStockpile.get().editGroup(), Images.EDIT_EDIT.getImage(), TabsStockpile.get().selectGroup(), false, false, JAutoCompleteDialog.STRING_OPTIONS);\n\n\t\tjFileChooser = new JCustomFileChooser(\"xml\");\n\t\tjFileChooser.setMultiSelectionEnabled(false);\n\t\tjFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);\n\n\t\tstockpileDialog = new StockpileDialog(program);\n\t\tstockpileItemDialog = new StockpileItemDialog(this, program);\n\t\tstockpileShoppingListDialog = new StockpileShoppingListDialog(program);\n\t\tstockpileSelectionDialog = new JMultiSelectionDialog<>(program, TabsStockpile.get().selectStockpiles());\n\t\tfitsSelectionDialog = new JMultiSelectionDialog<>(program, TabsStockpile.get().selectFits());\n\t\tstockpileImportDialog = new JOptionsDialog(program);\n\n\t\tjTextDialog = new JTextDialog(program.getMainWindow().getFrame());\n\t\ttextImport = new TextImport<>(program, NAME);\n\n\t\tjToolBar = new JFixedToolBar();\n\t\tprogram.getMainWindow().getFrame().addComponentListener(new ComponentListener() {\n\t\t\t@Override\n\t\t\tpublic void componentResized(ComponentEvent e) {\n\t\t\t\tupdateToolbar();\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void componentMoved(ComponentEvent e) { }\n\n\t\t\t@Override\n\t\t\tpublic void componentShown(ComponentEvent e) {\n\t\t\t\tupdateToolbar();\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic void componentHidden(ComponentEvent e) { }\n\t\t});\n\n\t\tJButton jAdd = new JButton(TabsStockpile.get().newStockpile(), Images.LOC_GROUPS.getIcon());\n\t\tjAdd.setActionCommand(StockpileAction.ADD_STOCKPILE.name());\n\t\tjAdd.addActionListener(listener);\n\t\tjToolBar.addButton(jAdd);\n\n\t\tJDropDownButton jEdit = new JDropDownButton(TabsStockpile.get().edit(), Images.EDIT_EDIT.getIcon());\n\t\tjToolBar.addButton(jEdit);\n\n\t\tJMenuItem jDelete = new JMenuItem(TabsStockpile.get().delete(), Images.EDIT_DELETE.getIcon());\n\t\tjDelete.setActionCommand(StockpileAction.DELETE_STOCKPILE_MULTI.name());\n\t\tjDelete.addActionListener(listener);\n\t\tjEdit.add(jDelete);\n\n\t\tJMenuItem jGroups = new JMenuItem(TabsStockpile.get().groups(), Images.FILTER_LOAD.getIcon());\n\t\tjGroups.setActionCommand(StockpileAction.EDIT_GROUPS.name());\n\t\tjGroups.addActionListener(listener);\n\t\tjEdit.add(jGroups);\n\n\t\tjToolBar.addSeparator();\n\n\t\tJDropDownButton jShow = new JDropDownButton(TabsStockpile.get().showHide(), Images.EDIT_SHOW.getIcon());\n\t\tjToolBar.addButton(jShow);\n\n\t\tJMenuItem jShowStockpiles = new JMenuItem(TabsStockpile.get().showStockpiles(), Images.TOOL_STOCKPILE.getIcon());\n\t\tjShowStockpiles.setActionCommand(StockpileAction.SHOW_HIDE.name());\n\t\tjShowStockpiles.addActionListener(listener);\n\t\tjShow.add(jShowStockpiles);\n\n\t\tjShowSubpileTree = new JCheckBoxMenuItem(TabsStockpile.get().showSubpileTree());\n\t\tjShowSubpileTree.setSelected(Settings.get().isShowSubpileTree());\n\t\tjShowSubpileTree.setActionCommand(StockpileAction.SUBPILE_TREE.name());\n\t\tjShowSubpileTree.addActionListener(listener);\n\t\tjShow.add(jShowSubpileTree);\n\n\t\tjToolBar.addSeparator();\n\n\t\tJButton jShoppingList = new JButton(TabsStockpile.get().getShoppingList(), Images.STOCKPILE_SHOPPING_LIST.getIcon());\n\t\tjShoppingList.setActionCommand(StockpileAction.SHOPPING_LIST_MULTI.name());\n\t\tjShoppingList.addActionListener(listener);\n\t\tjToolBar.addButton(jShoppingList);\n\n\t\tJDropDownButton jImport = new JDropDownButton(TabsStockpile.get().importButton(), Images.EDIT_IMPORT.getIcon());\n\t\tjToolBar.addButton(jImport);\n\n\t\tJMenuItem jImportTextFormats = new JMenuItem(TabsStockpile.get().importText(), Images.STOCKPILE_SHOPPING_LIST.getIcon());\n\t\tjImportTextFormats.setActionCommand(StockpileAction.IMPORT_TEXT.name());\n\t\tjImportTextFormats.addActionListener(listener);\n\t\tjImport.add(jImportTextFormats);\n\n\t\tJMenuItem jImportEveXmlFit = new JMenuItem(TabsStockpile.get().importEveXml(), Images.MISC_XML.getIcon());\n\t\tjImportEveXmlFit.setActionCommand(StockpileAction.IMPORT_EVE_XML_FIT.name());\n\t\tjImportEveXmlFit.addActionListener(listener);\n\t\tjImport.add(jImportEveXmlFit);\n\n\t\tJMenuItem jImportXml = new JMenuItem(TabsStockpile.get().importStockpilesXml(), Images.TOOL_STOCKPILE.getIcon());\n\t\tjImportXml.setActionCommand(StockpileAction.IMPORT_XML.name());\n\t\tjImportXml.addActionListener(listener);\n\t\tjImport.add(jImportXml);\n\n\t\tJMenuItem jImportText = new JMenuItem(TabsStockpile.get().importStockpilesText(), Images.EDIT_COPY.getIcon());\n\t\tjImportText.setActionCommand(StockpileAction.IMPORT_XML_TEXT.name());\n\t\tjImportText.addActionListener(listener);\n\t\tjImport.add(jImportText);\n\n\t\tJMenuItem jExportXml = new JMenuItem(TabsStockpile.get().exportStockpilesXml(), Images.TOOL_STOCKPILE.getIcon());\n\t\tjExportXml.setActionCommand(StockpileAction.EXPORT_XML.name());\n\t\tjExportXml.addActionListener(listener);\n\n\t\tJMenuItem jExportText = new JMenuItem(TabsStockpile.get().exportStockpilesText(), Images.EDIT_COPY.getIcon());\n\t\tjExportText.setActionCommand(StockpileAction.EXPORT_TEXT.name());\n\t\tjExportText.addActionListener(listener);\n\n\t\tjToolBar.addSeparator();\n\n\t\tjToolBar.addSpace(5);\n\n\t\townerModel = new DefaultComboBoxModel<>();\n\t\tjOwners = new JComboBox<>(ownerModel);\n\t\tjToolBar.add(jOwners, 150);\n\n\t\tjToolBar.addSpace(1);\n\n\t\tJLabel jOwnerLabel = new JLabel(Images.MISC_HELP.getIcon());\n\t\tjOwnerLabel.setToolTipText(TabsStockpile.get().marketDetailsOwnerToolTip());\n\t\tInstantToolTip.install(jOwnerLabel);\n\t\tjToolBar.addLabelIcon(jOwnerLabel);\n\n\t\tjToolBar.addSeparator();\n\n\t\tjToolBar.addGlue();\n\n\t\tjCollapse = new JDropDownButton(TabsStockpile.get().collapse(), Images.MISC_COLLAPSE.getIcon());\n\t\tjToolBar.addButton(jCollapse);\n\n\t\tJMenuItem jCollapseStockpileMenuItem = new JMenuItem(TabsStockpile.get().collapse(), Images.MISC_COLLAPSED.getIcon());\n\t\tjCollapseStockpileMenuItem.setActionCommand(StockpileAction.COLLAPSE.name());\n\t\tjCollapseStockpileMenuItem.addActionListener(listener);\n\t\tjCollapse.add(jCollapseStockpileMenuItem);\n\n\t\tJMenuItem jExpandStockpileMenuItem = new JMenuItem(TabsStockpile.get().expand(), Images.MISC_EXPANDED.getIcon());\n\t\tjExpandStockpileMenuItem.setActionCommand(StockpileAction.EXPAND.name());\n\t\tjExpandStockpileMenuItem.addActionListener(listener);\n\t\tjCollapse.add(jExpandStockpileMenuItem);\n\n\t\tJMenuItem jCollapseGroupMenuItem = new JMenuItem(TabsStockpile.get().groupCollapse(), Images.MISC_COLLAPSED.getIcon());\n\t\tjCollapseGroupMenuItem.setActionCommand(StockpileAction.COLLAPSE_GROUPS.name());\n\t\tjCollapseGroupMenuItem.addActionListener(listener);\n\t\tjCollapse.add(jCollapseGroupMenuItem);\n\n\t\tJMenuItem jExpandGroupMenuItem = new JMenuItem(TabsStockpile.get().groupExpand(), Images.MISC_EXPANDED.getIcon());\n\t\tjExpandGroupMenuItem.setActionCommand(StockpileAction.EXPAND_GROUPS.name());\n\t\tjExpandGroupMenuItem.addActionListener(listener);\n\t\tjCollapse.add(jExpandGroupMenuItem);\n\n\t\tjCollapseGroup = new JButton(TabsStockpile.get().groupCollapse(), Images.MISC_COLLAPSED.getIcon());\n\t\tjCollapseGroup.setActionCommand(StockpileAction.COLLAPSE_GROUPS.name());\n\t\tjCollapseGroup.addActionListener(listener);\n\n\t\tjExpandGroup = new JButton(TabsStockpile.get().groupExpand(), Images.MISC_EXPANDED.getIcon());\n\t\tjExpandGroup.setActionCommand(StockpileAction.EXPAND_GROUPS.name());\n\t\tjExpandGroup.addActionListener(listener);\n\n\t\tjCollapseStockpile = new JButton(TabsStockpile.get().collapse(), Images.MISC_COLLAPSED.getIcon());\n\t\tjCollapseStockpile.setActionCommand(StockpileAction.COLLAPSE.name());\n\t\tjCollapseStockpile.addActionListener(listener);\n\n\t\tjExpandStockpile = new JButton(TabsStockpile.get().expand(), Images.MISC_EXPANDED.getIcon());\n\t\tjExpandStockpile.setActionCommand(StockpileAction.EXPAND.name());\n\t\tjExpandStockpile.addActionListener(listener);\n\n\t\t//Table Format\n\t\ttableFormat = TableFormatFactory.stockpileTableFormat();\n\t\ttableFormat.addListener(listener);\n\t\t//Backend\n\t\teventList = EventListManager.create();\n\t\t//Sorting (per column)\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<StockpileItem> sortedListColumn = new SortedList<>(eventList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t//Sorting Total (Ensure that total is always last)\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<StockpileItem> sortedListTotal = new SortedList<>(sortedListColumn, new TotalComparator());\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t//Filter\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tfilterList = new FilterList<>(sortedListTotal);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\tfilterList.addListEventListener(listener);\n\t\t//Separator\n\t\tseparatorList = new SeparatorList<>(filterList, new StockpileSeparatorComparator(), 1, Integer.MAX_VALUE);\n\t\tseparatorList.addListEventListener(new ListEventListener<StockpileItem>() {\n\t\t\t@Override\n\t\t\tpublic void listChanged(ListEvent<StockpileItem> listChanges) {\n\t\t\t\tupdateGroupFirst();\n\t\t\t}\n\t\t});\n\t\t//Table Model\n\t\ttableModel = EventModels.createTableModel(separatorList, tableFormat);\n\t\t//Table\n\t\tjTable = new JStockpileTable(program, tableModel, separatorList);\n\t\tjTable.setSeparatorRenderer(new StockpileSeparatorTableCell(this, program, jTable, separatorList, listener));\n\t\tjTable.setSeparatorEditor(new StockpileSeparatorTableCell(this, program, jTable, separatorList, listener));\n\t\tjTable.setCellSelectionEnabled(true);\n\t\t//Padding\n\t\tPaddingTableCellRenderer.install(jTable, 3);\n\t\t//Sorting\n\t\tTableComparatorChooser<StockpileItem> comparatorChooser = TableComparatorChooser.install(jTable, sortedListColumn, TableComparatorChooser.MULTIPLE_COLUMN_MOUSE, tableFormat);\n\t\t//Selection Model\n\t\tselectionModel = EventModels.createSelectionModel(separatorList);\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\n\t\tjTable.setSelectionModel(selectionModel);\n\t\t//Market Details\n\t\tMarketDetailsColumn.install(eventList, new MarketDetailsActionListener<StockpileItem>() {\n\t\t\t@Override\n\t\t\tpublic void openMarketDetails(StockpileItem stockpileItem) {\n\t\t\t\tif (!jOwners.isEnabled()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tEsiOwner esiOwner = jOwners.getItemAt(jOwners.getSelectedIndex());\n\t\t\t\tJMenuUI.openMarketDetails(program, esiOwner, stockpileItem.getTypeID(), false);\n\t\t\t}\n\t\t});\n\t\t//Listeners\n\t\tinstallTable(jTable);\n\t\t//Scroll\n\t\tJScrollPane jTableScroll = new JScrollPane(jTable);\n\t\t//Filter GUI\n\t\tfilterControl = new StockpileFilterControl(sortedListTotal);\n\t\tfilterControl.addExportOption(jExportXml);\n\t\tfilterControl.addExportOption(jExportText);\n\t\tfilterControl.setManualLink(new HelpLink(\"https://wiki.jeveassets.org/manual/stockpile\", GuiShared.get().helpStockpile()), getIcon());\n\t\t//Menu\n\t\tinstallTableTool(new StockpileTableMenu(), tableFormat, comparatorChooser, tableModel, jTable, filterControl, StockpileItem.class);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.TRAILING)\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jToolBar, jToolBar.getMinimumSize().width, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jToolBar, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\n\t\tjVolumeNow = StatusPanel.createLabel(TabsStockpile.get().shownVolumeNow(), Images.ASSETS_VOLUME.getIcon(), AutoNumberFormat.DOUBLE);\n\t\tthis.addStatusbarLabel(jVolumeNow);\n\n\t\tjValueNow = StatusPanel.createLabel(TabsStockpile.get().shownValueNow(), Images.TOOL_VALUES.getIcon(), AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jValueNow);\n\n\t\tjVolumeNeeded = StatusPanel.createLabel(TabsStockpile.get().shownVolumeNeeded(), Images.ASSETS_VOLUME.getIcon(), AutoNumberFormat.DOUBLE);\n\t\tthis.addStatusbarLabel(jVolumeNeeded);\n\n\t\tjValueNeeded = StatusPanel.createLabel(TabsStockpile.get().shownValueNeeded(), Images.TOOL_VALUES.getIcon(), AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jValueNeeded);\n\t}\n\n\t@Override\n\tpublic void updateData() {\n\t\t//Save separator expanded/collapsed state\n\t\tjTable.saveExpandedState();\n\t\t//Update Data\n\t\tstockpileData.updateData(eventList);\n\t\t//Restore separator expanded/collapsed state\n\t\tjTable.loadExpandedState();\n\t\t//Update owner combobox\n\t\townerModel.removeAllElements();\n\t\tfor (EsiOwner owner : program.getProfileManager().getEsiOwners()) {\n\t\t\tif (owner.isOpenWindows()) {\n\t\t\t\townerModel.addElement(owner);\n\t\t\t}\n\t\t}\n\t\tjOwners.setEnabled(ownerModel.getSize() > 0);\n\t}\n\n\tprivate void updateOwners() {\n\t\t//Update Owners\n\t\tstockpileData.updateOwners();\n\t}\n\n\tprivate void updateSubpile(Stockpile stockpile) {\n\t\t//Save separator expanded/collapsed state\n\t\tjTable.saveExpandedState();\n\t\t//Update Data\n\t\tstockpileData.updateSubpile(eventList, stockpile);\n\t\t//Restore separator expanded/collapsed state\n\t\tjTable.loadExpandedState();\n\t}\n\n\tprivate void updateStockpile(Stockpile stockpile) {\n\t\t//Update Data\n\t\tstockpileData.updateStockpile(stockpile);\n\t}\n\n\t@Override\n\tpublic void clearData() {\n\t\ttry {\n\t\t\teventList.getReadWriteLock().writeLock().lock();\n\t\t\teventList.clear();\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t\tfilterControl.clearCache();\n\t}\n\n\t@Override\n\tpublic void updateCache() {\n\t\tfilterControl.createCache();\n\t}\n\n\t@Override\n\tpublic Collection<LocationType> getLocations() {\n\t\treturn new ArrayList<>(); //LocationsType\n\t}\n\n\t/**\n\t * Needs to be updated before the stockpile tab is shown (for TableMenu > Add\n\t */\n\tpublic void updateStockpileDialog() {\n\t\tstockpileDialog.updateData();\n\t}\n\n\t/**\n\t * @param stockpile Stockpile to add item to\n\t * @param item Item to add to stockpile\n\t * @param merge True: Add new and old item count. False: Skip the new item if it exist\n\t * @param saveOnChange Save settings when done\n\t * @return\n\t */\n\tpublic Stockpile addToStockpile(Stockpile stockpile, StockpileItem item, boolean merge, boolean saveOnChange) {\n\t\treturn addToStockpile(stockpile, Collections.singletonList(item), merge, saveOnChange);\n\t}\n\n\t/**\n\t *\n\t * @param stockpile Stockpile to add item to\n\t * @param items Items to add to stockpile\n\t * @param merge  True: Add new and old item count. False: Skip new items if they exist\n\t * @param saveOnChange Save settings when done\n\t * @return\n\t */\n\tpublic Stockpile addToStockpile(Stockpile stockpile, Collection<StockpileItem> items, boolean merge, boolean saveOnChange) {\n\t\tupdateOwners();\n\t\tif (stockpile == null) { //new stockpile\n\t\t\tstockpile = stockpileDialog.showAdd();\n\t\t}\n\t\tif (stockpile != null) { //Add items\n\t\t\tremoveStockpile(stockpile);\n\t\t\tboolean save = false;\n\t\t\tfor (StockpileItem fromItem : items) {\n\t\t\t\t//Clone item\n\t\t\t\tStockpileItem toItem = null;\n\t\t\t\t//Search for existing\n\t\t\t\tfor (StockpileItem item : stockpile.getItems()) {\n\t\t\t\t\tif (item.getItemTypeID() == fromItem.getItemTypeID() && item.isRuns() == fromItem.isRuns()) {\n\t\t\t\t\t\ttoItem = item;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (toItem != null) { //Update existing (add counts)\n\t\t\t\t\tif (merge) {\n\t\t\t\t\t\tsave = true;\n\t\t\t\t\t\tSettings.lock(\"Stockpile (addTo - Merge)\"); //Lock for Stockpile (addTo - Merge)\n\t\t\t\t\t\ttoItem.addCountMinimum(fromItem.getCountMinimum());\n\t\t\t\t\t\tSettings.unlock(\"Stockpile (addTo - Merge)\"); //Unlock for Stockpile (addTo - Merge)\n\t\t\t\t\t}\n\t\t\t\t} else { //Add new\n\t\t\t\t\tsave = true;\n\t\t\t\t\tSettings.lock(\"Stockpile (addTo - New)\"); //Lock for Stockpile (addTo - New)\n\t\t\t\t\tStockpileItem item = new StockpileItem(stockpile, fromItem);\n\t\t\t\t\tstockpile.add(item);\n\t\t\t\t\tSettings.unlock(\"Stockpile (addTo - New)\"); //Unlock for Stockpile (addTo - New)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (save && saveOnChange) {\n\t\t\t\tprogram.saveSettings(\"Stockpile (addTo)\"); //Save Stockpile (Merge);\n\t\t\t}\n\t\t\taddStockpile(stockpile);\n\t\t}\n\t\treturn stockpile;\n\t}\n\n\tprivate void updateToolbar() {\n\t\tif (toolBarMinWidth == 0) {\n\t\t\tjToolBar.remove(jCollapse);\n\t\t\tjToolBar.addButton(jCollapseGroup);\n\t\t\tjToolBar.addButton(jExpandGroup);\n\t\t\tjToolBar.addButton(jCollapseStockpile);\n\t\t\tjToolBar.addButton(jExpandStockpile);\n\t\t\ttoolBarMinWidth = jToolBar.getPreferredSize().width;\n\t\t\tcollapsed = false;\n\t\t}\n\t\tint width = jToolBar.getVisibleRect().width;\n\t\tif (collapsed && width >= toolBarMinWidth) {\n\t\t\tcollapsed = false;\n\t\t\tjToolBar.remove(jCollapse);\n\t\t\tjToolBar.addButton(jCollapseGroup);\n\t\t\tjToolBar.addButton(jExpandGroup);\n\t\t\tjToolBar.addButton(jCollapseStockpile);\n\t\t\tjToolBar.addButton(jExpandStockpile);\n\t\t} else if (!collapsed && width < toolBarMinWidth){\n\t\t\tcollapsed = true;\n\t\t\tjToolBar.remove(jCollapseGroup);\n\t\t\tjToolBar.remove(jExpandGroup);\n\t\t\tjToolBar.remove(jCollapseStockpile);\n\t\t\tjToolBar.remove(jExpandStockpile);\n\t\t\tjToolBar.addButton(jCollapse);\n\t\t}\n\t}\n\n\tprivate SeparatorList.Separator<?> getSeparator(final Stockpile stockpile) {\n\t\ttry {\n\t\t\tseparatorList.getReadWriteLock().readLock().lock();\n\t\t\tfor (int i = 0; i < separatorList.size(); i++) {\n\t\t\t\tObject object = separatorList.get(i);\n\t\t\t\tif (object instanceof SeparatorList.Separator) {\n\t\t\t\t\tSeparatorList.Separator<?> separator = (SeparatorList.Separator) object;\n\t\t\t\t\tObject first = separator.first();\n\t\t\t\t\tif (first instanceof StockpileItem) {\n\t\t\t\t\t\tStockpileItem firstItem = (StockpileItem) first;\n\t\t\t\t\t\tif (firstItem.getStockpile().equals(stockpile)) {\n\t\t\t\t\t\t\treturn separator;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tseparatorList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic void scrollToSctockpile(final Stockpile stockpile) {\n\t\tSeparatorList.Separator<?> separator = getSeparator(stockpile);\n\t\tif (separator == null) {\n\t\t\treturn;\n\t\t}\n\t\tif (separator.getLimit() > 0) { //Expanded: Scroll\n\t\t\tint row = EventListManager.indexOf(separatorList, separator.first()) - 1;\n\t\t\tRectangle rect = jTable.getCellRect(row, 0, true);\n\t\t\trect.setSize(jTable.getVisibleRect().getSize());\n\t\t\tjTable.scrollRectToVisible(rect);\n\t\t} else { //Collapsed: Expand and run again...\n\t\t\ttry {\n\t\t\t\tseparatorList.getReadWriteLock().writeLock().lock();\n\t\t\t\tseparator.setLimit(Integer.MAX_VALUE);\n\t\t\t} finally {\n\t\t\t\tseparatorList.getReadWriteLock().writeLock().unlock();\n\t\t\t}\n\t\t\tSwingUtilities.invokeLater(new Runnable() {\n\t\t\t\t@Override\n\t\t\t\tpublic void run() {\n\t\t\t\t\tscrollToSctockpile(stockpile);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t@Override\n\tpublic void updateTags() {\n\t\tbeforeUpdateData();\n\t\ttableModel.fireTableDataChanged();\n\t\tfilterControl.refilter();\n\t\tafterUpdateData();\n\t}\n\n\tprotected void setMultiplyer(Stockpile stockpile, JTextField jMultiplier) {\n\t\tif (stockpile == null) {\n\t\t\treturn;\n\t\t}\n\t\tdouble multiplier;\n\t\ttry {\n\t\t\tmultiplier = Double.parseDouble(jMultiplier.getText());\n\t\t} catch (NumberFormatException ex) {\n\t\t\tmultiplier = 1;\n\t\t}\n\t\tif (multiplier != stockpile.getMultiplier()) {\n\t\t\tstockpile.setMultiplier(multiplier);\n\t\t\tstockpile.updateTotal();\n\t\t\tprogram.saveSettings(\"Stockpile: Multiplier changed\");\n\t\t\ttableModel.fireTableDataChanged();\n\t\t}\n\t}\n\n\tprotected void editItem(StockpileItem item) {\n\t\tStockpileItem editItem = stockpileItemDialog.showEdit(item);\n\t\tif (editItem != null) {\n\t\t\taddToStockpile(editItem.getStockpile(), editItem, false, true);\n\t\t}\n\t}\n\n\tprotected void removeItem(StockpileItem item) {\n\t\tremoveItems(Collections.singletonList(item));\n\t}\n\n\tprotected void removeItems(Collection<StockpileItem> items) {\n\t\tSet<Stockpile> stockpiles = new HashSet<>();\n\t\tfor (StockpileItem item : items) {\n\t\t\titem.getStockpile().updateTotal();\n\t\t\tstockpiles.add(item.getStockpile());\n\t\t}\n\t\tif (!items.isEmpty()) {\n\t\t\tupdateSubpile(items.iterator().next().getStockpile());\n\t\t}\n\t\tfor (Stockpile stockpile : stockpiles) {\n\t\t\tif (stockpile.isMatchAll()) { //Less items == may match now...\n\t\t\t\tupdateStockpile(stockpile);\n\t\t\t}\n\t\t}\n\t\t//Lock Table\n\t\tbeforeUpdateData();\n\t\t//Update list\n\t\ttry {\n\t\t\teventList.getReadWriteLock().writeLock().lock();\n\t\t\tenableGroupFirstUpdate();\n\t\t\teventList.removeAll(items);\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t\t//Unlcok Table\n\t\tafterUpdateData();\n\t}\n\n\tpublic void addStockpile(Stockpile stockpile) {\n\t\tif (stockpile == null) {\n\t\t\treturn;\n\t\t}\n\t\tupdateStockpile(stockpile);\n\t\tupdateSubpile(stockpile);\n\t\t//Lock Table\n\t\tbeforeUpdateData();\n\t\t//Update list\n\t\ttry {\n\t\t\teventList.getReadWriteLock().writeLock().lock();\n\t\t\tenableGroupFirstUpdate();\n\t\t\teventList.addAll(stockpile.getItems());\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t\t//Unlcok Table\n\t\tafterUpdateData();\n\t\t//Load groups states\n\t\tString group = Settings.get().getStockpileGroupSettings().getGroup(stockpile);\n\t\tboolean expand = Settings.get().getStockpileGroupSettings().isGroupExpanded(group);\n\t\tif (!group.isEmpty()) {\n\t\t\tif (expand) { //Expanse - Load stockpiles expanded state\n\t\t\t\ttry {\n\t\t\t\t\tseparatorList.getReadWriteLock().writeLock().lock();\n\t\t\t\t\tfor (int i = 0; i < separatorList.size(); i++) {\n\t\t\t\t\t\tObject object = separatorList.get(i);\n\t\t\t\t\t\tif (object instanceof SeparatorList.Separator<?>) {\n\t\t\t\t\t\t\tSeparatorList.Separator<?> separator = (SeparatorList.Separator<?>) object;\n\t\t\t\t\t\t\tStockpileItem currentItem = (StockpileItem) separator.first();\n\t\t\t\t\t\t\tif (currentItem.getGroup().equals(group)) {\n\t\t\t\t\t\t\t\tif (Settings.get().getStockpileGroupSettings().isStockpileExpanded(currentItem.getStockpile())) {\n\t\t\t\t\t\t\t\t\tseparator.setLimit(Integer.MAX_VALUE);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tseparator.setLimit(0);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tseparatorList.getReadWriteLock().writeLock().unlock();\n\t\t\t\t}\n\t\t\t} else { //Collapse group\n\t\t\t\ttry {\n\t\t\t\t\tseparatorList.getReadWriteLock().writeLock().lock();\n\t\t\t\t\tfor (int i = 0; i < separatorList.size(); i++) {\n\t\t\t\t\t\tObject object = separatorList.get(i);\n\t\t\t\t\t\tif (object instanceof SeparatorList.Separator<?>) {\n\t\t\t\t\t\t\tSeparatorList.Separator<?> separator = (SeparatorList.Separator<?>) object;\n\t\t\t\t\t\t\tStockpileItem currentItem = (StockpileItem) separator.first();\n\t\t\t\t\t\t\tif (currentItem.getGroup().equals(group)) {\n\t\t\t\t\t\t\t\tseparator.setLimit(0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tseparatorList.getReadWriteLock().writeLock().unlock();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void expandGroups(boolean expand, GroupMatching match) {\n\t\t//Changed groups\n\t\tList<StockpileItem> stockpileItems = new ArrayList<>();\n\t\tfor (Stockpile stockpile : getShownStockpiles()) {\n\t\t\tString group = Settings.get().getStockpileGroupSettings().getGroup(stockpile);\n\t\t\tif (match.matches(group) && Settings.get().getStockpileGroupSettings().isGroupExpanded(group) != expand) { //Match group + is changed\n\t\t\t\tstockpileItems.addAll(stockpile.getItems());\n\t\t\t\tstockpileItems.addAll(stockpile.getSubpileTableItems());\n\t\t\t}\n\t\t}\n\t\t//Groups affected\n\t\tList<String> groups = new ArrayList<>();\n\t\tfor (Stockpile stockpile : Settings.get().getStockpiles()) {\n\t\t\tString group = Settings.get().getStockpileGroupSettings().getGroup(stockpile);\n\t\t\tif (match.matches(group)) { //Match group\n\t\t\t\tgroups.add(group);\n\t\t\t}\n\t\t}\n\t\t//Update group settings (must be done after the ShownStockpiles loop)\n\t\tfor (String group : groups) {\n\t\t\tSettings.get().getStockpileGroupSettings().setGroupExpanded(group, expand);\n\t\t}\n\t\tif (!expand) { //Collapse - Save stockpile expanded state\n\t\t\ttry {\n\t\t\t\tseparatorList.getReadWriteLock().writeLock().lock();\n\t\t\t\tfor (int i = 0; i < separatorList.size(); i++) {\n\t\t\t\t\tObject object = separatorList.get(i);\n\t\t\t\t\tif (object instanceof SeparatorList.Separator<?>) {\n\t\t\t\t\t\tSeparatorList.Separator<?> separator = (SeparatorList.Separator<?>) object;\n\t\t\t\t\t\tStockpileItem currentItem = (StockpileItem) separator.first();\n\t\t\t\t\t\tif (match.matches(currentItem.getGroup())) {\n\t\t\t\t\t\t\tSettings.get().getStockpileGroupSettings().setStockpileExpanded(currentItem.getStockpile(), separator.getLimit() != 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tseparatorList.getReadWriteLock().writeLock().unlock();\n\t\t\t}\n\t\t}\n\t\t//Lock Table\n\t\tbeforeUpdateData();\n\t\ttry {\n\t\t\teventList.getReadWriteLock().writeLock().lock();\n\t\t\teventList.removeAll(stockpileItems);\n\t\t\tif (expand) {\n\t\t\t\tenableGroupFirstUpdate();\n\t\t\t}\n\t\t\teventList.addAll(stockpileItems);\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t\t//Unlcok Table\n\t\tafterUpdateData();\t\t\n\t\tif (expand) { //Expanse - Load stockpiles(s) expanded state\n\t\t\ttry {\n\t\t\t\tseparatorList.getReadWriteLock().writeLock().lock();\n\t\t\t\tfor (int i = 0; i < separatorList.size(); i++) {\n\t\t\t\t\tObject object = separatorList.get(i);\n\t\t\t\t\tif (object instanceof SeparatorList.Separator<?>) {\n\t\t\t\t\t\tSeparatorList.Separator<?> separator = (SeparatorList.Separator<?>) object;\n\t\t\t\t\t\tStockpileItem currentItem = (StockpileItem) separator.first();\n\t\t\t\t\t\tif (match.matches(currentItem.getGroup())) {\n\t\t\t\t\t\t\tif (Settings.get().getStockpileGroupSettings().isStockpileExpanded(currentItem.getStockpile())) {\n\t\t\t\t\t\t\t\tseparator.setLimit(Integer.MAX_VALUE);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tseparator.setLimit(0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tseparatorList.getReadWriteLock().writeLock().unlock();\n\t\t\t}\n\t\t} else { //Collapse group(s)\n\t\t\ttry {\n\t\t\t\tseparatorList.getReadWriteLock().writeLock().lock();\n\t\t\t\tfor (int i = 0; i < separatorList.size(); i++) {\n\t\t\t\t\tObject object = separatorList.get(i);\n\t\t\t\t\tif (object instanceof SeparatorList.Separator<?>) {\n\t\t\t\t\t\tSeparatorList.Separator<?> separator = (SeparatorList.Separator<?>) object;\n\t\t\t\t\t\tStockpileItem currentItem = (StockpileItem) separator.first();\n\t\t\t\t\t\t//if (match.matches(currentItem.getGroup()) && changed.contains(currentItem.getStockpile())) {\n\t\t\t\t\t\tif (match.matches(currentItem.getGroup())) {\n\t\t\t\t\t\t\tseparator.setLimit(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tseparatorList.getReadWriteLock().writeLock().unlock();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void expandGroupStockpiles(boolean expand) {\n\t\tStockpile stockpile = getSelectedStockpile();\n\t\tif (stockpile == null) {\n\t\t\treturn;\n\t\t}\n\t\tString group = Settings.get().getStockpileGroupSettings().getGroup(stockpile);\n\t\t//Save state\n\t\tList<Stockpile> stockpiles = Settings.get().getStockpileGroupSettings().getStockpiles(group);\n\t\tSettings.get().getStockpileGroupSettings().setStockpileExpanded(stockpiles, expand);\n\t\t//Expand/Collapse shown stockpiles in group\n\t\tif (Settings.get().getStockpileGroupSettings().isGroupExpanded(group)) {\n\t\t\ttry {\n\t\t\t\tseparatorList.getReadWriteLock().writeLock().lock();\n\t\t\t\tfor (int i = 0; i < separatorList.size(); i++) {\n\t\t\t\t\tObject object = separatorList.get(i);\n\t\t\t\t\tif (object instanceof SeparatorList.Separator<?>) {\n\t\t\t\t\t\tSeparatorList.Separator<?> separator = (SeparatorList.Separator<?>) object;\n\t\t\t\t\t\tStockpileItem currentItem = (StockpileItem) separator.first();\n\t\t\t\t\t\tif (currentItem == null) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (group.equals(currentItem.getGroup())) {\n\t\t\t\t\t\t\tif (expand) {\n\t\t\t\t\t\t\t\tseparator.setLimit(Integer.MAX_VALUE);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tseparator.setLimit(0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tseparatorList.getReadWriteLock().writeLock().unlock();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void removeGroupNoUpdate(List<Stockpile> removeStockpiles) {\n\t\tupdateGroups(null, removeStockpiles, Collections.emptyList(), false);\n\t}\n\n\tprivate void removeGroup(Stockpile stockpile) {\n\t\tremoveGroup(Collections.singletonList(stockpile));\n\t}\n\n\tprivate void removeGroup(List<Stockpile> removeStockpiles) {\n\t\tupdateGroups(null, removeStockpiles, Collections.emptyList());\n\t}\n\n\tprivate void setGroup(String group, Stockpile stockpile) {\n\t\tsetGroup(group, Collections.singletonList(stockpile));\n\t}\n\n\tprivate void setGroup(String group, List<Stockpile> addStockiples) {\n\t\tupdateGroups(group, Collections.emptyList(), addStockiples);\n\t}\n\n\tprivate void updateGroups(String group, List<Stockpile> removeStockpiles, List<Stockpile> addStockiples) {\n\t\tupdateGroups(group, removeStockpiles, addStockiples, true);\n\t}\n\n\tprivate void updateGroups(String group, List<Stockpile> removeStockpiles, List<Stockpile> addStockiples, boolean updateTable) {\n\t\t//Add StockpileItems\n\t\tList<StockpileItem> stockpileItems = new ArrayList<>();\n\t\t//Updated\n\t\tSettings.lock(\"Stockpile (Stockpile Group)\");\n\t\t//Add\n\t\tfor (Stockpile stockpile : addStockiples) {\n\t\t\tSettings.get().getStockpileGroupSettings().setGroup(stockpile, group);\n\t\t\tstockpileItems.addAll(stockpile.getItems());\n\t\t\tstockpileItems.addAll(stockpile.getSubpileTableItems());\n\t\t}\n\t\t//Remove\n\t\tfor (Stockpile stockpile : removeStockpiles) {\n\t\t\tSettings.get().getStockpileGroupSettings().removeGroup(stockpile);\n\t\t\tstockpileItems.addAll(stockpile.getItems());\n\t\t\tstockpileItems.addAll(stockpile.getSubpileTableItems());\n\t\t}\n\t\tSettings.unlock(\"Stockpile (Stockpile Group)\");\n\t\tif (updateTable) {\n\t\t\t//Lock Table\n\t\t\tbeforeUpdateData();\n\t\t\ttry {\n\t\t\t\teventList.getReadWriteLock().writeLock().lock();\n\t\t\t\teventList.removeAll(stockpileItems);\n\t\t\t\tenableGroupFirstUpdate();\n\t\t\t\teventList.addAll(stockpileItems);\n\t\t\t} finally {\n\t\t\t\teventList.getReadWriteLock().writeLock().unlock();\n\t\t\t}\n\t\t\t//Unlcok Table\n\t\t\tafterUpdateData();\n\t\t}\n\t}\n\n\tprivate void loadGroupStockpileExpandedState() {\n\t\ttry {\n\t\t\tseparatorList.getReadWriteLock().writeLock().lock();\n\t\t\tfor (int i = 0; i < separatorList.size(); i++) {\n\t\t\t\tObject object = separatorList.get(i);\n\t\t\t\tif (object instanceof SeparatorList.Separator<?>) {\n\t\t\t\t\tSeparatorList.Separator<?> separator = (SeparatorList.Separator<?>) object;\n\t\t\t\t\tStockpileItem currentItem = (StockpileItem) separator.first();\n\t\t\t\t\tif (Settings.get().getStockpileGroupSettings().isGroupExpanded(currentItem.getGroup())\n\t\t\t\t\t\t&& Settings.get().getStockpileGroupSettings().isStockpileExpanded(currentItem.getStockpile())) {\n\t\t\t\t\t\tseparator.setLimit(Integer.MAX_VALUE);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tseparator.setLimit(0);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tseparatorList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t}\n\n\tprotected static void enableGroupFirstUpdate() {\n\t\tupdateFirstStockpileGroup = true;\n\t}\n\n\tprivate void updateGroupFirst() {\n\t\tif (!updateFirstStockpileGroup) {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tMap<String, Stockpile> groups = new HashMap<>();\n\t\t\tseparatorList.getReadWriteLock().writeLock().lock();\n\t\t\tfor (int i = 0; i < separatorList.size(); i++) {\n\t\t\t\tObject object = separatorList.get(i);\n\t\t\t\tif (object instanceof SeparatorList.Separator<?>) {\n\t\t\t\t\tSeparatorList.Separator<?> separator = (SeparatorList.Separator<?>) object;\n\t\t\t\t\tStockpileItem stockpileItem = (StockpileItem) separator.first();\n\t\t\t\t\tif (stockpileItem == null) { // handle 'late' rendering calls after this separator is invalid\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tString group = stockpileItem.getGroup();\n\t\t\t\t\t//if (Settings.get().getStockpileGroupSettings().isGroupExpanded(group)\n\t\t\t\t\t//\t\t&& !group.isEmpty() && !groups.containsKey(group)) {\n\t\t\t\t\tif(!group.isEmpty() && !groups.containsKey(group)) {\n\t\t\t\t\t\tgroups.put(group, stockpileItem.getStockpile());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tSettings.get().getStockpileGroupSettings().setGroupFirst(groups);\n\t\t} finally {\n\t\t\tupdateFirstStockpileGroup = false;\n\t\t\tseparatorList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t}\n\n\tprivate String getGroupName(String title, boolean canOverwrite, String original, String last) {\n\t\tString group = (String)JOptionInput.showInputDialog(program.getMainWindow().getFrame(), TabsStockpile.get().groupAddName(), title, JOptionPane.PLAIN_MESSAGE, null, null, last);\n\t\tif (group == null) {\n\t\t\treturn null;\n\t\t}\n\t\tif (group.isEmpty()) {\n\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), TabsStockpile.get().groupAddEmpty(), title, JOptionPane.WARNING_MESSAGE);\n\t\t\treturn getGroupName(title, canOverwrite, original, null);\n\t\t}\n\t\tSet<String> groups = Settings.get().getStockpileGroupSettings().getGroups();\n\t\tif (groups.contains(group)) {\n\t\t\tif (canOverwrite) {\n\t\t\t\tint returnValue = JOptionPane.showConfirmDialog(program.getMainWindow().getFrame(), TabsStockpile.get().groupAddExist(), title, JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);\n\t\t\t\tif (returnValue == JOptionPane.OK_OPTION) {\n\t\t\t\t\treturn group;\n\t\t\t\t} else {\n\t\t\t\t\treturn getGroupName(title, canOverwrite, original, group);\n\t\t\t\t}\n\t\t\t} else if (original != null && !original.equals(group)) {\n\t\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), TabsStockpile.get().groupRenameExist(), title, JOptionPane.PLAIN_MESSAGE);\n\t\t\t\treturn getGroupName(title, canOverwrite, original, group);\n\t\t\t}\n\t\t}\n\t\treturn group;\n\t}\n\n\tprivate void removeStockpile(Stockpile stockpile) {\n\t\tremoveStockpiles(Collections.singletonList(stockpile));\n\t}\n\n\tprivate void removeStockpiles(List<Stockpile> stockpiles) {\n\t\tList<StockpileItem> stockpileItems = new ArrayList<>();\n\t\tfor (Stockpile stockpile : stockpiles) {\n\t\t\tstockpileItems.addAll(stockpile.getItems());\n\t\t}\n\t\t//Lock Table\n\t\tbeforeUpdateData();\n\t\t//Update list\n\t\ttry {\n\t\t\teventList.getReadWriteLock().writeLock().lock();\n\t\t\teventList.removeAll(stockpileItems);\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t\t//Unlcok Table\n\t\tafterUpdateData();\n\t}\n\n\tprivate void importEveXml() {\n\t\tjFileChooser.setSelectedFile(new File(\"\"));\n\t\tint value = jFileChooser.showOpenDialog(program.getMainWindow().getFrame());\n\t\tif (value != JCustomFileChooser.APPROVE_OPTION) {\n\t\t\treturn; //Cancel\n\t\t}\n\t\tMap<String, Map<Integer, Double>> fits = EveFittingReader.load(jFileChooser.getSelectedFile().getAbsolutePath());\n\t\tif (fits == null || fits.isEmpty()) {\n\t\t\treturn;\n\t\t}\n\t\tList<String> selectedFits;\n\t\tif (fits.size() > 1) { //Select fits to import\n\t\t\tselectedFits = fitsSelectionDialog.show(fits.keySet(), false);\n\t\t} else { //one or less, no reason to show selection dialog\n\t\t\tselectedFits = new ArrayList<>(fits.keySet());\n\t\t}\n\t\tif (selectedFits == null || selectedFits.isEmpty()) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tSet<String> stockpiles = new HashSet<>();\n\t\tfor (Stockpile stockpile : Settings.get().getStockpiles()) {\n\t\t\tstockpiles.add(stockpile.getName());\n\t\t}\n\t\tSet<String> existing = new HashSet<>();\n\t\tSet<String> open = new HashSet<>();\n\t\tfor (String fit : selectedFits) {\n\t\t\tif (stockpiles.contains(fit)) { //Exist\n\t\t\t\texisting.add(fit);\n\t\t\t} else {\n\t\t\t\topen.add(fit);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (open.size() > 1) {\n\t\t\tOptionEnum option = null;\n\t\t\ttemplate = null;\n\t\t\tfor (String fit : open) {\n\t\t\t\toption = importStockpileItems(fits.get(fit), option, options(ImportOptions.TEMPLATE, ImportOptions.NEW, ImportOptions.ADD), fit);\n\t\t\t}\n\t\t} else {\n\t\t\texisting.addAll(open);\n\t\t}\n\t\tOptionEnum option = null;\n\t\tfor (String fit : existing) {\n\t\t\toption = importStockpileItems(fits.get(fit), option, fit);\n\t\t}\n\t}\n\n\tprivate void importText() {\n\t\tTextImportType systemType = TextImportType.EVE_MULTIBUY;\n\t\ttry {\n\t\t\tsystemType = TextImportType.valueOf(Settings.get().getImportSettings(NAME, systemType));\n\t\t} catch (IllegalArgumentException ex) {\n\t\t\t//No problem, use default\n\t\t}\n\t\timportText(\"\", systemType);\n\t}\n\n\tprivate void importText(String text, TextImportType selected) {\n\t\ttextImport.importText(text, TextImportType.values(), selected, new TextImportHandler<TextImportType>() {\n\t\t\t@Override\n\t\t\tpublic void addItems(TextReturn<TextImportType> textReturn) {\n\t\t\t\tTextImportType importType = textReturn.getType();\n\t\t\t\tString importText = textReturn.getText();\n\t\t\t\tMap<Integer, Double> data = importType.importText(importText);\n\t\t\t\t//Validate Output\n\t\t\t\tif (data == null || data.isEmpty()) {\n\t\t\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), GuiShared.get().textInvalid(), GuiShared.get().textImport(), JOptionPane.PLAIN_MESSAGE);\n\t\t\t\t\timportText(importText, importType); //Again!\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t//Add items\n\t\t\t\timportStockpileItems(data, importType.getName());\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate OptionEnum importStockpileItems(Map<Integer, Double> data, String name) {\n\t\treturn importStockpileItems(data, null, options(ImportOptions.NEW, ImportOptions.ADD), name);\n\t}\n\n\tprivate OptionEnum importStockpileItems(Map<Integer, Double> data, OptionEnum option, String name) {\n\t\treturn importStockpileItems(data, option, options(ImportOptions.NEW, ImportOptions.ADD), name);\n\t}\n\n\tprivate OptionEnum importStockpileItems(Map<Integer, Double> data, OptionEnum option, List<OptionEnum> options, String name) {\n\t\treturn importOptions(data, option, 1, false, options, new StockpileImportAction<Map<Integer, Double>>() {\n\t\t\t@Override\n\t\t\tpublic String getName(Map<Integer, Double> data) {\n\t\t\t\treturn name;\n\t\t\t}\n\t\t\t@Override\n\t\t\tpublic boolean action(Map<Integer, Double> data, OptionEnum xmlOptions) {\n\t\t\t\tif (xmlOptions == ImportOptions.TEMPLATE) {\n\t\t\t\t\txmlOptions.setAll(true); //Always do this for all\n\t\t\t\t\t//Blueprint/Formula Options\n\t\t\t\t\tBpOptions bpOptions = JMenuStockpile.selectBpImportOptions(program, data.keySet(), false);\n\t\t\t\t\tif (bpOptions == null) {\n\t\t\t\t\t\treturn false; //Cancelled\n\t\t\t\t\t}\n\t\t\t\t\t//Create Template Stockpile\n\t\t\t\t\tif (template == null) {\n\t\t\t\t\t\ttemplate = stockpileDialog.showTemplate();\n\t\t\t\t\t}\n\t\t\t\t\tif (template == null) { //Dialog cancelled\n\t\t\t\t\t\treturn false; //Retry\n\t\t\t\t\t}\n\t\t\t\t\t//Create Stockpile from template\n\t\t\t\t\tStockpile stockpile = new Stockpile(name, template);\n\t\t\t\t\t//Create items\n\t\t\t\t\tList<StockpileItem> items = JMenuStockpile.toStockpileItems(program, bpOptions, stockpile, data.keySet(), data, Collections.emptyMap());\n\t\t\t\t\tif (items == null) {\n\t\t\t\t\t\treturn false; //Cancelled\n\t\t\t\t\t}\n\t\t\t\t\tSettings.lock(\"Stockpile (Import Items Template)\");\n\t\t\t\t\tfor (StockpileItem item : items) {\n\t\t\t\t\t\tstockpile.add(item);\n\t\t\t\t\t}\n\t\t\t\t\taddSettingStockpile(stockpile, true); //Add imported stockpile to Settings\n\t\t\t\t\tSettings.unlock(\"Stockpile (Import Items Template)\");\n\t\t\t\t\tprogram.saveSettings(\"Stockpile (Import Items Template)\");\n\t\t\t\t\t//Update UI\n\t\t\t\t\taddStockpile(stockpile); //Add imported stockpile to Settings\n\t\t\t\t} else if (xmlOptions == ImportOptions.NEW) {\n\t\t\t\t\t//Blueprint/Formula Options\n\t\t\t\t\tBpOptions bpOptions = JMenuStockpile.selectBpImportOptions(program, data.keySet(), false);\n\t\t\t\t\tif (bpOptions == null) {\n\t\t\t\t\t\treturn false; //Cancelled\n\t\t\t\t\t}\n\t\t\t\t\t//Create Stockpile\n\t\t\t\t\tStockpile stockpile = stockpileDialog.showAdd(name);\n\t\t\t\t\tif (stockpile == null) { //Dialog cancelled\n\t\t\t\t\t\treturn false; //Retry\n\t\t\t\t\t}\n\t\t\t\t\t//Create items\n\t\t\t\t\tList<StockpileItem> items = JMenuStockpile.toStockpileItems(program, bpOptions, stockpile, data.keySet(), data, Collections.emptyMap());\n\t\t\t\t\tif (items == null) {\n\t\t\t\t\t\treturn false; //Cancelled\n\t\t\t\t\t}\n\t\t\t\t\tSettings.lock(\"Stockpile (Import Items New)\");\n\t\t\t\t\tfor (StockpileItem item : items) {\n\t\t\t\t\t\tstockpile.add(item);\n\t\t\t\t\t}\n\t\t\t\t\tSettings.unlock(\"Stockpile (Import Items New)\");\n\t\t\t\t\tprogram.saveSettings(\"Stockpile (Import Items New)\");\n\t\t\t\t\t//Update stockpile data\n\t\t\t\t\taddStockpile(stockpile);\n\t\t\t\t\tscrollToSctockpile(stockpile);\n\t\t\t\t} else if (xmlOptions == ImportOptions.ADD) {\n\t\t\t\t\t//Select Stockpiles\n\t\t\t\t\tList<Stockpile> stockpiles = stockpileSelectionDialog.show(getShownStockpiles(), Settings.get().getStockpiles(), TabsStockpile.get().showHidden(), false);\n\t\t\t\t\tif (stockpiles == null) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t//Stand-in stockpile (will be replaced)\n\t\t\t\t\tStockpile stockpile = new Stockpile(\"\", 1L, new ArrayList<>(), 1.0, false);\n\t\t\t\t\t//Create items\n\t\t\t\t\tList<StockpileItem> items = JMenuStockpile.toStockpileItems(program, stockpile, data.keySet(), data, Collections.emptyMap(), false);\n\t\t\t\t\tif (items == null) {\n\t\t\t\t\t\treturn false; //Cancelled\n\t\t\t\t\t}\n\t\t\t\t\t//Merge Into\n\t\t\t\t\tfor (Stockpile existingStockpile : stockpiles) {\n\t\t\t\t\t\taddToStockpile(existingStockpile, items, true, false); //Merge imported stockpile items into existing stockpiles\n\t\t\t\t\t}\n\t\t\t\t\tprogram.saveSettings(\"Stockpile (Import Items Add)\");\n\t\t\t\t}\n\t\t\t\t//Skip - Do nothing\n\t\t\t\treturn true;\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate void importXml() {\n\t\tjFileChooser.setSelectedFile(new File(\"\"));\n\t\tint value = jFileChooser.showOpenDialog(program.getMainWindow().getFrame());\n\t\tif (value == JCustomFileChooser.APPROVE_OPTION) {\n\t\t\tList<Stockpile> stockpiles = SettingsReader.loadStockpile(jFileChooser.getSelectedFile().getAbsolutePath());\n\t\t\tif (stockpiles != null) {\n\t\t\t\timportStockpiles(stockpiles);\n\t\t\t} else {\n\t\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), TabsStockpile.get().importXmlFailedMsg(), TabsStockpile.get().importFailedTitle(), JOptionPane.WARNING_MESSAGE);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void importXmlText() {\n\t\tjTextDialog.setLineWrap(true);\n\t\tString importText = jTextDialog.importText();\n\t\tjTextDialog.setLineWrap(false);\n\t\tif (importText == null) {\n\t\t\treturn; //Cancel\n\t\t}\n\t\tList<Stockpile> stockpiles = StockpileReader.load(importText);\n\t\tif (stockpiles != null) {\n\t\t\timportStockpiles(stockpiles);\n\t\t} else {\n\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), TabsStockpile.get().importTextFailedMsg(), TabsStockpile.get().importFailedTitle(), JOptionPane.WARNING_MESSAGE);\n\t\t}\n\t}\n\n\tprivate void importStockpiles(List<Stockpile> stockpiles) {\n\t\tif (stockpiles == null) {\n\t\t\treturn;\n\t\t}\n\t\tstockpiles = stockpileSelectionDialog.show(stockpiles, false);\n\t\tif (stockpiles == null) {\n\t\t\treturn;\n\t\t}\n\t\tList<Stockpile> existing = new ArrayList<>();\n\t\tList<Stockpile> open = new ArrayList<>();\n\t\tfor (Stockpile stockpile : stockpiles) {\n\t\t\tif (Settings.get().getStockpiles().contains(stockpile)) { //Exist\n\t\t\t\texisting.add(stockpile);\n\t\t\t} else {\n\t\t\t\topen.add(stockpile);\n\t\t\t}\n\t\t}\n\t\tboolean save = importStockpiles(open, options(ImportOptions.KEEP, ImportOptions.NEW, ImportOptions.ADD, ImportOptions.SKIP));\n\t\tsave = importStockpiles(existing, options(ImportOptions.RENAME, ImportOptions.MERGE, ImportOptions.OVERWRITE, ImportOptions.ADD, ImportOptions.SKIP)) | save;\n\t\tif (save) {\n\t\t\tprogram.saveSettings(\"Stockpile (Import)\");\n\t\t}\n\t}\n\n\tprivate List<OptionEnum> options(OptionEnum... options) {\n\t\treturn Arrays.asList(options);\n\t}\n\n\tprivate boolean importStockpiles(List<Stockpile> stockpiles, List<OptionEnum> options) {\n\t\tboolean save = false;\n\t\tint count = stockpiles.size();\n\t\tOptionEnum option = null;\n\t\tfor (Stockpile stockpile : stockpiles) {\n\t\t\toption = importOptions(stockpile, option, count, true, options, new StockpileImportAction<Stockpile>() {\n\t\t\t\t@Override\n\t\t\t\tpublic String getName(Stockpile value) {\n\t\t\t\t\treturn value.getName();\n\t\t\t\t}\n\t\t\t\t@Override\n\t\t\t\tpublic boolean action(Stockpile value, OptionEnum xmlOptions) {\n\t\t\t\t\tif (xmlOptions == ImportOptions.KEEP) {\n\t\t\t\t\t\tSettings.lock(\"Stockpile (Import New)\");\n\t\t\t\t\t\taddSettingStockpile(value, true); //Add\n\t\t\t\t\t\tSettings.unlock(\"Stockpile (Import New)\");\n\t\t\t\t\t\t//Update UI\n\t\t\t\t\t\taddStockpile(value);\n\t\t\t\t\t} else if (xmlOptions == ImportOptions.RENAME || xmlOptions == ImportOptions.NEW) {\n\t\t\t\t\t\tStockpile returnRename = stockpileDialog.showRename(value); //Rename stockpile\n\t\t\t\t\t\tif (returnRename == null) { //Cancel\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t//Update UI\n\t\t\t\t\t\taddStockpile(returnRename);\n\t\t\t\t\t} else if (xmlOptions == ImportOptions.MERGE) {\n\t\t\t\t\t\tint index = Settings.get().getStockpiles().indexOf(value); //Get index of old Stockpile\n\t\t\t\t\t\tStockpile mergeStockpile = Settings.get().getStockpiles().get(index); //Get old stockpile\n\t\t\t\t\t\taddToStockpile(mergeStockpile, value.getItems(), true, true); //Merge old and imported stockpiles\n\t\t\t\t\t} else if (xmlOptions == ImportOptions.OVERWRITE) {\n\t\t\t\t\t\tSettings.lock(\"Stockpile (Import Overwrite)\");\n\t\t\t\t\t\t//Remove\n\t\t\t\t\t\tint index = Settings.get().getStockpiles().indexOf(value); //Get index of old Stockpile\n\t\t\t\t\t\tStockpile removeStockpile = Settings.get().getStockpiles().get(index); //Get old stockpile\n\t\t\t\t\t\tremoveStockpile(removeStockpile); //Remove old stockpile from the UI\n\t\t\t\t\t\tSettings.get().getStockpiles().remove(removeStockpile); //Remove old stockpile from the Settings\n\t\t\t\t\t\t//Add\n\t\t\t\t\t\taddSettingStockpile(value, true); //Add imported stockpile to Settings\n\t\t\t\t\t\tSettings.unlock(\"Stockpile (Import Overwrite)\");\n\t\t\t\t\t\t//Update UI\n\t\t\t\t\t\taddStockpile(value); //Add imported stockpile to Settings\n\t\t\t\t\t} else if (xmlOptions == ImportOptions.ADD) {\n\t\t\t\t\t\tList<Stockpile> stockpiles = stockpileSelectionDialog.show(getShownStockpiles(), Settings.get().getStockpiles(), TabsStockpile.get().showHidden(), false);\n\t\t\t\t\t\tif (stockpiles == null) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (Stockpile existingStockpile : stockpiles) {\n\t\t\t\t\t\t\taddToStockpile(existingStockpile, value.getItems(), true, false); //Merge imported stockpile items into existing stockpiles\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogram.saveSettings(\"Stockpile (Import Merge)\");\n\t\t\t\t\t}\n\t\t\t\t\t//Skip - Do nothing\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (option == ImportOptions.KEEP || option == ImportOptions.OVERWRITE || option == ImportOptions.ADD) {\n\t\t\t\tsave = true;\n\t\t\t}\n\t\t\tcount--;\n\t\t}\n\t\treturn save;\n\t}\n\n\tprivate <T> OptionEnum importOptions(T value, OptionEnum option, int count, boolean showAll, List<OptionEnum> options, StockpileImportAction<T> action) {\n\t\tif (option == null || !option.isAll()) { //Not decided - ask what to do\n\t\t\toption = stockpileImportDialog.show(action.getName(value),  TabsStockpile.get().importOptions(),  TabsStockpile.get().importOptionsAll(count), count > 1, showAll, options, option);\n\t\t}\n\t\tboolean ok = action.action(value, option);\n\t\tif (!ok) {\n\t\t\toption.setAll(false);\n\t\t\treturn importOptions(value, option, count, showAll, options, action); //Retry - if RENAME_ALL, ask again\n\t\t}\n\t\treturn option;\n\t}\n\n\tprivate List<Stockpile> getShownStockpiles() {\n\t\treturn getShownStockpiles(program);\n\t}\n\n\tpublic static List<Stockpile> getShownStockpiles(Program program) {\n\t\treturn getShownStockpiles(program.getProfileManager());\n\t}\n\n\tpublic static List<Stockpile> getShownStockpiles(ProfileManager profileManager) {\n\t\tList<Stockpile> shown = new ArrayList<>();\n\t\tfor (Stockpile stockpile : Settings.get().getStockpiles()) {\n\t\t\tif (profileManager.getStockpileIDs().isHidden(stockpile.getStockpileID())) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tshown.add(stockpile);\n\t\t}\n\t\treturn shown;\n\t}\n\n\tpublic static void addSettingStockpile(Stockpile stockpile, boolean sort) {\n\t\tSettings.get().getStockpiles().add(stockpile);\n\t\tif (sort) {\n\t\t\tsortSettingStockpile();\n\t\t}\n\t}\n\n\tpublic static void sortSettingStockpile() {\n\t\tCollections.sort(Settings.get().getStockpiles());\n\t}\n\n\tprivate void exportXml() {\n\t\tList<Stockpile> stockpiles = stockpileSelectionDialog.show(getShownStockpiles(), Settings.get().getStockpiles(), TabsStockpile.get().showHidden(), false);\n\t\tif (stockpiles != null) {\n\t\t\tjFileChooser.setSelectedFile(new File(\"\"));\n\t\t\tint value = jFileChooser.showSaveDialog(program.getMainWindow().getFrame());\n\t\t\tif (value == JCustomFileChooser.APPROVE_OPTION) {\n\t\t\t\tSettingsWriter.saveStockpiles(stockpiles, jFileChooser.getSelectedFile().getAbsolutePath());\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void exportText() {\n\t\tList<Stockpile> stockpiles = stockpileSelectionDialog.show(getShownStockpiles(), Settings.get().getStockpiles(), TabsStockpile.get().showHidden(), false);\n\t\tif (stockpiles != null) {\n\t\t\tString json = StockpileWriter.save(stockpiles);\n\t\t\tif (json != null) {\n\t\t\t\tjTextDialog.setLineWrap(true);\n\t\t\t\tjTextDialog.exportText(json);\n\t\t\t\tjTextDialog.setLineWrap(false);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate Stockpile getSelectedStockpile() {\n\t\tint index = jTable.getSelectedRow();\n\t\tif (index < 0 || index >= tableModel.getRowCount()) {\n\t\t\treturn null;\n\t\t}\n\t\tObject o = tableModel.getElementAt(index);\n\t\tif (o instanceof SeparatorList.Separator<?>) {\n\t\t\tSeparatorList.Separator<?> separator = (SeparatorList.Separator<?>) o;\n\t\t\tStockpileItem item = (StockpileItem) separator.first();\n\t\t\treturn item.getStockpile();\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate class StockpileTableMenu implements TableMenu<StockpileItem> {\n\t\t@Override\n\t\tpublic MenuData<StockpileItem> getMenuData() {\n\t\t\treturn new MenuData<>(selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getFilterMenu() {\n\t\t\treturn filterControl.getMenu(jTable, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getColumnMenu() {\n\t\t\treturn new JMenuColumns<>(program, tableFormat, tableModel, jTable, NAME);\n\t\t}\n\n\t\t@Override\n\t\tpublic void addInfoMenu(JPopupMenu jPopupMenu) {\n\t\t\tJMenuInfo.stockpileItem(jPopupMenu, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic void addToolMenu(JComponent jComponent) {\n\t\t\tList<StockpileItem> edit = new ArrayList<>();\n\t\t\tList<StockpileItem> delete = new ArrayList<>();\n\t\t\tList<StockpileItem> items = new ArrayList<>();\n\t\t\tArrayList<Object> selected = new ArrayList<>(selectionModel.getSelected());\n\t\t\tfor (Object object : selected) {\n\t\t\t\tif (object.getClass() == StockpileItem.class) {\n\t\t\t\t\tStockpileItem item = (StockpileItem) object;\n\t\t\t\t\tedit.add(item);\n\t\t\t\t\tdelete.add(item);\n\t\t\t\t\titems.add(item);\n\t\t\t\t} else if (object instanceof SubpileStock) {\n\t\t\t\t\tSubpileStock item = (SubpileStock) object;\n\t\t\t\t\tif (item.isEditable()) {\n\t\t\t\t\t\tedit.add(item);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tjComponent.add(new JStockpileItemMenu(StockpileTab.this, program, edit, delete, items));\n\t\t\tMenuManager.addSeparator(jComponent);\n\t\t}\n\t}\n\n\tprivate class ListenerClass implements ActionListener, ListEventListener<StockpileItem>, ColumnValueChangeListener {\n\t\t@Override\n\t\tpublic void listChanged(final ListEvent<StockpileItem> listChanges) {\n\t\t\tList<StockpileItem> items = EventListManager.safeList(filterList);\n\t\t\t//Remove StockpileTotal and SeparatorList.Separator\n\t\t\tfor (int i = 0; i < items.size(); i++) {\n\t\t\t\tObject object = items.get(i);\n\t\t\t\tif ((object instanceof SeparatorList.Separator) || (object instanceof StockpileTotal)) {\n\t\t\t\t\titems.remove(i);\n\t\t\t\t\ti--;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdouble volumnNow = 0;\n\t\t\tdouble volumnNeeded = 0;\n\t\t\tdouble valueNow = 0;\n\t\t\tdouble valueNeeded = 0;\n\n\t\t\tfor (StockpileItem item : items) {\n\t\t\t\tvolumnNow = volumnNow + item.getVolumeNow();\n\t\t\t\tif (item.getVolumeNeeded() < 0) { //Only add if negative\n\t\t\t\t\tvolumnNeeded = volumnNeeded + item.getVolumeNeeded();\n\t\t\t\t}\n\t\t\t\tvalueNow = valueNow + item.getValueNow();\n\t\t\t\tif (item.getValueNeeded() < 0) { //Only add if negative\n\t\t\t\t\tvalueNeeded = valueNeeded + item.getValueNeeded();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tjVolumeNow.setNumber(TabsStockpile.get().now(), volumnNow);\n\t\t\tjValueNow.setNumber(TabsStockpile.get().now(), valueNow);\n\t\t\tjVolumeNeeded.setNumber(TabsStockpile.get().needed(), volumnNeeded);\n\t\t\tjValueNeeded.setNumber(TabsStockpile.get().needed(), valueNeeded);\n\t\t}\n\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (StockpileCellAction.SHOPPING_LIST_SINGLE.name().equals(e.getActionCommand())) { //Shopping list single\n\t\t\t\tStockpile stockpile = getSelectedStockpile();\n\t\t\t\tif (stockpile != null) {\n\t\t\t\t\tstockpileShoppingListDialog.show(stockpile);\n\t\t\t\t}\n\t\t\t} else if (StockpileAction.SHOPPING_LIST_MULTI.name().equals(e.getActionCommand())) { //Shopping list multi\n\t\t\t\tList<Stockpile> stockpiles = stockpileSelectionDialog.show(getShownStockpiles(), Settings.get().getStockpiles(), TabsStockpile.get().showHidden(), false);\n\t\t\t\tif (stockpiles != null) {\n\t\t\t\t\tstockpileShoppingListDialog.show(stockpiles);\n\t\t\t\t}\n\t\t\t} else if (StockpileAction.SHOW_HIDE.name().equals(e.getActionCommand())) { //Shopping list multi\n\t\t\t\tList<Stockpile> selected = new ArrayList<>();\n\t\t\t\tSet<Long> all = new HashSet<>();\n\t\t\t\tfor (Stockpile stockpile : Settings.get().getStockpiles()) {\n\t\t\t\t\tall.add(stockpile.getStockpileID());\n\t\t\t\t\tif (program.getProfileManager().getStockpileIDs().isShown(stockpile.getStockpileID())) {\n\t\t\t\t\t\tselected.add(stockpile);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tList<Stockpile> stockpiles = stockpileSelectionDialog.show(Settings.get().getStockpiles(), selected, true);\n\t\t\t\tif (stockpiles == null) {\n\t\t\t\t\treturn; //Cancel\n\t\t\t\t}\n\t\t\t\tSet<Long> hidden = new HashSet<>(all);\n\t\t\t\tfor (Stockpile stockpile : stockpiles) {\n\t\t\t\t\thidden.remove(stockpile.getStockpileID());\n\t\t\t\t}\n\t\t\t\tSet<Long> oldData = program.getProfileManager().getStockpileIDs().getHidden();\n\t\t\t\tif (!oldData.equals(hidden)) {\n\t\t\t\t\t//Hide\n\t\t\t\t\tSet<Long> hide = new HashSet<>(hidden); //To be hidden\n\t\t\t\t\thide.removeAll(oldData); //Remove already hidden\n\t\t\t\t\t//Show\n\t\t\t\t\tSet<Long> show = new HashSet<>(oldData); //Currently hidden\n\t\t\t\t\tshow.removeAll(hidden); //Remove still hidden\n\t\t\t\t\t//Update data (must be done after making the removed and added lists)\n\t\t\t\t\tprogram.getProfileManager().getStockpileIDs().setHidden(hidden);\n\t\t\t\t\t//Update GUI\n\t\t\t\t\tfor (Stockpile stockpile : Settings.get().getStockpiles()) {\n\t\t\t\t\t\tlong stockpileID = stockpile.getStockpileID();\n\t\t\t\t\t\tif (hide.contains(stockpileID)) { //Hidden\n\t\t\t\t\t\t\tremoveItems(stockpile.getItems());\n\t\t\t\t\t\t} else if (show.contains(stockpileID)) { //Shown\n\t\t\t\t\t\t\taddStockpile(stockpile);\n\t\t\t\t\t\t} //Else: Not changed\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (StockpileAction.SUBPILE_TREE.name().equals(e.getActionCommand())) {\n\t\t\t\tList<StockpileItem> updated = new ArrayList<>();\n\t\t\t\tfor (Stockpile stockpile : getShownStockpiles()) {\n\t\t\t\t\tupdated.addAll(stockpile.getSubpileStocks());\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\teventList.getReadWriteLock().writeLock().lock();\n\t\t\t\t\tif (jShowSubpileTree.isSelected()) {\n\t\t\t\t\t\teventList.addAll(updated);\n\t\t\t\t\t} else {\n\t\t\t\t\t\teventList.removeAll(updated);\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\teventList.getReadWriteLock().writeLock().unlock();\n\t\t\t\t}\n\t\t\t\tSettings.lock(\"Show Subpile Tree\");\n\t\t\t\tSettings.get().setShowSubpileTree(jShowSubpileTree.isSelected());\n\t\t\t\tSettings.unlock(\"Show Subpile Tree\");\n\t\t\t\tprogram.saveSettings(\"Show Subpile Tree\");\n\t\t\t} else if (StockpileAction.IMPORT_TEXT.name().equals(e.getActionCommand())) { //Add stockpile (EFT Import)\n\t\t\t\timportText();\n\t\t\t} else if (StockpileAction.IMPORT_XML.name().equals(e.getActionCommand())) { //Add stockpile (Xml)\n\t\t\t\timportXml();\n\t\t\t} else if (StockpileAction.IMPORT_EVE_XML_FIT.name().equals(e.getActionCommand())) { //Add stockpile (Xml)\n\t\t\t\timportEveXml();\n\t\t\t} else if (StockpileAction.IMPORT_XML_TEXT.name().equals(e.getActionCommand())) { //Add stockpile (Xml)\n\t\t\t\timportXmlText();\n\t\t\t} else if (StockpileAction.EXPORT_XML.name().equals(e.getActionCommand())) { //Export XML\n\t\t\t\texportXml();\n\t\t\t} else if (StockpileAction.EXPORT_TEXT.name().equals(e.getActionCommand())) { //Export XML\n\t\t\t\texportText();\n\t\t\t} else if (StockpileAction.ADD_STOCKPILE.name().equals(e.getActionCommand())) { //Add stockpile\n\t\t\t\tStockpile stockpile = stockpileDialog.showAdd();\n\t\t\t\tif (stockpile != null) {\n\t\t\t\t\taddStockpile(stockpile);\n\t\t\t\t\tscrollToSctockpile(stockpile);\n\t\t\t\t}\n\t\t\t} else if (StockpileCellAction.EDIT_STOCKPILE.name().equals(e.getActionCommand())) { //Edit stockpile\n\t\t\t\tStockpile stockpile = getSelectedStockpile();\n\t\t\t\tif (stockpile != null) {\n\t\t\t\t\tboolean updated = stockpileDialog.showEdit(stockpile);\n\t\t\t\t\tif (updated) {\n\t\t\t\t\t\t//To tricker resort\n\t\t\t\t\t\tremoveStockpile(stockpile);\n\t\t\t\t\t\taddStockpile(stockpile);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (StockpileCellAction.CLONE_STOCKPILE.name().equals(e.getActionCommand())) { //Clone stockpile\n\t\t\t\tStockpile stockpile = getSelectedStockpile();\n\t\t\t\tif (stockpile != null) {\n\t\t\t\t\tStockpile cloneStockpile = stockpileDialog.showClone(stockpile);\n\t\t\t\t\tif (cloneStockpile != null) {\n\t\t\t\t\t\taddStockpile(cloneStockpile);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (StockpileCellAction.HIDE_STOCKPILE.name().equals(e.getActionCommand())) { //Hide stockpile\n\t\t\t\tStockpile stockpile = getSelectedStockpile();\n\t\t\t\tif (stockpile == null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tprogram.getProfileManager().getStockpileIDs().hide(stockpile.getStockpileID());\n\t\t\t\tremoveItems(stockpile.getItems());\n\t\t\t} else if (StockpileCellAction.DELETE_STOCKPILE.name().equals(e.getActionCommand())) { //Delete stockpile\n\t\t\t\tStockpile stockpile = getSelectedStockpile();\n\t\t\t\tif (stockpile != null) {\n\t\t\t\t\tint value = JOptionPane.showConfirmDialog(program.getMainWindow().getFrame(), stockpile.getName(), TabsStockpile.get().deleteStockpileTitle(), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);\n\t\t\t\t\tif (value == JOptionPane.OK_OPTION) {\n\t\t\t\t\t\tSettings.lock(\"Stockpile (Delete Stockpile)\");\n\t\t\t\t\t\t//Remove stockpile\n\t\t\t\t\t\tSettings.get().getStockpiles().remove(stockpile);\n\t\t\t\t\t\t//Remove Group\n\t\t\t\t\t\tSettings.get().getStockpileGroupSettings().removeGroup(stockpile);\n\t\t\t\t\t\tStockpileSeparatorTableCell.updateGroups(this);\n\t\t\t\t\t\t//Remove subpile links\n\t\t\t\t\t\tfor (Stockpile parentStockpile : stockpile.getSubpiles().keySet()) {\n\t\t\t\t\t\t\tparentStockpile.removeSubpileLink(stockpile);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstockpile.getSubpiles().clear(); //Remove all Subpiles\n\t\t\t\t\t\tupdateSubpile(stockpile); //Remove SubpileItems from Table\n\t\t\t\t\t\t//Remove deleted stockpile from all subpiles\n\t\t\t\t\t\tfor (Stockpile parentStockpile : stockpile.getSubpileLinks()) {\n\t\t\t\t\t\t\tparentStockpile.getSubpiles().remove(stockpile);\n\t\t\t\t\t\t\tupdateSubpile(parentStockpile);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tSettings.unlock(\"Stockpile (Delete Stockpile)\");\n\t\t\t\t\t\tprogram.saveSettings(\"Stockpile (Delete Stockpile)\");\n\t\t\t\t\t\tremoveStockpile(stockpile);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (StockpileAction.DELETE_STOCKPILE_MULTI.name().equals(e.getActionCommand())) { //Delete stockpiles\n\t\t\t\tList<Stockpile> stockpiles = stockpileSelectionDialog.show(getShownStockpiles(), Settings.get().getStockpiles(), TabsStockpile.get().showHidden(), false);\n\t\t\t\tif (stockpiles == null || stockpiles.isEmpty()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tString msg;\n\t\t\t\tif (stockpiles.size() > 1) {\n\t\t\t\t\tmsg = TabsStockpile.get().deleteStockpileMsg(stockpiles.size());\n\t\t\t\t} else {\n\t\t\t\t\tmsg = stockpiles.get(0).getName();\n\t\t\t\t}\n\t\t\t\tint value = JOptionPane.showConfirmDialog(program.getMainWindow().getFrame(), msg, TabsStockpile.get().deleteStockpileTitle(), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);\n\t\t\t\tif (value != JOptionPane.OK_OPTION) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t//Remove Groups\n\t\t\t\tremoveGroupNoUpdate(stockpiles);\n\t\t\t\t//Update Table Cell\n\t\t\t\tStockpileSeparatorTableCell.updateGroups(this);\n\t\t\t\tSettings.lock(\"Stockpile (Delete Stockpile)\");\n\t\t\t\tfor (Stockpile stockpile : stockpiles) {\n\t\t\t\t\t//Remove stockpile\n\t\t\t\t\tSettings.get().getStockpiles().remove(stockpile);\n\t\t\t\t\t//Remove subpile links\n\t\t\t\t\tfor (Stockpile parentStockpile : stockpile.getSubpiles().keySet()) {\n\t\t\t\t\t\tparentStockpile.removeSubpileLink(stockpile);\n\t\t\t\t\t}\n\t\t\t\t\tstockpile.getSubpiles().clear(); //Remove all Subpiles\n\t\t\t\t\tupdateSubpile(stockpile); //Remove SubpileItems from Table\n\t\t\t\t\t//Remove deleted stockpile from all subpiles\n\t\t\t\t\tfor (Stockpile parentStockpile : stockpile.getSubpileLinks()) {\n\t\t\t\t\t\tparentStockpile.getSubpiles().remove(stockpile);\n\t\t\t\t\t\tupdateSubpile(parentStockpile);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tSettings.unlock(\"Stockpile (Delete Stockpile)\");\n\t\t\t\t//Remove stockpiles from GUI\n\t\t\t\tremoveStockpiles(stockpiles);\n\t\t\t\tprogram.saveSettings(\"Stockpile (Delete Stockpile)\");\n\t\t\t\t\n\t\t\t} else if (StockpileCellAction.ADD_ITEM.name().equals(e.getActionCommand())) { //Add item\n\t\t\t\tStockpile stockpile = getSelectedStockpile();\n\t\t\t\tif (stockpile != null) {\n\t\t\t\t\tList<StockpileItem> stockpileItems = stockpileItemDialog.showAdd(stockpile);\n\t\t\t\t\tif (stockpileItems != null) { //Edit/Add/Update existing or cancel\n\t\t\t\t\t\taddToStockpile(stockpile, stockpileItems, false, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (StockpileAction.COLLAPSE_GROUPS.name().equals(e.getActionCommand())) {\n\t\t\t\texpandGroups(false, MATCH_ALL_GROUPS);\n\t\t\t} else if (StockpileAction.EXPAND_GROUPS.name().equals(e.getActionCommand())) {\n\t\t\t\texpandGroups(true, MATCH_ALL_GROUPS);\n\t\t\t} else if (StockpileAction.EDIT_GROUPS.name().equals(e.getActionCommand())) {\n\t\t\t\tSet<String> groups = Settings.get().getStockpileGroupSettings().getGroups();\n\t\t\t\tjAutoCompleteDialog.updateData(groups);\n\t\t\t\tString group = jAutoCompleteDialog.show();\n\t\t\t\tif (group == null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tList<Stockpile> oldStockpiles = Settings.get().getStockpileGroupSettings().getStockpiles(group);\n\t\t\t\tList<Stockpile> newStockpiles = stockpileSelectionDialog.show(getShownStockpiles(), oldStockpiles, Settings.get().getStockpiles(), TabsStockpile.get().showHidden(), true);\n\t\t\t\tif (newStockpiles == null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tList<Stockpile> added = new ArrayList<>(newStockpiles);\n\t\t\t\tadded.removeAll(oldStockpiles);\n\t\t\t\tList<Stockpile> removed = new ArrayList<>(oldStockpiles);\n\t\t\t\tremoved.removeAll(newStockpiles);\n\t\t\t\tupdateGroups(group, removed, added);\n\t\t\t\t//Update Table Cell\n\t\t\t\tStockpileSeparatorTableCell.updateGroups(this);\n\t\t\t\t//Save Settings\n\t\t\t\tprogram.saveSettings(\"Stockpile (Stockpile Edit Groups)\");\n\t\t\t} else if (StockpileCellAction.GROUP_RENAME.name().equals(e.getActionCommand())) {\n\t\t\t\tStockpile stockpile = getSelectedStockpile();\n\t\t\t\tif (stockpile == null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tString oldGroup = Settings.get().getStockpileGroupSettings().getGroup(stockpile);\n\t\t\t\tif (oldGroup == null || oldGroup.isEmpty()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tString newGroup = getGroupName(TabsStockpile.get().groupRenameTitle(), false, oldGroup, oldGroup);\n\t\t\t\tif (newGroup == null || newGroup.isEmpty() || newGroup.equals(oldGroup)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tList<Stockpile> stockpiles = Settings.get().getStockpileGroupSettings().getStockpiles(oldGroup);\n\t\t\t\t//Backup expanded\n\t\t\t\tboolean expanded = Settings.get().getStockpileGroupSettings().isGroupExpanded(oldGroup);\n\t\t\t\t//Update\n\t\t\t\tsetGroup(newGroup, stockpiles);\n\t\t\t\t//Update Table Cell\n\t\t\t\tStockpileSeparatorTableCell.updateGroups(this);\n\t\t\t\t//Save Settings\n\t\t\t\tprogram.saveSettings(\"Stockpile (Stockpile Rename Group)\");\n\t\t\t\t//Restore expanded\n\t\t\t\texpandGroups(expanded, new MatchGroup(newGroup));\n\t\t\t} else if (StockpileCellAction.GROUP_SHOPPING_LIST.name().equals(e.getActionCommand())) { //Collapse all\n\t\t\t\tStockpile stockpile = getSelectedStockpile();\n\t\t\t\tif (stockpile == null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tString group = stockpile.getGroup();\n\t\t\t\tif (group == null || group.isEmpty()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tList<Stockpile> stockpiles = Settings.get().getStockpileGroupSettings().getStockpiles(group);\n\t\t\t\tif (stockpiles == null || stockpiles.isEmpty()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tint returnValue = JOptionPane.showConfirmDialog(program.getMainWindow().getFrame(), TabsStockpile.get().groupShoppingListMsg(), TabsStockpile.get().groupShoppingListTitle(), JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE);\n\t\t\t\tif (returnValue == JOptionPane.YES_OPTION) {\n\t\t\t\t\tstockpileShoppingListDialog.show(stockpiles);\n\t\t\t\t} else {\n\t\t\t\t\tList<Stockpile> shownStockpiles = new ArrayList<>();\n\t\t\t\t\tfor (Stockpile s : stockpiles) {\n\t\t\t\t\t\tif (program.getProfileManager().getStockpileIDs().isShown(s.getStockpileID())) {\n\t\t\t\t\t\t\tshownStockpiles.add(s);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tstockpileShoppingListDialog.show(shownStockpiles);\n\t\t\t\t}\n\t\t\t} else if (StockpileAction.COLLAPSE.name().equals(e.getActionCommand())) { //Collapse all\n\t\t\t\tjTable.expandSeparators(false);\n\t\t\t\tSettings.get().getStockpileGroupSettings().setStockpileExpanded(Settings.get().getStockpiles(), false);\n\t\t\t} else if (StockpileAction.EXPAND.name().equals(e.getActionCommand())) { //Expand all\n\t\t\t\tjTable.expandSeparators(true);\n\t\t\t\tSettings.get().getStockpileGroupSettings().setStockpileExpanded(Settings.get().getStockpiles(), true);\n\t\t\t} else if (StockpileCellAction.GROUP_EXPAND.name().equals(e.getActionCommand())) {\n\t\t\t\texpandGroupStockpiles(true);\n\t\t\t} else if (StockpileCellAction.GROUP_COLLAPSE.name().equals(e.getActionCommand())) {\n\t\t\t\texpandGroupStockpiles(false);\n\t\t\t} else if (StockpileCellAction.GROUP_TOGGLE_COLLAPSE.name().equals(e.getActionCommand())) {\n\t\t\t\tStockpile stockpile = getSelectedStockpile();\n\t\t\t\tif (stockpile == null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tString group = Settings.get().getStockpileGroupSettings().getGroup(stockpile);\n\t\t\t\tboolean expand = !Settings.get().getStockpileGroupSettings().isGroupExpanded(group);\n\t\t\t\texpandGroups(expand, new MatchGroup(group));\n\t\t\t} else if (StockpileCellAction.GROUP_NEW.name().equals(e.getActionCommand())) {\n\t\t\t\tStockpile stockpile = getSelectedStockpile();\n\t\t\t\tif (stockpile == null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tString group = getGroupName(TabsStockpile.get().groupAddTitle(), true, null, null);\n\t\t\t\tif (group == null) {\n\t\t\t\t\treturn; //Cancelled\n\t\t\t\t}\n\t\t\t\tString oldGroup = Settings.get().getStockpileGroupSettings().getGroup(stockpile);\n\t\t\t\tif (oldGroup.equals(group)) {\n\t\t\t\t\treturn; //No change\n\t\t\t\t}\n\t\t\t\tsetGroup(group, stockpile); //Change or add group\n\t\t\t\t//Update Table Cell\n\t\t\t\tStockpileSeparatorTableCell.updateGroups(this);\n\t\t\t\t//Save Settings\n\t\t\t\tprogram.saveSettings(\"Stockpile (Stockpile New Group)\");\n\t\t\t} else if (StockpileCellAction.GROUP_CHANGE_ADD.name().equals(e.getActionCommand())) {\n\t\t\t\tStockpile stockpile = getSelectedStockpile();\n\t\t\t\tif (stockpile == null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tObject source = e.getSource();\n\t\t\t\tString newGroup;\n\t\t\t\tif (source instanceof JCheckBoxMenuItem) {\n\t\t\t\t\tnewGroup = ((JCheckBoxMenuItem)source).getText();\n\t\t\t\t} else {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tString oldGroup = Settings.get().getStockpileGroupSettings().getGroup(stockpile);\n\t\t\t\tif (newGroup.equals(oldGroup)) {\n\t\t\t\t\tremoveGroup(stockpile); //Remove from group\n\t\t\t\t} else {\n\t\t\t\t\tsetGroup(newGroup, stockpile); //Change or add group\n\t\t\t\t}\n\t\t\t\t//Update Table Cell\n\t\t\t\tStockpileSeparatorTableCell.updateGroups(this);\n\t\t\t\t//Save Settings\n\t\t\t\tprogram.saveSettings(\"Stockpile (Stockpile Add Group)\");\n\t\t\t} else if (StockpileCellAction.SUBPILES.name().equals(e.getActionCommand())) {\n\t\t\t\tStockpile stockpile = getSelectedStockpile();\n\t\t\t\tif (stockpile != null) {\n\t\t\t\t\tList<Stockpile> listData = new ArrayList<>();\n\t\t\t\t\tlistData.clear();\n\t\t\t\t\tlistData.addAll(Settings.get().getStockpiles());\n\t\t\t\t\tlistData.remove(stockpile); //Remove self\n\t\t\t\t\tremove(listData, stockpile, stockpile.getSubpileLinks()); //Remove interlinked\n\t\t\t\t\tCollections.sort(listData);\n\n\t\t\t\t\tList<Stockpile> stockpiles = stockpileSelectionDialog.show(listData, stockpile.getSubpiles().keySet(), true);\n\t\t\t\t\tif (stockpiles == null) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tSettings.lock(\"Stockpile (Updated Subpiles)\");\n\t\t\t\t\t//Remove old Links\n\t\t\t\t\tfor (Stockpile parentStockpile : stockpile.getSubpiles().keySet()) {\n\t\t\t\t\t\tparentStockpile.removeSubpileLink(stockpile);\n\t\t\t\t\t}\n\t\t\t\t\tMap<Stockpile, Double> old = new HashMap<>(stockpile.getSubpiles()); //Copy\n\t\t\t\t\tstockpile.getSubpiles().clear();\n\t\t\t\t\tfor (Stockpile parentStockpile : stockpiles) {\n\t\t\t\t\t\tDouble value = old.get(parentStockpile);\n\t\t\t\t\t\tif (value != null) {\n\t\t\t\t\t\t\tstockpile.getSubpiles().put(parentStockpile, value);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstockpile.getSubpiles().put(parentStockpile, 1.0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparentStockpile.addSubpileLink(stockpile);\n\t\t\t\t\t}\n\t\t\t\t\tSettings.unlock(\"Stockpile (Updated Subpiles)\");\n\t\t\t\t\tupdateStockpile(stockpile);\n\t\t\t\t\tupdateSubpile(stockpile);\n\t\t\t\t\tprogram.saveSettings(\"Stockpile (Updated subpiles)\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate void remove(List<Stockpile> listData, Stockpile parentLink, List<Stockpile> subpileLinks) {\n\t\t\tfor (Stockpile subpileLink : subpileLinks) {\n\t\t\t\tlistData.remove(subpileLink);\n\t\t\t\tremove(listData, parentLink, subpileLink.getSubpileLinks());\n\t\t\t}\n\t\t}\n\n\n\t\t@Override\n\t\tpublic void columnValueChanged() {\n\t\t\tprogram.saveSettings(\"Stockpile: Target changed\");\n\t\t}\n\t}\n\n\tpublic static class StockpileSeparatorComparator implements Comparator<StockpileItem> {\n\t\t@Override\n\t\tpublic int compare(final StockpileItem o1, final StockpileItem o2) {\n\t\t\treturn o1.getSeparator().compareTo(o2.getSeparator());\n\t\t}\n\t}\n\n\tpublic class StockpileFilterControl extends FilterControl<StockpileItem> {\n\n\t\tpublic StockpileFilterControl(EventList<StockpileItem> exportEventList) {\n\t\t\tsuper(program.getMainWindow().getFrame(),\n\t\t\t\t\tNAME,\n\t\t\t\t\ttableFormat,\n\t\t\t\t\teventList,\n\t\t\t\t\texportEventList,\n\t\t\t\t\tfilterList\n\t\t\t\t\t);\n\t\t}\n\n\t\t@Override\n\t\tprotected void afterFilter() {\n\t\t\tjTable.loadExpandedState();\n\t\t\t//Load Expanded State \n\t\t\tloadGroupStockpileExpandedState();\n\t\t}\n\n\t\t@Override\n\t\tprotected void beforeFilter() {\n\t\t\tenableGroupFirstUpdate();\n\t\t\tjTable.saveExpandedState();\n\t\t}\n\n\t\t@Override\n\t\tpublic void saveSettings(final String msg) {\n\t\t\tprogram.saveSettings(\"Stockpile Table: \" + msg); //Save Stockpile Filters and Export Settings\n\t\t}\n\t}\n\n\tpublic static class TotalComparator implements Comparator<StockpileItem> {\n\n\t\tprivate final Comparator<StockpileItem> comparator;\n\n\t\tpublic TotalComparator() {\n\t\t\tList<Comparator<StockpileItem>> comparators = new ArrayList<>();\n\t\t\tcomparators.add(new StockpileSeparatorComparator());\n\t\t\tcomparators.add(new InnerSubpileComparator());\n\t\t\tcomparators.add(new InnerTotalComparator());\n\t\t\tcomparator = GlazedLists.chainComparators(comparators);\n\t\t}\n\n\t\t@Override\n\t\tpublic int compare(final StockpileItem o1, final StockpileItem o2) {\n\t\t\treturn comparator.compare(o1, o2);\n\t\t}\n\n\t\tprivate static class InnerSubpileComparator implements Comparator<StockpileItem> {\n\t\t\t@Override\n\t\t\tpublic int compare(final StockpileItem o1, final StockpileItem o2) {\n\t\t\t\tif ((o1 instanceof SubpileItem) && (o2 instanceof SubpileItem)) {\n\t\t\t\t\tSubpileItem item1 = (SubpileItem) o1;\n\t\t\t\t\tSubpileItem item2 = (SubpileItem) o2;\n\t\t\t\t\treturn item1.getOrder().compareTo(item2.getOrder()); //Equal (both SubpileItem)\n\t\t\t\t} else if (o1 instanceof SubpileItem) {\n\t\t\t\t\treturn -1; //Before\n\t\t\t\t} else if (o2 instanceof SubpileItem) {\n\t\t\t\t\treturn 1; //After\n\t\t\t\t} else {\n\t\t\t\t\treturn 0; //Equal (not SubpileItem)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate static class InnerTotalComparator implements Comparator<StockpileItem> {\n\t\t\t@Override\n\t\t\tpublic int compare(final StockpileItem o1, final StockpileItem o2) {\n\t\t\t\tif ((o1 instanceof StockpileTotal) && (o2 instanceof StockpileTotal)) {\n\t\t\t\t\treturn 0; //Equal (both StockpileTotal)\n\t\t\t\t} else if (o1 instanceof StockpileTotal) {\n\t\t\t\t\treturn 1; //After\n\t\t\t\t} else if (o2 instanceof StockpileTotal) {\n\t\t\t\t\treturn -1; //Before\n\t\t\t\t} else {\n\t\t\t\t\treturn 0; //Equal (not StockpileTotal)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static interface StockpileImportAction<T> {\n\t\tpublic String getName(T value);\n\t\tpublic boolean action(T value, OptionEnum xmlOptions);\n\t}\n\n\tprivate static interface GroupMatching {\n\t\tpublic boolean matches(String group);\n\t}\n\n\tprivate static class MatchAllGroups implements GroupMatching {\n\t\t@Override\n\t\tpublic boolean matches(String group) {\n\t\t\treturn !group.isEmpty();\n\t\t}\n\t}\n\n\tprivate static class MatchGroup implements GroupMatching {\n\n\t\tprivate final String group;\n\n\t\tpublic MatchGroup(String group) {\n\t\t\tthis.group = group;\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean matches(String group) {\n\t\t\treturn this.group.equals(group);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/stockpile/StockpileTableFormat.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.tabs.stockpile;\n\nimport java.awt.Component;\nimport java.util.Comparator;\nimport net.nikr.eve.jeveasset.data.settings.tag.Tags;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Percent;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileItem;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileTotal;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.SubpileStock;\nimport net.nikr.eve.jeveasset.i18n.TabsStockpile;\n\n\npublic enum StockpileTableFormat implements EnumTableColumn<StockpileItem> {\n\tNAME(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnName();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getName();\n\t\t}\n\t},\n\tTAGS(Tags.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnTags();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getTags();\n\t\t}\n\t},\n\tGROUP(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnGroup();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getItem().getGroup();\n\t\t}\n\t},\n\tCATEGORY(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnCategory();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getItem().getCategory();\n\t\t}\n\t},\n\tSLOT(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnSlot();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getItem().getSlot();\n\t\t}\n\t},\n\tCHARGE_SIZE(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnChargeSize();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getItem().getChargeSize();\n\t\t}\n\t},\n\tMETA(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnMeta();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getMeta();\n\t\t}\n\t},\n\tCOUNT_MINIMUM(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnCountMinimum();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getCountMinimum();\n\t\t}\n\t\t@Override\n\t\tpublic boolean isColumnEditable(final Object baseObject) {\n\t\t\tif (baseObject instanceof StockpileItem) {\n\t\t\t\treturn ((StockpileItem)baseObject).isEditable();\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\t@Override\n\t\tpublic boolean setColumnValue(final Object baseObject, final Object editedValue) {\n\t\t\tif ((editedValue instanceof Double) && (baseObject instanceof StockpileItem)) {\n\t\t\t\tStockpileItem item = (StockpileItem) baseObject;\n\t\t\t\tdouble before = item.getCountMinimum();\n\t\t\t\tdouble after = (Double) editedValue;\n\t\t\t\titem.setCountMinimum(after);\n\t\t\t\treturn before != after;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t},\n\tCOUNT_MINIMUM_MULTIPLIED(Long.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnCountMinimumMultiplied();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getCountMinimumMultiplied();\n\t\t}\n\t},\n\tCOUNT_NOW(Long.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnCountNow();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getCountNow();\n\t\t}\n\t},\n\tCOUNT_NEEDED(Long.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnCountNeeded();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getCountNeeded();\n\t\t}\n\t},\n\tPERCENT_NEEDED(Percent.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnPercentNeeded();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn Percent.create(from.getPercentNeeded());\n\t\t}\n\t},\n\tCOUNT_NOW_INVENTORY(Long.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnCountNowInventory();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getInventoryCountNow();\n\t\t}\n\t},\n\tCOUNT_NOW_BUY_ORDERS(Long.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnCountNowBuyOrders();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getBuyOrdersCountNow();\n\t\t}\n\t},\n\tCOUNT_NOW_SELL_ORDERS(Long.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnCountNowSellOrders();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getSellOrdersCountNow();\n\t\t}\n\t},\n\tCOUNT_NOW_BUY_TRANSACTIONS(Long.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnCountNowBuyTransactions();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getBuyTransactionsCountNow();\n\t\t}\n\t},\n\tCOUNT_NOW_SELL_TRANSACTIONS(Long.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnCountNowSellTransactions();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getSellTransactionsCountNow();\n\t\t}\n\t},\n\tCOUNT_NOW_JOBS(Long.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnCountNowJobs();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getJobsCountNow();\n\t\t}\n\t},\n\tCOUNT_NOW_BUYING_CONTRACTS(Long.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnCountNowBuyingContracts();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getBuyingContractsCountNow();\n\t\t}\n\t},\n\tCOUNT_NOW_BOUGHT_CONTRACTS(Long.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnCountNowBoughtContracts();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getBoughtContractsCountNow();\n\t\t}\n\t},\n\tCOUNT_NOW_SELLING_CONTRACTS(Long.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnCountNowSellingContracts();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getSellingContractsCountNow();\n\t\t}\n\t},\n\tCOUNT_NOW_SOLD_CONTRACTS(Long.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnCountNowSoldContracts();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getSoldContractsCountNow();\n\t\t}\n\t},\n\tPRICE(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnPrice();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsStockpile.get().columnPriceToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getDynamicPrice();\n\t\t}\n\t},\n\tPRICE_SELL_MIN(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnPriceSellMin();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsStockpile.get().columnPriceSellMinToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getPriceSellMin();\n\t\t}\n\t},\n\tPRICE_BUY_MAX(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnPriceBuyMax();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsStockpile.get().columnPriceSellMinToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getPriceBuyMax();\n\t\t}\n\t},\n\tPRICE_TRANSACTION_AVERAGE(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnPriceTransactionAverage();\n\t\t}\n\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsStockpile.get().columnPriceTransactionAverageToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getTransactionAveragePrice();\n\t\t}\n\t},\n\tEVE_UI(Component.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnEveUi();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsStockpile.get().columnEveUiToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic boolean isColumnEditable(Object baseObject) {\n\t\t\tif (baseObject instanceof StockpileTotal || baseObject instanceof SubpileStock) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getButton();\n\t\t}\n\t},\n\tVALUE_NOW(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnValueNow();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getValueNow();\n\t\t}\n\t},\n\tVALUE_NEEDED(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnValueNeeded();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getValueNeeded();\n\t\t}\n\t},\n\tVOLUME_NOW(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnVolumeNow();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getVolumeNow();\n\t\t}\n\t},\n\tVOLUME_NEEDED(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsStockpile.get().columnVolumeNeeded();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final StockpileItem from) {\n\t\t\treturn from.getVolumeNeeded();\n\t\t}\n\t};\n\n\tprivate final Class<?> type;\n\tprivate final Comparator<?> comparator;\n\n\tprivate StockpileTableFormat(final Class<?> type) {\n\t\tthis.type = type;\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\n\t}\n\t@Override\n\tpublic Class<?> getType() {\n\t\treturn type;\n\t}\n\t@Override\n\tpublic Comparator<?> getComparator() {\n\t\treturn comparator;\n\t}\n\t@Override\n\tpublic String toString() {\n\t\treturn getColumnName();\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/tracker/JTrackerEditDialog.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.tracker;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.awt.event.FocusEvent;\r\nimport java.awt.event.FocusListener;\r\nimport java.text.ParseException;\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport java.util.TreeMap;\r\nimport java.util.TreeSet;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JComponent;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JOptionPane;\r\nimport javax.swing.JTextField;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\r\nimport net.nikr.eve.jeveasset.data.settings.TrackerData;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\nimport net.nikr.eve.jeveasset.gui.shared.JOptionInput;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JSelectionDialog;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.AssetValue;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.Value;\r\nimport net.nikr.eve.jeveasset.i18n.TabsTracker;\r\n\r\n\r\npublic class JTrackerEditDialog extends JDialogCentered {\r\n\r\n\tprivate enum TrackerEditAction {\r\n\t\tOK,\r\n\t\tCANCEL,\r\n\t\tEDIT_WALLET,\r\n\t\tEDIT_ASSETS\r\n\t}\r\n\r\n\tprivate static final int FIELD_WIDTH = 140;\r\n\r\n\t//GUI\r\n\tprivate final JTextField jDate;\r\n\tprivate final JTextField jWalletBalance;\r\n\tprivate final JTextField jImplants;\r\n\tprivate final JButton jWalletBalanceFilterable;\r\n\tprivate final JTextField jAssets;\r\n\tprivate final JButton jAssetsFilterable;\r\n\tprivate final JTextField jSellOrders;\r\n\tprivate final JTextField jEscrows;\r\n\tprivate final JTextField jEscrowsToCover;\r\n\tprivate final JTextField jManufacturing;\r\n\tprivate final JTextField jContractCollateral;\r\n\tprivate final JTextField jContractValue;\r\n\tprivate final JTextField jSkillPoints;\r\n\tprivate final JButton jOK;\r\n\tprivate final JSelectionDialog<String> jSelectionDialog;\r\n\r\n\tprivate final List<FilterUpdate> balanceUpdates = new ArrayList<>();\r\n\tprivate final List<FilterUpdate> assetUpdates = new ArrayList<>();\r\n\r\n\t//Data\r\n\tprivate Value value;\r\n\tprivate boolean update;\r\n\r\n\tpublic JTrackerEditDialog(Program program) {\r\n\t\tsuper(program, TabsTracker.get().edit(), Images.TOOL_TRACKER.getImage());\r\n\r\n\t\tListenerClass listener = new ListenerClass();\r\n\r\n\t\tjSelectionDialog = new JSelectionDialog<>(program);\r\n\r\n\t\tJLabel jDateLabel = new JLabel(TabsTracker.get().date());\r\n\t\tjDate = new JTextField();\r\n\t\tjDate.setEditable(false);\r\n\t\tjDate.setEnabled(false);\r\n\t\tjDate.setHorizontalAlignment(JLabel.RIGHT);\r\n\r\n\t\tJLabel jWalletBalanceLabel = new JLabel(TabsTracker.get().walletBalance());\r\n\t\tjWalletBalance = new JTextField();\r\n\t\tjWalletBalance.setHorizontalAlignment(JTextField.RIGHT);\r\n\t\tjWalletBalance.addFocusListener(listener);\r\n\r\n\t\tJLabel jImplantsLabel = new JLabel(TabsTracker.get().implants());\r\n\t\tjImplants = new JTextField();\r\n\t\tjImplants.setHorizontalAlignment(JTextField.RIGHT);\r\n\t\tjImplants.addFocusListener(listener);\r\n\r\n\t\tjWalletBalanceFilterable = new JButton(Images.EDIT_EDIT.getIcon());\r\n\t\tjWalletBalanceFilterable.setActionCommand(TrackerEditAction.EDIT_WALLET.name());\r\n\t\tjWalletBalanceFilterable.addActionListener(listener);\r\n\r\n\t\tJLabel jAssetsLabel = new JLabel(TabsTracker.get().assets());\r\n\t\tjAssets = new JTextField();\r\n\t\tjAssets.setHorizontalAlignment(JTextField.RIGHT);\r\n\t\tjAssets.addFocusListener(listener);\r\n\r\n\t\tjAssetsFilterable = new JButton(Images.EDIT_EDIT.getIcon());\r\n\t\tjAssetsFilterable.setActionCommand(TrackerEditAction.EDIT_ASSETS.name());\r\n\t\tjAssetsFilterable.addActionListener(listener);\r\n\r\n\t\tJLabel jSellOrdersLabel = new JLabel(TabsTracker.get().sellOrders());\r\n\t\tjSellOrders = new JTextField();\r\n\t\tjSellOrders.setHorizontalAlignment(JTextField.RIGHT);\r\n\t\tjSellOrders.addFocusListener(listener);\r\n\r\n\t\tJLabel jEscrowsLabel = new JLabel(TabsTracker.get().escrows());\r\n\t\tjEscrows = new JTextField();\r\n\t\tjEscrows.setHorizontalAlignment(JTextField.RIGHT);\r\n\t\tjEscrows.addFocusListener(listener);\r\n\r\n\t\tJLabel jEscrowsToCoverLabel = new JLabel(TabsTracker.get().escrowsToCover());\r\n\t\tjEscrowsToCover = new JTextField();\r\n\t\tjEscrowsToCover.setHorizontalAlignment(JTextField.RIGHT);\r\n\t\tjEscrowsToCover.addFocusListener(listener);\r\n\r\n\t\tJLabel jManufacturingLabel = new JLabel(TabsTracker.get().manufacturing());\r\n\t\tjManufacturing = new JTextField();\r\n\t\tjManufacturing.setHorizontalAlignment(JTextField.RIGHT);\r\n\t\tjManufacturing.addFocusListener(listener);\r\n\r\n\t\tJLabel jContractCollateralLabel = new JLabel(TabsTracker.get().contractCollateral());\r\n\t\tjContractCollateral = new JTextField();\r\n\t\tjContractCollateral.setHorizontalAlignment(JTextField.RIGHT);\r\n\t\tjContractCollateral.addFocusListener(listener);\r\n\r\n\t\tJLabel jContractValueLabel = new JLabel(TabsTracker.get().contractValue());\r\n\t\tjContractValue = new JTextField();\r\n\t\tjContractValue.setHorizontalAlignment(JTextField.RIGHT);\r\n\t\tjContractValue.addFocusListener(listener);\r\n\r\n\t\tJLabel jSkillPointValueLabel = new JLabel(TabsTracker.get().skillPoints());\r\n\t\tjSkillPoints = new JTextField();\r\n\t\tjSkillPoints.setHorizontalAlignment(JTextField.RIGHT);\r\n\t\tjSkillPoints.addFocusListener(listener);\r\n\r\n\t\tjOK = new JButton(TabsTracker.get().ok());\r\n\t\tjOK.setActionCommand(TrackerEditAction.OK.name());\r\n\t\tjOK.addActionListener(listener);\r\n\r\n\t\tJButton jCancel = new JButton(TabsTracker.get().cancel());\r\n\t\tjCancel.setActionCommand(TrackerEditAction.CANCEL.name());\r\n\t\tjCancel.addActionListener(listener);\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.CENTER)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t.addComponent(jDateLabel)\r\n\t\t\t\t\t\t.addComponent(jWalletBalanceLabel)\r\n\t\t\t\t\t\t.addComponent(jAssetsLabel)\r\n\t\t\t\t\t\t.addComponent(jImplantsLabel)\r\n\t\t\t\t\t\t.addComponent(jSellOrdersLabel)\r\n\t\t\t\t\t\t.addComponent(jEscrowsLabel)\r\n\t\t\t\t\t\t.addComponent(jEscrowsToCoverLabel)\r\n\t\t\t\t\t\t.addComponent(jManufacturingLabel)\r\n\t\t\t\t\t\t.addComponent(jContractCollateralLabel)\r\n\t\t\t\t\t\t.addComponent(jContractValueLabel)\r\n\t\t\t\t\t\t.addComponent(jSkillPointValueLabel)\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t.addComponent(jDate, FIELD_WIDTH, FIELD_WIDTH, FIELD_WIDTH)\r\n\t\t\t\t\t\t.addComponent(jWalletBalance, FIELD_WIDTH, FIELD_WIDTH, FIELD_WIDTH)\r\n\t\t\t\t\t\t.addComponent(jAssets, FIELD_WIDTH, FIELD_WIDTH, FIELD_WIDTH)\r\n\t\t\t\t\t\t.addComponent(jImplants, FIELD_WIDTH, FIELD_WIDTH, FIELD_WIDTH)\r\n\t\t\t\t\t\t.addComponent(jSellOrders, FIELD_WIDTH, FIELD_WIDTH, FIELD_WIDTH)\r\n\t\t\t\t\t\t.addComponent(jEscrows, FIELD_WIDTH, FIELD_WIDTH, FIELD_WIDTH)\r\n\t\t\t\t\t\t.addComponent(jEscrowsToCover, FIELD_WIDTH, FIELD_WIDTH, FIELD_WIDTH)\r\n\t\t\t\t\t\t.addComponent(jManufacturing, FIELD_WIDTH, FIELD_WIDTH, FIELD_WIDTH)\r\n\t\t\t\t\t\t.addComponent(jContractCollateral, FIELD_WIDTH, FIELD_WIDTH, FIELD_WIDTH)\r\n\t\t\t\t\t\t.addComponent(jContractValue, FIELD_WIDTH, FIELD_WIDTH, FIELD_WIDTH)\r\n\t\t\t\t\t\t.addComponent(jSkillPoints, FIELD_WIDTH, FIELD_WIDTH, FIELD_WIDTH)\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t.addComponent(jWalletBalanceFilterable)\r\n\t\t\t\t\t\t.addComponent(jAssetsFilterable)\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addGap(0, 0, Integer.MAX_VALUE)\r\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jDateLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jDate, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jWalletBalanceLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jWalletBalance, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jWalletBalanceFilterable, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jAssetsLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jAssets, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jAssetsFilterable, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jImplantsLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jImplants, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jSellOrdersLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jSellOrders, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jEscrowsLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jEscrows, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jEscrowsToCoverLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jEscrowsToCover, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jManufacturingLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jManufacturing, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jContractCollateralLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jContractCollateral, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jContractValueLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jContractValue, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jSkillPointValueLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jSkillPoints, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\tpublic boolean showEdit(Value value) {\r\n\t\tthis.value = value;\r\n\t\tupdate = false;\r\n\t\tbalanceUpdates.clear();\r\n\t\tassetUpdates.clear();\r\n\t\tif (value.getBalanceFilter().size() < 2) {\r\n\t\t\tjWalletBalance.setEnabled(true);\r\n\t\t\tjWalletBalanceFilterable.setVisible(false);\r\n\t\t} else {\r\n\t\t\tjWalletBalance.setEnabled(false);\r\n\t\t\tjWalletBalanceFilterable.setVisible(true);\r\n\t\t}\r\n\t\tif (value.getAssetsFilter().size() < 2) {\r\n\t\t\tjAssets.setEnabled(true);\r\n\t\t\tjAssetsFilterable.setVisible(false);\r\n\t\t} else {\r\n\t\t\tjAssets.setEnabled(false);\r\n\t\t\tjAssetsFilterable.setVisible(true);\r\n\t\t}\r\n\t\tjWalletBalance.setText(format(value.getBalanceTotal()));\r\n\t\tjAssets.setText(format(value.getAssetsTotal()));\r\n\t\tjImplants.setText(format(value.getImplants()));\r\n\t\tjSellOrders.setText(format(value.getSellOrders()));\r\n\t\tjEscrows.setText(format(value.getEscrows()));\r\n\t\tjEscrowsToCover.setText(format(value.getEscrowsToCover()));\r\n\t\tjManufacturing.setText(format(value.getManufacturing()));\r\n\t\tjContractCollateral.setText(format(value.getContractCollateral()));\r\n\t\tjContractValue.setText(format(value.getContractValue()));\r\n\t\tjSkillPoints.setText(format(value.getSkillPoints()));\r\n\t\tjDate.setText(format(value.getDate()));\r\n\t\tsetVisible(true);\r\n\t\treturn update;\r\n\t}\r\n\r\n\tprivate String format(double d) {\r\n\t\treturn Formatter.longFormat(d);\r\n\t}\r\n\r\n\tprivate String format(Date d) {\r\n\t\treturn Formatter.columnDate(d);\r\n\t}\r\n\r\n\tprivate double parse(String s) throws ParseException {\r\n\t\treturn Formatter.longParse(s);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JComponent getDefaultFocus() {\r\n\t\treturn jWalletBalance;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JButton getDefaultButton() {\r\n\t\treturn jOK;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void windowShown() { }\r\n\r\n\t@Override\r\n\tprotected void save() {\r\n\t\ttry {\r\n\t\t\tdouble walletBalanc = parse(jWalletBalance.getText());\r\n\t\t\tdouble assets = parse(jAssets.getText());\r\n\t\t\tdouble implants = parse(jImplants.getText());\r\n\t\t\tdouble sellOrders = parse(jSellOrders.getText());\r\n\t\t\tdouble escrows = parse(jEscrows.getText());\r\n\t\t\tdouble escrowsToCover = parse(jEscrowsToCover.getText());\r\n\t\t\tdouble manufacturing = parse(jManufacturing.getText());\r\n\t\t\tdouble contractCollateral = parse(jContractCollateral.getText());\r\n\t\t\tdouble contractValue = parse(jContractValue.getText());\r\n\t\t\tdouble skillPointValue = parse(jSkillPoints.getText());\r\n\t\t\ttry {\r\n\t\t\t\tTrackerData.writeLock();\r\n\t\t\t\tif (value.getBalanceFilter().isEmpty()) {\r\n\t\t\t\t\tvalue.setBalanceTotal(walletBalanc);\r\n\t\t\t\t} else if (value.getBalanceFilter().size() == 1) {\r\n\t\t\t\t\tfor (Map.Entry<String, Double> entry : value.getBalanceFilter().entrySet()) {\r\n\t\t\t\t\t\t//Just done once...\r\n\t\t\t\t\t\tvalue.removeBalance(entry.getKey()); //Remove old value\r\n\t\t\t\t\t\tvalue.addBalance(entry.getKey(), walletBalanc); //Add new value\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfor (FilterUpdate filterUpdate : balanceUpdates) {\r\n\t\t\t\t\t\tvalue.removeBalance(filterUpdate.getKey());\r\n\t\t\t\t\t\tvalue.addBalance(filterUpdate.getKey(), filterUpdate.getValue());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (value.getAssetsFilter().isEmpty()) {\r\n\t\t\t\t\tvalue.setAssetsTotal(assets);\r\n\t\t\t\t} else if (value.getAssetsFilter().size() == 1) {\r\n\t\t\t\t\tfor (Map.Entry<AssetValue, Double> entry : value.getAssetsFilter().entrySet()) {\r\n\t\t\t\t\t\t//Just done once...\r\n\t\t\t\t\t\tvalue.removeAssets(entry.getKey()); //Remove old value\r\n\t\t\t\t\t\tvalue.addAssets(entry.getKey(), assets); //Add new value\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfor (FilterUpdate filterUpdate : assetUpdates) {\r\n\t\t\t\t\t\tAssetValue assetValue = AssetValue.create(filterUpdate.getKey());\r\n\t\t\t\t\t\tvalue.removeAssets(assetValue);\r\n\t\t\t\t\t\tvalue.addAssets(assetValue, filterUpdate.getValue());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tvalue.setImplants(implants);\r\n\t\t\t\tvalue.setSellOrders(sellOrders);\r\n\t\t\t\tvalue.setEscrows(escrows);\r\n\t\t\t\tvalue.setEscrowsToCover(escrowsToCover);\r\n\t\t\t\tvalue.setManufacturing(manufacturing);\r\n\t\t\t\tvalue.setContractCollateral(contractCollateral);\r\n\t\t\t\tvalue.setContractValue(contractValue);\r\n\t\t\t\tvalue.setSkillPoints((long)skillPointValue);\r\n\t\t\t} finally {\r\n\t\t\t\tTrackerData.writeUnlock();\r\n\t\t\t}\r\n\t\t\tTrackerData.save(\"Edited\");\r\n\t\t\tupdate = true;\r\n\t\t\tsetVisible(false);\r\n\t\t} catch (ParseException ex) {\r\n\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), TabsTracker.get().invalid(), TabsTracker.get().error(), JOptionPane.ERROR_MESSAGE);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Double getValue(Double balance) {\r\n\t\tString balanceReturn = JOptionInput.showInputDialog(getDialog(), TabsTracker.get().enterNewValue(), format(balance));\r\n\t\tif (balanceReturn == null) {\r\n\t\t\treturn null; //Cancel\r\n\t\t}\r\n\t\ttry {\r\n\t\t\treturn parse(balanceReturn);\r\n\t\t} catch (ParseException ex) {\r\n\t\t\tJOptionPane.showMessageDialog(getDialog(), TabsTracker.get().invalidNumberMsg(), TabsTracker.get().invalidNumberTitle(), JOptionPane.WARNING_MESSAGE);\r\n\t\t\treturn getValue(balance);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class ListenerClass implements ActionListener, FocusListener {\r\n\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\tif (TrackerEditAction.OK.name().equals(e.getActionCommand())) {\r\n\t\t\t\tsave();\r\n\t\t\t} else if (TrackerEditAction.CANCEL.name().equals(e.getActionCommand())) {\r\n\t\t\t\tsetVisible(false);\r\n\t\t\t} else if (TrackerEditAction.EDIT_WALLET.name().equals(e.getActionCommand())) {\r\n\t\t\t\t//Create values for selection dialog\r\n\t\t\t\tSet<String> ids = new TreeSet<>();\r\n\t\t\t\tfor (String id : value.getBalanceFilter().keySet()) {\r\n\t\t\t\t\tids.add(TabsTracker.get().division(id));\r\n\t\t\t\t}\r\n\t\t\t\t//Select Division\r\n\t\t\t\tString returnValue = jSelectionDialog.show(TabsTracker.get().selectDivision(), ids);\r\n\t\t\t\tif (returnValue == null) {\r\n\t\t\t\t\treturn; //Cancel\r\n\t\t\t\t}\r\n\t\t\t\tDouble balance = null;\r\n\t\t\t\tString key = null;\r\n\t\t\t\t//Match return value with key and balance\r\n\t\t\t\tfor (Map.Entry<String, Double> entry : value.getBalanceFilter().entrySet()) {\r\n\t\t\t\t\tif (TabsTracker.get().division(entry.getKey()).equals(returnValue)) {\r\n\t\t\t\t\t\tbalance = entry.getValue();\r\n\t\t\t\t\t\tkey = entry.getKey();\r\n\t\t\t\t\t\tbreak; //Item found\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (balance != null) { //Item found\r\n\t\t\t\t\tbalance = getValue(balance); //Get new value\r\n\t\t\t\t\tif (balance != null) { //Update number\r\n\t\t\t\t\t\tbalanceUpdates.add(new FilterUpdate(key, balance)); //Add update to queue (will only be executed if this dialog closed by pressing OK)\r\n\r\n\t\t\t\t\t\t//Update displayed total - only a GUI thing, the textfield is never used when getBalanceFilter is not empty\r\n\t\t\t\t\t\tMap<String, Double> map = new HashMap<>(value.getBalanceFilter());\r\n\t\t\t\t\t\tfor (FilterUpdate filterUpdate : balanceUpdates) {\r\n\t\t\t\t\t\t\tmap.put(filterUpdate.getKey(), filterUpdate.getValue());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tdouble total = 0;\r\n\t\t\t\t\t\tfor (double d : map.values()) {\r\n\t\t\t\t\t\t\ttotal = total + d;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tjWalletBalance.setText(format(total));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (TrackerEditAction.EDIT_ASSETS.name().equals(e.getActionCommand())) {\r\n\t\t\t\t//Create values for selection dialog\r\n\t\t\t\tMap<String, Set<String>> values = new TreeMap<>();\r\n\t\t\t\tfor (AssetValue assetValue : value.getAssetsFilter().keySet()) {\r\n\t\t\t\t\tString location = assetValue.getLocation();\r\n\t\t\t\t\tSet<String> flags = values.get(location);\r\n\t\t\t\t\tif (flags == null) {\r\n\t\t\t\t\t\tflags = new TreeSet<>();\r\n\t\t\t\t\t\tvalues.put(location, flags);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tString flag = assetValue.getFlag();\r\n\t\t\t\t\tif (flag == null) {\r\n\t\t\t\t\t\tflag = TabsTracker.get().other();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tflags.add(flag);\r\n\t\t\t\t}\r\n\t\t\t\t//Select Location\r\n\t\t\t\tString returnLocation = null;\r\n\t\t\t\tif (values.keySet().size() > 1) {\r\n\t\t\t\t\treturnLocation = jSelectionDialog.show(TabsTracker.get().selectLocation(), values.keySet());\r\n\t\t\t\t} else { //Size is always 1 (one) or 0 (zero)\r\n\t\t\t\t\tfor (String s : values.keySet()) {\r\n\t\t\t\t\t\treturnLocation = s; //Only done if size is 1 (one) AKA only done once\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (returnLocation == null) {\r\n\t\t\t\t\treturn; //Cancelled or Empty\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//Select Flag\r\n\t\t\t\tSet<String> flags = values.get(returnLocation);\r\n\t\t\t\tString returnFlag = TabsTracker.get().other(); //Used if size is 1\r\n\t\t\t\tif (flags.size() > 1) { //Always contain \"Other\" flag\r\n\t\t\t\t\treturnFlag = jSelectionDialog.show(TabsTracker.get().selectFlag(), flags);\r\n\t\t\t\t\tif (returnFlag == null) {\r\n\t\t\t\t\t\treturn; //Cancel\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (flags.size() == 1) { //Size is always 1 (one) or 0 (zero)\r\n\t\t\t\t\tfor (String s : flags) {\r\n\t\t\t\t\t\treturnFlag = s; //Only done if size is 1 (one) AKA only done once\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tAssetValue assetValue;\r\n\t\t\t\tif (returnFlag.equals(TabsTracker.get().other())) {\r\n\t\t\t\t\tassetValue = AssetValue.create(returnLocation);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tassetValue = AssetValue.create(returnLocation + \" > \" + returnFlag);\r\n\t\t\t\t}\r\n\t\t\t\tDouble asset = value.getAssetsFilter().get(assetValue);\r\n\t\t\t\tif (asset != null) { //Item found\r\n\t\t\t\t\tasset = getValue(asset); //Get new value\r\n\t\t\t\t\tif (asset != null) { //Update number\r\n\t\t\t\t\t\tassetUpdates.add(new FilterUpdate(assetValue.getID(), asset)); //Add update to queue (will only be executed if this dialog closed by pressing OK)\r\n\r\n\t\t\t\t\t\t//Update displayed total - only a GUI thing, the textfield is never used when getAssetsFilter is not empty\r\n\t\t\t\t\t\tMap<String, Double> map = new HashMap<>();\r\n\t\t\t\t\t\tfor (Map.Entry<AssetValue, Double> entry : value.getAssetsFilter().entrySet()) {\r\n\t\t\t\t\t\t\tmap.put(entry.getKey().getID(), entry.getValue());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tfor (FilterUpdate filterUpdate : assetUpdates) {\r\n\t\t\t\t\t\t\tmap.put(filterUpdate.getKey(), filterUpdate.getValue());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tdouble total = 0;\r\n\t\t\t\t\t\tfor (double d : map.values()) {\r\n\t\t\t\t\t\t\ttotal = total + d;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tjAssets.setText(format(total));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void focusGained(FocusEvent e) {\r\n\t\t\tJTextField jTextField = (JTextField) e.getSource();\r\n\t\t\tColorSettings.configReset(jTextField);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void focusLost(FocusEvent e) {\r\n\t\t\tJTextField jTextField = (JTextField) e.getSource();\r\n\t\t\ttry {\r\n\t\t\t\tparse(jTextField.getText());\r\n\t\t\t\tColorSettings.configReset(jTextField);\r\n\t\t\t} catch (ParseException ex) {\r\n\t\t\t\tColorSettings.config(jTextField, ColorEntry.GLOBAL_ENTRY_INVALID);\r\n\t\t\t}\r\n\t\t\tjTextField.setCaretPosition(jTextField.getText().length());\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class FilterUpdate {\r\n\t\tprivate final String key;\r\n\t\tprivate final Double value;\r\n\r\n\t\tpublic FilterUpdate(String key, Double value) {\r\n\t\t\tthis.key = key;\r\n\t\t\tthis.value = value;\r\n\t\t}\r\n\r\n\t\tpublic String getKey() {\r\n\t\t\treturn key;\r\n\t\t}\r\n\r\n\t\tpublic Double getValue() {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/tracker/QuickDate.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.tracker;\r\n\r\nimport java.util.Calendar;\r\nimport java.util.Date;\r\nimport net.nikr.eve.jeveasset.i18n.TabsTracker;\r\n\r\n\r\npublic enum QuickDate {\r\n\tEMPTY(null, null, TabsTracker.get().quickDate())\r\n\t,RESET(null, null, TabsTracker.get().reset())\r\n\t,DAY_ONE(Calendar.DAY_OF_YEAR, -1, TabsTracker.get().day1())\r\n\t,WEEK_ONE(Calendar.DAY_OF_YEAR, -7, TabsTracker.get().week1())\r\n\t,WEEK_TWO(Calendar.DAY_OF_YEAR, -14, TabsTracker.get().week2())\r\n\t,MONTH_ONE(Calendar.MONTH, -1, TabsTracker.get().month1())\r\n\t,MONTH_THREE(Calendar.MONTH, -3, TabsTracker.get().months3())\r\n\t,MONTH_SIX(Calendar.MONTH, -6, TabsTracker.get().months6())\r\n\t,YEAR_ONE(Calendar.YEAR, -1, TabsTracker.get().year1())\r\n\t,YEAR_TWO(Calendar.YEAR, -2, TabsTracker.get().years2());\r\n\r\n\tprivate final Integer field;\r\n\tprivate final Integer amount;\r\n\tprivate final String title;\r\n\r\n\tprivate QuickDate(Integer field, Integer amount, String title) {\r\n\t\tthis.field = field;\r\n\t\tthis.amount = amount;\r\n\t\tthis.title = title;\r\n\t}\r\n\r\n\tpublic Date apply(Date to) {\r\n\t\tif (field == null || amount == null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tCalendar calendar = Calendar.getInstance();\r\n\t\tcalendar.setTime(to);\r\n\t\tcalendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);\r\n\t\tcalendar.set(Calendar.MILLISECOND, 0);\r\n\t\tcalendar.add(field, amount);\r\n\t\treturn calendar.getTime();\r\n\t}\r\n\r\n\tpublic boolean isValid(Date from, Date to) {\r\n\t\tif (to == null) {\r\n\t\t\tto = new Date(); //now\r\n\t\t}\r\n\t\tif (from == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tto = apply(to);\r\n\t\treturn from.equals(to);\r\n\t}\r\n\r\n\tpublic QuickDate getSelected(Date from, Date to) {\r\n\t\tfor (QuickDate quickDate : QuickDate.values()) {\r\n\t\t\tif (quickDate.isValid(from, to)) {\r\n\t\t\t\treturn quickDate;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn QuickDate.EMPTY;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn title;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/tracker/TrackerAssetFilterDialog.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.tracker;\r\n\r\nimport ca.odell.glazedlists.EventList;\r\nimport ca.odell.glazedlists.FilterList;\r\nimport ca.odell.glazedlists.TreeList;\r\nimport ca.odell.glazedlists.matchers.Matcher;\r\nimport ca.odell.glazedlists.swing.EventTreeModel;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.util.Comparator;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.TreeMap;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JCheckBox;\r\nimport javax.swing.JComponent;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JScrollPane;\r\nimport javax.swing.JTextField;\r\nimport javax.swing.JTree;\r\nimport javax.swing.Timer;\r\nimport javax.swing.event.DocumentEvent;\r\nimport javax.swing.event.DocumentListener;\r\nimport javax.swing.tree.TreePath;\r\nimport javax.swing.tree.TreeSelectionModel;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.CheckBoxNode;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.CheckBoxNodeEditor;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.CheckBoxNodeRenderer;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\r\nimport net.nikr.eve.jeveasset.i18n.TabsTracker;\r\n\r\n\r\npublic class TrackerAssetFilterDialog extends JDialogCentered {\r\n\r\n\tprivate final JTree jTree;\r\n\tprivate final JTextField jFilter;\r\n\tprivate final JCheckBox jNewSelected;\r\n\tprivate final EventList<CheckBoxNode> eventList;\r\n\tprivate final Timer timer;\r\n\tprivate final FilterList<CheckBoxNode> filterList;\r\n\r\n\tprivate boolean save = false;\r\n\r\n\tpublic TrackerAssetFilterDialog(Program program) {\r\n\t\tsuper(program, TabsTracker.get().filterTitle(), Images.TOOL_TRACKER.getImage());\r\n\t\t//Backend\r\n\t\teventList = EventListManager.create();\r\n\t\t//Filter\r\n\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\tfilterList = new FilterList<>(eventList);\r\n\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t//Tree\r\n\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\tTreeList<CheckBoxNode> treeList = new TreeList<>(EventModels.createSwingThreadProxyList(filterList), new CheckBoxNodeFormat(), TreeList.nodesStartExpanded());\r\n\t\teventList.getReadWriteLock().readLock().unlock();\r\n\r\n\t\tEventTreeModel<CheckBoxNode> eventTreeModel = new EventTreeModel<>(treeList);\r\n\t\tjTree = new JTree(eventTreeModel);\r\n\t\tjTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);\r\n\t\tjTree.putClientProperty(\"JTree.lineStyle\", \"None\");\r\n\t\tjTree.setExpandsSelectedPaths(true);\r\n\t\tjTree.setRootVisible(false);\r\n\t\tjTree.setShowsRootHandles(true);\r\n\t\tjTree.setVisibleRowCount(0);\r\n\t\tjTree.setCellRenderer(new CheckBoxNodeRenderer());\r\n\t\tjTree.setCellEditor(new CheckBoxNodeEditor(jTree));\r\n\t\tjTree.setEditable(true);\r\n\t\tjTree.setLargeModel(true);\r\n\t\tjTree.setRowHeight(16);\r\n\r\n\t\ttimer = new Timer(500, new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\ttimer.stop();\r\n\t\t\t\tfilter();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tJLabel jSearch = new JLabel(TabsTracker.get().search());\r\n\r\n\t\tjFilter = new JTextField();\r\n\t\tjFilter.getDocument().addDocumentListener(new DocumentListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void insertUpdate(DocumentEvent e) {\r\n\t\t\t\ttimer.stop();\r\n\t\t\t\ttimer.start();\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic void removeUpdate(DocumentEvent e) {\r\n\t\t\t\ttimer.stop();\r\n\t\t\t\ttimer.start();\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic void changedUpdate(DocumentEvent e) {\r\n\t\t\t\ttimer.stop();\r\n\t\t\t\ttimer.start();\r\n\t\t\t}\r\n\t\t});\r\n\t\tJButton jClear = new JButton(Images.TAB_CLOSE.getIcon());\r\n\t\tjClear.setContentAreaFilled(false);\r\n\t\tjClear.setFocusPainted(false);\r\n\t\tjClear.setPressedIcon(Images.TAB_CLOSE_ACTIVE.getIcon());\r\n\t\tjClear.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tjFilter.setText(\"\");\r\n\t\t\t\ttimer.stop();\r\n\t\t\t\tfilter();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tjNewSelected = new JCheckBox(TabsTracker.get().newSelected());\r\n\t\tjNewSelected.setSelected(Settings.get().getTrackerSettings().isSelectNew());\r\n\r\n\t\tJButton jOK = new JButton(TabsTracker.get().ok());\r\n\t\tjOK.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tsave = true;\r\n\t\t\t\tsetVisible(false);\r\n\t\t\t}\r\n\t\t});\r\n\t\tJButton jCancel = new JButton(TabsTracker.get().cancel());\r\n\t\tjCancel.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tsetVisible(false);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tJScrollPane jTreeScroll = new JScrollPane(jTree);\r\n\t\tjTreeScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addComponent(jSearch)\r\n\t\t\t\t\t.addComponent(jFilter, 0, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\r\n\t\t\t\t\t.addComponent(jClear, 16, 16, 16)\r\n\t\t\t\t)\r\n\t\t\t\t.addComponent(jTreeScroll, 0, GroupLayout.PREFERRED_SIZE, 600)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addComponent(jNewSelected)\r\n\t\t\t\t\t.addGap(0, 0, Integer.MAX_VALUE)\r\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jSearch, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jFilter, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jClear, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t\t\t.addComponent(jTreeScroll, 0, GroupLayout.PREFERRED_SIZE, 500)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jNewSelected)\r\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JComponent getDefaultFocus() {\r\n\t\treturn jTree;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JButton getDefaultButton() {\r\n\t\treturn null;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void windowShown() { }\r\n\r\n\t@Override\r\n\tprotected void save() { }\r\n\r\n\tpublic boolean isSelectNew() {\r\n\t\treturn jNewSelected.isSelected();\r\n\t}\r\n\r\n\tpublic boolean showLocations(Map<String, CheckBoxNode> nodes) {\r\n\t\t//Reset\r\n\t\tsave = false;\r\n\t\tjFilter.setText(\"\");\r\n\t\ttimer.stop();\r\n\t\tfilterList.setMatcher(null);\r\n\r\n\t\t//Copy list\r\n\t\tMap<String, CheckBoxNode> cloneList = cloneList(nodes);\r\n\r\n\t\t//Set data\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().writeLock().lock();\r\n\t\t\teventList.clear();\r\n\t\t\teventList.addAll(cloneList.values());\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\r\n\t\t}\r\n\t\tif (cloneList.size() > 35) {\r\n\t\t\tjTree.setVisibleRowCount(35);\r\n\t\t} else {\r\n\t\t\tjTree.setVisibleRowCount(cloneList.size());\r\n\t\t}\r\n\t\texpandAll(); //Expand all\r\n\r\n\t\t//Show\r\n\t\tsetVisible(true);\r\n\r\n\t\tboolean changed = changed(cloneList, nodes); //Only need to update if something have been changed...\r\n\t\tif (save && changed) { //If changed\r\n\t\t\tnodes.clear();\r\n\t\t\tnodes.putAll(cloneList);\r\n\t\t}\r\n\t\treturn save && changed;\r\n\t}\r\n\r\n\tprivate void filter() {\r\n\t\tif (jFilter.getText().isEmpty()) {\r\n\t\t\tfilterList.setMatcher(null);\r\n\t\t\ttry {\r\n\t\t\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\t\t\tfor (CheckBoxNode node : eventList) {\r\n\t\t\t\t\tnode.show();\r\n\t\t\t\t}\r\n\t\t\t} finally {\r\n\t\t\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\ttry {\r\n\t\t\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\t\t\tfor (CheckBoxNode node : eventList) {\r\n\t\t\t\t\tnode.hide();\r\n\t\t\t\t}\r\n\t\t\t} finally {\r\n\t\t\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t\t}\r\n\t\t\tfilterList.setMatcher(new CheckBoxNodeMatcher(jFilter.getText()));\r\n\t\t}\r\n\t\texpandAll();\r\n\t}\r\n\r\n\tprivate Map<String, CheckBoxNode> cloneList(Map<String, CheckBoxNode> nodes) {\r\n\t\tMap<String, CheckBoxNode> clonesCache = new HashMap<>();\r\n\t\tMap<String, CheckBoxNode> clonedNodes = new TreeMap<>();\r\n\t\tfor (Map.Entry<String, CheckBoxNode> entry : nodes.entrySet()) {\r\n\t\t\tclonedNodes.put(entry.getKey(), cloneTree(clonesCache, entry.getValue()));\r\n\t\t}\r\n\t\treturn clonedNodes;\r\n\t}\r\n\r\n\tprivate CheckBoxNode cloneTree(Map<String, CheckBoxNode> clonesCache, CheckBoxNode oldNode) {\r\n\t\tCheckBoxNode oldParent = oldNode.getParent();\r\n\t\tCheckBoxNode cloneParent = null;\r\n\t\tif (oldParent != null) {\r\n\t\t\tcloneParent = cloneTree(clonesCache, oldParent);\r\n\t\t}\r\n\t\tCheckBoxNode cloneNode = clonesCache.get(oldNode.getNodeID());\r\n\t\tif (cloneNode == null) {\r\n\t\t\tcloneNode = new CheckBoxNode(cloneParent, oldNode);\r\n\t\t\tclonesCache.put(cloneNode.getNodeID(), cloneNode);\r\n\t\t}\r\n\t\treturn cloneNode;\r\n\t}\r\n\r\n\t/**\r\n\t * Check if the clone tree have been changed compared to the source tree\r\n\t * @param clone Clone Tree\r\n\t * @param source Source Tree\r\n\t * @return true if the maps are not equal. false if the maps are equal\r\n\t */\r\n\tprivate boolean changed(Map<String, CheckBoxNode> clone, Map<String, CheckBoxNode> source) {\r\n\t\tfor (Map.Entry<String, CheckBoxNode> entry : clone.entrySet()) {\r\n\t\t\tCheckBoxNode sourceNode = source.get(entry.getKey());\r\n\t\t\tCheckBoxNode cloneNode = entry.getValue();\r\n\t\t\tif (cloneNode.isSelected() != sourceNode.isSelected()) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate void expandAll() {\r\n\t\tif (jTree.getRowCount() > 0) { //Always expand root\r\n\t\t\tjTree.expandRow(0);\r\n\t\t}\r\n\t\tfor (int i = 0; i < jTree.getRowCount(); i++) { //Expand everything\r\n\t\t\tTreePath path = jTree.getPathForRow(i);\r\n\t\t\tObject object = path.getLastPathComponent();\r\n\t\t\tif (object instanceof TreeList.Node) {\r\n\t\t\t\tTreeList.Node<?> node = (TreeList.Node) object;\r\n\t\t\t\tif (node.getChildren().size() > 5000) { //Ignore nodes with more that 5000 children\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tjTree.expandPath(path);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class CheckBoxNodeFormat implements TreeList.Format<CheckBoxNode> {\r\n\r\n\t\tprivate final CheckBoxNodeComparator comparator = new CheckBoxNodeComparator();\r\n\r\n\t\t@Override\r\n\t\tpublic void getPath(List<CheckBoxNode> path, CheckBoxNode element) {\r\n\t\t\taddParents(path, element);\r\n\t\t\tpath.add(element);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean allowsChildren(CheckBoxNode element) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic Comparator<? super CheckBoxNode> getComparator(int depth) {\r\n\t\t\treturn comparator;\r\n\t\t}\r\n\r\n\t\tprivate void addParents(List<CheckBoxNode> path, CheckBoxNode element) {\r\n\t\t\tCheckBoxNode parent = element.getParent();\r\n\t\t\tif (parent != null) {\r\n\t\t\t\tpath.add(0, parent);\r\n\t\t\t\taddParents(path, parent);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate static class CheckBoxNodeComparator implements Comparator<CheckBoxNode> {\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic int compare(CheckBoxNode o1, CheckBoxNode o2) {\r\n\t\t\t\treturn o1.compareTo(o2);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class CheckBoxNodeMatcher implements Matcher<CheckBoxNode> {\r\n\r\n\t\tprivate final String text;\r\n\r\n\t\tpublic CheckBoxNodeMatcher(String text) {\r\n\t\t\tthis.text = text.toLowerCase();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean matches(CheckBoxNode item) {\r\n\t\t\tif (item.isShown()) { //already evaluated\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\treturn item.matches(text);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/tracker/TrackerDate.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.tracker;\r\n\r\nimport java.util.Date;\r\nimport java.util.Objects;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\n\r\n\r\npublic class TrackerDate implements Comparable<TrackerDate> {\r\n\tprivate final Date date;\r\n\tprivate final String compare;\r\n\r\n\tpublic TrackerDate(Date date) {\r\n\t\tthis.date = date;\r\n\t\tthis.compare = Formatter.dateOnly(date);\r\n\t}\r\n\r\n\tpublic Date getDate() {\r\n\t\treturn date;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(TrackerDate o) {\r\n\t\treturn compare.compareTo(o.compare);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 7;\r\n\t\thash = 97 * hash + Objects.hashCode(this.compare);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal TrackerDate other = (TrackerDate) obj;\r\n\t\tif (!Objects.equals(this.compare, other.compare)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/tracker/TrackerNote.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.tracker;\r\n\r\n\r\npublic class TrackerNote {\r\n\tprivate final String note;\r\n\r\n\tpublic TrackerNote(String note) {\r\n\t\tthis.note = note;\r\n\t}\r\n\r\n\tpublic String getNote() {\r\n\t\treturn note;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/tracker/TrackerSkillPointFilter.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.tabs.tracker;\n\nimport java.util.Objects;\n\n\npublic class TrackerSkillPointFilter implements Comparable<TrackerSkillPointFilter> {\n\n\tprivate final String name;\n\tprivate boolean enabled;\n\tprivate long minimum;\n\n\tpublic TrackerSkillPointFilter(String name, boolean enabled, long minimum) {\n\t\tthis.name = name;\n\t\tthis.enabled = enabled;\n\t\tthis.minimum = minimum;\n\t}\n\n\tpublic TrackerSkillPointFilter(TrackerSkillPointFilter filter) {\n\t\tthis.name = filter.name;\n\t\tthis.enabled = filter.enabled;\n\t\tthis.minimum = filter.minimum;\n\t}\n\n\tpublic TrackerSkillPointFilter(String name) {\n\t\tthis.name = name;\n\t\tthis.enabled = true;\n\t\tthis.minimum = 0;\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic boolean isEnabled() {\n\t\treturn enabled;\n\t}\n\n\tpublic void setEnabled(boolean enabled) {\n\t\tthis.enabled = enabled;\n\t}\n\n\tpublic long getMinimum() {\n\t\treturn minimum;\n\t}\n\n\tpublic void setMinimum(long minimum) {\n\t\tthis.minimum = minimum;\n\t}\n\n\tpublic boolean isEmpty() {\n\t\treturn this.minimum == 0 && enabled;\n\t}\n\n\t@Override\n\tpublic int compareTo(TrackerSkillPointFilter o) {\n\t\treturn this.getName().compareTo(o.getName());\n\t}\n\n\t@Override\n\tpublic int hashCode() {\n\t\tint hash = 7;\n\t\thash = 37 * hash + Objects.hashCode(this.name);\n\t\treturn hash;\n\t}\n\n\t@Override\n\tpublic boolean equals(Object obj) {\n\t\tif (this == obj) {\n\t\t\treturn true;\n\t\t}\n\t\tif (obj == null) {\n\t\t\treturn false;\n\t\t}\n\t\tif (getClass() != obj.getClass()) {\n\t\t\treturn false;\n\t\t}\n\t\tfinal TrackerSkillPointFilter other = (TrackerSkillPointFilter) obj;\n\t\tif (!Objects.equals(this.name, other.name)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/tracker/TrackerSkillPointsFilterDialog.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.tracker;\r\n\r\nimport ca.odell.glazedlists.EventList;\r\nimport ca.odell.glazedlists.GlazedLists;\r\nimport ca.odell.glazedlists.ListSelection;\r\nimport ca.odell.glazedlists.event.ListEvent;\r\nimport ca.odell.glazedlists.event.ListEventListener;\r\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\r\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\nimport java.util.Collections;\r\nimport java.util.Comparator;\r\nimport java.util.Iterator;\r\nimport java.util.List;\r\nimport java.util.Set;\r\nimport java.util.TreeSet;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JCheckBox;\r\nimport javax.swing.JComponent;\r\nimport javax.swing.JScrollPane;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\r\nimport net.nikr.eve.jeveasset.i18n.TabsTracker;\r\n\r\n\r\npublic class TrackerSkillPointsFilterDialog extends JDialogCentered {\r\n\r\n\tprivate final JCheckBox jAll;\r\n\tprivate final JAutoColumnTable jTable;\r\n\tprivate final EventList<TrackerSkillPointFilter> eventList;\r\n\tprivate final DefaultEventTableModel<TrackerSkillPointFilter> tableModel;\r\n\tprivate final JButton jOK;\r\n\tprivate boolean save = false;\r\n\r\n\tpublic TrackerSkillPointsFilterDialog(Program program) {\r\n\t\tsuper(program, TabsTracker.get().skillPointFilters(), Images.TOOL_TRACKER.getImage());\r\n\r\n\t\tjAll = new JCheckBox(TabsTracker.get().all());\r\n\t\tjAll.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tselectAll(jAll.isSelected());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\teventList = EventListManager.create();\r\n\t\teventList.addListEventListener(new ListEventListener<TrackerSkillPointFilter>() {\r\n\t\t\t@Override\r\n\t\t\tpublic void listChanged(ListEvent<TrackerSkillPointFilter> listChanges) {\r\n\t\t\t\tupdateSelected();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\ttableModel = EventModels.createTableModel(eventList, TableFormatFactory.trackerSkillPointsFilterTableFormat());\r\n\t\tjTable = new JAutoColumnTable(program, tableModel);\r\n\t\tjTable.getTableHeader().setReorderingAllowed(false);\r\n\r\n\t\tJScrollPane jTableScroll = new JScrollPane(jTable);\r\n\t\tjTableScroll.getVerticalScrollBar().setUnitIncrement(19);\r\n\t\tjTableScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);\r\n\r\n\t\tDefaultEventSelectionModel<TrackerSkillPointFilter> selectionModel = EventModels.createSelectionModel(eventList);\r\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\r\n\t\tjTable.setSelectionModel(selectionModel);\r\n\r\n\t\tjOK = new JButton(TabsTracker.get().ok());\r\n\t\tjOK.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tsave();\r\n\t\t\t}\r\n\t\t});\r\n\t\tJButton jCancel = new JButton(TabsTracker.get().cancel());\r\n\t\tjCancel.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tsetVisible(false);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup()\r\n\t\t\t\t.addComponent(jAll)\r\n\t\t\t\t.addComponent(jTableScroll, 0, GroupLayout.PREFERRED_SIZE, 750)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addGap(0, 0, Integer.MAX_VALUE)\r\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(jAll)\r\n\t\t\t\t.addComponent(jTableScroll, 0, GroupLayout.PREFERRED_SIZE, 450)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\tpublic boolean show() {\r\n\t\tSet<TrackerSkillPointFilter> filters = new TreeSet<>();\r\n\t\tfor (OwnerType ownerType : program.getOwnerTypes()) {\r\n\t\t\tif (ownerType.isCorporation()) {\r\n\t\t\t\tcontinue; //Corporation can not have skill points\r\n\t\t\t}\r\n\t\t\tfinal String ownerName = ownerType.getOwnerName();\r\n\t\t\tTrackerSkillPointFilter filter = Settings.get().getTrackerSettings().getSkillPointFilters().get(ownerName);\r\n\t\t\tif (filter == null) {\r\n\t\t\t\tfilter = new TrackerSkillPointFilter(ownerName);\r\n\t\t\t}\r\n\t\t\tfilters.add(new TrackerSkillPointFilter(filter)); //Working Copy\r\n\t\t}\r\n\t\t//Update rows (Add all rows)\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().writeLock().lock();\r\n\t\t\teventList.clear();\r\n\t\t\teventList.addAll(filters);\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\r\n\t\t}\r\n\t\tjTable.setPreferredScrollableViewportSize(jTable.getPreferredSize());\r\n\t\tsave = false;\r\n\t\tsetVisible(true);\r\n\t\treturn save;\r\n\t}\r\n\r\n\tprivate void selectAll(final boolean selected) {\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().writeLock().lock();\r\n\t\t\tfor (TrackerSkillPointFilter filter : eventList) {\r\n\t\t\t\tfilter.setEnabled(selected);\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\r\n\t\t}\r\n\t\tfor (int row = 0; row < jTable.getRowCount(); row++) {\r\n\t\t\ttableModel.fireTableCellUpdated(row, 0);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void updateSelected() {\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\t\tfor (TrackerSkillPointFilter filter : eventList) {\r\n\t\t\t\tif (!filter.isEnabled()) {\r\n\t\t\t\t\tjAll.setSelected(false);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tjAll.setSelected(true);\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JComponent getDefaultFocus() {\r\n\t\treturn jOK;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JButton getDefaultButton() {\r\n\t\treturn jOK;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void windowShown() { }\r\n\r\n\t@Override\r\n\tprotected void save() {\r\n\t\tsave = !compareLists(eventList, Settings.get().getTrackerSettings().getSkillPointFilters().values(), new ListComparator());\r\n\t\tif (save) {\r\n\t\t\ttry {\r\n\t\t\t\teventList.getReadWriteLock().readLock().lock();\r\n\t\t\t\tSettings.lock(\"Tracker Skill Points Filters: Update\");\r\n\t\t\t\tfor (TrackerSkillPointFilter filter : eventList) {\r\n\t\t\t\t\tSettings.get().getTrackerSettings().getSkillPointFilters().put(filter.getName(), filter);\r\n\t\t\t\t}\r\n\t\t\t} finally {\r\n\t\t\t\tSettings.unlock(\"Tracker Skill Points Filters: Update\");\r\n\t\t\t\tprogram.saveSettings(\"Tracker Skill Points Filters: Update\");\r\n\t\t\t\teventList.getReadWriteLock().readLock().unlock();\r\n\t\t\t}\r\n\t\t}\r\n\t\tsetVisible(false);\r\n\t}\r\n\r\n\tprivate <T> boolean compareLists(Collection<T> list1, Collection<T> list2, Comparator<? super T> comparator) {\r\n\r\n\t\t// if not the same size, lists are not equal\r\n\t\tif (list1.size() != list2.size()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// create sorted copies to avoid modifying the original lists\r\n\t\tList<T> copy1 = new ArrayList<>(list1);\r\n\t\tList<T> copy2 = new ArrayList<>(list2);\r\n\r\n\t\tCollections.sort(copy1, comparator);\r\n\t\tCollections.sort(copy2, comparator);\r\n\r\n\t\t// iterate through the elements and compare them one by one using\r\n\t\t// the provided comparator.\r\n\t\tIterator<T> it1 = copy1.iterator();\r\n\t\tIterator<T> it2 = copy2.iterator();\r\n\t\twhile (it1.hasNext()) {\r\n\t\t\tT t1 = it1.next();\r\n\t\t\tT t2 = it2.next();\r\n\t\t\tif (comparator.compare(t1, t2) != 0) {\r\n\t\t\t\t// as soon as a difference is found, stop looping\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate static class ListComparator implements Comparator<TrackerSkillPointFilter> {\r\n\r\n\t\t@Override\r\n\t\tpublic int compare(TrackerSkillPointFilter o1, TrackerSkillPointFilter o2) {\r\n\t\t\tint compared;\r\n\t\t\tcompared = GlazedLists.comparableComparator().compare(o1.getName(), o2.getName());\r\n\t\t\tif (compared != 0) {\r\n\t\t\t\treturn compared;\r\n\t\t\t}\r\n\t\t\tcompared = GlazedLists.comparableComparator().compare(o1.getMinimum(), o2.getMinimum());\r\n\t\t\tif (compared != 0) {\r\n\t\t\t\treturn compared;\r\n\t\t\t}\r\n\t\t\tcompared = GlazedLists.comparableComparator().compare(o1.isEnabled(), o2.isEnabled());\r\n\t\t\tif (compared != 0) {\r\n\t\t\t\treturn compared;\r\n\t\t\t}\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/tracker/TrackerSkillPointsFilterTableFormat.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.tracker;\r\n\r\nimport java.util.Comparator;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.i18n.TabsTracker;\r\n\r\n\r\npublic enum TrackerSkillPointsFilterTableFormat implements EnumTableColumn<TrackerSkillPointFilter> {\r\n\tENABLED(Boolean.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTracker.get().columnShow();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final TrackerSkillPointFilter from) {\r\n\t\t\treturn from.isEnabled();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic boolean isColumnEditable(final Object baseObject) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic boolean setColumnValue(final Object baseObject, final Object editedValue) {\r\n\t\t\tif ((editedValue instanceof Boolean) && (baseObject instanceof TrackerSkillPointFilter)) {\r\n\t\t\t\tTrackerSkillPointFilter owner = (TrackerSkillPointFilter) baseObject;\r\n\t\t\t\tboolean before = owner.isEnabled();\r\n\t\t\t\tboolean after = (Boolean) editedValue;\r\n\t\t\t\towner.setEnabled(after);\r\n\t\t\t\treturn before != after;\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\t},\r\n\tNAME(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTracker.get().columnName();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final TrackerSkillPointFilter from) {\r\n\t\t\treturn from.getName();\r\n\t\t}\r\n\t},\r\n\tMINIMUM(Long.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTracker.get().columnMinimum();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final TrackerSkillPointFilter from) {\r\n\t\t\treturn from.getMinimum();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic boolean isColumnEditable(final Object baseObject) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic boolean setColumnValue(final Object baseObject, final Object editedValue) {\r\n\t\t\tif ((editedValue instanceof Long) && (baseObject instanceof TrackerSkillPointFilter)) {\r\n\t\t\t\tTrackerSkillPointFilter owner = (TrackerSkillPointFilter) baseObject;\r\n\t\t\t\tlong before = owner.getMinimum();\r\n\t\t\t\tlong after = (Long) editedValue;\r\n\t\t\t\tif (after < 0) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\towner.setMinimum(after);\r\n\t\t\t\treturn before != after;\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\t};\r\n\r\n\tprivate final Class<?> type;\r\n\tprivate final Comparator<?> comparator;\r\n\tprivate TrackerSkillPointsFilterTableFormat(final Class<?> type) {\r\n\t\tthis.type = type;\r\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\r\n\t}\r\n\t@Override\r\n\tpublic Class<?> getType() {\r\n\t\treturn type;\r\n\t}\r\n\t@Override\r\n\tpublic Comparator<?> getComparator() {\r\n\t\treturn comparator;\r\n\t}\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn getColumnName();\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/tracker/TrackerTab.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.tracker;\r\n\r\nimport com.github.lgooddatepicker.optionalusertools.DateChangeListener;\r\nimport com.github.lgooddatepicker.zinternaltools.DateChangeEvent;\r\nimport java.awt.BasicStroke;\r\nimport java.awt.Color;\r\nimport java.awt.Component;\r\nimport java.awt.Font;\r\nimport java.awt.Graphics;\r\nimport java.awt.Graphics2D;\r\nimport java.awt.Rectangle;\r\nimport java.awt.RenderingHints;\r\nimport java.awt.Shape;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.awt.geom.Ellipse2D;\r\nimport java.awt.geom.Rectangle2D;\r\nimport java.io.File;\r\nimport java.io.FileInputStream;\r\nimport java.io.FileOutputStream;\r\nimport java.io.IOException;\r\nimport java.time.Instant;\r\nimport java.time.LocalDate;\r\nimport java.time.ZoneId;\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\nimport java.util.Collections;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport java.util.TreeMap;\r\nimport java.util.TreeSet;\r\nimport java.util.zip.ZipEntry;\r\nimport java.util.zip.ZipInputStream;\r\nimport javax.swing.AbstractListModel;\r\nimport javax.swing.ButtonGroup;\r\nimport javax.swing.Icon;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JCheckBox;\r\nimport javax.swing.JCheckBoxMenuItem;\r\nimport javax.swing.JComboBox;\r\nimport javax.swing.JFileChooser;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JMenu;\r\nimport javax.swing.JMenuItem;\r\nimport javax.swing.JOptionPane;\r\nimport javax.swing.JPopupMenu;\r\nimport javax.swing.JRadioButtonMenuItem;\r\nimport javax.swing.JScrollPane;\r\nimport javax.swing.JSeparator;\r\nimport javax.swing.ListModel;\r\nimport javax.swing.SwingUtilities;\r\nimport javax.swing.event.ListSelectionEvent;\r\nimport javax.swing.event.ListSelectionListener;\r\nimport javax.swing.event.PopupMenuEvent;\r\nimport javax.swing.event.PopupMenuListener;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.data.settings.TrackerData;\r\nimport net.nikr.eve.jeveasset.data.settings.TrackerSettings;\r\nimport net.nikr.eve.jeveasset.data.settings.TrackerSettings.DisplayType;\r\nimport net.nikr.eve.jeveasset.data.settings.TrackerSettings.ShowOption;\r\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel;\r\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel.JStatusLabel;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.JFreeChartUtil;\r\nimport net.nikr.eve.jeveasset.gui.shared.JFreeChartUtil.SimpleRenderer;\r\nimport net.nikr.eve.jeveasset.gui.shared.ColorIcon;\r\nimport net.nikr.eve.jeveasset.gui.shared.ColorUtil;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\nimport net.nikr.eve.jeveasset.gui.shared.InstantToolTip;\r\nimport net.nikr.eve.jeveasset.gui.shared.JOptionInput;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.CheckBoxNode;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JCustomFileChooser;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JDateChooser;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JDropDownButton;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JLockWindow;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JLockWindow.LockWorkerAdaptor;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabSecondary;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JMultiSelectionList;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JSelectionDialog;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo.AutoNumberFormat;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo.MenuItemValue;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.AssetValue;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.DataSetCreator;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.Value;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.ValueTableTab;\r\nimport net.nikr.eve.jeveasset.i18n.General;\r\nimport net.nikr.eve.jeveasset.i18n.TabsTracker;\r\nimport net.nikr.eve.jeveasset.io.local.SettingsReader;\r\nimport net.nikr.eve.jeveasset.io.local.TrackerReader;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\r\nimport org.jfree.chart.ChartMouseEvent;\r\nimport org.jfree.chart.ChartMouseListener;\r\nimport org.jfree.chart.ChartPanel;\r\nimport org.jfree.chart.JFreeChart;\r\nimport org.jfree.chart.axis.DateAxis;\r\nimport org.jfree.chart.axis.LogarithmicAxis;\r\nimport org.jfree.chart.axis.NumberAxis;\r\nimport org.jfree.chart.labels.XYToolTipGenerator;\r\nimport org.jfree.chart.plot.DefaultDrawingSupplier;\r\nimport org.jfree.chart.plot.XYPlot;\r\nimport org.jfree.chart.ui.RectangleEdge;\r\nimport org.jfree.data.time.SimpleTimePeriod;\r\nimport org.jfree.data.time.TimePeriodValues;\r\nimport org.jfree.data.time.TimePeriodValuesCollection;\r\nimport org.jfree.data.xy.XYDataset;\r\n\r\n\r\npublic class TrackerTab extends JMainTabSecondary {\r\n\r\n\tprivate enum TrackerAction {\r\n\t\tQUICK_DATE,\r\n\t\tUPDATE_DATA,\r\n\t\tUPDATE_SHOWN,\r\n\t\tIMPORT_FILE,\r\n\t\tINCLUDE_ZERO,\r\n\t\tLOGARITHMIC,\r\n\t\tALL,\r\n\t\tEDIT,\r\n\t\tDELETE,\r\n\t\tNOTE_ADD,\r\n\t\tNOTE_DELETE,\r\n\t\tPROFILE,\r\n\t\tFILTER_ASSETS,\r\n\t\tFILTER_WALLET_BALANCE,\r\n\t\tFILTER_SKILL_POINTS\r\n\t}\r\n\r\n\tpublic static enum ImportOptions {\r\n\t\tKEEP() {\r\n\t\t\t@Override\r\n\t\t\tpublic String getName() {\r\n\t\t\t\treturn TabsTracker.get().importFileOptionsKeep();\r\n\t\t\t}\r\n\t\t},\r\n\t\tOVERWRITE() {\r\n\t\t\t@Override\r\n\t\t\tpublic String getName() {\r\n\t\t\t\treturn TabsTracker.get().importFileOptionsOverwrite();\r\n\t\t\t}\r\n\t\t},\r\n\t\tREPLACE() {\r\n\t\t\t@Override\r\n\t\t\tpublic String getName() {\r\n\t\t\t\treturn TabsTracker.get().importFileOptionsReplace();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tabstract public String getName();\r\n\r\n\t\t@Override\r\n\t\tpublic String toString() {\r\n\t\t\treturn getName();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tprivate final Shape NO_FILTER = new Rectangle(-3, -3, 6, 6);\r\n\tprivate final Shape BUG_CORP_CONTAINERS_FILTER = new Ellipse2D.Float(-3.0f, -2.0f, 6.0f, 4.0f);\r\n\tprivate final Shape FILTER_AND_DEFAULT = new Ellipse2D.Float(-3.0f, -3.0f, 6.0f, 6.0f);\r\n\tprivate final int PANEL_WIDTH_MINIMUM = 160;\r\n\r\n\t//GUI\r\n\tprivate final JDateChooser jFrom;\r\n\tprivate final JDateChooser jTo;\r\n\tprivate final JMultiSelectionList<String> jOwners;\r\n\tprivate final JComboBox<QuickDate> jQuickDate;\r\n\tprivate final JDropDownButton jShow;\r\n\tprivate final JCheckBoxMenuItem jAll;\r\n\tprivate final JCheckBoxMenuItem jTotal;\r\n\tprivate final JCheckBoxMenuItem jWalletBalance;\r\n\tprivate final JButton jWalletBalanceFilters;\r\n\tprivate final JCheckBoxMenuItem jAssets;\r\n\tprivate final JCheckBoxMenuItem jImplants;\r\n\tprivate final JButton jAssetsFilters;\r\n\tprivate final JCheckBoxMenuItem jSellOrders;\r\n\tprivate final JCheckBoxMenuItem jEscrows;\r\n\tprivate final JCheckBoxMenuItem jEscrowsToCover;\r\n\tprivate final JCheckBoxMenuItem jManufacturing;\r\n\tprivate final JCheckBoxMenuItem jContractCollateral;\r\n\tprivate final JCheckBoxMenuItem jContractValue;\r\n\tprivate final JCheckBoxMenuItem jSkillPointsValue;\r\n\tprivate final JButton jSkillPointsFilters;\r\n\tprivate final JCheckBox jAllProfiles;\r\n\tprivate final JCheckBox jCharacterCorporations;\r\n\tprivate final JMenuItem jImportFile;\r\n\tprivate final JCheckBoxMenuItem jIncludeZero;\r\n\tprivate final JRadioButtonMenuItem jLogarithmic;\r\n\tprivate final JPopupMenu jPopupMenu;\r\n\tprivate final JMenuItem jAddNote;\r\n\tprivate final JMenu jEditNote;\r\n\tprivate final List<MenuItemValue> values;\r\n\tprivate final JStatusLabel jTotalStatus;\r\n\tprivate final JStatusLabel jWalletBalanceStatus;\r\n\tprivate final JStatusLabel jAssetsStatus;\r\n\tprivate final JStatusLabel jImplantsStatus;\r\n\tprivate final JStatusLabel jSellOrdersStatus;\r\n\tprivate final JStatusLabel jEscrowsStatus;\r\n\tprivate final JStatusLabel jEscrowsToCoverStatus;\r\n\tprivate final JStatusLabel jManufacturingStatus;\r\n\tprivate final JStatusLabel jContractCollateralStatus;\r\n\tprivate final JStatusLabel jContractValueStatus;\r\n\tprivate final JStatusLabel jSkillPointsStatus;\r\n\r\n\t//Graph\r\n\tprivate final JFreeChart jFreeChart;\r\n\tprivate final ChartPanel jChartPanel;\r\n\tprivate final MyRenderer renderer;\r\n\tprivate final TimePeriodValuesCollection dataset = new TimePeriodValuesCollection();\r\n\tprivate final DateAxis domainAxis;\r\n\tprivate final LogarithmicAxis rangeLogarithmicAxis;\r\n\tprivate final NumberAxis rangeLinearAxis;\r\n\tprivate TimePeriodValues walletBalance;\r\n\tprivate TimePeriodValues assets;\r\n\tprivate TimePeriodValues implants;\r\n\tprivate TimePeriodValues sellOrders;\r\n\tprivate TimePeriodValues escrows;\r\n\tprivate TimePeriodValues escrowsToCover;\r\n\tprivate TimePeriodValues manufacturing;\r\n\tprivate TimePeriodValues contractCollateral;\r\n\tprivate TimePeriodValues contractValue;\r\n\tprivate TimePeriodValues skillPointsValue;\r\n\r\n\t//Dialog\r\n\tprivate final JTrackerEditDialog jEditDialog;\r\n\tprivate final JSelectionDialog<String> jSelectionDialog;\r\n\tprivate final TrackerWalletFilterDialog walletFilterDialog;\r\n\tprivate final TrackerAssetFilterDialog assetFilterDialog;\r\n\tprivate final TrackerSkillPointsFilterDialog skillPointsFilterDialog;\r\n\tprivate final JCustomFileChooser jFileChooser;\r\n\tprivate final JLockWindow jLockWindow;\r\n\r\n\t//Listener\r\n\tprivate final ListenerClass listener = new ListenerClass();\r\n\r\n\t//Data\r\n\tprivate Map<SimpleTimePeriod, Value> cache;\r\n\tprivate final Map<String, CheckBoxNode> accountNodes = new TreeMap<>();\r\n\tprivate final Map<String, CheckBoxNode> assetNodes = new TreeMap<>();\r\n\tprivate Integer assetNoFilterColumn = null;\r\n\tprivate Integer assetBuggedFilterColumn = null;\r\n\tprivate Integer walletColumn = null;\r\n\tprivate boolean updateLock = false;\r\n\r\n\tpublic static final String NAME = \"tracker\"; //Not to be changed!\r\n\r\n\tpublic TrackerTab(Program program) {\r\n\t\tsuper(program, NAME, TabsTracker.get().title(), Images.TOOL_TRACKER.getIcon(), true);\r\n\r\n\t\twalletFilterDialog = new TrackerWalletFilterDialog(program);\r\n\t\tassetFilterDialog = new TrackerAssetFilterDialog(program);\r\n\t\tskillPointsFilterDialog = new TrackerSkillPointsFilterDialog(program);\r\n\t\tTrackerSettings trackerSettings = Settings.get().getTrackerSettings();\r\n\r\n\t\tList<String> extensions = new ArrayList<>();\r\n\t\textensions.add(\"xml\");\r\n\t\textensions.add(\"zip\");\r\n\t\textensions.add(\"json\");\r\n\t\textensions.add(\"backup\");\r\n\t\tjFileChooser = new JCustomFileChooser(extensions);\r\n\t\tjFileChooser.setMultiSelectionEnabled(false);\r\n\t\tjFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);\r\n\r\n\t\tjLockWindow = new JLockWindow(program.getMainWindow().getFrame());\r\n\r\n\t\tjPopupMenu = new JPopupMenu();\r\n\t\tjPopupMenu.addPopupMenuListener(listener);\r\n\r\n\t\tJMenuItem jMenuItem;\r\n\t\tjMenuItem = new JMenuItem(TabsTracker.get().edit(), Images.EDIT_EDIT.getIcon());\r\n\t\tjMenuItem.setActionCommand(TrackerAction.EDIT.name());\r\n\t\tjMenuItem.addActionListener(listener);\r\n\t\tjPopupMenu.add(jMenuItem);\r\n\r\n\t\tjMenuItem = new JMenuItem(TabsTracker.get().delete(), Images.EDIT_DELETE.getIcon());\r\n\t\tjMenuItem.setActionCommand(TrackerAction.DELETE.name());\r\n\t\tjMenuItem.addActionListener(listener);\r\n\t\tjPopupMenu.add(jMenuItem);\r\n\r\n\t\tjPopupMenu.addSeparator();\r\n\r\n\t\tjAddNote = new JMenuItem(TabsTracker.get().notesAdd(), Images.EDIT_ADD.getIcon());\r\n\t\tjAddNote.setActionCommand(TrackerAction.NOTE_ADD.name());\r\n\t\tjAddNote.addActionListener(listener);\r\n\t\tjPopupMenu.add(jAddNote);\r\n\r\n\t\tjEditNote = new JMenu(TabsTracker.get().note());\r\n\t\tjEditNote.setIcon(Images.SETTINGS_USER_NAME.getIcon());\r\n\t\tjPopupMenu.add(jEditNote);\r\n\r\n\t\tvalues = JMenuInfo.createDefault(jPopupMenu);\r\n\r\n\t\tjMenuItem = new JMenuItem(TabsTracker.get().edit(), Images.EDIT_EDIT.getIcon());\r\n\t\tjMenuItem.setActionCommand(TrackerAction.NOTE_ADD.name());\r\n\t\tjMenuItem.addActionListener(listener);\r\n\t\tjEditNote.add(jMenuItem);\r\n\r\n\t\tjMenuItem = new JMenuItem(TabsTracker.get().delete(), Images.EDIT_DELETE.getIcon());\r\n\t\tjMenuItem.setActionCommand(TrackerAction.NOTE_DELETE.name());\r\n\t\tjMenuItem.addActionListener(listener);\r\n\t\tjEditNote.add(jMenuItem);\r\n\r\n\t\tjEditDialog = new JTrackerEditDialog(program);\r\n\r\n\t\tjSelectionDialog = new JSelectionDialog<>(program);\r\n\r\n\t\tJSeparator jDateSeparator = new JSeparator();\r\n\r\n\t\tjQuickDate = new JComboBox<>(QuickDate.values());\r\n\t\tjQuickDate.setActionCommand(TrackerAction.QUICK_DATE.name());\r\n\t\tjQuickDate.addActionListener(listener);\r\n\r\n\t\tJLabel jFromLabel = new JLabel(TabsTracker.get().from());\r\n\t\tjFrom = new JDateChooser(true);\r\n\t\tif (trackerSettings.getFromDate() != null) {\r\n\t\t\tjFrom.setDate(trackerSettings.getFromDate());\r\n\t\t}\r\n\t\tjFrom.addDateChangeListener(listener);\r\n\r\n\t\tJLabel jToLabel = new JLabel(TabsTracker.get().to());\r\n\t\tjTo = new JDateChooser(true);\r\n\t\tif (trackerSettings.getToDate() != null) {\r\n\t\t\tjTo.setDate(trackerSettings.getToDate());\r\n\t\t}\r\n\t\tjTo.addDateChangeListener(listener);\r\n\r\n\t\tjShow = new JDropDownButton(TabsTracker.get().show(), Images.LOC_INCLUDE.getIcon());\r\n\t\tjShow.setHorizontalAlignment(JButton.LEFT);\r\n\t\tjShow.setIcon(trackerSettings.hasShowOption(ShowOption.ALL) ? Images.LOC_INCLUDE.getIcon() : Images.EDIT_EDIT_WHITE.getIcon());\r\n\r\n\t\tjAll = new JCheckBoxMenuItem(General.get().all());\r\n\t\tjAll.setSelected(trackerSettings.hasShowOption(ShowOption.ALL));\r\n\t\tjAll.setActionCommand(TrackerAction.ALL.name());\r\n\t\tjAll.addActionListener(listener);\r\n\t\tjAll.setFont(new Font(jAll.getFont().getName(), Font.ITALIC, jAll.getFont().getSize()));\r\n\t\tjShow.add(jAll, true);\r\n\r\n\t\tjTotal = new JCheckBoxMenuItem(TabsTracker.get().total());\r\n\t\tjTotal.setSelected(trackerSettings.hasShowOption(ShowOption.ALL) || trackerSettings.hasShowOption(ShowOption.TOTAL));\r\n\t\tjTotal.setActionCommand(TrackerAction.UPDATE_SHOWN.name());\r\n\t\tjTotal.addActionListener(listener);\r\n\t\tjShow.add(jTotal, true);\r\n\r\n\t\tjWalletBalance = new JCheckBoxMenuItem(TabsTracker.get().walletBalance());\r\n\t\tjWalletBalance.setSelected(trackerSettings.hasShowOption(ShowOption.ALL) || trackerSettings.hasShowOption(ShowOption.WALLET));\r\n\t\tjWalletBalance.setActionCommand(TrackerAction.UPDATE_SHOWN.name());\r\n\t\tjWalletBalance.addActionListener(listener);\r\n\t\tjShow.add(jWalletBalance, true);\r\n\r\n\t\tjWalletBalanceFilters = new JButton(TabsTracker.get().walletBalanceFilters());\r\n\t\tjWalletBalanceFilters.setIcon(Images.LOC_INCLUDE.getIcon());\r\n\t\tjWalletBalanceFilters.setHorizontalAlignment(JButton.LEFT);\r\n\t\tjWalletBalanceFilters.setActionCommand(TrackerAction.FILTER_WALLET_BALANCE.name());\r\n\t\tjWalletBalanceFilters.addActionListener(listener);\r\n\r\n\t\tjAssets = new JCheckBoxMenuItem(TabsTracker.get().assets());\r\n\t\tjAssets.setSelected(trackerSettings.hasShowOption(ShowOption.ALL) || trackerSettings.hasShowOption(ShowOption.ASSET));\r\n\t\tjAssets.setActionCommand(TrackerAction.UPDATE_SHOWN.name());\r\n\t\tjAssets.addActionListener(listener);\r\n\t\tjShow.add(jAssets, true);\r\n\r\n\t\tjImplants = new JCheckBoxMenuItem(TabsTracker.get().implants());\r\n\t\tjImplants.setSelected(trackerSettings.hasShowOption(ShowOption.ALL) || trackerSettings.hasShowOption(ShowOption.IMPLANT));\r\n\t\tjImplants.setActionCommand(TrackerAction.UPDATE_SHOWN.name());\r\n\t\tjImplants.addActionListener(listener);\r\n\t\tjShow.add(jImplants, true);\r\n\r\n\t\tjAssetsFilters = new JButton(TabsTracker.get().assetsFilters());\r\n\t\tjAssetsFilters.setIcon(Images.LOC_INCLUDE.getIcon());\r\n\t\tjAssetsFilters.setHorizontalAlignment(JButton.LEFT);\r\n\t\tjAssetsFilters.setActionCommand(TrackerAction.FILTER_ASSETS.name());\r\n\t\tjAssetsFilters.addActionListener(listener);\r\n\r\n\t\tjSellOrders = new JCheckBoxMenuItem(TabsTracker.get().sellOrders());\r\n\t\tjSellOrders.setSelected(trackerSettings.hasShowOption(ShowOption.ALL) || trackerSettings.hasShowOption(ShowOption.SELL_ORDER));\r\n\t\tjSellOrders.setActionCommand(TrackerAction.UPDATE_SHOWN.name());\r\n\t\tjSellOrders.addActionListener(listener);\r\n\t\tjShow.add(jSellOrders, true);\r\n\r\n\t\tjEscrows = new JCheckBoxMenuItem(TabsTracker.get().escrows());\r\n\t\tjEscrows.setSelected(trackerSettings.hasShowOption(ShowOption.ALL) || trackerSettings.hasShowOption(ShowOption.ESCROW));\r\n\t\tjEscrows.setActionCommand(TrackerAction.UPDATE_SHOWN.name());\r\n\t\tjEscrows.addActionListener(listener);\r\n\t\tjShow.add(jEscrows, true);\r\n\r\n\t\tjEscrowsToCover = new JCheckBoxMenuItem(TabsTracker.get().escrowsToCover());\r\n\t\tjEscrowsToCover.setSelected(trackerSettings.hasShowOption(ShowOption.ALL) || trackerSettings.hasShowOption(ShowOption.ESCROW_TO_COVER));\r\n\t\tjEscrowsToCover.setActionCommand(TrackerAction.UPDATE_SHOWN.name());\r\n\t\tjEscrowsToCover.addActionListener(listener);\r\n\t\tjShow.add(jEscrowsToCover, true);\r\n\r\n\t\tjManufacturing = new JCheckBoxMenuItem(TabsTracker.get().manufacturing());\r\n\t\tjManufacturing.setSelected(trackerSettings.hasShowOption(ShowOption.ALL) || trackerSettings.hasShowOption(ShowOption.MANUFACTURING));\r\n\t\tjManufacturing.setActionCommand(TrackerAction.UPDATE_SHOWN.name());\r\n\t\tjManufacturing.addActionListener(listener);\r\n\t\tjShow.add(jManufacturing, true);\r\n\r\n\t\tjContractCollateral = new JCheckBoxMenuItem(TabsTracker.get().contractCollateral());\r\n\t\tjContractCollateral.setSelected(trackerSettings.hasShowOption(ShowOption.ALL) || trackerSettings.hasShowOption(ShowOption.COLLATERAL));\r\n\t\tjContractCollateral.setActionCommand(TrackerAction.UPDATE_SHOWN.name());\r\n\t\tjContractCollateral.addActionListener(listener);\r\n\t\tjShow.add(jContractCollateral, true);\r\n\r\n\t\tjContractValue = new JCheckBoxMenuItem(TabsTracker.get().contractValue());\r\n\t\tjContractValue.setSelected(trackerSettings.hasShowOption(ShowOption.ALL) || trackerSettings.hasShowOption(ShowOption.CONTRACT));\r\n\t\tjContractValue.setActionCommand(TrackerAction.UPDATE_SHOWN.name());\r\n\t\tjContractValue.addActionListener(listener);\r\n\t\tjShow.add(jContractValue, true);\r\n\r\n\t\tjSkillPointsValue = new JCheckBoxMenuItem(TabsTracker.get().skillPointValue());\r\n\t\tjSkillPointsValue.setSelected(trackerSettings.hasShowOption(ShowOption.ALL) || trackerSettings.hasShowOption(ShowOption.SKILL_POINT));\r\n\t\tjSkillPointsValue.setActionCommand(TrackerAction.UPDATE_SHOWN.name());\r\n\t\tjSkillPointsValue.addActionListener(listener);\r\n\t\tjShow.add(jSkillPointsValue, true);\r\n\r\n\t\tjSkillPointsFilters = new JButton(TabsTracker.get().skillPointFilters());\r\n\t\tjSkillPointsFilters.setIcon(Images.LOC_INCLUDE.getIcon());\r\n\t\tjSkillPointsFilters.setHorizontalAlignment(JButton.LEFT);\r\n\t\tjSkillPointsFilters.setActionCommand(TrackerAction.FILTER_SKILL_POINTS.name());\r\n\t\tjSkillPointsFilters.addActionListener(listener);\r\n\r\n\t\tJSeparator jOwnersSeparator = new JSeparator();\r\n\r\n\t\tjAllProfiles = new JCheckBox(TabsTracker.get().allProfiles());\r\n\t\tjAllProfiles.setSelected(trackerSettings.isAllProfiles());\r\n\t\tjAllProfiles.setActionCommand(TrackerAction.PROFILE.name());\r\n\t\tjAllProfiles.addActionListener(listener);\r\n\r\n\t\tjCharacterCorporations = new JCheckBox(TabsTracker.get().characterCorporations());\r\n\t\tjCharacterCorporations.setSelected(trackerSettings.isCharacterCorporations());\r\n\t\tjCharacterCorporations.setActionCommand(TrackerAction.PROFILE.name());\r\n\t\tjCharacterCorporations.addActionListener(listener);\r\n\r\n\t\tjOwners = new JMultiSelectionList<>();\r\n\t\tjOwners.getSelectionModel().addListSelectionListener(listener);\r\n\t\tJScrollPane jOwnersScroll = new JScrollPane(jOwners);\r\n\r\n\t\tjTotalStatus = StatusPanel.createLabel(TabsTracker.get().statusTotal(), new ColorIcon(Color.RED.darker()), AutoNumberFormat.ISK);\r\n\t\tthis.addStatusbarLabel(jTotalStatus);\r\n\r\n\t\tjWalletBalanceStatus = StatusPanel.createLabel(TabsTracker.get().statusBalance(), new ColorIcon(Color.BLUE.darker()), AutoNumberFormat.ISK);\r\n\t\tthis.addStatusbarLabel(jWalletBalanceStatus);\r\n\r\n\t\tjAssetsStatus = StatusPanel.createLabel(TabsTracker.get().statusAssets(), new ColorIcon(Color.GREEN.darker().darker()), AutoNumberFormat.ISK);\r\n\t\tthis.addStatusbarLabel(jAssetsStatus);\r\n\r\n\t\tjImplantsStatus = StatusPanel.createLabel(TabsTracker.get().statusImplants(), new ColorIcon(Color.MAGENTA.darker()), AutoNumberFormat.ISK);\r\n\t\tthis.addStatusbarLabel(jImplantsStatus);\r\n\r\n\t\tjSellOrdersStatus = StatusPanel.createLabel(TabsTracker.get().statusSellOrders(), new ColorIcon(Color.CYAN.darker()), AutoNumberFormat.ISK);\r\n\t\tthis.addStatusbarLabel(jSellOrdersStatus);\r\n\r\n\t\tjEscrowsStatus = StatusPanel.createLabel(TabsTracker.get().statusEscrows(), new ColorIcon(Color.BLACK), AutoNumberFormat.ISK);\r\n\t\tthis.addStatusbarLabel(jEscrowsStatus);\r\n\r\n\t\tjEscrowsToCoverStatus = StatusPanel.createLabel(TabsTracker.get().statusEscrowsToCover(), new ColorIcon(Color.GRAY), AutoNumberFormat.ISK);\r\n\t\tthis.addStatusbarLabel(jEscrowsToCoverStatus);\r\n\r\n\t\tjManufacturingStatus = StatusPanel.createLabel(TabsTracker.get().statusManufacturing(), new ColorIcon(Color.MAGENTA), AutoNumberFormat.ISK);\r\n\t\tthis.addStatusbarLabel(jManufacturingStatus);\r\n\r\n\t\tjContractCollateralStatus = StatusPanel.createLabel(TabsTracker.get().statusContractCollateral(), new ColorIcon(Color.PINK), AutoNumberFormat.ISK);\r\n\t\tthis.addStatusbarLabel(jContractCollateralStatus);\r\n\r\n\t\tjContractValueStatus = StatusPanel.createLabel(TabsTracker.get().statusContractValue(), new ColorIcon(Color.ORANGE), AutoNumberFormat.ISK);\r\n\t\tthis.addStatusbarLabel(jContractValueStatus);\r\n\r\n\t\tjSkillPointsStatus = StatusPanel.createLabel(TabsTracker.get().statusSkillPointValue(), new ColorIcon(Color.YELLOW), AutoNumberFormat.ISK);\r\n\t\tthis.addStatusbarLabel(jSkillPointsStatus);\r\n\r\n\t\tJLabel jHelp = new JLabel(TabsTracker.get().help());\r\n\t\tjHelp.setIcon(Images.MISC_HELP.getIcon());\r\n\r\n\t\tJLabel jNoFilter = new JLabel(TabsTracker.get().helpLegacyData());\r\n\t\tjNoFilter.setToolTipText(TabsTracker.get().helpLegacyDataToolTip());\r\n\t\tjNoFilter.setIcon(new ShapeIcon(NO_FILTER));\r\n\t\tInstantToolTip.install(jNoFilter);\r\n\r\n\t\tJLabel jBuggedFilter = new JLabel(TabsTracker.get().helpBugData());\r\n\t\tjBuggedFilter.setToolTipText(TabsTracker.get().helpBugDataToolTip());\r\n\t\tjBuggedFilter.setIcon(new ShapeIcon(BUG_CORP_CONTAINERS_FILTER));\r\n\t\tInstantToolTip.install(jBuggedFilter);\r\n\r\n\t\tJLabel jFilter = new JLabel(TabsTracker.get().helpNewData());\r\n\t\tjFilter.setToolTipText(TabsTracker.get().helpNewDataToolTip());\r\n\t\tjFilter.setIcon(new ShapeIcon(FILTER_AND_DEFAULT));\r\n\t\tInstantToolTip.install(jFilter);\r\n\r\n\t\tJDropDownButton jSettings = new JDropDownButton(Images.DIALOG_SETTINGS.getIcon(), JDropDownButton.RIGHT);\r\n\r\n\t\tjImportFile = new JMenuItem(TabsTracker.get().importFile(), Images.EDIT_IMPORT.getIcon());\r\n\t\tjImportFile.setSelected(true);\r\n\t\tjImportFile.setActionCommand(TrackerAction.IMPORT_FILE.name());\r\n\t\tjImportFile.addActionListener(listener);\r\n\t\tjSettings.add(jImportFile);\r\n\r\n\t\tjSettings.addSeparator();\r\n\r\n\t\tjIncludeZero = new JCheckBoxMenuItem(TabsTracker.get().includeZero());\r\n\t\tjIncludeZero.setSelected(trackerSettings.isIncludeZero());\r\n\t\tjIncludeZero.setActionCommand(TrackerAction.INCLUDE_ZERO.name());\r\n\t\tjIncludeZero.addActionListener(listener);\r\n\t\tjSettings.add(jIncludeZero);\r\n\r\n\t\tjSettings.addSeparator();\r\n\r\n\t\tButtonGroup buttonGroup = new ButtonGroup();\r\n\r\n\t\tJRadioButtonMenuItem jLinear = new JRadioButtonMenuItem(TabsTracker.get().scaleLinear());\r\n\t\tjLinear.setSelected(trackerSettings.getDisplayType() == DisplayType.LINEAR);\r\n\t\tjLinear.setActionCommand(TrackerAction.LOGARITHMIC.name());\r\n\t\tjLinear.addActionListener(listener);\r\n\t\tjSettings.add(jLinear);\r\n\t\tbuttonGroup.add(jLinear);\r\n\r\n\t\tjLogarithmic = new JRadioButtonMenuItem(TabsTracker.get().scaleLogarithmic());\r\n\t\tjLogarithmic.setSelected(trackerSettings.getDisplayType() == DisplayType.LOGARITHMIC);\r\n\t\tjLogarithmic.setActionCommand(TrackerAction.LOGARITHMIC.name());\r\n\t\tjLogarithmic.addActionListener(listener);\r\n\t\tjSettings.add(jLogarithmic);\r\n\t\tbuttonGroup.add(jLogarithmic);\r\n\r\n\t\tdomainAxis = JFreeChartUtil.createDateAxis();\r\n\t\trangeLogarithmicAxis = JFreeChartUtil.createLogarithmicAxis(trackerSettings.isIncludeZero());\r\n\t\trangeLinearAxis = JFreeChartUtil.createNumberAxis(trackerSettings.isIncludeZero());\r\n\r\n\t\trenderer = new MyRenderer();\r\n\t\trenderer.setDefaultToolTipGenerator(new XYToolTipGenerator() {\r\n\t\t\t@Override\r\n\t\t\tpublic String generateToolTip(XYDataset dataset, int series, int item)\t{\r\n\t\t\t\tDate date = new Date(dataset.getX(series, item).longValue());\r\n\t\t\t\tNumber isk = dataset.getY(series, item);\r\n\t\t\t\tStringBuilder stringBuilder = new StringBuilder();\r\n\t\t\t\tstringBuilder.append(\"<html>\");\r\n\t\t\t\tstringBuilder.append(\"<b>\");\r\n\t\t\t\tstringBuilder.append(dataset.getSeriesKey(series));\r\n\t\t\t\tstringBuilder.append(\":</b> \");\r\n\t\t\t\tstringBuilder.append(Formatter.iskFormat(isk));\r\n\t\t\t\tstringBuilder.append(\"<br>\");\r\n\t\t\t\tstringBuilder.append(\"<b>\");\r\n\t\t\t\tstringBuilder.append(TabsTracker.get().date());\r\n\t\t\t\tstringBuilder.append(\":</b> \");\r\n\t\t\t\tstringBuilder.append(Formatter.columnDateOnly(date));\r\n\t\t\t\tTrackerNote trackerNote = trackerSettings.getNotes().get(new TrackerDate(date));\r\n\t\t\t\tif (trackerNote != null) {\r\n\t\t\t\t\tstringBuilder.append(\"<br><b>\");\r\n\t\t\t\t\tstringBuilder.append(TabsTracker.get().note());\r\n\t\t\t\t\tstringBuilder.append(\":</b> \");\r\n\t\t\t\t\tstringBuilder.append(trackerNote.getNote());\r\n\t\t\t\t}\r\n\t\t\t\treturn stringBuilder.toString();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tXYPlot plot;\r\n\t\tif (trackerSettings.getDisplayType() == DisplayType.LINEAR) {\r\n\t\t\tplot = JFreeChartUtil.createPlot(dataset, domainAxis, rangeLinearAxis, renderer);\r\n\t\t} else {\r\n\t\t\tplot = JFreeChartUtil.createPlot(dataset, domainAxis, rangeLogarithmicAxis, renderer);\r\n\t\t}\r\n\t\tplot.setDrawingSupplier(new MyDrawingSupplier());\r\n\t\tjFreeChart = JFreeChartUtil.createChart(plot);\r\n\t\tjChartPanel = JFreeChartUtil.createChartPanel(jFreeChart);\r\n\t\tjChartPanel.addChartMouseListener(listener);\r\n\r\n\t\tint gapWidth = 5;\r\n\t\tint labelWidth = Math.max(jFromLabel.getPreferredSize().width, jToLabel.getPreferredSize().width);\r\n\t\tint panelWidth = Math.max(PANEL_WIDTH_MINIMUM, jCharacterCorporations.getPreferredSize().width);\r\n\t\tpanelWidth = Math.max(panelWidth, jFrom.getPreferredSize().width + labelWidth + gapWidth);\r\n\t\tpanelWidth = Math.max(panelWidth, jTo.getPreferredSize().width + labelWidth + gapWidth);\r\n\t\tint dateWidth = panelWidth - labelWidth - gapWidth;\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t\t.addComponent(jHelp)\r\n\t\t\t\t\t\t.addGap(20)\r\n\t\t\t\t\t\t.addComponent(jNoFilter)\r\n\t\t\t\t\t\t.addGap(20)\r\n\t\t\t\t\t\t.addComponent(jBuggedFilter)\r\n\t\t\t\t\t\t.addGap(20)\r\n\t\t\t\t\t\t.addComponent(jFilter)\r\n\t\t\t\t\t\t.addGap(20, 20, Integer.MAX_VALUE)\r\n\t\t\t\t\t\t.addComponent(jSettings, Program.getIconButtonsWidth(), Program.getIconButtonsWidth(), Program.getIconButtonsWidth())\r\n\t\t\t\t\t\t.addGap(6)\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addComponent(jChartPanel)\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jQuickDate, panelWidth, panelWidth, panelWidth)\r\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t\t.addComponent(jFromLabel, labelWidth, labelWidth, labelWidth)\r\n\t\t\t\t\t\t\t.addComponent(jToLabel, labelWidth, labelWidth, labelWidth)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.addGap(gapWidth)\r\n\t\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t\t.addComponent(jFrom, dateWidth, dateWidth, dateWidth)\r\n\t\t\t\t\t\t\t.addComponent(jTo, dateWidth, dateWidth, dateWidth)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addComponent(jDateSeparator, panelWidth, panelWidth, panelWidth)\r\n\t\t\t\t\t.addComponent(jShow, panelWidth, panelWidth, panelWidth)\r\n\t\t\t\t\t.addComponent(jAssetsFilters, panelWidth, panelWidth, panelWidth)\r\n\t\t\t\t\t.addComponent(jWalletBalanceFilters, panelWidth, panelWidth, panelWidth)\r\n\t\t\t\t\t.addComponent(jSkillPointsFilters, panelWidth, panelWidth, panelWidth)\r\n\t\t\t\t\t.addComponent(jOwnersSeparator, panelWidth, panelWidth, panelWidth)\r\n\t\t\t\t\t.addComponent(jAllProfiles, panelWidth, panelWidth, panelWidth)\r\n\t\t\t\t\t.addComponent(jCharacterCorporations, panelWidth, panelWidth, panelWidth)\r\n\t\t\t\t\t.addComponent(jOwnersScroll, panelWidth, panelWidth, panelWidth)\r\n\t\t\t\t)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createParallelGroup()\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t\t.addComponent(jHelp, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t\t\t.addComponent(jNoFilter, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t\t\t.addComponent(jBuggedFilter, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t\t\t.addComponent(jFilter, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t\t\t.addComponent(jSettings, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addComponent(jChartPanel)\r\n\t\t\t\t)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addComponent(jQuickDate, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t.addComponent(jFromLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t\t.addComponent(jFrom, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t\t.addComponent(jToLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t\t.addComponent(jTo, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.addComponent(jDateSeparator, 3, 3, 3)\r\n\t\t\t\t\t.addComponent(jShow, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jAssetsFilters, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jWalletBalanceFilters, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jSkillPointsFilters, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jOwnersSeparator, 3, 3, 3)\r\n\t\t\t\t\t.addComponent(jAllProfiles, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jCharacterCorporations, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jOwnersScroll, 70, 70, Integer.MAX_VALUE)\r\n\t\t\t\t)\r\n\t\t);\r\n\t\tDataSetCreator.purgeInvalidTrackerAssetValues();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void updateData() {\r\n\t\tupdateNodes(); //Must be first or NPE!\r\n\t\tupdateButtonIcons();\r\n\t\tupdateOwners();\r\n\t\tcreateData();\r\n\t\tupdateFilterButtons();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void repaintTable() {\r\n\t\tupdateShown();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void clearData() { }\r\n\r\n\t@Override\r\n\tpublic void updateCache() { }\r\n\r\n\t@Override\r\n\tpublic Collection<net.nikr.eve.jeveasset.data.settings.types.LocationType> getLocations() {\r\n\t\treturn new ArrayList<>(); //No Location\r\n\t}\r\n\r\n\tpublic void checkAll() {\r\n\t\tif (!Settings.get().isAskedCheckAllTracker()) {\r\n\t\t\tSettings.lock(\"Tracker: Check All\");\r\n\t\t\tSettings.get().setAskedCheckAllTracker(true);\r\n\t\t\tSettings.unlock(\"Tracker: Check All\");\r\n\t\t\tprogram.saveSettings(\"Tracker: Check All\");\r\n\t\t\tboolean isAll = true;\r\n\t\t\tfor (CheckBoxNode node : assetNodes.values()) {\r\n\t\t\t\tif (!node.isSelected()) {\r\n\t\t\t\t\tisAll = false;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tboolean empty = false;\r\n\t\t\ttry {\r\n\t\t\t\tTrackerData.readLock();\r\n\t\t\t\tempty = TrackerData.get().isEmpty();\r\n\t\t\t} finally {\r\n\t\t\t\tTrackerData.readUnlock();\r\n\t\t\t}\r\n\t\t\tif (!isAll && !empty) {\r\n\t\t\t\tint value = JOptionPane.showConfirmDialog(program.getMainWindow().getFrame(), TabsTracker.get().checkAllLocationsMsg(), TabsTracker.get().checkAllLocationsTitle(), JOptionPane.OK_CANCEL_OPTION);\r\n\t\t\t\tif (value == JOptionPane.OK_OPTION) {\r\n\t\t\t\t\tfor (CheckBoxNode node : assetNodes.values()) {\r\n\t\t\t\t\t\tif (node.isParent()) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tnode.setSelected(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tupdateSettings();\r\n\t\t\t\t\tcreateData();\r\n\t\t\t\t\tupdateButtonIcons();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tshowLocationFilter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void showSkillPointsFilter() {\r\n\t\tboolean save = skillPointsFilterDialog.show();\r\n\t\tif (save) {\r\n\t\t\t//Tracker\r\n\t\t\tif (program.getMainWindow().isOpen(this)) {\r\n\t\t\t\tcreateData();\r\n\t\t\t\tupdateButtonIcons();\r\n\t\t\t}\r\n\t\t\t//Isk\r\n\t\t\tValueTableTab iskTab = program.getIskTab(false);\r\n\t\t\tif (iskTab != null && program.getMainWindow().isOpen(iskTab)) {\r\n\t\t\t\tiskTab.updateData();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void updateFilterButtons() {\r\n\t\tif (updateLock) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tList<String> owners = jOwners.getSelectedValuesList();\r\n\t\tboolean balanceFilter = false;\r\n\t\tboolean assetsFilter = false;\r\n\t\ttry {\r\n\t\t\tTrackerData.readLock();\r\n\t\t\tfor (String owner : owners) {\r\n\t\t\t\tfor (Value data : TrackerData.get().get(owner)) {\r\n\t\t\t\t\t//Get all account wallet account keys\r\n\t\t\t\t\tif (!data.getBalanceFilter().isEmpty()) {\r\n\t\t\t\t\t\tbalanceFilter = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//Get all asset IDs\r\n\t\t\t\t\tif (!data.getAssetsFilter().isEmpty()) {\r\n\t\t\t\t\t\tassetsFilter = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (balanceFilter && assetsFilter) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tTrackerData.readUnlock();\r\n\t\t}\r\n\t\tjWalletBalanceFilters.setEnabled(balanceFilter);\r\n\t\tjAssetsFilters.setEnabled(assetsFilter);\r\n\t}\r\n\r\n\tprivate void updateOwners() {\r\n\t\tupdateLock = true;\r\n\t\tSet<String> trackerOwners;\r\n\t\ttry {\r\n\t\t\tTrackerData.readLock();\r\n\t\t\ttrackerOwners = new TreeSet<>(TrackerData.get().keySet());\r\n\t\t} finally {\r\n\t\t\tTrackerData.readUnlock();\r\n\t\t}\r\n\t\tSet<String> uniqueOwners;\r\n\t\tif (jAllProfiles.isSelected()) {\r\n\t\t\tuniqueOwners = new HashSet<>(trackerOwners);\r\n\t\t} else { //Profile owners\r\n\t\t\tuniqueOwners = new HashSet<>();\r\n\t\t\tboolean characterCorporations = jCharacterCorporations.isSelected();\r\n\t\t\tfor (OwnerType owner : program.getOwnerTypes()) {\r\n\t\t\t\tif (trackerOwners.contains(owner.getOwnerName())) {\r\n\t\t\t\t\tuniqueOwners.add(owner.getOwnerName());\r\n\t\t\t\t}\r\n\t\t\t\tif (characterCorporations && owner.getCorporationName() != null && trackerOwners.contains(owner.getCorporationName())) {\r\n\t\t\t\t\tuniqueOwners.add(owner.getCorporationName());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tfinal List<String> ownersList = new ArrayList<>(uniqueOwners);\r\n\t\tCollections.sort(ownersList);\r\n\t\tif (ownersList.isEmpty()) {\r\n\t\t\tjOwners.setEnabled(false);\r\n\t\t\tjOwners.setModel(new AbstractListModel<String>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize() {\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic String getElementAt(int index) {\r\n\t\t\t\t\treturn TabsTracker.get().noDataFound();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tjOwners.setEnabled(true);\r\n\t\t\tjOwners.setModel(new AbstractListModel<String>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize() {\r\n\t\t\t\t\treturn ownersList.size();\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic String getElementAt(int index) {\r\n\t\t\t\t\treturn ownersList.get(index);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tList<String> owners = Settings.get().getTrackerSettings().getSelectedOwners();\r\n\t\t\tif (owners == null) {\r\n\t\t\t\tjOwners.selectAll();\r\n\t\t\t} else {\r\n\t\t\t\tListModel<String> model = jOwners.getModel();\r\n\t\t\t\tfor (int i = 0; i < model.getSize(); i++) {\r\n\t\t\t\t\tString ownerName = model.getElementAt(i);\r\n\t\t\t\t\tif (owners.contains(ownerName)) {\r\n\t\t\t\t\t\tjOwners.addSelectionInterval(i, i);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tupdateLock = false;\r\n\t}\r\n\r\n\tprivate void updateNodes() {\r\n\t\taccountNodes.clear();\r\n\t\tassetNodes.clear();\r\n\t//Find all saved Keys/IDs\r\n\t\tSet<String> walletIDs = new TreeSet<>();\r\n\t\tSet<AssetValue> assetsIDs = new TreeSet<>();\r\n\t\ttry {\r\n\t\t\tTrackerData.readLock();\r\n\t\t\tfor (List<Value> list : TrackerData.get().values()) {\r\n\t\t\t\tfor (Value data : list) {\r\n\t\t\t\t\t//Get all account wallet account keys\r\n\t\t\t\t\twalletIDs.addAll(data.getBalanceFilter().keySet());\r\n\t\t\t\t\t//Get all asset IDs\r\n\t\t\t\t\tassetsIDs.addAll(data.getAssetsFilter().keySet());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tTrackerData.readUnlock();\r\n\t\t}\r\n\r\n\t\t//WALLET - Make nodes for found wallet account keys\r\n\t\tCheckBoxNode corporationWalletNode = new CheckBoxNode(null, TabsTracker.get().corporationWallet(), TabsTracker.get().corporationWallet(), false);\r\n\t\tfor (String id : walletIDs) {\r\n\t\t\taccountNodes.put(id, new CheckBoxNode(corporationWalletNode, id, TabsTracker.get().division(id), selectNode(id)));\r\n\t\t}\r\n\t\tString characterWalletID = \"0\";\r\n\t\tCheckBoxNode characterWalletNode = new CheckBoxNode(null, characterWalletID, TabsTracker.get().characterWallet(), selectNode(characterWalletID));\r\n\t\taccountNodes.put(characterWalletID, characterWalletNode);\r\n\r\n\t\t//ASSETS - Make nodes for found asset IDs\r\n\t\tCheckBoxNode assetNode = new CheckBoxNode(null, TabsTracker.get().assets(), TabsTracker.get().assets(), false);\r\n\t\tassetNodes.put(assetNode.getNodeID(), assetNode);\r\n\t\tCheckBoxNode knownLocationsNode = new CheckBoxNode(assetNode, TabsTracker.get().knownLocations(), TabsTracker.get().knownLocations(), false);\r\n\t\tassetNodes.put(knownLocationsNode.getNodeID(), knownLocationsNode);\r\n\t\tCheckBoxNode unknownLocationsNode = new CheckBoxNode(assetNode, TabsTracker.get().unknownLocations(), TabsTracker.get().unknownLocations(), false);\r\n\t\tassetNodes.put(unknownLocationsNode.getNodeID(), unknownLocationsNode);\r\n\r\n\t\tMap<String, CheckBoxNode> nodeCache = new HashMap<>();\r\n\t\tfor (AssetValue assetValue : assetsIDs) {\r\n\t\t\tString location = assetValue.getLocation();\r\n\t\t\tString flag = assetValue.getFlag();\r\n\t\t\tString id = assetValue.getID();\r\n\t\t\tCheckBoxNode locationNode = nodeCache.get(location);\r\n\t\t\tif (locationNode == null) {\r\n\t\t\t\tif (location.startsWith(\"[Unknown Location #\")) {\r\n\t\t\t\t\tlocationNode = new CheckBoxNode(unknownLocationsNode, location, location, selectNode(location));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlocationNode = new CheckBoxNode(knownLocationsNode, location, location, selectNode(location));\r\n\t\t\t\t}\r\n\t\t\t\tnodeCache.put(location, locationNode);\r\n\t\t\t\tassetNodes.put(locationNode.getNodeID(), locationNode);\r\n\t\t\t}\r\n\r\n\t\t\tCheckBoxNode flagNode = nodeCache.get(id);\r\n\t\t\tif (flagNode == null) {\r\n\t\t\t\tif (!locationNode.isParent()) { //When adding first child\r\n\t\t\t\t\t//Replace parent location (don't use location as ID)\r\n\t\t\t\t\tnodeCache.remove(location);\r\n\t\t\t\t\tassetNodes.remove(location);\r\n\t\t\t\t\tString locationNodeID = locationNode.getNodeID() + \" > Parent\";\r\n\t\t\t\t\tif (location.startsWith(\"[Unknown Location #\")) {\r\n\t\t\t\t\t\tlocationNode = new CheckBoxNode(unknownLocationsNode, locationNodeID, location, selectNode(locationNodeID));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tlocationNode = new CheckBoxNode(knownLocationsNode, locationNodeID, location, selectNode(locationNodeID));\r\n\t\t\t\t\t}\r\n\t\t\t\t\tnodeCache.put(location, locationNode);\r\n\t\t\t\t\tassetNodes.put(locationNodeID, locationNode);\r\n\r\n\t\t\t\t\t//Other Node (use the location as ID)\r\n\t\t\t\t\tCheckBoxNode otherNode = new CheckBoxNode(locationNode, location, TabsTracker.get().other(), selectNode(location));\r\n\t\t\t\t\tassetNodes.put(location, otherNode);\r\n\t\t\t\t}\r\n\t\t\t\tflagNode = new CheckBoxNode(locationNode, id, ApiIdConverter.getFlagName(flag), selectNode(id));\r\n\t\t\t\tnodeCache.put(id, flagNode);\r\n\t\t\t}\r\n\t\t\tassetNodes.put(id, flagNode);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate boolean selectNode(String id) {\r\n\t\tBoolean selected = Settings.get().getTrackerSettings().getFilters().get(id);\r\n\t\tif (selected != null) {\r\n\t\t\treturn selected;\r\n\t\t} else {\r\n\t\t\treturn Settings.get().getTrackerSettings().isSelectNew();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void createData() {\r\n\t\tif (updateLock) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tList<String> owners = jOwners.getSelectedValuesList();\r\n\t\twalletBalance = new TimePeriodValues(TabsTracker.get().walletBalance());\r\n\t\tassets = new TimePeriodValues(TabsTracker.get().assets());\r\n\t\timplants = new TimePeriodValues(TabsTracker.get().implants());\r\n\t\tsellOrders = new TimePeriodValues(TabsTracker.get().sellOrders());\r\n\t\tescrows = new TimePeriodValues(TabsTracker.get().escrows());\r\n\t\tescrowsToCover = new TimePeriodValues(TabsTracker.get().escrowsToCover());\r\n\t\tmanufacturing = new TimePeriodValues(TabsTracker.get().manufacturing());\r\n\t\tcontractCollateral = new TimePeriodValues(TabsTracker.get().contractCollateral());\r\n\t\tcontractValue = new TimePeriodValues(TabsTracker.get().contractValue());\r\n\t\tskillPointsValue = new TimePeriodValues(TabsTracker.get().skillPointValue());\r\n\t\tDate from = getFromDate();\r\n\t\tDate to = getToDate();\r\n\t\tcache = new TreeMap<>();\r\n\t\tMap<String, CheckBoxNode> accountNodesMap = new HashMap<>(accountNodes);\r\n\t\tMap<String, CheckBoxNode> assetNodesMap = new HashMap<>(assetNodes);\r\n\t\tMap<Date, Boolean> assetNoFilterColumns = new TreeMap<>();\r\n\t\tMap<Date, Boolean> assetBuggedFilterColumns = new TreeMap<>();\r\n\t\tMap<Date, Boolean> walletColumns = new TreeMap<>();\r\n\t\tif (owners != null) { //No data set...\r\n\t\t\ttry {\r\n\t\t\t\tTrackerData.readLock();\r\n\t\t\t\tMap<Date, Map<String, Value>> trackerDataByDate = getTrackerDataByDate(owners);\r\n\t\t\t\tMap<String, Value> lastMap = new HashMap<>();\r\n\t\t\t\tfor (Map.Entry<Date, Map<String, Value>> dateEntry : trackerDataByDate.entrySet()) {\r\n\t\t\t\t\tfinal Date date = dateEntry.getKey();\r\n\t\t\t\t\tfinal Value value;\r\n\t\t\t\t\tif ((from == null || date.after(from)) && (to == null || date.before(to))) {\r\n\t\t\t\t\t\tvalue = new Value(date);\r\n\t\t\t\t\t\tcache.put(new SimpleTimePeriod(date, date), value);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfor (Map.Entry<String, Value> ownerEntry : dateEntry.getValue().entrySet()) {\r\n\t\t\t\t\t\tValue data = ownerEntry.getValue();\r\n\t\t\t\t\t\tif (data == null) {\r\n\t\t\t\t\t\t\tValue last = lastMap.get(ownerEntry.getKey());\r\n\t\t\t\t\t\t\tif (last != null) {\r\n\t\t\t\t\t\t\t\tdata = last;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (data == null) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tlastMap.put(ownerEntry.getKey(), data);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t//Assets containers fixed\r\n\t\t\t\t\t\tassetBuggedFilterColumns.put(date, data.isAssetsContainersFixed());\r\n\t\t\t\t\t\t//Assets Filters\r\n\t\t\t\t\t\tif (data.getAssetsFilter().isEmpty()) {\r\n\t\t\t\t\t\t\tvalue.addAssets(data.getAssetsTotal());\r\n\t\t\t\t\t\t\t//Default\r\n\t\t\t\t\t\t\tBoolean assetBoolean = assetNoFilterColumns.get(date);\r\n\t\t\t\t\t\t\tif (assetBoolean == null) {\r\n\t\t\t\t\t\t\t\tassetNoFilterColumns.put(date, false);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tassetNoFilterColumns.put(date, true);\r\n\t\t\t\t\t\t\tfor (Map.Entry<AssetValue, Double> entry : data.getAssetsFilter().entrySet()) {\r\n\t\t\t\t\t\t\t\tif (assetNodesMap.get(entry.getKey().getID()).isSelected()) {\r\n\t\t\t\t\t\t\t\t\tvalue.addAssets(entry.getValue());\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvalue.addEscrows(data.getEscrows());\r\n\t\t\t\t\t\tvalue.addEscrowsToCover(data.getEscrowsToCover());\r\n\t\t\t\t\t\tvalue.addManufacturing(data.getManufacturing());\r\n\t\t\t\t\t\tvalue.addContractCollateral(data.getContractCollateral());\r\n\t\t\t\t\t\tvalue.addContractValue(data.getContractValue());\r\n\t\t\t\t\t\tTrackerSkillPointFilter skillPointFilter = Settings.get().getTrackerSettings().getSkillPointFilters().get(ownerEntry.getKey());\r\n\t\t\t\t\t\tif (skillPointFilter != null) {\r\n\t\t\t\t\t\t\tif (skillPointFilter.isEnabled()) {\r\n\t\t\t\t\t\t\t\tvalue.addSkillPointValue(data.getSkillPoints(), skillPointFilter.getMinimum());\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tvalue.addSkillPointValue(data.getSkillPoints(), 0);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvalue.addImplants(data.getImplants());\r\n\t\t\t\t\t\tvalue.addSellOrders(data.getSellOrders());\r\n\t\t\t\t\t\tif (data.getBalanceFilter().isEmpty()) {\r\n\t\t\t\t\t\t\tvalue.addBalance(data.getBalanceTotal());\r\n\t\t\t\t\t\t\t//Default\r\n\t\t\t\t\t\t\tBoolean walletBoolean = walletColumns.get(date);\r\n\t\t\t\t\t\t\tif (walletBoolean == null) {\r\n\t\t\t\t\t\t\t\twalletColumns.put(date, false);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\twalletColumns.put(date, true);\r\n\t\t\t\t\t\t\tfor (Map.Entry<String, Double> entry : data.getBalanceFilter().entrySet()) {\r\n\t\t\t\t\t\t\t\tif (accountNodesMap.get(entry.getKey()).isSelected()) {\r\n\t\t\t\t\t\t\t\t\tvalue.addBalance(entry.getValue());\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} finally {\r\n\t\t\t\tTrackerData.readUnlock();\r\n\t\t\t}\r\n\t\t\tfor (Map.Entry<SimpleTimePeriod, Value> entry : cache.entrySet()) {\r\n\t\t\t\twalletBalance.add(entry.getKey(), entry.getValue().getBalanceTotal());\r\n\t\t\t\tassets.add(entry.getKey(), entry.getValue().getAssetsTotal());\r\n\t\t\t\timplants.add(entry.getKey(), entry.getValue().getImplants());\r\n\t\t\t\tsellOrders.add(entry.getKey(), entry.getValue().getSellOrders());\r\n\t\t\t\tescrows.add(entry.getKey(), entry.getValue().getEscrows());\r\n\t\t\t\tescrowsToCover.add(entry.getKey(), entry.getValue().getEscrowsToCover());\r\n\t\t\t\tmanufacturing.add(entry.getKey(), entry.getValue().getManufacturing());\r\n\t\t\t\tcontractCollateral.add(entry.getKey(), entry.getValue().getContractCollateral());\r\n\t\t\t\tcontractValue.add(entry.getKey(), entry.getValue().getContractValue());\r\n\t\t\t\tskillPointsValue.add(entry.getKey(), entry.getValue().getSkillPointValue());\r\n\t\t\t}\r\n\t\t}\r\n\t\tint count;\r\n\t\tcount = 0;\r\n\t\tassetNoFilterColumn = assetNoFilterColumns.size(); //Default\r\n\t\tfor (Map.Entry<Date, Boolean> entry : assetNoFilterColumns.entrySet()) {\r\n\t\t\tif (entry.getValue()) {\r\n\t\t\t\tassetNoFilterColumn = count;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcount++;\r\n\t\t}\r\n\t\tcount = 0;\r\n\t\tassetBuggedFilterColumn = assetBuggedFilterColumns.size(); //Default\r\n\t\tfor (Map.Entry<Date, Boolean> entry : assetBuggedFilterColumns.entrySet()) {\r\n\t\t\tif (entry.getValue()) {\r\n\t\t\t\tassetBuggedFilterColumn = count;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcount++;\r\n\t\t}\r\n\t\tcount = 0;\r\n\t\twalletColumn = walletColumns.size(); //Default\r\n\t\tfor (Map.Entry<Date, Boolean> entry : walletColumns.entrySet()) {\r\n\t\t\tif (entry.getValue()) {\r\n\t\t\t\twalletColumn = count;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcount++;\r\n\t\t}\r\n\t\tupdateShown();\r\n\t}\r\n\r\n\tprivate Map<Date, Map<String, Value>> getTrackerDataByDate(final List<String> owners) {\r\n\t\tMap<Date, Map<String, Value>> trackerDataByDate = new TreeMap<>();\r\n\t\tMap<String, Value> empty = new HashMap<>();\r\n\t\tfor (String owner : owners) {\r\n\t\t\tempty.put(owner, null);\r\n\t\t}\r\n\t\tfor (String owner : owners) {\r\n\t\t\tfor (Value data : TrackerData.get().get(owner)) {\r\n\t\t\t\tDate key = data.getDate();\r\n\t\t\t\tMap<String, Value> map = trackerDataByDate.get(key);\r\n\t\t\t\tif (map == null) {\r\n\t\t\t\t\tmap = new HashMap<>(empty);\r\n\t\t\t\t\ttrackerDataByDate.put(key, map);\r\n\t\t\t\t}\r\n\t\t\t\tmap.put(owner, data);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn trackerDataByDate;\r\n\t}\r\n\r\n\tprivate void updateButtonIcons() {\r\n\t\tboolean isAll;\r\n\t\tboolean isSome;\r\n\t\t//Assets\r\n\t\tisAll = true;\r\n\t\tisSome = false;\r\n\t\tfor (CheckBoxNode node : assetNodes.values()) {\r\n\t\t\tif (!node.isSelected()) {\r\n\t\t\t\tisAll = false;\r\n\t\t\t}\r\n\t\t\tif (node.isSelected()) {\r\n\t\t\t\tisSome = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (isAll) {\r\n\t\t\tjAssetsFilters.setIcon(Images.LOC_INCLUDE.getIcon());\r\n\t\t} else if (isSome) {\r\n\t\t\tjAssetsFilters.setIcon(Images.EDIT_EDIT_WHITE.getIcon());\r\n\t\t} else {\r\n\t\t\tjAssetsFilters.setIcon(Images.UPDATE_DONE_ERROR.getIcon());\r\n\t\t}\r\n\t\t//Wallet\r\n\t\tisAll = true;\r\n\t\tisSome = false;\r\n\t\tfor (CheckBoxNode node : accountNodes.values()) {\r\n\t\t\tif (!node.isSelected()) {\r\n\t\t\t\tisAll = false;\r\n\t\t\t}\r\n\t\t\tif (node.isSelected()) {\r\n\t\t\t\tisSome = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (isAll) {\r\n\t\t\tjWalletBalanceFilters.setIcon(Images.LOC_INCLUDE.getIcon());\r\n\t\t} else if (isSome) {\r\n\t\t\tjWalletBalanceFilters.setIcon(Images.EDIT_EDIT_WHITE.getIcon());\r\n\t\t} else {\r\n\t\t\tjWalletBalanceFilters.setIcon(Images.UPDATE_DONE_ERROR.getIcon());\r\n\t\t}\r\n\t\tisAll = true;\r\n\t\tfor (TrackerSkillPointFilter filter : Settings.get().getTrackerSettings().getSkillPointFilters().values()) {\r\n\t\t\tif (!filter.isEmpty()) {\r\n\t\t\t\tisAll = false;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (isAll) {\r\n\t\t\tjSkillPointsFilters.setIcon(Images.LOC_INCLUDE.getIcon());\r\n\t\t} else {\r\n\t\t\tjSkillPointsFilters.setIcon(Images.EDIT_EDIT_WHITE.getIcon());\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void updateShown() {\r\n\t\t//Remove All\r\n\t\twhile (dataset.getSeriesCount() != 0) {\r\n\t\t\tdataset.removeSeries(0);\r\n\t\t}\r\n\t\trenderer.clear();\r\n\t\tTimePeriodValues total = new TimePeriodValues(TabsTracker.get().total());\r\n\t\tValue first = null;\r\n\t\tValue last = null;\r\n\t\tDouble firstTotal = null;\r\n\t\tDouble lastTotal = null;\r\n\t\tfor (Map.Entry<SimpleTimePeriod, Value> entry : cache.entrySet()) {\r\n\t\t\tdouble t = 0;\r\n\t\t\tif (jWalletBalance.isSelected() && walletBalance != null) {\r\n\t\t\t\tt += entry.getValue().getBalanceTotal();\r\n\t\t\t}\r\n\t\t\tif (jAssets.isSelected() && assets != null) {\r\n\t\t\t\tt += entry.getValue().getAssetsTotal();\r\n\t\t\t}\r\n\t\t\tif (jImplants.isSelected() && implants != null) {\r\n\t\t\t\tt += entry.getValue().getImplants();\r\n\t\t\t}\r\n\t\t\tif (jSellOrders.isSelected() && sellOrders != null) {\r\n\t\t\t\tt += entry.getValue().getSellOrders();\r\n\t\t\t}\r\n\t\t\tif (jEscrows.isSelected() && escrows != null) {\r\n\t\t\t\tt += entry.getValue().getEscrows();\r\n\t\t\t}\r\n\t\t\t//Escrows To Cover is not money you own, it's technically money you owe\r\n\t\t\t//Therefore, it's not included in the total\r\n\t\t\t//See: https://forums-archive.eveonline.com/message/6607898#post6607898\r\n\t\t\t//if (jEscrowsToCover.isSelected() && escrowsToCover != null) {\r\n\t\t\t//\tt += entry.getValue().getEscrowsToCover();\r\n\t\t\t//}\r\n\t\t\tif (jManufacturing.isSelected() && manufacturing != null) {\r\n\t\t\t\tt += entry.getValue().getManufacturing();\r\n\t\t\t}\r\n\t\t\tif (jContractCollateral.isSelected() && contractCollateral != null) {\r\n\t\t\t\tt += entry.getValue().getContractCollateral();\r\n\t\t\t}\r\n\t\t\tif (jContractValue.isSelected() && contractValue != null) {\r\n\t\t\t\tt += entry.getValue().getContractValue();\r\n\t\t\t}\r\n\t\t\tif (jSkillPointsValue.isSelected() && skillPointsValue != null) {\r\n\t\t\t\tt += entry.getValue().getSkillPointValue();\r\n\t\t\t}\r\n\t\t\ttotal.add(entry.getKey(), t);\r\n\t\t\tif (firstTotal == null) {\r\n\t\t\t\tfirstTotal = t;\r\n\t\t\t}\r\n\t\t\tlastTotal = t;\r\n\t\t\tif (first == null) {\r\n\t\t\t\tfirst = entry.getValue();\r\n\t\t\t}\r\n\t\t\tlast = entry.getValue();\r\n\t\t}\r\n\t\tif (firstTotal != null && lastTotal != null) {\r\n\t\t\tjTotalStatus.setNumber(lastTotal - firstTotal);\r\n\t\t} else {\r\n\t\t\tjTotalStatus.setNumber(0.0);\r\n\t\t}\r\n\t\tjWalletBalanceStatus.setVisible(jWalletBalance.isSelected());\r\n\t\tif (first != null && last != null) {\r\n\t\t\tjWalletBalanceStatus.setNumber(last.getBalanceTotal() - first.getBalanceTotal());\r\n\t\t} else {\r\n\t\t\tjWalletBalanceStatus.setNumber(0.0);\r\n\t\t}\r\n\t\tjAssetsStatus.setVisible(jAssets.isSelected());\r\n\t\tif (first != null && last != null) {\r\n\t\t\tjAssetsStatus.setNumber(last.getAssetsTotal() - first.getAssetsTotal());\r\n\t\t} else {\r\n\t\t\tjAssetsStatus.setNumber(0.0);\r\n\t\t}\r\n\t\tjImplantsStatus.setVisible(jImplants.isSelected());\r\n\t\tif (first != null && last != null) {\r\n\t\t\tjImplantsStatus.setNumber(last.getImplants() - first.getImplants());\r\n\t\t} else {\r\n\t\t\tjImplantsStatus.setNumber(0.0);\r\n\t\t}\r\n\t\tjSellOrdersStatus.setVisible(jSellOrders.isSelected());\r\n\t\tif (first != null && last != null) {\r\n\t\t\tjSellOrdersStatus.setNumber(last.getSellOrders() - first.getSellOrders());\r\n\t\t} else {\r\n\t\t\tjSellOrdersStatus.setNumber(0.0);\r\n\t\t}\r\n\t\tjEscrowsStatus.setVisible(jEscrows.isSelected());\r\n\t\tif (first != null && last != null) {\r\n\t\t\tjEscrowsStatus.setNumber(last.getEscrows() - first.getEscrows());\r\n\t\t} else {\r\n\t\t\tjEscrowsStatus.setNumber(0.0);\r\n\t\t}\r\n\t\tjEscrowsToCoverStatus.setVisible(jEscrowsToCover.isSelected());\r\n\t\tif (first != null && last != null) {\r\n\t\t\tjEscrowsToCoverStatus.setNumber(last.getEscrowsToCover() - first.getEscrowsToCover());\r\n\t\t} else {\r\n\t\t\tjEscrowsToCoverStatus.setNumber(0.0);\r\n\t\t}\r\n\t\tjManufacturingStatus.setVisible(jManufacturing.isSelected());\r\n\t\tif (first != null && last != null) {\r\n\t\t\tjManufacturingStatus.setNumber(last.getManufacturing() - first.getManufacturing());\r\n\t\t} else {\r\n\t\t\tjManufacturingStatus.setNumber(0.0);\r\n\t\t}\r\n\t\tjContractCollateralStatus.setVisible(jContractCollateral.isSelected());\r\n\t\tif (first != null && last != null) {\r\n\t\t\tjContractCollateralStatus.setNumber(last.getContractCollateral() - first.getContractCollateral());\r\n\t\t} else {\r\n\t\t\tjContractCollateralStatus.setNumber(0.0);\r\n\t\t}\r\n\t\tjContractValueStatus.setVisible(jContractValue.isSelected());\r\n\t\tif (first != null && last != null) {\r\n\t\t\tjContractValueStatus.setNumber(last.getContractValue() - first.getContractValue());\r\n\t\t} else {\r\n\t\t\tjContractValueStatus.setNumber(0.0);\r\n\t\t}\r\n\t\tjSkillPointsStatus.setVisible(jSkillPointsValue.isSelected());\r\n\t\tif (first != null && last != null) {\r\n\t\t\tjSkillPointsStatus.setNumber(last.getSkillPointValue()- first.getSkillPointValue());\r\n\t\t} else {\r\n\t\t\tjSkillPointsStatus.setNumber(0.0);\r\n\t\t}\r\n\t\t//Update Shown\r\n\t\tboolean bright = ColorUtil.isBrightColor(jPanel.getBackground());\r\n\t\tif (jTotal.isSelected()) { //Update total\r\n\t\t\tdataset.addSeries(total);\r\n\t\t\tInteger minNoFilterColumn = null;\r\n\t\t\tInteger minBuggedFilterColumn = null;\r\n\t\t\tif (jWalletBalance.isSelected() && walletColumn != null) {\r\n\t\t\t\tminNoFilterColumn = walletColumn;\r\n\t\t\t}\r\n\t\t\tif (jAssets.isSelected()) {\r\n\t\t\t\tif (assetNoFilterColumn != null) {\r\n\t\t\t\t\tif (minNoFilterColumn != null) {\r\n\t\t\t\t\t\tminNoFilterColumn = Math.min(minNoFilterColumn, assetNoFilterColumn);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tminNoFilterColumn = assetNoFilterColumn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (assetBuggedFilterColumn != null) {\r\n\t\t\t\t\tif (minBuggedFilterColumn != null) {\r\n\t\t\t\t\t\tminBuggedFilterColumn = Math.min(minBuggedFilterColumn, assetBuggedFilterColumn);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tminBuggedFilterColumn = assetBuggedFilterColumn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\trenderer.addNoFilter(dataset.getSeriesCount() - 1, minNoFilterColumn);\r\n\t\t\trenderer.addBuggedFilter(dataset.getSeriesCount() - 1, minBuggedFilterColumn);\r\n\t\t\tupdateRender(bright, dataset.getSeriesCount() - 1, Color.RED.darker());\r\n\t\t}\r\n\t\tif (jWalletBalance.isSelected() && walletBalance != null) {\r\n\t\t\tdataset.addSeries(walletBalance);\r\n\t\t\trenderer.addNoFilter(dataset.getSeriesCount() - 1, walletColumn);\r\n\t\t\tupdateRender(bright, dataset.getSeriesCount() - 1, Color.BLUE.darker());\r\n\r\n\t\t}\r\n\t\tif (jAssets.isSelected() && assets != null) {\r\n\t\t\tdataset.addSeries(assets);\r\n\t\t\trenderer.addNoFilter(dataset.getSeriesCount() - 1, assetNoFilterColumn);\r\n\t\t\trenderer.addBuggedFilter(dataset.getSeriesCount() - 1, assetBuggedFilterColumn);\r\n\t\t\tupdateRender(bright, dataset.getSeriesCount() - 1, Color.GREEN.darker().darker());\r\n\t\t}\r\n\t\tif (jImplants.isSelected() && implants != null) {\r\n\t\t\tdataset.addSeries(implants);\r\n\t\t\tupdateRender(bright, dataset.getSeriesCount() - 1, Color.MAGENTA.darker());\r\n\t\t}\r\n\t\tif (jSellOrders.isSelected() && sellOrders != null) {\r\n\t\t\tdataset.addSeries(sellOrders);\r\n\t\t\tupdateRender(bright, dataset.getSeriesCount() - 1, Color.CYAN.darker());\r\n\t\t}\r\n\t\tif (jEscrows.isSelected() && escrows != null) {\r\n\t\t\tdataset.addSeries(escrows);\r\n\t\t\tupdateRender(bright, dataset.getSeriesCount() - 1, Color.BLACK);\r\n\t\t}\r\n\t\tif (jEscrowsToCover.isSelected() && escrowsToCover != null) {\r\n\t\t\tdataset.addSeries(escrowsToCover);\r\n\t\t\tupdateRender(bright, dataset.getSeriesCount() - 1, Color.GRAY);\r\n\t\t}\r\n\t\tif (jManufacturing.isSelected() && manufacturing != null) {\r\n\t\t\tdataset.addSeries(manufacturing);\r\n\t\t\tupdateRender(bright, dataset.getSeriesCount() - 1, Color.MAGENTA);\r\n\t\t}\r\n\t\tif (jContractCollateral.isSelected() && contractCollateral != null) {\r\n\t\t\tdataset.addSeries(contractCollateral);\r\n\t\t\tupdateRender(bright, dataset.getSeriesCount() - 1, Color.PINK);\r\n\t\t}\r\n\t\tif (jContractValue.isSelected() && contractValue != null) {\r\n\t\t\tdataset.addSeries(contractValue);\r\n\t\t\tupdateRender(bright, dataset.getSeriesCount() - 1, Color.ORANGE);\r\n\t\t}\r\n\t\tif (jSkillPointsValue.isSelected() && skillPointsValue != null) {\r\n\t\t\tdataset.addSeries(skillPointsValue);\r\n\t\t\tupdateRender(bright, dataset.getSeriesCount() - 1, Color.YELLOW);\r\n\t\t}\r\n\t\t//Add empty dataset\r\n\t\tif (dataset.getSeriesCount() == 0) {\r\n\t\t\tTimePeriodValues timePeriodValues = new TimePeriodValues(TabsTracker.get().empty());\r\n\t\t\tdataset.addSeries(timePeriodValues);\r\n\t\t\tupdateRender(bright, dataset.getSeriesCount() - 1, Color.BLACK);\r\n\t\t}\r\n\t\trangeLogarithmicAxis.setAutoRange(true);\r\n\t\trangeLinearAxis.setAutoRange(true);\r\n\t\tjFreeChart.getXYPlot().getDomainAxis().setAutoRange(true);\r\n\r\n\t\tJFreeChartUtil.updateTickScale(domainAxis, rangeLinearAxis, dataset);\r\n\t}\r\n\r\n\tprivate void updateRender(boolean bright, int index, Color color) {\r\n\t\tif (Settings.get().isEasyChartColors()) {\r\n\t\t\tif (bright) {\r\n\t\t\t\tif (ColorUtil.luminance(color) > 0.8) {\r\n\t\t\t\t\tcolor = color.darker();\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (ColorUtil.luminance(color) < 0.2) {\r\n\t\t\t\t\tcolor = color.brighter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\trenderer.setSeriesPaint(index, color);\r\n\t\trenderer.setSeriesStroke(index, new BasicStroke(1));\r\n\t}\r\n\r\n\tprivate void updateSettings() {\r\n\t\tSettings.lock(\"Tracker Filters: Update\");\r\n\t\tSettings.get().getTrackerSettings().getFilters().clear();\r\n\t\tfor (CheckBoxNode checkBoxNode : assetNodes.values()) {\r\n\t\t\tif (checkBoxNode.isParent()) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tSettings.get().getTrackerSettings().getFilters().put(checkBoxNode.getNodeID(), checkBoxNode.isSelected());\r\n\t\t}\r\n\t\tfor (CheckBoxNode checkBoxNode : accountNodes.values()) {\r\n\t\t\tSettings.get().getTrackerSettings().getFilters().put(checkBoxNode.getNodeID(), checkBoxNode.isSelected());\r\n\t\t}\r\n\t\tSettings.get().getTrackerSettings().setSelectNew(assetFilterDialog.isSelectNew());\r\n\t\tSettings.unlock(\"Tracker Filters: Update\");\r\n\t\tprogram.saveSettings(\"Tracker Filters: Update\");\r\n\t}\r\n\r\n\tprivate String getSelectedOwner(boolean all) {\r\n\t\tList<String> owners = jOwners.getSelectedValuesList();\r\n\t\tif (owners.size() == 1) {\r\n\t\t\treturn jOwners.getSelectedValue();\r\n\t\t} else {\r\n\t\t\tList<String> list = new ArrayList<>();\r\n\t\t\tif (all) {\r\n\t\t\t\tlist.add(General.get().all());\r\n\t\t\t}\r\n\t\t\tfor (String owner : owners) {\r\n\t\t\t\tValue value = getSelectedValue(owner);\r\n\t\t\t\tif (value != null) {\r\n\t\t\t\t\tlist.add(owner);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn jSelectionDialog.show(TabsTracker.get().selectOwner(), list);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Value getSelectedValue(String owner) {\r\n\t\tString date = Formatter.simpleDate(new Date((long)jFreeChart.getXYPlot().getDomainCrosshairValue()));\r\n\t\ttry {\r\n\t\t\tTrackerData.readLock();\r\n\t\t\tfor (Value value : TrackerData.get().get(owner)) {\r\n\t\t\t\tif (date.equals(Formatter.simpleDate(value.getDate()))) {\r\n\t\t\t\t\treturn value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tTrackerData.readUnlock();\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate void addNote() {\r\n\t\tDate date = new Date((long)jFreeChart.getXYPlot().getDomainCrosshairValue());\r\n\t\tTrackerNote trackerNote = Settings.get().getTrackerSettings().getNotes().get(new TrackerDate(date));\r\n\t\tString newNote;\r\n\t\tif (trackerNote == null) {\r\n\t\t\tnewNote = JOptionInput.showInputDialog(program.getMainWindow().getFrame(), TabsTracker.get().notesEditMsg(), TabsTracker.get().notesEditTitle(), JOptionPane.PLAIN_MESSAGE);\r\n\t\t} else {\r\n\t\t\tnewNote = (String) JOptionInput.showInputDialog(program.getMainWindow().getFrame(), TabsTracker.get().notesEditMsg(), TabsTracker.get().notesEditTitle(), JOptionPane.PLAIN_MESSAGE, null, null, trackerNote.getNote());\r\n\t\t}\r\n\t\tif (newNote != null) {\r\n\t\t\tSettings.lock(\"Tracker Notes (Set Note)\");\r\n\t\t\tSettings.get().getTrackerSettings().getNotes().put(new TrackerDate(date), new TrackerNote(newNote));\r\n\t\t\tSettings.unlock(\"Tracker Notes (Set Note)\");\r\n\t\t\tprogram.saveSettings(\"Tracker Data (Set Note)\");\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void removeNote() {\r\n\t\tDate date = new Date((long)jFreeChart.getXYPlot().getDomainCrosshairValue());\r\n\t\tTrackerNote trackerNote = Settings.get().getTrackerSettings().getNotes().get(new TrackerDate(date));\r\n\t\tint returnValue = JOptionPane.showConfirmDialog(program.getMainWindow().getFrame(), TabsTracker.get().notesDeleteMsg(trackerNote.getNote()), TabsTracker.get().notesDeleteTitle(), JOptionPane.OK_CANCEL_OPTION);\r\n\t\tif (returnValue == JOptionPane.OK_OPTION) {\r\n\t\t\tSettings.lock(\"Tracker Notes (Delete Note)\");\r\n\t\t\tSettings.get().getTrackerSettings().getNotes().remove(new TrackerDate(date));\r\n\t\t\tSettings.unlock(\"Tracker Notes (Delete Note)\");\r\n\t\t\tprogram.saveSettings(\"Tracker Data (Delete Note)\");\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class MyDrawingSupplier extends DefaultDrawingSupplier {\r\n\t\t@Override\r\n\t\tpublic Shape getNextShape() {\r\n\t\t\treturn FILTER_AND_DEFAULT;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class MyRenderer extends SimpleRenderer {\r\n\r\n\t\tprivate final Map<Integer, Integer> noFilters = new HashMap<>();\r\n\t\tprivate final Map<Integer, Integer> buggedFilters = new HashMap<>();\r\n\r\n\t\tpublic MyRenderer() {\r\n\t\t\tsuper(true, true);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic Shape getItemShape(int row, int column) {\r\n\t\t\tInteger noFiltersColumn = noFilters.get(row);\r\n\t\t\tInteger buggedFiltersColumn = buggedFilters.get(row);\r\n\t\t\tif (noFiltersColumn != null && noFiltersColumn > column) {\r\n\t\t\t\treturn NO_FILTER;\r\n\t\t\t} else if (buggedFiltersColumn != null && buggedFiltersColumn > column) {\r\n\t\t\t\treturn BUG_CORP_CONTAINERS_FILTER;\r\n\t\t\t} else {\r\n\t\t\t\treturn FILTER_AND_DEFAULT;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tpublic void clear() {\r\n\t\t\tnoFilters.clear();\r\n\t\t\tbuggedFilters.clear();\r\n\t\t}\r\n\r\n\t\tpublic void addNoFilter(int row, Integer column) {\r\n\t\t\tif (column != null) {\r\n\t\t\t\tnoFilters.put(row, column);\r\n\t\t\t}\r\n\t\t}\r\n\t\tpublic void addBuggedFilter(int row, Integer column) {\r\n\t\t\tif (column != null) {\r\n\t\t\t\tbuggedFilters.put(row, column);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class ShapeIcon implements Icon {\r\n\r\n\t\tprivate final Shape shape;\r\n\t\tprivate final Color color;\r\n\r\n\t\tpublic ShapeIcon(Shape shape, Color color) {\r\n\t\t\tthis.shape = shape;\r\n\t\t\tthis.color = color;\r\n\t\t}\r\n\r\n\t\tpublic ShapeIcon(Shape shape) {\r\n\t\t\tthis(shape, Color.BLACK);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void paintIcon(Component c, Graphics g, int x, int y) {\r\n\t\t\tGraphics2D g2d = (Graphics2D)g.create();\r\n\r\n\t\t\tRenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);\r\n\t\t\trh.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);\r\n\r\n\t\t\tg2d.setRenderingHints(rh);\r\n\r\n\t\t\tg2d.setColor(color);\r\n\t\t\tg2d.translate(x - shape.getBounds().x, y - shape.getBounds().y);\r\n\t\t\tg2d.fill(shape);\r\n\t\t\tg2d.dispose();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int getIconWidth() {\r\n\t\t\treturn shape.getBounds().width;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int getIconHeight() {\r\n\t\t\treturn shape.getBounds().height;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Date getFromDate() {\r\n\t\tLocalDate date = jFrom.getDate();\r\n\t\tif (date == null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tInstant instant = date.atStartOfDay().atZone(ZoneId.of(\"GMT\")).toInstant(); //Start of day - GMT\r\n\t\treturn Date.from(instant);\r\n\t}\r\n\r\n\tprivate Date getToDate() {\r\n\t\tLocalDate date = jTo.getDate();\r\n\t\tif (date == null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tInstant instant = date.atTime(23, 59, 59).atZone(ZoneId.of(\"GMT\")).toInstant(); //End of day - GMT\r\n\t\treturn Date.from(instant);\r\n\t}\r\n\r\n\tprivate void showLocationFilter() {\r\n\t\tboolean save = assetFilterDialog.showLocations(assetNodes);\r\n\t\tif (save) { //Need refilter\r\n\t\t\tupdateSettings();\r\n\t\t\tcreateData();\r\n\t\t\tupdateButtonIcons();\r\n\t\t} else if (assetFilterDialog.isSelectNew() != Settings.get().getTrackerSettings().isSelectNew()) {\r\n\t\t\tSettings.lock(\"Tracker Filters: Update\");\r\n\t\t\tSettings.get().getTrackerSettings().setSelectNew(assetFilterDialog.isSelectNew());\r\n\t\t\tSettings.unlock(\"Tracker Filters: Update\");\r\n\t\t\tprogram.saveSettings(\"Tracker Filters: Update\");\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class ListenerClass implements\r\n\t\t\tActionListener, PopupMenuListener,\r\n\t\t\tChartMouseListener, ListSelectionListener, DateChangeListener {\r\n\r\n\t\t@Override\r\n\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\tTrackerSettings trackerSettings = Settings.get().getTrackerSettings();\r\n\t\t\tif (TrackerAction.QUICK_DATE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tQuickDate quickDate = (QuickDate) jQuickDate.getSelectedItem();\r\n\t\t\t\tif (quickDate == QuickDate.RESET) {\r\n\t\t\t\t\tjTo.clearDate();\r\n\t\t\t\t\tjFrom.clearDate();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tDate toDate = getToDate();\r\n\t\t\t\t\tif (toDate == null) {\r\n\t\t\t\t\t\ttoDate = new Date(); //now\r\n\t\t\t\t\t}\r\n\t\t\t\t\tDate fromDate = quickDate.apply(toDate);\r\n\t\t\t\t\tif (fromDate != null) {\r\n\t\t\t\t\t\tjFrom.setDate(fromDate);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\ttrackerSettings.setFromDate(getFromDate());\r\n\t\t\t\ttrackerSettings.setToDate(getToDate());\r\n\t\t\t\tupdateSettings();\r\n\t\t\t} else if (TrackerAction.INCLUDE_ZERO.name().equals(e.getActionCommand())) {\r\n\t\t\t\trangeLogarithmicAxis.setAutoRangeIncludesZero(jIncludeZero.isSelected());\r\n\t\t\t\trangeLinearAxis.setAutoRangeIncludesZero(jIncludeZero.isSelected());\r\n\t\t\t\ttrackerSettings.setIncludeZero(jIncludeZero.isSelected());\r\n\t\t\t\tupdateSettings();\r\n\t\t\t} else if (TrackerAction.LOGARITHMIC.name().equals(e.getActionCommand())) {\r\n\t\t\t\tif (jLogarithmic.isSelected()) {\r\n\t\t\t\t\tjFreeChart.getXYPlot().setRangeAxis(rangeLogarithmicAxis);\r\n\t\t\t\t\ttrackerSettings.setDisplayType(DisplayType.LOGARITHMIC);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tjFreeChart.getXYPlot().setRangeAxis(rangeLinearAxis);\r\n\t\t\t\t\ttrackerSettings.setDisplayType(DisplayType.LINEAR);\r\n\t\t\t\t}\r\n\t\t\t\tupdateSettings();\r\n\t\t\t} else if (TrackerAction.UPDATE_DATA.name().equals(e.getActionCommand())) {\r\n\t\t\t\tcreateData();\r\n\t\t\t} else if (TrackerAction.UPDATE_SHOWN.name().equals(e.getActionCommand())) {\r\n\t\t\t\tupdateShown();\r\n\t\t\t\tjAll.setSelected(jTotal.isSelected()\r\n\t\t\t\t\t\t&& jWalletBalance.isSelected()\r\n\t\t\t\t\t\t&& jAssets.isSelected()\r\n\t\t\t\t\t\t&& jImplants.isSelected()\r\n\t\t\t\t\t\t&& jSellOrders.isSelected()\r\n\t\t\t\t\t\t&& jEscrows.isSelected()\r\n\t\t\t\t\t\t&& jEscrowsToCover.isSelected()\r\n\t\t\t\t\t\t&& jManufacturing.isSelected()\r\n\t\t\t\t\t\t&& jContractCollateral.isSelected()\r\n\t\t\t\t\t\t&& jContractValue.isSelected()\r\n\t\t\t\t\t\t&& jSkillPointsValue.isSelected());\r\n\t\t\t\tif (jAll.isSelected()) {\r\n\t\t\t\t\tjShow.setIcon(Images.LOC_INCLUDE.getIcon());\r\n\t\t\t\t\ttrackerSettings.getShowOptions().clear();\r\n\t\t\t\t\ttrackerSettings.getShowOptions().add(ShowOption.ALL);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tjShow.setIcon(Images.EDIT_EDIT_WHITE.getIcon());\r\n\t\t\t\t\ttrackerSettings.getShowOptions().clear();\r\n\t\t\t\t\tif (jTotal.isSelected()) {\r\n\t\t\t\t\t\ttrackerSettings.getShowOptions().add(ShowOption.TOTAL);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (jWalletBalance.isSelected()) {\r\n\t\t\t\t\t\ttrackerSettings.getShowOptions().add(ShowOption.WALLET);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (jAssets.isSelected()) {\r\n\t\t\t\t\t\ttrackerSettings.getShowOptions().add(ShowOption.ASSET);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (jImplants.isSelected()) {\r\n\t\t\t\t\t\ttrackerSettings.getShowOptions().add(ShowOption.IMPLANT);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (jSellOrders.isSelected()) {\r\n\t\t\t\t\t\ttrackerSettings.getShowOptions().add(ShowOption.SELL_ORDER);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (jEscrows.isSelected()) {\r\n\t\t\t\t\t\ttrackerSettings.getShowOptions().add(ShowOption.ESCROW);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (jEscrowsToCover.isSelected()) {\r\n\t\t\t\t\t\ttrackerSettings.getShowOptions().add(ShowOption.ESCROW_TO_COVER);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (jManufacturing.isSelected()) {\r\n\t\t\t\t\t\ttrackerSettings.getShowOptions().add(ShowOption.MANUFACTURING);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (jContractCollateral.isSelected()) {\r\n\t\t\t\t\t\ttrackerSettings.getShowOptions().add(ShowOption.COLLATERAL);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (jContractValue.isSelected()) {\r\n\t\t\t\t\t\ttrackerSettings.getShowOptions().add(ShowOption.CONTRACT);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (jSkillPointsValue.isSelected()) {\r\n\t\t\t\t\t\ttrackerSettings.getShowOptions().add(ShowOption.SKILL_POINT);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tupdateSettings();\r\n\t\t\t} else if (TrackerAction.ALL.name().equals(e.getActionCommand())) {\r\n\t\t\t\tjTotal.setSelected(jAll.isSelected());\r\n\t\t\t\tjWalletBalance.setSelected(jAll.isSelected());\r\n\t\t\t\tjAssets.setSelected(jAll.isSelected());\r\n\t\t\t\tjImplants.setSelected(jAll.isSelected());\r\n\t\t\t\tjSellOrders.setSelected(jAll.isSelected());\r\n\t\t\t\tjEscrows.setSelected(jAll.isSelected());\r\n\t\t\t\tjEscrowsToCover.setSelected(jAll.isSelected());\r\n\t\t\t\tjManufacturing.setSelected(jAll.isSelected());\r\n\t\t\t\tjContractCollateral.setSelected(jAll.isSelected());\r\n\t\t\t\tjContractValue.setSelected(jAll.isSelected());\r\n\t\t\t\tjSkillPointsValue.setSelected(jAll.isSelected());\r\n\t\t\t\ttrackerSettings.getShowOptions().clear();\r\n\t\t\t\tif (jAll.isSelected()) {\r\n\t\t\t\t\tjShow.setIcon(Images.LOC_INCLUDE.getIcon());\r\n\t\t\t\t\ttrackerSettings.getShowOptions().add(ShowOption.ALL);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tjShow.setIcon(Images.EDIT_EDIT_WHITE.getIcon());\r\n\t\t\t\t}\r\n\t\t\t\tupdateShown();\r\n\t\t\t\tupdateSettings();\r\n\t\t\t} else if (TrackerAction.EDIT.name().equals(e.getActionCommand())) {\r\n\t\t\t\tjFreeChart.getXYPlot().setDomainCrosshairVisible(true);\r\n\t\t\t\tString owner = getSelectedOwner(false);\r\n\t\t\t\tif (owner == null) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tValue value = getSelectedValue(owner);\r\n\t\t\t\tif (value == null) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tboolean update = jEditDialog.showEdit(value);\r\n\t\t\t\tif (update) {\r\n\t\t\t\t\tcreateData();\r\n\t\t\t\t}\r\n\t\t\t\tjFreeChart.getXYPlot().setDomainCrosshairVisible(false);\r\n\t\t\t} else if (TrackerAction.DELETE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tjFreeChart.getXYPlot().setDomainCrosshairVisible(true);\r\n\t\t\t\tString owner = getSelectedOwner(true);\r\n\t\t\t\tif (owner == null) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tList<String> owners = new ArrayList<>();\r\n\t\t\t\tif (owner.equals(General.get().all())) {\r\n\t\t\t\t\towners.addAll(jOwners.getSelectedValuesList());\r\n\t\t\t\t} else {\r\n\t\t\t\t\towners.add(owner);\r\n\t\t\t\t}\r\n\t\t\t\tMap<String, Value> values = new HashMap<>();\r\n\t\t\t\tfor (String s : owners) {\r\n\t\t\t\t\tValue value = getSelectedValue(s);\r\n\t\t\t\t\tif (value != null) {\r\n\t\t\t\t\t\tvalues.put(s, value);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (values.isEmpty()) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tint retrunValue = JOptionPane.showConfirmDialog(program.getMainWindow().getFrame(), TabsTracker.get().deleteSelected(), TabsTracker.get().delete(), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);\r\n\t\t\t\tif (retrunValue == JOptionPane.OK_OPTION) {\r\n\t\t\t\t\tfor (Map.Entry<String, Value> entry : values.entrySet()) {\r\n\t\t\t\t\t\t//Remove value\r\n\t\t\t\t\t\tTrackerData.remove(entry.getKey(), entry.getValue());\r\n\t\t\t\t\t}\r\n\t\t\t\t\tTrackerData.save(\"Deleted\");\r\n\t\t\t\t\tupdateData();\r\n\t\t\t\t}\r\n\t\t\t\tjFreeChart.getXYPlot().setDomainCrosshairVisible(false);\r\n\t\t\t} else if (TrackerAction.NOTE_DELETE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tjFreeChart.getXYPlot().setDomainCrosshairVisible(true);\r\n\t\t\t\tremoveNote();\r\n\t\t\t\tjFreeChart.getXYPlot().setDomainCrosshairVisible(false);\r\n\t\t\t} else if (TrackerAction.NOTE_ADD.name().equals(e.getActionCommand())) {\r\n\t\t\t\tjFreeChart.getXYPlot().setDomainCrosshairVisible(true);\r\n\t\t\t\taddNote();\r\n\t\t\t\tjFreeChart.getXYPlot().setDomainCrosshairVisible(false);\r\n\t\t\t} else if (TrackerAction.PROFILE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tif (!updateLock) {\r\n\t\t\t\t\tboolean allProfiles = jAllProfiles.isSelected();\r\n\t\t\t\t\tboolean characterCorporations = jCharacterCorporations.isSelected();\r\n\t\t\t\t\ttrackerSettings.setAllProfiles(allProfiles);\r\n\t\t\t\t\ttrackerSettings.setCharacterCorporations(characterCorporations);\r\n\t\t\t\t\tprogram.saveSettings(\"Tracker (Owner Settings)\");\r\n\t\t\t\t}\r\n\t\t\t\tupdateData();\r\n\t\t\t} else if (TrackerAction.FILTER_WALLET_BALANCE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tboolean save = walletFilterDialog.showWallet(accountNodes);\r\n\t\t\t\tif (save) { //Need refilter\r\n\t\t\t\t\tupdateSettings();\r\n\t\t\t\t\tcreateData();\r\n\t\t\t\t\tupdateButtonIcons();\r\n\t\t\t\t}\r\n\t\t\t} else if (TrackerAction.FILTER_ASSETS.name().equals(e.getActionCommand())) {\r\n\t\t\t\tshowLocationFilter();\r\n\t\t\t} else if (TrackerAction.FILTER_SKILL_POINTS.name().equals(e.getActionCommand())) {\r\n\t\t\t\tshowSkillPointsFilter();\r\n\t\t\t} else if (TrackerAction.IMPORT_FILE.name().equals(e.getActionCommand())) {\r\n\t\t\t\tjFileChooser.setCurrentDirectory(new File(FileUtil.getPathDataDirectory()));\r\n\t\t\t\tint value = jFileChooser.showOpenDialog(program.getMainWindow().getFrame());\r\n\t\t\t\tif (value != JCustomFileChooser.APPROVE_OPTION) {\r\n\t\t\t\t\treturn; //Cancel\r\n\t\t\t\t}\r\n\t\t\t\tjLockWindow.show(TabsTracker.get().importFileImport(), new ImportFileLockWorker(jFileChooser.getSelectedFile()));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void dateChanged(DateChangeEvent event) {\r\n\t\t\tDate from = getFromDate();\r\n\t\t\tDate to = getToDate();\r\n\t\t\tQuickDate quickDate = (QuickDate) jQuickDate.getSelectedItem();\r\n\t\t\tif (!quickDate.isValid(from, to)) {\r\n\t\t\t\tQuickDate selected = quickDate.getSelected(from, to);\r\n\t\t\t\tjQuickDate.setSelectedItem(selected);\r\n\t\t\t}\r\n\t\t\tif (from != null && to != null && from.after(to)) {\r\n\t\t\t\tjTo.setDate(from);\r\n\t\t\t}\r\n\t\t\tSettings.get().getTrackerSettings().setFromDate(getFromDate());\r\n\t\t\tSettings.get().getTrackerSettings().setToDate(getToDate());\r\n\t\t\tcreateData();\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void chartMouseClicked(final ChartMouseEvent cme) {\r\n\t\t\tif (cme.getTrigger().getClickCount() % 2 == 0) {\r\n\t\t\t\tSwingUtilities.invokeLater(new Runnable() {\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tpublic void run() {\r\n\t\t\t\t\t\tif (cache.isEmpty()) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tjFreeChart.getXYPlot().setDomainCrosshairVisible(true);\r\n\t\t\t\t\t\tdouble xValue = jFreeChart.getXYPlot().getDomainCrosshairValue();\r\n\t\t\t\t\t\tdouble yValue = jFreeChart.getXYPlot().getRangeCrosshairValue();\r\n\t\t\t\t\t\tRectangleEdge xEdge = jFreeChart.getXYPlot().getDomainAxisEdge();\r\n\t\t\t\t\t\tRectangleEdge yEdge = jFreeChart.getXYPlot().getRangeAxisEdge();\r\n\t\t\t\t\t\tRectangle2D dataArea = jChartPanel.getScreenDataArea(); // jChartPanel.getChartRenderingInfo().getPlotInfo().getSubplotInfo(0).getDataArea();\r\n\t\t\t\t\t\tint x = (int) jFreeChart.getXYPlot().getDomainAxis().valueToJava2D(xValue, dataArea, xEdge);\r\n\t\t\t\t\t\tint y = (int) jFreeChart.getXYPlot().getRangeAxis().valueToJava2D(yValue, dataArea, yEdge);\r\n\t\t\t\t\t\tDate date = new Date((long)xValue);\r\n\t\t\t\t\t\tvalues.clear();\r\n\t\t\t\t\t\tJMenuItem jIskValue = JMenuInfo.createMenuItem(values, jPopupMenu, yValue, JMenuInfo.AutoNumberFormat.ISK, TabsTracker.get().selectionIsk(), TabsTracker.get().selectionShortIsk(), Images.TOOL_VALUES.getIcon());\r\n\t\t\t\t\t\tJMenuItem jDateValue = JMenuInfo.createMenuItem(values, jPopupMenu, Formatter.columnDateOnly(date), TabsTracker.get().selectionDate(), TabsTracker.get().selectionShortDate(), Images.EDIT_DATE.getIcon());\r\n\t\t\t\t\t\tTrackerNote trackerNote = Settings.get().getTrackerSettings().getNotes().get(new TrackerDate(date));\r\n\t\t\t\t\t\tJMenuItem jNote;\r\n\t\t\t\t\t\tif (trackerNote != null) {\r\n\t\t\t\t\t\t\tjAddNote.setVisible(false);\r\n\t\t\t\t\t\t\tjEditNote.setVisible(true);\r\n\t\t\t\t\t\t\tjNote = JMenuInfo.createMenuItem(values, jPopupMenu, trackerNote.getNote(), TabsTracker.get().selectionNote(), TabsTracker.get().selectionShortNote(), Images.SETTINGS_USER_NAME.getIcon());\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tjAddNote.setVisible(true);\r\n\t\t\t\t\t\t\tjEditNote.setVisible(false);\r\n\t\t\t\t\t\t\tjNote = null;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tjPopupMenu.addPopupMenuListener(new PopupMenuListener() {\r\n\t\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\t\tpublic void popupMenuWillBecomeVisible(PopupMenuEvent e) { }\r\n\r\n\t\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\t\tpublic void popupMenuWillBecomeInvisible(PopupMenuEvent e) {\r\n\t\t\t\t\t\t\t\tjPopupMenu.remove(jIskValue);\r\n\t\t\t\t\t\t\t\tjPopupMenu.remove(jDateValue);\r\n\t\t\t\t\t\t\t\tif (jNote != null) {\r\n\t\t\t\t\t\t\t\t\tjPopupMenu.remove(jNote);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\t\tpublic void popupMenuCanceled(PopupMenuEvent e) { }\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tjPopupMenu.show((Component)cme.getTrigger().getSource(), x, y);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void chartMouseMoved(ChartMouseEvent cme) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void popupMenuWillBecomeVisible(PopupMenuEvent e) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void popupMenuWillBecomeInvisible(PopupMenuEvent e) {\r\n\t\t\tjFreeChart.getXYPlot().setDomainCrosshairVisible(false);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void popupMenuCanceled(PopupMenuEvent e) { }\r\n\r\n\t\t@Override\r\n\t\tpublic void valueChanged(ListSelectionEvent e) {\r\n\t\t\tif (e.getValueIsAdjusting()) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (!updateLock) {\r\n\t\t\t\tList<String> selectedOwners = jOwners.getSelectedValuesList();\r\n\t\t\t\tSettings.get().getTrackerSettings().setSelectedOwners(selectedOwners);\r\n\t\t\t\tprogram.saveSettings(\"Tracker (Owners Selection)\");\r\n\t\t\t}\r\n\t\t\tupdateFilterButtons();\r\n\t\t\tcreateData();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class ImportFileLockWorker extends LockWorkerAdaptor {\r\n\r\n\t\tprivate File file;\r\n\t\tprivate Map<String, List<Value>> trackerData = null;\r\n\r\n\t\tpublic ImportFileLockWorker(File file) {\r\n\t\t\tthis.file = file;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void task() {\r\n\t\t\tFile unzippedFile = null;\r\n\t\t\tString extension = FileUtil.getExtension(file);\r\n\t\t\tif (extension.equals(\"zip\")) { //Unzip file (if needed)\r\n\t\t\t\tZipInputStream zis = null;\r\n\t\t\t\ttry {\r\n\t\t\t\t\tzis = new ZipInputStream(new FileInputStream(file));\r\n\t\t\t\t\tZipEntry zipEntry = zis.getNextEntry();\r\n\t\t\t\t\twhile(zipEntry != null) {\r\n\t\t\t\t\t\tString filename = zipEntry.getName();\r\n\t\t\t\t\t\tif (filename.equals(\"settings.xml\") || filename.equals(\"tracker.json\")) {\r\n\t\t\t\t\t\t\tunzippedFile = new File(FileUtil.getPathDataDirectory() + File.separator + \"temp_\" + filename);\r\n\t\t\t\t\t\t\tif (unzippedFile.toPath().normalize().startsWith(FileUtil.getPathDataDirectory() + File.separator)) { //Make sure path is correct\r\n\t\t\t\t\t\t\t\tFileOutputStream fos = new FileOutputStream(unzippedFile);\r\n\t\t\t\t\t\t\t\tbyte[] buffer = new byte[1024];\r\n\t\t\t\t\t\t\t\tint len;\r\n\t\t\t\t\t\t\t\twhile ((len = zis.read(buffer)) > 0) {\r\n\t\t\t\t\t\t\t\t\tfos.write(buffer, 0, len);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tfos.close();\r\n\t\t\t\t\t\t\t\t//Set file and extension to the unzipped file\r\n\t\t\t\t\t\t\t\tfile = unzippedFile;\r\n\t\t\t\t\t\t\t\textension = FileUtil.getExtension(file);\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tzipEntry = zis.getNextEntry();\r\n\t\t\t\t\t}\tzis.closeEntry();\r\n\t\t\t\t\tzis.close();\r\n\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\t//Ignore errors\r\n\t\t\t\t} finally {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tif (zis != null) {\r\n\t\t\t\t\t\t\tzis.close();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} catch (IOException ex) {\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tswitch (extension) { //Load data (if possible)\r\n\t\t\t\tcase \"xml\":\r\n\t\t\t\tcase \"backup\":\r\n\t\t\t\t\ttrackerData = SettingsReader.loadTracker(file.getAbsolutePath());\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"json\":\r\n\t\t\t\t\ttrackerData = TrackerReader.load(file.getAbsolutePath(), false);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\ttrackerData = null;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif (unzippedFile != null) { //Clean up temp file\r\n\t\t\t\tunzippedFile.delete();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void hidden() {\r\n\t\t\tif (trackerData == null) { //Invalid file\r\n\t\t\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), TabsTracker.get().importFileInvalidMsg(), TabsTracker.get().importFileTitle(), JOptionPane.WARNING_MESSAGE);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t//Overwrite?\r\n\t\t\tObject value = JOptionPane.showInputDialog(program.getMainWindow().getFrame(), TabsTracker.get().importFileOptionsMsg(), TabsTracker.get().importFileTitle(), JOptionPane.PLAIN_MESSAGE, null, ImportOptions.values(), ImportOptions.KEEP);\r\n\t\t\tif (value == null) {\r\n\t\t\t\treturn; //Cancel\r\n\t\t\t}\r\n\t\t\tSwingUtilities.invokeLater(new Runnable() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void run() {\r\n\t\t\t\t\tjLockWindow.show(TabsTracker.get().importFileImport(), new LockWorkerAdaptor() {\r\n\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\tpublic void task() {\r\n\t\t\t\t\t\t\tif (value == ImportOptions.REPLACE) {\r\n\t\t\t\t\t\t\t\tTrackerData.set(trackerData);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tTrackerData.addAll(trackerData, value == ImportOptions.OVERWRITE);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tTrackerData.save(\"File Import\", true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\tpublic void gui() {\r\n\t\t\t\t\t\t\tupdateData();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/tracker/TrackerWalletFilterDialog.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.tracker;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.util.Enumeration;\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\nimport java.util.TreeMap;\r\nimport javax.swing.GroupLayout;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JComponent;\r\nimport javax.swing.JScrollPane;\r\nimport javax.swing.JTree;\r\nimport javax.swing.tree.DefaultMutableTreeNode;\r\nimport javax.swing.tree.DefaultTreeModel;\r\nimport javax.swing.tree.TreeNode;\r\nimport javax.swing.tree.TreePath;\r\nimport javax.swing.tree.TreeSelectionModel;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.CheckBoxNode;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.CheckBoxNodeEditor;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.CheckBoxNodeRenderer;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JDialogCentered;\r\nimport net.nikr.eve.jeveasset.i18n.DialoguesSettings;\r\nimport net.nikr.eve.jeveasset.i18n.TabsTracker;\r\n\r\n\r\npublic class TrackerWalletFilterDialog extends JDialogCentered {\r\n\r\n\tprivate final JTree jTree;\r\n\tprivate final DefaultMutableTreeNode rootNode;\r\n\tprivate final DefaultTreeModel treeModel;\r\n\r\n\tprivate boolean save = false;\r\n\r\n\tpublic TrackerWalletFilterDialog(Program program) {\r\n\t\tsuper(program, TabsTracker.get().filterTitle(), Images.TOOL_TRACKER.getImage());\r\n\r\n\t\trootNode = new DefaultMutableTreeNode(DialoguesSettings.get().root());\r\n\t\ttreeModel = new DefaultTreeModel(rootNode);\r\n\r\n\t\tjTree = new JTree(treeModel);\r\n\t\tjTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);\r\n\t\tjTree.putClientProperty(\"JTree.lineStyle\", \"None\");\r\n\t\tjTree.setExpandsSelectedPaths(true);\r\n\t\tjTree.setRootVisible(false);\r\n\t\tjTree.setShowsRootHandles(true);\r\n\t\tjTree.setVisibleRowCount(0);\r\n\t\tjTree.setCellRenderer(new CheckBoxNodeRenderer());\r\n\t\tjTree.setCellEditor(new CheckBoxNodeEditor(jTree));\r\n\t\tjTree.setEditable(true);\r\n\r\n\t\tJButton jOK = new JButton(TabsTracker.get().ok());\r\n\t\tjOK.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tsave = true;\r\n\t\t\t\tsetVisible(false);\r\n\t\t\t}\r\n\t\t});\r\n\t\tJButton jCancel = new JButton(TabsTracker.get().cancel());\r\n\t\tjCancel.addActionListener(new ActionListener() {\r\n\t\t\t@Override\r\n\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n\t\t\t\tsetVisible(false);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tJScrollPane jTreeScroll = new JScrollPane(jTree);\r\n\t\tjTreeScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);\r\n\r\n\t\tlayout.setHorizontalGroup(\r\n\t\t\tlayout.createParallelGroup(GroupLayout.Alignment.LEADING)\r\n\t\t\t\t.addComponent(jTreeScroll, 0, GroupLayout.PREFERRED_SIZE, 600)\r\n\t\t\t\t.addGroup(layout.createSequentialGroup()\r\n\t\t\t\t\t.addGap(0, 0, Integer.MAX_VALUE)\r\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsWidth(), Program.getButtonsWidth(), Program.getButtonsWidth())\r\n\t\t\t\t)\r\n\t\t);\r\n\t\tlayout.setVerticalGroup(\r\n\t\t\tlayout.createSequentialGroup()\r\n\t\t\t\t.addComponent(jTreeScroll, 0, GroupLayout.PREFERRED_SIZE, 500)\r\n\t\t\t\t.addGroup(layout.createParallelGroup()\r\n\t\t\t\t\t.addComponent(jOK, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t\t.addComponent(jCancel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\r\n\t\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\tprivate DefaultMutableTreeNode add(final CheckBoxNode checkBoxNode, final DefaultMutableTreeNode parentNode) {\r\n\t\tjTree.setVisibleRowCount(jTree.getVisibleRowCount() + 1);\r\n\t\tDefaultMutableTreeNode node = new DefaultMutableTreeNode(checkBoxNode);\r\n\t\tif (parentNode == null) {\r\n\t\t\ttreeModel.insertNodeInto(node, rootNode, rootNode.getChildCount());\r\n\t\t} else {\r\n\t\t\ttreeModel.insertNodeInto(node, parentNode, parentNode.getChildCount());\r\n\t\t}\r\n\t\treturn node;\r\n\t}\r\n\r\n\tprivate void expandAll(final TreePath parent, final boolean expand) {\r\n\t\tTreeNode node = (TreeNode) parent.getLastPathComponent();\r\n\t\tif (node.getChildCount() >= 0) {\r\n\t\t\tfor (Enumeration<?> e = node.children(); e.hasMoreElements();) {\r\n\t\t\t\tTreeNode n = (TreeNode) e.nextElement();\r\n\t\t\t\tTreePath path = parent.pathByAddingChild(n);\r\n\t\t\t\texpandAll(path, expand);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (expand) {\r\n\t\t\tjTree.expandPath(parent);\r\n\t\t} else {\r\n\t\t\tjTree.collapsePath(parent);\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JComponent getDefaultFocus() {\r\n\t\treturn jTree;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected JButton getDefaultButton() {\r\n\t\treturn null;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void windowShown() { }\r\n\r\n\t@Override\r\n\tprotected void save() { }\r\n\r\n\tpublic boolean showWallet(Map<String, CheckBoxNode> nodes) {\r\n\t\tsave = false;\r\n\t\trootNode.removeAllChildren();\r\n\t\ttreeModel.reload();\r\n\t\tjTree.setVisibleRowCount(0);\r\n\t\r\n\t\tMap<String, CheckBoxNode> cloneList = cloneList(nodes);\r\n\r\n\t\tMap<String, DefaultMutableTreeNode> cache = new HashMap<>();\r\n\t\tfor (CheckBoxNode node : cloneList.values()) {\r\n\t\t\taddTree(cache, node);\r\n\t\t}\r\n\t\texpandAll(new TreePath((rootNode)), true);\r\n\r\n\t\tsuper.setVisible(true);\r\n\r\n\t\tboolean changed = changed(cloneList, nodes); //Only need to update if something have been changed...\r\n\t\tif (save && changed) {\r\n\t\t\tnodes.clear();\r\n\t\t\tnodes.putAll(cloneList);\r\n\t\t}\r\n\t\treturn save && changed;\r\n\t}\r\n\r\n\tprivate Map<String, CheckBoxNode> cloneList(Map<String, CheckBoxNode> nodes) {\r\n\t\tMap<String, CheckBoxNode> clonesCache = new HashMap<>();\r\n\t\tMap<String, CheckBoxNode> clonedNodes = new TreeMap<>();\r\n\t\tfor (Map.Entry<String, CheckBoxNode> entry : nodes.entrySet()) {\r\n\t\t\tclonedNodes.put(entry.getKey(), cloneTree(clonesCache, entry.getValue()));\r\n\t\t}\r\n\t\treturn clonedNodes;\r\n\t}\r\n\r\n\tprivate DefaultMutableTreeNode addTree(Map<String, DefaultMutableTreeNode> cache, CheckBoxNode node) {\r\n\t\t//Add parents if any...\r\n\t\tCheckBoxNode checkBoxNode = node.getParent();\r\n\t\tDefaultMutableTreeNode parentNode = null;\r\n\t\tif (checkBoxNode != null) {\r\n\t\t\tparentNode = addTree(cache, checkBoxNode);\r\n\t\t}\r\n\t\t//Add this node, if not already added\r\n\t\tDefaultMutableTreeNode treeNode = cache.get(node.getNodeID());\r\n\t\tif (treeNode == null) {\r\n\t\t\ttreeNode = add(node, parentNode);\r\n\t\t\tcache.put(node.getNodeID(), treeNode);\r\n\t\t}\r\n\t\treturn treeNode;\r\n\t}\r\n\r\n\tprivate CheckBoxNode cloneTree(Map<String, CheckBoxNode> clonesCache, CheckBoxNode oldNode) {\r\n\t\tCheckBoxNode oldParent = oldNode.getParent();\r\n\t\tCheckBoxNode cloneParent = null;\r\n\t\tif (oldParent != null) {\r\n\t\t\tcloneParent = cloneTree(clonesCache, oldParent);\r\n\t\t}\r\n\t\tCheckBoxNode cloneNode = clonesCache.get(oldNode.getNodeID());\r\n\t\tif (cloneNode == null) {\r\n\t\t\tcloneNode = new CheckBoxNode(cloneParent, oldNode);\r\n\t\t\tclonesCache.put(cloneNode.getNodeID(), cloneNode);\r\n\t\t}\r\n\t\treturn cloneNode;\r\n\t}\r\n\r\n\t/**\r\n\t * Check if the clone tree have been changed compared to the source tree\r\n\t * @param clone Clone Tree\r\n\t * @param source Source Tree\r\n\t * @return true if the maps are not equal. false if the maps are equal\r\n\t */\r\n\tprivate boolean changed(Map<String, CheckBoxNode> clone, Map<String, CheckBoxNode> source) {\r\n\t\tfor (Map.Entry<String, CheckBoxNode> entry : clone.entrySet()) {\r\n\t\t\tCheckBoxNode sourceNode = source.get(entry.getKey());\r\n\t\t\tCheckBoxNode cloneNode = entry.getValue();\r\n\t\t\tif (cloneNode.isSelected() != sourceNode.isSelected()) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/transaction/JTransactionTable.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.transaction;\r\n\r\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\r\nimport java.awt.Component;\r\nimport javax.swing.table.TableCellRenderer;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\r\n\r\n\r\npublic class JTransactionTable extends JAutoColumnTable {\r\n\r\n\tprivate final DefaultEventTableModel<MyTransaction> tableModel;\r\n\r\n\tpublic JTransactionTable(Program program, final DefaultEventTableModel<MyTransaction> tableModel) {\r\n\t\tsuper(program, tableModel);\r\n\t\tthis.tableModel = tableModel;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Component prepareRenderer(final TableCellRenderer renderer, final int row, final int column) {\r\n\t\tComponent component = super.prepareRenderer(renderer, row, column);\r\n\t\tboolean isSelected = isCellSelected(row, column);\r\n\t\tMyTransaction transaction = tableModel.getElementAt(row);\r\n\t\tString columnName = (String) this.getTableHeader().getColumnModel().getColumn(column).getHeaderValue();\r\n\r\n\t\tif (columnName.equals(TransactionTableFormat.NAME.getColumnName())) {\r\n\t\t\tif (transaction.isSell()) {\r\n\t\t\t\tColorSettings.configCell(component, ColorEntry.TRANSACTIONS_SOLD, isSelected);\r\n\t\t\t} else {\r\n\t\t\t\tColorSettings.configCell(component, ColorEntry.TRANSACTIONS_BOUGHT, isSelected);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (columnName.equals(TransactionTableFormat.VALUE.getColumnName()) && transaction.isBuy()) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.GLOBAL_VALUE_NEGATIVE, isSelected);\r\n\t\t}\r\n\t\t//User set location\r\n\t\tif (transaction.getLocation().isUserLocation() && columnName.equals(TransactionTableFormat.LOCATION.getColumnName())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.CUSTOM_USER_LOCATION, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\t//Added date\r\n\t\tif (columnName.equals(TransactionTableFormat.ADDED.getColumnName()) && Settings.get().getTableChanged(TransactionTab.NAME).before(transaction.getAdded())) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.TRANSACTIONS_NEW, isSelected);\r\n\t\t}\r\n\t\treturn component;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/transaction/TransactionTab.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.tabs.transaction;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.FilterList;\nimport ca.odell.glazedlists.ListSelection;\nimport ca.odell.glazedlists.SortedList;\nimport ca.odell.glazedlists.event.ListEvent;\nimport ca.odell.glazedlists.event.ListEventListener;\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport ca.odell.glazedlists.swing.TableComparatorChooser;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Date;\nimport java.util.List;\nimport javax.swing.GroupLayout;\nimport javax.swing.JButton;\nimport javax.swing.JComponent;\nimport javax.swing.JLabel;\nimport javax.swing.JMenu;\nimport javax.swing.JPopupMenu;\nimport javax.swing.JScrollPane;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.tag.TagUpdate;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel.JStatusLabel;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.JFixedToolBar;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabPrimary;\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter;\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuColumns;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo.AutoNumberFormat;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\nimport net.nikr.eve.jeveasset.gui.shared.table.PaddingTableCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\nimport net.nikr.eve.jeveasset.i18n.TabsTransaction;\n\npublic class TransactionTab extends JMainTabPrimary implements TagUpdate {\n\n\tprivate final JAutoColumnTable jTable;\n\tprivate final JStatusLabel jSellOrdersCount;\n\tprivate final JStatusLabel jSellOrdersTotal;\n\tprivate final JStatusLabel jSellOrdersAverage;\n\tprivate final JStatusLabel jBothOrdersCount;\n\tprivate final JStatusLabel jBothOrdersTotal;\n\tprivate final JStatusLabel jBothOrdersAverage;\n\tprivate final JStatusLabel jBuyOrdersCount;\n\tprivate final JStatusLabel jBuyOrdersTotal;\n\tprivate final JStatusLabel jBuyOrdersAverage;\n\tprivate final JButton jClearNew;\n\n\t//Table\n\tprivate final TransactionsFilterControl filterControl;\n\tprivate final EnumTableFormatAdaptor<TransactionTableFormat, MyTransaction> tableFormat;\n\tprivate final DefaultEventTableModel<MyTransaction> tableModel;\n\tprivate final FilterList<MyTransaction> filterList;\n\tprivate final EventList<MyTransaction> eventList;\n\tprivate final DefaultEventSelectionModel<MyTransaction> selectionModel;\n\n\tpublic static final String NAME = \"transaction\"; //Not to be changed!\n\n\tpublic TransactionTab(final Program program) {\n\t\tsuper(program, NAME, TabsTransaction.get().title(), Images.TOOL_TRANSACTION.getIcon(), true);\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t//StatusPanels must be initialized before the eventlist\n\t\t//Sell\n\t\tJLabel jSellOrders = StatusPanel.createIcon(Images.ORDERS_SELL.getIcon(), TabsTransaction.get().sellTitle());\n\t\tthis.addStatusbarLabel(jSellOrders);\n\n\t\tjSellOrdersCount = StatusPanel.createLabel(TabsTransaction.get().sellCount(), Images.EDIT_ADD.getIcon(), AutoNumberFormat.ITEMS);\n\t\tthis.addStatusbarLabel(jSellOrdersCount);\n\n\t\tjSellOrdersTotal = StatusPanel.createLabel(TabsTransaction.get().sellTotal(), Images.TOOL_VALUES.getIcon(), AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jSellOrdersTotal);\n\n\t\tjSellOrdersAverage = StatusPanel.createLabel(TabsTransaction.get().sellAvg(), Images.ASSETS_AVERAGE.getIcon(), AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jSellOrdersAverage);\n\n\t\t//Both\n\t\tJLabel jBothOrders = StatusPanel.createIcon(Images.TOOL_TRANSACTION.getIcon(), TabsTransaction.get().bothTitle());\n\t\tthis.addStatusbarLabel(jBothOrders);\n\n\t\tjBothOrdersCount = StatusPanel.createLabel(TabsTransaction.get().bothCount(), Images.EDIT_ADD.getIcon(), AutoNumberFormat.ITEMS);\n\t\tthis.addStatusbarLabel(jBothOrdersCount);\n\n\t\tjBothOrdersTotal = StatusPanel.createLabel(TabsTransaction.get().bothTotal(), Images.TOOL_VALUES.getIcon(), AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jBothOrdersTotal);\n\n\t\tjBothOrdersAverage = StatusPanel.createLabel(TabsTransaction.get().bothAvg(), Images.ASSETS_AVERAGE.getIcon(), AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jBothOrdersAverage);\n\n\t\t//Buy\n\t\tJLabel jBuyOrders = StatusPanel.createIcon(Images.ORDERS_BUY.getIcon(), TabsTransaction.get().buyTitle());\n\t\tthis.addStatusbarLabel(jBuyOrders);\n\n\t\tjBuyOrdersCount = StatusPanel.createLabel(TabsTransaction.get().buyCount(), Images.EDIT_ADD.getIcon(), AutoNumberFormat.ITEMS);\n\t\tthis.addStatusbarLabel(jBuyOrdersCount);\n\n\t\tjBuyOrdersTotal = StatusPanel.createLabel(TabsTransaction.get().buyTotal(), Images.TOOL_VALUES.getIcon(), AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jBuyOrdersTotal);\n\n\t\tjBuyOrdersAverage = StatusPanel.createLabel(TabsTransaction.get().buyAvg(), Images.ASSETS_AVERAGE.getIcon(), AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jBuyOrdersAverage);\n\n\t\tJFixedToolBar jToolBar = new JFixedToolBar();\n\n\t\tjClearNew = new JButton(TabsTransaction.get().clearNew(), Images.UPDATE_DONE_OK.getIcon());\n\t\tjClearNew.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tSettings.get().getTableChanged().put(NAME, new Date());\n\t\t\t\tjTable.repaint();\n\t\t\t\tjClearNew.setEnabled(false);\n\t\t\t\tprogram.saveSettings(\"Table Changed (transaction cleared)\");\n\t\t\t}\n\t\t});\n\t\tjToolBar.addButton(jClearNew);\n\n\t\t//Table Format\n\t\ttableFormat = TableFormatFactory.transactionTableFormat();\n\t\t//Backend\n\t\teventList = program.getProfileData().getTransactionsEventList();\n\t\t//Sorting (per column)\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<MyTransaction> sortedList = new SortedList<>(eventList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t//Filter\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tfilterList = new FilterList<>(sortedList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\tfilterList.addListEventListener(listener);\n\t\t//Table Model\n\t\ttableModel = EventModels.createTableModel(filterList, tableFormat);\n\t\t//Table\n\t\tjTable = new JTransactionTable(program, tableModel);\n\t\tjTable.setCellSelectionEnabled(true);\n\t\tPaddingTableCellRenderer.install(jTable, 1);\n\t\t//Sorting\n\t\tTableComparatorChooser<MyTransaction> comparatorChooser = TableComparatorChooser.install(jTable, sortedList, TableComparatorChooser.MULTIPLE_COLUMN_MOUSE, tableFormat);\n\t\t//Selection Model\n\t\tselectionModel = EventModels.createSelectionModel(filterList);\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\n\t\tjTable.setSelectionModel(selectionModel);\n\t\t//Listeners\n\t\tinstallTable(jTable);\n\t\t//Scroll Panels\n\t\tJScrollPane jTableScroll = new JScrollPane(jTable);\n\t\t//Table Filter\n\t\tfilterControl = new TransactionsFilterControl(sortedList);\n\t\t//Menu\n\t\tinstallTableTool(new TransactionTableMenu(), tableFormat, comparatorChooser, tableModel, jTable, filterControl, MyTransaction.class);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\t\tlayout.createParallelGroup()\n\t\t\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t\t\t.addComponent(jToolBar, jToolBar.getMinimumSize().width, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\t\tlayout.createSequentialGroup()\n\t\t\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t\t\t.addComponent(jToolBar, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t}\n\n\t@Override\n\tpublic void updateTags() {\n\t\tbeforeUpdateData();\n\t\ttableModel.fireTableDataChanged();\n\t\tfilterControl.refilter();\n\t\tafterUpdateData();\n\t}\n\n\t@Override\n\tpublic void clearData() {\n\t\tfilterControl.clearCache();\n\t}\n\n\t@Override\n\tpublic void updateCache() {\n\t\tDate current = Settings.get().getTableChanged(NAME);\n\t\tboolean newFound = false;\n\t\ttry {\n\t\t\teventList.getReadWriteLock().readLock().lock();\n\t\t\tfor (MyTransaction transaction : eventList) {\n\t\t\t\tif (current.before(transaction.getAdded())) {\n\t\t\t\t\tnewFound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t\tfilterControl.createCache();\n\t\tfinal boolean found = newFound;\n\t\tProgram.ensureEDT(new Runnable() {\n\t\t\t@Override\n\t\t\tpublic void run() {\n\t\t\t\tjClearNew.setEnabled(found);\n\t\t\t}\n\t\t});\n\t}\n\n\t@Override\n\tpublic Collection<LocationType> getLocations() {\n\t\ttry {\n\t\t\teventList.getReadWriteLock().readLock().lock();\n\t\t\treturn new ArrayList<>(eventList);\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t}\n\n\tpublic void addFilters(final List<Filter> filters) {\n\t\tfilterControl.addFilters(filters);\n\t}\n\n\tprivate class TransactionTableMenu implements TableMenu<MyTransaction> {\n\n\t\t@Override\n\t\tpublic JMenu getFilterMenu() {\n\t\t\treturn filterControl.getMenu(jTable, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getColumnMenu() {\n\t\t\treturn new JMenuColumns<>(program, tableFormat, tableModel, jTable, NAME);\n\t\t}\n\n\t\t@Override\n\t\tpublic MenuData<MyTransaction> getMenuData() {\n\t\t\treturn new MenuData<>(selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic void addInfoMenu(JPopupMenu jPopupMenu) {\n\t\t\tJMenuInfo.transctions(jPopupMenu, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic void addToolMenu(JComponent jComponent) { }\n\t}\n\n\tprivate class ListenerClass implements ListEventListener<MyTransaction> {\n\n\t\t@Override\n\t\tpublic void listChanged(ListEvent<MyTransaction> listChanges) {\n\t\t\tdouble sellTotal = 0;\n\t\t\tdouble buyTotal = 0;\n\t\t\tlong sellCount = 0;\n\t\t\tlong buyCount = 0;\n\t\t\ttry {\n\t\t\t\tfilterList.getReadWriteLock().readLock().lock();\n\t\t\t\tfor (MyTransaction transaction : filterList) {\n\t\t\t\t\tif (transaction.isSell()) { //Sell\n\t\t\t\t\t\tsellTotal += transaction.getPrice() * transaction.getQuantity();\n\t\t\t\t\t\tsellCount += transaction.getQuantity();\n\t\t\t\t\t} else { //Buy\n\t\t\t\t\t\tbuyTotal += transaction.getPrice() * transaction.getQuantity();\n\t\t\t\t\t\tbuyCount += transaction.getQuantity();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tfilterList.getReadWriteLock().readLock().unlock();\n\t\t\t}\n\t\t\tdouble sellAvg = 0;\n\t\t\tif (sellTotal > 0 && sellCount > 0) {\n\t\t\t\tsellAvg = sellTotal / sellCount;\n\t\t\t}\n\t\t\tdouble buyAvg = 0;\n\t\t\tif (buyTotal > 0 && buyCount > 0) {\n\t\t\t\tbuyAvg = buyTotal / buyCount;\n\t\t\t}\n\t\t\tdouble bothTotal = sellTotal + buyTotal;\n\t\t\tdouble bothCount = sellCount + buyCount;\n\t\t\tdouble bothAvg = 0;\n\t\t\tif (bothTotal > 0 && bothCount > 0) {\n\t\t\t\tbothAvg = bothTotal / bothCount;\n\t\t\t}\n\t\t\tjSellOrdersCount.setNumber(sellCount);\n\t\t\tjSellOrdersTotal.setNumber(sellTotal);\n\t\t\tjSellOrdersAverage.setNumber(sellAvg);\n\t\t\tjBothOrdersCount.setNumber(sellCount + buyCount);\n\t\t\tjBothOrdersTotal.setNumber(bothTotal);\n\t\t\tjBothOrdersAverage.setNumber(bothAvg);\n\t\t\tjBuyOrdersCount.setNumber(buyCount);\n\t\t\tjBuyOrdersTotal.setNumber(buyTotal);\n\t\t\tjBuyOrdersAverage.setNumber(buyAvg);\n\t\t}\n\t}\n\n\tprivate class TransactionsFilterControl extends FilterControl<MyTransaction> {\n\n\t\tpublic TransactionsFilterControl(EventList<MyTransaction> exportEventList) {\n\t\t\tsuper(program.getMainWindow().getFrame(),\n\t\t\t\t\tNAME,\n\t\t\t\t\ttableFormat,\n\t\t\t\t\teventList,\n\t\t\t\t\texportEventList,\n\t\t\t\t\tfilterList\n\t\t\t\t\t);\n\t\t}\n\n\t\t@Override\n\t\tpublic void saveSettings(final String msg) {\n\t\t\tprogram.saveSettings(\"Transaction Table: \" + msg); //Save Transaction Filters and Export Settings\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/transaction/TransactionTableFormat.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.transaction;\r\n\r\nimport java.util.Comparator;\r\nimport java.util.Date;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\r\nimport net.nikr.eve.jeveasset.data.settings.tag.Tags;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.LongInt;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Percent;\r\nimport net.nikr.eve.jeveasset.i18n.TabsTransaction;\r\n\r\n\r\npublic enum TransactionTableFormat implements EnumTableColumn<MyTransaction> {\r\n\tDATE(Date.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnTransactionDate();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn from.getDate();\r\n\t\t}\r\n\t},\r\n\tTAGS(Tags.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnTags();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn from.getTags();\r\n\t\t}\r\n\t},\r\n\tADDED(Date.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnAdded();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsTransaction.get().columnAddedToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn from.getAdded();\r\n\t\t}\r\n\t},\r\n\tNAME(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnName();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn from.getItem().getTypeName();\r\n\t\t}\r\n\t},\r\n\tGROUP(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnGroup();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn from.getItem().getGroup();\r\n\t\t}\r\n\t},\r\n\tCATEGORY(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnCategory();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn from.getItem().getCategory();\r\n\t\t}\r\n\t},\r\n\tQUANTITY(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnQuantity();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn from.getQuantity();\r\n\t\t}\r\n\t},\r\n\tPRICE(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnPrice();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn from.getPrice();\r\n\t\t}\r\n\t},\r\n\tTAX(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnTax();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn from.getTax();\r\n\t\t}\r\n\t},\r\n\tVALUE(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnValue();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn from.getValue();\r\n\t\t}\r\n\t},\r\n\tOWNER(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnOwner();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn from.getOwnerName();\r\n\t\t}\r\n\t},\r\n\tLOCATION(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnStationName();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn from.getLocation();\r\n\t\t}\r\n\t},\r\n\tSYSTEM(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnSystem();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn from.getLocation().getSystem();\r\n\t\t}\r\n\t},\r\n\tCONSTELLATION(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnConstellation();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn from.getLocation().getConstellation();\r\n\t\t}\r\n\t},\r\n\tREGION(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnRegion();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn from.getLocation().getRegion();\r\n\t\t}\r\n\t},\r\n\tTRANSACTION_PRICE(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnTransactionPrice();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsTransaction.get().columnTransactionPriceToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn from.getTransactionPrice();\r\n\t\t}\r\n\t},\r\n\tTRANSACTION_MARGIN(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnTransactionMargin();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsTransaction.get().columnTransactionMarginToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn from.getTransactionMargin();\r\n\t\t}\r\n\t},\r\n\tTRANSACTION_PROFIT(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnTransactionProfitDifference();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsTransaction.get().columnTransactionProfitDifferenceToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn from.getTransactionProfitDifference();\r\n\t\t}\r\n\t},\r\n\tTRANSACTION_PROFIT_PERCENT(Percent.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnTransactionProfitPercent();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic String getColumnToolTip() {\r\n\t\t\treturn TabsTransaction.get().columnTransactionProfitPercentToolTip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn from.getTransactionProfitPercent();\r\n\t\t}\r\n\t},\r\n\tCLIENT(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnClientName();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn from.getClientName();\r\n\t\t}\r\n\t},\r\n\tTYPE(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnTransactionType();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn from.getTransactionTypeFormatted();\r\n\t\t}\r\n\t},\r\n\tTRANSACTION_FOR(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnTransactionFor();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn from.getTransactionForFormatted();\r\n\t\t}\r\n\t},\r\n\tACCOUNT_KEY(Integer.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnAccountKey();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn from.getAccountKeyFormatted();\r\n\t\t}\r\n\t},\r\n\tVOLUME(Float.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnVolume();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn from.getItem().getVolumePackaged();\r\n\t\t}\r\n\t},\r\n\tTRANSACTION_ID(LongInt.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsTransaction.get().columnTransactionID();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final MyTransaction from) {\r\n\t\t\treturn new LongInt(from.getTransactionID());\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic boolean isShowDefault() {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t};\r\n\r\n\tprivate final Class<?> type;\r\n\tprivate final Comparator<?> comparator;\r\n\r\n\tprivate TransactionTableFormat(final Class<?> type) {\r\n\t\tthis.type = type;\r\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\r\n\t}\r\n\t@Override\r\n\tpublic Class<?> getType() {\r\n\t\treturn type;\r\n\t}\r\n\t@Override\r\n\tpublic Comparator<?> getComparator() {\r\n\t\treturn comparator;\r\n\t}\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn getColumnName();\r\n\t}\r\n\r\n}"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/tree/JTreeTable.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.gui.tabs.tree;\n\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport java.awt.Color;\nimport java.awt.Component;\nimport javax.swing.table.TableCellRenderer;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.shared.ColorUtil;\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\nimport net.nikr.eve.jeveasset.gui.tabs.assets.AssetTableFormat;\n\n\npublic class JTreeTable extends JAutoColumnTable {\n\n\tprivate final DefaultEventTableModel<TreeAsset> tableModel;\n\n\tpublic JTreeTable(final Program program, final DefaultEventTableModel<TreeAsset> tableModel) {\n\t\tsuper(program, tableModel);\n\t\tthis.tableModel = tableModel;\n\t}\n\n\t@Override\n\tpublic Component prepareRenderer(final TableCellRenderer renderer, final int row, final int column) {\n\t\tComponent component = super.prepareRenderer(renderer, row, column);\n\t\tboolean isSelected = isCellSelected(row, column);\n\t\tTreeAsset treeAsset = tableModel.getElementAt(row);\n\t\tString columnName = (String) this.getTableHeader().getColumnModel().getColumn(column).getHeaderValue();\n\t\t//Tree\n\t\tif (!isSelected && treeAsset.isParent()) {\n\t\t\tif (treeAsset.getDepth() == 0) {\n\t\t\t\tif (ColorUtil.isBrightColor(getBackground())) { //Light background color\n\t\t\t\t\tcomponent.setBackground(new Color(170, 170, 170));\n\t\t\t\t} else { //Dark background color\n\t\t\t\t\tcomponent.setBackground(Color.DARK_GRAY.darker().darker().darker());\n\t\t\t\t}\n\t\t\t\treturn component;\n\t\t\t} else if (treeAsset.getDepth() == 1) {\n\t\t\t\tif (ColorUtil.isBrightColor(getBackground())) { //Light background color\n\t\t\t\t\tcomponent.setBackground(new Color(190, 190, 190));\n\t\t\t\t} else { //Dark background color\n\t\t\t\t\tcomponent.setBackground(Color.DARK_GRAY.darker().darker());\n\t\t\t\t}\n\t\t\t\treturn component;\n\t\t\t} else if (treeAsset.getDepth() == 2) {\n\t\t\t\tif (ColorUtil.isBrightColor(getBackground())) { //Light background color\n\t\t\t\t\tcomponent.setBackground(new Color(210, 210, 210));\n\t\t\t\t} else { //Dark background color\n\t\t\t\t\tcomponent.setBackground(Color.DARK_GRAY.darker());\n\t\t\t\t}\n\t\t\t\treturn component;\n\t\t\t} else if (treeAsset.getDepth() > 2) {\n\t\t\t\tif (ColorUtil.isBrightColor(getBackground())) { //Light background color\n\t\t\t\t\tcomponent.setBackground(new Color(235, 235, 235));\n\t\t\t\t} else { //Dark background color\n\t\t\t\t\tcomponent.setBackground(Color.DARK_GRAY);\n\t\t\t\t}\n\t\t\t\treturn component;\n\t\t\t}\n\t\t}\n\t\t//User set price\n\t\tif (treeAsset.isUserPrice() && columnName.equals(AssetTableFormat.PRICE.getColumnName())) {\n\t\t\tColorSettings.configCell(component, ColorEntry.CUSTOM_PRICE, isSelected);\n\t\t\treturn component;\n\t\t}\n\t\t//User set name\n\t\tif (treeAsset.isUserName() && columnName.equals(AssetTableFormat.NAME.getColumnName())) {\n\t\t\tColorSettings.configCell(component, ColorEntry.CUSTOM_ASSET_NAME, isSelected);\n\t\t\treturn component;\n\t\t}\n\t\t//User set location\n\t\tif (treeAsset.getLocation().isUserLocation() && columnName.equals(AssetTableFormat.LOCATION.getColumnName())) {\n\t\t\tColorSettings.configCell(component, ColorEntry.CUSTOM_USER_LOCATION, isSelected);\n\t\t\treturn component;\n\t\t}\n\t\t//Blueprint Original\n\t\tif (treeAsset.isBPO()\n\t\t\t\t&& treeAsset.getItem().isBlueprint()\n\t\t\t\t&& (columnName.equals(AssetTableFormat.PRICE.getColumnName())\n\t\t\t\t|| columnName.equals(AssetTableFormat.PRICE_SELL_MIN.getColumnName())\n\t\t\t\t|| columnName.equals(AssetTableFormat.PRICE_BUY_MAX.getColumnName())\n\t\t\t\t|| columnName.equals(AssetTableFormat.NAME.getColumnName()))) {\n\t\t\tColorSettings.configCell(component, ColorEntry.GLOBAL_BPO, isSelected);\n\t\t\treturn component;\n\t\t}\n\t\t//Blueprint Copy\n\t\tif (treeAsset.isBPC()\n\t\t\t\t&& treeAsset.getItem().isBlueprint()\n\t\t\t\t&& (columnName.equals(AssetTableFormat.PRICE.getColumnName())\n\t\t\t\t|| columnName.equals(AssetTableFormat.PRICE_SELL_MIN.getColumnName())\n\t\t\t\t|| columnName.equals(AssetTableFormat.PRICE_BUY_MAX.getColumnName())\n\t\t\t\t|| columnName.equals(AssetTableFormat.NAME.getColumnName()))) {\n\t\t\tColorSettings.configCell(component, ColorEntry.GLOBAL_BPC, isSelected);\n\t\t\treturn component;\n\t\t}\n\n\t\t//Reprocessing Colors\n\t\tif (Settings.get().isReprocessColors() && !isSelected) {\n\t\t\t//Zero price (White)\n\t\t\tif (treeAsset.getPriceReprocessed() == 0 || treeAsset.getDynamicPrice() == 0) {\n\t\t\t\treturn component;\n\t\t\t}\n\t\t\t//Equal price (Yellow)\n\t\t\tboolean rowSelection = (this.isRowSelected(row) && Settings.get().isHighlightSelectedRows());\n\t\t\tif (treeAsset.getPriceReprocessed() == treeAsset.getDynamicPrice()) {\n\t\t\t\tColorSettings.configCell(component, ColorEntry.ASSETS_REPROCESSING_EQUAL, rowSelection, true);\n\t\t\t\treturn component;\n\t\t\t}\n\t\t\t//Reprocessed highest (Red)\n\t\t\tif (treeAsset.getPriceReprocessed() > treeAsset.getDynamicPrice()) {\n\t\t\t\tColorSettings.configCell(component, ColorEntry.ASSETS_REPROCESSING_REPROCES, rowSelection, true);\n\t\t\t\treturn component;\n\t\t\t}\n\t\t\t//Price highest (Green)\n\t\t\tif (treeAsset.getPriceReprocessed() < treeAsset.getDynamicPrice()) {\n\t\t\t\tColorSettings.configCell(component, ColorEntry.ASSETS_REPROCESSING_SELL, rowSelection, true);\n\t\t\t\treturn component;\n\t\t\t}\n\t\t}\n\t\t//Reproccessed is greater then price\n\t\tif (treeAsset.getPriceReprocessed() > treeAsset.getDynamicPrice() && columnName.equals(AssetTableFormat.PRICE_REPROCESSED.getColumnName())) {\n\t\t\tColorSettings.configCell(component, ColorEntry.ASSETS_REPROCESS, isSelected);\n\t\t\treturn component;\n\t\t}\n\t\treturn component;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/tree/TreeAsset.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.tree;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.EnumMap;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport javax.swing.Icon;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.settings.UserItem;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.HierarchyColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Percent;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Runs;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Security;\r\nimport net.nikr.eve.jeveasset.gui.tabs.assets.AssetTableFormat;\r\n\r\n\r\npublic class TreeAsset extends MyAsset {\r\n\r\n\tpublic enum TreeType {\r\n\t\tCATEGORY,\r\n\t\tLOCATION,\r\n\t}\r\n\r\n\tpublic static final String SPACE = \"    \";\r\n\tprivate static final Object NULL_PLACEHOLDER = new Object();\r\n\tprivate static final Security EMPTY_SECURITY = Security.create(\"\");\r\n\tprivate static final Map<TreeTableFormat, AssetTableFormat> columns = new EnumMap<>(TreeTableFormat.class);\r\n\tprivate final List<TreeAsset> tree;\r\n\tprivate final String compare;\r\n\tprivate final String ownerName;\r\n\tprivate final boolean parent;\r\n\tprivate final boolean item;\r\n\tprivate final int depthOffset;\r\n\tprivate final Icon icon;\r\n\r\n\tprivate final Set<TreeAsset> items = new HashSet<>();\r\n\tprivate final Map<TreeTableFormat, Object> values = new HashMap<>();\r\n\tprivate final Map<TreeTableFormat, Total> calcTotals = new HashMap<>();\r\n\tprivate final Map<TreeTableFormat, Average> calcAverages = new HashMap<>();\r\n\tprivate String treeName;\r\n\tprivate HierarchyColumn hierarchyColumn;\r\n\r\n\tpublic TreeAsset(final MyAsset asset, final TreeType treeType, final List<TreeAsset> tree, final String compare, final boolean parent) {\r\n\t\tsuper(asset);\r\n\t\tthis.treeName = createSpace(tree.size()) + asset.getName();\r\n\t\tthis.tree = new ArrayList<>(tree); //Copy\r\n\t\tthis.compare = compare + asset.getName() + \" #\" + asset.getItemID();\r\n\t\tthis.ownerName = asset.getOwnerName();\r\n\t\tthis.parent = parent;\r\n\t\tthis.item = true;\r\n\t\tthis.depthOffset = 0;\r\n\t\tif (treeType == TreeType.LOCATION && parent) {\r\n\t\t\tif (asset.getItem().isContainer()) {\r\n\t\t\t\tthis.icon = Images.LOC_CONTAINER.getIcon();\r\n\t\t\t} else if (asset.getItem().isShip()) {\r\n\t\t\t\tthis.icon = Images.LOC_SHIP.getIcon();\r\n\t\t\t} else if (asset.getItem().getTypeID() == 27) { //Office\r\n\t\t\t\tthis.icon = Images.LOC_OFFICE.getIcon();\r\n\t\t\t} else if (asset.getItem().getCategory().equals(Item.CATEGORY_PLANETARY_INDUSTRY)) {\r\n\t\t\t\tswitch (asset.getItem().getGroup()) {\r\n\t\t\t\t\tcase Item.GROUP_COMMAND_CENTERS:\r\n\t\t\t\t\t\tthis.icon = Images.LOC_PIN_COMMAND.getIcon();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase Item.GROUP_EXTRACTOR_CONTROL_UNITS:\r\n\t\t\t\t\t\tthis.icon = Images.LOC_PIN_EXTRACTOR.getIcon();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase Item.GROUP_PROCESSORS:\r\n\t\t\t\t\t\tthis.icon = Images.LOC_PIN_PROCESSOR.getIcon();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase Item.GROUP_SPACEPORTS:\r\n\t\t\t\t\t\tthis.icon = Images.LOC_PIN_SPACEPORT.getIcon();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase Item.GROUP_STORAGE_FACILITIES:\r\n\t\t\t\t\t\tthis.icon = Images.LOC_PIN_STORAGE.getIcon();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tthis.icon = null;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.icon = null;\r\n\t\t\t}\r\n\t\t} else { //Never happens\r\n\t\t\tthis.icon = null;\r\n\t\t}\r\n\t\tthis.hierarchyColumn = new HierarchyColumn(this.treeName, this.parent);\r\n\t}\r\n\r\n\tpublic TreeAsset(final MyLocation location, final String treeName, final String compare, final Icon icon, List<TreeAsset> tree) {\r\n\t\tthis(location, treeName, compare, icon, tree, 0);\r\n\t}\r\n\r\n\tpublic TreeAsset(final MyLocation location, final String treeName, final String compare, final Icon icon, List<TreeAsset> tree, final int depthOffset) {\r\n\t\tsuper(location);\r\n\t\tthis.treeName = createSpace(tree.size()) + treeName;\r\n\t\tthis.tree = new ArrayList<>(tree); //Copy\r\n\t\tthis.compare = compare;\r\n\t\tthis.ownerName = \"\";\r\n\t\tthis.icon = icon;\r\n\t\tthis.depthOffset = depthOffset;\r\n\t\tthis.parent = true;\r\n\t\tthis.item = false;\r\n\t\tthis.hierarchyColumn = new HierarchyColumn(this.treeName, this.parent);\r\n\t}\r\n\r\n\tprivate String createSpace(int size) {\r\n\t\tString space = \"\";\r\n\t\tfor (int i = 0; i < size; i++) {\r\n\t\t\tspace = space + SPACE;\r\n\t\t}\r\n\t\treturn space;\r\n\t}\r\n\r\n\tpublic String getCompare() {\r\n\t\treturn compare;\r\n\t}\r\n\r\n\tpublic int getDepth() {\r\n\t\treturn tree.size() + depthOffset;\r\n\t}\r\n\r\n\tpublic HierarchyColumn getHierarchyColumn() {\r\n\t\treturn hierarchyColumn;\r\n\t}\r\n\r\n\tpublic Icon getIcon() {\r\n\t\treturn icon;\r\n\t}\r\n\r\n\tpublic List<TreeAsset> getTree() {\r\n\t\treturn tree;\r\n\t}\r\n\r\n\tpublic String getTreeName() {\r\n\t\treturn treeName;\r\n\t}\r\n\r\n\tpublic boolean isItem() {\r\n\t\treturn item;\r\n\t}\r\n\r\n\tpublic boolean isParent() {\r\n\t\treturn parent;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setName(UserItem<Long, String> customeItem, String eveName) {\r\n\t\tsuper.setName(customeItem, eveName);\r\n\t\tthis.treeName = createSpace(tree.size()) + getName();\r\n\t\tthis.hierarchyColumn = new HierarchyColumn(this.treeName, this.parent);\r\n\t}\r\n\r\n\tpublic Integer getMeta() {\r\n\t\tif (isItem()) {\r\n\t\t\treturn super.getItem().getMeta();\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getOwnerName() {\r\n\t\treturn ownerName;\r\n\t}\r\n\r\n\tpublic Double getPriceMarketLatest() {\r\n\t\tif (isItem()) {\r\n\t\t\treturn super.getMarketPriceData().getLatest();\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Double getPriceMarketAverage() {\r\n\t\tif (isItem()) {\r\n\t\t\treturn super.getMarketPriceData().getAverage();\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Double getPriceMarketMaximum() {\r\n\t\tif (isItem()) {\r\n\t\t\treturn super.getMarketPriceData().getMaximum();\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Double getPriceMarketMinimum() {\r\n\t\tif (isItem()) {\r\n\t\t\treturn super.getMarketPriceData().getMinimum();\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Security getSecurity() {\r\n\t\tif (!getLocation().isEmpty() && !getLocation().isRegion()) {\r\n\t\t\treturn getLocation().getSecurityObject();\r\n\t\t} else {\r\n\t\t\treturn EMPTY_SECURITY;\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getSingleton() {\r\n\t\tif (isItem()) {\r\n\t\t\treturn super.getSingleton();\r\n\t\t} else {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Object getTotal(TreeTableFormat column) {\r\n\t\treturn getValue(column, calcTotals);\r\n\t}\r\n\r\n\tpublic Object getAverage(TreeTableFormat column) {\r\n\t\treturn getValue(column, calcAverages);\r\n\t}\r\n\r\n\tpublic <T extends DoubleValue> Object getValue(TreeTableFormat column, Map<TreeTableFormat, T> calc) {\r\n\t\tObject object = values.get(column);\r\n\t\tif (object == null) { //Create data\r\n\t\t\tif (!isParent()) {\r\n\t\t\t\tobject = getValue(column, this);\r\n\t\t\t\tif (object == null) {\r\n\t\t\t\t\tvalues.put(column, NULL_PLACEHOLDER);\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvalues.put(column, object);\r\n\t\t\t\t\treturn object;\r\n\t\t\t\t}\r\n\t\t\t} else if (Percent.class.isAssignableFrom(column.getType())) {\r\n\t\t\t\tDoubleValue value = calc.get(column);\r\n\t\t\t\tif (value == null) {\r\n\t\t\t\t\tvalues.put(column, NULL_PLACEHOLDER);\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\t\t\t\tDouble t = value.getDouble();\r\n\t\t\t\tif (t == null) {\r\n\t\t\t\t\tvalues.put(column, NULL_PLACEHOLDER);\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\t\t\t\tPercent percent = Percent.create(t);\r\n\t\t\t\tvalues.put(column, percent);\r\n\t\t\t\treturn percent;\r\n\t\t\t} else if (Runs.class.isAssignableFrom(column.getType())) {\r\n\t\t\t\tDoubleValue value = calc.get(column);\r\n\t\t\t\tif (value == null) {\r\n\t\t\t\t\tvalues.put(column, NULL_PLACEHOLDER);\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\t\t\t\tDouble t = value.getDouble();\r\n\t\t\t\tif (t == null) {\r\n\t\t\t\t\tvalues.put(column, NULL_PLACEHOLDER);\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\t\t\t\tRuns runs = new Runs(t.intValue());\r\n\t\t\t\tvalues.put(column, runs);\r\n\t\t\t\treturn runs;\r\n\t\t\t} else if (Number.class.isAssignableFrom(column.getType())) {\r\n\t\t\t\tDoubleValue value = calc.get(column);\r\n\t\t\t\tif (value == null) {\r\n\t\t\t\t\tvalues.put(column, NULL_PLACEHOLDER);\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\t\t\t\tDouble t = value.getDouble();\r\n\t\t\t\tif (t == null) {\r\n\t\t\t\t\tvalues.put(column, NULL_PLACEHOLDER);\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\t\t\t\tif (Double.class.isAssignableFrom(column.getType())) {\r\n\t\t\t\t\tvalues.put(column, t);\r\n\t\t\t\t\treturn t;\r\n\t\t\t\t} else if (Long.class.isAssignableFrom(column.getType())) {\r\n\t\t\t\t\tvalues.put(column, t.longValue());\r\n\t\t\t\t\treturn t.longValue();\r\n\t\t\t\t} else if (Integer.class.isAssignableFrom(column.getType())) {\r\n\t\t\t\t\tvalues.put(column, t.intValue());\r\n\t\t\t\t\treturn t.intValue();\r\n\t\t\t\t} else if (Float.class.isAssignableFrom(column.getType())) {\r\n\t\t\t\t\tvalues.put(column, t.floatValue());\r\n\t\t\t\t\treturn t.floatValue();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthrow new RuntimeException(column.getType() + \" not supported by TreeAsset\");\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t} else if (object.equals(NULL_PLACEHOLDER)) {\r\n\t\t\treturn null;\r\n\t\t} else {\r\n\t\t\treturn object;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Object getValue(TreeTableFormat column, TreeAsset asset) {\r\n\t\ttry {\r\n\t\t\tAssetTableFormat assetColumn = columns.get(column);\r\n\t\t\tif (assetColumn == null) {\r\n\t\t\t\tassetColumn = AssetTableFormat.valueOf(column.name());\r\n\t\t\t\tcolumns.put(column, assetColumn);\r\n\t\t\t}\r\n\t\t\treturn assetColumn.getColumnValue(asset);\r\n\t\t} catch (IllegalArgumentException ex) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void add(TreeTableFormat column, Percent percent, Number count) {\r\n\t\tAverage average = calcAverages.get(column);\r\n\t\tif (average == null) {\r\n\t\t\taverage = new Average();\r\n\t\t\tcalcAverages.put(column, average);\r\n\t\t}\r\n\t\tTotal total = calcTotals.get(column);\r\n\t\tif (total == null) {\r\n\t\t\ttotal = new Total();\r\n\t\t\tcalcTotals.put(column, total);\r\n\t\t}\r\n\t\tDouble d = percent.getDouble() / 100.0;\r\n\t\taverage.add(d, count);\r\n\t\ttotal.add(d);\r\n\t}\r\n\r\n\tprivate void add(TreeTableFormat column, Runs runs, Number count) {\r\n\t\tAverage average = calcAverages.get(column);\r\n\t\tif (average == null) {\r\n\t\t\taverage = new Average();\r\n\t\t\tcalcAverages.put(column, average);\r\n\t\t}\r\n\t\tTotal total = calcTotals.get(column);\r\n\t\tif (total == null) {\r\n\t\t\ttotal = new Total();\r\n\t\t\tcalcTotals.put(column, total);\r\n\t\t}\r\n\t\tLong l = runs.getLong();\r\n\t\taverage.add(l, count);\r\n\t\ttotal.add(l);\r\n\t}\r\n\r\n\tprivate void add(TreeTableFormat column, Number value, Number count) {\r\n\t\tAverage average = calcAverages.get(column);\r\n\t\tif (average == null) {\r\n\t\t\taverage = new Average();\r\n\t\t\tcalcAverages.put(column, average);\r\n\t\t}\r\n\t\tTotal total = calcTotals.get(column);\r\n\t\tif (total == null) {\r\n\t\t\ttotal = new Total();\r\n\t\t\tcalcTotals.put(column, total);\r\n\t\t}\r\n\t\taverage.add(value, count);\r\n\t\ttotal.add(value);\r\n\t}\r\n\r\n\tpublic Set<TreeAsset> getItems() {\r\n\t\treturn items;\r\n\t}\r\n\r\n\tpublic void resetValues() {\r\n\t\titems.clear();\r\n\t\tvalues.clear();\r\n\t\tcalcAverages.clear();\r\n\t\tcalcTotals.clear();\r\n\t}\r\n\r\n\tpublic void updateParents() {\r\n\t\tObject objCount = getValue(TreeTableFormat.COUNT, this);\r\n\t\t//Ignore null\r\n\t\tif (objCount == null || !(objCount instanceof Number)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tNumber count = (Number) objCount;\r\n\t\tfor (TreeTableFormat column : TreeTableFormat.values()) {\r\n\t\t\tif (!Percent.class.isAssignableFrom(column.getType())\r\n\t\t\t\t&& !Runs.class.isAssignableFrom(column.getType())\r\n\t\t\t\t&& !Number.class.isAssignableFrom(column.getType())\r\n\t\t\t\t) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tObject objValue = getValue(column, this);\r\n\t\t\t//Ignore null\r\n\t\t\tif (objValue == null) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (objValue instanceof Percent) {\r\n\t\t\t\t//Add this to parents\r\n\t\t\t\tfor (TreeAsset treeAsset : tree) {\r\n\t\t\t\t\ttreeAsset.add(column, (Percent) objValue, count);\r\n\t\t\t\t}\r\n\t\t\t\t//Include ship in value\r\n\t\t\t\tif (getItem().isShip()) {\r\n\t\t\t\t\tadd(column, (Percent) objValue, count);\r\n\t\t\t\t}\r\n\t\t\t} else if (objValue instanceof Runs) {\r\n\t\t\t\t//Add this to parents\r\n\t\t\t\tfor (TreeAsset treeAsset : tree) {\r\n\t\t\t\t\ttreeAsset.add(column, (Runs) objValue, count);\r\n\t\t\t\t}\r\n\t\t\t\t//Include ship in value\r\n\t\t\t\tif (getItem().isShip()) {\r\n\t\t\t\t\tadd(column, (Runs) objValue, count);\r\n\t\t\t\t}\r\n\t\t\t} else if (Number.class.isAssignableFrom(objValue.getClass())) {\r\n\t\t\t\t//Add this to parents\r\n\t\t\t\tfor (TreeAsset treeAsset : tree) {\r\n\t\t\t\t\ttreeAsset.add(column, (Number) objValue, count);\r\n\t\t\t\t}\r\n\t\t\t\t//Include ship in value\r\n\t\t\t\tif (getItem().isShip()) {\r\n\t\t\t\t\tadd(column, (Number) objValue, count);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (TreeAsset treeAsset : tree) {\r\n\t\t\ttreeAsset.items.add(this);\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(MyAsset o) {\r\n\t\tif (o instanceof TreeAsset) {\r\n\t\t\tTreeAsset treeAsset = (TreeAsset) o;\r\n\t\t\treturn this.getCompare().compareTo(treeAsset.getCompare());\r\n\t\t} else {\r\n\t\t\treturn super.compareTo(o);\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 5;\r\n\t\thash = 47 * hash + (this.compare != null ? this.compare.hashCode() : 0);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal TreeAsset other = (TreeAsset) obj;\r\n\t\treturn !((this.compare == null) ? (other.compare != null) : !this.compare.equals(other.compare));\r\n\t}\r\n\r\n\tprivate static interface DoubleValue {\r\n\t\tpublic Double getDouble();\r\n\t}\r\n\r\n\tprivate static class Total implements DoubleValue {\r\n\t\tprivate Double total = null;\r\n\r\n\t\tpublic void add(Number value) {\r\n\t\t\tif (value != null) {\r\n\t\t\t\tif (total == null) {\r\n\t\t\t\t\ttotal = 0.0;\r\n\t\t\t\t}\r\n\t\t\t\tthis.total = this.total + value.doubleValue();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic Double getDouble() {\r\n\t\t\treturn total;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class Average implements DoubleValue {\r\n\t\tprivate Double total = null;\r\n\t\tprivate Long count = null;\r\n\r\n\t\tpublic void add(Number value, Number count) {\r\n\t\t\tif (value != null && count != null) {\r\n\t\t\t\tif (total == null) {\r\n\t\t\t\t\ttotal = 0.0;\r\n\t\t\t\t}\r\n\t\t\t\tif (this.count == null) {\r\n\t\t\t\t\tthis.count = 0L;\r\n\t\t\t\t}\r\n\t\t\t\tthis.count = this.count + count.longValue();\r\n\t\t\t\tthis.total = this.total + (value.doubleValue() * count.longValue());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic Double getDouble() {\r\n\t\t\tif (total == null || count == null) {\r\n\t\t\t\treturn null;\r\n\t\t\t} else if (total > 0 && count > 0) {\r\n\t\t\t\treturn total / count;\r\n\t\t\t} else {\r\n\t\t\t\treturn 0.0;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/tree/TreeData.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.tree;\r\n\r\nimport ca.odell.glazedlists.EventList;\r\nimport java.util.ArrayList;\r\nimport java.util.Collections;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Objects;\r\nimport java.util.Set;\r\nimport java.util.TreeSet;\r\nimport javax.swing.Icon;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileData;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileManager;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.data.profile.TableData;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\r\nimport net.nikr.eve.jeveasset.i18n.General;\r\nimport net.nikr.eve.jeveasset.i18n.TabsTree;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\n\r\n\r\npublic class TreeData extends TableData {\r\n\r\n\tprivate final Set<TreeAsset> locationsExport = new TreeSet<>(new TreeTab.AssetTreeComparator());\r\n\tprivate final Set<TreeAsset> locations = new TreeSet<>(new TreeTab.AssetTreeComparator());\r\n\tprivate final Set<TreeAsset> categoriesExport = new TreeSet<>(new TreeTab.AssetTreeComparator());\r\n\tprivate final Set<TreeAsset> categories = new TreeSet<>(new TreeTab.AssetTreeComparator());\r\n\r\n\tpublic TreeData(Program program) {\r\n\t\tsuper(program);\r\n\t}\r\n\r\n\tpublic TreeData(ProfileManager profileManager, ProfileData profileData) {\r\n\t\tsuper(profileManager, profileData);\r\n\t}\r\n\r\n\tpublic void updateData() {\r\n\t\tlocations.clear();\r\n\t\tcategories.clear();\r\n\t\tlocationsExport.clear();\r\n\t\tcategoriesExport.clear();\r\n\r\n\t\tMap<Flag, Set<String>> flagsNames = new HashMap<>();\r\n\t\tFlag shipHangar = new Flag(TabsTree.get().locationShipHangar(), Images.LOC_HANGAR_SHIPS.getIcon());\r\n\t\tflagsNames.put(new Flag(TabsTree.get().locationAssetSafety(), Images.LOC_SAFTY.getIcon()), Collections.singleton(ApiIdConverter.getFlag(36).getFlagName())); //FlagName AssetSafety  (Asset Safety)\r\n\t\tflagsNames.put(new Flag(TabsTree.get().locationItemHangar(), Images.LOC_HANGAR_ITEMS.getIcon()), Collections.singleton(ApiIdConverter.getFlag(4).getFlagName())); //FlagName Hangar\r\n\t\tSet<String> deliveries = new HashSet<>();\r\n\t\tdeliveries.add(ApiIdConverter.getFlag(173).getFlagName()); //FlagName Deliveries \r\n\t\tdeliveries.add(ApiIdConverter.getFlag(62).getFlagName()); //FlagName CorpMarket (Corporation Deliveries)\r\n\t\tflagsNames.put(new Flag(TabsTree.get().locationDeliveries(), Images.LOC_DELIVERIES.getIcon()), deliveries);\r\n\t\tSet<String> industryJobs = new HashSet<>();\r\n\t\tindustryJobs.add(General.get().industryJobFlag());\r\n\t\tindustryJobs.add(MyIndustryJob.IndustryActivity.ACTIVITY_MANUFACTURING.toString()); //industry job manufacturing\r\n\t\tindustryJobs.add(MyIndustryJob.IndustryActivity.ACTIVITY_REACTIONS.toString()); //industry job reactions\r\n\t\tflagsNames.put(new Flag(General.get().industryJobFlag(), Images.LOC_INDUSTRY.getIcon()), industryJobs);\r\n\t\tSet<String> contracts = new HashSet<>();\r\n\t\tcontracts.add(General.get().contractExcluded());\r\n\t\tcontracts.add(General.get().contractIncluded());\r\n\t\tflagsNames.put(new Flag(TabsTree.get().locationContracts(), Images.LOC_CONTRACTS.getIcon()), contracts);\r\n\t\tSet<String> marketOrders = new HashSet<>();\r\n\t\tmarketOrders.add(General.get().marketOrderBuyFlag());\r\n\t\tmarketOrders.add(General.get().marketOrderSellFlag());\r\n\t\tflagsNames.put(new Flag(TabsTree.get().locationMarketOrders(), Images.LOC_MARKET.getIcon()), marketOrders);\r\n\t\tSet<String> clones = new HashSet<>();\r\n\t\tclones.add(ApiIdConverter.getFlag(89).getFlagName());\r\n\t\tclones.add(General.get().jumpClone()); \r\n\t\tflagsNames.put(new Flag(TabsTree.get().locationClones(), Images.LOC_CLONEBAY.getIcon()), clones);\r\n\r\n\t\tMyLocation emptyLocation = new MyLocation(0, \"\", 0, \"\", 0, \"\", 0, \"\", \"\");\r\n\r\n\t\tMap<String, TreeAsset> categoryCache = new HashMap<>();\r\n\t\tMap<String, TreeAsset> locationCache = new HashMap<>();\r\n\t\tfor (MyAsset asset : profileData.getAssetsList()) {\r\n\t\t//LOCATION\r\n\t\t\tList<TreeAsset> locationTree = new ArrayList<>();\r\n\t\t\tMyLocation location = asset.getLocation();\r\n\r\n\t\t\t//Region\r\n\t\t\tString regionKey = location.getRegion();\r\n\t\t\tTreeAsset regionAsset = locationCache.get(location.getRegion());\r\n\t\t\tif (regionAsset == null) {\r\n\t\t\t\tregionAsset = new TreeAsset(ApiIdConverter.getLocation(location.getRegionID()), location.getRegion(), regionKey, Images.LOC_REGION.getIcon(), locationTree);\r\n\t\t\t\tlocationCache.put(regionKey, regionAsset);\r\n\t\t\t\tlocationsExport.add(regionAsset);\r\n\t\t\t}\r\n\t\t\tlocationTree.add(regionAsset);\r\n\r\n\t\t\t//System\r\n\t\t\tString systemKey = location.getRegion() + location.getSystem();\r\n\t\t\tTreeAsset systemAsset = locationCache.get(systemKey);\r\n\t\t\tif (systemAsset == null) {\r\n\t\t\t\tsystemAsset = new TreeAsset(ApiIdConverter.getLocation(location.getSystemID()), location.getSystem(), systemKey, Images.LOC_SYSTEM.getIcon(), locationTree);\r\n\t\t\t\tlocationCache.put(systemKey, systemAsset);\r\n\t\t\t\tlocationsExport.add(systemAsset);\r\n\t\t\t}\r\n\t\t\tlocationTree.add(systemAsset);\r\n\r\n\t\t\tString fullLocation = location.getRegion()+location.getSystem();\r\n\t\t\t//Station\r\n\t\t\tif (location.isStation() || location.isPlanet()) { //Station or Planet\r\n\t\t\t\tString stationKey = location.getRegion() + location.getSystem() + location.getLocation();\r\n\t\t\t\tTreeAsset stationAsset = locationCache.get(stationKey);\r\n\t\t\t\tif (stationAsset == null) {\r\n\t\t\t\t\tif (asset.getLocation().isPlanet()) {\r\n\t\t\t\t\t\tstationAsset = new TreeAsset(asset.getLocation(), location.getLocation(), stationKey, Images.LOC_PLANET.getIcon(), locationTree);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tstationAsset = new TreeAsset(asset.getLocation(), location.getLocation(), stationKey, Images.LOC_STATION.getIcon(), locationTree);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlocationCache.put(stationKey, stationAsset);\r\n\t\t\t\t\tlocationsExport.add(stationAsset);\r\n\t\t\t\t}\r\n\t\t\t\tlocationTree.add(stationAsset);\r\n\t\t\t\tfullLocation = location.getRegion()+location.getSystem()+location.getLocation();\r\n\t\t\t}\r\n\r\n\t\t\t//Add parent item(s)\r\n\t\t\tString parentKey = fullLocation;\r\n\t\t\tList<MyAsset> list = new ArrayList<>(asset.getParents()); //Copy\r\n\t\t\tif (asset.getAssets().isEmpty()) {\r\n\t\t\t\tlist.add(asset);\r\n\t\t\t}\r\n\t\t\tif (!list.isEmpty()) {\r\n\t\t\t\tfor (MyAsset parentAsset : list) {\r\n\t\t\t\t\t//Office\r\n\t\t\t\t\tMyAsset parent = parentAsset.getParent();\r\n\t\t\t\t\tif (parent != null && parent.getTypeID() == 27) { //Office divisions\r\n\t\t\t\t\t\tString cacheKey = parentAsset.getFlagName() + \" #\" + parent.getItemID();\r\n\t\t\t\t\t\tTreeAsset divisionAsset = locationCache.get(cacheKey);\r\n\t\t\t\t\t\tif (divisionAsset == null) {\r\n\t\t\t\t\t\t\tdivisionAsset = new TreeAsset(location, parentAsset.getFlagName(), parentKey + cacheKey, Images.LOC_DIVISION.getIcon(), locationTree);\r\n\t\t\t\t\t\t\tlocationCache.put(cacheKey, divisionAsset);\r\n\t\t\t\t\t\t\tlocationsExport.add(divisionAsset);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tparentKey = parentKey + cacheKey;\r\n\t\t\t\t\t\tlocationTree.add(divisionAsset);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//Flags\r\n\t\t\t\t\tif (parent == null) {\r\n\t\t\t\t\t\tfor (Map.Entry<Flag, Set<String>> entry: flagsNames.entrySet()) {\r\n\t\t\t\t\t\t\tif (entry.getValue().contains(parentAsset.getFlag())) {\r\n\t\t\t\t\t\t\t\tfinal Flag flag;\r\n\t\t\t\t\t\t\t\tif (entry.getKey().getName().equals(\"Item Hangar\") && parentAsset.getItem().isShip()) {\r\n\t\t\t\t\t\t\t\t\tflag = shipHangar;\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tflag = entry.getKey();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tString cacheKey = flag.getName() + \"#\" + parentAsset.getLocationID();\r\n\t\t\t\t\t\t\t\tTreeAsset hangarAsset = locationCache.get(cacheKey);\r\n\t\t\t\t\t\t\t\tif (hangarAsset == null) {\r\n\t\t\t\t\t\t\t\t\thangarAsset = new TreeAsset(location, flag.getName(), parentKey + cacheKey, flag.getIcon(), locationTree);\r\n\t\t\t\t\t\t\t\t\tlocationCache.put(cacheKey, hangarAsset);\r\n\t\t\t\t\t\t\t\t\tlocationsExport.add(hangarAsset);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tparentKey = parentKey + cacheKey;\r\n\t\t\t\t\t\t\t\tlocationTree.add(hangarAsset);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//Item\r\n\t\t\t\t\tString cacheKey = parentAsset.getName() + \" #\" + parentAsset.getItemID();\r\n\t\t\t\t\tTreeAsset parentTreeAsset = locationCache.get(cacheKey);\r\n\t\t\t\t\tif (parentTreeAsset == null) {\r\n\t\t\t\t\t\tparentTreeAsset = new TreeAsset(parentAsset, TreeAsset.TreeType.LOCATION, locationTree, parentKey, !parentAsset.getAssets().isEmpty());\r\n\t\t\t\t\t\tlocationCache.put(cacheKey, parentTreeAsset);\r\n\t\t\t\t\t\tlocations.add(parentTreeAsset);\r\n\t\t\t\t\t\tlocationsExport.add(parentTreeAsset);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tparentKey = parentKey + parentAsset.getName() + \" #\" + parentAsset.getItemID();\r\n\t\t\t\t\tlocationTree.add(parentTreeAsset);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t//CATEGORY\r\n\t\t\tList<TreeAsset> categoryTree = new ArrayList<>();\r\n\r\n\t\t\t//Category\r\n\t\t\tString categoryKey = asset.getItem().getCategory();\r\n\t\t\tTreeAsset categoryAsset = categoryCache.get(categoryKey);\r\n\t\t\tif (categoryAsset == null) {\r\n\t\t\t\tcategoryAsset = new TreeAsset(emptyLocation, asset.getItem().getCategory(), categoryKey, null, categoryTree, 1);\r\n\t\t\t\tcategoryCache.put(categoryKey, categoryAsset);\r\n\t\t\t}\r\n\t\t\tcategoryTree.add(categoryAsset);\r\n\t\t\tcategoriesExport.add(categoryAsset);\r\n\r\n\t\t\t//Group\r\n\t\t\tString groupKey = categoryKey + asset.getItem().getGroup();\r\n\t\t\tTreeAsset groupAsset = categoryCache.get(groupKey);\r\n\t\t\tif (groupAsset == null) {\r\n\t\t\t\tgroupAsset = new TreeAsset(emptyLocation, asset.getItem().getGroup(), groupKey, null, categoryTree, 1);\r\n\t\t\t\tcategoryCache.put(groupKey, groupAsset);\r\n\t\t\t}\r\n\t\t\tcategoryTree.add(groupAsset);\r\n\t\t\tcategoriesExport.add(groupAsset);\r\n\r\n\t\t\t//Item\r\n\t\t\tTreeAsset category = new TreeAsset(asset, TreeAsset.TreeType.CATEGORY, categoryTree, groupKey, false);\r\n\t\t\tcategories.add(category);\r\n\t\t\tcategoriesExport.add(category);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Set<TreeAsset> getLocationsExport() {\r\n\t\treturn locationsExport;\r\n\t}\r\n\r\n\tpublic Set<TreeAsset> getLocations() {\r\n\t\treturn locations;\r\n\t}\r\n\r\n\tpublic Set<TreeAsset> getCategoriesExport() {\r\n\t\treturn categoriesExport;\r\n\t}\r\n\r\n\tpublic Set<TreeAsset> getCategories() {\r\n\t\treturn categories;\r\n\t}\r\n\r\n\tpublic EventList<TreeAsset> getDataCategories() {\r\n\t\tupdateData();\r\n\t\treturn EventListManager.create(categoriesExport);\r\n\t}\r\n\r\n\tpublic EventList<TreeAsset> getDataLocations() {\r\n\t\tupdateData();\r\n\t\treturn EventListManager.create(locationsExport);\r\n\t}\r\n\r\n\tprivate static class Flag implements Comparable<Flag> {\r\n\r\n\t\tprivate final String name;\r\n\t\tprivate final Icon icon;\r\n\r\n\t\tpublic Flag(String name, Icon icon) {\r\n\t\t\tthis.name = name;\r\n\t\t\tthis.icon = icon;\r\n\t\t}\r\n\r\n\t\tpublic String getName() {\r\n\t\t\treturn name;\r\n\t\t}\r\n\r\n\t\tpublic Icon getIcon() {\r\n\t\t\treturn icon;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int hashCode() {\r\n\t\t\tint hash = 3;\r\n\t\t\thash = 61 * hash + Objects.hashCode(this.name);\r\n\t\t\treturn hash;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean equals(Object obj) {\r\n\t\t\tif (this == obj) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif (obj == null) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (getClass() != obj.getClass()) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tfinal Flag other = (Flag) obj;\r\n\t\t\tif (!Objects.equals(this.name, other.name)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int compareTo(Flag o) {\r\n\t\t\treturn this.name.compareTo(o.name);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/tree/TreeTab.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.tree;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.FilterList;\nimport ca.odell.glazedlists.ListSelection;\nimport ca.odell.glazedlists.SortedList;\nimport ca.odell.glazedlists.TreeList;\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport ca.odell.glazedlists.swing.TableComparatorChooser;\nimport ca.odell.glazedlists.swing.TreeNodeData;\nimport ca.odell.glazedlists.swing.TreeTableCellEditor;\nimport ca.odell.glazedlists.swing.TreeTableCellRenderer;\nimport ca.odell.glazedlists.swing.TreeTableSupport;\nimport java.awt.Component;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.awt.event.MouseEvent;\nimport java.awt.event.MouseListener;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Comparator;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport javax.swing.ButtonGroup;\nimport javax.swing.GroupLayout;\nimport javax.swing.JButton;\nimport javax.swing.JComponent;\nimport javax.swing.JLabel;\nimport javax.swing.JMenu;\nimport javax.swing.JPanel;\nimport javax.swing.JPopupMenu;\nimport javax.swing.JScrollPane;\nimport javax.swing.JTable;\nimport javax.swing.JToggleButton;\nimport javax.swing.SwingUtilities;\nimport javax.swing.UIManager;\nimport javax.swing.table.TableCellEditor;\nimport javax.swing.table.TableCellRenderer;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.tag.TagUpdate;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel.JStatusLabel;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.JFixedToolBar;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabSecondary;\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuColumns;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo.AutoNumberFormat;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData.AssetMenuData;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.HierarchyColumn;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewTab;\nimport net.nikr.eve.jeveasset.gui.tabs.tree.TreeTab.AssetTreeExpansionModel.ExpandedState;\nimport net.nikr.eve.jeveasset.i18n.TabsAssets;\nimport net.nikr.eve.jeveasset.i18n.TabsTree;\n\n\npublic class TreeTab extends JMainTabSecondary implements TagUpdate {\n\n\tprivate enum TreeAction {\n\t\tTYPE,\n\t\tCOLLAPSE,\n\t\tEXPAND,\n\t\tREPROCESS_COLORS\n\t}\n\n\tprivate final int INDENT = 10;\n\n\t//GUI\n\tprivate final JTreeTable jTable;\n\tprivate final JStatusLabel jValue;\n\tprivate final JStatusLabel jReprocessed;\n\tprivate final JStatusLabel jCount;\n\tprivate final JStatusLabel jAverage;\n\tprivate final JStatusLabel jVolume;\n\tprivate final JToggleButton jCategories;\n\tprivate final JToggleButton jReprocessColors;\n\n\t//Table\n\tprivate final DefaultEventTableModel<TreeAsset> tableModel;\n\tprivate final EventList<TreeAsset> eventList;\n\tprivate final EventList<TreeAsset> exportEventList;\n\tprivate final SortedList<TreeAsset> sortedList;\n\tprivate final SortedList<TreeAsset> emptySortedList;\n\tprivate final FilterList<TreeAsset> filterList;\n\tprivate final TreeList<TreeAsset> treeList;\n\tprivate final TreeFilterControl filterControl;\n\tprivate final EnumTableFormatAdaptor<TreeTableFormat, TreeAsset> tableFormat;\n\tprivate final DefaultEventSelectionModel<TreeAsset> selectionModel;\n\tprivate final AssetTreeExpansionModel expansionModel;\n\n\tpublic static final String NAME = \"treeassets\"; //Not to be changed!\n\n\tprivate final TreeData treeData;\n\n\tpublic TreeTab(final Program program) {\n\t\tsuper(program, NAME, TabsTree.get().title(), Images.TOOL_TREE.getIcon(), true);\n\n\t\ttreeData = new TreeData(program);\n\n\t\tlayout.setAutoCreateGaps(true);\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tJFixedToolBar jToolBar = new JFixedToolBar();\n\n\t\tButtonGroup buttonGroup = new ButtonGroup();\n\n\t\tjCategories = new JToggleButton(TabsTree.get().categories(), Images.LOC_GROUPS.getIcon());\n\t\tjCategories.setActionCommand(TreeAction.TYPE.name());\n\t\tjCategories.addActionListener(listener);\n\t\tbuttonGroup.add(jCategories);\n\t\tjToolBar.addButton(jCategories);\n\n\t\tJToggleButton jLocation = new JToggleButton(TabsTree.get().locations(), Images.LOC_LOCATIONS.getIcon());\n\t\tjLocation.setActionCommand(TreeAction.TYPE.name());\n\t\tjLocation.addActionListener(listener);\n\t\tjLocation.setSelected(true);\n\t\tbuttonGroup.add(jLocation);\n\t\tjToolBar.addButton(jLocation);\n\n\t\tjToolBar.addSeparator();\n\n\t\tjReprocessColors = new JToggleButton(TabsAssets.get().reprocessColors(), Images.TOOL_REPROCESSED.getIcon());\n\t\tjReprocessColors.setToolTipText(TabsAssets.get().reprocessColorsToolTip());\n\t\tjReprocessColors.setSelected(Settings.get().isReprocessColors());\n\t\tjReprocessColors.setActionCommand(TreeAction.REPROCESS_COLORS.name());\n\t\tjReprocessColors.addActionListener(listener);\n\t\tjToolBar.addButton(jReprocessColors);\n\n\t\tjToolBar.addGlue();\n\n\t\tJButton jCollapse = new JButton(TabsTree.get().collapse(), Images.MISC_COLLAPSED.getIcon());\n\t\tjCollapse.setActionCommand(TreeAction.COLLAPSE.name());\n\t\tjCollapse.addActionListener(listener);\n\t\tjToolBar.addButton(jCollapse);\n\n\t\tJButton jExpand = new JButton(TabsTree.get().expand(), Images.MISC_EXPANDED.getIcon());\n\t\tjExpand.setActionCommand(TreeAction.EXPAND.name());\n\t\tjExpand.addActionListener(listener);\n\t\tjToolBar.addButton(jExpand);\n\n\t\tjVolume = StatusPanel.createLabel(TabsAssets.get().totalVolume(), Images.ASSETS_VOLUME.getIcon(), AutoNumberFormat.DOUBLE);\n\t\tthis.addStatusbarLabel(jVolume);\n\n\t\tjCount = StatusPanel.createLabel(TabsAssets.get().totalCount(), Images.EDIT_ADD.getIcon(), AutoNumberFormat.ITEMS);\n\t\tthis.addStatusbarLabel(jCount);\n\n\t\tjAverage = StatusPanel.createLabel(TabsAssets.get().average(), Images.ASSETS_AVERAGE.getIcon(), AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jAverage);\n\n\t\tjReprocessed = StatusPanel.createLabel(TabsAssets.get().totalReprocessed(), Images.SETTINGS_REPROCESSING.getIcon(), AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jReprocessed);\n\n\t\tjValue = StatusPanel.createLabel(TabsAssets.get().totalValue(), Images.TOOL_VALUES.getIcon(), AutoNumberFormat.ISK);\n\t\tthis.addStatusbarLabel(jValue);\n\n\t\t//Table Format\n\t\ttableFormat = TableFormatFactory.treeTableFormat();\n\t\t//Backend\n\t\teventList = EventListManager.create();\n\t\texportEventList = EventListManager.create();\n\t\t//Filter (must be done before sorting for totals to match up - for reason beyond my comprehension)\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tfilterList = new FilterList<>(eventList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t//Sorting\n\t\tEventList<TreeAsset> emptyEventList = EventListManager.create();\n\t\temptyEventList.getReadWriteLock().readLock().lock();\n\t\temptySortedList = new SortedList<>(emptyEventList);\n\t\temptyEventList.getReadWriteLock().readLock().unlock();\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tsortedList = new SortedList<>(filterList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t//Tree\n\t\texpansionModel = new AssetTreeExpansionModel();\n\t\ttreeList = new TreeList<>(sortedList, new AssetTreeFormat(sortedList), expansionModel);\n\t\t//Table Model\n\t\ttableModel = EventModels.createTableModel(treeList, tableFormat);\n\t\t//Table\n\t\tjTable = new JTreeTable(program, tableModel);\n\t\tjTable.setCellSelectionEnabled(true);\n\t\tjTable.disableColumnResizeCache(TreeTableFormat.NAME);\n\t\tjTable.setRowHeight(22);\n\t\tjTable.addMouseListener(listener);\n\t\t//Sorting\n\t\tTableComparatorChooser<TreeAsset> comparatorChooser = TableComparatorChooser.install(jTable, emptySortedList, TableComparatorChooser.MULTIPLE_COLUMN_MOUSE, tableFormat);\n\t\tcomparatorChooser.addSortActionListener(new ListenerSorter());\n\t\t//Tree\n\t\tTreeTableSupport install = TreeTableSupport.install(jTable, treeList, 0);\n\t\tTreeTableCellEditor editor = new AssetTreeTableCellEditor(install.getDelegateEditor(), treeList, tableModel, INDENT, 6);\n\t\tTreeTableCellRenderer renderer = new AssetTreeTableCellRenderer(install.getDelegateRenderer(), treeList, tableModel, INDENT, 6);\n\t\tinstall.setEditor(editor);\n\t\tinstall.setRenderer(renderer);\n\t\tjTable.setDefaultRenderer(HierarchyColumn.class, renderer);\n\t\tjTable.setDefaultEditor(HierarchyColumn.class, editor);\n\t\t//Selection Model\n\t\tselectionModel = EventModels.createSelectionModel(treeList);\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\n\t\tjTable.setSelectionModel(selectionModel);\n\t\t//Listeners\n\t\tinstallTable(jTable);\n\t\t//Scroll\n\t\tJScrollPane jTableScroll = new JScrollPane(jTable);\n\t\t//Table Filter\n\t\tfilterControl = new TreeFilterControl();\n\t\t//Menu\n\t\tinstallTableTool(new TreeTableMenu(), tableFormat, comparatorChooser, tableModel, jTable, filterControl, TreeAsset.class);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jToolBar, jToolBar.getMinimumSize().width, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jToolBar, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t}\n\n\t@Override\n\tpublic void updateTags() {\n\t\tbeforeUpdateData();\n\t\ttableModel.fireTableDataChanged();\n\t\tfilterControl.refilter();\n\t\tafterUpdateData();\n\t}\n\n\t@Override\n\tpublic void updateData() {\n\t\t//Update Data\n\t\ttreeData.updateData();\n\t\t//Update GUI\n\t\tupdateTableFull();\n\t}\n\n\t@Override\n\tpublic void clearData() {\n\t\ttry {\n\t\t\teventList.getReadWriteLock().writeLock().lock();\n\t\t\teventList.clear();\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t\tfilterControl.clearCache();\n\t\texpansionModel.clearCache();\n\t}\n\n\t@Override\n\tpublic void updateCache() {\n\t\tfilterControl.createCache();\n\t}\n\n\t@Override\n\tpublic Collection<LocationType> getLocations() {\n\t\ttry {\n\t\t\teventList.getReadWriteLock().readLock().lock();\n\t\t\treturn new ArrayList<>(eventList);\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t}\n\n\tpublic EventList<TreeAsset> getEventList() {\n\t\treturn eventList;\n\t}\n\n\tpublic void updateTableFull() {\n\t\tbeforeUpdateData();\n\t\tupdateTable(true);\n\t\tupdateTotals();\n\t\tupdateStatusbar();\n\t\tafterUpdateData();\n\t}\n\n\tpublic void resetTable() {\n\t\tbeforeUpdateDataKeepCache();\n\t\tupdateTable(false);\n\t\tafterUpdateData();\n\t}\n\n\tpublic void updateTable(boolean export) {\n\t\tfinal Set<TreeAsset> treeAssets;\n\t\tfinal Set<TreeAsset> treeAssetsExport;\n\t\tif (jCategories.isSelected()) {\n\t\t\ttreeAssets = treeData.getCategories();\n\t\t\ttreeAssetsExport = treeData.getCategoriesExport();\n\t\t} else {\n\t\t\ttreeAssets = treeData.getLocations();\n\t\t\ttreeAssetsExport = treeData.getLocationsExport();\n\t\t}\n\t\t//Update Jumps\n\t\teventList.getReadWriteLock().writeLock().lock();\n\t\ttry {\n\t\t\teventList.clear();\n\t\t\teventList.addAll(treeAssets);\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t\tif (export) {\n\t\t\texportEventList.getReadWriteLock().writeLock().lock();\n\t\t\ttry {\n\t\t\t\texportEventList.clear();\n\t\t\t\texportEventList.addAll(treeAssetsExport);\n\t\t\t} finally {\n\t\t\t\texportEventList.getReadWriteLock().writeLock().unlock();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic void updateReprocessColors() {\n\t\tjReprocessColors.setSelected(Settings.get().isReprocessColors());\n\t}\n\n\tprivate void updateTotals() {\n\t\t//Reset\n\t\tif (jCategories.isSelected()) {\n\t\t\tfor (TreeAsset treeAsset : treeData.getCategoriesExport()) {\n\t\t\t\ttreeAsset.resetValues();\n\t\t\t}\n\t\t} else {\n\t\t\tfor (TreeAsset treeAsset : treeData.getLocationsExport()) {\n\t\t\t\ttreeAsset.resetValues();\n\t\t\t}\n\t\t}\n\t\t//Calculate\n\t\ttry {\n\t\t\tfilterList.getReadWriteLock().readLock().lock();\n\t\t\tfor (TreeAsset treeAsset : filterList) {\n\t\t\t\tif (treeAsset.isItem()) {\n\t\t\t\t\ttreeAsset.updateParents();\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tfilterList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t}\n\n\tprivate void updateStatusbar() {\n\t\tdouble averageValue = 0;\n\t\tdouble totalValue = 0;\n\t\tlong totalCount = 0;\n\t\tdouble totalVolume = 0;\n\t\tdouble totalReprocessed = 0;\n\t\ttry {\n\t\t\tfilterList.getReadWriteLock().readLock().lock();\n\t\t\tfor (TreeAsset asset : filterList) {\n\t\t\t\tif (!asset.isItem()) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\ttotalValue = totalValue + asset.getValue();\n\t\t\t\ttotalCount = totalCount + asset.getCount();\n\t\t\t\ttotalVolume = totalVolume + asset.getVolumeTotal();\n\t\t\t\ttotalReprocessed = totalReprocessed + asset.getValueReprocessed();\n\t\t\t}\n\t\t} finally {\n\t\t\tfilterList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t\tif (totalCount > 0 && totalValue > 0) {\n\t\t\taverageValue = totalValue / totalCount;\n\t\t}\n\t\tjVolume.setNumber(totalVolume);\n\t\tjCount.setNumber(totalCount);\n\t\tjAverage.setNumber(averageValue);\n\t\tjReprocessed.setNumber(totalReprocessed);\n\t\tjValue.setNumber(totalValue);\n\t}\n\n\tprivate class TreeTableMenu implements TableMenu<TreeAsset> {\n\t\t@Override\n\t\tpublic MenuData<TreeAsset> getMenuData() {\n\t\t\treturn new AssetMenuData<>(selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getFilterMenu() {\n\t\t\treturn filterControl.getMenu(jTable, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getColumnMenu() {\n\t\t\treturn new JMenuColumns<>(program, tableFormat, tableModel, jTable, NAME);\n\t\t}\n\n\t\t@Override\n\t\tpublic void addInfoMenu(JPopupMenu jPopupMenu) {\n\t\t\tJMenuInfo.treeAsset(jPopupMenu, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic void addToolMenu(JComponent jComponent) { }\n\t}\n\n\tprivate class ListenerClass implements ActionListener, MouseListener {\n\t\tprivate final int WIDTH = UIManager.getIcon(\"Tree.expandedIcon\").getIconWidth();\n\n\t\t@Override\n\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\tif (TreeAction.TYPE.name().equals(e.getActionCommand())) {\n\t\t\t\texpansionModel.setState(ExpandedState.LOAD);\n\t\t\t\tupdateTableFull();\n\t\t\t} else if (TreeAction.COLLAPSE.name().equals(e.getActionCommand())) {\n\t\t\t\texpansionModel.setState(ExpandedState.COLLAPSE);\n\t\t\t\tresetTable();\n\t\t\t\texpansionModel.setState(ExpandedState.LOAD);\n\t\t\t} else if (TreeAction.EXPAND.name().equals(e.getActionCommand())) {\n\t\t\t\texpansionModel.setState(ExpandedState.EXPAND);\n\t\t\t\tresetTable();\n\t\t\t\texpansionModel.setState(ExpandedState.LOAD);\n\t\t\t} else if (TreeAction.REPROCESS_COLORS.name().equals(e.getActionCommand())) {\n\t\t\t\tboolean oldValue = Settings.get().isReprocessColors();\n\t\t\t\tboolean newValue = jReprocessColors.isSelected();\n\t\t\t\tif (oldValue != newValue) {\n\t\t\t\t\tSettings.lock(\"Reprocess Colors\");\n\t\t\t\t\tSettings.get().setReprocessColors(newValue);\n\t\t\t\t\tSettings.unlock(\"Reprocess Colors\");\n\t\t\t\t\tprogram.saveSettings(\"Reprocess Colors\");\n\t\t\t\t\tjTable.repaint();\n\t\t\t\t\tprogram.getAssetsTab().updateReprocessColors();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void mouseClicked(MouseEvent e) {\n\t\t\tif (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() % 2 == 0) {\n\t\t\t\tint row = jTable.rowAtPoint(e.getPoint());\n\t\t\t\tint depth = treeList.depth(row);\n\t\t\t\tfinal int min = INDENT + (depth * WIDTH);\n\t\t\t\tfinal int max = min + WIDTH;\n\t\t\t\tif (e.getPoint().x < min || e.getPoint().x > max) {\n\t\t\t\t\ttreeList.setExpanded(row, !treeList.isExpanded(row));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void mousePressed(MouseEvent e) { }\n\n\t\t@Override\n\t\tpublic void mouseReleased(MouseEvent e) { }\n\n\t\t@Override\n\t\tpublic void mouseEntered(MouseEvent e) { }\n\n\t\t@Override\n\t\tpublic void mouseExited(MouseEvent e) { }\n\t}\n\n\tprivate class ListenerSorter implements ActionListener {\n\n\t\t@Override\n\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\tSwingUtilities.invokeLater(new Runnable() {\n\t\t\t\t@Override\n\t\t\t\tpublic void run() {\n\t\t\t\t\texpansionModel.setState(ExpandedState.LOAD);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tjTable.lock();\n\t\t\t\t\t\temptySortedList.getReadWriteLock().readLock().lock();\n\t\t\t\t\t\tsortedList.getReadWriteLock().writeLock().lock();\n\t\t\t\t\t\tsortedList.setComparator(emptySortedList.getComparator());\n\t\t\t\t\t} finally {\n\t\t\t\t\t\temptySortedList.getReadWriteLock().readLock().unlock();\n\t\t\t\t\t\tsortedList.getReadWriteLock().writeLock().unlock();\n\t\t\t\t\t\tjTable.unlock();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic static class AssetTreeExpansionModel implements TreeList.ExpansionModel<TreeAsset> {\n\n\t\tpublic enum ExpandedState {\n\t\t\tEXPAND,\n\t\t\tCOLLAPSE,\n\t\t\tLOAD\n\t\t}\n\n\t\tprivate final Map<String, Boolean> cache = new HashMap<>();\n\t\tprivate ExpandedState state = ExpandedState.LOAD;\n\n\t\t@Override\n\t\tpublic boolean isExpanded(TreeAsset element, List<TreeAsset> path) {\n\t\t\tif (state == ExpandedState.EXPAND) {\n\t\t\t\treturn saveExpanded(element, true);\n\t\t\t} else if (state == ExpandedState.COLLAPSE) {\n\t\t\t\treturn saveExpanded(element, false);\n\t\t\t} else {\n\t\t\t\treturn loadExpanded(element);\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic void setExpanded(TreeAsset element, List<TreeAsset> path, boolean expanded) {\n\t\t\tsaveExpanded(element, expanded);\n\t\t}\n\n\t\tprivate boolean loadExpanded(final TreeAsset element) {\n\t\t\tBoolean expanded = cache.get(getElementKey(element));\n\t\t\tif (expanded != null) {\n\t\t\t\treturn expanded;\n\t\t\t} else {\n\t\t\t\treturn false; // default to collapsed\n\t\t\t}\n\t\t}\n\n\t\tprivate boolean saveExpanded(final TreeAsset element, final boolean expanded) {\n\t\t\tcache.put(getElementKey(element), expanded);\n\t\t\treturn expanded;\n\t\t}\n\n\t\tprivate String getElementKey(TreeAsset element) {\n\t\t\treturn element.getCompare();\n\t\t}\n\n\t\tpublic void clearCache() {\n\t\t\tcache.clear();\n\t\t}\n\n\t\tpublic void setState(ExpandedState expandeState) {\n\t\t\tthis.state = expandeState;\n\t\t}\n\t}\n\n\tpublic static class AssetTreeComparator implements Comparator<TreeAsset> {\n\n\t\t@Override\n\t\tpublic int compare(TreeAsset o1, TreeAsset o2) {\n\t\t\treturn o1.getCompare().compareTo(o2.getCompare());\n\t\t}\n\t}\n\n\tpublic static class AssetTreeSortedComparator implements Comparator<TreeAsset> {\n\n\t\tprivate final SortedList<TreeAsset> sortedList;\n\n\t\tpublic AssetTreeSortedComparator(SortedList<TreeAsset> sortedList) {\n\t\t\tthis.sortedList = sortedList;\n\t\t}\n\n\t\t@Override\n\t\tpublic int compare(TreeAsset o1, TreeAsset o2) {\n\t\t\tif (o1.getCompare().equals(o2.getCompare())) {\n\t\t\t\treturn 0; //Equal item\n\t\t\t} else {\n\t\t\t\tif (o1.getTree().size() == o2.getTree().size()) { //Compare equal depth\n\t\t\t\t\tfor (int i = 0; i < o1.getTree().size(); i++) {\n\t\t\t\t\t\tTreeAsset tree1 = o1.getTree().get(i);\n\t\t\t\t\t\tTreeAsset tree2 = o2.getTree().get(i);\n\t\t\t\t\t\tint result = tree1.getCompare().compareTo(tree2.getCompare());\n\t\t\t\t\t\tif (result != 0) {\n\t\t\t\t\t\t\treturn result; //Parent not equal\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//Parents equal - compare items\n\n\t\t\t\t\t//Use sorted comparator\n\t\t\t\t\tComparator<? super TreeAsset> comparator = sortedList.getComparator();\n\t\t\t\t\tif (comparator != null) {\n\t\t\t\t\t\tint result = comparator.compare(o1, o2);\n\t\t\t\t\t\tif (result != 0) { //Not equal\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//Fallback (Sorted comparator equal or null)\n\t\t\t\t\treturn o1.getCompare().compareTo(o2.getCompare());\n\t\t\t\t} else { //Should never happen (depth not equal)\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class AssetTreeFormat implements TreeList.Format<TreeAsset> {\n\n\t\tprivate final AssetTreeSortedComparator comparator;\n\n\t\tpublic AssetTreeFormat(SortedList<TreeAsset> sortedList) {\n\t\t\tthis.comparator = new AssetTreeSortedComparator(sortedList);\n\t\t}\n\n\t\t@Override\n\t\tpublic void getPath(List<TreeAsset> path, TreeAsset element) {\n\t\t\tpath.addAll(element.getTree());\n\t\t\tpath.add(element);\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean allowsChildren(TreeAsset element) {\n\t\t\treturn true;\n\t\t}\n\n\t\t@Override\n\t\tpublic Comparator<? super TreeAsset> getComparator(int depth) {\n\t\t\treturn comparator;\n\t\t}\n\t}\n\n\tprivate class TreeFilterControl extends FilterControl<TreeAsset> {\n\n\t\tpublic TreeFilterControl() {\n\t\t\tsuper(program.getMainWindow().getFrame(),\n\t\t\t\t\tNAME,\n\t\t\t\t\ttableFormat,\n\t\t\t\t\teventList,\n\t\t\t\t\texportEventList,\n\t\t\t\t\tfilterList\n\t\t\t\t\t);\n\t\t}\n\n\t\t@Override\n\t\tprotected void updateFilters() {\n\t\t\tif (program != null) {\n\t\t\t\tOverviewTab overviewTab = program.getOverviewTab(false);\n\t\t\t\tif (overviewTab != null) {\n\t\t\t\t\toverviewTab.updateFilters();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tprotected void beforeFilter() {\n\t\t\tbeforeUpdateData();\n\t\t}\n\n\t\t@Override\n\t\tprotected void afterFilter() {\n\t\t\tupdateTotals();\n\t\t\tupdateStatusbar();\n\t\t\tafterUpdateData();\n\t\t}\n\n\t\t@Override\n\t\tpublic void saveSettings(final String msg) {\n\t\t\tprogram.saveSettings(\"Tree Table: \" + msg); //Save Tree Filters and Export Settings\n\t\t}\n\t}\n\n\tpublic static class AssetTreeTableCellEditor extends TreeTableCellEditor {\n\n\t\tprivate int indent;\n\t\tprivate int spacer;\n\t\tprivate DefaultEventTableModel<TreeAsset> tableModel;\n\n\t\tpublic AssetTreeTableCellEditor(TableCellEditor delegate, TreeList<TreeAsset> treeList, DefaultEventTableModel<TreeAsset> tableModel, int indent, int spacer) {\n\t\t\tsuper(delegate, treeList);\n\t\t\tif (indent == spacer) {\n\t\t\t\tthrow new IllegalArgumentException(\"indent and spacer may not be equal - that invalidates indent\");\n\t\t\t}\n\t\t\tthis.tableModel = tableModel;\n\t\t\tthis.indent = indent;\n\t\t\tthis.spacer = spacer;\n\t\t}\n\n\t\t@Override\n\t\tprotected int getIndent(TreeNodeData treeNodeData, boolean showExpanderForEmptyParent) {\n\t\t\treturn super.getIndent(treeNodeData, showExpanderForEmptyParent) + indent;\n\t\t}\n\n\t\t@Override\n\t\tprotected int getSpacer(TreeNodeData treeNodeData, boolean showExpanderForEmptyParent) {\n\t\t\treturn spacer;\n\t\t}\n\n\t\t@Override\n\t\tpublic Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {\n\t\t\tJPanel jPanel = (JPanel) super.getTableCellEditorComponent(table, value, isSelected, row, column); //To change body of generated methods, choose Tools | Templates.\n\t\t\tTreeAsset treeAsset = tableModel.getElementAt(row);\n\t\t\tJLabel jLabel = (JLabel) jPanel.getComponent(3);\n\t\t\tjLabel.setIcon(treeAsset.getIcon());\n\t\t\treturn jPanel;\n\t\t}\n\n\t}\n\n\tpublic static class AssetTreeTableCellRenderer extends TreeTableCellRenderer {\n\n\t\tprivate int indent;\n\t\tprivate int spacer;\n\t\tprivate DefaultEventTableModel<TreeAsset> tableModel;\n\n\t\tpublic AssetTreeTableCellRenderer(TableCellRenderer delegate, TreeList<TreeAsset> treeList, DefaultEventTableModel<TreeAsset> tableModel, int indent, int spacer) {\n\t\t\tsuper(delegate, treeList);\n\t\t\tif (indent == spacer) {\n\t\t\t\tthrow new IllegalArgumentException(\"indent and spacer may not be equal - that invalidates indent\");\n\t\t\t}\n\t\t\tthis.tableModel = tableModel;\n\t\t\tthis.indent = indent;\n\t\t\tthis.spacer = spacer;\n\t\t}\n\n\t\t@Override\n\t\tprotected int getIndent(TreeNodeData treeNodeData, boolean showExpanderForEmptyParent) {\n\t\t\treturn super.getIndent(treeNodeData, showExpanderForEmptyParent) + indent;\n\t\t}\n\n\t\t@Override\n\t\tprotected int getSpacer(TreeNodeData treeNodeData, boolean showExpanderForEmptyParent) {\n\t\t\treturn spacer;\n\t\t}\n\n\t\t@Override\n\t\tpublic Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {\n\t\t\tJPanel jPanel = (JPanel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);\n\t\t\tTreeAsset treeAsset = tableModel.getElementAt(row);\n\t\t\tJLabel jLabel = (JLabel) jPanel.getComponent(3);\n\t\t\tjLabel.setIcon(treeAsset.getIcon());\n\t\t\treturn jPanel;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/tree/TreeTableFormat.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.tree;\n\nimport java.util.Comparator;\nimport java.util.Date;\nimport net.nikr.eve.jeveasset.data.settings.tag.Tags;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.AssetContainer;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.HierarchyColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.LongInt;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Percent;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Runs;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.YesNo;\nimport net.nikr.eve.jeveasset.i18n.TabsAssets;\n\n\npublic enum TreeTableFormat implements EnumTableColumn<TreeAsset> {\n\tNAME(HierarchyColumn.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnName();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getHierarchyColumn();\n\t\t}\n\t},\n\tNAME_TYPE(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnNameType();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getTypeName();\n\t\t}\n\t\t@Override\n\t\tpublic boolean isShowDefault() {\n\t\t\treturn false;\n\t\t}\n\t},\n\tNAME_CUSTOM(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnNameCustom();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getItemName();\n\t\t}\n\t\t@Override\n\t\tpublic boolean isShowDefault() {\n\t\t\treturn false;\n\t\t}\n\t},\n\tTAGS(Tags.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnTags();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getTags();\n\t\t}\n\t},\n\tGROUP(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnGroup();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getItem().getGroup();\n\t\t}\n\t},\n\tCATEGORY(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnCategory();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getItem().getCategory();\n\t\t}\n\t},\n\tSLOT(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnSlot();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getItem().getSlot();\n\t\t}\n\t},\n\tCHARGE_SIZE(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnChargeSize();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getItem().getChargeSize();\n\t\t}\n\t},\n\tOWNER(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnOwner();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getOwnerName();\n\t\t}\n\t},\n\tLOCATION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnLocation();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getLocation().getLocation();\n\t\t}\n\t},\n\tSECURITY(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnSecurity();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getSecurity();\n\t\t}\n\t},\n\tSYSTEM(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnSystem();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getLocation().getSystem();\n\t\t}\n\t},\n\tCONSTELLATION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnConstellation();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getLocation().getConstellation();\n\t\t}\n\t},\n\tREGION(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnRegion();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getLocation().getRegion();\n\t\t}\n\t},\n\tFACTION_WARFARE_SYSTEM_OWNER(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnFactionWarfareSystemOwner();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnFactionWarfareSystemOwnerToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getLocation().getFactionWarfareSystemOwner();\n\t\t}\n\t},\n\tCONTAINER(AssetContainer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnContainer();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getAssetContainer();\n\t\t}\n\t},\n\tFLAG(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnFlag();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getFlagName();\n\t\t}\n\t},\n\tPRICE(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnPrice();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnPriceToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getAverage(this);\n\t\t}\n\t},\n\tPRICE_SELL_MIN(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnPriceSellMin();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnPriceSellMinToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getAverage(this);\n\t\t}\n\t},\n\tPRICE_BUY_MAX(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnPriceBuyMax();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnPriceBuyMaxToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getAverage(this);\n\t\t}\n\t},\n\tPRICE_REPROCESSED(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnPriceReprocessed();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnPriceReprocessedToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getAverage(this);\n\t\t}\n\t},\n\tPRICE_MANUFACTURING(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnPriceManufacturing();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnPriceManufacturingToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getItem().getPriceManufacturing();\n\t\t}\n\t},\n\tTRANSACTION_PRICE_LATEST(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnTransactionPriceLatest();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnTransactionPriceLatestToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getAverage(this);\n\t\t}\n\t},\n\tTRANSACTION_PRICE_AVERAGE(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnTransactionPriceAverage();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnTransactionPriceAverageToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getAverage(this);\n\t\t}\n\t},\n\tTRANSACTION_PRICE_MAXIMUM(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnTransactionPriceMaximum();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnTransactionPriceMaximumToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getAverage(this);\n\t\t}\n\t},\n\tTRANSACTION_PRICE_MINIMUM(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnTransactionPriceMinimum();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnTransactionPriceMinimumToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getAverage(this);\n\t\t}\n\t},\n\tPRICE_BASE(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnPriceBase();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnPriceBaseToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getAverage(this);\n\t\t}\n\t},\n\tVALUE_REPROCESSED(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnValueReprocessed();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnValueReprocessedToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getTotal(this);\n\t\t}\n\t},\n\tVALUE(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnValue();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnValueToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getTotal(this);\n\t\t}\n\t},\n\tPRICE_REPROCESSED_DIFFERENCE(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnPriceReprocessedDifference();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnPriceReprocessedDifferenceToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getTotal(this);\n\t\t}\n\t},\n\tPRICE_REPROCESSED_PERCENT(Percent.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnPriceReprocessedPercent();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnPriceReprocessedPercentToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getAverage(this);\n\t\t}\n\t},\n\tCOUNT(Long.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnCount();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getTotal(this);\n\t\t}\n\t},\n\tCOUNT_TYPE(Long.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnTypeCount();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnTypeCountToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getTypeCount();\n\t\t}\n\t},\n\tMETA(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnMeta();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getMeta();\n\t\t}\n\t},\n\tTECH(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnTech();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getItem().getTech();\n\t\t}\n\t},\n\tVOLUME(Float.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnVolume();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getAverage(this);\n\t\t}\n\t},\n\tVOLUME_TOTAL(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnVolumeTotal();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnVolumeTotalToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getTotal(this);\n\t\t}\n\t},\n\tVOLUME_PACKAGED(Float.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnVolumePackaged();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnVolumePackagedToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getItem().getVolumePackaged();\n\t\t}\n\t},\n\tVALUE_PER_VOLUME(Double.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnValuePerVolume();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getAverage(this);\n\t\t}\n\t},\n\tSINGLETON(String.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnSingleton();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getSingleton();\n\t\t}\n\t},\n\tADDED(Date.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnAdded();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnAddedToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getAdded();\n\t\t}\n\t\t@Override\n\t\tpublic boolean isShowDefault() {\n\t\t\treturn false;\n\t\t}\n\t},\n\tMATERIAL_EFFICIENCY(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnMaterialEfficiency();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnMaterialEfficiencyToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getMaterialEfficiency();\n\t\t}\n\t},\n\tTIME_EFFICIENCY(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnTimeEfficiency();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnTimeEfficiencyToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getTimeEfficiency();\n\t\t}\n\t},\n\tRUNS(Runs.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnRuns();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnRunsToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getTotal(this);\n\t\t}\n\t},\n\tCITADEL(YesNo.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnStructure();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnStructureToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn YesNo.get(from.getLocation().isCitadel());\n\t\t}\n\t\t@Override\n\t\tpublic boolean isShowDefault() {\n\t\t\treturn false;\n\t\t}\n\t},\n\tITEM_ID(LongInt.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnItemID();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnItemIDToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn new LongInt(from.getItemID());\n\t\t}\n\t},\n\tLOCATION_ID(LongInt.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnLocationID();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnLocationIDToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn new LongInt(from.getLocationID());\n\t\t}\n\t},\n\tTYPE_ID(Integer.class) {\n\t\t@Override\n\t\tpublic String getColumnName() {\n\t\t\treturn TabsAssets.get().columnTypeID();\n\t\t}\n\t\t@Override\n\t\tpublic String getColumnToolTip() {\n\t\t\treturn TabsAssets.get().columnTypeIDToolTip();\n\t\t}\n\t\t@Override\n\t\tpublic Object getColumnValue(final TreeAsset from) {\n\t\t\treturn from.getItem().getTypeID();\n\t\t}\n\t};\n\n\tprivate final Class<?> type;\n\tprivate final Comparator<?> comparator;\n\n\tprivate TreeTableFormat(final Class<?> type) {\n\t\tthis.type = type;\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\n\t}\n\t@Override\n\tpublic Class<?> getType() {\n\t\treturn type;\n\t}\n\t@Override\n\tpublic Comparator<?> getComparator() {\n\t\treturn comparator;\n\t}\n\t@Override\n\tpublic String toString() {\n\t\treturn getColumnName();\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/values/AssetValue.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.values;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\nimport java.util.Objects;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\r\nimport net.nikr.eve.jeveasset.data.settings.TrackerData;\r\nimport net.nikr.eve.jeveasset.i18n.General;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\n\r\n\r\npublic class AssetValue implements Comparable<AssetValue> {\r\n\tprivate final static Map<String, AssetValue> CACHE = new HashMap<>();\r\n\tprivate static final String UNKNOWN_LOCATION = General.get().emptyLocation(\"(\\\\d+)\").replace(\"[\", \"\\\\[\").replace(\"]\", \"\\\\]\");\r\n\tprivate static final String CITADEL_MATCH = \"\\\\[Citadel #(\\\\d+)\\\\]\";\r\n\tprivate static final String CITADEL_REPLACE = General.get().emptyLocation(\"$1\").replace(\"[\", \"\\\\[\").replace(\"]\", \"\\\\]\");\r\n\r\n\tprivate final String flag;\r\n\tprivate String location;\r\n\tprivate Long locationID;\r\n\tprivate String id;\r\n\r\n\tpublic static AssetValue create(String id) {\r\n\t\treturn get(new AssetValue(id));\r\n\t}\r\n\r\n\tpublic static AssetValue create(String location, String flag, Long locationID) {\r\n\t\treturn get(new AssetValue(location, flag, locationID));\r\n\t}\r\n\r\n\tpublic static void updateData() {\r\n\t\ttry {\r\n\t\t\tTrackerData.writeLock();\r\n\t\t\tfor (AssetValue assetValue : CACHE.values()) {\r\n\t\t\t\tassetValue.update();\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tTrackerData.writeUnlock();\r\n\t\t}\r\n\t\tTrackerData.save(\"Asset values updated\", true);\r\n\t}\r\n\r\n\tprivate static AssetValue get(final AssetValue add) {\r\n\t\tAssetValue cached = CACHE.get(add.getKey());\r\n\t\tif (cached != null) {\r\n\t\t\treturn cached;\r\n\t\t} else {\r\n\t\t\tCACHE.put(add.getKey(), add);\r\n\t\t\treturn add;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate AssetValue(String id) {\r\n\t\tString[] ids = id.split(\" > \");\r\n\t\tif (ids.length == 2) {\r\n\t\t\tlocation = ids[0]; //Location\r\n\t\t\tflag = ids[1]; //Flag\r\n\t\t} else {\r\n\t\t\tlocation = id;\r\n\t\t\tflag = null; //Never used\r\n\t\t}\r\n\t\tlocationID = null;\r\n\t\tupdate();\r\n\t}\r\n\r\n\tprivate AssetValue(String location, String flag, Long locationID) {\r\n\t\tthis.location = location;\r\n\t\tthis.locationID = locationID;\r\n\t\tthis.flag = flag;\r\n\t\tupdate();\r\n\t}\r\n\r\n\tpublic String getLocation() {\r\n\t\treturn location;\r\n\t}\r\n\r\n\tpublic String getFlag() {\r\n\t\treturn flag;\r\n\t}\r\n\r\n\tpublic Long getLocationID() {\r\n\t\treturn locationID;\r\n\t}\r\n\r\n\tpublic String getID() {\r\n\t\treturn id;\r\n\t}\r\n\r\n\tprivate void update() {\r\n\t\tif (locationID == null) {\r\n\t\t\tlocationID = updateLocationID(location);\r\n\t\t}\r\n\t\tthis.location = updateLocationName(location, locationID);\r\n\t\tif (flag != null) {\r\n\t\t\tid = location + \" > \" + flag;\r\n\t\t} else {\r\n\t\t\tid =location;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Long updateLocationID(String name) {\r\n\t\t//Unknown Locations\r\n\t\tLong locationIDvalue = resolveUnknownLocationID(name, UNKNOWN_LOCATION);\r\n\t\t//Citadel\r\n\t\tif (locationIDvalue == null) {\r\n\t\t\tlocationIDvalue = resolveUnknownLocationID(name.replace(\",\", \"\"), CITADEL_MATCH);\r\n\t\t}\r\n\t\t//Existing Locations\r\n\t\tif (locationIDvalue == null) {\r\n\t\t\tlocationIDvalue = resolveExistingLocationID(name);\r\n\t\t}\r\n\t\treturn locationIDvalue;\r\n\t}\r\n\r\n\tprivate String updateLocationName(String locationValue, Long locationIDvalue) {\r\n\t\tif (locationIDvalue == null) {\r\n\t\t\treturn locationValue;\r\n\t\t} else {\r\n\t\t\t MyLocation myLocation = ApiIdConverter.getLocation(locationIDvalue);\r\n\t\t\t if (!myLocation.isEmpty()) {\r\n\t\t\t\t return myLocation.getLocation();\r\n\t\t\t } else {\r\n\t\t\t\t if (locationValue.replace(\",\", \"\").matches(CITADEL_MATCH)) {\r\n\t\t\t\t\t return locationValue.replace(\",\", \"\").replaceAll(CITADEL_MATCH, CITADEL_REPLACE);\r\n\t\t\t\t } else {\r\n\t\t\t\t\t return locationValue;\r\n\t\t\t\t }\r\n\t\t\t }\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Long resolveExistingLocationID(String locationValue) {\r\n\t\tfor (MyLocation myLocation : StaticData.get().getLocations()) {\r\n\t\t\tif (myLocation.getLocation().equals(locationValue)) {\r\n\t\t\t\treturn myLocation.getLocationID();\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate Long resolveUnknownLocationID(String locationValue, String match) {\r\n\t\tString number = locationValue.replaceAll(match, \"$1\"); //Try to resolve unknown location\r\n\t\ttry {\r\n\t\t\treturn Long.valueOf(number);\r\n\t\t} catch (NumberFormatException ex) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic String getKey() {\r\n\t\treturn this.location + \" \" + this.flag;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 3;\r\n\t\thash = 29 * hash + Objects.hashCode(this.location);\r\n\t\thash = 29 * hash + Objects.hashCode(this.flag);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal AssetValue other = (AssetValue) obj;\r\n\t\tif (!Objects.equals(this.location, other.location)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (!Objects.equals(this.flag, other.flag)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(AssetValue o) {\r\n\t\treturn this.getID().compareTo(o.getID());\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/values/DataSetCreator.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.values;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Calendar;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAccountBalance;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawClone;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileData;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.data.settings.TrackerData;\r\nimport net.nikr.eve.jeveasset.i18n.TabsValues;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\n\r\npublic class DataSetCreator {\r\n\r\n\tprivate static DataSetCreator creator;\r\n\r\n\tprotected DataSetCreator() { }\r\n\r\n\tpublic static void createTrackerDataPoint(ProfileData profileData, Date date) {\r\n\t\tgetCreator().createTrackerDataPointInner(profileData, date);\r\n\t}\r\n\r\n\tpublic static Map<String, Value> createDataSet(ProfileData profileData, Date date) {\r\n\t\treturn getCreator().createDataSetInner(profileData, date);\r\n\t}\r\n\r\n\tpublic static Value getValue(Map<String, Value> values, String owner, Date date) {\r\n\t\treturn getCreator().getValueInner(values, owner, date);\r\n\t}\r\n\r\n\tpublic static void purgeInvalidTrackerAssetValues() {\r\n\t\ttry {\r\n\t\t\tCalendar calendar = Calendar.getInstance();\r\n\t\t\tcalendar.set(2019, 1, 1);\r\n\t\t\tDate issues943fixed = calendar.getTime(); //Deleted PI structures: https://github.com/esi/esi-issues/issues/943\r\n\t\t\tTrackerData.writeLock();\r\n\t\t\tfor (List<Value> values : TrackerData.get().values()) {\r\n\t\t\t\tfor (Value value : values) {\r\n\t\t\t\t\tList<AssetValue> assetValues = new ArrayList<>(value.getAssetsFilter().keySet()); //Copy to allow modification of original during the loop\r\n\t\t\t\tfor (AssetValue assetValue : assetValues) {\r\n\t\t\t\t\tLong locationID = assetValue.getLocationID();\r\n\t\t\t\t\t\tif (locationID != null\r\n\t\t\t\t\t\t\t\t&& (locationID > 9000000000000000000L //9e18 locations: https://github.com/ccpgames/esi-issues/issues/684\r\n\t\t\t\t\t\t\t\t|| ((locationID > 40000000 && locationID < 50000000) && value.getDate().before(issues943fixed)) //Deleted PI structures: https://github.com/esi/esi-issues/issues/943\r\n\t\t\t\t\t\t\t\t)) {\r\n\t\t\t\t\t\t\tvalue.getAssetsFilter().remove(assetValue);\r\n\t\t\t\t\t\t\tSettings.get().getTrackerSettings().getFilters().remove(assetValue.getID());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tTrackerData.writeUnlock();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static DataSetCreator getCreator() {\r\n\t\tif (creator == null) {\r\n\t\t\tcreator = new DataSetCreator();\r\n\t\t}\r\n\t\treturn creator;\r\n\t}\r\n\r\n\tprivate void createTrackerDataPointInner(ProfileData profileData, Date date) {\r\n\t\tMap<String, Value> data = createDataSetInner(profileData, date);\r\n\r\n\t\t//Add everything\r\n\t\tfor (Map.Entry<String, Value> entry : data.entrySet()) {\r\n\t\t\tString owner = entry.getKey();\r\n\t\t\tValue value = entry.getValue();\r\n\t\t\tif (owner.equals(TabsValues.get().grandTotal())) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tTrackerData.add(owner, value);\r\n\t\t}\r\n\t\tpurgeInvalidTrackerAssetValues();\r\n\t}\r\n\r\n\tprivate Map<String, Value> createDataSetInner(ProfileData profileData, Date date) {\r\n\t\tMap<String, Value> values = new HashMap<>();\r\n\t\tValue total = new Value(TabsValues.get().grandTotal(), date);\r\n\t\tvalues.put(total.getName(), total);\r\n\t\t//Asset\r\n\t\ttry {\r\n\t\t\tprofileData.getAssetsEventList().getReadWriteLock().readLock().lock();\r\n\t\t\tfor (MyAsset asset : profileData.getAssetsEventList()) {\r\n\t\t\t\tif (asset.isGenerated()) { //Skip generated assets\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tValue value = getValueInner(values, asset.getOwnerName(), date);\r\n\t\t\t\t//Location/Flag logic\r\n\t\t\t\tAssetValue id = createAssetID(asset);\r\n\t\t\t\tvalue.addAssets(id, asset);\r\n\t\t\t\ttotal.addAssets(id, asset);\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tprofileData.getAssetsEventList().getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t\t//Implants\r\n\t\tfor (Map.Entry<OwnerType, List<RawClone>> entry : profileData.getClonesList().entrySet()) {\r\n\t\t\tValue value = getValueInner(values, entry.getKey().getOwnerName(), date);\r\n\t\t\tdouble implants = 0;\r\n\t\t\tfor (RawClone rawClone : entry.getValue()) {\r\n\t\t\t\tfor (int typeID : rawClone.getImplants()) {\r\n\t\t\t\t\timplants += ApiIdConverter.getPrice(typeID, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvalue.addImplants(implants);\r\n\t\t}\r\n\t\t//Account Balance\r\n\t\ttry {\r\n\t\t\tprofileData.getAccountBalanceEventList().getReadWriteLock().readLock().lock();\r\n\t\t\tfor (MyAccountBalance accountBalance : profileData.getAccountBalanceEventList()) {\r\n\t\t\t\tValue value = getValueInner(values, accountBalance.getOwnerName(), date);\r\n\t\t\t\tString id;\r\n\t\t\t\tif (accountBalance.isCorporation()) { //Corporation Wallets\r\n\t\t\t\t\tid = \"\" + (accountBalance.getAccountKey() - 999);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tid = \"0\"; //Character Wallet\r\n\t\t\t\t}\r\n\t\t\t\tvalue.addBalance(id, accountBalance.getBalance());\r\n\t\t\t\ttotal.addBalance(id, accountBalance.getBalance());\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tprofileData.getAccountBalanceEventList().getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t\t//Market Orders\r\n\t\ttry {\r\n\t\t\tprofileData.getMarketOrdersEventList().getReadWriteLock().readLock().lock();\r\n\t\t\taddMarketOrders(profileData.getMarketOrdersEventList(), values, total, date);\r\n\t\t} finally {\r\n\t\t\tprofileData.getMarketOrdersEventList().getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t\t//Industrys Job: Manufacturing\r\n\t\ttry {\r\n\t\t\tprofileData.getIndustryJobsEventList().getReadWriteLock().readLock().lock();\r\n\t\t\tfor (MyIndustryJob industryJob : profileData.getIndustryJobsEventList()) {\r\n\t\t\t\t//Manufacturing and not completed\r\n\t\t\t\tif (industryJob.isManufacturing() && industryJob.isNotDeliveredToAssets()) {\r\n\t\t\t\t\tValue value = getValueInner(values, industryJob.getOwnerName(), date);\r\n\t\t\t\t\tdouble manufacturingTotal = industryJob.getProductQuantity() * industryJob.getRuns() * ApiIdConverter.getPrice(industryJob.getProductTypeID(), false);\r\n\t\t\t\t\tvalue.addManufacturing(manufacturingTotal);\r\n\t\t\t\t\ttotal.addManufacturing(manufacturingTotal);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tprofileData.getIndustryJobsEventList().getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t\t//Contract\r\n\t\ttry {\r\n\t\t\tprofileData.getContractEventList().getReadWriteLock().readLock().lock();\r\n\t\t\taddContracts(profileData.getContractEventList(), values, profileData.getOwners(), total, date);\r\n\t\t} finally {\r\n\t\t\tprofileData.getContractEventList().getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t\t//Contract Items\r\n\t\ttry {\r\n\t\t\tprofileData.getContractItemEventList().getReadWriteLock().readLock().lock();\r\n\t\t\taddContractItems(profileData.getContractItemEventList(), values, profileData.getOwners(), total, date);\r\n\t\t} finally {\r\n\t\t\tprofileData.getContractItemEventList().getReadWriteLock().readLock().unlock();\r\n\t\t}\r\n\t\t//Skills\r\n\t\tfor (Map.Entry<String, Long> entry : profileData.getSkillPointsTotal().entrySet()) {\r\n\t\t\tfinal String owner = entry.getKey();\r\n\t\t\tfinal Long totalSkillPoints = entry.getValue();\r\n\t\t\tValue value = getValueInner(values, owner, date);\r\n\t\t\tvalue.setSkillPoints(totalSkillPoints);\r\n\t\t\ttotal.addSkillPointValue(totalSkillPoints, 0);\r\n\t\t}\r\n\t\treturn values;\r\n\t}\r\n\r\n\tprotected void addMarketOrders(List<MyMarketOrder> marketOrders, Map<String, Value> values, Value total, Date date) {\r\n\t\tfinal boolean useAssetPriceForSellOrders = Settings.get().isTrackerUseAssetPriceForSellOrders();\r\n\t\tfor (MyMarketOrder marketOrder : marketOrders) {\r\n\t\t\tif (marketOrder.isActive()) {\r\n\t\t\t\tValue value;\r\n\t\t\t\tif (marketOrder.isCorp() && !marketOrder.isCorporation() && marketOrder.getOwner().getCorporationName() != null) {\r\n\t\t\t\t\tvalue = getValueInner(values, marketOrder.getOwner().getCorporationName(), date);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvalue = getValueInner(values, marketOrder.getOwnerName(), date);\r\n\t\t\t\t}\r\n\t\t\t\tif (marketOrder.isBuyOrder()) { //Buy Orders\r\n\t\t\t\t\tvalue.addEscrows(marketOrder.getEscrow());\r\n\t\t\t\t\tvalue.addEscrowsToCover((marketOrder.getPrice() * marketOrder.getVolumeRemain()) - marketOrder.getEscrow());\r\n\t\t\t\t\ttotal.addEscrows(marketOrder.getEscrow());\r\n\t\t\t\t\ttotal.addEscrowsToCover((marketOrder.getPrice() * marketOrder.getVolumeRemain()) - marketOrder.getEscrow());\r\n\t\t\t\t} else { //Sell Orders\r\n\t\t\t\t\tif (assetsUpdated(marketOrder.getCreatedOrIssued(), marketOrder.getOwner())) {\r\n\t\t\t\t\t\t//To avoid duplicating the value:\r\n\t\t\t\t\t\t//Only add sell orders value that was created before the last asset update\r\n\t\t\t\t\t\tfinal double price;\r\n\t\t\t\t\t\tif (useAssetPriceForSellOrders) {\r\n\t\t\t\t\t\t\tprice = marketOrder.getDynamicPrice();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tprice = marketOrder.getPrice();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvalue.addSellOrders(price * marketOrder.getVolumeRemain());\r\n\t\t\t\t\t\ttotal.addSellOrders(price * marketOrder.getVolumeRemain());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected void addContracts(List<MyContract> contractItems, Map<String, Value> values, Map<Long, OwnerType> owners, Value total, Date date) {\r\n\t\tfor (MyContract contract : contractItems) {\r\n\t\t\tOwnerType issuer;\r\n\t\t\tif (contract.isForCorp()) {\r\n\t\t\t\tissuer = owners.get(contract.getIssuerCorpID());\r\n\t\t\t} else {\r\n\t\t\t\tissuer = owners.get(contract.getIssuerID());\r\n\t\t\t}\r\n\t\t\tOwnerType acceptor = owners.get(contract.getAcceptorID());\r\n\t\t\t//Contract Collateral\r\n\t\t\tif (contract.isCourierContract()) {\r\n\t\t\t\t//Shipping cargo (will get collateral or cargo back)\r\n\t\t\t\t//We can not get the assets in courier contracts, so we use only available value: collateral\r\n\t\t\t\tif (issuer != null) { //Issuer\r\n\t\t\t\t\t//Not Done & Assets Updated = Add Collateral\r\n\t\t\t\t\t//If Assets are not updated. nothing to counter...\r\n\t\t\t\t\t//OR\r\n\t\t\t\t\t//Done & Assets not updated = Add Collateral\r\n\t\t\t\t\t//If assets is updated, so are all the values\r\n\t\t\t\t\tif (assetsUpdated(contract.getDateIssued(), issuer) && (contract.isInProgress() || contract.isOpen())) {\r\n\t\t\t\t\t\taddContractCollateral(contract, values, total, date, issuer.getOwnerName()); //OK\r\n\t\t\t\t\t} else if (assetsNotUpdated(contract.getDateCompleted(), issuer) && contract.isCompletedSuccessful()) {\r\n\t\t\t\t\t\taddContractCollateral(contract, values, total, date, issuer.getOwnerName()); //NOT TESTED\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t//Transporting cargo (will get collateral back)\r\n\t\t\t\tif (acceptor != null) {\r\n\t\t\t\t\t//Not Done & Balance Updated = Add Collateral\r\n\t\t\t\t\t//If balance is not updated, there is nothing to counter...\r\n\t\t\t\t\tif (balanceUpdated(contract.getDateIssued(), acceptor) && contract.isInProgress()) {\r\n\t\t\t\t\t\taddContractCollateral(contract, values, total, date, acceptor.getOwnerName()); //OK\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Contract Isk\r\n\t\t\tif (issuer != null) { //Issuer\r\n\t\t\t\tif (contract.isOpen()) { //Not Completed\r\n\t\t\t\t\t//Not Done & Balance Updated = Add Reward (We still own the isk, until the contract is completed)\r\n\t\t\t\t\t//If balance is not updated, there is nothing to counter...\r\n\t\t\t\t\tif (balanceUpdated(contract.getDateIssued(), issuer)) {\r\n\t\t\t\t\t\t//Buying: +Reward\r\n\t\t\t\t\t\taddContractValue(values, total, date, issuer.getOwnerName(), contract.getReward()); //OK\r\n\t\t\t\t\t} // else: Selling: we do not own the price isk, until the contract is completed\r\n\t\t\t\t} else if (contract.isCompletedSuccessful()) { //Completed\r\n\t\t\t\t\t//Done & Balance not updated yet = Add Price + Remove Reward (Contract completed, update with the current values)\r\n\t\t\t\t\t//If balance is updated, so are all the values\r\n\t\t\t\t\tif (balanceNotUpdated(contract.getDateCompleted(), issuer)) { //NOT TESTED\r\n\t\t\t\t\t\t//Sold: +Price\r\n\t\t\t\t\t\taddContractValue(values, total, date, issuer.getOwnerName(), contract.getPrice());\r\n\t\t\t\t\t\t//Bought: -Reward\r\n\t\t\t\t\t\taddContractValue(values, total, date, issuer.getOwnerName(), -contract.getReward());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (acceptor != null && contract.isCompletedSuccessful()) { //Completed\r\n\t\t\t\t//Done & Balance not updated yet = Remove Price & Add Reward (Contract completed, update with the current values)\r\n\t\t\t\t//If balance is updated, so are all the values\r\n\t\t\t\tif (balanceNotUpdated(contract.getDateCompleted(), acceptor)) { //NOT TESTED\r\n\t\t\t\t\t//Bought: -Price\r\n\t\t\t\t\taddContractValue(values, total, date, acceptor.getOwnerName(), -contract.getPrice());\r\n\t\t\t\t\t//Sold: +Reward\r\n\t\t\t\t\taddContractValue(values, total, date, acceptor.getOwnerName(), contract.getReward());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected void addContractItems(List<MyContractItem> contractItems, Map<String, Value> values, Map<Long, OwnerType> owners, Value total, Date date) {\r\n\t\t//Contract Items\r\n\t\tfor (MyContractItem contractItem : contractItems) {\r\n\t\t\tMyContract contract = contractItem.getContract();\r\n\t\t\tif (contract.isIgnoreContract()) {\r\n\t\t\t\tcontinue; //Ignore courier contracts\r\n\t\t\t}\r\n\t\t\tif (contractItem.getItem() != null && contractItem.getItem().isBlueprint() && contractItem.getBlueprint() == null) {\r\n\t\t\t\tcontinue; //Ignore blueprints value - as we do not know if it's a BPO or BPC. Feels like assuming BPC (zero value) is the better option\r\n\t\t\t} //Else: Not a blueprint or we have data from the public contract items endpoints, so we do know if it's a BPC or PBO :)\r\n\t\t\tOwnerType issuer;\r\n\t\t\tif (contract.isForCorp()) {\r\n\t\t\t\tissuer = owners.get(contract.getIssuerCorpID());\r\n\t\t\t} else {\r\n\t\t\t\tissuer = owners.get(contract.getIssuerID());\r\n\t\t\t}\r\n\t\t\tOwnerType acceptor = owners.get(contract.getAcceptorID());\r\n\t\t\t//Issuer\r\n\t\t\tif (issuer != null) {\r\n\t\t\t\tif (contract.isOpen()) { //Not Completed\r\n\t\t\t\t\tif (contractItem.isIncluded()) { //Item are being sold\r\n\t\t\t\t\t\t//Not Done & Assets Updated = Add Item Value (We still own the item, until the contract is completed)\r\n\t\t\t\t\t\t//If Assets is not updated, nothing to counter\r\n\t\t\t\t\t\tif (assetsUpdated(contract.getDateIssued(), issuer)) {\r\n\t\t\t\t\t\t\t//Selling: +Item\r\n\t\t\t\t\t\t\taddContractValue(values, total, date, issuer.getOwnerName(), contractItem.getDynamicPrice() * contractItem.getQuantity());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} // else: Item is being bought - nothing have changed until the contract is done\r\n\t\t\t\t} else if (contract.isCompletedSuccessful()) { //Completed\r\n\t\t\t\t\t//Done & Assets not updated yet = Add Bought Item & Remove Sold Item (Contract completed, update with the current values)\r\n\t\t\t\t\t//If Assets is updated, so are all the values\r\n\t\t\t\t\tif (assetsNotUpdated(contract.getDateCompleted(), issuer)) {\r\n\t\t\t\t\t\tif (contractItem.isIncluded()) { //Item is being sold: remove item value\r\n\t\t\t\t\t\t\t//Sold: -Item\r\n\t\t\t\t\t\t\taddContractValue(values, total, date, issuer.getOwnerName(), (-contractItem.getDynamicPrice() * contractItem.getQuantity()));\r\n\t\t\t\t\t\t} else { //Item are being bought: Add item value\r\n\t\t\t\t\t\t\t//Bought: +Item\r\n\t\t\t\t\t\t\taddContractValue(values, total, date, issuer.getOwnerName(), contractItem.getDynamicPrice() * contractItem.getQuantity());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (acceptor != null && contract.isCompletedSuccessful()) { //Completed\r\n\t\t\t\t//Done & Assets not updated yet = Add Bought Item & Remove Sold Item (Contract completed, update with the current values)\r\n\t\t\t\t//If Assets is updated, so are all the values\r\n\t\t\t\tif (assetsNotUpdated(contract.getDateCompleted(), acceptor)) {\r\n\t\t\t\t\tif (contractItem.isIncluded()) { //Items are being bought: Add items value\r\n\t\t\t\t\t\t//Bought: +Item\r\n\t\t\t\t\t\taddContractValue(values, total, date, acceptor.getOwnerName(), contractItem.getDynamicPrice() * contractItem.getQuantity());\r\n\t\t\t\t\t} else { //Items are being sold: remove items value\r\n\t\t\t\t\t\t//Sold: -Item\r\n\t\t\t\t\t\taddContractValue(values, total, date, acceptor.getOwnerName(), (-contractItem.getDynamicPrice() * contractItem.getQuantity()));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate boolean assetsUpdated(Date date, OwnerType owner) {\r\n\t\tif (date == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (owner.getAssetLastUpdate() == null) { //Not updated owner or old profile data\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn owner.getAssetLastUpdate().after(date);\r\n\t}\r\n\r\n\tprivate boolean assetsNotUpdated(Date date, OwnerType owner) {\r\n\t\tif (date == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (owner.getAssetLastUpdate() == null) { //Not updated owner or old profile data\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn owner.getAssetLastUpdate().before(date);\r\n\t}\r\n\r\n\tprivate boolean balanceUpdated(Date date, OwnerType owner) {\r\n\t\tif (date == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (owner.getBalanceLastUpdate() == null) { //Not updated owner or old profile data\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn owner.getBalanceLastUpdate().after(date);\r\n\t}\r\n\r\n\tprivate boolean balanceNotUpdated(Date date, OwnerType owner) {\r\n\t\tif (date == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (owner.getBalanceLastUpdate() == null) { //Not updated owner or old profile data\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn owner.getBalanceLastUpdate().before(date);\r\n\t}\r\n\r\n\tprivate void addContractCollateral(MyContract contract, Map<String, Value> values, Value total, Date date, String owner) {\r\n\t\tdouble contractCollateral = contract.getCollateral();\r\n\t\tValue value = getValueInner(values, owner, date);\r\n\t\tvalue.addContractCollateral(contractCollateral);\r\n\t\ttotal.addContractCollateral(contractCollateral);\r\n\t}\r\n\r\n\tprivate void addContractValue(Map<String, Value> values, Value total, Date date, String owner, double change) {\r\n\t\tValue value = getValueInner(values, owner, date);\r\n\t\tvalue.addContractValue(change);\r\n\t\ttotal.addContractValue(change);\r\n\t}\r\n\r\n\tprivate AssetValue createAssetID(MyAsset asset) {\r\n\t\tString flagID = null;\r\n\t\tif (asset.isCorporation()) {\r\n\t\t\tfor (MyAsset parent : asset.getParents()) { //check if in office\r\n\t\t\t\tif (parent.getTypeID() == 27) { //Office\r\n\t\t\t\t\tflagID = getAssetFlag(asset);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn AssetValue.create(asset.getLocation().getLocation(), flagID, asset.getLocation().getLocationID());\r\n\t}\r\n\r\n\tprivate String getAssetFlag(MyAsset asset) {\r\n\t\tif (asset == null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tif (asset.getFlag().contains(\"CorpSAG\")) {\r\n\t\t\treturn asset.getFlag();\r\n\t\t} else {\r\n\t\t\treturn getAssetFlag(asset.getParent());\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Value getValueInner(Map<String, Value> values, String owner, Date date) {\r\n\t\tValue value = values.get(owner);\r\n\t\tif (value == null) {\r\n\t\t\tvalue = new Value(owner, date);\r\n\t\t\tvalues.put(owner, value);\r\n\t\t}\r\n\t\treturn value;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/values/IskData.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.values;\r\n\r\nimport ca.odell.glazedlists.EventList;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileData;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileManager;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.data.profile.TableData;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\r\nimport net.nikr.eve.jeveasset.gui.tabs.tracker.TrackerSkillPointFilter;\r\nimport net.nikr.eve.jeveasset.i18n.TabsValues;\r\n\r\n\r\npublic class IskData extends TableData {\r\n\r\n\tpublic IskData(Program program) {\r\n\t\tsuper(program);\r\n\t}\r\n\r\n\tpublic IskData(ProfileManager profileManager, ProfileData profileData) {\r\n\t\tsuper(profileManager, profileData);\r\n\t}\r\n\r\n\tpublic EventList<Value> getData() {\r\n\t\tEventList<Value> eventList = EventListManager.create();\r\n\t\tupdateData(eventList);\r\n\t\treturn eventList;\r\n\t}\r\n\r\n\tpublic void updateData(EventList<Value> eventList) {\r\n\t\tMap<String, Value> values = DataSetCreator.createDataSet(profileData, Settings.getNow());\r\n\t\tValue total = values.get(TabsValues.get().grandTotal());\r\n\t\ttotal.setSkillPoints(0);\r\n\t\tfor (Value value : values.values()) {\r\n\t\t\tTrackerSkillPointFilter skillPointFilter = Settings.get().getTrackerSettings().getSkillPointFilters().get(value.getName());\r\n\t\t\tif (skillPointFilter != null) {\r\n\t\t\t\tif (skillPointFilter.isEnabled()) {\r\n\t\t\t\t\tvalue.setSkillPointsMinimum(skillPointFilter.getMinimum());\r\n\t\t\t\t\ttotal.addSkillPointValue(value.getSkillPoints(), skillPointFilter.getMinimum());\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvalue.setSkillPoints(0);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\ttotal.addSkillPointValue(value.getSkillPoints(), 0);\r\n\t\t\t}\r\n\t\t}\r\n\t\ttry {\r\n\t\t\teventList.getReadWriteLock().writeLock().lock();\r\n\t\t\teventList.clear();\r\n\t\t\teventList.addAll(values.values());\r\n\t\t} finally {\r\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/values/JValueTable.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.values;\r\n\r\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\r\nimport java.awt.Component;\r\nimport java.awt.Font;\r\nimport javax.swing.table.TableCellRenderer;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\r\nimport net.nikr.eve.jeveasset.i18n.TabsValues;\r\n\r\n\r\npublic class JValueTable extends JAutoColumnTable {\r\n\r\n\tprivate final DefaultEventTableModel<Value> tableModel;\r\n\r\n\tpublic JValueTable(final Program program, final DefaultEventTableModel<Value> tableModel) {\r\n\t\tsuper(program, tableModel);\r\n\t\tthis.tableModel = tableModel;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Component prepareRenderer(final TableCellRenderer renderer, final int row, final int column) {\r\n\t\tComponent component = super.prepareRenderer(renderer, row, column);\r\n\t\tboolean isSelected = isCellSelected(row, column);\r\n\t\tValue value = tableModel.getElementAt(row);\r\n\t\tString columnName = (String) this.getTableHeader().getColumnModel().getColumn(column).getHeaderValue();\r\n\t\tObject object = getValueAt(row, column);\r\n\t\tboolean string;\r\n\t\tif (object instanceof String) {\r\n\t\t\tstring = true;\r\n\t\t} else {\r\n\t\t\tstring = false;\r\n\t\t}\r\n\r\n\t\t//Grand Total\r\n\t\tif (value.isGrandTotal()) {\r\n\t\t\tColorSettings.configCell(component, ColorEntry.GLOBAL_GRAND_TOTAL, isSelected);\r\n\t\t\treturn component;\r\n\t\t}\r\n\t\t//Best Asset: none\r\n\t\tif (string && TabsValues.get().none().equals(value.getBestAssetName()) && columnName.equals(ValueTableFormat.BEST_ASSET_NAME.getColumnName())) {\r\n\t\t\tFont font = component.getFont();\r\n\t\t\tcomponent.setFont(new Font(font.getName(), Font.ITALIC, font.getSize()));\r\n\t\t}\r\n\t\t//Best Module: none\r\n\t\tif (string && TabsValues.get().none().equals(value.getBestModuleName()) && columnName.equals(ValueTableFormat.BEST_MODULE_NAME.getColumnName())) {\r\n\t\t\tFont font = component.getFont();\r\n\t\t\tcomponent.setFont(new Font(font.getName(), Font.ITALIC, font.getSize()));\r\n\t\t}\r\n\t\t//Best Ship (Fitted): none\r\n\t\tif (string && TabsValues.get().none().equals(value.getBestShipFittedName()) && columnName.equals(ValueTableFormat.BEST_SHIP_FITTED_NAME.getColumnName())) {\r\n\t\t\tFont font = component.getFont();\r\n\t\t\tcomponent.setFont(new Font(font.getName(), Font.ITALIC, font.getSize()));\r\n\t\t}\r\n\t\t//Best Ship: none\r\n\t\tif (string && TabsValues.get().none().equals(value.getBestShipName()) && columnName.equals(ValueTableFormat.BEST_SHIP_NAME.getColumnName())) {\r\n\t\t\tFont font = component.getFont();\r\n\t\t\tcomponent.setFont(new Font(font.getName(), Font.ITALIC, font.getSize()));\r\n\t\t}\r\n\t\treturn component;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/values/Value.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.values;\r\n\r\nimport java.util.Comparator;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyShip;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\nimport net.nikr.eve.jeveasset.i18n.TabsValues;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\n\r\n\r\npublic class Value implements Comparable<Value>, LocationType {\r\n\r\n\tpublic static final Comparator<Value> DATE_COMPARATOR = new ValueDateComparator();\r\n\tprivate final static long MINIMUM_SKILL_POINTS = 5000000;\r\n\tprivate final static double SKILL_EXTRACTOR_SIZE = 500000.0;\r\n\tprivate final String name;\r\n\tprivate final Date date;\r\n\tprivate final String compare;\r\n\tprivate double assets = 0;\r\n\tprivate double implants = 0;\r\n\tprivate final Map<AssetValue, Double> assetsFilter = new HashMap<>();\r\n\tprivate boolean assetsContainersFixed = true; //New data is fixed\r\n\tprivate double sellOrders = 0;\r\n\tprivate double escrows = 0;\r\n\tprivate double escrowsToCover = 0;\r\n\tprivate double balance = 0;\r\n\tprivate final Map<String, Double> balanceFilter = new HashMap<>();\r\n\tprivate double manufacturing;\r\n\tprivate double contractCollateral;\r\n\tprivate double contractValue = 0;\r\n\tprivate long skillPoints = 0;\r\n\tprivate double skillPointValue = 0;\r\n\tprivate MyAsset bestAsset = null;\r\n\tprivate MyAsset bestShip = null;\r\n\tprivate MyAsset bestShipFitted = null;\r\n\tprivate MyAsset bestModule = null;\r\n\tprivate MyShip activeShip = null;\r\n\r\n\tpublic Value(Date date) {\r\n\t\tthis(\"\", date);\r\n\t}\r\n\r\n\tpublic Value(String name, Date date) {\r\n\t\tthis.name = name;\r\n\t\tthis.date = date;\r\n\t\tthis.compare = name + Formatter.simpleDate(date);\r\n\t}\r\n\r\n\tpublic void addAssets(double assets) {\r\n\t\tthis.assets = this.assets + assets;\r\n\t}\r\n\r\n\tpublic void addAssets(AssetValue id, Double assets) {\r\n\t\tthis.assets = this.assets + assets;\r\n\t\tDouble now = this.assetsFilter.get(id);\r\n\t\tif (now == null) {\r\n\t\t\tnow = 0.0;\r\n\t\t}\r\n\t\tthis.assetsFilter.put(id, now + assets);\r\n\t}\r\n\r\n\tpublic void addAssets(AssetValue id, MyAsset asset) {\r\n\t\tdouble total = asset.getDynamicPrice() * asset.getCount();\r\n\t\taddAssets(id, total);\r\n\t\tsetBestAsset(asset);\r\n\t\tsetBestShip(asset);\r\n\t\tsetBestShipFitted(asset);\r\n\t\tsetBestModule(asset);\r\n\t\tsetCurrentShip(asset);\r\n\t}\r\n\r\n\tpublic void removeAssets(AssetValue id) {\r\n\t\tDouble oldAssets = this.assetsFilter.get(id); //Get value\r\n\t\tthis.assets = this.assets - oldAssets; //Removing value from total\r\n\t\tthis.assetsFilter.remove(id); //Removing item\r\n\t}\r\n\r\n\tpublic void addSellOrders(double sellOrders) {\r\n\t\tthis.sellOrders = this.sellOrders + sellOrders;\r\n\t}\r\n\r\n\tpublic void addImplants(double implants) {\r\n\t\tthis.implants = this.implants + implants;\r\n\t}\r\n\r\n\tpublic void addEscrows(double escrows) {\r\n\t\tthis.escrows = this.escrows + escrows;\r\n\t}\r\n\r\n\tpublic void addEscrowsToCover(double escrowsToCover) {\r\n\t\tthis.escrowsToCover = this.escrowsToCover + escrowsToCover;\r\n\t}\r\n\r\n\tpublic void addBalance(double balance) {\r\n\t\tthis.balance = this.balance + balance;\r\n\t}\r\n\r\n\tpublic void addBalance(String id, double balance) {\r\n\t\tthis.balance = this.balance + balance;\r\n\t\tDouble now = this.balanceFilter.get(id);\r\n\t\tif (now == null) {\r\n\t\t\tnow = 0.0;\r\n\t\t}\r\n\t\tthis.balanceFilter.put(id, now + balance);\r\n\t}\r\n\r\n\tpublic void removeBalance(String id) {\r\n\t\tDouble oldBalance = this.balanceFilter.get(id); //Get value\r\n\t\tthis.balance = this.balance - oldBalance; //Removing value from total\r\n\t\tthis.balanceFilter.remove(id); //Removing item\r\n\t}\r\n\r\n\tpublic void addManufacturing(double manufacturing) {\r\n\t\tthis.manufacturing = this.manufacturing + manufacturing;\r\n\t}\r\n\r\n\tpublic void addContractCollateral(double contractCollateral) {\r\n\t\tthis.contractCollateral = this.contractCollateral + contractCollateral;\r\n\t}\r\n\r\n\tpublic void addContractValue(double contractValue) {\r\n\t\tthis.contractValue = this.contractValue + contractValue;\r\n\t}\r\n\r\n\tpublic void addSkillPointValue(long skillPoints, long minimum) {\r\n\t\tskillPointValue = skillPointValue + calcSkillPointValue(skillPoints, minimum);\r\n\t}\r\n\r\n\tpublic Date getDate() {\r\n\t\treturn date;\r\n\t}\r\n\r\n\tpublic String getName() {\r\n\t\treturn name;\r\n\t}\r\n\r\n\tpublic Map<AssetValue, Double> getAssetsFilter() {\r\n\t\treturn assetsFilter;\r\n\t}\r\n\r\n\tpublic boolean isAssetsContainersFixed() {\r\n\t\treturn assetsContainersFixed;\r\n\t}\r\n\r\n\tpublic double getAssetsTotal() {\r\n\t\treturn assets;\r\n\t}\r\n\r\n\tpublic double getImplants() {\r\n\t\treturn implants;\r\n\t}\r\n\r\n\tpublic double getSellOrders() {\r\n\t\treturn sellOrders;\r\n\t}\r\n\r\n\tpublic double getEscrows() {\r\n\t\treturn escrows;\r\n\t}\r\n\r\n\tpublic double getEscrowsToCover() {\r\n\t\treturn escrowsToCover;\r\n\t}\r\n\r\n\tpublic Map<String, Double> getBalanceFilter() {\r\n\t\treturn balanceFilter;\r\n\t}\r\n\r\n\tpublic double getBalanceTotal() {\r\n\t\treturn balance;\r\n\t}\r\n\r\n\tpublic double getManufacturing() {\r\n\t\treturn manufacturing;\r\n\t}\r\n\r\n\tpublic double getContractCollateral() {\r\n\t\treturn contractCollateral;\r\n\t}\r\n\r\n\tpublic double getContractValue() {\r\n\t\treturn contractValue;\r\n\t}\r\n\r\n\tpublic long getSkillPoints() {\r\n\t\treturn skillPoints;\r\n\t}\r\n\r\n\tpublic double getSkillPointValue() {\r\n\t\treturn skillPointValue;\r\n\t}\r\n\r\n\tprivate double calcSkillPointValue(long totalSkillPoints, long mimimum) {\r\n\t\tdouble extractorPrice = ApiIdConverter.getPrice(40519, false); //Skill Extractor\r\n\t\tdouble injectorPrice = ApiIdConverter.getPrice(40520, false); //Large Skill Injector\r\n\t\tif (totalSkillPoints < MINIMUM_SKILL_POINTS) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tlong extractableSkillPoints = totalSkillPoints - Math.max(MINIMUM_SKILL_POINTS, mimimum);\r\n\t\tdouble injecters = Math.floor(extractableSkillPoints / SKILL_EXTRACTOR_SIZE);\r\n\t\tif (injecters < 1) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\treturn injecters * (injectorPrice - extractorPrice);\r\n\t}\r\n\r\n\tpublic String getBestAssetName() {\r\n\t\treturn getName(bestAsset);\r\n\t}\r\n\r\n\tpublic String getBestShipName() {\r\n\t\treturn getName(bestShip);\r\n\t}\r\n\r\n\tpublic String getBestShipFittedName() {\r\n\t\treturn getName(bestShipFitted);\r\n\t}\r\n\r\n\tpublic String getBestModuleName() {\r\n\t\treturn getName(bestModule);\r\n\t}\r\n\r\n\tpublic double getBestAssetValue() {\r\n\t\treturn getDynamicPrice(bestAsset);\r\n\t}\r\n\r\n\tpublic double getBestShipValue() {\r\n\t\treturn getDynamicPrice(bestShip);\r\n\t}\r\n\r\n\tpublic double getBestShipFittedValue() {\r\n\t\tif (bestShipFitted != null) {\r\n\t\t\treturn getShipFittedValue(bestShipFitted);\r\n\t\t} else {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic double getBestModuleValue() {\r\n\t\treturn getDynamicPrice(bestModule);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic MyLocation getLocation() {\r\n\t\tif (activeShip != null) {\r\n\t\t\treturn activeShip.getLocation();\r\n\t\t} else {\r\n\t\t\treturn ApiIdConverter.getLocation(0);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic String getActiveShip() {\r\n\t\tif (activeShip != null) {\r\n\t\t\treturn activeShip.getName();\r\n\t\t}\r\n\t\treturn TabsValues.get().empty();\r\n\t}\r\n\r\n\tpublic String getCurrentStation() {\r\n\t\tif (activeShip != null) {\r\n\t\t\treturn activeShip.getLocation().getStation();\r\n\t\t}\r\n\t\treturn TabsValues.get().empty();\r\n\t}\r\n\r\n\tpublic String getCurrentSystem() {\r\n\t\tif (activeShip != null) {\r\n\t\t\treturn activeShip.getLocation().getSystem();\r\n\t\t}\r\n\t\treturn TabsValues.get().empty();\r\n\t}\r\n\r\n\tpublic String getCurrentConstellation() {\r\n\t\tif (activeShip != null) {\r\n\t\t\treturn activeShip.getLocation().getConstellation();\r\n\t\t}\r\n\t\treturn TabsValues.get().empty();\r\n\t}\r\n\r\n\tpublic String getCurrentRegion() {\r\n\t\tif (activeShip != null) {\r\n\t\t\treturn activeShip.getLocation().getRegion();\r\n\t\t}\r\n\t\treturn TabsValues.get().empty();\r\n\t}\r\n\r\n\tprivate String getName(MyAsset asset) {\r\n\t\tif (asset != null) {\r\n\t\t\treturn asset.getName();\r\n\t\t} else {\r\n\t\t\treturn TabsValues.get().none();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate double getDynamicPrice(MyAsset asset) {\r\n\t\tif (asset != null) {\r\n\t\t\treturn asset.getDynamicPrice();\r\n\t\t} else {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic boolean isGrandTotal() {\r\n\t\treturn TabsValues.get().grandTotal().equals(name);\r\n\t}\r\n\r\n\tpublic double getTotal() {\r\n\t\treturn getAssetsTotal() + getImplants() + getBalanceTotal() + getEscrows() + getSellOrders() + getManufacturing() + getContractCollateral() + getContractValue() + getSkillPointValue();\r\n\t}\r\n\r\n\tpublic void setAssetsTotal(double assets) {\r\n\t\tthis.assets = assets;\r\n\t}\r\n\r\n\tpublic void setImplants(double implants) {\r\n\t\tthis.implants = implants;\r\n\t}\r\n\r\n\tpublic void setAssetsContainersFixed(boolean assetsContainersFixed) {\r\n\t\tthis.assetsContainersFixed = assetsContainersFixed;\r\n\t}\r\n\r\n\tpublic void setSellOrders(double sellOrders) {\r\n\t\tthis.sellOrders = sellOrders;\r\n\t}\r\n\r\n\tpublic void setEscrows(double escrows) {\r\n\t\tthis.escrows = escrows;\r\n\t}\r\n\r\n\tpublic void setEscrowsToCover(double escrowsToCover) {\r\n\t\tthis.escrowsToCover = escrowsToCover;\r\n\t}\r\n\r\n\tpublic void setBalanceTotal(double balance) {\r\n\t\tthis.balance = balance;\r\n\t}\r\n\r\n\tpublic void setManufacturing(double manufacturing) {\r\n\t\tthis.manufacturing = manufacturing;\r\n\t}\r\n\r\n\tpublic void setContractCollateral(double contractCollateral) {\r\n\t\tthis.contractCollateral = contractCollateral;\r\n\t}\r\n\r\n\tpublic void setContractValue(double contractValue) {\r\n\t\tthis.contractValue = contractValue;\r\n\t}\r\n\r\n\tpublic void setSkillPoints(long skillPoints) {\r\n\t\tthis.skillPoints = skillPoints;\r\n\t\tskillPointValue = calcSkillPointValue(skillPoints, 0);\r\n\t}\r\n\r\n\tpublic void setSkillPointsMinimum(long minimum) {\r\n\t\tskillPointValue = calcSkillPointValue(skillPoints, minimum);\r\n\t}\r\n\r\n\tprivate void setBestAsset(MyAsset bestAsset) {\r\n\t\tif (this.bestAsset == null) { //First\r\n\t\t\tthis.bestAsset = bestAsset;\r\n\t\t} else if (bestAsset.getDynamicPrice() > this.bestAsset.getDynamicPrice()) { //Higher\r\n\t\t\tthis.bestAsset = bestAsset;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void setBestShip(MyAsset bestShip) {\r\n\t\tif (!bestShip.getItem().isShip()) {\r\n\t\t\treturn; //Not a ship\r\n\t\t}\r\n\t\tif (this.bestShip == null) { //First\r\n\t\t\tthis.bestShip = bestShip;\r\n\t\t} else if (bestShip.getDynamicPrice() > this.bestShip.getDynamicPrice()) { //Higher\r\n\t\t\tthis.bestShip = bestShip;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void setBestShipFitted(MyAsset bestShipFitted) {\r\n\t\tif (!bestShipFitted.getItem().isShip()) {\r\n\t\t\treturn; //Not a ship\r\n\t\t}\r\n\t\tif (this.bestShipFitted == null) { //First\r\n\t\t\tthis.bestShipFitted = bestShipFitted;\r\n\t\t} else if (getShipFittedValue(bestShipFitted) > getShipFittedValue(this.bestShipFitted)) { //Higher\r\n\t\t\tthis.bestShipFitted = bestShipFitted;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void setBestModule(MyAsset bestModule) {\r\n\t\tif (!bestModule.getItem().getCategory().equals(Item.CATEGORY_MODULE)) {\r\n\t\t\treturn; //Not a Module\r\n\t\t}\r\n\t\tif (this.bestModule == null) { //First\r\n\t\t\tthis.bestModule = bestModule;\r\n\t\t} else if (bestModule.getDynamicPrice() > this.bestModule.getDynamicPrice()) { //Higher\r\n\t\t\tthis.bestModule = bestModule;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void setCurrentShip(MyAsset asset) {\r\n\t\tif (!isGrandTotal() && this.activeShip == null) {\r\n\t\t\tthis.activeShip = asset.getOwner().getActiveShip();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate double getShipFittedValue(MyAsset patentAsset) {\r\n\t\tif (patentAsset.getCount() > 1) { //Stack of ships - only count the price of a single ship (not value of all the ships)\r\n\t\t\treturn patentAsset.getDynamicPrice();\r\n\t\t} else {\r\n\t\t\treturn getShipFittedValueInner(patentAsset);\r\n\t\t}\r\n\t}\r\n\tprivate double getShipFittedValueInner(MyAsset patentAsset) {\r\n\t\tdouble value = (patentAsset.getDynamicPrice() * patentAsset.getCount());\r\n\t\tfor (MyAsset asset : patentAsset.getAssets()) {\r\n\t\t\tvalue = value + getShipFittedValue(asset);\r\n\t\t}\r\n\t\treturn value;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hash = 7;\r\n\t\thash = 79 * hash + (this.compare != null ? this.compare.hashCode() : 0);\r\n\t\treturn hash;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (getClass() != obj.getClass()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfinal Value other = (Value) obj;\r\n\t\tif ((this.compare == null) ? (other.compare != null) : !this.compare.equals(other.compare)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int compareTo(Value o) {\r\n\t\treturn this.getName().compareToIgnoreCase(o.getName());\r\n\t}\r\n\r\n\tprivate static class ValueDateComparator implements Comparator<Value> {\r\n\r\n\t\t@Override\r\n\t\tpublic int compare(Value o1, Value o2) {\r\n\t\t\treturn Formatter.simpleDate(o1.date).compareTo(Formatter.simpleDate(o2.date));\r\n\t\t}\r\n\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/values/ValueRetroTab.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.values;\n\nimport java.awt.Color;\nimport java.awt.Font;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Collections;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport javax.swing.GroupLayout;\nimport javax.swing.JComboBox;\nimport javax.swing.JEditorPane;\nimport javax.swing.JLabel;\nimport javax.swing.JScrollPane;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\nimport net.nikr.eve.jeveasset.data.settings.Colors;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.StringComparators;\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabSecondary;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\nimport net.nikr.eve.jeveasset.i18n.TabsValues;\n\n\npublic class ValueRetroTab extends JMainTabSecondary {\n\n\tprivate enum ValueRetroAction {\n\t\tOWNER_SELECTED,\n\t\tCORP_SELECTED\n\t}\n\n\t//GUI\n\tprivate final JComboBox<String> jCharacters;\n\tprivate final JEditorPane jCharacter;\n\tprivate final JComboBox<String> jCorporations;\n\tprivate final JEditorPane jCorporation;\n\tprivate final JEditorPane jTotal;\n\n\t//Data\n\tprivate Map<String, Value> characters;\n\tprivate Map<String, Value> corporations;\n\tprivate Value total;\n\tprivate String backgroundHexColor;\n\tprivate String gridHexColor;\n\tprivate String valueHexColor;\n\n\tpublic static final String NAME = \"valueretro\"; //Not to be changed!\n\n\tpublic ValueRetroTab(final Program program) {\n\t\tsuper(program, NAME, TabsValues.get().oldTitle(), Images.TOOL_VALUES.getIcon(), true);\n\n\t\tListenerClass listener = new ListenerClass();\n\n\t\tbackgroundHexColor = Integer.toHexString(jPanel.getBackground().getRGB());\n\t\tbackgroundHexColor = backgroundHexColor.substring(2, backgroundHexColor.length());\n\n\t\tgridHexColor = Integer.toHexString(jPanel.getBackground().darker().getRGB());\n\t\tgridHexColor = gridHexColor.substring(2, gridHexColor.length());\n\n\t\tvalueHexColor = Integer.toHexString(Colors.TEXTFIELD_BACKGROUND.getColor().getRGB());\n\t\tvalueHexColor = valueHexColor.substring(2, valueHexColor.length());\n\n\t\tjCharacters = new JComboBox<>();\n\t\tjCharacters.setActionCommand(ValueRetroAction.OWNER_SELECTED.name());\n\t\tjCharacters.addActionListener(listener);\n\n\t\tjCharacter = new JEditorPane(\"text/html\", \"<html>\");\n\t\tjCharacter.setEditable(false);\n\t\tjCharacter.setOpaque(false);\n\t\tjCharacter.setBackground(Colors.COMPONENT_TRANSPARENT.getColor());\n\t\tjCharacter.setBorder(null);\n\t\tJScrollPane jCharacterScroll = new JScrollPane(jCharacter);\n\t\tjCharacterScroll.setBorder(null);\n\n\t\tjCorporations = new JComboBox<>();\n\t\tjCorporations.setActionCommand(ValueRetroAction.CORP_SELECTED.name());\n\t\tjCorporations.addActionListener(listener);\n\n\t\tjCorporation = new JEditorPane(\"text/html\", \"<html>\");\n\t\tjCorporation.setEditable(false);\n\t\tjCorporation.setOpaque(false);\n\t\tjCorporation.setBackground(Colors.COMPONENT_TRANSPARENT.getColor());\n\t\tjCorporation.setBorder(null);\n\t\tJScrollPane jCorporationScroll = new JScrollPane(jCorporation);\n\t\tjCorporationScroll.setBorder(null);\n\n\t\tJLabel jTotalLabel = new JLabel(\" \" + TabsValues.get().grandTotal());\n\t\tjTotalLabel.setBackground(new Color(34, 34, 34));\n\t\tjTotalLabel.setForeground(Color.WHITE);\n\t\tFont font = jTotalLabel.getFont();\n\t\tjTotalLabel.setFont(new Font(font.getName(), Font.BOLD, font.getSize() + 2));\n\t\tjTotalLabel.setOpaque(true);\n\n\t\tjTotal = new JEditorPane(\"text/html\", \"<html>\");\n\t\tjTotal.setEditable(false);\n\t\tjTotal.setOpaque(false);\n\t\tjTotal.setBackground(Colors.COMPONENT_TRANSPARENT.getColor());\n\t\tjTotal.setBorder(null);\n\t\tJScrollPane jTotalScroll = new JScrollPane(jTotal);\n\t\tjTotalScroll.setBorder(null);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER)\n\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t\t\t\t.addComponent(jTotalScroll, 10, 10, Short.MAX_VALUE)\n\t\t\t\t\t\t\t.addComponent(jTotalLabel, 10, 10, Short.MAX_VALUE)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t\t\t\t.addComponent(jCharacterScroll, 10, 10, Short.MAX_VALUE)\n\t\t\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t\t\t.addGap(3)\n\t\t\t\t\t\t\t\t.addComponent(jCharacters, 10, 10, Short.MAX_VALUE)\n\t\t\t\t\t\t\t\t.addGap(3)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)\n\t\t\t\t\t\t\t.addComponent(jCorporationScroll, 10, 10, Short.MAX_VALUE)\n\t\t\t\t\t\t\t.addGroup(layout.createSequentialGroup()\n\t\t\t\t\t\t\t\t.addGap(3)\n\t\t\t\t\t\t\t\t.addComponent(jCorporations, 10, 10, Short.MAX_VALUE)\n\t\t\t\t\t\t\t\t.addGap(3)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)\n\t\t\t\t\t.addComponent(jTotalLabel, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jCharacters, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t\t.addComponent(jCorporations, Program.getButtonsHeight(), Program.getButtonsHeight(), Program.getButtonsHeight())\n\t\t\t\t)\n\t\t\t\t.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)\n\t\t\t\t\t.addComponent(jTotalScroll, 0, 0, Short.MAX_VALUE)\n\t\t\t\t\t.addComponent(jCharacterScroll, 0, 0, Short.MAX_VALUE)\n\t\t\t\t\t.addComponent(jCorporationScroll, 0, 0, Short.MAX_VALUE)\n\t\t\t\t)\n\t\t);\n\t}\n\n\t@Override\n\tpublic void updateData() {\n\t\tcalcTotal();\n\t\tjCharacters.removeAllItems();\n\t\tList<String> characterNames = new ArrayList<>(characters.keySet());\n\t\tCollections.sort(characterNames, StringComparators.CASE_INSENSITIVE);\n\t\tfor (String owner : characterNames) {\n\t\t\tjCharacters.addItem(owner);\n\t\t}\n\t\tif (jCharacters.getModel().getSize() > 0) {\n\t\t\tjCharacters.setEnabled(true);\n\t\t} else {\n\t\t\tjCharacters.addItem(TabsValues.get().oldNoCharacter());\n\t\t\tjCharacters.setEnabled(false);\n\t\t}\n\t\tjCharacters.setSelectedIndex(0);\n\n\t\tjCorporations.removeAllItems();\n\t\tList<String> corporationNames = new ArrayList<>(corporations.keySet());\n\t\tCollections.sort(corporationNames, StringComparators.CASE_INSENSITIVE);\n\t\tfor (String corp : corporationNames) {\n\t\t\tjCorporations.addItem(corp);\n\t\t}\n\t\tif (jCorporations.getModel().getSize() > 0) {\n\t\t\tjCorporations.setEnabled(true);\n\t\t} else {\n\t\t\tjCorporations.addItem(TabsValues.get().oldNoCorporation());\n\t\t\tjCorporations.setEnabled(false);\n\t\t}\n\t\tjCorporations.setSelectedIndex(0);\n\n\t\tsetData(jTotal, total);\n\t}\n\n\t@Override\n\tpublic void clearData() { }\n\n\t@Override\n\tpublic void updateCache() {}\n\n\t@Override\n\tpublic Collection<LocationType> getLocations() {\n\t\treturn new ArrayList<>(); //No Location\n\t}\n\n\tprivate boolean calcTotal() {\n\t\tDate date = Settings.getNow();\n\t\tMap<String, Value> values = DataSetCreator.createDataSet(program.getProfileData(), Settings.getNow());\n\t\tcharacters = new HashMap<>();\n\t\tcorporations = new HashMap<>();\n\t\ttotal = values.get(TabsValues.get().grandTotal());\n\t\tfor (OwnerType owner : program.getOwnerTypes()) {\n\t\t\tValue value = DataSetCreator.getValue(values, owner.getOwnerName(), date);\n\t\t\tif (owner.isCorporation()) {\n\t\t\t\tcorporations.put(value.getName(), value);\n\t\t\t} else {\n\t\t\t\tcharacters.put(value.getName(), value);\n\t\t\t\tif (owner.getCorporationName() != null) {\n\t\t\t\t\tValue corpValue = values.get(owner.getCorporationName());\n\t\t\t\t\tif (corpValue != null) {\n\t\t\t\t\t\tcorporations.put(corpValue.getName(), corpValue);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn !EventListManager.isEmpty(program.getProfileData().getAssetsEventList());\n\t}\n\n\tprivate void setData(JEditorPane jEditorPane, Value value) {\n\t\tif (value == null) {\n\t\t\tvalue = new Value(\"\", Settings.getNow()); //Create empty\n\t\t}\n\t\tOutput output = new Output();\n\n\t\toutput.addHeading(TabsValues.get().columnTotal());\n\t\toutput.addValue(value.getTotal());\n\t\toutput.addNone();\n\n\t\toutput.addHeading(TabsValues.get().columnWalletBalance());\n\t\toutput.addValue(value.getBalanceTotal());\n\t\toutput.addNone();\n\n\t\toutput.addHeading(TabsValues.get().columnAssets());\n\t\toutput.addValue(value.getAssetsTotal());\n\t\toutput.addNone();\n\n\t\toutput.addHeading(TabsValues.get().columnSellOrders());\n\t\toutput.addValue(value.getSellOrders());\n\t\toutput.addNone();\n\n\t\toutput.addHeading(TabsValues.get().columnEscrowsToCover());\n\t\toutput.addValue(value.getEscrows(), value.getEscrowsToCover());\n\t\toutput.addNone();\n\n\t\toutput.addHeading(TabsValues.get().columnBestAsset());\n\t\toutput.addValue(value.getBestAssetName(), value.getBestAssetValue());\n\t\toutput.addNone(2);\n\n\t\toutput.addHeading(TabsValues.get().columnBestShip());\n\t\toutput.addValue(value.getBestShipName(), value.getBestShipValue());\n\t\toutput.addNone(2);\n\n\t\t/*\n\t\t//FIXME - No room for Best Ship Fitted\n\t\toutput.addHeading(TabsValues.get().columnBestShipFitted());\n\t\toutput.addValue(value.getBestShipFittedName(), value.getBestShipFittedValue());\n\t\toutput.addNone(2);\n\t\t*/\n\n\t\toutput.addHeading(TabsValues.get().columnBestModule());\n\t\toutput.addValue(value.getBestModuleName(), value.getBestModuleValue());\n\t\toutput.addNone(2);\n\n\t\tjEditorPane.setText(output.getOutput());\n\t\tjEditorPane.setCaretPosition(0);\n\t}\n\n\tprivate class ListenerClass implements ActionListener {\n\t\t@Override\n\t\tpublic void actionPerformed(final ActionEvent e) {\n\t\t\tif (ValueRetroAction.OWNER_SELECTED.name().equals(e.getActionCommand())) {\n\t\t\t\tString s = (String) jCharacters.getSelectedItem();\n\t\t\t\tsetData(jCharacter, characters.get(s));\n\n\t\t\t}\n\t\t\tif (ValueRetroAction.CORP_SELECTED.name().equals(e.getActionCommand())) {\n\t\t\t\t//String output = \"\";\n\t\t\t\tString s = (String) jCorporations.getSelectedItem();\n\t\t\t\tsetData(jCorporation, corporations.get(s));\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate class Output {\n\t\tprivate String output;\n\t\tprivate String moduleOutput;\n\n\t\tpublic Output() {\n\t\t\toutput = \"<html>\"\n\t\t\t\t+ \"<div>\"\n\t\t\t\t+ \"<table cellspacing=\\\"1\\\" style=\\\"padding: 0px; background: #\" + gridHexColor + \"; width: 100%; font-family: Arial, Helvetica, sans-serif; font-size: 9px;\\\">\";\n\t\t\tmoduleOutput = \"\";\n\t\t}\n\n\n\t\tpublic void addHeading(final String heading) {\n\t\t\toutput = output + \"<tr><td style=\\\"background: #\" + gridHexColor + \"; color: #ffffff; font-size: 11px; font-weight: bold;\\\">\" + heading + \"</td></tr>\";\n\t\t\tmoduleOutput = \"\";\n\t\t}\n\n\t\tpublic void addValue(final double value1, final double value2) {\n\t\t\tif (value1 != 0 && value2 != 0) {\n\t\t\t\taddValue(Formatter.iskFormat(value1), \" (\" + Formatter.iskFormat(value2) + \")\");\n\t\t\t} else if (value1 != 0) {\n\t\t\t\taddValue(Formatter.iskFormat(value1), null);\n\t\t\t}\n\t\t}\n\n\t\tpublic void addValue(final double value) {\n\t\t\tif (value != 0) {\n\t\t\t\taddValue(Formatter.iskFormat(value), null);\n\t\t\t}\n\t\t}\n\n\t\tpublic void addValue(final String value1, final double value2) {\n\t\t\tif (value1 != null && value2 != 0) {\n\t\t\t\taddValue(value1, \"<br>\" + Formatter.iskFormat(value2));\n\t\t\t}\n\t\t}\n\n\t\tprivate void addValue(final String value1, final String value2) {\n\t\t\tif (value1 != null || value2 != null) {\n\t\t\t\tmoduleOutput = moduleOutput + \"<tr><td style=\\\"background: #\" + valueHexColor + \"; text-align: right;\\\">\";\n\t\t\t}\n\t\t\tif (value1 != null) {\n\t\t\t\tmoduleOutput = moduleOutput + value1;\n\t\t\t}\n\t\t\tif (value2 != null) {\n\t\t\t\tmoduleOutput = moduleOutput + value2;\n\t\t\t}\n\t\t\tif (value1 != null || value2 != null) {\n\t\t\t\tmoduleOutput = moduleOutput + \"</td></tr>\";\n\t\t\t}\n\t\t}\n\n\t\tpublic void addNone(final int count) {\n\t\t\tif (moduleOutput.isEmpty()) {\n\t\t\t\tString temp = \"\";\n\t\t\t\tfor (int i = 1; i < count; i++) {\n\t\t\t\t\ttemp = temp + \"<br/>\";\n\t\t\t\t}\n\t\t\t\taddValue(\"<i>\" + TabsValues.get().none() + \"</i><br/>\", temp);\n\t\t\t}\n\t\t\toutput = output + moduleOutput;\n\t\t}\n\n\t\tpublic void addNone() {\n\t\t\taddNone(1);\n\t\t}\n\n\t\tpublic String getOutput() {\n\t\t\treturn output + \"</table></div>\";\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/values/ValueTableFormat.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.values;\r\n\r\nimport java.util.Comparator;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.i18n.TabsValues;\r\n\r\n\r\npublic enum ValueTableFormat implements EnumTableColumn<Value> {\r\n\tNAME(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnOwner();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getName();\r\n\t\t}\r\n\t},\r\n\tTOTAL(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnTotal();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getTotal();\r\n\t\t}\r\n\t},\r\n\tBALANCE(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnWalletBalance();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getBalanceTotal();\r\n\t\t}\r\n\t},\r\n\tDIVISION_1(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnWalletDivision1();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getBalanceFilter().get(\"1\");\r\n\t\t}\r\n\t},\r\n\tDIVISION_2(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnWalletDivision2();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getBalanceFilter().get(\"2\");\r\n\t\t}\r\n\t},\r\n\tDIVISION_3(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnWalletDivision3();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getBalanceFilter().get(\"3\");\r\n\t\t}\r\n\t},\r\n\tDIVISION_4(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnWalletDivision4();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getBalanceFilter().get(\"4\");\r\n\t\t}\r\n\t},\r\n\tDIVISION_5(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnWalletDivision5();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getBalanceFilter().get(\"5\");\r\n\t\t}\r\n\t},\r\n\tDIVISION_6(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnWalletDivision6();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getBalanceFilter().get(\"6\");\r\n\t\t}\r\n\t},\r\n\tDIVISION_7(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnWalletDivision7();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getBalanceFilter().get(\"7\");\r\n\t\t}\r\n\t},\r\n\tASSETS(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnAssets();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getAssetsTotal();\r\n\t\t}\r\n\t},\r\n\tSELL_ORDERS(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnSellOrders();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getSellOrders();\r\n\t\t}\r\n\t},\r\n\tESCROWS(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnEscrows();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getEscrows();\r\n\t\t}\r\n\t},\r\n\tESCROWS_TO_COVER(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnEscrowsToCover();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getEscrowsToCover();\r\n\t\t}\r\n\t},\r\n\tMANUFACTURING(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnManufacturing();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getManufacturing();\r\n\t\t}\r\n\t},\r\n\tCONTRACT_COLLATERAL(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnContractCollateral();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getContractCollateral();\r\n\t\t}\r\n\t},\r\n\tCONTRACT_VALUE(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnContractValue();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getContractValue();\r\n\t\t}\r\n\t},\r\n\tSKILL_POINT_VALUE(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnSkillPointValue();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getSkillPointValue();\r\n\t\t}\r\n\t},\r\n\tBEST_ASSET_NAME(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnBestAsset();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getBestAssetName();\r\n\t\t}\r\n\t},\r\n\tBEST_ASSET_VALUE(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnBestAsset();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getBestAssetValue();\r\n\t\t}\r\n\t},\r\n\tBEST_SHIP_FITTED_NAME(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnBestShipFitted();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getBestShipFittedName();\r\n\t\t}\r\n\t},\r\n\tBEST_SHIP_FITTED_VALUE(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnBestShipFitted();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getBestShipFittedValue();\r\n\t\t}\r\n\t},\r\n\tBEST_SHIP_NAME(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnBestShip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getBestShipName();\r\n\t\t}\r\n\t},\r\n\tBEST_SHIP_VALUE(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnBestShip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getBestShipValue();\r\n\t\t}\r\n\t},\r\n\tBEST_MODULE_NAME(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnBestModule();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getBestModuleName();\r\n\t\t}\r\n\t},\r\n\tBEST_MODULE_VALUE(Double.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnBestModule();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getBestModuleValue();\r\n\t\t}\r\n\t},\r\n\tCURRENT_SHIP(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnCurrentShip();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getActiveShip();\r\n\t\t}\r\n\t},\r\n\tCURRENT_STATION(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnCurrentStation();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getCurrentStation();\r\n\t\t}\r\n\t},\r\n\tCURRENT_SYSTEM(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnCurrentSystem();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getCurrentSystem();\r\n\t\t}\r\n\t},\r\n\tCURRENT_CONSTELLATION(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnCurrentConstellation();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getCurrentConstellation();\r\n\t\t}\r\n\t},\r\n\tCURRENT_REGION(String.class) {\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn TabsValues.get().columnCurrentRegion();\r\n\t\t}\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Value from) {\r\n\t\t\treturn from.getCurrentRegion();\r\n\t\t}\r\n\t};\r\n\r\n\tprivate final Class<?> type;\r\n\tprivate final Comparator<?> comparator;\r\n\r\n\tprivate ValueTableFormat(final Class<?> type) {\r\n\t\tthis.type = type;\r\n\t\tthis.comparator = EnumTableColumn.getComparator(type);\r\n\t}\r\n\t@Override\r\n\tpublic Class<?> getType() {\r\n\t\treturn type;\r\n\t}\r\n\t@Override\r\n\tpublic Comparator<?> getComparator() {\r\n\t\treturn comparator;\r\n\t}\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn getColumnName();\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/gui/tabs/values/ValueTableTab.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.values;\n\nimport ca.odell.glazedlists.EventList;\nimport ca.odell.glazedlists.FilterList;\nimport ca.odell.glazedlists.ListSelection;\nimport ca.odell.glazedlists.SortedList;\nimport ca.odell.glazedlists.swing.DefaultEventSelectionModel;\nimport ca.odell.glazedlists.swing.DefaultEventTableModel;\nimport ca.odell.glazedlists.swing.TableComparatorChooser;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Comparator;\nimport javax.swing.GroupLayout;\nimport javax.swing.JButton;\nimport javax.swing.JComponent;\nimport javax.swing.JMenu;\nimport javax.swing.JPopupMenu;\nimport javax.swing.JScrollPane;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\nimport net.nikr.eve.jeveasset.gui.images.Images;\nimport net.nikr.eve.jeveasset.gui.shared.components.JFixedToolBar;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTabSecondary;\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterControl;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuColumns;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuData;\nimport net.nikr.eve.jeveasset.gui.shared.menu.MenuManager.TableMenu;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventListManager;\nimport net.nikr.eve.jeveasset.gui.shared.table.EventModels;\nimport net.nikr.eve.jeveasset.gui.shared.table.JAutoColumnTable;\nimport net.nikr.eve.jeveasset.gui.shared.table.PaddingTableCellRenderer;\nimport net.nikr.eve.jeveasset.gui.shared.table.TableFormatFactory;\nimport net.nikr.eve.jeveasset.gui.tabs.tracker.TrackerSkillPointFilter;\nimport net.nikr.eve.jeveasset.i18n.TabsValues;\n\n\npublic class ValueTableTab extends JMainTabSecondary {\n\n\t//GUI\n\tprivate final JAutoColumnTable jTable;\n\tprivate final JButton jSkillPointsFilters;\n\n\t//Table\n\tprivate final ValueFilterControl filterControl;\n\tprivate final DefaultEventTableModel<Value> tableModel;\n\tprivate final EventList<Value> eventList;\n\tprivate final FilterList<Value> filterList;\n\tprivate final EnumTableFormatAdaptor<ValueTableFormat, Value> tableFormat;\n\tprivate final DefaultEventSelectionModel<Value> selectionModel;\n\n\tpublic static final String NAME = \"value\"; //Not to be changed!\n\n\tprivate final IskData iskData;\n\n\tpublic ValueTableTab(final Program program) {\n\t\tsuper(program, NAME, TabsValues.get().title(), Images.TOOL_VALUE_TABLE.getIcon(), true);\n\n\t\tiskData = new IskData(program);\n\n\t\tJFixedToolBar jToolBar = new JFixedToolBar();\n\n\t\tjSkillPointsFilters = new JButton(TabsValues.get().skillPointFilters(), Images.LOC_INCLUDE.getIcon());\n\t\tjSkillPointsFilters.addActionListener(new ActionListener() {\n\t\t\t@Override\n\t\t\tpublic void actionPerformed(ActionEvent e) {\n\t\t\t\tprogram.getTrackerTab(true).showSkillPointsFilter();\n\t\t\t}\n\t\t});\n\t\tjToolBar.addButton(jSkillPointsFilters);\n\n\t\t//Table Format\n\t\ttableFormat = TableFormatFactory.valueTableFormat();\n\t\t//Backend\n\t\teventList = EventListManager.create();\n\t\t//Sorting (per column)\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<Value> columnSortedList = new SortedList<>(eventList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t//Sorting Total\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tSortedList<Value> totalSortedList = new SortedList<>(columnSortedList, new TotalComparator());\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t//Filter\n\t\teventList.getReadWriteLock().readLock().lock();\n\t\tfilterList = new FilterList<>(totalSortedList);\n\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t//Table Model\n\t\ttableModel = EventModels.createTableModel(filterList, tableFormat);\n\t\t//Table\n\t\tjTable = new JValueTable(program, tableModel);\n\t\tjTable.setCellSelectionEnabled(true);\n\t\tjTable.setRowSelectionAllowed(true);\n\t\tjTable.setColumnSelectionAllowed(true);\n\t\tPaddingTableCellRenderer.install(jTable, 3);\n\t\t//Sorting\n\t\tTableComparatorChooser<Value> comparatorChooser = TableComparatorChooser.install(jTable, columnSortedList, TableComparatorChooser.MULTIPLE_COLUMN_MOUSE, tableFormat);\n\t\t//Selection Model\n\t\tselectionModel = EventModels.createSelectionModel(filterList);\n\t\tselectionModel.setSelectionMode(ListSelection.MULTIPLE_INTERVAL_SELECTION_DEFENSIVE);\n\t\tjTable.setSelectionModel(selectionModel);\n\t\t//Listeners\n\t\tinstallTable(jTable);\n\t\t//Scroll\n\t\tJScrollPane jTableScroll = new JScrollPane(jTable);\n\t\t//Table Filter\n\t\tfilterControl = new ValueFilterControl(totalSortedList);\n\t\t//Menu\n\t\tinstallTableTool(new ValueTableMenu(), tableFormat, comparatorChooser, tableModel, jTable, filterControl, Value.class);\n\n\t\tlayout.setHorizontalGroup(\n\t\t\tlayout.createParallelGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jToolBar, jToolBar.getMinimumSize().width, GroupLayout.PREFERRED_SIZE, Integer.MAX_VALUE)\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t\tlayout.setVerticalGroup(\n\t\t\tlayout.createSequentialGroup()\n\t\t\t\t.addComponent(filterControl.getPanel())\n\t\t\t\t.addComponent(jToolBar, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)\n\t\t\t\t.addComponent(jTableScroll, 0, 0, Short.MAX_VALUE)\n\t\t);\n\t}\n\n\t@Override\n\tpublic void updateData() {\n\t\tboolean isAll = true;\n\t\tfor (TrackerSkillPointFilter filter : Settings.get().getTrackerSettings().getSkillPointFilters().values()) {\n\t\t\tif (!filter.isEmpty()) {\n\t\t\t\tisAll = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (isAll) {\n\t\t\tjSkillPointsFilters.setIcon(Images.LOC_INCLUDE.getIcon());\n\t\t} else {\n\t\t\tjSkillPointsFilters.setIcon(Images.EDIT_EDIT_WHITE.getIcon());\n\t\t}\n\t\t//Update Data\n\t\tiskData.updateData(eventList);\n\t}\n\n\t@Override\n\tpublic void clearData() {\n\t\ttry {\n\t\t\teventList.getReadWriteLock().writeLock().lock();\n\t\t\teventList.clear();\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().writeLock().unlock();\n\t\t}\n\t\tfilterControl.clearCache();\n\t}\n\n\t@Override\n\tpublic void updateCache() {\n\t\tfilterControl.createCache();\n\t}\n\n\t@Override\n\tpublic Collection<LocationType> getLocations() {\n\t\ttry {\n\t\t\teventList.getReadWriteLock().readLock().lock();\n\t\t\treturn new ArrayList<>(eventList);\n\t\t} finally {\n\t\t\teventList.getReadWriteLock().readLock().unlock();\n\t\t}\n\t}\n\n\tprivate class ValueTableMenu implements TableMenu<Value> {\n\t\t@Override\n\t\tpublic MenuData<Value> getMenuData() {\n\t\t\treturn new MenuData<>(selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getFilterMenu() {\n\t\t\treturn filterControl.getMenu(jTable, selectionModel.getSelected());\n\t\t}\n\n\t\t@Override\n\t\tpublic JMenu getColumnMenu() {\n\t\t\treturn new JMenuColumns<>(program, tableFormat, tableModel, jTable, NAME);\n\t\t}\n\n\t\t@Override\n\t\tpublic void addInfoMenu(JPopupMenu jPopupMenu) { }\n\n\t\t@Override\n\t\tpublic void addToolMenu(JComponent jComponent) { }\n\t}\n\n\tprivate class ValueFilterControl extends FilterControl<Value> {\n\n\t\tpublic ValueFilterControl(EventList<Value> exportEventList) {\n\t\t\tsuper(program.getMainWindow().getFrame(),\n\t\t\t\t\tNAME,\n\t\t\t\t\ttableFormat,\n\t\t\t\t\teventList,\n\t\t\t\t\texportEventList,\n\t\t\t\t\tfilterList\n\t\t\t\t\t);\n\t\t}\n\n\t\t@Override\n\t\tpublic void saveSettings(final String msg) {\n\t\t\tprogram.saveSettings(\"ISK Table: \" + msg); //Save ISK Filters and Export Settings\n\t\t}\n\t}\n\n\tpublic static class TotalComparator implements Comparator<Value> {\n\t\t@Override\n\t\tpublic int compare(final Value o1, final Value o2) {\n\t\t\tif (o1.isGrandTotal() && o2.isGrandTotal()) {\n\t\t\t\treturn 0; //Equal (both StockpileTotal)\n\t\t\t} else if (o1.isGrandTotal()) {\n\t\t\t\treturn 1; //After\n\t\t\t} else if (o2.isGrandTotal()) {\n\t\t\t\treturn -1; //Before\n\t\t\t} else {\n\t\t\t\treturn 0; //Equal (not StockpileTotal)\n\t\t\t}\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/BundleServiceFactory.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.i18n;\r\n\r\nimport java.util.Locale;\r\nimport uk.me.candle.translations.conf.DefaultBundleConfiguration;\r\nimport uk.me.candle.translations.service.BasicBundleService;\r\nimport uk.me.candle.translations.service.BundleService;\r\n\r\n\r\npublic class BundleServiceFactory {\r\n\r\n\tprivate static BundleService bundleService;\r\n\r\n\tpublic static BundleService getBundleService() {\r\n\t\t//XXX - Workaround for default language\r\n\t\tif (bundleService == null) {\r\n\t\t\tbundleService = new BasicBundleService(new DefaultBundleConfiguration(), Locale.ENGLISH);\r\n\t\t}\r\n\t\treturn bundleService;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/DataColors.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.i18n;\r\n\r\nimport java.util.Locale;\r\nimport uk.me.candle.translations.Bundle;\r\n\r\n\r\npublic abstract class DataColors extends Bundle {\r\n\r\n\tpublic static DataColors get() {\r\n\t\treturn BundleServiceFactory.getBundleService().get(DataColors.class);\r\n\t}\r\n\r\n\tpublic DataColors(final Locale locale) {\r\n\t\tsuper(locale);\r\n\t}\r\n\r\n\tpublic abstract String assetsNew();\r\n\tpublic abstract String assetsReprocessingEqual();\r\n\tpublic abstract String assetsReprocessingReproces();\r\n\tpublic abstract String assetsReprocessingSell();\r\n\tpublic abstract String assetsReprocess();\r\n\tpublic abstract String customPrice();\r\n\tpublic abstract String customAssetName();\r\n\tpublic abstract String customUserLocation();\r\n\tpublic abstract String contractsCourier();\r\n\tpublic abstract String contractsIncluded();\r\n\tpublic abstract String contractsExcluded();\r\n\tpublic abstract String extractionsDays();\r\n\tpublic abstract String extractionsWeek();\r\n\tpublic abstract String extractionsWeeks();\r\n\tpublic abstract String overviewGroupedLocations();\r\n\tpublic abstract String stockpileTableBelowThreshold();\r\n\tpublic abstract String stockpileIconBelowThreshold();\r\n\tpublic abstract String stockpileTableBelowThreshold2nd();\r\n\tpublic abstract String stockpileIconBelowThreshold2nd();\r\n\tpublic abstract String stockpileTableOverThreshold();\r\n\tpublic abstract String stockpileIconOverThreshold();\r\n\tpublic abstract String marketOrdersOutbidNotBest();\r\n\tpublic abstract String marketOrdersOutbidNotBestOwned();\r\n\tpublic abstract String marketOrdersOutbidBest();\r\n\tpublic abstract String marketOrdersOutbidUnknown();\r\n\tpublic abstract String marketOrdersExpired();\r\n\tpublic abstract String marketOrdersNearExpired();\r\n\tpublic abstract String marketOrdersNearFilled();\r\n\tpublic abstract String marketOrdersNew();\r\n\tpublic abstract String industryJobsDelivered();\r\n\tpublic abstract String industryJobsDone();\r\n\tpublic abstract String industryJobsManufacturing();\r\n\tpublic abstract String industryJobsResearchingTechnology();\r\n\tpublic abstract String industryJobsResearchingTimeProductivity();\r\n\tpublic abstract String industryJobsResearchingMeterialProductivity();\r\n\tpublic abstract String industryJobsCopying();\r\n\tpublic abstract String industryJobsDuplicating();\r\n\tpublic abstract String industryJobsReverseEngineering();\r\n\tpublic abstract String industryJobsReverseInvention();\r\n\tpublic abstract String industryJobsReactions();\r\n\tpublic abstract String slotsFree();\r\n\tpublic abstract String slotsDone();\r\n\tpublic abstract String slotsFull();\r\n\tpublic abstract String journalNew();\r\n\tpublic abstract String transactionsBought();\r\n\tpublic abstract String transactionsSold();\r\n\tpublic abstract String transactionsNew();\r\n\tpublic abstract String npcStandingNegative();\r\n\tpublic abstract String npcStandingPositive();\r\n\tpublic abstract String npcStandingNegativeMiddle();\r\n\tpublic abstract String npcStandingPositiveMiddle();\r\n\tpublic abstract String globalBPC();\r\n\tpublic abstract String globalBPO();\r\n\tpublic abstract String globalValueNegative();\r\n\tpublic abstract String globalValuePositive();\r\n\tpublic abstract String globalEntryInvalid();\r\n\tpublic abstract String globalEntryWarning();\r\n\tpublic abstract String globalEntryValid();\r\n\tpublic abstract String globalGrandTotal();\r\n\tpublic abstract String globalSelectedRowHighlighting();\r\n\tpublic abstract String filterOrGroup1();\r\n\tpublic abstract String filterOrGroup2();\r\n\tpublic abstract String filterOrGroup3();\r\n\tpublic abstract String filterOrGroup4();\r\n\tpublic abstract String filterOrGroup5();\r\n\tpublic abstract String filterOrGroup6();\r\n\tpublic abstract String filterOrGroup7();\r\n\tpublic abstract String reprocessedSell();\r\n\tpublic abstract String reprocessedReprocess();\r\n\tpublic abstract String reprocessedEqual();\r\n\tpublic abstract String groupAssets();\r\n\tpublic abstract String groupCustom();\r\n\tpublic abstract String groupContracts();\r\n\tpublic abstract String groupExtractions();\r\n\tpublic abstract String groupOverview();\r\n\tpublic abstract String groupMarketOrders();\r\n\tpublic abstract String groupIndustryJobs();\r\n\tpublic abstract String groupSlots();\r\n\tpublic abstract String groupJournal();\r\n\tpublic abstract String groupTransactions();\r\n\tpublic abstract String groupNpcStanding();\r\n\tpublic abstract String groupGlobal();\r\n\tpublic abstract String groupFilters();\r\n\tpublic abstract String groupReprocessed();\r\n\tpublic abstract String groupStockpile();\r\n\tpublic abstract String colorThemeDark();\r\n\tpublic abstract String colorThemeDefault();\r\n\tpublic abstract String colorThemeStrong();\r\n\tpublic abstract String colorThemeColorblind();\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/DataModelAsset.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\n/**\n *\n * @author Candle\n */\npublic abstract class DataModelAsset extends Bundle {\n\n\tpublic static DataModelAsset get() {\n\t\treturn BundleServiceFactory.getBundleService().get(DataModelAsset.class);\n\t}\n\n\tpublic DataModelAsset(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String unpackaged();\n\tpublic abstract String packaged();\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/DataModelIndustryJob.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\n/**\n *\n * @author Candle\n */\npublic abstract class DataModelIndustryJob extends Bundle {\n\n\tpublic static DataModelIndustryJob get() {\n\t\treturn BundleServiceFactory.getBundleService().get(DataModelIndustryJob.class);\n\t}\n\n\tpublic DataModelIndustryJob(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String statusPaused();\n\tpublic abstract String statusActive();\n\tpublic abstract String statusDone();\n\tpublic abstract String statusReverted();\n\tpublic abstract String statusCancelled();\n\tpublic abstract String statusDelivered();\n\tpublic abstract String statusArchived();\n\tpublic abstract String statusUnknown();\n\tpublic abstract String activityAll();\n\tpublic abstract String activityNone();\n\tpublic abstract String activityManufacturing();\n\tpublic abstract String activityResearchingTechnology();\n\tpublic abstract String activityResearchingTimeProductivity();\n\tpublic abstract String activityResearchingMeterialProductivity();\n\tpublic abstract String activityCopying();\n\tpublic abstract String activityDuplicating();\n\tpublic abstract String activityReverseEngineering();\n\tpublic abstract String activityReverseInvention();\n\tpublic abstract String activityReactions();\n\tpublic abstract String activityUnknown();\n\tpublic abstract String descriptionCopying(String blueprintName, int copyCount, int copyRuns);\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/DataModelPriceDataSettings.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\n/**\n *\n * @author Candle\n */\npublic abstract class DataModelPriceDataSettings extends Bundle {\n\n\tpublic static DataModelPriceDataSettings get() {\n\t\treturn BundleServiceFactory.getBundleService().get(DataModelPriceDataSettings.class);\n\t}\n\n\tpublic DataModelPriceDataSettings(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String sourceFuzzwork();\n\tpublic abstract String sourceEveTycoon();\n\tpublic abstract String sourceJanice();\n\tpublic abstract String priceSellMax();\n\tpublic abstract String priceSellAvg();\n\tpublic abstract String priceSellMedian();\n\tpublic abstract String priceSellMin();\n\tpublic abstract String priceSellPercentile();\n\tpublic abstract String priceMidpoint();\n\tpublic abstract String priceBuyMax();\n\tpublic abstract String priceBuyAvg();\n\tpublic abstract String priceBuyMedian();\n\tpublic abstract String priceBuyPercentile();\n\tpublic abstract String priceBuyMin();\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/DialoguesAbout.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\n/**\n *\n * @author Andrew\n */\npublic abstract class DialoguesAbout extends Bundle {\n\n\tpublic static DialoguesAbout get() {\n\t\treturn BundleServiceFactory.getBundleService().get(DialoguesAbout.class);\n\t}\n\n\tpublic DialoguesAbout(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String about();\n\tpublic abstract String close();\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/DialoguesAccount.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\n/**\n *\n * @author Candle\n */\npublic abstract class DialoguesAccount extends Bundle {\n\n\tpublic static DialoguesAccount get() {\n\t\treturn BundleServiceFactory.getBundleService().get(DialoguesAccount.class);\n\t}\n\n\tpublic DialoguesAccount(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String dialogueNameAccountExport();\n\tpublic abstract String dialogueNameAccountImport();\n\n\tpublic abstract String previousArrow();\n\tpublic abstract String nextArrow();\n\tpublic abstract String cancel();\n\tpublic abstract String ok();\n\n\tpublic abstract String failApiError();\n\tpublic abstract String failApiErrorText(String s);\n\tpublic abstract String failNotEnoughPrivileges();\n\tpublic abstract String failNotEnoughPrivilegesText();\n\tpublic abstract String failNotValid();\n\tpublic abstract String failNotValidText();\n\tpublic abstract String failWrongEntry();\n\tpublic abstract String failWrongEntryText();\n\tpublic abstract String okUpdate();\n\tpublic abstract String okUpdateLimitedText();\n\tpublic abstract String okUpdateText();\n\tpublic abstract String okLimited();\n\tpublic abstract String okLimitedExportText();\n\tpublic abstract String okLimitedText();\n\tpublic abstract String okValid();\n\tpublic abstract String okValidText();\n\n\tpublic abstract String authCode();\n\tpublic abstract String authorize();\n\tpublic abstract String accountType();\n\tpublic abstract String accessKey();\n\tpublic abstract String esiHelpText();\n\tpublic abstract String authCodeHelpText();\n\tpublic abstract String browseHelpText();\n\tpublic abstract String validatingMessage();\n\tpublic abstract String scopes();\n\tpublic abstract String corporation();\n\tpublic abstract String character();\n\tpublic abstract String workaroundLabel();\n\tpublic abstract String workaroundCheckbox();\n\tpublic abstract String scopeAssets();\n\tpublic abstract String scopeClones();\n\tpublic abstract String scopeImplants();\n\tpublic abstract String scopeWallet();\n\tpublic abstract String scopeBlueprints();\n\tpublic abstract String scopeIndustryJobs();\n\tpublic abstract String scopeMarketOrders();\n\tpublic abstract String scopeMarketStructures();\n\tpublic abstract String scopeContracts();\n\tpublic abstract String scopeRoles();\n\tpublic abstract String scopeStructures();\n\tpublic abstract String scopeShipType();\n\tpublic abstract String scopeShipLocation();\n\tpublic abstract String scopeOpenWindows();\n\tpublic abstract String scopePlanetaryInteraction();\n\tpublic abstract String scopeAutopilot();\n\tpublic abstract String scopeDivisions();\n\tpublic abstract String scopeSkills();\n\tpublic abstract String scopeMining();\n\tpublic abstract String scopeLoyaltyPoints();\n\tpublic abstract String scopeNpcStanding();\n\n\tpublic abstract String dialogueNameAccountManagement();\n\n\tpublic abstract String accountExpired();\n\tpublic abstract String accountInvalid();\n\tpublic abstract String add();\n\tpublic abstract String revalidate();\n\tpublic abstract String revalidateMsgAll(int total);\n\tpublic abstract String revalidateMsgNone(int total);\n\tpublic abstract String revalidateMsgSome(int total, int done, int failed);\n\tpublic abstract String collapse();\n\tpublic abstract String expand();\n\tpublic abstract String showAssets();\n\tpublic abstract String checkAll();\n\tpublic abstract String uncheckAll();\n\tpublic abstract String checkSelected();\n\tpublic abstract String uncheckSelected();\n\tpublic abstract String share();\n\tpublic abstract String shareExport();\n\tpublic abstract String shareExportClipboard();\n\tpublic abstract String shareExportFail();\n\tpublic abstract String shareExportFile();\n\tpublic abstract String shareExportHelp();\n\tpublic abstract String shareImport();\n\tpublic abstract String shareImportClipboard();\n\tpublic abstract String shareImportFile();\n\tpublic abstract String shareImportHelpText();\n\tpublic abstract String close();\n\tpublic abstract String noOwners();\n\n\tpublic abstract String deleteAccountQuestion();\n\tpublic abstract String deleteAccount();\n\n\tpublic abstract String delete();\n\tpublic abstract String edit();\n\n\tpublic abstract String tableFormatName();\n\tpublic abstract String tableFormatClones();\n\tpublic abstract String tableFormatImplants();\n\tpublic abstract String tableFormatCorporation();\n\tpublic abstract String tableFormatAssetList();\n\tpublic abstract String tableFormatAccountBalance();\n\tpublic abstract String tableFormatIndustryJobs();\n\tpublic abstract String tableFormatMarketOrders();\n\tpublic abstract String tableFormatJournal();\n\tpublic abstract String tableFormatTransactions();\n\tpublic abstract String tableFormatContracts();\n\tpublic abstract String tableFormatLocations();\n\tpublic abstract String tableFormatStructures();\n\tpublic abstract String tableFormatMarketStructures();\n\tpublic abstract String tableFormatBlueprints();\n\tpublic abstract String tableFormatDivisions();\n\tpublic abstract String tableFormatShip();\n\tpublic abstract String tableFormatPlanetaryInteraction();\n\tpublic abstract String tableFormatOpenWindows();\n\tpublic abstract String tableFormatAutopilot();\n\tpublic abstract String tableFormatSkills();\n\tpublic abstract String tableFormatLoyaltyPoints();\n\tpublic abstract String tableFormatNpcStanding();\n\tpublic abstract String tableFormatMining();\n\tpublic abstract String tableFormatYes();\n\tpublic abstract String tableFormatNo();\n\tpublic abstract String tableFormatExpires();\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/DialoguesExport.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\n/**\n *\n * @author Candle\n */\npublic abstract class DialoguesExport extends Bundle {\n\n\tpublic static DialoguesExport get() {\n\t\treturn BundleServiceFactory.getBundleService().get(DialoguesExport.class);\n\t}\n\n\tpublic DialoguesExport(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String cancel();\n\tpublic abstract String columns();\n\tpublic abstract String comma();\n\tpublic abstract String createTable();\n\tpublic abstract String csv();\n\tpublic abstract String currentFilter();\n\tpublic abstract String decimalSeparator();\n\tpublic abstract String defaultSettings();\n\tpublic abstract String dot();\n\tpublic abstract String dropTable();\n\tpublic abstract String export();\n\tpublic abstract String extendedInserts();\n\tpublic abstract String failedToSave();\n\tpublic abstract String filters();\n\tpublic abstract String format();\n\tpublic abstract String html();\n\tpublic abstract String htmlHeaderRepeat();\n\tpublic abstract String htmlIGB();\n\tpublic abstract String htmlStyled();\n\tpublic abstract String lineEndingsMac();\n\tpublic abstract String lineEndingsUnix();\n\tpublic abstract String lineEndingsWindows();\n\tpublic abstract String linesTerminated();\n\tpublic abstract String noColumnsSelected();\n\tpublic abstract String noFilter();\n\tpublic abstract String noSavedFilter();\n\tpublic abstract String ok();\n\tpublic abstract String savedFilter();\n\tpublic abstract String semicolon();\n\tpublic abstract String sql();\n\tpublic abstract String tableName();\n\tpublic abstract String viewCurrent();\n\tpublic abstract String viewNoSaved();\n\tpublic abstract String viewSaved();\n\tpublic abstract String viewSelect();\n\tpublic abstract String viewSelectAll();\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/DialoguesProfiles.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\n/**\n *\n * @author Andrew\n */\npublic abstract class DialoguesProfiles extends Bundle {\n\n\tpublic static DialoguesProfiles get() {\n\t\treturn BundleServiceFactory.getBundleService().get(DialoguesProfiles.class);\n\t}\n\n\tpublic DialoguesProfiles(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String ok();\n\tpublic abstract String cancel();\n\tpublic abstract String profiles();\n\tpublic abstract String load();\n\tpublic abstract String newP();\n\tpublic abstract String rename();\n\tpublic abstract String delete();\n\tpublic abstract String defaultP();\n\tpublic abstract String close();\n\tpublic abstract String loadProfile();\n\tpublic abstract String loadingProfile();\n\tpublic abstract String profileLoaded();\n\tpublic abstract String newProfile();\n\tpublic abstract String typeName();\n\tpublic abstract String nameAlreadyExists();\n\tpublic abstract String creatingProfile();\n\tpublic abstract String renameProfile();\n\tpublic abstract String enterNewName();\n\tpublic abstract String cannotDeleteActive();\n\tpublic abstract String cannotDeleteDefault();\n\tpublic abstract String deleteProfileConfirm(String name);\n\tpublic abstract String deleteProfile();\n\tpublic abstract String clearFilter();\n\tpublic abstract String profileLoadedMsg();\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/DialoguesSettings.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\n/**\n *\n * @author Candle\n */\npublic abstract class DialoguesSettings extends Bundle {\n\n\tpublic static DialoguesSettings get() {\n\t\treturn BundleServiceFactory.getBundleService().get(DialoguesSettings.class);\n\t}\n\n\tpublic DialoguesSettings(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\t// used in GeneralSettingsPanel\n\tpublic abstract String general();\n\tpublic abstract String loadToolsBackground();\n\tpublic abstract String loadToolsOpen();\n\tpublic abstract String loadToolsStartup();\n\tpublic abstract String enterFilter();\n\tpublic abstract String highlightSelectedRow();\n\tpublic abstract String focusEveOnline();\n\tpublic abstract String focusEveOnlineLinuxCmd();\n\tpublic abstract String focusEveOnlineLinuxHelp();\n\tpublic abstract String focusEveOnlineLinuxHelp2();\n\tpublic abstract String copyDecimalSeparator();\n\tpublic abstract String transactionsMargin();\n\tpublic abstract String transactionsPrice();\n\tpublic abstract String transactionsPriceAverage();\n\tpublic abstract String transactionsPriceLatest();\n\tpublic abstract String transactionsPriceMaximum();\n\tpublic abstract String transactionsPriceMinimum();\n\tpublic abstract String transactionsProfit();\n\tpublic abstract String includeDays();\n\tpublic abstract String days();\n\n\t// used in ShowToolSettingsPanel\n\tpublic abstract String show();\n\tpublic abstract String saveTools();\n\tpublic abstract String selectTools();\n\tpublic abstract String toolsOrderHelp();\n\n\t// used in AssetsToolSettingsPanel\n\tpublic abstract String assets();\n\tpublic abstract String includeSellContracts();\n\tpublic abstract String includeSellOrders();\n\tpublic abstract String includeBuyContracts();\n\tpublic abstract String includeBuyOrders();\n\tpublic abstract String includeManufacturing();\n\tpublic abstract String includeCopying();\n\tpublic abstract String includeJumpClones();\n\tpublic abstract String includePluggedInImplants();\n\tpublic abstract String showContainerItemID();\n\tpublic abstract String contractAssetsBoth();\n\tpublic abstract String contractAssetsCharacter();\n\tpublic abstract String contractAssetsCorporation();\n\tpublic abstract String contractAssetsLabel();\n\tpublic abstract String contractAssetsLabelWarn();\n\n\t// used in OverviewToolSettingsPanel\n\tpublic abstract String overview();\n\tpublic abstract String ignoreContainers();\n\n\t// used in StockpileToolSettingsPanel\n\tpublic abstract String stockpile();\n\tpublic abstract String stockpileColors();\n\tpublic abstract String stockpileSwitchTab();\n\tpublic abstract String stockpileTwoGroups();\n\tpublic abstract String stockpileThreeGroups();\n\tpublic abstract String percentPlusSymbol();\n\n\tpublic abstract String saveHistoryWarning(); //Transactions & Journal & Market Orders\n\n\t// used in MarketOrdersToolSettingsPanel\n\tpublic abstract String marketOrders();\n\tpublic abstract String marketOrdersSaveHistory();\n\tpublic abstract String expireWarnDays();\n\tpublic abstract String remainingWarnPercent();\n\n\t// used in TransactionsToolSettingsPanel\n\tpublic abstract String transactions();\n\tpublic abstract String transactionsSaveHistory();\n\n\t// used in TransactionsToolSettingsPanel\n\tpublic abstract String journal();\n\tpublic abstract String journalSaveHistory();\n\n\t// used in IndustryJobsToolSettingsPanel\n\tpublic abstract String industryJobs();\n\tpublic abstract String industryJobsSaveHistory();\n\n\t// used in ContractToolSettingsPanel\n\tpublic abstract String contracts();\n\tpublic abstract String contractsSaveHistory();\n\n\t// used in TrackerToolSettingsPanel\n\tpublic abstract String tracker();\n\tpublic abstract String useAssetPriceForSellOrders();\n\n\t// used in PriceHistoryToolSettingsPanel\n\tpublic abstract String priceHistory();\n\tpublic abstract String clearBlacklist();\n\tpublic abstract String clearBlacklistMsg();\n\tpublic abstract String clearBlacklistTitle();\n\n\t// used in MiningToolSettingsPanel\n\tpublic abstract String mining();\n\tpublic abstract String miningSaveHistory();\n\n\t// used in JumpsSettingsPanel\n\tpublic abstract String jumps();\n\tpublic abstract String eveGatecampCheck();\n\tpublic abstract String eveGatecampCheckOpenOptions();\n\tpublic abstract String eveGatecampCheckRouteOptions();\n\n\t// used in ColorSettingsPanel\n\tpublic abstract String chartColors();\n\tpublic abstract String colors();\n\tpublic abstract String collapse();\n\tpublic abstract String expand();\n\tpublic abstract String columnName();\n\tpublic abstract String columnBackground();\n\tpublic abstract String columnForeground();\n\tpublic abstract String columnPreview();\n\tpublic abstract String columnSelected();\n\tpublic abstract String testText();\n\tpublic abstract String testSelectedText();\n\tpublic abstract String overwriteMsg();\n\tpublic abstract String overwriteTitle();\n\tpublic abstract String theme();\n\tpublic abstract String lookAndFeel();\n\tpublic abstract String lookAndFeelDefault();\n\tpublic abstract String lookAndFeelDefaultName(String name);\n\tpublic abstract String lookAndFeelFlatLight();\n\tpublic abstract String lookAndFeelFlatDark();\n\tpublic abstract String lookAndFeelFlatIntelliJ();\n\tpublic abstract String lookAndFeelFlatDarcula();\n\tpublic abstract String lookAndFeelNimbusDark();\n\tpublic abstract String lookAndFeelMsg();\n\tpublic abstract String lookAndFeelTitle();\n\n\t//used in SoundSettingsPanel\n\tpublic abstract String sounds();\n\tpublic abstract String soundsBeep();\n\tpublic abstract String soundsEveArmor();\n\tpublic abstract String soundsEveCapacitor();\n\tpublic abstract String soundsEveCargo();\n\tpublic abstract String soundsEveCharacterSelection();\n\tpublic abstract String soundsEveLogin();\n\tpublic abstract String soundsEveNotificationPing();\n\tpublic abstract String soundsEveShield();\n\tpublic abstract String soundsEveSkill();\n\tpublic abstract String soundsEveStart();\n\tpublic abstract String soundsEveStructure();\n\tpublic abstract String soundsIndustryJobCompleted();\n\tpublic abstract String soundsMp3Add();\n\tpublic abstract String soundsMp3DeleteMsg(String id);\n\tpublic abstract String soundsMp3DeleteTitle();\n\tpublic abstract String soundsMp3ImportCopy();\n\tpublic abstract String soundsMp3ImportExist();\n\tpublic abstract String soundsMp3ImportTitle();\n\tpublic abstract String soundsMp3NoFilesAdded();\n\tpublic abstract String soundsNone();\n\tpublic abstract String soundsOutbidUpdateCompleted();\n\tpublic abstract String soundsOutbidUpdateAvailable();\n\n\t// used in PriceDataSettingsPanel\n\tpublic abstract String changeSourceWarning();\n\tpublic abstract String includeRegions();\n\tpublic abstract String includeStations();\n\tpublic abstract String includeSystems();\n\tpublic abstract String notConfigurable();\n\tpublic abstract String price();\n\tpublic abstract String priceBase();\n\tpublic abstract String priceData();\n\tpublic abstract String priceReprocessed();\n\tpublic abstract String priceManufacturing();\n\tpublic abstract String priceTech1();\n\tpublic abstract String priceTech2();\n\tpublic abstract String manufacturingDefault();\n\tpublic abstract String source();\n\tpublic abstract String janiceApiKey();\n\tpublic abstract String janiceApiKeyMsg();\n\tpublic abstract String janiceApiKeyTitle();\n\n\t// used in ProxySettingsPanel\n\tpublic abstract String proxy();\n\tpublic abstract String type();\n\tpublic abstract String address();\n\tpublic abstract String port();\n\tpublic abstract String auth();\n\tpublic abstract String username();\n\tpublic abstract String password();\n\n\t// used in ReprocessingSettingsPanel\n\tpublic abstract String reprocessing();\n\tpublic abstract String reprocessingWarning();\n\tpublic abstract String stationEquipment();\n\tpublic abstract String fiftyPercent();\n\tpublic abstract String percentSymbol();\n\tpublic abstract String reprocessingLevel();\n\tpublic abstract String reprocessingEfficiencyLevel();\n\tpublic abstract String oreProcessingLevel();\n\tpublic abstract String scrapmetalProcessingLevel();\n\tpublic abstract String zero();\n\tpublic abstract String one();\n\tpublic abstract String two();\n\tpublic abstract String three();\n\tpublic abstract String four();\n\tpublic abstract String five();\n\n\t// used in ManufacturingSettingsPanel\n\tpublic abstract String manufacturing();\n\tpublic abstract String manufacturingFacility();\n\tpublic abstract String manufacturingFacilityStation();\n\tpublic abstract String manufacturingFacilityMedium();\n\tpublic abstract String manufacturingFacilityLarge();\n\tpublic abstract String manufacturingFacilityXLarge();\n\tpublic abstract String manufacturingME();\n\tpublic abstract String manufacturingPercent();\n\tpublic abstract String manufacturingRigs();\n\tpublic abstract String manufacturingRigsNone();\n\tpublic abstract String manufacturingRigsT1();\n\tpublic abstract String manufacturingRigsT2();\n\tpublic abstract String manufacturingSecurity();\n\tpublic abstract String manufacturingSecurityHighSec();\n\tpublic abstract String manufacturingSecurityLowSec();\n\tpublic abstract String manufacturingSecurityNullSec();\n\tpublic abstract String manufacturingSystems();\n\tpublic abstract String manufacturingSystemsWarning();\n\tpublic abstract String manufacturingTax();\n\n\t// used in SettingsDialog\n\tpublic abstract String settings(String programName);\n\tpublic abstract String root();\n\tpublic abstract String ok();\n\tpublic abstract String apply();\n\tpublic abstract String cancel();\n\tpublic abstract String tools();\n\tpublic abstract String values();\n\n\t// used in UserItemNameSettingsPanel\n\tpublic abstract String names();\n\tpublic abstract String name();\n\tpublic abstract String namesInstruction();\n\n\t// used in JUserListPanel\n\tpublic abstract String badInput();\n\tpublic abstract String deleteItem();\n\tpublic abstract String deleteTypeTitle(String type);\n\tpublic abstract String editItem();\n\tpublic abstract String editTypeTitle(String type);\n\tpublic abstract String inputNotValid();\n\tpublic abstract String itemEmpty();\n\tpublic abstract String items(int size);\n\n\t// used in UserPriceSettingsPanel\n\tpublic abstract String pricePrices();\n\tpublic abstract String pricePrice();\n\tpublic abstract String priceInstructions();\n\n\t// used in UserLocationSettingsPanel\n\tpublic abstract String locationsInstructions();\n\n\t// used in WindowSettingsPanel\n\tpublic abstract String windowWindow();\n\tpublic abstract String windowSaveOnExit();\n\tpublic abstract String windowAlwaysOnTop();\n\tpublic abstract String windowFixed();\n\tpublic abstract String windowWidth();\n\tpublic abstract String windowHeight();\n\tpublic abstract String windowX();\n\tpublic abstract String windowY();\n\tpublic abstract String windowMaximised();\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/DialoguesStructure.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.i18n;\r\n\r\nimport java.util.Locale;\r\nimport uk.me.candle.translations.Bundle;\r\n\r\n\r\npublic abstract class DialoguesStructure extends Bundle {\r\n\tpublic static DialoguesStructure get() {\r\n\t\treturn BundleServiceFactory.getBundleService().get(DialoguesStructure.class);\r\n\t}\r\n\r\n\tpublic DialoguesStructure(final Locale locale) {\r\n\t\tsuper(locale);\r\n\t}\r\n\r\n\tpublic abstract String eta(String time);\r\n\tpublic abstract String invalid();\r\n\tpublic abstract String locationsAll();\r\n\tpublic abstract String locationsItem();\r\n\tpublic abstract String locationsSelected();\r\n\tpublic abstract String locationsTracker();\r\n\tpublic abstract String nextUpdate(String updatableIn);\r\n\tpublic abstract String ownersAll();\r\n\tpublic abstract String ownersSingle();\r\n\tpublic abstract String title();\r\n\tpublic abstract String updateTitle();\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/DialoguesUpdate.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\n/**\n *\n * @author Andrew\n */\npublic abstract class DialoguesUpdate extends Bundle {\n\n\tpublic static DialoguesUpdate get() {\n\t\treturn BundleServiceFactory.getBundleService().get(DialoguesUpdate.class);\n\t}\n\n\tpublic DialoguesUpdate(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String updating();\n\tpublic abstract String ok();\n\tpublic abstract String cancel();\n\tpublic abstract String cancelQuestion();\n\tpublic abstract String cancelQuestionTitle();\n\tpublic abstract String minimize();\n\n\t// used in UpdateDialog\n\tpublic abstract String firstAccount();\n\tpublic abstract String allAccounts();\n\tpublic abstract String update();\n\tpublic abstract String contracts();\n\tpublic abstract String marketOrders();\n\tpublic abstract String industryJobs();\n\tpublic abstract String accounts();\n\tpublic abstract String accountBalance();\n\tpublic abstract String assets();\n\tpublic abstract String priceData();\n\tpublic abstract String priceDataNew();\n\tpublic abstract String priceDataNone();\n\tpublic abstract String nextUpdate();\n\tpublic abstract String noAccounts();\n\tpublic abstract String now();\n\tpublic abstract String balance();\n\tpublic abstract String journal();\n\tpublic abstract String transactions();\n\tpublic abstract String names();\n\tpublic abstract String blueprints();\n\tpublic abstract String skills();\n\tpublic abstract String loyaltyPoints();\n\tpublic abstract String npcStanding();\n\tpublic abstract String mining();\n\tpublic abstract String structures();\n\tpublic abstract String publicMarketOrders();\n\tpublic abstract String step1();\n\tpublic abstract String step2();\n\tpublic abstract String step3();\n\tpublic abstract String step4();\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/General.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\n/**\n *\n * @author Candle\n */\npublic abstract class General extends Bundle {\n\n\tpublic static General get() {\n\t\treturn BundleServiceFactory.getBundleService().get(General.class);\n\t}\n\n\tpublic General(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String uncaughtErrorMessage();\n\tpublic abstract String error();\n\tpublic abstract String contractIncluded();\n\tpublic abstract String contractExcluded();\n\tpublic abstract String industryJobFlag();\n\tpublic abstract String marketOrderSellFlag();\n\tpublic abstract String marketOrderBuyFlag();\n\tpublic abstract String jumpClone();\n\tpublic abstract String activeClone();\n\tpublic abstract String none();\n\tpublic abstract String all();\n\tpublic abstract String fileLockTitle();\n\tpublic abstract String fileLockMsg(String s);\n\tpublic abstract String singleInstanceTitle();\n\tpublic abstract String singleInstanceMsg();\n\tpublic abstract String emptyLocation(String locationID);\n\tpublic abstract String assetSafety();\n\tpublic abstract String journalContract();\n\tpublic abstract String journalIndustryJob();\n\tpublic abstract String journalMarketTransaction();\n\tpublic abstract String journalSystemTransaction();\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/GuiFrame.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\npublic abstract class GuiFrame extends Bundle {\n\n\tpublic static GuiFrame get() {\n\t\treturn BundleServiceFactory.getBundleService().get(GuiFrame.class);\n\t}\n\n\tpublic GuiFrame(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String about();\n\tpublic abstract String accounts();\n\tpublic abstract String agents();\n\tpublic abstract String business();\n\tpublic abstract String change();\n\tpublic abstract String clickToShow(String text);\n\tpublic abstract String clickToApply(String text);\n\tpublic abstract String close();\n\tpublic abstract String contracts();\n\tpublic abstract String credits();\n\tpublic abstract String eve();\n\tpublic abstract String exit();\n\tpublic abstract String exitMsg(int size);\n\tpublic abstract String exitTitle(int size);\n\tpublic abstract String extractions();\n\tpublic abstract String file();\n\tpublic abstract String help();\n\tpublic abstract String inventory();\n\tpublic abstract String items();\n\tpublic abstract String industry();\n\tpublic abstract String journal();\n\tpublic abstract String license();\n\tpublic abstract String linkDiscord();\n\tpublic abstract String linkFeedbackAndHelp();\n\tpublic abstract String linkWiki();\n\tpublic abstract String lock();\n\tpublic abstract String loyaltyPoints();\n\tpublic abstract String market();\n\tpublic abstract String materials();\n\tpublic abstract String mining();\n\tpublic abstract String miningAll();\n\tpublic abstract String miningLog();\n\tpublic abstract String miningGraph();\n\tpublic abstract String misc();\n\tpublic abstract String netWorth();\n\tpublic abstract String not();\n\tpublic abstract String npcStanding();\n\tpublic abstract String options();\n\tpublic abstract String options1();\n\tpublic abstract String overview();\n\tpublic abstract String owners();\n\tpublic abstract String priceChanges();\n\tpublic abstract String priceHistory();\n\tpublic abstract String profiles();\n\tpublic abstract String programUpdateText();\n\tpublic abstract String programUpdateTip();\n\tpublic abstract String readme();\n\tpublic abstract String reprocessed();\n\tpublic abstract String routing();\n\tpublic abstract String ship();\n\tpublic abstract String skills();\n\tpublic abstract String skillsOverview();\n\tpublic abstract String slots();\n\tpublic abstract String stockpile();\n\tpublic abstract String table();\n\tpublic abstract String tools();\n\tpublic abstract String tracker();\n\tpublic abstract String transaction();\n\tpublic abstract String tree();\n\tpublic abstract String updatable();\n\tpublic abstract String update();\n\tpublic abstract String update1();\n\tpublic abstract String updateStructure();\n\tpublic abstract String updatingInProgressMsg();\n\tpublic abstract String updatingInProgressTitle();\n\tpublic abstract String values();\n\tpublic abstract String valueTable();\n\tpublic abstract String windowTitle(String programName, String programVersion, int portable, int profileCount, String activeProfileName);\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/GuiShared.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\npublic abstract class GuiShared extends Bundle {\n\n\tpublic static GuiShared get() {\n\t\treturn BundleServiceFactory.getBundleService().get(GuiShared.class);\n\t}\n\n\tpublic GuiShared(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String agentDivisionResearchAndDevelopment();\n\tpublic abstract String agentDivisionDistribution();\n\tpublic abstract String agentDivisionMining();\n\tpublic abstract String agentDivisionSecurity();\n\tpublic abstract String agentDivisionIndustrialistEntrepreneur();\n\tpublic abstract String agentDivisionExplorer();\n\tpublic abstract String agentDivisionIndustrialistProducer();\n\tpublic abstract String agentDivisionEnforcer();\n\tpublic abstract String agentDivisionSoldierOfFortune();\n\tpublic abstract String agentDivisionInterBus();\n\tpublic abstract String agentTypeNonAgent();\n\tpublic abstract String agentTypeBasicAgent();\n\tpublic abstract String agentTypeTutorialAgent();\n\tpublic abstract String agentTypeResearchAgent();\n\tpublic abstract String agentTypeConcordAgent();\n\tpublic abstract String agentTypeGenericStorylineMissionAgent();\n\tpublic abstract String agentTypeStorylineMissionAgent();\n\tpublic abstract String agentTypeEventMissionAgent();\n\tpublic abstract String agentTypeFactionalWarfareAgent();\n\tpublic abstract String agentTypeEpicArcAgent();\n\tpublic abstract String agentTypeAuraAgent();\n\tpublic abstract String agentTypeCareerAgent();\n\tpublic abstract String adam4eve();\n\tpublic abstract String add();\n\tpublic abstract String addFilter();\n\tpublic abstract String addTransactionFilter();\n\tpublic abstract String all();\n\tpublic abstract String background();\n\tpublic abstract String cellAverage();\n\tpublic abstract String cellAverageToolTip();\n\tpublic abstract String cellInformation();\n\tpublic abstract String cellInformationToolTip();\n\tpublic abstract String cellInformationColumn();\n\tpublic abstract String cellInformationColumnToolTip();\n\tpublic abstract String cellCount();\n\tpublic abstract String cellCountToolTip();\n\tpublic abstract String cellMaximum();\n\tpublic abstract String cellMaximumToolTip();\n\tpublic abstract String cellMinimum();\n\tpublic abstract String cellMinimumToolTip();\n\tpublic abstract String cellSum();\n\tpublic abstract String cellSumToolTip();\n\tpublic abstract String checkAll();\n\tpublic abstract String chruker();\n\tpublic abstract String clickToCopyGroup();\n\tpublic abstract String clickToCopySelectionInfo();\n\tpublic abstract String clickToCopyWrap(String toolTip);\n\tpublic abstract String constellation();\n\tpublic abstract String containerDelete();\n\tpublic abstract String containerEdit();\n\tpublic abstract String containerText();\n\tpublic abstract String contractCorporationOwner(String corporation, String character);\n\tpublic abstract String copy();\n\tpublic abstract String copyEveMultiBuy();\n\tpublic abstract String copyPlus();\n\tpublic abstract String corporation();\n\tpublic abstract String custom();\n\tpublic abstract String cut();\n\tpublic abstract String delete();\n\tpublic abstract String dotlan();\n\tpublic abstract String durationDone();\n\tpublic abstract String durationNever();\n\tpublic abstract String edit();\n\tpublic abstract String emptyString();\n\tpublic abstract String errorLoadingSettingsMsg();\n\tpublic abstract String errorLoadingSettingsTitle();\n\tpublic abstract String errorLoadingProfileMsg();\n\tpublic abstract String errorLoadingProfileTitle();\n\tpublic abstract String eveCookbook();\n\tpublic abstract String eveInfo();\n\tpublic abstract String eveMarketBrowser();\n\tpublic abstract String eveMissioneer();\n\tpublic abstract String eveRef();\n\tpublic abstract String eveTycoon();\n\tpublic abstract String eveconomy();\n\tpublic abstract String foreground();\n\tpublic abstract String formulaColumns();\n\tpublic abstract String formulaDateToolTip();\n\tpublic abstract String formulaFunctions();\n\tpublic abstract String formulaMenu();\n\tpublic abstract String formulaName();\n\tpublic abstract String formulaOperations();\n\tpublic abstract String formulaString();\n\tpublic abstract String formulaTitle();\n\tpublic abstract String fuzzworkBlueprints();\n\tpublic abstract String fuzzworkItems();\n\tpublic abstract String fuzzworkLP();\n\tpublic abstract String fuzzworkLPBuy();\n\tpublic abstract String fuzzworkLPSell();\n\tpublic abstract String fuzzworkMarket();\n\tpublic abstract String helpFilter();\n\tpublic abstract String helpSettings();\n\tpublic abstract String helpStockpile();\n\tpublic abstract String helpOpenManual(String title);\n\tpublic abstract String helpOpenManualTitle();\n\tpublic abstract String importEft();\n\tpublic abstract String importEveMultibuy();\n\tpublic abstract String importIskPerHour();\n\tpublic abstract String importOptions();\n\tpublic abstract String importOptionsMerge();\n\tpublic abstract String importOptionsOverwrite();\n\tpublic abstract String importOptionsRename();\n\tpublic abstract String importOptionsSkip();\n\tpublic abstract String importStockpilesShoppingList();\n\tpublic abstract String industry();\n\tpublic abstract String invalidMsg();\n\tpublic abstract String invalidTitle();\n\tpublic abstract String item();\n\tpublic abstract String itemDatabase();\n\tpublic abstract String itemDelete();\n\tpublic abstract String itemEdit();\n\tpublic abstract String itemNameTitle();\n\tpublic abstract String itemPriceTitle();\n\tpublic abstract String jitaSpace();\n\tpublic abstract String jumps();\n\tpublic abstract String jumpsAddCustom();\n\tpublic abstract String jumpsAddSelected();\n\tpublic abstract String jumpsClear();\n\tpublic abstract String jumpsColumnToolTip(String systemName);\n\tpublic abstract String jumpsSettings();\n\tpublic abstract String loadout();\n\tpublic abstract String loadoutOpen();\n\tpublic abstract String loadoutSelectShip();\n\tpublic abstract String location();\n\tpublic abstract String locationClear();\n\tpublic abstract String locationClearConfirm(String location);\n\tpublic abstract String locationClearConfirmAll(int size);\n\tpublic abstract String locationEmpty();\n\tpublic abstract String locationID();\n\tpublic abstract String locationName();\n\tpublic abstract String locationRename();\n\tpublic abstract String locationSystem();\n\tpublic abstract String lookup();\n\tpublic abstract String loyaltyPointsStore();\n\tpublic abstract String market();\n\tpublic abstract String newStockpile();\n\tpublic abstract String none();\n\tpublic abstract String ok();\n\tpublic abstract String openLinks(int size);\n\tpublic abstract String openLinksTitle();\n\tpublic abstract String overwrite();\n\tpublic abstract String overwriteTitle();\n\tpublic abstract String overwriteFile();\n\tpublic abstract String paste();\n\tpublic abstract String planet();\n\tpublic abstract String priceHistory();\n\tpublic abstract String quantumAnomaly();\n\tpublic abstract String region();\n\tpublic abstract String reprocessed();\n\tpublic abstract String routing();\n\tpublic abstract String selectionAverage();\n\tpublic abstract String selectionContractsBought();\n\tpublic abstract String selectionContractsBoughtToolTip();\n\tpublic abstract String selectionContractsBuying();\n\tpublic abstract String selectionContractsBuyingToolTip();\n\tpublic abstract String selectionContractsCollateralAcceptor();\n\tpublic abstract String selectionContractsCollateralAcceptorToolTip();\n\tpublic abstract String selectionContractsCollateralIssuer();\n\tpublic abstract String selectionContractsCollateralIssuerToolTip();\n\tpublic abstract String selectionContractsSellingAssets();\n\tpublic abstract String selectionContractsSellingAssetsToolTip();\n\tpublic abstract String selectionContractsSellingPrice();\n\tpublic abstract String selectionContractsSellingPriceToolTip();\n\tpublic abstract String selectionContractsSold();\n\tpublic abstract String selectionContractsSoldToolTip();\n\tpublic abstract String selectionCount();\n\tpublic abstract String selectionInventionSuccess();\n\tpublic abstract String selectionManufactureJobsValue();\n\tpublic abstract String selectionOrdersCount();\n\tpublic abstract String selectionOrdersCountValue(String volumeRemain, String volumeTotal);\n\tpublic abstract String selectionOrdersSellTotal();\n\tpublic abstract String selectionOrdersBuyTotal();\n\tpublic abstract String selectionOrdersBuyEscrow();\n\tpublic abstract String selectionOrdersBuyToCover();\n\tpublic abstract String selectionOrdersBrokersFee();\n\tpublic abstract String selectionTransactionsSellCount();\n\tpublic abstract String selectionTransactionsSellTotal();\n\tpublic abstract String selectionTransactionsSellAvg();\n\tpublic abstract String selectionTransactionsSellTax();\n\tpublic abstract String selectionTransactionsBothCount();\n\tpublic abstract String selectionTransactionsBothTotal();\n\tpublic abstract String selectionTransactionsBothAvg();\n\tpublic abstract String selectionTransactionsBuyCount();\n\tpublic abstract String selectionTransactionsBuyAvg();\n\tpublic abstract String selectionTransactionsBuyTotal();\n\tpublic abstract String selectionCopiedToClipboard();\n\tpublic abstract String selectionTitle();\n\tpublic abstract String selectionTitleBoth();\n\tpublic abstract String selectionTitleBuy();\n\tpublic abstract String selectionTitleCollateral();\n\tpublic abstract String selectionTitleNeeded();\n\tpublic abstract String selectionTitleNow();\n\tpublic abstract String selectionTitleSell();\n\tpublic abstract String selectionValue();\n\tpublic abstract String selectionValueNeeded();\n\tpublic abstract String selectionValueNow();\n\tpublic abstract String selectionValueReprocessed();\n\tpublic abstract String selectionVolume();\n\tpublic abstract String selectionVolumeNeeded();\n\tpublic abstract String selectionVolumeNow();\n\tpublic abstract String selectionShortAverage();\n\tpublic abstract String selectionShortBrokerFees();\n\tpublic abstract String selectionShortBuy();\n\tpublic abstract String selectionShortCount();\n\tpublic abstract String selectionShortEscrow();\n\tpublic abstract String selectionShortGroup(String text);\n\tpublic abstract String selectionShortInventionSuccess();\n\tpublic abstract String selectionShortIskToCover();\n\tpublic abstract String selectionShortOutputValue();\n\tpublic abstract String selectionShortReprocessedValue();\n\tpublic abstract String selectionShortSell();\n\tpublic abstract String selectionShortTax();\n\tpublic abstract String selectionShortValue();\n\tpublic abstract String selectionShortVolume();\n\tpublic abstract String selectionSlotsContractCharacter();\n\tpublic abstract String selectionSlotsContractCharacterFree();\n\tpublic abstract String selectionSlotsContractCharacterActive();\n\tpublic abstract String selectionSlotsContractCharacterMax();\n\tpublic abstract String selectionSlotsContractCharacterFreeToolTip();\n\tpublic abstract String selectionSlotsContractCharacterActiveToolTip();\n\tpublic abstract String selectionSlotsContractCharacterMaxToolTip();\n\tpublic abstract String selectionSlotsContractCorporation();\n\tpublic abstract String selectionSlotsContractCorporationFree();\n\tpublic abstract String selectionSlotsContractCorporationActive();\n\tpublic abstract String selectionSlotsContractCorporationMax();\n\tpublic abstract String selectionSlotsContractCorporationFreeToolTip();\n\tpublic abstract String selectionSlotsContractCorporationActiveToolTip();\n\tpublic abstract String selectionSlotsContractCorporationMaxToolTip();\n\tpublic abstract String selectionSlotsManufacturing();\n\tpublic abstract String selectionSlotsManufacturingDone();\n\tpublic abstract String selectionSlotsManufacturingFree();\n\tpublic abstract String selectionSlotsManufacturingActive();\n\tpublic abstract String selectionSlotsManufacturingMax();\n\tpublic abstract String selectionSlotsManufacturingDoneToolTip();\n\tpublic abstract String selectionSlotsManufacturingFreeToolTip();\n\tpublic abstract String selectionSlotsManufacturingActiveToolTip();\n\tpublic abstract String selectionSlotsManufacturingMaxToolTip();\n\tpublic abstract String selectionSlotsMarketOrders();\n\tpublic abstract String selectionSlotsMarketOrdersFree();\n\tpublic abstract String selectionSlotsMarketOrdersActive();\n\tpublic abstract String selectionSlotsMarketOrdersMax();\n\tpublic abstract String selectionSlotsMarketOrdersFreeToolTip();\n\tpublic abstract String selectionSlotsMarketOrdersActiveToolTip();\n\tpublic abstract String selectionSlotsMarketOrdersMaxToolTip();\n\tpublic abstract String selectionSlotsReactions();\n\tpublic abstract String selectionSlotsReactionsDone();\n\tpublic abstract String selectionSlotsReactionsFree();\n\tpublic abstract String selectionSlotsReactionsActive();\n\tpublic abstract String selectionSlotsReactionsMax();\n\tpublic abstract String selectionSlotsReactionsDoneToolTip();\n\tpublic abstract String selectionSlotsReactionsFreeToolTip();\n\tpublic abstract String selectionSlotsReactionsActiveToolTip();\n\tpublic abstract String selectionSlotsReactionsMaxToolTip();\n\tpublic abstract String selectionSlotsResearch();\n\tpublic abstract String selectionSlotsResearchDone();\n\tpublic abstract String selectionSlotsResearchFree();\n\tpublic abstract String selectionSlotsResearchActive();\n\tpublic abstract String selectionSlotsResearchMax();\n\tpublic abstract String selectionSlotsResearchDoneToolTip();\n\tpublic abstract String selectionSlotsResearchFreeToolTip();\n\tpublic abstract String selectionSlotsResearchActiveToolTip();\n\tpublic abstract String selectionSlotsResearchMaxToolTip();\n\tpublic abstract String set();\n\tpublic abstract String station();\n\tpublic abstract String stockpile();\n\tpublic abstract String system();\n\tpublic abstract String systemRegion();\n\tpublic abstract String tableColumns();\n\tpublic abstract String tableColumnsReset();\n\tpublic abstract String tableColumnsTip();\n\tpublic abstract String tableColumnsTitle();\n\tpublic abstract String tableResizeText();\n\tpublic abstract String tableResizeWindow();\n\tpublic abstract String tableResizeNone();\n\tpublic abstract String tableSettings();\n\tpublic abstract String tags();\n\tpublic abstract String tagsEditTitle();\n\tpublic abstract String tagsName(String name, Integer count);\n\tpublic abstract String tagsNew();\n\tpublic abstract String tagsNewMsg();\n\tpublic abstract String tagsNewTitle();\n\tpublic abstract String toolsUpdateTitle();\n\tpublic abstract String ui();\n\tpublic abstract String uiWaypoint();\n\tpublic abstract String uiWaypointBeginning();\n\tpublic abstract String uiWaypointClear();\n\tpublic abstract String uiWaypointEveGatecampCheck();\n\tpublic abstract String uiWaypointEveGatecampCheckAsk();\n\tpublic abstract String uiWaypointEveGatecampCheckAlwaysOpen();\n\tpublic abstract String uiWaypointEveGatecampCheckDefault();\n\tpublic abstract String uiWaypointEveGatecampCheckNeverOpen();\n\tpublic abstract String uiWaypointEveGatecampCheckUnsecure();\n\tpublic abstract String uiWaypointEveGatecampCheckOptions();\n\tpublic abstract String uiWaypointEveGatecampCheckSecure();\n\tpublic abstract String uiWaypointEveGatecampCheckShortest();\n\tpublic abstract String uiWaypointFail();\n\tpublic abstract String uiWaypointOk();\n\tpublic abstract String uiWaypointTitle();\n\tpublic abstract String uiCharacterInvalidMsg();\n\tpublic abstract String uiCharacterMsg();\n\tpublic abstract String uiCharacterTitle();\n\tpublic abstract String uiContract();\n\tpublic abstract String uiContractFail();\n\tpublic abstract String uiContractOk();\n\tpublic abstract String uiContractTitle();\n\tpublic abstract String uiLocationTitle();\n\tpublic abstract String uiMarket();\n\tpublic abstract String uiMarketFail();\n\tpublic abstract String uiMarketOk();\n\tpublic abstract String uiMarketTitle();\n\tpublic abstract String uiOwner();\n\tpublic abstract String uiOwnerFail();\n\tpublic abstract String uiOwnerMsg();\n\tpublic abstract String uiOwnerOk();\n\tpublic abstract String uiOwnerTitle();\n\tpublic abstract String uiStation();\n\tpublic abstract String uiSystem();\n\tpublic abstract String unknownFaction();\n\tpublic abstract String unknownOwner();\n\tpublic abstract String updateStructures();\n\tpublic abstract String updating();\n\tpublic abstract String zKillboard();\n\n\tpublic abstract String today(Object arg0);\n\tpublic abstract String files(Object arg0);\n\tpublic abstract String deleteView();\n\tpublic abstract String deleteViews(int size);\n\tpublic abstract String editViews();\n\tpublic abstract String enterViewName();\n\tpublic abstract String loadView();\n\tpublic abstract String manageViews();\n\tpublic abstract String overwriteView();\n\tpublic abstract String renameView();\n\tpublic abstract String saveView();\n\tpublic abstract String saveViewMsg();\n\n\t//Filters\n\tpublic abstract String saveFilter();\n\tpublic abstract String saveFilterToolTip();\n\tpublic abstract String enterFilterName();\n\tpublic abstract String save();\n\tpublic abstract String cancel();\n\tpublic abstract String noFilterName();\n\tpublic abstract String overwriteDefaultFilter();\n\tpublic abstract String overwriteFilter();\n\tpublic abstract String addField();\n\tpublic abstract String addFieldToolTip();\n\tpublic abstract String clearField();\n\tpublic abstract String clearFieldToolTip();\n\tpublic abstract String loadFilter();\n\tpublic abstract String loadFilterToolTip();\n\tpublic abstract String showFilters();\n\tpublic abstract String showFiltersToolTip();\n\tpublic abstract String manageFilters();\n\tpublic abstract String nothingToSave();\n\tpublic abstract String filterManager();\n\tpublic abstract String managerExport();\n\tpublic abstract String managerImport();\n\tpublic abstract String managerImportFailMsg();\n\tpublic abstract String managerImportFailTitle();\n\tpublic abstract String managerLoad();\n\tpublic abstract String managerRename();\n\tpublic abstract String managerDelete();\n\tpublic abstract String managerEdit();\n\tpublic abstract String managerCopy();\n\tpublic abstract String managerClose();\n\tpublic abstract String renameFilter();\n\tpublic abstract String deleteFilter();\n\tpublic abstract String deleteFilters(int size);\n\tpublic abstract String mergeFilters();\n\tpublic abstract String managerMerge();\n\tpublic abstract String filterAll();\n\tpublic abstract String filterAnd();\n\tpublic abstract String filterOr();\n\tpublic abstract String filterContains();\n\tpublic abstract String filterContainsNot();\n\tpublic abstract String filterEquals();\n\tpublic abstract String filterEqualsNot();\n\tpublic abstract String filterRegex();\n\tpublic abstract String filterGreaterThan();\n\tpublic abstract String filterLastDays();\n\tpublic abstract String filterNextDays();\n\tpublic abstract String filterLastHours();\n\tpublic abstract String filterNextHours();\n\tpublic abstract String filterLessThan();\n\tpublic abstract String filterBefore();\n\tpublic abstract String filterAfter();\n\tpublic abstract String filterEqualsDate();\n\tpublic abstract String filterEqualsNotDate();\n\tpublic abstract String filterContainsColumn();\n\tpublic abstract String filterContainsNotColumn();\n\tpublic abstract String filterEqualsColumn();\n\tpublic abstract String filterEqualsNotColumn();\n\tpublic abstract String filterGreaterThanColumn();\n\tpublic abstract String filterLessThanColumn();\n\tpublic abstract String filterBeforeColumn();\n\tpublic abstract String filterAfterColumn();\n\tpublic abstract String filterUntitled();\n\tpublic abstract String filterEmpty();\n\tpublic abstract String filterShowing(int rowCount, int size, String filterName);\n\tpublic abstract String popupMenuAddField();\n\tpublic abstract String popupMenuAddFieldMsg(int count);\n\tpublic abstract String export();\n\tpublic abstract String exportToolTip();\n\tpublic abstract String exportTableData();\n\n\t//Text Dialog\n\tpublic abstract String textLoadFailMsg();\n\tpublic abstract String textLoadFailTitle();\n\tpublic abstract String textSaveFailMsg();\n\tpublic abstract String textSaveFailTitle();\n\tpublic abstract String textToClipboard();\n\tpublic abstract String textToFile();\n\tpublic abstract String textFromClipboard();\n\tpublic abstract String textFromFile();\n\tpublic abstract String textClose();\n\tpublic abstract String textImport();\n\tpublic abstract String textInvalid();\n\tpublic abstract String textEmpty();\n\tpublic abstract String textExport();\n\n\t//JSimpleColorPicker\n\tpublic abstract String colorDefault();\n\tpublic abstract String colorNone();\n\tpublic abstract String colorCustom();\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/TabsAgents.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\npublic abstract class TabsAgents extends Bundle {\n\n\tpublic static TabsAgents get() {\n\t\treturn BundleServiceFactory.getBundleService().get(TabsAgents.class);\n\t}\n\n\tpublic TabsAgents(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String agents();\n\tpublic abstract String columnName();\n\tpublic abstract String columnCorporation();\n\tpublic abstract String columnFaction();\n\tpublic abstract String columnLevel();\n\tpublic abstract String columnLocation();\n\tpublic abstract String columnSecurity();\n\tpublic abstract String columnSystem();\n\tpublic abstract String columnConstellation();\n\tpublic abstract String columnRegion();\n\tpublic abstract String columnDivision();\n\tpublic abstract String columnType();\n\tpublic abstract String columnLocator();\n\tpublic abstract String columnAgentID();\n\tpublic abstract String columnCorporationID();\n\tpublic abstract String columnFactionID();\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/TabsAssets.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\npublic abstract class TabsAssets extends Bundle {\n\n\tpublic static TabsAssets get() {\n\t\treturn BundleServiceFactory.getBundleService().get(TabsAssets.class);\n\t}\n\n\tpublic TabsAssets(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String assets();\n\tpublic abstract String average();\n\tpublic abstract String reprocessColors();\n\tpublic abstract String reprocessColorsToolTip();\n\tpublic abstract String treemap();\n\tpublic abstract String treemapToolTip();\n\tpublic abstract String totalCount();\n\tpublic abstract String totalReprocessed();\n\tpublic abstract String totalValue();\n\tpublic abstract String totalVolume();\n\tpublic abstract String clearNew();\n\tpublic abstract String columnName();\n\tpublic abstract String columnNameType();\n\tpublic abstract String columnNameCustom();\n\tpublic abstract String columnTags();\n\tpublic abstract String columnGroup();\n\tpublic abstract String columnCategory();\n\tpublic abstract String columnSlot();\n\tpublic abstract String columnChargeSize();\n\tpublic abstract String columnOwner();\n\tpublic abstract String columnLocation();\n\tpublic abstract String columnSecurity();\n\tpublic abstract String columnSystem();\n\tpublic abstract String columnConstellation();\n\tpublic abstract String columnRegion();\n\tpublic abstract String columnFactionWarfareSystemOwner();\n\tpublic abstract String columnFactionWarfareSystemOwnerToolTip();\n\tpublic abstract String columnContainer();\n\tpublic abstract String columnFlag();\n\tpublic abstract String columnPrice();\n\tpublic abstract String columnPriceToolTip();\n\tpublic abstract String columnPriceSellMin();\n\tpublic abstract String columnPriceSellMinToolTip();\n\tpublic abstract String columnPriceBuyMax();\n\tpublic abstract String columnPriceBuyMaxToolTip();\n\tpublic abstract String columnPriceReprocessed();\n\tpublic abstract String columnPriceReprocessedToolTip();\n\tpublic abstract String columnPriceManufacturing();\n\tpublic abstract String columnPriceManufacturingToolTip();\n\tpublic abstract String columnTransactionPriceLatest();\n\tpublic abstract String columnTransactionPriceLatestToolTip();\n\tpublic abstract String columnTransactionPriceAverage();\n\tpublic abstract String columnTransactionPriceAverageToolTip();\n\tpublic abstract String columnTransactionPriceMaximum();\n\tpublic abstract String columnTransactionPriceMaximumToolTip();\n\tpublic abstract String columnTransactionPriceMinimum();\n\tpublic abstract String columnTransactionPriceMinimumToolTip();\n\tpublic abstract String columnPriceBase();\n\tpublic abstract String columnPriceBaseToolTip();\n\tpublic abstract String columnPriceReprocessedDifference();\n\tpublic abstract String columnPriceReprocessedDifferenceToolTip();\n\tpublic abstract String columnPriceReprocessedPercent();\n\tpublic abstract String columnPriceReprocessedPercentToolTip();\n\tpublic abstract String columnValueReprocessed();\n\tpublic abstract String columnValueReprocessedToolTip();\n\tpublic abstract String columnValue();\n\tpublic abstract String columnValueToolTip();\n\tpublic abstract String columnValuePerVolume();\n\tpublic abstract String columnCount();\n\tpublic abstract String columnTypeCount();\n\tpublic abstract String columnTypeCountToolTip();\n\tpublic abstract String columnMeta();\n\tpublic abstract String columnTech();\n\tpublic abstract String columnVolume();\n\tpublic abstract String columnVolumeTotal();\n\tpublic abstract String columnVolumeTotalToolTip();\n\tpublic abstract String columnVolumePackaged();\n\tpublic abstract String columnVolumePackagedToolTip();\n\tpublic abstract String columnSingleton();\n\tpublic abstract String columnAdded();\n\tpublic abstract String columnAddedToolTip();\n\tpublic abstract String columnMaterialEfficiency();\n\tpublic abstract String columnMaterialEfficiencyToolTip();\n\tpublic abstract String columnTimeEfficiency();\n\tpublic abstract String columnTimeEfficiencyToolTip();\n\tpublic abstract String columnRuns();\n\tpublic abstract String columnRunsToolTip();\n\tpublic abstract String columnStructure();\n\tpublic abstract String columnStructureToolTip();\n\tpublic abstract String columnItemID();\n\tpublic abstract String columnItemIDToolTip();\n\tpublic abstract String columnLocationID();\n\tpublic abstract String columnLocationIDToolTip();\n\tpublic abstract String columnTypeID();\n\tpublic abstract String columnTypeIDToolTip();\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/TabsContracts.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.i18n;\r\n\r\nimport java.util.Locale;\r\nimport uk.me.candle.translations.Bundle;\r\n\r\n\r\npublic abstract class TabsContracts extends Bundle {\r\n\r\n\tpublic static TabsContracts get() {\r\n\t\treturn BundleServiceFactory.getBundleService().get(TabsContracts.class);\r\n\t}\r\n\r\n\tpublic TabsContracts(final Locale locale) {\r\n\t\tsuper(locale);\r\n\t}\r\n\r\n\tpublic abstract String auction();\r\n\tpublic abstract String availabilityPrivate();\r\n\tpublic abstract String availabilityPublic();\r\n\tpublic abstract String bought();\r\n\tpublic abstract String buying();\r\n\tpublic abstract String collapse();\r\n\tpublic abstract String collateralAcceptor();\r\n\tpublic abstract String collateralIssuer();\r\n\tpublic abstract String columnAccepted();\r\n\tpublic abstract String columnAcceptor();\r\n\tpublic abstract String columnAssignee();\r\n\tpublic abstract String columnAvailability();\r\n\tpublic abstract String columnBuyout();\r\n\tpublic abstract String columnCollateral();\r\n\tpublic abstract String columnCompleted();\r\n\tpublic abstract String columnContractID();\r\n\tpublic abstract String columnEndStation();\r\n\tpublic abstract String columnExpired();\r\n\tpublic abstract String columnIncluded();\r\n\tpublic abstract String columnIssued();\r\n\tpublic abstract String columnForCorp();\r\n\tpublic abstract String columnIssuer();\r\n\tpublic abstract String columnIssuerCorp();\r\n\tpublic abstract String columnItemID();\r\n\tpublic abstract String columnMarketPrice();\r\n\tpublic abstract String columnPriceReprocessed();\r\n\tpublic abstract String columnPriceReprocessedToolTip();\r\n\tpublic abstract String columnPriceManufacturing();\r\n\tpublic abstract String columnPriceManufacturingToolTip();\r\n\tpublic abstract String columnMarketValue();\r\n\tpublic abstract String columnMarketValueToolTip();\r\n\tpublic abstract String columnValueReprocessed();\r\n\tpublic abstract String columnValueReprocessedToolTip();\r\n\tpublic abstract String columnValueManufacturing();\r\n\tpublic abstract String columnValueManufacturingToolTip();\r\n\tpublic abstract String columnMaterialEfficiency();\r\n\tpublic abstract String columnMaterialEfficiencyToolTip();\r\n\tpublic abstract String columnName();\r\n\tpublic abstract String columnNumDays();\r\n\tpublic abstract String columnOwned();\r\n\tpublic abstract String columnOwnedToolTip();\r\n\tpublic abstract String columnPrice();\r\n\tpublic abstract String columnQuantity();\r\n\tpublic abstract String columnRecordID();\r\n\tpublic abstract String columnReward();\r\n\tpublic abstract String columnRuns();\r\n\tpublic abstract String columnRunsToolTip();\r\n\tpublic abstract String columnSingleton();\r\n\tpublic abstract String columnStartStation();\r\n\tpublic abstract String columnStatus();\r\n\tpublic abstract String columnTimeEfficiency();\r\n\tpublic abstract String columnTimeEfficiencyToolTip();\r\n\tpublic abstract String columnTitle();\r\n\tpublic abstract String columnType();\r\n\tpublic abstract String columnTypeID();\r\n\tpublic abstract String columnVolume();\r\n\tpublic abstract String contractCount();\r\n\tpublic abstract String courier();\r\n\tpublic abstract String excluded();\r\n\tpublic abstract String expand();\r\n\tpublic abstract String included();\r\n\tpublic abstract String itemExchange();\r\n\tpublic abstract String loan();\r\n\tpublic abstract String missing();\r\n\tpublic abstract String notAccepted();\r\n\tpublic abstract String packaged();\r\n\tpublic abstract String publicContract();\r\n\tpublic abstract String sellingPrice();\r\n\tpublic abstract String sellingAssets();\r\n\tpublic abstract String sold();\r\n\tpublic abstract String status();\r\n\tpublic abstract String statusArchived();\r\n\tpublic abstract String statusCancelled();\r\n\tpublic abstract String statusCompleted();\r\n\tpublic abstract String statusCompletedByContractor();\r\n\tpublic abstract String statusCompletedByIssuer();\r\n\tpublic abstract String statusDeleted();\r\n\tpublic abstract String statusFailed();\r\n\tpublic abstract String statusInProgress();\r\n\tpublic abstract String statusOutstanding();\r\n\tpublic abstract String statusRejected();\r\n\tpublic abstract String statusReversed();\r\n\tpublic abstract String statusUnknown();\r\n\tpublic abstract String title();\r\n\tpublic abstract String type();\r\n\tpublic abstract String unknown();\r\n\tpublic abstract String unpackaged();\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/TabsItems.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.i18n;\r\n\r\nimport java.util.Locale;\r\nimport uk.me.candle.translations.Bundle;\r\n\r\npublic abstract class TabsItems extends Bundle {\r\n\r\n\tpublic static TabsItems get() {\r\n\t\treturn BundleServiceFactory.getBundleService().get(TabsItems.class);\r\n\t}\r\n\r\n\tpublic TabsItems(final Locale locale) {\r\n\t\tsuper(locale);\r\n\t}\r\n\r\n\tpublic abstract String items();\r\n\tpublic abstract String columnName();\r\n\tpublic abstract String columnGroup();\r\n\tpublic abstract String columnCategory();\r\n\tpublic abstract String columnSlot();\r\n\tpublic abstract String columnChargeSize();\r\n\tpublic abstract String columnPriceBase();\r\n\tpublic abstract String columnPriceReprocessed();\r\n\tpublic abstract String columnPriceManufacturing();\r\n\tpublic abstract String columnPriceManufacturingToolTip();\r\n\tpublic abstract String columnMeta();\r\n\tpublic abstract String columnTech();\r\n\tpublic abstract String columnVolume();\r\n\tpublic abstract String columnVolumePackaged();\r\n\tpublic abstract String columnTypeID();\r\n}\r\n\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/TabsJobs.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\npublic abstract class TabsJobs extends Bundle {\n\n\tpublic static TabsJobs get() {\n\t\treturn BundleServiceFactory.getBundleService().get(TabsJobs.class);\n\t}\n\n\tpublic TabsJobs(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String active();\n\tpublic abstract String all();\n\tpublic abstract String bpc();\n\tpublic abstract String bpo();\n\tpublic abstract String completed();\n\tpublic abstract String count();\n\tpublic abstract String industry();\n\tpublic abstract String install();\n\tpublic abstract String inventionSuccess();\n\tpublic abstract String manufactureJobsValue();\n\tpublic abstract String no();\n\tpublic abstract String status();\n\tpublic abstract String columnState();\n\tpublic abstract String columnActivity();\n\tpublic abstract String columnName();\n\tpublic abstract String columnGroup();\n\tpublic abstract String columnOwner();\n\tpublic abstract String columnInstaller();\n\tpublic abstract String columnOwned();\n\tpublic abstract String columnOwnedToolTip();\n\tpublic abstract String columnCompletedCharacter();\n\tpublic abstract String columnLocation();\n\tpublic abstract String columnSystem();\n\tpublic abstract String columnConstellation();\n\tpublic abstract String columnRegion();\n\tpublic abstract String columnStartDate();\n\tpublic abstract String columnEndDate();\n\tpublic abstract String columnCompletedDate();\n\tpublic abstract String columnTimeLeft();\n\tpublic abstract String columnPauseDate();\n\tpublic abstract String columnRuns();\n\tpublic abstract String columnOutputCount();\n\tpublic abstract String columnOutputValue();\n\tpublic abstract String columnOutputVolume();\n\tpublic abstract String columnOutputVolumeToolTip();\n\tpublic abstract String columnOutputType();\n\tpublic abstract String columnOutputGroup();\n\tpublic abstract String columnOutputCategory();\n\tpublic abstract String columnBPO();\n\tpublic abstract String columnMaterialEfficiency();\n\tpublic abstract String columnTimeEfficiency();\n\tpublic abstract String columnCost();\n\tpublic abstract String columnJobID();\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/TabsJournal.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.i18n;\r\n\r\nimport java.util.Locale;\r\nimport uk.me.candle.translations.Bundle;\r\n\r\n\r\npublic abstract class TabsJournal extends Bundle {\r\n\r\n\tpublic static TabsJournal get() {\r\n\t\treturn BundleServiceFactory.getBundleService().get(TabsJournal.class);\r\n\t}\r\n\r\n\tpublic TabsJournal(final Locale locale) {\r\n\t\tsuper(locale);\r\n\t}\r\n\r\n\tpublic abstract String clearNew();\r\n\tpublic abstract String contextAllianceID();\r\n\tpublic abstract String contextCharacterID();\r\n\tpublic abstract String contextContractID();\r\n\tpublic abstract String contextCorporationID();\r\n\tpublic abstract String contextEveID();\r\n\tpublic abstract String contextIndustryJobID();\r\n\tpublic abstract String contextPlanetID();\r\n\tpublic abstract String contextStationID();\r\n\tpublic abstract String contextStructureID();\r\n\tpublic abstract String contextSystemID();\r\n\tpublic abstract String contextTransactionID();\r\n\tpublic abstract String contextTypeID();\r\n\tpublic abstract String contracts();\n\tpublic abstract String chart();\n\tpublic abstract String chartTotal();\n\tpublic abstract String chartTitle();\n\tpublic abstract String close();\n\tpublic abstract String findIn();\n\tpublic abstract String industryJobs();\n\tpublic abstract String noDataFound();\n\tpublic abstract String rattingIncome();\n\tpublic abstract String title();\n\tpublic abstract String total();\r\n\tpublic abstract String totalNegative();\r\n\tpublic abstract String totalPositive();\r\n\tpublic abstract String transactions();\r\n\tpublic abstract String columnAccountKey();\r\n\tpublic abstract String columnAmount();\r\n\tpublic abstract String columnBalance();\r\n\tpublic abstract String columnDate();\r\n\tpublic abstract String columnOwner();\r\n\tpublic abstract String columnOwnerName1();\r\n\tpublic abstract String columnOwnerName2();\r\n\tpublic abstract String columnReason();\r\n\tpublic abstract String columnRefType();\r\n\tpublic abstract String columnTags();\r\n\tpublic abstract String columnTaxAmount();\r\n\tpublic abstract String columnAdded();\r\n\tpublic abstract String columnAddedToolTip();\r\n\tpublic abstract String columnContextName();\r\n\tpublic abstract String columnContextType();\r\n\tpublic abstract String columnContextID();\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/TabsLoadout.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\npublic abstract class TabsLoadout extends Bundle {\n\n\tpublic static TabsLoadout get() {\n\t\treturn BundleServiceFactory.getBundleService().get(TabsLoadout.class);\n\t}\n\n\tpublic TabsLoadout(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String cancel();\n\tpublic abstract String collapse();\n\tpublic abstract String columnLocation();\n\tpublic abstract String columnName();\n\tpublic abstract String columnOwner();\n\tpublic abstract String columnSlot();\n\tpublic abstract String columnValue();\n\tpublic abstract String columnShip();\n\tpublic abstract String description();\n\tpublic abstract String empty();\n\tpublic abstract String expand();\n\tpublic abstract String export();\n\tpublic abstract String exportEft();\n\tpublic abstract String exportEveXml();\n\tpublic abstract String exportEveXmlAll();\n\tpublic abstract String exportEveXmlSelected();\n\tpublic abstract String exportTableData();\n\tpublic abstract String flagCargo();\n\tpublic abstract String flagDroneBay();\n\tpublic abstract String flagHighSlot();\n\tpublic abstract String flagLowSlot();\n\tpublic abstract String flagMediumSlot();\n\tpublic abstract String flagOther();\n\tpublic abstract String flagRigSlot();\n\tpublic abstract String flagSubSystem();\n\tpublic abstract String flagTotalValue();\n\tpublic abstract String name();\n\tpublic abstract String name1();\n\tpublic abstract String no();\n\tpublic abstract String no1();\n\tpublic abstract String oK();\n\tpublic abstract String owner();\n\tpublic abstract String ship();\n\tpublic abstract String ship1();\n\tpublic abstract String totalAll();\n\tpublic abstract String totalModules();\n\tpublic abstract String totalShip();\n\tpublic abstract String whitespace10(Object arg0);\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/TabsLoyaltyPoints.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\npublic abstract class TabsLoyaltyPoints extends Bundle {\n\n\tpublic static TabsLoyaltyPoints get() {\n\t\treturn BundleServiceFactory.getBundleService().get(TabsLoyaltyPoints.class);\n\t}\n\n\tpublic TabsLoyaltyPoints(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String loyaltyPoints();\n\tpublic abstract String columnOwner();\n\tpublic abstract String columnCorporationName();\n\tpublic abstract String columnLoyaltyPoints();\n\tpublic abstract String total();\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/TabsMaterials.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\npublic abstract class TabsMaterials extends Bundle {\n\n\tpublic static TabsMaterials get() {\n\t\treturn BundleServiceFactory.getBundleService().get(TabsMaterials.class);\n\t}\n\n\tpublic TabsMaterials(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String all();\n\tpublic abstract String collapse();\n\tpublic abstract String columnCount();\n\tpublic abstract String columnGroup();\n\tpublic abstract String columnLocation();\n\tpublic abstract String columnName();\n\tpublic abstract String columnPrice();\n\tpublic abstract String columnValue();\n\tpublic abstract String columnTypeID();\n\tpublic abstract String expand();\n\tpublic abstract String grandTotal();\n\tpublic abstract String includeCommodity();\n\tpublic abstract String includeMaterials();\n\tpublic abstract String includeOre();\n\tpublic abstract String includePI();\n\tpublic abstract String materials();\n\tpublic abstract String no();\n\tpublic abstract String summary();\n\tpublic abstract String total();\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/TabsMining.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.i18n;\r\n\r\nimport java.util.Locale;\r\nimport uk.me.candle.translations.Bundle;\r\n\r\n\r\npublic abstract class TabsMining extends Bundle {\r\n\r\n\tpublic static TabsMining get() {\r\n\t\treturn BundleServiceFactory.getBundleService().get(TabsMining.class);\r\n\t}\r\n\r\n\tpublic TabsMining(final Locale locale) {\r\n\t\tsuper(locale);\r\n\t}\r\n\r\n\tpublic abstract String average();\r\n\tpublic abstract String character();\r\n\tpublic abstract String corporation();\r\n\tpublic abstract String count();\r\n\tpublic abstract String extractions();\r\n\tpublic abstract String extractionsActiveSoon();\r\n\tpublic abstract String from();\r\n\tpublic abstract String grandTotal();\r\n\tpublic abstract String graphToolTip(Comparable<?> name, String isk, String date);\r\n\tpublic abstract String groupBasic(String group);\r\n\tpublic abstract String groupName(String group, String type);\r\n\tpublic abstract String groupTotal(String group);\r\n\tpublic abstract String includeZero();\r\n\tpublic abstract String miningGraph();\r\n\tpublic abstract String miningLog();\r\n\tpublic abstract String scaleLinear();\r\n\tpublic abstract String scaleLogarithmic();\r\n\tpublic abstract String show();\r\n\tpublic abstract String to();\r\n\tpublic abstract String totalCount();\r\n\tpublic abstract String totalReprocessed();\r\n\tpublic abstract String totalValue();\r\n\tpublic abstract String totalVolume();\r\n\tpublic abstract String valueOre();\r\n\tpublic abstract String valueReprocessed();\r\n\tpublic abstract String valueReprocessedMax();\r\n\tpublic abstract String volume();\r\n\tpublic abstract String columnDate();\r\n\tpublic abstract String columnName();\r\n\tpublic abstract String columnGroup();\r\n\tpublic abstract String columnCategory();\r\n\tpublic abstract String columnOwner();\r\n\tpublic abstract String columnLocation();\r\n\tpublic abstract String columnCount();\r\n\tpublic abstract String columnPriceOre();\r\n\tpublic abstract String columnPriceReprocessed();\r\n\tpublic abstract String columnPriceReprocessedToolTip();\r\n\tpublic abstract String columnPriceReprocessedMax();\r\n\tpublic abstract String columnPriceReprocessedMaxToolTip();\r\n\tpublic abstract String columnValueOre();\r\n\tpublic abstract String columnValueReprocessed();\r\n\tpublic abstract String columnValueReprocessedToolTip();\r\n\tpublic abstract String columnValueReprocessedMax();\r\n\tpublic abstract String columnValueReprocessedMaxToolTip();\r\n\tpublic abstract String columnVolume();\r\n\tpublic abstract String columnValuePerVolumeOre();\r\n\tpublic abstract String columnValuePerVolumeReprocessed();\r\n\tpublic abstract String columnValuePerVolumeReprocessedToolTip();\r\n\tpublic abstract String columnValuePerVolumeReprocessedMax();\r\n\tpublic abstract String columnValuePerVolumeReprocessedMaxToolTip();\r\n\tpublic abstract String columnCorporation();\r\n\tpublic abstract String columnForCorporation();\r\n\tpublic abstract String columnExtractionStartTime();\r\n\tpublic abstract String columnMoon();\r\n\tpublic abstract String columnChunkArrivalTime();\r\n\tpublic abstract String columnNaturalDecayTime();\r\n}"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/TabsNpcStanding.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\npublic abstract class TabsNpcStanding extends Bundle {\n\n\tpublic static TabsNpcStanding get() {\n\t\treturn BundleServiceFactory.getBundleService().get(TabsNpcStanding.class);\n\t}\n\n\tpublic TabsNpcStanding(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String npcStanding();\n\tpublic abstract String columnOwner();\n\tpublic abstract String columnFaction();\n\tpublic abstract String columnCorporation();\n\tpublic abstract String columnAgent();\n\tpublic abstract String columnAgentLevel();\n\tpublic abstract String columnAgentDivision();\n\tpublic abstract String columnAgentType();\n\tpublic abstract String columnType();\n\tpublic abstract String columnRawStanding();\n\tpublic abstract String columnRawStandingToolTip();\n\tpublic abstract String columnStanding();\n\tpublic abstract String columnStandingToolTip();\n\tpublic abstract String columnStandingMax();\n\tpublic abstract String columnStandingMaxToolTip();\n\tpublic abstract String columnLocation();\n\tpublic abstract String columnSecurity();\n\tpublic abstract String columnSystem();\n\tpublic abstract String columnConstellation();\n\tpublic abstract String columnRegion();\n\tpublic abstract String columnID();\n\tpublic abstract String typeAgent();\n\tpublic abstract String typeCorporation();\n\tpublic abstract String typeFaction();\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/TabsOrders.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\npublic abstract class TabsOrders extends Bundle {\n\n\tpublic static TabsOrders get() {\n\t\treturn BundleServiceFactory.getBundleService().get(TabsOrders.class);\n\t}\n\n\tpublic TabsOrders(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String activeBuyOrders();\n\tpublic abstract String activeSellOrders();\n\tpublic abstract String buy();\n\tpublic abstract String clearNew();\n\tpublic abstract String columnOrderType();\n\tpublic abstract String columnName();\n\tpublic abstract String columnGroup();\n\tpublic abstract String columnCategory();\n\tpublic abstract String columnVolumeRemain();\n\tpublic abstract String columnVolumeTotal();\n\tpublic abstract String columnPrice();\n\tpublic abstract String columnOutbidPrice();\n\tpublic abstract String columnOutbidPriceToolTip();\n\tpublic abstract String columnOutbidCount();\n\tpublic abstract String columnOutbidCountToolTip();\n\tpublic abstract String columnOutbidDelta();\n\tpublic abstract String columnOutbidDeltaToolTip();\n\tpublic abstract String columnEveUi();\n\tpublic abstract String columnEveUiToolTip();\n\tpublic abstract String columnBrokersFee();\n\tpublic abstract String columnBrokersFeeToolTip();\n\tpublic abstract String columnEdits();\n\tpublic abstract String columnEditsToolTip();\n\tpublic abstract String columnPriceReprocessed();\n\tpublic abstract String columnPriceManufacturing();\n\tpublic abstract String columnPriceManufacturingToolTip();\n\tpublic abstract String columnIssued();\n\tpublic abstract String columnIssuedToolTip();\n\tpublic abstract String columnIssuedFirst();\n\tpublic abstract String columnIssuedFirstToolTip();\n\tpublic abstract String columnExpires();\n\tpublic abstract String columnChanged();\n\tpublic abstract String columnChangedToolTip();\n\tpublic abstract String columnRange();\n\tpublic abstract String columnRemainingValue();\n\tpublic abstract String columnStatus();\n\tpublic abstract String columnMinimumQuantity();\n\tpublic abstract String columnOwner();\n\tpublic abstract String columnIssuedBy();\n\tpublic abstract String columnOwned();\n\tpublic abstract String columnOwnedToolTip();\n\tpublic abstract String columnWalletDivision();\n\tpublic abstract String columnLocation();\n\tpublic abstract String columnSystem();\n\tpublic abstract String columnConstellation();\n\tpublic abstract String columnRegion();\n\tpublic abstract String columnTransactionPrice();\n\tpublic abstract String columnTransactionPriceToolTip();\n\tpublic abstract String columnTransactionMargin();\n\tpublic abstract String columnTransactionMarginToolTip();\n\tpublic abstract String columnTransactionProfitDifference();\n\tpublic abstract String columnTransactionProfitDifferenceToolTip();\n\tpublic abstract String columnTransactionProfitPercent();\n\tpublic abstract String columnTransactionProfitPercentToolTip();\n\tpublic abstract String columnMarketPrice();\n\tpublic abstract String columnMarketPriceToolTip();\n\tpublic abstract String columnMarketPriceSellMin();\n\tpublic abstract String columnMarketPriceSellMinToolTip();\n\tpublic abstract String columnMarketPriceBuyMax();\n\tpublic abstract String columnMarketPriceBuyMaxToolTip();\n\tpublic abstract String columnMarketMargin();\n\tpublic abstract String columnMarketMarginToolTip();\n\tpublic abstract String columnMarketProfit();\n\tpublic abstract String columnMarketProfitToolTip();\n\tpublic abstract String columnVolume();\n\tpublic abstract String columnTypeID();\n\tpublic abstract String columnOrderID();\n\tpublic abstract String eveUiOpen();\n\tpublic abstract String lastEsiUpdateToolTip();\n\tpublic abstract String lastLogUpdateToolTip();\n\tpublic abstract String lastClipboardToolTip();\n\tpublic abstract String market();\n\tpublic abstract String marketLogTypeToolTip();\n\tpublic abstract String none();\n\tpublic abstract String ownerInvalidScopeMsg();\n\tpublic abstract String ownerInvalidScopeTitle();\n\tpublic abstract String ownerNotFoundMsg();\n\tpublic abstract String ownerNotFoundTitle();\n\tpublic abstract String rangeStation();\n\tpublic abstract String rangeSolarSystem();\n\tpublic abstract String rangeRegion();\n\tpublic abstract String rangeJump();\n\tpublic abstract String rangeJumps(String range);\n\tpublic abstract String sell();\n\tpublic abstract String sellOrderRangeToolTip();\n\tpublic abstract String sellOrderRangeLastToolTip();\n\tpublic abstract String sellOrderRangeSelcted(String selected);\n\tpublic abstract String status();\n\tpublic abstract String statusActive();\n\tpublic abstract String statusClosed();\n\tpublic abstract String statusFulfilled();\n\tpublic abstract String statusExpired();\n\tpublic abstract String statusPartiallyFulfilled();\n\tpublic abstract String statusCancelled();\n\tpublic abstract String statusPending();\n\tpublic abstract String statusCharacterDeleted();\n\tpublic abstract String statusUnknown();\n\tpublic abstract String totalSellOrders();\n\tpublic abstract String totalBuyOrders();\n\tpublic abstract String totalEscrow();\n\tpublic abstract String totalToCover();\n\tpublic abstract String unknownLocationsMsg();\n\tpublic abstract String unknownLocationsMsgLater();\n\tpublic abstract String unknownLocationsTitle();\n\tpublic abstract String updateNoActiveMsg();\n\tpublic abstract String updateNoActiveTitle();\n\tpublic abstract String updateOutbidEsi();\n\tpublic abstract String updateOutbidFileBuy();\n\tpublic abstract String updateOutbidFileSell();\n\tpublic abstract String updateOutbidWhen(String time);\n\tpublic abstract String updateOutbidUpdating();\n\tpublic abstract String updateTitle();\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/TabsOverview.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\npublic abstract class TabsOverview extends Bundle {\n\n\tpublic static TabsOverview get() {\n\t\treturn BundleServiceFactory.getBundleService().get(TabsOverview.class);\n\t}\n\n\tpublic TabsOverview(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String add();\n\tpublic abstract String addGroup();\n\tpublic abstract String average();\n\tpublic abstract String clear();\n\tpublic abstract String constellations();\n\tpublic abstract String deleteGroup();\n\tpublic abstract String deleteTheGroup(Object arg0);\n\tpublic abstract String filterShowing(int rowCount, int size, String filterName);\n\tpublic abstract String groups();\n\tpublic abstract String groupName();\n\tpublic abstract String loadFilter();\n\tpublic abstract String locations();\n\tpublic abstract String overview();\n\tpublic abstract String owner();\n\tpublic abstract String planets();\n\tpublic abstract String regions();\n\tpublic abstract String renameGroup();\n\tpublic abstract String stations();\n\tpublic abstract String systems();\n\tpublic abstract String totalCount();\n\tpublic abstract String totalReprocessed();\n\tpublic abstract String totalValue();\n\tpublic abstract String totalVolume();\n\tpublic abstract String view();\n\tpublic abstract String treemap();\n\tpublic abstract String treemapToolTip();\n\tpublic abstract String columnName();\n\tpublic abstract String columnSystem();\n\tpublic abstract String columnConstellation();\n\tpublic abstract String columnRegion();\n\tpublic abstract String columnSecurity();\n\tpublic abstract String columnVolume();\n\tpublic abstract String columnValue();\n\tpublic abstract String columnValuePerVolume();\n\tpublic abstract String columnCount();\n\tpublic abstract String columnAverageValue();\n\tpublic abstract String columnReprocessedValue();\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/TabsPriceChanges.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.i18n;\r\n\r\nimport java.util.Locale;\r\nimport uk.me.candle.translations.Bundle;\r\n\r\n\r\npublic abstract class TabsPriceChanges extends Bundle {\r\n\r\n\tpublic static TabsPriceChanges get() {\r\n\t\treturn BundleServiceFactory.getBundleService().get(TabsPriceChanges.class);\r\n\t}\r\n\r\n\tpublic TabsPriceChanges(final Locale locale) {\r\n\t\tsuper(locale);\r\n\t}\r\n\r\n\tpublic abstract String title();\r\n\tpublic abstract String from();\r\n\tpublic abstract String to();\r\n\tpublic abstract String resetDates();\r\n\tpublic abstract String owned();\r\n\tpublic abstract String columnName();\r\n\tpublic abstract String columnGroup();\r\n\tpublic abstract String columnCategory();\r\n\tpublic abstract String columnCount();\r\n\tpublic abstract String columnCountToolTip();\r\n\tpublic abstract String columnPriceFrom();\r\n\tpublic abstract String columnPriceTo();\r\n\tpublic abstract String columnChangePercent();\r\n\tpublic abstract String columnChangePercentToolTip();\r\n\tpublic abstract String columnChange();\r\n\tpublic abstract String columnChangeToolTip();\r\n\tpublic abstract String columnTotal();\r\n\tpublic abstract String columnTotalToolTip();\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/TabsPriceHistory.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.i18n;\r\n\r\nimport java.util.Locale;\r\nimport uk.me.candle.translations.Bundle;\r\n\r\n\r\npublic abstract class TabsPriceHistory extends Bundle {\r\n\r\n\tpublic static TabsPriceHistory get() {\r\n\t\treturn BundleServiceFactory.getBundleService().get(TabsPriceHistory.class);\r\n\t}\r\n\r\n\tpublic TabsPriceHistory(final Locale locale) {\r\n\t\tsuper(locale);\r\n\t}\r\n\r\n\tpublic abstract String add();\r\n\tpublic abstract String addTitle();\r\n\tpublic abstract String clear();\r\n\tpublic abstract String deleteHistorySet();\r\n\tpublic abstract String deleteHistorySets(int size);\r\n\tpublic abstract String edit();\r\n\tpublic abstract String enterName();\r\n\tpublic abstract String from();\r\n\tpublic abstract String graphToolTip(Comparable<?> name, String isk, String date);\r\n\tpublic abstract String includeZero();\r\n\tpublic abstract String load();\r\n\tpublic abstract String manage();\r\n\tpublic abstract String manageTitle();\r\n\tpublic abstract String maxItemsMsg(int maxItems);\r\n\tpublic abstract String merge();\r\n\tpublic abstract String mergeMax(int maxItem);\r\n\tpublic abstract String overwrite();\r\n\tpublic abstract String remove();\r\n\tpublic abstract String rename();\r\n\tpublic abstract String save();\r\n\tpublic abstract String saveTitle();\r\n\tpublic abstract String scaleLinear();\r\n\tpublic abstract String scaleLogarithmic();\r\n\tpublic abstract String sourcejEveAssets();\r\n\tpublic abstract String sourcezKillboard();\r\n\tpublic abstract String title();\r\n\tpublic abstract String to();\r\n\tpublic abstract String updateTitle();\r\n\tpublic abstract String updatingMsg();\r\n\tpublic abstract String updatingTitle();\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/TabsReprocessed.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.i18n;\r\n\r\nimport java.util.Locale;\r\nimport uk.me.candle.translations.Bundle;\r\n\r\n\r\npublic abstract class TabsReprocessed extends Bundle {\r\n\r\n\tpublic static TabsReprocessed get() {\r\n\t\treturn BundleServiceFactory.getBundleService().get(TabsReprocessed.class);\r\n\t}\r\n\r\n\tpublic TabsReprocessed(final Locale locale) {\r\n\t\tsuper(locale);\r\n\t}\r\n\r\n\tpublic abstract String addItem();\r\n\tpublic abstract String batch();\r\n\tpublic abstract String removeAll();\r\n\tpublic abstract String collapse();\r\n\tpublic abstract String columnName();\r\n\tpublic abstract String columnPrice();\r\n\tpublic abstract String columnQuantity100();\r\n\tpublic abstract String columnQuantity100ToolTip();\r\n\tpublic abstract String columnQuantityMax();\r\n\tpublic abstract String columnQuantityMaxToolTip();\r\n\tpublic abstract String columnQuantitySkill();\r\n\tpublic abstract String columnQuantitySkillToolTip();\r\n\tpublic abstract String columnTotalBatch();\r\n\tpublic abstract String columnTotalName();\r\n\tpublic abstract String columnTotalPrice();\r\n\tpublic abstract String columnTotalValue();\r\n\tpublic abstract String columnTypeID();\r\n\tpublic abstract String columnValueDifference();\r\n\tpublic abstract String columnValueMax();\r\n\tpublic abstract String columnValueSkill();\r\n\tpublic abstract String expand();\r\n\tpublic abstract String grandTotal();\r\n\tpublic abstract String importButton();\r\n\tpublic abstract String multiplierSign();\r\n\tpublic abstract String price();\r\n\tpublic abstract String remove();\r\n\tpublic abstract String selectItem();\r\n\tpublic abstract String title();\r\n\tpublic abstract String total();\r\n\tpublic abstract String value();\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/TabsRouting.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\npublic abstract class TabsRouting extends Bundle {\n\n\tpublic static TabsRouting get() {\n\t\treturn BundleServiceFactory.getBundleService().get(TabsRouting.class);\n\t}\n\n\tpublic TabsRouting(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String add();\n\tpublic abstract String addStation();\n\tpublic abstract String addStationSelect();\n\tpublic abstract String addStationTitle();\n\tpublic abstract String addSystem();\n\tpublic abstract String addSystemSelect();\n\tpublic abstract String addSystemTitle();\n\tpublic abstract String algorithm();\n\tpublic abstract String allowed(Object arg0, Object arg1);\n\tpublic abstract String avoid();\n\tpublic abstract String avoidAdd();\n\tpublic abstract String avoidClear();\n\tpublic abstract String avoidLoad();\n\tpublic abstract String avoidManage();\n\tpublic abstract String avoidNone();\n\tpublic abstract String avoidRemove();\n\tpublic abstract String avoidSave();\n\tpublic abstract String calculate();\n\tpublic abstract String cancel();\n\tpublic abstract String checked();\n\tpublic abstract String deleteAvoids(int size);\n\tpublic abstract String deleteAvoid();\n\tpublic abstract String emptyResult();\n\tpublic abstract String enterAvoidName();\n\tpublic abstract String error();\n\tpublic abstract String filteredAssets();\n\tpublic abstract String filters();\n\tpublic abstract String filtersTab();\n\tpublic abstract String importOptionsAll(int count);\n\tpublic abstract String importOptionsOverwriteHelp();\n\tpublic abstract String importOptionsRenameHelp();\n\tpublic abstract String importOptionsSkipHelp();\n\tpublic abstract String mergeAvoids();\n\tpublic abstract String manageFiltersTitle();\n\tpublic abstract String noSystems();\n\tpublic abstract String noSystemsTitle();\n\tpublic abstract String ok();\n\tpublic abstract String overviewGroup(Object arg0);\n\tpublic abstract String overwriteAvoid();\n\tpublic abstract String remove();\n\tpublic abstract String renameAvoid();\n\tpublic abstract String resultArrow();\n\tpublic abstract String resultEdit();\n\tpublic abstract String resultEditAvoid(String avoid);\n\tpublic abstract String resultEditHelp();\n\tpublic abstract String resultEditJumps(int jumps);\n\tpublic abstract String resultEditSecurity(String security);\n\tpublic abstract String resultEditTitle();\n\tpublic abstract String resultEdited();\n\tpublic abstract String resultEmpty();\n\tpublic abstract String resultExport();\n\tpublic abstract String resultImport();\n\tpublic abstract String resultImportIDs();\n\tpublic abstract String resultImportNames();\n\tpublic abstract String resultImportRoute();\n\tpublic abstract String resultImportRouteEmpty();\n\tpublic abstract String resultImportRouteInvalid();\n\tpublic abstract String resultImportText();\n\tpublic abstract String resultImportXml();\n\tpublic abstract String resultImported();\n\tpublic abstract String resultLoad();\n\tpublic abstract String resultManage();\n\tpublic abstract String resultManageTitle();\n\tpublic abstract String resultOverwrite();\n\tpublic abstract String resultSave();\n\tpublic abstract String resultSelectRoutes();\n\tpublic abstract String resultTabFull();\n\tpublic abstract String resultTabInfo();\n\tpublic abstract String resultTabShort();\n\tpublic abstract String resultText(String name, int jumps, int waypoints, String security, String avoid, String time);\n\tpublic abstract String resultUiFail();\n\tpublic abstract String resultUiOk();\n\tpublic abstract String resultUiWaypoints();\n\tpublic abstract String resultUnknownValue();\n\tpublic abstract String resultUntitled();\n\tpublic abstract String routeDeleteMsg(int size);\n\tpublic abstract String routeDeleteTitle();\n\tpublic abstract String routeOverwrite();\n\tpublic abstract String routeRenameTitle();\n\tpublic abstract String routeSaveTitle();\n\tpublic abstract String routeSaveMsg();\n\tpublic abstract String routingTab();\n\tpublic abstract String routingTitle();\n\tpublic abstract String saveFilterMsg();\n\tpublic abstract String saveFilterTitle();\n\tpublic abstract String security();\n\tpublic abstract String source();\n\tpublic abstract String startEmpty();\n\tpublic abstract String startSystem();\n\tpublic abstract String total(Object arg0, Object arg1);\n\tpublic abstract String unchecked();\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/TabsSkills.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\n\npublic abstract class TabsSkills extends Bundle {\n\n\tpublic static TabsSkills get() {\n\t\treturn BundleServiceFactory.getBundleService().get(TabsSkills.class);\n\t}\n\n\tpublic TabsSkills(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String add();\n\tpublic abstract String deleteSkillPlan();\n\tpublic abstract String deleteSkillPlans(int size);\n\tpublic abstract String enterName();\n\tpublic abstract String manage();\n\tpublic abstract String manageTitle();\n\tpublic abstract String merge();\n\tpublic abstract String noValidSkills();\n\tpublic abstract String overwrite();\n\tpublic abstract String rename();\n\tpublic abstract String skillPlans();\n\tpublic abstract String skills();\n\tpublic abstract String skillsOverview();\n\tpublic abstract String tableToolTipCompleted();\n\tpublic abstract String tableToolTipMissing(int missing);\n\tpublic abstract String tableToolTipSkill(String name, int approximateLevel, int targetLevel, String percent);\n\tpublic abstract String tableToolTipTruncated();\n\tpublic abstract String total();\n\tpublic abstract String columnSkill();\n\tpublic abstract String columnGroup();\n\tpublic abstract String columnCharacter();\n\tpublic abstract String columnActive();\n\tpublic abstract String columnTrained();\n\tpublic abstract String columnTotal();\n\tpublic abstract String columnUnallocated();\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/TabsSlots.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\npublic abstract class TabsSlots extends Bundle {\n\n\tpublic static TabsSlots get() {\n\t\treturn BundleServiceFactory.getBundleService().get(TabsSlots.class);\n\t}\n\n\tpublic TabsSlots(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String contractCharacter();\n\tpublic abstract String contractCorporation();\n\tpublic abstract String grandTotal();\n\tpublic abstract String manufacturing();\n\tpublic abstract String marketOrders();\n\tpublic abstract String reactions();\n\tpublic abstract String research();\n\tpublic abstract String tableHeader();\n\tpublic abstract String tableHeaderIcon();\n\tpublic abstract String tableHeaderText();\n\tpublic abstract String title();\n\tpublic abstract String columnOwner();\n\tpublic abstract String columnManufacturingDone();\n\tpublic abstract String columnManufacturingFree();\n\tpublic abstract String columnManufacturingActive();\n\tpublic abstract String columnManufacturingMax();\n\tpublic abstract String columnResearchDone();\n\tpublic abstract String columnResearchFree();\n\tpublic abstract String columnResearchActive();\n\tpublic abstract String columnResearchMax();\n\tpublic abstract String columnReactionsFree();\n\tpublic abstract String columnReactionsDone();\n\tpublic abstract String columnReactionsActive();\n\tpublic abstract String columnReactionsMax();\n\tpublic abstract String columnMarketOrdersFree();\n\tpublic abstract String columnMarketOrdersActive();\n\tpublic abstract String columnMarketOrdersMax();\n\tpublic abstract String columnContractCharacterFree();\n\tpublic abstract String columnContractCharacterActive();\n\tpublic abstract String columnContractCharacterMax();\n\tpublic abstract String columnContractCorporationFree();\n\tpublic abstract String columnContractCorporationActive();\n\tpublic abstract String columnContractCorporationMax();\n\tpublic abstract String columnCurrentShip();\n\tpublic abstract String columnCurrentStation();\n\tpublic abstract String columnCurrentSystem();\n\tpublic abstract String columnCurrentConstellation();\n\tpublic abstract String columnCurrentRegion();\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/TabsStockpile.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\n\npublic abstract class TabsStockpile extends Bundle {\n\n\tpublic static TabsStockpile get() {\n\t\treturn BundleServiceFactory.getBundleService().get(TabsStockpile.class);\n\t}\n\n\tpublic TabsStockpile(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String addBlueprintMsg();\n\tpublic abstract String addBlueprintTitle();\n\tpublic abstract String addFilter();\n\tpublic abstract String addFormulaMsg();\n\tpublic abstract String addFormulaTitle();\n\tpublic abstract String addItem();\n\tpublic abstract String addLocation();\n\tpublic abstract String addStockpileItem();\n\tpublic abstract String addStockpileTitle();\n\tpublic abstract String addToNewStockpile();\n\tpublic abstract String addToStockpile();\n\tpublic abstract String blueprintFacility();\n\tpublic abstract String blueprintMe();\n\tpublic abstract String blueprintRigs();\n\tpublic abstract String blueprintSecurity();\n\tpublic abstract String blueprintType();\n\tpublic abstract String blueprints();\n\tpublic abstract String cancel();\n\tpublic abstract String clipboardStockpile();\n\tpublic abstract String cloneStockpile();\n\tpublic abstract String cloneStockpileFilter();\n\tpublic abstract String cloneStockpileTitle();\n\tpublic abstract String close();\n\tpublic abstract String collapse();\n\tpublic abstract String constellation();\n\tpublic abstract String container();\n\tpublic abstract String containerIncludeSubs();\n\tpublic abstract String containerIncludeSubsToolTip();\n\tpublic abstract String copy();\n\tpublic abstract String countMinimum();\n\tpublic abstract String csv();\n\tpublic abstract String delete();\n\tpublic abstract String deleteItem();\n\tpublic abstract String deleteItemTitle();\n\tpublic abstract String deleteItems(int size);\n\tpublic abstract String deleteStockpile();\n\tpublic abstract String deleteStockpileTitle();\n\tpublic abstract String deleteStockpileMsg(int count);\n\tpublic abstract String duplicate();\n\tpublic abstract String edit();\n\tpublic abstract String editCell();\n\tpublic abstract String editGroup();\n\tpublic abstract String editItem();\n\tpublic abstract String editStockpile();\n\tpublic abstract String editStockpileFilter();\n\tpublic abstract String editStockpileItem();\n\tpublic abstract String editStockpileTitle();\n\tpublic abstract String estimatedMarketValue();\n\tpublic abstract String eveMultibuy();\n\tpublic abstract String eveUiOpen();\n\tpublic abstract String expand();\n\tpublic abstract String exportStockpilesXml();\n\tpublic abstract String exportStockpilesText();\n\tpublic abstract String filters();\n\tpublic abstract String flag();\n\tpublic abstract String flagIncludeSubs();\n\tpublic abstract String flagIncludeSubsToolTip();\n\tpublic abstract String getShoppingList();\n\tpublic abstract String groupAddEmpty();\n\tpublic abstract String groupAddExist();\n\tpublic abstract String groupAddName();\n\tpublic abstract String groupAddNew();\n\tpublic abstract String groupAddTitle();\n\tpublic abstract String groupCollapse();\n\tpublic abstract String groupExpand();\n\tpublic abstract String groupMenu();\n\tpublic abstract String groupRenameExist();\n\tpublic abstract String groupRenameTitle();\n\tpublic abstract String groupShoppingListMsg();\n\tpublic abstract String groupShoppingListTitle();\n\tpublic abstract String groups();\n\tpublic abstract String hideStockpile();\n\tpublic abstract String importButton();\n\tpublic abstract String importEveXml();\n\tpublic abstract String importStockpilesText();\n\tpublic abstract String importText();\n\tpublic abstract String importTextFailedMsg();\n\tpublic abstract String importStockpilesXml();\n\tpublic abstract String importOptionsAll(int count);\n\tpublic abstract String importXmlFailedMsg();\n\tpublic abstract String importFailedTitle();\n\tpublic abstract String importOptions();\n\tpublic abstract String importOptionsAdd();\n\tpublic abstract String importOptionsAddHelp();\n\tpublic abstract String importOptionsKeep();\n\tpublic abstract String importOptionsKeepHelp();\n\tpublic abstract String importOptionsMerge();\n\tpublic abstract String importOptionsMergeHelp();\n\tpublic abstract String importOptionsNew();\n\tpublic abstract String importOptionsNewHelp();\n\tpublic abstract String importOptionsOverwrite();\n\tpublic abstract String importOptionsOverwriteHelp();\n\tpublic abstract String importOptionsRename();\n\tpublic abstract String importOptionsRenameHelp();\n\tpublic abstract String importOptionsSkip();\n\tpublic abstract String importOptionsSkipHelp();\n\tpublic abstract String importOptionsTemplate();\n\tpublic abstract String importOptionsTemplateHelp();\n\tpublic abstract String include();\n\tpublic abstract String includeCount(int i);\n\tpublic abstract String includeHelp();\n\tpublic abstract String includeAssets();\n\tpublic abstract String includeAssetsTip();\n\tpublic abstract String includeBuyOrders();\n\tpublic abstract String includeBuyOrdersTip();\n\tpublic abstract String includeBuyTransactions();\n\tpublic abstract String includeBuyTransactionsTip();\n\tpublic abstract String includeJobs();\n\tpublic abstract String includeJobsTip();\n\tpublic abstract String includeSellOrders();\n\tpublic abstract String includeSellOrdersTip();\n\tpublic abstract String includeSellTransactions();\n\tpublic abstract String includeSellTransactionsTip();\n\tpublic abstract String includeBuyingContracts();\n\tpublic abstract String includeBuyingContractsTip();\n\tpublic abstract String includeBoughtContracts();\n\tpublic abstract String includeBoughtContractsTip();\n\tpublic abstract String includeSellingContracts();\n\tpublic abstract String includeSellingContractsTip();\n\tpublic abstract String includeSoldContracts();\n\tpublic abstract String includeSoldContractsTip();\n\tpublic abstract String item();\n\tpublic abstract String items();\n\tpublic abstract String itemsMissing();\n\tpublic abstract String itemsOwned();\n\tpublic abstract String itemsRequired();\n\tpublic abstract String itemsShoppingList();\n\tpublic abstract String jobsDays();\n\tpublic abstract String jobsDaysLess();\n\tpublic abstract String jobsDaysMore();\n\tpublic abstract String jobsDaysTip();\n\tpublic abstract String jobsDaysWarning();\n\tpublic abstract String location();\n\tpublic abstract String marketDetailsOwnerToolTip();\n\tpublic abstract String match();\n\tpublic abstract String matchAll();\n\tpublic abstract String matchAllTip();\n\tpublic abstract String matchExclude();\n\tpublic abstract String matchInclude();\n\tpublic abstract String materialsManufacturing();\n\tpublic abstract String materialsReaction();\n\tpublic abstract String me();\n\tpublic abstract String multiple();\n\tpublic abstract String multiplier();\n\tpublic abstract String multiplierIgnore();\n\tpublic abstract String multiplierSign();\n\tpublic abstract String myLocations();\n\tpublic abstract String name();\n\tpublic abstract String needed();\n\tpublic abstract String newStockpile();\n\tpublic abstract String noLocationsFound();\n\tpublic abstract String none();\n\tpublic abstract String nothingNeeded();\n\tpublic abstract String now();\n\tpublic abstract String ok();\n\tpublic abstract String original();\n\tpublic abstract String owner();\n\tpublic abstract String percent();\n\tpublic abstract String percentFull();\n\tpublic abstract String percentIgnore();\n\tpublic abstract String planet();\n\tpublic abstract String region();\n\tpublic abstract String remove();\n\tpublic abstract String renameStockpileTitle();\n\tpublic abstract String runs();\n\tpublic abstract String selectFits();\n\tpublic abstract String selectGroup();\n\tpublic abstract String selectStockpiles();\n\tpublic abstract String shoppingList();\n\tpublic abstract String showHidden();\n\tpublic abstract String showHide();\n\tpublic abstract String showStockpiles();\n\tpublic abstract String showSubpileTree();\n\tpublic abstract String shownValueNeeded();\n\tpublic abstract String shownValueNow();\n\tpublic abstract String shownVolumeNeeded();\n\tpublic abstract String shownVolumeNow();\n\tpublic abstract String singleton();\n\tpublic abstract String source();\n\tpublic abstract String spreadsheet();\n\tpublic abstract String station();\n\tpublic abstract String stockpile();\n\tpublic abstract String stockpileAvailable();\n\tpublic abstract String stockpileLocation();\n\tpublic abstract String stockpileOwner();\n\tpublic abstract String stockpileShoppingList();\n\tpublic abstract String subpileShoppingList();\n\tpublic abstract String subpiles();\n\tpublic abstract String system();\n\tpublic abstract String totalStockpile();\n\tpublic abstract String totalToHaul();\n\tpublic abstract String universe();\n\tpublic abstract String columnName();\n\tpublic abstract String columnGroup();\n\tpublic abstract String columnCategory();\n\tpublic abstract String columnSlot();\n\tpublic abstract String columnChargeSize();\n\tpublic abstract String columnMeta();\n\tpublic abstract String columnEveUi();\n\tpublic abstract String columnEveUiToolTip();\n\tpublic abstract String columnCountNow();\n\tpublic abstract String columnCountNowInventory();\n\tpublic abstract String columnCountNowBuyOrders();\n\tpublic abstract String columnCountNowBuyTransactions();\n\tpublic abstract String columnCountNowSellOrders();\n\tpublic abstract String columnCountNowSellTransactions();\n\tpublic abstract String columnCountNowJobs();\n\tpublic abstract String columnCountNowBuyingContracts();\n\tpublic abstract String columnCountNowBoughtContracts();\n\tpublic abstract String columnCountNowSellingContracts();\n\tpublic abstract String columnCountNowSoldContracts();\n\tpublic abstract String columnCountNeeded();\n\tpublic abstract String columnCountMinimum();\n\tpublic abstract String columnCountMinimumMultiplied();\n\tpublic abstract String columnPercentNeeded();\n\tpublic abstract String columnPrice();\n\tpublic abstract String columnPriceToolTip();\n\tpublic abstract String columnPriceSellMin();\n\tpublic abstract String columnPriceSellMinToolTip();\n\tpublic abstract String columnPriceBuyMax();\n\tpublic abstract String columnPriceBuyMaxToolTip();\n\tpublic abstract String columnPriceTransactionAverage();\n\tpublic abstract String columnPriceTransactionAverageToolTip();\n\tpublic abstract String columnTags();\n\tpublic abstract String columnValueNow();\n\tpublic abstract String columnValueNeeded();\n\tpublic abstract String columnVolumeNow();\n\tpublic abstract String columnVolumeNeeded();\n\tpublic abstract String getFilterStockpileName();\n\tpublic abstract String getFilterStockpileOwner();\n\tpublic abstract String getFilterStockpileLocation();\n\tpublic abstract String getFilterStockpileFlag();\n\tpublic abstract String getFilterStockpileContainer();\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/TabsTracker.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.i18n;\r\n\r\nimport java.util.Locale;\r\nimport uk.me.candle.translations.Bundle;\r\n\r\n\r\npublic abstract class TabsTracker extends Bundle {\r\n\r\n\tpublic static TabsTracker get() {\r\n\t\treturn BundleServiceFactory.getBundleService().get(TabsTracker.class);\r\n\t}\r\n\r\n\tpublic TabsTracker(final Locale locale) {\r\n\t\tsuper(locale);\r\n\t}\r\n\r\n\tpublic abstract String all();\r\n\tpublic abstract String allProfiles();\r\n\tpublic abstract String assets();\r\n\tpublic abstract String assetsFilters();\r\n\tpublic abstract String cancel();\r\n\tpublic abstract String characterCorporations();\r\n\tpublic abstract String characterWallet();\r\n\tpublic abstract String checkAllLocationsMsg();\r\n\tpublic abstract String checkAllLocationsTitle();\r\n\tpublic abstract String clear();\r\n\tpublic abstract String contractCollateral();\r\n\tpublic abstract String contractValue();\r\n\tpublic abstract String corporationWallet();\r\n\tpublic abstract String date();\r\n\tpublic abstract String day1();\r\n\tpublic abstract String delete();\r\n\tpublic abstract String deleteSelected();\r\n\tpublic abstract String division(String id);\r\n\tpublic abstract String edit();\r\n\tpublic abstract String empty();\r\n\tpublic abstract String enterNewValue();\r\n\tpublic abstract String error();\r\n\tpublic abstract String escrows();\r\n\tpublic abstract String escrowsToCover();\r\n\tpublic abstract String filterTitle();\r\n\tpublic abstract String from();\r\n\tpublic abstract String grandTotal();\r\n\tpublic abstract String help();\r\n\tpublic abstract String helpBugData();\r\n\tpublic abstract String helpBugDataToolTip();\r\n\tpublic abstract String helpLegacyData();\r\n\tpublic abstract String helpLegacyDataToolTip();\r\n\tpublic abstract String helpNewData();\r\n\tpublic abstract String helpNewDataToolTip();\r\n\tpublic abstract String implants();\r\n\tpublic abstract String importFile();\r\n\tpublic abstract String importFileImport();\r\n\tpublic abstract String importFileInvalidMsg();\r\n\tpublic abstract String importFileOptionsKeep();\r\n\tpublic abstract String importFileOptionsMsg();\r\n\tpublic abstract String importFileOptionsOverwrite();\r\n\tpublic abstract String importFileOptionsReplace();\r\n\tpublic abstract String importFileTitle();\r\n\tpublic abstract String includeZero();\r\n\tpublic abstract String invalid();\r\n\tpublic abstract String invalidNumberMsg();\r\n\tpublic abstract String invalidNumberTitle();\r\n\tpublic abstract String knownLocations();\r\n\tpublic abstract String manufacturing();\r\n\tpublic abstract String month1();\r\n\tpublic abstract String months3();\r\n\tpublic abstract String months6();\r\n\tpublic abstract String newSelected();\r\n\tpublic abstract String noDataFound();\r\n\tpublic abstract String note();\r\n\tpublic abstract String notesAdd();\r\n\tpublic abstract String notesDeleteMsg(String note);\r\n\tpublic abstract String notesDeleteTitle();\r\n\tpublic abstract String notesEditMsg();\r\n\tpublic abstract String notesEditTitle();\r\n\tpublic abstract String ok();\r\n\tpublic abstract String other();\r\n\tpublic abstract String quickDate();\r\n\tpublic abstract String reset();\r\n\tpublic abstract String search();\r\n\tpublic abstract String scaleLinear();\r\n\tpublic abstract String scaleLogarithmic();\r\n\tpublic abstract String selectDivision();\r\n\tpublic abstract String selectFlag();\r\n\tpublic abstract String selectLocation();\r\n\tpublic abstract String selectOwner();\r\n\tpublic abstract String selectionDate();\r\n\tpublic abstract String selectionIsk();\r\n\tpublic abstract String selectionNote();\r\n\tpublic abstract String selectionShortDate();\r\n\tpublic abstract String selectionShortIsk();\r\n\tpublic abstract String selectionShortNote();\r\n\tpublic abstract String sellOrders();\r\n\tpublic abstract String show();\r\n\tpublic abstract String skillPointFilters();\r\n\tpublic abstract String skillPointValue();\r\n\tpublic abstract String skillPoints();\r\n\tpublic abstract String statusAssets();\r\n\tpublic abstract String statusBalance();\r\n\tpublic abstract String statusContractCollateral();\r\n\tpublic abstract String statusContractValue();\r\n\tpublic abstract String statusEscrows();\r\n\tpublic abstract String statusEscrowsToCover();\r\n\tpublic abstract String statusImplants();\r\n\tpublic abstract String statusManufacturing();\r\n\tpublic abstract String statusSellOrders();\r\n\tpublic abstract String statusSkillPointValue();\r\n\tpublic abstract String statusTotal();\r\n\tpublic abstract String title();\r\n\tpublic abstract String to();\r\n\tpublic abstract String total();\r\n\tpublic abstract String unknownLocations();\r\n\tpublic abstract String walletBalance();\r\n\tpublic abstract String walletBalanceFilters();\r\n\tpublic abstract String week1();\r\n\tpublic abstract String week2();\r\n\tpublic abstract String year1();\r\n\tpublic abstract String years2();\r\n\r\n\tpublic abstract String columnShow();\r\n\tpublic abstract String columnName();\r\n\tpublic abstract String columnMinimum();\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/TabsTransaction.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.i18n;\r\n\r\nimport java.util.Locale;\r\nimport uk.me.candle.translations.Bundle;\r\n\r\npublic abstract class TabsTransaction extends Bundle {\r\n\r\n\tpublic static TabsTransaction get() {\r\n\t\treturn BundleServiceFactory.getBundleService().get(TabsTransaction.class);\r\n\t}\r\n\r\n\tpublic TabsTransaction(final Locale locale) {\r\n\t\tsuper(locale);\r\n\t}\r\n\r\n\tpublic abstract String bothAvg();\r\n\tpublic abstract String bothCount();\r\n\tpublic abstract String bothTitle();\r\n\tpublic abstract String bothTotal();\r\n\tpublic abstract String buy();\r\n\tpublic abstract String buyAvg();\r\n\tpublic abstract String buyCount();\r\n\tpublic abstract String buyTitle();\r\n\tpublic abstract String buyTotal();\r\n\tpublic abstract String clearNew();\r\n\tpublic abstract String corporation();\r\n\tpublic abstract String personal();\r\n\tpublic abstract String sell();\r\n\tpublic abstract String sellAvg();\r\n\tpublic abstract String sellCount();\r\n\tpublic abstract String sellTitle();\r\n\tpublic abstract String sellTotal();\r\n\tpublic abstract String title();\r\n\tpublic abstract String columnTransactionType();\r\n\tpublic abstract String columnName();\r\n\tpublic abstract String columnGroup();\r\n\tpublic abstract String columnCategory();\r\n\tpublic abstract String columnQuantity();\r\n\tpublic abstract String columnPrice();\r\n\tpublic abstract String columnTax();\r\n\tpublic abstract String columnClientName();\r\n\tpublic abstract String columnStationName();\r\n\tpublic abstract String columnSystem();\r\n\tpublic abstract String columnConstellation();\r\n\tpublic abstract String columnRegion();\r\n\tpublic abstract String columnTags();\r\n\tpublic abstract String columnTransactionPrice();\r\n\tpublic abstract String columnTransactionPriceToolTip();\r\n\tpublic abstract String columnTransactionMargin();\r\n\tpublic abstract String columnTransactionMarginToolTip();\r\n\tpublic abstract String columnTransactionProfitDifference();\r\n\tpublic abstract String columnTransactionProfitDifferenceToolTip();\r\n\tpublic abstract String columnTransactionProfitPercent();\r\n\tpublic abstract String columnTransactionProfitPercentToolTip();\r\n\tpublic abstract String columnTransactionFor();\r\n\tpublic abstract String columnValue();\r\n\tpublic abstract String columnTransactionDate();\r\n\tpublic abstract String columnOwner();\r\n\tpublic abstract String columnLocation();\r\n\tpublic abstract String columnAccountKey();\r\n\tpublic abstract String columnAdded();\r\n\tpublic abstract String columnAddedToolTip();\r\n\tpublic abstract String columnVolume();\r\n\tpublic abstract String columnTransactionID();\r\n\r\n}"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/TabsTree.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\npublic abstract class TabsTree extends Bundle {\n\n\tpublic static TabsTree get() {\n\t\treturn BundleServiceFactory.getBundleService().get(TabsTree.class);\n\t}\n\n\tpublic TabsTree(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String categories();\n\tpublic abstract String collapse();\n\tpublic abstract String expand();\n\tpublic abstract String locationAssetSafety();\n\tpublic abstract String locationClones();\n\tpublic abstract String locationContracts();\n\tpublic abstract String locationDeliveries();\n\tpublic abstract String locationItemHangar();\n\tpublic abstract String locationMarketOrders();\n\tpublic abstract String locationShipHangar();\n\tpublic abstract String locations();\n\tpublic abstract String title();\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/i18n/TabsValues.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\nimport java.util.Locale;\nimport uk.me.candle.translations.Bundle;\n\npublic abstract class TabsValues extends Bundle {\n\n\tpublic static TabsValues get() {\n\t\treturn BundleServiceFactory.getBundleService().get(TabsValues.class);\n\t}\n\n\tpublic TabsValues(final Locale locale) {\n\t\tsuper(locale);\n\t}\n\n\tpublic abstract String columnAssets();\n\tpublic abstract String columnBestAsset();\n\tpublic abstract String columnBestModule();\n\tpublic abstract String columnBestShip();\n\tpublic abstract String columnBestShipFitted();\n\tpublic abstract String columnContractCollateral();\n\tpublic abstract String columnContractValue();\n\tpublic abstract String columnEscrows();\n\tpublic abstract String columnEscrowsToCover();\n\tpublic abstract String columnManufacturing();\n\tpublic abstract String columnOwner();\n\tpublic abstract String columnSellOrders();\n\tpublic abstract String columnSkillPointValue();\n\tpublic abstract String columnTotal();\n\tpublic abstract String columnWalletBalance();\n\tpublic abstract String columnWalletDivision1();\n\tpublic abstract String columnWalletDivision2();\n\tpublic abstract String columnWalletDivision3();\n\tpublic abstract String columnWalletDivision4();\n\tpublic abstract String columnWalletDivision5();\n\tpublic abstract String columnWalletDivision6();\n\tpublic abstract String columnWalletDivision7();\n\tpublic abstract String columnCurrentShip();\n\tpublic abstract String columnCurrentStation();\n\tpublic abstract String columnCurrentSystem();\n\tpublic abstract String columnCurrentConstellation();\n\tpublic abstract String columnCurrentRegion();\n\tpublic abstract String grandTotal();\n\tpublic abstract String none();\n\tpublic abstract String empty();\n\tpublic abstract String title();\n\tpublic abstract String skillPointFilters();\n\n\tpublic abstract String oldTitle();\n\tpublic abstract String oldNoCharacter();\n\tpublic abstract String oldNoCorporation();\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/AbstractEsiGetter.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.io.esi;\n\nimport java.time.LocalDate;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport java.util.concurrent.Callable;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\nimport net.nikr.eve.jeveasset.io.shared.AbstractGetter;\nimport net.nikr.eve.jeveasset.io.shared.ThreadWoker;\nimport net.nikr.eve.jeveasset.io.shared.ThreadWoker.TaskCancelledException;\nimport net.troja.eve.esi.ApiClient;\nimport net.troja.eve.esi.ApiClientBuilder;\nimport net.troja.eve.esi.ApiException;\nimport net.troja.eve.esi.ApiResponse;\nimport net.troja.eve.esi.api.AssetsApi;\nimport net.troja.eve.esi.api.CharacterApi;\nimport net.troja.eve.esi.api.ClonesApi;\nimport net.troja.eve.esi.api.ContractsApi;\nimport net.troja.eve.esi.api.CorporationApi;\nimport net.troja.eve.esi.api.FactionWarfareApi;\nimport net.troja.eve.esi.api.IndustryApi;\nimport net.troja.eve.esi.api.LocationApi;\nimport net.troja.eve.esi.api.LoyaltyApi;\nimport net.troja.eve.esi.api.MarketApi;\nimport net.troja.eve.esi.api.PlanetaryInteractionApi;\nimport net.troja.eve.esi.api.SkillsApi;\nimport net.troja.eve.esi.api.UniverseApi;\nimport net.troja.eve.esi.api.UserInterfaceApi;\nimport net.troja.eve.esi.api.WalletApi;\nimport net.troja.eve.esi.auth.OAuth;\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\nimport okhttp3.OkHttpClient;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n\npublic abstract class AbstractEsiGetter extends AbstractGetter<EsiOwner> {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(AbstractEsiGetter.class);\n\n\tprivate static OkHttpClient OkHttpClient;\n\tprivate static final ApiClient PUBLIC_CLIENT = new ApiClientBuilder().okHttpClient(getHttpClient()).build();\n\tprivate static final UniverseApi UNIVERSE_API = new UniverseApi(PUBLIC_CLIENT);\n\tprivate static final CharacterApi CHARACTER_API = new CharacterApi(PUBLIC_CLIENT);\n\tprivate static final ContractsApi CONTRACTS_API = new ContractsApi(PUBLIC_CLIENT);\n\tprivate static final MarketApi MARKET_API = new MarketApi(PUBLIC_CLIENT);\n\tprivate static final IndustryApi INDUSTRY_API = new IndustryApi(PUBLIC_CLIENT);\n\tprivate static final FactionWarfareApi FACTION_WARFARE_API = new FactionWarfareApi(PUBLIC_CLIENT);\n\tpublic static final UserInterfaceApi USER_INTERFACE_API = new UserInterfaceApi(PUBLIC_CLIENT);\n\tpublic static final LocalDate COMPATIBILITY_DATE = UniverseApi.COMPATIBILITY_DATE;\n\tprotected static final int UNIVERSE_BATCH_SIZE = 100;\n\tprotected static final int LOCATIONS_BATCH_SIZE = 100;\n\tprotected static final int DEFAULT_RETRIES = 3;\n\t/**\n\t * Errors left in in this error limit time frame (can be null)\n\t */\n\tprivate static Integer errorLimit = null;\n\t/**\n\t * Date when the error limit will be reset (never null)\n\t */\n\tprivate static Date errorReset = new Date();\n\n\n\tpublic AbstractEsiGetter(UpdateTask updateTask, EsiOwner owner, boolean forceUpdate, Date nextUpdate, TaskType taskType) {\n\t\tsuper(updateTask, owner, forceUpdate(owner, taskType, forceUpdate), nextUpdate, taskType, \"ESI\");\n\t}\n\n\tpublic static OkHttpClient getHttpClient() {\n\t\tif (OkHttpClient == null || OkHttpClient.interceptors().size() > 100 || OkHttpClient.networkInterceptors().size() > 100) {\n\t\t\tOkHttpClient = new OkHttpClient.Builder()\n\t\t\t\t\t.readTimeout(20, TimeUnit.SECONDS)\n\t\t\t\t\t.writeTimeout(20, TimeUnit.SECONDS)\n\t\t\t\t\t.connectTimeout(20, TimeUnit.SECONDS).build();\n\t\t}\n\t\treturn OkHttpClient;\n\t}\n\n\tprivate static boolean forceUpdate(EsiOwner owner, TaskType taskType, boolean forceUpdate) {\n\t\tif (forceUpdate) {\n\t\t\treturn true;\n\t\t}\n\t\tif (taskType == TaskType.OWNER && owner != null) {\n\t\t\tOAuth auth = (OAuth) owner.getApiClient().getAuthentication(ApiClientBuilder.AUTHENTICATION);\n\t\t\treturn auth.getJWT() == null; //Force update of old tokens\n\t\t}\n\t\treturn false;\n\t}\n\n\tprotected abstract RolesEnum[] getRequiredRoles();\n\n\t@Override\n\tpublic void run() {\n\t\tif (!canUpdate()) {\n\t\t\t//Add warning for missing corporation roles\n\t\t\tif (owner != null && !haveAccess()) {\n\t\t\t\tRolesEnum[] requiredRoles = getRequiredRoles();\n\t\t\t\tif (owner.isCorporation() && requiredRoles != null && requiredRoles.length > 0) {\n\t\t\t\t\tStringBuilder builder = new StringBuilder();\n\t\t\t\t\tbuilder.append(\"Require corporation role:\\r\\n\");\n\t\t\t\t\tboolean first = true;\n\t\t\t\t\tfor (RolesEnum role : requiredRoles) {\n\t\t\t\t\t\tif (first) {\n\t\t\t\t\t\t\tfirst = false;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbuilder.append(\", \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbuilder.append(role.getValue().replace(\"_\", \" \"));\n\t\t\t\t\t}\n\t\t\t\t\taddWarning(\"MISSING CORPORATION ROLE\", builder.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\t//Check if API key is invalid (still update when editing account AKA forceUpdate)\n\t\tif (!isForceUpdate() && owner != null && owner.isInvalid()) {\n\t\t\taddError(\"INVALID AUTHORIZATION (OWNER)\", \"Account Authorization Invalid\\r\\n(Fix: Options > Accounts... > Edit the account)\");\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tupdate();\n\t\t} catch (ApiException ex) {\n\t\t\taddError(\"Error Code: \" + ex.getCode() + \"\\r\\n\" + ex.getResponseBody(), \"Error Code: \" + ex.getCode() + \"\\r\\n\" + ex.getResponseBody(), ex);\n\t\t} catch (TaskCancelledException ex) {\n\t\t\tlogInfo(null, \"Cancelled\");\n\t\t} catch (InvalidAuthException ex) {\n\t\t\taddError(\"INVALID AUTHORIZATION (API)\", \"Account Authorization Invalid\\r\\n(Fix: Options > Accounts... > Edit the account)\");\n\t\t} catch (Exception ex) {\n\t\t\taddError(ex.getMessage(), \"Unknown Error: \" + ex.getMessage(), ex);\n\t\t}\n\t}\n\n\tprivate <R> R updateApi(Updater<ApiResponse<R>, ApiException> updater) throws ApiException {\n\t\treturn updateApi(updater, 0);\n\t}\n\n\tprivate <R> R updateApi(Updater<ApiResponse<R>, ApiException> updater, int retries) throws ApiException {\n\t\tcheckErrors(); //Update timeframe as needed\n\t\tcheckCancelled();\n\t\ttry {\n\t\t\tApiResponse<R> apiResponse = updater.update();\n\t\t\tif (apiResponse == null) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\thandleHeaders(apiResponse);\n\t\t\tlogInfo(updater.getStatus(), \"Updated\");\n\t\t\tif (owner != null) {\n\t\t\t\towner.setInvalid(false);\n\t\t\t}\n\t\t\treturn apiResponse.getData();\n\t\t} catch (ApiException ex) {\n\t\t\thandleHeaders(ex);\n\t\t\tlogWarn(ex.getResponseBody(), ex.getMessage());\n\t\t\tif (ex.getCode() == 401 && ex.getResponseBody().toLowerCase().contains(\"error\") && ex.getResponseBody().toLowerCase().contains(\"authorization not provided\")) {\n\t\t\t\tif (owner != null) {\n\t\t\t\t\towner.setInvalid(true);\n\t\t\t\t}\n\t\t\t\tthrow new InvalidAuthException();\n\t\t\t} else if ((ex.getCode() >= 500 && ex.getCode() < 600 //CCP error, Lets try again in a sec\n\t\t\t\t\t|| ex.getCode() == 0) //Other error, Lets try again in a sec\n\t\t\t\t\t&& ex.getCode() != 503 //Don't retry when it may be downtime\n\t\t\t\t\t&& (ex.getCode() != 502 || (ex.getResponseBody().toLowerCase().contains(\"no reply within 10 seconds\") || ex.getResponseBody().toLowerCase().startsWith(\"<html>\"))) //Don't retry when it may be downtime, unless it's \"no reply within 10 seconds\" or html body\n\t\t\t\t\t&& retries < updater.getMaxRetries()) { //Retries\n\t\t\t\tretries++;\n\t\t\t\ttry {\n\t\t\t\t\tThread.sleep(1000); //Wait a sec\n\t\t\t\t} catch (InterruptedException ex1) {\n\t\t\t\t\t//No problem\n\t\t\t\t}\n\t\t\t\tlogInfo(updater.getStatus(), \"Retrying \" + retries + \" of \" + updater.getMaxRetries() + \":\");\n\t\t\t\treturn updateApi(updater, retries);\n\t\t\t} else {\n\t\t\t\tthrow ex;\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected void handleHeaders(ApiException apiException) {\n\t\tsetExpires(apiException.getResponseHeaders());\n\t\tsetErrorLimit(apiException.getResponseHeaders()); //Always save error limit header\n\t}\n\n\tprivate void handleHeaders(ApiResponse<?> apiResponse) {\n\t\tsetExpires(apiResponse.getHeaders());\n\t\tsetErrorLimit(apiResponse.getHeaders()); //Always save error limit header\n\t}\n\n\tprotected abstract void update() throws ApiException;\n\n\tprivate void setErrorLimit(Map<String, List<String>> responseHeaders) {\n\t\tif (responseHeaders != null) {\n\t\t\tsetErrorLimit(getHeaderInteger(responseHeaders, \"x-esi-error-limit-remain\"));\n\t\t\tsetErrorReset(getHeaderInteger(responseHeaders, \"x-esi-error-limit-reset\"));\n\t\t}\n\t}\n\n\tprivate synchronized static void setErrorLimit(Integer errorLimit) {\n\t\tif (AbstractEsiGetter.errorLimit != null && errorLimit != null) {\n\t\t\tAbstractEsiGetter.errorLimit = Math.min(AbstractEsiGetter.errorLimit, errorLimit);\n\t\t} else {\n\t\t\tAbstractEsiGetter.errorLimit = errorLimit;\n\t\t}\n\t}\n\n\tprivate synchronized static void setErrorReset(Integer errorReset) {\n\t\tif (errorReset != null) {\n\t\t\tAbstractEsiGetter.errorReset = new Date(System.currentTimeMillis() + (errorReset * 1000L));\n\t\t}\n\t}\n\n\tprivate synchronized static void checkErrors() {\n\t\tif (errorLimit != null && errorLimit < 10) { //Error limit reached\n\t\t\ttry {\n\t\t\t\tlong wait = (errorReset.getTime() + 1000) - System.currentTimeMillis();\n\t\t\t\tLOG.warn(\"Error limit reached waiting: \" + Formatter.milliseconds(wait, false, false));\n\t\t\t\tif (wait > 0) { //Negative values throws an Exception\n\t\t\t\t\tThread.sleep(wait); //Wait until the error window is reset\n\t\t\t\t}\n\t\t\t\t//Reset\n\t\t\t\tAbstractEsiGetter.errorReset = new Date(); //New timeframe\n\t\t\t\tAbstractEsiGetter.errorLimit = null; //No errors in this timeframe (yet)\n\t\t\t} catch (InterruptedException ex) {\n\t\t\t\t//No problem\n\t\t\t}\n\t\t} else if (errorLimit != null && errorLimit < 100) { //At least one error\n\t\t\tLOG.warn(\"Error limit: \" + errorLimit);\n\t\t}\n\t}\n\n\tpublic MarketApi getMarketApiAuth() {\n\t\treturn owner.getMarketApiAuth();\n \t}\n\n\tpublic IndustryApi getIndustryApiAuth() {\n\t\treturn owner.getIndustryApiAuth();\n \t}\n\n\tprotected CharacterApi getCharacterApiAuth() {\n\t\treturn owner.getCharacterApiAuth();\n \t}\n\n\tprotected AssetsApi getAssetsApiAuth() {\n\t\treturn owner.getAssetsApiAuth();\n \t}\n\n\tprotected WalletApi getWalletApiAuth() {\n\t\treturn owner.getWalletApiAuth();\n \t}\n\n\tprotected UniverseApi getUniverseApiAuth() {\n\t\treturn owner.getUniverseApiAuth();\n \t}\n\t\n\tpublic ClonesApi getClonesApiAuth() {\n\t\treturn owner.getClonesApiAuth();\n\t}\n\n\tpublic ContractsApi getContractsApiAuth() {\n\t\treturn owner.getContractsApiAuth();\n \t}\n\n\tpublic CorporationApi getCorporationApiAuth() {\n\t\treturn owner.getCorporationApiAuth();\n \t}\n\n\tpublic LocationApi getLocationApiAuth() {\n\t\treturn owner.getLocationApiAuth();\n \t}\n\n\tpublic PlanetaryInteractionApi getPlanetaryInteractionApiAuth() {\n\t\treturn owner.getPlanetaryInteractionApiAuth();\n \t}\n\n\tpublic SkillsApi getSkillsApiAuth() {\n\t\treturn owner.getSkillsApiAuth();\n \t}\n\n\tpublic LoyaltyApi getLoyaltyApiAuth() {\n\t\treturn owner.getLoyaltyApiAuth();\n \t}\n\n\tpublic UniverseApi getUniverseApiOpen() {\n\t\treturn UNIVERSE_API;\n \t}\n\n\tpublic CharacterApi getCharacterApiOpen() {\n\t\treturn CHARACTER_API;\n \t}\n\n\tpublic static MarketApi getMarketApiOpen() {\n\t\treturn MARKET_API;\n\t}\n\n\tpublic static FactionWarfareApi getFactionWarfareApiOpen() {\n\t\treturn FACTION_WARFARE_API;\n\t}\n\n\tpublic static ContractsApi getContractsApiOpen() {\n\t\treturn CONTRACTS_API;\n\t}\n\n\tpublic static IndustryApi getIndustryApiOpen() {\n\t\treturn INDUSTRY_API;\n\t}\n\n\tprotected final <K, V> Map<K, V> updateListSlow(Collection<K> list, boolean trackProgress, int maxRetries, ListHandlerSlow<K, V> handler) throws ApiException {\n\t\tMap<K, V> values = new HashMap<>();\n\t\tint count = 1;\n\t\tfor (K k : list) {\n\t\t\tListUpdater<K, V> listUpdater = new ListUpdater<>(handler, k, count + \" of \" + list.size(), maxRetries);\n\t\t\ttry {\n\t\t\t\tif (trackProgress) {\n\t\t\t\t\tsetProgress(list.size(), count, 0, 100);\n\t\t\t\t}\n\t\t\t\tMap<K, V> returnValue = listUpdater.go();\n\t\t\t\tif (returnValue != null) {\n\t\t\t\t\tvalues.putAll(returnValue);\n\t\t\t\t}\n\t\t\t} catch (ApiException ex) {\n\t\t\t\thandler.handle(ex, k);\n\t\t\t}\n\t\t\tcount++;\n\t\t}\n\t\treturn values;\n\t}\n\n\tprotected abstract class ListHandlerSlow<K, V> extends ListHandler<K, V> {\n\t\tprotected abstract void handle(ApiException ex, K k) throws ApiException;\n\t}\n\n\tprotected final <K, V> Map<K, V> updateList(Collection<K> list, int maxRetries, ListHandler<K, V> handler) throws ApiException {\n\t\tMap<K, V> values = new HashMap<>();\n\t\tList<ListUpdater<K, V>> updaters = new ArrayList<>();\n\t\tint count = 1;\n\t\tfor (K k : list) {\n\t\t\tupdaters.add(new ListUpdater<>(handler, k, count + \" of \" + list.size(), maxRetries));\n\t\t\tcount++;\n\t\t}\n\t\tLOG.info(\"Starting \" + updaters.size() + \" list threads\");\n\t\ttry {\n\t\t\tList<Future<Map<K, V>>> futures = startSubThreads(updaters);\n\t\t\tfor (Future<Map<K, V>> future : futures) {\n\t\t\t\tMap<K, V> returnValue = future.get();\n\t\t\t\tif (returnValue != null) {\n\t\t\t\t\tvalues.putAll(returnValue);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (InterruptedException ex) {\n\t\t\tthrow new RuntimeException(ex);\n\t\t} catch (ExecutionException ex) {\n\t\t\tThreadWoker.throwExecutionException(ApiException.class, ex);\n\t\t}\n\t\treturn values;\n\t}\n\n\tprotected abstract class ListHandler<K, V> {\n\t\tprotected abstract ApiResponse<V> get(K k) throws ApiException;\n\t}\n\n\tprotected class ListUpdater<K, V> implements Updater<ApiResponse<V>, ApiException>, Callable<Map<K, V>> {\n\n\t\tprivate final ListHandler<K, V> handler;\n\t\tprivate final K k;\n\t\tprivate final String status;\n\t\tprivate final int maxRetries;\n\n\t\tpublic ListUpdater(ListHandler<K, V> handler, K k, String status, int maxRetries) {\n\t\t\tthis.handler = handler;\n\t\t\tthis.k = k;\n\t\t\tthis.status = status;\n\t\t\tthis.maxRetries = maxRetries;\n\t\t}\n\n\t\t@Override\n\t\tpublic ApiResponse<V> update() throws ApiException {\n\t\t\treturn handler.get(k);\n\t\t}\n\n\t\tpublic Map<K, V> go() throws ApiException {\n\t\t\tV v = updateApi(this);\n\t\t\tif (v != null) {\n\t\t\t\tMap<K, V> map = new HashMap<>();\n\t\t\t\tmap.put(k, v);\n\t\t\t\treturn map;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic Map<K, V> call() throws Exception {\n\t\t\treturn go();\n\t\t}\n\n\t\t@Override\n\t\tpublic String getStatus() {\n\t\t\treturn status;\n\t\t}\n\n\t\t@Override\n\t\tpublic int getMaxRetries() {\n\t\t\treturn maxRetries;\n\t\t}\n\t}\n\n\tprotected final <K, V> List<V> updatePagedList(Collection<K> list, PagedListHandler<K, V> handler) throws ApiException {\n\t\tList<Callable<List<V>>> updaters = new ArrayList<>();\n\t\tfor (K k : list) {\n\t\t\tupdaters.add(new Callable<List<V>>() {\n\t\t\t\t@Override\n\t\t\t\tpublic List<V> call() throws Exception {\n\t\t\t\t\treturn handler.get(k);\n\t\t\t\t}\n\t\t\t}\n\t\t\t);\n\t\t}\n\t\tLOG.info(\"Starting \" + updaters.size() + \" list threads\");\n\t\tList<V> values = new ArrayList<>();\n\t\ttry {\n\t\t\tList<Future<List<V>>> futures = startSubThreads(updaters);\n\t\t\tfor (Future<List<V>> future : futures) {\n\t\t\t\tList<V> returnValue = future.get();\n\t\t\t\tif (returnValue != null) {\n\t\t\t\t\tvalues.addAll(returnValue);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (InterruptedException ex) {\n\t\t\tthrow new RuntimeException(ex);\n\t\t} catch (ExecutionException ex) {\n\t\t\tThreadWoker.throwExecutionException(ApiException.class, ex);\n\t\t}\n\t\treturn values;\n\t}\n\n\tprotected abstract class PagedListHandler<K, V> {\n\t\tprotected abstract List<V> get(K k) throws ApiException;\n\t}\n\n\tprotected final <K, V> Map<K, List<V>> updatePagedMap(Collection<K> list, PagedListHandler<K, V> handler) throws ApiException {\n\t\tList<Callable<Map<K, List<V>>>> updaters = new ArrayList<>();\n\t\tfor (K k : list) {\n\t\t\tupdaters.add(new Callable<Map<K, List<V>>>() {\n\t\t\t\t@Override\n\t\t\t\tpublic Map<K, List<V>> call() throws Exception {\n\t\t\t\t\tList<V> v = handler.get(k);\n\t\t\t\t\tif (v != null) {\n\t\t\t\t\t\tMap<K, List<V>> map = new HashMap<>();\n\t\t\t\t\t\tmap.put(k, v);\n\t\t\t\t\t\treturn map;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t);\n\t\t}\n\t\tLOG.info(\"Starting \" + updaters.size() + \" list threads\");\n\t\tMap<K, List<V>> values = new HashMap<>();\n\t\ttry {\n\t\t\tList<Future<Map<K, List<V>>>> futures = startSubThreads(updaters);\n\t\t\tfor (Future<Map<K, List<V>>> future : futures) {\n\t\t\t\tMap<K, List<V>> returnValue = future.get();\n\t\t\t\tif (returnValue != null) {\n\t\t\t\t\tvalues.putAll(returnValue);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (InterruptedException ex) {\n\t\t\tthrow new RuntimeException(ex);\n\t\t} catch (ExecutionException ex) {\n\t\t\tThreadWoker.throwExecutionException(ApiException.class, ex);\n\t\t}\n\t\treturn values;\n\t}\n\n\tprotected final <K> List<K> updateIDs(Set<Long> existing, int maxRetries, IDsHandler<K> handler) throws ApiException {\n\t\tList<K> list = new ArrayList<>();\n\t\tLong fromID = null;\n\t\tboolean run = true;\n\t\tint count = 0;\n\t\twhile (run) {\n\t\t\tcount++;\n\t\t\tList<K> result;\n\t\t\tresult = updateApi(new IdUpdater<>(handler, fromID, count + \" of ?\", maxRetries));\n\t\t\tif (result == null || result.isEmpty()) { //Nothing returned: we're done\n\t\t\t\tbreak; //Stop updating\n\t\t\t}\n\n\t\t\tlist.addAll(result); //Add new\n\n\t\t\tLong lastID = handler.getID(result.get(result.size() - 1)); //Get the last ID\n\t\t\tif (lastID.equals(fromID)) { //ID is the same as on last update: we're done\n\t\t\t\tbreak; //Stop updating\n\t\t\t}\n\t\t\tfromID = lastID; //Set ID for next update\n\n\t\t\tfor (K t : result) { //Search for existing data\n\t\t\t\tif (existing.contains(handler.getID(t))) { //Found existing data\n\t\t\t\t\trun = false; //Stop updating\n\t\t\t\t\tbreak; //no need to continue\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn list;\n\t}\n\n\tpublic abstract class IDsHandler<K> {\n\t\tprotected abstract ApiResponse<List<K>> get(Long fromID) throws ApiException;\n\t\tprotected abstract Long getID(K response);\n\t}\n\n\tpublic class IdUpdater<K> implements Updater<ApiResponse<List<K>>, ApiException> {\n\n\t\tprivate final IDsHandler<K> handler;\n\t\tprivate final Long fromID;\n\t\tprivate final String status;\n\t\tprivate final int maxRetries;\n\n\t\tpublic IdUpdater(IDsHandler<K> handler, Long fromID, String status, int maxRetries) {\n\t\t\tthis.handler = handler;\n\t\t\tthis.fromID = fromID;\n\t\t\tthis.status = status;\n\t\t\tthis.maxRetries = maxRetries;\n\t\t}\n\n\t\t@Override\n\t\tpublic ApiResponse<List<K>> update() throws ApiException {\n\t\t\treturn handler.get(fromID);\n\t\t}\n\n\t\t@Override\n\t\tpublic String getStatus() {\n\t\t\treturn status;\n\t\t}\n\n\t\t@Override\n\t\tpublic int getMaxRetries() {\n\t\t\treturn maxRetries;\n\t\t}\n\t}\n\n\tprotected <K> List<K> updatePages(int maxRetries, EsiPagesHandler<K> handler) throws ApiException {\n\t\tList<K> values = new ArrayList<>();\n\t\tEsiPageUpdater<K> pageUpdater = new EsiPageUpdater<>(handler, 1, \"1 of ?\", maxRetries);\n\t\tList<K> returnValue = updateApi(pageUpdater);\n\t\tif (returnValue != null) {\n\t\t\tvalues.addAll(returnValue);\n\t\t}\n\t\tInteger pages = getHeaderInteger(pageUpdater.getResponse().getHeaders(), \"x-pages\"); //Get pages header\n\t\tint count = 2;\n\t\tif (pages != null && pages > 1) { //More than one page\n\t\t\tList<EsiPageUpdater<K>> updaters = new ArrayList<>();\n\t\t\tfor (int i = 2; i <= pages; i++) { //Get the remaining pages (we already got page 1 so we start at page 2\n\t\t\t\tupdaters.add(new EsiPageUpdater<>(handler, i, count + \" of \" + pages, maxRetries));\n\t\t\t\tcount++;\n\t\t\t}\n\t\t\tLOG.info(\"Starting \" + updaters.size() + \" pages threads\");\n\t\t\ttry {\n\t\t\t\tList<Future<List<K>>> futures = startSubThreads(updaters);\n\t\t\t\tfor (Future<List<K>> future : futures) {\n\t\t\t\t\tif (future.isDone()) {\n\t\t\t\t\t\treturnValue = future.get(); //Get data from ESI\n\t\t\t\t\t\tif (returnValue != null) {\n\t\t\t\t\t\t\tvalues.addAll(returnValue);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (InterruptedException ex) {\n\t\t\t\tthrow new RuntimeException(ex);\n\t\t\t} catch (ExecutionException ex) {\n\t\t\t\tThreadWoker.throwExecutionException(ApiException.class, ex);\n\t\t\t}\n\t\t}\n\t\treturn values;\n\t}\n\n\tpublic interface EsiPagesHandler<K> {\n\t\tpublic ApiResponse<List<K>> get(Integer page) throws ApiException;\n\t}\n\n\tpublic class EsiPageUpdater<T> implements Callable<List<T>>, Updater<ApiResponse<List<T>>, ApiException> {\n\n\t\tprivate final EsiPagesHandler<T> handler;\n\t\tprivate final int page;\n\t\tprivate final String status;\n\t\tprivate final int maxRetries;\n\t\tprivate ApiResponse<List<T>> response;\n\n\t\tpublic EsiPageUpdater(EsiPagesHandler<T> handler, int page, String status, int maxRetries) {\n\t\t\tthis.handler = handler;\n\t\t\tthis.page = page;\n\t\t\tthis.status = status;\n\t\t\tthis.maxRetries = maxRetries;\n\t\t}\n\n\t\t@Override\n\t\tpublic ApiResponse<List<T>> update() throws ApiException {\n\t\t\tresponse = handler.get(page);\n\t\t\treturn response;\n\t\t}\n\n\t\t@Override\n\t\tpublic List<T> call() throws Exception {\n\t\t\treturn updateApi(this);\n\t\t}\n\n\t\tpublic ApiResponse<List<T>> getResponse() {\n\t\t\treturn response;\n\t\t}\n\n\t\t@Override\n\t\tpublic String getStatus() {\n\t\t\treturn status;\n\t\t}\n\n\t\t@Override\n\t\tpublic int getMaxRetries() {\n\t\t\treturn maxRetries;\n\t\t}\n\t}\n\n\tprotected <K> K update(int maxRetries, EsiHandler<K> handler) throws ApiException {\n\t\tEsiUpdater<K> esiUpdater = new EsiUpdater<>(maxRetries, handler);\n\t\treturn esiUpdater.go();\n\t}\n\n\tpublic interface EsiHandler<K> {\n\t\tpublic ApiResponse<K> get() throws ApiException;\n\t}\n\n\tpublic class EsiUpdater<T> implements Updater<ApiResponse<T>, ApiException> {\n\n\t\tprivate final int maxRetries;\n\t\tprivate final EsiHandler<T> handler;\n\n\t\tpublic EsiUpdater(int maxRetries, EsiHandler<T> handler) {\n\t\t\tthis.maxRetries = maxRetries;\n\t\t\tthis.handler = handler;\n\t\t}\n\n\t\tpublic T go() throws ApiException {\n\t\t\treturn updateApi(this);\n\t\t}\n\n\t\t@Override\n\t\tpublic ApiResponse<T> update() throws ApiException {\n\t\t\treturn handler.get();\n\t\t}\n\n\t\t@Override\n\t\tpublic String getStatus() {\n\t\t\treturn \"Completed\";\n\t\t}\n\n\t\t@Override\n\t\tpublic int getMaxRetries() {\n\t\t\treturn maxRetries;\n\t\t}\n\t}\n\n\tprivate static class InvalidAuthException extends RuntimeException {\n\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/AuthCodeListener.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\n\r\npublic interface AuthCodeListener {\r\n\tpublic void setAuthCode(String authCode);\r\n\tpublic boolean isListening();\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiAccountBalanceGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport net.troja.eve.esi.ApiException;\r\nimport net.troja.eve.esi.ApiResponse;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\r\nimport net.troja.eve.esi.model.CorporationWalletsResponse;\r\n\r\n\r\npublic class EsiAccountBalanceGetter extends AbstractEsiGetter {\r\n\r\n\tpublic EsiAccountBalanceGetter(UpdateTask updateTask, EsiOwner owner) {\r\n\t\tsuper(updateTask, owner, false, owner.getBalanceNextUpdate(), TaskType.ACCOUNT_BALANCE);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void update() throws ApiException {\r\n\t\tif (owner.isCorporation()) {\r\n\t\t\tList<CorporationWalletsResponse> response = update(DEFAULT_RETRIES, new EsiHandler<List<CorporationWalletsResponse>>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<List<CorporationWalletsResponse>> get() throws ApiException {//(, DATASOURCE, null, null);\r\n\t\t\t\t\tApiResponse<List<CorporationWalletsResponse>> apiResponse = getWalletApiAuth().getCorporationWalletsWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t\t\tDate modified = getHeaderDate(apiResponse.getHeaders(), \"last-modified\");\r\n\t\t\t\t\tif (modified != null && (owner.getBalanceLastUpdate() == null || modified.after(owner.getBalanceLastUpdate()))) {\r\n\t\t\t\t\t\towner.setBalanceLastUpdate(modified);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn apiResponse;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\towner.setAccountBalances(EsiConverter.toAccountBalanceCorporation(response, owner));\r\n\t\t} else {\r\n\t\t\tDouble response = update(DEFAULT_RETRIES, new EsiHandler<Double>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<Double> get() throws ApiException {\r\n\t\t\t\t\tApiResponse<Double> apiResponse = getWalletApiAuth().getCharacterWalletWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t\t\tDate modified = getHeaderDate(apiResponse.getHeaders(), \"last-modified\");\r\n\t\t\t\t\tif (modified != null && (owner.getBalanceLastUpdate() == null || modified.after(owner.getBalanceLastUpdate()))) {\r\n\t\t\t\t\t\towner.setBalanceLastUpdate(modified);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn apiResponse;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\towner.setAccountBalances(EsiConverter.toAccountBalance(response, owner, 1000));\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void setNextUpdate(Date date) {\r\n\t\towner.setBalanceNextUpdate(date);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean haveAccess() {\r\n\t\treturn owner.isAccountBalance();\r\n\t}\r\n\r\n\t@Override\r\n\tprotected RolesEnum[] getRequiredRoles() {\r\n\t\tRolesEnum[] roles = {RolesEnum.DIRECTOR, RolesEnum.ACCOUNTANT, RolesEnum.JUNIOR_ACCOUNTANT};\r\n\t\treturn roles;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiAssetsGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport net.troja.eve.esi.ApiException;\r\nimport net.troja.eve.esi.ApiResponse;\r\nimport net.troja.eve.esi.model.CharacterAssetsResponse;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\r\nimport net.troja.eve.esi.model.CorporationAssetsResponse;\r\n\r\n\r\npublic class EsiAssetsGetter extends AbstractEsiGetter {\r\n\r\n\tpublic EsiAssetsGetter(UpdateTask updateTask, EsiOwner owner) {\r\n\t\tsuper(updateTask, owner, false, owner.getAssetNextUpdate(), TaskType.ASSETS);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void update() throws ApiException {\r\n\t\tif (owner.isCorporation()) {\r\n\t\t\tList<CorporationAssetsResponse> responses = updatePages(DEFAULT_RETRIES, new EsiPagesHandler<CorporationAssetsResponse>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<List<CorporationAssetsResponse>> get(Integer page) throws ApiException {\r\n\t\t\t\t\tApiResponse<List<CorporationAssetsResponse>> apiResponse = getAssetsApiAuth().getCorporationAssetsWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, page, null, null, null);\r\n\t\t\t\t\tDate modified = getHeaderDate(apiResponse.getHeaders(), \"last-modified\");\r\n\t\t\t\t\tif (modified != null && (owner.getAssetLastUpdate() == null || modified.after(owner.getAssetLastUpdate()))) {\r\n\t\t\t\t\t\towner.setAssetLastUpdate(modified);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn apiResponse;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\towner.setAssets(EsiConverter.toAssetsCorporation(responses, owner));\r\n\t\t} else {\r\n\t\t\tList<CharacterAssetsResponse> responses = updatePages(DEFAULT_RETRIES, new EsiPagesHandler<CharacterAssetsResponse>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<List<CharacterAssetsResponse>> get(Integer page) throws ApiException {\r\n\t\t\t\t\tApiResponse<List<CharacterAssetsResponse>> apiResponse = getAssetsApiAuth().getCharacterAssetsWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, page, null, null, null);\r\n\t\t\t\t\tDate modified = getHeaderDate(apiResponse.getHeaders(), \"last-modified\");\r\n\t\t\t\t\tif (modified != null && (owner.getAssetLastUpdate() == null || modified.after(owner.getAssetLastUpdate()))) {\r\n\t\t\t\t\t\towner.setAssetLastUpdate(modified);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn apiResponse;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\towner.setAssets(EsiConverter.toAssets(responses, owner));\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void setNextUpdate(Date date) {\r\n\t\towner.setAssetNextUpdate(date);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean haveAccess() {\r\n\t\treturn owner.isAssetList();\r\n\t}\r\n\r\n\t@Override\r\n\tprotected RolesEnum[] getRequiredRoles() {\r\n\t\tRolesEnum[] roles = {RolesEnum.DIRECTOR};\r\n\t\treturn roles;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiAuth.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.awt.Window;\r\nimport java.io.UnsupportedEncodingException;\r\nimport java.util.Base64;\r\nimport java.util.Set;\r\nimport java.util.UUID;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.io.shared.DesktopUtil;\r\nimport net.troja.eve.esi.auth.OAuth;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class EsiAuth {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(EsiAuth.class);\r\n\r\n\tprivate OAuth oAuth;\r\n\tprivate final MicroServe microServe;\r\n\tprivate EsiCallbackURL callbackURL;\r\n\r\n\tpublic EsiAuth() {\r\n\t\tmicroServe = new MicroServe();\r\n\t\tmicroServe.startServer();\r\n\t}\r\n\r\n\tpublic void cancelImport() {\r\n\t\tmicroServe.stopListening();\r\n\t}\r\n\r\n\tpublic boolean isServerStarted() {\r\n\t\treturn microServe.isServerStarted();\r\n\t}\r\n\r\n\tpublic boolean openWebpage(EsiCallbackURL callbackURL, Set<String> scopes, Window window) {\r\n\t\ttry {\r\n\t\t\tif (callbackURL == EsiCallbackURL.LOCALHOST) {\r\n\t\t\t\tmicroServe.startListening();\r\n\t\t\t}\r\n\t\t\toAuth = new OAuth(); //We always need a new oAuth to start a new flow\r\n\t\t\tthis.callbackURL = callbackURL;\r\n\t\t\toAuth.setClientId(callbackURL.getA());\r\n\t\t\tString state = UUID.randomUUID().toString();\r\n\t\t\tString authorizationUri = oAuth.getAuthorizationUri(callbackURL.getUrl(), scopes, state);\r\n\t\t\treturn DesktopUtil.browse(authorizationUri, window);\r\n\t\t} catch (Exception ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic boolean finishFlow(EsiOwner esiOwner, String authCode) {\r\n\t\tif (oAuth == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tString code;\r\n\t\tif (callbackURL == EsiCallbackURL.LOCALHOST) {\r\n\t\t\tcode = microServe.getAuthCode();\r\n\t\t\tif (code == null) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\ttry {\r\n\t\t\t\tcode = new String(Base64.getUrlDecoder().decode(authCode), \"UTF-8\");\r\n\t\t\t} catch (UnsupportedEncodingException ex) {\r\n\t\t\t\treturn false;\r\n\t\t\t} catch (IllegalArgumentException ex) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\ttry {\r\n\t\t\toAuth.finishFlow(code, \"jeveassets\");\r\n\t\t\tesiOwner.setAuth(callbackURL, oAuth.getRefreshToken(), oAuth.getAccessToken());\r\n\t\t\treturn true;\r\n\t\t} catch (Exception ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiBlueprintsGetter.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.io.esi;\n\nimport java.util.Date;\nimport java.util.List;\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\nimport net.troja.eve.esi.ApiException;\nimport net.troja.eve.esi.ApiResponse;\nimport net.troja.eve.esi.model.CharacterBlueprintsResponse;\nimport net.troja.eve.esi.model.CharacterRolesResponse;\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\nimport net.troja.eve.esi.model.CorporationBlueprintsResponse;\n\n\npublic class EsiBlueprintsGetter extends AbstractEsiGetter {\n\n\tpublic EsiBlueprintsGetter(UpdateTask updateTask, EsiOwner owner) {\n\t\tsuper(updateTask, owner, false, owner.getBlueprintsNextUpdate(), TaskType.BLUEPRINTS);\n\t}\n\n\t@Override\n\tprotected void update() throws ApiException {\n\t\tif (owner.isCorporation()) {\n\t\t\tList<CorporationBlueprintsResponse> responses = updatePages(DEFAULT_RETRIES, new EsiPagesHandler<CorporationBlueprintsResponse>() {\n\t\t\t\t@Override\n\t\t\t\tpublic ApiResponse<List<CorporationBlueprintsResponse>> get(Integer page) throws ApiException {\n\t\t\t\t\treturn getCorporationApiAuth().getCorporationBlueprintsWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, page, null, null, null);\n\t\t\t\t}\n\t\t\t});\n\t\t\towner.setBlueprints(EsiConverter.toBlueprintsCorporation(responses));\n\t\t} else {\n\t\t\tList<CharacterBlueprintsResponse> responses = updatePages(DEFAULT_RETRIES, new EsiPagesHandler<CharacterBlueprintsResponse>() {\n\t\t\t\t@Override\n\t\t\t\tpublic ApiResponse<List<CharacterBlueprintsResponse>> get(Integer page) throws ApiException {\n\t\t\t\t\treturn getCharacterApiAuth().getCharacterBlueprintsWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, page, null, null, null);\n\t\t\t\t}\n\t\t\t});\n\t\t\towner.setBlueprints(EsiConverter.toBlueprints(responses));\n\t\t}\n\t\tif (owner.getBlueprints().size() == 25000) {\n\t\t\taddWarning(\"BLUEPRINT MAX ITEMS\", \"25000 blueprints updated\\r\\nESI is limited to 25K blueprints per char/corp\\r\\nSome blueprints may not have ME/TE/Runs\");\n\t\t}\n\t}\n\n\t@Override\n\tprotected void setNextUpdate(Date date) {\n\t\towner.setBlueprintsNextUpdate(date);\n\t}\n\n\t@Override\n\tprotected boolean haveAccess() {\n\t\treturn owner.isBlueprints();\n\t}\n\n\t@Override\n\tprotected RolesEnum[] getRequiredRoles() {\n\t\tCharacterRolesResponse.RolesEnum[] roles = {CharacterRolesResponse.RolesEnum.DIRECTOR};\n\t\treturn roles;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiCallbackURL.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\n\r\npublic enum EsiCallbackURL {\r\n\tLOCALHOST(\"http://localhost:2221\", \"\"),\r\n\tEVE_NIKR_NET(\"https://eve.nikr.net/jeveasset/auth\", \"\"),\r\n\t;\r\n\tprivate final String url;\r\n\tprivate final String a;\r\n\r\n\tprivate EsiCallbackURL(String url, String a) {\r\n\t\tthis.url = url;\r\n\t\tthis.a = a;\r\n\t}\r\n\r\n\tpublic String getUrl() {\r\n\t\treturn url;\r\n\t}\r\n\r\n\tpublic String getA() {\r\n\t\treturn a;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiClonesGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\r\nimport net.troja.eve.esi.ApiException;\r\nimport net.troja.eve.esi.ApiResponse;\r\nimport net.troja.eve.esi.api.FittingsApi;\r\nimport net.troja.eve.esi.model.CharacterClonesResponse;\r\nimport net.troja.eve.esi.model.CharacterLocationResponse;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\r\n\r\n\r\npublic class EsiClonesGetter extends AbstractEsiGetter {\r\n\r\n\tpublic EsiClonesGetter(UpdateTask updateTask, EsiOwner owner, Date assetNextUpdate) {\r\n\t\tsuper(updateTask, owner, false, assetNextUpdate, TaskType.CLONES);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void update() throws ApiException {\r\n\t\tif (owner.isCorporation()) {\r\n\t\t\treturn; //Character Endpoint\r\n\t\t}\r\n\t\t//Get Jump Clones\r\n\t\tCharacterClonesResponse jumpClonesResponse = update(DEFAULT_RETRIES, new EsiHandler<CharacterClonesResponse>() {\r\n\t\t\t@Override\r\n\t\t\tpublic ApiResponse<CharacterClonesResponse> get() throws ApiException {\r\n\t\t\t\treturn getClonesApiAuth().getCharacterClonesWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t}\r\n\t\t});\r\n\t\t//Get Active Clone\r\n\t\tList<Long> activeCloneImplants = update(DEFAULT_RETRIES, new EsiHandler<List<Long>>() {\r\n\t\t\t@Override\r\n\t\t\tpublic ApiResponse<List<Long>> get() throws ApiException {\r\n\t\t\t\treturn getClonesApiAuth().getCharacterImplantsWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t}\r\n\t\t});\r\n\t\t//Get Location\r\n\t\tCharacterLocationResponse characterLocation = update(DEFAULT_RETRIES, new EsiHandler<CharacterLocationResponse>() {\r\n\t\t\t@Override\r\n\t\t\tpublic ApiResponse<CharacterLocationResponse> get() throws ApiException {\r\n\t\t\t\treturn getLocationApiAuth().getCharacterLocationWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t}\r\n\t\t});\r\n\t\tLong activeCloneLocationID = RawConverter.toLocationID(characterLocation);\r\n\r\n\t\towner.setClones(EsiConverter.toClones(jumpClonesResponse, activeCloneImplants, activeCloneLocationID, owner));\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void setNextUpdate(Date date) {\r\n\t\t//Use the assets update times\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean haveAccess() {\r\n\t\tif (owner.isCorporation()) {\r\n\t\t\treturn true; //Overwrite the default, so, we don't get errors\r\n\t\t} else {\r\n\t\t\treturn owner.isClones() && owner.isImplants();\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected RolesEnum[] getRequiredRoles() {\r\n\t\treturn null;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiContractItemsGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport java.util.concurrent.atomic.AtomicInteger;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\r\nimport net.troja.eve.esi.ApiException;\r\nimport net.troja.eve.esi.ApiResponse;\r\nimport net.troja.eve.esi.model.ContractItemsResponse;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\r\nimport net.troja.eve.esi.model.PublicContractsItemsResponse;\r\n\r\n\r\npublic class EsiContractItemsGetter extends AbstractEsiGetter {\r\n\r\n\tprivate final List<EsiOwner> owners;\r\n\tprivate static Map<Long, List<MyContract>> contracts;\r\n\tprivate static Map<Long, List<MyContract>> publicContracts;\r\n\tprivate final static AtomicInteger SIZE = new AtomicInteger(0);\r\n\tprivate final static AtomicInteger PROGRESS = new AtomicInteger(0);\r\n\tprivate final static int BATCH_SIZE = 20;\r\n\r\n\tprivate final boolean saveHistory;\r\n\r\n\tpublic EsiContractItemsGetter(UpdateTask updateTask, EsiOwner owner, List<EsiOwner> owners, boolean saveHistory) {\r\n\t\tsuper(updateTask, owner, false, Settings.getNow(), TaskType.CONTRACT_ITEMS);\r\n\t\tthis.owners = owners;\r\n\t\tthis.saveHistory = saveHistory;\r\n\t}\r\n\r\n\tpublic static void reset() {\r\n\t\tcontracts = null;\r\n\t\tSIZE.set(0);\r\n\t\tPROGRESS.set(0);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void update() throws ApiException {\r\n\t\tcreateContracts(owners);\r\n\t\tif (owner.isCorporation()) {\r\n\t\t\tList<List<MyContract>> updates = splitList(contracts.get(owner.getOwnerID()), BATCH_SIZE);\r\n\t\t\tMap<MyContract, List<ContractItemsResponse>> responses = new HashMap<>();\r\n\t\t\tboolean first = true;\r\n\t\t\tfor (List<MyContract> list : updates) {\r\n\t\t\t\tif (first) {\r\n\t\t\t\t\tfirst = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tThread.sleep(10000);\r\n\t\t\t\t\t} catch (InterruptedException ex) {\r\n\t\t\t\t\t\tthrow new RuntimeException(ex);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\ttry {\r\n\t\t\t\t\tMap<MyContract, List<ContractItemsResponse>> response = updateList(list, DEFAULT_RETRIES, new ListHandler<MyContract, List<ContractItemsResponse>>() {\r\n\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\tpublic ApiResponse<List<ContractItemsResponse>> get(MyContract t) throws ApiException {\r\n\t\t\t\t\t\t\treturn getContractsApiAuth().getCorporationContractItemsWithHttpInfo(SafeConverter.toLong(t.getContractID()), owner.getOwnerID(), COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tresponses.putAll(response);\r\n\t\t\t\t} catch (ApiException ex) {\r\n\t\t\t\t\tif (ex.getCode() == 429) {\r\n\t\t\t\t\t\taddError(\"RATE LIMIT 429\", \"ESI rate limit reached. Contracts will be missing data. Try again in 15 minutes\", ex);\r\n\t\t\t\t\t\tbreak; //Ignoring rate limit\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow ex;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tPROGRESS.getAndAdd(list.size());\r\n\t\t\t\tsetProgress(SIZE.get(), PROGRESS.get(), 0, 100);\r\n\t\t\t}\r\n\t\t\towner.setContracts(EsiConverter.toContractItems(responses, owner, saveHistory));\r\n\t\t} else {\r\n\t\t\tMap<MyContract, List<ContractItemsResponse>> responses = updateList(contracts.get(owner.getOwnerID()), DEFAULT_RETRIES, new ListHandler<MyContract, List<ContractItemsResponse>>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<List<ContractItemsResponse>> get(MyContract t) throws ApiException {\r\n\t\t\t\t\t//((int) , , DATASOURCE, null, null);\r\n\t\t\t\t\tApiResponse<List<ContractItemsResponse>> response = getContractsApiAuth().getCharacterContractItemsWithHttpInfo(owner.getOwnerID(), SafeConverter.toLong(t.getContractID()), COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t\t\tPROGRESS.getAndAdd(1);\r\n\t\t\t\t\tsetProgress(SIZE.get(), PROGRESS.get(), 0, 100);\r\n\t\t\t\t\treturn response;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\towner.setContracts(EsiConverter.toContractItems(responses, owner, saveHistory));\r\n\t\t}\r\n\t\t//Public contracts (Have blueprint info Runs/Me/Te)\r\n\t\tMap<MyContract, List<PublicContractsItemsResponse>> responses = updatePagedMap(publicContracts.get(owner.getOwnerID()), new PagedListHandler<MyContract, PublicContractsItemsResponse>() {\r\n\t\t\t@Override\r\n\t\t\tprotected List<PublicContractsItemsResponse> get(MyContract contract) throws ApiException {\r\n\t\t\t\treturn updatePages(DEFAULT_RETRIES, new EsiPagesHandler<PublicContractsItemsResponse>() {\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tpublic ApiResponse<List<PublicContractsItemsResponse>> get(Integer page) throws ApiException {\r\n\t\t\t\t\t\tApiResponse<List<PublicContractsItemsResponse>> response = getContractsApiOpen().getPublicContractsItemsContractIdWithHttpInfo(SafeConverter.toLong(contract.getContractID()), COMPATIBILITY_DATE, page, null, null, null);\r\n\t\t\t\t\t\tPROGRESS.getAndAdd(1);\r\n\t\t\t\t\t\tsetProgress(SIZE.get(), PROGRESS.get(), 0, 100);\r\n\t\t\t\t\t\treturn response;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t\towner.setContracts(EsiConverter.toContractItemsPublic(responses, owner, saveHistory));\r\n\t}\r\n\r\n\tprivate static synchronized void createContracts(List<EsiOwner> owners) {\r\n\t\tif (contracts == null) {\r\n\t\t\tcontracts = new HashMap<>();\r\n\t\t\tpublicContracts = new HashMap<>();\r\n\t\t\tSet<MyContract> uniqueContacts = new HashSet<>();\r\n\t\t\tMap<Long, EsiOwner> uniqueOwners = new HashMap<>();\r\n\t\t\tfor (EsiOwner esiOwner : owners) {\r\n\t\t\t\tif (!esiOwner.isShowOwner()) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tuniqueOwners.put(esiOwner.getOwnerID(), esiOwner);\r\n\t\t\t\tcontracts.put(esiOwner.getOwnerID(), new ArrayList<>());\r\n\t\t\t\tpublicContracts.put(esiOwner.getOwnerID(), new ArrayList<>());\r\n\t\t\t\tfor (Map.Entry<MyContract, List<MyContractItem>> entry : esiOwner.getContracts().entrySet()) {\r\n\t\t\t\t\tMyContract contract = entry.getKey();\r\n\t\t\t\t\tif (contract.isIgnoreContract()) {\r\n\t\t\t\t\t\tcontinue; //Ignore contracts without items\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (entry.getValue() != null && !entry.getValue().isEmpty()) {\r\n\t\t\t\t\t\tcontinue; //Ignore contracts that have been already updated\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (esiOwner.isCorporation() && contract.isDeleted()) {\r\n\t\t\t\t\t\tcontinue; //Ignore deleted corporation contracts\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!contract.isESI()) {\r\n\t\t\t\t\t\tcontinue; //No longer in ESI\r\n\t\t\t\t\t}\r\n\t\t\t\t\tuniqueContacts.add(contract);\r\n\t\t\t\t\t//Open public contracts\r\n\t\t\t\t\tif (contract.isPublic() && contract.isOpen()) {\r\n\t\t\t\t\t\tpublicContracts.get(esiOwner.getOwnerID()).add(contract);\r\n\t\t\t\t\t\tSIZE.getAndIncrement();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfor (MyContract contract : uniqueContacts) {\r\n\t\t\t\tif (uniqueOwners.containsKey(contract.getIssuerID())) {\r\n\t\t\t\t\tcontracts.get(contract.getIssuerID()).add(contract);\r\n\t\t\t\t\tSIZE.getAndIncrement();\r\n\t\t\t\t} else if (uniqueOwners.containsKey(contract.getAssigneeID())) {\r\n\t\t\t\t\tcontracts.get(contract.getAssigneeID()).add(contract);\r\n\t\t\t\t\tSIZE.getAndIncrement();\r\n\t\t\t\t} else if (uniqueOwners.containsKey(contract.getAcceptorID())) {\r\n\t\t\t\t\tcontracts.get(contract.getAcceptorID()).add(contract);\r\n\t\t\t\t\tSIZE.getAndIncrement();\r\n\t\t\t\t} else if (uniqueOwners.containsKey(contract.getIssuerCorpID())) { //Last resort (Rate limited and access to less contract items)\r\n\t\t\t\t\tcontracts.get(contract.getIssuerCorpID()).add(contract);\r\n\t\t\t\t\tSIZE.getAndIncrement();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void setNextUpdate(Date date) {\r\n\t\t//We will never update again...\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean haveAccess() {\r\n\t\treturn owner.isContracts();\r\n\t}\r\n\r\n\t@Override\r\n\tprotected RolesEnum[] getRequiredRoles() {\r\n\t\treturn null;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiContractsGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport net.troja.eve.esi.ApiException;\r\nimport net.troja.eve.esi.ApiResponse;\r\nimport net.troja.eve.esi.model.CharacterContractsResponse;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse;\r\nimport net.troja.eve.esi.model.CorporationContractsResponse;\r\n\r\n\r\npublic class EsiContractsGetter extends AbstractEsiGetter {\r\n\r\n\tprivate final boolean saveHistory;\r\n\r\n\tpublic EsiContractsGetter(UpdateTask updateTask, EsiOwner owner, boolean saveHistory) {\r\n\t\tsuper(updateTask, owner, false, owner.getContractsNextUpdate(), TaskType.CONTRACTS);\r\n\t\tthis.saveHistory = saveHistory;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void update() throws ApiException {\r\n\t\tif (owner.isCorporation()) {\r\n\t\t\tList<CorporationContractsResponse> contracts = updatePages(DEFAULT_RETRIES, new EsiPagesHandler<CorporationContractsResponse>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<List<CorporationContractsResponse>> get(Integer page) throws ApiException {\r\n\t\t\t\t\treturn getContractsApiAuth().getCorporationContractsWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, page, null, null, null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\towner.setContracts(EsiConverter.toContractsCorporation(contracts, owner, saveHistory));\r\n\t\t} else {\r\n\t\t\tList<CharacterContractsResponse> contracts = updatePages(DEFAULT_RETRIES, new EsiPagesHandler<CharacterContractsResponse>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<List<CharacterContractsResponse>> get(Integer page) throws ApiException {\r\n\t\t\t\t\treturn getContractsApiAuth().getCharacterContractsWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, page, null, null, null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\towner.setContracts(EsiConverter.toContracts(contracts, owner, saveHistory));\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void setNextUpdate(Date date) {\r\n\t\towner.setContractsNextUpdate(date);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean haveAccess() {\r\n\t\treturn owner.isContracts();\r\n\t}\r\n\r\n\t@Override\r\n\tprotected CharacterRolesResponse.RolesEnum[] getRequiredRoles() {\r\n\t\treturn null;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiConverter.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.io.esi;\n\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\nimport net.nikr.eve.jeveasset.data.api.my.MyAccountBalance;\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\nimport net.nikr.eve.jeveasset.data.api.my.MyExtraction;\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\nimport net.nikr.eve.jeveasset.data.api.my.MyJournal;\nimport net.nikr.eve.jeveasset.data.api.my.MyLoyaltyPoints;\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\nimport net.nikr.eve.jeveasset.data.api.my.MyMining;\nimport net.nikr.eve.jeveasset.data.api.my.MyNpcStanding;\nimport net.nikr.eve.jeveasset.data.api.my.MyShip;\nimport net.nikr.eve.jeveasset.data.api.my.MySkill;\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\nimport net.nikr.eve.jeveasset.data.api.raw.RawAccountBalance;\nimport net.nikr.eve.jeveasset.data.api.raw.RawAsset;\nimport net.nikr.eve.jeveasset.data.api.raw.RawBlueprint;\nimport net.nikr.eve.jeveasset.data.api.raw.RawClone;\nimport net.nikr.eve.jeveasset.data.api.raw.RawContract;\nimport net.nikr.eve.jeveasset.data.api.raw.RawContractItem;\nimport net.nikr.eve.jeveasset.data.api.raw.RawExtraction;\nimport net.nikr.eve.jeveasset.data.api.raw.RawIndustryJob;\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournal;\nimport net.nikr.eve.jeveasset.data.api.raw.RawLoyaltyPoints;\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder;\nimport net.nikr.eve.jeveasset.data.api.raw.RawMining;\nimport net.nikr.eve.jeveasset.data.api.raw.RawNpcStanding;\nimport net.nikr.eve.jeveasset.data.api.raw.RawPublicMarketOrder;\nimport net.nikr.eve.jeveasset.data.api.raw.RawSkill;\nimport net.nikr.eve.jeveasset.data.api.raw.RawTransaction;\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\nimport net.nikr.eve.jeveasset.io.shared.DataConverter;\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\nimport net.troja.eve.esi.model.CharacterAssetsResponse;\nimport net.troja.eve.esi.model.CharacterBlueprintsResponse;\nimport net.troja.eve.esi.model.CharacterClonesResponse;\nimport net.troja.eve.esi.model.CharacterContractsResponse;\nimport net.troja.eve.esi.model.CharacterIndustryJobsResponse;\nimport net.troja.eve.esi.model.CharacterLocationResponse;\nimport net.troja.eve.esi.model.CharacterLoyaltyPointsResponse;\nimport net.troja.eve.esi.model.CharacterMiningResponse;\nimport net.troja.eve.esi.model.CharacterOrdersHistoryResponse;\nimport net.troja.eve.esi.model.CharacterOrdersResponse;\nimport net.troja.eve.esi.model.CharacterPlanetsResponse;\nimport net.troja.eve.esi.model.CharacterShipResponse;\nimport net.troja.eve.esi.model.StandingsResponse;\nimport net.troja.eve.esi.model.CharacterWalletJournalResponse;\nimport net.troja.eve.esi.model.CharacterWalletTransactionsResponse;\nimport net.troja.eve.esi.model.CorporationAssetsResponse;\nimport net.troja.eve.esi.model.CorporationBlueprintsResponse;\nimport net.troja.eve.esi.model.PlanetPin;\nimport net.troja.eve.esi.model.Skill;\nimport net.troja.eve.esi.model.ContractItemsResponse;\nimport net.troja.eve.esi.model.CorporationContractsResponse;\nimport net.troja.eve.esi.model.CorporationIndustryJobsResponse;\nimport net.troja.eve.esi.model.CorporationMiningExtractionsResponse;\nimport net.troja.eve.esi.model.CorporationMiningObserverResponse;\nimport net.troja.eve.esi.model.CorporationMiningObserversResponse;\nimport net.troja.eve.esi.model.CorporationOrdersHistoryResponse;\nimport net.troja.eve.esi.model.CorporationOrdersResponse;\nimport net.troja.eve.esi.model.CorporationWalletJournalResponse;\nimport net.troja.eve.esi.model.CorporationWalletTransactionsResponse;\nimport net.troja.eve.esi.model.CorporationWalletsResponse;\nimport net.troja.eve.esi.model.DivisionsHangar;\nimport net.troja.eve.esi.model.DivisionsWallet;\nimport net.troja.eve.esi.model.JumpClone;\nimport net.troja.eve.esi.model.MarketRegionOrdersResponse;\nimport net.troja.eve.esi.model.PinContent;\nimport net.troja.eve.esi.model.PublicContractsItemsResponse;\n\n\npublic class EsiConverter extends DataConverter {\n\n\tprivate EsiConverter() { }\n\n\tpublic static List<MyAccountBalance> toAccountBalance(Double responses, OwnerType owner, Integer accountKey) {\n\t\treturn convertRawAccountBalance(Collections.singletonList(new RawAccountBalance(responses, accountKey)), owner);\n\t}\n\n\tpublic static List<MyAccountBalance> toAccountBalanceCorporation(List<CorporationWalletsResponse> responses, OwnerType owner) {\n\t\tList<RawAccountBalance> rawAccountBalances = new ArrayList<>();\n\t\tfor (CorporationWalletsResponse response : responses) {\n\t\t\trawAccountBalances.add(new RawAccountBalance(response));\n\t\t}\n\t\treturn convertRawAccountBalance(rawAccountBalances, owner);\n\t}\n\n\tpublic static MyShip toActiveShip(CharacterShipResponse shipType, CharacterLocationResponse shipLocation) {\n\t\treturn new MyShip(shipType, shipLocation);\n\t}\n\n\tpublic static List<MyAsset> toAssets(List<CharacterAssetsResponse> responses, OwnerType owner) {\n\t\tList<RawAsset> rawAssets = new ArrayList<>();\n\t\tfor (CharacterAssetsResponse response : responses) {\n\t\t\trawAssets.add(new RawAsset(response));\n\t\t\tApiIdConverter.updateItem(SafeConverter.toInteger(response.getTypeId()));\n\t\t}\n\t\treturn convertRawAssets(rawAssets, owner);\n\t}\n\n\tpublic static List<MyAsset> toAssetsCorporation(List<CorporationAssetsResponse> responses, OwnerType owner) {\n\t\tList<RawAsset> rawAssets = new ArrayList<>();\n\t\tfor (CorporationAssetsResponse response : responses) {\n\t\t\trawAssets.add(new RawAsset(response));\n\t\t\tApiIdConverter.updateItem(SafeConverter.toInteger(response.getTypeId()));\n\t\t}\n\t\treturn convertRawAssets(rawAssets, owner);\n\t}\n\n\tpublic static MyAsset toAssetsShip(CharacterShipResponse shipType, CharacterLocationResponse shipLocation, OwnerType owner) {\n\t\treturn toMyAsset(new RawAsset(shipType, shipLocation), owner, new ArrayList<>());\n\t}\n\n\tpublic static MyAsset toAssetsPlanetaryInteraction(CharacterPlanetsResponse planet, PlanetPin pin, OwnerType owner) {\n\t\tMyAsset parent = toMyAsset(new RawAsset(planet, pin), owner, new ArrayList<>());\n\t\tList<MyAsset> parents = Collections.singletonList(parent);\n\t\tfor (PinContent content : pin.getContents()) {\n\t\t\tparent.addAsset(toMyAsset(new RawAsset(planet, pin, content), owner, parents));\n\t\t}\n\t\treturn parent;\n\t}\n\n\tpublic static Map<Long, RawBlueprint> toBlueprints(List<CharacterBlueprintsResponse> responses) {\n\t\tMap<Long, RawBlueprint> rawBlueprints = new HashMap<>();\n\t\tfor (CharacterBlueprintsResponse response : responses) {\n\t\t\trawBlueprints.put(response.getItemId(), new RawBlueprint(response));\n\t\t\tApiIdConverter.updateItem(SafeConverter.toInteger(response.getTypeId()));\n\t\t}\n\t\treturn rawBlueprints;\n\t}\n\n\tpublic static Map<Long, RawBlueprint> toBlueprintsCorporation(List<CorporationBlueprintsResponse> responses) {\n\t\tMap<Long, RawBlueprint> rawBlueprints = new HashMap<>();\n\t\tfor (CorporationBlueprintsResponse response : responses) {\n\t\t\trawBlueprints.put(response.getItemId(), new RawBlueprint(response));\n\t\t\tApiIdConverter.updateItem(SafeConverter.toInteger(response.getTypeId()));\n\t\t}\n\t\treturn rawBlueprints;\n\t}\n\n\tpublic static Set<MyIndustryJob> toIndustryJobs(List<CharacterIndustryJobsResponse> responses, OwnerType owner, boolean saveHistory) {\n\t\tList<RawIndustryJob> rawIndustryJobs = new ArrayList<>();\n\t\tfor (CharacterIndustryJobsResponse response : responses) {\n\t\t\trawIndustryJobs.add(new RawIndustryJob(response));\n\t\t\tApiIdConverter.updateItem(SafeConverter.toInteger(response.getBlueprintTypeId()));\n\t\t\tApiIdConverter.updateItem(SafeConverter.toInteger(response.getProductTypeId()));\n\t\t}\n\t\treturn convertRawIndustryJobs(rawIndustryJobs, owner, saveHistory);\n\t}\n\n\tpublic static Set<MyIndustryJob> toIndustryJobsCorporation(List<CorporationIndustryJobsResponse> responses, OwnerType owner, boolean saveHistory) {\n\t\tList<RawIndustryJob> rawIndustryJobs = new ArrayList<>();\n\t\tfor (CorporationIndustryJobsResponse response : responses) {\n\t\t\trawIndustryJobs.add(new RawIndustryJob(response));\n\t\t\tApiIdConverter.updateItem(SafeConverter.toInteger(response.getBlueprintTypeId()));\n\t\t\tApiIdConverter.updateItem(SafeConverter.toInteger(response.getProductTypeId()));\n\t\t}\n\t\treturn convertRawIndustryJobs(rawIndustryJobs, owner, saveHistory);\n\t}\n\n\tpublic static Set<MyJournal> toJournals(List<CharacterWalletJournalResponse> responses, OwnerType owner, Integer accountKey, boolean saveHistory) {\n\t\tList<RawJournal> rawJournals = new ArrayList<>();\n\t\tfor (CharacterWalletJournalResponse response : responses) {\n\t\t\trawJournals.add(new RawJournal(response, accountKey));\n\t\t}\n\t\treturn convertRawJournals(rawJournals, owner, saveHistory);\n\t}\n\n\tpublic static Set<MyJournal> toJournalsCorporation(List<CorporationWalletJournalResponse> responses, OwnerType owner, Integer accountKey, boolean saveHistory) {\n\t\tList<RawJournal> rawJournals = new ArrayList<>();\n\t\tfor (CorporationWalletJournalResponse response : responses) {\n\t\t\trawJournals.add(new RawJournal(response, accountKey));\n\t\t}\n\t\treturn convertRawJournals(rawJournals, owner, saveHistory);\n\t}\n\n\tpublic static Map<MyContract, List<MyContractItem>> toContracts(List<CharacterContractsResponse> responses, OwnerType owner, boolean saveHistory) {\n\t\tList<RawContract> rawContracts = new ArrayList<>();\n\t\tfor (CharacterContractsResponse response : responses) {\n\t\t\trawContracts.add(new RawContract(response));\n\t\t}\n\t\treturn convertRawContracts(rawContracts, owner, saveHistory);\n\t}\n\n\tpublic static Map<MyContract, List<MyContractItem>> toContractsCorporation(List<CorporationContractsResponse> responses, OwnerType owner, boolean saveHistory) {\n\t\tList<RawContract> rawContracts = new ArrayList<>();\n\t\tfor (CorporationContractsResponse response : responses) {\n\t\t\trawContracts.add(new RawContract(response));\n\t\t}\n\t\treturn convertRawContracts(rawContracts, owner, saveHistory);\n\t}\n\n\tpublic static Map<MyContract, List<MyContractItem>> toContractItems(Map<MyContract, List<ContractItemsResponse>> responsess, OwnerType owner, boolean saveHistory) {\n\t\tMap<MyContract, List<RawContractItem>> rawContractItems = new HashMap<>();\n\t\tfor (Map.Entry<MyContract, List<ContractItemsResponse>> entry : responsess.entrySet()) {\n\t\t\tfor (ContractItemsResponse response : entry.getValue()) {\n\t\t\t\tList<RawContractItem> list = rawContractItems.get(entry.getKey());\n\t\t\t\tif (list == null) {\n\t\t\t\t\tlist = new ArrayList<>();\n\t\t\t\t\trawContractItems.put(entry.getKey(), list);\n\t\t\t\t}\n\t\t\t\tlist.add(new RawContractItem(response));\n\t\t\t\tApiIdConverter.updateItem(SafeConverter.toInteger(response.getTypeId()));\n\t\t\t}\n\t\t}\n\t\treturn convertRawContractItems(rawContractItems, owner, saveHistory);\n\t}\n\n\tpublic static Map<MyContract, List<MyContractItem>> toContractItemsPublic(Map<MyContract, List<PublicContractsItemsResponse>> responsess, OwnerType owner, boolean saveHistory) {\n\t\tMap<MyContract, List<RawContractItem>> rawContractItems = new HashMap<>();\n\t\tfor (Map.Entry<MyContract, List<PublicContractsItemsResponse>> entry : responsess.entrySet()) {\n\t\t\tfor (PublicContractsItemsResponse response : entry.getValue()) {\n\t\t\t\tList<RawContractItem> list = rawContractItems.get(entry.getKey());\n\t\t\t\tif (list == null) {\n\t\t\t\t\tlist = new ArrayList<>();\n\t\t\t\t\trawContractItems.put(entry.getKey(), list);\n\t\t\t\t}\n\t\t\t\tlist.add(new RawContractItem(response));\n\t\t\t\tApiIdConverter.updateItem(SafeConverter.toInteger(response.getTypeId()));\n\t\t\t}\n\t\t}\n\t\treturn convertRawContractItems(rawContractItems, owner, saveHistory);\n\t}\n\n\tpublic static Set<MyMarketOrder> toMarketOrders(List<CharacterOrdersResponse> responses, List<CharacterOrdersHistoryResponse> responsesHistory, OwnerType owner, boolean saveHistory) {\n\t\tList<RawMarketOrder> rawMarketOrders = new ArrayList<>();\n\t\tfor (CharacterOrdersResponse response : responses) {\n\t\t\trawMarketOrders.add(new RawMarketOrder(response));\n\t\t\tApiIdConverter.updateItem(SafeConverter.toInteger(response.getTypeId()));\n\t\t}\n\t\tfor (CharacterOrdersHistoryResponse response : responsesHistory) {\n\t\t\trawMarketOrders.add(new RawMarketOrder(response));\n\t\t}\n\t\treturn convertRawMarketOrders(rawMarketOrders, owner, saveHistory);\n\t}\n\n\tpublic static Set<MyMarketOrder> toMarketOrdersCorporation(List<CorporationOrdersResponse> responses, List<CorporationOrdersHistoryResponse> responsesHistory, OwnerType owner, boolean saveHistory) {\n\t\tList<RawMarketOrder> rawMarketOrders = new ArrayList<>();\n\t\tfor (CorporationOrdersResponse response : responses) {\n\t\t\trawMarketOrders.add(new RawMarketOrder(response));\n\t\t\tApiIdConverter.updateItem(SafeConverter.toInteger(response.getTypeId()));\n\t\t}\n\t\tfor (CorporationOrdersHistoryResponse response : responsesHistory) {\n\t\t\trawMarketOrders.add(new RawMarketOrder(response));\n\t\t}\n\t\treturn convertRawMarketOrders(rawMarketOrders, owner, saveHistory);\n\t}\n\n\tpublic static Set<MyTransaction> toTransaction(List<CharacterWalletTransactionsResponse> responses, OwnerType owner, Integer accountKey, boolean saveHistory) {\n\t\tList<RawTransaction> rawTransactions = new ArrayList<>();\n\t\tfor (CharacterWalletTransactionsResponse response : responses) {\n\t\t\trawTransactions.add(new RawTransaction(response, accountKey));\n\t\t\tApiIdConverter.updateItem(SafeConverter.toInteger(response.getTypeId()));\n\t\t}\n\t\treturn convertRawTransactions(rawTransactions, owner, saveHistory);\n\t}\n\n\tpublic static Set<MyTransaction> toTransactionCorporation(List<CorporationWalletTransactionsResponse> responses, OwnerType owner, Integer accountKey, boolean saveHistory) {\n\t\tList<RawTransaction> rawTransactions = new ArrayList<>();\n\t\tfor (CorporationWalletTransactionsResponse response : responses) {\n\t\t\trawTransactions.add(new RawTransaction(response, accountKey));\n\t\t\tApiIdConverter.updateItem(SafeConverter.toInteger(response.getTypeId()));\n\t\t}\n\t\treturn convertRawTransactions(rawTransactions, owner, saveHistory);\n\t}\n\n\tpublic static Map<Integer, String> toWalletDivisions(List<DivisionsWallet> divisionsWallets) {\n\t\tMap<Integer, String> divisions = new HashMap<>();\n\t\tfor (DivisionsWallet response : divisionsWallets) {\n\t\t\tdivisions.put(SafeConverter.toInteger(response.getDivision()), response.getName());\n\t\t}\n\t\treturn divisions;\n\t}\n\n\tpublic static Map<Integer, String> toAssetDivisions(List<DivisionsHangar> divisionsWallets) {\n\t\tMap<Integer, String> divisions = new HashMap<>();\n\t\tfor (DivisionsHangar response : divisionsWallets) {\n\t\t\tdivisions.put(SafeConverter.toInteger(response.getDivision()), response.getName());\n\t\t}\n\t\treturn divisions;\n\t}\n\n\tpublic static Map<Integer, Set<RawPublicMarketOrder>> toPublicMarketOrders(List<MarketRegionOrdersResponse> responses) {\n\t\tMap<Integer, Set<RawPublicMarketOrder>> marketOrders = new HashMap<>();\n\t\tfor (MarketRegionOrdersResponse response : responses) {\n\t\t\tRawPublicMarketOrder marketOrder = new RawPublicMarketOrder(response);\n\t\t\tApiIdConverter.updateItem(SafeConverter.toInteger(response.getTypeId()));\n\t\t\tSet<RawPublicMarketOrder> set = marketOrders.get(marketOrder.getTypeID());\n\t\t\tif (set == null) {\n\t\t\t\tset = new HashSet<>();\n\t\t\t\tmarketOrders.put(marketOrder.getTypeID(), set);\n\t\t\t}\n\t\t\tset.add(marketOrder);\n\t\t}\n\t\treturn marketOrders;\n\t}\n\n\tpublic static List<MySkill> toSkills(List<Skill> responses, OwnerType owner) {\n\t\tList<RawSkill> skills = new ArrayList<>();\n\t\tfor (Skill response : responses) {\n\t\t\tskills.add(new RawSkill(response));\n\t\t\tApiIdConverter.updateItem(SafeConverter.toInteger(response.getSkillId()));\n\t\t}\n\t\treturn convertRawSkills(skills, owner);\n\t}\n\n\tpublic static Set<MyMining> toMining(List<CharacterMiningResponse> responses, OwnerType owner, boolean saveHistory) {\n\t\tList<RawMining> mining = new ArrayList<>();\n\t\tfor (CharacterMiningResponse response : responses) {\n\t\t\tmining.add(new RawMining(response, owner));\n\t\t\tApiIdConverter.updateItem(SafeConverter.toInteger(response.getTypeId()));\n\t\t}\n\t\treturn convertRawMining(mining, owner, saveHistory);\n\t}\n\n\tpublic static Set<MyMining> toMining(Map<CorporationMiningObserversResponse, List<CorporationMiningObserverResponse>> responses, OwnerType owner, boolean saveHistory) {\n\t\tList<RawMining> mining = new ArrayList<>();\n\t\tfor (Map.Entry<CorporationMiningObserversResponse, List<CorporationMiningObserverResponse>> response : responses.entrySet()) {\n\t\t\tfor (CorporationMiningObserverResponse miningObserver : response.getValue()) {\n\t\t\t\tmining.add(new RawMining(response.getKey(), miningObserver, owner));\n\t\t\t}\n\t\t}\n\t\treturn convertRawMining(mining, owner, saveHistory);\n\t}\n\n\tpublic static Set<MyExtraction> toExtraction(List<CorporationMiningExtractionsResponse> responses, OwnerType owner, boolean saveHistory) {\n\t\tList<RawExtraction> extractions = new ArrayList<>();\n\t\tfor (CorporationMiningExtractionsResponse response : responses) {\n\t\t\textractions.add(new RawExtraction(response));\n\t\t}\n\t\treturn convertRawExtraction(extractions, owner, saveHistory);\n\t}\n\n\tpublic static List<RawClone> toClones(CharacterClonesResponse responses, List<Long> activeCloneImplants, Long activeCloneLocationID, OwnerType owner) {\n\t\tList<RawClone> clones = new ArrayList<>();\n\t\tclones.add(new RawClone(activeCloneImplants, owner.getOwnerID(), activeCloneLocationID));\n\t\tfor (JumpClone response : responses.getJumpClones()) {\n\t\t\tclones.add(new RawClone(response));\n\t\t}\n\t\treturn clones;\n\t}\n\n\tpublic static Set<MyLoyaltyPoints> toLoyaltyPoints(List<CharacterLoyaltyPointsResponse> responses, OwnerType owner) {\n\t\tSet<RawLoyaltyPoints> loyaltyPoints = new HashSet<>();\n\t\tfor (CharacterLoyaltyPointsResponse response : responses) {\n\t\t\tloyaltyPoints.add(new RawLoyaltyPoints(response));\n\t\t}\n\t\treturn convertMyLoyaltyPoints(loyaltyPoints, owner);\n\t}\n\n\tpublic static Set<MyNpcStanding> toNpcStanding(List<StandingsResponse> responses, OwnerType owner) {\n\t\tSet<RawNpcStanding> npcStandings = new HashSet<>();\n\t\tfor (StandingsResponse response : responses) {\n\t\t\tnpcStandings.add(new RawNpcStanding(response));\n\t\t}\n\t\treturn convertMyNpcStanding(npcStandings, owner);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiDivisionsGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.util.Date;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport net.troja.eve.esi.ApiException;\r\nimport net.troja.eve.esi.ApiResponse;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\r\nimport net.troja.eve.esi.model.CorporationDivisionsResponse;\r\n\r\n\r\npublic class EsiDivisionsGetter extends AbstractEsiGetter {\r\n\r\n\tpublic EsiDivisionsGetter(UpdateTask updateTask, EsiOwner owner) {\r\n\t\tsuper(updateTask, owner, false, owner.getAssetNextUpdate(), TaskType.DIVISIONS);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void update() throws ApiException {\r\n\t\tif (!owner.isCorporation()) {\r\n\t\t\treturn; //Character accounts can not get divisions\r\n\t\t}\r\n\t\tCorporationDivisionsResponse response = update(DEFAULT_RETRIES, new EsiHandler<CorporationDivisionsResponse>() {\r\n\t\t\t@Override\r\n\t\t\tpublic ApiResponse<CorporationDivisionsResponse> get() throws ApiException {\r\n\t\t\t\treturn getCorporationApiAuth().getCorporationDivisionsWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t}\r\n\t\t});\r\n\t\towner.setAssetDivisions(EsiConverter.toAssetDivisions(response.getHangar()));\r\n\t\towner.setWalletDivisions(EsiConverter.toWalletDivisions(response.getWallet()));\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean haveAccess() {\r\n\t\tif (owner.isCorporation()) {\r\n\t\t\treturn owner.isDivisions();\r\n\t\t} else {\r\n\t\t\treturn true; //Overwrite the default, so, we don't get errors\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void setNextUpdate(Date date) {\r\n\t\t//Nope\r\n\t}\r\n\r\n\t@Override\r\n\tprotected RolesEnum[] getRequiredRoles() {\r\n\t\tRolesEnum[] roles = {RolesEnum.DIRECTOR};\r\n\t\treturn roles;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiFactionWarfareGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport net.troja.eve.esi.ApiException;\r\nimport net.troja.eve.esi.ApiResponse;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\r\nimport net.troja.eve.esi.model.FactionWarfareSystemsResponse;\r\nimport net.troja.eve.esi.model.FactionsResponse;\r\n\r\n\r\npublic class EsiFactionWarfareGetter extends AbstractEsiGetter {\r\n\r\n\tpublic EsiFactionWarfareGetter(UpdateTask updateTask) {\r\n\t\tsuper(updateTask, null, false, Settings.get().getFactionWarfareNextUpdate(), TaskType.FACTION_WARFARE);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void update() throws ApiException {\r\n\t\tList<FactionWarfareSystemsResponse> factionWarfareSystems = update(DEFAULT_RETRIES, new EsiHandler<List<FactionWarfareSystemsResponse>>() {\r\n\t\t\t@Override\r\n\t\t\tpublic ApiResponse<List<FactionWarfareSystemsResponse>> get() throws ApiException {\r\n\t\t\t\treturn getFactionWarfareApiOpen().getFactionWarfareSystemsWithHttpInfo(COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t}\r\n\t\t});\r\n\t\tList<FactionsResponse> factions = update(DEFAULT_RETRIES, new EsiHandler<List<FactionsResponse>>() {\r\n\t\t\t@Override\r\n\t\t\tpublic ApiResponse<List<FactionsResponse>> get() throws ApiException {\r\n\t\t\t\treturn getUniverseApiOpen().getFactionsWithHttpInfo(COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t}\r\n\t\t});\r\n\t\tMap<Long, String> factionNames = new HashMap<>();\r\n\t\tfor (FactionsResponse faction : factions) {\r\n\t\t\tfactionNames.put(faction.getFactionId(), faction.getName());\r\n\t\t}\r\n\t\tMap<Long, String> systemOwners = new HashMap<>();\r\n\t\tfor (FactionWarfareSystemsResponse system : factionWarfareSystems) {\r\n\t\t\tsystemOwners.put(system.getSolarSystemId(), factionNames.get(system.getOccupierFactionId()));\r\n\t\t}\r\n\t\tSettings.get().setFactionWarfareSystemOwners(systemOwners);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void setNextUpdate(Date date) {\r\n\t\tSettings.get().setFactionWarfareNextUpdate(date);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean haveAccess() {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected RolesEnum[] getRequiredRoles() {\r\n\t\treturn null;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiIndustryJobsGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport net.troja.eve.esi.ApiException;\r\nimport net.troja.eve.esi.ApiResponse;\r\nimport net.troja.eve.esi.model.CharacterIndustryJobsResponse;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\r\nimport net.troja.eve.esi.model.CorporationIndustryJobsResponse;\r\n\r\n\r\npublic class EsiIndustryJobsGetter extends AbstractEsiGetter {\r\n\r\n\tprivate final boolean saveHistory;\r\n\r\n\tpublic EsiIndustryJobsGetter(UpdateTask updateTask, EsiOwner owner, boolean saveHistory) {\r\n\t\tsuper(updateTask, owner, false, owner.getIndustryJobsNextUpdate(), TaskType.INDUSTRY_JOBS);\r\n\t\tthis.saveHistory = saveHistory;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void update() throws ApiException {\r\n\t\tif (owner.isCorporation()) {\r\n\t\t\tList<CorporationIndustryJobsResponse> industryJobs = new ArrayList<>();\r\n\t\t\t//Completed\r\n\t\t\tList<CorporationIndustryJobsResponse> completed = updatePages(DEFAULT_RETRIES, new EsiPagesHandler<CorporationIndustryJobsResponse>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<List<CorporationIndustryJobsResponse>> get(Integer page) throws ApiException {\r\n\t\t\t\t\treturn getIndustryApiAuth().getCorporationIndustryJobsWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, true, page, null, null, null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tindustryJobs.addAll(completed);\r\n\t\t\t//Not Completed\r\n\t\t\tList<CorporationIndustryJobsResponse> incomplated = updatePages(DEFAULT_RETRIES, new EsiPagesHandler<CorporationIndustryJobsResponse>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<List<CorporationIndustryJobsResponse>> get(Integer page) throws ApiException {\r\n\t\t\t\t\treturn getIndustryApiAuth().getCorporationIndustryJobsWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, false, page, null, null, null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tindustryJobs.addAll(incomplated);\r\n\t\t\towner.setIndustryJobs(EsiConverter.toIndustryJobsCorporation(industryJobs, owner, saveHistory));\r\n\t\t} else {\r\n\t\t\tSet<Boolean> completed = new HashSet<>();\r\n\t\t\tcompleted.add(true);\r\n\t\t\tcompleted.add(false);\r\n\t\t\tMap<Boolean, List<CharacterIndustryJobsResponse>> updateList = updateList(completed, DEFAULT_RETRIES, new ListHandler<Boolean, List<CharacterIndustryJobsResponse>>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tprotected ApiResponse<List<CharacterIndustryJobsResponse>> get(Boolean includeCompleted) throws ApiException {\r\n\t\t\t\t\treturn getIndustryApiAuth().getCharacterIndustryJobsWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, includeCompleted, null, null, null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tList<CharacterIndustryJobsResponse> industryJobs = new ArrayList<>();\r\n\t\t\tfor (List<CharacterIndustryJobsResponse> list : updateList.values()) {\r\n\t\t\t\tindustryJobs.addAll(list);\r\n\t\t\t}\r\n\t\t\towner.setIndustryJobs(EsiConverter.toIndustryJobs(industryJobs, owner, saveHistory));\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void setNextUpdate(Date date) {\r\n\t\towner.setIndustryJobsNextUpdate(date);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean haveAccess() {\r\n\t\treturn owner.isIndustryJobs();\r\n\t}\r\n\r\n\t@Override\r\n\tprotected RolesEnum[] getRequiredRoles() {\r\n\t\tRolesEnum[] roles = {RolesEnum.DIRECTOR, RolesEnum.FACTORY_MANAGER};\r\n\t\treturn roles;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiItemsGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport static net.nikr.eve.jeveasset.io.esi.AbstractEsiGetter.getMarketApiOpen;\r\nimport net.nikr.eve.jeveasset.io.local.ItemsReader;\r\nimport net.nikr.eve.jeveasset.io.online.EveRefGetter;\r\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\r\nimport net.troja.eve.esi.ApiException;\r\nimport net.troja.eve.esi.ApiResponse;\r\nimport net.troja.eve.esi.model.CategoryResponse;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\r\nimport net.troja.eve.esi.model.DogmaAttribute;\r\nimport net.troja.eve.esi.model.DogmaEffect;\r\nimport net.troja.eve.esi.model.GroupResponse;\r\nimport net.troja.eve.esi.model.MarketGroupResponse;\r\nimport net.troja.eve.esi.model.TypeResponse;\r\n\r\n\r\npublic class EsiItemsGetter extends AbstractEsiGetter {\r\n\r\n\t/**\r\n\t * Change ESI_ITEM_VERSION to force items_updates.xml items to be updated again.\r\n\t * ChangeLog\r\n\t * 1.2.0:\r\n\t * Updated with EveRef type and blueprint data\r\n\t */\r\n\tpublic final static String ESI_ITEM_VERSION = \"1.2.0\";\r\n\tpublic final static String ESI_ITEM_EMPTY = \"EMPTY\";\r\n\r\n\tprivate final static Map<Long, GroupResponse> GROUPS_CACHE = new HashMap<>();\r\n\tprivate final static Map<Long, CategoryResponse> CATEGORY_CACHE = new HashMap<>();\r\n\tprivate final static Map<Long, MarketGroupResponse> MARKET_GROUP_CACHE = new HashMap<>();\r\n\r\n\tpublic final static long BASE_PRICE_DEFAULT = -1;\r\n\tpublic final static int PRODUCT_TYPE_ID_DEFAULT = 0;\r\n\tpublic final static int PRODUCT_QUANTITY_DEFAULT = 1;\r\n\r\n\tprivate final int typeID;\r\n\tprivate Item item = null;\r\n\r\n\tpublic EsiItemsGetter(int typeID) {\r\n\t\tsuper(null, null, true, Settings.getNow(), TaskType.ITEM_TYPES);\r\n\t\tthis.typeID = typeID;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void update() throws ApiException {\r\n\t\t//Types\r\n\t\tTypeResponse typeResponse = update(DEFAULT_RETRIES, new EsiHandler<TypeResponse>() {\r\n\t\t\t@Override\r\n\t\t\tpublic ApiResponse<TypeResponse> get() throws ApiException {\r\n\t\t\t\treturn getUniverseApiOpen().getTypeWithHttpInfo((long) typeID, COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t}\r\n\t\t});\r\n\t\t//Groups\r\n\t\tfinal long groupID = typeResponse.getGroupId();\r\n\t\tGroupResponse groupResponse = GROUPS_CACHE.get(groupID);\r\n\t\tif (groupResponse == null) {\r\n\t\t\tgroupResponse = update(DEFAULT_RETRIES, new EsiHandler<GroupResponse>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<GroupResponse> get() throws ApiException {\r\n\t\t\t\t\treturn getUniverseApiOpen().getGroupWithHttpInfo(groupID, COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tGROUPS_CACHE.put(groupID, groupResponse);\r\n\t\t}\r\n\t\tfinal long categoryID = groupResponse.getCategoryId();\r\n\t\t//Categories\r\n\t\tCategoryResponse categoryResponse = CATEGORY_CACHE.get(categoryID);\r\n\t\tif (categoryResponse == null) {\r\n\t\t\tcategoryResponse = update(DEFAULT_RETRIES, new EsiHandler<CategoryResponse>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<CategoryResponse> get() throws ApiException {\r\n\t\t\t\t\treturn getUniverseApiOpen().getCategoryWithHttpInfo(categoryID, COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tCATEGORY_CACHE.put(categoryID, categoryResponse);\r\n\t\t}\r\n\t\t//Market Groups\r\n\t\tMarketGroupResponse marketGroupResponse = null;\r\n\t\tLong marketGroupID = typeResponse.getMarketGroupId();\r\n\t\tif (marketGroupID != null) {\r\n\t\t\tmarketGroupResponse  = MARKET_GROUP_CACHE.get(marketGroupID);\r\n\t\t\tif (marketGroupResponse == null) {\r\n\t\t\t\tmarketGroupResponse = update(DEFAULT_RETRIES, new EsiHandler<MarketGroupResponse>() {\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tpublic ApiResponse<MarketGroupResponse> get() throws ApiException {\r\n\t\t\t\t\t\treturn getMarketApiOpen().getMarketGroupWithHttpInfo(marketGroupID, COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tMARKET_GROUP_CACHE.put(marketGroupID, marketGroupResponse);\r\n\t\t\t}\r\n\t\t}\r\n\t\tString name = typeResponse.getName()\r\n\t\t\t\t\t\t\t.replaceAll(\" +\", \" \") //Replace 2 or more spaces\r\n\t\t\t\t\t\t\t.replace(\"\\t\", \" \") //Tab\r\n\t\t\t\t\t\t\t.replace(\"„\", \"\\\"\") //Index\r\n\t\t\t\t\t\t\t.replace(\"“\", \"\\\"\") //Set transmit state\r\n\t\t\t\t\t\t\t.replace(\"”\", \"\\\"\") //Cancel character\r\n\t\t\t\t\t\t\t.replace(\"‘\", \"'\") //Private use one\r\n\t\t\t\t\t\t\t.replace(\"’\", \"'\") //Private use two\r\n\t\t\t\t\t\t\t.replace(\"`\", \"'\") //Grave accent\r\n\t\t\t\t\t\t\t.replace(\"´\", \"'\") //Acute accent\r\n\t\t\t\t\t\t\t.replace(\"–\", \"-\") //En dash\r\n\t\t\t\t\t\t\t.replace(\"‐\", \"-\") //Hyphen\r\n\t\t\t\t\t\t\t.replace(\"‑\", \"-\") //Non-breaking hyphen\r\n\t\t\t\t\t\t\t.replace(\"‒\", \"-\") //Figure dash\r\n\t\t\t\t\t\t\t.replace(\"—\", \"-\") //Em dash\r\n\t\t\t\t\t\t\t.trim();\r\n\r\n\t\tString group = groupResponse.getName();\r\n\t\tString category = categoryResponse.getName();\r\n\t\tlong basePrice = BASE_PRICE_DEFAULT; //Base Price\r\n\t\tfloat volume = getNotNull(typeResponse.getVolume());\r\n\t\tfloat packagedVolume = getNotNull(typeResponse.getPackagedVolume());\r\n\t\tfloat capacity = getNotNull(typeResponse.getCapacity());\r\n\t//Meta / Charge Sire\r\n\t\tInteger metaGroupID = null;\r\n\t\tint metaLevel = 0;\r\n\t\tList<DogmaAttribute> dogmaAttributes = typeResponse.getDogmaAttributes();\r\n\t\tInteger charge = null;\r\n\t\tif (dogmaAttributes != null) {\r\n\t\t\tfor (DogmaAttribute attribute : dogmaAttributes) {\r\n\t\t\t\tif (attribute.getAttributeId() == 1692) { //1692 = meta group\r\n\t\t\t\t\tmetaGroupID = attribute.getValue().intValue();\r\n\t\t\t\t}\r\n\t\t\t\tif (attribute.getAttributeId() == 633) { //633 = meta level\r\n\t\t\t\t\tmetaLevel = attribute.getValue().intValue();\r\n\t\t\t\t}\r\n\t\t\t\tif (attribute.getAttributeId() == 128) { //128 = The size of the charges that can fit in the turret/whatever.\r\n\t\t\t\t\tcharge = attribute.getValue().intValue();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t//Tech Level\r\n\t\tfinal String techLevel = getTechLevel(metaGroupID);\r\n\t\t\r\n\t\tboolean marketGroup;\r\n\t\tif (marketGroupResponse != null) {\r\n\t\t\tmarketGroup = marketGroupResponse.getTypes().contains(SafeConverter.toLong(typeID));\r\n\t\t} else {\r\n\t\t\tmarketGroup = false;\r\n\t\t}\r\n\t\tint portion = SafeConverter.toInteger(typeResponse.getPortionSize());\r\n\t\tint productTypeID = PRODUCT_TYPE_ID_DEFAULT; //Product\r\n\t\tint productQuantity = PRODUCT_QUANTITY_DEFAULT; //Product Quantity\r\n\t\t//Slot\r\n\t\tString slot = null;\r\n\t\tList<DogmaEffect> dogmaEffects = typeResponse.getDogmaEffects();\r\n\t\tif (dogmaEffects != null) {\r\n\t\t\tfor (DogmaEffect attribute : dogmaEffects) {\r\n\t\t\t\tif (attribute.getIsDefault()) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tif (attribute.getEffectId() == 11) { //11 = Requires a low power slot\r\n\t\t\t\t\tslot = \"Low\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif (attribute.getEffectId() == 12) { //12 = Requires a high power slot\r\n\t\t\t\t\tslot = \"High\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif (attribute.getEffectId() == 13) { //13 = Requires a medium power slot\r\n\t\t\t\t\tslot = \"Medium\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif (attribute.getEffectId() == 2663) { //2663 = Must be installed into an open rig slot\r\n\t\t\t\t\tslot = \"Rig\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif (attribute.getEffectId() == 3772) { //3772 = Must be installed into an available subsystem slot on a Tech III ship.\r\n\t\t\t\t\tslot = \"Subsystem\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Charge Size\r\n\t\tString chargeSize = ItemsReader.getChargeSize(charge);\r\n\t\t//Item\r\n\t\titem = new Item(typeID, name, group, category, basePrice, volume, packagedVolume, capacity, metaLevel, techLevel, marketGroup, portion, productTypeID, productQuantity, slot, chargeSize, ESI_ITEM_VERSION);\r\n\r\n\t\t//EveRef Update\r\n\t\titem = EveRefGetter.getItem(item); //Update from EveRef\r\n\t}\r\n\r\n\tprivate float getNotNull(Double d) {\r\n\t\tif (d != null) {\r\n\t\t\treturn SafeConverter.toFloat(d);\r\n\t\t} else {\r\n\t\t\treturn 0f;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static String getTechLevel(Integer metaGroupID) {\r\n\t\tif (metaGroupID == null) {\r\n\t\t\treturn \"Tech I\"; \r\n\t\t}\r\n\r\n\t\tswitch (metaGroupID) {\r\n\t\t\tcase 1: return \"Tech I\";\r\n\t\t\tcase 2: return \"Tech II\";\r\n\t\t\tcase 3: return \"Storyline\";\r\n\t\t\tcase 4: return \"Faction\";\r\n\t\t\tcase 5: return \"Officer\";\r\n\t\t\tcase 6: return \"Deadspace\";\r\n\t\t\t/*\r\n\t\t\t//No longer in use\r\n\t\t\tcase 7: return \"Frigates\";\r\n\t\t\tcase 8: return \"Elite Frigates\";\r\n\t\t\tcase 9: return \"Commander Frigates\";\r\n\t\t\tcase 10: return \"Destroyer\";\r\n\t\t\tcase 11: return \"Cruiser\";\r\n\t\t\tcase 12: return \"Elite Cruiser\";\r\n\t\t\tcase 13: return \"Commander Cruiser\";\r\n\t\t\t*/\r\n\t\t\tcase 14: return \"Tech III\";\r\n\t\t\tcase 15: return \"Abyssal\";\r\n\t\t\tcase 17: return \"Premium\";\r\n\t\t\tcase 19: return \"Limited Time\";\r\n\t\t\tcase 52: return \"Faction\"; //Structure Faction\r\n\t\t\tcase 53: return \"Tech II\"; //Structure Tech II\r\n\t\t\tcase 54: return \"Tech I\"; //Structure Tech I\r\n\t\t\tdefault: return \"Tech I\";\r\n\t\t}\r\n\t}\r\n\r\n\tpublic Item getItem() {\r\n\t\treturn item;\r\n\t}\r\n\r\n\r\n\t@Override\r\n\tprotected void setNextUpdate(Date date) {\r\n\t\t//Do Nothing\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean haveAccess() {\r\n\t\treturn true; //Only use public endpoints\r\n\t}\r\n\r\n\t@Override\r\n\tprotected RolesEnum[] getRequiredRoles() {\r\n\t\treturn null;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiJournalGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\r\nimport net.troja.eve.esi.ApiException;\r\nimport net.troja.eve.esi.ApiResponse;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\r\nimport net.troja.eve.esi.model.CharacterWalletJournalResponse;\r\nimport net.troja.eve.esi.model.CorporationWalletJournalResponse;\r\n\r\n\r\npublic class EsiJournalGetter extends AbstractEsiGetter {\r\n\r\n\tprivate final boolean saveHistory;\r\n\r\n\tpublic EsiJournalGetter(UpdateTask updateTask, EsiOwner owner, boolean saveHistory) {\r\n\t\tsuper(updateTask, owner, false, owner.getJournalNextUpdate(), TaskType.JOURNAL);\r\n\t\tthis.saveHistory = saveHistory;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void update() throws ApiException {\r\n\t\tif (owner.isCorporation()) {\r\n\t\t\tfor (int i = 1; i < 8; i++) { //Division 1-7\r\n\t\t\t\tfinal int division = i;\r\n\t\t\t\tList<CorporationWalletJournalResponse> journals = updatePages(DEFAULT_RETRIES, new EsiPagesHandler<CorporationWalletJournalResponse>() {\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tpublic ApiResponse<List<CorporationWalletJournalResponse>> get(Integer page) throws ApiException {\r\n\t\t\t\t\t\t//((int) , division, DATASOURCE, null, page, null);\r\n\t\t\t\t\t\treturn getWalletApiAuth().getCorporationWalletJournalWithHttpInfo(owner.getOwnerID(), SafeConverter.toLong(division), COMPATIBILITY_DATE, page, null, null, null);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tint fixedDivision = division + 999;\r\n\t\t\t\towner.setJournal(EsiConverter.toJournalsCorporation(journals, owner, fixedDivision, saveHistory));\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tList<CharacterWalletJournalResponse> journals = updatePages(DEFAULT_RETRIES, new EsiPagesHandler<CharacterWalletJournalResponse>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<List<CharacterWalletJournalResponse>> get(Integer page) throws ApiException {\r\n\t\t\t\t\treturn getWalletApiAuth().getCharacterWalletJournalWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, page, null, null, null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\towner.setJournal(EsiConverter.toJournals(journals, owner, 1000, saveHistory));\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void setNextUpdate(Date date) {\r\n\t\towner.setJournalNextUpdate(date);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean haveAccess() {\r\n\t\treturn owner.isJournal();\r\n\t}\r\n\r\n\t@Override\r\n\tprotected RolesEnum[] getRequiredRoles() {\r\n\t\tRolesEnum[] roles = {RolesEnum.DIRECTOR, RolesEnum.ACCOUNTANT, RolesEnum.JUNIOR_ACCOUNTANT};\r\n\t\treturn roles;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiLocationsGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.settings.Citadel;\r\nimport net.nikr.eve.jeveasset.data.settings.Citadel.CitadelSource;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport net.nikr.eve.jeveasset.io.online.CitadelGetter;\r\nimport net.troja.eve.esi.ApiException;\r\nimport net.troja.eve.esi.ApiResponse;\r\nimport net.troja.eve.esi.model.AssetsNamesResponse;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\r\n\r\n\r\npublic class EsiLocationsGetter extends AbstractEsiGetter {\r\n\r\n\tpublic EsiLocationsGetter(UpdateTask updateTask, EsiOwner owner) {\r\n\t\tsuper(updateTask, owner, false, owner.getLocationsNextUpdate(), TaskType.LOCATIONS);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void update() throws ApiException {\r\n\t\tMap<Long, MyAsset> iDs = getIDs(owner);\r\n\t\tif (owner.isCorporation()) {\r\n\t\t\tMap<Set<Long>, List<AssetsNamesResponse>> responses = updateList(splitSet(iDs.keySet(), LOCATIONS_BATCH_SIZE), DEFAULT_RETRIES, new ListHandler<Set<Long>, List<AssetsNamesResponse>>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<List<AssetsNamesResponse>> get(Set<Long> t) throws ApiException {\r\n\t\t\t\t\treturn getAssetsApiAuth().postCorporationAssetsNamesWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, t, null, null, null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\ttry {\r\n\t\t\t\tSettings.lock(\"Ship/Container Names\");\r\n\t\t\t\tfor (Map.Entry<Set<Long>, List<AssetsNamesResponse>> entry : responses.entrySet()) {\r\n\t\t\t\t\tfor (AssetsNamesResponse response : entry.getValue()) {\r\n\t\t\t\t\t\tfinal long itemID = response.getItemId();\r\n\t\t\t\t\t\tfinal String eveName = response.getName();\r\n\t\t\t\t\t\tif (!eveName.isEmpty()) { //Set name\r\n\t\t\t\t\t\t\tSettings.get().getEveNames().put(itemID, eveName);\r\n\t\t\t\t\t\t\tMyAsset asset = iDs.get(itemID);\r\n\t\t\t\t\t\t\tif (asset.getItem().getCategory().equals(Item.CATEGORY_STRUCTURE)) {\r\n\t\t\t\t\t\t\t\tCitadelGetter.set(new Citadel(asset.getItemID(), eveName, asset.getLocationID(), false, true, CitadelSource.ESI_LOCATIONS));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else { //Remove name (Empty)\r\n\t\t\t\t\t\t\tSettings.get().getEveNames().remove(itemID);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} finally {\r\n\t\t\t\tSettings.unlock(\"Ship/Container Names\");\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tMap<Set<Long>, List<AssetsNamesResponse>> responses = updateList(splitSet(iDs.keySet(), LOCATIONS_BATCH_SIZE), DEFAULT_RETRIES, new ListHandler<Set<Long>, List<AssetsNamesResponse>>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<List<AssetsNamesResponse>> get(Set<Long> t) throws ApiException {\r\n\t\t\t\t\t//((int) , t, DATASOURCE, null);\r\n\t\t\t\t\treturn getAssetsApiAuth().postCharacterAssetsNamesWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, t, null, null, null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\ttry {\r\n\t\t\t\tSettings.lock(\"Ship/Container Names\");\r\n\t\t\t\tfor (Map.Entry<Set<Long>, List<AssetsNamesResponse>> entry : responses.entrySet()) {\r\n\t\t\t\t\tfor (AssetsNamesResponse response : entry.getValue()) {\r\n\t\t\t\t\t\tfinal long itemID = response.getItemId();\r\n\t\t\t\t\t\tfinal String eveName = response.getName();\r\n\t\t\t\t\t\tif (!eveName.isEmpty()) { //Set name\r\n\t\t\t\t\t\t\tSettings.get().getEveNames().put(itemID, eveName);\r\n\t\t\t\t\t\t\tMyAsset asset = iDs.get(itemID);\r\n\t\t\t\t\t\t\tif (asset.getItem().getCategory().equals(Item.CATEGORY_STRUCTURE)) {\r\n\t\t\t\t\t\t\t\tCitadelGetter.set(new Citadel(asset.getItemID(), eveName, asset.getLocationID(), false, true, CitadelSource.ESI_LOCATIONS));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else { //Remove name (Empty)\r\n\t\t\t\t\t\t\tSettings.get().getEveNames().remove(itemID);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} finally {\r\n\t\t\t\tSettings.unlock(\"Ship/Container Names\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void setNextUpdate(Date date) {\r\n\t\towner.setLocationsNextUpdate(date);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean haveAccess() {\r\n\t\treturn owner.isLocations();\r\n\t}\r\n\r\n\t@Override\r\n\tprotected RolesEnum[] getRequiredRoles() {\r\n\t\tRolesEnum[] roles = {RolesEnum.DIRECTOR};\r\n\t\treturn roles;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiLoyaltyPointsGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport net.troja.eve.esi.ApiException;\r\nimport net.troja.eve.esi.ApiResponse;\r\nimport net.troja.eve.esi.model.CharacterLoyaltyPointsResponse;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\r\n\r\n\r\npublic class EsiLoyaltyPointsGetter extends AbstractEsiGetter {\r\n\r\n\tpublic EsiLoyaltyPointsGetter(UpdateTask updateTask, EsiOwner owner) {\r\n\t\tsuper(updateTask, owner, false, owner.getLoyaltyPointsNextUpdate(), TaskType.LOYALTY_POINTS);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void update() throws ApiException {\r\n\t\tList<CharacterLoyaltyPointsResponse> response = update(DEFAULT_RETRIES, new EsiHandler<List<CharacterLoyaltyPointsResponse>>() {\r\n\t\t\t@Override\r\n\t\t\tpublic ApiResponse<List<CharacterLoyaltyPointsResponse>> get() throws ApiException {\r\n\t\t\t\treturn getLoyaltyApiAuth().getCharacterLoyaltyPointsWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t}\r\n\t\t});\r\n\t\towner.setLoyaltyPoints(EsiConverter.toLoyaltyPoints(response, owner));\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void setNextUpdate(Date date) {\r\n\t\towner.setLoyaltyPointsNextUpdate(date);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean haveAccess() {\r\n\t\treturn owner.isLoyaltyPoints();\r\n\t}\r\n\r\n\t@Override\r\n\tprotected RolesEnum[] getRequiredRoles() {\r\n\t\treturn null;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiManufacturingPrices.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.data.sde.IndustryMaterial;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport static net.nikr.eve.jeveasset.io.esi.AbstractEsiGetter.getIndustryApiOpen;\r\nimport static net.nikr.eve.jeveasset.io.esi.AbstractEsiGetter.getMarketApiOpen;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\r\nimport net.troja.eve.esi.ApiException;\r\nimport net.troja.eve.esi.ApiResponse;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\r\nimport net.troja.eve.esi.model.IndustrySystemsResponse;\r\nimport net.troja.eve.esi.model.MarketPricesResponse;\r\nimport net.troja.eve.esi.model.SystemCostIndice;\r\n\r\n\r\npublic class EsiManufacturingPrices extends AbstractEsiGetter {\r\n\r\n\tpublic EsiManufacturingPrices(UpdateTask updateTask) {\r\n\t\tsuper(updateTask, null, false,  Settings.get().getManufacturingSettings().getNextUpdate(), TaskType.MANUFACTURING_PRICES);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void update() throws ApiException {\r\n\t\t//Manufacturing Base Cost\r\n\t\tList<MarketPricesResponse> priceResponses = update(DEFAULT_RETRIES, new EsiHandler<List<MarketPricesResponse>>() {\r\n\t\t\t@Override\r\n\t\t\tpublic ApiResponse<List<MarketPricesResponse>> get() throws ApiException {\r\n\t\t\t\treturn getMarketApiOpen().getMarketPricesWithHttpInfo(COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t}\r\n\t\t});\r\n\t\tMap<Integer, MarketPricesResponse> prices = new HashMap<>();\r\n\t\tfor (MarketPricesResponse price : priceResponses) {\r\n\t\t\tprices.put(SafeConverter.toInteger(price.getTypeId()), price);\r\n\t\t}\r\n\t\tMap<Integer, Double> manufacturingPrices = new HashMap<>();\r\n\t\tfor (Item item : StaticData.get().getItems().values()) {\r\n\t\t\tint productTypeID = item.getProductTypeID();\r\n\t\t\tif (item.getManufacturingMaterials().isEmpty() || productTypeID == 0) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tdouble price = getPrice(prices, item);\r\n\t\t\tmanufacturingPrices.put(productTypeID, price);\r\n\t\t\tmanufacturingPrices.put(item.getTypeID(), price);\r\n\t\t}\r\n\t\tSettings.get().getManufacturingSettings().setPrices(manufacturingPrices);\r\n\t\t//System Indexes\r\n\t\tList<IndustrySystemsResponse> systemResponses = update(DEFAULT_RETRIES, new EsiHandler<List<IndustrySystemsResponse>>() {\r\n\t\t\t@Override\r\n\t\t\tpublic ApiResponse<List<IndustrySystemsResponse>> get() throws ApiException {\r\n\t\t\t\treturn getIndustryApiOpen().getIndustrySystemsWithHttpInfo(COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t}\r\n\t\t});\r\n\t\tMap<Integer, Float> manufacturingSystems = new HashMap<>();\r\n\t\tfor (IndustrySystemsResponse system : systemResponses) {\r\n\t\t\tfor (SystemCostIndice costIndice : system.getCostIndices()) {\r\n\t\t\t\tswitch (costIndice.getActivity()) {\r\n\t\t\t\t\tcase MANUFACTURING:\r\n\t\t\t\t\t\tmanufacturingSystems.put(SafeConverter.toInteger(system.getSolarSystemId()), SafeConverter.toFloat(costIndice.getCostIndex()));\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tSettings.get().getManufacturingSettings().setSystems(manufacturingSystems);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void setNextUpdate(Date date) {\r\n\t\tSettings.get().getManufacturingSettings().setNextUpdate(date);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean haveAccess() {\r\n\t\treturn true; //Public\r\n\t}\r\n\r\n\t@Override\r\n\tprotected RolesEnum[] getRequiredRoles() {\r\n\t\treturn null; //Public\r\n\t}\r\n\r\n\tprivate double getPrice(Map<Integer, MarketPricesResponse> prices, Item item) {\r\n\t\tdouble price = 0;\r\n\t\t\r\n\t\tfor (IndustryMaterial material : item.getManufacturingMaterials()) {\r\n\t\t\tMarketPricesResponse response = prices.get(material.getTypeID());\r\n\t\t\tif (response == null) {\r\n\t\t\t\tItem deeper = ApiIdConverter.getItem(material.getTypeID());\r\n\t\t\t\tSystem.out.println(item.getTypeName() + \" does not have a price for: \" + deeper.getTypeName());\r\n\t\t\t\t//price = price + getPrice(prices, deeper);\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tdouble adjustedPrice = response.getAdjustedPrice();\r\n\t\t\tint quantity = material.getQuantity();\r\n\t\t\tprice = price + (adjustedPrice * quantity);\r\n\t\t}\r\n\t\treturn price;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiMarketOrdersGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport net.troja.eve.esi.ApiException;\r\nimport net.troja.eve.esi.ApiResponse;\r\nimport net.troja.eve.esi.model.CharacterOrdersHistoryResponse;\r\nimport net.troja.eve.esi.model.CharacterOrdersResponse;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\r\nimport net.troja.eve.esi.model.CorporationOrdersHistoryResponse;\r\nimport net.troja.eve.esi.model.CorporationOrdersResponse;\r\n\r\n\r\npublic class EsiMarketOrdersGetter extends AbstractEsiGetter {\r\n\r\n\tprivate final boolean saveHistory;\r\n\r\n\tpublic EsiMarketOrdersGetter(UpdateTask updateTask, EsiOwner owner, boolean saveHistory) {\r\n\t\tsuper(updateTask, owner, false, owner.getMarketOrdersNextUpdate(), TaskType.MARKET_ORDERS);\r\n\t\tthis.saveHistory = saveHistory;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void update() throws ApiException {\r\n\t\tif (owner.isCorporation()) {\r\n\t\t\tList<CorporationOrdersResponse> marketOrders = updatePages(DEFAULT_RETRIES, new EsiPagesHandler<CorporationOrdersResponse>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<List<CorporationOrdersResponse>> get(Integer page) throws ApiException {\r\n\t\t\t\t\treturn getMarketApiAuth().getCorporationOrdersWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, page, null, null, null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tList<CorporationOrdersHistoryResponse> marketOrdersHistory = updatePages(DEFAULT_RETRIES, new EsiPagesHandler<CorporationOrdersHistoryResponse>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<List<CorporationOrdersHistoryResponse>> get(Integer page) throws ApiException {\r\n\t\t\t\t\treturn getMarketApiAuth().getCorporationOrdersHistoryWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, page, null, null, null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\towner.setMarketOrders(EsiConverter.toMarketOrdersCorporation(marketOrders, marketOrdersHistory, owner, saveHistory));\r\n\t\t} else {\r\n\t\t\tList<CharacterOrdersResponse> marketOrders = update(DEFAULT_RETRIES, new EsiHandler<List<CharacterOrdersResponse>>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<List<CharacterOrdersResponse>> get() throws ApiException {\r\n\t\t\t\t\treturn getMarketApiAuth().getCharacterOrdersWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tList<CharacterOrdersHistoryResponse> marketOrdersHistory = updatePages(DEFAULT_RETRIES, new EsiPagesHandler<CharacterOrdersHistoryResponse>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<List<CharacterOrdersHistoryResponse>> get(Integer page) throws ApiException {\r\n\t\t\t\t\treturn getMarketApiAuth().getCharacterOrdersHistoryWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, page, null, null, null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\towner.setMarketOrders(EsiConverter.toMarketOrders(marketOrders, marketOrdersHistory, owner, saveHistory));\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void setNextUpdate(Date date) {\r\n\t\towner.setMarketOrdersNextUpdate(date);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean haveAccess() {\r\n\t\treturn owner.isMarketOrders();\r\n\t}\r\n\r\n\t@Override\r\n\tprotected RolesEnum[] getRequiredRoles() {\r\n\t\tRolesEnum[] roles = {RolesEnum.DIRECTOR, RolesEnum.ACCOUNTANT, RolesEnum.TRADER};\r\n\t\treturn roles;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiMiningGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.settings.Citadel;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport static net.nikr.eve.jeveasset.io.esi.AbstractEsiGetter.DEFAULT_RETRIES;\r\nimport net.nikr.eve.jeveasset.io.online.CitadelGetter;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\r\nimport net.troja.eve.esi.ApiException;\r\nimport net.troja.eve.esi.ApiResponse;\r\nimport net.troja.eve.esi.model.CharacterMiningResponse;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\r\nimport net.troja.eve.esi.model.CorporationMiningExtractionsResponse;\r\nimport net.troja.eve.esi.model.CorporationMiningObserverResponse;\r\nimport net.troja.eve.esi.model.CorporationMiningObserversResponse;\r\nimport net.troja.eve.esi.model.MoonResponse;\r\n\r\n\r\npublic class EsiMiningGetter extends AbstractEsiGetter {\r\n\r\n\tprivate final boolean saveHistory;\r\n\r\n\tpublic EsiMiningGetter(UpdateTask updateTask, EsiOwner owner, boolean saveHistory) {\r\n\t\tsuper(updateTask, owner, false, owner.getMiningNextUpdate(), TaskType.MINING);\r\n\t\tthis.saveHistory = saveHistory;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void update() throws ApiException {\r\n\t\tif (owner.isCorporation()) {\r\n\t\t\t//Moon Extractions\r\n\t\t\tList<CorporationMiningExtractionsResponse> extractions = updatePages(DEFAULT_RETRIES, new EsiPagesHandler<CorporationMiningExtractionsResponse>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<List<CorporationMiningExtractionsResponse>> get(Integer page) throws ApiException {\r\n\t\t\t\t\treturn getIndustryApiAuth().getCorporationMiningExtractionsWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, page, null, null, null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t//Moon Locations\r\n\t\t\tSet<Long> moonIDs = new HashSet<>();\r\n\t\t\tfor (CorporationMiningExtractionsResponse response : extractions) { //For each planet\r\n\t\t\t\tLong planetID = response.getMoonId();\r\n\t\t\t\tMyLocation location = ApiIdConverter.getLocation(SafeConverter.toInteger(planetID));\r\n\t\t\t\tif (location.isEmpty()) {\r\n\t\t\t\t\tmoonIDs.add(planetID);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tMap<Long, MoonResponse> locationResponses = updateList(moonIDs, DEFAULT_RETRIES, new ListHandler<Long, MoonResponse>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tprotected ApiResponse<MoonResponse> get(Long planetID) throws ApiException {\r\n\t\t\t\t\t//MoonsMoonIdWithHttpInfo(, DATASOURCE, null);\r\n\t\t\t\t\treturn getUniverseApiOpen().getMoonWithHttpInfo(planetID, COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tList<Citadel> citadels = new ArrayList<>();\r\n\t\t\tfor (MoonResponse moon : locationResponses.values()) {\r\n\t\t\t\tCitadel citadel = ApiIdConverter.getCitadel(moon);\r\n\t\t\t\tif (citadel != null) {\r\n\t\t\t\t\tcitadels.add(citadel);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tCitadelGetter.set(citadels);\r\n\t\t\towner.setExtractions(EsiConverter.toExtraction(extractions, owner, saveHistory)); //Must be after the moon location update\r\n\t\t\t//Mining Ledger\r\n\t\t\tList<CorporationMiningObserversResponse> observers = updatePages(DEFAULT_RETRIES, new EsiPagesHandler<CorporationMiningObserversResponse>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<List<CorporationMiningObserversResponse>> get(Integer page) throws ApiException {\r\n\t\t\t\t\treturn getIndustryApiAuth().getCorporationMiningObserversWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, page, null, null, null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tMap<CorporationMiningObserversResponse, List<CorporationMiningObserverResponse>> miningObservers = updatePagedMap(observers, new PagedListHandler<CorporationMiningObserversResponse, CorporationMiningObserverResponse>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tprotected List<CorporationMiningObserverResponse> get(CorporationMiningObserversResponse observer) throws ApiException {\r\n\t\t\t\t\treturn updatePages(DEFAULT_RETRIES, new EsiPagesHandler<CorporationMiningObserverResponse>() {\r\n\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\tpublic ApiResponse<List<CorporationMiningObserverResponse>> get(Integer page) throws ApiException {\r\n\t\t\t\t\t\t\treturn getIndustryApiAuth().getCorporationMiningObserverWithHttpInfo(owner.getOwnerID(), observer.getObserverId(), COMPATIBILITY_DATE, page, null, null, null);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\towner.setMining(EsiConverter.toMining(miningObservers, owner, true));\r\n\t\t} else {\r\n\t\t\tList<CharacterMiningResponse> responses = updatePages(DEFAULT_RETRIES, new EsiPagesHandler<CharacterMiningResponse>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<List<CharacterMiningResponse>> get(Integer page) throws ApiException {\r\n\t\t\t\t\treturn getIndustryApiAuth().getCharacterMiningWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, page, null, null, null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\towner.setMining(EsiConverter.toMining(responses, owner, saveHistory));\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void setNextUpdate(Date date) {\r\n\t\towner.setMiningNextUpdate(date);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean haveAccess() {\r\n\t\treturn owner.isMining();\r\n\t}\r\n\r\n\t@Override\r\n\tprotected RolesEnum[] getRequiredRoles() {\r\n\t\tRolesEnum[] roles = {RolesEnum.DIRECTOR, RolesEnum.ACCOUNTANT, RolesEnum.STATION_MANAGER};\r\n\t\treturn roles;\r\n\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiNameGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.util.Date;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyJournal;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyLoyaltyPoints;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMining;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyNpcStanding;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournal.ContextType;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport net.nikr.eve.jeveasset.gui.shared.Updatable;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\nimport net.troja.eve.esi.ApiException;\r\nimport net.troja.eve.esi.ApiResponse;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\r\nimport net.troja.eve.esi.model.NamesResponse;\r\n\r\n\r\npublic class EsiNameGetter extends AbstractEsiGetter {\r\n\r\n\tprivate static final long ONE_DAY = 1000 * 60 * 60 * 24;\r\n\tprivate final List<OwnerType> ownerTypes;\r\n\r\n\tpublic EsiNameGetter(UpdateTask updateTask, List<OwnerType> ownerTypes) {\r\n\t\tsuper(updateTask, null, false, Settings.getNow(), TaskType.OWNER_ID_TO_NAME);\r\n\t\tthis.ownerTypes = ownerTypes;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void update() throws ApiException {\r\n\t\tSet<Long> ids = getOwnerIDs(ownerTypes);\r\n\t\tMap<Set<Long>, List<NamesResponse>> responses = updateList(splitSet(ids, UNIVERSE_BATCH_SIZE), DEFAULT_RETRIES, new ListHandler<Set<Long>, List<NamesResponse>>() {\r\n\t\t\t@Override\r\n\t\t\tpublic ApiResponse<List<NamesResponse>> get(Set<Long> t) throws ApiException {\r\n\t\t\t\ttry {\r\n\t\t\t\t\treturn getUniverseApiOpen().postNamesWithHttpInfo(COMPATIBILITY_DATE, t, null, null, null);\r\n\t\t\t\t} catch (ApiException ex) {\r\n\t\t\t\t\tif (ex.getCode() == 404 && ex.getResponseBody().toLowerCase().contains(\"ensure all ids are valid before resolving\")) {\r\n\t\t\t\t\t\thandleHeaders(ex);\r\n\t\t\t\t\t\treturn null; //Ignore this error we will use another endpoint instead\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow ex;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tSet<Long> retries = new HashSet<>(ids);\r\n\t\tfor (Map.Entry<Set<Long>, List<NamesResponse>> entry : responses.entrySet()) {\r\n\t\t\tfor (NamesResponse lookup : entry.getValue()) {\r\n\t\t\t\tSettings.get().getOwners().put((long)lookup.getId(), lookup.getName());\r\n\t\t\t}\r\n\t\t\tretries.removeAll(entry.getKey());\r\n\t\t}\r\n\t\tMap<Set<Long>, List<NamesResponse>> retryResponses = updateList(splitSet(retries, 1), DEFAULT_RETRIES, new ListHandler<Set<Long>, List<NamesResponse>>() {\r\n\t\t\t@Override\r\n\t\t\tpublic ApiResponse<List<NamesResponse>> get(Set<Long> t) throws ApiException {\r\n\t\t\t\ttry {\r\n\t\t\t\t\treturn getUniverseApiOpen().postNamesWithHttpInfo(COMPATIBILITY_DATE, t, null, null, null);\r\n\t\t\t\t} catch (ApiException ex) {\r\n\t\t\t\t\tif (ex.getCode() == 404 && ex.getResponseBody().toLowerCase().contains(\"ensure all ids are valid before resolving\")) {\r\n\t\t\t\t\t\thandleHeaders(ex);\r\n\t\t\t\t\t\treturn null; //Ignore this error we will use another endpoint instead\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow ex;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tint count = 30;\r\n\t\tfor (Map.Entry<Set<Long>, List<NamesResponse>> entry : retryResponses.entrySet()) {\r\n\t\t\tfor (NamesResponse lookup : entry.getValue()) {\r\n\t\t\t\tSettings.get().getOwners().put((long)lookup.getId(), lookup.getName());\r\n\t\t\t\tDate date = new Date(System.currentTimeMillis() + (ONE_DAY * count));\r\n\t\t\t\tcount--;\r\n\t\t\t\tif (count < 1) {\r\n\t\t\t\t\tcount = 30;\r\n\t\t\t\t}\r\n\t\t\t\tSettings.get().getOwnersNextUpdate().put(lookup.getId(), date);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Set<Long> getOwnerIDs(List<OwnerType> ownerTypes) {\r\n\t\tSet<Long> list = new HashSet<>();\r\n\t\tfor (OwnerType ownerType : ownerTypes) {\r\n\t\t\taddOwnerID(list, ownerType.getOwnerID());\r\n\t\t\tfor (MyIndustryJob myIndustryJob : ownerType.getIndustryJobs()) {\r\n\t\t\t\taddOwnerID(list, myIndustryJob.getInstallerID());\r\n\t\t\t\taddOwnerID(list, myIndustryJob.getCompletedCharacterID());\r\n\t\t\t}\r\n\t\t\tfor (MyMarketOrder marketOrder : ownerType.getMarketOrders()) {\r\n\t\t\t\taddOwnerID(list, marketOrder.getIssuedBy());\r\n\t\t\t}\r\n\t\t\tfor (MyContract contract : ownerType.getContracts().keySet()) {\r\n\t\t\t\taddOwnerID(list, contract.getAcceptorID());\r\n\t\t\t\taddOwnerID(list, contract.getAssigneeID());\r\n\t\t\t\taddOwnerID(list, contract.getIssuerCorpID());\r\n\t\t\t\taddOwnerID(list, contract.getIssuerID());\r\n\t\t\t}\r\n\t\t\tfor (MyTransaction transaction : ownerType.getTransactions()) {\r\n\t\t\t\taddOwnerID(list, transaction.getClientID());\r\n\t\t\t}\r\n\t\t\tfor (MyJournal journal : ownerType.getJournal()) {\r\n\t\t\t\taddOwnerID(list, journal.getFirstPartyID());\r\n\t\t\t\taddOwnerID(list, journal.getSecondPartyID());\r\n\t\t\t\tContextType contextType = journal.getContextType();\r\n\t\t\t\tif (contextType == ContextType.ALLIANCE_ID\r\n\t\t\t\t\t\t|| contextType == ContextType.CHARACTER_ID\r\n\t\t\t\t\t\t|| contextType == ContextType.CORPORATION_ID\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\taddOwnerID(list, journal.getContextID());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfor (MyLoyaltyPoints loyaltyPoints : ownerType.getLoyaltyPoints()) {\r\n\t\t\t\taddOwnerID(list, loyaltyPoints.getCorporationID());\r\n\t\t\t}\r\n\t\t\tfor (MyNpcStanding npcStanding : ownerType.getNpcStanding()) {\r\n\t\t\t\taddOwnerID(list, npcStanding.getFromID());\r\n\t\t\t\taddOwnerID(list, npcStanding.getCorporationID());\r\n\t\t\t\taddOwnerID(list, npcStanding.getFactionID());\r\n\t\t\t}\r\n\t\t\tfor (MyMining mining : ownerType.getMining()) {\r\n\t\t\t\taddOwnerID(list, mining.getCharacterID());\r\n\t\t\t\taddOwnerID(list, mining.getCorporationID());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn list;\r\n\t}\r\n\r\n\tprivate void addOwnerID(Set<Long> list, Number number) {\r\n\t\t//Ignore null\r\n\t\tif (number == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t//Ignore Locations\r\n\t\tif (!ApiIdConverter.getLocation(number.longValue()).isEmpty()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t//Next Update\r\n\t\tDate nextUpdate = Settings.get().getOwnersNextUpdate().get(number.longValue());\r\n\t\tif (nextUpdate != null && !Updatable.isUpdatable(nextUpdate)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlong l = number.longValue();\r\n\t\tif (l >= 100) {\r\n\t\t\tlist.add(l);\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void setNextUpdate(Date date) { }\r\n\r\n\t@Override\r\n\tprotected boolean haveAccess() {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected RolesEnum[] getRequiredRoles() {\r\n\t\treturn null;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiNpcStandingGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport net.troja.eve.esi.ApiException;\r\nimport net.troja.eve.esi.ApiResponse;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\r\nimport net.troja.eve.esi.model.StandingsResponse;\r\n\r\n\r\npublic class EsiNpcStandingGetter extends AbstractEsiGetter {\r\n\r\n\tpublic EsiNpcStandingGetter(UpdateTask updateTask, EsiOwner owner) {\r\n\t\tsuper(updateTask, owner, false, owner.getNpcStandingNextUpdate(), TaskType.NPC_STANDING);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void update() throws ApiException {\r\n\t\tif (owner.isCorporation()) {\r\n\t\t\tList<StandingsResponse> response = updatePages(DEFAULT_RETRIES, new EsiPagesHandler<StandingsResponse>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<List<StandingsResponse>> get(Integer page) throws ApiException {\r\n\t\t\t\t\treturn getCorporationApiAuth().getCorporationStandingsWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, page, null, null, null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\towner.setNpcStanding(EsiConverter.toNpcStanding(response, owner));\r\n\t\t} else {\r\n\t\t\tList<StandingsResponse> response = update(DEFAULT_RETRIES, new EsiHandler<List<StandingsResponse>>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<List<StandingsResponse>> get() throws ApiException {\r\n\t\t\t\t\treturn getCharacterApiAuth().getCharacterStandingsWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\towner.setNpcStanding(EsiConverter.toNpcStanding(response, owner));\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void setNextUpdate(Date date) {\r\n\t\towner.setNpcStandingNextUpdate(date);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean haveAccess() {\r\n\t\treturn owner.isNpcStanding();\r\n\t}\r\n\r\n\t@Override\r\n\tprotected RolesEnum[]  getRequiredRoles() {\r\n\t\treturn null;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiOwnerGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.util.Collections;\r\nimport java.util.Date;\r\nimport java.util.EnumSet;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport net.nikr.eve.jeveasset.io.shared.AccountAdder;\r\nimport net.troja.eve.esi.ApiClientBuilder;\r\nimport net.troja.eve.esi.ApiException;\r\nimport net.troja.eve.esi.ApiResponse;\r\nimport net.troja.eve.esi.auth.JWT;\r\nimport net.troja.eve.esi.auth.OAuth;\r\nimport net.troja.eve.esi.model.CharacterAffiliationResponse;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\r\nimport net.troja.eve.esi.model.NamesResponse;\r\n\r\n\r\npublic class EsiOwnerGetter extends AbstractEsiGetter implements AccountAdder{\r\n\r\n\tprivate static final long CACHE_TIMER = 1 * 60 * 60 * 1000L; // 1 hour (hours*min*sec*ms)\r\n\tprivate boolean wrongEntry = false;\r\n\tprivate final Date nextUpdate;\r\n\r\n\tpublic EsiOwnerGetter(EsiOwner owner, boolean forceUpdate) {\r\n\t\tthis(null, owner, forceUpdate);\r\n\t}\r\n\r\n\tpublic EsiOwnerGetter(UpdateTask updateTask, EsiOwner owner) {\r\n\t\tthis(updateTask, owner, owner.getCorporationName() == null);\r\n\t}\r\n\r\n\tprivate EsiOwnerGetter(UpdateTask updateTask, EsiOwner owner, boolean forceUpdate) {\r\n\t\tsuper(updateTask, owner, forceUpdate, owner.getAccountNextUpdate(), TaskType.OWNER);\r\n\t\tnextUpdate = new Date(new Date().getTime() + CACHE_TIMER);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void update() throws ApiException {\r\n\t\t//characterID\r\n\t\tOAuth auth = (OAuth) owner.getApiClient().getAuthentication(ApiClientBuilder.AUTHENTICATION);\r\n\t\tJWT jwt = auth.getJWT();\r\n\t\tif (jwt == null) {\r\n\t\t\taddError(\"INVALID AUTHORIZATION (JWT)\", \"Account Authorization Invalid\\r\\n(Fix: Options > Accounts... > Edit the account)\", null);\r\n\t\t\towner.setInvalid(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tJWT.Payload payload = jwt.getPayload();\r\n\t\tif (payload == null) {\r\n\t\t\taddError(\"INVALID AUTHORIZATION (PAYLOAD)\", \"Account Authorization Invalid\\r\\n(Fix: Options > Accounts... > Edit the account)\", null);\r\n\t\t\towner.setInvalid(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tSet<RolesEnum> roles = EnumSet.noneOf(RolesEnum.class);\r\n\t\tLong characterID = payload.getCharacterID();\r\n\t\t//CorporationID\r\n\t\tList<CharacterAffiliationResponse> affiliationResponse = update(DEFAULT_RETRIES, new EsiHandler<List<CharacterAffiliationResponse>>() {\r\n\t\t\t@Override\r\n\t\t\tpublic ApiResponse<List<CharacterAffiliationResponse>> get() throws ApiException {\r\n\t\t\t\treturn getCharacterApiOpen().postCharactersAffiliationWithHttpInfo(COMPATIBILITY_DATE, Collections.singleton(characterID), null, null, null);\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (affiliationResponse.isEmpty()) {\r\n\t\t\taddError(\"INVALID AUTHORIZATION (AFFILIATION)\", \"Account Authorization Invalid\\r\\n(Fix: Options > Accounts... > Edit the account)\", null);\r\n\t\t\towner.setInvalid(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tLong corporationID = affiliationResponse.get(0).getCorporationId();\r\n\t\t//IDs to Names\r\n\t\tSet<Long> ids = new HashSet<>();\r\n\t\tids.add(characterID);\r\n\t\tids.add(corporationID);\r\n\t\tList<NamesResponse> namesResponse = update(DEFAULT_RETRIES, new EsiHandler<List<NamesResponse>>() {\r\n\t\t\t@Override\r\n\t\t\tpublic ApiResponse<List<NamesResponse>> get() throws ApiException {\r\n\t\t\t\t//UniverseNamesWithHttpInfo(, DATASOURCE);\r\n\t\t\t\treturn getUniverseApiOpen().postNamesWithHttpInfo(COMPATIBILITY_DATE, ids, null, null, null);\r\n\t\t\t}\r\n\t\t});\r\n\t\tString characterName = null;\r\n\t\tString corporationName = null;\r\n\t\tfor (NamesResponse response : namesResponse) {\r\n\t\t\tif (characterID.equals(response.getId())) {\r\n\t\t\t\tcharacterName = response.getName();\r\n\t\t\t} else if (corporationID.equals(response.getId())) {\r\n\t\t\t\tcorporationName = response.getName();\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (characterName == null || corporationName == null) {\r\n\t\t\taddError(\"INVALID AUTHORIZATION (NAMES)\", \"Account Authorization Invalid\\r\\n(Fix: Options > Accounts... > Edit the account)\", null);\r\n\t\t\towner.setInvalid(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t//Roles\r\n\t\tboolean isCorporation = EsiScopes.CORPORATION_ROLES.isInScope(payload.getScopes());\r\n\t\tif (isCorporation) { //Corporation\r\n\t\t\t//Updated Character Roles\r\n\t\t\tCharacterRolesResponse characterRolesResponse = update(DEFAULT_RETRIES, new EsiHandler<CharacterRolesResponse>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<CharacterRolesResponse> get() throws ApiException {\r\n\t\t\t\t\treturn getCharacterApiAuth().getCharacterRolesWithHttpInfo(characterID, COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\troles.addAll(characterRolesResponse.getRoles());\r\n\t\t}\r\n\t\tif (((!isCorporation && characterID != owner.getOwnerID()) || (isCorporation && corporationID != owner.getOwnerID())) && owner.getOwnerID() != 0) {\r\n\t\t\taddError(null, \"Wrong Entry\", null);\r\n\t\t\twrongEntry = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t//Update owner\r\n\t\towner.setScopes(payload.getScopes());\r\n\t\towner.setRoles(roles);\r\n\t\towner.setCorporationName(corporationName);\r\n\t\tif (owner.isCorporation()) {\r\n\t\t\towner.setOwnerID(corporationID);\r\n\t\t\towner.setOwnerName(corporationName);\r\n\t\t} else {\r\n\t\t\towner.setOwnerID(payload.getCharacterID());\r\n\t\t\towner.setOwnerName(characterName);\r\n\t\t}\r\n\t\tif (isPrivilegesLimited()) {\r\n\t\t\taddWarning(\"LIMITED ACCOUNT\", \"Limited account data access\\r\\n(Fix: Options > Accounts... > Edit)\");\r\n\t\t\tsetError(null);\r\n\t\t}\r\n\t\tsetNextUpdateInner(nextUpdate);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void setNextUpdate(Date date) {\r\n\t\tif (date.after(owner.getAccountNextUpdate())) {\r\n\t\t\towner.setAccountNextUpdate(date);\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean haveAccess() {\r\n\t\treturn true; //Always update accounts\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean isPrivilegesLimited() {\r\n\t\treturn owner.isPrivilegesLimited();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean isPrivilegesInvalid() {\r\n\t\treturn owner.isPrivilegesInvalid();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean isInvalid() {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean isWrongEntry() {\r\n\t\treturn wrongEntry;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected RolesEnum[] getRequiredRoles() {\r\n\t\treturn null;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiPlanetaryInteractionGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.settings.Citadel;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport net.nikr.eve.jeveasset.io.online.CitadelGetter;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\nimport net.troja.eve.esi.ApiException;\r\nimport net.troja.eve.esi.ApiResponse;\r\nimport net.troja.eve.esi.model.CharacterPlanetResponse;\r\nimport net.troja.eve.esi.model.PlanetPin;\r\nimport net.troja.eve.esi.model.CharacterPlanetsResponse;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\r\nimport net.troja.eve.esi.model.PlanetResponse;\r\n\r\n\r\npublic class EsiPlanetaryInteractionGetter extends AbstractEsiGetter {\r\n\r\n\tpublic EsiPlanetaryInteractionGetter(UpdateTask updateTask, EsiOwner esiOwner, Date assetNextUpdate) {\r\n\t\tsuper(updateTask, esiOwner, false, assetNextUpdate, TaskType.PLANETARY_INTERACTION);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void update() throws ApiException {\r\n\t\tif (owner.isCorporation()) {\r\n\t\t\treturn; //Character Endpoint\r\n\t\t}\r\n\t\t//Get PI Planets\r\n\t\tList<CharacterPlanetsResponse> responses = update(DEFAULT_RETRIES, new EsiHandler<List<CharacterPlanetsResponse>>() {\r\n\t\t\t@Override\r\n\t\t\tpublic ApiResponse<List<CharacterPlanetsResponse>> get() throws ApiException {\r\n\t\t\t\treturn getPlanetaryInteractionApiAuth().getCharacterPlanetsWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t}\r\n\t\t});\r\n\t\tList<Citadel> citadels = new ArrayList<>();\r\n\t\tfor (CharacterPlanetsResponse response : responses) { //For each planet\r\n\t\t\t//Convert planet location to citadel\r\n\t\t\tPlanetResponse planet = update(DEFAULT_RETRIES, new EsiHandler<PlanetResponse>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<PlanetResponse> get() throws ApiException {\r\n\t\t\t\t\treturn getUniverseApiOpen().getPlanetWithHttpInfo(response.getPlanetId(), COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tCitadel citadel = ApiIdConverter.getCitadel(planet);\r\n\t\t\tif (citadel != null) {\r\n\t\t\t\tcitadels.add(citadel);\r\n\t\t\t}\r\n\t\t\t//Get planetary assets\r\n\t\t\tCharacterPlanetResponse planetResponse = update(DEFAULT_RETRIES, new EsiHandler<CharacterPlanetResponse>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic ApiResponse<CharacterPlanetResponse> get() throws ApiException {\r\n\t\t\t\t\treturn getPlanetaryInteractionApiAuth().getCharacterPlanetWithHttpInfo(owner.getOwnerID(), response.getPlanetId(), COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfor (PlanetPin pin : planetResponse.getPins()) { //For each pin on planet\r\n\t\t\t\tif (pin.getContents() == null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\towner.addAsset(EsiConverter.toAssetsPlanetaryInteraction(response, pin, owner));\r\n\t\t\t}\r\n\t\t}\r\n\t\tCitadelGetter.set(citadels);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean haveAccess() {\r\n\t\tif (owner.isCorporation()) {\r\n\t\t\treturn true; //Overwrite the default, so, we don't get errors\r\n\t\t} else {\r\n\t\t\treturn owner.isPlanetaryInteraction();\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void setNextUpdate(Date date) {\r\n\t\t//Use the assets update times\r\n\t}\r\n\r\n\t@Override\r\n\tprotected RolesEnum[] getRequiredRoles() {\r\n\t\treturn null;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiPublicMarketOrdersGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport java.util.concurrent.atomic.AtomicInteger;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawPublicMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.settings.Citadel;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\nimport net.nikr.eve.jeveasset.gui.tabs.orders.OutbidProcesser;\r\nimport net.nikr.eve.jeveasset.gui.tabs.orders.OutbidProcesser.OutbidProcesserInput;\r\nimport net.nikr.eve.jeveasset.gui.tabs.orders.OutbidProcesser.OutbidProcesserOutput;\r\nimport static net.nikr.eve.jeveasset.io.esi.AbstractEsiGetter.DEFAULT_RETRIES;\r\nimport static net.nikr.eve.jeveasset.io.esi.AbstractEsiGetter.getMarketApiOpen;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\r\nimport net.troja.eve.esi.ApiException;\r\nimport net.troja.eve.esi.ApiResponse;\r\nimport net.troja.eve.esi.api.MarketApi;\r\nimport net.troja.eve.esi.api.UniverseApi;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\r\nimport net.troja.eve.esi.model.MarketRegionOrdersResponse;\r\nimport net.troja.eve.esi.model.MarketStructureResponse;\r\nimport net.troja.eve.esi.model.StructureResponse;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class EsiPublicMarketOrdersGetter extends AbstractEsiGetter {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(EsiPublicMarketOrdersGetter.class);\r\n\tprivate static final Long OFFSET = 1000L * 3L; // 3 seconds\r\n\r\n\tprivate final UpdateTask updateTask;\r\n\tprivate final OutbidProcesserInput input;\r\n\tprivate final OutbidProcesserOutput output;\r\n\tprivate boolean publicMarketOrders = false;\r\n\tprivate boolean modified = false;\r\n\tprivate Date nextUpdate = null;\r\n\tprivate Date lastUpdate;\r\n\r\n\tpublic EsiPublicMarketOrdersGetter(UpdateTask updateTask, OutbidProcesserInput input, OutbidProcesserOutput output) {\r\n\t\tsuper(updateTask, null, false, Settings.get().getPublicMarketOrdersNextUpdate(), TaskType.PUBLIC_MARKET_ORDERS);\r\n\t\tthis.updateTask = updateTask;\r\n\t\tthis.input = input;\r\n\t\tthis.output = output;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void update() throws ApiException {\r\n\t\tAtomicInteger count = new AtomicInteger(0);\r\n\t\t//Update public market orders\r\n\t\tpublicMarketOrders = true;\r\n\t\tList<MarketRegionOrdersResponse> responses = new ArrayList<>();\r\n\t\tfor (Integer regionID : input.getRegionIDs()) {\r\n\t\t\ttry {\r\n\t\t\t\tList<MarketRegionOrdersResponse> response = updatePages(DEFAULT_RETRIES, new EsiPagesHandler<MarketRegionOrdersResponse>() {\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tpublic ApiResponse<List<MarketRegionOrdersResponse>> get(Integer page) throws ApiException {\r\n\t\t\t\t\t\tApiResponse<List<MarketRegionOrdersResponse>> response = getMarketApiOpen().getMarketRegionOrdersWithHttpInfo(\"all\", SafeConverter.toLong(regionID), COMPATIBILITY_DATE, page, null, null, null, null);\r\n\t\t\t\t\t\tString header = getHeader(response.getHeaders(), \"last-modified\");\r\n\t\t\t\t\t\tif (header != null) {\r\n\t\t\t\t\t\t\tDate date = Formatter.parseExpireDate(header);\r\n\t\t\t\t\t\t\tif (lastUpdate == null) {\r\n\t\t\t\t\t\t\t\tlastUpdate = date;\r\n\t\t\t\t\t\t\t} else if (!modified && !lastUpdate.equals(date)){\r\n\t\t\t\t\t\t\t\tmodified = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn response;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tresponses.addAll(response);\r\n\t\t\t} finally {\r\n\t\t\t\tsetProgressAll(input.getRegionIDs().size(), count.incrementAndGet(), 0, 40);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (modified) {\r\n\t\t\taddWarning(\"last-modified changed while updating\", \"Cache expired while updating\");\r\n\t\t}\r\n\t\tpublicMarketOrders = false;\r\n\t\tMap<Integer, Set<RawPublicMarketOrder>> orders = EsiConverter.toPublicMarketOrders(responses);\r\n\t\tfor (MarketRegionOrdersResponse ordersResponse : responses) {\r\n\t\t\t//Find leaking market structures\r\n\t\t\tif (ordersResponse.getLocationId() > 100000000) {\r\n\t\t\t\tinput.getStructureIDs().add(ordersResponse.getLocationId());\r\n\t\t\t}\r\n\t\t\t//Map known locationID <=> systemID\r\n\t\t\tinput.getLocationToSystem().put(ordersResponse.getLocationId(), ordersResponse.getSystemId());\r\n\t\t}\r\n\t\t//Get public structures\r\n\t\tinput.getStructureIDs().addAll(update(DEFAULT_RETRIES, new EsiHandler<Set<Long>>() {\r\n\t\t\t@Override\r\n\t\t\tpublic ApiResponse<Set<Long>> get() throws ApiException {\r\n\t\t\t\treturn getUniverseApiOpen().getStructuresWithHttpInfo(COMPATIBILITY_DATE, \"market\", null, null, null);\r\n\t\t\t}\r\n\t\t}));\r\n\t\t//Update orders in structures\r\n\t\tcount.set(0);\r\n\t\tMarketApi marketApi = input.getMarketApi();\r\n\t\tif (marketApi != null) {\r\n\t\t\tList<MarketStructureResponse> structuresResponses = updatePagedList(input.getStructureIDs(), new PagedListHandler<Long, MarketStructureResponse>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tprotected List<MarketStructureResponse> get(Long structureID) throws ApiException {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\treturn updatePages(DEFAULT_RETRIES, new EsiPagesHandler<MarketStructureResponse>() {\r\n\t\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\t\tpublic ApiResponse<List<MarketStructureResponse>> get(Integer page) throws ApiException {\r\n\t\t\t\t\t\t\t\treturn marketApi.getMarketStructureWithHttpInfo(structureID, COMPATIBILITY_DATE, page, null, null, null);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} catch (ApiException ex) {\r\n\t\t\t\t\t\tif (ex.getCode() == 403 && ex.getResponseBody().toLowerCase().contains(\"market access denied\")) {\r\n\t\t\t\t\t\t\tLOG.warn(ex.getMessage() + \":\\n\" + ex.getResponseBody());\r\n\t\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthrow ex;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} finally {\r\n\t\t\t\t\t\tsetProgressAll(input.getStructureIDs().size(), count.incrementAndGet(), 40, 90);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfor (MarketStructureResponse response : structuresResponses) {\r\n\t\t\t\tRawPublicMarketOrder marketOrder = new RawPublicMarketOrder(response, getSystemID(input, response.getLocationId()));\r\n\t\t\t\tSet<RawPublicMarketOrder> set = orders.get(marketOrder.getTypeID());\r\n\t\t\t\tif (set == null) {\r\n\t\t\t\t\tset = new HashSet<>();\r\n\t\t\t\t\torders.put(marketOrder.getTypeID(), set);\r\n\t\t\t\t}\r\n\t\t\t\tset.add(marketOrder);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\taddError(\"NO ENOUGH ACCESS PRIVILEGES\", \"No character with market orders structure scope found\\r\\n(Add scope: [Options] > [Acounts...] > [Edit])\");\r\n\t\t}\r\n\t\tinput.addOrders(orders, lastUpdate);\r\n\t\t//Process data\r\n\t\tOutbidProcesser.process(input, output);\r\n\t\tif (output.hasUnknownLocations()) {\r\n\t\t\tupdateTask.addWarning(TaskType.PUBLIC_MARKET_ORDERS.getTaskName(), \"Market orders in unknown locations ignored\");\r\n\t\t}\r\n\t\tif (lastUpdate != null) {\r\n\t\t\tSettings.lock(\"Public Orders (last update)\");\r\n\t\t\tSettings.get().setPublicMarketOrdersLastUpdate(lastUpdate);\r\n\t\t\tSettings.unlock(\"Public Orders (last update)\");\r\n\t\t}\r\n\t\tsetProgressAll(100, 100, 90, 100);\r\n\t}\r\n\r\n\tprivate void setProgressAll(final float progressEnd, final float progressNow, final int minimum, final int maximum) {\r\n\t\tif (updateTask != null) {\r\n\t\t\tupdateTask.setTaskProgress(progressEnd, progressNow, minimum, maximum);\r\n\t\t\tupdateTask.setTotalProgress(progressEnd, progressNow, minimum, maximum);\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void setNextUpdate(Date date) {\r\n\t\tif (publicMarketOrders && (nextUpdate == null || nextUpdate.before(date))) {\r\n\t\t\tnextUpdate = date;\r\n\t\t\tDate fixedDate = new Date(date.getTime() + OFFSET);\r\n\t\t\tSettings.lock(\"Public Orders (next update)\");\r\n\t\t\tSettings.get().setPublicMarketOrdersNextUpdate(fixedDate);\r\n\t\t\tSettings.unlock(\"Public Orders (next update)\");\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean haveAccess() {\r\n\t\treturn true; //Public\r\n\t}\r\n\r\n\t@Override\r\n\tprotected RolesEnum[] getRequiredRoles() {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate Long getSystemID(OutbidProcesser.OutbidProcesserInput data, long locationID) {\r\n\t\tLong systemID = data.getLocationToSystem().get(locationID);\r\n\t\tif (systemID != null) {\r\n\t\t\treturn systemID;\r\n\t\t}\r\n\t\tMyLocation location = ApiIdConverter.getLocation(locationID);\r\n\t\tif (!location.isEmpty()) {\r\n\t\t\treturn location.getSystemID();\r\n\t\t}\r\n\t\tCitadel citadel = data.getCitadels().get(locationID);\r\n\t\tif (citadel != null) {\r\n\t\t\treturn citadel.getSystemID();\r\n\t\t}\r\n\t\tUniverseApi structuresApi = data.getStructuresApi();\r\n\t\tif (structuresApi != null) {\r\n\t\t\ttry {\r\n\t\t\t\tStructureResponse response = update(DEFAULT_RETRIES, new EsiHandler<StructureResponse>() {\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tpublic ApiResponse<StructureResponse> get() throws ApiException {\r\n\t\t\t\t\t\treturn structuresApi.getStructureWithHttpInfo(locationID, COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tdata.getCitadels().put(locationID, ApiIdConverter.getCitadel(response, locationID));\r\n\t\t\t\treturn response.getSolarSystemId();\r\n\t\t\t} catch (ApiException ex) {\r\n\t\t\t\thandleHeaders(ex);\r\n\t\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t\t}\r\n\t\t}\r\n\t\tLOG.warn(\"Unknown market location\");\r\n\t\treturn null;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiScopes.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.io.esi;\n\nimport java.util.Set;\nimport net.nikr.eve.jeveasset.i18n.DialoguesAccount;\nimport net.troja.eve.esi.auth.SsoScopes;\n\npublic enum EsiScopes {\n\n\tCHARACTER_ASSETS(SsoScopes.ESI_ASSETS_READ_ASSETS_V1, DialoguesAccount.get().scopeAssets(), ScopeType.CHARACTER),\n\tCHARACTER_CLONE(SsoScopes.ESI_CLONES_READ_CLONES_V1, DialoguesAccount.get().scopeClones(), ScopeType.CHARACTER),\n\tCHARACTER_IMPLANT(SsoScopes.ESI_CLONES_READ_IMPLANTS_V1, DialoguesAccount.get().scopeImplants(), ScopeType.CHARACTER),\n\tCHARACTER_WALLET(SsoScopes.ESI_WALLET_READ_CHARACTER_WALLET_V1, DialoguesAccount.get().scopeWallet(), ScopeType.CHARACTER),\n\tCHARACTER_INDUSTRY_JOBS(SsoScopes.ESI_INDUSTRY_READ_CHARACTER_JOBS_V1, DialoguesAccount.get().scopeIndustryJobs(), ScopeType.CHARACTER),\n\tCHARACTER_MARKET_ORDERS(SsoScopes.ESI_MARKETS_READ_CHARACTER_ORDERS_V1, DialoguesAccount.get().scopeMarketOrders(), ScopeType.CHARACTER),\n\tCHARACTER_BLUEPRINTS(SsoScopes.ESI_CHARACTERS_READ_BLUEPRINTS_V1, DialoguesAccount.get().scopeBlueprints(), ScopeType.CHARACTER),\n\tCHARACTER_CONTRACTS(SsoScopes.ESI_CONTRACTS_READ_CHARACTER_CONTRACTS_V1, DialoguesAccount.get().scopeContracts(), ScopeType.CHARACTER),\n\tCHARACTER_STRUCTURES(SsoScopes.ESI_UNIVERSE_READ_STRUCTURES_V1, DialoguesAccount.get().scopeStructures(), ScopeType.CHARACTER),\n\tCHARACTER_MARKET_STRUCTURES(SsoScopes.ESI_MARKETS_STRUCTURE_MARKETS_V1, DialoguesAccount.get().scopeMarketStructures(), ScopeType.CHARACTER),\n\tCHARACTER_SHIP_TYPE(SsoScopes.ESI_LOCATION_READ_SHIP_TYPE_V1, DialoguesAccount.get().scopeShipType(), ScopeType.CHARACTER),\n\tCHARACTER_SHIP_LOCATION(SsoScopes.ESI_LOCATION_READ_LOCATION_V1, DialoguesAccount.get().scopeShipLocation(), ScopeType.CHARACTER),\n\tCHARACTER_OPEN_WINDOWS(SsoScopes.ESI_UI_OPEN_WINDOW_V1, DialoguesAccount.get().scopeOpenWindows(), ScopeType.CHARACTER),\n\tCHARACTER_PLANETARY_INTERACTION(SsoScopes.ESI_PLANETS_MANAGE_PLANETS_V1, DialoguesAccount.get().scopePlanetaryInteraction(), ScopeType.CHARACTER),\n\tCHARACTER_AUTOPILOT(SsoScopes.ESI_UI_WRITE_WAYPOINT_V1, DialoguesAccount.get().scopeAutopilot(), ScopeType.CHARACTER),\n\tCHARACTER_SKILLS(SsoScopes.ESI_SKILLS_READ_SKILLS_V1, DialoguesAccount.get().scopeSkills(), ScopeType.CHARACTER),\n\tCHARACTER_LOYALTY_POINTS(SsoScopes.ESI_CHARACTERS_READ_LOYALTY_V1, DialoguesAccount.get().scopeLoyaltyPoints(), ScopeType.CHARACTER),\n\tCHARACTER_NPC_STANDING(SsoScopes.ESI_CHARACTERS_READ_STANDINGS_V1, DialoguesAccount.get().scopeNpcStanding(), ScopeType.CHARACTER),\n\tCHARACTER_MINING(SsoScopes.ESI_INDUSTRY_READ_CHARACTER_MINING_V1, DialoguesAccount.get().scopeMining(), ScopeType.CHARACTER),\n\tCORPORATION_ROLES(SsoScopes.ESI_CHARACTERS_READ_CORPORATION_ROLES_V1, DialoguesAccount.get().scopeRoles(), ScopeType.CORPORATION, true),\n\tCORPORATION_ASSETS(SsoScopes.ESI_ASSETS_READ_CORPORATION_ASSETS_V1, DialoguesAccount.get().scopeAssets(), ScopeType.CORPORATION),\n\tCORPORATION_WALLET(SsoScopes.ESI_WALLET_READ_CORPORATION_WALLETS_V1, DialoguesAccount.get().scopeWallet(), ScopeType.CORPORATION),\n\tCORPORATION_INDUSTRY_JOBS(SsoScopes.ESI_INDUSTRY_READ_CORPORATION_JOBS_V1, DialoguesAccount.get().scopeIndustryJobs(), ScopeType.CORPORATION),\n\tCORPORATION_MARKET_ORDERS(SsoScopes.ESI_MARKETS_READ_CORPORATION_ORDERS_V1, DialoguesAccount.get().scopeMarketOrders(), ScopeType.CORPORATION),\n\tCORPORATION_BLUEPRINTS(SsoScopes.ESI_CORPORATIONS_READ_BLUEPRINTS_V1, DialoguesAccount.get().scopeBlueprints(), ScopeType.CORPORATION),\n\tCORPORATION_CONTRACTS(SsoScopes.ESI_CONTRACTS_READ_CORPORATION_CONTRACTS_V1, DialoguesAccount.get().scopeContracts(), ScopeType.CORPORATION),\n\tCORPORATION_DIVISIONS(SsoScopes.ESI_CORPORATIONS_READ_DIVISIONS_V1, DialoguesAccount.get().scopeDivisions(), ScopeType.CORPORATION),\n\tCORPORATION_NPC_STANDING(SsoScopes.ESI_CORPORATIONS_READ_STANDINGS_V1, DialoguesAccount.get().scopeNpcStanding(), ScopeType.CORPORATION),\n\tCORPORATION_MINING(SsoScopes.ESI_INDUSTRY_READ_CORPORATION_MINING_V1, DialoguesAccount.get().scopeMining(), ScopeType.CORPORATION),\n\tNAMES(), //Public\n\tCONQUERABLE_STATIONS(), //Public\n\t;\n\n\tprivate final String scope;\n\tprivate final String text;\n\tprivate final ScopeType scopeType;\n\tprivate final boolean forced;\n\n\t/**\n\t * Public Scopes\n\t */\n\tprivate EsiScopes() {\n\t\tthis(\"\", \"\", ScopeType.PUBLIC, false);\n\t}\n\n\t/**\n\t * Corporation and Character Scopes\n\t * @param scope\n\t * @param text\n\t * @param scopeType\n\t */\n\tprivate EsiScopes(String scope, String text, ScopeType scopeType) {\n\t\tthis(scope, text, scopeType, false);\n\t}\n\t/**\n\t * Forced Corporation and Character Scopes\n\t * @param scope\n\t * @param text\n\t * @param scopeType\n\t * @param forced\n\t */\n\tprivate EsiScopes(String scope, String text, ScopeType scopeType, boolean forced) {\n\t\tthis.scope = scope;\n\t\tthis.text = text;\n\t\tthis.scopeType = scopeType;\n\t\tthis.forced = forced;\n\t}\n\n\tpublic String getScope() {\n\t\treturn scope;\n\t}\n\n\tpublic boolean isInScope(Set<String> scopes) {\n\t\treturn scopes.contains(scope);\n\t}\n\n\tpublic boolean isCharacterScope() {\n\t\treturn scopeType == ScopeType.CHARACTER;\n\t}\n\n\tpublic boolean isCorporationScope() {\n\t\treturn scopeType == ScopeType.CORPORATION;\n\t}\n\n\tpublic boolean isPublicScope() {\n\t\treturn scopeType == ScopeType.PUBLIC;\n\t}\n\n\tpublic boolean isForced() {\n\t\treturn forced;\n\t}\n\n\tpublic static boolean isPrivilegesLimited(boolean corp, Set<String> scopes) {\n\t\tboolean found = false;\n\t\tboolean missing = false;\n\t\tfor (EsiScopes scope : EsiScopes.values()) {\n\t\t\tif (!corp && !scope.isCharacterScope()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (corp && !scope.isCorporationScope()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (scope.isInScope(scopes)) {\n\t\t\t\tfound = true;\n\t\t\t} else {\n\t\t\t\tmissing = true;\n\t\t\t}\n\t\t}\n\t\treturn missing && found;\n\t}\n\n\tpublic static boolean isPrivilegesInvalid(boolean corp, Set<String> scopes) {\n\t\tfor (EsiScopes scope : EsiScopes.values()) {\n\t\t\tif (!corp && !scope.isCharacterScope()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (corp && !scope.isCorporationScope()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (scope.isInScope(scopes)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\treturn text;\n\t}\n\n\tprivate static enum ScopeType {\n\t\tCORPORATION, CHARACTER, PUBLIC\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiShipGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport net.troja.eve.esi.ApiException;\r\nimport net.troja.eve.esi.ApiResponse;\r\nimport net.troja.eve.esi.model.CharacterLocationResponse;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\r\nimport net.troja.eve.esi.model.CharacterShipResponse;\r\n\r\n\r\npublic class EsiShipGetter extends AbstractEsiGetter {\r\n\r\n\tpublic EsiShipGetter(UpdateTask updateTask, EsiOwner owner, Date assetNextUpdate) {\r\n\t\tsuper(updateTask, owner, false, assetNextUpdate, TaskType.SHIP);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void update() throws ApiException {\r\n\t\tif (owner.isCorporation()) {\r\n\t\t\treturn; //Character Endpoint\r\n\t\t}\r\n\t\t//Get Ship\r\n\t\tCharacterShipResponse shipType = update(DEFAULT_RETRIES, new EsiHandler<CharacterShipResponse>() {\r\n\t\t\t@Override\r\n\t\t\tpublic ApiResponse<CharacterShipResponse> get() throws ApiException {\r\n\t\t\t\treturn getLocationApiAuth().getCharacterShipWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t}\r\n\t\t});\r\n\t\t//Get Location\r\n\t\tCharacterLocationResponse shipLocation = update(DEFAULT_RETRIES, new EsiHandler<CharacterLocationResponse>() {\r\n\t\t\t@Override\r\n\t\t\tpublic ApiResponse<CharacterLocationResponse> get() throws ApiException {\r\n\t\t\t\treturn getLocationApiAuth().getCharacterLocationWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t}\r\n\t\t});\r\n\t\t//Create assets\r\n\t\tMyAsset activeShip = EsiConverter.toAssetsShip(shipType, shipLocation, owner);\r\n\t\t//Search for active ship\r\n\t\tList<MyAsset> assets;\r\n\t\tsynchronized (owner) {\r\n\t\t\tassets = new ArrayList<>(owner.getAssets());\r\n\t\t}\r\n\t\tboolean activeShipInAssets = false;\r\n\t\tfor (MyAsset asset : assets) {\r\n\t\t\tif (asset.getItemID().equals(activeShip.getItemID())) {\r\n\t\t\t\tactiveShipInAssets = true;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Update Assets (if active ship is not found)\r\n\t\tif (!activeShipInAssets) {\r\n\t\t\tList<MyAsset> activeShipChildren = new ArrayList<>();\r\n\t\t\tfor (MyAsset asset : assets) { //Root assets only\r\n\t\t\t\tif (asset.getParents().isEmpty() && activeShip.getItemID().equals(asset.getLocationID())) { //Found Child\r\n\t\t\t\t\t//Add asset to active ship\r\n\t\t\t\t\tactiveShip.addAsset(asset);\r\n\t\t\t\t\t//Update locationID from ItemID to locationID\r\n\t\t\t\t\tsetLocationID(asset, activeShip.getLocationID());\r\n\t\t\t\t\t//Add assets that needs to be removed from the root\r\n\t\t\t\t\tactiveShipChildren.add(asset);\r\n\t\t\t\t\t//Set active ship as parent\r\n\t\t\t\t\tasset.getParents().add(activeShip);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Add active ship to root\r\n\t\t\towner.addAsset(activeShip);\r\n\t\t\t//Remove active ship children from root\r\n\t\t\towner.removeAssets(activeShipChildren);\r\n\t\t\t//Save ship name\r\n\t\t\ttry {\r\n\t\t\t\tSettings.lock(\"Active Ship Name\");\r\n\t\t\t\tSettings.get().getEveNames().put(shipType.getShipItemId(), shipType.getShipName());\r\n\t\t\t} finally {\r\n\t\t\t\tSettings.unlock(\"Active Ship Name\");\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Active Ship - Must be after getEveNames is updated\r\n\t\towner.setActiveShip(EsiConverter.toActiveShip(shipType, shipLocation));\r\n\t}\r\n\r\n\t/**\r\n\t * Set locationID for asset and children.\r\n\t * @param asset\r\n\t * @param locationID\r\n\t */\r\n\tprivate void setLocationID(MyAsset asset, long locationID) {\r\n\t\tasset.setLocationID(locationID);\r\n\t\tfor (MyAsset child : asset.getAssets()) {\r\n\t\t\tsetLocationID(child, locationID);\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void setNextUpdate(Date date) {\r\n\t\t//Use the assets update times\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean haveAccess() {\r\n\t\tif (owner.isCorporation()) {\r\n\t\t\treturn true; //Overwrite the default, so, we don't get errors\r\n\t\t} else {\r\n\t\t\treturn owner.isShip();\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected RolesEnum[] getRequiredRoles() {\r\n\t\treturn null;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiSkillGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.util.Date;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\r\nimport net.troja.eve.esi.ApiException;\r\nimport net.troja.eve.esi.ApiResponse;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\r\nimport net.troja.eve.esi.model.CharacterSkillsResponse;\r\n\r\n\r\npublic class EsiSkillGetter extends AbstractEsiGetter {\r\n\r\n\tpublic EsiSkillGetter(UpdateTask updateTask, EsiOwner owner) {\r\n\t\tsuper(updateTask, owner, false, owner.getSkillsNextUpdate(), TaskType.SKILLS);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void update() throws ApiException {\r\n\t\tif (owner.isCorporation()) {\r\n\t\t\treturn; //Character Endpoint\r\n\t\t}\r\n\t\tCharacterSkillsResponse response = update(DEFAULT_RETRIES, new EsiHandler<CharacterSkillsResponse>() {\r\n\t\t\t@Override\r\n\t\t\tpublic ApiResponse<CharacterSkillsResponse> get() throws ApiException {\r\n\t\t\t\treturn getSkillsApiAuth().getCharacterSkillsWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t}\r\n\t\t});\r\n\t\towner.setSkills(EsiConverter.toSkills(response.getSkills(), owner));\r\n\t\towner.setTotalSkillPoints(response.getTotalSp());\r\n\t\towner.setUnallocatedSkillPoints(SafeConverter.toInteger(response.getUnallocatedSp()));\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void setNextUpdate(Date date) {\r\n\t\towner.setSkillsNextUpdate(date);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean haveAccess() {\r\n\t\tif (owner.isCorporation()) {\r\n\t\t\treturn true; //Overwrite the default, so, we don't get errors\r\n\t\t} else {\r\n\t\t\treturn owner.isSkills();\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected RolesEnum[] getRequiredRoles() {\r\n\t\treturn null;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiStructuresGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Collections;\r\nimport java.util.Date;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyJournal;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawAsset;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawBlueprint;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawContract;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournal.ContextType;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.settings.Citadel;\r\nimport net.nikr.eve.jeveasset.data.settings.TrackerData;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.AssetValue;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.Value;\r\nimport net.nikr.eve.jeveasset.io.online.CitadelGetter;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\nimport net.troja.eve.esi.ApiException;\r\nimport net.troja.eve.esi.ApiResponse;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\r\nimport net.troja.eve.esi.model.StructureResponse;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class EsiStructuresGetter extends AbstractEsiGetter {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(EsiStructuresGetter.class);\r\n\tprivate final static Set<Long> IDS = new HashSet<>();\r\n\tprivate final static Set<Long> DONE = new HashSet<>();\r\n\tprivate final boolean tracker;\r\n\r\n\tpublic EsiStructuresGetter(UpdateTask updateTask, EsiOwner owner, boolean tracker) {\r\n\t\tsuper(updateTask, owner, false, owner.getStructuresNextUpdate(), TaskType.STRUCTURES);\r\n\t\tthis.tracker = tracker;\r\n\t}\r\n\r\n\tpublic static String estimate(List<EsiOwner> esiOwners, List<OwnerType> ownerTypes, Set<MyLocation> locations, boolean tracker) {\r\n\t\tint total = 0;\r\n\t\tif (locations != null) { //Locations\r\n\t\t\tEsiStructuresGetter.createIDsFromLocations(locations);\r\n\t\t\ttotal = IDS.size() * esiOwners.size();\r\n\t\t} else if (ownerTypes != null) {\r\n\t\t\tEsiStructuresGetter.createIDsFromOwners(ownerTypes, tracker);\r\n\t\t\ttotal = IDS.size() * esiOwners.size();\r\n\t\t} else {\r\n\t\t\tDONE.clear();\r\n\t\t\tfor (EsiOwner esiOwner : esiOwners) {\r\n\t\t\t\ttotal = total + buildIDs(esiOwner, tracker).size();\r\n\t\t\t}\r\n\t\t}\r\n\t\ttotal = (int)(total / 100.0 * 60.0 * 1000.0); //100 errors a minute to ms\r\n\t\treturn Formatter.milliseconds(total, true, true);\r\n\t}\r\n\r\n\tpublic static void createIDsFromOwners(List<OwnerType> ownerTypes, boolean tracker) {\r\n\t\tIDS.clear();\r\n\t\tDONE.clear();\r\n\t\tIDS.addAll(buildIDs(ownerTypes, tracker));\r\n\t}\r\n\r\n\tpublic static void createIDsFromLocations(Set<MyLocation> locations) {\r\n\t\tIDS.clear();\r\n\t\tDONE.clear();\r\n\t\tIDS.addAll(buildIDs(locations));\r\n\t}\r\n\r\n\tpublic static void createIDsFromOwner() {\r\n\t\tIDS.clear();\r\n\t\tDONE.clear();\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void update() throws ApiException {\r\n\t\tif (owner.isCorporation()) {\r\n\t\t\treturn; //Corporation accounts don't get structures\r\n\t\t}\r\n\t\tboolean ownerUpdate = IDS.isEmpty();\r\n\t\tif (ownerUpdate) {\r\n\t\t\tIDS.addAll(buildIDs(owner, tracker));\r\n\t\t}\r\n\t\tMap<Long, StructureResponse> responses = updateListSlow(IDS, true, DEFAULT_RETRIES, new ListHandlerSlow<Long, StructureResponse>() {\r\n\t\t\t@Override\r\n\t\t\tpublic ApiResponse<StructureResponse> get(Long k) throws ApiException {\r\n\t\t\t\tpause();\r\n\t\t\t\treturn getUniverseApiAuth().getStructureWithHttpInfo(k, COMPATIBILITY_DATE, null, null, null);\r\n\t\t\t}\r\n\t\t\t@Override\r\n\t\t\tprotected void handle(ApiException ex, Long k) throws ApiException {\r\n\t\t\t\tif ((ex.getCode() == 403 && ex.getResponseBody().toLowerCase().contains(\"forbidden\"))\r\n\t\t\t\t\t\t|| (ex.getCode() == 404 && ex.getResponseBody().toLowerCase().contains(\"structure\"))\r\n\t\t\t\t\t\t|| (ex.getCode() == 502 && ex.getResponseBody().toLowerCase().contains(\"could not determine docking access\"))) {\r\n\t\t\t\t\tLOG.warn(\"Failed to find locationID: \" + k);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tLOG.error(\"Failed to find locationID: \" + k, ex);\r\n\t\t\t\t\tthrow ex;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tList<Citadel> citadels = new ArrayList<>();\r\n\t\tfor (Map.Entry<Long, StructureResponse> entry : responses.entrySet()) {\r\n\t\t\tcitadels.add(ApiIdConverter.getCitadel(entry.getValue(), entry.getKey()));\r\n\t\t}\r\n\t\tif (ownerUpdate) {\r\n\t\t\tDONE.addAll(responses.keySet()); //Add Completed\r\n\t\t\tIDS.clear();\r\n\t\t} else {\r\n\t\t\tIDS.removeAll(responses.keySet()); //Remove completed structures\r\n\t\t}\r\n\t\tCitadelGetter.set(citadels);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void setNextUpdate(Date date) {\r\n\t\towner.setStructuresNextUpdate(date);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean haveAccess() {\r\n\t\tif (owner.isCorporation()) {\r\n\t\t\treturn true; //Overwrite the default, so, we don't get errors\r\n\t\t} else {\r\n\t\t\treturn owner.isStructures();\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected RolesEnum[] getRequiredRoles() {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate static Set<Long> buildIDs(EsiOwner esiOwner, boolean tracker) {\r\n\t\tSet<Long> locationIDs = buildIDs(Collections.singletonList(esiOwner), tracker);\r\n\t\tlocationIDs.removeAll(DONE);\r\n\t\treturn locationIDs;\r\n\t}\r\n\r\n\tprivate static Set<Long> buildIDs(Set<MyLocation> locations) {\r\n\t\tSet<Long> locationIDs = new HashSet<>();\r\n\t\tfor (MyLocation locationEnd : locations) {\r\n\t\t\tif (locationEnd.isEmpty() || locationEnd.isUserLocation() || locationEnd.isCitadel()) {\r\n\t\t\t\tlocationIDs.add(locationEnd.getLocationID());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn locationIDs;\r\n\t}\r\n\r\n\tprivate static Set<Long> buildIDs(List<OwnerType> ownerTypes, boolean tracker) {\r\n\t\tSet<Long> itemIDs = new HashSet<>();\r\n\t\tSet<Long> locationIDs = new HashSet<>();\r\n\t\tif (tracker) {\r\n\t\t\ttry {\r\n\t\t\t\tTrackerData.readLock();\r\n\t\t\t\tfor (List<Value> values : TrackerData.get().values()) {\r\n\t\t\t\t\tfor (Value value : values) {\r\n\t\t\t\t\t\tfor (AssetValue assetValue : value.getAssetsFilter().keySet()) {\r\n\t\t\t\t\t\t\tadd(locationIDs, assetValue.getLocationID());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} finally {\r\n\t\t\t\tTrackerData.readUnlock();\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (OwnerType ownerType : ownerTypes) {\r\n\t\t\tfor (RawAsset asset : ownerType.getAssets()) {\r\n\t\t\t\tadd(locationIDs, asset.getLocationID());\r\n\t\t\t}\r\n\t\t\tgetAssetItemIDs(itemIDs, ownerType.getAssets());\r\n\t\t\tfor (RawBlueprint blueprint : ownerType.getBlueprints().values()) {\r\n\t\t\t\titemIDs.add(blueprint.getItemID());\r\n\t\t\t\tadd(locationIDs, blueprint.getLocationID());\r\n\t\t\t}\r\n\t\t\tfor (RawContract contract : ownerType.getContracts().keySet()) {\r\n\t\t\t\tadd(locationIDs, contract.getEndLocationID());\r\n\t\t\t\tadd(locationIDs, contract.getStartLocationID());\r\n\t\t\t}\r\n\t\t\tfor (MyIndustryJob industryJob : ownerType.getIndustryJobs()) {\r\n\t\t\t\tadd(locationIDs, industryJob.getStationID());\r\n\t\t\t\tadd(locationIDs, industryJob.getBlueprintLocationID());\r\n\t\t\t\tadd(locationIDs, industryJob.getOutputLocationID());\r\n\t\t\t}\r\n\t\t\tfor (RawMarketOrder marketOrder : ownerType.getMarketOrders()) {\r\n\t\t\t\tadd(locationIDs, marketOrder.getLocationID());\r\n\t\t\t}\r\n\t\t\tfor (MyJournal journal : ownerType.getJournal()) {\r\n\t\t\t\tif (journal.getContextType() == ContextType.STRUCTURE_ID) {\r\n\t\t\t\t\tadd(locationIDs, journal.getContextID());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tlocationIDs.removeAll(itemIDs);\r\n\t\treturn locationIDs;\r\n\t}\r\n\r\n\tprivate static void getAssetItemIDs(Set<Long> itemIDs, List<MyAsset> assets) {\r\n\t\tfor (MyAsset asset : assets) {\r\n\t\t\titemIDs.add(asset.getItemID());\r\n\t\t\tgetAssetItemIDs(itemIDs, asset.getAssets());\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static void add(Set<Long> locationIDs, Long locationID) {\r\n\t\tif (locationID == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (locationID < 100000000) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tMyLocation location = ApiIdConverter.getLocation(locationID);\r\n\t\tif (location.isEmpty() || location.isUserLocation() || location.isCitadel()) {\r\n\t\t\tlocationIDs.add(location.getLocationID());\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/EsiTransactionsGetter.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.io.esi;\n\nimport java.util.Date;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Set;\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\nimport net.nikr.eve.jeveasset.io.shared.SafeConverter;\nimport net.troja.eve.esi.ApiException;\nimport net.troja.eve.esi.ApiResponse;\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\nimport net.troja.eve.esi.model.CharacterWalletTransactionsResponse;\nimport net.troja.eve.esi.model.CorporationWalletTransactionsResponse;\n\n\npublic class EsiTransactionsGetter extends AbstractEsiGetter {\n\n\tprivate final boolean saveHistory;\n\n\tpublic EsiTransactionsGetter(UpdateTask updateTask, EsiOwner owner, boolean saveHistory) {\n\t\tsuper(updateTask, owner, false, owner.getTransactionsNextUpdate(), TaskType.TRANSACTIONS);\n\t\tthis.saveHistory = saveHistory;\n\t}\n\n\t@Override\n\tprotected void update() throws ApiException {\n\t\tSet<Long> existing = new HashSet<>();\n\t\tif (saveHistory) {\n\t\t\tfor (MyTransaction transaction : owner.getTransactions()) {\n\t\t\t\texisting.add(transaction.getTransactionID());\n\t\t\t}\n\t\t}\n\t\tif (owner.isCorporation()) {\n\t\t\tfor (int i = 1; i < 8; i++) { //Division 1-7\n\t\t\t\tfinal int division = i;\n\t\t\t\tList<CorporationWalletTransactionsResponse> responses = updateIDs(existing, DEFAULT_RETRIES, new IDsHandler<CorporationWalletTransactionsResponse>() {\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic ApiResponse<List<CorporationWalletTransactionsResponse>> get(Long fromID) throws ApiException {\n\t\t\t\t\t\treturn getWalletApiAuth().getCorporationWalletTransactionsWithHttpInfo(owner.getOwnerID(), SafeConverter.toLong(division), COMPATIBILITY_DATE, fromID, null, null, null);\n\t\t\t\t\t}\n\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic Long getID(CorporationWalletTransactionsResponse response) {\n\t\t\t\t\t\treturn response.getTransactionId();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tint fixedDivision = division + 999;\n\t\t\t\towner.setTransactions(EsiConverter.toTransactionCorporation(responses, owner, fixedDivision, saveHistory));\n\t\t\t}\n\t\t} else {\n\t\t\tList<CharacterWalletTransactionsResponse> responses = updateIDs(existing, DEFAULT_RETRIES, new IDsHandler<CharacterWalletTransactionsResponse>() {\n\t\t\t\t@Override\n\t\t\t\tpublic ApiResponse<List<CharacterWalletTransactionsResponse>> get(Long fromID) throws ApiException {\n\t\t\t\t\treturn getWalletApiAuth().getCharacterWalletTransactionsWithHttpInfo(owner.getOwnerID(), COMPATIBILITY_DATE, fromID, null, null, null);\n\t\t\t\t}\n\n\t\t\t\t@Override\n\t\t\t\tpublic Long getID(CharacterWalletTransactionsResponse response) {\n\t\t\t\t\treturn response.getTransactionId();\n\t\t\t\t}\n\t\t\t});\n\t\t\towner.setTransactions(EsiConverter.toTransaction(responses, owner, 1000, saveHistory));\n\t\t}\n\t}\n\n\t@Override\n\tprotected void setNextUpdate(Date date) {\n\t\towner.setTransactionsNextUpdate(date);\n\t}\n\n\t@Override\n\tprotected boolean haveAccess() {\n\t\treturn owner.isTransactions();\n\t}\n\n\t@Override\n\tprotected RolesEnum[] getRequiredRoles() {\n\t\tRolesEnum[] roles = {RolesEnum.DIRECTOR, RolesEnum.ACCOUNTANT, RolesEnum.JUNIOR_ACCOUNTANT};\n\t\treturn roles;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/esi/MicroServe.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.io.BufferedReader;\r\nimport java.io.IOException;\r\nimport java.io.InputStreamReader;\r\nimport java.io.OutputStream;\r\nimport java.net.Inet4Address;\r\nimport java.net.ServerSocket;\r\nimport java.net.Socket;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class MicroServe implements AuthCodeListener {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(MicroServe.class);\r\n\r\n\tprivate static final Object LOCK = new Object();\r\n\tprivate boolean serverStarted;\r\n\tprivate String authCode;\r\n\tprivate boolean listen = false;\r\n\r\n\tpublic MicroServe() { }\r\n\r\n\tpublic void startServer() {\r\n\t\ttry {\r\n\t\t\tServerSocket serverSocket = new ServerSocket(2221, 50, Inet4Address.getLoopbackAddress());\r\n\t\t\tConnectionListener connectionListener = new ConnectionListener(serverSocket, this);\r\n\t\t\tconnectionListener.start();\r\n\t\t\tserverStarted = true;\r\n\t\t} catch (IOException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t\tserverStarted = false;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void stopListening() {\r\n\t\tauthCode = null;\r\n\t\tlisten = false;\r\n\t}\r\n\r\n\tpublic void startListening() {\r\n\t\tlisten = true;\r\n\t}\r\n\r\n\tpublic boolean isServerStarted() {\r\n\t\treturn serverStarted;\r\n\t}\r\n\r\n\tpublic String getAuthCode() {\r\n\t\tsynchronized(LOCK) {\r\n\t\t\ttry {\r\n\t\t\t\tLOCK.wait();\r\n\t\t\t} catch (InterruptedException ex) {\r\n\t\t\t\t//No problem\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn authCode;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setAuthCode(String authCode) {\r\n\t\tthis.authCode = authCode;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic synchronized boolean isListening() {\r\n\t\treturn listen;\r\n\t}\r\n\r\n\tprivate static class ConnectionListener extends Thread {\r\n\r\n\t\tprivate final ServerSocket serverSocket;\r\n\t\tprivate final AuthCodeListener listener;\r\n\r\n\t\tpublic ConnectionListener(ServerSocket serverSocket, AuthCodeListener listener) {\r\n\t\t\tthis.serverSocket = serverSocket;\r\n\t\t\tthis.listener = listener;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void run() {\r\n\t\t\twhile (true) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tSocket clientSocket = serverSocket.accept();\r\n\t\t\t\t\tConnectionResponse response = new ConnectionResponse(clientSocket, listener);\r\n\t\t\t\t\tresponse.start();\r\n\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tprivate static class ConnectionResponse extends Thread {\r\n\r\n\t\tprivate final Socket clientSocket;\r\n\t\tprivate final AuthCodeListener listener;\r\n\r\n\t\tpublic ConnectionResponse(Socket clientSocket, AuthCodeListener listener) {\r\n\t\t\tthis.clientSocket = clientSocket;\r\n\t\t\tthis.listener = listener;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void run() {\r\n\t\t\tboolean found = false;\r\n\t\t\tInputStreamReader inputStreamReader = null;\r\n\t\t\tBufferedReader in = null;\r\n\t\t\tOutputStream out = null;\r\n\t\t\ttry {\r\n\t\t\t\tinputStreamReader = new InputStreamReader(clientSocket.getInputStream());\r\n\t\t\t\tin = new BufferedReader(inputStreamReader);\r\n\t\t\t\tout = clientSocket.getOutputStream();\r\n\r\n\t\t\t\tString s;\r\n\t\t\t\twhile ((s = in.readLine()) != null) {\r\n\t\t\t\t\tif (s.startsWith(\"GET\") && s.contains(\"code=\")) {\r\n\t\t\t\t\t\tString temp = s;\r\n\t\t\t\t\t\tint start = temp.indexOf(\"code=\");\r\n\t\t\t\t\t\ttemp = temp.substring(start + 5);\r\n\t\t\t\t\t\tint end = temp.indexOf(\"&\");\r\n\t\t\t\t\t\ttemp = temp.substring(0 , end);\r\n\t\t\t\t\t\tlistener.setAuthCode(temp);\r\n\t\t\t\t\t\tfound = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (s.isEmpty()) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// http response\r\n\t\t\t\twriteln(out, \"HTTP/1.1 200 OK\");\r\n\t\t\t\t// signal end of headers\r\n\t\t\t\twriteln(out, \"\");\r\n\t\t\t\t//html\r\n\t\t\t\tif (listener.isListening()) {\r\n\t\t\t\t\tif (found) {\r\n\t\t\t\t\t\twrite(out, \"Authentication Successful\",\r\n\t\t\t\t\t\t\t\t\"\t\tReturn to jEveAssets to complete the import.<br />\\n\"\r\n\t\t\t\t\t\t\t\t+ \"\t\t<br />\\n\"\r\n\t\t\t\t\t\t\t\t+ \"\t\t<i>This browser window can now be closed.</i>\\n\"\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\twrite(out,\r\n\t\t\t\t\t\t\t\t\"Authorization Failed\",\r\n\t\t\t\t\t\t\t\t\"\t\tThe authorization process failed.<br />\\n\"\r\n\t\t\t\t\t\t\t\t+ \"\t\tYou can report the problem in the <a href=\\\"https://forums.eveonline.com/t/13255\\\" target=\\\"_blank\\\">forum thread</a>.<br />\\n\"\r\n\t\t\t\t\t\t\t\t+ \"\t\t<br />\\n\"\r\n\t\t\t\t\t\t\t\t+ \"\t\t<i>This browser window can now be closed.</i>\\n\"\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\twrite(out,\r\n\t\t\t\t\t\t\t\"Authorization Cancelled\",\r\n\t\t\t\t\t\t\t\"\t\tThe authorization process was cancelled in jEveAssets.<br />\\n\"\r\n\t\t\t\t\t\t\t+ \"\t\tPlease, try again...<br />\\n\"\r\n\t\t\t\t\t\t\t+ \"\t\t<br />\\n\"\r\n\t\t\t\t\t\t\t+ \"\t\t<i>This browser window can now be closed.</i>\\n\"\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tout.flush();\r\n\t\t\t} catch (IOException ex) {\r\n\t\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t\t} finally {\r\n\t\t\t\tif (clientSocket != null) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tclientSocket.close(); //Close connection\r\n\t\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\t\t//That is okay\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (inputStreamReader != null) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tinputStreamReader.close(); //Close connection\r\n\t\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\t\t//That is okay\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (in != null) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tin.close(); //Close connection\r\n\t\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\t\t//That is okay\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (out != null) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tout.close(); //Close connection\r\n\t\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\t\t//That is okay\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (found) {\r\n\t\t\t\t\tsynchronized(LOCK) {\r\n\t\t\t\t\t\tLOCK.notifyAll();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static void write(OutputStream out, String header, String text) throws IOException {\r\n\t\tString value = \"<!DOCTYPE html>\\n\"\r\n\t\t\t\t+ \"<html lang=\\\"en\\\" xmlns=\\\"http://www.w3.org/1999/xhtml\\\">\\n\"\r\n\t\t\t\t+ \"<head>\\n\"\r\n\t\t\t\t+ \"\t<title>\" + header + \"</title>\\n\"\r\n\t\t\t\t+ \"\t<link id=\\\"favicon\\\" rel=\\\"shortcut icon\\\" type=\\\"image/png\\\" href=\\\" data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACf0lEQVQ4jY2Ty08TYRTFz/2+mWk7Q2lpyktAHgFCjGh8xbhk4YLEtTujLl36T0g0JiYm/gmuXbhzgSYuxAhEMCYYRFBehWKbTtt5fvNdV1USUDnbm/vLuTfnAP8X/Wsoj90gIikNQ0opAfCJ6UIIYZiW1TUwOH724uW7hhSdbr2+VN4tfTwoba+6lZ/7cRgEWmt9BJC2HWfs3KWpkeGhe4VMNOWkOWPbKUSRQqSYvQAuzPzmyuq35+9fv3rIzAwABgAIKeX0zVtPJ8cGbxvkS0pcpAxGLt8OyzIRhoqyxfHc/OJqznFK1w67NgAAzJwkSvtBLIvdp9HT24dc1sRIbxamoRCoLGYezGBpfg6ZYn/jCICZ2TbERGlzDV+W5zA6MYnJC1exlXJgSgtPZu6jerAP2zahwVUhhJUkSQSAZevrmUKXFdb2b3R35qCCBrbWPqNarcGPgE8LbyAEADDqXjxfKZdXmDkkIiVaDgLP25RWG3oGz4CkifZCEW6tCrfmghMNBmA7FrPWXUR0HsAwM2eN1i21Snmn4KSxuLCIOIrQltlG38Awyvt7COMYliVgZ1JaSu7WWncDqACoihYg9H03CgPPMAyo0EUmbaJWc7Gz/QNxHEMQkGvPa51oArMPYAdA7TcArNE/Mnawt72OjrwN3wvQbDRwUC5DxQpKKbB0gq2N9Q/M/BbAdyJqyj8OvKZI2dTX23klCryM7wcACbiNEEGzglxHj56dffey2ag/IqINAAEAPhJlK5XuOTU0cndwoPeOkzZHv66XkM+KZHlp5ZnXbDwmol1mVsd24RBICinb03bbtBTiut9szCoVv2DmZivCJxURkSCiv1b6F/mJMFVr2FOjAAAAAElFTkSuQmCC\\\" />\\n\"\r\n\t\t\t\t+ \"\t<style>\\n\"\r\n\t\t\t\t+ \"\t\tbody{\\n\"\r\n\t\t\t\t+ \"\t\t\tbackground-color: #333;\\n\"\r\n\t\t\t\t+ \"\t\t\tcolor: #c5c5c4;\\n\"\r\n\t\t\t\t+ \"\t\t\tfont-family: Arial, Helvetica, sans-serif;\\n\"\r\n\t\t\t\t+ \"\t\t\tfont-size: 11pt;\\n\"\r\n\t\t\t\t+ \"\t\t\tmargin: 0px;\\n\"\r\n\t\t\t\t+ \"\t\t\tpadding: 0px;\\n\"\r\n\t\t\t\t+ \"\t\t}\\n\"\r\n\t\t\t\t+ \"\t\t#menu{\\n\"\r\n\t\t\t\t+ \"\t\t\tbackground-color: #111;\\n\"\r\n\t\t\t\t+ \"\t\t\tpadding: 5px 7px 5px 7px;\\n\"\r\n\t\t\t\t+ \"\t\t}\\n\"\r\n\t\t\t\t+ \"\t\t#headline{\\n\"\r\n\t\t\t\t+ \"\t\t\tborder: solid #000;\\n\"\r\n\t\t\t\t+ \"\t\t\tborder-width: 1px 0 1px 0;\\n\"\r\n\t\t\t\t+ \"\t\t\tbackground-color: #181818;\\n\"\r\n\t\t\t\t+ \"\t\t\tfont-size: 22px;\\n\"\r\n\t\t\t\t+ \"\t\t\tpadding: 3px 7px 3px 7px;\\n\"\r\n\t\t\t\t+ \"\t\t\tdisplay: flex;\\n\"\r\n\t\t\t\t+ \"\t\t\talign-items: center;\\n\"\r\n\t\t\t\t+ \"\t\t}\\n\"\r\n\t\t\t\t+ \"\t\t#breadcrumb{\\n\"\r\n\t\t\t\t+ \"\t\t\tbackground-color: #222;\\n\"\r\n\t\t\t\t+ \"\t\t\tborder: solid #000;\\n\"\r\n\t\t\t\t+ \"\t\t\tborder-width: 0 0 1px 0;\\n\"\r\n\t\t\t\t+ \"\t\t\tpadding: 5px 7px 5px 7px;\\n\"\r\n\t\t\t\t+ \"\t\t}\\n\"\r\n\t\t\t\t+ \"\t\t#text{\\n\"\r\n\t\t\t\t+ \"\t\t\tpadding: 40px;\\n\"\r\n\t\t\t\t+ \"\t\t\tmargin: auto;\\n\"\r\n\t\t\t\t+ \"\t\t}\\n\"\r\n\t\t\t\t+ \"\t\ta {\\n\"\r\n\t\t\t\t+ \"\t\t\tcolor: #ffa600;\\n\"\r\n\t\t\t\t+ \"\t\t}\\n\"\r\n\t\t\t\t+ \"\t\ta:hover {\\n\"\r\n\t\t\t\t+ \"\t\t\tbackground-color: #8e610a;\\n\"\r\n\t\t\t\t+ \"\t\t}\\n\"\r\n\t\t\t\t+ \"\t\ta:visited {\\n\"\r\n\t\t\t\t+ \"\t\t\tcolor: #ffcc00;\\n\"\r\n\t\t\t\t+ \"\t\t}\"\r\n\t\t\t\t+ \"\t</style>\\n\"\r\n\t\t\t\t+ \"</head>\\n\"\r\n\t\t\t\t+ \"<body>\\n\"\r\n\t\t\t\t+ \"\t<div id=\\\"menu\\\"></div>\\n\"\r\n\t\t\t\t+ \"\t<div id=\\\"headline\\\">\\n\"\r\n\t\t\t\t+ \"\t\t<img src=\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAaIUlEQVR4nO2beZBfV5XfP/fe995v6X1Td2uXLallY9kGG9tjAwYbAh5MWAdSSWAqNWSrZCZDhSVDyCSTMDXhjxlSpApmwmSKciCMxzGMwYbC4A2vYFm2rMWyLWuz1JJ679/63rvLyR/v95MahpFkLJiqKU7Vq/f6193v3vM9+zn3B7+iv0lKKX1+f4dSSmmlUL/oPa1c80K+z/ysD7VWGlmxKCijVYwgSqF/agfCeVIH2HP+/Qpg/36R1soozkiwC6wC1QH27xvLZ+iXaSavhH4pm1Kqo8zdu8hpM5AVzz/fu1Ei52+Gf+P/X83i53y5UkpprU8/K6XgjGWLhCAd6oLyagF5xXu84C9UHRdW8K6V0loppbQxRuniWUREwhnmu88F+2foQmrK37rfC/aiDuNdprXWWmmttTEmiuK4VO3pKVd7ehCRPEvT4L0PEoJ3znlrbQjehxCCdC7owrFCS4CVv7sg+37VL+hItZC4ibqSjqI4NnEcVXp6+/oGhtb0jYxe218pX6+jynijtvh4s9V4WiScym3WyrN26qzNXGpb3rnMOeuCczYE7733nkJJCnDkZ2nOLxGAlQ5tJeNKa22iKDImiqIkKZUr1f6B0dGpoYk1bx7o6d26aqjnkr6e3nV5fT7OVQxou9zMjjabrQPB+5nc5nN5mh/PczefZ43ZLEsX0rRd99bmztnUZlk7eO+ds1ZCCMF3NEZCCCEEVmjJBQfgb2HaKKV0h/G40PNyOSmV+wdXjW9bPbHm7ePj41cN9/ZuklAbWJ49qmq1ZRW8kCQROo7p6SlhVAUTV1BJNXipZL5Eoza7dGx+ce6R3DErIrnL8sVWs3E0z9NW2mrNZ61mPUvbTWfz3DvnCjB8EJHT5nPBAOgy3zFrrXWh4tqYSGtjoiQpJXFS7R0a2bR6zYabRieGt/dW+9aNDZam6ssL5VPHjypv2/T2VenvLZMkCVprssySpxmZdTjn0VphTILWMZX+Xokqg0Hl5BKZtFbLXk69O5r7rJE2srl2ms40G41jtaW5F5v12vFWo9EM1kZp2pqREPwr0YTzAkAbY5TSOorj2ERRZKI4juI4SUrlvqHRVVtXja+5eWx8zZWbVg9cEWnXe+Lo4Wh2/mXECnESMTE5SqWnTKIMnoBSBjRoQASyNMNaS73RxjlPEQ88CoX3UBkcoH9gle+r9uIkkdyR55ldnJ1feGZ+eWF/Y3F+enFu/sSJ44fvS9vt+VfiG84KQDeWdew6iZNSKSlXKpXe3qG+/sGL1q5Z/+HJ1WumxoYmNraXX65OT+9Ti/NLlMslRkf6GRocoFyN0dpg0ASjUAJaFznR6bxICTpovBK8F9pZhs8saZphraPZbNGotYkjTalSodpTZXRyjMGhS6R/aMLNzsws79377LMPP/TdTyzNz+8O3rvzBSA6l/ijKI7jUrlc7e3r7xseGR0cHrl+zepNb+rr7dm6fnJ428LsyWT3k3er4FOqlQrr1k8yuWqEKDGoQCfhNxilUBpUpFBigIAyxfJGBZAIj4MA1XJMQBGcI0sdzjtc7llYrFFbrtFUJV4zuZ21Wy9X0y8fi08sTQ8vLjdKSunAKyjOzgqAUkrFcZL0j4yNjUxMbh0dn3zDSP/opRs3bnjdwECyoTV/PD6w9xFmTs0yPjHK5Jq1lOKEUsmgRKGMKhgPoCKNVoYoEpRWaKURHRFphYhglEKCEFSM+EIjXMgJLqKSKJw40rSNmH4uufJ6tlx5M9VKP3uffoK9L+zm4O5dOifOQ5Bmd/NcCA0wcRwPj09Ojoyt+s0rtl76D4ZHRofWblqXuPoczVgIIWd4uI9SLGgcIhEiMVGsMUahlEHHCq01UaRAIuJYYyKDVp3PdYQHoHDe3nmch5JKyHOPuBZ5PWNo1RSv2XIVW6Yu5cTLszz56P3s3LmD53c/xs1vu5kf/3hP6pyrAZwv8+cEQEIISmtdKVUqvSM9vY2sER06fIg1azawZnILmy67llazydLsEeZnj1NfmCG0cqyBchmipEIcVYgTUzBrNEkpIlIxEmlKkUHrojyQIAUQPpB7j9iACm2i6iSrprax/bVvIo4qHHjpOb5/z9088fj9nDp2kGoUWFqYI3VSlxDO2/bPCwDvnGssLi758cl6pHpLS8vH9J6nn+L4xEts3baNvr4Byr2DXHTJ67nmhnficCzOz/HyoedYPHEQo2q4tElwmigpU+qrEJmYUikiihKSyIDRREYRROF9wLsclQVEGcY3vpG1217PJRtXsZTC7bf9Xx556GEeefBblGLLjTdczxve9Ga+ec93nbXZQpBQMH+hTADA5mnebDVP1Rdmw9DIBFviMqdmj7Fr125GhoaIooQX9u1m/fr1bJ56DcNDo4z/2i1UegzNWp2F2cPU56dp1+YhNDB4RAKx0VQqGhOXAQhBEawlVYHRgTWMbrqKq6emADiVw5996Ys89N3v8dL+p6nEQqXSx1NP7eK+Bx7mmuvehHOzdQnyipKgcwKglFIhBJtZezC3aTpcVcnw8EY2bd1Eu9kkKfUSJOfgC4f43r338OhDP2TjRRezeeslrF6zmi2XXcaWSy6ioqGRQdYOpNksL+3fCfUTaJVDsMQRiNKEqMyadW/ikm3bT2/snkd2cdcdX+Peb92BuBalpIIQY/OAMkKlUibDisbkgvzMFt/PDUC3JDXGLKd527+wbw9XXn41wyNjlFevxmUBpRSbNm5hqX4dtcUlWmmdg8cOsmPH47TvuI3V42u5/oY3s/2aqxgbKtPPOFvHbzm9RhM4cnQfIsK2Da853aQU4PNf/ku+cefXOPXSHspG0KUelOpoSyg6Cz1VkNRjIg3o0gUFACAE7/M8X05beXt+7uWh//f1HfT3j3HRtktZt349w6PrGFo1xKrRQUZHBignvURxQjtzHD18gIOHXuA73/kOjz32EAMDA0xMruKmW97NpsEEgB7g0vWX/sSaBxc9n/2Pn+LJx79PY3GO3p4qSkEcaYSOr/AB5wWlCA4I3nkg7vYbuvdXBUCn5DTi3UBm07zcM0Bt9hSKnL07H2ffricIKCYn1zF1+dWsW7+e/v5VlCoVyuUSV151BTe97UaiuIqI8Py+/ezes5NP/fa/oa9/kO1XXc5NN76TrRcPU+6s+YXb7uKO2/43B/f+iNHRIYYG+kGB1hokoBREkaadBowIoNEQ2nl+UiNtKEz3wmSCiLz2ql/772/79Xd9YHFuJrY+ZXxkiJnpI8RxhDEG7wOzJ15m9tRJqsN9rF61nrHxNazZsI7R8bW0Fmr0DA6yZvV63vnWa7nlrddSz2DPnhfZt+dJvnbblwkE/tsf/B4xsHvnAyyd2s3kxChKKeIYUArvBeUNDg+i0EYjPhBQ+BAC4udQBKVUJCJBCis6JwhndRraGFOuxDffctPrrot7+tXw2ASbX/NaLt52FXOLixw9dIBKuUSpVCKJI2KlqC+dZPrYQZ556kfs372b2uIseciYnZlnqdnCiiap9HDF+hGuuXI7pxZTbv/qX/De3/gIc23LNVNl2u1ljh49UeQOsUYRUYqASBEQvA8E6Q4oopBUeheXl5u3t5uNGe9dWNFOO2exd1YAlNa63mwd3P/ikWxkePRyo3QyP32EtRP9hGiAZ598AqRIv+M4Jo5iyuUKSVymVIpR4jh06AWee3onB57fzf7n9/Hivn0005RT823G14+ze89ent2xi3e99z2cmD7Jb7z7nSwv1AlBkcQRUWSIY41ocF4Xzg+BoBEVMISQlPuP15rNu1v15VrwThC0iHT7r2cF4Zw+QMGxWjv/ygMPP2xGB/p/x3jLzPRRhtZupn+gl+HBfsrlEkk5RgVQWpOnGcaUERFKcUwcRzgfmDmyl8PP7eTIC7vYsv1qpqYuw9kUr6HZbFJbXmbz5otpt1IiE4hjhTYGCR5CQCNoNKIVKg5glYhBRBtMpCsSpCKgUOQopRHJAQd4ily7myecNo1zRoGuOmWZnX7ihw9SqSRMTx9lcHAPvb1VSqWI3t4etBa01mgdESeGKEqweU5kNK12ijGKK7ZvZ/XkBp5++se8sPcZFmuL5GlAIoV4T2ZbiARs7imVNMZoxHuCFDvXSjBGCB5EGYwG0YTU2jwEFaPoBxIgAyIE03l2nWsl8wJFT+KszIuIeO+9iZPFDRdtTl3uUUpjVPF2rQzVaplKqYwxmigylEsJGKFcKlFKygwN9FOplunp6+dd73kf1b5ejI5ptRoYIygXcM6Rpw7nAkmXeTQB8OiiwhTQkaCNRilBxUoiU0Js5oEEoVeh+oAqIj0oeoAKUOoAE1OYvaZjGuetAUm5vDAxMbkUR2FioKfC6tVjiALvm8zOnmJkZIy4VMJ7j8KQKIWOFFo0USwEXWJhbpZff8ctXLRxNYOrL2JxcZE8hzhOsFlGmqaozqBQGY3CgwFlHT6EIhRiMUQoo9HKBQzSqvvURFEJRalgTmmU0oSgOpLWK66V2hDOmQp3W9Jam9y6fGnDunUTRgubX/cGxobGsT7j23fezoMP3sVrr9jOlqktBLGEIKSpIzjPwNAAkfYEH7jm6iuptxoo56ktLxOCIxhLnqd478FDkICEBC8W5yK0OLRSOC1EIUbFoJTgnCbWSWhbm2tjYqXUoDamL4RwWHHaclgh9dOS78r3nCbgnXPeWSsS3HKtNhNUTKl/nN1P7+XACwcYHl/HV+/8Pp/4T5/je/c9ypNPPoXWGlFVLnvdTVz3lluZnV8GICmVKVUqVMplBoeHadTrWOUxxGRth01TlAqIE5x3eA9KOdC6GB+LIoo0ohSR0pIkWsVavDaRiDChlBoDIm30KqX0oDHROKiuCVRWmMNpUzi7CXSyqXBmGnNyYnwDDzx0Hy8+t5ueSomN92zjB3fdxW1/8UXe/Pa38/ptF9HT18c1199Eb38vv/Xhf8LRkyd56sG/ZuqSy+jvL9Fq1nDB4lyLrOkgKDLXopm28aHoFUYq4IvVsUGjtUGrgEkglhgbAgSCSYzq7av2LteW14rIcQnBdjbfFGhrrfpFiEWk1eVqxf3sGtDVguCckxBCnrXTRtrAd7LMvr4eLtq2lYce+DYf//RnuHpqE3/0+c9z//2PkdBgrK/Jv//Mf2VhfonDR08QXCHVak8FFRR5bhHvQQRvLSF3BECJhRAQ5c/ELXForVHeoCKIIh1ipSSK+sV7bwQqCKUQfB6cT0MIsYQQiUgEqqy17leFNiSdKzq3BlBMcJ2z1to8bzQaJ42Jef3rr+Xg/j1Y63FpiyQq88d/9IesvXiKj370d/m9j32Mb/z1t/nxzn2Y8jA7HnuADetW4UKAIATrUXEgzzPytI73lpbNyfMcb4u2uev2NgBRnlhpIgVRZPAiJIlS7UxRrVaCPVlXwTmDogKUhSL+i0gn/gsiKGCAwrX5AhjMeZ0F8s45m+VZtW9g4fjxl3nHre9nfHKcerPJtTe8hZvf+UEAPvbRj7DjmaeZes0V7NnzEs/tPcDc8ZforSQMDQzSytrYPMN6j3M5eatFs20RBa1WC0sKWrBOcOLxAbwPCNLpLRbFUJIoSXQk5bKWUk+P9c5rQXpW2HtH8sSciXSOQu0rrHCG53SCUPQGnc1zDW7PszsJBD704X+OKVXY9fRTvOf9/5C3vuMdANx151+y/bVXAXDq1DF6egxbNm9i1eQIkjtyaxHAiSNHsGlOcI60XsOlOc45EF/Eq1AcmomlGJCoyBC0IooMISi01lLujVVmbRR8qCpFBaWqiHTVvMufdICIACsip9vn5+UDnLM2a7daubW1PM3Dn37xj7n1ve+lXa/zzTu+zp9+/nN88jP/hXWTYxw+eIC+4WEAtm1dz6ZNE4wMDxCC4L3He4GQk9Xb5C1HZjOcCyzX6jSaDSQILlBUf9LxCUphELyHRCuUAjEhWJt5Q8nHUWRC8AnQg5z28l33oSg8fgKkQFMp5TsaEc7LBCSEYLM0TUrlk329w4effOgBBgYGuPPeB5lct4m7vvlN7rnzdj792T/BKMWLe54lMTA5OYlLHYGA954QwEvAesGLx9siEigNrWYTl6XFICV4rHjQRcPc+6IfEGEwRqN8LJE2Cowum0SBIjivQwhGJPhO/O+qvu2AMQcsAbmInK4Pzq0BnTmbd86JSDupRBnAe26+gd5qlQOHD/JvP/5pvnLbV3jmmWdARzz6wL1sntrI4OAg7bbDBQghYG0XiIB3FmctXnK8TVlcWCKzORKK6FtcqjBWZQFHFBVOUCuNz7UYrUX19/gQrHI2FwmhjdDuFEEZZ+qAOaDe+Tlf8bk/ZxToguCctSJi0Wqut78f8ZZ//U8/wOVXX8PU5Vfzvg/+Fo888hAz04e5/PIpNm3YgHOOoATxHqUEDYQAIQh57rDOYlseEaFWr6HjCJcHdOzRIQIBHwQSgyLCKwi6CI1xDN6HYGs5eZrlNkut974tiAVaFO3GGjDTeXYrmM+6GnB+AIiI0bq6bWrqk0lp+/rnduzi2WcfZgx44sEf8PB938cYRaOVcumlm9m6eSNZZrHeQwCtPdJZUZSBoPDeFgVQnhPE0Gw3KbkyogPOQRQJEoQ4KkxYJwrlFTiNCkKznYWv/dX97n9+6Uu+3W63nXPzIlJDWALawCIw3QHDrgBgZYnsz8sHAORZlg2U9NU33PCGDZ/8/T/gX/72f6CROhYWl6iUKkRRwtBIH0MDfaRpiguOEAJ07sUhDlUkOJLhrUdh8eLQoqjVathgEa8InaYngEeKKbIDCGTWikgIXls+9KF3oyuDmctaDZdndfF+SZAmMA8c6Ui+K/W08+w50x84e0cIiqzBmCgycayW68vVem3xssWFWvmq667lxre8gxeff5HDR15i/YYJNl+8gUq5gnS6cUUpFgCNlcIPBPF4gTQNDI+vplGrMT8zQ7XaQ1xOWJ6dxgeL6ZTccRRhYoV02r+R0bi0zfD4mPvNf/f7rf/88Y/PNOq1aWfzkxKkjshBETnU0YI2Z+ze8pONkfMHoHvoKSr3HppbWHrk5InpNzQWpvt7EsfQ5BaaC9Ns2riGUlLqSFpOX0Z5vAsoFBKKu3ee3Hn6B8dpNJosLi9SqpQxxtBYOklwrjNcFTAFjOKFuKxotDL6hqr8+Z/fnX7wff9o4fjLh45576ZFpC7IswKHO5JfyXw3CeqGxtMTpPPyAZ2KINg8y6I4OfzcsztO7frRD9dcvOVi1q7fyOTkMCEoMmsxRp1ZQkOwCk8AFxAfII5wzpHlOS44cpdDAOdTfBoXWiOegEIFjbgAPkJrIW0ssXr9Nj712S+7rdu2t2dnjs8omBeRJREeFeR4h/n0p5jvJj4/0Q06bwBERJy1Nm+320mpXK5Ue07l7RbTRw9SiQPj4xP4YFFBQShClxcFOqA6Q09jNJl1mBDQOCKlEem20TQ2teQmx3a36gOBACoC4zC5kAz08Y8/+gk+8sEP2NmZ4zURqYnIMRH5HkotAC1E0hUAdFV+pfR/gs4bgOC9T1uNhonjOIriXW9/1/tv2bRpAwkpe/fsJGu10FFxAMpoAwpc7jGxJs+LhoZIkaIErRHl8GKLg77GY3NNFucokaIkBpQXCIJVGaND/XzuC9/gwx96nz300v5lETkpITyMUg8ANYpyt8UZZ9eV/FkHpuc3TOwc5hEpCqMQ/IvTJ44tZLkvj0ysHVy78eKkv3cAVKDVruNdIHcWBLLMFWcACiBRWiEC7bZjcGiCdrtNs9HAOcHEgs9a+DxDK02Qwm/ESvOBf/Y7fOFP/ofdu2vHnIRwHJF7gQcosruuzbc5E/L8+bB2fgCsKIo6mWErhPDj5eWlbx146cDTR44cr5Z7+seuu/Ht5eGRCWpLc4hNyfIUhcZ3atEoMkysniR4R6Pdom9kFXkrp5428DaFoFGS4VxeeH1fHKH78L/4XW7/+h3h6ScfXRZkPyJ3CvxwBfNdyXczvPM+K3T+4+QuCB2H6J33ztrc5tmxLG3ff/LUyR27du5crDeysTXrNw9MXX4VQ4MjLC3M4DKLiRRJpLjmujfQaNaZOTFPb/8YeZbTbCyTZxZUwOAJzhK8Q5Tm1g9+hLu/9R3Z9+xTSxLCD0TCV0VkjyoSnTrQ4IzH95znSOyVA7ASi+5J7xBC8M7aPM9slk7nWfrUcm3p0cNHj5yYPnlqaPXai3o3bJ6KB4YG0MawvDTH3d++j55qTFwy6FIvaSujnbbJsgwRj88znE0xccLNt36A5587IDse++HJIHK7iHxLRI4ASyLSoJB+19v/tKf/xQFQoNA5m1scT3UhBO+dzfJ2e87m2b5Go/G9Fw+8sPfgwcNJZCqrrrrhpmTD+i309WqatSX6+weoN6GVpdjckjVaeO94561vZGFulhvf9j7uu/d+u/NHjz4VJPwVyA9FwssisgQsU0i+m9q+4uNxrx6AFVB04PCdy/nicHPTZtnLWdp+eGZ2ZtfOp3bMLy83eibXbh7ZctnrmF2sUW80aDfbiAiNehNBwDe5/ub3cN+99/n9e3c9h8j/EZHHEZkWkYUO4z8rxv9cdCEA6FJX/YKIuCDBSvC5y/N2nraPOpvvnJubefT5/ftPnppf3nbxRVvLeZqqhblTREqx1FgibTe4/s3v4Nlnduc7nnhkUUT+DLhXRE5RSL3FGeZP5/Ovhn5RX5lRSikDKJSKlVKRUqqktE60NlVjzLo4Kb++r9p7Y+ZtdfXGTW+cPX5c12oL9tLLXnt8548e/Urw7hkR2cuZOn6lh39VUv+JjV6Il5yFut8X0kCEUsWUvwClrLQuEaRveGzsXw2MjF1+6Pn9/0vEHwreH5Aio+uq+UrGX7XUV9Iv86tsRXOn0IzuqCriTM+uKAPOtKu6Kv6q7fxs9HfxXT71U5de8Qyc6Z1wlhz+Qm7m75LUT9279Irj+a/oV/Tz0f8HDhyeWXZ6ifgAAAAASUVORK5CYII=\\\" />\" + header + \"\\n\"\r\n\t\t\t\t+ \"\t</div>\\n\"\r\n\t\t\t\t+ \"\t<div id=\\\"breadcrumb\\\"></div>\\n\"\r\n\t\t\t\t+ \"\t<div id=\\\"text\\\">\\n\"\r\n\t\t\t\t+ text + \"<br />\\n\"\r\n\t\t\t\t+ \"\t</div>\\n\"\r\n\t\t\t\t+ \"</body>\\n\"\r\n\t\t\t\t+ \"</html>\";\r\n\t\tout.write(value.getBytes(\"ASCII\"));\r\n\t}\r\n\r\n\tprivate static void writeln(OutputStream out, String value) throws IOException {\r\n\t\tvalue = value + \"\\r\\n\";\r\n\t\tout.write(value.getBytes(\"ASCII\"));\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/AbstractBackup.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.io.local;\n\nimport java.io.File;\nimport java.io.FileOutputStream;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.util.zip.ZipEntry;\nimport java.util.zip.ZipOutputStream;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.io.local.FileLock.SafeFileIO;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n\npublic abstract class AbstractBackup extends AttributeGetters {\n\tprivate static final Logger LOG = LoggerFactory.getLogger(AbstractBackup.class);\n\n\tprotected boolean exist(final String filename) {\n\t\treturn new File(filename).exists() //.xml\n\t\t\t\t|| getNewFile(filename).exists() //.new\n\t\t\t\t|| getBackupFile(filename).exists(); //.bac\n\t}\n\n\tprotected boolean restoreBackupFile(final String filename) {\n\t\tFile targetFile = new File(filename);\n\t\trenameFile(targetFile, getCorruptFile(filename)); //Backup corrupted file\n\t\treturn renameFile(getBackupFile(filename), targetFile);\n\t}\n\n\tprotected boolean restoreNewFile(final String filename) {\n\t\tFile targetFile = new File(filename);\n\t\trenameFile(targetFile, getCorruptFile(filename)); //Backup corrupted file\n\t\treturn renameFile(getNewFile(filename), targetFile);\n\t}\n\n\tprotected void restoreFailed(final String filename) {\n\t\tFile targetFile = new File(filename);\n\t\trenameFile(targetFile, getCorruptFile(filename)); //Backup corrupted file\n\t}\n\n\tprotected void backupFile(final String filename) {\n\t\tFile targetFile = new File(filename);\n\t\t//target to bac (new is safe)\n\t\trenameFile(targetFile, getBackupFile(filename));\n\t\t//new to target (bac is safe)\n\t\trenameFile(getNewFile(filename), targetFile);\n\t}\n\n\tprotected File getNewFile(final String filename) {\n\t\treturn new File(filename.substring(0, filename.lastIndexOf(\".\")) + \".new\");\n\t}\n\n\tprivate File getProgramBackup(final String filename) {\n\t\treturn new File(filename.substring(0, filename.lastIndexOf(\".\")) + \"_\" + Program.PROGRAM_VERSION.replace(\" \", \"_\") + \"_backup.zip\");\n\t}\n\n\tprotected void backup(final String filename) {\n\t\tFile sourceFile = new File(filename);\n\t\tFile backupFile = getProgramBackup(filename);\n\t\tif (!backupFile.exists()) {\n\t\t\ttry (SafeFileIO io = new SafeFileIO(sourceFile); ZipOutputStream out  = new ZipOutputStream(new FileOutputStream(backupFile))){\n\t\t\t\tInputStream in = io.getFileInputStream();\n\t\t\t\tZipEntry e = new ZipEntry(sourceFile.getName());\n\t\t\t\tout.putNextEntry(e);\n\t\t\t\tbyte[] buffer = new byte[8192];\n\t\t\t\tint len;\n\t\t\t\twhile ((len = in.read(buffer)) != -1) {\n\t\t\t\t\tout.write(buffer, 0, len);\n\t\t\t\t}\n\t\t\t\tout.closeEntry();\n\t\t\t\tLOG.info(\"Backup Created: \" + backupFile.getName());\n\t\t\t} catch (IOException ex) {\n\t\t\t\tLOG.error(\"Failed to create backup for new program version\", ex);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate File getBackupFile(final String filename) {\n\t\treturn new File(filename.substring(0, filename.lastIndexOf(\".\")) + \".bac\");\n\t}\n\n\tprivate File getCorruptFile(final String filename) {\n\t\tFile file = null;\n\t\tint count = 0;\n\t\twhile(file == null || file.exists()) {\n\t\t\tcount++;\n\t\t\tfile = new File(filename.substring(0, filename.lastIndexOf(\".\")) + \".error\" + count);\n\t\t}\n\t\treturn file;\n\t}\n\n\tprivate boolean renameFile(File from, File to) {\n\t\tif (!from.exists()) {\n\t\t\tLOG.warn(\"Move failed: \" + from.getName() + \" does not exist\");\n\t\t\treturn false;\n\t\t}\n\t\tif (to.exists() && !to.delete()) {\n\t\t\tLOG.warn(\"Move failed: failed to delete: \" + to.getName());\n\t\t\treturn false;\n\t\t}\n\t\tif (from.exists() && from.renameTo(to)) {\n\t\t\tLOG.info(from.getName() + \" moved to: \"+ to.getName());\n\t\t\treturn true;\n\t\t} else {\n\t\t\tLOG.warn(\"Move failed: from \" + from.getName() + \" to \" + to.getName());\n\t\t\treturn false;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/AbstractXmlReader.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.io.local;\n\nimport java.io.File;\nimport java.io.IOException;\nimport javax.xml.parsers.DocumentBuilder;\nimport javax.xml.parsers.DocumentBuilderFactory;\nimport javax.xml.parsers.ParserConfigurationException;\nimport net.nikr.eve.jeveasset.io.local.FileLock.SafeFileIO;\nimport net.nikr.eve.jeveasset.io.online.Updater;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.w3c.dom.Document;\nimport org.w3c.dom.Element;\nimport org.xml.sax.SAXException;\n\n\npublic abstract class AbstractXmlReader<T> extends AbstractBackup {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(AbstractXmlReader.class);\n\n\tpublic static enum XmlType {\n\t\tDYNAMIC, STATIC, DYNAMIC_BACKUP, IMPORT\n\t}\n\n\tprotected T read(final String name, final String filename, final XmlType xmlType) {\n\t\tif (!exist(filename) && (xmlType == XmlType.DYNAMIC || xmlType == XmlType.DYNAMIC_BACKUP)) {\n\t\t\treturn doNotExistValue();\n\t\t}\n\t\ttry {\n\t\t\tElement element = getDocumentElement(filename, xmlType);\n\t\t\tT t = parse(element);\n\t\t\tLOG.info(name+ \" loaded\");\n\t\t\treturn t;\n\t\t} catch (IOException ex) {\n\t\t\tLOG.error(name+ \" not loaded\", ex);\n\t\t\tif (xmlType == XmlType.STATIC) {\n\t\t\t\tstaticDataFix();\n\t\t\t}\n\t\t\treturn failValue();\n\t\t} catch (IllegalArgumentException | ArrayIndexOutOfBoundsException | XmlException ex) {\n\t\t\tLOG.error(name+ \" not loaded: \" + ex.getMessage(), ex);\n\t\t\tif (xmlType == XmlType.STATIC) { //Static data\n\t\t\t\tstaticDataFix();\n\t\t\t} else if (xmlType == XmlType.DYNAMIC || xmlType == XmlType.DYNAMIC_BACKUP) { //Dynamic data\n\t\t\t\tif (restoreNewFile(filename)) { //If possible restore from .new (Should be the newest)\n\t\t\t\t\treturn read(name, filename, xmlType);\n\t\t\t\t} else if (restoreBackupFile(filename)) { //If possible restore from .bac (Should be the oldest, but, still worth trying)\n\t\t\t\t\treturn read(name, filename, xmlType);\n\t\t\t\t} else { //Nothing left to try - throw error\n\t\t\t\t\trestoreFailed(filename); //Backup error file\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn failValue();\n\t\t}\n\t}\n\n\tprotected abstract T parse(Element element) throws XmlException;\n\tprotected abstract T failValue();\n\tprotected abstract T doNotExistValue();\n\n\tprivate void staticDataFix() {\n\t\tUpdater updater = new Updater();\n\t\tupdater.fixData();\n\t}\n\n\tprivate Element getDocumentElement(final String filename, final XmlType xmlType) throws XmlException, IOException {\n\t\tFile file = new File(filename);\n\t\tif (xmlType == XmlType.DYNAMIC_BACKUP) {\n\t\t\tbackup(filename);\n\t\t}\n\t\ttry (SafeFileIO io = new SafeFileIO(file, xmlType == XmlType.IMPORT || xmlType == XmlType.STATIC)){\n\t\t\tDocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();\n\t\t\tDocumentBuilder builder = factory.newDocumentBuilder();\n\t\t\tDocument doc = builder.parse(io.getFileInputStream());\n\t\t\tElement element = doc.getDocumentElement();\n\t\t\treturn element;\n\t\t} catch (SAXException ex) {\n\t\t\tthrow new XmlException(ex.getMessage(), ex);\n\t\t} catch (ParserConfigurationException ex) {\n\t\t\tthrow new XmlException(ex.getMessage(), ex);\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/AbstractXmlWriter.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.io.local;\n\nimport java.awt.Color;\nimport java.io.File;\nimport java.io.FileNotFoundException;\nimport java.io.IOException;\nimport java.io.OutputStreamWriter;\nimport java.io.UnsupportedEncodingException;\nimport java.nio.channels.NonWritableChannelException;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Date;\nimport java.util.List;\nimport javax.xml.parsers.DocumentBuilder;\nimport javax.xml.parsers.DocumentBuilderFactory;\nimport javax.xml.parsers.ParserConfigurationException;\nimport javax.xml.transform.OutputKeys;\nimport javax.xml.transform.Result;\nimport javax.xml.transform.Transformer;\nimport javax.xml.transform.TransformerConfigurationException;\nimport javax.xml.transform.TransformerException;\nimport javax.xml.transform.TransformerFactory;\nimport javax.xml.transform.dom.DOMSource;\nimport javax.xml.transform.stream.StreamResult;\nimport net.nikr.eve.jeveasset.io.local.FileLock.SafeFileIO;\nimport org.w3c.dom.DOMImplementation;\nimport org.w3c.dom.Document;\nimport org.w3c.dom.Element;\n\n\npublic abstract class AbstractXmlWriter extends AbstractBackup {\n\n\tprivate static DocumentBuilderFactory factory = null;\n\n\tprotected Document getXmlDocument(final String rootname) throws XmlException {\n\t\ttry {\n\t\t\tDocumentBuilder builder = getFactory().newDocumentBuilder();\n\t\t\tDOMImplementation impl = builder.getDOMImplementation();\n\t\t\treturn impl.createDocument(null, rootname, null);\n\t\t} catch (ParserConfigurationException ex) {\n\t\t\tthrow new XmlException(ex.getMessage(), ex);\n\t\t}\n\t}\n\n\tprivate synchronized static DocumentBuilderFactory getFactory() {\n\t\tif (factory == null) {\n\t\t\tfactory = DocumentBuilderFactory.newInstance();\n\t\t}\n\t\treturn factory;\n\t}\n\n\tprotected void writeXmlFileFitting(final Document doc, final String filename, final boolean createBackup) throws XmlException {\n\t\twriteXmlFile(doc, filename, \"UTF-8\", createBackup, true);\n\t}\n\n\tprotected void writeXmlFile(final Document doc, final String filename, final boolean createBackup) throws XmlException {\n\t\twriteXmlFile(doc, filename, \"UTF-16\", createBackup, false);\n\t}\n\n\tprivate void writeXmlFile(final Document doc, final String filename, final String encoding, boolean createBackup, boolean fitting) throws XmlException {\n\t\tDOMSource source = new DOMSource(doc);\n\t\tFile file;\n\t\tif (createBackup) {\n\t\t\tfile = getNewFile(filename); //Save to .new file\n\t\t} else {\n\t\t\tfile = new File(filename);\n\t\t}\n\t\ttry (SafeFileIO io = new SafeFileIO(file)){\n\t\t\t//Save file\n\t\t\tOutputStreamWriter outputStreamWriter = io.getOutputStreamWriter(encoding);\n\t\t\tif (fitting) {\n\t\t\t\toutputStreamWriter.append(\"<?xml version=\\\"1.0\\\" ?>\\r\\n\");\n\t\t\t}\n\t\t\t// result\n\t\t\tResult result = new StreamResult(outputStreamWriter);\n\n\t\t\tTransformerFactory transformerFactory = TransformerFactory.newInstance();\n\t\t\tTransformer transformer;\n\t\t\ttransformer = transformerFactory.newTransformer();\n\t\t\ttransformer.setOutputProperty(OutputKeys.METHOD, \"xml\");\n\t\t\ttransformer.setOutputProperty(OutputKeys.INDENT, \"yes\");\n\t\t\ttransformer.setOutputProperty(OutputKeys.STANDALONE, \"yes\");\n\t\t\ttransformer.setOutputProperty(\"{http://xml.apache.org/xalan}indent-amount\", \"4\");\n\t\t\ttransformer.setOutputProperty(OutputKeys.ENCODING, encoding);\n\t\t\tif (fitting) {\n\t\t\t\ttransformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, \"yes\");\n\t\t\t}\n\t\t\ttransformer.transform(source, result);\n\t\t\tio.unlock(); //Unlock before backupFile() is called\n\t\t\t//Saving done - create backup and rename new file to target\n\t\t\tif (createBackup) {\n\t\t\t\tbackupFile(filename); //Rename .xml => .bac (.new is safe) and .new => .xml (.bac is safe). That way we always have at least one safe file\n\t\t\t}\n\t\t} catch (FileNotFoundException ex) {\n\t\t\tthrow new XmlException(ex.getMessage(), ex);\n\t\t} catch (TransformerConfigurationException ex) {\n\t\t\tthrow new XmlException(ex.getMessage(), ex);\n\t\t} catch (TransformerException ex) {\n\t\t\tthrow new XmlException(ex.getMessage(), ex);\n\t\t} catch (UnsupportedEncodingException ex) {\n\t\t\tthrow new XmlException(ex.getMessage(), ex);\n\t\t} catch (NonWritableChannelException ex) {\n\t\t\tthrow new XmlException(ex.getMessage(), ex);\n\t\t} catch (IOException ex) {\n\t\t\tthrow new XmlException(ex.getMessage(), ex);\n\t\t}\n\t}\n\n\tprotected void setAttribute(final Element node, final String qualifiedName, final Object value) {\n\t\tnode.setAttribute(qualifiedName, valueOf(value));\n\t}\n\n\tprotected void setAttributeOptional(final Element node, final String qualifiedName, final Object value) {\n\t\tif (value != null) {\n\t\t\tnode.setAttribute(qualifiedName, valueOf(value));\n\t\t}\n\t}\n\n\tprotected void setAttribute(final Element node, final String qualifiedName, final String value) {\n\t\tnode.setAttribute(qualifiedName, value);\n\t}\n\n\tpublic static String valueOf(final Object object) {\n\t\tif (object == null) {\n\t\t\tthrow new RuntimeException(\"Can't save null\");\n\t\t} else if (object instanceof Collection) {\n\t\t\tCollection<?> collection = (Collection) object;\n\t\t\tList<String> list = new ArrayList<>();\n\t\t\tfor (Object t : collection) {\n\t\t\t\tlist.add(valueOf(t));\n\t\t\t}\n\t\t\treturn String.join(\",\", list);\n\t\t} else if (object instanceof Color) {\n\t\t\tColor color = (Color) object;\n\t\t\treturn String.valueOf(color.getRGB());\n\t\t} else if (object instanceof Date) {\n\t\t\tDate date = (Date) object;\n\t\t\treturn String.valueOf(date.getTime());\n\t\t} else if (object instanceof Enum) {\n\t\t\treturn ((Enum)object).name();\n\t\t} else {\n\t\t\treturn String.valueOf(object);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/AgentsReader.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.io.local;\n\nimport java.util.Map;\nimport net.nikr.eve.jeveasset.data.sde.Agent;\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\nimport org.w3c.dom.Element;\nimport org.w3c.dom.Node;\nimport org.w3c.dom.NodeList;\n\n\npublic final class AgentsReader extends AbstractXmlReader<Boolean> {\n\n\tprivate final Map<Integer, Agent> agents;\n\n\tpublic AgentsReader(Map<Integer, Agent> agents) {\n\t\tthis.agents = agents;\n\t}\n\n\tpublic static void load(Map<Integer, Agent> agents) {\n\t\tAgentsReader reader = new AgentsReader(agents);\n\t\treader.read(\"Agents\", FileUtil.getPathAgents(), AbstractXmlReader.XmlType.STATIC);\n\t}\n\n\t@Override\n\tprotected Boolean parse(Element element) throws XmlException {\n\t\tparseAgents(element);\n\t\treturn true;\n\t}\n\n\t@Override\n\tprotected Boolean failValue() {\n\t\treturn false;\n\t}\n\n\t@Override\n\tprotected Boolean doNotExistValue() {\n\t\treturn false;\n\t}\n\n\tprivate void parseAgents(final Element element) throws XmlException {\n\t\tNodeList nodes = element.getElementsByTagName(\"row\");\n\t\tfor (int i = 0; i < nodes.getLength(); i++) {\n\t\t\tElement itemElement = (Element) nodes.item(i);\n\t\t\tAgent agent = parseAgent(itemElement);\n\t\t\tagents.put(agent.getAgentID(), agent);\n\t\t}\n\t}\n\n\tprivate Agent parseAgent(final Node node) throws XmlException {\n\t\tString agent = getString(node, \"agent\");\n\t\tint agentID = getInt(node, \"agentid\");\n\t\tint corporationID = getInt(node, \"corporationid\");\n\t\tint level = getInt(node, \"level\");\n\t\tint divisionID = getInt(node, \"divisionid\");\n\t\tint agentTypeID = getInt(node, \"agenttypeid\");\n\t\tlong locationID = getLong(node, \"locationid\");\n\t\tboolean locator = getBoolean(node, \"locator\");\n\t\treturn new Agent(agent, agentID, corporationID, level, divisionID, agentTypeID, locationID, locator);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/AssetAddedReader.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local;\r\n\r\nimport com.google.gson.Gson;\r\nimport com.google.gson.GsonBuilder;\r\nimport com.google.gson.JsonDeserializationContext;\r\nimport com.google.gson.JsonDeserializer;\r\nimport com.google.gson.JsonElement;\r\nimport com.google.gson.JsonParseException;\r\nimport com.google.gson.reflect.TypeToken;\r\nimport java.io.File;\r\nimport java.io.IOException;\r\nimport java.io.InputStreamReader;\r\nimport java.lang.reflect.Type;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.data.settings.AddedData;\r\nimport net.nikr.eve.jeveasset.io.local.FileLock.SafeFileIO;\r\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class AssetAddedReader extends AbstractBackup {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(AssetAddedReader.class);\r\n\r\n\tpublic static void load() {\r\n\t\tAssetAddedReader reader = new AssetAddedReader();\r\n\t\treader.read(FileUtil.getPathAssetAdded());\r\n\t}\r\n\r\n\tprotected void read(String filename) {\r\n\t\tFile file = new File(filename);\r\n\t\tif (!file.exists()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tbackup(filename);\r\n\t\ttry (SafeFileIO io = new SafeFileIO(file)){\r\n\t\t\tGson gson = new GsonBuilder().registerTypeAdapter(Date.class, new DateDeserializer()).create();\r\n\t\t\tMap<Long, Date> assetAddedData = gson.fromJson(new InputStreamReader(io.getFileInputStream()), new TypeToken<HashMap<Long, Date>>() {}.getType());\r\n\t\t\tif (assetAddedData != null) {\r\n\t\t\t\tAddedData.getAssets().set(assetAddedData); //Import from added.json\r\n\t\t\t\tLOG.info(\"Asset added data loaded\");\r\n\t\t\t}\r\n\t\t} catch (IOException | JsonParseException ex) {\r\n\t\t\tif (restoreNewFile(filename)) { //If possible restore from .new (Should be the newest)\r\n\t\t\t\tread(filename);\r\n\t\t\t} else if (restoreBackupFile(filename)) { //If possible restore from .bac (Should be the oldest, but, still worth trying)\r\n\t\t\t\tread(filename);\r\n\t\t\t} else { //Nothing left to try - throw error\r\n\t\t\t\trestoreFailed(filename); //Backup error file\r\n\t\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static class DateDeserializer implements JsonDeserializer<Date> {\r\n\r\n\t\t@Override\r\n\t\tpublic Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) {\r\n\t\t\treturn new Date(json.getAsLong());\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/AttributeGetters.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.io.local;\n\nimport java.awt.Color;\nimport java.text.ParseException;\nimport java.text.SimpleDateFormat;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Collection;\nimport java.util.Date;\nimport java.util.List;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport org.w3c.dom.Element;\nimport org.w3c.dom.Node;\nimport org.w3c.dom.NodeList;\n\n\npublic class AttributeGetters {\n\n\tprivate static final SimpleDateFormat FORMAT = new SimpleDateFormat(\"yyy-MM-dd HH:mm:ss\");\n\n\tprotected AttributeGetters() { }\n\n\tprotected Element getNodeOptional(final Element parent, final String nodeName) throws XmlException {\n\t\tNodeList nodes = parent.getElementsByTagName(nodeName);\n\t\tif (nodes.getLength() != 1) {\n\t\t\treturn null;\n\t\t}\n\t\treturn (Element) nodes.item(0);\n\t}\n\n\tprotected Element getNode(final Element parent, final String nodeName) throws XmlException {\n\t\tNodeList nodes = parent.getElementsByTagName(nodeName);\n\t\tif (nodes.getLength() != 1) {\n\t\t\tthrow new XmlException(nodeName + \" is \" + nodes.getLength()+ \" (should be 1)\");\n\t\t}\n\t\treturn (Element) nodes.item(0);\n\t}\n\n\tprotected boolean haveAttribute(final Node node, final String attributeName) {\n\t\tNode attributeNode = node.getAttributes().getNamedItem(attributeName);\n\t\treturn attributeNode != null;\n\t}\n\n\tprotected Color getColorOptional(final Node node, final String attributeName) throws XmlException {\n\t\tInteger i = getIntOptional(node, attributeName);\n\t\tif (i == null) {\n\t\t\treturn null;\n\t\t} else {\n\t\t\treturn new Color(i);\n\t\t}\n\t}\n\n\tprotected Color getColor(final Node node, final String attributeName) throws XmlException {\n\t\tint i = getInt(node, attributeName);\n\t\treturn new Color(i);\n\t}\n\n\tprotected List<String> getStringListOptional(final Node node, final String attributeName) throws XmlException {\n\t\tString nodeValue = getNodeValueOptional(node, attributeName);\n\t\tif (nodeValue == null) {\n\t\t\treturn null;\n\t\t} else {\n\t\t\treturn stringToList(nodeValue);\n\t\t}\n\t}\n\n\tprotected void addIntToList(final Node node, final String attributeName, final Collection<Integer> addTo) throws XmlException {\n\t\tString nodeValue = getNodeValueOptional(node, attributeName);\n\t\tif (nodeValue == null) {\n\t\t\treturn;\n\t\t}\n\t\tfor (String s : nodeValue.split(\",\")) {\n\t\t\ttry {\n\t\t\t\taddTo.add(Integer.valueOf(s));\n\t\t\t} catch (NumberFormatException ex) {\n\t\t\t\t//Ignore...\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected List<String> getStringList(final Node node, final String attributeName) throws XmlException {\n\t\tString nodeValue = getNodeValue(node, attributeName);\n\t\treturn stringToList(nodeValue);\n\t}\n\n\tprivate List<String> stringToList(String nodeValue) {\n\t\tString[] arr = nodeValue.split(\",\");\n\t\treturn new ArrayList<>(Arrays.asList(arr));\n\t}\n\n\tprotected String getString(final Node node, final String attributeName) throws XmlException {\n\t\treturn getNodeValue(node, attributeName);\n\t}\n\n\tprotected String getStringOptional(final Node node, final String attributeName) throws XmlException {\n\t\treturn getNodeValueOptional(node, attributeName);\n\t}\n\n\tprotected String getStringNotNull(final Node node, final String attributeName, final String defaultValue) throws XmlException {\n\t\tString value = getNodeValueOptional(node, attributeName);\n\t\tif (value == null) {\n\t\t\treturn defaultValue;\n\t\t}\n\t\treturn value;\n\t}\n\n\tprotected Date getDate(final Node node, final String attributeName) throws XmlException {\n\t\tString value = getNodeValue(node, attributeName);\n\t\treturn toDate(value, node, attributeName);\n\t}\n\n\tprotected Date getDateNotNull(final Node node, final String attributeName) {\n\t\tString value = getNodeValueOptional(node, attributeName);\n\t\tif (value == null) {\n\t\t\treturn Settings.getNow();\n\t\t}\n\t\ttry {\n\t\t\treturn toDate(value, node, attributeName);\n\t\t} catch (XmlException ex) {\n\t\t\treturn Settings.getNow();\n\t\t}\n\t}\n\n\tprotected Date getDateOptional(final Node node, final String attributeName) throws XmlException {\n\t\tString value = getNodeValueOptional(node, attributeName);\n\t\tif (value == null) {\n\t\t\treturn null;\n\t\t}\n\t\treturn toDate(value, node, attributeName);\n\t}\n\n\tprivate Date toDate(final String value, final Node node, final String attributeName) throws XmlException {\n\t\ttry {\n\t\t\treturn FORMAT.parse(value);\n\t\t} catch (ParseException ex) {\n\t\t\t//Lets try one more thing\n\t\t}\n\t\ttry {\n\t\t\treturn new Date(Long.parseLong(value));\n\t\t} catch (NumberFormatException ex) {\n\t\t\tthrow new XmlException(\"Failed to convert value: \" +value+ \" to Date form node: \" + node.getNodeName() + \" > \" + attributeName);\n\t\t}\n\t}\n\n\tprotected int getInt(final Node node, final String attributeName) throws XmlException {\n\t\tString value = getNodeValue(node, attributeName);\n\t\treturn toInt(value, node, attributeName);\n\t}\n\n\tprotected Integer getIntOptional(final Node node, final String attributeName) throws XmlException {\n\t\tString value = getNodeValueOptional(node, attributeName);\n\t\tif (value == null) {\n\t\t\treturn null;\n\t\t}\n\t\treturn toInt(value, node, attributeName);\n\t}\n\n\tprotected int getIntNotNull(final Node node, final String attributeName, final int defaultValue) throws XmlException {\n\t\tString value = getNodeValueOptional(node, attributeName);\n\t\tif (value == null) {\n\t\t\treturn defaultValue;\n\t\t}\n\t\treturn toInt(value, node, attributeName);\n\t}\n\n\tprotected Integer toInt(String value, final Node node, final String attributeName) throws XmlException {\n\t\ttry {\n\t\t\treturn Integer.parseInt(value);\n\t\t} catch (NumberFormatException ex) {\n\t\t\tthrow new XmlException(\"Failed to convert value: \" +value+ \" to Integer form node: \" + node.getNodeName() + \" > \" + attributeName);\n\t\t}\n\t}\n\n\tprotected long getLong(final Node node, final String attributeName) throws XmlException {\n\t\tString value = getNodeValue(node, attributeName);\n\t\treturn toLong(value, node, attributeName);\n\t}\n\n\tprotected Long getLongOptional(final Node node, final String attributeName) throws XmlException {\n\t\tString value = getNodeValueOptional(node, attributeName);\n\t\tif (value == null) {\n\t\t\treturn null;\n\t\t}\n\t\treturn toLong(value, node, attributeName);\n\t}\n\n\tprotected long getLongNotNull(final Node node, final String attributeName, final long defaultValue) throws XmlException {\n\t\tString value = getNodeValueOptional(node, attributeName);\n\t\tif (value == null) {\n\t\t\treturn defaultValue;\n\t\t}\n\t\treturn toLong(value, node, attributeName);\n\t}\n\n\tprivate Long toLong(final String value, final Node node, final String attributeName) throws XmlException {\n\t\ttry {\n\t\t\treturn safeStringToLong(value);\n\t\t} catch (NumberFormatException ex) {\n\t\t\tthrow new XmlException(\"Failed to convert value: \" +value+ \" to Long form node: \" + node.getNodeName() + \" > \" + attributeName);\n\t\t}\n\t}\n\n\tprotected double getDouble(final Node node, final String attributeName) throws XmlException {\n\t\tString value = getNodeValue(node, attributeName);\n\t\treturn toDouble(value, node, attributeName);\n\t}\n\n\tprotected Double getDoubleOptional(final Node node, final String attributeName) throws XmlException {\n\t\tString value = getNodeValueOptional(node, attributeName);\n\t\tif (value == null) {\n\t\t\treturn null;\n\t\t}\n\t\treturn toDouble(value, node, attributeName);\n\t}\n\n\tprotected double getDoubleNotNull(final Node node, final String attributeName, final double defaultValue) throws XmlException {\n\t\tString value = getNodeValueOptional(node, attributeName);\n\t\tif (value == null) {\n\t\t\treturn defaultValue;\n\t\t}\n\t\treturn toDouble(value, node, attributeName);\n\t}\n\n\tprivate Double toDouble(final String value, final Node node, final String attributeName) throws XmlException {\n\t\ttry {\n\t\t\treturn Double.valueOf(value);\n\t\t} catch (NumberFormatException ex) {\n\t\t\tthrow new XmlException(\"Failed to convert value: \" +value+ \" to Double form node: \" + node.getNodeName() + \" > \" + attributeName);\n\t\t}\n\t}\n\n\tprotected float getFloat(final Node node, final String attributeName) throws XmlException {\n\t\tString value = getNodeValue(node, attributeName);\n\t\treturn toFloat(value, node, attributeName);\n\t}\n\n\tprotected Float getFloatOptional(final Node node, final String attributeName) throws XmlException {\n\t\tString value = getNodeValueOptional(node, attributeName);\n\t\tif (value == null) {\n\t\t\treturn null;\n\t\t}\n\t\treturn toFloat(value, node, attributeName);\n\t}\n\n\tprotected float getFloatNotNull(final Node node, final String attributeName, final float defaultValue) throws XmlException {\n\t\tString value = getNodeValueOptional(node, attributeName);\n\t\tif (value == null) {\n\t\t\treturn defaultValue;\n\t\t}\n\t\treturn toFloat(value, node, attributeName);\n\t}\n\n\tprivate Float toFloat(String value, final Node node, final String attributeName) throws XmlException {\n\t\ttry {\n\t\t\treturn Float.valueOf(value);\n\t\t} catch (NumberFormatException ex) {\n\t\t\tthrow new XmlException(\"Failed to convert value: \" +value+ \" to Float form node: \" + node.getNodeName() + \" > \" + attributeName);\n\t\t}\n\t}\n\n\tprotected boolean getBoolean(final Node node, final String attributeName) throws XmlException {\n\t\tString value = getNodeValue(node, attributeName);\n\t\treturn (value.equals(\"true\") || value.equals(\"1\"));\n\t}\n\n\tprotected Boolean getBooleanOptional(final Node node, final String attributeName) throws XmlException {\n\t\tString value = getNodeValueOptional(node, attributeName);\n\t\tif (value == null) {\n\t\t\treturn null;\n\t\t}\n\t\treturn (value.equals(\"true\") || value.equals(\"1\"));\n\t}\n\n\tprotected boolean getBooleanNotNull(final Node node, final String attributeName, final boolean defaultValue) throws XmlException {\n\t\tString value = getNodeValueOptional(node, attributeName);\n\t\tif (value == null) {\n\t\t\treturn defaultValue;\n\t\t}\n\t\treturn (value.equals(\"true\") || value.equals(\"1\"));\n\t}\n\n\tprivate Long safeStringToLong(final String s) {\n\t\tint nE = s.indexOf(\"E\");\n\t\tif (nE == -1) {\n\t\t\tnE = s.indexOf(\"e\");\n\t\t}\n\t\tif (nE == -1) {\n\t\t\treturn Long.parseLong(s);\n\t\t}\n\t\tString sFirstNumber = s.substring(0, nE);\n\t\tString sLastNumber = s.substring(nE + 2);\n\t\tdouble nFirstNumber = Double.parseDouble(sFirstNumber);\n\t\tdouble nLastNumber = Double.parseDouble(sLastNumber);\n\n\t\tlong nOutput = 10;\n\t\tfor (int a = 1; a < nLastNumber; a++) {\n\t\t\tnOutput = nOutput * 10;\n\t\t}\n\t\tnOutput = (long) Math.ceil(nFirstNumber * nOutput);\n\t\treturn nOutput;\n\t}\n\n\tprivate String getNodeValue(final Node node, final String attributeName) throws XmlException {\n\t\tNode attributeNode = node.getAttributes().getNamedItem(attributeName);\n\t\tif (attributeNode == null) {\n\t\t\tthrow new XmlException(\"Failed to parse attribute from node: \" + node.getNodeName() + \" > \" + attributeName);\n\t\t}\n\t\treturn attributeNode.getNodeValue();\n\t}\n\n\tprivate String getNodeValueOptional(final Node node, final String attributeName) {\n\t\tNode attributeNode = node.getAttributes().getNamedItem(attributeName);\n\t\tif (attributeNode == null) {\n\t\t\treturn null;\n\t\t} else {\n\t\t\treturn attributeNode.getNodeValue();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/CitadelReader.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.io.local;\n\nimport net.nikr.eve.jeveasset.data.settings.Citadel;\nimport net.nikr.eve.jeveasset.data.settings.Citadel.CitadelSource;\nimport net.nikr.eve.jeveasset.data.settings.CitadelSettings;\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\nimport org.w3c.dom.Element;\nimport org.w3c.dom.NodeList;\n\n\npublic final class CitadelReader extends AbstractXmlReader<CitadelSettings> {\n\n\tprivate CitadelReader() { }\n\n\tpublic static CitadelSettings load() {\n\t\tCitadelReader reader = new CitadelReader();\n\t\treturn reader.read(\"Citadels\", FileUtil.getPathCitadel(), AbstractXmlReader.XmlType.DYNAMIC);\n\t}\n\n\t@Override\n\tprotected CitadelSettings parse(Element element) throws XmlException {\n\t\tCitadelSettings settings = new CitadelSettings();\n\t\tparseCitadels(element, settings);\n\t\treturn settings;\n\t}\n\n\t@Override\n\tprotected CitadelSettings failValue() {\n\t\treturn new CitadelSettings();\n\t}\n\n\t@Override\n\tprotected CitadelSettings doNotExistValue() {\n\t\treturn new CitadelSettings();\n\t}\n\n\tprivate void parseCitadels(final Element element, final CitadelSettings settings) throws XmlException {\n\t\tif (!element.getNodeName().equals(\"citadels\")) {\n\t\t\tthrow new XmlException(\"Wrong root element name.\");\n\t\t}\n\t\tparseCitadel(element, settings);\n\t}\n\n\tprivate void parseCitadel(final Element element, final CitadelSettings settings) throws XmlException {\n\t\tNodeList filterNodes = element.getElementsByTagName(\"citadel\");\n\t\tfor (int i = 0; i < filterNodes.getLength(); i++) {\n\t\t\tElement currentNode = (Element) filterNodes.item(i);\n\t\t\tlong id = getLong(currentNode, \"stationid\");\n\t\t\tString name = getString(currentNode, \"name\");\n\t\t\tlong systemId = getLong(currentNode, \"systemid\");\n\t\t\tboolean userLocation = getBooleanNotNull(currentNode, \"userlocation\", false) ;\n\t\t\tboolean citadel = getBooleanNotNull(currentNode, \"citadel\", true);\n\t\t\tCitadelSource source = CitadelSource.OLD;\n\t\t\tif (haveAttribute(currentNode, \"source\")) {\n\t\t\t\ttry {\n\t\t\t\t\tsource = CitadelSource.valueOf(getString(currentNode, \"source\"));\n\t\t\t\t} catch (IllegalArgumentException ex) {\n\t\t\t\t\tsource = CitadelSource.OLD;\n\t\t\t\t}\n\t\t\t}\n\t\t\tsettings.put(id, new Citadel(id, name, systemId, userLocation, citadel, source));\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/CitadelWriter.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.io.local;\n\nimport java.util.Map;\nimport net.nikr.eve.jeveasset.data.settings.Citadel;\nimport net.nikr.eve.jeveasset.data.settings.CitadelSettings;\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.w3c.dom.Document;\nimport org.w3c.dom.Element;\n\n\npublic final class CitadelWriter extends AbstractXmlWriter {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(CitadelWriter.class);\n\n\tprivate CitadelWriter() { }\n\n\tpublic static void save(CitadelSettings settings) {\n\t\tCitadelWriter writer = new CitadelWriter();\n\t\twriter.write(settings);\n\t}\n\n\tprivate void write(CitadelSettings settings) {\n\t\tDocument xmldoc = null;\n\t\ttry {\n\t\t\txmldoc = getXmlDocument(\"citadels\");\n\t\t} catch (XmlException ex) {\n\t\t\tLOG.error(\"Citadel not saved \" + ex.getMessage(), ex);\n\t\t}\n\t\twriteCitadels(xmldoc, settings);\n\n\t\t//xmldoc.normalizeDocument();\n\t\ttry {\n\t\t\twriteXmlFile(xmldoc, FileUtil.getPathCitadel(), true);\n\t\t} catch (XmlException ex) {\n\t\t\tLOG.error(\"Citadel not saved \" + ex.getMessage(), ex);\n\t\t}\n\t\tLOG.info(\"\tCitadel saved\");\n\t}\n\n\tprivate void writeCitadels(final Document xmldoc, final CitadelSettings settings) {\n\t\tElement parentNode = xmldoc.getDocumentElement();\n\t\tfor (Map.Entry<Long, Citadel> entry : settings.getCache()) {\n\t\t\tElement node = xmldoc.createElementNS(null, \"citadel\");\n\t\t\tCitadel citadel = entry.getValue();\n\t\t\tsetAttribute(node, \"stationid\", entry.getKey());\n\t\t\tsetAttribute(node, \"systemid\", citadel.getSystemID());\n\t\t\tsetAttribute(node, \"name\", citadel.getLocation());\n\t\t\tsetAttribute(node, \"userlocation\", citadel.isUserLocation());\n\t\t\tsetAttribute(node, \"citadel\", citadel.isCitadel());\n\t\t\tsetAttribute(node, \"source\", citadel.getSource());\n\t\t\tparentNode.appendChild(node);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/CsvWriter.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.io.local;\n\nimport java.io.FileWriter;\nimport java.io.IOException;\nimport java.util.List;\nimport java.util.Map;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.supercsv.io.CsvMapWriter;\nimport org.supercsv.io.ICsvMapWriter;\nimport org.supercsv.prefs.CsvPreference;\n\n\npublic final class CsvWriter {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(CsvWriter.class);\n\n\tprivate CsvWriter() { }\n\n\tpublic static boolean save(final String filename, final List<Map<String, String>> data, final String[] header, final String[] headerKeys, final CsvPreference csvPreference) {\n\t\tCsvWriter writer = new CsvWriter();\n\t\treturn writer.write(filename, data, header, headerKeys, csvPreference);\n\t}\n\n\tprivate boolean write(final String filename, final List<Map<String, String>> data, final String[] header, final String[] headerKeys, final CsvPreference csvPreference) {\n\t\tICsvMapWriter writer;\n\t\ttry {\n\t\t\twriter = new CsvMapWriter(new FileWriter(filename), csvPreference);\n\t\t\twriter.writeHeader(header);\n\t\t\tfor (Map<String, String> map : data) {\n\t\t\t\twriter.write(map, headerKeys);\n\t\t\t}\n\t\t\twriter.close();\n\t\t} catch (IOException ex) {\n\t\t\tLOG.warn(\"CSV file not saved\");\n\t\t\treturn false;\n\t\t}\n\t\tLOG.info(\"CSV file saved\");\n\t\treturn true;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/EveFittingReader.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\nimport java.util.TreeMap;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\r\nimport org.w3c.dom.Element;\r\nimport org.w3c.dom.NodeList;\r\n\r\n\r\npublic class EveFittingReader extends AbstractXmlReader<Map<String, Map<Integer, Double>>> {\r\n\r\n\tpublic static Map<String, Map<Integer, Double>> load(final String filename) {\r\n\t\tEveFittingReader reader = new EveFittingReader();\r\n\t\treturn reader.read(\"Fitting\", filename, XmlType.IMPORT);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected Map<String, Map<Integer, Double>> parse(Element element) throws XmlException {\r\n\t\tMap<String, Map<Integer, Double>> map = new TreeMap<>();\r\n\t\tparseFits(element, map);\r\n\t\treturn map;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected Map<String, Map<Integer, Double>> failValue() {\r\n\t\treturn null;\r\n\t}\r\n\r\n\t@Override\r\n\tprotected Map<String, Map<Integer, Double>> doNotExistValue() {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate void parseFits(final Element element, final Map<String, Map<Integer, Double>> map) throws XmlException {\r\n\t\tif (!element.getNodeName().equals(\"fittings\")) {\r\n\t\t\tthrow new XmlException(\"Wrong root element name.\");\r\n\t\t}\r\n\t\tparseFit(element, map);\r\n\t}\r\n\r\n\tprivate void parseFit(final Element element, final Map<String, Map<Integer, Double>> map) throws XmlException {\r\n\t\tNodeList fittingNodes = element.getElementsByTagName(\"fitting\");\r\n\t\tMap<String, Integer> types = new HashMap<>();\r\n\t\tfor (Item item : StaticData.get().getItems().values()) {\r\n\t\t\ttypes.put(item.getTypeName(), item.getTypeID());\r\n\t\t}\r\n\t\tfor (int i = 0; i < fittingNodes.getLength(); i++) {\r\n\t\t\tElement fittingNode = (Element) fittingNodes.item(i);\r\n\t\t\tString name = getString(fittingNode, \"name\");\r\n\t\t\tMap<Integer, Double> data = new HashMap<>();\r\n\t\t\tmap.put(name, data);\r\n\t\t\tNodeList hardwareNodes = fittingNode.getElementsByTagName(\"hardware\");\r\n\t\t\tfor (int a = 0; a < hardwareNodes.getLength(); a++) {\r\n\t\t\t\tElement hardwareNode = (Element) hardwareNodes.item(a);\r\n\t\t\t\tdouble quantity = getIntNotNull(hardwareNode, \"qty\", 1);\r\n\t\t\t\tString type = getString(hardwareNode, \"type\");\r\n\t\t\t\tInteger typeID = types.get(type);\r\n\t\t\t\tif (typeID != null) {\r\n\t\t\t\t\tDouble previuse = data.put(typeID, quantity);\r\n\t\t\t\t\tif (previuse != null) {\r\n\t\t\t\t\t\tdata.put(typeID, quantity + previuse);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tNodeList shipTypeNodes = fittingNode.getElementsByTagName(\"shipType\");\r\n\t\t\tfor (int a = 0; a < shipTypeNodes.getLength(); a++) {\r\n\t\t\t\tElement shipTypeNode = (Element) shipTypeNodes.item(a);\r\n\t\t\t\tString type = getString(shipTypeNode, \"value\");\r\n\t\t\t\tInteger typeID = types.get(type);\r\n\t\t\t\tif (typeID != null) {\r\n\t\t\t\t\tDouble previuse = data.put(typeID, 1.0);\r\n\t\t\t\t\tif (previuse != null) {\r\n\t\t\t\t\t\tdata.put(typeID, 1.0 + previuse);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/EveFittingWriter.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.io.local;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.w3c.dom.Document;\nimport org.w3c.dom.Element;\n\n\npublic final class EveFittingWriter extends AbstractXmlWriter {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(EveFittingWriter.class);\n\n\tprivate EveFittingWriter() { }\n\n\tpublic static void save(final List<MyAsset> assets, final String filename) {\n\t\tsave(assets, filename, null, null);\n\t}\n\n\tpublic static void save(final List<MyAsset> assets, final String filename, final String setupName, final String description) {\n\t\tEveFittingWriter writer = new EveFittingWriter();\n\t\twriter.write(assets, filename, setupName, description);\n\t}\n\n\tprivate void write(final List<MyAsset> assets, final String filename, String setupName, String description) {\n\t\tDocument xmldoc = null;\n\t\ttry {\n\t\t\txmldoc = getXmlDocument(\"fittings\");\n\t\t} catch (XmlException ex) {\n\t\t\tLOG.error(\"Eve fitting not saved \" + ex.getMessage(), ex);\n\t\t}\n\n\t\tboolean noSetupName = (setupName == null);\n\t\tif (description == null) {\n\t\t\tdescription = Program.PROGRAM_NAME + \" export all\";\n\t\t}\n\n\t\tfor (MyAsset asset : assets) {\n\t\t\tif (noSetupName) {\n\t\t\t\tsetupName = asset.getName();\n\t\t\t}\n\t\t\twriteFitting(xmldoc, asset, setupName, description);\n\t\t}\n\t\ttry {\n\t\t\twriteXmlFileFitting(xmldoc, filename, false);\n\t\t} catch (XmlException ex) {\n\t\t\tLOG.error(\"Eve fitting not saved \" + ex.getMessage(), ex);\n\t\t}\n\t\tLOG.info(\"Eve fitting saved\");\n\t}\n\n\tprivate void writeFitting(final Document xmldoc, final MyAsset asset, final String setupName, final String description) {\n\t\tElement fittingsNode = xmldoc.getDocumentElement();\n\t\tElement fittingNode = xmldoc.createElementNS(null, \"fitting\");\n\t\t//Fit Name\n\t\tsetAttribute(fittingNode, \"name\", setupName);\n\t\tfittingsNode.appendChild(fittingNode);\n\n\t\t//Description\n\t\tElement descriptionNode = xmldoc.createElementNS(null, \"description\");\n\t\tsetAttribute(descriptionNode, \"value\", description);\n\t\tfittingNode.appendChild(descriptionNode);\n\n\t\t//Ship Type\n\t\tElement shipTypeNode = xmldoc.createElementNS(null, \"shipType\");\n\t\tsetAttribute(shipTypeNode, \"value\", asset.getTypeName());\n\t\tfittingNode.appendChild(shipTypeNode);\n\n\t\t//Sort assets by (last) flag\n\t\tMap<String, List<MyAsset>> modules = new HashMap<String, List<MyAsset>>();\n\t\tfor (MyAsset module : asset.getAssets()) {\n\t\t\tString flag = module.getFlag();\n\t\t\tif (flag.contains(\" > \")) { //last flag\n\t\t\t\tint start = flag.indexOf(\" > \") + 3;\n\t\t\t\tflag = flag.substring(start);\n\t\t\t}\n\t\t\tList<MyAsset> subModules = modules.get(flag);\n\t\t\tif (subModules == null) { //New flag list\n\t\t\t\tsubModules = new ArrayList<MyAsset>();\n\t\t\t\tmodules.put(flag, subModules);\n\t\t\t}\n\t\t\tsubModules.add(module); //Add to flag list\n\t\t}\n\n\t\tElement hardwareNode;\n\t\t//Low Slots 0-7\n\t\tfor (int i = 0; i < 8; i++) {\n\t\t\tif (modules.containsKey(\"LoSlot\" + i)) {\n\t\t\t\thardwareNode = xmldoc.createElementNS(null, \"hardware\");\n\t\t\t\tsetAttribute(hardwareNode, \"slot\", \"low slot \" + i);\n\t\t\t\tsetAttribute(hardwareNode, \"type\", modules.get(\"LoSlot\" + i).get(0).getName());\n\t\t\t\tfittingNode.appendChild(hardwareNode);\n\t\t\t}\n\t\t}\n\t\t//Medium Slots 0-7\n\t\tfor (int i = 0; i < 8; i++) {\n\t\t\tif (modules.containsKey(\"MedSlot\" + i)) {\n\t\t\t\thardwareNode = xmldoc.createElementNS(null, \"hardware\");\n\t\t\t\tsetAttribute(hardwareNode, \"slot\", \"med slot \" + i);\n\t\t\t\tsetAttribute(hardwareNode, \"type\", modules.get(\"MedSlot\" + i).get(0).getName());\n\t\t\t\tfittingNode.appendChild(hardwareNode);\n\t\t\t}\n\t\t}\n\t\t//High Slots 0-7\n\t\tfor (int i = 0; i < 8; i++) {\n\t\t\tif (modules.containsKey(\"HiSlot\" + i)) {\n\t\t\t\thardwareNode = xmldoc.createElementNS(null, \"hardware\");\n\t\t\t\tsetAttribute(hardwareNode, \"slot\", \"hi slot \" + i);\n\t\t\t\tsetAttribute(hardwareNode, \"type\", modules.get(\"HiSlot\" + i).get(0).getName());\n\t\t\t\tfittingNode.appendChild(hardwareNode);\n\t\t\t}\n\t\t}\n\t\t//Rig Slots 0-7\n\t\tfor (int i = 0; i < 8; i++) {\n\t\t\tif (modules.containsKey(\"RigSlot\" + i)) {\n\t\t\t\thardwareNode = xmldoc.createElementNS(null, \"hardware\");\n\t\t\t\tsetAttribute(hardwareNode, \"slot\", \"rig slot \" + i);\n\t\t\t\tsetAttribute(hardwareNode, \"type\", modules.get(\"RigSlot\" + i).get(0).getName());\n\t\t\t\tfittingNode.appendChild(hardwareNode);\n\t\t\t}\n\t\t}\n\t\t//Sub Systems\n\t\tfor (int i = 0; i < 5; i++) {\n\t\t\tif (modules.containsKey(\"SubSystem\" + i)) {\n\t\t\t\thardwareNode = xmldoc.createElementNS(null, \"hardware\");\n\t\t\t\tsetAttribute(hardwareNode, \"slot\", \"subsystem slot\" + i);\n\t\t\t\tsetAttribute(hardwareNode, \"type\", modules.get(\"SubSystem\" + i).get(0).getName());\n\t\t\t\tfittingNode.appendChild(hardwareNode);\n\t\t\t}\n\t\t}\n\t\t//Drone Bay\n\t\tif (modules.containsKey(\"DroneBay\")) {\n\t\t\tMap<String, Long> moduleCount = new HashMap<String, Long>();\n\t\t\tList<MyAsset> subModules = modules.get(\"DroneBay\");\n\t\t\tfor (MyAsset subModule : subModules) {\n\t\t\t\tif (moduleCount.containsKey(subModule.getName())) {\n\t\t\t\t\tlong count = moduleCount.get(subModule.getName());\n\t\t\t\t\tmoduleCount.remove(subModule.getName());\n\t\t\t\t\tcount = count + subModule.getCount();\n\t\t\t\t\tmoduleCount.put(subModule.getName(), count);\n\t\t\t\t} else {\n\t\t\t\t\tmoduleCount.put(subModule.getName(), subModule.getCount());\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (Map.Entry<String, Long> entry : moduleCount.entrySet()) {\n\t\t\t\thardwareNode = xmldoc.createElementNS(null, \"hardware\");\n\t\t\t\tsetAttribute(hardwareNode, \"qty\", String.valueOf(entry.getValue()));\n\t\t\t\tsetAttribute(hardwareNode, \"slot\", \"drone bay\");\n\t\t\t\tsetAttribute(hardwareNode, \"type\", entry.getKey());\n\t\t\t\tfittingNode.appendChild(hardwareNode);\n\t\t\t}\n\t\t}\n\t\t//Cargo\n\t\tif (modules.containsKey(\"Cargo\")) {\n\t\t\tMap<String, Long> moduleCount = new HashMap<String, Long>();\n\t\t\tList<MyAsset> subModules = modules.get(\"Cargo\");\n\t\t\tfor (MyAsset subModule : subModules) {\n\t\t\t\tif (moduleCount.containsKey(subModule.getName())) {\n\t\t\t\t\tlong count = moduleCount.get(subModule.getName());\n\t\t\t\t\tmoduleCount.remove(subModule.getName());\n\t\t\t\t\tcount = count + subModule.getCount();\n\t\t\t\t\tmoduleCount.put(subModule.getName(), count);\n\t\t\t\t} else {\n\t\t\t\t\tmoduleCount.put(subModule.getName(), subModule.getCount());\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (Map.Entry<String, Long> entry : moduleCount.entrySet()) {\n\t\t\t\thardwareNode = xmldoc.createElementNS(null, \"hardware\");\n\t\t\t\tsetAttribute(hardwareNode, \"qty\", String.valueOf(entry.getValue()));\n\t\t\t\tsetAttribute(hardwareNode, \"slot\", \"cargo\");\n\t\t\t\tsetAttribute(hardwareNode, \"type\", entry.getKey());\n\t\t\t\tfittingNode.appendChild(hardwareNode);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/FileLock.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local;\r\n\r\nimport java.io.Closeable;\r\nimport java.io.File;\r\nimport java.io.FileInputStream;\r\nimport java.io.FileOutputStream;\r\nimport java.io.IOException;\r\nimport java.io.OutputStreamWriter;\r\nimport java.nio.channels.FileChannel;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport javax.swing.JEditorPane;\r\nimport javax.swing.JOptionPane;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JLabelMultilineHtml;\r\nimport net.nikr.eve.jeveasset.i18n.General;\r\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\r\nimport org.slf4j.LoggerFactory;\r\n\r\npublic class FileLock {\r\n\r\n\tprivate static final org.slf4j.Logger LOG = LoggerFactory.getLogger(FileLock.class);\r\n\tprivate static final Object SYNC_LOCK = new Object();\r\n\tprivate static final int MAX_TRIES = 12; //1 minute\r\n\tprivate static final int DELAY = 5000;\r\n\tprivate static final List<File> LOCKS = new ArrayList<>();\r\n\tprivate static final List<SafeFileIO> OS_LOCKS = new ArrayList<>();\r\n\tprivate static boolean safe = false;\r\n\r\n\tprivate static void saferShutdown() {\r\n\t\tRuntime.getRuntime().addShutdownHook(new Thread() {\r\n\t\t\t@Override\r\n\t\t\tpublic void run() {\r\n\t\t\t\tunlockLocked();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate static void unlockLocked() {\r\n\t\tLOG.info(\"Unlocking \" + LOCKS.size() + \" files\");\r\n\t\twhile (!LOCKS.isEmpty()) {\r\n\t\t\tunlock(LOCKS.get(0));\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static void add(File file) {\r\n\t\tif (!safe) {\r\n\t\t\tsafe = true;\r\n\t\t\tsaferShutdown();\r\n\r\n\t\t}\r\n\t\tLOCKS.add(file);\r\n\t}\r\n\r\n\tprivate static void remove(File file) {\r\n\t\tLOCKS.remove(file);\r\n\t}\r\n\r\n\tpublic static void unlockAll() {\r\n\t\tLOG.info(\"Unlocking all files\");\r\n\t\tFile folder;\r\n\t\tfolder = new File(FileUtil.getPathProfilesDirectory());\r\n\t\tunlockFiles(folder.listFiles());\r\n\t\tfolder = new File(FileUtil.getPathStaticDataDirectory());\r\n\t\tunlockFiles(folder.listFiles());\r\n\t\tfolder = new File(FileUtil.getPathDataDirectory());\r\n\t\tunlockFiles(folder.listFiles());\r\n\t\twhile (!OS_LOCKS.isEmpty()) {\r\n\t\t\ttry {\r\n\t\t\t\tOS_LOCKS.get(0).close();\r\n\t\t\t} catch (IOException ex) {\r\n\t\t\t\tthrow new RuntimeException(ex);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static void unlockFiles(File[] files) {\r\n\t\tif (files == null) { //We can not be sure directory has been created...\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tfor (File file : files) {\r\n\t\t\tif (file.getName().endsWith(\".LOCK\")) {\r\n\t\t\t\tfile.delete();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static void lock(File file) {\r\n\t\tlock(file, 0, DELAY);\r\n\t}\r\n\r\n\tprivate static void lock(File file, int tries, int delay) {\r\n\t\ttry {\r\n\t\t\ttryLockFile(file);\r\n\t\t} catch (Exception ex) {\r\n\t\t\ttries++;\r\n\t\t\tif (tries > MAX_TRIES) {\r\n\t\t\t\tJOptionPane.showMessageDialog(null, getMessage(file), General.get().fileLockTitle(), JOptionPane.ERROR_MESSAGE);\r\n\t\t\t\tSystem.exit(-1);\r\n\t\t\t} else {\r\n\t\t\t\twaitForUnlock(file, tries, delay);\r\n\t\t\t\tlock(file, tries, delay);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static synchronized void tryLockFile(File file) throws Exception {\r\n\t\tif (isLocked(file)) {\r\n\t\t\tthrow new IOException();\r\n\t\t}\r\n\t\tboolean ok = convertFile(file).createNewFile();\r\n\t\tif (!ok) {\r\n\t\t\tthrow new IOException();\r\n\t\t}\r\n\t\tadd(file);\r\n\t}\r\n\r\n\tprivate static synchronized void unlock(File file) {\r\n\t\tconvertFile(file).delete();\r\n\t\tremove(file);\r\n\t\tsynchronized (SYNC_LOCK) {\r\n\t\t\tSYNC_LOCK.notify();\r\n\t\t}\r\n\t}\r\n\r\n\tprotected static boolean isLocked(File file) {\r\n\t\treturn convertFile(file).exists();\r\n\t}\r\n\r\n\tprivate static File convertFile(File file) {\r\n\t\treturn new File(file.getAbsolutePath() + \".LOCK\");\r\n\t}\r\n\r\n\tprivate static void waitForUnlock(File file, int tries, int delay) {\r\n\t\tLOG.info(\"Waiting for lock: \" + file.getName() + \" (\" + tries + \" of \" + MAX_TRIES + \")\");\r\n\t\ttry {\r\n\t\t\tsynchronized (SYNC_LOCK) {\r\n\t\t\t\tSYNC_LOCK.wait(delay);\r\n\t\t\t}\r\n\t\t} catch (InterruptedException ex) {\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static JEditorPane getMessage(File file) {\r\n\t\tJLabelMultilineHtml jEditorPane = new JLabelMultilineHtml(General.get().fileLockMsg(file.getName()));\r\n\t\treturn jEditorPane;\r\n\t}\r\n\r\n\tpublic static class SafeFileIO implements Closeable {\r\n\r\n\t\tprivate final File file;\r\n\t\tprivate final boolean skipInternalLock;\r\n\t\tprivate Closeable closeable;\r\n\t\tprivate FileChannel channel;\r\n\t\tprivate java.nio.channels.FileLock lock;\r\n\r\n\t\tpublic SafeFileIO(String filename) {\r\n\t\t\tthis(new File(filename));\r\n\t\t}\r\n\r\n\t\tpublic SafeFileIO(File file) {\r\n\t\t\tthis(file, false);\r\n\t\t}\r\n\r\n\t\tpublic SafeFileIO(File file, boolean skipInternalLock) {\r\n\t\t\tthis.file = file;\r\n\t\t\tthis.skipInternalLock = skipInternalLock;\r\n\t\t\tif (!skipInternalLock) {\r\n\t\t\t\tFileLock.lock(file); //Lock internally - must be first\r\n\t\t\t}\r\n\t\t\tOS_LOCKS.add(this);\r\n\t\t}\r\n\r\n\t\tpublic OutputStreamWriter getOutputStreamWriter() throws IOException {\r\n\t\t\treturn getOutputStreamWriter(null);\r\n\t\t}\r\n\r\n\t\tpublic OutputStreamWriter getOutputStreamWriter(final String encoding) throws IOException {\r\n\t\t\tFileOutputStream os = getFileOutputStream();\r\n\t\t\tOutputStreamWriter osw;\r\n\t\t\tif (encoding != null) {\r\n\t\t\t\tosw = new OutputStreamWriter(os, encoding);\r\n\t\t\t} else {\r\n\t\t\t\tosw = new OutputStreamWriter(os);\r\n\t\t\t}\r\n\t\t\tcloseable = osw;\r\n\t\t\treturn osw;\r\n\t\t}\r\n\r\n\t\tpublic FileOutputStream getFileOutputStream() throws IOException {\r\n\t\t\tunlock();\r\n\t\t\tFileOutputStream os = new FileOutputStream(file);\r\n\t\t\tcloseable = os;\r\n\t\t\tchannel = os.getChannel();\r\n\t\t\ttry {\r\n\t\t\t\tlock = channel.lock(); //Write Lock\r\n\t\t\t} catch (IOException ex) {\r\n\t\t\t\t//Ignore operation not supported (the file will not be locked)\r\n\t\t\t\tif (!ex.getMessage().equalsIgnoreCase(\"Operation not supported\")) {\r\n\t\t\t\t\tthrow ex;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn os;\r\n\t\t}\r\n\r\n\t\tpublic FileInputStream getFileInputStream() throws IOException {\r\n\t\t\tunlock();\r\n\t\t\tFileInputStream is = new FileInputStream(file);\r\n\t\t\tcloseable = is;\r\n\t\t\tchannel = is.getChannel();\r\n\t\t\ttry {\r\n\t\t\t\tlock = channel.lock(0, Long.MAX_VALUE, true); //Read Lock\r\n\t\t\t} catch (IOException ex) {\r\n\t\t\t\t//Ignore operation not supported (the file will not be locked)\r\n\t\t\t\tif (!ex.getMessage().equalsIgnoreCase(\"Operation not supported\")) {\r\n\t\t\t\t\tthrow ex;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn is;\r\n\t\t}\r\n\r\n\t\tpublic final void unlock() throws IOException {\r\n\t\t\tif (lock != null && lock.isValid()) {\r\n\t\t\t\tlock.release();\r\n\t\t\t}\r\n\t\t\tif (closeable != null) {\r\n\t\t\t\tcloseable.close();\r\n\t\t\t}\r\n\t\t\tif (channel != null) {\r\n\t\t\t\tchannel.close();\r\n\t\t\t}\r\n\t\t\tOS_LOCKS.remove(this);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic final void close() throws IOException {\r\n\t\t\tunlock();\r\n\t\t\tif (!skipInternalLock) {\r\n\t\t\t\tFileLock.unlock(file); //Release internally - must be last\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/FlagsReader.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.io.local;\n\nimport java.util.Map;\nimport net.nikr.eve.jeveasset.data.sde.ItemFlag;\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\nimport org.w3c.dom.Element;\nimport org.w3c.dom.Node;\nimport org.w3c.dom.NodeList;\n\n\npublic final class FlagsReader extends AbstractXmlReader<Boolean> {\n\n\tprivate final Map<Integer, ItemFlag> flags;\n\n\tpublic FlagsReader(Map<Integer, ItemFlag> flags) {\n\t\tthis.flags = flags;\n\t}\n\n\tpublic static boolean load(Map<Integer, ItemFlag> flags) {\n\t\tFlagsReader reader = new FlagsReader(flags);\n\t\treturn reader.read(\"Flags\", FileUtil.getPathFlags(), AbstractXmlReader.XmlType.STATIC);\n\t}\n\n\t@Override\n\tprotected Boolean parse(Element element) throws XmlException {\n\t\tparseFlags(element);\n\t\treturn true;\n\t}\n\n\t@Override\n\tprotected Boolean failValue() {\n\t\treturn false;\n\t}\n\n\t@Override\n\tprotected Boolean doNotExistValue() {\n\t\treturn false;\n\t}\n\n\tprivate void parseFlags(final Element element) throws XmlException {\n\t\tNodeList nodes = element.getElementsByTagName(\"row\");\n\t\tItemFlag itemFlag;\n\t\tfor (int i = 0; i < nodes.getLength(); i++) {\n\t\t\tElement itemElement = (Element) nodes.item(i);\n\t\t\titemFlag = parseFlag(itemElement);\n\t\t\tflags.put(itemFlag.getFlagID(), itemFlag);\n\t\t}\n\t}\n\n\tprivate ItemFlag parseFlag(final Node node) throws XmlException {\n\t\tint flagID = getInt(node, \"flagid\");\n\t\tString flagName = getString(node, \"flagname\");\n\t\tString flagText = getString(node, \"flagtext\");\n\t\treturn new ItemFlag(flagID, flagName, flagText);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/HtmlWriter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.io.local;\r\n\r\nimport java.io.BufferedWriter;\r\nimport java.io.FileOutputStream;\r\nimport java.io.IOException;\r\nimport java.io.OutputStreamWriter;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.settings.types.ItemType;\r\nimport net.nikr.eve.jeveasset.data.settings.types.LocationType;\r\nimport net.nikr.eve.jeveasset.data.settings.types.LocationsType;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.HierarchyColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.NumberValue;\r\nimport net.nikr.eve.jeveasset.gui.tabs.tree.TreeAsset;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic final class HtmlWriter {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(HtmlWriter.class);\r\n\r\n\tprivate HtmlWriter() { }\r\n\r\n\tpublic static boolean save(final String filename, final List<Map<EnumTableColumn<?>, String>> data, final List<EnumTableColumn<?>> header, final List<Object> items, final boolean htmlStyled, final int htmlRepeatHeader, final boolean treetable) {\r\n\t\tHtmlWriter writer = new HtmlWriter();\r\n\t\treturn writer.write(filename, data, header, items, htmlStyled, htmlRepeatHeader, treetable);\r\n\t}\r\n\r\n\tprivate boolean write(final String filename, final List<Map<EnumTableColumn<?>, String>> data, final List<EnumTableColumn<?>> header, final List<Object> items, final boolean htmlStyled, final int htmlRepeatHeader, final boolean treetable) {\r\n\t\ttry (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename), \"UTF-8\"))) {\r\n\t\t\tif (htmlStyled) {\r\n\t\t\t\twriteHeader(writer);\r\n\t\t\t} else {\r\n\t\t\t\twriteComment(writer);\r\n\t\t\t}\r\n\t\t\twriter.write(\"<table>\\r\\n\");\r\n\t\t\twriteTableHeader(writer, header, items != null);\r\n\t\t\twriteTableRows(writer, data, header, items, htmlStyled, htmlRepeatHeader, treetable);\r\n\t\t\twriter.write(\"</table>\\r\\n\");\r\n\t\t\tif (htmlStyled) {\r\n\t\t\t\twriteFooter(writer);\r\n\t\t\t}\r\n\t\t} catch (IOException ex) {\r\n\t\t\tLOG.warn(\"Html file not saved\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tLOG.info(\"Html file saved\");\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate void writeHeader(final BufferedWriter writer) throws IOException {\r\n\t\twriter.write(\"<!DOCTYPE html>\\r\\n\");\r\n\t\twriter.write(\"<html>\\r\\n\");\r\n\t\twriter.write(\"<header>\\r\\n\");\r\n\t\twriteComment(writer);\r\n\t\twriter.write(\"<style type=\\\"text/css\\\">\\r\\n\");\r\n\t\twriter.write(\r\n\t\t\t\t\t//Table\r\n\t\t\t\t\t\"\ttable {\\r\\n\" +\r\n\t\t\t\t\t\"\t\tborder: solid #ccc;\\r\\n\" +\r\n\t\t\t\t\t\"\t\tborder-width: 1px 0px 1px 1px;\\r\\n\" +\r\n\t\t\t\t\t\"\t\tborder-spacing: 0;\\r\\n\" +\r\n\t\t\t\t\t\"\t\tfont-family: Arial, Helvetica, sans-serif;\\n\" +\r\n\t\t\t\t\t\"\t\tfont-size: 13px;\\r\\n\" +\r\n\t\t\t\t\t\"\t}\\r\\n\" +\r\n\t\t\t\t\t//Cells\r\n\t\t\t\t\t\"\ttable td, table th {\\r\\n\" +\r\n\t\t\t\t\t\"\t\tborder: solid #ccc;\\r\\n\" +\r\n\t\t\t\t\t\"\t\tborder-width: 0px 1px 0px 0px;\\r\\n\" +\r\n\t\t\t\t\t\"\t\tmargin: 0;\\r\\n\" +\r\n\t\t\t\t\t\"\t\tpadding: 2px 3px 2px 3px;\\r\\n\" +\r\n\t\t\t\t\t\"\t\twhite-space: nowrap;\\r\\n\" +\r\n\t\t\t\t\t\"\t}\\r\\n\" +\r\n\t\t\t\t\t//Header\r\n\t\t\t\t\t\"\ttable th {\\r\\n\" +\r\n\t\t\t\t\t\"\t\tbackground-color: #ddd;\\r\\n\" +\r\n\t\t\t\t\t\"\t\tfont-size: 15px;\\r\\n\" +\r\n\t\t\t\t\t\"\t}\\r\\n\" +\r\n\t\t\t\t\t//Even rows (dark)\r\n\t\t\t\t\t\"\t.even {\\r\\n\" +\r\n\t\t\t\t\t\"\t\tbackground-color: #f3f3f3;\\r\\n\" +\r\n\t\t\t\t\t\"\t}\\r\\n\" +\r\n\t\t\t\t\t//TreeTable\r\n\t\t\t\t\t\"\t.level0 {\\r\\n\" +\r\n\t\t\t\t\t\"\t\tbackground-color: #888888;\\r\\n\" +\r\n\t\t\t\t\t\"\t}\\r\\n\" +\r\n\t\t\t\t\t\"\t.level1 {\\r\\n\" +\r\n\t\t\t\t\t\"\t\tbackground-color: #9E9E9E;\\r\\n\" +\r\n\t\t\t\t\t\"\t}\\r\\n\" +\r\n\t\t\t\t\t\"\t.level2 {\\r\\n\" +\r\n\t\t\t\t\t\"\t\tbackground-color: #B4B4B4;\\r\\n\" +\r\n\t\t\t\t\t\"\t}\\r\\n\" +\r\n\t\t\t\t\t\"\t.level3 {\\r\\n\" +\r\n\t\t\t\t\t\"\t\tbackground-color: #cccccc;\\r\\n\" +\r\n\t\t\t\t\t\"\t}\\r\\n\" +\r\n\t\t\t\t\t\"\t.number {\\r\\n\" +\r\n\t\t\t\t\t\"\t\ttext-align: right;\\r\\n\" +\r\n\t\t\t\t\t\"\t}\\r\\n\" +\r\n\t\t\t\t\t//IGB Links\r\n\t\t\t\t\t\"\tbutton {\\r\\n\" +\r\n\t\t\t\t\t\"\t\tfont-family: \\\"Courier New\\\", Courier, monospace;\\r\\n\" +\r\n\t\t\t\t\t\"\t\tfont-size: 11px;\\r\\n\" +\r\n\t\t\t\t\t\"\t\tpadding: 0px 3px 0px 3px;\\r\\n\" +\r\n\t\t\t\t\t\"\t\tmargin: 0px;\\r\\n\" +\r\n\t\t\t\t\t\"\t}\\r\\n\"\r\n\t\t\t\t\t);\r\n\t\twriter.write(\"</style>\\r\\n\");\r\n\t\twriter.write(\"</header>\\r\\n\");\r\n\t\twriter.write(\"<body>\\r\\n\");\r\n\t}\r\n\r\n\tprivate void writeFooter(final BufferedWriter writer) throws IOException {\r\n\t\twriter.write(\"</body>\\r\\n\");\r\n\t\twriter.write(\"</html>\\r\\n\");\r\n\t}\r\n\r\n\tprivate void writeComment(final BufferedWriter writer) throws IOException {\r\n\t\twriter.write(\"<!-- \" + Program.PROGRAM_NAME + \" Html Export -->\\r\\n\");\r\n\t\twriter.write(\"<!-- version \" + Program.PROGRAM_VERSION + \" -->\\r\\n\");\r\n\t\twriter.write(\"<!-- \" + Program.PROGRAM_HOMEPAGE + \" -->\\r\\n\");\r\n\t}\r\n\r\n\tprivate void writeTableHeader(final BufferedWriter writer, List<EnumTableColumn<?>> header, boolean igb) throws IOException {\r\n\t\twriter.write(\"<tr>\\r\\n\");\r\n\t\tfor (EnumTableColumn<?> column : header) {\r\n\t\t\twriter.write(\"\\t<th>\");\r\n\t\t\twriter.write(column.getColumnName());\r\n\t\t\twriter.write(\"</th>\\r\\n\");\r\n\t\t}\r\n\t\tif (igb) {\r\n\t\t\twriter.write(\"\\t<th>\");\r\n\t\t\twriter.write(\"Links\");\r\n\t\t\twriter.write(\"</th>\\r\\n\");\r\n\t\t}\r\n\t\twriter.write(\"</tr>\\r\\n\");\r\n\t}\r\n\r\n\tprivate void writeTableRows(final BufferedWriter writer, final List<Map<EnumTableColumn<?>, String>> data, final List<EnumTableColumn<?>> header, final List<Object> items, final boolean htmlStyled, final int htmlRepeatHeader, final boolean treetable) throws IOException {\r\n\t\tboolean even = false;\r\n\t\tboolean wait = true;\r\n\t\tint count = 0;\r\n\t\tint index = 0;\r\n\t\tfor (Map<EnumTableColumn<?>, String> map : data) {\r\n\t\t\tboolean level0 = false;\r\n\t\t\tboolean level1 = false;\r\n\t\t\tboolean level2 = false;\r\n\t\t\tboolean level3 = false;\r\n\t\t\tif (treetable && htmlStyled) {\r\n\t\t\t\tfor (EnumTableColumn<?> column : header) {\r\n\t\t\t\t\tif (HierarchyColumn.class.isAssignableFrom(column.getType())) {\r\n\t\t\t\t\t\tif (map.get(column).contains(TreeAsset.SPACE + TreeAsset.SPACE + TreeAsset.SPACE + \"+\") && treetable) { //Level 2\r\n\t\t\t\t\t\t\tlevel3 = true;\r\n\t\t\t\t\t\t} else if (map.get(column).startsWith(TreeAsset.SPACE + TreeAsset.SPACE + \"+\") && treetable) { //Level 2\r\n\t\t\t\t\t\t\tlevel2 = true;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t} else if (map.get(column).startsWith(TreeAsset.SPACE + \"+\") && treetable) { //Level 1\r\n\t\t\t\t\t\t\tlevel1 = true;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t} else if (map.get(column).startsWith(\"+\") && treetable) { //Level 0\r\n\t\t\t\t\t\t\tlevel0 = true;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (level0 || level1 || level2 || level3) { //Parent\r\n\t\t\t\tif (!wait) {\r\n\t\t\t\t\twriteTableHeader(writer, header, items != null);\r\n\t\t\t\t\twait = true;\r\n\t\t\t\t\tcount = 0;\r\n\t\t\t\t}\r\n\t\t\t} else if (htmlRepeatHeader != 0 && htmlRepeatHeader == count && !wait) { //Repeat\r\n\t\t\t\twriteTableHeader(writer, header, items != null);\r\n\t\t\t\tcount = 0;\r\n\t\t\t} else { //item row\r\n\t\t\t\twait = false;\r\n\t\t\t}\r\n\t\t\tif (level0 && htmlStyled) {\r\n\t\t\t\twriter.write(\"\\t<tr class=\\\"level0\\\">\");\r\n\t\t\t} else if (level1 && htmlStyled) {\r\n\t\t\t\twriter.write(\"\\t<tr class=\\\"level1\\\">\");\r\n\t\t\t} else if (level2 && htmlStyled) {\r\n\t\t\t\twriter.write(\"\\t<tr class=\\\"level2\\\">\");\r\n\t\t\t} else if (level3 && htmlStyled) {\r\n\t\t\t\twriter.write(\"\\t<tr class=\\\"level3\\\">\");\r\n\t\t\t} else if (even && htmlStyled) {\r\n\t\t\t\twriter.write(\"\\t<tr class=\\\"even\\\">\");\r\n\t\t\t} else {\r\n\t\t\t\twriter.write(\"\\t<tr>\");\r\n\t\t\t}\r\n\t\t\tfor (EnumTableColumn<?> column : header) {\r\n\t\t\t\tif ((Number.class.isAssignableFrom(column.getType())\r\n\t\t\t\t || NumberValue.class.isAssignableFrom(column.getType()))) {\r\n\t\t\t\t\twriter.write(\"\\t<td class=\\\"number\\\">\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\twriter.write(\"\\t<td>\");\r\n\t\t\t\t}\r\n\t\t\t\twriter.write(map.get(column).replace(\" \", \"&nbsp;\").replace(\"+\", \"\").replace(\"_\", \" \")); //.replace(\"-\", \"&#8209;\")\r\n\t\t\t\twriter.write(\"</td>\\r\\n\");\r\n\t\t\t}\r\n\t\t\tif (items != null) {\r\n\t\t\t\twriter.write(\"\\t<td>\\r\\n\");\r\n\t\t\t\tObject object = items.get(index);\r\n\t\t\t\tif (object instanceof LocationType) {\r\n\t\t\t\t\tLocationType locationType = (LocationType) object;\r\n\t\t\t\t\tMyLocation location = locationType.getLocation();\r\n\t\t\t\t\tif (location != null && !location.isEmpty()) {\r\n\t\t\t\t\t\t//Region\r\n\t\t\t\t\t\twriter.write(\"\\t\\tRegion:\\r\\n\");\r\n\t\t\t\t\t\twriter.write(\"\\t\\t<button type=\\\"button\\\" title=\\\"Show Info\\\" onclick=\\\"CCPEVE.showInfo(3, '\" + location.getRegionID() + \"');\\\">i</button>\\r\\n\");\r\n\t\t\t\t\t\tif (!location.isRegion()) { //System\r\n\t\t\t\t\t\t\twriter.write(\"\\t\\tSystem:\\r\\n\");\r\n\t\t\t\t\t\t\twriter.write(\"\\t\\t<button type=\\\"button\\\" title=\\\"Show Info\\\" onclick=\\\"CCPEVE.showInfo(5, '\" + location.getSystemID() + \"');\\\">i</button>\\r\\n\");\r\n\t\t\t\t\t\t\twriter.write(\"\\t\\t<button type=\\\"button\\\" title=\\\"Show Map\\\" onclick=\\\"CCPEVE.showMap('\" + location.getSystemID() + \"');\\\">M</button>\\r\\n\");\r\n\t\t\t\t\t\t\twriter.write(\"\\t\\t<button type=\\\"button\\\" title=\\\"Show Route\\\" onclick=\\\"CCPEVE.showRouteTo('\" + location.getSystemID() + \"');\\\">R</button>\\r\\n\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (location.isStation()) {\r\n\t\t\t\t\t\t\twriter.write(\"\\t\\tStation:\\r\\n\");\r\n\t\t\t\t\t\t\twriter.write(\"\\t\\t<button type=\\\"button\\\" title=\\\"Show Info\\\" onclick=\\\"CCPEVE.showInfo(3867, '\" + location.getStationID()+ \"');\\\">i</button>\\r\\n\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (object instanceof LocationsType) {\r\n\t\t\t\t\tLocationsType locationType = (LocationsType) object;\r\n\t\t\t\t\tSet<MyLocation> locations = locationType.getLocations();\r\n\t\t\t\t\tfor (MyLocation location : locations) {\r\n\t\t\t\t\t\tif (location != null && !location.isEmpty()) {\r\n\t\t\t\t\t\t\t//Region\r\n\t\t\t\t\t\t\twriter.write(\"\\t\\tRegion:\\r\\n\");\r\n\t\t\t\t\t\t\twriter.write(\"\\t\\t<button type=\\\"button\\\" title=\\\"Show Info\\\" onclick=\\\"CCPEVE.showInfo(3, '\" + location.getRegionID() + \"');\\\">i</button>\\r\\n\");\r\n\t\t\t\t\t\t\tif (!location.isRegion()) { //System\r\n\t\t\t\t\t\t\t\twriter.write(\"\\t\\tSystem:\\r\\n\");\r\n\t\t\t\t\t\t\t\twriter.write(\"\\t\\t<button type=\\\"button\\\" title=\\\"Show Info\\\" onclick=\\\"CCPEVE.showInfo(5, '\" + location.getSystemID() + \"');\\\">i</button>\\r\\n\");\r\n\t\t\t\t\t\t\t\twriter.write(\"\\t\\t<button type=\\\"button\\\" title=\\\"Show Map\\\" onclick=\\\"CCPEVE.showMap('\" + location.getSystemID() + \"');\\\">M</button>\\r\\n\");\r\n\t\t\t\t\t\t\t\twriter.write(\"\\t\\t<button type=\\\"button\\\" title=\\\"Show Route\\\" onclick=\\\"CCPEVE.showRouteTo('\" + location.getSystemID() + \"');\\\">R</button>\\r\\n\");\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (location.isStation()) {\r\n\t\t\t\t\t\t\t\twriter.write(\"\\t\\tStation:\\r\\n\");\r\n\t\t\t\t\t\t\t\twriter.write(\"\\t\\t<button type=\\\"button\\\" title=\\\"Show Info\\\" onclick=\\\"CCPEVE.showInfo(3867, '\" + location.getStationID()+ \"');\\\">i</button>\\r\\n\");\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (object instanceof MyAsset) {\r\n\t\t\t\t\tMyAsset asset = (MyAsset) object;\r\n\t\t\t\t\tItem item = asset.getItem();\r\n\t\t\t\t\tif (item != null && !item.isEmpty()) {\r\n\t\t\t\t\t\twriter.write(\"\\t\\tItem:\\r\\n\");\r\n\t\t\t\t\t\twriter.write(\"\\t\\t<button type=\\\"button\\\" title=\\\"Show Info\\\" onclick=\\\"CCPEVE.showInfo('\" + item.getTypeID() + \"', '\" + asset.getItemID() + \"');\\\">i</button>\\r\\n\");\r\n\t\t\t\t\t\tif (item.isMarketGroup()) {\r\n\t\t\t\t\t\t\twriter.write(\"\\t\\t<button type=\\\"button\\\" title=\\\"Show Market Details\\\" onclick=\\\"CCPEVE.showMarketDetails('\" + item.getTypeID() + \"');\\\">$</button>\\r\\n\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (object instanceof ItemType) {\r\n\t\t\t\t\tItemType itemType = (ItemType) object;\r\n\t\t\t\t\tItem item = itemType.getItem();\r\n\t\t\t\t\tif (item != null && !item.isEmpty()) {\r\n\t\t\t\t\t\twriter.write(\"\\t\\tItem:\\r\\n\");\r\n\t\t\t\t\t\twriter.write(\"\\t\\t<button type=\\\"button\\\" title=\\\"Show Info\\\" onclick=\\\"CCPEVE.showInfo(\" + item.getTypeID() + \");\\\">i</button>\\r\\n\");\r\n\t\t\t\t\t\tif (item.isMarketGroup()) {\r\n\t\t\t\t\t\t\twriter.write(\"\\t\\t<button type=\\\"button\\\" title=\\\"Show Market Details\\\" onclick=\\\"CCPEVE.showMarketDetails(\" + item.getTypeID() + \");\\\">$</button>\\r\\n\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\twriter.write(\"\\t</td>\\r\\n\");\r\n\t\t\t}\r\n\t\t\twriter.write(\"</tr>\\r\\n\");\r\n\t\t\teven = !even;\r\n\t\t\tif (!level0 && !level1 && !level2 && !level3) {\r\n\t\t\t\tcount++;\r\n\t\t\t}\r\n\t\t\tindex++;\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/ItemsReader.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.io.local;\n\nimport java.util.HashMap;\nimport java.util.Map;\nimport net.nikr.eve.jeveasset.data.sde.IndustryMaterial;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.data.sde.ReprocessedMaterial;\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\nimport org.w3c.dom.Element;\nimport org.w3c.dom.Node;\nimport org.w3c.dom.NodeList;\n\n\npublic final class ItemsReader extends AbstractXmlReader<Boolean> {\n\n\tprivate final Map<Integer, Item> items;\n\n\tpublic ItemsReader(Map<Integer, Item> items) {\n\t\tthis.items = items;\n\t}\n\n\tpublic static void load(Map<Integer, Item> items) {\n\t\tItemsReader reader = new ItemsReader(items);\n\t\treader.read(\"Items Updates\", FileUtil.getPathItemsUpdates(), AbstractXmlReader.XmlType.DYNAMIC_BACKUP);\n\t\treader.read(\"Items\", FileUtil.getPathItems(), AbstractXmlReader.XmlType.STATIC);\n\t}\n\n\t@Override\n\tprotected Boolean parse(Element element) throws XmlException {\n\t\tparseItems(element);\n\t\treturn true;\n\t}\n\n\t@Override\n\tprotected Boolean failValue() {\n\t\treturn false;\n\t}\n\n\t@Override\n\tprotected Boolean doNotExistValue() {\n\t\treturn false;\n\t}\n\n\tprivate void parseItems(final Element element) throws XmlException {\n\t\tNodeList nodes = element.getElementsByTagName(\"row\");\n\t\tMap<Integer, Integer> blueprints = new HashMap<>();\n\t\tfor (int i = 0; i < nodes.getLength(); i++) {\n\t\t\tElement itemElement = (Element) nodes.item(i);\n\t\t\tItem item = parseItem(itemElement);\n\t\t\tparseMaterials(itemElement, item);\n\t\t\tparseManufacturing(itemElement, item);\n\t\t\tparseReaction(itemElement, item);\n\t\t\titems.put(item.getTypeID(), item);\n\t\t\tif (item.isBlueprint()) {\n\t\t\t\tblueprints.put(item.getTypeID(), item.getProductTypeID());\n\t\t\t}\n\t\t}\n\t\tfor (Map.Entry<Integer, Integer> entry : blueprints.entrySet()) {\n\t\t\tItem item = items.get(entry.getValue());\n\t\t\tif (item != null) {\n\t\t\t\titem.addBlueprintID(entry.getKey());\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate Item parseItem(final Node node) throws XmlException {\n\t\tint id = getInt(node, \"id\");\n\t\tString version = getStringOptional(node, \"version\");\n\t\tif (haveAttribute(node, \"empty\")) {\n\t\t\treturn new Item(id, version);\n\t\t}\n\t\tString name = getString(node, \"name\");\n\t\tString group = getString(node, \"group\");\n\t\tString category = getString(node, \"category\");\n\t\tlong basePrice = getLong(node, \"price\");\n\t\tfloat volume = getFloat(node, \"volume\");\n\t\tfloat packagedVolume = getFloatNotNull(node, \"packagedvolume\", volume);\n\t\tfloat capacity = getFloatNotNull(node, \"capacity\", 0f);\n\t\tint meta = getInt(node, \"meta\");\n\t\tString tech = getString(node, \"tech\");\n\t\tboolean marketGroup = getBoolean(node, \"marketgroup\");\n\t\tint portion = getInt(node, \"portion\");\n\t\tint product = getIntNotNull(node, \"product\", 0);\n\t\tint productQuantity = getIntNotNull(node, \"productquantity\", 1);\n\t\tString slot = getStringOptional(node, \"slot\");\n\t\tString chargeSize = getChargeSize(getIntOptional(node, \"charges\"));\n\t\treturn new Item(id, name, group, category, basePrice, volume, packagedVolume, capacity, meta, tech, marketGroup, portion, product, productQuantity, slot, chargeSize, version);\n\t}\n\n\tprivate void parseMaterials(final Element element, final Item item) throws XmlException {\n\t\tNodeList nodes = element.getElementsByTagName(\"material\");\n\t\tfor (int i = 0; i < nodes.getLength(); i++) {\n\t\t\tparseMaterial(nodes.item(i), item);\n\t\t}\n\t}\n\n\tprivate void parseMaterial(final Node node, final Item item) throws XmlException {\n\t\tint id = getInt(node, \"id\");\n\t\tint quantity = getInt(node, \"quantity\");\n\t\tint portionSize = getInt(node, \"portionsize\");\n\t\titem.addReprocessedMaterial(new ReprocessedMaterial(id, quantity, portionSize));\n\t}\n\n\tprivate void parseManufacturing(final Element element, final Item item) throws XmlException {\n\t\tNodeList nodes = element.getElementsByTagName(\"mfg\");\n\t\tfor (int i = 0; i < nodes.getLength(); i++) {\n\t\t\tIndustryMaterial material = parseIndustryMaterial(nodes.item(i));\n\t\t\titem.addManufacturingMaterial(material);\n\t\t}\n\t}\n\n\tprivate void parseReaction(final Element element, final Item item) throws XmlException {\n\t\tNodeList nodes = element.getElementsByTagName(\"rxn\");\n\t\tfor (int i = 0; i < nodes.getLength(); i++) {\n\t\t\tIndustryMaterial material = parseIndustryMaterial(nodes.item(i));\n\t\t\titem.addReactionMaterial(material);\n\t\t}\n\t}\n\n\tprivate IndustryMaterial parseIndustryMaterial(final Node node) throws XmlException {\n\t\tint typeID = getInt(node, \"id\");\n\t\tint quantity = getInt(node, \"q\");\n\t\treturn new IndustryMaterial(typeID, quantity);\n\t}\n\n\tpublic static String getChargeSize(Integer chargeSize) {\n\t\tif (chargeSize == null) {\n\t\t\treturn null;\n\t\t}\n\t\tswitch (chargeSize) {\n\t\t\tcase 1:\n\t\t\t\treturn \"Small\";\n\t\t\tcase 2:\n\t\t\t\treturn \"Medium\";\n\t\t\tcase 3:\n\t\t\t\treturn \"Large\";\n\t\t\tcase 4:\n\t\t\t\treturn \"Extra Large\";\n\t\t\tdefault:\n\t\t\t\treturn \"Unknown (\" + chargeSize + \")\";\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/ItemsWriter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local;\r\n\r\nimport java.util.Collection;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\r\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\nimport org.w3c.dom.Document;\r\nimport org.w3c.dom.Element;\r\n\r\n\r\npublic class ItemsWriter extends AbstractXmlWriter {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(ItemsWriter.class);\r\n\r\n\tpublic static boolean save() {\r\n\t\tItemsWriter writer = new ItemsWriter();\r\n\t\treturn writer.write(StaticData.get().getItems().values(), FileUtil.getPathItemsUpdates());\r\n\t}\r\n\r\n\tprivate boolean write(final Collection<Item> items, final String filename) {\r\n\t\tDocument xmldoc;\r\n\t\ttry {\r\n\t\t\txmldoc = getXmlDocument(\"rows\");\r\n\t\t} catch (XmlException ex) {\r\n\t\t\tLOG.error(\"Items updates not saved \" + ex.getMessage(), ex);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\twriteItems(xmldoc, items);\r\n\t\ttry {\r\n\t\t\twriteXmlFile(xmldoc, filename, true);\r\n\t\t} catch (XmlException ex) {\r\n\t\t\tLOG.error(\"Items updates not saved \" + ex.getMessage(), ex);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tLOG.info(\"Items updates saved\");\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate void writeItems(final Document xmldoc, final Collection<Item> items) {\r\n\t\tfor (Item item : items) {\r\n\t\t\tif (item.getVersion() == null) { //From static data\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tElement node = xmldoc.createElement(\"row\");\r\n\t\t\tsetAttribute(node, \"id\", item.getTypeID());\r\n\t\t\tsetAttribute(node, \"version\", item.getVersion());\r\n\t\t\tif (item.isEmpty()) {\r\n\t\t\t\tsetAttribute(node, \"empty\", String.valueOf(true));\r\n\t\t\t} else {\r\n\t\t\t\tsetAttribute(node, \"name\", item.getTypeName());\r\n\t\t\t\tsetAttribute(node, \"group\", item.getGroup());\r\n\t\t\t\tsetAttribute(node, \"category\", item.getCategory());\r\n\t\t\t\tsetAttribute(node, \"price\", (long) item.getPriceBase());\r\n\t\t\t\tsetAttribute(node, \"volume\", item.getVolume());\r\n\t\t\t\tif (item.getVolumePackaged() > 0) {\r\n\t\t\t\t\tsetAttribute(node, \"packagedvolume\", item.getVolumePackaged());\r\n\t\t\t\t}\r\n\t\t\t\tif (item.getCapacity() > 0) {\r\n\t\t\t\t\tsetAttribute(node, \"capacity\", item.getCapacity());\r\n\t\t\t\t}\r\n\t\t\t\tsetAttribute(node, \"meta\", item.getMeta());\r\n\t\t\t\tsetAttribute(node, \"tech\", item.getTech());\r\n\t\t\t\tsetAttribute(node, \"marketgroup\", item.isMarketGroup());\r\n\t\t\t\tsetAttribute(node, \"portion\", item.getPortion());\r\n\t\t\t\tsetAttribute(node, \"product\", item.getProductTypeID());\r\n\t\t\t\tsetAttribute(node, \"productquantity\", item.getProductQuantity());\r\n\t\t\t}\r\n\t\t\txmldoc.getDocumentElement().appendChild(node);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/JumpsReader.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.io.local;\n\nimport java.util.List;\nimport net.nikr.eve.jeveasset.data.sde.Jump;\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\nimport org.w3c.dom.Element;\nimport org.w3c.dom.Node;\nimport org.w3c.dom.NodeList;\n\n\npublic final class JumpsReader extends AbstractXmlReader<Boolean> {\n\n\tprivate final List<Jump> jumps;\n\n\tpublic JumpsReader(List<Jump> jumps) {\n\t\tthis.jumps = jumps;\n\t}\n\n\tpublic static void load(List<Jump> jumps) {\n\t\tJumpsReader reader = new JumpsReader(jumps);\n\t\treader.read(\"Jumps\", FileUtil.getPathJumps(), AbstractXmlReader.XmlType.STATIC);\n\t}\n\n\t@Override\n\tprotected Boolean parse(Element element) throws XmlException {\n\t\tparseJumps(element);\n\t\treturn true;\n\t}\n\n\t@Override\n\tprotected Boolean failValue() {\n\t\treturn false;\n\t}\n\n\t@Override\n\tprotected Boolean doNotExistValue() {\n\t\treturn false;\n\t}\n\n\tprivate void parseJumps(final Element element) throws XmlException {\n\t\tNodeList nodes = element.getElementsByTagName(\"row\");\n\t\tJump jump;\n\t\tfor (int i = 0; i < nodes.getLength(); i++) {\n\t\t\tjump = parseEdge(nodes.item(i));\n\t\t\tjumps.add(jump);\n\t\t}\n\t}\n\n\tprivate Jump parseEdge(final Node node) throws XmlException {\n\t\tlong from = getLong(node, \"from\");\n\t\tlong to = getLong(node, \"to\");\n\t\tJump j = new Jump(StaticData.get().getLocation(from), StaticData.get().getLocation(to));\n\t\treturn j;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/LocationsReader.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.io.local;\n\nimport java.util.Map;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\nimport org.w3c.dom.Element;\nimport org.w3c.dom.Node;\nimport org.w3c.dom.NodeList;\n\n\npublic final class LocationsReader extends AbstractXmlReader<Boolean> {\n\n\tprivate final Map<Long, MyLocation> locations;\n\n\tpublic LocationsReader(Map<Long, MyLocation> locations) {\n\t\tthis.locations = locations;\n\t}\n\n\tpublic static void load(Map<Long, MyLocation> locations) {\n\t\tLocationsReader reader = new LocationsReader(locations);\n\t\treader.read(\"Locations\", FileUtil.getPathLocations(), AbstractXmlReader.XmlType.STATIC);\n\t}\n\n\t@Override\n\tprotected Boolean parse(Element element) throws XmlException {\n\t\tparseLocations(element);\n\t\treturn true;\n\t}\n\n\t@Override\n\tprotected Boolean failValue() {\n\t\treturn false;\n\t}\n\n\t@Override\n\tprotected Boolean doNotExistValue() {\n\t\treturn false;\n\t}\n\n\tprivate void parseLocations(final Element element) throws XmlException {\n\t\tNodeList nodes = element.getElementsByTagName(\"row\");\n\t\tMyLocation location;\n\t\tfor (int i = 0; i < nodes.getLength(); i++) {\n\t\t\tlocation = parseLocation(nodes.item(i));\n\t\t\tlocations.put(location.getLocationID(), location);\n\t\t}\n\t}\n\n\tprivate MyLocation parseLocation(final Node node) throws XmlException {\n\t\tlong stationID = getLong(node, \"si\");\n\t\tString station = getString(node, \"s\");\n\t\tlong systemID = getLong(node, \"syi\");\n\t\tString system = getString(node, \"sy\");\n\t\tlong constellationID = getLongNotNull(node, \"ci\", 0);\n\t\tString constellation = getStringNotNull(node, \"c\", \"\");\n\t\tlong regionID = getLong(node, \"ri\");\n\t\tString region = getString(node, \"r\");\n\t\tString security = getString(node, \"se\");\n\t\treturn MyLocation.create(stationID, station, systemID, system, constellationID, constellation, regionID, region, security, false, false);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/MarketLogReader.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local;\r\n\r\nimport java.io.File;\r\nimport java.io.FileReader;\r\nimport java.io.IOException;\r\nimport java.io.Reader;\r\nimport java.text.ParseException;\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport javax.swing.filechooser.FileSystemView;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawPublicMarketOrder;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter.DateFormatThreadSafe;\r\nimport net.nikr.eve.jeveasset.gui.tabs.orders.MarketLog;\r\nimport net.nikr.eve.jeveasset.gui.tabs.orders.OutbidProcesser;\r\nimport net.nikr.eve.jeveasset.gui.tabs.orders.OutbidProcesser.OutbidProcesserInput;\r\nimport net.nikr.eve.jeveasset.gui.tabs.orders.OutbidProcesser.OutbidProcesserOutput;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\nimport org.supercsv.cellprocessor.CellProcessorAdaptor;\r\nimport org.supercsv.cellprocessor.Optional;\r\nimport org.supercsv.cellprocessor.ParseBool;\r\nimport org.supercsv.cellprocessor.ParseDouble;\r\nimport org.supercsv.cellprocessor.ParseInt;\r\nimport org.supercsv.cellprocessor.ParseLong;\r\nimport org.supercsv.cellprocessor.ift.CellProcessor;\r\nimport org.supercsv.cellprocessor.ift.StringCellProcessor;\r\nimport org.supercsv.exception.SuperCsvCellProcessorException;\r\nimport org.supercsv.io.CsvBeanReader;\r\nimport org.supercsv.io.ICsvBeanReader;\r\nimport org.supercsv.prefs.CsvPreference;\r\nimport org.supercsv.util.CsvContext;\r\n\r\npublic class MarketLogReader {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(MarketLogReader.class);\r\n\r\n\tprivate static final int RETRIES = 3;\r\n\tprivate static final DateFormatThreadSafe FILE_DATE_FORMAT = new DateFormatThreadSafe(\"yyyy.MM.dd hhmmss\", true);\r\n\tprivate static final DateFormatThreadSafe DATE_FORMAT = new DateFormatThreadSafe(\"yyyy-MM-dd HH:mm:ss,SSS\");\r\n\r\n\tprivate final OutbidProcesserInput input;\r\n\r\n\tpublic MarketLogReader(OutbidProcesserInput input) {\r\n\t\tthis.input = input;\r\n\t}\r\n\r\n\tpublic static List<MarketLog> read(File file, OutbidProcesserInput input, OutbidProcesserOutput output) {\r\n\t\tMarketLogReader reader = new MarketLogReader(input);\r\n\t\tList<MarketLog> orders = reader.read(file);\r\n\t\tOutbidProcesser.process(input, output);\r\n\t\treturn orders;\r\n\t}\r\n\r\n\tprivate List<MarketLog> read(final File logFile) {\r\n\t\tfinal String filename = logFile.getName();\r\n\t\tLOG.info(\"Reading: \" + filename);\r\n\t\tString[] values = filename.split(\"-\");\r\n\t\tif (values.length < 3) {\r\n\t\t\tLOG.warn(\"Failed to read: \" + filename);\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tDate date;\r\n\t\ttry {\r\n\t\t\tdate = FILE_DATE_FORMAT.parse(values[values.length-1]);\r\n\t\t} catch (ParseException ex) {\r\n\t\t\tLOG.error(\"Failed to read: \" + filename, ex);\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tList<MarketLog> marketLogs = parse(logFile);\r\n\t\tif (marketLogs == null || marketLogs.isEmpty()) {\r\n\t\t\tLOG.warn(\"Failed to read: \" + filename);\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tInteger typeID = marketLogs.get(0).getTypeID();\r\n\t\tif (typeID == null) {\r\n\t\t\tLOG.warn(\"Failed to read: \" + filename);\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tSet<RawPublicMarketOrder> marketOrders = new HashSet<>();\r\n\t\tfor (MarketLog marketLog : marketLogs) {\r\n\t\t\tmarketOrders.add(new RawPublicMarketOrder(marketLog));\r\n\t\t}\r\n\t\tMap<Integer, Set<RawPublicMarketOrder>> orders = new HashMap<>();\r\n\t\torders.put(typeID, marketOrders);\r\n\t\tinput.addOrders(orders, date);\r\n\t\tLOG.info(\"Read: \" + filename);\r\n\t\treturn marketLogs;\r\n\t}\r\n\r\n\tprivate List<MarketLog> parse(File file) {\r\n\t\treturn parse(file, 0);\r\n\t}\r\n\r\n\tprivate List<MarketLog> parse(File file, int retries) {\r\n\t\tReader reader = null;\r\n\t\tICsvBeanReader beanReader = null;\r\n\t\ttry {\r\n\t\t\tbeanReader = new CsvBeanReader(new FileReader(file), CsvPreference.STANDARD_PREFERENCE);\r\n\t\t\tbeanReader.getHeader(true);\r\n\t\t\t// the header elements are used to map the values to the bean (names must match)\r\n\t\t\tfinal String[] header = {\"price\",\"volRemaining\",\"typeID\",\"range\",\"orderID\",\"volEntered\",\"minVolume\",\"bid\",\"issueDate\",\"duration\",\"stationID\",\"regionID\",\"solarSystemID\",\"jumps\", \"empty\"};\r\n\r\n\t\t\tList<MarketLog> marketLogs = new ArrayList<>();\r\n\t\t\tMarketLog marketLog;\r\n\t\t\twhile ((marketLog = beanReader.read(MarketLog.class, header, getProcessors())) != null) {\r\n\t\t\t\tmarketLogs.add(marketLog);\r\n\t\t\t}\r\n\t\t\tif (marketLogs.isEmpty()) {\r\n\t\t\t\tthrow new IllegalArgumentException(\"Empty file\");\r\n\t\t\t}\r\n\t\t\treturn marketLogs;\r\n\t\t} catch (SuperCsvCellProcessorException | IOException | IllegalArgumentException ex) {\r\n\t\t\tif (retries < RETRIES) {\r\n\t\t\t\tretries++;\r\n\t\t\t\ttry {\r\n\t\t\t\t\tThread.sleep(retries * 500L);\r\n\t\t\t\t} catch (InterruptedException ex1) {\r\n\t\t\t\t\t//Keep calm and carry on\r\n\t\t\t\t}\r\n\t\t\t\tLOG.info(\"Retrying: \" + retries + \" of \" + RETRIES + \" (\" + retries * 500 + \")\");\r\n\t\t\t\treturn parse(file, retries);\r\n\t\t\t} else {\r\n\t\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tif (beanReader != null) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tbeanReader.close();\r\n\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\t//No problem\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (reader != null) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\treader.close();\r\n\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\t//No problem\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static CellProcessor[] getProcessors() {\r\n\t\treturn new CellProcessor[]{\r\n\t\t\tnew ParseDouble(), // price\r\n\t\t\tnew ParseDouble(), // volRemaining\r\n\t\t\tnew ParseInt(), // typeID\r\n\t\t\tnew ParseInt(), // range\r\n\t\t\tnew ParseLong(), // orderID\r\n\t\t\tnew ParseInt(), // volEntered\r\n\t\t\tnew ParseInt(), // minVolume\r\n\t\t\tnew ParseBool(), // bid\r\n\t\t\tnew ParseDate(), // issueDate\r\n\t\t\tnew ParseInt(), // duration\r\n\t\t\tnew ParseLong(), // stationID\r\n\t\t\tnew ParseLong(), // regionID\r\n\t\t\tnew ParseLong(), // solarSystemID\r\n\t\t\tnew ParseInt(), // jumps\r\n\t\t\tnew Optional()\r\n\t\t};\r\n\t}\r\n\r\n\tpublic static File getMarketlogsDirectory() {\r\n\t\t//https://wiki.eveuniversity.org/EVE_logs\r\n\t\tFile documents = FileSystemView.getFileSystemView().getDefaultDirectory();\r\n\t\tString home = System.getProperty(\"user.home\"); // can be null\r\n\t\tStringBuilder builder = new StringBuilder();\r\n\t\tif (documents.exists()) {\r\n\t\t\tbuilder.append(documents.getPath());\r\n\t\t} else {\r\n\t\t\tbuilder.append(home);\r\n\t\t}\r\n\t\tif (!new File(documents.getAbsolutePath() + File.separator + \"EVE\").exists()\r\n\t\t\t\t&& new File(documents.getAbsolutePath() + File.separator + \"Documents\").exists()) {\r\n\t\t\tbuilder.append(File.separator);\r\n\t\t\tbuilder.append(\"Documents\");\r\n\t\t}\r\n\t\tbuilder.append(File.separator);\r\n\t\tbuilder.append(\"EVE\");\r\n\t\tbuilder.append(File.separator);\r\n\t\tbuilder.append(\"logs\");\r\n\t\tbuilder.append(File.separator);\r\n\t\tbuilder.append(\"Marketlogs\");\r\n\t\treturn new File(builder.toString());\r\n\t}\r\n\r\n\t@SuppressWarnings(\"unchecked\")\r\n\tpublic static class ParseDate extends CellProcessorAdaptor implements StringCellProcessor {\r\n\r\n\t\tpublic static final DateFormatThreadSafe DATETIME = new DateFormatThreadSafe(\"yyyy-MM-dd hh:mm:ss\", true);\r\n\t\tpublic static final DateFormatThreadSafe DATE = new DateFormatThreadSafe(\"yyyy-MM-dd\", true);\r\n\r\n\t\tpublic ParseDate() {\r\n\t\t\tsuper();\r\n\t\t}\r\n\r\n\t\tpublic ParseDate(CellProcessor next) {\r\n\t\t\t// this constructor allows other processors to be chained after ParseDay\r\n\t\t\tsuper(next);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic Object execute(Object value, CsvContext context) {\r\n\t\t\tif (value == null) {\r\n\t\t\t\tthrow new SuperCsvCellProcessorException(\r\n\t\t\t\t\t\t\"this processor does not accept null input - if the column is optional then chain an Optional() processor before this one\",\r\n\t\t\t\t\t\tcontext, this);\r\n\t\t\t}\r\n\r\n\t\t\tDate result;\r\n\t\t\tif (value instanceof Date) {\r\n\t\t\t\tresult = (Date) value;\r\n\t\t\t} else if (value instanceof String) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tresult = DATETIME.parse((String)value);\r\n\t\t\t\t} catch (ParseException ex) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tresult = DATE.parse((String)value);\r\n\t\t\t\t\t} catch (ParseException ex2) {\r\n\t\t\t\t\t\tthrow new SuperCsvCellProcessorException(\r\n\t\t\t\t\t\t\t\tString.format(\"'%s' could not be parsed as an Date\", value), context, this, ex2);\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfinal String actualClassName = value.getClass().getName();\r\n\t\t\t\tthrow new SuperCsvCellProcessorException(String.format(\r\n\t\t\t\t\t\t\"the input value should be of type Date or String but is of type %s\", actualClassName), context,\r\n\t\t\t\t\t\tthis);\r\n\t\t\t}\r\n\t\t\treturn next.execute(result, context);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/NpcCorporationsReader.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.io.local;\n\nimport java.util.Map;\nimport net.nikr.eve.jeveasset.data.sde.NpcCorporation;\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\nimport org.w3c.dom.Element;\nimport org.w3c.dom.Node;\nimport org.w3c.dom.NodeList;\n\n\npublic final class NpcCorporationsReader extends AbstractXmlReader<Boolean> {\n\n\tprivate final Map<Integer, NpcCorporation> npcCorporations;\n\n\tpublic NpcCorporationsReader(Map<Integer, NpcCorporation> npcCorporations) {\n\t\tthis.npcCorporations = npcCorporations;\n\t}\n\n\tpublic static void load(Map<Integer, NpcCorporation> npcCorporations) {\n\t\tNpcCorporationsReader reader = new NpcCorporationsReader(npcCorporations);\n\t\treader.read(\"Npc Corporations\", FileUtil.getPathNpcCorporation(), AbstractXmlReader.XmlType.STATIC);\n\t}\n\n\t@Override\n\tprotected Boolean parse(Element element) throws XmlException {\n\t\tparseNpcCorporations(element);\n\t\treturn true;\n\t}\n\n\t@Override\n\tprotected Boolean failValue() {\n\t\treturn false;\n\t}\n\n\t@Override\n\tprotected Boolean doNotExistValue() {\n\t\treturn false;\n\t}\n\n\tprivate void parseNpcCorporations(final Element element) throws XmlException {\n\t\tNodeList nodes = element.getElementsByTagName(\"row\");\n\t\tfor (int i = 0; i < nodes.getLength(); i++) {\n\t\t\tElement itemElement = (Element) nodes.item(i);\n\t\t\tNpcCorporation npcCorporation = parseNpcCorporation(itemElement);\n\t\t\tnpcCorporations.put(npcCorporation.isFaction() ? npcCorporation.getFactionID() : npcCorporation.getCorporationID(), npcCorporation);\n\t\t}\n\t}\n\n\tprivate NpcCorporation parseNpcCorporation(final Node node) throws XmlException {\n\t\tString faction = getStringOptional(node, \"faction\");\n\t\tint factionID = getInt(node, \"factionid\");\n\t\tString corporation = getStringOptional(node, \"corporation\");\n\t\tint corporationID = getIntNotNull(node, \"corporationid\", 0);\n\t\tboolean connections = getBooleanNotNull(node, \"c\", false);\n\t\tboolean criminalConnections = getBooleanNotNull(node, \"cc\", false);\n\t\treturn new NpcCorporation(faction, factionID, corporation, corporationID, connections, criminalConnections);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/ProfileFinder.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.io.local;\n\nimport java.io.File;\nimport java.io.FileFilter;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Set;\nimport java.util.TreeSet;\nimport net.nikr.eve.jeveasset.data.profile.Profile;\nimport net.nikr.eve.jeveasset.data.profile.Profile.ProfileType;\nimport net.nikr.eve.jeveasset.data.profile.ProfileManager;\nimport net.nikr.eve.jeveasset.gui.shared.StringComparators;\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n\npublic final class ProfileFinder {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(ProfileFinder.class);\n\n\tprivate ProfileFinder() { }\n\n\tpublic static boolean load(final ProfileManager profileManager) {\n\t\tProfileFinder reader = new ProfileFinder();\n\t\treturn reader.read(profileManager);\n\t}\n\n\tprivate boolean read(final ProfileManager profileManager) {\n\t\tbackwardCompatibility();\n\t\tList<Profile> profiles = new ArrayList<>();\n\t\tFile profilesDirectory = new File(FileUtil.getPathProfilesDirectory());\n\t\tFileFilter profileFilter = new ProfileFileFilter();\n\n\t\tFile[] files = profilesDirectory.listFiles(profileFilter);\n\t\tif (files != null) {\n\t\t\tboolean defaultProfileFound = false;\n\t\t\tSet<String> unique = new TreeSet<>(StringComparators.CASE_INSENSITIVE);\n\t\t\tfor (File file : files) {\n\t\t\t\tString filename = file.getName();\n\t\t\t\tString profileName = formatName(filename);\n\t\t\t\tif (!profileName.matches(\"[\\\\w\\\\s]+\")) {\n\t\t\t\t\tLOG.warn(\"Ignoring invalid profile name: {} ({})\", profileName, filename);\n\t\t\t\t\tcontinue; //Ignore invalid names\n\t\t\t\t}\n\t\t\t\tif (unique.contains(profileName)) {\n\t\t\t\t\tLOG.warn(\"Ignoring duplicated profile name: {} ({})\", profileName, filename);\n\t\t\t\t\tcontinue; //ignore duplicates\n\t\t\t\t}\n\t\t\t\tunique.add(profileName);\n\t\t\t\tProfileType type = getProfileType(filename);\n\t\t\t\tif (type == null) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tProfile profile = new Profile(profileName, defaultProfile(filename), activeProfile(filename), type);\n\t\t\t\tif (profile.isDefaultProfile() && !defaultProfileFound) {\n\t\t\t\t\tLOG.info(\"Default profile found: {} ({})\", profileName, filename);\n\t\t\t\t\tdefaultProfileFound = true;\n\t\t\t\t\tprofiles.add(0, profile);\n\t\t\t\t\tprofileManager.setActiveProfile(profile);\n\t\t\t\t} else if (profile.isDefaultProfile() && defaultProfileFound) {\n\t\t\t\t\tLOG.warn(\"Default profile found (again): {} ({})\", profileName, filename);\n\t\t\t\t\tprofile.setDefaultProfile(false);\n\t\t\t\t\tprofile.setActiveProfile(false);\n\t\t\t\t\tprofiles.add(profile);\n\t\t\t\t} else {\n\t\t\t\t\tLOG.info(\"Profile found: {} ({})\", profileName, filename);\n\t\t\t\t\tprofiles.add(profile);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!defaultProfileFound && !profiles.isEmpty()) {\n\t\t\t\tLOG.warn(\"No default profile found: Using first available\");\n\t\t\t\tprofiles.get(0).setDefaultProfile(true);\n\t\t\t\tprofiles.get(0).setActiveProfile(true);\n\t\t\t\tprofileManager.setActiveProfile(profiles.get(0));\n\t\t\t} else if (!defaultProfileFound && profiles.isEmpty()) {\n\t\t\t\tLOG.info(\"No default profile found: Using default profile\");\n\t\t\t}\n\t\t\tif (!profiles.isEmpty()) { //At least one profile file found\n\t\t\t\tprofileManager.setProfiles(profiles);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate void backwardCompatibility() {\n\t\t//Create profiles directory\n\t\tFile dir = new File(FileUtil.getPathProfilesDirectory());\n\t\tif (!dir.exists()) {\n\t\t\tif (dir.mkdirs()) {\n\t\t\t\tLOG.info(\"Created profiles directory\");\n\t\t\t} else {\n\t\t\t\tLOG.error(\"Failed to make profiles directory\");\n\t\t\t}\n\t\t}\n\t\t//Move assets.xml to new location\n\t\tFile assets = new File(FileUtil.getPathAssetsOld());\n\t\tif (assets.exists()) {\n\t\t\tif (assets.renameTo(new File(FileUtil.getPathProfilesDirectory(), \"#Default.xml\"))) {\n\t\t\t\tLOG.info(\"Moved assets.xml to new location\");\n\t\t\t} else {\n\t\t\t\tLOG.error(\"Failed to move assets.xml to new location\");\n\t\t\t}\n\t\t}\n\t\t//Move assets.bac to new location\n\t\tString filename = FileUtil.getPathAssetsOld();\n\t\tint end = filename.lastIndexOf(\".\");\n\t\tfilename = filename.substring(0, end) + \".bac\";\n\t\tFile backup = new File(filename);\n\t\tif (backup.exists()) {\n\t\t\tif (backup.renameTo(new File(FileUtil.getPathProfilesDirectory(), \"#Default.bac\"))) {\n\t\t\t\tLOG.info(\"Moved assets.xml to new location\");\n\t\t\t} else {\n\t\t\t\tLOG.error(\"Failed to move assets.xml to new location\");\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate String formatName(String name) {\n\t\tif (name.contains(\".\")) {\n\t\t\tint end = name.lastIndexOf(\".\");\n\t\t\tname = name.substring(0, end);\n\t\t}\n\t\tname = name.replace(\"_\", \" \");\n\t\tname = name.replace(\"#\", \"\");\n\t\treturn name;\n\t}\n\n\tprivate boolean defaultProfile(final String name) {\n\t\treturn name.startsWith(\"#\");\n\t}\n\tprivate boolean activeProfile(final String name) {\n\t\treturn name.startsWith(\"#\");\n\t}\n\n\tprivate class ProfileFileFilter implements FileFilter {\n\t\t@Override\n\t\tpublic boolean accept(final File file) {\n\t\t\treturn !file.isDirectory() && (isXML(file.getName()) || isSQLite(file.getName()));\n\t\t}\n\t}\n\n\tprivate static boolean isXML(String filename) {\n\t\treturn filename.endsWith(\".xml\");\n\t}\n\n\tprivate static boolean isSQLite(String filename) {\n\t\treturn filename.endsWith(\".db\");\n\t}\n\n\tprivate static ProfileType getProfileType(String filename) {\n\t\tif(isXML(filename)) {\n\t\t\treturn ProfileType.XML;\n\t\t} else if (isSQLite(filename)) {\n\t\t\treturn ProfileType.SQLITE;\n\t\t}\n\t\treturn null;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/ProfileReader.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.io.local;\n\nimport java.util.ArrayList;\nimport java.util.Date;\nimport java.util.EnumSet;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\nimport net.nikr.eve.jeveasset.data.api.my.MyAccountBalance;\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\nimport net.nikr.eve.jeveasset.data.api.my.MyExtraction;\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\nimport net.nikr.eve.jeveasset.data.api.my.MyJournal;\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\nimport net.nikr.eve.jeveasset.data.api.my.MyMining;\nimport net.nikr.eve.jeveasset.data.api.my.MyShip;\nimport net.nikr.eve.jeveasset.data.api.my.MySkill;\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\nimport net.nikr.eve.jeveasset.data.api.raw.RawAccountBalance;\nimport net.nikr.eve.jeveasset.data.api.raw.RawAsset;\nimport net.nikr.eve.jeveasset.data.api.raw.RawBlueprint;\nimport net.nikr.eve.jeveasset.data.api.raw.RawContract;\nimport net.nikr.eve.jeveasset.data.api.raw.RawContract.ContractStatus;\nimport net.nikr.eve.jeveasset.data.api.raw.RawContractItem;\nimport net.nikr.eve.jeveasset.data.api.raw.RawExtraction;\nimport net.nikr.eve.jeveasset.data.api.raw.RawIndustryJob;\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournal;\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournalRefType;\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder;\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder.Change;\nimport net.nikr.eve.jeveasset.data.api.raw.RawMining;\nimport net.nikr.eve.jeveasset.data.api.raw.RawSkill;\nimport net.nikr.eve.jeveasset.data.api.raw.RawTransaction;\nimport net.nikr.eve.jeveasset.data.profile.Profile;\nimport net.nikr.eve.jeveasset.data.sde.ItemFlag;\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\nimport net.nikr.eve.jeveasset.io.esi.EsiCallbackURL;\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\nimport net.nikr.eve.jeveasset.io.shared.DataConverter;\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\nimport org.w3c.dom.Element;\nimport org.w3c.dom.Node;\nimport org.w3c.dom.NodeList;\n\n\npublic final class ProfileReader extends AbstractXmlReader<Boolean> {\n\n\tprivate final Profile profile;\n\n\tpublic static boolean load(final Profile profile) {\n\t\treturn load(profile, profile.getXmlFilename());\n\t}\n\n\tpublic static boolean load(final Profile profile, final String filename) {\n\t\tProfileReader reader = new ProfileReader(profile);\n\t\tBoolean ok = reader.read(filename, filename, XmlType.DYNAMIC_BACKUP);\n\t\tif (!ok) {\n\t\t\tprofile.clear();\n\t\t}\n\t\treturn ok;\n\t}\n\n\tpublic ProfileReader(final Profile profile) {\n\t\tthis.profile = profile;\n\t}\n\n\t@Override\n\tprotected Boolean parse(Element element) throws XmlException {\n\t\tprofile.clear(); //Clear before load (may happen more than once)\n\t\tparseProfile(element, profile);\n\t\treturn true;\n\t}\n\n\t@Override\n\tprotected Boolean failValue() {\n\t\treturn false;\n\t}\n\n\t@Override\n\tprotected Boolean doNotExistValue() {\n\t\treturn true;\n\t}\n\n\tprivate void parseProfile(final Element element, Profile profile) throws XmlException {\n\t\tif (!element.getNodeName().equals(\"assets\")) {\n\t\t\tthrow new XmlException(\"Wrong root element name.\");\n\t\t}\n\t\t//Stockpiles\n\t\tNodeList stockpilesNodes = element.getElementsByTagName(\"stockpiles\");\n\t\tif (stockpilesNodes.getLength() == 1) {\n\t\t\tElement stockpilesElement = (Element) stockpilesNodes.item(0);\n\t\t\tparseStockpiles(stockpilesElement, profile);\n\t\t}\n\t\t//Esi\n\t\tNodeList esiOwnersNodes = element.getElementsByTagName(\"esiowners\");\n\t\tif (esiOwnersNodes.getLength() == 1) {\n\t\t\tElement esiElement = (Element) esiOwnersNodes.item(0);\n\t\t\tparseEsiOwners(esiElement, profile.getEsiOwners());\n\t\t\tMap<MyContract, List<MyContractItem>> contracts = new HashMap<>();\n\t\t\tfor (EsiOwner esiOwner : profile.getEsiOwners()) {\n\t\t\t\tfor (Map.Entry<MyContract, List<MyContractItem>> entry : esiOwner.getContracts().entrySet()) {\n\t\t\t\t\tif (!entry.getValue().isEmpty()) {\n\t\t\t\t\t\tcontracts.put(entry.getKey(), entry.getValue());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (Map.Entry<MyContract, List<MyContractItem>> entry : contracts.entrySet()) {\n\t\t\t\tfor (EsiOwner esiOwner : profile.getEsiOwners()) {\n\t\t\t\t\tif (esiOwner.getContracts().containsKey(entry.getKey())) {\n\t\t\t\t\t\tesiOwner.getContracts().put(entry.getKey(), entry.getValue());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void parseStockpiles(final Element element, final Profile profile) throws XmlException {\n\t\tNodeList stockpilesNodes = element.getElementsByTagName(\"stockpile\");\n\t\tSet<Long> stockpileIDs = new HashSet<>();\n\t\tfor (int i = 0; i < stockpilesNodes.getLength(); i++) {\n\t\t\tElement currentNode = (Element) stockpilesNodes.item(i);\n\t\t\tlong id = getLong(currentNode, \"id\");\n\t\t\tstockpileIDs.add(id);\n\t\t}\n\t\tprofile.getStockpileIDs().setShown(stockpileIDs);\n\t}\n\n\tprivate void parseEsiOwners(final Element element, final List<EsiOwner> esiOwners) throws XmlException {\n\t\tNodeList ownerNodes = element.getElementsByTagName(\"esiowner\");\n\t\tfor (int i = 0; i < ownerNodes.getLength(); i++) {\n\t\t\tElement currentNode = (Element) ownerNodes.item(i);\n\t\t\tString accountName = getString(currentNode, \"accountname\");\n\t\t\tString refreshToken = getString(currentNode, \"refreshtoken\");\n\t\t\tString scopes = getString(currentNode, \"scopes\");\n\t\t\tDate structuresNextUpdate = getDate(currentNode, \"structuresnextupdate\");\n\t\t\tDate accountNextUpdate = getDate(currentNode, \"accountnextupdate\");\n\t\t\tEsiCallbackURL callbackURL;\n\t\t\ttry {\n\t\t\t\tcallbackURL = EsiCallbackURL.valueOf(getString(currentNode, \"callbackurl\"));\n\t\t\t} catch (IllegalArgumentException ex) {\n\t\t\t\tthrow new XmlException(ex);\n\t\t\t}\n\t\t\tSet<RolesEnum> roles = EnumSet.noneOf(RolesEnum.class);\n\t\t\tif (haveAttribute(currentNode, \"characterroles\")) {\n\t\t\t\tfor (String role : getString(currentNode, \"characterroles\").split(\",\")) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\troles.add(RolesEnum.valueOf(role));\n\t\t\t\t\t} catch (IllegalArgumentException ex) {\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tEsiOwner owner = EsiOwner.create();\n\t\t\towner.setRoles(roles);\n\t\t\towner.setAccountName(accountName);\n\t\t\towner.setScopes(scopes);\n\t\t\towner.setStructuresNextUpdate(structuresNextUpdate);\n\t\t\towner.setAccountNextUpdate(accountNextUpdate);\n\t\t\towner.setAuth(callbackURL, refreshToken, null);\n\n\t\t\tparseOwnerType(currentNode, owner);\n\t\t\tesiOwners.add(owner);\n\t\t}\n\t}\n\n\tprivate void parseOwnerType(final Element node, OwnerType owner) throws XmlException {\n\t\tString ownerName = getString(node, \"name\");\n\t\tString corporationName = getStringOptional(node, \"corp\");\n\t\tlong ownerID = getLong(node, \"id\");\n\t\tDate assetsNextUpdate = getDateNotNull(node, \"assetsnextupdate\");\n\t\tDate assetsLastUpdate = getDateOptional(node, \"assetslastupdate\");\n\t\tDate balanceNextUpdate = getDateNotNull(node, \"balancenextupdate\");\n\t\tDate balanceLastUpdate = getDateOptional(node, \"balancelastupdate\");\n\t\tboolean showOwner = getBooleanNotNull(node, \"show\", true) ;\n\t\tboolean invalid = getBooleanNotNull(node, \"invalid\", false);\n\t\tDate marketOrdersNextUpdate = getDateNotNull(node, \"marketordersnextupdate\");\n\t\tDate journalNextUpdate = getDateNotNull(node, \"journalnextupdate\");\n\t\tDate transactionsNextUpdate = getDateNotNull(node, \"wallettransactionsnextupdate\");\n\t\tDate industryJobsNextUpdate = getDateNotNull(node, \"industryjobsnextupdate\");\n\t\tDate contractsNextUpdate = getDateNotNull(node, \"contractsnextupdate\");\n\t\tDate locationsNextUpdate = getDateNotNull(node, \"locationsnextupdate\");\n\t\tDate blueprintsNextUpdate = getDateNotNull(node, \"blueprintsnextupdate\");\n\t\tDate skillsNextUpdate = getDateNotNull(node, \"skillsnextupdate\");\n\t\tDate miningNextUpdate = getDateNotNull(node, \"miningnextupdate\");\n\t\towner.setOwnerName(ownerName);\n\t\towner.setCorporationName(corporationName);\n\t\towner.setOwnerID(ownerID);\n\t\towner.setAssetNextUpdate(assetsNextUpdate);\n\t\towner.setAssetLastUpdate(assetsLastUpdate);\n\t\towner.setBalanceNextUpdate(balanceNextUpdate);\n\t\towner.setBalanceLastUpdate(balanceLastUpdate);\n\t\towner.setShowOwner(showOwner);\n\t\towner.setInvalid(invalid);\n\t\towner.setMarketOrdersNextUpdate(marketOrdersNextUpdate);\n\t\towner.setJournalNextUpdate(journalNextUpdate);\n\t\towner.setTransactionsNextUpdate(transactionsNextUpdate);\n\t\towner.setIndustryJobsNextUpdate(industryJobsNextUpdate);\n\t\towner.setContractsNextUpdate(contractsNextUpdate);\n\t\towner.setLocationsNextUpdate(locationsNextUpdate);\n\t\towner.setBlueprintsNextUpdate(blueprintsNextUpdate);\n\t\towner.setSkillsNextUpdate(skillsNextUpdate);\n\t\towner.setMiningNextUpdate(miningNextUpdate);\n\n\t\tNodeList assetNodes = node.getElementsByTagName(\"assets\");\n\t\tif (assetNodes.getLength() == 1) {\n\t\t\tparseAssets(assetNodes.item(0), owner, owner.getAssets(), null);\n\t\t}\n\t\tparseActiveShip(node, owner);\n\t\tparseContracts(node, owner);\n\t\tparseBalances(node, owner);\n\t\tparseMarketOrders(node, owner);\n\t\tparseJournals(node, owner);\n\t\tparseTransactions(node, owner);\n\t\tparseIndustryJobs(node, owner);\n\t\tparseBlueprints(node, owner);\n\t\tparseAssetDivisions(node, owner);\n\t\tparseWalletDivisions(node, owner);\n\t\tparseSkills(node, owner);\n\t\tparseMining(node, owner);\n\t}\n\n\tprivate void parseActiveShip(final Element element, final OwnerType owner) throws XmlException {\n\t\tNodeList activeShipNodes = element.getElementsByTagName(\"activeship\");\n\t\tif(activeShipNodes.getLength() == 1) {\n\t\t\tElement activeShipNode = (Element) activeShipNodes.item(0);\n\t\t\tlong itemId = getLong(activeShipNode, \"itemid\");\n\t\t\tint typeId = getInt(activeShipNode, \"typeid\");\n\t\t\tlong locationId = getLong(activeShipNode, \"locationid\");\n\n\t\t\tMyShip activeShip = new MyShip(itemId, typeId, locationId);\n\t\t\towner.setActiveShip(activeShip);\n\t\t}\n\t}\n\n\tprivate void parseContracts(final Element element, final OwnerType owner) throws XmlException {\n\t\tNodeList contractsNodes = element.getElementsByTagName(\"contracts\");\n\t\tMap<MyContract, List<MyContractItem>> contracts = new HashMap<>();\n\t\tfor (int a = 0; a < contractsNodes.getLength(); a++) {\n\t\t\tElement contractsNode = (Element) contractsNodes.item(a);\n\t\t\tboolean archivedMigrated = getBooleanNotNull(contractsNode, \"archived\", false);\n\t\t\tNodeList contractNodes = contractsNode.getElementsByTagName(\"contract\");\n\t\t\tfor (int b = 0; b < contractNodes.getLength(); b++) {\n\t\t\t\tElement contractNode = (Element) contractNodes.item(b);\n\t\t\t\tMyContract contract = parseContract(contractNode);\n\t\t\t\tif (!archivedMigrated && !contract.isESI() && (contract.isOpen() || contract.isInProgress())) {\n\t\t\t\t\tcontract.setStatus(ContractStatus.ARCHIVED);\n\t\t\t\t}\n\t\t\t\tNodeList itemNodes = contractNode.getElementsByTagName(\"contractitem\");\n\t\t\t\tList<MyContractItem> contractItems = new ArrayList<>();\n\t\t\t\tfor (int c = 0; c < itemNodes.getLength(); c++) {\n\t\t\t\t\tElement currentNode = (Element) itemNodes.item(c);\n\t\t\t\t\tRawContractItem rawContractItem = parseContractItem(currentNode);\n\t\t\t\t\tMyContractItem contractItem = DataConverter.toMyContractItem(rawContractItem, contract);\n\t\t\t\t\tcontractItems.add(contractItem);\n\t\t\t\t}\n\n\t\t\t\tcontracts.put(contract, contractItems);\n\t\t\t}\n\t\t}\n\t\towner.setContracts(contracts);\n\t}\n\n\tprivate MyContract parseContract(final Element element) throws XmlException {\n\t\tRawContract rawContract = RawContract.create();\n\t\tint acceptorID = getInt(element, \"acceptorid\");\n\t\tint assigneeID = getInt(element, \"assigneeid\");\n\t\tString availabilityString = getStringOptional(element, \"availabilitystring\");\n\t\tString availabilityEnum = getStringOptional(element, \"availability\");\n\t\tDouble buyout = getDoubleOptional(element, \"buyout\");\n\t\tDouble collateral = getDoubleOptional(element, \"collateral\");\n\t\tint contractID = getInt(element, \"contractid\");\n\t\tDate dateAccepted = getDateOptional(element, \"dateaccepted\");\n\t\tDate dateCompleted = getDateOptional(element, \"datecompleted\");\n\t\tDate dateExpired = getDate(element, \"dateexpired\");\n\t\tDate dateIssued = getDate(element, \"dateissued\");\n\t\tLong endLocationID = getLongOptional(element, \"endstationid\");\n\t\tint issuerCorporationID = getInt(element, \"issuercorpid\");\n\t\tint issuerID = getInt(element, \"issuerid\");\n\t\tInteger daysToComplete = getIntOptional(element, \"numdays\");\n\t\tDouble price = getDoubleOptional(element, \"price\");\n\t\tDouble reward = getDoubleOptional(element, \"reward\");\n\t\tLong startLocationID = getLongOptional(element, \"startstationid\");\n\t\tString statusString = getStringOptional(element, \"statusstring\");\n\t\tString statusEnum = getStringOptional(element, \"status\");\n\t\tString title = getStringOptional(element, \"title\");\n\t\tString typeString = getStringOptional(element, \"typestring\");\n\t\tString typeEnum = getStringOptional(element, \"type\");\n\t\tDouble volume = getDoubleOptional(element, \"volume\");\n\t\tboolean forCorporation = getBoolean(element, \"forcorp\");\n\t\tboolean esi = getBooleanNotNull(element, \"esi\", true);\n\t\trawContract.setAcceptorID(acceptorID);\n\t\trawContract.setAssigneeID(assigneeID);\n\t\trawContract.setAvailability(RawConverter.toContractAvailability(availabilityEnum, availabilityString));\n\t\trawContract.setAvailabilityString(availabilityString);\n\t\trawContract.setBuyout(buyout);\n\t\trawContract.setCollateral(collateral);\n\t\trawContract.setContractID(contractID);\n\t\trawContract.setDateAccepted(dateAccepted);\n\t\trawContract.setDateCompleted(dateCompleted);\n\t\trawContract.setDateExpired(dateExpired);\n\t\trawContract.setDateIssued(dateIssued);\n\t\trawContract.setDaysToComplete(daysToComplete);\n\t\trawContract.setEndLocationID(endLocationID);\n\t\trawContract.setForCorporation(forCorporation);\n\t\trawContract.setIssuerCorporationID(issuerCorporationID);\n\t\trawContract.setIssuerID(issuerID);\n\t\trawContract.setPrice(price);\n\t\trawContract.setReward(reward);\n\t\trawContract.setStartLocationID(startLocationID);\n\t\trawContract.setStatus(RawConverter.toContractStatus(statusEnum, statusString));\n\t\trawContract.setStatusString(statusString);\n\t\trawContract.setTitle(title);\n\t\trawContract.setTypeString(typeString);\n\t\trawContract.setType(RawConverter.toContractType(typeEnum, typeString));\n\t\trawContract.setVolume(volume);\n\n\t\tMyContract contract = DataConverter.toMyContract(rawContract);\n\t\tcontract.setESI(esi);\n\n\t\treturn contract;\n\t}\n\n\tprivate RawContractItem parseContractItem(final Element element) throws XmlException {\n\t\tRawContractItem contractItem = RawContractItem.create();\n\t\tboolean included = getBoolean(element, \"included\");\n\t\tint quantity = getInt(element, \"quantity\");\n\t\tlong recordID = getLong(element, \"recordid\");\n\t\tboolean singleton = getBoolean(element, \"singleton\");\n\t\tint typeID = getInt(element, \"typeid\");\n\t\tInteger rawQuantity = getIntOptional(element, \"rawquantity\");\n\t\tLong itemID = getLongOptional(element, \"itemid\");\n\t\tInteger runs = getIntOptional(element, \"runs\");\n\t\tInteger materialEfficiency = getIntOptional(element, \"me\");\n\t\tInteger timeEfficiency = getIntOptional(element, \"te\");\n\t\tcontractItem.setIncluded(included);\n\t\tcontractItem.setQuantity(quantity);\n\t\tcontractItem.setRecordID(recordID);\n\t\tcontractItem.setSingleton(singleton);\n\t\tcontractItem.setTypeID(typeID);\n\t\tcontractItem.setRawQuantity(rawQuantity);\n\t\tcontractItem.setItemID(itemID);\n\t\tcontractItem.setLicensedRuns(runs);\n\t\tcontractItem.setME(materialEfficiency);\n\t\tcontractItem.setTE(timeEfficiency);\n\n\t\treturn contractItem;\n\t}\n\n\tprivate void parseBalances(final Element element, final OwnerType owner) throws XmlException {\n\t\tList<MyAccountBalance> accountBalances = new ArrayList<>();\n\t\tNodeList balancesNodes = element.getElementsByTagName(\"balances\");\n\t\tfor (int a = 0; a < balancesNodes.getLength(); a++) {\n\t\t\tElement currentBalancesNode = (Element) balancesNodes.item(a);\n\t\t\tNodeList balanceNodes = currentBalancesNode.getElementsByTagName(\"balance\");\n\t\t\tfor (int b = 0; b < balanceNodes.getLength(); b++) {\n\t\t\t\tElement currentNode = (Element) balanceNodes.item(b);\n\t\t\t\tRawAccountBalance rawAccountBalance = parseBalance(currentNode);\n\t\t\t\tMyAccountBalance accountBalance = DataConverter.toMyAccountBalance(rawAccountBalance, owner);\n\t\t\t\taccountBalances.add(accountBalance);\n\t\t\t}\n\t\t}\n\t\towner.setAccountBalances(accountBalances);\n\t}\n\n\tprivate RawAccountBalance parseBalance(final Element element) throws XmlException {\n\t\tRawAccountBalance accountBalance = RawAccountBalance.create();\n\t\tint accountKey = getInt(element, \"accountkey\");\n\t\tdouble balance = getDouble(element, \"balance\");\n\t\taccountBalance.setAccountKey(accountKey);\n\t\taccountBalance.setBalance(balance);\n\t\treturn accountBalance;\n\t}\n\n\tprivate void parseMarketOrders(final Element element, final OwnerType owner) throws XmlException {\n\t\tNodeList marketOrdersNodes = element.getElementsByTagName(\"markerorders\");\n\t\tSet<MyMarketOrder> marketOrders = new HashSet<>();\n\t\tfor (int a = 0; a < marketOrdersNodes.getLength(); a++) {\n\t\t\tElement currentMarketOrdersNode = (Element) marketOrdersNodes.item(a);\n\t\t\tNodeList marketOrderNodes = currentMarketOrdersNode.getElementsByTagName(\"markerorder\");\n\t\t\tfor (int b = 0; b < marketOrderNodes.getLength(); b++) {\n\t\t\t\tElement currentNode = (Element) marketOrderNodes.item(b);\n\t\t\t\tMyMarketOrder marketOrder = parseMarketOrder(currentNode, owner);\n\t\t\t\tmarketOrders.add(marketOrder);\n\t\t\t}\n\t\t}\n\t\towner.setMarketOrders(marketOrders);\n\t}\n\n\tprivate MyMarketOrder parseMarketOrder(final Element element, final OwnerType owner) throws XmlException {\n\t\tRawMarketOrder rawMarketOrder = RawMarketOrder.create();\n\t\tlong orderID = getLong(element, \"orderid\");\n\t\tlong locationID = getLong(element, \"stationid\");\n\t\tint volEntered = getInt(element, \"volentered\");\n\t\tint volRemaining = getInt(element, \"volremaining\");\n\t\tint minVolume = getInt(element, \"minvolume\");\n\t\tInteger stateInt = getIntOptional(element, \"orderstate\");\n\t\tString stateEnum = getStringOptional(element, \"orderstateenum\");\n\t\tString stateString = getStringOptional(element, \"orderstatestring\");\n\t\tint typeID = getInt(element, \"typeid\");\n\t\tInteger rangeInt = getIntOptional(element, \"range\");\n\t\tString rangeEnum = getStringOptional(element, \"rangeenum\");\n\t\tString rangeString = getStringOptional(element, \"rangestring\");\n\t\tint accountID = getInt(element, \"accountkey\");\n\t\tint duration = getInt(element, \"duration\");\n\t\tdouble escrow = getDouble(element, \"escrow\");\n\t\tdouble price = getDouble(element, \"price\");\n\t\tint bid = getInt(element, \"bid\");\n\t\tDate issued = getDate(element, \"issued\");\n\t\tDate created = getDateOptional(element, \"created\");\n\t\tString changed = getStringOptional(element, \"changed\");\n\t\tInteger issuedBy = getIntOptional(element, \"issuedby\");\n\t\tboolean corp = getBooleanNotNull(element, \"corp\", owner.isCorporation());\n\t\tboolean esi = getBooleanNotNull(element, \"esi\", true);\n\t\tNodeList changeNodes = element.getElementsByTagName(\"change\");\n\t\tSet<Change> changes = new HashSet<>();\n\t\tfor (int a = 0; a < changeNodes.getLength(); a++) {\n\t\t\tElement changeNode = (Element) changeNodes.item(a);\n\t\t\tDate date = getDate(changeNode, \"date\");\n\t\t\tDouble changePrice = getDoubleOptional(changeNode, \"price\");\n\t\t\tInteger changeVolRemaining = getIntOptional(changeNode, \"volremaining\");\n\t\t\tchanges.add(new Change(date, changePrice, changeVolRemaining));\n\t\t}\n\t\trawMarketOrder.setWalletDivision(accountID);\n\t\trawMarketOrder.setDuration(duration);\n\t\trawMarketOrder.setEscrow(escrow);\n\t\trawMarketOrder.setBuyOrder(bid > 0);\n\t\trawMarketOrder.setCorp(corp);\n\t\trawMarketOrder.setIssued(issued);\n\t\trawMarketOrder.addChanges(changes);\n\t\trawMarketOrder.addChangesLegacy(created);\n\t\tif (changed != null) {\n\t\t\tString[] array = changed.split(\",\");\n\t\t\tfor (String s : array) {\n\t\t\t\ttry {\n\t\t\t\t\trawMarketOrder.addChangesLegacy(new Date(Long.valueOf(s)));\n\t\t\t\t} catch (NumberFormatException ex) {\n\t\t\t\t\t//No problem....\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\trawMarketOrder.setIssuedBy(issuedBy);\n\t\trawMarketOrder.setLocationID(locationID);\n\t\trawMarketOrder.setMinVolume(minVolume);\n\t\trawMarketOrder.setOrderID(orderID);\n\t\trawMarketOrder.setPrice(price);\n\t\trawMarketOrder.setRange(RawConverter.toMarketOrderRange(rangeInt, rangeEnum, rangeString));\n\t\trawMarketOrder.setRangeString(rangeString);\n\t\trawMarketOrder.setRegionID((int) ApiIdConverter.getLocation(locationID).getRegionID());\n\t\trawMarketOrder.setState(RawConverter.toMarketOrderState(stateInt, stateEnum, stateString));\n\t\trawMarketOrder.setStateString(stateString);\n\t\trawMarketOrder.setTypeID(typeID);\n\t\trawMarketOrder.setVolumeRemain(volRemaining);\n\t\trawMarketOrder.setVolumeTotal(volEntered);\n\n\t\tMyMarketOrder marketOrder = DataConverter.toMyMarketOrder(rawMarketOrder, owner);\n\t\tmarketOrder.setESI(esi);\n\n\t\treturn marketOrder;\n\t}\n\n\tprivate void parseJournals(final Element element, final OwnerType owner) throws XmlException {\n\t\tNodeList journalsNodes = element.getElementsByTagName(\"journals\");\n\t\tSet<MyJournal> journals = new HashSet<>();\n\t\tfor (int a = 0; a < journalsNodes.getLength(); a++) {\n\t\t\tElement currentAalletJournalsNode = (Element) journalsNodes.item(a);\n\t\t\tNodeList journalNodes = currentAalletJournalsNode.getElementsByTagName(\"journal\");\n\t\t\tfor (int b = 0; b < journalNodes.getLength(); b++) {\n\t\t\t\tElement currentNode = (Element) journalNodes.item(b);\n\t\t\t\tRawJournal rawJournal = parseJournal(currentNode);\n\t\t\t\tMyJournal journal = DataConverter.toMyJournal(rawJournal, owner);\n\t\t\t\tjournals.add(journal);\n\t\t\t}\n\t\t}\n\t\towner.setJournal(journals);\n\t}\n\n\tprivate RawJournal parseJournal(final Element element) throws XmlException {\n\t\t//Base\n\t\tRawJournal rawJournal = RawJournal.create();\n\t\tDouble amount = getDoubleOptional(element, \"amount\");\n\t\tLong argID = getLongOptional(element, \"argid1\");\n\t\tString argName = getStringOptional(element, \"argname1\");\n\t\tDouble balance = getDoubleOptional(element, \"balance\");\n\t\tLong contextID = getLongOptional(element, \"contextid\");\n\t\tString contextType = getStringOptional(element, \"contexttype\");\n\t\tString contextTypeString = getStringOptional(element, \"contexttypestring\");\n\t\tDate date = getDate(element, \"date\");\n\t\tString description;\n\t\tif (haveAttribute(element, \"description\")) {\n\t\t\tdescription = getString(element, \"description\");\n\t\t} else {\n\t\t\tdescription = argName;\n\t\t}\n\t\tInteger firstPartyID = getIntOptional(element, \"ownerid1\");\n\t\tInteger secondPartyID = getIntOptional(element, \"ownerid2\");\n\t\tString reason = getStringOptional(element, \"reason\");\n\t\tlong refID = getLong(element, \"refid\");\n\t\tInteger refTypeInt = getIntOptional(element, \"reftypeid\");\n\t\tString refTypeString = getStringOptional(element, \"reftypestring\");\n\t\tDouble taxAmount = getDoubleOptional(element, \"taxamount\");\n\t\tInteger taxReceiverID = getIntOptional(element, \"taxreceiverid\");\n\t\t//Extra\n\t\tint accountKey = getInt(element, \"accountkey\");\n\n\t\trawJournal.setAmount(amount);\n\t\trawJournal.setBalance(balance);\n\t\trawJournal.setDate(date);\n\t\trawJournal.setDescription(description);\n\t\trawJournal.setFirstPartyID(firstPartyID);\n\t\trawJournal.setReason(reason);\n\t\trawJournal.setRefID(refID);\n\t\tRawJournalRefType refType = RawConverter.toJournalRefType(refTypeInt, refTypeString);\n\t\trawJournal.setRefType(refType);\n\t\trawJournal.setRefTypeString(refTypeString);\n\t\trawJournal.setSecondPartyID(secondPartyID);\n\t\trawJournal.setTax(taxAmount);\n\t\trawJournal.setTaxReceiverID(taxReceiverID);\n\t\tif (argID != null || argName != null) {\n\t\t\trawJournal.setContextID(RawConverter.toJournalContextID(argID, argName, refType));\n\t\t\trawJournal.setContextType(RawConverter.toJournalContextType(refType));\n\t\t} else {\n\t\t\trawJournal.setContextID(contextID);\n\t\t\trawJournal.setContextType(RawConverter.toJournalContextType(contextType, contextTypeString));\n\t\t}\n\t\trawJournal.setContextTypeString(contextTypeString);\n\t\trawJournal.setAccountKey(accountKey);\n\t\treturn rawJournal;\n\t}\n\n\tprivate void parseTransactions(final Element element, final OwnerType owner) throws XmlException {\n\t\tNodeList transactionsNodes = element.getElementsByTagName(\"wallettransactions\");\n\t\tSet<MyTransaction> transactions = new HashSet<>();\n\t\tfor (int a = 0; a < transactionsNodes.getLength(); a++) {\n\t\t\tElement currentTransactionsNode = (Element) transactionsNodes.item(a);\n\t\t\tNodeList transactionNodes = currentTransactionsNode.getElementsByTagName(\"wallettransaction\");\n\t\t\tfor (int b = 0; b < transactionNodes.getLength(); b++) {\n\t\t\t\tElement currentNode = (Element) transactionNodes.item(b);\n\t\t\t\tRawTransaction rawTransaction = parseTransaction(currentNode);\n\t\t\t\tMyTransaction transaction = DataConverter.toMyTransaction(rawTransaction, owner);\n\t\t\t\ttransactions.add(transaction);\n\t\t\t}\n\t\t}\n\t\towner.setTransactions(transactions);\n\t}\n\n\tprivate RawTransaction parseTransaction(final Element element) throws XmlException {\n\t\tRawTransaction rawTransaction = RawTransaction.create();\n\t\tDate date = getDate(element, \"transactiondatetime\");\n\t\tlong transactionID = getLong(element, \"transactionid\");\n\t\tint quantity = getInt(element, \"quantity\");\n\t\tint typeID = getInt(element, \"typeid\");\n\t\tdouble price = getDouble(element, \"price\");\n\t\tint clientID = getInt(element, \"clientid\");\n\t\tlong locationID = getLong(element, \"stationid\");\n\t\tString transactionType = getString(element, \"transactiontype\");\n\t\tString transactionFor = getString(element, \"transactionfor\");\n\n\t\t//New\n\t\tlong journalRefID = getLongNotNull(element, \"journaltransactionid\", 0L);\n\n\t\t//Extra\n\t\tint accountKey = getIntNotNull(element, \"accountkey\", 1000);\n\t\trawTransaction.setClientID(clientID);\n\t\trawTransaction.setDate(date);\n\t\trawTransaction.setBuy(RawConverter.toTransactionIsBuy(transactionType));\n\t\trawTransaction.setPersonal(RawConverter.toTransactionIsPersonal(transactionFor));\n\t\trawTransaction.setJournalRefID(journalRefID);\n\t\trawTransaction.setLocationID(locationID);\n\t\trawTransaction.setQuantity(quantity);\n\t\trawTransaction.setTransactionID(transactionID);\n\t\trawTransaction.setTypeID(typeID);\n\t\trawTransaction.setUnitPrice(price);\n\t\trawTransaction.setAccountKey(accountKey);\n\t\treturn rawTransaction;\n\t}\n\n\tprivate void parseIndustryJobs(final Element element, final OwnerType owner) throws XmlException {\n\t\tNodeList industryJobsNodes = element.getElementsByTagName(\"industryjobs\");\n\t\tSet<MyIndustryJob> industryJobs = new HashSet<>();\n\t\tfor (int a = 0; a < industryJobsNodes.getLength(); a++) {\n\t\t\tElement currentIndustryJobsNode = (Element) industryJobsNodes.item(a);\n\t\t\tNodeList industryJobNodes = currentIndustryJobsNode.getElementsByTagName(\"industryjob\");\n\t\t\tfor (int b = 0; b < industryJobNodes.getLength(); b++) {\n\t\t\t\tElement currentNode = (Element) industryJobNodes.item(b);\n\t\t\t\tif (haveAttribute(currentNode, \"blueprintid\")) {\n\t\t\t\t\tMyIndustryJob industryJob = parseIndustryJob(currentNode, owner);\n\t\t\t\t\tindustryJobs.add(industryJob);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\towner.setIndustryJobs(industryJobs);\n\t}\n\n\tprivate MyIndustryJob parseIndustryJob(final Element element, final OwnerType owner) throws XmlException {\n\t\tRawIndustryJob rawIndustryJob = RawIndustryJob.create();\n\t\tint jobID = getInt(element, \"jobid\");\n\t\tint installerID = getInt(element, \"installerid\");\n\t\tlong facilityID = getLong(element, \"facilityid\");\n\t\tlong stationID = getLong(element, \"stationid\");\n\t\tint activityID = getInt(element, \"activityid\");\n\t\tlong blueprintID = getLong(element, \"blueprintid\");\n\t\tint blueprintTypeID = getInt(element, \"blueprinttypeid\");\n\t\tlong blueprintLocationID = getLong(element, \"blueprintlocationid\");\n\t\tlong outputLocationID = getLong(element, \"outputlocationid\");\n\t\tint runs = getInt(element, \"runs\");\n\t\tDouble cost = getDoubleOptional(element, \"cost\");\n\t\tInteger licensedRuns = getIntOptional(element, \"licensedruns\");\n\t\tFloat probability = getFloatOptional(element, \"probability\");\n\t\tInteger productTypeID = getIntOptional(element, \"producttypeid\");\n\t\tInteger statusInt = getIntOptional(element, \"status\");\n\t\tString statusEnum = getStringOptional(element, \"statusenum\");\n\t\tString statusString = getStringOptional(element, \"statusstring\");\n\t\tint duration = getInt(element, \"timeinseconds\");\n\t\tDate startDate = getDate(element, \"startdate\");\n\t\tDate endDate = getDate(element, \"enddate\");\n\t\tDate pauseDate = getDateOptional(element, \"pausedate\");\n\t\tDate completedDate = getDateOptional(element, \"completeddate\");\n\t\tInteger completedCharacterID = getIntOptional(element, \"completedcharacterid\");\n\t\tInteger successfulRuns = getIntOptional(element, \"successfulruns\");\n\t\tboolean esi = getBooleanNotNull(element, \"esi\", true);\n\n\t\trawIndustryJob.setActivityID(activityID);\n\t\trawIndustryJob.setBlueprintID(blueprintID);\n\t\trawIndustryJob.setBlueprintLocationID(blueprintLocationID);\n\t\trawIndustryJob.setBlueprintTypeID(blueprintTypeID);\n\t\trawIndustryJob.setCompletedCharacterID(completedCharacterID);\n\t\trawIndustryJob.setCompletedDate(completedDate);\n\t\trawIndustryJob.setCost(cost);\n\t\trawIndustryJob.setDuration(duration);\n\t\trawIndustryJob.setEndDate(endDate);\n\t\trawIndustryJob.setFacilityID(facilityID);\n\t\trawIndustryJob.setInstallerID(installerID);\n\t\trawIndustryJob.setJobID(jobID);\n\t\trawIndustryJob.setLicensedRuns(licensedRuns);\n\t\trawIndustryJob.setOutputLocationID(outputLocationID);\n\t\trawIndustryJob.setPauseDate(pauseDate);\n\t\trawIndustryJob.setProbability(probability);\n\t\trawIndustryJob.setProductTypeID(productTypeID);\n\t\trawIndustryJob.setRuns(runs);\n\t\trawIndustryJob.setStartDate(startDate);\n\t\trawIndustryJob.setStationID(stationID);\n\t\trawIndustryJob.setStatus(RawConverter.toIndustryJobStatus(statusInt, statusEnum, statusString));\n\t\trawIndustryJob.setStatusString(statusString);\n\t\trawIndustryJob.setSuccessfulRuns(successfulRuns);\n\n\t\tMyIndustryJob industryJob = DataConverter.toMyIndustryJob(rawIndustryJob, owner);\n\t\tindustryJob.setESI(esi);\n\n\t\treturn industryJob;\n\t}\n\n\tprivate void parseAssets(final Node node, final OwnerType owner, final List<MyAsset> assets, final MyAsset parentAsset) throws XmlException {\n\t\tNodeList assetsNodes = node.getChildNodes();\n\t\tfor (int i = 0; i < assetsNodes.getLength(); i++) {\n\t\t\tNode currentNode = assetsNodes.item(i);\n\t\t\tif (currentNode.getNodeName().equals(\"asset\")) {\n\t\t\t\tRawAsset rawAsset = parseAsset(currentNode, parentAsset);\n\t\t\t\tList<MyAsset> parents = new ArrayList<>();\n\t\t\t\tif (parentAsset != null) { //Child\n\t\t\t\t\tparents.addAll(parentAsset.getParents());\n\t\t\t\t\tparents.add(parentAsset);\n\t\t\t\t}\n\t\t\t\tMyAsset asset = DataConverter.toMyAsset(rawAsset, owner, parents);\n\t\t\t\tif (asset == null) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (parentAsset == null) { //Root\n\t\t\t\t\tassets.add(asset);\n\t\t\t\t} else { //Child\n\t\t\t\t\tparentAsset.addAsset(asset);\n\t\t\t\t}\n\t\t\t\tparseAssets(currentNode, owner, assets, asset);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate RawAsset parseAsset(final Node node, final MyAsset parentAsset) throws XmlException {\n\t\tRawAsset rawAsset = RawAsset.create();\n\t\tint count = getInt(node, \"count\");\n\n\t\tlong itemId = getLong(node, \"id\");\n\t\tint typeID = getInt(node, \"typeid\");\n\t\tlong locationID = getLong(node, \"locationid\");\n\t\tif (locationID == 0 && parentAsset != null) {\n\t\t\tlocationID = parentAsset.getLocationID();\n\t\t}\n\t\tboolean singleton = getBoolean(node, \"singleton\");\n\t\tInteger rawQuantity = getIntOptional(node, \"rawquantity\");\n\t\tint flagID = 0;\n\t\tif (haveAttribute(node, \"flagid\")) {\n\t\t\tflagID = getInt(node, \"flagid\");\n\t\t} else { //Workaround for the old system\n\t\t\tString flag = getString(node, \"flag\");\n\t\t\tfor (ItemFlag itemFlag : StaticData.get().getItemFlags().values()) {\n\t\t\t\tif (flag.equals(itemFlag.getFlagName())) {\n\t\t\t\t\tflagID = itemFlag.getFlagID();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tString locationFlagString = getStringOptional(node, \"flagstring\");\n\n\t\trawAsset.setItemID(itemId);\n\t\trawAsset.setItemFlag(RawConverter.toFlag(flagID, locationFlagString));\n\t\trawAsset.setLocationFlagString(locationFlagString);\n\t\trawAsset.setLocationID(locationID);\n\t\trawAsset.setQuantity(RawConverter.toAssetQuantity(count, rawQuantity));\n\t\trawAsset.setSingleton(singleton);\n\t\trawAsset.setTypeID(typeID);\n\t\treturn rawAsset;\n\t}\n\n\tprivate void parseBlueprints(final Element element, final OwnerType owners) throws XmlException {\n\t\tMap<Long, RawBlueprint> blueprints = new HashMap<>();\n\t\tNodeList blueprintsNodes = element.getElementsByTagName(\"blueprints\");\n\t\tfor (int a = 0; a < blueprintsNodes.getLength(); a++) {\n\t\t\tElement currentBlueprintsNode = (Element) blueprintsNodes.item(a);\n\t\t\tNodeList blueprintNodes = currentBlueprintsNode.getElementsByTagName(\"blueprint\");\n\t\t\tfor (int b = 0; b < blueprintNodes.getLength(); b++) {\n\t\t\t\tElement currentNode = (Element) blueprintNodes.item(b);\n\t\t\t\tRawBlueprint blueprint = parseBlueprint(currentNode);\n\t\t\t\tblueprints.put(blueprint.getItemID(), blueprint);\n\t\t\t}\n\t\t}\n\t\towners.setBlueprints(blueprints);\n\t}\n\n\tprivate RawBlueprint parseBlueprint(final Node node) throws XmlException {\n\t\tRawBlueprint blueprint = RawBlueprint.create();\n\t\tlong itemID = getLong(node, \"itemid\");\n\t\tlong locationID = getLong(node, \"locationid\");\n\t\tint typeID = getInt(node, \"typeid\");\n\t\tint flagID = getInt(node, \"flagid\");\n\t\tString locationFlagString = getStringOptional(node, \"flagstring\");\n\t\tint quantity = getInt(node, \"quantity\");\n\t\tint timeEfficiency = getInt(node, \"timeefficiency\");\n\t\tint materialEfficiency = getInt(node, \"materialefficiency\");\n\t\tint runs = getInt(node, \"runs\");\n\n\t\tblueprint.setItemID(itemID);\n\t\tblueprint.setItemFlag(RawConverter.toFlag(flagID, locationFlagString));\n\t\tblueprint.setLocationFlagString(locationFlagString);\n\t\tblueprint.setLocationID(locationID);\n\t\tblueprint.setMaterialEfficiency(materialEfficiency);\n\t\tblueprint.setQuantity(quantity);\n\t\tblueprint.setRuns(runs);\n\t\tblueprint.setTimeEfficiency(timeEfficiency);\n\t\tblueprint.setTypeID(typeID);\n\t\treturn blueprint;\n\t}\n\n\tprivate void parseAssetDivisions(final Element element, final OwnerType owners) throws XmlException {\n\t\tMap<Integer, String> divisions = new HashMap<>();\n\t\tNodeList divisionsNodes = element.getElementsByTagName(\"assetdivisions\");\n\t\tfor (int a = 0; a < divisionsNodes.getLength(); a++) {\n\t\t\tElement currentDivisionsNode = (Element) divisionsNodes.item(a);\n\t\t\tNodeList divisionNodes = currentDivisionsNode.getElementsByTagName(\"assetdivision\");\n\t\t\tfor (int b = 0; b < divisionNodes.getLength(); b++) {\n\t\t\t\tElement currentNode = (Element) divisionNodes.item(b);\n\t\t\t\tint id = getInt(currentNode, \"id\");\n\t\t\t\tString name = getStringOptional(currentNode, \"name\");\n\t\t\t\tdivisions.put(id, name);\n\t\t\t}\n\t\t}\n\t\towners.setAssetDivisions(divisions);\n\t}\n\n\tprivate void parseWalletDivisions(final Element element, final OwnerType owners) throws XmlException {\n\t\tMap<Integer, String> divisions = new HashMap<>();\n\t\tNodeList divisionsNodes = element.getElementsByTagName(\"walletdivisions\");\n\t\tfor (int a = 0; a < divisionsNodes.getLength(); a++) {\n\t\t\tElement currentDivisionsNode = (Element) divisionsNodes.item(a);\n\t\t\tNodeList divisionNodes = currentDivisionsNode.getElementsByTagName(\"walletdivision\");\n\t\t\tfor (int b = 0; b < divisionNodes.getLength(); b++) {\n\t\t\t\tElement currentNode = (Element) divisionNodes.item(b);\n\t\t\t\tint id = getInt(currentNode, \"id\");\n\t\t\t\tString name = getStringOptional(currentNode, \"name\");\n\t\t\t\tdivisions.put(id, name);\n\t\t\t}\n\t\t}\n\t\towners.setWalletDivisions(divisions);\n\t}\n\n\tprivate void parseSkills(final Element element, final OwnerType owners) throws XmlException {\n\t\tNodeList skillsNodes = element.getElementsByTagName(\"skills\");\n\t\tfor (int a = 0; a < skillsNodes.getLength(); a++) {\n\t\t\tElement currentSkillsNode = (Element) skillsNodes.item(a);\n\t\t\tInteger unallocatedSkillPoints = getIntOptional(currentSkillsNode, \"unallocated\");\n\t\t\tLong totalSkillPoints = getLongOptional(currentSkillsNode, \"total\");\n\t\t\tList<MySkill> skills = new ArrayList<>();\n\t\t\tNodeList skillNodes = currentSkillsNode.getElementsByTagName(\"skill\");\n\t\t\tfor (int b = 0; b < skillNodes.getLength(); b++) {\n\t\t\t\tElement currentNode = (Element) skillNodes.item(b);\n\n\t\t\t\tint typeID = getInt(currentNode, \"id\");\n\t\t\t\tlong skillpoints = getLong(currentNode, \"sp\");\n\t\t\t\tint activeSkillLevel = getInt(currentNode, \"active\");\n\t\t\t\tint trainedSkillLevel = getInt(currentNode, \"trained\");\n\n\t\t\t\tRawSkill skill = RawSkill.create();\n\t\t\t\tskill.setTypeID(typeID);\n\t\t\t\tskill.setSkillpoints(skillpoints);\n\t\t\t\tskill.setActiveSkillLevel(activeSkillLevel);\n\t\t\t\tskill.setTrainedSkillLevel(trainedSkillLevel);\n\t\t\t\tskills.add(DataConverter.toMySkill(skill, owners));\n\t\t\t}\n\t\t\towners.setSkills(skills);\n\t\t\towners.setTotalSkillPoints(totalSkillPoints);\n\t\t\towners.setUnallocatedSkillPoints(unallocatedSkillPoints);\n\t\t}\n\t}\n\n\tprivate void parseMining(final Element element, final OwnerType owners) throws XmlException {\n\t\tNodeList miningsNodes = element.getElementsByTagName(\"minings\");\n\t\tfor (int a = 0; a < miningsNodes.getLength(); a++) {\n\t\t\tElement currentMiningsNode = (Element) miningsNodes.item(a);\n\t\t\tList<MyMining> minings = new ArrayList<>();\n\t\t\tNodeList miningNodes = currentMiningsNode.getElementsByTagName(\"mining\");\n\t\t\tfor (int b = 0; b < miningNodes.getLength(); b++) {\n\t\t\t\tElement currentNode = (Element) miningNodes.item(b);\n\t\t\t\tint typeID = getInt(currentNode, \"typeid\");\n\t\t\t\tDate date = getDate(currentNode, \"date\");\n\t\t\t\tlong count = getLong(currentNode, \"count\");\n\t\t\t\tlong locationID = getLong(currentNode, \"locationid\");\n\t\t\t\tLong characterID = getLongOptional(currentNode, \"characterid\");\n\t\t\t\tif (characterID == null) {\n\t\t\t\t\tcharacterID = owners.getOwnerID();\n\t\t\t\t}\n\t\t\t\tString corporationName = getStringOptional(currentNode, \"corporation\");\n\t\t\t\tLong corporationID = getLongOptional(currentNode, \"corporationid\");\n\t\t\t\tboolean forCorporation = getBoolean(currentNode, \"forcorp\");\n\n\t\t\t\tRawMining rawMining = RawMining.create();\n\t\t\t\trawMining.setTypeID(typeID);\n\t\t\t\trawMining.setDate(date);\n\t\t\t\trawMining.setCount(count);\n\t\t\t\trawMining.setLocationID(locationID);\n\t\t\t\trawMining.setCharacterID(characterID);\n\t\t\t\trawMining.setCorporationID(corporationID);\n\t\t\t\trawMining.setCorporationName(corporationName);\n\t\t\t\trawMining.setForCorporation(forCorporation);\n\n\t\t\t\tMyMining mining = DataConverter.toMyMining(rawMining);\n\t\t\t\tint index = minings.indexOf(mining);\n\t\t\t\tif (index >= 0) { //Duplicate\n\t\t\t\t\tMyMining oldMining = minings.get(index); //Current value\n\t\t\t\t\tif (mining.getCount() > oldMining.getCount()) { //New value higher - Replace\n\t\t\t\t\t\tminings.remove(index);\n\t\t\t\t\t\tminings.add(mining);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tminings.add(mining);\n\t\t\t\t}\n\t\t\t}\n\t\t\towners.setMining(new HashSet<>(minings));\n\n\t\t\tSet<MyExtraction> extractions = new HashSet<>();\n\t\t\tNodeList extractionNodes = currentMiningsNode.getElementsByTagName(\"extraction\");\n\t\t\tfor (int b = 0; b < extractionNodes.getLength(); b++) {\n\t\t\t\tElement currentNode = (Element) extractionNodes.item(b);\n\t\t\t\tDate arrival = getDate(currentNode, \"arrival\");\n\t\t\t\tDate start = getDate(currentNode, \"start\");\n\t\t\t\tDate decay = getDate(currentNode, \"decay\");\n\t\t\t\tint moon = getInt(currentNode, \"moon\");\n\t\t\t\tlong structure = getLong(currentNode, \"structure\");\n\n\t\t\t\tRawExtraction mining = RawExtraction.create();\n\t\t\t\tmining.setChunkArrivalTime(arrival);\n\t\t\t\tmining.setExtractionStartTime(start);\n\t\t\t\tmining.setMoonID(moon);\n\t\t\t\tmining.setNaturalDecayTime(decay);\n\t\t\t\tmining.setStructureID(structure);\n\t\t\t\textractions.add(DataConverter.toMyExtraction(mining));\n\t\t\t}\n\t\t\towners.setExtractions(extractions);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/SettingsReader.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.io.local;\n\nimport java.awt.Color;\nimport java.awt.Dimension;\nimport java.awt.Point;\nimport java.io.File;\nimport java.net.Proxy;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Collections;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport java.util.TreeMap;\nimport net.nikr.eve.jeveasset.ToolLoader.ToolTab;\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder.MarketOrderRange;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.data.settings.AddedData;\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\nimport net.nikr.eve.jeveasset.data.settings.ColorTheme.ColorThemeTypes;\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings;\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings.ColumnSelection;\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings.DecimalSeparator;\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings.ExportFormat;\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings.FilterSelection;\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings.LineDelimiter;\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings;\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings.ManufacturingFacility;\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings.ManufacturingRigs;\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings.ManufacturingSecurity;\nimport net.nikr.eve.jeveasset.data.settings.MarketOrdersSettings;\nimport net.nikr.eve.jeveasset.data.settings.PriceDataSettings;\nimport net.nikr.eve.jeveasset.data.settings.PriceDataSettings.PriceMode;\nimport net.nikr.eve.jeveasset.data.settings.PriceDataSettings.PriceSource;\nimport net.nikr.eve.jeveasset.data.settings.ProxyData;\nimport net.nikr.eve.jeveasset.data.settings.ReprocessSettings;\nimport net.nikr.eve.jeveasset.data.settings.RouteAvoidSettings;\nimport net.nikr.eve.jeveasset.data.settings.RouteResult;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.Settings.SettingFlag;\nimport net.nikr.eve.jeveasset.data.settings.Settings.SettingsFactory;\nimport net.nikr.eve.jeveasset.data.settings.Settings.TransactionProfitPrice;\nimport net.nikr.eve.jeveasset.data.settings.StockpileGroupSettings;\nimport net.nikr.eve.jeveasset.data.settings.TrackerData;\nimport net.nikr.eve.jeveasset.data.settings.TrackerSettings;\nimport net.nikr.eve.jeveasset.data.settings.TrackerSettings.DisplayType;\nimport net.nikr.eve.jeveasset.data.settings.TrackerSettings.ShowOption;\nimport net.nikr.eve.jeveasset.data.settings.UserItem;\nimport net.nikr.eve.jeveasset.data.settings.tag.Tag;\nimport net.nikr.eve.jeveasset.data.settings.tag.TagColor;\nimport net.nikr.eve.jeveasset.data.settings.tag.TagID;\nimport net.nikr.eve.jeveasset.gui.dialogs.settings.SoundsSettingsPanel.SoundOption;\nimport net.nikr.eve.jeveasset.gui.dialogs.settings.UserNameSettingsPanel.UserName;\nimport net.nikr.eve.jeveasset.gui.dialogs.settings.UserPriceSettingsPanel.UserPrice;\nimport net.nikr.eve.jeveasset.gui.shared.StringComparators;\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter;\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter.AllColumn;\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter.CompareType;\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter.LogicType;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JFormulaDialog.Formula;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuJumps.Jump;\nimport net.nikr.eve.jeveasset.gui.shared.table.ColumnManager.FormulaColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.ColumnManager.JumpColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor.ResizeMode;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor.SimpleColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.View;\nimport net.nikr.eve.jeveasset.gui.sounds.DefaultSound;\nimport net.nikr.eve.jeveasset.gui.sounds.FileSound;\nimport net.nikr.eve.jeveasset.gui.tabs.assets.AssetTableFormat;\nimport net.nikr.eve.jeveasset.gui.tabs.assets.AssetsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.orders.Outbid;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewGroup;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewLocation;\nimport net.nikr.eve.jeveasset.gui.tabs.routing.SolarSystem;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter.StockpileContainer;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter.StockpileFlag;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileItem;\nimport net.nikr.eve.jeveasset.gui.tabs.tracker.TrackerDate;\nimport net.nikr.eve.jeveasset.gui.tabs.tracker.TrackerNote;\nimport net.nikr.eve.jeveasset.gui.tabs.tracker.TrackerSkillPointFilter;\nimport net.nikr.eve.jeveasset.gui.tabs.values.AssetValue;\nimport net.nikr.eve.jeveasset.gui.tabs.values.Value;\nimport net.nikr.eve.jeveasset.i18n.General;\nimport net.nikr.eve.jeveasset.io.local.update.Update;\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.w3c.dom.Element;\nimport org.w3c.dom.NodeList;\nimport uk.me.candle.eve.pricing.options.LocationType;\n\n\npublic final class SettingsReader extends AbstractXmlReader<Boolean> {\n\n\tpublic static final int SETTINGS_VERSION = 2;\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(SettingsReader.class);\n\n\tprivate enum ReaderType {\n\t\tSETTINGS, STOCKPILE, TRACKER, ROUTES\n\t}\n\n\tprivate Settings settings;\n\tprivate SettingsFactory settingsFactory;\n\tprivate List<Stockpile> stockpilesList;\n\tprivate Map<String, List<Value>> trackerDataMap;\n\tprivate Map<String, RouteResult> routes;\n\tprivate final ReaderType readerType;\n\n\tprivate SettingsReader(ReaderType readerType) {\n\t\tthis.readerType = readerType;\n\t}\n\n\tpublic static Settings load(final SettingsFactory settingsFactory, final String filename) {\n\t\tSettingsReader reader = new SettingsReader(ReaderType.SETTINGS);\n\t\treader.setSettingsFactory(settingsFactory);\n\t\tUpdate updater = new Update();\n\t\ttry {\n\t\t\tupdater.performUpdates(SETTINGS_VERSION, filename);\n\t\t} catch (XmlException ex) {\n\t\t\tLOG.error(ex.getMessage(), ex);\n\t\t\tSettings settings = settingsFactory.create();\n\t\t\tsettings.setSettingsLoadError(true);\n\t\t\treturn settings;\n\t\t}\n\t\tBoolean ok = reader.read(\"Settings\", filename, XmlType.DYNAMIC_BACKUP);\n\t\tSettings settings = reader.getSettings();\n\t\tif (!ok || settings == null) {\n\t\t\tsettings = settingsFactory.create();\n\t\t}\n\t\tif (!ok) {\n\t\t\tsettings.setSettingsLoadError(true);\n\t\t}\n\t\treturn settings;\n\t}\n\n\tprivate void setSettingsFactory(SettingsFactory settingsFactory) {\n\t\tthis.settingsFactory = settingsFactory;\n\t}\n\n\tprivate Settings getSettings() {\n\t\treturn settings;\n\t}\n\n\tprivate List<Stockpile> getStockpiles() {\n\t\treturn stockpilesList;\n\t}\n\n\tprivate Map<String, List<Value>> getTrackerDataMap() {\n\t\treturn trackerDataMap;\n\t}\n\n\tprivate Map<String, RouteResult> getRoutes() {\n\t\treturn routes;\n\t}\n\n\tpublic static List<Stockpile> loadStockpile(final String filename) {\n\t\tSettingsReader reader = new SettingsReader(ReaderType.STOCKPILE);\n\t\tif (reader.read(filename, filename, XmlType.IMPORT)) {\n\t\t\treturn reader.getStockpiles();\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic static Map<String, List<Value>> loadTracker(final String filename) {\n\t\tSettingsReader reader = new SettingsReader(ReaderType.TRACKER);\n\t\tif (reader.read(filename, filename, XmlType.IMPORT)) {\n\t\t\treturn reader.getTrackerDataMap();\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic static Map<String, RouteResult> loadRoutes(final String filename) {\n\t\tSettingsReader reader = new SettingsReader(ReaderType.ROUTES);\n\t\tif (reader.read(filename, filename, XmlType.IMPORT)) {\n\t\t\treturn reader.getRoutes();\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t@Override\n\tprotected Boolean parse(Element element) throws XmlException {\n\t\tswitch (readerType) {\n\t\t\tcase SETTINGS:\n\t\t\t\tsettings = loadSettings(element, settingsFactory.create());\n\t\t\t\tbreak;\n\t\t\tcase STOCKPILE:\n\t\t\t\tstockpilesList = loadStockpile(element);\n\t\t\t\tbreak;\n\t\t\tcase TRACKER:\n\t\t\t\ttrackerDataMap = loadTracker(element);\n\t\t\t\tbreak;\n\t\t\tcase ROUTES:\n\t\t\t\troutes = loadRoutes(element);\n\t\t\t\tbreak;\n\t\t}\n\t\treturn true;\n\t}\n\n\t@Override\n\tprotected Boolean failValue() {\n\t\treturn false;\n\t}\n\n\t@Override\n\tprotected Boolean doNotExistValue() {\n\t\treturn true;\n\t}\n\n\tprivate Map<String, List<Value>> loadTracker(final Element element) throws XmlException {\n\t\tif (!element.getNodeName().equals(\"settings\")) {\n\t\t\tthrow new XmlException(\"Wrong root element name.\");\n\t\t}\n\t\t//Tracker Data\n\t\tNodeList trackerDataNodes = element.getElementsByTagName(\"trackerdata\");\n\t\tif (trackerDataNodes.getLength() == 1) {\n\t\t\tElement trackerDataElement = (Element) trackerDataNodes.item(0);\n\t\t\treturn parseTrackerData(trackerDataElement);\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate List<Stockpile> loadStockpile(final Element element) throws XmlException {\n\t\tif (!element.getNodeName().equals(\"settings\")) {\n\t\t\tthrow new XmlException(\"Wrong root element name.\");\n\t\t}\n\t\t//Stockpiles\n\t\tList<Stockpile> stockpiles = new ArrayList<>();\n\t\tNodeList stockpilesNodes = element.getElementsByTagName(\"stockpiles\");\n\t\tif (stockpilesNodes.getLength() == 1) {\n\t\t\tElement stockpilesElement = (Element) stockpilesNodes.item(0);\n\t\t\tparseStockpiles(stockpilesElement, stockpiles, null);\n\t\t}\n\t\treturn stockpiles;\n\t}\n\n\tprivate Map<String, RouteResult> loadRoutes(final Element element) throws XmlException {\n\t\tif (!element.getNodeName().equals(\"settings\")) {\n\t\t\tthrow new XmlException(\"Wrong root element name.\");\n\t\t}\n\t\t//Routing\n\t\tMap<String, RouteResult> map = new HashMap<>();\n\t\tElement routingElement = getNodeOptional(element, \"routingsettings\");\n\t\tif (routingElement != null) {\n\t\t\tparseRoutes(routingElement, map);\n\t\t}\n\t\treturn map;\n\t}\n\n\tprivate Settings loadSettings(final Element element, final Settings settings) throws XmlException {\n\t\tif (!element.getNodeName().equals(\"settings\")) {\n\t\t\tthrow new XmlException(\"Wrong root element name.\");\n\t\t}\n\n\t\t//Manufacturing Prices\n\t\tElement manufacturingElement = getNodeOptional(element, \"manufacturing\");\n\t\tif (manufacturingElement != null) {\n\t\t\tparseManufacturingPriceSettings(manufacturingElement, settings);\n\t\t}\n\n\t\t//Price History\n\t\tElement priceHistoryElement = getNodeOptional(element, \"pricehistory\");\n\t\tif (priceHistoryElement != null) {\n\t\t\tparsePriceHistorySettings(priceHistoryElement, settings);\n\t\t}\n\n\t\t//Faction Warfare System Owners\n\t\tElement factionWarfareSystemOwnersElement = getNodeOptional(element, \"factionwarfaresystemowners\");\n\t\tif (factionWarfareSystemOwnersElement != null) {\n\t\t\tparseFactionWarfareSystemOwners(factionWarfareSystemOwnersElement, settings);\n\t\t}\n\n\t\t//Color Settings\n\t\tElement colorSettingsElement = getNodeOptional(element, \"colorsettings\");\n\t\tif (colorSettingsElement != null) {\n\t\t\tparseColorSettings(colorSettingsElement, settings);\n\t\t}\n\n\t\t//Sound Settings\n\t\tElement soundSettingsElement = getNodeOptional(element, \"soundsettings\");\n\t\tif (soundSettingsElement != null) {\n\t\t\tparseSoundSettings(soundSettingsElement, settings);\n\t\t}\n\n\t\t//Tracker Settings\n\t\tElement trackerSettingsElement = getNodeOptional(element, \"trackersettings\");\n\t\tif (trackerSettingsElement != null) {\n\t\t\tparseTrackerSettings(trackerSettingsElement, settings);\n\t\t}\n\n\t\t//Show Tools\n\t\tElement showToolsElement = getNodeOptional(element, \"showtools\");\n\t\tif (showToolsElement != null) {\n\t\t\tparseShowToolsNodes(showToolsElement, settings);\n\t\t}\n\n\t\t//Outbid\n\t\tElement marketOrderOutbidElement = getNodeOptional(element, \"marketorderoutbid\");\n\t\tif (marketOrderOutbidElement != null) {\n\t\t\tparseMarketOrderOutbidNodes(marketOrderOutbidElement, settings);\n\t\t}\n\n\t\t//Routing\n\t\tElement routingElement = getNodeOptional(element, \"routingsettings\");\n\t\tif (routingElement != null) {\n\t\t\tparseRoutingSettings(routingElement, settings);\n\t\t}\n\n\t\t//Jumps Avoid\n\t\tElement jumpsElement = getNodeOptional(element, \"jumpssettings\");\n\t\tif (jumpsElement != null) {\n\t\t\tparseJumpsSettings(jumpsElement, settings);\n\t\t}\n\n\t\t//Tags - Must be loaded before stockpiles (and everything else that uses tags)\n\t\tElement tagsElement = getNodeOptional(element, \"tags\");\n\t\tif (tagsElement != null) {\n\t\t\tparseTags(tagsElement, settings);\n\t\t}\n\n\t\t//Owners\n\t\tElement ownersElement = getNodeOptional(element, \"owners\");\n\t\tif (ownersElement != null) {\n\t\t\tparseOwners(ownersElement, settings);\n\t\t}\n\n\t\t//Tracker Data\n\t\tElement trackerDataElement = getNodeOptional(element, \"trackerdata\");\n\t\tif (trackerDataElement != null) {\n\t\t\tMap<String, List<Value>> trackerData = parseTrackerData(trackerDataElement);\n\t\t\tTrackerData.set(trackerData);\n\t\t}\n\n\t\t//Tracker Data\n\t\tElement trackerNoteElement = getNodeOptional(element, \"trackernotes\");\n\t\tif (trackerNoteElement != null) {\n\t\t\tparseTrackerNotes(trackerNoteElement, settings);\n\t\t}\n\n\t\t//Tracker Filters\n\t\tElement trackerFilterElement = getNodeOptional(element, \"trackerfilters\");\n\t\tif (trackerFilterElement != null) {\n\t\t\tparseTrackerFilters(trackerFilterElement, settings);\n\t\t}\n\n\t\t//Asset Settings\n\t\tElement assetSettingsElement = getNodeOptional(element, \"assetsettings\");\n\t\tif (assetSettingsElement != null) {\n\t\t\tparseAssetSettings(assetSettingsElement, settings);\n\t\t}\n\n\t\t//Stockpiles\n\t\tElement stockpilesElement = getNodeOptional(element, \"stockpiles\");\n\t\tif (stockpilesElement != null) {\n\t\t\tparseStockpiles(stockpilesElement, settings.getStockpiles(), settings.getStockpileGroupSettings());\n\t\t}\n\n\t\t//Stockpile Groups\n\t\tElement stockpileGroupsElement = getNodeOptional(element, \"stockpilegroups\");\n\t\tif (stockpileGroupsElement != null) {\n\t\t\tparseStockpileGroups(stockpileGroupsElement, settings);\n\t\t}\n\n\t\t//Export Settings\n\t\t//Legacy support for 6.8.0 and later\n\t\t//TODO: Remove support at some future date\n\t\tElement exportElementLegacy = getNodeOptional(element, \"csvexport\");\n\t\tif (exportElementLegacy != null) {\n\t\t\tparseExportSettingsLegacy(exportElementLegacy, settings);\n\t\t}\n\n\t\t//Export Settings\n\t\tElement exportElement = getNodeOptional(element, \"exports\");\n\t\tif (exportElement != null) {\n\t\t\tparseExportSettings(exportElement, settings);\n\t\t}\n\n\t\t//Import Settings\n\t\tElement importElement = getNodeOptional(element, \"imports\");\n\t\tif (importElement != null) {\n\t\t\tparseImportSettings(importElement, settings);\n\t\t}\n\n\t\t//Overview\n\t\tElement overviewElement = getNodeOptional(element, \"overview\");\n\t\tif (overviewElement != null) {\n\t\t\tparseOverview(overviewElement, settings);\n\t\t}\n\n\t\t//Window\n\t\tElement windowElement = getNodeOptional(element, \"window\");\n\t\tif (windowElement != null) {\n\t\t\tparseWindow(windowElement, settings);\n\t\t}\n\n\t\t//Reprocessing\n\t\tElement reprocessingElement = getNodeOptional(element, \"reprocessing\");\n\t\tif (reprocessingElement != null) {\n\t\t\tparseReprocessing(reprocessingElement, settings);\n\t\t}\n\n\t\t//UserPrices\n\t\tElement userPriceElement = getNode(element, \"userprices\");\n\t\tparseUserPrices(userPriceElement, settings);\n\n\t\t//User Item Names\n\t\tElement userItemNameElement = getNodeOptional(element, \"itemmames\");\n\t\tif (userItemNameElement != null) {\n\t\t\tparseUserItemNames(userItemNameElement, settings);\n\t\t}\n\n\t\t//Eve Item Names\n\t\tElement eveNameElement = getNodeOptional(element, \"evenames\");\n\t\tif (eveNameElement != null) {\n\t\t\tparseEveNames(eveNameElement, settings);\n\t\t}\n\n\t\t//PriceDataSettings\n\t\tElement priceDataSettingsElement = getNode(element, \"marketstat\");\n\t\tparsePriceDataSettings(priceDataSettingsElement, settings);\n\n\t\t//MarketOrdersSettings\n\t\tElement marketOrdersSettingsElement = getNodeOptional(element, \"marketorderssettings\");\n\t\tif (marketOrdersSettingsElement != null) {\n\t\t\tparseMarketOrdersSettings(marketOrdersSettingsElement, settings);\n\t\t}\n\n\t\t//Flags\n\t\tElement flagsElement = getNode(element, \"flags\");\n\t\tparseFlags(flagsElement, settings);\n\n\t\t//Table Changes\n\t\tElement tableChangesElement = getNodeOptional(element, \"tablechanges\");\n\t\tif (tableChangesElement != null) {\n\t\t\tparseTableChanges(tableChangesElement, settings);\n\t\t}\n\n\t\t//Table Formulas (Must be loaded before filters)\n\t\tElement tableFormulasElement = getNodeOptional(element, \"tableformulas\");\n\t\tif (tableFormulasElement != null) {\n\t\t\tparseTableFormulas(tableFormulasElement, settings);\n\t\t}\n\n\t\t//Table Jumps (Must be loaded before filters)\n\t\tElement tableJumpsElement = getNodeOptional(element, \"tablejumps\");\n\t\tif (tableJumpsElement != null) {\n\t\t\tparseTableJumps(tableJumpsElement, settings);\n\t\t}\n\n\t\t// Skill Plans\n\t\tElement skillPlansElement = getNodeOptional(element, \"skillplans\");\n\t\tif (skillPlansElement != null) {\n\t\t\tparseSkillPlans(skillPlansElement, settings);\n\t\t}\n\n\t\t//Table Filters (Must be loaded before Asset Filters)\n\t\tElement tablefiltersElement = getNodeOptional(element, \"tablefilters\");\n\t\tif (tablefiltersElement != null) {\n\t\t\tparseTableFilters(tablefiltersElement, settings);\n\t\t}\n\n\t\t//Current Table Filters (Must be loaded before Asset Filters)\n\t\tElement currentTableFiltersElement = getNodeOptional(element, \"currenttablefilters\");\n\t\tif (currentTableFiltersElement != null) {\n\t\t\tparseCurrentTableFilters(currentTableFiltersElement, settings);\n\t\t}\n\n\t\t//Current Table Filters (Must be loaded before Asset Filters)\n\t\tElement currentTableSortingElement = getNodeOptional(element, \"currenttablesorting\");\n\t\tif (currentTableSortingElement != null) {\n\t\t\tparseCurrentTableSorting(currentTableSortingElement, settings);\n\t\t}\n\n\t\t//Asset Filters\n\t\tElement filtersElement = getNodeOptional(element, \"filters\");\n\t\tif (filtersElement != null) {\n\t\t\tparseAssetFilters(filtersElement, settings);\n\t\t}\n\n\t\t//Table Columns\n\t\tElement tablecolumnsElement = getNodeOptional(element, \"tablecolumns\");\n\t\tif (tablecolumnsElement != null) {\n\t\t\tparseTableColumns(tablecolumnsElement, settings);\n\t\t}\n\n\t\t//Table Columns Width\n\t\tElement tableColumnsWidthElement = getNodeOptional(element, \"tablecolumnswidth\");\n\t\tif (tableColumnsWidthElement != null) {\n\t\t\tparseTableColumnsWidth(tableColumnsWidthElement, settings);\n\t\t}\n\n\t\t//Table Resize\n\t\tElement tableResizeElement = getNodeOptional(element, \"tableresize\");\n\t\tif (tableResizeElement != null) {\n\t\t\tparseTableResize(tableResizeElement, settings);\n\t\t}\n\n\t\t//Table Views\n\t\tElement tableViewsElement = getNodeOptional(element, \"tableviews\");\n\t\tif (tableViewsElement != null) {\n\t\t\tparseTableViews(tableViewsElement, settings);\n\t\t}\n\n\t\t//Asset added\n\t\tElement assetaddedElement = getNodeOptional(element, \"assetadded\");\n\t\tif (assetaddedElement != null) {\n\t\t\tparseAssetAdded(assetaddedElement);\n\t\t}\n\n\t\t// Proxy can have 0 or 1 proxy elements; at 0, the proxy stays as null.\n\t\tElement proxyElement = getNodeOptional(element, \"proxy\");\n\t\tif (proxyElement != null) {\n\t\t\tparseProxy(proxyElement, settings);\n\t\t}\n\t\treturn settings;\n\t}\n\n\tprivate void parseSkillPlans(final Element element, final Settings settings) throws XmlException {\n\t\tNodeList planNodes = element.getElementsByTagName(\"plan\");\n\t\tfor (int i = 0; i < planNodes.getLength(); i++) {\n\t\t\tElement planNode = (Element) planNodes.item(i);\n\t\t\tString name = getString(planNode, \"name\");\n\t\t\tMap<Integer, Integer> map = new HashMap<>();\n\t\t\tNodeList reqNodes = planNode.getElementsByTagName(\"req\");\n\t\t\tfor (int j = 0; j < reqNodes.getLength(); j++) {\n\t\t\t\tElement reqNode = (Element) reqNodes.item(j);\n\t\t\t\tint typeId = getInt(reqNode, \"typeid\");\n\t\t\t\tint level = getInt(reqNode, \"level\");\n\t\t\t\tmap.put(typeId, level);\n\t\t\t}\n\t\t\tsettings.getSkillPlans().put(name, map);\n\t\t}\n\t}\n\n\tprivate void parseOwners(final Element element, final Settings settings) throws XmlException {\n\t\tlong ONE_DAY = 1000 * 60 * 60 * 24;\n\t\tNodeList ownerNodeList = element.getElementsByTagName(\"owner\");\n\t\tint count = 1;\n\t\tfor (int i = 0; i < ownerNodeList.getLength(); i++) {\n\t\t\t//Read Owner\n\t\t\tElement ownerNode = (Element) ownerNodeList.item(i);\n\t\t\tString ownerName = getString(ownerNode, \"name\");\n\t\t\tlong ownerID = getLong(ownerNode, \"id\");\n\t\t\tDate date = getDateOptional(ownerNode, \"date\");\n\t\t\tif (date == null) { //1-30 days from now\n\t\t\t\tdate = new Date(System.currentTimeMillis() + (ONE_DAY * count));\n\t\t\t\tcount++;\n\t\t\t\tif (count > 30) {\n\t\t\t\t\tcount = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tsettings.getOwners().put(ownerID, ownerName);\n\t\t\tsettings.getOwnersNextUpdate().put(ownerID, date);\n\t\t}\n\t}\n\n\tprivate Map<String, List<Value>> parseTrackerData(final Element element) throws XmlException {\n\t\tMap<String, List<Value>> trackerData = new HashMap<>();\n\t\tNodeList tableNodeList = element.getElementsByTagName(\"owner\");\n\t\tfor (int a = 0; a < tableNodeList.getLength(); a++) {\n\t\t\t//Read Owner\n\t\t\tElement ownerNode = (Element) tableNodeList.item(a);\n\t\t\tString owner = getString(ownerNode, \"name\");\n\t\t\t//Ignore grand total, not used anymore\n\t\t\tif (owner.isEmpty()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t//Data\n\t\t\tNodeList dataNodeList = ownerNode.getElementsByTagName(\"data\");\n\t\t\tfor (int b = 0; b < dataNodeList.getLength(); b++) {\n\t\t\t\t//Read data\n\t\t\t\tElement dataNode = (Element) dataNodeList.item(b);\n\t\t\t\tDate date = getDate(dataNode, \"date\");\n\t\t\t\tdouble assetsTotal = getDouble(dataNode, \"assets\");\n\t\t\t\tdouble escrows = getDouble(dataNode, \"escrows\");\n\t\t\t\tdouble escrowstocover = getDouble(dataNode, \"escrowstocover\");\n\t\t\t\tdouble sellorders = getDouble(dataNode, \"sellorders\");\n\t\t\t\tdouble balanceTotal = getDouble(dataNode, \"walletbalance\");\n\t\t\t\tdouble manufacturing = getDoubleNotNull(dataNode, \"manufacturing\", 0.0);\n\t\t\t\tdouble contractCollateral = getDoubleNotNull(dataNode, \"contractcollateral\", 0.0);\n\t\t\t\tdouble contractValue = getDoubleNotNull(dataNode, \"contractvalue\", 0.0);\n\t\t\t\t//Add data\n\t\t\t\tValue value = new Value(date);\n\t\t\t\t//Balance\n\t\t\t\tNodeList balanceNodeList = dataNode.getElementsByTagName(\"balance\");\n\t\t\t\tfor (int c = 0; c < balanceNodeList.getLength(); c++) { //New data\n\t\t\t\t\tElement balanceNode = (Element) balanceNodeList.item(c);\n\t\t\t\t\tString id = getString(balanceNode, \"id\");\n\t\t\t\t\tdouble balance = getDouble(balanceNode, \"value\");\n\t\t\t\t\tvalue.addBalance(id, balance);\n\t\t\t\t}\n\t\t\t\tif (balanceNodeList.getLength() == 0) { //Old data\n\t\t\t\t\tvalue.setBalanceTotal(balanceTotal);\n\t\t\t\t}\n\t\t\t\t//Assets\n\t\t\t\tNodeList assetNodeList = dataNode.getElementsByTagName(\"asset\");\n\t\t\t\tfor (int c = 0; c < assetNodeList.getLength(); c++) { //New data\n\t\t\t\t\tElement assetNode = (Element) assetNodeList.item(c);\n\t\t\t\t\tAssetValue assetValue = parseAssetValue(assetNode);\n\t\t\t\t\tdouble assets = getDouble(assetNode, \"value\");\n\t\t\t\t\tvalue.addAssets(assetValue, assets);\n\t\t\t\t}\n\t\t\t\tif (assetNodeList.getLength() == 0) { //Old data\n\t\t\t\t\tvalue.setAssetsTotal(assetsTotal);\n\t\t\t\t}\n\t\t\t\tvalue.setEscrows(escrows);\n\t\t\t\tvalue.setEscrowsToCover(escrowstocover);\n\t\t\t\tvalue.setSellOrders(sellorders);\n\t\t\t\tvalue.setManufacturing(manufacturing);\n\t\t\t\tvalue.setContractCollateral(contractCollateral);\n\t\t\t\tvalue.setContractValue(contractValue);\n\t\t\t\tList<Value> list = trackerData.get(owner);\n\t\t\t\tif (list == null) {\n\t\t\t\t\tlist = new ArrayList<>();\n\t\t\t\t\ttrackerData.put(owner, list);\n\t\t\t\t}\n\t\t\t\tlist.add(value);\n\t\t\t}\n\t\t}\n\t\treturn trackerData;\n\t}\n\n\tprivate AssetValue parseAssetValue(Element node) throws XmlException {\n\t\tif (haveAttribute(node, \"id\")) {\n\t\t\tString id = getString(node, \"id\");\n\t\t\treturn AssetValue.create(id);\n\t\t} else {\n\t\t\tString location = getString(node, \"location\");\n\t\t\tLong locationID = getLongOptional(node, \"locationid\");\n\t\t\tString flag = getStringOptional(node, \"flag\");\n\t\t\treturn AssetValue.create(location, flag, locationID);\n\t\t}\n\t}\n\n\tprivate void parseTrackerNotes(final Element element, final Settings settings) throws XmlException {\n\t\tNodeList noteNodeList = element.getElementsByTagName(\"trackernote\");\n\t\tfor (int a = 0; a < noteNodeList.getLength(); a++) {\n\t\t\t//Read Owner\n\t\t\tElement noteNode = (Element) noteNodeList.item(a);\n\t\t\tString note = getString(noteNode, \"note\");\n\t\t\tDate date = getDate(noteNode, \"date\");\n\t\t\tsettings.getTrackerSettings().getNotes().put(new TrackerDate(date), new TrackerNote(note));\n\t\t}\n\t}\n\n\tprivate void parseTrackerFilters(final Element element, final Settings settings) throws XmlException {\n\t\tNodeList tableNodeList = element.getElementsByTagName(\"trackerfilter\");\n\t\tboolean selectNew = getBoolean(element, \"selectnew\");\n\t\tsettings.getTrackerSettings().setSelectNew(selectNew);\n\t\tfor (int a = 0; a < tableNodeList.getLength(); a++) {\n\t\t\tElement trackerFilterNode = (Element) tableNodeList.item(a);\n\t\t\tString id = getString(trackerFilterNode, \"id\");\n\t\t\tboolean selected = getBoolean(trackerFilterNode, \"selected\");\n\t\t\tsettings.getTrackerSettings().getFilters().put(id, selected);\n\t\t}\n\t\tNodeList skillPointFiltersList = element.getElementsByTagName(\"skillpointfilters\");\n\t\tfor (int a = 0; a < skillPointFiltersList.getLength(); a++) {\n\t\t\tElement filterNode = (Element) skillPointFiltersList.item(a);\n\t\t\tString id = getString(filterNode, \"id\");\n\t\t\tboolean selected = getBoolean(filterNode, \"selected\");\n\t\t\tlong mimimum = getLong(filterNode, \"mimimum\");\n\t\t\tsettings.getTrackerSettings().getSkillPointFilters().put(id, new TrackerSkillPointFilter(id, selected, mimimum));\n\t\t}\n\t}\n\n\tprivate void parseAssetSettings(final Element assetSettingsElement, final Settings settings) throws XmlException {\n\t\tint maximumPurchaseAge = getInt(assetSettingsElement, \"maximumpurchaseage\");\n\t\tTransactionProfitPrice transactionProfitPrice = TransactionProfitPrice.LASTEST;\n\t\tif (haveAttribute(assetSettingsElement, \"transactionprofitprice\")) {\n\t\t\ttry {\n\t\t\t\ttransactionProfitPrice = TransactionProfitPrice.valueOf(getString(assetSettingsElement, \"transactionprofitprice\"));\n\t\t\t} catch (IllegalArgumentException ex) {\n\t\t\t\t//No problem already set\n\t\t\t}\n\t\t}\n\t\tint transactionProfitMargin = getIntNotNull(assetSettingsElement, \"transactionprofitmargin\", 0);\n\t\tsettings.setTransactionProfitPrice(transactionProfitPrice);\n\t\tsettings.setMaximumPurchaseAge(maximumPurchaseAge);\n\t\tsettings.setTransactionProfitMargin(transactionProfitMargin);\n\t}\n\n\tprivate void parseStockpileGroups(final Element stockpilesElement, final Settings settings) throws XmlException {\n\t\tint group2 = getInt(stockpilesElement, \"stockpilegroup2\");\n\t\tint group3 = getInt(stockpilesElement, \"stockpilegroup3\");\n\t\tif (group2 <= 0) {\n\t\t\tgroup2 = 100;\n\t\t}\n\t\tsettings.setStockpileColorGroup2(group2);\n\t\tsettings.setStockpileColorGroup3(group3);\n\t}\n\n\t/**\n\t * -!- `!´ IMPORTANT `!´ -!-\n\t * StockpileDataWriter and StockpileDataReader needs to be updated too - on any changes!!!\n\t */\n\tprivate void parseStockpiles(final Element stockpilesElement, final List<Stockpile> stockpiles, StockpileGroupSettings stockpileGroupSettings) throws XmlException {\n\t\tNodeList stockpileNodes = stockpilesElement.getElementsByTagName(\"stockpile\");\n\t\tMap<String, Stockpile> stockpileMap = new HashMap<>();\n\t\tMap<Stockpile, Map<String, Double>> subpileMap = new HashMap<>();\n\t\tfor (int a = 0; a < stockpileNodes.getLength(); a++) {\n\t\t\tElement stockpileNode = (Element) stockpileNodes.item(a);\n\t\t\tString name = getString(stockpileNode, \"name\");\n\t\t\tLong stockpileID = getLongOptional(stockpileNode, \"id\"); //If null > get new id\n\t\t//LEGACY\n\t\t\t//Owners\n\t\t\tList<Long> ownerIDs = new ArrayList<>();\n\t\t\tif (haveAttribute(stockpileNode, \"characterid\")) {\n\t\t\t\tlong ownerID = getLong(stockpileNode, \"characterid\");\n\t\t\t\tif (ownerID > 0) {\n\t\t\t\t\townerIDs.add(ownerID);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//Containers\n\t\t\tList<StockpileContainer> containers = new ArrayList<>();\n\t\t\tif (haveAttribute(stockpileNode, \"container\")) {\n\t\t\t\tString container = getString(stockpileNode, \"container\");\n\t\t\t\tif (!container.equals(General.get().all())) {\n\t\t\t\t\tcontainers.add(new StockpileContainer(container, false));\n\t\t\t\t}\n\t\t\t}\n\t\t\t//Flags\n\t\t\tList<StockpileFlag> flags = new ArrayList<>();\n\t\t\tif (haveAttribute(stockpileNode, \"flagid\")) {\n\t\t\t\tint flagID = getInt(stockpileNode, \"flagid\");\n\t\t\t\tif (flagID > 0) {\n\t\t\t\t\tflags.add(new StockpileFlag(flagID, true));\n\t\t\t\t}\n\t\t\t}\n\t\t\t//Locations\n\t\t\tMyLocation location = null;\n\t\t\tif (haveAttribute(stockpileNode, \"locationid\")) {\n\t\t\t\tlong locationID = getLong(stockpileNode, \"locationid\");\n\t\t\t\tlocation = ApiIdConverter.getLocation(locationID);\n\t\t\t}\n\t\t\tboolean exclude = false;\n\t\t\t//Include\n\t\t\tBoolean inventory = getBooleanOptional(stockpileNode, \"inventory\");\n\t\t\tBoolean sellOrders = getBooleanOptional(stockpileNode, \"sellorders\");\n\t\t\tBoolean buyOrders = getBooleanOptional(stockpileNode, \"buyorders\");\n\t\t\tBoolean jobs = getBooleanOptional(stockpileNode, \"jobs\");\n\t\t\tList<StockpileFilter> filters = new ArrayList<>();\n\t\t\tif (inventory != null && sellOrders != null && buyOrders != null && jobs != null) {\n\t\t\t\tStockpileFilter filter = new StockpileFilter(location, exclude, flags, containers, ownerIDs, null, null, null, inventory, sellOrders, buyOrders, jobs, false, false, false, false, false, false);\n\t\t\t\tfilters.add(filter);\n\t\t\t}\n\t\t//NEW\n\t\t\tNodeList filterNodes = stockpileNode.getElementsByTagName(\"stockpilefilter\");\n\t\t\tfor (int b = 0; b < filterNodes.getLength(); b++) {\n\t\t\t\tElement filterNode = (Element) filterNodes.item(b);\n\t\t\t\t//Include\n\t\t\t\tboolean filterExclude = getBooleanNotNull(filterNode, \"exclude\", false);\n\t\t\t\tBoolean filterSingleton = getBooleanOptional(filterNode, \"singleton\");\n\t\t\t\tInteger filterJobsDaysLess = getIntOptional(filterNode, \"jobsdaysless\");\n\t\t\t\tInteger filterJobsDaysMore = getIntOptional(filterNode, \"jobsdaysmore\");\n\t\t\t\tboolean filterSellingContracts = getBooleanNotNull(filterNode, \"sellingcontracts\", false);\n\t\t\t\tboolean filterSoldBuy = getBooleanNotNull(filterNode, \"soldcontracts\", false);\n\t\t\t\tboolean filterBuyingContracts = getBooleanNotNull(filterNode, \"buyingcontracts\", false);\n\t\t\t\tboolean filterBoughtContracts = getBooleanNotNull(filterNode, \"boughtcontracts\", false);\n\t\t\t\tboolean filterInventory = getBoolean(filterNode, \"inventory\");\n\t\t\t\tboolean filterSellOrders = getBoolean(filterNode, \"sellorders\");\n\t\t\t\tboolean filterBuyOrders = getBoolean(filterNode, \"buyorders\");\n\t\t\t\tboolean filterBuyTransactions = getBooleanNotNull(filterNode, \"buytransactions\", false);\n\t\t\t\tboolean filterSellTransactions = getBooleanNotNull(filterNode, \"selltransactions\", false);\n\t\t\t\tboolean filterJobs = getBoolean(filterNode, \"jobs\");\n\t\t\t\t//Location\n\t\t\t\tlong locationID = getLong(filterNode, \"locationid\");\n\t\t\t\tlocation = ApiIdConverter.getLocation(locationID);\n\t\t\t\t//Owners\n\t\t\t\tList<Long> filterOwnerIDs = new ArrayList<>();\n\t\t\t\tNodeList ownerNodes = filterNode.getElementsByTagName(\"owner\");\n\t\t\t\tfor (int c = 0; c < ownerNodes.getLength(); c++) {\n\t\t\t\t\tElement ownerNode = (Element) ownerNodes.item(c);\n\t\t\t\t\tlong filterOwnerID = getLong(ownerNode, \"ownerid\");\n\t\t\t\t\tfilterOwnerIDs.add(filterOwnerID);\n\t\t\t\t}\n\t\t\t\t//Containers\n\t\t\t\tList<StockpileContainer> filterContainers = new ArrayList<>();\n\t\t\t\tNodeList containerNodes = filterNode.getElementsByTagName(\"container\");\n\t\t\t\tfor (int c = 0; c < containerNodes.getLength(); c++) {\n\t\t\t\t\tElement containerNode = (Element) containerNodes.item(c);\n\t\t\t\t\tString filterContainer = getString(containerNode, \"container\");\n\t\t\t\t\tboolean filterIncludeSubs = getBooleanNotNull(containerNode, \"includecontainer\", false);\n\t\t\t\t\tfilterContainers.add(new StockpileContainer(filterContainer, filterIncludeSubs));\n\t\t\t\t}\n\t\t\t\t//Flags\n\t\t\t\tList<StockpileFlag> filterFlags = new ArrayList<>();\n\t\t\t\tNodeList flagNodes = filterNode.getElementsByTagName(\"flag\");\n\t\t\t\tfor (int c = 0; c < flagNodes.getLength(); c++) {\n\t\t\t\t\tElement flagNode = (Element) flagNodes.item(c);\n\t\t\t\t\tint filterFlagID = getInt(flagNode, \"flagid\");\n\t\t\t\t\tboolean filterIncludeSubs = getBooleanNotNull(flagNode, \"includecontainer\", true);\n\t\t\t\t\tfilterFlags.add(new StockpileFlag(filterFlagID, filterIncludeSubs));\n\t\t\t\t}\n\t\t\t\tStockpileFilter stockpileFilter = new StockpileFilter(location, filterExclude, filterFlags, filterContainers, filterOwnerIDs, filterJobsDaysLess, filterJobsDaysMore, filterSingleton, filterInventory, filterSellOrders, filterBuyOrders, filterJobs, filterBuyTransactions, filterSellTransactions, filterSellingContracts, filterSoldBuy, filterBuyingContracts, filterBoughtContracts);\n\t\t\t\tfilters.add(stockpileFilter);\n\t\t\t}\n\t\t//SUBPILES\n\t\t\tNodeList subpileNodes = stockpileNode.getElementsByTagName(\"subpile\");\n\t\t\tMap<String, Double> subpileNames = new HashMap<>();\n\t\t\tfor (int b = 0; b < subpileNodes.getLength(); b++) {\n\t\t\t\tElement subpileNode = (Element) subpileNodes.item(b);\n\t\t\t\tString subpileName = getString(subpileNode, \"name\");\n\t\t\t\tdouble minimum = getDouble(subpileNode, \"minimum\");\n\t\t\t\tsubpileNames.put(subpileName, minimum);\n\t\t\t}\n\t\t//MULTIPLIER\n\t\t\tdouble multiplier = getDoubleNotNull(stockpileNode, \"multiplier\", 1);\n\t\t//GROUP\n\t\t\tString group = getStringOptional(stockpileNode, \"stockpilegroup\"); //Null is handled by settings\n\t\t//MATCH ALL\n\t\t\tboolean matchAll;\n\t\t\tif (haveAttribute(stockpileNode, \"contractsmatchall\")) {\n\t\t\t\tmatchAll = getBoolean(stockpileNode, \"contractsmatchall\");\n\t\t\t} else {\n\t\t\t\tmatchAll = getBooleanNotNull(stockpileNode, \"matchall\", false);\n\t\t\t}\n\n\t\t\tStockpile stockpile = new Stockpile(name, stockpileID, filters, multiplier, matchAll);\n\t\t\tif (stockpileGroupSettings != null) {\n\t\t\t\tstockpileGroupSettings.setGroup(stockpile, group);\n\t\t\t}\n\t\t\tstockpiles.add(stockpile);\n\t\t\tsubpileMap.put(stockpile, subpileNames);\n\t\t\tstockpileMap.put(name, stockpile);\n\t\t//ITEMS\n\t\t\tNodeList itemNodes = stockpileNode.getElementsByTagName(\"item\");\n\t\t\tfor (int b = 0; b < itemNodes.getLength(); b++) {\n\t\t\t\tElement itemNode = (Element) itemNodes.item(b);\n\t\t\t\tlong id;\n\t\t\t\tif (haveAttribute(itemNode, \"id\")) {\n\t\t\t\t\tid = getLong(itemNode, \"id\");\n\t\t\t\t} else {\n\t\t\t\t\tid = StockpileItem.getNewID();\n\t\t\t\t}\n\t\t\t\tint typeID = getInt(itemNode, \"typeid\");\n\t\t\t\tboolean runs = getBooleanNotNull(itemNode, \"runs\", false);\n\t\t\t\tboolean ignoreMultiplier = getBooleanNotNull(itemNode, \"ignoremultiplier\", false);\n\t\t\t\tdouble countMinimum = getDouble(itemNode, \"minimum\");\n\t\t\t\tif (typeID != 0) { //Ignore Total\n\t\t\t\t\tItem item = ApiIdConverter.getItemUpdate(Math.abs(typeID), true);\n\t\t\t\t\tStockpileItem stockpileItem = new StockpileItem(stockpile, item, typeID, countMinimum, runs, ignoreMultiplier, id);\n\t\t\t\t\tstockpile.add(stockpileItem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (Map.Entry<Stockpile, Map<String, Double>> entry : subpileMap.entrySet()) {\n\t\t\tfor (Map.Entry<String, Double> entry1 : entry.getValue().entrySet()) {\n\t\t\t\tStockpile stockpile = stockpileMap.get(entry1.getKey());\n\t\t\t\tif (stockpile != null) {\n\t\t\t\t\tentry.getKey().getSubpiles().put(stockpile, entry1.getValue());\n\t\t\t\t\tstockpile.addSubpileLink(entry.getKey());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tsubpileMap.clear();\n\t\tstockpileMap.clear();\n\t\tCollections.sort(stockpiles);\n\t}\n\n\tprivate void parseManufacturingPriceSettings(Element manufacturingElement, Settings settings) throws XmlException {\n\t\tManufacturingSettings manufacturingSettings = settings.getManufacturingSettings();\n\t\tDate nextUpdate = getDate(manufacturingElement, \"nextupdate\");\n\t\tManufacturingFacility facility;\n\t\ttry {\n\t\t\tfacility = ManufacturingFacility.valueOf(getString(manufacturingElement, \"facility\"));\n\t\t} catch (IllegalArgumentException ex) {\n\t\t\tfacility = ManufacturingFacility.getDefault();\n\t\t}\n\t\tManufacturingRigs rigs;\n\t\ttry {\n\t\t\trigs = ManufacturingRigs.valueOf(getString(manufacturingElement, \"rigs\"));\n\t\t} catch (IllegalArgumentException ex) {\n\t\t\trigs = ManufacturingRigs.getDefault();\n\t\t}\n\t\tManufacturingSecurity security;\n\t\ttry {\n\t\t\tsecurity = ManufacturingSecurity.valueOf(getString(manufacturingElement, \"security\"));\n\t\t} catch (IllegalArgumentException ex) {\n\t\t\tsecurity = ManufacturingSecurity.getDefault();\n\t\t}\n\t\tint system = getInt(manufacturingElement, \"systemid\");\n\t\tint materialEfficiency = getInt(manufacturingElement, \"me\");\n\t\tdouble tax = getDouble(manufacturingElement, \"tax\");\n\t\tmanufacturingSettings.setNextUpdate(nextUpdate);\n\t\tmanufacturingSettings.setFacility(facility);\n\t\tmanufacturingSettings.setRigs(rigs);\n\t\tmanufacturingSettings.setSecurity(security);\n\t\tmanufacturingSettings.setSystemID(system);\n\t\tmanufacturingSettings.setMaterialEfficiency(materialEfficiency);\n\t\tmanufacturingSettings.setTax(tax);\n\t\t//Manufacturing Adjusted Prices\n\t\tMap<Integer, Double> manufacturingPrices = new HashMap<>();\n\t\tNodeList priceNodes = manufacturingElement.getElementsByTagName(\"price\");\n\t\tfor (int a = 0; a < priceNodes.getLength(); a++) {\n\t\t\tElement priceNode = (Element) priceNodes.item(a);\n\t\t\tint typeID = getInt(priceNode, \"typeid\");\n\t\t\tdouble price = getDouble(priceNode, \"price\");\n\t\t\tmanufacturingPrices.put(typeID, price);\n\t\t}\n\t\tmanufacturingSettings.setPrices(manufacturingPrices);\n\n\t\tMap<Integer, Float> manufacturingSystems = new HashMap<>();\n\t\tNodeList systemNodes = manufacturingElement.getElementsByTagName(\"system\");\n\t\tfor (int a = 0; a < systemNodes.getLength(); a++) {\n\t\t\tElement systemNode = (Element) systemNodes.item(a);\n\t\t\tint systemID = getInt(systemNode, \"systemid\");\n\t\t\tfloat index = getFloat(systemNode, \"index\");\n\t\t\tmanufacturingSystems.put(systemID, index);\n\t\t}\n\n\t\tmanufacturingSettings.setSystems(manufacturingSystems);\n\t}\n\n\tprivate void parsePriceHistorySettings(Element priceHistoryElement, Settings settings) throws XmlException {\n\t\tNodeList priceListNodes = priceHistoryElement.getElementsByTagName(\"set\");\n\t\tfor (int a = 0; a < priceListNodes.getLength(); a++) {\n\t\t\tElement priceListNode = (Element) priceListNodes.item(a);\n\t\t\tString name = getString(priceListNode, \"name\");\n\t\t\tSet<Integer> typeIDs = new HashSet<>();\n\t\t\taddIntToList(priceListNode, \"ids\", typeIDs);\n\t\t\tsettings.getPriceHistorySets().put(name, typeIDs);\n\t\t}\n\t}\n\n\tprivate void parseFactionWarfareSystemOwners(Element factionWarfareSystemOwnersElement, Settings settings) throws XmlException {\n\t\tDate factionWarfareNextUpdate = getDateNotNull(factionWarfareSystemOwnersElement, \"factionwarfarenextupdate\");\n\t\tsettings.setFactionWarfareNextUpdate(factionWarfareNextUpdate);\n\t\tNodeList systemNodes = factionWarfareSystemOwnersElement.getElementsByTagName(\"system\");\n\t\tsettings.getFactionWarfareSystemOwners().clear();\n\t\tfor (int a = 0; a < systemNodes.getLength(); a++) {\n\t\t\tElement systemNode = (Element) systemNodes.item(a);\n\t\t\tlong systemID = getLong(systemNode, \"system\");\n\t\t\tString faction = getString(systemNode, \"faction\");\n\t\t\tsettings.getFactionWarfareSystemOwners().put(systemID, faction);\n\t\t}\n\t}\n\n\tprivate void parseColorSettings(Element colorSettingsElement, Settings settings) throws XmlException {\n\t\tNodeList colorNodes = colorSettingsElement.getElementsByTagName(\"color\");\n\t\tfor (int a = 0; a < colorNodes.getLength(); a++) {\n\t\t\tElement colorNode = (Element) colorNodes.item(a);\n\t\t\ttry {\n\t\t\t\tColorEntry entry = ColorEntry.valueOf(getString(colorNode, \"name\"));\n\t\t\t\tColor background = getColorOptional(colorNode, \"background\");\n\t\t\t\tColor foreground = getColorOptional(colorNode, \"foreground\");\n\t\t\t\tsettings.getColorSettings().setBackground(entry, background);\n\t\t\t\tsettings.getColorSettings().setForeground(entry, foreground);\n\t\t\t} catch (IllegalArgumentException ex) {\n\t\t\t\tLOG.error(ex.getMessage(), ex);\n\t\t\t}\n\t\t}\n\t\tString theme = getStringOptional(colorSettingsElement, \"theme\");\n\t\tColorThemeTypes colorThemeTypes;\n\t\ttry {\n\t\t\tcolorThemeTypes = ColorThemeTypes.valueOf(theme);\n\t\t} catch (IllegalArgumentException ex) {\n\t\t\tLOG.error(ex.getMessage(), ex);\n\t\t\tcolorThemeTypes = ColorThemeTypes.DEFAULT;\n\t\t}\n\t\tsettings.getColorSettings().setColorTheme(colorThemeTypes.getInstance(), false);\n\t\tString lookAndFeelClass = getStringOptional(colorSettingsElement, \"lookandfeel\");\n\t\tif (lookAndFeelClass != null) {\n\t\t\tsettings.getColorSettings().setLookAndFeelClass(lookAndFeelClass);\n\t\t}\n\t}\n\n\tprivate void parseSoundSettings(Element colorSettingsElement, Settings settings) throws XmlException {\n\t\tNodeList soundNodes = colorSettingsElement.getElementsByTagName(\"sound\");\n\t\tfor (int a = 0; a < soundNodes.getLength(); a++) {\n\t\t\tElement soundNode = (Element) soundNodes.item(a);\n\t\t\tSoundOption option = SoundOption.valueOf(getString(soundNode, \"option\"));\n\t\t\tString sound = getString(soundNode, \"sound\");\n\t\t\ttry {\n\t\t\t\tsettings.getSoundSettings().put(option, DefaultSound.valueOf(sound));\n\t\t\t} catch (IllegalArgumentException ex) {\n\t\t\t\tFile file = new File(FileUtil.getPathSounds(sound));\n\t\t\t\tif (file.exists()) {\n\t\t\t\t\tsettings.getSoundSettings().put(option, new FileSound(file));\n\t\t\t\t} else {\n\t\t\t\t\tsettings.getSoundSettings().put(option, DefaultSound.BEEP); //Fallback\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void parseTrackerSettings(Element trackerSettingsElement, Settings settings) throws XmlException {\n\t\tTrackerSettings trackerSettings = settings.getTrackerSettings();\n\t\tboolean allProfiles = getBoolean(trackerSettingsElement, \"allprofiles\");\n\t\ttrackerSettings.setAllProfiles(allProfiles);\n\n\t\tboolean characterCorporations = getBoolean(trackerSettingsElement, \"charactercorporations\");\n\t\ttrackerSettings.setCharacterCorporations(characterCorporations);\n\n\t\tList<String> selectedOwners = getStringListOptional(trackerSettingsElement, \"selectedowners\");\n\t\ttrackerSettings.setSelectedOwners(selectedOwners);\n\n\t\tDate fromDate = getDateOptional(trackerSettingsElement, \"fromdate\");\n\t\ttrackerSettings.setFromDate(fromDate);\n\n\t\tDate toDate = getDateOptional(trackerSettingsElement, \"todate\");\n\t\ttrackerSettings.setToDate(toDate);\n\n\t\tString displayType = getStringOptional(trackerSettingsElement, \"displaytype\");\n\t\tif (displayType != null) {\n\t\t\ttry {\n\t\t\t\ttrackerSettings.setDisplayType(DisplayType.valueOf(displayType));\n\t\t\t} catch (IllegalArgumentException e) {\n\t\t\t\tLOG.warn(\"Could not parse trackersettigns displaytype: \" + displayType);\n\t\t\t}\n\t\t}\n\n\t\tBoolean includeZero = getBooleanOptional(trackerSettingsElement, \"includezero\");\n\t\tif (includeZero != null) {\n\t\t\ttrackerSettings.setIncludeZero(includeZero);\n\t\t}\n\n\t\tList<String> showOptions = getStringListOptional(trackerSettingsElement, \"showoptions\");\n\t\tif (showOptions != null) {\n\t\t\ttrackerSettings.getShowOptions().clear();\n\t\t\tif (!showOptions.isEmpty()) {\n\t\t\t\tfor (String showOption : showOptions) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\ttrackerSettings.getShowOptions().add(ShowOption.valueOf(showOption));\n\t\t\t\t\t} catch (IllegalArgumentException e) {\n\t\t\t\t\t\tLOG.warn(\"Could not parse trackersettigns showoptions: \" + showOption);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void parseShowToolsNodes(Element showToolsElement, Settings settings) throws XmlException {\n\t\tboolean saveOnExit = getBoolean(showToolsElement, \"saveonexit\");\n\t\tList<String> showTools = getStringList(showToolsElement, \"show\");\n\t\tint index = showTools.indexOf(\"Industry Slots\");\n\t\tif (index >= 0) {\n\t\t\tshowTools.set(index, \"Slots\");\n\t\t}\n\t\tsettings.setSaveToolsOnExit(saveOnExit);\n\t\tsettings.getShowTools().addAll(showTools);\n\t}\n\n\tprivate void parseMarketOrderOutbidNodes(Element marketOrderOutbidElement, Settings settings) throws XmlException {\n\t\tDate nextUpdate = getDate(marketOrderOutbidElement, \"nextupdate\");\n\t\tsettings.setPublicMarketOrdersNextUpdate(nextUpdate);\n\t\tDate lastUpdate = getDateOptional(marketOrderOutbidElement, \"lastupdate\");\n\t\tsettings.setPublicMarketOrdersLastUpdate(lastUpdate);\n\t\tMarketOrderRange outbidOrderRange;\n\t\ttry {\n\t\t\toutbidOrderRange = MarketOrderRange.valueOf(getString(marketOrderOutbidElement, \"outbidorderrange\"));\n\t\t} catch (IllegalArgumentException ex) {\n\t\t\toutbidOrderRange = MarketOrderRange.REGION;\n\t\t}\n\t\tsettings.setOutbidOrderRange(outbidOrderRange);\n\t\tNodeList outbidNodes = marketOrderOutbidElement.getElementsByTagName(\"outbid\");\n\t\tfor (int a = 0; a < outbidNodes.getLength(); a++) {\n\t\t\tElement outbidNode = (Element) outbidNodes.item(a);\n\t\t\tlong orderID = getLong(outbidNode, \"id\");\n\t\t\tdouble price = getDouble(outbidNode, \"price\");\n\t\t\tlong count = getLong(outbidNode, \"count\");\n\t\t\tsettings.getMarketOrdersOutbid().put(orderID, new Outbid(price, count));\n\t\t}\n\t}\n\n\tprivate void parseRoutingSettings(Element routingElement, Settings settings) throws XmlException {\n\t\tparseRouteAvoidSettings(routingElement, settings.getRoutingSettings().getAvoidSettings());\n\t\tparseRoutes(routingElement, settings.getRoutingSettings().getRoutes());\n\t}\n\n\tprivate void parseJumpsSettings(Element jumpsElement, Settings settings) throws XmlException {\n\t\tparseRouteAvoidSettings(jumpsElement, settings.getJumpsAvoidSettings());\n\t}\n\n\tprivate void parseRouteAvoidSettings(Element avoidElement, RouteAvoidSettings routeAvoidSettings) throws XmlException {\n\t\tdouble secMax = getDouble(avoidElement, \"securitymaximum\");\n\t\tdouble secMin = getDouble(avoidElement, \"securityminimum\");\n\t\trouteAvoidSettings.setSecMax(secMax);\n\t\trouteAvoidSettings.setSecMin(secMin);\n\t\tNodeList systemNodes = avoidElement.getElementsByTagName(\"routingsystem\");\n\t\tfor (int a = 0; a < systemNodes.getLength(); a++) {\n\t\t\tElement systemNode = (Element) systemNodes.item(a);\n\t\t\tlong systemID = getLong(systemNode, \"id\");\n\t\t\tMyLocation location = ApiIdConverter.getLocation(systemID);\n\t\t\trouteAvoidSettings.getAvoid().put(systemID, new SolarSystem(location));\n\t\t}\n\t\tNodeList presetNodes = avoidElement.getElementsByTagName(\"routingpreset\");\n\t\tfor (int a = 0; a < presetNodes.getLength(); a++) {\n\t\t\tElement presetNode = (Element) presetNodes.item(a);\n\t\t\tString name = getString(presetNode, \"name\");\n\t\t\tSet<Long> systemIDs = new HashSet<>();\n\t\t\tNodeList presetSystemNodes = presetNode.getElementsByTagName(\"presetsystem\");\n\t\t\tfor (int b = 0; b < presetSystemNodes.getLength(); b++) {\n\t\t\t\tElement systemNode = (Element) presetSystemNodes.item(b);\n\t\t\t\tlong systemID = getLong(systemNode, \"id\");\n\t\t\t\tsystemIDs.add(systemID);\n\t\t\t}\n\t\t\trouteAvoidSettings.getPresets().put(name, systemIDs);\n\t\t}\n\t}\n\n\tprivate void parseRoutes(Element routingElement, Map<String, RouteResult> map) throws XmlException {\n\t\tNodeList routeNodes = routingElement.getElementsByTagName(\"route\");\n\t\tfor (int a = 0; a < routeNodes.getLength(); a++) {\n\t\t\tElement routeNode = (Element) routeNodes.item(a);\n\t\t\tString name = getString(routeNode, \"name\");\n\t\t\tint waypoints = getInt(routeNode, \"waypoints\");\n\t\t\tString algorithmName = getString(routeNode, \"algorithmname\");\n\t\t\tlong algorithmTime = getLong(routeNode, \"algorithmtime\");\n\t\t\tint jumps = getInt(routeNode, \"jumps\");\n\t\t\tString avoid = getStringOptional(routeNode, \"avoid\");\n\t\t\tString security = getStringOptional(routeNode, \"security\");\n\t\t\tNodeList routeSystemsNodes = routeNode.getElementsByTagName(\"routesystems\");\n\t\t\tList<List<SolarSystem>> route = new ArrayList<>();\n\t\t\tMap<Long, List<SolarSystem>> stationsMap = new HashMap<>();\n\t\t\tfor (int b = 0; b < routeSystemsNodes.getLength(); b++) {\n\t\t\t\tElement routeStartSystemNode = (Element) routeSystemsNodes.item(b);\n\t\t\t\tNodeList routeSystemNodes = routeStartSystemNode.getElementsByTagName(\"routesystem\");\n\t\t\t\tList<SolarSystem> systems = new ArrayList<>();\n\t\t\t\tfor (int c = 0; c < routeSystemNodes.getLength(); c++) {\n\t\t\t\t\tElement routeSystemNode = (Element) routeSystemNodes.item(c);\n\t\t\t\t\tlong systemID = getLong(routeSystemNode, \"systemid\");\n\t\t\t\t\tSolarSystem system = new SolarSystem(ApiIdConverter.getLocation(systemID));\n\t\t\t\t\tsystems.add(system);\n\t\t\t\t}\n\t\t\t\troute.add(systems);\n\t\t\t\tNodeList routeStationNodes = routeStartSystemNode.getElementsByTagName(\"routestation\");\n\t\t\t\tfor (int c = 0; c < routeStationNodes.getLength(); c++) {\n\t\t\t\t\tElement routeStationNode = (Element) routeStationNodes.item(c);\n\t\t\t\t\tlong stationID = getLong(routeStationNode, \"stationid\");\n\t\t\t\t\tSolarSystem station = new SolarSystem(ApiIdConverter.getLocation(stationID));\n\t\t\t\t\tList<SolarSystem> stationsList = stationsMap.get(systems.get(0).getSystemID());\n\t\t\t\t\tif (stationsList == null) {\n\t\t\t\t\t\tstationsList = new ArrayList<>();\n\t\t\t\t\t\tstationsMap.put(systems.get(0).getSystemID(), stationsList);\n\t\t\t\t\t}\n\t\t\t\t\tstationsList.add(station);\n\t\t\t\t}\n\t\t\t}\n\t\t\tmap.put(name, new RouteResult(route, stationsMap, waypoints, algorithmName, algorithmTime, jumps, avoid, security));\n\t\t}\n\t}\n\n\tprivate void parseTags(Element tagsElement, Settings settings) throws XmlException {\n\t\tNodeList tagNodes = tagsElement.getElementsByTagName(\"tag\");\n\t\tfor (int a = 0; a < tagNodes.getLength(); a++) {\n\t\t\tElement tagNode = (Element) tagNodes.item(a);\n\t\t\tString name = getString(tagNode, \"name\");\n\t\t\tString background = getString(tagNode, \"background\");\n\t\t\tString foreground = getString(tagNode, \"foreground\");\n\n\t\t\tTagColor color = new TagColor(background, foreground);\n\t\t\tTag tag = new Tag(name, color);\n\t\t\tsettings.getTags().put(tag.getName(), tag);\n\n\t\t\tNodeList idNodes = tagNode.getElementsByTagName(\"tagid\");\n\t\t\tfor (int b = 0; b < idNodes.getLength(); b++) {\n\t\t\t\tElement idNode = (Element) idNodes.item(b);\n\t\t\t\tString tool = getString(idNode, \"tool\");\n\t\t\t\tlong id = getLong(idNode, \"id\");\n\t\t\t\tdouble d = getDoubleNotNull(idNode, \"d\", 0);\n\n\t\t\t\tTagID tagID = new TagID(tool, id, d);\n\t\t\t\ttag.getIDs().add(tagID);\n\t\t\t\tsettings.getTags(tagID).add(tag);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void parseOverview(final Element overviewElement, final Settings settings) throws XmlException {\n\t\tNodeList groupNodes = overviewElement.getElementsByTagName(\"group\");\n\t\tfor (int a = 0; a < groupNodes.getLength(); a++) {\n\t\t\tElement groupNode = (Element) groupNodes.item(a);\n\t\t\tString name = getString(groupNode, \"name\");\n\t\t\tOverviewGroup overviewGroup = new OverviewGroup(name);\n\t\t\tsettings.getOverviewGroups().put(overviewGroup.getName(), overviewGroup);\n\t\t\tNodeList locationNodes = groupNode.getElementsByTagName(\"location\");\n\t\t\tfor (int b = 0; b < locationNodes.getLength(); b++) {\n\t\t\t\tElement locationNode = (Element) locationNodes.item(b);\n\t\t\t\tString location = getString(locationNode, \"name\");\n\t\t\t\tString type = getString(locationNode, \"type\");\n\t\t\t\toverviewGroup.add(new OverviewLocation(location, OverviewLocation.LocationType.valueOf(type)));\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void parseReprocessing(final Element windowElement, final Settings settings) throws XmlException {\n\t\tint reprocessing = getInt(windowElement, \"refining\");\n\t\tint efficiency = getInt(windowElement, \"efficiency\");\n\t\tInteger processing = getIntOptional(windowElement, \"processing\");\n\t\tInteger ore = getIntOptional(windowElement, \"ore\");\n\t\tInteger scrapmetal = getIntOptional(windowElement, \"scrapmetal\");\n\t\tif (scrapmetal == null) {\n\t\t\tif (processing != null) {\n\t\t\t\tscrapmetal = processing;\n\t\t\t} else {\n\t\t\t\tscrapmetal = 0;\n\t\t\t}\n\t\t}\n\t\tif (ore == null) {\n\t\t\tif (processing != null) {\n\t\t\t\tore = processing;\n\t\t\t} else {\n\t\t\t\tore = 0;\n\t\t\t}\n\t\t}\n\t\tdouble station = getDouble(windowElement, \"station\");\n\t\tsettings.setReprocessSettings(new ReprocessSettings(station, reprocessing, efficiency, ore, scrapmetal));\n\t}\n\n\tprivate void parseWindow(final Element windowElement, final Settings settings) throws XmlException {\n\t\tint x = getInt(windowElement, \"x\");\n\t\tint y = getInt(windowElement, \"y\");\n\t\tint height = getInt(windowElement, \"height\");\n\t\tint width = getInt(windowElement, \"width\");\n\t\tboolean maximized = getBoolean(windowElement, \"maximized\");\n\t\tboolean autosave = getBoolean(windowElement, \"autosave\");\n\t\tboolean alwaysOnTop = getBooleanNotNull(windowElement, \"alwaysontop\", false);\n\t\tsettings.setWindowLocation(new Point(x, y));\n\t\tsettings.setWindowSize(new Dimension(width, height));\n\t\tsettings.setWindowMaximized(maximized);\n\t\tsettings.setWindowAutoSave(autosave);\n\t\tsettings.setWindowAlwaysOnTop(alwaysOnTop);\n\t}\n\n\tprivate void parseProxy(final Element proxyElement, final Settings settings) throws XmlException {\n\t\tProxy.Type type;\n\t\ttry {\n\t\t\ttype = Proxy.Type.valueOf(getString(proxyElement, \"type\"));\n\t\t} catch (IllegalArgumentException ex) {\n\t\t\ttype = null;\n\t\t}\n\t\tString address = getString(proxyElement, \"address\");\n\t\tint port = getInt(proxyElement, \"port\");\n\t\tString username = getStringOptional(proxyElement, \"username\");\n\t\tString password = getStringOptional(proxyElement, \"password\");\n\t\tif (type != null && type != Proxy.Type.DIRECT && !address.isEmpty() && port != 0) { // check the proxy attributes are all there.\n\t\t\tsettings.setProxyData(new ProxyData(address, type, port, username, password));\n\t\t}\n\t}\n\n\tprivate void parseUserPrices(final Element element, final Settings settings) throws XmlException {\n\t\tNodeList userPriceNodes = element.getElementsByTagName(\"userprice\");\n\t\tfor (int i = 0; i < userPriceNodes.getLength(); i++) {\n\t\t\tElement currentNode = (Element) userPriceNodes.item(i);\n\t\t\tString name = getString(currentNode, \"name\");\n\t\t\tdouble price = getDouble(currentNode, \"price\");\n\t\t\tint typeID = getInt(currentNode, \"typeid\");\n\t\t\tUserItem<Integer, Double> userPrice = new UserPrice(price, typeID, name);\n\t\t\tsettings.getUserPrices().put(typeID, userPrice);\n\t\t}\n\t}\n\n\tprivate void parseUserItemNames(final Element element, final Settings settings) throws XmlException {\n\t\tNodeList userPriceNodes = element.getElementsByTagName(\"itemname\");\n\t\tfor (int i = 0; i < userPriceNodes.getLength(); i++) {\n\t\t\tElement currentNode = (Element) userPriceNodes.item(i);\n\t\t\tString name = getString(currentNode, \"name\");\n\t\t\tString typeName = getString(currentNode, \"typename\");\n\t\t\tlong itemId = getLong(currentNode, \"itemid\");\n\t\t\tUserItem<Long, String> userItemName = new UserName(name, itemId, typeName);\n\t\t\tsettings.getUserItemNames().put(itemId, userItemName);\n\t\t}\n\t}\n\n\tprivate void parseEveNames(final Element element, final Settings settings) throws XmlException {\n\t\tNodeList eveNameNodes = element.getElementsByTagName(\"evename\");\n\t\tfor (int i = 0; i < eveNameNodes.getLength(); i++) {\n\t\t\tElement currentNode = (Element) eveNameNodes.item(i);\n\t\t\tString name = getString(currentNode, \"name\");\n\t\t\tlong itemId = getLong(currentNode, \"itemid\");\n\t\t\tsettings.getEveNames().put(itemId, name);\n\t\t}\n\t}\n\n\tprivate void parsePriceDataSettings(final Element element, final Settings settings) throws XmlException {\n\t\tPriceMode priceType = settings.getPriceDataSettings().getPriceType(); //Default\n\t\tif (haveAttribute(element, \"defaultprice\")) {\n\t\t\tpriceType = PriceMode.valueOf(getString(element, \"defaultprice\"));\n\t\t}\n\n\t\tPriceMode priceReprocessedType = settings.getPriceDataSettings().getPriceReprocessedType(); //Default\n\t\tif (haveAttribute(element, \"defaultreprocessedprice\")) {\n\t\t\tpriceReprocessedType = PriceMode.valueOf(getString(element, \"defaultreprocessedprice\"));\n\t\t}\n\t\tPriceMode priceManufacturingType = settings.getPriceDataSettings().getPriceManufacturingType(); //Default\n\t\tif (haveAttribute(element, \"defaultmanufacturingprice\")) {\n\t\t\tpriceManufacturingType = PriceMode.valueOf(getString(element, \"defaultmanufacturingprice\"));\n\t\t}\n\n\t\t//null = default\n\t\tLong locationID = null;\n\t\tLocationType locationType = null;\n\t\t//Backward compatibility\n\t\tif (haveAttribute(element, \"regiontype\")) {\n\t\t\tRegionTypeBackwardCompatibility regionType = RegionTypeBackwardCompatibility.valueOf(getString(element, \"regiontype\"));\n\t\t\tlocationID = regionType.getRegion();\n\t\t\tlocationType = LocationType.REGION;\n\t\t}\n\t\t//Backward compatibility\n\t\tif (haveAttribute(element, \"locations\")) {\n\t\t\tString string = getString(element, \"locations\");\n\t\t\tString[] split = string.split(\",\");\n\t\t\tif (split.length == 1) {\n\t\t\t\ttry {\n\t\t\t\t\tlocationID = Long.valueOf(split[0]);\n\t\t\t\t} catch (NumberFormatException ex) {\n\t\t\t\t\tLOG.warn(\"Could not parse locations long: \" + split[0]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (haveAttribute(element, \"locationid\")) {\n\t\t\tlocationID = getLong(element, \"locationid\");\n\t\t}\n\t\tif (haveAttribute(element, \"type\")) {\n\t\t\tlocationType = LocationType.valueOf(getString(element, \"type\"));\n\t\t}\n\t\tPriceSource priceSource = PriceDataSettings.getDefaultPriceSource();\n\t\tif (haveAttribute(element, \"pricesource\")) {\n\t\t\ttry {\n\t\t\t\tpriceSource = PriceSource.valueOf(getString(element, \"pricesource\"));\n\t\t\t} catch (IllegalArgumentException ex) {\n\t\t\t\t//In case a price source is removed: Use the default\n\t\t\t}\n\t\t}\n\t\tString janiceKey = getStringOptional(element, \"janicekey\");\n\t\t//Validate\n\t\tif (!priceSource.isValid(locationType, locationID)) {\n\t\t\tlocationType = priceSource.getDefaultLocationType();\n\t\t\tlocationID = priceSource.getDefaultLocationID();\n\t\t}\n\t\tsettings.setPriceDataSettings(new PriceDataSettings(locationType, locationID, priceSource, priceType, priceReprocessedType, priceManufacturingType, janiceKey));\n\t}\n\n\tprivate void parseMarketOrdersSettings(final Element element, final Settings settings) throws XmlException {\n\t\tint expireWarnDays = getIntNotNull(element, \"expirewarndays\", settings.getMarketOrdersSettings().getExpireWarnDays());\n\t\tint remainingWarnPercent = getIntNotNull(element, \"remainingwarnpercent\", settings.getMarketOrdersSettings().getRemainingWarnPercent());\n\t\tMarketOrdersSettings marketOrdersSettings = settings.getMarketOrdersSettings();\n\t\tmarketOrdersSettings.setExpireWarnDays(expireWarnDays);\n\t\tmarketOrdersSettings.setRemainingWarnPercent(remainingWarnPercent);\n\t}\n\n\tprivate void parseFlags(final Element element, final Settings settings) throws XmlException {\n\t\tNodeList flagNodes = element.getElementsByTagName(\"flag\");\n\t\tfor (int i = 0; i < flagNodes.getLength(); i++) {\n\t\t\tElement currentNode = (Element) flagNodes.item(i);\n\t\t\tString key = getString(currentNode, \"key\");\n\t\t\tboolean enabled = getBoolean(currentNode, \"enabled\");\n\t\t\ttry {\n\t\t\t\tif (key.equals(\"FLAG_INCLUDE_CONTRACTS\")) {\n\t\t\t\t\tsettings.getFlags().put(SettingFlag.FLAG_INCLUDE_SELL_CONTRACTS, enabled);\n\t\t\t\t\tsettings.getFlags().put(SettingFlag.FLAG_INCLUDE_BUY_CONTRACTS, enabled);\n\t\t\t\t}\n\t\t\t\tif (key.equals(\"FLAG_STRONG_COLORS\")) {\n\t\t\t\t\tif (enabled) {\n\t\t\t\t\t\tsettings.getColorSettings().setColorTheme(ColorThemeTypes.STRONG.getInstance(), true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsettings.getColorSettings().setColorTheme(ColorThemeTypes.DEFAULT.getInstance(), true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tSettingFlag settingFlag = SettingFlag.valueOf(key);\n\t\t\t\tsettings.getFlags().put(settingFlag, enabled);\n\t\t\t} catch (IllegalArgumentException ex) {\n\t\t\t\tLOG.warn(\"Removing Setting Flag:\" + key);\n\t\t\t}\n\t\t}\n\t\tsettings.cacheFlags();\n\t}\n\n\tprivate void parseTableColumns(final Element element, final Settings settings) throws XmlException {\n\t\tNodeList tableNodeList = element.getElementsByTagName(\"table\");\n\t\tfor (int a = 0; a < tableNodeList.getLength(); a++) {\n\t\t\tList<SimpleColumn> columns = new ArrayList<>();\n\t\t\tElement tableNode = (Element) tableNodeList.item(a);\n\t\t\tString tableName = getString(tableNode, \"name\");\n\t\t\t//Ignore old tables\n\t\t\tif (tableName.equals(\"marketorderssell\") || tableName.equals(\"marketordersbuy\")) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tNodeList columnNodeList = tableNode.getElementsByTagName(\"column\");\n\t\t\tfor (int b = 0; b < columnNodeList.getLength(); b++) {\n\t\t\t\tElement columnNode = (Element) columnNodeList.item(b);\n\t\t\t\tString name = getString(columnNode, \"name\");\n\t\t\t\tboolean shown = getBoolean(columnNode, \"shown\");\n\t\t\t\tcolumns.add(new SimpleColumn(name, shown));\n\t\t\t}\n\t\t\tsettings.getTableColumns().put(tableName, columns);\n\t\t}\n\t}\n\n\tprivate void parseTableColumnsWidth(final Element element, final Settings settings) throws XmlException {\n\t\tNodeList tableNodeList = element.getElementsByTagName(\"table\");\n\t\tfor (int a = 0; a < tableNodeList.getLength(); a++) {\n\t\t\tMap<String, Integer> columns = new HashMap<>();\n\t\t\tElement tableNode = (Element) tableNodeList.item(a);\n\t\t\tString tableName = getString(tableNode, \"name\");\n\t\t\tNodeList columnNodeList = tableNode.getElementsByTagName(\"column\");\n\t\t\tfor (int b = 0; b < columnNodeList.getLength(); b++) {\n\t\t\t\tElement columnNode = (Element) columnNodeList.item(b);\n\t\t\t\tint width = getInt(columnNode, \"width\");\n\t\t\t\tString column = getString(columnNode, \"column\");\n\t\t\t\tcolumns.put(column, width);\n\t\t\t}\n\t\t\tsettings.getTableColumnsWidth().put(tableName, columns);\n\t\t}\n\t}\n\n\tprivate void parseTableResize(final Element element, final Settings settings) throws XmlException {\n\t\tNodeList tableNodeList = element.getElementsByTagName(\"table\");\n\t\tfor (int i = 0; i < tableNodeList.getLength(); i++) {\n\t\t\tElement tableNode = (Element) tableNodeList.item(i);\n\t\t\tString tableName = getString(tableNode, \"name\");\n\t\t\tResizeMode resizeMode = ResizeMode.valueOf(getString(tableNode, \"resize\"));\n\t\t\tsettings.getTableResize().put(tableName, resizeMode);\n\t\t}\n\t}\n\n\tprivate void parseTableViews(final Element element, final Settings settings) throws XmlException {\n\t\tNodeList viewToolNodeList = element.getElementsByTagName(\"viewtool\");\n\t\tfor (int a = 0; a < viewToolNodeList.getLength(); a++) {\n\t\t\tElement viewToolNode = (Element) viewToolNodeList.item(a);\n\t\t\tString toolName = getString(viewToolNode, \"tool\");\n\t\t\tMap<String, View> views = new TreeMap<>(StringComparators.CASE_INSENSITIVE);\n\t\t\tsettings.getTableViews().put(toolName, views);\n\t\t\tNodeList viewNodeList = viewToolNode.getElementsByTagName(\"view\");\n\t\t\tfor (int b = 0; b < viewNodeList.getLength(); b++) {\n\t\t\t\tElement viewNode = (Element) viewNodeList.item(b);\n\t\t\t\tString viewName = getString(viewNode, \"name\");\n\t\t\t\tView view = new View(viewName);\n\t\t\t\tviews.put(view.getName(), view);\n\t\t\t\tNodeList viewColumnList = viewNode.getElementsByTagName(\"viewcolumn\");\n\t\t\t\tfor (int c = 0; c < viewColumnList.getLength(); c++) {\n\t\t\t\t\tElement viewColumnNode = (Element) viewColumnList.item(c);\n\t\t\t\t\tString name = getString(viewColumnNode, \"name\");\n\t\t\t\t\tboolean shown = getBoolean(viewColumnNode, \"shown\");\n\t\t\t\t\tview.getColumns().add(new SimpleColumn(name, shown));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void parseTableFormulas(final Element element, final Settings settings) throws XmlException {\n\t\tNodeList formulasNodeList = element.getElementsByTagName(\"formulas\");\n\t\tfor (int a = 0; a < formulasNodeList.getLength(); a++) {\n\t\t\tElement formulasNode = (Element) formulasNodeList.item(a);\n\t\t\tString toolName = getString(formulasNode, \"tool\");\n\t\t\tList<Formula> tableFormulas = settings.getTableFormulas(toolName);\n\t\t\tNodeList formulaNodeList = formulasNode.getElementsByTagName(\"formula\");\n\t\t\tfor (int b = 0; b < formulaNodeList.getLength(); b++) {\n\t\t\t\tElement formulaNode = (Element) formulaNodeList.item(b);\n\t\t\t\tString name = getString(formulaNode, \"name\");\n\t\t\t\tString expression = getString(formulaNode, \"expression\");\n\t\t\t\tInteger index = getIntOptional(formulaNode, \"index\");\n\t\t\t\ttableFormulas.add(new Formula(name, expression, index));\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void parseTableChanges(final Element element, final Settings settings) throws XmlException {\n\t\tNodeList changesList = element.getElementsByTagName(\"changes\");\n\t\tfor (int a = 0; a < changesList.getLength(); a++) {\n\t\t\tElement changesNode = (Element) changesList.item(a);\n\t\t\tString toolName = getString(changesNode, \"tool\");\n\t\t\tDate date = getDate(changesNode, \"date\");\n\t\t\tsettings.getTableChanged().put(toolName, date);\n\t\t}\n\t}\n\n\tprivate void parseTableJumps(final Element element, final Settings settings) throws XmlException {\n\t\tNodeList jumpsNodeList = element.getElementsByTagName(\"jumps\");\n\t\tfor (int a = 0; a < jumpsNodeList.getLength(); a++) {\n\t\t\tElement jumpsNode = (Element) jumpsNodeList.item(a);\n\t\t\tString toolName = getString(jumpsNode, \"tool\");\n\t\t\tList<Jump> tableJumps = settings.getTableJumps(toolName);\n\t\t\tNodeList jumpNodeList = jumpsNode.getElementsByTagName(\"jump\");\n\t\t\tfor (int b = 0; b < jumpNodeList.getLength(); b++) {\n\t\t\t\tElement jumpNode = (Element) jumpNodeList.item(b);\n\t\t\t\tlong systemID = getLong(jumpNode, \"systemid\");\n\t\t\t\tInteger index = getIntOptional(jumpNode, \"index\");\n\t\t\t\tMyLocation from = ApiIdConverter.getLocation(systemID);\n\t\t\t\ttableJumps.add(new Jump(from, index));\n\t\t\t}\n\t\t}\n\t}\n\n\t/***\n\t * Parse the table filters elements of the settings file.\n\t *\n\t * @param element The 'tablefilters' element of the xml.\n\t * @param settings The settings to be loaded to.\n\t * @throws XmlException\n\t */\n\tprivate void parseTableFilters(final Element element, final Settings settings) throws XmlException {\n\t\tNodeList tableNodeList = element.getElementsByTagName(\"table\");\n\t\tfor (int a = 0; a < tableNodeList.getLength(); a++) {\n\t\t\tElement tableNode = (Element) tableNodeList.item(a);\n\t\t\tString tableName = getString(tableNode, \"name\");\n\t\t\tNodeList filterNodeList = tableNode.getElementsByTagName(\"filter\");\n\t\t\tMap<String, List<Filter>> filters = new HashMap<>();\n\t\t\tfor (int b = 0; b < filterNodeList.getLength(); b++) {\n\t\t\t\tElement filterNode = (Element) filterNodeList.item(b);\n\t\t\t\tString filterName = getString(filterNode, \"name\");\n\t\t\t\tList<Filter> filter = parseFilters(filterNode, tableName, settings);\n\t\t\t\tif (!filter.isEmpty()) {\n\t\t\t\t\tfilters.put(filterName, filter);\n\t\t\t\t} else {\n\t\t\t\t\tLOG.warn(filterName + \" filter removed (Empty)\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tsettings.getTableFilters().put(tableName, filters);\n\t\t}\n\t}\n\n\t/***\n\t * Parse the current table filters elements of the settings file.\n\t *\n\t * @param element The 'currenttablefilters' element of the xml.\n\t * @param settings The settings to be loaded to.\n\t * @throws XmlException\n\t */\n\tprivate void parseCurrentTableFilters(final Element element, final Settings settings) throws XmlException {\n\t\tNodeList tableNodeList = element.getElementsByTagName(\"table\");\n\t\tfor (int a = 0; a < tableNodeList.getLength(); a++) {\n\t\t\tElement tableNode = (Element) tableNodeList.item(a);\n\t\t\tString tableName = getString(tableNode, \"name\");\n\t\t\tNodeList filterNodeList = tableNode.getElementsByTagName(\"filter\");\n\t\t\tList<Filter> filters = new ArrayList<>();\n\n\t\t\tif (filterNodeList.getLength() == 1) {\n\t\t\t\tElement filterNode = (Element) filterNodeList.item(0);\n\n\t\t\t\tif (haveAttribute(filterNode, \"show\")) {\n\t\t\t\t\tsettings.getCurrentTableFiltersShown().put(tableName, getBoolean(filterNode, \"show\"));\n\t\t\t\t} else {\n\t\t\t\t\tsettings.getCurrentTableFiltersShown().put(tableName, true);\n\t\t\t\t}\n\n\t\t\t\tfilters = parseFilters(filterNode, tableName, settings);\n\t\t\t} else {\n\t\t\t\tLOG.warn(tableName + \" current filter not found\");\n\t\t\t}\n\n\t\t\tif (filters.isEmpty()) {\n\t\t\t\tLOG.warn(tableName + \" current filter empty\");\n\t\t\t}\n\t\t\tsettings.getCurrentTableFilters().put(tableName, filters);\n\t\t}\n\t}\n\n\t/***\n\t * Parse the current table filters elements of the settings file.\n\t *\n\t * @param element The 'currenttablesorting' element of the xml.\n\t * @param settings The settings to be loaded to.\n\t * @throws XmlException\n\t */\n\tprivate void parseCurrentTableSorting(final Element element, final Settings settings) throws XmlException {\n\t\tNodeList tableNodeList = element.getElementsByTagName(\"table\");\n\t\tfor (int a = 0; a < tableNodeList.getLength(); a++) {\n\t\t\tElement tableNode = (Element) tableNodeList.item(a);\n\t\t\tString tableName = getString(tableNode, \"name\");\n\t\t\tString sorting = getString(tableNode, \"sorting\");\n\t\t\tsettings.getCurrentTableSorting().put(tableName, sorting);\n\t\t}\n\t}\n\n\t/***\n\t * Parse a filter element of the settings file. This can be used on both table and current table filters.\n\t *\n\t * @param filterNode The node of the filter element of the xml.\n\t * @param tableName The name of the table the filter is for.\n\t * @return A list of filters if the element had one. If not an empty list is returned.\n\t * @throws XmlException\n\t */\n\tprivate List<Filter> parseFilters(Element filterNode, String tableName, Settings settings) throws XmlException {\n\t\tList<Filter> filter = new ArrayList<>();\n\t\tNodeList rowNodes = filterNode.getElementsByTagName(\"row\");\n\t\tfor (int c = 0; c < rowNodes.getLength(); c++) {\n\t\t\tElement rowNode = (Element) rowNodes.item(c);\n\t\t\tint group = getIntNotNull(rowNode, \"group\", 1);\n\t\t\tboolean enabled = getBooleanNotNull(rowNode, \"enabled\", true);\n\t\t\tString text = getString(rowNode, \"text\");\n\t\t\tString columnString = getString(rowNode, \"column\");\n\t\t\tEnumTableColumn<?> column = getColumn(columnString, tableName, settings);\n\t\t\tif (column != null) {\n\t\t\t\tString compare = getString(rowNode, \"compare\");\n\t\t\t\tString logic = getString(rowNode, \"logic\");\n\t\t\t\tfilter.add(new Filter(group, logic, column, compare, text, enabled));\n\t\t\t} else {\n\t\t\t\tLOG.warn(columnString + \" column removed from filter\");\n\t\t\t}\n\t\t}\n\t\treturn filter;\n\t}\n\n\tpublic static EnumTableColumn<?> getColumn(final String column, final String toolName, Settings settings) {\n\t\tfor (ToolTab toolTab : ToolTab.values()) {\n\t\t\tEnumTableColumn<?> enumTableColumn = toolTab.getColumn(column, toolName);\n\t\t\tif (enumTableColumn != null) {\n\t\t\t\treturn enumTableColumn;\n\t\t\t}\n\t\t}\n\t\tif (settings != null) {\n\t\t\tfor (Formula formula : settings.getTableFormulas(toolName)) {\n\t\t\t\tif (formula.getColumnName().equals(column)) {\n\t\t\t\t\treturn new FormulaColumn<>(formula);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (Jump jump : settings.getTableJumps(toolName)) {\n\t\t\t\tif (jump.getName().equals(column)) {\n\t\t\t\t\treturn new JumpColumn<>(jump);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t//All\n\t\tif (column.equals(\"ALL\") || column.equals(\"all\")) {\n\t\t\treturn AllColumn.ALL;\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate void parseAssetFilters(final Element filtersElement, final Settings settings) throws XmlException {\n\t\tNodeList filterNodeList = filtersElement.getElementsByTagName(\"filter\");\n\t\tfor (int a = 0; a < filterNodeList.getLength(); a++) {\n\t\t\tElement filterNode = (Element) filterNodeList.item(a);\n\t\t\tString filterName = getString(filterNode, \"name\");\n\n\t\t\tList<Filter> filters = new ArrayList<>();\n\n\t\t\tNodeList rowNodeList = filterNode.getElementsByTagName(\"row\");\n\t\t\tfor (int b = 0; b < rowNodeList.getLength(); b++) {\n\t\t\t\tElement rowNode = (Element) rowNodeList.item(b);\n\t\t\t\tLogicType logic = convertLogic(getBoolean(rowNode, \"and\"));\n\t\t\t\tEnumTableColumn<?> column = convertColumn(getString(rowNode, \"column\"));\n\t\t\t\tCompareType compare = convertMode(getString(rowNode, \"mode\"));\n\t\t\t\tString text;\n\t\t\t\tif (haveAttribute(rowNode, \"columnmatch\")) {\n\t\t\t\t\ttext = convertColumn(getString(rowNode, \"columnmatch\")).name();\n\t\t\t\t} else {\n\t\t\t\t\ttext = getString(rowNode, \"text\");\n\t\t\t\t}\n\t\t\t\tFilter filter = new Filter(logic, column, compare, text);\n\t\t\t\tfilters.add(filter);\n\t\t\t}\n\t\t\tsettings.getTableFilters(AssetsTab.NAME).put(filterName, filters);\n\t\t}\n\t}\n\n\tprivate LogicType convertLogic(final boolean logic) {\n\t\tif (logic) {\n\t\t\treturn LogicType.AND;\n\t\t} else {\n\t\t\treturn LogicType.OR;\n\t\t}\n\t}\n\n\tprivate EnumTableColumn<?> convertColumn(final String column) {\n\t\tif (column.equals(\"Name\")) { return AssetTableFormat.NAME; }\n\t\tif (column.equals(\"Group\")) { return AssetTableFormat.GROUP; }\n\t\tif (column.equals(\"Category\")) { return AssetTableFormat.CATEGORY; }\n\t\tif (column.equals(\"Owner\")) { return AssetTableFormat.OWNER; }\n\t\tif (column.equals(\"Count\")) { return AssetTableFormat.COUNT; }\n\t\tif (column.equals(\"Location\")) { return AssetTableFormat.LOCATION; }\n\t\tif (column.equals(\"Container\")) { return AssetTableFormat.CONTAINER; }\n\t\tif (column.equals(\"Flag\")) { return AssetTableFormat.FLAG; }\n\t\tif (column.equals(\"Price\")) { return AssetTableFormat.PRICE; }\n\t\tif (column.equals(\"Sell Min\")) { return AssetTableFormat.PRICE_SELL_MIN; }\n\t\tif (column.equals(\"Buy Max\")) { return AssetTableFormat.PRICE_BUY_MAX; }\n\t\tif (column.equals(\"Base Price\")) { return AssetTableFormat.PRICE_BASE; }\n\t\tif (column.equals(\"Value\")) { return AssetTableFormat.VALUE; }\n\t\tif (column.equals(\"Meta\")) { return AssetTableFormat.META; }\n\t\tif (column.equals(\"ID\")) { return AssetTableFormat.ITEM_ID; }\n\t\tif (column.equals(\"Volume\")) { return AssetTableFormat.VOLUME; }\n\t\tif (column.equals(\"Type ID\")) { return AssetTableFormat.TYPE_ID; }\n\t\tif (column.equals(\"Region\")) { return AssetTableFormat.REGION; }\n\t\tif (column.equals(\"Type Count\")) { return AssetTableFormat.COUNT_TYPE; }\n\t\tif (column.equals(\"Security\")) { return AssetTableFormat.SECURITY; }\n\t\tif (column.equals(\"Reprocessed\")) { return AssetTableFormat.PRICE_REPROCESSED; }\n\t\tif (column.equals(\"Reprocessed Value\")) { return AssetTableFormat.VALUE_REPROCESSED; }\n\t\tif (column.equals(\"Singleton\")) { return AssetTableFormat.SINGLETON; }\n\t\tif (column.equals(\"Total Volume\")) { return AssetTableFormat.VOLUME_TOTAL; }\n\t\treturn AllColumn.ALL; //Fallback\n\t\t}\n\n\tprivate CompareType convertMode(final String compareMixed) {\n\t\tString compare = compareMixed.toUpperCase();\n\t\tif (compare.equals(\"MODE_EQUALS\")) { return CompareType.EQUALS; }\n\t\tif (compare.equals(\"MODE_CONTAIN\")) { return CompareType.CONTAINS; }\n\t\tif (compare.equals(\"MODE_CONTAIN_NOT\")) { return CompareType.CONTAINS_NOT; }\n\t\tif (compare.equals(\"MODE_EQUALS_NOT\")) { return CompareType.EQUALS_NOT; }\n\t\tif (compare.equals(\"MODE_GREATER_THAN\")) { return CompareType.GREATER_THAN; }\n\t\tif (compare.equals(\"MODE_LESS_THAN\")) { return CompareType.LESS_THAN; }\n\t\tif (compare.equals(\"MODE_GREATER_THAN_COLUMN\")) { return CompareType.GREATER_THAN_COLUMN; }\n\t\tif (compare.equals(\"MODE_LESS_THAN_COLUMN\")) { return CompareType.LESS_THAN_COLUMN; }\n\t\t\treturn CompareType.CONTAINS;\n\t\t}\n\n\t/***\n\t * Old method to process export settings for 6.8.0 and older\n\t */\n\t@Deprecated\n\tprivate void parseExportSettingsLegacy(final Element element, final Settings settings) throws XmlException {\n\t\t//Copy\n\t\tString copy = getStringOptional(element, \"copy\");\n\t\tif (copy != null) {\n\t\t\tsettings.getCopySettings().setCopyDecimalSeparator(DecimalSeparator.valueOf(copy));\n\t\t}\n\n\t\tExportFormat exportFormat = null;\n\t\tif (haveAttribute(element, \"exportformat\")) {\n\t\t\texportFormat = ExportFormat.valueOf(getString(element, \"exportformat\"));\n\t\t}\n\n\t\t//CSV\n\t\tDecimalSeparator decimal = DecimalSeparator.valueOf(getString(element, \"decimal\"));\n\t\tLineDelimiter line = LineDelimiter.valueOf(getString(element, \"line\"));\n\n\t\t//SQL\n\t\tBoolean createTable = getBooleanOptional(element, \"sqlcreatetable\");\n\t\tBoolean dropTable = getBooleanOptional(element, \"sqldroptable\");\n\t\tBoolean extendedInserts = getBooleanOptional(element, \"sqlextendedinserts\");\n\n\t\t//HTML\n\t\tBoolean htmlStyled = getBooleanOptional(element, \"htmlstyled\");\n\t\tBoolean htmlIGB = getBooleanOptional(element, \"htmligb\");\n\t\tInteger htmlRepeatHeader = getIntOptional(element, \"htmlrepeatheader\");\n\n\t\tMap<String, String> tableNames = new HashMap<>();\n\t\tMap<String, String> fileNames = new HashMap<>();\n\t\tMap<String, List<String>> columnNames = new HashMap<>();\n\n\t\tNodeList tableNamesNodeList = element.getElementsByTagName(\"sqltablenames\");\n\t\tfor (int a = 0; a < tableNamesNodeList.getLength(); a++) {\n\t\t\tElement tableNameNode = (Element) tableNamesNodeList.item(a);\n\t\t\tString tool = getString(tableNameNode, \"tool\");\n\t\t\tString tableName = getString(tableNameNode, \"tablename\");\n\t\t\ttableNames.put(tool, tableName);\n\t\t}\n\t\t//Shared\n\t\tNodeList fileNamesNodeList = element.getElementsByTagName(\"filenames\");\n\t\tfor (int a = 0; a < fileNamesNodeList.getLength(); a++) {\n\t\t\tElement tableNameNode = (Element) fileNamesNodeList.item(a);\n\t\t\tString tool = getString(tableNameNode, \"tool\");\n\t\t\tString fileName = getString(tableNameNode, \"filename\");\n\t\t\tfileNames.put(tool, fileName);\n\t\t}\n\t\tNodeList tableNodeList = element.getElementsByTagName(\"table\");\n\t\tfor (int a = 0; a < tableNodeList.getLength(); a++) {\n\t\t\tList<String> columns = new ArrayList<>();\n\t\t\tElement tableNode = (Element) tableNodeList.item(a);\n\t\t\tString tableName = getString(tableNode, \"name\");\n\t\t\tNodeList columnNodeList = tableNode.getElementsByTagName(\"column\");\n\t\t\tfor (int b = 0; b < columnNodeList.getLength(); b++) {\n\t\t\t\tElement columnNode = (Element) columnNodeList.item(b);\n\t\t\t\tString name = getString(columnNode, \"name\");\n\t\t\t\tcolumns.add(name);\n\t\t\t}\n\t\t\tcolumnNames.put(tableName, columns);\n\t\t}\n\n\t\t//List of existing tools at the time when the data format was changed 6.8.0\n\t\tList<String> toolNames = Arrays.asList(\"industryjobs\", \"overview\", \"marketorders\", \"loadouts\", \"stockpile\",\n\t\t\t\t\"reprocessed\", \"contracts\", \"industryslots\", \"journal\", \"assets\", \"materials\", \"treeassets\", \"value\",\n\t\t\t\t\"items\", \"transaction\");\n\t\tfor (String toolName : toolNames) {\n\t\t\tExportSettings exportSettings = new ExportSettings(toolName);\n\t\t\t//Common\n\t\t\tif (exportFormat != null) {\n\t\t\t\texportSettings.setExportFormat(exportFormat);\n\t\t\t}\n\t\t\t//CSV\n\t\t\texportSettings.setDecimalSeparator(decimal);\n\t\t\texportSettings.setCsvLineDelimiter(line);\n\t\t\t//SQL\n\t\t\tif (createTable != null) {\n\t\t\t\texportSettings.setSqlCreateTable(createTable);\n\t\t\t}\n\t\t\tif (dropTable != null) {\n\t\t\t\texportSettings.setSqlDropTable(dropTable);\n\t\t\t}\n\t\t\tif (extendedInserts != null) {\n\t\t\t\texportSettings.setSqlExtendedInserts(extendedInserts);\n\t\t\t}\n\t\t\t//HTML\n\t\t\tif (htmlStyled != null) {\n\t\t\t\texportSettings.setHtmlStyled(htmlStyled);\n\t\t\t}\n\t\t\tif (htmlIGB != null) {\n\t\t\t\texportSettings.setHtmlIGB(htmlIGB);\n\t\t\t}\n\t\t\tif (htmlRepeatHeader != null) {\n\t\t\t\texportSettings.setHtmlRepeatHeader(htmlRepeatHeader);\n\t\t\t}\n\t\t\t//Lists\n\t\t\tif (tableNames.containsKey(toolName)) {\n\t\t\t\texportSettings.setSqlTableName(tableNames.get(toolName));\n\t\t\t}\n\t\t\tif (fileNames.containsKey(toolName)) {\n\t\t\t\texportSettings.setFilename(fileNames.get(toolName));\n\t\t\t}\n\t\t\tif (columnNames.containsKey(toolName)) {\n\t\t\t\texportSettings.getTableExportColumns().addAll(columnNames.get(toolName));\n\t\t\t}\n\t\t\tsettings.getExportSettings().put(toolName, exportSettings);\n\t\t}\n\t}\n\n\t/***\n\t *\n\t * @param element\n\t * @param settings\n\t * @throws XmlException\n\t */\n\tprivate void parseExportSettings(final Element element, final Settings settings) throws XmlException {\n\t\t//Copy\n\t\tString copy = getStringOptional(element, \"copy\");\n\t\tif (copy != null) {\n\t\t\tsettings.getCopySettings().setCopyDecimalSeparator(DecimalSeparator.valueOf(copy));\n\t\t}\n\n\t\tNodeList tableNodeList = element.getElementsByTagName(\"export\");\n\t\tfor (int a = 0; a < tableNodeList.getLength(); a++) {\n\t\t\tElement exportNode = (Element) tableNodeList.item(a);\n\t\t\tString toolName = getString(exportNode, \"name\");\n\t\t\tExportSettings exportSettings = parseExportSetting(exportNode, toolName);\n\t\t\tsettings.getExportSettings().put(toolName, exportSettings);\n\t\t}\n\t}\n\n\t/***\n\t *\n\t * @param exportNode\n\t * @param toolName\n\t * @return\n\t * @throws XmlException\n\t */\n\tprivate ExportSettings parseExportSetting(final Element exportNode, final String toolName) throws XmlException {\n\t\tExportSettings exportSetting = new ExportSettings(toolName);\n\n\t\t//Common\n\t\tString exportFormat = getStringOptional(exportNode, \"exportformat\");\n\t\tif (exportFormat != null) {\n\t\t\texportSetting.setExportFormat(ExportFormat.valueOf(exportFormat));\n\t\t}\n\n\t\tString fileName = getString(exportNode, \"filename\");\n\t\tif (fileName != null) {\n\t\t\texportSetting.setFilename(fileName);\n\t\t}\n\n\t\tString columnSelection = getStringOptional(exportNode, \"columnselection\");\n\t\tif (columnSelection != null) {\n\t\t\texportSetting.setColumnSelection(ColumnSelection.valueOf(columnSelection));\n\t\t}\n\n\t\tString viewName = getStringOptional(exportNode, \"viewname\");\n\t\tif (viewName != null) {\n\t\t\texportSetting.setViewName(viewName);\n\t\t}\n\n\t\tString filterSelection = getStringOptional(exportNode, \"filterselection\");\n\t\tif (filterSelection != null) {\n\t\t\texportSetting.setFilterSelection(FilterSelection.valueOf(filterSelection));\n\t\t}\n\n\t\tString filterName = getStringOptional(exportNode, \"filtername\");\n\t\tif (filterName != null) {\n\t\t\texportSetting.setFilterName(filterName);\n\t\t}\n\n\t\tElement tableNode = getNodeOptional(exportNode, \"table\");\n\t\tif (tableNode != null) {\n\t\t\tList<String> columns = new ArrayList<>();\n\t\t\tNodeList columnNodeList = tableNode.getElementsByTagName(\"column\");\n\t\t\tfor (int b = 0; b < columnNodeList.getLength(); b++) {\n\t\t\t\tElement columnNode = (Element) columnNodeList.item(b);\n\t\t\t\tString name = getString(columnNode, \"name\");\n\t\t\t\tcolumns.add(name);\n\t\t\t}\n\t\t\texportSetting.putTableExportColumns(columns);\n\t\t}\n\n\t\t//CSV\n\t\tElement csvElement = getNodeOptional(exportNode, \"csv\");\n\t\tif (csvElement != null) {\n\t\t\tDecimalSeparator decimal = DecimalSeparator.valueOf(getString(csvElement, \"decimal\"));\n\t\t\texportSetting.setDecimalSeparator(decimal);\n\n\t\t\tLineDelimiter line = LineDelimiter.valueOf(getString(csvElement, \"line\"));\n\t\t\texportSetting.setCsvLineDelimiter(line);\n\t\t}\n\n\t\t//SQL\n\t\tElement sqlElement = getNodeOptional(exportNode, \"sql\");\n\t\tif (sqlElement != null) {\n\t\t\tString tableName = getString(sqlElement, \"tablename\");\n\t\t\texportSetting.setSqlTableName(tableName);\n\n\t\t\tboolean createTable = getBoolean(sqlElement, \"createtable\");\n\t\t\texportSetting.setSqlCreateTable(createTable);\n\n\t\t\tboolean dropTable = getBoolean(sqlElement, \"droptable\");\n\t\t\texportSetting.setSqlDropTable(dropTable);\n\n\t\t\tboolean extendedInserts = getBoolean(sqlElement, \"extendedinserts\");\n\t\t\texportSetting.setSqlExtendedInserts(extendedInserts);\n\t\t}\n\n\t\t//html\n\t\tElement htmlElement = getNodeOptional(exportNode, \"html\");\n\t\tif (htmlElement != null) {\n\t\t\tboolean htmlStyled = getBoolean(htmlElement, \"styled\");\n\t\t\texportSetting.setHtmlStyled(htmlStyled);\n\n\t\t\tboolean htmlIGB = getBoolean(htmlElement, \"igb\");\n\t\t\texportSetting.setHtmlIGB(htmlIGB);\n\n\t\t\tint htmlRepeatHeader = getInt(htmlElement, \"repeatheader\");\n\t\t\texportSetting.setHtmlRepeatHeader(htmlRepeatHeader);\n\t\t}\n\n\t\treturn exportSetting;\n\t}\n\n\t/***\n\t *\n\t * @param element\n\t * @param settings\n\t * @throws XmlException\n\t */\n\tprivate void parseImportSettings(final Element element, final Settings settings) throws XmlException {\n\t\tNodeList tableNodeList = element.getElementsByTagName(\"import\");\n\t\tfor (int a = 0; a < tableNodeList.getLength(); a++) {\n\t\t\tElement exportNode = (Element) tableNodeList.item(a);\n\t\t\tString toolName = getString(exportNode, \"name\");\n\t\t\tString type = getString(exportNode, \"type\");\n\t\t\tsettings.getImportSettings().put(toolName, type);\n\t\t}\n\t}\n\n\tprivate void parseAssetAdded(final Element element) throws XmlException {\n\t\tNodeList assetNodes = element.getElementsByTagName(\"asset\");\n\t\tMap<Long, Date> assetAdded = new HashMap<>();\n\t\tfor (int i = 0; i < assetNodes.getLength(); i++) {\n\t\t\tElement currentNode = (Element) assetNodes.item(i);\n\t\t\tlong itemID = getLong(currentNode, \"itemid\");\n\t\t\tDate date = getDate(currentNode, \"date\");\n\t\t\tassetAdded.put(itemID, date);\n\t\t}\n\t\tAddedData.getAssets().set(assetAdded); //Import from settings.xml\n\t}\n\n\tpublic enum RegionTypeBackwardCompatibility {\n\t\tNOT_CONFIGURABLE(null),\n\t\tEMPIRE(null),\n\t\tMARKET_HUBS(null),\n\t\tALL_AMARR(null),\n\t\tALL_GALLENTE(null),\n\t\tALL_MINMATAR(null),\n\t\tALL_CALDARI(null),\n\t\tARIDIA(10000054L),\n\t\tDEVOID(10000036L),\n\t\tDOMAIN(10000043L),\n\t\tGENESIS(10000067L),\n\t\tKADOR(10000052L),\n\t\tKOR_AZOR(10000065L),\n\t\tTASH_MURKON(10000020L),\n\t\tTHE_BLEAK_LANDS(10000038L),\n\t\tBLACK_RISE(10000069L),\n\t\tLONETREK(10000016L),\n\t\tTHE_CITADEL(10000033L),\n\t\tTHE_FORGE(10000002L),\n\t\tESSENCE(10000064L),\n\t\tEVERYSHORE(10000037L),\n\t\tPLACID(10000048L),\n\t\tSINQ_LAISON(10000032L),\n\t\tSOLITUDE(10000044L),\n\t\tVERGE_VENDOR(10000068L),\n\t\tMETROPOLIS(10000042L),\n\t\tHEIMATAR(10000030L),\n\t\tMOLDEN_HEATH(10000028L),\n\t\tDERELIK(10000001L),\n\t\tKHANID(10000049L)\n\t\t;\n\n\t\tprivate final Long region;\n\n\t\tprivate RegionTypeBackwardCompatibility(Long region) {\n\t\t\tthis.region = region;\n\t\t}\n\n\t\tpublic Long getRegion() {\n\t\t\treturn region;\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/SettingsWriter.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.io.local;\n\nimport java.io.File;\nimport java.net.Proxy;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder.MarketOrderRange;\nimport net.nikr.eve.jeveasset.data.settings.ColorEntry;\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\nimport net.nikr.eve.jeveasset.data.settings.CopySettings;\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings;\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings;\nimport net.nikr.eve.jeveasset.data.settings.MarketOrdersSettings;\nimport net.nikr.eve.jeveasset.data.settings.PriceDataSettings;\nimport net.nikr.eve.jeveasset.data.settings.ProxyData;\nimport net.nikr.eve.jeveasset.data.settings.ReprocessSettings;\nimport net.nikr.eve.jeveasset.data.settings.RouteAvoidSettings;\nimport net.nikr.eve.jeveasset.data.settings.RouteResult;\nimport net.nikr.eve.jeveasset.data.settings.RoutingSettings;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.Settings.SettingFlag;\nimport net.nikr.eve.jeveasset.data.settings.TrackerData;\nimport net.nikr.eve.jeveasset.data.settings.UserItem;\nimport net.nikr.eve.jeveasset.data.settings.tag.Tag;\nimport net.nikr.eve.jeveasset.data.settings.tag.TagID;\nimport net.nikr.eve.jeveasset.gui.dialogs.settings.SoundsSettingsPanel.SoundOption;\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JFormulaDialog.Formula;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuJumps.Jump;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor.ResizeMode;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor.SimpleColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.View;\nimport net.nikr.eve.jeveasset.gui.sounds.Sound;\nimport net.nikr.eve.jeveasset.gui.tabs.orders.Outbid;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewGroup;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewLocation;\nimport net.nikr.eve.jeveasset.gui.tabs.routing.SolarSystem;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter.StockpileContainer;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter.StockpileFlag;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileItem;\nimport net.nikr.eve.jeveasset.gui.tabs.tracker.TrackerDate;\nimport net.nikr.eve.jeveasset.gui.tabs.tracker.TrackerNote;\nimport net.nikr.eve.jeveasset.gui.tabs.tracker.TrackerSkillPointFilter;\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.w3c.dom.Document;\nimport org.w3c.dom.Element;\n\n\npublic class SettingsWriter extends AbstractXmlWriter {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(SettingsWriter.class);\n\n\tprivate SettingsWriter() { }\n\n\tpublic static boolean save(final Settings settings, final String filename) {\n\t\tif (!new File(FileUtil.getPathTrackerData()).exists()) { //Make sure the tracker data is saved\n\t\t\tTrackerData.save(\"Saving Settings\", true);\n\t\t}\n\t\tSettingsWriter writer = new SettingsWriter();\n\t\treturn writer.write(settings, filename);\n\t}\n\n\tpublic static boolean saveStockpiles(final List<Stockpile> stockpiles, final String filename) {\n\t\tSettingsWriter writer = new SettingsWriter();\n\t\treturn writer.writeStockpiles(stockpiles, filename);\n\t}\n\n\tprivate boolean writeStockpiles(final List<Stockpile> stockpiles, final String filename) {\n\t\tDocument xmldoc;\n\t\ttry {\n\t\t\txmldoc = getXmlDocument(\"settings\");\n\t\t} catch (XmlException ex) {\n\t\t\tLOG.error(\"Stockpile not saved \" + ex.getMessage(), ex);\n\t\t\treturn false;\n\t\t}\n\n\t\twriteStockpiles(xmldoc, stockpiles, new HashMap<>(), true);\n\t\ttry {\n\t\t\twriteXmlFile(xmldoc, filename, false);\n\t\t} catch (XmlException ex) {\n\t\t\tLOG.error(\"Stockpile not saved \" + ex.getMessage(), ex);\n\t\t\treturn false;\n\t\t}\n\t\tLOG.info(\"Stockpile saved\");\n\t\treturn true;\n\t}\n\n\tpublic static boolean saveRoutes(final Map<String, RouteResult> routes, final String filename) {\n\t\tSettingsWriter writer = new SettingsWriter();\n\t\treturn writer.writeRoutes(routes, filename);\n\t}\n\n\tprivate boolean writeRoutes(final Map<String, RouteResult> routes, final String filename) {\n\t\tDocument xmldoc;\n\t\ttry {\n\t\t\txmldoc = getXmlDocument(\"settings\");\n\t\t} catch (XmlException ex) {\n\t\t\tLOG.error(\"Stockpile not saved \" + ex.getMessage(), ex);\n\t\t\treturn false;\n\t\t}\n\t\tElement routingNode = xmldoc.createElementNS(null, \"routingsettings\");\n\t\txmldoc.getDocumentElement().appendChild(routingNode);\n\t\twriteRoutes(xmldoc, routingNode, routes);\n\t\ttry {\n\t\t\twriteXmlFile(xmldoc, filename, false);\n\t\t} catch (XmlException ex) {\n\t\t\tLOG.error(\"Stockpile not saved \" + ex.getMessage(), ex);\n\t\t\treturn false;\n\t\t}\n\t\tLOG.info(\"Stockpile saved\");\n\t\treturn true;\n\t}\n\n\tprivate boolean write(final Settings settings, final String filename) {\n\t\tDocument xmldoc;\n\t\ttry {\n\t\t\txmldoc = getXmlDocument(\"settings\");\n\t\t} catch (XmlException ex) {\n\t\t\tLOG.error(\"Settings not saved \" + ex.getMessage(), ex);\n\t\t\treturn false;\n\t\t}\n\t\t//Add version number\n\t\tsetAttribute(xmldoc.getDocumentElement(), \"version\", SettingsReader.SETTINGS_VERSION);\n\n\t\twriteAssetSettings(xmldoc, settings);\n\t\twriteStockpileGroups(xmldoc, settings);\n\t\twriteStockpiles(xmldoc, settings.getStockpiles(), settings.getStockpileGroupSettings().getStockpileGroups(), false);\n\t\twriteOverviewGroups(xmldoc, settings.getOverviewGroups());\n\t\twriteReprocessSettings(xmldoc, settings.getReprocessSettings());\n\t\twriteWindow(xmldoc, settings);\n\t\twriteProxy(xmldoc, settings.getProxyData());\n\t\twritePriceDataSettings(xmldoc, settings.getPriceDataSettings());\n\t\twriteFlags(xmldoc, settings.getFlags());\n\t\twriteUserPrices(xmldoc, settings.getUserPrices());\n\t\twriteUserItemNames(xmldoc, settings.getUserItemNames());\n\t\twriteEveNames(xmldoc, settings.getEveNames());\n\t\twriteTableFilters(xmldoc, settings.getTableFilters());\n\t\twriteCurrentTableFilters(xmldoc, settings.getCurrentTableFilters(), settings.getCurrentTableFiltersShown());\n\t\twriteCurrentSorting(xmldoc, settings.getCurrentTableSorting());\n\t\twriteTableColumns(xmldoc, settings.getTableColumns());\n\t\twriteTableColumnsWidth(xmldoc, settings.getTableColumnsWidth());\n\t\twriteTableResize(xmldoc, settings.getTableResize());\n\t\twriteTableViews(xmldoc, settings.getTableViews());\n\t\twriteTableJumps(xmldoc, settings.getTableJumps());\n\t\twriteTableFormulas(xmldoc, settings.getTableFormulas());\n\t\twriteTableChanges(xmldoc, settings.getTableChanged());\n\t\twriteExportSettings(xmldoc, settings.getExportSettings(), settings.getCopySettings());\n\t\twriteImportSettings(xmldoc, settings.getImportSettings());\n\t\twriteSkillPlans(xmldoc, settings.getSkillPlans());\n\t\twriteTrackerNotes(xmldoc, settings.getTrackerSettings().getNotes());\n\t\twriteTrackerFilters(xmldoc, settings.getTrackerSettings().getFilters(), settings.getTrackerSettings().isSelectNew(), settings.getTrackerSettings().getSkillPointFilters());\n\t\twriteTrackerSettings(xmldoc, settings);\n\t\twriteOwners(xmldoc, settings.getOwners(), settings.getOwnersNextUpdate());\n\t\twriteTags(xmldoc, settings.getTags());\n\t\twriteRoutingSettings(xmldoc, settings.getRoutingSettings());\n\t\twriteJumpsSettings(xmldoc, settings.getJumpsAvoidSettings());\n\t\twriteMarketOrderOutbid(xmldoc, settings.getPublicMarketOrdersNextUpdate(), settings.getPublicMarketOrdersLastUpdate(), settings.getOutbidOrderRange(), settings.getMarketOrdersOutbid());\n\t\twriteMarketOrdersSettings(xmldoc, settings.getMarketOrdersSettings());\n\t\twriteShowTool(xmldoc, settings.getShowTools(), settings.isSaveToolsOnExit());\n\t\twriteColorSettings(xmldoc, settings.getColorSettings());\n\t\twriteSoundSettings(xmldoc, settings.getSoundSettings());\n\t\twriteFactionWarfareSystemOwners(xmldoc, settings);\n\t\twritePriceHistorySettings(xmldoc, settings);\n\t\twriteManufacturingPriceSettings(xmldoc, settings.getManufacturingSettings());\n\t\ttry {\n\t\t\twriteXmlFile(xmldoc, filename, true);\n\t\t} catch (XmlException ex) {\n\t\t\tLOG.error(\"Settings not saved \" + ex.getMessage(), ex);\n\t\t\treturn false;\n\t\t}\n\t\tLOG.info(\"Settings saved\");\n\t\treturn true;\n\t}\n\n\tprivate void writeSkillPlans(final Document xmldoc, final Map<String, Map<Integer, Integer>> skillPlans) {\n\t\tElement node = xmldoc.createElementNS(null, \"skillplans\");\n\t\txmldoc.getDocumentElement().appendChild(node);\n\t\tfor (Map.Entry<String, Map<Integer, Integer>> entry : skillPlans.entrySet()) {\n\t\t\tElement planNode = xmldoc.createElementNS(null, \"plan\");\n\t\t\tsetAttribute(planNode, \"name\", entry.getKey());\n\t\t\tnode.appendChild(planNode);\n\t\t\tfor (Map.Entry<Integer, Integer> req : entry.getValue().entrySet()) {\n\t\t\t\tElement reqNode = xmldoc.createElementNS(null, \"req\");\n\t\t\t\tsetAttribute(reqNode, \"typeid\", req.getKey());\n\t\t\t\tsetAttribute(reqNode, \"level\", req.getValue());\n\t\t\t\tplanNode.appendChild(reqNode);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void writeManufacturingPriceSettings(Document xmldoc, ManufacturingSettings settings) {\n\t\tElement manufacturingNode = xmldoc.createElementNS(null, \"manufacturing\");\n\t\tsetAttributeOptional(manufacturingNode, \"nextupdate\", settings.getNextUpdate());\n\t\tsetAttributeOptional(manufacturingNode, \"facility\", settings.getFacility());\n\t\tsetAttributeOptional(manufacturingNode, \"rigs\", settings.getRigs());\n\t\tsetAttributeOptional(manufacturingNode, \"security\", settings.getSecurity());\n\t\tsetAttributeOptional(manufacturingNode, \"systemid\", settings.getSystemID());\n\t\tsetAttributeOptional(manufacturingNode, \"me\", settings.getMaterialEfficiency());\n\t\tsetAttributeOptional(manufacturingNode, \"tax\", settings.getTax());\n\t\txmldoc.getDocumentElement().appendChild(manufacturingNode);\n\t\tfor (Map.Entry<Integer, Double> entry : settings.getPrices().entrySet()) {\n\t\t\tElement priceNode = xmldoc.createElementNS(null, \"price\");\n\t\t\tsetAttribute(priceNode, \"typeid\", entry.getKey());\n\t\t\tsetAttributeOptional(priceNode, \"price\", entry.getValue());\n\t\t\tmanufacturingNode.appendChild(priceNode);\n\t\t}\n\t\tfor (Map.Entry<Integer, Float> entry : settings.getSystems().entrySet()) {\n\t\t\tElement systemNode = xmldoc.createElementNS(null, \"system\");\n\t\t\tsetAttribute(systemNode, \"systemid\", entry.getKey());\n\t\t\tsetAttributeOptional(systemNode, \"index\", entry.getValue());\n\t\t\tmanufacturingNode.appendChild(systemNode);\n\t\t}\n\t}\n\n\tprivate void writePriceHistorySettings(Document xmldoc, Settings settings) {\n\t\tElement priceHistoryNode = xmldoc.createElementNS(null, \"pricehistory\");\n\t\txmldoc.getDocumentElement().appendChild(priceHistoryNode);\n\t\tfor (Map.Entry<String, Set<Integer>> entry : settings.getPriceHistorySets().entrySet()) {\n\t\t\tElement setNode = xmldoc.createElementNS(null, \"set\");\n\t\t\tsetAttribute(setNode, \"name\", entry.getKey());\n\t\t\tsetAttributeOptional(setNode, \"ids\", entry.getValue());\n\t\t\tpriceHistoryNode.appendChild(setNode);\n\t\t}\n\t}\n\n\tprivate void writeFactionWarfareSystemOwners(Document xmldoc, Settings settings) {\n\t\tElement factionWarfareSystemOwnersNode = xmldoc.createElementNS(null, \"factionwarfaresystemowners\");\n\t\txmldoc.getDocumentElement().appendChild(factionWarfareSystemOwnersNode);\n\t\tsetAttribute(factionWarfareSystemOwnersNode, \"factionwarfarenextupdate\", settings.getFactionWarfareNextUpdate());\n\t\tfor (Map.Entry<Long, String> entry : settings.getFactionWarfareSystemOwners().entrySet()) {\n\t\t\tElement systemNode = xmldoc.createElementNS(null, \"system\");\n\t\t\tsetAttribute(systemNode, \"system\", entry.getKey());\n\t\t\tsetAttributeOptional(systemNode, \"faction\", entry.getValue());\n\t\t\tfactionWarfareSystemOwnersNode.appendChild(systemNode);\n\t\t}\n\t}\n\n\tprivate void writeColorSettings(Document xmldoc, ColorSettings colorSettings) {\n\t\tElement colorSettingsNode = xmldoc.createElementNS(null, \"colorsettings\");\n\t\txmldoc.getDocumentElement().appendChild(colorSettingsNode);\n\t\tsetAttributeOptional(colorSettingsNode, \"theme\", colorSettings.getColorTheme().getType());\n\t\tsetAttribute(colorSettingsNode, \"lookandfeel\", colorSettings.getLookAndFeelClass());\n\t\tfor (ColorEntry colorEntry : ColorEntry.values()) {\n\t\t\tElement colorNode = xmldoc.createElementNS(null, \"color\");\n\t\t\tsetAttribute(colorNode, \"name\", colorEntry);\n\t\t\tsetAttributeOptional(colorNode, \"background\", colorSettings.getBackground(colorEntry));\n\t\t\tsetAttributeOptional(colorNode, \"foreground\", colorSettings.getForeground(colorEntry));\n\t\t\tcolorSettingsNode.appendChild(colorNode);\n\t\t}\n\t}\n\n\tprivate void writeSoundSettings(Document xmldoc, Map<SoundOption, Sound> soundSettings) {\n\t\tElement soundSettingsNode = xmldoc.createElementNS(null, \"soundsettings\");\n\t\txmldoc.getDocumentElement().appendChild(soundSettingsNode);\n\t\tfor (Map.Entry<SoundOption, Sound> entry : soundSettings.entrySet()) {\n\t\t\tElement soundNode = xmldoc.createElementNS(null, \"sound\");\n\t\t\tsetAttribute(soundNode, \"option\", entry.getKey());\n\t\t\tsetAttribute(soundNode, \"sound\", entry.getValue().getID());\n\t\t\tsoundSettingsNode.appendChild(soundNode);\n\t\t}\n\t}\n\n\tprivate void writeShowTool(Document xmldoc, List<String> showTools, boolean saveToolsOnExit) {\n\t\tElement showToolsNode = xmldoc.createElementNS(null, \"showtools\");\n\t\txmldoc.getDocumentElement().appendChild(showToolsNode);\n\t\tsetAttribute(showToolsNode, \"saveonexit\", saveToolsOnExit);\n\t\tsetAttribute(showToolsNode, \"show\", showTools);\n\t}\n\n\tprivate void writeMarketOrderOutbid(Document xmldoc, Date publicMarketOrdersNextUpdate, Date publicMarketOrdersLastUpdate, MarketOrderRange outbidOrderRange, Map<Long, Outbid> marketOrdersOutbid) {\n\t\tElement marketOrderOutbidNode = xmldoc.createElementNS(null, \"marketorderoutbid\");\n\t\txmldoc.getDocumentElement().appendChild(marketOrderOutbidNode);\n\t\tsetAttribute(marketOrderOutbidNode, \"nextupdate\", publicMarketOrdersNextUpdate);\n\t\tsetAttributeOptional(marketOrderOutbidNode, \"lastupdate\", publicMarketOrdersLastUpdate);\n\t\tsetAttribute(marketOrderOutbidNode, \"outbidorderrange\", outbidOrderRange);\n\t\tfor (Map.Entry<Long, Outbid> entry : marketOrdersOutbid.entrySet()) {\n\t\t\tElement outbidNode = xmldoc.createElementNS(null, \"outbid\");\n\t\t\tsetAttribute(outbidNode, \"id\", entry.getKey());\n\t\t\tsetAttribute(outbidNode, \"price\", entry.getValue().getPrice());\n\t\t\tsetAttribute(outbidNode, \"count\", entry.getValue().getCount());\n\t\t\tmarketOrderOutbidNode.appendChild(outbidNode);\n\t\t}\n\t}\n\n\tprivate void writeRoutingSettings(Document xmldoc, RoutingSettings routingSettings) {\n\t\tElement routingNode = xmldoc.createElementNS(null, \"routingsettings\");\n\t\twriteRouteAvoidSettings(xmldoc, routingNode, routingSettings.getAvoidSettings());\n\t\twriteRoutes(xmldoc, routingNode, routingSettings.getRoutes());\n\t}\n\n\tprivate void writeJumpsSettings(Document xmldoc, RouteAvoidSettings routeAvoidSettings) {\n\t\tElement routingNode = xmldoc.createElementNS(null, \"jumpssettings\");\n\t\twriteRouteAvoidSettings(xmldoc, routingNode, routeAvoidSettings);\n\t}\n\n\tprivate void writeRouteAvoidSettings(Document xmldoc, Element routingNode, RouteAvoidSettings routeAvoidSettings) {\n\t\txmldoc.getDocumentElement().appendChild(routingNode);\n\t\tsetAttribute(routingNode, \"securitymaximum\", routeAvoidSettings.getSecMax());\n\t\tsetAttribute(routingNode, \"securityminimum\", routeAvoidSettings.getSecMin());\n\t\tfor (long systemID : routeAvoidSettings.getAvoid().keySet()) {\n\t\t\tElement systemNode = xmldoc.createElementNS(null, \"routingsystem\");\n\t\t\tsetAttribute(systemNode, \"id\", systemID);\n\t\t\troutingNode.appendChild(systemNode);\n\t\t}\n\t\tfor (Map.Entry<String, Set<Long>> entry : routeAvoidSettings.getPresets().entrySet()) {\n\t\t\tElement presetNode = xmldoc.createElementNS(null, \"routingpreset\");\n\t\t\tsetAttribute(presetNode, \"name\", entry.getKey());\n\t\t\troutingNode.appendChild(presetNode);\n\t\t\tfor (Long systemID : entry.getValue()) {\n\t\t\t\tElement systemNode = xmldoc.createElementNS(null, \"presetsystem\");\n\t\t\t\tsetAttribute(systemNode, \"id\", systemID);\n\t\t\t\tpresetNode.appendChild(systemNode);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void writeRoutes(Document xmldoc, Element routingNode, Map<String, RouteResult> routes) {\n\t\tfor (Map.Entry<String, RouteResult> entry : routes.entrySet()) {\n\t\t\tElement routeNode = xmldoc.createElementNS(null, \"route\");\n\t\t\tRouteResult routeResult = entry.getValue();\n\t\t\tsetAttribute(routeNode, \"name\", entry.getKey());\n\t\t\tsetAttribute(routeNode, \"waypoints\", routeResult.getWaypoints());\n\t\t\tsetAttribute(routeNode, \"algorithmname\", routeResult.getAlgorithmName());\n\t\t\tsetAttribute(routeNode, \"algorithmtime\",routeResult.getAlgorithmTime());\n\t\t\tsetAttribute(routeNode, \"jumps\", routeResult.getJumps());\n\t\t\tsetAttribute(routeNode, \"avoid\", routeResult.getAvoid());\n\t\t\tsetAttribute(routeNode, \"security\", routeResult.getSecurity());\n\t\t\troutingNode.appendChild(routeNode);\n\t\t\tfor (List<SolarSystem> systems : routeResult.getRoute()) {\n\t\t\t\tElement systemsNode = xmldoc.createElementNS(null, \"routesystems\");\n\t\t\t\tfor (SolarSystem system : systems) {\n\t\t\t\t\tElement systemNode = xmldoc.createElementNS(null, \"routesystem\");\n\t\t\t\t\tsetAttribute(systemNode, \"systemid\", system.getSystemID());\n\t\t\t\t\tsystemsNode.appendChild(systemNode);\n\t\t\t\t}\n\t\t\t\tList<SolarSystem> stations = routeResult.getStations().get(systems.get(0).getSystemID());\n\t\t\t\tif (stations != null) {\n\t\t\t\t\tfor (SolarSystem station : stations) {\n\t\t\t\t\t\tElement stationNode = xmldoc.createElementNS(null, \"routestation\");\n\t\t\t\t\t\tsetAttribute(stationNode, \"stationid\", station.getLocationID());\n\t\t\t\t\t\tsystemsNode.appendChild(stationNode);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trouteNode.appendChild(systemsNode);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void writeTags(Document xmldoc, Map<String, Tag> tags) {\n\t\tElement tagsNode = xmldoc.createElementNS(null, \"tags\");\n\t\txmldoc.getDocumentElement().appendChild(tagsNode);\n\t\tfor (Tag tag : tags.values()) {\n\t\t\tElement tagNode = xmldoc.createElementNS(null, \"tag\");\n\t\t\tsetAttribute(tagNode, \"name\", tag.getName());\n\t\t\tsetAttribute(tagNode, \"background\", tag.getColor().getBackgroundHtml());\n\t\t\tsetAttribute(tagNode, \"foreground\", tag.getColor().getForegroundHtml());\n\t\t\ttagsNode.appendChild(tagNode);\n\t\t\tfor (TagID tagID : tag.getIDs()) {\n\t\t\t\tElement tagIdNode = xmldoc.createElementNS(null, \"tagid\");\n\t\t\t\tsetAttribute(tagIdNode, \"tool\", tagID.getTool());\n\t\t\t\tsetAttribute(tagIdNode, \"id\", tagID.getID());\n\t\t\t\tsetAttribute(tagIdNode, \"d\", tagID.getDouble());\n\t\t\t\ttagNode.appendChild(tagIdNode);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void writeOwners(final Document xmldoc, final Map<Long, String> owners, final Map<Long, Date> ownersNextUpdate) {\n\t\tElement trackerDataNode = xmldoc.createElementNS(null, \"owners\");\n\t\txmldoc.getDocumentElement().appendChild(trackerDataNode);\n\t\tfor (Map.Entry<Long, String> entry : owners.entrySet()) {\n\t\t\tElement ownerNode = xmldoc.createElementNS(null, \"owner\");\n\t\t\tsetAttribute(ownerNode, \"name\", entry.getValue());\n\t\t\tsetAttribute(ownerNode, \"id\", entry.getKey());\n\t\t\tsetAttributeOptional(ownerNode, \"date\", ownersNextUpdate.get(entry.getKey()));\n\t\t\ttrackerDataNode.appendChild(ownerNode);\n\t\t}\n\t}\n\n\tprivate void writeTrackerFilters(final Document xmldoc, final Map<String, Boolean> trackerFilters, boolean selectNew, Map<String, TrackerSkillPointFilter> trackerSkillPointFilters) {\n\t\tElement trackerDataNode = xmldoc.createElementNS(null, \"trackerfilters\");\n\t\txmldoc.getDocumentElement().appendChild(trackerDataNode);\n\t\tsetAttribute(trackerDataNode, \"selectnew\", selectNew);\n\t\tfor (Map.Entry<String, Boolean> entry : trackerFilters.entrySet()) {\n\t\t\tElement ownerNode = xmldoc.createElementNS(null, \"trackerfilter\");\n\t\t\tsetAttribute(ownerNode, \"id\", entry.getKey());\n\t\t\tsetAttribute(ownerNode, \"selected\", entry.getValue());\n\t\t\ttrackerDataNode.appendChild(ownerNode);\n\t\t}\n\t\tfor (Map.Entry<String, TrackerSkillPointFilter> entry : trackerSkillPointFilters.entrySet()) {\n\t\t\tElement ownerNode = xmldoc.createElementNS(null, \"skillpointfilters\");\n\t\t\tTrackerSkillPointFilter filter = entry.getValue();\n\t\t\tsetAttribute(ownerNode, \"id\", entry.getKey());\n\t\t\tsetAttribute(ownerNode, \"selected\", filter.isEnabled());\n\t\t\tsetAttribute(ownerNode, \"mimimum\", filter.getMinimum());\n\t\t\ttrackerDataNode.appendChild(ownerNode);\n\t\t}\n\t}\n\n\tprivate void writeTrackerSettings(final Document xmldoc, Settings settings) {\n\t\tElement trackerSettingsNode = xmldoc.createElementNS(null, \"trackersettings\");\n\t\txmldoc.getDocumentElement().appendChild(trackerSettingsNode);\n\t\tsetAttribute(trackerSettingsNode, \"allprofiles\", settings.getTrackerSettings().isAllProfiles());\n\t\tsetAttribute(trackerSettingsNode, \"charactercorporations\", settings.getTrackerSettings().isCharacterCorporations());\n\t\tsetAttributeOptional(trackerSettingsNode, \"selectedowners\", settings.getTrackerSettings().getSelectedOwners());\n\t\tsetAttributeOptional(trackerSettingsNode, \"fromdate\", settings.getTrackerSettings().getFromDate());\n\t\tsetAttributeOptional(trackerSettingsNode, \"todate\", settings.getTrackerSettings().getToDate());\n\t\tsetAttribute(trackerSettingsNode, \"displaytype\", settings.getTrackerSettings().getDisplayType());\n\t\tsetAttribute(trackerSettingsNode, \"includezero\", settings.getTrackerSettings().isIncludeZero());\n\t\tsetAttribute(trackerSettingsNode, \"showoptions\", settings.getTrackerSettings().getShowOptions());\n\t}\n\n\tprivate void writeTrackerNotes(final Document xmldoc, final Map<TrackerDate, TrackerNote> trackerNotes) {\n\t\tElement notesNode = xmldoc.createElementNS(null, \"trackernotes\");\n\t\txmldoc.getDocumentElement().appendChild(notesNode);\n\t\tfor (Map.Entry<TrackerDate, TrackerNote> entry : trackerNotes.entrySet()) {\n\t\t\tElement noteNode = xmldoc.createElementNS(null, \"trackernote\");\n\t\t\tsetAttribute(noteNode, \"note\", entry.getValue().getNote());\n\t\t\tsetAttribute(noteNode, \"date\", entry.getKey().getDate());\n\t\t\tnotesNode.appendChild(noteNode);\n\t\t}\n\t}\n\n\t/***\n\t * Write setting for table filters to the xml settings document 'tablefilters' element.\n\t *\n\t * @param xmldoc Settings document to write to.\n\t * @param tableFilters Saved filters to be written to the document zero to many for each table.\n\t */\n\tprivate void writeTableFilters(final Document xmldoc, final Map<String, Map<String, List<Filter>>> tableFilters) {\n\t\tElement tableFiltersNode = xmldoc.createElementNS(null, \"tablefilters\");\n\t\txmldoc.getDocumentElement().appendChild(tableFiltersNode);\n\t\tfor (Map.Entry<String, Map<String, List<Filter>>> entry : tableFilters.entrySet()) {\n\t\t\tElement tableNode = xmldoc.createElementNS(null, \"table\");\n\t\t\tsetAttribute(tableNode, \"name\", entry.getKey());\n\t\t\ttableFiltersNode.appendChild(tableNode);\n\t\t\tfor (Map.Entry<String, List<Filter>> filters : entry.getValue().entrySet()) {\n\t\t\t\tElement filterNode = xmldoc.createElementNS(null, \"filter\");\n\t\t\t\tsetAttribute(filterNode, \"name\", filters.getKey());\n\t\t\t\ttableNode.appendChild(filterNode);\n\t\t\t\twriteFilters(xmldoc, filterNode, filters);\n\t\t\t}\n\t\t}\n\t}\n\n\t/***\n\t * Write setting for current table filters to the xml settings document 'currnettablefilters' element.\n\t *\n\t * @param xmldoc Settings document to write to.\n\t * @param tableFilters Current filters to be written to the document one per table.\n\t * @param tableFiltersShow Current filters visibility state to be written to the document one per table.\n\t */\n\tprivate void writeCurrentTableFilters(final Document xmldoc, final Map<String, List<Filter>> tableFilters, final Map<String, Boolean> tableFiltersShow) {\n\t\tElement currentTableFiltersNode = xmldoc.createElementNS(null, \"currenttablefilters\");\n\t\txmldoc.getDocumentElement().appendChild(currentTableFiltersNode);\n\t\tfor (Map.Entry<String, List<Filter>> filters : tableFilters.entrySet()) {\n\t\t\tElement tableNode = xmldoc.createElementNS(null, \"table\");\n\t\t\tsetAttribute(tableNode, \"name\", filters.getKey());\n\t\t\tcurrentTableFiltersNode.appendChild(tableNode);\n\t\t\tElement filterNode = xmldoc.createElementNS(null, \"filter\");\n\t\t\tsetAttribute(filterNode, \"show\", tableFiltersShow.getOrDefault(filters.getKey(), true));\n\t\t\ttableNode.appendChild(filterNode);\n\t\t\twriteFilters(xmldoc, filterNode, filters);\n\t\t}\n\t}\n\n\t/***\n\t * Write setting for current table filters to the xml settings document 'currnettablefilters' element.\n\t *\n\t * @param xmldoc Settings document to write to.\n\t * @param currentTableSorting Current sorting to be written to the document one per table.\n\t */\n\tprivate void writeCurrentSorting(final Document xmldoc, final Map<String, String> currentTableSorting) {\n\t\tElement currentTableSortingNode = xmldoc.createElementNS(null, \"currenttablesorting\");\n\t\txmldoc.getDocumentElement().appendChild(currentTableSortingNode);\n\t\tfor (Map.Entry<String, String> filters : currentTableSorting.entrySet()) {\n\t\t\tElement tableNode = xmldoc.createElementNS(null, \"table\");\n\t\t\tsetAttribute(tableNode, \"name\", filters.getKey());\n\t\t\tsetAttribute(tableNode, \"sorting\", filters.getValue());\n\t\t\tcurrentTableSortingNode.appendChild(tableNode);\n\t\t}\n\t}\n\n\t/***\n\t * Write settings for individual filters rows to the xml settings document.\n\t *\n\t * @param xmldoc Settings document to write to.\n\t * @param parentNode Node of the xml document to write the filter to.\n\t * @param filters Filter to be written to the document row by row.\n\t */\n\tprivate void writeFilters(final Document xmldoc, final Element parentNode, final Map.Entry<String, List<Filter>> filters) {\n\t\tfor (Filter filter : filters.getValue()) {\n\t\t\tElement rowNode = xmldoc.createElementNS(null, \"row\");\n\t\t\tsetAttribute(rowNode, \"group\", filter.getGroup());\n\t\t\tsetAttribute(rowNode, \"text\", filter.getText());\n\t\t\tsetAttribute(rowNode, \"column\", filter.getColumn().name());\n\t\t\tsetAttribute(rowNode, \"compare\", filter.getCompareType());\n\t\t\tsetAttribute(rowNode, \"logic\", filter.getLogic());\n\t\t\tsetAttribute(rowNode, \"enabled\", filter.isEnabled());\n\t\t\tparentNode.appendChild(rowNode);\n\t\t}\n\t}\n\n\tprivate void writeTableColumns(final Document xmldoc, final Map<String, List<SimpleColumn>> tableColumns) {\n\t\tElement tableColumnsNode = xmldoc.createElementNS(null, \"tablecolumns\");\n\t\txmldoc.getDocumentElement().appendChild(tableColumnsNode);\n\t\tfor (Map.Entry<String, List<SimpleColumn>> entry : tableColumns.entrySet()) {\n\t\t\tElement tableNode = xmldoc.createElementNS(null, \"table\");\n\t\t\tsetAttribute(tableNode, \"name\", entry.getKey());\n\t\t\ttableColumnsNode.appendChild(tableNode);\n\t\t\tfor (SimpleColumn column : entry.getValue()) {\n\t\t\t\tElement columnNode = xmldoc.createElementNS(null, \"column\");\n\t\t\t\tsetAttribute(columnNode, \"name\", column.getEnumName());\n\t\t\t\tsetAttribute(columnNode, \"shown\", column.isShown());\n\t\t\t\ttableNode.appendChild(columnNode);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void writeTableColumnsWidth(final Document xmldoc, final Map<String, Map<String, Integer>> tableColumnsWidth) {\n\t\tElement tableColumnsWidthNode = xmldoc.createElementNS(null, \"tablecolumnswidth\");\n\t\txmldoc.getDocumentElement().appendChild(tableColumnsWidthNode);\n\t\tfor (Map.Entry<String, Map<String, Integer>> table : tableColumnsWidth.entrySet()) {\n\t\t\tElement tableNode = xmldoc.createElementNS(null, \"table\");\n\t\t\tsetAttribute(tableNode, \"name\", table.getKey());\n\t\t\ttableColumnsWidthNode.appendChild(tableNode);\n\t\t\tfor (Map.Entry<String, Integer> column : table.getValue().entrySet()) {\n\t\t\t\tElement columnNode = xmldoc.createElementNS(null, \"column\");\n\t\t\t\tsetAttribute(columnNode, \"column\", column.getKey());\n\t\t\t\tsetAttribute(columnNode, \"width\", column.getValue());\n\t\t\t\ttableNode.appendChild(columnNode);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void writeTableResize(final Document xmldoc, final Map<String, ResizeMode> tableResize) {\n\t\tElement tableResizeNode = xmldoc.createElementNS(null, \"tableresize\");\n\t\txmldoc.getDocumentElement().appendChild(tableResizeNode);\n\t\tfor (Map.Entry<String, ResizeMode> entry : tableResize.entrySet()) {\n\t\t\tElement tableNode = xmldoc.createElementNS(null, \"table\");\n\t\t\tsetAttribute(tableNode, \"name\", entry.getKey());\n\t\t\tsetAttribute(tableNode, \"resize\", entry.getValue());\n\t\t\ttableResizeNode.appendChild(tableNode);\n\t\t}\n\t}\n\n\tprivate void writeTableViews(final Document xmldoc, final Map<String, Map<String ,View>> tableViews) {\n\t\tElement tableViewsNode = xmldoc.createElementNS(null, \"tableviews\");\n\t\txmldoc.getDocumentElement().appendChild(tableViewsNode);\n\t\tfor (Map.Entry<String, Map<String ,View>> entry : tableViews.entrySet()) {\n\t\t\tElement viewToolNode = xmldoc.createElementNS(null, \"viewtool\");\n\t\t\tsetAttribute(viewToolNode, \"tool\", entry.getKey());\n\t\t\ttableViewsNode.appendChild(viewToolNode);\n\t\t\tfor (View view : entry.getValue().values()) {\n\t\t\t\tElement viewNode = xmldoc.createElementNS(null, \"view\");\n\t\t\t\tsetAttribute(viewNode, \"name\", view.getName());\n\t\t\t\tviewToolNode.appendChild(viewNode);\n\t\t\t\tfor (SimpleColumn column : view.getColumns()) {\n\t\t\t\t\tElement viewColumnNode = xmldoc.createElementNS(null, \"viewcolumn\");\n\t\t\t\t\tsetAttribute(viewColumnNode, \"name\", column.getEnumName());\n\t\t\t\t\tsetAttribute(viewColumnNode, \"shown\", column.isShown());\n\t\t\t\t\tviewNode.appendChild(viewColumnNode);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void writeTableFormulas(final Document xmldoc, final Map<String, List<Formula>> formulas) {\n\t\tElement tableFormulasNode = xmldoc.createElementNS(null, \"tableformulas\");\n\t\txmldoc.getDocumentElement().appendChild(tableFormulasNode);\n\t\tfor (Map.Entry<String, List<Formula>> entry : formulas.entrySet()) {\n\t\t\tElement formulasNode = xmldoc.createElementNS(null, \"formulas\");\n\t\t\tsetAttribute(formulasNode, \"tool\", entry.getKey());\n\t\t\ttableFormulasNode.appendChild(formulasNode);\n\t\t\tfor (Formula formula : entry.getValue()) {\n\t\t\t\tElement formulaNode = xmldoc.createElementNS(null, \"formula\");\n\t\t\t\tsetAttribute(formulaNode, \"name\", formula.getColumnName());\n\t\t\t\tsetAttribute(formulaNode, \"expression\", formula.getOriginalExpression());\n\t\t\t\tsetAttributeOptional(formulaNode, \"index\", formula.getIndex());\n\t\t\t\tformulasNode.appendChild(formulaNode);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void writeTableChanges(final Document xmldoc, final Map<String, Date> changes) {\n\t\tElement tableChangesNode = xmldoc.createElementNS(null, \"tablechanges\");\n\t\txmldoc.getDocumentElement().appendChild(tableChangesNode);\n\t\tfor (Map.Entry<String, Date> entry : changes.entrySet()) {\n\t\t\tElement changesNode = xmldoc.createElementNS(null, \"changes\");\n\t\t\tsetAttribute(changesNode, \"tool\", entry.getKey());\n\t\t\tsetAttribute(changesNode, \"date\", entry.getValue());\n\t\t\ttableChangesNode.appendChild(changesNode);\n\t\t}\n\t}\n\n\tprivate void writeTableJumps(final Document xmldoc, final Map<String, List<Jump>> jumps) {\n\t\tElement tableJumpsNode = xmldoc.createElementNS(null, \"tablejumps\");\n\t\txmldoc.getDocumentElement().appendChild(tableJumpsNode);\n\t\tfor (Map.Entry<String, List<Jump>> entry : jumps.entrySet()) {\n\t\t\tElement jumpsNode = xmldoc.createElementNS(null, \"jumps\");\n\t\t\tsetAttribute(jumpsNode, \"tool\", entry.getKey());\n\t\t\ttableJumpsNode.appendChild(jumpsNode);\n\t\t\tfor (Jump jump : entry.getValue()) {\n\t\t\t\tElement jumpNode = xmldoc.createElementNS(null, \"jump\");\n\t\t\t\tsetAttribute(jumpNode, \"systemid\", jump.getSystemID());\n\t\t\t\tsetAttributeOptional(jumpNode, \"index\", jump.getIndex());\n\t\t\t\tjumpsNode.appendChild(jumpNode);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void writeAssetSettings(final Document xmldoc, final Settings settings) {\n\t\tElement parentNode = xmldoc.createElementNS(null, \"assetsettings\");\n\t\txmldoc.getDocumentElement().appendChild(parentNode);\n\t\tsetAttribute(parentNode, \"maximumpurchaseage\", settings.getMaximumPurchaseAge());\n\t\tsetAttribute(parentNode, \"transactionprofitprice\", settings.getTransactionProfitPrice());\n\t\tsetAttribute(parentNode, \"transactionprofitmargin\", settings.getTransactionProfitMargin());\n\t}\n\n\tprivate void writeStockpileGroups(final Document xmldoc, final Settings settings) {\n\t\tElement parentNode = xmldoc.createElementNS(null, \"stockpilegroups\");\n\t\txmldoc.getDocumentElement().appendChild(parentNode);\n\t\tsetAttribute(parentNode, \"stockpilegroup2\", settings.getStockpileColorGroup2());\n\t\tsetAttribute(parentNode, \"stockpilegroup3\", settings.getStockpileColorGroup3());\n\t}\n\n\t/**\n\t * -!- `!´ IMPORTANT `!´ -!-\n\t * StockpileDataWriter and StockpileDataReader needs to be updated too - on any changes!!!\n\t */\n\tprivate void writeStockpiles(final Document xmldoc, final List<Stockpile> stockpiles, Map<Stockpile, String> groups, boolean export) {\n\t\tElement parentNode = xmldoc.createElementNS(null, \"stockpiles\");\n\t\txmldoc.getDocumentElement().appendChild(parentNode);\n\t\tfor (Stockpile stockpile : stockpiles) {\n\t\t\t//STOCKPILE\n\t\t\tElement stockpileNode = xmldoc.createElementNS(null, \"stockpile\");\n\t\t\tsetAttribute(stockpileNode, \"name\", stockpile.getName());\n\t\t\tif (!export) { //Risk of collision, better to generate a new one on import\n\t\t\t\tsetAttribute(stockpileNode, \"id\", stockpile.getStockpileID());\n\t\t\t}\n\t\t\tsetAttribute(stockpileNode, \"multiplier\", stockpile.getMultiplier());\n\t\t\tString group = groups.get(stockpile);\n\t\t\tif (group != null && !group.isEmpty()) {\n\t\t\t\tsetAttribute(stockpileNode, \"stockpilegroup\", group);\n\t\t\t}\n\t\t\tsetAttribute(stockpileNode, \"matchall\", stockpile.isMatchAll());\n\t\t\t//ITEMS\n\t\t\tfor (StockpileItem item : stockpile.getItems()) {\n\t\t\t\tif (item.isTotal()) {\n\t\t\t\t\tcontinue; //Ignore Total\n\t\t\t\t}\n\t\t\t\tElement itemNode = xmldoc.createElementNS(null, \"item\");\n\t\t\t\tif (!export) { //Risk of collision, better to generate a new one on import\n\t\t\t\t\tsetAttribute(itemNode, \"id\", item.getID());\n\t\t\t\t}\n\t\t\t\tsetAttribute(itemNode, \"typeid\", item.getItemTypeID());\n\t\t\t\tsetAttribute(itemNode, \"minimum\", item.getCountMinimum());\n\t\t\t\tsetAttribute(itemNode, \"runs\", item.isRuns());\n\t\t\t\tsetAttribute(itemNode, \"ignoremultiplier\", item.isIgnoreMultiplier());\n\t\t\t\tstockpileNode.appendChild(itemNode);\n\t\t\t}\n\t\t\t//SUBPILES\n\t\t\tfor (Map.Entry<Stockpile, Double> entry : stockpile.getSubpiles().entrySet()) {\n\t\t\t\tElement subpileNode = xmldoc.createElementNS(null, \"subpile\");\n\t\t\t\tsubpileNode.setAttributeNS(null, \"name\", entry.getKey().getName());\n\t\t\t\tsubpileNode.setAttributeNS(null, \"minimum\", String.valueOf(entry.getValue()));\n\t\t\t\tstockpileNode.appendChild(subpileNode);\n\t\t\t}\n\t\t\t//FILTERS\n\t\t\tfor (StockpileFilter filter : stockpile.getFilters()) {\n\t\t\t\tElement filterNode = xmldoc.createElementNS(null, \"stockpilefilter\");\n\t\t\t\tsetAttribute(filterNode, \"locationid\", filter.getLocation().getLocationID());\n\t\t\t\tsetAttribute(filterNode, \"sellingcontracts\", filter.isSellingContracts());\n\t\t\t\tsetAttribute(filterNode, \"soldcontracts\", filter.isSoldContracts());\n\t\t\t\tsetAttribute(filterNode, \"buyingcontracts\", filter.isBuyingContracts());\n\t\t\t\tsetAttribute(filterNode, \"boughtcontracts\", filter.isBoughtContracts());\n\t\t\t\tsetAttribute(filterNode, \"exclude\", filter.isExclude());\n\t\t\t\tsetAttributeOptional(filterNode, \"singleton\", filter.isSingleton());\n\t\t\t\tsetAttributeOptional(filterNode, \"jobsdaysless\", filter.getJobsDaysLess());\n\t\t\t\tsetAttributeOptional(filterNode, \"jobsdaysmore\", filter.getJobsDaysMore());\n\t\t\t\tsetAttribute(filterNode, \"inventory\", filter.isAssets());\n\t\t\t\tsetAttribute(filterNode, \"sellorders\", filter.isSellOrders());\n\t\t\t\tsetAttribute(filterNode, \"buyorders\", filter.isBuyOrders());\n\t\t\t\tsetAttribute(filterNode, \"buytransactions\", filter.isBuyTransactions());\n\t\t\t\tsetAttribute(filterNode, \"selltransactions\", filter.isSellTransactions());\n\t\t\t\tsetAttribute(filterNode, \"jobs\", filter.isJobs());\n\t\t\t\tstockpileNode.appendChild(filterNode);\n\t\t\t\tfor (Long ownerID : filter.getOwnerIDs()) {\n\t\t\t\t\tElement ownerNode = xmldoc.createElementNS(null, \"owner\");\n\t\t\t\t\tsetAttribute(ownerNode, \"ownerid\", ownerID);\n\t\t\t\t\tfilterNode.appendChild(ownerNode);\n\t\t\t\t}\n\t\t\t\tfor (StockpileContainer container : filter.getContainers()) {\n\t\t\t\t\tElement containerNode = xmldoc.createElementNS(null, \"container\");\n\t\t\t\t\tsetAttribute(containerNode, \"container\", container.getContainer());\n\t\t\t\t\tsetAttribute(containerNode, \"includecontainer\", container.isIncludeSubs());\n\t\t\t\t\tfilterNode.appendChild(containerNode);\n\t\t\t\t}\n\t\t\t\tfor (StockpileFlag flag : filter.getFlags()) {\n\t\t\t\t\tElement flagNode = xmldoc.createElementNS(null, \"flag\");\n\t\t\t\t\tsetAttribute(flagNode, \"flagid\", flag.getFlagID());\n\t\t\t\t\tsetAttribute(flagNode, \"includecontainer\", flag.isIncludeSubs());\n\t\t\t\t\tfilterNode.appendChild(flagNode);\n\t\t\t\t}\n\t\t\t}\n\t\t\tparentNode.appendChild(stockpileNode);\n\t\t}\n\t}\n\n\tprivate void writeOverviewGroups(final Document xmldoc, final Map<String, OverviewGroup> overviewGroups) {\n\t\tElement parentNode = xmldoc.createElementNS(null, \"overview\");\n\t\txmldoc.getDocumentElement().appendChild(parentNode);\n\t\tfor (Map.Entry<String, OverviewGroup> entry : overviewGroups.entrySet()) {\n\t\t\tOverviewGroup overviewGroup = entry.getValue();\n\t\t\tElement node = xmldoc.createElementNS(null, \"group\");\n\t\t\tsetAttribute(node, \"name\", overviewGroup.getName());\n\t\t\tparentNode.appendChild(node);\n\t\t\tfor (OverviewLocation location : overviewGroup.getLocations()) {\n\t\t\t\tElement nodeLocation = xmldoc.createElementNS(null, \"location\");\n\t\t\t\tsetAttribute(nodeLocation, \"name\", location.getName());\n\t\t\t\tsetAttribute(nodeLocation, \"type\", location.getType());\n\t\t\t\tnode.appendChild(nodeLocation);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void writeUserItemNames(final Document xmldoc, final Map<Long, UserItem<Long, String>> userPrices) {\n\t\tElement parentNode = xmldoc.createElementNS(null, \"itemmames\");\n\t\txmldoc.getDocumentElement().appendChild(parentNode);\n\t\tfor (Map.Entry<Long, UserItem<Long, String>> entry : userPrices.entrySet()) {\n\t\t\tUserItem<Long, String> userItemName = entry.getValue();\n\t\t\tElement node = xmldoc.createElementNS(null, \"itemname\");\n\t\t\tsetAttribute(node, \"name\", userItemName.getValue());\n\t\t\tsetAttribute(node, \"typename\", userItemName.getName());\n\t\t\tsetAttribute(node, \"itemid\", userItemName.getKey());\n\t\t\tparentNode.appendChild(node);\n\t\t}\n\t}\n\n\tprivate void writeEveNames(final Document xmldoc, final Map<Long, String> eveNames) {\n\t\tElement parentNode = xmldoc.createElementNS(null, \"evenames\");\n\t\txmldoc.getDocumentElement().appendChild(parentNode);\n\t\tfor (Map.Entry<Long, String> entry : eveNames.entrySet()) {\n\t\t\tElement node = xmldoc.createElementNS(null, \"evename\");\n\t\t\tsetAttribute(node, \"name\", entry.getValue());\n\t\t\tsetAttribute(node, \"itemid\", entry.getKey());\n\t\t\tparentNode.appendChild(node);\n\t\t}\n\t}\n\n\tprivate void writeReprocessSettings(final Document xmldoc, final ReprocessSettings reprocessSettings) {\n\t\tElement parentNode = xmldoc.createElementNS(null, \"reprocessing\");\n\t\txmldoc.getDocumentElement().appendChild(parentNode);\n\t\tsetAttribute(parentNode, \"refining\", reprocessSettings.getReprocessingLevel());\n\t\tsetAttribute(parentNode, \"efficiency\", reprocessSettings.getReprocessingEfficiencyLevel());\n\t\tsetAttribute(parentNode, \"ore\", reprocessSettings.getOreProcessingLevel());\n\t\tsetAttribute(parentNode, \"scrapmetal\", reprocessSettings.getScrapmetalProcessingLevel());\n\t\tsetAttribute(parentNode, \"station\", reprocessSettings.getStation());\n\t}\n\n\tprivate void writeWindow(final Document xmldoc, final Settings settings) {\n\t\tElement parentNode = xmldoc.createElementNS(null, \"window\");\n\t\txmldoc.getDocumentElement().appendChild(parentNode);\n\t\tsetAttribute(parentNode, \"x\", settings.getWindowLocation().x);\n\t\tsetAttribute(parentNode, \"y\", settings.getWindowLocation().y);\n\t\tsetAttribute(parentNode, \"height\", settings.getWindowSize().height);\n\t\tsetAttribute(parentNode, \"width\", settings.getWindowSize().width);\n\t\tsetAttribute(parentNode, \"maximized\", settings.isWindowMaximized());\n\t\tsetAttribute(parentNode, \"autosave\", settings.isWindowAutoSave());\n\t\tsetAttribute(parentNode, \"alwaysontop\", settings.isWindowAlwaysOnTop());\n\t}\n\n\tprivate void writeUserPrices(final Document xmldoc, final Map<Integer, UserItem<Integer, Double>> userPrices) {\n\t\tElement parentNode = xmldoc.createElementNS(null, \"userprices\");\n\t\txmldoc.getDocumentElement().appendChild(parentNode);\n\t\tfor (Map.Entry<Integer, UserItem<Integer, Double>> entry : userPrices.entrySet()) {\n\t\t\tUserItem<Integer, Double> userPrice = entry.getValue();\n\t\t\tElement node = xmldoc.createElementNS(null, \"userprice\");\n\t\t\tsetAttribute(node, \"name\", userPrice.getName());\n\t\t\tsetAttribute(node, \"price\", userPrice.getValue());\n\t\t\tsetAttribute(node, \"typeid\", userPrice.getKey());\n\t\t\tparentNode.appendChild(node);\n\t\t}\n\t}\n\n\tprivate void writePriceDataSettings(final Document xmldoc, final PriceDataSettings priceDataSettings) {\n\t\tElement parentNode = xmldoc.createElementNS(null, \"marketstat\");\n\t\tsetAttribute(parentNode, \"defaultprice\", priceDataSettings.getPriceType());\n\t\tsetAttribute(parentNode, \"defaultreprocessedprice\", priceDataSettings.getPriceReprocessedType());\n\t\tsetAttribute(parentNode, \"defaultmanufacturingprice\", priceDataSettings.getPriceReprocessedType());\n\t\tsetAttribute(parentNode, \"pricesource\", priceDataSettings.getSource());\n\t\tsetAttribute(parentNode, \"locationid\", priceDataSettings.getLocationID());\n\t\tsetAttribute(parentNode, \"type\", priceDataSettings.getLocationType());\n\t\tsetAttributeOptional(parentNode, \"janicekey\", priceDataSettings.getJaniceKey());\n\t\txmldoc.getDocumentElement().appendChild(parentNode);\n\t}\n\n\tprivate void writeMarketOrdersSettings(final Document xmldoc, final MarketOrdersSettings marketOrdersSettings) {\n\t\tElement parentNode = xmldoc.createElementNS(null, \"marketorderssettings\");\n\t\tsetAttribute(parentNode, \"expirewarndays\", marketOrdersSettings.getExpireWarnDays());\n\t\tsetAttribute(parentNode, \"remainingwarnpercent\", marketOrdersSettings.getRemainingWarnPercent());\n\t\txmldoc.getDocumentElement().appendChild(parentNode);\n\t}\n\n\tprivate void writeFlags(final Document xmldoc, final Map<SettingFlag, Boolean> flags) {\n\t\tElement parentNode = xmldoc.createElementNS(null, \"flags\");\n\t\txmldoc.getDocumentElement().appendChild(parentNode);\n\t\tfor (Map.Entry<SettingFlag, Boolean> entry : flags.entrySet()) {\n\t\t\tElement node = xmldoc.createElementNS(null, \"flag\");\n\t\t\tsetAttribute(node, \"key\", entry.getKey());\n\t\t\tsetAttribute(node, \"enabled\", entry.getValue());\n\t\t\tparentNode.appendChild(node);\n\t\t}\n\t}\n\n\tprivate void writeProxy(final Document xmldoc, final ProxyData proxy) {\n\t\tif (proxy.getType() != Proxy.Type.DIRECT) { // Only adds proxy tag if there is anything to save... (To prevent an error when the proxy tag doesn't have any attributes)\n\t\t\tElement node = xmldoc.createElementNS(null, \"proxy\");\n\t\t\tsetAttribute(node, \"address\", proxy.getAddress());\n\t\t\tsetAttribute(node, \"port\", proxy.getPort());\n\t\t\tsetAttribute(node, \"type\", proxy.getType());\n\t\t\tif (proxy.isAuth()) {\n\t\t\t\tsetAttribute(node, \"username\", proxy.getUsername());\n\t\t\t\tsetAttribute(node, \"password\", proxy.getPassword());\n\t\t\t}\n\t\t\txmldoc.getDocumentElement().appendChild(node);\n\t\t}\n\t}\n\n\tprivate void writeExportSettings(final Document xmldoc, final Map<String, ExportSettings> exportSettings, final CopySettings copySettings) {\n\t\tElement node = xmldoc.createElementNS(null, \"exports\");\n\t\t//Copy\n\t\tsetAttribute(node, \"copy\", copySettings.getCopyDecimalSeparator());\n\n\t\tfor(Map.Entry<String, ExportSettings> exportSetting : exportSettings.entrySet()) {\n\t\t\t//Common\n\t\t\tElement exportNode = xmldoc.createElementNS(null, \"export\");\n\t\t\tsetAttribute(exportNode, \"name\", exportSetting.getKey());\n\t\t\tsetAttributeOptional(exportNode, \"exportformat\", exportSetting.getValue().getExportFormat());\n\t\t\tsetAttributeOptional(exportNode, \"filename\", exportSetting.getValue().getFilename());\n\t\t\tsetAttributeOptional(exportNode, \"columnselection\", exportSetting.getValue().getColumnSelection());\n\t\t\tsetAttributeOptional(exportNode, \"viewname\", exportSetting.getValue().getViewName());\n\t\t\tsetAttributeOptional(exportNode, \"filterselection\", exportSetting.getValue().getFilterSelection());\n\t\t\tsetAttributeOptional(exportNode, \"filtername\", exportSetting.getValue().getFilterName());\n\t\t\tnode.appendChild(exportNode);\n\n\t\t\tif (!exportSetting.getValue().getTableExportColumns().isEmpty()) {\n\t\t\t\tElement tableNode = xmldoc.createElementNS(null, \"table\");\n\t\t\t\tfor (String column : exportSetting.getValue().getTableExportColumns()) {\n\t\t\t\t\tElement columnNode = xmldoc.createElementNS(null, \"column\");\n\t\t\t\t\tsetAttribute(columnNode, \"name\", column);\n\t\t\t\t\ttableNode.appendChild(columnNode);\n\t\t\t\t}\n\t\t\t\texportNode.appendChild(tableNode);\n\t\t\t}\n\n\t\t\t//CSV\n\t\t\tElement csvNode = xmldoc.createElementNS(null, \"csv\");\n\t\t\tsetAttribute(csvNode, \"decimal\", exportSetting.getValue().getDecimalSeparator());\n\t\t\tsetAttribute(csvNode, \"line\", exportSetting.getValue().getCsvLineDelimiter());\n\t\t\texportNode.appendChild(csvNode);\n\n\t\t\t//SQL\n\t\t\tElement sqlNode = xmldoc.createElementNS(null, \"sql\");\n\t\t\tsetAttribute(sqlNode, \"tablename\", exportSetting.getValue().getSqlTableName());\n\t\t\tsetAttribute(sqlNode, \"createtable\", exportSetting.getValue().isSqlCreateTable());\n\t\t\tsetAttribute(sqlNode, \"droptable\", exportSetting.getValue().isSqlDropTable());\n\t\t\tsetAttribute(sqlNode, \"extendedinserts\", exportSetting.getValue().isSqlExtendedInserts());\n\t\t\texportNode.appendChild(sqlNode);\n\n\t\t\t//Html\n\t\t\tElement htmlNode = xmldoc.createElementNS(null, \"html\");\n\t\t\tsetAttribute(htmlNode, \"styled\", exportSetting.getValue().isHtmlStyled());\n\t\t\tsetAttribute(htmlNode, \"igb\", exportSetting.getValue().isHtmlIGB());\n\t\t\tsetAttribute(htmlNode, \"repeatheader\", exportSetting.getValue().getHtmlRepeatHeader());\n\t\t\texportNode.appendChild(htmlNode);\n\n\t\t}\n\t\txmldoc.getDocumentElement().appendChild(node);\n\t}\n\n\tprivate void writeImportSettings(final Document xmldoc, final Map<String, String> importSettings) {\n\t\tElement node = xmldoc.createElementNS(null, \"imports\");\n\t\tfor (Map.Entry<String, String> exportSetting : importSettings.entrySet()) {\n\t\t\tElement importNode = xmldoc.createElementNS(null, \"import\");\n\t\t\tsetAttribute(importNode, \"name\", exportSetting.getKey());\n\t\t\tsetAttribute(importNode, \"type\", exportSetting.getValue());\n\t\t\tnode.appendChild(importNode);\n\t\t}\n\t\txmldoc.getDocumentElement().appendChild(node);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/SoundFinder.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.io.local;\n\nimport java.io.File;\nimport java.io.FileFilter;\nimport java.util.ArrayList;\nimport java.util.List;\nimport net.nikr.eve.jeveasset.gui.sounds.FileSound;\nimport net.nikr.eve.jeveasset.gui.sounds.Sound;\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\n\n\npublic final class SoundFinder {\n\n\tprivate SoundFinder() { }\n\n\tpublic static List<Sound> load() {\n\t\tSoundFinder reader = new SoundFinder();\n\t\treturn reader.read();\n\t}\n\n\tprivate List<Sound> read() {\n\t\tList<Sound> sounds = new ArrayList<>();\n\t\tFile soundsDirectory = new File(FileUtil.getPathSoundsDirectory());\n\t\tif (!soundsDirectory.exists()) {\n\t\t\tsoundsDirectory.mkdirs();\n\t\t}\n\t\tFileFilter fileFilter = new Mp3FileFilter();\n\n\t\tFile[] files = soundsDirectory.listFiles(fileFilter);\n\t\tif (files != null) {\n\t\t\tfor (File file : files) {\n\t\t\t\tsounds.add(new FileSound(file));\n\t\t\t}\n\t\t}\n\t\treturn sounds;\n\t}\n\n\tprivate class Mp3FileFilter implements FileFilter {\n\t\t@Override\n\t\tpublic boolean accept(final File file) {\n\t\t\treturn !file.isDirectory() && file.getName().endsWith(\".mp3\");\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/SqlWriter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.io.local;\r\n\r\nimport java.io.BufferedWriter;\r\nimport java.io.FileOutputStream;\r\nimport java.io.IOException;\r\nimport java.io.OutputStreamWriter;\r\nimport java.text.DateFormat;\r\nimport java.text.DecimalFormat;\r\nimport java.text.DecimalFormatSymbols;\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport java.util.Locale;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.HierarchyColumn;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic final class SqlWriter {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(SqlWriter.class);\r\n\r\n\tprivate final DecimalFormat DOUBLE_FORMAT = new DecimalFormat(\"0.##\", new DecimalFormatSymbols(Locale.ENGLISH));\r\n\tprivate final DecimalFormat FLOAT_FORMAT = new DecimalFormat(\"0.####\", new DecimalFormatSymbols(Locale.ENGLISH));\r\n\tprivate final DecimalFormat LONG_FORMAT = new DecimalFormat(\"0\", new DecimalFormatSymbols(Locale.ENGLISH));\r\n\tprivate final int MAX_LENGTH = 944000; //a little less than 1MB\r\n\tprivate final DateFormat SQL_DATETIME_FORMATTER = new SimpleDateFormat(\"yyyy-MM-dd hh:mm:ss\");\r\n\tprivate final String SQL_IDENTIFIER = \"\\\"\"; //`\r\n\tprivate final String SQL_STRING = \"'\";\r\n\tprivate final String SQL_NULL = \"NULL\";\r\n\r\n\tprivate SqlWriter() { }\r\n\r\n\tpublic static boolean save(final String filename, final List<Map<EnumTableColumn<?>, Object>> rows, final List<EnumTableColumn<?>> header, final String tableName, final boolean dropTable, final boolean createTable, final boolean extendedInserts) {\r\n\t\tSqlWriter writer = new SqlWriter();\r\n\t\treturn writer.write(filename, rows, header, tableName, dropTable, createTable, extendedInserts);\r\n\t}\r\n\r\n\tprivate boolean write(final String filename, final List<Map<EnumTableColumn<?>, Object>> rows, final List<EnumTableColumn<?>> header, final String tableName, final boolean dropTable, final boolean createTable, final boolean extendedInserts) {\r\n\t\ttry (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename), \"UTF-8\"))) {\r\n\t\t\twriteComment(writer);\r\n\t\t\twriteTable(writer, rows, header, tableName, dropTable, createTable);\r\n\t\t\twriteRows(writer, rows, header, tableName, extendedInserts);\r\n\t\t} catch (IOException ex) {\r\n\t\t\tLOG.warn(\"SQL file not saved\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tLOG.info(\"SQL file saved\");\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate void writeComment(final BufferedWriter writer) throws IOException {\r\n\t\twriter.write(\"-- \" + Program.PROGRAM_NAME + \" Sql Export\\r\\n\");\r\n\t\twriter.write(\"-- version \" + Program.PROGRAM_VERSION + \"\\r\\n\");\r\n\t\twriter.write(\"-- \" + Program.PROGRAM_HOMEPAGE + \"\\r\\n\");\r\n\t}\r\n\r\n\tprivate String getType(final Object object) {\r\n\t\tif (object instanceof Short) {\r\n\t\t\treturn \"smallint\";\r\n\t\t} else if (object instanceof Integer) {\r\n\t\t\treturn \"int\";\r\n\t\t} else if (object instanceof Long) {\r\n\t\t\treturn \"bigint\";\r\n\t\t} else if (object instanceof Float) {\r\n\t\t\treturn \"float\";\r\n\t\t} else if (object instanceof Double) {\r\n\t\t\treturn \"double\";\r\n\t\t} else if (object instanceof Date) {\r\n\t\t\treturn \"datetime\";\r\n\t\t} else {\r\n\t\t\treturn \"text\";\r\n\t\t}\r\n\t}\r\n\tprivate void writeTable(final BufferedWriter writer, final List<Map<EnumTableColumn<?>, Object>> rows, final List<EnumTableColumn<?>> header, final String tableName, final boolean dropTable, final boolean createTable) throws IOException {\r\n\t\tif (dropTable) {\r\n\t\t\twriter.write(\"DROP TABLE IF EXISTS \" + SQL_IDENTIFIER + tableName + SQL_IDENTIFIER + \";\\r\\n\");\r\n\t\t}\r\n\t\tif (createTable && !rows.isEmpty()) {\r\n\t\t\twriter.write(\"CREATE TABLE IF NOT EXISTS \" + SQL_IDENTIFIER + tableName + SQL_IDENTIFIER + \" (\\r\\n\");\r\n\t\t\tboolean first = true;\r\n\t\t\tfor (EnumTableColumn<?> column : header) {\r\n\t\t\t\tif (first) {\r\n\t\t\t\t\tfirst = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\twriter.write(\",\\r\\n\");\r\n\t\t\t\t}\r\n\t\t\t\twriter.write(SQL_IDENTIFIER + column.name() + SQL_IDENTIFIER + \" \" + getType(rows.get(0).get(column)));\r\n\t\t\t}\r\n\t\t\twriter.write(\"\\r\\n\");\r\n\t\t\twriter.write(\");\\r\\n\");\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void writeRows(final BufferedWriter writer, final List<Map<EnumTableColumn<?>, Object>> rows, final List<EnumTableColumn<?>> header, final String tableName, final boolean extendedInserts) throws IOException {\r\n\t\tif (!rows.isEmpty()) {\r\n\t\t\t//Create INSERT statement\r\n\t\t\tString insert = \"INSERT INTO \" + SQL_IDENTIFIER + tableName + SQL_IDENTIFIER + \" (\";\r\n\t\t\tboolean firstInsert = true;\r\n\t\t\tfor (EnumTableColumn<?> column : header) {\r\n\t\t\t\tif (firstInsert) {\r\n\t\t\t\t\tfirstInsert = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tinsert = insert + \", \";\r\n\t\t\t\t}\r\n\t\t\t\tinsert = insert + SQL_IDENTIFIER + column.name() + SQL_IDENTIFIER;\r\n\t\t\t}\r\n\t\t\tinsert = insert + \") VALUES\\r\\n\";\r\n\t\t\tif (extendedInserts) {\r\n\t\t\t\twriter.write(insert);\r\n\t\t\t}\r\n\t\t\tboolean firstRow = true;\r\n\t\t\tboolean firstCell;\r\n\t\t\t//Add values\r\n\t\t\tString values;\r\n\t\t\tint length = insert.getBytes(\"UTF-8\").length;\r\n\t\t\tfor (Map<EnumTableColumn<?>, Object> map : rows) {\r\n\t\t\t\tvalues = \"\";\r\n\t\t\t\tif (extendedInserts && length > MAX_LENGTH) {\r\n\t\t\t\t\tlength = insert.getBytes(\"UTF-8\").length;\r\n\t\t\t\t\tfirstRow = true;\r\n\t\t\t\t\twriter.write(\";\\r\\n\");\r\n\t\t\t\t\twriter.write(insert);\r\n\t\t\t\t}\r\n\t\t\t\t//End Line\r\n\t\t\t\tif (firstRow) {\r\n\t\t\t\t\tfirstRow = false;\r\n\t\t\t\t} else if (extendedInserts) {\r\n\t\t\t\t\tvalues = values + \",\\r\\n\";\r\n\t\t\t\t}\r\n\t\t\t\t//Values\r\n\t\t\t\tvalues = values + \"\t(\";\r\n\t\t\t\tfirstCell = true;\r\n\t\t\t\tfor (EnumTableColumn<?> column : header) {\r\n\t\t\t\t\tif (firstCell) {\r\n\t\t\t\t\t\tfirstCell = false;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvalues = values + \", \";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvalues = values + format(map.get(column));\r\n\t\t\t\t}\r\n\t\t\t\tvalues = values + \")\";\r\n\t\t\t\tif (!extendedInserts) {\r\n\t\t\t\t\tvalues = values + \";\\r\\n\";\r\n\t\t\t\t\twriter.write(insert);\r\n\t\t\t\t}\r\n\t\t\t\tlength = length + values.getBytes(\"UTF-8\").length; //Bytes\r\n\t\t\t\twriter.write(values);\r\n\t\t\t}\r\n\t\t\twriter.write(\";\\r\\n\");\r\n\t\t}\r\n\t}\r\n\r\n\tprivate String format(final Object object) {\r\n\t\tif (object == null) {\r\n\t\t\treturn SQL_NULL;\r\n\t\t} else if (object instanceof HierarchyColumn) {\r\n\t\t\tHierarchyColumn column = (HierarchyColumn) object;\r\n\t\t\treturn SQL_STRING + column.getExport().replace(\"'\", \"\\\\'\") + SQL_STRING;\r\n\t\t} else if (object instanceof Double) {\r\n\t\t\t//Double\r\n\t\t\treturn DOUBLE_FORMAT.format(object);\r\n\t\t} else if (object instanceof Float) {\r\n\t\t\t//Float\r\n\t\t\treturn FLOAT_FORMAT.format(object);\r\n\t\t} else if (object instanceof Number) {\r\n\t\t\t//Number (Short/Integer/Long)\r\n\t\t\treturn LONG_FORMAT.format(object);\r\n\t\t} else if (object instanceof Date) {\r\n\t\t\t//Date\r\n\t\t\treturn SQL_STRING + SQL_DATETIME_FORMATTER.format(object) + SQL_STRING;\r\n\t\t} else if (object instanceof String) {\r\n\t\t\treturn SQL_STRING + ((String)object).replace(\"'\", \"''\") + SQL_STRING;\r\n\t\t} else { //String etc.\r\n\t\t\treturn SQL_STRING + String.valueOf(object).replace(\"'\", \"''\") + SQL_STRING;\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/StockpileReader.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local;\r\n\r\nimport com.google.gson.Gson;\r\nimport com.google.gson.GsonBuilder;\r\nimport com.google.gson.JsonDeserializationContext;\r\nimport com.google.gson.JsonDeserializer;\r\nimport com.google.gson.JsonElement;\r\nimport com.google.gson.JsonObject;\r\nimport com.google.gson.JsonParseException;\r\nimport com.google.gson.JsonSyntaxException;\r\nimport com.google.gson.reflect.TypeToken;\r\nimport java.io.BufferedReader;\r\nimport java.io.ByteArrayInputStream;\r\nimport java.io.IOException;\r\nimport java.io.InputStreamReader;\r\nimport java.lang.reflect.Type;\r\nimport java.util.ArrayList;\r\nimport java.util.Base64;\r\nimport java.util.List;\r\nimport java.util.zip.InflaterInputStream;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter.StockpileContainer;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter.StockpileFlag;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileItem;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class StockpileReader extends AbstractBackup {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(StockpileReader.class);\r\n\r\n\tpublic static List<Stockpile> load(String data) {\r\n\t\tStockpileReader reader = new StockpileReader();\r\n\t\treturn reader.read(data);\r\n\t}\r\n\r\n\tprivate List<Stockpile> read(String data) {\r\n\t\tdata = data.trim();\r\n\t\tByteArrayInputStream inputStream = null;\r\n\t\ttry {\r\n\t\t\tinputStream = new ByteArrayInputStream(Base64.getUrlDecoder().decode(data));\r\n\t\t\tBufferedReader reader = new BufferedReader(new InputStreamReader(new InflaterInputStream(inputStream)));\r\n\t\t\tStringBuilder sb = new StringBuilder();\r\n\t\t\tString str;\r\n\t\t\twhile((str = reader.readLine())!= null) {\r\n\t\t\t\tsb.append(str);\r\n\t\t\t\tsb.append(\"\\n\");\r\n\t\t\t}\r\n\t\t\tGson gson = new GsonBuilder().registerTypeAdapter(Stockpile.class, new StockpileDeserializerGson()).create();\r\n\t\t\treturn gson.fromJson(sb.toString(), new TypeToken<List<Stockpile>>() {}.getType());\r\n\t\t} catch (IllegalArgumentException | JsonSyntaxException | IOException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t\treturn null;\r\n\t\t} finally {\r\n\t\t\tif (inputStream != null) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tinputStream.close();\r\n\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\t//No problem\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t\tpublic static class StockpileDeserializerGson implements JsonDeserializer<Stockpile> {\r\n\r\n\t\t@Override\r\n\t\tpublic Stockpile deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {\r\n\t\t\t//Stockpile\r\n\t\t\tJsonObject stockpileObject = json.getAsJsonObject();\r\n\t\t\tString name = stockpileObject.get(\"n\").getAsString();\r\n\t\t\tdouble multiplier = stockpileObject.get(\"m\").getAsDouble();\r\n\t\t\tboolean matchAll = false; //NotNull\r\n\t\t\tif (stockpileObject.has(\"ma\")) {\r\n\t\t\t\tmatchAll = stockpileObject.get(\"ma\").getAsBoolean();\r\n\t\t\t} else if (stockpileObject.has(\"cma\")) {\r\n\t\t\t\tmatchAll = stockpileObject.get(\"cma\").getAsBoolean();\r\n\t\t\t}\r\n\r\n\t\t\t//Filters\r\n\t\t\tList<StockpileFilter> filters = new ArrayList<>();\r\n\t\t\tJsonElement filtersElement = stockpileObject.get(\"sf\");\r\n\t\t\tfor (JsonElement filterElement : filtersElement.getAsJsonArray()) {\r\n\t\t\t\tJsonObject filterObject = filterElement.getAsJsonObject();\r\n\t\t\t\tboolean assets = filterObject.get(\"a\").getAsBoolean();\r\n\t\t\t\tboolean boughtContracts = filterObject.get(\"bbc\").getAsBoolean();\r\n\t\t\t\tboolean buyingContracts = filterObject.get(\"bc\").getAsBoolean();\r\n\t\t\t\tboolean sellingContracts = filterObject.get(\"sc\").getAsBoolean();\r\n\t\t\t\tboolean soldContracts = filterObject.get(\"ssc\").getAsBoolean();\r\n\t\t\t\tboolean buyOrders = filterObject.get(\"bo\").getAsBoolean();\r\n\t\t\t\tboolean sellOrders = filterObject.get(\"so\").getAsBoolean();\r\n\t\t\t\tboolean buyTransactions = filterObject.get(\"bt\").getAsBoolean();\r\n\t\t\t\tboolean sellTransactions = filterObject.get(\"st\").getAsBoolean();\r\n\t\t\t\tboolean exclude = filterObject.get(\"e\").getAsBoolean();\r\n\t\t\t\tboolean jobs = filterObject.get(\"j\").getAsBoolean();\r\n\t\t\t\tInteger jobsDaysLess = null;\r\n\t\t\t\tif (filterObject.has(\"jdl\")) {\r\n\t\t\t\t\tjobsDaysLess = filterObject.get(\"jdl\").getAsInt();\r\n\t\t\t\t}\r\n\t\t\t\tInteger jobsDaysMore = null;\r\n\t\t\t\tif (filterObject.has(\"jdm\")) {\r\n\t\t\t\t\tjobsDaysMore = filterObject.get(\"jdm\").getAsInt();\r\n\t\t\t\t}\r\n\t\t\t\tBoolean singleton = null;\r\n\t\t\t\tif (filterObject.has(\"s\")) {\r\n\t\t\t\t\tsingleton = filterObject.get(\"s\").getAsBoolean();\r\n\t\t\t\t}\r\n\t\t\t\tlong locationID = filterObject.get(\"id\").getAsLong();\r\n\r\n\t\t\t\t//Containers\r\n\t\t\t\tList<StockpileContainer> containers = new ArrayList<>();\r\n\t\t\t\tJsonElement containersElement = filterObject.get(\"c\");\r\n\t\t\t\tfor (JsonElement containerElement : containersElement.getAsJsonArray()) {\r\n\t\t\t\t\tJsonObject containerObject = containerElement.getAsJsonObject();\r\n\t\t\t\t\tString container = containerObject.get(\"cc\").getAsString();\r\n\t\t\t\t\tboolean includeSubs = containerObject.get(\"ic\").getAsBoolean();\r\n\t\t\t\t\tcontainers.add(new StockpileContainer(container, includeSubs));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//Flags\r\n\t\t\t\tList<StockpileFlag> flags = new ArrayList<>();\r\n\t\t\t\tJsonElement flagIDsElement = filterObject.get(\"f\");\r\n\t\t\t\tfor (JsonElement flagElement : flagIDsElement.getAsJsonArray()) {\r\n\t\t\t\t\tif (flagElement.isJsonObject()) {\r\n\t\t\t\t\t\tJsonObject flagObject = flagElement.getAsJsonObject();\r\n\t\t\t\t\t\tint flagID = flagObject.get(\"ff\").getAsInt();\r\n\t\t\t\t\t\tboolean includeSubs = flagObject.get(\"ic\").getAsBoolean();\r\n\t\t\t\t\t\tflags.add(new StockpileFlag(flagID, includeSubs));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tflags.add(new StockpileFlag(flagElement.getAsInt(), true));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//Owners\r\n\t\t\t\tList<Long> ownerIDs = new ArrayList<>();\r\n\t\t\t\tJsonElement ownerIDsElement = filterObject.get(\"o\");\r\n\t\t\t\tfor (JsonElement ownerIdElement : ownerIDsElement.getAsJsonArray()) {\r\n\t\t\t\t\townerIDs.add(ownerIdElement.getAsLong());\r\n\t\t\t\t}\r\n\t\t\t\tfilters.add(new StockpileFilter(ApiIdConverter.getLocation(locationID), exclude, flags, containers, ownerIDs, jobsDaysLess, jobsDaysMore, singleton, assets, sellOrders, buyOrders, jobs, buyTransactions, sellTransactions, sellingContracts, soldContracts, buyingContracts, boughtContracts));\r\n\t\t\t}\r\n\r\n\t\t\t//Create Stockile (then add items)\r\n\t\t\tStockpile stockpile = new Stockpile(name, null, filters, multiplier, matchAll);\r\n\r\n\t\t\t//Items\r\n\t\t\tJsonElement itemsElement = stockpileObject.get(\"i\");\r\n\t\t\tfor (JsonElement itemElement : itemsElement.getAsJsonArray()) {\r\n\t\t\t\tJsonObject itemObject = itemElement.getAsJsonObject();\r\n\t\t\t\tint itemTypeID = itemObject.get(\"i\").getAsInt();\r\n\t\t\t\tdouble countMinimum = itemObject.get(\"m\").getAsDouble();\r\n\t\t\t\tboolean runs = itemObject.get(\"r\").getAsBoolean();\r\n\t\t\t\tJsonElement element = itemObject.get(\"im\");\r\n\t\t\t\tboolean ignoreMultiplier = false;\r\n\t\t\t\tif (element != null) {\r\n\t\t\t\t\tignoreMultiplier = element.getAsBoolean();\r\n\t\t\t\t}\r\n\t\t\t\tstockpile.add(new StockpileItem(stockpile, ApiIdConverter.getItem(Math.abs(itemTypeID)), itemTypeID, countMinimum, runs, ignoreMultiplier));\r\n\t\t\t}\r\n\t\t\treturn stockpile;\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/StockpileWriter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local;\r\n\r\nimport com.google.gson.Gson;\r\nimport com.google.gson.GsonBuilder;\r\nimport com.google.gson.JsonArray;\r\nimport com.google.gson.JsonElement;\r\nimport com.google.gson.JsonObject;\r\nimport com.google.gson.JsonSerializationContext;\r\nimport com.google.gson.JsonSerializer;\r\nimport java.io.ByteArrayOutputStream;\r\nimport java.io.IOException;\r\nimport java.lang.reflect.Type;\r\nimport java.util.Base64;\r\nimport java.util.List;\r\nimport java.util.zip.Deflater;\r\nimport java.util.zip.DeflaterOutputStream;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter.StockpileContainer;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter.StockpileFlag;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileItem;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class StockpileWriter extends AbstractBackup {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(StockpileWriter.class);\r\n\r\n\tpublic static String save(List<Stockpile> stockpiles) {\r\n\t\tStockpileWriter writer = new StockpileWriter();\r\n\t\treturn writer.write(stockpiles);\r\n\t}\r\n\r\n\tprivate String write(List<Stockpile> stockpiles) {\r\n\t\tDeflaterOutputStream compressOutputStream = null;\r\n\t\ttry {\r\n\t\t\tGson gson = new GsonBuilder().registerTypeAdapter(Stockpile.class, new StockpileSerializerGson()).create();\r\n\t\t\tByteArrayOutputStream outputStream = new ByteArrayOutputStream();\r\n\t\t\tDeflater deflater = new Deflater();\r\n\t\t\tdeflater.setLevel(9);\r\n\t\t\tcompressOutputStream = new DeflaterOutputStream(outputStream, deflater);\r\n\t\t\tcompressOutputStream.write(gson.toJson(stockpiles).getBytes());\r\n\t\t\tcompressOutputStream.close();\r\n\t\t\treturn Base64.getUrlEncoder().encodeToString(outputStream.toByteArray());\r\n\t\t} catch (IOException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t\treturn null;\r\n\t\t} finally {\r\n\t\t\tif (compressOutputStream != null) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tcompressOutputStream.close();\r\n\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\t//No problem\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static class StockpileSerializerGson implements JsonSerializer<Stockpile> {\r\n\r\n\t\t@Override\r\n\t\tpublic JsonElement serialize(Stockpile stockpile, Type typeOfSrc, JsonSerializationContext context) {\r\n\t\t\t//Stockpile\r\n\t\t\tJsonObject stockpileObject = new JsonObject();\r\n\t\t\tstockpileObject.addProperty(\"n\", stockpile.getName());\r\n\t\t\tstockpileObject.addProperty(\"m\", stockpile.getMultiplier());\r\n\t\t\tstockpileObject.addProperty(\"ma\", stockpile.isMatchAll());\r\n\r\n\t\t\t//Filters\r\n\t\t\tJsonArray filtersObject = new JsonArray();\r\n\t\t\tstockpileObject.add(\"sf\", filtersObject);\r\n\t\t\tfor (StockpileFilter stockpileFilter : stockpile.getFilters()) {\r\n\t\t\t\tJsonObject filterObject = new JsonObject();\r\n\t\t\t\tfiltersObject.add(filterObject);\r\n\t\t\t\tfilterObject.addProperty(\"a\", stockpileFilter.isAssets());\r\n\t\t\t\tfilterObject.addProperty(\"bbc\", stockpileFilter.isBoughtContracts());\r\n\t\t\t\tfilterObject.addProperty(\"bc\", stockpileFilter.isBuyingContracts());\r\n\t\t\t\tfilterObject.addProperty(\"sc\", stockpileFilter.isSellingContracts());\r\n\t\t\t\tfilterObject.addProperty(\"ssc\", stockpileFilter.isSoldContracts());\r\n\t\t\t\tfilterObject.addProperty(\"bo\", stockpileFilter.isBuyOrders());\r\n\t\t\t\tfilterObject.addProperty(\"so\", stockpileFilter.isSellOrders());\r\n\t\t\t\tfilterObject.addProperty(\"bt\", stockpileFilter.isBuyTransactions());\r\n\t\t\t\tfilterObject.addProperty(\"st\", stockpileFilter.isSellTransactions());\r\n\t\t\t\tfilterObject.addProperty(\"e\", stockpileFilter.isExclude());\r\n\t\t\t\tfilterObject.addProperty(\"j\", stockpileFilter.isJobs());\r\n\t\t\t\tfilterObject.addProperty(\"jdl\", stockpileFilter.getJobsDaysLess());\r\n\t\t\t\tfilterObject.addProperty(\"jdm\", stockpileFilter.getJobsDaysMore());\r\n\t\t\t\tfilterObject.addProperty(\"s\", stockpileFilter.isSingleton());\r\n\t\t\t\tfilterObject.addProperty(\"id\", stockpileFilter.getLocation().getLocationID());\r\n\r\n\t\t\t\t//Containers\r\n\t\t\t\tJsonArray containers = new JsonArray();\r\n\t\t\t\tfilterObject.add(\"c\", containers);\r\n\t\t\t\tfor (StockpileContainer stockpileContainer : stockpileFilter.getContainers()) {\r\n\t\t\t\t\tJsonObject container = new JsonObject();\r\n\t\t\t\t\tcontainer.addProperty(\"cc\", stockpileContainer.getContainer());\r\n\t\t\t\t\tcontainer.addProperty(\"ic\", stockpileContainer.isIncludeSubs());\r\n\t\t\t\t\tcontainers.add(container);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//Flags\r\n\t\t\t\tJsonArray flags = new JsonArray();\r\n\t\t\t\tfilterObject.add(\"f\", flags);\r\n\t\t\t\tfor (StockpileFlag flag : stockpileFilter.getFlags()) {\r\n\t\t\t\t\tJsonObject flagObject = new JsonObject();\r\n\t\t\t\t\tflagObject.addProperty(\"ff\", flag.getFlagID());\r\n\t\t\t\t\tflagObject.addProperty(\"ic\", flag.isIncludeSubs());\r\n\t\t\t\t\tflags.add(flagObject);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//Owners\r\n\t\t\t\tJsonArray owners = new JsonArray();\r\n\t\t\t\tfilterObject.add(\"o\", owners);\r\n\t\t\t\tfor (Long ownerID : stockpileFilter.getOwnerIDs()) {\r\n\t\t\t\t\towners.add(ownerID);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//Items\r\n\t\t\tJsonArray items = new JsonArray();\r\n\t\t\tstockpileObject.add(\"i\", items);\r\n\t\t\tfor (StockpileItem stockpileItem : stockpile.getItems()) {\r\n\t\t\t\tif (stockpileItem.isTotal()) {\r\n\t\t\t\t\tcontinue; //Ignore Total\r\n\t\t\t\t}\r\n\t\t\t\tJsonObject item = new JsonObject();\r\n\t\t\t\titem.addProperty(\"i\", stockpileItem.getItemTypeID());\r\n\t\t\t\titem.addProperty(\"m\", stockpileItem.getCountMinimum());\r\n\t\t\t\titem.addProperty(\"r\", stockpileItem.isRuns());\r\n\t\t\t\titem.addProperty(\"im\", stockpileItem.isIgnoreMultiplier());\r\n\t\t\t\titems.add(item);\r\n\t\t\t}\r\n\r\n\t\t\treturn stockpileObject;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/TrackerReader.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local;\r\n\r\nimport com.google.gson.Gson;\r\nimport com.google.gson.GsonBuilder;\r\nimport com.google.gson.JsonDeserializationContext;\r\nimport com.google.gson.JsonDeserializer;\r\nimport com.google.gson.JsonElement;\r\nimport com.google.gson.JsonObject;\r\nimport com.google.gson.JsonParseException;\r\nimport com.google.gson.reflect.TypeToken;\r\nimport java.io.File;\r\nimport java.io.IOException;\r\nimport java.io.InputStreamReader;\r\nimport java.lang.reflect.Type;\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.AssetValue;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.Value;\r\nimport net.nikr.eve.jeveasset.io.local.FileLock.SafeFileIO;\r\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class TrackerReader extends AbstractBackup {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(TrackerReader.class);\r\n\r\n\tpublic static Map<String, List<Value>> load() {\r\n\t\treturn load(FileUtil.getPathTrackerData(), true);\r\n\t}\r\n\r\n\tpublic static Map<String, List<Value>> load(String filename, boolean backup) {\r\n\t\tTrackerReader reader = new TrackerReader();\r\n\t\treturn reader.read(filename, backup);\r\n\t}\r\n\r\n\tprivate Map<String, List<Value>> read(String filename, boolean backup) {\r\n\t\tFile file = new File(filename);\r\n\t\tif (!file.exists()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tif (backup) {\r\n\t\t\tbackup(filename);\r\n\t\t}\r\n\t\tGson gson = new GsonBuilder().registerTypeAdapter(Value.class, new ValueDeserializerJSon()).create();\r\n\t\ttry (SafeFileIO io = new SafeFileIO(file)){\r\n\t\t\tMap<String, List<Value>> trackerData = gson.fromJson(new InputStreamReader(io.getFileInputStream()), new TypeToken<HashMap<String, ArrayList<Value>>>() {}.getType());\r\n\t\t\tLOG.info(\"Tracker data loaded\");\r\n\t\t\treturn trackerData;\r\n\t\t} catch (IOException | JsonParseException ex) {\r\n\t\t\tLOG.warn(ex.getMessage(), ex);\r\n\t\t\tif (restoreNewFile(filename)) { //If possible restore from .new (Should be the newest)\r\n\t\t\t\tread(filename, backup);\r\n\t\t\t} else if (restoreBackupFile(filename)) { //If possible restore from .bac (Should be the oldest, but, still worth trying)\r\n\t\t\t\tread(filename, backup);\r\n\t\t\t} else { //Nothing left to try - throw error\r\n\t\t\t\trestoreFailed(filename); //Backup error file\r\n\t\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tpublic static class ValueDeserializerJSon implements JsonDeserializer<Value> {\r\n\r\n\t\t@Override\r\n\t\tpublic Value deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)\r\n\t\t\t\tthrows JsonParseException {\r\n\t\t\tJsonObject node = json.getAsJsonObject();\r\n\t\t\tDate date = new Date(node.get(\"date\").getAsLong());\r\n\t\t\tdouble assetsTotal = node.get(\"assets\").getAsDouble();\r\n\t\t\tdouble escrows = node.get(\"escrows\").getAsDouble();\r\n\t\t\tdouble escrowstocover = node.get(\"escrowstocover\").getAsDouble();\r\n\t\t\tdouble sellorders = node.get(\"sellorders\").getAsDouble();\r\n\t\t\tdouble balanceTotal = node.get(\"walletbalance\").getAsDouble();\r\n\t\t\tdouble manufacturing = node.get(\"manufacturing\").getAsDouble();\r\n\t\t\tdouble contractCollateral = node.get(\"contractcollateral\").getAsDouble();\r\n\t\t\tdouble contractValue = node.get(\"contractvalue\").getAsDouble();\r\n\t\t\t//Skills\r\n\t\t\tJsonElement skillPointElement = node.get(\"skillpoints\");\r\n\t\t\tlong skillPoints = 0;\r\n\t\t\tif (skillPointElement != null) {\r\n\t\t\t\tskillPoints = skillPointElement.getAsLong();\r\n\t\t\t}\r\n\t\t\t//Add data\r\n\t\t\tValue value = new Value(date);\r\n\t\t\t//Balance\r\n\t\t\tJsonElement balanceElement = node.get(\"balance\");\r\n\t\t\tif (balanceElement != null && balanceElement.isJsonArray()) {\r\n\t\t\t\tfor (JsonElement itemElement : balanceElement.getAsJsonArray()) {\r\n\t\t\t\t\tJsonObject itemObject = itemElement.getAsJsonObject();\r\n\t\t\t\t\tString id = itemObject.get(\"id\").getAsString();\r\n\t\t\t\t\tdouble balance = itemObject.get(\"value\").getAsDouble();\r\n\t\t\t\t\tvalue.addBalance(id, balance);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tvalue.setBalanceTotal(balanceTotal);\r\n\t\t\t}\r\n\t\t\t//Assets containers fixed\r\n\t\t\tJsonElement assetsContainersFixedElement = node.get(\"assetscontainersfixed\");\r\n\t\t\tboolean assetsContainersFixed = false;\r\n\t\t\tif (assetsContainersFixedElement != null) {\r\n\t\t\t\tassetsContainersFixed = assetsContainersFixedElement.getAsBoolean();\r\n\t\t\t}\r\n\t\t\tvalue.setAssetsContainersFixed(assetsContainersFixed);\r\n\t\t\t//Assets\r\n\t\t\tJsonElement assetElement = node.get(\"asset\");\r\n\t\t\tif (assetElement != null && assetElement.isJsonArray()) {\r\n\t\t\t\tfor (JsonElement itemElement : assetElement.getAsJsonArray()) {\r\n\t\t\t\t\tJsonObject itemObject = itemElement.getAsJsonObject();\r\n\t\t\t\t\tString location = itemObject.get(\"location\").getAsString();\r\n\t\t\t\t\tLong locationID = null;\r\n\t\t\t\t\tif (itemObject.get(\"locationid\") != null) {\r\n\t\t\t\t\t\tlocationID = itemObject.get(\"locationid\").getAsLong();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tString flag = null;\r\n\t\t\t\t\tif (itemObject.get(\"flag\") != null) {\r\n\t\t\t\t\t\tflag = itemObject.get(\"flag\").getAsString();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tDouble assets = itemObject.get(\"value\").getAsDouble();\r\n\t\t\t\t\tAssetValue assetValue = AssetValue.create(location, flag, locationID);\r\n\t\t\t\t\tvalue.addAssets(assetValue, assets);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tvalue.setAssetsTotal(assetsTotal);\r\n\t\t\t}\r\n\t\t\t//Implants\r\n\t\t\tJsonElement implantNode = node.get(\"implants\");\r\n\t\t\tdouble implants = 0;\r\n\t\t\tif (implantNode != null) {\r\n\t\t\t\timplants = implantNode.getAsDouble();\r\n\t\t\t}\r\n\t\t\tvalue.setImplants(implants);\r\n\t\t\t//Others\r\n\t\t\tvalue.setEscrows(escrows);\r\n\t\t\tvalue.setEscrowsToCover(escrowstocover);\r\n\t\t\tvalue.setSellOrders(sellorders);\r\n\t\t\tvalue.setManufacturing(manufacturing);\r\n\t\t\tvalue.setContractCollateral(contractCollateral);\r\n\t\t\tvalue.setContractValue(contractValue);\r\n\t\t\tvalue.setSkillPoints(skillPoints);\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/TrackerWriter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local;\r\n\r\nimport com.google.gson.Gson;\r\nimport com.google.gson.GsonBuilder;\r\nimport com.google.gson.JsonArray;\r\nimport com.google.gson.JsonElement;\r\nimport com.google.gson.JsonObject;\r\nimport com.google.gson.JsonParseException;\r\nimport com.google.gson.JsonSerializationContext;\r\nimport com.google.gson.JsonSerializer;\r\nimport java.io.File;\r\nimport java.io.IOException;\r\nimport java.lang.reflect.Type;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.data.settings.TrackerData;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.AssetValue;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.Value;\r\nimport net.nikr.eve.jeveasset.io.local.FileLock.SafeFileIO;\r\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class TrackerWriter extends AbstractBackup {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(TrackerWriter.class);\r\n\r\n\tpublic static void save() {\r\n\t\tsave(FileUtil.getPathTrackerData(), TrackerData.get(), true);\r\n\t}\r\n\r\n\tprotected static void save(String filename, Map<String, List<Value>> trackerData, boolean createBackup) {\r\n\t\tTrackerWriter writer = new TrackerWriter();\r\n\t\twriter.write(filename, trackerData, createBackup);\r\n\t}\r\n\r\n\tprivate void write(String filename, Map<String, List<Value>> trackerData, boolean createBackup) {\r\n\t\tFile file;\r\n\t\tif (createBackup) {\r\n\t\t\tfile = getNewFile(filename); //Save to .new file\r\n\t\t} else {\r\n\t\t\tfile = new File(filename);\r\n\t\t}\r\n\t\tGson gson = new GsonBuilder().registerTypeAdapter(Value.class, new ValueSerializerGJson()).create();\r\n\t\ttry (SafeFileIO io = new SafeFileIO(file)) {\r\n\t\t\t//gson.toJson(trackerData, io.getOutputStreamWriter());\r\n\t\t\tgson.toJson(trackerData, io.getOutputStreamWriter());\r\n\t\t\tio.unlock(); //Unlock before backupFile() is called\r\n\t\t\t//Saving done - create backup and rename new file to target\r\n\t\t\tif (createBackup) {\r\n\t\t\t\tbackupFile(filename); //Rename .xml => .bac (.new is safe) and .new => .xml (.bac is safe). That way we always have at least one safe file\r\n\t\t\t}\r\n\t\t\tLOG.info(\"Tracker data saved\");\r\n\t\t} catch (IOException | JsonParseException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static class ValueSerializerGJson implements JsonSerializer<Value> {\r\n\r\n\t\t@Override\r\n\t\tpublic JsonElement serialize(Value value, Type typeOfSrc, JsonSerializationContext context) {\r\n\t\t\tJsonObject valueObject = new JsonObject();\r\n\t\t\tvalueObject.addProperty(\"date\", value.getDate().getTime());\r\n\t\t\tvalueObject.addProperty(\"assets\", value.getAssetsTotal());\r\n\t\t\tvalueObject.addProperty(\"implants\", value.getImplants());\r\n\t\t\tvalueObject.addProperty(\"escrows\", value.getEscrows());\r\n\t\t\tvalueObject.addProperty(\"escrowstocover\", value.getEscrowsToCover());\r\n\t\t\tvalueObject.addProperty(\"sellorders\", value.getSellOrders());\r\n\t\t\tvalueObject.addProperty(\"walletbalance\", value.getBalanceTotal());\r\n\t\t\tvalueObject.addProperty(\"manufacturing\", value.getManufacturing());\r\n\t\t\tvalueObject.addProperty(\"contractcollateral\", value.getContractCollateral());\r\n\t\t\tvalueObject.addProperty(\"contractvalue\", value.getContractValue());\r\n\t\t\tvalueObject.addProperty(\"skillpoints\", value.getSkillPoints());\r\n\t\t\tif (!value.getBalanceFilter().isEmpty()) {\r\n\t\t\t\tJsonArray balanceObject = new JsonArray();\r\n\t\t\t\tvalueObject.add(\"balance\", balanceObject);\r\n\t\t\t\tfor (Map.Entry<String, Double> entry : value.getBalanceFilter().entrySet()) {\r\n\t\t\t\t\tJsonObject itemObject = new JsonObject();\r\n\t\t\t\t\titemObject.addProperty(\"id\", entry.getKey());\r\n\t\t\t\t\titemObject.addProperty(\"value\", entry.getValue());\r\n\t\t\t\t\tbalanceObject.add(itemObject);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvalueObject.addProperty(\"assetscontainersfixed\", value.isAssetsContainersFixed());\r\n\t\t\tif (!value.getAssetsFilter().isEmpty()) {\r\n\t\t\t\tJsonArray assetObject = new JsonArray();\r\n\t\t\t\tvalueObject.add(\"asset\", assetObject);\r\n\t\t\t\tfor (Map.Entry<AssetValue, Double> entry : value.getAssetsFilter().entrySet()) {\r\n\t\t\t\t\tJsonObject itemObject = new JsonObject();\r\n\t\t\t\t\titemObject.addProperty(\"location\", entry.getKey().getLocation());\r\n\t\t\t\t\tif (entry.getKey().getLocationID() != null) {\r\n\t\t\t\t\t\titemObject.addProperty(\"locationid\", entry.getKey().getLocationID());\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (entry.getKey().getFlag() != null) {\r\n\t\t\t\t\t\titemObject.addProperty(\"flag\", entry.getKey().getFlag());\r\n\t\t\t\t\t}\r\n\t\t\t\t\titemObject.addProperty(\"value\", entry.getValue());\r\n\t\t\t\t\tassetObject.add(itemObject);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn valueObject;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/XmlException.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.io.local;\n\n\npublic class XmlException extends Exception {\n\tpublic XmlException(final String message) {\n\t\tsuper(message);\n\t}\n\n\tpublic XmlException(final String message, final Throwable cause) {\n\t\tsuper(message, cause);\n\t}\n\n\tpublic XmlException(final Throwable cause) {\n\t\tsuper(cause);\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/profile/ProfileAccountBalances.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.profile;\r\n\r\nimport java.sql.Connection;\r\nimport java.sql.PreparedStatement;\r\nimport java.sql.ResultSet;\r\nimport java.sql.SQLException;\r\nimport java.sql.Statement;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAccountBalance;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawAccountBalance;\r\nimport net.nikr.eve.jeveasset.io.shared.DataConverter;\r\n\r\n\r\npublic class ProfileAccountBalances extends ProfileTable {\r\n\r\n\tprivate static final String ACCOUNT_BALANCES_TABLE = \"accountbalances\";\r\n\r\n\t@Override\r\n\tprotected void insert(Connection connection, List<EsiOwner> esiOwners) throws SQLException {\r\n\t\t//Delete all data\r\n\t\ttableDelete(connection, ACCOUNT_BALANCES_TABLE);\r\n\r\n\t\t//Insert Data\r\n\t\tString sql = \"INSERT OR REPLACE INTO \" + ACCOUNT_BALANCES_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\taccountkey,\"\r\n\t\t\t\t+ \"\tbalance)\"\r\n\t\t\t\t+ \" VALUES (?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql)) {\r\n\t\t\tRows rows = new Rows(statement, esiOwners, new RowSize<EsiOwner>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize(EsiOwner esiOwner) {\r\n\t\t\t\t\treturn esiOwner.getAccountBalances().size();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfor (EsiOwner owner : esiOwners) {\r\n\t\t\t\tfor (MyAccountBalance accountBalance : owner.getAccountBalances()) {\r\n\t\t\t\t\tint index = 0;\r\n\t\t\t\t\tsetAttribute(statement, ++index, owner.getAccountID());\r\n\t\t\t\t\tsetAttribute(statement, ++index, accountBalance.getAccountKey());\r\n\t\t\t\t\tsetAttribute(statement, ++index, accountBalance.getBalance());\r\n\t\t\t\t\trows.addRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void select(Connection connection, List<EsiOwner> esiOwners, Map<String, EsiOwner> owners)  throws SQLException {\r\n\t\tMap<EsiOwner, List<MyAccountBalance>> accountBalances = new HashMap<>();\r\n\t\tString sql = \"SELECT * FROM \" + ACCOUNT_BALANCES_TABLE;\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tRawAccountBalance accountBalance = RawAccountBalance.create();\r\n\t\t\t\tString accountID = getString(rs, \"accountid\");\r\n\t\t\t\tint accountKey = getInt(rs, \"accountkey\");\r\n\t\t\t\tdouble balance = getDouble(rs, \"balance\");\r\n\t\t\t\taccountBalance.setAccountKey(accountKey);\r\n\t\t\t\taccountBalance.setBalance(balance);\r\n\r\n\t\t\t\tEsiOwner owner = owners.get(accountID);\r\n\t\t\t\tif (owner == null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tlist(owner, accountBalances, DataConverter.toMyAccountBalance(accountBalance, owner));\r\n\t\t\t}\r\n\t\t\tfor (Map.Entry<EsiOwner, List<MyAccountBalance>> entry : accountBalances.entrySet()) {\r\n\t\t\t\tentry.getKey().setAccountBalances(entry.getValue());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean isEmpty(Connection connection) throws SQLException {\r\n\t\treturn !tableExist(connection, ACCOUNT_BALANCES_TABLE);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void create(Connection connection)  throws SQLException {\r\n\t\tif (!tableExist(connection, ACCOUNT_BALANCES_TABLE)) {\r\n\t\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + ACCOUNT_BALANCES_TABLE + \" (\\n\"\r\n\t\t\t\t\t+ \"\taccountid TEXT,\\n\"\r\n\t\t\t\t\t+ \"\taccountkey INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tbalance REAL,\\n\"\r\n\t\t\t\t\t+ \"\tUNIQUE(accountid, accountkey)\\n\"\r\n\t\t\t\t\t+ \");\";\r\n\t\t\ttry (Statement statement = connection.createStatement()) {\r\n\t\t\t\tstatement.execute(sql);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/profile/ProfileActiveShip.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.profile;\r\n\r\nimport java.sql.Connection;\r\nimport java.sql.PreparedStatement;\r\nimport java.sql.ResultSet;\r\nimport java.sql.SQLException;\r\nimport java.sql.Statement;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyShip;\r\n\r\n\r\npublic class ProfileActiveShip extends ProfileTable {\r\n\r\n\tprivate static final String ACTIVE_SHIP_TABLE = \"activeship\";\r\n\r\n\t@Override\r\n\tprotected void insert(Connection connection, List<EsiOwner> esiOwners) throws SQLException {\r\n\t\t//Delete all data\r\n\t\ttableDelete(connection, ACTIVE_SHIP_TABLE);\r\n\r\n\t\t//Insert Data\r\n\t\tString sql = \"INSERT INTO \" + ACTIVE_SHIP_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\titemid,\"\r\n\t\t\t\t+ \"\ttypeid,\"\r\n\t\t\t\t+ \"\tlocationid)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql)) {\r\n\t\t\tRows rows = new Rows(statement, esiOwners, new RowSize<EsiOwner>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize(EsiOwner owner) {\r\n\t\t\t\t\treturn owner.getActiveShip() != null ? 1 : 0;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfor (EsiOwner owner : esiOwners) {\r\n\t\t\t\tint index = 0;\r\n\t\t\t\tMyShip activeShip = owner.getActiveShip();\r\n\t\t\t\tif (activeShip == null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tsetAttribute(statement, ++index, owner.getAccountID());\r\n\t\t\t\tsetAttribute(statement, ++index, activeShip.getItemID());\r\n\t\t\t\tsetAttribute(statement, ++index, activeShip.getTypeID());\r\n\t\t\t\tsetAttribute(statement, ++index, activeShip.getLocationID());\r\n\t\t\t\trows.addRow();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void select(Connection connection, List<EsiOwner> esiOwners, Map<String, EsiOwner> owners) throws SQLException {\r\n\t\tString sql = \"SELECT * FROM \" + ACTIVE_SHIP_TABLE;\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tString accountID = getString(rs, \"accountid\");\r\n\t\t\t\tlong itemID = getLong(rs, \"itemid\");\r\n\t\t\t\tint typeID = getInt(rs, \"typeid\");\r\n\t\t\t\tlong locationID = getLong(rs, \"locationid\");\r\n\r\n\t\t\t\tMyShip activeShip = new MyShip(itemID, typeID, locationID);\r\n\t\t\t\tEsiOwner owner = owners.get(accountID);\r\n\t\t\t\tif (owner != null) {\r\n\t\t\t\t\towner.setActiveShip(activeShip);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean isEmpty(Connection connection) throws SQLException {\r\n\t\treturn !tableExist(connection, ACTIVE_SHIP_TABLE);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void create(Connection connection) throws SQLException {\r\n\t\tif (!tableExist(connection, ACTIVE_SHIP_TABLE)) {\r\n\t\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + ACTIVE_SHIP_TABLE + \" (\\n\"\r\n\t\t\t\t\t+ \"\taccountid TEXT,\\n\"\r\n\t\t\t\t\t+ \"\titemid INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\ttypeid INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tlocationid INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tUNIQUE(accountid)\\n\"\r\n\t\t\t\t\t+ \");\";\r\n\t\t\ttry (Statement statement = connection.createStatement()) {\r\n\t\t\t\tstatement.execute(sql);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/profile/ProfileAssetDivisions.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.io.local.profile;\n\nimport java.sql.Connection;\nimport java.sql.PreparedStatement;\nimport java.sql.ResultSet;\nimport java.sql.SQLException;\nimport java.sql.Statement;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\n\n\npublic class ProfileAssetDivisions extends ProfileTable {\n\n\tprivate static final String ASSET_DIVISIONS_TABLE = \"assetdivisions\";\n\n\t@Override\n\tprotected void insert(Connection connection, List<EsiOwner> esiOwners) throws SQLException {\n\t\t//Delete all data\n\t\ttableDelete(connection, ASSET_DIVISIONS_TABLE);\n\n\t\t//Insert Data\n\t\tString sql = \"INSERT INTO \" + ASSET_DIVISIONS_TABLE + \" (\"\n\t\t\t\t+ \"\taccountid,\"\n\t\t\t\t+ \"\tid,\"\n\t\t\t\t+ \"\tname)\"\n\t\t\t\t+ \" VALUES (?,?,?)\";\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql)) {\n\t\t\tRows rows = new Rows(statement, esiOwners, new RowSize<EsiOwner>() {\n\t\t\t\t@Override\n\t\t\t\tpublic int getSize(EsiOwner esiOwner) {\n\t\t\t\t\treturn esiOwner.getAssetDivisions().size();\n\t\t\t\t}\n\t\t\t});\n\t\t\tfor (EsiOwner owner : esiOwners) {\n\t\t\t\tfor (Map.Entry<Integer, String> entry : owner.getAssetDivisions().entrySet()) {\n\t\t\t\t\tint index = 0;\n\t\t\t\t\tsetAttribute(statement, ++index, owner.getAccountID());\n\t\t\t\t\tsetAttribute(statement, ++index, entry.getKey());\n\t\t\t\t\tsetAttributeOptional(statement, ++index, entry.getValue());\n\t\t\t\t\trows.addRow();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tprotected void select(Connection connection, List<EsiOwner> esiOwners, Map<String, EsiOwner> owners) throws SQLException {\n\t\tMap<EsiOwner, Map<Integer, String>> divisions = new HashMap<>();\n\t\tString sql = \"SELECT * FROM \" + ASSET_DIVISIONS_TABLE;\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql);\n\t\t\t\tResultSet rs = statement.executeQuery();) {\n\t\t\twhile (rs.next()) {\n\t\t\t\tString accountID = getString(rs, \"accountid\");\n\t\t\t\tint id = getInt(rs, \"id\");\n\t\t\t\tString name = getStringOptional(rs, \"name\");\n\n\t\t\t\tEsiOwner owner = owners.get(accountID);\n\t\t\t\tif (owner == null) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tmap(owner, divisions, id, name);\n\t\t\t}\n\t\t\tfor (Map.Entry<EsiOwner, Map<Integer, String>> entry : divisions.entrySet()) {\n\t\t\t\tentry.getKey().setAssetDivisions(entry.getValue());\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tprotected boolean isEmpty(Connection connection) throws SQLException {\n\t\treturn !tableExist(connection, ASSET_DIVISIONS_TABLE);\n\t}\n\n\t@Override\n\tprotected void create(Connection connection) throws SQLException {\n\t\tif (!tableExist(connection, ASSET_DIVISIONS_TABLE)) {\n\t\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + ASSET_DIVISIONS_TABLE + \" (\\n\"\n\t\t\t\t\t+ \"\taccountid TEXT,\\n\"\n\t\t\t\t\t+ \"\tid INTEGER,\"\n\t\t\t\t\t+ \"\tname TEXT,\"\n\t\t\t\t\t+ \"\tUNIQUE(accountid, id)\\n\"\n\t\t\t\t\t+ \");\";\n\t\t\ttry (Statement statement = connection.createStatement()) {\n\t\t\t\tstatement.execute(sql);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/profile/ProfileAssets.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.profile;\r\n\r\nimport java.sql.Connection;\r\nimport java.sql.PreparedStatement;\r\nimport java.sql.ResultSet;\r\nimport java.sql.SQLException;\r\nimport java.sql.Statement;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawAsset;\r\nimport net.nikr.eve.jeveasset.io.shared.DataConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\r\n\r\n\r\npublic class ProfileAssets extends ProfileTable {\r\n\r\n\tprivate static final String ASSETS_TABLE = \"assets\";\r\n\r\n\t@Override\r\n\tprotected void insert(Connection connection, List<EsiOwner> esiOwners) throws SQLException {\r\n\t\t//Delete all data\r\n\t\ttableDelete(connection, ASSETS_TABLE);\r\n\r\n\t\t//Insert data\r\n\t\tString sql = \"INSERT OR REPLACE INTO \" + ASSETS_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\tcount,\"\r\n\t\t\t\t+ \"\tflagid,\"\r\n\t\t\t\t+ \"\tflagstring,\"\r\n\t\t\t\t+ \"\titemid,\"\r\n\t\t\t\t+ \"\ttypeid,\"\r\n\t\t\t\t+ \"\tlocationid,\"\r\n\t\t\t\t+ \"\tsingleton,\"\r\n\t\t\t\t+ \"\trawquantity)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?,?,?,?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql)) {\r\n\t\t\tRows rows = new Rows(statement, esiOwners, new RowSize<EsiOwner>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize(EsiOwner owner) {\r\n\t\t\t\t\treturn getAssetSize(owner.getAssets());\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfor (EsiOwner owner : esiOwners) {\r\n\t\t\t\tinsertAssets(statement, rows, owner.getAssets(), owner.getAccountID(), null);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate int getAssetSize(List<MyAsset> assets) {\r\n\t\tint size = assets.size();\r\n\t\tfor (MyAsset asset : assets) {\r\n\t\t\tsize += getAssetSize(asset.getAssets());\r\n\t\t}\r\n\t\treturn size;\r\n\t}\r\n\r\n\tprivate void insertAssets(PreparedStatement statement, Rows rows, final List<MyAsset> assets, String accountID, Long parentID) throws SQLException {\r\n\t\tif (assets == null || assets.isEmpty()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tfor (MyAsset asset : assets) {\r\n\t\t\tint index = 0;\r\n\t\t\tInteger quantity = asset.getQuantity();\r\n\t\t\tint count;\r\n\t\t\tInteger rawQuantity;\r\n\t\t\tif (quantity == null || quantity <= 0) {\r\n\t\t\t\tcount = 1;\r\n\t\t\t\trawQuantity = quantity; //Possible values: null, -1, -2\r\n\t\t\t} else {\r\n\t\t\t\tcount = quantity;\r\n\t\t\t\trawQuantity = null;\r\n\t\t\t}\r\n\t\t\tsetAttribute(statement, ++index, accountID);\r\n\t\t\tsetAttribute(statement, ++index, count);\r\n\t\t\tsetAttributeOptional(statement, ++index, asset.getFlagID());\r\n\t\t\tsetAttributeOptional(statement, ++index, asset.getLocationFlagString());\r\n\t\t\tsetAttribute(statement, ++index, asset.getItemID());\r\n\t\t\tsetAttribute(statement, ++index, asset.getItem().getTypeID());\r\n\t\t\tif (parentID != null) {\r\n\t\t\t\tsetAttribute(statement, ++index, parentID);\r\n\t\t\t} else {\r\n\t\t\t\tsetAttribute(statement, ++index, asset.getLocationID());\r\n\t\t\t}\r\n\t\t\tsetAttribute(statement, ++index, asset.isSingleton());\r\n\t\t\tsetAttributeOptional(statement, ++index, rawQuantity);\r\n\t\t\trows.addRow();\r\n\t\t\tinsertAssets(statement, rows, asset.getAssets(), accountID, asset.getItemID());\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void select(Connection connection, List<EsiOwner> esiOwners, Map<String, EsiOwner> owners) throws SQLException {\r\n\t\tMap<EsiOwner, List<RawAsset>> assets = new HashMap<>();\r\n\t\tString sql = \"SELECT * FROM \" + ASSETS_TABLE;\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tint count = getInt(rs, \"count\");\r\n\t\t\t\tString accountID = getString(rs, \"accountid\");\r\n\t\t\t\tlong itemId = getLong(rs, \"itemid\");\r\n\t\t\t\tint typeID = getInt(rs, \"typeid\");\r\n\t\t\t\tlong locationID = getLong(rs, \"locationid\");\r\n\t\t\t\tboolean singleton = getBoolean(rs, \"singleton\");\r\n\t\t\t\tInteger rawQuantity = getIntOptional(rs, \"rawquantity\");\r\n\t\t\t\tint flagID = getInt(rs, \"flagid\");\r\n\t\t\t\tString locationFlagString = getStringOptional(rs, \"flagstring\");\r\n\t\t\t\tRawAsset rawAsset = RawAsset.create();\r\n\t\t\t\trawAsset.setItemID(itemId);\r\n\t\t\t\trawAsset.setItemFlag(RawConverter.toFlag(flagID, locationFlagString));\r\n\t\t\t\trawAsset.setLocationFlagString(locationFlagString);\r\n\t\t\t\trawAsset.setLocationID(locationID);\r\n\t\t\t\trawAsset.setQuantity(RawConverter.toAssetQuantity(count, rawQuantity));\r\n\t\t\t\trawAsset.setSingleton(singleton);\r\n\t\t\t\trawAsset.setTypeID(typeID);\r\n\t\t\t\tEsiOwner owner = owners.get(accountID);\r\n\t\t\t\tif (owner == null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tlist(owner, assets, rawAsset);\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (Map.Entry<EsiOwner, List<RawAsset>> entry : assets.entrySet()) {\r\n\t\t\tentry.getKey().setAssets(DataConverter.toRawAssets(entry.getValue(), entry.getKey()));\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean isEmpty(Connection connection) throws SQLException {\r\n\t\treturn !tableExist(connection, ASSETS_TABLE);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void create(Connection connection) throws SQLException {\r\n\t\tif (!tableExist(connection, ASSETS_TABLE)) {\r\n\t\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + ASSETS_TABLE + \" (\\n\"\r\n\t\t\t\t\t+ \"\taccountid TEXT,\\n\"\r\n\t\t\t\t\t+ \"\tcount INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tflagid INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tflagstring TEXT,\\n\"\r\n\t\t\t\t\t+ \"\titemid INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\ttypeid INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tlocationid INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tsingleton NUMERIC,\\n\"\r\n\t\t\t\t\t+ \"\trawquantity INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tUNIQUE(accountid, itemid)\\n\"\r\n\t\t\t\t\t+ \");\";\r\n\t\t\ttry (Statement statement = connection.createStatement()) {\r\n\t\t\t\tstatement.execute(sql);\r\n\t\t\t}\r\n\t\t}\r\n\t}\t\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/profile/ProfileBlueprints.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.profile;\r\n\r\nimport java.sql.Connection;\r\nimport java.sql.PreparedStatement;\r\nimport java.sql.ResultSet;\r\nimport java.sql.SQLException;\r\nimport java.sql.Statement;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawBlueprint;\r\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\r\n\r\n\r\npublic class ProfileBlueprints extends ProfileTable {\r\n\r\n\tprivate static final String BLUEPRINTS_TABLE = \"blueprints\";\r\n\r\n\t@Override\r\n\tprotected void insert(Connection connection, List<EsiOwner> esiOwners) throws SQLException {\r\n\t\t//Delete all data\r\n\t\ttableDelete(connection, BLUEPRINTS_TABLE);\r\n\r\n\t\t//Insert data\r\n\t\tString sql = \"INSERT INTO \" + BLUEPRINTS_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\titemid,\"\r\n\t\t\t\t+ \"\tlocationid,\"\r\n\t\t\t\t+ \"\ttypeid,\"\r\n\t\t\t\t+ \"\tflagid,\"\r\n\t\t\t\t+ \"\tflagstring,\"\r\n\t\t\t\t+ \"\tquantity,\"\r\n\t\t\t\t+ \"\ttimeefficiency,\"\r\n\t\t\t\t+ \"\tmaterialefficiency,\"\r\n\t\t\t\t+ \"\truns)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?,?,?,?,?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql)) {\r\n\t\t\tRows rows = new Rows(statement, esiOwners, new RowSize<EsiOwner>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize(EsiOwner esiOwner) {\r\n\t\t\t\t\treturn esiOwner.getBlueprints().size();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfor (EsiOwner owner : esiOwners) {\r\n\t\t\t\tfor (RawBlueprint blueprint : owner.getBlueprints().values()) {\r\n\t\t\t\t\tint index = 0;\r\n\t\t\t\t\tsetAttribute(statement, ++index, owner.getAccountID());\r\n\t\t\t\t\tsetAttribute(statement, ++index, blueprint.getItemID());\r\n\t\t\t\t\tsetAttribute(statement, ++index, blueprint.getLocationID());\r\n\t\t\t\t\tsetAttribute(statement, ++index, blueprint.getTypeID());\r\n\t\t\t\t\tsetAttribute(statement, ++index, blueprint.getFlagID());\r\n\t\t\t\t\tsetAttributeOptional(statement, ++index, blueprint.getLocationFlagString());\r\n\t\t\t\t\tsetAttribute(statement, ++index, blueprint.getQuantity());\r\n\t\t\t\t\tsetAttribute(statement, ++index, blueprint.getTimeEfficiency());\r\n\t\t\t\t\tsetAttribute(statement, ++index, blueprint.getMaterialEfficiency());\r\n\t\t\t\t\tsetAttribute(statement, ++index, blueprint.getRuns());\r\n\t\t\t\t\trows.addRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void select(Connection connection, List<EsiOwner> esiOwners, Map<String, EsiOwner> owners) throws SQLException {\r\n\t\tMap<EsiOwner, Map<Long, RawBlueprint>> blueprints = new HashMap<>();\r\n\t\tString sql = \"SELECT * FROM \" + BLUEPRINTS_TABLE;\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tString accountID = getString(rs, \"accountid\");\r\n\t\t\t\t\r\n\t\t\t\tRawBlueprint blueprint = RawBlueprint.create();\r\n\t\t\t\tlong itemID = getLong(rs, \"itemid\");\r\n\t\t\t\tlong locationID = getLong(rs, \"locationid\");\r\n\t\t\t\tint typeID = getInt(rs, \"typeid\");\r\n\t\t\t\tint flagID = getInt(rs, \"flagid\");\r\n\t\t\t\tString locationFlagString = getStringOptional(rs, \"flagstring\");\r\n\t\t\t\tint quantity = getInt(rs, \"quantity\");\r\n\t\t\t\tint timeEfficiency = getInt(rs, \"timeefficiency\");\r\n\t\t\t\tint materialEfficiency = getInt(rs, \"materialefficiency\");\r\n\t\t\t\tint runs = getInt(rs, \"runs\");\r\n\r\n\t\t\t\tblueprint.setItemID(itemID);\r\n\t\t\t\tblueprint.setItemFlag(RawConverter.toFlag(flagID, locationFlagString));\r\n\t\t\t\tblueprint.setLocationFlagString(locationFlagString);\r\n\t\t\t\tblueprint.setLocationID(locationID);\r\n\t\t\t\tblueprint.setMaterialEfficiency(materialEfficiency);\r\n\t\t\t\tblueprint.setQuantity(quantity);\r\n\t\t\t\tblueprint.setRuns(runs);\r\n\t\t\t\tblueprint.setTimeEfficiency(timeEfficiency);\r\n\t\t\t\tblueprint.setTypeID(typeID);\r\n\t\t\t\t\r\n\t\t\t\tEsiOwner owner = owners.get(accountID);\r\n\t\t\t\tif (owner == null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tmap(owner, blueprints, itemID, blueprint);\r\n\t\t\t}\r\n\t\t\tfor (Map.Entry<EsiOwner, Map<Long, RawBlueprint>> entry : blueprints.entrySet()) {\r\n\t\t\t\tentry.getKey().setBlueprints(entry.getValue());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean isEmpty(Connection connection) throws SQLException {\r\n\t\treturn !tableExist(connection, BLUEPRINTS_TABLE);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void create(Connection connection) throws SQLException {\r\n\t\tif (!tableExist(connection, BLUEPRINTS_TABLE)) {\r\n\t\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + BLUEPRINTS_TABLE + \" (\\n\"\r\n\t\t\t\t\t+ \"\taccountid TEXT,\\n\"\r\n\t\t\t\t\t+ \"\titemid INTEGER,\"\r\n\t\t\t\t\t+ \"\tlocationid INTEGER,\"\r\n\t\t\t\t\t+ \"\ttypeid INTEGER,\"\r\n\t\t\t\t\t+ \"\tflagid INTEGER,\"\r\n\t\t\t\t\t+ \"\tflagstring TEXT,\"\r\n\t\t\t\t\t+ \"\tquantity INTEGER,\"\r\n\t\t\t\t\t+ \"\ttimeefficiency INTEGER,\"\r\n\t\t\t\t\t+ \"\tmaterialefficiency INTEGER,\"\r\n\t\t\t\t\t+ \"\truns NUMERIC,\"\r\n\t\t\t\t\t+ \"\tUNIQUE(accountid, itemid)\\n\"\r\n\t\t\t\t\t+ \");\";\r\n\t\t\ttry (Statement statement = connection.createStatement()) {\r\n\t\t\t\tstatement.execute(sql);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/profile/ProfileClones.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.profile;\r\n\r\nimport java.sql.Connection;\r\nimport java.sql.PreparedStatement;\r\nimport java.sql.ResultSet;\r\nimport java.sql.SQLException;\r\nimport java.sql.Statement;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawClone;\r\n\r\n\r\npublic class ProfileClones  extends ProfileTable {\r\n\r\n\tprivate static final String CLONES_TABLE = \"clones\";\r\n\tprivate static final String CLONES_IMPLANTS_TABLE = \"clonesimplants\";\r\n\r\n\t@Override\r\n\tprotected void insert(Connection connection, List<EsiOwner> esiOwners) throws SQLException {\r\n\t\t//Delete all data\r\n\t\ttableDelete(connection, CLONES_TABLE, CLONES_IMPLANTS_TABLE);\r\n\r\n\t\t//Insert data\r\n\t\tString sql = \"INSERT INTO \" + CLONES_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\tlocationid,\"\r\n\t\t\t\t+ \"\tjumpcloneid,\"\r\n\t\t\t\t+ \"\tname,\"\r\n\t\t\t\t+ \"\tactive)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql)) {\r\n\t\t\tRows rows = new Rows(statement, esiOwners, new RowSize<EsiOwner>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize(EsiOwner owner) {\r\n\t\t\t\t\treturn owner.getClones().size();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfor (EsiOwner owner : esiOwners) {\r\n\t\t\t\tfor (RawClone rawClone : owner.getClones()) {\r\n\t\t\t\t\tint index = 0;\r\n\t\t\t\t\tsetAttribute(statement, ++index, owner.getAccountID());\r\n\t\t\t\t\tsetAttribute(statement, ++index, rawClone.getLocationID());\r\n\t\t\t\t\tsetAttribute(statement, ++index, rawClone.getJumpCloneID());\r\n\t\t\t\t\tsetAttributeOptional(statement, ++index, rawClone.getName());\r\n\t\t\t\t\tsetAttribute(statement, ++index, rawClone.isActive());\r\n\t\t\t\t\trows.addRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Insert data\r\n\t\tsql = \"INSERT INTO \" + CLONES_IMPLANTS_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\tjumpcloneid,\"\r\n\t\t\t\t+ \"\ttypeid)\"\r\n\t\t\t\t+ \" VALUES (?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql)) {\r\n\t\t\tRows rows = new Rows(statement, esiOwners, new RowSize<EsiOwner>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize(EsiOwner owner) {\r\n\t\t\t\t\tint size = 0;\r\n\t\t\t\t\tfor (RawClone clone : owner.getClones()) {\r\n\t\t\t\t\t\tsize = size + clone.getImplants().size();\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn size;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfor (EsiOwner owner : esiOwners) {\r\n\t\t\t\tfor (RawClone rawClone : owner.getClones()) {\r\n\t\t\t\t\tfor (int typeID : rawClone.getImplants()){\r\n\t\t\t\t\t\tint index = 0;\r\n\t\t\t\t\t\tsetAttribute(statement, ++index, owner.getAccountID());\r\n\t\t\t\t\t\tsetAttribute(statement, ++index, rawClone.getJumpCloneID());\r\n\t\t\t\t\t\tsetAttribute(statement, ++index, typeID);\r\n\t\t\t\t\t\trows.addRow();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void select(Connection connection, List<EsiOwner> esiOwners, Map<String, EsiOwner> owners) throws SQLException {\r\n\t\tif (!tableExist(connection, CLONES_TABLE)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tMap<EsiOwner, Map<Long, RawClone>> clones = new HashMap<>();\r\n\t\tString sql = \"SELECT * FROM \" + CLONES_TABLE;\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tString accountID = getString(rs, \"accountid\");\r\n\t\t\t\tRawClone rawClone = RawClone.create();\r\n\t\t\t\tlong locationID = getLong(rs, \"locationid\");\r\n\t\t\t\tlong jumpCloneID = getLong(rs, \"jumpcloneid\");\r\n\t\t\t\tString name = getStringOptional(rs, \"name\");\r\n\t\t\t\tboolean active  = getBooleanNotNull(rs, \"active\", false);\r\n\r\n\t\t\t\trawClone.setJumpCloneID(jumpCloneID);\r\n\t\t\t\trawClone.setLocationID(locationID);\r\n\t\t\t\trawClone.setName(name);\r\n\t\t\t\trawClone.setActive(active);\r\n\t\t\t\t\r\n\t\t\t\tEsiOwner owner = owners.get(accountID);\r\n\t\t\t\tif (owner == null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\towner.getClones().add(rawClone);\r\n\t\t\t\tmap(owner, clones, jumpCloneID, rawClone);\r\n\t\t\t\r\n\t\t\t}\r\n\t\t}\r\n\t\tsql = \"SELECT * FROM \" + CLONES_IMPLANTS_TABLE;\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tString accountID = getString(rs, \"accountid\");\r\n\t\t\t\tlong jumpCloneID = getLong(rs, \"jumpcloneid\");\r\n\t\t\t\tint typeID = getInt(rs, \"typeid\");\r\n\t\t\t\t\r\n\t\t\t\tEsiOwner owner = owners.get(accountID);\r\n\t\t\t\tif (owner == null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tclones.get(owner).get(jumpCloneID).getImplants().add(typeID);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean isEmpty(Connection connection) throws SQLException {\r\n\t\treturn !tableExist(connection, CLONES_TABLE, CLONES_IMPLANTS_TABLE);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void updateTable(Connection connection) throws SQLException {\r\n\t\taddColumn(connection, CLONES_TABLE, \"active\", \"INTEGER\");\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void create(Connection connection) throws SQLException {\r\n\t\tif (!tableExist(connection, CLONES_TABLE)) {\r\n\t\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + CLONES_TABLE + \" (\\n\"\r\n\t\t\t\t\t+ \"\taccountid TEXT,\\n\"\r\n\t\t\t\t\t+ \"\tlocationid INTEGER,\"\r\n\t\t\t\t\t+ \"\tjumpcloneid INTEGER,\"\r\n\t\t\t\t\t+ \"\tname TEXT,\"\r\n\t\t\t\t\t+ \"\tactive INTEGER,\"\r\n\t\t\t\t\t+ \"\tUNIQUE(accountid, locationid, jumpcloneid)\\n\"\r\n\t\t\t\t\t+ \");\";\r\n\t\t\ttry (Statement statement = connection.createStatement()) {\r\n\t\t\t\tstatement.execute(sql);\r\n\t\t\t}\r\n\t\t\tsql = \"CREATE TABLE IF NOT EXISTS \" + CLONES_IMPLANTS_TABLE + \" (\\n\"\r\n\t\t\t\t\t+ \"\taccountid TEXT,\\n\"\r\n\t\t\t\t\t+ \"\tjumpcloneid INTEGER,\"\r\n\t\t\t\t\t+ \"\ttypeid INTEGER,\"\r\n\t\t\t\t\t+ \"\tUNIQUE(accountid, jumpcloneid, typeid)\\n\"\r\n\t\t\t\t\t+ \");\";\r\n\t\t\ttry (Statement statement = connection.createStatement()) {\r\n\t\t\t\tstatement.execute(sql);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/profile/ProfileConnection.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.profile;\r\n\r\nimport java.sql.Connection;\r\nimport java.sql.SQLException;\r\n\r\n\r\npublic interface ProfileConnection {\r\n\tpublic void update(Connection connection) throws SQLException;\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/profile/ProfileConnectionData.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.profile;\r\n\r\nimport java.sql.Connection;\r\nimport java.sql.SQLException;\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\n\r\n\r\npublic abstract class ProfileConnectionData<T> implements ProfileConnection {\r\n\r\n\tprivate final Collection<T> t;\r\n\r\n\tpublic ProfileConnectionData(Collection<T> t) {\r\n\t\tthis.t = new ArrayList<>(t);\r\n\t}\r\n\t\r\n\t@Override\r\n\tpublic void update(Connection connection) throws SQLException {\r\n\t\tupdate(connection, t);\r\n\t}\r\n\t\r\n\tpublic abstract void update(Connection connection, Collection<T> data) throws SQLException;\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/profile/ProfileContracts.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.profile;\r\n\r\nimport java.sql.Connection;\r\nimport java.sql.PreparedStatement;\r\nimport java.sql.ResultSet;\r\nimport java.sql.SQLException;\r\nimport java.sql.Statement;\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawContract;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawContractItem;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.io.shared.DataConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\r\n\r\n\r\npublic class ProfileContracts extends ProfileTable {\r\n\r\n\tprivate static final String CONTRACTS_OWNERS_TABLE = \"contractsowners\";\r\n\tprivate static final String CONTRACTS_TABLE = \"contracts\";\r\n\tprivate static final String CONTRACT_ITEMS_TABLE = \"contractitems\";\r\n\r\n\t@Override\r\n\tprotected boolean isUpdated() {\r\n\t\treturn Settings.get().isContractHistory();\r\n\t}\r\n\r\n\tprivate static void set(PreparedStatement statement, MyContract contract) throws SQLException {\r\n\t\tint index = 0;\r\n\t\tsetAttribute(statement, ++index, contract.getAcceptorID());\r\n\t\tsetAttribute(statement, ++index, contract.getAssigneeID());\r\n\t\tsetAttributeOptional(statement, ++index, contract.getAvailability());\r\n\t\tsetAttributeOptional(statement, ++index, contract.getAvailabilityString());\r\n\t\tsetAttributeOptional(statement, ++index, contract.getBuyout());\r\n\t\tsetAttributeOptional(statement, ++index, contract.getCollateral());\r\n\t\tsetAttribute(statement, ++index, contract.getContractID());\r\n\t\tsetAttributeOptional(statement, ++index, contract.getDateAccepted());\r\n\t\tsetAttributeOptional(statement, ++index, contract.getDateCompleted());\r\n\t\tsetAttribute(statement, ++index, contract.getDateExpired());\r\n\t\tsetAttribute(statement, ++index, contract.getDateIssued());\r\n\t\tsetAttributeOptional(statement, ++index, contract.getEndLocationID());\r\n\t\tsetAttribute(statement, ++index, contract.getIssuerCorpID());\r\n\t\tsetAttribute(statement, ++index, contract.getIssuerID());\r\n\t\tsetAttributeOptional(statement, ++index, contract.getDaysToComplete());\r\n\t\tsetAttributeOptional(statement, ++index, contract.getPrice());\r\n\t\tsetAttributeOptional(statement, ++index, contract.getReward());\r\n\t\tsetAttributeOptional(statement, ++index, contract.getStartLocationID());\r\n\t\tsetAttributeOptional(statement, ++index, contract.getStatus());\r\n\t\tsetAttributeOptional(statement, ++index, contract.getStatusString());\r\n\t\tsetAttributeOptional(statement, ++index, contract.getTitle());\r\n\t\tsetAttributeOptional(statement, ++index, contract.getTypeString());\r\n\t\tsetAttributeOptional(statement, ++index, contract.getType());\r\n\t\tsetAttributeOptional(statement, ++index, contract.getVolume());\r\n\t\tsetAttribute(statement, ++index, contract.isForCorp());\r\n\t\tsetAttribute(statement, ++index, contract.isESI());\r\n\t}\r\n\r\n\tprivate static void set(PreparedStatement statement, MyContractItem contractItem) throws SQLException {\r\n\t\tint index = 0;\r\n\t\tsetAttribute(statement, ++index, contractItem.getContract().getContractID());\r\n\t\tsetAttribute(statement, ++index, contractItem.isIncluded());\r\n\t\tsetAttribute(statement, ++index, contractItem.getQuantity());\r\n\t\tsetAttribute(statement, ++index, contractItem.getRecordID());\r\n\t\tsetAttribute(statement, ++index, contractItem.isSingleton());\r\n\t\tsetAttribute(statement, ++index, contractItem.getTypeID());\r\n\t\tsetAttributeOptional(statement, ++index, contractItem.getRawQuantity());\r\n\t\tsetAttributeOptional(statement, ++index, contractItem.getItemID());\r\n\t\tsetAttributeOptional(statement, ++index, contractItem.getLicensedRuns());\r\n\t\tsetAttributeOptional(statement, ++index, contractItem.getME());\r\n\t\tsetAttributeOptional(statement, ++index, contractItem.getTE());\r\n\t}\r\n\r\n\t/**\r\n\t * Contract items are immutable (IGNORE)\r\n\t * @param connection\r\n\t * @param contractItemsLists \r\n\t * @throws java.sql.SQLException \r\n\t */\r\n\tpublic static void updateContractItems(Connection connection, Collection<List<MyContractItem>> contractItemsLists) throws SQLException {\r\n\t\t//Tables exist\r\n\t\tif (!tableExist(connection, CONTRACT_ITEMS_TABLE)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//Insert data\r\n\t\tString sqlContractItems = \"INSERT OR IGNORE INTO \" + CONTRACT_ITEMS_TABLE + \" (\"\r\n\t\t\t\t+ \"\tcontractid,\"\r\n\t\t\t\t+ \"\tincluded,\"\r\n\t\t\t\t+ \"\tquantity,\"\r\n\t\t\t\t+ \"\trecordid,\"\r\n\t\t\t\t+ \"\tsingleton,\"\r\n\t\t\t\t+ \"\ttypeid,\"\r\n\t\t\t\t+ \"\trawquantity,\"\r\n\t\t\t\t+ \"\titemid,\"\r\n\t\t\t\t+ \"\truns,\"\r\n\t\t\t\t+ \"\tme,\"\r\n\t\t\t\t+ \"\tte)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?,?,?,?,?,?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sqlContractItems)) {\r\n\t\t\tRows rows = new Rows(statement, contractItemsLists, new RowSize<List<MyContractItem>>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize(List<MyContractItem> contractItems) {\r\n\t\t\t\t\treturn contractItems.size();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfor (Collection<MyContractItem> contractItems : contractItemsLists) {\r\n\t\t\t\tfor (MyContractItem contractItem : contractItems) {\r\n\t\t\t\t\tset(statement, contractItem);\r\n\t\t\t\t\trows.addRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Contracts are mutable (REPLACE).Owners are immutable (IGNORE)\r\n\t * @param connection\r\n\t * @param accountID\r\n\t * @param contracts \r\n\t * @throws java.sql.SQLException \r\n\t */\r\n\tpublic static void updateContracts(Connection connection, String accountID, Collection<MyContract> contracts) throws SQLException {\r\n\t\t//Tables exist\r\n\t\tif (!tableExist(connection, CONTRACTS_OWNERS_TABLE, CONTRACTS_TABLE)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//Insert data\r\n\t\tString sqlOwners = \"INSERT OR IGNORE INTO \" + CONTRACTS_OWNERS_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\tcontractid)\"\r\n\t\t\t\t+ \" VALUES (?,?)\"\r\n\t\t\t\t;\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sqlOwners)) {\r\n\t\t\tRows rows = new Rows(statement, contracts.size());\r\n\t\t\tfor (MyContract contract : contracts) {\r\n\t\t\t\tint index = 0;\r\n\t\t\t\tsetAttribute(statement, ++index, accountID);\r\n\t\t\t\tsetAttribute(statement, ++index, contract.getContractID());\r\n\t\t\t\trows.addRow();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tString sqlContracts = \"INSERT OR REPLACE INTO \" + CONTRACTS_TABLE + \" (\"\r\n\t\t\t\t+ \"\tacceptorid,\"\r\n\t\t\t\t+ \"\tassigneeid,\"\r\n\t\t\t\t+ \"\tavailability,\"\r\n\t\t\t\t+ \"\tavailabilitystring,\"\r\n\t\t\t\t+ \"\tbuyout,\"\r\n\t\t\t\t+ \"\tcollateral,\"\r\n\t\t\t\t+ \"\tcontractid,\"\r\n\t\t\t\t+ \"\tdateaccepted,\"\r\n\t\t\t\t+ \"\tdatecompleted,\"\r\n\t\t\t\t+ \"\tdateexpired,\"\r\n\t\t\t\t+ \"\tdateissued,\"\r\n\t\t\t\t+ \"\tendstationid,\"\r\n\t\t\t\t+ \"\tissuercorpid,\"\r\n\t\t\t\t+ \"\tissuerid,\"\r\n\t\t\t\t+ \"\tnumdays,\"\r\n\t\t\t\t+ \"\tprice,\"\r\n\t\t\t\t+ \"\treward,\"\r\n\t\t\t\t+ \"\tstartstationid,\"\r\n\t\t\t\t+ \"\tstatus,\"\r\n\t\t\t\t+ \"\tstatusstring,\"\r\n\t\t\t\t+ \"\ttitle,\"\r\n\t\t\t\t+ \"\ttypestring,\"\r\n\t\t\t\t+ \"\ttype,\"\r\n\t\t\t\t+ \"\tvolume,\"\r\n\t\t\t\t+ \"\tforcorp,\"\r\n\t\t\t\t+ \"\tesi)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sqlContracts)) {\r\n\t\t\tRows rows = new Rows(statement, contracts.size());\r\n\t\t\tfor (MyContract contract : contracts) {\r\n\t\t\t\tset(statement, contract);\r\n\t\t\t\trows.addRow();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void insert(Connection connection, List<EsiOwner> esiOwners) throws SQLException {\r\n\t\t//Delete all data\r\n\t\ttableDelete(connection, CONTRACTS_OWNERS_TABLE, CONTRACTS_TABLE, CONTRACT_ITEMS_TABLE);\r\n\r\n\t\t//Insert data\r\n\t\tString sqlOwners = \"INSERT OR IGNORE INTO \" + CONTRACTS_OWNERS_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\tcontractid)\"\r\n\t\t\t\t+ \" VALUES (?,?)\"\r\n\t\t\t\t;\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sqlOwners)) {\r\n\t\t\tRows rows = new Rows(statement, esiOwners, new RowSize<EsiOwner>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize(EsiOwner owner) {\r\n\t\t\t\t\treturn owner.getContracts().size();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfor (EsiOwner owner : esiOwners) {\r\n\t\t\t\tfor (MyContract contract : owner.getContracts().keySet()) {\r\n\t\t\t\t\tint index = 0;\r\n\t\t\t\t\tsetAttribute(statement, ++index, owner.getAccountID());\r\n\t\t\t\t\tsetAttribute(statement, ++index, contract.getContractID());\r\n\t\t\t\t\trows.addRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tString sqlContracts = \"INSERT OR REPLACE INTO \" + CONTRACTS_TABLE + \" (\"\r\n\t\t\t\t+ \"\tacceptorid,\"\r\n\t\t\t\t+ \"\tassigneeid,\"\r\n\t\t\t\t+ \"\tavailability,\"\r\n\t\t\t\t+ \"\tavailabilitystring,\"\r\n\t\t\t\t+ \"\tbuyout,\"\r\n\t\t\t\t+ \"\tcollateral,\"\r\n\t\t\t\t+ \"\tcontractid,\"\r\n\t\t\t\t+ \"\tdateaccepted,\"\r\n\t\t\t\t+ \"\tdatecompleted,\"\r\n\t\t\t\t+ \"\tdateexpired,\"\r\n\t\t\t\t+ \"\tdateissued,\"\r\n\t\t\t\t+ \"\tendstationid,\"\r\n\t\t\t\t+ \"\tissuercorpid,\"\r\n\t\t\t\t+ \"\tissuerid,\"\r\n\t\t\t\t+ \"\tnumdays,\"\r\n\t\t\t\t+ \"\tprice,\"\r\n\t\t\t\t+ \"\treward,\"\r\n\t\t\t\t+ \"\tstartstationid,\"\r\n\t\t\t\t+ \"\tstatus,\"\r\n\t\t\t\t+ \"\tstatusstring,\"\r\n\t\t\t\t+ \"\ttitle,\"\r\n\t\t\t\t+ \"\ttypestring,\"\r\n\t\t\t\t+ \"\ttype,\"\r\n\t\t\t\t+ \"\tvolume,\"\r\n\t\t\t\t+ \"\tforcorp,\"\r\n\t\t\t\t+ \"\tesi)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sqlContracts)) {\r\n\t\t\tRows rows = new Rows(statement, esiOwners, new RowSize<EsiOwner>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize(EsiOwner owner) {\r\n\t\t\t\t\treturn owner.getContracts().keySet().size();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfor (EsiOwner owner : esiOwners) {\r\n\t\t\t\tfor (MyContract contract : owner.getContracts().keySet()) {\r\n\t\t\t\t\tset(statement, contract);\r\n\t\t\t\t\trows.addRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tString sqlContractItems = \"INSERT OR IGNORE INTO \" + CONTRACT_ITEMS_TABLE + \" (\"\r\n\t\t\t\t+ \"\tcontractid,\"\r\n\t\t\t\t+ \"\tincluded,\"\r\n\t\t\t\t+ \"\tquantity,\"\r\n\t\t\t\t+ \"\trecordid,\"\r\n\t\t\t\t+ \"\tsingleton,\"\r\n\t\t\t\t+ \"\ttypeid,\"\r\n\t\t\t\t+ \"\trawquantity,\"\r\n\t\t\t\t+ \"\titemid,\"\r\n\t\t\t\t+ \"\truns,\"\r\n\t\t\t\t+ \"\tme,\"\r\n\t\t\t\t+ \"\tte)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?,?,?,?,?,?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sqlContractItems)) {\r\n\t\t\tRows rows = new Rows(statement, esiOwners, new RowSize<EsiOwner>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize(EsiOwner owner) {\r\n\t\t\t\t\tint size = 0;\r\n\t\t\t\t\tfor (List<MyContractItem> contractItems : owner.getContracts().values()) {\r\n\t\t\t\t\t\tsize += contractItems.size();\r\n\t\t\t\t}\r\n\t\t\t\t\treturn size;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfor (EsiOwner owner : esiOwners) {\r\n\t\t\t\tfor (List<MyContractItem> contractItems : owner.getContracts().values()) {\r\n\t\t\t\t\tfor (MyContractItem contractItem : contractItems) {\r\n\t\t\t\t\t\tset(statement, contractItem);\r\n\t\t\t\t\t\trows.addRow();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void select(Connection connection, List<EsiOwner> esiOwners, Map<String, EsiOwner> owners) throws SQLException {\r\n\t\tString ownerSQL = \"SELECT * FROM \" + CONTRACTS_OWNERS_TABLE;\r\n\t\tMap<Integer, Set<EsiOwner>> contractOwners = new HashMap<>();\r\n\t\tMap<EsiOwner, Map<MyContract, List<MyContractItem>>> contracts = new HashMap<>();\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(ownerSQL);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tString accountID = getString(rs, \"accountid\");\r\n\t\t\t\tint contractID = getInt(rs, \"contractid\");\r\n\t\t\t\tSet<EsiOwner> set = contractOwners.get(contractID);\r\n\t\t\t\tif (set == null) {\r\n\t\t\t\t\tset = new HashSet<>();\r\n\t\t\t\t\tcontractOwners.put(contractID, set);\r\n\t\t\t\t}\r\n\t\t\t\tEsiOwner owner = owners.get(accountID);\r\n\t\t\t\tif (owner != null) {\r\n\t\t\t\t\tset.add(owner);\r\n\t\t\t\t\tcontracts.put(owner, new HashMap<>());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tString contractsSQL = \"SELECT * FROM \" + CONTRACTS_TABLE;\r\n\t\tMap<Integer, MyContract> contractIDs = new HashMap<>();\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(contractsSQL);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tRawContract rawContract = RawContract.create();\r\n\t\t\t\tint acceptorID = getInt(rs, \"acceptorid\");\r\n\t\t\t\tint assigneeID = getInt(rs, \"assigneeid\");\r\n\t\t\t\tString availabilityString = getStringOptional(rs, \"availabilitystring\");\r\n\t\t\t\tString availabilityEnum = getStringOptional(rs, \"availability\");\r\n\t\t\t\tDouble buyout = getDoubleOptional(rs, \"buyout\");\r\n\t\t\t\tDouble collateral = getDoubleOptional(rs, \"collateral\");\r\n\t\t\t\tint contractID = getInt(rs, \"contractid\");\r\n\t\t\t\tDate dateAccepted = getDateOptional(rs, \"dateaccepted\");\r\n\t\t\t\tDate dateCompleted = getDateOptional(rs, \"datecompleted\");\r\n\t\t\t\tDate dateExpired = getDate(rs, \"dateexpired\");\r\n\t\t\t\tDate dateIssued = getDate(rs, \"dateissued\");\r\n\t\t\t\tLong endLocationID = getLongOptional(rs, \"endstationid\");\r\n\t\t\t\tint issuerCorporationID = getInt(rs, \"issuercorpid\");\r\n\t\t\t\tint issuerID = getInt(rs, \"issuerid\");\r\n\t\t\t\tInteger daysToComplete = getIntOptional(rs, \"numdays\");\r\n\t\t\t\tDouble price = getDoubleOptional(rs, \"price\");\r\n\t\t\t\tDouble reward = getDoubleOptional(rs, \"reward\");\r\n\t\t\t\tLong startLocationID = getLongOptional(rs, \"startstationid\");\r\n\t\t\t\tString statusString = getStringOptional(rs, \"statusstring\");\r\n\t\t\t\tString statusEnum = getStringOptional(rs, \"status\");\r\n\t\t\t\tString title = getStringOptional(rs, \"title\");\r\n\t\t\t\tString typeString = getStringOptional(rs, \"typestring\");\r\n\t\t\t\tString typeEnum = getStringOptional(rs, \"type\");\r\n\t\t\t\tDouble volume = getDoubleOptional(rs, \"volume\");\r\n\t\t\t\tboolean forCorporation = getBoolean(rs, \"forcorp\");\r\n\t\t\t\tboolean esi = getBooleanNotNull(rs, \"esi\", true);\r\n\t\t\t\trawContract.setAcceptorID(acceptorID);\r\n\t\t\t\trawContract.setAssigneeID(assigneeID);\r\n\t\t\t\trawContract.setAvailability(RawConverter.toContractAvailability(availabilityEnum, availabilityString));\r\n\t\t\t\trawContract.setAvailabilityString(availabilityString);\r\n\t\t\t\trawContract.setBuyout(buyout);\r\n\t\t\t\trawContract.setCollateral(collateral);\r\n\t\t\t\trawContract.setContractID(contractID);\r\n\t\t\t\trawContract.setDateAccepted(dateAccepted);\r\n\t\t\t\trawContract.setDateCompleted(dateCompleted);\r\n\t\t\t\trawContract.setDateExpired(dateExpired);\r\n\t\t\t\trawContract.setDateIssued(dateIssued);\r\n\t\t\t\trawContract.setDaysToComplete(daysToComplete);\r\n\t\t\t\trawContract.setEndLocationID(endLocationID);\r\n\t\t\t\trawContract.setForCorporation(forCorporation);\r\n\t\t\t\trawContract.setIssuerCorporationID(issuerCorporationID);\r\n\t\t\t\trawContract.setIssuerID(issuerID);\r\n\t\t\t\trawContract.setPrice(price);\r\n\t\t\t\trawContract.setReward(reward);\r\n\t\t\t\trawContract.setStartLocationID(startLocationID);\r\n\t\t\t\trawContract.setStatus(RawConverter.toContractStatus(statusEnum, statusString));\r\n\t\t\t\trawContract.setStatusString(statusString);\r\n\t\t\t\trawContract.setTitle(title);\r\n\t\t\t\trawContract.setTypeString(typeString);\r\n\t\t\t\trawContract.setType(RawConverter.toContractType(typeEnum, typeString));\r\n\t\t\t\trawContract.setVolume(volume);\r\n\r\n\t\t\t\tMyContract contract = DataConverter.toMyContract(rawContract);\r\n\t\t\t\tcontract.setESI(esi);\r\n\r\n\t\t\t\tcontractIDs.put(contractID, contract);\r\n\r\n\t\t\t\tSet<EsiOwner> set = contractOwners.get(contractID);\r\n\t\t\t\tif (set != null) {\r\n\t\t\t\t\tfor (EsiOwner esiOwner : set) {\r\n\t\t\t\t\t\tMap<MyContract, List<MyContractItem>> map = contracts.get(esiOwner);\r\n\t\t\t\t\t\tmap.put(contract, new ArrayList<>());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tString contractItemsSQL = \"SELECT * FROM \" + CONTRACT_ITEMS_TABLE;\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(contractItemsSQL);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tRawContractItem contractItem = RawContractItem.create();\r\n\t\t\t\tint contractID = getInt(rs, \"contractid\");\r\n\t\t\t\tboolean included = getBoolean(rs, \"included\");\r\n\t\t\t\tint quantity = getInt(rs, \"quantity\");\r\n\t\t\t\tlong recordID = getLong(rs, \"recordid\");\r\n\t\t\t\tboolean singleton = getBoolean(rs, \"singleton\");\r\n\t\t\t\tint typeID = getInt(rs, \"typeid\");\r\n\t\t\t\tInteger rawQuantity = getIntOptional(rs, \"rawquantity\");\r\n\t\t\t\tLong itemID = getLongOptional(rs, \"itemid\");\r\n\t\t\t\tInteger runs = getIntOptional(rs, \"runs\");\r\n\t\t\t\tInteger materialEfficiency = getIntOptional(rs, \"me\");\r\n\t\t\t\tInteger timeEfficiency = getIntOptional(rs, \"te\");\r\n\t\t\t\tcontractItem.setIncluded(included);\r\n\t\t\t\tcontractItem.setQuantity(quantity);\r\n\t\t\t\tcontractItem.setRecordID(recordID);\r\n\t\t\t\tcontractItem.setSingleton(singleton);\r\n\t\t\t\tcontractItem.setTypeID(typeID);\r\n\t\t\t\tcontractItem.setRawQuantity(rawQuantity);\r\n\t\t\t\tcontractItem.setItemID(itemID);\r\n\t\t\t\tcontractItem.setLicensedRuns(runs);\r\n\t\t\t\tcontractItem.setME(materialEfficiency);\r\n\t\t\t\tcontractItem.setTE(timeEfficiency);\r\n\t\t\t\tMyContract contract = contractIDs.get(contractID);\r\n\t\t\t\tif (contract == null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tSet<EsiOwner> set = contractOwners.get(contractID);\r\n\t\t\t\tif (set != null) {\r\n\t\t\t\t\tfor (EsiOwner esiOwner : set) {\r\n\t\t\t\t\t\tMap<MyContract, List<MyContractItem>> map = contracts.get(esiOwner);\r\n\t\t\t\t\t\tList<MyContractItem> contractItems = map.get(contract);\r\n\t\t\t\t\t\tif (contractItems == null) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcontractItems.add(DataConverter.toMyContractItem(contractItem, contract));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (Map.Entry<EsiOwner, Map<MyContract, List<MyContractItem>>> entry : contracts.entrySet()) {\r\n\t\t\tEsiOwner owner = entry.getKey();\r\n\t\t\towner.setContracts(entry.getValue());\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean isEmpty(Connection connection) throws SQLException {\r\n\t\treturn !tableExist(connection, CONTRACTS_OWNERS_TABLE, CONTRACTS_TABLE, CONTRACT_ITEMS_TABLE);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void create(Connection connection) throws SQLException {\r\n\t\tif (!tableExist(connection, CONTRACTS_OWNERS_TABLE)) {\r\n\t\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + CONTRACTS_OWNERS_TABLE + \" (\"\r\n\t\t\t\t\t+ \"\taccountid TEXT,\\n\"\r\n\t\t\t\t\t+ \"\tcontractid INTEGER,\"\r\n\t\t\t\t\t+ \"\tUNIQUE(accountid, contractid)\\n\"\r\n\t\t\t\t\t+ \");\";\r\n\t\t\ttry (Statement statement = connection.createStatement()) {\r\n\t\t\t\tstatement.execute(sql);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!tableExist(connection, CONTRACTS_TABLE)) {\r\n\t\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + CONTRACTS_TABLE + \" (\"\r\n\t\t\t\t\t+ \"\tacceptorid INTEGER,\"\r\n\t\t\t\t\t+ \"\tassigneeid INTEGER,\"\r\n\t\t\t\t\t+ \"\tavailability TEXT,\"\r\n\t\t\t\t\t+ \"\tavailabilitystring TEXT,\"\r\n\t\t\t\t\t+ \"\tbuyout REAL,\"\r\n\t\t\t\t\t+ \"\tcollateral REAL,\"\r\n\t\t\t\t\t+ \"\tcontractid INTEGER,\"\r\n\t\t\t\t\t+ \"\tdateaccepted INTEGER,\"\r\n\t\t\t\t\t+ \"\tdatecompleted INTEGER,\"\r\n\t\t\t\t\t+ \"\tdateexpired INTEGER,\"\r\n\t\t\t\t\t+ \"\tdateissued INTEGER,\"\r\n\t\t\t\t\t+ \"\tendstationid INTEGER,\"\r\n\t\t\t\t\t+ \"\tissuercorpid INTEGER,\"\r\n\t\t\t\t\t+ \"\tissuerid INTEGER,\"\r\n\t\t\t\t\t+ \"\tnumdays INTEGER,\"\r\n\t\t\t\t\t+ \"\tprice REAL,\"\r\n\t\t\t\t\t+ \"\treward REAL,\"\r\n\t\t\t\t\t+ \"\tstartstationid INTEGER,\"\r\n\t\t\t\t\t+ \"\tstatus TEXT,\"\r\n\t\t\t\t\t+ \"\tstatusstring TEXT,\"\r\n\t\t\t\t\t+ \"\ttitle TEXT,\"\r\n\t\t\t\t\t+ \"\ttypestring TEXT,\"\r\n\t\t\t\t\t+ \"\ttype TEXT,\"\r\n\t\t\t\t\t+ \"\tvolume REAL,\"\r\n\t\t\t\t\t+ \"\tforcorp NUMERIC,\"\r\n\t\t\t\t\t+ \"\tesi NUMERIC,\"\r\n\t\t\t\t\t+ \"\tUNIQUE(contractid)\\n\"\r\n\t\t\t\t\t+ \");\";\r\n\t\t\ttry (Statement statement = connection.createStatement()) {\r\n\t\t\t\tstatement.execute(sql);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!tableExist(connection, CONTRACT_ITEMS_TABLE)) {\r\n\t\t\tString sql = \"CREATE TABLE IF NOT EXISTS  \" + CONTRACT_ITEMS_TABLE + \" (\"\r\n\t\t\t\t\t+ \"\tcontractid INTEGER,\"\r\n\t\t\t\t\t+ \"\tincluded NUMERIC,\"\r\n\t\t\t\t\t+ \"\tquantity INTEGER,\"\r\n\t\t\t\t\t+ \"\trecordid INTEGER,\"\r\n\t\t\t\t\t+ \"\tsingleton NUMERIC,\"\r\n\t\t\t\t\t+ \"\ttypeid INTEGER,\"\r\n\t\t\t\t\t+ \"\trawquantity INTEGER,\"\r\n\t\t\t\t\t+ \"\titemid INTEGER,\"\r\n\t\t\t\t\t+ \"\truns INTEGER,\"\r\n\t\t\t\t\t+ \"\tme INTEGER,\"\r\n\t\t\t\t\t+ \"\tte INTEGER,\"\r\n\t\t\t\t\t+ \"\tUNIQUE(recordid)\\n\"\r\n\t\t\t\t\t+ \");\";\r\n\t\t\ttry (Statement statement = connection.createStatement()) {\r\n\t\t\t\tstatement.execute(sql);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/profile/ProfileDatabase.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.profile;\r\n\r\nimport java.io.File;\r\nimport java.io.FileInputStream;\r\nimport java.io.FileOutputStream;\r\nimport java.io.IOException;\r\nimport java.io.InputStream;\r\nimport java.sql.Connection;\r\nimport java.sql.DriverManager;\r\nimport java.sql.SQLException;\r\nimport java.util.ArrayList;\r\nimport java.util.Arrays;\r\nimport java.util.Collection;\r\nimport java.util.Collections;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.concurrent.BlockingQueue;\r\nimport java.util.concurrent.LinkedBlockingQueue;\r\nimport java.util.zip.ZipEntry;\r\nimport java.util.zip.ZipOutputStream;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.profile.Profile;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class ProfileDatabase {\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(ProfileDatabase.class);\r\n\r\n\tprivate static final BlockingQueue<Update> UPDATES = new LinkedBlockingQueue<>();\r\n\r\n\tpublic static enum Table {\r\n\t\tOWNERS(new ProfileOwners()),\r\n\t\tASSETS(new ProfileAssets()),\r\n\t\tCLONES(new ProfileClones()),\r\n\t\tCONTRACTS(new ProfileContracts()),\r\n\t\tACTIVE_SHIP(new ProfileActiveShip()),\r\n\t\tACCOUNT_BALANCES(new ProfileAccountBalances()),\r\n\t\tMARKET_ORDERS(new ProfileMarketOrders()),\r\n\t\tJOURNALS(new ProfileJournals()),\r\n\t\tTRANSACTIONS(new ProfileTransactions()),\r\n\t\tINDUSTRY_JOBS(new ProfileIndustryJobs()),\r\n\t\tBLUEPRINTS(new ProfileBlueprints()),\r\n\t\tASSET_DIVISIONS(new ProfileAssetDivisions()),\r\n\t\tWALLET_DIVISIONS(new ProfileWalletDivisions()),\r\n\t\tSKILLS(new ProfileSkills()),\r\n\t\tLOYALTY_POINTS(new ProfileLoyaltyPoints()),\r\n\t\tNPC_STANDING(new ProfileNpcStanding()),\r\n\t\tMINING(new ProfileMining())\r\n\t\t;\r\n\r\n\t\tprivate final ProfileTable profileTable;\r\n\r\n\t\tprivate Table(ProfileTable databaseTable) {\r\n\t\t\tthis.profileTable = databaseTable;\r\n\t\t}\r\n\r\n\t\tpublic void insert(Connection connection, List<EsiOwner> esiOwners, boolean full) throws SQLException {\r\n\t\t\tif (esiOwners == null) {\r\n\t\t\t\tesiOwners = new ArrayList<>(); //Ensure never null\r\n\t\t\t}\r\n\t\t\tif (!full && profileTable.isUpdated()) {\r\n\t\t\t\treturn; //Ignore updated\r\n\t\t\t}\r\n\t\t\tprofileTable.insert(connection, esiOwners);\r\n\t\t}\r\n\r\n\t\tpublic void select(Connection connection, List<EsiOwner> esiOwners) throws SQLException {\r\n\t\t\tMap<String, EsiOwner> owners = new HashMap<>();\r\n\t\t\tfor (EsiOwner esiOwner : esiOwners) {\r\n\t\t\t\towners.put(esiOwner.getAccountID(), esiOwner);\r\n\t\t\t}\r\n\t\t\tprofileTable.select(connection, esiOwners, owners);\r\n\t\t}\r\n\r\n\t\tpublic void create(Connection connection) throws SQLException {\r\n\t\t\tprofileTable.create(connection);\r\n\t\t}\r\n\r\n\t\tpublic void updateTable(Connection connection) throws SQLException {\r\n\t\t\tprofileTable.updateTable(connection);\r\n\t\t}\r\n\r\n\t\tpublic boolean isEmpty(Connection connection) throws SQLException {\r\n\t\t\treturn profileTable.isEmpty(connection);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static Connection updateConnection = null;\r\n\tprivate static String updateConnectionUrl = null;\r\n\tprivate static Updater updater = null;\r\n\r\n\tpublic static synchronized void setUpdateConnectionUrl(Profile profile) {\r\n\t\tif (updater == null) {\r\n\t\t\tupdater = new Updater();\r\n\t\t\tupdater.start();\r\n\t\t}\r\n\t\tif (profile == null) {\r\n\t\t\tupdateConnectionUrl = null;\r\n\t\t} else {\r\n\t\t\tupdateConnectionUrl = getConnectionUrl(profile.getSQLiteFilename());\r\n\t\t}\r\n\t\tcloseUpdateConnection();\r\n\t}\r\n\r\n\tprivate static synchronized Connection getUpdateConnection() throws SQLException {\r\n\t\tif (updateConnectionUrl == null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tif (updateConnection == null) {\r\n\t\t\tupdateConnection = DriverManager.getConnection(updateConnectionUrl);\r\n\t\t\tupdateConnection.setAutoCommit(false);\r\n\t\t}\r\n\t\treturn updateConnection;\r\n\t}\r\n\r\n\tprivate static synchronized void closeUpdateConnection() {\r\n\t\tif (updateConnection != null) {\r\n\t\t\ttry {\r\n\t\t\t\tupdateConnection.setAutoCommit(true);\r\n\t\t\t\tupdateConnection.close();\r\n\t\t\t} catch (SQLException ex) {\r\n\t\t\t\tlogError(ex);\r\n\t\t\t}\r\n\t\t\tupdateConnection = null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static String getConnectionUrl(String filename) {\r\n\t\treturn \"jdbc:sqlite:\" + filename;\r\n\t}\r\n\r\n\tpublic static boolean load(Profile profile) {\r\n\t\tbackup(profile);\r\n\t\tString connectionUrl = getConnectionUrl(profile.getSQLiteFilename());\r\n\t\ttry (Connection connection = DriverManager.getConnection(connectionUrl)) {\r\n\t\t\tint loaded = 0;\r\n\t\t\tfor (Table table : Table.values()) {\r\n\t\t\t\tif (!table.isEmpty(connection)) {\r\n\t\t\t\t\ttable.updateTable(connection);\r\n\t\t\t\t\ttable.select(connection, profile.getEsiOwners());\r\n\t\t\t\t\tloaded++;\r\n\t\t\t\t} else if (table == Table.OWNERS) {\r\n\t\t\t\t\treturn false; //Fatal error\r\n\t\t\t\t} else if (table == Table.CLONES || table == Table.LOYALTY_POINTS || table == Table.NPC_STANDING) {\r\n\t\t\t\t\tloaded++; //No problem (new talbes)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (loaded == Table.values().length) {\r\n\t\t\t\treturn true;\r\n\t\t\t} else {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t} catch (SQLException ex) {\r\n\t\t\tlogError(ex);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void update(ProfileConnection profileConnection) {\r\n\t\tUPDATES.add(new Update(profileConnection));\r\n\t\tsynchronized (UPDATES) {\r\n\t\t\tUPDATES.notifyAll();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static void waitForUpdates() {\r\n\t\twhile (!UPDATES.isEmpty()) {\r\n\t\t\tsynchronized (UPDATES) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tUPDATES.wait();\r\n\t\t\t\t} catch (InterruptedException ex) {\r\n\t\t\t\t\t//No problem...\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tcloseUpdateConnection();\r\n\t}\r\n\r\n\tpublic static boolean save(Profile profile) {\r\n\t\treturn save(profile, Table.values());\r\n\t}\r\n\r\n\tpublic static boolean save(Profile profile, Table table) {\r\n\t\treturn save(profile, Collections.singleton(table));\r\n\t}\r\n\r\n\tprivate static boolean save(Profile profile, Table[] tables) {\r\n\t\treturn save(profile, Arrays.asList(tables));\r\n\t}\r\n\r\n\tprivate static boolean save(Profile profile, Collection<Table> tables) {\r\n\t\tString connectionUrl = getConnectionUrl(profile.getSQLiteFilename());\r\n\t\twaitForUpdates();\r\n\t\ttry (Connection connection = DriverManager.getConnection(connectionUrl);) {\r\n\t\t\ttry {\r\n\t\t\t\tconnection.setAutoCommit(false);\r\n\t\t\t\tfor (Table profileTable : tables) {\r\n\t\t\t\t\tboolean full = profileTable.isEmpty(connection);\r\n\t\t\t\t\tprofileTable.create(connection);\r\n\t\t\t\t\tprofileTable.updateTable(connection);\r\n\t\t\t\t\tprofileTable.insert(connection, profile.getEsiOwners(), full);\r\n\t\t\t\t}\r\n\t\t\t\tconnection.commit();\r\n\t\t\t\tconnection.setAutoCommit(true);\r\n\t\t\t} catch (SQLException ex) {\r\n\t\t\t\tconnection.rollback();\r\n\t\t\t\tthrow ex;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t} catch (SQLException ex) {\r\n\t\t\tlogError(ex);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static void backup(final Profile profile) {\r\n\t\tbackup(profile.getSQLiteFilename(), profile.getBackupSQLiteFilename());\r\n\t}\r\n\r\n\tprivate static void backup(final String source, String backup) {\r\n\t\tFile backupFile = new File(backup);\r\n\t\tFile sourceFile = new File(source);\r\n\t\tif (sourceFile.exists() && !backupFile.exists()) {\r\n\t\t\ttry (ZipOutputStream out = new ZipOutputStream(new FileOutputStream(backupFile));\r\n\t\t\t\t\tInputStream in = new FileInputStream(sourceFile)) {\r\n\t\t\t\tZipEntry e = new ZipEntry(sourceFile.getName());\r\n\t\t\t\tout.putNextEntry(e);\r\n\t\t\t\tbyte[] buffer = new byte[8192];\r\n\t\t\t\tint len;\r\n\t\t\t\twhile ((len = in.read(buffer)) != -1) {\r\n\t\t\t\t\tout.write(buffer, 0, len);\r\n\t\t\t\t}\r\n\t\t\t\tout.closeEntry();\r\n\t\t\t\tLOG.info(\"Backup Created: \" + backupFile.getName());\r\n\t\t\t} catch (IOException ex) {\r\n\t\t\t\tLOG.error(\"Failed to create backup for new program version\", ex);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class Update {\r\n\r\n\t\tprivate final ProfileConnection profileConnection;\r\n\r\n\t\tpublic Update(ProfileConnection profileConnection) {\r\n\t\t\tthis.profileConnection = profileConnection;\r\n\t\t}\r\n\r\n\t\tpublic void doUpdate() throws SQLException {\r\n\t\t\tConnection connection = getUpdateConnection();\r\n\t\t\tif (connection == null) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\ttry {\r\n\t\t\t\tprofileConnection.update(connection);\r\n\t\t\t\t//Only commit once, when everything is done - so we can rollback on any errors \r\n\t\t\t\tconnection.commit();\r\n\t\t\t} catch (SQLException ex) {\r\n\t\t\t\tconnection.rollback();\r\n\t\t\t\tlogError(ex);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class Updater extends Thread {\r\n\r\n\t\t@Override\r\n\t\tpublic void run() {\r\n\t\t\twhile (true) {\r\n\t\t\t\t//Get update (null if queue is empty)\r\n\t\t\t\tUpdate update = UPDATES.peek();\r\n\t\t\t\tif (update != null) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tupdate.doUpdate();\r\n\t\t\t\t\t} catch (SQLException ex) {\r\n\t\t\t\t\t\tlogError(ex);\r\n\t\t\t\t\t} finally {\r\n\t\t\t\t\t\tUPDATES.poll(); //Remove update (completed)\r\n\t\t\t\t\t\tsynchronized (UPDATES) {\r\n\t\t\t\t\t\t\tUPDATES.notifyAll();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t//Wait for new updates\r\n\t\t\t\twhile (UPDATES.isEmpty()) {\r\n\t\t\t\t\tsynchronized (UPDATES) {\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tUPDATES.wait();\r\n\t\t\t\t\t\t} catch (InterruptedException ex) {\r\n\t\t\t\t\t\t\t//No problem\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tprivate static void logError(Exception ex) {\r\n\t\tLOG.error(ex.getMessage(), ex);\r\n\t\tthrow new RuntimeException(ex);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/profile/ProfileIndustryJobs.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.profile;\r\n\r\nimport java.sql.Connection;\r\nimport java.sql.PreparedStatement;\r\nimport java.sql.ResultSet;\r\nimport java.sql.SQLException;\r\nimport java.sql.Statement;\r\nimport java.util.Collection;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawIndustryJob;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.io.shared.DataConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\r\n\r\n\r\npublic class ProfileIndustryJobs extends ProfileTable {\r\n\r\n\tprivate static final String INDUSTRY_JOBS_TABLE = \"industryjobs\";\r\n\r\n\t@Override\r\n\tprotected boolean isUpdated() {\r\n\t\treturn Settings.get().isIndustryJobsHistory();\r\n\t}\r\n\r\n\tprivate static void set(PreparedStatement statement, MyIndustryJob industryJob, String accountID) throws SQLException {\r\n\t\tint index = 0;\r\n\t\tsetAttribute(statement, ++index, accountID);\r\n\t\tsetAttribute(statement, ++index, industryJob.getJobID());\r\n\t\tsetAttribute(statement, ++index, industryJob.getInstallerID());\r\n\t\tsetAttribute(statement, ++index, industryJob.getFacilityID());\r\n\t\tsetAttribute(statement, ++index, industryJob.getStationID());\r\n\t\tsetAttribute(statement, ++index, industryJob.getActivityID());\r\n\t\tsetAttribute(statement, ++index, industryJob.getBlueprintID());\r\n\t\tsetAttribute(statement, ++index, industryJob.getBlueprintTypeID());\r\n\t\tsetAttribute(statement, ++index, industryJob.getBlueprintLocationID());\r\n\t\tsetAttribute(statement, ++index, industryJob.getOutputLocationID());\r\n\t\tsetAttribute(statement, ++index, industryJob.getRuns());\r\n\t\tsetAttributeOptional(statement, ++index, industryJob.getCost());\r\n\t\tsetAttributeOptional(statement, ++index, industryJob.getLicensedRuns());\r\n\t\tsetAttributeOptional(statement, ++index, industryJob.getProbability());\r\n\t\tsetAttributeOptional(statement, ++index, industryJob.getProductTypeID());\r\n\t\tsetAttributeOptional(statement, ++index, industryJob.getStatus());\r\n\t\tsetAttributeOptional(statement, ++index, industryJob.getStatusString());\r\n\t\tsetAttribute(statement, ++index, industryJob.getDuration());\r\n\t\tsetAttribute(statement, ++index, industryJob.getStartDate());\r\n\t\tsetAttribute(statement, ++index, industryJob.getEndDate());\r\n\t\tsetAttributeOptional(statement, ++index, industryJob.getPauseDate());\r\n\t\tsetAttributeOptional(statement, ++index, industryJob.getCompletedDate());\r\n\t\tsetAttributeOptional(statement, ++index, industryJob.getCompletedCharacterID());\r\n\t\tsetAttributeOptional(statement, ++index, industryJob.getSuccessfulRuns());\r\n\t\tsetAttribute(statement, ++index, industryJob.isESI());\r\n\t}\r\n\r\n\t/**\r\n\t * Industry jobs are mutable (REPLACE)\r\n\t * @param connection\r\n\t * @param accountID\r\n\t * @param industryJobs \r\n\t * @throws java.sql.SQLException \r\n\t */\r\n\tpublic static void updateIndustryJobs(Connection connection, String accountID, Collection<MyIndustryJob> industryJobs) throws SQLException {\r\n\t\t//Tables exist\r\n\t\tif (!tableExist(connection, INDUSTRY_JOBS_TABLE)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//Insert data\r\n\t\tString sql = \"INSERT OR REPLACE INTO \" + INDUSTRY_JOBS_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\tjobid,\"\r\n\t\t\t\t+ \"\tinstallerid,\"\r\n\t\t\t\t+ \"\tfacilityid,\"\r\n\t\t\t\t+ \"\tstationid,\"\r\n\t\t\t\t+ \"\tactivityid,\"\r\n\t\t\t\t+ \"\tblueprintid,\"\r\n\t\t\t\t+ \"\tblueprinttypeid,\"\r\n\t\t\t\t+ \"\tblueprintlocationid,\"\r\n\t\t\t\t+ \"\toutputlocationid,\"\r\n\t\t\t\t+ \"\truns,\"\r\n\t\t\t\t+ \"\tcost,\"\r\n\t\t\t\t+ \"\tlicensedruns,\"\r\n\t\t\t\t+ \"\tprobability,\"\r\n\t\t\t\t+ \"\tproducttypeid,\"\r\n\t\t\t\t+ \"\tstatusenum,\"\r\n\t\t\t\t+ \"\tstatusstring,\"\r\n\t\t\t\t+ \"\ttimeinseconds,\"\r\n\t\t\t\t+ \"\tstartdate,\"\r\n\t\t\t\t+ \"\tenddate,\"\r\n\t\t\t\t+ \"\tpausedate,\"\r\n\t\t\t\t+ \"\tcompleteddate,\"\r\n\t\t\t\t+ \"\tcompletedcharacterid,\"\r\n\t\t\t\t+ \"\tsuccessfulruns,\"\r\n\t\t\t\t+ \"\tesi)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql)) {\r\n\t\t\tRows rows = new Rows(statement, industryJobs.size());\r\n\t\t\tfor (MyIndustryJob industryJob : industryJobs) {\r\n\t\t\t\tset(statement, industryJob, accountID);\r\n\t\t\t\trows.addRow();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void insert(Connection connection, List<EsiOwner> esiOwners) throws SQLException {\r\n\t\t//Delete all data\r\n\t\ttableDelete(connection, INDUSTRY_JOBS_TABLE);\r\n\r\n\t\t//Insert data\r\n\t\tString sql = \"INSERT INTO \" + INDUSTRY_JOBS_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\tjobid,\"\r\n\t\t\t\t+ \"\tinstallerid,\"\r\n\t\t\t\t+ \"\tfacilityid,\"\r\n\t\t\t\t+ \"\tstationid,\"\r\n\t\t\t\t+ \"\tactivityid,\"\r\n\t\t\t\t+ \"\tblueprintid,\"\r\n\t\t\t\t+ \"\tblueprinttypeid,\"\r\n\t\t\t\t+ \"\tblueprintlocationid,\"\r\n\t\t\t\t+ \"\toutputlocationid,\"\r\n\t\t\t\t+ \"\truns,\"\r\n\t\t\t\t+ \"\tcost,\"\r\n\t\t\t\t+ \"\tlicensedruns,\"\r\n\t\t\t\t+ \"\tprobability,\"\r\n\t\t\t\t+ \"\tproducttypeid,\"\r\n\t\t\t\t+ \"\tstatusenum,\"\r\n\t\t\t\t+ \"\tstatusstring,\"\r\n\t\t\t\t+ \"\ttimeinseconds,\"\r\n\t\t\t\t+ \"\tstartdate,\"\r\n\t\t\t\t+ \"\tenddate,\"\r\n\t\t\t\t+ \"\tpausedate,\"\r\n\t\t\t\t+ \"\tcompleteddate,\"\r\n\t\t\t\t+ \"\tcompletedcharacterid,\"\r\n\t\t\t\t+ \"\tsuccessfulruns,\"\r\n\t\t\t\t+ \"\tesi)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql)) {\r\n\t\t\tRows rows = new Rows(statement, esiOwners, new RowSize<EsiOwner>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize(EsiOwner owner) {\r\n\t\t\t\t\treturn owner.getIndustryJobs().size();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfor (EsiOwner owner : esiOwners) {\r\n\t\t\t\tfor (MyIndustryJob industryJob : owner.getIndustryJobs()) {\r\n\t\t\t\t\tset(statement, industryJob, owner.getAccountID());\r\n\t\t\t\t\trows.addRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void select(Connection connection, List<EsiOwner> esiOwners, Map<String, EsiOwner> owners) throws SQLException {\r\n\t\tMap<EsiOwner, Set<MyIndustryJob>> industryJobs = new HashMap<>();\r\n\t\tString sql = \"SELECT * FROM \" + INDUSTRY_JOBS_TABLE;\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tString accountID = getString(rs, \"accountid\");\r\n\t\t\t\tRawIndustryJob rawIndustryJob = RawIndustryJob.create();\r\n\t\t\t\tint jobID = getInt(rs, \"jobid\");\r\n\t\t\t\tint installerID = getInt(rs, \"installerid\");\r\n\t\t\t\tlong facilityID = getLong(rs, \"facilityid\");\r\n\t\t\t\tlong stationID = getLong(rs, \"stationid\");\r\n\t\t\t\tint activityID = getInt(rs, \"activityid\");\r\n\t\t\t\tlong blueprintID = getLong(rs, \"blueprintid\");\r\n\t\t\t\tint blueprintTypeID = getInt(rs, \"blueprinttypeid\");\r\n\t\t\t\tlong blueprintLocationID = getLong(rs, \"blueprintlocationid\");\r\n\t\t\t\tlong outputLocationID = getLong(rs, \"outputlocationid\");\r\n\t\t\t\tint runs = getInt(rs, \"runs\");\r\n\t\t\t\tDouble cost = getDoubleOptional(rs, \"cost\");\r\n\t\t\t\tInteger licensedRuns = getIntOptional(rs, \"licensedruns\");\r\n\t\t\t\tFloat probability = getFloatOptional(rs, \"probability\");\r\n\t\t\t\tInteger productTypeID = getIntOptional(rs, \"producttypeid\");\r\n\t\t\t\t//Integer statusInt = getIntOptional(rs, \"status\");\r\n\t\t\t\tString statusEnum = getStringOptional(rs, \"statusenum\");\r\n\t\t\t\tString statusString = getStringOptional(rs, \"statusstring\");\r\n\t\t\t\tint duration = getInt(rs, \"timeinseconds\");\r\n\t\t\t\tDate startDate = getDate(rs, \"startdate\");\r\n\t\t\t\tDate endDate = getDate(rs, \"enddate\");\r\n\t\t\t\tDate pauseDate = getDateOptional(rs, \"pausedate\");\r\n\t\t\t\tDate completedDate = getDateOptional(rs, \"completeddate\");\r\n\t\t\t\tInteger completedCharacterID = getIntOptional(rs, \"completedcharacterid\");\r\n\t\t\t\tInteger successfulRuns = getIntOptional(rs, \"successfulruns\");\r\n\t\t\t\tboolean esi = getBooleanNotNull(rs, \"esi\", true);\r\n\r\n\t\t\t\trawIndustryJob.setActivityID(activityID);\r\n\t\t\t\trawIndustryJob.setBlueprintID(blueprintID);\r\n\t\t\t\trawIndustryJob.setBlueprintLocationID(blueprintLocationID);\r\n\t\t\t\trawIndustryJob.setBlueprintTypeID(blueprintTypeID);\r\n\t\t\t\trawIndustryJob.setCompletedCharacterID(completedCharacterID);\r\n\t\t\t\trawIndustryJob.setCompletedDate(completedDate);\r\n\t\t\t\trawIndustryJob.setCost(cost);\r\n\t\t\t\trawIndustryJob.setDuration(duration);\r\n\t\t\t\trawIndustryJob.setEndDate(endDate);\r\n\t\t\t\trawIndustryJob.setFacilityID(facilityID);\r\n\t\t\t\trawIndustryJob.setInstallerID(installerID);\r\n\t\t\t\trawIndustryJob.setJobID(jobID);\r\n\t\t\t\trawIndustryJob.setLicensedRuns(licensedRuns);\r\n\t\t\t\trawIndustryJob.setOutputLocationID(outputLocationID);\r\n\t\t\t\trawIndustryJob.setPauseDate(pauseDate);\r\n\t\t\t\trawIndustryJob.setProbability(probability);\r\n\t\t\t\trawIndustryJob.setProductTypeID(productTypeID);\r\n\t\t\t\trawIndustryJob.setRuns(runs);\r\n\t\t\t\trawIndustryJob.setStartDate(startDate);\r\n\t\t\t\trawIndustryJob.setStationID(stationID);\r\n\t\t\t\trawIndustryJob.setStatus(RawConverter.toIndustryJobStatus(null, statusEnum, statusString));\r\n\t\t\t\trawIndustryJob.setStatusString(statusString);\r\n\t\t\t\trawIndustryJob.setSuccessfulRuns(successfulRuns);\r\n\r\n\t\t\t\tEsiOwner owner = owners.get(accountID);\r\n\t\t\t\tif (owner == null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tMyIndustryJob industryJob = DataConverter.toMyIndustryJob(rawIndustryJob, owner);\r\n\t\t\t\tindustryJob.setESI(esi);\r\n\t\t\t\tset(owner, industryJobs, industryJob);\r\n\t\t\t}\r\n\t\t\tfor (Map.Entry<EsiOwner, Set<MyIndustryJob>> entry : industryJobs.entrySet()) {\r\n\t\t\t\tentry.getKey().setIndustryJobs(entry.getValue());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean isEmpty(Connection connection) throws SQLException {\r\n\t\treturn !tableExist(connection, INDUSTRY_JOBS_TABLE);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void create(Connection connection) throws SQLException {\r\n\t\tif (!tableExist(connection, INDUSTRY_JOBS_TABLE)) {\r\n\t\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + INDUSTRY_JOBS_TABLE + \" (\\n\"\r\n\t\t\t\t\t+ \"\taccountid TEXT,\\n\"\r\n\t\t\t\t\t+ \"\tjobid INTEGER,\"\r\n\t\t\t\t\t+ \"\tinstallerid INTEGER,\"\r\n\t\t\t\t\t+ \"\tfacilityid INTEGER,\"\r\n\t\t\t\t\t+ \"\tstationid INTEGER,\"\r\n\t\t\t\t\t+ \"\tactivityid INTEGER,\"\r\n\t\t\t\t\t+ \"\tblueprintid INTEGER,\"\r\n\t\t\t\t\t+ \"\tblueprinttypeid INTEGER,\"\r\n\t\t\t\t\t+ \"\tblueprintlocationid INTEGER,\"\r\n\t\t\t\t\t+ \"\toutputlocationid INTEGER,\"\r\n\t\t\t\t\t+ \"\truns INTEGER,\"\r\n\t\t\t\t\t+ \"\tcost REAL,\"\r\n\t\t\t\t\t+ \"\tlicensedruns INTEGER,\"\r\n\t\t\t\t\t+ \"\tprobability REAL,\"\r\n\t\t\t\t\t+ \"\tproducttypeid INTEGER,\"\r\n\t\t\t\t\t+ \"\tstatusenum TEXT,\"\r\n\t\t\t\t\t+ \"\tstatusstring TEXT,\"\r\n\t\t\t\t\t+ \"\ttimeinseconds INTEGER,\"\r\n\t\t\t\t\t+ \"\tstartdate INTEGER,\"\r\n\t\t\t\t\t+ \"\tenddate INTEGER,\"\r\n\t\t\t\t\t+ \"\tpausedate INTEGER,\"\r\n\t\t\t\t\t+ \"\tcompleteddate INTEGER,\"\r\n\t\t\t\t\t+ \"\tcompletedcharacterid INTEGER,\"\r\n\t\t\t\t\t+ \"\tsuccessfulruns INTEGER,\"\r\n\t\t\t\t\t+ \"\tesi NUMERIC,\"\r\n\t\t\t\t\t+ \"\tUNIQUE(accountid, jobid)\\n\"\r\n\t\t\t\t\t+ \");\";\r\n\t\t\ttry (Statement statement = connection.createStatement()) {\r\n\t\t\t\tstatement.execute(sql);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/profile/ProfileJournals.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.profile;\r\n\r\nimport java.sql.Connection;\r\nimport java.sql.PreparedStatement;\r\nimport java.sql.ResultSet;\r\nimport java.sql.SQLException;\r\nimport java.sql.Statement;\r\nimport java.util.Collection;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyJournal;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournal;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournalRefType;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.io.shared.DataConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\r\n\r\n\r\npublic class ProfileJournals extends ProfileTable {\r\n\r\n\tprivate static final String JOURNALS_TABLE = \"journals\";\r\n\r\n\t@Override\r\n\tprotected boolean isUpdated() {\r\n\t\treturn Settings.get().isJournalHistory();\r\n\t}\r\n\r\n\tprivate static void set(PreparedStatement statement, MyJournal journal, String accountID) throws SQLException {\r\n\t\tint index = 0;\r\n\t\tsetAttributeOptional(statement, ++index, accountID);\r\n\t\tsetAttributeOptional(statement, ++index, journal.getAmount());\r\n\t\tsetAttributeOptional(statement, ++index, journal.getBalance());\r\n\t\tsetAttributeOptional(statement, ++index, journal.getContextID());\r\n\t\tsetAttributeOptional(statement, ++index, journal.getContextType());\r\n\t\tsetAttributeOptional(statement, ++index, journal.getContextTypeString());\r\n\t\tsetAttribute(statement, ++index, journal.getDate());\r\n\t\tsetAttribute(statement, ++index, journal.getDescription());\r\n\t\tsetAttributeOptional(statement, ++index, journal.getFirstPartyID());\r\n\t\tsetAttributeOptional(statement, ++index, journal.getSecondPartyID());\r\n\t\tsetAttributeOptional(statement, ++index, journal.getReason());\r\n\t\tsetAttribute(statement, ++index, journal.getRefID());\r\n\t\tif (journal.getRefType() != null) {\r\n\t\t\tsetAttributeOptional(statement, ++index, journal.getRefType().getID());\r\n\t\t} else {\r\n\t\t\tsetAttributeNull(statement, ++index);\r\n\t\t}\r\n\t\tsetAttribute(statement, ++index, journal.getRefTypeString());\r\n\t\tsetAttributeOptional(statement, ++index, journal.getTaxAmount());\r\n\t\tsetAttributeOptional(statement, ++index, journal.getTaxReceiverID());\r\n\t\t//Extra\r\n\t\tsetAttribute(statement, ++index, journal.getAccountKey());\r\n\t}\r\n\r\n\t/**\r\n\t * Journal entries are immutable (IGNORE)\r\n\t * @param connection\r\n\t * @param accountID\r\n\t * @param journals \r\n\t * @throws java.sql.SQLException \r\n\t */\r\n\tpublic static void  updateJournals(Connection connection, String accountID, Collection<MyJournal> journals) throws SQLException {\r\n\t\t//Tables exist\r\n\t\tif (!tableExist(connection, JOURNALS_TABLE)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//Insert data\r\n\t\tString sql = \"INSERT OR IGNORE INTO \" + JOURNALS_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\tamount,\"\r\n\t\t\t\t+ \"\tbalance,\"\r\n\t\t\t\t+ \"\tcontextid,\"\r\n\t\t\t\t+ \"\tcontexttype,\"\r\n\t\t\t\t+ \"\tcontexttypestring,\"\r\n\t\t\t\t+ \"\tdate,\"\r\n\t\t\t\t+ \"\tdescription,\"\r\n\t\t\t\t+ \"\townerid1,\"\r\n\t\t\t\t+ \"\townerid2,\"\r\n\t\t\t\t+ \"\treason,\"\r\n\t\t\t\t+ \"\trefid,\"\r\n\t\t\t\t+ \"\treftypeid,\"\r\n\t\t\t\t+ \"\treftypestring,\"\r\n\t\t\t\t+ \"\ttaxamount,\"\r\n\t\t\t\t+ \"\ttaxreceiverid,\"\r\n\t\t\t\t+ \"\taccountkey)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql)) {\r\n\t\t\tRows rows = new Rows(statement, journals.size());\r\n\t\t\t\tfor (MyJournal journal : journals) {\r\n\t\t\t\t\tset(statement, journal, accountID);\r\n\t\t\t\t\trows.addRow();\r\n\t\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void insert(Connection connection, List<EsiOwner> esiOwners) throws SQLException {\r\n\t\t//Delete all data\r\n\t\ttableDelete(connection, JOURNALS_TABLE);\r\n\r\n\t\t//Insert data\r\n\t\tString sql = \"INSERT INTO \" + JOURNALS_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\tamount,\"\r\n\t\t\t\t+ \"\tbalance,\"\r\n\t\t\t\t+ \"\tcontextid,\"\r\n\t\t\t\t+ \"\tcontexttype,\"\r\n\t\t\t\t+ \"\tcontexttypestring,\"\r\n\t\t\t\t+ \"\tdate,\"\r\n\t\t\t\t+ \"\tdescription,\"\r\n\t\t\t\t+ \"\townerid1,\"\r\n\t\t\t\t+ \"\townerid2,\"\r\n\t\t\t\t+ \"\treason,\"\r\n\t\t\t\t+ \"\trefid,\"\r\n\t\t\t\t+ \"\treftypeid,\"\r\n\t\t\t\t+ \"\treftypestring,\"\r\n\t\t\t\t+ \"\ttaxamount,\"\r\n\t\t\t\t+ \"\ttaxreceiverid,\"\r\n\t\t\t\t+ \"\taccountkey)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql)) {\r\n\t\t\tRows rows = new Rows(statement, esiOwners, new RowSize<EsiOwner>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize(EsiOwner owner) {\r\n\t\t\t\t\treturn owner.getJournal().size();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfor (EsiOwner owner : esiOwners) {\r\n\t\t\t\tfor (MyJournal journal : owner.getJournal()) {\r\n\t\t\t\t\tset(statement, journal, owner.getAccountID());\r\n\t\t\t\t\trows.addRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void select(Connection connection, List<EsiOwner> esiOwners, Map<String, EsiOwner> owners) throws SQLException {\r\n\t\tMap<EsiOwner, Set<MyJournal>> journals = new HashMap<>();\r\n\t\tString sql = \"SELECT * FROM \" + JOURNALS_TABLE;\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tString accountID = getString(rs, \"accountid\");\r\n\t\t\t\tRawJournal rawJournal = RawJournal.create();\r\n\t\t\t\tDouble amount = getDoubleOptional(rs, \"amount\");\r\n\t\t\t\tDouble balance = getDoubleOptional(rs, \"balance\");\r\n\t\t\t\tLong contextID = getLongOptional(rs, \"contextid\");\r\n\t\t\t\tString contextType = getStringOptional(rs, \"contexttype\");\r\n\t\t\t\tString contextTypeString = getStringOptional(rs, \"contexttypestring\");\r\n\t\t\t\tDate date = getDate(rs, \"date\");\r\n\t\t\t\tString description = getStringNotNull(rs, \"description\", \"\");\r\n\t\t\t\tInteger firstPartyID = getIntOptional(rs, \"ownerid1\");\r\n\t\t\t\tInteger secondPartyID = getIntOptional(rs, \"ownerid2\");\r\n\t\t\t\tString reason = getStringOptional(rs, \"reason\");\r\n\t\t\t\tlong refID = getLong(rs, \"refid\");\r\n\t\t\t\tInteger refTypeEnum = getIntOptional(rs, \"reftypeid\");\r\n\t\t\t\tString refTypeString = getStringOptional(rs, \"reftypestring\");\r\n\t\t\t\tDouble taxAmount = getDoubleOptional(rs, \"taxamount\");\r\n\t\t\t\tInteger taxReceiverID = getIntOptional(rs, \"taxreceiverid\");\r\n\t\t\t\t//Extra\r\n\t\t\t\tint accountKey = getInt(rs, \"accountkey\");\r\n\r\n\t\t\t\trawJournal.setAmount(amount);\r\n\t\t\t\trawJournal.setBalance(balance);\r\n\t\t\t\trawJournal.setDate(date);\r\n\t\t\t\trawJournal.setDescription(description);\r\n\t\t\t\trawJournal.setFirstPartyID(firstPartyID);\r\n\t\t\t\trawJournal.setReason(reason);\r\n\t\t\t\trawJournal.setRefID(refID);\r\n\t\t\t\tRawJournalRefType refType = RawConverter.toJournalRefType(refTypeEnum, refTypeString);\r\n\t\t\t\trawJournal.setRefType(refType);\r\n\t\t\t\trawJournal.setRefTypeString(refTypeString);\r\n\t\t\t\trawJournal.setSecondPartyID(secondPartyID);\r\n\t\t\t\trawJournal.setTax(taxAmount);\r\n\t\t\t\trawJournal.setTaxReceiverID(taxReceiverID);\r\n\t\t\t\trawJournal.setContextID(contextID);\r\n\t\t\t\trawJournal.setContextType(RawConverter.toJournalContextType(contextType, contextTypeString));\r\n\t\t\t\trawJournal.setContextTypeString(contextTypeString);\r\n\t\t\t\trawJournal.setAccountKey(accountKey);\r\n\r\n\r\n\t\t\t\tEsiOwner owner = owners.get(accountID);\r\n\t\t\t\tif (owner == null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tset(owner, journals, DataConverter.toMyJournal(rawJournal, owner));\r\n\t\t\t}\r\n\t\t\tfor (Map.Entry<EsiOwner, Set<MyJournal>> entry : journals.entrySet()) {\r\n\t\t\t\tentry.getKey().setJournal(entry.getValue());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean isEmpty(Connection connection) throws SQLException {\r\n\t\treturn !tableExist(connection, JOURNALS_TABLE);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void create(Connection connection) throws SQLException {\r\n\t\tif (!tableExist(connection, JOURNALS_TABLE)) {\r\n\t\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + JOURNALS_TABLE + \" (\\n\"\r\n\t\t\t\t\t+ \"\taccountid TEXT,\"\r\n\t\t\t\t\t+ \"\tamount REAL,\"\r\n\t\t\t\t\t+ \"\tbalance REAL,\"\r\n\t\t\t\t\t+ \"\tcontextid INTEGER,\"\r\n\t\t\t\t\t+ \"\tcontexttype TEXT,\"\r\n\t\t\t\t\t+ \"\tcontexttypestring TEXT,\"\r\n\t\t\t\t\t+ \"\tdate INTEGER,\"\r\n\t\t\t\t\t+ \"\tdescription TEXT,\"\r\n\t\t\t\t\t+ \"\townerid1 INTEGER,\"\r\n\t\t\t\t\t+ \"\townerid2 INTEGER,\"\r\n\t\t\t\t\t+ \"\treason TEXT,\"\r\n\t\t\t\t\t+ \"\trefid INTEGER,\"\r\n\t\t\t\t\t+ \"\treftypeid INTEGER,\"\r\n\t\t\t\t\t+ \"\treftypestring TEXT,\"\r\n\t\t\t\t\t+ \"\ttaxamount REAL,\"\r\n\t\t\t\t\t+ \"\ttaxreceiverid INTEGER,\"\r\n\t\t\t\t\t+ \"\taccountkey INTEGER,\"\r\n\t\t\t\t\t+ \"\tUNIQUE(accountid, refid, amount)\\n\"\r\n\t\t\t\t\t+ \");\";\r\n\t\t\ttry (Statement statement = connection.createStatement()) {\r\n\t\t\t\tstatement.execute(sql);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/profile/ProfileLoyaltyPoints.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.profile;\r\n\r\nimport java.sql.Connection;\r\nimport java.sql.PreparedStatement;\r\nimport java.sql.ResultSet;\r\nimport java.sql.SQLException;\r\nimport java.sql.Statement;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyLoyaltyPoints;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawLoyaltyPoints;\r\nimport net.nikr.eve.jeveasset.io.shared.DataConverter;\r\n\r\n\r\npublic class ProfileLoyaltyPoints extends ProfileTable {\r\n\r\n\tprivate static final String LOYALTY_POINTS_TABLE = \"loyaltypoints\";\r\n\r\n\t@Override\r\n\tprotected void insert(Connection connection, List<EsiOwner> esiOwners) throws SQLException {\r\n\t\t//Delete all data\r\n\t\ttableDelete(connection, LOYALTY_POINTS_TABLE);\r\n\r\n\t\t//Insert Data\r\n\t\tString sql = \"INSERT INTO \" + LOYALTY_POINTS_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\tcorporationid,\"\r\n\t\t\t\t+ \"\tloyaltypoints)\"\r\n\t\t\t\t+ \" VALUES (?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql)) {\r\n\t\t\tRows rows = new Rows(statement, esiOwners, new RowSize<EsiOwner>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize(EsiOwner esiOwner) {\r\n\t\t\t\t\treturn esiOwner.getLoyaltyPoints().size();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfor (EsiOwner owner : esiOwners) {\r\n\t\t\t\tfor (MyLoyaltyPoints loyaltyPoints : owner.getLoyaltyPoints()) {\r\n\t\t\t\t\tint index = 0;\r\n\t\t\t\t\tsetAttribute(statement, ++index, owner.getAccountID());\r\n\t\t\t\t\tsetAttribute(statement, ++index, loyaltyPoints.getCorporationID());\r\n\t\t\t\t\tsetAttribute(statement, ++index, loyaltyPoints.getLoyaltyPoints());\r\n\t\t\t\t\trows.addRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void select(Connection connection, List<EsiOwner> esiOwners, Map<String, EsiOwner> owners)  throws SQLException {\r\n\t\tif (!tableExist(connection, LOYALTY_POINTS_TABLE)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tMap<EsiOwner, Set<MyLoyaltyPoints>> loyaltyPointses = new HashMap<>();\r\n\t\tString sql = \"SELECT * FROM \" + LOYALTY_POINTS_TABLE;\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tRawLoyaltyPoints rawLoyaltyPoints = RawLoyaltyPoints.create();\r\n\t\t\t\tString accountID = getString(rs, \"accountid\");\r\n\t\t\t\tint corporationID = getInt(rs, \"corporationid\");\r\n\t\t\t\tint loyaltyPoints = getInt(rs, \"loyaltypoints\");\r\n\t\t\t\trawLoyaltyPoints.setCorporationID(corporationID);\r\n\t\t\t\trawLoyaltyPoints.setLoyaltyPoints(loyaltyPoints);\r\n\r\n\t\t\t\tEsiOwner owner = owners.get(accountID);\r\n\t\t\t\tif (owner == null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tset(owner, loyaltyPointses, DataConverter.toMyLoyaltyPoints(rawLoyaltyPoints, owner));\r\n\t\t\t}\r\n\t\t\tfor (Map.Entry<EsiOwner, Set<MyLoyaltyPoints>> entry : loyaltyPointses.entrySet()) {\r\n\t\t\t\tentry.getKey().setLoyaltyPoints(entry.getValue());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean isEmpty(Connection connection) throws SQLException {\r\n\t\treturn !tableExist(connection, LOYALTY_POINTS_TABLE);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void create(Connection connection)  throws SQLException {\r\n\t\tif (!tableExist(connection, LOYALTY_POINTS_TABLE)) {\r\n\t\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + LOYALTY_POINTS_TABLE + \" (\\n\"\r\n\t\t\t\t\t+ \"\taccountid TEXT,\\n\"\r\n\t\t\t\t\t+ \"\tcorporationid INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tloyaltypoints INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tUNIQUE(accountid, corporationid)\\n\"\r\n\t\t\t\t\t+ \");\";\r\n\t\t\ttry (Statement statement = connection.createStatement()) {\r\n\t\t\t\tstatement.execute(sql);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/profile/ProfileMarketOrders.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.profile;\r\n\r\nimport java.sql.Connection;\r\nimport java.sql.PreparedStatement;\r\nimport java.sql.ResultSet;\r\nimport java.sql.SQLException;\r\nimport java.sql.Statement;\r\nimport java.util.Collection;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder.Change;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.io.shared.DataConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\r\n\r\n\r\npublic class ProfileMarketOrders extends ProfileTable {\r\n\r\n\tprivate static final String MARKET_ORDERS_TABLE = \"marketorders\";\r\n\tprivate static final String MARKET_ORDER_CHANGES_TABLE = \"marketorderchanges\";\r\n\r\n\t@Override\r\n\tprotected boolean isUpdated() {\r\n\t\treturn Settings.get().isMarketOrderHistory();\r\n\t}\r\n\r\n\tprivate static void set(PreparedStatement statement, MyMarketOrder marketOrder, RawMarketOrder.Change change) throws SQLException {\r\n\t\tint index = 0;\r\n\t\tsetAttribute(statement, ++index, marketOrder.getOrderID());\r\n\t\tsetAttribute(statement, ++index, change.getDate());\r\n\t\tsetAttributeOptional(statement, ++index, change.getPrice());\r\n\t\tsetAttributeOptional(statement, ++index, change.getVolumeRemaining());\r\n\t}\r\n\r\n\tprivate static void set(PreparedStatement statement, MyMarketOrder marketOrder, String accountID) throws SQLException {\r\n\t\tint index = 0;\r\n\t\tsetAttribute(statement, ++index, accountID);\r\n\t\tsetAttribute(statement, ++index, marketOrder.getOrderID());\r\n\t\tsetAttribute(statement, ++index, marketOrder.getLocationID());\r\n\t\tsetAttribute(statement, ++index, marketOrder.getRegionID());\r\n\t\tsetAttribute(statement, ++index, marketOrder.getVolumeTotal());\r\n\t\tsetAttribute(statement, ++index, marketOrder.getVolumeRemain());\r\n\t\tsetAttribute(statement, ++index, marketOrder.getMinVolume());\r\n\t\tsetAttributeOptional(statement, ++index, marketOrder.getState());\r\n\t\tsetAttributeOptional(statement, ++index, marketOrder.getStateString());\r\n\t\tsetAttribute(statement, ++index, marketOrder.getTypeID());\r\n\t\tsetAttributeOptional(statement, ++index, marketOrder.getRange());\r\n\t\tsetAttributeOptional(statement, ++index, marketOrder.getRangeString());\r\n\t\tsetAttribute(statement, ++index, marketOrder.getWalletDivision());\r\n\t\tsetAttribute(statement, ++index, marketOrder.getDuration());\r\n\t\tsetAttribute(statement, ++index, marketOrder.getEscrow());\r\n\t\tsetAttribute(statement, ++index, marketOrder.getPrice());\r\n\t\tsetAttribute(statement, ++index, RawConverter.fromMarketOrderIsBuyOrder(marketOrder.isBuyOrder()));\r\n\t\tsetAttribute(statement, ++index, marketOrder.getIssued());\r\n\t\tsetAttributeOptional(statement, ++index, marketOrder.getIssuedBy());\r\n\t\tsetAttribute(statement, ++index, marketOrder.isCorp());\r\n\t\tsetAttribute(statement, ++index, marketOrder.isESI());\r\n\t}\r\n\r\n\t/**\r\n\t * Market orders are mutable (REPLACE).Market order changes are immutable (IGNORE)\r\n\t * @param connection\r\n\t * @param accountID\r\n\t * @param marketOrders \r\n\t * @throws java.sql.SQLException \r\n\t */\r\n\tpublic static void updateMarketOrders(Connection connection, String accountID, Collection<MyMarketOrder> marketOrders) throws SQLException {\r\n\t\t//Tables exist\r\n\t\tif (!tableExist(connection, MARKET_ORDERS_TABLE, MARKET_ORDER_CHANGES_TABLE)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//Insert data\r\n\t\tString ordersSQL = \"INSERT OR REPLACE INTO \" + MARKET_ORDERS_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\torderid,\"\r\n\t\t\t\t+ \"\tstationid,\"\r\n\t\t\t\t+ \"\tregionid,\"\r\n\t\t\t\t+ \"\tvolentered,\"\r\n\t\t\t\t+ \"\tvolremaining,\"\r\n\t\t\t\t+ \"\tminvolume,\"\r\n\t\t\t\t+ \"\torderstateenum,\"\r\n\t\t\t\t+ \"\torderstatestring,\"\r\n\t\t\t\t+ \"\ttypeid,\"\r\n\t\t\t\t+ \"\trangeenum,\"\r\n\t\t\t\t+ \"\trangestring,\"\r\n\t\t\t\t+ \"\taccountkey,\"\r\n\t\t\t\t+ \"\tduration,\"\r\n\t\t\t\t+ \"\tescrow,\"\r\n\t\t\t\t+ \"\tprice,\"\r\n\t\t\t\t+ \"\tbid,\"\r\n\t\t\t\t+ \"\tissued,\"\r\n\t\t\t\t+ \"\tissuedby,\"\r\n\t\t\t\t+ \"\tcorp,\"\r\n\t\t\t\t+ \"\tesi)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)\"\r\n\t\t\t\t;\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(ordersSQL)) {\r\n\t\t\tRows rows = new Rows(statement, marketOrders.size());\r\n\t\t\tfor (MyMarketOrder marketOrder : marketOrders) {\r\n\t\t\t\tset(statement, marketOrder, accountID);\r\n\t\t\t\trows.addRow();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tString changesSQL = \"INSERT OR IGNORE INTO \" + MARKET_ORDER_CHANGES_TABLE + \" (\"\r\n\t\t\t\t+ \"\torderid,\"\r\n\t\t\t\t+ \"\tdate,\"\r\n\t\t\t\t+ \"\tprice,\"\r\n\t\t\t\t+ \"\tvolremaining)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(changesSQL)) {\r\n\t\t\tRows rows = new Rows(statement, marketOrders.size());\r\n\t\t\tfor (MyMarketOrder marketOrder : marketOrders) {\r\n\t\t\t\tfor (RawMarketOrder.Change change : marketOrder.getChanges()) {\r\n\t\t\t\t\tset(statement, marketOrder, change);\r\n\t\t\t\t\trows.addRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void insert(Connection connection, List<EsiOwner> esiOwners) throws SQLException {\r\n\t\t//Delete all data\r\n\t\ttableDelete(connection, MARKET_ORDERS_TABLE, MARKET_ORDER_CHANGES_TABLE);\r\n\r\n\t\t//Insert data\r\n\t\tString ordersSQL = \"INSERT INTO \" + MARKET_ORDERS_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\torderid,\"\r\n\t\t\t\t+ \"\tstationid,\"\r\n\t\t\t\t+ \"\tregionid,\"\r\n\t\t\t\t+ \"\tvolentered,\"\r\n\t\t\t\t+ \"\tvolremaining,\"\r\n\t\t\t\t+ \"\tminvolume,\"\r\n\t\t\t\t+ \"\torderstateenum,\"\r\n\t\t\t\t+ \"\torderstatestring,\"\r\n\t\t\t\t+ \"\ttypeid,\"\r\n\t\t\t\t+ \"\trangeenum,\"\r\n\t\t\t\t+ \"\trangestring,\"\r\n\t\t\t\t+ \"\taccountkey,\"\r\n\t\t\t\t+ \"\tduration,\"\r\n\t\t\t\t+ \"\tescrow,\"\r\n\t\t\t\t+ \"\tprice,\"\r\n\t\t\t\t+ \"\tbid,\"\r\n\t\t\t\t+ \"\tissued,\"\r\n\t\t\t\t+ \"\tissuedby,\"\r\n\t\t\t\t+ \"\tcorp,\"\r\n\t\t\t\t+ \"\tesi)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)\"\r\n\t\t\t\t;\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(ordersSQL)) {\r\n\t\t\tRows rows = new Rows(statement, esiOwners, new RowSize<EsiOwner>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize(EsiOwner owner) {\r\n\t\t\t\t\treturn owner.getMarketOrders().size();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfor (EsiOwner owner : esiOwners) {\r\n\t\t\t\tfor (MyMarketOrder marketOrder : owner.getMarketOrders()) {\r\n\t\t\t\t\tset(statement, marketOrder, owner.getAccountID());\r\n\t\t\t\t\trows.addRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tString changesSQL = \"INSERT OR IGNORE INTO \" + MARKET_ORDER_CHANGES_TABLE + \" (\"\r\n\t\t\t\t+ \"\torderid,\"\r\n\t\t\t\t+ \"\tdate,\"\r\n\t\t\t\t+ \"\tprice,\"\r\n\t\t\t\t+ \"\tvolremaining)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(changesSQL)) {\r\n\t\t\tRows rows = new Rows(statement, esiOwners, new RowSize<EsiOwner>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize(EsiOwner owner) {\r\n\t\t\t\t\treturn owner.getMarketOrders().size();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfor (EsiOwner owner : esiOwners) {\r\n\t\t\t\tfor (MyMarketOrder marketOrder : owner.getMarketOrders()) {\r\n\t\t\t\t\tfor (RawMarketOrder.Change change : marketOrder.getChanges()) {\r\n\t\t\t\t\t\tset(statement, marketOrder, change);\r\n\t\t\t\t\t\trows.addRow();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void select(Connection connection, List<EsiOwner> esiOwners, Map<String, EsiOwner> owners) throws SQLException {\r\n\t\tMap<EsiOwner, Set<MyMarketOrder>> marketOrders = new HashMap<>();\r\n\t\tMap<Long, Set<Change>> changes = new HashMap<>();\r\n\t\tString changesSQL = \"SELECT * FROM \" + MARKET_ORDER_CHANGES_TABLE;\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(changesSQL);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tlong orderID = getLong(rs, \"orderid\");\r\n\t\t\t\tDate date = getDate(rs, \"date\");\r\n\t\t\t\tDouble changePrice = getDoubleOptional(rs, \"price\");\r\n\t\t\t\tInteger changeVolRemaining = getIntOptional(rs, \"volremaining\");\r\n\t\t\t\tSet<Change> set = changes.get(orderID);\r\n\t\t\t\tif (set == null) {\r\n\t\t\t\t\tset = new HashSet<>();\r\n\t\t\t\t\tchanges.put(orderID, set);\r\n\t\t\t\t}\r\n\t\t\t\tset.add(new Change(date, changePrice, changeVolRemaining));\r\n\t\t\t}\r\n\t\t\tfor (Map.Entry<EsiOwner, Set<MyMarketOrder>> entry : marketOrders.entrySet()) {\r\n\t\t\t\tentry.getKey().setMarketOrders(entry.getValue());\r\n\t\t\t}\r\n\t\t}\r\n\t\tString ordersSQL = \"SELECT * FROM \" + MARKET_ORDERS_TABLE;\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(ordersSQL);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tString accountID = getString(rs, \"accountid\");\r\n\t\t\t\tEsiOwner owner = owners.get(accountID);\r\n\t\t\t\tif (owner == null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tRawMarketOrder rawMarketOrder = RawMarketOrder.create();\r\n\t\t\t\tlong orderID = getLong(rs, \"orderid\");\r\n\t\t\t\tlong locationID = getLong(rs, \"stationid\");\r\n\t\t\t\tInteger regionID = getIntOptional(rs, \"regionid\");\r\n\t\t\t\tint volEntered = getInt(rs, \"volentered\");\r\n\t\t\t\tint volRemaining = getInt(rs, \"volremaining\");\r\n\t\t\t\tint minVolume = getInt(rs, \"minvolume\");\r\n\t\t\t\tString stateEnum = getStringOptional(rs, \"orderstateenum\");\r\n\t\t\t\tString stateString = getStringOptional(rs, \"orderstatestring\");\r\n\t\t\t\tint typeID = getInt(rs, \"typeid\");\r\n\t\t\t\tString rangeEnum = getStringOptional(rs, \"rangeenum\");\r\n\t\t\t\tString rangeString = getStringOptional(rs, \"rangestring\");\r\n\t\t\t\tint accountkey = getInt(rs, \"accountkey\");\r\n\t\t\t\tint duration = getInt(rs, \"duration\");\r\n\t\t\t\tdouble escrow = getDouble(rs, \"escrow\");\r\n\t\t\t\tdouble price = getDouble(rs, \"price\");\r\n\t\t\t\tint bid = getInt(rs, \"bid\");\r\n\t\t\t\tDate issued = getDate(rs, \"issued\");\r\n\t\t\t\tInteger issuedBy = getIntOptional(rs, \"issuedby\");\r\n\t\t\t\tboolean corp = getBooleanNotNull(rs, \"corp\", owner.isCorporation());\r\n\t\t\t\tboolean esi = getBooleanNotNull(rs, \"esi\", true);\r\n\r\n\r\n\t\t\t\trawMarketOrder.setWalletDivision(accountkey);\r\n\t\t\t\trawMarketOrder.setDuration(duration);\r\n\t\t\t\trawMarketOrder.setEscrow(escrow);\r\n\t\t\t\trawMarketOrder.setBuyOrder(bid > 0);\r\n\t\t\t\trawMarketOrder.setCorp(corp);\r\n\t\t\t\trawMarketOrder.setIssued(issued);\r\n\t\t\t\trawMarketOrder.addChanges(changes.get(orderID));\r\n\t\t\t\trawMarketOrder.setIssuedBy(issuedBy);\r\n\t\t\t\trawMarketOrder.setLocationID(locationID);\r\n\t\t\t\trawMarketOrder.setMinVolume(minVolume);\r\n\t\t\t\trawMarketOrder.setOrderID(orderID);\r\n\t\t\t\trawMarketOrder.setPrice(price);\r\n\t\t\t\trawMarketOrder.setRange(RawConverter.toMarketOrderRange(null, rangeEnum, rangeString));\r\n\t\t\t\trawMarketOrder.setRangeString(rangeString);\r\n\t\t\t\trawMarketOrder.setRegionID(RawConverter.toMarketOrderRegionID(locationID, typeID, regionID));\r\n\t\t\t\trawMarketOrder.setState(RawConverter.toMarketOrderState(null, stateEnum, stateString));\r\n\t\t\t\trawMarketOrder.setStateString(stateString);\r\n\t\t\t\trawMarketOrder.setTypeID(typeID);\r\n\t\t\t\trawMarketOrder.setVolumeRemain(volRemaining);\r\n\t\t\t\trawMarketOrder.setVolumeTotal(volEntered);\r\n\r\n\t\t\t\tMyMarketOrder marketOrder = DataConverter.toMyMarketOrder(rawMarketOrder, owner);\r\n\t\t\t\tmarketOrder.setESI(esi);\r\n\r\n\t\t\t\tset(owner, marketOrders, marketOrder);\r\n\t\t\t}\r\n\t\t\tfor (Map.Entry<EsiOwner, Set<MyMarketOrder>> entry : marketOrders.entrySet()) {\r\n\t\t\t\tentry.getKey().setMarketOrders(entry.getValue());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void updateTable(Connection connection) throws SQLException {\r\n\t\taddColumn(connection, MARKET_ORDERS_TABLE, \"regionid\", \"INTEGER\");\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean isEmpty(Connection connection) throws SQLException {\r\n\t\treturn !tableExist(connection, MARKET_ORDERS_TABLE, MARKET_ORDER_CHANGES_TABLE);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void create(Connection connection) throws SQLException {\r\n\t\tif (!tableExist(connection, MARKET_ORDERS_TABLE)) {\r\n\t\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + MARKET_ORDERS_TABLE + \" (\\n\"\r\n\t\t\t\t\t+ \"\taccountid TEXT,\"\r\n\t\t\t\t\t+ \"\torderid INTEGER,\"\r\n\t\t\t\t\t+ \"\tstationid INTEGER,\"\r\n\t\t\t\t\t+ \"\tregionid INTEGER,\"\r\n\t\t\t\t\t+ \"\tvolentered INTEGER,\"\r\n\t\t\t\t\t+ \"\tvolremaining INTEGER,\"\r\n\t\t\t\t\t+ \"\tminvolume INTEGER,\"\r\n\t\t\t\t\t+ \"\torderstateenum TEXT,\"\r\n\t\t\t\t\t+ \"\torderstatestring TEXT,\"\r\n\t\t\t\t\t+ \"\ttypeid INTEGER,\"\r\n\t\t\t\t\t+ \"\trangeenum TEXT,\"\r\n\t\t\t\t\t+ \"\trangestring TEXT,\"\r\n\t\t\t\t\t+ \"\taccountkey INTEGER,\"\r\n\t\t\t\t\t+ \"\tduration INTEGER,\"\r\n\t\t\t\t\t+ \"\tescrow REAL,\"\r\n\t\t\t\t\t+ \"\tprice REAL,\"\r\n\t\t\t\t\t+ \"\tbid NUMERIC,\"\r\n\t\t\t\t\t+ \"\tissued INTEGER,\"\r\n\t\t\t\t\t+ \"\tissuedby INTEGER,\"\r\n\t\t\t\t\t+ \"\tcorp NUMERIC,\"\r\n\t\t\t\t\t+ \"\tesi NUMERIC,\"\r\n\t\t\t\t\t+ \"\tUNIQUE(accountid, orderid)\\n\"\r\n\t\t\t\t\t+ \");\";\r\n\t\t\ttry (Statement statement = connection.createStatement()) {\r\n\t\t\t\tstatement.execute(sql);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!tableExist(connection, MARKET_ORDER_CHANGES_TABLE)) {\r\n\t\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + MARKET_ORDER_CHANGES_TABLE + \" (\\n\"\r\n\t\t\t\t\t+ \"\torderid INTEGER,\"\r\n\t\t\t\t\t+ \"\tdate INTEGER,\"\r\n\t\t\t\t\t+ \"\tprice REAL,\"\r\n\t\t\t\t\t+ \"\tvolremaining INTEGER, \"\r\n\t\t\t\t\t+ \" UNIQUE(orderid, date)\"\r\n\t\t\t\t\t+ \");\";\r\n\t\t\ttry (Statement statement = connection.createStatement()) {\r\n\t\t\t\tstatement.execute(sql);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/profile/ProfileMining.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.profile;\r\n\r\nimport java.sql.Connection;\r\nimport java.sql.PreparedStatement;\r\nimport java.sql.ResultSet;\r\nimport java.sql.SQLException;\r\nimport java.sql.Statement;\r\nimport java.util.Collection;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyExtraction;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMining;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawExtraction;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawMining;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.io.shared.DataConverter;\r\n\r\n\r\npublic class ProfileMining extends ProfileTable {\r\n\r\n\tprivate static final String MINING_TABLE = \"mining\";\r\n\tprivate static final String MINING_EXTRACTION_TABLE = \"miningextraction\";\r\n\r\n\t@Override\r\n\tprotected boolean isUpdated() {\r\n\t\treturn Settings.get().isMiningHistory();\r\n\t}\r\n\r\n\r\n\tprivate static void set(PreparedStatement statement, MyExtraction extraction, String accountID) throws SQLException {\r\n\t\tint index = 0;\r\n\t\tsetAttribute(statement, ++index, accountID);\r\n\t\tsetAttribute(statement, ++index, extraction.getChunkArrivalTime());\r\n\t\tsetAttribute(statement, ++index, extraction.getExtractionStartTime());\r\n\t\tsetAttribute(statement, ++index, extraction.getMoonID());\r\n\t\tsetAttribute(statement, ++index, extraction.getNaturalDecayTime());\r\n\t\tsetAttribute(statement, ++index, extraction.getStructureID());\r\n\t}\r\n\r\n\tprivate static void set(PreparedStatement statement, MyMining mining, String accountID) throws SQLException {\r\n\t\tint index = 0;\r\n\t\tsetAttribute(statement, ++index, accountID);\r\n\t\tsetAttribute(statement, ++index, mining.getTypeID());\r\n\t\tsetAttribute(statement, ++index, mining.getDate());\r\n\t\tsetAttribute(statement, ++index, mining.getCount());\r\n\t\tsetAttribute(statement, ++index, mining.getLocationID());\r\n\t\tsetAttribute(statement, ++index, mining.getCharacterID());\r\n\t\tsetAttributeOptional(statement, ++index, mining.getCorporationID());\r\n\t\tsetAttributeOptional(statement, ++index, mining.getCorporationName());\r\n\t\tsetAttribute(statement, ++index, mining.isForCorporation());\r\n\t}\r\n\r\n\t/**\r\n\t * Minings are mutable (REPLACE)\r\n\t * @param connection\r\n\t * @param accountID\r\n\t * @param minings \r\n\t * @throws java.sql.SQLException \r\n\t */\r\n\tpublic static void updateMinings(Connection connection, String accountID, Collection<MyMining> minings) throws SQLException {\r\n\t\t//Tables exist\r\n\t\tif (!tableExist(connection, MINING_TABLE)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//Insert data\r\n\t\tString miningSQL = \"INSERT OR REPLACE INTO \" + MINING_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\ttypeid,\"\r\n\t\t\t\t+ \"\tdate,\"\r\n\t\t\t\t+ \"\tcount,\"\r\n\t\t\t\t+ \"\tlocationid,\"\r\n\t\t\t\t+ \"\tcharacterid,\"\r\n\t\t\t\t+ \"\tcorporationid,\"\r\n\t\t\t\t+ \"\tcorporation,\"\r\n\t\t\t\t+ \"\tforcorp)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?,?,?,?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(miningSQL)) {\r\n\t\t\tRows rows = new Rows(statement, minings.size());\r\n\t\t\tfor (MyMining mining : minings) {\r\n\t\t\t\tset(statement, mining, accountID);\r\n\t\t\t\trows.addRow();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Not sure if extractions are immutable or mutable (REPLACE)\r\n\t * @param connection\r\n\t * @param accountID\r\n\t * @param extractions\r\n\t * @throws java.sql.SQLException\r\n\t */\r\n\tpublic static void updateExtractions(Connection connection, String accountID, Collection<MyExtraction> extractions) throws SQLException {\r\n\t\t//Tables exist\r\n\t\tif (!tableExist(connection, MINING_EXTRACTION_TABLE)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tString extractionSQL = \"INSERT OR REPLACE INTO \" + MINING_EXTRACTION_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\tarrival,\"\r\n\t\t\t\t+ \"\tstart,\"\r\n\t\t\t\t+ \"\tmoon,\"\r\n\t\t\t\t+ \"\tdecay,\"\r\n\t\t\t\t+ \"\tstructure)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(extractionSQL)) {\r\n\t\t\tRows rows = new Rows(statement, extractions.size());\r\n\t\t\tfor (MyExtraction extraction : extractions) {\r\n\t\t\t\tset(statement, extraction, accountID);\r\n\t\t\t\trows.addRow();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void insert(Connection connection, List<EsiOwner> esiOwners) throws SQLException {\r\n\t\t//Delete all data\r\n\t\ttableDelete(connection, MINING_TABLE, MINING_EXTRACTION_TABLE);\r\n\r\n\t\t//Insert data\r\n\t\tString miningSQL = \"INSERT OR REPLACE INTO \" + MINING_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\ttypeid,\"\r\n\t\t\t\t+ \"\tdate,\"\r\n\t\t\t\t+ \"\tcount,\"\r\n\t\t\t\t+ \"\tlocationid,\"\r\n\t\t\t\t+ \"\tcharacterid,\"\r\n\t\t\t\t+ \"\tcorporationid,\"\r\n\t\t\t\t+ \"\tcorporation,\"\r\n\t\t\t\t+ \"\tforcorp)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?,?,?,?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(miningSQL)) {\r\n\t\t\tRows rows = new Rows(statement, esiOwners, new RowSize<EsiOwner>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize(EsiOwner esiOwner) {\r\n\t\t\t\t\treturn esiOwner.getMining().size();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfor (EsiOwner owner : esiOwners) {\r\n\t\t\t\tfor (MyMining mining : owner.getMining()) {\r\n\t\t\t\t\tset(statement, mining, owner.getAccountID());\r\n\t\t\t\t\trows.addRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tString extractionSQL = \"INSERT INTO \" + MINING_EXTRACTION_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\tarrival,\"\r\n\t\t\t\t+ \"\tstart,\"\r\n\t\t\t\t+ \"\tmoon,\"\r\n\t\t\t\t+ \"\tdecay,\"\r\n\t\t\t\t+ \"\tstructure)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(extractionSQL)) {\r\n\t\t\tRows rows = new Rows(statement, esiOwners, new RowSize<EsiOwner>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize(EsiOwner esiOwner) {\r\n\t\t\t\t\treturn esiOwner.getExtractions().size();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfor (EsiOwner owner : esiOwners) {\r\n\t\t\t\tfor (MyExtraction extraction : owner.getExtractions()) {\r\n\t\t\t\t\tset(statement, extraction, owner.getAccountID());\r\n\t\t\t\t\trows.addRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void select(Connection connection, List<EsiOwner> esiOwners, Map<String, EsiOwner> owners) throws SQLException {\r\n\t\tMap<EsiOwner, Set<MyMining>> minings = new HashMap<>();\r\n\t\tMap<EsiOwner, Set<MyExtraction>> extractions = new HashMap<>();\r\n\t\tString miningSQL = \"SELECT * FROM \" + MINING_TABLE;\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(miningSQL);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tString accountID = getString(rs, \"accountid\");\r\n\r\n\t\t\t\tEsiOwner owner = owners.get(accountID);\r\n\t\t\t\tif (owner == null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tint typeID = getInt(rs, \"typeid\");\r\n\t\t\t\tDate date = getDate(rs, \"date\");\r\n\t\t\t\tlong count = getLong(rs, \"count\");\r\n\t\t\t\tlong locationID = getLong(rs, \"locationid\");\r\n\t\t\t\tLong characterID = getLongOptional(rs, \"characterid\");\r\n\t\t\t\tif (characterID == null) {\r\n\t\t\t\t\tcharacterID = owner.getOwnerID();\r\n\t\t\t\t}\r\n\t\t\t\tString corporationName = getStringOptional(rs, \"corporation\");\r\n\t\t\t\tLong corporationID = getLongOptional(rs, \"corporationid\");\r\n\t\t\t\tboolean forCorporation = getBoolean(rs, \"forcorp\");\r\n\r\n\t\t\t\tRawMining mining = RawMining.create();\r\n\t\t\t\tmining.setTypeID(typeID);\r\n\t\t\t\tmining.setDate(date);\r\n\t\t\t\tmining.setCount(count);\r\n\t\t\t\tmining.setLocationID(locationID);\r\n\t\t\t\tmining.setCharacterID(characterID);\r\n\t\t\t\tmining.setCorporationID(corporationID);\r\n\t\t\t\tmining.setCorporationName(corporationName);\r\n\t\t\t\tmining.setForCorporation(forCorporation);\r\n\r\n\t\t\t\t\r\n\t\t\t\tset(owner, minings, DataConverter.toMyMining(mining));\r\n\t\t\t}\r\n\t\t\tfor (Map.Entry<EsiOwner, Set<MyMining>> entry : minings.entrySet()) {\r\n\t\t\t\tentry.getKey().setMining(entry.getValue());\r\n\t\t\t}\r\n\t\t}\r\n\t\tString extractionSQL = \"SELECT * FROM \" + MINING_EXTRACTION_TABLE;\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(extractionSQL);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tString accountID = getString(rs, \"accountid\");\r\n\r\n\t\t\t\tDate arrival = getDate(rs, \"arrival\");\r\n\t\t\t\tDate start = getDate(rs, \"start\");\r\n\t\t\t\tDate decay = getDate(rs, \"decay\");\r\n\t\t\t\tint moon = getInt(rs, \"moon\");\r\n\t\t\t\tlong structure = getLong(rs, \"structure\");\r\n\r\n\t\t\t\tRawExtraction mining = RawExtraction.create();\r\n\t\t\t\tmining.setChunkArrivalTime(arrival);\r\n\t\t\t\tmining.setExtractionStartTime(start);\r\n\t\t\t\tmining.setMoonID(moon);\r\n\t\t\t\tmining.setNaturalDecayTime(decay);\r\n\t\t\t\tmining.setStructureID(structure);\r\n\r\n\t\t\t\tEsiOwner owner = owners.get(accountID);\r\n\t\t\t\tif (owner == null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tset(owner, extractions, DataConverter.toMyExtraction(mining));\r\n\t\t\t}\r\n\t\t\tfor (Map.Entry<EsiOwner, Set<MyExtraction>> entry : extractions.entrySet()) {\r\n\t\t\t\tentry.getKey().setExtractions(entry.getValue());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean isEmpty(Connection connection) throws SQLException {\r\n\t\treturn !tableExist(connection, MINING_TABLE, MINING_EXTRACTION_TABLE);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void create(Connection connection) throws SQLException {\r\n\t\tif (!tableExist(connection, MINING_TABLE)) {\r\n\t\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + MINING_TABLE + \" (\\n\"\r\n\t\t\t\t\t+ \"\taccountid TEXT,\\n\"\r\n\t\t\t\t\t+ \"\ttypeid INTEGER,\"\r\n\t\t\t\t\t+ \"\tdate INTEGER,\"\r\n\t\t\t\t\t+ \"\tcount INTEGER,\"\r\n\t\t\t\t\t+ \"\tlocationid INTEGER,\"\r\n\t\t\t\t\t+ \"\tcharacterid INTEGER,\"\r\n\t\t\t\t\t+ \"\tcorporationid INTEGER,\"\r\n\t\t\t\t\t+ \"\tcorporation TEXT,\"\r\n\t\t\t\t\t+ \"\tforcorp NUMERIC,\"\r\n\t\t\t\t\t+ \"\tUNIQUE(date, locationid, typeid, characterid, forcorp)\\n\"\r\n\t\t\t\t\t+ \");\";\r\n\t\t\ttry (Statement statement = connection.createStatement()) {\r\n\t\t\t\tstatement.execute(sql);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!tableExist(connection, MINING_EXTRACTION_TABLE)) {\r\n\t\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + MINING_EXTRACTION_TABLE + \" (\\n\"\r\n\t\t\t\t\t+ \"\taccountid TEXT,\\n\"\r\n\t\t\t\t\t+ \"\tarrival INTEGER,\"\r\n\t\t\t\t\t+ \"\tstart INTEGER,\"\r\n\t\t\t\t\t+ \"\tmoon INTEGER,\"\r\n\t\t\t\t\t+ \"\tdecay INTEGER,\"\r\n\t\t\t\t\t+ \"\tstructure INTEGER,\"\r\n\t\t\t\t\t+ \"\tUNIQUE(accountid, start, moon)\\n\"\r\n\t\t\t\t\t+ \");\";\r\n\t\t\ttry (Statement statement = connection.createStatement()) {\r\n\t\t\t\tstatement.execute(sql);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/profile/ProfileNpcStanding.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.profile;\r\n\r\nimport java.sql.Connection;\r\nimport java.sql.PreparedStatement;\r\nimport java.sql.ResultSet;\r\nimport java.sql.SQLException;\r\nimport java.sql.Statement;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyNpcStanding;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawNpcStanding;\r\nimport net.nikr.eve.jeveasset.io.shared.DataConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\r\n\r\n\r\npublic class ProfileNpcStanding extends ProfileTable {\r\n\r\n\tprivate static final String NPC_STANDING_TABLE = \"npcstanding\";\r\n\r\n\t@Override\r\n\tprotected void insert(Connection connection, List<EsiOwner> esiOwners) throws SQLException {\r\n\t\t//Delete all data\r\n\t\ttableDelete(connection, NPC_STANDING_TABLE);\r\n\r\n\t\t//Insert Data\r\n\t\tString sql = \"INSERT INTO \" + NPC_STANDING_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\tfromid,\"\r\n\t\t\t\t+ \"\tfromtype,\"\r\n\t\t\t\t+ \" fromtypestring,\"\r\n\t\t\t\t+ \" standing)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql)) {\r\n\t\t\tRows rows = new Rows(statement, esiOwners, new RowSize<EsiOwner>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize(EsiOwner esiOwner) {\r\n\t\t\t\t\treturn esiOwner.getNpcStanding().size();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfor (EsiOwner owner : esiOwners) {\r\n\t\t\t\tfor (MyNpcStanding npcStanding : owner.getNpcStanding()) {\r\n\t\t\t\t\tint index = 0;\r\n\t\t\t\t\tsetAttribute(statement, ++index, owner.getAccountID());\r\n\t\t\t\t\tsetAttribute(statement, ++index, npcStanding.getFromID());\r\n\t\t\t\t\tsetAttribute(statement, ++index, npcStanding.getFromType());\r\n\t\t\t\t\tsetAttribute(statement, ++index, npcStanding.getFromTypeString());\r\n\t\t\t\t\tsetAttribute(statement, ++index, npcStanding.getStanding());\r\n\t\t\t\t\trows.addRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void select(Connection connection, List<EsiOwner> esiOwners, Map<String, EsiOwner> owners)  throws SQLException {\r\n\t\tif (!tableExist(connection, NPC_STANDING_TABLE)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tMap<EsiOwner, Set<MyNpcStanding>> npcStandings = new HashMap<>();\r\n\t\tString sql = \"SELECT * FROM \" + NPC_STANDING_TABLE;\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tRawNpcStanding rawNpcStanding = RawNpcStanding.create();\r\n\t\t\t\tString accountID = getString(rs, \"accountid\");\r\n\t\t\t\tint fromID = getInt(rs, \"fromid\");\r\n\t\t\t\tString fromType = getString(rs, \"fromtype\");\r\n\t\t\t\tString fromTypeString = getString(rs, \"fromtypestring\");\r\n\t\t\t\tFloat standing = getFloat(rs, \"standing\");\r\n\r\n\t\t\t\trawNpcStanding.setFromID(fromID);\r\n\t\t\t\trawNpcStanding.setFromType(RawConverter.toNpcStandingFromType(fromType, fromTypeString));\r\n\t\t\t\trawNpcStanding.setFromTypeString(fromTypeString);\r\n\t\t\t\trawNpcStanding.setStanding(standing);\r\n\r\n\t\t\t\tEsiOwner owner = owners.get(accountID);\r\n\t\t\t\tif (owner == null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tset(owner, npcStandings, DataConverter.toMyNpcStanding(rawNpcStanding, owner));\r\n\t\t\t}\r\n\t\t\tfor (Map.Entry<EsiOwner, Set<MyNpcStanding>> entry : npcStandings.entrySet()) {\r\n\t\t\t\tentry.getKey().setNpcStanding(entry.getValue());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean isEmpty(Connection connection) throws SQLException {\r\n\t\treturn !tableExist(connection, NPC_STANDING_TABLE);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void create(Connection connection)  throws SQLException {\r\n\t\tif (!tableExist(connection, NPC_STANDING_TABLE)) {\r\n\t\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + NPC_STANDING_TABLE + \" (\\n\"\r\n\t\t\t\t\t+ \"\taccountid TEXT,\\n\"\r\n\t\t\t\t\t+ \"\tfromid INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tfromtype TEXT,\\n\"\r\n\t\t\t\t\t+ \" fromtypestring TEXT,\\n\"\r\n\t\t\t\t\t+ \" standing REAL,\\n\"\r\n\t\t\t\t\t+ \"\tUNIQUE(accountid, fromid)\\n\"\r\n\t\t\t\t\t+ \");\";\r\n\t\t\ttry (Statement statement = connection.createStatement()) {\r\n\t\t\t\tstatement.execute(sql);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/profile/ProfileOwners.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.profile;\r\n\r\nimport java.sql.Connection;\r\nimport java.sql.PreparedStatement;\r\nimport java.sql.ResultSet;\r\nimport java.sql.SQLException;\r\nimport java.sql.Statement;\r\nimport java.util.Arrays;\r\nimport java.util.Date;\r\nimport java.util.EnumSet;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.io.esi.EsiCallbackURL;\r\nimport net.troja.eve.esi.model.CharacterRolesResponse;\r\n\r\n\r\npublic class ProfileOwners extends ProfileTable {\r\n\r\n\tprivate static final String OWNERS_TABLE = \"owners\";\r\n\r\n\t@Override\r\n\tprotected void insert(Connection connection, List<EsiOwner> esiOwners) throws SQLException {\r\n\t\t//Delete all data\r\n\t\ttableDelete(connection, OWNERS_TABLE);\r\n\r\n\t\t//Insert data\r\n\t\tString sql = \"INSERT INTO \" + OWNERS_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\townerid,\"\r\n\t\t\t\t+ \"\tname,\"\r\n\t\t\t\t+ \"\tcorp,\"\r\n\t\t\t\t+ \"\tshow,\"\r\n\t\t\t\t+ \"\tinvalid,\"\r\n\t\t\t\t+ \"\tassetslastupdate,\"\r\n\t\t\t\t+ \"\tassetsnextupdate,\"\r\n\t\t\t\t+ \"\tbalancelastupdate,\"\r\n\t\t\t\t+ \"\tbalancenextupdate,\"\r\n\t\t\t\t+ \"\tmarketordersnextupdate,\"\r\n\t\t\t\t+ \"\tjournalnextupdate,\"\r\n\t\t\t\t+ \"\ttransactionsnextupdate,\"\r\n\t\t\t\t+ \"\tindustryjobsnextupdate,\"\r\n\t\t\t\t+ \"\tcontractsnextupdate,\"\r\n\t\t\t\t+ \"\tlocationsnextupdate,\"\r\n\t\t\t\t+ \"\tblueprintsnextupdate,\"\r\n\t\t\t\t+ \"\tskillsnextupdate,\"\r\n\t\t\t\t+ \"\tloyaltypointsnextupdate,\"\r\n\t\t\t\t+ \"\tnpcstandingnextupdate,\"\r\n\t\t\t\t+ \"\tminingnextupdate,\"\r\n\t\t\t\t+ \"\taccountname,\"\r\n\t\t\t\t+ \"\trefreshtoken,\"\r\n\t\t\t\t+ \"\tscopes,\"\r\n\t\t\t\t+ \"\tstructuresnextupdate,\"\r\n\t\t\t\t+ \"\taccountnextupdate,\"\r\n\t\t\t\t+ \"\tcallbackurl,\"\r\n\t\t\t\t+ \"\tcharacterroles)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql)) {\r\n\t\t\tRows rows = new Rows(statement, esiOwners.size());\r\n\t\t\tfor (EsiOwner owner : esiOwners) {\r\n\t\t\t\tint index = 0;\r\n\t\t\t\tsetAttribute(statement, ++index, owner.getAccountID());\r\n\t\t\t\tsetAttribute(statement, ++index, owner.getOwnerID());\r\n\t\t\t\tsetAttribute(statement, ++index, owner.getOwnerName());\r\n\t\t\t\tsetAttributeOptional(statement, ++index, owner.getCorporationName());\r\n\t\t\t\tsetAttribute(statement, ++index, owner.isShowOwner());\r\n\t\t\t\tsetAttribute(statement, ++index, owner.isInvalid());\r\n\t\t\t\tsetAttributeOptional(statement, ++index, owner.getAssetLastUpdate());\r\n\t\t\t\tsetAttribute(statement, ++index, owner.getAssetNextUpdate());\r\n\t\t\t\tsetAttributeOptional(statement, ++index, owner.getBalanceLastUpdate());\r\n\t\t\t\tsetAttribute(statement, ++index, owner.getBalanceNextUpdate());\r\n\t\t\t\tsetAttribute(statement, ++index, owner.getMarketOrdersNextUpdate());\r\n\t\t\t\tsetAttribute(statement, ++index, owner.getJournalNextUpdate());\r\n\t\t\t\tsetAttribute(statement, ++index, owner.getTransactionsNextUpdate());\r\n\t\t\t\tsetAttribute(statement, ++index, owner.getIndustryJobsNextUpdate());\r\n\t\t\t\tsetAttribute(statement, ++index, owner.getContractsNextUpdate());\r\n\t\t\t\tsetAttribute(statement, ++index, owner.getLocationsNextUpdate());\r\n\t\t\t\tsetAttribute(statement, ++index, owner.getBlueprintsNextUpdate());\r\n\t\t\t\tsetAttribute(statement, ++index, owner.getSkillsNextUpdate());\r\n\t\t\t\tsetAttribute(statement, ++index, owner.getLoyaltyPointsNextUpdate());\r\n\t\t\t\tsetAttribute(statement, ++index, owner.getNpcStandingNextUpdate());\r\n\t\t\t\tsetAttribute(statement, ++index, owner.getMiningNextUpdate());\r\n\t\t\t\tsetAttribute(statement, ++index, owner.getAccountName());\r\n\t\t\t\tsetAttributeOptional(statement, ++index, owner.getRefreshToken());\r\n\t\t\t\tsetAttribute(statement, ++index, owner.getScopes());\r\n\t\t\t\tsetAttribute(statement, ++index, owner.getStructuresNextUpdate());\r\n\t\t\t\tsetAttribute(statement, ++index, owner.getAccountNextUpdate());\r\n\t\t\t\tsetAttribute(statement, ++index, owner.getCallbackURL());\r\n\t\t\t\tsetAttribute(statement, ++index, owner.getRoles());\r\n\t\t\t\trows.addRow();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void select(Connection connection, List<EsiOwner> esiOwners, Map<String, EsiOwner> owners) throws SQLException {\r\n\t\tString sql = \"SELECT * FROM \" + OWNERS_TABLE;\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tString accountID = getString(rs, \"accountid\");\r\n\t\t\t\tString ownerName = getString(rs, \"name\");\r\n\t\t\t\tString corporationName = getStringOptional(rs, \"corp\");\r\n\t\t\t\tlong ownerID = getLong(rs, \"ownerid\");\r\n\t\t\t\tDate assetsNextUpdate = getDateNotNull(rs, \"assetsnextupdate\");\r\n\t\t\t\tDate assetsLastUpdate = getDateOptional(rs, \"assetslastupdate\");\r\n\t\t\t\tDate balanceNextUpdate = getDateNotNull(rs, \"balancenextupdate\");\r\n\t\t\t\tDate balanceLastUpdate = getDateOptional(rs, \"balancelastupdate\");\r\n\t\t\t\tboolean showOwner = getBooleanNotNull(rs, \"show\", true) ;\r\n\t\t\t\tboolean invalid = getBooleanNotNull(rs, \"invalid\", false);\r\n\t\t\t\tDate marketOrdersNextUpdate = getDateNotNull(rs, \"marketordersnextupdate\");\r\n\t\t\t\tDate journalNextUpdate = getDateNotNull(rs, \"journalnextupdate\");\r\n\t\t\t\tDate transactionsNextUpdate = getDateNotNull(rs, \"transactionsnextupdate\");\r\n\t\t\t\tDate industryJobsNextUpdate = getDateNotNull(rs, \"industryjobsnextupdate\");\r\n\t\t\t\tDate contractsNextUpdate = getDateNotNull(rs, \"contractsnextupdate\");\r\n\t\t\t\tDate locationsNextUpdate = getDateNotNull(rs, \"locationsnextupdate\");\r\n\t\t\t\tDate blueprintsNextUpdate = getDateNotNull(rs, \"blueprintsnextupdate\");\r\n\t\t\t\tDate skillsNextUpdate = getDateNotNull(rs, \"skillsnextupdate\");\r\n\t\t\t\tDate loyaltyPointsNextUpdate = getDateNotNull(rs, \"loyaltypointsnextupdate\");\r\n\t\t\t\tDate npcStandingNextUpdate = getDateNotNull(rs, \"npcstandingnextupdate\");\r\n\t\t\t\tDate miningNextUpdate = getDateNotNull(rs, \"miningnextupdate\");\r\n\t\t\t\tString accountName = getString(rs, \"accountname\");\r\n\t\t\t\tString refreshToken = getString(rs, \"refreshtoken\");\r\n\t\t\t\tString scopes = getString(rs, \"scopes\");\r\n\t\t\t\tDate structuresNextUpdate = getDate(rs, \"structuresnextupdate\");\r\n\t\t\t\tDate accountNextUpdate = getDate(rs, \"accountnextupdate\");\r\n\t\t\t\tEsiCallbackURL callbackURL;\r\n\t\t\t\ttry {\r\n\t\t\t\t\tcallbackURL = EsiCallbackURL.valueOf(getString(rs, \"callbackurl\"));\r\n\t\t\t\t} catch (IllegalArgumentException ex) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tSet<CharacterRolesResponse.RolesEnum> roles = EnumSet.noneOf(CharacterRolesResponse.RolesEnum.class);\r\n\t\t\t\tfor (String role : getString(rs, \"characterroles\").split(\",\")) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\troles.add(CharacterRolesResponse.RolesEnum.valueOf(role));\r\n\t\t\t\t\t} catch (IllegalArgumentException ex) {\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tEsiOwner owner = new EsiOwner(accountID);\r\n\t\t\t\towner.setRoles(roles);\r\n\t\t\t\towner.setAccountName(accountName);\r\n\t\t\t\towner.setScopes(new HashSet<>(Arrays.asList(scopes.split(\",\"))));\r\n\t\t\t\towner.setStructuresNextUpdate(structuresNextUpdate);\r\n\t\t\t\towner.setAccountNextUpdate(accountNextUpdate);\r\n\t\t\t\towner.setAuth(callbackURL, refreshToken, null);\r\n\t\t\t\towner.setOwnerName(ownerName);\r\n\t\t\t\towner.setCorporationName(corporationName);\r\n\t\t\t\towner.setOwnerID(ownerID);\r\n\t\t\t\towner.setAssetNextUpdate(assetsNextUpdate);\r\n\t\t\t\towner.setAssetLastUpdate(assetsLastUpdate);\r\n\t\t\t\towner.setBalanceNextUpdate(balanceNextUpdate);\r\n\t\t\t\towner.setBalanceLastUpdate(balanceLastUpdate);\r\n\t\t\t\towner.setShowOwner(showOwner);\r\n\t\t\t\towner.setInvalid(invalid);\r\n\t\t\t\towner.setMarketOrdersNextUpdate(marketOrdersNextUpdate);\r\n\t\t\t\towner.setJournalNextUpdate(journalNextUpdate);\r\n\t\t\t\towner.setTransactionsNextUpdate(transactionsNextUpdate);\r\n\t\t\t\towner.setIndustryJobsNextUpdate(industryJobsNextUpdate);\r\n\t\t\t\towner.setContractsNextUpdate(contractsNextUpdate);\r\n\t\t\t\towner.setLocationsNextUpdate(locationsNextUpdate);\r\n\t\t\t\towner.setBlueprintsNextUpdate(blueprintsNextUpdate);\r\n\t\t\t\towner.setSkillsNextUpdate(skillsNextUpdate);\r\n\t\t\t\towner.setLoyaltyPointsNextUpdate(loyaltyPointsNextUpdate);\r\n\t\t\t\towner.setNpcStandingNextUpdate(npcStandingNextUpdate);\r\n\t\t\t\towner.setMiningNextUpdate(miningNextUpdate);\r\n\t\t\t\tesiOwners.add(owner);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void updateTable(Connection connection) throws SQLException {\r\n\t\taddColumn(connection, OWNERS_TABLE, \"loyaltypointsnextupdate\", \"INTEGER\");\r\n\t\taddColumn(connection, OWNERS_TABLE, \"npcstandingnextupdate\", \"INTEGER\");\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean isEmpty(Connection connection) throws SQLException {\r\n\t\treturn !tableExist(connection, OWNERS_TABLE);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void create(Connection connection) throws SQLException {\r\n\t\tif (!tableExist(connection, OWNERS_TABLE)) {\r\n\t\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + OWNERS_TABLE + \" (\\n\"\r\n\t\t\t\t\t+ \"\taccountid TEXT,\\n\"\r\n\t\t\t\t\t+ \"\townerid INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tname TEXT,\\n\"\r\n\t\t\t\t\t+ \"\tcorp TEXT,\\n\"\r\n\t\t\t\t\t+ \"\tshow NUMERIC,\\n\"\r\n\t\t\t\t\t+ \"\tinvalid NUMERIC,\\n\"\r\n\t\t\t\t\t+ \"\tassetslastupdate INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tassetsnextupdate INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tbalancelastupdate INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tbalancenextupdate INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tmarketordersnextupdate INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tjournalnextupdate INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\ttransactionsnextupdate INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tindustryjobsnextupdate INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tcontractsnextupdate INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tlocationsnextupdate INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tblueprintsnextupdate INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tskillsnextupdate INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tminingnextupdate INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\taccountname TEXT,\\n\"\r\n\t\t\t\t\t+ \"\trefreshtoken TEXT,\\n\"\r\n\t\t\t\t\t+ \"\tscopes TEXT,\\n\"\r\n\t\t\t\t\t+ \"\tstructuresnextupdate INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\taccountnextupdate INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tloyaltypointsnextupdate INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tnpcstandingnextupdate INTEGER,\\n\"\r\n\t\t\t\t\t+ \"\tcallbackurl TEXT,\\n\"\r\n\t\t\t\t\t+ \"\tcharacterroles TEXT,\\n\"\r\n\t\t\t\t\t+ \"\tUNIQUE(accountid)\\n\"\r\n\t\t\t\t\t+ \");\";\r\n\t\t\ttry (Statement statement = connection.createStatement()) {\r\n\t\t\t\tstatement.execute(sql);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/profile/ProfileSkills.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.profile;\r\n\r\nimport java.sql.Connection;\r\nimport java.sql.PreparedStatement;\r\nimport java.sql.ResultSet;\r\nimport java.sql.SQLException;\r\nimport java.sql.Statement;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.my.MySkill;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawSkill;\r\nimport net.nikr.eve.jeveasset.io.shared.DataConverter;\r\n\r\n\r\npublic class ProfileSkills extends ProfileTable {\r\n\r\n\tprivate static final String SKILLS_TABLE = \"skills\";\r\n\tprivate static final String SKILLS_TOTAL_TABLE = \"skillstotal\";\r\n\r\n\t@Override\r\n\tprotected void insert(Connection connection, List<EsiOwner> esiOwners) throws SQLException {\r\n\t\t//Delete all data\r\n\t\ttableDelete(connection, SKILLS_TABLE, SKILLS_TOTAL_TABLE);\r\n\r\n\t\t//Insert data\r\n\t\tString skillsSQL = \"INSERT OR REPLACE INTO \" + SKILLS_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\tid,\"\r\n\t\t\t\t+ \"\tsp,\"\r\n\t\t\t\t+ \"\tactive,\"\r\n\t\t\t\t+ \"\ttrained)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(skillsSQL)) {\r\n\t\t\tRows rows = new Rows(statement, esiOwners, new RowSize<EsiOwner>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize(EsiOwner esiOwner) {\r\n\t\t\t\t\treturn esiOwner.getSkills().size();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfor (EsiOwner owner : esiOwners) {\r\n\t\t\t\tfor (MySkill skill : owner.getSkills()) {\r\n\t\t\t\t\tint index = 0;\r\n\t\t\t\t\tsetAttribute(statement, ++index, owner.getAccountID());\r\n\t\t\t\t\tsetAttribute(statement, ++index, skill.getTypeID());\r\n\t\t\t\t\tsetAttribute(statement, ++index, skill.getSkillpoints());\r\n\t\t\t\t\tsetAttribute(statement, ++index, skill.getActiveSkillLevel());\r\n\t\t\t\t\tsetAttribute(statement, ++index, skill.getTrainedSkillLevel());\r\n\t\t\t\t\trows.addRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tString totalSQL = \"INSERT OR REPLACE INTO \" + SKILLS_TOTAL_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\ttotal,\"\r\n\t\t\t\t+ \"\tunallocated)\"\r\n\t\t\t\t+ \" VALUES (?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(totalSQL)) {\r\n\t\t\tRows rows = new Rows(statement, esiOwners.size());\r\n\t\t\tfor (EsiOwner owner : esiOwners) {\r\n\t\t\t\tint index = 0;\r\n\t\t\t\tsetAttribute(statement, ++index, owner.getAccountID());\r\n\t\t\t\tsetAttributeOptional(statement, ++index, owner.getTotalSkillPoints());\r\n\t\t\t\tsetAttributeOptional(statement, ++index, owner.getUnallocatedSkillPoints());\r\n\t\t\t\trows.addRow();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void select(Connection connection, List<EsiOwner> esiOwners, Map<String, EsiOwner> owners) throws SQLException {\r\n\t\tMap<EsiOwner, List<MySkill>> accountBalances = new HashMap<>();\r\n\t\tString skillsSQL = \"SELECT * FROM \" + SKILLS_TABLE;\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(skillsSQL);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tString accountID = getString(rs, \"accountid\");\r\n\r\n\t\t\t\tint typeID = getInt(rs, \"id\");\r\n\t\t\t\tlong skillpoints = getLong(rs, \"sp\");\r\n\t\t\t\tint activeSkillLevel = getInt(rs, \"active\");\r\n\t\t\t\tint trainedSkillLevel = getInt(rs, \"trained\");\r\n\r\n\t\t\t\tRawSkill skill = RawSkill.create();\r\n\t\t\t\tskill.setTypeID(typeID);\r\n\t\t\t\tskill.setSkillpoints(skillpoints);\r\n\t\t\t\tskill.setActiveSkillLevel(activeSkillLevel);\r\n\t\t\t\tskill.setTrainedSkillLevel(trainedSkillLevel);\r\n\r\n\t\t\t\tEsiOwner owner = owners.get(accountID);\r\n\t\t\t\tif (owner == null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tlist(owner, accountBalances, DataConverter.toMySkill(skill, owner));\r\n\t\t\t}\r\n\t\t\tfor (Map.Entry<EsiOwner, List<MySkill>> entry : accountBalances.entrySet()) {\r\n\t\t\t\tentry.getKey().setSkills(entry.getValue());\r\n\t\t\t}\r\n\t\t}\r\n\t\tString totalSQL = \"SELECT * FROM \" + SKILLS_TOTAL_TABLE;\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(totalSQL);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tString accountID = getString(rs, \"accountid\");\r\n\r\n\t\t\t\tInteger unallocatedSkillPoints = getIntOptional(rs, \"unallocated\");\r\n\t\t\t\tLong totalSkillPoints = getLongOptional(rs, \"total\");\r\n\r\n\t\t\t\tEsiOwner owner = owners.get(accountID);\r\n\t\t\t\tif (owner == null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\towner.setTotalSkillPoints(totalSkillPoints);\r\n\t\t\t\towner.setUnallocatedSkillPoints(unallocatedSkillPoints);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean isEmpty(Connection connection) throws SQLException {\r\n\t\treturn !tableExist(connection, SKILLS_TABLE, SKILLS_TOTAL_TABLE);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void create(Connection connection) throws SQLException {\r\n\t\tif (!tableExist(connection, SKILLS_TABLE)) {\r\n\t\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + SKILLS_TABLE + \" (\\n\"\r\n\t\t\t\t\t+ \"\taccountid TEXT,\\n\"\r\n\t\t\t\t\t+ \"\tid INTEGER,\"\r\n\t\t\t\t\t+ \"\tsp INTEGER,\"\r\n\t\t\t\t\t+ \"\tactive INTEGER,\"\r\n\t\t\t\t\t+ \"\ttrained INTEGER,\"\r\n\t\t\t\t\t+ \"\tUNIQUE(accountid, id)\\n\"\r\n\t\t\t\t\t+ \");\";\r\n\t\t\ttry (Statement statement = connection.createStatement()) {\r\n\t\t\t\tstatement.execute(sql);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!tableExist(connection, SKILLS_TOTAL_TABLE)) {\r\n\t\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + SKILLS_TOTAL_TABLE + \" (\\n\"\r\n\t\t\t\t\t+ \"\taccountid TEXT,\\n\"\r\n\t\t\t\t\t+ \"\ttotal INTEGER,\"\r\n\t\t\t\t\t+ \"\tunallocated INTEGER,\"\r\n\t\t\t\t\t+ \"\tUNIQUE(accountid)\\n\"\r\n\t\t\t\t\t+ \");\";\r\n\t\t\ttry (Statement statement = connection.createStatement()) {\r\n\t\t\t\tstatement.execute(sql);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/profile/ProfileTable.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.profile;\r\n\r\nimport java.awt.Color;\r\nimport java.sql.Connection;\r\nimport java.sql.PreparedStatement;\r\nimport java.sql.ResultSet;\r\nimport java.sql.SQLException;\r\nimport java.sql.Statement;\r\nimport java.sql.Types;\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.io.local.AbstractXmlWriter;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic abstract class ProfileTable {\r\n\r\n\tprotected static final Logger LOG = LoggerFactory.getLogger(ProfileTable.class);\r\n\r\n\tprivate static final int BATCH_SIZE = 1000;\r\n\r\n\tprotected abstract boolean isEmpty(Connection connection) throws SQLException;\r\n\tprotected abstract void insert(Connection connection, final List<EsiOwner> esiOwners) throws SQLException;\r\n\tprotected abstract void select(Connection connection, List<EsiOwner> esiOwners, Map<String, EsiOwner> owners) throws SQLException;\r\n\tprotected abstract void create(Connection connection) throws SQLException;\r\n\r\n\tprotected void updateTable(Connection connection) throws SQLException { }\r\n\r\n\tprotected boolean isUpdated() {\r\n\t\treturn false;\r\n\t}\r\n\r\n \tprotected static boolean tableExist(Connection connection, String ... tableNames) throws SQLException {\r\n\t\tboolean ok = true;\r\n\t\tfor (String tableName : tableNames) {\r\n\t\t\tString sql = \"SELECT name FROM sqlite_master WHERE type='table' AND name='\" + tableName + \"'\";\r\n\t\t\ttry (Statement statement = connection.createStatement(); ResultSet rs = statement.executeQuery(sql)) {\r\n\t\t\t\tok = rs.next() && ok;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn ok;\r\n\t}\r\n\r\n \tprotected static void tableDelete(Connection connection, String ... tableNames) throws SQLException {\r\n\t\tfor (String tableName : tableNames) {\r\n\t\t\tString sql = \"DELETE FROM \" + tableName;\r\n\t\t\ttry (PreparedStatement statement = connection.prepareStatement(sql)) {\r\n\t\t\t\tstatement.execute();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n \tprivate Set<String> tableColumns(Connection connection, String tableName) throws SQLException {\r\n\t\tSet<String> columns = new HashSet<>();\r\n\t\tString sql = \"SELECT name FROM pragma_table_info('\" + tableName + \"')\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql);\r\n\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tString columnName = getString(rs, \"name\");\r\n\t\t\t\tcolumns.add(columnName);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn columns;\r\n\t}\r\n\r\n \tprotected  void addColumn(Connection connection, String tableName, String columnName, String type) throws SQLException {\r\n\t\tSet<String> tableColumns = tableColumns(connection, tableName);\r\n\t\tif (!tableColumns.contains(columnName)) {\r\n\t\t\tString sql = \"ALTER TABLE \" + tableName + \" ADD COLUMN \" + columnName + \" \" + type;\r\n\t\t\ttry (PreparedStatement statement = connection.prepareStatement(sql)) {\r\n\t\t\t\tstatement.execute();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected static void setAttributeNull(final PreparedStatement statement, final int index) throws SQLException {\r\n\t\tstatement.setNull(index, Types.NULL);\r\n\t}\r\n\r\n\tprotected static void setAttributeOptional(final PreparedStatement statement, final int index, final Color object) throws SQLException {\r\n\t\tif (object == null) {\r\n\t\t\tstatement.setNull(index, Types.NULL);\r\n\t\t} else {\r\n\t\t\tstatement.setInt(index, object.getRGB());\r\n\t\t}\r\n\t}\r\n\r\n\tprotected static void setAttributeOptional(final PreparedStatement statement, final int index, final String object) throws SQLException {\r\n\t\tif (object == null) {\r\n\t\t\tstatement.setNull(index, Types.NULL);\r\n\t\t} else {\r\n\t\t\tstatement.setString(index, object);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected static void setAttributeOptional(final PreparedStatement statement, final int index, final Collection<?> object) throws SQLException {\r\n\t\tif (object == null) {\r\n\t\t\tstatement.setNull(index, Types.NULL);\r\n\t\t} else {\r\n\t\t\tList<String> list = new ArrayList<>();\r\n\t\t\tfor (Object t : object) {\r\n\t\t\t\tlist.add(AbstractXmlWriter.valueOf(t));\r\n\t\t\t}\r\n\t\t\tstatement.setString(index, String.join(\",\", list));\r\n\t\t}\r\n\t\t\r\n\t}\r\n\r\n\tprotected static void setAttributeOptional(final PreparedStatement statement, final int index, final Date object) throws SQLException {\r\n\t\tif (object == null) {\r\n\t\t\tstatement.setNull(index, Types.NULL);\r\n\t\t} else {\r\n\t\t\tstatement.setLong(index, object.getTime());\r\n\t\t}\r\n\t}\r\n\r\n\tprotected static void setAttributeOptional(final PreparedStatement statement, final int index, final Enum<?> object) throws SQLException {\r\n\t\tif (object == null) {\r\n\t\t\tstatement.setNull(index, Types.NULL);\r\n\t\t} else {\r\n\t\t\tstatement.setString(index, object.name());\r\n\t\t}\r\n\t}\r\n\r\n\tprotected static void setAttributeOptional(final PreparedStatement statement, final int index, final Boolean object) throws SQLException {\r\n\t\tif (object == null) {\r\n\t\t\tstatement.setNull(index, Types.NULL);\r\n\t\t} else {\r\n\t\t\tstatement.setBoolean(index, object);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected static void setAttributeOptional(final PreparedStatement statement, final int index, final Integer object) throws SQLException {\r\n\t\tif (object == null) {\r\n\t\t\tstatement.setNull(index, Types.NULL);\r\n\t\t} else {\r\n\t\t\tstatement.setInt(index, object);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected static void setAttributeOptional(final PreparedStatement statement, final int index, final Long object) throws SQLException {\r\n\t\tif (object == null) {\r\n\t\t\tstatement.setNull(index, Types.NULL);\r\n\t\t} else {\r\n\t\t\tstatement.setLong(index, object);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected static void setAttributeOptional(final PreparedStatement statement, final int index, final Float object) throws SQLException {\r\n\t\tif (object == null) {\r\n\t\t\tstatement.setNull(index, Types.NULL);\r\n\t\t} else {\r\n\t\t\tstatement.setFloat(index, object);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected static void setAttributeOptional(final PreparedStatement statement, final int index, final Double object) throws SQLException {\r\n\t\tif (object == null) {\r\n\t\t\tstatement.setNull(index, Types.NULL);\r\n\t\t} else {\r\n\t\t\tstatement.setDouble(index, object);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected static void setAttributeOptional(final PreparedStatement statement, final int index, final Object object) throws SQLException {\r\n\t\tif (object == null) {\r\n\t\t\tstatement.setNull(index, Types.NULL);\r\n\t\t} else {\r\n\t\t\tstatement.setString(index, String.valueOf(object));\r\n\t\t}\r\n\t}\r\n\r\n\tprotected static void setAttribute(final PreparedStatement statement, final int index, final Color object) throws SQLException {\r\n\t\tnotNull(object);\r\n\t\tstatement.setInt(index, object.getRGB());\r\n\t}\r\n\r\n\tprotected static void setAttribute(final PreparedStatement statement, final int index, final String object) throws SQLException {\r\n\t\tnotNull(object);\r\n\t\tstatement.setString(index, object);\r\n\t}\r\n\r\n\tprotected static void setAttribute(final PreparedStatement statement, final int index, final Collection<?> object) throws SQLException {\r\n\t\tnotNull(object);\r\n\t\tList<String> list = new ArrayList<>();\r\n\t\tfor (Object t : object) {\r\n\t\t\tlist.add(AbstractXmlWriter.valueOf(t));\r\n\t\t}\r\n\t\tstatement.setString(index, String.join(\",\", list));\r\n\t}\r\n\r\n\tprotected static void setAttribute(final PreparedStatement statement, final int index, final Date object) throws SQLException {\r\n\t\tnotNull(object);\r\n\t\tstatement.setLong(index, object.getTime());\r\n\t}\r\n\r\n\tprotected static void setAttribute(final PreparedStatement statement, final int index, final Enum<?> object) throws SQLException {\r\n\t\tnotNull(object);\r\n\t\tstatement.setString(index, object.name());\r\n\t}\r\n\r\n\tprotected static void setAttribute(final PreparedStatement statement, final int index, final Boolean object) throws SQLException {\r\n\t\tnotNull(object);\r\n\t\tstatement.setBoolean(index, object);\r\n\t}\r\n\r\n\tprotected static void setAttribute(final PreparedStatement statement, final int index, final Integer object) throws SQLException {\r\n\t\tnotNull(object);\r\n\t\tstatement.setInt(index, object);\r\n\t}\r\n\r\n\tprotected static void setAttribute(final PreparedStatement statement, final int index, final Long object) throws SQLException {\r\n\t\tnotNull(object);\r\n\t\tstatement.setLong(index, object);\r\n\t}\r\n\r\n\tprotected static void setAttribute(final PreparedStatement statement, final int index, final Float object) throws SQLException {\r\n\t\tnotNull(object);\r\n\t\tstatement.setFloat(index, object);\r\n\t}\r\n\r\n\tprotected static void setAttribute(final PreparedStatement statement, final int index, final Double object) throws SQLException {\r\n\t\tnotNull(object);\r\n\t\tstatement.setDouble(index, object);\r\n\t}\r\n\r\n\tprotected static void setAttribute(final PreparedStatement statement, final int index, final Object object) throws SQLException {\r\n\t\tnotNull(object);\r\n\t\tstatement.setString(index, String.valueOf(object));\r\n\t}\r\n\r\n\tprivate static void notNull(final Object object) {\r\n\t\tif (object == null) {\r\n\t\t\tthrow new RuntimeException(\"Can't save null\");\r\n\t\t}\r\n\t}\r\n\r\n\tprotected Date getDateNotNull(ResultSet rs, String columnLabel) throws SQLException {\r\n\t\tlong time = rs.getLong(columnLabel);\r\n\t\tif (rs.wasNull()) {\r\n\t\t\treturn Settings.getNow();\r\n\t\t} else {\r\n\t\t\treturn new Date(time);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected long getLong(ResultSet rs, String columnLabel) throws SQLException {\r\n\t\treturn rs.getLong(columnLabel);\r\n\t}\r\n\r\n\tprotected String getString(ResultSet rs, String columnLabel) throws SQLException {\r\n\t\treturn rs.getString(columnLabel);\r\n\t}\r\n\r\n\tprotected Date getDateOptional(ResultSet rs, String columnLabel) throws SQLException {\r\n\t\tlong time = rs.getLong(columnLabel);\r\n\t\tif (rs.wasNull()) {\r\n\t\t\treturn null;\r\n\t\t} else {\r\n\t\t\treturn new Date(time);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected boolean getBooleanNotNull(ResultSet rs, String columnLabel, boolean defaultValue) throws SQLException {\r\n\t\tboolean value = rs.getBoolean(columnLabel);\r\n\t\tif (rs.wasNull()) {\r\n\t\t\treturn defaultValue;\r\n\t\t} else {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\tprotected String getStringOptional(ResultSet rs, String columnLabel) throws SQLException {\r\n\t\tString value = rs.getString(columnLabel);\r\n\t\tif (rs.wasNull()) {\r\n\t\t\treturn null;\r\n\t\t} else {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\tprotected String getStringNotNull(ResultSet rs, String columnLabel, String defaultValue) throws SQLException {\r\n\t\tString value = rs.getString(columnLabel);\r\n\t\tif (rs.wasNull()) {\r\n\t\t\treturn defaultValue;\r\n\t\t} else {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\tprotected Date getDate(ResultSet rs, String columnLabel) throws SQLException {\r\n\t\treturn new Date(rs.getLong(columnLabel));\r\n\t}\r\n\r\n\tprotected int getInt(ResultSet rs, String columnLabel) throws SQLException {\r\n\t\treturn rs.getInt(columnLabel);\r\n\t}\r\n\r\n\tprotected boolean getBoolean(ResultSet rs, String columnLabel) throws SQLException {\r\n\t\treturn rs.getBoolean(columnLabel);\r\n\t}\r\n\r\n\tprotected Integer getIntOptional(ResultSet rs, String columnLabel) throws SQLException {\r\n\t\tint value = rs.getInt(columnLabel);\r\n\t\tif (rs.wasNull()) {\r\n\t\t\treturn null;\r\n\t\t} else {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\tprotected Long getLongOptional(ResultSet rs, String columnLabel) throws SQLException {\r\n\t\tlong value = rs.getLong(columnLabel);\r\n\t\tif (rs.wasNull()) {\r\n\t\t\treturn null;\r\n\t\t} else {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\tprotected long getLongNotNull(ResultSet rs, String columnLabel, long defaultValue) throws SQLException {\r\n\t\tlong value = rs.getLong(columnLabel);\r\n\t\tif (rs.wasNull()) {\r\n\t\t\treturn defaultValue;\r\n\t\t} else {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\tprotected int getIntNotNull(ResultSet rs, String columnLabel, int defaultValue) throws SQLException {\r\n\t\tint value = rs.getInt(columnLabel);\r\n\t\tif (rs.wasNull()) {\r\n\t\t\treturn defaultValue;\r\n\t\t} else {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\tprotected Double getDoubleOptional(ResultSet rs, String columnLabel) throws SQLException {\r\n\t\tdouble value = rs.getDouble(columnLabel);\r\n\t\tif (rs.wasNull()) {\r\n\t\t\treturn null;\r\n\t\t} else {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\tprotected Float getFloatOptional(ResultSet rs, String columnLabel) throws SQLException {\r\n\t\tfloat value = rs.getFloat(columnLabel);\r\n\t\tif (rs.wasNull()) {\r\n\t\t\treturn null;\r\n\t\t} else {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\tprotected Float getFloat(ResultSet rs, String columnLabel) throws SQLException {\r\n\t\treturn rs.getFloat(columnLabel);\r\n\t}\r\n\r\n\tprotected double getDouble(ResultSet rs, String columnLabel) throws SQLException {\r\n\t\t return rs.getDouble(columnLabel);\r\n\t}\r\n\r\n\tprotected <T> void set(EsiOwner owner, Map<EsiOwner, Set<T>> map, T value) {\r\n\t\tSet<T> set = map.get(owner);\r\n\t\tif (set == null) {\r\n\t\t\tset = new HashSet<>();\r\n\t\t\tmap.put(owner, set);\r\n\t\t}\r\n\t\tset.add(value);\r\n\t}\r\n\r\n\tprotected <T> void list(EsiOwner owner, Map<EsiOwner, List<T>> map, T value) {\r\n\t\tList<T> list = map.get(owner);\r\n\t\tif (list == null) {\r\n\t\t\tlist = new ArrayList<>();\r\n\t\t\tmap.put(owner, list);\r\n\t\t}\r\n\t\tlist.add(value);\r\n\t}\r\n\r\n\tprotected <K, T> void map(EsiOwner owner, Map<EsiOwner, Map<K, T>> map, K key, T value) {\r\n\t\tMap<K, T> hmm = map.get(owner);\r\n\t\tif (hmm == null) {\r\n\t\t\thmm = new HashMap<>();\r\n\t\t\tmap.put(owner, hmm);\r\n\t\t}\r\n\t\thmm.put(key, value);\r\n\t}\r\n\r\n\tprotected static interface RowSize<E> {\r\n\t\tpublic int getSize(E owner);\r\n\t}\r\n\r\n\tpublic static class Rows {\r\n\r\n\t\tprivate final int size;\r\n\t\tprivate final PreparedStatement statement;\r\n\t\tint row = 0;\r\n\r\n\t\tpublic <E> Rows(PreparedStatement statement, Collection<E> esiOwners, RowSize<E> rowSize) {\r\n\t\t\tthis.statement = statement;\r\n\t\t\tint tempSize = 0;\r\n\t\t\tfor (E esiOwner : esiOwners) {\r\n\t\t\t\ttempSize += rowSize.getSize(esiOwner);\r\n\t\t\t}\r\n\t\t\tthis.size = tempSize;\r\n\t\t}\r\n\r\n\t\tpublic Rows(PreparedStatement statement, int size) {\r\n\t\t\tthis.statement = statement;\r\n\t\t\tthis.size = size;\r\n\t\t}\r\n\r\n\t\tpublic void addRow() throws SQLException {\r\n\t\t\tstatement.addBatch();\r\n\t\t\trow++;\r\n\t\t\tif (row % BATCH_SIZE == 0 || row == size) {\r\n\t\t\t\tstatement.executeBatch(); // Execute batch for every BATCH_SIZE items.\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/profile/ProfileTransactions.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.profile;\r\n\r\nimport java.sql.Connection;\r\nimport java.sql.PreparedStatement;\r\nimport java.sql.ResultSet;\r\nimport java.sql.SQLException;\r\nimport java.sql.Statement;\r\nimport java.util.Collection;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawTransaction;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.io.shared.DataConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.RawConverter;\r\n\r\n\r\npublic class ProfileTransactions  extends ProfileTable {\r\n\r\n\tprivate static final String TRANSACTIONS_TABLE = \"transactions\";\r\n\r\n\t@Override\r\n\tprotected boolean isUpdated() {\r\n\t\treturn Settings.get().isTransactionHistory();\r\n\t}\r\n\r\n\tprivate static void set(PreparedStatement statement, MyTransaction transaction, String accountID) throws SQLException {\r\n\t\tint index = 0;\r\n\t\tsetAttribute(statement, ++index, accountID);\r\n\t\tsetAttribute(statement, ++index, transaction.getDate());\r\n\t\tsetAttribute(statement, ++index, transaction.getTransactionID());\r\n\t\tsetAttribute(statement, ++index, transaction.getQuantity());\r\n\t\tsetAttribute(statement, ++index, transaction.getTypeID());\r\n\t\tsetAttribute(statement, ++index, transaction.getPrice());\r\n\t\tsetAttribute(statement, ++index, transaction.getClientID());\r\n\t\tsetAttribute(statement, ++index, transaction.getLocationID());\r\n\t\tsetAttribute(statement, ++index, RawConverter.fromTransactionIsBuy(transaction.isBuy()));\r\n\t\tsetAttribute(statement, ++index, RawConverter.fromTransactionIsPersonal(transaction.isPersonal()));\r\n\t\t//New\r\n\t\tsetAttribute(statement, ++index, transaction.getTransactionID());\r\n\t\tsetAttribute(statement, ++index, transaction.getClientID());\r\n\t\t//Extra\r\n\t\tsetAttribute(statement, ++index, transaction.getAccountKey());\r\n\t}\r\n\r\n\t/**\r\n\t * Transactions are immutable (IGNORE)\r\n\t * @param connection\r\n\t * @param accountID\r\n\t * @param transactions\r\n\t * @throws java.sql.SQLException\r\n\t */\r\n\tpublic static void updateTransactions(Connection connection, String accountID, Collection<MyTransaction> transactions) throws SQLException {\r\n\t\t//Tables exist\r\n\t\tif (!tableExist(connection, TRANSACTIONS_TABLE)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//Insert data\r\n\t\tString sql = \"INSERT OR IGNORE INTO \" + TRANSACTIONS_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\ttransactiondatetime,\"\r\n\t\t\t\t+ \"\ttransactionid,\"\r\n\t\t\t\t+ \"\tquantity,\"\r\n\t\t\t\t+ \"\ttypeid,\"\r\n\t\t\t\t+ \"\tprice,\"\r\n\t\t\t\t+ \"\tclientid,\"\r\n\t\t\t\t+ \"\tstationid,\"\r\n\t\t\t\t+ \"\ttransactiontype,\"\r\n\t\t\t\t+ \"\ttransactionfor,\"\r\n\t\t\t\t+ \"\tjournaltransactionid,\"\r\n\t\t\t\t+ \"\tclienttypeid,\"\r\n\t\t\t\t+ \"\taccountkey)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql)) {\r\n\t\t\tRows rows = new Rows(statement, transactions.size());\r\n\t\t\tfor (MyTransaction transaction : transactions) {\r\n\t\t\t\tset(statement, transaction, accountID);\r\n\t\t\t\trows.addRow();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void insert(Connection connection, List<EsiOwner> esiOwners) throws SQLException {\r\n\t\t//Delete all data\r\n\t\ttableDelete(connection, TRANSACTIONS_TABLE);\r\n\r\n\t\t//Insert data\r\n\t\tString sql = \"INSERT INTO \" + TRANSACTIONS_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\ttransactiondatetime,\"\r\n\t\t\t\t+ \"\ttransactionid,\"\r\n\t\t\t\t+ \"\tquantity,\"\r\n\t\t\t\t+ \"\ttypeid,\"\r\n\t\t\t\t+ \"\tprice,\"\r\n\t\t\t\t+ \"\tclientid,\"\r\n\t\t\t\t+ \"\tstationid,\"\r\n\t\t\t\t+ \"\ttransactiontype,\"\r\n\t\t\t\t+ \"\ttransactionfor,\"\r\n\t\t\t\t+ \"\tjournaltransactionid,\"\r\n\t\t\t\t+ \"\tclienttypeid,\"\r\n\t\t\t\t+ \"\taccountkey)\"\r\n\t\t\t\t+ \" VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql)) {\r\n\t\t\tRows rows = new Rows(statement, esiOwners, new RowSize<EsiOwner>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize(EsiOwner owner) {\r\n\t\t\t\t\treturn owner.getTransactions().size();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfor (EsiOwner owner : esiOwners) {\r\n\t\t\t\tfor (MyTransaction transaction : owner.getTransactions()) {\r\n\t\t\t\t\tset(statement, transaction, owner.getAccountID());\r\n\t\t\t\t\trows.addRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void select(Connection connection, List<EsiOwner> esiOwners, Map<String, EsiOwner> owners) throws SQLException {\r\n\t\tMap<EsiOwner, Set<MyTransaction>> transactions = new HashMap<>();\r\n\t\tString sql = \"SELECT * FROM \" + TRANSACTIONS_TABLE;\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tString accountID = getString(rs, \"accountid\");\r\n\t\t\t\tRawTransaction rawTransaction = RawTransaction.create();\r\n\t\t\t\tDate date = getDate(rs, \"transactiondatetime\");\r\n\t\t\t\tlong transactionID = getLong(rs, \"transactionid\");\r\n\t\t\t\tint quantity = getInt(rs, \"quantity\");\r\n\t\t\t\tint typeID = getInt(rs, \"typeid\");\r\n\t\t\t\tdouble price = getDouble(rs, \"price\");\r\n\t\t\t\tint clientID = getInt(rs, \"clientid\");\r\n\t\t\t\tlong locationID = getLong(rs, \"stationid\");\r\n\t\t\t\tString transactionType = getString(rs, \"transactiontype\");\r\n\t\t\t\tString transactionFor = getString(rs, \"transactionfor\");\r\n\r\n\t\t\t\t//New\r\n\t\t\t\tlong journalRefID = getLongNotNull(rs, \"journaltransactionid\", 0L);\r\n\r\n\t\t\t\t//Extra\r\n\t\t\t\tint accountKey = getIntNotNull(rs, \"accountkey\", 1000);\r\n\t\t\t\trawTransaction.setClientID(clientID);\r\n\t\t\t\trawTransaction.setDate(date);\r\n\t\t\t\trawTransaction.setBuy(RawConverter.toTransactionIsBuy(transactionType));\r\n\t\t\t\trawTransaction.setPersonal(RawConverter.toTransactionIsPersonal(transactionFor));\r\n\t\t\t\trawTransaction.setJournalRefID(journalRefID);\r\n\t\t\t\trawTransaction.setLocationID(locationID);\r\n\t\t\t\trawTransaction.setQuantity(quantity);\r\n\t\t\t\trawTransaction.setTransactionID(transactionID);\r\n\t\t\t\trawTransaction.setTypeID(typeID);\r\n\t\t\t\trawTransaction.setUnitPrice(price);\r\n\t\t\t\trawTransaction.setAccountKey(accountKey);\r\n\r\n\t\t\t\t\r\n\t\t\t\tEsiOwner owner = owners.get(accountID);\r\n\t\t\t\tif (owner == null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tset(owner, transactions, DataConverter.toMyTransaction(rawTransaction, owner));\r\n\t\t\t\r\n\t\t\t}\r\n\t\t\tfor (Map.Entry<EsiOwner, Set<MyTransaction>> entry : transactions.entrySet()) {\r\n\t\t\t\tentry.getKey().setTransactions(entry.getValue());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean isEmpty(Connection connection) throws SQLException {\r\n\t\treturn !tableExist(connection, TRANSACTIONS_TABLE);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void create(Connection connection) throws SQLException {\r\n\t\tif (!tableExist(connection, TRANSACTIONS_TABLE)) {\r\n\t\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + TRANSACTIONS_TABLE + \" (\\n\"\r\n\t\t\t\t\t+ \"\taccountid TEXT,\\n\"\r\n\t\t\t\t\t+ \"\ttransactiondatetime INTEGER,\"\r\n\t\t\t\t\t+ \"\ttransactionid INTEGER,\"\r\n\t\t\t\t\t+ \"\tquantity INTEGER,\"\r\n\t\t\t\t\t+ \"\ttypeid INTEGER,\"\r\n\t\t\t\t\t+ \"\tprice REAL,\"\r\n\t\t\t\t\t+ \"\tclientid INTEGER,\"\r\n\t\t\t\t\t+ \"\tstationid INTEGER,\"\r\n\t\t\t\t\t+ \"\ttransactiontype TEXT,\"\r\n\t\t\t\t\t+ \"\ttransactionfor TEXT,\"\r\n\t\t\t\t\t+ \"\tjournaltransactionid INTEGER,\"\r\n\t\t\t\t\t+ \"\tclienttypeid INTEGER,\"\r\n\t\t\t\t\t+ \"\taccountkey INTEGER,\"\r\n\t\t\t\t\t+ \"\tUNIQUE(accountid, transactionid, price)\\n\"\r\n\t\t\t\t\t+ \");\";\r\n\t\t\ttry (Statement statement = connection.createStatement()) {\r\n\t\t\t\tstatement.execute(sql);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/profile/ProfileWalletDivisions.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.profile;\r\n\r\nimport java.sql.Connection;\r\nimport java.sql.PreparedStatement;\r\nimport java.sql.ResultSet;\r\nimport java.sql.SQLException;\r\nimport java.sql.Statement;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\n\r\n\r\npublic class ProfileWalletDivisions extends ProfileTable {\r\n\r\n\tprivate static final String WALLET_DIVISIONS_TABLE = \"walletdivisions\";\r\n\r\n\t@Override\r\n\tprotected void insert(Connection connection, List<EsiOwner> esiOwners) throws SQLException {\r\n\t\t//Delete all data\r\n\t\ttableDelete(connection, WALLET_DIVISIONS_TABLE);\r\n\r\n\t\t//Insert data\r\n\t\tString sql = \"INSERT INTO \" + WALLET_DIVISIONS_TABLE + \" (\"\r\n\t\t\t\t+ \"\taccountid,\"\r\n\t\t\t\t+ \"\tid,\"\r\n\t\t\t\t+ \"\tname)\"\r\n\t\t\t\t+ \" VALUES (?,?,?)\";\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql)) {\r\n\t\t\tRows rows = new Rows(statement, esiOwners, new RowSize<EsiOwner>() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic int getSize(EsiOwner esiOwner) {\r\n\t\t\t\t\treturn esiOwner.getWalletDivisions().size();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfor (EsiOwner owner : esiOwners) {\r\n\t\t\t\tfor (Map.Entry<Integer, String> entry : owner.getWalletDivisions().entrySet()) {\r\n\t\t\t\t\tint index = 0;\r\n\t\t\t\t\tsetAttribute(statement, ++index, owner.getAccountID());\r\n\t\t\t\t\tsetAttribute(statement, ++index, entry.getKey());\r\n\t\t\t\t\tsetAttributeOptional(statement, ++index, entry.getValue());\r\n\t\t\t\t\trows.addRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void select(Connection connection, List<EsiOwner> esiOwners, Map<String, EsiOwner> owners) throws SQLException {\r\n\t\tMap<EsiOwner, Map<Integer, String>> divisions = new HashMap<>();\r\n\t\tString sql = \"SELECT * FROM \" + WALLET_DIVISIONS_TABLE;\r\n\t\ttry (PreparedStatement statement = connection.prepareStatement(sql);\r\n\t\t\t\tResultSet rs = statement.executeQuery();) {\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tString accountID = getString(rs, \"accountid\");\r\n\t\t\t\r\n\t\t\t\tint id = getInt(rs, \"id\");\r\n\t\t\t\tString name = getStringOptional(rs, \"name\");\r\n\t\t\t\t\r\n\t\t\t\tEsiOwner owner = owners.get(accountID);\r\n\t\t\t\tif (owner == null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tmap(owner, divisions, id, name);\r\n\t\t\t}\r\n\t\t\tfor (Map.Entry<EsiOwner, Map<Integer, String>> entry : divisions.entrySet()) {\r\n\t\t\t\tentry.getKey().setWalletDivisions(entry.getValue());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tprotected boolean isEmpty(Connection connection) throws SQLException {\r\n\t\treturn !tableExist(connection, WALLET_DIVISIONS_TABLE);\r\n\t}\r\n\r\n\t@Override\r\n\tprotected void create(Connection connection) throws SQLException {\r\n\t\tif (!tableExist(connection, WALLET_DIVISIONS_TABLE)) {\r\n\t\t\tString sql = \"CREATE TABLE IF NOT EXISTS \" + WALLET_DIVISIONS_TABLE + \" (\\n\"\r\n\t\t\t\t\t+ \"\taccountid TEXT,\\n\"\r\n\t\t\t\t\t+ \"\tid INTEGER,\"\r\n\t\t\t\t\t+ \"\tname TEXT,\"\r\n\t\t\t\t\t+ \"\tUNIQUE(accountid, id)\\n\"\r\n\t\t\t\t\t+ \");\";\r\n\t\t\ttry (Statement statement = connection.createStatement()) {\r\n\t\t\t\tstatement.execute(sql);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/text/AbstractTextImport.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.text;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\nimport javax.swing.Icon;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\r\n\r\n\r\npublic abstract class AbstractTextImport {\r\n\r\n\tprivate String name = \"\";\r\n\r\n\tpublic Map<Integer, Double> importText(String text) {\r\n\t\tMap<String, Double> input = doImport(text);\r\n\t\tif (input == null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tMap<String, Integer> lookup = new HashMap<>();\r\n\t\tfor (Item item : StaticData.get().getItems().values()) {\r\n\t\t\tlookup.put(item.getTypeName().toLowerCase(), item.getTypeID());\r\n\t\t}\r\n\t\tMap<Integer, Double> data = new HashMap<>();\r\n\t\tfor (Map.Entry<String, Double> entry : input.entrySet()) {\r\n\t\t\tInteger typeID = lookup.get(entry.getKey().toLowerCase());\r\n\t\t\tif (typeID != null) {\r\n\t\t\t\tdata.put(typeID, entry.getValue());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn data;\r\n\t}\r\n\r\n\tprotected abstract Map<String, Double> doImport(String data);\r\n\tpublic abstract String getExample();\r\n\tpublic abstract Icon getIcon();\r\n\tpublic abstract String getType();\r\n\r\n\tpublic String getName() {\r\n\t\treturn name;\r\n\t}\r\n\r\n\tprotected void setName(String name) {\r\n\t\tthis.name = name;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/text/ImportEft.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.text;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Arrays;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.regex.Matcher;\r\nimport java.util.regex.Pattern;\r\nimport javax.swing.Icon;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\npublic class ImportEft extends AbstractTextImport {\r\n\r\n\tprotected ImportEft() { }\r\n\r\n\t@Override\r\n\tpublic String getExample() {\r\n\t\treturn \"[Rifter, Rifter alpha]\\n\"\r\n\t\t\t\t+ \"\\n\"\r\n\t\t\t\t+ \"200mm AutoCannon I\\n\"\r\n\t\t\t\t+ \"200mm AutoCannon I\\n\"\r\n\t\t\t\t+ \"200mm AutoCannon I\\n\"\r\n\t\t\t\t+ \"\\n\"\r\n\t\t\t\t+ \"1MN Afterburner I\\n\"\r\n\t\t\t\t+ \"Stasis Webifier I\\n\"\r\n\t\t\t\t+ \"Small Capacitor Booster I\\n\"\r\n\t\t\t\t+ \"\\n\"\r\n\t\t\t\t+ \"Gyrostabilizer I\\n\"\r\n\t\t\t\t+ \"Small Armor Repairer I\\n\"\r\n\t\t\t\t+ \"Damage Control I\\n\"\r\n\t\t\t\t+ \"\\n\"\r\n\t\t\t\t+ \"Small Projectile Collision Accelerator I\\n\"\r\n\t\t\t\t+ \"Small Projectile Burst Aerator I\\n\"\r\n\t\t\t\t+ \"\\n\"\r\n\t\t\t\t+ \"Cap Booster 200 x11\\n\"\r\n\t\t\t\t+ \"Fusion S x2360\"\r\n\t\t\t\t;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Icon getIcon() {\r\n\t\treturn Images.TOOL_SHIP_LOADOUTS.getIcon();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getType() {\r\n\t\treturn GuiShared.get().importEft();\r\n\t}\r\n\r\n\t@Override\r\n\tprotected Map<String, Double> doImport(String data) {\r\n\t\t//Format and split\r\n\t\tList<String> modules = new ArrayList<>(Arrays.asList(data.split(\"[\\r\\n]+\")));\r\n\r\n\t\tif (modules.isEmpty()) {\r\n\t\t\treturn null; //Malformed\r\n\t\t}\r\n\r\n\t\tif (!modules.get(0).startsWith(\"[\") || !modules.get(0).contains(\",\") || !modules.get(0).endsWith(\"]\")) {\r\n\t\t\treturn null;//Malformed\r\n\t\t}\r\n\t\t//Get name of fit\r\n\t\tString[] first = modules.remove(0).split(\",\");\r\n\t\tif (first.length != 2) {\r\n\t\t\treturn null; //Malformed\r\n\t\t}\r\n\t\tString ship = first[0].replace(\"[\", \"\").replace(\"]\", \"\").trim();\r\n\t\tString name = first[1].replace(\"[\", \"\").replace(\"]\", \"\").trim();\r\n\t\tmodules.add(0, ship);\r\n\t\tsetName(name);\r\n\t\tMap<String, Item> typeNames = new HashMap<>();\r\n\t\tfor (Item item : StaticData.get().getItems().values()) {\r\n\t\t\ttypeNames.put(item.getTypeName(), item);\r\n\t\t}\r\n\r\n\t\t//Add modules\r\n\t\tMap<String, Double> items = new HashMap<>();\r\n\t\tfor (String line : modules) {\r\n\t\t\tline = line.trim(); //Format line\r\n\t\t\tif (line.startsWith(\"[\")) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tdouble count = getNumber(line);\r\n\t\t\tString module = line.replaceAll(\"x\\\\d+$\", \"\").trim();\r\n\t\t\tif (typeNames.containsKey(module)) {\r\n\t\t\t\tadd(items, module, count);\r\n\t\t\t} else if (line.contains(\",\")) { //Handle module and charge on the same line\r\n\t\t\t\tint index = line.lastIndexOf(\",\"); //Charge is always after the last ,\r\n\t\t\t\tif (index > 0 && index + 1 < line.length()) {\r\n\t\t\t\t\t//Module\r\n\t\t\t\t\tmodule = line.substring(0, index).trim(); //Get module part of the line\r\n\t\t\t\t\tcount = getNumber(module); //count\r\n\t\t\t\t\tmodule = module.replaceAll(\"x\\\\d+$\", \"\").trim(); //Remove number\r\n\t\t\t\t\tItem moduleItem = typeNames.get(module);\r\n\t\t\t\t\tif (moduleItem != null) { //module exist\r\n\t\t\t\t\t\tadd(items, module, count);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//Charge\r\n\t\t\t\t\tString charge = line.substring(index + 1).trim(); //Get the charge part of the line\r\n\t\t\t\t\tItem chargeItem = typeNames.get(charge);\r\n\t\t\t\t\tif (chargeItem != null && moduleItem != null) { //charge exist\r\n\t\t\t\t\t\tdouble chargeCount = Math.floor(moduleItem.getCapacity() / chargeItem.getVolume());\r\n\t\t\t\t\t\tadd(items, charge, chargeCount);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn items;\r\n\t}\r\n\r\n\tprivate void add(final Map<String, Double> items, final String module, final double count) {\r\n\t\tif (module.isEmpty()) { //Skip empty lines\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t//Search for item name\r\n\t\tDouble d = items.get(module);\r\n\t\tif (d == null) {\r\n\t\t\td = 0.0;\r\n\t\t}\r\n\t\titems.put(module, count + d);\r\n\t}\r\n\r\n\tprivate double getNumber(String line) {\r\n\t\t//Find x[Number] - used for drones and cargo\r\n\t\tPattern p = Pattern.compile(\"x\\\\d+$\");\r\n\t\tMatcher m = p.matcher(line);\r\n\t\tdouble count = 0;\r\n\t\twhile (m.find()) {\r\n\t\t\tString group = m.group().replace(\"x\", \"\");\r\n\t\t\tcount = count + Long.valueOf(group);\r\n\t\t}\r\n\t\tif (count == 0) {\r\n\t\t\tcount = 1;\r\n\t\t}\r\n\t\treturn count;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/text/ImportEveMultibuy.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.text;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Arrays;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport javax.swing.Icon;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\npublic class ImportEveMultibuy extends AbstractTextImport {\r\n\r\n\tprotected ImportEveMultibuy() { }\r\n\r\n\t@Override\r\n\tpublic String getExample() {\r\n\t\treturn \"Supported formats:\\n\"\r\n\t\t\t\t+ \"\\n\"\r\n\t\t\t\t+ \"<item name><space><number><whatever>\\n\"\r\n\t\t\t\t+ \"Hammerhead II\t10\t1.189.997,05\t11.899.970,50\\n\"\r\n\t\t\t\t+ \"\\n\"\r\n\t\t\t\t+ \"<item name><space>x<number>\\n\"\r\n\t\t\t\t+ \"Veldspar\tx10\\n\"\r\n\t\t\t\t+ \"\\n\"\r\n\t\t\t\t+ \"<number><space><item name>\\n\"\r\n\t\t\t\t+ \"10 Veldspar\\n\"\r\n\t\t\t\t+ \"\\n\"\r\n\t\t\t\t+ \"x<number><space><item name>\\n\"\r\n\t\t\t\t+ \"x10 Veldspar\\n\"\r\n\t\t\t\t;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Icon getIcon() {\r\n\t\treturn Images.MISC_EVE.getIcon();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getType() {\r\n\t\treturn GuiShared.get().importEveMultibuy();\r\n\t}\r\n\r\n\t@Override\r\n\tprotected Map<String, Double> doImport(String data) {\r\n\t\tList<String> lines = new ArrayList<>(Arrays.asList(data.split(\"[\\r\\n]+\")));\r\n\t\tMap<String, Double> items = new HashMap<>();\r\n\t\tfor (String line : lines) {\r\n\t\t\tString[] values = line.split(\"[\\\\s]\");\r\n\r\n\t\t\tif (values.length < 2) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tint countIndex = findCountIndex(values);\r\n\t\t\tif (countIndex == -1) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tString countStr = values[countIndex];\r\n\t\t\tif (countStr.startsWith(\"x\")) {\r\n\t\t\t\tcountStr = countStr.substring(1);\r\n\t\t\t}\r\n\r\n\t\t\tdouble count;\r\n\t\t\ttry {\r\n\t\t\t\tcount = Integer.parseInt(countStr);\r\n\t\t\t} catch (NumberFormatException ex) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tString item;\r\n\t\t\tif (countIndex == 0) { //leading count\r\n\t\t\t\titem = String.join(\" \", Arrays.copyOfRange(values, 1, values.length));\r\n\t\t\t} else { //trailing count\r\n\t\t\t\titem = String.join(\" \", Arrays.copyOfRange(values, 0, countIndex));\r\n\t\t\t}\r\n\r\n\t\t\t//Search for item name\r\n\t\t\tDouble d = items.get(item);\r\n\t\t\tif (d == null) {\r\n\t\t\t\td = 0.0;\r\n\t\t\t}\r\n\t\t\titems.put(item, count + d);\r\n\t\t}\r\n\t\treturn items;\r\n\t}\r\n\r\n\tprivate int findCountIndex(String[] values) {\r\n\t\t// The idea here is to look through first and last 3 values we got and find first one which consists only of\r\n\t\t// digits or x and digits\r\n\t\t// It is safe to assume that found value corresponds to item count because it can't be part of item name\r\n\r\n\t\tString itemCountRegex = \"^x?(\\\\d+)$\";\r\n\r\n\t\tint n = values.length;\r\n\t\tfor (int i = n - 3; i < n; ++i) {\r\n\t\t\tif (i <= 0) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (values[i].matches(itemCountRegex)) {\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (values[0].matches(itemCountRegex)) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\treturn -1;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/text/ImportIskPerHour.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.io.local.text;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\nimport java.util.regex.Pattern;\r\nimport javax.swing.Icon;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\npublic class ImportIskPerHour extends AbstractTextImport {\r\n\tprivate static final Integer MATERIAL = 0;\r\n\tprivate static final Integer QUANTITY = 1;\r\n\r\n\tprotected ImportIskPerHour() { }\r\n\r\n\t@Override\r\n\tpublic String getExample() {\r\n\t\treturn \"Supported formats:\\n\"\r\n\t\t\t\t+ \"\\n\"\r\n\t\t\t\t//Default\r\n\t\t\t\t+ \"<item name><me> - <number>\\n\"\r\n\t\t\t\t+ \"10000MN Afterburner I (ME: 0, NumBPs: 1) - 1\\n\"\r\n\t\t\t\t+ \"\\n\"\r\n\t\t\t\t//EveList\r\n\t\t\t\t+ \"<item name><space><number>\\n\"\r\n\t\t\t\t+ \"Tritanium 2932280\\n\"\r\n\t\t\t\t+ \"\\n\"\r\n\t\t\t\t//Csv |\r\n\t\t\t\t+ \"<headers>\\n\"\r\n\t\t\t\t+ \"<item name>|<number>|<whatever>\\n\"\r\n\t\t\t\t+ \"Material|Quantity|Cost Per Item|Min Sell|Max Buy|Buy Type|Total m3|Isk/m3|TotalCost\\n\"\r\n\t\t\t\t+ \"Tritanium|2932280.00|0.00|0.00|0.00|Unknown|29322.80|0.00|0.00\\n\"\r\n\t\t\t\t+ \"\\n\"\r\n\t\t\t\t//Csv ,\r\n\t\t\t\t+ \"<headers>\\n\"\r\n\t\t\t\t+ \"<item name>,<number>,<whatever>\\n\"\r\n\t\t\t\t+ \"Material, Quantity, Cost Per Item, Total Cost, Location\\n\"\r\n\t\t\t\t+ \"Tritanium, 2932280, 2, 5864560\\n\"\r\n\t\t\t\t+ \"\\n\"\r\n\t\t\t\t//Csv ;\r\n\t\t\t\t+ \"<headers>\\n\"\r\n\t\t\t\t+ \"<item name>;<number>;<whatever>\\n\"\r\n\t\t\t\t+ \"Material; Quantity; Cost Per Item; Total Cost; Location\\n\"\r\n\t\t\t\t+ \"Tritanium; 2932280; 2; 5864560\\n\"\r\n\t\t\t\t;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Icon getIcon() {\r\n\t\treturn Images.TOOL_VALUES.getIcon();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getType() {\r\n\t\treturn GuiShared.get().importIskPerHour();\r\n\t}\r\n\r\n\t@Override\r\n\tprotected Map<String, Double> doImport(String text) {\r\n\t\t//Get lines:\r\n\t\tString[] lines = text.split(\"[\\r\\n]+\");\r\n\t\t//Find format\r\n\t\tboolean defaultCopy = text.contains(\"Material - Quantity\");\r\n\t\tboolean defaultFile = text.contains(\"Material|\");\r\n\t\tboolean csv = text.contains(\"Material,\");\r\n\t\tboolean ssv = text.contains(\"Material;\");\r\n\r\n\t\tif (defaultCopy) {\r\n\t\t\treturn processDefaultCopy(lines);\r\n\t\t} else if (defaultFile) {\r\n\t\t\treturn processCsv(lines, \"\\\\|\", false);\r\n\t\t} else if (csv) {\r\n\t\t\treturn processCsv(lines, \",\", false);\r\n\t\t} else if (ssv) {\r\n\t\t\treturn processCsv(lines, \";\", true);\r\n\t\t} else { //Eve List\r\n\t\t\treturn processEveList(lines);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Map<String, Double> processDefaultCopy(String[] lines) {\r\n\t\tMap<String, Double> data = new HashMap<>();\r\n\t\tfor (String line : lines) {\r\n\t\t\tif (line.trim().isEmpty() || (line.contains(\":\") && !line.contains(\" (\") && !line.contains(\") \")) || line.contains(\"Material - Quantity\")) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tint end = line.lastIndexOf(\" - \");\r\n\t\t\tif (end < 0) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\tString name = line.substring(0, end);\r\n\t\t\tname = name.replaceAll(\"\\\\([^\\\\)]+\\\\)\", \"\").trim();\r\n\t\t\tString number = line.substring(end + 3).trim().replace(\",\", \"\");\r\n\t\t\tdouble d;\r\n\t\t\ttry {\r\n\t\t\t\td = Double.valueOf(number);\r\n\t\t\t} catch (NumberFormatException ex) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\tDouble dd = data.get(name);\r\n\t\t\tif (dd != null) {\r\n\t\t\t\td = d + dd;\r\n\t\t\t}\r\n\t\t\tdata.put(name, d);\r\n\t\t}\r\n\t\treturn data;\r\n\t}\r\n\r\n\tprivate Map<String, Double> processCsv(String[] lines, String separator, boolean decimalComma) {\r\n\t\tMap<String, Double> data = new HashMap<>();\r\n\t\tfor (String line : lines) {\r\n\t\t\tif (line.trim().isEmpty() || line.contains(\":\") || !Pattern.compile(separator).matcher(line).find() || line.startsWith(\"Material\") || line.startsWith(\"Item\") || line.startsWith(\"Build Item\")) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tString[] values = line.split(separator);\r\n\t\t\tString name = values[MATERIAL].trim();\r\n\t\t\tString number = values[QUANTITY].trim();\r\n\t\t\tif (decimalComma) {\r\n\t\t\t\tnumber = number.replace(\".\", \"\").replace(\",\", \".\");\r\n\t\t\t}\r\n\t\t\tdouble d;\r\n\t\t\ttry {\r\n\t\t\t\td = Double.valueOf(number);\r\n\t\t\t} catch (NumberFormatException ex) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\tDouble dd = data.get(name);\r\n\t\t\tif (dd != null) {\r\n\t\t\t\td = d + dd;\r\n\t\t\t}\r\n\t\t\tdata.put(name, d);\r\n\t\t}\r\n\t\treturn data;\r\n\t}\r\n\r\n\tprivate Map<String, Double> processEveList(String[] lines) {\r\n\t\tMap<String, Double> data = new HashMap<>();\r\n\t\tfor (String line : lines) {\r\n\t\t\tif (line.trim().isEmpty()) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tint end = line.lastIndexOf(\" \");\r\n\t\t\tif (end < 0) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\tString name = line.substring(0, end);\r\n\t\t\tString number = line.substring(end + 1);\r\n\t\t\tdouble d;\r\n\t\t\ttry {\r\n\t\t\t\td = Double.valueOf(number);\r\n\t\t\t} catch (NumberFormatException ex) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\tDouble dd = data.get(name);\r\n\t\t\tif (dd != null) {\r\n\t\t\t\td = d + dd;\r\n\t\t\t}\r\n\t\t\tdata.put(name, d);\r\n\t\t}\r\n\t\treturn data;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/text/ImportShoppingList.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.text;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Arrays;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.regex.Matcher;\r\nimport java.util.regex.Pattern;\r\nimport javax.swing.Icon;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\n\r\n\r\npublic class ImportShoppingList extends AbstractTextImport {\r\n\r\n\tprotected ImportShoppingList() { }\r\n\r\n\t@Override\r\n\tpublic String getExample() {\r\n\t\treturn \"Stockpiles:\\n\"\r\n\t\t\t\t+ \"1x Rifter alpha\\n\"\r\n\t\t\t\t+ \"\\n\"\r\n\t\t\t\t+ \"Items:\\n\"\r\n\t\t\t\t+ \"3x 200mm AutoCannon I\\n\"\r\n\t\t\t\t+ \"1x Small Projectile Collision Accelerator I\\n\"\r\n\t\t\t\t+ \"1x Gyrostabilizer I\\n\"\r\n\t\t\t\t+ \"1x Small Projectile Burst Aerator I\\n\"\r\n\t\t\t\t+ \"1x Small Armor Repairer I\\n\"\r\n\t\t\t\t+ \"1x Rifter\\n\"\r\n\t\t\t\t+ \"1x Stasis Webifier I\\n\"\r\n\t\t\t\t+ \"1x Small Capacitor Booster I\\n\"\r\n\t\t\t\t+ \"1x Damage Control I\\n\"\r\n\t\t\t\t+ \"11x Cap Booster 200\\n\"\r\n\t\t\t\t+ \"2.360x Fusion S\\n\"\r\n\t\t\t\t+ \"1x 1MN Afterburner I\\n\"\r\n\t\t\t\t+ \"\\n\"\r\n\t\t\t\t+ \"Total m3 to be hauled: 2.648,90\\n\"\r\n\t\t\t\t+ \"Estimated market value: 256.613,00 isk\"\r\n\t\t\t\t;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Icon getIcon() {\r\n\t\treturn Images.STOCKPILE_SHOPPING_LIST.getIcon();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getType() {\r\n\t\treturn GuiShared.get().importStockpilesShoppingList();\r\n\t}\r\n\r\n\t@Override\r\n\tprotected Map<String, Double> doImport(String data) {\r\n\t\tList<String> lines = new ArrayList<>(Arrays.asList(data.split(\"[\\r\\n]+\")));\r\n\t\tMap<String, Double> items = new HashMap<>();\r\n\t\tif (!lines.isEmpty()) {\r\n\t\t\tsetName(lines.get(0));\r\n\t\t}\r\n\t\tfor (String line : lines) {\r\n\t\t\tif (!Character.isDigit(line.charAt(0))) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tPattern p = Pattern.compile(\"^\\\\d+x\");\r\n\t\t\tMatcher m = p.matcher(line);\r\n\t\t\tdouble count = 0;\r\n\t\t\twhile (m.find()) {\r\n\t\t\t\tString group = m.group().replace(\"x\", \"\");\r\n\t\t\t\tcount = count + Long.valueOf(group);\r\n\t\t\t}\r\n\t\t\tif (count == 0) {\r\n\t\t\t\tcount = 1;\r\n\t\t\t}\r\n\t\t\tString module = line.replaceAll(\"^\\\\d+x\", \"\").trim();\r\n\t\t\tif (module.isEmpty()) { //Skip empty lines\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\t//Search for item name\r\n\t\t\tDouble d = items.get(module);\r\n\t\t\tif (d == null) {\r\n\t\t\t\td = 0.0;\r\n\t\t\t}\r\n\t\t\titems.put(module, count + d);\r\n\t\t}\r\n\t\treturn items;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/text/TextImportType.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.text;\r\n\r\nimport java.util.Map;\r\nimport javax.swing.Icon;\r\nimport net.nikr.eve.jeveasset.gui.shared.components.JTextDialog.SimpleTextImport;\r\n\r\n\r\npublic enum TextImportType implements SimpleTextImport {\r\n\tEVE_MULTIBUY(new ImportEveMultibuy()),\r\n\tEFT(new ImportEft()),\r\n\tSTCOKPILE_SHOPPING_LIST(new ImportShoppingList()),\r\n\tISK_PER_HOUR(new ImportIskPerHour());\r\n\r\n\tprivate final AbstractTextImport textImport;\r\n\r\n\tprivate TextImportType(AbstractTextImport textImport) {\r\n\t\tthis.textImport = textImport;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getExample() {\r\n\t\treturn textImport.getExample();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Icon getIcon() {\r\n\t\treturn textImport.getIcon();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getType() {\r\n\t\treturn textImport.getType();\r\n\t}\r\n\r\n\tpublic String getName() {\r\n\t\treturn textImport.getName();\r\n\t}\r\n\r\n\tpublic Map<Integer, Double> importText(String text) {\r\n\t\treturn textImport.importText(text);\r\n\t}\t\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/update/LocalUpdate.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.io.local.update;\n\nimport net.nikr.eve.jeveasset.io.local.XmlException;\n\n/**\n *\n * @author Candle\n */\npublic interface LocalUpdate {\n\n\tvoid performUpdate(String path) throws XmlException;\n\tint getStart();\n\tint getEnd();\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/update/Update.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.io.local.update;\n\nimport java.io.File;\nimport java.io.IOException;\nimport java.util.Iterator;\nimport java.util.List;\nimport net.nikr.eve.jeveasset.io.local.AbstractXmlReader;\nimport net.nikr.eve.jeveasset.io.local.FileLock.SafeFileIO;\nimport net.nikr.eve.jeveasset.io.local.SettingsReader;\nimport net.nikr.eve.jeveasset.io.local.XmlException;\nimport net.nikr.eve.jeveasset.io.local.update.updates.Update1To2;\nimport org.dom4j.Attribute;\nimport org.dom4j.Document;\nimport org.dom4j.DocumentException;\nimport org.dom4j.DocumentHelper;\nimport org.dom4j.Element;\nimport org.dom4j.XPath;\nimport org.dom4j.io.OutputFormat;\nimport org.dom4j.io.SAXReader;\nimport org.dom4j.io.XMLWriter;\nimport org.dom4j.tree.DefaultAttribute;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.w3c.dom.Node;\n\n/**\n *\n * @author Candle\n */\npublic class Update extends AbstractXmlReader<Integer> {\n\tprivate static final Logger LOG = LoggerFactory.getLogger(Update.class);\n\n\t@Override\n\tprotected Integer parse(org.w3c.dom.Element element) throws XmlException {\n\t\tif (element.getNodeName().equals(\"settings\")) {\n\t\t\tif (haveAttribute((Node) element, \"version\")) {\n\t\t\t\treturn getInt((Node) element, \"version\");\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new XmlException(\"Wrong root element name.\");\n\t\t}\n\t\treturn 1;\n\t}\n\n\t@Override\n\tprotected Integer failValue() {\n\t\treturn 1;\n\t}\n\n\t@Override\n\tprotected Integer doNotExistValue() {\n\t\treturn SettingsReader.SETTINGS_VERSION;\n\t}\n\n\tvoid setVersion(final File xml, final int newVersion) throws DocumentException {\n\t\ttry (SafeFileIO io = new SafeFileIO(xml)){\n\t\t\tSAXReader xmlReader = new SAXReader();\n\t\t\tDocument doc = xmlReader.read(io.getFileInputStream());\n\n\t\t\tXPath xpathSelector = DocumentHelper.createXPath(\"/settings\");\n\t\t\tList<?> results = xpathSelector.selectNodes(doc);\n\t\t\tfor (Iterator<?> iter = results.iterator(); iter.hasNext();) {\n\t\t\t\tElement element = (Element) iter.next();\n\t\t\t\tAttribute attr = element.attribute(\"version\");\n\t\t\t\tif (attr == null) {\n\t\t\t\t\telement.add(new DefaultAttribute(\"version\", String.valueOf(newVersion)));\n\t\t\t\t} else {\n\t\t\t\t\tattr.setText(String.valueOf(newVersion));\n\t\t\t\t}\n\t\t\t}\n\t\t\tOutputFormat outformat = OutputFormat.createPrettyPrint();\n\t\t\toutformat.setEncoding(\"UTF-16\");\n\t\t\tXMLWriter writer = new XMLWriter(io.getFileOutputStream(), outformat);\n\t\t\twriter.write(doc);\n\t\t\twriter.flush();\n\t\t} catch (IOException ioe) {\n\t\t\tLOG.error(\"Failed to update the serttings.xml version number\", ioe);\n\t\t\tthrow new RuntimeException(ioe);\n\t\t}\n\t}\n\n\t/**\n\t * TODO When more updates are added convert this to a graph-based\n\t * search for a suitable list of updates and then perform the updates\n\t * in the correct order. - Candle 2010-09-19\n\t * @param requiredVersion current version\n\t * @param path settings path\n\t * @throws net.nikr.eve.jeveasset.io.local.XmlException on any error\n\t */\n\tpublic void performUpdates(final int requiredVersion, final String path) throws XmlException {\n\t\tFile xml = new File(path);\n\t\tif (!xml.exists()) {\n\t\t\tLOG.info(\"No settings.xml file found - nothing to update\");\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tint currentVersion = read(\"update settings\", path, AbstractXmlReader.XmlType.DYNAMIC);\n\t\t\tif (requiredVersion > currentVersion) {\n\t\t\t\tLOG.info(\"settings.xml are out of date, updating.\");\n\t\t\t\tUpdate1To2 update = new Update1To2();\n\t\t\t\tupdate.performUpdate(path);\n\t\t\t\tsetVersion(new File(path), requiredVersion);\n\t\t\t} else {\n\t\t\t\tLOG.info(\"settings.xml are up to date.\");\n\t\t\t}\n\t\t} catch (DocumentException ex) {\n\t\t\tLOG.warn(\"Failed to update settings\", ex);\n\t\t\tthrow new XmlException(ex);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/local/update/updates/Update1To2.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.io.local.update.updates;\n\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.Iterator;\nimport java.util.List;\nimport net.nikr.eve.jeveasset.data.settings.PriceDataSettings.PriceMode;\nimport net.nikr.eve.jeveasset.io.local.FileLock.SafeFileIO;\nimport net.nikr.eve.jeveasset.io.local.XmlException;\nimport net.nikr.eve.jeveasset.io.local.update.LocalUpdate;\nimport org.dom4j.Attribute;\nimport org.dom4j.Document;\nimport org.dom4j.DocumentException;\nimport org.dom4j.DocumentHelper;\nimport org.dom4j.Element;\nimport org.dom4j.XPath;\nimport org.dom4j.io.OutputFormat;\nimport org.dom4j.io.SAXReader;\nimport org.dom4j.io.XMLWriter;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n/**\n * Simple script to modify the settings, changing the.\n *\n *\n * @author Candle\n */\npublic class Update1To2 implements LocalUpdate {\n\tprivate static final Logger LOG = LoggerFactory.getLogger(Update1To2.class);\n\n\t@Override\n\tpublic void performUpdate(final String path) throws XmlException {\n\t\tLOG.info(\"Performing update from v1 to v2\");\n\t\tLOG.info(\" - modifies files:\");\n\t\tLOG.info(\"  - settings.xml\");\n\t\ttry (SafeFileIO io = new SafeFileIO(path)){\n\t\t\t// We need to update the settings\n\t\t\t// current changes are:\n\t\t\t// 1. XPath: /settings/filters/filter/row[@mode]\n\t\t\t// changed from (e.g.) \"Contains\" to the enum value name in AssetFilter.Mode\n\t\t\t// 2. settings/marketstat[@defaultprice] --> another enum: Asset.PriceMode\n\t\t\t// 3. settings/columns/column --> settings/tables/table/column\n\t\t\t// settings/flags/flag --> removed two flags (now in settings/tables/table)\n\t\t\tSAXReader xmlReader = new SAXReader();\n\t\t\tDocument doc = xmlReader.read(io.getFileInputStream());\n\t\t\tconvertDefaultPriceModes(doc);\n\t\t\tconvertModes(doc);\n\t\t\tconvertTableSettings(doc);\n\t\t\tOutputFormat outformat = OutputFormat.createPrettyPrint();\n\t\t\toutformat.setEncoding(\"UTF-16\");\n\t\t\tXMLWriter writer = new XMLWriter(io.getFileOutputStream(), outformat);\n\t\t\twriter.write(doc);\n\t\t\twriter.flush();\n\t\t} catch (IOException ex) {\n\t\t\tLOG.error(\"\", ex);\n\t\t\tthrow new XmlException(ex);\n\t\t} catch (DocumentException ex) {\n\t\t\tLOG.error(\"\", ex);\n\t\t\tthrow new XmlException(ex);\n\t\t}\n\t}\n\n\tprivate void convertModes(final Document doc) {\n\t\tXPath xpathSelector = DocumentHelper.createXPath(\"/settings/filters/filter/row\");\n\t\tList<?> results = xpathSelector.selectNodes(doc);\n\t\tfor (Iterator<?> iter = results.iterator(); iter.hasNext();) {\n\t\t\tElement elem = (Element) iter.next();\n\t\t\tAttribute attr = elem.attribute(\"mode\");\n\t\t\tString currentValue = attr.getText();\n\t\t\tattr.setText(convertMode(currentValue));\n\t\t}\n\t}\n\n\tprivate void convertDefaultPriceModes(final Document doc) {\n\t\tXPath xpathSelector = DocumentHelper.createXPath(\"/settings/marketstat\");\n\t\tList<?> results = xpathSelector.selectNodes(doc);\n\t\tfor (Iterator<?> iter = results.iterator(); iter.hasNext();) {\n\t\t\tElement elem = (Element) iter.next();\n\t\t\tAttribute attr = elem.attribute(\"defaultprice\");\n\t\t\tif (attr != null) { //May not exist (in early versions)\n\t\t\t\tString currentValue = attr.getText();\n\t\t\t\tattr.setText(convertDefaultPriceMode(currentValue));\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void convertTableSettings(final Document doc) {\n\t\tXPath xpathSelector = DocumentHelper.createXPath(\"/settings/columns/column\");\n\t\tList<?> results = xpathSelector.selectNodes(doc);\n\t\tList<String> tableColumnNames = new ArrayList<>();\n\t\tList<String> tableColumnVisible = new ArrayList<>();\n\t\tfor (Iterator<?> iter = results.iterator(); iter.hasNext();) {\n\t\t\tElement element = (Element) iter.next();\n\t\t\tAttribute name = element.attribute(\"name\");\n\t\t\tAttribute visible = element.attribute(\"visible\");\n\t\t\ttableColumnNames.add(name.getText());\n\t\t\tif (visible.getText().equals(\"true\")) {\n\t\t\t\ttableColumnVisible.add(name.getText());\n\t\t\t}\n\t\t}\n\t\tString mode = convertFlag(doc);\n\t\twriteTableSettings(doc, mode, tableColumnNames, tableColumnVisible);\n\t}\n\n\tprivate String convertDefaultPriceMode(final String oldVal) {\n\t\tif (oldVal.startsWith(\"PRICE_\")) {\n\t\t\treturn oldVal;\n\t\t}\n\t\tString convert = oldVal.toLowerCase();\n\t\tif (convert.contains(\"midpoint\")) {\n\t\t\treturn PriceMode.PRICE_MIDPOINT.name();\n\t\t}\n\t\tif (convert.contains(\"sell average\")) {\n\t\t\treturn PriceMode.PRICE_SELL_AVG.name();\n\t\t}\n\t\tif (convert.contains(\"sell median\")) {\n\t\t\treturn PriceMode.PRICE_SELL_MEDIAN.name();\n\t\t}\n\t\tif (convert.contains(\"sell minimum\")) {\n\t\t\treturn PriceMode.PRICE_SELL_MIN.name();\n\t\t}\n\t\tif (convert.contains(\"sell maximum\")) {\n\t\t\treturn PriceMode.PRICE_SELL_MAX.name();\n\t\t}\n\t\tif (convert.contains(\"buy maximum\")) {\n\t\t\treturn PriceMode.PRICE_BUY_MAX.name();\n\t\t}\n\t\tif (convert.contains(\"buy average\")) {\n\t\t\treturn PriceMode.PRICE_BUY_AVG.name();\n\t\t}\n\t\tif (convert.contains(\"buy median\")) {\n\t\t\treturn PriceMode.PRICE_BUY_MEDIAN.name();\n\t\t}\n\t\tif (convert.contains(\"buy minimum\")) {\n\t\t\treturn PriceMode.PRICE_BUY_MIN.name();\n\t\t}\n\t\tthrow new IllegalArgumentException(\"Failed to convert the price type \" + oldVal);\n\t}\n\n\tprivate String convertMode(final String oldVal) {\n\t\tif (oldVal.startsWith(\"MODE_\")) {\n\t\t\treturn oldVal;\n\t\t}\n\t\tString convert = oldVal.toLowerCase();\n\t\tconvert = convert.toLowerCase();\n\t\tif (convert.contains(\"equals\")) {\n\t\t\treturn \"MODE_EQUALS\";\n\t\t}\n\t\tif (convert.contains(\"contains\")) {\n\t\t\treturn \"MODE_CONTAIN\";\n\t\t}\n\t\tif (convert.contains(\"does not contain\")) {\n\t\t\treturn \"MODE_CONTAIN_NOT\";\n\t\t}\n\t\tif (convert.contains(\"does not equal\")) {\n\t\t\treturn \"MODE_EQUALS_NOT\";\n\t\t}\n\t\tif (convert.contains(\"greater than\")) {\n\t\t\treturn \"MODE_GREATER_THAN\";\n\t\t}\n\t\tif (convert.contains(\"less than\")) {\n\t\t\treturn \"MODE_LESS_THAN\";\n\t\t}\n\t\tif (convert.contains(\"greater than column\")) {\n\t\t\treturn \"MODE_GREATER_THAN_COLUMN\";\n\t\t}\n\t\tif (convert.contains(\"less than column\")) {\n\t\t\treturn \"MODE_LESS_THAN_COLUMN\";\n\t\t}\n\t\tthrow new IllegalArgumentException(\"Failed to convert the mode type \" + oldVal);\n\t}\n\n\tprivate String convertFlag(final Document doc) {\n\t\tXPath flagSelector = DocumentHelper.createXPath(\"/settings/flags/flag\");\n\t\tList<?> flagResults = flagSelector.selectNodes(doc);\n\t\tboolean text = false;\n\t\tboolean window = false;\n\t\tfor (Iterator<?> iter = flagResults.iterator(); iter.hasNext();) {\n\t\t\tElement element = (Element) iter.next();\n\t\t\tAttribute key = element.attribute(\"key\");\n\t\t\tAttribute visible = element.attribute(\"enabled\");\n\t\t\tif (key.getText().equals(\"FLAG_AUTO_RESIZE_COLUMNS_TEXT\")) {\n\t\t\t\ttext = visible.getText().equals(\"true\");\n\t\t\t\telement.detach();\n\t\t\t}\n\t\t\tif (key.getText().equals(\"FLAG_AUTO_RESIZE_COLUMNS_WINDOW\")) {\n\t\t\t\twindow = visible.getText().equals(\"true\");\n\t\t\t\telement.detach();\n\t\t\t}\n\t\t}\n\t\tif (text) {\n\t\t\treturn \"TEXT\";\n\t\t}\n\t\tif (window) {\n\t\t\treturn \"WINDOW\";\n\t\t}\n\t\treturn \"NONE\";\n\t}\n\n\tprivate void writeTableSettings(final Document doc, final String mode, final List<String> tableColumnNames, final List<String> tableColumnVisible) {\n\t\tElement tables = doc.getRootElement().addElement(\"tables\");\n\t\tElement table = tables.addElement(\"table\");\n\t\ttable.addAttribute(\"name\", \"COLUMN_SETTINGS_ASSETS\");\n\t\ttable.addAttribute(\"resize\", mode);\n\t\tfor (String columnName : tableColumnNames) {\n\t\t\tElement column = table.addElement(\"column\");\n\t\t\tcolumn.addAttribute(\"name\", columnName);\n\t\t\tcolumn.addAttribute(\"visible\", String.valueOf(tableColumnVisible.contains(columnName)));\n\t\t}\n\t}\n\n\t@Override\n\tpublic int getStart() {\n\t\treturn 1;\n\t}\n\t@Override\n\tpublic int getEnd() {\n\t\treturn 2;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/online/CitadelGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.online;\r\n\r\nimport java.util.Collection;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.settings.Citadel;\r\nimport net.nikr.eve.jeveasset.data.settings.CitadelSettings;\r\nimport net.nikr.eve.jeveasset.io.local.CitadelReader;\r\nimport net.nikr.eve.jeveasset.io.local.CitadelWriter;\r\n\r\n\r\npublic class CitadelGetter {\r\n\r\n\tprivate static CitadelGetter citadelGetter;\r\n\tprivate CitadelSettings citadelSettings = new CitadelSettings();\r\n\r\n\tprotected CitadelGetter() { }\r\n\r\n\tpublic synchronized static Citadel get(long locationID) {\r\n\t\treturn getCitadelGetter().getCitadel(locationID);\r\n\t}\r\n\r\n\tpublic synchronized static Iterable<Map.Entry<Long, Citadel>> getAll() {\r\n\t\treturn getCitadelGetter().getCitadelAll();\r\n\t}\r\n\r\n\tpublic synchronized static void remove(long locationID) {\r\n\t\tgetCitadelGetter().removeCitadel(locationID);\r\n\t}\r\n\r\n\tpublic synchronized static void remove(Set<Long> locationIDs) {\r\n\t\tgetCitadelGetter().removeCitadels(locationIDs);\r\n\t}\r\n\r\n\tpublic synchronized static void set(Citadel citadel) {\r\n\t\tgetCitadelGetter().setCitadel(citadel);\r\n\t}\r\n\r\n\tpublic synchronized static void set(Collection<Citadel> citadels) {\r\n\t\tgetCitadelGetter().setCitadels(citadels);\r\n\t}\r\n\r\n\tprivate static CitadelGetter getCitadelGetter() {\r\n\t\tif (citadelGetter == null) {\r\n\t\t\tcitadelGetter = new CitadelGetter();\r\n\t\t\tcitadelGetter.loadXml();\r\n\t\t}\r\n\t\treturn citadelGetter;\r\n\t}\r\n\r\n\tprivate void saveXml() {\r\n\t\tCitadelWriter.save(citadelSettings);\r\n\t}\r\n\r\n\tprivate void loadXml() {\r\n\t\tcitadelSettings = CitadelReader.load();\r\n\t}\r\n\r\n\tprivate void removeCitadel(long locationID) {\r\n\t\tcitadelSettings.remove(locationID);\r\n\t\tsaveXml();\r\n\t}\r\n\r\n\tprivate void removeCitadels(Set<Long> locationIDs) {\r\n\t\tfor (long locationID : locationIDs) {\r\n\t\t\tcitadelSettings.remove(locationID);\r\n\t\t}\r\n\t\tif (!locationIDs.isEmpty()) {\r\n\t\t\tsaveXml();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void setCitadel(Citadel citadel) {\r\n\t\tcitadelSettings.put(citadel.getLocationID(), citadel);\r\n\t\tsaveXml();\r\n\t}\r\n\r\n\tprivate void setCitadels(Collection<Citadel> citadels) {\r\n\t\tfor (Citadel citadel : citadels) {\r\n\t\t\tcitadelSettings.put(citadel.getLocationID(), citadel);\r\n\t\t}\r\n\t\tif (!citadels.isEmpty()) {\r\n\t\t\tsaveXml();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Citadel getCitadel(long locationID) {\r\n\t\tCitadel citadel = citadelSettings.get(locationID);\r\n\t\tif (citadel == null) { //Location not found in cache -> add placeholder for future updates\r\n\t\t\tcitadel = new Citadel(locationID);\r\n\t\t}\r\n\t\treturn citadel;\r\n\t}\r\n\r\n\tprivate Iterable<Map.Entry<Long, Citadel>> getCitadelAll() {\r\n\t\treturn citadelSettings.getCache();\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/online/DataGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.io.online;\r\n\r\nimport java.io.File;\r\nimport java.io.FileOutputStream;\r\nimport java.io.IOException;\r\nimport java.net.URL;\r\nimport java.net.URLConnection;\r\nimport java.nio.charset.MalformedInputException;\r\nimport java.security.DigestInputStream;\r\nimport java.security.MessageDigest;\r\nimport java.security.NoSuchAlgorithmException;\r\nimport java.util.logging.Level;\r\nimport java.util.logging.Logger;\r\n\r\n\r\npublic class DataGetter {\r\n\r\n\tprivate static final Logger LOG = Logger.getLogger(DataGetter.class.getName());\r\n\r\n\tpublic boolean get(String link, File out, String checksum) {\r\n\t\treturn get(link, out, checksum, 0);\r\n\t}\r\n\r\n\tprivate boolean get(String link, File out, String checksum, int tries) {\r\n\t\tLOG.info(\"Downloading: \" + link + \" to: \" + out.getAbsolutePath());\r\n\t\tDigestInputStream input = null;\r\n\t\tFileOutputStream output = null;\r\n\t\tint n;\r\n\t\ttry {\r\n\t\t\tMessageDigest md = MessageDigest.getInstance(\"MD5\");\r\n\t\t\tURL url = new URL(link);\r\n\t\t\tURLConnection con = url.openConnection();\r\n\r\n\t\t\tbyte[] buffer = new byte[4096];\r\n\t\t\tinput = new DigestInputStream(con.getInputStream(), md);\r\n\t\t\toutput = new FileOutputStream(out);\r\n\t\t\twhile ((n = input.read(buffer)) != -1) {\r\n\t\t\t\toutput.write(buffer, 0, n);\r\n\t\t\t}\r\n\t\t\toutput.flush();\r\n\t\t\tString sum = getToHex(md.digest());\r\n\t\t\tif (sum.equals(checksum)) {\r\n\t\t\t\treturn true; //OK\r\n\t\t\t}\r\n\t\t} catch (MalformedInputException ex) {\r\n\t\t\tLOG.log(Level.SEVERE, ex.getMessage(), ex);\r\n\t\t} catch (IOException ex) {\r\n\t\t\tLOG.log(Level.SEVERE, ex.getMessage(), ex);\r\n\t\t} catch (NoSuchAlgorithmException ex) {\r\n\t\t\tLOG.log(Level.SEVERE, ex.getMessage(), ex);\r\n\t\t} finally {\r\n\t\t\tif (input != null) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tinput.close();\r\n\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\tLOG.log(Level.SEVERE, ex.getMessage(), ex);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (output != null) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\toutput.close();\r\n\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\tLOG.log(Level.SEVERE, ex.getMessage(), ex);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (tries < 10) { //Retry 10 times\r\n\t\t\tout.delete();\r\n\t\t\ttries++;\r\n\t\t\treturn get(link, out, checksum, tries);\r\n\t\t} else { //Failed 10 times, I give up...\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate String getToHex(byte[] b) {\r\n\t\tString result = \"\";\r\n\t\tfor (int i = 0; i < b.length; i++) {\r\n\t\t\tresult += Integer.toString((b[i] & 0xff) + 0x100, 16).substring(1);\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/online/EveImageGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.online;\r\n\r\nimport java.awt.image.BufferedImage;\r\nimport java.io.File;\r\nimport java.io.IOException;\r\nimport java.io.InputStream;\r\nimport java.net.URL;\r\nimport java.nio.file.Files;\r\nimport java.nio.file.Path;\r\nimport java.nio.file.Paths;\r\nimport java.util.ArrayList;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Objects;\r\nimport java.util.Set;\r\nimport java.util.concurrent.ExecutionException;\r\nimport java.util.concurrent.ExecutorService;\r\nimport java.util.concurrent.Executors;\r\nimport java.util.concurrent.Future;\r\nimport java.util.concurrent.TimeUnit;\r\nimport javax.imageio.ImageIO;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyLoyaltyPoints;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyNpcStanding;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawNpcStanding.FromType;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class EveImageGetter implements Runnable {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(EveImageGetter.class);\r\n\r\n\tpublic static enum ImageSize {\r\n\t\tSIZE_32(32),\r\n\t\tSIZE_64(64),\r\n\t\tSIZE_128(128),\r\n\t\tSIZE_256(256),\r\n\t\tSIZE_512(512),\r\n\t\tSIZE_1024(1024);\r\n\r\n\t\tprivate final int size;\r\n\r\n\t\tprivate ImageSize(int size) {\r\n\t\t\tthis.size = size;\r\n\t\t}\r\n\r\n\t\tpublic int getSize() {\r\n\t\t\treturn size;\r\n\t\t}\r\n\r\n\t\t\r\n\t}\r\n\r\n\tpublic static enum ImageTypeVariation {\r\n\t\tBPO(\"bpo\"),\r\n\t\tBPC(\"bpc\"),\r\n\t\tRELIC(\"relic\"),\r\n\t\tICON(\"icon\"),\r\n\t\tRENDER(\"render\");\r\n\r\n\t\tprivate final String variation;\r\n\r\n\t\tprivate ImageTypeVariation(String variation) {\r\n\t\t\tthis.variation = variation;\r\n\t\t}\t\r\n\r\n\t\tpublic String getVariation() {\r\n\t\t\treturn variation;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static enum ImageCategory {\r\n\t\tALLIANCES(\"alliances\", \"logo\"),\r\n\t\tCORPORATIONS(\"corporations\", \"logo\"),\r\n\t\tCHARACTERS(\"characters\", \"portrait\"),\r\n\t\tTYPE(\"type\", \"icon\");\r\n\r\n\t\tprivate final String category;\r\n\t\tprivate final String variation;\r\n\r\n\t\tprivate ImageCategory(String category, String variation) {\r\n\t\t\tthis.category = category;\r\n\t\t\tthis.variation = variation;\r\n\t\t}\r\n\r\n\t\tpublic String getURL(int id, ImageSize imageSize) {\r\n\t\t\treturn getURL(id, imageSize, null);\r\n\t\t}\r\n\r\n\t\tpublic String getURL(int id, ImageSize size, ImageTypeVariation typeVariation) {\r\n\t\t\tif (typeVariation != null) {\r\n\t\t\t\treturn \"https://images.evetech.net/\" + category + \"/\" + id + \"/\" + typeVariation.getVariation() + \"?size=\" + size.getSize();\r\n\t\t\t} else {\r\n\t\t\t\treturn \"https://images.evetech.net/\" + category + \"/\" + id + \"/\" + variation + \"?size=\" + size.getSize();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate final UpdateTask updateTask;\r\n\tprivate final List<OwnerType> ownerTypes;\r\n\r\n\tpublic EveImageGetter(UpdateTask updateTask, List<OwnerType> ownerTypes) {\r\n\t\tthis.updateTask = updateTask;\r\n\t\tthis.ownerTypes = ownerTypes;\r\n\t}\r\n\r\n\tpublic static BufferedImage getBufferedImage(int corporationID, ImageCategory imageCategory) {\r\n\t\tImageDownload imageDownload = new ImageDownload(corporationID, imageCategory);\r\n\t\ttry {\r\n\t\t\treturn imageDownload.get();\r\n\t\t} catch (Exception ex) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static BufferedImage getBufferedImage(MyNpcStanding npcStanding) {\r\n\t\tImageDownload imageDownload = new ImageDownload(npcStanding);\r\n\t\ttry {\r\n\t\t\treturn imageDownload.get();\r\n\t\t} catch (Exception ex) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static BufferedImage getBufferedImage(MyLoyaltyPoints loyaltyPoints) {\r\n\t\tImageDownload imageDownload = new ImageDownload(loyaltyPoints);\r\n\t\ttry {\r\n\t\t\treturn imageDownload.get();\r\n\t\t} catch (Exception ex) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void run() {\r\n\t\ttry {\r\n\t\t\tExecutorService threadPool = Executors.newFixedThreadPool(10);\r\n\t\t\tList<Future<?>> futures = new ArrayList<>();\r\n\t\t\tfor (Runnable runnable : getImageDownloads(ownerTypes)) {\r\n\t\t\t\tfutures.add(threadPool.submit(runnable));\r\n\t\t\t}\r\n\t\t\tthreadPool.shutdown();\r\n\t\t\twhile (!threadPool.awaitTermination(500, TimeUnit.MICROSECONDS)) {\r\n\t\t\t\tif (updateTask != null) {\r\n\t\t\t\t\tif (updateTask.isCancelled()) {\r\n\t\t\t\t\t\tthreadPool.shutdownNow();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Get errors (if any)\r\n\t\t\tfor (Future<?> future : futures) {\r\n\t\t\t\tfuture.get();\r\n\t\t\t}\r\n\t\t} catch (InterruptedException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t} catch (ExecutionException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Set<ImageDownload> getImageDownloads(List<OwnerType> ownerTypes) {\r\n\t\tSet<ImageDownload> set = new HashSet<>();\r\n\t\tfor (OwnerType ownerType : ownerTypes) {\r\n\t\t\tif (ownerType.isCharacter()) {\r\n\t\t\t\tset.add(new ImageDownload((int) ownerType.getOwnerID(), ImageCategory.CHARACTERS));\r\n\t\t\t} else {\r\n\t\t\t\tset.add(new ImageDownload((int) ownerType.getOwnerID(), ImageCategory.CORPORATIONS));\r\n\t\t\t}\r\n\t\t\tfor (MyNpcStanding npcStanding : ownerType.getNpcStanding()) {\r\n\t\t\t\tset.add(new ImageDownload(npcStanding));\r\n\t\t\t\tset.add(new ImageDownload(npcStanding.getCorporationID(), ImageCategory.CORPORATIONS));\r\n\t\t\t}\r\n\t\t\tfor (MyNpcStanding npcStanding : ownerType.getNpcStanding()) {\r\n\t\t\t\tset.add(new ImageDownload(npcStanding));\r\n\t\t\t\tset.add(new ImageDownload(npcStanding.getCorporationID(), ImageCategory.CORPORATIONS));\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t\tfor (MyLoyaltyPoints loyaltyPoints : ownerType.getLoyaltyPoints()) {\r\n\t\t\t\tset.add(new ImageDownload(loyaltyPoints));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn set;\r\n\t}\r\n\r\n\tprivate static class ImageDownload implements Runnable {\r\n\t\tprivate final int id;\r\n\t\tprivate final ImageCategory category;\r\n\t\tprivate final ImageSize size;\r\n\t\tprivate final ImageTypeVariation typeVariation;\r\n\r\n\t\tprivate ImageDownload(MyNpcStanding npcStanding) {\r\n\t\t\tthis.id = npcStanding.getFromID();\r\n\t\t\tcategory = getImageCategory(npcStanding.getFromType());\r\n\t\t\tsize = MyNpcStanding.IMAGE_SIZE;\r\n\t\t\ttypeVariation = null;\r\n\t\t}\r\n\r\n\t\tprivate ImageDownload(int corporationID, ImageCategory imageCategory) {\r\n\t\t\tthis.id = corporationID;\r\n\t\t\tthis.category = imageCategory;\r\n\t\t\tsize = MyNpcStanding.IMAGE_SIZE;\r\n\t\t\ttypeVariation = null;\r\n\t\t}\r\n\r\n\t\tprivate ImageDownload(MyLoyaltyPoints loyaltyPoints) {\r\n\t\t\tid = loyaltyPoints.getCorporationID();\r\n\t\t\tcategory = ImageCategory.CORPORATIONS;\r\n\t\t\tsize = MyLoyaltyPoints.IMAGE_SIZE;\r\n\t\t\ttypeVariation = null;\r\n\t\t}\r\n\r\n\t\tprivate ImageCategory getImageCategory(FromType fromType) {\r\n\t\t\tif (fromType == FromType.FACTION) {\r\n\t\t\t\treturn ImageCategory.CORPORATIONS;\r\n\t\t\t} else if (fromType == FromType.NPC_CORP) {\r\n\t\t\t\treturn ImageCategory.CORPORATIONS;\r\n\t\t\t} else if (fromType == FromType.AGENT) {\r\n\t\t\t\treturn ImageCategory.CHARACTERS;\r\n\t\t\t} else {\r\n\t\t\t\tthrow new IllegalArgumentException();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void run() {\r\n\t\t\ttry {\r\n\t\t\t\tdownload(id, category, size, typeVariation);\r\n\t\t\t} catch (IOException ex) {\r\n\t\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tpublic BufferedImage get() throws Exception {\r\n\t\t\tString filename = download(id, category, size, typeVariation);\r\n\t\t\treturn getBufferedImage(filename);\r\n\t\t}\r\n\r\n\t\tprivate String download(int id, ImageCategory category, ImageSize size, ImageTypeVariation typeVariation) throws IOException {\r\n\t\t\tString url = category.getURL(id, size, typeVariation);\r\n\t\t\tString filename = FileUtil.getPathImages(getFilename(id, category, size, typeVariation));\r\n\t\t\tPath path = Paths.get(filename);\r\n\t\t\tif (Files.exists(path)) {\r\n\t\t\t\treturn filename;\r\n\t\t\t}\r\n\t\t\ttry (InputStream in = new URL(url).openStream()) {\r\n\t\t\t\tFiles.copy(in, path);\r\n\t\t\t}\r\n\t\t\treturn filename;\r\n\t\t}\r\n\r\n\t\tprivate String getFilename(int id, ImageCategory category, ImageSize size, ImageTypeVariation typeVariation) {\r\n\t\t\tif (typeVariation != null) {\r\n\t\t\t\treturn category.name().toLowerCase() + \"_\" + typeVariation.name().toLowerCase() + \"_\" + id + \"_\" + size.getSize() + \".png\";\r\n\t\t\t} else {\r\n\t\t\t\treturn category.name().toLowerCase() + \"_\" + id + \"_\" + size.getSize() + \".png\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate static BufferedImage getBufferedImage(final String filename) {\r\n\t\t\ttry {\r\n\t\t\t\tif (filename != null) {\r\n\t\t\t\t\treturn ImageIO.read(new File(filename));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tLOG.warn(\"image: \" + filename + \" not found (URL == null)\");\r\n\t\t\t\t}\r\n\t\t\t} catch (IOException ex) {\r\n\t\t\t\tLOG.warn(\"image: \" + filename + \" not found (IOException)\");\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int hashCode() {\r\n\t\t\tint hash = 7;\r\n\t\t\thash = 97 * hash + this.id;\r\n\t\t\thash = 97 * hash + Objects.hashCode(this.category);\r\n\t\t\thash = 97 * hash + Objects.hashCode(this.typeVariation);\r\n\t\t\treturn hash;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean equals(Object obj) {\r\n\t\t\tif (this == obj) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif (obj == null) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (getClass() != obj.getClass()) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tfinal ImageDownload other = (ImageDownload) obj;\r\n\t\t\tif (this.id != other.id) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif (this.category != other.category) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn this.typeVariation == other.typeVariation;\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/online/EveRefGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.online;\r\n\r\nimport com.google.gson.Gson;\r\nimport com.google.gson.GsonBuilder;\r\nimport com.google.gson.JsonParseException;\r\nimport com.google.gson.annotations.SerializedName;\r\nimport com.google.gson.reflect.TypeToken;\r\nimport java.io.IOException;\r\nimport java.lang.reflect.Type;\r\nimport java.util.ArrayList;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport java.util.concurrent.Callable;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.sde.IndustryMaterial;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.ReprocessedMaterial;\r\nimport net.nikr.eve.jeveasset.io.esi.EsiItemsGetter;\r\nimport net.nikr.eve.jeveasset.io.shared.ThreadWoker;\r\nimport okhttp3.Call;\r\nimport okhttp3.OkHttpClient;\r\nimport okhttp3.Request;\r\nimport okhttp3.logging.HttpLoggingInterceptor;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\npublic class EveRefGetter {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(EveRefGetter.class);\r\n\tprivate static final Gson GSON = new GsonBuilder().create();\r\n\t/**\r\n\t* HttpLoggingInterceptor\r\n\t*/\r\n\tprivate static final HttpLoggingInterceptor HTTP_LOGGING_INTERCEPTOR = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {\r\n\t\t\t\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\t\t\t\tpublic void log(String string) {\r\n\t\t\t\t\t\t\t\t\t\tLOG.debug(string);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t/**\r\n\t * HTTP Client\r\n\t */\r\n\tprivate final OkHttpClient client;\r\n\r\n\tprivate static EveRefGetter getter;\r\n\r\n\tprivate EveRefGetter() {\r\n\t\tif (LOG.isDebugEnabled()) {\r\n\t\t\tclient = new OkHttpClient().newBuilder()\r\n\t\t\t\t.addNetworkInterceptor(HTTP_LOGGING_INTERCEPTOR)\r\n\t\t\t\t.build();\r\n\t\t\tHTTP_LOGGING_INTERCEPTOR.setLevel(HttpLoggingInterceptor.Level.BASIC);\r\n\t\t} else {\r\n\t\t\t client = new OkHttpClient().newBuilder().build();\r\n\t\t}\r\n\t}\t\r\n\r\n\tpublic static Item getItem(Item item) {\r\n\t\tEveRefType type = getType(item.getTypeID());\r\n\t\tif (type == null) {\r\n\t\t\treturn item;\r\n\t\t}\r\n\t\tEveRefBlueprint blueprint = null;\r\n\t\tif (get(type.isBlueprint(), false)) {\r\n\t\t\t//Get Blueprint Data\r\n\t\t\tblueprint = getBlueprint(item.getTypeID());\r\n\t\t}\r\n\t\treturn getItem(item, type, blueprint);\r\n\t}\r\n\r\n\tprotected static Item getItem(Item item, EveRefType type, EveRefBlueprint blueprint) {\r\n\t\tif (type == null) {\r\n\t\t\treturn item;\r\n\t\t}\r\n\t\t//Tech Level\r\n\t\tString tech = item.getTech();\r\n\t\tInteger metaGroupID = type.getMetaGroupID();\r\n\t\tif (metaGroupID != null) {\r\n\t\t\ttech = EsiItemsGetter.getTechLevel(metaGroupID);\r\n\t\t}\r\n\t\t//BlueprintIDs\r\n\t\tSet<Integer> blueprintTypeIDs = new HashSet<>();\r\n\t\tMap<String, EveRefProducedByBlueprints> producedByBlueprints = type.getProducedByBlueprints();\r\n\t\tif (producedByBlueprints != null) {\r\n\t\t\tfor (EveRefProducedByBlueprints blueprints : producedByBlueprints.values()) {\r\n\t\t\t\tif (\"manufacturing\".equalsIgnoreCase(blueprints.getBlueprintActivity())) {\r\n\t\t\t\t\tInteger blueprintTypeID = blueprints.getBlueprintTypeID();\r\n\t\t\t\t\tif (blueprintTypeID != null) {\r\n\t\t\t\t\t\tblueprintTypeIDs.add(blueprintTypeID);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t//Reproccesed\r\n\t\tList<ReprocessedMaterial> reprocessedMaterials = new ArrayList<>();\r\n\t\tif (type.getTypeMaterials() != null && item.isMarketGroup()) {\r\n\t\t\tfor (EveRefTypeMaterial material : type.getTypeMaterials().values()) {\r\n\t\t\t\tInteger typeID = material.getMaterialTypeID();\r\n\t\t\t\tInteger quantity = material.getQuantity();\r\n\t\t\t\tif (typeID != null && quantity != null) {\r\n\t\t\t\t\treprocessedMaterials.add(new ReprocessedMaterial(typeID, quantity, type.getPortionSize()));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tint productTypeID = EsiItemsGetter.PRODUCT_TYPE_ID_DEFAULT;\r\n\t\tint productQuantity = EsiItemsGetter.PRODUCT_QUANTITY_DEFAULT;\r\n\t\tList<IndustryMaterial> manufacturingMaterials = new ArrayList<>();\r\n\t\tList<IndustryMaterial> reactionMaterials = new ArrayList<>();\r\n\t\tif (blueprint != null) {\r\n\t\t\t//Blueprints\r\n\t\t\tsafeAdd(blueprint.getManufacturing(), manufacturingMaterials);\r\n\t\t\tEveRefMaterial manufacturingMaterial = safeGet(blueprint.getManufacturing());\r\n\t\t\tif (manufacturingMaterial != null) {\r\n\t\t\t\tproductTypeID = manufacturingMaterial.getTypeID();\r\n\t\t\t\tproductQuantity = manufacturingMaterial.getQuantity();\r\n\t\t\t}\r\n\t\t\t//Reactions\r\n\t\t\tsafeAdd(blueprint.getReaction(), reactionMaterials);\r\n\t\t\tEveRefMaterial reactionMaterial = safeGet(blueprint.getReaction());\r\n\t\t\tif (reactionMaterial != null) {\r\n\t\t\t\tproductTypeID = reactionMaterial.getTypeID();\r\n\t\t\t\tproductQuantity = reactionMaterial.getQuantity();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t\t//Base Price\r\n\t\tLong basePrice = get(type.getBasePrice(), EsiItemsGetter.BASE_PRICE_DEFAULT).longValue();\r\n\r\n\t\treturn new Item(item, basePrice, tech, productTypeID, productQuantity, blueprintTypeIDs, reprocessedMaterials, manufacturingMaterials, reactionMaterials);\r\n\t}\r\n\r\n\tprivate static void safeAdd(EveRefActivity activity, List<IndustryMaterial> materials) {\r\n\t\tif (activity != null && activity.getMaterials() != null) {\r\n\t\t\tfor (EveRefMaterial eveRefMaterial : activity.getMaterials().values()) {\r\n\t\t\t\tInteger typeID = eveRefMaterial.getTypeID();\r\n\t\t\t\tInteger quantity = eveRefMaterial.getQuantity();\r\n\t\t\t\tif (typeID != null && quantity != null) {\r\n\t\t\t\t\tmaterials.add(new IndustryMaterial(typeID, quantity));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static EveRefMaterial safeGet(EveRefActivity activity) {\r\n\t\tif (activity != null && activity.getProducts() != null) {\r\n\t\t\tMap<String, EveRefMaterial> reactionProducts = activity.getProducts();\r\n\t\t\tif (!reactionProducts.isEmpty()) {\r\n\t\t\t\treturn reactionProducts.values().iterator().next();\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate static <V> V get(V value, V defaultValue) {\r\n\t\tif (value != null) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\treturn defaultValue;\r\n\t}\r\n\r\n\tpublic static EveRefBlueprint getBlueprint(int TypeID) {\r\n\t\tif (getter == null) {\r\n\t\t\tgetter = new EveRefGetter();\r\n\t\t}\r\n\t\treturn getter.blueprint(TypeID);\r\n\t}\r\n\r\n\tpublic static EveRefType getType(int TypeID) {\r\n\t\tif (getter == null) {\r\n\t\t\tgetter = new EveRefGetter();\r\n\t\t}\r\n\t\treturn getter.type(TypeID);\r\n\t}\r\n\r\n\tprivate EveRefBlueprint blueprint(final int typeID) {\r\n\t\tUpdate<EveRefBlueprint> update = new Update<EveRefBlueprint>(new Updater() {\r\n\t\t\t@Override\r\n\t\t\tpublic Call getCall() {\r\n\t\t\t\tRequest.Builder request = new Request.Builder()\r\n\t\t\t\t\t.url(\"https://ref-data.everef.net/blueprints/\" + typeID)\r\n\t\t\t\t\t.addHeader(\"User-Agent\", Program.PROGRAM_USER_AGENT);\r\n\t\t\t\treturn client.newCall(request.build());\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic Type getType() {\r\n\t\t\t\treturn new TypeToken<EveRefBlueprint>() {}.getType();\r\n\t\t\t}\r\n\t\t}) {\r\n\t\t};\r\n\t\treturn ThreadWoker.startReturn(null, update); //Return null on failure\r\n\t}\r\n\r\n\tprivate EveRefType type(final int typeID) {\r\n\t\tUpdate<EveRefType> update = new Update<EveRefType>(new Updater() {\r\n\t\t\t@Override\r\n\t\t\tpublic Call getCall() {\r\n\t\t\t\tRequest.Builder request = new Request.Builder()\r\n\t\t\t\t\t.url(\"https://ref-data.everef.net/types/\" + typeID)\r\n\t\t\t\t\t.addHeader(\"User-Agent\", Program.PROGRAM_USER_AGENT);\r\n\t\t\t\treturn client.newCall(request.build());\r\n\t\t\t}\r\n\r\n\t\t\t@Override\r\n\t\t\tpublic Type getType() {\r\n\t\t\t\treturn new TypeToken<EveRefType>() {}.getType();\r\n\t\t\t}\r\n\t\t}) {\r\n\t\t};\r\n\t\treturn ThreadWoker.startReturn(null, update); //Return null on failure\r\n\t}\r\n\r\n\tprivate abstract class Update<T> implements Callable<T> {\r\n\r\n\t\tprivate final Updater updater;\r\n\r\n\t\tpublic Update(Updater updater) {\r\n\t\t\tthis.updater = updater;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic T call() throws Exception {\r\n\t\t\tlong start = System.currentTimeMillis();\r\n\t\t\tT results = null;\r\n\t\t\ttry {\r\n\t\t\t\tresults = GSON.fromJson(updater.getCall().execute().body().string(), updater.getType());\r\n\t\t\t\tif (results == null) {\r\n\t\t\t\t\tLOG.error(\"Error fetching price\", new Exception(\"results is null\"));\r\n\t\t\t\t}\r\n\t\t\t} catch (IllegalArgumentException | IOException | JsonParseException ex) {\r\n\t\t\t\tLOG.error(\"Error fetching price\", ex);\r\n\t\t\t}\r\n\t\t\tlong duration = System.currentTimeMillis() - start;\r\n\t\t\tLOG.info(\"Completed in \" + duration + \"ms\");\r\n\t\t\treturn results;\r\n\t\t}\r\n\t\r\n\t\t\r\n\t}\r\n\r\n\tprivate static interface Updater {\r\n\t\tpublic Call getCall();\r\n\t\tpublic Type getType();\r\n\t}\r\n\r\n\tpublic static class EveRefBlueprint {\r\n\r\n\t\tprivate Map<String, EveRefActivity> activities;\r\n\t\t@SerializedName(value = \"blueprint_type_id\")\r\n\t\tprivate Long blueprintTypeID;\r\n\t\t@SerializedName(value = \"max_production_limit\")\r\n\t\tprivate Long maxProductionLimit;\r\n\r\n\t\tpublic Map<String, EveRefActivity> getActivities() {\r\n\t\t\tif (activities == null) {\r\n\t\t\t\tactivities = new HashMap<>();\r\n\t\t\t}\r\n\t\t\treturn activities;\r\n\t\t}\r\n\r\n\t\tpublic EveRefActivity getCopying() {\r\n\t\t\treturn getActivities().get(\"copying\");\r\n\t\t}\r\n\t\t\r\n\t\tpublic EveRefActivity getInvention() {\r\n\t\t\treturn getActivities().get(\"invention\");\r\n\t\t}\r\n\t\r\n\t\tpublic EveRefActivity getManufacturing() {\r\n\t\t\treturn getActivities().get(\"manufacturing\");\r\n\t\t}\r\n\r\n\t\tpublic EveRefActivity getReaction() {\r\n\t\t\treturn getActivities().get(\"reaction\");\r\n\t\t}\r\n\t\r\n\t\tpublic EveRefActivity getResearchMaterial() {\r\n\t\t\treturn getActivities().get(\"research_material\");\r\n\t\t}\r\n\t\r\n\t\tpublic EveRefActivity getResearchTime() {\r\n\t\t\treturn getActivities().get(\"research_time\");\r\n\t\t}\r\n\r\n\t\tpublic Long getBlueprintTypeID() {\r\n\t\t\treturn blueprintTypeID;\r\n\t\t}\r\n\t\r\n\t\tpublic Long getMaxProductionLimit() {\r\n\t\t\treturn maxProductionLimit;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static class EveRefActivity {\r\n\r\n\t\tprivate Map<String, EveRefMaterial> materials;\r\n\t\tprivate Map<String, EveRefMaterial> products;\r\n\t\tprivate Long time;\r\n\t\t@SerializedName(value = \"required_skills\")\r\n\t\tprivate Map<String, Long> requiredSkills;\r\n\r\n\t\tpublic Map<String, EveRefMaterial> getMaterials() {\r\n\t\t\treturn materials;\r\n\t\t\t\r\n\t\t}\r\n\r\n\t\tpublic Map<String, EveRefMaterial> getProducts() {\r\n\t\t\treturn products;\r\n\t\t}\r\n\r\n\t\tpublic Long getTime() {\r\n\t\t\treturn time;\r\n\t\t}\r\n\r\n\t\tpublic Map<String, Long> getRequiredSkills() {\r\n\t\t\treturn requiredSkills;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static class EveRefMaterial {\r\n\r\n\t\tprivate Double probability;\r\n\t\tprivate Integer quantity;\r\n\t\t@SerializedName(value = \"type_id\")\r\n\t\tprivate Integer typeID;\r\n\r\n\t\tpublic Double getProbability() {\r\n\t\t\treturn probability;\r\n\t\t}\r\n\r\n\t\tpublic Integer getQuantity() { return quantity; }\r\n\t\tpublic Integer getTypeID() { return typeID; }\r\n\t}\r\n\r\n\tpublic static class EveRefType {\r\n\t\t@SerializedName(value = \"type_id\")\r\n\t\tprivate Long typeID;\r\n\t\t@SerializedName(value = \"base_price\")\r\n\t\tprivate Double basePrice;\r\n\t\tprivate Double capacity;\r\n\t\tprivate Map<String, String> description;\r\n\t\t@SerializedName(value = \"dogma_attributes\")\r\n\t\tprivate Map<String, EveRefDogmaAttribute> dogmaAttributes;\r\n\t\t@SerializedName(value = \"dogma_effects\")\r\n\t\tprivate Map<String, EveRefDogmaEffect> dogmaEffects;\r\n\t\t@SerializedName(value = \"faction_id\")\r\n\t\tprivate Long factionID;\r\n\t\t@SerializedName(value = \"graphic_id\")\r\n\t\tprivate Long graphicID;\r\n\t\t@SerializedName(value = \"group_id\")\r\n\t\tprivate Long groupID;\r\n\t\t@SerializedName(value = \"icon_id\")\r\n\t\tprivate Long iconID;\r\n\t\t@SerializedName(value = \"market_group_id\")\r\n\t\tprivate Long marketGroupID;\r\n\t\tprivate Double mass;\r\n\t\tprivate Map<String, List<Long>> masteries;\r\n\t\t@SerializedName(value = \"meta_group_id\")\r\n\t\tprivate Integer metaGroupID;\r\n\t\tprivate Map<String, String> name;\r\n\t\t@SerializedName(value = \"packaged_volume\")\r\n\t\tprivate Double packagedVolume;\r\n\t\t@SerializedName(value = \"portion_size\")\r\n\t\tprivate Integer portionSize;\r\n\t\tprivate Boolean published;\r\n\t\t@SerializedName(value = \"race_id\")\r\n\t\tprivate Long raceID;\r\n\t\tprivate Double radius;\r\n\t\t@SerializedName(value = \"sof_faction_name\")\r\n\t\tprivate String sofFactionName;\r\n\t\t@SerializedName(value = \"sof_material_set_id\")\r\n\t\tprivate Long sofMaterialSetID;\r\n\t\t@SerializedName(value = \"sound_id\")\r\n\t\tprivate Long soundID;\r\n\t\tprivate EveRefTraits traits;\r\n\t\t@SerializedName(value = \"variation_parent_type_id\")\r\n\t\tprivate Long variationParentTypeID;\r\n\t\tprivate Double volume;\r\n\t\t@SerializedName(value = \"required_skills\")\r\n\t\tprivate Map<String, Long> requiredSkills;\r\n\t\t@SerializedName(value = \"applicable_mutaplasmid_type_ids\")\r\n\t\tprivate List<Long> applicableMutaplasmidTypeIDS;\r\n\t\t@SerializedName(value = \"creating_mutaplasmid_type_ids\")\r\n\t\tprivate List<Long> creatingMutaplasmidTypeIDS;\r\n\t\t@SerializedName(value = \"type_variations\")\r\n\t\tprivate Map<String, List<Long>> typeVariations;\r\n\t\t@SerializedName(value = \"ore_variations\")\r\n\t\tprivate Map<String, List<Long>> oreVariations;\r\n\t\t@SerializedName(value = \"is_ore\")\r\n\t\tprivate Boolean ore;\r\n\t\t@SerializedName(value = \"produced_by_blueprints\")\r\n\t\tprivate Map<String, EveRefProducedByBlueprints> producedByBlueprints;\r\n\t\t@SerializedName(value = \"type_materials\")\r\n\t\tprivate Map<String, EveRefTypeMaterial> typeMaterials;\r\n\t\t@SerializedName(value = \"can_fit_types\")\r\n\t\tprivate List<Long> canFitTypes;\r\n\t\t@SerializedName(value = \"can_be_fitted_with_types\")\r\n\t\tprivate List<Long> canBeFittedWithTypes;\r\n\t\t@SerializedName(value = \"is_skill\")\r\n\t\tprivate Boolean skill;\r\n\t\t@SerializedName(value = \"is_mutaplasmid\")\r\n\t\tprivate Boolean mutaplasmid;\r\n\t\t@SerializedName(value = \"is_dynamic_item\")\r\n\t\tprivate Boolean dynamicItem;\r\n\t\t@SerializedName(value = \"is_blueprint\")\r\n\t\tprivate Boolean blueprint;\r\n\r\n\t\tpublic Long getTypeID() { return typeID; }\r\n\t\tpublic Double getBasePrice() { return basePrice; }\r\n\t\tpublic Double getCapacity() { return capacity; }\r\n\t\tpublic Map<String, String> getDescription() { return description; }\r\n\t\tpublic Map<String, EveRefDogmaAttribute> getDogmaAttributes() { return dogmaAttributes; }\r\n\t\tpublic Map<String, EveRefDogmaEffect> getDogmaEffects() { return dogmaEffects; }\r\n\t\tpublic Long getFactionID() { return factionID; }\r\n\t\tpublic Long getGraphicID() { return graphicID; }\r\n\t\tpublic Long getGroupID() { return groupID; }\r\n\t\tpublic Long getIconID() { return iconID; }\r\n\t\tpublic Long getMarketGroupID() { return marketGroupID; }\r\n\t\tpublic Double getMass() { return mass; }\r\n\t\tpublic Map<String, List<Long>> getMasteries() { return masteries; }\r\n\t\tpublic Integer getMetaGroupID() { return metaGroupID; }\r\n\t\tpublic Map<String, String> getName() { return name; }\r\n\t\tpublic Double getPackagedVolume() { return packagedVolume; }\r\n\t\tpublic Integer getPortionSize() { return portionSize; }\r\n\t\tpublic Boolean isPublished() { return published; }\r\n\t\tpublic Long getRaceID() { return raceID; }\r\n\t\tpublic Double getRadius() { return radius; }\r\n\t\tpublic String getSofFactionName() { return sofFactionName; }\r\n\t\tpublic Long getSofMaterialSetID() { return sofMaterialSetID; }\r\n\t\tpublic Long getSoundID() { return soundID; }\r\n\t\tpublic EveRefTraits getTraits() { return traits; }\r\n\t\tpublic Long getVariationParentTypeID() { return variationParentTypeID; }\r\n\t\tpublic Double getVolume() { return volume; }\r\n\t\tpublic Map<String, Long> getRequiredSkills() { return requiredSkills; }\r\n\t\tpublic List<Long> getApplicableMutaplasmidTypeIDS() { return applicableMutaplasmidTypeIDS; }\r\n\t\tpublic List<Long> getCreatingMutaplasmidTypeIDS() { return creatingMutaplasmidTypeIDS; }\r\n\t\tpublic Map<String, List<Long>> getTypeVariations() { return typeVariations; }\r\n\t\tpublic Map<String, List<Long>> getOreVariations() { return oreVariations; }\r\n\t\tpublic Boolean isOre() { return ore; }\r\n\t\tpublic Map<String, EveRefProducedByBlueprints> getProducedByBlueprints() { return producedByBlueprints; }\r\n\t\tpublic Map<String, EveRefTypeMaterial> getTypeMaterials() { return typeMaterials; }\r\n\t\tpublic List<Long> getCanFitTypes() { return canFitTypes; }\r\n\t\tpublic List<Long> getCanBeFittedWithTypes() { return canBeFittedWithTypes; }\r\n\t\tpublic Boolean isSkill() { return skill; }\r\n\t\tpublic Boolean isMutaplasmid() { return mutaplasmid; }\r\n\t\tpublic Boolean isDynamicItem() { return dynamicItem; }\r\n\t\tpublic Boolean isBlueprint() { return blueprint; }\r\n\t}\r\n\r\n\t\r\n\tpublic static class EveRefDogmaAttribute {\r\n\t\t@SerializedName(value = \"attribute_id\")\r\n\t\tprivate Long attributeID;\r\n\t\tprivate Double value;\r\n\r\n\t\tpublic Long getAttributeID() { return attributeID; }\r\n\t\tpublic Double getValue() { return value; }\r\n\t}\r\n\r\n\tpublic static class EveRefDogmaEffect {\r\n\t\t@SerializedName(value = \"effect_id\")\r\n\t\tprivate Long effectID;\r\n\t\t@SerializedName(value = \"is_default\")\r\n\t\tprivate Boolean isDefault;\r\n\r\n\t\tpublic Long getEffectID() { return effectID; }\r\n\t\tpublic Boolean isDefault() { return isDefault; }\r\n\t}\r\n\r\n\tpublic static class EveRefProducedByBlueprints {\r\n\t\t@SerializedName(value = \"blueprint_type_id\")\r\n\t\tprivate Integer blueprintTypeID;\r\n\t\t@SerializedName(value = \"blueprint_activity\")\r\n\t\tprivate String blueprintActivity;\r\n\r\n\t\tpublic Integer getBlueprintTypeID() { return blueprintTypeID; }\r\n\t\tpublic String getBlueprintActivity() { return blueprintActivity; }\r\n\t}\r\n\r\n\tpublic static class EveRefTraits {\r\n\t\t@SerializedName(value = \"misc_bonuses\")\r\n\t\tprivate Map<String, EveRefRoleBonus> miscBonuses;\r\n\t\t@SerializedName(value = \"role_bonuses\")\r\n\t\tprivate Map<String, EveRefRoleBonus> roleBonuses;\r\n\t\tprivate Map<String, Map<String, EveRefRoleBonus>> types;\r\n\r\n\t\tpublic Map<String, EveRefRoleBonus> getMiscBonuses() { return miscBonuses; }\r\n\t\tpublic Map<String, EveRefRoleBonus> getRoleBonuses() { return roleBonuses; }\r\n\t\tpublic Map<String, Map<String, EveRefRoleBonus>> getTypes() { return types; }\r\n\t}\r\n\r\n\tpublic static class EveRefRoleBonus {\r\n\t\tprivate Double bonus;\r\n\t\t@SerializedName(value = \"bonus_text\")\r\n\t\tprivate Map<String, String> bonusText;\r\n\t\tprivate Long importance;\r\n\t\t@SerializedName(value = \"is_positive\")\r\n\t\tprivate Boolean positive;\r\n\t\t@SerializedName(value = \"unit_id\")\r\n\t\tprivate Long unitID;\r\n\r\n\t\tpublic Double getBonus() { return bonus; }\r\n\t\tpublic Map<String, String> getBonusText() { return bonusText; }\r\n\t\tpublic Long getImportance() { return importance; }\r\n\t\tpublic Boolean isPositive() { return positive; }\r\n\t\tpublic Long getUnitID() { return unitID; }\r\n\t}\r\n\r\n\tpublic static class EveRefTypeMaterial {\r\n\t\t@SerializedName(value = \"material_type_id\")\r\n\t\tprivate Integer materialTypeID;\r\n\t\tprivate Integer quantity;\r\n\r\n\t\tpublic Integer getMaterialTypeID() { return materialTypeID; }\r\n\t\tpublic Integer getQuantity() { return quantity; }\r\n\t}\r\n}"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/online/PriceDataGetter.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.io.online;\n\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.io.FileOutputStream;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.OutputStream;\nimport java.net.Proxy;\nimport java.util.Collections;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.Map;\nimport java.util.Set;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.SplashUpdater;\nimport net.nikr.eve.jeveasset.data.profile.ProfileData;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\nimport net.nikr.eve.jeveasset.data.settings.PriceData;\nimport net.nikr.eve.jeveasset.data.settings.PriceDataSettings.PriceMode;\nimport net.nikr.eve.jeveasset.data.settings.PriceDataSettings.PriceSource;\nimport net.nikr.eve.jeveasset.data.settings.PriceHistoryDatabase;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport uk.me.candle.eve.pricing.Pricing;\nimport uk.me.candle.eve.pricing.PricingFactory;\nimport uk.me.candle.eve.pricing.PricingListener;\nimport uk.me.candle.eve.pricing.options.LocationType;\nimport uk.me.candle.eve.pricing.options.PriceLocation;\nimport uk.me.candle.eve.pricing.options.PriceType;\nimport uk.me.candle.eve.pricing.options.PricingFetch;\nimport uk.me.candle.eve.pricing.options.PricingOptions;\n\n\npublic class PriceDataGetter implements PricingListener {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(PriceDataGetter.class);\n\n\tprivate static final String JANICE = \"\";\n\tprivate static final long PRICE_CACHE_TIMER = 1 * 60 * 60 * 1000L; // 1 hour (hours*min*sec*ms)\n\tprivate static final int ATTEMPT_COUNT = 2;\n\tprivate static final int ZERO_PRICES_WARNING_LIMIT = 10;\n\tprivate static final double FAILED_PERCENT_CANCEL_LIMIT = 5.0;\n\tprivate static final int PLEX_TYPE_ID = 44992;\n\n\tprivate UpdateTask updateTask;\n\tprivate boolean update;\n\tprivate Set<Integer> typeIDs;\n\tprivate Set<Integer> failed;\n\tprivate Set<Integer> okay;\n\tprivate Set<Integer> zero;\n\tprivate Set<Integer> queue;\n\tprivate final Map<Integer, PriceData> updatedList = Collections.synchronizedMap(new HashMap<>());\n\tprivate final Map<Integer, PriceData> priceDataList = Collections.synchronizedMap(new HashMap<>());\n\n\tprivate long nextUpdate = 0;\n\n\tpublic void load() {\n\t\tMap<Integer, PriceData> priceData = processLoad();\n\t\tif (priceData != null) {\n\t\t\tSettings.get().setPriceData(priceData);\n\t\t}\n\t}\n\n\t/**\n\t * Load price data from cache and only update missing price data.\n\t * @param profileData\n\t * @param task UpdateTask to track progress\n\t * @return\n\t */\n\tpublic boolean updateNew(final ProfileData profileData, final UpdateTask task) {\n\t\treturn processUpdate(profileData, task, false);\n\t}\n\n\t/**\n\t * Update of all price data.\n\t * @param profileData\n\t * @param task UpdateTask to track progress\n\t * @return\n\t */\n\tpublic boolean updateAll(final ProfileData profileData, final UpdateTask task) {\n\t\treturn processUpdate(profileData, task, true);\n\t}\n\n\t/**\n\t * Load data from price cache\n\t * @return available price data\n\t */\n\tprivate Map<Integer, PriceData> processLoad() {\n\t\tPricing pricing = PricingFactory.getPricing(PricingFetch.FUZZWORK, new DefaultPricingOptions());\n\t\tLOG.info(\"Price data loading\");\n\t\tfor (Item item : StaticData.get().getItems().values()) { //For each typeID\n\t\t\tif (!item.isMarketGroup()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tint typeID = item.getTypeID();\n\t\t\tPriceData priceData = priceDataList.get(typeID);\n\t\t\tif (priceData == null) {\n\t\t\t\tpriceData = new PriceData();\n\t\t\t\tpriceDataList.put(typeID, priceData);\n\t\t\t}\n\t\t\tboolean ok = false;\n\t\t\tfor (PriceMode priceMode : PriceMode.values()) { //For each PriceMode (all combinations of PricingNumber & PricingType)\n\t\t\t\tPriceType priceType = priceMode.getPricingType();\n\t\t\t\tif (priceType == null) {\n\t\t\t\t\tcontinue; //Ignore calculated prices - f.ex. PriceMode.PRICE_MIDPOINT\n\t\t\t\t}\n\t\t\t\tDouble price = pricing.getPriceCache(typeID, priceType);\n\t\t\t\tif (price != null) {\n\t\t\t\t\tok = true; //Something is set\n\t\t\t\t\tPriceMode.setDefaultPrice(priceData, priceMode, price);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!ok) {\n\t\t\t\tpriceDataList.remove(typeID); //Remove failed typeID\n\t\t\t}\n\t\t\tlong nextUpdateTemp = pricing.getNextUpdateTime(typeID);\n\t\t\tif (nextUpdateTemp >= 0 && nextUpdateTemp > getNextUpdateTime()) {\n\t\t\t\tsetUpdateNext(nextUpdateTemp);\n\t\t\t}\n\t\t}\n\t\tif (!priceDataList.isEmpty()) {\n\t\t\tLOG.info(\"\tPrice data loaded\");\n\t\t\tMap<Integer, PriceData> hashMap = new HashMap<>();\n\t\t\thashMap.putAll(priceDataList);\n\t\t\treturn hashMap; //Return copy of Map\n\t\t} else {\n\t\t\tLOG.info(\"\tPrice data not loaded\");\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Update settings with new price data\n\t * @param task UpdateTask to update progress on\n\t * @param updateAll if true update all prices, if false only update new/missing prices\n\t * @return true if OK or false if FAILED\n\t */\n\tprivate boolean processUpdate(final ProfileData profileData, final UpdateTask task, final boolean updateAll) {\n\t\tSet<Integer> priceTypeIDs = profileData.getPriceTypeIDs();\n\t\t//Remove plex\n\t\tboolean plex;\n\t\tif (Settings.get().getPriceDataSettings().getSource() == PriceSource.FUZZWORK) {\n\t\t\tplex = priceTypeIDs.remove(PLEX_TYPE_ID);\n\t\t} else {\n\t\t\tplex = false;\n\t\t}\n\t\t//Update normal\n\t\tMap<Integer, PriceData> priceData = processUpdate(task, updateAll, new DefaultPricingOptions(), priceTypeIDs, Settings.get().getPriceDataSettings().getSource());\n\t\t//Update plex\n\t\tMap<Integer, PriceData> plexPriceData = null;\n\t\tif (plex) {\n\t\t\tplexPriceData = processUpdate(task, updateAll, new PlexPricingOptions(0), Collections.singleton(PLEX_TYPE_ID), Settings.get().getPriceDataSettings().getSource());\n\t\t}\n\t\tif (priceData != null) {\n\t\t\tif (plexPriceData != null) {\n\t\t\t\tpriceData.putAll(plexPriceData);\n\t\t\t}\n\t\t\tSettings.get().setPriceData(priceData);\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t *\n\t * @param task UpdateTask to update progress on\n\t * @param updateAll true to update all prices. false to only update new/missing prices\n\t * @param pricingOptions Options used doing update\n\t * @param typeIDs TypeIDs to get price data for\n\t * @param priceSource Price data source to update from (only used in log)\n\t * @return\n\t */\n\tprotected Map<Integer, PriceData> processUpdate(final UpdateTask task, final boolean updateAll, final PricingOptions pricingOptions, final Set<Integer> typeIDs, final PriceSource priceSource) {\n\t\tthis.updateTask = task;\n\t\tthis.update = updateAll;\n\t\tthis.typeIDs = Collections.synchronizedSet(new HashSet<>(typeIDs));\n\t\tthis.failed = Collections.synchronizedSet(new HashSet<>());\n\t\tthis.zero = Collections.synchronizedSet(new HashSet<>());\n\t\tthis.okay = Collections.synchronizedSet(new HashSet<>());\n\t\tthis.queue = Collections.synchronizedSet(new HashSet<>(typeIDs));\n\t\tthis.updatedList.clear();\n\n\t\tif (priceSource == PriceSource.JANICE) {\n\t\t\tString janiceKey = Settings.get().getPriceDataSettings().getJaniceKey();\n\t\t\tif (janiceKey != null && !janiceKey.isEmpty()) {\n\t\t\t\tpricingOptions.addHeader(\"X-ApiKey\", janiceKey);\n\t\t\t} else if (JANICE != null && !JANICE.isEmpty()) {\n\t\t\t\tpricingOptions.addHeader(\"X-ApiKey\", JANICE);\n\t\t\t} else if (updateTask != null) {\n\t\t\t\tupdateTask.addError(\"Price data\", \"No Janice API Key\");\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tif (updateAll) {\n\t\t\tLOG.info(\"Price data update all (\" + priceSource + \"):\");\n\t\t} else {\n\t\t\tLOG.info(\"Price data update new (\" + priceSource + \"):\");\n\t\t}\n\n\t\tPricing pricing = PricingFactory.getPricing(priceSource.getPricingFetch(), pricingOptions);\n\n\t\tpricing.addPricingListener(this);\n\n\t\tif (updateAll) { //Update all\n\t\t\tpricing.updatePrices(typeIDs);\n\t\t} else { //Update new\n\t\t\tfor (int id : typeIDs) {\n\t\t\t\tcreatePriceData(id, pricing);\n\t\t\t}\n\t\t}\n\n\t\twhile (!queue.isEmpty()) {\n\t\t\ttry {\n\t\t\t\tsynchronized (this) {\n\t\t\t\t\twait(1000);\n\t\t\t\t}\n\t\t\t} catch (InterruptedException ex) {\n\t\t\t\tLOG.info(\"Failed to update price\");\n\t\t\t\tpricing.cancelAll();\n\t\t\t\tif (updateTask != null) {\n\t\t\t\t\tupdateTask.addWarning(\"Price data\", \"Cancelled\");\n\t\t\t\t\tupdateTask.setTaskProgress(100, 100, 0, 100);\n\t\t\t\t\tupdateTask = null;\n\t\t\t\t}\n\t\t\t\tclear(pricing);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\tboolean updated = !okay.isEmpty() && typeIDs.size() * FAILED_PERCENT_CANCEL_LIMIT / 100 > failed.size();\n\t\t\n\t\tif (!failed.isEmpty()) {\n\t\t\tStringBuilder errorString = new StringBuilder();\n\t\t\tboolean first = true;\n\t\t\tsynchronized (failed) {\n\t\t\t\tfor (int typeID : failed) {\n\t\t\t\t\tif (first) {\n\t\t\t\t\t\tfirst = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrorString.append(\", \");\n\t\t\t\t\t}\n\t\t\t\t\terrorString.append(typeID);\n\t\t\t\t}\n\t\t\t}\n\t\t\tLOG.error(\"Failed to update price data for the following typeIDs: \" + errorString.toString());\n\t\t\tif (updated && updateTask != null) {\n\t\t\t\tupdateTask.addError(\"Price data\", \"Failed to update price data for \" + failed.size() + \" of \" + typeIDs.size() + \" item types\");\n\t\t\t}\n\t\t}\n\t\tif (!zero.isEmpty()) {\n\t\t\tStringBuilder errorString = new StringBuilder();\n\t\t\tsynchronized (zero) {\n\t\t\t\tboolean first = true;\n\t\t\t\tfor (int typeID : zero) {\n\t\t\t\t\tif (first) {\n\t\t\t\t\t\tfirst = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrorString.append(\", \");\n\t\t\t\t\t}\n\t\t\t\t\terrorString.append(typeID);\n\t\t\t\t}\n\t\t\t}\n\t\t\tLOG.warn(\"Price data is zero for the following typeIDs: \" + errorString.toString());\n\t\t\tif (updated && updateTask != null && typeIDs.size() * ZERO_PRICES_WARNING_LIMIT / 100 < zero.size()) {\n\t\t\t\tupdateTask.addWarning(\"Price data\", \"Price data is zero for \" + zero.size() + \" of \" + typeIDs.size() + \" item types\");\n\t\t\t}\n\t\t}\n\t\tif (updated) { //All Updated\n\t\t\tif (updateAll) {\n\t\t\t\tLOG.info(\"\tPrice data updated\");\n\t\t\t} else {\n\t\t\t\tLOG.info(\"\tPrice data loaded\");\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tpricing.writeCache();\n\t\t\t\tLOG.info(\"\tPrice data cached saved\");\n\t\t\t} catch (IOException ex) {\n\t\t\t\tLOG.error(\"Failed to write price data cache\", ex);\n\t\t\t}\n\t\t\t//We only set the price data if everthing worked (AKA all updated)\n\t\t\ttry {\n\t\t\t\t//return new HashMap<Integer, PriceData>(priceDataList);\n\t\t\t\t// XXX - Workaround for ConcurrentModificationException in HashMap constructor\n\t\t\t\tMap<Integer, PriceData> hashMap = new HashMap<>();\n\t\t\t\tpriceDataList.keySet().removeAll(failed); //Remove failed\n\t\t\t\thashMap.putAll(priceDataList);\n\t\t\t\tPriceHistoryDatabase.setPriceData(updatedList);\n\t\t\t\treturn hashMap;\n\t\t\t} finally {\n\t\t\t\tclear(pricing);\n\t\t\t}\n\t\t} else { //None or some updated\n\t\t\tLOG.info(\"\tFailed to update price data\");\n\t\t\tif (updateTask != null) {\n\t\t\t\tupdateTask.addError(\"Price data\", \"Failed to update price data\");\n\t\t\t\tupdateTask.setTaskProgress(100, 100, 0, 100);\n\t\t\t}\n\t\t\tclear(pricing);\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic synchronized Date getNextUpdate() {\n\t\treturn new Date(nextUpdate + PRICE_CACHE_TIMER);\n\t}\n\n\tprivate synchronized long getNextUpdateTime() {\n\t\treturn nextUpdate;\n\t}\n\n\tprivate synchronized void setUpdateNext(long nextUpdate) {\n\t\tthis.nextUpdate = nextUpdate;\n\t}\n\n\tprivate void clear(Pricing pricing) {\n\t\t//Memory\n\t\tSplashUpdater.setSubProgress(100);\n\t\tthis.updateTask = null;\n\t\tthis.typeIDs.clear();\n\t\tthis.failed.clear();\n\t\tpricing.removePricingListener(this);\n\t}\n\n\t@Override\n\tpublic void priceUpdated(final int typeID, final Pricing pricing) {\n\t\tcreatePriceData(typeID, pricing);\n\t\tqueue.remove(typeID);\n\t\tsynchronized (this) {\n\t\t\tnotify();\n\t\t}\n\t}\n\n\t@Override\n\tpublic void priceUpdateFailed(final int typeID, final Pricing pricing) {\n\t\tfailed.add(typeID);\n\t\tqueue.remove(typeID);\n\t\tsynchronized (this) {\n\t\t\tnotify();\n\t\t}\n\t}\n\n\tprivate void createPriceData(final int typeID, final Pricing pricing) {\n\t\tPriceData priceData = priceDataList.get(typeID);\n\t\tif (priceData == null) {\n\t\t\tpriceData = new PriceData();\n\t\t\tpriceDataList.put(typeID, priceData);\n\t\t}\n\t\tboolean ok = false;\n\t\tboolean isZero = true;\n\t\tfor (PriceMode priceMode : PriceMode.values()) {\n\t\t\tPriceType priceType = priceMode.getPricingType();\n\t\t\tif (priceType == null) {\n\t\t\t\tcontinue; //Ignore calculated prices - f.ex. PriceMode.PRICE_MIDPOINT\n\t\t\t}\n\t\t\tDouble price = pricing.getPrice(typeID, priceType);\n\t\t\tif (price != null) {\n\t\t\t\tok = true; //Something is set\n\t\t\t\tPriceMode.setDefaultPrice(priceData, priceMode, price);\n\t\t\t\tif (price != 0) {\n\t\t\t\t\tisZero = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (ok) {\n\t\t\tif (isZero) {\n\t\t\t\tzero.add(typeID);\n\t\t\t}\n\t\t\tupdatedList.put(typeID, priceData);\n\t\t\tokay.add(typeID);\n\t\t\tfailed.remove(typeID);\n\t\t\tqueue.remove(typeID); //Load price...\n\t\t} else {\n\t\t\tfailed.add(typeID);\n\t\t}\n\t\tlong nextUpdateTemp = pricing.getNextUpdateTime(typeID);\n\n\t\tif (nextUpdateTemp >= 0 && nextUpdateTemp > getNextUpdateTime()) {\n\t\t\tsetUpdateNext(nextUpdateTemp);\n\t\t}\n\t\tif (updateTask != null) {\n\t\t\tupdateTask.setTaskProgress(typeIDs.size(), okay.size(), 0, 100);\n\t\t}\n\t\tif (!okay.isEmpty() && !typeIDs.isEmpty()) {\n\t\t\tSplashUpdater.setSubProgress((int) (okay.size() * 100.0 / typeIDs.size()));\n\t\t}\n\t}\n\n\tprivate class PlexPricingOptions extends DefaultPricingOptions {\n\n\t\tprivate final int globalPlexMarketRegionID;\n\n\t\tpublic PlexPricingOptions(int globalPlexMarketRegionID) {\n\t\t\tthis.globalPlexMarketRegionID = globalPlexMarketRegionID;\n\t\t}\n\n\t\t@Override\n\t\tpublic PriceLocation getLocation() {\n\t\t\treturn new PriceLocation() {\n\t\t\t\t@Override\n\t\t\t\tpublic long getRegionID() {\n\t\t\t\t\treturn globalPlexMarketRegionID;\n\t\t\t\t}\n\t\t\t\t@Override\n\t\t\t\tpublic long getLocationID() {\n\t\t\t\t\treturn globalPlexMarketRegionID;\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t@Override\n\t\tpublic LocationType getLocationType() {\n\t\t\treturn LocationType.REGION;\n\t\t}\n\t\t\n\t}\n\n\tprivate class DefaultPricingOptions implements PricingOptions {\n\n\t\t@Override\n\t\tpublic long getPriceCacheTimer() {\n\t\t\treturn PRICE_CACHE_TIMER;\n\t\t}\n\n\t\t@Override\n\t\tpublic LocationType getLocationType() {\n\t\t\treturn Settings.get().getPriceDataSettings().getLocationType();\n\t\t}\n\n\t\t@Override\n\t\tpublic PriceLocation getLocation() {\n\t\t\treturn ApiIdConverter.getLocation(Settings.get().getPriceDataSettings().getLocationID());\n\t\t}\n\n\t\t@Override\n\t\tpublic InputStream getCacheInputStream() throws IOException {\n\t\t\tFile file = new File(FileUtil.getPathPriceData());\n\t\t\tif (file.exists()) {\n\t\t\t\treturn new FileInputStream(file);\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\n\t\t@Override\n\t\tpublic OutputStream getCacheOutputStream() throws IOException {\n\t\t\treturn new FileOutputStream(FileUtil.getPathPriceData());\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean getCacheTimersEnabled() {\n\t\t\treturn update;\n\t\t}\n\n\t\t@Override\n\t\tpublic Proxy getProxy() {\n\t\t\treturn null;\n\t\t}\n\n\t\t@Override\n\t\tpublic int getAttemptCount() {\n\t\t\treturn ATTEMPT_COUNT;\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean getUseBinaryErrorSearch() {\n\t\t\treturn false;\n\t\t}\n\n\t\t@Override\n\t\tpublic int getTimeout() {\n\t\t\treturn 20000;\n\t\t}\n\n\t\t@Override\n\t\tpublic String getUserAgent() {\n\t\t\treturn Program.PROGRAM_USER_AGENT;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/online/UpdateTaskInputStream.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.online;\r\n\r\nimport java.io.FilterInputStream;\r\nimport java.io.IOException;\r\nimport java.io.InputStream;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\n\r\n\r\npublic class UpdateTaskInputStream extends FilterInputStream {\r\n\tprivate final long maxNumBytes;\r\n\tprivate final UpdateTask updateTask;\r\n\tprivate final int start;\r\n\tprivate final int end;\r\n\r\n\tprivate volatile long totalNumBytesRead;\r\n\r\n\tpublic UpdateTaskInputStream(final InputStream in, final long maxNumBytes, final UpdateTask updateTask) {\r\n\t\tthis(in, maxNumBytes, updateTask, 0, 100);\r\n\t}\r\n\r\n\tpublic UpdateTaskInputStream(final InputStream in, final long maxNumBytes, final UpdateTask updateTask, int start, int end) {\r\n\t\tsuper(in);\r\n\t\tthis.maxNumBytes = maxNumBytes;\r\n\t\tthis.updateTask = updateTask;\r\n\t\tthis.start = start;\r\n\t\tthis.end = end;\r\n\t}\r\n\r\n\tpublic long getMaxNumBytes() {\r\n\t\treturn maxNumBytes;\r\n\t}\r\n\r\n\tpublic long getTotalNumBytesRead() {\r\n\t\treturn totalNumBytesRead;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int read() throws IOException {\r\n\t\treturn updateProgressInteger(super.read());\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int read(byte[] b) throws IOException {\r\n\t\treturn updateProgressInteger(super.read(b));\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int read(byte[] b, int off, int len) throws IOException {\r\n\t\treturn updateProgressInteger(super.read(b, off, len));\r\n\t}\r\n\r\n\t@Override\r\n\tpublic long skip(long n) throws IOException {\r\n\t\treturn updateProgressLong(super.skip(n));\r\n\t}\r\n\r\n\t@Override\r\n\tpublic synchronized void mark(int readlimit) {\r\n\t\tthrow new UnsupportedOperationException();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic synchronized void reset() throws IOException {\r\n\t\tthrow new UnsupportedOperationException();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean markSupported() {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate int updateProgressInteger(final int numBytesRead) {\r\n\t\tupdateProgressLong(numBytesRead);\r\n\t\treturn numBytesRead;\r\n\t}\r\n\r\n\tprivate long updateProgressLong(final long numBytesRead) {\r\n\t\tif (numBytesRead > 0) {\r\n\t\t\tthis.totalNumBytesRead += numBytesRead;\r\n\t\t\tif (updateTask != null) {\r\n\t\t\t\tupdateTask.setTaskProgress(maxNumBytes, totalNumBytesRead, start, end);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn numBytesRead;\r\n\t}\r\n\r\n}"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/online/Updater.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * Original code from jWarframe (https://github.com/GoldenGnu/jwarframe)\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.io.online;\r\n\r\nimport java.io.BufferedReader;\r\nimport java.io.File;\r\nimport java.io.FileInputStream;\r\nimport java.io.FileNotFoundException;\r\nimport java.io.FileReader;\r\nimport java.io.IOException;\r\nimport java.io.InputStreamReader;\r\nimport java.io.Reader;\r\nimport java.net.MalformedURLException;\r\nimport java.net.URL;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport java.util.Properties;\r\nimport java.util.logging.Level;\r\nimport java.util.logging.Logger;\r\nimport javax.swing.JOptionPane;\r\nimport net.nikr.eve.jeveasset.CliOptions;\r\nimport net.nikr.eve.jeveasset.Main;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.ProxyData;\r\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\r\n\r\n\r\npublic class Updater {\r\n\tprivate static final Logger LOG = Logger.getLogger(Updater.class.getName());\r\n\r\n\tprivate static final String UPDATE_URL = \"https://eve.nikr.net/jeveassets/update/\";\r\n\tprivate static final String PROGRAM =\t UPDATE_URL + \"program/\";\r\n\tprivate static final String DATA =\t\t UPDATE_URL + \"data/\";\r\n\tprivate static final String UPDATE =\t UPDATE_URL + \"jupdate.jar\";\r\n\r\n\tpublic void update(final String localProgram, String localData, ProxyData proxyData) {\r\n\t\tif (isPackageManager() && !getPackageNotifyUpdates()) {\r\n\t\t\tLOG.info(\"Not checking for updates (package manager enabled)\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tLOG.info(\"Checking online version\");\r\n\t\tGetter getter = new Getter();\r\n\t\tfinal String onlineProgram = getter.get(PROGRAM+\"update_version.dat\");\r\n\t\tupdate(\"Program\", onlineProgram, localProgram, PROGRAM, proxyData);\r\n\t\tfinal String onlineData = getter.get(DATA+\"update_version.dat\");\r\n\t\tif (localData == null) {\r\n\t\t\tfixData();\r\n\t\t} else {\r\n\t\t\tupdate(\"Static data\", onlineData, localData, DATA, proxyData);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic boolean checkProgramUpdate(final String localProgram) {\r\n\t\tif (isPackageManager()) {\r\n\t\t\tLOG.info(\"Not checking for updates (package manager enabled)\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tLOG.info(\"Checking online version\");\r\n\t\tGetter getter = new Getter();\r\n\t\tfinal String onlineProgram = getter.get(PROGRAM+\"update_version.dat\");\r\n\t\treturn onlineProgram != null && !onlineProgram.equals(localProgram);\r\n\t}\r\n\r\n\tpublic boolean checkDataUpdate(String localData) {\r\n\t\tif (isPackageManager()) {\r\n\t\t\tLOG.info(\"Not checking for updates (package manager enabled)\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tLOG.info(\"Checking online version\");\r\n\t\tGetter getter = new Getter();\r\n\t\tfinal String onlineData = getter.get(DATA+\"update_version.dat\");\r\n\t\treturn onlineData != null && !onlineData.equals(localData);\r\n\t}\r\n\r\n\tpublic void fixData() {\r\n\t\tif (isPackageManager()) {\r\n\t\t\tJOptionPane.showMessageDialog(Main.getTop(),\r\n\t\t\t\t\"One of the data files in the data folder is corrupted or missing\\r\\n\"\r\n\t\t\t\t+ \"jEveAssets will not work without it\\r\\n\"\r\n\t\t\t\t+ \"Please use your package manager to correct the problem\\r\\n\"\r\n\t\t\t\t, Program.PROGRAM_NAME + \" - Critical Error\", JOptionPane.ERROR_MESSAGE);\r\n\t\t\tSystem.exit(-1);\r\n\t\t}\r\n\t\tint value = JOptionPane.showConfirmDialog(Main.getTop(),\r\n\t\t\t\t\"One of the data files in the data folder is corrupted or missing\\r\\n\"\r\n\t\t\t\t+ \"jEveAssets will not work without it\\r\\n\"\r\n\t\t\t\t+ \"Download the latest version with auto update?\\r\\n\"\r\n\t\t\t\t,\r\n\t\t\t\tProgram.PROGRAM_NAME + \" - Critical Error\",\r\n\t\t\t\tJOptionPane.OK_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE);\r\n\t\tif (value == JOptionPane.OK_OPTION) {\r\n\t\t\tLOG.info(\"Updating data\");\r\n\t\t\tboolean download = downloadUpdater();\r\n\t\t\tif (download) {\r\n\t\t\t\trunUpdate(DATA, null);\r\n\t\t\t} else {\r\n\t\t\t\tJOptionPane.showMessageDialog(Main.getTop(), \"Auto update failed\\r\\n\"\r\n\t\t\t\t\t\t+ \"Please, re-download jEveAssets and leave the unzipped directory intact\\r\\n\"\r\n\t\t\t\t\t\t+ \"Press OK to close jEveAssets\",\r\n\t\t\t\t\t\tProgram.PROGRAM_NAME + \" - Critical Error\",\r\n\t\t\t\t\t\tJOptionPane.ERROR_MESSAGE);\r\n\t\t\t\tSystem.exit(-1);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tJOptionPane.showMessageDialog(Main.getTop(), \"Please, re-download jEveAssets and leave the unzipped directory intact\\r\\n\"\r\n\t\t\t\t\t+ \"Restart jEveAssets to use auto update to fix the problem\\r\\n\"\r\n\t\t\t\t\t+ \"Press OK to close jEveAssets\",\r\n\t\t\t\t\tProgram.PROGRAM_NAME + \" - Critical Error\",\r\n\t\t\t\t\tJOptionPane.ERROR_MESSAGE);\r\n\t\t\tSystem.exit(-1);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void fixLibs() {\r\n\t\tif (isPackageManager()) {\r\n\t\t\tJOptionPane.showMessageDialog(Main.getTop(),\r\n\t\t\t\t\"One of the libraies in the lib folder is corrupted or missing\\r\\n\"\r\n\t\t\t\t+ \"jEveAssets will not work without it\\r\\n\"\r\n\t\t\t\t+ \"Please use your package manager to correct the problem\\r\\n\"\r\n\t\t\t\t, Program.PROGRAM_NAME + \" - Critical Error\", JOptionPane.ERROR_MESSAGE);\r\n\t\t\tSystem.exit(-1);\r\n\t\t}\r\n\t\tint value = JOptionPane.showConfirmDialog(Main.getTop(),\r\n\t\t\t\t\"One of the libraies in the lib folder is corrupted or missing\\r\\n\"\r\n\t\t\t\t+ \"jEveAssets will not work without it\\r\\n\"\r\n\t\t\t\t+ \"Download the latest version with auto update?\\r\\n\"\r\n\t\t\t\t,\r\n\t\t\t\tProgram.PROGRAM_NAME + \" - Critical Error\",\r\n\t\t\t\tJOptionPane.OK_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE);\r\n\t\tif (value == JOptionPane.OK_OPTION) {\r\n\t\t\tLOG.info(\"Updating program\");\r\n\t\t\tboolean download = downloadUpdater();\r\n\t\t\tif (download) {\r\n\t\t\t\trunUpdate(PROGRAM, null);\r\n\t\t\t} else {\r\n\t\t\t\tJOptionPane.showMessageDialog(Main.getTop(), \"Auto update failed\\r\\n\"\r\n\t\t\t\t\t\t+ \"Please, re-download jEveAssets and leave the unzipped directory intact\\r\\n\"\r\n\t\t\t\t\t\t+ \"Press OK to close jEveAssets\",\r\n\t\t\t\t\t\tProgram.PROGRAM_NAME + \" - Critical Error\",\r\n\t\t\t\t\t\tJOptionPane.ERROR_MESSAGE);\r\n\t\t\t\tSystem.exit(-1);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tJOptionPane.showMessageDialog(Main.getTop(), \"Please, re-download jEveAssets and leave the unzipped directory intact\\r\\n\"\r\n\t\t\t\t\t+ \"Restart jEveAssets to use auto update to fix the problem\\r\\n\"\r\n\t\t\t\t\t+ \"Press OK to close jEveAssets\",\r\n\t\t\t\t\tProgram.PROGRAM_NAME + \" - Critical Error\",\r\n\t\t\t\t\tJOptionPane.ERROR_MESSAGE);\r\n\t\t\tSystem.exit(-1);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void fixMissingClasses() {\r\n\t\tif (isPackageManager()) {\r\n\t\t\tJOptionPane.showMessageDialog(Main.getTop(),\r\n\t\t\t\t\"jEveAssets have been corrupted\\r\\n\"\r\n\t\t\t\t+ \"Please use your package manager to correct the problem\\r\\n\"\r\n\t\t\t\t, Program.PROGRAM_NAME + \" - Critical Error\", JOptionPane.ERROR_MESSAGE);\r\n\t\t\tSystem.exit(-1);\r\n\t\t}\r\n\t\tint value = JOptionPane.showConfirmDialog(Main.getTop(),\r\n\t\t\t\t\"jEveAssets have been corrupted\\r\\n\"\r\n\t\t\t\t+ \"You may be able to use auto update to fix the problem\\r\\n\"\r\n\t\t\t\t+ \"Download the latest version with auto update?\\r\\n\"\r\n\t\t\t\t, Program.PROGRAM_NAME + \" - Critical Error\", JOptionPane.OK_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE);\r\n\t\tif (value == JOptionPane.OK_OPTION) {\r\n\t\t\tLOG.info(\"Updating program\");\r\n\t\t\tboolean download = downloadUpdater();\r\n\t\t\tif (download) {\r\n\t\t\t\trunUpdate(PROGRAM, null);\r\n\t\t\t} else {\r\n\t\t\t\tJOptionPane.showMessageDialog(Main.getTop(),\r\n\t\t\t\t\t\t\"Auto update failed\\r\\n\"\r\n\t\t\t\t\t\t+ \"Please, re-download jEveAssets and leave the unzipped directory intact\\r\\n\"\r\n\t\t\t\t\t\t+ \"Press OK to close jEveAssets\"\r\n\t\t\t\t\t\t, Program.PROGRAM_NAME + \" - Critical Error\", JOptionPane.ERROR_MESSAGE);\r\n\t\t\t\tSystem.exit(-1);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tJOptionPane.showMessageDialog(Main.getTop(),\r\n\t\t\t\t\t\"Please, re-download jEveAssets and leave the unzipped directory intact\\r\\n\"\r\n\t\t\t\t\t+ \"Restart jEveAssets to use auto update to fix the problem\\r\\n\"\r\n\t\t\t\t\t+ \"Press OK to close jEveAssets\"\r\n\t\t\t\t\t, Program.PROGRAM_NAME + \" - Critical Error\", JOptionPane.ERROR_MESSAGE);\r\n\t\t\tSystem.exit(-1);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic String getLocalData() {\r\n\t\tGetter getter = new Getter();\r\n\t\treturn getter.get(new File(FileUtil.getPathDataVersion()));\r\n\t}\r\n\r\n\tprivate void update(String title, String online, String local, String link, ProxyData proxyData) {\r\n\t\tLOG.log(Level.INFO, \"{0} Online: {1} Local: {2}\", new Object[]{title.toUpperCase(), online, local});\r\n\t\tif (online != null && !online.equals(local)) {\r\n\t\t\tif (isPackageManager()) {\r\n\t\t\t\tJOptionPane.showMessageDialog(Main.getTop(),\r\n\t\t\t\t\ttitle + \" update available\\r\\n\"\r\n\t\t\t\t\t+ \"\\r\\n\"\r\n\t\t\t\t\t+ \"Your version: \" + local + \"\\r\\n\"\r\n\t\t\t\t\t+ \"Latest version: \" + online + \"\\r\\n\"\r\n\t\t\t\t\t+ \"\\r\\n\"\r\n\t\t\t\t\t+ \"Please use your package manager to update\\r\\n\"\r\n\t\t\t\t\t+ \"\\r\\n\"\r\n\t\t\t\t\t,\r\n\t\t\t\t\tProgram.PROGRAM_NAME + \" - Auto Update\",\r\n\t\t\t\t\tJOptionPane.PLAIN_MESSAGE);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tint value = JOptionPane.showConfirmDialog(Main.getTop(),\r\n\t\t\t\t\ttitle + \" update available\\r\\n\"\r\n\t\t\t\t\t+ \"\\r\\n\"\r\n\t\t\t\t\t+ \"Your version: \" + local + \"\\r\\n\"\r\n\t\t\t\t\t+ \"Latest version: \" + online + \"\\r\\n\"\r\n\t\t\t\t\t+ \"\\r\\n\"\r\n\t\t\t\t\t+ \"Update \" + title.toLowerCase() + \" now?\\r\\n\"\r\n\t\t\t\t\t+ \"\\r\\n\"\r\n\t\t\t\t\t,\r\n\t\t\t\t\tProgram.PROGRAM_NAME + \" - Auto Update\",\r\n\t\t\t\t\tJOptionPane.OK_CANCEL_OPTION);\r\n\t\t\tif (value == JOptionPane.OK_OPTION) {\r\n\t\t\t\tLOG.log(Level.INFO, \"Updating {0}\", title);\r\n\t\t\t\tboolean download = downloadUpdater();\r\n\t\t\t\tif (download) {\r\n\t\t\t\t\trunUpdate(link, proxyData);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tJOptionPane.showMessageDialog(Main.getTop(), \"Auto update failed\\r\\n\"\r\n\t\t\t\t\t\t\t+ \"Restart jEveAssets to try again...\",\r\n\t\t\t\t\t\t\t\"jEveAssets - Auto Update\",\r\n\t\t\t\t\t\t\tJOptionPane.ERROR_MESSAGE);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void runUpdate(String link, ProxyData proxyData) {\r\n\t\tProcessBuilder processBuilder = new ProcessBuilder();\r\n\t\tprocessBuilder.directory(getJavaHome());\r\n\t\tprocessBuilder.command(getArgsString(link, proxyData));\r\n\t\ttry {\r\n\t\t\tprocessBuilder.start();\r\n\t\t\tSystem.exit(0);\r\n\t\t} catch (IOException ex) {\r\n\t\t\tLOG.log(Level.SEVERE, \"Failed to start jupdate.jar\", ex);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate File getJavaHome() {\r\n\t\treturn new File(System.getProperty(\"java.home\") + File.separator + \"bin\");\r\n\t}\r\n\r\n\tprivate List<String> getArgsString(String link, ProxyData proxyData) {\r\n\t\tList<String> list = new ArrayList<>();\r\n\t\tlist.add(\"java\");\r\n\t\tif (proxyData != null) {\r\n\t\t\tlist.addAll(proxyData.getArgs());\r\n\t\t} else {\r\n\t\t\tlist.add(\"-Djava.net.useSystemProxies=true\");\r\n\t\t}\r\n\t\tlist.add(\"-jar\");\r\n\t\tlist.add(FileUtil.getPathRunUpdate());\r\n\t\tlist.add(link);\r\n\t\tif (CliOptions.get().isJmemory()) {\r\n\t\t\tlist.add(FileUtil.getPathRunMemory());\r\n\t\t} else {\r\n\t\t\tlist.add(FileUtil.getPathRunJar());\r\n\t\t}\r\n\t\treturn list;\r\n\t}\r\n\r\n\tpublic static boolean isPackageManager() {\r\n\t\treturn new File(FileUtil.getPathPackageManager()).exists();\r\n\t}\r\n\r\n\tpublic static String getPackageMaintainers() {\r\n\t\treturn readProperties(FileUtil.getPathPackageManager()).getProperty(\"maintainers\", null);\r\n\t}\r\n\r\n\tpublic static boolean getPackageNotifyUpdates() {\r\n\t\treturn \"true\".equals(readProperties(FileUtil.getPathPackageManager()).getProperty(\"notifyUpdates\", \"\").toLowerCase());\r\n\t}\r\n\r\n\tprivate static Properties readProperties(String filename) {\r\n\t\tProperties properties = new Properties();\r\n\t\tFileInputStream inputStream = null;\r\n\t\ttry {\r\n\t\t\tinputStream = new FileInputStream(new File(filename));\r\n\t\t\tproperties.load(inputStream);\r\n\t\t} catch (IOException ex) {\r\n\t\t\t//No problem\r\n\t\t} finally {\r\n\t\t\tif (inputStream != null) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tinputStream.close();\r\n\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\t//No problem\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn properties; //Never null\r\n\t}\r\n\r\n\tprivate boolean downloadUpdater() {\r\n\t\tDataGetter dataGetter = new DataGetter();\r\n\t\tGetter getter = new Getter();\r\n\t\tString checksum = getter.get(UPDATE+\".md5\");\r\n\t\treturn dataGetter.get(UPDATE, new File(FileUtil.getPathRunUpdate()), checksum);\r\n\t}\r\n\r\n\tprivate static class Getter {\r\n\r\n\t\tprotected String get(File file) {\r\n\t\t\ttry {\r\n\t\t\t\treturn get(new FileReader(file));\r\n\t\t\t} catch (FileNotFoundException ex) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprotected String get(String link) {\r\n\t\t\ttry {\r\n\t\t\t\tURL url = new URL(link);\r\n\t\t\t\treturn get(new InputStreamReader(url.openStream()));\r\n\t\t\t} catch (MalformedURLException e) {\r\n\t\t\t\treturn null;\r\n\t\t\t} catch (IOException ex) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprotected String get(Reader reader) {\r\n\t\t\tStringBuilder builder = new StringBuilder();\r\n\t\t\ttry {\r\n\t\t\t\tBufferedReader in = new BufferedReader(reader);\r\n\r\n\t\t\t\tString str;\r\n\t\t\t\twhile ((str = in.readLine()) != null) {\r\n\t\t\t\t\tbuilder.append(str);\r\n\t\t\t\t}\r\n\t\t\t\treturn builder.toString();\r\n\t\t\t} catch (MalformedURLException e) {\r\n\t\t\t\treturn null;\r\n\t\t\t} catch (IOException e) {\r\n\t\t\t\treturn null;\r\n\t\t\t} finally {\r\n\t\t\t\tif (reader != null) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\treader.close();\r\n\t\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\t\t//I give up...\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/online/ZkillboardPricesHistoryGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.online;\r\n\r\nimport com.google.gson.Gson;\r\nimport com.google.gson.GsonBuilder;\r\nimport com.google.gson.JsonParseException;\r\nimport com.google.gson.reflect.TypeToken;\r\nimport java.io.IOException;\r\nimport java.util.Map;\r\nimport java.util.concurrent.Callable;\r\nimport java.util.concurrent.ExecutionException;\r\nimport java.util.concurrent.ExecutorService;\r\nimport java.util.concurrent.Executors;\r\nimport java.util.concurrent.Future;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport okhttp3.Call;\r\nimport okhttp3.OkHttpClient;\r\nimport okhttp3.Request;\r\nimport okhttp3.logging.HttpLoggingInterceptor;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class ZkillboardPricesHistoryGetter {\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(ZkillboardPricesHistoryGetter.class);\r\n\r\n\tprivate static final long RATE_LIMIT_MS = 1010;\r\n\tprivate static final ExecutorService THREAD_POOL = Executors.newSingleThreadExecutor();\r\n\tprivate static final Gson GSON = new GsonBuilder().create();\r\n\tprivate static Long wait = null;\r\n\tprivate static Long ended = null;\r\n\t/**\r\n\t* HttpLoggingInterceptor\r\n\t*/\r\n\tprivate static final HttpLoggingInterceptor HTTP_LOGGING_INTERCEPTOR = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {\r\n\t\t\t\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\t\t\t\tpublic void log(String string) {\r\n\t\t\t\t\t\t\t\t\t\tLOG.debug(string);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t/**\r\n\t * HTTP Client\r\n\t */\r\n\tprivate final OkHttpClient client;\r\n\r\n\tprivate static ZkillboardPricesHistoryGetter getter;\r\n\r\n\tprivate ZkillboardPricesHistoryGetter() {\r\n\t\tif (LOG.isDebugEnabled()) {\r\n\t\t\tclient = new OkHttpClient().newBuilder()\r\n\t\t\t\t.addNetworkInterceptor(HTTP_LOGGING_INTERCEPTOR)\r\n\t\t\t\t.build();\r\n\t\t\tHTTP_LOGGING_INTERCEPTOR.setLevel(HttpLoggingInterceptor.Level.BASIC);\r\n\t\t} else {\r\n\t\t\t client = new OkHttpClient().newBuilder().build();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static Map<String, Double> getPriceHistory(int TypeID) {\r\n\t\tif (getter == null) {\r\n\t\t\tgetter = new ZkillboardPricesHistoryGetter();\r\n\t\t}\r\n\t\treturn getter.update(TypeID);\r\n\t}\r\n\r\n\tprivate Map<String, Double> update(int TypeID) {\r\n\t\tFuture<Map<String, Double>> future = THREAD_POOL.submit(new PriceHistoryUpdate(TypeID));\r\n\t\ttry {\r\n\t\t\treturn future.get();\r\n\t\t} catch (InterruptedException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t} catch (ExecutionException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t}\r\n\t\treturn null; //Failed\r\n\t}\r\n\r\n\tprivate class PriceHistoryUpdate implements Callable<Map<String, Double>> {\r\n\r\n\t\tprivate final int typeID;\r\n\r\n\t\tpublic PriceHistoryUpdate(int typeID) {\r\n\t\t\tthis.typeID = typeID;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic Map<String, Double> call() throws Exception {\r\n\t\t\tif (wait != null && ended != null && System.currentTimeMillis() < (ended + wait)) {\r\n\t\t\t\tLOG.info(\"Waiting: \" + (wait) + \"ms\");\r\n\t\t\t\tThread.sleep(wait);\r\n\t\t\t}\r\n\t\t\tlong start = System.currentTimeMillis();\r\n\t\t\tMap<String, Double> results = null;\r\n\t\t\ttry {\r\n\t\t\t\tresults = GSON.fromJson(getCall(typeID).execute().body().string(), new TypeToken<Map<String, Double>>() {}.getType());\r\n\t\t\t\tif (results == null) {\r\n\t\t\t\t\tLOG.error(\"Error fetching price\", new Exception(\"results is null\"));\r\n\t\t\t\t}\r\n\t\t\t} catch (IllegalArgumentException | IOException | JsonParseException ex) {\r\n\t\t\t\tLOG.error(\"Error fetching price\", ex);\r\n\t\t\t}\r\n\t\t\tlong duration = System.currentTimeMillis() - start;\r\n\t\t\tLOG.info(\"Completed in \" + duration + \"ms\");\r\n\t\t\tif (duration < RATE_LIMIT_MS) {\r\n\t\t\t\twait = (RATE_LIMIT_MS - duration);\r\n\t\t\t\tended = System.currentTimeMillis();\r\n\t\t\t} else {\r\n\t\t\t\twait = null;\r\n\t\t\t\tended = null;\r\n\t\t\t}\r\n\t\t\tif (results != null) {\r\n\t\t\t\tresults.remove(\"typeID\");\r\n\t\t\t\tresults.remove(\"currentPrice\");\r\n\t\t\t}\r\n\t\t\treturn results;\r\n\t\t}\r\n\r\n\t\tpublic Call getCall(Integer typeID) {\r\n\t\t\tRequest.Builder request = new Request.Builder()\r\n\t\t\t\t\t.url(\"https://zkillboard.com/api/prices/\" + typeID+ \"/\")\r\n\t\t\t\t\t.addHeader(\"User-Agent\", Program.PROGRAM_USER_AGENT);\r\n\t\t\treturn client.newCall(request.build());\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/shared/AbstractGetter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.shared;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\nimport java.util.Collections;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport java.util.TreeMap;\r\nimport java.util.concurrent.Callable;\r\nimport java.util.concurrent.Future;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport net.nikr.eve.jeveasset.gui.shared.StringComparators;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\nimport net.nikr.eve.jeveasset.gui.shared.Updatable;\r\nimport net.nikr.eve.jeveasset.io.shared.ThreadWoker.TaskCancelledException;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic abstract class AbstractGetter<O extends OwnerType> implements Runnable {\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(AbstractGetter.class);\r\n\tprivate static final long NEXT_UPDATE_ADDED_TIME = 30L * 1000L; //30 seconds\r\n\r\n\tprotected static final int NO_RETRIES = 0;\r\n\r\n\tprotected enum TaskType {\r\n\t\tACCOUNT_BALANCE(\"Account Balance\"),\r\n\t\tASSETS(\"Assets\"),\r\n\t\tBLUEPRINTS(\"Blueprints\"),\r\n\t\tCONTRACTS(\"Contracts\"),\r\n\t\tCLONES(\"Clones\"),\r\n\t\tCONTRACT_ITEMS(\"Contract Items\"),\r\n\t\tCONTRACT_PRICES(\"Contract Prices\"),\r\n\t\tDIVISIONS(\"Division Names\"),\r\n\t\tINDUSTRY_JOBS(\"Industry Jobs\"),\r\n\t\tITEM_TYPES(\"Item Types\"),\r\n\t\tJOURNAL(\"Journal\"),\r\n\t\tLOCATIONS(\"Locations\"),\r\n\t\tMARKET_ORDERS(\"Market Orders\"),\r\n\t\tMINING(\"Mining\"),\r\n\t\tPUBLIC_MARKET_ORDERS(\"Public Market Orders\"),\r\n\t\tOWNER(\"Account\"),\r\n\t\tOWNER_ID_TO_NAME(\"IDs to Names\"),\r\n\t\tFACTION_WARFARE(\"Faction Warfare\"),\r\n\t\tPLANETARY_INTERACTION(\"Planetary Assets\"),\r\n\t\tSHIP(\"Active Ship\"),\r\n\t\tSTRUCTURES(\"Structures\"),\r\n\t\tTRANSACTIONS(\"Transactions\"),\r\n\t\tSKILLS(\"Skills\"),\r\n\t\tMANUFACTURING_PRICES(\"Manufacturing Prices\"),\r\n\t\tLOYALTY_POINTS(\"Loyalty Points\"),\r\n\t\tNPC_STANDING(\"NPC Standing\"),\r\n\t\t;\r\n\r\n\t\tprivate final String taskName;\r\n\r\n\t\tprivate TaskType(String taskName) {\r\n\t\t\tthis.taskName = taskName;\r\n\t\t}\r\n\r\n\t\tpublic String getTaskName() {\r\n\t\t\treturn taskName;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate final UpdateTask updateTask;\r\n\tprivate final boolean forceUpdate;\r\n\tprivate final boolean disabled;\r\n\tprivate final boolean wait;\r\n\tprivate final String taskName;\r\n\tprivate final String apiName;\r\n\tprotected final O owner;\r\n\tprivate String error = null;\r\n\r\n\tpublic AbstractGetter(UpdateTask updateTask, O owner, boolean forceUpdate, Date nextUpdate, TaskType taskType, String apiName) {\r\n\t\tthis.updateTask = updateTask;\r\n\t\tthis.owner = owner;\r\n\t\tthis.forceUpdate = forceUpdate;\r\n\t\tthis.disabled = !forceUpdate && owner != null && !owner.isShowOwner();\r\n\t\tthis.wait = !forceUpdate && !Updatable.isUpdatable(nextUpdate);\r\n\t\tif (taskType == null) {\r\n\t\t\ttaskName = \"Unknown\";\r\n\t\t} else {\r\n\t\t\ttaskName = taskType.getTaskName();\r\n\t\t}\r\n\t\t//this.taskName = taskType;\r\n\t\tthis.apiName = apiName;\r\n\t}\r\n\r\n\tpublic void start() {\r\n\t\tThreadWoker.start(updateTask, Collections.singletonList(this));\r\n\t}\r\n\r\n\tpublic final synchronized boolean hasError() {\r\n\t\treturn error != null;\r\n\t}\r\n\r\n\tpublic final synchronized String getError() {\r\n\t\treturn error;\r\n\t}\r\n\r\n\tpublic final synchronized void setError(String error) {\r\n\t\tthis.error = error;\r\n\t}\r\n\r\n\t/**\r\n\t * NOT THREAD SAFE!\r\n\t * use setNextUpdateSafe(Date date)\r\n\t * @param date\r\n\t */\r\n\tprotected abstract void setNextUpdate(Date date);\r\n\tprotected abstract boolean haveAccess();\r\n\r\n\tprotected synchronized void setExpires(Map<String, List<String>> headers) {\r\n\t\tDate expires = getHeaderDate(headers, \"expires\");\r\n\t\tsetNextUpdateInner(expires);\r\n\t}\r\n\r\n\tprotected synchronized void setNextUpdateInner(Date date) {\r\n\t\tif (date != null) {\r\n\t\t\tdate = new Date(date.getTime() + NEXT_UPDATE_ADDED_TIME);\r\n\t\t\tsetNextUpdate(date);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected final boolean canUpdate() {\r\n\t\t//Silently ignore disabled owners\r\n\t\tif (disabled) {\r\n\t\t\tlogInfo(null, \"Owner disabled\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//Check API cache time\r\n\t\tif (wait) {\r\n\t\t\taddInfo(\"NOT ALLOWED YET\", \"Update skipped: Waiting for cache to expire.\\r\\n(Updatable again after cache expires)\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//Check if the owner have access to the endpoint\r\n\t\tif (owner != null && !haveAccess()) {\r\n\t\t\t//Silent\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprotected final boolean isForceUpdate() {\r\n\t\treturn forceUpdate;\r\n\t}\r\n\r\n\tprotected interface Updater<R, E extends Throwable> {\r\n\t\tpublic R update() throws E;\r\n\t\tpublic String getStatus();\r\n\t\tpublic int getMaxRetries();\r\n\t}\r\n\r\n\tprotected final void pause() {\r\n\t\tif (updateTask != null) {\r\n\t\t\tupdateTask.pause(); //Pause\r\n\t\t}\r\n\t}\r\n\r\n\tprotected final void setProgress(final float progressEnd, final float progressNow, final int minimum, final int maximum) {\r\n\t\tif (updateTask != null) {\r\n\t\t\tupdateTask.setTaskProgress(progressEnd, progressNow, minimum, maximum);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected final <K> List<Future<K>> startSubThreads(Collection<? extends Callable<K>> updaters) throws InterruptedException {\r\n\t\treturn ThreadWoker.startReturn(updateTask, updaters);\r\n\t}\r\n\r\n\tprotected final <K> List<Future<K>> startSubThreads(Collection<? extends Callable<K>> updaters, boolean updateProgress) throws InterruptedException {\r\n\t\treturn ThreadWoker.startReturn(updateTask, updaters, updateProgress);\r\n\t}\r\n\r\n\tprotected final void checkCancelled() {\r\n\t\tif (updateTask != null && updateTask.isCancelled()) {\r\n\t\t\tthrow new TaskCancelledException();\r\n\t\t}\r\n\t}\r\n\r\n\tprotected final void addError(String logMsg, String taskMsg) {\r\n\t\taddError(logMsg, taskMsg, null);\r\n\t}\r\n\r\n\tprotected final void addError(Object logMsg, Object taskMsg, Throwable ex) {\r\n\t\tlogError(logMsg, taskMsg, ex);\r\n\t\tif (updateTask != null && taskMsg != null) {\r\n\t\t\tupdateTask.addError(buildLogID(), taskMsg.toString());\r\n\t\t}\r\n\t}\r\n\r\n\tprotected final void addWarning(String logMsg, String taskMsg) {\r\n\t\taddWarning(logMsg, taskMsg, null);\r\n\t}\r\n\r\n\tprotected final void addWarning(Object logMsg, Object taskMsg, Throwable ex) {\r\n\t\tlogWarn(logMsg, taskMsg, ex);\r\n\t\tif (updateTask != null && taskMsg != null) {\r\n\t\t\tupdateTask.addWarning(buildLogID(), taskMsg.toString());\r\n\t\t}\r\n\t}\r\n\r\n\tprotected final void addInfo(String logMsg, String taskMsg) {\r\n\t\taddInfo(logMsg, taskMsg, null);\r\n\t}\r\n\r\n\tprotected final void addInfo(Object logMsg, Object taskMsg, Throwable ex) {\r\n\t\tlogInfo(logMsg, taskMsg, ex);\r\n\t\tif (updateTask != null && taskMsg != null) {\r\n\t\t\tupdateTask.addInfo(buildLogID(), taskMsg.toString());\r\n\t\t}\r\n\t}\r\n\r\n\tprivate String buildLogID() {\r\n\t\tStringBuilder ownerBuilder = new StringBuilder();\r\n\t\townerBuilder.append(apiName);\r\n\t\townerBuilder.append(\" > \");\r\n\t\townerBuilder.append(taskName);\r\n\t\tif (owner != null) {\r\n\t\t\townerBuilder.append(\" > \");\r\n\t\t\townerBuilder.append(owner.getOwnerName());\r\n\t\t}\r\n\t\treturn ownerBuilder.toString();\r\n\t}\r\n\r\n\tprotected final void logError(Object logMsg, Object taskMsg) {\r\n\t\tlogError(logMsg, taskMsg, null);\r\n\t}\r\n\r\n\tprotected final void logError(Object logMsg, Object taskMsg, Throwable ex) {\r\n\t\tString e = getLog(logMsg);\r\n\t\tsetError(e);\r\n\t\tif (ex != null) {\r\n\t\t\tLOG.error(e, ex);\r\n\t\t} else {\r\n\t\t\tLOG.error(e);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected final void logWarn(Object logMsg, Object taskMsg) {\r\n\t\tlogWarn(logMsg, taskMsg, null);\r\n\t}\r\n\r\n\tprotected final void logWarn(Object logMsg, Object taskMsg, Throwable ex) {\r\n\t\tString e = getLog(logMsg);\r\n\t\tif (ex != null) {\r\n\t\t\tLOG.warn(e, ex);\r\n\t\t} else {\r\n\t\t\tLOG.warn(e);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected final void logInfo(Object logMsg, Object taskMsg) {\r\n\t\tlogInfo(logMsg, taskMsg, null);\r\n\t}\r\n\r\n\tprotected final void logInfo(Object logMsg, Object taskMsg, Throwable ex) {\r\n\t\tString e = getLog(logMsg);\r\n\t\tif (ex != null) {\r\n\t\t\tLOG.info(e, ex);\r\n\t\t} else {\r\n\t\t\tLOG.info(e);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected final String getLog(Object logMsg) {\r\n\t\tStringBuilder builder = new StringBuilder();\r\n\t\tbuilder.append(apiName);\r\n\t\tbuilder.append(\" \");\r\n\t\tbuilder.append(taskName);\r\n\t\tbuilder.append(\" failed to update for: \");\r\n\t\tif (owner != null) {\r\n\t\t\tbuilder.append(\" > \");\r\n\t\t\tbuilder.append(owner.getOwnerName());\r\n\t\t}\r\n\t\tif (logMsg != null) {\r\n\t\t\tbuilder.append(\" ERROR: \");\r\n\t\t\tbuilder.append(logMsg);\r\n\t\t}\r\n\t\treturn builder.toString();\r\n\t}\r\n\r\n\tprotected final void logInfo(String update, String msg) {\r\n\t\tStringBuilder builder = new StringBuilder();\r\n\t\tif (msg != null) {\r\n\t\t\tbuilder.append(msg);\r\n\t\t\tbuilder.append(\":\");\r\n\t\t}\r\n\t\tbuilder.append(\" \");\r\n\t\tbuilder.append(apiName);\r\n\t\tbuilder.append(\" > \");\r\n\t\tbuilder.append(taskName);\r\n\t\tif (owner != null) {\r\n\t\t\tbuilder.append(\" > \");\r\n\t\t\tbuilder.append(owner.getOwnerName());\r\n\t\t}\r\n\t\tif (update != null) {\r\n\t\t\tbuilder.append(\" (\");\r\n\t\t\tbuilder.append(update);\r\n\t\t\tbuilder.append(\")\");\r\n\t\t}\r\n\t\tLOG.info(builder.toString());\r\n\t}\r\n\r\n\tprotected final <T> List<List<T>> splitList(Collection<T> list, final int L) {\r\n\t\treturn splitList(new ArrayList<>(list), L);\r\n\t}\r\n\r\n\tprivate <T> List<List<T>> splitList(List<T> list, final int L) {\r\n\t\tList<List<T>> parts = new ArrayList<>();\r\n\t\tfinal int N = list.size();\r\n\t\tfor (int i = 0; i < N; i += L) {\r\n\t\t\tparts.add(new ArrayList<>(list.subList(i, Math.min(N, i + L))));\r\n\t\t}\r\n\t\treturn parts;\r\n\t}\r\n\r\n\tprotected final <T> List<Set<T>> splitSet(Collection<T> list, final int L) {\r\n\t\treturn splitSet(new ArrayList<>(list), L);\r\n\t}\r\n\r\n\tprivate <T> List<Set<T>> splitSet(List<T> list, final int L) {\r\n\t\tList<Set<T>> parts = new ArrayList<>();\r\n\t\tfinal int N = list.size();\r\n\t\tfor (int i = 0; i < N; i += L) {\r\n\t\t\tparts.add(new HashSet<>(list.subList(i, Math.min(N, i + L))));\r\n\t\t}\r\n\t\treturn parts;\r\n\t}\r\n\r\n\tprotected final Map<Long, MyAsset> getIDs(OwnerType owner) {\r\n\t\tMap<Long, MyAsset> itemMap = new HashMap<>();\r\n\t\tArrayList<MyAsset> assets;\r\n\t\tsynchronized(owner) {\r\n\t\t\tassets = new ArrayList<>(owner.getAssets());\r\n\t\t}\r\n\t\taddItemIDs(itemMap, assets);\r\n\t\treturn itemMap;\r\n\t}\r\n\r\n\tprivate void addItemIDs(Map<Long, MyAsset> itemIDs, List<MyAsset> assets) {\r\n\t\tfor (MyAsset asset : assets) {\r\n\t\t\tif ((asset.getItem().isContainer()\r\n\t\t\t\t\t|| asset.getItem().getGroup().equals(Item.GROUP_BIOMASS)\r\n\t\t\t\t\t|| asset.getItem().getCategory().equals(Item.CATEGORY_DEPLOYABLE)\r\n\t\t\t\t\t|| asset.getItem().isShip()\r\n\t\t\t\t\t|| asset.getItem().getCategory().equals(Item.CATEGORY_STRUCTURE))\r\n\t\t\t\t\t&& asset.isSingleton()) {\r\n\t\t\t\titemIDs.put(asset.getItemID(), asset);\r\n\t\t\t}\r\n\t\t\taddItemIDs(itemIDs, asset.getAssets());\r\n\t\t}\r\n\t}\r\n\r\n\tprotected static final Integer getHeaderInteger(Map<String, List<String>> responseHeaders, String headerName) {\r\n\t\tString errorResetHeader = getHeader(responseHeaders, headerName);\r\n\t\tif (errorResetHeader != null) {\r\n\t\t\ttry {\r\n\t\t\t\treturn Integer.valueOf(errorResetHeader);\r\n\t\t\t} catch (NumberFormatException ex) {\r\n\t\t\t\t//No problem\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprotected static final Date getHeaderDate(Map<String, List<String>> responseHeaders, String headerName) {\r\n\t\tString header = getHeader(responseHeaders, headerName);\r\n\t\tif (header != null) {\r\n\t\t\treturn Formatter.parseExpireDate(header);\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprotected static final Date getHeaderExpires(Map<String, List<String>> responseHeaders) {\r\n\t\tString header = getHeader(responseHeaders, \"expires\");\r\n\t\tif (header != null) {\r\n\t\t\treturn Formatter.parseExpireDate(header);\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprotected static final String getHeader(Map<String, List<String>> responseHeaders, String headerName) {\r\n\t\tif (responseHeaders != null) {\r\n\t\t\tMap<String, List<String>> caseInsensitiveHeaders = new TreeMap<>(StringComparators.CASE_INSENSITIVE);\r\n\t\t\tcaseInsensitiveHeaders.putAll(responseHeaders);\r\n\t\t\tList<String> headers = caseInsensitiveHeaders.get(headerName.toLowerCase());\r\n\t\t\tif (headers != null && !headers.isEmpty()) {\r\n\t\t\t\tString header = headers.get(0);\r\n\t\t\t\tif (header != null && !header.isEmpty()) {\r\n\t\t\t\t\treturn header;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/shared/AccountAdder.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.shared;\r\n\r\n\r\npublic interface AccountAdder {\r\n\r\n\tpublic boolean hasError();\r\n\r\n\tpublic boolean isPrivilegesLimited();\r\n\r\n\tpublic boolean isPrivilegesInvalid();\r\n\r\n\tpublic boolean isWrongEntry();\r\n\r\n\tpublic String getError();\r\n\r\n\tpublic boolean isInvalid();\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/shared/AccountAdderAdapter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.shared;\r\n\r\n\r\npublic class AccountAdderAdapter implements AccountAdder {\r\n\r\n\t@Override\r\n\tpublic boolean hasError() {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean isPrivilegesLimited() {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean isPrivilegesInvalid() {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean isWrongEntry() {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getError() {\r\n\t\treturn null;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean isInvalid() {\r\n\t\treturn false;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/shared/ApiIdConverter.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.io.shared;\n\nimport java.util.concurrent.Callable;\nimport java.util.concurrent.ConcurrentHashMap;\nimport java.util.concurrent.ConcurrentMap;\nimport java.util.concurrent.ExecutorService;\nimport java.util.concurrent.Executors;\nimport net.nikr.eve.jeveasset.data.api.accounts.SimpleOwner;\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\nimport net.nikr.eve.jeveasset.data.api.my.MyJournal;\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournal.ContextType;\nimport static net.nikr.eve.jeveasset.data.api.raw.RawJournal.ContextType.ALLIANCE_ID;\nimport static net.nikr.eve.jeveasset.data.api.raw.RawJournal.ContextType.CHARACTER_ID;\nimport static net.nikr.eve.jeveasset.data.api.raw.RawJournal.ContextType.CONTRACT_ID;\nimport static net.nikr.eve.jeveasset.data.api.raw.RawJournal.ContextType.CORPORATION_ID;\nimport static net.nikr.eve.jeveasset.data.api.raw.RawJournal.ContextType.EVE_SYSTEM;\nimport static net.nikr.eve.jeveasset.data.api.raw.RawJournal.ContextType.INDUSTRY_JOB_ID;\nimport static net.nikr.eve.jeveasset.data.api.raw.RawJournal.ContextType.MARKET_TRANSACTION_ID;\nimport static net.nikr.eve.jeveasset.data.api.raw.RawJournal.ContextType.PLANET_ID;\nimport static net.nikr.eve.jeveasset.data.api.raw.RawJournal.ContextType.STATION_ID;\nimport static net.nikr.eve.jeveasset.data.api.raw.RawJournal.ContextType.STRUCTURE_ID;\nimport static net.nikr.eve.jeveasset.data.api.raw.RawJournal.ContextType.SYSTEM_ID;\nimport static net.nikr.eve.jeveasset.data.api.raw.RawJournal.ContextType.TYPE_ID;\nimport net.nikr.eve.jeveasset.data.sde.Agent;\nimport net.nikr.eve.jeveasset.data.sde.IndustryMaterial;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.data.sde.ItemFlag;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.data.sde.NpcCorporation;\nimport net.nikr.eve.jeveasset.data.sde.ReprocessedMaterial;\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\nimport net.nikr.eve.jeveasset.data.settings.Citadel;\nimport net.nikr.eve.jeveasset.data.settings.Citadel.CitadelSource;\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings;\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings.ManufacturingFacility;\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings.ManufacturingRigs;\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings.ReactionRigs;\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings.ManufacturingSecurity;\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings.ReactionSecurity;\nimport net.nikr.eve.jeveasset.data.settings.PriceData;\nimport net.nikr.eve.jeveasset.data.settings.ReprocessSettings;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.UserItem;\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\nimport net.nikr.eve.jeveasset.i18n.General;\nimport net.nikr.eve.jeveasset.io.esi.EsiItemsGetter;\nimport net.nikr.eve.jeveasset.io.local.ItemsWriter;\nimport net.nikr.eve.jeveasset.io.online.CitadelGetter;\nimport net.troja.eve.esi.model.MoonResponse;\nimport net.troja.eve.esi.model.PlanetResponse;\nimport net.troja.eve.esi.model.StructureResponse;\n\n\npublic final class ApiIdConverter {\n\n\tprivate ApiIdConverter() { }\n\n\tprivate static final String EMPTY_STRING = \"\";\n\tprivate static final String UNKNOWN_FLAG = \"Unknown\";\n\tprivate static final ConcurrentMap<Integer, Object> ITEM_DOWNLOAD_LOCKS = new ConcurrentHashMap<>();\n\tprivate static final ExecutorService ITEM_DOWNLOAD_THREAD_POOL = Executors.newFixedThreadPool(ThreadWoker.MAIN_THREADS);\n\tprivate static boolean update = false;\n\n\tprivate enum PriceType {\n\t\tITEM, REPROCESSED, MANUFACTURING\n\t}\n\n\t/*\n\tpublic static String flag(final int flag, final MyAsset parentAsset) {\n\t\tItemFlag itemFlag = StaticData.get().getItemFlags().get(flag);\n\t\tif (itemFlag != null) {\n\t\t\tif (parentAsset != null && !parentAsset.getFlag().isEmpty()) {\n\t\t\t\treturn parentAsset.getFlag() + \" > \" + itemFlag.getFlagName();\n\t\t\t} else {\n\t\t\t\treturn itemFlag.getFlagName();\n\t\t\t}\n\t\t}\n\t\treturn \"!\" + flag;\n\t}\n\t*/\n\n\tpublic static ItemFlag getFlag(final int flag) {\n\t\tItemFlag itemFlag = StaticData.get().getItemFlags().get(flag);\n\t\tif (itemFlag != null) {\n\t\t\treturn itemFlag;\n\t\t} else {\n\t\t\treturn new ItemFlag(flag, UNKNOWN_FLAG, UNKNOWN_FLAG);\n\t\t}\n\t}\n\n\tpublic static String getFlagName(String flagName) {\n\t\tswitch (flagName) {\n\t\t\tcase \"CorpSAG1\": return \"1st Division\";\n\t\t\tcase \"CorpSAG2\": return \"2nd Division\";\n\t\t\tcase \"CorpSAG3\": return \"3rd Division\";\n\t\t\tcase \"CorpSAG4\": return \"4th Division\";\n\t\t\tcase \"CorpSAG5\": return \"5th Division\";\n\t\t\tcase \"CorpSAG6\": return \"6th Division\";\n\t\t\tcase \"CorpSAG7\": return \"7th Division\";\n\t\t\tdefault: return flagName;\n\t\t}\n\t}\n\n\tpublic static String getFlagName(ItemFlag itemFlag) {\n\t\treturn getFlagName(itemFlag, null);\n\t}\n\n\tpublic static String getFlagName(ItemFlag itemFlag, SimpleOwner ownerType) {\n\t\tswitch (itemFlag.getFlagID()) {\n\t\t\tcase 62: return \"Corporation Deliveries\";\n\t\t\tcase 63: return itemFlag.getFlagName();\n\t\t\tcase 64: return itemFlag.getFlagName();\n\n\t\t\tcase 115: return getDivisionName(ownerType, 1);\n\t\t\tcase 116: return getDivisionName(ownerType, 2);\n\t\t\tcase 117: return getDivisionName(ownerType, 3);\n\t\t\tcase 118: return getDivisionName(ownerType, 4);\n\t\t\tcase 119: return getDivisionName(ownerType, 5);\n\t\t\tcase 120: return getDivisionName(ownerType, 6);\n\t\t\tcase 121: return getDivisionName(ownerType, 7);\n\t\t\tcase 146: return \"Junkyard Reprocessed\";\n\t\t\tcase 147: return \"Junkyard Trashed\";\n\t\t}\n\t\tif (itemFlag.getFlagText().toLowerCase().contains(\"slot\")) {\n\t\t\treturn getSlotName(itemFlag);\n\t\t}\n\t\treturn itemFlag.getFlagText();\n\t}\n\n\tprivate static String getDivisionName(SimpleOwner ownerType, int i) {\n\t\tfinal String division;\n\t\tswitch (i) {\n\t\t\tcase 1: division = \"1st Division\"; break;\n\t\t\tcase 2: division = \"2nd Division\"; break;\n\t\t\tcase 3: division = \"3rd Division\"; break;\n\t\t\tcase 4: division = \"4th Division\"; break;\n\t\t\tcase 5: division = \"5th Division\"; break;\n\t\t\tcase 6: division = \"6th Division\"; break;\n\t\t\tcase 7: division = \"7th Division\"; break;\n\t\t\tdefault: division = \"Division \" + 1; break;\n\t\t}\n\t\tString divisionName = null;\n\t\tif (ownerType != null) {\n\t\t\tdivisionName = ownerType.getAssetDivisions().get(i);\n\t\t}\n\t\tif (divisionName == null || divisionName.isEmpty()) {\n\t\t\treturn division;\n\t\t} else {\n\t\t\treturn divisionName + \" (\" + division + \")\";\n\t\t}\n\t}\n\n\tprivate static String getSlotName(ItemFlag itemFlag) {\n\t\tString name = itemFlag.getFlagText();\n\t\tname = name.replace(\" power\", \"\");\n\t\tname = name.replace(\" s\", \" S\");\n\t\treturn name;\n\t}\n\n\tpublic static String getContext(MyJournal journal) {\n\t\treturn getContext(journal.getContextType(), journal.getContextID());\n\t}\n\n\tpublic static String getContext(final ContextType contextType, final Long contextID) {\n\t\tif (contextType == null || contextID == null) {\n\t\t\treturn null;\n\t\t}\n\t\tswitch (contextType) {\n\t\t\tcase ALLIANCE_ID:\n\t\t\tcase CHARACTER_ID:\n\t\t\tcase CORPORATION_ID:\n\t\t\t\treturn getOwnerName(contextID);\n\t\t\tcase CONTRACT_ID:\n\t\t\t\treturn General.get().journalContract();\n\t\t\tcase INDUSTRY_JOB_ID:\n\t\t\t\treturn General.get().journalIndustryJob();\n\t\t\tcase MARKET_TRANSACTION_ID:\n\t\t\t\tif (contextID != 1) {\n\t\t\t\t\treturn General.get().journalMarketTransaction();\n\t\t\t\t} else {\n\t\t\t\t\treturn General.get().journalSystemTransaction();\n\t\t\t\t}\n\t\t\tcase EVE_SYSTEM:\n\t\t\tcase TYPE_ID:\n\t\t\t\tItem item = ApiIdConverter.getItem(contextID.intValue());\n\t\t\t\tif (!item.isEmpty()) {\n\t\t\t\t\treturn item.getTypeName();\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\tcase PLANET_ID:\n\t\t\tcase STATION_ID:\n\t\t\tcase SYSTEM_ID:\n\t\t\tcase STRUCTURE_ID:\n\t\t\t\tMyLocation location = ApiIdConverter.getLocation(contextID);\n\t\t\t\tif (!location.isEmpty()) {\n\t\t\t\t\treturn location.getLocation();\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\tdefault:\n\t\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t *\n\t * @param typeID\n\t * @param isBlueprintCopy\n\t * @return PriceData for the type or PriceData.EMPTY (all zeros)\n\t */\n\tpublic static PriceData getPriceData(final Integer typeID, final boolean isBlueprintCopy) {\n\t\tif (typeID == null) {\n\t\t\treturn PriceData.EMPTY;\n\t\t}\n\t\tif (isBlueprintCopy) {\n\t\t\treturn PriceData.EMPTY;\n\t\t}\n\t\tPriceData priceData = Settings.get().getPriceData().get(typeID);\n\t\tif (priceData == null) {\n\t\t\treturn PriceData.EMPTY;\n\t\t}\n\t\tif (priceData.isEmpty()) { //No Price :(\n\t\t\treturn PriceData.EMPTY;\n\t\t}\n\t\treturn priceData;\n\t}\n\n\tpublic static double getPrice(final Integer typeID, final boolean isBlueprintCopy) {\n\t\treturn getPriceType(typeID, isBlueprintCopy, PriceType.ITEM);\n\t}\n\n\tprivate static double getPriceReprocessed(final Integer typeID) {\n\t\treturn getPriceType(typeID, false, PriceType.REPROCESSED);\n\t}\n\n\tprivate static double getPriceManufacturing(final Integer typeID) {\n\t\treturn getPriceType(typeID, false, PriceType.MANUFACTURING);\n\t}\n\n\tprivate static double getPriceType(final Integer typeID, final boolean isBlueprintCopy, PriceType type) {\n\t\tif (typeID == null) {\n\t\t\treturn 0;\n\t\t}\n\t\tUserItem<Integer, Double> userPrice;\n\t\tif (isBlueprintCopy) { //Blueprint Copy\n\t\t\tuserPrice = Settings.get().getUserPrices().get(-typeID);\n\t\t} else { //All other\n\t\t\tuserPrice = Settings.get().getUserPrices().get(typeID);\n\t\t}\n\t\tif (userPrice != null) {\n\t\t\treturn userPrice.getValue();\n\t\t}\n\n\t\t//Blueprint Copy (Default Zero)\n\t\tif (isBlueprintCopy) {\n\t\t\treturn 0;\n\t\t}\n\n\t\t//Blueprints Base Price\n\t\tItem item = getItem(typeID);\n\t\t//Tech 1\n\t\tif (item.isBlueprint()) {\n\t\t\tif (Settings.get().isBlueprintBasePriceTech1() && !item.getTypeName().toLowerCase().contains(\"ii\")) {\n\t\t\t\treturn item.getPriceBase();\n\t\t\t}\n\t\t\t//Tech 2\n\t\t\tif (Settings.get().isBlueprintBasePriceTech2() && item.getTypeName().toLowerCase().contains(\"ii\")) {\n\t\t\t\treturn item.getPriceBase();\n\t\t\t}\n\t\t}\n\t\t//Manufacturing Price for non-market items\n\t\tif (!item.isMarketGroup() && Settings.get().isManufacturingDefault()) {\n\t\t\treturn item.getPriceManufacturing();\n\t\t}\n\n\t\t//Price data\n\t\tPriceData priceData = Settings.get().getPriceData().get(typeID);\n\t\tif (priceData != null && priceData.isEmpty()) {\n\t\t\tpriceData = null;\n\t\t}\n\t\tif (type == PriceType.REPROCESSED) {\n\t\t\treturn Settings.get().getPriceDataSettings().getDefaultPriceReprocessed(priceData);\n\t\t} else if (type == PriceType.MANUFACTURING) {\n\t\t\treturn Settings.get().getPriceDataSettings().getDefaultPriceManufacturing(priceData);\n\t\t} else {\n\t\t\treturn Settings.get().getPriceDataSettings().getDefaultPrice(priceData);\n\t\t}\n\t}\n\n\t/**\n\t * Calculate Manufacturing Price - This is expensive!\n\t * Use Item.getPriceManufacturing() to get the manufacturing price\n\t * @param item\n\t * @return \n\t */\n\tpublic static double getPriceManufacturing(Item item) {\n\t\treturn getPriceManufacturing(Settings.get().getManufacturingSettings(), item);\n\t}\n\n\tprotected static double getPriceManufacturing(ManufacturingSettings manufacturingSettings, Item item) {\n\t\t//Installation Fee\n\t\tDouble baseCost = manufacturingSettings.getPrices().get(item.getTypeID());\n\t\tif (baseCost == null) {\n\t\t\treturn 0;\n\t\t}\n\t\tint systemID = manufacturingSettings.getSystemID();\n\t\tFloat systemIndex = manufacturingSettings.getSystems().get(systemID);\n\t\tif (systemIndex == null) {\n\t\t\treturn 0.1;\n\t\t}\n\t\tdouble installationFee = getManufacturingInstallationFee(manufacturingSettings, systemIndex, baseCost, item);\n\t\t//Materials Cost\n\t\tdouble materialCost = 0;\n\t\tItem blueprint = getItem(item.getBlueprintTypeID());\n\t\tfor (IndustryMaterial material : blueprint.getManufacturingMaterials()) {\n\t\t\tdouble quantity = getManufacturingQuantity(manufacturingSettings, material.getQuantity());\n\t\t\tdouble price = getPriceManufacturing(material.getTypeID());\n\t\t\tmaterialCost = materialCost + (price * quantity);\n\t\t}\n\t\treturn installationFee + materialCost;\n\t}\n\n\tprotected static double getManufacturingInstallationFee(ManufacturingSettings manufacturingSettings, Float systemIndex, Double baseCost, Item item) {\n\t\t//Installation Fee\n\t\tManufacturingFacility facility = manufacturingSettings.getFacility();\n\t\tdouble bonuses = percentToBonus(facility.getFeeBonus());\n\t\tdouble tax = manufacturingSettings.getTax() / 100;\n\t\tdouble scc = 0.25 / 100;\n\n\t\t//TIF = EIV * ((SCI * bonuses) + FacilityTax + SCC + AlphaClone) \n\t\t//EIV: ME 0 quantity of inputs * adjusted price of inputs => baseCost\n\t\t//SCI: System Cost Index \n\t\t//Facility Tax: Fixed tax for NPC stations set to 0.25% or tax rate set by facility owner.\n\t\t//SCC: SCC surcharge, this is a fixed value and cannot be affected by anything \n\t\t//Bonuses: Any bonuses that are applicable \n\t\t//AlphaClone: Tax applicable to alpha clones, set at 0.25% (Just add to tax)\n\t\treturn baseCost * ((systemIndex * bonuses) + tax + scc); \n\t}\n\n\tprivate static double getManufacturingQuantity(ManufacturingSettings manufacturingSettings, int quantity) {\n\t\tint me = manufacturingSettings.getMaterialEfficiency();\n\t\tManufacturingFacility facility = manufacturingSettings.getFacility();\n\t\tManufacturingRigs rigs = manufacturingSettings.getRigs();\n\t\tManufacturingSecurity security = manufacturingSettings.getSecurity();\n\t\treturn getManufacturingQuantity(quantity, me, facility, rigs, security, 1, true);\n\t}\n\n\t/**\n\t * \n\t * @param quantity\n\t * @param me\n\t * @param facility\n\t * @param rigs\n\t * @param security\n\t * @param runs\n\t * @param round\n\t * @return Can return less than 1 (one)\n\t */\n\tpublic static double getManufacturingQuantity(int quantity, int me, ManufacturingFacility facility, ManufacturingRigs rigs, ManufacturingSecurity security, double runs, boolean round) {\n\t\t//base * ((100-ME)/100) * (EC modifier) * (EC Rig modifier))\n\t\treturn roundManufacturingQuantity(quantity * percentToBonus(me) * percentToBonus(facility.getMaterialBonus()) * rigToBonus(rigs, security), runs, round);\n\t}\n\n\tpublic static double getReactionQuantity(int quantity, ManufacturingSettings.ReactionRigs rigs, ManufacturingSettings.ReactionSecurity security, double runs, boolean round) {\n\t\treturn roundManufacturingQuantity(quantity * rigToBonus(rigs, security), runs, round);\n\t}\n\n\tprivate static double roundManufacturingQuantity(double manufacturingQuantity, double runs, boolean round) {\n\t\tdouble quantity = Math.max(runs, manufacturingQuantity * runs);\n\t\tif (round) {\n\t\t\treturn Math.ceil(quantity);\n\t\t} else {\n\t\t\treturn quantity;\n\t\t}\n\t}\n\n\tprivate static double percentToBonus(double value) {\n\t\treturn ((100.0 - value) / 100.0);\n\t}\n\n\tprivate static double rigToBonus(ManufacturingRigs rigs, ManufacturingSecurity security) {\n\t\tif (rigs == ManufacturingRigs.NONE) {\n\t\t\treturn 1;\n\t\t} else {\n\t\t\treturn percentToBonus(rigs.getMaterialBonus() * security.getRigBonus());\n\t\t}\n\t}\n\n\tprivate static double rigToBonus(ReactionRigs rigs, ReactionSecurity security) {\n\t\tif (rigs == ReactionRigs.NONE) {\n\t\t\treturn 1;\n\t\t} else {\n\t\t\treturn percentToBonus(rigs.getMaterialBonus() * security.getRigBonus());\n\t\t}\n\t}\n\n\tpublic static double getPriceReprocessed(Item item) {\n\t\treturn getPriceReprocessed(item, false);\n\t}\n\n\tpublic static double getPriceReprocessedMax(Item item) {\n\t\treturn getPriceReprocessed(item, true);\n\t}\n\n\tprivate static double getPriceReprocessed(Item item, boolean max) {\n\t\tdouble priceReprocessed = 0;\n\t\tint portionSize = 0;\n\t\tfor (ReprocessedMaterial material : item.getReprocessedMaterial()) {\n\t\t\t//Calculate reprocessed price\n\t\t\tportionSize = material.getPortionSize();\n\t\t\tdouble price = ApiIdConverter.getPriceReprocessed(material.getTypeID());\n\t\t\tint count;\n\t\t\tif (max) {\n\t\t\t\tcount = ReprocessSettings.getMax(material.getQuantity(), item.isOre());\n\t\t\t} else {\n\t\t\t\tcount = Settings.get().getReprocessSettings().getLeft(material.getQuantity(), item.isOre());\n\t\t\t}\n\t\t\tpriceReprocessed = priceReprocessed + (price * count);\n\t\t}\n\t\tif (priceReprocessed > 0 && portionSize > 0) {\n\t\t\tpriceReprocessed = priceReprocessed / portionSize;\n\t\t}\n\t\treturn priceReprocessed;\n\t}\n\n\tpublic static float getVolume(final Item item, final boolean packaged) {\n\t\tif (item != null) {\n\t\t\tif (packaged) {\n\t\t\t\treturn item.getVolumePackaged();\n\t\t\t} else {\n\t\t\t\treturn item.getVolume();\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t}\n\n\tpublic static Item getItem(final Integer typeID) {\n\t\tif (typeID == null) {\n\t\t\treturn new Item(0);\n\t\t}\n\t\tItem item = StaticData.get().getItems().get(typeID);\n\t\tif (item == null) {\n\t\t\titem = new Item(typeID);\n\t\t}\n\t\treturn item;\n\t}\n\n\tpublic static void setUpdateItem(boolean update) {\n\t\tApiIdConverter.update = update;\n\t}\n\n\tpublic static Item getItemUpdate(final Integer typeID) {\n\t\treturn getItemUpdate(typeID, update);\n\t}\n\n\tpublic static Item getItemUpdate(final Integer typeID, boolean update) {\n\t\tif (!update) {\n\t\t\treturn getItem(typeID);\n\t\t}\n\t\tif (typeID == null) {\n\t\t\treturn new Item(0);\n\t\t}\n\t\tItem item = getUpdateItem(typeID);\n\t\tif (item != null) {\n\t\t\treturn item;\n\t\t} else {\n\t\t\treturn synchronizedDownloadItem(typeID);\n\t\t}\n\t}\n\n\tpublic static void updateItem(Integer typeID) {\n\t\tif (!update || typeID == null) {\n\t\t\treturn;\n\t\t}\n\t\tItem item = getUpdateItem(typeID);\n\t\tif (item == null) {\n\t\t\tThread thread = new Thread(new Runnable() {\n\t\t\t\t@Override\n\t\t\t\tpublic void run() {\n\t\t\t\t\tdownloadItem(typeID);\n\t\t\t\t}\n\t\t\t});\n\t\t\tthread.start();\n\t\t}\n\t}\n\n\tprivate static Item getUpdateItem(final Integer typeID) {\n\t\tItem item = StaticData.get().getItems().get(typeID);\n\t\tif (item == null || (item.getVersion() != null && !item.getVersion().equals(EsiItemsGetter.ESI_ITEM_VERSION))) { //New ESI item version\n\t\t\tif (item != null && item.getVersion().startsWith(EsiItemsGetter.ESI_ITEM_EMPTY)) {\n\t\t\t\tString lastUpdated = item.getVersion().replace(EsiItemsGetter.ESI_ITEM_EMPTY, \"\");\n\t\t\t\tString today = Formatter.dateOnly(Settings.getNow());\n\t\t\t\tif (lastUpdated.equals(today)) {\n\t\t\t\t\treturn item;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t\treturn item;\n\t}\n\n\tprotected static Item synchronizedDownloadItem(final Integer typeID) { \n\t\tITEM_DOWNLOAD_LOCKS.putIfAbsent(typeID, new Object()); //Only download one item type at the time (Locks on typeID)\n\t\tsynchronized(ITEM_DOWNLOAD_LOCKS.get(typeID)) {\n\t\t\tItem item = getUpdateItem(typeID);\n\t\t\tif (item != null) { //May have been downloaded while waiting for sync\n\t\t\t\treturn item;\n\t\t\t} else {\n\t\t\t\treturn downloadItem(typeID);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static Item downloadItem(final Integer typeID) { //Only download one item at the time\n\t\tItem item = ThreadWoker.startReturn(ITEM_DOWNLOAD_THREAD_POOL, null, new DownloadItem(typeID));\n\t\tif (item == null) { //Empty Item\n\t\t\titem = new Item(typeID, EsiItemsGetter.ESI_ITEM_EMPTY + Formatter.dateOnly(Settings.getNow()));\n\t\t}\n\t\tsynchronized(StaticData.get().getItems()) {\n\t\t\tStaticData.get().getItems().put(typeID, item); //Add Item\n\t\t}\n\t\tITEM_DOWNLOAD_LOCKS.remove(typeID); //Remove lock after download is completed\n\t\tif (ITEM_DOWNLOAD_LOCKS.isEmpty()) { //Save when the download queue is empty\n\t\t\tsynchronized(StaticData.get().getItems()) {\n\t\t\t\tItemsWriter.save(); //Save XML\n\t\t\t}\n\t\t\t\n\t\t}\n\t\treturn item;\n\t}\n\n\tprivate static class DownloadItem implements Callable<Item> {\n\n\t\tprivate final Integer typeID;\n\n\t\tpublic DownloadItem(Integer typeID) {\n\t\t\tthis.typeID = typeID;\n\t\t}\n\n\t\t@Override\n\t\tpublic Item call() throws Exception {\n\t\t\tEsiItemsGetter esiItemsGetter = new EsiItemsGetter(typeID);\n\t\t\tesiItemsGetter.run();\n\t\t\treturn esiItemsGetter.getItem();\n\t\t}\n\t}\n\n\tpublic static String getOwnerName(final Integer ownerID) {\n\t\tif (ownerID == null) {\n\t\t\treturn EMPTY_STRING;\n\t\t} else {\n\t\t\treturn getOwnerName(Long.valueOf(ownerID));\n\t\t}\n\t}\n\n\tpublic static Agent getAgent(final Integer agentID) {\n\t\tAgent agent = StaticData.get().getAgents().get(agentID);\n\t\tif (agent == null) {\n\t\t\tagent = new Agent(agentID);\n\t\t}\n\t\treturn agent;\n\t}\n\n\tpublic static NpcCorporation getNpcCorporation(final Integer corporationID) {\n\t\tNpcCorporation npcCorporation = StaticData.get().getNpcCorporations().get(corporationID);\n\t\tif (npcCorporation == null) {\n\t\t\tnpcCorporation = new NpcCorporation(corporationID);\n\t\t}\n\t\treturn npcCorporation;\n\t}\n\n\tpublic static String getOwnerName(final Long ownerID) {\n\t\tif (ownerID == null || ownerID == 0) { //0 (zero) is valid, but, should return empty string\n\t\t\treturn EMPTY_STRING;\n\t\t}\n\t\tString owner = Settings.get().getOwners().get(ownerID);\n\t\tif (owner != null) {\n\t\t\treturn owner;\n\t\t} else { // OwnerIDs from the journal can be a system ID\n\t\t\tMyLocation location = getLocation(ownerID);\n\t\t\tif (!location.isEmpty()) {\n\t\t\t\treturn location.getLocation();\n\t\t\t}\n\t\t}\n\t\treturn \"!\" + String.valueOf(ownerID);\n\t}\n\n\tpublic static boolean isLocationOK(final Long locationID) {\n\t\treturn !getLocation(locationID, null).isEmpty();\n\t}\n\n\tpublic static MyLocation getLocation(Integer locationID) {\n\t\tif (locationID == null) {\n\t\t\treturn MyLocation.create(0);\n\t\t} else {\n\t\t\treturn getLocation(Long.valueOf(locationID), null);\n\t\t}\n\t}\n\n\tpublic static MyLocation getLocation(Long locationID) {\n\t\treturn getLocation(locationID, null);\n\t}\n\n\tpublic static MyLocation getLocation(final Long locationID, final MyAsset parentAsset) {\n\t\tif (locationID == null) {\n\t\t\treturn MyLocation.create(0);\n\t\t}\n\t\tMyLocation location = StaticData.get().getLocation(locationID);\n\t\tif (location != null) {\n\t\t\treturn location;\n\t\t}\n\t\tif (parentAsset != null) {\n\t\t\tlocation = parentAsset.getLocation();\n\t\t\tif (location != null) {\n\t\t\t\treturn location;\n\t\t\t}\n\t\t}\n\t\tlocation = CitadelGetter.get(locationID).toLocation();\n\t\tif (location != null) {\n\t\t\treturn location;\n\t\t}\n\t\treturn MyLocation.create(locationID);\n\t}\n\n\tpublic static void addLocation(final Citadel citadel) {\n\t\tMyLocation location = citadel.toLocation();\n\t\tif (location != null) {\n\t\t\tStaticData.get().addLocation(location);\n\t\t}\n\t}\n\n\tpublic static Citadel getCitadel(final StructureResponse response, final long locationID) {\n\t\treturn new Citadel(locationID, response.getName(), response.getSolarSystemId(), false, true, CitadelSource.ESI_STRUCTURES);\n\t}\n\n\tpublic static Citadel getCitadel(PlanetResponse planet) {\n\t\treturn new Citadel(planet.getPlanetId(), planet.getName(), planet.getSystemId(), false, false, CitadelSource.ESI_PLANET);\n\t}\n\n\tpublic static Citadel getCitadel(MoonResponse planet) {\n\t\treturn new Citadel(planet.getMoonId(), planet.getName(), planet.getSystemId(), false, false, CitadelSource.ESI_MOON);\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/shared/DataConverter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.shared;\r\n\r\nimport java.sql.Connection;\r\nimport java.sql.SQLException;\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.SimpleOwner;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAccountBalance;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyExtraction;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyJournal;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyLoyaltyPoints;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMining;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyNpcStanding;\r\nimport net.nikr.eve.jeveasset.data.api.my.MySkill;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawAccountBalance;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawAsset;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawClone;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawContract;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawContractItem;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawExtraction;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawIndustryJob;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournal;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawLoyaltyPoints;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder.Change;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawMining;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawNpcStanding;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawSkill;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawTransaction;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\r\nimport net.nikr.eve.jeveasset.io.local.profile.ProfileContracts;\r\nimport net.nikr.eve.jeveasset.io.local.profile.ProfileDatabase;\r\nimport net.nikr.eve.jeveasset.io.local.profile.ProfileIndustryJobs;\r\nimport net.nikr.eve.jeveasset.io.local.profile.ProfileJournals;\r\nimport net.nikr.eve.jeveasset.io.local.profile.ProfileMarketOrders;\r\nimport net.nikr.eve.jeveasset.io.local.profile.ProfileMining;\r\nimport net.nikr.eve.jeveasset.io.local.profile.ProfileTransactions;\r\nimport net.nikr.eve.jeveasset.io.local.profile.ProfileConnectionData;\r\n\r\npublic abstract class DataConverter {\r\n\r\n\tpublic static List<MyAsset> assetIndustryJob(final Collection<MyIndustryJob> industryJobs, boolean includeManufacturing, boolean includeCopying) {\r\n\t\tList<MyAsset> assets = new ArrayList<>();\r\n\t\tfor (MyIndustryJob industryJob : industryJobs) {\r\n\t\t\tif (industryJob.isNotDeliveredToAssets()) {\r\n\t\t\t\t//Blueprint\r\n\t\t\t\tif (industryJob.isRemovedFromAssets()) {\r\n\t\t\t\t\tMyAsset asset = new MyAsset(industryJob, false);\r\n\t\t\t\t\tassets.add(asset);\r\n\t\t\t\t}\r\n\t\t\t\t//Manufacturing Output\r\n\t\t\t\tif (includeManufacturing && industryJob.isManufacturing() && industryJob.getProductTypeID() != null) {\r\n\t\t\t\t\tMyAsset product = new MyAsset(industryJob, true);\r\n\t\t\t\t\tassets.add(product);\r\n\t\t\t\t}\r\n\t\t\t\t//Copy Output\r\n\t\t\t\tif (includeCopying && industryJob.isCopying()) {\r\n\t\t\t\t\tfor (int i = 0; i < industryJob.getRuns(); i++) {\r\n\t\t\t\t\t\tMyAsset product = new MyAsset(industryJob, true);\r\n\t\t\t\t\t\tassets.add(product);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn assets;\r\n\t}\r\n\r\n\tpublic static List<MyAsset> assetMarketOrder(final Collection<MyMarketOrder> marketOrders, boolean includeSellOrders, boolean includeBuyOrders) {\r\n\t\tList<MyAsset> assets = new ArrayList<>();\r\n\t\tfor (MyMarketOrder marketOrder : marketOrders) {\r\n\t\t\tif (marketOrder.isActive() && marketOrder.getVolumeRemain() > 0\r\n\t\t\t\t\t&& ((!marketOrder.isBuyOrder() && includeSellOrders)\r\n\t\t\t\t\t|| (marketOrder.isBuyOrder() && includeBuyOrders))) {\r\n\t\t\t\tMyAsset asset = new MyAsset(marketOrder);\r\n\t\t\t\tassets.add(asset);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn assets;\r\n\t}\r\n\r\n\tpublic static List<MyAsset> assetContracts(final Collection<MyContractItem> contractItems, final Map<Long, OwnerType> owners, boolean includeSellContracts, boolean includeBuyContracts) {\r\n\t\tList<MyAsset> list = new ArrayList<>();\r\n\t\t//Only includes issuer buying and selling items\r\n\t\t//TODO Could add issuer bought/sold and acceptor bought/sold items to the assets list\r\n\t\tfor (MyContractItem contractItem : contractItems) {\r\n\t\t\tSimpleOwner issuer;\r\n\t\t\tif (contractItem.getContract().isForCorp()) {\r\n\t\t\t\tissuer = new SimpleOwner() {\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tpublic long getOwnerID() {\r\n\t\t\t\t\t\tif (Settings.get().isAssetsContractsOwnerCorporation() ||Settings.get().isAssetsContractsOwnerBoth()) {\r\n\t\t\t\t\t\t\treturn contractItem.getContract().getIssuerCorpID();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\treturn contractItem.getContract().getIssuerID();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tpublic String getOwnerName() {\r\n\t\t\t\t\t\tif (Settings.get().isAssetsContractsOwnerCorporation()) {\r\n\t\t\t\t\t\t\treturn ApiIdConverter.getOwnerName(contractItem.getContract().getIssuerCorpID());\r\n\t\t\t\t\t\t} else if (Settings.get().isAssetsContractsOwnerBoth()) {\r\n\t\t\t\t\t\t\tString characterName =  ApiIdConverter.getOwnerName(contractItem.getContract().getIssuerID());\r\n\t\t\t\t\t\t\tString corporationName =  ApiIdConverter.getOwnerName(contractItem.getContract().getIssuerCorpID());\r\n\t\t\t\t\t\t\treturn GuiShared.get().contractCorporationOwner(corporationName, characterName);\r\n\t\t\t\t\t\t} else { //Character\r\n\t\t\t\t\t\t\treturn ApiIdConverter.getOwnerName(contractItem.getContract().getIssuerID());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t@Override\r\n\t\t\t\t\tpublic boolean isCorporation() {\r\n\t\t\t\t\t\treturn Settings.get().isAssetsContractsOwnerCorporation()\r\n\t\t\t\t\t\t\t\t|| Settings.get().isAssetsContractsOwnerBoth();\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t} else {\r\n\t\t\t\tissuer = owners.get(contractItem.getContract().getIssuerID());\r\n\t\t\t}\r\n\t\t\tif (contractItem.getContract().isOpen() //Not completed\r\n\t\t\t\t\t&& issuer != null //Owned\r\n\t\t\t\t\t&& contractItem.getContract().isItemContract() //Not courier\r\n\t\t\t\t\t&& ((contractItem.isIncluded() && includeSellContracts) //Sell\r\n\t\t\t\t\t|| (!contractItem.isIncluded() && includeBuyContracts))) { //Buy\r\n\t\t\t\tMyAsset asset = new MyAsset(contractItem, issuer);\r\n\t\t\t\tlist.add(asset);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn list;\r\n\t}\r\n\r\n\tpublic static List<MyAsset> assetCloneImplants(final Map<OwnerType, List<RawClone>> clones, boolean includeJumpClones, boolean includePluggedInImplants) {\r\n\t\tList<MyAsset> assets = new ArrayList<>();\r\n\t\tfor (Map.Entry<OwnerType, List<RawClone>> entry : clones.entrySet()) {\r\n\t\t\tOwnerType owner = entry.getKey();\r\n\t\t\tfor (RawClone clone : entry.getValue()) {\r\n\t\t\t\tList<MyAsset> parents = new ArrayList<>();\r\n\t\t\t\tMyAsset jumpClone = new MyAsset(clone, owner);\r\n\t\t\t\tparents.add(jumpClone);\r\n\t\t\t\tif (includeJumpClones) {\r\n\t\t\t\t\tassets.add(jumpClone);\r\n\t\t\t\t}\r\n\t\t\t\tif (includePluggedInImplants) {\r\n\t\t\t\t\tfor (Integer implantTypeID : clone.getImplants()) {\r\n\t\t\t\t\t\tMyAsset implant = new MyAsset(clone, implantTypeID, owner, parents);\r\n\t\t\t\t\t\tjumpClone.addAsset(implant);\r\n\t\t\t\t\t\tif (!includeJumpClones) {\r\n\t\t\t\t\t\t\tassets.add(implant);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn assets;\r\n\t}\r\n\r\n\tprotected static List<MyAccountBalance> convertRawAccountBalance(List<RawAccountBalance> rawAccountBalances, OwnerType owner) {\r\n\t\tList<MyAccountBalance> accountBalances = new ArrayList<>();\r\n\t\tfor (RawAccountBalance rawAccountBalance : rawAccountBalances) { //Lookup by ItemID\r\n\t\t\taccountBalances.add(toMyAccountBalance(rawAccountBalance, owner));\r\n\t\t}\r\n\t\treturn accountBalances;\r\n\t}\r\n\r\n\tpublic static MyAccountBalance toMyAccountBalance(RawAccountBalance rawAccountBalance, OwnerType owner) {\r\n\t\treturn new MyAccountBalance(rawAccountBalance, owner);\r\n\t}\r\n\r\n\tpublic static List<MyAsset> toRawAssets(List<RawAsset> rawAssets, OwnerType owner) {\r\n\t\treturn convertRawAssets(rawAssets, owner);\r\n\t}\r\n\r\n\tprotected static List<MyAsset> convertRawAssets(List<RawAsset> rawAssets, OwnerType owner) {\r\n\t\tList<MyAsset> assets = new ArrayList<>();\r\n\r\n\t\tMap<Long, RawAsset> lookup = new HashMap<>();\r\n\t\tMap<Long, List<RawAsset>> childMap = new HashMap<>();\r\n\t\tList<RawAsset> root = new ArrayList<>();\r\n\t\tfor (RawAsset rawAsset : rawAssets) { //Lookup by ItemID\r\n\t\t\tlookup.put(rawAsset.getItemID(), rawAsset);\r\n\t\t\tchildMap.put(rawAsset.getItemID(), new ArrayList<>());\r\n\t\t}\r\n\t\tfor (RawAsset rawAsset : rawAssets) { //Create child map\r\n\t\t\tRawAsset parent = lookup.get(rawAsset.getLocationID());\r\n\t\t\tif (parent != null) { //Is Child Asset\r\n\t\t\t\tchildMap.get(parent.getItemID()).add(rawAsset);\r\n\t\t\t} else { //Is Root Asset\r\n\t\t\t\troot.add(rawAsset);\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (RawAsset rawAsset : root) {\r\n\t\t\tMyAsset asset = deepAsset(rawAsset, owner, childMap, null);\r\n\t\t\tif (asset != null) {\r\n\t\t\t\tassets.add(asset);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn assets;\r\n\t}\r\n\r\n\tprivate static MyAsset deepAsset(RawAsset rawAsset, OwnerType owner, Map<Long, List<RawAsset>> childMap, MyAsset parent) {\r\n\t\tList<MyAsset> parents = new ArrayList<>();\r\n\t\tif (parent != null) {\r\n\t\t\tparents.addAll(parent.getParents());\r\n\t\t\tparents.add(parent);\r\n\t\t}\r\n\t\tMyAsset asset = toMyAsset(rawAsset, owner, parents);\r\n\t\tif (asset != null) {\r\n\t\t\tfor (RawAsset child : childMap.get(rawAsset.getItemID())) {\r\n\t\t\t\tMyAsset childAsset = deepAsset(child, owner, childMap, asset);\r\n\t\t\t\tif (childAsset != null) {\r\n\t\t\t\t\tasset.addAsset(childAsset);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn asset;\r\n\t}\r\n\r\n\tpublic static MyAsset toMyAsset(RawAsset rawAsset, OwnerType owner, List<MyAsset> parents) {\r\n\t\tItem item = ApiIdConverter.getItemUpdate(rawAsset.getTypeID());\r\n\t\tif (!parents.isEmpty()) { //Update locationID from ItemID to locationID\r\n\t\t\tMyAsset rootAsset = parents.get(0);\r\n\t\t\trawAsset.setLocationID(rootAsset.getLocationID());\r\n\t\t}\r\n\t\treturn new MyAsset(rawAsset, item, owner, parents);\r\n\t}\r\n\r\n\tprotected static Map<MyContract, List<MyContractItem>> convertRawContracts(List<RawContract> rawContracts, OwnerType owner, boolean saveHistory) {\r\n\t\tMap<MyContract, List<MyContractItem>> contracts = new HashMap<>();\r\n\t\tfor (RawContract rawContract : rawContracts) {\r\n\t\t\tMyContract contract = toMyContract(rawContract);\r\n\t\t\tList<MyContractItem> contractItems = owner.getContracts().get(contract); //Load ContractItems\r\n\t\t\tif (contractItems == null) { //New\r\n\t\t\t\tcontractItems = new ArrayList<>();\r\n\t\t\t} else { //Old, update contract items\r\n\t\t\t\tfor (MyContractItem contractItem : contractItems) {\r\n\t\t\t\t\tcontractItem.setContract(contract);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tcontracts.put(contract, contractItems);\r\n\t\t}\r\n\t\tif (saveHistory) {\r\n\t\t\tSet<MyContract> update = new HashSet<>(contracts.keySet()); //Contracts in esi needs to be update\r\n\t\t\tfor (Map.Entry<MyContract, List<MyContractItem>> entry : owner.getContracts().entrySet()) {\r\n\t\t\t\tMyContract contract = entry.getKey();\r\n\t\t\t\tif (!contracts.containsKey(contract)) {\r\n\t\t\t\t\tif(contract.archive()) {\r\n\t\t\t\t\t\tupdate.add(contract); //Archived contracts needs to be update\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontracts.put(contract, entry.getValue());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tProfileDatabase.update(new ProfileConnectionData<MyContract>(new HashSet<>(update)) {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void update(Connection connection, Collection<MyContract> data) throws SQLException {\r\n\t\t\t\t\tProfileContracts.updateContracts(connection, owner.getAccountID(), data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn contracts;\r\n\t}\r\n\r\n\tprotected static Map<MyContract, List<MyContractItem>> convertRawContractItems(Map<MyContract, List<RawContractItem>> rawContractItems, OwnerType owner, boolean saveHistory) {\r\n\t\tMap<MyContract, List<MyContractItem>> contracts = new HashMap<>();\r\n\t\tfor (Map.Entry<MyContract, List<RawContractItem>> entry : rawContractItems.entrySet()) {\r\n\t\t\tList<MyContractItem> contractItems = new ArrayList<>();\r\n\t\t\tfor (RawContractItem response : entry.getValue()) {\r\n\t\t\t\tcontractItems.add(toMyContractItem(response, entry.getKey()));\r\n\t\t\t}\r\n\t\t\tcontracts.put(entry.getKey(), contractItems);\r\n\t\t}\r\n\t\tif (saveHistory) {\r\n\t\t\tProfileDatabase.update(new ProfileConnectionData<List<MyContractItem>>(contracts.values()) {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void update(Connection connection, Collection<List<MyContractItem>> data) throws SQLException {\r\n\t\t\t\t\tProfileContracts.updateContractItems(connection, data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfor (Map.Entry<MyContract, List<MyContractItem>> entry : owner.getContracts().entrySet()) {\r\n\t\t\t\tcontracts.putIfAbsent(entry.getKey(), entry.getValue());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn contracts;\r\n\t}\r\n\r\n\tpublic static MyContract toMyContract(RawContract rawContract) {\r\n\t\treturn new MyContract(rawContract);\r\n\t}\r\n\r\n\tpublic static MyContractItem toMyContractItem(RawContractItem rawContractItem, MyContract contract) {\r\n\t\tItem item = ApiIdConverter.getItemUpdate(rawContractItem.getTypeID());\r\n\t\treturn new MyContractItem(rawContractItem, contract, item);\r\n\t}\r\n\r\n\tprotected static Set<MyIndustryJob> convertRawIndustryJobs(List<RawIndustryJob> rawIndustryJobs, OwnerType owner, boolean saveHistory) {\r\n\t\tSet<MyIndustryJob> industryJobs = new HashSet<>();\r\n\t\tfor (RawIndustryJob rawIndustryJob : rawIndustryJobs) {\r\n\t\t\tindustryJobs.add(toMyIndustryJob(rawIndustryJob, owner));\r\n\t\t}\r\n\t\tif (saveHistory) {\r\n\t\t\tSet<MyIndustryJob> update = new HashSet<>(industryJobs); //Industry jobs in esi needs to be update\r\n\t\t\tfor (MyIndustryJob industryJob : owner.getIndustryJobs()) {\r\n\t\t\t\tif (industryJob.archive()) {\r\n\t\t\t\t\tupdate.add(industryJob); //Archived industry jobs needs to be update\r\n\t\t\t\t}\r\n\t\t\t\tindustryJobs.add(industryJob);\r\n\t\t\t}\r\n\t\t\tProfileDatabase.update(new ProfileConnectionData<MyIndustryJob>(update) {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void update(Connection connection, Collection<MyIndustryJob> data) throws SQLException {\r\n\t\t\t\t\tProfileIndustryJobs.updateIndustryJobs(connection, owner.getAccountID(), data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn industryJobs;\r\n\t}\r\n\r\n\tpublic static MyIndustryJob toMyIndustryJob(RawIndustryJob rawIndustryJob, OwnerType owner) {\r\n\t\tItem item = ApiIdConverter.getItemUpdate(rawIndustryJob.getBlueprintTypeID());\r\n\t\tItem output = ApiIdConverter.getItemUpdate(rawIndustryJob.getProductTypeID());\r\n\t\treturn new MyIndustryJob(rawIndustryJob, item, output, owner);\r\n\t}\r\n\r\n\tprotected static Set<MyJournal> convertRawJournals(List<RawJournal> rawJournals, OwnerType owner, boolean saveHistory) {\r\n\t\tSet<MyJournal> journals = new HashSet<>();\r\n\t\tfor (RawJournal rawJournal : rawJournals) {\r\n\t\t\tjournals.add(toMyJournal(rawJournal, owner));\r\n\t\t}\r\n\t\tif (saveHistory) {\r\n\t\t\tProfileDatabase.update(new ProfileConnectionData<MyJournal>(journals) {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void update(Connection connection, Collection<MyJournal> data) throws SQLException {\r\n\t\t\t\t\tProfileJournals.updateJournals(connection, owner.getAccountID(), data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tjournals.addAll(owner.getJournal());\r\n\t\t}\r\n\t\treturn journals;\r\n\t}\r\n\r\n\tpublic static MyJournal toMyJournal(RawJournal rawJournal, OwnerType owner) {\r\n\t\treturn new MyJournal(rawJournal, owner);\r\n\t}\r\n\r\n\tprotected static Set<MyMarketOrder> convertRawMarketOrders(List<RawMarketOrder> rawMarketOrders, OwnerType owner, boolean saveHistory) {\r\n\t\tSet<MyMarketOrder> marketOrders = new HashSet<>();\r\n\t\tMap<Long, Set<Change>> changed = new HashMap<>();\r\n\t\tfor (MyMarketOrder marketOrder : owner.getMarketOrders()) {\r\n\t\t\tchanged.put(marketOrder.getOrderID(), marketOrder.getChanges());\r\n\t\t}\r\n\t\tfor (RawMarketOrder rawMarketOrder : rawMarketOrders) {\r\n\t\t\tMyMarketOrder marketOrder = toMyMarketOrder(rawMarketOrder, owner);\r\n\t\t\tmarketOrders.add(marketOrder);\r\n\t\t\tmarketOrder.addChanges(changed.get(marketOrder.getOrderID()));\r\n\t\t}\r\n\t\tif (saveHistory) {\r\n\t\t\tSet<MyMarketOrder> update = new HashSet<>(marketOrders); //Market orders in esi needs to be update\r\n\t\t\tfor (MyMarketOrder marketOrder : owner.getMarketOrders()) {\r\n\t\t\t\tif (marketOrder.archive()) {\r\n\t\t\t\t\tupdate.add(marketOrder); //Archived market orders needs to be update\r\n\t\t\t\t}\r\n\t\t\t\tmarketOrders.add(marketOrder);\r\n\t\t\t}\r\n\t\t\tProfileDatabase.update(new ProfileConnectionData<MyMarketOrder>(update) {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void update(Connection connection, Collection<MyMarketOrder> data) throws SQLException {\r\n\t\t\t\t\tProfileMarketOrders.updateMarketOrders(connection, owner.getAccountID(), data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn marketOrders;\r\n\t}\r\n\r\n\tpublic static MyMarketOrder toMyMarketOrder(RawMarketOrder rawMarketOrder, OwnerType owner) {\r\n\t\tItem item = ApiIdConverter.getItemUpdate(rawMarketOrder.getTypeID());\r\n\t\treturn new MyMarketOrder(rawMarketOrder, item, owner);\r\n\t}\r\n\r\n\tprotected static Set<MyTransaction> convertRawTransactions(List<RawTransaction> rawTransactions, OwnerType owner, boolean saveHistory) {\r\n\t\tSet<MyTransaction> transactions = new HashSet<>();\r\n\t\tfor (RawTransaction rawTransaction : rawTransactions) {\r\n\t\t\ttransactions.add(toMyTransaction(rawTransaction, owner));\r\n\t\t}\r\n\t\tif (saveHistory) {\r\n\t\t\tProfileDatabase.update(new ProfileConnectionData<MyTransaction>(transactions) {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void update(Connection connection, Collection<MyTransaction> data) throws SQLException {\r\n\t\t\t\t\tProfileTransactions.updateTransactions(connection, owner.getAccountID(), data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\ttransactions.addAll(owner.getTransactions());\r\n\t\t}\r\n\t\treturn transactions;\r\n\t}\r\n\r\n\tpublic static MyTransaction toMyTransaction(RawTransaction rawTransaction, OwnerType owner) {\r\n\t\tItem item = ApiIdConverter.getItemUpdate(rawTransaction.getTypeID());\r\n\t\treturn new MyTransaction(rawTransaction, item, owner);\r\n\t}\r\n\r\n\tprotected static List<MySkill> convertRawSkills(List<RawSkill> rawSkills, OwnerType owner) {\r\n\t\tList<MySkill> skills = new ArrayList<>();\r\n\t\tfor (RawSkill rawSkill : rawSkills) {\r\n\t\t\tskills.add(toMySkill(rawSkill, owner));\r\n\t\t}\r\n\t\treturn skills;\r\n\t}\r\n\r\n\tpublic static MySkill toMySkill(RawSkill rawSkill, OwnerType owner) {\r\n\t\tItem item = ApiIdConverter.getItemUpdate(rawSkill.getTypeID());\r\n\t\treturn new MySkill(rawSkill, item, owner.getOwnerName());\r\n\t}\r\n\r\n\tprotected static Set<MyMining> convertRawMining(List<RawMining> rawMinings, OwnerType owner, boolean saveHistory) {\r\n\t\tSet<MyMining> minings = new HashSet<>();\r\n\t\tfor (RawMining rawMining : rawMinings) {\r\n\t\t\tminings.add(toMyMining(rawMining));\r\n\t\t}\r\n\t\tif (saveHistory) {\r\n\t\t\tProfileDatabase.update(new ProfileConnectionData<MyMining>(minings) {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void update(Connection connection, Collection<MyMining> data) throws SQLException {\r\n\t\t\t\t\tProfileMining.updateMinings(connection, owner.getAccountID(), data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tminings.addAll(owner.getMining());\r\n\t\t}\r\n\t\treturn minings;\r\n\t}\r\n\r\n\tpublic static MyMining toMyMining(RawMining rawMining) {\r\n\t\tItem item = ApiIdConverter.getItemUpdate(rawMining.getTypeID());\r\n\t\tMyLocation location = ApiIdConverter.getLocation(rawMining.getLocationID());\r\n\t\treturn new MyMining(rawMining, item, location);\r\n\t}\r\n\r\n\tprotected static Set<MyExtraction> convertRawExtraction(List<RawExtraction> rawExtractions, OwnerType owner, boolean saveHistory) {\r\n\t\tSet<MyExtraction> extractions = new HashSet<>();\r\n\t\tfor (RawExtraction rawMining : rawExtractions) {\r\n\t\t\textractions.add(toMyExtraction(rawMining));\r\n\t\t}\r\n\t\tif (saveHistory) {\r\n\t\t\tProfileDatabase.update(new ProfileConnectionData<MyExtraction>(new ArrayList<>(extractions)) {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic void update(Connection connection, Collection<MyExtraction> data) throws SQLException {\r\n\t\t\t\t\tProfileMining.updateExtractions(connection, owner.getAccountID(), data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\textractions.addAll(owner.getExtractions());\r\n\t\t}\r\n\t\treturn extractions;\r\n\t}\r\n\r\n\tpublic static MyExtraction toMyExtraction(RawExtraction rawExtraction) {\r\n\t\tMyLocation moon = ApiIdConverter.getLocation(rawExtraction.getMoonID());\r\n\t\treturn new MyExtraction(rawExtraction, moon);\r\n\t}\r\n\r\n\tprotected static Set<MyLoyaltyPoints> convertMyLoyaltyPoints(Set<RawLoyaltyPoints> rawLoyaltyPointses, OwnerType owner) {\r\n\t\tSet<MyLoyaltyPoints> loyaltyPointses = new HashSet<>();\r\n\t\tfor (RawLoyaltyPoints rawLoyaltyPoints : rawLoyaltyPointses) {\r\n\t\t\tloyaltyPointses.add(toMyLoyaltyPoints(rawLoyaltyPoints, owner));\r\n\t\t}\r\n\t\treturn loyaltyPointses;\r\n\t}\r\n\r\n\tpublic static MyLoyaltyPoints toMyLoyaltyPoints(RawLoyaltyPoints rawLoyaltyPoints, OwnerType owner) {\r\n\t\treturn new MyLoyaltyPoints(rawLoyaltyPoints, owner);\r\n\t}\r\n\r\n\tprotected static Set<MyNpcStanding> convertMyNpcStanding(Set<RawNpcStanding> rawNpcStandings, OwnerType owner) {\r\n\t\tSet<MyNpcStanding> npcStandings = new HashSet<>();\r\n\t\tfor (RawNpcStanding rawNpcStanding : rawNpcStandings) {\r\n\t\t\tnpcStandings.add(toMyNpcStanding(rawNpcStanding, owner));\r\n\t\t}\r\n\t\treturn npcStandings;\r\n\t}\r\n\r\n\tpublic static MyNpcStanding toMyNpcStanding(RawNpcStanding rawNpcStanding, OwnerType owner) {\r\n\t\treturn new MyNpcStanding(rawNpcStanding, owner);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/shared/DesktopUtil.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.io.shared;\n\nimport java.awt.Desktop;\nimport java.awt.Window;\nimport java.io.File;\nimport java.io.IOException;\nimport java.net.URI;\nimport java.net.URISyntaxException;\nimport java.util.Set;\nimport javax.swing.JEditorPane;\nimport javax.swing.JOptionPane;\nimport javax.swing.event.HyperlinkEvent;\nimport javax.swing.event.HyperlinkListener;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.gui.shared.CopyHandler;\nimport net.nikr.eve.jeveasset.gui.shared.components.JTextDialog;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n\npublic final class DesktopUtil {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(DesktopUtil.class);\n\n\tprivate DesktopUtil() { }\n\n\tpublic static HyperlinkListener getHyperlinkListener(Window window) {\n\t\treturn new LinkListener(window);\n\t}\n\n\tprivate static boolean isSupported(final Desktop.Action action) {\n\t\tif (Desktop.isDesktopSupported()) {\n\t\t\tDesktop desktop = Desktop.getDesktop();\n\t\t\tif (desktop.isSupported(action)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static void open(final String filename, final Program program) {\n\t\tFile file = new File(filename);\n\t\tLOG.info(\"Opening: {}\", file.getName());\n\t\tif (isSupported(Desktop.Action.OPEN)) {\n\t\t\tDesktop desktop = Desktop.getDesktop();\n\t\t\ttry {\n\t\t\t\tdesktop.open(file);\n\t\t\t\treturn;\n\t\t\t} catch (IOException ex) {\n\t\t\t\tLOG.warn(\"\tOpening Failed: {}\", ex.getMessage());\n\t\t\t}\n\t\t} else {\n\t\t\tLOG.warn(\"\tOpening failed\");\n\t\t}\n\t\tJOptionPane.showMessageDialog(program.getMainWindow().getFrame(), \"Could not open \" + file.getName(), \"Open File\", JOptionPane.PLAIN_MESSAGE);\n\t}\n\n\t/**\n\t * Open link to jEveAssets manual\n\t * @param helpLink\n\t * @param window\n\t */\n\tpublic static void browse(HelpLink helpLink, final Window window) {\n\t\tif (helpLink == null) {\n\t\t\treturn;\n\t\t}\n\t\tint returnValue = JOptionPane.showConfirmDialog(window, GuiShared.get().helpOpenManual(helpLink.getTitle()), GuiShared.get().helpOpenManualTitle(), JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);\n\t\tif (returnValue != JOptionPane.OK_OPTION) {\n\t\t\treturn;\n\t\t}\n\t\tbrowse(helpLink.getLink(), window);\n\t}\n\n\t/**\n\t * Open a single link\n\t * @param url\n\t * @param program\n\t */\n\tpublic static void browse(final String url, Program program) {\n\t\tbrowse(url, getWindow(program));\n\t}\n\n\t/**\n\t * Open a single link\n\t * @param url\n\t * @param window\n\t * @return\n\t */\n\tpublic static boolean browse(final String url, final Window window) {\n\t\tif (url == null) {\n\t\t\treturn false;\n\t\t}\n\t\tif (isSupported(Desktop.Action.BROWSE)) {\n\t\t\tif (browse(url)) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\tJOptionPane.showMessageDialog(window, \"Could not browse to:\\r\\n\" + url, \"Browse\", JOptionPane.PLAIN_MESSAGE);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else {\n\t\t\tint value = JOptionPane.showConfirmDialog(window, \"Automatic browsing is not support on this platform.\\r\\n\"\n\t\t\t\t\t+ \"1) Press OK to copy the URL into your clipboard.\\r\\n\"\n\t\t\t\t\t+ \"2) Open your browser and paste the url into the address line.\", \"Browse\", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);\n\t\t\tif (value == JOptionPane.OK_OPTION) {\n\t\t\t\tCopyHandler.toClipboard(url);\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Open multiple links\n\t * @param urls\n\t * @param program\n\t */\n\tpublic static void browse(final Set<String> urls, Program program) {\n\t\tbrowse(urls, getWindow(program));\n\t}\n\n\t/**\n\t * Open multiple links\n\t * @param urls\n\t * @param window\n\t */\n\tprivate static void browse(final Set<String> urls, Window window) {\n\t\tif (urls == null || urls.isEmpty()) {\n\t\t\treturn;\n\t\t}\n\t\tif (isSupported(Desktop.Action.BROWSE)) {\n\t\t\tif (urls.size() > 1) {\n\t\t\t\tint value = JOptionPane.showConfirmDialog(window, GuiShared.get().openLinks(urls.size()), GuiShared.get().openLinksTitle(), JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);\n\t\t\t\tif(value != JOptionPane.OK_OPTION) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (String url : urls) {\n\t\t\t\tif (!browse(url)) {\n\t\t\t\t\tJOptionPane.showMessageDialog(window, \"Could not browse to:\\r\\n\" + url, \"Browse\", JOptionPane.PLAIN_MESSAGE);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tStringBuilder builder = new StringBuilder();\n\t\t\tfor (String url : urls) {\n\t\t\t\tbuilder.append(url);\n\t\t\t\tbuilder.append(\"\\r\\n\");\n\t\t\t}\n\t\t\tJOptionPane.showMessageDialog(window, \"Automatic browsing is not support on this platform.\\r\\n\"\n\t\t\t\t\t+ \"You need to copy and paste the URLs the into your browser.\\r\\n\"\n\t\t\t\t\t+ \"Press OK to show the URLs.\", \"Browse\", JOptionPane.PLAIN_MESSAGE);\n\t\t\tJTextDialog jTextDialog = new JTextDialog(window);\n\t\t\tjTextDialog.exportText(builder.toString());\n\t\t}\n\t}\n\n\tprivate static Window getWindow(Program program) {\n\t\tif (program != null) {\n\t\t\treturn program.getMainWindow().getFrame();\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate static boolean browse(final String url) {\n\t\tif (url == null) {\n\t\t\treturn false;\n\t\t}\n\t\tLOG.info(\"Browsing: \" + url);\n\t\tURI uri;\n\t\ttry {\n\t\t\turi = new URI(url);\n\t\t} catch (URISyntaxException ex) {\n\t\t\tLOG.warn(\"\tBrowsing Failed: \" + ex.getMessage());\n\t\t\treturn false;\n\t\t}\n\t\tDesktop desktop = Desktop.getDesktop();\n\t\ttry {\n\t\t\tdesktop.browse(uri);\n\t\t\treturn true;\n\t\t} catch (IOException ex) {\n\t\t\tLOG.warn(\"\tBrowsing Failed: \" + ex.getMessage());\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tprivate static class LinkListener implements HyperlinkListener {\n\n\t\tprivate final Window window;\n\n\t\tpublic LinkListener(Window window) {\n\t\t\tthis.window = window;\n\t\t}\n\n\t\t@Override\n\t\tpublic void hyperlinkUpdate(final HyperlinkEvent hle) {\n\t\t\tObject o = hle.getSource();\n\t\t\tif (o instanceof JEditorPane) {\n\t\t\t\tJEditorPane jEditorPane = (JEditorPane) o;\n\t\t\t\tif (HyperlinkEvent.EventType.ACTIVATED.equals(hle.getEventType()) && jEditorPane.isEnabled()) {\n\t\t\t\t\tbrowse(hle.getURL().toString(), window);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class HelpLink {\n\t\tprivate final String link;\n\t\tprivate final String title;\n\n\t\tpublic HelpLink(String link, String title) {\n\t\t\tthis.link = link;\n\t\t\tthis.title = title;\n\t\t}\n\n\t\tpublic String getLink() {\n\t\t\treturn link;\n\t\t}\n\n\t\tpublic String getTitle() {\n\t\t\treturn title;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/shared/FileUtil.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.shared;\r\n\r\nimport java.io.File;\r\nimport java.io.IOException;\r\nimport java.nio.file.FileSystems;\r\nimport java.nio.file.FileVisitResult;\r\nimport java.nio.file.Files;\r\nimport java.nio.file.Path;\r\nimport java.nio.file.PathMatcher;\r\nimport java.nio.file.Paths;\r\nimport java.nio.file.SimpleFileVisitor;\r\nimport java.nio.file.attribute.BasicFileAttributes;\r\nimport javax.swing.JOptionPane;\r\nimport net.nikr.eve.jeveasset.CliOptions;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class FileUtil extends FileUtilSimple {\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(FileUtil.class);\r\n\tprivate static final Object SYNC_LOCK = new Object();\r\n\t\r\n\r\n\tprivate static final String PATH_IMAGES = \"images\";\r\n\tprivate static final String PATH_SOUNDS = \"sounds\";\r\n\tprivate static final String PATH_ASSET_ADDED = \"data\" + File.separator + \"added.json\";\r\n\tprivate static final String PATH_ASSET_ADDED_DATABASE = \"data\" + File.separator + \"addedsql.db\";\r\n\tprivate static final String PATH_STOCKPILE_IDS_DATABASE = \"data\" + File.separator + \"stockpileids.db\";\r\n\tprivate static final String PATH_PRICE_HISTORY_DATABASE = \"data\" + File.separator + \"pricehistory.db\";\r\n\tprivate static final String PATH_TRACKER_DATA = \"data\" + File.separator + \"tracker.json\";\r\n\tprivate static final String PATH_SETTINGS = \"data\" + File.separator + \"settings.xml\";\r\n\tprivate static final String PATH_AGENTS = \"data\" + File.separator + \"agents.xml\";\r\n\tprivate static final String PATH_NPC_CORPORATION = \"data\" + File.separator + \"npccorporation.xml\";\r\n\tprivate static final String PATH_ITEMS = \"data\" + File.separator + \"items.xml\";\r\n\tprivate static final String PATH_ITEMS_UPDATES = \"data\" + File.separator + \"items_updates.xml\";\r\n\tprivate static final String PATH_JUMPS = \"data\" + File.separator + \"jumps.xml\";\r\n\tprivate static final String PATH_LOCATIONS = \"data\" + File.separator + \"locations.xml\";\r\n\tprivate static final String PATH_FLAGS = \"data\" + File.separator + \"flags.xml\";\r\n\tprivate static final String PATH_PRICE_DATA = \"data\" + File.separator + \"pricedata.dat\";\r\n\tprivate static final String PATH_ASSETS = \"data\" + File.separator + \"assets.xml\";\r\n\tprivate static final String PATH_CONQUERABLE_STATIONS = \"data\" + File.separator + \"conquerable_stations.xml\";\r\n\tprivate static final String PATH_CITADEL = \"data\" + File.separator + \"citadel.xml\";\r\n\tprivate static final String PATH_README = \"readme.txt\";\r\n\tprivate static final String PATH_LICENSE = \"license.txt\";\r\n\tprivate static final String PATH_CREDITS = \"credits.txt\";\r\n\tprivate static final String PATH_CHANGELOG = \"changelog.txt\";\r\n\tprivate static final String PATH_PROFILES = \"profiles\";\r\n\tprivate static final String PATH_DATA = \"data\";\r\n\tprivate static final String PATH_DATA_VERSION = \"data\" + File.separator + \"data.dat\";\r\n\tprivate static final String PATH_PACKAGE_MANAGER = \"packagemanager.properties\";\r\n\tprivate static final String PATH_MEMORY = \"jmemory.jar\";\r\n\tprivate static final String PATH_EXPORT = \"exports\";\r\n\r\n\tprivate static enum FileType {\r\n\t\tSTATIC_DATA, USER_FILES\r\n\t}\r\n\r\n\tprivate static boolean testPath = false;\r\n\r\n\tpublic static void enableTestPath() {\r\n\t\ttestPath = true;\r\n\t}\r\n\r\n\tpublic static boolean onMac() {\r\n\t\treturn System.getProperty(\"os.name\").toLowerCase().startsWith(\"mac os x\");\r\n\t}\r\n\r\n\tpublic static String getPathDataVersion() {\r\n\t\treturn getStaticFile(PATH_DATA_VERSION);\r\n\t}\r\n\r\n\tpublic static String getPathRunMemory() {\r\n\t\treturn getStaticFile(PATH_MEMORY);\r\n\t}\r\n\r\n\tpublic static String getPathPackageManager() {\r\n\t\treturn getStaticFile(PATH_PACKAGE_MANAGER);\r\n\t}\r\n\r\n\tpublic static String getPathRunUpdate() {\r\n\t\tFile userDir = new File(System.getProperty(\"user.home\", \".\"));\r\n\t\tFile file = new File(userDir.getAbsolutePath() + File.separator + \".jupdate\" + File.separator + \"jupdate.jar\");\r\n\t\tFile parentDir = file.getParentFile();\r\n\t\tif (!parentDir.exists() && !parentDir.mkdirs()) {\r\n\t\t\tthrow new RuntimeException(\"Failed to create .jUpdate directory\");\r\n\t\t}\r\n\t\treturn file.getAbsolutePath();\r\n\t}\r\n\r\n\tpublic static String getPathImages(String filename) {\r\n\t\treturn getUserFile(PATH_IMAGES + File.separator + filename);\r\n\t}\r\n\r\n\tpublic static String getPathSounds(String filename) {\r\n\t\treturn getUserFile(PATH_SOUNDS + File.separator + filename);\r\n\t}\r\n\r\n\tpublic static String getPathSoundsDirectory() {\r\n\t\treturn getUserFile(PATH_SOUNDS);\r\n\t}\r\n\r\n\tpublic static String getUserFile(final String filename) {\r\n\t\treturn getLocalFile(filename, FileType.USER_FILES);\r\n\t}\r\n\r\n\tpublic static String getStaticFile(final String filename) {\r\n\t\treturn getLocalFile(filename, FileType.STATIC_DATA);\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param filename the name of the data file to obtain\r\n\t * @param fileType\r\n\t * @return\r\n\t */\r\n\tprivate static String getLocalFile(final String filename, FileType fileType) {\r\n\t\tFile file;\r\n\t\tFile ret;\r\n\t\tif (fileType == FileType.USER_FILES && testPath) {\r\n\t\t\tret = new File(FileUtilSimple.getLocalFile(\"test-output\" + File.separator + filename));\r\n\t\t} else if (fileType == FileType.USER_FILES && !CliOptions.get().isPortable()) {\r\n\t\t\tFile userDir = new File(System.getProperty(\"user.home\", \".\"));\r\n\t\t\tif (onMac()) { // preferences are stored in user.home/Library/Preferences\r\n\t\t\t\tfile = new File(userDir, \"Library\" + File.separator + \"Preferences\" + File.separator + \"JEveAssets\");\r\n\t\t\t} else {\r\n\t\t\t\tfile = new File(userDir.getAbsolutePath() + File.separator + \".jeveassets\");\r\n\t\t\t}\r\n\t\t\tret = new File(file.getAbsolutePath() + File.separator + filename);\r\n\t\t} else { //jEveAssets program directory\r\n\t\t\tret = new File(FileUtilSimple.getLocalFile(filename));\r\n\t\t}\r\n\t\tFile parent = ret.getParentFile();\r\n\t\tsynchronized (SYNC_LOCK) {\r\n\t\t\tif (!parent.exists() && !parent.mkdirs()) {\r\n\t\t\t\tJOptionPane.showMessageDialog(null, \"Failed to create directory \" + parent.getAbsolutePath(), Program.PROGRAM_NAME + \" - Critical Error\", JOptionPane.ERROR_MESSAGE);\r\n\t\t\t\tSystem.exit(-1);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn ret.getAbsolutePath();\r\n\t}\r\n\r\n\tpublic static String getExtension(final File file) {\r\n\t\tString extension = null;\r\n\t\tif (file == null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tString filename = file.getName();\r\n\t\tint i = filename.lastIndexOf('.');\r\n\t\tif (i > 0 && i < filename.length() - 1) {\r\n\t\t\textension = filename.substring(i + 1).toLowerCase();\r\n\t\t}\r\n\t\treturn extension;\r\n\t}\r\n\r\n\tpublic static void autoImportFileUtil() {\r\n\t\tif (Program.isDevBuild() && !Settings.isTestMode()) { //Need import\r\n\t\t\tCliOptions.get().setPortable(false);\r\n\t\t\tPath settingsFrom = Paths.get(getPathSettings());\r\n\t\t\tPath trackerFrom = Paths.get(getPathTrackerData());\r\n\t\t\tPath assetAddedFrom = Paths.get(getPathAssetAdded());\r\n\t\t\tPath assetAddedDatabaseFrom = Paths.get(getPathAssetAddedDatabase());\r\n\t\t\tPath stockpileIDsDatabaseFrom = Paths.get(getPathStockpileIDsDatabase());\r\n\t\t\tPath priceHistoryDatabasFrom = Paths.get(getPathPriceHistoryDatabase());\r\n\t\t\tPath citadelFrom = Paths.get(getPathCitadel());\r\n\t\t\tPath priceFrom = Paths.get(getPathPriceData());\r\n\t\t\tPath profilesFrom = Paths.get(getPathProfilesDirectory());\r\n\t\t\tPath itemsUpdatesFrom = Paths.get(getPathItemsUpdates());\r\n\t\t\tCliOptions.get().setPortable(true);\r\n\t\t\tPath settingsTo = Paths.get(getPathSettings());\r\n\t\t\tPath trackerTo = Paths.get(getPathTrackerData());\r\n\t\t\tPath assetAddedTo = Paths.get(getPathAssetAdded());\r\n\t\t\tPath assetAddedDatabaseTo = Paths.get(getPathAssetAddedDatabase());\r\n\t\t\tPath stockpileIDsDatabaseTo = Paths.get(getPathStockpileIDsDatabase());\r\n\t\t\tPath priceHistoryDatabasTo = Paths.get(getPathPriceHistoryDatabase());\r\n\t\t\tPath citadelTo = Paths.get(getPathCitadel());\r\n\t\t\tPath priceTo = Paths.get(getPathPriceData());\r\n\t\t\tPath profilesTo = Paths.get(getPathProfilesDirectory());\r\n\t\t\tPath itemsUpdatesTo = Paths.get(getPathItemsUpdates());\r\n\t\t\tif (Files.exists(settingsFrom) && !Files.exists(settingsTo)) {\r\n\t\t\t\tLOG.info(\"Importing settings\");\r\n\t\t\t\ttry {\r\n\t\t\t\t\tFiles.copy(settingsFrom, settingsTo);\r\n\t\t\t\t\tLOG.info(\"\tOK\");\r\n\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\tLOG.info(\"\tFAILED\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (Files.exists(trackerFrom) && !Files.exists(trackerTo)) {\r\n\t\t\t\tLOG.info(\"Importing tracker data\");\r\n\t\t\t\ttry {\r\n\t\t\t\t\tFiles.copy(trackerFrom, trackerTo);\r\n\t\t\t\t\tLOG.info(\"\tOK\");\r\n\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\tLOG.info(\"\tFAILED\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (Files.exists(assetAddedFrom) && !Files.exists(assetAddedTo)) {\r\n\t\t\t\tLOG.info(\"Importing asset added\");\r\n\t\t\t\ttry {\r\n\t\t\t\t\tFiles.copy(assetAddedFrom, assetAddedTo);\r\n\t\t\t\t\tLOG.info(\"\tOK\");\r\n\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\tLOG.info(\"\tFAILED\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (Files.exists(assetAddedDatabaseFrom) && !Files.exists(assetAddedDatabaseTo)) {\r\n\t\t\t\tLOG.info(\"Importing asset added\");\r\n\t\t\t\ttry {\r\n\t\t\t\t\tFiles.copy(assetAddedDatabaseFrom, assetAddedDatabaseTo);\r\n\t\t\t\t\tLOG.info(\"\tOK\");\r\n\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\tLOG.info(\"\tFAILED\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (Files.exists(stockpileIDsDatabaseFrom) && !Files.exists(stockpileIDsDatabaseTo)) {\r\n\t\t\t\tLOG.info(\"Importing stockpile IDs\");\r\n\t\t\t\ttry {\r\n\t\t\t\t\tFiles.copy(stockpileIDsDatabaseFrom, stockpileIDsDatabaseTo);\r\n\t\t\t\t\tLOG.info(\"\tOK\");\r\n\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\tLOG.info(\"\tFAILED\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (Files.exists(priceHistoryDatabasFrom) && !Files.exists(priceHistoryDatabasTo)) {\r\n\t\t\t\tLOG.info(\"Importing price history\");\r\n\t\t\t\ttry {\r\n\t\t\t\t\tFiles.copy(priceHistoryDatabasFrom, priceHistoryDatabasTo);\r\n\t\t\t\t\tLOG.info(\"\tOK\");\r\n\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\tLOG.info(\"\tFAILED\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (Files.exists(citadelFrom) && !Files.exists(citadelTo)) {\r\n\t\t\t\tLOG.info(\"Importing citadels\");\r\n\t\t\t\ttry {\r\n\t\t\t\t\tFiles.copy(citadelFrom, citadelTo);\r\n\t\t\t\t\tLOG.info(\"\tOK\");\r\n\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\tLOG.info(\"\tFAILED\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (Files.exists(priceFrom) && !Files.exists(priceTo)) {\r\n\t\t\t\tLOG.info(\"Importing prices\");\r\n\t\t\t\ttry {\r\n\t\t\t\t\tFiles.copy(priceFrom, priceTo);\r\n\t\t\t\t\tLOG.info(\"\tOK\");\r\n\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\tLOG.info(\"\tFAILED\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (Files.exists(itemsUpdatesFrom) && !Files.exists(itemsUpdatesTo)) {\r\n\t\t\t\tLOG.info(\"Importing items updates\");\r\n\t\t\t\ttry {\r\n\t\t\t\t\tFiles.copy(itemsUpdatesFrom, itemsUpdatesTo);\r\n\t\t\t\t\tLOG.info(\"\tOK\");\r\n\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\tLOG.info(\"\tFAILED\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (Files.exists(profilesFrom) && !Files.exists(profilesTo)) {\r\n\t\t\t\tPathMatcher xmlMatcher = FileSystems.getDefault().getPathMatcher(\"glob:*.xml\");\r\n\t\t\t\tPathMatcher dbMatcher = FileSystems.getDefault().getPathMatcher(\"glob:*.db\");\r\n\t\t\t\ttry {\r\n\t\t\t\t\tLOG.info(\"Importing profiles\");\r\n\t\t\t\t\tFiles.walkFileTree(profilesFrom, new SimpleFileVisitor<Path>() {\r\n\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\tpublic FileVisitResult preVisitDirectory(final Path dir, final BasicFileAttributes attrs) throws IOException {\r\n\t\t\t\t\t\t\tif (dir.equals(profilesFrom)) {\r\n\t\t\t\t\t\t\t\tFiles.createDirectories(profilesTo.resolve(profilesFrom.relativize(dir)));\r\n\t\t\t\t\t\t\t\treturn FileVisitResult.CONTINUE;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\treturn FileVisitResult.SKIP_SUBTREE;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@Override\r\n\t\t\t\t\t\tpublic FileVisitResult visitFile(final Path file, final BasicFileAttributes attrs) throws IOException {\r\n\t\t\t\t\t\t\tif (xmlMatcher.matches(file.getFileName()) || dbMatcher.matches(file.getFileName())) {\r\n\t\t\t\t\t\t\t\tFiles.copy(file, profilesTo.resolve(profilesFrom.relativize(file)));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn FileVisitResult.CONTINUE;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tLOG.info(\"\tOK\");\r\n\t\t\t\t} catch (IOException ex) {\r\n\t\t\t\t\tLOG.info(\"\tFAILED\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static String getPathExports() {\r\n\t\treturn getUserFile(PATH_EXPORT);\r\n\t}\r\n\r\n\tpublic static String getPathSettings() {\r\n\t\treturn getUserFile(PATH_SETTINGS);\r\n\t}\r\n\r\n\tpublic static String getPathTrackerData() {\r\n\t\treturn getUserFile(PATH_TRACKER_DATA);\r\n\t}\r\n\r\n\tpublic static String getPathAssetAdded() {\r\n\t\treturn getUserFile(PATH_ASSET_ADDED);\r\n\t}\r\n\r\n\tpublic static String getPathAssetAddedDatabase() {\r\n\t\treturn getUserFile(PATH_ASSET_ADDED_DATABASE);\r\n\t}\r\n\r\n\tpublic static String getPathStockpileIDsDatabase() {\r\n\t\treturn getUserFile(PATH_STOCKPILE_IDS_DATABASE);\r\n\t}\r\n\r\n\tpublic static String getPathPriceHistoryDatabase() {\r\n\t\treturn getUserFile(PATH_PRICE_HISTORY_DATABASE);\r\n\t}\r\n\r\n\tpublic static String getPathConquerableStations() {\r\n\t\treturn getUserFile(PATH_CONQUERABLE_STATIONS);\r\n\t}\r\n\r\n\tpublic static String getPathCitadel() {\r\n\t\treturn getUserFile(PATH_CITADEL);\r\n\t}\r\n\r\n\tpublic static String getPathPriceData() {\r\n\t\treturn getUserFile(PATH_PRICE_DATA);\r\n\t}\r\n\r\n\tpublic static String getPathAssetsOld() {\r\n\t\treturn getUserFile(PATH_ASSETS);\r\n\t}\r\n\r\n\tpublic static String getPathProfilesDirectory() {\r\n\t\treturn getUserFile(PATH_PROFILES);\r\n\t}\r\n\r\n\tpublic static String getPathProfile(String filename) {\r\n\t\treturn getUserFile(PATH_PROFILES + File.separator + filename);\r\n\t}\r\n\r\n\tpublic static String getPathDataDirectory() {\r\n\t\treturn getUserFile(PATH_DATA);\r\n\t}\r\n\r\n\tpublic static String getPathItemsUpdates() {\r\n\t\treturn getUserFile(PATH_ITEMS_UPDATES);\r\n\t}\r\n\r\n\tpublic static String getPathJumps() {\r\n\t\treturn getStaticFile(PATH_JUMPS);\r\n\t}\r\n\r\n\tpublic static String getPathFlags() {\r\n\t\treturn getStaticFile(PATH_FLAGS);\r\n\t}\r\n\r\n\tpublic static String getPathStaticDataDirectory() {\r\n\t\treturn getStaticFile(PATH_DATA);\r\n\t}\r\n\r\n\tpublic static String getPathItems() {\r\n\t\treturn getStaticFile(PATH_ITEMS);\r\n\t}\r\n\r\n\tpublic static String getPathAgents() {\r\n\t\treturn getStaticFile(PATH_AGENTS);\r\n\t}\r\n\tpublic static String getPathNpcCorporation() {\r\n\t\treturn getStaticFile(PATH_NPC_CORPORATION);\r\n\t}\r\n\r\n\tpublic static String getPathLocations() {\r\n\t\treturn getStaticFile(PATH_LOCATIONS);\r\n\t}\r\n\r\n\tpublic static String getPathReadme() {\r\n\t\treturn getStaticFile(PATH_README);\r\n\t}\r\n\r\n\tpublic static String getPathLicense() {\r\n\t\treturn getStaticFile(PATH_LICENSE);\r\n\t}\r\n\r\n\tpublic static String getPathCredits() {\r\n\t\treturn getStaticFile(PATH_CREDITS);\r\n\t}\r\n\r\n\tpublic static String getPathChangeLog() {\r\n\t\treturn getStaticFile(PATH_CHANGELOG);\r\n\t}\r\n\r\n\tpublic static String getUserDirectory() {\r\n\t\tFile userDir = new File(System.getProperty(\"user.home\", \".\"));\r\n\t\treturn userDir.getAbsolutePath() + File.separator;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/shared/FileUtilSimple.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.shared;\r\n\r\nimport java.io.File;\r\nimport java.net.URL;\r\n\r\n\r\npublic class FileUtilSimple {\r\n\r\n\tprivate static final String PATH_JAR = \"jeveassets.jar\";\r\n\r\n\tpublic static String getPathRunJar() {\r\n\t\treturn getLocalFile(PATH_JAR);\r\n\t}\r\n\r\n\tpublic static String getPathLib() {\r\n\t\treturn getPathLib(\"\");\r\n\t}\r\n\r\n\tpublic static String getPathLib(String filename) {\r\n\t\treturn getLocalFile(\"lib\" + File.separator + filename);\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param filename the name of the data file to obtain\r\n\t * @return\r\n\t */\r\n\tpublic static String getLocalFile(final String filename) {\r\n\t\tFile file;\r\n\t\tFile ret;\r\n\t\tURL location = net.nikr.eve.jeveasset.Program.class.getProtectionDomain().getCodeSource().getLocation();\r\n\t\ttry {\r\n\t\t\tfile = new File(location.toURI());\r\n\t\t} catch (Exception ex) {\r\n\t\t\tfile = new File(location.getPath());\r\n\t\t}\r\n\t\tret = new File(file.getParentFile().getAbsolutePath() + File.separator + filename);\r\n\t\treturn ret.getAbsolutePath();\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/shared/RawConverter.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.io.shared;\n\nimport java.time.LocalDate;\nimport java.time.OffsetDateTime;\nimport java.time.ZoneOffset;\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.Map;\nimport net.nikr.eve.jeveasset.data.api.raw.RawContract;\nimport net.nikr.eve.jeveasset.data.api.raw.RawIndustryJob;\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournal;\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournalRefType;\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder;\nimport net.nikr.eve.jeveasset.data.api.raw.RawNpcStanding;\nimport net.nikr.eve.jeveasset.data.sde.ItemFlag;\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\nimport net.nikr.eve.jeveasset.i18n.GuiShared;\nimport net.troja.eve.esi.model.CharacterAssetsResponse;\nimport net.troja.eve.esi.model.CharacterBlueprintsResponse;\nimport net.troja.eve.esi.model.CharacterContractsResponse;\nimport net.troja.eve.esi.model.CharacterIndustryJobsResponse;\nimport net.troja.eve.esi.model.CharacterLocationResponse;\nimport net.troja.eve.esi.model.CharacterOrdersHistoryResponse;\nimport net.troja.eve.esi.model.CharacterOrdersResponse;\nimport net.troja.eve.esi.model.StandingsResponse;\nimport net.troja.eve.esi.model.CharacterWalletJournalResponse;\nimport net.troja.eve.esi.model.CorporationAssetsResponse;\nimport net.troja.eve.esi.model.CorporationBlueprintsResponse;\nimport net.troja.eve.esi.model.CorporationContractsResponse;\nimport net.troja.eve.esi.model.CorporationIndustryJobsResponse;\nimport net.troja.eve.esi.model.CorporationOrdersHistoryResponse;\nimport net.troja.eve.esi.model.CorporationOrdersResponse;\nimport net.troja.eve.esi.model.CorporationWalletJournalResponse;\nimport net.troja.eve.esi.model.JumpClone;\nimport net.troja.eve.esi.model.MarketRegionOrdersResponse;\nimport net.troja.eve.esi.model.MarketStructureResponse;\n\n\npublic class RawConverter {\n\n\tprivate static Map<Integer, RawJournalRefType> journalRefTypesIDs = null;\n\n\tprivate static synchronized void createJournalRefTypesIDs() {\n\t\tif (journalRefTypesIDs == null) {\n\t\t\tjournalRefTypesIDs = new HashMap<>();\n\t\t\tfor (RawJournalRefType journalRefType : RawJournalRefType.values()) {\n\t\t\t\tjournalRefTypesIDs.put(journalRefType.getID(), journalRefType);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static boolean toBoolean(Boolean value) {\n\t\tif (value == null) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn value;\n\t\t}\n\t}\n\n\tpublic static Long toLong(Number value) {\n\t\tif (value != null) {\n\t\t\treturn value.longValue();\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic static Long toLong(String value) {\n\t\tif (value != null) {\n\t\t\ttry {\n\t\t\t\treturn Long.valueOf(value);\n\t\t\t} catch (NumberFormatException ex) {\n\t\t\t\t//No problem just return null\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic static Integer toInteger(Number value) {\n\t\tif (value != null) {\n\t\t\treturn value.intValue();\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic static int toInteger(Number value, int nullValue) {\n\t\tif (value != null) {\n\t\t\treturn value.intValue();\n\t\t} else {\n\t\t\treturn nullValue;\n\t\t}\n\t}\n\n\tpublic static Integer toInteger(String value) {\n\t\tif (value != null) {\n\t\t\ttry {\n\t\t\t\treturn Integer.valueOf(value);\n\t\t\t} catch (NumberFormatException ex) {\n\t\t\t\t//No problem just return null\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic static Float toFloat(Number value) {\n\t\tif (value != null) {\n\t\t\treturn value.floatValue();\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic static double toDouble(Number value, double nullValue) {\n\t\tif (value != null) {\n\t\t\treturn value.doubleValue();\n\t\t} else {\n\t\t\treturn nullValue;\n\t\t}\n\t}\n\n\tpublic static double toDouble(Double value, double nullValue) {\n\t\tif (value != null) {\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn nullValue;\n\t\t}\n\t}\n\n\tpublic static Date toDate(OffsetDateTime dateTime) {\n\t\tif (dateTime == null) {\n\t\t\treturn null;\n\t\t} else {\n\t\t\treturn Date.from(dateTime.toInstant());\n\t\t}\n\t}\n\n\tpublic static Date toDate(LocalDate dateTime) {\n\t\tif (dateTime == null) {\n\t\t\treturn null;\n\t\t} else {\n\t\t\tDate date = Date.from(dateTime.atStartOfDay().toInstant(ZoneOffset.UTC));\n\t\t\tCalendar cal = Calendar.getInstance();\n\t\t\tcal.setTime(date);\n\t\t\tcal.set(Calendar.HOUR_OF_DAY, 12);\n\t\t\tcal.set(Calendar.MINUTE, 0);\n\t\t\tcal.set(Calendar.SECOND, 0);\n\t\t\tcal.set(Calendar.MILLISECOND, 0);\n\t\t\treturn cal.getTime();\n\t\t}\n\t}\n\n\tpublic static long toLocationID(CharacterLocationResponse shipLocation) {\n\t\tif (shipLocation.getStationId() != null) {\n\t\t\treturn shipLocation.getStationId();\n\t\t} else if (shipLocation.getStructureId() != null) {\n\t\t\treturn shipLocation.getStructureId();\n\t\t} else if (shipLocation.getSolarSystemId() != null) {\n\t\t\treturn shipLocation.getSolarSystemId();\n\t\t} else {\n\t\t\treturn 0; //Fallback\n\t\t}\n\t}\n\n\tpublic static ItemFlag toFlag(JumpClone.LocationTypeEnum value) {\n\t\treturn toFlagEnum(value);\n\t}\n\n\tpublic static ItemFlag toFlag(CharacterAssetsResponse.LocationFlagEnum value) {\n\t\treturn toFlagEnum(value);\n\t}\n\n\tpublic static ItemFlag toFlag(CorporationBlueprintsResponse.LocationFlagEnum value) {\n\t\treturn toFlagEnum(value);\n\t}\n\n\tpublic static ItemFlag toFlag(CorporationAssetsResponse.LocationFlagEnum value) {\n\t\treturn toFlagEnum(value);\n\t}\n\n\tpublic static ItemFlag toFlag(CharacterBlueprintsResponse.LocationFlagEnum value) {\n\t\treturn toFlagEnum(value);\n\t}\n\n\tprivate static <E extends Enum<E>> ItemFlag toFlagEnum(E value) {\n\t\tif (value == null) {\n\t\t\treturn ApiIdConverter.getFlag(0);\n\t\t}\n\t\ttry {\n\t\t\tLocationFlag locationFlag = LocationFlag.valueOf(value.name());\n\t\t\treturn ApiIdConverter.getFlag(locationFlag.getID());\n\t\t} catch (IllegalArgumentException ex) {\n\t\t\treturn ApiIdConverter.getFlag(0);\n\t\t}\n\t}\n\n\tpublic static ItemFlag toFlag(final int flagID, final String valueString) {\n\t\tItemFlag itemFlag = StaticData.get().getItemFlags().get(flagID);\n\t\tif (itemFlag != null) {\n\t\t\treturn itemFlag;\n\t\t}\n\t\tif (valueString != null) {\n\t\t\tfor (LocationFlag value : LocationFlag.values()) {\n\t\t\t\tif (value.getValue().equals(valueString)) {\n\t\t\t\t\treturn ApiIdConverter.getFlag(value.getID());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn ApiIdConverter.getFlag(0);\n\t}\n\n\tpublic static RawContract.ContractAvailability toContractAvailability(String valueEnum, String valueString) {\n\t\tif (valueEnum != null) {\n\t\t\ttry {\n\t\t\t\treturn RawContract.ContractAvailability.valueOf(valueEnum);\n\t\t\t} catch (IllegalArgumentException ex) {\n\n\t\t\t}\n\t\t\tswitch (valueEnum.toLowerCase()) {\n\t\t\t\tcase \"private\":\n\t\t\t\t\treturn RawContract.ContractAvailability.PERSONAL;\n\t\t\t\tcase \"public\":\n\t\t\t\t\treturn RawContract.ContractAvailability.PUBLIC;\n\t\t\t}\n\t\t}\n\t\tif (valueString != null) {\n\t\t\tfor (RawContract.ContractAvailability value : RawContract.ContractAvailability.values()) {\n\t\t\t\tif (value.getValue().equals(valueString)) {\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic static RawContract.ContractAvailability toContractAvailability(CharacterContractsResponse.AvailabilityEnum value) {\n\t\treturn toContractAvailabilityEnum(value);\n\t}\n\n\tpublic static RawContract.ContractAvailability toContractAvailability(CorporationContractsResponse.AvailabilityEnum value) {\n\t\treturn toContractAvailabilityEnum(value);\n\t}\n\n\tprivate static <E extends Enum<E>> RawContract.ContractAvailability toContractAvailabilityEnum(E value) {\n\t\tif (value == null) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\treturn RawContract.ContractAvailability.valueOf(value.name());\n\t\t} catch (IllegalArgumentException ex) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic static RawContract.ContractStatus toContractStatus(String valueEnum, String valueString) {\n\t\tif (valueEnum != null) {\n\t\t\ttry {\n\t\t\t\treturn RawContract.ContractStatus.valueOf(valueEnum);\n\t\t\t} catch (IllegalArgumentException ex) {\n\n\t\t\t}\n\t\t\tswitch (valueEnum.toUpperCase()) {\n\t\t\t\tcase \"COMPLETED\":\n\t\t\t\t\treturn RawContract.ContractStatus.FINISHED;\n\t\t\t\tcase \"COMPLETEDBYCONTRACTOR\":\n\t\t\t\t\treturn RawContract.ContractStatus.FINISHED_CONTRACTOR;\n\t\t\t\tcase \"COMPLETEDBYISSUER\":\n\t\t\t\t\treturn RawContract.ContractStatus.FINISHED_ISSUER;\n\t\t\t\tcase \"INPROGRESS\":\n\t\t\t\t\treturn RawContract.ContractStatus.IN_PROGRESS;\n\t\t\t}\n\t\t}\n\t\tif (valueString != null) {\n\t\t\tfor (RawContract.ContractStatus value : RawContract.ContractStatus.values()) {\n\t\t\t\tif (value.getValue().equals(valueString)) {\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic static RawContract.ContractStatus toContractStatus(CharacterContractsResponse.StatusEnum value) {\n\t\treturn toContractStatusEnum(value);\n\t}\n\n\tpublic static RawContract.ContractStatus toContractStatus(CorporationContractsResponse.StatusEnum value) {\n\t\treturn toContractStatusEnum(value);\n\t}\n\n\tprivate static <E extends Enum<E>> RawContract.ContractStatus toContractStatusEnum(E value) {\n\t\tif (value == null) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\treturn RawContract.ContractStatus.valueOf(value.name());\n\t\t} catch (IllegalArgumentException ex) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic static RawContract.ContractType toContractType(String valueEnum, String valueString) {\n\t\tif (valueEnum != null) {\n\t\t\ttry {\n\t\t\t\treturn RawContract.ContractType.valueOf(valueEnum);\n\t\t\t} catch (IllegalArgumentException ex) {\n\n\t\t\t}\n\t\t\tswitch (valueEnum.toLowerCase()) {\n\t\t\t\tcase \"item_exchange\":\n\t\t\t\t\treturn RawContract.ContractType.ITEM_EXCHANGE;\n\t\t\t\tcase \"itemexchange\":\n\t\t\t\t\treturn RawContract.ContractType.ITEM_EXCHANGE;\n\t\t\t\tcase \"courier\":\n\t\t\t\t\treturn RawContract.ContractType.COURIER;\n\t\t\t\tcase \"loan\":\n\t\t\t\t\treturn RawContract.ContractType.LOAN;\n\t\t\t\tcase \"auction\":\n\t\t\t\t\treturn RawContract.ContractType.AUCTION;\n\t\t\t\tdefault:\n\t\t\t\t\treturn RawContract.ContractType.UNKNOWN;\n\t\t\t}\n\t\t}\n\t\tif (valueString != null) {\n\t\t\tfor (RawContract.ContractType value : RawContract.ContractType.values()) {\n\t\t\t\tif (value.getValue().equals(valueString)) {\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic static RawContract.ContractType toContractType(CharacterContractsResponse.TypeEnum value) {\n\t\treturn toContractTypeEnum(value);\n\t}\n\n\tpublic static RawContract.ContractType toContractType(CorporationContractsResponse.TypeEnum value) {\n\t\treturn toContractTypeEnum(value);\n\t}\n\n\tprivate static <E extends Enum<E>> RawContract.ContractType toContractTypeEnum(E value) {\n\t\tif (value == null) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\treturn RawContract.ContractType.valueOf(value.name());\n\t\t} catch (IllegalArgumentException ex) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic static RawNpcStanding.FromType toNpcStandingFromType(String valueEnum, String valueString) {\n\t\tif (valueEnum != null) {\n\t\t\ttry {\n\t\t\t\treturn RawNpcStanding.FromType.valueOf(valueEnum);\n\t\t\t} catch (IllegalArgumentException ex) {\n\n\t\t\t}\n\t\t}\n\t\tif (valueString != null) {\n\t\t\tfor (RawNpcStanding.FromType value : RawNpcStanding.FromType.values()) {\n\t\t\t\tif (value.getValue().equals(valueString)) {\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic static RawNpcStanding.FromType toNpcStandingFromType(StandingsResponse.FromTypeEnum value) {\n\t\treturn toNpcStandingFromTypeEnum(value);\n\t}\n\n\tpublic static String toAgentDivision(Integer value) {\n\t\tif (value == null) {\n\t\t\treturn null;\n\t\t}\n\t\tswitch (value) {\n\t\t\tcase 18: return GuiShared.get().agentDivisionResearchAndDevelopment();\n\t\t\tcase 22: return GuiShared.get().agentDivisionDistribution();\n\t\t\tcase 23: return GuiShared.get().agentDivisionMining();\n\t\t\tcase 24: return GuiShared.get().agentDivisionSecurity();\n\t\t\tcase 25: return GuiShared.get().agentDivisionIndustrialistEntrepreneur();\n\t\t\tcase 26: return GuiShared.get().agentDivisionExplorer();\n\t\t\tcase 27: return GuiShared.get().agentDivisionIndustrialistProducer();\n\t\t\tcase 28: return GuiShared.get().agentDivisionEnforcer();\n\t\t\tcase 29: return GuiShared.get().agentDivisionSoldierOfFortune();\n\t\t\tcase 37: return GuiShared.get().agentDivisionInterBus();\n\t\t\tdefault: return null;\n\t\t}\n\t}\n\n\tpublic static String toAgentType(Integer value) {\n\t\tif (value == null) {\n\t\t\treturn null;\n\t\t}\n\t\tswitch (value) {\n\t\t\tcase 1: return GuiShared.get().agentTypeNonAgent();\n\t\t\tcase 2: return GuiShared.get().agentTypeBasicAgent();\n\t\t\tcase 3: return GuiShared.get().agentTypeTutorialAgent();\n\t\t\tcase 4: return GuiShared.get().agentTypeResearchAgent();\n\t\t\tcase 5: return GuiShared.get().agentTypeConcordAgent();\n\t\t\tcase 6: return GuiShared.get().agentTypeGenericStorylineMissionAgent();\n\t\t\tcase 7: return GuiShared.get().agentTypeStorylineMissionAgent();\n\t\t\tcase 8: return GuiShared.get().agentTypeEventMissionAgent();\n\t\t\tcase 9: return GuiShared.get().agentTypeFactionalWarfareAgent();\n\t\t\tcase 10: return GuiShared.get().agentTypeEpicArcAgent();\n\t\t\tcase 11: return GuiShared.get().agentTypeAuraAgent();\n\t\t\tcase 12: return GuiShared.get().agentTypeCareerAgent();\n\t\t\tdefault: return null;\n\t\t}\n\t}\n\n\tprivate static <E extends Enum<E>> RawNpcStanding.FromType toNpcStandingFromTypeEnum(E value) {\n\t\tif (value == null) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\treturn RawNpcStanding.FromType.valueOf(value.name());\n\t\t} catch (IllegalArgumentException ex) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic static RawIndustryJob.IndustryJobStatus toIndustryJobStatus(Integer valueInt, String valueEnum, String valueString) {\n\t\tif (valueEnum != null) {\n\t\t\ttry {\n\t\t\t\treturn RawIndustryJob.IndustryJobStatus.valueOf(valueEnum);\n\t\t\t} catch (IllegalArgumentException ex) {\n\n\t\t\t}\n\t\t}\n\t\tif (valueString != null) {\n\t\t\tfor (RawIndustryJob.IndustryJobStatus value : RawIndustryJob.IndustryJobStatus.values()) {\n\t\t\t\tif (value.getValue().equals(valueString)) {\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (valueInt != null) {\n\t\t\tswitch (valueInt) {\n\t\t\t\tcase 1:\n\t\t\t\t\treturn RawIndustryJob.IndustryJobStatus.ACTIVE;\n\t\t\t\tcase 2:\n\t\t\t\t\treturn RawIndustryJob.IndustryJobStatus.PAUSED;\n\t\t\t\tcase 3:\n\t\t\t\t\treturn RawIndustryJob.IndustryJobStatus.READY;\n\t\t\t\tcase 101:\n\t\t\t\t\treturn RawIndustryJob.IndustryJobStatus.DELIVERED;\n\t\t\t\tcase 102:\n\t\t\t\t\treturn RawIndustryJob.IndustryJobStatus.CANCELLED;\n\t\t\t\tcase 103:\n\t\t\t\t\treturn RawIndustryJob.IndustryJobStatus.REVERTED;\n\t\t\t\tcase -100:\n\t\t\t\t\treturn RawIndustryJob.IndustryJobStatus.ARCHIVED;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic static RawIndustryJob.IndustryJobStatus toIndustryJobStatus(CharacterIndustryJobsResponse.StatusEnum value) {\n\t\treturn toIndustryJobStatusEnum(value);\n\t}\n\n\tpublic static RawIndustryJob.IndustryJobStatus toIndustryJobStatus(CorporationIndustryJobsResponse.StatusEnum value) {\n\t\treturn toIndustryJobStatusEnum(value);\n\t}\n\n\tprivate static <E extends Enum<E>> RawIndustryJob.IndustryJobStatus toIndustryJobStatusEnum(E value) {\n\t\tif (value == null) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\treturn RawIndustryJob.IndustryJobStatus.valueOf(value.name());\n\t\t} catch (IllegalArgumentException ex) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic static RawJournalRefType toJournalRefType(Integer valueInt, String valueString) {\n\t\tCharacterWalletJournalResponse.RefTypeEnum charValue = CharacterWalletJournalResponse.RefTypeEnum.fromValue(valueString);\n\t\tif (charValue != null) {\n\t\t\treturn toJournalRefType(charValue);\n\t\t}\n\t\tCorporationWalletJournalResponse.RefTypeEnum corpValue = CorporationWalletJournalResponse.RefTypeEnum.fromValue(valueString);\n\t\tif (corpValue != null) {\n\t\t\treturn toJournalRefType(corpValue);\n\t\t}\n\t\tif (valueInt != null) {\n\t\t\tcreateJournalRefTypesIDs();\n\t\t\treturn journalRefTypesIDs.get(valueInt);\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic static RawJournalRefType toJournalRefType(CharacterWalletJournalResponse.RefTypeEnum value) {\n\t\tif (value == null) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\treturn RawJournalRefType.valueOf(value.name());\n\t\t} catch (IllegalArgumentException ex) {\n\t\t\tswitch (value) {\n\t\t\t\tcase KILL_RIGHT_FEE:\n\t\t\t\t\treturn RawJournalRefType.KILL_RIGHT;\n\t\t\t\tcase RESOURCE_WARS_REWARD:\n\t\t\t\t\treturn RawJournalRefType.RESOURCE_WARS_SITE_COMPLETION;\n\t\t\t\tcase REACTION:\n\t\t\t\t\treturn RawJournalRefType.REACTIONS;\n\t\t\t\tdefault: return null;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static RawJournalRefType toJournalRefType(CorporationWalletJournalResponse.RefTypeEnum value) {\n\t\tif (value == null) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\treturn RawJournalRefType.valueOf(value.name());\n\t\t} catch (IllegalArgumentException ex) {\n\t\t\tswitch (value) {\n\t\t\t\tcase KILL_RIGHT_FEE:\n\t\t\t\t\treturn RawJournalRefType.KILL_RIGHT;\n\t\t\t\tcase RESOURCE_WARS_REWARD:\n\t\t\t\t\treturn RawJournalRefType.RESOURCE_WARS_SITE_COMPLETION;\n\t\t\t\tcase REACTION:\n\t\t\t\t\treturn RawJournalRefType.REACTIONS;\n\t\t\t\tdefault: return null;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static RawJournal.ContextType toJournalContextType(CharacterWalletJournalResponse.ContextIdTypeEnum value) {\n\t\treturn toJournalContextTypeEnum(value);\n\t}\n\n\tpublic static RawJournal.ContextType toJournalContextType(CorporationWalletJournalResponse.ContextIdTypeEnum value) {\n\t\treturn toJournalContextTypeEnum(value);\n\t}\n\n\tprivate static <E extends Enum<E>> RawJournal.ContextType toJournalContextTypeEnum(E value) {\n\t\tif (value == null) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\treturn RawJournal.ContextType.valueOf(value.name());\n\t\t} catch (IllegalArgumentException ex) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic static RawJournal.ContextType toJournalContextType(String valueEnum, String valueString) {\n\t\tif (valueEnum != null) {\n\t\t\ttry {\n\t\t\t\treturn RawJournal.ContextType.valueOf(valueEnum);\n\t\t\t} catch (IllegalArgumentException ex) {\n\n\t\t\t}\n\t\t}\n\t\tif (valueString != null) {\n\t\t\tfor (RawJournal.ContextType value : RawJournal.ContextType.values()) {\n\t\t\t\tif (value.getValue().equals(valueString)) {\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic static RawJournal.ContextType toJournalContextType(RawJournalRefType refType) {\n\t\tif (refType.getArgName() != null) {\n\t\t\tswitch (refType.getArgName()) {\n\t\t\t\tcase CONTRACT_ID:\n\t\t\t\t\treturn RawJournal.ContextType.CONTRACT_ID;\n\t\t\t\tcase DESTROYED_SHIP_TYPE_ID:\n\t\t\t\t\treturn RawJournal.ContextType.TYPE_ID;\n\t\t\t\tcase JOB_ID:\n\t\t\t\t\treturn RawJournal.ContextType.INDUSTRY_JOB_ID;\n\t\t\t\tcase TRANSACTION_ID:\n\t\t\t\t\treturn RawJournal.ContextType.MARKET_TRANSACTION_ID;\n\t\t\t}\n\t\t}\n\t\tif (refType.getArgID() != null) {\n\t\t\tswitch (refType.getArgID()) {\n\t\t\t\tcase NPC_ID:\n\t\t\t\t\treturn RawJournal.ContextType.TYPE_ID;\n\t\t\t\tcase PLAYER_ID:\n\t\t\t\t\treturn RawJournal.ContextType.CHARACTER_ID;\n\t\t\t\tcase STATION_ID:\n\t\t\t\t\treturn RawJournal.ContextType.STATION_ID;\n\t\t\t\tcase SYSTEM_ID:\n\t\t\t\t\treturn RawJournal.ContextType.SYSTEM_ID;\n\t\t\t\tcase CORPORATION_ID:\n\t\t\t\t\treturn RawJournal.ContextType.CORPORATION_ID;\n\t\t\t\tcase ALLIANCE_ID:\n\t\t\t\t\treturn RawJournal.ContextType.ALLIANCE_ID;\n\t\t\t\tcase PLANET_ID:\n\t\t\t\t\treturn RawJournal.ContextType.PLANET_ID;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic static Long toJournalContextID(Long argID, String argName, RawJournalRefType refType) {\n\t\tif (refType.getArgName() != null) {\n\t\t\tswitch (refType.getArgName()) {\n\t\t\t\tcase CONTRACT_ID:\n\t\t\t\t\treturn RawConverter.toLong(argName);\n\t\t\t\tcase DESTROYED_SHIP_TYPE_ID:\n\t\t\t\t\treturn RawConverter.toLong(argName);\n\t\t\t\tcase JOB_ID:\n\t\t\t\t\treturn RawConverter.toLong(argName);\n\t\t\t\tcase TRANSACTION_ID:\n\t\t\t\t\treturn RawConverter.toLong(argName);\n\t\t\t}\n\t\t}\n\t\treturn argID;\n\t}\n\n\tpublic static int toMarketOrderRegionID(long locationID, int typeID, Integer regionID) {\n\t\tif (regionID != null) {\n\t\t\treturn regionID;\n\t\t} else if (typeID == 44992) { //PLEX\n\t\t\treturn 19000001; //Global PLEX Market Region\n\t\t} else {\n\t\t\treturn (int) ApiIdConverter.getLocation(locationID).getRegionID();\n\t\t}\n\t}\n\n\tpublic static RawMarketOrder.MarketOrderRange toMarketOrderRange(Integer valueInt, String valueEnum, String valueString) {\n\t\tif (valueEnum != null) {\n\t\t\ttry {\n\t\t\t\treturn RawMarketOrder.MarketOrderRange.valueOf(valueEnum);\n\t\t\t} catch (IllegalArgumentException ex) {\n\n\t\t\t}\n\t\t}\n\t\tif (valueString != null) {\n\t\t\tfor (RawMarketOrder.MarketOrderRange value : RawMarketOrder.MarketOrderRange.values()) {\n\t\t\t\tif (value.getValue().equals(valueString)) {\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (valueInt != null) {\n\t\t\tswitch (valueInt) {\n\t\t\t\tcase -1:\n\t\t\t\t\treturn RawMarketOrder.MarketOrderRange.STATION;\n\t\t\t\tcase 0:\n\t\t\t\t\treturn RawMarketOrder.MarketOrderRange.SOLARSYSTEM;\n\t\t\t\tcase 1:\n\t\t\t\t\treturn RawMarketOrder.MarketOrderRange._1;\n\t\t\t\tcase 2:\n\t\t\t\t\treturn RawMarketOrder.MarketOrderRange._2;\n\t\t\t\tcase 3:\n\t\t\t\t\treturn RawMarketOrder.MarketOrderRange._3;\n\t\t\t\tcase 4:\n\t\t\t\t\treturn RawMarketOrder.MarketOrderRange._4;\n\t\t\t\tcase 5:\n\t\t\t\t\treturn RawMarketOrder.MarketOrderRange._5;\n\t\t\t\tcase 10:\n\t\t\t\t\treturn RawMarketOrder.MarketOrderRange._10;\n\t\t\t\tcase 20:\n\t\t\t\t\treturn RawMarketOrder.MarketOrderRange._20;\n\t\t\t\tcase 30:\n\t\t\t\t\treturn RawMarketOrder.MarketOrderRange._30;\n\t\t\t\tcase 40:\n\t\t\t\t\treturn RawMarketOrder.MarketOrderRange._40;\n\t\t\t\tcase 32767:\n\t\t\t\t\treturn RawMarketOrder.MarketOrderRange.REGION;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new RuntimeException(\"Can't convert: \" + valueInt + \" to MarketOrderRange\");\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic static RawMarketOrder.MarketOrderRange toMarketOrderRange(CharacterOrdersResponse.RangeEnum value) {\n\t\treturn toMarketOrderRangeEnum(value);\n\t}\n\n\tpublic static RawMarketOrder.MarketOrderRange toMarketOrderRange(CharacterOrdersHistoryResponse.RangeEnum value) {\n\t\treturn toMarketOrderRangeEnum(value);\n\t}\n\n\tpublic static RawMarketOrder.MarketOrderRange toMarketOrderRange(CorporationOrdersResponse.RangeEnum value) {\n\t\treturn toMarketOrderRangeEnum(value);\n\t}\n\n\tpublic static RawMarketOrder.MarketOrderRange toMarketOrderRange(CorporationOrdersHistoryResponse.RangeEnum value) {\n\t\treturn toMarketOrderRangeEnum(value);\n\t}\n\n\tpublic static RawMarketOrder.MarketOrderRange toMarketOrderRange(MarketRegionOrdersResponse.RangeEnum value) {\n\t\treturn toMarketOrderRangeEnum(value);\n\t}\n\n\tpublic static RawMarketOrder.MarketOrderRange toMarketOrderRange(MarketStructureResponse.RangeEnum value) {\n\t\treturn toMarketOrderRangeEnum(value);\n\t}\n\n\tprivate static <E extends Enum<E>> RawMarketOrder.MarketOrderRange toMarketOrderRangeEnum(E value) {\n\t\tif (value == null) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\treturn RawMarketOrder.MarketOrderRange.valueOf(value.name());\n\t\t} catch (IllegalArgumentException ex) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic static RawMarketOrder.MarketOrderState toMarketOrderState(Integer valueInt, String valueEnum, String valueString) {\n\t\tif (valueEnum != null) {\n\t\t\ttry {\n\t\t\t\treturn RawMarketOrder.MarketOrderState.valueOf(valueEnum);\n\t\t\t} catch (IllegalArgumentException ex) {\n\n\t\t\t}\n\t\t}\n\t\tif (valueString != null) {\n\t\t\tfor (RawMarketOrder.MarketOrderState value : RawMarketOrder.MarketOrderState.values()) {\n\t\t\t\tif (value.getValue().equals(valueString)) {\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (valueInt != null) {\n\t\t\tswitch (valueInt) {\n\t\t\t\tcase 0:\n\t\t\t\t\treturn RawMarketOrder.MarketOrderState.OPEN;\n\t\t\t\tcase 1:\n\t\t\t\t\treturn RawMarketOrder.MarketOrderState.CLOSED;\n\t\t\t\tcase 2:\n\t\t\t\t\treturn RawMarketOrder.MarketOrderState.EXPIRED;\n\t\t\t\tcase 3:\n\t\t\t\t\treturn RawMarketOrder.MarketOrderState.CANCELLED;\n\t\t\t\tcase 4:\n\t\t\t\t\treturn RawMarketOrder.MarketOrderState.PENDING;\n\t\t\t\tcase 5:\n\t\t\t\t\treturn RawMarketOrder.MarketOrderState.CHARACTER_DELETED;\n\t\t\t\tcase -100:\n\t\t\t\t\treturn RawMarketOrder.MarketOrderState.UNKNOWN;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new RuntimeException(\"Can't convert: \" + valueInt + \" to MarketOrderState\");\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic static RawMarketOrder.MarketOrderState toMarketOrderState(CharacterOrdersHistoryResponse.StateEnum value) {\n\t\treturn toMarketOrderStateEnum(value);\n\t}\n\n\tpublic static RawMarketOrder.MarketOrderState toMarketOrderState(CorporationOrdersHistoryResponse.StateEnum value) {\n\t\treturn toMarketOrderStateEnum(value);\n\t}\n\n\tprivate static <E extends Enum<E>> RawMarketOrder.MarketOrderState toMarketOrderStateEnum(E value) {\n\t\tif (value == null) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\treturn RawMarketOrder.MarketOrderState.valueOf(value.name());\n\t\t} catch (IllegalArgumentException ex) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic static int fromMarketOrderIsBuyOrder(Boolean value) {\n\t\treturn value ? 1 : 0;\n\t}\n\n\tpublic static Boolean toTransactionIsBuy(String value) {\n\t\treturn value.toLowerCase().equals(\"buy\");\n\t}\n\n\tpublic static Boolean toTransactionIsPersonal(String value) {\n\t\treturn value.toLowerCase().equals(\"personal\");\n\t}\n\n\tpublic static String fromTransactionIsBuy(Boolean value) {\n\t\tif (value) {\n\t\t\treturn \"buy\";\n\t\t} else {\n\t\t\treturn \"sell\";\n\t\t}\n\t}\n\n\tpublic static String fromTransactionIsPersonal(Boolean value) {\n\t\tif (value) {\n\t\t\treturn \"personal\";\n\t\t} else {\n\t\t\treturn \"corporate\";\n\t\t}\n\t}\n\n\tpublic static int toAssetQuantity(int quantity, Integer rawQuantity) {\n\t\tif (rawQuantity != null && rawQuantity < 0) {\n\t\t\treturn rawQuantity;\n\t\t} else {\n\t\t\treturn quantity;\n\t\t}\n\t}\n\n\tpublic enum LocationFlag {\n\t\tAUTOFIT(\"AutoFit\", 0),\n\t\tHANGARALL(\"HangarAll\", 0), //1000\n\t\tWALLET(\"Wallet\", 1),\n\t\tOFFICEFOLDER(\"OfficeFolder\", 2),\n\t\tWARDROBE(\"Wardrobe\", 3),\n\t\tHANGAR(\"Hangar\", 4),\n\t\tCARGO(\"Cargo\", 5),\n\t\tIMPOUNDED(\"OfficeImpound\", 6), //Impounded\n\t\tMODULE(\"Skill\", 7), //Module\n\t\tSKILL(\"Skill\", 7),\n\t\tREWARD(\"Reward\", 8),\n\t\tLOSLOT0(\"LoSlot0\", 11),\n\t\tLOSLOT1(\"LoSlot1\", 12),\n\t\tLOSLOT2(\"LoSlot2\", 13),\n\t\tLOSLOT3(\"LoSlot3\", 14),\n\t\tLOSLOT4(\"LoSlot4\", 15),\n\t\tLOSLOT5(\"LoSlot5\", 16),\n\t\tLOSLOT6(\"LoSlot6\", 17),\n\t\tLOSLOT7(\"LoSlot7\", 18),\n\t\tMEDSLOT0(\"MedSlot0\", 19),\n\t\tMEDSLOT1(\"MedSlot1\", 20),\n\t\tMEDSLOT2(\"MedSlot2\", 21),\n\t\tMEDSLOT3(\"MedSlot3\", 22),\n\t\tMEDSLOT4(\"MedSlot4\", 23),\n\t\tMEDSLOT5(\"MedSlot5\", 24),\n\t\tMEDSLOT6(\"MedSlot6\", 25),\n\t\tMEDSLOT7(\"MedSlot7\", 26),\n\t\tHISLOT0(\"HiSlot0\", 27),\n\t\tHISLOT1(\"HiSlot1\", 28),\n\t\tHISLOT2(\"HiSlot2\", 29),\n\t\tHISLOT3(\"HiSlot3\", 30),\n\t\tHISLOT4(\"HiSlot4\", 31),\n\t\tHISLOT5(\"HiSlot5\", 32),\n\t\tHISLOT6(\"HiSlot6\", 33),\n\t\tHISLOT7(\"HiSlot7\", 34),\n\t\tASSETSAFETY(\"AssetSafety\", 36),\n\t\tCAPSULE(\"Capsule\", 56),\n\t\tPILOT(\"Pilot\", 57),\n\t\tSKILLINTRAINING(\"SkillInTraining\", 61),\n\t\tCORPDELIVERIES(\"CorpMarket\", 62), //CorpDeliveries\n\t\tLOCKED(\"Locked\", 63),\n\t\tUNLOCKED(\"Unlocked\", 64),\n\t\tBONUS(\"Bonus\", 86),\n\t\tDRONEBAY(\"DroneBay\", 87),\n\t\tBOOSTER(\"Booster\", 88),\n\t\tIMPLANT(\"Implant\", 89),\n\t\tSHIPHANGAR(\"ShipHangar\", 90),\n\t\tSHIPOFFLINE(\"ShipOffline\", 91),\n\t\tRIGSLOT0(\"RigSlot0\", 92),\n\t\tRIGSLOT1(\"RigSlot1\", 93),\n\t\tRIGSLOT2(\"RigSlot2\", 94),\n\t\tRIGSLOT3(\"RigSlot3\", 95),\n\t\tRIGSLOT4(\"RigSlot4\", 96),\n\t\tRIGSLOT5(\"RigSlot5\", 97),\n\t\tRIGSLOT6(\"RigSlot6\", 98),\n\t\tRIGSLOT7(\"RigSlot7\", 99),\n\t\tCORPSAG1(\"CorpSAG1\", 115),\n\t\tCORPSAG2(\"CorpSAG2\", 116),\n\t\tCORPSAG3(\"CorpSAG3\", 117),\n\t\tCORPSAG4(\"CorpSAG4\", 118),\n\t\tCORPSAG5(\"CorpSAG5\", 119),\n\t\tCORPSAG6(\"CorpSAG6\", 120),\n\t\tCORPSAG7(\"CorpSAG7\", 121),\n\t\tSECONDARYSTORAGE(\"SecondaryStorage\", 122),\n\t\tSUBSYSTEMSLOT0(\"SubSystemSlot0\", 125),\n\t\tSUBSYSTEMSLOT1(\"SubSystemSlot1\", 126),\n\t\tSUBSYSTEMSLOT2(\"SubSystemSlot2\", 127),\n\t\tSUBSYSTEMSLOT3(\"SubSystemSlot3\", 128),\n\t\tSUBSYSTEMSLOT4(\"SubSystemSlot4\", 129),\n\t\tSUBSYSTEMSLOT5(\"SubSystemSlot5\", 130),\n\t\tSUBSYSTEMSLOT6(\"SubSystemSlot6\", 131),\n\t\tSUBSYSTEMSLOT7(\"SubSystemSlot7\", 132),\n\t\tSPECIALIZEDFUELBAY(\"SpecializedFuelBay\", 133),\n\t\tSPECIALIZEDOREHOLD(\"SpecializedAsteroidHold\", 134),\n\t\tSPECIALIZEDGASHOLD(\"SpecializedGasHold\", 135),\n\t\tSPECIALIZEDMINERALHOLD(\"SpecializedMineralHold\", 136),\n\t\tSPECIALIZEDSALVAGEHOLD(\"SpecializedSalvageHold\", 137),\n\t\tSPECIALIZEDSHIPHOLD(\"SpecializedShipHold\", 138),\n\t\tSPECIALIZEDSMALLSHIPHOLD(\"SpecializedSmallShipHold\", 139),\n\t\tSPECIALIZEDMEDIUMSHIPHOLD(\"SpecializedMediumShipHold\", 140),\n\t\tSPECIALIZEDLARGESHIPHOLD(\"SpecializedLargeShipHold\", 141),\n\t\tSPECIALIZEDINDUSTRIALSHIPHOLD(\"SpecializedIndustrialShipHold\", 142),\n\t\tSPECIALIZEDAMMOHOLD(\"SpecializedAmmoHold\", 143),\n\t\tSTRUCTUREACTIVE(\"StructureActive\", 144),\n\t\tSTRUCTUREINACTIVE(\"StructureInactive\", 145),\n\t\tJUNKYARDREPROCESSED(\"JunkyardReprocessed\", 146),\n\t\tJUNKYARDTRASHED(\"JunkyardTrashed\", 147),\n\t\tSPECIALIZEDCOMMANDCENTERHOLD(\"SpecializedCommandCenterHold\", 148),\n\t\tSPECIALIZEDPLANETARYCOMMODITIESHOLD(\"SpecializedPlanetaryCommoditiesHold\", 149),\n\t\tPLANETSURFACE(\"PlanetSurface\", 150),\n\t\tSPECIALIZEDMATERIALBAY(\"SpecializedMaterialBay\", 151),\n\t\tDUSTDATABANK(\"DustCharacterDatabank\", 152), //DustDatabank\n\t\tDUSTBATTLE(\"DustCharacterBattle\", 153), //DustBattle\n\t\tQUAFEBAY(\"QuafeBay\", 154),\n\t\tFLEETHANGAR(\"FleetHangar\", 155),\n\t\tHIDDENMODIFIERS(\"HiddenModifiers\", 156),\n\t\tSTRUCTUREOFFLINE(\"StructureOffline\", 157),\n\t\tFIGHTERBAY(\"FighterBay\", 158),\n\t\tFIGHTERTUBE0(\"FighterTube0\", 159),\n\t\tFIGHTERTUBE1(\"FighterTube1\", 160),\n\t\tFIGHTERTUBE2(\"FighterTube2\", 161),\n\t\tFIGHTERTUBE3(\"FighterTube3\", 162),\n\t\tFIGHTERTUBE4(\"FighterTube4\", 163),\n\t\tSERVICESLOT0(\"StructureServiceSlot0\", 164), //ServiceSlot0\n\t\tSERVICESLOT1(\"StructureServiceSlot1\", 165), //ServiceSlot1\n\t\tSERVICESLOT2(\"StructureServiceSlot2\", 166), //ServiceSlot2\n\t\tSERVICESLOT3(\"StructureServiceSlot3\", 167), //ServiceSlot3\n\t\tSERVICESLOT4(\"StructureServiceSlot4\", 168), //ServiceSlot4\n\t\tSERVICESLOT5(\"StructureServiceSlot5\", 169), //ServiceSlot5\n\t\tSERVICESLOT6(\"StructureServiceSlot6\", 170), //ServiceSlot6\n\t\tSERVICESLOT7(\"StructureServiceSlot7\", 171), //ServiceSlot7\n\t\tSTRUCTUREFUEL(\"StructureFuel\", 172),\n\t\tDELIVERIES(\"Deliveries\", 173),\n\t\tCRATELOOT(\"CrateLoot\", 174),\n\t\tCORPSEBAY(\"CrateLoot\", 174), //CorpseBay 175?\n\t\tBOOSTERBAY(\"BoosterBay\", 176),\n\t\tSUBSYSTEMBAY(\"SubSystemBay\", 177),\n\t\tFRIGATEESCAPEBAY(\"FrigateEscapeBay\", 179),\n\t\tQUANTUMCOREROOM(\"StructureDeedBay\", 180), //QuantumCoreRoom\n\t\tSTRUCTUREDEEDBAY(\"StructureDeedBay\", 180), //QuantumCoreRoom\n\t\tSPECIALIZEDICEHOLD(\"SpecializedIceHold\", 181),\n\t\tSPECIALIZEDASTEROIDHOLD(\"SpecializedAsteroidHold\", 182),\n\t\tMOBILEDEPOTHOLD(\"MobileDepot\", 183),\n\t\tCORPORATIONGOALDELIVERIES(\"CorpProjectsHangar\", 184),\n\t\tINFRASTRUCTUREHANGAR(\"ColonyResourcesHold\", 185),\n\t\tMOONMATERIALBAY(\"MoonMaterialBay\", 186),\n\t\tCAPSULEERDELIVERIES(\"CapsuleerDeliveries\", 187),\n\t\t;\n\n\t\tprivate final String value;\n\t\tprivate final int id;\n\n\t\tLocationFlag(String value, int id) {\n\t\t\tthis.value = value;\n\t\t\tthis.id = id;\n\t\t}\n\n\t\tpublic String getValue() {\n\t\t\treturn value;\n\t\t}\n\n\t\tpublic int getID() {\n\t\t\treturn id;\n\t\t}\n\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\treturn String.valueOf(value);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/shared/SafeConverter.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.shared;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\n\r\npublic class SafeConverter {\r\n\r\n\tpublic static Long toLong(Integer value) {\r\n\t\tif (value != null) {\r\n\t\t\treturn value.longValue();\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static Integer toInteger(Long value) {\r\n\t\tif (value != null) {\r\n\t\t\treturn Math.toIntExact(value);\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tpublic static List<Integer> toInteger(List<Long> values) {\r\n\t\tif (values != null) {\r\n\t\t\tList<Integer> output = new ArrayList<>();\r\n\t\t\tfor (long value : values) {\r\n\t\t\t\toutput.add(toInteger(value));\r\n\t\t\t}\r\n\t\t\treturn output;\r\n\t\t}\r\n\t\treturn new ArrayList<>();\r\n\t}\r\n\r\n\tpublic static Float toFloat(Number value) {\r\n\t\tif (value != null) {\r\n\t\t\treturn value.floatValue();\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/java/net/nikr/eve/jeveasset/io/shared/ThreadWoker.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.shared;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\nimport java.util.List;\r\nimport java.util.concurrent.Callable;\r\nimport java.util.concurrent.ExecutionException;\r\nimport java.util.concurrent.ExecutorService;\r\nimport java.util.concurrent.Executors;\r\nimport java.util.concurrent.Future;\r\nimport java.util.concurrent.TimeUnit;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.update.UpdateTask;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\n\r\npublic class ThreadWoker {\r\n\r\n\tpublic static final int MAIN_THREADS = 100;\r\n\tprivate static final int SUB_THREADS = 100;\r\n\tprivate static final ExecutorService RETURN_THREAD_POOL = Executors.newFixedThreadPool(SUB_THREADS);\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(ThreadWoker.class);\r\n\r\n\tpublic static void start(UpdateTask updateTask, Collection<? extends Runnable> updaters) {\r\n\t\tstart(updateTask, updaters, true);\r\n\t}\r\n\r\n\tpublic static void start(UpdateTask updateTask, Collection<? extends Runnable> updaters, int start, int end) {\r\n\t\tstart(updateTask, updaters, true, start, end);\r\n\t}\r\n\r\n\tpublic static void start(UpdateTask updateTask, Collection<? extends Runnable> updaters, boolean updateProgress) {\r\n\t\tstart(updateTask, updaters, updateProgress, 0, 100);\r\n\t}\r\n\r\n\tpublic static void start(UpdateTask updateTask, Collection<? extends Runnable> updaters, boolean updateProgress, int start, int end) {\r\n\t\tExecutorService threadPool = Executors.newFixedThreadPool(MAIN_THREADS);\r\n\t\ttry {\r\n\t\t\tLOG.info(\"Starting \" + updaters.size() + \" main threads\");\r\n\t\t\tList<Future<?>> futures = new ArrayList<>();\r\n\t\t\tfor (Runnable runnable : updaters) {\r\n\t\t\t\tfutures.add(threadPool.submit(runnable));\r\n\t\t\t}\r\n\t\t\tthreadPool.shutdown();\r\n\t\t\twhile (!threadPool.awaitTermination(500, TimeUnit.MICROSECONDS)) {\r\n\t\t\t\tif (updateTask != null) {\r\n\t\t\t\t\tif (updateTask.isCancelled()) {\r\n\t\t\t\t\t\tthreadPool.shutdownNow();\r\n\t\t\t\t\t} else if (updateProgress) {\r\n\t\t\t\t\t\tint progress = 0;\r\n\t\t\t\t\t\tfor (Future<?> future : futures) {\r\n\t\t\t\t\t\t\tif (future.isDone()) {\r\n\t\t\t\t\t\t\t\tprogress++;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tupdateTask.setTaskProgress(updaters.size(), progress, start, end);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Get errors (if any)\r\n\t\t\tfor (Future<?> future : futures) {\r\n\t\t\t\tfuture.get();\r\n\t\t\t}\r\n\t\t} catch (InterruptedException ex) {\r\n\t\t\t//No problem\r\n\t\t} catch (ExecutionException ex) {\r\n\t\t\tthrowExecutionException(ex);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static <K> List<Future<K>> startReturn(UpdateTask updateTask, Collection<? extends Callable<K>> updaters) throws InterruptedException {\r\n\t\treturn startReturn(updateTask, updaters, false);\r\n\t}\r\n\r\n\tpublic static <K> List<Future<K>> startReturn(UpdateTask updateTask, Collection<? extends Callable<K>> updaters, boolean updateProgress) throws InterruptedException {\r\n\t\treturn startReturn(updateTask, updaters, updateProgress, 0, 100);\r\n\t}\r\n\r\n\tpublic static <K> List<Future<K>> startReturn(UpdateTask updateTask, Collection<? extends Callable<K>> updaters, boolean updateProgress, int start, int end) throws InterruptedException {\r\n\t\tif (updateTask != null && updateTask.isCancelled()) {\r\n\t\t\tthrow new TaskCancelledException();\r\n\t\t}\r\n\t\tLOG.info(\"Starting \" + updaters.size() + \" sub threads\");\r\n\t\tList<Future<K>> futures = new ArrayList<>();\r\n\t\tfor (Callable<K> callable : updaters) {\r\n\t\t\tfutures.add(RETURN_THREAD_POOL.submit(callable));\r\n\t\t}\r\n\t\tint done = 0;\r\n\t\twhile (done < futures.size()) {\r\n\t\t\tdone = 0;\r\n\t\t\tfor (Future<?> future : futures) {\r\n\t\t\t\tif (future.isDone()) {\r\n\t\t\t\t\tdone++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (updateTask != null) {\r\n\t\t\t\tif (updateTask.isCancelled()) { //If task is cancelled\r\n\t\t\t\t\tfor (Future<?> future : futures) { //cancel all threads\r\n\t\t\t\t\t\tfuture.cancel(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthrow new TaskCancelledException(); //Stop parent Task\r\n\t\t\t\t} else if (updateProgress) {\r\n\t\t\t\t\tupdateTask.setTaskProgress(updaters.size(), done, start, end);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tThread.sleep(500);\r\n\t\t}\r\n\t\treturn futures;\r\n\t}\r\n\r\n\tpublic static <K> K startReturn(UpdateTask updateTask, Callable<K> updater) {\r\n\t\treturn startReturn(RETURN_THREAD_POOL, updateTask, updater);\r\n\t}\r\n\r\n\tpublic static <K> K startReturn(ExecutorService executorService, UpdateTask updateTask, Callable<K> updater) {\r\n\t\tif (updateTask != null && updateTask.isCancelled()) {\r\n\t\t\tthrow new TaskCancelledException();\r\n\t\t}\r\n\t\tLOG.info(\"Starting sub thread\");\r\n\t\tFuture<K> future = executorService.submit(updater);\r\n\t\ttry {\r\n\t\t\treturn future.get();\r\n\t\t} catch (InterruptedException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t} catch (ExecutionException ex) {\r\n\t\t\tLOG.error(ex.getMessage(), ex);\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tpublic static class TaskCancelledException extends RuntimeException {\r\n\r\n\t}\r\n\r\n\tprivate static <E extends Exception> void throwExecutionException(ExecutionException ex) throws E {\r\n\t\tthrowExecutionException(null, ex);\r\n\t}\r\n\r\n\tpublic static <E extends Exception> void throwExecutionException(Class<E> clazz, ExecutionException ex) throws E {\r\n\t\tThrowable cause = ex.getCause();\r\n\t\tif (clazz != null && cause.getClass().equals(clazz) ) {\r\n\t\t\tthrow clazz.cast(cause);\r\n\t\t} else if (cause instanceof Error) {\r\n\t\t\tthrow (Error) cause;\r\n\t\t} else if (cause instanceof RuntimeException) {\r\n\t\t\tthrow (RuntimeException) cause;\r\n\t\t} else {\r\n\t\t\tthrow new RuntimeException(cause);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/main/resources/logback.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<configuration>\n\n\t<property name=\"PATTERN\" value=\"%level: %d [%thread] %logger - %msg%n\" />\n\n\t<contextListener class=\"ch.qos.logback.classic.jul.LevelChangePropagator\"/>\n\n\t<appender name=\"STDOUT\" class=\"ch.qos.logback.core.ConsoleAppender\">\n\t\t<encoder>\n\t\t\t<pattern>${PATTERN}</pattern>\n\t\t</encoder>\n\t</appender>\n\n\t<appender name=\"FILE\" class=\"ch.qos.logback.core.rolling.RollingFileAppender\">\n\t\t<file>${log.home}jeveassets.log</file>\n\t\t<rollingPolicy class=\"ch.qos.logback.core.rolling.FixedWindowRollingPolicy\">\n\t\t\t<fileNamePattern>${log.home}jeveassets%i.log</fileNamePattern>\n\t\t\t<minIndex>1</minIndex>\n\t\t\t<maxIndex>1</maxIndex>\n\t\t</rollingPolicy>\n\t\t<triggeringPolicy class=\"ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy\">\n\t\t\t<maxFileSize>5MB</maxFileSize>\n\t\t</triggeringPolicy>\n\t\t<encoder>\n\t\t\t<pattern>${PATTERN}</pattern>\n\t\t</encoder>\n\t</appender>\n\n\t<logger name=\"java\" level=\"info\" />\n\t<logger name=\"sun\" level=\"info\" />\n\n\t<root level=\"${log.level}\">\n\t\t<appender-ref ref=\"STDOUT\" />\n\t\t<appender-ref ref=\"FILE\" />\n\t</root>\n\n</configuration>"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/DataColors.properties",
    "content": "#Assets\nassetsNew=New\nassetsReprocessingEqual=Reprocessing Colors: reprocess = sell\nassetsReprocessingReproces=Reprocessing Colors: reprocess > sell\nassetsReprocessingSell=Reprocessing Colors: sell > reprocess\nassetsReprocess=Reprocess > sell\n#Custom\ncustomPrice=Custom Price\ncustomAssetName=Custom Asset Name\ncustomUserLocation=Custom Location\n#Contracts\ncontractsCourier=Courier contracts\ncontractsIncluded=Buy (included)\ncontractsExcluded=Sell (excluded)\n#Extractions\nextractionsDays=2 Days or decaying\nextractionsWeek=1 Week\nextractionsWeeks=More than 1 week\n#Overview\noverviewGroupedLocations=Grouped Locations\n#Stockpile\nstockpileTableBelowThreshold=Below Threshold: Table\nstockpileIconBelowThreshold=Below Threshold: Icon\nstockpileTableBelowThreshold2nd=Below 2nd Threshold: Table\nstockpileIconBelowThreshold2nd=Below 2nd Threshold: Icon\nstockpileTableOverThreshold=Over Threshold: Table\nstockpileIconOverThreshold=Over Threshold: Icon\n#Market Orders\nmarketOrdersOutbidNotBest=Outbid: Not Best\nmarketOrdersOutbidNotBestOwned=Outbid: Not Best (Best Owned)\nmarketOrdersOutbidBest=Outbid: Best\nmarketOrdersOutbidUnknown=Outbid: Unknown\nmarketOrdersExpired=Expired\nmarketOrdersNearExpired=Nearing Expiration\nmarketOrdersNearFilled=Nearing Filled\nmarketOrdersNew=New\n#Industry Jobs\nindustryJobsDelivered=Industry Job Delivered\nindustryJobsDone=Industry Job Done\nindustryJobsManufacturing=Manufacturing\nindustryJobsResearchingTechnology=Researching Technology\nindustryJobsResearchingTimeProductivity=Researching Time Productivity\nindustryJobsResearchingMeterialProductivity=Researching Material Productivity\nindustryJobsCopying=Copying\nindustryJobsDuplicating=Duplicating\nindustryJobsReverseEngineering=Reverse Engineering\nindustryJobsReverseInvention=Invention\nindustryJobsReactions=Reactions\n#Slots\nslotsFree=Slots Free\nslotsDone=Slots Done\nslotsFull=Slots Full\n#Journal\njournalNew=New\n#Transactions\ntransactionsBought=Bought\ntransactionsSold=Sold\ntransactionsNew=New\n#NPC Standing\nnpcStandingNegative=Negative\nnpcStandingPositive=Positive\nnpcStandingNegativeMiddle=Negative Middle\nnpcStandingPositiveMiddle=Positive Middle\n#Global\nglobalBPC=Blueprint Copy (BPC)\nglobalBPO=Blueprint Original (BPO)\nglobalValueNegative=Negative Values\nglobalValuePositive=Positive Values\nglobalEntryInvalid=Entry Invalid\nglobalEntryWarning=Entry Warning\nglobalEntryValid=Entry Valid\nglobalGrandTotal=Grand total\nglobalSelectedRowHighlighting=Selected row highlighting\n#Filters\nfilterOrGroup1=Filter Group 1\nfilterOrGroup2=Filter Group 2\nfilterOrGroup3=Filter Group 3\nfilterOrGroup4=Filter Group 4\nfilterOrGroup5=Filter Group 5\nfilterOrGroup6=Filter Group 6\nfilterOrGroup7=Filter Group 7\n#Reprocessed\nreprocessedSell=sell > processed \nreprocessedReprocess=processed > sell\nreprocessedEqual=\"processed = sell\n#Groups\ngroupAssets=Assets\ngroupCustom=Custom\ngroupContracts=Contracts\ngroupExtractions=Extractions\ngroupOverview=Overview\ngroupMarketOrders=Market Orders\ngroupIndustryJobs=Industry Jobs\ngroupSlots=Slots\ngroupJournal=Journal\ngroupTransactions=Transactions\ngroupNpcStanding=NPC Standing\ngroupGlobal=Global\ngroupFilters=Filters\ngroupReprocessed=Reprocessed\ngroupStockpile=Stockpile\n#Color Theme\ncolorThemeDark=Dark\ncolorThemeDefault=jEveAssets Default\ncolorThemeStrong=Strong Colors\ncolorThemeColorblind=Colorblind Friendly"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/DataModelAsset.properties",
    "content": "unpackaged=Unpackaged\npackaged=Packaged"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/DataModelIndustryJob.properties",
    "content": "statusPaused=Paused\nstatusActive=Active\nstatusDone=Done\nstatusReverted=Reverted\nstatusCancelled=Cancelled\nstatusDelivered=Delivered\nstatusArchived=Archived\nstatusUnknown=Unknown\nactivityAll=All\nactivityNone=None\nactivityManufacturing=Manufacturing\nactivityResearchingTechnology=Researching Technology\nactivityResearchingTimeProductivity=Researching Time Productivity\nactivityResearchingMeterialProductivity=Researching Material Productivity\nactivityCopying=Copying\nactivityDuplicating=Duplicating\nactivityReverseEngineering=Reverse Engineering\nactivityReverseInvention=Invention\nactivityReactions=Reactions\nactivityUnknown=Unknown\n\ndescriptionCopying=Copying: {0} making {1} copies with {2} runs each."
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/DataModelPriceDataSettings.properties",
    "content": "sourceFuzzwork=fuzzwork.co.uk\nsourceEveTycoon=EveTycoon.com\nsourceJanice=Janice\n\npriceSellMax=Sell Maximum\npriceSellAvg=Sell Average\npriceSellMedian=Sell Median\npriceSellPercentile=Sell Lowest 5% / Sell Percentile\npriceSellMin=Sell Minimum\npriceMidpoint=Midpoint\npriceBuyMax=Buy Maximum\npriceBuyAvg=Buy Average\npriceBuyMedian=Buy Median\npriceBuyPercentile=Buy Highest 5% / Buy Percentile\npriceBuyMin=Buy Minimum\n"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/DialoguesAbout.properties",
    "content": "about=About\nclose=Close"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/DialoguesAccount.properties",
    "content": "dialogueNameAccountImport=Account Import\ndialogueNameAccountExport=Account Export\npreviousArrow=< Previous\nnextArrow=Next >\ncancel=Cancel\nok=OK\nfailApiError=The API returned the following error\nfailApiErrorText={0}<br />\\\nPlease see the <a href=\"https://wiki.jeveassets.org/faq#api_key_troubleshooting\">FAQ</a> for help<br />\nfailNotEnoughPrivileges=Not enough privileges\nfailNotEnoughPrivilegesText=The account does not grant the needed privileges.<br />\\\n<br />\\\n<br />\\\n<br />\\\nPress Previous to retry.\nfailNotValid=Account not valid\nfailNotValidText=The entered credentials was not valid.<br />\\\n<br />\\\n<br />\\\n<br />\\\nPress Previous to retry.\nfailWrongEntry=Character/Corporation did not match\nfailWrongEntryText=Did not find character/corporation from the edited account.<br />\\\nThe entered credentials is for a different character/corporation.<br />\\\nPlease use a matching account or add a new account instead.<br />\\\n<br />\\\nPress Previous to retry.\nokUpdate=Account already imported\nokUpdateLimitedText=Update existing account?<br />\\\nThe account only grant some of the needed privileges.<br />\\\nWarning: The updated account will have limited functionality<br />\\\n<br />\\\nPress Previous to retry. Press OK to update account.\nokUpdateText=Update existing account?<br />\\\n<br />\\\n<br />\\\n<br />\\\nPress OK to update account.\nokLimited=Valid account (limited)\nokLimitedText=The account only grant some of the needed privileges.<br />\\\nWarning: The account will have limited functionality<br />\\\n<br />\\\n<br />\\\nPress Previous to retry. Press OK to import.\nokLimitedExportText=The account only grant some of the needed privileges.<br />\\\nWarning: The exported account will have limited functionality<br />\\\n<br />\\\n<br />\\\nPress Previous to retry. Press Next to complete the export.\nokValid=Account valid\nokValidText=Tip: To get the new account data select: Menu > Update > Update<br />\\\n<br />\\\n<br />\\\n<br />\\\nPress OK to import.\nauthCode=Authorization Code\nauthorize=Authorize\naccountType=Account\naccessKey=Access Key ID\nesiHelpText=Help:\\r\\n\\\n1. Select character or corporation account\\r\\n\\\n2. Select scopes\\r\\n\\\n3. Press next to continue\nauthCodeHelpText=Help:\\r\\n\\\n1. The Eve SSO web page should open in your browser\\r\\n\\\n2. Select your character by clicking on their portrait\\r\\n\\\n3. Click Authorize on the web page\\r\\n\\\n4. Copy the auth code into the field bellow\\r\\n\\\n5. Press next to continue\n\nbrowseHelpText=Help:\\r\\n\\\n1. The Eve SSO web page should open in your browser\\r\\n\\\n2. Select your character by clicking on their portrait\\r\\n\\\n3. Click Authorize on the web page\\r\\n\\\n4. Return to jEveAssets and wait for the import process to finish\nvalidatingMessage=Validating Account\nscopes=Scopes\ncharacter=Character\ncorporation=Corporation\nworkaroundLabel=Workaround\nworkaroundCheckbox=Use eve.nikr.net\nscopeAssets=Assets\nscopeClones=Clones\nscopeImplants=Implants\nscopeWallet=Wallet\nscopeBlueprints=Blueprints\nscopeIndustryJobs=Industry Jobs\nscopeMarketOrders=Market Orders\nscopeMarketStructures=Market Structures\nscopeContracts=Contracts\nscopeRoles=Roles (Required)\nscopeStructures=Structures\nscopeShipType=Active Ship Type\nscopeShipLocation=Active Ship Location\nscopeOpenWindows=Open In-Game Windows\nscopePlanetaryInteraction=Planetary Assets\nscopeAutopilot=Set Autopilot\nscopeDivisions=Division Names\nscopeSkills=Skills\nscopeMining=Mining\nscopeLoyaltyPoints=Loyalty Points\nscopeNpcStanding=NPC Standing\n\ndialogueNameAccountManagement=Account Management\nadd=Add\nrevalidate=Revalidate\nrevalidateMsgAll={0,choice,1#Account|1<All accounts} revalidated successfully\nrevalidateMsgNone=Failed to revalidate account{0,choice,1#|1<s}\\r\\nUse Add/Edit to reauthorize the account{0,choice,1#|1<s}\nrevalidateMsgSome={1} of {0} account{0,choice,1#|1<s} revalidated successfully\\r\\nUse Add/Edit to reauthorize the remaning account{2,choice,1#|1<s}\ncollapse=Collapse\nexpand=Expand\nshowAssets=Show Assets\ncheckAll=Check All\nuncheckAll=Uncheck All\ncheckSelected=Check Selected\nuncheckSelected=Uncheck Selected\nshare=Share\nshareExport=Export\nshareExportClipboard=Copy\nshareExportFail=Failed to convert data to shareable key\nshareExportFile=Save\nshareExportHelp=Warning: Share jEveAssets ESI Keys with care\nshareImport=Import\nshareImportClipboard=Paste\nshareImportFile=Load\nshareImportHelpText=Help:\\r\\n\\\n1. Enter the jEveAssets ESI Key in the field below\\r\\n\\\n2. Press next to continue\nclose=Close\nnoOwners=Empty Account\n\ndeleteAccountQuestion=Delete Account?\ndeleteAccount=Delete Account\n\naccountExpired=Authorization Expired: Use Add or Edit to reactivate the account\naccountInvalid=Authorization Invalid: Revalidate or Use Add/Edit to reauthorize the account\nedit=Edit\ndelete=Delete\n\ntableFormatName=Name\ntableFormatCorporation=Corporation\ntableFormatClones=Clones\ntableFormatImplants=Implants\ntableFormatAssetList=Assets\ntableFormatAccountBalance=Account Balance\ntableFormatIndustryJobs=Industry Jobs\ntableFormatMarketOrders=Market Orders\ntableFormatJournal=Journal\ntableFormatTransactions=Transactions\ntableFormatLocations=Locations\ntableFormatContracts=Contracts\ntableFormatStructures=Structures\ntableFormatMarketStructures=Market Structures\ntableFormatBlueprints=Blueprints\ntableFormatDivisions=Division Names\ntableFormatShip=Active Ship\ntableFormatOpenWindows=Open Windows\ntableFormatPlanetaryInteraction=Planetary Assets\ntableFormatAutopilot=Autopilot\ntableFormatSkills=Skills\ntableFormatLoyaltyPoints=Loyalty Points\ntableFormatNpcStanding=NPC Standing\ntableFormatMining=Mining\ntableFormatYes=Yes\ntableFormatNo=No\ntableFormatExpires=Expires"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/DialoguesExport.properties",
    "content": "cancel=Cancel\ncolumns=Columns\ncomma=Comma\ncreateTable=Create Table (if not exist)\ncsv=CSV\ncurrentFilter=Current filter\ndecimalSeparator=Decimal Separator (CVS/HTML)\ndefaultSettings=Default\ndot=Dot\ndropTable=Drop Table (if exist)\nexport=Export\nextendedInserts=Extended Inserts\nfailedToSave=Failed to save file\nfilters=Filters\nformat=Format\nhtml=HTML\nhtmlHeaderRepeat=Column header every X row:\nhtmlIGB=Add in-game browser links\nhtmlStyled=Styled\nlineEndingsMac=Mac Classic (CR)\nlineEndingsUnix=Unix/Mac (LF)\nlineEndingsWindows=Windows (CR/LF)\nlinesTerminated=Lines terminated by:\nnoColumnsSelected=No columns selected\nnoFilter=No filter (export all)\nnoSavedFilter=No saved filters\nok=OK\nsavedFilter=Saved filter\nsemicolon=Semicolon\nsql=SQL\ntableName=Table Name\nviewCurrent=Shown columns\nviewNoSaved=No saved views\nviewSaved=Saved View\nviewSelect=Select columns\nviewSelectAll=Toggle All Columns"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/DialoguesProfiles.properties",
    "content": "ok=OK\ncancel=Cancel\nprofiles=Profiles\nload=Load\nnewP=New\nrename=Rename\ndelete=Delete\ndefaultP=Default\nclose=Close\nloadProfile=Load Profile\nloadingProfile=Loading Profile\ndeleteProfile=Delete Profile\nprofileLoaded=Profile already loaded.\nnewProfile=New Profile\ntypeName=Type name:\nnameAlreadyExists=A profile with that name already exist\ncreatingProfile=Creating Profile\nrenameProfile=Rename Profile\nenterNewName=Type new name:\ncannotDeleteActive=You can not delete the active profile\ncannotDeleteDefault=You can not delete the default profile\ndeleteProfileConfirm=<html>Delete Profile: \"<b>{0}</b>\"?<br><b>Warning: Deleted profiles can not be restored</b></html>\nclearFilter=Clear asset filter?\nprofileLoadedMsg=Profile Loaded\n"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/DialoguesSettings.properties",
    "content": "#Settings Dialog\nsettings={0} Settings\nroot=root\nok=OK\napply=Apply\ncancel=Cancel\ntools=Tools\nvalues=Values\n\n#General\ngeneral=General\nloadToolsBackground=Load tools in the background\nloadToolsOpen=Load tools on show (slower open)\nloadToolsStartup=Load tools on startup (slow startup)\nenterFilter=Only filter when enter is pressed\nhighlightSelectedRow=Highlight selected row(s)\nfocusEveOnline=Focus Eve-Online after opening in-game windows\nfocusEveOnlineLinuxCmd=sudo apt-get install wmctrl\nfocusEveOnlineLinuxHelp=wmctrl need to be installed for this to work.\nfocusEveOnlineLinuxHelp2=Run the following cmd to install:\ncopyDecimalSeparator=Copy Decimal Separator\ntransactionsProfit=Transaction Profit\ntransactionsMargin=Margin\ntransactionsPrice=Default Price:\ntransactionsPriceAverage=Average\ntransactionsPriceLatest=Latest\ntransactionsPriceMaximum=Maximum\ntransactionsPriceMinimum=Minimum\nincludeDays=Transaction Age:\ndays= Days (Zero = Unlimited)\n\n#Show\nshow=Show\nsaveTools=Restore tools from previous session\nselectTools=Select tools:\ntoolsOrderHelp=Drag and drop to rearrange order\n\n#Assets\nassets=Assets\nincludeSellContracts=Include sell contracts\nincludeBuyContracts=Include buy contracts\nincludeSellOrders=Include market sell orders\nincludeBuyOrders=Include market buy orders\nincludeManufacturing=Include manufacturing output\nincludeCopying=Include blueprint copying output\nincludeJumpClones=Include jump clones\nincludePluggedInImplants=Include plugged in implants\nshowContainerItemID=Show Container ItemID (Visual only - filters are compared with ItemID)\ncontractAssetsBoth=Corporation and Character\ncontractAssetsCharacter=Character\ncontractAssetsCorporation=Corporation\ncontractAssetsLabel=Corporation contract owner\ncontractAssetsLabelWarn=Note: Filters will need to match both\n\n#Overview\noverview=Overview\nignoreContainers=Ignore Containers (Only include the content of containers)\n\n#Stockpile\nstockpile=Stockpile\nstockpileSwitchTab=Focus tab automatically\nstockpileColors=Color Scheme\nstockpileTwoGroups=2 Groups\nstockpileThreeGroups=3 Groups\npercentPlusSymbol=+%\n\n#Transactions/Journal/Market Orders/Contracts/Industry Jobs\nsaveHistoryWarning=Warning: if you disable save history, the entire history will be deleted on the next API update.\n\n#Market Orders\nmarketOrders=Market Orders\nmarketOrdersSaveHistory=Save Market Orders history\nexpireWarnDays=Days before warning of order expiration\nremainingWarnPercent=Percent remaining before warning\n\n#Transactions\ntransactions=Transactions\ntransactionsSaveHistory=Save Transactions history\n\n#Journal\njournal=Journal\njournalSaveHistory=Save Journal history\n\n#Industry Jobs\nindustryJobs=Industry Jobs\nindustryJobsSaveHistory=Save Industry Jobs history\n\n#Contracts\ncontracts=Contracts\ncontractsSaveHistory=Save Contracts history\n\n#TrackerToolSettingsPanel\ntracker=Tracker\nuseAssetPriceForSellOrders=Use asset price for sell orders\n\n#PriceHistoryToolSettingsPanel\npriceHistory=Price History\nclearBlacklist=Reset Ignored\nclearBlacklistMsg=jEveAssets keeps a list of incomplete types from the zKillboard API.\\r\\n\\\nTypes in the list are never downloaded again.\\r\\n\\\nResetting the list makes all types downloadable again.\\r\\n\\\nReset the list now?\nclearBlacklistTitle=Reset\n\n#MiningToolSettingsPanel\nmining=Mining\nminingSaveHistory=Save Mining history\n\n#JumpsSettingsPanel\njumps=Jumps\neveGatecampCheck=Eve Gatecamp Check\neveGatecampCheckOpenOptions=Open\neveGatecampCheckRouteOptions=Route\n\n#Colors\nchartColors=Easy to see chart colors\ncolors=Colors\ncollapse=Collapse\nexpand=Expand\ncolumnName=Name\n#columnBackground text is not displayed, but have to ne unique\ncolumnBackground=BG\n#columnForeground text is not displayed, but have to ne unique\ncolumnForeground=FG\ncolumnPreview=PW\ncolumnSelected=PWS\ntestText=Text\ntestSelectedText=Selected\noverwriteTitle=Overwrite\noverwriteMsg=Overwrite customized colors?\ntheme=Colors\nlookAndFeel=Look & Feel\nlookAndFeelDefault=Default\nlookAndFeelDefaultName=Default ({0})\nlookAndFeelFlatLight=Flat Light\nlookAndFeelFlatDark=Flat Dark\nlookAndFeelFlatIntelliJ=Flat IntelliJ\nlookAndFeelFlatDarcula=Flat Darcula\nlookAndFeelNimbusDark=Dark Nimbus\nlookAndFeelMsg=Changing the Look and Feel will not take effect until jEveAssets is restarted\nlookAndFeelTitle=Look and Feel\n\n#Sounds\nsounds=Sounds\nsoundsBeep=Beep\nsoundsEveArmor=Eve Armor Warning\nsoundsEveCapacitor=Eve Capacitor Warning\nsoundsEveCargo=Eve Cargo Warning\nsoundsEveCharacterSelection=Eve Character Selection\nsoundsEveLogin=Eve Login\nsoundsEveNotificationPing=Eve Notification Ping\nsoundsEveShield=Eve Shield Warning\nsoundsEveSkill=Eve Skill Completed\nsoundsEveStart=Eve Start\nsoundsEveStructure=Eve Structure Warning\nsoundsIndustryJobCompleted=Industry Job Completed\nsoundsMp3Add=Add Mp3\nsoundsMp3DeleteMsg=Delete: {0}\\r\\nNote: Only deletes the copy in the jEveAssets sounds directory\nsoundsMp3DeleteTitle=Delete Mp3\nsoundsMp3ImportCopy=Failed to copy mp3 file to the sounds directory\nsoundsMp3ImportExist=Mp3 file already exist in the sounds directory\nsoundsMp3ImportTitle=Mp3 Import Failed\nsoundsMp3NoFilesAdded=No files added\nsoundsNone=None\nsoundsOutbidUpdateCompleted=Outbid Update Completed\nsoundsOutbidUpdateAvailable=Outbid Update Available\n\n#Price Data\nchangeSourceWarning=Note: When changing the Price Source or Price Location, the changes will not take effect until you update the price data.\nincludeRegions=Price Region:\nincludeStations=Price Station:\nincludeSystems=Price System:\nnotConfigurable=Not Configurable\nprice=Default Price:\npriceBase=Blueprint base price:\npriceData=Market Prices\npriceReprocessed=Reprocessed Price:\npriceManufacturing=Manufacturing Price:\nmanufacturingDefault=Default price for non-market items\npriceTech1=Tech 1\npriceTech2=Tech 2\nsource=Price Source:\njaniceApiKey=Janice API Key:\njaniceApiKeyMsg=By default jEveAssets doesn't need a Janice API Key\\r\\n\\\nIf it stops working you can ask for your own API key on the Janice discord\\r\\n\\\nDo you want to open the invite link to Janice discord now?\njaniceApiKeyTitle=Janice API Key\n\n#Proxy\nproxy=Proxy\ntype=Proxy Type\naddress=Proxy Address\nport=Proxy Port\nauth=Enable Authenticating\nusername=Username\npassword=Password\n\n#Reprocessing\nreprocessing=Reprocessing\nreprocessingWarning=Note: Station tax is not calculated (0% tax or 6.67+ standing)\nstationEquipment=Refining Equipment\nfiftyPercent=50%\npercentSymbol=%\nreprocessingLevel=Reprocessing\nreprocessingEfficiencyLevel=Reprocessing Efficiency\noreProcessingLevel=Ore Processing\nscrapmetalProcessingLevel=Scrapmetal Processing\nzero=0\none=1\ntwo=2\nthree=3\nfour=4\nfive=5\n\n#Manufacturing\nmanufacturing=Manufacturing\nmanufacturingFacility=Facility\nmanufacturingFacilityStation=Station\nmanufacturingFacilityMedium=Raitaru (Medium)\nmanufacturingFacilityLarge=Azbel (Large)\nmanufacturingFacilityXLarge=Sotiyo (X-Large)\nmanufacturingME=Material Efficiency\nmanufacturingPercent=%\nmanufacturingRigs=Facility Rigs\nmanufacturingRigsNone=None\nmanufacturingRigsT1=T1\nmanufacturingRigsT2=T2\nmanufacturingSecurity=Security\nmanufacturingSecurityHighSec=High Sec\nmanufacturingSecurityLowSec=Low Sec\nmanufacturingSecurityNullSec=Null Sec\nmanufacturingSystems=Systems Index\nmanufacturingSystemsWarning=Systems Indexes are outdated (Fix: Update Market Prices)\nmanufacturingTax=Tax\n\n#User set\nbadInput=Bad input\ndeleteItem=Reset\ndeleteTypeTitle=Reset {0}\neditItem=Edit\neditTypeTitle=Edit {0}\ninputNotValid=Input not valid\nitemEmpty=Empty\nitems={0} items\n\n#Names\nnames=Names\nname=Name\nnamesInstruction=To change the name of an asset:\\n\\\n1. Go to the Assets tool\\n\\\n2. Right click on the asset in the table\\n\\\n3. Select [Name] > [Edit] in the popup menu\n#Prices\npricePrice=Price\npricePrices=Prices\npriceInstructions=To set the price for an asset type:\\n\\\n1. Go to the Assets or Items tool\\n\\\n2. Right click on the item in the table\\n\\\n3. Select [Price] > [Edit] in the popup menu\n\n#Locations\nlocationsInstructions=To rename a location:\\n\\\n1. Go to the Assets tool\\n\\\n2. Right click a asset with [Unknown Location] in the table\\n\\\n3. Select [Locations] > [Edit] in the popup menu\n\n#Window\nwindowWindow=Window\nwindowSaveOnExit=Save size on exit\nwindowAlwaysOnTop=Always On Top\nwindowFixed=Fixed size\nwindowWidth=Width:\nwindowHeight=Height:\nwindowX=X Position:\nwindowY=Y Position:\nwindowMaximised=Maximized:"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/DialoguesStructure.properties",
    "content": "eta=ETA: {0} (or less)\ninvalid=No ESI accounts with the structure scope found\nlocationsAll=All Locations\nlocationsItem=Item Locations\nlocationsSelected=Selected Locations\nlocationsTracker=Tracker Locations\nnextUpdate=Next update in {0}\nownersAll=All Owners\nownersSingle=Single Owner\ntitle=Update Structures\nupdateTitle=Structures"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/DialoguesUpdate.properties",
    "content": "\nupdating=Updating\nok=OK\ncancel=Cancel\ncancelQuestion=Do you want to cancel the update?\ncancelQuestionTitle=Cancel Update\nminimize=Minimize\n\nfirstAccount=First Account\nallAccounts=All Accounts\nupdate=Update\ncontracts=Contracts\nmarketOrders=Market Orders\nindustryJobs=Industry Jobs\naccounts=Accounts\naccountBalance=Account Balance\nassets=Assets\npriceData=Market Prices\npriceDataNew=New\npriceDataNone=None\nnextUpdate=Next Update:\ncancel=Cancel\nnoAccounts=No Accounts\nnow=Now\njournal=Journals\ntransactions=Transactions\nnames=ID to Name\nblueprints=Blueprints\nskills=Skills\nloyaltyPoints=Loyalty Points\nnpcStanding=NPC Standing\nmining=Mining\nstructures=Structures\npublicMarketOrders=Public Market Orders\nstep1=Accounts\nstep2=Data\nstep3=Dynamic Data\nstep4=Contract Items\n\nbalance=Balance"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/General.properties",
    "content": "uncaughtErrorMessage=Please email jeveassets.log to niklaskr@gmail.com (See the readme.txt for details)\nerror=Error\ncontractIncluded=Contract > Sell\ncontractExcluded=Contract > Buy\nindustryJobFlag=Industry Job\nmarketOrderSellFlag=Market Order (Sell)\nmarketOrderBuyFlag=Market Order (Buy)\njumpClone=Jump Clone\nactiveClone=Active Clone\nnone=None\nall=All\nfileLockTitle=File Lock\nfileLockMsg=File Lock: {0}<br />\\n\\\nPlease see the <a href=\"https://wiki.jeveassets.org/faq#file_lock\">Wiki</a>\nsingleInstanceTitle=Run multiple instances?\nsingleInstanceMsg=jEveAssets is already running.\\n\\\nYou may lose data if you run more than one instance.\\n\\\nDo you want to run anyway?\nemptyLocation=[Unknown Location #{0}]\nassetSafety=Asset Safety\njournalContract=Contract\njournalIndustryJob=Industry Job\njournalMarketTransaction=Market Transaction\njournalSystemTransaction=System Transaction"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/GuiFrame.properties",
    "content": "about=About\naccounts=Accounts...\nagents=Agents\nbusiness=Business\nchange=Change Log\nclickToShow={0} - Click to show\nclickToApply={0} - Click to apply\nclose=Close Tab\ncontracts=Contracts\ncredits=Credits\neve=Eve Server Time\nexit=Exit\nexitMsg=Cancel update{0,choice,1#|1<s} and exit?\nexitTitle=Update{0,choice,1#|1<s} in progress\nextractions=Extractions\nfile=File\nhelp=Help\ninventory=Inventory\nitems=Items\nindustry=Industry Jobs\njournal=Journal\nlicense=License\nlinkDiscord=jEveAssets Discord\nlinkFeedbackAndHelp=Feedback & Help\nlinkWiki=Wiki\nlock=Lock Tabs\nloyaltyPoints=Loyalty Points\nmarket=Market Orders\nmaterials=Materials\nmining=Mining\nminingAll=Open All\nminingLog=Mining Log\nminingGraph=Mining Graph\nmisc=Misc\nnetWorth=Worth\nnot=Not Updatable\nnpcStanding=NPC Standing\noptions=Options\noptions1=Options...\noverview=Overview\nowners=Owners\npriceChanges=Price Changes\npriceHistory=Price History\nprofiles=Profiles...\nprogramUpdateText=New update available\nprogramUpdateTip=Press to begin the update\nreadme=Readme\nreprocessed=Reprocessed\nrouting=Routing\nship=Ship Fittings\nskills=Skills\nskillsOverview=Skills Overview\nslots=Slots\nstockpile=Stockpile\ntable=Table\ntools=Tools\ntracker=Tracker\ntransaction=Transactions\ntree=Tree\nupdatable=Updatable\nupdate=Update\nupdate1=Update...\nupdateStructure=Structures...\nupdatingInProgressMsg=Update already in progress...\nupdatingInProgressTitle=Update\nvalues=Values\nvalueTable=Isk\nwindowTitle={0} {1}{2,choice,0#|1# Portable}{3,choice,1#|1< - {4}}"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/GuiShared.properties",
    "content": "agentDivisionResearchAndDevelopment=R&D\r\nagentDivisionDistribution=Distribution\r\nagentDivisionMining=Mining\r\nagentDivisionSecurity=Security\r\nagentDivisionIndustrialistEntrepreneur=Industrialist - Entrepreneur\r\nagentDivisionExplorer=Explorer\r\nagentDivisionIndustrialistProducer=Industrialist - Producer\r\nagentDivisionEnforcer=Enforcer\r\nagentDivisionSoldierOfFortune=Soldier of Fortune\r\nagentDivisionInterBus=InterBus\r\nagentTypeNonAgent=Non Agent\r\nagentTypeBasicAgent=Basic Agent\r\nagentTypeTutorialAgent=Tutorial Agent\r\nagentTypeResearchAgent=Research Agent\r\nagentTypeConcordAgent=CONCORD Agent\r\nagentTypeGenericStorylineMissionAgent=Generic Storyline Mission Agent\r\nagentTypeStorylineMissionAgent=Storyline Mission Agent\r\nagentTypeEventMissionAgent=Event Mission Agent\r\nagentTypeFactionalWarfareAgent=Factional Warfare Agent\r\nagentTypeEpicArcAgent=Epic Arc Agent\r\nagentTypeAuraAgent=Aura Agent\r\nagentTypeCareerAgent=Career Agent\r\nadam4eve=Adam4EVE\r\nadd=Add\r\naddFilter=Add Asset Filter\r\naddTransactionFilter=Add Transaction Filter\r\nall=All\r\nbackground=Background\r\ncellAverage=Average\r\ncellAverageToolTip=Average (of selected numeric cells)\r\ncellInformation=Cell Selection\r\ncellInformationToolTip=Click to copy cell info\r\ncellInformationColumn=Column Selection\r\ncellInformationColumnToolTip=Click to copy column info\r\ncellCount=Count\r\ncellCountToolTip=Count (of selected numeric cells)\r\ncellMaximum=Maximum\r\ncellMaximumToolTip=Maximum (of selected numeric cells)\r\ncellMinimum=Minimum\r\ncellMinimumToolTip=Minimum (of selected numeric cells)\r\ncellSum=Sum\r\ncellSumToolTip=Sum (of selected numeric cells)\r\ncheckAll=All\r\nchruker=Chruker\r\nclickToCopyGroup=Click to copy group info\r\nclickToCopySelectionInfo=Click to copy selection info\r\nclickToCopyWrap={0} [Click to copy value]\r\nconstellation=Constellation\r\ncontainerDelete=Reset Containers\r\ncontainerEdit=Edit Container\r\ncontainerText=Select Container\r\ncontractCorporationOwner={0} / {1}\r\ncopy=Copy\r\ncopyEveMultiBuy=Eve MultiBuy\r\ncopyPlus=Copy+\r\ncorporation=Corporations\r\ncustom=Custom...\r\ncut=Cut\r\ndelete=Delete\r\ndotlan=Dotlan\r\ndurationDone=\\u2713\r\ndurationNever=\\u221e\r\nedit=Edit\r\nemptyString=\r\nerrorLoadingSettingsMsg=The settings file is corrupted and could not be loaded.\\r\\n\\\r\nAll settings have been returned to defaults.\r\nerrorLoadingSettingsTitle=Settings Corrupted\r\nerrorLoadingProfileMsg=The profile file is corrupted and could not be loaded.\\r\\n\\\r\nThe profile is now empty.\r\nerrorLoadingProfileTitle=Profile Corrupted\r\neveCookbook=Eve Cookbook\r\neveInfo=EveInfo\r\neveMarketBrowser=EVE Market Browser\r\neveMissioneer=EVEMissioneer\r\neveRef=EVE Ref\r\neveTycoon=Eve Tycoon\r\neveconomy=EVEconomy\r\nforeground=Foreground\r\nformulaColumns=Columns\r\nformulaDateToolTip=Days from now. 10 days in the past = -10. Today = 0. 10 days in the future = 10\r\nformulaFunctions=Functions\r\nformulaMenu=Formula Columns\r\nformulaName=Name\r\nformulaOperations=Operations\r\nformulaString=Formula\r\nformulaTitle=Formula Editor\r\nfuzzworkBlueprints=Fuzzwork Blueprints Calculator\r\nfuzzworkItems=Fuzzwork\r\nfuzzworkLP=Fuzzwork\r\nfuzzworkLPBuy=Buy Prices\r\nfuzzworkLPSell=Sell Prices\r\nfuzzworkMarket=Fuzzwork Market\r\nhelpFilter=Table Filter\r\nhelpSettings=Settings\r\nhelpStockpile=Stockpile\r\nhelpOpenManual=Open the {0} manual in your browser?\r\nhelpOpenManualTitle=jEveAssets Manual\r\nimportEft=Eve Fitting Tool\r\nimportEveMultibuy=Eve Multibuy\r\nimportIskPerHour=ISK Per Hour\r\nimportOptions=Import Options\r\nimportOptionsMerge=Merge\r\nimportOptionsOverwrite=Overwrite\r\nimportOptionsRename=Rename\r\nimportOptionsSkip=Skip\r\nimportStockpilesShoppingList=Stockpiles Shopping List\r\nindustry=Industry\r\ninvalidMsg=Please enter a valid value\r\ninvalidTitle=Invalid\r\nfiles={0} files\r\nitem=Item Type\r\nitemDatabase=Info\r\nitemDelete=Reset\r\nitemEdit=Edit\r\nitemNameTitle=Name\r\nitemPriceTitle=Price\r\njitaSpace=JitaSpace\r\njumps=Jumps\r\njumpsAddCustom=Add custom...\r\njumpsAddSelected=Add selected\r\njumpsClear=Clear\r\njumpsColumnToolTip=Jumps to {0}\r\njumpsSettings=Settings\r\nloadout=Loadout\r\nloadoutOpen=Select Ship\r\nloadoutSelectShip=Select Ship\r\nlocation=Locations\r\nlocationClear=Reset Location\r\nlocationClearConfirm={0}\r\nlocationClearConfirmAll={0} locations\r\nlocationEmpty=Name can not be empty\r\nlocationID=Select Location\r\nlocationName=Enter location name\r\nlocationRename=Edit Location\r\nlocationSystem=Select System\r\nlookup=Lookup\r\nloyaltyPointsStore=Loyalty Points Store\r\nmarket=Market\r\nnewStockpile=Add to new stockpile...\r\nnone=None\r\nok=OK\r\nopenLinks=Open {0} links?\r\nopenLinksTitle=Lookup\r\noverwrite=Overwrite?\r\noverwriteTitle=Overwrite\r\noverwriteFile=Overwrite file\r\npaste=Paste\r\nplanet=Planet\r\npriceHistory=Price History\r\nquantumAnomaly=Quantum Anomaly\r\nregion=Region\r\nreprocessed=Reprocessed\r\nrouting=Routing\r\nselectionAverage=Average value of selected items\r\nselectionContractsBought=Bought\r\nselectionContractsBoughtToolTip=Total price of selected completed buy contracts\r\nselectionContractsBuying=Buying\r\nselectionContractsBuyingToolTip=Total price of selected outstanding buy contracts\r\nselectionContractsCollateralAcceptor=Transporting Collateral\r\nselectionContractsCollateralAcceptorToolTip=Collateral of cargo being transported for selected courier contracts\r\nselectionContractsCollateralIssuer=Shipping Collateral\r\nselectionContractsCollateralIssuerToolTip=Collateral of cargo being shipped for selected courier contracts\r\nselectionContractsSellingAssets=Selling (Assets)\r\nselectionContractsSellingAssetsToolTip=Total value of assets in selected outstanding sell contracts\r\nselectionContractsSellingPrice=Selling (Price)\r\nselectionContractsSellingPriceToolTip=Total price of selected outstanding sell contracts\r\nselectionContractsSold=Sold\r\nselectionContractsSoldToolTip=Total price of selected completed sell contracts\r\nselectionCount=Total number of selected items\r\nselectionInventionSuccess=Percent success of selected invention jobs\r\nselectionManufactureJobsValue=Total output value of selected active manufacturing jobs\r\nselectionTransactionsSellCount=Total items in selected sell orders\r\nselectionTransactionsSellTotal=Total value of selected sell orders (include transaction tax)\r\nselectionTransactionsSellAvg=Average value of selected sell orders (include transaction tax)\r\nselectionTransactionsSellTax=Total transaction tax of selected sell orders\r\nselectionTransactionsBothCount=Total items in selected buy and sell orders\r\nselectionTransactionsBothTotal=Total value of selected buy and sell orders (include transaction tax)\r\nselectionTransactionsBothAvg=Average value of selected buy and sell orders (include transaction tax)\r\nselectionTransactionsBuyCount=Total items in selected buy orders\r\nselectionTransactionsBuyTotal=Total value of selected buy orders\r\nselectionTransactionsBuyAvg=Average value of selected buy orders\r\nselectionOrdersCount=Total items remaining/entered in selected orders\r\nselectionOrdersCountValue={0}/{1}\r\nselectionOrdersSellTotal=Total value of selected sell orders (include broker's fee)\r\nselectionOrdersBuyTotal=Total value of selected buy orders (include broker's fee)\r\nselectionOrdersBuyEscrow=Total escrow of selected buy orders\r\nselectionOrdersBuyToCover=Total isk to cover of selected buy orders\r\nselectionOrdersBrokersFee=Total broker's fee of selected orders\r\nselectionCopiedToClipboard=Copied to clipboard\r\nselectionTitle=Selection Information\r\nselectionTitleBoth=Both\r\nselectionTitleBuy=Buy\r\nselectionTitleCollateral=Collateral\r\nselectionTitleNeeded=Surplus\r\nselectionTitleNow=Stock\r\nselectionTitleSell=Sell\r\nselectionValue=Total value of selected items\r\nselectionValueNeeded=Total surplus value of selected items\r\nselectionValueNow=Total stock value of selected items\r\nselectionValueReprocessed=Total reprocessed value of selected items\r\nselectionVolume=Total volume of selected items\r\nselectionVolumeNeeded=Total surplus volume of selected items\r\nselectionVolumeNow=Total stock volume of selected items\r\nselectionShortAverage=Average\r\nselectionShortBrokerFees=Broker Fees\r\nselectionShortBuy=Buy\r\nselectionShortCount=Count\r\nselectionShortEscrow=Escrow\r\nselectionShortGroup= --- {0} --- \r\nselectionShortInventionSuccess=Invention Success\r\nselectionShortIskToCover=Isk to Cover\r\nselectionShortOutputValue=Output Value\r\nselectionShortReprocessedValue=Reprocessed Value\r\nselectionShortSell=Sell\r\nselectionShortTax=Tax\r\nselectionShortValue=Value\r\nselectionShortVolume=Volume\r\nselectionSlotsContractCharacter=Character Contracts\r\nselectionSlotsContractCharacterFree=Character Contracts Free\r\nselectionSlotsContractCharacterActive=Character Contracts Active\r\nselectionSlotsContractCharacterMax=Character Contracts Max\r\nselectionSlotsContractCharacterFreeToolTip=Character Contracts Free\r\nselectionSlotsContractCharacterActiveToolTip=Character Contracts Active\r\nselectionSlotsContractCharacterMaxToolTip=Character Contracts Max\r\nselectionSlotsContractCorporation=Corporation Contracts\r\nselectionSlotsContractCorporationFree=Corporation Contracts Free\r\nselectionSlotsContractCorporationActive=Corporation Contracts Active\r\nselectionSlotsContractCorporationMax=Corporation Contracts Max\r\nselectionSlotsContractCorporationFreeToolTip=Corporation Contracts Free\r\nselectionSlotsContractCorporationActiveToolTip=Corporation Contracts Active\r\nselectionSlotsContractCorporationMaxToolTip=Corporation Contracts Max\r\nselectionSlotsManufacturing=Manufacturing\r\nselectionSlotsManufacturingDone=Manufacturing Done\r\nselectionSlotsManufacturingFree=Manufacturing Free\r\nselectionSlotsManufacturingActive=Manufacturing Active\r\nselectionSlotsManufacturingMax=Manufacturing Max\r\nselectionSlotsManufacturingDoneToolTip=Manufacturing Done\r\nselectionSlotsManufacturingFreeToolTip=Manufacturing Free\r\nselectionSlotsManufacturingActiveToolTip=Manufacturing Active\r\nselectionSlotsManufacturingMaxToolTip=Manufacturing Max\r\nselectionSlotsMarketOrders=Market Orders\r\nselectionSlotsMarketOrdersFree=Market Orders Free\r\nselectionSlotsMarketOrdersActive=Market Orders Active\r\nselectionSlotsMarketOrdersMax=Market Orders Max\r\nselectionSlotsMarketOrdersFreeToolTip=Market Orders Free\r\nselectionSlotsMarketOrdersActiveToolTip=Market Orders Active\r\nselectionSlotsMarketOrdersMaxToolTip=Market Orders Max\r\nselectionSlotsReactions=Reactions\r\nselectionSlotsReactionsDone=Reactions Done\r\nselectionSlotsReactionsFree=Reactions Free\r\nselectionSlotsReactionsActive=Reactions Active\r\nselectionSlotsReactionsMax=Reactions Max\r\nselectionSlotsReactionsDoneToolTip=Reactions Done\r\nselectionSlotsReactionsFreeToolTip=Reactions Free\r\nselectionSlotsReactionsActiveToolTip=Reactions Active\r\nselectionSlotsReactionsMaxToolTip=Reactions Max\r\nselectionSlotsResearch=Research\r\nselectionSlotsResearchDone=Research Done\r\nselectionSlotsResearchFree=Research Free\r\nselectionSlotsResearchActive=Research Active\r\nselectionSlotsResearchMax=Research Max\r\nselectionSlotsResearchDoneToolTip=Research Done\r\nselectionSlotsResearchFreeToolTip=Research Free\r\nselectionSlotsResearchActiveToolTip=Research Active\r\nselectionSlotsResearchMaxToolTip=Research Max\r\nset=Set\r\nstation=Station\r\nstockpile=Stockpile\r\nsystem=System\r\nsystemRegion=System (Region Map)\r\ntableColumns=Columns...\r\ntableColumnsReset=Reset columns to default\r\ntableColumnsTip=Tip: You can rearrange the order of the columns in the table by dragging the column headers\r\ntableColumnsTitle=Columns\r\ntableResizeText=Auto resize columns to fit text\r\ntableResizeWindow=Auto resize columns to fit window\r\ntableResizeNone=Disable columns auto resizing\r\ntableSettings=Columns\r\ntags=Tags\r\ntagsEditTitle=Edit Tag\r\ntagsName={0}{1,choice,0#|0< ({1})}\r\ntagsNew=Add Tag...\r\ntagsNewMsg=Enter a new tag name\r\ntagsNewTitle=Add New Tag\r\ntoday=Today {0}\r\ntoolsUpdateTitle=Loading Tools\r\nui=Eve UI\r\nuiWaypoint=Waypoint\r\nuiWaypointBeginning=Add waypoint to the beginning of the route?\r\nuiWaypointClear=Clear existing waypoints?\r\nuiWaypointEveGatecampCheck=Open EVE Gatecamp Check?\\n\\\r\n\\n\\\r\nSelect route option:\r\nuiWaypointEveGatecampCheckAsk=Always Ask\r\nuiWaypointEveGatecampCheckAlwaysOpen=Always Open\r\nuiWaypointEveGatecampCheckDefault=Select default route option:\r\nuiWaypointEveGatecampCheckNeverOpen=Never Open\r\nuiWaypointEveGatecampCheckUnsecure=Unsecure\r\nuiWaypointEveGatecampCheckOptions=jEveAssets can open the EVE Gatecamp Check site in your browser when setting a in-game routes\\n\\\r\n\\n\\\r\nYou can always change the settings in Options > Options... > Jumps\\n\r\nuiWaypointEveGatecampCheckSecure=Secure\r\nuiWaypointEveGatecampCheckShortest=Shortest\r\nuiWaypointFail=Waypoint request failed\r\nuiWaypointOk=Waypoint request completed\r\nuiWaypointTitle=Waypoint\r\nuiCharacterInvalidMsg=No valid ESI accounts found\r\nuiCharacterMsg=Select in-game character:\r\nuiCharacterTitle=Select Character\r\nuiContract=Contract\r\nuiContractFail=Open contract window request failed\r\nuiContractOk=Open contract window request completed\r\nuiContractTitle=Contract\r\nuiLocationTitle=Select Location\r\nuiMarket=Market\r\nuiMarketFail=Open market window request failed\r\nuiMarketOk=Open market window request completed\r\nuiMarketTitle=Market\r\nuiOwner=Owner\r\nuiOwnerFail=Open info window request failed\r\nuiOwnerMsg=Select owner to show info for:\r\nuiOwnerOk=Open info window request completed\r\nuiOwnerTitle=Owner\r\nuiStation=Station\r\nuiSystem=System\r\nunknownFaction=[No Faction Data]\r\nunknownOwner=[Unknown Owner]\r\nupdateStructures=Update\r\nupdating=Updating\r\nzKillboard=zKillboard\r\n#Views\r\ndeleteView=Delete View\r\ndeleteViews=Delete {0} views?\r\neditViews=Manage...\r\nenterViewName=Enter View Name:\r\nloadView=Load View\r\nmanageViews=Manage Views\r\noverwriteView=Overwrite View\r\nrenameView=Rename View\r\nsaveView=Save View\r\nsaveViewMsg=Enter view name:\r\n#Filters\r\nsaveFilter=Save\r\nsaveFilterToolTip=Save Filter\r\nenterFilterName=Enter filter name\\:\r\nsave=Save\r\ncancel=Cancel\r\nnoFilterName=You need to enter a name for the filter.\r\noverwriteDefaultFilter=You can not overwrite default filters\r\noverwriteFilter=Overwrite Filter\r\naddField=Add\r\naddFieldToolTip=Add Filter\r\nclearField=Clear\r\nclearFieldToolTip=Clear Filters\r\nloadFilter=Load\r\nloadFilterToolTip=Load/Manage Filters\r\nshowFilters=Show\r\nshowFiltersToolTip=Show/Hide Filters\r\nmanageFilters=Manage...\r\nnothingToSave=Nothing to save...\r\nfilterManager=Filter Manager\r\nmanagerExport=Export\r\nmanagerImport=Import\r\nmanagerImportFailMsg=Failed to import filters.\\r\\nRetry?\r\nmanagerImportFailTitle=Import Failed\r\nmanagerLoad=Load\r\nmanagerRename=Rename\r\nmanagerDelete=Delete\r\nmanagerEdit=Edit\r\nmanagerCopy=Copy\r\nmanagerClose=Close\r\nrenameFilter=Rename Filter\r\ndeleteFilter=Delete Filter\r\ndeleteFilters=Delete {0} filters?\r\nmergeFilters=Merge Filters\r\nmanagerMerge=Merge\r\nfilterAll=All\r\nfilterAnd=And\r\nfilterOr=Or\r\nfilterContains=Contains\r\nfilterContainsNot=Does not contain\r\nfilterEquals=Equals\r\nfilterEqualsNot=Does not equals\r\nfilterRegex=Regular Expression\r\nfilterGreaterThan=Greater than\r\nfilterLastDays=Last x days\r\nfilterNextDays=Next x days\r\nfilterLastHours=Last x hours\r\nfilterNextHours=Next x hours\r\nfilterLessThan=Less than\r\nfilterBefore=Before\r\nfilterAfter=After\r\nfilterEqualsDate=Equals date\r\nfilterEqualsNotDate=Does not equals date\r\nfilterEqualsColumn=Equals column\r\nfilterEqualsNotColumn=Does not equals column\r\nfilterContainsColumn=Contains column\r\nfilterContainsNotColumn=Does not contain column\r\nfilterGreaterThanColumn=Greater than column\r\nfilterLessThanColumn=Less than column\r\nfilterBeforeColumn=Before column\r\nfilterAfterColumn=After column\r\nfilterUntitled=<i>Untitled</i>\r\nfilterEmpty=<i>Empty</i>\r\nfilterShowing=<html><nobr>Showing {0} of {1} ({2})\r\npopupMenuAddField=Add Filter\r\npopupMenuAddFieldMsg=Add {0} filters?\r\nexport=Export\r\nexportToolTip=Export Data\r\nexportTableData=Table Data\r\n#Text Dialog\r\ntextToClipboard=Copy to Clipboard\r\ntextToFile=Save to file\r\ntextFromClipboard=Paste from Clipboard\r\ntextFromFile=Load from file\r\ntextClose=Close\r\ntextLoadFailMsg=Failed to load file\r\ntextLoadFailTitle=Load Failed\r\ntextSaveFailMsg=Failed to save file\r\ntextSaveFailTitle=Save Failed\r\ntextImport=Import\r\ntextInvalid=Invalid Input\r\ntextEmpty=Nothing to import\r\ntextExport=Export\r\n#JSimpleColorPicker\r\ncolorDefault=Default\r\ncolorNone=None\r\ncolorCustom=Custom..."
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/TabsAgents.properties",
    "content": "agents=Agents\r\ncolumnName=Agent\r\ncolumnCorporation=Corporation\r\ncolumnFaction=Faction\r\ncolumnLevel=Level\r\ncolumnLocation=Location\r\ncolumnSecurity=Security\r\ncolumnSystem=System\r\ncolumnConstellation=Constellation\r\ncolumnRegion=Region\r\ncolumnDivision=Division\r\ncolumnType=Type\r\ncolumnLocator=Locator\r\ncolumnAgentID=Agent ID\r\ncolumnCorporationID=Corporation ID\r\ncolumnFactionID=Faction ID"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/TabsAssets.properties",
    "content": "assets=Assets\r\naverage=Average value of shown assets\r\nreprocessColors=Reprocess\nreprocessColorsToolTip=Reprocess (Red) or Sell (Green)\ntreemap=Treemap\ntreemapToolTip=Treemap view by group\ntotalCount=Total number of shown assets\ntotalReprocessed=Total reprocessed value of shown assets\ntotalValue=Total value of shown assets\ntotalVolume=Total volume of shown assets\r\nclearNew=Clear New\r\ncolumnName=Name\r\ncolumnNameType=Type Name\r\ncolumnNameCustom=Item Name\r\ncolumnTags=Tags\r\ncolumnGroup=Group\r\ncolumnCategory=Category\r\ncolumnSlot=Slot Type\r\ncolumnChargeSize=Charge Size\r\ncolumnOwner=Owner\r\ncolumnLocation=Location\r\ncolumnSecurity=Security\r\ncolumnSystem=System\r\ncolumnConstellation=Constellation\r\ncolumnRegion=Region\r\ncolumnFactionWarfareSystemOwner=Faction Warfare\r\ncolumnFactionWarfareSystemOwnerToolTip=System faction warfare occupier\r\ncolumnContainer=Container\r\ncolumnFlag=Flag\r\ncolumnPrice=Price\r\ncolumnPriceToolTip=Default price from the market price API (Options > Options... > Market Prices)\r\ncolumnPriceSellMin=Sell Min\r\ncolumnPriceSellMinToolTip=Minimum sell price from the market price API\r\ncolumnPriceBuyMax=Buy Max\r\ncolumnPriceBuyMaxToolTip=Maximum buy price from the market price API\r\ncolumnPriceReprocessed=Reprocessed\r\ncolumnPriceReprocessedToolTip=Price if asset was reprocessed\r\ncolumnPriceManufacturing=Manufacturing\r\ncolumnPriceManufacturingToolTip=The cost of manufacturing this item type (Options > Options... > Manufacturing)\r\ncolumnTransactionPriceLatest=Last Purchase\r\ncolumnTransactionPriceLatestToolTip=Most recent purchase price\r\ncolumnTransactionPriceAverage=Avg Purchase\r\ncolumnTransactionPriceAverageToolTip=Average purchase price\r\ncolumnTransactionPriceMaximum=Max Purchase\r\ncolumnTransactionPriceMaximumToolTip=Maximum purchase price\r\ncolumnTransactionPriceMinimum=Min Purchase\r\ncolumnTransactionPriceMinimumToolTip=Minimum purchase price\r\ncolumnPriceBase=Base Price\r\ncolumnPriceBaseToolTip=A price set by CCP\r\ncolumnPriceReprocessedDifference=+ Reprocessed\r\ncolumnPriceReprocessedDifferenceToolTip=Reprocessed - Price\r\ncolumnPriceReprocessedPercent=% Reprocessed\r\ncolumnPriceReprocessedPercentToolTip=Reprocessed / Price * 100\r\ncolumnValueReprocessed=Reprocessed Value\r\ncolumnValueReprocessedToolTip=Reprocessed * Count\r\ncolumnValue=Value\r\ncolumnValueToolTip=Price * Count\r\ncolumnValuePerVolume=isk/m3\r\ncolumnCount=Count\r\ncolumnTypeCount=Type Count\r\ncolumnTypeCountToolTip=Count of all assets of this type\r\ncolumnMeta=Meta\r\ncolumnTech=Tech\r\ncolumnVolume=Volume\r\ncolumnVolumeTotal=Total Volume\r\ncolumnVolumeTotalToolTip=Volume * Count\r\ncolumnVolumePackaged=Packaged Volume\r\ncolumnVolumePackagedToolTip=Packaged volume of a single asset\r\ncolumnSingleton=Singleton\r\ncolumnAdded=Added\r\ncolumnAddedToolTip=The date this assets was first seen\r\ncolumnMaterialEfficiency=ME\r\ncolumnMaterialEfficiencyToolTip=Blueprint Material Efficiency\r\ncolumnTimeEfficiency=TE\r\ncolumnTimeEfficiencyToolTip=Blueprint Time Efficiency\r\ncolumnRuns=Runs\r\ncolumnRunsToolTip=Blueprint Copy Runs\r\ncolumnStructure=Structure\r\ncolumnStructureToolTip=Asset is in a structure\r\ncolumnItemID=Item ID\r\ncolumnItemIDToolTip=Globally unique ID for this asset (changes when packaged/unpacked/stacked)\r\ncolumnLocationID=Location ID\r\ncolumnLocationIDToolTip=ID for the location of this assets\r\ncolumnTypeID=Type ID\r\ncolumnTypeIDToolTip=All assets of this type have this ID\r\n"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/TabsContracts.properties",
    "content": "auction=Auction\r\navailabilityPrivate=Private\r\navailabilityPublic=Public\r\nbought=Total price of shown completed buy contracts\r\nbuying=Total price of shown outstanding buy contracts\r\ncollapse=Collapse\r\ncollateralAcceptor=Collateral of cargo being transported for shown courier contracts\r\ncollateralIssuer=Collateral of cargo being shipped for shown courier contracts\r\ncolumnAccepted=Accepted\r\ncolumnAcceptor=Acceptor\r\ncolumnAssignee=Assignee\r\ncolumnAvailability=Availability\r\ncolumnBuyout=Buyout\r\ncolumnCollateral=Collateral\r\ncolumnCompleted=Completed\r\ncolumnContractID=Contract ID\r\ncolumnEndStation=End Station\r\ncolumnExpired=Expired\r\ncolumnIncluded=Included\r\ncolumnIssued=Issued\r\ncolumnForCorp=Corporation\r\ncolumnIssuer=Issuer\r\ncolumnIssuerCorp=Issuer Corp\r\ncolumnItemID=Item ID\r\ncolumnMarketPrice=Market Price\r\ncolumnPriceReprocessed=Reprocessed\r\ncolumnPriceReprocessedToolTip=Price if contract item was reprocessed\r\ncolumnPriceManufacturing=Manufacturing\r\ncolumnPriceManufacturingToolTip=The cost of manufacturing this item type (Options > Options... > Manufacturing)\r\ncolumnMarketValue=Market Value\r\ncolumnMarketValueToolTip=Market Price * Quantity\r\ncolumnValueReprocessed=Reprocessed Value\r\ncolumnValueReprocessedToolTip=Reprocessed * Count\r\ncolumnValueManufacturing=Manufacturing Value\r\ncolumnValueManufacturingToolTip=Manufacturing * Count\r\ncolumnMaterialEfficiency=ME\r\ncolumnMaterialEfficiencyToolTip=Blueprint Material Efficiency\r\ncolumnName=Name\r\ncolumnNumDays=Num Days\r\ncolumnOwned=Owned\r\ncolumnOwnedToolTip=Owned by a shown character account\r\ncolumnPrice=Price\r\ncolumnQuantity=Quantity\r\ncolumnRecordID=Record ID\r\ncolumnReward=Reward\r\ncolumnRuns=Runs\r\ncolumnRunsToolTip=Blueprint Copy Runs\r\ncolumnSingleton=Singleton\r\ncolumnStartStation=Start Station\r\ncolumnStatus=Status\r\ncolumnTimeEfficiency=TE\r\ncolumnTimeEfficiencyToolTip=Blueprint Time Efficiency\r\ncolumnTitle=Title\r\ncolumnType=Type\r\ncolumnTypeID=Type ID\r\ncolumnVolume=Volume\r\ncourier=Courier\r\nexcluded=Excluded\r\nexpand=Expand\r\nincluded=Included\r\nitemExchange=Item Exchange\r\nloan=Loan\r\nmissing=[Contract details missing]\r\nnotAccepted=Not Accepted\r\npackaged=Packaged\r\npublicContract=Public\r\ncontractCount=Count of currently filtered contracts\r\nsellingPrice=Total price of shown outstanding sell contracts\r\nsellingAssets=Total value of assets in shown outstanding sell contracts\r\nsold=Total price of shown completed sell contracts\r\nstatus=Status\r\nstatusArchived=Archived\r\nstatusCancelled=Cancelled\r\nstatusCompleted=Completed\r\nstatusCompletedByContractor=Completed by Contractor\r\nstatusCompletedByIssuer=Completed by Issuer\r\nstatusDeleted=Deleted\r\nstatusFailed=Failed\r\nstatusInProgress=In Progress\r\nstatusOutstanding=Outstanding\r\nstatusRejected=Rejected\r\nstatusReversed=Reversed\r\nstatusUnknown=Unknown\r\ntitle=Contracts\r\ntype=Type\r\nunknown=Unknown\r\nunpackaged=Unpackaged"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/TabsItems.properties",
    "content": "items=Items\ncolumnName=Name\ncolumnGroup=Group\ncolumnCategory=Category\ncolumnSlot=Slot Type\ncolumnChargeSize=Charge Size\ncolumnPriceBase=Base Price\ncolumnPriceReprocessed=Reprocessed\ncolumnPriceManufacturing=Manufacturing\ncolumnPriceManufacturingToolTip=The cost of manufacturing this item type (Options > Options... > Manufacturing)\ncolumnMeta=Meta\ncolumnTech=Tech\ncolumnVolume=Volume\ncolumnVolumePackaged=Volume Packaged\ncolumnTypeID=TypeID\n"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/TabsJobs.properties",
    "content": "active=Active\r\nall=All\r\nbpc=Copy\r\nbpo=Original\r\ncompleted=Completed\r\ncount=Total number of shown industry jobs\r\nindustry=Industry Jobs\r\ninstall=Install Date\r\ninventionSuccess=Percent of shown invention jobs successfully completed\r\nmanufactureJobsValue=Output value of shown active manufacturing jobs\r\nno=No character found\r\nstatus=Status\r\ncolumnState=Status\r\ncolumnActivity=Activity\r\ncolumnName=Name\r\ncolumnGroup=Group\r\ncolumnOwner=Owner\r\ncolumnInstaller=Installer\r\ncolumnOwned=Owned\r\ncolumnOwnedToolTip=Owned by a shown character account\r\ncolumnCompletedCharacter=Completed By\r\ncolumnLocation=Location\r\ncolumnSystem=System\r\ncolumnConstellation=Constellation\r\ncolumnRegion=Region\r\ncolumnStartDate=Start Date\r\ncolumnEndDate=End Date\r\ncolumnCompletedDate=Completed Date\r\ncolumnTimeLeft=Time Left\r\ncolumnPauseDate=Paused Date\r\ncolumnRuns=Runs\r\ncolumnOutputCount=Output Count\r\ncolumnOutputValue=Output Value\r\ncolumnOutputVolume=Output Volume\r\ncolumnOutputVolumeToolTip=Total packaged volume of output items\r\ncolumnOutputType=Output Type\r\ncolumnOutputGroup=Output Group\r\ncolumnOutputCategory=Output Category\r\ncolumnBPO=BPO\r\ncolumnMaterialEfficiency=ME\r\ncolumnTimeEfficiency=TE\r\ncolumnCost=Job Cost\r\ncolumnJobID=Job ID\r\n"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/TabsJournal.properties",
    "content": "clearNew=Clear New\ncontextAllianceID=AllianceID\ncontextCharacterID=CharacterID\ncontextContractID=ContractID\ncontextCorporationID=CorporationID\ncontextEveID=EveID\ncontextIndustryJobID=IndustryJobID\ncontextPlanetID=PlanetID\ncontextStationID=StationID\ncontextSystemID=SystemID\ncontextStructureID=StructureID\ncontextTransactionID=TransactionID\ncontextTypeID=TypeID\ncontracts=Contracts\nchart=Chart\nchartTotal=Total\nchartTitle=Journal Chart\nclose=Close\nfindIn=Find in\nindustryJobs=Industry Jobs\nnoDataFound=No data found\nrattingIncome=Ratting income\ntitle=Journal\ntotal=Total for shown entries\ntotalNegative=Expenditure for shown entries\ntotalPositive=Income for shown entries\ntransactions=Transactions\ncolumnAccountKey=Wallet Division\ncolumnAmount=Amount\ncolumnBalance=Balance\ncolumnDate=Date\ncolumnOwner=Owner\ncolumnOwnerName1=From\ncolumnOwnerName2=To\ncolumnReason=Reason\ncolumnRefType=Type\ncolumnTaxAmount=TaxAmount\ncolumnTags=Tags\ncolumnAdded=Added\ncolumnAddedToolTip=The date this journal was first seen\ncolumnContextName=Context\ncolumnContextType=Context Type\ncolumnContextID=Context ID\n"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/TabsLoadout.properties",
    "content": "#\r\n#Sat Nov 27 13:51:18 CET 2010\r\ncancel=Cancel\r\ncollapse=Collapse\r\ncolumnLocation=Location\r\ncolumnName=Name\r\ncolumnOwner=Owner\r\ncolumnSlot=Slot\r\ncolumnValue=Value\r\ncolumnShip=Ship\r\ndescription=Description\\:\r\nempty=Empty Name\r\nexpand=Expand\r\nexport=Export Fitting\r\nexportEft=EFT\r\nexportEveXml=Eve Format\r\nexportEveXmlAll=All Ships\r\nexportEveXmlSelected=Selected Ship\r\nexportTableData=Table Data\r\nflagCargo=Cargo\r\nflagDroneBay=Drone Bay\r\nflagHighSlot=High Slot\r\nflagLowSlot=Low Slot\r\nflagMediumSlot=Medium Slot\r\nflagOther=Other\r\nflagRigSlot=Rig Slot\r\nflagSubSystem=Sub System\r\nflagTotalValue=Total Value\r\nname=Name\\:\r\nname1=Name can not be empty...\r\nno=No character found\r\nno1=No ships found\r\noK=OK\r\nowner=Owner\r\nship=Ship Fittings\r\nship1=Ship\r\ntotalAll=Total\r\ntotalModules=Modules\r\ntotalShip=Ship\r\nwhitespace10=\\  {0}\r\n"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/TabsLoyaltyPoints.properties",
    "content": "loyaltyPoints=Loyalty Points\r\ncolumnOwner=Owner\r\ncolumnCorporationName=Corporation\r\ncolumnLoyaltyPoints=Loyalty Points\r\ntotal=Total"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/TabsMaterials.properties",
    "content": "all=All\r\ncollapse=Collapse\r\ncolumnCount=Count\r\ncolumnGroup=Group\r\ncolumnLocation=Location\r\ncolumnName=Name\r\ncolumnPrice=Price\r\ncolumnValue=Value\r\ncolumnTypeID=TypeID\r\nexpand=Expand\r\ngrandTotal=Grand Total\r\nincludeCommodity=Commodity\r\nincludeMaterials=Materials\r\nincludeOre=Ore\r\nincludePI=Planetary Materials\r\nmaterials=Materials\r\nno=No character found\r\nsummary=Summary\r\ntotal=Total\r\n"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/TabsMining.properties",
    "content": "average=Average value of shown mining entries\ncharacter=Character\ncorporation=Corporation\ncount=Count\nextractions=Extractions\nextractionsActiveSoon=Soon/Active\nfrom=From\ngrandTotal=Grand Total\ngraphToolTip=<html><b>{0}:</b> {1}<br><b>Date:</b> {2}\ngroupBasic={0}\ngroupName={0} {1}\ngroupTotal={0} Total\nincludeZero=Always include zero\nminingGraph=Mining Graph\nminingLog=Mining Log\nscaleLinear=Linear\nscaleLogarithmic=Logarithmic\nshow=Show\nto=To\ntotalCount=Total number of shown mining entries\ntotalReprocessed=Total reprocessed value of mining entries\ntotalValue=Total value of mining entries\ntotalVolume=Total volume of shown mining entries\nvalueOre=Ore\nvalueReprocessed=Reprocessed\nvalueReprocessedMax=Max Reprocessed\nvolume=Volume\ncolumnDate=Date\ncolumnName=Name\ncolumnGroup=Group\ncolumnCategory=Category\ncolumnOwner=Owner\ncolumnLocation=Location\ncolumnCount=Count\ncolumnPriceOre=Price Ore\ncolumnPriceReprocessed=Price Reprocessed\ncolumnPriceReprocessedToolTip=Yield with skills set in: Options > Options... > Reprocessed\ncolumnPriceReprocessedMax=Price Reprocessed Max\ncolumnPriceReprocessedMaxToolTip=Max possible yield\ncolumnValueOre=Value Ore\ncolumnValueReprocessed=Value Reprocessed\ncolumnValueReprocessedToolTip=Yield with skills set in: Options > Options... > Reprocessed\ncolumnValueReprocessedMax=Value Reprocessed Max\ncolumnValueReprocessedMaxToolTip=Max possible yield\ncolumnVolume=Volume\ncolumnValuePerVolumeOre=Isk/m3 Ore\ncolumnValuePerVolumeReprocessed=Isk/m3 Reprocessed\ncolumnValuePerVolumeReprocessedToolTip=Yield with skills set in: Options > Options... > Reprocessed\ncolumnValuePerVolumeReprocessedMax=Isk/m3 Reprocessed Max\ncolumnValuePerVolumeReprocessedMaxToolTip=Max possible yield\ncolumnCorporation=Corporation\ncolumnForCorporation=Type\ncolumnExtractionStartTime=Extraction Start\ncolumnMoon=Moon\ncolumnChunkArrivalTime=Chunk Arrival\ncolumnNaturalDecayTime=Natural Decay"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/TabsNpcStanding.properties",
    "content": "npcStanding=NPC Standing\r\ncolumnOwner=Owner\r\ncolumnAgent=Agent\r\ncolumnCorporation=Corporation\r\ncolumnFaction=Faction\r\ncolumnAgentLevel=Level\r\ncolumnAgentDivision=Division\r\ncolumnAgentType=Agent Type\r\ncolumnType=Type\r\ncolumnRawStanding=Raw Standing\r\ncolumnRawStandingToolTip=Unmodified standing (used by broker's fee calculations)\r\ncolumnStanding=Standing\r\ncolumnStandingToolTip=Standing modified by connections/criminal connections/diplomacy\r\ncolumnStandingMax=Max Standing\r\ncolumnStandingMaxToolTip=Standing with level 5 connections/criminal connections/diplomacy bonus\r\ncolumnLocation=Location\r\ncolumnSecurity=Security\r\ncolumnSystem=System\r\ncolumnConstellation=Constellation\r\ncolumnRegion=Region\r\ncolumnID=ID\r\ntypeAgent=Agent\r\ntypeCorporation=Corporation\r\ntypeFaction=Faction"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/TabsOrders.properties",
    "content": "#\r\n#Sat Nov 27 14:46:33 CET 2010\r\nactiveBuyOrders=Buy (active)\r\nactiveSellOrders=Sell (active)\r\nbuy=Buy\r\nclearNew=Clear New\r\ncolumnOrderType=Type\r\ncolumnName=Name\r\ncolumnGroup=Group\r\ncolumnCategory=Category\r\ncolumnVolumeRemain=Quantity Remaining\r\ncolumnVolumeTotal=Quantity Total\r\ncolumnPrice=Price\r\ncolumnOutbidPrice=Outbid $\r\ncolumnOutbidPriceToolTip=Best outbid price in order range\r\ncolumnOutbidCount=Outbid #\r\ncolumnOutbidCountToolTip=Total count of remaining items in orders underbidding your order\r\ncolumnOutbidDelta=Outbid \\u0394\r\ncolumnOutbidDeltaToolTip=Outbid price compared to order price\r\ncolumnEveUi=Market Details\r\ncolumnEveUiToolTip=<html>1. Open market details in the eve client (character have to be in-game)<br>2. Copy the fixed outbid price to the clipboard<br>3. Focus the characters eve client</html>\r\ncolumnBrokersFee=Broker's Fee\r\ncolumnBrokersFeeToolTip=Broker's Fee payed so far (May not include everything due to ESI limitations)\r\ncolumnEdits=Edits\r\ncolumnEditsToolTip=Times this order was edited (May not include everything due to ESI limitations)\r\ncolumnPriceReprocessed=Reprocessed\r\ncolumnPriceManufacturing=Manufacturing\r\ncolumnPriceManufacturingToolTip=The cost of manufacturing this item type (Options > Options... > Manufacturing)\r\ncolumnIssued=Updated\r\ncolumnIssuedToolTip=Last known issued date\r\ncolumnIssuedFirst=Issued\r\ncolumnIssuedFirstToolTip=First known issued date (may not be the created date due to ESI limitations)\r\ncolumnExpires=Expires\r\ncolumnChanged=Changed\r\ncolumnChangedToolTip=The date this market order was last changed\r\ncolumnRange=Range\r\ncolumnRemainingValue=Remaining Value\r\ncolumnStatus=Status\r\ncolumnMinimumQuantity=Minimum Quantity\r\ncolumnOwner=Owner\r\ncolumnIssuedBy=Issued By\r\ncolumnOwned=Owned\r\ncolumnOwnedToolTip=Owned by a shown character account\r\ncolumnWalletDivision=Wallet Division\r\ncolumnLocation=Location\r\ncolumnSystem=System\r\ncolumnConstellation=Constellation\r\ncolumnRegion=Region\r\ncolumnTransactionPrice=Transaction Price\r\ncolumnTransactionPriceToolTip=Opposite Price (does not include tax)\r\ncolumnTransactionMargin=Transaction Margin\r\ncolumnTransactionMarginToolTip=Transaction Price + Margin set in Options > Options... > General > Margin (does not include tax)\r\ncolumnTransactionProfitDifference=Transaction Profit +\r\ncolumnTransactionProfitDifferenceToolTip=Profit per item compared to transactions (does not include tax)\r\ncolumnTransactionProfitPercent=Transaction Profit %\r\ncolumnTransactionProfitPercentToolTip=Profit percent compared to transactions (does not include tax)\r\ncolumnMarketPrice=Market Price\r\ncolumnMarketPriceToolTip=Default price from the market price API (Options > Options... > Market Prices)\r\ncolumnMarketPriceSellMin=Market Sell Min\r\ncolumnMarketPriceSellMinToolTip=Minimum sell price from the market price API\r\ncolumnMarketPriceBuyMax=Market Buy Max\r\ncolumnMarketPriceBuyMaxToolTip=Maximum buy price from the market price API\r\ncolumnMarketMargin=Market Margin %\r\ncolumnMarketMarginToolTip=Profit percent compared to market price (does not include tax)\r\ncolumnMarketProfit=Market Profit +\r\ncolumnMarketProfitToolTip=Profit per item compared to market price (does not include tax)\r\ncolumnVolume=Volume\r\ncolumnTypeID=TypeID\r\ncolumnOrderID=Order ID\r\neveUiOpen=Open\r\nlastEsiUpdateToolTip=Last Esi update\r\nlastLogUpdateToolTip=Last MarketLog update\r\nlastClipboardToolTip=Last value copied to the clipboard\r\nmarket=Market Orders\r\nmarketLogTypeToolTip=Order type copied to the clipboard on MarketLog import\r\nnone=None\r\nownerInvalidScopeMsg=The issuing character of this order is missing the required scope.\\r\\nOpen the with another character?\r\nownerInvalidScopeTitle=Invalid Owner\r\nownerNotFoundMsg=The issuing character of this order was not found.\\r\\nOpen the with another character?\r\nownerNotFoundTitle=Owner Not Found\r\nrangeStation=Station\r\nrangeSolarSystem=System\r\nrangeRegion=Region\r\nrangeJump=1 Jump\r\nrangeJumps={0} Jumps\r\nmarket=Market Orders\r\nsell=Sell\r\nsellOrderRangeLastToolTip=Sell order outbid range (current data)\r\nsellOrderRangeToolTip=Customize sell order range (region is the in-game default)\r\nsellOrderRangeSelcted={0}\r\nstatus=Status\r\nstatusActive=Active\r\nstatusClosed=Closed\r\nstatusFulfilled=Fulfilled\r\nstatusExpired=Expired\r\nstatusPartiallyFulfilled=Partially Fulfilled\r\nstatusCancelled=Cancelled\r\nstatusPending=Pending\r\nstatusCharacterDeleted=Character Deleted\r\nstatusUnknown=Unknown\r\ntotalSellOrders=Total value of shown sell orders\r\ntotalBuyOrders=Total value of shown buy orders\r\ntotalEscrow=Total escrow of shown buy orders\r\ntotalToCover=Total isk to cover of shown buy orders\r\nunknownLocationsMsg=Unable to get outbid data for orders in unknown locations\\r\\n\\\r\nResolve now by updating structures?\r\nunknownLocationsMsgLater=Unable to get outbid data for orders in unknown locations\\r\\n\\\r\nResolve by updating structures: Update > Structures...\r\nunknownLocationsTitle=Orders in unknown locations\r\nupdateNoActiveMsg=No active market orders\\r\\n\\\r\n(orders in unknown locations are ignored)\r\nupdateNoActiveTitle=Update Cancelled\r\nupdateOutbidEsi=Update\r\nupdateOutbidFileBuy=Buy\r\nupdateOutbidFileSell=Sell\r\nupdateOutbidWhen={0}\r\nupdateOutbidUpdating=Updating...\r\nupdateTitle=Public Market Orders\r\n"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/TabsOverview.properties",
    "content": "#\r\n#Sat Nov 27 15:02:59 CET 2010\r\nadd=Add to new group...\r\naddGroup=Add Group\r\naverage=Average value of shown items\r\nclear=Clear\r\nconstellations=Constellations\r\ndeleteGroup=Delete Group\r\ndeleteTheGroup=Delete Group\\: {0}?\r\nfilterShowing=<html><nobr>Assets {0} of {1} ({2})\r\ngroups=Groups\r\ngroupName=Group Name\\:\r\nloadFilter=Assets Filter\r\nlocations=Locations\r\noverview=Overview\r\nowner=Owner\r\nplanets=Planets\r\nregions=Regions\r\nrenameGroup=Rename Group\r\nstations=Stations\r\nsystems=Systems\r\ntotalCount=Total number of shown items\r\ntotalReprocessed=Total reprocessed value of shown items\r\ntotalValue=Total value of shown items\r\ntotalVolume=Total volume of shown items\r\nview=View\ntreemap=Treemap\ntreemapToolTip=Treemap view by name\ncolumnName=Name\ncolumnSystem=System\r\ncolumnConstellation=Constellation\r\ncolumnRegion=Region\r\ncolumnSecurity=Security\r\ncolumnVolume=Volume\r\ncolumnValue=Value\r\ncolumnValuePerVolume=isk/m3\r\ncolumnCount=Count\r\ncolumnAverageValue=Average Value\r\ncolumnReprocessedValue=Reprocessed Value\r\n"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/TabsPriceChanges.properties",
    "content": "title=Price Changes\r\nfrom=From\r\nto=To\r\nresetDates=Reset Dates\r\nowned=Owned\r\ncolumnName=Name\r\ncolumnGroup=Group\r\ncolumnCategory=Category\r\ncolumnCount=Owned\r\ncolumnCountToolTip=Currently owned items\r\ncolumnPriceFrom=Price From\r\ncolumnPriceTo=Price To\r\ncolumnChangePercent=% Change\r\ncolumnChangePercentToolTip=Price change in percent\r\ncolumnChange=+ Change\r\ncolumnChangeToolTip=Price change\r\ncolumnTotal=\\u0394 Change\r\ncolumnTotalToolTip=Approximate value change ((from - to) * currently owned)"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/TabsPriceHistory.properties",
    "content": "add=Add\r\naddTitle=Add Item\r\nclear=Clear All\r\ndeleteHistorySet=Delete price history set?\r\ndeleteHistorySets=Delete all {0} price history sets?\r\nedit=Edit\r\nenterName=Enter name\\:\r\nfrom=From\r\ngraphToolTip=<html><b>{0}:</b> {1}<br><b>Date:</b> {2}\r\nincludeZero=Always include zero\r\nload=Load\r\nmanage=Manage...\r\nmanageTitle=Manage Price History Sets\r\nmaxItemsMsg=You can not show more than {0}  prices at the time\r\nmerge=Merge price history sets\r\nmergeMax=Can not merge sets to be larger than {0} types\r\noverwrite=Overwrite price history set?\r\nremove=Remove Selected\r\nrename=Rename price history sets\r\nsave=Save\r\nsaveTitle=Save\r\nscaleLinear=Linear\r\nscaleLogarithmic=Logarithmic\r\nsourcejEveAssets=jEveAssets\r\nsourcezKillboard=zKillboard\r\ntitle=Price History\r\nto=To\r\nupdateTitle=zKillboard Price History\r\nupdatingMsg=You can not add items while updating from the zKillboard Price History API\r\nupdatingTitle=zKillboard Price History"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/TabsReprocessed.properties",
    "content": "addItem=Add Item\nbatch=Batch:\ncollapse=Collapse\ncolumnName=Name\ncolumnPrice=Price\ncolumnQuantity100=Quantity 100%\ncolumnQuantity100ToolTip=100% yield (not actual possible)\ncolumnQuantityMax=Quantity Max\ncolumnQuantityMaxToolTip=Max possible yield\ncolumnQuantitySkill=Quantity Skill\ncolumnQuantitySkillToolTip=Yield with skills set in: Options > Options... > Reprocessed\ncolumnTotalBatch=[Batch]\ncolumnTotalName=[Name]\ncolumnTotalPrice=[Price]\ncolumnTotalValue=[Value]\ncolumnTypeID=TypeID\ncolumnValueDifference=Value Difference\ncolumnValueMax=Value Max\ncolumnValueSkill=Value Skill\nexpand=Expand\ngrandTotal=Grand Total\nimportButton=Import\nmultiplierSign=\\u00d7\nprice=Price:\nremove=Remove\nremoveAll=Remove All\nselectItem=Select Item\ntitle=Reprocessed\ntotal=Total\nvalue=Value:\n\n"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/TabsRouting.properties",
    "content": "#\r\n#Sat Nov 27 15:24:52 CET 2010\r\nadd=>>>\r\naddStation=+\r\naddStationSelect=Select station\r\naddStationTitle=Add Station\r\naddSystem=+\r\naddSystemSelect=Select system\r\naddSystemTitle=Add System\r\nalgorithm=Algorithm\r\nallowed={0} of {1} allowed\r\navoid=Avoid Systems\r\navoidAdd=Add\r\navoidClear=Clear\r\navoidLoad=Load\r\navoidManage=Manage...\r\navoidNone=None\r\navoidRemove=Remove\r\navoidSave=Save\r\ncalculate=Calculate Route\r\ncancel=Cancel\r\nchecked=\\ud83d\\uddf9\r\ndeleteAvoid=Delete Avoid List\r\ndeleteAvoids=Delete {0} Avoid Lists?\r\nemptyResult=Once a route has been found, it will be displayed here.\r\nenterAvoidName=Enter Avoid List Name:\r\nerror=Error\r\nfilteredAssets=Filtered Assets\r\nfilters=Filters\r\nmanageFiltersTitle=Manage Filters\r\nnoSystems=There is little point in trying to calculate\\nthe optimal route between two or fewer points,\\nsince there is only one possible solution.\r\nnoSystemsTitle=Not calculating\r\nok=OK\r\nfiltersTab=Filters\r\nimportOptionsAll=Use this action for all {0,choice,1#|1<({0}) }routes\r\nimportOptionsOverwriteHelp=Replace the existing route\r\nimportOptionsRenameHelp=Create new route\r\nimportOptionsSkipHelp=Keep the existing route\r\nmergeAvoids=Merge Avoid Lists\r\noverviewGroup=Overview Group: {0}\r\noverwriteAvoid=Overwrite Avoid List\r\nremove=<<<\r\n#\\u21e8\\u2192\\u21d2\r\nrenameAvoid=Rename Avoid List\r\n\r\nresultArrow=\\ \\u21d2 \r\nresultEdit=Edit\r\nresultEditAvoid=Avoid: {0}\r\nresultEditHelp=Drag and drop to rearrange order\r\nresultEditJumps=Jumps: {0}\r\nresultEditSecurity=Security: {0}\r\nresultEditTitle=Edit Route\r\nresultEdited=Edited\r\nresultEmpty=Empty\r\nresultExport=Export\r\nresultImport=Import\r\nresultImportIDs=System IDs\r\nresultImportNames=System Names\r\nresultImportRoute=Import Route\r\nresultImportRouteEmpty=Import invalid: No systems found\r\nresultImportRouteInvalid=Import invalid: Require minimum two systems\r\nresultImportText=Text Route\r\nresultImportXml=Routing XML\r\nresultImported=Imported\r\nresultLoad=Load\r\nresultManage=Manage...\r\nresultManageTitle=Manage Routes\r\nresultOverwrite=Overwrite result?\r\nresultSave=Save\r\nresultSelectRoutes=Select Routes\r\nresultTabFull=Full Result\r\nresultTabInfo=Info\r\nresultTabShort=Result\r\nresultText=Algorithm: {0}\\n\\\r\nJumps: {1}\\n\\\r\nWaypoints: {2}\\n\\\r\nSecurity: {3}\\n\\\r\nAvoid: {4}\\n\\\r\nGenerated in: {5}\r\nresultUiFail=Waypoint requests failed\r\nresultUiOk=Waypoint requests completed\r\nresultUiWaypoints=Add all waypoints to the in-game autopilot\r\nresultUnknownValue=Unknown\r\nresultUntitled=Untitled\r\nrouteSaveTitle=Save Route\r\nrouteSaveMsg=Enter route name:\r\nroutingTab=Route\r\nroutingTitle=Routing\r\nrouteDeleteMsg=Delete {0} routes?\r\nrouteDeleteTitle=Delete Route\r\nrouteOverwrite=Overwrite Route\r\nrouteRenameTitle=Rename Route\r\nsaveFilterMsg=Enter filter name\r\nsaveFilterTitle=Save Filter\r\nsecurity=Security\r\nsource=Source\r\nstartEmpty=Empty\r\nstartSystem=Start System\r\ntotal={0} of {1} total\r\nunchecked=\\u2610"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/TabsSkills.properties",
    "content": "add=New Skill Plan\r\ndeleteSkillPlan=Delete skill plan?\r\ndeleteSkillPlans=Delete all {0} skill plans\r\nenterName=Enter name\\:\r\nmanage=Manage...\r\nmanageTitle=Manage Skill Plans\r\nmerge=Merge skill plans.\r\nnoValidSkills=No valid skills found\r\noverwrite=Overwrite skill plan?\r\nrename=Rename skill plan\r\nskillPlans=Skill Plans\r\nskills=Skills\r\nskillsOverview=Skills Overview\r\ntableToolTipSkill={1} \\u2192 {2} {0} ({3})<br>\r\ntableToolTipCompleted=All skills complete for this plan.\r\ntableToolTipMissing=<html>{0} Skills Missing:<br>\r\ntableToolTipTruncated=\\u2026\r\ntotal=Total\r\ncolumnSkill=Skill\r\ncolumnGroup=Group\r\ncolumnCharacter=Character\r\ncolumnActive=Active\r\ncolumnTrained=Trained\r\ncolumnTotal=Total\r\ncolumnUnallocated=Unallocated"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/TabsSlots.properties",
    "content": "contractCharacter=Character Contracts\ncontractCorporation=Corporation Contracts\ncolumnOwner=Owner\ngrandTotal=Grand Total\nmanufacturing=Manufacturing\nmarketOrders=Market Orders\nreactions=Reactions\nresearch=Research\ntableHeader=View\ntableHeaderIcon=Compact view using icons\ntableHeaderText=Default view using text\ntitle=Slots\ncolumnManufacturingDone=Manufacturing Done\ncolumnManufacturingFree=Manufacturing Free\ncolumnManufacturingActive=Manufacturing Active\ncolumnManufacturingMax=Manufacturing Max\ncolumnResearchDone=Research Done\ncolumnResearchFree=Research Free\ncolumnResearchActive=Research Active\ncolumnResearchMax=Research Max\ncolumnReactionsDone=Reactions Done\ncolumnReactionsFree=Reactions Free\ncolumnReactionsActive=Reactions Active\ncolumnReactionsMax=Reactions Max\ncolumnMarketOrdersFree=Market Orders Free\ncolumnMarketOrdersActive=Market Orders Active\ncolumnMarketOrdersMax=Market Orders Max\ncolumnContractCharacterFree=Character Contracts Free\ncolumnContractCharacterActive=Character Contracts Active\ncolumnContractCharacterMax=Character Contracts Max\ncolumnContractCorporationFree=Corporation Contracts Free\ncolumnContractCorporationActive=Corporation Contracts Active\ncolumnContractCorporationMax=Corporation Contracts Max\ncolumnCurrentStation=Station\ncolumnCurrentSystem=System\ncolumnCurrentConstellation=Constellation\ncolumnCurrentRegion=Region\ncolumnCurrentShip=Ship"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/TabsStockpile.properties",
    "content": "addBlueprintMsg=Add Blueprints as:\naddBlueprintTitle=Add Blueprint Options\naddFormulaMsg=Add Formula as:\naddFormulaTitle=Add Formula Options\naddFilter=Add\naddItem=Add Item\naddLocation=Add Location\naddStockpileItem=Add Stockpile Item\naddStockpileTitle=Add Stockpile\naddToNewStockpile=Add to new stockpile...\naddToStockpile=Add To\nblueprintFacility=Facility\nblueprintMe=Blueprint ME\nblueprintRigs=Rigs\nblueprintSecurity=Security\nblueprintType=Blueprint Type\nblueprints=Blueprints\ncancel=Cancel\nclipboardStockpile=Copy to Clipboard\ncloneStockpile=Clone\ncloneStockpileFilter=Clone\ncloneStockpileTitle=Clone Stockpile\nclose=Close\ncollapse=Collapse\nconstellation=Constellation\ncontainer=Container\ncontainerIncludeSubs=Include Subs\ncontainerIncludeSubsToolTip=Include sub containers\ncopy=Blueprint Copy\ncountMinimum=Minimum Count\ncsv=CSV\ndelete=Delete\ndeleteItem=Delete Item\ndeleteItemTitle=Delete Item \ndeleteItems=Delete {0} items?\ndeleteStockpile=Delete\ndeleteStockpileTitle=Delete Stockpile\ndeleteStockpileMsg=Delete {0} Stockpiles\nduplicate=Duplicate\nedit=Edit\neditCell=Double click to edit\neditGroup=Edit Group\neditItem=Edit Item\neditStockpile=Edit\neditStockpileFilter=Edit\neditStockpileItem=Edit Stockpile Item\neditStockpileTitle=Edit Stockpile\nestimatedMarketValue=Estimated market value: \neveMultibuy=Eve Multibuy\neveUiOpen=Open\nexpand=Expand\nexportStockpilesXml=Stockpiles XML\nexportStockpilesText=Stockpiles Text\nfilters=Add Filter\nflag=Flag\nflagIncludeSubs=Include Subs\nflagIncludeSubsToolTip=Include sub containers\ngetShoppingList=Shopping List\ngroupAddEmpty=Group name can not be empty\ngroupAddExist=Group already exist.\\r\\nAdd to existing group?\ngroupAddName=Enter Group Name:\ngroupAddNew=Add to new group...\ngroupAddTitle=Add Group\ngroupCollapse=Collapse Groups\ngroupExpand=Expand Groups\ngroupMenu=Group\ngroupRenameExist=Group already exist\ngroupRenameTitle=Rename Group\ngroupShoppingListMsg=Include hidden stockpiles?\ngroupShoppingListTitle=Group Shopping List\ngroups=Groups\nhideStockpile=Hide\nimportButton=Import\nimportEveXml=Eve Xml Fit\nimportStockpilesText=Stockpiles Text\nimportText=Text Formats\nimportTextFailedMsg=Failed to import stockpile text\nimportXmlFailedMsg=Failed to load stockpile file\nimportStockpilesXml=Stockpiles XML\nimportOptionsAll=Use this action for all {0,choice,1#|1<({0}) }stockpiles\nimportFailedTitle=Import Failed\nimportOptions=Import Options\nimportOptionsAdd=Add\nimportOptionsAddHelp=Add to stockpile(s)\nimportOptionsKeep=Keep\nimportOptionsKeepHelp=Import unchanged\nimportOptionsMerge=Merge\nimportOptionsMergeHelp=Merge the stockpiles together\nimportOptionsNew=New\nimportOptionsNewHelp=Create new stockpile\nimportOptionsOverwrite=Overwrite\nimportOptionsOverwriteHelp=Replace the existing stockpile\nimportOptionsRename=Rename\nimportOptionsRenameHelp=Create new stockpile\nimportOptionsSkip=Skip\nimportOptionsSkipHelp=Do not import\nimportOptionsTemplate=Template\nimportOptionsTemplateHelp=New identical stockpiles\ninclude=Include\nincludeCount={0}/4\nincludeHelp=No include selected\nincludeAssets=Assets\nincludeAssetsTip=Owned assets (Assets)\nincludeJobs=Manufacturing\nincludeJobsTip=Items being manufactured/copied (Industry Jobs)\nincludeBuyOrders=Orders: Buying\nincludeBuyOrdersTip=Unfulfilled buy market orders (Market Orders)\nincludeSellOrders=Orders: Selling\nincludeSellOrdersTip=Unfulfilled sell market orders (Market Orders)\nincludeBuyTransactions=Orders: Bought\nincludeBuyTransactionsTip=Items bought via market orders - After the last asset update (Transactions)\nincludeSellTransactions=Orders: Sold\nincludeSellTransactionsTip=Items sold via market orders - After the last asset update (Transactions)\nincludeBuyingContracts=Contracts: Buying\nincludeBuyingContractsTip=Pending buy contracts (Contracts)\nincludeBoughtContracts=Contracts: Bought\nincludeBoughtContractsTip=Items bought via contracts - After the last asset update (Contracts)\nincludeSellingContracts=Contracts: Selling\nincludeSellingContractsTip=Pending sell contracts (Contracts)\nincludeSoldContracts=Contracts: Sold\nincludeSoldContractsTip=Items sold via contracts - After the last asset update (Contracts)\nitem=Item\nitems=Items\nitemsMissing=Items Missing\nitemsOwned=Items Owned\nitemsRequired=Items Required\nitemsShoppingList=Items:\njobsDays=Manufacturing Duration\njobsDaysLess=Days or less\njobsDaysMore=Days or more\njobsDaysTip=Manufacturing/copying completing in X days or less/more\njobsDaysWarning=Manufacturing not included\nlocation=Location\nmarketDetailsOwnerToolTip=The character that will be used for opening market details in the eve client (character have to be in-game)\nmatch=Matching\nmatchAll=Contains All\nmatchAllTip=Only include asset/contract that contains all the stockpile items\nmatchExclude=Exclude\nmatchInclude=Include\nmaterialsManufacturing=Manufacturing Materials\nmaterialsReaction=Reaction Materials\nme=ME\nmultiple=Multiple\nmultiplier=Multiplier\nmultiplierIgnore=Ignore stockpile/subpile multiplier\nmultiplierSign=\\u00d7\nmyLocations=Only show my locations\nname=Name\nneeded=Surplus: \nnewStockpile=New Stockpile\nnoLocationsFound=No locations found\nnone=None\nnothingNeeded=Nothing Needed\nnow=Stock: \nok=OK\noriginal=Blueprint Original\nowner=Owner\npercent=%\npercentFull=Multiplier Percent:\npercentIgnore=Hide Above:\nplanet=Planet\nregion=Region\nremove=Remove\nrenameStockpileTitle=Rename Stockpile\nruns=Blueprint Runs\nselectFits=Select Fits\nselectGroup=Select Group:\nselectStockpiles=Select Stockpiles\nshoppingList=Shopping List\nshowHidden=Show Hidden\nshowHide=Show/Hide\nshowStockpiles=Stockpiles\nshowSubpileTree=Show Subpile Tree\nshownValueNeeded=Total surplus value of shown items\nshownValueNow=Total stock value of shown items\nshownVolumeNeeded=Total surplus volume of shown items\nshownVolumeNow=Total stock volume of shown items\nsingleton=Singleton\nsource=Source\nspreadsheet=Spreadsheet\nstation=Station\nstockpile=Stockpile\nstockpileAvailable=Available:\nstockpileLocation=Location:\nstockpileOwner=Owner:\nstockpileShoppingList=Stockpiles\nsubpileShoppingList=Subpiles: \nsubpiles=Subpiles\nsystem=System\ntotalStockpile=Total\ntotalToHaul=Total m3 to be hauled: \nuniverse=Universe\ncolumnName=Name\ncolumnGroup=Group\ncolumnCategory=Category\ncolumnSlot=Slot Type\ncolumnChargeSize=Charge Size\ncolumnMeta=Meta\ncolumnEveUi=Market Details\ncolumnEveUiToolTip=<html>1. Open market details in the eve client (character have to be in-game)<br>2. Focus the characters eve client</html>\ncolumnCountNow=Total Stock\ncolumnCountNowInventory=Assets\ncolumnCountNowBuyOrders=Buy Orders\ncolumnCountNowBuyTransactions=Buy Transactions\ncolumnCountNowSellOrders=Sell Orders\ncolumnCountNowSellTransactions=Sell Transactions\ncolumnCountNowJobs=Industry Jobs\ncolumnCountNowBuyingContracts=Buying Contracts\ncolumnCountNowBoughtContracts=Bought Contracts\ncolumnCountNowSellingContracts=Selling Contracts\ncolumnCountNowSoldContracts=Sold Contracts\ncolumnCountNeeded=Surplus\ncolumnCountMinimum=Target\ncolumnCountMinimumMultiplied=Target \\u00d7\ncolumnPercentNeeded=Surplus %\ncolumnPrice=Price\ncolumnPriceToolTip=Default price from the market price API (Options > Options... > Market Prices)\ncolumnPriceSellMin=Sell Min\ncolumnPriceSellMinToolTip=Minimum sell price from the market price API\ncolumnPriceBuyMax=Buy Max\ncolumnPriceBuyMaxToolTip=Maximum buy price from the market price API\ncolumnPriceTransactionAverage=Avg Transaction\ncolumnPriceTransactionAverageToolTip=Average transaction price (bought and sold)\ncolumnTags=Tags\ncolumnValueNow=Stock Value\ncolumnValueNeeded=Surplus Value\ncolumnVolumeNow=Stock Volume\ncolumnVolumeNeeded=Surplus Volume\ngetFilterStockpileName=[Stockpile] Name\ngetFilterStockpileOwner=[Stockpile] Owner\ngetFilterStockpileLocation=[Stockpile] Location\ngetFilterStockpileFlag=[Stockpile] Flag\ngetFilterStockpileContainer=[Stockpile] Container"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/TabsTracker.properties",
    "content": "all=All\nallProfiles=All Profiles\nassets=Assets\nassetsFilters=Assets Filters\ncancel=Cancel\ncharacterWallet=Character Wallet\ncheckAllLocationsMsg=Due to a bug some tracker locations may have been unchecked\\r\\n\\\n\\r\\n\\\nPress OK to include all locations\\r\\n\\\nPress Cancel to manually check the locations are set correct\\r\\n\\\n\\r\\n\ncheckAllLocationsTitle=Tracker Locations\nclear=Clear\ncontractCollateral=Contract Collateral\ncontractValue=Contracts\ncharacterCorporations=Character Corporations\ncorporationWallet=Corporation Wallet\ndate=Date\nday1=1 Day\ndelete=Delete\ndeleteSelected=Delete selected tracker data point?\\n\\\n\\n\\\nWarning:\\n\\\n- The data can not be restored once deleted.\\n\\\n- This will delete the entire data point (Total, Asset, Wallet Balance, etc.)\\n\\\n\\n\ndivision=Division {0}\nedit=Edit\nempty=Empty\nenterNewValue=Enter new value\nerror=Error\nescrows=Escrows\nescrowsToCover=Escrows To Cover\nfilterTitle=Tracker Filter\nfrom=From\ngrandTotal=Grand Total\nhelp=Double click the chart to edit values\nhelpBugData=Bugged\nhelpBugDataToolTip=Assets in containers not assigned to correct corporation hangar division\nhelpLegacyData=Legacy\nhelpLegacyDataToolTip=Legacy data is not filterable\nhelpNewData=OK\nhelpNewDataToolTip=No known bugs\nimplants=Implants\nimportFile=Import file...\nimportFileImport=Importing...\nimportFileInvalidMsg=Not a valid tracker data file\nimportFileOptionsKeep=Merge: On duplicates use existing data\nimportFileOptionsMsg=Warning: This action can not be undone!\\n\\\n\\n\\\nSelect how to import:\nimportFileOptionsOverwrite=Merge: On duplicates use imported data\nimportFileOptionsReplace=Delete: Delete all exisitng data and replaced with imported data\nimportFileTitle=Tracker Import\nincludeZero=Always include zero\ninvalid=Invalid input\ninvalidNumberMsg=Not a valid number, try again...\ninvalidNumberTitle=Invalid Input\nknownLocations=Known Locations\nmanufacturing=Manufacturing\nmonth1=1 Month\nmonths3=3 Months\nmonths6=6 Months\nnewSelected=Add new locations selected\nnoDataFound=No data found\nnote=Note\nnotesAdd=Add Note\nnotesDeleteMsg=Delete note:\\r\\n{0}\nnotesDeleteTitle=Delete Note\nnotesEditMsg=Enter Note:\nnotesEditTitle=Edit Note\nok=OK\nother=Other\nquickDate=Quick Date...\nreset=Reset\nsearch=Search\nscaleLinear=Linear\nscaleLogarithmic=Logarithmic\nselectDivision=Select Division\nselectFlag=Select Flag\nselectLocation=Select Location\nselectOwner=Select Owner\nselectionDate=Date of selected tracker point\nselectionIsk=Total value of selected tracker point\nselectionNote=Note\nselectionShortDate=Date\nselectionShortIsk=Value\nselectionShortNote=Note\nsellOrders=Sell Orders\nshow=Show\nskillPointFilters=Skill Point Filters\nskillPointValue=Skill Points\nskillPoints=Skill Points (SP)\nstatusAssets=Assets value change from start to end date\nstatusBalance=ISK balance change from start to end date\nstatusContractCollateral=Contract collateral change from start to end date\nstatusContractValue=Contract value change from start to end date\nstatusEscrows=Escrows change from start to end date\nstatusEscrowsToCover=Escrows to cover change from start to end date\nstatusImplants=Implants value change from start to end date\nstatusManufacturing=Manufacturing change from start to end date\nstatusSellOrders=Sell orders change from start to end date\nstatusSkillPointValue=Value of skill points change from start to end date\nstatusTotal=Total change from start to end date\ntitle=Tracker\nto=To\ntotal=Total\nunknownLocations=Unknown Locations\nwalletBalance=Wallet Balance\nwalletBalanceFilters=Wallet Filters\nweek1=1 Week\nweek2=2 Weeks\nyear1=1 Year\nyears2=2 Years\n\ncolumnShow=Include\ncolumnName=Name\ncolumnMinimum=SP Include Threshold [Editable]"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/TabsTransaction.properties",
    "content": "#\n#Sat Nov 27 14:46:33 CET 2010\n\nbothAvg=Average buy and sell price\nbothCount=Total items bought and sold\nbothTitle=Buy and sell\nbothTotal=Total bought and sold\nbuy=Buy\nbuyAvg=Average buy price\nbuyCount=Total items bought\nbuyTitle=Buy\nbuyTotal=Total bought\nclearNew=Clear New\ncorporation=Corporation\npersonal=Personal\nsell=Sell\nsellAvg=Average sell price\nsellCount=Total items sold\nsellTitle=Sell\nsellTotal=Total sold\ntitle=Transactions\ncolumnTransactionType=Type\ncolumnName=Name\ncolumnGroup=Group\ncolumnCategory=Category\ncolumnQuantity=Quantity\ncolumnPrice=Price\ncolumnTax=Tax\ncolumnClientName=Client\ncolumnStationName=Station\ncolumnSystem=System\ncolumnConstellation=Constellation\ncolumnRegion=Region\ncolumnTags=Tags\ncolumnTransactionPrice=Transaction Price\ncolumnTransactionPriceToolTip=Opposite Price (include tax)\ncolumnTransactionMargin=Transaction Margin\ncolumnTransactionMarginToolTip=Transaction Price + Margin set in Options > Options... > General > Margin (include tax)\ncolumnTransactionProfitDifference=Transaction Profit +\ncolumnTransactionProfitDifferenceToolTip=Profit per item (include tax)\ncolumnTransactionProfitPercent=Transaction Profit %\ncolumnTransactionProfitPercentToolTip=Profit percent (include tax)\ncolumnTransactionFor=For\ncolumnValue=Value\ncolumnTransactionDate=Date\ncolumnOwner=Owner\ncolumnLocation=Location\ncolumnAccountKey=Wallet Division\ncolumnAdded=Added\ncolumnAddedToolTip=The date this transaction was first seen\ncolumnVolume=Volume\ncolumnTransactionID=Transaction ID"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/TabsTree.properties",
    "content": "categories=Categories\ncollapse=Collapse\nexpand=Expand\nlocationAssetSafety=Asset Safety\nlocationClones=Clones\nlocationContracts=Contracts\nlocationDeliveries=Deliveries\nlocationItemHangar=Item Hangar\nlocationMarketOrders=Market Orders\nlocationShipHangar=Ship Hangar\nlocations=Locations\ntitle=Tree\n"
  },
  {
    "path": "src/main/resources/net/nikr/eve/jeveasset/i18n/TabsValues.properties",
    "content": "#\r\n#Sat Nov 27 15:48:46 CET 2010\r\ncolumnAssets=Assets\r\ncolumnBestAsset=Best Asset\r\ncolumnBestModule=Best Module\r\ncolumnBestShip=Best Ship\r\ncolumnBestShipFitted=Best Ship with Fit\r\ncolumnContractCollateral=Contract Collateral\r\ncolumnContractValue=Contracts\r\ncolumnEscrows=Escrows\r\ncolumnEscrowsToCover=Escrows (To Cover)\r\ncolumnManufacturing=Manufacturing\r\ncolumnOwner=Owner\r\ncolumnSellOrders=Sell Orders\r\ncolumnSkillPointValue=Skill Points\r\ncolumnTotal=Total\r\ncolumnWalletBalance=Wallet Balance\r\ncolumnWalletDivision1=Division 1\r\ncolumnWalletDivision2=Division 2\r\ncolumnWalletDivision3=Division 3\r\ncolumnWalletDivision4=Division 4\r\ncolumnWalletDivision5=Division 5\r\ncolumnWalletDivision6=Division 6\r\ncolumnWalletDivision7=Division 7\r\ncolumnCurrentStation=Station\r\ncolumnCurrentSystem=System\r\ncolumnCurrentConstellation=Constellation\r\ncolumnCurrentRegion=Region\r\ncolumnCurrentShip=Ship\r\ngrandTotal=Grand Total\r\nnone=none\r\nempty=\r\ntitle=Isk\r\nskillPointFilters=Skill Point Filters\r\n\r\noldTitle=Values\r\noldNoCharacter=No character found\r\noldNoCorporation=No corporation found\r\n"
  },
  {
    "path": "src/site/site.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\r\n\r\n<project name=\"Maven\" xmlns=\"http://maven.apache.org/DECORATION/1.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n  xsi:schemaLocation=\"http://maven.apache.org/DECORATION/1.0.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd\">\r\n\r\n<body>\r\n\t<menu ref=\"modules\" />\r\n\t<menu ref=\"reports\" />\r\n</body>\r\n\r\n<skin>\r\n\t<groupId>org.apache.maven.skins</groupId>\r\n\t<artifactId>maven-fluido-skin</artifactId>\r\n\t<version>1.2.1</version>\r\n</skin>\r\n\r\n</project>"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/ProgramTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset;\r\n\r\nimport org.junit.Test;\r\nimport static org.junit.Assert.*;\r\n\r\n\r\npublic class ProgramTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void isDevBuild() {\r\n\t\tassertFalse(\"Program.PROGRAM_DEV_BUILD = true (not allowed to be committed)\", Program.isDevBuild());\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/TestUtil.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset;\r\n\r\nimport ch.qos.logback.classic.Level;\r\nimport java.io.File;\r\nimport net.nikr.eve.jeveasset.data.profile.Profile;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\r\nimport org.junit.AfterClass;\r\nimport org.junit.BeforeClass;\r\n\r\n\r\npublic class TestUtil {\r\n\r\n\t@BeforeClass\r\n\tpublic static void initLog() {\r\n\t\tMain.setLogLocation(true);\r\n\t\tCliOptions.get().setPortable(true);\r\n\t\tFileUtil.enableTestPath();\r\n\t\tSystem.setProperty(\"http.agent\", Program.PROGRAM_USER_AGENT);\r\n\t\tSettings.setTestMode(true);\r\n\t}\r\n\r\n\t@AfterClass\r\n\tpublic static void cleanup() {\r\n\t\tProfile profile = new Profile();\r\n\t\tdeleteProfileFilename(profile.getSQLiteFilename());\r\n\t\tdeleteProfileFilename(profile.getBackupSQLiteFilename());\r\n\t\tdeleteProfileFilename(FileUtil.getPathAssetAdded());\r\n\t\tdeleteProfileFilename(FileUtil.getPathStockpileIDsDatabase());\r\n\t\tdeleteProfileFilename(FileUtil.getPathTrackerData());\r\n\t}\r\n\r\n\tprotected static void setLoggingLevel(Level level) {\r\n\t\tch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) org.slf4j.LoggerFactory.getLogger(ch.qos.logback.classic.Logger.ROOT_LOGGER_NAME);\r\n\t\troot.setLevel(level);\r\n\t}\r\n\r\n\tprivate static void deleteProfileFilename(String filename) {\r\n\t\tFile file = new File(filename);\r\n\t\tif (file.exists() && !file.delete()) {\r\n\t\t\tthrow new RuntimeException(\"Failed to delete:\" + filename);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/data/profile/StockpileIDsTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.profile;\r\n\r\nimport java.io.File;\r\nimport java.util.ArrayList;\r\nimport java.util.Collections;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile;\r\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\r\nimport org.junit.AfterClass;\r\nimport static org.junit.Assert.assertEquals;\r\nimport static org.junit.Assert.assertFalse;\r\nimport static org.junit.Assert.assertTrue;\r\nimport org.junit.BeforeClass;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class StockpileIDsTest extends TestUtil {\r\n\r\n\tprivate static final String TABLE_1 = \"test_table_1\";\r\n\tprivate static final String TABLE_2 = \"test_table_2\";\r\n\tprivate static final long VALUE = 1234L;\r\n\tprivate static final Set<Long> VALUES = Collections.singleton(VALUE);\r\n\t//Database file\r\n\tprivate static StockpileIDs stockpileIDs;\r\n\r\n\t@BeforeClass\r\n\tpublic static void before() {\r\n\t\tstockpileIDs = new StockpileIDs(TABLE_1, true);\r\n\t}\r\n\r\n\t@AfterClass\r\n\tpublic static void after() {\r\n\t\tnew File(FileUtil.getPathStockpileIDsDatabase()).delete();\r\n\t\tstockpileIDs.removeTable();\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testSetConnectionUrl() { }\r\n\r\n\t@Test\r\n\tpublic void testLoad() { }\r\n\r\n\t@Test\r\n\tpublic void testTableExist() { }\r\n\r\n\t@Test\r\n\tpublic void testRemoveTable() { }\r\n\r\n\t@Test\r\n\tpublic void testGetHidden() {\r\n\t\tassertEquals(0, stockpileIDs.getHidden().size());\r\n\t\tassertTrue(stockpileIDs.getHidden().isEmpty());\r\n\t\tstockpileIDs.hide(VALUE);\r\n\t\tassertEquals(1, stockpileIDs.getHidden().size());\r\n\r\n\t\t//Cleanup\r\n\t\tstockpileIDs.show(VALUE);\r\n\t\tassertEquals(0, stockpileIDs.getHidden().size());\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testIsHidden() {\r\n\t\tassertEquals(0, stockpileIDs.getHidden().size());\r\n\t\tassertFalse(stockpileIDs.isHidden(VALUE));\r\n\t\tstockpileIDs.hide(VALUE);\r\n\t\tassertTrue(stockpileIDs.isHidden(VALUE));\r\n\r\n\t\t//Cleanup\r\n\t\tstockpileIDs.show(VALUE);\r\n\t\tassertEquals(0, stockpileIDs.getHidden().size());\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testIsShown() {\r\n\t\tassertEquals(0, stockpileIDs.getHidden().size());\r\n\t\tassertTrue(stockpileIDs.isShown(VALUE));\r\n\t\tstockpileIDs.hide(VALUE);\r\n\t\tassertFalse(stockpileIDs.isShown(VALUE));\r\n\r\n\t\t//Cleanup\r\n\t\tstockpileIDs.show(VALUE);\r\n\t\tassertEquals(0, stockpileIDs.getHidden().size());\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testSetHidden() {\r\n\t\tassertEquals(0, stockpileIDs.getHidden().size());\r\n\t\tstockpileIDs.setHidden(VALUES);\r\n\t\tassertTrue(stockpileIDs.isHidden(VALUE));\r\n\t\tassertEquals(1, stockpileIDs.getHidden().size());\r\n\t\tstockpileIDs.setHidden(VALUES);\r\n\t\tassertTrue(stockpileIDs.isHidden(VALUE));\r\n\t\tassertEquals(1, stockpileIDs.getHidden().size());\r\n\r\n\t\t//Cleanup\r\n\t\tstockpileIDs.show(VALUE);\r\n\t\tassertEquals(0, stockpileIDs.getHidden().size());\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testHide() {\r\n\t\tassertEquals(0, stockpileIDs.getHidden().size());\r\n\t\tstockpileIDs.hide(VALUE);\r\n\t\tassertTrue(stockpileIDs.isHidden(VALUE));\r\n\t\tassertEquals(1, stockpileIDs.getHidden().size());\r\n\t\tstockpileIDs.hide(VALUE);\r\n\t\tassertTrue(stockpileIDs.isHidden(VALUE));\r\n\t\tassertEquals(1, stockpileIDs.getHidden().size());\r\n\r\n\t\t//Cleanup\r\n\t\tstockpileIDs.show(VALUE);\r\n\t\tassertEquals(0, stockpileIDs.getHidden().size());\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testSetShown() {\r\n\t\tassertEquals(0, stockpileIDs.getHidden().size());\r\n\t\tstockpileIDs.hide(VALUE);\r\n\t\tassertTrue(stockpileIDs.isHidden(VALUE));\r\n\t\tstockpileIDs.setNewDatabase(true);\r\n\t\tstockpileIDs.setShown(VALUES, Collections.singletonList(new Stockpile(\"some name\", VALUE, new ArrayList<>(), 1.0, false)));\r\n\t\tstockpileIDs.setNewDatabase(false);\r\n\t\tassertFalse(stockpileIDs.isHidden(VALUE));\r\n\t\tassertEquals(0, stockpileIDs.getHidden().size());\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testShow() {\r\n\t\tassertEquals(0, stockpileIDs.getHidden().size());\r\n\t\tstockpileIDs.hide(VALUE);\r\n\t\tassertTrue(stockpileIDs.isHidden(VALUE));\r\n\t\tassertEquals(1, stockpileIDs.getHidden().size());\r\n\t\tstockpileIDs.show(VALUE);\r\n\t\tassertFalse(stockpileIDs.isHidden(VALUE));\r\n\t\tassertEquals(0, stockpileIDs.getHidden().size());\r\n\t\tstockpileIDs.show(VALUE);\r\n\t\tassertFalse(stockpileIDs.isHidden(VALUE));\r\n\t\tassertEquals(0, stockpileIDs.getHidden().size());\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testRenameTable() {\r\n\t\tassertEquals(0, stockpileIDs.getHidden().size());\r\n\t\tstockpileIDs.hide(VALUE);\r\n\t\tstockpileIDs.renameTable(TABLE_2);\r\n\t\tassertTrue(stockpileIDs.isHidden(VALUE));\r\n\r\n\t\t//Cleanup\r\n\t\tstockpileIDs.renameTable(TABLE_1);\r\n\t\tassertTrue(stockpileIDs.isHidden(VALUE));\r\n\t\tstockpileIDs.show(VALUE);\r\n\t\tassertFalse(stockpileIDs.isHidden(VALUE));\r\n\t\tassertEquals(0, stockpileIDs.getHidden().size());\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/data/raw/LocationFlagTest.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.data.raw;\n\nimport net.nikr.eve.jeveasset.TestUtil;\nimport net.nikr.eve.jeveasset.io.shared.RawConverter.LocationFlag;\nimport net.troja.eve.esi.model.CharacterAssetsResponse;\nimport net.troja.eve.esi.model.CharacterBlueprintsResponse;\nimport net.troja.eve.esi.model.CorporationAssetsResponse;\nimport net.troja.eve.esi.model.CorporationBlueprintsResponse;\nimport org.junit.Test;\n\n\npublic class LocationFlagTest extends TestUtil {\n\n\t@Test\n\tpublic void locationFlagTest() {\n\t\tRawUtil.compare(LocationFlag.values(),\n\t\t\t\tCharacterBlueprintsResponse.LocationFlagEnum.values(),\n\t\t\t\tCorporationBlueprintsResponse.LocationFlagEnum.values(),\n\t\t\t\tCharacterAssetsResponse.LocationFlagEnum.values(),\n\t\t\t\tCorporationAssetsResponse.LocationFlagEnum.values());\n\t}\n\n}\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/data/raw/RawAssetTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.raw;\r\n\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawAsset;\r\nimport net.troja.eve.esi.model.CharacterAssetsResponse;\r\nimport net.troja.eve.esi.model.CorporationAssetsResponse;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class RawAssetTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void rawAssetTest() {\r\n\t\tRawUtil.compare(RawAsset.class, CharacterAssetsResponse.class);\r\n\t\tRawUtil.compare(RawAsset.class, CorporationAssetsResponse.class);\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/data/raw/RawBlueprintTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.raw;\r\n\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawBlueprint;\r\nimport net.troja.eve.esi.model.CharacterBlueprintsResponse;\r\nimport net.troja.eve.esi.model.CorporationBlueprintsResponse;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class RawBlueprintTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void rawBlueprintTest() {\r\n\t\tRawUtil.compare(RawBlueprint.class, CharacterBlueprintsResponse.class);\r\n\t\tRawUtil.compare(RawBlueprint.class, CorporationBlueprintsResponse.class);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/data/raw/RawCloneTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.raw;\r\n\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawClone;\r\nimport net.troja.eve.esi.model.JumpClone;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class RawCloneTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void rawCloneTest() {\r\n\t\tRawUtil.compare(RawClone.class, JumpClone.class);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/data/raw/RawContractItemTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.raw;\r\n\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawContractItem;\r\nimport net.troja.eve.esi.model.ContractItemsResponse;\r\nimport net.troja.eve.esi.model.PublicContractsItemsResponse;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class RawContractItemTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void rawContractItemTest() {\r\n\t\tRawUtil.compare(RawContractItem.class, ContractItemsResponse.class);\r\n\t\tRawUtil.compare(RawContractItem.class, PublicContractsItemsResponse.class);\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/data/raw/RawContractTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.raw;\r\n\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawContract;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawContract.ContractAvailability;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawContract.ContractStatus;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawContract.ContractType;\r\nimport net.troja.eve.esi.model.CharacterContractsResponse;\r\nimport net.troja.eve.esi.model.CorporationContractsResponse;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class RawContractTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void rawContractTest() {\r\n\t\tRawUtil.compare(RawContract.class, CharacterContractsResponse.class);\r\n\t\tRawUtil.compare(ContractAvailability.values(), CharacterContractsResponse.AvailabilityEnum.values());\r\n\t\tRawUtil.compare(ContractStatus.values(), CharacterContractsResponse.StatusEnum.values());\r\n\t\tRawUtil.compare(ContractType.values(), CharacterContractsResponse.TypeEnum.values());\r\n\t\tRawUtil.compare(RawContract.class, CorporationContractsResponse.class);\r\n\t\tRawUtil.compare(ContractAvailability.values(), CorporationContractsResponse.AvailabilityEnum.values());\r\n\t\tRawUtil.compare(ContractStatus.values(), CorporationContractsResponse.StatusEnum.values());\r\n\t\tRawUtil.compare(ContractType.values(), CorporationContractsResponse.TypeEnum.values());\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/data/raw/RawIndustryJobTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.raw;\r\n\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawIndustryJob;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawIndustryJob.IndustryJobStatus;\r\nimport net.troja.eve.esi.model.CharacterIndustryJobsResponse;\r\nimport net.troja.eve.esi.model.CorporationIndustryJobsResponse;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class RawIndustryJobTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void rawIndustryJobTest() {\r\n\t\tRawUtil.compare(RawIndustryJob.class, CharacterIndustryJobsResponse.class);\r\n\t\tRawUtil.compare(IndustryJobStatus.values(), CharacterIndustryJobsResponse.StatusEnum.values());\r\n\t\tRawUtil.compare(RawIndustryJob.class, CorporationIndustryJobsResponse.class);\r\n\t\tRawUtil.compare(IndustryJobStatus.values(), CorporationIndustryJobsResponse.StatusEnum.values());\r\n\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/data/raw/RawJournalTest.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.data.raw;\n\n\nimport net.nikr.eve.jeveasset.TestUtil;\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournal;\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournal.ContextType;\nimport net.troja.eve.esi.model.CharacterWalletJournalResponse;\nimport net.troja.eve.esi.model.CorporationWalletJournalResponse;\nimport org.junit.Test;\n\n\npublic class RawJournalTest extends TestUtil {\n\n\n\t@Test\n\tpublic void rawJournalTest() {\n\t\tRawUtil.compare(RawJournal.class, CharacterWalletJournalResponse.class);\n\t\tRawUtil.compare(RawJournal.class, CorporationWalletJournalResponse.class);\n\t\tRawUtil.compare(ContextType.values(), CharacterWalletJournalResponse.ContextIdTypeEnum.values(), CorporationWalletJournalResponse.ContextIdTypeEnum.values());\n\t}\n}\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/data/raw/RawLoyaltyPointsTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.raw;\r\n\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawLoyaltyPoints;\r\nimport net.troja.eve.esi.model.CharacterLoyaltyPointsResponse;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class RawLoyaltyPointsTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void rawLoyaltyPointsTest() {\r\n\t\tRawUtil.compare(RawLoyaltyPoints.class, CharacterLoyaltyPointsResponse.class);\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/data/raw/RawMarketOrderTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.raw;\r\n\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder.MarketOrderRange;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder.MarketOrderState;\r\nimport net.troja.eve.esi.model.CharacterOrdersHistoryResponse;\r\nimport net.troja.eve.esi.model.CharacterOrdersResponse;\r\nimport net.troja.eve.esi.model.CorporationOrdersHistoryResponse;\r\nimport net.troja.eve.esi.model.CorporationOrdersResponse;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class RawMarketOrderTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void rawMarketOrderTest() {\r\n\t\tRawUtil.compare(RawMarketOrder.class, CharacterOrdersResponse.class);\r\n\t\tRawUtil.compare(RawMarketOrder.class, CharacterOrdersHistoryResponse.class);\r\n\t\tRawUtil.compare(RawMarketOrder.class, CorporationOrdersResponse.class);\r\n\t\tRawUtil.compare(RawMarketOrder.class, CorporationOrdersHistoryResponse.class);\r\n\t\tRawUtil.compare(MarketOrderRange.values(), CharacterOrdersResponse.RangeEnum.values(),\r\n\t\t\t\tCharacterOrdersHistoryResponse.RangeEnum.values(),\r\n\t\t\t\tCorporationOrdersResponse.RangeEnum.values(),\r\n\t\t\t\tCorporationOrdersHistoryResponse.RangeEnum.values());\r\n\t\tRawUtil.compare(MarketOrderState.values(),\r\n\t\t\t\tCharacterOrdersHistoryResponse.StateEnum.values(),\r\n\t\t\t\tCorporationOrdersHistoryResponse.StateEnum.values());\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/data/raw/RawNpcStandingTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.raw;\r\n\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawNpcStanding;\r\nimport net.troja.eve.esi.model.StandingsResponse;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class RawNpcStandingTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void rawNpcStandingTest() {\r\n\t\tRawUtil.compare(RawNpcStanding.class, StandingsResponse.class);\r\n\t\tRawUtil.compare(RawNpcStanding.FromType.values(), StandingsResponse.FromTypeEnum.values());\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/data/raw/RawPublicMarketOrderTest.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.data.raw;\n\nimport net.nikr.eve.jeveasset.TestUtil;\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder.MarketOrderRange;\nimport net.nikr.eve.jeveasset.data.api.raw.RawPublicMarketOrder;\nimport net.troja.eve.esi.model.MarketRegionOrdersResponse;\nimport net.troja.eve.esi.model.MarketStructureResponse;\nimport org.junit.Test;\n\n\npublic class RawPublicMarketOrderTest extends TestUtil {\n\n\t@Test\n\tpublic void rawPublicMarketOrderTest() {\n\t\tRawUtil.compare(RawPublicMarketOrder.class, MarketRegionOrdersResponse.class);\n\t\tRawUtil.compare(RawPublicMarketOrder.class, MarketStructureResponse.class);\n\t\tRawUtil.compare(MarketOrderRange.values(),\n\t\t\t\tMarketRegionOrdersResponse.RangeEnum.values(),\n\t\t\t\tMarketStructureResponse.RangeEnum.values());\n\t}\n\n}\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/data/raw/RawSkillTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.raw;\r\n\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawSkill;\r\nimport net.troja.eve.esi.model.Skill;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class RawSkillTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void rawSkillTest() {\r\n\t\tRawUtil.compare(RawSkill.class, Skill.class);\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/data/raw/RawTransactionTest.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.data.raw;\n\nimport net.nikr.eve.jeveasset.TestUtil;\nimport net.nikr.eve.jeveasset.data.api.raw.RawTransaction;\nimport net.troja.eve.esi.model.CharacterWalletTransactionsResponse;\nimport net.troja.eve.esi.model.CorporationWalletTransactionsResponse;\nimport org.junit.Test;\n\n\npublic class RawTransactionTest extends TestUtil {\n\n\t@Test\n\tpublic void rawTransactionTest() {\n\t\tRawUtil.compare(RawTransaction.class, CharacterWalletTransactionsResponse.class);\n\t\tRawUtil.compare(RawTransaction.class, CorporationWalletTransactionsResponse.class);\n\t}\n\n}\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/data/raw/RawUtil.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.raw;\r\n\r\nimport java.lang.reflect.Field;\r\nimport java.lang.reflect.Modifier;\r\nimport java.time.OffsetDateTime;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawAsset;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawBlueprint;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawClone;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawContract.ContractStatus;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawContractItem;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawIndustryJob;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawIndustryJob.IndustryJobStatus;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournal;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder.MarketOrderState;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawPublicMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawTransaction;\r\nimport static org.junit.Assert.assertEquals;\r\nimport static org.junit.Assert.fail;\r\n\r\n\r\npublic class RawUtil {\r\n\r\n\tpublic static void compare(Class<?> raw, Class<?> esi) {\r\n\t\tcompare(getNames(raw, raw.getDeclaredFields()), getNames(raw, esi.getDeclaredFields()));\r\n\t\tcompareTypes(getTypes(raw, raw.getDeclaredFields()), getTypes(raw, esi.getDeclaredFields()));\r\n\t}\r\n\r\n\tpublic static void compare(Enum<?>[] raw, Enum<?>[] esi) {\r\n\t\tcompare(getNames(raw), getNames(esi));\r\n\t}\r\n\r\n\tpublic static void compare(Enum<?>[] raw, Enum<?>[] ... esi) {\r\n\t\tcompare(getNames(raw), getNames(esi));\r\n\t}\r\n\r\n\tprivate static Map<String, String> getTypes(Class<?> raw, Field[] values) {\r\n\t\tMap<String, String> names = new HashMap<>();\r\n\t\tfor (Field value : values) {\r\n\t\t\tif (Modifier.isStatic(value.getModifiers())) { //Ignore static fields\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tClass<?> type = value.getType();\r\n\t\t\tif (ignore(value, raw)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (type.isEnum()) { //Ignore enums\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (type.equals(Date.class)) { //Ignore date formats\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (type.equals(OffsetDateTime.class)) { //Ignore date formats\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tnames.put(value.getName(), type.getName());\r\n\t\t}\r\n\t\treturn names;\r\n\t}\r\n\r\n\tprivate static Set<String> getNames(Class<?> raw, Field[] values) {\r\n\t\tSet<String> names = new HashSet<>();\r\n\t\tfor (Field value : values) {\r\n\t\t\tif (Modifier.isStatic(value.getModifiers())) { //Ignore static fields\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (ignore(value, raw)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tnames.add(value.getName());\r\n\t\t}\r\n\t\treturn names;\r\n\t}\r\n\r\n\tprivate static boolean ignore(Field value, Class<?> raw) {\r\n\t\tif (value.getName().equals(\"itemFlag\") && (raw.equals(RawAsset.class) || raw.equals(RawBlueprint.class) || raw.equals(RawClone.class))) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"locationFlagEnum\") && (raw.equals(RawAsset.class) || raw.equals(RawBlueprint.class))) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"locationType\") && (raw.equals(RawAsset.class))) { //Not used be jEveAssets\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"locationTypeEnum\") && (raw.equals(RawAsset.class)) || raw.equals(RawClone.class)) { //Not used be jEveAssets\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"isBlueprintCopy\") && raw.equals(RawAsset.class)) { //Converted to quantity\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"itemId\") && raw.equals(RawContractItem.class)) { //Only in public endpoint\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"runs\") && raw.equals(RawContractItem.class)) { //Only in public endpoint\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"materialEfficiency\") && raw.equals(RawContractItem.class)) { //Only in public endpoint\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"timeEfficiency\") && raw.equals(RawContractItem.class)) { //Only in public endpoint\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"isBlueprintCopy\") && raw.equals(RawContractItem.class)) { //Only in public endpoint\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"isSingleton\") && raw.equals(RawContractItem.class)) { //Only in corp/char endpoints (not working, though)\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"rawQuantity\") && raw.equals(RawContractItem.class)) { //Only in corp/char endpoints (not working, though)\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"accountKey\") && (raw.equals(RawTransaction.class) || raw.equals(RawJournal.class))) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"isPersonal\") && raw.equals(RawTransaction.class)) { //Only in character endpoint\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"stationId\") && raw.equals(RawIndustryJob.class)) { //stationId in character endpoint / locationId in corporation endpoint\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"locationId\") && raw.equals(RawIndustryJob.class)) { //stationId in character endpoint / locationId in corporation endpoint\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"accountId\") && raw.equals(RawMarketOrder.class)) { //accountId in character endpoint / walletDivision in corporation endpoint\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"walletDivision\") && raw.equals(RawMarketOrder.class)) { //accountId in character endpoint / walletDivision in corporation endpoint\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"issuedBy\") && raw.equals(RawMarketOrder.class)) { //Only in corporation endpoint\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"state\") && raw.equals(RawMarketOrder.class)) { //Only in history endpoints\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"stateEnum\") && raw.equals(RawMarketOrder.class)) { //Only in history endpoints\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"isCorp\") && raw.equals(RawMarketOrder.class)) { //Only in character endpoint\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"isCorporation\") && raw.equals(RawMarketOrder.class)) { //Only in character endpoint\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"changes\") && raw.equals(RawMarketOrder.class)) { //jEveAssets value\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"changed\") && raw.equals(RawMarketOrder.class)) { //jEveAssets value\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"updateChanged\") && raw.equals(RawMarketOrder.class)) { //jEveAssets value\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (value.getName().equals(\"systemId\") && raw.equals(RawPublicMarketOrder.class)) { //Only in RawPublicMarketOrder\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate static Set<String> getNames(Enum<?>[] ... values) {\r\n\t\tSet<String> names = new HashSet<>();\r\n\t\tfor (Enum<?>[] value : values) {\r\n\t\t\tfor (Enum<?> e : value) {\r\n\t\t\t\tif (e.equals(MarketOrderState.UNKNOWN)) { //jEveAssets value\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tif (e.equals(MarketOrderState.OPEN)) { //jEveAssets value\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tif (e.equals(MarketOrderState.CLOSED)) { //Only in XML\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tif (e.equals(MarketOrderState.CHARACTER_DELETED)) { //Only in XML\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tif (e.equals(MarketOrderState.PENDING)) { //Only in XML\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tif (e.equals(IndustryJobStatus.ARCHIVED)) { //jEveAssets value\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tif (e.equals(ContractStatus.ARCHIVED)) { //jEveAssets value\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tnames.add(e.name());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn names;\r\n\t}\r\n\r\n\tprivate static void compare(Set<String> raw, Set<String> esi) {\r\n\t\tfor (String name : raw) {\r\n\t\t\tif (!esi.contains(name)) {\r\n\t\t\t\tfail(name+ \" removed from esi\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (String name : esi) {\r\n\t\t\tif (!raw.contains(name)) {\r\n\t\t\t\tfail(name+ \" missing from raw\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static void compareTypes(Map<String, String> raw, Map<String, String> esi) {\r\n\t\tassertEquals(esi.size(), raw.size());\r\n\t\tfor (Map.Entry<String, String> entry : raw.entrySet()) {\r\n\t\t\tString rawType = entry.getValue();\r\n\t\t\tString esiType = esi.get(entry.getKey());\r\n\t\t\tif (isUnsafe32bit(entry.getKey(), rawType, esiType)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tassertEquals(rawType, esiType);\r\n\t\t}\r\n\t\tfor (Map.Entry<String, String> entry : esi.entrySet()) {\r\n\t\t\tString rawType = raw.get(entry.getKey());\r\n\t\t\tString esiType = entry.getValue();\r\n\t\t\tif (isUnsafe32bit(entry.getKey(), rawType, esiType)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tassertEquals(rawType, esiType);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static boolean isUnsafe32bit(String key, String rawType, String esiType) {\r\n\t\tif (rawType.equals(\"java.lang.Integer\") && esiType.equals(\"java.lang.Long\")) {\r\n\t\t\tSystem.out.println(key + \" is an 'unsafe' Integer\");\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (rawType.equals(\"java.lang.Float\") && esiType.equals(\"java.lang.Double\")) {\r\n\t\t\tSystem.out.println(key + \" is an 'unsafe' Float\");\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/data/sde/ItemTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.sde;\r\n\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport org.junit.Test;\r\nimport static org.junit.Assert.*;\r\n\r\n\r\npublic class ItemTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void test() {\r\n\t\t//PI\r\n\t\tboolean categoryPlanetaryIndustry = false;\r\n\t\tboolean categoryPlanetaryCommodities = false;\r\n\t\tboolean categoryPlanetaryResources = false;\r\n\t\tboolean groupCommandCenters = false;\r\n\t\tboolean groupExtractorControlUnits = false;\r\n\t\tboolean groupProcessors = false;\r\n\t\tboolean groupSpaceports = false;\r\n\t\tboolean groupStorageFacilities = false;\r\n\t\t//Containers\r\n\t\tboolean groupAuditLogSecureContainer = false;\r\n\t\tboolean groupFreightContainer = false;\r\n\t\tboolean groupCargoContainer = false;\r\n\t\tboolean groupSecureCargoContainer = false;\r\n\t\t//Blueprint\r\n\t\tboolean categoryBlueprint = false;\r\n\t\tlong blueprint = 0;\r\n\t\tlong reaction = 0;\r\n\t\tlong total = 0;\r\n\t\t//Ship\r\n\t\tboolean categoryShip = false;\r\n\t\t//Asteroid\r\n\t\tboolean categoryAsteroid = false;\r\n\t\t//Module\r\n\t\tboolean categoryModule = false;\r\n\t\t//Structure\r\n\t\tboolean categoryStructure = false;\r\n\t\t//Material\r\n\t\tboolean categoryMaterial = false;\r\n\t\t//Deployable\r\n\t\tboolean categoryDeployable = false;\r\n\t\t//Commodity\r\n\t\tboolean categoryCommodity = false;\r\n\t\t//Biomass\r\n\t\tboolean groupBiomass = false;\r\n\t\t//Station Services\r\n\t\tboolean groupStationServices = false;\r\n\t\t//Compressed Gas\r\n\t\tboolean groupCompressedGas = false;\r\n\t\t//Harvestable Cloud\r\n\t\tboolean groupHarvestableCloud = false;\r\n\r\n\t\tfor (Item item : StaticData.get().getItems().values()) {\r\n\t\t\t//PI\r\n\t\t\tif (item.getCategory().equals(Item.CATEGORY_PLANETARY_INDUSTRY)) {\r\n\t\t\t\tcategoryPlanetaryIndustry = true;\r\n\t\t\t}\r\n\t\t\tif (item.getCategory().equals(Item.CATEGORY_PLANETARY_COMMODITIES)) {\r\n\t\t\t\tcategoryPlanetaryCommodities = true;\r\n\t\t\t}\r\n\t\t\tif (item.getCategory().equals(Item.CATEGORY_PLANETARY_RESOURCES)) {\r\n\t\t\t\tcategoryPlanetaryResources = true;\r\n\t\t\t}\r\n\t\t\tif (item.getGroup().equals(Item.GROUP_COMMAND_CENTERS)) {\r\n\t\t\t\tgroupCommandCenters = true;\r\n\t\t\t}\r\n\t\t\tif (item.getGroup().equals(Item.GROUP_EXTRACTOR_CONTROL_UNITS)) {\r\n\t\t\t\tgroupExtractorControlUnits = true;\r\n\t\t\t}\r\n\t\t\tif (item.getGroup().equals(Item.GROUP_PROCESSORS)) {\r\n\t\t\t\tgroupProcessors = true;\r\n\t\t\t}\r\n\t\t\tif (item.getGroup().equals(Item.GROUP_SPACEPORTS)) {\r\n\t\t\t\tgroupSpaceports = true;\r\n\t\t\t}\r\n\t\t\tif (item.getGroup().equals(Item.GROUP_STORAGE_FACILITIES)) {\r\n\t\t\t\tgroupStorageFacilities = true;\r\n\t\t\t}\r\n\t\t\t//Containers\r\n\t\t\tif (item.getGroup().equals(Item.GROUP_AUDIT_LOG_SECURE_CONTAINER)) {\r\n\t\t\t\tgroupAuditLogSecureContainer = true;\r\n\t\t\t}\r\n\t\t\tif (item.getGroup().equals(Item.GROUP_FREIGHT_CONTAINER)) {\r\n\t\t\t\tgroupFreightContainer = true;\r\n\t\t\t}\r\n\t\t\tif (item.getGroup().equals(Item.GROUP_CARGO_CONTAINER)) {\r\n\t\t\t\tgroupCargoContainer = true;\r\n\t\t\t}\r\n\t\t\tif (item.getGroup().equals(Item.GROUP_SECURE_CARGO_CONTAINER)) {\r\n\t\t\t\tgroupSecureCargoContainer = true;\r\n\t\t\t}\r\n\t\t\t//Blueprint\r\n\t\t\tif (item.getCategory().equals(Item.CATEGORY_BLUEPRINT)) {\r\n\t\t\t\tcategoryBlueprint = true;\r\n\t\t\t\ttotal++;\r\n\t\t\t\tif (item.isBlueprint()) {\r\n\t\t\t\t\tblueprint++;\r\n\t\t\t\t}\r\n\t\t\t\tif (item.isFormula()) {\r\n\t\t\t\t\treaction++;\r\n\t\t\t\t}\r\n\t\t\t\tif (!item.isFormula() && !item.isBlueprint()) {\r\n\t\t\t\t\tSystem.out.println(item.getTypeName() + \" :: \" + item.getGroup());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//Ship\r\n\t\t\tif (item.isShip()) { //CATEGORY_SHIP\r\n\t\t\t\tcategoryShip = true;\r\n\t\t\t}\r\n\t\t\t//Asteroid\r\n\t\t\tif (item.isOre()) { //CATEGORY_ASTEROID\r\n\t\t\t\tcategoryAsteroid = true;\r\n\t\t\t}\r\n\t\t\t//Module\r\n\t\t\tif (item.getCategory().equals(Item.CATEGORY_MODULE)) {\r\n\t\t\t\tcategoryModule = true;\r\n\t\t\t}\r\n\t\t\t//Structure\r\n\t\t\tif (item.getCategory().equals(Item.CATEGORY_STRUCTURE)) {\r\n\t\t\t\tcategoryStructure = true;\r\n\t\t\t}\r\n\t\t\t//Material\r\n\t\t\tif (item.getCategory().equals(Item.CATEGORY_MATERIAL)) {\r\n\t\t\t\tcategoryMaterial = true;\r\n\t\t\t}\r\n\t\t\t//Deployable\r\n\t\t\tif (item.getCategory().equals(Item.CATEGORY_DEPLOYABLE)) {\r\n\t\t\t\tcategoryDeployable = true;\r\n\t\t\t}\r\n\t\t\t//Commodity\r\n\t\t\tif (item.getCategory().equals(Item.CATEGORY_COMMODITY)) {\r\n\t\t\t\tcategoryCommodity = true;\r\n\t\t\t}\r\n\t\t\t//Biomass\r\n\t\t\tif (item.getGroup().equals(Item.GROUP_BIOMASS)) {\r\n\t\t\t\tgroupBiomass = true;\r\n\t\t\t}\r\n\t\t\t//Station Services\r\n\t\t\tif (item.getGroup().equals(Item.GROUP_STATION_SERVICES)) {\r\n\t\t\t\tgroupStationServices = true;\r\n\t\t\t}\r\n\t\t\t//Compressed Gas\r\n\t\t\tif (item.getGroup().equals(Item.GROUP_COMPRESSED_GAS)) {\r\n\t\t\t\tgroupCompressedGas = true;\r\n\t\t\t}\r\n\t\t\t//Harvestable Cloud\r\n\t\t\tif (item.getGroup().equals(Item.GROUP_HARVESTABLE_CLOUD)) {\r\n\t\t\t\tgroupHarvestableCloud = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tassertEquals(total, blueprint + reaction);\r\n\t\t//PI\r\n\t\tassertTrue(\"no category: Planetary Industry\", categoryPlanetaryIndustry);\r\n\t\tassertTrue(\"no category: Planetary Commodities\", categoryPlanetaryCommodities);\r\n\t\tassertTrue(\"no category: Planetary Resources\", categoryPlanetaryResources);\r\n\t\tassertTrue(\"no group: Command Centers\", groupCommandCenters);\r\n\t\tassertTrue(\"no group: Extractor Control Units\", groupExtractorControlUnits);\r\n\t\tassertTrue(\"no group: Processors\", groupProcessors);\r\n\t\tassertTrue(\"no group: Spaceports\", groupSpaceports);\r\n\t\tassertTrue(\"no group: Storage Facilities\", groupStorageFacilities);\r\n\t\t//Containers\r\n\t\tassertTrue(\"no group: Audit Log Secure Container\", groupAuditLogSecureContainer);\r\n\t\tassertTrue(\"no group: Freight Container\", groupFreightContainer);\r\n\t\tassertTrue(\"no group: Cargo Container\", groupCargoContainer);\r\n\t\tassertTrue(\"no group: Secure Cargo Container\", groupSecureCargoContainer);\r\n\t\t//Blueprint\r\n\t\tassertTrue(\"no category: Ship\", categoryBlueprint);\r\n\t\t//Ship\r\n\t\tassertTrue(\"no category: Ship\", categoryShip);\r\n\t\t//Asteroid\r\n\t\tassertTrue(\"no category: Asteroid\", categoryAsteroid);\r\n\t\t//Module\r\n\t\tassertTrue(\"no category: Module\", categoryModule);\r\n\t\t//Structure\r\n\t\tassertTrue(\"no category: Structure\", categoryStructure);\r\n\t\t//Material\r\n\t\tassertTrue(\"no category: Material\", categoryMaterial);\r\n\t\t//Deployable\r\n\t\tassertTrue(\"no category: Deployable\", categoryDeployable);\r\n\t\t//categoryCommodity\r\n\t\tassertTrue(\"no category: Commodity\", categoryCommodity);\r\n\t\t//Biomass\r\n\t\tassertTrue(\"no group: Biomass\", groupBiomass);\r\n\t\t//Station Services\r\n\t\tassertTrue(\"no group: Station Services\", groupStationServices);\r\n\t//Gas\r\n\t\t//Compressed Gas\r\n\t\tassertTrue(\"no group: Compressed Gas\", groupCompressedGas);\r\n\t\t//Harvestable Cloud\r\n\t\tassertTrue(\"no group: Harvestable Cloud\", groupHarvestableCloud);\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/data/sde/StaticDataTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.sde;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport java.util.concurrent.ExecutionException;\r\nimport javax.swing.SwingWorker;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class StaticDataTest extends TestUtil {\r\n\r\n\tprivate static final int RUNS = 1000;\r\n\r\n\t@Test\r\n\tpublic void testLocationsThreadSafty() throws InterruptedException, ExecutionException {\r\n\t\tStaticData.load();\r\n\t\tList<SwingWorker<Void, Void>> threads = new ArrayList<>();\r\n\t\tfor (int i = 0; i < RUNS; i++) {\r\n\t\t\tthreads.add(new ReadThread());\r\n\t\t\tthreads.add(new WriteThread());\r\n\t\t}\r\n\t\tfor (SwingWorker<Void, Void> thread : threads) {\r\n\t\t\tthread.execute();\r\n\t\t}\r\n\t\tfor (SwingWorker<Void, Void> thread : threads) {\r\n\t\t\tthread.get();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class ReadThread extends SwingWorker<Void, Void> {\r\n\r\n\t\t@Override\r\n\t\tprotected Void doInBackground() throws Exception {\r\n\t\t\tfor (MyLocation location : StaticData.get().getLocations()) {\r\n\t\t\t\tStaticData.get().getLocation(location.getLocationID());\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tprivate static class WriteThread extends SwingWorker<Void, Void> {\r\n\r\n\t\t@Override\r\n\t\tprotected Void doInBackground() throws Exception {\r\n\t\t\tfor (MyLocation location : StaticData.get().getLocations()) {\r\n\t\t\t\tStaticData.get().removeLocation(location.getLocationID());\r\n\t\t\t\tStaticData.get().addLocation(location);\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/data/settings/ColorThemeTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.settings.ColorTheme.ColorThemeTypes;\r\nimport org.junit.Test;\r\nimport static org.junit.Assert.*;\r\n\r\n\r\npublic class ColorThemeTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void testDefaultTheme() {\r\n\t\ttest(ColorThemeTypes.DEFAULT.getInstance());\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testStrongTheme() {\r\n\t\ttest(ColorThemeTypes.STRONG.getInstance());\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testColorblindTheme() {\r\n\t\ttest(ColorThemeTypes.COLORBLIND.getInstance());\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testDARKTheme() {\r\n\t\ttest(ColorThemeTypes.DARK.getInstance());\r\n\t}\r\n\r\n\tprivate void test(ColorTheme colorTheme) {\r\n\t\tassertTrue(colorTheme.isValid());\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/data/settings/MarketPriceDataTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport java.util.Date;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\n\r\nimport static org.junit.Assert.*;\r\n\r\nimport org.junit.Test;\r\n\r\n\r\npublic class MarketPriceDataTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void testUpdate() {\r\n\t\t//Set\r\n\t\tMarketPriceData data = new MarketPriceData();\r\n\t\tdata.update(75, 1, new Date(1));\r\n\t\tdata.update(25, 1, new Date(2));\r\n\t\tdata.update(50, 1, new Date(3));\r\n\t\tassertEquals(50, data.getAverage(), 0);\r\n\t\tassertEquals(75, data.getMaximum(), 0);\r\n\t\tassertEquals(25, data.getMinimum(), 0);\r\n\t\tassertEquals(50, data.getLatest(), 0);\r\n\r\n\t\t//Empty\r\n\t\tdata = new MarketPriceData();\r\n\t\tassertEquals(0, data.getAverage(), 0);\r\n\t\tassertEquals(0, data.getMaximum(), 0);\r\n\t\tassertEquals(0, data.getMinimum(), 0);\r\n\t\tassertEquals(0, data.getLatest(), 0);\r\n\r\n\t\t//Set\r\n\t\tdata = new MarketPriceData();\r\n\t\tdata.update(10, 300 , new Date(1));\r\n\t\tdata.update(20, 100, new Date(2));\r\n\t\tassertEquals(12.5, data.getAverage(), 0);\r\n\t\tassertEquals(20, data.getMaximum(), 0);\r\n\t\tassertEquals(10, data.getMinimum(), 0);\r\n\t\tassertEquals(20, data.getLatest(), 0);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/data/settings/ModuleTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\r\nimport net.nikr.eve.jeveasset.data.sde.ItemFlag;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.gui.tabs.loadout.Loadout.FlagType;\r\nimport org.junit.*;\r\n\r\nimport static org.junit.Assert.assertTrue;\r\n\r\npublic class ModuleTest extends TestUtil {\r\n\r\n\t/**\r\n\t * Test of FlagType enum, of class Module.\r\n\t */\r\n\t@Test\r\n\tpublic void testFlags() {\r\n\t\tList<ItemFlag> flags = new ArrayList<ItemFlag>(StaticData.get().getItemFlags().values());\r\n\r\n\t\tfor (FlagType type : FlagType.values()) {\r\n\t\t\tif (type == FlagType.TOTAL_VALUE) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (type == FlagType.OTHER) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tboolean found = false;\r\n\t\t\tfor (ItemFlag flag : flags) {\r\n\t\t\t\tif (flag.getFlagName().contains(type.getFlag())) {\r\n\t\t\t\t\tfound = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tassertTrue(type.name() + \" flag value (\" + type.getFlag() + \") is no longer valid\", found);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/data/settings/ReprocessSettingsTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\n\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport net.nikr.eve.jeveasset.data.sde.ReprocessedMaterial;\r\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\n\r\nimport static org.junit.Assert.assertEquals;\r\n\r\nimport org.junit.Test;\r\n\r\n\r\npublic class ReprocessSettingsTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void testSomeMethod() {\r\n\t\tReprocessSettings reprocessSettings;\r\n\t\t//Level 4 Material Skill At 50% Facilities\r\n\t\treprocessSettings = new ReprocessSettings(50, 5, 5, 4, 0);\r\n\t\tassertEquals(68.31, reprocessSettings.getPercent(true), 0);\r\n\t\t//Level 4 Material Skill 52% Reprocessing Array\r\n\t\treprocessSettings = new ReprocessSettings(52, 5, 5, 4, 0);\r\n\t\tassertEquals(71.0424, reprocessSettings.getPercent(true), 0);\r\n\t\t//Max Skill At 50% Facilities\r\n\t\treprocessSettings = new ReprocessSettings(50, 5, 5, 5, 0);\r\n\t\tassertEquals(69.575, reprocessSettings.getPercent(true), 0);\r\n\t\t//Max Skill At 52% Reprocessing Array\r\n\t\treprocessSettings = new ReprocessSettings(52, 5, 5, 5, 0);\r\n\t\tassertEquals(72.358, reprocessSettings.getPercent(true), 0);\r\n\r\n\t\t//Min Reproceesing\r\n\t\treprocessSettings = new ReprocessSettings(100, 5, 5, 5, 0);\r\n\t\tassertEquals(50, reprocessSettings.getPercent(false), 0);\r\n\t\t//Max Reproceesing\r\n\t\treprocessSettings = new ReprocessSettings(0, 0, 0, 0, 5);\r\n\t\tassertEquals(55, reprocessSettings.getPercent(false), 0.0001);\r\n\r\n\t\t//Level 4 Material Skill At 50% Facilities\r\n\t\treprocessSettings = new ReprocessSettings(50, 0, 0, 0, 0);\r\n\t\tItem item = StaticData.get().getItems().get(238);\r\n\t\tfor (ReprocessedMaterial reprocessedMaterial : item.getReprocessedMaterial()) {\r\n\t\t\tif (reprocessedMaterial.getTypeID() == 34) { //Tritanium\r\n\t\t\t\tassertEquals(889, reprocessSettings.getLeft(reprocessedMaterial.getQuantity(), false));\r\n\t\t\t}\r\n\t\t\tif (reprocessedMaterial.getTypeID() == 35) { //Pyerite\r\n\t\t\t\tassertEquals(63, reprocessSettings.getLeft(reprocessedMaterial.getQuantity(), false));\r\n\t\t\t}\r\n\t\t\tif (reprocessedMaterial.getTypeID() == 36) { //Mexallon\r\n\t\t\t\tassertEquals(44, reprocessSettings.getLeft(reprocessedMaterial.getQuantity(), false));\r\n\t\t\t}\r\n\t\t\tif (reprocessedMaterial.getTypeID() == 37) { //Isogen\r\n\t\t\t\tassertEquals(14, reprocessSettings.getLeft(reprocessedMaterial.getQuantity(), false));\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (ReprocessedMaterial reprocessedMaterial : item.getReprocessedMaterial()) {\r\n\t\t\tif (reprocessedMaterial.getTypeID() == 34) { //Tritanium\r\n\t\t\t\tassertEquals(177800, reprocessSettings.getLeft(reprocessedMaterial.getQuantity() * 200, false));\r\n\t\t\t}\r\n\t\t\tif (reprocessedMaterial.getTypeID() == 35) { //Pyerite\r\n\t\t\t\tassertEquals(12700, reprocessSettings.getLeft(reprocessedMaterial.getQuantity() * 200, false));\r\n\t\t\t}\r\n\t\t\tif (reprocessedMaterial.getTypeID() == 36) { //Mexallon\r\n\t\t\t\tassertEquals(8900, reprocessSettings.getLeft(reprocessedMaterial.getQuantity() * 200, false));\r\n\t\t\t}\r\n\t\t\tif (reprocessedMaterial.getTypeID() == 37) { //Isogen\r\n\t\t\t\tassertEquals(2900, reprocessSettings.getLeft(reprocessedMaterial.getQuantity() * 200, false));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void test() {\r\n\t\tReprocessSettings reprocessSettings;\r\n\r\n\t\treprocessSettings = new ReprocessSettings(50, 3, 5, 5, 5);\r\n\t\tassertEquals(reprocessSettings.getReprocessingLevel(), 3);\r\n\t\tassertEquals(reprocessSettings.getReprocessingEfficiencyLevel(), 0);\r\n\t\tassertEquals(reprocessSettings.getOreProcessingLevel(), 0);\r\n\t\tassertEquals(reprocessSettings.getScrapmetalProcessingLevel(), 5);\r\n\r\n\t\treprocessSettings = new ReprocessSettings(50, 4, 3, 5, 5);\r\n\t\tassertEquals(reprocessSettings.getReprocessingLevel(), 4);\r\n\t\tassertEquals(reprocessSettings.getReprocessingEfficiencyLevel(), 3);\r\n\t\tassertEquals(reprocessSettings.getOreProcessingLevel(), 0);\r\n\t\tassertEquals(reprocessSettings.getScrapmetalProcessingLevel(), 5);\r\n\r\n\t\treprocessSettings = new ReprocessSettings(50, 4, 4, 4, 5);\r\n\t\tassertEquals(reprocessSettings.getReprocessingLevel(), 4);\r\n\t\tassertEquals(reprocessSettings.getReprocessingEfficiencyLevel(), 4);\r\n\t\tassertEquals(reprocessSettings.getOreProcessingLevel(), 4);\r\n\t\tassertEquals(reprocessSettings.getScrapmetalProcessingLevel(), 5);\r\n\r\n\t\treprocessSettings = new ReprocessSettings(50, 5, 5, 5, 5);\r\n\t\tassertEquals(reprocessSettings.getReprocessingLevel(), 5);\r\n\t\tassertEquals(reprocessSettings.getReprocessingEfficiencyLevel(), 5);\r\n\t\tassertEquals(reprocessSettings.getOreProcessingLevel(), 5);\r\n\t\tassertEquals(reprocessSettings.getScrapmetalProcessingLevel(), 5);\r\n\r\n\t\treprocessSettings = new ReprocessSettings(50, 6, 6, 6, 6);\r\n\t\tassertEquals(reprocessSettings.getReprocessingLevel(), 5);\r\n\t\tassertEquals(reprocessSettings.getReprocessingEfficiencyLevel(), 5);\r\n\t\tassertEquals(reprocessSettings.getOreProcessingLevel(), 5);\r\n\t\tassertEquals(reprocessSettings.getScrapmetalProcessingLevel(), 5);\r\n\r\n\t\treprocessSettings = new ReprocessSettings(50, 0, 0, 0, 0);\r\n\t\tassertEquals(reprocessSettings.getReprocessingLevel(), 0);\r\n\t\tassertEquals(reprocessSettings.getReprocessingEfficiencyLevel(), 0);\r\n\t\tassertEquals(reprocessSettings.getOreProcessingLevel(), 0);\r\n\t\tassertEquals(reprocessSettings.getScrapmetalProcessingLevel(), 0);\r\n\r\n\t\treprocessSettings = new ReprocessSettings(50, -1, -1, -1, -1);\r\n\t\tassertEquals(reprocessSettings.getReprocessingLevel(), 0);\r\n\t\tassertEquals(reprocessSettings.getReprocessingEfficiencyLevel(), 0);\r\n\t\tassertEquals(reprocessSettings.getOreProcessingLevel(), 0);\r\n\t\tassertEquals(reprocessSettings.getScrapmetalProcessingLevel(), 0);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/data/settings/SettingsTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.data.settings;\r\n\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings.SettingFlag;\r\nimport static org.hamcrest.CoreMatchers.notNullValue;\r\nimport static org.hamcrest.MatcherAssert.assertThat;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class SettingsTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void testFlags() {\r\n\t\tSettings settings = new Settings();\r\n\t\tfor (SettingFlag flag : SettingFlag.values()) {\r\n\t\t\tassertThat(flag.name() + \" have no default value\", settings.getFlags().get(flag), notNullValue());\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/data/settings/TrackerDataTest.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.data.settings;\n\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.Date;\nimport java.util.List;\nimport java.util.Map;\nimport net.nikr.eve.jeveasset.TestUtil;\nimport net.nikr.eve.jeveasset.gui.tabs.values.Value;\nimport static org.junit.Assert.assertEquals;\nimport static org.junit.Assert.assertNotNull;\nimport org.junit.Test;\n\n\npublic class TrackerDataTest extends TestUtil {\n\n\t@Test\n\tpublic void addAll() {\n\t\tMap<String, List<Value>> values;\n\t\tList<Value> list;\n\t\tString owner = \"owner\";\n\t\tDate date = new Date();\n\t\tValue oldValue = new Value(\"Old\", date);\n\t\tValue newValue = new Value(\"New\", date);\n\t\tTrackerData.set(Collections.singletonMap(owner, new ArrayList<>(Collections.singletonList(oldValue))));\n\t\tTrackerData.addAll(Collections.singletonMap(owner, new ArrayList<>(Collections.singletonList(newValue))), true);\n\t\tvalues = TrackerData.get();\n\t\tlist = values.get(owner);\n\t\tassertNotNull(list);\n\t\tassertEquals(1, list.size());\n\t\tassertEquals(newValue.getName(), list.get(0).getName());\n\t\tTrackerData.set(Collections.emptyMap());\n\n\t\tTrackerData.set(Collections.singletonMap(owner, new ArrayList<>(Collections.singletonList(oldValue))));\n\t\tTrackerData.addAll(Collections.singletonMap(owner, new ArrayList<>(Collections.singletonList(newValue))), false);\n\t\tvalues = TrackerData.get();\n\t\tlist = values.get(owner);\n\t\tassertNotNull(list);\n\t\tassertEquals(1, list.size());\n\t\tassertEquals(oldValue.getName(), list.get(0).getName());\n\t\tTrackerData.set(Collections.emptyMap());\n\t}\n\t\n}\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/gui/images/ImagesTest.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.images;\n\nimport java.awt.image.BufferedImage;\nimport java.io.File;\nimport java.net.URISyntaxException;\nimport net.nikr.eve.jeveasset.TestUtil;\nimport static org.junit.Assert.*;\nimport org.junit.Test;\n\n\npublic class ImagesTest extends TestUtil {\n\n\t@Test\n\tpublic void testExists() {\n\t\tfor (Images i : Images.values()) {\n\t\t\tBufferedImage image = Images.getBufferedImage(i.getFilename());\n\t\t\tassertNotNull(i.getFilename() + \" not found\", image);\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testPreload() {\n\t\tboolean ok = Images.preload();\n\t\tassertTrue(\"Preload failed\", ok);\n\t}\n\n\t@Test\n\tpublic void testUnused() {\n\t\ttry {\n\t\t\tFile dir = new File(Images.class.getResource(\"Images.class\").toURI()).getParentFile();\n\t\t\tString[] children = dir.list();\n\n\t\t\tif (children != null) {\n\t\t\t\tfor (String filename : children) {\n\t\t\t\t\tif (filename.equals(\"Images.class\")) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tboolean ok = false;\n\t\t\t\t\t//Images Class\n\t\t\t\t\tfor (Images i : Images.values()) {\n\t\t\t\t\t\tif (filename.equals(i.getFilename())) {\n\t\t\t\t\t\t\tok = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//loading 01-08\n\t\t\t\t\tfor (int a = 0; a < 8; a++) {\n\t\t\t\t\t\tif (filename.equals(\"loading0\" + (a + 1) + \".png\")) {\n\t\t\t\t\t\t\tok = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//working 01-24\n\t\t\t\t\tfor (int a = 0; a < 24; a++) {\n\t\t\t\t\t\tString number;\n\t\t\t\t\t\tif ((a + 1) < 10) {\n\t\t\t\t\t\t\tnumber = \"0\" + (a + 1);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnumber = \"\" + (a + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (filename.equals(\"working\" + number + \".png\")) {\n\t\t\t\t\t\t\tok = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tassertTrue(filename + \" is not used anywhere\", ok);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (URISyntaxException ex) {\n\t\t\tfail(\"Directory not found\");\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testFilenames() {\n\t\tString[] extensions = {\".png\", \".gif\"};\n\t\tfor (Images i : Images.values()) {\n\t\t\tString extension = extensions[0];\n\t\t\tfor (String s : extensions) {\n\t\t\t\tif (i.getFilename().endsWith(s)) {\n\t\t\t\t\textension = s;\n\t\t\t\t}\n\t\t\t}\n\t\t\tString properFilename = i.toString().toLowerCase() + extension;\n\t\t\tif (!properFilename.equals(i.getFilename())) {\n\t\t\t\tfail(i.toString() + \" filename should be \" + properFilename + \" but is \" + i.getFilename());\n\t\t\t}\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/gui/shared/FormatterTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport java.util.concurrent.Callable;\r\nimport java.util.concurrent.ExecutionException;\r\nimport java.util.concurrent.ExecutorService;\r\nimport java.util.concurrent.Executors;\r\nimport java.util.concurrent.Future;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class FormatterTest {\r\n\r\n\tprivate final Date DATE = Formatter.columnStringToDate(\"2000-01-01 12:00\");\r\n\tprivate final int THREADS = 100;\r\n\r\n\t@Test\r\n\tpublic void testThreadSafe() throws InterruptedException, ExecutionException {\r\n\t\tList<Callable<Void>> threads = new ArrayList<>();\r\n\t\tfor (int i = 0; i < THREADS; i++) {\r\n\t\t\tthreads.add(new ParseDate());\r\n\t\t\tthreads.add(new FormatDate());\r\n\t\t\tthreads.add(new FormatNumber());\r\n\t\t}\r\n\t\tExecutorService newFixedThreadPool = Executors.newFixedThreadPool(THREADS * 2);\r\n\t\tList<Future<Void>> futures = newFixedThreadPool.invokeAll(threads);\r\n\t\tfor (Future<Void> future : futures) {\r\n\t\t\tfuture.get();\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testAutoFormat() throws InterruptedException, ExecutionException {\r\n\t\tFormatter.AUTO_FORMAT.format(Long.MAX_VALUE);\r\n\t\tFormatter.AUTO_FORMAT.format(Long.MIN_VALUE);\r\n\t\tFormatter.AUTO_FORMAT.format(Double.MIN_VALUE);\r\n\t\tFormatter.AUTO_FORMAT.format(Double.MAX_VALUE);\r\n\t}\r\n\r\n\tprivate class ParseDate implements Callable<Void> {\r\n\t\t@Override\r\n\t\tpublic Void call() throws Exception {\r\n\t\t\tFormatter.columnStringToDate(\"2000-01-01 12:00\");\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class FormatDate implements Callable<Void> {\r\n\t\t@Override\r\n\t\tpublic Void call() throws Exception {\r\n\t\t\tFormatter.columnDate(DATE);\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class FormatNumber implements Callable<Void> {\r\n\t\t@Override\r\n\t\tpublic Void call() throws Exception {\r\n\t\t\tFormatter.iskFormat(123456789.1234);\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/gui/shared/components/CheckBoxNodeTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.components;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport static org.hamcrest.CoreMatchers.equalTo;\r\nimport static org.hamcrest.MatcherAssert.assertThat;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class CheckBoxNodeTest {\r\n\tprivate CheckBoxNode root;\r\n\tprivate CheckBoxNode a;\r\n\tprivate CheckBoxNode a1;\r\n\tprivate CheckBoxNode a2;\r\n\tprivate CheckBoxNode a3;\r\n\tprivate CheckBoxNode b;\r\n\tprivate CheckBoxNode b1;\r\n\tprivate CheckBoxNode b2;\r\n\tprivate CheckBoxNode b3;\r\n\tprivate CheckBoxNode c;\r\n\tprivate CheckBoxNode c1;\r\n\tprivate CheckBoxNode c2;\r\n\tprivate CheckBoxNode c3;\r\n\tprivate final List<CheckBoxNode> all = new ArrayList<>();\r\n\r\n\t@Test\r\n\tpublic void testSetSelected() {\r\n\t\tmakeNodes(true);\r\n\r\n\t\tc3.setSelected(false);\r\n\t\tassertThat(root.isSelected(), equalTo(false));\r\n\t\tassertThat(a.isSelected(), equalTo(true));\r\n\t\tassertThat(a1.isSelected(), equalTo(true));\r\n\t\tassertThat(a2.isSelected(), equalTo(true));\r\n\t\tassertThat(a3.isSelected(), equalTo(true));\r\n\t\tassertThat(b.isSelected(), equalTo(true));\r\n\t\tassertThat(b1.isSelected(), equalTo(true));\r\n\t\tassertThat(b2.isSelected(), equalTo(true));\r\n\t\tassertThat(b3.isSelected(), equalTo(true));\r\n\t\tassertThat(c.isSelected(), equalTo(false));\r\n\t\tassertThat(c1.isSelected(), equalTo(true));\r\n\t\tassertThat(c2.isSelected(), equalTo(true));\r\n\t\tassertThat(c3.isSelected(), equalTo(false));\r\n\r\n\t\tc3.setSelected(true);\r\n\t\tassertThat(root.isSelected(), equalTo(true));\r\n\t\tassertThat(a.isSelected(), equalTo(true));\r\n\t\tassertThat(a1.isSelected(), equalTo(true));\r\n\t\tassertThat(a2.isSelected(), equalTo(true));\r\n\t\tassertThat(a3.isSelected(), equalTo(true));\r\n\t\tassertThat(b.isSelected(), equalTo(true));\r\n\t\tassertThat(b1.isSelected(), equalTo(true));\r\n\t\tassertThat(b2.isSelected(), equalTo(true));\r\n\t\tassertThat(b3.isSelected(), equalTo(true));\r\n\t\tassertThat(c.isSelected(), equalTo(true));\r\n\t\tassertThat(c1.isSelected(), equalTo(true));\r\n\t\tassertThat(c2.isSelected(), equalTo(true));\r\n\t\tassertThat(c3.isSelected(), equalTo(true));\r\n\r\n\t\tc.setSelected(false);\r\n\t\tassertThat(root.isSelected(), equalTo(false));\r\n\t\tassertThat(a.isSelected(), equalTo(true));\r\n\t\tassertThat(a1.isSelected(), equalTo(true));\r\n\t\tassertThat(a2.isSelected(), equalTo(true));\r\n\t\tassertThat(a3.isSelected(), equalTo(true));\r\n\t\tassertThat(b.isSelected(), equalTo(true));\r\n\t\tassertThat(b1.isSelected(), equalTo(true));\r\n\t\tassertThat(b2.isSelected(), equalTo(true));\r\n\t\tassertThat(b3.isSelected(), equalTo(true));\r\n\t\tassertThat(c.isSelected(), equalTo(false));\r\n\t\tassertThat(c1.isSelected(), equalTo(false));\r\n\t\tassertThat(c2.isSelected(), equalTo(false));\r\n\t\tassertThat(c3.isSelected(), equalTo(false));\r\n\r\n\t\tc.setSelected(true);\r\n\t\tassertThat(root.isSelected(), equalTo(true));\r\n\t\tassertThat(a.isSelected(), equalTo(true));\r\n\t\tassertThat(a1.isSelected(), equalTo(true));\r\n\t\tassertThat(a2.isSelected(), equalTo(true));\r\n\t\tassertThat(a3.isSelected(), equalTo(true));\r\n\t\tassertThat(b.isSelected(), equalTo(true));\r\n\t\tassertThat(b1.isSelected(), equalTo(true));\r\n\t\tassertThat(b2.isSelected(), equalTo(true));\r\n\t\tassertThat(b3.isSelected(), equalTo(true));\r\n\t\tassertThat(c.isSelected(), equalTo(true));\r\n\t\tassertThat(c1.isSelected(), equalTo(true));\r\n\t\tassertThat(c2.isSelected(), equalTo(true));\r\n\t\tassertThat(c3.isSelected(), equalTo(true));\r\n\r\n\t\troot.setSelected(false);\r\n\t\tassertThat(root.isSelected(), equalTo(false));\r\n\t\tassertThat(a.isSelected(), equalTo(false));\r\n\t\tassertThat(a1.isSelected(), equalTo(false));\r\n\t\tassertThat(a2.isSelected(), equalTo(false));\r\n\t\tassertThat(a3.isSelected(), equalTo(false));\r\n\t\tassertThat(b.isSelected(), equalTo(false));\r\n\t\tassertThat(b1.isSelected(), equalTo(false));\r\n\t\tassertThat(b2.isSelected(), equalTo(false));\r\n\t\tassertThat(b3.isSelected(), equalTo(false));\r\n\t\tassertThat(c.isSelected(), equalTo(false));\r\n\t\tassertThat(c1.isSelected(), equalTo(false));\r\n\t\tassertThat(c2.isSelected(), equalTo(false));\r\n\t\tassertThat(c3.isSelected(), equalTo(false));\r\n\r\n\t\troot.setSelected(true);\r\n\t\tassertThat(root.isSelected(), equalTo(true));\r\n\t\tassertThat(a.isSelected(), equalTo(true));\r\n\t\tassertThat(a1.isSelected(), equalTo(true));\r\n\t\tassertThat(a2.isSelected(), equalTo(true));\r\n\t\tassertThat(a3.isSelected(), equalTo(true));\r\n\t\tassertThat(b.isSelected(), equalTo(true));\r\n\t\tassertThat(b1.isSelected(), equalTo(true));\r\n\t\tassertThat(b2.isSelected(), equalTo(true));\r\n\t\tassertThat(b3.isSelected(), equalTo(true));\r\n\t\tassertThat(c.isSelected(), equalTo(true));\r\n\t\tassertThat(c1.isSelected(), equalTo(true));\r\n\t\tassertThat(c2.isSelected(), equalTo(true));\r\n\t\tassertThat(c3.isSelected(), equalTo(true));\r\n\r\n\t\troot.setSelected(false);\r\n\t\tassertThat(root.isSelected(), equalTo(false));\r\n\t\tassertThat(a.isSelected(), equalTo(false));\r\n\t\tassertThat(a1.isSelected(), equalTo(false));\r\n\t\tassertThat(a2.isSelected(), equalTo(false));\r\n\t\tassertThat(a3.isSelected(), equalTo(false));\r\n\t\tassertThat(b.isSelected(), equalTo(false));\r\n\t\tassertThat(b1.isSelected(), equalTo(false));\r\n\t\tassertThat(b2.isSelected(), equalTo(false));\r\n\t\tassertThat(b3.isSelected(), equalTo(false));\r\n\t\tassertThat(c.isSelected(), equalTo(false));\r\n\t\tassertThat(c1.isSelected(), equalTo(false));\r\n\t\tassertThat(c2.isSelected(), equalTo(false));\r\n\t\tassertThat(c3.isSelected(), equalTo(false));\r\n\r\n\t\tc1.setSelected(true);\r\n\t\tc2.setSelected(true);\r\n\t\tc3.setSelected(true);\r\n\t\tassertThat(root.isSelected(), equalTo(false));\r\n\t\tassertThat(a.isSelected(), equalTo(false));\r\n\t\tassertThat(a1.isSelected(), equalTo(false));\r\n\t\tassertThat(a2.isSelected(), equalTo(false));\r\n\t\tassertThat(a3.isSelected(), equalTo(false));\r\n\t\tassertThat(b.isSelected(), equalTo(false));\r\n\t\tassertThat(b1.isSelected(), equalTo(false));\r\n\t\tassertThat(b2.isSelected(), equalTo(false));\r\n\t\tassertThat(b3.isSelected(), equalTo(false));\r\n\t\tassertThat(c.isSelected(), equalTo(true));\r\n\t\tassertThat(c1.isSelected(), equalTo(true));\r\n\t\tassertThat(c2.isSelected(), equalTo(true));\r\n\t\tassertThat(c3.isSelected(), equalTo(true));\r\n\r\n\t\ta.setSelected(true);\r\n\t\tb.setSelected(true);\r\n\t\tassertThat(root.isSelected(), equalTo(true));\r\n\t\tassertThat(a.isSelected(), equalTo(true));\r\n\t\tassertThat(a1.isSelected(), equalTo(true));\r\n\t\tassertThat(a2.isSelected(), equalTo(true));\r\n\t\tassertThat(a3.isSelected(), equalTo(true));\r\n\t\tassertThat(b.isSelected(), equalTo(true));\r\n\t\tassertThat(b1.isSelected(), equalTo(true));\r\n\t\tassertThat(b2.isSelected(), equalTo(true));\r\n\t\tassertThat(b3.isSelected(), equalTo(true));\r\n\t\tassertThat(c.isSelected(), equalTo(true));\r\n\t\tassertThat(c1.isSelected(), equalTo(true));\r\n\t\tassertThat(c2.isSelected(), equalTo(true));\r\n\t\tassertThat(c3.isSelected(), equalTo(true));\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testSetShown() {\r\n\t\tmakeNodes(false);\r\n\t\t//Step 1: Select All\r\n\t\troot.setSelected(true);\r\n\t\tassertThat(root.isSelected(), equalTo(true));\r\n\t\tassertThat(a.isSelected(), equalTo(true));\r\n\t\tassertThat(a1.isSelected(), equalTo(true));\r\n\t\tassertThat(a2.isSelected(), equalTo(true));\r\n\t\tassertThat(a3.isSelected(), equalTo(true));\r\n\t\tassertThat(b.isSelected(), equalTo(true));\r\n\t\tassertThat(b1.isSelected(), equalTo(true));\r\n\t\tassertThat(b2.isSelected(), equalTo(true));\r\n\t\tassertThat(b3.isSelected(), equalTo(true));\r\n\t\tassertThat(c.isSelected(), equalTo(true));\r\n\t\tassertThat(c1.isSelected(), equalTo(true));\r\n\t\tassertThat(c2.isSelected(), equalTo(true));\r\n\t\tassertThat(c3.isSelected(), equalTo(true));\r\n\t\t//Step 2 Deselect B\r\n\t\tb.setSelected(false);\r\n\t\tassertThat(root.isSelected(), equalTo(false));\r\n\t\tassertThat(a.isSelected(), equalTo(true));\r\n\t\tassertThat(a1.isSelected(), equalTo(true));\r\n\t\tassertThat(a2.isSelected(), equalTo(true));\r\n\t\tassertThat(a3.isSelected(), equalTo(true));\r\n\t\tassertThat(b.isSelected(), equalTo(false));\r\n\t\tassertThat(b1.isSelected(), equalTo(false));\r\n\t\tassertThat(b2.isSelected(), equalTo(false));\r\n\t\tassertThat(b3.isSelected(), equalTo(false));\r\n\t\tassertThat(c.isSelected(), equalTo(true));\r\n\t\tassertThat(c1.isSelected(), equalTo(true));\r\n\t\tassertThat(c2.isSelected(), equalTo(true));\r\n\t\tassertThat(c3.isSelected(), equalTo(true));\r\n\t\t//Step 3 Hide all\r\n\t\thideAll();\r\n\t\tassertThat(root.isSelected(), equalTo(false));\r\n\t\tassertThat(a.isSelected(), equalTo(true));\r\n\t\tassertThat(a1.isSelected(), equalTo(true));\r\n\t\tassertThat(a2.isSelected(), equalTo(true));\r\n\t\tassertThat(a3.isSelected(), equalTo(true));\r\n\t\tassertThat(b.isSelected(), equalTo(false));\r\n\t\tassertThat(b1.isSelected(), equalTo(false));\r\n\t\tassertThat(b2.isSelected(), equalTo(false));\r\n\t\tassertThat(b3.isSelected(), equalTo(false));\r\n\t\tassertThat(c.isSelected(), equalTo(true));\r\n\t\tassertThat(c1.isSelected(), equalTo(true));\r\n\t\tassertThat(c2.isSelected(), equalTo(true));\r\n\t\tassertThat(c3.isSelected(), equalTo(true));\r\n\t\t//Step 4 Show A and C\r\n\t\tmatchTrue(a);\r\n\t\tmatchTrue(c);\r\n\t\tassertThat(root.isSelected(), equalTo(true));\r\n\t\tassertThat(a.isSelected(), equalTo(true));\r\n\t\tassertThat(a1.isSelected(), equalTo(true));\r\n\t\tassertThat(a2.isSelected(), equalTo(true));\r\n\t\tassertThat(a3.isSelected(), equalTo(true));\r\n\t\tassertThat(b.isSelected(), equalTo(false));\r\n\t\tassertThat(b1.isSelected(), equalTo(false));\r\n\t\tassertThat(b2.isSelected(), equalTo(false));\r\n\t\tassertThat(b3.isSelected(), equalTo(false));\r\n\t\tassertThat(c.isSelected(), equalTo(true));\r\n\t\tassertThat(c1.isSelected(), equalTo(true));\r\n\t\tassertThat(c2.isSelected(), equalTo(true));\r\n\t\tassertThat(c3.isSelected(), equalTo(true));\r\n\t}\r\n\r\n\tprivate void hideAll() {\r\n\t\tfor (CheckBoxNode node : all) {\r\n\t\t\tnode.hide();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void matchTrue(CheckBoxNode node) {\r\n\t\tnode.matches(node.getNodeName());\r\n\t}\r\n\r\n\tprivate void makeNodes(boolean selected) {\r\n\t\troot = new CheckBoxNode(null, \"root\", \"root\", selected);\r\n\t\ta = new CheckBoxNode(root, \"aa\", \"aa\", selected);\r\n\t\ta1 = new CheckBoxNode(a, \"a1\", \"a1\", selected);\r\n\t\ta2 = new CheckBoxNode(a, \"a2\", \"a2\", selected);\r\n\t\ta3 = new CheckBoxNode(a, \"a3\", \"a3\", selected);\r\n\t\tb = new CheckBoxNode(root, \"bb\", \"bb\", selected);\r\n\t\tb1 = new CheckBoxNode(b, \"b1\", \"b1\", selected);\r\n\t\tb2 = new CheckBoxNode(b, \"b2\", \"b2\", selected);\r\n\t\tb3 = new CheckBoxNode(b, \"b3\", \"b3\", selected);\r\n\t\tc = new CheckBoxNode(root, \"cc\", \"cc\", selected);\r\n\t\tc1 = new CheckBoxNode(c, \"c1\", \"c1\", selected);\r\n\t\tc2 = new CheckBoxNode(c, \"c2\", \"c2\", selected);\r\n\t\tc3 = new CheckBoxNode(c, \"c3\", \"c3\", selected);\r\n\t\tall.clear();\r\n\t\tall.add(root);\r\n\t\tall.add(a);\r\n\t\tall.add(a1);\r\n\t\tall.add(a2);\r\n\t\tall.add(a3);\r\n\t\tall.add(b);\r\n\t\tall.add(b1);\r\n\t\tall.add(b2);\r\n\t\tall.add(b3);\r\n\t\tall.add(c);\r\n\t\tall.add(c1);\r\n\t\tall.add(c2);\r\n\t\tall.add(c3);\r\n\r\n\t\tassertThat(root.isSelected(), equalTo(selected));\r\n\t\tassertThat(root.isShown(), equalTo(true));\r\n\t\tassertThat(a.isSelected(), equalTo(selected));\r\n\t\tassertThat(a.isShown(), equalTo(true));\r\n\t\tassertThat(a1.isSelected(), equalTo(selected));\r\n\t\tassertThat(a1.isShown(), equalTo(true));\r\n\t\tassertThat(a2.isSelected(), equalTo(selected));\r\n\t\tassertThat(a2.isShown(), equalTo(true));\r\n\t\tassertThat(a3.isSelected(), equalTo(selected));\r\n\t\tassertThat(a3.isShown(), equalTo(true));\r\n\t\tassertThat(b.isSelected(), equalTo(selected));\r\n\t\tassertThat(b.isShown(), equalTo(true));\r\n\t\tassertThat(b1.isSelected(), equalTo(selected));\r\n\t\tassertThat(b1.isShown(), equalTo(true));\r\n\t\tassertThat(b2.isSelected(), equalTo(selected));\r\n\t\tassertThat(b2.isShown(), equalTo(true));\r\n\t\tassertThat(b3.isSelected(), equalTo(selected));\r\n\t\tassertThat(b3.isShown(), equalTo(true));\r\n\t\tassertThat(c.isSelected(), equalTo(selected));\r\n\t\tassertThat(c.isShown(), equalTo(true));\r\n\t\tassertThat(c1.isSelected(), equalTo(selected));\r\n\t\tassertThat(c1.isShown(), equalTo(true));\r\n\t\tassertThat(c2.isSelected(), equalTo(selected));\r\n\t\tassertThat(c2.isShown(), equalTo(true));\r\n\t\tassertThat(c3.isSelected(), equalTo(selected));\r\n\t\tassertThat(c3.isShown(), equalTo(true));\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/gui/shared/filter/FilterExportTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.filter;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JFormulaDialog;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JFormulaDialog.Formula;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuJumps.Jump;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.ColumnManager.FormulaColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.ColumnManager.JumpColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.SimpleColumnManager;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.NumberValue;\r\nimport net.nikr.eve.jeveasset.gui.tabs.agents.AgentsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.agents.AgentsTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.assets.AssetTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.assets.AssetsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.contracts.ContractsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.contracts.ContractsTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.items.ItemTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.items.ItemsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.jobs.IndustryJobTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.jobs.IndustryJobsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.journal.JournalTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.journal.JournalTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.loyalty.LoyaltyPointsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.loyalty.LoyaltyPointsTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.mining.ExtractionsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.mining.ExtractionsTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.mining.MiningTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.mining.MiningTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.orders.MarketOrdersTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.orders.MarketTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.skills.SkillsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.skills.SkillsTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.slots.SlotsTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.slots.SlotsTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.standing.NpcStandingTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.standing.NpcStandingTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.StockpileExtendedTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.StockpileTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.StockpileTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.transaction.TransactionTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.transaction.TransactionTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.tree.TreeTab;\r\nimport net.nikr.eve.jeveasset.gui.tabs.tree.TreeTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.ValueTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.ValueTableTab;\r\nimport static org.junit.Assert.assertEquals;\r\nimport static org.junit.Assert.assertNotNull;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class FilterExportTest extends TestUtil {\r\n\r\n\tprivate final String filterName = \"Filter Name\";\r\n\r\n\t@Test\r\n\tpublic void testNull() {\r\n\t\tFilterExport filterExport = new FilterExport(\"Toolname\", new TestColumnManager<>());\r\n\t\tMap<String, List<Filter>> importFilter = filterExport.importFilter(null);\r\n\t\tassertNotNull(importFilter);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void test() {\r\n\t//Primary Tools\r\n\t\t//Asset\r\n\t\ttest(AssetsTab.NAME, AssetTableFormat.values());\r\n\t\t//Contract\r\n\t\ttest(ContractsTab.NAME, ContractsTableFormat.values());\r\n\t\t//Journal\r\n\t\ttest(JournalTab.NAME, JournalTableFormat.values());\r\n\t\t//MarketOrder\r\n\t\ttest(MarketOrdersTab.NAME, MarketTableFormat.values());\r\n\t\t//Transaction\r\n\t\ttest(TransactionTab.NAME, TransactionTableFormat.values());\r\n\t\t//IndustryJob\r\n\t\ttest(IndustryJobsTab.NAME, IndustryJobTableFormat.values());\r\n\t\t//Skills\r\n\t\ttest(SkillsTab.NAME, SkillsTableFormat.values());\r\n\t\t//Mining\r\n\t\ttest(MiningTab.NAME, MiningTableFormat.values());\r\n\t\t//Loyalty Points\r\n\t\ttest(LoyaltyPointsTab.NAME, LoyaltyPointsTableFormat.values());\r\n\t\t//Agents\r\n\t\ttest(AgentsTab.NAME, AgentsTableFormat.values());\r\n\t\t//NPC Standing\r\n\t\ttest(NpcStandingTab.NAME, NpcStandingTableFormat.values());\r\n\t\t//Extractions\r\n\t\ttest(ExtractionsTab.NAME, ExtractionsTableFormat.values());\r\n\t//Secondary Tools\r\n\t\t//Slots\r\n\t\ttest(SlotsTab.NAME, SlotsTableFormat.values());\r\n\t\t//Tree\r\n\t\ttest(TreeTab.NAME, TreeTableFormat.values());\r\n\t\t//Item\r\n\t\ttest(ItemsTab.NAME, ItemTableFormat.values());\r\n\t\t//Loadout - No filters\r\n\t\t//test(LoadoutsTab.NAME, LoadoutTableFormat.values());\r\n\t\t//test(LoadoutsTab.NAME, LoadoutExtendedTableFormat.values());\r\n\t\t//Overview\r\n\t\ttest(OverviewTab.NAME, OverviewTableFormat.values());\r\n\t\t//Reprocessed - No filters\r\n\t\t//test(ReprocessedTab.NAME, ReprocessedTableFormat.values());\r\n\t\t//test(ReprocessedTab.NAME, ReprocessedExtendedTableFormat.values());\r\n\t\t//Stockpile\r\n\t\ttest(StockpileTab.NAME, StockpileTableFormat.values());\r\n\t\ttest(StockpileTab.NAME, StockpileExtendedTableFormat.values());\r\n\t\t//Material - No filters\r\n\t\t//test(MaterialsTab.NAME, MaterialTableFormat.values());\r\n\t\t//test(MaterialsTab.NAME, MaterialExtendedTableFormat.values());\r\n\t\t//ISK\r\n\t\ttest(ValueTableTab.NAME, ValueTableFormat.values());\r\n\t//Dialogs\r\n\t\t//AccountTableFormat - No filters\r\n\t}\r\n\r\n\tpublic <E> void test(String toolName, EnumTableColumn<E>[] columns) {\r\n\t\tSystem.out.println(\"Testing: \" + toolName);\r\n\t\tFilterExport filterExport = new FilterExport(toolName, new TestColumnManager<E>());\r\n\r\n\t\t//Plain\r\n\t\tList<Filter> plainFilters = createFilters(columns);\r\n\t\ttestFilters(filterExport, plainFilters);\r\n\r\n\t\t//Formula\r\n\t\tFilter formulaFilter = createFormulaFilter(columns);\r\n\t\tif (formulaFilter != null) {\r\n\t\t\tList<Filter> formulaFilters = new ArrayList<>(plainFilters);\r\n\t\t\tformulaFilters.add(formulaFilter);\r\n\t\t\ttestFilters(filterExport, formulaFilters);\r\n\t\t}\r\n\r\n\t\t//Jump\r\n\t\tList<Filter> jumpFilters = new ArrayList<>(plainFilters);\r\n\t\tjumpFilters.add(createJumpFilter());\r\n\t\ttestFilters(filterExport, jumpFilters);\r\n\t}\r\n\r\n\tpublic <E> void testFilters(FilterExport filterExport, List<Filter> exportFilters) {\r\n\t\tString exportString = filterExport.exportFilter(filterName, exportFilters);\r\n\t\tSystem.out.println(exportString);\r\n\t\tMap<String, List<Filter>> importFilter = filterExport.importFilter(exportString);\r\n\t\tassertNotNull(importFilter);\r\n\t\tList<Filter> importFilters = importFilter.get(filterName);\r\n\t\tassertEquals(exportFilters, importFilters);\r\n\t}\r\n\r\n\tpublic <E> Filter createFormulaFilter(EnumTableColumn<E>[] columns) {\r\n\t\tEnumTableColumn<E> columnA = null;\r\n\t\tEnumTableColumn<E> columnB = null;\r\n\t\tfor (EnumTableColumn<E> column : columns) {\r\n\t\t\tif (Number.class.isAssignableFrom(column.getType()) || NumberValue.class.isAssignableFrom(column.getType())) {\r\n\t\t\t\tif (columnA == null) {\r\n\t\t\t\t\tcolumnA = column;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcolumnB = column;\r\n\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (columnA == null || columnB == null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tFormula formula = new Formula(\"Formula Column\", JFormulaDialog.getHardName(columnB) + \" > \" + JFormulaDialog.getHardName(columnA), 0);\r\n\t\tFormulaColumn<E> column = new FormulaColumn<>(formula);\r\n\t\treturn new Filter(Filter.LogicType.AND, column, Filter.CompareType.GREATER_THAN, \"0\");\r\n\t}\r\n\r\n\tpublic <E> Filter createJumpFilter() {\r\n\t\tJump jump = new Jump(StaticData.get().getLocation(30000142)); //Jita\r\n\t\tJumpColumn<E> column = new JumpColumn<>(jump);\r\n\t\treturn new Filter(Filter.LogicType.AND, column, Filter.CompareType.GREATER_THAN, \"0\");\r\n\t}\r\n\r\n\tpublic <E> List<Filter> createFilters(EnumTableColumn<E>[] columns) {\r\n\t\tList<Filter> exportFilters = new ArrayList<>();\r\n\t\tEnumTableColumn<E> stringColumn = null;\r\n\t\tEnumTableColumn<E> numberColumn = null;\r\n\t\tfor (EnumTableColumn<E> column : columns) {\r\n\t\t\tif (stringColumn == null && column.getType().equals(String.class)) {\r\n\t\t\t\texportFilters.add(new Filter(Filter.LogicType.AND, column, Filter.CompareType.CONTAINS, \"text\"));\r\n\t\t\t\tstringColumn = column;\r\n\t\t\t}\r\n\t\t\tif (numberColumn == null && column.getType().equals(Double.class)) {\r\n\t\t\t\texportFilters.add(new Filter(Filter.LogicType.AND, column, Filter.CompareType.GREATER_THAN, \"0\"));\r\n\t\t\t\tnumberColumn = column;\r\n\t\t\t}\r\n\t\t\tif (numberColumn != null && column.getType().equals(Double.class)) {\r\n\t\t\t\texportFilters.add(new Filter(Filter.LogicType.AND, column, Filter.CompareType.GREATER_THAN_COLUMN, column.name()));\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn exportFilters;\r\n\t}\r\n\r\n\tprivate class TestColumnManager<Q> implements SimpleColumnManager<Q> {\r\n\t\t@Override\r\n\t\tpublic FormulaColumn<Q> addColumn(Formula formula) {\r\n\t\t\treturn new FormulaColumn<>(formula);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic JumpColumn<Q> addColumn(Jump jump) {\r\n\t\t\treturn new JumpColumn<>(jump);\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/gui/shared/filter/FilterMatcherTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.filter;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Arrays;\r\nimport java.util.Calendar;\r\nimport java.util.Comparator;\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport java.util.TimeZone;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.gui.images.Images;\r\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\r\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter.AllColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter.CompareType;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Percent;\r\nimport static org.junit.Assert.assertEquals;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class FilterMatcherTest extends TestUtil {\r\n\r\n\tpublic enum TestEnum implements EnumTableColumn<Item> {\r\n\t\tTEXT(false, false),\r\n\t\tTEXT_FORMAT(false, false),\r\n\t\tLONG(true, false),\r\n\t\tINTEGER(true, false),\r\n\t\tDOUBLE(true, false),\r\n\t\tFLOAT(true, false),\r\n\t\tPERCENT(true, false),\r\n\t\tDATE(false, true),\r\n\t\tDATE_LAST(false, true),\r\n\t\tDATE_LAST_LONG(false, true),\r\n\t\tDATE_NEXT(false, true),\r\n\t\tDATE_NEXT_LONG(false, true),\r\n\t\tCOLUMN_TEXT(false, false),\r\n\t\tCOLUMN_NUMBER(true, false),\r\n\t\tCOLUMN_PERCENT(true, false),\r\n\t\tCOLUMN_DATE(false, true),\r\n\t\tNULL(true, true)\r\n\t\t;\r\n\r\n\t\tprivate final boolean number;\r\n\t\tprivate final boolean date;\r\n\r\n\t\tprivate TestEnum(final boolean number, final boolean date) {\r\n\t\t\tthis.number = number;\r\n\t\t\tthis.date = date;\r\n\t\t}\r\n\r\n\t\tpublic boolean isDate() {\r\n\t\t\treturn date;\r\n\t\t}\r\n\r\n\t\tpublic boolean isNumber() {\r\n\t\t\treturn number;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic Class<?> getType() {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic Comparator<?> getComparator() {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic String getColumnName() {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(Item from) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic String toString() {\r\n\t\t\treturn getColumnName();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tprivate String textColumn = null;\r\n\tprivate Number numberColumn = null;\r\n\tprivate Date dateColumn = null;\r\n\tprivate Percent percentColumn = null;\r\n\r\n\tprivate static final int BENCHMARK_ITERATIONS = 50000;\r\n\r\n\tprivate static final String TEXT = \"Text\";\r\n\tprivate static final String TEXT_FORMAT = \"Text\\\"'-\";\r\n\tprivate static final String TEXT_PART = \"Tex\";\r\n\tprivate static final String TEXT_NOT = \"Not\";\r\n\r\n\tprivate static final String DATE = \"2005-01-02 09:00\";\r\n\tprivate static final String DATE_BEFORE = \"2005-01-03 09:00\"; //DATE before this\r\n\tprivate static final String DATE_NOT_BEFORE = \"2005-01-02 10:00\";\r\n\tprivate static final String DATE_AFTER = \"2005-01-01 9:00\"; //DATE after this\r\n\tprivate static final String DATE_NOT_AFTER = \"2005-01-02 8:00\";\r\n\tprivate static final String DATE_PART = \"2005\";\r\n\tprivate static final String DATE_NOT = \"2005-05-05\";\r\n\r\n\tprivate static final double NUMBER_DOUBLE = 222.0d;\r\n\tprivate static final float NUMBER_FLOAT = 222.0f;\r\n\tprivate static final long NUMBER_LONG = 222L;\r\n\tprivate static final int NUMBER_INTEGER = 222;\r\n\tprivate static final Percent PERCENT = Percent.create(2.22);\r\n\r\n\tprivate static final String NULL = null;\r\n\r\n\tprivate final TestTableFormat filterControl = new TestTableFormat();\r\n\tprivate final Item item = new Item();\r\n\r\n\t@Test\r\n\tpublic void testTime() {\r\n\t\tlong startTime = System.currentTimeMillis();\r\n\t\tfor (int i = 0; i < 100; i++) {\r\n\t\t\ttestMatches();\r\n\t\t}\r\n\t\tlong endTime = System.currentTimeMillis();\r\n\t\tSystem.out.println(\"Filter time:\" + (endTime - startTime) + \"ms\");\r\n\t}\r\n\r\n\t/**\r\n\t * Speed test\r\n\t * @param args\r\n\t */\r\n\tpublic static void main(final String[] args) {\r\n\t\tinitLog();\r\n\t\tImages.preload();\r\n\t\tFilterMatcherTest filterMatcherTest = new FilterMatcherTest();\r\n\t\tfilterMatcherTest.testEqualsSingle();\r\n\t\tfilterMatcherTest.testRexexSingle();\r\n\t\tfilterMatcherTest.testEqualsAll();\r\n\t\tfilterMatcherTest.testRexexAll();\r\n\t\tlong duration = 0;\r\n\t\tduration += filterMatcherTest.testEqualsSingle();\r\n\t\tduration += filterMatcherTest.testRexexSingle();\r\n\t\tduration += filterMatcherTest.testEqualsAll();\r\n\t\tduration += filterMatcherTest.testRexexAll();\r\n\t\tSystem.out.println(\"Total time:\" + duration + \"ms\");\r\n\t}\r\n\r\n\tprivate long testEqualsSingle() {\r\n\t\tlong startTime = System.currentTimeMillis();\r\n\t\tfor (int i = 0; i < BENCHMARK_ITERATIONS; i++) {\r\n\t\t\t//Equals\r\n\t\t\tmatches(true,  TestEnum.TEXT, Filter.CompareType.EQUALS, TEXT);\r\n\t\t\tmatches(false, TestEnum.TEXT, Filter.CompareType.EQUALS, TEXT_PART);\r\n\t\t\tmatches(false, TestEnum.TEXT, Filter.CompareType.EQUALS, TEXT_NOT);\r\n\t\t}\r\n\t\tlong endTime = System.currentTimeMillis();\r\n\t\tSystem.out.println(\"Equals Single time:\" + (endTime - startTime) + \"ms\");\r\n\t\treturn (endTime - startTime);\r\n\t}\r\n\r\n\tprivate long testRexexSingle() {\r\n\t\tlong startTime = System.currentTimeMillis();\r\n\t\tfor (int i = 0; i < BENCHMARK_ITERATIONS; i++) {\r\n\t\t\t//Regex\r\n\t\t\tmatches(true,  TestEnum.TEXT, Filter.CompareType.REGEX, TEXT);\r\n\t\t\tmatches(true,  TestEnum.TEXT, Filter.CompareType.REGEX, TEXT_PART);\r\n\t\t\tmatches(false, TestEnum.TEXT, Filter.CompareType.REGEX, TEXT_NOT);\r\n\t\t}\r\n\t\tlong endTime = System.currentTimeMillis();\r\n\t\tSystem.out.println(\"Rexex Single time:\" + (endTime - startTime) + \"ms\");\r\n\t\treturn (endTime - startTime);\r\n\t}\r\n\r\n\tprivate long testEqualsAll() {\r\n\t\tlong startTime = System.currentTimeMillis();\r\n\t\tfor (int i = 0; i < BENCHMARK_ITERATIONS; i++) {\r\n\t\t\t//Equals\r\n\t\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.EQUALS, TEXT);\r\n\t\t\tmatches(false, new AllColumn<>(), Filter.CompareType.EQUALS, TEXT_PART);\r\n\t\t\tmatches(false, new AllColumn<>(), Filter.CompareType.EQUALS, TEXT_NOT);\r\n\t\t}\r\n\t\tlong endTime = System.currentTimeMillis();\r\n\t\tSystem.out.println(\"Equals All time:\" + (endTime - startTime) + \"ms\");\r\n\t\treturn (endTime - startTime);\r\n\t}\r\n\r\n\tprivate long testRexexAll() {\r\n\t\tlong startTime = System.currentTimeMillis();\r\n\t\tfor (int i = 0; i < BENCHMARK_ITERATIONS; i++) {\r\n\t\t\t//Regex\r\n\t\t\tmatches(true,  TestEnum.TEXT, Filter.CompareType.REGEX, TEXT);\r\n\t\t\tmatches(true, TestEnum.TEXT, Filter.CompareType.REGEX, TEXT_PART);\r\n\t\t\tmatches(false, TestEnum.TEXT, Filter.CompareType.REGEX, TEXT_NOT);\r\n\t\t}\r\n\t\tlong endTime = System.currentTimeMillis();\r\n\t\tSystem.out.println(\"Rexex All time:\" + (endTime - startTime) + \"ms\");\r\n\t\treturn (endTime - startTime);\r\n\t}\r\n\r\n\t/**\r\n\t * Test of matches method, of class FilterControl.\r\n\t */\r\n\tpublic void testMatches() {\r\n\t//String\r\n\t\tstringTest();\r\n\t\tstringFormatTest();\r\n\t//Numbers\r\n\t\tdoubleTest();\r\n\t\tfloatTest();\r\n\t\tlongTest();\r\n\t\tintegerTest();\r\n\t//Date\r\n\t\tdateTest();\r\n\t//Percent\r\n\t\tpercentTest();\r\n\t//All\r\n\t\tallTest();\r\n\t//Logic\r\n\t\tlogicTest();\r\n\t//Null\r\n\t\tnullTest();\r\n\t}\r\n\r\n\tprivate void matches(final boolean expected, final EnumTableColumn<Item> enumColumn, final CompareType compare, final String text) {\r\n\t\tmatches(expected, enumColumn, compare, text, null, null, null, null);\r\n\t}\r\n\r\n\tprivate void matches(final boolean expected, final EnumTableColumn<Item> enumColumn, final CompareType compare, final String text, final String textColumn) {\r\n\t\tmatches(expected, enumColumn, compare, text, textColumn, null, null, null);\r\n\t}\r\n\r\n\tprivate void matches(final boolean expected, final EnumTableColumn<Item> enumColumn, final CompareType compare, final String text, final Number numberColumn) {\r\n\t\tmatches(expected, enumColumn, compare, text, null, numberColumn, null, null);\r\n\t}\r\n\tprivate void matches(final boolean expected, final EnumTableColumn<Item> enumColumn, final CompareType compare, final String text, final Date dateColumn) {\r\n\t\tmatches(expected, enumColumn, compare, text, null, null, dateColumn, null);\r\n\t}\r\n\tprivate void matches(final boolean expected, final EnumTableColumn<Item> enumColumn, final CompareType compare, final String text, final Percent percentColumn) {\r\n\t\tmatches(expected, enumColumn, compare, text, null, null, null, percentColumn);\r\n\t}\r\n\r\n\tprivate void matches(final boolean expected, final EnumTableColumn<Item> enumColumn, final CompareType compare, final String text, final String textColumn, final Number numberColumn, final Date dateColumn, final Percent percentColumn) {\r\n\t\t//Test matches\r\n\t\tthis.textColumn = textColumn;\r\n\t\tthis.numberColumn = numberColumn;\r\n\t\tthis.dateColumn = dateColumn;\r\n\t\tthis.percentColumn = percentColumn;\r\n\t\tFilterMatcher<Item> filterMatcher;\r\n\t\tfilterMatcher = new FilterMatcher<>(filterControl, null, 1, Filter.LogicType.AND, enumColumn, compare, text, true);\r\n\t\tassertEquals(\"Matcher: value:\" + text + \" [\" + compare + \"]\" + enumColumn.getColumnValue(item) + \"(\" + enumColumn.name() +  \")\", expected, filterMatcher.matches(item));\r\n\t\tfilterMatcher = new FilterMatcher<>(filterControl, null, new Filter(1, Filter.LogicType.AND, enumColumn, compare, text, true));\r\n\t\tassertEquals(\"Filter: \" + enumColumn.name() + \"  value:\" + text, expected, filterMatcher.matches(item));\r\n\t}\r\n\r\n\tprivate void matches(final Object expected, String text1, String text2, String text3, String text4, String text5) {\r\n\t\tList<FilterMatcher<Item>> filterMatchers = new ArrayList<>();\r\n\t\tfilterMatchers.add(new FilterMatcher<>(filterControl, null, 1, Filter.LogicType.OR, TestEnum.TEXT, CompareType.EQUALS, text1, true));\r\n\t\tfilterMatchers.add(new FilterMatcher<>(filterControl, null, 1, Filter.LogicType.OR, TestEnum.TEXT, CompareType.EQUALS, text2, true));\r\n\t\tfilterMatchers.add(new FilterMatcher<>(filterControl, null, 2, Filter.LogicType.OR, TestEnum.TEXT, CompareType.EQUALS, text3, true));\r\n\t\tfilterMatchers.add(new FilterMatcher<>(filterControl, null, 2, Filter.LogicType.OR, TestEnum.TEXT, CompareType.EQUALS, text4, true));\r\n\t\tfilterMatchers.add(new FilterMatcher<>(filterControl, null, 0, Filter.LogicType.AND, TestEnum.TEXT, CompareType.EQUALS, text5, true));\r\n\t\tFilterLogicalMatcher<Item> logicalMatcher = new FilterLogicalMatcher<>(filterMatchers);\r\n\t\tassertEquals(\"(\" + text1 + \" OR \" + text2 +\") AND (\" + text3 + \" OR \" + text4 + \") AND \" + text5 + \" --> Matching: \" + TEXT, expected, logicalMatcher.matches(item));\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void logicTest() {\r\n\t\tmatches(true, TEXT, TEXT_NOT, TEXT, TEXT_NOT, TEXT);          //(true OR false) AND (true OR false) AND true   = (true  + true  + true)  = true\r\n\t\tmatches(true, TEXT_NOT, TEXT, TEXT_NOT, TEXT, TEXT);          //(false OR true) AND (false OR true) AND true   = (true  + true  + true)  = true\r\n\t\tmatches(false, TEXT_NOT, TEXT, TEXT_NOT, TEXT, TEXT_NOT);     //(false OR true) AND (false OR true) AND false  = (true  + true  + false) = false\r\n\t\tmatches(false, TEXT_NOT, TEXT_NOT, TEXT, TEXT_NOT, TEXT);     //(false OR false) AND (true OR false) AND true  = (false + true  + true)  = false\r\n\t\tmatches(false, TEXT, TEXT_NOT, TEXT_NOT, TEXT_NOT, TEXT);     //(true OR false) AND (false OR false) AND true  = (true  + false + true)  = false\r\n\t\tmatches(false, TEXT_NOT, TEXT_NOT, TEXT_NOT, TEXT_NOT, TEXT); //(false OR false) AND (false OR false) AND true = (false + false + true)  = false\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void nullTest() {\r\n\t\tTestEnum[] columns = {TestEnum.TEXT, TestEnum.TEXT_FORMAT, TestEnum.LONG, TestEnum.INTEGER, TestEnum.DOUBLE, TestEnum.FLOAT, TestEnum.PERCENT, TestEnum.DATE, TestEnum.DATE_LAST, TestEnum.NULL};\r\n\t\tfor (TestEnum column : columns) {\r\n\t\t\tmatches(false, column, CompareType.EQUALS, NULL);\r\n\t\t\tmatches(column != TestEnum.NULL,  column, CompareType.EQUALS_NOT, NULL);\r\n\t\t\tmatches(false, column, CompareType.EQUALS_DATE, NULL);\r\n\t\t\tmatches(column != TestEnum.NULL,  column, CompareType.EQUALS_NOT_DATE, NULL);\r\n\t\t\tmatches(false, column, CompareType.CONTAINS, NULL);\r\n\t\t\tmatches(column != TestEnum.NULL,  column, CompareType.CONTAINS_NOT, NULL);\r\n\t\t\tmatches(false, column, CompareType.AFTER, NULL);\r\n\t\t\tmatches(false, column, CompareType.BEFORE, NULL);\r\n\t\t\tmatches(column != TestEnum.NULL,  column, CompareType.GREATER_THAN, NULL);\r\n\t\t\tmatches(false, column, CompareType.LESS_THAN, NULL);\r\n\t\t\tmatches(false, column, CompareType.LAST_HOURS, NULL);\r\n\t\t\tmatches(false, column, CompareType.LAST_DAYS, NULL);\r\n\t\t\tmatches(false, column, CompareType.NEXT_HOURS, NULL);\r\n\t\t\tmatches(false, column, CompareType.NEXT_DAYS, NULL);\r\n\t\t\tmatches(false, column, CompareType.REGEX, NULL);\r\n\t\t}\r\n\t\tTestEnum[] columns2 = {TestEnum.COLUMN_DATE, TestEnum.COLUMN_NUMBER, TestEnum.COLUMN_PERCENT, TestEnum.COLUMN_TEXT};\r\n\t\tfor (TestEnum column : columns2) {\r\n\t\t\tmatches(false, column, CompareType.EQUALS_COLUMN, NULL, (String)null);\r\n\t\t\tmatches(false, column, CompareType.EQUALS_NOT_COLUMN, NULL, (String)null);\r\n\t\t\tmatches(false, column, CompareType.CONTAINS_COLUMN, NULL, (String)null);\r\n\t\t\tmatches(false, column, CompareType.CONTAINS_NOT_COLUMN, NULL, (String)null);\r\n\t\t\tmatches(false, column, CompareType.AFTER_COLUMN, NULL, (Date)null);\r\n\t\t\tmatches(false, column, CompareType.BEFORE_COLUMN, NULL, (Date)null);\r\n\t\t\tmatches(false, column, CompareType.GREATER_THAN_COLUMN, NULL, (Number)null);\r\n\t\t\tmatches(false, column, CompareType.LESS_THAN_COLUMN, NULL, (Number)null);\r\n\t\t}\r\n\t\tfor (CompareType compareType : CompareType.values()) {\r\n\t\t\tmatches(true,  new AllColumn<>(), compareType, NULL);\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void dateTest() {\r\n\t\t//Equals\r\n\t\tmatches(true,  TestEnum.DATE, Filter.CompareType.EQUALS, DATE);\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.EQUALS, DATE_NOT_AFTER);\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.EQUALS, DATE_NOT_BEFORE);\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.EQUALS, DATE_PART);\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.EQUALS, DATE_NOT);\r\n\t\t//Equals not\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.EQUALS_NOT, DATE);\r\n\t\tmatches(true,  TestEnum.DATE, Filter.CompareType.EQUALS_NOT, DATE_PART);\r\n\t\tmatches(true,  TestEnum.DATE, Filter.CompareType.EQUALS_NOT, DATE_NOT);\r\n\t\t//Equals date\r\n\t\tmatches(true,  TestEnum.DATE, Filter.CompareType.EQUALS_DATE, DATE);\r\n\t\tmatches(true,  TestEnum.DATE, Filter.CompareType.EQUALS_DATE, DATE_NOT_AFTER);\r\n\t\tmatches(true,  TestEnum.DATE, Filter.CompareType.EQUALS_DATE, DATE_NOT_BEFORE);\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.EQUALS_DATE, DATE_PART);\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.EQUALS_DATE, DATE_NOT);\r\n\t\t//Equals not date\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.EQUALS_NOT_DATE, DATE);\r\n\t\tmatches(true,  TestEnum.DATE, Filter.CompareType.EQUALS_NOT_DATE, DATE_PART);\r\n\t\tmatches(true,  TestEnum.DATE, Filter.CompareType.EQUALS_NOT_DATE, DATE_NOT);\r\n\t\t//Contains\r\n\t\tmatches(true,  TestEnum.DATE, Filter.CompareType.CONTAINS, DATE);\r\n\t\tmatches(true,  TestEnum.DATE, Filter.CompareType.CONTAINS, DATE_PART);\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.CONTAINS, DATE_NOT);\r\n\t\t//Contains not\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.CONTAINS_NOT, DATE);\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.CONTAINS_NOT, DATE_PART);\r\n\t\tmatches(true,  TestEnum.DATE, Filter.CompareType.CONTAINS_NOT, DATE_NOT);\r\n\t\t//Regex\r\n\t\tmatches(true,  TestEnum.DATE, Filter.CompareType.REGEX, DATE);\r\n\t\tmatches(true,  TestEnum.DATE, Filter.CompareType.REGEX, DATE_PART);\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.REGEX, DATE_NOT);\r\n\t\t//Before\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.BEFORE, DATE);\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.BEFORE, DATE_AFTER);\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.BEFORE, DATE_NOT_BEFORE);\r\n\t\tmatches(true,  TestEnum.DATE, Filter.CompareType.BEFORE, DATE_BEFORE);\r\n\t\t//After\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.AFTER, DATE);\r\n\t\tmatches(true,  TestEnum.DATE, Filter.CompareType.AFTER, DATE_AFTER);\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.BEFORE, DATE_NOT_AFTER);\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.AFTER, DATE_BEFORE);\r\n\t\t//Last x days\r\n\t\tmatches(false, TestEnum.DATE_LAST, Filter.CompareType.LAST_DAYS, \"1\");  //Last 1 days\r\n\t\tmatches(true,  TestEnum.DATE_LAST, Filter.CompareType.LAST_DAYS, \"2\");  //Last 2 days\r\n\t\tmatches(false, TestEnum.DATE_LAST_LONG, Filter.CompareType.LAST_DAYS, \"399\");  //Last 399 days\r\n\t\tmatches(true,  TestEnum.DATE_LAST_LONG, Filter.CompareType.LAST_DAYS, \"400\");  //Last 400 days\r\n\t\t//Next x days\r\n\t\tmatches(false, TestEnum.DATE_NEXT, Filter.CompareType.NEXT_DAYS, \"1\");  //Next 1 days\r\n\t\tmatches(true,  TestEnum.DATE_NEXT, Filter.CompareType.NEXT_DAYS, \"2\");  //Next 2 days\r\n\t\tmatches(false, TestEnum.DATE_NEXT_LONG, Filter.CompareType.NEXT_DAYS, \"399\");  //Next 399 days\r\n\t\tmatches(true,  TestEnum.DATE_NEXT_LONG, Filter.CompareType.NEXT_DAYS, \"400\");  //Next 400 days\r\n\t\t//Last x hours\r\n\t\tmatches(false, TestEnum.DATE_LAST, Filter.CompareType.LAST_HOURS, \"24\"); //Last 24 hours\r\n\t\tmatches(true,  TestEnum.DATE_LAST, Filter.CompareType.LAST_HOURS, \"48\"); //Last 48 hours\r\n\t\tmatches(false, TestEnum.DATE_LAST_LONG, Filter.CompareType.LAST_HOURS, \"9599\"); //Last 9599 hours\r\n\t\tmatches(true,  TestEnum.DATE_LAST_LONG, Filter.CompareType.LAST_HOURS, \"9600\"); //Last 9600 hours\r\n\t\t//Next x hours\r\n\t\tmatches(false, TestEnum.DATE_NEXT, Filter.CompareType.NEXT_HOURS, \"24\"); //Next 24 hours\r\n\t\tmatches(true,  TestEnum.DATE_NEXT, Filter.CompareType.NEXT_HOURS, \"48\"); //Next 48 hours\r\n\t\tmatches(false, TestEnum.DATE_NEXT_LONG, Filter.CompareType.NEXT_HOURS, \"9599\"); //Next 9599 hours\r\n\t\tmatches(true,  TestEnum.DATE_NEXT_LONG, Filter.CompareType.NEXT_HOURS, \"9600\"); //Next 9600 hours\r\n\r\n\t\t//Equals column\r\n\t\tmatches(true,  TestEnum.DATE, Filter.CompareType.EQUALS_COLUMN, TestEnum.COLUMN_DATE.name(), Formatter.columnStringToDate(DATE));\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.EQUALS_COLUMN, TestEnum.COLUMN_DATE.name(), Formatter.columnStringToDate(DATE_NOT_AFTER));\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.EQUALS_COLUMN, TestEnum.COLUMN_DATE.name(), Formatter.columnStringToDate(DATE_NOT_BEFORE));\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.EQUALS_COLUMN, TestEnum.COLUMN_DATE.name(), Formatter.columnStringToDate(DATE_NOT));\r\n\t\t//Equals not column\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.EQUALS_NOT_COLUMN, TestEnum.COLUMN_DATE.name(), Formatter.columnStringToDate(DATE));\r\n\t\tmatches(true,  TestEnum.DATE, Filter.CompareType.EQUALS_NOT_COLUMN, TestEnum.COLUMN_DATE.name(), Formatter.columnStringToDate(DATE_NOT));\r\n\t\t//Contains column\r\n\t\tmatches(true,  TestEnum.DATE, Filter.CompareType.CONTAINS_COLUMN, TestEnum.COLUMN_DATE.name(), Formatter.columnStringToDate(DATE));\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.CONTAINS_COLUMN, TestEnum.COLUMN_DATE.name(), Formatter.columnStringToDate(DATE_NOT));\r\n\t\t//Contains not column\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.CONTAINS_NOT_COLUMN, TestEnum.COLUMN_DATE.name(), Formatter.columnStringToDate(DATE));\r\n\t\tmatches(true,  TestEnum.DATE, Filter.CompareType.CONTAINS_NOT_COLUMN, TestEnum.COLUMN_DATE.name(), Formatter.columnStringToDate(DATE_NOT));\r\n\t\t//Before column\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.BEFORE_COLUMN, TestEnum.COLUMN_DATE.name(), Formatter.columnStringToDate(DATE));\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.BEFORE_COLUMN, TestEnum.COLUMN_DATE.name(), Formatter.columnStringToDate(DATE_AFTER));\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.BEFORE_COLUMN, TestEnum.COLUMN_DATE.name(), Formatter.columnStringToDate(DATE_NOT_BEFORE));\r\n\t\tmatches(true,  TestEnum.DATE, Filter.CompareType.BEFORE_COLUMN, TestEnum.COLUMN_DATE.name(), Formatter.columnStringToDate(DATE_BEFORE));\r\n\t\t//After column\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.AFTER_COLUMN, TestEnum.COLUMN_DATE.name(), Formatter.columnStringToDate(DATE));\r\n\t\tmatches(true,  TestEnum.DATE, Filter.CompareType.AFTER_COLUMN, TestEnum.COLUMN_DATE.name(), Formatter.columnStringToDate(DATE_AFTER));\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.AFTER_COLUMN, TestEnum.COLUMN_DATE.name(), Formatter.columnStringToDate(DATE_NOT_AFTER));\r\n\t\tmatches(false, TestEnum.DATE, Filter.CompareType.AFTER_COLUMN, TestEnum.COLUMN_DATE.name(), Formatter.columnStringToDate(DATE_BEFORE));\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void stringTest() {\r\n\t\t//Equals\r\n\t\tmatches(true,  TestEnum.TEXT, Filter.CompareType.EQUALS, TEXT);\r\n\t\tmatches(false, TestEnum.TEXT, Filter.CompareType.EQUALS, TEXT_PART);\r\n\t\tmatches(false, TestEnum.TEXT, Filter.CompareType.EQUALS, TEXT_NOT);\r\n\t\t//Equals not\r\n\t\tmatches(false, TestEnum.TEXT, Filter.CompareType.EQUALS_NOT, TEXT);\r\n\t\tmatches(true,  TestEnum.TEXT, Filter.CompareType.EQUALS_NOT, TEXT_PART);\r\n\t\tmatches(true,  TestEnum.TEXT, Filter.CompareType.EQUALS_NOT, TEXT_NOT);\r\n\t\t//Contains\r\n\t\tmatches(true,  TestEnum.TEXT, Filter.CompareType.CONTAINS, TEXT);\r\n\t\tmatches(true,  TestEnum.TEXT, Filter.CompareType.CONTAINS, TEXT_PART);\r\n\t\tmatches(false, TestEnum.TEXT, Filter.CompareType.CONTAINS, TEXT_NOT);\r\n\t\t//Contains not\r\n\t\tmatches(false, TestEnum.TEXT, Filter.CompareType.CONTAINS_NOT, TEXT);\r\n\t\tmatches(false, TestEnum.TEXT, Filter.CompareType.CONTAINS_NOT, TEXT_PART);\r\n\t\tmatches(true,  TestEnum.TEXT, Filter.CompareType.CONTAINS_NOT, TEXT_NOT);\r\n\t\t//Regex\r\n\t\tmatches(true,  TestEnum.TEXT, Filter.CompareType.REGEX, TEXT);\r\n\t\tmatches(true,  TestEnum.TEXT, Filter.CompareType.REGEX, TEXT_PART);\r\n\t\tmatches(false, TestEnum.TEXT, Filter.CompareType.REGEX, TEXT_NOT);\r\n\t\t//Equals column\r\n\t\tmatches(true,  TestEnum.TEXT, Filter.CompareType.EQUALS_COLUMN, TestEnum.COLUMN_TEXT.name(), TEXT);\r\n\t\tmatches(false, TestEnum.TEXT, Filter.CompareType.EQUALS_COLUMN, TestEnum.COLUMN_TEXT.name(), TEXT_PART);\r\n\t\tmatches(false, TestEnum.TEXT, Filter.CompareType.EQUALS_COLUMN, TestEnum.COLUMN_TEXT.name(), TEXT_NOT);\r\n\t\t//Equals not\r\n\t\tmatches(false, TestEnum.TEXT, Filter.CompareType.EQUALS_NOT_COLUMN, TestEnum.COLUMN_TEXT.name(), TEXT);\r\n\t\tmatches(true,  TestEnum.TEXT, Filter.CompareType.EQUALS_NOT_COLUMN, TestEnum.COLUMN_TEXT.name(), TEXT_PART);\r\n\t\tmatches(true,  TestEnum.TEXT, Filter.CompareType.EQUALS_NOT_COLUMN, TestEnum.COLUMN_TEXT.name(), TEXT_NOT);\r\n\t\t//Contains\r\n\t\tmatches(true,  TestEnum.TEXT, Filter.CompareType.CONTAINS_COLUMN, TestEnum.COLUMN_TEXT.name(), TEXT);\r\n\t\tmatches(true,  TestEnum.TEXT, Filter.CompareType.CONTAINS_COLUMN, TestEnum.COLUMN_TEXT.name(), TEXT_PART);\r\n\t\tmatches(false, TestEnum.TEXT, Filter.CompareType.CONTAINS_COLUMN, TestEnum.COLUMN_TEXT.name(), TEXT_NOT);\r\n\t\t//Contains not\r\n\t\tmatches(false, TestEnum.TEXT, Filter.CompareType.CONTAINS_NOT_COLUMN, TestEnum.COLUMN_TEXT.name(), TEXT);\r\n\t\tmatches(false, TestEnum.TEXT, Filter.CompareType.CONTAINS_NOT_COLUMN, TestEnum.COLUMN_TEXT.name(), TEXT_PART);\r\n\t\tmatches(true,  TestEnum.TEXT, Filter.CompareType.CONTAINS_NOT_COLUMN, TestEnum.COLUMN_TEXT.name(), TEXT_NOT);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void stringFormatTest() {\r\n\t\t//Equals\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.EQUALS, TEXT + \"\\\"'-\");\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.EQUALS, TEXT + \"„‘–\");\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.EQUALS, TEXT + \"“’‐\");\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.EQUALS, TEXT + \"”`‑\");\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.EQUALS, TEXT + \"\\\"´‒\");\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.EQUALS, TEXT + \"\\\"'—\");\r\n\t\t//Contains\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.CONTAINS, \"\\\"\");\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.CONTAINS, \"'\");\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.CONTAINS, \"-\");\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.CONTAINS, \"„\"); //Index\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.CONTAINS, \"“\"); //Set transmit state\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.CONTAINS, \"”\"); //Cancel character\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.CONTAINS, \"‘\"); //Private use one\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.CONTAINS, \"’\"); //Private use two\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.CONTAINS, \"`\"); //Grave accent\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.CONTAINS, \"´\"); //Acute accent\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.CONTAINS, \"–\"); //En dash\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.CONTAINS, \"‐\"); //Hyphen\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.CONTAINS, \"‑\"); //Non-breaking hyphen\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.CONTAINS, \"‒\"); //Figure dEash\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.CONTAINS, \"—\"); //Em dash\r\n\t\t//Regex\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.REGEX, \"\\\"\");\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.REGEX, \"'\");\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.REGEX, \"-\");\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.REGEX, \"„\"); //Index\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.REGEX, \"“\"); //Set transmit state\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.REGEX, \"”\"); //Cancel character\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.REGEX, \"‘\"); //Private use one\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.REGEX, \"’\"); //Private use two\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.REGEX, \"`\"); //Grave accent\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.REGEX, \"´\"); //Acute accent\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.REGEX, \"–\"); //En dash\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.REGEX, \"‐\"); //Hyphen\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.REGEX, \"‑\"); //Non-breaking hyphen\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.REGEX, \"‒\"); //Figure dash\r\n\t\tmatches(true,  TestEnum.TEXT_FORMAT, Filter.CompareType.REGEX, \"—\"); //Em dash\r\n\t\t//All - Regex\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.REGEX, \"\\\"\");\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.REGEX, \"'\");\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.REGEX, \"-\");\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.REGEX, \"„\"); //Index\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.REGEX, \"“\"); //Set transmit state\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.REGEX, \"”\"); //Cancel character\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.REGEX, \"‘\"); //Private use one\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.REGEX, \"’\"); //Private use two\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.REGEX, \"`\"); //Grave accent\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.REGEX, \"´\"); //Acute accent\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.REGEX, \"–\"); //En dash\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.REGEX, \"‐\"); //Hyphen\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.REGEX, \"‑\"); //Non-breaking hyphen\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.REGEX, \"‒\"); //Figure dash\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.REGEX, \"—\"); //Em dash\r\n\t\t//All - Contains\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS, \"\\\"\");\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS, \"'\");\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS, \"-\");\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS, \"„\"); //Index\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS, \"“\"); //Set transmit state\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS, \"”\"); //Cancel character\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS, \"‘\"); //Private use one\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS, \"’\"); //Private use two\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS, \"`\"); //Grave accent\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS, \"´\"); //Acute accent\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS, \"–\"); //En dash\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS, \"‐\"); //Hyphen\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS, \"‑\"); //Non-breaking hyphen\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS, \"‒\"); //Figure dash\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS, \"—\"); //Em dash\r\n\t\t//All - Equals\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.EQUALS, TEXT + \"\\\"'-\");\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.EQUALS, TEXT + \"„‘–\");\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.EQUALS, TEXT + \"“’‐\");\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.EQUALS, TEXT + \"”`‑\");\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.EQUALS, TEXT + \"\\\"´‒\");\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.EQUALS, TEXT + \"\\\"'—\");\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void doubleTest() {\r\n\t\tnumberTest(TestEnum.DOUBLE);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void floatTest() {\r\n\t\tnumberTest(TestEnum.FLOAT);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void longTest() {\r\n\t\tnumberTest(TestEnum.LONG);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void integerTest() {\r\n\t\tnumberTest(TestEnum.INTEGER);\r\n\t}\r\n\r\n\tprivate void numberTest(final TestEnum testEnum) {\r\n\t\t//Equals\r\n\t\tmatches(true,  testEnum, Filter.CompareType.EQUALS, \"222\");\r\n\t\tmatches(true,  testEnum, Filter.CompareType.EQUALS, \"222.0\");\r\n\t\tmatches(false, testEnum, Filter.CompareType.EQUALS, \"223\");\r\n\t\tmatches(false, testEnum, Filter.CompareType.EQUALS, \"223.1\");\r\n\t\tmatches(false, testEnum, Filter.CompareType.EQUALS, \"222.1\");\r\n\t\t//Equals not\r\n\t\tmatches(true,  testEnum, Filter.CompareType.EQUALS_NOT, \"223\");\r\n\t\tmatches(true,  testEnum, Filter.CompareType.EQUALS_NOT, \"223.1\");\r\n\t\tmatches(true,  testEnum, Filter.CompareType.EQUALS_NOT, \"222.1\");\r\n\t\tmatches(false, testEnum, Filter.CompareType.EQUALS_NOT, \"222\");\r\n\t\tmatches(false, testEnum, Filter.CompareType.EQUALS_NOT, \"222.0\");\r\n\t\t//Contains\r\n\t\tmatches(true,  testEnum, Filter.CompareType.CONTAINS, \"222\");\r\n\t\tmatches(true,  testEnum, Filter.CompareType.CONTAINS, \"222.0\");\r\n\t\tmatches(false, testEnum, Filter.CompareType.CONTAINS, \"223\");\r\n\t\tmatches(false, testEnum, Filter.CompareType.CONTAINS, \"223.1\");\r\n\t\tmatches(false, testEnum, Filter.CompareType.CONTAINS, \"222.1\");\r\n\t\t//Contains not\r\n\t\tmatches(true,  testEnum, Filter.CompareType.CONTAINS_NOT, \"223\");\r\n\t\tmatches(true,  testEnum, Filter.CompareType.CONTAINS_NOT, \"223.1\");\r\n\t\tmatches(true,  testEnum, Filter.CompareType.CONTAINS_NOT, \"222.1\");\r\n\t\tmatches(false, testEnum, Filter.CompareType.CONTAINS_NOT, \"222\");\r\n\t\tmatches(false, testEnum, Filter.CompareType.CONTAINS_NOT, \"222.0\");\r\n\t\t//Regex\r\n\t\tmatches(true,  testEnum, Filter.CompareType.REGEX, \"222\");\r\n\t\tmatches(false, testEnum, Filter.CompareType.REGEX, \"222.0\");\r\n\t\tmatches(false, testEnum, Filter.CompareType.REGEX, \"223\");\r\n\t\tmatches(false, testEnum, Filter.CompareType.REGEX, \"223.1\");\r\n\t\tmatches(false, testEnum, Filter.CompareType.REGEX, \"222.1\");\r\n\t\t//Great than\r\n\t\tmatches(false, testEnum, Filter.CompareType.GREATER_THAN, \"222.0\");\r\n\t\tmatches(false, testEnum, Filter.CompareType.GREATER_THAN, \"222\");\r\n\t\tmatches(false, testEnum, Filter.CompareType.GREATER_THAN, \"222.1\");\r\n\t\tmatches(false, testEnum, Filter.CompareType.GREATER_THAN, \"223\");\r\n\t\tmatches(true,  testEnum, Filter.CompareType.GREATER_THAN, \"221.0\");\r\n\t\tmatches(true,  testEnum, Filter.CompareType.GREATER_THAN, \"221.9\");\r\n\t\tmatches(true,  testEnum, Filter.CompareType.GREATER_THAN, \"221\");\r\n\t\t//Less than\r\n\t\tmatches(false, testEnum, Filter.CompareType.LESS_THAN, \"222.0\");\r\n\t\tmatches(false, testEnum, Filter.CompareType.LESS_THAN, \"222\");\r\n\t\tmatches(true,  testEnum, Filter.CompareType.LESS_THAN, \"222.1\");\r\n\t\tmatches(true,  testEnum, Filter.CompareType.LESS_THAN, \"223\");\r\n\t\tmatches(false, testEnum, Filter.CompareType.LESS_THAN, \"221.0\");\r\n\t\tmatches(false, testEnum, Filter.CompareType.LESS_THAN, \"221.9\");\r\n\t\tmatches(false, testEnum, Filter.CompareType.LESS_THAN, \"221\");\r\n\t\t//Equals column\r\n\t\tmatches(true,  testEnum, Filter.CompareType.EQUALS_COLUMN, TestEnum.COLUMN_NUMBER.name(), 222);\r\n\t\tmatches(true,  testEnum, Filter.CompareType.EQUALS_COLUMN, TestEnum.COLUMN_NUMBER.name(), 222.0);\r\n\t\tmatches(false, testEnum, Filter.CompareType.EQUALS_COLUMN, TestEnum.COLUMN_NUMBER.name(), 223);\r\n\t\tmatches(false, testEnum, Filter.CompareType.EQUALS_COLUMN, TestEnum.COLUMN_NUMBER.name(), 223.1);\r\n\t\tmatches(false, testEnum, Filter.CompareType.EQUALS_COLUMN, TestEnum.COLUMN_NUMBER.name(), 222.1);\r\n\t\t//Equals not column\r\n\t\tmatches(true,  testEnum, Filter.CompareType.EQUALS_NOT_COLUMN, TestEnum.COLUMN_NUMBER.name(), 223);\r\n\t\tmatches(true,  testEnum, Filter.CompareType.EQUALS_NOT_COLUMN, TestEnum.COLUMN_NUMBER.name(), 223.1);\r\n\t\tmatches(true,  testEnum, Filter.CompareType.EQUALS_NOT_COLUMN, TestEnum.COLUMN_NUMBER.name(), 222.1);\r\n\t\tmatches(false, testEnum, Filter.CompareType.EQUALS_NOT_COLUMN, TestEnum.COLUMN_NUMBER.name(), 222);\r\n\t\tmatches(false, testEnum, Filter.CompareType.EQUALS_NOT_COLUMN, TestEnum.COLUMN_NUMBER.name(), 222.0);\r\n\t\t//Contains column\r\n\t\tmatches(true,  testEnum, Filter.CompareType.CONTAINS_COLUMN, TestEnum.COLUMN_NUMBER.name(), 222);\r\n\t\tmatches(true,  testEnum, Filter.CompareType.CONTAINS_COLUMN, TestEnum.COLUMN_NUMBER.name(), 222.0);\r\n\t\tmatches(false, testEnum, Filter.CompareType.CONTAINS_COLUMN, TestEnum.COLUMN_NUMBER.name(), 223);\r\n\t\tmatches(false, testEnum, Filter.CompareType.CONTAINS_COLUMN, TestEnum.COLUMN_NUMBER.name(), 223.1);\r\n\t\tmatches(false, testEnum, Filter.CompareType.CONTAINS_COLUMN, TestEnum.COLUMN_NUMBER.name(), 222.1);\r\n\t\t//Contains not column\r\n\t\tmatches(true,  testEnum, Filter.CompareType.CONTAINS_NOT_COLUMN, TestEnum.COLUMN_NUMBER.name(), 223);\r\n\t\tmatches(true,  testEnum, Filter.CompareType.CONTAINS_NOT_COLUMN, TestEnum.COLUMN_NUMBER.name(), 223.1);\r\n\t\tmatches(true,  testEnum, Filter.CompareType.CONTAINS_NOT_COLUMN, TestEnum.COLUMN_NUMBER.name(), 222.1);\r\n\t\tmatches(false, testEnum, Filter.CompareType.CONTAINS_NOT_COLUMN, TestEnum.COLUMN_NUMBER.name(), 222);\r\n\t\tmatches(false, testEnum, Filter.CompareType.CONTAINS_NOT_COLUMN, TestEnum.COLUMN_NUMBER.name(), 222.0);\r\n\t\t//Great than column\r\n\t\tmatches(false, testEnum, Filter.CompareType.GREATER_THAN_COLUMN, TestEnum.COLUMN_NUMBER.name(), 222.0);\r\n\t\tmatches(false, testEnum, Filter.CompareType.GREATER_THAN_COLUMN, TestEnum.COLUMN_NUMBER.name(), 222);\r\n\t\tmatches(false, testEnum, Filter.CompareType.GREATER_THAN_COLUMN, TestEnum.COLUMN_NUMBER.name(), 222.1);\r\n\t\tmatches(false, testEnum, Filter.CompareType.GREATER_THAN_COLUMN, TestEnum.COLUMN_NUMBER.name(), 223);\r\n\t\tmatches(true,  testEnum, Filter.CompareType.GREATER_THAN_COLUMN, TestEnum.COLUMN_NUMBER.name(), 221.0);\r\n\t\tmatches(true,  testEnum, Filter.CompareType.GREATER_THAN_COLUMN, TestEnum.COLUMN_NUMBER.name(), 221.9);\r\n\t\tmatches(true,  testEnum, Filter.CompareType.GREATER_THAN_COLUMN, TestEnum.COLUMN_NUMBER.name(), 221);\r\n\t\t//Less than column\r\n\t\tmatches(false, testEnum, Filter.CompareType.LESS_THAN_COLUMN, TestEnum.COLUMN_NUMBER.name(), 222.0);\r\n\t\tmatches(false, testEnum, Filter.CompareType.LESS_THAN_COLUMN, TestEnum.COLUMN_NUMBER.name(), 222);\r\n\t\tmatches(true,  testEnum, Filter.CompareType.LESS_THAN_COLUMN, TestEnum.COLUMN_NUMBER.name(), 222.1);\r\n\t\tmatches(true,  testEnum, Filter.CompareType.LESS_THAN_COLUMN, TestEnum.COLUMN_NUMBER.name(), 223);\r\n\t\tmatches(false, testEnum, Filter.CompareType.LESS_THAN_COLUMN, TestEnum.COLUMN_NUMBER.name(), 221.0);\r\n\t\tmatches(false, testEnum, Filter.CompareType.LESS_THAN_COLUMN, TestEnum.COLUMN_NUMBER.name(), 221.9);\r\n\t\tmatches(false, testEnum, Filter.CompareType.LESS_THAN_COLUMN, TestEnum.COLUMN_NUMBER.name(), 221);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void percentTest() {\r\n\t\t//Equals\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.EQUALS, \"222%\");\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.EQUALS, \"222.0%\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.EQUALS, \"223%\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.EQUALS, \"223.1%\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.EQUALS, \"222.1%\");\r\n\t\t//Equals not\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.EQUALS_NOT, \"223%\");\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.EQUALS_NOT, \"223.1%\");\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.EQUALS_NOT, \"222.1%\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.EQUALS_NOT, \"222%\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.EQUALS_NOT, \"222.0%\");\r\n\t\t//Contains\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.CONTAINS, \"222%\");\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.CONTAINS, \"222.0%\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.CONTAINS, \"223%\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.CONTAINS, \"223.1%\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.CONTAINS, \"222.1%\");\r\n\t\t//Contains not\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.CONTAINS_NOT, \"223%\");\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.CONTAINS_NOT, \"223.1%\");\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.CONTAINS_NOT, \"222.1%\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.CONTAINS_NOT, \"222%\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.CONTAINS_NOT, \"222.0%\");\r\n\t\t//Regex\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.REGEX, \"222\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.REGEX, \"222.0%\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.REGEX, \"223%\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.REGEX, \"223.1%\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.REGEX, \"222.1%\");\r\n\t\t//Great than\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.GREATER_THAN, \"222.0%\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.GREATER_THAN, \"222%\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.GREATER_THAN, \"222.1%\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.GREATER_THAN, \"223%\");\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.GREATER_THAN, \"221.0%\");\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.GREATER_THAN, \"221.9%\");\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.GREATER_THAN, \"221%\");\r\n\t\t//Less than\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.LESS_THAN, \"222.0%\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.LESS_THAN, \"222%\");\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.LESS_THAN, \"222.1%\");\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.LESS_THAN, \"223%\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.LESS_THAN, \"221.0%\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.LESS_THAN, \"221.9%\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.LESS_THAN, \"221%\");\r\n\t\t//Equals\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.EQUALS, \"222\");\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.EQUALS, \"222.0\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.EQUALS, \"223\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.EQUALS, \"223.1\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.EQUALS, \"222.1\");\r\n\t\t//Equals not\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.EQUALS_NOT, \"223\");\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.EQUALS_NOT, \"223.1\");\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.EQUALS_NOT, \"222.1\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.EQUALS_NOT, \"222\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.EQUALS_NOT, \"222.0\");\r\n\t\t//Contains\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.CONTAINS, \"222\");\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.CONTAINS, \"222.0\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.CONTAINS, \"223\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.CONTAINS, \"223.1\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.CONTAINS, \"222.1\");\r\n\t\t//Contains not\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.CONTAINS_NOT, \"223\");\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.CONTAINS_NOT, \"223.1\");\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.CONTAINS_NOT, \"222.1\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.CONTAINS_NOT, \"222\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.CONTAINS_NOT, \"222.0\");\r\n\t\t//Great than\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.GREATER_THAN, \"222.0\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.GREATER_THAN, \"222\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.GREATER_THAN, \"222.1\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.GREATER_THAN, \"223\");\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.GREATER_THAN, \"221.0\");\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.GREATER_THAN, \"221.9\");\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.GREATER_THAN, \"221\");\r\n\t\t//Less than\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.LESS_THAN, \"222.0\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.LESS_THAN, \"222\");\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.LESS_THAN, \"222.1\");\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.LESS_THAN, \"223\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.LESS_THAN, \"221.0\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.LESS_THAN, \"221.9\");\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.LESS_THAN, \"221\");\r\n\t\t//Equals column\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.EQUALS_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.22));\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.EQUALS_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.220));\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.EQUALS_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.23));\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.EQUALS_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.231));\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.EQUALS_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.221));\r\n\t\t//Equals not column\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.EQUALS_NOT_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.23));\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.EQUALS_NOT_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.231));\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.EQUALS_NOT_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.221));\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.EQUALS_NOT_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.22));\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.EQUALS_NOT_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.220));\r\n\t\t//Contains column\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.CONTAINS_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.22));\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.CONTAINS_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.220));\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.CONTAINS_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.23));\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.CONTAINS_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.231));\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.CONTAINS_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.221));\r\n\t\t//Contains not column\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.CONTAINS_NOT_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.23));\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.CONTAINS_NOT_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.231));\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.CONTAINS_NOT_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.221));\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.CONTAINS_NOT_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.22));\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.CONTAINS_NOT_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.220));\r\n\t\t//Great than column\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.GREATER_THAN_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.220));\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.GREATER_THAN_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.22));\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.GREATER_THAN_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.221));\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.GREATER_THAN_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.23));\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.GREATER_THAN_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.210));\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.GREATER_THAN_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.219));\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.GREATER_THAN_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.21));\r\n\t\t//Less than column\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.LESS_THAN_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.220));\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.LESS_THAN_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.22));\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.LESS_THAN_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.221));\r\n\t\tmatches(true,  TestEnum.PERCENT, Filter.CompareType.LESS_THAN_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.23));\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.LESS_THAN_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.210));\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.LESS_THAN_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.219));\r\n\t\tmatches(false, TestEnum.PERCENT, Filter.CompareType.LESS_THAN_COLUMN, TestEnum.COLUMN_PERCENT.name(), Percent.create(2.21));\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void allTest() {\r\n\t//Text\r\n\t\t//Equals\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.EQUALS, TEXT);\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.EQUALS, TEXT_PART);\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.EQUALS, TEXT_NOT);\r\n\t\t//Equals not\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.EQUALS_NOT, TEXT);\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.EQUALS_NOT, TEXT_PART);\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.EQUALS_NOT, TEXT_NOT);\r\n\t\t//Contains\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS, TEXT);\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS, TEXT_PART);\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.CONTAINS, TEXT_NOT);\r\n\t\t//Contains not\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.CONTAINS_NOT, TEXT);\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.CONTAINS_NOT, TEXT_PART);\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS_NOT, TEXT_NOT);\r\n\t\t//Regex\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.REGEX, TEXT);\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.REGEX, TEXT_PART);\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.REGEX, TEXT_NOT);\r\n\t//Number\r\n\t\t//Equals\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.EQUALS, \"222\");\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.EQUALS, \"222.0\");\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.EQUALS, \"223\");\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.EQUALS, \"223.1\");\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.EQUALS, \"222.1\");\r\n\t\t//Equals not\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.EQUALS_NOT, \"223\");\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.EQUALS_NOT, \"223.1\");\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.EQUALS_NOT, \"222.1\");\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.EQUALS_NOT, \"222\");\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.EQUALS_NOT, \"222.0\");\r\n\t\t//Contains\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS, \"222\");\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS, \"222.0\");\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.CONTAINS, \"223\");\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.CONTAINS, \"223.1\");\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.CONTAINS, \"222.1\");\r\n\t\t//Contains not\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS_NOT, \"223\");\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS_NOT, \"223.1\");\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS_NOT, \"222.1\");\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.CONTAINS_NOT, \"222\");\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.CONTAINS_NOT, \"222.0\");\r\n\t\t//Contains\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.REGEX, \"222\");\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.REGEX, \"222\\\\.0\");\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.REGEX, \"223\");\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.REGEX, \"223\\\\.1\");\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.REGEX, \"222\\\\.1\");\r\n\t//Date\r\n\t\t//Equals\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.EQUALS, DATE);\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.EQUALS, DATE_PART);\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.EQUALS, DATE_NOT);\r\n\t\t//Equals not\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.EQUALS_NOT, DATE);\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.EQUALS_NOT, DATE_PART);\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.EQUALS_NOT, DATE_NOT);\r\n\t\t//Contains\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS, DATE);\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS, DATE_PART);\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.CONTAINS, DATE_NOT);\r\n\t\t//Contains not\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.CONTAINS_NOT, DATE);\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.CONTAINS_NOT, DATE_PART);\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.CONTAINS_NOT, DATE_NOT);\r\n\t\t//Contains\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.REGEX, DATE);\r\n\t\tmatches(true,  new AllColumn<>(), Filter.CompareType.REGEX, DATE_PART);\r\n\t\tmatches(false, new AllColumn<>(), Filter.CompareType.REGEX, DATE_NOT);\r\n\t}\r\n\r\n\tpublic static class Item { }\r\n\r\n\tpublic class TestTableFormat implements SimpleTableFormat<Item> {\r\n\r\n\t\t@Override\r\n\t\tpublic EnumTableColumn<Item> valueOf(final String column) {\r\n\t\t\treturn TestEnum.valueOf(column);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic Object getColumnValue(final Item item, final String columnString) {\r\n\t\t\tCalendar calendar = Calendar.getInstance(TimeZone.getTimeZone(\"GMT\"));\r\n\t\t\tEnumTableColumn<?> column = valueOf(columnString);\r\n\t\t\tif (column instanceof TestEnum) {\r\n\t\t\t\tTestEnum format = (TestEnum) column;\r\n\t\t\t\tswitch (format) {\r\n\t\t\t\t\tcase TEXT:\r\n\t\t\t\t\t\treturn TEXT;\r\n\t\t\t\t\tcase TEXT_FORMAT:\r\n\t\t\t\t\t\treturn TEXT_FORMAT;\r\n\t\t\t\t\tcase DOUBLE:\r\n\t\t\t\t\t\treturn NUMBER_DOUBLE;\r\n\t\t\t\t\tcase FLOAT:\r\n\t\t\t\t\t\treturn NUMBER_FLOAT;\r\n\t\t\t\t\tcase LONG:\r\n\t\t\t\t\t\treturn NUMBER_LONG;\r\n\t\t\t\t\tcase INTEGER:\r\n\t\t\t\t\t\treturn NUMBER_INTEGER;\r\n\t\t\t\t\tcase PERCENT:\r\n\t\t\t\t\t\treturn PERCENT;\r\n\t\t\t\t\tcase DATE:\r\n\t\t\t\t\t\treturn Formatter.columnStringToDate(DATE);\r\n\t\t\t\t\tcase DATE_LAST:\r\n\t\t\t\t\t\t//minus 47 hours\r\n\t\t\t\t\t\tcalendar.setTime(new Date());\r\n\t\t\t\t\t\tcalendar.set(Calendar.MINUTE, 0);\r\n\t\t\t\t\t\tcalendar.set(Calendar.SECOND, 0);\r\n\t\t\t\t\t\tcalendar.set(Calendar.MILLISECOND, 0);\r\n\t\t\t\t\t\tcalendar.add(Calendar.HOUR_OF_DAY, +1);\r\n\t\t\t\t\t\tcalendar.add(Calendar.DAY_OF_MONTH, -2);\r\n\t\t\t\t\t\treturn calendar.getTime();\r\n\t\t\t\t\tcase DATE_LAST_LONG:\r\n\t\t\t\t\t\t//minus 400 days\r\n\t\t\t\t\t\tcalendar.setTime(new Date());\r\n\t\t\t\t\t\tcalendar.set(Calendar.MINUTE, 0);\r\n\t\t\t\t\t\tcalendar.set(Calendar.SECOND, 0);\r\n\t\t\t\t\t\tcalendar.set(Calendar.MILLISECOND, 0);\r\n\t\t\t\t\t\tcalendar.add(Calendar.HOUR_OF_DAY, +1);\r\n\t\t\t\t\t\tcalendar.add(Calendar.DAY_OF_MONTH, -400);\r\n\t\t\t\t\t\treturn calendar.getTime();\r\n\t\t\t\t\tcase DATE_NEXT:\r\n\t\t\t\t\t\t//plus 49 hours\r\n\t\t\t\t\t\tcalendar.setTime(new Date());\r\n\t\t\t\t\t\tcalendar.set(Calendar.MINUTE, 0);\r\n\t\t\t\t\t\tcalendar.set(Calendar.SECOND, 0);\r\n\t\t\t\t\t\tcalendar.set(Calendar.MILLISECOND, 0);\r\n\t\t\t\t\t\tcalendar.add(Calendar.DAY_OF_MONTH, 2);\r\n\t\t\t\t\t\treturn calendar.getTime();\r\n\t\t\t\t\tcase DATE_NEXT_LONG:\r\n\t\t\t\t\t\t//plus 400 days\r\n\t\t\t\t\t\tcalendar.setTime(new Date());\r\n\t\t\t\t\t\tcalendar.set(Calendar.MINUTE, 0);\r\n\t\t\t\t\t\tcalendar.set(Calendar.SECOND, 0);\r\n\t\t\t\t\t\tcalendar.set(Calendar.MILLISECOND, 0);\r\n\t\t\t\t\t\tcalendar.add(Calendar.DAY_OF_MONTH, 400);\r\n\t\t\t\t\t\treturn calendar.getTime();\r\n\t\t\t\t\tcase COLUMN_TEXT:\r\n\t\t\t\t\t\treturn textColumn;\r\n\t\t\t\t\tcase COLUMN_NUMBER:\r\n\t\t\t\t\t\treturn numberColumn;\r\n\t\t\t\t\tcase COLUMN_PERCENT:\r\n\t\t\t\t\t\treturn percentColumn;\r\n\t\t\t\t\tcase COLUMN_DATE:\r\n\t\t\t\t\t\treturn dateColumn;\r\n\t\t\t\t\tcase NULL:\r\n\t\t\t\t\t\treturn null;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic List<EnumTableColumn<Item>> getAllColumns() {\r\n\t\t\treturn new ArrayList<>(Arrays.asList(TestEnum.values()));\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic List<EnumTableColumn<Item>> getShownColumns() {\r\n\t\t\treturn null; //Only used by the GUI\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void addColumn(EnumTableColumn<Item> column) { }\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/gui/shared/menu/ExpressionExceptionTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.menu;\r\n\r\nimport com.udojava.evalex.Expression;\r\nimport java.util.HashSet;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class ExpressionExceptionTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void testNullPointerException() {\r\n\t\teval(\"\\\"\");\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testStringIndexOutOfBoundsException() {\r\n\t\teval(\"100\\\"\");\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testArithmeticException() {\r\n\t\teval(\"100/0\");\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testNumberFormatException() {\r\n\t\teval(\"1.0.\");\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testExpressionException() {\r\n\t\teval(\"\");\r\n\t}\r\n\r\n\tprivate void eval(String eval) {\r\n\t\t//Re-use expression\r\n\t\tExpression expression = new Expression(eval, JFormulaDialog.FORMULA_PRECISION);\r\n\t\tJFormulaDialog.safeEval(new HashSet<>(), expression);\r\n\t\tEnumTableFormatAdaptor.safeEval(expression);\r\n\t\t//One time use\r\n\t\tJFormulaDialog.safeEval(new HashSet<>(), new Expression(eval, JFormulaDialog.FORMULA_PRECISION));\r\n\t\tEnumTableFormatAdaptor.safeEval(new Expression(eval, JFormulaDialog.FORMULA_PRECISION));\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/gui/shared/menu/JMenuInfoTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.shared.menu;\r\n\r\nimport ca.odell.glazedlists.BasicEventList;\r\nimport ca.odell.glazedlists.EventList;\r\nimport ca.odell.glazedlists.SeparatorList;\r\nimport ch.qos.logback.classic.Level;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuInfo.MaterialTotal;\r\nimport net.nikr.eve.jeveasset.gui.tabs.materials.Material;\r\nimport net.nikr.eve.jeveasset.gui.tabs.materials.MaterialSeparatorComparator;\r\nimport net.nikr.eve.jeveasset.i18n.TabsMaterials;\r\nimport org.junit.*;\r\nimport static org.junit.Assert.assertEquals;\r\n\r\n\r\npublic class JMenuInfoTest extends TestUtil {\r\n\r\n\tprivate static Material summaryAll;\r\n\tprivate static Material summaryTotal_group1;\r\n\tprivate static Material summaryTotal_group2;\r\n\tprivate static Material summary_group1;\r\n\tprivate static Material summary_group2;\r\n\tprivate static Material all_location1;\r\n\tprivate static Material all_location2;\r\n\tprivate static Material total_location1_group1;\r\n\tprivate static Material total_location1_group2;\r\n\tprivate static Material total_location2_group1;\r\n\tprivate static Material total_location2_group2;\r\n\tprivate static Material name1_location1_group1;\r\n\tprivate static Material name2_location1_group2;\r\n\tprivate static Material name1_location2_group1;\r\n\tprivate static Material name2_location2_group2;\r\n\t/*\r\n\tprivate static Material location_location1_group1;\r\n\tprivate static Material location_location1_group2;\r\n\tprivate static Material location_location2_group1;\r\n\tprivate static Material location_location2_group2;\r\n\t*/\r\n\tprivate static final String NAME_1 = \"NAME_1\";\r\n\tprivate static final String NAME_2 = \"NAME_2\";\r\n\tprivate static final String NAME_3 = \"NAME_3\";\r\n\tprivate static final String NAME_4 = \"NAME_4\";\r\n\tprivate static final String GROUP_1 = \"GROUP_1\";\r\n\tprivate static final String GROUP_2 = \"GROUP_2\";\r\n\tprivate static final String LOCATION_1 = \"LOCATION_1\";\r\n\tprivate static final String LOCATION_2 = \"LOCATION_2\";\r\n\tprivate static final List<Material> ALL = new ArrayList<Material>();\r\n\r\n\tpublic JMenuInfoTest() {\r\n\t}\r\n\r\n\t@BeforeClass\r\n\tpublic static void setUpClass() throws Exception {\r\n\t\tTestUtil.setLoggingLevel(Level.OFF);\r\n\t\tsummaryAll = new Material(Material.MaterialType.SUMMARY_ALL, null, TabsMaterials.get().summary(), \"\", \"\");\r\n\t\tsummaryAll.updateValue(1, 400);\r\n\t\tALL.add(summaryAll);\r\n\r\n\t\tsummaryTotal_group1 = new Material(Material.MaterialType.SUMMARY_TOTAL, null, TabsMaterials.get().summary(), \"\", GROUP_1);\r\n\t\tsummaryTotal_group1.updateValue(1, 200);\r\n\t\tALL.add(summaryTotal_group1);\r\n\r\n\t\tsummaryTotal_group2 = new Material(Material.MaterialType.SUMMARY_TOTAL, null, TabsMaterials.get().summary(), \"\", GROUP_2);\r\n\t\tsummaryTotal_group2.updateValue(1, 200);\r\n\t\tALL.add(summaryTotal_group2);\r\n\r\n\t\tsummary_group1 = new Material(Material.MaterialType.SUMMARY, null, TabsMaterials.get().summary(), GROUP_1, NAME_1);\r\n\t\tsummary_group1.updateValue(1, 200);\r\n\t\tALL.add(summary_group1);\r\n\r\n\t\tsummary_group2 = new Material(Material.MaterialType.SUMMARY, null, TabsMaterials.get().summary(), GROUP_2, NAME_2);\r\n\t\tsummary_group2.updateValue(1, 200);\r\n\t\tALL.add(summary_group2);\r\n\r\n\t\tall_location1 = new Material(Material.MaterialType.LOCATIONS_ALL, null, LOCATION_1, \"\", \"\");\r\n\t\tall_location1.updateValue(1, 200);\r\n\t\tALL.add(all_location1);\r\n\r\n\t\tall_location2 = new Material(Material.MaterialType.LOCATIONS_ALL, null, LOCATION_2, \"\", \"\");\r\n\t\tall_location2.updateValue(1, 200);\r\n\t\tALL.add(all_location2);\r\n\r\n\t\ttotal_location1_group1 = new Material(Material.MaterialType.LOCATIONS_TOTAL, null, LOCATION_1, \"\", GROUP_1);\r\n\t\ttotal_location1_group1.updateValue(1, 100);\r\n\t\tALL.add(total_location1_group1);\r\n\r\n\t\ttotal_location1_group2 = new Material(Material.MaterialType.LOCATIONS_TOTAL, null, LOCATION_1, \"\", GROUP_2);\r\n\t\ttotal_location1_group2.updateValue(1, 100);\r\n\t\tALL.add(total_location1_group2);\r\n\r\n\t\ttotal_location2_group1 = new Material(Material.MaterialType.LOCATIONS_TOTAL, null, LOCATION_2, \"\", GROUP_1);\r\n\t\ttotal_location2_group1.updateValue(1, 100);\r\n\t\tALL.add(total_location2_group1);\r\n\r\n\t\ttotal_location2_group2 = new Material(Material.MaterialType.LOCATIONS_TOTAL, null, LOCATION_2, \"\", GROUP_2);\r\n\t\ttotal_location2_group2.updateValue(1, 100);\r\n\t\tALL.add(total_location2_group2);\r\n\r\n\t\tname1_location1_group1 = new Material(Material.MaterialType.LOCATIONS, null, LOCATION_1, GROUP_1, NAME_1);\r\n\t\tname1_location1_group1.updateValue(1, 100);\r\n\t\tALL.add(name1_location1_group1);\r\n\r\n\t\tname2_location1_group2 = new Material(Material.MaterialType.LOCATIONS, null, LOCATION_1, GROUP_2, NAME_2);\r\n\t\tname2_location1_group2.updateValue(1, 100);\r\n\t\tALL.add(name2_location1_group2);\r\n\r\n\t\tname1_location2_group1 = new Material(Material.MaterialType.LOCATIONS, null, LOCATION_2, GROUP_1, NAME_1);\r\n\t\tname1_location2_group1.updateValue(1, 100);\r\n\t\tALL.add(name1_location2_group1);\r\n\r\n\t\tname2_location2_group2 = new Material(Material.MaterialType.LOCATIONS, null, LOCATION_2, GROUP_2, NAME_2);\r\n\t\tname2_location2_group2.updateValue(1, 100);\r\n\t\tALL.add(name2_location2_group2);\r\n\t}\r\n\r\n\t@AfterClass\r\n\tpublic static void tearDownClass() throws Exception {\r\n\t\tTestUtil.setLoggingLevel(Level.INFO);\r\n\t}\r\n\r\n\t@Before\r\n\tpublic void setUp() {\r\n\t}\r\n\r\n\t@After\r\n\tpublic void tearDown() {\r\n\t}\r\n\r\n\t/**\r\n\t * Test of calcMaterialTotal method, of class JMenuInfo.\r\n\t */\r\n\t@Test\r\n\tpublic void testCalcMaterialTotal() {\r\n\t\tList<Material> selected;\r\n\t\tMaterialTotal result;\r\n\r\n\t\tselected = new ArrayList<Material>();\r\n\t\tselected.add(summaryAll);\r\n\t\tselected.add(summaryTotal_group1);\r\n\t\tselected.add(summaryTotal_group2);\r\n\t\tselected.add(summary_group1);\r\n\t\tselected.add(summary_group2);\r\n\t\tselected.add(all_location1);\r\n\t\tselected.add(all_location2);\r\n\t\tselected.add(total_location1_group1);\r\n\t\tselected.add(total_location1_group2);\r\n\t\tselected.add(total_location2_group1);\r\n\t\tselected.add(total_location2_group2);\r\n\t\tselected.add(name1_location1_group1);\r\n\t\tselected.add(name2_location1_group2);\r\n\t\tselected.add(name1_location2_group1);\r\n\t\tselected.add(name2_location2_group2);\r\n\t\tresult = JMenuInfo.calcMaterialTotal(selected, ALL);\r\n\t\tassertEquals(400, result.getTotalValue(), 0);\r\n\r\n\t\tEventList<Material> materialEventList = new BasicEventList<Material>();\r\n\t\tmaterialEventList.add(summaryAll);\r\n\t\tmaterialEventList.add(summaryTotal_group1);\r\n\t\tmaterialEventList.add(summaryTotal_group2);\r\n\t\tmaterialEventList.add(summary_group1);\r\n\t\tmaterialEventList.add(summary_group2);\r\n\t\tmaterialEventList.add(all_location1);\r\n\t\tmaterialEventList.add(all_location2);\r\n\t\tmaterialEventList.add(total_location1_group1);\r\n\t\tmaterialEventList.add(total_location1_group2);\r\n\t\tmaterialEventList.add(total_location2_group1);\r\n\t\tmaterialEventList.add(total_location2_group2);\r\n\t\tmaterialEventList.add(name1_location1_group1);\r\n\t\tmaterialEventList.add(name2_location1_group2);\r\n\t\tmaterialEventList.add(name1_location2_group1);\r\n\t\tmaterialEventList.add(name2_location2_group2);\r\n\t\tSeparatorList<Material> separatorList = new SeparatorList<Material>(materialEventList, new MaterialSeparatorComparator(), 1, Integer.MAX_VALUE);\r\n\t\tresult = JMenuInfo.calcMaterialTotal(separatorList, ALL);\r\n\t\tassertEquals(400, result.getTotalValue(), 0);\r\n\r\n\t\tselected = new ArrayList<Material>();\r\n\t\tselected.add(summaryTotal_group1);\r\n\t\tselected.add(summaryTotal_group2);\r\n\t\tselected.add(summary_group1);\r\n\t\tselected.add(summary_group2);\r\n\t\tselected.add(all_location1);\r\n\t\tselected.add(all_location2);\r\n\t\tselected.add(total_location1_group1);\r\n\t\tselected.add(total_location1_group2);\r\n\t\tselected.add(total_location2_group1);\r\n\t\tselected.add(total_location2_group2);\r\n\t\tselected.add(name1_location1_group1);\r\n\t\tselected.add(name2_location1_group2);\r\n\t\tselected.add(name1_location2_group1);\r\n\t\tselected.add(name2_location2_group2);\r\n\t\tresult = JMenuInfo.calcMaterialTotal(selected, ALL);\r\n\t\tassertEquals(400, result.getTotalValue(), 0);\r\n\r\n\t\tselected = new ArrayList<Material>();\r\n\t\tselected.add(summary_group1);\r\n\t\tselected.add(summary_group2);\r\n\t\tselected.add(all_location1);\r\n\t\tselected.add(all_location2);\r\n\t\tselected.add(total_location1_group1);\r\n\t\tselected.add(total_location1_group2);\r\n\t\tselected.add(total_location2_group1);\r\n\t\tselected.add(total_location2_group2);\r\n\t\tselected.add(name1_location1_group1);\r\n\t\tselected.add(name2_location1_group2);\r\n\t\tselected.add(name1_location2_group1);\r\n\t\tselected.add(name2_location2_group2);\r\n\t\tresult = JMenuInfo.calcMaterialTotal(selected, ALL);\r\n\t\tassertEquals(400, result.getTotalValue(), 0);\r\n\r\n\t\tselected = new ArrayList<Material>();\r\n\t\tselected.add(all_location1);\r\n\t\tselected.add(all_location2);\r\n\t\tselected.add(total_location1_group1);\r\n\t\tselected.add(total_location1_group2);\r\n\t\tselected.add(total_location2_group1);\r\n\t\tselected.add(total_location2_group2);\r\n\t\tselected.add(name1_location1_group1);\r\n\t\tselected.add(name2_location1_group2);\r\n\t\tselected.add(name1_location2_group1);\r\n\t\tselected.add(name2_location2_group2);\r\n\t\tresult = JMenuInfo.calcMaterialTotal(selected, ALL);\r\n\t\tassertEquals(400, result.getTotalValue(), 0);\r\n\r\n\t\tselected = new ArrayList<Material>();\r\n\t\tselected.add(total_location1_group1);\r\n\t\tselected.add(total_location1_group2);\r\n\t\tselected.add(total_location2_group1);\r\n\t\tselected.add(total_location2_group2);\r\n\t\tselected.add(name1_location1_group1);\r\n\t\tselected.add(name2_location1_group2);\r\n\t\tselected.add(name1_location2_group1);\r\n\t\tselected.add(name2_location2_group2);\r\n\t\tresult = JMenuInfo.calcMaterialTotal(selected, ALL);\r\n\t\tassertEquals(400, result.getTotalValue(), 0);\r\n\r\n\t\tselected = new ArrayList<Material>();\r\n\t\tselected.add(name1_location1_group1);\r\n\t\tselected.add(name2_location1_group2);\r\n\t\tselected.add(name1_location2_group1);\r\n\t\tselected.add(name2_location2_group2);\r\n\t\tresult = JMenuInfo.calcMaterialTotal(selected, ALL);\r\n\t\tassertEquals(400, result.getTotalValue(), 0);\r\n\r\n\t\tselected = new ArrayList<Material>();\r\n\t\tselected.add(summary_group1);\r\n\t\tselected.add(all_location1);\r\n\t\tresult = JMenuInfo.calcMaterialTotal(selected, ALL);\r\n\t\tassertEquals(300, result.getTotalValue(), 0);\r\n\r\n\t\tselected = new ArrayList<Material>();\r\n\t\tselected.add(summaryTotal_group1);\r\n\t\tselected.add(all_location1);\r\n\t\tresult = JMenuInfo.calcMaterialTotal(selected, ALL);\r\n\t\tassertEquals(300, result.getTotalValue(), 0);\r\n\r\n\t\tselected = new ArrayList<Material>();\r\n\t\tselected.add(summary_group1);\r\n\t\tselected.add(total_location1_group1);\r\n\t\tresult = JMenuInfo.calcMaterialTotal(selected, ALL);\r\n\t\tassertEquals(200, result.getTotalValue(), 0);\r\n\r\n\t\tselected = new ArrayList<Material>();\r\n\t\tselected.add(summary_group1);\r\n\t\tselected.add(total_location1_group2);\r\n\t\tresult = JMenuInfo.calcMaterialTotal(selected, ALL);\r\n\t\tassertEquals(300, result.getTotalValue(), 0);\r\n\r\n\t\tselected = new ArrayList<Material>();\r\n\t\tselected.add(summaryTotal_group1);\r\n\t\tselected.add(total_location1_group2);\r\n\t\tresult = JMenuInfo.calcMaterialTotal(selected, ALL);\r\n\t\tassertEquals(300, result.getTotalValue(), 0);\r\n\r\n\t\tselected = new ArrayList<Material>();\r\n\t\tselected.add(summary_group1);\r\n\t\tselected.add(name1_location1_group1);\r\n\t\tresult = JMenuInfo.calcMaterialTotal(selected, ALL);\r\n\t\tassertEquals(200, result.getTotalValue(), 0);\r\n\r\n\t\tselected = new ArrayList<Material>();\r\n\t\tselected.add(summary_group1);\r\n\t\tselected.add(name2_location1_group2);\r\n\t\tresult = JMenuInfo.calcMaterialTotal(selected, ALL);\r\n\t\tassertEquals(300, result.getTotalValue(), 0);\r\n\r\n\t\tselected = new ArrayList<Material>();\r\n\t\tselected.add(summary_group1);\r\n\t\tselected.add(name1_location2_group1);\r\n\t\tresult = JMenuInfo.calcMaterialTotal(selected, ALL);\r\n\t\tassertEquals(200, result.getTotalValue(), 0);\r\n\r\n\t\tselected = new ArrayList<Material>();\r\n\t\tselected.add(summary_group1);\r\n\t\tselected.add(name2_location2_group2);\r\n\t\tresult = JMenuInfo.calcMaterialTotal(selected, ALL);\r\n\t\tassertEquals(300, result.getTotalValue(), 0);\r\n\r\n\t\tselected = new ArrayList<Material>();\r\n\t\tselected.add(summaryTotal_group1);\r\n\t\tselected.add(name1_location1_group1);\r\n\t\tresult = JMenuInfo.calcMaterialTotal(selected, ALL);\r\n\t\tassertEquals(200, result.getTotalValue(), 0);\r\n\r\n\t\tselected = new ArrayList<Material>();\r\n\t\tselected.add(summaryTotal_group1);\r\n\t\tselected.add(name2_location1_group2);\r\n\t\tresult = JMenuInfo.calcMaterialTotal(selected, ALL);\r\n\t\tassertEquals(300, result.getTotalValue(), 0);\r\n\r\n\t\tselected = new ArrayList<Material>();\r\n\t\tselected.add(summaryTotal_group1);\r\n\t\tselected.add(name1_location2_group1);\r\n\t\tresult = JMenuInfo.calcMaterialTotal(selected, ALL);\r\n\t\tassertEquals(200, result.getTotalValue(), 0);\r\n\r\n\t\tselected = new ArrayList<Material>();\r\n\t\tselected.add(summaryTotal_group1);\r\n\t\tselected.add(name2_location2_group2);\r\n\t\tresult = JMenuInfo.calcMaterialTotal(selected, ALL);\r\n\t\tassertEquals(300, result.getTotalValue(), 0);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/gui/shared/menu/JMenuLookupOnlineTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.shared.menu;\r\n\r\nimport java.io.IOException;\r\nimport java.net.HttpURLConnection;\r\nimport java.net.URL;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuLookup.LookupLinks;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\nimport static org.junit.Assert.assertEquals;\r\nimport static org.junit.Assert.assertFalse;\r\nimport static org.junit.Assert.assertNotNull;\r\nimport static org.junit.Assert.assertTrue;\r\nimport static org.junit.Assert.fail;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class JMenuLookupOnlineTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void testLookup() {\r\n\t\tMenuData<String> menuData = new MenuData<>();\r\n\t\tmenuData.getSystemLocations().add(ApiIdConverter.getLocation(30003392));\r\n\t\tmenuData.getRegionLocations().add(ApiIdConverter.getLocation(10000042));\r\n\t\tmenuData.getConstellationLocations().add(ApiIdConverter.getLocation(20000001)); //San Matar\r\n\t\tmenuData.getStationNames().add(\"Eygfe VII - Moon 19 - Minmatar Mining Corporation Refinery\");\r\n\t\tmenuData.getPlanetNames().add(\"Balle III\");\r\n\t\tmenuData.getSystemNames().add(\"Eygfe\");\r\n\t\tmenuData.getRegionNames().add(\"Metropolis\");\r\n\t\tmenuData.getMarketTypeIDs().add(10679);\r\n\t\tmenuData.getItemCounts().put(ApiIdConverter.getItem(10679), 1L);\r\n\t\tmenuData.getTypeIDs().add(10679);\r\n\t\tmenuData.getBlueprintTypeIDs().add(10679);\r\n\t\tmenuData.getInventionTypeIDs().add(10679);\r\n\t\tmenuData.getCorporationIDs().add(1000055);\r\n\t\tmenuData.getCorporationNames().add(\"Minmatar Mining Corporation\");\r\n\t\tList<Lookup> lookups = new ArrayList<>();\r\n\t\tfor (LookupLinks lookupLinks : LookupLinks.values()) {\r\n\t\t\tif (lookupLinks == LookupLinks.ZKILLBOARD_ITEM\r\n\t\t\t\t|| lookupLinks == LookupLinks.ZKILLBOARD_SYSTEM\r\n\t\t\t\t|| lookupLinks == LookupLinks.ZKILLBOARD_CONSTELLATION\r\n\t\t\t\t|| lookupLinks == LookupLinks.ZKILLBOARD_REGION\r\n\t\t\t\t|| lookupLinks == LookupLinks.EVECONOMY ) {\r\n\t\t\t\tcontinue; //Protected by cloudflare\r\n\t\t\t}\r\n\t\t\tif (lookupLinks == LookupLinks.EVEMISSIONEER_SYSTEM\r\n\t\t\t\t|| lookupLinks == LookupLinks.EVEMISSIONEER_CONSTELLATION\r\n\t\t\t\t|| lookupLinks == LookupLinks.EVEMISSIONEER_REGION\r\n\t\t\t\t|| lookupLinks == LookupLinks.EVEMISSIONEER_CORPORATION ) {\r\n\t\t\t\tcontinue; //Returns http code 429\r\n\t\t\t}\r\n\t\t\tSet<String> links = lookupLinks.getLinks(menuData);\r\n\t\t\tassertNotNull(lookupLinks.name() + \" is null\", links);\r\n\t\t\tBoolean enabled = lookupLinks.isEnabled(menuData);\r\n\t\t\tif (lookupLinks != LookupLinks.EVEMAPS_DOTLAN_OVERVIEW_GROUP\r\n\t\t\t\t&& lookupLinks != LookupLinks.ZKILLBOARD_OVERVIEW_GROUP ) {\r\n\t\t\t\tassertFalse(lookupLinks.name() + \" links are empty\", links.isEmpty());\r\n\t\t\t\tassertNotNull(lookupLinks.name() + \" enabled is null\", enabled);\r\n\t\t\t\tassertTrue(lookupLinks.name() + \" enabled is false\", enabled);\r\n\t\t\t} else {\r\n\t\t\t\tassertTrue(lookupLinks.name() + \" enabled is not null\", enabled == null);\r\n\t\t\t}\r\n\t\t\tfor (String link : links) {\r\n\t\t\t\tlookups.add(new Lookup(lookupLinks, link));\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (Lookup lookup : lookups) {\r\n\t\t\tlookup.start();\r\n\t\t}\r\n\t\tfor (Lookup lookup : lookups) {\r\n\t\t\ttry {\r\n\t\t\t\tlookup.join();\r\n\t\t\t\tassertEquals(lookup.lookupLinks.name() + \" returned \" + lookup.code + \" for \" + lookup.link, HttpURLConnection.HTTP_OK, lookup.code);\r\n\t\t\t} catch (InterruptedException ex) {\r\n\t\t\t\tfail(ex.getMessage());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class Lookup extends Thread {\r\n\r\n\t\tprivate final LookupLinks lookupLinks;\r\n\t\tprivate final String link;\r\n\t\tprivate int code = -1;\r\n\r\n\t\tpublic Lookup(LookupLinks lookupLinks, String link) {\r\n\t\t\tthis.lookupLinks = lookupLinks;\r\n\t\t\tthis.link = link;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void run() {\r\n\t\t\tHttpURLConnection connection = null;\r\n\t\t\ttry {\r\n\t\t\t\tURL url = new URL(link);\r\n\t\t\t\tconnection = (HttpURLConnection)url.openConnection();\r\n\t\t\t\tconnection.setRequestMethod(\"GET\");\r\n\t\t\t\tconnection.setRequestProperty(\"User-Agent\", \"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0\");\r\n\t\t\t\tconnection.setInstanceFollowRedirects(false);\r\n\t\t\t\tconnection.connect();\r\n\t\t\t\tcode = connection.getResponseCode();\r\n\t\t\t} catch (IOException ex) {\r\n\t\t\t\tfail(lookupLinks.name() + \" failed with \" + ex.getMessage() + \" for \" + link);\r\n\t\t\t} finally {\r\n\t\t\t\tif (connection != null) {\r\n\t\t\t\t\tconnection.disconnect();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/gui/sounds/SoundsTest.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.sounds;\n\nimport java.io.File;\nimport java.net.URISyntaxException;\nimport net.nikr.eve.jeveasset.TestUtil;\nimport static org.junit.Assert.assertTrue;\nimport static org.junit.Assert.fail;\nimport org.junit.Test;\n\n\npublic class SoundsTest extends TestUtil {\n\n\t@Test\n\tpublic void testExists() {\n\t\tfor (DefaultSound i : DefaultSound.values()) {\n\t\t\ttry {\n\t\t\t\tFile file = new File(DefaultSound.class.getResource(i.getFilename()).toURI());\n\t\t\t\tassertTrue(i.getFilename() + \" not found\", file.exists());\n\t\t\t} catch (URISyntaxException ex) {\n\t\t\t\tfail(ex.getMessage());\n\t\t\t}\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testUnused() {\n\t\ttry {\n\t\t\tFile dir = new File(DefaultSound.class.getResource(\"DefaultSound.class\").toURI()).getParentFile();\n\t\t\tfor (String filename : dir.list()) {\n\t\t\t\tif (filename.endsWith(\".class\")) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tboolean ok = false;\n\t\t\t\t//Images Class\n\t\t\t\tfor (DefaultSound i : DefaultSound.values()) {\n\t\t\t\t\tif (filename.equals(i.getFilename())) {\n\t\t\t\t\t\tok = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tassertTrue(filename + \" is not used anywhere\", ok);\n\t\t\t}\n\t\t} catch (URISyntaxException ex) {\n\t\t\tfail(\"Directory not found\");\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testFilenames() {\n\t\tfor (DefaultSound i : DefaultSound.values()) {\n\t\t\tString properFilename = i.name().toLowerCase() + \".mp3\";\n\t\t\tif (!i.getFilename().isEmpty() && !properFilename.equals(i.getFilename())) {\n\t\t\t\tfail(i.toString() + \" filename should be \" + properFilename + \" but is \" + i.getFilename());\n\t\t\t}\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/gui/tabs/TableFormatTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs;\r\n\r\nimport ca.odell.glazedlists.GlazedLists;\r\nimport java.awt.Color;\r\nimport java.awt.Component;\r\nimport java.lang.reflect.Method;\r\nimport java.util.ArrayList;\r\nimport java.util.Collections;\r\nimport java.util.Comparator;\r\nimport java.util.Date;\r\nimport javax.swing.JComponent;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyJournal;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyNpcStanding;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawNpcStanding.FromType;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.sde.ReprocessedMaterial;\r\nimport net.nikr.eve.jeveasset.data.settings.PriceData;\r\nimport net.nikr.eve.jeveasset.data.settings.tag.Tags;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.account.AccountTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.dialogs.settings.ColorsTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.shared.StringComparators;\r\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter.AllColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.filter.FilterMatcherTest.TestEnum;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JFormulaDialog;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.ColumnManager.FormulaColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.ColumnManager.JumpColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableColumn;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.ISK;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.ModulePriceValue;\r\nimport net.nikr.eve.jeveasset.gui.tabs.agents.AgentsTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.assets.AssetTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.contracts.ContractsTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.items.ItemTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.jobs.IndustryJobTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.journal.JournalTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.loadout.Loadout;\r\nimport net.nikr.eve.jeveasset.gui.tabs.loadout.LoadoutExtendedTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.loadout.LoadoutTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.loyalty.LoyaltyPointsTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.materials.Material;\r\nimport net.nikr.eve.jeveasset.gui.tabs.materials.MaterialExtendedTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.materials.MaterialTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.mining.ExtractionsTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.mining.MiningTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.orders.MarketTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.overview.Overview;\r\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.prices.PriceChangesTab.PriceChange;\r\nimport net.nikr.eve.jeveasset.gui.tabs.prices.PriceChangesTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.reprocessed.ReprocessedExtendedTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.reprocessed.ReprocessedInterface;\r\nimport net.nikr.eve.jeveasset.gui.tabs.reprocessed.ReprocessedItem;\r\nimport net.nikr.eve.jeveasset.gui.tabs.reprocessed.ReprocessedTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.reprocessed.ReprocessedTotal;\r\nimport net.nikr.eve.jeveasset.gui.tabs.skills.SkillsTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.slots.SlotsTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.standing.NpcStandingTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileItem;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.StockpileExtendedTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.StockpileTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.tracker.TrackerSkillPointsFilterTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.transaction.TransactionTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.tree.TreeAsset;\r\nimport net.nikr.eve.jeveasset.gui.tabs.tree.TreeTableFormat;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.Value;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.ValueTableFormat;\r\nimport net.nikr.eve.jeveasset.io.shared.ConverterTestOptions;\r\nimport net.nikr.eve.jeveasset.io.shared.ConverterTestOptionsGetter;\r\nimport net.nikr.eve.jeveasset.io.shared.ConverterTestUtil;\r\nimport static org.junit.Assert.assertEquals;\r\nimport static org.junit.Assert.assertNotNull;\r\nimport static org.junit.Assert.assertTrue;\r\nimport static org.junit.Assert.fail;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class TableFormatTest extends TestUtil {\r\n\r\n\tprivate static final Boolean BOOLEAN_VALUE = true;\r\n\tprivate static final String STRING_VALUE = \"A String\";\r\n\tprivate static final Integer INTEGER_VALUE = 5;\r\n\tprivate static final Long LONG_VALUE = 5L;\r\n\tprivate static final Float FLOAT_VALUE = 5.1f;\r\n\tprivate static final Double DOUBLE_VALUE = 5.1;\r\n\tprivate static final Date DATE_VALUE = new Date();\r\n\r\n\t@Test\r\n\tpublic void testTableFormatClass() {\r\n\t\tboolean setValues = true;\r\n\t\tboolean setNull = false;\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\t//Shared\r\n\t\t\tTags tags = new Tags();\r\n\t\t\tEsiOwner owner = ConverterTestUtil.getEsiOwner(options);\r\n\t\t\tItem item = new Item(INTEGER_VALUE, STRING_VALUE, STRING_VALUE, STRING_VALUE, LONG_VALUE, FLOAT_VALUE, FLOAT_VALUE, FLOAT_VALUE, INTEGER_VALUE, STRING_VALUE, BOOLEAN_VALUE, INTEGER_VALUE, INTEGER_VALUE, INTEGER_VALUE, STRING_VALUE, STRING_VALUE, STRING_VALUE);\r\n\t\t\tMyLocation location = new MyLocation(LONG_VALUE, STRING_VALUE, LONG_VALUE, STRING_VALUE, LONG_VALUE, STRING_VALUE, LONG_VALUE, STRING_VALUE, STRING_VALUE);\r\n\t\t//Diaglogs\r\n\t\t\t//Options\r\n\t\t\ttest(ColorsTableFormat.class);\r\n\t\t\t//Accounts\r\n\t\t\ttest(AccountTableFormat.class);\r\n\t\t\tfor (AccountTableFormat tableFormat : AccountTableFormat.values()) {\r\n\t\t\t\ttest(tableFormat, tableFormat.getType(), tableFormat.getColumnValue(owner));\r\n\t\t\t}\r\n\t\t//Primary Tools\r\n\t\t\t//Asset\r\n\t\t\ttest(AssetTableFormat.class);\r\n\t\t\tMyAsset asset = ConverterTestUtil.getMyAsset(owner, setNull, setValues, options);\r\n\t\t\tfor (AssetTableFormat tableFormat : AssetTableFormat.values()) {\r\n\t\t\t\ttest(tableFormat, tableFormat.getType(), tableFormat.getColumnValue(asset));\r\n\t\t\t}\r\n\t\t\t//Contract\r\n\t\t\ttest(ContractsTableFormat.class);\r\n\t\t\tMyContract saveMyContract = ConverterTestUtil.getMyContract(setNull, setValues, options);\r\n\t\t\tMyContractItem saveMyContractItem = ConverterTestUtil.getMyContractItem(saveMyContract, setNull, setValues, options);\r\n\t\t\tfor (ContractsTableFormat tableFormat : ContractsTableFormat.values()) {\r\n\t\t\t\ttest(tableFormat, tableFormat.getType(), tableFormat.getColumnValue(saveMyContractItem));\r\n\t\t\t}\r\n\t\t\t//Journal\r\n\t\t\ttest(JournalTableFormat.class);\r\n\t\t\tMyJournal saveMyJournal = ConverterTestUtil.getMyJournal(owner, setNull, setValues, options);\r\n\t\t\tfor (JournalTableFormat tableFormat : JournalTableFormat.values()) {\r\n\t\t\t\ttest(tableFormat, tableFormat.getType(), tableFormat.getColumnValue(saveMyJournal));\r\n\t\t\t}\r\n\t\t\t//Market Order\r\n\t\t\ttest(MarketTableFormat.class);\r\n\t\t\tMyMarketOrder saveMyMarketOrder = ConverterTestUtil.getMyMarketOrder(owner, setNull, setValues, options);\r\n\t\t\tfor (MarketTableFormat tableFormat : MarketTableFormat.values()) {\r\n\t\t\t\ttest(tableFormat, tableFormat.getType(), tableFormat.getColumnValue(saveMyMarketOrder));\r\n\t\t\t}\r\n\t\t\t//Transaction\r\n\t\t\ttest(TransactionTableFormat.class);\r\n\t\t\tMyTransaction saveMyTransaction = ConverterTestUtil.getMyTransaction(owner, setNull, setValues, options);\r\n\t\t\tfor (TransactionTableFormat tableFormat : TransactionTableFormat.values()) {\r\n\t\t\t\ttest(tableFormat, tableFormat.getType(), tableFormat.getColumnValue(saveMyTransaction));\r\n\t\t\t}\r\n\t\t\t//Industry Job\r\n\t\t\ttest(IndustryJobTableFormat.class);\r\n\t\t\tMyIndustryJob saveMyIndustryJob = ConverterTestUtil.getMyIndustryJob(owner, setNull, setValues, options);\r\n\t\t\tfor (IndustryJobTableFormat tableFormat : IndustryJobTableFormat.values()) {\r\n\t\t\t\ttest(tableFormat, tableFormat.getType(), tableFormat.getColumnValue(saveMyIndustryJob));\r\n\t\t\t}\r\n\t\t\t//Skills\r\n\t\t\ttest(SkillsTableFormat.class);\r\n\t\t\t//Loyalty Points\r\n\t\t\ttest(LoyaltyPointsTableFormat.class);\r\n\t\t\t//NPC Standing\r\n\t\t\ttest(NpcStandingTableFormat.class);\r\n\t\t\t//Agents\r\n\t\t\ttest(AgentsTableFormat.class);\r\n\t\t\t//Mining\r\n\t\t\ttest(MiningTableFormat.class);\r\n\t\t\t//Extractions\r\n\t\t\ttest(ExtractionsTableFormat.class);\r\n\t\t//Secondary Tools\r\n\t\t\t//Slots\r\n\t\t\ttest(SlotsTableFormat.class);\r\n\t\t\t//Item\r\n\t\t\ttest(ItemTableFormat.class);\r\n\t\t\tfor (ItemTableFormat tableFormat : ItemTableFormat.values()) {\r\n\t\t\t\ttest(tableFormat, tableFormat.getType(), tableFormat.getColumnValue(item));\r\n\t\t\t}\r\n\t\t\t//Loadout\r\n\t\t\ttest(LoadoutTableFormat.class);\r\n\t\t\ttest(LoadoutExtendedTableFormat.class);\r\n\t\t\tLoadout loadout = new Loadout(item, location, owner, STRING_VALUE, asset, STRING_VALUE, DOUBLE_VALUE, DOUBLE_VALUE, LONG_VALUE, BOOLEAN_VALUE);\r\n\t\t\tfor (LoadoutTableFormat tableFormat : LoadoutTableFormat.values()) {\r\n\t\t\t\ttest(tableFormat, tableFormat.getType(), tableFormat.getColumnValue(loadout));\r\n\t\t\t}\r\n\t\t\tfor (LoadoutExtendedTableFormat tableFormat : LoadoutExtendedTableFormat.values()) {\r\n\t\t\t\ttest(tableFormat, tableFormat.getType(), tableFormat.getColumnValue(loadout));\r\n\t\t\t}\r\n\t\t\t//Overview\r\n\t\t\ttest(OverviewTableFormat.class);\r\n\t\t\tOverview overview = new Overview(STRING_VALUE, location, DOUBLE_VALUE, DOUBLE_VALUE, LONG_VALUE, DOUBLE_VALUE);\r\n\t\t\tfor (OverviewTableFormat tableFormat : OverviewTableFormat.values()) {\r\n\t\t\t\ttest(tableFormat, tableFormat.getType(), tableFormat.getColumnValue(overview));\r\n\t\t\t}\r\n\t\t\t//Price Change\r\n\t\t\ttest(PriceChangesTableFormat.class);\r\n\t\t\tPriceChange priceChange = new PriceChange(INTEGER_VALUE, item, LONG_VALUE);\r\n\t\t\tfor (PriceChangesTableFormat tableFormat : PriceChangesTableFormat.values()) {\r\n\t\t\t\ttest(tableFormat, tableFormat.getType(), tableFormat.getColumnValue(priceChange));\r\n\t\t\t}\r\n\t\t\t//Reprocessed\r\n\t\t\ttest(ReprocessedTableFormat.class);\r\n\t\t\tReprocessedMaterial reprocessedMaterial = new ReprocessedMaterial(INTEGER_VALUE, INTEGER_VALUE, INTEGER_VALUE);\r\n\t\t\tReprocessedTotal parent = new ReprocessedTotal(null, item, DOUBLE_VALUE, LONG_VALUE);\r\n\t\t\tReprocessedInterface reprocessedItem = new ReprocessedItem(parent, item, reprocessedMaterial, BOOLEAN_VALUE, DOUBLE_VALUE);\r\n\t\t\tfor (ReprocessedTableFormat tableFormat : ReprocessedTableFormat.values()) {\r\n\t\t\t\ttest(tableFormat, tableFormat.getType(), tableFormat.getColumnValue(reprocessedItem));\r\n\t\t\t}\r\n\t\t\tfor (ReprocessedExtendedTableFormat tableFormat : ReprocessedExtendedTableFormat.values()) {\r\n\t\t\t\ttest(tableFormat, tableFormat.getType(), tableFormat.getColumnValue(reprocessedItem));\r\n\t\t\t}\r\n\t\t\t//StockpileItem\r\n\t\t\ttest(StockpileTableFormat.class);\r\n\t\t\ttest(StockpileExtendedTableFormat.class);\r\n\t\t\tStockpile stockpile = new Stockpile(STRING_VALUE, null, new ArrayList<>(), DOUBLE_VALUE, BOOLEAN_VALUE);\r\n\t\t\tstockpile.setOwnerName(Collections.singletonList(owner.getOwnerName()));\r\n\t\t\tstockpile.setFlagName(Collections.singleton(asset.getItemFlag()));\r\n\t\t\tStockpileItem stockpileItem = new StockpileItem(stockpile, item, INTEGER_VALUE, DOUBLE_VALUE, BOOLEAN_VALUE);\r\n\t\t\tstockpileItem.setTags(tags);\r\n\t\t\tstockpileItem.updateValues(0, 0, DOUBLE_VALUE, PriceData.EMPTY);\r\n\t\t\tfor (StockpileTableFormat tableFormat : StockpileTableFormat.values()) {\r\n\t\t\t\ttest(tableFormat, tableFormat.getType(), tableFormat.getColumnValue(stockpileItem));\r\n\t\t\t}\r\n\t\t\tfor (StockpileExtendedTableFormat tableFormat : StockpileExtendedTableFormat.values()) {\r\n\t\t\t\ttest(tableFormat, tableFormat.getType(), tableFormat.getColumnValue(stockpileItem));\r\n\t\t\t}\r\n\t\t\t//Material\r\n\t\t\ttest(MaterialTableFormat.class);\r\n\t\t\ttest(MaterialExtendedTableFormat.class);\r\n\t\t\tMaterial material = new Material(Material.MaterialType.LOCATIONS, asset, STRING_VALUE, STRING_VALUE, STRING_VALUE);\r\n\t\t\tfor (MaterialTableFormat tableFormat : MaterialTableFormat.values()) {\r\n\t\t\t\ttest(tableFormat, tableFormat.getType(), tableFormat.getColumnValue(material));\r\n\t\t\t}\r\n\t\t\tfor (MaterialExtendedTableFormat tableFormat : MaterialExtendedTableFormat.values()) {\r\n\t\t\t\ttest(tableFormat, tableFormat.getType(), tableFormat.getColumnValue(material));\r\n\t\t\t}\r\n\t\t\t//Isk\r\n\t\t\ttest(ValueTableFormat.class);\r\n\t\t\tValue value = new Value(STRING_VALUE, DATE_VALUE);\r\n\t\t\tfor (int i = 1; i < 8; i++) {\r\n\t\t\t\tvalue.addBalance(String.valueOf(i), 0);\r\n\t\t\t}\r\n\t\t\tfor (ValueTableFormat tableFormat : ValueTableFormat.values()) {\r\n\t\t\t\ttest(tableFormat, tableFormat.getType(), tableFormat.getColumnValue(value));\r\n\t\t\t}\r\n\t\t\t//Tracker\r\n\t\t\ttest(TrackerSkillPointsFilterTableFormat.class);\r\n\t\t\t//Tree\r\n\t\t\ttest(TreeTableFormat.class);\r\n\t\t\tTreeAsset treeAsset = new TreeAsset(asset, TreeAsset.TreeType.CATEGORY, new ArrayList<>(), STRING_VALUE, true);\r\n\t\t\tTreeAsset sub = new TreeAsset(asset, TreeAsset.TreeType.CATEGORY, Collections.singletonList(treeAsset), STRING_VALUE, false);\r\n\t\t\ttreeAsset.addAsset(sub);\r\n\t\t\ttreeAsset.updateParents();\r\n\t\t\tsub.updateParents();\r\n\t\t\tfor (TreeTableFormat tableFormat : TreeTableFormat.values()) {\r\n\t\t\t\ttest(tableFormat, tableFormat.getType(), tableFormat.getColumnValue(treeAsset));\r\n\t\t\t\ttest(tableFormat, tableFormat.getType(), tableFormat.getColumnValue(sub));\r\n\t\t\t}\r\n\t\t//Tables\r\n\t\t\ttestClass(FormulaColumn.class);\r\n\t\t\ttestClass(JumpColumn.class);\r\n\t\t\ttestClass(AllColumn.class);\r\n\t\t//Tests\r\n\t\t\ttestClass(TestEnum.class);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void testClass(Class<?> tableFormat) {\r\n\t\ttry {\r\n\t\t\tassertTrue(tableFormat + \" does not implement toString\", tableFormat.getMethod(\"toString\").getDeclaringClass() == tableFormat);\r\n\t\t} catch (NoSuchMethodException | SecurityException ex) {\r\n\t\t\tfail(ex.getMessage());\r\n\t\t}\r\n\t}\r\n\r\n\tprivate <T extends Enum<T> & EnumTableColumn<Q>, Q> void test(Class<T> tableFormat) {\r\n\t\ttry {\r\n\t\t\tassertTrue(tableFormat + \" does not implement toString\", tableFormat.getMethod(\"toString\").getDeclaringClass() == tableFormat);\r\n\t\t\t//Test Comparator\r\n\t\t\tfor (EnumTableColumn<Q> enumColumn : tableFormat.getEnumConstants()) {\r\n\t\t\t\tComparator<?> comparator = enumColumn.getComparator();\r\n\t\t\t\tClass<?> type = enumColumn.getType();\r\n\t\t\t\tassertNotNull(enumColumn.getClass().getName() + \".\" + enumColumn.name() + \" -> is null\", type);\r\n\t\t\t\tif (String.class.isAssignableFrom(type)) {\r\n\t\t\t\t\tassertEquals(StringComparators.TO_STRING, comparator);\r\n\t\t\t\t} else if (FromType.class.isAssignableFrom(type)) {\r\n\t\t\t\t\tassertEquals(MyNpcStanding.FROM_TYPE_COMPARATOR, comparator);\r\n\t\t\t\t} else if (Comparable.class.isAssignableFrom(type)) {\r\n\t\t\t\t\tassertEquals(GlazedLists.comparableComparator(), comparator);\r\n\t\t\t\t} else if (Component.class.isAssignableFrom(type)\r\n\t\t\t\t\t\t|| ModulePriceValue.class.isAssignableFrom(type)\r\n\t\t\t\t\t\t|| ISK.class.isAssignableFrom(type)\r\n\t\t\t\t\t\t|| Color.class.isAssignableFrom(type)\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\tassertEquals(null, comparator);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfail(enumColumn.getClass().getName() + \".\" + enumColumn.name() + \" -> \" + type.getName() +  \" is not comparable\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} catch (NoSuchMethodException | SecurityException ex) {\r\n\t\t\tfail(ex.getMessage());\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void test(EnumTableColumn<?> enumColumn, Class<?> expecteds, Object object) {\r\n\t\tassertNotNull(enumColumn.getClass().getSuperclass().getSimpleName() + \"->\" + enumColumn.name() + \" was null\", object);\r\n\t\tClass<?> actual = object.getClass();\r\n\t\tif ((actual.isAssignableFrom(Double.class) || actual.isAssignableFrom(Float.class)) && (expecteds.isAssignableFrom(Double.class) || expecteds.isAssignableFrom(Float.class))) {\r\n\t\t\t//No problem\r\n\t\t} else if ((actual.isAssignableFrom(Long.class) || actual.isAssignableFrom(Integer.class)) && (expecteds.isAssignableFrom(Long.class) || expecteds.isAssignableFrom(Integer.class))) {\r\n\t\t\t//No problem\r\n\t\t} else if (Number.class.isAssignableFrom(actual)) {\r\n\t\t\tfail(\"Column: \" + enumColumn.name() + \" Class: \" + actual + \" is an unsupported number type\");\r\n\t\t} else if (JComponent.class.isAssignableFrom(actual)) {\r\n\t\t\t//No problem\r\n\t\t} else if (String.class.isAssignableFrom(actual)) {\r\n\t\t\t//No problem\r\n\t\t} else if (String.class.isAssignableFrom(expecteds)) {\r\n\t\t\ttry {\r\n\t\t\t\tif (actual.getSuperclass().isEnum()) {\r\n\t\t\t\t\tactual = actual.getSuperclass();\r\n\t\t\t\t}\r\n\t\t\t\tMethod method = actual.getMethod(\"toString\");\r\n\t\t\t\tassertTrue(\"Column: \" + enumColumn.name() + \" Class: \" + actual + \" does not implement toString: \" + method.getDeclaringClass() , method.getDeclaringClass().equals(actual));\r\n\t\t\t} catch (NoSuchMethodException ex) {\r\n\t\t\t\tfail(\"Column: \" + enumColumn.name() + \" Class: \" + actual +  \" has no toString method\");\r\n\t\t\t} catch (SecurityException ex) {\r\n\t\t\t\tfail(\"Column: \" + enumColumn.name() + \" Class: \" + actual +  \" has no toString method\");\r\n\t\t\t}\r\n\t\t} else if (!actual.isAssignableFrom(expecteds)) {\r\n\t\t\tfail(enumColumn.name() + \"is not the right type\");\r\n\t\t} else {\r\n\t\t\tassertTrue(enumColumn.getClass().getSuperclass().getSimpleName() + \"->\" + enumColumn.name() + \" expected: \" + expecteds.getSimpleName() + \" was: \" + actual.getSimpleName(), expecteds.isAssignableFrom(actual));\r\n\t\t\ttry {\r\n\t\t\t\tassertTrue(actual + \" does not implement hashCode\", actual.getMethod(\"hashCode\").getDeclaringClass() == actual);\r\n\t\t\t\tassertTrue(actual + \" does not implement equals\", actual.getMethod(\"equals\").getDeclaringClass() == actual);\r\n\t\t\t\tassertTrue(actual + \" does not implement compareTo\", actual.getMethod(\"compareTo\").getDeclaringClass() == actual);\r\n\t\t\t} catch (NoSuchMethodException | SecurityException ex) {\r\n\t\t\t\t//fail(ex.getMessage());\r\n\t\t\t}\r\n\t\t}\r\n\t\tString text = JFormulaDialog.getHardName(enumColumn) + \" * 100 / 90\";\r\n\t\tJFormulaDialog.replaceAll(enumColumn, text);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/gui/tabs/assets/AssetAndTreeTableFormatTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.assets;\r\n\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.gui.tabs.tree.TreeTableFormat;\r\nimport static org.junit.Assert.*;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class AssetAndTreeTableFormatTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void testColumns() {\r\n\t\tfor (AssetTableFormat format : AssetTableFormat.values()) {\r\n\t\t\ttry {\r\n\t\t\t\tTreeTableFormat.valueOf(format.name());\r\n\t\t\t} catch (IllegalArgumentException es) {\r\n\t\t\t\tfail(format.name() + \" is missing from TreeTableFormat\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (TreeTableFormat format : TreeTableFormat.values()) {\r\n\t\t\ttry {\r\n\t\t\t\tAssetTableFormat.valueOf(format.name());\r\n\t\t\t} catch (IllegalArgumentException es) {\r\n\t\t\t\tfail(format.name() + \" is missing from AssetTableFormat\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/gui/tabs/orders/MarketOrdersTabTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.orders;\r\n\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport static org.hamcrest.CoreMatchers.equalTo;\r\nimport static org.hamcrest.MatcherAssert.assertThat;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class MarketOrdersTabTest extends TestUtil {\r\n\r\n\tpublic MarketOrdersTabTest() {\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testSignificantIncrement() {\r\n\t\tassertThat(MarketOrdersTab.significantIncrement(0.00), equalTo(0.00));\r\n\t\tassertThat(MarketOrdersTab.significantIncrement(0.01), equalTo(0.02));\r\n\t\tassertThat(MarketOrdersTab.significantIncrement(0.1), equalTo(0.11));\r\n\t\tassertThat(MarketOrdersTab.significantIncrement(1), equalTo(1.01));\r\n\t\tassertThat(MarketOrdersTab.significantIncrement(10), equalTo(10.01));\r\n\t\tassertThat(MarketOrdersTab.significantIncrement(100), equalTo(100.10));\r\n\t\tassertThat(MarketOrdersTab.significantIncrement(1000), equalTo(1001.00));\r\n\t\tassertThat(MarketOrdersTab.significantIncrement(10000), equalTo(10010.00));\r\n\r\n\t\tassertThat(MarketOrdersTab.significantIncrement(1001), equalTo(1002.00));\r\n\t\tassertThat(MarketOrdersTab.significantIncrement(10010), equalTo(10020.00));\r\n\r\n\t\tassertThat(MarketOrdersTab.significantIncrement(0.99), equalTo(1.00));\r\n\t\tassertThat(MarketOrdersTab.significantIncrement(9.99), equalTo(10.00));\r\n\t\tassertThat(MarketOrdersTab.significantIncrement(99.99), equalTo(100.00));\r\n\t\tassertThat(MarketOrdersTab.significantIncrement(999.90), equalTo(1000.00));\r\n\t\tassertThat(MarketOrdersTab.significantIncrement(9999), equalTo(10000.00));\r\n\t\tassertThat(MarketOrdersTab.significantIncrement(99990), equalTo(100000.00));\r\n\r\n\t\tassertThat(MarketOrdersTab.significantIncrement(2), equalTo(2.01));\r\n\t\tassertThat(MarketOrdersTab.significantIncrement(20), equalTo(20.01));\r\n\t\tassertThat(MarketOrdersTab.significantIncrement(200), equalTo(200.10));\r\n\t\tassertThat(MarketOrdersTab.significantIncrement(2000), equalTo(2001.00));\r\n\t\tassertThat(MarketOrdersTab.significantIncrement(20000), equalTo(20010.0));\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testsignificantDecrement() {\r\n\t\tassertThat(MarketOrdersTab.significantDecrement(0.00), equalTo(0.00));\r\n\t\tassertThat(MarketOrdersTab.significantDecrement(0.01), equalTo(0.01));\r\n\t\tassertThat(MarketOrdersTab.significantDecrement(0.1), equalTo(0.09));\r\n\t\tassertThat(MarketOrdersTab.significantDecrement(1), equalTo(0.99));\r\n\t\tassertThat(MarketOrdersTab.significantDecrement(10), equalTo(9.99));\r\n\t\tassertThat(MarketOrdersTab.significantDecrement(100), equalTo(99.99));\r\n\t\tassertThat(MarketOrdersTab.significantDecrement(1000), equalTo(999.90));\r\n\t\tassertThat(MarketOrdersTab.significantDecrement(10000), equalTo(9999.00));\r\n\r\n\t\tassertThat(MarketOrdersTab.significantDecrement(1001), equalTo(1000.00));\r\n\t\tassertThat(MarketOrdersTab.significantDecrement(10010), equalTo(10000.00));\r\n\r\n\t\tassertThat(MarketOrdersTab.significantDecrement(0.99), equalTo(0.98));\r\n\t\tassertThat(MarketOrdersTab.significantDecrement(9.99), equalTo(9.98));\r\n\t\tassertThat(MarketOrdersTab.significantDecrement(99.99), equalTo(99.98));\r\n\t\tassertThat(MarketOrdersTab.significantDecrement(999.90), equalTo(999.80));\r\n\t\tassertThat(MarketOrdersTab.significantDecrement(9999), equalTo(9998.0));\r\n\t\tassertThat(MarketOrdersTab.significantDecrement(99990), equalTo(99980.0));\r\n\r\n\t\tassertThat(MarketOrdersTab.significantDecrement(2), equalTo(1.99));\r\n\t\tassertThat(MarketOrdersTab.significantDecrement(20), equalTo(19.99));\r\n\t\tassertThat(MarketOrdersTab.significantDecrement(200), equalTo(199.90));\r\n\t\tassertThat(MarketOrdersTab.significantDecrement(2000), equalTo(1999.00));\r\n\t\tassertThat(MarketOrdersTab.significantDecrement(20000), equalTo(19990.0));\r\n\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/gui/tabs/routing/TestEditableModel.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.routing;\n\nimport java.util.ArrayList;\nimport java.util.Comparator;\nimport java.util.List;\nimport net.nikr.eve.jeveasset.TestUtil;\nimport static org.junit.Assert.assertNotSame;\nimport static org.junit.Assert.assertSame;\nimport org.junit.Before;\nimport org.junit.Test;\n/**\n *\n * @author Candle\n */\npublic class TestEditableModel extends TestUtil {\n\tprivate Comparator<ListContents> comp;\n\tprivate List<ListContents> contents;\n\n\t@Before\n\tpublic void setup() {\n\t\tcomp = new Comparator<ListContents>() {\n\t\t\t@Override\n\t\t\tpublic int compare(final ListContents o1, final ListContents o2) {\n\t\t\t\treturn o1.getName().compareToIgnoreCase(o2.getName());\n\t\t\t}\n\t\t};\n\t\tcontents = new ArrayList<ListContents>();\n\t\tcontents.add(new ListContents(\"abc\"));\n\t\tcontents.add(new ListContents(\"abcd\"));\n\t\tcontents.add(new ListContents(\"tgv\"));\n\t\tcontents.add(new ListContents(\"123\"));\n\t\tcontents.add(new ListContents(\"gt\"));\n\t\tcontents.add(new ListContents(\"lt\"));\n\t}\n\n\t@Test\n\tpublic void testCreate() {\n\t\tEditableListModel<ListContents> elm = new EditableListModel<ListContents>(contents, comp);\n\t\tassertNotSame(\"contents should be a different object (unmodifiable list)\", contents, elm.getAll());\n\t\tassertSame(\"The comparator should be the same\", comp, elm.getSortComparator());\n\t}\n\n\tclass ListContents {\n\t\tprivate final String name;\n\n\t\tpublic ListContents(final String name) {\n\t\t\tthis.name = name;\n\t\t}\n\n\t\tpublic String getName() {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/gui/tabs/routing/TestMoveJList.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.routing;\n\nimport java.util.Arrays;\nimport java.util.Comparator;\nimport net.nikr.eve.jeveasset.TestUtil;\nimport static org.junit.Assert.assertEquals;\nimport org.junit.Before;\nimport org.junit.Test;\n\n/**\n *\n * @author Candle\n */\npublic class TestMoveJList extends TestUtil {\n\tprivate MoveJList<Something> a;\n\tprivate MoveJList<Something> b;\n\tprivate Something[] somethings;\n\n\t@Before\n\tpublic void setup() {\n\t\tComparator<Something> comp = new Comparator<Something>() {\n\t\t\t@Override\n\t\t\tpublic int compare(final Something o1, final Something o2) {\n\t\t\t\treturn o1.getName().compareToIgnoreCase(o2.getName());\n\t\t\t}\n\t\t};\n\t\tsomethings = new Something[] {new Something(\"foo\"), new Something(\"foobar\"), new Something(\"zap\") };\n\n\n\t\tEditableListModel<Something> editableListModel = new EditableListModel<Something>(Arrays.asList(somethings));\n\t\ta = new MoveJList<Something>(editableListModel);\n\t\ta.getEditableModel().setSortComparator(comp);\n\t\tb = new MoveJList<Something>();\n\t\tb.getEditableModel().setSortComparator(comp);\n\t}\n\n\t@Test\n\tpublic void testMove() {\n\t\ta.setSelectedIndices(new int[] {1});\n\t\ta.move(b, 10);\n\t\tassertEquals(2, a.getEditableModel().getSize());\n\n\t\tassertEquals(somethings[1], b.getEditableModel().getElementAt(0));\n\t}\n\n\t@Test\n\tpublic void testMoveAndMoveAgain() {\n\t\ta.setSelectedIndices(new int[] {1});\n\t\ta.move(b, 10);\n\t\tassertEquals(2, a.getEditableModel().getSize());\n\t\tassertEquals(somethings[1], b.getEditableModel().getElementAt(0));\n\n\t\tb.setSelectedIndices(new int[] {0});\n\t\tb.move(a, 10);\n\t\tassertEquals(3, a.getEditableModel().getSize());\n\t\tassertEquals(0, b.getEditableModel().getSize());\n\t}\n\n\t@Test\n\tpublic void testMoveAllAndMoveBack() {\n\t\ta.setSelectedIndices(new int[] {0, 1, 2});\n\t\ta.move(b, 10);\n\t\tassertEquals(0, a.getEditableModel().getSize());\n\t\tassertEquals(3, b.getEditableModel().getSize());\n\n\t\tb.setSelectedIndices(new int[] {0, 1, 2});\n\t\tb.move(a, 10);\n\t\tassertEquals(3, a.getEditableModel().getSize());\n\t\tassertEquals(0, b.getEditableModel().getSize());\n\t}\n\n\tclass Something {\n\t\tString name;\n\n\t\tpublic Something(String name) {\n\t\t\tthis.name = name;\n\t\t}\n\n\t\tpublic String getName() {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/gui/tabs/routing/TestRouting.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.routing;\n\nimport ch.qos.logback.classic.Level;\nimport java.util.ArrayList;\nimport java.util.List;\nimport net.nikr.eve.jeveasset.TestUtil;\nimport net.nikr.eve.jeveasset.gui.tabs.routing.mocks.FakeRoutingTab;\nimport net.nikr.eve.jeveasset.gui.tabs.routing.mocks.RoutingMockProgram;\nimport net.nikr.eve.jeveasset.tests.mocks.FakeProgress;\nimport org.junit.AfterClass;\nimport static org.junit.Assert.assertEquals;\nimport org.junit.BeforeClass;\nimport org.junit.Test;\nimport uk.me.candle.eve.routing.BruteForce;\nimport uk.me.candle.eve.routing.Crossover;\nimport uk.me.candle.eve.routing.CrossoverHibrid2opt;\nimport uk.me.candle.eve.routing.NearestNeighbour;\nimport uk.me.candle.eve.routing.NearestNeighbourIteration;\nimport uk.me.candle.eve.routing.RoutingAlgorithm;\nimport uk.me.candle.eve.routing.SimpleUnisexMutator;\nimport uk.me.candle.eve.routing.SimpleUnisexMutatorHibrid2Opt;\n\n/**\n *\n * @author Candle\n */\npublic class TestRouting extends TestUtil {\n\n\t@BeforeClass\n\tpublic static void setUpClass() throws Exception {\n\t\tsetLoggingLevel(Level.OFF);\n\t}\n\n\t@AfterClass\n\tpublic static void tearDownClass() throws Exception {\n\t\tsetLoggingLevel(Level.INFO);\n\t}\n\n\tprivate List<String> getErentaList() {\n\t\t/*\n\t\t * Erenta\n\t\t * Haajinen\n\t\t * Kakakela\n\t\t * Kiskoken\n\t\t * Oipo\n\t\t * Torrinos\n\t\t * Umokka\n\t\t */\n\t\tList<String> waypointNames = new ArrayList<>();\n\t\twaypointNames.add(\"Erenta\");\n\t\twaypointNames.add(\"Haajinen\");\n\t\twaypointNames.add(\"Kakakela\");\n\t\twaypointNames.add(\"Kiskoken\");\n\t\twaypointNames.add(\"Oipo\");\n\t\twaypointNames.add(\"Torrinos\");\n\t\twaypointNames.add(\"Umokka\");\n\t\treturn waypointNames;\n\t}\n\n\t@Test\n\tpublic void testErentaBruteForce() {\n\t\ttestRoute(getErentaList(), new BruteForce<>(), 40);\n\t}\n\n\t@Test\n\tpublic void testErentaCrossover() {\n\t\ttestRoute(getErentaList(), new Crossover<>(), 40);\n\t}\n\n\t@Test\n\tpublic void testErentaCrossoverHibrid2opt() {\n\t\ttestRoute(getErentaList(), new CrossoverHibrid2opt<>(), 40);\n\t}\n\n\t@Test\n\tpublic void testErentaNearestNeighbour() {\n\t\ttestRoute(getErentaList(), new NearestNeighbour<>(), 42);\n\t}\n\n\t@Test\n\tpublic void testErentaNearestNeighbourIteration() {\n\t\ttestRoute(getErentaList(), new NearestNeighbourIteration<>(), 40);\n\t}\n\n\n\t@Test\n\tpublic void testErentaSimpleUnisexMutator() {\n\t\ttestRoute(getErentaList(), new SimpleUnisexMutator<>(), 40);\n\t}\n\n\t@Test\n\tpublic void testErentaSimpleUnisexMutatorHibrid2Opt() {\n\t\ttestRoute(getErentaList(), new SimpleUnisexMutatorHibrid2Opt<>(), 40);\n\t}\n\n\tprivate void testRoute(final List<String> waypointNames, final RoutingAlgorithm<SolarSystem> ra, final int exptectedDistance) {\n\t\tFakeRoutingTab frd = new FakeRoutingTab(new RoutingMockProgram());\n\t\tfrd.buildTestGraph();\n\t\tList<SolarSystem> initial = frd.getNodesFromNames(waypointNames);\n\t\tList<SolarSystem> route = ra.execute(new FakeProgress(), frd.getGraph(), new ArrayList<>(initial));\n\n\t\tSystem.out.println(\"--- \" + ra.getName() + \" ---\");\n\t\tfor (int i = 0; i < initial.size(); ++i) {\n\t\t\tSystem.out.println(i + \" \" + initial.get(i));\n\t\t}\n\n\t\tSolarSystem last = null;\n\t\tint totalDistance = 0;\n\t\tfor (SolarSystem current : route) {\n\t\t\tif (last != null) {\n\t\t\t\ttotalDistance = totalDistance + frd.getGraph().distanceBetween(last, current);\n\t\t\t}\n\t\t\tlast = current;\n\t\t}\n\t\tif (last != null) {\n\t\t\ttotalDistance = totalDistance + frd.getGraph().distanceBetween(last, route.get(0));\n\t\t}\n\n\t\tshort[][] distances = ra.getLastDistanceMatrix();\n\t\tfor (int i = 0; i < distances.length; ++i) {\n\t\t\tSystem.out.print(\"\" + i + \":\");\n\t\t\tfor (int j = 0; j < distances[i].length && j <= i; ++j) {\n\t\t\t\tString id = \"\" + distances[i][j];\n\t\t\t\tswitch (id.length()) { // HAAAAAX.\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tid = \"  \" + id;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tid = \" \" + id;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tid = \"\" + id;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tSystem.out.print(\" \" + id);\n\t\t\t}\n\t\t\tSystem.out.println();\n\t\t}\n\n\t\tfor (SolarSystem n : route) {\n\t\t\tSystem.out.println(n + \"(\" + initial.indexOf(n) + \")\");\n\t\t}\n\n\t\tSystem.out.println(\"Length: \" + totalDistance + \" or \" + ra.getLastDistance());\n\t\tassertEquals(\"Not the same stating system\", route.get(0), initial.get(0));\n\t\tassertEquals(\"totalDistance != exptectedDistance\", exptectedDistance, totalDistance);\n\t\tassertEquals(\"totalDistance != LastDistance\", totalDistance, ra.getLastDistance());\n\t}\n\n\t@Test\n\tpublic void testArtisineBruteForce() {\n\t\ttestRoute(getArtisineList(), new BruteForce<>(), 61);\n\t}\n\n\t@Test\n\tpublic void testArtisineCrossover() {\n\t\ttestRoute(getArtisineList(), new Crossover<>(), 61);\n\t}\n\n\t@Test\n\tpublic void testArtisineCrossoverHibrid2opt() {\n\t\ttestRoute(getArtisineList(), new CrossoverHibrid2opt<>(), 61);\n\t}\n\n\t@Test\n\tpublic void testArtisineNearestNeighbour() {\n\t\ttestRoute(getArtisineList(), new NearestNeighbour<>(), 63);\n\t}\n\n\t@Test\n\tpublic void testArtisineNearestNeighbourIteration() {\n\t\ttestRoute(getArtisineList(), new NearestNeighbourIteration<>(), 61);\n\t}\n\n\t@Test\n\tpublic void testArtisineSimpleUnisexMutator() {\n\t\ttestRoute(getArtisineList(), new SimpleUnisexMutator<>(), 61);\n\t}\n\n\t@Test\n\tpublic void testArtisineSimpleUnisexMutatorHibrid2Opt() {\n\t\ttestRoute(getArtisineList(), new SimpleUnisexMutatorHibrid2Opt<>(), 61);\n\t}\n\n\tprivate List<String> getArtisineList() {\n\t\t/*\n\t * Artisine\n\t * Deltole\n\t * Jolia\n\t * Doussivitte\n\t * Misneden\n\t * Bawilan\n\t * Ney\n\t * Stegette\n\t * Odette\n\t * Inghenges\n\t * Sileperer\n\t\t */\n\t\tList<String> waypointNames = new ArrayList<>();\n\t\twaypointNames.add(\"Artisine\");\n\t\twaypointNames.add(\"Deltole\");\n\t\twaypointNames.add(\"Jolia\");\n\t\twaypointNames.add(\"Doussivitte\");\n\t\twaypointNames.add(\"Misneden\");\n\t\twaypointNames.add(\"Bawilan\");\n\t\twaypointNames.add(\"Ney\");\n\t\twaypointNames.add(\"Stegette\");\n\t\twaypointNames.add(\"Odette\");\n\t\twaypointNames.add(\"Inghenges\");\n\t\twaypointNames.add(\"Sileperer\");\n\t\treturn waypointNames;\n\t}\n\n}\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/gui/tabs/routing/mocks/FakeRoutingTab.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.routing.mocks;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.gui.tabs.routing.RoutingTab;\nimport net.nikr.eve.jeveasset.gui.tabs.routing.SolarSystem;\nimport uk.me.candle.eve.graph.Graph;\n\n/**\n *\n * @author Candle\n */\npublic class FakeRoutingTab extends RoutingTab {\n\n\n\tpublic FakeRoutingTab(final Program program) {\n\t\tsuper(false);\n\t\tthis.program = program;\n\t}\n\n\tpublic void buildTestGraph() {\n\t\tsuper.buildGraph(true);\n\t}\n\n\tpublic List<SolarSystem> getNodesFromNames(final List<String> names) {\n\t\tList<SolarSystem> nodes = new ArrayList<>();\n\t\tfor (String name : names) {\n\t\t\tSolarSystem nn = null;\n\t\t\tfor (SolarSystem n : filteredGraph.getNodes()) {\n\t\t\t\tif (n.getName().equals(name)) {\n\t\t\t\t\tnn = n;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (nn == null) {\n\t\t\t\tthrow new RuntimeException(\"Failed to find the node for name: \" + name);\n\t\t\t}\n\t\t\tnodes.add(nn);\n\t\t}\n\t\treturn nodes;\n\t}\n\n\t@Override\n\tpublic Graph<SolarSystem> getGraph() {\n\t\treturn filteredGraph;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/gui/tabs/routing/mocks/RoutingMockProgram.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.gui.tabs.routing.mocks;\n\nimport net.nikr.eve.jeveasset.tests.mocks.FakeProgram;\n\n/**\n *\n * @author Candle\n */\npublic class RoutingMockProgram extends FakeProgram {\n\n\n\tpublic RoutingMockProgram() { }\n}\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/gui/tabs/stockpile/StockpileTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.gui.tabs.stockpile;\r\n\r\nimport java.util.Collections;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter.StockpileContainer;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter.StockpileFlag;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileItem;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileTotal;\r\nimport static org.junit.Assert.*;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class StockpileTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void testSomeMethod() {\r\n\t\tStockpileFilter filter = new StockpileFilter(MyLocation.create(0),\r\n\t\t\t\tfalse, //Exclude\r\n\t\t\t\tCollections.singletonList(new StockpileFlag(0, true)),\r\n\t\t\t\tCollections.singletonList(new StockpileContainer(\"Container\", false)),\r\n\t\t\t\tCollections.singletonList(0L),\r\n\t\t\t\tnull, //JobsDaysLess\r\n\t\t\t\tnull, //JobsDaysMore\r\n\t\t\t\ttrue, true, true, true, true, true, true, true, true, true, true);\r\n\t\tStockpile stockpile = new Stockpile(\"Name\", null, Collections.singletonList(filter), 1, false);\r\n\t\tStockpileItem item1 = new StockpileItem(stockpile, new Item(0), 0, 0, false);\r\n\t\tStockpileItem item2 = new StockpileItem(stockpile, new Item(0), 0, 0, false);\r\n\t\tStockpileTotal total1 = new StockpileTotal(stockpile);\r\n\t\tStockpileTotal total2 = new StockpileTotal(stockpile);\r\n\t\tassertEquals(item1.compareTo(item2), item2.compareTo(item2), 0);\r\n\t\tassertEquals(total1.compareTo(total2), total2.compareTo(total1), 0);\r\n\t\tassertEquals(0, total1.compareTo(total2), 0);\r\n\t\tassertEquals(0, item1.compareTo(item2), 0);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/gui/tabs/values/DataSetCreatorTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.gui.tabs.values;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Arrays;\r\nimport java.util.Calendar;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawContract;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawContract.ContractStatus;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawContract.ContractType;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawContractItem;\r\nimport static org.hamcrest.CoreMatchers.equalTo;\r\nimport static org.hamcrest.MatcherAssert.assertThat;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class DataSetCreatorTest extends TestUtil {\r\n\r\n\tprivate static enum AssetDate {\r\n\t\tUPDATED, NOT_UPDATED\r\n\t}\r\n\r\n\tprivate static enum BalanceDate {\r\n\t\tUPDATED, NOT_UPDATED\r\n\t}\r\n\r\n\tprivate static enum Included {\r\n\t\tTRUE, FALSE, BOTH\r\n\t}\r\n\r\n\tprivate static enum Completed {\r\n\t\tTRUE, FALSE, BOTH\r\n\t}\r\n\r\n\tprivate static final double NONE = 0;\r\n\tprivate static final double COLLATERAL = 100;\r\n\tprivate static final double PRICE = 1000;\r\n\tprivate static final double REWARD = 10000;\r\n\tprivate static final double ITEM = 100000;\r\n\tprivate static final long ISSUER_ID = 1;\r\n\tprivate static final long ISSUER_CORPORATION_ID = 2;\r\n\tprivate static final long ACCEPTOR_ID = 3;\r\n\tprivate static final long ACCEPTOR_CORPORATION_ID = 4;\r\n\r\n\tprivate final Date now = new Date();\r\n\tprivate final Date before = getBefore();\r\n\tprivate final Date after = getAfter();\r\n\tprivate final DataSetCreatorTester creator = new DataSetCreatorTester();\r\n\r\n\t@Test\r\n\tpublic void testContract() {\r\n\t\tList<TestMatch> matchs = new ArrayList<>();\r\n\t//Contract Collateral (Courier)\r\n\t\t//issuer\r\n\t\tmatchs.add(new TestMatch(1, issuer(AssetDate.UPDATED, null), acceptor(null, null), Included.BOTH, Completed.BOTH, COLLATERAL, NONE, contractType(ContractType.COURIER), contractStatus(ContractStatus.IN_PROGRESS, ContractStatus.OUTSTANDING), contractStatus()));\r\n\t\tmatchs.add(new TestMatch(1, issuer(AssetDate.NOT_UPDATED, null), acceptor(null, null), Included.BOTH, Completed.TRUE, COLLATERAL, NONE, contractType(ContractType.COURIER), contractStatus(), contractStatus()));\r\n\t\t//acceptor\r\n\t\tmatchs.add(new TestMatch(2, issuer(null, null), acceptor(null, BalanceDate.UPDATED), Included.BOTH, Completed.BOTH, COLLATERAL, NONE, contractType(ContractType.COURIER), contractStatus(ContractStatus.IN_PROGRESS), contractStatus()));\r\n\t//Contract ISK\r\n\t\t//issuer\r\n\t\tmatchs.add(new TestMatch(3, issuer(null, BalanceDate.UPDATED), acceptor(null, null), Included.BOTH, Completed.BOTH, NONE, REWARD, contractType(), contractStatus(ContractStatus.OUTSTANDING), contractStatus()));\r\n\t\tmatchs.add(new TestMatch(3, issuer(null, BalanceDate.NOT_UPDATED), acceptor(null, null), Included.BOTH, Completed.TRUE, NONE, (PRICE-REWARD), contractType(), contractStatus(), contractStatus(ContractStatus.OUTSTANDING)));\r\n\t\t//acceptor\r\n\t\tmatchs.add(new TestMatch(4, issuer(null, null), acceptor(null, BalanceDate.NOT_UPDATED), Included.BOTH, Completed.TRUE, NONE, (REWARD + -PRICE), contractType(), contractStatus(), contractStatus()));\r\n\t//Contract Items\r\n\t\t//issuer\r\n\t\tmatchs.add(new TestMatch(5, issuer(AssetDate.UPDATED, null), acceptor(null, null), Included.TRUE, Completed.BOTH, NONE, ITEM, contractType(ContractType.AUCTION, ContractType.ITEM_EXCHANGE), contractStatus(ContractStatus.OUTSTANDING), contractStatus()));\r\n\t\tmatchs.add(new TestMatch(5, issuer(AssetDate.NOT_UPDATED, null), acceptor(null, null), Included.TRUE, Completed.TRUE, NONE, -ITEM, contractType(ContractType.AUCTION, ContractType.ITEM_EXCHANGE), contractStatus(), contractStatus(ContractStatus.OUTSTANDING)));\r\n\t\tmatchs.add(new TestMatch(5, issuer(AssetDate.NOT_UPDATED, null), acceptor(null, null), Included.FALSE, Completed.TRUE, NONE, ITEM, contractType(ContractType.AUCTION, ContractType.ITEM_EXCHANGE), contractStatus(), contractStatus(ContractStatus.OUTSTANDING)));\r\n\t\t//acceptor\r\n\t\tmatchs.add(new TestMatch(6, issuer(null, null), acceptor(AssetDate.NOT_UPDATED, null), Included.TRUE, Completed.TRUE, NONE, ITEM, contractType(ContractType.AUCTION, ContractType.ITEM_EXCHANGE), contractStatus(), contractStatus()));\r\n\t\tmatchs.add(new TestMatch(6, issuer(null, null), acceptor(AssetDate.NOT_UPDATED, null), Included.FALSE, Completed.TRUE, NONE, -ITEM, contractType(ContractType.AUCTION, ContractType.ITEM_EXCHANGE), contractStatus(), contractStatus()));\r\n\t\tboolean[] includedValues = {true, false};\r\n\t\tboolean[] completedValues = {true, false};\r\n\t\tint iteration = 0;\r\n\t\tfor (ContractStatus status : ContractStatus.values()) {\r\n\t\t\tfor (ContractType type : ContractType.values()) {\r\n\t\t\t\tfor (AssetDate issuerAssetDate : AssetDate.values()) {\r\n\t\t\t\t\tfor (AssetDate acceptorAssetDate : AssetDate.values()) {\r\n\t\t\t\t\t\tfor (BalanceDate issuerBalanceDate : BalanceDate.values()) {\r\n\t\t\t\t\t\t\tfor (BalanceDate acceptorBalanceDate : BalanceDate.values()) {\r\n\t\t\t\t\t\t\t\tfor (boolean included : includedValues) {\r\n\t\t\t\t\t\t\t\t\tfor (boolean completed : completedValues) {\r\n\t\t\t\t\t\t\t\t\t\titeration++;\r\n\t\t\t\t\t\t\t\t\t\ttest(iteration, matchs, new TestData(issuer(issuerAssetDate, issuerBalanceDate), acceptor(acceptorAssetDate, acceptorBalanceDate), included, completed, type, status));\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void test(int iteration, final List<TestMatch> matchs, final TestData test) {\r\n\t\tOwnerType issuer = EsiOwner.create();\r\n\t\tissuer.setOwnerID(ISSUER_ID);\r\n\t\tissuer.setOwnerName(\"issuer\");\r\n\t\t//issuer.setCorporationID(ISSUER_CORPORATION_ID);\r\n\t\tissuer.setCorporationName(\"issuer corporation\");\r\n\t\tsetOwnerData(issuer, test.getIssuer());\r\n\t\tOwnerType acceptor = EsiOwner.create();\r\n\t\tacceptor.setOwnerID(ACCEPTOR_ID);\r\n\t\tacceptor.setOwnerName(\"acceptor\");\r\n\t\t//acceptor.setCorporationID(ACCEPTOR_CORPORATION_ID);\r\n\t\tacceptor.setCorporationName(\"acceptor corporation\");\r\n\t\tsetOwnerData(acceptor, test.getAcceptor());\r\n\r\n\t\tMap<Long, OwnerType> owners = new HashMap<>();\r\n\t\towners.put(issuer.getOwnerID(), issuer);\r\n\t\towners.put(acceptor.getOwnerID(), acceptor);\r\n\r\n\t\tMap<String, Value> values = new HashMap<>();\r\n\t\tList<MyContractItem> contractItems = new ArrayList<>();\r\n\t\tList<MyContract> contracts = new ArrayList<>();\r\n\t\tMyContract contract = getContract(test, issuer, acceptor);\r\n\t\tcontracts.add(contract);\r\n\t\tcontractItems.add(getContractItem(contract, test.isIncluded()));\r\n\t\tValue total = new Value(now);\r\n\t\tcreator.addContractItems(contractItems, values, owners, total, now);\r\n\t\tcreator.addContracts(contracts, values, owners, total, now);\r\n\r\n\t\tdouble collateral = 0;\r\n\t\tdouble value = 0;\r\n\t\tfor (TestMatch match : test.match(matchs)) {\r\n\t\t\tcollateral = collateral + match.getCollateral();\r\n\t\t\tvalue = value + match.getValue();\r\n\t\t}\r\n\t\tassertThat(print(iteration, test, total), total.getContractCollateral(), equalTo(collateral));\r\n\t\tassertThat(print(iteration, test, total), total.getContractValue(), equalTo(value));\r\n\t}\r\n\r\n\tprivate String print(final int iteration, final TestData test, final Value total) {\r\n\t\tStringBuilder builder = new StringBuilder();\r\n\t\tbuilder.append(\"\\r\\niteration: \");\r\n\t\tbuilder.append(iteration);\r\n\t\tbuilder.append(\"\\r\\nTestData\\r\\n\tStatus: \");\r\n\t\tbuilder.append(test.getContractStatus());\r\n\t\tbuilder.append(\"\\r\\n\tType: \");\r\n\t\tbuilder.append(test.getContractType());\r\n\t\tbuilder.append(\"\\r\\n\tComplated: \");\r\n\t\tbuilder.append(test.isComplated());\r\n\t\tbuilder.append(\"\\r\\n\tIncluded: \");\r\n\t\tbuilder.append(test.isIncluded());\r\n\t\tbuilder.append(\"\\r\\n\tIssue:\\r\\n\t\tAssetDate.\");\r\n\t\tbuilder.append(test.getIssuer().getAssetDate());\r\n\t\tbuilder.append(\"\\r\\n\t\tBalanceDate.\");\r\n\t\tbuilder.append(test.getIssuer().getBalanceDate());\r\n\t\tbuilder.append(\"\\r\\n\tAcceptor:\\r\\n\t\tAssetDate.\");\r\n\t\tbuilder.append(test.getAcceptor().getAssetDate());\r\n\t\tbuilder.append(\"\\r\\n\t\tBalanceDate.\");\r\n\t\tbuilder.append(test.getAcceptor().getBalanceDate());\r\n\t\tbuilder.append(\"\\r\\nTotal\\r\\n\tCollateral: \");\r\n\t\tbuilder.append(total.getContractCollateral());\r\n\t\tbuilder.append(\"\\r\\n\tValue: \");\r\n\t\tbuilder.append(total.getContractValue());\r\n\t\tbuilder.append(\"\\r\\n\");\r\n\t\treturn builder.toString();\r\n\t}\r\n\r\n\tprivate Issuer issuer(AssetDate assetDate, BalanceDate balanceDate) {\r\n\t\treturn new Issuer(assetDate, balanceDate);\r\n\t}\r\n\r\n\tprivate Acceptor acceptor(AssetDate assetDate, BalanceDate balanceDate) {\r\n\t\treturn new Acceptor(assetDate, balanceDate);\r\n\t}\r\n\r\n\tpublic Set<ContractStatus> contractStatus(ContractStatus ... data) {\r\n\t\treturn new HashSet<>(Arrays.asList(data));\r\n\t}\r\n\r\n\tpublic Set<ContractType> contractType(ContractType ... data) {\r\n\t\treturn new HashSet<>(Arrays.asList(data));\r\n\t}\r\n\r\n\tprivate void setOwnerData(OwnerType ownerType, OwnerData<?> ownerData) {\r\n\t\tif (ownerData.getAssetDate() == null) {\r\n\t\t\townerType.setAssetLastUpdate(now);\r\n\t\t} else switch (ownerData.getAssetDate()) {\r\n\t\t\tcase UPDATED:\r\n\t\t\t\townerType.setAssetLastUpdate(after);\r\n\t\t\t\tbreak;\r\n\t\t\tcase NOT_UPDATED:\r\n\t\t\t\townerType.setAssetLastUpdate(before);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new RuntimeException(\"AssetLastUpdate not set\");\r\n\r\n\t\t}\r\n\t\tif (ownerData.getBalanceDate() == null) {\r\n\t\t\townerType.setBalanceLastUpdate(now);\r\n\t\t} else switch (ownerData.getBalanceDate()) {\r\n\t\t\tcase UPDATED:\r\n\t\t\t\townerType.setBalanceLastUpdate(after);\r\n\t\t\t\tbreak;\r\n\t\t\tcase NOT_UPDATED:\r\n\t\t\t\townerType.setBalanceLastUpdate(before);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new RuntimeException(\"BalanceLastUpdate not set\");\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tprivate MyContract getContract(TestData data, OwnerType issuer, OwnerType acceptor) {\r\n\t\tRawContract contract = RawContract.create();\r\n\t\tif (data.isComplated()) {\r\n\t\t\tcontract.setDateCompleted(now);\r\n\t\t} else {\r\n\t\t\tcontract.setDateCompleted(null);\r\n\t\t}\r\n\t\tcontract.setDateExpired(after); //Required, never null\r\n\t\tcontract.setDateIssued(now);\r\n\t\tcontract.setCollateral(COLLATERAL);\r\n\t\tcontract.setPrice(PRICE);\r\n\t\tcontract.setReward(REWARD);\r\n\t\tcontract.setStatus(data.getContractStatus());\r\n\t\tcontract.setForCorporation(false);\r\n\t\tcontract.setType(data.getContractType());\r\n\t\tcontract.setIssuerID((int) ISSUER_ID);\r\n\t\tcontract.setIssuerCorporationID((int) ISSUER_CORPORATION_ID);\r\n\t\tcontract.setAcceptorID((int) ACCEPTOR_ID);\r\n\r\n\t\tcontract.setAssigneeID(0);\r\n\t\tMyContract myContract = new MyContract(contract);\r\n\t\tmyContract.setIssuer(issuer.getOwnerName());\r\n\t\tmyContract.setIssuerCorp(issuer.getCorporationName());\r\n\t\tmyContract.setAcceptor(acceptor.getOwnerName());\r\n\t\treturn myContract;\r\n\t}\r\n\r\n\tprivate MyContractItem getContractItem(MyContract contract, boolean included) {\r\n\t\tRawContractItem item = RawContractItem.create();\r\n\t\titem.setQuantity(1);\r\n\t\titem.setIncluded(included);\r\n\t\tMyContractItem contractItem = new MyContractItem(item, contract, null);\r\n\t\tcontractItem.setDynamicPrice(ITEM);\r\n\t\treturn contractItem;\r\n\t}\r\n\r\n\tprivate Date getAfter() {\r\n\t\tCalendar cal = Calendar.getInstance();\r\n\t\tcal.setTime(new Date());\r\n\t\tcal.add(Calendar.HOUR_OF_DAY, 1);\r\n\t\treturn cal.getTime();\r\n\t}\r\n\r\n\tprivate Date getBefore() {\r\n\t\tCalendar cal = Calendar.getInstance();\r\n\t\tcal.setTime(new Date());\r\n\t\tcal.add(Calendar.HOUR_OF_DAY, -1);\r\n\t\treturn cal.getTime();\r\n\t}\r\n\r\n\tprivate static class DataSetCreatorTester extends DataSetCreator {\r\n\r\n\t\tpublic DataSetCreatorTester() {\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void addContractItems(List<MyContractItem> contractItems, Map<String, Value> values, Map<Long, OwnerType> owners, Value total, Date date) {\r\n\t\t\tsuper.addContractItems(contractItems, values, owners, total, date);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void addContracts(List<MyContract> contracts, Map<String, Value> values, Map<Long, OwnerType> owners, Value total, Date date) {\r\n\t\t\tsuper.addContracts(contracts, values, owners, total, date);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class TestMatch {\r\n\t\tprivate final int group;\r\n\t\tprivate final Issuer issuer;\r\n\t\tprivate final Acceptor acceptor;\r\n\t\tprivate final Included included;\r\n\t\tprivate final Completed completed;\r\n\t\tprivate final double collateral;\r\n\t\tprivate final double value;\r\n\t\tprivate final Set<ContractType> contractType;\r\n\t\tprivate final Set<ContractStatus> contractStatus;\r\n\t\tprivate final Set<ContractStatus> notContractStatus;\r\n\r\n\t\tpublic TestMatch(int group, Issuer issuer, Acceptor acceptor, Included included, Completed completed, double collateral, double value, Set<ContractType> contractType, Set<ContractStatus> contractStatus, Set<ContractStatus> notContractStatus) {\r\n\t\t\tthis.group = group;\r\n\t\t\tthis.issuer = issuer;\r\n\t\t\tthis.acceptor = acceptor;\r\n\t\t\tthis.included = included;\r\n\t\t\tthis.completed = completed;\r\n\t\t\tthis.collateral = collateral;\r\n\t\t\tthis.value = value;\r\n\t\t\tthis.contractType = contractType;\r\n\t\t\tthis.contractStatus = contractStatus;\r\n\t\t\tthis.notContractStatus = notContractStatus;\r\n\t\t}\r\n\r\n\t\tpublic int getGroup() {\r\n\t\t\treturn group;\r\n\t\t}\r\n\r\n\t\tpublic Issuer getIssuer() {\r\n\t\t\treturn issuer;\r\n\t\t}\r\n\r\n\t\tpublic Acceptor getAcceptor() {\r\n\t\t\treturn acceptor;\r\n\t\t}\r\n\r\n\t\tpublic Included getIncluded() {\r\n\t\t\treturn included;\r\n\t\t}\r\n\r\n\t\tpublic Completed getCompleted() {\r\n\t\t\treturn completed;\r\n\t\t}\r\n\r\n\t\tpublic double getCollateral() {\r\n\t\t\treturn collateral;\r\n\t\t}\r\n\r\n\t\tpublic double getValue() {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\tpublic Set<ContractType> getContractType() {\r\n\t\t\treturn contractType;\r\n\t\t}\r\n\r\n\t\tpublic Set<ContractStatus> getContractStatus() {\r\n\t\t\treturn contractStatus;\r\n\t\t}\r\n\r\n\t\tpublic Set<ContractStatus> getNotContractStatus() {\r\n\t\t\treturn notContractStatus;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class TestData {\r\n\t\tprivate final Issuer issuer;\r\n\t\tprivate final Acceptor acceptor;\r\n\t\tprivate final boolean included;\r\n\t\tprivate final boolean completed;\r\n\t\tprivate final ContractType contractType;\r\n\t\tprivate final ContractStatus contractStatus;\r\n\r\n\t\tpublic TestData(Issuer issuer, Acceptor acceptor, boolean included, boolean completed, ContractType contractType, ContractStatus contractStatus) {\r\n\t\t\tthis.issuer = issuer;\r\n\t\t\tthis.acceptor = acceptor;\r\n\t\t\tthis.included = included;\r\n\t\t\tthis.completed = completed;\r\n\t\t\tthis.contractType = contractType;\r\n\t\t\tthis.contractStatus = contractStatus;\r\n\t\t}\r\n\r\n\t\tpublic Issuer getIssuer() {\r\n\t\t\treturn issuer;\r\n\t\t}\r\n\r\n\t\tpublic Acceptor getAcceptor() {\r\n\t\t\treturn acceptor;\r\n\t\t}\r\n\r\n\t\tpublic boolean isIncluded() {\r\n\t\t\treturn included;\r\n\t\t}\r\n\r\n\t\tpublic boolean isComplated() {\r\n\t\t\treturn completed;\r\n\t\t}\r\n\r\n\t\tpublic ContractType getContractType() {\r\n\t\t\treturn contractType;\r\n\t\t}\r\n\r\n\t\tpublic ContractStatus getContractStatus() {\r\n\t\t\treturn contractStatus;\r\n\t\t}\r\n\r\n\t\tpublic List<TestMatch> match(final List<TestMatch> matchs) {\r\n\t\t\tfinal List<TestMatch> ok = new ArrayList<>();\r\n\t\t\tSet<Integer> found = new HashSet<>();\r\n\t\t\tfor (TestMatch match : matchs) {\r\n\t\t\t\tif (found.contains(match.getGroup())) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tif (!match.getAcceptor().match(acceptor)) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tif (!match.getIssuer().match(issuer)) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tswitch(match.getIncluded()) {\r\n\t\t\t\t\tcase TRUE:\r\n\t\t\t\t\t\tif (!included) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase FALSE:\r\n\t\t\t\t\t\tif (included) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tswitch(match.getCompleted()) {\r\n\t\t\t\t\tcase TRUE:\r\n\t\t\t\t\t\tif (!completed) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase FALSE:\r\n\t\t\t\t\t\tif (completed) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif (!match.getContractType().isEmpty() && !match.getContractType().contains(contractType)) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tif (!match.getContractStatus().isEmpty() && !match.getContractStatus().contains(contractStatus)) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tif (!match.getNotContractStatus().isEmpty() && match.getNotContractStatus().contains(contractStatus)) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tfound.add(match.getGroup());\r\n\t\t\t\tok.add(match);\r\n\t\t\t}\r\n\t\t\treturn ok;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class Acceptor implements OwnerData<Acceptor> {\r\n\t\tprotected final AssetDate assetDate;\r\n\t\tprotected final BalanceDate balanceDate;\r\n\r\n\t\tpublic Acceptor(AssetDate assetDate, BalanceDate balanceDate) {\r\n\t\t\tthis.assetDate = assetDate;\r\n\t\t\tthis.balanceDate = balanceDate;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic AssetDate getAssetDate() {\r\n\t\t\treturn assetDate;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic BalanceDate getBalanceDate() {\r\n\t\t\treturn balanceDate;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean match(Acceptor acceptor) {\r\n\t\t\treturn match(this, acceptor);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class Issuer implements OwnerData<Issuer> {\r\n\r\n\t\tprotected final AssetDate assetDate;\r\n\t\tprotected final BalanceDate balanceDate;\r\n\r\n\t\tpublic Issuer(AssetDate assetDate, BalanceDate balanceDate) {\r\n\t\t\tthis.assetDate = assetDate;\r\n\t\t\tthis.balanceDate = balanceDate;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic AssetDate getAssetDate() {\r\n\t\t\treturn assetDate;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic BalanceDate getBalanceDate() {\r\n\t\t\treturn balanceDate;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean match(Issuer issuer) {\r\n\t\t\treturn match(this, issuer);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static interface OwnerData<T extends OwnerData<?>> {\r\n\t\tpublic AssetDate getAssetDate();\r\n\t\tpublic BalanceDate getBalanceDate();\r\n\t\tpublic boolean match(T ownerData);\r\n\t\tdefault boolean match(T o1, T o2) {\r\n\t\t\treturn match(o1.getAssetDate(), o2.getAssetDate()) && match(o1.getBalanceDate(), o2.getBalanceDate());\r\n\t\t}\r\n\t\tdefault boolean match(AssetDate o1, AssetDate o2) {\r\n\t\t\tif (o1 == null || o2 == null) {\r\n\t\t\t\treturn true;\r\n\t\t\t} else {\r\n\t\t\t\treturn o1 == o2;\r\n\t\t\t}\r\n\t\t}\r\n\t\tdefault boolean match(BalanceDate o1, BalanceDate o2) {\r\n\t\t\tif (o1 == null || o2 == null) {\r\n\t\t\t\treturn true;\r\n\t\t\t} else {\r\n\t\t\t\treturn o1 == o2;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/i18n/TestI18N.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.i18n;\n\n\nimport net.nikr.eve.jeveasset.TestUtil;\nimport static org.junit.Assert.assertNotNull;\nimport org.junit.Test;\n\n/**\n *\n * @author Candle\n */\npublic class TestI18N extends TestUtil {\n\n\t@Test\n\tpublic void testDataColors_en() throws Exception {\n\t\tDataColors g = BundleServiceFactory.getBundleService().get(DataColors.class);\n\t\tassertNotNull(g.assetsReprocessingEqual());\n\t}\n\n\t@Test\n\tpublic void testDataModelAsset_en() throws Exception {\n\t\tDataModelAsset g = BundleServiceFactory.getBundleService().get(DataModelAsset.class);\n\t\tassertNotNull(g.packaged());\n\t}\n\n\t@Test\n\tpublic void testDataModelIndustryJob_en() throws Exception {\n\t\tDataModelIndustryJob g = BundleServiceFactory.getBundleService().get(DataModelIndustryJob.class);\n\t\tassertNotNull(g.activityAll());\n\t}\n\n\t@Test\n\tpublic void testDataModelPriceDataSettings_en() throws Exception {\n\t\tDataModelPriceDataSettings g = BundleServiceFactory.getBundleService().get(DataModelPriceDataSettings.class);\n\t\tassertNotNull(g.priceBuyAvg());\n\t}\n\n\t@Test\n\tpublic void testDialoguesAbout_en() throws Exception {\n\t\tDialoguesAbout g = BundleServiceFactory.getBundleService().get(DialoguesAbout.class);\n\t\tassertNotNull(g.about());\n\t}\n\n\t@Test\n\tpublic void testDialoguesAccount_en() throws Exception {\n\t\tDialoguesAccount g = BundleServiceFactory.getBundleService().get(DialoguesAccount.class);\n\t\tassertNotNull(g.accessKey());\n\t}\n\n\t@Test\n\tpublic void testDialoguesExport_en() throws Exception {\n\t\tDialoguesExport g = BundleServiceFactory.getBundleService().get(DialoguesExport.class);\n\t\tassertNotNull(g.noFilter());\n\t}\n\n\t@Test\n\tpublic void testDialoguesProfiles_en() throws Exception {\n\t\tDialoguesProfiles g = BundleServiceFactory.getBundleService().get(DialoguesProfiles.class);\n\t\tassertNotNull(g.deleteProfileConfirm(\"delete me!\"));\n\t}\n\n\t@Test\n\tpublic void testDialoguesSettings_en() throws Exception {\n\t\tDialoguesSettings g = BundleServiceFactory.getBundleService().get(DialoguesSettings.class);\n\t\tassertNotNull(g.enterFilter());\n\t}\n\n\t@Test\n\tpublic void testDialoguesStructure_en() throws Exception {\n\t\tDialoguesStructure g = BundleServiceFactory.getBundleService().get(DialoguesStructure.class);\n\t\tassertNotNull(g.invalid());\n\t}\n\n\t@Test\n\tpublic void testDialoguesUpdate_en() throws Exception {\n\t\tDialoguesUpdate g = BundleServiceFactory.getBundleService().get(DialoguesUpdate.class);\n\t\tassertNotNull(g.accountBalance());\n\t}\n\n\t@Test public void testGeneral_en() throws Exception {\n\t\tGeneral g = BundleServiceFactory.getBundleService().get(General.class);\n\t\tassertNotNull(g.uncaughtErrorMessage());\n\t}\n\n\t@Test public void testGuiFrame_en() throws Exception {\n\t\tGuiFrame g = BundleServiceFactory.getBundleService().get(GuiFrame.class);\n\t\tassertNotNull(g.about());\n\t}\n\n\t@Test public void testGuiShared_en() throws Exception {\n\t\tGuiShared g = BundleServiceFactory.getBundleService().get(GuiShared.class);\n\t\tassertNotNull(g.add());\n\t}\n\n\t@Test public void testTabNpcStandingPoints_en() throws Exception {\n\t\tTabsNpcStanding g = BundleServiceFactory.getBundleService().get(TabsNpcStanding.class);\n\t\tassertNotNull(g.npcStanding());\n\t}\n\n\t@Test public void testTabsAssets_en() throws Exception {\n\t\tTabsAssets g = BundleServiceFactory.getBundleService().get(TabsAssets.class);\n\t\tassertNotNull(g.assets());\n\t}\n\n\t@Test public void testTabsContracts_en() throws Exception {\n\t\tTabsContracts g = BundleServiceFactory.getBundleService().get(TabsContracts.class);\n\t\tassertNotNull(g.auction());\n\t}\n\n\t@Test public void testTabsItems_en() throws Exception {\n\t\tTabsItems g = BundleServiceFactory.getBundleService().get(TabsItems.class);\n\t\tassertNotNull(g.columnName());\n\t}\n\n\t@Test public void testTabsJobs_en() throws Exception {\n\t\tTabsJobs g = BundleServiceFactory.getBundleService().get(TabsJobs.class);\n\t\tassertNotNull(g.all());\n\t}\n\n\t@Test public void testTabsJournal_en() throws Exception {\n\t\tTabsJournal g = BundleServiceFactory.getBundleService().get(TabsJournal.class);\n\t\tassertNotNull(g.clearNew());\n\t}\n\n\t@Test public void testTabsLoadout_en() throws Exception {\n\t\tTabsLoadout g = BundleServiceFactory.getBundleService().get(TabsLoadout.class);\n\t\tassertNotNull(g.cancel());\n\t}\n\n\t@Test public void testTabsLoyaltyPoints_en() throws Exception {\n\t\tTabsLoyaltyPoints g = BundleServiceFactory.getBundleService().get(TabsLoyaltyPoints.class);\n\t\tassertNotNull(g.loyaltyPoints());\n\t}\n\n\t@Test public void testTabsMaterials_en() throws Exception {\n\t\tTabsMaterials g = BundleServiceFactory.getBundleService().get(TabsMaterials.class);\n\t\tassertNotNull(g.collapse());\n\t}\n\n\t@Test public void testTabsMining_en() throws Exception {\n\t\tTabsMining g = BundleServiceFactory.getBundleService().get(TabsMining.class);\n\t\tassertNotNull(g.miningLog());\n\t}\n\n\t@Test public void testTabsOrders_en() throws Exception {\n\t\tTabsOrders g = BundleServiceFactory.getBundleService().get(TabsOrders.class);\n\t\tassertNotNull(g.columnExpires());\n\t}\n\n\t@Test public void testTabsOverview_en() throws Exception {\n\t\tTabsOverview g = BundleServiceFactory.getBundleService().get(TabsOverview.class);\n\t\tassertNotNull(g.add());\n\t}\n\n\t@Test public void testTabsPriceChanges_en() throws Exception {\n\t\tTabsPriceChanges g = BundleServiceFactory.getBundleService().get(TabsPriceChanges.class);\n\t\tassertNotNull(g.columnCategory());\n\t}\n\n\t@Test public void testTabsPriceHistory_en() throws Exception {\n\t\tTabsPriceHistory g = BundleServiceFactory.getBundleService().get(TabsPriceHistory.class);\n\t\tassertNotNull(g.add());\n\t}\n\n\t@Test public void testTabsReprocessed_en() throws Exception {\n\t\tTabsReprocessed g = BundleServiceFactory.getBundleService().get(TabsReprocessed.class);\n\t\tassertNotNull(g.addItem());\n\t}\n\n\t@Test public void testTabsRouting_en() throws Exception {\n\t\tTabsRouting g = BundleServiceFactory.getBundleService().get(TabsRouting.class);\n\t\tassertNotNull(g.add());\n\t}\n\n\t@Test public void testTabsSkills_en() throws Exception {\n\t\tTabsSkills g = BundleServiceFactory.getBundleService().get(TabsSkills.class);\n\t\tassertNotNull(g.skills());\n\t}\n\n\t@Test public void testTabsSlots_en() throws Exception {\n\t\tTabsSlots g = BundleServiceFactory.getBundleService().get(TabsSlots.class);\n\t\tassertNotNull(g.title());\n\t}\n\n\t@Test public void testTabsStockpile_en() throws Exception {\n\t\tTabsStockpile g = BundleServiceFactory.getBundleService().get(TabsStockpile.class);\n\t\tassertNotNull(g.addItem());\n\t}\n\n\t@Test public void testTabsTracker_en() throws Exception {\n\t\tTabsTracker g = BundleServiceFactory.getBundleService().get(TabsTracker.class);\n\t\tassertNotNull(g.allProfiles());\n\t}\n\n\t@Test public void testTabsTransaction_en() throws Exception {\n\t\tTabsTransaction g = BundleServiceFactory.getBundleService().get(TabsTransaction.class);\n\t\tassertNotNull(g.buy());\n\t}\n\n\t@Test public void testTabsTabsTree_en() throws Exception {\n\t\tTabsTree g = BundleServiceFactory.getBundleService().get(TabsTree.class);\n\t\tassertNotNull(g.categories());\n\t}\n\n\t@Test public void testTabsValues_en() throws Exception {\n\t\tTabsValues g = BundleServiceFactory.getBundleService().get(TabsValues.class);\n\t\tassertNotNull(g.columnAssets());\n\t}\n}\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/esi/EsiConverterTest.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.io.esi;\n\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport net.nikr.eve.jeveasset.TestUtil;\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\nimport net.nikr.eve.jeveasset.data.api.my.MyAccountBalance;\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\nimport net.nikr.eve.jeveasset.data.api.my.MyJournal;\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\nimport net.nikr.eve.jeveasset.data.api.raw.RawBlueprint;\nimport net.nikr.eve.jeveasset.io.shared.ConverterTestOptions;\nimport net.nikr.eve.jeveasset.io.shared.ConverterTestOptionsGetter;\nimport net.nikr.eve.jeveasset.io.shared.ConverterTestUtil;\nimport net.troja.eve.esi.model.CharacterAssetsResponse;\nimport net.troja.eve.esi.model.CharacterBlueprintsResponse;\nimport net.troja.eve.esi.model.ContractItemsResponse;\nimport net.troja.eve.esi.model.CharacterContractsResponse;\nimport net.troja.eve.esi.model.CharacterIndustryJobsResponse;\nimport net.troja.eve.esi.model.CharacterLocationResponse;\nimport net.troja.eve.esi.model.CharacterOrdersHistoryResponse;\nimport net.troja.eve.esi.model.CharacterOrdersResponse;\nimport net.troja.eve.esi.model.CharacterShipResponse;\nimport net.troja.eve.esi.model.CharacterWalletJournalResponse;\nimport net.troja.eve.esi.model.CharacterWalletTransactionsResponse;\nimport net.troja.eve.esi.model.CorporationAssetsResponse;\nimport net.troja.eve.esi.model.CorporationBlueprintsResponse;\nimport net.troja.eve.esi.model.CorporationContractsResponse;\nimport net.troja.eve.esi.model.CorporationIndustryJobsResponse;\nimport net.troja.eve.esi.model.CorporationOrdersHistoryResponse;\nimport net.troja.eve.esi.model.CorporationOrdersResponse;\nimport net.troja.eve.esi.model.CorporationWalletJournalResponse;\nimport net.troja.eve.esi.model.CorporationWalletTransactionsResponse;\nimport net.troja.eve.esi.model.CorporationWalletsResponse;\nimport static org.junit.Assert.assertEquals;\nimport org.junit.Test;\n\n\npublic class EsiConverterTest extends TestUtil {\n\n\tprivate static final boolean SAVE_HISTORY = false;\n\n\t@Test\n\tpublic void testToAccountBalance() {\n\t\ttestToAccountBalance(null);\n\t}\n\n\tpublic void testToAccountBalance(Class<?> esi) {\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\n\t\t\tList<MyAccountBalance> accountBalances = EsiConverter.toAccountBalance(options.getDouble(), ConverterTestUtil.getEsiOwner(options), options.getInteger());\n\t\t\tConverterTestUtil.testValues(accountBalances.get(0), options, esi);\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToAccountBalanceCorporation() {\n\t\ttestToAccountBalanceCorporation(null);\n\t}\n\n\t@Test\n\tpublic void testToAccountBalanceCorporationOptional() {\n\t\ttestToAccountBalanceCorporation(CorporationWalletsResponse.class);\n\t}\n\n\tpublic void testToAccountBalanceCorporation(Class<?> esi) {\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\n\t\t\tCorporationWalletsResponse walletsResponse = new CorporationWalletsResponse();\n\t\t\tConverterTestUtil.setValues(walletsResponse, options, esi);\n\t\t\tList<MyAccountBalance> accountBalances = EsiConverter.toAccountBalanceCorporation(Collections.singletonList(walletsResponse), ConverterTestUtil.getEsiOwner(options));\n\t\t\tConverterTestUtil.testValues(accountBalances.get(0), options, esi);\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToAssets() {\n\t\ttestToAssets(null);\n\t}\n\n\t@Test\n\tpublic void testToAssetsOptional() {\n\t\ttestToAssets(CharacterAssetsResponse.class);\n\t}\n\n\tpublic void testToAssets(Class<?> esi) {\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\n\t\t\tList<CharacterAssetsResponse> assetsResponses = new ArrayList<>();\n\n\t\t\tCharacterAssetsResponse rootAssetsResponse = new CharacterAssetsResponse();\n\t\t\tassetsResponses.add(rootAssetsResponse);\n\t\t\tConverterTestUtil.setValues(rootAssetsResponse, options, esi);\n\t\t\trootAssetsResponse.setItemId(rootAssetsResponse.getItemId() + 1);\n\n\t\t\tCharacterAssetsResponse childAssetsResponse = new CharacterAssetsResponse();\n\t\t\tassetsResponses.add(childAssetsResponse);\n\t\t\tConverterTestUtil.setValues(childAssetsResponse, options, esi);\n\t\t\tchildAssetsResponse.setLocationId(rootAssetsResponse.getItemId());\n\n\t\t\tEsiOwner owner = ConverterTestUtil.getEsiOwner(options);\n\t\t\tList<MyAsset> assets = EsiConverter.toAssets(assetsResponses, owner);\n\t\t\tif (!assets.isEmpty()) {\n\t\t\t\tassertEquals(\"List empty @\" + options.getIndex(), 1, assets.size());\n\t\t\t\tConverterTestUtil.testValues(assets.get(0), options, esi);\n\n\t\t\t\tassertEquals(\"List empty @\" + options.getIndex(), 1, assets.get(0).getAssets().size());\n\t\t\t\tMyAsset childAsset = assets.get(0).getAssets().get(0);\n\t\t\t\tConverterTestUtil.testValues(childAsset, options, esi);\n\t\t\t} else {\n\t\t\t\tassertEquals(assets.size(), 0);\n\t\t\t}\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToAssetsCorporation() {\n\t\ttestToAssetsCorporation(null);\n\t}\n\n\t@Test\n\tpublic void testToAssetsCorporationOptional() {\n\t\ttestToAssetsCorporation(CorporationAssetsResponse.class);\n\t}\n\n\tpublic void testToAssetsCorporation(Class<?> esi) {\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\n\t\t\tList<CorporationAssetsResponse> assetsResponses = new ArrayList<>();\n\n\t\t\tCorporationAssetsResponse rootAssetsResponse = new CorporationAssetsResponse();\n\t\t\tassetsResponses.add(rootAssetsResponse);\n\t\t\tConverterTestUtil.setValues(rootAssetsResponse, options, esi);\n\t\t\trootAssetsResponse.setItemId(rootAssetsResponse.getItemId() + 1);\n\n\t\t\tCorporationAssetsResponse childAssetsResponse = new CorporationAssetsResponse();\n\t\t\tassetsResponses.add(childAssetsResponse);\n\t\t\tConverterTestUtil.setValues(childAssetsResponse, options, esi);\n\t\t\tchildAssetsResponse.setLocationId(rootAssetsResponse.getItemId());\n\n\t\t\tEsiOwner owner = ConverterTestUtil.getEsiOwner(options);\n\t\t\tList<MyAsset> assets = EsiConverter.toAssetsCorporation(assetsResponses, owner);\n\t\t\tif (!assets.isEmpty()) {\n\t\t\t\tassertEquals(\"List empty @\" + options.getIndex(), 1, assets.size());\n\t\t\t\tConverterTestUtil.testValues(assets.get(0), options, esi);\n\n\t\t\t\tassertEquals(\"List empty @\" + options.getIndex(), 1, assets.get(0).getAssets().size());\n\t\t\t\tMyAsset childAsset = assets.get(0).getAssets().get(0);\n\t\t\t\tConverterTestUtil.testValues(childAsset, options, esi);\n\t\t\t} else {\n\t\t\t\tassertEquals(assets.size(), 0);\n\t\t\t}\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToBlueprints() {\n\t\ttestBlueprints(null);\n\t}\n\n\t@Test\n\tpublic void testToBlueprintsOptional() {\n\t\ttestBlueprints(CharacterBlueprintsResponse.class);\n\t}\n\n\tprivate void testBlueprints(Class<?> esi) {\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\n\t\t\tCharacterBlueprintsResponse blueprintsResponse = new CharacterBlueprintsResponse();\n\t\t\tConverterTestUtil.setValues(blueprintsResponse, options, esi);\n\t\t\tMap<Long, RawBlueprint> blueprints = EsiConverter.toBlueprints(Collections.singletonList(blueprintsResponse));\n\t\t\tConverterTestUtil.testValues(blueprints.values().iterator().next(), options, esi);\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToBlueprintsCorporation() {\n\t\ttestToBlueprintsCorporation(null);\n\t}\n\n\t@Test\n\tpublic void testToBlueprintsCorporationOptional() {\n\t\ttestToBlueprintsCorporation(CorporationBlueprintsResponse.class);\n\t}\n\n\tpublic void testToBlueprintsCorporation(Class<?> esi) {\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\n\t\t\tCorporationBlueprintsResponse blueprintsResponse = new CorporationBlueprintsResponse();\n\t\t\tConverterTestUtil.setValues(blueprintsResponse, options, esi);\n\t\t\tMap<Long, RawBlueprint> blueprints = EsiConverter.toBlueprintsCorporation(Collections.singletonList(blueprintsResponse));\n\t\t\tConverterTestUtil.testValues(blueprints.values().iterator().next(), options, esi);\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToIndustryJobs() {\n\t\ttestToIndustryJobs(null);\n\t}\n\n\t@Test\n\tpublic void testToIndustryJobsOptional() {\n\t\ttestToIndustryJobs(CharacterIndustryJobsResponse.class);\n\t}\n\n\tprivate void testToIndustryJobs(Class<?> esi) {\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\n\t\t\tCharacterIndustryJobsResponse industryJobsResponse = new CharacterIndustryJobsResponse();\n\t\t\tConverterTestUtil.setValues(industryJobsResponse, options, esi);\n\t\t\tSet<MyIndustryJob> industryJobs = EsiConverter.toIndustryJobs(Collections.singletonList(industryJobsResponse), ConverterTestUtil.getEsiOwner(options), SAVE_HISTORY);\n\t\t\tConverterTestUtil.testValues(industryJobs.iterator().next(), options, esi);\n\t\t}\n\t}\n\t@Test\n\tpublic void testToIndustryJobsCorporation() {\n\t\ttestToIndustryJobsCorporation(null);\n\t}\n\n\t@Test\n\tpublic void testToIndustryJobsCorporationOptional() {\n\t\ttestToIndustryJobsCorporation(CorporationIndustryJobsResponse.class);\n\t}\n\n\tprivate void testToIndustryJobsCorporation(Class<?> esi) {\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\n\t\t\tCorporationIndustryJobsResponse industryJobsResponse = new CorporationIndustryJobsResponse();\n\t\t\tConverterTestUtil.setValues(industryJobsResponse, options, esi);\n\t\t\tSet<MyIndustryJob> industryJobs = EsiConverter.toIndustryJobsCorporation(Collections.singletonList(industryJobsResponse), ConverterTestUtil.getEsiOwner(options), SAVE_HISTORY);\n\t\t\tConverterTestUtil.testValues(industryJobs.iterator().next(), options, esi);\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToJournals() {\n\t\ttestToJournals(null);\n\t}\n\n\t@Test\n\tpublic void testToJournalsOptional() {\n\t\ttestToJournals(CharacterWalletJournalResponse.class);\n\t}\n\n\tprivate void testToJournals(Class<?> esi) {\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\n\t\t\tCharacterWalletJournalResponse journalResponse = new CharacterWalletJournalResponse();\n\t\t\tConverterTestUtil.setValues(journalResponse, options, esi);\n\t\t\tSet<MyJournal> journals = EsiConverter.toJournals(Collections.singletonList(journalResponse), ConverterTestUtil.getEsiOwner(options), options.getInteger(), SAVE_HISTORY);\n\t\t\tConverterTestUtil.testValues(journals.iterator().next(), options, esi);\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToJournalsCorporation() {\n\t\ttestToJournalsCorporation(null);\n\t}\n\n\t@Test\n\tpublic void testToJournalsCorporationOptional() {\n\t\ttestToJournalsCorporation(CorporationWalletJournalResponse.class);\n\t}\n\n\tpublic void testToJournalsCorporation(Class<?> esi) {\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\n\t\t\tCorporationWalletJournalResponse journalResponse = new CorporationWalletJournalResponse();\n\t\t\tConverterTestUtil.setValues(journalResponse, options, esi);\n\t\t\tSet<MyJournal> journals = EsiConverter.toJournalsCorporation(Collections.singletonList(journalResponse), ConverterTestUtil.getEsiOwner(options), options.getInteger(), SAVE_HISTORY);\n\t\t\tConverterTestUtil.testValues(journals.iterator().next(), options, esi);\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToContracts() {\n\t\ttestToContracts(null);\n\t}\n\n\t@Test\n\tpublic void testToContractsOptional() {\n\t\ttestToContracts(CharacterContractsResponse.class);\n\t}\n\n\tpublic void testToContracts(Class<?> esi) {\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\n\t\t\tCharacterContractsResponse contractsResponse = new CharacterContractsResponse();\n\t\t\tConverterTestUtil.setValues(contractsResponse, options, esi);\n\t\t\tMap<MyContract, List<MyContractItem>> contracts = EsiConverter.toContracts(Collections.singletonList(contractsResponse), ConverterTestUtil.getEsiOwner(options), SAVE_HISTORY);\n\t\t\tConverterTestUtil.testValues(contracts.keySet().iterator().next(), options, esi);\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToContractsCorporation() {\n\t\ttestToContractsCorporation(null);\n\t}\n\n\t@Test\n\tpublic void testToContractsCorporationOptional() {\n\t\ttestToContractsCorporation(CorporationContractsResponse.class);\n\t}\n\n\tpublic void testToContractsCorporation(Class<?> esi) {\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\n\t\t\tCorporationContractsResponse contractsResponse = new CorporationContractsResponse();\n\t\t\tConverterTestUtil.setValues(contractsResponse, options, esi);\n\t\t\tMap<MyContract, List<MyContractItem>> contracts = EsiConverter.toContractsCorporation(Collections.singletonList(contractsResponse), ConverterTestUtil.getEsiOwner(options), SAVE_HISTORY);\n\t\t\tConverterTestUtil.testValues(contracts.keySet().iterator().next(), options, esi);\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToContractItems() {\n\t\ttestToContractItems(null);\n\t}\n\n\t@Test\n\tpublic void testToContractItemsOptional() {\n\t\ttestToContractItems(ContractItemsResponse.class);\n\t}\n\n\tpublic void testToContractItems(Class<?> esi) {\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\n\t\t\tContractItemsResponse contractsItemsResponse = new ContractItemsResponse();\n\t\t\tConverterTestUtil.setValues(contractsItemsResponse, options, esi);\n\t\t\tMap<MyContract, List<MyContractItem>> contractItems = EsiConverter.toContractItems(Collections.singletonMap(ConverterTestUtil.getMyContract(false, true, options), Collections.singletonList(contractsItemsResponse)), ConverterTestUtil.getEsiOwner(options), SAVE_HISTORY);\n\t\t\tConverterTestUtil.testValues(contractItems.values().iterator().next().get(0), options, esi);\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToMarketOrders() {\n\t\ttestToMarketOrders(null);\n\t}\n\n\t@Test\n\tpublic void testToMarketOrdersOptional() {\n\t\ttestToMarketOrders(CharacterOrdersResponse.class);\n\t}\n\n\tpublic void testToMarketOrders(Class<?> esi) {\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\n\t\t\tCharacterOrdersResponse ordersResponse = new CharacterOrdersResponse();\n\t\t\tConverterTestUtil.setValues(ordersResponse, options, esi);\n\t\t\tSet<MyMarketOrder> marketOrders = EsiConverter.toMarketOrders(Collections.singletonList(ordersResponse), new ArrayList<>(), ConverterTestUtil.getEsiOwner(options), SAVE_HISTORY);\n\t\t\tConverterTestUtil.testValues(marketOrders.iterator().next(), options, esi);\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToMarketOrdersHistory() {\n\t\ttestToMarketOrdersHistory(null);\n\t}\n\n\t@Test\n\tpublic void testToMarketOrdersHistoryOptional() {\n\t\ttestToMarketOrdersHistory(CharacterOrdersHistoryResponse.class);\n\t}\n\n\tpublic void testToMarketOrdersHistory(Class<?> esi) {\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\n\t\t\tCharacterOrdersHistoryResponse ordersHistoryResponse = new CharacterOrdersHistoryResponse();\n\t\t\tConverterTestUtil.setValues(ordersHistoryResponse, options, esi);\n\t\t\tSet<MyMarketOrder> marketOrders = EsiConverter.toMarketOrders(new ArrayList<>(), Collections.singletonList(ordersHistoryResponse), ConverterTestUtil.getEsiOwner(options), SAVE_HISTORY);\n\t\t\tConverterTestUtil.testValues(marketOrders.iterator().next(), options, esi);\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToMarketOrdersCorporation() {\n\t\ttestToMarketOrdersCorporation(null);\n\t}\n\n\t@Test\n\tpublic void testToMarketOrdersCorporationOptional() {\n\t\ttestToMarketOrdersCorporation(CorporationOrdersResponse.class);\n\t}\n\n\tpublic void testToMarketOrdersCorporation(Class<?> esi) {\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\n\t\t\tCorporationOrdersResponse ordersResponse = new CorporationOrdersResponse();\n\t\t\tConverterTestUtil.setValues(ordersResponse, options, esi);\n\t\t\tSet<MyMarketOrder> marketOrders = EsiConverter.toMarketOrdersCorporation(Collections.singletonList(ordersResponse), new ArrayList<>(), ConverterTestUtil.getEsiOwner(options), SAVE_HISTORY);\n\t\t\tConverterTestUtil.testValues(marketOrders.iterator().next(), options, esi);\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToMarketOrdersHistoryCorporation() {\n\t\ttestToMarketOrdersHistoryCorporation(null);\n\t}\n\n\t@Test\n\tpublic void testToMarketOrdersHistoryCorporationOptional() {\n\t\ttestToMarketOrdersHistoryCorporation(CorporationOrdersHistoryResponse.class);\n\t}\n\n\tpublic void testToMarketOrdersHistoryCorporation(Class<?> esi) {\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\n\t\t\tCorporationOrdersHistoryResponse ordersHistoryResponse = new CorporationOrdersHistoryResponse();\n\t\t\tConverterTestUtil.setValues(ordersHistoryResponse, options, esi);\n\t\t\tSet<MyMarketOrder> marketOrders = EsiConverter.toMarketOrdersCorporation(new ArrayList<>(), Collections.singletonList(ordersHistoryResponse), ConverterTestUtil.getEsiOwner(options), SAVE_HISTORY);\n\t\t\tConverterTestUtil.testValues(marketOrders.iterator().next(), options, esi);\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToTransaction() {\n\t\ttestToTransaction(null);\n\t}\n\n\t@Test\n\tpublic void testToTransactionOptional() {\n\t\ttestToTransaction(CharacterWalletTransactionsResponse.class);\n\t}\n\n\tpublic void testToTransaction(Class<?> esi) {\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\n\t\t\tCharacterWalletTransactionsResponse transactionsResponse = new CharacterWalletTransactionsResponse();\n\t\t\tConverterTestUtil.setValues(transactionsResponse, options, esi);\n\t\t\tSet<MyTransaction> transactions = EsiConverter.toTransaction(Collections.singletonList(transactionsResponse), ConverterTestUtil.getEsiOwner(options), options.getInteger(), SAVE_HISTORY);\n\t\t\tConverterTestUtil.testValues(transactions.iterator().next(), options, esi);\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToTransactionCorporation() {\n\t\ttestToTransactionCorporation(null);\n\t}\n\n\t@Test\n\tpublic void testToTransactionCorporationOptional() {\n\t\ttestToTransactionCorporation(CorporationWalletTransactionsResponse.class);\n\t}\n\n\tpublic void testToTransactionCorporation(Class<?> esi) {\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\n\t\t\tCorporationWalletTransactionsResponse transactionsResponse = new CorporationWalletTransactionsResponse();\n\t\t\tConverterTestUtil.setValues(transactionsResponse, options, esi);\n\t\t\tSet<MyTransaction> transactions = EsiConverter.toTransactionCorporation(Collections.singletonList(transactionsResponse), ConverterTestUtil.getEsiOwner(options), options.getInteger(), SAVE_HISTORY);\n\t\t\tMyTransaction myTransaction = transactions.iterator().next();\n\t\t\tmyTransaction.setPersonal(true);\n\t\t\tConverterTestUtil.testValues(transactions.iterator().next(), options, esi);\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToAssetsShip() {\n\t\ttestToAssetsShip(null, null);\n\t}\n\n\t@Test\n\tpublic void testToAssetsShipOptional() {\n\t\ttestToAssetsShip(CharacterShipResponse.class, CharacterLocationResponse.class);\n\t}\n\n\tpublic void testToAssetsShip(Class<?> esiShip, Class<?> esiLocation) {\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\n\t\t\tCharacterShipResponse shipType = new CharacterShipResponse();\n\t\t\tConverterTestUtil.setValues(shipType, options, esiShip);\n\t\t\tCharacterLocationResponse shipLocation = new CharacterLocationResponse();\n\t\t\tConverterTestUtil.setValues(shipLocation, options, esiLocation);\n\t\t\tMyAsset asset = EsiConverter.toAssetsShip(shipType, shipLocation, ConverterTestUtil.getEsiOwner(options));\n\t\t\tasset.setQuantity(options.getInteger()); //Always 1 -> set to 5 to pass test\n\t\t\tasset.setItemFlag(options.getItemFlag()); //Always \"None\" -> set to option value to pass test\n\t\t\tConverterTestUtil.testValues(asset, options, null);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/esi/EsiDeprecationOnlineTest.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.io.esi;\n\nimport java.awt.Desktop;\nimport java.io.BufferedReader;\nimport java.io.IOException;\nimport java.io.InputStreamReader;\nimport java.net.URI;\nimport java.net.URISyntaxException;\nimport java.time.LocalDate;\nimport java.util.Collections;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport net.nikr.eve.jeveasset.TestUtil;\nimport net.troja.eve.esi.ApiClient;\nimport net.troja.eve.esi.ApiClientBuilder;\nimport net.troja.eve.esi.ApiException;\nimport net.troja.eve.esi.ApiResponse;\nimport net.troja.eve.esi.api.AssetsApi;\nimport net.troja.eve.esi.api.CharacterApi;\nimport net.troja.eve.esi.api.ContractsApi;\nimport net.troja.eve.esi.api.CorporationApi;\nimport net.troja.eve.esi.api.FactionWarfareApi;\nimport net.troja.eve.esi.api.IndustryApi;\nimport net.troja.eve.esi.api.LocationApi;\nimport net.troja.eve.esi.api.MarketApi;\nimport net.troja.eve.esi.api.PlanetaryInteractionApi;\nimport net.troja.eve.esi.api.SkillsApi;\nimport net.troja.eve.esi.api.SovereigntyApi;\nimport net.troja.eve.esi.api.UniverseApi;\nimport net.troja.eve.esi.api.UserInterfaceApi;\nimport net.troja.eve.esi.api.WalletApi;\nimport net.troja.eve.esi.auth.JWT;\nimport net.troja.eve.esi.auth.JWT.Payload;\nimport net.troja.eve.esi.auth.OAuth;\nimport net.troja.eve.esi.model.CategoryResponse;\nimport net.troja.eve.esi.model.CharacterAffiliationResponse;\nimport net.troja.eve.esi.model.AssetsNamesResponse;\nimport net.troja.eve.esi.model.CharacterAssetsResponse;\nimport net.troja.eve.esi.model.CharacterBlueprintsResponse;\nimport net.troja.eve.esi.model.CharacterContractsResponse;\nimport net.troja.eve.esi.model.CharacterIndustryJobsResponse;\nimport net.troja.eve.esi.model.CharacterLocationResponse;\nimport net.troja.eve.esi.model.CharacterMiningResponse;\nimport net.troja.eve.esi.model.CharacterOrdersHistoryResponse;\nimport net.troja.eve.esi.model.CharacterOrdersResponse;\nimport net.troja.eve.esi.model.CharacterPlanetResponse;\nimport net.troja.eve.esi.model.CharacterRolesResponse;\nimport net.troja.eve.esi.model.CharacterShipResponse;\nimport net.troja.eve.esi.model.CharacterSkillsResponse;\nimport net.troja.eve.esi.model.CharacterWalletJournalResponse;\nimport net.troja.eve.esi.model.CharacterWalletTransactionsResponse;\nimport net.troja.eve.esi.model.CorporationAssetsResponse;\nimport net.troja.eve.esi.model.CorporationBlueprintsResponse;\nimport net.troja.eve.esi.model.ContractItemsResponse;\nimport net.troja.eve.esi.model.CorporationContractsResponse;\nimport net.troja.eve.esi.model.CorporationDivisionsResponse;\nimport net.troja.eve.esi.model.CorporationIndustryJobsResponse;\nimport net.troja.eve.esi.model.CorporationMiningExtractionsResponse;\nimport net.troja.eve.esi.model.CorporationMiningObserverResponse;\nimport net.troja.eve.esi.model.CorporationMiningObserversResponse;\nimport net.troja.eve.esi.model.CorporationOrdersHistoryResponse;\nimport net.troja.eve.esi.model.CorporationOrdersResponse;\nimport net.troja.eve.esi.model.CorporationResponse;\nimport net.troja.eve.esi.model.CorporationWalletJournalResponse;\nimport net.troja.eve.esi.model.CorporationWalletTransactionsResponse;\nimport net.troja.eve.esi.model.CorporationWalletsResponse;\nimport net.troja.eve.esi.model.FactionWarfareSystemsResponse;\nimport net.troja.eve.esi.model.FactionsResponse;\nimport net.troja.eve.esi.model.GroupResponse;\nimport net.troja.eve.esi.model.IndustrySystemsResponse;\nimport net.troja.eve.esi.model.MarketGroupResponse;\nimport net.troja.eve.esi.model.MarketRegionOrdersResponse;\nimport net.troja.eve.esi.model.MarketPricesResponse;\nimport net.troja.eve.esi.model.MarketStructureResponse;\nimport net.troja.eve.esi.model.MoonResponse;\nimport net.troja.eve.esi.model.NamesResponse;\nimport net.troja.eve.esi.model.PlanetResponse;\nimport net.troja.eve.esi.model.PublicContractsItemsResponse;\nimport net.troja.eve.esi.model.SovereigntyStructuresResponse;\nimport net.troja.eve.esi.model.StructureResponse;\nimport net.troja.eve.esi.model.TypeResponse;\nimport static org.junit.Assert.assertNotNull;\nimport static org.junit.Assert.assertTrue;\nimport static org.junit.Assert.fail;\nimport static org.junit.Assume.assumeTrue;\nimport org.junit.Test;\n\n\npublic class EsiDeprecationOnlineTest extends TestUtil {\n\n\tprivate final static LocalDate COMPATIBILITY_DATE = UniverseApi.COMPATIBILITY_DATE;\n\tprivate final static ApiClient API_CLIENT = setupAuth();\n\tprivate final static WalletApi WALLET_API = new WalletApi(API_CLIENT);\n\tprivate final static AssetsApi ASSETS_API = new AssetsApi(API_CLIENT);\n\tprivate final static CharacterApi CHARACTER_API = new CharacterApi(API_CLIENT);\n\tprivate final static CorporationApi CORPORATION_API = new CorporationApi(API_CLIENT);\n\tprivate final static SovereigntyApi SOVEREIGNTY_API = new SovereigntyApi();\n\tprivate final static ContractsApi CONTRACTS_API = new ContractsApi(API_CLIENT);\n\tprivate final static IndustryApi INDUSTRY_API = new IndustryApi(API_CLIENT);\n\tprivate final static MarketApi MARKET_API = new MarketApi(API_CLIENT);\n\tprivate final static UniverseApi UNIVERSE_API = new UniverseApi(API_CLIENT);\n\tprivate final static PlanetaryInteractionApi PLANETARY_INTERACTION_API = new PlanetaryInteractionApi(API_CLIENT);\n\tprivate final static LocationApi LOCATION_API = new LocationApi(API_CLIENT);\n\tprivate final static UserInterfaceApi USER_INTERFACE_API = new UserInterfaceApi(API_CLIENT);\n\tprivate final static SkillsApi SKILLS_API = new SkillsApi(API_CLIENT);\n\tprivate static final FactionWarfareApi FACTION_WARFARE_API = new FactionWarfareApi(API_CLIENT);\n\n\tpublic EsiDeprecationOnlineTest() { }\n\n\tpublic static ApiClient setupAuth() {\n\t\tString clientId = System.getenv().get(\"SSO_CLIENT_ID\");\n\t\tString refreshToken = System.getenv().get(\"SSO_REFRESH_TOKEN\");\n\t\tif (clientId != null && refreshToken != null) {\n\t\t\treturn new ApiClientBuilder().clientID(clientId).refreshToken(refreshToken).build();\n\t\t} else {\n\t\t\treturn new ApiClient();\n\t\t}\n\t}\n\n\t/**\n\t * This main method can be used to generate a refresh token to run the unit\n\t * tests that need authentication.\n\t *\n\t * @param args\n\t * @throws java.io.IOException\n\t * @throws java.net.URISyntaxException\n\t * @throws net.troja.eve.esi.ApiException\n\t */\n\tpublic static void main(final String... args) throws IOException, URISyntaxException, ApiException {\n\t\tinitLog();\n\t\tfinal String state = \"somesecret\";\n\t\tfinal ApiClient client = new ApiClientBuilder().clientID(EsiCallbackURL.LOCALHOST.getA()).build();\n\t\tfinal OAuth auth = (OAuth) client.getAuthentication(ApiClientBuilder.AUTHENTICATION);\n\t\tfinal Set<String> scopes = new HashSet<>();\n\t\tfor (EsiScopes scope : EsiScopes.values()) {\n\t\t\tif (scope.isPublicScope()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tscopes.add(scope.getScope());\n\t\t}\n\t\tfinal String authorizationUri = auth.getAuthorizationUri(EsiCallbackURL.LOCALHOST.getUrl(), scopes, state);\n\t\tSystem.out.println(\"Authorization URL: \" + authorizationUri);\n\t\tDesktop.getDesktop().browse(new URI(authorizationUri));\n\t\tSystem.out.println(\"Code from Answer: \");\n\t\tfinal BufferedReader br = new BufferedReader(new InputStreamReader(System.in));\n\t\tfinal String code = br.readLine();\n\t\tauth.finishFlow(code, state);\n\t\tSystem.out.println(\"Refresh Token: \" + auth.getRefreshToken());\n\t}\n\n\t@Test\n\tpublic void testScopes() {\n\t\tOAuth oAuth = (OAuth) API_CLIENT.getAuthentication(ApiClientBuilder.AUTHENTICATION);\n\t\tJWT jwt = oAuth.getJWT();\n\t\tassumeTrue(jwt != null);\n\t\tassertNotNull(\"JWT is null\", jwt);\n\t\tPayload payload = jwt.getPayload();\n\t\tassertNotNull(\"Payload is null\", payload);\n\t\tfor (EsiScopes scope : EsiScopes.values()) {\n\t\t\tif (scope.isPublicScope()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tassertTrue(scope.getScope() + \" not included\", payload.getScopes().contains(scope.getScope()));\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiAccountBalanceGetterCharacter() {\n\t\ttry {\n\t\t\tApiResponse<Double> apiResponse = WALLET_API.getCharacterWalletWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiAccountBalanceGetterCorporation() {\n\t\ttry {\n\t\t\tApiResponse<List<CorporationWalletsResponse>> apiResponse = WALLET_API.getCorporationWalletsWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiAssetsGetterCharacter() {\n\t\ttry {\n\t\t\tApiResponse<List<CharacterAssetsResponse>> apiResponse = ASSETS_API.getCharacterAssetsWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiAssetsGetterCorporation() {\n\t\ttry {\n\t\t\tApiResponse<List<CorporationAssetsResponse>> apiResponse = ASSETS_API.getCorporationAssetsWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiBlueprintsGetterCharacter() {\n\t\ttry {\n\t\t\tApiResponse<List<CharacterBlueprintsResponse>> apiResponse = CHARACTER_API.getCharacterBlueprintsWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiBlueprintsGetterCorporation() {\n\t\ttry {\n\t\t\tApiResponse<List<CorporationBlueprintsResponse>> apiResponse = CORPORATION_API.getCorporationBlueprintsWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiConquerableStationsGetter() {\n\t\ttry {\n\t\t\tApiResponse<List<SovereigntyStructuresResponse>> apiResponse = SOVEREIGNTY_API.getSovereigntyStructuresWithHttpInfo(COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiContractItemsGetterCharacter() {\n\t\ttry {\n\t\t\tApiResponse<List<ContractItemsResponse>> apiResponse = CONTRACTS_API.getCharacterContractItemsWithHttpInfo(1L, 1L, COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiContractItemsGetterCorporation() {\n\t\ttry {\n\t\t\tApiResponse<List<ContractItemsResponse>> apiResponse = CONTRACTS_API.getCorporationContractItemsWithHttpInfo(1L, 1L, COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiContractItemsGetterPublic() {\n\t\ttry {\n\t\t\tApiResponse<List<PublicContractsItemsResponse>> apiResponse = CONTRACTS_API.getPublicContractsItemsContractIdWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiContractsGetterCharacter() {\n\t\ttry {\n\t\t\tApiResponse<List<CharacterContractsResponse>> apiResponse = CONTRACTS_API.getCharacterContractsWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiContractsGetterCorporation() {\n\t\ttry {\n\t\t\tApiResponse<List<CorporationContractsResponse>> apiResponse = CONTRACTS_API.getCorporationContractsWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiDivisionsGetter() {\n\t\ttry {\n\t\t\tApiResponse<CorporationDivisionsResponse> apiResponse = CORPORATION_API.getCorporationDivisionsWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiFactionWarfareGetterFactions() {\n\t\ttry {\n\t\t\tApiResponse<List<FactionsResponse>> apiResponse = UNIVERSE_API.getFactionsWithHttpInfo(COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiFactionWarfareGetterSystems() {\n\t\ttry {\n\t\t\tApiResponse<List<FactionWarfareSystemsResponse>> apiResponse = FACTION_WARFARE_API.getFactionWarfareSystemsWithHttpInfo(COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiIndustryJobsGetterCharacter() {\n\t\ttry {\n\t\t\tApiResponse<List<CharacterIndustryJobsResponse>> apiResponse = INDUSTRY_API.getCharacterIndustryJobsWithHttpInfo(1L, COMPATIBILITY_DATE, true, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiIndustryJobsGetterCorporation() {\n\t\ttry {\n\t\t\tApiResponse<List<CorporationIndustryJobsResponse>> apiResponse = INDUSTRY_API.getCorporationIndustryJobsWithHttpInfo(1L, COMPATIBILITY_DATE, true, null, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiItemsGetterCategories() {\n\t\ttry {\n\t\t\tApiResponse<CategoryResponse> apiResponse = UNIVERSE_API.getCategoryWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiItemsGetterGroups() {\n\t\ttry {\n\t\t\tApiResponse<GroupResponse> apiResponse = UNIVERSE_API.getGroupWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiItemsGetterMarketGroups() {\n\t\ttry {\n\t\t\tApiResponse<MarketGroupResponse> apiResponse = MARKET_API.getMarketGroupWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiItemsGetterTypes() {\n\t\ttry {\n\t\t\tApiResponse<TypeResponse> apiResponse = UNIVERSE_API.getTypeWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiJournalGetterCharacter() {\n\t\ttry {\n\t\t\tApiResponse<List<CharacterWalletJournalResponse>> apiResponse = WALLET_API.getCharacterWalletJournalWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiJournalGetterCorporation() {\n\t\ttry {\n\t\t\tApiResponse<List<CorporationWalletJournalResponse>> apiResponse = WALLET_API.getCorporationWalletJournalWithHttpInfo(1L, 1L, COMPATIBILITY_DATE, null, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiLocationsGetterCharacterLocations() {\n\t\ttry {\n\t\t\tApiResponse<List<AssetsNamesResponse>> apiResponse = ASSETS_API.postCharacterAssetsNamesWithHttpInfo(1L, COMPATIBILITY_DATE, Collections.singleton(1L), null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiLocationsGetterCorporation() {\n\t\ttry {\n\t\t\tApiResponse<List<AssetsNamesResponse>> apiResponse = ASSETS_API.postCorporationAssetsNamesWithHttpInfo(1L, COMPATIBILITY_DATE, Collections.singleton(1L), null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiManufacturingPricesIndustrySystems() {\n\t\ttry {\n\t\t\tApiResponse<List<IndustrySystemsResponse>> apiResponse = INDUSTRY_API.getIndustrySystemsWithHttpInfo(COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiManufacturingPricesMarketsPrices() {\n\t\ttry {\n\t\t\tApiResponse<List<MarketPricesResponse>> apiResponse = MARKET_API.getMarketPricesWithHttpInfo(COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiMarketOrdersGetterCharacter() {\n\t\ttry {\n\t\t\tApiResponse<List<CharacterOrdersResponse>> apiResponse = MARKET_API.getCharacterOrdersWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiMarketOrdersGetterCorporation() {\n\t\ttry {\n\t\t\tApiResponse<List<CorporationOrdersResponse>> apiResponse = MARKET_API.getCorporationOrdersWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiMarketOrdersHistoryGetterCharacter() {\n\t\ttry {\n\t\t\tApiResponse<List<CharacterOrdersHistoryResponse>> apiResponse = MARKET_API.getCharacterOrdersHistoryWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiMarketOrdersHistoryGetterCorporation() {\n\t\ttry {\n\t\t\tApiResponse<List<CorporationOrdersHistoryResponse>> apiResponse = MARKET_API.getCorporationOrdersHistoryWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiMiningGetterCharacter() {\n\t\ttry {\n\t\t\tApiResponse<List<CharacterMiningResponse>> apiResponse = INDUSTRY_API.getCharacterMiningWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiMiningGetterCorporationExtractions() {\n\t\ttry {\n\t\t\tApiResponse<List<CorporationMiningExtractionsResponse>> apiResponse = INDUSTRY_API.getCorporationMiningExtractionsWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiMiningGetterCorporationObserver() {\n\t\ttry {\n\t\t\tApiResponse<List<CorporationMiningObserverResponse>> apiResponse = INDUSTRY_API.getCorporationMiningObserverWithHttpInfo(1L, 1L, COMPATIBILITY_DATE, null, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiMiningGetterCorporationObservers() {\n\t\ttry {\n\t\t\tApiResponse<List<CorporationMiningObserversResponse>> apiResponse = INDUSTRY_API.getCorporationMiningObserversWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiMiningGetterMoons() {\n\t\ttry {\n\t\t\tApiResponse<MoonResponse> apiResponse = UNIVERSE_API.getMoonWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiNameGetter() {\n\t\ttry {\n\t\t\tApiResponse<List<NamesResponse>> apiResponse = UNIVERSE_API.postNamesWithHttpInfo(COMPATIBILITY_DATE, Collections.singleton(1L), null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiOwnerGetterCharacter() {\n\t\ttry {\n\t\t\tApiResponse<List<CharacterAffiliationResponse>> apiResponse = CHARACTER_API.postCharactersAffiliationWithHttpInfo(COMPATIBILITY_DATE, Collections.singleton(1L), null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiOwnerGetterCorporation() {\n\t\ttry {\n\t\t\tApiResponse<CorporationResponse> apiResponse = CORPORATION_API.getCorporationWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiOwnerGetterRoles() {\n\t\ttry {\n\t\t\tApiResponse<CharacterRolesResponse> apiResponse = CHARACTER_API.getCharacterRolesWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiPlanetaryInteractionGetterPlanet() {\n\t\ttry {\n\t\t\tApiResponse<CharacterPlanetResponse> apiResponse = PLANETARY_INTERACTION_API.getCharacterPlanetWithHttpInfo(1L, 1L, COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiPlanetaryInteractionGetterPlanets() {\n\t\ttry {\n\t\t\tApiResponse<CharacterPlanetResponse> apiResponse = PLANETARY_INTERACTION_API.getCharacterPlanetWithHttpInfo(1L, 1L, COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiPlanetaryInteractionGetterPublicPlanets() {\n\t\ttry {\n\t\t\tApiResponse<PlanetResponse> apiResponse = UNIVERSE_API.getPlanetWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiPublicMarketOrdersGetterPublicOrders() {\n\t\ttry {\n\t\t\tApiResponse<List<MarketRegionOrdersResponse>> apiResponse = MARKET_API.getMarketRegionOrdersWithHttpInfo(\"all\", 1L, COMPATIBILITY_DATE, null, null, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiPublicMarketOrdersGetterPublicStructures() {\n\t\ttry {\n\t\t\tApiResponse<Set<Long>> apiResponse = UNIVERSE_API.getStructuresWithHttpInfo(COMPATIBILITY_DATE, \"market\", null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiPublicMarketOrdersGetterStructureOrders() {\n\t\ttry {\n\t\t\tApiResponse<List<MarketStructureResponse>> apiResponse = MARKET_API.getMarketStructureWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiShipLocationGetter() {\n\t\ttry {\n\t\t\tApiResponse<CharacterLocationResponse> apiResponse = LOCATION_API.getCharacterLocationWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiShipTypeGetter() {\n\t\ttry {\n\t\t\tApiResponse<CharacterShipResponse> apiResponse = LOCATION_API.getCharacterShipWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiSkillsGetter() {\n\t\ttry {\n\t\t\tApiResponse<CharacterSkillsResponse> apiResponse = SKILLS_API.getCharacterSkillsWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiStructuresGetter() {\n\t\ttry {\n\t\t\tApiResponse<StructureResponse> apiResponse = UNIVERSE_API.getStructureWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiTransactionsGetterCharacter() {\n\t\ttry {\n\t\t\tApiResponse<List<CharacterWalletTransactionsResponse>> apiResponse = WALLET_API.getCharacterWalletTransactionsWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiTransactionsGetterCorporation() {\n\t\ttry {\n\t\t\tApiResponse<List<CorporationWalletTransactionsResponse>> apiResponse = WALLET_API.getCorporationWalletTransactionsWithHttpInfo(1L, 1L, COMPATIBILITY_DATE, null, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiUiAutopilot() {\n\t\ttry {\n\t\t\tApiResponse<Void> apiResponse = USER_INTERFACE_API.postUiAutopilotWaypointWithHttpInfo(false, false, 1L, COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiUiOpenWindowContract() {\n\t\ttry {\n\t\t\tApiResponse<Void> apiResponse = USER_INTERFACE_API.postUiOpenwindowContractWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiUiOpenWindowInformation() {\n\t\ttry {\n\t\t\tApiResponse<Void> apiResponse = USER_INTERFACE_API.postUiOpenwindowInformationWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void esiUiOpenWindowMarketDetails() {\n\t\ttry {\n\t\t\tApiResponse<Void> apiResponse = USER_INTERFACE_API.postUiOpenwindowMarketdetailsWithHttpInfo(1L, COMPATIBILITY_DATE, null, null, null);\n\t\t\tvalidate(apiResponse.getHeaders());\n\t\t} catch (ApiException ex) {\n\t\t\tvalidate(ex.getResponseHeaders());\n\t\t}\n\t}\n\n\tprivate void validate(Map<String, List<String>> responseHeaders) {\n\t\tif (responseHeaders != null) {\n\t\t\tfor (Map.Entry<String, List<String>> entry : responseHeaders.entrySet()) {\n\t\t\t\tif (entry.getKey().toLowerCase().equals(\"warning\")) {\n\t\t\t\t\tif (entry.getValue().get(0).startsWith(\"199\")) {\n\t\t\t\t\t\tassumeTrue(entry.getValue().get(0), false);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfail(entry.getValue().get(0));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfail(\"No headers\");\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/esi/EsiNameGetterOnlineTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport org.junit.Assert;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class EsiNameGetterOnlineTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void testEsi() {\r\n\t\tSet<Long> ids = new HashSet<>();\r\n\t\tids.add(1232111352L);\r\n\t\tids.add(2112730710L);\r\n\t\tids.add(500016L);\r\n\t\tids.add(93678202L);\r\n\t\tids.add(96503035L);\r\n\r\n\t\tList<OwnerType> owners = new ArrayList<>();\r\n\t\tfor (Long id : ids) {\r\n\t\t\tEsiOwner esiOwner = EsiOwner.create();\r\n\t\t\tesiOwner.setOwnerID(id);\r\n\t\t\towners.add(esiOwner);\r\n\t\t}\r\n\r\n\t\tSettings.get().getOwners().clear();\r\n\r\n\t\tEsiNameGetter esiNameGetter = new EsiNameGetter(null, owners);\r\n\t\tesiNameGetter.run();\r\n\r\n\t\tfor (Long id : ids) {\r\n\t\t\tAssert.assertNotNull(id + \" not set\", Settings.get().getOwners().get(id));\r\n\t\t\tAssert.assertFalse(id + \" is empty\", Settings.get().getOwners().get(id).isEmpty());\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/esi/EsiScopesTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.esi;\r\n\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport static org.junit.Assert.*;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class EsiScopesTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void testLocalhost() {\r\n\t\tString s = \"[\\\"esi-location.read_location.v1\\\",\\\"esi-location.read_ship_type.v1\\\",\\\"esi-skills.read_skills.v1\\\",\\\"esi-wallet.read_character_wallet.v1\\\",\\\"esi-clones.read_clones.v1\\\",\\\"esi-universe.read_structures.v1\\\",\\\"esi-assets.read_assets.v1\\\",\\\"esi-planets.manage_planets.v1\\\",\\\"esi-ui.open_window.v1\\\",\\\"esi-ui.write_waypoint.v1\\\",\\\"esi-markets.structure_markets.v1\\\",\\\"esi-characters.read_loyalty.v1\\\",\\\"esi-characters.read_standings.v1\\\",\\\"esi-industry.read_character_jobs.v1\\\",\\\"esi-markets.read_character_orders.v1\\\",\\\"esi-characters.read_blueprints.v1\\\",\\\"esi-characters.read_corporation_roles.v1\\\",\\\"esi-contracts.read_character_contracts.v1\\\",\\\"esi-clones.read_implants.v1\\\",\\\"esi-wallet.read_corporation_wallets.v1\\\",\\\"esi-corporations.read_divisions.v1\\\",\\\"esi-assets.read_corporation_assets.v1\\\",\\\"esi-corporations.read_blueprints.v1\\\",\\\"esi-contracts.read_corporation_contracts.v1\\\",\\\"esi-corporations.read_standings.v1\\\",\\\"esi-industry.read_corporation_jobs.v1\\\",\\\"esi-markets.read_corporation_orders.v1\\\",\\\"esi-corporations.read_container_logs.v1\\\",\\\"esi-industry.read_character_mining.v1\\\",\\\"esi-industry.read_corporation_mining.v1\\\",\\\"esi-planets.read_customs_offices.v1\\\"]\";\r\n\t\tfor (EsiScopes scope : EsiScopes.values()) {\r\n\t\t\tassertTrue(scope.getScope() + \" not included\", s.contains(scope.getScope()));\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testNiKR() {\r\n\t\tString s = \"[\\\"esi-location.read_location.v1\\\",\\\"esi-location.read_ship_type.v1\\\",\\\"esi-skills.read_skills.v1\\\",\\\"esi-wallet.read_character_wallet.v1\\\",\\\"esi-clones.read_clones.v1\\\",\\\"esi-universe.read_structures.v1\\\",\\\"esi-assets.read_assets.v1\\\",\\\"esi-planets.manage_planets.v1\\\",\\\"esi-ui.open_window.v1\\\",\\\"esi-ui.write_waypoint.v1\\\",\\\"esi-markets.structure_markets.v1\\\",\\\"esi-characters.read_loyalty.v1\\\",\\\"esi-characters.read_standings.v1\\\",\\\"esi-industry.read_character_jobs.v1\\\",\\\"esi-markets.read_character_orders.v1\\\",\\\"esi-characters.read_blueprints.v1\\\",\\\"esi-characters.read_corporation_roles.v1\\\",\\\"esi-contracts.read_character_contracts.v1\\\",\\\"esi-clones.read_implants.v1\\\",\\\"esi-wallet.read_corporation_wallets.v1\\\",\\\"esi-corporations.read_divisions.v1\\\",\\\"esi-assets.read_corporation_assets.v1\\\",\\\"esi-corporations.read_blueprints.v1\\\",\\\"esi-contracts.read_corporation_contracts.v1\\\",\\\"esi-corporations.read_standings.v1\\\",\\\"esi-industry.read_corporation_jobs.v1\\\",\\\"esi-markets.read_corporation_orders.v1\\\",\\\"esi-corporations.read_container_logs.v1\\\",\\\"esi-industry.read_character_mining.v1\\\",\\\"esi-industry.read_corporation_mining.v1\\\",\\\"esi-planets.read_customs_offices.v1\\\"]\";\r\n\t\tfor (EsiScopes scope : EsiScopes.values()) {\r\n\t\t\tassertTrue(scope.getScope() + \" not included\", s.contains(scope.getScope()));\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/local/AssetAddedReaderTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local;\r\n\r\nimport java.io.File;\r\nimport java.net.URISyntaxException;\r\nimport java.net.URL;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.settings.AddedData;\r\nimport org.junit.Assert;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class AssetAddedReaderTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void testAddedJson() {\r\n\t\tTestAssetAddedReader.load();\r\n\t\tAssert.assertTrue(!AddedData.getAssets().isEmpty());\r\n\t}\r\n\r\n\tprivate static class TestAssetAddedReader extends AssetAddedReader {\r\n\t\tpublic static void load() {\r\n\t\t\ttry {\r\n\t\t\t\tTestAssetAddedReader assetAddedReader = new TestAssetAddedReader();\r\n\t\t\t\tURL resource = BackwardCompatibilitySettings.class.getResource(\"/added.json\");\r\n\t\t\t\tString filename = new File(resource.toURI()).getAbsolutePath();\r\n\t\t\t\tassetAddedReader.read(filename);\r\n\t\t\t} catch (URISyntaxException ex) {\r\n\t\t\t\tAssert.fail(ex.getMessage());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/local/BackupTest.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.io.local;\n\nimport java.io.BufferedWriter;\nimport java.io.File;\nimport java.io.FileWriter;\nimport net.nikr.eve.jeveasset.TestUtil;\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\nimport org.junit.AfterClass;\nimport static org.junit.Assert.assertFalse;\nimport static org.junit.Assert.assertTrue;\nimport org.junit.BeforeClass;\nimport org.junit.Test;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.w3c.dom.Document;\nimport org.w3c.dom.Element;\n\n\npublic class BackupTest extends TestUtil {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(BackupTest.class);\n\n\tprivate static File targetFile;\n\tprivate static File bacFile;\n\tprivate static File newFile;\n\n\tprivate static File getFile(String extension) {\n\t\treturn new File(new File(FileUtil.getPathRunJar()).getParentFile().getAbsolutePath() + File.separator + \"test.\" + extension);\n\t}\n\n\t@BeforeClass\n\tpublic static void setUpClass() {\n\t\ttargetFile = getFile(\"xml\");\n\t\tnewFile = getFile(\"new\");\n\t\tbacFile = getFile(\"bac\");\n\t}\n\n\t@AfterClass\n\tpublic static void tearDownClass() throws Exception {\n\t\ttargetFile.delete();\n\t\tnewFile.delete();\n\t\tbacFile.delete();\n\t\tFile file;\n\t\tint count = 0;\n\t\tboolean next = true;\n\t\twhile (next) {\n\t\t\tcount++;\n\t\t\tfile = getFile(\"error\" + count);\n\t\t\tnext = file.exists();\n\t\t\tfile.delete();\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testCreateBackup() {\n\t\tLOG.info(\"testCreateBackup\");\n\t\tcleanUp();\n\t\tSimpleWriter writer = new SimpleWriter();\n\t\tSimpleReader reader = new SimpleReader();\n\t\t//First run\n\t\tassertTrue(writer.write(targetFile, true));\n\t\tassertTrue(targetFile.exists());\n\t\tassertFalse(newFile.exists());\n\t\tassertFalse(bacFile.exists());\n\t\tassertTrue(reader.read(targetFile));\n\t\t//Second run\n\t\tassertTrue(writer.write(targetFile, true));\n\t\tassertTrue(targetFile.exists());\n\t\tassertFalse(newFile.exists());\n\t\tassertTrue(bacFile.exists());\n\t\tassertTrue(reader.read(targetFile));\n\t}\n\n\t@Test\n\tpublic void testRestoreBackup() {\n\t\tLOG.info(\"testRestoreBackup\");\n\t\tSimpleWriter writer = new SimpleWriter();\n\t\tSimpleReader reader = new SimpleReader();\n\t\tSimpleWriterCorrupted writerCorrupted = new SimpleWriterCorrupted();\n\n\t\t//Test working\n\t\tcleanUp();\n\t\tassertTrue(writer.write(targetFile, true));\t//xml = OK\n\t\tassertTrue(reader.read(targetFile));\t\t//Read target\n\n\t\t//Test .new (1 of 2)\n\t\tcleanUp();\n\t\twriterCorrupted.write(targetFile);\t\t\t//xml = Corrupted\n\t\tassertTrue(writer.write(newFile, false));\t//new = OK\n\t\twriterCorrupted.write(bacFile);\t\t\t\t//bac = Corrupted\n\t\tassertTrue(reader.read(targetFile));\t\t//Read target\n\n\t\t//Test .new (2 of 2)\n\t\tcleanUp();\n\t\twriterCorrupted.write(targetFile);\t\t\t//xml = Corrupted\n\t\tassertTrue(writer.write(newFile, false));\t//new = OK\n\t\t\t\t\t\t\t\t\t\t\t\t\t//bac = Does not exist\n\t\tassertTrue(reader.read(targetFile));\t\t//Read target\n\n\t\t//Test .bac (1 of 2)\n\t\tcleanUp();\n\t\twriterCorrupted.write(targetFile);\t\t\t//xml = Corrupted\n\t\twriterCorrupted.write(newFile);\t\t\t\t//new = Corrupted\n\t\tassertTrue(writer.write(bacFile, false));\t//bac = OK\n\t\tassertTrue(reader.read(targetFile));\t\t//Read target\n\n\t\t//Test .bac (2 of 2)\n\t\tcleanUp();\n\t\twriterCorrupted.write(targetFile);\t\t\t//xml = Corrupted\n\t\t\t\t\t\t\t\t\t\t\t\t\t//new = Does not exist\n\t\tassertTrue(writer.write(bacFile, false));\t//bac = OK\n\t\tassertTrue(reader.read(targetFile));\t\t//Read target\n\t}\n\n\t@Test\n\tpublic void testCorrupted() {\n\t\tSimpleReader reader = new SimpleReader();\n\t\tSimpleWriterCorrupted writerCorrupted = new SimpleWriterCorrupted();\n\n\t\t//Test All Corrupted\n\t\tcleanUp();\n\t\twriterCorrupted.write(targetFile);\t\t\t//xml = Corrupted\n\t\twriterCorrupted.write(bacFile);\t\t\t\t//bac = Corrupted\n\t\twriterCorrupted.write(newFile);\t\t\t\t//bac = Corrupted\n\t\tassertFalse(reader.read(targetFile));\t\t//Read target\n\n\t\t//Test bac missing\n\t\tcleanUp();\n\t\twriterCorrupted.write(targetFile);\t\t\t//xml = Corrupted\n\t\twriterCorrupted.write(newFile);\t\t\t\t//new = Corrupted\n\t\t\t\t\t\t\t\t\t\t\t\t\t//bac = Does not exist\n\t\tassertFalse(reader.read(targetFile));\t\t//Read target\n\n\t\t//Test new missing\n\t\tcleanUp();\n\t\twriterCorrupted.write(targetFile);\t\t\t//xml = Corrupted\n\t\t\t\t\t\t\t\t\t\t\t\t\t//new = Does not exist\n\t\twriterCorrupted.write(newFile);\t\t\t\t//bac = Corrupted\n\t\tassertFalse(reader.read(targetFile));\t\t//Read target\n\n\t\t//Test bac & new missing\n\t\tcleanUp();\n\t\twriterCorrupted.write(targetFile);\t\t\t//xml = Corrupted\n\t\t\t\t\t\t\t\t\t\t\t\t\t//new = Does not exist\n\t\t\t\t\t\t\t\t\t\t\t\t\t//bac = Does not exist\n\t\tassertFalse(reader.read(targetFile));\t\t//Read target\n\n\t\t//Test all missing\n\t\tcleanUp();\n\t\t\t\t\t\t\t\t\t\t\t\t\t//xml = Does not exist\n\t\t\t\t\t\t\t\t\t\t\t\t\t//new = Does not exist\n\t\t\t\t\t\t\t\t\t\t\t\t\t//bac = Does not exist\n\t\tassertFalse(reader.read(targetFile));\t\t//Read target\n\t}\n\n\tprivate void cleanUp() {\n\t\tif (targetFile.exists()) {\n\t\t\ttargetFile.delete();\n\t\t}\n\t\tif (newFile.exists()) {\n\t\t\tnewFile.delete();\n\t\t}\n\t\tif (bacFile.exists()) {\n\t\t\tbacFile.delete();\n\t\t}\n\t}\n\n\tprivate static class SimpleWriter extends AbstractXmlWriter {\n\t\tprivate boolean write(File file, boolean createBackup) {\n\t\t\tDocument xmldoc;\n\t\t\ttry {\n\t\t\t\txmldoc = getXmlDocument(\"test\");\n\t\t\t} catch (XmlException ex) {\n\t\t\t\tLOG.error(ex.getMessage(), ex);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\twriteXmlFile(xmldoc, file.getAbsolutePath(), createBackup);\n\t\t\t\treturn true;\n\t\t\t} catch (XmlException ex) {\n\t\t\t\tLOG.error(ex.getMessage(), ex);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static class SimpleWriterCorrupted {\n\t\tprivate void write(File file) {\n\t\t\tBufferedWriter writer = null;\n\t\t\ttry {\n\t\t\t\twriter = new BufferedWriter(new FileWriter(file));\n\t\t\t\twriter.write(\"Corrupted\");\n\t\t\t} catch (Exception ex) {\n\t\t\t\tLOG.error(ex.getMessage(), ex);\n\t\t\t} finally {\n\t\t\t\tif (writer != null) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\twriter.close();\n\t\t\t\t\t} catch (Exception ex) {\n\t\t\t\t\t\tLOG.error(ex.getMessage(), ex);\n\t\t\t\t\t}\n\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static class SimpleReader extends AbstractXmlReader<Boolean> {\n\n\t\tprivate boolean read(File file) {\n\t\t\treturn read(\"Simple reader\", file.getAbsolutePath(), AbstractXmlReader.XmlType.DYNAMIC);\n\t\t}\n\n\t\t@Override\n\t\tprotected Boolean parse(Element element) throws XmlException {\n\t\t\treturn true;\n\t\t}\n\n\t\t@Override\n\t\tprotected Boolean failValue() {\n\t\t\treturn false;\n\t\t}\n\n\t\t@Override\n\t\tprotected Boolean doNotExistValue() {\n\t\t\treturn false;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/local/BackwardCompatibilitySettings.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.io.local;\r\n\r\nimport java.awt.Dimension;\r\nimport java.awt.Point;\r\nimport java.io.File;\r\nimport java.net.URISyntaxException;\r\nimport java.net.URL;\r\nimport java.util.*;\r\nimport net.nikr.eve.jeveasset.data.settings.AddedData;\r\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings;\r\nimport net.nikr.eve.jeveasset.data.settings.PriceDataSettings;\r\nimport net.nikr.eve.jeveasset.data.settings.ProxyData;\r\nimport net.nikr.eve.jeveasset.data.settings.ReprocessSettings;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings.SettingsFactory;\r\nimport net.nikr.eve.jeveasset.data.settings.StockpileGroupSettings;\r\nimport net.nikr.eve.jeveasset.data.settings.TrackerData;\r\nimport net.nikr.eve.jeveasset.data.settings.UserItem;\r\nimport net.nikr.eve.jeveasset.data.settings.tag.Tag;\r\nimport net.nikr.eve.jeveasset.data.settings.tag.TagID;\r\nimport net.nikr.eve.jeveasset.data.settings.tag.Tags;\r\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JFormulaDialog.Formula;\r\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuJumps.Jump;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.View;\r\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewGroup;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile;\r\nimport net.nikr.eve.jeveasset.tests.mocks.FakeSettings;\r\n\r\n\r\npublic class BackwardCompatibilitySettings extends FakeSettings implements SettingsFactory {\r\n\r\n\tpublic enum Function {\r\n\t\tGET_ASSET_ADDED,\r\n\t\tGET_EXPORT_SETTINGS,\r\n\t\tGET_FLAGS,\r\n\t\tGET_OVERVIEW_GROUPS,\r\n\t\tGET_OWNERS,\r\n\t\tGET_PRICE_DATA_SETTINGS,\r\n\t\tGET_STOCKPILES,\r\n\t\tGET_TABLE_COLUMNS,\r\n\t\tGET_TABLE_COLUMNS_WIDTH,\r\n\t\tGET_TABLE_FILTERS,\r\n\t\tGET_TABLE_FILTERS_KEY,\r\n\t\tGET_TABLE_RESIZE,\r\n\t\tGET_TABLE_VIEWS,\r\n\t\tGET_TABLE_FORMULAS,\r\n\t\tGET_TABLE_JUMPS,\r\n\t\tGET_TAGS,\r\n\t\tGET_TAGS_ID,\r\n\t\tGET_TRACKER_DATA,\r\n\t\tGET_USER_ITEM_NAMES,\r\n\t\tGET_USER_PRICES,\r\n\t\tSET_MAXIMUM_PURCHASE_AGE,\r\n\t\tSET_TRANSACTION_PROFIT_PRICE,\r\n\t\tSET_TRANSACTION_PROFIT_MARGIN,\r\n\t\tSET_PRICE_DATA_SETTINGS,\r\n\t\tSET_PROXY_DATA,\r\n\t\tSET_REPROCESS_SETTINGS,\r\n\t\tSET_WINDOW_ALWAYS_ON_TOP,\r\n\t\tSET_WINDOW_AUTO_SAVE,\r\n\t\tSET_WINDOW_LOCATION,\r\n\t\tSET_WINDOW_MAXIMIZED,\r\n\t\tSET_WINDOW_SIZE,\r\n\t}\r\n\r\n\tprivate final String settingsPath;\r\n\tprivate final String name;\r\n\tprivate final Map<Function, Boolean> ok = new EnumMap<>(Function.class);\r\n\tprivate final List<Function> tested = new ArrayList<>();\r\n\tprivate boolean settingsLoadError;\r\n\r\n\tpublic BackwardCompatibilitySettings() {\r\n\t\tfor (Function function : Function.values()) {\r\n\t\t\tok.put(function, false);\r\n\t\t}\r\n\t\tthis.settingsPath = null;\r\n\t\tthis.name = null;\r\n\t}\r\n\r\n\tpublic BackwardCompatibilitySettings(final String name) throws URISyntaxException {\r\n\t\tthis.name = name;\r\n\t\tfor (Function function : Function.values()) {\r\n\t\t\tok.put(function, false);\r\n\t\t}\r\n\t\tURL resource = BackwardCompatibilitySettings.class.getResource(\"/\" + name + \"/settings.xml\");\r\n\t\tsettingsPath = new File(resource.toURI()).getAbsolutePath();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Settings create() {\r\n\t\treturn this;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean isSettingsLoadError() {\r\n\t\treturn settingsLoadError;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setSettingsLoadError(boolean settingsLoadError) {\r\n\t\tthis.settingsLoadError = settingsLoadError;\r\n\t}\r\n\r\n\tpublic boolean test(Function function) {\r\n\t\tif (tested.contains(function)) {\r\n\t\t\tthrow new UnsupportedOperationException(\"Double test of: \"+function.name());\r\n\t\t} else {\r\n\t\t\ttested.add(function);\r\n\t\t}\r\n\t\tswitch (function) {\r\n\t\t\tcase GET_TRACKER_DATA:\r\n\t\t\t\ttry {\r\n\t\t\t\t\tTrackerData.readLock();\r\n\t\t\t\t\treturn !TrackerData.get().isEmpty();\r\n\t\t\t\t} finally {\r\n\t\t\t\t\tTrackerData.readUnlock();\r\n\t\t\t\t}\r\n\t\t\tcase GET_ASSET_ADDED:\r\n\t\t\t\treturn !AddedData.getAssets().isEmpty();\r\n\t\t\tdefault:\r\n\t\t\t\treturn ok.get(function);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic List<Function> test() {\r\n\t\tList<Function> functions = new ArrayList<>();\r\n\t\tfor (Function key : Function.values()) {\r\n\t\t\tboolean wasOk = ok.get(key);\r\n\t\t\tboolean wasTested = tested.contains(key);\r\n\t\t\tif (wasOk && !wasTested) {\r\n\t\t\t\tfunctions.add(key);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn functions;\r\n\t}\r\n\r\n\tpublic String getName() {\r\n\t\treturn name.replace(\"data-\", \"\").replace(\"-\", \".\");\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Map<String, ExportSettings> getExportSettings() {\r\n\t\tok.put(Function.GET_EXPORT_SETTINGS, true);\r\n\t\treturn new HashMap<>();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Map<SettingFlag, Boolean> getFlags() {\r\n\t\tok.put(Function.GET_FLAGS, true);\r\n\t\treturn new EnumMap<>(SettingFlag.class);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Map<String, OverviewGroup> getOverviewGroups() {\r\n\t\tok.put(Function.GET_OVERVIEW_GROUPS, true);\r\n\t\treturn new HashMap<>();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Map<Long, String> getOwners() {\r\n\t\tok.put(Function.GET_OWNERS, true);\r\n\t\treturn new HashMap<>();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Map<Long, Date> getOwnersNextUpdate() {\r\n\t\treturn new HashMap<>();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic PriceDataSettings getPriceDataSettings() {\r\n\t\tok.put(Function.GET_PRICE_DATA_SETTINGS, true);\r\n\t\treturn new PriceDataSettings();\r\n\t}\r\n\r\n\tpublic String getPathSettings() {\r\n\t\treturn settingsPath;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic List<Stockpile> getStockpiles() {\r\n\t\tok.put(Function.GET_STOCKPILES, true);\r\n\t\treturn new ArrayList<>();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Map<String, List<EnumTableFormatAdaptor.SimpleColumn>> getTableColumns() {\r\n\t\tok.put(Function.GET_TABLE_COLUMNS, true);\r\n\t\treturn new HashMap<>();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Map<String, Map<String, Integer>> getTableColumnsWidth() {\r\n\t\tok.put(Function.GET_TABLE_COLUMNS_WIDTH, true);\r\n\t\treturn new HashMap<>();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Map<String, Map<String, List<Filter>>> getTableFilters() {\r\n\t\tok.put(Function.GET_TABLE_FILTERS, true);\r\n\t\treturn new HashMap<>();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Map<String, List<Filter>> getTableFilters(final String key) {\r\n\t\tok.put(Function.GET_TABLE_FILTERS_KEY, true);\r\n\t\treturn new HashMap<>();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Map<String, EnumTableFormatAdaptor.ResizeMode> getTableResize() {\r\n\t\tok.put(Function.GET_TABLE_RESIZE, true);\r\n\t\treturn new HashMap<>();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Map<String, Map<String ,View>> getTableViews() {\r\n\t\tok.put(Function.GET_TABLE_VIEWS, true);\r\n\t\treturn new HashMap<>();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Map<String, Tag> getTags() {\r\n\t\tok.put(Function.GET_TAGS, true);\r\n\t\treturn new HashMap<>();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Tags getTags(TagID tagID) {\r\n\t\tok.put(Function.GET_TAGS_ID, true);\r\n\t\treturn new Tags();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Map<Long, UserItem<Long, String>> getUserItemNames() {\r\n\t\tok.put(Function.GET_USER_ITEM_NAMES, true);\r\n\t\treturn new HashMap<>();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Map<Integer, UserItem<Integer, Double>> getUserPrices() {\r\n\t\tok.put(Function.GET_USER_PRICES, true);\r\n\t\treturn new HashMap<>();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setMaximumPurchaseAge(int maximumPurchaseAge) {\r\n\t\tok.put(Function.SET_MAXIMUM_PURCHASE_AGE, true);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setTransactionProfitPrice(TransactionProfitPrice transactionProfitPrice) {\r\n\t\tok.put(Function.SET_TRANSACTION_PROFIT_PRICE, true);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setTransactionProfitMargin(int transactionProfitMargin) {\r\n\t\tok.put(Function.SET_TRANSACTION_PROFIT_MARGIN, true);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setPriceDataSettings(final PriceDataSettings priceDataSettings) {\r\n\t\tok.put(Function.SET_PRICE_DATA_SETTINGS, true);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setProxyData(ProxyData proxyData) {\r\n\t\tok.put(Function.SET_PROXY_DATA, true);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setReprocessSettings(final ReprocessSettings reprocessSettings) {\r\n\t\tok.put(Function.SET_REPROCESS_SETTINGS, true);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setWindowAlwaysOnTop(final boolean windowAlwaysOnTop) {\r\n\t\tok.put(Function.SET_WINDOW_ALWAYS_ON_TOP, true);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setWindowAutoSave(final boolean windowAutoSave) {\r\n\t\tok.put(Function.SET_WINDOW_AUTO_SAVE, true);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setWindowLocation(final Point windowLocation) {\r\n\t\tok.put(Function.SET_WINDOW_LOCATION, true);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setWindowMaximized(final boolean windowMaximized) {\r\n\t\tok.put(Function.SET_WINDOW_MAXIMIZED, true);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic void setWindowSize(final Dimension windowSize) {\r\n\t\tok.put(Function.SET_WINDOW_SIZE, true);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic List<Formula> getTableFormulas(String name) {\r\n\t\tok.put(Function.GET_TABLE_FORMULAS, true);\r\n\t\treturn new ArrayList<>();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic List<Jump> getTableJumps(String toolName) {\r\n\t\tok.put(Function.GET_TABLE_JUMPS, true);\r\n\t\treturn new ArrayList<>();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic StockpileGroupSettings getStockpileGroupSettings() {\r\n\t\treturn new StockpileGroupSettings();\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/local/FileLockSettings.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local;\r\n\r\nimport java.io.File;\r\nimport java.net.URISyntaxException;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings.SettingsFactory;\r\n\r\n\r\npublic class FileLockSettings extends Settings implements SettingsFactory {\r\n\r\n\tprivate static final String SETTINGS = \"settings_test\";\r\n\tprivate static final String TIMEOUT = \"timeout\";\r\n\tprivate static final String XML = \".xml\";\r\n\tprivate static final String BAC = \".bac\";\r\n\tprivate static final String ERROR = \".error1\";\r\n\r\n\r\n\tpublic FileLockSettings() {\r\n\t\tsuper();\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Settings create() {\r\n\t\treturn new FileLockSettings();\r\n\t}\r\n\r\n\tpublic String getPathSettings() {\r\n\t\treturn getPath(SETTINGS+XML);\r\n\t}\r\n\r\n\tpublic static String getPathSettingsBackup() {\r\n\t\treturn getPath(SETTINGS+BAC);\r\n\t}\r\n\r\n\tpublic static String getPathSettingsVersionBackup() {\r\n\t\treturn getVersionBackup(getPath(SETTINGS+XML));\r\n\t}\r\n\r\n\tpublic static String getPathSettingsStatic() {\r\n\t\treturn getPath(SETTINGS+XML);\r\n\t}\r\n\r\n\tpublic static String getPathSettingsError() {\r\n\t\treturn getPath(SETTINGS+ERROR);\r\n\t}\r\n\r\n\tpublic static String getPathTimeout() {\r\n\t\treturn getPath(TIMEOUT);\r\n\t}\r\n\r\n\tprivate static String getVersionBackup(String filename) {\r\n\t\treturn filename.substring(0, filename.lastIndexOf(\".\")) + \"_\" + Program.PROGRAM_VERSION.replaceAll(\" \", \"_\") + \"_backup.zip\";\r\n\t}\r\n\r\n\tprivate static String getPath(String filename) {\r\n\t\ttry {\r\n\t\t\tFile file;\r\n\t\t\tFile ret;\r\n\t\t\tfile = new File(net.nikr.eve.jeveasset.Program.class.getProtectionDomain().getCodeSource().getLocation().toURI()).getParentFile();\r\n\t\t\tret = new File(file.getAbsolutePath() + File.separator + filename);\r\n\t\t\treturn ret.getAbsolutePath();\r\n\t\t} catch (URISyntaxException ex) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/local/FileLockTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.io.local;\r\n\r\nimport static org.junit.Assert.assertTrue;\r\nimport static org.junit.Assert.fail;\r\n\r\nimport ch.qos.logback.classic.Level;\r\nimport java.io.File;\r\nimport java.io.IOException;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.io.local.FileLock.SafeFileIO;\r\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\r\nimport org.junit.AfterClass;\r\nimport static org.junit.Assert.assertFalse;\r\nimport org.junit.BeforeClass;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class FileLockTest extends TestUtil {\r\n\r\n\t@BeforeClass\r\n\tpublic static void setUpClass() throws Exception {\r\n\t\tsetLoggingLevel(Level.OFF);\r\n\t}\r\n\r\n\t@AfterClass\r\n\tpublic static void tearDownClass() throws Exception {\r\n\t\tsetLoggingLevel(Level.INFO);\r\n\t\t//Cleanup\r\n\t\tFile settings = new File(FileLockSettings.getPathSettingsStatic());\r\n\t\tFile settingsBackup = new File(FileLockSettings.getPathSettingsBackup());\r\n\t\tFile settingsVersionBackup = new File(FileLockSettings.getPathSettingsVersionBackup());\r\n\t\tFile settingsError = new File(FileLockSettings.getPathSettingsError());\r\n\t\tFile timeout = new File(FileLockSettings.getPathTimeout());\r\n\t\tsettings.delete();\r\n\t\tsettingsBackup.delete();\r\n\t\tsettingsVersionBackup.delete();\r\n\t\tsettingsError.delete();\r\n\t\ttimeout.delete();\r\n\t}\r\n\r\n\tprivate static class LoadSettings extends Thread implements TestThread {\r\n\r\n\t\tprivate final FileLockSettings settings;\r\n\r\n\t\tpublic LoadSettings(FileLockSettings settings) {\r\n\t\t\tthis.settings = settings;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void run() {\r\n\t\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic Boolean isOk() {\r\n\t\t\treturn !settings.isSettingsLoadError();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class SaveSettings extends Thread implements TestThread {\r\n\r\n\t\tprivate final FileLockSettings settings;\r\n\t\tprivate Boolean ok = null;\r\n\r\n\t\tpublic SaveSettings(FileLockSettings settings) {\r\n\t\t\tthis.settings = settings;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void run() {\r\n\t\t\tok = SettingsWriter.save(settings, settings.getPathSettings());\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic Boolean isOk() {\r\n\t\t\treturn ok;\r\n\t\t}\r\n\t}\r\n\r\n\t//@Test\r\n\tpublic void timeoutTest() throws IOException {\r\n\t\tFile file = new File(FileLockSettings.getPathTimeout());\r\n\t\ttry (SafeFileIO aLock = new SafeFileIO(file); SafeFileIO  bLock =  new SafeFileIO(file);){\r\n\t\t\taLock.getFileInputStream();\r\n\t\t\tbLock.getFileInputStream();\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void restoreBackupSettingsTest() throws IOException {\r\n\t\tFileLockSettings settings = new FileLockSettings();\r\n\t\tFile file = new File (settings.getPathSettings());\r\n\t\tboolean saved;\r\n\t\tsaved = SettingsWriter.save(settings, settings.getPathSettings());\r\n\t\tassertTrue(\"LockTest: Backup - Save settings failed (1 of 2)\", saved);\r\n\t\tsaved = SettingsWriter.save(settings, settings.getPathSettings());\r\n\t\tassertTrue(\"LockTest: Backup - Save settings failed (2 of 2)\", saved);\r\n\t\tboolean deleted = file.delete();\r\n\t\tassertTrue(\"LockTest: Backup - Delete settings failed\", deleted);\r\n\t\tboolean created = file.createNewFile();\r\n\t\tassertTrue(\"LockTest: Backup - Create settings failed\", created);\r\n\t\tSystem.out.println(\"\\\"Premature end of file\\\": Is an expected error:\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\tassertFalse(\"LockTest: Backup - Load settings failed\", settings.isSettingsLoadError());\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void unlockAllTest() throws IOException {\r\n\t\tList<File> files = new ArrayList<>();\r\n\t\tFile items = new File(FileUtil.getPathItems());\r\n\t\tfiles.add(items);\r\n\t\tFile flags = new File(FileUtil.getPathFlags());\r\n\t\tfiles.add(flags);\r\n\t\tFile jumps = new File(FileUtil.getPathJumps());\r\n\t\tfiles.add(jumps);\r\n\t\tFile locations = new File(FileUtil.getPathLocations());\r\n\t\tfiles.add(locations);\r\n\t\tFile profile = new File(FileUtil.getPathProfilesDirectory() + File.separator + \"some_test_profile.xml\");\r\n\t\tprofile.getParentFile().mkdirs();\r\n\t\tprofile.createNewFile();\r\n\t\tfiles.add(profile);\r\n\t\tFile conquerableStations = new File(FileUtil.getPathConquerableStations());\r\n\t\tfiles.add(conquerableStations);\r\n\t\tboolean emptyConquerableStations = false;\r\n\t\tif (!conquerableStations.exists()) {\r\n\t\t\tconquerableStations.createNewFile();\r\n\t\t\temptyConquerableStations = true;\r\n\t\t}\r\n\t\ttry (SafeFileIO itemsLock = new SafeFileIO(items);\r\n\t\t\t\tSafeFileIO  flagsLock =  new SafeFileIO(flags);\r\n\t\t\t\tSafeFileIO  jumpsLock =  new SafeFileIO(jumps);\r\n\t\t\t\tSafeFileIO  locationsLock =  new SafeFileIO(locations);\r\n\t\t\t\tSafeFileIO  profileLock =  new SafeFileIO(profile);\r\n\t\t\t\tSafeFileIO  conquerableStationsLock =  new SafeFileIO(conquerableStations);\r\n\t\t\t\t){\r\n\t\t\titemsLock.getFileInputStream();\r\n\t\t\tflagsLock.getFileInputStream();\r\n\t\t\tjumpsLock.getFileInputStream();\r\n\t\t\tlocationsLock.getFileInputStream();\r\n\t\t\tprofileLock.getFileInputStream();\r\n\t\t\tconquerableStationsLock.getFileInputStream();\r\n\t\t\t//Data directory\r\n\t\t\tFileLock.unlockAll();\r\n\t\t\tfor (File file : files) {\r\n\t\t\t\tif (FileLock.isLocked(file)) {\r\n\t\t\t\t\tfail(file.getName() + \" was not unlocked by unlockAll\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tprofile.delete();\r\n\t\t\tif (emptyConquerableStations) {\r\n\t\t\t\tconquerableStations.delete();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void settingsLockTest() throws InterruptedException {\r\n\t\t//Setup\r\n\t\tFileLockSettings settings = new FileLockSettings();\r\n\t\tboolean ok = SettingsWriter.save(settings, settings.getPathSettings());\r\n\t\tassertTrue(\"LockTest: Setup failed\", ok);\r\n\t\t//Load\r\n\t\tTestThread load1 = new LoadSettings(settings);\r\n\t\tTestThread load2 = new LoadSettings(settings);\r\n\t\tload1.start();\r\n\t\tload2.start();\r\n\t\ttry {\r\n\t\t\tload2.join();\r\n\t\t\tload1.join();\r\n\t\t} catch (InterruptedException ex) {\r\n\t\t\tfail(\"Thread Interrupted\");\r\n\t\t}\r\n\t\tassertTrue(load1.isOk());\r\n\t\tassertTrue(load2.isOk());\r\n\t\t//Save\r\n\t\tTestThread save1 = new SaveSettings(settings);\r\n\t\tTestThread save2 = new SaveSettings(settings);\r\n\t\tsave1.start();\r\n\t\tsave2.start();\r\n\t\ttry {\r\n\t\t\tsave1.join();\r\n\t\t\tsave2.join();\r\n\t\t} catch (InterruptedException ex) {\r\n\t\t\tfail(\"Thread Interrupted\");\r\n\t\t}\r\n\t\tassertTrue(save1.isOk());\r\n\t\tassertTrue(save2.isOk());\r\n\t\t//Save & Load\r\n\t\tTestThread load = new LoadSettings(settings);\r\n\t\tTestThread save = new SaveSettings(settings);\r\n\t\tload.start();\r\n\t\tsave.start();\r\n\t\ttry {\r\n\t\t\t//wait\r\n\t\t\tload.join();\r\n\t\t\tsave.join();\r\n\t\t} catch (InterruptedException ex) {\r\n\t\t\tfail(\"Thread Interrupted\");\r\n\t\t}\r\n\t\tassertTrue(load.isOk());\r\n\t\tassertTrue(save.isOk());\r\n\t\t//Chaos! :D\r\n\t\tList<TestThread> threads = new ArrayList<>();\r\n\t\tfor (int i = 0; i < 8; i++) {\r\n\t\t\tthreads.add(new SaveSettings(settings));\r\n\t\t}\r\n\t\tfor (int i = 0; i < 8; i++) {\r\n\t\t\tthreads.add(new LoadSettings(settings));\r\n\t\t}\r\n\t\tfor (TestThread thread : threads) {\r\n\t\t\tthread.start();\r\n\t\t}\r\n\t\tfor (TestThread thread : threads) {\r\n\t\t\tthread.join();\r\n\t\t}\r\n\t\tfor (TestThread thread : threads) {\r\n\t\t\tassertTrue(thread.isOk());\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static interface TestThread {\r\n\t\tpublic Boolean isOk();\r\n\t\tpublic void start();\r\n\t\tpublic void join() throws InterruptedException;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/local/ItemFlagsTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local;\r\n\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\r\nimport static org.junit.Assert.assertEquals;\r\nimport org.junit.Test;\r\n\r\npublic class ItemFlagsTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void testItemFlags() {\r\n\t\tassertEquals(141, StaticData.get().getItemFlags().size());\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/local/ProfileReadWriteTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local;\r\n\r\nimport ch.qos.logback.classic.Level;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.profile.Profile;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileData;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileManager;\r\nimport net.nikr.eve.jeveasset.data.settings.AddedData;\r\nimport net.nikr.eve.jeveasset.io.shared.ConverterTestOptions;\r\nimport net.nikr.eve.jeveasset.io.shared.ConverterTestOptionsGetter;\r\nimport net.nikr.eve.jeveasset.io.shared.ConverterTestUtil;\r\nimport org.junit.AfterClass;\r\nimport static org.junit.Assert.assertEquals;\r\nimport org.junit.BeforeClass;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class ProfileReadWriteTest extends TestUtil {\r\n\r\n\t@BeforeClass\r\n\tpublic static void setUpClass() {\r\n\t\tsetLoggingLevel(Level.WARN);\r\n\t}\r\n\r\n\t@AfterClass\r\n\tpublic static void tearDownClass() {\r\n\t\tsetLoggingLevel(Level.INFO);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testNotNull() {\r\n\t\ttest(false);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testNull() {\r\n\t\ttest(true);\r\n\t}\r\n\r\n\tprivate void test(boolean setNull) {\r\n\t\tAddedData.load();\r\n\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\t//Clear previouse test data\r\n\t\t\tcleanup();\r\n\r\n\t\t\tProfile saveProfile = new Profile();\r\n\t\t\t//ESI\r\n\t\t\tsaveProfile.getEsiOwners().add(ConverterTestUtil.getEsiOwner(true, setNull, false, options));\r\n\r\n\t\t\t//Write\r\n\t\t\tsaveProfile.save();\r\n\r\n\t\t\t//Read\r\n\t\t\tProfileManager loadProfileManager = new ProfileManager();\r\n\r\n\t\t\tProfile loadProfile = new Profile();\r\n\t\t\tloadProfile.load();\r\n\t\t\tloadProfileManager.setActiveProfile(loadProfile);\r\n\r\n\t\t\t//Update dynamic data\r\n\t\t\tProfileData profileData = new ProfileData(loadProfileManager);\r\n\t\t\tprofileData.updateEventLists();\r\n\r\n\t\t\t//ESI\r\n\t\t\tassertEquals(1, loadProfile.getEsiOwners().size());\r\n\t\t\tEsiOwner esiOwner = loadProfile.getEsiOwners().get(0);\r\n\t\t\tConverterTestUtil.testOwner(esiOwner, setNull, options);\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/local/SettingsTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local;\r\n\r\nimport ch.qos.logback.classic.Level;\r\nimport java.io.File;\r\nimport java.net.URISyntaxException;\r\nimport java.net.URL;\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings.SettingFlag;\r\nimport net.nikr.eve.jeveasset.data.settings.Settings.SettingsFactory;\r\nimport net.nikr.eve.jeveasset.io.local.BackwardCompatibilitySettings.Function;\r\nimport static org.hamcrest.CoreMatchers.equalTo;\r\nimport static org.hamcrest.MatcherAssert.assertThat;\r\nimport org.junit.AfterClass;\r\nimport static org.junit.Assert.assertEquals;\r\nimport static org.junit.Assert.assertFalse;\r\nimport static org.junit.Assert.assertTrue;\r\nimport org.junit.BeforeClass;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class SettingsTest extends TestUtil {\r\n\r\n\t@BeforeClass\r\n\tpublic static void setUpClass() throws Exception {\r\n\t\tsetLoggingLevel(Level.OFF);\r\n\t}\r\n\r\n\t@AfterClass\r\n\tpublic static void tearDownClass() throws Exception {\r\n\t\tsetLoggingLevel(Level.INFO);\r\n\t}\r\n\r\n\tprivate void test(BackwardCompatibilitySettings settings, Function function) {\r\n\t\tassertTrue(settings.getName() + \" failed test for \" + function.name(), settings.test(function));\r\n\t}\r\n\r\n\tprivate void test(BackwardCompatibilitySettings settings) {\r\n\t\tList<Function> test = settings.test();\r\n\t\tassertEquals(settings.getName() + \" is missing tests for: \" + test.toString(), 0, test.size());\r\n\t\tString filename = settings.getPathSettings();\r\n\t\tFile file = new File(filename.substring(0, filename.lastIndexOf(\".\")) + \"_\" + Program.PROGRAM_VERSION.replaceAll(\" \", \"_\") + \"_backup.zip\");\r\n\t\tassertTrue(file.delete());\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void flagsTest() throws URISyntaxException {\r\n\t\tSettings settings = new TestSettings();\r\n\t\tfor (SettingFlag settingFlag : SettingFlag.values()) {\r\n\t\t\tassertTrue(settingFlag.name() + \" is missing from default settings\", settings.getFlags().containsKey(settingFlag));\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility100() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-1-0-0\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS_KEY);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility110() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-1-1-0\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS_KEY);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility120() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-1-2-0\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS_KEY);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility121() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-1-2-1\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS_KEY);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility122() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-1-2-2\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS_KEY);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility123() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-1-2-3\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS_KEY);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility130() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-1-3-0\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS_KEY);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility140() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-1-4-0\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS_KEY);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility141() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-1-4-1\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS_KEY);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility150() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-1-5-0\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS_KEY);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility160() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-1-6-0\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS_KEY);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility161() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-1-6-1\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS_KEY);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility162() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-1-6-2\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS_KEY);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility163() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-1-6-3\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS_KEY);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility164() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-1-6-4\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS_KEY);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility170() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-1-7-0\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS_KEY);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility171() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-1-7-1\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS_KEY);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility172() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-1-7-2\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS_KEY);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility173() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-1-7-3\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS_KEY);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility180() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-1-8-0\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_EXPORT_SETTINGS);\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS_KEY);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility181() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-1-8-1\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_EXPORT_SETTINGS);\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS_KEY);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility190() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-1-9-0\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_EXPORT_SETTINGS);\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_STOCKPILES);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS_KEY);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility191() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-1-9-1\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_EXPORT_SETTINGS);\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_STOCKPILES);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS_KEY);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility192() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-1-9-2\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_EXPORT_SETTINGS);\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_STOCKPILES);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS_KEY);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility200() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-2-0-0\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_EXPORT_SETTINGS);\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_STOCKPILES);\r\n\t\ttest(settings, Function.GET_TABLE_COLUMNS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS);\r\n\t\ttest(settings, Function.GET_TABLE_FORMULAS);\r\n\t\ttest(settings, Function.GET_TABLE_JUMPS);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility210() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-2-1-0\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_EXPORT_SETTINGS);\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_STOCKPILES);\r\n\t\ttest(settings, Function.GET_TABLE_COLUMNS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility211() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-2-1-1\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_EXPORT_SETTINGS);\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_STOCKPILES);\r\n\t\ttest(settings, Function.GET_TABLE_COLUMNS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility212() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-2-1-2\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_EXPORT_SETTINGS);\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_STOCKPILES);\r\n\t\ttest(settings, Function.GET_TABLE_COLUMNS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS);\r\n\t\ttest(settings, Function.GET_TABLE_FORMULAS);\r\n\t\ttest(settings, Function.GET_TABLE_JUMPS);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility220() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-2-2-0\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_EXPORT_SETTINGS);\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_STOCKPILES);\r\n\t\ttest(settings, Function.GET_TABLE_COLUMNS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS);\r\n\t\ttest(settings, Function.GET_TABLE_RESIZE);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility230() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-2-3-0\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_EXPORT_SETTINGS);\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_STOCKPILES);\r\n\t\ttest(settings, Function.GET_TABLE_COLUMNS);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS);\r\n\t\ttest(settings, Function.GET_TABLE_RESIZE);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility240() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-2-4-0\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_EXPORT_SETTINGS);\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_STOCKPILES);\r\n\t\ttest(settings, Function.GET_TABLE_COLUMNS);\r\n\t\ttest(settings, Function.GET_TABLE_COLUMNS_WIDTH);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS);\r\n\t\ttest(settings, Function.GET_TABLE_RESIZE);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_MAXIMUM_PURCHASE_AGE);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings, Function.SET_TRANSACTION_PROFIT_PRICE);\r\n\t\ttest(settings, Function.SET_TRANSACTION_PROFIT_MARGIN);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility250() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-2-5-0\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_ASSET_ADDED);\r\n\t\ttest(settings, Function.GET_EXPORT_SETTINGS);\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_OWNERS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_STOCKPILES);\r\n\t\ttest(settings, Function.GET_TABLE_COLUMNS);\r\n\t\ttest(settings, Function.GET_TABLE_COLUMNS_WIDTH);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS);\r\n\t\ttest(settings, Function.GET_TABLE_RESIZE);\r\n\t\ttest(settings, Function.GET_TRACKER_DATA);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_MAXIMUM_PURCHASE_AGE);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings, Function.SET_TRANSACTION_PROFIT_PRICE);\r\n\t\ttest(settings, Function.SET_TRANSACTION_PROFIT_MARGIN);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility260() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-2-6-0\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_ASSET_ADDED);\r\n\t\ttest(settings, Function.GET_EXPORT_SETTINGS);\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_OWNERS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_STOCKPILES);\r\n\t\ttest(settings, Function.GET_TABLE_COLUMNS);\r\n\t\ttest(settings, Function.GET_TABLE_COLUMNS_WIDTH);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS);\r\n\t\ttest(settings, Function.GET_TABLE_RESIZE);\r\n\t\ttest(settings, Function.GET_TRACKER_DATA);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_MAXIMUM_PURCHASE_AGE);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings, Function.SET_TRANSACTION_PROFIT_PRICE);\r\n\t\ttest(settings, Function.SET_TRANSACTION_PROFIT_MARGIN);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void backwardCompatibility270() throws URISyntaxException {\r\n\t\tBackwardCompatibilitySettings settings = new BackwardCompatibilitySettings(\"data-2-7-0\");\r\n\t\tSettingsReader.load(settings, settings.getPathSettings());\r\n\t\ttest(settings, Function.GET_ASSET_ADDED);\r\n\t\ttest(settings, Function.GET_EXPORT_SETTINGS);\r\n\t\ttest(settings, Function.GET_FLAGS);\r\n\t\ttest(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttest(settings, Function.GET_OWNERS);\r\n\t\ttest(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.GET_STOCKPILES);\r\n\t\ttest(settings, Function.GET_TABLE_COLUMNS);\r\n\t\ttest(settings, Function.GET_TABLE_COLUMNS_WIDTH);\r\n\t\ttest(settings, Function.GET_TABLE_FILTERS);\r\n\t\ttest(settings, Function.GET_TABLE_RESIZE);\r\n\t\ttest(settings, Function.GET_TABLE_VIEWS);\r\n\t\ttest(settings, Function.GET_TAGS);\r\n\t\ttest(settings, Function.GET_TAGS_ID);\r\n\t\ttest(settings, Function.GET_TRACKER_DATA);\r\n\t\ttest(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttest(settings, Function.GET_USER_PRICES);\r\n\t\ttest(settings, Function.SET_MAXIMUM_PURCHASE_AGE);\r\n\t\ttest(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttest(settings, Function.SET_PROXY_DATA);\r\n\t\ttest(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttest(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttest(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttest(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttest(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttest(settings, Function.SET_WINDOW_SIZE);\r\n\t\ttest(settings, Function.SET_TRANSACTION_PROFIT_PRICE);\r\n\t\ttest(settings, Function.SET_TRANSACTION_PROFIT_MARGIN);\r\n\t\ttest(settings);\r\n\t}\r\n\r\n\tprivate void testFail(BackwardCompatibilitySettings settings, Function function) {\r\n\t\tassertFalse(\"failTest failed test for \" + function.name(), settings.test(function));\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void failTest() throws URISyntaxException {\r\n\t\tSettingsFactoryError factoryError = new SettingsFactoryError();\r\n\t\tURL resource = BackwardCompatibilitySettings.class.getResource(\"/data-fail/settings.xml\");\r\n\t\tFile file  = new File(resource.toURI());\r\n\t\tBackwardCompatibilitySettings settings = (BackwardCompatibilitySettings) SettingsReader.load(factoryError, file.getAbsolutePath());\r\n\t\tassertThat(settings.isSettingsLoadError(), equalTo(true));\r\n\t\ttestFail(settings, Function.GET_EXPORT_SETTINGS);\r\n\t\ttestFail(settings, Function.GET_FLAGS);\r\n\t\ttestFail(settings, Function.GET_OVERVIEW_GROUPS);\r\n\t\ttestFail(settings, Function.GET_OWNERS);\r\n\t\ttestFail(settings, Function.GET_PRICE_DATA_SETTINGS);\r\n\t\ttestFail(settings, Function.GET_STOCKPILES);\r\n\t\ttestFail(settings, Function.GET_TABLE_COLUMNS);\r\n\t\ttestFail(settings, Function.GET_TABLE_COLUMNS_WIDTH);\r\n\t\ttestFail(settings, Function.GET_TABLE_FILTERS);\r\n\t\ttestFail(settings, Function.GET_TABLE_RESIZE);\r\n\t\ttestFail(settings, Function.GET_TABLE_VIEWS);\r\n\t\ttestFail(settings, Function.GET_TAGS);\r\n\t\ttestFail(settings, Function.GET_TAGS_ID);\r\n\t\ttestFail(settings, Function.GET_USER_ITEM_NAMES);\r\n\t\ttestFail(settings, Function.GET_USER_PRICES);\r\n\t\ttestFail(settings, Function.SET_MAXIMUM_PURCHASE_AGE);\r\n\t\ttestFail(settings, Function.SET_PRICE_DATA_SETTINGS);\r\n\t\ttestFail(settings, Function.SET_PROXY_DATA);\r\n\t\ttestFail(settings, Function.SET_REPROCESS_SETTINGS);\r\n\t\ttestFail(settings, Function.SET_WINDOW_ALWAYS_ON_TOP);\r\n\t\ttestFail(settings, Function.SET_WINDOW_AUTO_SAVE);\r\n\t\ttestFail(settings, Function.SET_WINDOW_LOCATION);\r\n\t\ttestFail(settings, Function.SET_WINDOW_MAXIMIZED);\r\n\t\ttestFail(settings, Function.SET_WINDOW_SIZE);\r\n\t}\r\n\r\n\tprivate static class TestSettings extends Settings {\r\n\r\n\t\tpublic TestSettings() {\r\n\t\t\tsuper();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate class SettingsFactoryError implements SettingsFactory {\r\n\r\n\t\t@Override\r\n\t\tpublic Settings create() {\r\n\t\t\treturn new BackwardCompatibilitySettings();\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/local/StockpileDataReadWriteTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local;\r\n\r\nimport java.io.File;\r\nimport java.net.URISyntaxException;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter.StockpileContainer;\r\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile.StockpileFilter.StockpileFlag;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\nimport static org.junit.Assert.assertEquals;\r\nimport static org.junit.Assert.assertTrue;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class StockpileDataReadWriteTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void testText() {\r\n\t\tSystem.out.println(\"testText\");\r\n\t\ttestIO(new SaveLoad() {\r\n\t\t\t@Override\r\n\t\t\tpublic List<Stockpile> saveAndLoad(List<Stockpile> stockpiles) {\r\n\t\t\t\tString data = StockpileWriter.save(stockpiles);\r\n\t\t\t\tSystem.out.println(data);\r\n\t\t\t\treturn StockpileReader.load(data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testXml() {\r\n\t\tSystem.out.println(\"testXml\");\r\n\t\ttestIO(new SaveLoad() {\r\n\t\t\tint i = 0;\r\n\t\t\t@Override\r\n\t\t\tpublic List<Stockpile> saveAndLoad(List<Stockpile> stockpiles) {\r\n\t\t\t\tString filename = \"stockpile_test_\" + i + \".xml\";\r\n\t\t\t\ti++;\r\n\t\t\t\tSettingsWriter.saveStockpiles(stockpiles, filename);\r\n\t\t\t\tList<Stockpile> rStockpile = SettingsReader.loadStockpile(filename);\r\n\t\t\t\tFile file = new File(filename);\r\n\t\t\t\tassertTrue(file.exists());\r\n\t\t\t\tassertTrue(file.delete());\r\n\t\t\t\treturn rStockpile;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testText740() {\r\n\t\tSystem.out.println(\"testText740\");\r\n\t\tfinal String[] data = new String[12];\r\n\t\tdata[0] = \"eNpNj0EOgyAQRe_y16SxiiZwiG66JC4EMcGKNEVXxrs72lZkM483ZPijFoyQeE7BvN5usI_GWzB4yOqWMRjfQE6f2TLEDlItoHvXDJGE1iZxwnjBC-uQdEI9JZvQ_v_sT9W3AyTfK0Ur6fXZcS1kkdG585wCHyENFcRZR1rFme-0lf38GC6dY8haM-zb5awgonRKlLwquRD13nIkCDYsblqG\";\r\n\t\tdata[1] = \"eNpNj7sOgzAMRf_lzlFFISAlH9GlI2IgIUhpeVRNmBD_jkMfJotPji3rul4xQeMeZ_t8-cHd2tFBYISuLpmAHVvo-F6cQOih6xX079shkDDGMjOGE57YzKwZTWTL6P70YOoGaJkqZStp_JfLd9BFRu8qcwp8hLRUEBYT6BRvP5Ob-PppPnWO7VsjkK7LRUFE6WpVyqqUSjWp5UkQ7CyBWoY=\";\r\n\t\tdata[2] = \"eNpNj0EOgyAQRe_y16SxiibOIbrp0rgQxIQWtCm6Mt7dwTYim3n8T8ibZsUIwnOe9PtjnXl03kDAg6pbJqB9B5q_ixEIA6hZcd6V0qChcyFywnDBC6spxQnVnNKE5qRXot6BZJysVvLzs7E9qMj43GXOwoek5oGwqMCrWP0z3sQ_H6dLc3yytQJxu1wUTKzX1KWsSlnXbawsBww7L19ahg==\";\r\n\t\tdata[3] = \"eNpNj8EOgyAQRP9lzqSxiibwEb30aDwAYkIr0hQ8Gf-9q21FLvt2huzOtgsmSNxTMM-XG-1NeQsGD9lcCgbjFWR6z5YhDpDtAuoHNUYStDaZM8YTnliHLIf_TJ2ymNEe9MjUj5B8qxStpu-H43rIqqB35SUF3kMaKoizjnSKM99tK_vpUzg5-5C1Y9iuK1lFROlaUfOm5kJ0m-VIIPgALU9ahg==\";\r\n\t\tdata[4] = \"eNpNj8EOgyAQRP9lzqSxCibwEb30aDwIYkKL0hQ9Gf_dxTYil33MbHZnmxUTFJ5zMO-P8_bRjRYMI1R9KxjM2EHN38UyxAGqWUH_ofORBK1N5ozxghfW4RwUsjjn3oz2pFem3kPxVCmaoPbTcT1UVdC785ICHyENFcRFRzrFmd_ijf31KVycY8jWMqTrSlYRUbxGCl4LLmWbLEcCwQ4trVqG\";\r\n\t\tdata[5] = \"eNpNjzEOgzAMRe_y56iiEJCSQ3TpGDGQEKRQQqoGJsTdMbQlePHzt2V_qwUjJJ5TMK-3G-yj8RYMHrK6ZQzGN5DTZ7YMsYNUC6jumiGSoLVJnDBe8MI6JDmhnpKa0J7U_6_37QDJ90zWSpo-R1wLWWQUd56T4cOkoYQ460ivOPPdsbKfPoZL51iy1gz7dzkriMidEiWvSi5EvbccCQQbLD1ahg==\";\r\n\t\tdata[6] = \"eNpNj8EOgyAQRP9lzqSxiibwEb30aDwAYkKL2hQ8Gf_d1TYgl307Q3Zn2xUTJJ5xNu-P8_ahRguGEbK5FQxmVJDxu1iGMEC2K6gflA8kaG0yZwwXvLCes5xRxzQ-JtEmemXqPSQ_KkWr6XtyXA9ZFfTuvKTAZ0hDBWHRgU5x5rdiY399mi_OOWTrGI7rSlYRUbpW1LypuRDdYTkSCHYs_VqG\";\r\n\t\tdata[7] = \"eNpNj0EOgyAQRe_y16SxCiZwiG66NC4AMaFVaQqujHfvaFuRzTzekOFPs2CCwj0F-3z5wd306MAwQtWXgsGOGiq9Z8cQe6hmAd17PUQSxtjMGeMJT2xC1hlNyjb9f3KHe2TqBii-VYom6PXR8R1UVdC58pIC7yEtFcTZRFrF2-_clf38FE6dfcjaMmzblawionSNFLwWXMp2a3kSBB8smlqG\";\r\n\t\tdata[8] = \"eNpNj80OgyAQhN9lzqSxiibyEL30aDwIYkLrT1PwZHx3F2NYuezHzEBmmw0zFN5hMd-fG-2rmywEJqjqkQmYqYMK_9UK-AGq2UD3oRs9CVobZkZv0gt_CywcYNSBVUab6MPUj1AyTqpWUjw5rocqMjpPmVPhs6ShAb9qT6u4q88uLn1ebs75yd4KxO1yURBRvaYuZVXKum6j5UggOAAudFqG\";\r\n\t\tdata[9] = \"eNpNj7EOgzAMRP_l5qiiEJCSj-jSETGQEKS0BKoGJsS_16EI48Uvd3Z0rleM0HjOk31__OAebXAQCNDVLROwoYWev4sTiD10vYLefTtEEoyxzIzxgon_22ZildHMrDK6k15M3QAtU6doJY2fju-gi4zqLnMKvIe01BAXE-kUf2TYxKGP08XZP9kagXRdLgoiilerUlalVKpJlieB4Act-lqG\";\r\n\t\tdata[10] = \"eNpNj7sOgzAMRf_lzlFFISCRj-jSETGQEKS0PKomTIh_x0EoJotPji3rutkwQ-EdFvP9udG-uslCYIKqHpmAmTqo8F-tgB-gmg30H7rRk9DaMJs0xtLfWC-sGXVgy2gTfZj6EUrGStFKGk8d10MVGb2nzCnwGdJQgV-1p1PcFW0Xl5-XW-dcsrcC8bpcFEQUr6lLWZWyrtvYciQIDi7GWoY=\";\r\n\t\tdata[11] = \"eNpNj8sOgyAQRf_lrkljFU2cj-imS-MCEBNaH03BlfHfOxgrspnDuYTcaVZMIDzDbN4fN9iHGi0ERlB1ywTMqEDhu1gB34OaFXzv1eBZaG3-WaTD-gteWM9JJ9Qh2YT2pFeibgDJOLlayc_PxHWgIuNzlzkX3ksaHvCL9ryKO1pu4vDTfEn2T7ZWIG6Xi4KJ6zV1KatS1nUbI8eC4QcvB1qG\";\r\n\t\tboolean[] b = new boolean[12];\r\n\t\tfor (int i = 0; i < b.length; i++) {\r\n\t\t\tb[i] = false;\r\n\t\t}\r\n\t\tint last = -1;\r\n\t\tfor (int i = 0; i < b.length; i++) {\r\n\t\t\tb[i] = true;\r\n\t\t\tSystem.out.println(\"Testing index: \" + i);\r\n\t\t\tif (last > -1) {\r\n\t\t\t\tb[last] = false;\r\n\t\t\t}\r\n\t\t\tlast = i;\r\n\t\t\tfinal int index = i;\r\n\t\t\ttestIO(true, new SaveLoad() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic List<Stockpile> saveAndLoad(List<Stockpile> stockpiles) {\r\n\t\t\t\t\treturn StockpileReader.load(data[index]);\r\n\t\t\t\t}\r\n\t\t\t}, b);\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testXml740() {\r\n\t\tSystem.out.println(\"testXml740\");\r\n\t\tboolean[] b = new boolean[12];\r\n\t\tfor (int i = 0; i < b.length; i++) {\r\n\t\t\tb[i] = false;\r\n\t\t}\r\n\t\tint last = -1;\r\n\t\tfor (int i = 0; i < b.length; i++) {\r\n\t\t\tb[i] = true;\r\n\t\t\tSystem.out.println(\"Testing index: \" + i);\r\n\t\t\tif (last > -1) {\r\n\t\t\t\tb[last] = false;\r\n\t\t\t}\r\n\t\t\tlast = i;\r\n\t\t\tfinal int index = i;\r\n\t\t\ttestIO(true, new SaveLoad() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic List<Stockpile> saveAndLoad(List<Stockpile> stockpiles) {\r\n\t\t\t\t\tString filename;\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tfilename = new File(StockpileDataReadWriteTest.class.getResource(\"/740/\" + \"stockpile_test_\" + index + \".xml\").toURI()).getAbsolutePath();\r\n\t\t\t\t\t} catch (URISyntaxException ex) {\r\n\t\t\t\t\t\tthrow new RuntimeException(ex);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn SettingsReader.loadStockpile(filename);\r\n\t\t\t\t}\r\n\t\t\t}, b);\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testXml750() {\r\n\t\tSystem.out.println(\"testXml750\");\r\n\t\tboolean[] b = new boolean[12];\r\n\t\tfor (int i = 0; i < b.length; i++) {\r\n\t\t\tb[i] = false;\r\n\t\t}\r\n\t\tint last = -1;\r\n\t\tfor (int i = 0; i < b.length; i++) {\r\n\t\t\tb[i] = true;\r\n\t\t\tSystem.out.println(\"Testing index: \" + i);\r\n\t\t\tif (last > -1) {\r\n\t\t\t\tb[last] = false;\r\n\t\t\t}\r\n\t\t\tlast = i;\r\n\t\t\tfinal int index = i;\r\n\t\t\ttestIO(false, new SaveLoad() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic List<Stockpile> saveAndLoad(List<Stockpile> stockpiles) {\r\n\t\t\t\t\tString filename;\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tfilename = new File(StockpileDataReadWriteTest.class.getResource(\"/750/\" + \"stockpile_test_\" + index + \".xml\").toURI()).getAbsolutePath();\r\n\t\t\t\t\t} catch (URISyntaxException ex) {\r\n\t\t\t\t\t\tthrow new RuntimeException(ex);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn SettingsReader.loadStockpile(filename);\r\n\t\t\t\t}\r\n\t\t\t}, b);\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testText750() {\r\n\t\tSystem.out.println(\"testText750\");\r\n\t\tfinal String[] data = new String[12];\r\n\t\tdata[0] = \"eNpdj8EOgyAMht_lP5PFKZrIQ-yyo_EgiAlOdBl4Mr77qm7CxqUfX0tpqwUjBO5-Uo-nGfStsRoMFqK4JAzKNhD-NWsG10FUC-jeNYMjIaUKHNBFGLGcgg4ofbAB9ffP_lR9O0DwLdJoOVWfGdNCZAmdK09p4H1IRQFulo5WMerotrKPH6coszdZa4Zju45C-vtmU9lfMS1QlTkvcl6W9SYMCYI3gotlwQ==\";\r\n\t\tdata[1] = \"eNpdj8sOgjAQRf_lrhuDUEjaj3DjkrCgpU2qPIyFFeHfHUAdtJs5PZ1p7pQzemhcx8HeH6F1l7pzEOigi1MiYLsaenxOTiB66HIG3X3dRhLGWGbGeMADm4E1oxnZMrov3ZiaFlqulbLl1P7JFRroLKFzlikF3kJaKoiTibRKsHvnIt6-Hw4v2-9LJbBv56mkvzOryv6aaYFS5bLIpVLVKgIJgheCnmXB\";\r\n\t\tdata[2] = \"eNpdj80OgyAQhN9lzqSxiibuQ_TSo_EgiAmtP03Bk_Hdu2gjtlzmY3YhM9WCEYS7n_TzZXtzawYDgQFUXBIBPTQg_56NgOtA1YLjrpQGdU3vAkd0JzyxmqIdUfnoRjQHPSK1PUgG5Wg5rx8T24KyhM9Vphx4C6lZ4GbluIrVe-JVfP1xOk22T9ZaYG_XsaS_b4KV_S1zg6rMZZHLsqyDYdlg-ACFfGXB\";\r\n\t\tdata[3] = \"eNpdj8EOgyAMht_lP5PFKZrAQ-yyo_EgCAmbyjL0ZHx3q27ixqUfX0tpywk9JO6D18-Xa82t7gwYOsjikjDoroYc3qNhCBaynEB3W7eBhFI6csRwwhMrH7X_9lRDlBHNQY9ITQvJ10ij5VR-ZFwDmSV0rjylgbchNQWEUQVaxen9t5l9fO9Pma3JXDHs21kK6e-bVWV_xbRAKXJe5FyIahWOBMECg2xlwQ==\";\r\n\t\tdata[4] = \"eNpdj8EOgyAQRP9lzqSxiibyEb30aDwIYkIL0hQ8Gf-9qzZiy2Ufs8Oy08wYIXCPXj1fxupb5zQYHER1yRiU6yDie9IMYYBoZtB96GwgQUqVOGE44YmlPwb5JMbkTagPeiTqLQRfK61Wkv3omB6iyOhceU4Lb0sqKgiTDBTFqP3jhX310Z8625ClZdjTDVTy3zerVPyZKUFTl7wqeV23q2BIIPgAg8plwQ==\";\r\n\t\tdata[5] = \"eNpdj8EOgyAMht_lP5PFKZrIQ-yyo_EgiAlOdBl4Mr77qm7CxqUfH21pqwUjBO5-Uo-nGfStsRoMFqK4JAzKNhD-NWsG10FUC-jeNYMjIaUKHNBFGLGcgg4ofbAB9Un99_e-HSD4Fmm0nLLPFNNCZAmdK09p4H1IRQFulo5WMerosbKPH6foZW-y1gzHdh2F9LdmU9lfMi1QlTkvcl6W9SYMCYI3glplwQ==\";\r\n\t\tdata[6] = \"eNpdj00OgyAQRu_yrUljFU3kEN10aVwIQkLrT1NwZbx7B23Als083gzDTLNigsDdz-r5soO-daMGwwhRXTIGNXYQ_r1oBmcgmhV0N93gSEipEid0JzyxnJNOKH1s76PUkR6J-gGCh0ijlVQeM7aHKDI6V57TwPuQigLcIh2tYtXxxca-fppPmb3J1jIc2xkK-e-boIq_YlqgqUtelbyu2yAsCYIPgxplwQ==\";\r\n\t\tdata[7] = \"eNpdj8EOgyAMht_lP5PFKZrIQ-yyo_EgiAkb6DLwZHx3q27ixqUfX0tpqwk9BO5hUM-XsfrWOA0GB1FcEgblGojwHjWD7yCqCXTvGutJSKkiR_QnPLEcoo4oQ7Th-5M-3CNSayH4Gmm0nKqPjGkhsoTOlac08DakogA_Sk-rGLX3ndnH98MpszWZa4Z9u45C-vtmVdlfMS1QlTkvcl6W9SoMCYIFgrdlwQ==\";\r\n\t\tdata[8] = \"eNpdj70OgzAMhN_l5qiiEJCSh-jSETGQEKS0_FQNTIh3r6Eops3iL-ezdS4XDNC4T6N9vnznbnXvINBDF5dEwPY19PSenUBoocsF9G_rLpBgjGVmDDZOhJNhZAOjmVhldJEeTE0HLbdK0XKyx45voLOE3lWmFHgPaakgzCbQKf7Is4pDH8ZTZ1-yVgLf61oq6e_MJmV_ZrqgVLkscqlUtQmeBIIPhJFlwQ==\";\r\n\t\tdata[9] = \"eNpdj8sOgyAQRf_lrkljFU3kI7rp0rgQxITWR1N0Zfx3BzWOLZs5nGHInWJGD4XnOJj3x7X2UXUWAh1UdosETFdBjd_JCvgGqphB96ZqPQmtDTOjv2DgfVoPbBn1yJbRnvRiqlsoGSpFS-n52XE1VBLRucuYAm8hDRX4SXtaxR0ZFnH4frh0tk-WUmDfrqES_84Elfw9pg2KPJVZKvO8DMKRIFgBhBdlwQ==\";\r\n\t\tdata[10] = \"eNpdj8sOgyAQRf_lrkljFU3gI7rp0rgQxITWR1N0Zfz3jtYwtmzmcGYgd8oFAzTu02ifL9-5W907CPTQxSURsH0NPb1nJxBa6HIB3du6CySMscw2jrEMJzYja0YzsWV0kR5MTQctt0rRchqPHd9AZwmdq0wp8B7SUkGYTaBV_BFtFYcfxlNn_2StBL7btVTS3zebyv6GaYNS5bLIpVLVJjwJgg-E42XB\";\r\n\t\tdata[11] = \"eNpdj8sOgyAQRf_lrkljFU3gI7rp0rgQhITWR1N0Zfx3B2vFls0czgzkTjmjh8R9HPTz5VpzqzsDhg6yuCQMuqshx_dkGLyFLGfQ3datJ6GU_vYC7daf8MRqiDqiGqONaA56RGpaSB4qRctp_Oi4BjJL6Fx5SoG3kJoK_KQ8reL2lAvbfT-cOtsnS8Xw2c5SSX_fBJX9DdMGpch5kXMhqiAcCYIVhSRlwQ==\";\r\n\t\tboolean[] b = new boolean[12];\r\n\t\tfor (int i = 0; i < b.length; i++) {\r\n\t\t\tb[i] = false;\r\n\t\t}\r\n\t\tint last = -1;\r\n\t\tfor (int i = 0; i < b.length; i++) {\r\n\t\t\tb[i] = true;\r\n\t\t\tSystem.out.println(\"Testing index: \" + i);\r\n\t\t\tif (last > -1) {\r\n\t\t\t\tb[last] = false;\r\n\t\t\t}\r\n\t\t\tlast = i;\r\n\t\t\tfinal int index = i;\r\n\t\t\ttestIO(false, new SaveLoad() {\r\n\t\t\t\t@Override\r\n\t\t\t\tpublic List<Stockpile> saveAndLoad(List<Stockpile> stockpiles) {\r\n\t\t\t\t\treturn StockpileReader.load(data[index]);\r\n\t\t\t\t}\r\n\t\t\t}, b);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void testIO(SaveLoad saveLoad) {\r\n\t\ttestIO(false, saveLoad);\r\n\t}\r\n\r\n\tprivate void testIO(boolean flagNoSubs, SaveLoad saveLoad) {\r\n\t\tboolean[] b = new boolean[12];\r\n\t\tfor (int i = 0; i < b.length; i++) {\r\n\t\t\tb[i] = false;\r\n\t\t}\r\n\t\tint last = -1;\r\n\t\tfor (int i = 0; i < b.length; i++) {\r\n\t\t\tb[i] = true;\r\n\t\t\tSystem.out.println(\"Testing index: \" + i);\r\n\t\t\tif (last > -1) {\r\n\t\t\t\tb[last] = false;\r\n\t\t\t}\r\n\t\t\tlast = i;\r\n\t\t\ttestIO(flagNoSubs, saveLoad, b);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void testIO(boolean flagNoSubs, SaveLoad saveLoad, boolean[] b) {\r\n\t\t//Boolean\r\n\t\tboolean exclude = b[0];\r\n\t\tBoolean singleton = b[1];\r\n\t\tboolean assets = b[2];\r\n\t\tboolean sellOrders = b[3];\r\n\t\tboolean buyOrders = b[4];\r\n\t\tboolean jobs = b[5];\r\n\t\tboolean buyTransactions = b[6];\r\n\t\tboolean sellTransactions = b[7];\r\n\t\tboolean sellingContracts = b[8];\r\n\t\tboolean soldContracts = b[9];\r\n\t\tboolean buyingContracts = b[10];\r\n\t\tboolean boughtContracts = b[11];\r\n\t\t//Int\r\n\t\tInteger jobsDaysLess = 4;\r\n\t\tInteger jobsDaysMore = 5;\r\n\t\t//Location (Jita)\r\n\t\tMyLocation location = ApiIdConverter.getLocation(30000142);\r\n\t\t//Owners\r\n\t\tLong ownerID = 95465499L;\r\n\t\tList<Long> ownerIDs = new ArrayList<>();\r\n\t\townerIDs.add(ownerID); //CCP Bartender\r\n\t\t//Flags\r\n\t\tList<StockpileFlag> flags = new ArrayList<>();\r\n\t\tflags.add(new StockpileFlag(2, true)); //Office +subs\r\n\t\tflags.add(new StockpileFlag(3, flagNoSubs)); //Wardrobe !subs\r\n\t\t//Containers\r\n\t\tList<StockpileContainer> containers = new ArrayList<>();\r\n\t\tString containerSubs = \"subs\";\r\n\t\tString containerNoSubs = \"nosubs\";\r\n\t\tcontainers.add(new StockpileContainer(containerSubs, true));\r\n\t\tcontainers.add(new StockpileContainer(containerNoSubs, false));\r\n\r\n\r\n\t\tList<StockpileFilter> filters = new ArrayList<>();\r\n\r\n\t\tfilters.add(new StockpileFilter(location, exclude, flags, containers, ownerIDs, jobsDaysLess, jobsDaysMore, singleton, assets, sellOrders, buyOrders, jobs, buyTransactions, sellTransactions, sellingContracts, soldContracts, buyingContracts, boughtContracts));\r\n\t\tList<Stockpile> stockpiles = new ArrayList<>();\r\n\t\tString stockpileName = \"StockpileName\";\r\n\t\tdouble multiplier = 6.0;\r\n\t\tboolean matchAll = true;\r\n\t\tstockpiles.add(new Stockpile(stockpileName, 1L, filters, multiplier, matchAll));\r\n\r\n\t\t//Save and Load\r\n\t\tList<Stockpile> rStockpiles = saveLoad.saveAndLoad(stockpiles);\r\n\r\n\t\t//Stockpiles\r\n\t\tassertEquals(1, rStockpiles.size());\r\n\t\t//Stockpile\r\n\t\tStockpile rStockpile = rStockpiles.get(0);\r\n\t\tassertEquals(stockpileName, rStockpile.getName());\r\n\t\tassertEquals(multiplier, rStockpile.getMultiplier(), 0.001);\r\n\t\tassertEquals(matchAll, rStockpile.isMatchAll());\r\n\t\t//Filters\r\n\t\tassertEquals(1, rStockpile.getFilters().size());\r\n\t\t//Filter\r\n\t\tStockpileFilter rFilter = rStockpile.getFilters().get(0);\r\n\t\t\t//Boolean\r\n\t\tassertEquals(exclude, rFilter.isExclude());\r\n\t\tassertEquals(singleton, rFilter.isSingleton());\r\n\t\tassertEquals(assets, rFilter.isAssets());\r\n\t\tassertEquals(sellOrders, rFilter.isSellOrders());\r\n\t\tassertEquals(buyOrders, rFilter.isBuyOrders());\r\n\t\tassertEquals(jobs, rFilter.isJobs());\r\n\t\tassertEquals(buyTransactions, rFilter.isBuyTransactions());\r\n\t\tassertEquals(sellTransactions, rFilter.isSellTransactions());\r\n\t\tassertEquals(sellingContracts, rFilter.isSellingContracts());\r\n\t\tassertEquals(soldContracts, rFilter.isSoldContracts());\r\n\t\tassertEquals(buyingContracts, rFilter.isBuyingContracts());\r\n\t\tassertEquals(boughtContracts, rFilter.isBoughtContracts());\r\n\t\t\t//Int\r\n\t\tassertEquals(jobsDaysLess, rFilter.getJobsDaysLess());\r\n\t\tassertEquals(jobsDaysMore, rFilter.getJobsDaysMore());\r\n\t\t\t//Location (Jita)\r\n\t\tassertEquals(location, rFilter.getLocation());\r\n\t\t\t//Owners\r\n\t\tassertEquals(1, rFilter.getOwnerIDs().size());\r\n\t\tassertEquals(ownerID, rFilter.getOwnerIDs().get(0));\r\n\t\t\t//Flags\r\n\t\tassertEquals(2, rFilter.getFlags().size());\r\n\t\tfor (StockpileFlag flag : rFilter.getFlags()) {\r\n\t\t\tif (flag.getFlagID() == 2) {\r\n\t\t\t\tassertEquals(true, flag.isIncludeSubs());\r\n\t\t\t} else {\r\n\t\t\t\tassertEquals(flagNoSubs, flag.isIncludeSubs());\r\n\t\t\t}\r\n\t\t}\r\n\t\t\t//Containers\r\n\t\tassertEquals(2, rFilter.getContainers().size());\r\n\t\tfor (StockpileContainer rContainer : rFilter.getContainers()) {\r\n\t\t\tif (rContainer.getContainer().equals(containerSubs)) {\r\n\t\t\t\tassertEquals(true, rContainer.isIncludeSubs());\r\n\t\t\t} else {\r\n\t\t\t\tassertEquals(false, rContainer.isIncludeSubs());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static interface SaveLoad {\r\n\t\tpublic List<Stockpile> saveAndLoad(List<Stockpile> stockpiles);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/local/TrackerDataTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local;\r\n\r\nimport java.io.File;\r\nimport java.net.URISyntaxException;\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.TreeMap;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.AssetValue;\r\nimport net.nikr.eve.jeveasset.gui.tabs.values.Value;\r\nimport static org.hamcrest.CoreMatchers.equalTo;\r\nimport static org.hamcrest.MatcherAssert.assertThat;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class TrackerDataTest extends TestUtil {\r\n\r\n\tprivate final String filename = \"tracker.json\";\r\n\tprivate final Date date = new Date(1552492124589L);\r\n\r\n\t@Test\r\n\tpublic void testEmpty() throws URISyntaxException {\r\n\t\tMap<String, List<Value>> out = new TreeMap<>();\r\n\t\ttestWriteRead(out);\r\n\t\ttestRead(out, \"tracker_empty.json\");\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testFilters() throws URISyntaxException {\r\n\t\tMap<String, List<Value>> out = new TreeMap<>();\r\n\t\tList<Value> values = new ArrayList<>();\r\n\t\tout.put(\"TEST-NAME\", values);\r\n\t\tValue value = new Value(date);\r\n\t\tvalue.setContractCollateral(3);\r\n\t\tvalue.setContractValue(4);\r\n\t\tvalue.setEscrows(5);\r\n\t\tvalue.setEscrowsToCover(6);\r\n\t\tvalue.setManufacturing(7);\r\n\t\tvalue.setSellOrders(8);\r\n\t\tvalue.addAssets(AssetValue.create(\"location\", \"flag\", 1000L), 9.0);\r\n\t\tvalue.addBalance(\"balence-id\", 10);\r\n\t\tvalue.setSkillPoints(11);\r\n\t\tvalues.add(value);\r\n\t\ttestWriteRead(out);\r\n\t\ttestRead(out, \"tracker_filters.json\");\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testTotal() throws URISyntaxException {\r\n\t\tMap<String, List<Value>> out = new TreeMap<>();\r\n\t\tList<Value> values = new ArrayList<>();\r\n\t\tout.put(\"TEST-NAME\", values);\r\n\t\tValue value = new Value(date);\r\n\t\tvalue.setAssetsTotal(1);\r\n\t\tvalue.setBalanceTotal(2);\r\n\t\tvalue.setContractCollateral(3);\r\n\t\tvalue.setContractValue(4);\r\n\t\tvalue.setEscrows(5);\r\n\t\tvalue.setEscrowsToCover(6);\r\n\t\tvalue.setManufacturing(7);\r\n\t\tvalue.setSellOrders(8);\r\n\t\tvalue.setSkillPoints(11);\r\n\t\tvalues.add(value);\r\n\t\ttestWriteRead(out);\r\n\t\ttestRead(out, \"tracker_total.json\");\r\n\t}\r\n\r\n\tprivate void testRead(final Map<String, List<Value>> out, String filename) {\r\n\t\ttry {\r\n\t\t\tread(out, new File(TrackerDataTest.class.getResource(\"/\" + filename).toURI()).getAbsolutePath());\r\n\t\t} catch (URISyntaxException ex) {\r\n\t\t\tthrow new RuntimeException(ex);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void testWriteRead(final Map<String, List<Value>> out) {\r\n\t\tTrackerWriter.save(filename, out, false);\r\n\t\tread(out, filename);\r\n\t\tFile file = new File(filename);\r\n\t\tfile.delete();\r\n\t}\r\n\r\n\tprivate void read(final Map<String, List<Value>> out, String filename) {\r\n\t\tfinal Map<String, List<Value>> in = TrackerReader.load(filename, false);\r\n\t\tassertThat(in.keySet(), equalTo(out.keySet()));\r\n\t\tfor (String key : in.keySet()) {\r\n\t\t\tList<Value> outValues = out.get(key);\r\n\t\t\tList<Value> inValues = in.get(key);\r\n\t\t\tassertThat(inValues.getClass(), equalTo(outValues.getClass()));\r\n\t\t\tassertThat(inValues.size(), equalTo(outValues.size()));\r\n\t\t\tfor (int i = 0; i < inValues.size(); i++) {\r\n\t\t\t\tValue outValue = outValues.get(i);\r\n\t\t\t\tValue inValue = inValues.get(i);\r\n\t\t\t\t//assertThat(inValue.hashCode(), equalTo(outValue.hashCode()));\r\n\t\t\t\tassertThat(inValue.getAssetsFilter(), equalTo(outValue.getAssetsFilter()));\r\n\t\t\t\tassertThat(inValue.getAssetsTotal(), equalTo(outValue.getAssetsTotal()));\r\n\t\t\t\tassertThat(inValue.getBalanceFilter(), equalTo(outValue.getBalanceFilter()));\r\n\t\t\t\tassertThat(inValue.getBalanceTotal(), equalTo(outValue.getBalanceTotal()));\r\n\t\t\t\tassertThat(inValue.getBestAssetValue(), equalTo(outValue.getBestAssetValue()));\r\n\t\t\t\tassertThat(inValue.getBestModuleValue(), equalTo(outValue.getBestModuleValue()));\r\n\t\t\t\tassertThat(inValue.getBestShipFittedValue(), equalTo(outValue.getBestShipFittedValue()));\r\n\t\t\t\tassertThat(inValue.getBestShipValue(), equalTo(outValue.getBestShipValue()));\r\n\t\t\t\tassertThat(inValue.getContractCollateral(), equalTo(outValue.getContractCollateral()));\r\n\t\t\t\tassertThat(inValue.getContractValue(), equalTo(outValue.getContractValue()));\r\n\t\t\t\tassertThat(inValue.getSkillPointValue(), equalTo(outValue.getSkillPointValue()));\r\n\t\t\t\tassertThat(inValue.getDate(), equalTo(outValue.getDate()));\r\n\t\t\t\tassertThat(inValue.getBestAssetName(), equalTo(outValue.getBestAssetName()));\r\n\t\t\t\tassertThat(inValue.getBestModuleName(), equalTo(outValue.getBestModuleName()));\r\n\t\t\t\tassertThat(inValue.getBestShipFittedName(), equalTo(outValue.getBestShipFittedName()));\r\n\t\t\t\tassertThat(inValue.getBestShipName(), equalTo(outValue.getBestShipName()));\r\n\t\t\t\tassertThat(inValue.getName(), equalTo(outValue.getName()));\r\n\t\t\t\tassertThat(inValue, equalTo(outValue));\r\n\t\t\t}\r\n\t\t}\r\n\t\tassertThat(in, equalTo(out));\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/local/text/ImportEftTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.text;\r\n\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport static org.junit.Assert.assertEquals;\r\nimport static org.junit.Assert.assertNotNull;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class ImportEftTest extends TestUtil {\r\n\r\n\tprivate final ImportEft importEft = new ImportEft();\r\n\r\n\t@Test\r\n\tpublic void testCargo() {\r\n\t\tString text = \"[Dominix, Cargo Test]\\n\" +\r\n\t\t\t\t\"\\n\" +\r\n\t\t\t\t\"Large Armor Repairer II\\n\" +\r\n\t\t\t\t\"Large Armor Repairer II\\n\" +\r\n\t\t\t\t\"Kinetic Armor Hardener II\\n\" +\r\n\t\t\t\t\"Explosive Armor Hardener II\\n\" +\r\n\t\t\t\t\"Explosive Armor Hardener II\\n\" +\r\n\t\t\t\t\"Explosive Armor Hardener II\\n\" +\r\n\t\t\t\t\"Capacitor Power Relay II\\n\" +\r\n\t\t\t\t\"\\n\" +\r\n\t\t\t\t\"100MN Afterburner II\\n\" +\r\n\t\t\t\t\"Cap Recharger II\\n\" +\r\n\t\t\t\t\"Cap Recharger II\\n\" +\r\n\t\t\t\t\"Cap Recharger II\\n\" +\r\n\t\t\t\t\"Cap Recharger II\\n\" +\r\n\t\t\t\t\"\\n\" +\r\n\t\t\t\t\"Dual 250mm Prototype Gauss Gun\\n\" +\r\n\t\t\t\t\"Dual 250mm Prototype Gauss Gun\\n\" +\r\n\t\t\t\t\"Dual 250mm Prototype Gauss Gun\\n\" +\r\n\t\t\t\t\"Dual 250mm Prototype Gauss Gun\\n\" +\r\n\t\t\t\t\"Drone Link Augmentor I\\n\" +\r\n\t\t\t\t\"Drone Link Augmentor I\\n\" +\r\n\t\t\t\t\"\\n\" +\r\n\t\t\t\t\"Large Capacitor Control Circuit I\\n\" +\r\n\t\t\t\t\"Large Capacitor Control Circuit I\\n\" +\r\n\t\t\t\t\"Large Capacitor Control Circuit I\\n\" +\r\n\t\t\t\t\"\\n\" +\r\n\t\t\t\t\"\\n\" +\r\n\t\t\t\t\"Hammerhead II x10\\n\" +\r\n\t\t\t\t\"Ogre II x5\\n\" +\r\n\t\t\t\t\"Warden II x5\\n\" +\r\n\t\t\t\t\"Hobgoblin II x5\\n\" +\r\n\t\t\t\t\"\\n\" +\r\n\t\t\t\t\"\\n\" +\r\n\t\t\t\t\"Iron Charge L x3260\\n\" +\r\n\t\t\t\t\"Antimatter Charge L x4704\";\r\n\t\tMap<String, Double> data = test(text, 16);\r\n\t\tassertEquals(3260, data.get(\"Iron Charge L\"), 0.1);\r\n\t}\r\n\t@Test\r\n\tpublic void testDomi() {\r\n/*\r\n[Dominix, My Domi]\r\n\r\nLarge Armor Repairer II\r\nLarge Armor Repairer II\r\nKinetic Armor Hardener II\r\nExplosive Armor Hardener II\r\nExplosive Armor Hardener II\r\nExplosive Armor Hardener II\r\nCapacitor Power Relay II\r\n\r\n100MN Afterburner II\r\nCap Recharger II\r\nCap Recharger II\r\nCap Recharger II\r\nCap Recharger II\r\n\r\nDual 250mm Prototype Gauss Gun\r\nDual 250mm Prototype Gauss Gun\r\nDual 250mm Prototype Gauss Gun\r\nDual 250mm Prototype Gauss Gun\r\n[Empty High slot]\r\n[Empty High slot]\r\n\r\nLarge Capacitor Control Circuit I\r\nLarge Capacitor Control Circuit I\r\nLarge Capacitor Control Circuit I\r\n\r\n\r\nHammerhead II x10\r\nOgre II x5\r\nHobgoblin II x5\r\nWarden II x5\r\n*/\r\n\t\tString text = \"[Dominix, My Domi]\\n\" +\r\n\t\t\t\"\\n\" +\r\n\t\t\t\"Large Armor Repairer II\\n\" +\r\n\t\t\t\"Large Armor Repairer II\\n\" +\r\n\t\t\t\"Kinetic Armor Hardener II\\n\" +\r\n\t\t\t\"Explosive Armor Hardener II\\n\" +\r\n\t\t\t\"Explosive Armor Hardener II\\n\" +\r\n\t\t\t\"Explosive Armor Hardener II\\n\" +\r\n\t\t\t\"Capacitor Power Relay II\\n\" +\r\n\t\t\t\"\\n\" +\r\n\t\t\t\"100MN Afterburner II\\n\" +\r\n\t\t\t\"Cap Recharger II\\n\" +\r\n\t\t\t\"Cap Recharger II\\n\" +\r\n\t\t\t\"Cap Recharger II\\n\" +\r\n\t\t\t\"Cap Recharger II\\n\" +\r\n\t\t\t\"\\n\" +\r\n\t\t\t\"Dual 250mm Prototype Gauss Gun\\n\" +\r\n\t\t\t\"Dual 250mm Prototype Gauss Gun\\n\" +\r\n\t\t\t\"Dual 250mm Prototype Gauss Gun\\n\" +\r\n\t\t\t\"Dual 250mm Prototype Gauss Gun\\n\" +\r\n\t\t\t\"[Empty High slot]\\n\" +\r\n\t\t\t\"[Empty High slot]\\n\" +\r\n\t\t\t\"\\n\" +\r\n\t\t\t\"Large Capacitor Control Circuit I\\n\" +\r\n\t\t\t\"Large Capacitor Control Circuit I\\n\" +\r\n\t\t\t\"Large Capacitor Control Circuit I\\n\" +\r\n\t\t\t\"\\n\" +\r\n\t\t\t\"\\n\" +\r\n\t\t\t\"Hammerhead II x10\\n\" +\r\n\t\t\t\"Ogre II x5\\n\" +\r\n\t\t\t\"Hobgoblin II x5\\n\" +\r\n\t\t\t\"Warden II x5\";\r\n\t\tMap<String, Double> data = test(text, 13);\r\n\t\tassertEquals(10, data.get(\"Hammerhead II\"), 0.1);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testCharge() {\r\n\t\t/*\r\n\t\tLarge Ancillary Armor Repairer, Nanite Repair Paste = 64\r\n\t\tRemote Sensor Booster II, Scan Resolution Script = 1\r\n\t\t'Shady' Sensor Booster, Targeting Range Script = 1\r\n\t\tGuidance Disruptor II, Missile Range Disruption Script = 1\r\n\t\tSmall Ancillary Shield Booster, Navy Cap Booster 25 = 9\r\n\t\tDual Light Beam Laser I, True Sanshas Xray S = 1\r\n\t\t350mm Railgun II, Federation Navy Iron Charge L = 80\r\n\t\tRapid Heavy Missile Launcher II, Nova Fury Heavy Missile = 25\r\n\t\tLarge Ancillary Remote Shield Booster, Navy Cap Booster 200 = 7\r\n\t\tLarge Ancillary Remote Armor Repairer, Nanite Repair Paste = 64\r\n\t\tFestival Launcher, Copper Firework CXIV = 50\r\n\t\t*/\r\n\t\tString text = \"[Abaddon, Abaddon fit]\\n\" +\r\n\t\t\t\"\\n\" +\r\n\t\t\t\"Large Ancillary Armor Repairer, Nanite Repair Paste\\n\" + //64\r\n\t\t\t\"[Empty Low slot]\\n\" +\r\n\t\t\t\"[Empty Low slot]\\n\" +\r\n\t\t\t\"[Empty Low slot]\\n\" +\r\n\t\t\t\"[Empty Low slot]\\n\" +\r\n\t\t\t\"[Empty Low slot]\\n\" +\r\n\t\t\t\"[Empty Low slot]\\n\" +\r\n\t\t\t\"\\n\" +\r\n\t\t\t\"Remote Sensor Booster II, Scan Resolution Script\\n\" + // 1\r\n\t\t\t\"'Shady' Sensor Booster, Targeting Range Script\\n\" + //1\r\n\t\t\t\"Guidance Disruptor II, Missile Range Disruption Script\\n\" + //1\r\n\t\t\t\"Small Ancillary Shield Booster, Navy Cap Booster 25\\n\" +\r\n\t\t\t\"\\n\" +\r\n\t\t\t\"Dual Light Beam Laser I, True Sanshas Xray S\\n\" + //1\r\n\t\t\t\"350mm Railgun II, Federation Navy Iron Charge L\\n\" + //80\r\n\t\t\t\"Rapid Heavy Missile Launcher II, Nova Fury Heavy Missile\\n\" + //25\r\n\t\t\t\"Large Ancillary Remote Shield Booster, Navy Cap Booster 200\\n\" + //7\r\n\t\t\t\"Small Tractor Beam II\\n\" +\r\n\t\t\t\"Large Ancillary Remote Armor Repairer, Nanite Repair Paste\\n\" + //64\r\n\t\t\t\"Festival Launcher, Copper Firework CXIV\\n\" + //50\r\n\t\t\t\"[Empty High slot]\\n\" +\r\n\t\t\t\"\\n\" +\r\n\t\t\t\"[Empty Rig slot]\\n\" +\r\n\t\t\t\"[Empty Rig slot]\\n\" +\r\n\t\t\t\"[Empty Rig slot]\\n\" +\r\n\t\t\t\"\\n\" +\r\n\t\t\t\"\\n\" +\r\n\t\t\t\"'Augmented' Vespa x1\\n\" +\r\n\t\t\t\"Berserker II x1\\n\" +\r\n\t\t\t\"Gecko x1\\n\" +\r\n\t\t\t\"Heavy Hull Maintenance Bot II x1\\n\" +\r\n\t\t\t\"Hornet EC-300 x1\\n\" +\r\n\t\t\t\"Hornet I x1\\n\" +\r\n\t\t\t\"Imperial Navy Curator x1\\n\" +\r\n\t\t\t\"\\n\" +\r\n\t\t\t\"\\n\" +\r\n\t\t\t\"Blood Dagger Firework x1\\n\" +\r\n\t\t\t\"Ace of Podhunters Firework x1\\n\" + //Formerly known as \"Easter Firework\"\r\n\t\t\t\"Sodium Firework x1\\n\" +\r\n\t\t\t\"Yoiul Festival Firework x1\\n\" +\r\n\t\t\t\"Armor EM Resistance Script x1\\n\" +\r\n\t\t\t\"Armor Explosive Resistance Script x1\\n\" +\r\n\t\t\t\"Janitor x1\\n\" +\r\n\t\t\t\"Armor Kinetic Resistance Script x1\\n\" +\r\n\t\t\t\"Armor Thermal Resistance Script x1\\n\" +\r\n\t\t\t\"Shield Kinetic Resistance Script x1\\n\" +\r\n\t\t\t\"Shield Thermal Resistance Script x1\\n\" +\r\n\t\t\t\"Missile Precision Script x1\\n\" +\r\n\t\t\t\"Scan Resolution Dampening Script x1\\n\" +\r\n\t\t\t\"Targeting Range Dampening Script x1\\n\" +\r\n\t\t\t\"Tracking Speed Disruption Script x1\\n\" +\r\n\t\t\t\"Tracking Speed Script x1\\n\" +\r\n\t\t\t\"Heavy Armor Maintenance Bot I x1\\n\" +\r\n\t\t\t\"Medium Shield Maintenance Bot II x1\\n\" +\r\n\t\t\t\"Exotic Dancers, Male x5, Nanite Repair Paste\\r\\n\" +\r\n\t\t\t\"Exotic Dancers, Male, Navy Cap Booster 200\";\r\n\t\tMap<String, Double> data = test(text, 49);\r\n\t\tassertEquals(6, data.get(\"Exotic Dancers, Male\"), 0.1);\r\n\t\tassertEquals(128, data.get(\"Nanite Repair Paste\"), 0.1);\r\n\t\tassertEquals(7, data.get(\"Navy Cap Booster 200\"), 0.1);\r\n\t\tassertEquals(1, data.get(\"Scan Resolution Script\"), 0.1);\r\n\t\tassertEquals(1, data.get(\"Targeting Range Script\"), 0.1);\r\n\t\tassertEquals(1, data.get(\"Missile Range Disruption Script\"), 0.1);\r\n\t\tassertEquals(9, data.get(\"Navy Cap Booster 25\"), 0.1);\r\n\t\tassertEquals(1, data.get(\"True Sanshas Xray S\"), 0.1);\r\n\t\tassertEquals(80, data.get(\"Federation Navy Iron Charge L\"), 0.1);\r\n\t\tassertEquals(25, data.get(\"Nova Fury Heavy Missile\"), 0.1);\r\n\t\tassertEquals(50, data.get(\"Copper Firework CXIV\"), 0.1);\r\n\t}\r\n\r\n\tprivate Map<String, Double> test(String text, int size) {\r\n\t\tMap<String, Double> data = importEft.doImport(text);\r\n\t\tassertNotNull(data);\r\n\t\tassertEquals(size, data.size());\r\n\t\tassertEquals(data.size(), importEft.importText(text).size());\r\n\t\treturn data;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/local/text/ImportEveMultibuyTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.text;\r\n\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport static org.junit.Assert.assertEquals;\r\nimport static org.junit.Assert.assertNotNull;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class ImportEveMultibuyTest extends TestUtil {\r\n\r\n\tprivate final ImportEveMultibuy importEveMultibuy = new ImportEveMultibuy();\r\n\r\n\t@Test\r\n\tpublic void testSomeMethod() {\r\n/*\r\n100MN Afterburner II\t1\t-\t-\r\nDominix\t1\t-\t-\r\nCapacitor Power Relay II\t1\t-\t-\r\nHammerhead II\t10\t1.189.997,05\t11.899.970,50\r\nDrone Link Augmentor I\t2\t-\t-\r\nOgre II\t5\t-\t-\r\nDual 250mm Prototype Gauss Gun\t4\t-\t-\r\nCap Recharger II\t4\t-\t-\r\nWarden II\t5\t-\t-\r\nLarge Capacitor Control Circuit I\t3\t-\t-\r\nLarge Armor Repairer II\t2\t-\t-\r\nHobgoblin II\t5\t499.997,32\t2.499.986,60\r\nKinetic Armor Hardener II\t1\t-\t-\r\nExplosive Armor Hardener II\t3\t-\t-\r\nTotal:\t\t\t14.399.957,10\r\n*/\r\n\t\tString text = \"100MN Afterburner II\t1\t-\t-\\n\" +\r\n\t\t\t\"Dominix\t1\t-\t-\\n\" +\r\n\t\t\t\"Capacitor Power Relay II\t1\t-\t-\\n\" +\r\n\t\t\t\"Hammerhead II\t10\t1.189.997,05\t11.899.970,50\\n\" +\r\n\t\t\t\"Drone Link Augmentor I\t2\t-\t-\\n\" +\r\n\t\t\t\"Ogre II\t5\t-\t-\\n\" +\r\n\t\t\t\"Dual 250mm Prototype Gauss Gun\t4\t-\t-\\n\" +\r\n\t\t\t\"Cap Recharger II\t4\t-\t-\\n\" +\r\n\t\t\t\"Warden II\t5\t-\t-\\n\" +\r\n\t\t\t\"Large Capacitor Control Circuit I\t3\t-\t-\\n\" +\r\n\t\t\t\"Large Armor Repairer II\t2\t-\t-\\n\" +\r\n\t\t\t\"Hobgoblin II\t5\t499.997,32\t2.499.986,60\\n\" +\r\n\t\t\t\"Kinetic Armor Hardener II\t1\t-\t-\\n\" +\r\n\t\t\t\"Explosive Armor Hardener II\t3\t-\t-\\n\" +\r\n\t\t\t\"Total:\t\t\t14.399.957,10\";\r\n\t\tMap<String, Double> data = test(text, 14);\r\n\t\tassertEquals(10, data.get(\"Hammerhead II\"), 0.1);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testXNotation() {\r\n\t\tString text = \"Veldspar\tx10\";\r\n\t\tMap<String, Double> data = importEveMultibuy.doImport(text);\r\n\t\tassertNotNull(data);\r\n\t\tassertEquals(1, data.size());\r\n\t\tassertEquals(10, data.get(\"Veldspar\"), 0.1);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testSimpleNotation() {\r\n\t\tString text = \"Capacitor Power Relay II 10\";\r\n\t\tMap<String, Double> data = importEveMultibuy.doImport(text);\r\n\t\tassertNotNull(data);\r\n\t\tassertEquals(1, data.size());\r\n\t\tassertEquals(10, data.get(\"Capacitor Power Relay II\"), 0.1);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testItemCountInFront() {\r\n\t\tString text = \"10 Capacitor Power Relay II\\n\" +\r\n\t\t\t\t\"50\tVeldspar\\n\" +\r\n\t\t\t\t\"x3 Dominix\\n\" +\r\n\t\t\t\t\"x100\tTritanium\";\r\n\r\n\t\tMap<String, Double> data = importEveMultibuy.doImport(text);\r\n\r\n\t\tassertNotNull(data);\r\n\t\tassertEquals(4, data.size());\r\n\t\tassertEquals(10, data.get(\"Capacitor Power Relay II\"), 0.1);\r\n\t\tassertEquals(50, data.get(\"Veldspar\"), 0.1);\r\n\t\tassertEquals(3, data.get(\"Dominix\"), 0.1);\r\n\t\tassertEquals(100, data.get(\"Tritanium\"), 0.1);\r\n\t}\r\n\r\n\tprivate Map<String, Double> test(String text, int size) {\r\n\t\tMap<String, Double> data = importEveMultibuy.doImport(text);\r\n\t\tassertNotNull(data);\r\n\t\tassertEquals(size, data.size());\r\n\t\tassertEquals(data.size(), importEveMultibuy.importText(text).size());\r\n\t\treturn data;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/local/text/ImportIskPerHourTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.text;\r\n\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport static org.junit.Assert.assertEquals;\r\nimport static org.junit.Assert.assertNotNull;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class ImportIskPerHourTest extends TestUtil {\r\n\r\n\tprivate final ImportIskPerHour importIskPerHour = new ImportIskPerHour();\r\n\r\n\tprivate Map<String, Double> test(String text, int size) {\r\n\t\treturn test(text, size, true);\r\n\t}\r\n\r\n\tprivate Map<String, Double> test(String text, int size, boolean tritanium) {\r\n\t\tMap<String, Double> data = importIskPerHour.doImport(text);\r\n\t\tassertNotNull(data);\r\n\t\tassertEquals(size, data.size());\r\n\t\tif (tritanium) {\r\n\t\t\tassertEquals(2932280, data.get(\"Tritanium\"), 0.1);\r\n\t\t}\r\n\t\tassertEquals(data.size(), importIskPerHour.importText(text).size());\r\n\t\treturn data;\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testCopyEveList() {\r\n\t\tString eveListFormat = \"Tritanium 2932280\\n\" +\r\n\t\t\t\t\t\"Pyerite 915005\\n\" +\r\n\t\t\t\t\t\"Mexallon 190244\\n\" +\r\n\t\t\t\t\t\"Crystalline Carbonide 144316\\n\" +\r\n\t\t\t\t\t\"Isogen 63721\\n\" +\r\n\t\t\t\t\t\"Sylramic Fibers 24033\\n\" +\r\n\t\t\t\t\t\"Phenolic Composites 12474\\n\" +\r\n\t\t\t\t\t\"Nocxium 8837\\n\" +\r\n\t\t\t\t\t\"Photonic Metamaterials 4940\\n\" +\r\n\t\t\t\t\t\"Nanotransistors 4683\\n\" +\r\n\t\t\t\t\t\"Fullerides 4532\\n\" +\r\n\t\t\t\t\t\"Zydrine 3364\\n\" +\r\n\t\t\t\t\t\"Crystalline Carbonide Armor Plate 2058\\n\" +\r\n\t\t\t\t\t\"Photon Microprocessor 2058\\n\" +\r\n\t\t\t\t\t\"Megacyte 1618\\n\" +\r\n\t\t\t\t\t\"Oscillator Capacitor Unit 412\\n\" +\r\n\t\t\t\t\t\"Hypersynaptic Fibers 310\\n\" +\r\n\t\t\t\t\t\"Construction Blocks 206\\n\" +\r\n\t\t\t\t\t\"Ferrogel 197\\n\" +\r\n\t\t\t\t\t\"Pulse Shield Emitter 155\\n\" +\r\n\t\t\t\t\t\"Magnetometric Sensor Cluster 155\\n\" +\r\n\t\t\t\t\t\"Morphite 148\\n\" +\r\n\t\t\t\t\t\"Datacore - Gallentean Starship Engineering 72\\n\" +\r\n\t\t\t\t\t\"Datacore - Laser Physics 72\\n\" +\r\n\t\t\t\t\t\"Fermionic Condensates 64\\n\" +\r\n\t\t\t\t\t\"Ion Thruster 42\\n\" +\r\n\t\t\t\t\t\"Fusion Reactor Unit 32\\n\" +\r\n\t\t\t\t\t\"R.A.M.- Starship Tech 9\\n\" +\r\n\t\t\t\t\t\"Procurer 1\";\r\n\t\ttest(eveListFormat, 29);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testCopyDefault() {\r\n\t\tString plainFormat = \"Shopping List for: \\n\" +\r\n\t\t\t\t\t\"Material - Quantity\\n\" +\r\n\t\t\t\t\t\"10000MN Afterburner I (ME: 0, NumBPs: 1) - 1\\n\" +\r\n\t\t\t\t\t\"Location: Jita IV - Moon 4 - Caldari Navy Assembly Plant\\n\" +\r\n\t\t\t\t\t\"Algos (ME: 0, NumBPs: 1) - 1\\n\" +\r\n\t\t\t\t\t\"Location: Jita IV - Moon 4 - Caldari Navy Assembly Plant\\n\" +\r\n\t\t\t\t\t\"Skiff (ME: 2, NumBPs: 1) - 1\\n\" +\r\n\t\t\t\t\t\"Location: Jita IV - Moon 4 - Caldari Navy Assembly Plant\\n\" +\r\n\t\t\t\t\t\"Skiff (ME: 2, NumBPs: 2) - 2\\n\" +\r\n\t\t\t\t\t\"Location: Jita IV - Moon 4 - Caldari Navy Assembly Plant\\n\" +\r\n\t\t\t\t\t\"\\n\" +\r\n\t\t\t\t\t\"Estimated Invention Materials: \\n\" +\r\n\t\t\t\t\t\"Material - Quantity\\n\" +\r\n\t\t\t\t\t\"Datacore - Gallentean Starship Engineering - 72\\n\" +\r\n\t\t\t\t\t\"Datacore - Laser Physics - 72\\n\" +\r\n\t\t\t\t\t\"\\n\" +\r\n\t\t\t\t\t\"Total Volume of Materials: 14.40 m3\\n\" +\r\n\t\t\t\t\t\"Total Cost of Materials: 6,049,975.68 ISK\\n\" +\r\n\t\t\t\t\t\"\\n\" +\r\n\t\t\t\t\t\"Build Items List: \\n\" +\r\n\t\t\t\t\t\"Material - Quantity\\n\" +\r\n\t\t\t\t\t\"Photon Microprocessor (ME: 0, NumBPs: 1) - 2,058\\n\" +\r\n\t\t\t\t\t\"Crystalline Carbonide Armor Plate (ME: 0, NumBPs: 1) - 2,058\\n\" +\r\n\t\t\t\t\t\"Oscillator Capacitor Unit (ME: 0, NumBPs: 1) - 412\\n\" +\r\n\t\t\t\t\t\"Magnetometric Sensor Cluster (ME: 0, NumBPs: 1) - 155\\n\" +\r\n\t\t\t\t\t\"Pulse Shield Emitter (ME: 0, NumBPs: 1) - 155\\n\" +\r\n\t\t\t\t\t\"Ion Thruster (ME: 0, NumBPs: 1) - 42\\n\" +\r\n\t\t\t\t\t\"Fusion Reactor Unit (ME: 0, NumBPs: 1) - 32\\n\" +\r\n\t\t\t\t\t\"R.A.M.- Starship Tech (ME: 0, NumBPs: 1) - 9\\n\" +\r\n\t\t\t\t\t\"Procurer (ME: 0, NumBPs: 1) - 1\\n\" +\r\n\t\t\t\t\t\"\\n\" +\r\n\t\t\t\t\t\"Buy Materials List: \\n\" +\r\n\t\t\t\t\t\"Material - Quantity\\n\" +\r\n\t\t\t\t\t\"Tritanium - 2,932,280\\n\" +\r\n\t\t\t\t\t\"Pyerite - 915,005\\n\" +\r\n\t\t\t\t\t\"Mexallon - 190,244\\n\" +\r\n\t\t\t\t\t\"Crystalline Carbonide - 144,316\\n\" +\r\n\t\t\t\t\t\"Isogen - 63,721\\n\" +\r\n\t\t\t\t\t\"Sylramic Fibers - 24,033\\n\" +\r\n\t\t\t\t\t\"Phenolic Composites - 12,474\\n\" +\r\n\t\t\t\t\t\"Nocxium - 8,837\\n\" +\r\n\t\t\t\t\t\"Photonic Metamaterials - 4,940\\n\" +\r\n\t\t\t\t\t\"Nanotransistors - 4,683\\n\" +\r\n\t\t\t\t\t\"Fullerides - 4,532\\n\" +\r\n\t\t\t\t\t\"Zydrine - 3,364\\n\" +\r\n\t\t\t\t\t\"Crystalline Carbonide Armor Plate - 2,058\\n\" +\r\n\t\t\t\t\t\"Photon Microprocessor - 2,058\\n\" +\r\n\t\t\t\t\t\"Megacyte - 1,618\\n\" +\r\n\t\t\t\t\t\"Oscillator Capacitor Unit - 412\\n\" +\r\n\t\t\t\t\t\"Hypersynaptic Fibers - 310\\n\" +\r\n\t\t\t\t\t\"Construction Blocks - 206\\n\" +\r\n\t\t\t\t\t\"Ferrogel - 197\\n\" +\r\n\t\t\t\t\t\"Pulse Shield Emitter - 155\\n\" +\r\n\t\t\t\t\t\"Magnetometric Sensor Cluster - 155\\n\" +\r\n\t\t\t\t\t\"Morphite - 148\\n\" +\r\n\t\t\t\t\t\"Fermionic Condensates - 64\\n\" +\r\n\t\t\t\t\t\"Ion Thruster - 42\\n\" +\r\n\t\t\t\t\t\"Fusion Reactor Unit - 32\\n\" +\r\n\t\t\t\t\t\"R.A.M.- Starship Tech - 9\\n\" +\r\n\t\t\t\t\t\"Procurer - 1\\n\" +\r\n\t\t\t\t\t\"\\n\" +\r\n\t\t\t\t\t\"Total Volume of Materials: 62,519.89 m3\\n\" +\r\n\t\t\t\t\t\"Total Cost of Materials: 273,043,780.28 ISK\\n\" +\r\n\t\t\t\t\t\"Total Volume of Built Item(s): 359,000.00 m3\";\r\n\t\ttest(plainFormat, 32);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testFileDefault() {\r\n\t\tString plainFormat = \"Buy List\\n\" +\r\n\t\t\t\t\t\"Material|Quantity|Cost Per Item|Min Sell|Max Buy|Buy Type|Total m3|Isk/m3|TotalCost\\n\" +\r\n\t\t\t\t\t\"Tritanium|2932280.00|0.00|0.00|0.00|Unknown|29322.80|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Pyerite|915005.00|0.00|0.00|0.00|Unknown|9150.05|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Mexallon|190244.00|0.00|0.00|0.00|Unknown|1902.44|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Crystalline Carbonide|144316.00|0.00|0.00|0.00|Unknown|1443.16|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Isogen|63721.00|0.00|0.00|0.00|Unknown|637.21|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Sylramic Fibers|24033.00|0.00|0.00|0.00|Unknown|1201.65|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Phenolic Composites|12474.00|0.00|0.00|0.00|Unknown|2494.80|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Nocxium|8837.00|0.00|0.00|0.00|Unknown|88.37|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Photonic Metamaterials|4940.00|0.00|0.00|0.00|Unknown|4940.00|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Nanotransistors|4683.00|0.00|0.00|0.00|Unknown|1170.75|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Fullerides|4532.00|0.00|0.00|0.00|Unknown|679.80|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Zydrine|3364.00|0.00|0.00|0.00|Unknown|33.64|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Crystalline Carbonide Armor Plate|2058.00|0.00|0.00|0.00|Unknown|2058.00|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Photon Microprocessor|2058.00|0.00|0.00|0.00|Unknown|2058.00|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Megacyte|1618.00|0.00|0.00|0.00|Unknown|16.18|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Oscillator Capacitor Unit|412.00|0.00|0.00|0.00|Unknown|412.00|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Hypersynaptic Fibers|310.00|0.00|0.00|0.00|Unknown|186.00|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Construction Blocks|206.00|0.00|0.00|0.00|Unknown|309.00|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Ferrogel|197.00|0.00|0.00|0.00|Unknown|197.00|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Pulse Shield Emitter|155.00|0.00|0.00|0.00|Unknown|155.00|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Magnetometric Sensor Cluster|155.00|0.00|0.00|0.00|Unknown|155.00|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Morphite|148.00|0.00|0.00|0.00|Unknown|1.48|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Datacore - Gallentean Starship Engineering|72.00|0.00|0.00|0.00|Unknown|7.20|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Datacore - Laser Physics|72.00|0.00|0.00|0.00|Unknown|7.20|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Fermionic Condensates|64.00|0.00|0.00|0.00|Unknown|83.20|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Ion Thruster|42.00|0.00|0.00|0.00|Unknown|42.00|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Fusion Reactor Unit|32.00|0.00|0.00|0.00|Unknown|32.00|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"R.A.M.- Starship Tech|9.00|0.00|0.00|0.00|Unknown|0.36|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"Procurer|1.00|0.00|0.00|0.00|Unknown|3750.00|0.00|0.00\\n\" +\r\n\t\t\t\t\t\"\\n\" +\r\n\t\t\t\t\t\"Build List\\n\" +\r\n\t\t\t\t\t\"Build Item|Quantity|ME|TE|Facility Location|Facility Type|IncludeActivityCost|IncludeActivityTime|IncludeUsageCost\\n\" +\r\n\t\t\t\t\t\"Photon Microprocessor|2058.00|0|0|Jita IV - Moon 4 - Caldari Navy Assembly Plant|Station|False|False|True\\n\" +\r\n\t\t\t\t\t\"Crystalline Carbonide Armor Plate|2058.00|0|0|Jita IV - Moon 4 - Caldari Navy Assembly Plant|Station|False|False|True\\n\" +\r\n\t\t\t\t\t\"Oscillator Capacitor Unit|412.00|0|0|Jita IV - Moon 4 - Caldari Navy Assembly Plant|Station|False|False|True\\n\" +\r\n\t\t\t\t\t\"Magnetometric Sensor Cluster|155.00|0|0|Jita IV - Moon 4 - Caldari Navy Assembly Plant|Station|False|False|True\\n\" +\r\n\t\t\t\t\t\"Pulse Shield Emitter|155.00|0|0|Jita IV - Moon 4 - Caldari Navy Assembly Plant|Station|False|False|True\\n\" +\r\n\t\t\t\t\t\"Ion Thruster|42.00|0|0|Jita IV - Moon 4 - Caldari Navy Assembly Plant|Station|False|False|True\\n\" +\r\n\t\t\t\t\t\"Fusion Reactor Unit|32.00|0|0|Jita IV - Moon 4 - Caldari Navy Assembly Plant|Station|False|False|True\\n\" +\r\n\t\t\t\t\t\"R.A.M.- Starship Tech|9.00|0|0|Jita IV - Moon 4 - Caldari Navy Assembly Plant|Station|False|False|True\\n\" +\r\n\t\t\t\t\t\"Procurer|1.00|0|0|Jita IV - Moon 4 - Caldari Navy Assembly Plant|Station|False|False|True\\n\" +\r\n\t\t\t\t\t\"\\n\" +\r\n\t\t\t\t\t\"Item List\\n\" +\r\n\t\t\t\t\t\"Item|Quantity|ME|NumBps|Build Type|Decryptor|Relic|Facility Type|Location|IgnoredInvention|IgnoredMinerals|IgnoredT1BaseItem|IncludeActivityCost|IncludeActivityTime|IncludeUsageCost\\n\" +\r\n\t\t\t\t\t\"10000MN Afterburner I|1.00|0|1|Raw Mats|||Station|Jita IV - Moon 4 - Caldari Navy Assembly Plant|0|0|0|0|0|0\\n\" +\r\n\t\t\t\t\t\"Algos|1.00|0|1|Raw Mats|||Station|Jita IV - Moon 4 - Caldari Navy Assembly Plant|0|0|0|0|0|0\\n\" +\r\n\t\t\t\t\t\"Skiff|1.00|2|1|Raw Mats|None||Station|Jita IV - Moon 4 - Caldari Navy Assembly Plant|0|0|0|0|0|0\\n\" +\r\n\t\t\t\t\t\"Skiff|2.00|2|2|Components|None||Station|Jita IV - Moon 4 - Caldari Navy Assembly Plant|0|0|0|0|0|0\";\r\n\t\ttest(plainFormat, 32);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testCopyCsv() {\r\n\t\tString csvFormat = \"Shopping List for: \\n\" +\r\n\t\t\t\t\t\"Material, Quantity, ME, NumBPs, Decryptor/Relic, Cost Per Item, Total Cost, Location\\n\" +\r\n\t\t\t\t\t\"10000MN Afterburner I, 1, 0, 1, None, 29789997.31, 29789997.31, Jita IV - Moon 4 - Caldari Navy Assembly Plant\\n\" +\r\n\t\t\t\t\t\"Algos, 1, 0, 1, None, 1305999.39, 1305999.39, Jita IV - Moon 4 - Caldari Navy Assembly Plant\\n\" +\r\n\t\t\t\t\t\"Skiff, 1, 2, 1, None, 168493998.99, 168493998.99, Jita IV - Moon 4 - Caldari Navy Assembly Plant\\n\" +\r\n\t\t\t\t\t\"Skiff, 2, 2, 2, None, 168493998.99, 336987997.98, Jita IV - Moon 4 - Caldari Navy Assembly Plant\\n\" +\r\n\t\t\t\t\t\"\\n\" +\r\n\t\t\t\t\t\"Estimated Invention Materials: \\n\" +\r\n\t\t\t\t\t\"Material, Quantity, Cost Per Item, Total Cost, Location\\n\" +\r\n\t\t\t\t\t\"Datacore - Gallentean Starship Engineering, 72, 43008.93, 3096642.96\\n\" +\r\n\t\t\t\t\t\"Datacore - Laser Physics, 72, 41018.51, 2953332.72\\n\" +\r\n\t\t\t\t\t\"\\n\" +\r\n\t\t\t\t\t\"Total Volume of Materials:,14.4,m3\\n\" +\r\n\t\t\t\t\t\"Total Cost of Materials:,6049975.68,ISK\\n\" +\r\n\t\t\t\t\t\"\\n\" +\r\n\t\t\t\t\t\"Build Items List: \\n\" +\r\n\t\t\t\t\t\"Material, Quantity, ME, NumBPs, Cost Per Item, Total Cost, Location\\n\" +\r\n\t\t\t\t\t\"Photon Microprocessor, 2058, 0, 1, 43749.11, 90035668.38\\n\" +\r\n\t\t\t\t\t\"Crystalline Carbonide Armor Plate, 2058, 0, 1, 11497.94, 23662760.52\\n\" +\r\n\t\t\t\t\t\"Oscillator Capacitor Unit, 412, 0, 1, 44884.19, 18492286.28\\n\" +\r\n\t\t\t\t\t\"Magnetometric Sensor Cluster, 155, 0, 1, 28997, 4494535\\n\" +\r\n\t\t\t\t\t\"Pulse Shield Emitter, 155, 0, 1, 46997.76, 7284652.8\\n\" +\r\n\t\t\t\t\t\"Ion Thruster, 42, 0, 1, 47899.58, 2011782.36\\n\" +\r\n\t\t\t\t\t\"Fusion Reactor Unit, 32, 0, 1, 161498.09, 5167938.88\\n\" +\r\n\t\t\t\t\t\"R.A.M.- Starship Tech, 9, 0, 1, 299.99, 2699.91\\n\" +\r\n\t\t\t\t\t\"Procurer, 1, 0, 1, 18494999, 18494999\\n\" +\r\n\t\t\t\t\t\"\\n\" +\r\n\t\t\t\t\t\"Buy Materials List: \\n\" +\r\n\t\t\t\t\t\"Material, Quantity, Cost Per Item, Total Cost, Location\\n\" +\r\n\t\t\t\t\t\"Tritanium, 2932280, 2, 5864560\\n\" +\r\n\t\t\t\t\t\"Pyerite, 915005, 4, 3660020\\n\" +\r\n\t\t\t\t\t\"Mexallon, 190244, 37.01, 7040930.44\\n\" +\r\n\t\t\t\t\t\"Crystalline Carbonide, 144316, 106.09, 15310484.44\\n\" +\r\n\t\t\t\t\t\"Isogen, 63721, 40, 2548840\\n\" +\r\n\t\t\t\t\t\"Sylramic Fibers, 24033, 199.14, 4785931.62\\n\" +\r\n\t\t\t\t\t\"Phenolic Composites, 12474, 1117.39, 13938322.86\\n\" +\r\n\t\t\t\t\t\"Nocxium, 8837, 247.14, 2183976.18\\n\" +\r\n\t\t\t\t\t\"Photonic Metamaterials, 4940, 6000.01, 29640049.4\\n\" +\r\n\t\t\t\t\t\"Nanotransistors, 4683, 1260.78, 5904232.74\\n\" +\r\n\t\t\t\t\t\"Fullerides, 4532, 350.52, 1588556.64\\n\" +\r\n\t\t\t\t\t\"Zydrine, 3364, 521.91, 1755705.24\\n\" +\r\n\t\t\t\t\t\"Crystalline Carbonide Armor Plate, 2058, 11497.94, 23662760.52\\n\" +\r\n\t\t\t\t\t\"Photon Microprocessor, 2058, 43749.11, 90035668.38\\n\" +\r\n\t\t\t\t\t\"Megacyte, 1618, 136.02, 220080.36\\n\" +\r\n\t\t\t\t\t\"Oscillator Capacitor Unit, 412, 44884.19, 18492286.28\\n\" +\r\n\t\t\t\t\t\"Hypersynaptic Fibers, 310, 4000, 1240000\\n\" +\r\n\t\t\t\t\t\"Construction Blocks, 206, 8104.33, 1669491.98\\n\" +\r\n\t\t\t\t\t\"Ferrogel, 197, 16881.57, 3325669.29\\n\" +\r\n\t\t\t\t\t\"Pulse Shield Emitter, 155, 46997.76, 7284652.8\\n\" +\r\n\t\t\t\t\t\"Magnetometric Sensor Cluster, 155, 28997, 4494535\\n\" +\r\n\t\t\t\t\t\"Morphite, 148, 6700.01, 991601.48\\n\" +\r\n\t\t\t\t\t\"Fermionic Condensates, 64, 27000.07, 1728004.48\\n\" +\r\n\t\t\t\t\t\"Ion Thruster, 42, 47899.58, 2011782.36\\n\" +\r\n\t\t\t\t\t\"Fusion Reactor Unit, 32, 161498.09, 5167938.88\\n\" +\r\n\t\t\t\t\t\"R.A.M.- Starship Tech, 9, 299.99, 2699.91\\n\" +\r\n\t\t\t\t\t\"Procurer, 1, 18494999, 18494999\\n\" +\r\n\t\t\t\t\t\"\\n\" +\r\n\t\t\t\t\t\"Total Volume of Materials:,62519.89,m3\\n\" +\r\n\t\t\t\t\t\"Total Cost of Materials:,273043780.28,ISK\\n\" +\r\n\t\t\t\t\t\"Total Volume of Built Item(s):,359000,m3\";\r\n\t\ttest(csvFormat, 32);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testFileCsv() {\r\n\t\tString csvFormat = \"Buy List\\n\" +\r\n\t\t\t\t\t\"Material,Quantity,Cost Per Item,Min Sell,Max Buy,Buy Type,Total m3,Isk/m3,TotalCost\\n\" +\r\n\t\t\t\t\t\"Tritanium,2932280.00,0.00,0.00,0.00,Unknown,29322.80,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Pyerite,915005.00,0.00,0.00,0.00,Unknown,9150.05,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Mexallon,190244.00,0.00,0.00,0.00,Unknown,1902.44,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Crystalline Carbonide,144316.00,0.00,0.00,0.00,Unknown,1443.16,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Isogen,63721.00,0.00,0.00,0.00,Unknown,637.21,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Sylramic Fibers,24033.00,0.00,0.00,0.00,Unknown,1201.65,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Phenolic Composites,12474.00,0.00,0.00,0.00,Unknown,2494.80,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Nocxium,8837.00,0.00,0.00,0.00,Unknown,88.37,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Photonic Metamaterials,4940.00,0.00,0.00,0.00,Unknown,4940.00,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Nanotransistors,4683.00,0.00,0.00,0.00,Unknown,1170.75,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Fullerides,4532.00,0.00,0.00,0.00,Unknown,679.80,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Zydrine,3364.00,0.00,0.00,0.00,Unknown,33.64,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Crystalline Carbonide Armor Plate,2058.00,0.00,0.00,0.00,Unknown,2058.00,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Photon Microprocessor,2058.00,0.00,0.00,0.00,Unknown,2058.00,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Megacyte,1618.00,0.00,0.00,0.00,Unknown,16.18,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Oscillator Capacitor Unit,412.00,0.00,0.00,0.00,Unknown,412.00,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Hypersynaptic Fibers,310.00,0.00,0.00,0.00,Unknown,186.00,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Construction Blocks,206.00,0.00,0.00,0.00,Unknown,309.00,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Ferrogel,197.00,0.00,0.00,0.00,Unknown,197.00,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Pulse Shield Emitter,155.00,0.00,0.00,0.00,Unknown,155.00,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Magnetometric Sensor Cluster,155.00,0.00,0.00,0.00,Unknown,155.00,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Morphite,148.00,0.00,0.00,0.00,Unknown,1.48,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Datacore - Gallentean Starship Engineering,72.00,0.00,0.00,0.00,Unknown,7.20,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Datacore - Laser Physics,72.00,0.00,0.00,0.00,Unknown,7.20,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Fermionic Condensates,64.00,0.00,0.00,0.00,Unknown,83.20,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Ion Thruster,42.00,0.00,0.00,0.00,Unknown,42.00,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Fusion Reactor Unit,32.00,0.00,0.00,0.00,Unknown,32.00,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"R.A.M.- Starship Tech,9.00,0.00,0.00,0.00,Unknown,0.36,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"Procurer,1.00,0.00,0.00,0.00,Unknown,3750.00,0.00,0.00\\n\" +\r\n\t\t\t\t\t\"\\n\" +\r\n\t\t\t\t\t\"Build List\\n\" +\r\n\t\t\t\t\t\"Build Item,Quantity,ME,TE,Facility Location,Facility Type,IncludeActivityCost,IncludeActivityTime,IncludeUsageCost\\n\" +\r\n\t\t\t\t\t\"Photon Microprocessor,2058.00,0,0,Jita IV - Moon 4 - Caldari Navy Assembly Plant,Station,False,False,True\\n\" +\r\n\t\t\t\t\t\"Crystalline Carbonide Armor Plate,2058.00,0,0,Jita IV - Moon 4 - Caldari Navy Assembly Plant,Station,False,False,True\\n\" +\r\n\t\t\t\t\t\"Oscillator Capacitor Unit,412.00,0,0,Jita IV - Moon 4 - Caldari Navy Assembly Plant,Station,False,False,True\\n\" +\r\n\t\t\t\t\t\"Magnetometric Sensor Cluster,155.00,0,0,Jita IV - Moon 4 - Caldari Navy Assembly Plant,Station,False,False,True\\n\" +\r\n\t\t\t\t\t\"Pulse Shield Emitter,155.00,0,0,Jita IV - Moon 4 - Caldari Navy Assembly Plant,Station,False,False,True\\n\" +\r\n\t\t\t\t\t\"Ion Thruster,42.00,0,0,Jita IV - Moon 4 - Caldari Navy Assembly Plant,Station,False,False,True\\n\" +\r\n\t\t\t\t\t\"Fusion Reactor Unit,32.00,0,0,Jita IV - Moon 4 - Caldari Navy Assembly Plant,Station,False,False,True\\n\" +\r\n\t\t\t\t\t\"R.A.M.- Starship Tech,9.00,0,0,Jita IV - Moon 4 - Caldari Navy Assembly Plant,Station,False,False,True\\n\" +\r\n\t\t\t\t\t\"Procurer,1.00,0,0,Jita IV - Moon 4 - Caldari Navy Assembly Plant,Station,False,False,True\\n\" +\r\n\t\t\t\t\t\"\\n\" +\r\n\t\t\t\t\t\"Item List\\n\" +\r\n\t\t\t\t\t\"Item,Quantity,ME,NumBps,Build Type,Decryptor,Relic,Facility Type,Location,IgnoredInvention,IgnoredMinerals,IgnoredT1BaseItem,IncludeActivityCost,IncludeActivityTime,IncludeUsageCost\\n\" +\r\n\t\t\t\t\t\"10000MN Afterburner I,1.00,0,1,Raw Mats,,,Station,Jita IV - Moon 4 - Caldari Navy Assembly Plant,0,0,0,0,0,0\\n\" +\r\n\t\t\t\t\t\"Algos,1.00,0,1,Raw Mats,,,Station,Jita IV - Moon 4 - Caldari Navy Assembly Plant,0,0,0,0,0,0\\n\" +\r\n\t\t\t\t\t\"Skiff,1.00,2,1,Raw Mats,None,,Station,Jita IV - Moon 4 - Caldari Navy Assembly Plant,0,0,0,0,0,0\\n\" +\r\n\t\t\t\t\t\"Skiff,2.00,2,2,Components,None,,Station,Jita IV - Moon 4 - Caldari Navy Assembly Plant,0,0,0,0,0,0\";\r\n\t\ttest(csvFormat, 32);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testCopySSV() {\r\n\t\tString ssvFormat = \"Shopping List for: \\n\" +\r\n\t\t\t\t\t\"Material; Quantity; ME; NumBPs; Decryptor/Relic; Cost Per Item; Total Cost; Location\\n\" +\r\n\t\t\t\t\t\"10000MN Afterburner I; 1; 0; 1; None; 29789997,31; 29789997,31; Jita IV - Moon 4 - Caldari Navy Assembly Plant\\n\" +\r\n\t\t\t\t\t\"Algos; 1; 0; 1; None; 1305999,39; 1305999,39; Jita IV - Moon 4 - Caldari Navy Assembly Plant\\n\" +\r\n\t\t\t\t\t\"Skiff; 1; 2; 1; None; 168493998,99; 168493998,99; Jita IV - Moon 4 - Caldari Navy Assembly Plant\\n\" +\r\n\t\t\t\t\t\"Skiff; 2; 2; 2; None; 168493998,99; 336987997,98; Jita IV - Moon 4 - Caldari Navy Assembly Plant\\n\" +\r\n\t\t\t\t\t\"\\n\" +\r\n\t\t\t\t\t\"Estimated Invention Materials: \\n\" +\r\n\t\t\t\t\t\"Material; Quantity; Cost Per Item; Total Cost; Location\\n\" +\r\n\t\t\t\t\t\"Datacore - Gallentean Starship Engineering; 72; 43008,93; 3096642,96\\n\" +\r\n\t\t\t\t\t\"Datacore - Laser Physics; 72; 41018,51; 2953332,72\\n\" +\r\n\t\t\t\t\t\"\\n\" +\r\n\t\t\t\t\t\"Total Volume of Materials:;14,4;m3\\n\" +\r\n\t\t\t\t\t\"Total Cost of Materials:;6049975,68;ISK\\n\" +\r\n\t\t\t\t\t\"\\n\" +\r\n\t\t\t\t\t\"Build Items List: \\n\" +\r\n\t\t\t\t\t\"Material; Quantity; ME; NumBPs; Cost Per Item; Total Cost; Location\\n\" +\r\n\t\t\t\t\t\"Photon Microprocessor; 2058; 0; 1; 43749,11; 90035668,38\\n\" +\r\n\t\t\t\t\t\"Crystalline Carbonide Armor Plate; 2058; 0; 1; 11497,94; 23662760,52\\n\" +\r\n\t\t\t\t\t\"Oscillator Capacitor Unit; 412; 0; 1; 44884,19; 18492286,28\\n\" +\r\n\t\t\t\t\t\"Magnetometric Sensor Cluster; 155; 0; 1; 28997; 4494535\\n\" +\r\n\t\t\t\t\t\"Pulse Shield Emitter; 155; 0; 1; 46997,76; 7284652,8\\n\" +\r\n\t\t\t\t\t\"Ion Thruster; 42; 0; 1; 47899,58; 2011782,36\\n\" +\r\n\t\t\t\t\t\"Fusion Reactor Unit; 32; 0; 1; 161498,09; 5167938,88\\n\" +\r\n\t\t\t\t\t\"R.A.M.- Starship Tech; 9; 0; 1; 299,99; 2699,91\\n\" +\r\n\t\t\t\t\t\"Procurer; 1; 0; 1; 18494999; 18494999\\n\" +\r\n\t\t\t\t\t\"\\n\" +\r\n\t\t\t\t\t\"Buy Materials List: \\n\" +\r\n\t\t\t\t\t\"Material; Quantity; Cost Per Item; Total Cost; Location\\n\" +\r\n\t\t\t\t\t\"Tritanium; 2932280; 2; 5864560\\n\" +\r\n\t\t\t\t\t\"Pyerite; 915005; 4; 3660020\\n\" +\r\n\t\t\t\t\t\"Mexallon; 190244; 37,01; 7040930,44\\n\" +\r\n\t\t\t\t\t\"Crystalline Carbonide; 144316; 106,09; 15310484,44\\n\" +\r\n\t\t\t\t\t\"Isogen; 63721; 40; 2548840\\n\" +\r\n\t\t\t\t\t\"Sylramic Fibers; 24033; 199,14; 4785931,62\\n\" +\r\n\t\t\t\t\t\"Phenolic Composites; 12474; 1117,39; 13938322,86\\n\" +\r\n\t\t\t\t\t\"Nocxium; 8837; 247,14; 2183976,18\\n\" +\r\n\t\t\t\t\t\"Photonic Metamaterials; 4940; 6000,01; 29640049,4\\n\" +\r\n\t\t\t\t\t\"Nanotransistors; 4683; 1260,78; 5904232,74\\n\" +\r\n\t\t\t\t\t\"Fullerides; 4532; 350,52; 1588556,64\\n\" +\r\n\t\t\t\t\t\"Zydrine; 3364; 521,91; 1755705,24\\n\" +\r\n\t\t\t\t\t\"Crystalline Carbonide Armor Plate; 2058; 11497,94; 23662760,52\\n\" +\r\n\t\t\t\t\t\"Photon Microprocessor; 2058; 43749,11; 90035668,38\\n\" +\r\n\t\t\t\t\t\"Megacyte; 1618; 136,02; 220080,36\\n\" +\r\n\t\t\t\t\t\"Oscillator Capacitor Unit; 412; 44884,19; 18492286,28\\n\" +\r\n\t\t\t\t\t\"Hypersynaptic Fibers; 310; 4000; 1240000\\n\" +\r\n\t\t\t\t\t\"Construction Blocks; 206; 8104,33; 1669491,98\\n\" +\r\n\t\t\t\t\t\"Ferrogel; 197; 16881,57; 3325669,29\\n\" +\r\n\t\t\t\t\t\"Pulse Shield Emitter; 155; 46997,76; 7284652,8\\n\" +\r\n\t\t\t\t\t\"Magnetometric Sensor Cluster; 155; 28997; 4494535\\n\" +\r\n\t\t\t\t\t\"Morphite; 148; 6700,01; 991601,48\\n\" +\r\n\t\t\t\t\t\"Fermionic Condensates; 64; 27000,07; 1728004,48\\n\" +\r\n\t\t\t\t\t\"Ion Thruster; 42; 47899,58; 2011782,36\\n\" +\r\n\t\t\t\t\t\"Fusion Reactor Unit; 32; 161498,09; 5167938,88\\n\" +\r\n\t\t\t\t\t\"R.A.M.- Starship Tech; 9; 299,99; 2699,91\\n\" +\r\n\t\t\t\t\t\"Procurer; 1; 18494999; 18494999\\n\" +\r\n\t\t\t\t\t\"\\n\" +\r\n\t\t\t\t\t\"Total Volume of Materials:;62519,89;m3\\n\" +\r\n\t\t\t\t\t\"Total Cost of Materials:;273043780,28;ISK\\n\" +\r\n\t\t\t\t\t\"Total Volume of Built Item(s):;359000;m3\";\r\n\t\ttest(ssvFormat, 32);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testFileSSV() {\r\n\t\tString ssvFormat = \"Buy List\\n\" +\r\n\t\t\t\t\t\"Material;Quantity;Cost Per Item;Min Sell;Max Buy;Buy Type;Total m3;Isk/m3;TotalCost\\n\" +\r\n\t\t\t\t\t\"Tritanium;2.932.280;0,00;0,00;0,00;Unknown;29.322,80;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Pyerite;915.005;0,00;0,00;0,00;Unknown;9.150,05;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Mexallon;190.244;0,00;0,00;0,00;Unknown;1.902,44;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Crystalline Carbonide;144.316;0,00;0,00;0,00;Unknown;1.443,16;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Isogen;63.721;0,00;0,00;0,00;Unknown;637,21;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Sylramic Fibers;24.033;0,00;0,00;0,00;Unknown;1.201,65;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Phenolic Composites;12.474;0,00;0,00;0,00;Unknown;2.494,80;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Nocxium;8.837;0,00;0,00;0,00;Unknown;88,37;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Photonic Metamaterials;4.940;0,00;0,00;0,00;Unknown;4.940,00;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Nanotransistors;4.683;0,00;0,00;0,00;Unknown;1.170,75;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Fullerides;4.532;0,00;0,00;0,00;Unknown;679,80;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Zydrine;3.364;0,00;0,00;0,00;Unknown;33,64;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Crystalline Carbonide Armor Plate;2.058;0,00;0,00;0,00;Unknown;2.058,00;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Photon Microprocessor;2.058;0,00;0,00;0,00;Unknown;2.058,00;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Megacyte;1.618;0,00;0,00;0,00;Unknown;16,18;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Oscillator Capacitor Unit;412;0,00;0,00;0,00;Unknown;412,00;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Hypersynaptic Fibers;310;0,00;0,00;0,00;Unknown;186,00;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Construction Blocks;206;0,00;0,00;0,00;Unknown;309,00;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Ferrogel;197;0,00;0,00;0,00;Unknown;197,00;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Pulse Shield Emitter;155;0,00;0,00;0,00;Unknown;155,00;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Magnetometric Sensor Cluster;155;0,00;0,00;0,00;Unknown;155,00;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Morphite;148;0,00;0,00;0,00;Unknown;1,48;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Datacore - Gallentean Starship Engineering;72;0,00;0,00;0,00;Unknown;7,20;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Datacore - Laser Physics;72;0,00;0,00;0,00;Unknown;7,20;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Fermionic Condensates;64;0,00;0,00;0,00;Unknown;83,20;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Ion Thruster;42;0,00;0,00;0,00;Unknown;42,00;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Fusion Reactor Unit;32;0,00;0,00;0,00;Unknown;32,00;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"R.A.M.- Starship Tech;9;0,00;0,00;0,00;Unknown;0,36;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"Procurer;1;0,00;0,00;0,00;Unknown;3.750,00;0,00;0,00\\n\" +\r\n\t\t\t\t\t\"\\n\" +\r\n\t\t\t\t\t\"Build List\\n\" +\r\n\t\t\t\t\t\"Build Item;Quantity;ME;TE;Facility Location; Facility Type;IncludeActivityCost;IncludeActivityTime;IncludeUsageCost\\n\" +\r\n\t\t\t\t\t\"Photon Microprocessor;2.058;0;0;Jita IV - Moon 4 - Caldari Navy Assembly Plant;Station;False;False;True\\n\" +\r\n\t\t\t\t\t\"Crystalline Carbonide Armor Plate;2.058;0;0;Jita IV - Moon 4 - Caldari Navy Assembly Plant;Station;False;False;True\\n\" +\r\n\t\t\t\t\t\"Oscillator Capacitor Unit;412;0;0;Jita IV - Moon 4 - Caldari Navy Assembly Plant;Station;False;False;True\\n\" +\r\n\t\t\t\t\t\"Magnetometric Sensor Cluster;155;0;0;Jita IV - Moon 4 - Caldari Navy Assembly Plant;Station;False;False;True\\n\" +\r\n\t\t\t\t\t\"Pulse Shield Emitter;155;0;0;Jita IV - Moon 4 - Caldari Navy Assembly Plant;Station;False;False;True\\n\" +\r\n\t\t\t\t\t\"Ion Thruster;42;0;0;Jita IV - Moon 4 - Caldari Navy Assembly Plant;Station;False;False;True\\n\" +\r\n\t\t\t\t\t\"Fusion Reactor Unit;32;0;0;Jita IV - Moon 4 - Caldari Navy Assembly Plant;Station;False;False;True\\n\" +\r\n\t\t\t\t\t\"R.A.M.- Starship Tech;9;0;0;Jita IV - Moon 4 - Caldari Navy Assembly Plant;Station;False;False;True\\n\" +\r\n\t\t\t\t\t\"Procurer;1;0;0;Jita IV - Moon 4 - Caldari Navy Assembly Plant;Station;False;False;True\\n\" +\r\n\t\t\t\t\t\"\\n\" +\r\n\t\t\t\t\t\"Item List\\n\" +\r\n\t\t\t\t\t\"Item;Quantity;ME;NumBps;Build Type;Decryptor;Relic;Facility Type;Location;IgnoredInvention;IgnoredMinerals;IgnoredT1BaseItem;IncludeActivityCost;IncludeActivityTime;IncludeUsageCost\\n\" +\r\n\t\t\t\t\t\"10000MN Afterburner I;1;0;1;Raw Mats;;;Station;Jita IV - Moon 4 - Caldari Navy Assembly Plant;0;0;0;0;0;0\\n\" +\r\n\t\t\t\t\t\"Algos;1;0;1;Raw Mats;;;Station;Jita IV - Moon 4 - Caldari Navy Assembly Plant;0;0;0;0;0;0\\n\" +\r\n\t\t\t\t\t\"Skiff;1;2;1;Raw Mats;None;;Station;Jita IV - Moon 4 - Caldari Navy Assembly Plant;0;0;0;0;0;0\\n\" +\r\n\t\t\t\t\t\"Skiff;2;2;2;Components;None;;Station;Jita IV - Moon 4 - Caldari Navy Assembly Plant;0;0;0;0;0;0\";\r\n\t\ttest(ssvFormat, 32);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testUserInput() {\r\n\t\tString ssvFormat = \"Buy Materials List:\\n\" +\r\n\t\t\t\t\t\"Material, Quantity, Cost Per Item, Total Cost\\n\" +\r\n\t\t\t\t\t\"Drone Transceiver, 1520, 270001.07, 410401626.4\\n\" +\r\n\t\t\t\t\t\"Telemetry Processor, 1520, 25010, 38015200\\n\" +\r\n\t\t\t\t\t\"Micro Circuit, 1520, 8201.02, 12465550.4\\n\" +\r\n\t\t\t\t\t\"Trigger Unit, 1520, 200603.29, 304917000.8\\n\" +\r\n\t\t\t\t\t\"Current Pump, 1520, 32004, 48646080\\n\" +\r\n\t\t\t\t\t\"Lorentz Fluid, 600, 103941.74, 62365044\\n\" +\r\n\t\t\t\t\t\"Power Conduit, 600, 663535.68, 398121408\\n\" +\r\n\t\t\t\t\t\"Nanite Compound, 32, 341239, 10919648\\n\" +\r\n\t\t\t\t\t\"Single-crystal Superalloy I-beam, 32, 112135.02, 3588320.64\\n\" +\r\n\t\t\t\t\t\"Intact Armor Plates, 4, 3041000.02, 12164000.08\\n\" +\r\n\t\t\t\t\t\"R.A.M.- Ammunition Tech, 2, 193.89, 387.78\";\r\n\t\tMap<String, Double> data = test(ssvFormat, 11, false);\r\n\t\tassertEquals(1520, data.get(\"Drone Transceiver\"), 0.1);\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/local/text/ImportShoppingListTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.local.text;\r\n\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport static org.junit.Assert.assertEquals;\r\nimport static org.junit.Assert.assertNotNull;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class ImportShoppingListTest extends TestUtil {\r\n\r\n\tprivate final ImportShoppingList importShoppingList = new ImportShoppingList();\r\n\r\n\t@Test\r\n\tpublic void testDomi() {\r\n/*\r\nMy Domi\r\n\r\n1x 100MN Afterburner II\r\n1x Dominix\r\n1x Capacitor Power Relay II\r\n10x Hammerhead II\r\n5x Ogre II\r\n4x Dual 250mm Prototype Gauss Gun\r\n4x Cap Recharger II\r\n5x Warden II\r\n2x Large Armor Repairer II\r\n5x Hobgoblin II\r\n1x Armor Kinetic Hardener II\r\n3x Large Capacitor Control Circuit I\r\n3x Armor Explosive Hardener II\r\n\r\nTotal m3 to be hauled: 50.665,00\r\nEstimated market value: 225.404.694,17 isk\r\n*/\r\n\t\tString text = \"My Domi\\n\" +\r\n\t\t\t\"\\n\" +\r\n\t\t\t\"1x 100MN Afterburner II\\n\" +\r\n\t\t\t\"1x Dominix\\n\" +\r\n\t\t\t\"1x Capacitor Power Relay II\\n\" +\r\n\t\t\t\"10x Hammerhead II\\n\" +\r\n\t\t\t\"5x Ogre II\\n\" +\r\n\t\t\t\"4x Dual 250mm Prototype Gauss Gun\\n\" +\r\n\t\t\t\"4x Cap Recharger II\\n\" +\r\n\t\t\t\"5x Warden II\\n\" +\r\n\t\t\t\"2x Large Armor Repairer II\\n\" +\r\n\t\t\t\"5x Hobgoblin II\\n\" +\r\n\t\t\t\"1x Kinetic Armor Hardener II\\n\" +\r\n\t\t\t\"3x Large Capacitor Control Circuit I\\n\" +\r\n\t\t\t\"3x Explosive Armor Hardener II\\n\" +\r\n\t\t\t\"\\n\" +\r\n\t\t\t\"Total m3 to be hauled: 50.665,00\\n\" +\r\n\t\t\t\"Estimated market value: 225.404.694,17 isk\";\r\n\t\tMap<String, Double> data = test(text, 13);\r\n\t\tassertEquals(10, data.get(\"Hammerhead II\"), 0.1);\r\n\t}\r\n\r\n\tprivate Map<String, Double> test(String text, int size) {\r\n\t\tMap<String, Double> data = importShoppingList.doImport(text);\r\n\t\tassertNotNull(data);\r\n\t\tassertEquals(size, data.size());\r\n\t\tassertEquals(data.size(), importShoppingList.importText(text).size());\r\n\t\treturn data;\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/online/EveRefGetterOnlineTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.online;\r\n\r\nimport ch.qos.logback.classic.Level;\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\nimport java.util.Collections;\r\nimport java.util.Comparator;\r\nimport java.util.List;\r\nimport java.util.Set;\r\nimport java.util.TreeSet;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.sde.IndustryMaterial;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.ReprocessedMaterial;\r\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\r\nimport net.nikr.eve.jeveasset.io.esi.EsiItemsGetter;\r\nimport net.nikr.eve.jeveasset.io.online.EveRefGetter.EveRefActivity;\r\nimport net.nikr.eve.jeveasset.io.online.EveRefGetter.EveRefBlueprint;\r\nimport net.nikr.eve.jeveasset.io.online.EveRefGetter.EveRefType;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\nimport net.nikr.eve.jeveasset.io.shared.ThreadWoker;\r\nimport static org.hamcrest.CoreMatchers.equalTo;\r\nimport static org.hamcrest.CoreMatchers.notNullValue;\r\nimport static org.hamcrest.Matchers.closeTo;\r\nimport org.junit.AfterClass;\r\nimport org.junit.BeforeClass;\r\nimport org.junit.ClassRule;\r\nimport org.junit.Test;\r\nimport org.junit.rules.ErrorCollector;\r\n\r\n\r\npublic class EveRefGetterOnlineTest extends TestUtil {\r\n\r\n\tprivate static final long MAX_RUNS = 500;\r\n\tprivate static final double DELTA = 0.0000001;\r\n\r\n\t@BeforeClass\r\n\tpublic static void setUpClass() {\r\n\t\tsetLoggingLevel(Level.ERROR);\r\n\t}\r\n\r\n\t@AfterClass\r\n\tpublic static void tearDownClass() {\r\n\t\tsetLoggingLevel(Level.INFO);\r\n\t}\r\n\r\n\t@ClassRule\r\n\tpublic static ErrorCollector collector = new ErrorCollector();\r\n\r\n\t/**\r\n\t * Download test\r\n\t * @param args\r\n\t * @throws java.lang.InterruptedException\r\n\t */\r\n\tpublic static void main(final String[] args) throws InterruptedException {\r\n\t\tinitLog();\r\n\t\tsetUpClass();\r\n\t\tEveRefGetterOnlineTest test = new EveRefGetterOnlineTest();\r\n\t\ttest.testDownloadItemsThreads();\r\n\t\tSystem.exit(0);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testDownloadItemsThreads() throws InterruptedException {\r\n\t\tList<Download> updates = new ArrayList<>();\r\n\t\tSet<Integer> typeIDs = new TreeSet<>();\r\n\t\tList<Integer> all = new ArrayList<>(StaticData.get().getItems().keySet());\r\n\t\tif (MAX_RUNS > 0) {\r\n\t\t\tCollections.shuffle(all); //Randomize\r\n\t\t\ttypeIDs.addAll(all.subList(0, (int)Math.min(MAX_RUNS, all.size())));\r\n\t\t} else {\r\n\t\t\ttypeIDs.addAll(all);\r\n\t\t}\r\n\t\t//Wrong data in SDE 2024-10-30\r\n\t\ttypeIDs.remove(81144); //PriceBase\r\n\t\ttypeIDs.remove(84271); //Tech: Limited Time\r\n\t\ttypeIDs.remove(84272); //Tech: Limited Time\r\n\t\ttypeIDs.remove(84273); //Tech: Limited Time\r\n\t\tfor (int i = 84297; i <= 84328; i++) {\r\n\t\t\ttypeIDs.remove(i); //Tech: Limited Time\r\n\t\t}\r\n\t\ttypeIDs.remove(85062); //Tech: Faction/ReprocessedMaterial\r\n\t\ttypeIDs.remove(85229); //Tech: Faction/ReprocessedMaterial\r\n\t\ttypeIDs.remove(85236); //Tech: Faction/ReprocessedMaterial\r\n\t\ttypeIDs.remove(85279); //Tech: Limited Time\r\n\t\ttypeIDs.remove(85747); //ReprocessedMaterial\r\n\t\ttypeIDs.remove(85748); //BlueprintTypeIDs/ReprocessedMaterial\r\n\t\ttypeIDs.remove(85749); //ProductTypeID\r\n\t\ttypeIDs.remove(85750); //ProductTypeID/Faction/ReprocessedMaterial\r\n\t\ttypeIDs.remove(85751); //ProductTypeID/Faction\r\n\t\ttypeIDs.remove(85890); //Tech: Premium\r\n\t\ttypeIDs.remove(85891); //Tech: Premium\r\n\t\ttypeIDs.remove(85892); //Tech: Premium\r\n\t\ttypeIDs.remove(85893); //Tech: Premium\r\n\t\ttypeIDs.remove(85894); //Tech: Premium\r\n\t\ttypeIDs.remove(85895); //Tech: Premium\r\n\t\ttypeIDs.remove(85896); //Tech: Premium\r\n\t\ttypeIDs.remove(85897); //Tech: Premium\r\n\t\ttypeIDs.remove(85929); //Tech: Premium\r\n\t\ttypeIDs.remove(85930); //Tech: Premium\r\n\t\ttypeIDs.remove(85931); //Tech: Premium\r\n\t\ttypeIDs.remove(85932); //Tech: Premium\r\n\t\ttypeIDs.remove(86149); //Tech: Premium\r\n\t\ttypeIDs.remove(86150); //Tech: Premium\r\n\t\ttypeIDs.remove(86151); //Tech: Premium\r\n\t\ttypeIDs.remove(86152); //Tech: Premium\r\n\t\ttypeIDs.remove(86153); //Tech: Premium\r\n\t\ttypeIDs.remove(86154); //Tech: Premium\r\n\t\ttypeIDs.remove(86155); //Tech: Premium\r\n\t\ttypeIDs.remove(86156); //Tech: Premium\r\n\r\n\t\tfor (int typeID : typeIDs) {\r\n\t\t\tupdates.add(new Download(typeID));\r\n\t\t}\r\n\t\t//Download\r\n\t\tThreadWoker.start(null, updates, false);\r\n\t\t//Test\r\n\t\tfor (Download download : updates) {\r\n\t\t\tdownload.test();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static class Download implements Runnable {\r\n\r\n\t\tprivate final int typeID;\r\n\t\tprivate final Item itemSDE;\r\n\t\tprivate Item itemEveRef;\r\n\r\n\t\tpublic Download(int typeID) {\r\n\t\t\tthis.typeID = typeID;\r\n\t\t\tthis.itemSDE = ApiIdConverter.getItem(typeID);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic void run() {\r\n\t\t\tEsiItemsGetter esiItemsGetter = new EsiItemsGetter(typeID);\r\n\t\t\tesiItemsGetter.run();\r\n\t\t\titemEveRef = esiItemsGetter.getItem();\r\n\t\t}\r\n\r\n\t\tpublic void test() {\r\n\t\t\ttestItem(itemSDE, itemEveRef);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testMultiBlueprints() {\r\n\t\ttest(22925);\r\n\t\ttest(37161);\r\n\t}\r\n\r\n\tpublic void test(final int typeID) {\r\n\t\tItem itemSDE = ApiIdConverter.getItem(typeID);\r\n\t\tEsiItemsGetter esiItemsGetter = new EsiItemsGetter(typeID);\r\n\t\tesiItemsGetter.run();\r\n\t\tItem itemEveRef = esiItemsGetter.getItem();\r\n\t\ttestItem(itemSDE, itemEveRef);\r\n\t}\r\n\r\n\tprivate static void testItem(Item itemSDE, Item itemEveRef) {\r\n\t\tString msg = \"TypeID: \" + itemSDE.getTypeID();\r\n\t\tassertNotNull(msg + \" itemSDE is null\", itemSDE);\r\n\t\tassertNotNull(msg + \" itemEveRef is null\", itemEveRef);\r\n\t\tassertEquals(msg + \" TypeID\", itemSDE.getTypeID(), itemEveRef.getTypeID());\r\n\t\tif (itemEveRef.getPriceBase() != 0 && itemEveRef.getPriceBase() != -1) {\r\n\t\t\tassertEquals(msg + \" PriceBase\", itemSDE.getPriceBase(), itemEveRef.getPriceBase(), DELTA);\r\n\t\t}\r\n\t\tassertEquals(msg + \" Volume\", itemSDE.getVolume(), itemEveRef.getVolume(), DELTA);\r\n\t\tassertEquals(msg + \" VolumePackaged\", itemSDE.getVolumePackaged(), itemEveRef.getVolumePackaged(), DELTA);\r\n\t\tassertEquals(msg + \" Capacity\", itemSDE.getCapacity(), itemEveRef.getCapacity(), DELTA);\r\n\t\tassertEquals(msg + \" Meta\", itemSDE.getMeta(), itemEveRef.getMeta());\r\n\t\tassertEquals(msg + \" MarketGroup\", itemSDE.isMarketGroup(), itemEveRef.isMarketGroup());\r\n\t\tassertEquals(msg + \" PiMaterial\", itemSDE.isPiMaterial(), itemEveRef.isPiMaterial());\r\n\t\tassertEquals(msg + \" Portion\", itemSDE.getPortion(), itemEveRef.getPortion());\r\n\t\tassertEquals(msg + \" ProductTypeID\", itemSDE.getProductTypeID(), itemEveRef.getProductTypeID());\r\n\t\ttestLists(msg + \" BlueprintTypeIDs size\", itemSDE.getBlueprintTypeIDs(), itemEveRef.getBlueprintTypeIDs(), new Tester<Integer>() {\r\n\t\t\t@Override\r\n\t\t\tpublic void test(Integer sde, Integer eveRef) {\r\n\t\t\t\tassertEquals(msg + \" BlueprintTypeIDs\", sde, eveRef);\r\n\t\t\t}\r\n\t\t});\r\n\t\tassertEquals(msg + \" ProductQuantity\", itemSDE.getProductQuantity(), itemEveRef.getProductQuantity());\r\n\t\tassertEquals(msg + \" Blueprint\", itemSDE.isBlueprint(), itemEveRef.isBlueprint());\r\n\t\tassertEquals(msg + \" Formula\", itemSDE.isFormula(), itemEveRef.isFormula());\r\n\t\t/*\r\n\t\t//Don't test dynamic values\r\n\t\tassertEquals(msg, itemSDE.getPriceReprocessed(), itemEveRef.getPriceReprocessed(), DELTA);\r\n\t\tassertEquals(msg, itemSDE.getPriceReprocessedMax(), itemEveRef.getPriceReprocessedMax(), DELTA);\r\n\t\tassertEquals(msg, itemSDE.getPriceManufacturing(), itemEveRef.getPriceManufacturing(), DELTA);\r\n\t\t*/\r\n\t\tif (itemSDE.getTypeName().endsWith(\".type\")) {\r\n\t\t\tSystem.out.println(\"Ignorering: \" + itemSDE.getTypeName());\r\n\t\t} else {\r\n\t\t\tassertEquals(msg + \" TypeName\", itemSDE.getTypeName(), itemEveRef.getTypeName());\r\n\t\t}\r\n\t\tassertEquals(msg + \" Group\", itemSDE.getGroup(), itemEveRef.getGroup());\r\n\t\tassertEquals(msg + \" Category\", itemSDE.getCategory(), itemEveRef.getCategory());\r\n\t\tassertEquals(msg + \" Tech\", itemSDE.getTech(), itemEveRef.getTech());\r\n\t\tassertEquals(msg + \" itemSDE Version\", null, itemSDE.getVersion());\r\n\t\tassertEquals(msg + \" itemEveRef Version\", itemEveRef.getVersion(), EsiItemsGetter.ESI_ITEM_VERSION);\r\n\t\tassertEquals(msg + \" Slot\", itemSDE.getSlot(), itemEveRef.getSlot());\r\n\t\tassertEquals(msg + \" ChargeSize\", itemSDE.getChargeSize(), itemEveRef.getChargeSize());\r\n\t\ttestLists(msg + \" ReprocessedMaterial\", itemSDE.getReprocessedMaterial(), itemEveRef.getReprocessedMaterial(), new Comparator<ReprocessedMaterial>() {\r\n\t\t\t@Override\r\n\t\t\tpublic int compare(ReprocessedMaterial o1, ReprocessedMaterial o2) {\r\n\t\t\t\treturn Integer.compare(o1.getTypeID(), o2.getTypeID());\r\n\t\t\t}\r\n\t\t} , new Tester<ReprocessedMaterial>() {\r\n\t\t\t@Override\r\n\t\t\tpublic void test(ReprocessedMaterial sde, ReprocessedMaterial eveRef) {\r\n\t\t\t\tassertEquals(msg + \" ReprocessedMaterial TypeID\", sde.getTypeID(), eveRef.getTypeID());\r\n\t\t\t\tassertEquals(msg + \" ReprocessedMaterial Quantity\", sde.getQuantity(), eveRef.getQuantity());\r\n\t\t\t\tassertEquals(msg + \" ReprocessedMaterial PortionSize\", sde.getPortionSize(), eveRef.getPortionSize());\r\n\t\t\t}\r\n\t\t});\r\n\t\ttestLists(msg, itemSDE.getManufacturingMaterials(), itemEveRef.getManufacturingMaterials(), new Comparator<IndustryMaterial>() {\r\n\t\t\t@Override\r\n\t\t\tpublic int compare(IndustryMaterial o1, IndustryMaterial o2) {\r\n\t\t\t\treturn Integer.compare(o1.getTypeID(), o2.getTypeID());\r\n\t\t\t}\r\n\t\t} , new Tester<IndustryMaterial>() {\r\n\t\t\t@Override\r\n\t\t\tpublic void test(IndustryMaterial sde, IndustryMaterial eveRef) {\r\n\t\t\t\tassertEquals(msg + \" ManufacturingMaterials TypeID\", sde.getTypeID(), eveRef.getTypeID());\r\n\t\t\t\tassertEquals(msg + \" ManufacturingMaterials Quantity\", sde.getQuantity(), eveRef.getQuantity());\r\n\t\t\t}\r\n\t\t});\r\n\t\ttestLists(msg, itemSDE.getReactionMaterials(), itemEveRef.getReactionMaterials(), new Comparator<IndustryMaterial>() {\r\n\t\t\t@Override\r\n\t\t\tpublic int compare(IndustryMaterial o1, IndustryMaterial o2) {\r\n\t\t\t\treturn Integer.compare(o1.getTypeID(), o2.getTypeID());\r\n\t\t\t}\r\n\t\t} , new Tester<IndustryMaterial>() {\r\n\t\t\t@Override\r\n\t\t\tpublic void test(IndustryMaterial sde, IndustryMaterial eveRef) {\r\n\t\t\t\tassertEquals(msg + \" ReactionMaterials TypeID\", sde.getTypeID(), eveRef.getTypeID());\r\n\t\t\t\tassertEquals(msg + \" ReactionMaterials Quantity\", sde.getQuantity(), eveRef.getQuantity());\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tpublic static void assertNotNull(String message, Object object) {\r\n\t\tcollector.checkThat(message, object, notNullValue());\r\n\t}\r\n\r\n\tpublic static void assertNotNull(Object object) {\r\n\t\tcollector.checkThat(object, notNullValue());\r\n\t}\r\n\r\n\tpublic static void assertEquals(String message, Object expected, Object actual) {\r\n\t\tcollector.checkThat(message, expected, equalTo(actual));\r\n\t}\r\n\r\n\tpublic static void assertEquals(Object expected, Object actual) {\r\n\t\tcollector.checkThat(expected, equalTo(actual));\r\n\t}\r\n\r\n\tpublic static void assertEquals(String message, double expected, double actual, double delta) {\r\n\t\tcollector.checkThat(message, expected, closeTo(actual, delta));\r\n\t}\r\n\r\n\tpublic static void assertEquals(double expected, double actual, double delta) {\r\n\t\tcollector.checkThat(expected, closeTo(actual, delta));\r\n\t}\r\n\r\n\r\n\tprivate static <T> void testLists(String msg, List<T> sde, List<T> eveRef, Comparator<T> comparator, Tester<T> tester) {\r\n\t\tCollections.sort(eveRef, comparator);\r\n\t\tCollections.sort(sde, comparator);\r\n\t\ttestSortedLists(msg, sde, eveRef, tester);\r\n\t}\r\n\r\n\tprivate static <T extends Comparable<? super T>> void testLists(String msg, Collection<T> sde, Collection<T> eveRef, Tester<T> tester) {\r\n\t\ttestLists(msg, new ArrayList<>(sde), new ArrayList<>(eveRef), tester);\r\n\t}\r\n\r\n\tprivate static <T extends Comparable<? super T>> void testLists(String msg, List<T> sde, List<T> eveRef, Tester<T> tester) {\r\n\t\tCollections.sort(eveRef);\r\n\t\tCollections.sort(sde);\r\n\t\ttestSortedLists(msg, sde, eveRef, tester);\r\n\t}\r\n\r\n\tprivate static <T> void testSortedLists(String msg, List<T> sde, List<T> eveRef, Tester<T> tester) {\r\n\t\tassertEquals(msg, sde.size(), eveRef.size());\r\n\t\tfor (int i = 0; i < sde.size() && i < eveRef.size(); i++) {\r\n\t\t\ttester.test(sde.get(i), eveRef.get(i));\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static interface Tester<T> {\r\n\t\tpublic void test(T sde, T eveRef);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testGetBlueprint() {\r\n\t\tEveRefBlueprint blueprint = EveRefGetter.getBlueprint(999);\r\n\t\tassertEquals((Long)10L, blueprint.getMaxProductionLimit());\r\n\t\tassertEquals((Long)999L, blueprint.getBlueprintTypeID());\r\n\r\n\t\tEveRefActivity copying = blueprint.getCopying();\r\n\t\tassertEquals((Long)14400L, copying.getTime());\r\n\r\n\t\tEveRefActivity invention = blueprint.getInvention();\r\n\t\tassertEquals(2, invention.getMaterials().size());\r\n\t\tassertEquals((Integer)32, invention.getMaterials().get(\"20410\").getQuantity());\r\n\t\tassertEquals((Integer)20410, invention.getMaterials().get(\"20410\").getTypeID());\r\n\t\tassertEquals(1, invention.getProducts().size());\r\n\t\tassertEquals(0.22, invention.getProducts().get(\"22431\").getProbability(), 0.0001);\r\n\t\tassertEquals((Integer)1, invention.getProducts().get(\"22431\").getQuantity());\r\n\t\tassertEquals((Integer)22431, invention.getProducts().get(\"22431\").getTypeID());\r\n\t\tassertEquals((Long)192000L, invention.getTime());\r\n\t\tassertEquals((Long)1L, invention.getRequiredSkills().get(\"11450\"));\r\n\t\tassertEquals((Long)1L, invention.getRequiredSkills().get(\"11452\"));\r\n\t\tassertEquals((Long)1L, invention.getRequiredSkills().get(\"23121\"));\r\n\t\t\r\n\t\tEveRefActivity manufacturing = blueprint.getManufacturing();\r\n\t\tassertEquals(10, manufacturing.getMaterials().size());\r\n\t\tassertEquals((Integer)8000000, manufacturing.getMaterials().get(\"34\").getQuantity());\r\n\t\tassertEquals((Integer)34, manufacturing.getMaterials().get(\"34\").getTypeID());\r\n\t\tassertEquals(1, manufacturing.getProducts().size());\r\n\t\tassertEquals((Integer)1, manufacturing.getProducts().get(\"645\").getQuantity());\r\n\t\tassertEquals((Integer)645, manufacturing.getProducts().get(\"645\").getTypeID());\r\n\t\tassertEquals((Long)18000L, manufacturing.getTime());\r\n\t\tassertEquals((Long)1L, manufacturing.getRequiredSkills().get(\"3380\"));\r\n\r\n\t\tEveRefActivity me = blueprint.getResearchMaterial();\r\n\t\tassertEquals((Long)6300L, me.getTime());\r\n\t\tEveRefActivity te = blueprint.getResearchTime();\r\n\t\tassertEquals((Long)6300L, te.getTime());\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testGetType() {\r\n\t\tEveRefType type = EveRefGetter.getType(645);\r\n\r\n\t\tassertEquals((Long)645L, type.getTypeID());\r\n\t\tassertEquals((Double)153900000.0, type.getBasePrice());\r\n\t\tassertEquals((Double)750.0, type.getCapacity());\r\n\t\tassertEquals(8, type.getDescription().size());\r\n\t\tassertNotNull(type.getDescription().get(\"en\"));\r\n\t\tassertNotNull(type.getDogmaAttributes());\r\n\t\tassertEquals(92, type.getDogmaAttributes().size());\r\n\t\tassertNotNull(type.getDogmaAttributes().get(\"3\"));\r\n\t\tassertEquals((Long)3L, type.getDogmaAttributes().get(\"3\").getAttributeID());\r\n\t\tassertEquals((Double)0.0, type.getDogmaAttributes().get(\"3\").getValue(), DELTA);\r\n\t\tassertNotNull(type.getDogmaEffects());\r\n\t\tassertEquals(5, type.getDogmaEffects().size());\r\n\t\tassertNotNull(type.getDogmaEffects().get(\"2186\"));\r\n\t\tassertEquals((Long)2186L, type.getDogmaEffects().get(\"2186\").getEffectID());\r\n\t\tassertEquals(false, type.getDogmaEffects().get(\"2186\").isDefault());\r\n\t\tassertEquals((Long)500004L, type.getFactionID());\r\n\t\tassertEquals((Long)318L, type.getGraphicID());\r\n\t\tassertEquals((Long)27L, type.getGroupID());\r\n\t\t//assertEquals(LONG_VALUE, type.getIconID());\r\n\t\tassertEquals((Long)81L, type.getMarketGroupID());\r\n\t\tassertEquals((Double)100250000.0, type.getMass());\r\n\t\tassertEquals(5, type.getMasteries().size());\r\n\t\tassertEquals(6, type.getMasteries().get(\"0\").size());\r\n\t\tassertEquals((Long)96L, type.getMasteries().get(\"0\").get(0));\r\n\t\tassertEquals((Integer)1, type.getMetaGroupID());\r\n\t\tassertEquals(8, type.getName().size());\r\n\t\tassertEquals(\"Dominix\", type.getName().get(\"en\"));\r\n\t\tassertEquals((Double)50000.0, type.getPackagedVolume());\r\n\t\tassertEquals((Integer)1, type.getPortionSize());\r\n\t\tassertEquals(true, type.isPublished());\r\n\t\tassertEquals((Long)8L, type.getRaceID());\r\n\t\tassertEquals((Double)250.0, type.getRadius());\r\n\t\tassertEquals(\"gallentebase\", type.getSofFactionName());\r\n\t\t//assertEquals((Long)0L, type.getSofMaterialSetID());\r\n\t\tassertEquals((Long)20072L, type.getSoundID());\r\n\t\tassertNotNull(type.getTraits());\r\n\t\tassertNotNull(type.getTraits().getMiscBonuses());\r\n\t\tassertEquals(0, type.getTraits().getMiscBonuses().size());\r\n\t\t/*\r\n\t\tassertNotNull(type.getTraits().getMiscBonuses().get(MAP_VALUE));\r\n\t\tassertEquals(DOUBLE_VALUE, type.getTraits().getMiscBonuses().get(MAP_VALUE).getBonus(), DELTA);\r\n\t\tassertNotNull(type.getTraits().getMiscBonuses().get(MAP_VALUE).getBonusText());\r\n\t\tassertEquals(STRING_VALUE, type.getTraits().getMiscBonuses().get(MAP_VALUE).getBonusText().get(MAP_VALUE));\r\n\t\tassertEquals(LONG_VALUE, type.getTraits().getMiscBonuses().get(MAP_VALUE).getImportance());\r\n\t\tassertEquals(LONG_VALUE, type.getTraits().getMiscBonuses().get(MAP_VALUE).getUnitID());\r\n\t\tassertEquals(BOOLEAN_VALUE, type.getTraits().getMiscBonuses().get(MAP_VALUE).isPositive());\r\n\t\t*/\r\n\t\tassertEquals(3, type.getTraits().getRoleBonuses().size());\t\r\n\t\tassertNotNull(type.getTraits().getRoleBonuses().get(\"1\"));\r\n\t\tassertEquals((Double)100.0, type.getTraits().getRoleBonuses().get(\"1\").getBonus(), DELTA);\r\n\t\tassertNotNull(type.getTraits().getRoleBonuses().get(\"1\").getBonusText());\r\n\t\tassertNotNull(type.getTraits().getRoleBonuses().get(\"1\").getBonusText().get(\"en\"));\r\n\t\tassertEquals((Long)1L, type.getTraits().getRoleBonuses().get(\"1\").getImportance());\r\n\t\tassertEquals((Long)105L, type.getTraits().getRoleBonuses().get(\"1\").getUnitID());\r\n\t\t//assertEquals(BOOLEAN_VALUE, type.getTraits().getRoleBonuses().get(\"1\").isPositive());\r\n\t\tassertNotNull(type.getTraits().getTypes());  //Map 1\r\n\t\tassertEquals(1, type.getTraits().getTypes().size());\r\n\t\tassertNotNull(type.getTraits().getTypes().get(\"3336\")); //Map 2\r\n\t\tassertEquals(2, type.getTraits().getTypes().get(\"3336\").size());\r\n\t\tassertNotNull(type.getTraits().getTypes().get(\"3336\").get(\"1\")); //RoleBonus\r\n\t\tassertNotNull(type.getTraits().getTypes().get(\"3336\").get(\"1\").getBonus());\r\n\t\tassertEquals((Double)10.0, type.getTraits().getTypes().get(\"3336\").get(\"1\").getBonus(), DELTA);\r\n\t\tassertNotNull(type.getTraits().getTypes().get(\"3336\").get(\"1\").getBonusText());\r\n\t\tassertNotNull(type.getTraits().getTypes().get(\"3336\").get(\"1\").getBonusText().get(\"en\"));\r\n\t\tassertEquals((Long)1L, type.getTraits().getTypes().get(\"3336\").get(\"1\").getImportance());\r\n\t\tassertEquals((Long)105L, type.getTraits().getTypes().get(\"3336\").get(\"1\").getUnitID());\r\n\t\t//assertEquals(BOOLEAN_VALUE, type.getTraits().getTypes().get(\"3336\").get(\"1\").isPositive());\r\n\t\t//assertEquals(LONG_VALUE, type.getVariationParentTypeID());\r\n\t\tassertEquals((Double)454500.0, type.getVolume());\r\n\t\tassertNotNull(type.getRequiredSkills());\r\n\t\tassertEquals(1, type.getRequiredSkills().size());\r\n\t\tassertEquals((Long)1L, type.getRequiredSkills().get(\"3336\"));\r\n\t\t//assertEquals(ARRAY_LENGTH, type.getApplicableMutaplasmidTypeIDS().size());\r\n\t\t//assertEquals(LONG_VALUE, type.getApplicableMutaplasmidTypeIDS().get(0));\r\n\t\t//assertEquals(ARRAY_LENGTH, type.getCreatingMutaplasmidTypeIDS().size());\r\n\t\t//assertEquals(LONG_VALUE, type.getCreatingMutaplasmidTypeIDS().get(0));\r\n\t\tassertNotNull(type.getTypeVariations());\r\n\t\tassertEquals(3, type.getTypeVariations().size());\r\n\t\tassertEquals(1, type.getTypeVariations().get(\"1\").size());\r\n\t\tassertEquals((Long)645L, type.getTypeVariations().get(\"1\").get(0));\r\n\t\t/*\r\n\t\tassertNotNull(type.getOreVariations());\r\n\t\tassertEquals(MAP_LENGTH, type.getOreVariations().size());\r\n\t\tassertEquals(ARRAY_LENGTH, type.getOreVariations().get(MAP_VALUE).size());\r\n\t\tassertEquals(LONG_VALUE, type.getOreVariations().get(MAP_VALUE).get(0));\r\n\t\t*/\r\n\t\t//assertEquals(BOOLEAN_VALUE, type.isOre());\r\n\t\tassertNotNull(type.getProducedByBlueprints());\r\n\t\tassertEquals(1, type.getProducedByBlueprints().size());\r\n\t\tassertNotNull(type.getProducedByBlueprints().get(\"999\"));\r\n\t\tassertEquals(\"manufacturing\", type.getProducedByBlueprints().get(\"999\").getBlueprintActivity());\r\n\t\tassertEquals((Integer)999, type.getProducedByBlueprints().get(\"999\").getBlueprintTypeID());\r\n\t\tassertNotNull(type.getTypeMaterials());\r\n\t\tassertEquals(7, type.getTypeMaterials().size());\r\n\t\tassertNotNull(type.getTypeMaterials().get(\"34\"));\r\n\t\tassertEquals((Integer)34, type.getTypeMaterials().get(\"34\").getMaterialTypeID());\r\n\t\tassertEquals((Integer)8000000, type.getTypeMaterials().get(\"34\").getQuantity());\r\n\t\t//assertEquals(ARRAY_LENGTH, type.getCanFitTypes().size());\r\n\t\t//assertEquals(LONG_VALUE, type.getCanFitTypes().get(0));\r\n\t\t//assertEquals(ARRAY_LENGTH, type.getCanBeFittedWithTypes().size());\r\n\t\t//assertEquals(LONG_VALUE, type.getCanBeFittedWithTypes().get(0));\r\n\t\t//assertEquals(BOOLEAN_VALUE, type.isSkill());\r\n\t\t//assertEquals(BOOLEAN_VALUE, type.isMutaplasmid());\r\n\t\t//assertEquals(BOOLEAN_VALUE, type.isDynamicItem());\r\n\t\t//assertEquals(BOOLEAN_VALUE, type.isBlueprint());\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/online/EveRefGetterTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.online;\r\n\r\nimport ch.qos.logback.classic.Level;\r\nimport com.google.gson.Gson;\r\nimport com.google.gson.GsonBuilder;\r\nimport com.google.gson.reflect.TypeToken;\r\nimport java.io.File;\r\nimport java.io.FileNotFoundException;\r\nimport java.io.FileReader;\r\nimport java.lang.reflect.Field;\r\nimport java.net.URISyntaxException;\r\nimport java.net.URL;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport static net.nikr.eve.jeveasset.TestUtil.initLog;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.io.online.EveRefGetter.EveRefActivity;\r\nimport net.nikr.eve.jeveasset.io.online.EveRefGetter.EveRefBlueprint;\r\nimport net.nikr.eve.jeveasset.io.online.EveRefGetter.EveRefType;\r\nimport org.junit.AfterClass;\r\nimport static org.junit.Assert.assertEquals;\r\nimport static org.junit.Assert.assertNotNull;\r\nimport static org.junit.Assert.assertNull;\r\nimport static org.junit.Assert.assertTrue;\r\nimport static org.junit.Assert.fail;\r\nimport org.junit.Test;\r\nimport org.junit.BeforeClass;\r\n\r\n\r\npublic class EveRefGetterTest extends TestUtil {\r\n\r\n\tprivate static final Gson GSON = new GsonBuilder().create();\r\n\tprivate static final Long LONG_VALUE = 10L;\r\n\tprivate static final Integer INTEGER_VALUE = 10;\r\n\tprivate static final Double DOUBLE_VALUE = 10.0;\r\n\tprivate static final String STRING_VALUE = \"string\";\r\n\tprivate static final boolean BOOLEAN_VALUE = true;\r\n\tprivate static final String MAP_VALUE = \"additionalProp1\";\r\n\tprivate static final int MAP_LENGTH = 3;\r\n\tprivate static final int ARRAY_LENGTH = 1;\r\n\tprivate static final double DELTA = 0.0000001;\r\n\r\n\t@BeforeClass\r\n\tpublic static void setUpClass() {\r\n\t\tsetLoggingLevel(Level.ERROR);\r\n\t}\r\n\r\n\t@AfterClass\r\n\tpublic static void tearDownClass() {\r\n\t\tsetLoggingLevel(Level.INFO);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testBlueprintModel() throws URISyntaxException, FileNotFoundException {\r\n\t\tURL resource = EveRefGetterTest.class.getResource(\"/everefblueprint.json\");\r\n\t\tFile file  = new File(resource.toURI());\r\n\t\tFileReader input = new FileReader(file);\r\n\t\tEveRefBlueprint blueprint = GSON.fromJson(input, new TypeToken<EveRefBlueprint>() {}.getType());\r\n\r\n\t\tassertEquals(LONG_VALUE, blueprint.getMaxProductionLimit());\r\n\t\tassertEquals(LONG_VALUE, blueprint.getBlueprintTypeID());\r\n\r\n\t\tEveRefActivity activity = blueprint.getActivities().get(MAP_VALUE);\r\n\t\tassertEquals(LONG_VALUE, activity.getTime());\r\n\t\tassertEquals(MAP_LENGTH, activity.getMaterials().size());\r\n\t\tassertEquals(INTEGER_VALUE, activity.getMaterials().get(MAP_VALUE).getQuantity());\r\n\t\tassertEquals(INTEGER_VALUE, activity.getMaterials().get(MAP_VALUE).getTypeID());\r\n\t\tassertEquals(MAP_LENGTH, activity.getProducts().size());\r\n\t\tassertEquals(DOUBLE_VALUE, activity.getProducts().get(MAP_VALUE).getProbability(), DELTA);\r\n\t\tassertEquals(INTEGER_VALUE, activity.getProducts().get(MAP_VALUE).getQuantity());\r\n\t\tassertEquals(INTEGER_VALUE, activity.getProducts().get(MAP_VALUE).getTypeID());\r\n\t\tassertEquals(LONG_VALUE, activity.getRequiredSkills().get(MAP_VALUE));\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testItemModel() throws FileNotFoundException, URISyntaxException {\r\n\t\tURL resource = EveRefGetterTest.class.getResource(\"/evereftype.json\");\r\n\t\tFile file  = new File(resource.toURI());\r\n\t\tFileReader input = new FileReader(file);\r\n\t\tEveRefType type = GSON.fromJson(input, new TypeToken<EveRefType>() {}.getType());\r\n\r\n\t\tassertEquals(LONG_VALUE, type.getTypeID());\r\n\t\tassertEquals(DOUBLE_VALUE, type.getBasePrice());\r\n\t\tassertEquals(DOUBLE_VALUE, type.getCapacity());\r\n\t\tassertEquals(MAP_LENGTH, type.getDescription().size());\r\n\t\tassertEquals(STRING_VALUE, type.getDescription().get(MAP_VALUE));\r\n\t\tassertNotNull(type.getDogmaAttributes());\r\n\t\tassertEquals(MAP_LENGTH, type.getDogmaAttributes().size());\r\n\t\tassertNotNull(type.getDogmaAttributes().get(MAP_VALUE));\r\n\t\tassertEquals(LONG_VALUE, type.getDogmaAttributes().get(MAP_VALUE).getAttributeID());\r\n\t\tassertEquals(DOUBLE_VALUE, type.getDogmaAttributes().get(MAP_VALUE).getValue(), DELTA);\r\n\t\tassertNotNull(type.getDogmaEffects());\r\n\t\tassertEquals(MAP_LENGTH, type.getDogmaEffects().size());\r\n\t\tassertNotNull(type.getDogmaEffects().get(MAP_VALUE));\r\n\t\tassertEquals(LONG_VALUE, type.getDogmaEffects().get(MAP_VALUE).getEffectID());\r\n\t\tassertEquals(BOOLEAN_VALUE, type.getDogmaEffects().get(MAP_VALUE).isDefault());\r\n\t\tassertEquals(LONG_VALUE, type.getFactionID());\r\n\t\tassertEquals(LONG_VALUE, type.getGraphicID());\r\n\t\tassertEquals(LONG_VALUE, type.getGroupID());\r\n\t\tassertEquals(LONG_VALUE, type.getIconID());\r\n\t\tassertEquals(LONG_VALUE, type.getMarketGroupID());\r\n\t\tassertEquals(DOUBLE_VALUE, type.getMass());\r\n\t\tassertEquals(MAP_LENGTH, type.getMasteries().size());\r\n\t\tassertEquals(ARRAY_LENGTH, type.getMasteries().get(MAP_VALUE).size());\r\n\t\tassertEquals(LONG_VALUE, type.getMasteries().get(MAP_VALUE).get(0));\r\n\t\tassertEquals(INTEGER_VALUE, type.getMetaGroupID());\r\n\t\tassertEquals(MAP_LENGTH, type.getName().size());\r\n\t\tassertEquals(STRING_VALUE, type.getName().get(MAP_VALUE));\r\n\t\tassertEquals(DOUBLE_VALUE, type.getPackagedVolume());\r\n\t\tassertEquals(INTEGER_VALUE, type.getPortionSize());\r\n\t\tassertEquals(BOOLEAN_VALUE, type.isPublished());\r\n\t\tassertEquals(LONG_VALUE, type.getRaceID());\r\n\t\tassertEquals(DOUBLE_VALUE, type.getRadius());\r\n\t\tassertEquals(STRING_VALUE, type.getSofFactionName());\r\n\t\tassertEquals(LONG_VALUE, type.getSofMaterialSetID());\r\n\t\tassertEquals(LONG_VALUE, type.getSoundID());\r\n\t\tassertNotNull(type.getTraits());\r\n\t\tassertNotNull(type.getTraits().getMiscBonuses());\r\n\t\tassertEquals(MAP_LENGTH, type.getTraits().getMiscBonuses().size());\r\n\t\tassertNotNull(type.getTraits().getMiscBonuses().get(MAP_VALUE));\r\n\t\tassertEquals(DOUBLE_VALUE, type.getTraits().getMiscBonuses().get(MAP_VALUE).getBonus(), DELTA);\r\n\t\tassertNotNull(type.getTraits().getMiscBonuses().get(MAP_VALUE).getBonusText());\r\n\t\tassertEquals(STRING_VALUE, type.getTraits().getMiscBonuses().get(MAP_VALUE).getBonusText().get(MAP_VALUE));\r\n\t\tassertEquals(LONG_VALUE, type.getTraits().getMiscBonuses().get(MAP_VALUE).getImportance());\r\n\t\tassertEquals(LONG_VALUE, type.getTraits().getMiscBonuses().get(MAP_VALUE).getUnitID());\r\n\t\tassertEquals(BOOLEAN_VALUE, type.getTraits().getMiscBonuses().get(MAP_VALUE).isPositive());\r\n\t\tassertEquals(MAP_LENGTH, type.getTraits().getRoleBonuses().size());\r\n\t\tassertNotNull(type.getTraits().getRoleBonuses().get(MAP_VALUE));\r\n\t\tassertEquals(DOUBLE_VALUE, type.getTraits().getRoleBonuses().get(MAP_VALUE).getBonus(), DELTA);\r\n\t\tassertNotNull(type.getTraits().getRoleBonuses().get(MAP_VALUE).getBonusText());\r\n\t\tassertEquals(STRING_VALUE, type.getTraits().getRoleBonuses().get(MAP_VALUE).getBonusText().get(MAP_VALUE));\r\n\t\tassertEquals(LONG_VALUE, type.getTraits().getRoleBonuses().get(MAP_VALUE).getImportance());\r\n\t\tassertEquals(LONG_VALUE, type.getTraits().getRoleBonuses().get(MAP_VALUE).getUnitID());\r\n\t\tassertEquals(BOOLEAN_VALUE, type.getTraits().getRoleBonuses().get(MAP_VALUE).isPositive());\r\n\t\tassertNotNull(type.getTraits().getTypes());  //Map 1\r\n\t\tassertEquals(MAP_LENGTH, type.getTraits().getTypes().size());\r\n\t\tassertNotNull(type.getTraits().getTypes().get(MAP_VALUE)); //Map 2\r\n\t\tassertEquals(MAP_LENGTH, type.getTraits().getTypes().get(MAP_VALUE).size());\r\n\t\tassertNotNull(type.getTraits().getTypes().get(MAP_VALUE).get(MAP_VALUE)); //RoleBonus\r\n\t\tassertNotNull(type.getTraits().getTypes().get(MAP_VALUE).get(MAP_VALUE).getBonus());\r\n\t\tassertEquals(DOUBLE_VALUE, type.getTraits().getTypes().get(MAP_VALUE).get(MAP_VALUE).getBonus(), DELTA);\r\n\t\tassertNotNull(type.getTraits().getTypes().get(MAP_VALUE).get(MAP_VALUE).getBonusText());\r\n\t\tassertEquals(STRING_VALUE, type.getTraits().getTypes().get(MAP_VALUE).get(MAP_VALUE).getBonusText().get(MAP_VALUE));\r\n\t\tassertEquals(LONG_VALUE, type.getTraits().getTypes().get(MAP_VALUE).get(MAP_VALUE).getImportance());\r\n\t\tassertEquals(LONG_VALUE, type.getTraits().getTypes().get(MAP_VALUE).get(MAP_VALUE).getUnitID());\r\n\t\tassertEquals(BOOLEAN_VALUE, type.getTraits().getTypes().get(MAP_VALUE).get(MAP_VALUE).isPositive());\r\n\t\tassertEquals(LONG_VALUE, type.getVariationParentTypeID());\r\n\t\tassertEquals(DOUBLE_VALUE, type.getVolume());\r\n\t\tassertNotNull(type.getRequiredSkills());\r\n\t\tassertEquals(MAP_LENGTH, type.getRequiredSkills().size());\r\n\t\tassertEquals(LONG_VALUE, type.getRequiredSkills().get(MAP_VALUE));\r\n\t\tassertEquals(ARRAY_LENGTH, type.getApplicableMutaplasmidTypeIDS().size());\r\n\t\tassertEquals(LONG_VALUE, type.getApplicableMutaplasmidTypeIDS().get(0));\r\n\t\tassertEquals(ARRAY_LENGTH, type.getCreatingMutaplasmidTypeIDS().size());\r\n\t\tassertEquals(LONG_VALUE, type.getCreatingMutaplasmidTypeIDS().get(0));\r\n\t\tassertNotNull(type.getTypeVariations());\r\n\t\tassertEquals(MAP_LENGTH, type.getTypeVariations().size());\r\n\t\tassertEquals(ARRAY_LENGTH, type.getTypeVariations().get(MAP_VALUE).size());\r\n\t\tassertEquals(LONG_VALUE, type.getTypeVariations().get(MAP_VALUE).get(0));\r\n\t\tassertNotNull(type.getOreVariations());\r\n\t\tassertEquals(MAP_LENGTH, type.getOreVariations().size());\r\n\t\tassertEquals(ARRAY_LENGTH, type.getOreVariations().get(MAP_VALUE).size());\r\n\t\tassertEquals(LONG_VALUE, type.getOreVariations().get(MAP_VALUE).get(0));\r\n\t\tassertEquals(BOOLEAN_VALUE, type.isOre());\r\n\t\tassertNotNull(type.getProducedByBlueprints());\r\n\t\tassertEquals(MAP_LENGTH, type.getProducedByBlueprints().size());\r\n\t\tassertNotNull(type.getProducedByBlueprints().get(MAP_VALUE));\r\n\t\tassertEquals(STRING_VALUE, type.getProducedByBlueprints().get(MAP_VALUE).getBlueprintActivity());\r\n\t\tassertEquals(INTEGER_VALUE, type.getProducedByBlueprints().get(MAP_VALUE).getBlueprintTypeID());\r\n\t\tassertNotNull(type.getTypeMaterials());\r\n\t\tassertEquals(MAP_LENGTH, type.getTypeMaterials().size());\r\n\t\tassertNotNull(type.getTypeMaterials().get(MAP_VALUE));\r\n\t\tassertEquals(INTEGER_VALUE, type.getTypeMaterials().get(MAP_VALUE).getMaterialTypeID());\r\n\t\tassertEquals(INTEGER_VALUE, type.getTypeMaterials().get(MAP_VALUE).getQuantity());\r\n\t\tassertEquals(ARRAY_LENGTH, type.getCanFitTypes().size());\r\n\t\tassertEquals(LONG_VALUE, type.getCanFitTypes().get(0));\r\n\t\tassertEquals(ARRAY_LENGTH, type.getCanBeFittedWithTypes().size());\r\n\t\tassertEquals(LONG_VALUE, type.getCanBeFittedWithTypes().get(0));\r\n\t\tassertEquals(BOOLEAN_VALUE, type.isSkill());\r\n\t\tassertEquals(BOOLEAN_VALUE, type.isMutaplasmid());\r\n\t\tassertEquals(BOOLEAN_VALUE, type.isDynamicItem());\r\n\t\tassertEquals(BOOLEAN_VALUE, type.isBlueprint());\r\n\t}\r\n\r\n\t/**\r\n\t * Null test\r\n\t * @param args\r\n\t */\r\n\tpublic static void main(final String[] args) {\r\n\t\tinitLog();\r\n\t\tEveRefGetterTest test = new EveRefGetterTest();\r\n\t\ttest.testNullTest();\r\n\t\tSystem.exit(0);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testNullTest() {\r\n\t\tItem item = new Item(0);\r\n\t\tassertNotNull(EveRefGetter.getItem(item, null, null));\r\n\t\tEveRefType type = new EveRefType();\r\n\t\tassertNotNull(EveRefGetter.getItem(item, type, null));\r\n\t\tassertNull(type.isBlueprint());\r\n\t\tsetField(type, \"blueprint\", true);\r\n\t\tassertTrue(type.isBlueprint());\r\n\t\tassertNotNull(EveRefGetter.getItem(item, type, null));\r\n\t\tEveRefBlueprint blueprint = new EveRefBlueprint();\r\n\t\tassertNotNull(EveRefGetter.getItem(item, type, blueprint));\r\n\t}\r\n\r\n\tprivate static void setField(Object cc, String field, Object value) {\r\n\t\ttry {\r\n\t\t\tField f1 = cc.getClass().getDeclaredField(field);\r\n\t\t\tf1.setAccessible(true);\r\n\t\t\tf1.set(cc, value);\r\n\t\t\tf1.setAccessible(false);\r\n\t\t} catch (NoSuchFieldException ex) {\r\n\t\t\tfail(ex.getMessage());\r\n\t\t} catch (SecurityException ex) {\r\n\t\t\tfail(ex.getMessage());\r\n\t\t} catch (IllegalArgumentException ex) {\r\n\t\t\tfail(ex.getMessage());\r\n\t\t} catch (IllegalAccessException ex) {\r\n\t\t\tfail(ex.getMessage());\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/online/PriceDataGetterOnlineTest.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.io.online;\n\n\nimport ch.qos.logback.classic.Level;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.OutputStream;\nimport java.net.Proxy;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport java.util.TreeSet;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.TestUtil;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\nimport net.nikr.eve.jeveasset.data.settings.PriceData;\nimport net.nikr.eve.jeveasset.data.settings.PriceDataSettings.PriceSource;\nimport net.nikr.eve.jeveasset.data.settings.PriceHistoryDatabase;\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\nimport org.junit.After;\nimport org.junit.AfterClass;\nimport static org.junit.Assert.assertNotNull;\nimport static org.junit.Assert.assertTrue;\nimport org.junit.Before;\nimport org.junit.BeforeClass;\nimport org.junit.Test;\nimport uk.me.candle.eve.pricing.impl.Janice.JaniceLocation;\nimport uk.me.candle.eve.pricing.options.LocationType;\nimport uk.me.candle.eve.pricing.options.NamedPriceLocation;\nimport uk.me.candle.eve.pricing.options.PriceLocation;\nimport uk.me.candle.eve.pricing.options.PricingOptions;\n\n\npublic class PriceDataGetterOnlineTest extends TestUtil {\n\tprivate static final String JANICE_API_KEY = \"JANICE_API_KEY\";\n\tprivate static String JANICE_KEY;\n\tprivate static final long REGION_THE_FORGE = 10000002L;  //The Forge (Jita region)\n\tprivate static final long SYSTEM_JITA = 30000142L;  //Jita\n\tprivate static final long STATION_JITA_4_4 = 60003760L; //Jita 4 - 4\n\tprivate static final long MAX_RUNS = 500;\n\n\tprivate final PriceGetter getter = new PriceGetter();\n\tprivate final Set<Integer> typeIDs = new HashSet<>();\n\n\tpublic PriceDataGetterOnlineTest() { }\n\n\t@BeforeClass\n\tpublic static void setUpClass() {\n\t\tsetLoggingLevel(Level.ERROR);\n\t\tJANICE_KEY = System.getenv().get(JANICE_API_KEY);\n\t\tPriceHistoryDatabase.load();\n\t}\n\n\t@AfterClass\n\tpublic static void tearDownClass() {\n\t\tsetLoggingLevel(Level.INFO);\n\t}\n\n\t@Before\n\tpublic void setUp() {\n\t\tSet<Integer> ids = new HashSet<>();\n\t\tfor (Item item : StaticData.get().getItems().values()) {\n\t\t\tif (item.isMarketGroup()) {\n\t\t\t\tids.add(item.getTypeID());\n\t\t\t}\n\t\t}\n\t\tif (MAX_RUNS > 0) {\n\t\t\tList<Integer> list = new ArrayList<>(ids);\n\t\t\tCollections.shuffle(list); //Randomize\n\t\t\ttypeIDs.addAll(list.subList(0, (int)Math.min(MAX_RUNS, list.size())));\n\t\t} else {\n\t\t\ttypeIDs.addAll(ids);\n\t\t}\n\t}\n\n\t@After\n\tpublic void tearDown() {\n\t\ttypeIDs.clear();\n\t}\n\n\t@Test\n\tpublic void testAll() {\n\t\tlong time = System.currentTimeMillis();\n\t\tfor (PriceSource source : PriceSource.values()) {\n\t\t\ttest(source);\n\t\t}\n\t\tSystem.out.println(\"All tests completed in: \" + Formatter.milliseconds(System.currentTimeMillis() - time));\n\t}\n\n\tprivate void test(PriceSource source) {\n\t\tif (source.supportRegions()) {\n\t\t\ttest(source, LocationType.REGION, ApiIdConverter.getLocation(REGION_THE_FORGE));\n\t\t}\n\t\tif (source.supportSystems()) {\n\t\t\ttest(source, LocationType.SYSTEM, ApiIdConverter.getLocation(SYSTEM_JITA));\n\t\t}\n\t\tif (source.supportStations()) {\n\t\t\tif (source == PriceSource.JANICE) {\n\t\t\t\tfor (JaniceLocation location : JaniceLocation.values()) {\n\t\t\t\t\ttest(source, LocationType.STATION, location.getPriceLocation());\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttest(source, LocationType.STATION, ApiIdConverter.getLocation(STATION_JITA_4_4));\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void test(PriceSource source, LocationType locationType, NamedPriceLocation location) {\n\t\tTestPricingOptions options = new TestPricingOptions(locationType, location);\n\t\tString msg = source.toString()\n\t\t\t\t+ \" (\"\n\t\t\t\t+ options.getLocationType().name().toLowerCase()\n\t\t\t\t+ \" - \" + location.getLocation()\n\t\t\t\t+ \" - \" + typeIDs.size() + \" IDs)\";\n\t\tSystem.out.println(msg);\n\t\tif (source == PriceSource.JANICE && JANICE_KEY != null) {\n\t\t\toptions.addHeader(\"X-ApiKey\", JANICE_KEY);\n\t\t}\n\t\tlong start = System.currentTimeMillis();\n\t\tMap<Integer, PriceData> process = getter.process(options, typeIDs, source);\n\t\tlong end = System.currentTimeMillis();\n\t\tassertNotNull(msg, process);\n\t\tSet<Integer> failed = new TreeSet<>(typeIDs);\n\t\tfailed.removeAll(process.keySet());\n\n\t\tSet<Integer> empty = new TreeSet<>();\n\t\tfor (Map.Entry<Integer, PriceData> entry : process.entrySet()) {\n\t\t\tassertNotNull(msg, entry.getValue());\n\t\t\tif (entry.getValue().isEmpty()) {\n\t\t\t\tempty.add(entry.getKey());\n\t\t\t}\n\t\t}\n\n\t\tSystem.out.println(\"    \" + process.size() + \" of \" + typeIDs.size() + \" done - \" + empty.size() + \" empty - \" + failed.size() + \" failed - completed in: \" + Formatter.milliseconds(end - start));\n\t\tassertTrue(msg, failed.isEmpty());\n\t\tassertTrue(msg, process.size() >= typeIDs.size());\n\t}\n\n\tprivate static class PriceGetter extends PriceDataGetter {\n\n\t\tprotected Map<Integer, PriceData> process(PricingOptions pricingOptions, Set<Integer> ids, PriceSource source) {\n\t\t\treturn super.processUpdate(null, true, pricingOptions, ids, source);\n\t\t}\n\t}\n\n\tprivate static class TestPricingOptions implements PricingOptions {\n\n\t\tprivate final LocationType locationType;\n\t\tprivate final PriceLocation location;\n\n\t\tpublic TestPricingOptions(LocationType locationType, PriceLocation location) {\n\t\t\tthis.locationType = locationType;\n\t\t\tthis.location = location;\n\t\t}\n\n\t\t@Override\n\t\tpublic long getPriceCacheTimer() {\n\t\t\treturn 60*60*1000L; // 1 hour\n\t\t}\n\n\t\t@Override\n\t\tpublic PriceLocation getLocation() {\n\t\t\treturn location;\n\t\t}\n\n\t\t@Override\n\t\tpublic LocationType getLocationType() {\n\t\t\treturn locationType;\n\t\t}\n\n\t\t@Override\n\t\tpublic InputStream getCacheInputStream() throws IOException {\n\t\t\treturn null;\n\t\t}\n\n\t\t@Override\n\t\tpublic OutputStream getCacheOutputStream() throws IOException {\n\t\t\treturn null;\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean getCacheTimersEnabled() {\n\t\t\treturn false;\n\t\t}\n\n\t\t@Override\n\t\tpublic Proxy getProxy() {\n\t\t\treturn Proxy.NO_PROXY;\n\t\t}\n\n\t\t@Override\n\t\tpublic int getAttemptCount() {\n\t\t\treturn 1;\n\t\t}\n\n\t\t@Override\n\t\tpublic boolean getUseBinaryErrorSearch() {\n\t\t\treturn false;\n\t\t}\n\n\t\t@Override\n\t\tpublic int getTimeout() {\n\t\t\treturn 2000;\n\t\t}\n\n\t\t@Override\n\t\tpublic String getUserAgent() {\n\t\t\treturn Program.PROGRAM_USER_AGENT;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/online/ProxyTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.online;\r\n\r\nimport java.io.IOException;\r\nimport java.io.InputStream;\r\nimport java.io.OutputStream;\r\nimport java.net.Proxy;\r\nimport java.util.HashSet;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.Program;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.sde.Item;\r\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\r\nimport net.nikr.eve.jeveasset.data.settings.PriceDataSettings.PriceSource;\r\nimport net.nikr.eve.jeveasset.data.settings.ProxyData;\r\nimport net.nikr.eve.jeveasset.io.esi.EsiCallbackURL;\r\nimport net.nikr.eve.jeveasset.io.esi.EsiOwnerGetter;\r\nimport net.nikr.eve.jeveasset.io.shared.ApiIdConverter;\r\nimport org.junit.AfterClass;\r\nimport org.junit.Before;\r\nimport org.junit.BeforeClass;\r\nimport uk.me.candle.eve.pricing.options.LocationType;\r\nimport uk.me.candle.eve.pricing.options.PriceLocation;\r\nimport uk.me.candle.eve.pricing.options.PricingOptions;\r\n\r\npublic class ProxyTest extends TestUtil {\r\n\r\n\tprivate ProxyData proxyData;\r\n\tprivate static final Set<Integer> TYPE_IDS = new HashSet<>();\r\n\r\n\t@AfterClass\r\n\tpublic static void afterClass() {\r\n\t\tProxyData proxyData = new ProxyData();\r\n\t}\r\n\r\n\t@BeforeClass\r\n\tpublic static void beforeClass() {\r\n\t\tfor (Item item : StaticData.get().getItems().values()) {\r\n\t\t\tif (TYPE_IDS.size() >= 40) { break; }\r\n\t\t\tif (item.isMarketGroup()) {\r\n\t\t\t\tTYPE_IDS.add(item.getTypeID());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Before\r\n\tpublic void before() {\r\n\t\tSystem.setProperty(\"jdk.http.auth.tunneling.disabledSchemes\", \"\");\r\n\t\tSystem.setProperty(\"jdk.http.auth.proxying.disabledSchemes\", \"\");\r\n\t}\r\n\r\n\tpublic void testHTTP() {\r\n\t\tproxyData = new ProxyData(\"0.0.0.0\", Proxy.Type.HTTP, 808, \"root\", \"haha\");\r\n\t\ttestConnections();\r\n\t}\r\n\r\n\tpublic void testSOCKS() {\r\n\t\tproxyData = new ProxyData(\"0.0.0.0\", Proxy.Type.SOCKS, 1080, \"root\", \"haha\");\r\n\t\ttestConnections();\r\n\t}\r\n\r\n\tpublic void testUpdateHTTP() {\r\n\t\tproxyData = new ProxyData(\"0.0.0.0\", Proxy.Type.HTTP, 808, \"root\", \"haha\");\r\n\t\ttestUpdate();\r\n\t}\r\n\r\n\tpublic void testUpdateSOCKS() {\r\n\t\tproxyData = new ProxyData(\"0.0.0.0\", Proxy.Type.SOCKS, 1080, \"root\", \"haha\");\r\n\t\ttestUpdate();\r\n\t}\r\n\r\n\tprivate void testConnections() {\r\n\t\t//ESI\r\n\t\tEsiOwner esiOwner = EsiOwner.create();\r\n\t\tesiOwner.setAuth(EsiCallbackURL.LOCALHOST, null, null);\r\n\t\tEsiOwnerGetter esi = new EsiOwnerGetter(esiOwner, false);\r\n\t\tesi.start();\r\n\t\t//Price\r\n\t\tPriceDataGetterMock price = new PriceDataGetterMock();\r\n\t\tprice.update();\r\n\t}\r\n\r\n\tprivate void testUpdate() {\r\n\t\t//Update\r\n\t\tUpdater updater = new Updater();\r\n\t\tupdater.update(\"DoNotMatch\", \"DoNotMatch\", proxyData);\r\n\t}\r\n\r\n\tprivate class PriceDataGetterMock extends PriceDataGetter {\r\n\r\n\t\tprotected void update() {\r\n\t\t\tsuper.processUpdate(null, true, new TestPricingOptions(), TYPE_IDS, PriceSource.FUZZWORK);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tprivate class TestPricingOptions implements PricingOptions {\r\n\r\n\t\t@Override\r\n\t\tpublic long getPriceCacheTimer() {\r\n\t\t\treturn 60*60*1000l; // 1 hour\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic PriceLocation getLocation() {\r\n\t\t\treturn ApiIdConverter.getLocation(10000002L);\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic LocationType getLocationType() {\r\n\t\t\treturn LocationType.REGION;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean getUseBinaryErrorSearch() {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic InputStream getCacheInputStream() throws IOException {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic OutputStream getCacheOutputStream() throws IOException {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic boolean getCacheTimersEnabled() {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic Proxy getProxy() {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int getAttemptCount() {\r\n\t\t\treturn 2;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic int getTimeout() {\r\n\t\t\treturn 20000;\r\n\t\t}\r\n\r\n\t\t@Override\r\n\t\tpublic String getUserAgent() {\r\n\t\t\treturn Program.PROGRAM_USER_AGENT;\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/online/ZkillboardPricesHistoryGetterOnlineTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.online;\r\n\r\nimport java.util.Map;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport static org.junit.Assert.assertNotNull;\r\nimport static org.junit.Assert.fail;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class ZkillboardPricesHistoryGetterOnlineTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void testGetPrice() {\r\n\t\tMap<String, Double> priceHistory;\r\n\r\n\t\tpriceHistory = ZkillboardPricesHistoryGetter.getPriceHistory(34);\r\n\t\tassertNotNull(priceHistory);\r\n\r\n\t\tpriceHistory = ZkillboardPricesHistoryGetter.getPriceHistory(638);\r\n\t\tassertNotNull(priceHistory);\r\n\r\n\t\ttry {\r\n\t\t\tThread.sleep(1100);\r\n\t\t} catch (InterruptedException ex) {\r\n\t\t\tfail(ex.getMessage());\r\n\t\t}\r\n\r\n\t\tpriceHistory = ZkillboardPricesHistoryGetter.getPriceHistory(35);\r\n\t\tassertNotNull(priceHistory);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/shared/ApiIdConverterOnlineTest.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.io.shared;\n\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport net.nikr.eve.jeveasset.TestUtil;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\nimport org.junit.Test;\n\n\npublic class ApiIdConverterOnlineTest extends TestUtil {\n\n\tprivate static final long MAX_IDS = 500;\n\tprivate static final long MAX_RUNS = 100;\n\n\t@Test\n\tpublic void testDownloadItemsThreads() throws InterruptedException {\n\t\ttestDownloadItemsThreads(false);\n\t}\n\n\t@Test\n\tpublic void testUpdateItem() throws InterruptedException {\n\t\ttestDownloadItemsThreads(true);\n\t}\n\n\tpublic void testDownloadItemsThreads(boolean updateItems) throws InterruptedException {\n\t\tApiIdConverter.setUpdateItem(true);\n\t\tSet<Integer> typeIDs = new HashSet<>();\n\t\tList<Integer> all = new ArrayList<>(StaticData.get().getItems().keySet());\n\t\tif (MAX_IDS > 0) {\n\t\t\tCollections.shuffle(all); //Randomize\n\t\t\ttypeIDs.addAll(all.subList(0, (int)Math.min(MAX_RUNS, all.size())));\n\t\t} else {\n\t\t\ttypeIDs.addAll(all);\n\t\t}\n\t\tList<Thread> updates = new ArrayList<>();\n\t\tMap<Integer, Item> removed = new HashMap<>();\n\t\tfor (Integer typeID : typeIDs) {\n\t\t\tremoved.put(typeID, StaticData.get().getItems().remove(typeID));\n\t\t}\n\t\tif (updateItems) {\n\t\t\tfor (Integer typeID : typeIDs) {\n\t\t\t\tupdates.add(new UpdateItem(typeID));\n\t\t\t}\n\t\t}\n\t\tfor (int i= 0; i < MAX_RUNS; i++ ) {\n\t\t\tfor (Integer typeID : typeIDs) {\n\t\t\t\tupdates.add(new Download(typeID));\n\t\t\t}\n\t\t}\n\t\tfor (Thread thread : updates) {\n\t\t\tthread.start();\n\t\t}\n\t\tfor (Thread thread : updates) {\n\t\t\tthread.join();\n\t\t}\n\t\tfor (Map.Entry<Integer, Item> entry : removed.entrySet()) {\n\t\t\tStaticData.get().getItems().put(entry.getKey(), entry.getValue());\n\t\t}\n\t\tApiIdConverter.setUpdateItem(false);\n\t}\n\n\tprivate static class Download extends Thread {\n\n\t\tprivate final int typeID;\n\n\t\tpublic Download(int typeID) {\n\t\t\tthis.typeID = typeID;\n\t\t}\n\n\t\t@Override\n\t\tpublic void run() {\n\t\t\tApiIdConverter.synchronizedDownloadItem(typeID);\n\t\t}\n\t}\n\n\tprivate static class UpdateItem extends Thread {\n\n\t\tprivate final int typeID;\n\n\t\tpublic UpdateItem(int typeID) {\n\t\t\tthis.typeID = typeID;\n\t\t}\n\n\t\t@Override\n\t\tpublic void run() {\n\t\t\tApiIdConverter.updateItem(typeID);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/shared/ApiIdConverterTest.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.io.shared;\n\nimport java.util.HashMap;\nimport java.util.Map;\nimport static org.junit.Assert.assertEquals;\nimport static org.junit.Assert.assertFalse;\nimport net.nikr.eve.jeveasset.TestUtil;\nimport net.nikr.eve.jeveasset.data.sde.IndustryMaterial;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings;\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings.ManufacturingFacility;\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings.ManufacturingRigs;\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings.ManufacturingSecurity;\nimport net.nikr.eve.jeveasset.gui.shared.Formatter;\nimport org.junit.Test;\n\n\npublic class ApiIdConverterTest extends TestUtil {\n\n\tprivate static final double DOMINIX_BASE_PRICE = 130_856_251.94;\n\n\t/**\n\t * Tested against Isk Per Hour 2023-06-24 \n\t */\n\t@Test\n\tpublic void testInstallationFee() {\n\t\tItem item = ApiIdConverter.getItem(645); //Dominix\n\t\tfloat systemIndex = 0.001f;\n\t\tManufacturingSettings manufacturingSettings = new ManufacturingSettings();\n\t\tmanufacturingSettings.setFacility(ManufacturingFacility.STATION);\n\t\tmanufacturingSettings.setRigs(ManufacturingRigs.NONE);\n\t\tmanufacturingSettings.setSecurity(ManufacturingSecurity.HIGHSEC);\n\t\tmanufacturingSettings.setTax(0.25);\n\t\ttestInstallationFee(manufacturingSettings, item, systemIndex, 785_137.51);\n\n\t\t\n\t\tmanufacturingSettings.setTax(0.0);\n\n\t\tmanufacturingSettings.setFacility(ManufacturingFacility.ENGINEERING_COMPLEX_MEDIUM);\n\t\ttestInstallationFee(manufacturingSettings, item, systemIndex, 454_071.91);\n\n\t\tmanufacturingSettings.setFacility(ManufacturingFacility.ENGINEERING_COMPLEX_LARGE);\n\t\ttestInstallationFee(manufacturingSettings, item, systemIndex, 452_762.63);\n\n\t\tmanufacturingSettings.setFacility(ManufacturingFacility.ENGINEERING_COMPLEX_XLARGE);\n\t\ttestInstallationFee(manufacturingSettings, item, systemIndex, 451_454.07);\n\n\n\t\tmanufacturingSettings.setTax(0.25);\n\n\t\tmanufacturingSettings.setFacility(ManufacturingFacility.ENGINEERING_COMPLEX_MEDIUM);\n\t\ttestInstallationFee(manufacturingSettings, item, systemIndex, 781_211.82);\n\n\t\tmanufacturingSettings.setFacility(ManufacturingFacility.ENGINEERING_COMPLEX_LARGE);\n\t\ttestInstallationFee(manufacturingSettings, item, systemIndex, 779_903.26);\n\n\t\tmanufacturingSettings.setFacility(ManufacturingFacility.ENGINEERING_COMPLEX_XLARGE);\n\t\ttestInstallationFee(manufacturingSettings, item, systemIndex, 778_594.70);\n\n\n\t\tsystemIndex = 0.2321f;\n\t\tmanufacturingSettings.setFacility(ManufacturingFacility.STATION);\n\t\ttestInstallationFee(manufacturingSettings, item, systemIndex, 31_026_017.35);\n\t}\n\n\tpublic void testInstallationFee(ManufacturingSettings manufacturingSettings, Item item, Float systemIndex, double expected) {\n\t\tdouble actual = ApiIdConverter.getManufacturingInstallationFee(manufacturingSettings, systemIndex, DOMINIX_BASE_PRICE, item);\n\t\tassertEquals(Formatter.doubleFormat(actual) + \"!=\" + Formatter.doubleFormat(expected), expected,actual , 1);\n\t}\n\n\t/**\n\t * Tested against Isk Per Hour and Fuzzwork 2025-04-03\n\t */\n\t@Test\n\tpublic void testManufacturingQuantity() {\n\t\tSystem.out.println(\"\t--- Default ---\");\n\t\tint me = 0;\n\t\tManufacturingFacility facility = ManufacturingFacility.ENGINEERING_COMPLEX_XLARGE;\n\t\tManufacturingRigs rigs = ManufacturingRigs.NONE;\n\t\tManufacturingSecurity security = ManufacturingSecurity.LOWSEC;\n\t\tdouble runs = 1;\n\t\tMap<Integer, Double> expected = new HashMap<>();\n\t\texpected.put(34, 5_148_000.0); //Tritanium\n\t\texpected.put(35, 2_574_000.0); //Pyerite\n\t\texpected.put(36,   386_100.0); //Mexallon\n\t\texpected.put(37,   128_700.0); //Isogen\n\t\texpected.put(38,    15_444.0); //Nocxium\n\t\texpected.put(39,     3_861.0); //Zydrine\n\t\texpected.put(40,     1_931.0); //Megacyte\n\t\texpected.put(57478,    149.0); //Auto-Integrity Preservation Seal\n\t\texpected.put(57486,     75.0); //Life Support Backup Unit\n\t\texpected.put(57479,      1.0); //Core Temperature Regulator\n\t\ttestManufacturingQuantity(expected, me, facility, rigs, security, runs);\n\t}\n\n\t/**\n\t * Tested against Isk Per Hour and Fuzzwork 2024-10-06\n\t */\n\t@Test\n\tpublic void testManufacturingQuantityMe() {\n\t\tSystem.out.println(\"\t--- ME ---\");\n\t\tint me = 10;\n\t\tManufacturingFacility facility = ManufacturingFacility.ENGINEERING_COMPLEX_XLARGE;\n\t\tManufacturingRigs rigs = ManufacturingRigs.NONE;\n\t\tManufacturingSecurity security = ManufacturingSecurity.HIGHSEC;\n\t\tdouble runs = 1;\n\t\tMap<Integer, Double> expected = new HashMap<>();\n\t\texpected.put(34, 4_633_200.0); //Tritanium\n\t\texpected.put(35, 2_316_600.0); //Pyerite\n\t\texpected.put(36,   347_490.0); //Mexallon\n\t\texpected.put(37,   115_830.0); //Isogen\n\t\texpected.put(38,    13_900.0); //Nocxium\n\t\texpected.put(39,     3_475.0); //Zydrine\n\t\texpected.put(40,     1_738.0); //Megacyte\n\t\texpected.put(57478,    134.0); //Auto-Integrity Preservation Seal\n\t\texpected.put(57486,     67.0); //Life Support Backup Unit\n\t\texpected.put(57479,      1.0); //Core Temperature Regulator\n\t\ttestManufacturingQuantity(expected, me, facility, rigs, security, runs);\n\t}\n\n\t/**\n\t * Tested against Isk Per Hour and Fuzzwork 2025-04-03\n\t */\n\t@Test\n\tpublic void testManufacturingQuantityRuns() {\n\t\tSystem.out.println(\"\t--- Runs Eng---\");\n\t\tint me = 10;\n\t\tManufacturingFacility facility = ManufacturingFacility.ENGINEERING_COMPLEX_XLARGE;\n\t\tManufacturingRigs rigs = ManufacturingRigs.NONE;\n\t\tManufacturingSecurity security = ManufacturingSecurity.HIGHSEC;\n\t\tdouble runs = 200;\n\t\tMap<Integer, Double> expected = new HashMap<>();\n\t\texpected.put(34, 926_640_000.0); //Tritanium\n\t\texpected.put(35, 463_320_000.0); //Pyerite\n\t\texpected.put(36,  69_498_000.0); //Mexallon\n\t\texpected.put(37,  23_166_000.0); //Isogen\n\t\texpected.put(38,   2_779_920.0); //Nocxium\n\t\texpected.put(39,     694_980.0); //Zydrine\n\t\texpected.put(40,     347_490.0); //Megacyte\n\t\texpected.put(57478,   26_730.0); //Auto-Integrity Preservation Seal\n\t\texpected.put(57486,   13_365.0); //Life Support Backup Unit\n\t\texpected.put(57479,      200.0); //Core Temperature Regulator\n\t\ttestManufacturingQuantity(expected, me, facility, rigs, security, runs);\n\t}\n\n\t/**\n\t * Tested against in-game values 2025-04-03\n\t */\n\t@Test\n\tpublic void testManufacturingQuantityRunsStation() {\n\t\tSystem.out.println(\"\t--- Runs Station ---\");\n\t\tint me = 10;\n\t\tManufacturingFacility facility = ManufacturingFacility.STATION;\n\t\tManufacturingRigs rigs = ManufacturingRigs.NONE;\n\t\tManufacturingSecurity security = ManufacturingSecurity.HIGHSEC;\n\t\tdouble runs = 200;\n\t\tMap<Integer, Double> expected = new HashMap<>();\n\t\texpected.put(34, 936_000_000.0); //Tritanium\n\t\texpected.put(35, 468_000_000.0); //Pyerite\n\t\texpected.put(36,  70_200_000.0); //Mexallon\n\t\texpected.put(37,  23_400_000.0); //Isogen\n\t\texpected.put(38,   2_808_000.0); //Nocxium\n\t\texpected.put(39,     702_000.0); //Zydrine\n\t\texpected.put(40,     351_000.0); //Megacyte\n\t\texpected.put(57478,   27_000.0); //Auto-Integrity Preservation Seal\n\t\texpected.put(57486,   13_500.0); //Life Support Backup Unit\n\t\texpected.put(57479,      200.0); //Core Temperature Regulator\n\t\ttestManufacturingQuantity(expected, me, facility, rigs, security, runs);\n\t}\n\n\tpublic void testManufacturingQuantity(Map<Integer, Double> expected, int me, ManufacturingFacility facility, ManufacturingRigs rigs, ManufacturingSecurity security, double runs) {\n\t\tItem blueprint = ApiIdConverter.getItem(999); //Dominix Blueprint\n\t\tfor (IndustryMaterial material : blueprint.getManufacturingMaterials()) {\n\t\t\tdouble quantity = ApiIdConverter.getManufacturingQuantity(material.getQuantity(), me, facility, rigs, security, runs, true);\n\t\t\tSystem.out.println(\"\tid=\" + material.getTypeID() + \" q=\" + material.getQuantity() + \" qmod=\" + Formatter.compareFormat(quantity));\n\t\t\tassertEquals(expected.get(material.getTypeID()), quantity, 0.001);\n\t\t\t//System.out.println(\"expected.put(\" + material.getTypeID() + \", \" + Formatter.compareFormat(quantity) + \");\");\n\t\t}\n\t}\n\n\t/**\n\t * Test of location method, of class ApiIdConverter.\n\t */\n\t@Test\n\tpublic void testLocation() {\n\t\tfor (MyLocation o1 : StaticData.get().getLocations()) {\n\t\t\tMyLocation location = ApiIdConverter.getLocation(o1.getLocationID());\n\t\t\tassertEquals(o1.getLocation(), location.getLocation());\n\t\t\tassertEquals(o1.getLocationID(), location.getLocationID());\n\t\t\tif (o1.isRegion()) {\n\t\t\t\tassertEquals(o1.getStation(), location.getStation());\n\t\t\t\tassertEquals(o1.getStationID(), location.getStationID());\n\t\t\t\tassertEquals(o1.getStation(), \"\");\n\t\t\t\tassertEquals(o1.getStationID(), 0);\n\t\t\t\tassertEquals(o1.getSystem(), location.getSystem());\n\t\t\t\tassertEquals(o1.getSystemID(), location.getSystemID());\n\t\t\t\tassertEquals(o1.getSystem(), \"\");\n\t\t\t\tassertEquals(o1.getSystemID(), 0);\n\t\t\t\tassertEquals(o1.getConstellation(), location.getConstellation());\n\t\t\t\tassertEquals(o1.getConstellationID(), location.getConstellationID());\n\t\t\t\tassertEquals(o1.getConstellation(), \"\");\n\t\t\t\tassertEquals(o1.getConstellationID(), 0);\n\t\t\t\tassertEquals(o1.getRegion(), location.getRegion());\n\t\t\t\tassertEquals(o1.getRegionID(), location.getRegionID());\n\t\t\t\tassertFalse(o1.getRegion().equals(\"\"));\n\t\t\t\tassertFalse(o1.getRegionID() == 0);\n\t\t\t} else if (o1.isConstellation()) {\n\t\t\t\tassertEquals(o1.getStation(), location.getStation());\n\t\t\t\tassertEquals(o1.getStationID(), location.getStationID());\n\t\t\t\tassertEquals(o1.getStation(), \"\");\n\t\t\t\tassertEquals(o1.getStationID(), 0);\n\t\t\t\tassertEquals(o1.getSystem(), location.getSystem());\n\t\t\t\tassertEquals(o1.getSystemID(), location.getSystemID());\n\t\t\t\tassertEquals(o1.getSystem(), \"\");\n\t\t\t\tassertEquals(o1.getSystemID(), 0);\n\t\t\t\tassertEquals(o1.getConstellation(), location.getConstellation());\n\t\t\t\tassertEquals(o1.getConstellationID(), location.getConstellationID());\n\t\t\t\tassertFalse(o1.getConstellation().equals(\"\"));\n\t\t\t\tassertFalse(o1.getConstellationID()== 0);\n\t\t\t\tassertEquals(o1.getRegion(), location.getRegion());\n\t\t\t\tassertEquals(o1.getRegionID(), location.getRegionID());\n\t\t\t\tassertFalse(o1.getRegion().equals(\"\"));\n\t\t\t\tassertFalse(o1.getRegionID() == 0);\n\t\t\t} else if (o1.isSystem()) {\n\t\t\t\tassertEquals(o1.getStation(), location.getStation());\n\t\t\t\tassertEquals(o1.getStationID(), location.getStationID());\n\t\t\t\tassertEquals(o1.getStation(), \"\");\n\t\t\t\tassertEquals(o1.getStationID(), 0);\n\t\t\t\tassertEquals(o1.getSystem(), location.getSystem());\n\t\t\t\tassertEquals(o1.getSystemID(), location.getSystemID());\n\t\t\t\tassertFalse(o1.getSystem().equals(\"\"));\n\t\t\t\tassertFalse(o1.getSystemID() == 0);\n\t\t\t\tassertEquals(o1.getConstellation(), location.getConstellation());\n\t\t\t\tassertEquals(o1.getConstellationID(), location.getConstellationID());\n\t\t\t\tassertFalse(o1.getConstellation().equals(\"\"));\n\t\t\t\tassertFalse(o1.getConstellationID()== 0);\n\t\t\t\tassertEquals(o1.getRegion(), location.getRegion());\n\t\t\t\tassertEquals(o1.getRegionID(), location.getRegionID());\n\t\t\t\tassertFalse(o1.getRegion().equals(\"\"));\n\t\t\t\tassertFalse(o1.getRegionID() == 0);\n\t\t\t} else if (o1.isStation()) { //Not planet\n\t\t\t\tassertEquals(o1.getStation(), location.getStation());\n\t\t\t\tassertEquals(o1.getStationID(), location.getStationID());\n\t\t\t\tassertFalse(o1.getStation().equals(\"\"));\n\t\t\t\tassertFalse(o1.getStationID() == 0);\n\t\t\t\tassertEquals(o1.getSystem(), location.getSystem());\n\t\t\t\tassertEquals(o1.getSystemID(), location.getSystemID());\n\t\t\t\tassertFalse(o1.getSystem().equals(\"\"));\n\t\t\t\tassertFalse(o1.getSystemID() == 0);\n\t\t\t\tassertEquals(o1.getConstellation(), location.getConstellation());\n\t\t\t\tassertEquals(o1.getConstellationID(), location.getConstellationID());\n\t\t\t\tassertFalse(o1.getConstellation().equals(\"\"));\n\t\t\t\tassertFalse(o1.getConstellationID()== 0);\n\t\t\t\tassertEquals(o1.getRegion(), location.getRegion());\n\t\t\t\tassertEquals(o1.getRegionID(), location.getRegionID());\n\t\t\t\tassertFalse(o1.getRegion().equals(\"\"));\n\t\t\t\tassertFalse(o1.getRegionID() == 0);\n\t\t\t} else if (o1.isPlanet()) {\n\t\t\t\tassertEquals(o1.getStation(), location.getStation());\n\t\t\t\tassertEquals(o1.getStationID(), location.getStationID());\n\t\t\t\tassertFalse(o1.getStation().equals(\"\"));\n\t\t\t\tassertFalse(o1.getStationID() == 0);\n\t\t\t\tassertEquals(o1.getSystem(), location.getSystem());\n\t\t\t\tassertEquals(o1.getSystemID(), location.getSystemID());\n\t\t\t\tassertFalse(o1.getSystem().equals(\"\"));\n\t\t\t\tassertFalse(o1.getSystemID() == 0);\n\t\t\t\tassertEquals(o1.getConstellation(), location.getConstellation());\n\t\t\t\tassertEquals(o1.getConstellationID(), location.getConstellationID());\n\t\t\t\tassertFalse(o1.getConstellation().equals(\"\"));\n\t\t\t\tassertFalse(o1.getConstellationID()== 0);\n\t\t\t\tassertEquals(o1.getRegion(), location.getRegion());\n\t\t\t\tassertEquals(o1.getRegionID(), location.getRegionID());\n\t\t\t\tassertFalse(o1.getRegion().equals(\"\"));\n\t\t\t\tassertFalse(o1.getRegionID() == 0);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/shared/AssetsGetterTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.shared;\r\n\r\nimport static org.junit.Assert.assertEquals;\r\n\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class AssetsGetterTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void testFlatListExclusions() {\r\n\t\tassertEquals(StaticData.get().getItemFlags().get(7).getFlagName(), \"Skill\");\r\n\t\tassertEquals(StaticData.get().getItemFlags().get(89).getFlagName(), \"Implant\");\r\n\t\tassertEquals(StaticData.get().getItemFlags().get(61).getFlagName(), \"Skill In Training\");\r\n\t\tassertEquals(StaticData.get().getItemFlags().get(88).getFlagName(), \"Booster\");\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/shared/ConverterTestOptions.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.io.shared;\n\nimport java.math.BigDecimal;\nimport java.time.OffsetDateTime;\nimport java.time.ZoneOffset;\nimport java.util.Date;\nimport javax.swing.JButton;\nimport net.nikr.eve.jeveasset.data.api.my.MyBlueprint;\nimport net.nikr.eve.jeveasset.data.api.my.MyShip;\nimport net.nikr.eve.jeveasset.data.api.raw.RawBlueprint;\nimport net.nikr.eve.jeveasset.data.api.raw.RawContract;\nimport net.nikr.eve.jeveasset.data.api.raw.RawIndustryJob;\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournal.ContextType;\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournalRefType;\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder;\nimport net.nikr.eve.jeveasset.data.api.raw.RawNpcStanding;\nimport net.nikr.eve.jeveasset.data.sde.ItemFlag;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.data.settings.MarketPriceData;\nimport net.nikr.eve.jeveasset.data.settings.PriceData;\nimport net.nikr.eve.jeveasset.data.settings.UserItem;\nimport net.nikr.eve.jeveasset.data.settings.tag.Tags;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Percent;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.TextIcon;\nimport net.nikr.eve.jeveasset.gui.tabs.orders.Outbid;\nimport net.nikr.eve.jeveasset.io.esi.EsiCallbackURL;\nimport net.troja.eve.esi.model.CharacterAssetsResponse;\nimport net.troja.eve.esi.model.CharacterBlueprintsResponse;\nimport net.troja.eve.esi.model.CharacterContractsResponse;\nimport net.troja.eve.esi.model.CharacterIndustryJobsResponse;\nimport net.troja.eve.esi.model.CharacterOrdersHistoryResponse;\nimport net.troja.eve.esi.model.CharacterOrdersResponse;\nimport net.troja.eve.esi.model.CharacterWalletJournalResponse;\nimport net.troja.eve.esi.model.CorporationAssetsResponse;\nimport net.troja.eve.esi.model.CorporationBlueprintsResponse;\nimport net.troja.eve.esi.model.CorporationContractsResponse;\nimport net.troja.eve.esi.model.CorporationIndustryJobsResponse;\nimport net.troja.eve.esi.model.CorporationOrdersHistoryResponse;\nimport net.troja.eve.esi.model.CorporationOrdersResponse;\nimport net.troja.eve.esi.model.CorporationWalletJournalResponse;\n\npublic interface ConverterTestOptions {\n\n\tpublic Integer getInteger();\n\n\tpublic Float getFloat();\n\n\tpublic Boolean getBoolean();\n\n\tpublic Long getLong();\n\n\tpublic Double getDouble();\n\n\tpublic Date getDate();\n\n\tpublic String getString();\n\n\tpublic ItemFlag getItemFlag();\n\n\tpublic PriceData getPriceData();\n\n\tpublic UserItem<Integer, Double> getUserPrice();\n\n\tpublic MyShip getMyShip();\n\n\tpublic JButton getButton();\n\n\tpublic MyBlueprint getMyBlueprint();\n\n\tpublic MarketPriceData getMarketPriceData();\n\n\tpublic Tags getTags();\n\n\tpublic RawBlueprint getRawBlueprint();\n\n\tpublic Percent getPercent();\n\n\t//LocationType\n\tpublic MyLocation getMyLocation();\n\n\tpublic Long getLocationID();\n\n\tpublic CharacterAssetsResponse.LocationTypeEnum getLocationTypeEsiCharacter();\n\n\tpublic CorporationAssetsResponse.LocationTypeEnum getLocationTypeEsiCorporation();\n\n\t//LocationFlag\n\tpublic CharacterBlueprintsResponse.LocationFlagEnum getLocationFlagEsiBlueprintCharacter();\n\n\tpublic CorporationBlueprintsResponse.LocationFlagEnum getLocationFlagEsiBlueprintCorporation();\n\n\tpublic CharacterAssetsResponse.LocationFlagEnum getLocationFlagEsiAssetsCharacter();\n\n\tpublic CorporationAssetsResponse.LocationFlagEnum getLocationFlagEsiAssetsCorporation();\n\n\t//ContractAvailability\n\tpublic RawContract.ContractAvailability getContractAvailabilityRaw();\n\n\tpublic CharacterContractsResponse.AvailabilityEnum getContractAvailabilityEsiCharacter();\n\n\tpublic CorporationContractsResponse.AvailabilityEnum getContractAvailabilityEsiCorporation();\n\n\t//ContractStatus\n\tpublic RawContract.ContractStatus getContractStatusRaw();\n\n\tpublic CharacterContractsResponse.StatusEnum getContractStatusEsiCharacter();\n\n\tpublic CorporationContractsResponse.StatusEnum getContractStatusEsiCorporation();\n\n\t//ContractType\n\tpublic RawContract.ContractType getContractTypeRaw();\n\n\tpublic CharacterContractsResponse.TypeEnum getContractTypeEsiCharacter();\n\n\tpublic CorporationContractsResponse.TypeEnum getContractTypeEsiCorporation();\n\n\t//IndustryJobStatus\n\tpublic RawIndustryJob.IndustryJobStatus getIndustryJobStatusRaw();\n\n\tpublic CharacterIndustryJobsResponse.StatusEnum getIndustryJobStatusEsiCharacter();\n\n\tpublic CorporationIndustryJobsResponse.StatusEnum getIndustryJobStatusEsiCorporation();\n\n\t//JournalContextType\n\tpublic ContextType getJournalContextTypeRaw();\n\n\tpublic CharacterWalletJournalResponse.ContextIdTypeEnum getJournalContextTypeEsiCharacter();\n\n\tpublic CorporationWalletJournalResponse.ContextIdTypeEnum getJournalContextTypeEsiCorporation();\n\n\t//JournalRefType\n\tpublic RawJournalRefType getJournalRefTypeRaw();\n\n\tpublic CharacterWalletJournalResponse.RefTypeEnum getJournalRefTypeEsiCharacter();\n\n\tpublic CorporationWalletJournalResponse.RefTypeEnum getJournalRefTypeEsiCorporation();\n\n\t//MarketOrderRange\n\tpublic RawMarketOrder.MarketOrderRange getMarketOrderRangeRaw();\n\n\tpublic CharacterOrdersResponse.RangeEnum getMarketOrderRangeEsiCharacter();\n\n\tpublic CharacterOrdersHistoryResponse.RangeEnum getMarketOrderRangeEsiCharacterHistory();\n\n\tpublic CorporationOrdersResponse.RangeEnum getMarketOrderRangeEsiCorporation();\n\n\tpublic CorporationOrdersHistoryResponse.RangeEnum getMarketOrderRangeEsiCorporationHistory();\n\n\t//MarketOrderState\n\tpublic RawMarketOrder.MarketOrderState getMarketOrderStateRaw();\n\n\tpublic CharacterOrdersHistoryResponse.StateEnum getMarketOrderStateEsiCharacterHistory();\n\n\tpublic Outbid getMarketOrdersOutbid();\n\n\tpublic CorporationOrdersHistoryResponse.StateEnum getMarketOrderStateEsiCorporationHistory();\n\t\n\tpublic RawNpcStanding.FromType getNpcStandingFromType();\n\n\tpublic TextIcon getTextIcon();\n\n\tpublic int getIndex();\n\n\t//Owner\n\tpublic EsiCallbackURL getEsiCallbackURL();\n\n\tdefault OffsetDateTime getOffsetDateTime() {\n\t\treturn getDate().toInstant().atOffset(ZoneOffset.UTC);\n\t}\n\n\tdefault Object getNull() {\n\t\treturn null;\n\t}\n\n\tdefault BigDecimal getBigDecimal() {\n\t\treturn new BigDecimal(getDouble());\n\t}\n}\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/shared/ConverterTestOptionsGetter.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.io.shared;\n\nimport java.awt.Color;\nimport java.awt.Component;\nimport java.awt.Graphics;\nimport java.awt.Graphics2D;\nimport java.util.ArrayList;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport javax.swing.Icon;\nimport javax.swing.JButton;\nimport net.nikr.eve.jeveasset.data.api.my.MyBlueprint;\nimport net.nikr.eve.jeveasset.data.api.my.MyShip;\nimport net.nikr.eve.jeveasset.data.api.raw.RawBlueprint;\nimport net.nikr.eve.jeveasset.data.api.raw.RawContract;\nimport net.nikr.eve.jeveasset.data.api.raw.RawIndustryJob;\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournal.ContextType;\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournalRefType;\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder;\nimport net.nikr.eve.jeveasset.data.api.raw.RawNpcStanding;\nimport net.nikr.eve.jeveasset.data.sde.ItemFlag;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.data.settings.MarketPriceData;\nimport net.nikr.eve.jeveasset.data.settings.PriceData;\nimport net.nikr.eve.jeveasset.data.settings.UserItem;\nimport net.nikr.eve.jeveasset.data.settings.tag.Tags;\nimport net.nikr.eve.jeveasset.gui.dialogs.settings.UserPriceSettingsPanel.UserPrice;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Percent;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.TextIcon;\nimport net.nikr.eve.jeveasset.gui.tabs.orders.Outbid;\nimport net.nikr.eve.jeveasset.io.esi.EsiCallbackURL;\nimport net.troja.eve.esi.model.CharacterAssetsResponse;\nimport net.troja.eve.esi.model.CharacterBlueprintsResponse;\nimport net.troja.eve.esi.model.CharacterContractsResponse;\nimport net.troja.eve.esi.model.CharacterIndustryJobsResponse;\nimport net.troja.eve.esi.model.CharacterOrdersHistoryResponse;\nimport net.troja.eve.esi.model.CharacterOrdersResponse;\nimport net.troja.eve.esi.model.CharacterWalletJournalResponse;\nimport net.troja.eve.esi.model.CorporationAssetsResponse;\nimport net.troja.eve.esi.model.CorporationBlueprintsResponse;\nimport net.troja.eve.esi.model.CorporationContractsResponse;\nimport net.troja.eve.esi.model.CorporationIndustryJobsResponse;\nimport net.troja.eve.esi.model.CorporationOrdersHistoryResponse;\nimport net.troja.eve.esi.model.CorporationOrdersResponse;\nimport net.troja.eve.esi.model.CorporationWalletJournalResponse;\nimport static org.junit.Assert.fail;\n\npublic class ConverterTestOptionsGetter {\n\n\tprivate static List<ConverterTestOptions> options = null;\n\n\tpublic static synchronized List<ConverterTestOptions> getConverterOptions() {\n\t\tif (options == null) {\n\t\t\toptions = new ArrayList<>();\n\t\t\tint index = 0;\n\t\t\twhile (add(options, index)) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\t\treturn options;\n\t}\n\n\tprivate static boolean add(List<ConverterTestOptions> list, int i) {\n\t\tIndexOptions indexOptions = new IndexOptions(i);\n\t\tif (indexOptions.isMaxed()) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\tlist.add(indexOptions);\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tprivate static class IndexOptions implements ConverterTestOptions {\n\n\t\t//Primitive\n\t\tprivate static final Integer[] INTEGER = {5};\n\t\tprivate static final Float[] FLOAT = {5.1f};\n\t\tprivate static final Boolean[] BOOLEAN = {true};\n\t\tprivate static final Long[] LONG = {5L};\n\t\tprivate static final Double[] DOUBLE = {5.1};\n\t\tprivate static final Date[] DATE = {new Date()};\n\t\tprivate static final String[] STRING = {\"StringValue\"};\n\t\tprivate static final Icon ICON = new Icon() {\n\t\t\t@Override\n\t\t\tpublic void paintIcon(Component c, Graphics g, int x, int y) {\n\t\t\t\tGraphics2D g2d = (Graphics2D) g;\n\t\t\t\tg2d.setPaint(Color.GREEN);\n\t\t\t\tg2d.fillRect(0, 0, getIconWidth(), getIconHeight());\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic int getIconWidth() {\n\t\t\t\treturn 16;\n\t\t\t}\n\n\t\t\t@Override\n\t\t\tpublic int getIconHeight() {\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t};\n\t\t//Data\n\t\tprivate static final MyLocation[] MY_LOCATION = {ApiIdConverter.getLocation(60003466)};\n\t\tprivate static final PriceData[] PRICE_DATA = {new PriceData()};\n\t\tprivate static final MarketPriceData[] MARKET_PRICE_DATA = {new MarketPriceData()};\n\t\tprivate static final Tags[] TAGS = {new Tags()};\n\t\tprivate static final Percent[] PERCENT = {Percent.create(5.1)};\n\t\tprivate static final UserPrice[] USER_ITEM = {new UserPrice(DOUBLE[0], INTEGER[0], STRING[0])};\n\t\tprivate static final MyShip MY_SHIP = new MyShip(LONG[0], INTEGER[0], 60003466L);\n\t\tprivate static final JButton BUTTON = new JButton();\n\t\tprivate static final MyBlueprint BLUEPRINT = new MyBlueprint(INTEGER[0], INTEGER[0], INTEGER[0]);\n\n\t\t//LocationType\n\t\tprivate static final CharacterAssetsResponse.LocationTypeEnum[] ESI_LOCATION_TYPE_CHARACTER = CharacterAssetsResponse.LocationTypeEnum.values();\n\t\tprivate static final CorporationAssetsResponse.LocationTypeEnum[] ESI_LOCATION_TYPE_CORPORATION = CorporationAssetsResponse.LocationTypeEnum.values();\n\t\tprivate static final Long[] LOCATION_ID = {60003466L, 30000142L, 100000000L, 10000002L};\n\t\t//LocationFlag\n\t\tprivate static final List<LocationFlag> LOCATION_TYPE = createLocationTypes();\n\t\t//ContractAvailability\n\t\tprivate static final RawContract.ContractAvailability[] RAW_CONTRACT_AVAILABILITY = RawContract.ContractAvailability.values();\n\t\tprivate static final CharacterContractsResponse.AvailabilityEnum[] ESI_CONTRACTS_AVAILABILITY_CHARACTER = CharacterContractsResponse.AvailabilityEnum.values();\n\t\tprivate static final CorporationContractsResponse.AvailabilityEnum[] ESI_CONTRACTS_AVAILABILITY_CORPORATION = CorporationContractsResponse.AvailabilityEnum.values();\n\t\t//ContractStatus\n\t\tprivate static final RawContract.ContractStatus[] RAW_CONTRACT_STATUS = RawContract.ContractStatus.values();\n\t\tprivate static final CharacterContractsResponse.StatusEnum[] ESI_CONTRACT_STATUS_CHARACTER = CharacterContractsResponse.StatusEnum.values();\n\t\tprivate static final CorporationContractsResponse.StatusEnum[] ESI_CONTRACT_STATUS_CORPORATION = CorporationContractsResponse.StatusEnum.values();\n\t\t//ContractType\n\t\tprivate static final RawContract.ContractType[] RAW_CONTRACT_TYPE = RawContract.ContractType.values();\n\t\tprivate static final CharacterContractsResponse.TypeEnum[] ESI_CONTRACT_TYPE_CHARACTER = CharacterContractsResponse.TypeEnum.values();\n\t\tprivate static final CorporationContractsResponse.TypeEnum[] ESI_CONTRACT_TYPE_CORPORATION = CorporationContractsResponse.TypeEnum.values();\n\t\t//IndustryJobStatus\n\t\tprivate static final RawIndustryJob.IndustryJobStatus[] RAW_INDUSTRY_JOB_STATUS = RawIndustryJob.IndustryJobStatus.values();\n\t\tprivate static final CharacterIndustryJobsResponse.StatusEnum[] ESI_INDUSTRY_JOB_STATUS_CHARACTER = CharacterIndustryJobsResponse.StatusEnum.values();\n\t\tprivate static final CorporationIndustryJobsResponse.StatusEnum[] ESI_INDUSTRY_JOB_STATUS_CORPORATION = CorporationIndustryJobsResponse.StatusEnum.values();\n\t\t//Journal RefType and ContextType\n\t\tprivate static final List<JournalData> JOURNAL_DATA = createJournalData();\n\t\t//MarketOrderRange\n\t\tprivate static final RawMarketOrder.MarketOrderRange[] RAW_MARKET_ORDER_RANGE = RawMarketOrder.MarketOrderRange.values();\n\t\tprivate static final CharacterOrdersResponse.RangeEnum[] ESI_MARKET_ORDER_RANGE_CHARACTER = CharacterOrdersResponse.RangeEnum.values();\n\t\tprivate static final CharacterOrdersHistoryResponse.RangeEnum[] ESI_MARKET_ORDER_RANGE_CHARACTER_HISTORY = CharacterOrdersHistoryResponse.RangeEnum.values();\n\t\tprivate static final CorporationOrdersResponse.RangeEnum[] ESI_MARKET_ORDER_RANGE_CORPORATION = CorporationOrdersResponse.RangeEnum.values();\n\t\tprivate static final CorporationOrdersHistoryResponse.RangeEnum[] ESI_MARKET_ORDER_RANGE_CORPORATION_HISTORY = CorporationOrdersHistoryResponse.RangeEnum.values();\n\t\t//MarketOrderState\n\t\tprivate static final RawMarketOrder.MarketOrderState[] RAW_MARKET_ORDER_STATE = {\n\t\t\tRawMarketOrder.MarketOrderState.CANCELLED,\n\t\t\tRawMarketOrder.MarketOrderState.CHARACTER_DELETED,\n\t\t\tRawMarketOrder.MarketOrderState.CLOSED,\n\t\t\tRawMarketOrder.MarketOrderState.EXPIRED,\n\t\t\tRawMarketOrder.MarketOrderState.OPEN,\n\t\t\tRawMarketOrder.MarketOrderState.PENDING,\n\t\t\t//UNKNOWN(\"Unknown\");  //Ignored: jEveAssets value\n\t\t};\n\t\t//MarketOrder Outbid\n\t\tprivate static final Outbid ESI_MARKET_ORDER_OUTBID = new Outbid(0.0, 0);\n\t\tprivate static final CharacterOrdersHistoryResponse.StateEnum[] ESI_MARKET_ORDER_STATE_CHARACTER_HISTORY = CharacterOrdersHistoryResponse.StateEnum.values();\n\t\tprivate static final CorporationOrdersHistoryResponse.StateEnum[] ESI_MARKET_ORDER_STATE_CORPORATION_HISTORY = CorporationOrdersHistoryResponse.StateEnum.values();\n\t\t//Owners\n\t\tprivate static final EsiCallbackURL[] ESI_CALLBACK_URL = EsiCallbackURL.values();\n\t\t//NpcStanding\n\t\tprivate static final RawNpcStanding.FromType[] NPC_STANDING_FROM_TYPE = RawNpcStanding.FromType.values();\n\t\tprivate static final TextIcon TEXT_ICON = new TextIcon(ICON, STRING[0]);\n\n\t\t//Control\n\t\tprivate static final int MAX = createMax();\n\t\t//Controls\n\t\tprivate final int index;\n\n\t\tpublic IndexOptions(int index) {\n\t\t\tthis.index = index;\n\t\t}\n\n\t\tprivate static List<LocationFlag> createLocationTypes() {\n\t\t\tMap<Integer, LocationFlag> locationFlags = new HashMap<>();\n\t\t\t//Character Blueprints\n\t\t\tfor (CharacterBlueprintsResponse.LocationFlagEnum locationFlagEnum : CharacterBlueprintsResponse.LocationFlagEnum.values()) {\n\t\t\t\tItemFlag itemFlag = RawConverter.toFlag(locationFlagEnum);\n\t\t\t\tLocationFlag locationFlag = locationFlags.get(itemFlag.getFlagID());\n\t\t\t\tif (locationFlag == null) {\n\t\t\t\t\tlocationFlag = new LocationFlag(itemFlag);\n\t\t\t\t\tlocationFlags.put(itemFlag.getFlagID(), locationFlag);\n\t\t\t\t}\n\t\t\t\tlocationFlag.setLocationFlag(locationFlagEnum);\n\t\t\t}\n\t\t\t//Corporation Blueprints\n\t\t\tfor (CorporationBlueprintsResponse.LocationFlagEnum locationFlagEnum : CorporationBlueprintsResponse.LocationFlagEnum.values()) {\n\t\t\t\tItemFlag itemFlag = RawConverter.toFlag(locationFlagEnum);\n\t\t\t\tLocationFlag locationFlag = locationFlags.get(itemFlag.getFlagID());\n\t\t\t\tif (locationFlag == null) {\n\t\t\t\t\tlocationFlag = new LocationFlag(itemFlag);\n\t\t\t\t\tlocationFlags.put(itemFlag.getFlagID(), locationFlag);\n\t\t\t\t}\n\t\t\t\tlocationFlag.setLocationFlag(locationFlagEnum);\n\t\t\t}\n\t\t\t//Character Assets\n\t\t\tfor (CharacterAssetsResponse.LocationFlagEnum locationFlagEnum : CharacterAssetsResponse.LocationFlagEnum.values()) {\n\t\t\t\tItemFlag itemFlag = RawConverter.toFlag(locationFlagEnum);\n\t\t\t\tLocationFlag locationFlag = locationFlags.get(itemFlag.getFlagID());\n\t\t\t\tif (locationFlag == null) {\n\t\t\t\t\tlocationFlag = new LocationFlag(itemFlag);\n\t\t\t\t\tlocationFlags.put(itemFlag.getFlagID(), locationFlag);\n\t\t\t\t}\n\t\t\t\tlocationFlag.setLocationFlag(locationFlagEnum);\n\t\t\t}\n\t\t\t//Corporation Assets\n\t\t\tfor (CorporationAssetsResponse.LocationFlagEnum locationFlagEnum : CorporationAssetsResponse.LocationFlagEnum.values()) {\n\t\t\t\tItemFlag itemFlag = RawConverter.toFlag(locationFlagEnum);\n\t\t\t\tLocationFlag locationFlag = locationFlags.get(itemFlag.getFlagID());\n\t\t\t\tif (locationFlag == null) {\n\t\t\t\t\tlocationFlag = new LocationFlag(itemFlag);\n\t\t\t\t\tlocationFlags.put(itemFlag.getFlagID(), locationFlag);\n\t\t\t\t}\n\t\t\t\tlocationFlag.setLocationFlag(locationFlagEnum);\n\t\t\t}\n\t\t\tSet<Integer> remove = new HashSet<>();\n\t\t\tfor (LocationFlag locationType : locationFlags.values()) {\n\t\t\t\tif (locationType.isEmpty()) {\n\t\t\t\t\tremove.add(locationType.getItemFlag().getFlagID());\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (Integer index : remove) {\n\t\t\t\tlocationFlags.remove(index);\n\t\t\t}\n\t\t\treturn new ArrayList<>(locationFlags.values());\n\t\t}\n\n\t\tprivate static List<JournalData> createJournalData() {\n\t\t\tMap<Integer, JournalData> journalDatas = new HashMap<>();\n\t\t\t//ESI Character\n\t\t\tfor (CharacterWalletJournalResponse.RefTypeEnum refTypeEnum : CharacterWalletJournalResponse.RefTypeEnum.values()) {\n\t\t\t\tRawJournalRefType rawJournalRefType = RawConverter.toJournalRefType(refTypeEnum);\n\t\t\t\tif (rawJournalRefType == null) {\n\t\t\t\t\tfail(refTypeEnum.name() + \" not found\");\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tJournalData journalData = journalDatas.get(rawJournalRefType.getID());\n\t\t\t\tif (journalData == null) {\n\t\t\t\t\tjournalData = new JournalData(rawJournalRefType);\n\t\t\t\t\tjournalDatas.put(rawJournalRefType.getID(), journalData);\n\t\t\t\t}\n\t\t\t\tjournalData.setRefType(refTypeEnum);\n\t\t\t\tjournalData.setContextType(RawConverter.toJournalContextType(rawJournalRefType));\n\t\t\t}\n\t\t\t//ESI Corporation\n\t\t\tfor (CorporationWalletJournalResponse.RefTypeEnum refTypeEnum : CorporationWalletJournalResponse.RefTypeEnum.values()) {\n\t\t\t\tRawJournalRefType rawJournalRefType = RawConverter.toJournalRefType(refTypeEnum);\n\t\t\t\tif (rawJournalRefType == null) {\n\t\t\t\t\tfail(refTypeEnum.name() + \" not found\");\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tJournalData journalData = journalDatas.get(rawJournalRefType.getID());\n\t\t\t\tif (journalData == null) {\n\t\t\t\t\tjournalData = new JournalData(rawJournalRefType);\n\t\t\t\t\tjournalDatas.put(rawJournalRefType.getID(), journalData);\n\t\t\t\t}\n\t\t\t\tjournalData.setRefType(refTypeEnum);\n\t\t\t\tjournalData.setContextType(RawConverter.toJournalContextType(rawJournalRefType));\n\t\t\t}\n\t\t\tSet<Integer> remove = new HashSet<>();\n\t\t\tfor (JournalData refType : journalDatas.values()) {\n\t\t\t\tif (refType.isEmpty()) {\n\t\t\t\t\tremove.add(refType.getRawJournalRefType().getID());\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (Integer index : remove) {\n\t\t\t\tjournalDatas.remove(index);\n\t\t\t}\n\t\t\treturn new ArrayList<>(journalDatas.values());\n\t\t}\n\n\t\tprivate static int createMax() {\n\t\t\tint tempMax = 0;\n\t\t\ttempMax = Math.max(tempMax, INTEGER.length);\n\t\t\ttempMax = Math.max(tempMax, FLOAT.length);\n\t\t\ttempMax = Math.max(tempMax, BOOLEAN.length);\n\t\t\ttempMax = Math.max(tempMax, LONG.length);\n\t\t\ttempMax = Math.max(tempMax, DOUBLE.length);\n\t\t\ttempMax = Math.max(tempMax, DATE.length);\n\t\t\ttempMax = Math.max(tempMax, STRING.length);\n\n\t\t\ttempMax = Math.max(tempMax, MY_LOCATION.length);\n\t\t\ttempMax = Math.max(tempMax, PRICE_DATA.length);\n\t\t\ttempMax = Math.max(tempMax, MARKET_PRICE_DATA.length);\n\t\t\ttempMax = Math.max(tempMax, TAGS.length);\n\t\t\ttempMax = Math.max(tempMax, PERCENT.length);\n\t\t\ttempMax = Math.max(tempMax, USER_ITEM.length);\n\t\t\t//LocationType\n\t\t\ttempMax = Math.max(tempMax, ESI_LOCATION_TYPE_CHARACTER.length);\n\t\t\ttempMax = Math.max(tempMax, ESI_LOCATION_TYPE_CORPORATION.length);\n\t\t\t//LocationFlag\n\t\t\ttempMax = Math.max(tempMax, LOCATION_TYPE.size());\n\t\t\t//ContractAvailability\n\t\t\ttempMax = Math.max(tempMax, RAW_CONTRACT_AVAILABILITY.length);\n\t\t\ttempMax = Math.max(tempMax, ESI_CONTRACTS_AVAILABILITY_CHARACTER.length);\n\t\t\ttempMax = Math.max(tempMax, ESI_CONTRACTS_AVAILABILITY_CORPORATION.length);\n\t\t\t//ContractStatus\n\t\t\ttempMax = Math.max(tempMax, RAW_CONTRACT_STATUS.length);\n\t\t\ttempMax = Math.max(tempMax, ESI_CONTRACT_STATUS_CHARACTER.length);\n\t\t\ttempMax = Math.max(tempMax, ESI_CONTRACT_STATUS_CORPORATION.length);\n\t\t\t//ContractType\n\t\t\ttempMax = Math.max(tempMax, RAW_CONTRACT_TYPE.length);\n\t\t\ttempMax = Math.max(tempMax, ESI_CONTRACT_TYPE_CHARACTER.length);\n\t\t\ttempMax = Math.max(tempMax, ESI_CONTRACT_TYPE_CORPORATION.length);\n\t\t\t//IndustryJobStatus\n\t\t\ttempMax = Math.max(tempMax, RAW_INDUSTRY_JOB_STATUS.length);\n\t\t\ttempMax = Math.max(tempMax, ESI_INDUSTRY_JOB_STATUS_CHARACTER.length);\n\t\t\ttempMax = Math.max(tempMax, ESI_INDUSTRY_JOB_STATUS_CORPORATION.length);\n\t\t\t//JournalRefType\n\t\t\ttempMax = Math.max(tempMax, JOURNAL_DATA.size());\n\t\t\t//MarketOrderRange\n\t\t\ttempMax = Math.max(tempMax, RAW_MARKET_ORDER_RANGE.length);\n\t\t\ttempMax = Math.max(tempMax, ESI_MARKET_ORDER_RANGE_CHARACTER.length);\n\t\t\ttempMax = Math.max(tempMax, ESI_MARKET_ORDER_RANGE_CORPORATION.length);\n\t\t\t//MarketOrderState\n\t\t\ttempMax = Math.max(tempMax, RAW_MARKET_ORDER_STATE.length);\n\t\t\t//Owners\n\t\t\ttempMax = Math.max(tempMax, ESI_CALLBACK_URL.length);\n\t\t\t//Npc Standing\n\t\t\ttempMax = Math.max(tempMax, NPC_STANDING_FROM_TYPE.length);\n\t\t\treturn tempMax;\n\t\t}\n\n\t\t@Override\n\t\tpublic int getIndex() {\n\t\t\treturn index;\n\t\t}\n\n\t\tprivate <E> E get(E[] array, int index) {\n\t\t\tif (index < array.length) {\n\t\t\t\treturn array[index];\n\t\t\t} else {\n\t\t\t\treturn array[0];\n\t\t\t}\n\t\t}\n\t\tprivate <E> E get(List<E> list, Integer index) {\n\t\t\tif (index < list.size()) {\n\t\t\t\treturn list.get(index);\n\t\t\t} else {\n\t\t\t\treturn list.get(0);\n\t\t\t}\n\t\t}\n\n\t\tpublic boolean isMaxed() {\n\t\t\treturn index >= MAX;\n\t\t}\n\n\t\t@Override\n\t\tpublic Integer getInteger() {\n\t\t\treturn get(INTEGER, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic Float getFloat() {\n\t\t\treturn get(FLOAT, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic Boolean getBoolean() {\n\t\t\treturn get(BOOLEAN, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic final Long getLong() {\n\t\t\treturn get(LONG, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic Double getDouble() {\n\t\t\treturn get(DOUBLE, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic Date getDate() {\n\t\t\treturn get(DATE, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic String getString() {\n\t\t\treturn get(STRING, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic MyLocation getMyLocation() {\n\t\t\treturn get(MY_LOCATION, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic PriceData getPriceData() {\n\t\t\treturn get(PRICE_DATA, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic UserItem<Integer, Double> getUserPrice() {\n\t\t\treturn get(USER_ITEM, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic MyShip getMyShip() {\n\t\t\treturn MY_SHIP;\n\t\t}\n\n\t\t@Override\n\t\tpublic JButton getButton() {\n\t\t\treturn BUTTON;\n\t\t}\n\n\t\t@Override\n\t\tpublic MyBlueprint getMyBlueprint() {\n\t\t\treturn BLUEPRINT;\n\t\t}\n\n\t\t@Override\n\t\tpublic MarketPriceData getMarketPriceData() {\n\t\t\treturn get(MARKET_PRICE_DATA, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic Tags getTags() {\n\t\t\treturn get(TAGS, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic RawBlueprint getRawBlueprint() {\n\t\t\treturn ConverterTestUtil.getRawBlueprint(this);\n\t\t}\n\n\t\t@Override\n\t\tpublic Percent getPercent() {\n\t\t\treturn get(PERCENT, index);\n\t\t}\n\n//LocationType\n\t\t@Override\n\t\tpublic Long getLocationID() {\n\t\t\treturn get(LOCATION_ID, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic CharacterAssetsResponse.LocationTypeEnum getLocationTypeEsiCharacter() {\n\t\t\treturn get(ESI_LOCATION_TYPE_CHARACTER, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic CorporationAssetsResponse.LocationTypeEnum getLocationTypeEsiCorporation() {\n\t\t\treturn get(ESI_LOCATION_TYPE_CORPORATION, index);\n\t\t}\n\n//LocationFlag\n\t\t@Override\n\t\tpublic CharacterBlueprintsResponse.LocationFlagEnum getLocationFlagEsiBlueprintCharacter() {\n\t\t\treturn get(LOCATION_TYPE, index).getLocationFlagEsiBlueprintsCharacter();\n\t\t}\n\n\t\t@Override\n\t\tpublic CorporationBlueprintsResponse.LocationFlagEnum getLocationFlagEsiBlueprintCorporation() {\n\t\t\treturn get(LOCATION_TYPE, index).getLocationFlagEsiBlueprintsCorporation();\n\t\t}\n\n\t\t@Override\n\t\tpublic CharacterAssetsResponse.LocationFlagEnum getLocationFlagEsiAssetsCharacter() {\n\t\t\treturn get(LOCATION_TYPE, index).getLocationFlagEsiAssetsCharacter();\n\t\t}\n\n\t\t@Override\n\t\tpublic CorporationAssetsResponse.LocationFlagEnum getLocationFlagEsiAssetsCorporation() {\n\t\t\treturn get(LOCATION_TYPE, index).getLocationFlagEsiAssetsCorporation();\n\t\t}\n\n\t\t@Override\n\t\tpublic ItemFlag getItemFlag() {\n\t\t\treturn get(LOCATION_TYPE, index).getItemFlag();\n\t\t}\n\n//ContractAvailability\n\t\t@Override\n\t\tpublic RawContract.ContractAvailability getContractAvailabilityRaw() {\n\t\t\treturn get(RAW_CONTRACT_AVAILABILITY, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic CharacterContractsResponse.AvailabilityEnum getContractAvailabilityEsiCharacter() {\n\t\t\treturn get(ESI_CONTRACTS_AVAILABILITY_CHARACTER, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic CorporationContractsResponse.AvailabilityEnum getContractAvailabilityEsiCorporation() {\n\t\t\treturn get(ESI_CONTRACTS_AVAILABILITY_CORPORATION, index);\n\t\t}\n//ContractStatus\n\t\t@Override\n\t\tpublic RawContract.ContractStatus getContractStatusRaw() {\n\t\t\treturn get(RAW_CONTRACT_STATUS, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic CharacterContractsResponse.StatusEnum getContractStatusEsiCharacter() {\n\t\t\treturn get(ESI_CONTRACT_STATUS_CHARACTER, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic CorporationContractsResponse.StatusEnum getContractStatusEsiCorporation() {\n\t\t\treturn get(ESI_CONTRACT_STATUS_CORPORATION, index);\n\t\t}\n\n//ContractType\n\t\t@Override\n\t\tpublic RawContract.ContractType getContractTypeRaw() {\n\t\t\treturn get(RAW_CONTRACT_TYPE, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic CharacterContractsResponse.TypeEnum getContractTypeEsiCharacter() {\n\t\t\treturn get(ESI_CONTRACT_TYPE_CHARACTER, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic CorporationContractsResponse.TypeEnum getContractTypeEsiCorporation() {\n\t\t\treturn get(ESI_CONTRACT_TYPE_CORPORATION, index);\n\t\t}\n\n//IndustryJobStatus\n\t\t@Override\n\t\tpublic RawIndustryJob.IndustryJobStatus getIndustryJobStatusRaw() {\n\t\t\treturn get(RAW_INDUSTRY_JOB_STATUS, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic CharacterIndustryJobsResponse.StatusEnum getIndustryJobStatusEsiCharacter() {\n\t\t\treturn get(ESI_INDUSTRY_JOB_STATUS_CHARACTER, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic CorporationIndustryJobsResponse.StatusEnum getIndustryJobStatusEsiCorporation() {\n\t\t\treturn get(ESI_INDUSTRY_JOB_STATUS_CORPORATION, index);\n\t\t}\n\n//JournalContextType\n\t\t@Override\n\t\tpublic ContextType getJournalContextTypeRaw() {\n\t\t\treturn get(JOURNAL_DATA, index).getRawJournalContextType();\n\t\t}\n\n\t\t@Override\n\t\tpublic CharacterWalletJournalResponse.ContextIdTypeEnum getJournalContextTypeEsiCharacter() {\n\t\t\treturn get(JOURNAL_DATA, index).getEsiJournalContextTypeCharacter();\n\t\t}\n\n\t\t@Override\n\t\tpublic CorporationWalletJournalResponse.ContextIdTypeEnum getJournalContextTypeEsiCorporation() {\n\t\t\treturn get(JOURNAL_DATA, index).getEsiJournalContextTypeCorporation();\n\t\t}\n//JournalRefType\n\t\t@Override\n\t\tpublic RawJournalRefType getJournalRefTypeRaw() {\n\t\t\treturn get(JOURNAL_DATA, index).getRawJournalRefType();\n\t\t}\n\n\t\t@Override\n\t\tpublic CharacterWalletJournalResponse.RefTypeEnum getJournalRefTypeEsiCharacter() {\n\t\t\treturn get(JOURNAL_DATA, index).getEsiJournalRefTypeCharacter();\n\t\t}\n\n\t\t@Override\n\t\tpublic CorporationWalletJournalResponse.RefTypeEnum getJournalRefTypeEsiCorporation() {\n\t\t\treturn get(JOURNAL_DATA, index).getEsiJournalRefTypeCorporation();\n\t\t}\n\n//MarketOrderRange\n\t\t@Override\n\t\tpublic RawMarketOrder.MarketOrderRange getMarketOrderRangeRaw() {\n\t\t\treturn get(RAW_MARKET_ORDER_RANGE, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic CharacterOrdersResponse.RangeEnum getMarketOrderRangeEsiCharacter() {\n\t\t\treturn get(ESI_MARKET_ORDER_RANGE_CHARACTER, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic CharacterOrdersHistoryResponse.RangeEnum getMarketOrderRangeEsiCharacterHistory() {\n\t\t\treturn get(ESI_MARKET_ORDER_RANGE_CHARACTER_HISTORY, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic CorporationOrdersResponse.RangeEnum getMarketOrderRangeEsiCorporation() {\n\t\t\treturn get(ESI_MARKET_ORDER_RANGE_CORPORATION, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic CorporationOrdersHistoryResponse.RangeEnum getMarketOrderRangeEsiCorporationHistory() {\n\t\t\treturn get(ESI_MARKET_ORDER_RANGE_CORPORATION_HISTORY, index);\n\t\t}\n\n//MarketOrderState\n\t\t@Override\n\t\tpublic RawMarketOrder.MarketOrderState getMarketOrderStateRaw() {\n\t\t\treturn get(RAW_MARKET_ORDER_STATE, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic CharacterOrdersHistoryResponse.StateEnum getMarketOrderStateEsiCharacterHistory() {\n\t\t\treturn get(ESI_MARKET_ORDER_STATE_CHARACTER_HISTORY, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic CorporationOrdersHistoryResponse.StateEnum getMarketOrderStateEsiCorporationHistory() {\n\t\t\treturn get(ESI_MARKET_ORDER_STATE_CORPORATION_HISTORY, index);\n\t\t}\n//MarketOrder Outbid\n\t\t@Override\n\t\tpublic Outbid getMarketOrdersOutbid() {\n\t\t\treturn ESI_MARKET_ORDER_OUTBID;\n\t\t}\n\n//Owner\n\t\t@Override\n\t\tpublic EsiCallbackURL getEsiCallbackURL() {\n\t\t\treturn get(ESI_CALLBACK_URL, index);\n\t\t}\n\n//NPC Standing\n\t\t@Override\n\t\tpublic RawNpcStanding.FromType getNpcStandingFromType() {\n\t\t\treturn get(NPC_STANDING_FROM_TYPE, index);\n\t\t}\n\n\t\t@Override\n\t\tpublic TextIcon getTextIcon() {\n\t\t\treturn TEXT_ICON;\n\t\t}\n\t}\n\n\tprivate static class LocationFlag {\n\t\tprivate CharacterBlueprintsResponse.LocationFlagEnum locationFlagEsiBlueprintsCharacter;\n\t\tprivate CorporationBlueprintsResponse.LocationFlagEnum locationFlagEsiBlueprintsCorporation;\n\t\tprivate CharacterAssetsResponse.LocationFlagEnum locationFlagEsiAssetsCharacter;\n\t\tprivate CorporationAssetsResponse.LocationFlagEnum locationFlagEsiAssetsCorporation;\n\t\tprivate final ItemFlag itemFlag;\n\n\t\tpublic LocationFlag(ItemFlag itemFlag) {\n\t\t\tthis.itemFlag = itemFlag;\n\t\t}\n\n\t\tpublic boolean isEmpty() {\n\t\t\treturn locationFlagEsiBlueprintsCharacter == null\n\t\t\t\t\t|| locationFlagEsiBlueprintsCorporation == null\n\t\t\t\t\t|| locationFlagEsiAssetsCharacter == null\n\t\t\t\t\t|| locationFlagEsiAssetsCorporation == null;\n\t\t}\n\n\t\tpublic ItemFlag getItemFlag() {\n\t\t\treturn itemFlag;\n\t\t}\n\n\t\tpublic CharacterBlueprintsResponse.LocationFlagEnum getLocationFlagEsiBlueprintsCharacter() {\n\t\t\treturn locationFlagEsiBlueprintsCharacter;\n\t\t}\n\n\t\tpublic CorporationBlueprintsResponse.LocationFlagEnum getLocationFlagEsiBlueprintsCorporation() {\n\t\t\treturn locationFlagEsiBlueprintsCorporation;\n\t\t}\n\n\t\tpublic CharacterAssetsResponse.LocationFlagEnum getLocationFlagEsiAssetsCharacter() {\n\t\t\treturn locationFlagEsiAssetsCharacter;\n\t\t}\n\n\t\tpublic CorporationAssetsResponse.LocationFlagEnum getLocationFlagEsiAssetsCorporation() {\n\t\t\treturn locationFlagEsiAssetsCorporation;\n\t\t}\n\n\t\tpublic void setLocationFlag(CharacterAssetsResponse.LocationFlagEnum locationFlagEsiAssetsCharacter) {\n\t\t\tthis.locationFlagEsiAssetsCharacter = locationFlagEsiAssetsCharacter;\n\t\t}\n\n\t\tpublic void setLocationFlag(CorporationAssetsResponse.LocationFlagEnum locationFlagEsiAssetsCorporation) {\n\t\t\tthis.locationFlagEsiAssetsCorporation = locationFlagEsiAssetsCorporation;\n\t\t}\n\n\t\tpublic void setLocationFlag(CorporationBlueprintsResponse.LocationFlagEnum locationFlagEsiBlueprintsCorporation) {\n\t\t\tthis.locationFlagEsiBlueprintsCorporation = locationFlagEsiBlueprintsCorporation;\n\t\t}\n\n\t\tpublic void setLocationFlag(CharacterBlueprintsResponse.LocationFlagEnum locationFlagEsiBlueprintsCharacter) {\n\t\t\tthis.locationFlagEsiBlueprintsCharacter = locationFlagEsiBlueprintsCharacter;\n\t\t}\n\t}\n\n\tprivate static class JournalData {\n\t\tprivate CharacterWalletJournalResponse.RefTypeEnum EsiJournalRefTypeCharacter;\n\t\tprivate CorporationWalletJournalResponse.RefTypeEnum EsiJournalRefTypeCorporation;\n\t\tprivate ContextType rawJournalContextType;\n\n\t\tprivate final RawJournalRefType rawJournalRefType;\n\n\t\tpublic JournalData(RawJournalRefType rawJournalRefType) {\n\t\t\tthis.rawJournalRefType = rawJournalRefType;\n\t\t}\n\n\t\tpublic boolean isEmpty() {\n\t\t\treturn EsiJournalRefTypeCharacter == null || EsiJournalRefTypeCorporation == null;\n\t\t}\n\n\t\tpublic RawJournalRefType getRawJournalRefType() {\n\t\t\treturn rawJournalRefType;\n\t\t}\n\n\t\tpublic CharacterWalletJournalResponse.RefTypeEnum getEsiJournalRefTypeCharacter() {\n\t\t\treturn EsiJournalRefTypeCharacter;\n\t\t}\n\n\t\tpublic CorporationWalletJournalResponse.RefTypeEnum getEsiJournalRefTypeCorporation() {\n\t\t\treturn EsiJournalRefTypeCorporation;\n\t\t}\n\n\t\tpublic ContextType getRawJournalContextType() {\n\t\t\treturn rawJournalContextType;\n\t\t}\n\n\t\tpublic CharacterWalletJournalResponse.ContextIdTypeEnum getEsiJournalContextTypeCharacter() {\n\t\t\tif (rawJournalContextType == null) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn CharacterWalletJournalResponse.ContextIdTypeEnum.valueOf(rawJournalContextType.name());\n\t\t}\n\n\t\tpublic CorporationWalletJournalResponse.ContextIdTypeEnum getEsiJournalContextTypeCorporation() {\n\t\t\tif (rawJournalContextType == null) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn CorporationWalletJournalResponse.ContextIdTypeEnum.valueOf(rawJournalContextType.name());\n\t\t}\n\n\t\tpublic void setRefType(CharacterWalletJournalResponse.RefTypeEnum EsiJournalRefTypeCharacter) {\n\t\t\tthis.EsiJournalRefTypeCharacter = EsiJournalRefTypeCharacter;\n\t\t}\n\n\t\tpublic void setRefType(CorporationWalletJournalResponse.RefTypeEnum EsiJournalRefTypeCorporation) {\n\t\t\tthis.EsiJournalRefTypeCorporation = EsiJournalRefTypeCorporation;\n\t\t}\n\n\t\tpublic void setContextType(ContextType rawJournalContextType) {\n\t\t\tthis.rawJournalContextType = rawJournalContextType;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/shared/ConverterTestUtil.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.io.shared;\n\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Field;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Modifier;\nimport java.math.BigDecimal;\nimport java.time.OffsetDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Collections;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport javax.swing.JButton;\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\nimport net.nikr.eve.jeveasset.data.api.my.MyAccountBalance;\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\nimport net.nikr.eve.jeveasset.data.api.my.MyBlueprint;\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\nimport net.nikr.eve.jeveasset.data.api.my.MyExtraction;\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\nimport net.nikr.eve.jeveasset.data.api.my.MyJournal;\nimport net.nikr.eve.jeveasset.data.api.my.MyLoyaltyPoints;\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\nimport net.nikr.eve.jeveasset.data.api.my.MyMining;\nimport net.nikr.eve.jeveasset.data.api.my.MyNpcStanding;\nimport net.nikr.eve.jeveasset.data.api.my.MyShip;\nimport net.nikr.eve.jeveasset.data.api.my.MySkill;\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\nimport net.nikr.eve.jeveasset.data.api.raw.RawAccountBalance;\nimport net.nikr.eve.jeveasset.data.api.raw.RawAsset;\nimport net.nikr.eve.jeveasset.data.api.raw.RawBlueprint;\nimport net.nikr.eve.jeveasset.data.api.raw.RawClone;\nimport net.nikr.eve.jeveasset.data.api.raw.RawContract;\nimport net.nikr.eve.jeveasset.data.api.raw.RawContractItem;\nimport net.nikr.eve.jeveasset.data.api.raw.RawExtraction;\nimport net.nikr.eve.jeveasset.data.api.raw.RawIndustryJob;\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournal;\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournal.ContextType;\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournalRefType;\nimport net.nikr.eve.jeveasset.data.api.raw.RawLoyaltyPoints;\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder;\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder.Change;\nimport net.nikr.eve.jeveasset.data.api.raw.RawMining;\nimport net.nikr.eve.jeveasset.data.api.raw.RawNpcStanding;\nimport net.nikr.eve.jeveasset.data.api.raw.RawNpcStanding.FromType;\nimport net.nikr.eve.jeveasset.data.api.raw.RawSkill;\nimport net.nikr.eve.jeveasset.data.api.raw.RawTransaction;\nimport net.nikr.eve.jeveasset.data.sde.Item;\nimport net.nikr.eve.jeveasset.data.sde.ItemFlag;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.data.settings.MarketPriceData;\nimport net.nikr.eve.jeveasset.data.settings.PriceData;\nimport net.nikr.eve.jeveasset.data.settings.UserItem;\nimport net.nikr.eve.jeveasset.data.settings.tag.Tags;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Percent;\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.TextIcon;\nimport net.nikr.eve.jeveasset.gui.tabs.orders.Outbid;\nimport net.nikr.eve.jeveasset.io.esi.EsiCallbackURL;\nimport net.troja.eve.esi.ApiClient;\nimport net.troja.eve.esi.api.AssetsApi;\nimport net.troja.eve.esi.api.CharacterApi;\nimport net.troja.eve.esi.api.ClonesApi;\nimport net.troja.eve.esi.api.ContractsApi;\nimport net.troja.eve.esi.api.CorporationApi;\nimport net.troja.eve.esi.api.IndustryApi;\nimport net.troja.eve.esi.api.LocationApi;\nimport net.troja.eve.esi.api.LoyaltyApi;\nimport net.troja.eve.esi.api.MarketApi;\nimport net.troja.eve.esi.api.PlanetaryInteractionApi;\nimport net.troja.eve.esi.api.SkillsApi;\nimport net.troja.eve.esi.api.UniverseApi;\nimport net.troja.eve.esi.api.UserInterfaceApi;\nimport net.troja.eve.esi.api.WalletApi;\nimport net.troja.eve.esi.auth.SsoScopes;\nimport net.troja.eve.esi.model.CharacterAssetsResponse;\nimport net.troja.eve.esi.model.CharacterBlueprintsResponse;\nimport net.troja.eve.esi.model.CharacterContractsResponse;\nimport net.troja.eve.esi.model.CharacterIndustryJobsResponse;\nimport net.troja.eve.esi.model.CharacterLocationResponse;\nimport net.troja.eve.esi.model.CharacterMiningResponse;\nimport net.troja.eve.esi.model.CharacterOrdersHistoryResponse;\nimport net.troja.eve.esi.model.CharacterOrdersResponse;\nimport net.troja.eve.esi.model.CharacterRolesResponse.RolesEnum;\nimport net.troja.eve.esi.model.CharacterShipResponse;\nimport net.troja.eve.esi.model.CharacterWalletJournalResponse;\nimport net.troja.eve.esi.model.CharacterWalletTransactionsResponse;\nimport net.troja.eve.esi.model.ContractItemsResponse;\nimport net.troja.eve.esi.model.CorporationAssetsResponse;\nimport net.troja.eve.esi.model.CorporationBlueprintsResponse;\nimport net.troja.eve.esi.model.CorporationContractsResponse;\nimport net.troja.eve.esi.model.CorporationIndustryJobsResponse;\nimport net.troja.eve.esi.model.CorporationMiningExtractionsResponse;\nimport net.troja.eve.esi.model.CorporationOrdersHistoryResponse;\nimport net.troja.eve.esi.model.CorporationOrdersResponse;\nimport net.troja.eve.esi.model.CorporationWalletJournalResponse;\nimport net.troja.eve.esi.model.CorporationWalletsResponse;\nimport static org.junit.Assert.assertEquals;\nimport static org.junit.Assert.fail;\n\n\npublic class ConverterTestUtil {\n\n\tpublic static EsiOwner getEsiOwner(ConverterTestOptions options) {\n\t\treturn getEsiOwner(false, false, false, options);\n\t}\n\n\tpublic static EsiOwner getEsiOwner(boolean data, boolean setNull, boolean setValues, ConverterTestOptions options) {\n\t\tEsiOwner esiOwner = EsiOwner.create();\n\t\tsetValues(esiOwner, options);\n\t\tif (data) {\n\t\t\tsetData(esiOwner, setNull, setValues, options);\n\t\t\tesiOwner.setRoles(set(RolesEnum.DIRECTOR));\n\t\t\tesiOwner.setScopes(SsoScopes.ESI_CHARACTERS_READ_CORPORATION_ROLES_V1);\n\t\t}\n\t\treturn esiOwner;\n\t}\n\n\tprivate static void setData(OwnerType owner, boolean setNull, boolean setValues, ConverterTestOptions options) {\n\t\t/*\n\tprivate Long totalSkillPoints = null;\n\tprivate Integer unallocatedSkillPoints = null;\n\t\t*/\n\t\t//Account Balance\n\t\towner.setAccountBalances(list(getMyAccountBalance(owner, setValues, options)));\n\n\t\t//Asset\n\t\towner.setAssets(getMyAssets(owner, setNull, setValues, options));\n\n\t\t//Blueprint\n\t\tRawBlueprint rawBlueprint = getRawBlueprint(options);\n\t\towner.setBlueprints(map(rawBlueprint.getItemID(), rawBlueprint));\n\n\t\t//Contract\n\t\tMyContract saveMyContract = getMyContract(setNull, setValues, options);\n\t\towner.setContracts(map(saveMyContract, list(getMyContractItem(saveMyContract, setNull, setValues, options))));\n\n\t\t//IndustryJob\n\t\towner.setIndustryJobs(set(getMyIndustryJob(owner, setNull, setValues, options)));\n\n\t\t//Journal\n\t\towner.setJournal(set(getMyJournal(owner, setNull, setValues, options)));\n\n\t\t//MarketOrder\n\t\towner.setMarketOrders(set(getMyMarketOrder(owner, setNull, setValues, options)));\n\n\t\t//Transaction\n\t\towner.setTransactions(set(getMyTransaction(owner, setNull, setValues, options)));\n\n\t\t//Clones\n\t\towner.setClones(list(getRawClone(setNull, options)));\n\n\t\t//Skills\n\t\towner.setSkills(list(getMySkill(owner, setNull, setValues, options)));\n\n\t\t//Mining\n\t\towner.setMining(set(getMyMining(owner, setNull, setValues, options)));\n\n\t\t//Extractions\n\t\towner.setExtractions(set(getMyExtraction(owner, setNull, setValues, options)));\n\n\t\t//Loyalty Points\n\t\towner.setLoyaltyPoints(set(getMyLoyaltyPoints(owner, setNull, setValues, options)));\n\n\t\t//Npc Standing\n\t\towner.setNpcStanding(set(getMyNpcStanding(owner, setNull, setValues, options)));\n\n\t\t//Wallet Divisions\n\t\t//owner.setWalletDivisions(walletDivisions);\n\n\t\t//Asset Divisions\n\t\t//owner.setAssetDivisions(assetDivisions);\n\t}\n\n\tpublic static <T> Set<T> set(T o) {\n        return new HashSet<>(Collections.singleton(o));\n    }\n\n\tpublic static <K,V> Map<K,V> map(K key, V value) {\n        return new HashMap<>(Collections.singletonMap(key, value));\n    }\n\n\tpublic static <T> List<T> list(T o) {\n        return new ArrayList<>(Collections.singletonList(o));\n    }\n\n\tprivate static Item getItem(ConverterTestOptions options) {\n\t\treturn ApiIdConverter.getItem(options.getInteger());\n\t}\n\n\tpublic static RawAccountBalance getRawAccountBalance(ConverterTestOptions options) {\n\t\tRawAccountBalance rawAccountBalance = RawAccountBalance.create();\n\t\tsetValues(rawAccountBalance, options, null);\n\t\treturn rawAccountBalance;\n\t}\n\n\tpublic static MyAccountBalance getMyAccountBalance(OwnerType owner, boolean setValues, ConverterTestOptions options) {\n\t\tMyAccountBalance accountBalance = new MyAccountBalance(getRawAccountBalance(options), owner);\n\t\tif (setValues) {\n\t\t\tsetValues(accountBalance, options, null, false);\n\t\t}\n\t\treturn accountBalance;\n\t}\n\n\tpublic static RawAsset getRawAsset(boolean setNull, ConverterTestOptions options) {\n\t\tRawAsset rawAsset = RawAsset.create();\n\t\tsetValues(rawAsset, options, setNull ? CharacterAssetsResponse.class : null);\n\t\treturn rawAsset;\n\t}\n\n\tpublic static MyAsset getMyAsset(OwnerType owner, boolean setNull, boolean setValues, ConverterTestOptions options) {\n\t\tMyAsset asset = new MyAsset(getRawAsset(setNull, options), getItem(options), owner, new ArrayList<>());\n\t\tif (setValues) {\n\t\t\tsetValues(asset, options, null, false);\n\t\t}\n\t\treturn asset;\n\t}\n\n\tpublic static List<MyAsset> getMyAssets(OwnerType owner, boolean setNull, boolean setValues, ConverterTestOptions options) {\n\t\tMyAsset rootAsset = getMyAsset(owner, setNull, setValues, options);\n\t\tif (setValues) {\n\t\t\tsetValues(rootAsset, options, null, false);\n\t\t}\n\t\trootAsset.setItemID(rootAsset.getItemID() + 1);\n\t\tMyAsset childAsset = getMyAsset(owner, setNull, setValues, options);\n\t\tif (setValues) {\n\t\t\tsetValues(childAsset, options, null, false);\n\t\t}\n\t\trootAsset.getAssets().add(childAsset);\n\n\t\treturn list(rootAsset);\n\t}\n\n\tpublic static RawBlueprint getRawBlueprint(ConverterTestOptions options) {\n\t\tRawBlueprint rawBlueprint = RawBlueprint.create();\n\t\tsetValues(rawBlueprint, options, CharacterBlueprintsResponse.class);\n\t\treturn rawBlueprint;\n\t}\n\n\tpublic static RawContract getRawContract(boolean setNull, ConverterTestOptions options) {\n\t\tRawContract rawContract = RawContract.create();\n\t\tsetValues(rawContract, options, setNull ? CharacterContractsResponse.class : null);\n\t\treturn rawContract;\n\t}\n\n\tpublic static MyContract getMyContract(boolean setNull, boolean setValues, ConverterTestOptions options) {\n\t\tMyContract contract = new MyContract(getRawContract(setNull, options));\n\t\tif (setValues) {\n\t\t\tsetValues(contract, options, null, false);\n\t\t}\n\t\treturn contract;\n\t}\n\n\tpublic static RawContractItem getRawContractItem(boolean setNull, ConverterTestOptions options) {\n\t\tRawContractItem rawContractItem = RawContractItem.create();\n\t\tsetValues(rawContractItem, options, setNull ? ContractItemsResponse.class : null);\n\t\treturn rawContractItem;\n\t}\n\n\tpublic static MyContractItem getMyContractItem(MyContract contract, boolean setNull, boolean setValues, ConverterTestOptions options) {\n\t\tMyContractItem contractItem = new MyContractItem(getRawContractItem(setNull, options), contract, getItem(options));\n\t\tif (setValues) {\n\t\t\tsetValues(contractItem, options, null, false);\n\t\t}\n\t\treturn contractItem;\n\t}\n\n\tpublic static RawIndustryJob getRawIndustryJob(boolean setNull, ConverterTestOptions options) {\n\t\tRawIndustryJob rawIndustryJob = RawIndustryJob.create();\n\t\tsetValues(rawIndustryJob, options, setNull ? CharacterIndustryJobsResponse.class : null);\n\t\treturn rawIndustryJob;\n\t}\n\n\tpublic static MyIndustryJob getMyIndustryJob(OwnerType owner, boolean setNull, boolean setValues, ConverterTestOptions options) {\n\t\tRawIndustryJob rawIndustryJob = getRawIndustryJob(setNull, options);\n\t\tItem item = getItem(options);\n\t\tItem output = ApiIdConverter.getItem(rawIndustryJob.getProductTypeID());\n\t\tMyIndustryJob industryJob = new MyIndustryJob(rawIndustryJob, item, output, owner);\n\t\tif (setValues) {\n\t\t\tsetValues(industryJob, options, null, false);\n\t\t}\n\t\treturn industryJob;\n\t}\n\n\tpublic static RawJournal getRawJournal(boolean setNull, ConverterTestOptions options) {\n\t\tRawJournal rawJournal = RawJournal.create();\n\t\tsetValues(rawJournal, options, setNull ? CharacterWalletJournalResponse.class : null);\n\t\treturn rawJournal;\n\t}\n\n\tpublic static MyJournal getMyJournal(OwnerType owner, boolean setNull, boolean setValues, ConverterTestOptions options) {\n\t\tMyJournal journal = new MyJournal(getRawJournal(setNull, options), owner);\n\t\tif (setValues) {\n\t\t\tsetValues(journal, options, null, false);\n\t\t}\n\t\treturn journal;\n\t}\n\n\tpublic static RawMarketOrder getRawMarketOrder(boolean setNull, ConverterTestOptions options) {\n\t\tRawMarketOrder rawMarketOrder = RawMarketOrder.create();\n\t\tsetValues(rawMarketOrder, options, setNull ? CharacterOrdersResponse.class : null);\n\t\treturn rawMarketOrder;\n\t}\n\n\tpublic static MyMarketOrder getMyMarketOrder(OwnerType owner, boolean setNull, boolean setValues, ConverterTestOptions options) {\n\t\tMyMarketOrder marketOrder = new MyMarketOrder(getRawMarketOrder(setNull, options), getItem(options), owner);\n\t\tif (setValues) {\n\t\t\tsetValues(marketOrder, options, null, false);\n\t\t}\n\t\treturn marketOrder;\n\t}\n\n\tpublic static RawTransaction getRawTransaction(boolean setNull, ConverterTestOptions options) {\n\t\tRawTransaction rawTransaction = RawTransaction.create();\n\t\tsetValues(rawTransaction, options, setNull ? CharacterWalletTransactionsResponse.class : null);\n\t\treturn rawTransaction;\n\t}\n\n\tpublic static MyTransaction getMyTransaction(OwnerType owner, boolean setNull, boolean setValues, ConverterTestOptions options) {\n\t\tMyTransaction transaction = new MyTransaction(getRawTransaction(setNull, options), getItem(options), owner);\n\t\tif (setValues) {\n\t\t\tsetValues(transaction, options, null, false);\n\t\t}\n\t\treturn transaction;\n\t}\n\n\tpublic static RawClone getRawClone(boolean setNull, ConverterTestOptions options) {\n\t\tRawClone rawClone = RawClone.create();\n\t\tsetValues(rawClone, options, setNull ? CharacterMiningResponse.class : null);\n\t\treturn rawClone;\n\t}\n\n\tpublic static RawSkill getRawSkill(boolean setNull, ConverterTestOptions options) {\n\t\tRawSkill rawSkill = RawSkill.create();\n\t\tsetValues(rawSkill, options, setNull ? CharacterMiningResponse.class : null);\n\t\treturn rawSkill;\n\t}\n\n\tpublic static MySkill getMySkill(OwnerType owner, boolean setNull, boolean setValues, ConverterTestOptions options) {\n\t\tMySkill skill = new MySkill(getRawSkill(setNull, options), getItem(options), options.getString());\n\t\tif (setValues) {\n\t\t\tsetValues(skill, options, null, false);\n\t\t}\n\t\treturn skill;\n\t}\n\n\tpublic static RawLoyaltyPoints getRawLoyaltyPoints(boolean setNull, ConverterTestOptions options) {\n\t\tRawLoyaltyPoints rawLoyaltyPoints = RawLoyaltyPoints.create();\n\t\tsetValues(rawLoyaltyPoints, options, setNull ? CharacterMiningResponse.class : null);\n\t\treturn rawLoyaltyPoints;\n\t}\n\n\tpublic static MyLoyaltyPoints getMyLoyaltyPoints(OwnerType owner, boolean setNull, boolean setValues, ConverterTestOptions options) {\n\t\tMyLoyaltyPoints loyaltyPoints = new MyLoyaltyPoints(getRawLoyaltyPoints(setNull, options), owner);\n\t\tif (setValues) {\n\t\t\tsetValues(loyaltyPoints, options, null, false);\n\t\t}\n\t\treturn loyaltyPoints;\n\t}\n\n\tpublic static RawNpcStanding getRawNpcStanding(boolean setNull, ConverterTestOptions options) {\n\t\tRawNpcStanding rawNpcStanding = RawNpcStanding.create();\n\t\tsetValues(rawNpcStanding, options, setNull ? CharacterMiningResponse.class : null);\n\t\treturn rawNpcStanding;\n\t}\n\n\tpublic static MyNpcStanding getMyNpcStanding(OwnerType owner, boolean setNull, boolean setValues, ConverterTestOptions options) {\n\t\tMyNpcStanding npcStanding = new MyNpcStanding(getRawNpcStanding(setNull, options), owner);\n\t\tif (setValues) {\n\t\t\tsetValues(npcStanding, options, null, false);\n\t\t}\n\t\treturn npcStanding;\n\t}\n\n\tpublic static RawMining getRawMining(boolean setNull, ConverterTestOptions options) {\n\t\tRawMining rawMining = RawMining.create();\n\t\tsetValues(rawMining, options, setNull ? CharacterMiningResponse.class : null);\n\t\treturn rawMining;\n\t}\n\n\tpublic static MyMining getMyMining(OwnerType owner, boolean setNull, boolean setValues, ConverterTestOptions options) {\n\t\tMyMining mining = new MyMining(getRawMining(setNull, options), getItem(options), options.getMyLocation());\n\t\tif (setValues) {\n\t\t\tsetValues(mining, options, null, false);\n\t\t}\n\t\treturn mining;\n\t}\n\n\tpublic static RawExtraction getRawExtraction(boolean setNull, ConverterTestOptions options) {\n\t\tRawExtraction rawExtraction = RawExtraction.create();\n\t\tsetValues(rawExtraction, options, setNull ? CorporationMiningExtractionsResponse.class : null);\n\t\treturn rawExtraction;\n\t}\n\n\tpublic static MyExtraction getMyExtraction(OwnerType owner, boolean setNull, boolean setValues, ConverterTestOptions options) {\n\t\tMyExtraction mining = new MyExtraction(getRawExtraction(setNull, options), options.getMyLocation());\n\t\tif (setValues) {\n\t\t\tsetValues(mining, options, null, false);\n\t\t}\n\t\treturn mining;\n\t}\n\n\tpublic static void testOwner(OwnerType esiOwner, boolean setNull, ConverterTestOptions options) {\n\t\t//Account Balance\n\t\tassertEquals(esiOwner.getAccountBalances().size(), 1);\n\t\tMyAccountBalance loadAccountBalance = esiOwner.getAccountBalances().get(0);\n\t\ttestValues(loadAccountBalance, options, null, false);\n\n\t\t//Asset\n\t\tif (!esiOwner.getAssets().isEmpty()) {\n\t\t\tassertEquals(\"List empty @\" + options.getIndex(), 1, esiOwner.getAssets().size());\n\t\t\tMyAsset rootMyAsset = esiOwner.getAssets().get(0);\n\t\t\ttestValues(rootMyAsset, options, setNull ? CharacterAssetsResponse.class : null, false);\n\t\t\tassertEquals(\"List empty @\" + options.getIndex(), 1, rootMyAsset.getAssets().size());\n\t\t\tMyAsset childMyAsset = rootMyAsset.getAssets().get(0);\n\t\t\ttestValues(childMyAsset, options, setNull ? CharacterAssetsResponse.class : null, false);\n\t\t} else {\n\t\t\tassertEquals(esiOwner.getAssets().size(), 0);\n\t\t}\n\n\t\t//Blueprint\n\t\tassertEquals(esiOwner.getBlueprints().size(), 1);\n\t\tRawBlueprint loadRawBlueprint = esiOwner.getBlueprints().values().iterator().next();\n\t\ttestValues(loadRawBlueprint, options, setNull ? CharacterBlueprintsResponse.class : null, false);\n\n\t\t//Contract\n\t\tassertEquals(esiOwner.getContracts().size(), 1);\n\t\tMap.Entry<MyContract, List<MyContractItem>> entry = esiOwner.getContracts().entrySet().iterator().next();\n\t\ttestValues(entry.getKey(), options, setNull ? CharacterContractsResponse.class : null, false);\n\t\ttestValues(entry.getValue().iterator().next(), options, setNull ? ContractItemsResponse.class : null, false);\n\n\t\t//IndustryJobs\n\t\tassertEquals(esiOwner.getIndustryJobs().size(), 1);\n\t\tMyIndustryJob loadMyIndustryJob = esiOwner.getIndustryJobs().iterator().next();\n\t\ttestValues(loadMyIndustryJob, options, setNull ? CharacterIndustryJobsResponse.class : null, false);\n\n\t\t//Journal\n\t\tassertEquals(esiOwner.getJournal().size(), 1);\n\t\tMyJournal loadMyJournal = esiOwner.getJournal().iterator().next();\n\t\ttestValues(loadMyJournal, options, setNull ? CharacterWalletJournalResponse.class : null, false);\n\n\t\t//MarketOrder\n\t\tassertEquals(esiOwner.getMarketOrders().size(), 1);\n\t\tMyMarketOrder loadMyMarketOrder = esiOwner.getMarketOrders().iterator().next();\n\t\ttestValues(loadMyMarketOrder, options, setNull ? CharacterOrdersResponse.class : null, false);\n\n\t\t//Transactions\n\t\tassertEquals(esiOwner.getTransactions().size(), 1);\n\t\tMyTransaction loadMyTransaction = esiOwner.getTransactions().iterator().next();\n\t\ttestValues(loadMyTransaction, options, setNull ? CharacterWalletTransactionsResponse.class : null, false);\n\t}\n\n\tpublic static void setValues(Object object, ConverterTestOptions options) {\n\t\tsetValues(object, options, null, true);\n\t}\n\n\tpublic static void setValues(Object object, ConverterTestOptions options, Class<?> esi) {\n\t\tsetValues(object, options, esi, true);\n\t}\n\n\tprivate static void setValues(Object object, ConverterTestOptions options, Class<?> esi, boolean overwrite) {\n\t\tList<Field> fields = new ArrayList<>();\n\t\tfields.addAll(Arrays.asList(object.getClass().getDeclaredFields()));\n\t\tif (object.getClass().getSuperclass() != null) {\n\t\t\tfields.addAll(Arrays.asList(object.getClass().getSuperclass().getDeclaredFields()));\n\t\t}\n\t\tfields.addAll(Arrays.asList(object.getClass().getDeclaredFields()));\n\t\tMap<String, Boolean> optional = getOptional(esi);\n\t\tfor (Field field : fields) {\n\t\t\tClass<?> type = field.getType();\n\t\t\tString name = field.getName();\n\t\t\tif (ignore(object, field, type)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tfield.setAccessible(true);\n\t\t\t\tif (!overwrite && field.get(object) != null) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif ((Long.class.equals(type) || long.class.equals(type))\n\t\t\t\t\t\t&& (\"locationID\".equals(name)\n\t\t\t\t\t\t|| \"locationId\".equals(name)\n\t\t\t\t\t\t|| \"stationId\".equals(name)\n\t\t\t\t\t\t|| \"startLocationId\".equals(name)\n\t\t\t\t\t\t|| \"endLocationId\".equals(name))) {\n\t\t\t\t\tif (isOptional(optional, field)) {\n\t\t\t\t\t\tif (type.equals(Boolean.class) || type.equals(boolean.class)) {\n\t\t\t\t\t\t\tfield.set(object, false);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfield.set(object, options.getNull());\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfield.set(object, options.getLocationID());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfield.set(object, getValue(type, isOptional(optional, field), options));\n\t\t\t} catch (IllegalArgumentException | IllegalAccessException ex) {\n\t\t\t\tfail(ex.getMessage());\n\t\t\t}\n\t\t}\n\t//Account Balance\n\t\t//ESI\n\t\tif (object instanceof CorporationWalletsResponse) {\n\t\t\tCorporationWalletsResponse response = (CorporationWalletsResponse) object;\n\t\t\tresponse.setDivision(response.getDivision() - 999);\n\t\t}\n\t//Assets\n\t\t//ESI Character\n\t\tif (object instanceof CharacterAssetsResponse) {\n\t\t\tCharacterAssetsResponse asset = (CharacterAssetsResponse) object;\n\t\t\tasset.setItemId(asset.getItemId() + 1); //Workaround for itemID == locationID\n\t\t}\n\t\t//ESI Corporation\n\t\tif (object instanceof CorporationAssetsResponse) {\n\t\t\tCorporationAssetsResponse asset = (CorporationAssetsResponse) object;\n\t\t\tasset.setItemId(asset.getItemId() + 1); //Workaround for itemID == locationID\n\t\t}\n\t\t//ESI Ship\n\t\tif (object instanceof CharacterShipResponse) {\n\t\t\tCharacterShipResponse asset = (CharacterShipResponse) object;\n\t\t\tasset.setShipItemId(asset.getShipItemId()+ 1); //Workaround for itemID == locationID\n\t\t}\n\t\t//ESI Location\n\t\tif (object instanceof CharacterLocationResponse) {\n\t\t\tCharacterLocationResponse asset = (CharacterLocationResponse) object;\n\t\t\tlong locationID = options.getLocationID();\n\t\t\tif (locationID >= 30000000 && locationID <= 32000000) { //System\n\t\t\t\tasset.setSolarSystemId(locationID);\n\t\t\t\tasset.setStationId(null);\n\t\t\t\tasset.setStructureId(null);\n\t\t\t} else if (locationID >= 60000000 && locationID <= 64000000) { //Station\n\t\t\t\tasset.setSolarSystemId(null);\n\t\t\t\tasset.setStationId(locationID);\n\t\t\t\tasset.setStructureId(null);\n\t\t\t} else { //Other\n\t\t\t\tasset.setSolarSystemId(null);\n\t\t\t\tasset.setStationId(null);\n\t\t\t\tasset.setStructureId(locationID);\n\t\t\t}\n\t\t}\n\t\t//Raw\n\t\tif (object instanceof RawAsset) {\n\t\t\tRawAsset asset = (RawAsset) object;\n\t\t\tasset.setItemID(asset.getItemID() + 1); //Workaround for itemID == locationID\n\t\t}\n\t\t//EsiOwner\n\t\tif (object instanceof EsiOwner) {\n\t\t\tEsiOwner esiOwner = (EsiOwner) object;\n\t\t\tesiOwner.setAuth(EsiCallbackURL.LOCALHOST, options.getString(), options.getString());\n\t\t}\n\t}\n\n\tpublic static void testValues(Object object, ConverterTestOptions options) {\n\t\ttestValues(object, options, null, true);\n\t}\n\n\tpublic static void testValues(Object object, ConverterTestOptions options, Class<?> esi) {\n\t\ttestValues(object, options, esi, true);\n\t}\n\n\tpublic static void testValues(Object object, ConverterTestOptions options, Class<?> esi, boolean superClassOnly) {\n\t\tif (object instanceof MyAsset) {\n\t\t\tMyAsset myAsset = (MyAsset) object;\n\t\t\tif (myAsset.getAssets().isEmpty()) {\n\t\t\t\tmyAsset.setItemID(myAsset.getItemID() - 1); //Workaround for itemID == locationID\n\t\t\t} else {\n\t\t\t\tmyAsset.setItemID(myAsset.getItemID() - 2); //Workaround for itemID == locationID\n\t\t\t}\n\t\t\tmyAsset.setLocationID(options.getLong());\n\t\t\tmyAsset.setLocationFlagString(options.getString());\n\t\t\tmyAsset.setItemFlag(options.getItemFlag());\n\t\t}\n\t\tif (object instanceof MyContract) {\n\t\t\tMyContract myContract = (MyContract) object;\n\t\t\tif (myContract.getAvailability() == RawContract.ContractAvailability.PERSONAL\n\t\t\t\t\t&& (options.getContractAvailabilityRaw() == RawContract.ContractAvailability.CORPORATION\n\t\t\t\t\t|| options.getContractAvailabilityRaw() == RawContract.ContractAvailability.ALLIANCE)) {\n\t\t\t\tmyContract.setAvailability(options.getContractAvailabilityRaw());\n\t\t\t}\n\t\t\tif (myContract.getStatus() != null) {\n\t\t\t\tmyContract.setStatus(options.getContractStatusRaw());\n\t\t\t}\n\t\t}\n\t\tif (object instanceof MyContractItem) {\n\t\t\tMyContractItem myContractItem = (MyContractItem) object;\n\t\t\tmyContractItem.setItemID(options.getLong());\n\t\t\tmyContractItem.setLicensedRuns(options.getInteger());\n\t\t\tmyContractItem.setME(options.getInteger());\n\t\t\tmyContractItem.setTE(options.getInteger());\n\t\t}\n\t\tif (object instanceof MyIndustryJob) {\n\t\t\tMyIndustryJob industryJob = (MyIndustryJob) object;\n\t\t\tif (industryJob.getStatus() != null) {\n\t\t\t\tindustryJob.setStatus(options.getIndustryJobStatusRaw());\n\t\t\t}\n\t\t}\n\t\tif (object instanceof MyMarketOrder) {\n\t\t\tMyMarketOrder marketOrder = (MyMarketOrder) object;\n\t\t\tmarketOrder.setWalletDivision(options.getInteger());\n\t\t\tif (marketOrder.getState() != null) {\n\t\t\t\tmarketOrder.setState(options.getMarketOrderStateRaw());\n\t\t\t}\n\t\t\tmarketOrder.setStateString(options.getString());\n\t\t\tmarketOrder.setIssuedBy(options.getInteger());\n\t\t\tmarketOrder.setChanged(options.getDate());\n\t\t\tmarketOrder.addChanges(set(new Change(new Date(), 0.0, 0)));\n\t\t}\n\t\tif (object instanceof MyJournal) {\n\t\t\tMyJournal journal = (MyJournal) object;\n\t\t\tjournal.setDescription(options.getString());\n\t\t}\n\t\tMap<String, Boolean> optional = getOptional(esi);\n\t\tfor (Field field : getField(object, true)) {\n\t\t\tClass<?> type = field.getType();\n\t\t\tif (ignore(object, field, type)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tfield.setAccessible(true);\n\t\t\t\tassertEquals(getString(field, object, options.getIndex()), getValue(type, isOptional(optional, field), options), field.get(object));\n\t\t\t} catch (IllegalArgumentException | IllegalAccessException ex) {\n\t\t\t\tfail(ex.getMessage());\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static List<Field> getField(Object object, boolean superClassOnly) {\n\t\tList<Field> fields = new ArrayList<>();\n\t\tif (superClassOnly) {\n\t\t\tfields.addAll(Arrays.asList(object.getClass().getSuperclass().getDeclaredFields()));\n\t\t} else {\n\t\t\tfields.addAll(Arrays.asList(object.getClass().getSuperclass().getDeclaredFields()));\n\t\t\tfields.addAll(Arrays.asList(object.getClass().getDeclaredFields()));\n\t\t}\n\t\treturn fields;\n\t}\n\n\tprivate static boolean ignore(Object object, Field field, Class<?> type) {\n\t\tif (object.getClass().equals(MyMarketOrder.class) && field.getName().equals(\"regionId\")) {\n\t\t\treturn true;\n\t\t}\n\t\tif (Modifier.isStatic(field.getModifiers())) { //Ignore static fields\n\t\t\treturn true;\n\t\t}\n\t\tif (type.equals(List.class)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (type.equals(Set.class)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (type.equals(Map.class)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (type.equals(ApiClient.class)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (type.equals(MarketApi.class)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (type.equals(IndustryApi.class)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (type.equals(CharacterApi.class)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (type.equals(AssetsApi.class)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (type.equals(WalletApi.class)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (type.equals(UniverseApi.class)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (type.equals(ContractsApi.class)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (type.equals(CorporationApi.class)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (type.equals(LocationApi.class)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (type.equals(UserInterfaceApi.class)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (type.equals(PlanetaryInteractionApi.class)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (type.equals(SkillsApi.class)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (type.equals(LoyaltyApi.class)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (type.equals(ClonesApi.class)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate static Object getValue(Class<?> type, boolean optional, ConverterTestOptions options) {\n\t\tif (options == null) {\n\t\t\tthrow new RuntimeException(\"Option is null\");\n\t\t}\n\t\tif (optional) {\n\t\t\tif (type.equals(Boolean.class) || type.equals(boolean.class)) {\n\t\t\t\treturn false; //Optional boolean should default to false\n\t\t\t} else {\n\t\t\t\treturn options.getNull(); //Optional, must handle null\n\t\t\t}\n\t\t} else if (type.equals(Integer.class) || type.equals(int.class)) {\n\t\t\treturn options.getInteger();\n\t\t} else if (type.equals(Float.class) || type.equals(float.class)) {\n\t\t\treturn options.getFloat();\n\t\t} else if (type.equals(Boolean.class) || type.equals(boolean.class)) {\n\t\t\treturn options.getBoolean();\n\t\t} else if (type.equals(Long.class) || type.equals(long.class)) {\n\t\t\treturn options.getLong();\n\t\t} else if (type.equals(Double.class) || type.equals(double.class)) {\n\t\t\treturn options.getDouble();\n\t\t} else if (type.equals(String.class)) {\n\t\t\treturn options.getString();\n\t\t} else if (type.equals(Date.class)) {\n\t\t\treturn options.getDate();\n\t\t} else if (type.equals(ItemFlag.class)) {\n\t\t\treturn options.getItemFlag();\n\t\t} else if (type.equals(RawContract.ContractAvailability.class)) {\n\t\t\treturn options.getContractAvailabilityRaw();\n\t\t} else if (type.equals(RawContract.ContractStatus.class)) {\n\t\t\treturn options.getContractStatusRaw();\n\t\t} else if (type.equals(RawContract.ContractType.class)) {\n\t\t\treturn options.getContractTypeRaw();\n\t\t} else if (type.equals(RawIndustryJob.IndustryJobStatus.class)) {\n\t\t\treturn options.getIndustryJobStatusRaw();\n\t\t} else if (type.equals(RawJournalRefType.class)) {\n\t\t\treturn options.getJournalRefTypeRaw();\n\t\t} else if (type.equals(RawMarketOrder.MarketOrderRange.class)) {\n\t\t\treturn options.getMarketOrderRangeRaw();\n\t\t} else if (type.equals(RawMarketOrder.MarketOrderState.class)) {\n\t\t\treturn options.getMarketOrderStateRaw();\n\t\t} else if (type.equals(MyLocation.class)) {\n\t\t\treturn options.getMyLocation();\n\t\t} else if (type.equals(PriceData.class)) {\n\t\t\treturn options.getPriceData();\n\t\t} else if (type.equals(UserItem.class)) {\n\t\t\treturn options.getUserPrice();\n\t\t} else if (type.equals(MarketPriceData.class)) {\n\t\t\treturn options.getMarketPriceData();\n\t\t} else if (type.equals(Tags.class)) {\n\t\t\treturn options.getTags();\n\t\t} else if (type.equals(RawBlueprint.class)) {\n\t\t\treturn options.getRawBlueprint();\n\t\t} else if (type.equals(Percent.class)) {\n\t\t\treturn options.getPercent();\n\t\t} else if (type.equals(CharacterBlueprintsResponse.LocationFlagEnum.class)) {\n\t\t\treturn options.getLocationFlagEsiBlueprintCharacter();\n\t\t} else if (type.equals(CorporationBlueprintsResponse.LocationFlagEnum.class)) {\n\t\t\treturn options.getLocationFlagEsiBlueprintCorporation();\n\t\t} else if (type.equals(OffsetDateTime.class)) {\n\t\t\treturn options.getOffsetDateTime();\n\t\t} else if (type.equals(CharacterIndustryJobsResponse.StatusEnum.class)) {\n\t\t\treturn options.getIndustryJobStatusEsiCharacter();\n\t\t} else if (type.equals(CorporationIndustryJobsResponse.StatusEnum.class)) {\n\t\t\treturn options.getIndustryJobStatusEsiCorporation();\n\t\t} else if (type.equals(CharacterWalletJournalResponse.RefTypeEnum.class)) {\n\t\t\treturn options.getJournalRefTypeEsiCharacter();\n\t\t} else if (type.equals(CharacterWalletJournalResponse.ContextIdTypeEnum.class)) {\n\t\t\treturn options.getJournalContextTypeEsiCharacter();\n\t\t} else if (type.equals(CorporationWalletJournalResponse.RefTypeEnum.class)) {\n\t\t\treturn options.getJournalRefTypeEsiCorporation();\n\t\t} else if (type.equals(CorporationWalletJournalResponse.ContextIdTypeEnum.class)) {\n\t\t\treturn options.getJournalContextTypeEsiCorporation();\n\t\t} else if (type.equals(ContextType.class)) {\n\t\t\treturn options.getJournalContextTypeRaw();\n\t\t} else if (type.equals(CharacterContractsResponse.AvailabilityEnum.class)) {\n\t\t\treturn options.getContractAvailabilityEsiCharacter();\n\t\t} else if (type.equals(CorporationContractsResponse.AvailabilityEnum.class)) {\n\t\t\treturn options.getContractAvailabilityEsiCorporation();\n\t\t} else if (type.equals(CharacterContractsResponse.StatusEnum.class)) {\n\t\t\treturn options.getContractStatusEsiCharacter();\n\t\t} else if (type.equals(CorporationContractsResponse.StatusEnum.class)) {\n\t\t\treturn options.getContractStatusEsiCorporation();\n\t\t} else if (type.equals(CharacterContractsResponse.TypeEnum.class)) {\n\t\t\treturn options.getContractTypeEsiCharacter();\n\t\t} else if (type.equals(CorporationContractsResponse.TypeEnum.class)) {\n\t\t\treturn options.getContractTypeEsiCorporation();\n\t\t} else if (type.equals(CharacterOrdersResponse.RangeEnum.class)) {\n\t\t\treturn options.getMarketOrderRangeEsiCharacter();\n\t\t} else if (type.equals(CorporationOrdersResponse.RangeEnum.class)) {//\n\t\t\treturn options.getMarketOrderRangeEsiCorporation();\n\t\t} else if (type.equals(CharacterAssetsResponse.LocationFlagEnum.class)) {\n\t\t\treturn options.getLocationFlagEsiAssetsCharacter();\n\t\t} else if (type.equals(CorporationAssetsResponse.LocationFlagEnum.class)) {\n\t\t\treturn options.getLocationFlagEsiAssetsCorporation();\n\t\t} else if (type.equals(CharacterAssetsResponse.LocationTypeEnum.class)) {\n\t\t\treturn options.getLocationTypeEsiCharacter();\n\t\t} else if (type.equals(CorporationAssetsResponse.LocationTypeEnum.class)) {\n\t\t\treturn options.getLocationTypeEsiCorporation();\n\t\t} else if (type.equals(BigDecimal.class)) {\n\t\t\treturn options.getBigDecimal();\n\t\t} else if (type.equals(EsiCallbackURL.class)) {\n\t\t\treturn options.getEsiCallbackURL();\n\t\t} else if (type.equals(ApiClient.class)) {\n\t\t\treturn new ApiClient();\n\t\t} else if (type.equals(CorporationOrdersHistoryResponse.RangeEnum.class)) {\n\t\t\treturn options.getMarketOrderRangeEsiCorporationHistory();\n\t\t} else if (type.equals(CorporationOrdersHistoryResponse.StateEnum.class)) {\n\t\t\treturn options.getMarketOrderStateEsiCorporationHistory();\n\t\t} else if (type.equals(CharacterOrdersHistoryResponse.RangeEnum.class)) {\n\t\t\treturn options.getMarketOrderRangeEsiCharacterHistory();\n\t\t} else if (type.equals(CharacterOrdersHistoryResponse.StateEnum.class)) {\n\t\t\treturn options.getMarketOrderStateEsiCharacterHistory();\n\t\t} else if (type.equals(Outbid.class)) {\n\t\t\treturn options.getMarketOrdersOutbid();\n\t\t} else if (type.equals(MyShip.class)) {\n\t\t\treturn options.getMyShip();\n\t\t} else if (type.equals(JButton.class)) {\n\t\t\treturn options.getButton();\n\t\t} else if (type.equals(MyBlueprint.class)) {\n\t\t\treturn options.getMyBlueprint();\n\t\t} else if (type.equals(FromType.class)) {\n\t\t\treturn options.getNpcStandingFromType();\n\t\t} else if (type.equals(TextIcon.class)) {\n\t\t\treturn options.getTextIcon();\n\t\t} else {\n\t\t\tfail(\"No test value for: \" + type.getSimpleName());\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate static String getString(Field field, Object object, int index) {\n\t\treturn object.getClass().getSimpleName() + \"->\" + field.getName() + \" @index: \" + index;\n\t}\n\n\tprivate static boolean isOptional(Map<String, Boolean> optional, Field field) {\n\t\tBoolean isOptional = optional.get(field.getName().toLowerCase());\n\t\tif (isOptional == null) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn isOptional;\n\t\t}\n\t}\n\n\tprivate static Map<String, Boolean> getOptional(Class<?> esi) {\n\t\tMap<String, Boolean> optional = new HashMap<>();\n\t\tif (esi == null) {\n\t\t\treturn optional;\n\t\t}\n\t\tfor (Method method : esi.getDeclaredMethods()) {\n\t\t\tString methodName = method.getName();\n\t\t\tString methodId = esi.getSimpleName() + \"->\" + methodName;\n\t\t\tif (methodId.equals(\"CharacterAssetsResponse->getQuantity\") //Quantity is not optional in RawAsset\n\t\t\t\t\t|| methodId.equals(\"CorporationAssetsResponse->getQuantity\") //Quantity is not optional in RawAsset\n\t\t\t\t\t//RawJournalExtraInfo is not optional in RawJournal\n\t\t\t\t\t|| methodId.equals(\"CharacterWalletJournalResponse->getExtraInfo\")\n\t\t\t\t\t|| methodId.equals(\"CorporationWalletJournalResponse->getExtraInfo\")\n\t\t\t\t\t//escrow is not optional in RawMarketOrder\n\t\t\t\t\t|| methodId.equals(\"CharacterOrdersHistoryResponse->getEscrow\")\n\t\t\t\t\t|| methodId.equals(\"CorporationOrdersHistoryResponse->getEscrow\")\n\t\t\t\t\t|| methodId.equals(\"CharacterOrdersResponse->getEscrow\")\n\t\t\t\t\t|| methodId.equals(\"CorporationOrdersResponse->getEscrow\")\n\t\t\t\t\t// issuedBy workaround for optional in CorporationOrdersHistoryResponse\n\t\t\t\t\t|| methodId.equals(\"CorporationOrdersHistoryResponse->getIssuedBy\")\n\t\t\t\t\t//isBuyOrder is not optional in RawMarketOrder\n\t\t\t\t\t|| methodId.equals(\"CharacterOrdersHistoryResponse->getIsBuyOrder\")\n\t\t\t\t\t|| methodId.equals(\"CorporationOrdersHistoryResponse->getIsBuyOrder\")\n\t\t\t\t\t|| methodId.equals(\"CharacterOrdersResponse->getIsBuyOrder\")\n\t\t\t\t\t|| methodId.equals(\"CorporationOrdersResponse->getIsBuyOrder\")\n\t\t\t\t\t//minVolume is not optional in RawMarketOrder\n\t\t\t\t\t|| methodId.equals(\"CharacterOrdersHistoryResponse->getMinVolume\")\n\t\t\t\t\t|| methodId.equals(\"CorporationOrdersHistoryResponse->getMinVolume\")\n\t\t\t\t\t|| methodId.equals(\"CharacterOrdersResponse->getMinVolume\")\n\t\t\t\t\t|| methodId.equals(\"CorporationOrdersResponse->getMinVolume\")\n\t\t\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (methodName.startsWith(\"get\") && methodName.endsWith(\"String\") ) {\n\t\t\t\toptional.put(methodName.toLowerCase().replaceFirst(\"get\", \"\").replace(\"string\", \"\"), false);\n\t\t\t} else if (Enum.class.isAssignableFrom(method.getReturnType())) {\n\t\t\t\t//All enums should be treaded as optional as they can be null for new unknown values\n\t\t\t\toptional.put(methodName.toLowerCase().replaceFirst(\"get\", \"\") + \"enum\", true);\n\t\t\t} else if (methodName.startsWith(\"get\")) {\n\t\t\t\tAnnotation[] annotations = method.getAnnotations();\n\t\t\t\tfor (Annotation annotation : annotations) {\n\t\t\t\t\tif (javax.annotation.Nonnull.class.equals(annotation.annotationType())) {\n\t\t\t\t\t\toptional.put(methodName.toLowerCase().replaceFirst(\"get\", \"\"), false);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (javax.annotation.Nullable.class.equals(annotation.annotationType())) {\n\t\t\t\t\t\toptional.put(methodName.toLowerCase().replaceFirst(\"get\", \"\"), true);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t}\n\t\treturn optional;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/shared/DataConverterTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.shared;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Collections;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAccountBalance;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyExtraction;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyJournal;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyLoyaltyPoints;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMining;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawAsset;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawContract;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournal;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder.MarketOrderState;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawTransaction;\r\nimport net.nikr.eve.jeveasset.i18n.General;\r\nimport net.nikr.eve.jeveasset.io.local.profile.ProfileDatabase;\r\nimport static org.hamcrest.CoreMatchers.is;\r\nimport static org.hamcrest.MatcherAssert.assertThat;\r\nimport static org.junit.Assert.assertEquals;\r\nimport static org.junit.Assert.assertFalse;\r\nimport static org.junit.Assert.assertNotNull;\r\nimport static org.junit.Assert.assertNull;\r\nimport static org.junit.Assert.assertTrue;\r\nimport org.junit.BeforeClass;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class DataConverterTest extends TestUtil {\r\n\r\n\t@BeforeClass\r\n\tpublic static void setUpClass() {\r\n\t\tProfileDatabase.setUpdateConnectionUrl(null);\r\n\t}\r\n\t\r\n\t@Test\r\n\tpublic void testAssetIndustryJob() {\r\n\t\tDate date = new Date();\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tEsiOwner esiOwner = ConverterTestUtil.getEsiOwner(options);\r\n\t\t\tesiOwner.setAssetLastUpdate(date);\r\n\t\t\tMyIndustryJob industryJob = ConverterTestUtil.getMyIndustryJob(esiOwner, false, true, options);\r\n\t\t\tindustryJob.setJobID(industryJob.getJobID() + 1);\r\n\t\t\tindustryJob.setBlueprintID(industryJob.getBlueprintID() + 1);\r\n\t\t\tindustryJob.setCompletedDate(new Date(date.getTime() + 1L));\r\n\t\t\tList<MyAsset> assets = DataConverter.assetIndustryJob(Collections.singletonList(industryJob), true, true);\r\n\t\t\tif (industryJob.isDone()) {\r\n\t\t\t\tassertTrue(assets.isEmpty());\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tassertFalse(assets.isEmpty());\r\n\r\n\t\t\tMyAsset asset = assets.get(0);\r\n\t\t\t//Quantity\r\n\t\t\tassertEquals((Object) asset.getQuantity(), -2);\r\n\t\t\tasset.setQuantity(options.getInteger());\r\n\t\t\tassertEquals(asset.getItemFlag().getFlagName(), General.get().industryJobFlag());\r\n\t\t\tassertEquals(asset.getItemFlag().getFlagText(), General.get().industryJobFlag());\r\n\t\t\t//ItemFlag\r\n\t\t\tasset.setItemFlag(options.getItemFlag());\r\n\t\t\tConverterTestUtil.testValues(assets.get(0), options);\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testAssetMarketOrder() {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tMyMarketOrder marketOrder = ConverterTestUtil.getMyMarketOrder(ConverterTestUtil.getEsiOwner(options), false, true, options);\r\n\t\t\tmarketOrder.setOrderID(marketOrder.getOrderID() + 1);\r\n\t\t\tList<MyAsset> assets = DataConverter.assetMarketOrder(Collections.singletonList(marketOrder), true, true);\r\n\t\t\tif (assets.isEmpty()) {\r\n\t\t\t\tassertFalse(marketOrder.isActive());\r\n\t\t\t} else {\r\n\t\t\t\tMyAsset asset = assets.get(0);\r\n\t\t\t\t//Singleton\r\n\t\t\t\tassertEquals(asset.isSingleton(), false);\r\n\t\t\t\tasset.setSingleton(true);\r\n\t\t\t\t//ItemFlag\r\n\t\t\t\tassertEquals(asset.getItemFlag().getFlagName(), General.get().marketOrderBuyFlag());\r\n\t\t\t\tassertEquals(asset.getItemFlag().getFlagText(), General.get().marketOrderBuyFlag());\r\n\t\t\t\tasset.setItemFlag(options.getItemFlag());\r\n\t\t\t\tConverterTestUtil.testValues(asset, options);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testAssetContracts() {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tMyContractItem contractItem = ConverterTestUtil.getMyContractItem(ConverterTestUtil.getMyContract(false, true, options), false, true, options);\r\n\t\t\tcontractItem.setRecordID(contractItem.getRecordID() + 1);\r\n\t\t\tcontractItem.setItemID(contractItem.getItemID()+ 1);\r\n\t\t\tfinal Map<Long, OwnerType> owners = new HashMap<>();\r\n\t\t\tEsiOwner owner = ConverterTestUtil.getEsiOwner(options);\r\n\t\t\towners.put(owner.getOwnerID(), owner);\r\n\t\t\tList<MyAsset> assets = DataConverter.assetContracts(Collections.singletonList(contractItem), owners, true, true);\r\n\t\t\tif (assets.isEmpty()) {\r\n\t\t\t\tassertTrue((!contractItem.getContract().isOpen()) || contractItem.getContract().isIgnoreContract());\r\n\t\t\t} else {\r\n\t\t\t\tMyAsset asset = assets.get(0);\r\n\t\t\t\tassertEquals(asset.getItemFlag().getFlagName(), General.get().contractIncluded());\r\n\t\t\t\tassertEquals(asset.getItemFlag().getFlagText(), General.get().contractIncluded());\r\n\t\t\t\tasset.setItemFlag(options.getItemFlag());\r\n\t\t\t\tConverterTestUtil.testValues(asset, options);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testConvertRawAccountBalance() {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tList<MyAccountBalance> accountBalances = DataConverter.convertRawAccountBalance(Collections.singletonList(ConverterTestUtil.getRawAccountBalance(options)), ConverterTestUtil.getEsiOwner(options));\r\n\t\t\tConverterTestUtil.testValues(accountBalances.get(0), options);\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testToMyAccountBalance() {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tMyAccountBalance accountBalance = DataConverter.toMyAccountBalance(ConverterTestUtil.getRawAccountBalance(options), ConverterTestUtil.getEsiOwner(options));\r\n\t\t\tConverterTestUtil.testValues(accountBalance, options);\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testConvertRawAssets() {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tList<RawAsset> rawAssets = new ArrayList<>();\r\n\t\t\tRawAsset rootRawAsset = ConverterTestUtil.getRawAsset(false, options);\r\n\t\t\trootRawAsset.setItemID(rootRawAsset.getItemID() + 1);\r\n\t\t\trawAssets.add(rootRawAsset);\r\n\r\n\t\t\tRawAsset childRawAsset = ConverterTestUtil.getRawAsset(false, options);\r\n\t\t\trawAssets.add(childRawAsset);\r\n\t\t\tchildRawAsset.setLocationID(rootRawAsset.getItemID());\r\n\r\n\t\t\tEsiOwner owner = ConverterTestUtil.getEsiOwner(options);\r\n\t\t\tList<MyAsset> assets = DataConverter.convertRawAssets(rawAssets, owner);\r\n\t\t\tif (!assets.isEmpty()) {\r\n\t\t\t\tassertEquals(\"List empty @\" + options.getIndex(), 1, assets.size());\r\n\t\t\t\tConverterTestUtil.testValues(assets.get(0), options);\r\n\r\n\t\t\t\tassertEquals(\"List empty @\" + options.getIndex(), 1, assets.get(0).getAssets().size());\r\n\t\t\t\tMyAsset childMyAsset = assets.get(0).getAssets().get(0);\r\n\t\t\t\tConverterTestUtil.testValues(childMyAsset, options);\r\n\t\t\t} else {\r\n\t\t\t\tassertEquals(assets.size(), 0);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testToMyAsset() {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tRawAsset rawAsset = ConverterTestUtil.getRawAsset(false, options);\r\n\t\t\tEsiOwner owner = ConverterTestUtil.getEsiOwner(options);\r\n\t\t\tMyAsset asset = DataConverter.toMyAsset(rawAsset, owner, new ArrayList<>());\r\n\t\t\tif (asset != null) {\r\n\t\t\t\tassertNotNull(\"Object null @\" + options.getIndex(), asset);\r\n\t\t\t\tConverterTestUtil.testValues(asset, options);\r\n\t\t\t} else {\r\n\t\t\t\tassertNull(asset);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testConvertRawContracts() {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tMap<MyContract, List<MyContractItem>> contracts = DataConverter.convertRawContracts(Collections.singletonList(ConverterTestUtil.getRawContract(false, options)), ConverterTestUtil.getEsiOwner(options), false);\r\n\t\t\tConverterTestUtil.testValues(contracts.keySet().iterator().next(), options);\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testConvertRawContractsHistory() {\r\n\t\tList<ConverterTestOptions> converterOptions = ConverterTestOptionsGetter.getConverterOptions();\r\n\t\tConverterTestOptions options = converterOptions.get(0);\r\n\t\tConverterTestOptions options1 = converterOptions.get(1);\r\n\t\tEsiOwner esiOwner = ConverterTestUtil.getEsiOwner(options);\r\n\t\tMyContract contract = ConverterTestUtil.getMyContract(true, true, options);\r\n\t\tMyContractItem contractItem = ConverterTestUtil.getMyContractItem(contract, false, true, options);\r\n\t\tesiOwner.getContracts().put(contract, Collections.singletonList(contractItem));\r\n\t\tList<RawContract> rawContracts = new ArrayList<>();\r\n\t\tRawContract rawContract = ConverterTestUtil.getRawContract(false, options);\r\n\t\trawContracts.add(rawContract);\r\n\t\tRawContract rawContract1 = ConverterTestUtil.getRawContract(false, options1);\r\n\t\trawContracts.add(rawContract1);\r\n\t\t//Add old\r\n\t\trawContract.setContractID(0);\r\n\t\trawContract1.setContractID(1);\r\n\t\tcontract.setContractID(2);\r\n\t\tMap<MyContract, List<MyContractItem>> contracts = DataConverter.convertRawContracts(rawContracts, esiOwner, true);\r\n\t\tassertEquals(contracts.size(), 3);\r\n\t\t//Add overwrite\r\n\t\trawContract.setContractID(0);\r\n\t\trawContract1.setContractID(1);\r\n\t\tcontract.setContractID(0); //Duplicate\r\n\t\tcontract.setAssigneeID(100); //Wrong\r\n\t\trawContract.setAssigneeID(200); //Expected\r\n\t\tcontracts = DataConverter.convertRawContracts(rawContracts, esiOwner, true);\r\n\t\tassertEquals(contracts.size(), 2);\r\n\t\tboolean found = false;\r\n\t\tfor (MyContract myContract : contracts.keySet()) {\r\n\t\t\tif (myContract.getAssigneeID() > 50) {\r\n\t\t\t\tassertEquals(myContract.getAssigneeID(), 200);\r\n\t\t\t\tfound = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tassertTrue(found);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testConvertRawContractItems() {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tMap<MyContract, List<MyContractItem>> contractItems = DataConverter.convertRawContractItems(Collections.singletonMap(ConverterTestUtil.getMyContract(false, true, options), Collections.singletonList(ConverterTestUtil.getRawContractItem(false, options))), ConverterTestUtil.getEsiOwner(options), false);\r\n\t\t\tConverterTestUtil.testValues(contractItems.values().iterator().next().get(0), options);\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testToMyContract() {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tMyContract contract = DataConverter.toMyContract(ConverterTestUtil.getRawContract(false, options));\r\n\t\t\tConverterTestUtil.testValues(contract, options);\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testToMyContractItem() {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tMyContractItem contractItem = DataConverter.toMyContractItem(ConverterTestUtil.getRawContractItem(false, options), ConverterTestUtil.getMyContract(false, true, options));\r\n\t\t\tConverterTestUtil.testValues(contractItem, options);\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testConvertRawIndustryJobs() {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tSet<MyIndustryJob> industryJobs = DataConverter.convertRawIndustryJobs(Collections.singletonList(ConverterTestUtil.getRawIndustryJob(false, options)), ConverterTestUtil.getEsiOwner(options), false);\r\n\t\t\tConverterTestUtil.testValues(industryJobs.iterator().next(), options);\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testToMyIndustryJob() {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tMyIndustryJob industryJob = DataConverter.toMyIndustryJob(ConverterTestUtil.getRawIndustryJob(false, options), ConverterTestUtil.getEsiOwner(options));\r\n\t\t\tConverterTestUtil.testValues(industryJob, options);\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testConvertRawJournals() {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tSet<MyJournal> journals = DataConverter.convertRawJournals(Collections.singletonList(ConverterTestUtil.getRawJournal(false, options)), ConverterTestUtil.getEsiOwner(options), false);\r\n\t\t\tConverterTestUtil.testValues(journals.iterator().next(), options);\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testConvertRawJournalsHistory() {\r\n\t\ttestConvertRawJournalsHistory(true);\r\n\t\ttestConvertRawJournalsHistory(false);\r\n\t}\r\n\r\n\tpublic void testConvertRawJournalsHistory(boolean saveHistory) {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tEsiOwner esiOwner = ConverterTestUtil.getEsiOwner(options);\r\n\t\t\tfor (long i = 1; i <= 10; i++) {\r\n\t\t\t\tRawJournal rawJournal = ConverterTestUtil.getRawJournal(true, options);\r\n\t\t\t\tMyJournal myJournal = DataConverter.toMyJournal(rawJournal, esiOwner);\r\n\t\t\t\tmyJournal.setRefID(i);\r\n\t\t\t\tesiOwner.getJournal().add(myJournal);\r\n\t\t\t}\r\n\t\t\tList<RawJournal> rawJournals = new ArrayList<>();\r\n\t\t\tfor (long i = 11; i <= 20; i++) {\r\n\t\t\t\tRawJournal rawJournal = ConverterTestUtil.getRawJournal(true, options);\r\n\t\t\t\trawJournal.setRefID(i);\r\n\t\t\t\trawJournals.add(rawJournal);\r\n\t\t\t}\r\n\t\t\tesiOwner.setJournal(DataConverter.convertRawJournals(rawJournals, esiOwner, saveHistory));\r\n\t\t\tif (saveHistory) {\r\n\t\t\t\tassertThat(esiOwner.getJournal().size(), is(20));\r\n\t\t\t} else {\r\n\t\t\t\tassertThat(esiOwner.getJournal().size(), is(10));\r\n\t\t\t\tassertTrue(esiOwner.getJournal().iterator().next().getRefID() > 10L);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testToMyJournal() {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tMyJournal journal = DataConverter.toMyJournal(ConverterTestUtil.getRawJournal(false, options), ConverterTestUtil.getEsiOwner(options));\r\n\t\t\tConverterTestUtil.testValues(journal, options);\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testConvertRawMarketOrders() {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tSet<MyMarketOrder> marketOrders = DataConverter.convertRawMarketOrders(Collections.singletonList(ConverterTestUtil.getRawMarketOrder(false, options)), ConverterTestUtil.getEsiOwner(options), false);\r\n\t\t\tConverterTestUtil.testValues(marketOrders.iterator().next(), options);\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testConvertRawMarketOrdersHistory() {\r\n\t\ttestConvertRawMarketOrdersHistory(true);\r\n\t\ttestConvertRawMarketOrdersHistory(false);\r\n\t}\r\n\r\n\tpublic void testConvertRawMarketOrdersHistory(boolean saveHistory) {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tEsiOwner esiOwner = ConverterTestUtil.getEsiOwner(options);\r\n\t\t\tfor (long i = 1; i <= 10; i++) {\r\n\t\t\t\tRawMarketOrder rawMarketOrder = ConverterTestUtil.getRawMarketOrder(true, options);\r\n\t\t\t\tMyMarketOrder myMarketOrder = DataConverter.toMyMarketOrder(rawMarketOrder, esiOwner);\r\n\t\t\t\tmyMarketOrder.setOrderID(i);\r\n\t\t\t\tesiOwner.getMarketOrders().add(myMarketOrder);\r\n\t\t\t}\r\n\t\t\tList<RawMarketOrder> rawMarketOrders = new ArrayList<>();\r\n\t\t\tfor (long i = 11; i <= 20; i++) {\r\n\t\t\t\tRawMarketOrder rawMarketOrder = ConverterTestUtil.getRawMarketOrder(true, options);\r\n\t\t\t\trawMarketOrder.setOrderID(i);\r\n\t\t\t\trawMarketOrders.add(rawMarketOrder);\r\n\t\t\t}\r\n\t\t\tesiOwner.setMarketOrders(DataConverter.convertRawMarketOrders(rawMarketOrders, esiOwner, saveHistory));\r\n\t\t\tif (saveHistory) {\r\n\t\t\t\tassertThat(esiOwner.getMarketOrders().size(), is(20));\r\n\t\t\t\tif (options.getMarketOrderStateRaw() == RawMarketOrder.MarketOrderState.OPEN) {\r\n\t\t\t\t\tfor (MyMarketOrder marketOrder : esiOwner.getMarketOrders()) {\r\n\t\t\t\t\t\tif (marketOrder.getOrderID() <= 10) {\r\n\t\t\t\t\t\t\tassertThat(marketOrder.getState(), is(MarketOrderState.UNKNOWN));\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tassertThat(marketOrder.getState(), is(MarketOrderState.OPEN));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tassertThat(esiOwner.getMarketOrders().size(), is(10));\r\n\t\t\t\tassertTrue(esiOwner.getMarketOrders().iterator().next().getOrderID() > 10L);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testToMyMarketOrder() {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tMyMarketOrder marketOrder = DataConverter.toMyMarketOrder(ConverterTestUtil.getRawMarketOrder(false, options), ConverterTestUtil.getEsiOwner(options));\r\n\t\t\tConverterTestUtil.testValues(marketOrder, options);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testConvertRawTransactions() {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tSet<MyTransaction> transactions = DataConverter.convertRawTransactions(Collections.singletonList(ConverterTestUtil.getRawTransaction(false, options)), ConverterTestUtil.getEsiOwner(options), false);\r\n\t\t\tConverterTestUtil.testValues(transactions.iterator().next(), options);\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testConvertRawTransactionsHistory() {\r\n\t\ttestConvertRawTransactionsHistory(true);\r\n\t\ttestConvertRawTransactionsHistory(false);\r\n\t}\r\n\r\n\tpublic void testConvertRawTransactionsHistory(boolean saveHistory) {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tEsiOwner esiOwner = ConverterTestUtil.getEsiOwner(options);\r\n\t\t\tfor (long i = 1; i <= 10; i++) {\r\n\t\t\t\tRawTransaction rawTransaction = ConverterTestUtil.getRawTransaction(true, options);\r\n\t\t\t\tMyTransaction myTransaction = DataConverter.toMyTransaction(rawTransaction, esiOwner);\r\n\t\t\t\tmyTransaction.setTransactionID(i);\r\n\t\t\t\tesiOwner.getTransactions().add(myTransaction);\r\n\t\t\t}\r\n\t\t\tList<RawTransaction> rawTransactions = new ArrayList<>();\r\n\t\t\tfor (long i = 11; i <= 20; i++) {\r\n\t\t\t\tRawTransaction rawTransaction = ConverterTestUtil.getRawTransaction(true, options);\r\n\t\t\t\trawTransaction.setTransactionID(i);\r\n\t\t\t\trawTransactions.add(rawTransaction);\r\n\t\t\t}\r\n\t\t\tesiOwner.setTransactions(DataConverter.convertRawTransactions(rawTransactions, esiOwner, saveHistory));\r\n\t\t\tif (saveHistory) {\r\n\t\t\t\tassertThat(esiOwner.getTransactions().size(), is(20));\r\n\t\t\t} else {\r\n\t\t\t\tassertThat(esiOwner.getTransactions().size(), is(10));\r\n\t\t\t\tassertTrue(esiOwner.getTransactions().iterator().next().getTransactionID() > 10L);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testToMyTransaction() {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tMyTransaction transaction = DataConverter.toMyTransaction(ConverterTestUtil.getRawTransaction(false, options), ConverterTestUtil.getEsiOwner(options));\r\n\t\t\tConverterTestUtil.testValues(transaction, options);\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testConvertRawMining() {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tSet<MyMining> minings = DataConverter.convertRawMining(Collections.singletonList(ConverterTestUtil.getRawMining(false, options)), ConverterTestUtil.getEsiOwner(options), false);\r\n\t\t\tConverterTestUtil.testValues(minings.iterator().next(), options);\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testToMyMining() {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tMyMining mining = DataConverter.toMyMining(ConverterTestUtil.getRawMining(false, options));\r\n\t\t\tConverterTestUtil.testValues(mining, options);\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testConvertRawExtraction() {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tSet<MyExtraction> extractions = DataConverter.convertRawExtraction(Collections.singletonList(ConverterTestUtil.getRawExtraction(false, options)), ConverterTestUtil.getEsiOwner(options), false);\r\n\t\t\tConverterTestUtil.testValues(extractions.iterator().next(), options);\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testToMyExtraction() {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tMyExtraction extraction = DataConverter.toMyExtraction(ConverterTestUtil.getRawExtraction(false, options));\r\n\t\t\tConverterTestUtil.testValues(extraction, options);\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testToMyLoyaltyPoints() {\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\tMyLoyaltyPoints loyaltyPoints = DataConverter.toMyLoyaltyPoints(ConverterTestUtil.getRawLoyaltyPoints(true, options), ConverterTestUtil.getEsiOwner(options));\r\n\t\t\tConverterTestUtil.testValues(loyaltyPoints, options);\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/shared/ProfileDatabaseConverterTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.io.shared;\r\n\r\nimport ca.odell.glazedlists.GlazedLists;\r\nimport ch.qos.logback.classic.Level;\r\nimport java.lang.reflect.Field;\r\nimport java.util.Collection;\r\nimport java.util.Collections;\r\nimport java.util.Comparator;\r\nimport java.util.Iterator;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.TreeMap;\r\nimport net.nikr.eve.jeveasset.CliOptions;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.data.api.accounts.EsiOwner;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAccountBalance;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyExtraction;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyJournal;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyLoyaltyPoints;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyMining;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyNpcStanding;\r\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawAsset;\r\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder;\r\nimport net.nikr.eve.jeveasset.data.profile.Profile;\r\nimport net.nikr.eve.jeveasset.data.profile.ProfileManager;\r\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\r\nimport net.nikr.eve.jeveasset.data.settings.PriceData;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Percent;\r\nimport net.nikr.eve.jeveasset.gui.shared.table.containers.Security;\r\nimport net.nikr.eve.jeveasset.io.local.profile.ProfileDatabase;\r\nimport org.junit.After;\r\nimport org.junit.AfterClass;\r\nimport static org.junit.Assert.assertEquals;\r\nimport static org.junit.Assert.assertFalse;\r\nimport static org.junit.Assert.fail;\r\nimport org.junit.BeforeClass;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class ProfileDatabaseConverterTest extends TestUtil {\r\n\r\n\tprivate static final ObjectComparator COMPARATOR = new ObjectComparator();\r\n\r\n\t@BeforeClass\r\n\tpublic static void setUpClass() {\r\n\t\tsetLoggingLevel(Level.WARN);\r\n\t}\r\n\r\n\t@AfterClass\r\n\tpublic static void tearDownClass() {\r\n\t\tsetLoggingLevel(Level.INFO);\r\n\t}\r\n\r\n\t@After\r\n\tpublic void testCleanup() {\r\n\t\tcleanup();\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testAbstractOwner() {\r\n\t\tboolean setNull = false;\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\t//Clear previouse test data\r\n\t\t\tcleanup();\r\n\t\t\t//Old\r\n\t\t\tEsiOwner oldOwner = ConverterTestUtil.getEsiOwner(true, setNull, false, options);\r\n\t\t\t//New\r\n\t\t\tEsiOwner newOwner = new EsiOwner(oldOwner);\r\n\r\n\t\t\ttestClass(\"\", oldOwner, newOwner, false, true);\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testLocal() {\r\n\t\t//Exiting data\r\n\t\tCliOptions.get().setPortable(false);\r\n\t\tProfileManager manager = new ProfileManager();\r\n\t\tmanager.searchProfile();\r\n\t\tmanager.loadActiveProfile();\r\n\t\tProfile oldProfile = manager.getActiveProfile();\r\n\t\tCliOptions.get().setPortable(true);\r\n\t\tmanager.saveProfile();\r\n\t\t//Loaded data\r\n\t\tmanager = new ProfileManager();\r\n\t\tmanager.searchProfile();\r\n\t\tmanager.loadActiveProfile();\r\n\t\tProfile newProfile = manager.getActiveProfile();\r\n\r\n\t\ttestClass(\"\", oldProfile, newProfile, false, true);\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testSave() {\r\n\t\t//Exiting data\r\n\t\tboolean data = true;\r\n\t\tboolean setNull = false;\r\n\t\tboolean setValues = true;\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\t//Clear previouse test data\r\n\t\t\tcleanup();\r\n\r\n\t\t\t//Generated data\r\n\t\t\tProfile oldProfile = new Profile();\r\n\t\t\toldProfile.getEsiOwners().add(ConverterTestUtil.getEsiOwner(data, setNull, setValues, options));\r\n\t\t\toldProfile.save();\r\n\t\t\t//Loaded data\r\n\t\t\tProfile newProfile = new Profile();\r\n\t\t\tnewProfile.load();\r\n\t\t\t//Test\r\n\t\t\ttestClass(\"\", oldProfile, newProfile, false, false);\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testUpdate() {\r\n\t\tboolean data = false;\r\n\t\tboolean setNull = false;\r\n\t\tboolean setValues = true;\r\n\t\tfor (ConverterTestOptions options : ConverterTestOptionsGetter.getConverterOptions()) {\r\n\t\t\t//Clear previouse test data\r\n\t\t\tcleanup();\r\n\r\n\t\t\t//Empty data\r\n\t\t\tProfile oldProfile = new Profile();\r\n\t\t\tProfileDatabase.setUpdateConnectionUrl(oldProfile);\r\n\t\t\tEsiOwner owner = ConverterTestUtil.getEsiOwner(data, setNull, setValues, options);\r\n\t\t\towner.setScopes(options.getString());\r\n\t\t\toldProfile.getEsiOwners().add(owner);\r\n\t\t\toldProfile.save();\r\n\r\n\t\t\t//Contract\r\n\t\t\tMap<MyContract, List<MyContractItem>> contracts = DataConverter.convertRawContracts(Collections.singletonList(ConverterTestUtil.getRawContract(setNull, options)), owner, true);\r\n\t\t\tMyContract contract = contracts.entrySet().iterator().next().getKey();\r\n\t\t\towner.setContracts(DataConverter.convertRawContractItems(Collections.singletonMap(contract, Collections.singletonList(ConverterTestUtil.getRawContractItem(setNull, options))), owner, true));\r\n\r\n\t\t\t//Industry Job\r\n\t\t\towner.setIndustryJobs(DataConverter.convertRawIndustryJobs(Collections.singletonList(ConverterTestUtil.getRawIndustryJob(setNull, options)), owner, true));\r\n\r\n\t\t\t//Journal\r\n\t\t\towner.setJournal(DataConverter.convertRawJournals(Collections.singletonList(ConverterTestUtil.getRawJournal(setNull, options)), owner, true));\r\n\r\n\t\t\t//Market Order\r\n\t\t\towner.setMarketOrders(DataConverter.convertRawMarketOrders(Collections.singletonList(ConverterTestUtil.getRawMarketOrder(setNull, options)), owner, true));\r\n\r\n\t\t\t//Transaction\r\n\t\t\towner.setTransactions(DataConverter.convertRawTransactions(Collections.singletonList(ConverterTestUtil.getRawTransaction(setNull, options)), owner, true));\r\n\r\n\t\t\t//Mining\r\n\t\t\towner.setMining(DataConverter.convertRawMining(Collections.singletonList(ConverterTestUtil.getRawMining(setNull, options)), owner, true));\r\n\r\n\t\t\t//Extractions\r\n\t\t\towner.setExtractions(DataConverter.convertRawExtraction(Collections.singletonList(ConverterTestUtil.getRawExtraction(setNull, options)), owner, true));\r\n\r\n\t\t\tProfileDatabase.waitForUpdates();\r\n\r\n\t\t\t//Loaded data\r\n\t\t\tProfile newProfile = new Profile();\r\n\t\t\tProfileDatabase.setUpdateConnectionUrl(newProfile);\r\n\t\t\tnewProfile.load();\r\n\r\n\t\t\ttestClass(\"\", oldProfile, newProfile, false, false);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate void testClass(String msg, Object oldValue, Object newValue, boolean collection, boolean dynamicValuesSet) {\r\n\t\tif (oldValue == null || newValue == null) {\r\n\t\t\tassertEquals(msg, oldValue, newValue);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\ttestClass(msg, oldValue.getClass(), newValue.getClass(), oldValue, newValue, collection, dynamicValuesSet);\r\n\t}\r\n\r\n\tprivate void testClass(String input, Class<?> oldClazz, Class<?> newClazz, Object oldValue, Object newValue, boolean collection, boolean dynamicValuesSet) {\r\n\t\tif (oldClazz == null || newClazz == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tString msg = input + oldClazz.getSimpleName() + getValue(oldValue) + getValue(newValue);\r\n\t\tif (oldValue == null || newValue == null || Enum.class.isAssignableFrom(oldValue.getClass())) {\r\n\t\t\tassertEquals(msg, oldValue, newValue);\r\n\t\t} else if (List.class.isAssignableFrom(oldValue.getClass()) && List.class.isAssignableFrom(newValue.getClass())) {\r\n\t\t\tList<?> oldList = (List<?>) oldValue;\r\n\t\t\tList<?> newList = (List<?>) newValue;\r\n\t\t\tassertEquals(msg, oldList.size(), newList.size());\r\n\t\t\tCollections.sort(oldList, COMPARATOR);\r\n\t\t\tCollections.sort(newList, COMPARATOR);\r\n\t\t\tIterator<?> oldIterator = oldList.iterator();\r\n\t\t\tIterator<?> newIterator = newList.iterator();\r\n\t\t\twhile (oldIterator.hasNext() && newIterator.hasNext()) {\r\n\t\t\t\tObject oldObject = oldIterator.next();\r\n\t\t\t\tObject newObject = newIterator.next();\r\n\t\t\t\ttestClass(msg + \"[List]>\", oldObject, newObject, true, dynamicValuesSet);\r\n\t\t\t}\r\n\t\t\tassertFalse(msg, oldIterator.hasNext());\r\n\t\t\tassertFalse(msg, newIterator.hasNext());\r\n\t\t} else if (Collection.class.isAssignableFrom(oldValue.getClass()) && Collection.class.isAssignableFrom(newValue.getClass())) {\r\n\t\t\tCollection<?> oldCollection = (Collection<?>) oldValue;\r\n\t\t\tCollection<?> newCollection = (Collection<?>) newValue;\r\n\t\t\tassertEquals(msg, oldCollection.size(), newCollection.size());\r\n\t\t\tIterator<?> oldIterator = oldCollection.iterator();\r\n\t\t\tIterator<?> newIterator = newCollection.iterator();\r\n\t\t\twhile (oldIterator.hasNext() && newIterator.hasNext()) {\r\n\t\t\t\tObject oldObject = oldIterator.next();\r\n\t\t\t\tObject newObject = newIterator.next();\r\n\t\t\t\ttestClass(msg + \"[Collection]>\", oldObject, newObject, true, dynamicValuesSet);\r\n\t\t\t}\r\n\t\t\tassertFalse(msg, oldIterator.hasNext());\r\n\t\t\tassertFalse(msg, newIterator.hasNext());\r\n\t\t} else if (Map.class.isAssignableFrom(oldValue.getClass()) && Map.class.isAssignableFrom(newValue.getClass())) {\r\n\t\t\tMap<?,?> oldMap = new TreeMap<>((Map<?,?>) oldValue);\r\n\t\t\tMap<?,?> newMap = new TreeMap<>((Map<?,?>) newValue);\r\n\t\t\tassertEquals(msg, oldMap.size(), newMap.size());\r\n\t\t\tIterator<?> oldIterator = oldMap.entrySet().iterator();\r\n\t\t\tIterator<?> newIterator = newMap.entrySet().iterator();\r\n\t\t\twhile (oldIterator.hasNext() && newIterator.hasNext()) {\r\n\t\t\t\tObject oldObject = oldIterator.next();\r\n\t\t\t\tObject newObject = newIterator.next();\r\n\t\t\t\tif (oldObject instanceof Map.Entry<?,?> && newObject instanceof Map.Entry<?,?>) {\r\n\t\t\t\t\tMap.Entry<?,?> oldEntry = (Map.Entry<?,?>) oldObject;\r\n\t\t\t\t\tMap.Entry<?,?> newEntry = (Map.Entry<?,?>) newObject;\r\n\t\t\t\t\ttestClass(msg + \"[Map>Key]>\", oldEntry.getKey(), newEntry.getKey(), true, dynamicValuesSet);\r\n\t\t\t\t\ttestClass(msg + \"[Map>Value]>\", oldEntry.getValue(), newEntry.getValue(), true, dynamicValuesSet);\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttestClass(msg, oldObject, newObject, false, dynamicValuesSet);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tassertFalse(msg, oldIterator.hasNext());\r\n\t\t\tassertFalse(msg, newIterator.hasNext());\r\n\t\t} else if (oldClazz.getName().startsWith(\"net.nikr.eve.jeveasset\") || (Object.class.equals(oldClazz) && collection)){\r\n\t\t\tif (!dynamicValuesSet && RawAsset.class.equals(oldClazz)) { //SHOULD BE REMOVED!!!\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tfor (Field oldField : oldClazz.getDeclaredFields()) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tfinal String fieldName = oldField.getName();\r\n\t\t\t\t\tif (\"LOG\".equals(fieldName) ||\r\n\t\t\t\t\t\t\"$jacocoData\".equals(fieldName)\r\n\t\t\t\t\t\t|| (EsiOwner.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& (\"apiClient\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"marketApi\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"industryApi\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"characterApi\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"clonesApi\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"assetsApi\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"walletApi\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"universeApi\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"contractsApi\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"corporationApi\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"locationApi\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"planetaryInteractionApi\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"userInterfaceApi\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"loyaltyApi\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"skillsApi\".equals(fieldName)))\r\n\t\t\t\t\t\t|| (MyAsset.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& (\"owner\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"parents\".equals(fieldName)))\r\n\t\t\t\t\t\t|| (MyAccountBalance.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& \"owner\".equals(fieldName))\r\n\t\t\t\t\t\t|| (MyJournal.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& \"owner\".equals(fieldName))\r\n\t\t\t\t\t\t|| (MyTransaction.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& \"owner\".equals(fieldName))\r\n\t\t\t\t\t\t|| (MyIndustryJob.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& \"owner\".equals(fieldName))\r\n\t\t\t\t\t\t|| (MyLoyaltyPoints.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& \"owner\".equals(fieldName))\r\n\t\t\t\t\t\t|| (MyNpcStanding.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& \"owner\".equals(fieldName))\r\n\t\t\t\t\t\t|| (MyMarketOrder.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& (\"owner\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"jButton\".equals(fieldName)))\r\n\t\t\t\t\t\t|| (Profile.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& \"stockpileIDs\".equals(fieldName))\r\n\t\t\t\t\t\t|| (MyContractItem.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& \"contract\".equals(fieldName))\r\n\t\t\t\t\t\t|| (MyLocation.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& \"CACHE\".equals(fieldName))\r\n\t\t\t\t\t\t|| (Security.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& \"CACHE\".equals(fieldName))\r\n\t\t\t\t\t\t|| (Percent.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& \"CACHE\".equals(fieldName))\r\n\t\t\t\t\t\t|| (PriceData.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& \"EMPTY\".equals(fieldName))\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!dynamicValuesSet && (\r\n\t\t\t\t\t\t(MyTransaction.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& (\"location\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"transactionProfitPercent\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"tax\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"added\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"tags\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"clientName\".equals(fieldName)))\r\n\t\t\t\t\t\t|| (MyMarketOrder.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& (\"location\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"transactionProfitPercent\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"brokersFee\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"outbid\".equals(fieldName)))\r\n\t\t\t\t\t\t|| (MyJournal.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& (\"added\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"tags\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"context\".equals(fieldName)))\r\n\t\t\t\t\t\t|| (MyIndustryJob.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& (\"blueprint\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"owned\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"location\".equals(fieldName)))\r\n\t\t\t\t\t\t|| (MyAsset.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& (\"itemName\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"marketPriceData\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"added\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"tags\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"blueprint\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"location\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"userPrice\".equals(fieldName)))\r\n\t\t\t\t\t\t|| (MyMining.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& (\"location\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"characterName\".equals(fieldName)))\r\n\t\t\t\t\t\t|| (MyExtraction.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& (\"moon\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"location\".equals(fieldName)))\r\n\t\t\t\t\t\t|| (RawMarketOrder.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& (\"changed\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"regionId\".equals(fieldName)))\r\n\t\t\t\t\t\t|| (MyContract.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& (\"endLocation\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"startLocation\".equals(fieldName)))\r\n\t\t\t\t\t\t|| (MyLoyaltyPoints.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& \"textIcon\".equals(fieldName))\r\n\t\t\t\t\t\t|| (MyNpcStanding.class.equals(oldClazz)\r\n\t\t\t\t\t\t\t&& (\"factionName\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"corporationName\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"ownerTextIcon\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"agentName\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"factionTextIcon\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"corporationTextIcon\".equals(fieldName)\r\n\t\t\t\t\t\t\t|| \"agentTextIcon\".equals(fieldName)\r\n\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t)) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tField newField = newClazz.getDeclaredField(fieldName);\r\n\t\t\t\t\toldField.setAccessible(true);\r\n\t\t\t\t\tnewField.setAccessible(true);\r\n\t\t\t\t\tObject oldObject = oldField.get(oldValue);\r\n\t\t\t\t\tObject newObject = newField.get(newValue);\r\n\t\t\t\t\ttestClass(msg + \".\" + fieldName + \">\", oldObject, newObject, false, dynamicValuesSet);\r\n\t\t\t\t} catch (NoSuchFieldException ex) {\r\n\t\t\t\t\tfail(ex.getMessage());\r\n\t\t\t\t} catch (SecurityException ex) {\r\n\t\t\t\t\tfail(ex.getMessage());\r\n\t\t\t\t} catch (IllegalArgumentException ex) {\r\n\t\t\t\t\tfail(ex.getMessage());\r\n\t\t\t\t} catch (IllegalAccessException ex) {\r\n\t\t\t\t\tfail(ex.getMessage());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ttestClass(input + \"=>\", oldClazz.getSuperclass(), newClazz.getSuperclass(), oldValue, newValue, collection, dynamicValuesSet);\r\n\t\t} else {\r\n\t\t\tassertEquals(msg, oldValue, newValue);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate String getValue(Object object) {\r\n\t\tif (object == null) {\r\n\t\t\treturn \"\";\r\n\t\t} else if (object instanceof EsiOwner) {\r\n\t\t\treturn \"(\" + ((EsiOwner) object).getOwnerName() + \")\";\r\n\t\t} else if (object instanceof MyContract) {\r\n\t\t\treturn \"(\" + ((MyContract) object).getTitle() + \")\";\r\n\t\t} else if (object instanceof MyContractItem) {\r\n\t\t\treturn \"(\" + ((MyContractItem) object).getContract().getTitle() + \")\";\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tprivate static class ObjectComparator implements Comparator<Object> {\r\n\r\n\t\t@Override\r\n\t\tpublic int compare(Object o1, Object o2) {\r\n\t\t\tif (o1 instanceof MyAsset && o2 instanceof MyAsset) {\r\n\t\t\t\treturn Long.compare(((MyAsset)o1).getItemID(), ((MyAsset)o2).getItemID());\r\n\t\t\t}\r\n\t\t\tif (o1 instanceof RawAsset && o2 instanceof RawAsset) {\r\n\t\t\t\treturn Long.compare(((RawAsset)o1).getItemID(), ((RawAsset)o2).getItemID());\r\n\t\t\t}\r\n\t\t\tif (o1 instanceof Comparable && o2 instanceof Comparable) {\r\n\t\t\t\treturn GlazedLists.comparableComparator().compare((Comparable) o1, (Comparable) o2);\r\n\t\t\t}\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/io/shared/RawConverterTest.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\npackage net.nikr.eve.jeveasset.io.shared;\n\n\nimport java.time.OffsetDateTime;\nimport java.time.ZoneOffset;\nimport java.util.Date;\nimport java.util.EnumMap;\nimport java.util.HashMap;\nimport java.util.Map;\nimport net.nikr.eve.jeveasset.TestUtil;\nimport net.nikr.eve.jeveasset.data.api.raw.RawContract;\nimport net.nikr.eve.jeveasset.data.api.raw.RawIndustryJob;\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournal.ContextType;\nimport net.nikr.eve.jeveasset.data.api.raw.RawJournalRefType;\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder;\nimport net.nikr.eve.jeveasset.data.sde.ItemFlag;\nimport net.nikr.eve.jeveasset.data.sde.StaticData;\nimport net.nikr.eve.jeveasset.io.shared.RawConverter.LocationFlag;\nimport net.troja.eve.esi.model.CharacterContractsResponse;\nimport net.troja.eve.esi.model.CharacterIndustryJobsResponse;\nimport net.troja.eve.esi.model.CharacterOrdersHistoryResponse;\nimport net.troja.eve.esi.model.CharacterOrdersResponse;\nimport net.troja.eve.esi.model.CharacterWalletJournalResponse;\nimport net.troja.eve.esi.model.CorporationContractsResponse;\nimport net.troja.eve.esi.model.CorporationIndustryJobsResponse;\nimport net.troja.eve.esi.model.CorporationOrdersHistoryResponse;\nimport net.troja.eve.esi.model.CorporationOrdersResponse;\nimport net.troja.eve.esi.model.CorporationWalletJournalResponse;\nimport net.troja.eve.esi.model.MarketRegionOrdersResponse;\nimport net.troja.eve.esi.model.MarketStructureResponse;\nimport static org.junit.Assert.assertEquals;\nimport static org.junit.Assert.assertNotNull;\nimport static org.junit.Assert.assertTrue;\nimport org.junit.Test;\n\n\npublic class RawConverterTest extends TestUtil {\n\n\t@Test\n\tpublic void testToDate() {\n\t\tDate from = new Date();\n\t\tOffsetDateTime offsetDateTime = from.toInstant().atOffset(ZoneOffset.UTC);\n\t\tDate to = RawConverter.toDate(offsetDateTime);\n\t\tassertEquals(from, to);\n\t}\n\n\t@Test\n\tpublic void testToFlag_CharacterAssetsResponseLocationFlagEnum() {\n\t\tfor (net.troja.eve.esi.model.CharacterAssetsResponse.LocationFlagEnum locationFlagEnum : net.troja.eve.esi.model.CharacterAssetsResponse.LocationFlagEnum.values()) {\n\t\t\tItemFlag itemFlag = RawConverter.toFlag(locationFlagEnum);\n\t\t\tassertNotNull(itemFlag);\n\t\t\tassertTrue(locationFlagEnum.name() + \" (\" + locationFlagEnum.toString() + \") != \" + itemFlag.getFlagName(),\n\t\t\t\t\titemFlag.getFlagID() == 0\n\t\t\t\t\t|| locationFlagEnum.toString().toLowerCase().equals(itemFlag.getFlagText().toLowerCase().replace(\" \", \"\"))\n\t\t\t\t\t|| locationFlagEnum.toString().toLowerCase().equals(itemFlag.getFlagName().toLowerCase())\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"CorpseBay\") && itemFlag.getFlagName().equals(\"CrateLoot\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"Module\") && itemFlag.getFlagName().equals(\"Skill\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"SpecializedOreHold\") && itemFlag.getFlagName().equals(\"SpecializedAsteroidHold\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"CorporationGoalDeliveries\") && itemFlag.getFlagName().equals(\"CorpProjectsHangar\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"MobileDepotHold\") && itemFlag.getFlagName().equals(\"MobileDepot\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"InfrastructureHangar\") && itemFlag.getFlagName().equals(\"ColonyResourcesHold\"))\n\t\t\t);\n\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToFlag_CorporationAssetsResponseLocationFlagEnum() {\n\t\tfor (net.troja.eve.esi.model.CorporationAssetsResponse.LocationFlagEnum locationFlagEnum : net.troja.eve.esi.model.CorporationAssetsResponse.LocationFlagEnum.values()) {\n\t\t\tItemFlag itemFlag = RawConverter.toFlag(locationFlagEnum);\n\t\t\tassertNotNull(itemFlag);\n\t\t\tassertTrue(locationFlagEnum.name() + \" (\" + locationFlagEnum.toString() + \") != \" + itemFlag.getFlagName(),\n\t\t\t\t\titemFlag.getFlagID() == 0\n\t\t\t\t\t|| locationFlagEnum.toString().toLowerCase().equals(itemFlag.getFlagText().toLowerCase().replace(\" \", \"\"))\n\t\t\t\t\t|| locationFlagEnum.toString().toLowerCase().equals(itemFlag.getFlagName().toLowerCase())\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"CorpDeliveries\") && itemFlag.getFlagName().equals(\"CorpMarket\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"Impounded\") && itemFlag.getFlagName().equals(\"OfficeImpound\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"ServiceSlot0\") && itemFlag.getFlagName().equals(\"StructureServiceSlot0\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"ServiceSlot1\") && itemFlag.getFlagName().equals(\"StructureServiceSlot1\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"ServiceSlot2\") && itemFlag.getFlagName().equals(\"StructureServiceSlot2\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"ServiceSlot3\") && itemFlag.getFlagName().equals(\"StructureServiceSlot3\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"ServiceSlot4\") && itemFlag.getFlagName().equals(\"StructureServiceSlot4\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"ServiceSlot5\") && itemFlag.getFlagName().equals(\"StructureServiceSlot5\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"ServiceSlot6\") && itemFlag.getFlagName().equals(\"StructureServiceSlot6\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"ServiceSlot7\") && itemFlag.getFlagName().equals(\"StructureServiceSlot7\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"DustBattle\") && itemFlag.getFlagName().equals(\"DustCharacterBattle\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"DustDatabank\") && itemFlag.getFlagName().equals(\"DustCharacterDatabank\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"HiddenModifers\") && itemFlag.getFlagName().equals(\"HiddenModifiers\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"QuantumCoreRoom\") && itemFlag.getFlagName().equals(\"StructureDeedBay\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"SpecializedOreHold\") && itemFlag.getFlagName().equals(\"SpecializedAsteroidHold\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"CorporationGoalDeliveries\") && itemFlag.getFlagName().equals(\"CorpProjectsHangar\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"MobileDepotHold\") && itemFlag.getFlagName().equals(\"MobileDepot\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"InfrastructureHangar\") && itemFlag.getFlagName().equals(\"ColonyResourcesHold\"))\n\t\t\t);\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToFlag_CharacterBlueprintsResponseLocationFlagEnum() {\n\t\tfor (net.troja.eve.esi.model.CharacterBlueprintsResponse.LocationFlagEnum locationFlagEnum : net.troja.eve.esi.model.CharacterBlueprintsResponse.LocationFlagEnum.values()) {\n\t\t\tItemFlag itemFlag = RawConverter.toFlag(locationFlagEnum);\n\t\t\tassertNotNull(itemFlag);\n\t\t\tassertTrue(locationFlagEnum.name() + \" (\" + locationFlagEnum.toString() + \") != \" + itemFlag.getFlagName(),\n\t\t\t\t\titemFlag.getFlagID() == 0\n\t\t\t\t\t|| locationFlagEnum.toString().toLowerCase().equals(itemFlag.getFlagText().toLowerCase().replace(\" \", \"\"))\n\t\t\t\t\t|| locationFlagEnum.toString().toLowerCase().equals(itemFlag.getFlagName().toLowerCase())\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"CorpseBay\") && itemFlag.getFlagName().equals(\"CrateLoot\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"Module\") && itemFlag.getFlagName().equals(\"Skill\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"SpecializedOreHold\") && itemFlag.getFlagName().equals(\"SpecializedAsteroidHold\"))\n\t\t\t);\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToFlag_CorporationBlueprintsResponseLocationFlagEnum() {\n\t\tfor (net.troja.eve.esi.model.CorporationBlueprintsResponse.LocationFlagEnum locationFlagEnum : net.troja.eve.esi.model.CorporationBlueprintsResponse.LocationFlagEnum.values()) {\n\t\t\tItemFlag itemFlag = RawConverter.toFlag(locationFlagEnum);\n\t\t\tassertNotNull(itemFlag);\n\t\t\tassertTrue(locationFlagEnum.name() + \" (\" + locationFlagEnum.toString() + \") != \" + itemFlag.getFlagName(),\n\t\t\t\t\titemFlag.getFlagID() == 0\n\t\t\t\t\t|| locationFlagEnum.toString().toLowerCase().equals(itemFlag.getFlagText().toLowerCase().replace(\" \", \"\"))\n\t\t\t\t\t|| locationFlagEnum.toString().toLowerCase().equals(itemFlag.getFlagName().toLowerCase())\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"CorpDeliveries\") && itemFlag.getFlagName().equals(\"CorpMarket\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"Impounded\") && itemFlag.getFlagName().equals(\"OfficeImpound\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"ServiceSlot0\") && itemFlag.getFlagName().equals(\"StructureServiceSlot0\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"ServiceSlot1\") && itemFlag.getFlagName().equals(\"StructureServiceSlot1\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"ServiceSlot2\") && itemFlag.getFlagName().equals(\"StructureServiceSlot2\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"ServiceSlot3\") && itemFlag.getFlagName().equals(\"StructureServiceSlot3\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"ServiceSlot4\") && itemFlag.getFlagName().equals(\"StructureServiceSlot4\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"ServiceSlot5\") && itemFlag.getFlagName().equals(\"StructureServiceSlot5\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"ServiceSlot6\") && itemFlag.getFlagName().equals(\"StructureServiceSlot6\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"ServiceSlot7\") && itemFlag.getFlagName().equals(\"StructureServiceSlot7\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"DustBattle\") && itemFlag.getFlagName().equals(\"DustCharacterBattle\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"DustDatabank\") && itemFlag.getFlagName().equals(\"DustCharacterDatabank\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"HiddenModifers\") && itemFlag.getFlagName().equals(\"HiddenModifiers\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"CorporationGoalDeliveries\") && itemFlag.getFlagName().equals(\"CorpProjectsHangar\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"QuantumCoreRoom\") && itemFlag.getFlagName().equals(\"StructureDeedBay\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"SpecializedOreHold\") && itemFlag.getFlagName().equals(\"SpecializedAsteroidHold\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"MobileDepotHold\") && itemFlag.getFlagName().equals(\"MobileDepot\"))\n\t\t\t\t\t|| (locationFlagEnum.toString().equals(\"InfrastructureHangar\") && itemFlag.getFlagName().equals(\"ColonyResourcesHold\"))\n\t\t\t);\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToContractAvailability_String_String() {\n\t\t//Enum\n\t\tfor (RawContract.ContractAvailability value : RawContract.ContractAvailability.values()) {\n\t\t\tassertEquals(value, RawConverter.toContractAvailability(value.name(), null));\n\t\t}\n\t\t//String\n\t\tfor (RawContract.ContractAvailability value : RawContract.ContractAvailability.values()) {\n\t\t\tassertEquals(value, RawConverter.toContractAvailability(null, value.getValue()));\n\t\t}\n\t\t//EveAPI\n\t\tMap<String, RawContract.ContractAvailability> map = new HashMap<>();\n\t\tmap.put(\"public\", RawContract.ContractAvailability.PUBLIC);\n\t\tmap.put(\"private\", RawContract.ContractAvailability.PERSONAL);\n\t\tfor (Map.Entry<String, RawContract.ContractAvailability> entry : map.entrySet()) {\n\t\t\tassertEquals(entry.getValue(), RawConverter.toContractAvailability(entry.getKey(), null));\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToContractAvailability_CharacterContractsResponseAvailabilityEnum() {\n\t\t//Enum\n\t\tfor (CharacterContractsResponse.AvailabilityEnum value : CharacterContractsResponse.AvailabilityEnum.values()) {\n\t\t\tassertEquals(value.name(), RawConverter.toContractAvailability(value).name());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToContractAvailability_CorporationContractsResponseAvailabilityEnum() {\n\t\t//Enum\n\t\tfor (CorporationContractsResponse.AvailabilityEnum value : CorporationContractsResponse.AvailabilityEnum.values()) {\n\t\t\tassertEquals(value.name(), RawConverter.toContractAvailability(value).name());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToContractStatus_String_String() {\n\t\t//Enum\n\t\tfor (RawContract.ContractStatus value : RawContract.ContractStatus.values()) {\n\t\t\tassertEquals(value, RawConverter.toContractStatus(value.name(), null));\n\t\t}\n\t\t//String\n\t\tfor (RawContract.ContractStatus value : RawContract.ContractStatus.values()) {\n\t\t\tassertEquals(value, RawConverter.toContractStatus(null, value.getValue()));\n\t\t}\n\t\t//EveAPI\n\t\tMap<String, RawContract.ContractStatus> map = new HashMap<>();\n\t\tmap.put(\"COMPLETED\", RawContract.ContractStatus.FINISHED);\n\t\tmap.put(\"COMPLETEDBYCONTRACTOR\", RawContract.ContractStatus.FINISHED_CONTRACTOR);\n\t\tmap.put(\"COMPLETEDBYISSUER\", RawContract.ContractStatus.FINISHED_ISSUER);\n\t\tmap.put(\"INPROGRESS\", RawContract.ContractStatus.IN_PROGRESS);\n\t\tfor (Map.Entry<String, RawContract.ContractStatus> entry : map.entrySet()) {\n\t\t\tassertEquals(entry.getValue(), RawConverter.toContractStatus(entry.getKey(), null));\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToContractStatus_CharacterContractsResponseStatusEnum() {\n\t\t//Enum\n\t\tfor (CharacterContractsResponse.StatusEnum value : CharacterContractsResponse.StatusEnum.values()) {\n\t\t\tassertEquals(value.name(), RawConverter.toContractStatus(value).name());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToContractStatus_CorporationContractsResponseStatusEnum() {\n\t\t//Enum\n\t\tfor (CorporationContractsResponse.StatusEnum value : CorporationContractsResponse.StatusEnum.values()) {\n\t\t\tassertEquals(value.name(), RawConverter.toContractStatus(value).name());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToContractType_String_String() {\n\t\t//Enum\n\t\tfor (RawContract.ContractType value : RawContract.ContractType.values()) {\n\t\t\tassertEquals(value, RawConverter.toContractType(value.name(), null));\n\t\t}\n\t\t//String\n\t\tfor (RawContract.ContractType value : RawContract.ContractType.values()) {\n\t\t\tassertEquals(value, RawConverter.toContractType(null, value.getValue()));\n\t\t}\n\t\t//EveAPI\n\t\tMap<String, RawContract.ContractType> map = new HashMap<>();\n\t\tmap.put(\"Auction\", RawContract.ContractType.AUCTION);\n\t\tmap.put(\"Courier\", RawContract.ContractType.COURIER);\n\t\tmap.put(\"ItemExchange\", RawContract.ContractType.ITEM_EXCHANGE);\n\t\tmap.put(\"Loan\", RawContract.ContractType.LOAN);\n\t\tfor (Map.Entry<String, RawContract.ContractType> entry : map.entrySet()) {\n\t\t\tassertEquals(entry.getValue(), RawConverter.toContractType(entry.getKey(), null));\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToContractType_CharacterContractsResponseTypeEnum() {\n\t\t//Enum\n\t\tfor (CharacterContractsResponse.TypeEnum value : CharacterContractsResponse.TypeEnum.values()) {\n\t\t\tassertEquals(value.name(), RawConverter.toContractType(value).name());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToContractType_CorporationContractsResponseTypeEnum() {\n\t\t//Enum\n\t\tfor (CorporationContractsResponse.TypeEnum value : CorporationContractsResponse.TypeEnum.values()) {\n\t\t\tassertEquals(value.name(), RawConverter.toContractType(value).name());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToIndustryJobStatus_3args() {\n\t\t//Enum\n\t\tfor (RawIndustryJob.IndustryJobStatus value : RawIndustryJob.IndustryJobStatus.values()) {\n\t\t\tassertEquals(value, RawConverter.toIndustryJobStatus(null, value.name(), null));\n\t\t}\n\t\t//String\n\t\tfor (RawIndustryJob.IndustryJobStatus value : RawIndustryJob.IndustryJobStatus.values()) {\n\t\t\tassertEquals(value, RawConverter.toIndustryJobStatus(null, null, value.getValue()));\n\t\t}\n\t\t//EveAPI\n\t\tMap<Integer, RawIndustryJob.IndustryJobStatus> map = new HashMap<>();\n\t\tmap.put(1, RawIndustryJob.IndustryJobStatus.ACTIVE);\n\t\tmap.put(2, RawIndustryJob.IndustryJobStatus.PAUSED);\n\t\tmap.put(3, RawIndustryJob.IndustryJobStatus.READY);\n\t\tmap.put(101, RawIndustryJob.IndustryJobStatus.DELIVERED);\n\t\tmap.put(102, RawIndustryJob.IndustryJobStatus.CANCELLED);\n\t\tmap.put(103, RawIndustryJob.IndustryJobStatus.REVERTED);\n\t\tmap.put(-100, RawIndustryJob.IndustryJobStatus.ARCHIVED);\n\t\tassertEquals(map.size(), RawIndustryJob.IndustryJobStatus.values().length);\n\t\tfor (Map.Entry<Integer, RawIndustryJob.IndustryJobStatus> entry : map.entrySet()) {\n\t\t\tassertEquals(entry.getValue(), RawConverter.toIndustryJobStatus(entry.getKey(), null, null));\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToIndustryJobStatus_CharacterIndustryJobsResponseStatusEnum() {\n\t\t//Enum\n\t\tfor (CharacterIndustryJobsResponse.StatusEnum value : CharacterIndustryJobsResponse.StatusEnum.values()) {\n\t\t\tassertEquals(value.name(), RawConverter.toIndustryJobStatus(value).name());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToIndustryJobStatus_CorporationIndustryJobsResponseStatusEnum() {\n\t\t//Enum\n\t\tfor (CorporationIndustryJobsResponse.StatusEnum value : CorporationIndustryJobsResponse.StatusEnum.values()) {\n\t\t\tassertEquals(value.name(), RawConverter.toIndustryJobStatus(value).name());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToJournalRefType_Integer_String() {\n\t\tfor (RawJournalRefType refType : RawJournalRefType.values()) {\n\t\t\tRawJournalRefType type = RawConverter.toJournalRefType(refType.getID(), null);\n\t\t\tassertEquals(type.name(), refType.name());\n\t\t}\n\t\tfor (CharacterWalletJournalResponse.RefTypeEnum refType : CharacterWalletJournalResponse.RefTypeEnum.values()) {\n\t\t\tRawJournalRefType type = RawConverter.toJournalRefType(null, refType.toString());\n\t\t\tif (type == RawJournalRefType.KILL_RIGHT && refType == CharacterWalletJournalResponse.RefTypeEnum.KILL_RIGHT_FEE) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (type == RawJournalRefType.RESOURCE_WARS_SITE_COMPLETION && refType == CharacterWalletJournalResponse.RefTypeEnum.RESOURCE_WARS_REWARD) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (type == RawJournalRefType.REACTIONS && refType == CharacterWalletJournalResponse.RefTypeEnum.REACTION) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tassertEquals(type.name(), refType.name());\n\t\t}\n\t\tfor (CorporationWalletJournalResponse.RefTypeEnum refType : CorporationWalletJournalResponse.RefTypeEnum.values()) {\n\t\t\tRawJournalRefType type = RawConverter.toJournalRefType(null, refType.toString());\n\t\t\tif (type == RawJournalRefType.KILL_RIGHT && refType == CorporationWalletJournalResponse.RefTypeEnum.KILL_RIGHT_FEE) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (type == RawJournalRefType.RESOURCE_WARS_SITE_COMPLETION && refType == CorporationWalletJournalResponse.RefTypeEnum.RESOURCE_WARS_REWARD) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (type == RawJournalRefType.REACTIONS && refType == CorporationWalletJournalResponse.RefTypeEnum.REACTION) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tassertEquals(type.name(), refType.name());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToJournalRefType_CharacterWalletJournalResponseRefTypeEnum() {\n\t\tassertEquals(155, CharacterWalletJournalResponse.RefTypeEnum.values().length);\n\t\tint undefined = 0;\n\t\tfor (CharacterWalletJournalResponse.RefTypeEnum refType : CharacterWalletJournalResponse.RefTypeEnum.values()) {\n\t\t\tRawJournalRefType rawJournalRefType = RawConverter.toJournalRefType(refType);\n\t\t\tassertNotNull(\"No value for: \" + refType.name(), rawJournalRefType);\n\t\t\tif (rawJournalRefType == RawJournalRefType.UNDEFINED) {\n\t\t\t\tundefined++;\n\t\t\t}\n\t\t}\n\t\tassertEquals(0, undefined);\n\t}\n\n\t@Test\n\tpublic void testToJournalRefType_CorporationWalletJournalResponseRefTypeEnum() {\n\t\tassertEquals(155, CorporationWalletJournalResponse.RefTypeEnum.values().length);\n\t\tint undefined = 0;\n\t\tfor (CorporationWalletJournalResponse.RefTypeEnum refType : CorporationWalletJournalResponse.RefTypeEnum.values()) {\n\t\t\tRawJournalRefType rawJournalRefType = RawConverter.toJournalRefType(refType);\n\t\t\tassertNotNull(\"No value for: \" + refType.name(), rawJournalRefType);\n\t\t\tif (rawJournalRefType == RawJournalRefType.UNDEFINED) {\n\t\t\t\tundefined++;\n\t\t\t}\n\t\t}\n\t\tassertEquals(0, undefined);\n\t}\n\n\t@Test\n\tpublic void testToJournalContextType_CharacterWalletJournalResponseContextIdTypeEnum() {\n\t\tMap<CharacterWalletJournalResponse.ContextIdTypeEnum, ContextType> map = new EnumMap<>(CharacterWalletJournalResponse.ContextIdTypeEnum.class);\n\t\tmap.put(CharacterWalletJournalResponse.ContextIdTypeEnum.ALLIANCE_ID, ContextType.ALLIANCE_ID);\n\t\tmap.put(CharacterWalletJournalResponse.ContextIdTypeEnum.CHARACTER_ID, ContextType.CHARACTER_ID);\n\t\tmap.put(CharacterWalletJournalResponse.ContextIdTypeEnum.CONTRACT_ID, ContextType.CONTRACT_ID);\n\t\tmap.put(CharacterWalletJournalResponse.ContextIdTypeEnum.CORPORATION_ID, ContextType.CORPORATION_ID);\n\t\tmap.put(CharacterWalletJournalResponse.ContextIdTypeEnum.EVE_SYSTEM, ContextType.EVE_SYSTEM);\n\t\tmap.put(CharacterWalletJournalResponse.ContextIdTypeEnum.INDUSTRY_JOB_ID, ContextType.INDUSTRY_JOB_ID);\n\t\tmap.put(CharacterWalletJournalResponse.ContextIdTypeEnum.MARKET_TRANSACTION_ID, ContextType.MARKET_TRANSACTION_ID);\n\t\tmap.put(CharacterWalletJournalResponse.ContextIdTypeEnum.PLANET_ID, ContextType.PLANET_ID);\n\t\tmap.put(CharacterWalletJournalResponse.ContextIdTypeEnum.STATION_ID, ContextType.STATION_ID);\n\t\tmap.put(CharacterWalletJournalResponse.ContextIdTypeEnum.STRUCTURE_ID, ContextType.STRUCTURE_ID);\n\t\tmap.put(CharacterWalletJournalResponse.ContextIdTypeEnum.SYSTEM_ID, ContextType.SYSTEM_ID);\n\t\tmap.put(CharacterWalletJournalResponse.ContextIdTypeEnum.TYPE_ID, ContextType.TYPE_ID);\n\t\tassertEquals(map.size(), CharacterWalletJournalResponse.ContextIdTypeEnum.values().length);\n\t\tfor (Map.Entry<CharacterWalletJournalResponse.ContextIdTypeEnum, ContextType> entry : map.entrySet()) {\n\t\t\tassertEquals(entry.getValue(), RawConverter.toJournalContextType(entry.getKey()));\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToJournalContextType_CorporationWalletJournalResponseContextIdTypeEnum() {\n\t\tMap<CorporationWalletJournalResponse.ContextIdTypeEnum, ContextType> map = new EnumMap<>(CorporationWalletJournalResponse.ContextIdTypeEnum.class);\n\t\tmap.put(CorporationWalletJournalResponse.ContextIdTypeEnum.ALLIANCE_ID, ContextType.ALLIANCE_ID);\n\t\tmap.put(CorporationWalletJournalResponse.ContextIdTypeEnum.CHARACTER_ID, ContextType.CHARACTER_ID);\n\t\tmap.put(CorporationWalletJournalResponse.ContextIdTypeEnum.CONTRACT_ID, ContextType.CONTRACT_ID);\n\t\tmap.put(CorporationWalletJournalResponse.ContextIdTypeEnum.CORPORATION_ID, ContextType.CORPORATION_ID);\n\t\tmap.put(CorporationWalletJournalResponse.ContextIdTypeEnum.EVE_SYSTEM, ContextType.EVE_SYSTEM);\n\t\tmap.put(CorporationWalletJournalResponse.ContextIdTypeEnum.INDUSTRY_JOB_ID, ContextType.INDUSTRY_JOB_ID);\n\t\tmap.put(CorporationWalletJournalResponse.ContextIdTypeEnum.MARKET_TRANSACTION_ID, ContextType.MARKET_TRANSACTION_ID);\n\t\tmap.put(CorporationWalletJournalResponse.ContextIdTypeEnum.PLANET_ID, ContextType.PLANET_ID);\n\t\tmap.put(CorporationWalletJournalResponse.ContextIdTypeEnum.STATION_ID, ContextType.STATION_ID);\n\t\tmap.put(CorporationWalletJournalResponse.ContextIdTypeEnum.STRUCTURE_ID, ContextType.STRUCTURE_ID);\n\t\tmap.put(CorporationWalletJournalResponse.ContextIdTypeEnum.SYSTEM_ID, ContextType.SYSTEM_ID);\n\t\tmap.put(CorporationWalletJournalResponse.ContextIdTypeEnum.TYPE_ID, ContextType.TYPE_ID);\n\t\tassertEquals(map.size(), CorporationWalletJournalResponse.ContextIdTypeEnum.values().length);\n\t\tfor (Map.Entry<CorporationWalletJournalResponse.ContextIdTypeEnum, ContextType> entry : map.entrySet()) {\n\t\t\tassertEquals(entry.getValue(), RawConverter.toJournalContextType(entry.getKey()));\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToJournalContextType_String_String() {\n\t\t//Enum\n\t\tfor (ContextType value : ContextType.values()) {\n\t\t\tassertEquals(value, RawConverter.toJournalContextType(value.name(), null));\n\t\t}\n\t\t//String\n\t\tfor (ContextType value : ContextType.values()) {\n\t\t\tassertEquals(value, RawConverter.toJournalContextType(null, value.getValue()));\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToJournalContextType_RawJournalRefType() {\n\t\tMap<RawJournalRefType, ContextType> map = new EnumMap<>(RawJournalRefType.class);\n\t\tmap.put(RawJournalRefType.ALLIANCE_MAINTAINANCE_FEE, ContextType.ALLIANCE_ID);\n\t\tmap.put(RawJournalRefType.MISSION_REWARD, ContextType.CHARACTER_ID);\n\t\tmap.put(RawJournalRefType.CONTRACT_AUCTION_BID, ContextType.CONTRACT_ID);\n\t\tmap.put(RawJournalRefType.CORPORATION_LOGO_CHANGE_COST, ContextType.CORPORATION_ID);\n\t\t//map.put(RawJournalRefType., ContextType.EVE_SYSTEM);\n\t\tmap.put(RawJournalRefType.MANUFACTURING, ContextType.INDUSTRY_JOB_ID);\n\t\tmap.put(RawJournalRefType.MARKET_TRANSACTION, ContextType.MARKET_TRANSACTION_ID);\n\t\tmap.put(RawJournalRefType.PLANETARY_IMPORT_TAX, ContextType.PLANET_ID);\n\t\tmap.put(RawJournalRefType.INDUSTRY_JOB_TAX, ContextType.STATION_ID);\n\t\t//map.put(RawJournalRefType., ContextType.STRUCTURE_ID);\n\t\tmap.put(RawJournalRefType.BOUNTY_PRIZES, ContextType.SYSTEM_ID);\n\t\tmap.put(RawJournalRefType.BOUNTY_PRIZE, ContextType.TYPE_ID);\n\t\tassertEquals(map.size(), ContextType.values().length - 2);\n\t\tfor (Map.Entry<RawJournalRefType, ContextType> entry : map.entrySet()) {\n\t\t\tassertEquals(entry.getValue(), RawConverter.toJournalContextType(entry.getKey()));\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToJournalContextID_3args() {\n\t\tMap<RawJournalRefType, Long> map = new EnumMap<>(RawJournalRefType.class);\n\t\tmap.put(RawJournalRefType.ALLIANCE_MAINTAINANCE_FEE, 1L);\n\t\tmap.put(RawJournalRefType.MISSION_REWARD, 1L);\n\t\tmap.put(RawJournalRefType.CONTRACT_AUCTION_BID, 1L);\n\t\tmap.put(RawJournalRefType.CORPORATION_LOGO_CHANGE_COST, 1L);\n\t\t//map.put(RawJournalRefType., ContextType.EVE_SYSTEM);\n\t\tmap.put(RawJournalRefType.MANUFACTURING, 1L);\n\t\tmap.put(RawJournalRefType.MARKET_TRANSACTION, 1L);\n\t\tmap.put(RawJournalRefType.PLANETARY_IMPORT_TAX, 1L);\n\t\tmap.put(RawJournalRefType.INDUSTRY_JOB_TAX, 1L);\n\t\t//map.put(RawJournalRefType., ContextType.STRUCTURE_ID);\n\t\tmap.put(RawJournalRefType.BOUNTY_PRIZES, 1L);\n\t\tmap.put(RawJournalRefType.BOUNTY_PRIZE, 1L);\n\t\tassertEquals(map.size(), ContextType.values().length - 2);\n\t\tfor (Map.Entry<RawJournalRefType, Long> entry : map.entrySet()) {\n\t\t\tassertEquals(entry.getValue(), RawConverter.toJournalContextID(1L, \"1\", entry.getKey()));\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToMarketOrderRange_3args() {\n\t\t//Enum\n\t\tfor (RawMarketOrder.MarketOrderRange value : RawMarketOrder.MarketOrderRange.values()) {\n\t\t\tassertEquals(value, RawConverter.toMarketOrderRange(null, value.name(), null));\n\t\t}\n\t\t//String\n\t\tfor (RawMarketOrder.MarketOrderRange value : RawMarketOrder.MarketOrderRange.values()) {\n\t\t\tassertEquals(value, RawConverter.toMarketOrderRange(null, null, value.getValue()));\n\t\t}\n\t\tMap<Integer, RawMarketOrder.MarketOrderRange> map = new HashMap<>();\n\t\tmap.put(-1, RawMarketOrder.MarketOrderRange.STATION);\n\t\tmap.put(0, RawMarketOrder.MarketOrderRange.SOLARSYSTEM);\n\t\tmap.put(1, RawMarketOrder.MarketOrderRange._1);\n\t\tmap.put(2, RawMarketOrder.MarketOrderRange._2);\n\t\tmap.put(3, RawMarketOrder.MarketOrderRange._3);\n\t\tmap.put(4, RawMarketOrder.MarketOrderRange._4);\n\t\tmap.put(5, RawMarketOrder.MarketOrderRange._5);\n\t\tmap.put(10, RawMarketOrder.MarketOrderRange._10);\n\t\tmap.put(20, RawMarketOrder.MarketOrderRange._20);\n\t\tmap.put(30, RawMarketOrder.MarketOrderRange._30);\n\t\tmap.put(40, RawMarketOrder.MarketOrderRange._40);\n\t\tmap.put(32767, RawMarketOrder.MarketOrderRange.REGION);\n\t\tassertEquals(map.size(), RawMarketOrder.MarketOrderRange.values().length);\n\t\tfor (Map.Entry<Integer, RawMarketOrder.MarketOrderRange> entry : map.entrySet()) {\n\t\t\tassertEquals(entry.getValue(), RawConverter.toMarketOrderRange(entry.getKey(), null, null));\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToMarketOrderRange_CharacterOrdersResponseRangeEnum() {\n\t\t//Enum\n\t\tfor (CharacterOrdersResponse.RangeEnum value : CharacterOrdersResponse.RangeEnum.values()) {\n\t\t\tassertEquals(value.name(), RawConverter.toMarketOrderRange(value).name());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToMarketOrderRange_CharacterOrdersHistoryResponseRangeEnum() {\n\t\t//Enum\n\t\tfor (CharacterOrdersHistoryResponse.RangeEnum value : CharacterOrdersHistoryResponse.RangeEnum.values()) {\n\t\t\tassertEquals(value.name(), RawConverter.toMarketOrderRange(value).name());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToMarketOrderRange_CorporationOrdersResponseRangeEnum() {\n\t\t//Enum\n\t\tfor (CorporationOrdersResponse.RangeEnum value : CorporationOrdersResponse.RangeEnum.values()) {\n\t\t\tassertEquals(value.name(), RawConverter.toMarketOrderRange(value).name());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToMarketOrderRange_CorporationOrdersHistoryResponseRangeEnum() {\n\t\t//Enum\n\t\tfor (CorporationOrdersHistoryResponse.RangeEnum value : CorporationOrdersHistoryResponse.RangeEnum.values()) {\n\t\t\tassertEquals(value.name(), RawConverter.toMarketOrderRange(value).name());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToMarketOrderRange_MarketRegionOrdersResponseRangeEnum() {\n\t\t//Enum\n\t\tfor (MarketRegionOrdersResponse.RangeEnum value : MarketRegionOrdersResponse.RangeEnum.values()) {\n\t\t\tassertEquals(value.name(), RawConverter.toMarketOrderRange(value).name());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToMarketOrderRange_MarketStructuresResponseRangeEnum() {\n\t\t//Enum\n\t\tfor (MarketStructureResponse.RangeEnum value : MarketStructureResponse.RangeEnum.values()) {\n\t\t\tassertEquals(value.name(), RawConverter.toMarketOrderRange(value).name());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToMarketOrderState_3args() {\n\t\t//Enum\n\t\tfor (RawMarketOrder.MarketOrderState value : RawMarketOrder.MarketOrderState.values()) {\n\t\t\tassertEquals(value, RawConverter.toMarketOrderState(null, value.name(), null));\n\t\t}\n\t\t//String\n\t\tfor (RawMarketOrder.MarketOrderState value : RawMarketOrder.MarketOrderState.values()) {\n\t\t\tassertEquals(value, RawConverter.toMarketOrderState(null, null, value.getValue()));\n\t\t}\n\t\tMap<Integer, RawMarketOrder.MarketOrderState> map = new HashMap<>();\n\t\tmap.put(0, RawMarketOrder.MarketOrderState.OPEN);\n\t\tmap.put(1, RawMarketOrder.MarketOrderState.CLOSED);\n\t\tmap.put(2, RawMarketOrder.MarketOrderState.EXPIRED);\n\t\tmap.put(3, RawMarketOrder.MarketOrderState.CANCELLED);\n\t\tmap.put(4, RawMarketOrder.MarketOrderState.PENDING);\n\t\tmap.put(5, RawMarketOrder.MarketOrderState.CHARACTER_DELETED);\n\t\tmap.put(-100, RawMarketOrder.MarketOrderState.UNKNOWN);\n\t\tassertEquals(map.size(), RawMarketOrder.MarketOrderState.values().length);\n\t\tfor (Map.Entry<Integer, RawMarketOrder.MarketOrderState> entry : map.entrySet()) {\n\t\t\tassertEquals(entry.getValue(), RawConverter.toMarketOrderState(entry.getKey(), null, null));\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToMarketOrderState_CharacterOrdersHistoryResponseStateEnum() {\n\t\t//Enum\n\t\tfor (CharacterOrdersHistoryResponse.StateEnum value : CharacterOrdersHistoryResponse.StateEnum.values()) {\n\t\t\tassertEquals(value.name(), RawConverter.toMarketOrderState(value).name());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToMarketOrderState_CorporationOrdersHistoryResponseStateEnum() {\n\t\t//Enum\n\t\tfor (CorporationOrdersHistoryResponse.StateEnum value : CorporationOrdersHistoryResponse.StateEnum.values()) {\n\t\t\tassertEquals(value.name(), RawConverter.toMarketOrderState(value).name());\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testFromMarketOrderIsBuyOrder() {\n\t\tMap<Boolean, Integer> map = new HashMap<>();\n\t\tmap.put(true, 1);\n\t\tmap.put(false, 0);\n\t\tfor (Map.Entry<Boolean, Integer> entry : map.entrySet()) {\n\t\t\tassertEquals(entry.getValue(), (Integer) RawConverter.fromMarketOrderIsBuyOrder(entry.getKey()));\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToTransactionIsBuy() {\n\t\tMap<String, Boolean> map = new HashMap<>();\n\t\tmap.put(\"buy\", true);\n\t\tmap.put(\"sell\", false);\n\t\tfor (Map.Entry<String, Boolean> entry : map.entrySet()) {\n\t\t\tassertEquals(entry.getValue(), RawConverter.toTransactionIsBuy(entry.getKey()));\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToTransactionIsPersonal() {\n\t\tMap<String, Boolean> map = new HashMap<>();\n\t\tmap.put(\"personal\", true);\n\t\tmap.put(\"corporate\", false);\n\t\tfor (Map.Entry<String, Boolean> entry : map.entrySet()) {\n\t\t\tassertEquals(entry.getValue(), RawConverter.toTransactionIsPersonal(entry.getKey()));\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testFromTransactionIsBuy() {\n\t\tMap<Boolean, String> map = new HashMap<>();\n\t\tmap.put(true, \"buy\");\n\t\tmap.put(false, \"sell\");\n\t\tfor (Map.Entry<Boolean, String> entry : map.entrySet()) {\n\t\t\tassertEquals(entry.getValue(), RawConverter.fromTransactionIsBuy(entry.getKey()));\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testFromTransactionIsPersonal() {\n\t\tMap<Boolean, String> map = new HashMap<>();\n\t\tmap.put(true, \"personal\");\n\t\tmap.put(false, \"corporate\");\n\t\tfor (Map.Entry<Boolean, String> entry : map.entrySet()) {\n\t\t\tassertEquals(entry.getValue(), RawConverter.fromTransactionIsPersonal(entry.getKey()));\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToAssetQuantity() {\n\t\tassertEquals(1, RawConverter.toAssetQuantity(1, null));\n\t\tassertEquals(10, RawConverter.toAssetQuantity(10, null));\n\t\tassertEquals(10, RawConverter.toAssetQuantity(10, 0));\n\t\tassertEquals(-1, RawConverter.toAssetQuantity(10, -1));\n\t\tassertEquals(-2, RawConverter.toAssetQuantity(10, -2));\n\t}\n\n\t@Test\n\tpublic void testLocationFlag() {\n\t\tfor (LocationFlag locationFlag : LocationFlag.values()) {\n\t\t\tItemFlag itemFlag = StaticData.get().getItemFlags().get(locationFlag.getID());\n\t\t\tassertNotNull(locationFlag);\n\t\t\tassertTrue(locationFlag.name() + \" != \" + itemFlag.getFlagName(),\n\t\t\t\t\titemFlag.getFlagID() == 0\n\t\t\t\t\t|| locationFlag.toString().toLowerCase().equals(itemFlag.getFlagText().toLowerCase().replace(\" \", \"\"))\n\t\t\t\t\t|| locationFlag.toString().toLowerCase().equals(itemFlag.getFlagName().toLowerCase()));\n\t\t}\n\t}\n\n\t@Test\n\tpublic void testToLong_Number() {\n\t\tassertEquals(RawConverter.toLong(1L), (Long) 1L);\n\t\tassertEquals(RawConverter.toLong(0), (Long) 0L);\n\t\tassertEquals(RawConverter.toLong(0.0), (Long) 0L);\n\t\tassertEquals(RawConverter.toLong(0.0f), (Long) 0L);\n\t\tassertEquals((long) RawConverter.toLong(Long.MAX_VALUE), Long.MAX_VALUE);\n\t\tassertEquals((long) RawConverter.toLong(Long.MIN_VALUE), Long.MIN_VALUE);\n\t\tassertEquals((long) RawConverter.toLong(Integer.MAX_VALUE), (long) Integer.MAX_VALUE);\n\t\tassertEquals((long) RawConverter.toLong(Integer.MIN_VALUE), (long) Integer.MIN_VALUE);\n\t\tassertEquals((long) RawConverter.toLong(Double.MAX_VALUE), (long) Double.MAX_VALUE);\n\t\tassertEquals((long) RawConverter.toLong(Double.MIN_VALUE), (long) Double.MIN_VALUE);\n\t\tassertEquals((long) RawConverter.toLong(Float.MAX_VALUE), (long) Float.MAX_VALUE);\n\t\tassertEquals((long) RawConverter.toLong(Float.MIN_VALUE), (long) Float.MIN_VALUE);\n\t}\n\n\t@Test\n\tpublic void testToLong_String() {\n\t\tassertEquals(RawConverter.toLong(String.valueOf(1L)), (Long) 1L);\n\t\tassertEquals(RawConverter.toLong(String.valueOf(0)), (Long) 0L);\n\t\tassertEquals((long) RawConverter.toLong(String.valueOf(Long.MAX_VALUE)), Long.MAX_VALUE);\n\t\tassertEquals((long) RawConverter.toLong(String.valueOf(Long.MIN_VALUE)), Long.MIN_VALUE);\n\t\tassertEquals((long) RawConverter.toLong(String.valueOf(Integer.MAX_VALUE)), (long) Integer.MAX_VALUE);\n\t\tassertEquals((long) RawConverter.toLong(String.valueOf(Integer.MIN_VALUE)), (long) Integer.MIN_VALUE);\n\t\tassertEquals(RawConverter.toLong((String)null), null);\n\t}\n\n\t@Test\n\tpublic void testToInteger_Number() {\n\t\tassertEquals((int) RawConverter.toInteger(1L), 1);\n\t\tassertEquals((int) RawConverter.toInteger(0), 0);\n\t\tassertEquals((int) RawConverter.toInteger(0.0), 0);\n\t\tassertEquals((int) RawConverter.toInteger(0.0f), 0);\n\t\tassertEquals((int) RawConverter.toInteger(Long.MAX_VALUE), (int) Long.MAX_VALUE);\n\t\tassertEquals((int) RawConverter.toInteger(Long.MIN_VALUE), (int) Long.MIN_VALUE);\n\t\tassertEquals((int) RawConverter.toInteger(Integer.MAX_VALUE), Integer.MAX_VALUE);\n\t\tassertEquals((int) RawConverter.toInteger(Integer.MIN_VALUE), Integer.MIN_VALUE);\n\t\tassertEquals((int) RawConverter.toInteger(Double.MAX_VALUE), (int) Double.MAX_VALUE);\n\t\tassertEquals((int) RawConverter.toInteger(Double.MIN_VALUE), (int) Double.MIN_VALUE);\n\t\tassertEquals((int) RawConverter.toInteger(Float.MAX_VALUE), (int) Float.MAX_VALUE);\n\t\tassertEquals((int) RawConverter.toInteger(Float.MIN_VALUE), (int) Float.MIN_VALUE);\n\t}\n\n\t@Test\n\tpublic void testToInteger_Number_int() {\n\t\tassertEquals(RawConverter.toInteger(1L, 0), 1);\n\t\tassertEquals(RawConverter.toInteger(0, 1), 0);\n\t\tassertEquals(RawConverter.toInteger(0.0, 0), 0);\n\t\tassertEquals(RawConverter.toInteger(0.0f, 0), 0);\n\t\tassertEquals(RawConverter.toInteger(Long.MAX_VALUE, 0), (int) Long.MAX_VALUE);\n\t\tassertEquals(RawConverter.toInteger(Long.MIN_VALUE, 0), (int) Long.MIN_VALUE);\n\t\tassertEquals(RawConverter.toInteger(Integer.MAX_VALUE, 0), Integer.MAX_VALUE);\n\t\tassertEquals(RawConverter.toInteger(Integer.MIN_VALUE, 0), Integer.MIN_VALUE);\n\t\tassertEquals(RawConverter.toInteger(Double.MAX_VALUE, 0), (int) Double.MAX_VALUE);\n\t\tassertEquals(RawConverter.toInteger(Double.MIN_VALUE, 0), (int) Double.MIN_VALUE);\n\t\tassertEquals(RawConverter.toInteger(Float.MAX_VALUE, 0), (int) Float.MAX_VALUE);\n\t\tassertEquals(RawConverter.toInteger(Float.MIN_VALUE, 0), (int) Float.MIN_VALUE);\n\t\tassertEquals(RawConverter.toInteger(null, 0), 0);\n\t\tassertEquals(RawConverter.toInteger(null, 1), 1);\n\t}\n\n\t@Test\n\tpublic void testToInteger_String() {\n\t\tassertEquals((int) RawConverter.toInteger(String.valueOf(1L)), 1);\n\t\tassertEquals((int) RawConverter.toInteger(String.valueOf(0)), 0);\n\t\tassertEquals((int) RawConverter.toInteger(String.valueOf(Integer.MAX_VALUE)), Integer.MAX_VALUE);\n\t\tassertEquals((int) RawConverter.toInteger(String.valueOf(Integer.MIN_VALUE)), Integer.MIN_VALUE);\n\t\tassertEquals(RawConverter.toInteger((String)null), null);\n\t}\n\n\t@Test\n\tpublic void testToFloat() {\n\t\tfloat delta = 0;\n\t\tassertEquals(RawConverter.toFloat(Long.MAX_VALUE), Long.MAX_VALUE, delta);\n\t\tassertEquals(RawConverter.toFloat(Long.MIN_VALUE), Long.MIN_VALUE, delta);\n\t\tassertEquals(RawConverter.toFloat(Integer.MAX_VALUE), Integer.MAX_VALUE, delta);\n\t\tassertEquals(RawConverter.toFloat(Integer.MIN_VALUE), Integer.MIN_VALUE, delta);\n\t\tassertEquals((float) RawConverter.toFloat(Double.MAX_VALUE), (float) Double.MAX_VALUE, delta);\n\t\tassertEquals((float) RawConverter.toFloat(Double.MIN_VALUE), (float) Double.MIN_VALUE, delta);\n\t\tassertEquals(RawConverter.toFloat(Float.MAX_VALUE), Float.MAX_VALUE, delta);\n\t\tassertEquals(RawConverter.toFloat(Float.MIN_VALUE), Float.MIN_VALUE, delta);\n\t}\n\n\t@Test\n\tpublic void testToDouble() {\n\t\tfloat delta = 0;\n\t\tassertEquals(RawConverter.toDouble(Long.MAX_VALUE, 0), Long.MAX_VALUE, delta);\n\t\tassertEquals(RawConverter.toDouble(Long.MIN_VALUE, 0), Long.MIN_VALUE, delta);\n\t\tassertEquals(RawConverter.toDouble(Integer.MAX_VALUE, 0), Integer.MAX_VALUE, delta);\n\t\tassertEquals(RawConverter.toDouble(Integer.MIN_VALUE, 0), Integer.MIN_VALUE, delta);\n\t\tassertEquals(RawConverter.toDouble(Double.MAX_VALUE, 0), Double.MAX_VALUE, delta);\n\t\tassertEquals(RawConverter.toDouble(Double.MIN_VALUE, 0), Double.MIN_VALUE, delta);\n\t\tassertEquals(RawConverter.toDouble(Float.MAX_VALUE, 0), Float.MAX_VALUE, delta);\n\t\tassertEquals(RawConverter.toDouble(Float.MIN_VALUE, 0), Float.MIN_VALUE, delta);\n\t\tassertEquals(RawConverter.toDouble(null, 0), 0, delta);\n\t\tassertEquals(RawConverter.toDouble(null, 1), 1, delta);\n\t}\n\n\t@Test\n\tpublic void testToBoolean() {\n\t\tassertEquals(RawConverter.toBoolean(null), false);\n\t\tassertEquals(RawConverter.toBoolean(false), false);\n\t\tassertEquals(RawConverter.toBoolean(true), true);\n\t}\n\n}\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/lib/LibTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\npackage net.nikr.eve.jeveasset.lib;\r\n\r\nimport java.io.File;\r\nimport java.io.IOException;\r\nimport java.util.ArrayList;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Set;\r\nimport net.nikr.eve.jeveasset.LibraryManager;\r\nimport net.nikr.eve.jeveasset.TestUtil;\r\nimport net.nikr.eve.jeveasset.io.shared.FileUtil;\r\nimport org.junit.Assert;\r\nimport static org.junit.Assert.assertFalse;\r\nimport static org.junit.Assert.assertTrue;\r\nimport org.junit.Test;\r\n\r\npublic class LibTest extends TestUtil {\r\n\r\n\t@Test\r\n\tpublic void test() {\r\n\t\ttestLibs();\r\n\t\ttestPurge();\r\n\t}\r\n\r\n\tpublic void testLibs() {\r\n\t\tFile folder = new File(\"target\" + File.separator + \"lib\");\r\n\t\tassertTrue(folder.exists());\r\n\t\tFile[] listOfFiles = folder.listFiles();\r\n\r\n\t\tSet<String> files = new HashSet<>();\r\n\t\tfor (File file : listOfFiles) {\r\n\t\t\tfiles.add(file.getName());\r\n\t\t}\r\n\r\n\t\tSet<String> libsNames = new HashSet<>();\r\n\t\tSet<String> libs = LibraryManager.getLibFiles();\r\n\t\tStringBuilder missingLibraries = new StringBuilder();\r\n\t\tmissingLibraries.append(\"\\r\\n---Libs added---\\r\\n\");\r\n\t\tStringBuilder removedLibraries = new StringBuilder();\r\n\t\tremovedLibraries.append(\"---Libs removed---\\r\\n\");\r\n\t\tboolean missing = false;\r\n\t\tboolean removed = false;\r\n\t\tfor (String file : files) {\r\n\t\t\tif (file.endsWith(\".md5\")) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (!libs.contains(file)) {\r\n\t\t\t\tmissing = true;\r\n\t\t\t\tmissingLibraries.append(file);\r\n\t\t\t\tmissingLibraries.append(\"\\r\\n\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (String lib : libs) {\r\n\t\t\tString libName = lib.substring(0, lib.lastIndexOf(\"-\"));\r\n\t\t\tassertTrue(\"Duplicate: \" + libName, libsNames.add(libName));\r\n\t\t\tif (!files.contains(lib)) {\r\n\t\t\t\tremovedLibraries.append(lib);\r\n\t\t\t\tremovedLibraries.append(\"\\r\\n\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tassertFalse(missingLibraries.toString() + removedLibraries.toString(), missing || removed);\r\n\t}\r\n\r\n\tpublic void testPurge() {\r\n\t\tList<File> files = new ArrayList<>();\r\n\t\tfor (int i = 0; i < 10; i++) {\r\n\t\t\tFile file = new File(FileUtil.getPathLib(i + \".jar\"));\r\n\t\t\tfiles.add(file);\r\n\t\t\ttry {\r\n\t\t\t\tassertTrue(\"Failed to create file: \" + file.getName(), file.createNewFile());\r\n\t\t\t} catch (IOException ex) {\r\n\t\t\t\tAssert.fail(\"Failed to create file: \" + file.getName() + \" (\" + ex.getMessage() + \")\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (File file : files) {\r\n\t\t\tassertTrue(\"File doesn't exist: \" + file.getName(), file.exists());\r\n\t\t}\r\n\t\tLibraryManager.checkLibraries();\r\n\t\tfor (File file : files) {\r\n\t\t\tassertFalse(\"File still exist (after purge): \" + file.getName(), file.exists());\r\n\t\t}\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/tests/mocks/FakeProgram.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.tests.mocks;\n\nimport java.awt.event.ActionEvent;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport net.nikr.eve.jeveasset.Program;\nimport net.nikr.eve.jeveasset.data.api.accounts.OwnerType;\nimport net.nikr.eve.jeveasset.data.api.my.MyAccountBalance;\nimport net.nikr.eve.jeveasset.data.api.my.MyAsset;\nimport net.nikr.eve.jeveasset.data.api.my.MyContract;\nimport net.nikr.eve.jeveasset.data.api.my.MyContractItem;\nimport net.nikr.eve.jeveasset.data.api.my.MyIndustryJob;\nimport net.nikr.eve.jeveasset.data.api.my.MyJournal;\nimport net.nikr.eve.jeveasset.data.api.my.MyMarketOrder;\nimport net.nikr.eve.jeveasset.data.api.my.MyTransaction;\nimport net.nikr.eve.jeveasset.data.profile.ProfileData;\nimport net.nikr.eve.jeveasset.data.profile.ProfileManager;\nimport net.nikr.eve.jeveasset.data.sde.MyLocation;\nimport net.nikr.eve.jeveasset.gui.dialogs.settings.UserLocationSettingsPanel;\nimport net.nikr.eve.jeveasset.gui.dialogs.settings.UserNameSettingsPanel;\nimport net.nikr.eve.jeveasset.gui.dialogs.settings.UserPriceSettingsPanel;\nimport net.nikr.eve.jeveasset.gui.frame.MainWindow;\nimport net.nikr.eve.jeveasset.gui.frame.StatusPanel;\nimport net.nikr.eve.jeveasset.gui.shared.components.JMainTab;\nimport net.nikr.eve.jeveasset.gui.tabs.agents.AgentsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.assets.AssetsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.contracts.ContractsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.items.ItemsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.jobs.IndustryJobsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.journal.JournalTab;\nimport net.nikr.eve.jeveasset.gui.tabs.loadout.LoadoutsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.loyalty.LoyaltyPointsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.materials.MaterialsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.mining.ExtractionsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.mining.MiningGraphTab;\nimport net.nikr.eve.jeveasset.gui.tabs.mining.MiningTab;\nimport net.nikr.eve.jeveasset.gui.tabs.orders.MarketOrdersTab;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewTab;\nimport net.nikr.eve.jeveasset.gui.tabs.prices.PriceChangesTab;\nimport net.nikr.eve.jeveasset.gui.tabs.prices.PriceHistoryTab;\nimport net.nikr.eve.jeveasset.gui.tabs.reprocessed.ReprocessedTab;\nimport net.nikr.eve.jeveasset.gui.tabs.routing.RoutingTab;\nimport net.nikr.eve.jeveasset.gui.tabs.skills.SkillsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.skills.SkillsOverviewTab;\nimport net.nikr.eve.jeveasset.gui.tabs.slots.SlotsTab;\nimport net.nikr.eve.jeveasset.gui.tabs.standing.NpcStandingTab;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.StockpileTab;\nimport net.nikr.eve.jeveasset.gui.tabs.tracker.TrackerTab;\nimport net.nikr.eve.jeveasset.gui.tabs.transaction.TransactionTab;\nimport net.nikr.eve.jeveasset.gui.tabs.tree.TreeTab;\nimport net.nikr.eve.jeveasset.gui.tabs.values.ValueRetroTab;\nimport net.nikr.eve.jeveasset.gui.tabs.values.ValueTableTab;\nimport net.nikr.eve.jeveasset.io.local.profile.ProfileDatabase.Table;\nimport net.nikr.eve.jeveasset.io.online.PriceDataGetter;\n\n/**\n * any method called will throw an exception. extend and override only the ones that are needed to perform the tests.\n * @author Candle\n */\npublic abstract class FakeProgram extends Program {\n\n\tpublic FakeProgram() {\n\t\tsuper(false);\n\t}\n\n\t@Override\n\tpublic AssetsTab getAssetsTab() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic SlotsTab getSlotsTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic void actionPerformed(final ActionEvent e) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic void exit() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic MainWindow getMainWindow() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic String getProgramDataVersion() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic StatusPanel getStatusPanel() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic void saveSettingsAndProfile() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic StockpileTab getStockpileTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic UserNameSettingsPanel getUserNameSettingsPanel() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic UserPriceSettingsPanel getUserPriceSettingsPanel() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic void overviewGroupsChanged() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic void tabChanged() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic void updateTableMenu() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic OverviewTab getOverviewTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic void createTrackerDataPoint() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic ReprocessedTab getReprocessedTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic List<MyIndustryJob> getIndustryJobsList() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic List<MyMarketOrder> getMarketOrdersList() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic List<String> getOwnerNames(boolean all) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic ProfileManager getProfileManager() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic PriceDataGetter getPriceDataGetter() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic List<MyAccountBalance> getAccountBalanceList() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic List<MyTransaction> getTransactionsList() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic RoutingTab getRoutingTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic void updateTags() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic void saveSettings(String msg) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic void saveProfile() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic List<MyContract> getContractList() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic List<MyAsset> getAssetsList() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic ProfileData getProfileData() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic TreeTab getTreeTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic List<MyContractItem> getContractItemList() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<Long, OwnerType> getOwners() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic List<OwnerType> getOwnerTypes() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic List<MyJournal> getJournalList() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic UserLocationSettingsPanel getUserLocationSettingsPanel() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic void updateStructures(Set<MyLocation> locations, boolean minimizable) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean checkDataUpdate() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean checkProgramUpdate() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic TransactionTab getTransactionsTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic ValueTableTab getIskTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic TrackerTab getTrackerTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<String, JMainTab> getMainTabs() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic void addMainTab(String toolName, JMainTab jMainTab) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic LoadoutsTab getLoadoutsTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic MarketOrdersTab getMarketOrdersTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic void repaintTables() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic PriceHistoryTab getPriceHistoryTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic IndustryJobsTab getIndustryJobsTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic ContractsTab getContractsTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic SkillsTab getSkillsTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic ItemsTab getItemsTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic JournalTab getJournalTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic PriceChangesTab getPriceChangesTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic MaterialsTab getMaterialsTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic ExtractionsTab getExtractionsTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic MiningGraphTab getMiningGraphTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic MiningTab getMiningTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic ValueRetroTab getValueTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<String, JMainTab> getInitTabs() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic synchronized void saveTable(Table table) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic void showJumpsSettingsPanel() {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic AgentsTab getAgentsTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic NpcStandingTab getNpcStandingTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic LoyaltyPointsTab getLoyaltyPointsTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n\n\t@Override\n\tpublic SkillsOverviewTab getSkillsOverviewTab(boolean init) {\n\t\tthrow new UnsupportedOperationException(\"Not implemented\");\n\t}\n}\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/tests/mocks/FakeProgress.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.tests.mocks;\n\nimport uk.me.candle.eve.routing.Progress;\n\n/**\n *\n * @author Candle\n */\npublic class FakeProgress implements Progress {\n\tprivate int value;\n\tprivate int min;\n\tprivate int max;\n\n\t@Override\n\tpublic int getMaximum() {\n\t\treturn max;\n\t}\n\n\t@Override\n\tpublic void setMaximum(final int max) {\n\t\tthis.max = max;\n\t}\n\n\t@Override\n\tpublic int getMinimum() {\n\t\treturn min;\n\t}\n\n\t@Override\n\tpublic void setMinimum(final int min) {\n\t\tthis.min = min;\n\t}\n\n\t@Override\n\tpublic int getValue() {\n\t\treturn value;\n\t}\n\n\t@Override\n\tpublic void setValue(final int value) {\n\t\tthis.value = value;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/tests/mocks/FakeSettings.java",
    "content": "/*\n * Copyright 2009-2026 Contributors (see credits.txt)\n *\n * This file is part of jEveAssets.\n *\n * jEveAssets is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 2\n * of the License, or (at your option) any later version.\n *\n * jEveAssets 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 General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with jEveAssets; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\npackage net.nikr.eve.jeveasset.tests.mocks;\n\nimport java.awt.Dimension;\nimport java.awt.Point;\nimport java.util.Date;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport net.nikr.eve.jeveasset.data.api.raw.RawMarketOrder.MarketOrderRange;\nimport net.nikr.eve.jeveasset.data.settings.ColorSettings;\nimport net.nikr.eve.jeveasset.data.settings.CopySettings;\nimport net.nikr.eve.jeveasset.data.settings.ExportSettings;\nimport net.nikr.eve.jeveasset.data.settings.ManufacturingSettings;\nimport net.nikr.eve.jeveasset.data.settings.MarketOrdersSettings;\nimport net.nikr.eve.jeveasset.data.settings.PriceData;\nimport net.nikr.eve.jeveasset.data.settings.PriceDataSettings;\nimport net.nikr.eve.jeveasset.data.settings.ProxyData;\nimport net.nikr.eve.jeveasset.data.settings.ReprocessSettings;\nimport net.nikr.eve.jeveasset.data.settings.RouteAvoidSettings;\nimport net.nikr.eve.jeveasset.data.settings.RoutingSettings;\nimport net.nikr.eve.jeveasset.data.settings.Settings;\nimport net.nikr.eve.jeveasset.data.settings.StockpileGroupSettings;\nimport net.nikr.eve.jeveasset.data.settings.TrackerSettings;\nimport net.nikr.eve.jeveasset.data.settings.UserItem;\nimport net.nikr.eve.jeveasset.data.settings.tag.Tag;\nimport net.nikr.eve.jeveasset.data.settings.tag.TagID;\nimport net.nikr.eve.jeveasset.data.settings.tag.Tags;\nimport net.nikr.eve.jeveasset.gui.dialogs.settings.SoundsSettingsPanel.SoundOption;\nimport net.nikr.eve.jeveasset.gui.shared.filter.Filter;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JFormulaDialog;\nimport net.nikr.eve.jeveasset.gui.shared.menu.JMenuJumps;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor.ResizeMode;\nimport net.nikr.eve.jeveasset.gui.shared.table.EnumTableFormatAdaptor.SimpleColumn;\nimport net.nikr.eve.jeveasset.gui.shared.table.View;\nimport net.nikr.eve.jeveasset.gui.sounds.Sound;\nimport net.nikr.eve.jeveasset.gui.tabs.orders.Outbid;\nimport net.nikr.eve.jeveasset.gui.tabs.overview.OverviewGroup;\nimport net.nikr.eve.jeveasset.gui.tabs.stockpile.Stockpile;\n\n/**\n *\n * @author Candle\n */\npublic abstract class FakeSettings extends Settings {\n\n\t@Override\n\tpublic Map<SettingFlag, Boolean> getFlags() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic PriceDataSettings getPriceDataSettings() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic ReprocessSettings getReprocessSettings() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<Long, UserItem<Long, String>> getUserItemNames() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<Integer, UserItem<Integer, Double>> getUserPrices() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Point getWindowLocation() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Dimension getWindowSize() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isHighlightSelectedRows() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isReprocessColors() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isSettingsLoadError() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setSettingsLoadError(boolean settingsLoadError) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isWindowAutoSave() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isWindowMaximized() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setFilterOnEnter(final boolean filterOnEnter) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setHighlightSelectedRows(final boolean filterOnEnter) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setPriceData(final Map<Integer, PriceData> priceData) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setPriceDataSettings(final PriceDataSettings priceDataSettings) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setReprocessColors(final boolean updateDev) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setReprocessSettings(final ReprocessSettings reprocessSettings) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setUserItemNames(final Map<Long, UserItem<Long, String>> userItemNames) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setUserPrices(final Map<Integer, UserItem<Integer, Double>> userPrices) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setWindowAutoSave(final boolean windowAutoSave) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setWindowLocation(final Point windowLocation) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setWindowMaximized(final boolean windowMaximized) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setWindowSize(final Dimension windowSize) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<String, OverviewGroup> getOverviewGroups() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isIgnoreSecureContainers() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setIgnoreSecureContainers(final boolean ignoreSecureContainers) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic List<Stockpile> getStockpiles() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<String, List<SimpleColumn>> getTableColumns() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<String, Map<String, List<Filter>>> getTableFilters() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<String, List<Filter>> getTableFilters(final String key) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<String, List<Filter>> getCurrentTableFilters() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic List<Filter> getCurrentTableFilters(final String tableName) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<String, Boolean> getCurrentTableFiltersShown() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean getCurrentTableFiltersShown(final String tableName) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isStockpileFocusTab() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isStockpileHalfColors() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setStockpileFocusTab(final boolean stockpileFocusOnAdd) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setStockpileHalfColors(final boolean stockpileHalfColors) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<String, ResizeMode> getTableResize() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isWindowAlwaysOnTop() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setWindowAlwaysOnTop(final boolean windowAlwaysOnTop) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isIncludeBuyOrders() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isIncludeSellOrders() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setIncludeBuyOrders(boolean includeBuyOrders) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setIncludeSellOrders(boolean includeSellOrders) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<String, Map<String, Integer>> getTableColumnsWidth() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic int getMaximumPurchaseAge() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setMaximumPurchaseAge(int maximumPurchaseAge) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<Long, String> getOwners() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<Integer, PriceData> getPriceData() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic CopySettings getCopySettings() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<String, ExportSettings> getExportSettings() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic ExportSettings getExportSettings(String toolName) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isFilterOnEnter() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<String, Map<String ,View>> getTableViews() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<String, View> getTableViews(String name) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<String, Tag> getTags() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Tags getTags(TagID tagID) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isBlueprintBasePriceTech1() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setBlueprintBasePriceTech1(boolean includeBuyOrders) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isBlueprintBasePriceTech2() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setBlueprintBasePriceTech2(boolean includeBuyOrders) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setJournalHistory(boolean blueprintsTech2) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isJournalHistory() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setTransactionHistory(boolean transactionHistory) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isTransactionHistory() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setEveNames(Map<Long, String> eveNames) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<Long, String> getEveNames() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic RoutingSettings getRoutingSettings() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setIncludeSellContracts(boolean includeBuyOrders) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isIncludeSellContracts() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setIncludeBuyContracts(boolean includeBuyOrders) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isIncludeBuyContracts() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setStockpileColorGroup3(int stockpileColorGroup2) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic int getStockpileColorGroup3() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setStockpileColorGroup2(int stockpileColorGroup1) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic int getStockpileColorGroup2() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setMarketOrderHistory(boolean blueprintsTech2) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isMarketOrderHistory() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic MarketOrdersSettings getMarketOrdersSettings() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setProxyData(ProxyData proxyData) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic ProxyData getProxyData() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean setIncludeManufacturing(boolean includeManufacturing) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isIncludeManufacturing() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setAskedCheckAllTracker(boolean checkAllTracker) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isAskedCheckAllTracker() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setTrackerUseAssetPriceForSellOrders(boolean checkAllTracker) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isTrackerUseAssetPriceForSellOrders() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setPublicMarketOrdersNextUpdate(Date publicMarketOrdersNextUpdate) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Date getPublicMarketOrdersNextUpdate() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setMarketOrdersOutbid(Map<Long, Outbid> outbids) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<Long, Outbid> getMarketOrdersOutbid() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setOutbidOrderRange(MarketOrderRange sellOrderOutbidRange) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic MarketOrderRange getOutbidOrderRange() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setFocusEveOnlineOnEsiUiCalls(boolean focusEveOnlineOnEsiUiCalls) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isFocusEveOnlineOnEsiUiCalls() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setPublicMarketOrdersLastUpdate(Date date) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Date getPublicMarketOrdersLastUpdate() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic List<String> getShowTools() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setSaveToolsOnExit(boolean saveToolsOnExit) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isSaveToolsOnExit() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic ColorSettings getColorSettings() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setTransactionProfitPrice(TransactionProfitPrice transactionProfitPrice) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic TransactionProfitPrice getTransactionProfitPrice() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setFactionWarfareNextUpdate(Date factionWarfareNextUpdate) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Date getFactionWarfareNextUpdate() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setFactionWarfareSystemOwners(Map<Long, String> factionWarfareSystemOwners) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<Long, String> getFactionWarfareSystemOwners() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<Long, Date> getOwnersNextUpdate() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setTransactionProfitMargin(int transactionProfitMargin) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic int getTransactionProfitMargin() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic TrackerSettings getTrackerSettings() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic List<JFormulaDialog.Formula> getTableFormulas(String name) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<String, List<JFormulaDialog.Formula>> getTableFormulas() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic List<JMenuJumps.Jump> getTableJumps(String toolName) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<String, List<JMenuJumps.Jump>> getTableJumps() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Date getTableChanged(String toolName) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<String, Date> getTableChanged() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setContractHistory(boolean contractHistory) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isContractHistory() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<String, List<Filter>> getDefaultTableFilters(String key) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<String, Set<Integer>> getPriceHistorySets() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean setIncludeCopying(boolean includeCopying) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isIncludeCopying() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic StockpileGroupSettings getStockpileGroupSettings() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setMiningHistory(boolean contractHistory) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isMiningHistory() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<SoundOption, Sound> getSoundSettings() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setManufacturingDefault(boolean manufacturingDefault) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isManufacturingDefault() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic ManufacturingSettings getManufacturingSettings() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setEasyChartColors(boolean easyChartColors) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isEasyChartColors() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setContainersShowItemID(boolean containersShowItemID) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isContainersShowItemID() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setToolsLocked(boolean toolsLocked) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isToolsLocked() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setShowSubpileTree(boolean showSubpileTree) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isShowSubpileTree() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setIndustryJobsHistory(boolean journalHistory) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isIndustryJobsHistory() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setAssetsContractsOwnerBoth(boolean assetsContractsOwnerBoth) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isAssetsContractsOwnerBoth() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setAssetsContractsOwnerCorporation(boolean assetsContractsOwnerCorporation) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isAssetsContractsOwnerCorporation() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setCellValueCache(boolean cellValueCache) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setLoadToolsStartup(boolean loadToolsStartup) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\t\n\t@Override\n\tpublic boolean isLoadToolsStartup() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setLoadToolsBackground(boolean loadToolsBackground) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isLoadToolsBackground() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isColumnValueCache() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void putImportSettings(String toolName, Enum<?> type) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic String getImportSettings(String toolName, Enum<?> defaultValue) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<String, String> getImportSettings() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean setIncludePluggedInImplants(boolean includePluggedInImplants) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isIncludePluggedInImplants() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean setIncludeJumpClones(boolean includeJumpClones) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isIncludeJumpClones() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic String getCurrentTableSorting(String toolName) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<String, String> getCurrentTableSorting() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic RouteAvoidSettings getJumpsAvoidSettings() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic Map<String, Map<Integer, Integer>> getSkillPlans() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setEveGatecampCheckUnsecure(boolean eveGatecampCheckUnsecure) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isEveGatecampCheckUnsecure() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setEveGatecampCheckSecure(boolean eveGatecampCheckSecure) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isEveGatecampCheckSecure() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setEveGatecampCheckNeverOpen(boolean eveGatecampCheckNeverOpen) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isEveGatecampCheckNeverOpen() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setEveGatecampCheckAlwaysOpen(boolean eveGatecampCheckAlwaysOpen) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isEveGatecampCheckAlwaysOpen() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic void setEveGatecampCheckSet(boolean eveGatecampCheckSet) {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n\n\t@Override\n\tpublic boolean isEveGatecampCheckSet() {\n\t\tthrow new UnsupportedOperationException(\"not implemented\");\n\t}\n}\n"
  },
  {
    "path": "src/test/java/net/nikr/eve/jeveasset/tests/mocks/OverwriteTest.java",
    "content": "/*\r\n * Copyright 2009-2026 Contributors (see credits.txt)\r\n *\r\n * This file is part of jEveAssets.\r\n *\r\n * jEveAssets is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n *\r\n * jEveAssets is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with jEveAssets; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r\n *\r\n */\r\n\r\npackage net.nikr.eve.jeveasset.tests.mocks;\r\n\r\nimport java.lang.reflect.Method;\r\nimport java.lang.reflect.Modifier;\r\nimport static org.junit.Assert.*;\r\nimport org.junit.Test;\r\n\r\n\r\npublic class OverwriteTest {\r\n\r\n\tprivate void test(Class<?> c) {\r\n\t\tMethod methods[] = c.getMethods();\r\n\t\tfor (Method method : methods) {\r\n\t\t\tif (method.getDeclaringClass() != c\r\n\t\t\t\t\t&& method.getDeclaringClass() != Object.class\r\n\t\t\t\t\t&& ((method.getModifiers() & Modifier.STATIC) != Modifier.STATIC)\r\n\t\t\t\t\t&& ((method.getModifiers() & Modifier.FINAL) != Modifier.FINAL)) {\r\n\t\t\t\tfail(c.getSimpleName()+\" - overwrite method: \"+method.toString());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void testOverwrite() {\r\n\t\ttest(FakeProgram.class);\r\n\t\ttest(FakeSettings.class);\r\n\t\ttest(FakeProgress.class);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/resources/added.json",
    "content": "{\"0\":1491742865376,\"1020017671461\":1509788625017,\"1022040405693\":1478686417170,\"1025513801116\":1509788624227,\"1025710936541\":1509788624346,\"1025710936536\":1509788624345,\"1025710936539\":1509788624346,\"1025710936532\":1509788624346,\"1011606128798\":1478686417220,\"1025710936533\":1509788624345,\"1025513801110\":1509788624270,\"1025710936528\":1509788624345,\"1025710936529\":1509788624345,\"1025710936530\":1509788624345,\"1025513801107\":1509788624270,\"1025710936531\":1509788624345,\"1025710936556\":1509788624345,\"1013041257791\":1478686417074,\"1019541348776\":1509788625076,\"1025714868628\":1509788624212,\"1025714868629\":1509788624212,\"1025710936553\":1509788624345,\"1025513801130\":1509788624227,\"1025710936554\":1509788624345,\"1016819662823\":1478686804025,\"1025710936555\":1509788624345,\"1019541348780\":1509788625076,\"1025513801124\":1509788624227,\"1022044862043\":1509788624958,\"1025710936549\":1509788624345,\"1021529741102\":1509788624913,\"1021529741101\":1509788624913,\"1025710936544\":1509788624345,\"1022044862045\":1509788624958,\"1021529741110\":1509788624913,\"1021529741109\":1509788624913,\"1023701703101\":1509788624234,\"1020391888064\":1478686804028,\"1021529741104\":1509788624913,\"1021529741119\":1509788624913,\"1021529741117\":1509788624913,\"1025714868620\":1509788624211,\"1025714868621\":1509788624212,\"1021529741114\":1509788624913,\"1025714868622\":1509788624212,\"1021529741113\":1509788624913,\"1021529741124\":1509788624913,\"1021529741121\":1509788624913,\"1022249402996\":1509788624304,\"1021529741133\":1509788624913,\"1021644562019\":1478686417008,\"1015307462058\":1478686804062,\"1025513801155\":1509788624207,\"1021529741128\":1509788624913,\"1021529741139\":1509788624913,\"1021529741150\":1509788624913,\"1021529741145\":1509788624913,\"746466337\":1444487341721,\"1021328411495\":1478686804043,\"1022511157989\":1480585069131,\"1021529741158\":1509788624913,\"1022511157990\":1480585069126,\"1021529741157\":1509788624913,\"1021529741152\":1509788624913,\"1022511157997\":1480585069126,\"1008957057543\":1478686804023,\"1020783274988\":1478686417029,\"1022511157994\":1480585069126,\"1022511157995\":1480585069126,\"1022511158004\":1480585069126,\"1025043376582\":1509788624452,\"1022511158005\":1480585069126,\"1021831342459\":1478686417256,\"1022511158000\":1480585069131,\"1025513801208\":1509788624539,\"1022511158002\":1480585069130,\"1022511158003\":1480585069126,\"1025513801211\":1509788624552,\"1025513801204\":1509788624611,\"1022511158013\":1480585069126,\"1025513801206\":1509788624565,\"1025513801207\":1509788624565,\"1022511158008\":1480585069126,\"1022511158009\":1480585069126,\"1022511158010\":1480585069126,\"1025513801203\":1509788624613,\"1022485729416\":1480585069126,\"1022485729417\":1480585069126,\"1021529741190\":1509788624913,\"1022485729418\":1480585069126,\"1022485729419\":1480585069126,\"1021687554362\":1480585069059,\"1022485729421\":1480585069126,\"1022485729422\":1480585069126,\"1021529741198\":1509788624913,\"1021529741196\":1509788624913,\"1021893733884\":1509788624433,\"1021529741194\":1509788624913,\"1022485729415\":1480585069126,\"1022485729432\":1480585069126,\"1022903462322\":1509788624382,\"1022485729433\":1480585069126,\"1021529741206\":1509788624913,\"1022430678498\":1478686417302,\"1022485729435\":1480585069126,\"1021529741203\":1509788624913,\"1022485729437\":1480585069126,\"1022485729438\":1480585069126,\"1022485729439\":1480585069126,\"1022485729425\":1480585069126,\"1022485729426\":1480585069126,\"1021529741213\":1509788624913,\"1022485729427\":1480585069126,\"1021489370611\":1478686417110,\"1022485729428\":1480585069126,\"1022485729429\":1480585069126,\"1022485729431\":1480585069126,\"1021529741222\":1509788624913,\"1024519866985\":1509788625070,\"1022229479915\":1478686417014,\"1021529741217\":1509788624913,\"1012328870851\":1478686416977,\"1022485729440\":1480585069126,\"1022485729441\":1480585069126,\"1022485729442\":1480585069126,\"1021529741229\":1509788624913,\"1019169753856\":1509788624373,\"1021529741226\":1509788624913,\"1019982019575\":1509788624323,\"1021529741239\":1509788624913,\"1021390147524\":1478686417042,\"1008351626795\":1478686804023,\"1019982019574\":1509788624323,\"1019982019573\":1509788624323,\"1021529741237\":1509788624913,\"1019982019572\":1509788624323,\"1021529741236\":1509788624913,\"1022020351345\":1478686417161,\"1019982019571\":1509788624323,\"1021529741233\":1509788624913,\"1021529741244\":1509788624913,\"1021529741242\":1509788624913,\"1021529741241\":1509788624913,\"1021390147530\":1478686417042,\"1021529741240\":1509788624913,\"1025556006861\":1509788624297,\"1025524024796\":1509788624843,\"1025593887255\":1509788624186,\"1025593887252\":1509788624198,\"1021151854938\":1478686417097,\"1022485729500\":1480585069126,\"1025593887250\":1509788624200,\"1025593887251\":1509788624204,\"1022044862127\":1509788624938,\"1022485729513\":1480585069127,\"1022485729515\":1480585069127,\"1022485729516\":1480585069127,\"1022485729517\":1480585069127,\"1022485729519\":1480585069127,\"1022485729505\":1480585069126,\"1022485729507\":1480585069127,\"1022485729509\":1480585069127,\"1022485729510\":1480585069127,\"1022485729528\":1480585069127,\"1023946418156\":1491634246529,\"1022485729533\":1480585069127,\"1022485729535\":1480585069127,\"1022485729520\":1480585069127,\"1022485729521\":1480585069127,\"1022485729522\":1480585069127,\"1025002481404\":1509788625006,\"1022485729525\":1480585069127,\"1022485729526\":1480585069127,\"1021981553461\":1478686417010,\"1021457257077\":1478686417044,\"1024615288378\":1509788624810,\"1024615288379\":1509788624810,\"1024615288377\":1509788624810,\"1024615288383\":1509788624810,\"1024615288381\":1509788624810,\"1022485729536\":1480585069127,\"1024615288370\":1509788624810,\"1022485729537\":1480585069127,\"1022049056569\":1478686417269,\"1024615288369\":1509788624810,\"1022485729540\":1480585069127,\"1024615288375\":1509788624810,\"1023730801404\":1509788624960,\"1022485729543\":1480585069127,\"1021633552376\":1509788624404,\"1024615288373\":1509788624810,\"1003909594196\":1478686804046,\"1022501720102\":1509788624609,\"1024615288367\":1509788624810,\"1022501720098\":1509788624609,\"1022501720099\":1509788624609,\"1024615288352\":1509788624811,\"1015591629834\":1478686804016,\"1022501720105\":1509788624609,\"1024615288359\":1509788624811,\"1022501720106\":1509788624610,\"1022501720084\":1509788624609,\"1022501720086\":1509788624609,\"1022501720087\":1509788624610,\"1021629750313\":1478686417247,\"1022501720080\":1509788624610,\"1022501720081\":1509788624609,\"1022485729582\":1480585069127,\"1024615288348\":1509788624811,\"1022485729583\":1480585069127,\"1022501720083\":1509788624610,\"1022038177788\":1478686417267,\"1024615288339\":1509788624810,\"1018858060139\":1509788624372,\"1022501720094\":1509788624609,\"1022501720095\":1509788624609,\"1022501720088\":1509788624609,\"1022501720089\":1509788624609,\"1022501720090\":1509788624609,\"1022049711914\":1509788624430,\"1022501720091\":1509788624609,\"1022485729592\":1480585069127,\"1022485729593\":1480585069127,\"1022485729594\":1480585069127,\"1022519153464\":1509788624862,\"1022485729597\":1480585069127,\"1022485729584\":1480585069127,\"1022485729585\":1480585069127,\"1022519153459\":1509788624862,\"1022485729586\":1480585069127,\"1022501720079\":1509788624609,\"1022485729588\":1480585069127,\"1022519153462\":1509788624862,\"1022485729590\":1480585069127,\"1021629750322\":1478686417248,\"1022485729591\":1480585069127,\"1022519153461\":1509788624862,\"1022485729608\":1480585069127,\"1022485729610\":1480585069127,\"1022813021636\":1509788625055,\"1022485729611\":1480585069127,\"1022485729600\":1480585069127,\"1022485729601\":1480585069127,\"1022485729602\":1480585069127,\"1022031361143\":1509788624368,\"1004588296066\":1444487341762,\"1022485729604\":1480585069127,\"1022485729605\":1480585069127,\"1022485729607\":1480585069127,\"1021098114953\":1509788624930,\"1021098114955\":1509788624930,\"1022485729616\":1480585069127,\"1013208901189\":1478686804015,\"1021098114945\":1509788624932,\"1021098114946\":1509788624940,\"1024615288411\":1509788624810,\"1025433321754\":1509788624935,\"1013390177098\":1444487341759,\"1016400095136\":1480585069069,\"1024615288413\":1509788624810,\"1022485729657\":1480585069127,\"1022485729659\":1480585069127,\"1021490025493\":1478686417046,\"1022485729660\":1480585069127,\"1022485729662\":1480585069127,\"1022485729648\":1480585069127,\"1024615288386\":1509788624811,\"1024615288387\":1509788624811,\"1022485729651\":1480585069127,\"1024615288385\":1509788624811,\"1022485729652\":1480585069127,\"1024615288390\":1509788624810,\"1022485729654\":1480585069127,\"1024615288389\":1509788624810,\"1022485729673\":1480585069127,\"1022485729675\":1480585069128,\"1022485729677\":1480585069128,\"1024313294015\":1509788624178,\"4560522835\":1465469681389,\"1022485729678\":1480585069128,\"1022485729679\":1480585069128,\"1022485729664\":1480585069127,\"1009352180597\":1478686804030,\"1022485729667\":1480585069127,\"1023926888366\":1491634246530,\"1022485729669\":1480585069127,\"1023926888367\":1491634246530,\"1021527381669\":1478686417047,\"1010491869030\":1491634246530,\"1025714606116\":1509788625137,\"1023926888369\":1491634246530,\"1025714606112\":1509788625138,\"1016819662421\":1478686804025,\"1025714606114\":1509788625138,\"1025714606115\":1509788625138,\"1022485729680\":1480585069128,\"1021529740959\":1509788624912,\"1022485729681\":1480585069128,\"1012311962420\":1478686804054,\"1021529740962\":1509788624913,\"1021529740961\":1509788624913,\"1022057575978\":1478686417270,\"1021529740960\":1509788624913,\"1022084708794\":1478686417272,\"1021529740974\":1509788624912,\"1021529740973\":1509788624912,\"1020294106887\":1465470268290,\"1021529740968\":1509788624912,\"1021529740983\":1509788624912,\"1022103321412\":1478686417181,\"1021529740979\":1509788624912,\"1021529740978\":1509788624912,\"4333372412\":1447930956559,\"1021529740976\":1509788624912,\"1021529740991\":1509788624912,\"1008829653956\":1509788624372,\"1025671745506\":1509788624943,\"1021529740993\":1509788624912,\"1012147333506\":1478686417073,\"1021757678757\":1478686417126,\"1021529741007\":1509788624912,\"1021529741003\":1509788624912,\"1021757678755\":1478686417126,\"1025546438260\":1509788624367,\"1025101966839\":1509788624307,\"1021529741000\":1509788624912,\"1021529741009\":1509788624912,\"1021529741019\":1509788624913,\"1025546438245\":1509788624368,\"1021529741016\":1509788624913,\"1023628301325\":1509788624928,\"1024831954364\":1509788624939,\"1024831954365\":1509788624939,\"1021217522770\":1465470268195,\"1025416674951\":1509788624293,\"1019384191255\":1509788624933,\"1012816204177\":1478686417026,\"1023900541996\":1491634246530,\"1025146400363\":1509788624414,\"1025101966905\":1509788624308,\"1022501720885\":1509788624911,\"1025441317884\":1509788624537,\"1022501720886\":1509788624911,\"1024615288126\":1509788624529,\"1025441317882\":1509788624541,\"1025441317883\":1509788624543,\"1022501720881\":1509788624911,\"1022501720893\":1509788624911,\"1022501720894\":1509788624911,\"1020823383862\":1478686417226,\"1022501720889\":1509788624911,\"1025101966902\":1509788624307,\"1024615288116\":1509788624529,\"1022501720891\":1509788624911,\"1024615288105\":1509788624529,\"1024615288110\":1509788624529,\"1021151331238\":1509788624945,\"1024615288102\":1509788624529,\"1022371825903\":1478686417204,\"1024615288103\":1509788624529,\"1059863858\":1458304307280,\"1022501720874\":1509788624911,\"1021345058340\":1478686804023,\"1021918375387\":1478686417259,\"1025782503339\":1509788624297,\"1022501720848\":1509788624912,\"1022501720851\":1509788624911,\"1021801720549\":1478686804065,\"1022501720860\":1509788624911,\"1021831211815\":1509788625083,\"1024615288083\":1509788624415,\"1024615288080\":1509788624415,\"1022501720856\":1509788624912,\"1022251630642\":1478686417066,\"1024615288084\":1509788624415,\"1021426717464\":1509788624399,\"1024615288078\":1509788624415,\"1024615288076\":1509788624415,\"1022501720847\":1509788624911,\"1011978247246\":1478686804024,\"1024615288069\":1509788624415,\"1023658710143\":1509788624326,\"1020779866519\":1478686417076,\"1023658710141\":1509788624326,\"1021757417429\":1509788624561,\"1025714607090\":1509788624230,\"1021757417431\":1509788624561,\"1021757417430\":1509788624561,\"1021257893139\":1465470268198,\"1021257893138\":1465470268197,\"1024055864539\":1509788624330,\"1021661994344\":1509788624400,\"1021757417432\":1509788624561,\"1023658710132\":1509788624326,\"1024615288176\":1509788624529,\"1021257893136\":1465470268197,\"1024615288177\":1509788624529,\"1024831954460\":1509788624939,\"1010002700897\":1491634246524,\"1021522662851\":1509788624398,\"1021429076822\":1478686417044,\"1024615288168\":1509788624529,\"1010002700898\":1491634246524,\"1024615288169\":1509788624529,\"1023485431489\":1509788624537,\"1021328410963\":1478686804043,\"1024615288172\":1509788624529,\"1024615288173\":1509788624529,\"1024615288162\":1509788624529,\"1024615288161\":1509788624529,\"1024615288164\":1509788624529,\"1025101966939\":1509788624308,\"1022501720913\":1509788624911,\"1024615288146\":1509788624529,\"1024615288145\":1509788624529,\"1019833380943\":1509788624393,\"1024615288150\":1509788624529,\"1016819662253\":1478686804025,\"1025101966934\":1509788624308,\"1022501720897\":1509788624911,\"1025101966926\":1509788624308,\"1024615288140\":1509788624529,\"1022501720908\":1509788624911,\"1018981139093\":1509788624316,\"1022501720910\":1509788624911,\"1024615288134\":1509788624529,\"1022501720906\":1509788624911,\"1025101966919\":1509788624307,\"1024615288251\":1509788624189,\"1024615288248\":1509788624189,\"1024615288249\":1509788624189,\"1024615288254\":1509788624189,\"1012903630753\":1478686417074,\"1025782503174\":1509788624296,\"1024615288245\":1509788624188,\"1012594164002\":1478686804062,\"1025441317732\":1509788624800,\"1021903170650\":1478686417054,\"1106002807\":1478686804024,\"1025441317730\":1509788624824,\"1025303296677\":1509788625083,\"1025441317728\":1509788624829,\"1025441317729\":1509788624834,\"1023154469518\":1509788624925,\"1012594163999\":1478686804062,\"1025514587940\":1509788624344,\"1023154469515\":1509788624928,\"1024615288208\":1509788624529,\"1024615288203\":1509788624529,\"1019721051717\":1509788624932,\"1022160338901\":1478686417063,\"1024615288195\":1509788624529,\"1021352660747\":1465470268225,\"1023658710148\":1509788624326,\"1021352660749\":1465470268225,\"4954793451\":1509788624155,\"1021352660750\":1465470268225,\"1024615288314\":1509788624188,\"1024167802629\":1509788624238,\"1024167802626\":1509788624238,\"1024167802627\":1509788624238,\"1020600296111\":1478686417027,\"1006918857511\":1509788624389,\"1024167802636\":1509788624238,\"1024167802634\":1509788624238,\"1024615288311\":1509788624188,\"1024167802635\":1509788624238,\"1021706428497\":1478686417250,\"1024167802632\":1509788624238,\"1022659402080\":1509788624435,\"1024167802633\":1509788624238,\"1024615288297\":1509788624188,\"1024615288302\":1509788624188,\"1024615288290\":1509788624189,\"1021013834525\":1478686417001,\"1020600296114\":1478686417027,\"1024615288282\":1509788624189,\"1024615288283\":1509788624189,\"1024615288284\":1509788624189,\"1024615288275\":1509788624188,\"1024615288273\":1509788624188,\"1020294237255\":1465470268299,\"1024615288278\":1509788624188,\"1004342400380\":1444487341756,\"1024615288279\":1509788624189,\"708847791\":1478686804064,\"1021791495580\":1478686417129,\"1024615288271\":1509788624188,\"1021098114088\":1509788624933,\"1024615288258\":1509788624188,\"1025628491311\":1509788624507,\"1024615288257\":1509788624188,\"1022213227195\":1478686417281,\"1024615288260\":1509788624188,\"1024615288261\":1509788624188,\"1022501720629\":1509788624267,\"1022501720630\":1509788624267,\"1022501720631\":1509788624267,\"1022416916263\":1478686417209,\"1022501720625\":1509788624267,\"1021041228071\":1509788624971,\"1021695943222\":1509788624404,\"1022501720635\":1509788624267,\"1018665250518\":1509788624377,\"1024167802590\":1509788624238,\"1024167802586\":1509788624238,\"1022501720617\":1509788624267,\"1021979717966\":1478686417151,\"1024167802585\":1509788624238,\"1022501720619\":1509788624267,\"1025607649589\":1509788624213,\"1024167802599\":1509788624238,\"1024167802596\":1509788624238,\"1024167802597\":1509788624238,\"1024167802594\":1509788624238,\"1025607649587\":1509788624212,\"1021294463520\":1478686416990,\"1024167802607\":1509788624238,\"1022943703029\":1509788624291,\"1025608304832\":1509788624823,\"1025608304833\":1509788624746,\"1024167802602\":1509788624238,\"1022943703024\":1509788624291,\"1024167802603\":1509788624238,\"1024167802613\":1509788624238,\"1025607649581\":1509788624212,\"1024167802623\":1509788624238,\"1024167802621\":1509788624238,\"1024167802618\":1509788624238,\"1024167802616\":1509788624238,\"1024615287931\":1509788625097,\"1025896144771\":1509788667402,\"1024615287923\":1509788625097,\"1021687554805\":1480585069059,\"1024615287920\":1509788625097,\"1024615287927\":1509788625097,\"1024615287914\":1509788625097,\"1024615287912\":1509788625096,\"1025608304830\":1509788624828,\"1025608304831\":1509788624833,\"1024953853882\":1509788625169,\"1025607649603\":1509788624213,\"1024615287917\":1509788625097,\"1023130350822\":1509788624374,\"1020867556292\":1509788624183,\"1025524024908\":1509788625167,\"1019286933937\":1509788625079,\"1021396438132\":1509788624399,\"1022041847295\":1478686417170,\"1652187417\":1444487341747,\"1022898350840\":1509788624402,\"1022479962891\":1478943089488,\"1022501720644\":1509788624267,\"1020202224470\":1465470268243,\"1022501720645\":1509788624267,\"1022501720646\":1509788624267,\"1025804784934\":1509788667463,\"1022501720647\":1509788624267,\"1022501720640\":1509788624267,\"1022501720652\":1509788624267,\"1022501720653\":1509788624267,\"1022501720655\":1509788624267,\"1022501720648\":1509788624267,\"1022501720649\":1509788624267,\"1025142336686\":1509788625004,\"1022501720651\":1509788624267,\"1025142336687\":1509788625004,\"1024519866698\":1509788625070,\"1025513801230\":1509788624546,\"1025513801224\":1509788624546,\"4922418927\":1509788624154,\"1020817747483\":1509788625021,\"1015783784975\":1478686804025,\"1025513801218\":1509788624545,\"1025513801240\":1509788624545,\"1022501720736\":1509788625236,\"1022501720737\":1509788625236,\"1022501720738\":1509788625236,\"1025513801237\":1509788624546,\"1022501720749\":1509788625236,\"1025782502931\":1509788624295,\"1025513801239\":1509788624546,\"1022501720744\":1509788625236,\"1025323874659\":1509788624298,\"1024615287975\":1509788625096,\"1022501720745\":1509788625236,\"1024615287973\":1509788625097,\"1022501720725\":1509788625236,\"1021982339499\":1509788625068,\"1024615287961\":1509788625097,\"1022501720727\":1509788625236,\"1022501720720\":1509788625236,\"1024615287967\":1509788625096,\"1022501720721\":1509788625236,\"1024615287964\":1509788625097,\"1022501720722\":1509788625236,\"1024554602367\":1509788624928,\"1024615287955\":1509788625097,\"1022501720735\":1509788625236,\"1008317286176\":1478686804023,\"1022501720730\":1509788625236,\"1024615287946\":1509788625096,\"1022244946385\":1478686417284,\"1021568014700\":1509788624456,\"1012643972374\":1478686417223,\"1024615287951\":1509788625096,\"1022501720707\":1509788625236,\"1021008591759\":1478686804039,\"1022501720717\":1509788625236,\"1021035460899\":1478686417092,\"1022501720718\":1509788625236,\"1022501720719\":1509788625236,\"1022501720713\":1509788625236,\"1024615288058\":1509788624415,\"1021608517552\":1478686417049,\"1021608517554\":1478686417049,\"1024615288062\":1509788624415,\"1021608517556\":1478686417049,\"1024615288063\":1509788624415,\"1020985652311\":1478686417088,\"1021187899567\":1509788624934,\"1021187899566\":1509788624934,\"1022934657164\":1509788625100,\"1024781490841\":1509788624231,\"1024615288049\":1509788624415,\"1024936157649\":1509788625006,\"1024615288052\":1509788624415,\"1024615288042\":1509788624415,\"1024615288041\":1509788624415,\"1024615288046\":1509788624415,\"1024615288047\":1509788624415,\"1024615288045\":1509788624415,\"1024274495667\":1509788624327,\"1024615288033\":1509788624415,\"1021608517548\":1478686417049,\"1024615288036\":1509788624415,\"1022445096308\":1478686417214,\"1024615288026\":1509788624415,\"1020294106440\":1465470268290,\"1024615288025\":1509788624415,\"1024615288031\":1509788624415,\"1024615288028\":1509788624415,\"1021791495298\":1478686417129,\"1024615288022\":1509788624415,\"1652187540\":1444487341744,\"1015506957292\":1480585069068,\"1023018021820\":1509788625100,\"1016465238296\":1478686804046,\"1021472460903\":1478686417045,\"1025141943260\":1509788624867,\"1009613673805\":1478686804034,\"1020444709827\":1478686804066,\"1024960143516\":1509788624169,\"1024548704036\":1509788625007,\"706752059\":1444487341708,\"1020833868477\":1509788624390,\"1025779487223\":1509788624200,\"1021987059682\":1478686417264,\"1025671875093\":1509788624942,\"1023018022007\":1509788624533,\"228460965\":1478686417019,\"1021930171232\":1478686417142,\"1025715525068\":1509788624228,\"1019169755134\":1509788624375,\"1021594492750\":1509788624419,\"1020294105807\":1465470268290,\"1023747578015\":1509788624940,\"1025779487141\":1509788624822,\"1017167927158\":1478686804058,\"1025779487139\":1509788624828,\"1024960143605\":1509788624169,\"1021412037749\":1480585069080,\"1020117944236\":1465470268277,\"1022871217032\":1509788624482,\"1021971068485\":1478686417149,\"1018546496102\":1480585069070,\"1023647044176\":1509788625146,\"1023647044179\":1509788625146,\"1025441318229\":1509788625089,\"1004588294759\":1444487341762,\"1014343413706\":1465470268319,\"1004454861425\":1478686804046,\"1025441318218\":1509788625125,\"1025441318219\":1509788625108,\"1025441318217\":1509788625117,\"1016819661688\":1478686804025,\"1022229349834\":1478686417193,\"1023647044170\":1509788625146,\"1023647044174\":1509788625146,\"1023647044175\":1509788625146,\"4333373058\":1447930956559,\"1019134233861\":1509788624315,\"1010987984820\":1478686804052,\"1021083826543\":1478686417094,\"1021259727837\":1478686417040,\"1020391886874\":1478686804022,\"1022091787639\":1478686417273,\"1022091787637\":1478686417273,\"1022263429052\":1478686417197,\"1020792451055\":1509788625081,\"1023950220766\":1509788667501,\"1024886875627\":1509788624460,\"1018513465806\":1509788624499,\"1018513465803\":1509788624499,\"1024886875619\":1509788624460,\"1018513465798\":1509788624499,\"1024886875616\":1509788624460,\"1024886875622\":1509788624460,\"1018513465795\":1509788624499,\"1024886875620\":1509788624460,\"1013031688320\":1478686804023,\"1024886875642\":1509788624460,\"1016819661521\":1478686804025,\"1012103947239\":1478686417025,\"1023018022234\":1509788624815,\"1024146699792\":1509788667505,\"1022028083311\":1478686417058,\"1021951669472\":1478686417261,\"1021951669465\":1478686417261,\"1021951669461\":1478686417261,\"1023950220791\":1509788667501,\"1021951669463\":1478686417261,\"1022103715815\":1509788624416,\"1021951669462\":1478686417261,\"1024637703403\":1509788667502,\"1025593757690\":1509788624200,\"1025593757691\":1509788624204,\"1025593757692\":1509788624198,\"1023950220778\":1509788667501,\"1025593757693\":1509788624186,\"1021113711307\":1478686417037,\"1021700663246\":1478686804046,\"1021700663244\":1478686804046,\"1023950220768\":1509788667501,\"1013139695104\":1478686804016,\"1018513465743\":1509788624499,\"1025006805637\":1509788625006,\"1020868605229\":1478686417079,\"1018513465739\":1509788624499,\"1022281777429\":1478686417067,\"812004641\":1478950494916,\"1018513465735\":1509788624499,\"1010571956073\":1478686804028,\"1018513465730\":1509788624499,\"1021988501235\":1478686417154,\"1024960143827\":1509788624169,\"1021999380070\":1478686417011,\"1020581157605\":1480585069077,\"1022179605285\":1478686417187,\"1021589249771\":1478686417246,\"1007095807500\":1478686804025,\"1025714607300\":1509788624212,\"1018513465788\":1509788624499,\"1000528605626\":1444487341710,\"1021482946746\":1478686417045,\"1018513465783\":1509788624499,\"1018513465780\":1509788624499,\"1025714607305\":1509788624212,\"1021974869986\":1509788624438,\"1025714607306\":1509788624212,\"1010011483144\":1491634246525,\"1010011483151\":1491634246525,\"1023018022346\":1509788624419,\"1010011483148\":1491634246525,\"1010011483137\":1491634246525,\"1010011483143\":1491634246525,\"1010011483141\":1491634246525,\"4954792644\":1509788624153,\"1024095712675\":1509788624459,\"1009078432959\":1478686804023,\"1023106756766\":1509788624264,\"1010011483152\":1491634246525,\"1022866105052\":1509788624268,\"1018513465710\":1509788624499,\"1018513465708\":1509788624499,\"1018513465707\":1509788624499,\"1020917233197\":1478686417228,\"1021599996250\":1478686417048,\"1025715524663\":1509788624211,\"1025715524660\":1509788624211,\"1018513465723\":1509788624499,\"1025715524659\":1509788624212,\"1018513465716\":1509788624499,\"1020907403139\":1478686416999,\"1025715524667\":1509788624211,\"1021788480005\":1480585069067,\"1021531839833\":1509788624405,\"1023086834076\":1509788624987,\"1004342399579\":1444487341711,\"1023086834078\":1509788624987,\"1004342399582\":1444487341756,\"1025006805524\":1509788625006,\"1021845237645\":1480585069083,\"1023086834060\":1509788624987,\"1020251901681\":1478686804021,\"1023086834056\":1509788624987,\"1023086834058\":1509788624986,\"1025626523924\":1509788625004,\"1025626523925\":1509788625004,\"1023086834098\":1509788624987,\"1008043995419\":1478686804023,\"1016819661356\":1478686804025,\"1013073238746\":1478686416995,\"1023086834084\":1509788624986,\"1023086834085\":1509788624987,\"1022463314572\":1478686417218,\"1023018022332\":1509788624193,\"1023086834081\":1509788624986,\"1020803852733\":1509788624318,\"1024960143739\":1509788624169,\"1020739235288\":1465470268182,\"1023086834088\":1509788624987,\"1023086834089\":1509788624987,\"1025441317889\":1509788624524,\"1024167801794\":1509788624882,\"1024167801795\":1509788624882,\"1016731057920\":1478686804031,\"1024167801806\":1509788624883,\"1016731057921\":1478686804016,\"1016731057922\":1478686804031,\"1024167801800\":1509788624882,\"1024167801814\":1509788624882,\"1024167801815\":1509788624882,\"1024167801812\":1509788624882,\"1021937252044\":1509788624464,\"1019524310681\":1509788624320,\"1024167801809\":1509788624882,\"1024167801816\":1509788624882,\"1024167801817\":1509788624882,\"1008601584528\":1478686804030,\"1020984996275\":1478686804039,\"1025296744106\":1509788624234,\"1025714608116\":1509788624844,\"1022238655619\":1509788624947,\"1024008154379\":1509788667551,\"1018923596349\":1509788624282,\"1025714608113\":1509788624844,\"1022238655623\":1509788624930,\"1024008154380\":1509788667551,\"1022238655621\":1509788624941,\"1025532281050\":1509788624343,\"1025485620498\":1509788625089,\"1024008154371\":1509788667551,\"1025485620497\":1509788625109,\"1024008154373\":1509788667551,\"1024167801751\":1509788624882,\"1024167801749\":1509788624882,\"1024167801746\":1509788624883,\"1022019171245\":1478686417161,\"1024167801744\":1509788624882,\"1024167801745\":1509788624883,\"1018701294048\":1465470268241,\"1024008154384\":1509788667551,\"1018701294050\":1465470268242,\"1024167801755\":1509788624882,\"1022002524842\":1478686417265,\"1024167801753\":1509788624882,\"1000049398045\":1509788625081,\"1024167801762\":1509788624882,\"1024008154414\":1509788667551,\"1021757678341\":1478686417126,\"1021757678342\":1478686417126,\"1024008154407\":1509788667551,\"1024167801768\":1509788624882,\"1017221534115\":1465470268268,\"1024008154424\":1509788667551,\"1025015062837\":1509788624465,\"1024008154431\":1509788667551,\"1024167801776\":1509788624882,\"1000049398024\":1509788625081,\"1024008154428\":1509788667551,\"1021327101251\":1465470268215,\"1024167801790\":1509788624882,\"1024008154419\":1509788667551,\"1019169754582\":1509788624375,\"1004588294325\":1444487341762,\"1021327101255\":1465470268215,\"1024167801787\":1509788624882,\"1021327101253\":1465470268215,\"1024167801785\":1509788624882,\"416161354\":1444487341744,\"1024625251850\":1509788624507,\"1000306172032\":1478686417027,\"1025406843234\":1509788624507,\"1023707340758\":1509788625078,\"1022162041835\":1478686417186,\"1025406843248\":1509788624456,\"1012376842282\":1478686417074,\"1016819661150\":1478686804025,\"1022021530487\":1509788624181,\"1021390146007\":1478686417042,\"1025406843204\":1509788624466,\"1021594492290\":1509788624817,\"1022021530488\":1509788624180,\"1025006805362\":1509788625006,\"1025406843221\":1509788624441,\"1022063735185\":1478686417060,\"1021331032631\":1478686417239,\"1024886875681\":1509788624460,\"1025671874797\":1509788624942,\"1025406843196\":1509788624512,\"1022005408382\":1478686417057,\"1025406843195\":1509788624511,\"1468420446\":1478950494923,\"1022430546856\":1478686417016,\"1024960143959\":1509788624169,\"1024497716957\":1509788625070,\"1024886875648\":1509788624460,\"1022332502465\":1509788624926,\"1024886875654\":1509788624460,\"1025441318672\":1509788624186,\"1024886875652\":1509788624460,\"1024886875674\":1509788624460,\"1025441318668\":1509788624198,\"1025441318666\":1509788624201,\"1025441318667\":1509788624205,\"1024936158447\":1509788625006,\"1021954946904\":1509788624464,\"1023647043592\":1509788624554,\"1024886875667\":1509788624460,\"1023647043594\":1509788624554,\"1023647043595\":1509788624554,\"1021345057529\":1478686804023,\"1023647043596\":1509788624554,\"1020101166292\":1480585069079,\"1024886875671\":1509788624460,\"1023647043597\":1509788624554,\"1025779487529\":1509788625123,\"1021774455149\":1509788625010,\"1025058581935\":1509788624276,\"1021774455148\":1509788625010,\"1021774455145\":1509788625010,\"1021774455147\":1509788625010,\"1021799489563\":1478686417052,\"1021774455141\":1509788625010,\"1022394240149\":1478686417291,\"1021774455143\":1509788625010,\"1021774455137\":1509788625009,\"1021774455139\":1509788625009,\"1009007782512\":1509788624363,\"1025058581938\":1509788624276,\"372117811\":1444487341704,\"1025058581939\":1509788624276,\"1025058581937\":1509788624276,\"1021328804925\":1478686417041,\"1019575428258\":1509788624375,\"1019575428262\":1509788624386,\"1025525203416\":1509788624523,\"1019982019695\":1509788624324,\"1019982019694\":1509788624324,\"1021776552295\":1509788624399,\"1021448869061\":1478686416980,\"1021688342147\":1509788624916,\"1021774455132\":1509788625010,\"1022007636921\":1478686417057,\"1025715525301\":1509788624565,\"1021774455134\":1509788625010,\"1021774455129\":1509788625010,\"1021774455128\":1509788625010,\"1021774455131\":1509788625010,\"1021774455130\":1509788625010,\"1014723003874\":1480585069078,\"1021774455127\":1509788625009,\"1025712903825\":1509788624306,\"1025485620254\":1509788624431,\"1024167801475\":1509788624575,\"1024167801472\":1509788624575,\"1024167801486\":1509788624574,\"1024167801484\":1509788624574,\"1024167801482\":1509788624574,\"1024167801480\":1509788624574,\"1024167801494\":1509788624575,\"1024167801495\":1509788624575,\"1021320809678\":1478686417238,\"1019982019615\":1509788624323,\"1024167801502\":1509788624575,\"1024167801503\":1509788624574,\"1020438024558\":1478686804032,\"1022425696993\":1478686417210,\"1022425696994\":1478686417210,\"1025671874943\":1509788624942,\"1007891557518\":1478686804023,\"1021059841125\":1478686804050,\"1021059841124\":1478686804050,\"1024167801508\":1509788624574,\"1001380913534\":1478686804059,\"1001380913529\":1478686804059,\"1024167801504\":1509788624575,\"1024167801505\":1509788624574,\"1001380913526\":1478686804059,\"1016819660972\":1478686804025,\"1022424386210\":1478686417210,\"372117853\":1444487341705,\"1020893378146\":1478686417079,\"1001380913515\":1478686804059,\"1025779487406\":1509788624537,\"1001380913511\":1478686804059,\"1025779487404\":1509788624540,\"1001380913510\":1478686804059,\"1001380913505\":1478686804059,\"1019325600751\":1478686804067,\"1019325600750\":1478686804067,\"1001380913545\":1478686804059,\"1001380913547\":1478686804059,\"1001380913541\":1478686804059,\"1024146175145\":1509788624435,\"1001380913537\":1478686804059,\"1021032054064\":1478686417091,\"1021974869249\":1509788624429,\"1001380913538\":1478686804059,\"1021490025167\":1478686417110,\"1024167801462\":1509788624575,\"1024167801460\":1509788624575,\"1024167801461\":1509788624575,\"1024167801459\":1509788624574,\"1024167801471\":1509788624575,\"1024167801468\":1509788624575,\"1024167801469\":1509788624575,\"1023134806212\":1509788624563,\"1024167801466\":1509788624575,\"1024008154358\":1509788667552,\"1024167801467\":1509788624575,\"1024167801465\":1509788624575,\"1023134806204\":1509788624563,\"1021687555706\":1480585069059,\"1023134806205\":1509788624563,\"1016400093440\":1480585069068,\"1023134806206\":1509788624563,\"1013208899800\":1478686804015,\"1023134806207\":1509788624563,\"1021376252384\":1478686417105,\"1021238493609\":1465469681395,\"1021376252387\":1478686417105,\"1021700531513\":1478686804046,\"1019932475285\":1509788624922,\"706751991\":1444487341708,\"1483104185\":1491634246517,\"1016355398798\":1465470268254,\"1019387600690\":1509788624301,\"1023497226810\":1509788624461,\"1016731057895\":1478686804015,\"1025615383662\":1509788625021,\"1016731057915\":1478686804040,\"1016731057918\":1478686804031,\"1022256874587\":1478686417196,\"1022007636849\":1478686417057,\"1025366733937\":1509788624293,\"1024794071697\":1509788624989,\"1020833867412\":1509788624285,\"1020833867409\":1509788624285,\"1020833867408\":1509788624285,\"1020833867411\":1509788624285,\"1020833867410\":1509788624285,\"1020833867405\":1509788624285,\"1020833867404\":1509788624284,\"1020833867407\":1509788624285,\"1020833867406\":1509788624285,\"1221738694\":1478686804029,\"1020833867403\":1509788624284,\"154403107\":1444487341735,\"1020780913586\":1478686416997,\"1018922939517\":1509788624282,\"1020780913592\":1478686416997,\"1016601950915\":1478686804022,\"1018922939512\":1509788624302,\"1023417008294\":1509788625039,\"1020833867449\":1509788624283,\"1012115877376\":1478686417223,\"1020833867448\":1509788624283,\"1020833867450\":1509788624283,\"1020833867445\":1509788624283,\"1020833867444\":1509788624283,\"1020833867447\":1509788624283,\"154403103\":1444487341717,\"1020833867446\":1509788624283,\"1020833867441\":1509788624283,\"1020833867443\":1509788624283,\"1016819660783\":1478686804025,\"1020833867442\":1509788624283,\"1023454626407\":1509788624986,\"1020887218511\":1478686417032,\"1021114890211\":1465470268183,\"1020887218508\":1478686417032,\"1024262435427\":1509788624867,\"1024205946824\":1509788624185,\"1021960321333\":1478686417261,\"154403173\":1444487341721,\"1020780913606\":1478686416997,\"1021595013960\":1509788624401,\"1022440769190\":1478686417295,\"1017808220809\":1478686804016,\"1020294104791\":1465470268290,\"1021039653595\":1478686417035,\"1016819660612\":1478686804025,\"1025711200589\":1509788624304,\"1021704464959\":1478686417250,\"1024794071581\":1509788624989,\"1020833867277\":1509788624284,\"1020833867276\":1509788624284,\"1020833867278\":1509788624284,\"1020833867273\":1509788624284,\"1020833867272\":1509788624284,\"1020833867274\":1509788624284,\"1020833867269\":1509788624284,\"1021620835628\":1478686417247,\"1020833867268\":1509788624284,\"1020833867271\":1509788624284,\"1020833867270\":1509788624284,\"1021895173623\":1478686417258,\"1021949049013\":1509788624355,\"1025637401754\":1509788624294,\"1025714608387\":1509788624866,\"1000528477300\":1444487341710,\"1022085624152\":1478686416988,\"1021949311164\":1478686417145,\"1021993745337\":1478686417156,\"1020984213324\":1478686417034,\"1025607647965\":1509788624845,\"1018919269492\":1509788624282,\"1022456629013\":1478686417072,\"1022156928379\":1478686417278,\"1025607647950\":1509788624845,\"1022192318297\":1478686417279,\"1024686464032\":1509788625024,\"1022192318310\":1478686417279,\"1021885605166\":1509788624368,\"1023121964761\":1509788624374,\"1022452041446\":1478686417296,\"1017303716870\":1478686804049,\"1007894045485\":1444487341757,\"1007894045487\":1444487341757,\"1020833867373\":1509788624284,\"1020833867372\":1509788624284,\"1020833867375\":1509788624284,\"1020833867374\":1509788624284,\"1020833867369\":1509788624284,\"1025607647968\":1509788624845,\"1020833867368\":1509788624284,\"1025607647969\":1509788624846,\"1020833867371\":1509788624284,\"1020833867370\":1509788624284,\"1020833867365\":1509788624284,\"1020833867367\":1509788624284,\"1021713640179\":1509788624396,\"1022633840723\":1480585069094,\"1022633840730\":1480585069135,\"1022633840711\":1480585069140,\"1022633840705\":1480585069078,\"1022633840706\":1480585069094,\"1025116513347\":1509788624945,\"1021387261596\":1478686417006,\"1022633840713\":1480585069094,\"435687654\":1491634246504,\"1022633840757\":1480585069094,\"1004588298210\":1444487341763,\"1587042229\":1491634246505,\"1022633840745\":1480585069094,\"1021741821276\":1509788624986,\"1023086837099\":1509788624987,\"1022088376472\":1478686417180,\"1022088376476\":1478686417180,\"1016098233735\":1478686804065,\"1016819660432\":1478686804025,\"1021654914772\":1478686417120,\"1022633840692\":1480585069094,\"1010386351666\":1478686804023,\"1022633840701\":1480585069094,\"1022633840699\":1480585069094,\"1021424490556\":1478686417043,\"1021791497744\":1478686417129,\"1022633840685\":1480585069094,\"4956761843\":1509788624155,\"1022075793685\":1509788624416,\"1021729368747\":1509788624395,\"1025714870312\":1509788624549,\"1021721504300\":1478686804047,\"1025714870319\":1509788624549,\"1021640890305\":1509788624818,\"1022932689610\":1509788625018,\"1021692405954\":1509788624308,\"1010812211271\":1509788624276,\"1008033511977\":1478686804018,\"2221706707\":1491743595335,\"1023086837140\":1509788624986,\"1022440245020\":1478686417071,\"4928449536\":1509788624154,\"1022257007202\":1478686417067,\"1016819660300\":1478686804025,\"4954795654\":1509788624155,\"1022807256358\":1490882721865,\"1021687556192\":1480585069059,\"1221738801\":1478686804033,\"1021151332442\":1509788624971,\"1021846938578\":1478686417135,\"1010446256723\":1478686804054,\"1023086837152\":1509788624986,\"1010446256724\":1478686804054,\"1023306385607\":1509788625041,\"1008664499197\":1478686804030,\"1012179705981\":1478686416994,\"1137854916\":1444487341733,\"1019285625062\":1509788624314,\"1019285625059\":1509788624312,\"1021496844083\":1478686417112,\"1020612488191\":1478686417027,\"1025320858403\":1509788625099,\"1019926311556\":1509788625016,\"1022385717343\":1509788624392,\"1009987628380\":1491634246533,\"1018513469068\":1509788624500,\"1018513469066\":1509788624500,\"1022385717336\":1509788624392,\"1018513469063\":1509788624500,\"1022385717335\":1509788624392,\"1014767963717\":1478686804028,\"1021728319841\":1478686417051,\"1018513469058\":1509788624500,\"1018513469056\":1509788624500,\"1022807256747\":1490882721865,\"1018513469081\":1509788624500,\"1021853360513\":1509788624435,\"1018513469079\":1509788624500,\"1018513469077\":1509788624500,\"1018513469074\":1509788624500,\"1021782846860\":1478686417128,\"1020961799321\":1478686417033,\"1021485178820\":1509788624977,\"1023933836712\":1491634246529,\"1020294104282\":1465470268290,\"1020817745892\":1509788625021,\"1024899721818\":1509788624334,\"1022385717344\":1509788624392,\"1022074614518\":1478686417061,\"2007792941\":1480585069061,\"1025714608951\":1509788624469,\"1743023459\":1478686417020,\"1022258579765\":1478686417196,\"1009078434722\":1478686804023,\"1019808348983\":1509788625077,\"1019808348973\":1509788625078,\"1021187901940\":1509788624934,\"1019808348965\":1509788625078,\"1021687556901\":1480585069059,\"1021949049502\":1509788624355,\"1012105522247\":1478686417223,\"1022236952675\":1478686417194,\"1016819660127\":1478686804025,\"1018513469039\":1509788624500,\"1743023430\":1478686417020,\"1018513469036\":1509788624500,\"1743023424\":1478686417020,\"1018513469033\":1509788624500,\"1018513469030\":1509788624500,\"1025320858533\":1509788625099,\"1020294235137\":1465470268298,\"1652189393\":1444487341719,\"1743023439\":1478686417020,\"2007792924\":1480585069060,\"1743023445\":1478686417020,\"1018513469053\":1509788624500,\"2007792927\":1480585069060,\"2007792920\":1480585069060,\"1025643169602\":1509788624365,\"1023970403135\":1509788625037,\"1021566570567\":1509788624405,\"1018513469049\":1509788624500,\"1743023443\":1478686417020,\"2007792923\":1480585069060,\"1743023453\":1478686417020,\"1018513469044\":1509788624500,\"1021562639281\":1478686417113,\"1025643169584\":1509788624365,\"1020882107254\":1478686416999,\"1003686771293\":1478686804060,\"1022479309498\":1478943089531,\"1003686771292\":1478686804060,\"1003686771295\":1478686804060,\"1003686771294\":1478686804060,\"1003686771289\":1478686804060,\"1003686771288\":1478686804060,\"1024383159237\":1509788624327,\"1003686771290\":1478686804060,\"1003686771285\":1478686804060,\"1025643169582\":1509788624364,\"1025643169583\":1509788624364,\"1025643169580\":1509788624364,\"1003686771281\":1478686804060,\"1025643169579\":1509788624365,\"1004588297239\":1444487341762,\"1025643169552\":1509788624365,\"1011209501391\":1478686804022,\"1003686771296\":1478686804060,\"4928450350\":1509788624155,\"1021187901845\":1509788624934,\"1025643169550\":1509788624365,\"1025643169551\":1509788624365,\"1008958365835\":1478686804023,\"1021262220777\":1478686804039,\"1022807257087\":1490882721865,\"1023173341710\":1509788625083,\"1022444832158\":1478686417214,\"4557505710\":1465469681388,\"1652189559\":1444487341726,\"1020983819394\":1478686417230,\"1024794071453\":1509788624989,\"1016819659992\":1478686804025,\"2068869237\":1491634246510,\"1003761913\":1478686804024,\"1012126100656\":1478686417025,\"4968686360\":1509788624154,\"1020965731737\":1478686417086,\"1022073697152\":1509788624924,\"1012258612358\":1478686417073,\"1022086804153\":1478686417179,\"1022501722750\":1509788624987,\"1024244609566\":1509788624948,\"1025514589901\":1509788624340,\"1021387130071\":1478686804045,\"1014767963999\":1478686804022,\"1021387130070\":1478686804045,\"1023932001445\":1491634246530,\"1021387130069\":1478686804045,\"1025320858206\":1509788625099,\"1021387130068\":1478686804045,\"1021387130067\":1478686804045,\"1022241540576\":1478686417066,\"1008905022672\":1509788624372,\"1025715526367\":1509788624549,\"1021387130076\":1478686804045,\"1024781881975\":1509788625020,\"1009275565620\":1478686804025,\"1021387130075\":1478686804045,\"1021387130074\":1478686804045,\"1023932001449\":1491634246530,\"1021387130073\":1478686804045,\"1021387130072\":1478686804045,\"1022073697243\":1509788624530,\"1025715526373\":1509788624549,\"1022491892429\":1478943089254,\"1025715526369\":1509788624549,\"1024619617171\":1509788624388,\"1024619617172\":1509788624388,\"1024205946093\":1509788624184,\"1025715526377\":1509788624549,\"1024205946097\":1509788624184,\"1024205946099\":1509788624184,\"1023880884116\":1509788625038,\"1021974477304\":1509788624437,\"716579273\":1444487341733,\"1022238787905\":1509788624947,\"1012568083115\":1478686417026,\"1022238787906\":1509788624941,\"1022238787907\":1509788624932,\"1017303717740\":1478686804049,\"1022238787910\":1509788624971,\"1022238787911\":1509788624933,\"1022238787912\":1509788624931,\"1024619617137\":1509788624392,\"1024619617138\":1509788624392,\"1024619617139\":1509788624392,\"1024619617140\":1509788624392,\"1024619617141\":1509788624392,\"1024619617142\":1509788624392,\"1022501722788\":1509788624986,\"1023354752972\":1509788625101,\"1025142334529\":1509788625004,\"1021601306455\":1478686417115,\"1016857676298\":1509788624976,\"1025142334534\":1509788625004,\"1024383158919\":1509788624327,\"1025142334535\":1509788625004,\"1025142334536\":1509788625004,\"1025142334537\":1509788625004,\"1018754119949\":1509788624378,\"1022501722798\":1509788624986,\"1025142334538\":1509788625004,\"1025142334540\":1509788625004,\"1022501722795\":1509788624986,\"1022501722772\":1509788624986,\"1021832127166\":1478686417134,\"1025714870803\":1509788625137,\"1022501722770\":1509788624986,\"1025714870806\":1509788625137,\"1025714870808\":1509788625137,\"1022074876716\":1478686417177,\"1022420060091\":1478686417293,\"1025714870809\":1509788625137,\"1025714870811\":1509788625137,\"1022074876715\":1478686417177,\"1023628303967\":1509788624928,\"1025320858297\":1509788625099,\"1022073697037\":1509788624971,\"1022501722755\":1509788624986,\"1021003346910\":1478686417089,\"1021003346909\":1478686417089,\"1020586661093\":1478686417224,\"1025715526202\":1509788625136,\"1022088770069\":1478686417180,\"1013390178785\":1444487341759,\"1019596533652\":1509788624932,\"1021613889486\":1478686416991,\"1022398169230\":1478686417291,\"1021009114075\":1478686417001,\"1022420060103\":1478686417293,\"2068869255\":1491634246510,\"1022420060106\":1478686417293,\"1025900336987\":1509788667462,\"1022420060104\":1478686417293,\"1025900336984\":1509788667463,\"1022420060105\":1478686417293,\"1025900336990\":1509788667458,\"1024205945950\":1509788624184,\"1020965731710\":1478686417086,\"1024002777181\":1491634246532,\"1024002777183\":1491634246532,\"1020983819371\":1478686417230,\"1017972787437\":1509788624372,\"1019761026426\":1509788625078,\"1022440244532\":1478686417071,\"1019761026425\":1509788625078,\"1022487697921\":1478943089532,\"1020955639475\":1465470268304,\"1025142334526\":1509788625004,\"1025548405869\":1509788625020,\"1022088770082\":1478686417180,\"1020983819384\":1478686417230,\"1021015274072\":1478686417231,\"1020220048078\":1478686804039,\"1020927850726\":1478686417082,\"1021147401676\":1478686417097,\"1016819659713\":1478686804025,\"1019745689969\":1509788624314,\"1023320018536\":1509788625041,\"1024095321104\":1509788667892,\"1021032314503\":1478686417091,\"1022934656873\":1509788624533,\"1020471448590\":1478686804047,\"1021604450437\":1478686417115,\"1022045911675\":1478686804040,\"1022045911674\":1478686804040,\"1022045911678\":1478686804040,\"1022045911677\":1478686804040,\"1022045911676\":1478686804040,\"1018513467535\":1509788624499,\"1018513467533\":1509788624499,\"1024167803278\":1509788624473,\"1018513467527\":1509788624499,\"1024167803279\":1509788624473,\"1024167803276\":1509788624473,\"1018513467525\":1509788624499,\"1004588296836\":1444487341763,\"1021035460311\":1478686417091,\"1024167803284\":1509788624473,\"1024167803282\":1509788624473,\"1021982604880\":1478686417151,\"1021920076694\":1478686417259,\"1024167803283\":1509788624473,\"1024167803280\":1509788624473,\"1024167803290\":1509788624473,\"1018513467539\":1509788624499,\"1024167803291\":1509788624473,\"1024167803288\":1509788624473,\"1024167803289\":1509788624473,\"1021003346951\":1478686417089,\"1024167803300\":1509788624473,\"1024167803301\":1509788624473,\"1022851951152\":1490882721866,\"1021003346946\":1478686417089,\"1652190748\":1444487341727,\"1021003346945\":1478686417089,\"1024167803296\":1509788624473,\"1021727403830\":1478686417051,\"1024167803309\":1509788624473,\"1024167803306\":1509788624473,\"1024946515728\":1509788624867,\"1024946515729\":1509788624844,\"1024167803304\":1509788624473,\"1024946515730\":1509788624822,\"1024946515724\":1509788624829,\"1024167803319\":1509788624473,\"1024167803317\":1509788624473,\"1024334132104\":1509788624198,\"1024167803314\":1509788624473,\"1024167803312\":1509788624473,\"1024167803313\":1509788624473,\"1024946515716\":1509788624830,\"1024946515717\":1509788624829,\"1021003346973\":1478686417089,\"1024946515718\":1509788624829,\"1024946515719\":1509788624829,\"1024167803322\":1509788624473,\"1024946515712\":1509788624829,\"1022058757089\":1475218613699,\"1024946515715\":1509788624829,\"1022073697331\":1509788624530,\"1012895766824\":1478686417224,\"1010093924904\":1491634246522,\"1022073697330\":1509788624530,\"1022073697332\":1509788624530,\"1018513467485\":1509788624499,\"1022073697321\":1509788624530,\"1022073697327\":1509788624530,\"1022045911771\":1478686804065,\"1022073697314\":1509788624530,\"1022073697313\":1509788624530,\"1022073697317\":1509788624530,\"1018513467503\":1509788624499,\"1022073697305\":1509788624530,\"1022073697304\":1509788624530,\"1022073697311\":1509788624530,\"1955100717\":1444487341738,\"1018513467495\":1509788624499,\"1020294103555\":1465470268289,\"1018513467493\":1509788624499,\"1018554362580\":1509788624372,\"1022073697303\":1509788624530,\"1018513467490\":1509788624499,\"1022073697301\":1509788624530,\"1018513467488\":1509788624499,\"1018513467519\":1509788624499,\"1022073697291\":1509788624530,\"1021903168112\":1478686417300,\"1018513467517\":1509788624499,\"1022073697288\":1509788624530,\"1021517421430\":1478686416982,\"1018513467514\":1509788624499,\"1022073697293\":1509788624530,\"1018513467511\":1509788624499,\"1018513467508\":1509788624499,\"1022073697285\":1509788624530,\"1022045911683\":1478686804040,\"1022045911682\":1478686804040,\"1022045911681\":1478686804040,\"1022045911680\":1478686804040,\"1022045911687\":1478686804040,\"1022045911686\":1478686804040,\"1022045911685\":1478686804040,\"1022045911684\":1478686804040,\"1023054462700\":1509788625047,\"1019939681561\":1509788624288,\"1021328410591\":1478686804045,\"1022181700338\":1478686417187,\"1021925712773\":1478686417259,\"1022956937446\":1509788624221,\"1022956937447\":1509788624221,\"1020294234716\":1465470268298,\"1022956937445\":1509788624221,\"1022956937448\":1509788624221,\"1022956937449\":1509788624221,\"1022073697723\":1509788624416,\"1022200443400\":1478686417013,\"1022073697722\":1509788624416,\"1022303276010\":1478686417287,\"1023342693910\":1509788625041,\"1022073697725\":1509788624416,\"1022073697719\":1509788624416,\"1020815777980\":1478686417078,\"1022073697716\":1509788624416,\"1022156009692\":1509788624958,\"1020815777953\":1478686417078,\"1022073697706\":1509788624416,\"1022073697705\":1509788624416,\"1006805215162\":1478686804029,\"1022073697709\":1509788624416,\"1023393942256\":1509788624825,\"1020815777961\":1478686417078,\"1022073697699\":1509788624416,\"1020815777963\":1478686417078,\"1022073697703\":1509788624416,\"1022073697701\":1509788624416,\"1020574602033\":1509788624375,\"1020574602035\":1509788624375,\"1025569506681\":1509788624350,\"1020574602036\":1509788624375,\"1022111446867\":1478686417276,\"1021662908959\":1509788624396,\"1025569506676\":1509788624351,\"1025569506677\":1509788624351,\"1021278602539\":1478686417237,\"1025320858682\":1509788625099,\"1021087232091\":1478686417094,\"1020984998615\":1478686804039,\"1024167803022\":1509788625185,\"1024167803023\":1509788625185,\"1024167803021\":1509788625183,\"1020050174490\":1509788624286,\"1024167803030\":1509788625185,\"1024167803025\":1509788625185,\"1016554234607\":1478686804023,\"1022934656538\":1509788624816,\"1024167803034\":1509788625185,\"1025628750259\":1509788624229,\"1024167803043\":1509788625185,\"1024167803041\":1509788625185,\"1024167803054\":1509788625183,\"1022073697746\":1509788624416,\"1024167803050\":1509788625184,\"1021511654230\":1478686417047,\"1024167803051\":1509788625184,\"1024167803048\":1509788625184,\"1022073697748\":1509788624416,\"1024167803049\":1509788625184,\"1024167803062\":1509788625185,\"1024167803060\":1509788625185,\"1024167803058\":1509788625183,\"1024167803059\":1509788625184,\"1024167803057\":1509788625183,\"1022073697729\":1509788624416,\"1024167803068\":1509788625183,\"1024167803069\":1509788625183,\"1024167803066\":1509788625183,\"1024167803067\":1509788625184,\"1024167803065\":1509788625184,\"1022238658371\":1509788624947,\"1022934656706\":1509788624194,\"1024946515706\":1509788624822,\"1022238658372\":1509788624931,\"1024946515702\":1509788624835,\"1022245605363\":1478686417066,\"1025607649183\":1509788624229,\"1024946515696\":1509788624917,\"1024946515697\":1509788624915,\"1024946515699\":1509788624915,\"1025714609187\":1509788624469,\"1025714871343\":1509788625167,\"1022807255388\":1490882721865,\"1025788139751\":1509788624972,\"1020955637990\":1465470268304,\"1024899722651\":1509788624334,\"1023878917793\":1491634246506,\"1023530254852\":1509788624558,\"1023530254850\":1509788624558,\"1021250161256\":1465470268197,\"1023530254851\":1509788624559,\"1018659480061\":1478686804016,\"1023530254848\":1509788624558,\"1023530254849\":1509788624559,\"1025320858840\":1509788625099,\"1023393942075\":1509788624825,\"1023152108946\":1509788667538,\"1022154436643\":1478686416982,\"1023821245831\":1491634246535,\"478941567\":1444487341705,\"1021504969578\":1478686804040,\"1022400005853\":1478686417292,\"1010077803452\":1491634246534,\"1021529741583\":1509788624504,\"1021529741581\":1509788624504,\"1021529741580\":1509788624504,\"1021529741591\":1509788624504,\"1024184449241\":1509788624480,\"1021529741590\":1509788624504,\"1021529741588\":1509788624504,\"1022002526945\":1478686417157,\"1021529741587\":1509788624504,\"1021354623873\":1465470268233,\"1021529741585\":1509788624504,\"1021529741596\":1509788624504,\"1023741678860\":1509788624960,\"1021529741606\":1509788624504,\"1022073697944\":1509788624924,\"1021529741603\":1509788624504,\"1020294234243\":1465470268298,\"1021529741615\":1509788624504,\"1022073697939\":1509788624924,\"1021529741614\":1509788624504,\"1022073697938\":1509788624924,\"1024184449251\":1509788624480,\"1021529741612\":1509788624504,\"1022073697942\":1509788624924,\"1021529741609\":1509788624504,\"1021529741623\":1509788624504,\"1022073697931\":1509788624924,\"1022192054715\":1478686416981,\"1024184449274\":1509788624480,\"1022073697929\":1509788624924,\"1022073697928\":1509788624924,\"1021529741617\":1509788624504,\"1021529741616\":1509788624504,\"1022073697932\":1509788624924,\"1022073697927\":1509788624924,\"1021529741626\":1509788624504,\"1022073697925\":1509788624924,\"1021990337932\":1478686417155,\"1022934656262\":1509788624419,\"1022084707921\":1478686417272,\"1021685854102\":1478686417121,\"1024134118784\":1509788667503,\"1022482587153\":1478943089488,\"1024134118788\":1509788667504,\"1000297654506\":1478950494932,\"1022807255711\":1490882721865,\"478941928\":1444487341705,\"1025902170638\":1509788667458,\"1022044731418\":1478686417011,\"1025902170637\":1509788667463,\"1023211614890\":1509788624429,\"1021362357101\":1478686417006,\"1021362357098\":1478686417006,\"1410226806\":1509788625019,\"1021362357094\":1478686417006,\"1022447845578\":1478686417072,\"1024134118729\":1509788667504,\"1019963798779\":1478686804024,\"1024134118720\":1509788667503,\"1023658711218\":1509788624325,\"1024134118727\":1509788667504,\"1023658711214\":1509788624325,\"1023658711212\":1509788624325,\"1023658711210\":1509788624325,\"1024134118748\":1509788667504,\"1024134118738\":1509788667504,\"1022518762669\":1509788624990,\"1023658711201\":1509788624325,\"1021854541066\":1509788625012,\"1024134118762\":1509788667504,\"1022214016761\":1478686417281,\"1024134118764\":1509788667504,\"1023845363640\":1509788624278,\"1023845363638\":1509788624278,\"1023845363639\":1509788624278,\"1023845363636\":1509788624278,\"1023845363637\":1509788624278,\"1023845363634\":1509788624278,\"1023845363635\":1509788624278,\"1024134118758\":1509788667503,\"1023845363633\":1509788624278,\"1025373942610\":1509788624306,\"1024134118776\":1509788667504,\"1024134118778\":1509788667504,\"1024134118781\":1509788667504,\"1024134118769\":1509788667504,\"1024134118772\":1509788667504,\"742400765\":1444487341708,\"1025500957389\":1509788624205,\"1024134118774\":1509788667504,\"1020822987672\":1478686416998,\"1015996645427\":1465470268314,\"1022073697914\":1509788624924,\"1022092441436\":1478686417274,\"1012115876067\":1478686417223,\"1025531496536\":1509788624343,\"1020939778794\":1478686417084,\"1021944725132\":1478686417144,\"1022073697916\":1509788624924,\"1022073697906\":1509788624924,\"1022018911028\":1478686417011,\"1022073697911\":1509788624924,\"1022073697908\":1509788624924,\"1023393941815\":1509788624199,\"1023144637968\":1509788625045,\"1024793809988\":1509788625069,\"1021839598684\":1478686417257,\"1021981555936\":1478686417010,\"716579948\":1444487341734,\"1023530254638\":1509788625151,\"1023530254639\":1509788625151,\"1023530254636\":1509788625151,\"1023530254634\":1509788625151,\"1020148091789\":1509788624302,\"1023530254646\":1509788625151,\"478941823\":1444487341706,\"1025529399371\":1509788624344,\"1007134602229\":1509788624374,\"1020987881865\":1478686417034,\"179831875\":1444487341743,\"1014683021375\":1465470268313,\"1024458787180\":1509788625029,\"1021989813438\":1478686417264,\"1851023698\":1444487341745,\"1022064785445\":1478686417174,\"1025896666064\":1509788667459,\"1023328406725\":1509788624493,\"1025896666065\":1509788667459,\"1014765210456\":1478686804024,\"1025896666059\":1509788667461,\"1022807256044\":1490882721865,\"1025896666057\":1509788667465,\"1025896666061\":1509788667462,\"1851023692\":1444487341732,\"1021529741342\":1509788624506,\"1021529741341\":1509788624506,\"1021226043942\":1478686417099,\"1025896666054\":1509788667462,\"1021529741337\":1509788624506,\"1021529741351\":1509788624506,\"1021529741349\":1509788624506,\"1021529741347\":1509788624506,\"1022441947521\":1478686417214,\"1021529741344\":1509788624506,\"1021529741359\":1509788624506,\"1021529741358\":1509788624506,\"1021529741356\":1509788624506,\"1009482204691\":1480585069074,\"1021529741367\":1509788624506,\"1021529741366\":1509788624506,\"1021529741363\":1509788624506,\"1021529741362\":1509788624506,\"1021529741360\":1509788624506,\"1013271553122\":1478686804024,\"1021529741374\":1509788624506,\"885799926\":1444487341749,\"154404360\":1444487341727,\"1021529741369\":1509788624506,\"1021529741378\":1509788624506,\"742400774\":1444487341708,\"810041102\":1478686804029,\"1021529741376\":1509788624506,\"1020936108846\":1478686417228,\"1021801719683\":1478686804039,\"1020936108854\":1478686417228,\"1026223431701\":1514456869766,\"1851023630\":1444487341745,\"1020936108858\":1478686417228,\"1022594521327\":1480585069076,\"1019674126033\":1509788625079,\"1024167672485\":1509788625035,\"1022397514811\":1478686417291,\"1020612488871\":1478686417027,\"1024205945077\":1509788624184,\"1024205945082\":1509788624184,\"1021989813440\":1478686417264,\"1023117506847\":1509788625079,\"1021949050759\":1509788624354,\"1019648829606\":1509788624312,\"1021288171247\":1478686417004,\"1023565389352\":1491634246523,\"1023565389350\":1491634246536,\"1023565389351\":1491634246536,\"1022167544457\":1509788624439,\"1023565389349\":1491634246536,\"1013067731183\":1478686417026,\"1012148643768\":1478686417025,\"1020220049058\":1478686804039,\"1021969890652\":1478686417262,\"1024954772326\":1509788624354,\"1025628488567\":1509788624507,\"1024205944867\":1509788624185,\"1008317287211\":1478686804023,\"1538413591\":1491634246519,\"1022258056212\":1478686417284,\"1022258056213\":1478686417284,\"1022453350823\":1478686417215,\"1022258056203\":1478686417284,\"1024262436246\":1509788624875,\"1022268673199\":1478686417067,\"1022258056197\":1478686417284,\"1021356327608\":1478686417104,\"1020002988992\":1509788624281,\"1538413688\":1491634246519,\"812007346\":1478950494916,\"1011793304739\":1478686804062,\"1021529741531\":1509788624506,\"1022073436000\":1478686417012,\"1011793304736\":1478686804062,\"1021529741539\":1509788624506,\"1022579186035\":1509788624462,\"1011793304729\":1478686804062,\"1522423129\":1478686804029,\"1021529741536\":1509788624506,\"1021529741551\":1509788624506,\"1724410145\":1444487341706,\"1021529741550\":1509788624506,\"1021529741548\":1509788624506,\"1022470790912\":1478686804049,\"1025532676481\":1509788624340,\"1021529741546\":1509788624506,\"1021529741545\":1509788624506,\"1021529741544\":1509788624506,\"1021529741559\":1509788624506,\"1011793304718\":1478686804062,\"1021529741557\":1509788624506,\"1021529741556\":1509788624506,\"1021529741555\":1509788624506,\"1023251722645\":1509788624430,\"1024184449341\":1509788624480,\"1021529741554\":1509788624506,\"1021529741553\":1509788624506,\"1021529741552\":1509788624506,\"1021529741567\":1509788624506,\"1021529741564\":1509788624506,\"1021529741562\":1509788624506,\"1025063036309\":1509788625019,\"1021473113191\":1478686417109,\"1021058657082\":1509788624942,\"1023606408029\":1509788625140,\"1024953201428\":1509788625202,\"1025609489403\":1509788624186,\"1024953201424\":1509788625202,\"1024953201425\":1509788625202,\"1021058657074\":1509788624942,\"1025609489396\":1509788624200,\"1025609489397\":1509788624204,\"1025609489398\":1509788624198,\"1023606408018\":1509788625140,\"1023606408012\":1509788625140,\"1024953201414\":1509788625202,\"1024953201413\":1509788625202,\"1020597547171\":1478686804032,\"1024953201410\":1509788625202,\"1022263432029\":1478686417197,\"1024953201411\":1509788625202,\"1024953201408\":1509788625202,\"1024953201422\":1509788625202,\"1024953201423\":1509788625202,\"1024953201420\":1509788625202,\"1023606408006\":1509788625245,\"1024953201421\":1509788625202,\"1018998051317\":1509788624391,\"1018998051319\":1509788624391,\"1024953201416\":1509788625202,\"1018998051318\":1509788624391,\"1014253631222\":1465470268245,\"1025593629410\":1509788624198,\"1020597547166\":1478686804039,\"1025593629411\":1509788624186,\"1025593629408\":1509788624201,\"1024018775170\":1509788667493,\"1025593629409\":1509788624204,\"1026226585344\":1514456869774,\"1023606408042\":1509788625144,\"1019851334454\":1509788625079,\"1025710932464\":1509788624306,\"1019219173022\":1509788624317,\"1022146833436\":1478686417277,\"1020945147323\":1478686417229,\"1021484516752\":1478686417110,\"1025609489321\":1509788624428,\"1025609489323\":1509788624425,\"1025609489326\":1509788624406,\"1012140390648\":1478686417073,\"1024633110610\":1509788624225,\"714488527\":1444487341700,\"1024633110611\":1509788624225,\"1024633110609\":1509788624225,\"1744861276\":1444487341725,\"1024633110614\":1509788624225,\"1103909265\":1491634246508,\"1024633110612\":1509788624225,\"1025874250323\":1509788667826,\"1022021526963\":1509788624179,\"1022021526962\":1509788624181,\"1023606407995\":1509788625245,\"1023946422134\":1491634246529,\"1021492512047\":1509788624816,\"1021058657099\":1509788624932,\"1019284963978\":1509788624312,\"1021058657094\":1509788624930,\"1023606408156\":1509788625140,\"1021606415379\":1509788624404,\"1024899723429\":1509788624334,\"1007870458285\":1480585069065,\"1021606677735\":1509788624404,\"1021567879767\":1509788624867,\"1023606408143\":1509788624868,\"1022081296568\":1478686417061,\"1021880892565\":1478686804069,\"1017244469306\":1478686804058,\"1021369703974\":1478686804065,\"749091858\":1444487341700,\"1024686982208\":1509788625024,\"1007026333487\":1478686804023,\"1022807258180\":1490882721865,\"1021469049952\":1478686417242,\"1020574600919\":1509788624386,\"1020574600918\":1509788624386,\"1020294110817\":1465470268291,\"714488411\":1444487341700,\"1023509290454\":1509788625080,\"714488391\":1444487341701,\"1023606408072\":1509788625113,\"757087733\":1444487341756,\"1021622668620\":1478686417247,\"1014740964220\":1480585069071,\"1023606408068\":1509788625113,\"1021096668713\":1478686417094,\"1010267990178\":1478686804033,\"1023606408113\":1509788625113,\"714488422\":1444487341701,\"761675152\":1444487341737,\"1022198345683\":1509788624928,\"1014253631443\":1465470268245,\"1025907936520\":1509788667462,\"1021995311693\":1509788624466,\"1010395402684\":1478686804025,\"1025679220465\":1509788624352,\"1025679220467\":1509788624350,\"1018546501587\":1480585069070,\"294650038\":1444487341735,\"4990056513\":1509788624155,\"1010395402649\":1478686804025,\"1020574600997\":1509788624386,\"1020574600996\":1509788624386,\"1024953201196\":1509788624588,\"1024953201237\":1509788624588,\"1024953201234\":1509788624589,\"1022049707842\":1509788624509,\"1024953201245\":1509788624588,\"1024953201240\":1509788624588,\"1024412127769\":1509788624465,\"1023741151748\":1491634246523,\"1023741151751\":1491634246523,\"1023741151744\":1491634246523,\"749092351\":1444487341700,\"1012189018776\":1478686416994,\"1024953201231\":1509788624588,\"1021262222926\":1478686804039,\"1024953201229\":1509788624589,\"1024953201224\":1509788624589,\"1024953201270\":1509788624588,\"1025507382412\":1509788624203,\"1024195061582\":1509788624507,\"1024953201276\":1509788624588,\"478940641\":1444487341703,\"1024953201273\":1509788624588,\"1025615387374\":1509788625021,\"1024953201255\":1509788624588,\"1024953201252\":1509788624588,\"1024953201262\":1509788624588,\"1024953201258\":1509788624588,\"1024633241973\":1509788625026,\"1013504993294\":1478686804052,\"1022110526432\":1478686417182,\"1021210842508\":1465470268194,\"1019971529326\":1480585069073,\"1024953201311\":1509788624487,\"1019841765930\":1509788625079,\"1027327795431\":1523788103996,\"1021210842504\":1465470268194,\"1014253631323\":1465470268245,\"1022273918245\":1478686417067,\"1024953201286\":1509788624589,\"1024953201285\":1509788624589,\"1024953201283\":1509788624589,\"1022897305626\":1509788625052,\"1022089947196\":1478686417273,\"4949685912\":1509788624156,\"1023986137882\":1509788624382,\"1024953201334\":1509788624487,\"1023986137883\":1509788624382,\"1023986137880\":1509788624382,\"1021350960141\":1509788624918,\"1023986137881\":1509788624382,\"1023986137886\":1509788624381,\"1024953201331\":1509788624487,\"1023986137884\":1509788624382,\"1021350960137\":1509788624918,\"1017244469557\":1478686804058,\"1023986137885\":1509788624382,\"1023986137874\":1509788624382,\"1023986137875\":1509788624382,\"1024953201340\":1509788624487,\"1023986137878\":1509788624382,\"1023986137879\":1509788624382,\"1020612489341\":1478686417027,\"1023986137876\":1509788624382,\"1024953201336\":1509788624487,\"1023986137877\":1509788624382,\"1024953201317\":1509788624487,\"1024953201315\":1509788624487,\"1021350960153\":1509788624918,\"1024953201327\":1509788624487,\"1024953201324\":1509788624487,\"1021350960146\":1509788624918,\"1024953201320\":1509788624487,\"1024953201367\":1509788624487,\"1024953201364\":1509788624487,\"1024953201365\":1509788624487,\"1019666528757\":1478686804050,\"1019666528759\":1478686804050,\"1019666528758\":1478686804050,\"1023845101769\":1491634246537,\"1024953201371\":1509788624487,\"1024953201368\":1509788624487,\"1012420094414\":1478686417026,\"1017595624534\":1478686804053,\"1023986137946\":1509788624392,\"1023986137947\":1509788624392,\"1023986137945\":1509788624392,\"1023986137948\":1509788624392,\"1023986137949\":1509788624392,\"1024953201406\":1509788625202,\"1023986137939\":1509788624392,\"1024953201407\":1509788625202,\"1024953201405\":1509788625202,\"1023986137942\":1509788624392,\"1024953201402\":1509788625202,\"1023986137943\":1509788624392,\"1024953201403\":1509788625202,\"1023986137940\":1509788624392,\"1023986137941\":1509788624392,\"1003256842201\":1509788624286,\"1024953201379\":1509788624487,\"1024953201376\":1509788624487,\"1021515056665\":1478686417047,\"1022081296929\":1478686417061,\"1022470266140\":1478686417219,\"1021323565377\":1465470268210,\"1021616377835\":1478686417247,\"1021673927293\":1478686804032,\"4990974830\":1509788624155,\"1021616377837\":1478686417247,\"1021955335088\":1478686417261,\"1016670627006\":1478686804018,\"1016879435855\":1465470268267,\"1021616377830\":1478686417247,\"1025906494991\":1509788667463,\"1020918669728\":1478686417032,\"1022204449529\":1478686417064,\"1025906494994\":1509788667460,\"940452409\":1478950494919,\"1025906494995\":1509788667459,\"1025710932982\":1509788624309,\"1025524421840\":1509788624418,\"1025524421841\":1509788624418,\"1022234596156\":1478686417193,\"1025524421847\":1509788624418,\"1025524421844\":1509788624418,\"1024773098476\":1509788625069,\"1025524421845\":1509788624418,\"1025524421803\":1509788625099,\"1024953200979\":1509788624253,\"1025524421807\":1509788625099,\"4954797330\":1509788624155,\"1024782011245\":1509788625069,\"1025524421805\":1509788625099,\"1024953200990\":1509788624253,\"1024953200988\":1509788624253,\"1025524421792\":1509788625098,\"1024953200989\":1509788624253,\"1024953200987\":1509788624253,\"1024953200984\":1509788624253,\"1022046954524\":1478686417171,\"1025524421797\":1509788625098,\"1024953200966\":1509788624253,\"1024953200967\":1509788624253,\"1025524421819\":1509788625099,\"1024953200964\":1509788624253,\"1025524421816\":1509788625098,\"1024953200965\":1509788624253,\"1020112179666\":1509788625082,\"1024953200962\":1509788624253,\"1025524421822\":1509788625099,\"1025524421823\":1509788625099,\"1025524421820\":1509788625098,\"1025524421821\":1509788625098,\"1025737277442\":1509788625007,\"1025524421810\":1509788625099,\"1024953200975\":1509788624253,\"1025524421811\":1509788625098,\"1024953200972\":1509788624253,\"1025737277446\":1509788625084,\"1025524421814\":1509788625098,\"1024953200971\":1509788624253,\"1024953200968\":1509788624253,\"1025679613429\":1509788624349,\"1025524421770\":1509788624192,\"1025524421771\":1509788624193,\"1025524421768\":1509788624193,\"1022288467881\":1478686417198,\"1025524421769\":1509788624192,\"1025524421772\":1509788624193,\"1025524421762\":1509788624192,\"1025524421760\":1509788624193,\"1025524421766\":1509788624192,\"1025524421765\":1509788624192,\"1024953200997\":1509788624253,\"1024953200994\":1509788624253,\"1024953200992\":1509788624253,\"1025524421789\":1509788625098,\"1025585765178\":1509788624352,\"484707998\":1478686804029,\"1022578394114\":1480585069151,\"4954797525\":1509788624156,\"1025524421738\":1509788624192,\"1025524421737\":1509788624192,\"1021535373863\":1509788624397,\"1024205546764\":1509788625033,\"1021673927396\":1478686804032,\"1020293979169\":1465470268278,\"1395802557\":1444487341719,\"1025524421755\":1509788624193,\"1021350305606\":1478686417239,\"1025524421758\":1509788624193,\"1020819980267\":1478686417030,\"1025524421745\":1509788624192,\"1025524421750\":1509788624192,\"1021259601314\":1465470268200,\"1024953201079\":1509788624892,\"1024953201076\":1509788624891,\"1027092380\":1478686804024,\"1021259601301\":1465470268200,\"1024953201087\":1509788624891,\"478940711\":1444487341704,\"1023741151743\":1491634246523,\"1018998051653\":1509788624392,\"1024953201082\":1509788624892,\"1024953201083\":1509788624892,\"1024953201080\":1509788624892,\"1018998051654\":1509788624392,\"1022205891175\":1478686417013,\"1024322858039\":1509788667508,\"749092454\":1444487341699,\"1020793503268\":1480585069080,\"1024953201111\":1509788624892,\"1024953201108\":1509788624892,\"1024953201109\":1509788624892,\"1021673927338\":1478686804032,\"1024953201107\":1509788624891,\"1024953201104\":1509788624892,\"1021328415180\":1478686804065,\"1024300576560\":1509788624292,\"1020447327558\":1509788625078,\"1024953201095\":1509788624892,\"1025783023444\":1509788624297,\"1024953201090\":1509788624892,\"1024953201091\":1509788624892,\"1017244469828\":1478686804058,\"1024953201088\":1509788624892,\"1024953201103\":1509788624892,\"1024953201100\":1509788624892,\"1024953201096\":1509788624892,\"795884945\":1491634246504,\"1021788091720\":1509788624394,\"1021154218909\":1478686416981,\"1025907281602\":1509788667457,\"1025907281604\":1509788667458,\"1025907281605\":1509788667459,\"1021673927313\":1478686804032,\"1022770426830\":1509788624994,\"1025907281606\":1509788667459,\"749092441\":1444487341700,\"1022204842950\":1480585069085,\"1022204842951\":1480585069085,\"1000527816688\":1444487341714,\"1022204842949\":1480585069085,\"1022238527936\":1478686417194,\"1022238527939\":1478686417194,\"1023561712364\":1509788625097,\"631387821\":1478686804016,\"1021013830357\":1478686417001,\"1022204842964\":1480585069085,\"1020339585795\":1465470268323,\"1020824698396\":1509788624934,\"1020824698399\":1509788624934,\"1020824698398\":1509788624934,\"1018998051569\":1509788624324,\"1018998051568\":1509788624324,\"1022204842972\":1480585069085,\"1018998051571\":1509788624324,\"1022204842973\":1480585069085,\"1000527816685\":1444487341715,\"1022204842969\":1480585069085,\"1021428023831\":1478686804026,\"1022204842980\":1480585069085,\"1024783452690\":1509788625021,\"1020824698401\":1509788624934,\"1021776688484\":1509788624399,\"1021988233470\":1478686417154,\"1022200048642\":1478686417064,\"1021567879662\":1509788624867,\"1022204842995\":1480585069085,\"1024334654657\":1509788624997,\"1022983552329\":1509788625073,\"1022204843007\":1480585069085,\"4990057046\":1509788624155,\"1022200048654\":1478686417064,\"1013685819342\":1478686804068,\"1022204842886\":1480585069084,\"1013801294057\":1478686804028,\"1013685819343\":1478686804068,\"1022204842887\":1480585069084,\"1013685819340\":1478686804068,\"1013685819341\":1478686804068,\"1013685819338\":1478686804068,\"1013685819339\":1478686804068,\"1013685819336\":1478686804068,\"1013685819337\":1478686804068,\"1022204842894\":1480585069084,\"1022204842890\":1480585069084,\"1013685819331\":1478686804068,\"1022042629569\":1478686417268,\"1022204842902\":1480585069084,\"1022204842901\":1480585069084,\"1022361082562\":1478686417289,\"1652191535\":1444487341718,\"1023927154027\":1491634246529,\"1022204842897\":1480585069084,\"1022438940072\":1480585069104,\"1013685819346\":1478686804068,\"1013685819347\":1478686804068,\"1013685819344\":1478686804068,\"1013685819345\":1478686804068,\"1023820985328\":1491634246535,\"1016577303346\":1478686804065,\"1021567879610\":1509788624867,\"478941159\":1444487341706,\"397804740\":1444487341746,\"1022204842930\":1480585069085,\"1022204842928\":1480585069084,\"1022204842929\":1480585069085,\"1021232338340\":1478686417235,\"1022204842943\":1480585069085,\"1022204842939\":1480585069085,\"1023659623757\":1509788624849,\"1022204842936\":1480585069085,\"1002004176752\":1478686804033,\"1024667845020\":1509788625096,\"1024667845021\":1509788625096,\"1024667845022\":1509788625095,\"1019740061273\":1509788624313,\"1025628233552\":1509788624833,\"1025628233553\":1509788624823,\"1024667845012\":1509788625095,\"1022412464107\":1478686417208,\"1024667845013\":1509788625096,\"1025628233556\":1509788624745,\"1021404562198\":1478686417240,\"1023577834112\":1509788624379,\"1023577834113\":1509788624379,\"1023577834114\":1509788624379,\"1022353611387\":1478686417289,\"1023577834115\":1509788624379,\"1023577834116\":1509788624379,\"1021015271992\":1478686417231,\"1023577834117\":1509788624379,\"1025628233551\":1509788624828,\"1023577834118\":1509788624379,\"1023577834119\":1509788624379,\"1019608331793\":1509788625079,\"150870882\":1444487341741,\"1019666529173\":1478686804053,\"1019666529172\":1478686804053,\"1020863619966\":1509788625078,\"1076646794\":1444487341739,\"1019666529175\":1478686804053,\"1019666529174\":1478686804053,\"1019666529177\":1478686804053,\"1024667845040\":1509788625096,\"1019666529176\":1478686804053,\"1024667845032\":1509788625095,\"1022643276055\":1509788624368,\"1024667845035\":1509788625095,\"1022251766188\":1478686417066,\"1024667845038\":1509788625095,\"1023782964577\":1491634246535,\"1024667845039\":1509788625095,\"1024667845026\":1509788625095,\"1024667845027\":1509788625095,\"1024899724185\":1509788624334,\"478941004\":1444487341704,\"1024667845081\":1509788625096,\"1024667845083\":1509788625096,\"1024667845084\":1509788625096,\"1024667845086\":1509788625096,\"1024667845074\":1509788625096,\"1024667845076\":1509788625096,\"1018554496430\":1509788625080,\"1021604712292\":1478686416974,\"1021038864809\":1478686417035,\"1024667845108\":1509788625096,\"1024667845109\":1509788625096,\"1024667845097\":1509788625096,\"1009770694680\":1491634246513,\"1024667845101\":1509788625096,\"1024667845103\":1509788625096,\"1024667845088\":1509788625096,\"1016499715848\":1478686804018,\"1022081297446\":1478686417061,\"1024902083588\":1509788624946,\"1021673927784\":1478686804057,\"1021673927783\":1478686804057,\"4956762989\":1509788624155,\"1025593630442\":1509788625088,\"1025200793205\":1509788624392,\"1025200793206\":1509788624392,\"1025593630440\":1509788624425,\"1025593630441\":1509788624407,\"1025593630435\":1509788625116,\"1021015272839\":1478686417231,\"1025200793214\":1509788624392,\"1025200793215\":1509788624392,\"1022355185116\":1478686417203,\"1025593630438\":1509788624428,\"1025593630439\":1509788624431,\"1023352787028\":1509788625072,\"1025593630436\":1509788625125,\"1025593630437\":1509788625108,\"1022021525991\":1509788624180,\"1022084967901\":1509788624439,\"435686861\":1491634246504,\"1022290825624\":1478686417198,\"1024002785276\":1491634246532,\"1021393296236\":1478686417042,\"1024002785270\":1491634246532,\"1019145379179\":1509788624315,\"1665431306\":1444487341739,\"1022245869088\":1478686417066,\"1021091424679\":1478686417036,\"1025896138818\":1509788667403,\"1024215641198\":1509788667496,\"1022768854443\":1509788624317,\"1021374159566\":1478686416977,\"4990057959\":1509788624163,\"1023354753238\":1509788624533,\"1020830202456\":1478686417031,\"1024215641185\":1509788667496,\"1021059575711\":1509788624933,\"1021957563675\":1478686417147,\"1021673927923\":1478686804057,\"1024206463748\":1509788625033,\"1021957563673\":1478686417147,\"1023782963785\":1491634246535,\"1022884723936\":1509788667503,\"1024215641165\":1509788667495,\"1021673927885\":1478686804057,\"1024215641167\":1509788667496,\"1018930145457\":1509788624930,\"1024215641156\":1509788667495,\"294651195\":1444487341731,\"1021871323136\":1478686417136,\"1024215641183\":1509788667495,\"1008105333654\":1509788624383,\"1022089162000\":1509788625020,\"1020202228967\":1465470268243,\"1021673927855\":1478686804057,\"1024215641134\":1509788667496,\"1019263337722\":1509788624314,\"1022204843010\":1480585069085,\"1022065697780\":1478686417270,\"1022204843008\":1480585069085,\"1024215641130\":1509788667496,\"1023628296483\":1509788624346,\"1001380917971\":1478686804059,\"1021345061077\":1478686804023,\"1022229222819\":1478686417193,\"1024215641150\":1509788667496,\"1006890679141\":1478686804025,\"1025200793216\":1509788624393,\"1024215641144\":1509788667496,\"1022269200325\":1478686804049,\"1024215641147\":1509788667496,\"1021673927856\":1478686804057,\"1023561057487\":1509788625008,\"1024215641139\":1509788667496,\"1020938723517\":1478686417084,\"1023262599994\":1509788624450,\"1021673927821\":1478686804057,\"1021884299522\":1478686417257,\"1021673927820\":1478686804057,\"1022229222806\":1478686417193,\"1023262599987\":1509788624450,\"1022084967684\":1509788624190,\"1023262599990\":1509788624450,\"1023262599991\":1509788624450,\"1023262599988\":1509788624450,\"1014683020236\":1465470268313,\"1565411770\":1444487341739,\"1001380917992\":1478686804059,\"1001380917995\":1478686804059,\"1024215641115\":1509788667496,\"1024215641109\":1509788667496,\"1024215641105\":1509788667496,\"1021652814509\":1509788624420,\"1009584183813\":1478686804030,\"4990057576\":1509788624155,\"1021687559347\":1480585069059,\"1022768854052\":1509788624311,\"1022226732171\":1478686417281,\"4990975080\":1509788624155,\"1001380918026\":1478686804059,\"1001380918021\":1478686804059,\"1017084828468\":1444487341760,\"1023354753407\":1509788624816,\"1021652814473\":1509788624818,\"1019739666672\":1509788624173,\"849094586\":1491634246514,\"1022473274861\":1478943089531,\"1020788653695\":1478686416991,\"1008664628416\":1478686804023,\"1022027292748\":1478686417164,\"1024794070994\":1509788624989,\"1002623624361\":1491634246524,\"1021949830480\":1478686417145,\"1025593630592\":1509788624542,\"1021949830484\":1478686417145,\"1025593630596\":1509788624524,\"1023933575823\":1491634246529,\"1021968574376\":1509788624440,\"1020294241265\":1465470268299,\"1021673927988\":1478686804057,\"1021673927987\":1478686804057,\"1021949830468\":1478686417145,\"1021078579343\":1465470268305,\"1022081297728\":1478686417061,\"1022225683695\":1478686417192,\"1023354753328\":1509788624194,\"1025569512759\":1509788624350,\"1004588299193\":1444487341762,\"1021949044085\":1509788624355,\"1000990972451\":1444487341752,\"849094430\":1491634246514,\"1024798265303\":1509788624557,\"1010150024384\":1478686804015,\"1022807257455\":1490882721865,\"1025513803800\":1509788624451,\"1024798265286\":1509788624557,\"1025513803802\":1509788624451,\"1025589828755\":1509788624349,\"1024798265290\":1509788624557,\"1025513803797\":1509788624511,\"1024798265291\":1509788624557,\"1025513803798\":1509788624510,\"1024798265292\":1509788624557,\"1020818929919\":1509788625021,\"1025513803817\":1509788624435,\"1025513803819\":1509788624435,\"1018618593063\":1478686804026,\"1025513803808\":1509788624435,\"1020957466765\":1478686417085,\"1025609489993\":1509788624746,\"1025593630590\":1509788624540,\"1025513803833\":1509788624435,\"1025593630591\":1509788624537,\"1023210170700\":1509788624847,\"1023627641249\":1509788624277,\"1020744612936\":1509788624321,\"1025609489987\":1509788624828,\"1025609489988\":1509788624833,\"1025609489989\":1509788624823,\"1021799494316\":1478686417130,\"1025577639009\":1509788624926,\"1023407313658\":1509788624384,\"1021410854392\":1478686417007,\"1023407313659\":1509788624383,\"1023407313656\":1509788624384,\"1023407313657\":1509788624384,\"1020934660443\":1478686417083,\"1020934660442\":1478686417083,\"1025513803849\":1509788624455,\"1023407313660\":1509788624383,\"1020845013552\":1509788624368,\"1023407313654\":1509788624384,\"1023407313655\":1509788624384,\"1021441656713\":1478686417107,\"1023407313653\":1509788624384,\"1019309213359\":1509788624390,\"1021015272568\":1478686417231,\"1023354753468\":1509788624419,\"1021722424943\":1509788625069,\"1020850649720\":1478686804057,\"1022226732148\":1478686417281,\"1021652814419\":1509788624195,\"1023606408539\":1509788625178,\"1023606408533\":1509788625178,\"1023606408529\":1509788625178,\"1024661554294\":1509788625006,\"1024206463368\":1509788625033,\"1023606408526\":1509788625178,\"1024686588654\":1509788625083,\"1023606408516\":1509788625178,\"1023606408518\":1509788625178,\"1022807257826\":1490882721866,\"1008244020930\":1478686804028,\"245242033\":1444487341699,\"1024686588616\":1509788625083,\"1022177372250\":1478686417013,\"1021779963907\":1478686417254,\"1025630853774\":1509788624359,\"1025630853775\":1509788624359,\"1025630853772\":1509788624359,\"1025630853773\":1509788624359,\"1021350960108\":1509788624918,\"1023606408479\":1509788625177,\"1023606408468\":1509788625144,\"1022081298030\":1478686417061,\"1021350960098\":1509788624918,\"1021350960126\":1509788624918,\"1023606408461\":1509788625178,\"1021350960125\":1509788624918,\"1021350960123\":1509788624918,\"1021350960122\":1509788624918,\"1021350960120\":1509788624918,\"1018600374245\":1509788625017,\"1146900998\":1444487341726,\"1021350960117\":1509788624918,\"1023606408448\":1509788625178,\"1025908329044\":1509788667443,\"1021350960114\":1509788624918,\"1021350960112\":1509788624918,\"1023606408508\":1509788625178,\"1022075793148\":1509788624416,\"4990058247\":1509788624163,\"1020447326690\":1509788625076,\"1023606408503\":1509788625177,\"1004329156651\":1444487341749,\"598619586\":1444487341736,\"1021350960095\":1509788624918,\"1023606408488\":1509788625177,\"1020893374317\":1478686417079,\"1000527815311\":1444487341711,\"1022200310129\":1478686417280,\"1021533539913\":1478686417245,\"4990058478\":1509788624163,\"1025714865970\":1509788624438,\"1025714865972\":1509788624438,\"1025714865974\":1509788624438,\"1020294240294\":1465470268299,\"1021063899730\":1509788624940,\"1025714865964\":1509788624438,\"1025714865966\":1509788624438,\"1023008319100\":1509788625049,\"1025714865967\":1509788624438,\"1021652814088\":1509788624534,\"1022354267990\":1478686417289,\"1022065566110\":1478686417174,\"1024899725028\":1509788624335,\"1024375035817\":1509788624533,\"1012082848503\":1478950494940,\"1021677860508\":1478686417050,\"1022261990830\":1478686417284,\"1021631056834\":1509788624396,\"1022674864671\":1480585069062,\"1024292973229\":1509788667902,\"1024576756615\":1509788667500,\"1022674864673\":1480585069062,\"1024576756617\":1509788667500,\"1025593629754\":1509788624833,\"1025593629755\":1509788624823,\"1025593629753\":1509788624829,\"1022263301564\":1478686417067,\"1025593629756\":1509788624800,\"2221707931\":1491743595335,\"1024576756625\":1509788667500,\"1024375035797\":1509788625101,\"1013139830208\":1478686804027,\"567162672\":1478686804024,\"1024576756632\":1509788667500,\"1023946944528\":1491634246531,\"1023606408284\":1509788624827,\"1023946944529\":1491634246531,\"1023946944530\":1491634246531,\"1021647571230\":1509788624396,\"1022019035903\":1478686417011,\"1022037254607\":1509788624466,\"1021340736327\":1465470268224,\"1021340736325\":1465470268224,\"1024461803860\":1509788624427,\"1023561058052\":1509788625008,\"1023316743573\":1509788624301,\"1023606408266\":1509788624827,\"1022029390407\":1509788624461,\"1024461803866\":1509788624427,\"1023606408258\":1509788624849,\"1004588298728\":1444487341762,\"1007164352612\":1478686804017,\"1023606408304\":1509788624827,\"1022452177189\":1478686417215,\"4987698811\":1509788624163,\"1023260240078\":1509788624379,\"1023260240076\":1509788624379,\"1023260240077\":1509788624379,\"1023260240074\":1509788624379,\"1023260240075\":1509788624379,\"1023606408297\":1509788624827,\"1023260240073\":1509788624379,\"1022372224496\":1478686417204,\"1021437068727\":1509788624398,\"1023210171333\":1509788624550,\"1022492149477\":1478943089490,\"1023606408215\":1509788624847,\"1023606408210\":1509788624917,\"1021830561380\":1478686417133,\"1023606408203\":1509788624917,\"1831238270\":1444487341720,\"1022062682137\":1478686417060,\"1021811425030\":1478686417131,\"1614706524\":1444487341730,\"1020261473245\":1478686804026,\"1023792007502\":1509788624970,\"1009004640986\":1478686804064,\"1020744613511\":1509788624321,\"1012126626031\":1478686417025,\"1020875024254\":1478686417079,\"1002327918837\":1478686416993,\"1017379092242\":1478686804025,\"1017379092247\":1478686804071,\"1023606408412\":1509788625178,\"1021961627335\":1509788624464,\"1025091353433\":1509788624997,\"1023606408401\":1509788625177,\"1021200094008\":1465470268194,\"110629131\":1491634246518,\"1021200094005\":1465470268193,\"1021200094007\":1465470268193,\"1021548875329\":1478686417047,\"1023606408441\":1509788625178,\"1020400796650\":1478686804022,\"1022237218132\":1509788624301,\"1023606408435\":1509788625178,\"1022237218124\":1509788624288,\"1023606408426\":1509788625178,\"1022237218113\":1509788624288,\"1022406695780\":1480585069097,\"1022237218116\":1509788624288,\"1019324023586\":1509788624281,\"1025630854000\":1509788624359,\"1022237218107\":1509788624288,\"1025630854001\":1509788624359,\"1025524028115\":1509788624867,\"1022237218108\":1509788624288,\"1022354923056\":1509788624928,\"1022354923057\":1509788624928,\"1022237218110\":1509788624288,\"1022237218111\":1509788624288,\"1012126756947\":1478686416990,\"1023606408334\":1509788624846,\"1023606408328\":1509788624868,\"1024215641914\":1509788667496,\"1022354923052\":1509788624928,\"1021384120328\":1478686417042,\"1009770695732\":1491634246510,\"1022354923053\":1509788624928,\"1021368916323\":1478686416988,\"1022354923054\":1509788624928,\"1022354923055\":1509788624928,\"1025630853998\":1509788624359,\"1025630853999\":1509788624359,\"1022354923050\":1509788624928,\"1025630853997\":1509788624359,\"1022354923051\":1509788624928,\"1022224242264\":1509788624938,\"1020974506447\":1478686417086,\"1025078639727\":1509788624292,\"1022065696968\":1478686417175,\"1025609489412\":1509788624540,\"1025609489413\":1509788624542,\"1025609489414\":1509788624537,\"1025609489415\":1509788624523,\"1020497134258\":1478686804033,\"1023647043317\":1509788624442,\"1021304165011\":1478686417102,\"1023647043318\":1509788624442,\"1023647043319\":1509788624442,\"1021490548081\":1478686417111,\"1023647043320\":1509788624442,\"1023647043323\":1509788624442,\"1025628624095\":1509788624550,\"1021596451591\":1509788624397,\"1021490548078\":1478686417111,\"1021304165007\":1478686417102,\"1022092042648\":1478686417273,\"1001800214279\":1478686804023,\"1021369964197\":1478686417042,\"1023260239826\":1509788624380,\"1021892949328\":1478686417258,\"1023260239827\":1509788624380,\"4954799995\":1509788624163,\"1523729123\":1478686417024,\"1024460758593\":1509788625029,\"1024005796697\":1491634246515,\"1025628624108\":1509788624550,\"1665432445\":1444487341723,\"1021014483430\":1478686417089,\"1021892949314\":1478686417258,\"1022629380519\":1509788624195,\"1025628624107\":1509788624550,\"1019033312179\":1509788624388,\"1020925619012\":1478686417000,\"1468420037\":1478950494923,\"1021892949305\":1478686417258,\"645676582\":1491634246507,\"1023210169510\":1509788625140,\"1025593758376\":1509788625125,\"1025593758377\":1509788625107,\"1025593758378\":1509788625088,\"1020471443549\":1478686804033,\"1020364622588\":1478686804031,\"1022430680346\":1478686417302,\"1020364622590\":1478686804031,\"1024794067711\":1509788624989,\"1021721377748\":1478686804047,\"1025593758375\":1509788625115,\"1021949044863\":1509788624354,\"1022780652267\":1509788624816,\"1025533468384\":1509788624347,\"1025533468387\":1509788624347,\"1025533468389\":1509788624346,\"1025533468396\":1509788624346,\"1025533468398\":1509788624347,\"1023260239728\":1509788624380,\"1523728989\":1478686417024,\"1023260239726\":1509788624379,\"1023260239727\":1509788624379,\"1022780652037\":1509788624419,\"1025533468402\":1509788624346,\"1023260239724\":1509788624379,\"1023260239725\":1509788624379,\"1023260239723\":1509788624379,\"1021033882153\":1478686416986,\"790378371\":1444487341722,\"1025533468358\":1509788624347,\"1025533468359\":1509788624347,\"1025533468360\":1509788624347,\"1018630910822\":1509788625079,\"1523729016\":1478686417024,\"1025533468363\":1509788624347,\"1021999639474\":1478686417011,\"1025533468371\":1509788624346,\"1025533468374\":1509788624347,\"1025533468375\":1509788624347,\"1025533468377\":1509788624346,\"1025533468379\":1509788624346,\"1021345060027\":1478686804023,\"1025533468383\":1509788624347,\"1021490548144\":1478686417111,\"1025703069845\":1509788624455,\"1025593889303\":1509788625140,\"1025593889300\":1509788625139,\"1021490548141\":1478686417111,\"1021490548143\":1478686417111,\"1019169756017\":1509788624375,\"1022203009084\":1478686417190,\"1020797826119\":1478686417077,\"1019958682190\":1478686804021,\"1021929781192\":1478686417142,\"1007134598629\":1509788624374,\"1021485698378\":1509788624405,\"1024122055277\":1509788625086,\"1022470395873\":1478686417299,\"1021490548097\":1478686417111,\"1021490548103\":1478686417111,\"1017826173636\":1509788624311,\"1004588302287\":1444487341763,\"1020364622747\":1478686804034,\"1021375338313\":1478686417104,\"1020364622721\":1478686804034,\"1022248360763\":1478686804048,\"1020294109119\":1465470268290,\"1022234204207\":1478686417282,\"1021096667101\":1478686417094,\"1021037552471\":1478686417231,\"1021467872741\":1478686417045,\"1022001475027\":1478686417157,\"1022780652500\":1509788624194,\"1024284190128\":1509788624342,\"1020564375498\":1478686417026,\"1020364622802\":1478686804031,\"1020364622815\":1478686804034,\"1012252325711\":1478686417073,\"1023647043495\":1509788624226,\"1023647043497\":1509788624226,\"1020364622799\":1478686804026,\"1023647043498\":1509788624226,\"1023647043499\":1509788624226,\"1023647043502\":1509788624226,\"1016399577001\":1480585069070,\"1021970541493\":1478686417056,\"1025654445123\":1509788625004,\"1025654445121\":1509788625004,\"1158569086\":1509788625081,\"1021020381202\":1478686417035,\"1021020381201\":1478686417035,\"896674820\":1509788625019,\"1021428156488\":1478686804026,\"1581795121\":1491634246520,\"1021428156494\":1478686804026,\"1020364622612\":1478686804026,\"1523729233\":1478686417024,\"1021601432921\":1478686417246,\"1024804422257\":1509788625004,\"1022127039200\":1509788624338,\"1022127039202\":1509788624338,\"1023647043425\":1509788624863,\"1023647043426\":1509788624863,\"1023647043427\":1509788624863,\"1020364622593\":1478686804031,\"1019287587647\":1509788624376,\"1024403872320\":1509788625070,\"1023647043429\":1509788624863,\"1021452274238\":1509788624399,\"1019287587586\":1509788624376,\"1022301707436\":1478686417199,\"1023647043422\":1509788624863,\"1024574657584\":1509788624925,\"1021668030840\":1509788624400,\"1018468513883\":1478686804031,\"1026232346910\":1514456869770,\"1026232346911\":1514456869769,\"1026225010400\":1514456869772,\"1018515570020\":1509788624426,\"1020364622680\":1478686804040,\"1016552142338\":1478686804016,\"1024375036088\":1509788624194,\"1022484285928\":1509788624394,\"430702708\":1491634246508,\"1021623452812\":1478686417008,\"1021955598405\":1509788624508,\"1020364622707\":1478686804031,\"1026225010382\":1514456869772,\"1020364622706\":1478686804040,\"1021623452805\":1478686417008,\"1021623452807\":1478686417008,\"1019287587648\":1509788624376,\"1022518758364\":1509788625075,\"1020364622714\":1478686804034,\"1744859632\":1444487341717,\"1026225010393\":1514456869772,\"1026225010394\":1514456869772,\"1207852554\":1444487341707,\"1026225010396\":1514456869772,\"1021396047590\":1478686417006,\"1026232346913\":1514456869770,\"1026232346915\":1514456869769,\"1026232346916\":1514456869769,\"1020945148930\":1478686417229,\"1013044659393\":1465470268263,\"1024789217501\":1509788624568,\"1009113950473\":1478686804054,\"1023880625889\":1509788624939,\"1024789217497\":1509788625090,\"1017505444582\":1478686804016,\"1024789217498\":1509788624568,\"1022880002702\":1509788625073,\"1025593757888\":1509788624542,\"1025593757889\":1509788624537,\"1025593757891\":1509788624524,\"1021741563496\":1509788624403,\"1024686329579\":1509788624556,\"1024686329576\":1509788624556,\"1024686329574\":1509788624556,\"1024686329575\":1509788624556,\"1024686329572\":1509788624556,\"1024300836838\":1509788624281,\"1024789217534\":1509788624568,\"1008105336076\":1509788624381,\"1022081425926\":1480585069079,\"1021995444585\":1478686417265,\"1024789217527\":1509788624568,\"1020956290940\":1478686417085,\"1022081425935\":1480585069107,\"1025067888654\":1509788624298,\"1021185939886\":1465469681395,\"1021341652598\":1509788624180,\"1024789217518\":1509788624568,\"1024789217512\":1509788624568,\"1024789217508\":1509788624568,\"1024789217509\":1509788624568,\"1024789217510\":1509788624568,\"1024789217511\":1509788624568,\"1024789217504\":1509788624568,\"1024789217506\":1509788624568,\"1022622172069\":1480585069090,\"1021603923711\":1478686417008,\"482870914\":1478686804059,\"1024540578244\":1509788667549,\"1004329159691\":1444487341756,\"1022209039063\":1478686417013,\"1020447329773\":1509788624354,\"1019386806961\":1509788625077,\"1025447615470\":1509788624353,\"1021831345019\":1478686417256,\"1025593757887\":1509788624540,\"1025538579636\":1509788624273,\"1022054952274\":1478686417059,\"993796529\":1478686417024,\"1022240626736\":1478686417065,\"1022476945947\":1478943089315,\"1022204844624\":1480585069085,\"1016854272841\":1478686804019,\"1014803488079\":1478686804064,\"1025593757806\":1509788624428,\"1025593757807\":1509788624431,\"1024135293308\":1509788667494,\"1021589242155\":1509788624405,\"1025593757808\":1509788624425,\"1025593757810\":1509788624407,\"1022622171951\":1480585069142,\"1021989939582\":1478686417264,\"1021354497886\":1478686804040,\"1022622171946\":1480585069133,\"1021981026544\":1478686417151,\"1023150924464\":1509788624978,\"1022622171954\":1480585069142,\"1022622171955\":1480585069151,\"1021262224834\":1478686804039,\"1025593757736\":1509788624828,\"1025593757737\":1509788624833,\"1025593757738\":1509788624823,\"1021986138391\":1478686417153,\"1025593757740\":1509788624746,\"1021310456031\":1478686417005,\"1026226583003\":1514456869770,\"1744859886\":1444487341746,\"1000528604705\":1444487341710,\"1022053117185\":1478686417172,\"1021984958742\":1478686417152,\"1016623180141\":1478686804020,\"1015996650506\":1465470268314,\"1024156790420\":1509788667855,\"1025162521500\":1509788624268,\"1022474980270\":1478943089486,\"1025162521502\":1509788624268,\"1008732653258\":1478686804033,\"1523728853\":1478686417024,\"1025162521494\":1509788624269,\"1022076576612\":1509788624190,\"1008107432967\":1478686804030,\"1019133448948\":1509788624314,\"1024794067334\":1509788624989,\"1024055997833\":1509788624928,\"1022622171898\":1480585069142,\"1025881325753\":1509788667465,\"1021961628271\":1509788625009,\"397806747\":1444487341717,\"1022033194540\":1478686417166,\"1025162521521\":1509788624268,\"1019133448917\":1509788624314,\"1025538579716\":1509788624181,\"1025162521505\":1509788624268,\"1012936002660\":1478686416995,\"1025162521563\":1509788624268,\"1021948128127\":1478686417144,\"1025162521559\":1509788624268,\"1024899726196\":1509788624334,\"1021394343019\":1478686417105,\"1022847892978\":1509788624377,\"1024412784716\":1509788625007,\"1021809193748\":1478686417131,\"1020907661643\":1478686417032,\"1017808609665\":1478686804016,\"1019033311367\":1509788624374,\"1021354497762\":1478686804033,\"1017808609675\":1478686804016,\"1021473902338\":1509788624816,\"1025162521575\":1509788624268,\"1017808609677\":1478686804016,\"1017808609655\":1478686804016,\"1587299606\":1444487341747,\"1008664363628\":1478686804034,\"1016517932616\":1509788624284,\"1023105314465\":1509788624551,\"1007095537881\":1478686804032,\"1001644764640\":1444487341702,\"1020784586949\":1478686804071,\"1171021411\":1478686804033,\"1023889539020\":1491634246528,\"1023889539021\":1491634246530,\"1021833048742\":1509788625069,\"1018106745011\":1509788625079,\"1018106745010\":1509788625080,\"1008540109562\":1478686804064,\"1019413283479\":1509788624317,\"1020220052210\":1478686804065,\"1021210845133\":1465470268195,\"1021210845132\":1465470268195,\"1022286241342\":1509788624930,\"1024789217543\":1509788624568,\"1020910413872\":1478686417080,\"1019332284355\":1478686804039,\"1024789217538\":1509788624568,\"1016399707415\":1480585069069,\"1024789217539\":1509788624568,\"1021531439898\":1509788624401,\"714486112\":1444487341735,\"1021465775885\":1478686417108,\"1021771053733\":1478686417052,\"1021771053732\":1478686417052,\"1022374581934\":1478686417290,\"1025415488376\":1509788624346,\"1008056313901\":1480585069065,\"1010659511546\":1509788625017,\"1020941608979\":1478686417084,\"1021626466666\":1509788624971,\"1022413639744\":1509788624923,\"1022242463421\":1478686417195,\"1022501719412\":1509788624504,\"1021567878815\":1509788624454,\"1022501719420\":1509788624504,\"1022501719421\":1509788624504,\"1020997969055\":1478686417034,\"1022501719422\":1509788624504,\"1022501719423\":1509788624504,\"1022501719416\":1509788624504,\"1022501719418\":1509788624504,\"1022501719419\":1509788624504,\"1022501719399\":1509788624504,\"1022501719404\":1509788624505,\"1022501719405\":1509788624504,\"1013210870946\":1478686804015,\"1022501719407\":1509788624504,\"1013210870949\":1478686804015,\"1013210870948\":1478686804015,\"1022501719401\":1509788624505,\"1022501719402\":1509788624504,\"1018823715374\":1465470268247,\"1025714867667\":1509788624844,\"1025714867669\":1509788624844,\"1013210870943\":1478686804015,\"1025714867671\":1509788624844,\"1021011862924\":1478686417231,\"1021826757895\":1478686417133,\"1025350346546\":1509788625083,\"1021567878818\":1509788624455,\"1024375168277\":1509788625031,\"1020817748247\":1509788625021,\"1023431824672\":1509788624519,\"1022460564224\":1478686417016,\"1023098235151\":1509788625046,\"1014666240687\":1465470268253,\"1021567878731\":1509788624453,\"1021949832323\":1478686417145,\"1023106754981\":1509788624264,\"1020581151534\":1480585069077,\"1023386999517\":1509788625040,\"1021567878770\":1509788624454,\"1024005273382\":1491634246533,\"1022501719428\":1509788624504,\"1022501719430\":1509788624504,\"1022501719424\":1509788624504,\"1022501719425\":1509788624504,\"1025671746202\":1509788624942,\"1021118161713\":1465470268312,\"1024005273385\":1491634246533,\"1022413639859\":1509788624923,\"1019225461426\":1509788624354,\"1352289347\":1478950494922,\"1012420093127\":1478686417026,\"1022828230996\":1509788624981,\"1022220180750\":1478686417192,\"1022220180747\":1478686417192,\"1022208646556\":1480585069087,\"1025118613544\":1509788625022,\"1544700161\":1491634246533,\"1021300758460\":1478686416989,\"1025715522713\":1509788624453,\"1018478608323\":1509788624372,\"1016106223976\":1478686804046,\"1022454141645\":1478686417016,\"1025615386286\":1509788625021,\"1022014581006\":1509788625067,\"1012672158249\":1478686417224,\"4954798688\":1509788624156,\"1025711590654\":1509788624308,\"1009078430830\":1478686804023,\"1021240728346\":1478686417003,\"1019033312948\":1509788624388,\"1022110394149\":1478686417182,\"1025900331475\":1509788667465,\"1025900331473\":1509788667457,\"1025900331477\":1509788667460,\"1009770694296\":1491634246510,\"1025385078831\":1509788624821,\"1021746674097\":1478686417126,\"1024381721728\":1509788624346,\"1021337850138\":1478686417005,\"1025715522582\":1509788624438,\"1025715522583\":1509788624438,\"1019035016775\":1509788624287,\"1009965349854\":1491634246523,\"1016681114526\":1478686804018,\"1020596108595\":1478686804071,\"1025715522589\":1509788624438,\"1020596108597\":1478686804071,\"1025715522586\":1509788624438,\"1020596108596\":1478686804071,\"1019035016776\":1509788624287,\"1020596108599\":1478686804071,\"1020596108598\":1478686804071,\"1023153022438\":1509788625045,\"1004588301154\":1444487341762,\"1022071858555\":1509788624971,\"1023603658440\":1509788625071,\"1021327890111\":1465470268218,\"1012187313738\":1478686417025,\"1020064603587\":1509788624372,\"1013902085137\":1478686804071,\"1021714038710\":1509788624396,\"1022314028027\":1478686417068,\"1012115880935\":1478686417223,\"1022031620346\":1509788624463,\"1021567878929\":1509788624454,\"1021567878931\":1509788624455,\"231084053\":1478686417019,\"1023821249968\":1491634246535,\"1020365148042\":1478686804026,\"1012476715339\":1444487341761,\"1024463248346\":1509788625029,\"1022013925852\":1478686417159,\"1009839374861\":1491634246523,\"1021645079513\":1478686417248,\"1019717514996\":1509788624312,\"1008105335085\":1509788624376,\"1021995707738\":1509788624463,\"1022028082042\":1478686417267,\"1023617026736\":1509788624970,\"1025620759841\":1509788624970,\"1020220053305\":1478686804039,\"1022028082044\":1478686417267,\"363858858\":1491634246534,\"1019369507289\":1509788624375,\"1019369507290\":1509788624375,\"1022473277156\":1478943089531,\"1022473277157\":1478943089531,\"1021887443958\":1509788624465,\"363858822\":1491634246510,\"1022921815115\":1509788624293,\"583941249\":1478686804024,\"1022921815129\":1509788624293,\"1022238792851\":1509788624947,\"1022238792852\":1509788624932,\"1022149976666\":1509788624439,\"1022238792853\":1509788624941,\"1022238792855\":1509788624931,\"1022238792856\":1509788624931,\"1022238792857\":1509788624931,\"1022921815121\":1509788624293,\"1022208646881\":1480585069087,\"1022921815141\":1509788624293,\"1019082594457\":1509788625079,\"1021969624241\":1478686417056,\"1025274849603\":1509788624233,\"1021156712396\":1478686417097,\"1179146457\":1480585069063,\"1021251344682\":1478686417100,\"1022333688239\":1478686417201,\"1022077495013\":1478686417177,\"1523729484\":1478686417024,\"1025330684983\":1509788624526,\"1021693460451\":1509788624400,\"1025330684981\":1509788624526,\"1025330684978\":1509788624526,\"1020845142356\":1478686417226,\"1022208646731\":1480585069087,\"1022780652627\":1509788624533,\"1020391885373\":1478686804022,\"1025714605924\":1509788624549,\"1021965299673\":1509788624464,\"1171020564\":1478686804033,\"1025714605935\":1509788624549,\"1025714605930\":1509788624549,\"1025620760011\":1509788624932,\"1025620760005\":1509788624946,\"1025620760007\":1509788624941,\"1021887836995\":1478686417054,\"1025274849594\":1509788624233,\"1025274849599\":1509788624233,\"1021933580775\":1478686417055,\"1025274849586\":1509788624234,\"1025274849587\":1509788624233,\"1024077492689\":1509788667463,\"1025274849585\":1509788624234,\"1025274849590\":1509788624585,\"1000456122428\":1478686804064,\"1025007466714\":1509788624978,\"1019287588271\":1509788624376,\"1021976964474\":1478686417056,\"1025274849484\":1509788624233,\"1021832656415\":1478686804035,\"1023098104479\":1509788624433,\"1025274849490\":1509788624233,\"1019287588272\":1509788624376,\"1021679435556\":1478686417050,\"1025274849518\":1509788624234,\"1012140390278\":1478686417073,\"1323848135\":1478950494922,\"1021832656417\":1478686804035,\"1021832656416\":1478686804035,\"1023062977685\":1509788625073,\"1021832656418\":1478686804035,\"1024350920651\":1509788624565,\"1018513472397\":1509788624602,\"1021262223446\":1478686804039,\"1024350920635\":1509788624552,\"1018513472392\":1509788624602,\"1018513472389\":1509788624603,\"1022234336840\":1478686417014,\"1018546502054\":1480585069070,\"1024350920622\":1509788624564,\"1018513472411\":1509788624602,\"1023888751409\":1491634246517,\"1018513472406\":1509788624602,\"1018513472402\":1509788624602,\"1018513472401\":1509788624602,\"1018513472428\":1509788624602,\"1021324088353\":1465470268212,\"1021324088352\":1465470268212,\"1021324088354\":1465470268213,\"1018513472424\":1509788624602,\"1018513472421\":1509788624602,\"1018513472418\":1509788624602,\"1021775509779\":1509788624994,\"1018513472416\":1509788624602,\"1021315568827\":1478686417238,\"1021775509772\":1509788624994,\"1017927311020\":1478686804033,\"1021775509774\":1509788624994,\"1022430810682\":1478686417212,\"1021775509769\":1509788624994,\"1021775509768\":1509788624994,\"1021775509771\":1509788624994,\"1023617027011\":1509788624970,\"1021775509764\":1509788624994,\"1021775509766\":1509788624994,\"1021447949415\":1478686417007,\"1016982198192\":1478686804042,\"1016982198193\":1478686804042,\"1022012091328\":1478686417159,\"4990056168\":1509788624155,\"443418082\":1478686804029,\"1012115880360\":1478686417223,\"1004588300615\":1444487341762,\"1021984173154\":1509788624463,\"1021197867867\":1464448510787,\"1020847108162\":1478686417226,\"1024214984833\":1509788625033,\"1020975950244\":1478686417087,\"1022167540390\":1509788624300,\"1019287588123\":1509788624376,\"1018513472383\":1509788624603,\"1022455189577\":1478686417297,\"1018513472380\":1509788624603,\"1021735271282\":1509788667538,\"1019287588124\":1509788624376,\"1018513472375\":1509788624603,\"1021661200535\":1478686804046,\"1022430810869\":1509788624385,\"1018513472368\":1509788624603,\"1024660245933\":1509788624531,\"1024660245934\":1509788624531,\"1009210287792\":1480585069067,\"1009210287793\":1480585069067,\"1024660245931\":1509788624531,\"1024660245924\":1509788624531,\"1021047514120\":1478686417092,\"1024660245926\":1509788624531,\"1024660245927\":1509788624531,\"1024660245922\":1509788624531,\"1025671746029\":1509788624942,\"1022780652865\":1509788625101,\"1009210287778\":1480585069067,\"1021492513416\":1509788624853,\"1009210287788\":1480585069067,\"1009210287789\":1480585069067,\"1021492513412\":1509788624853,\"1024660245936\":1509788624531,\"1021492513411\":1509788624853,\"1024660245937\":1509788624531,\"1021492513408\":1509788624853,\"1020305117673\":1478686804026,\"1025628623678\":1509788624846,\"1024660245916\":1509788624531,\"1024660245918\":1509788624531,\"1023098104444\":1509788624424,\"1025628623660\":1509788624846,\"1024660245911\":1509788624531,\"1024660245904\":1509788624531,\"1024660245906\":1509788624531,\"1024660245907\":1509788624531,\"1253468851\":1444487341753,\"1018267186591\":1478686804018,\"4918215981\":1509788624157,\"1026226835203\":1514456869769,\"1017895247792\":1465470268262,\"1021500126959\":1478686417007,\"1023030071698\":1509788625048,\"1023021944855\":1509788625049,\"1019728645211\":1509788624313,\"1019728645210\":1509788624315,\"1018604947793\":1478686804024,\"1025615391669\":1509788625021,\"1008666474995\":1478686804030,\"1023926486546\":1491634246528,\"1023926486547\":1491634246530,\"267136976\":1491634246534,\"1025560471684\":1509788625021,\"1022237221558\":1478686417194,\"1022427016647\":1478686417070,\"1011572451029\":1478686416993,\"1021680074836\":1478686804032,\"1019053761754\":1509788624313,\"1006370975982\":1478686804032,\"1019560870423\":1509788624317,\"1022150761588\":1478686417063,\"1020905034432\":1478686416999,\"1022195458032\":1478686417189,\"1021419778337\":1478686417043,\"1023076340845\":1509788624419,\"1025806104253\":1509788667463,\"1021419778350\":1478686417043,\"1001059922843\":1478686417022,\"1024680440829\":1509788624489,\"1020076269834\":1509788624170,\"1024680440808\":1509788624434,\"1158571454\":1509788625081,\"1021484266860\":1478686417046,\"1021554391351\":1478686417048,\"1021169033807\":1478686417234,\"1725842962\":1444487341705,\"1023076340793\":1509788625100,\"1024640987490\":1509788667538,\"1021479154905\":1478686417243,\"1158571474\":1509788625081,\"1012321129278\":1478686804062,\"1012140116046\":1478686416994,\"1021715071731\":1509788624817,\"1023889654931\":1491634246528,\"1020807777506\":1478686416998,\"1021715071725\":1509788624533,\"1021393956412\":1478686417105,\"1021681910041\":1509788624396,\"4918215725\":1509788624157,\"1025615391381\":1509788625021,\"1023561330912\":1509788625097,\"1021454512793\":1478686417107,\"1022205895115\":1478686417191,\"1022438944748\":1480585069104,\"1024637710555\":1509788667502,\"1021393956383\":1478686417105,\"1024690140548\":1509788624486,\"742001950\":1444487341751,\"1024690140547\":1509788624485,\"1002452174605\":1491634246516,\"1025680141960\":1509788624350,\"1023561330886\":1509788625097,\"1025147440713\":1509788624456,\"1022447857510\":1480585069121,\"1652179799\":1444487341718,\"1002452174601\":1491634246516,\"4980214262\":1509788624157,\"1019941640320\":1509788624930,\"1002452174614\":1491634246516,\"1023561330909\":1509788625097,\"1023561330910\":1509788625098,\"1002452436744\":1491634246509,\"1008294355674\":1480585069074,\"1020964411362\":1478686417085,\"1158571060\":1509788625081,\"1021715071776\":1509788624194,\"1007022659309\":1478686804015,\"1019963398946\":1478686804021,\"1019963398945\":1478686804032,\"1023561330862\":1509788625097,\"1025147440673\":1509788624511,\"1018805490723\":1509788624928,\"1000990977561\":1444487341750,\"1022356367510\":1478686804071,\"1022356367511\":1478686804071,\"1025147440680\":1509788624512,\"1025616177884\":1509788624929,\"1025147440685\":1509788624466,\"1023561330878\":1509788625097,\"1022489145511\":1478943089489,\"1023561330872\":1509788625097,\"1025438966100\":1509788624293,\"1023561330874\":1509788625097,\"1023927404386\":1491634246529,\"1025147440698\":1509788624441,\"1021474043182\":1509788624816,\"1023561330871\":1509788625098,\"1025909521741\":1509788667458,\"1021606165963\":1509788624404,\"1023561330866\":1509788625097,\"1023561330830\":1509788625097,\"1524267966\":1444487341754,\"1023561330824\":1509788624531,\"1023485832478\":1509788624252,\"1024512403502\":1509788625028,\"1524267945\":1444487341742,\"1022037252018\":1509788624462,\"1019315253876\":1509788625079,\"1025874131783\":1509788667833,\"1022977904552\":1509788625050,\"1021445469045\":1478686417044,\"1021599350144\":1478686417115,\"1023561330834\":1509788625098,\"1023561330835\":1509788624531,\"1025406967403\":1509788624466,\"1021845228503\":1480585069082,\"2024692004\":1491822860485,\"1158571140\":1509788625081,\"1021845228505\":1480585069082,\"1022277068054\":1478686417067,\"1021845228506\":1480585069082,\"849089299\":1491634246514,\"1021845228485\":1480585069082,\"1021845228487\":1480585069082,\"1025524164474\":1509788625143,\"1004330350512\":1444487341753,\"1024690140478\":1509788624485,\"1021845228489\":1480585069082,\"1025406967414\":1509788624507,\"1021845228491\":1480585069082,\"1018553567220\":1478686804022,\"1021845228535\":1480585069082,\"1021845228543\":1480585069083,\"1021845228539\":1480585069083,\"1021327239834\":1478686417103,\"1021845228538\":1480585069083,\"1021616258117\":1478686417116,\"1021616258115\":1478686417116,\"1025592847177\":1509788624930,\"1024690140518\":1509788624485,\"1024690140519\":1509788624485,\"1207854650\":1444487341708,\"1022872782558\":1509788625073,\"1022065694461\":1478686417270,\"1024690140521\":1509788624485,\"1024690140523\":1509788624485,\"1021693706376\":1480585069067,\"1021057735410\":1478686417036,\"1024690140531\":1509788624485,\"1014129508320\":1478686804019,\"1024690140541\":1509788624485,\"1024690140537\":1509788624485,\"1021845228468\":1480585069082,\"1024690140485\":1509788624486,\"1024781367479\":1509788624437,\"1022237221661\":1478686417194,\"1021497373946\":1478686417046,\"1021845228478\":1480585069082,\"1021845228472\":1480585069082,\"1021845228474\":1480585069082,\"1024690140491\":1509788624486,\"1019596522927\":1509788624942,\"1024690140503\":1509788624486,\"1021845228449\":1480585069082,\"1024690140496\":1509788624486,\"1024690140499\":1509788624486,\"1024690140508\":1509788624485,\"1024690140509\":1509788624485,\"1022017328621\":1478686417160,\"1021845228462\":1480585069082,\"1024690140511\":1509788624485,\"1001800212199\":1478686804029,\"1021845228456\":1480585069082,\"1011772601165\":1478686804024,\"1023288173140\":1509788624354,\"1022384547889\":1478686417205,\"1024690140839\":1509788624890,\"1024690140832\":1509788624890,\"1021016316859\":1478686417001,\"1024690140844\":1509788624890,\"1022156005339\":1509788624958,\"1024147083528\":1509788625035,\"1024690140847\":1509788624890,\"1024690140855\":1509788624890,\"1024690140848\":1509788624890,\"1012980316330\":1465470268318,\"1024953845499\":1509788625140,\"1022097021771\":1509788624190,\"1024690140804\":1509788624890,\"1024690140801\":1509788624890,\"1024690140812\":1509788624890,\"1024690140813\":1509788624890,\"1020993246519\":1478686417230,\"1024690140815\":1509788624890,\"1024690140810\":1509788624890,\"1021137969741\":1478686417096,\"1023853084857\":1491634246515,\"1024690140822\":1509788624890,\"1024690140823\":1509788624890,\"1021907094705\":1478686417140,\"1024690140816\":1509788624890,\"1021920857570\":1509788625009,\"1017050885664\":1478686804016,\"1024690140828\":1509788624890,\"1024690140826\":1509788624890,\"1004588287114\":1444487341762,\"1021368528096\":1478686417042,\"1158571853\":1509788625081,\"1008207699834\":1478686804064,\"1021352669153\":1465470268226,\"1023734872550\":1509788624969,\"1021465261739\":1478686417300,\"1021847586917\":1509788624423,\"1020768716857\":1478686417076,\"1021887303563\":1478686417137,\"1024460629010\":1509788625029,\"1025628499639\":1509788625242,\"1103782829\":1478686804033,\"1021352669149\":1465470268225,\"1023996872827\":1509788624509,\"1021352669151\":1465470268226,\"1021262226789\":1478686804039,\"1025715008502\":1509788625137,\"1025715008500\":1509788625137,\"1025715008501\":1509788625137,\"1025715008498\":1509788625137,\"1025715008496\":1509788625137,\"1025715008497\":1509788625137,\"1022770545546\":1509788625074,\"1025715008267\":1509788624549,\"1020161074224\":1465470268316,\"1025715008261\":1509788624549,\"1025715008258\":1509788624549,\"1020219665335\":1509788624287,\"1021555047183\":1509788624397,\"1025715008256\":1509788624549,\"1019674118963\":1509788625077,\"1020219665334\":1509788624287,\"1021770122306\":1509788624919,\"1021602496062\":1509788624408,\"1021888352052\":1509788624465,\"1025855912892\":1509788667402,\"1010863341147\":1478686804049,\"1021519787303\":1478686417047,\"1837518623\":1491634246514,\"4892918023\":1509788624156,\"1021019200314\":1478686417035,\"1024264788149\":1509788624490,\"1019675560741\":1464448510786,\"1021686891284\":1509788624400,\"1021655055678\":1509788624400,\"1008828334211\":1478686804071,\"2470228361\":1517735696525,\"1001059922317\":1478686417022,\"1022438812749\":1480585069100,\"1021693182970\":1478686417249,\"1023254207640\":1509788624376,\"1023097837387\":1509788625046,\"1024781368220\":1509788625177,\"1025676209450\":1509788624296,\"1021994914204\":1478686417011,\"1021770122291\":1509788624919,\"1021770122290\":1509788624919,\"1021770122289\":1509788624919,\"1021770122295\":1509788624919,\"1021770122294\":1509788624919,\"1021770122293\":1509788624919,\"1021770122292\":1509788624919,\"1021770122299\":1509788624919,\"1021770122298\":1509788624919,\"1021770122297\":1509788624919,\"1021770122296\":1509788624919,\"1021770122303\":1509788624919,\"1025616177534\":1509788624929,\"1024781368248\":1509788625176,\"1024781368251\":1509788625176,\"1022952214184\":1509788625051,\"1021770122278\":1509788624919,\"1024781368227\":1509788625177,\"1020945143558\":1478686417033,\"1021770122281\":1509788624919,\"1021770122280\":1509788624919,\"1021770122286\":1509788624919,\"1023881529332\":1509788625095,\"1021466572751\":1478686417108,\"1021385174180\":1478686417105,\"1022447463803\":1478686804071,\"2024692645\":1491822860484,\"1022447463804\":1478686804071,\"1022447463805\":1478686804071,\"1023881529313\":1509788625095,\"1023881529320\":1509788625095,\"1021665147955\":1478686416975,\"1023881529300\":1509788625095,\"1022234206754\":1478686417065,\"1023881529298\":1509788625095,\"1022622186176\":1509788625061,\"1023881529296\":1509788625095,\"1023881529297\":1509788625095,\"1021665147961\":1478686416975,\"1023881529309\":1509788625095,\"1025078626480\":1509788624292,\"1023881529307\":1509788625095,\"1023881529304\":1509788625095,\"1023881529294\":1509788625095,\"1023881529295\":1509788625095,\"1023881529292\":1509788625095,\"1023881529293\":1509788625095,\"1013367624386\":1444487341759,\"1025044679372\":1509788624569,\"1021630676567\":1509788624401,\"1010091953554\":1491634246522,\"1019841761476\":1509788625080,\"1021989277898\":1478686417155,\"1024953845661\":1509788624550,\"1024553299902\":1509788624279,\"1024953845662\":1509788624550,\"1021466572733\":1478686417108,\"1024953845658\":1509788624550,\"1018882300297\":1509788624941,\"1024737588363\":1509788625021,\"1006370976522\":1478686804032,\"1025650519750\":1509788624435,\"1023820055334\":1509788624393,\"1025514595892\":1509788624340,\"1021881536443\":1509788624496,\"1010091953521\":1491634246522,\"1022447463881\":1478686804064,\"1022447463882\":1478686804054,\"1022081162142\":1478686417272,\"1022447463883\":1478686804054,\"1022447463884\":1478686804054,\"1022447463885\":1478686804054,\"1022447463886\":1478686804054,\"1023485833133\":1509788624905,\"1021770253674\":1478686417009,\"1022838310601\":1509788624426,\"1025715008064\":1509788625167,\"1008105329907\":1509788624391,\"1022279690134\":1478686417014,\"1016483055639\":1478686804031,\"1016483055640\":1478686804031,\"1024953845504\":1509788625140,\"1025084786899\":1509788624293,\"1016075825620\":1509788624944,\"1020436461021\":1480585069076,\"628885132\":1491634246534,\"1018490126763\":1478686804066,\"1025084786885\":1509788624293,\"1024292970382\":1509788667902,\"1018490126764\":1478686804066,\"1024292968562\":1509788667903,\"1024292968565\":1509788667903,\"1024292968568\":1509788667902,\"1024681096999\":1509788624489,\"1024292968572\":1509788667902,\"1021246628842\":1478686417003,\"1021246628841\":1478686417003,\"1024292968544\":1509788667902,\"1001059923754\":1478686417022,\"1024292968547\":1509788667903,\"1024292968548\":1509788667903,\"1024292968550\":1509788667902,\"1024292968554\":1509788667903,\"1024292968559\":1509788667902,\"1025098287186\":1509788624293,\"1022192573346\":1478686417301,\"1024292968531\":1509788667902,\"1021493833997\":1509788624398,\"1024292968535\":1509788667903,\"1022122450943\":1478686417013,\"1021723461551\":1509788624395,\"1024292968518\":1509788667902,\"1024292968523\":1509788667903,\"1024689352848\":1509788624566,\"1021680075845\":1478686804057,\"1021259342696\":1465470268199,\"1024680310544\":1509788625025,\"1020462677234\":1465470268258,\"1021500387986\":1478686804033,\"1024280518486\":1509788625082,\"1025429398765\":1509788625171,\"1025429398762\":1509788625171,\"1019723401458\":1478686804021,\"1022253606812\":1478686417014,\"4856349968\":1509788624157,\"1023146466511\":1509788625072,\"1023947590793\":1491634246532,\"1023452147228\":1509788625082,\"1021791486748\":1478686417052,\"1023821235225\":1491634246535,\"1021596467059\":1509788624419,\"1010863339696\":1478686804049,\"1025884356585\":1509788667467,\"1018486195945\":1480585069063,\"1022049964680\":1478686417059,\"1021680075908\":1478686804057,\"1021174671033\":1478686417098,\"1023076339808\":1509788624533,\"1022037250653\":1509788624462,\"327563043\":1444487341750,\"1021038993130\":1478686417232,\"1021646535352\":1509788624396,\"1021680075963\":1478686804057,\"1018468893985\":1509788624427,\"1022239450731\":1478686417283,\"1021051182916\":1478686417036,\"1025616310080\":1509788624929,\"1020918667074\":1478686417032,\"1020934000733\":1478686417228,\"1021680075985\":1478686804057,\"1016881276650\":1478686804063,\"1004588286486\":1444487341761,\"1020936097922\":1465470268183,\"1023989665416\":1509788625037,\"1018447922233\":1509788624933,\"1023889653896\":1491634246528,\"1023889653897\":1491634246528,\"1024292968579\":1509788667903,\"1024292968580\":1509788667903,\"1021445732080\":1478686417107,\"1021393300435\":1478686417043,\"1024689352744\":1509788624551,\"1023889653895\":1491634246528,\"1021502616487\":1509788625004,\"1021502616486\":1509788625004,\"1021402215860\":1478686417240,\"1021556620386\":1478686416978,\"1021556620388\":1478686416978,\"1024661829476\":1509788625026,\"1021402215855\":1478686417240,\"1021680076076\":1478686804057,\"1020781825695\":1478686417029,\"1020781825693\":1478686417029,\"1021051969200\":1478686804059,\"1022238664687\":1509788624931,\"1020867548591\":1478686417227,\"1020781825679\":1478686417029,\"1025514594490\":1509788624341,\"1022053372550\":1509788625066,\"1021984691892\":1478686417152,\"1019988826541\":1509788624375,\"1024910591191\":1509788624276,\"1023076340131\":1509788624816,\"1022944872946\":1509788625074,\"1021680076116\":1478686804057,\"1024672970487\":1509788624434,\"1025341300373\":1509788624506,\"1025341300374\":1509788624506,\"1025341300375\":1509788624506,\"1020462677465\":1465470268259,\"1025341300382\":1509788624506,\"1022812094943\":1509788624198,\"1025341300383\":1509788624506,\"1025341300376\":1509788624506,\"1025341300377\":1509788624506,\"1020934001131\":1478686417228,\"1025341300379\":1509788624506,\"1009744493799\":1491634246512,\"1022675007932\":1509788625058,\"1020294245161\":1465470268299,\"1019121659149\":1509788624314,\"1020111005234\":1509788625081,\"1019723401532\":1478686804021,\"1021818358867\":1478686417132,\"1014953044641\":1509788624467,\"1025909127604\":1509788667463,\"1019841762835\":1509788625080,\"1022486787500\":1478943089489,\"1022327923238\":1478686417200,\"1023878645438\":1491634246506,\"1005797247774\":1480585069074,\"1021596466894\":1509788624817,\"1010386737796\":1509788624277,\"1020219665625\":1509788624286,\"1019082466048\":1509788625079,\"1020219665627\":1509788624286,\"1020219665626\":1509788624286,\"1021551770675\":1478686417047,\"1021112392195\":1478686417095,\"1020219665629\":1509788624286,\"1020219665628\":1509788624286,\"1021068220781\":1478686417002,\"1022418889193\":1478686417293,\"1008901341747\":1478686804030,\"1011418552354\":1478686804025,\"1021551770669\":1478686417047,\"1023830804475\":1509788624434,\"1022474729152\":1478943089486,\"1022474729154\":1478943089486,\"1021845228608\":1480585069083,\"1022204847839\":1480585069085,\"1025712912308\":1509788624306,\"1021909321851\":1478686417259,\"1021989017018\":1478686417154,\"1021299322081\":1478686417041,\"1158570793\":1509788625081,\"1021299322095\":1478686417041,\"1022036988155\":1478686417267,\"1021845228561\":1480585069083,\"1021845228563\":1480585069083,\"1021845228562\":1480585069083,\"1023431962601\":1509788624516,\"1023431962606\":1509788624516,\"1022956145234\":1509788625018,\"1023431962604\":1509788624516,\"1021845228549\":1480585069083,\"1023431962610\":1509788624516,\"1021647059028\":1509788624396,\"1023431962608\":1509788624516,\"1021845228550\":1480585069083,\"1021845228546\":1480585069083,\"1021845228557\":1480585069083,\"1022238794904\":1509788624932,\"1025627581085\":1509788624186,\"1022898736947\":1509788624402,\"1021845228559\":1480585069083,\"1021845228558\":1480585069083,\"1025627581081\":1509788624200,\"1021845228555\":1480585069083,\"1025627581082\":1509788624204,\"1025627581083\":1509788624197,\"1021845228597\":1480585069083,\"1021437998334\":1478686417107,\"1021337987827\":1465470268219,\"1021845228599\":1480585069083,\"1021845228598\":1480585069083,\"1021337987829\":1465470268220,\"1007198840628\":1478686804032,\"1017108166358\":1478686804058,\"1021845228593\":1480585069083,\"1021337987828\":1465470268220,\"1021845228595\":1480585069083,\"1021337987830\":1465470268220,\"1021845228594\":1480585069083,\"1021845228605\":1480585069083,\"1021845228606\":1480585069083,\"1023485831680\":1509788624586,\"1021845228600\":1480585069083,\"1021845228603\":1480585069083,\"1021845228602\":1480585069083,\"1019674120139\":1509788625077,\"1021845228589\":1480585069083,\"1021987444134\":1478686417057,\"1021845228591\":1480585069083,\"1022474729134\":1478943089486,\"1020792049055\":1478686804057,\"1021496325003\":1478686417046,\"1008901341525\":1478686804034,\"1020462677553\":1465470268259,\"404373129\":1478686804029,\"1020987347418\":1478686417088,\"4980215419\":1509788624158,\"1025330682933\":1509788624408,\"1025330682930\":1509788624426,\"1025330682928\":1509788624429,\"1025330682929\":1509788624432,\"1009304000887\":1478686804024,\"1025513939748\":1509788624296,\"1020929413754\":1478686417033,\"1021727917463\":1478686417123,\"1017379079854\":1478686804016,\"1018604949437\":1478686804024,\"1021721363837\":1478686804047,\"1018630376741\":1465470268320,\"1021987575047\":1478686417057,\"1022498977722\":1509788624940,\"1021860957601\":1509788624992,\"1025630595660\":1509788624309,\"1158570993\":1509788625081,\"1008730176233\":1478686804034,\"1022390840533\":1478686417206,\"1021710091599\":1478686417250,\"1012104331770\":1478686417025,\"1018651610023\":1478686804018,\"1023076340713\":1509788624194,\"1022399753230\":1478686417207,\"1015449930307\":1478686804029,\"1023989665091\":1509788625071,\"1158570532\":1509788625081,\"1158570556\":1509788625081,\"1023946407982\":1491634246531,\"1023946407983\":1491634246531,\"1022242334130\":1478686417066,\"1026232342496\":1514456869770,\"1020954186289\":1478686417085,\"1021959525927\":1509788624898,\"1021959525926\":1509788624897,\"1009109750798\":1465470268239,\"1022483642221\":1478943089488,\"1025513939654\":1509788624295,\"1021959525928\":1509788624898,\"1021445338433\":1478686417107,\"1021959525931\":1509788624898,\"1024680440842\":1509788624590,\"1871333593\":1444487341709,\"1158570589\":1509788625081,\"1021632248255\":1509788624400,\"1024680440846\":1509788624426,\"1008002962970\":1478686804030,\"1021754393338\":1478686416972,\"1022377209308\":1478686804069,\"1021754393340\":1478686416972,\"1021959525893\":1509788624898,\"1021959525892\":1509788624898,\"1021959525895\":1509788624898,\"1021959525891\":1509788624898,\"1021354633968\":1465470268235,\"1022014837598\":1478686417266,\"1021959525890\":1509788624897,\"1021959525901\":1509788624898,\"1021959525900\":1509788624898,\"1021959525903\":1509788624898,\"1022898212601\":1509788624402,\"1021959525902\":1509788624898,\"1889425392\":1478950494928,\"1021959525899\":1509788624898,\"1021959525908\":1509788624898,\"1021959525911\":1509788624897,\"1021959525906\":1509788624898,\"1021354633966\":1465470268235,\"1021959525916\":1509788624898,\"1021354633965\":1465470268234,\"1021959525918\":1509788624898,\"1021959525912\":1509788624897,\"1021959525914\":1509788624898,\"1021622549017\":1478686417117,\"1025908210573\":1509788667459,\"1024300571250\":1509788624298,\"1021626219208\":1478686417008,\"1022215202744\":1478686417281,\"1022204847956\":1480585069085,\"1023173861015\":1509788625043,\"1022486001552\":1478943089489,\"1025908472728\":1509788667449,\"1022095580905\":1509788624190,\"1025330683188\":1509788624525,\"1025330683189\":1509788624526,\"1025330683184\":1509788624526,\"1022987995537\":1509788625050,\"1025288999096\":1509788624286,\"1025330683193\":1509788624525,\"1524268394\":1444487341730,\"1019841762324\":1509788625080,\"1025330683183\":1509788624526,\"1025330683181\":1509788624526,\"1025330683179\":1509788624526,\"1024452370767\":1509788667888,\"1025628367642\":1509788624828,\"1025628367643\":1509788624832,\"1025628367644\":1509788624823,\"1025628367645\":1509788624746,\"1017108166517\":1478686804058,\"1018245821199\":1509788625078,\"1652180407\":1444487341753,\"1009326106528\":1478686804024,\"1025616178271\":1509788624929,\"1022085094950\":1509788624281,\"1020462677868\":1465470268259,\"1022234207952\":1478686417065,\"1021590830265\":1478686417114,\"1021693707911\":1480585172193,\"1021613636571\":1478686417049,\"1025513939541\":1509788624295,\"1022354927126\":1509788624928,\"1022390971457\":1478686417291,\"1020294113627\":1465470268291,\"1022265926865\":1478686417197,\"1158570740\":1509788625081,\"447230633\":1509788625020,\"1019937968613\":1465470268276,\"1022037253827\":1509788624462,\"945557594\":1444487341756,\"1000922162047\":1478686417021,\"402665483\":1478686804029,\"1004588289733\":1444487341763,\"1020072995305\":1465470268257,\"1021040955953\":1478686416992,\"1017108166820\":1478686804058,\"1019963527781\":1509788624319,\"1019963527780\":1509788624319,\"1024066078700\":1509788667495,\"1010013569323\":1491634246521,\"1020565567198\":1478686417026,\"1024782676322\":1509788625020,\"1010013569320\":1491634246526,\"1020565567194\":1478686417026,\"1010013569325\":1491634246521,\"1010013569324\":1491634246526,\"1024341333799\":1509788624335,\"1020462674155\":1465470268258,\"1020989185801\":1478686417230,\"1022455195564\":1478686417297,\"1020989185800\":1478686417230,\"1022117466693\":1478686417183,\"1022117466689\":1478686417183,\"1019173692400\":1509788624317,\"4995154394\":1509788667394,\"1021820846534\":1478686417053,\"1021977221643\":1478686417056,\"1025560469683\":1509788625021,\"4994630092\":1509788667393,\"1022012742691\":1478686417159,\"1015591492970\":1478686804016,\"1023931993972\":1491634246530,\"1023931993973\":1491634246530,\"1023931993974\":1491634246530,\"1023931993970\":1491634246529,\"1024528917192\":1509788625027,\"1023931993976\":1491634246530,\"1017108166691\":1478686804058,\"1010002690210\":1491634246524,\"1010002690213\":1491634246524,\"1010002690215\":1491634246524,\"1025044676890\":1509788624569,\"1024165043376\":1509788624931,\"1025044676899\":1509788624569,\"1025715009836\":1509788624845,\"1021287915982\":1478686417101,\"302004902\":1491634246506,\"1021710093038\":1478686417250,\"1022059667398\":1509788625065,\"1021710093035\":1478686417250,\"1021710093034\":1478686417250,\"1021778120442\":1480585069060,\"1024274486238\":1509788624328,\"1025715009848\":1509788624844,\"1025715009849\":1509788624844,\"1025715009847\":1509788624844,\"1016670756380\":1478686804042,\"1025715009840\":1509788624844,\"1021240864414\":1465470268197,\"1022200960960\":1478686417190,\"1023186965149\":1509788625083,\"1020741189828\":1478686417224,\"1019761280681\":1509788625076,\"1025444997484\":1509788624369,\"1015449929135\":1478686804029,\"1024206856003\":1509788625020,\"1021718481695\":1478686417250,\"1022238272023\":1478686416978,\"1022097019316\":1478686417181,\"1022097019311\":1478686417181,\"1021240864417\":1465470268197,\"1022116287246\":1478686417183,\"1021320028800\":1478686417102,\"1022065696312\":1478686417175,\"1024557491589\":1509788625026,\"1022073557430\":1478686417176,\"1021369706396\":1478686804048,\"1021369706398\":1478686804048,\"1021369706393\":1478686804048,\"1021369706392\":1478686804048,\"1021369706395\":1478686804048,\"1021369706394\":1478686804048,\"1022396867180\":1478686417206,\"1021369706389\":1478686804048,\"1016845887817\":1509788624367,\"1021369706391\":1478686804048,\"1021369706390\":1478686804048,\"1017975549408\":1478686804023,\"1025615389374\":1509788625021,\"1021369706412\":1478686804048,\"1021369706408\":1478686804048,\"1021369706411\":1478686804048,\"1021369706410\":1478686804048,\"1021369706405\":1478686804048,\"1021369706404\":1478686804048,\"1021369706407\":1478686804048,\"1021369706406\":1478686804048,\"1021369706401\":1478686804048,\"1021328417323\":1478686804065,\"1021369706403\":1478686804048,\"1021369706402\":1478686804048,\"1008091045690\":1478686804028,\"1024420916714\":1509788625031,\"1652181818\":1444487341732,\"1019925647841\":1509788624931,\"1000922161713\":1478686417021,\"1019925647847\":1509788624930,\"1019925647845\":1509788624922,\"1019925647844\":1509788624942,\"1652181808\":1444487341722,\"1019925647859\":1509788624922,\"1020780774137\":1478686417076,\"1019925647856\":1509788624930,\"1573680280\":1491634246509,\"1022352695617\":1478686417203,\"1019925647860\":1509788624931,\"1022392410849\":1478686417206,\"1021697509479\":1509788624507,\"1025044676838\":1509788624569,\"1021908928259\":1478686417259,\"1021697509482\":1509788624507,\"1021697509481\":1509788624507,\"1021697509480\":1509788624507,\"1025044676850\":1509788624569,\"1025044676849\":1509788624569,\"1021212028256\":1509788624453,\"1019925647833\":1509788624922,\"1019925647839\":1509788624921,\"1019925647838\":1509788624922,\"1021472734694\":1478686417007,\"1017108166958\":1478686804058,\"1021737487627\":1478686417251,\"1008046873862\":1480585069065,\"1021737487630\":1478686417251,\"1018888590115\":1509788624302,\"1020662156651\":1478686804035,\"1021472734678\":1478686417007,\"1022087975010\":1478686417179,\"1020817212494\":1478686417030,\"1021587944037\":1509788625020,\"1025628235051\":1509788624523,\"1012635069657\":1478686804024,\"1025628235048\":1509788624537,\"1025628235049\":1509788624540,\"1023927406540\":1491634246529,\"1025628235046\":1509788624542,\"1021739716225\":1478686417253,\"1024586720455\":1509788624501,\"1021812589088\":1478686417132,\"1024586720453\":1509788624501,\"1024586720451\":1509788624501,\"1024586720448\":1509788624500,\"1019602292725\":1480585069067,\"1022517590070\":1509788624604,\"1000922161507\":1478686417021,\"1022043413626\":1478686417011,\"1024586720495\":1509788624491,\"4980212465\":1509788624158,\"1024586720485\":1509788624490,\"1001249846752\":1444487341749,\"1016301652625\":1480585069066,\"1024586720509\":1509788624490,\"1024341857630\":1509788624276,\"1024586720502\":1509788624491,\"1024586720503\":1509788624490,\"147989224\":1444487341753,\"1019760362659\":1509788624366,\"1024586720500\":1509788624490,\"1024586720499\":1509788624491,\"1024586720497\":1509788624491,\"1020859024732\":1509788624390,\"1020859024729\":1509788624390,\"1020859024728\":1509788624390,\"245245144\":1444487341734,\"1020859024731\":1509788624390,\"1020859024730\":1509788624390,\"1020859024726\":1509788624390,\"1019325611563\":1478686804058,\"1019330985569\":1509788624323,\"1019330985568\":1509788624323,\"1024586720415\":1509788624501,\"1024586720413\":1509788624500,\"1023544026432\":1509788667497,\"1022453359683\":1478686417215,\"1024586720431\":1509788624500,\"1024586720428\":1509788624500,\"1024586720429\":1509788624500,\"1025750530548\":1509788624306,\"1024586720427\":1509788624500,\"1024586720424\":1509788624500,\"1024586720425\":1509788624500,\"1024586720421\":1509788624500,\"1024586720418\":1509788624500,\"1024586720416\":1509788624501,\"1024586720442\":1509788624500,\"1024586720440\":1509788624500,\"1019574897139\":1509788624314,\"1021260393800\":1478686417237,\"1021574311942\":1509788624401,\"1024586720437\":1509788624500,\"1024586720432\":1509788624500,\"1024586720433\":1509788624500,\"1024586720334\":1509788624604,\"1024586720332\":1509788624604,\"1024586720331\":1509788624552,\"1024586720328\":1509788624604,\"1024586720326\":1509788624604,\"1019330985659\":1509788624323,\"1024586720325\":1509788624604,\"1022455194997\":1478686417216,\"1009269921609\":1509788624374,\"1024586720321\":1509788624604,\"1022438941795\":1480585069104,\"1022438941792\":1480585069104,\"1022438941793\":1480585069104,\"1022438941798\":1480585069104,\"1024586720346\":1509788624604,\"1022438941799\":1480585069104,\"1024586720347\":1509788624604,\"1022438941796\":1480585069104,\"1024528785620\":1509788624183,\"1022438941797\":1480585069104,\"1022438941802\":1480585069104,\"1024586720343\":1509788624604,\"1016670755898\":1478686804063,\"1019433742475\":1478686804070,\"1024586720340\":1509788624604,\"1021727394244\":1478686417051,\"1019433742474\":1478686804070,\"1022438941801\":1480585069104,\"1022438941806\":1480585069104,\"1024586720338\":1509788624604,\"1022438941807\":1480585069104,\"1022438941804\":1480585069104,\"1022438941805\":1480585069104,\"1016558421462\":1478686804063,\"1021964245916\":1478686417056,\"1019325611718\":1478686804058,\"1022438941779\":1480585069104,\"1025313772345\":1509788624930,\"1021554389805\":1478686417048,\"1007839907256\":1509788624389,\"1023994380447\":1491634246523,\"1022873177524\":1509788625052,\"1019325611714\":1478686804058,\"1022438941783\":1480585069104,\"1022438941780\":1480585069104,\"1024586720360\":1509788624604,\"1024586720358\":1509788624604,\"1022438941787\":1480585069104,\"1024586720359\":1509788624604,\"1022438941790\":1480585069104,\"1024586720355\":1509788624604,\"1024586720352\":1509788624604,\"1025561780834\":1509788624338,\"1022234209203\":1478686417065,\"4980212332\":1509788624158,\"1025609490755\":1509788625088,\"1024558409308\":1509788667888,\"1025609490750\":1509788625116,\"1025609490751\":1509788625125,\"1020699511887\":1478686804039,\"1021262228953\":1478686804039,\"1371962121\":1478686804054,\"1012297014182\":1478686417026,\"1019325611655\":1478686804058,\"1022027816852\":1478686417164,\"1022043413633\":1478686417011,\"1022733071789\":1509788624181,\"1019325611663\":1478686804058,\"1019325611662\":1478686804058,\"1023454240935\":1509788625071,\"1019325611661\":1478686804058,\"1019325611660\":1478686804058,\"1019596525238\":1509788624959,\"1019325611659\":1478686804058,\"1019325611658\":1478686804058,\"1019325611657\":1478686804058,\"1019325611656\":1478686804058,\"1019325611665\":1478686804058,\"1019325611664\":1478686804058,\"1024586720313\":1509788624604,\"1021901587456\":1509788624982,\"1021901587459\":1509788624981,\"1021901587458\":1509788624982,\"1022096757671\":1478686417181,\"1021901587460\":1509788624981,\"1022200960001\":1478686417190,\"1021354108573\":1465469681399,\"4980212701\":1509788624158,\"1021091681828\":1478686417094,\"1019325611887\":1478686804058,\"1019325611886\":1478686804058,\"1019325611885\":1478686804058,\"1019325611894\":1478686804058,\"1019330985760\":1509788624323,\"1019325611893\":1478686804058,\"1022678415262\":1509788624462,\"1019325611892\":1478686804058,\"1019325611891\":1478686804058,\"1019325611890\":1478686804058,\"1019325611889\":1478686804058,\"1019325611888\":1478686804058,\"1024529310019\":1509788625027,\"1022208650156\":1480585069087,\"1021354632894\":1465470268234,\"1019330985757\":1509788624323,\"1019330985756\":1509788624323,\"1019330985759\":1509788624323,\"1019330985758\":1509788624323,\"1021714942240\":1509788625083,\"1020294112749\":1465470268291,\"1000922161202\":1478686417021,\"1024265441619\":1509788625032,\"4968547178\":1509788624158,\"1021354632903\":1465470268234,\"1021354632902\":1465470268234,\"1021354632901\":1465470268234,\"1021354632898\":1465470268234,\"1024672970992\":1509788624544,\"4995154656\":1509788667393,\"818551724\":1444487341742,\"1021984168075\":1478686417263,\"1020616411879\":1478686417075,\"1371962039\":1478686804054,\"1025896675243\":1509788667465,\"1025896675241\":1509788667458,\"1017371872140\":1478686804018,\"1024662878524\":1509788624430,\"1019325611805\":1478686804058,\"1020862569392\":1478686417227,\"1001009068893\":1478686804029,\"1025896675237\":1509788667461,\"1022058748935\":1475218613699,\"1020605926316\":1478686417075,\"1025791688379\":1509788624466,\"1021069006643\":1478686417093,\"1024680311024\":1509788624590,\"1022097019644\":1509788624416,\"1025791688375\":1509788624511,\"1025791688369\":1509788624511,\"1022736217219\":1509788667874,\"1024586720527\":1509788624491,\"1024586720522\":1509788624490,\"1024586720523\":1509788624490,\"1024586720521\":1509788624490,\"1025791688411\":1509788624507,\"1022184838609\":1478686417187,\"1024586720514\":1509788624490,\"1024586720515\":1509788624490,\"1025791688401\":1509788624507,\"1024586720512\":1509788624490,\"1021778120090\":1480585069060,\"1016670756209\":1478686804063,\"1016670756211\":1478686804042,\"1025791688399\":1509788624441,\"1025791688392\":1509788624423,\"1021345064915\":1478686804023,\"1025791688395\":1509788624441,\"1025791688389\":1509788624466,\"1022439073066\":1478686417214,\"1024586720532\":1509788624491,\"1008688361907\":1478686804030,\"1024586720531\":1509788624491,\"1021655315541\":1509788624272,\"1211786213\":1444487341750,\"1540648971\":1478686417020,\"1025791688387\":1509788624466,\"1024586720529\":1509788624491,\"1025796799823\":1509788624200,\"1024663271861\":1509788625003,\"1025712912988\":1509788624308,\"1016928202420\":1478686804032,\"1025796799827\":1509788624185,\"1025796799825\":1509788624197,\"1024017449180\":1509788624610,\"1021519657909\":1478686417113,\"1022220185077\":1478686417192,\"1022280476751\":1478686417285,\"1018918342818\":1509788624366,\"1024223761537\":1509788625243,\"1023796343804\":1509788625038,\"1022215203894\":1509788624959,\"1021975780942\":1478686417150,\"1021757671770\":1478686417126,\"1025616177061\":1509788624929,\"4980212962\":1509788624158,\"1021185814471\":1478686417003,\"1022465549081\":1478686417299,\"1025900343495\":1509788667461,\"1022465549079\":1478686417299,\"1025900343497\":1509788667458,\"1021554390494\":1478686417048,\"1022388873112\":1478686417290,\"1021989543894\":1478686417155,\"1021989543892\":1478686417155,\"1021989543890\":1478686417155,\"1025834415358\":1509788667836,\"1024133324676\":1509788624416,\"1024133324672\":1509788624416,\"1024133324673\":1509788624416,\"1020890226085\":1478686417032,\"1024133324669\":1509788624416,\"1023196796716\":1509788624461,\"1025628233803\":1509788625088,\"1021345063062\":1478686804023,\"1024133324642\":1509788624416,\"1025628233794\":1509788625124,\"1025628233795\":1509788625107,\"1024133324655\":1509788624416,\"1025628233793\":1509788625115,\"1022370522695\":1478686804065,\"1021618352508\":1478686417117,\"1024133324626\":1509788624416,\"1009979231028\":1478686804030,\"1025557064629\":1509788624344,\"1024133324633\":1509788624416,\"1025100382434\":1509788624181,\"1024133324611\":1509788624416,\"1004605459215\":1478686417222,\"1024133324596\":1509788624416,\"1004605459213\":1478686417222,\"1021860956033\":1509788624992,\"1012695754096\":1478686804024,\"1024133324605\":1509788624416,\"1158572482\":1509788625081,\"1021346636064\":1478686417041,\"1004605459202\":1478686417222,\"1021920854808\":1509788625009,\"228204879\":1444487341718,\"1004605459220\":1478686417222,\"1004605459218\":1478686417222,\"1004605459217\":1478686417222,\"1004605459216\":1478686417222,\"1470659407\":1478686804024,\"1022435795432\":1478686417071,\"1022041315944\":1478686417268,\"1021710093993\":1478686417250,\"1021710093992\":1478686417250,\"1021482826012\":1509788624398,\"1022200959985\":1478686417190,\"1021618090288\":1478686417117,\"4994893127\":1509788667394,\"1015242313019\":1480585069068,\"1024586720206\":1509788624906,\"1024586720207\":1509788624906,\"1024586720205\":1509788624906,\"1019841765024\":1509788625079,\"1024586720200\":1509788624906,\"1022316391212\":1478686417200,\"1024586720223\":1509788624906,\"1018953864093\":1478686804045,\"1024653311972\":1509788624942,\"1018953864092\":1478686804045,\"1024653311973\":1509788624940,\"1018953864091\":1478686804045,\"1018953864090\":1478686804045,\"1018953864089\":1478686804045,\"1018953864088\":1478686804045,\"1024653311969\":1509788624281,\"1018953864087\":1478686804045,\"1024653311982\":1509788624930,\"1018953864086\":1478686804045,\"1018953864085\":1478686804045,\"1024653311980\":1509788624930,\"1018953864084\":1478686804045,\"1024586720213\":1509788624906,\"1024586720210\":1509788624906,\"1024586720211\":1509788624906,\"1024586720208\":1509788624906,\"1025834415503\":1509788667836,\"1001020210364\":1478686804054,\"1001020210367\":1478686804054,\"1001020210361\":1478686804054,\"1001020210357\":1478686804054,\"1022241419152\":1509788624932,\"1001020210353\":1478686804054,\"1001020210352\":1478686804054,\"1021700526043\":1478686804046,\"1001020210355\":1478686804054,\"1024586720224\":1509788624906,\"1024586720225\":1509788624906,\"1004605459199\":1478686417222,\"1021774973781\":1478686804047,\"1022021523687\":1509788624181,\"1004605459198\":1478686417222,\"1001020210350\":1478686804054,\"1022241419147\":1509788625019,\"1021981810436\":1509788624871,\"1022241419149\":1509788624930,\"1230267491\":1444487341720,\"1022241419151\":1509788624931,\"1001020210341\":1478686804054,\"1021636572060\":1478686417049,\"1021188828751\":1465470268190,\"1001020210338\":1478686804054,\"1024653311945\":1509788624930,\"1024653311934\":1509788624930,\"1021325010455\":1465470268213,\"1020931774951\":1478686417083,\"1024653311930\":1509788624169,\"1021325010454\":1465470268213,\"1024653311931\":1509788624930,\"1021325010453\":1465470268213,\"1722567679\":1444487341726,\"1024653311909\":1509788624971,\"1020581163737\":1480585069077,\"295582920\":1478686804032,\"1022687588695\":1509788624402,\"1024586720174\":1509788624906,\"1022503042146\":1509788624441,\"1024586720172\":1509788624906,\"1024586720173\":1509788624906,\"1024586720168\":1509788624906,\"1024586720167\":1509788624906,\"1004588288931\":1444487341762,\"1024586720164\":1509788624906,\"1023959516474\":1509788625071,\"1021688859872\":1478686417121,\"1024586720165\":1509788624906,\"1024586720162\":1509788624906,\"1024586720163\":1509788624906,\"1012592996001\":1478686804020,\"1018953864179\":1478686804045,\"1018953864178\":1478686804045,\"1024653311883\":1509788624428,\"1022108292873\":1478686417301,\"1021721366078\":1478686804047,\"1019710293520\":1509788624940,\"1024869577620\":1509788624940,\"1025796799268\":1509788624431,\"1025796799267\":1509788624425,\"1024869577628\":1509788624942,\"1025796799265\":1509788624428,\"1024653311844\":1509788624959,\"1022952735173\":1509788625051,\"1023175169201\":1509788625043,\"1024013911732\":1509788667884,\"1023855448013\":1491634246537,\"1019448555165\":1478686804021,\"1021516774010\":1478686417113,\"1015875939251\":1480585069075,\"1158572216\":1509788625081,\"1015242312824\":1480585069068,\"1021900144813\":1478686416980,\"1012366481558\":1478686804052,\"1017770728190\":1478686804022,\"1021805249877\":1478686417052,\"1022440252206\":1478686417071,\"1022097020077\":1509788624416,\"1024678870666\":1509788667888,\"1016873152333\":1509788624171,\"1020966902605\":1478686417086,\"1024179067706\":1509788624614,\"1023671433582\":1509788625104,\"1021920592377\":1509788624465,\"1025629414019\":1509788625083,\"1010044503455\":1480585069062,\"1025541335514\":1509788625083,\"4980213487\":1509788624156,\"1024782284575\":1509788624456,\"1020228183175\":1509788625076,\"1021301810426\":1478686417238,\"1023535243742\":1509788624388,\"1023535243743\":1509788624388,\"1023535243740\":1509788624388,\"1023535243741\":1509788624388,\"1022073558775\":1478686417176,\"1025787755279\":1509788624517,\"1022418887262\":1478686417293,\"1025732050129\":1509788624942,\"1022048262220\":1478686417171,\"1023535243746\":1509788624388,\"1023535243744\":1509788624388,\"4994893763\":1509788667393,\"1023535243745\":1509788624388,\"1021881533070\":1509788624433,\"1021579162802\":1478686417008,\"1021881533067\":1509788624508,\"1024586326128\":1509788624998,\"621022094\":1478686417019,\"1015242444618\":1480585069068,\"1019225465075\":1509788625077,\"1024586326116\":1509788624999,\"1021166152770\":1478686417097,\"1023979964300\":1509788624176,\"1023979964301\":1509788624176,\"1025532684539\":1509788624343,\"1023979964292\":1509788624178,\"1021680864924\":1478686417120,\"1022733070807\":1509788624181,\"1023979964294\":1509788624177,\"1024586326122\":1509788625002,\"1023979964295\":1509788624176,\"1024586326101\":1509788625001,\"1021354631986\":1465470268234,\"1024586326110\":1509788625005,\"1019127424760\":1465470268272,\"1020752988100\":1478686416996,\"1021606687445\":1509788624397,\"1024586326092\":1509788624999,\"1019127424749\":1465470268320,\"1024341856731\":1509788624273,\"1024005785040\":1491634246523,\"1024146693580\":1509788667505,\"1021016315768\":1478686417001,\"1024146693571\":1509788667505,\"1024146693575\":1509788667505,\"1024146693595\":1509788667505,\"1023349254760\":1509788624346,\"1022266584546\":1478686417197,\"1024146693586\":1509788667505,\"1023349254766\":1509788624434,\"1016400087079\":1480585069069,\"1024146693601\":1509788667505,\"1024146693602\":1509788667505,\"1018938266482\":1509788624314,\"1017639525899\":1478686804034,\"1024146693606\":1509788667505,\"1022370522134\":1478686804039,\"1022370522135\":1478686804039,\"1022054947110\":1478686417059,\"1022370522133\":1478686804039,\"1021833561112\":1509788625069,\"1022370522138\":1478686804039,\"1022370522139\":1478686804039,\"1022370522136\":1478686804039,\"1022370522137\":1478686804039,\"1019386296260\":1509788624312,\"1019386296257\":1509788624312,\"1024789231064\":1509788624568,\"1024789231057\":1509788625090,\"1024789231053\":1509788625090,\"1024789231054\":1509788625090,\"1024789231048\":1509788625090,\"1024789231049\":1509788625090,\"1024264918277\":1509788624420,\"1025676206303\":1509788624296,\"1023535243452\":1509788624439,\"1021166153211\":1478686417097,\"4980213750\":1509788624157,\"1002303418926\":1478950494935,\"1008037043224\":1478686804064,\"1020683520724\":1478686417224,\"1021212027730\":1509788624453,\"1025890907255\":1509788667403,\"1025890907252\":1509788667403,\"1025736768784\":1508316495865,\"1024412003340\":1509788624462,\"1525446075\":1478950494925,\"1021907091931\":1478686417140,\"1021659639845\":1478686417120,\"1024789231037\":1509788625090,\"1021606687496\":1509788624397,\"1024789231034\":1509788624458,\"1020719040536\":1478686416996,\"1021848503658\":1478686417135,\"1001503064507\":1444487341711,\"1021848503656\":1478686417135,\"1020294111708\":1465470268291,\"1025508174490\":1509788624308,\"1022416003883\":1480585069075,\"1019386296248\":1509788624317,\"1021409165096\":1478686417043,\"1021894378188\":1478686417138,\"1021668806484\":1509788624400,\"1023520956902\":1509788625071,\"1011307272675\":1509788625018,\"1019724710683\":1478686804053,\"1022460829739\":1478686417016,\"1012503974580\":1478686804017,\"4995155470\":1509788667393,\"1021692530372\":1478686417050,\"1018953863480\":1478686804050,\"1025508436548\":1509788624297,\"1623084803\":1478686804068,\"1021692530366\":1478686417050,\"1022754951117\":1509788624183,\"1024226252697\":1509788667467,\"1022220185128\":1478686417192,\"1022220185118\":1478686417192,\"1024797095330\":1509788625020,\"1021688335939\":1478686804039,\"1021655314554\":1509788624272,\"1019186799454\":1509788624316,\"1011593685179\":1478686417220,\"1025296730268\":1509788624199,\"1023842865444\":1509788624357,\"1025296730269\":1509788624209,\"1023842865445\":1509788624357,\"1025296730271\":1509788624209,\"1023842865440\":1509788624357,\"1025296730266\":1509788624197,\"1025538586164\":1509788624311,\"1023842865442\":1509788624357,\"1023842865443\":1509788624357,\"1021575096955\":1478686804067,\"1021575096954\":1478686804067,\"1004588291781\":1444487341762,\"1025296730256\":1509788624228,\"1014142480248\":1465470268245,\"1010000468061\":1478686804064,\"1025296730259\":1509788624269,\"1024256658058\":1509788625032,\"1024070672289\":1491634246533,\"1025296730255\":1509788624228,\"1025296730248\":1509788624269,\"1025296730249\":1509788624271,\"1021757412743\":1509788624194,\"1025296730251\":1509788624271,\"1021847591471\":1509788624536,\"1021672870074\":1509788624396,\"1022364498282\":1480585069075,\"1024781363583\":1509788624231,\"1022319146554\":1478686416978,\"1024136201092\":1509788625085,\"1023761607730\":1509788624565,\"1021873151165\":1478686804069,\"1023842865431\":1509788624357,\"1025296730281\":1509788624213,\"1021575096901\":1478686804067,\"1021575096900\":1478686804067,\"1023842865436\":1509788624357,\"1023842865437\":1509788624357,\"1023842865438\":1509788624357,\"1022318097981\":1509788624290,\"1023842865439\":1509788624357,\"1025296730272\":1509788624209,\"1023842865432\":1509788624357,\"1023842865433\":1509788624357,\"1025296730274\":1509788624209,\"1023842865434\":1509788624357,\"1025296730275\":1509788624209,\"1023842865435\":1509788624357,\"1024848866670\":1509788624931,\"1021418988031\":1509788624817,\"1025296730334\":1509788625244,\"1022318097986\":1509788624290,\"1021078572462\":1465470268323,\"1022318097987\":1509788624290,\"1023106221380\":1509788624462,\"1024365080652\":1509788624919,\"1022318097996\":1509788624311,\"1024848866661\":1509788624941,\"1021778122264\":1480585069060,\"1024848866657\":1509788625019,\"1019417881269\":1509788624316,\"1020821806339\":1478686417078,\"1614303333\":1478686417017,\"1025296730365\":1509788625133,\"1020780387272\":1478686417029,\"1020780387275\":1478686417029,\"1016355394308\":1465470268253,\"1025296730359\":1509788625144,\"1025910828425\":1509788667579,\"1001098978979\":1478686417022,\"1296071980\":1478686804049,\"1023407847261\":1509788624367,\"1025441722761\":1509788624294,\"1025296730351\":1509788625166,\"1021848246911\":1478686417009,\"1012108531395\":1478686416993,\"1025676214150\":1509788624296,\"1024848866644\":1509788624946,\"1025296730342\":1509788625246,\"1021575096847\":1478686804067,\"1021575096846\":1478686804067,\"1025296730337\":1509788625246,\"1022204850246\":1480585069085,\"1025284802513\":1509788624290,\"1025284802516\":1509788624290,\"1025284802517\":1509788624290,\"1022095575502\":1509788624943,\"1021379149460\":1478686804033,\"4904588510\":1509788624158,\"1025052940681\":1509788667843,\"1021281499516\":1478686417237,\"1025702420702\":1509788624511,\"1025702420703\":1509788624466,\"1021345070230\":1478686804023,\"1025702420699\":1509788624511,\"1021873150999\":1478686804069,\"1017374363761\":1465470268269,\"1025296730173\":1509788624865,\"1017374363763\":1465470268269,\"1021964632479\":1478686417148,\"1025296730168\":1509788624917,\"1025062902473\":1509788624292,\"1025702420713\":1509788624507,\"1025702420710\":1509788624441,\"1025296730167\":1509788624917,\"1025702420706\":1509788624466,\"1023878648748\":1491634246506,\"1025296730163\":1509788624916,\"1017374363753\":1465470268269,\"1025702420727\":1509788624455,\"1022065690507\":1478686417175,\"1024781363605\":1509788624231,\"1022067787730\":1478686417060,\"1024781363600\":1509788624231,\"1025296730200\":1509788624868,\"1851022993\":1444487341729,\"1024781363601\":1509788624231,\"1021575097019\":1478686804067,\"1025296730196\":1509788624840,\"1025296730197\":1509788624840,\"1024781363614\":1509788624231,\"1025296730198\":1509788624840,\"1851023000\":1444487341719,\"1023861478084\":1491634246533,\"1023628305698\":1509788624928,\"1021575097020\":1478686804067,\"1021152784718\":1478686417037,\"1021091941870\":1478686417094,\"1021091941869\":1478686417094,\"1025296730190\":1509788624840,\"1851022983\":1444487341752,\"1024781363591\":1509788624231,\"1024781363586\":1509788624231,\"1025296730186\":1509788624821,\"1024136201086\":1509788625085,\"1024781363587\":1509788624231,\"1025296730187\":1509788624825,\"1024136201073\":1509788625086,\"1851022990\":1444487341733,\"1024781363598\":1509788624231,\"1018918341747\":1509788624366,\"1022382717687\":1478686417015,\"1022406179869\":1478686417207,\"1025296730176\":1509788624865,\"1024781363595\":1509788624231,\"1024781363637\":1509788624231,\"1024781363638\":1509788624231,\"1001098978858\":1478686417022,\"1024781363633\":1509788624231,\"1024781363635\":1509788624231,\"1024781363644\":1509788624231,\"1022827304261\":1509788624587,\"1022030038458\":1478686417165,\"1022433574351\":1478686417302,\"1020261481555\":1478686804049,\"1024781363640\":1509788624231,\"1020978824980\":1478686416982,\"1024781363642\":1509788624231,\"1022238667308\":1509788624947,\"1022238667309\":1509788624932,\"1024781363620\":1509788624231,\"1024781363621\":1509788624231,\"1851023008\":1444487341727,\"1022217302268\":1478686417192,\"1021809973382\":1509788624394,\"1024781363618\":1509788624231,\"1024781363619\":1509788624231,\"1024781363628\":1509788624231,\"1024960140401\":1509788624169,\"1024781363626\":1509788624231,\"1025611725534\":1509788624521,\"1025611725532\":1509788624521,\"1025611725533\":1509788624521,\"1016355394165\":1465470268253,\"1021140595060\":1478686417096,\"1024136200841\":1509788625085,\"1024136200843\":1509788625085,\"1020832554900\":1478686417226,\"1018740473953\":1509788624334,\"1012105648126\":1478686416993,\"1021847591702\":1509788624821,\"1024136200836\":1509788625085,\"1024136200838\":1509788625084,\"1021943005473\":1478686417143,\"1020293988331\":1465470268279,\"1021925842476\":1478686804046,\"1019782520435\":1509788624391,\"1019782520434\":1509788624391,\"1025453781113\":1509788624942,\"1019782520436\":1509788624391,\"1025453781119\":1509788624971,\"1025453781060\":1509788624971,\"1025453781063\":1509788624971,\"1025453781065\":1509788624942,\"1025453781067\":1509788624933,\"1018559731559\":1478686804015,\"1014775444695\":1478686804024,\"1025453781072\":1509788624971,\"1021943005456\":1478686417143,\"1025453781075\":1509788624931,\"1021372071711\":1478686417006,\"1020879470771\":1478686417227,\"1010002696521\":1491634246524,\"1010002696524\":1491634246524,\"1021256857282\":1478686417040,\"1021315447363\":1478686417005,\"1025296730380\":1509788625133,\"1019596527055\":1509788624940,\"1019782520504\":1509788624391,\"1025296730377\":1509788625133,\"1021225792699\":1478686417235,\"1025296730369\":1509788625133,\"1023320159215\":1509788624289,\"1019759583009\":1509788624283,\"1017168978613\":1478686804022,\"1021315447392\":1478686417005,\"1021873151292\":1478686804069,\"1025296730410\":1509788625140,\"1006370971954\":1478686804032,\"463481440\":1491634246534,\"1008558728161\":1478686804034,\"1025296730463\":1509788624610,\"1008825717660\":1480585069066,\"1025438970311\":1509788624293,\"1025296730458\":1509788624565,\"1020136699335\":1480585069064,\"1025296730452\":1509788624613,\"143800667\":1444487341747,\"1025296730453\":1509788624613,\"1022491893857\":1478943089254,\"1025296730455\":1509788624565,\"1021235099515\":1478686417099,\"1022081288682\":1478686417301,\"1025296730450\":1509788624611,\"1025883826756\":1509788667406,\"1018897893889\":1509788624314,\"1019159673769\":1509788624315,\"1025296730482\":1509788624550,\"1024689087781\":1509788624551,\"1021778122662\":1480585069060,\"1025296730479\":1509788624546,\"1025296730472\":1509788624546,\"1025296730473\":1509788624546,\"1022095575219\":1509788624944,\"1025296730471\":1509788624546,\"1021950738451\":1478686417261,\"1012164630688\":1478686416994,\"1025296730467\":1509788624538,\"1020581293453\":1478686417027,\"1001544745554\":1478686804029,\"1022255706585\":1478686417066,\"1022369741594\":1478686417069,\"1020394645153\":1509788624386,\"1023487540834\":1509788624318,\"1022994816449\":1509788625223,\"1023487540832\":1509788624318,\"1023487540833\":1509788624318,\"1023487540838\":1509788624318,\"1023487540839\":1509788624318,\"1023487540836\":1509788624318,\"1023487540837\":1509788624318,\"1020751551357\":1478686417028,\"1023487540843\":1509788624318,\"1023487540840\":1509788624318,\"1023487540841\":1509788624318,\"1023487540846\":1509788624318,\"1023487540844\":1509788624318,\"1021714550813\":1509788624396,\"1025073650153\":1509788625007,\"1023487540823\":1509788624372,\"1023487540826\":1509788624318,\"1020949333910\":1478686417033,\"1023487540827\":1509788624318,\"1023487540824\":1509788624372,\"1023487540825\":1509788624318,\"1019838611935\":1478686804015,\"1011618462703\":1478686804068,\"1023487540830\":1509788624318,\"1011618462702\":1478686804068,\"1023487540831\":1509788624318,\"1021225662217\":1478686417039,\"1023487540828\":1509788624318,\"1011618462700\":1478686804068,\"1023487540829\":1509788624318,\"946735701\":1444487341744,\"1024305024901\":1509788624277,\"946735663\":1444487341748,\"1021618352030\":1478686417117,\"1744590269\":1491634246506,\"1024781363989\":1509788624567,\"1022994816402\":1509788625223,\"1024781363991\":1509788624567,\"1022994816403\":1509788625223,\"1022994816404\":1509788625223,\"1024781363985\":1509788624567,\"1021235754190\":1509788624942,\"1022994816408\":1509788625223,\"1022994816409\":1509788625223,\"1022994816411\":1509788625223,\"1024781363992\":1509788624567,\"1024781363993\":1509788624567,\"1022994816414\":1509788625223,\"1024926716122\":1509788624530,\"1022994816388\":1509788625223,\"1024926716125\":1509788624530,\"1022994816392\":1509788625224,\"1022994816395\":1509788625224,\"1022994816396\":1509788625223,\"1022994816397\":1509788625223,\"1022994816399\":1509788625223,\"1024926716137\":1509788624415,\"1024926716141\":1509788624529,\"1022994816440\":1509788625223,\"1022994816441\":1509788625223,\"1024926716132\":1509788624530,\"1025100389951\":1509788624181,\"1022994816417\":1509788625223,\"1024926716159\":1509788624416,\"1024781364001\":1509788624567,\"1024926716146\":1509788624530,\"1022994816426\":1509788625223,\"1022994816428\":1509788625223,\"1024781364009\":1509788624567,\"1022994816430\":1509788625223,\"1000457297265\":1491634246516,\"1024381858683\":1509788624301,\"1024926716149\":1509788624529,\"1021999497600\":1478686417265,\"1458594935\":1491634246509,\"1022074997260\":1478686417061,\"1013892391634\":1478686804028,\"1022074997258\":1478686417061,\"1022074997257\":1478686417061,\"1022425055035\":1478686417210,\"1023821501173\":1491634246536,\"1022077749977\":1478686416973,\"1021817314112\":1478686417053,\"1003127618909\":1478686804054,\"1020172088509\":1465470268312,\"1019448420743\":1509788624316,\"1002627941144\":1491634246510,\"4894494982\":1509788624158,\"1001375798512\":1478686417024,\"1022111828147\":1509788624439,\"1025100390035\":1509788624173,\"1025909518035\":1509788667464,\"1000216253350\":1444487341751,\"1016316597013\":1480585069073,\"1025773725407\":1509788624303,\"1022460968272\":1478686417298,\"1010943152848\":1509788625017,\"1022377080919\":1478686417204,\"1021817314110\":1478686417053,\"1022111828140\":1509788624439,\"1015868208197\":1465470268264,\"1022095575958\":1509788624943,\"1665159584\":1478686804054,\"1022094003072\":1478686417274,\"1019634275569\":1509788624940,\"1024479769647\":1509788625070,\"1020719043702\":1478686416996,\"1024689088475\":1509788624847,\"1025322682881\":1509788624305,\"1022065689634\":1478686417175,\"1024781363789\":1509788624467,\"1023627912968\":1509788625084,\"1022022436538\":1478686417301,\"1021570771347\":1478686804050,\"1024781363825\":1509788624457,\"1016606130615\":1465470268237,\"139869052\":1444487341724,\"1020842253617\":1478686416998,\"1000526104539\":1444487341712,\"1021200103324\":1465470268194,\"1021939729281\":1478686417055,\"1211792128\":1444487341724,\"1000526104532\":1444487341713,\"1000526104533\":1444487341714,\"1024781363817\":1509788624456,\"1000526104535\":1444487341715,\"1025100390163\":1509788624273,\"1019263476598\":1509788624315,\"1021350575746\":1478686417005,\"1022193749189\":1478686417189,\"1024781363714\":1509788624250,\"1002627941110\":1491634246514,\"1024782412403\":1509788625021,\"1023623194431\":1509788624279,\"1020272099177\":1465470268247,\"1020777764996\":1478686417076,\"1020777764995\":1478686417076,\"1021778122031\":1480585069060,\"1022961917660\":1509788624426,\"1021665275025\":1478686417120,\"1021665275029\":1478686417120,\"1021655706637\":1509788624996,\"1024136200228\":1509788625086,\"1017048530867\":1478686804049,\"1024926716186\":1509788624530,\"1024136200251\":1509788625085,\"1021575096807\":1478686804067,\"1024926716190\":1509788624415,\"1021575096806\":1478686804067,\"1012536609942\":1478686417026,\"1021061007543\":1478686804045,\"1021061007542\":1478686804045,\"1015589389973\":1478686804065,\"1022074604335\":1478686417176,\"1021061007549\":1478686804045,\"1021061007548\":1478686804045,\"1021061007547\":1478686804045,\"1021061007546\":1478686804045,\"1024781363961\":1509788624567,\"1021061007545\":1478686804045,\"1021061007544\":1478686804045,\"1023878647990\":1491634246506,\"1024926716210\":1509788624529,\"1024926716208\":1509788624530,\"1024781363944\":1509788624567,\"1024926716212\":1509788624530,\"1024313151106\":1509788624926,\"1024781363947\":1509788624567,\"1021575096754\":1478686804067,\"1021575096753\":1478686804067,\"1024781363862\":1509788624457,\"1021575096752\":1478686804067,\"1024156387154\":1509788667500,\"1021035448670\":1478686417035,\"1024781363868\":1509788624456,\"1024781363871\":1509788624457,\"1024156387160\":1509788667500,\"1021939729273\":1478686417055,\"1019838611517\":1478686804015,\"1024781363866\":1509788624456,\"1024156387141\":1509788667500,\"1024156387142\":1509788667500,\"1024781363847\":1509788624457,\"1024781363840\":1509788624457,\"1024781363842\":1509788624457,\"1024156387138\":1509788667500,\"1024156387139\":1509788667500,\"1024156387148\":1509788667500,\"1024781363853\":1509788624456,\"1067322436\":1444487341724,\"1024781363854\":1509788624457,\"1024781363848\":1509788624457,\"1024781363849\":1509788624457,\"1024156387145\":1509788667500,\"1023409026270\":1491730251594,\"1025736761762\":1508316495865,\"1024781363893\":1509788624456,\"1021757412978\":1509788624533,\"1024156387191\":1509788667500,\"1003806295177\":1478686417220,\"1024926716271\":1509788624415,\"1003806295179\":1478686417220,\"1003806295178\":1478686417220,\"1024781363891\":1509788624456,\"1024926716258\":1509788624416,\"1003806295174\":1478686417220,\"1024781363896\":1509788624457,\"1024095962083\":1509788624517,\"1024781363898\":1509788624457,\"1003806295170\":1478686417220,\"1024926716283\":1509788624416,\"1024156387173\":1509788667500,\"1024156387175\":1509788667500,\"1024156387168\":1509788667500,\"1024781363874\":1509788624457,\"1024156387171\":1509788667500,\"1024781363884\":1509788624456,\"1724929322\":1444487341746,\"1003806295191\":1478686417220,\"1024781363887\":1509788624456,\"1024156387183\":1509788667500,\"1010002697165\":1491634246524,\"1024781363880\":1509788624457,\"1024781363881\":1509788624457,\"1024156387177\":1509788667500,\"1004588291383\":1444487341762,\"1024781363882\":1509788624456,\"1003806295186\":1478686417220,\"1021020769657\":1509788624931,\"1021020769656\":1509788624971,\"1021873150093\":1478686804048,\"1021873150092\":1478686804048,\"1014775443900\":1478686804024,\"1021873150091\":1478686804048,\"1021873150090\":1478686804048,\"1021873150089\":1478686804048,\"1021873150088\":1478686804048,\"1021020769662\":1509788624930,\"1021873150087\":1478686804048,\"1021020769649\":1509788624946,\"1021873150086\":1478686804048,\"1021873150085\":1478686804048,\"1021020769651\":1509788624933,\"1021873150084\":1478686804048,\"1022869771055\":1509788625100,\"1021873150083\":1478686804048,\"1021873150082\":1478686804048,\"1021873150081\":1478686804048,\"1021020769655\":1509788624931,\"1021873150080\":1478686804048,\"1021020769654\":1509788624971,\"1021020769643\":1509788624933,\"1021020769642\":1509788624942,\"1021020769645\":1509788624933,\"1025747380149\":1509788624290,\"1020833995400\":1478686416980,\"1022438816469\":1480585069100,\"1016119337382\":1478686804040,\"1018559730208\":1478686804015,\"1020293986949\":1465470268278,\"1021981672988\":1478686417151,\"1021570772638\":1478686804040,\"1022071852263\":1478686417060,\"1021655706553\":1509788624990,\"1021140595820\":1478686417096,\"1021873150159\":1478686804048,\"1021873150158\":1478686804048,\"1021873150157\":1478686804048,\"1021873150156\":1478686804048,\"1021873150155\":1478686804048,\"1021140595739\":1478686417096,\"1021873150169\":1478686804048,\"1021873150168\":1478686804048,\"1021873150167\":1478686804048,\"1021873150166\":1478686804048,\"1021873150165\":1478686804048,\"1021873150164\":1478686804048,\"1021873150163\":1478686804048,\"1021873150162\":1478686804048,\"1021873150161\":1478686804048,\"1021873150160\":1478686804048,\"557061462\":1444487341737,\"1022733069089\":1509788624181,\"1022097018147\":1478686417181,\"1022097018146\":1478686417181,\"1022097018145\":1478686417181,\"1010025373353\":1491634246527,\"1022097018153\":1478686417181,\"1020815776049\":1478686417078,\"1016119337223\":1478686804040,\"1023797652337\":1509788625082,\"1024401389425\":1509788624228,\"197148503\":1444487341706,\"1017590241642\":1478686804022,\"1022379572963\":1478686417204,\"1020805028092\":1478686417077,\"1016400089711\":1480585069069,\"1025907288201\":1509788667464,\"1025907288203\":1509788667458,\"1025907288204\":1509788667460,\"1019037120268\":1509788624314,\"1011030577737\":1478686804030,\"1010077800821\":1491634246535,\"1021428032992\":1478686804026,\"1020622706144\":1509788624354,\"1019759581789\":1509788624280,\"1021987309314\":1509788624441,\"1084519493\":1444487341728,\"1025629288523\":1509788624746,\"1025629288520\":1509788624822,\"1025629288521\":1509788624832,\"942804190\":1478686804024,\"1025629288519\":1509788624828,\"1025406962436\":1509788624456,\"1023626731753\":1509788624552,\"1001375797951\":1478686417024,\"1021873150079\":1478686804047,\"1021020769673\":1509788624933,\"1010025373228\":1491634246522,\"1020795459644\":1478686416987,\"1010025373224\":1491634246527,\"1020815776078\":1478686417078,\"1025406962414\":1509788624511,\"1025406962412\":1509788624511,\"1022428985445\":1478686417016,\"1022193748610\":1478686417189,\"1025406962424\":1509788624507,\"1022219269375\":1478686417192,\"1025406962416\":1509788624466,\"1025406962422\":1509788624441,\"1025406962423\":1509788624441,\"1025406962420\":1509788624466,\"1025406962421\":1509788624423,\"1706315922\":1491634246517,\"1021935142358\":1478686417055,\"1022428985438\":1478686417016,\"1010023538633\":1491634246516,\"1022428985431\":1478686417016,\"1022421514434\":1478686417210,\"1022428985390\":1478686417016,\"1022428985391\":1478686417016,\"1021778121503\":1480585069060,\"1023305872492\":1509788625041,\"557061243\":1444487341736,\"1016355395132\":1465470268254,\"1022360698056\":1478686417203,\"1004769297750\":1478686804064,\"1022994815621\":1509788624198,\"1022428985405\":1478686417016,\"1022428985399\":1478686417016,\"1021143741797\":1478686417002,\"1022021910735\":1478686417163,\"1022303024004\":1478686417287,\"1022181559106\":1478686417187,\"1025890905694\":1509788667403,\"1022428985374\":1478686417016,\"1008172306012\":1478686804032,\"1000060022184\":1478686804046,\"1022400151128\":1478686417292,\"1019759582202\":1509788624281,\"1021992552173\":1478686417011,\"1022341823806\":1478686417202,\"1021570772796\":1478686804040,\"1010025373521\":1491634246527,\"1010025373519\":1491634246527,\"1019527583209\":1509788624312,\"1021911686097\":1509788624465,\"1019290740482\":1509788625018,\"1010025373509\":1491634246522,\"1019290740480\":1509788625018,\"1010025373507\":1491634246527,\"1022044193755\":1509788624399,\"748296496\":1478950494916,\"1021631064234\":1478686417119,\"1001375798151\":1478686417024,\"1024085214495\":1509788667549,\"1021656754762\":1478686416974,\"1022038033152\":1478686417301,\"1022478263623\":1478943089536,\"1024554612998\":1509788624927,\"1025609629206\":1509788624537,\"1025609629204\":1509788624540,\"1025609629205\":1509788624542,\"946736521\":1444487341744,\"1025712907335\":1509788624306,\"1025609629209\":1509788624523,\"1022454151701\":1478686417216,\"1020772785185\":1478686417076,\"1021778120784\":1480585069060,\"1016877741120\":1478686804019,\"1021920467414\":1478686417054,\"1012105646286\":1478686416993,\"1024596555844\":1509788624932,\"1016681103400\":1478686804018,\"1024689087205\":1509788624214,\"1021553471372\":1478686417048,\"1016355394896\":1465470268253,\"1015159089891\":1478686804029,\"1020772785183\":1478686417076,\"1020744605619\":1509788624389,\"1001375797259\":1478686417024,\"1006370973377\":1478686804032,\"1015212173823\":1480585069074,\"1021847592045\":1509788624197,\"1003806294276\":1478686417220,\"1018797753235\":1478686804038,\"1018797753237\":1478686804038,\"1003806294272\":1478686417220,\"1018797753236\":1478686804038,\"1018797753238\":1478686804038,\"1019759581418\":1509788624311,\"1021873150719\":1478686804069,\"1022258460101\":1478686417067,\"1022463064346\":1480585069117,\"1015242053452\":1480585069068,\"1025186367413\":1509788624515,\"1025186367415\":1509788624515,\"1025186367417\":1509788624515,\"1025186367418\":1509788624515,\"1025529409585\":1509788624340,\"1025186367423\":1509788624514,\"1022994815296\":1509788624599,\"1025773724313\":1509788624289,\"1022994815303\":1509788624599,\"1008105324976\":1509788624390,\"1022994815305\":1509788624598,\"1022994815307\":1509788624599,\"814876174\":1444487341726,\"1025186367405\":1509788624514,\"1025186367407\":1509788624515,\"1018918341133\":1509788624366,\"1018797753169\":1478686804057,\"1018797753168\":1478686804057,\"1018797753170\":1478686804057,\"1004588290148\":1444487341762,\"1021945366259\":1478686417010,\"1024134497654\":1509788624430,\"268838579\":1509788625080,\"1211793037\":1444487341729,\"1024134497653\":1509788624430,\"1024134497658\":1509788624430,\"1024134497657\":1509788624430,\"1022204851832\":1480585069085,\"1024134497660\":1509788624430,\"1022994815248\":1509788624599,\"1019950157803\":1465470268276,\"1021262361045\":1478686417101,\"1021821116263\":1480585069080,\"1022994815253\":1509788624599,\"1019739659039\":1509788624173,\"1021830815738\":1478686417133,\"1021830815743\":1478686417133,\"1022994815263\":1509788624599,\"1023472074126\":1509788625039,\"1023320159389\":1509788624289,\"1022994815236\":1509788624599,\"1022240896118\":1478686417283,\"1022994815241\":1509788624599,\"1021575097513\":1478686804050,\"1020622706669\":1509788625080,\"1022994815245\":1509788624599,\"1309440210\":1491634246534,\"1022994815246\":1509788624599,\"1021570772048\":1478686804050,\"1020786417040\":1509788624372,\"1025186367441\":1509788624515,\"1025186367442\":1509788624515,\"1021570772050\":1478686804050,\"1022994815286\":1509788624599,\"1084520012\":1444487341728,\"1019759581295\":1509788624311,\"1024054155367\":1509788624957,\"1022369742846\":1478686417015,\"1022994815292\":1509788624599,\"1025186367424\":1509788624514,\"1025186367425\":1509788624514,\"1025186367427\":1509788624515,\"1025186367429\":1509788624515,\"1025186367430\":1509788624514,\"1022994815270\":1509788624599,\"1025186367431\":1509788624515,\"1309440245\":1491634246534,\"1025186367433\":1509788624514,\"1211793094\":1444487341736,\"1018797753093\":1478686804057,\"1211793092\":1444487341730,\"1018797753094\":1478686804057,\"1022994815279\":1509788624599,\"1021778121044\":1480585069060,\"1018797753085\":1478686804057,\"1023126536435\":1509788625079,\"1018797753086\":1478686804057,\"1010025373136\":1491634246522,\"1010025373133\":1491634246521,\"1024653305316\":1509788624935,\"1026223429714\":1514456869766,\"1022152592123\":1478686417185,\"1021873150865\":1478686804069,\"1025710941934\":1509788624178,\"1022994815223\":1509788624599,\"1309440293\":1491634246534,\"1022994815225\":1509788624599,\"1022994815228\":1509788624599,\"1022994815230\":1509788624599,\"1309440318\":1491634246534,\"1023463161086\":1509788625039,\"1022994815213\":1509788624598,\"1022329892941\":1478686417068,\"1023320159497\":1509788624289,\"1025201571182\":1509788624933,\"1022956936024\":1509788624562,\"1022956936030\":1509788624562,\"1022956936031\":1509788624562,\"1022956936029\":1509788624562,\"1016355394622\":1465470268253,\"1021909457208\":1478686417140,\"1020842121565\":1478686417078,\"1022272746430\":1478686417067,\"384311684\":1491634246524,\"1022994815139\":1509788624538,\"1022956936033\":1509788624562,\"1025765204942\":1509788625083,\"1019675565583\":1464448510786,\"1003806294244\":1478686417220,\"1023600649255\":1509788624318,\"1016594990770\":1480585069075,\"1023600649257\":1509788624318,\"1003806294259\":1478686417220,\"1021774844405\":1509788624395,\"1022859546732\":1509788624973,\"1019145256594\":1509788624318,\"1019145256593\":1509788624318,\"1003806294234\":1478686417220,\"1019145256592\":1509788624318,\"1020220063374\":1478686804039,\"1022956936146\":1509788625155,\"1022030168721\":1478686417011,\"1020768722337\":1478686417225,\"1023394344994\":1509788625039,\"1022956936144\":1509788625155,\"1022956936145\":1509788625155,\"1021900151511\":1478686417139,\"1022956936153\":1509788625155,\"1010011479641\":1491634246525,\"1010011479646\":1491634246525,\"1010011479645\":1491634246525,\"1010011479644\":1491634246525,\"1010011479639\":1491634246525,\"1022956936142\":1509788625155,\"1025539895804\":1509788624496,\"1025539895805\":1509788624496,\"1025539895802\":1509788624495,\"1025539895803\":1509788624495,\"1025539895800\":1509788624495,\"1025539895801\":1509788624495,\"1025539895798\":1509788624495,\"1025539895796\":1509788624495,\"1025539895794\":1509788624495,\"1025539895795\":1509788624495,\"1021611011009\":1478686416985,\"1022170286363\":1509788624924,\"1025539895790\":1509788624495,\"1025539895791\":1509788624495,\"1025539895788\":1509788624495,\"1025539895789\":1509788624495,\"1025539895786\":1509788624495,\"1025539895787\":1509788624495,\"1025539895784\":1509788624495,\"1025539895785\":1509788624495,\"1025539895783\":1509788624495,\"1020622706378\":1509788625080,\"1022030037678\":1478686417165,\"1023196925019\":1509788625043,\"1025637545004\":1509788624336,\"1020136700947\":1480585069063,\"1022748530785\":1509788624427,\"1022045245036\":1509788624195,\"1015601974867\":1465470268257,\"1022192306091\":1478686417064,\"1025385989395\":1509788624508,\"1021502615195\":1509788625004,\"1021502615194\":1509788625004,\"1021502615196\":1509788625004,\"1021502615199\":1509788625004,\"1021502615198\":1509788625004,\"1022457690006\":1478686417217,\"1022323867622\":1478686417288,\"1025385989494\":1509788624508,\"1001059920713\":1478686417022,\"1023839852804\":1509788624349,\"1024725003824\":1509788624290,\"1025385989547\":1509788624508,\"1024735227541\":1509788667505,\"1025771891880\":1509788624518,\"1022241421883\":1478686417066,\"1024937728865\":1509788624462,\"1024725003832\":1509788624290,\"1025771891876\":1509788624521,\"1019841760055\":1509788625080,\"1025300005079\":1509788625083,\"1019358899918\":1465470268242,\"1021901592156\":1509788624981,\"1022238538350\":1478686417194,\"1025771891864\":1509788624521,\"1018918339615\":1509788624366,\"1022045245071\":1509788624534,\"1021659244418\":1478686417009,\"1021743783065\":1509788624395,\"1023281625189\":1509788624345,\"1004588293674\":1444487341762,\"1021514936077\":1509788624447,\"1021514936076\":1509788624447,\"1021514936078\":1509788624447,\"158347648\":1444487341706,\"1024725003840\":1509788624290,\"1024725003843\":1509788624289,\"1021514936080\":1509788624447,\"1024725003847\":1509788624289,\"1022018374936\":1478686417161,\"1022438946803\":1480585069090,\"1022438946800\":1480585069090,\"1022438946801\":1480585069090,\"1022438946807\":1480585069090,\"1022438946804\":1480585069090,\"1022956934420\":1509788624194,\"1022438946805\":1480585069090,\"1022438946810\":1480585069090,\"1025006804684\":1509788625006,\"1022438946809\":1480585069090,\"1022438946786\":1480585069090,\"1022438946784\":1480585069090,\"1025516043384\":1509788624335,\"1022438946791\":1480585069090,\"1022438946788\":1480585069090,\"1022438946789\":1480585069090,\"1025516043378\":1509788624340,\"1022438946795\":1480585069090,\"1022438946792\":1480585069090,\"1020999664035\":1478686417230,\"1015912247526\":1480585069075,\"1022438946796\":1480585069090,\"1021860958821\":1509788624992,\"1021021028438\":1478686417035,\"1022438946783\":1480585069090,\"1022438946780\":1480585069090,\"1023628307648\":1509788624928,\"1022438946781\":1480585069090,\"1022438946754\":1480585069105,\"1022438946755\":1480585069105,\"1025532034983\":1509788624296,\"1022438946752\":1480585069104,\"1025532034980\":1509788624296,\"1022467257873\":1478686417017,\"1022438946753\":1480585069105,\"1022438946756\":1480585069105,\"1022438946757\":1480585069105,\"1025532034986\":1509788624296,\"1025532034987\":1509788624296,\"1022438946739\":1480585069104,\"1022438946737\":1480585069104,\"1022438946740\":1480585069104,\"1022438946746\":1480585069104,\"1022438946747\":1480585069104,\"1022438946745\":1480585069104,\"1022438946750\":1480585069104,\"1022438946751\":1480585069104,\"1022438946749\":1480585069104,\"1015601975076\":1465470268257,\"1022438946726\":1480585069104,\"1022438946727\":1480585069104,\"1012538181191\":1478686417026,\"1022438946725\":1480585069104,\"1021177297759\":1478686417234,\"1022438946728\":1480585069104,\"1022438946732\":1480585069104,\"1006370974167\":1478686804032,\"1022037249961\":1509788624462,\"1024374651108\":1509788625084,\"1021426854053\":1509788624398,\"1021674838526\":1478686417050,\"1021398018427\":1478686417106,\"1022045245390\":1509788624420,\"1025711466575\":1509788624309,\"1020923382439\":1478686417000,\"1020923382438\":1478686416999,\"1024997236728\":1509788625020,\"1020923382461\":1478686417000,\"1021838414635\":1478686804066,\"1024572699711\":1509788667536,\"1020923382455\":1478686417000,\"1026507684334\":1515854751199,\"1025385989260\":1509788624508,\"1021813510558\":1478686417132,\"1022489667683\":1478943089315,\"1022158357582\":1478686416980,\"1022107239289\":1478686417063,\"1024572699750\":1509788667537,\"1022038691689\":1478686417168,\"1024572699744\":1509788667536,\"1010314117700\":1509788624372,\"1024572699746\":1509788667536,\"1012728394364\":1478686417074,\"1019384193314\":1509788624933,\"1022038691685\":1478686417168,\"1024572699757\":1509788667536,\"1022038691687\":1478686417168,\"1025913578514\":1509791302207,\"1021638403906\":1509788624400,\"1024572699759\":1509788667536,\"1025385989351\":1509788624508,\"1024572699754\":1509788667536,\"1023096130677\":1509788625047,\"1026232338688\":1514456869770,\"1016465232700\":1478686804046,\"1024572699771\":1509788667536,\"1024572699717\":1509788667536,\"1024572699713\":1509788667537,\"1022093344903\":1478686417063,\"1022045245346\":1509788624819,\"1020801357184\":1478686417225,\"1005662904107\":1480585069065,\"1024572699732\":1509788667537,\"1022038691679\":1478686417168,\"1024572699735\":1509788667537,\"1021860958896\":1509788624992,\"1010295243607\":1491634246528,\"1012323224121\":1478686417074,\"1021783760409\":1478686417128,\"1010295243611\":1491634246528,\"1010295243610\":1491634246523,\"1015308246021\":1478686804067,\"1024572699739\":1509788667536,\"1369205649\":1509788624310,\"1024778871671\":1509788625219,\"1011972220101\":1478686804064,\"1024778871658\":1509788625219,\"1024778871659\":1509788625219,\"1369205647\":1509788624310,\"1024778871661\":1509788625219,\"1023938026883\":1509788625086,\"1024778871652\":1509788625219,\"1024211307790\":1509788624587,\"1024778871642\":1509788625219,\"1024778871643\":1509788625219,\"1004605464045\":1478686417222,\"1021688208276\":1509788624396,\"1004605464041\":1478686417222,\"1024778871645\":1509788625219,\"1021860958573\":1509788624992,\"1024211307783\":1509788624587,\"1024778871632\":1509788625220,\"1024778871633\":1509788625220,\"1024778871638\":1509788625219,\"1024778871636\":1509788625219,\"1024211307777\":1509788624586,\"1021188569419\":1465470268188,\"1021188569418\":1465470268188,\"1013115967668\":1478686804030,\"1024778871631\":1509788625218,\"1022416139800\":1480585069075,\"1022416139801\":1480585069075,\"1024211307799\":1509788624586,\"1024211307796\":1509788624587,\"1024211307797\":1509788624587,\"1369205667\":1509788624310,\"1021715208272\":1509788624395,\"1021779958899\":1478686417254,\"1024778871586\":1509788624259,\"1024778871584\":1509788624260,\"1024778871585\":1509788624260,\"1024263864401\":1509788667833,\"1024778871589\":1509788624260,\"1024778871578\":1509788624260,\"1024778871579\":1509788624259,\"1024778871580\":1509788624259,\"1000952707040\":1478686804023,\"1024778871571\":1509788624260,\"1024778871568\":1509788624260,\"1021774978057\":1478686804032,\"1024778871575\":1509788624260,\"1024778871562\":1509788624260,\"1015356874082\":1465470268263,\"1024778871560\":1509788624260,\"1009762967565\":1478686804025,\"1021776944188\":1478686417128,\"1024778871565\":1509788624260,\"1024778871552\":1509788624260,\"1009921169774\":1480585069071,\"330312141\":1478686417023,\"1024778871559\":1509788624260,\"1024778871557\":1509788624260,\"1021875508756\":1509788624521,\"1022758624069\":1509788624990,\"1369205534\":1509788624310,\"1011458655690\":1478686804039,\"1018215409712\":1509788625019,\"1023502743535\":1509788624943,\"1021225271203\":1478686417235,\"1019019687988\":1509788624312,\"1025773727376\":1509788624289,\"1130265025\":1444487341736,\"1009670041418\":1491634246519,\"1369205549\":1509788624310,\"1022487046818\":1478943089489,\"1369205546\":1509788624310,\"1021776157888\":1509788625010,\"849086497\":1491634246514,\"1020394647150\":1509788624324,\"1369205599\":1509788624310,\"1022253480228\":1509788624277,\"1022253480229\":1509788624277,\"1022253480232\":1509788624277,\"1022253480233\":1509788624277,\"1369205589\":1509788624310,\"1022253480235\":1509788624277,\"1001059920347\":1478686417022,\"1369205628\":1509788624310,\"1020408147740\":1509788624392,\"1010756251596\":1509788624276,\"1020408147737\":1509788624392,\"1020408147739\":1509788624392,\"1020408147738\":1509788624392,\"1369205622\":1509788624310,\"1023938026866\":1509788625086,\"1024778871697\":1509788625218,\"1024778871688\":1509788625219,\"1023938026859\":1509788625086,\"1369205609\":1509788624310,\"1022238799925\":1509788624947,\"1024778871695\":1509788625218,\"1022238799926\":1509788624932,\"1024778871692\":1509788625218,\"1021379146986\":1478686804033,\"1024778871693\":1509788625219,\"1023938026848\":1509788625086,\"1022238799929\":1509788624941,\"1369205606\":1509788624310,\"1022238799930\":1509788624930,\"1024778871681\":1509788625219,\"1369205600\":1509788624310,\"1024778871686\":1509788625218,\"1024778871687\":1509788625218,\"1369205602\":1509788624310,\"1024778871418\":1509788624597,\"1024778871422\":1509788624596,\"1024778871423\":1509788624597,\"1025044681351\":1509788624870,\"1025044681348\":1509788624870,\"1024778871421\":1509788624597,\"1024778871411\":1509788624597,\"1025550908541\":1509788624305,\"1024778871414\":1509788624596,\"1025044681359\":1509788624870,\"1025044681356\":1509788624870,\"1022146955081\":1478686416973,\"1025044681362\":1509788624870,\"1022246009185\":1478686417018,\"1024778871401\":1509788624597,\"1024778871406\":1509788624597,\"1025044681365\":1509788624870,\"1008105327664\":1509788624390,\"1024778871394\":1509788624596,\"1025044681370\":1509788624870,\"1024778871395\":1509788624596,\"1024778871392\":1509788624597,\"1025044681368\":1509788624870,\"1025044681375\":1509788624870,\"1024778871396\":1509788624596,\"1025044681372\":1509788624870,\"1025044681379\":1509788624870,\"1652185438\":1444487341734,\"1024778871390\":1509788624597,\"1025044681382\":1509788624870,\"1019759580576\":1509788624281,\"1024778871391\":1509788624597,\"1025044681381\":1509788624870,\"1024778871378\":1509788624597,\"1025044681386\":1509788624870,\"1024778871376\":1509788624597,\"1025044681384\":1509788624870,\"1025044681385\":1509788624870,\"1024778871383\":1509788624597,\"1024778871370\":1509788624596,\"1024300566221\":1509788624298,\"1021661733908\":1509788624420,\"1025385989659\":1509788624508,\"1021301813643\":1478686417238,\"1021513755951\":1478686417112,\"1024778871374\":1509788624597,\"1024778871375\":1509788624597,\"1017398221436\":1478686804053,\"1021372855614\":1478686417042,\"1021393302637\":1478686417043,\"1025044681422\":1509788624569,\"1021185816778\":1478686417003,\"1025044681423\":1509788624569,\"1025044681420\":1509788624569,\"1025044681421\":1509788624569,\"1025044681426\":1509788624569,\"1019324035021\":1509788624301,\"1025044681424\":1509788624569,\"745674529\":1444487341724,\"1025044681430\":1509788624569,\"1025044681431\":1509788624569,\"1025044681429\":1509788624569,\"1025044681435\":1509788624569,\"1022413518636\":1478686417208,\"1023734735085\":1509788624970,\"1024879404071\":1509788625023,\"1025565455301\":1509788624337,\"1025044681439\":1509788624569,\"1025044681437\":1509788624569,\"1025044681442\":1509788624569,\"1022063594547\":1478686417060,\"1025044681441\":1509788624569,\"1022063594548\":1478686417060,\"1369205497\":1509788624311,\"1021021028893\":1478686417035,\"1021602883371\":1478686416982,\"1024778871547\":1509788624260,\"1024778871545\":1509788624260,\"1021394089148\":1478686417105,\"1024778871549\":1509788624260,\"1021394089138\":1478686417105,\"1024778871540\":1509788624259,\"1016950357397\":1478686804031,\"372125118\":1444487341704,\"1021680343962\":1478686804034,\"1014525070618\":1478686804062,\"1025909516214\":1509788667459,\"1025909516212\":1509788667402,\"1014775447067\":1478686804024,\"1025909516213\":1509788667458,\"1025909516210\":1509788667463,\"1023405882614\":1509788625003,\"1025909516208\":1509788667465,\"1021287789119\":1478686417101,\"1025909516216\":1509788667463,\"1023946415265\":1491634246531,\"1025909516207\":1509788667461,\"1021858861221\":1478686417053,\"1024211307758\":1509788624586,\"1024211307752\":1509788624587,\"1024211307753\":1509788624586,\"1024211307751\":1509788624587,\"1024350534441\":1509788625030,\"1024211307745\":1509788624587,\"1021051306076\":1478686417036,\"1022428853940\":1478686417070,\"1024211307763\":1509788624586,\"1016495771887\":1509788624941,\"1024211307718\":1509788624586,\"1024211307742\":1509788624587,\"1025044681331\":1509788624870,\"1024211307741\":1509788624587,\"1787711864\":1478686804015,\"1024211307736\":1509788624587,\"1025044681333\":1509788624870,\"1024778871424\":1509788624596,\"1024778871425\":1509788624596,\"1025044681337\":1509788624870,\"1022073684807\":1478686417060,\"1024211307730\":1509788624587,\"1025044681341\":1509788624870,\"1022027024739\":1478686417163,\"1021041346080\":1509788624971,\"1021041346086\":1509788624971,\"1021041346084\":1509788624971,\"1024517912289\":1509788624224,\"1024517912290\":1509788624224,\"1021041346089\":1509788624971,\"1024517912291\":1509788624224,\"1024517912292\":1509788624224,\"1021041346095\":1509788624971,\"1021041346093\":1509788624971,\"1024517912295\":1509788624224,\"1025524562680\":1509788667537,\"1023999367137\":1509788625017,\"1021041346097\":1509788624971,\"1025524562682\":1509788667537,\"1025524562685\":1509788667537,\"1025100386374\":1509788624181,\"1025524562687\":1509788667537,\"1025524562673\":1509788667537,\"1024926719633\":1509788624530,\"1025524562675\":1509788667537,\"1023853092502\":1491634246515,\"1025524562678\":1509788667537,\"1021041346057\":1509788624971,\"1021041346062\":1509788624971,\"1021041346067\":1509788624971,\"1022438814405\":1480585069100,\"1021041346066\":1509788624971,\"1021041346064\":1509788624971,\"1022438814401\":1480585069100,\"1910918609\":1444487341734,\"1021041346068\":1509788624971,\"1021041346074\":1509788624971,\"1021041346078\":1509788624971,\"1312191094\":1478686416992,\"1022438814390\":1480585069100,\"1022339200135\":1478686417069,\"1023924525568\":1509788624960,\"1023450183370\":1509788625082,\"1022438814396\":1480585069100,\"1022096098568\":1478686417012,\"1022438814399\":1480585069100,\"1022438814393\":1480585069100,\"1024442284324\":1509788624925,\"1022438814372\":1480585069100,\"1022663862072\":1509788624330,\"712250912\":1509788625020,\"1011209882738\":1478686804022,\"1022276417755\":1480585069095,\"1022438814381\":1480585069100,\"1022438814377\":1480585069100,\"1021142301792\":1478686417234,\"1022438814356\":1480585069100,\"1024926719722\":1509788624530,\"1230271797\":1444487341725,\"1022438814352\":1480585069100,\"1025017551688\":1509788625006,\"1011593689903\":1478686417220,\"1021659243298\":1478686417009,\"1022438814362\":1480585069100,\"1023409027950\":1491730251594,\"1024798008888\":1509788625175,\"1025270647419\":1509788624813,\"1022438814336\":1480585069100,\"1021661733713\":1509788624534,\"1025270647423\":1509788624814,\"1013075338082\":1478686804025,\"1022438814339\":1480585069100,\"1021791492881\":1478686417129,\"1022438814348\":1480585069100,\"1022438814349\":1480585069100,\"1022663862035\":1509788624330,\"1022438814344\":1480585069100,\"1022438814347\":1480585069100,\"1023838412264\":1509788624358,\"1025270647434\":1509788624813,\"1023253021388\":1509788625042,\"1025276152658\":1509788625017,\"1017048527033\":1478686804040,\"1025270647436\":1509788624813,\"1022438814332\":1480585069100,\"1025270647426\":1509788624814,\"1021814166713\":1478686417132,\"1022068704363\":1478686417060,\"1022438814328\":1480585069100,\"1021928985559\":1509788624466,\"1022518898307\":1509788625075,\"1023838412262\":1509788624358,\"1023838412263\":1509788624358,\"1025270647429\":1509788624814,\"1021622673673\":1478686417247,\"1025270647450\":1509788624813,\"1025270647454\":1509788624813,\"1025270647455\":1509788624814,\"1025270647452\":1509788624813,\"1019416438158\":1509788624314,\"1025270647453\":1509788624813,\"1021661733823\":1509788624195,\"1025270647440\":1509788624813,\"1019049441369\":1509788624283,\"1025424161861\":1509788625017,\"1021693189607\":1478686417249,\"1025424161862\":1509788625017,\"1021693189606\":1478686417249,\"1021693189603\":1478686417249,\"1024926719522\":1509788624530,\"1025270647458\":1509788624813,\"1025270647459\":1509788624813,\"1023838412226\":1509788624358,\"1023838412227\":1509788624358,\"1025270647457\":1509788624813,\"1023838412228\":1509788624358,\"1023838412229\":1509788624358,\"1019448551325\":1478686804021,\"1023838412230\":1509788624358,\"1025270647460\":1509788624814,\"1021981413002\":1478686417056,\"1020815773964\":1478686417078,\"1025270647499\":1509788624192,\"1025270647496\":1509788624192,\"1025270647497\":1509788624192,\"1025270647502\":1509788624192,\"1021979315870\":1478686417010,\"1025270647490\":1509788624192,\"1025270647494\":1509788624192,\"1022352045261\":1478686417289,\"1023878914003\":1491634246506,\"1025270647495\":1509788624192,\"1022326881104\":1478686417288,\"1021929772025\":1478686417142,\"1025270647516\":1509788624192,\"1025270647517\":1509788624192,\"1022487964991\":1478943089489,\"1025270647511\":1509788624192,\"1004588292649\":1444487341762,\"1025270647528\":1509788624192,\"512238190\":1478686417019,\"1025270647532\":1509788624192,\"1025270647523\":1509788624192,\"1025270647520\":1509788624192,\"1025270647524\":1509788624192,\"1025270647525\":1509788624192,\"1008825851567\":1480585069066,\"1023846014439\":1491634246537,\"1021887697237\":1478686417137,\"1023838412176\":1509788624358,\"1021887697236\":1478686417137,\"1023838412177\":1509788624358,\"1001059921857\":1478686417022,\"1023838412178\":1509788624358,\"1021661733850\":1509788624818,\"1004605463247\":1478686417222,\"1004605463246\":1478686417222,\"1019219964881\":1509788624317,\"1010091955140\":1491634246522,\"1022219140328\":1478686417064,\"1024425769325\":1509788624612,\"1022071981532\":1478686417012,\"1022071981534\":1478686417012,\"1025270647579\":1509788625128,\"1025270647582\":1509788625104,\"1004605463258\":1478686417222,\"1025270647570\":1509788625243,\"1022567000138\":1509788624836,\"1004605463250\":1478686417222,\"1004605463249\":1478686417222,\"1024425769336\":1509788624612,\"1004605463248\":1478686417222,\"1025270647573\":1509788625171,\"1024991861640\":1509788624210,\"1025270647593\":1509788625243,\"1019526536524\":1478686804031,\"1025902305601\":1509788667448,\"1023397755526\":1509788624516,\"1025270647590\":1509788625171,\"1021399199201\":1478686417106,\"1021399199200\":1478686417106,\"1024546748002\":1509788624959,\"1021974990764\":1478686417150,\"1021604192765\":1478686417300,\"1021994913282\":1478686417011,\"1021559497750\":1478686417245,\"1017379085603\":1478686804023,\"1021559497746\":1478686417245,\"1025270647642\":1509788624433,\"1025270647643\":1509788624433,\"1025270647640\":1509788624461,\"1025270647641\":1509788624424,\"1025270647646\":1509788624426,\"1025270647644\":1509788624424,\"1021559497738\":1478686417245,\"1025270647645\":1509788624507,\"1025270647634\":1509788624508,\"1023745745333\":1509788624835,\"1021408636163\":1478686417043,\"1022343656924\":1478686417069,\"1025270647638\":1509788624461,\"1021611925856\":1509788624404,\"1025270647639\":1509788624461,\"1025270647636\":1509788624508,\"1025270647637\":1509788624508,\"1025270647659\":1509788624508,\"1020802142469\":1478686417225,\"1025270647649\":1509788624461,\"1025270647654\":1509788624506,\"1025344571091\":1509788624294,\"1022208654847\":1480585069087,\"1019463491927\":1509788624353,\"1025270647689\":1509788625099,\"960758976\":1491634246534,\"1024528791499\":1509788625070,\"1026226836102\":1514456869768,\"1025270647686\":1509788625099,\"1025270647685\":1509788625099,\"1022304598886\":1478686417068,\"1021262232199\":1478686804039,\"1024363118001\":1509788624926,\"1025270647705\":1509788625099,\"1001059921582\":1478686417022,\"1021906703128\":1478686417140,\"1025270647698\":1509788625099,\"1025270647702\":1509788625099,\"960759001\":1491634246534,\"1025270647723\":1509788625099,\"1025270647720\":1509788625099,\"1021407849955\":1478686417240,\"1025270647713\":1509788625099,\"1025270647718\":1509788625099,\"1025270647736\":1509788625099,\"1004769299888\":1478686804064,\"1025597175559\":1509788624363,\"1007839910574\":1509788624374,\"1020824555704\":1509788624934,\"1021551502435\":1509788624397,\"1023959651732\":1509788624442,\"1025270647728\":1509788625099,\"1023959651733\":1509788624442,\"1023959651730\":1509788624442,\"1025270647734\":1509788625099,\"1023959651731\":1509788624442,\"1025270647732\":1509788625099,\"1023959651729\":1509788624442,\"1025270647733\":1509788625099,\"1025270647759\":1509788624532,\"1024076960406\":1509788624517,\"1022014835188\":1509788625075,\"1024425769385\":1509788624548,\"1023959651839\":1509788624861,\"1025270647774\":1509788624532,\"1025270647775\":1509788624532,\"1020855489167\":1478686416999,\"1018568120914\":1478686804040,\"1025270647761\":1509788624532,\"1025270647787\":1509788624532,\"1024425769348\":1509788624544,\"1023020240334\":1509788624990,\"1024425769358\":1509788624543,\"1025524562689\":1509788667537,\"1024425769352\":1509788624543,\"1025034458569\":1509788625090,\"1024425769371\":1509788624543,\"1025874782198\":1509788667715,\"1022339200711\":1478686417288,\"1025865213116\":1509788667836,\"1022339200707\":1478686417288,\"1021498288364\":1478686417046,\"1022484819517\":1478943089532,\"1024333464043\":1509788625031,\"313928871\":1491634246534,\"1021173496912\":1478686417038,\"1021950217729\":1478686417145,\"1025865213100\":1509788667831,\"1022787329049\":1509788624379,\"1013043093734\":1478686804028,\"1024912039753\":1509788624926,\"1021852833261\":1478686416974,\"1023959651842\":1509788624861,\"1023959651843\":1509788624861,\"1023959651840\":1509788624861,\"313928857\":1491634246534,\"1023959651841\":1509788624862,\"1021852833267\":1478686416974,\"1016355396955\":1465470268254,\"1021852833270\":1478686416974,\"1025584723786\":1509788625019,\"1001059921152\":1478686417022,\"1022827305875\":1509788624587,\"1025513814989\":1509788624451,\"1025513814990\":1509788624451,\"165427098\":1478686417023,\"1829262148\":1444487341746,\"1021073457688\":1478686417232,\"1003833690014\":1478686804051,\"1025513815006\":1509788624435,\"1012903635825\":1478686417074,\"1025513814996\":1509788624435,\"1003833690001\":1478686804051,\"1023838412554\":1509788624357,\"1025513815022\":1509788624434,\"1023838412555\":1509788624357,\"1025513815017\":1509788624435,\"1017905867\":1444487341761,\"1021138501149\":1478686416986,\"1021139287585\":1478686417096,\"1025513815013\":1509788624435,\"1021173496877\":1478686417038,\"1025399619599\":1509788624294,\"1009744488427\":1491634246512,\"1003833690038\":1478686804051,\"1022217436797\":1478686417192,\"1018988756504\":1509788624314,\"1022481149643\":1478943089488,\"1021018933021\":1509788624970,\"1019246571955\":1509788624316,\"1025890903480\":1509788667403,\"1022610777663\":1509788625161,\"1023262589268\":1509788625042,\"1547330215\":1478950494925,\"1025890903471\":1509788667403,\"1023959651982\":1509788624226,\"1023959651978\":1509788624226,\"1023959651979\":1509788624226,\"746459865\":1444487341727,\"1023959651977\":1509788624226,\"1023959651975\":1509788624226,\"1021906833442\":1478686417054,\"1022040786979\":1478686416987,\"1021040952458\":1478686417092,\"1014847010779\":1478686804028,\"1022932555230\":1509788625018,\"1025711337340\":1509788624345,\"1022385337549\":1478686417069,\"1025865213041\":1509788667833,\"4955445646\":1509788624159,\"1022081287924\":1478686417061,\"1024912039865\":1509788624926,\"1023959652091\":1509788624564,\"1023959652088\":1509788624564,\"1023959652089\":1509788624564,\"1001059921378\":1478686417022,\"1023959652087\":1509788624564,\"1022748532389\":1509788624467,\"1837519706\":1491634246516,\"1021817706276\":1478686417132,\"1023959652083\":1509788624564,\"1837519704\":1491634246516,\"1017411066975\":1509788624334,\"1018918994503\":1509788624317,\"1024939433260\":1509788625135,\"1019637946656\":1509788624313,\"1020980136227\":1478686417034,\"1837519713\":1491634246516,\"1021069001331\":1478686417093,\"1021437996147\":1478686417007,\"1025865213001\":1509788667465,\"1021153705877\":1478686417300,\"1022610777676\":1509788625161,\"1363570619\":1491634246524,\"1022610777673\":1509788625161,\"1022610777674\":1509788625161,\"1022610777675\":1509788625161,\"1008116729752\":1478686804028,\"1021894382145\":1509788624466,\"1020790871069\":1478686417077,\"1023838412412\":1509788624357,\"1023838412413\":1509788624357,\"1023838412414\":1509788624357,\"1023838412415\":1509788624357,\"1009042640978\":1478686804061,\"1022476562351\":1478943089315,\"1009042640980\":1478686804061,\"1023838412360\":1509788624358,\"1023838412361\":1509788624358,\"1022956933939\":1509788625101,\"1023838412362\":1509788624358,\"1829524005\":1478686804033,\"1019220357507\":1509788625020,\"1023838412358\":1509788624357,\"1023838412359\":1509788624358,\"1008289381730\":1509788624310,\"1025516436050\":1509788624341,\"1016339275089\":1478686804031,\"1021262231598\":1478686804039,\"1022480494392\":1478943089488,\"1023838412328\":1509788624357,\"1023838412324\":1509788624358,\"1022480494389\":1478943089488,\"1023838412325\":1509788624358,\"1023838412326\":1509788624358,\"1023838412327\":1509788624358,\"1021778123017\":1480585069060,\"1023838412296\":1509788624358,\"1022350210909\":1478686417015,\"1023838412297\":1509788624358,\"1023838412295\":1509788624358,\"1018907198469\":1509788625019,\"1019315252340\":1509788625079,\"1022208655349\":1480585069087,\"1023838412307\":1509788624358,\"1023838412308\":1509788624358,\"1021514934425\":1509788624419,\"1023838412309\":1509788624358,\"1023838412310\":1509788624358,\"1021445729677\":1478686417107,\"1023838412512\":1509788624357,\"1023838412513\":1509788624357,\"1023838412514\":1509788624357,\"1022956934047\":1509788624533,\"1008601590322\":1478686804030,\"1013075337349\":1478686804025,\"1023838412536\":1509788624357,\"1014775446063\":1478686804024,\"1000237751715\":1444487341762,\"491004632\":1444487341723,\"1023838412535\":1509788624357,\"1022238670179\":1509788624947,\"1025431896006\":1509788624176,\"1023927409034\":1491634246529,\"785650021\":1491634246513,\"1023838412510\":1509788624357,\"1015319779997\":1465470268246,\"1023838412511\":1509788624357,\"1021575095748\":1509788624405,\"1022155735656\":1478686417277,\"1025412857971\":1509788624201,\"1021079093799\":1478686417002,\"1025412857972\":1509788624205,\"1025412857975\":1509788625126,\"1025412857976\":1509788625109,\"1025412857977\":1509788624186,\"1023932258363\":1491634246531,\"1022320064569\":1478686417288,\"1023838412473\":1509788624357,\"1023838412474\":1509788624357,\"1023838412475\":1509788624357,\"1023838412476\":1509788624357,\"1023838412471\":1509788624357,\"1024912039563\":1509788624926,\"1019817905899\":1465470268275,\"1023838412416\":1509788624357,\"1022861514826\":1509788625053,\"1023838412417\":1509788624357,\"1008833715258\":1480585069066,\"1025900321920\":1509788667457,\"1014803466219\":1478686804064,\"1000526099680\":1444487341712,\"1000526099682\":1444487341713,\"1019717626639\":1509788625079,\"1023307546882\":1509788625041,\"1005662791380\":1480585069065,\"1024579259735\":1509788624959,\"1020975707666\":1478686417001,\"1716266604\":1444487341737,\"1022921566782\":1509788624293,\"1000526099677\":1444487341725,\"1025485472612\":1509788624425,\"1019953690925\":1509788624319,\"1019953690924\":1509788624319,\"1019953690923\":1509788624319,\"1019953690922\":1509788624319,\"1019953690921\":1509788624319,\"1025485472610\":1509788624429,\"1025485472611\":1509788624431,\"1025011410910\":1509788624180,\"1025011410911\":1509788624180,\"1025011410908\":1509788624180,\"1025011410909\":1509788624180,\"1023994374778\":1491634246518,\"1022869137252\":1509788625151,\"1021380825015\":1478686416991,\"1021914164844\":1509788624509,\"1022349035641\":1478686417069,\"1021296150856\":1478686417041,\"1022028199185\":1478686417164,\"1018404166959\":1509788625019,\"1024771021201\":1509788667537,\"1022869137226\":1509788625151,\"1024846257427\":1509788624949,\"1022869137227\":1509788625151,\"1022869137225\":1509788625151,\"1022869137223\":1509788625151,\"1024552783000\":1509788624185,\"1024491178221\":1509788625028,\"1008738540805\":1444487341761,\"1025015473975\":1509788625006,\"1023702342140\":1509788624225,\"1023702342137\":1509788624225,\"1021397209236\":1509788624394,\"1025011410912\":1509788624180,\"1023702342138\":1509788624225,\"1023702342139\":1509788624225,\"1022451404476\":1478686417296,\"4994787644\":1509788667395,\"1002491619660\":1478950494936,\"1022492168501\":1478943089490,\"1021789775632\":1509788624394,\"1021647822464\":1509788624396,\"1020995762250\":1478686417001,\"1020910826334\":1509788624971,\"1004790788705\":1480585069067,\"401495893\":1444487341737,\"1005786131885\":1480585069074,\"1022101862954\":1478686417275,\"1010024737285\":1491634246527,\"1018513482761\":1509788625227,\"1018513482759\":1509788625227,\"1022277600346\":1478686417197,\"1018513482754\":1509788625227,\"1018513482752\":1509788625227,\"1019525210188\":1509788625077,\"1018513482781\":1509788625227,\"1000777204418\":1478686417018,\"1018513482780\":1509788625227,\"1021902106151\":1509788624402,\"1018513482776\":1509788625227,\"1011607324751\":1478686417018,\"1018513482772\":1509788625227,\"1018513482787\":1509788625227,\"1018513482786\":1509788625227,\"1022254138136\":1509788624363,\"1018513482785\":1509788625227,\"1018513482784\":1509788625227,\"1022380362368\":1478686417205,\"1022101862937\":1478686417275,\"1022406052925\":1478686417070,\"1025900321919\":1509788667462,\"1022116674313\":1478686417183,\"1024327827288\":1509788625086,\"1024327827280\":1509788625086,\"1021867372008\":1509788624394,\"1009854210557\":1491634246520,\"1022482731339\":1478943089488,\"1024518179780\":1509788624219,\"1024518179781\":1509788624219,\"1021959123021\":1478686417010,\"1024518179782\":1509788624219,\"4994787476\":1509788667395,\"1022400154118\":1478686417292,\"1024518179779\":1509788624219,\"1024518179784\":1509788624219,\"1024501532876\":1509788625070,\"1021485552789\":1478686417110,\"1022038030318\":1478686417301,\"1021648477995\":1509788624396,\"1021489222737\":1478686417243,\"1018513352177\":1509788624602,\"1025612876517\":1509788625018,\"1021861079556\":1509788624434,\"1021861079566\":1509788624435,\"1021861079575\":1509788624451,\"1021861079581\":1509788624452,\"4972898610\":1509788624159,\"1021346090312\":1478686417005,\"1020993009247\":1478686417001,\"1022208655854\":1480585069087,\"1019028308827\":1509788624314,\"1020993009255\":1478686417001,\"1012834144285\":1478686417026,\"1024077344320\":1509788624521,\"923301475\":1491634246505,\"210259428\":1478686804029,\"1010396299735\":1478686804068,\"1021183296196\":1478686804018,\"1021861079605\":1509788624427,\"1010396299727\":1478686804068,\"1024926737407\":1509788624189,\"1020294254556\":1465470268299,\"1021861079600\":1509788624440,\"1021739312637\":1478686417124,\"1025746571989\":1509788624393,\"1022733737531\":1509788624827,\"1025612876504\":1509788625018,\"1024926737399\":1509788624189,\"1021346090389\":1478686417005,\"1022117723032\":1478686417276,\"1021822150710\":1509788624989,\"1021941690654\":1478686417143,\"1024518179695\":1509788624855,\"1024518179700\":1509788624855,\"1024518179698\":1509788624855,\"1024518179699\":1509788624855,\"4994787360\":1509788667395,\"1024518179704\":1509788624855,\"1021867371897\":1509788624399,\"1022919469966\":1509788625018,\"1024341065267\":1509788624437,\"1288834422\":1509788625018,\"1020956046576\":1478686417033,\"1021900664646\":1478686417259,\"1021900664645\":1478686417259,\"1024273037875\":1509788624176,\"1022953680279\":1509788624291,\"1024273037876\":1509788624176,\"4997146733\":1509788667395,\"1011618465793\":1478686804061,\"1011618465792\":1478686804061,\"1020102886388\":1509788624369,\"1020665718095\":1478686417075,\"1022226350165\":1478686417013,\"1024912056481\":1509788624926,\"1021803932031\":1478686417255,\"1022561113178\":1509788624375,\"1022561113177\":1509788624375,\"1022561113174\":1509788624375,\"1022561113175\":1509788624375,\"1021816383538\":1478686417300,\"1022561113173\":1509788624375,\"1021313583617\":1465469681398,\"1022600697540\":1509788625062,\"1124336381\":1509788625016,\"1013075452183\":1478686804066,\"1025772000808\":1509788624844,\"1021795673384\":1478686417255,\"1025772000809\":1509788624844,\"1024370459607\":1509788624926,\"1024517785824\":1509788624450,\"1024517785825\":1509788624450,\"1024517785828\":1509788624450,\"1013075452667\":1478686804066,\"1019600840207\":1509788624971,\"1022182734881\":1478686417187,\"1024370459592\":1509788624926,\"1018513483477\":1509788625228,\"1024992273538\":1509788624278,\"1024093467248\":1509788624523,\"228216759\":1444487341737,\"1020293991553\":1465470268279,\"1025796379898\":1509788624274,\"1018513483519\":1509788625228,\"1020436861976\":1478686804027,\"1024517785823\":1509788624450,\"1024517785821\":1509788624450,\"1018513483508\":1509788625228,\"1021427880715\":1478686804026,\"1003271804160\":1478686416993,\"1025078651359\":1509788624178,\"1026226564470\":1514456869770,\"1001461016859\":1478686417022,\"1026226564475\":1514456869770,\"1014152979096\":1478686804071,\"1021347139517\":1478686417005,\"1021347139519\":1478686417005,\"1021081747328\":1478686417094,\"1026226564460\":1514456869770,\"1021975507148\":1478686417263,\"1021287238597\":1465470268201,\"1020073132971\":1465470268321,\"1021483587494\":1478686417007,\"1021629210452\":1478686417049,\"1024640078785\":1509788667536,\"1022953680451\":1509788624291,\"1016848876143\":1478686804046,\"1022120343939\":1478686417183,\"1008664615811\":1478686804030,\"1018513483448\":1509788625228,\"1025078651360\":1509788624335,\"1022733737408\":1509788624827,\"1021739312647\":1478686417124,\"1020323353193\":1509788625078,\"4997147484\":1509788667395,\"1021739312655\":1478686417124,\"1021739312663\":1478686417124,\"1026226564514\":1514456869770,\"1012651295942\":1509788625017,\"1021739312659\":1478686417124,\"1026226564519\":1514456869769,\"1022025316096\":1478686417163,\"1019210502105\":1509788625077,\"1023354996472\":1509788625156,\"1023354996473\":1509788625156,\"1022425714462\":1478686417016,\"1023354996474\":1509788625156,\"1026226564499\":1514456869768,\"1021788595473\":1478686417129,\"1023354996477\":1509788625156,\"1026226564504\":1514456869770,\"1023901705998\":1509788625038,\"1023354996471\":1509788625156,\"1020800462382\":1478686417077,\"1025098313415\":1509788624292,\"1022003164789\":1478686417266,\"1022073813619\":1478686417060,\"1025524008919\":1509788624612,\"1025524008920\":1509788624543,\"1024545704330\":1509788667848,\"1021576124557\":1509788624405,\"1017120854787\":1478686804067,\"1024992273522\":1509788624279,\"1021893849003\":1478686417138,\"1024992273529\":1509788624279,\"1021893849005\":1478686417138,\"1024992273533\":1509788624278,\"1025524008946\":1509788624548,\"1025524008947\":1509788624867,\"1025524008949\":1509788624612,\"1021447278859\":1509788624432,\"1023453431954\":1509788625008,\"1022301587442\":1478686417199,\"1025524008929\":1509788624566,\"1025710920504\":1509788624305,\"1019688003635\":1509788624315,\"1022733737026\":1509788624539,\"1831611937\":1491634246507,\"1001328500781\":1444487341701,\"1025077340333\":1509788624309,\"1019862202186\":1509788624389,\"1022598599784\":1509788624437,\"1023702342318\":1509788624450,\"1023702342319\":1509788624450,\"4994787995\":1509788667395,\"1020294122906\":1465470268291,\"1023702342320\":1509788624450,\"1023702342321\":1509788624450,\"1023702342322\":1509788624450,\"1024187184515\":1509788624502,\"1024187184512\":1509788624502,\"1024352371705\":1509788624927,\"1021501674902\":1478686416975,\"1024198718632\":1509788667890,\"1010268928793\":1478686804055,\"1022073420780\":1478686417176,\"1025118367328\":1509788625022,\"1022723382426\":1509788625058,\"1022467918929\":1478686417072,\"1023000472584\":1509788624426,\"1022256627881\":1478686417067,\"1020212202229\":1478686804066,\"1016634472371\":1478686804069,\"1018513483598\":1509788625228,\"1024187184444\":1509788625231,\"1025485471967\":1509788625125,\"1024187184445\":1509788625231,\"1024187184443\":1509788625231,\"1000216240870\":1444487341750,\"1023702342146\":1509788624225,\"1018513483592\":1509788625228,\"1020969416161\":1478686417229,\"1023538105542\":1509788625002,\"1023538105543\":1509788625002,\"1024187184439\":1509788625231,\"1023538105540\":1509788625002,\"1023538105541\":1509788625002,\"1024187184437\":1509788625231,\"1023538105539\":1509788625002,\"1024187184435\":1509788625231,\"1018513483585\":1509788625228,\"1024187184430\":1509788625231,\"1022169496944\":1509788624924,\"1024187184431\":1509788625231,\"1024187184428\":1509788625231,\"1024187184426\":1509788625230,\"4994787875\":1509788667395,\"1024187184422\":1509788625230,\"1024988734817\":1509788667503,\"1018513483604\":1509788625228,\"1016263531894\":1458304307281,\"1024988734820\":1509788667503,\"1024187184419\":1509788625230,\"1024187184416\":1509788625231,\"1024187184414\":1509788625230,\"1024187184415\":1509788625231,\"1024988734809\":1509788667503,\"1016190917372\":1509788624944,\"1024988734810\":1509788667503,\"1024988734811\":1509788667503,\"1024988734812\":1509788667503,\"1025569623037\":1509788624349,\"1024187184411\":1509788625231,\"1023097206288\":1509788625016,\"1024187184408\":1509788625231,\"1024988734814\":1509788667503,\"1024988734815\":1509788667503,\"1024187184407\":1509788625231,\"1020969416131\":1478686417229,\"1024187184403\":1509788625231,\"1018513483617\":1509788625227,\"1024187184401\":1509788625230,\"1020969416152\":1478686417229,\"1018513483637\":1509788625228,\"1018513483636\":1509788625227,\"1021126048906\":1478686417233,\"1025485471971\":1509788625089,\"1024187184511\":1509788624502,\"1024938270776\":1509788667503,\"1024187184509\":1509788624502,\"1024187184506\":1509788624502,\"1018513483531\":1509788625228,\"1023354996638\":1509788624559,\"1024187184505\":1509788624502,\"1024187184502\":1509788624502,\"1024187184503\":1509788624502,\"1024187184500\":1509788624501,\"1024187184501\":1509788624501,\"1024187184498\":1509788624501,\"1024370459166\":1509788624927,\"1024187184496\":1509788624501,\"1024187184494\":1509788624501,\"1023702342228\":1509788624862,\"1023702342229\":1509788624862,\"1024187184492\":1509788624501,\"1024187184493\":1509788624501,\"1018513483548\":1509788625228,\"1024187184490\":1509788624502,\"1023702342225\":1509788624862,\"1023702342226\":1509788624862,\"1024187184489\":1509788624501,\"1023702342227\":1509788624862,\"1020969416112\":1478686417229,\"1021485160054\":1478686804065,\"1024187184487\":1509788624501,\"1017403056836\":1478686804020,\"1022401464533\":1478686417292,\"1022401464531\":1478686417292,\"1024187184480\":1509788624501,\"1024187184478\":1509788624502,\"1018513483567\":1509788625228,\"1024187184479\":1509788624501,\"1024187184476\":1509788624501,\"1024187184477\":1509788624502,\"1022220059162\":1478686417192,\"1023657252272\":1509788667538,\"1020314307696\":1478686804026,\"1018220007842\":1465470268270,\"1018513483553\":1509788625227,\"1010025392432\":1491634246527,\"1024370459170\":1509788624927,\"1025428849480\":1509788624407,\"1018513483578\":1509788625228,\"1010025392424\":1491634246527,\"1025428849476\":1509788624426,\"1023354996640\":1509788624559,\"1022076959644\":1509788624439,\"1023354996641\":1509788624560,\"1023354996642\":1509788624559,\"1024187184452\":1509788625231,\"1024187184450\":1509788625231,\"1025428849474\":1509788624429,\"1022253482015\":1509788624277,\"1025428849475\":1509788624431,\"1023354996647\":1509788624559,\"1024187184449\":1509788625231,\"1021924780951\":1478686417141,\"1022341696689\":1478686417202,\"1019929574517\":1509788624932,\"1004769293339\":1478686804064,\"1021921110991\":1509788624465,\"1022328718202\":1478686417201,\"1021443741189\":1478686417241,\"1007916738655\":1478686804032,\"1945647054\":1478686417024,\"1018513481975\":1509788625226,\"1716265585\":1444487341736,\"1018513481970\":1509788625226,\"1007840453421\":1509788624392,\"1022736620405\":1509788624301,\"1023569171926\":1509788624516,\"1024187183868\":1509788624909,\"1019260965912\":1509788624313,\"1024187183867\":1509788624909,\"1024187183863\":1509788624909,\"1024187183861\":1509788624908,\"1021985208241\":1478686417153,\"1023569171929\":1509788624516,\"1024187183859\":1509788624909,\"1022179195395\":1478686417278,\"1024187183856\":1509788624909,\"1021985208242\":1478686417153,\"1024187183854\":1509788624908,\"1024187183852\":1509788624909,\"1024187183851\":1509788624909,\"1024187183849\":1509788624909,\"1022445505079\":1478686417016,\"1024187183847\":1509788624909,\"1020447085524\":1478686804047,\"1024187183845\":1509788624908,\"1023569171914\":1509788624516,\"1022445505073\":1478686417016,\"1023076364437\":1509788625152,\"1023076364432\":1509788625152,\"1021796852561\":1509788624394,\"1022125195253\":1478686417183,\"1020294253272\":1465470268299,\"1023076364429\":1509788625152,\"1023076364430\":1509788625152,\"1023076364431\":1509788625152,\"1024187183676\":1509788624606,\"1024187183674\":1509788624605,\"1024557238326\":1509788625026,\"1024187183673\":1509788624605,\"1024187183670\":1509788624605,\"1024187183666\":1509788624605,\"1023076364388\":1509788624447,\"1024187183662\":1509788624605,\"1023076364389\":1509788624447,\"1023076364390\":1509788624447,\"1023076364391\":1509788624447,\"1022478930948\":1478943089224,\"1024187183658\":1509788624605,\"1024187183656\":1509788624605,\"1024187183657\":1509788624605,\"1023076364392\":1509788624447,\"1021758448064\":1478686417051,\"1024187183644\":1509788624605,\"1021251846932\":1478686417236,\"1022381674239\":1478686417290,\"1024187183642\":1509788624605,\"1022458612480\":1478686417016,\"1024187183640\":1509788624605,\"1018513350759\":1509788624499,\"1024187183636\":1509788624605,\"1024187183634\":1509788624606,\"1021173466862\":1465470268186,\"1024187183632\":1509788624605,\"1021953488238\":1478686417146,\"1024187183633\":1509788624606,\"1021173466865\":1465470268186,\"1000476030302\":1478950494933,\"1021173466864\":1465470268186,\"1023987953197\":1509788624229,\"1021704840704\":1478686417050,\"1019169738607\":1509788624375,\"1022161238438\":1478686417063,\"1020136702151\":1480585069064,\"1024518180396\":1509788624560,\"1024518180397\":1509788624560,\"324949908\":1491634246534,\"1024518180398\":1509788624560,\"1020294122082\":1465470268291,\"1009593242706\":1509788624372,\"1024518180394\":1509788624560,\"1020709495588\":1509788624934,\"1022041698897\":1478686417170,\"4994788708\":1509788667395,\"1024518180403\":1509788624560,\"1784295043\":1444487341731,\"1021914163928\":1509788624467,\"1187381796\":1491634246518,\"1021821627738\":1478686417009,\"1023242697247\":1509788624462,\"1024187183688\":1509788624606,\"1024187183686\":1509788624606,\"1024187183687\":1509788624606,\"1024187183684\":1509788624605,\"1024187183685\":1509788624605,\"1024187183683\":1509788624605,\"1024187183681\":1509788624606,\"1022075911573\":1509788624393,\"1024187184063\":1509788624265,\"1024187184060\":1509788624265,\"1024187184061\":1509788624265,\"1022075911574\":1509788624393,\"1024187184058\":1509788624264,\"1022075911569\":1509788624393,\"1024187184059\":1509788624265,\"1024187184056\":1509788624265,\"1022075911571\":1509788624393,\"1024187184057\":1509788624265,\"1021908134813\":1478686417140,\"1024187184054\":1509788624265,\"1024187184055\":1509788624265,\"1022246012792\":1478686417066,\"1024187184052\":1509788624264,\"1022075911577\":1509788624393,\"1022075911576\":1509788624393,\"1021154985079\":1478686417002,\"1443500804\":1491634246515,\"1022567141408\":1509788624867,\"1022075911578\":1509788624393,\"4994788519\":1509788667395,\"1021427881000\":1478686804065,\"1021207675261\":1478686804050,\"4997147891\":1509788667395,\"1023566681232\":1491634246536,\"1025882496671\":1509788667465,\"1687822772\":1444487341737,\"1016857658547\":1509788624976,\"1019826288574\":1509788624959,\"1021706151857\":1478686417009,\"1023566681224\":1491634246536,\"1021908134816\":1478686417140,\"1016670647187\":1478686804018,\"1021908134818\":1478686417140,\"1023566681222\":1491634246536,\"1023566681223\":1491634246536,\"1025900583387\":1509788667461,\"1022454155943\":1478686417302,\"1016406139706\":1478686804016,\"1021506130747\":1509788624401,\"1024146421337\":1509788625102,\"1018513482134\":1509788625226,\"1022454155952\":1478686417302,\"1021142009155\":1478686417096,\"1024187184090\":1509788624265,\"1024187184089\":1509788624265,\"1024187184086\":1509788624265,\"1024187184084\":1509788624265,\"1024187184083\":1509788624265,\"1024187184080\":1509788624265,\"1024187184076\":1509788624265,\"1020436861788\":1478686804027,\"1024187184070\":1509788624265,\"1024187184071\":1509788624265,\"1024187184068\":1509788624265,\"1024187184066\":1509788624265,\"1020709495447\":1509788624934,\"1022977403814\":1509788625050,\"1024187184067\":1509788624265,\"1022428596462\":1478686417294,\"1024187184064\":1509788624265,\"1021432469362\":1478686804027,\"1021048192607\":1478686417232,\"1021048192606\":1478686417232,\"1018513482058\":1509788625226,\"1018513482053\":1509788625226,\"1017564147436\":1478686804020,\"1018513482078\":1509788625226,\"1020261484845\":1478686804026,\"1011783489415\":1478686804027,\"1021777585097\":1478686417052,\"1021207675329\":1478686804050,\"1021700515680\":1478686804046,\"1021502853925\":1478686417244,\"1018513482071\":1509788625226,\"1021502853924\":1478686417244,\"1018513482064\":1509788625226,\"1018513482089\":1509788625226,\"1024187183890\":1509788624909,\"1018513482083\":1509788625226,\"1021795672708\":1478686417255,\"1024187183891\":1509788624909,\"1020994977097\":1478686417088,\"1024187183889\":1509788624909,\"1024187183885\":1509788624909,\"1024187183883\":1509788624909,\"1024187183880\":1509788624909,\"1018513482104\":1509788625226,\"1024187183878\":1509788624909,\"1024187183879\":1509788624909,\"1024187183876\":1509788624909,\"1024187183877\":1509788624909,\"1018513482097\":1509788625226,\"1021935531336\":1478686417055,\"1024187183873\":1509788624909,\"1021739311429\":1478686417124,\"1021739311425\":1478686417124,\"1017241967984\":1478686804025,\"1021428012274\":1478686804026,\"1021427881203\":1478686804026,\"1021207675292\":1478686804050,\"1022341827958\":1478686417202,\"1020102887417\":1509788624369,\"1008662650331\":1478686804034,\"1022255187466\":1478686417284,\"1023987953491\":1509788624230,\"1010386500254\":1509788624276,\"1020802034103\":1478686417077,\"1021207675265\":1478686804050,\"976912364\":1478950494919,\"1025019142879\":1509788624825,\"1021482405929\":1478686417110,\"1021739311450\":1478686417124,\"1021739311460\":1478686417124,\"1018513482030\":1509788625226,\"1021207675319\":1478686804050,\"1021264432403\":1478686417237,\"1016396308726\":1478686804017,\"1023829877765\":1509788667494,\"1018513482047\":1509788625226,\"1018513482045\":1509788625226,\"1022064374482\":1478686417270,\"1018513482040\":1509788625226,\"1021207675310\":1478686804050,\"4942488421\":1509788624159,\"1023834596445\":1491634246536,\"1025505133108\":1509788624338,\"1025505133110\":1509788624340,\"1022465689938\":1478686417016,\"1019015464171\":1509788624361,\"1022465689939\":1478686417017,\"1018335092576\":1478686804022,\"1025771999803\":1509788624453,\"4997148620\":1509788667397,\"898790321\":1491634246511,\"1019778443586\":1509788625078,\"4994789249\":1509788667397,\"1022208657072\":1480585069087,\"1500520214\":1478950494923,\"1024786619523\":1509788624512,\"1187381430\":1491634246519,\"1022149311044\":1480585069075,\"1021631699809\":1509788624420,\"1025514963949\":1509788624337,\"1021569440978\":1509788624397,\"1024723570906\":1509788667888,\"1019164363904\":1509788624316,\"1000966735913\":1478686417021,\"1022487058067\":1478943089489,\"1024926737421\":1509788624189,\"1022988544183\":1509788625073,\"1024926737410\":1509788624189,\"1024926737415\":1509788624189,\"1024926737434\":1509788624189,\"1024926737432\":1509788624189,\"1021482406753\":1478686417110,\"1024926737438\":1509788624189,\"1024926737436\":1509788624189,\"1024926737424\":1509788624189,\"1024926737430\":1509788624189,\"1024926737431\":1509788624189,\"1024926737428\":1509788624189,\"1024926737429\":1509788624189,\"1024926737451\":1509788624189,\"1014229787264\":1478686804071,\"1019728243397\":1509788624315,\"1017564147139\":1478686804020,\"1019728243396\":1509788624317,\"1025593085013\":1509788624929,\"1024926737443\":1509788624189,\"1024926737440\":1509788624189,\"1019728243405\":1509788624315,\"1024926737441\":1509788624189,\"1024926737446\":1509788624189,\"1024926737444\":1509788624189,\"1022438819910\":1480585069078,\"1022438819911\":1480585069078,\"1024926737458\":1509788624189,\"1024926737456\":1509788624189,\"1024926737457\":1509788624189,\"1022438819892\":1480585069077,\"1008870269808\":1509788624372,\"1022438819893\":1480585069077,\"1022438819894\":1480585069077,\"1022438819895\":1480585069077,\"1022438819888\":1480585069077,\"1022438819889\":1480585069077,\"1019204995953\":1478686804020,\"1024926737485\":1509788624530,\"1022438819902\":1480585069078,\"1022438819896\":1480585069078,\"1022438819899\":1480585069078,\"1024926737496\":1509788624530,\"1024926737497\":1509788624530,\"1024926737502\":1509788624530,\"1022438819884\":1480585069077,\"1022438819885\":1480585069077,\"1022438819887\":1480585069077,\"1024926737489\":1509788624530,\"1022438819881\":1480585069077,\"1022438819883\":1480585069077,\"1019759568986\":1509788624280,\"1018513351186\":1509788624499,\"1022438819860\":1480585069104,\"1024926737515\":1509788624530,\"1023018563237\":1509788625049,\"1022438819858\":1480585069104,\"1018883898429\":1509788624287,\"1022438819859\":1480585069104,\"1024926737504\":1509788624530,\"1024926737505\":1509788624530,\"1019527177871\":1509788624316,\"1024926737511\":1509788624530,\"1024926737508\":1509788624530,\"1009505160489\":1478686804071,\"1022438819845\":1480585069104,\"1022438819846\":1480585069104,\"1022438819847\":1480585069104,\"1022438819840\":1480585069104,\"1022438819842\":1480585069104,\"1022438819843\":1480585069104,\"1019527177876\":1509788624317,\"1022438819852\":1480585069104,\"1022438819855\":1480585069104,\"1022438819848\":1480585069104,\"1022438819849\":1480585069104,\"1022438819850\":1480585069104,\"1022984087690\":1509788625050,\"1023540725795\":1509788624183,\"4976832430\":1509788624161,\"1018546512378\":1480585069070,\"1020849481916\":1478686417031,\"1021789380764\":1509788624993,\"1025561890743\":1509788624344,\"1016758598720\":1478686804031,\"1018513482730\":1509788625227,\"1020780801165\":1478686417225,\"1025679198455\":1509788624350,\"1025679198457\":1509788624350,\"1022208657314\":1480585069087,\"1021370075557\":1509788624441,\"1018513482747\":1509788625227,\"1011593691248\":1478686417220,\"4972900188\":1509788624161,\"1017151264036\":1478686804053,\"1018513482741\":1509788625227,\"1018513482738\":1509788625227,\"1023233522347\":1509788667538,\"1011618467463\":1478686804061,\"1187381634\":1491634246519,\"1011618467467\":1478686804061,\"1187381646\":1491634246519,\"1011618467466\":1478686804061,\"1022598598663\":1509788624462,\"1011618467465\":1478686804061,\"1020878321333\":1509788624934,\"1011618467468\":1478686804061,\"1021789380830\":1509788624993,\"1016758598712\":1478686804023,\"1009839528084\":1491634246520,\"1009710813434\":1480585069062,\"1020770839858\":1478686417225,\"1025180366365\":1509788624213,\"1024837999220\":1509788624948,\"1025628474178\":1509788624186,\"1025628474176\":1509788624197,\"1021921372168\":1478686417010,\"1187381601\":1491634246519,\"1022043664841\":1509788625076,\"1021247914079\":1478686417003,\"1020790500487\":1478686416997,\"1023748742001\":1491634246536,\"1019166067799\":1478686804020,\"1021789380667\":1509788624993,\"1021188408524\":1478686417038,\"1187381619\":1491634246519,\"1024154546952\":1509788667409,\"4994788875\":1509788667397,\"1021929629931\":1478686417142,\"1022108548426\":1478686417182,\"1018087624189\":1509788624362,\"1023786359123\":1509788624300,\"1021729744109\":1478686417124,\"1022166743767\":1478686417186,\"1021729744103\":1478686417124,\"1021729744102\":1478686417124,\"4997148223\":1509788667397,\"1008738540175\":1444487341761,\"1187381539\":1491634246519,\"1187381537\":1491634246519,\"1025628474174\":1509788624200,\"1025628474175\":1509788624204,\"1021992285286\":1478686417155,\"1023900525096\":1491634246510,\"1022438819573\":1480585069102,\"1022438819574\":1480585069102,\"1022438819575\":1480585069102,\"1021432470263\":1478686804065,\"1022438819568\":1480585069102,\"1022438819569\":1480585069102,\"1023219889216\":1509788625018,\"1022438819580\":1480585069102,\"1020966403767\":1478686417001,\"1020908599813\":1478686417080,\"1022438819576\":1480585069102,\"1022438819578\":1480585069102,\"1021209513014\":1478686417099,\"1022438819579\":1480585069102,\"1024411487055\":1509788624818,\"1022438819556\":1480585069102,\"1024136199096\":1509788624490,\"1024136199097\":1509788624490,\"1024411487058\":1509788624420,\"1022303686390\":1478686417199,\"1022438819552\":1480585069102,\"1024452251367\":1509788667888,\"1022438819554\":1480585069102,\"1022438819564\":1480585069102,\"1022438819565\":1480585069102,\"1022438819566\":1480585069102,\"1024452251368\":1509788667888,\"1022438819560\":1480585069102,\"1022438819562\":1480585069102,\"1024136199094\":1509788624489,\"1022438819563\":1480585069102,\"1017809646301\":1509788624286,\"1024136199095\":1509788624490,\"1019261229178\":1509788624301,\"1016547042851\":1509788624367,\"1016547042853\":1509788624367,\"1022438819548\":1480585069102,\"1015240337871\":1480585069068,\"1022438819551\":1480585069102,\"1020781192079\":1478686416997,\"1022438819546\":1480585069102,\"1022438819547\":1480585069102,\"1024846255428\":1509788624949,\"1021599061212\":1478686416989,\"1015496587395\":1478686804032,\"1024136199146\":1509788624489,\"1022328196904\":1478686417201,\"1024136199148\":1509788624490,\"1024136199149\":1509788624489,\"1024136199150\":1509788624489,\"1024136199142\":1509788624490,\"1021276881018\":1478686417040,\"1022501476712\":1509788624538,\"1016263530169\":1458304307281,\"1022438819488\":1480585069102,\"1022438819489\":1480585069102,\"1022438819490\":1480585069102,\"1022438819476\":1480585069102,\"1021225241929\":1509788624170,\"1024136199112\":1509788624490,\"1024136199113\":1509788624490,\"1022438819478\":1480585069102,\"1024136199115\":1509788624490,\"1022438819474\":1480585069102,\"1024136199118\":1509788624490,\"1022438819475\":1480585069102,\"1024136199119\":1509788624490,\"1022438819484\":1480585069102,\"1024136199106\":1509788624490,\"1022438819487\":1480585069102,\"1022438819480\":1480585069102,\"1025604485704\":1509788625242,\"1022438819481\":1480585069102,\"4985872704\":1509788624160,\"1024136199111\":1509788624490,\"1022438819460\":1480585069102,\"1022438819461\":1480585069102,\"5001732688\":1509788667396,\"1021056971557\":1478686417001,\"1022438819456\":1480585069102,\"1022438819457\":1480585069102,\"1022438819458\":1480585069102,\"1024136199134\":1509788624490,\"1022438819459\":1480585069102,\"1024136199135\":1509788624490,\"1024136199120\":1509788624490,\"1022438819469\":1480585069102,\"1025497533694\":1509788624367,\"1024136199122\":1509788624489,\"1022438819464\":1480585069102,\"1024136199125\":1509788624490,\"1022438819466\":1480585069102,\"1024584762988\":1509788624960,\"5001732769\":1509788667396,\"1021262204823\":1478686804039,\"1021848232590\":1509788624854,\"1022438819453\":1480585069102,\"1019884486077\":1478686804070,\"1019884486076\":1478686804070,\"1022438819455\":1480585069102,\"1022438819428\":1480585069102,\"1022438819429\":1480585069102,\"1022438819430\":1480585069102,\"1018335089147\":1478686804022,\"1022438819426\":1480585069102,\"1021848232594\":1509788624854,\"1021848232593\":1509788624854,\"1022428595467\":1478686417294,\"1021432470127\":1478686804065,\"1021848232599\":1509788624854,\"1021981670058\":1509788625068,\"1018513353837\":1509788624262,\"1008531446112\":1478686804015,\"1022476965932\":1478943089487,\"1022438819408\":1480585069102,\"1022438819410\":1480585069102,\"1022438819420\":1480585069102,\"1018925577463\":1509788624316,\"1022438819421\":1480585069102,\"1022438819422\":1480585069102,\"1022438819416\":1480585069102,\"1022438819418\":1480585069102,\"1022438819419\":1480585069102,\"1022438819397\":1480585069101,\"1022438819399\":1480585069101,\"1022438819392\":1480585069101,\"1022438819394\":1480585069101,\"1022438819395\":1480585069101,\"1022438819404\":1480585069101,\"1022438819405\":1480585069101,\"1024803787588\":1509788625136,\"1023702339896\":1509788624419,\"1022438819402\":1480585069101,\"1025529384448\":1509788624342,\"1023453430456\":1509788625008,\"1016936435210\":1478686804042,\"1016936435208\":1478686804042,\"1016936435209\":1478686804042,\"1022438819389\":1480585069101,\"1025289285669\":1509788624335,\"1025884590937\":1509788667467,\"1022438819386\":1480585069101,\"1001959063899\":1478686417023,\"1021413595339\":1509788624508,\"1022234872262\":1478686417065,\"1022438819350\":1480585069101,\"1022438819344\":1480585069101,\"1022438819356\":1480585069101,\"1022438819357\":1480585069101,\"1022438819358\":1480585069101,\"1022438819359\":1480585069101,\"1012146561189\":1478686417073,\"1022438819353\":1480585069101,\"1022438819333\":1480585069101,\"1022438819334\":1480585069101,\"1022438819335\":1480585069101,\"1025289285661\":1509788624343,\"134627570\":1444487341745,\"1022438819328\":1480585069101,\"1022438819329\":1480585069101,\"1022438819330\":1480585069101,\"1021543747803\":1509788624401,\"1022438819340\":1480585069101,\"1022438819342\":1480585069101,\"1022438819336\":1480585069101,\"1022438819337\":1480585069101,\"1022438819338\":1480585069101,\"1022438819829\":1480585069104,\"1022438819830\":1480585069104,\"1022438819831\":1480585069104,\"1022438819825\":1480585069104,\"1024463392558\":1509788624428,\"1022438819827\":1480585069104,\"1022438819836\":1480585069104,\"1022438819837\":1480585069104,\"1022438819838\":1480585069104,\"1022192301716\":1478686417279,\"1001959063696\":1478686417023,\"5001732865\":1509788667396,\"1021260631596\":1465470268201,\"1022438819780\":1480585069104,\"1022438819781\":1480585069104,\"1024411486833\":1509788625101,\"1023924514676\":1509788624948,\"1022438819783\":1480585069104,\"1022438819776\":1480585069104,\"1022438819777\":1480585069104,\"1021685311717\":1509788624396,\"4848511429\":1509788624160,\"1022438819784\":1480585069104,\"1022438819786\":1480585069104,\"1022438819787\":1480585069104,\"1021610071321\":1509788624401,\"1022438819765\":1480585069103,\"1022438819766\":1480585069103,\"1022438819767\":1480585069104,\"1453858797\":1478950494923,\"1022438819761\":1480585069103,\"1022438819762\":1480585069103,\"1022438819763\":1480585069103,\"1024411486727\":1509788624534,\"1022438819772\":1480585069104,\"1022438819774\":1480585069104,\"1021386327805\":1478686417006,\"1022438819748\":1480585069103,\"1022438819750\":1480585069103,\"1001959063765\":1478686417023,\"1022438819757\":1480585069103,\"1022438819758\":1480585069103,\"1022438819759\":1480585069103,\"1007443827168\":1480585069069,\"1022438819754\":1480585069103,\"1022438819733\":1480585069103,\"1000966735823\":1478686417021,\"1022438819734\":1480585069103,\"1022438819735\":1480585069103,\"1021928056353\":1478686417142,\"1022438819728\":1480585069103,\"1022438819731\":1480585069103,\"1021682035068\":1478686417120,\"1021644674905\":1478686417119,\"1022438819717\":1480585069103,\"1025527549864\":1509788624469,\"1303381187\":1444487341716,\"1022438819719\":1480585069103,\"1022438819712\":1480585069103,\"1009710685935\":1480585069062,\"1022438819715\":1480585069103,\"1025839501658\":1509788667844,\"1020613814470\":1478686417027,\"1022438819727\":1480585069103,\"1022438819720\":1480585069103,\"1023702339832\":1509788624819,\"1022438819721\":1480585069103,\"1022438819723\":1480585069103,\"1025796382635\":1509788624274,\"1023165755395\":1509788625044,\"1022438819699\":1480585069103,\"1022477359360\":1478943089230,\"1022438819709\":1480585069103,\"1022438819710\":1480585069103,\"1022438819705\":1480585069103,\"1022438819686\":1480585069103,\"1021560000705\":1509788624397,\"1025331491836\":1509788625098,\"1022438819683\":1480585069103,\"1021682035083\":1478686417121,\"1022438819692\":1480585069103,\"1022438819693\":1480585069103,\"1022438819695\":1480585069103,\"1020959980677\":1478686417033,\"1010295010097\":1491634246528,\"1024411486947\":1509788624195,\"1022438819666\":1480585069103,\"1022438819667\":1480585069103,\"1001681433\":1444487341727,\"1022459135502\":1478686417217,\"1022438819652\":1480585069103,\"1022438819653\":1480585069103,\"1022438819654\":1480585069103,\"1022438819655\":1480585069103,\"1025237253563\":1509788624268,\"1022438819648\":1480585069103,\"1022438819649\":1480585069103,\"1022438819650\":1480585069103,\"1022438819651\":1480585069103,\"1022459135494\":1478686417217,\"1022438819660\":1480585069103,\"1022438819661\":1480585069103,\"1022438819662\":1480585069103,\"1022438819663\":1480585069103,\"1022438819656\":1480585069103,\"1025237253556\":1509788624268,\"1020640291766\":1478686417028,\"1022438819657\":1480585069103,\"1024226898430\":1509788625070,\"1022438819659\":1480585069103,\"1021314892337\":1465470268207,\"1025797562210\":1509788625114,\"1021314892336\":1465470268207,\"1025797562211\":1509788625123,\"1021314892339\":1465470268207,\"1025237253578\":1509788624268,\"1021314892338\":1465470268207,\"1023702339655\":1509788624195,\"1025797562212\":1509788625105,\"1022461101639\":1478686417217,\"1022438819644\":1480585069103,\"1022438819645\":1480585069103,\"1025797562219\":1509788625086,\"1022438819646\":1480585069103,\"1022438819647\":1480585069103,\"1024144456417\":1509788624276,\"1022438819643\":1480585069103,\"1022435935440\":1478686417016,\"1022438819621\":1480585069103,\"1022438819623\":1480585069103,\"1022093340857\":1478686417063,\"1022438819618\":1480585069103,\"1026505066828\":1515854751199,\"1021314892333\":1465470268207,\"1022438819624\":1480585069103,\"1021314892335\":1465470268207,\"1022438819604\":1480585069103,\"1025270153171\":1509788624855,\"286677236\":1478686804029,\"1022438819606\":1480585069103,\"1025270153168\":1509788624856,\"1022438819607\":1480585069103,\"1025270153169\":1509788624856,\"1022438819600\":1480585069102,\"1022438819601\":1480585069102,\"1022438819603\":1480585069103,\"1022438819612\":1480585069103,\"1022438819613\":1480585069103,\"1022438819614\":1480585069103,\"1022438819608\":1480585069103,\"1022438819609\":1480585069103,\"1022438819610\":1480585069103,\"1016396442856\":1478686804017,\"1022438819596\":1480585069102,\"1022438819597\":1480585069102,\"1022438819598\":1480585069102,\"1022438819592\":1480585069102,\"1025270153166\":1509788624855,\"1022438819593\":1480585069102,\"1025270153167\":1509788624856,\"1022438819595\":1480585069102,\"1022052842998\":1478686804049,\"1001681328\":1444487341749,\"1022382719018\":1478686417205,\"1018644554009\":1478686804022,\"1021336520321\":1478686417041,\"1025289026841\":1509788624286,\"1021602207454\":1478686417008,\"1518604427\":1491634246518,\"1020929965777\":1478686417082,\"1021757927287\":1509788624395,\"1021700516054\":1509788624177,\"1023521064017\":1509788624417,\"1022146950769\":1478686416973,\"1022434363144\":1478686417212,\"1023521064002\":1509788624417,\"1022434363145\":1478686417212,\"1021602207459\":1478686417008,\"1023521064007\":1509788624417,\"1023521064005\":1509788624417,\"1023521064010\":1509788624417,\"1023521064011\":1509788624417,\"1023521064008\":1509788624417,\"1023521064009\":1509788624417,\"1023521064012\":1509788624417,\"1023521063990\":1509788624417,\"1025628604048\":1509788624428,\"1025628604050\":1509788624425,\"1023521063994\":1509788624417,\"1023521063995\":1509788624417,\"1023521063992\":1509788624417,\"1023521063998\":1509788624417,\"1021727648022\":1478686417051,\"1022065687932\":1478686417270,\"1023521063996\":1509788624417,\"1021441513494\":1478686417044,\"1016396443466\":1478686804017,\"1025331490879\":1509788625098,\"1019287705854\":1509788625080,\"1025428851427\":1509788625089,\"1024586335381\":1509788624409,\"1023751624405\":1509788624926,\"1025428851421\":1509788625117,\"1001681366\":1444487341728,\"1025428851422\":1509788625126,\"1025428851423\":1509788625109,\"1022418503267\":1478686417209,\"1021742853657\":1478686804047,\"1022204857004\":1480585069085,\"1012130049312\":1478686416994,\"102779990\":1491634246515,\"1021218689014\":1465470268196,\"1023521064162\":1509788624812,\"1023521064166\":1509788624812,\"1007164339667\":1478686804032,\"1022239590476\":1478686417194,\"1018146079817\":1478686804026,\"1023521064170\":1509788624812,\"1023521064171\":1509788624812,\"4994786089\":1509788667396,\"1021432469587\":1478686804028,\"1023521064147\":1509788624812,\"271735440\":1478686804050,\"1023521064144\":1509788624813,\"1024462212350\":1509788624528,\"1023521064151\":1509788624812,\"1023521064155\":1509788624812,\"1023521064152\":1509788624812,\"1019106430267\":1478686804065,\"1023521064159\":1509788624812,\"1019227145455\":1509788625078,\"1007393883935\":1478686804030,\"1013038880649\":1478686804028,\"1023521064128\":1509788624813,\"4994917133\":1509788667396,\"1010093810709\":1491634246528,\"1023521064132\":1509788624813,\"1022111559874\":1478686417182,\"1023521064137\":1509788624813,\"1021290644365\":1478686417040,\"1023521064120\":1509788624812,\"1023521064127\":1509788624813,\"1023521064125\":1509788624812,\"1004848201646\":1478686804052,\"1009744499524\":1491634246512,\"1022454940961\":1478686417216,\"1022244046927\":1478686417283,\"1019525081698\":1509788625078,\"1008586628722\":1478686804030,\"1018513354279\":1509788624263,\"1012538340856\":1478686804049,\"1023950594607\":1509788667501,\"1025783799445\":1509788624389,\"5001732384\":1509788667395,\"1022463067237\":1509788625065,\"1022438819324\":1480585069101,\"1022438819326\":1480585069101,\"1022438819327\":1480585069101,\"1025504350007\":1509788624295,\"1021432470012\":1478686804026,\"1022438819323\":1480585069101,\"1026232335305\":1514456869770,\"1022019026667\":1478686417058,\"1022019026669\":1478686417058,\"1022438819296\":1480585069101,\"1026232335308\":1514456869769,\"1022019026668\":1478686417058,\"1025783799425\":1509788624389,\"1025783799427\":1509788624389,\"1026232335301\":1514456869770,\"1025783799434\":1509788624389,\"1025344598205\":1509788624307,\"1026232335303\":1514456869770,\"1016396312124\":1478686804017,\"1022438819285\":1480585069101,\"1024584762829\":1509788624960,\"1022438819287\":1480585069101,\"1021289071193\":1478686417040,\"1022438819293\":1480585069101,\"1022438819294\":1480585069101,\"1022438819291\":1480585069101,\"1022438819271\":1480585069101,\"1022438819264\":1480585069101,\"1022438819265\":1480585069101,\"1022438819267\":1480585069101,\"1022438819276\":1480585069101,\"1021651883237\":1478686417120,\"1022438819279\":1480585069101,\"1022438819272\":1480585069101,\"1022438819275\":1480585069101,\"1022438819252\":1480585069101,\"1022438819253\":1480585069101,\"1022438819254\":1480585069101,\"1021906167295\":1478686417139,\"1022438819260\":1480585069101,\"1022438819262\":1480585069101,\"1022438819256\":1480585069101,\"1018927806325\":1509788624315,\"1022438819258\":1480585069101,\"1022438819259\":1480585069101,\"1018513354626\":1509788624263,\"1023960032103\":1509788625071,\"1022438819236\":1480585069101,\"1024462212362\":1509788624528,\"1022047862128\":1478686417059,\"1024462212363\":1509788624529,\"1024462212360\":1509788624528,\"1022438819232\":1480585069101,\"1024462212366\":1509788624529,\"1022438819233\":1480585069101,\"4997145230\":1509788667396,\"1024462212364\":1509788624529,\"1024462212365\":1509788624529,\"1024462212354\":1509788624529,\"1025300034323\":1509788624307,\"1024462212352\":1509788624529,\"1024462212353\":1509788624529,\"1024462212358\":1509788624528,\"1025902417727\":1509788667460,\"1024462212356\":1509788624529,\"1022438819220\":1480585069101,\"1022438819221\":1480585069101,\"1024462212408\":1509788624827,\"1022438819216\":1480585069101,\"1022438819218\":1480585069101,\"1022438819219\":1480585069101,\"1022438819228\":1480585069101,\"1022438819230\":1480585069101,\"1025504350038\":1509788624295,\"1024496419642\":1509788625028,\"1022438819231\":1480585069101,\"1022438819224\":1480585069101,\"1022438819225\":1480585069101,\"1024668915845\":1509788625025,\"1008675099170\":1478686804030,\"1025504350028\":1509788624295,\"1022438819205\":1480585069100,\"1008675099168\":1478686804020,\"1022438819207\":1480585069100,\"1024846255621\":1509788624949,\"1022438819212\":1480585069100,\"1022438819213\":1480585069100,\"1021980883289\":1478686417151,\"1022438819214\":1480585069100,\"1025504350022\":1509788624295,\"1022438819215\":1480585069101,\"1022438819209\":1480585069100,\"1022438819210\":1480585069100,\"1022438819211\":1480585069100,\"1012127165470\":1478686417223,\"1021989140529\":1478686417155,\"1022438819172\":1480585069100,\"1021018829322\":1478686417090,\"1022438819173\":1480585069100,\"1022438819174\":1480585069100,\"1022438819169\":1480585069100,\"1022438819181\":1480585069100,\"1024444518097\":1509788625030,\"1022438819182\":1480585069100,\"1023927266720\":1491634246529,\"1022438819178\":1480585069100,\"1022438819179\":1480585069100,\"1873683468\":1444487341751,\"1021639562553\":1478686417119,\"1022438819159\":1480585069100,\"1025783799351\":1509788624388,\"1021639562559\":1478686417119,\"1022438819152\":1480585069100,\"1022438819153\":1480585069100,\"1022438819155\":1480585069100,\"1025783799356\":1509788624388,\"1022438819165\":1480585069100,\"1025783799357\":1509788624388,\"1022438819166\":1480585069100,\"1025783799358\":1509788624388,\"1022438819167\":1480585069100,\"1025783799359\":1509788624388,\"1022438819160\":1480585069100,\"1025783799352\":1509788624388,\"1022438819161\":1480585069100,\"1025783799353\":1509788624388,\"1025783799354\":1509788624388,\"1022438819163\":1480585069100,\"1025783799355\":1509788624388,\"1000144148065\":1478686804029,\"1000144148067\":1478686804029,\"1022438819149\":1480585069100,\"1021976951237\":1478686417301,\"1022438819150\":1480585069100,\"1022438819151\":1480585069100,\"1025180367569\":1509788624213,\"1022438819147\":1480585069100,\"1018513354507\":1509788624263,\"1148981173\":1478686804051,\"1022238673160\":1509788624947,\"1025783799360\":1509788624388,\"4994785888\":1509788667396,\"1024735239628\":1509788667506,\"1021639562561\":1478686417119,\"1021639562565\":1478686417119,\"1024735239627\":1509788667506,\"1025783799415\":1509788624389,\"5001732546\":1509788667396,\"4985873099\":1509788624160,\"1021765529331\":1478686417300,\"1021674171267\":1478686804034,\"1025783799416\":1509788624389,\"1025783799417\":1509788624389,\"1022292807288\":1478686417068,\"1016936435004\":1478686804059,\"1016936435002\":1478686804059,\"1016936435003\":1478686804059,\"1016936435000\":1478686804058,\"1016936435001\":1478686804059,\"1018517679992\":1480585069070,\"1016936434998\":1478686804058,\"1016936434999\":1478686804058,\"1016936434996\":1478686804058,\"1016936434997\":1478686804058,\"1016936434994\":1478686804058,\"1012155606467\":1478686416987,\"1017318117383\":1465470268237,\"1021254470502\":1478686417004,\"1002640260836\":1478686804051,\"1002640260833\":1478686804051,\"1002640260832\":1478686804051,\"1021254339450\":1478686417039,\"1023791862329\":1509788624177,\"1002640260813\":1478686804051,\"1002640260814\":1478686804051,\"1023354996861\":1509788624220,\"1024681107208\":1509788624435,\"1023354996849\":1509788624220,\"1023354996851\":1509788624220,\"1023354996852\":1509788624220,\"1023354996853\":1509788624220,\"1021892403531\":1478686417138,\"1001461016444\":1478686417022,\"1002640260829\":1478686804051,\"1002640260828\":1478686804051,\"1002640260825\":1478686804051,\"1002640260824\":1478686804051,\"1021616230858\":1509788624311,\"1002640260826\":1478686804051,\"1002640260821\":1478686804051,\"1002640260820\":1478686804051,\"1002640260823\":1478686804051,\"1002640260816\":1478686804051,\"1002640260819\":1478686804051,\"1025797561058\":1509788624827,\"1025797561059\":1509788624831,\"1024462211609\":1509788624988,\"1024462211614\":1509788624988,\"1025797561060\":1509788624822,\"1009957235336\":1478686804064,\"1025797561061\":1509788624616,\"1021045569451\":1478686417092,\"4994786786\":1509788667394,\"1022208658650\":1480585069087,\"1022235266378\":1478686417193,\"1022501477725\":1509788624538,\"1018146079417\":1478686804026,\"1021774572039\":1509788625010,\"1021432471192\":1478686804043,\"1024462211626\":1509788624988,\"1024462211630\":1509788624988,\"1024462211618\":1509788624988,\"1023987951330\":1509788624214,\"1024462211622\":1509788624988,\"1001461016529\":1478686417022,\"2026779724\":1491634246513,\"1022023088445\":1509788624463,\"1021727649746\":1478686417051,\"1024499958929\":1509788624289,\"1018513352774\":1509788624603,\"1021144632469\":1478686417037,\"4997145923\":1509788667396,\"1018309663624\":1478686804065,\"1022758382933\":1509788625057,\"1025018489772\":1509788624601,\"1021890437400\":1478686417138,\"1025219428249\":1509788625128,\"1025219428250\":1509788625128,\"1025219428251\":1509788625128,\"1025219428252\":1509788625128,\"1022049827489\":1478686417172,\"1024735238834\":1509788667506,\"1020847514378\":1478686416999,\"1025219428245\":1509788625128,\"1024735238842\":1509788667507,\"1025219428237\":1509788625128,\"1025219428238\":1509788625104,\"1025219428239\":1509788625129,\"1021729091485\":1478686417051,\"1025219428230\":1509788625245,\"1025219428231\":1509788625245,\"1024735238827\":1509788667506,\"911899291\":1478686417024,\"1021700517428\":1478686804046,\"5001733863\":1509788667395,\"1022307879534\":1478686416981,\"1021329965117\":1465470268219,\"1024735238855\":1509788667507,\"1025219428320\":1509788625136,\"1024735238860\":1509788667506,\"1024202521358\":1509788625034,\"1024735238859\":1509788667506,\"1025219428313\":1509788625128,\"1025219428314\":1509788625128,\"1016670648901\":1478686804018,\"1020272099581\":1465470268247,\"1025219428318\":1509788625135,\"1025219428319\":1509788625136,\"1025219428304\":1509788625129,\"1025219428306\":1509788625113,\"1025219428307\":1509788625128,\"1025797560910\":1509788624197,\"1025219428308\":1509788625128,\"1025219428309\":1509788625128,\"1025797560908\":1509788624200,\"1025219428310\":1509788625128,\"1025797560909\":1509788624203,\"1025219428311\":1509788625128,\"1025797560915\":1509788624185,\"1022399891412\":1478686417207,\"1025219428299\":1509788625128,\"364403021\":1478686804029,\"1025219428302\":1509788625128,\"1025219428303\":1509788625104,\"1022399891422\":1478686417207,\"1024462211744\":1509788624200,\"1025219428290\":1509788625245,\"1025219428293\":1509788625245,\"1023946402330\":1491634246529,\"1021141224747\":1478686417037,\"1023946402332\":1491634246529,\"1021396288030\":1478686417043,\"1020902834020\":1478686417227,\"1024055714707\":1509788624328,\"1004329147211\":1444487341715,\"1024956754383\":1509788624352,\"1020049764936\":1465470268308,\"1018513484254\":1509788625229,\"1024055714695\":1509788624327,\"1024055714688\":1509788624327,\"1018513484250\":1509788625229,\"1024055714691\":1509788624327,\"1021950737655\":1478686417261,\"1020102889256\":1509788624369,\"1024055714698\":1509788624328,\"1021043603256\":1478686416991,\"1021833947076\":1478686417256,\"1019384042958\":1509788624933,\"1018513484266\":1509788625229,\"1018513484258\":1509788625229,\"1018513484287\":1509788625228,\"1024462211944\":1509788624188,\"1024462211950\":1509788624188,\"1018513484282\":1509788625228,\"1024462211938\":1509788624188,\"1024462211939\":1509788624188,\"1019384042962\":1509788624933,\"1024462211936\":1509788624188,\"1018513484277\":1509788625228,\"1024462211937\":1509788624188,\"1024462211942\":1509788624188,\"1018513484272\":1509788625229,\"1023354997018\":1509788624856,\"1022090458364\":1478686417180,\"1020886055976\":1478686416986,\"1023354997010\":1509788624856,\"1019600841044\":1509788624971,\"1023354997012\":1509788624856,\"1023354997013\":1509788624856,\"1021881655623\":1509788624423,\"1020886055985\":1478686416986,\"1023354997007\":1509788624856,\"1025593477013\":1509788624915,\"4961233619\":1509788624160,\"1021225240664\":1509788624170,\"1021978787637\":1478686417151,\"1025282603522\":1509788624423,\"1011947458897\":1478686804030,\"1021978787644\":1478686417151,\"1021435223845\":1478686417106,\"1020295562046\":1509788625076,\"1025675788910\":1509788624381,\"1025675788911\":1509788624381,\"253641362\":1478950494908,\"1023830142058\":1509788624393,\"1019944645648\":1465470268276,\"1025675788912\":1509788624381,\"1024837996628\":1509788624948,\"1022458610181\":1478686417072,\"1020314305086\":1478686804031,\"1023435080766\":1509788625082,\"1020314305083\":1478686804031,\"1021954145388\":1478686416986,\"1023958066673\":1509788667535,\"1000527804747\":1444487341715,\"1017800078539\":1478686804016,\"1021975641939\":1478686417263,\"1023354997148\":1509788624445,\"1023354997149\":1509788624445,\"1024163985861\":1509788667462,\"1023354997150\":1509788624445,\"1003645624529\":1478950494936,\"1024462211986\":1509788624188,\"1017276700494\":1509788624369,\"1025372254677\":1509788624305,\"1024462211985\":1509788624188,\"1022483127709\":1478943089488,\"1024462211988\":1509788624188,\"1023354997143\":1509788624445,\"1024462211982\":1509788624188,\"1024462211983\":1509788624188,\"1018513352977\":1509788624603,\"1021893189776\":1509788625104,\"1020995499282\":1478686417034,\"1025797561170\":1509788624431,\"1021593556644\":1478686417048,\"1025797561171\":1509788624425,\"1021978394551\":1478686417010,\"1025797561169\":1509788624428,\"1022385866730\":1478686417205,\"1025797561172\":1509788624406,\"1020995499270\":1478686417034,\"324951717\":1491634246534,\"1023354997156\":1509788624445,\"1025524009744\":1509788624916,\"1025524009745\":1509788624916,\"4994787253\":1509788667395,\"1001461015888\":1478686417022,\"1025524009747\":1509788624835,\"1025524009748\":1509788624835,\"1025524009749\":1509788624826,\"1025524009753\":1509788624848,\"1024955968220\":1509788624920,\"1012155606997\":1478686416987,\"1024955968222\":1509788624272,\"1024955968223\":1509788624616,\"1020358876377\":1465470268324,\"1025675788784\":1509788624381,\"1020358876376\":1465470268324,\"1025675788785\":1509788624381,\"1024136199614\":1509788625085,\"1020358876378\":1465470268324,\"1025148772697\":1509788667843,\"1021138996823\":1478686416988,\"1024136199605\":1509788625086,\"1025524009777\":1509788624835,\"1001461015920\":1478686417022,\"1020212201388\":1478686804053,\"1025524009781\":1509788624843,\"1025524009782\":1509788624867,\"1020102888475\":1509788624369,\"1021048714746\":1478686417093,\"1024955968224\":1509788625248,\"1020212201407\":1478686804053,\"1020212201405\":1478686804053,\"1020212201403\":1478686804053,\"1020212201402\":1478686804053,\"1020212201401\":1478686804053,\"1025524009766\":1509788624835,\"1020212201400\":1478686804053,\"1020212201399\":1478686804053,\"1020212201398\":1478686804053,\"1011618465786\":1478686804061,\"1020212201397\":1478686804053,\"1020212201396\":1478686804053,\"1020212201395\":1478686804053,\"1011618465791\":1478686804061,\"1020212201394\":1478686804053,\"1011618465790\":1478686804061,\"1020212201393\":1478686804053,\"1011618465789\":1478686804061,\"1020212201392\":1478686804053,\"1011618465788\":1478686804061,\"1002640260265\":1478686804051,\"1025530431690\":1509788624800,\"1025524009813\":1509788624510,\"1002640260267\":1478686804051,\"1025530431688\":1509788624833,\"1025530431689\":1509788624823,\"1002640260261\":1478686804051,\"1007840455002\":1509788624390,\"1025524009816\":1509788624510,\"1000151225096\":1509788625082,\"1022204857999\":1480585069085,\"1025530431687\":1509788624829,\"1002640260263\":1478686804051,\"1002640260262\":1478686804051,\"1025524009819\":1509788624433,\"1025524009820\":1509788624433,\"1002640260259\":1478686804051,\"1025524009822\":1509788624427,\"1002640260258\":1478686804051,\"1001461015816\":1478686417022,\"1024136199625\":1509788625085,\"4985874253\":1509788624159,\"1021733415558\":1509788624395,\"1025524009847\":1509788624433,\"1021437713643\":1478686417044,\"1011825433597\":1509788624377,\"1024136199617\":1509788625085,\"1021248440736\":1478686417004,\"1024136199623\":1509788625085,\"1025675788701\":1509788624381,\"1025675788702\":1509788624381,\"1025675788703\":1509788624381,\"1025524009835\":1509788624433,\"1025524009839\":1509788624433,\"1022051531113\":1478686417172,\"1019956966465\":1509788625079,\"1019956966466\":1509788624366,\"1019838872902\":1478686804046,\"1021987175753\":1478686417154,\"1023867497760\":1509788624355,\"1025524009856\":1509788624436,\"1025524009860\":1509788624454,\"1023730914660\":1509788624960,\"1021225634738\":1478686417039,\"1025524009861\":1509788624437,\"1025524009862\":1509788624455,\"1024663542989\":1509788625026,\"1024462211322\":1509788624413,\"1023867497741\":1509788624356,\"1024462211323\":1509788624413,\"1025524009905\":1509788624543,\"1021776537839\":1478686417254,\"1023867497742\":1509788624356,\"1024462211320\":1509788624413,\"1021776537838\":1478686417254,\"1023867497743\":1509788624356,\"1024462211326\":1509788624413,\"1001461016054\":1478686417022,\"1024462211327\":1509788624413,\"1025524009909\":1509788624543,\"1024462211325\":1509788624413,\"1025524009911\":1509788624543,\"1024462211314\":1509788624413,\"1012155606894\":1478686416987,\"1024462211315\":1509788624413,\"1024462211312\":1509788624413,\"1023867497756\":1509788624356,\"1023867497757\":1509788624356,\"1023867497758\":1509788624355,\"1023867497759\":1509788624355,\"1023867497752\":1509788624355,\"1023867497753\":1509788624355,\"1023867497754\":1509788624355,\"1023867497755\":1509788624356,\"1023867497748\":1509788624356,\"1006681992383\":1478686804032,\"1023867497749\":1509788624356,\"1025524009897\":1509788624552,\"1025530431543\":1509788625088,\"1023867497750\":1509788624356,\"1025530431540\":1509788625125,\"1023867497751\":1509788624356,\"1025530431541\":1509788625108,\"1023867497744\":1509788624356,\"1012129655286\":1478686417025,\"1023867497745\":1509788624356,\"1025530431539\":1509788625116,\"1023867497746\":1509788624356,\"1023867497747\":1509788624356,\"1018513484303\":1509788625228,\"1021774571694\":1509788625010,\"1024501925694\":1509788625029,\"1013122772221\":1478686804051,\"1013122772220\":1478686804051,\"1018513484298\":1509788625228,\"1018513484297\":1509788625228,\"1023129713007\":1509788624939,\"1025385886694\":1509788624506,\"1018513484293\":1509788625228,\"5001733357\":1509788667396,\"5001733356\":1509788667396,\"1021906296959\":1509788624466,\"1022153110320\":1478686416973,\"1021323806105\":1465470268211,\"1018513484317\":1509788625228,\"1022953677552\":1509788624291,\"1021323806108\":1465470268211,\"1010093809782\":1491634246528,\"1021323806111\":1465470268211,\"1018513484311\":1509788625228,\"1024206321987\":1509788625034,\"1018513484310\":1509788625228,\"1018513484328\":1509788625228,\"1021323806113\":1465470268211,\"1021323806114\":1465470268211,\"1001461015997\":1478686417022,\"1021264823842\":1478686417004,\"1022253878549\":1478686417284,\"1022456643901\":1478686417072,\"1020634131808\":1478686804066,\"1024136199329\":1509788625086,\"1024136199333\":1509788625086,\"1025675788528\":1509788624381,\"1025675788529\":1509788624381,\"1025675788530\":1509788624381,\"1021888078525\":1509788624465,\"1021941825419\":1509788624464,\"1021700517332\":1478686804046,\"1020634131805\":1478686804066,\"1020634131807\":1478686804066,\"1020634131806\":1478686804066,\"1025331492182\":1509788625098,\"1023867497708\":1509788624356,\"1023867497709\":1509788624356,\"1025331492139\":1509788625098,\"1023867497710\":1509788624356,\"1023867497704\":1509788624356,\"1023867497705\":1509788624356,\"1023867497706\":1509788624356,\"1023867497707\":1509788624356,\"1023867497700\":1509788624356,\"1023867497701\":1509788624356,\"1023867497702\":1509788624356,\"1023867497703\":1509788624356,\"1023867497696\":1509788624357,\"1023867497697\":1509788624357,\"1023867497698\":1509788624356,\"649488889\":1491634246511,\"1023867497699\":1509788624356,\"1024607961306\":1509788667589,\"4994787042\":1509788667394,\"1024462211330\":1509788624413,\"1024462211331\":1509788624413,\"1024462211329\":1509788624413,\"1011593693223\":1478686417220,\"1012155606692\":1478686416987,\"1021896991303\":1478686417258,\"1025331492110\":1509788625098,\"1020765070814\":1478686417028,\"1020493223336\":1509788625078,\"1020966402516\":1478686417001,\"1025537640784\":1509788624306,\"1023867497692\":1509788624356,\"1023867497693\":1509788624356,\"1023867497694\":1509788624356,\"1023867497695\":1509788624357,\"1025797560791\":1509788624540,\"1023867497691\":1509788624357,\"1018559752560\":1478686804015,\"1025797560795\":1509788624523,\"1025797560792\":1509788624542,\"1025797560793\":1509788624536,\"1025007610019\":1509788624977,\"1022080759727\":1478686417178,\"1021585036378\":1478686417114,\"1019838872651\":1478686804046,\"1025524009624\":1509788625128,\"1025524009626\":1509788625128,\"1025524009627\":1509788625128,\"1004360210414\":1478686804039,\"1025524009631\":1509788625167,\"1019244970179\":1509788624316,\"1022309320985\":1478686417199,\"1025772002237\":1509788624866,\"1025524009605\":1509788625245,\"1025524009606\":1509788625244,\"1025524009607\":1509788625128,\"1007198850761\":1478686804032,\"1025524009609\":1509788625112,\"1021774572018\":1509788625010,\"1025590724263\":1509788624342,\"1025524009634\":1509788625135,\"1025524009637\":1509788625169,\"1021246212191\":1478686417039,\"1016979294182\":1478686804015,\"1021915996579\":1478686417141,\"1025524009682\":1509788624214,\"1022213508997\":1478686417281,\"1021489224358\":1478686417243,\"1022138954523\":1478686417277,\"1025524009693\":1509788624205,\"1025524009669\":1509788624270,\"1025524009673\":1509788624270,\"1022075123546\":1478686804039,\"1025331492273\":1509788625098,\"1021988879429\":1478686417264,\"1025412886608\":1509788624537,\"1022249684445\":1478686417196,\"1025412886616\":1509788624524,\"1025524009724\":1509788625005,\"1024462211498\":1509788624988,\"1024462211499\":1509788624988,\"1025524009698\":1509788624205,\"1025524009703\":1509788624205,\"1024462211501\":1509788624988,\"1024462211494\":1509788624988,\"1024574669435\":1509788624925,\"1025412886606\":1509788624541,\"1025412886607\":1509788624543,\"1024462211493\":1509788624988,\"1021485942176\":1509788624398,\"1004571637197\":1478950494938,\"1015594231491\":1478686804065,\"1021700518637\":1478686804047,\"1025523750158\":1509788625171,\"1022447476331\":1478686804050,\"4952323854\":1509788624162,\"1021655289765\":1478686417008,\"4994791815\":1509788667396,\"1021935788239\":1509788625165,\"1019608315334\":1509788625077,\"1012733352743\":1478686804030,\"1021612166248\":1478686417247,\"1023730912161\":1509788624960,\"1024343027489\":1509788625031,\"1021606268108\":1478686417116,\"1021612166246\":1478686417247,\"1021994115865\":1478686417011,\"1022488494480\":1478943089254,\"1020612899293\":1478686417027,\"1024115876490\":1509788667888,\"1021989790668\":1478686417155,\"1013517560522\":1444487341759,\"1021900143976\":1478686417139,\"1025505137813\":1509788624340,\"1025505137814\":1509788624338,\"1025505137815\":1509788624341,\"1025505137816\":1509788624342,\"1018513355877\":1509788625227,\"1020444460910\":1478686804033,\"1017435173872\":1478686804032,\"1021894114703\":1509788624466,\"1010013600175\":1491634246526,\"1010013600174\":1491634246526,\"1010013600173\":1491634246521,\"1022492164449\":1478943089490,\"1024771017016\":1509788667537,\"1019900864234\":1509788624959,\"1024154543203\":1509788667409,\"1010013600178\":1491634246526,\"1019066455319\":1509788625019,\"1019066455324\":1509788624282,\"1024374657404\":1509788625086,\"1024374657405\":1509788625086,\"1021948633338\":1509788624389,\"1021737612707\":1478686417124,\"1013517560754\":1444487341759,\"1011900925977\":1478686804024,\"1025609734904\":1509788625138,\"1024120464311\":1509788667495,\"1024774031540\":1509788624420,\"1021018171536\":1478686417090,\"1022236316658\":1478686417014,\"1024120464301\":1509788667495,\"1016444156208\":1478686804016,\"1327111680\":1444487341747,\"1021983367939\":1478686416992,\"1025609734888\":1509788625138,\"1020314312372\":1478686804027,\"1024120464281\":1509788667495,\"1025609734871\":1509788625138,\"1024120464284\":1509788667495,\"4976834956\":1509788624161,\"1024120464275\":1509788667459,\"1021663022621\":1509788624324,\"1023148845486\":1509788625078,\"243818428\":1444487341725,\"1019847385725\":1509788625080,\"1021375586156\":1478686417105,\"1021375586153\":1478686417105,\"1024771016884\":1509788667537,\"1022471324067\":1478686417219,\"1019599402358\":1480585069068,\"1016400115585\":1480585069069,\"1024952431178\":1509788624193,\"1025100414234\":1509788624273,\"1021492495379\":1478686417243,\"1022518641534\":1509788624855,\"1021782832800\":1509788624395,\"1022518641535\":1509788624855,\"1021492495371\":1478686417243,\"1024331231056\":1509788624419,\"1025585747999\":1509788624351,\"1016936437678\":1478686804059,\"1016936437679\":1478686804059,\"1016936437677\":1478686804059,\"1010025397180\":1491634246527,\"1020802694419\":1478686417077,\"1010025397173\":1491634246527,\"1010025397169\":1491634246522,\"1010025397166\":1491634246527,\"1016936437684\":1478686804059,\"1016936437685\":1478686804059,\"1016936437682\":1478686804059,\"1016936437683\":1478686804059,\"1021001787872\":1478686417089,\"1016936437681\":1478686804059,\"1024120464327\":1509788667495,\"4976834849\":1509788624160,\"1016620442155\":1478686804049,\"1025713668145\":1509788624305,\"1014359031285\":1465470268240,\"1008046630152\":1478686804030,\"1025373301839\":1509788624383,\"1024952431268\":1509788624419,\"1025100414459\":1509788624181,\"1022518641536\":1509788624855,\"1022518641537\":1509788624855,\"1025373301848\":1509788624383,\"4994791427\":1509788667396,\"1021909974988\":1478686417140,\"1025373301849\":1509788624383,\"1019599402375\":1480585069061,\"1024273033784\":1509788624353,\"1025373301847\":1509788624383,\"1025373301840\":1509788624383,\"1019599402382\":1480585069065,\"1025100414354\":1509788624173,\"1018513356040\":1509788625228,\"1021618457619\":1509788624397,\"1022269347133\":1478686417197,\"1025373301816\":1509788624383,\"1021841292100\":1478686417135,\"1025373301817\":1509788624383,\"1021326039793\":1478686417238,\"1025373301814\":1509788624383,\"1025373301815\":1509788624383,\"1024774031438\":1509788624818,\"1021288028291\":1465470268201,\"1026507690431\":1515854751198,\"1021375586213\":1478686417105,\"1026507690429\":1515854751199,\"1021547678181\":1478686417113,\"1014359031191\":1465470268240,\"1021375586221\":1478686417105,\"1021928193349\":1478686417144,\"1021928193348\":1478686417144,\"1019759574144\":1509788624281,\"1024773639085\":1509788625021,\"1020915802546\":1478686417032,\"1020612899762\":1478686417027,\"1022533714231\":1480585069076,\"1024779799405\":1509788624434,\"1019872552945\":1478686804032,\"1020932974327\":1478686417083,\"1013013057252\":1444487341758,\"1023472179462\":1509788624195,\"1013013057219\":1444487341758,\"1020606083667\":1478686417018,\"1024017448635\":1509788624268,\"1024687392423\":1509788624999,\"1021549906819\":1478686417047,\"1021596698996\":1509788624405,\"1024055983329\":1509788624928,\"1021646507134\":1478686417049,\"4976835281\":1509788624161,\"1022079576615\":1478686417272,\"1025888913709\":1509788667405,\"1022208528911\":1478686804039,\"1016937616478\":1478686804019,\"1025907920519\":1509788667460,\"4997151568\":1509788667396,\"1013013057071\":1444487341758,\"1001093613489\":1478686417022,\"1019724578353\":1509788625079,\"1024526178555\":1509788625028,\"1025531089948\":1509788624335,\"1024055983113\":1509788624928,\"1020917768455\":1478686417081,\"1024952431010\":1509788625100,\"1020612899598\":1478686417027,\"1019088081983\":1509788624313,\"1021406642890\":1509788624829,\"1021406642893\":1509788624616,\"1021694620655\":1478686417121,\"4976835097\":1509788624161,\"1023268253094\":1509788624839,\"1021832510428\":1478686417256,\"1021971308569\":1478686417149,\"1024952431051\":1509788624533,\"1008738537382\":1444487341761,\"1022447475874\":1478686804050,\"1013013057136\":1444487341758,\"1014527321269\":1465470268319,\"4976835184\":1509788624161,\"1021475325596\":1478686417109,\"1019872552726\":1478686804032,\"1021608758957\":1478686417049,\"1021475325602\":1478686417109,\"1025114701714\":1509788667497,\"1024055983207\":1509788624928,\"1024952431099\":1509788624815,\"1025310649175\":1509788624298,\"1022464646209\":1509788624318,\"1023086978909\":1509788624987,\"1023457499433\":1509788624311,\"1024154544044\":1509788667410,\"1024017448956\":1509788624912,\"1456735730\":1444487341753,\"1020635967840\":1478686417027,\"1010013600321\":1491634246526,\"1010013600320\":1491634246521,\"1456735736\":1444487341754,\"1013013057421\":1444487341758,\"1022904531459\":1509788624250,\"1023472179306\":1509788625102,\"1022501470722\":1509788624538,\"1012252867886\":1478686417223,\"1021414638300\":1478686417106,\"1020616438485\":1478686417075,\"1013517560306\":1444487341759,\"1022131873888\":1478686417184,\"1022501470843\":1509788624538,\"1161827847\":1509788624366,\"1013013057526\":1444487341758,\"1021906042338\":1478686417139,\"1023472179205\":1509788624534,\"1022245490983\":1478686417284,\"1022204859302\":1480585069085,\"1016937616826\":1478686804034,\"1022245490973\":1478686417284,\"1021254603777\":1478686416987,\"1022168051315\":1478686417186,\"1012400972878\":1478686416994,\"1012812776410\":1478686804049,\"1013013057481\":1444487341758,\"4994792152\":1509788667397,\"1980638590\":1478950494928,\"297812661\":1444487341743,\"1980638587\":1478950494928,\"1021591848975\":1478686417048,\"1980638606\":1478950494928,\"1024886230164\":1509788624880,\"1980638602\":1478950494928,\"1024886230160\":1509788624880,\"1024886230162\":1509788624880,\"1024385536330\":1509788625097,\"1024886230172\":1509788624880,\"1980638594\":1478950494928,\"1024886230168\":1509788624880,\"1023472179410\":1509788624818,\"1024886230170\":1509788624880,\"1025453757108\":1509788624302,\"1980638616\":1478950494929,\"1023242562939\":1509788624462,\"1980638614\":1478950494929,\"1024886230157\":1509788624880,\"1980638612\":1478950494929,\"1024886230158\":1509788624880,\"1980638613\":1478950494929,\"1980638610\":1478950494928,\"1980638611\":1478950494929,\"1010402464737\":1478686804064,\"1022004995956\":1478686417158,\"1022190201868\":1478686417188,\"662991925\":1491634246507,\"1017318117309\":1465470268237,\"1010387414164\":1509788624277,\"1021798167743\":1509788624507,\"1020015292146\":1478686804040,\"1013013057310\":1444487341758,\"1016075829639\":1509788624944,\"1025637916646\":1509788624359,\"1016396314335\":1478686804017,\"1020773595638\":1509788624934,\"1026232328987\":1514456869770,\"1021798167747\":1509788624507,\"1021798167746\":1509788624507,\"1026232328989\":1514456869769,\"1021798167745\":1509788624507,\"1026232328990\":1514456869769,\"1021798167744\":1509788624507,\"1026232328991\":1514456869768,\"1025637916648\":1509788624359,\"1021901585705\":1509788624981,\"1021901585704\":1509788624981,\"1013013057397\":1444487341758,\"1024212346088\":1509788624238,\"1024385536283\":1509788625097,\"1021901585697\":1509788624981,\"1021901585696\":1509788624981,\"1024212346084\":1509788624238,\"1021901585699\":1509788624981,\"1024212346085\":1509788624238,\"1021901585698\":1509788624982,\"1024212346082\":1509788624238,\"1021901585701\":1509788624981,\"1024212346083\":1509788624238,\"1024212346081\":1509788624238,\"1019815535283\":1509788624354,\"1019815535282\":1509788624354,\"1024385536301\":1509788625097,\"1024212346076\":1509788624238,\"1019815535281\":1509788624354,\"1021901585691\":1509788624981,\"1021901585690\":1509788624981,\"1021901585693\":1509788624979,\"1024385536296\":1509788625096,\"1021901585692\":1509788624982,\"1024385536293\":1509788625096,\"1024385536294\":1509788625096,\"662991989\":1491634246507,\"1024385536318\":1509788625096,\"1022034748689\":1478686417058,\"1024385536309\":1509788625097,\"1020940445660\":1478686417084,\"1019815535279\":1509788624353,\"1021941556378\":1509788624609,\"1002035747090\":1478686417024,\"1020612900270\":1478686417075,\"1022485349385\":1478943089489,\"1024501931509\":1509788624507,\"4994792893\":1509788667393,\"1024477025143\":1509788625021,\"1019166072823\":1478686804020,\"1021704844961\":1478686417122,\"1409548307\":1509788625020,\"1010011635094\":1491634246525,\"1021767496412\":1509788624194,\"1022005518464\":1478686417057,\"1022675142886\":1480585069063,\"1022204859646\":1480585069085,\"1021025250574\":1478686417091,\"281691275\":1444487341736,\"1021486727670\":1478686417046,\"1291065522\":1478686417024,\"1022241298173\":1478686417014,\"1025620746110\":1509788624970,\"1024781372673\":1509788624472,\"1021197848721\":1509788624170,\"1025412885440\":1509788625118,\"1025412885441\":1509788625126,\"1013517561539\":1444487341759,\"1025412885442\":1509788625109,\"1025412885444\":1509788624829,\"1025609736065\":1509788624550,\"1025412885445\":1509788624834,\"1025412885446\":1509788624824,\"1025608032153\":1509788624523,\"1025608032148\":1509788624537,\"1025608032146\":1509788624542,\"1025609736073\":1509788624550,\"1022451931762\":1478686417296,\"1025412885454\":1509788625089,\"1025608032145\":1509788624540,\"1025412885455\":1509788624800,\"1001380934303\":1478686804059,\"1001380934297\":1478686804059,\"1010025397849\":1491634246527,\"1018513354827\":1509788625204,\"1022976621132\":1509788625073,\"1025609736063\":1509788624550,\"1025609736056\":1509788624550,\"1025609736059\":1509788624550,\"1007592459593\":1478686804023,\"1022518642343\":1509788624446,\"1018805510641\":1509788624929,\"1022518642341\":1509788624446,\"1022518642344\":1509788624446,\"1022518642345\":1509788624446,\"1022451014294\":1478686417215,\"1022425717009\":1478686417016,\"1020133691636\":1509788625081,\"1020744629597\":1509788624321,\"1010025397862\":1491634246527,\"1010025397860\":1491634246522,\"1010025397858\":1491634246522,\"1022208660531\":1480585069087,\"1019258471587\":1478686804018,\"4563813587\":1465469681387,\"4961235816\":1509788624160,\"4997152051\":1509788667397,\"1013517561413\":1444487341759,\"1024214574058\":1509788625071,\"1024411489856\":1509788624859,\"1024411489857\":1509788624859,\"1022008009091\":1478686417158,\"1024411489858\":1509788624859,\"1024211296810\":1509788624490,\"1022631234677\":1509788624441,\"764704901\":1478686417018,\"1021486465189\":1478686417243,\"1020926682676\":1478686417082,\"1021700650966\":1478686804046,\"1016937616382\":1478686804031,\"1016620443271\":1478686804049,\"1025593614306\":1509788625022,\"1021349894382\":1478686417104,\"1025412885124\":1509788624201,\"1025412885125\":1509788624198,\"1025412885126\":1509788624205,\"1021767496653\":1509788624817,\"1025412885128\":1509788624186,\"1016277551885\":1509788624367,\"1016277551886\":1509788624367,\"1016277551887\":1509788624367,\"1009965232959\":1491634246523,\"5001740139\":1509788667393,\"1021543222558\":1478686417113,\"1022451669883\":1478686417215,\"1018229442196\":1480585069071,\"1024154542564\":1509788667659,\"1021385939682\":1478686417105,\"1024154542568\":1509788667658,\"1021385939695\":1478686417105,\"1021385939689\":1478686417105,\"1024154542572\":1509788667659,\"1024411489823\":1509788624222,\"1024411489825\":1509788624222,\"1024411489826\":1509788624223,\"1024411489827\":1509788624222,\"1024411489828\":1509788624222,\"1024154542548\":1509788667659,\"1024886229618\":1509788624240,\"1024886229626\":1509788624240,\"1020994183778\":1478686417034,\"1024886229605\":1509788624240,\"1024886229615\":1509788624240,\"1018513355190\":1509788625226,\"1024886229608\":1509788624240,\"1023786355710\":1509788624300,\"764180720\":1509788625016,\"1024411489853\":1509788624859,\"1024886229610\":1509788624240,\"1024411489854\":1509788624859,\"1024886229611\":1509788624240,\"1010093816611\":1491634246528,\"1024167780422\":1509788624449,\"1024781372628\":1509788624473,\"1024888075640\":1509788625023,\"1010093816610\":1491634246522,\"1024167780423\":1509788624449,\"1024167780420\":1509788624448,\"1024781372630\":1509788624473,\"1024167780421\":1509788624449,\"1024781372626\":1509788624472,\"1023038743732\":1509788667833,\"1024781372627\":1509788624473,\"1024781372637\":1509788624472,\"1024781372638\":1509788624472,\"1022143015193\":1478686417277,\"1024167780426\":1509788624448,\"1024781372632\":1509788624473,\"1024781372633\":1509788624473,\"4994792505\":1509788667397,\"1024781372635\":1509788624473,\"1016396443790\":1478686804018,\"1024886229632\":1509788624240,\"1021333772617\":1478686417103,\"1021962134727\":1478686417148,\"1022442756901\":1478686417071,\"1024781372661\":1509788624473,\"1024781372662\":1509788624473,\"1024781372663\":1509788624473,\"1024781372657\":1509788624472,\"1024781372659\":1509788624472,\"1024781372670\":1509788624472,\"1024781372671\":1509788624472,\"1024195175304\":1509788625071,\"1024781372640\":1509788624472,\"1022208660793\":1480585069087,\"1024781372642\":1509788624472,\"1020945293377\":1478686417229,\"1024781372652\":1509788624472,\"1022081543577\":1478686417061,\"1024781372654\":1509788624472,\"1024055982890\":1509788624928,\"1023836828735\":1509788624970,\"1021394328309\":1478686417105,\"1022405662982\":1478686417207,\"1024411489931\":1509788624449,\"1022356511760\":1478686417069,\"1024411489932\":1509788624449,\"1024411489933\":1509788624449,\"1024411489934\":1509788624449,\"1023123809230\":1509788667538,\"948464967\":1444487341736,\"1024411489936\":1509788624449,\"1023085011366\":1509788624435,\"1023927792620\":1509788667538,\"1020850141791\":1478686417226,\"1022048904170\":1478686417301,\"1020850141787\":1478686417226,\"1017800076462\":1478686804016,\"1021121325728\":1478686417095,\"1021945095585\":1478686417144,\"1025412885072\":1509788624426,\"1025412885077\":1509788624407,\"1021719787061\":1478686417251,\"1023123809256\":1509788667538,\"1022356511798\":1478686417069,\"1023123809269\":1509788667538,\"1023123809270\":1509788667538,\"1021719787051\":1478686417251,\"1011274359219\":1478686804034,\"1025412885070\":1509788624429,\"1025412885071\":1509788624431,\"1021245558802\":1478686417236,\"1022092291993\":1509788625020,\"1021473882748\":1478686417109,\"1019833361451\":1478686804069,\"1019833361450\":1478686804069,\"1016075830321\":1509788624944,\"1025289285346\":1509788625019,\"1024987165469\":1509788667581,\"1025289285344\":1509788625019,\"1022518641696\":1509788624558,\"1025416816998\":1509788624933,\"1016075830304\":1509788624944,\"1022208661143\":1480585069087,\"1024803786213\":1509788624548,\"1022050344963\":1478686417172,\"1021788860844\":1478686804039,\"1004101738455\":1478686804029,\"1025513395088\":1509788624344,\"1020102890517\":1509788624369,\"1021954140156\":1478686417146,\"1019073532750\":1509788624324,\"1025416816989\":1509788624933,\"1022246540384\":1478686417195,\"1022518641694\":1509788624558,\"1022518641695\":1509788624558,\"1022518641693\":1509788624558,\"1022233564937\":1478686417193,\"1021465232066\":1478686417300,\"1007394151305\":1478686804015,\"1024781373204\":1509788624576,\"1025712490388\":1509788625008,\"1024781373206\":1509788624576,\"1024781373200\":1509788624575,\"1022688512599\":1509788624394,\"1024781373202\":1509788624576,\"1024781373212\":1509788624575,\"1024781373213\":1509788624576,\"1021789385152\":1509788624993,\"1024781373215\":1509788624575,\"1020983566845\":1478686417230,\"1022455470522\":1478686417297,\"1024781373208\":1509788624576,\"1024781373209\":1509788624576,\"1024781373210\":1509788624576,\"1077941775\":1491634246513,\"1024781373189\":1509788624576,\"1021767364779\":1478686417052,\"1021767364780\":1478686417052,\"4961235439\":1509788624161,\"1022096092955\":1478686417012,\"1024781373198\":1509788624575,\"1024781373199\":1509788624575,\"1020294256887\":1465470268299,\"1024781373192\":1509788624576,\"1016620443133\":1478686804049,\"1013517561042\":1444487341759,\"1021870389938\":1478686417136,\"1016075830354\":1509788624944,\"1021955450828\":1509788624256,\"1024781373217\":1509788624575,\"1021908531218\":1509788624452,\"662991104\":1444487341721,\"1018513355332\":1509788625226,\"1022244574436\":1478686417283,\"1008739322858\":1478686804030,\"1021101533190\":1478686417232,\"1024133703005\":1509788624416,\"1024133703002\":1509788624416,\"1024133703003\":1509788624416,\"1024212345256\":1509788625185,\"1024133702998\":1509788624416,\"1020796664392\":1478686417225,\"1024133702995\":1509788624416,\"1024133702993\":1509788624416,\"1021981271193\":1478686417151,\"1024411489760\":1509788624562,\"1024411489762\":1509788624562,\"1024411489763\":1509788624562,\"1024411489764\":1509788624562,\"1024411489765\":1509788624562,\"1016075830429\":1509788624944,\"1021793841645\":1509788624403,\"1016075830417\":1509788624944,\"1021028265029\":1478686417091,\"178150447\":1444487341738,\"1024412538342\":1509788625136,\"1016075830413\":1509788624944,\"1016075830400\":1509788624944,\"1022074859067\":1509788624416,\"1024870107435\":1509788624342,\"1018626735308\":1478686804016,\"1023268252065\":1509788624865,\"1011339636392\":1478686804054,\"1018362481947\":1509788625076,\"1022204859923\":1480585069085,\"1021407954590\":1478686416988,\"1021929634294\":1478686417144,\"1024411489706\":1509788625159,\"1024411489707\":1509788625159,\"1024411489708\":1509788625160,\"1024411489709\":1509788625159,\"1024411489711\":1509788625159,\"1016837084715\":1478686804019,\"1013517560901\":1444487341759,\"1209933546\":1444487341755,\"1018725164760\":1509788624373,\"1024154542667\":1509788667409,\"1025007612122\":1509788624977,\"1024154543034\":1509788667409,\"1021139392326\":1478686417096,\"1022132530232\":1478686417276,\"1618884462\":1444487341718,\"1021980222777\":1478686417263,\"1022436465163\":1478686417295,\"1020946866902\":1478686417085,\"1021767496172\":1509788624533,\"1022436465159\":1478686417295,\"1022082068253\":1478686417062,\"1013517561238\":1444487341759,\"4973166405\":1509788624158,\"1022630317658\":1509788625061,\"1021801709556\":1478686804065,\"1010093816295\":1491634246522,\"1021995557892\":1509788624466,\"1020744629946\":1509788624321,\"1024132523178\":1509788624325,\"1019865867011\":1509788624959,\"1023962136408\":1509788625005,\"1023962136409\":1509788625005,\"1023962136412\":1509788625005,\"1017229901849\":1509788624941,\"1020735061817\":1509788624959,\"1021789384913\":1509788624993,\"1023962136405\":1509788625005,\"1022317187414\":1478686417200,\"1006994334213\":1509788624374,\"1021508223268\":1478686417047,\"1023821494022\":1491634246536,\"1022317187417\":1478686417200,\"1025608424601\":1509788624845,\"1025608424604\":1509788624845,\"1020016863780\":1509788624389,\"1025608424607\":1509788624845,\"1024005258478\":1491634246533,\"1015520699986\":1478686804031,\"1025608424599\":1509788624846,\"1024781373138\":1509788625090,\"1022518642082\":1509788624219,\"1022518642083\":1509788625154,\"1022836765358\":1509788625018,\"1021489742582\":1478686417046,\"1022518642081\":1509788624219,\"1022518642087\":1509788624219,\"1022518642084\":1509788625154,\"1022518642085\":1509788625154,\"1021897259685\":1478686416973,\"1022518642088\":1509788625154,\"1022465038553\":1478686416989,\"1022455076961\":1478686417297,\"1024781373172\":1509788624576,\"1024781373175\":1509788624576,\"1024781373169\":1509788624576,\"1024781373171\":1509788624576,\"1025018491034\":1509788624904,\"1021027479230\":1478686417091,\"1024781373182\":1509788624576,\"1024781373183\":1509788624576,\"1022518642079\":1509788624219,\"1024781373178\":1509788624576,\"1021149746714\":1478686417234,\"1012992347219\":1478686804015,\"1018513486710\":1509788624825,\"1404175368\":1478686804051,\"1024781373166\":1509788624575,\"1017354160223\":1478686804049,\"1025712883216\":1509788624307,\"1024017447779\":1509788625237,\"4994793079\":1509788667393,\"1022198851812\":1478686417280,\"4563814337\":1465469681389,\"178150741\":1444487341737,\"1009744367188\":1491634246512,\"1022251521490\":1478686417066,\"1021802233636\":1478686417052,\"1022112607655\":1509788624949,\"1010025397543\":1491634246527,\"1010025397539\":1491634246522,\"1022511303302\":1480585069128,\"1022511303303\":1480585069128,\"1022511303301\":1480585069128,\"1485176974\":1491634246533,\"1022456649678\":1478686417298,\"1022511303305\":1480585069128,\"1022511303311\":1480585069128,\"1022456649684\":1478686417298,\"1022511303315\":1480585069128,\"1022511303319\":1480585069128,\"1021937494211\":1478686417143,\"1022511303317\":1480585069128,\"1022021512655\":1478686417162,\"1022511303322\":1480585069128,\"1020462678180\":1465470268259,\"1022511303326\":1480585069128,\"1022511303324\":1480585069128,\"1022511303330\":1480585069128,\"1022511303328\":1480585069128,\"1022511303334\":1480585069128,\"1024244588919\":1509788624948,\"1022511303332\":1480585069128,\"1022511303338\":1480585069129,\"1022405661927\":1478686417207,\"1021937756413\":1478686417010,\"1021715987397\":1509788624194,\"4972900423\":1509788624161,\"1022511303341\":1480585069129,\"1022511303346\":1480585069129,\"1024952433458\":1509788624443,\"1022511303347\":1480585069129,\"1024952433459\":1509788624443,\"1022511303344\":1480585069129,\"1022511303350\":1480585069129,\"1024952433463\":1509788624443,\"1024952433460\":1509788624443,\"1022511303349\":1480585069129,\"1024952433461\":1509788624443,\"1020444463086\":1478686804033,\"734426108\":1444487341744,\"1022628610489\":1509788624205,\"1022628610490\":1509788624201,\"1022628610491\":1509788624197,\"1022201079617\":1478686417064,\"1022628610496\":1509788624186,\"1021715987373\":1509788624533,\"1023937101774\":1509788667538,\"1019596520471\":1509788624946,\"1022511303374\":1480585069129,\"1022511303375\":1480585069129,\"1019852237644\":1478686804021,\"1009173311440\":1509788624389,\"1022511303376\":1480585069129,\"1023937101781\":1509788667539,\"1022567140731\":1509788624849,\"1022511303380\":1480585069129,\"1022511303386\":1480585069129,\"1023937101790\":1509788667539,\"1022511303387\":1480585069129,\"1023937101791\":1509788667539,\"1022511303384\":1480585069129,\"1022511303385\":1480585069129,\"1023937101789\":1509788667538,\"1023937101786\":1509788667538,\"1023937101784\":1509788667538,\"1022511303389\":1480585069129,\"1016863693120\":1478686804031,\"1022511303394\":1480585069129,\"4976832709\":1509788624161,\"1022511303392\":1480585069129,\"1022511303393\":1480585069129,\"1022511303398\":1480585069129,\"1020766515943\":1478686417225,\"1022511303396\":1480585069129,\"1021248446380\":1478686417100,\"1022511303397\":1480585069129,\"1021782441584\":1509788624395,\"1023937101793\":1509788667538,\"1022511303402\":1480585069129,\"1022511303403\":1480585069129,\"1021261815669\":1478686804066,\"1022238808746\":1509788624947,\"1022511303401\":1480585069129,\"1022238808747\":1509788624930,\"1022511303406\":1480585069129,\"1022511303407\":1480585069129,\"1023937101803\":1509788667538,\"1022511303404\":1480585069129,\"1022511303405\":1480585069129,\"1019596520494\":1509788624946,\"1022734911322\":1509788624461,\"1023937101808\":1509788667538,\"1022511303422\":1480585069129,\"1022511303421\":1480585069129,\"1022511303171\":1480585069128,\"1831613869\":1491634246515,\"1022511303169\":1480585069128,\"1022511303175\":1480585069128,\"1022511303173\":1480585069128,\"1022646698521\":1480585069078,\"1022511303179\":1480585069128,\"1007053840759\":1478686804015,\"1022511303182\":1480585069128,\"1022511303180\":1480585069128,\"1022511303186\":1480585069128,\"1022511303190\":1480585069128,\"1022511303191\":1480585069128,\"1022511303188\":1480585069128,\"4997149005\":1509788667397,\"1022511303189\":1480585069128,\"1022511303194\":1480585069128,\"1022511303195\":1480585069128,\"1021790437120\":1509788624561,\"1022511303192\":1480585069128,\"1022511303193\":1480585069128,\"1022584835772\":1480585069132,\"1022511303199\":1480585069128,\"1022511303196\":1480585069128,\"1021319877413\":1478686416982,\"1022646698545\":1480585069145,\"1022646698547\":1480585069078,\"1019448525719\":1478686804021,\"1022646698550\":1480585069078,\"1023596432220\":1509788624519,\"1022646698555\":1480585069078,\"1022646698557\":1480585069078,\"1025732020775\":1509788624294,\"1021482405197\":1478686417110,\"1022646698538\":1480585069078,\"1022646698540\":1480585069078,\"1022511303228\":1480585069128,\"1022646698543\":1480585069078,\"1022511303229\":1480585069128,\"1021413853520\":1509788624816,\"1022511303232\":1480585069128,\"1022511303238\":1480585069128,\"1021327872967\":1465470268218,\"1021327872965\":1465470268218,\"1022511303247\":1480585069128,\"1025103557838\":1509788625022,\"1024154545278\":1509788667409,\"1022511303245\":1480585069128,\"1022646698560\":1480585069078,\"1021021184422\":1478686417090,\"1021301920360\":1478686417238,\"1022511303249\":1480585069128,\"1022511303254\":1480585069128,\"1022511303255\":1480585069128,\"1022511303253\":1480585069128,\"1022511303256\":1480585069128,\"1022511303263\":1480585069128,\"1022511303261\":1480585069128,\"1022511303266\":1480585069128,\"1012365061537\":1478686417026,\"1022511303264\":1480585069128,\"1022511303265\":1480585069128,\"1022511303270\":1480585069128,\"1020826809870\":1478686417031,\"1022511303274\":1480585069128,\"1022511303275\":1480585069128,\"1016230495240\":1478686804040,\"1021067322460\":1478686417093,\"1022511303273\":1480585069128,\"1022511303276\":1480585069128,\"1022264630183\":1478686417285,\"1022511303283\":1480585069128,\"1025014824889\":1509788625006,\"1022264630189\":1478686417285,\"4961238856\":1509788624157,\"1504968880\":1444487341743,\"1618884974\":1444487341741,\"1022511303579\":1480585069130,\"1022511303576\":1480585069130,\"1022511303577\":1480585069130,\"1021623829616\":1509788624942,\"1022511303583\":1480585069130,\"1022511303580\":1480585069130,\"1022511303581\":1480585069130,\"1021927929451\":1478686417259,\"1022511303587\":1480585069130,\"1025906476293\":1509788667458,\"1022511303584\":1480585069130,\"1025906476288\":1509788667461,\"1022511303591\":1480585069130,\"1022511303589\":1480585069130,\"1022511303595\":1480585069130,\"1000104952612\":1478686804029,\"1022511303592\":1480585069130,\"1022511303593\":1480585069130,\"1022511303598\":1480585069130,\"1024952433198\":1509788624217,\"1022057557667\":1478686417173,\"1022511303596\":1480585069130,\"1024952433196\":1509788624217,\"1022511303597\":1480585069130,\"1024952433197\":1509788624217,\"1022511303602\":1480585069130,\"1022511303603\":1480585069130,\"1024952433203\":1509788624217,\"1023987954607\":1509788624228,\"1024952433200\":1509788624217,\"1022073545099\":1509788624928,\"1000112030345\":1478686417017,\"1021261815339\":1478686804065,\"1022511303604\":1480585069130,\"1022511303610\":1480585069131,\"1022511303609\":1480585069131,\"1002453614390\":1491634246519,\"1025153365555\":1509788625005,\"1018513489292\":1509788624893,\"1018513489287\":1509788624893,\"1022501472371\":1509788624538,\"1018513489283\":1509788624893,\"1018513489280\":1509788624893,\"1018513489310\":1509788624893,\"1020907547501\":1478686417080,\"1018513489307\":1509788624893,\"1021583065772\":1509788624397,\"1018513489302\":1509788624893,\"1022226225371\":1478686416985,\"1023721734951\":1509788625038,\"1018513489299\":1509788624893,\"1021101533161\":1478686417232,\"1018513489325\":1509788624893,\"1021790437117\":1509788624561,\"4950621808\":1509788624157,\"1021790437119\":1509788624561,\"1021790437118\":1509788624561,\"1018513489320\":1509788624893,\"1022511303658\":1480585069131,\"1022511303659\":1480585069131,\"1022511303656\":1480585069131,\"1018513489317\":1509788624893,\"1022511303657\":1480585069131,\"1021101533157\":1478686417232,\"1022511303662\":1480585069131,\"1022511303663\":1480585069131,\"1022511303660\":1480585069131,\"1022511303661\":1480585069131,\"1025593480099\":1509788624867,\"1023606393395\":1509788625142,\"1022511303666\":1480585069131,\"1022511303664\":1480585069131,\"1023821363487\":1491634246535,\"1022511303671\":1480585069131,\"1025892450927\":1509788667443,\"1022511303669\":1480585069131,\"1022511303674\":1480585069131,\"1022511303675\":1480585069131,\"1022511303672\":1480585069131,\"1022511303673\":1480585069131,\"1022511303678\":1480585069131,\"1022511303679\":1480585069131,\"1022511303676\":1480585069131,\"1022511303677\":1480585069131,\"1024886228628\":1509788624571,\"1022511303424\":1480585069129,\"1022511303430\":1480585069129,\"1024886228624\":1509788624571,\"1024886228625\":1509788624571,\"1022511303428\":1480585069129,\"134893964\":1491634246513,\"1024886228626\":1509788624571,\"1022511303429\":1480585069129,\"1024886228627\":1509788624571,\"1022511303434\":1480585069129,\"1022511303438\":1480585069129,\"1022511303439\":1480585069129,\"1022511303437\":1480585069129,\"1022511303443\":1480585069129,\"1022511303440\":1480585069129,\"1024886228614\":1509788624571,\"1022511303441\":1480585069129,\"1022511303447\":1480585069129,\"1022511303450\":1480585069129,\"1022511303451\":1480585069129,\"1022511303448\":1480585069129,\"1022511303449\":1480585069129,\"1024886228616\":1509788624571,\"1022511303455\":1480585069129,\"1024886228618\":1509788624571,\"1022511303458\":1480585069129,\"1022511303459\":1480585069129,\"1010001146251\":1491634246516,\"1328158344\":1491634246517,\"1022511303457\":1480585069129,\"1010001146253\":1491634246516,\"1010001146255\":1491634246516,\"1023076363588\":1509788624218,\"1018513489279\":1509788624893,\"1018513489277\":1509788624893,\"1018513489276\":1509788624893,\"1020102892427\":1509788624369,\"1018513489271\":1509788624893,\"1022511303483\":1480585069129,\"1022511303480\":1480585069129,\"1022511303486\":1480585069129,\"1022511303487\":1480585069130,\"1022511303484\":1480585069129,\"1018513489265\":1509788624893,\"1022511303485\":1480585069129,\"4994789495\":1509788667397,\"1022511303491\":1480585069130,\"1022511303489\":1480585069130,\"1022511303494\":1480585069130,\"1022511303495\":1480585069130,\"1022511303492\":1480585069130,\"1022511303498\":1480585069130,\"1023076363580\":1509788624218,\"1022511303499\":1480585069130,\"1022110507951\":1478686417182,\"1022511303496\":1480585069130,\"1023076363582\":1509788624218,\"1022511303497\":1480585069130,\"1024552785215\":1509788624185,\"1023076363583\":1509788624218,\"1024156380511\":1509788667496,\"1022511303502\":1480585069130,\"1020830742368\":1478686417078,\"1022511303503\":1480585069130,\"1022511303500\":1480585069130,\"1021379123154\":1478686804033,\"1022511303501\":1480585069130,\"1023076363579\":1509788624218,\"1022511303506\":1480585069130,\"1021937756416\":1478686417010,\"1022511303504\":1480585069130,\"1022075904326\":1478686417177,\"1022511303505\":1480585069130,\"1021833687856\":1509788625069,\"1024952433370\":1509788624829,\"1024952433374\":1509788624800,\"1077942686\":1491634246512,\"1021596566251\":1478686417115,\"1022511303522\":1480585069130,\"1022628610148\":1509788624827,\"1022511303523\":1480585069130,\"1024615306971\":1509788667890,\"1022628610150\":1509788624834,\"1022628610151\":1509788624824,\"1022511303526\":1480585069130,\"1022511303527\":1480585069130,\"1022511303530\":1480585069130,\"1022511303531\":1480585069130,\"1022511303528\":1480585069130,\"1022511303529\":1480585069130,\"1022511303534\":1480585069130,\"1022511303535\":1480585069130,\"1022628610153\":1509788624801,\"1022511303533\":1480585069130,\"1022609080641\":1509788625074,\"1022511303538\":1480585069130,\"1022511303539\":1480585069130,\"1022511303536\":1480585069130,\"1022511303543\":1480585069130,\"1022511303540\":1480585069130,\"1010149648512\":1478686804064,\"1022511303541\":1480585069130,\"1019748431019\":1509788624315,\"1022511303547\":1480585069130,\"1022511303550\":1480585069130,\"1022511303551\":1480585069130,\"1022511303548\":1480585069130,\"1022323482154\":1509788624290,\"1022465561940\":1478686417299,\"1525809400\":1444487341756,\"1025032516176\":1509788624276,\"1025051652905\":1509788625069,\"1005997678815\":1478686804054,\"1024952432926\":1509788625147,\"1024952432927\":1509788625148,\"1023072299308\":1509788625072,\"1024952432924\":1509788625147,\"1024952432925\":1509788625148,\"1024952432928\":1509788625147,\"1020737286758\":1478686417224,\"1024552785618\":1509788624185,\"4972900942\":1509788624161,\"1525809370\":1444487341708,\"4976833165\":1509788624161,\"1023834733453\":1491634246536,\"1023834733454\":1491634246536,\"4994790279\":1509788667397,\"1023834733457\":1491634246536,\"1023834733461\":1491634246536,\"1016749547562\":1465470268314,\"1023834733467\":1491634246536,\"1023834733470\":1491634246536,\"1021871044332\":1509788624394,\"1618885176\":1444487341720,\"1004329143307\":1444487341712,\"1020102891646\":1509788624369,\"1024912063290\":1509788624926,\"1025771998843\":1509788624438,\"1026226566482\":1514456869769,\"1024735235191\":1509788667506,\"1024735235184\":1509788667506,\"408961541\":1491634246510,\"1024735235196\":1509788667506,\"1020772937802\":1478686417225,\"1024735235197\":1509788667506,\"1024735235195\":1509788667505,\"1024735235172\":1509788667505,\"1024735235174\":1509788667507,\"1024735235175\":1509788667505,\"1006011441254\":1478686804040,\"1020622601037\":1509788624354,\"1024735235182\":1509788667506,\"1021344650868\":1478686417041,\"1022031474498\":1509788625110,\"1020015290315\":1478686804064,\"1024735235220\":1509788667506,\"1023569169174\":1509788624516,\"1020015290319\":1478686804064,\"1020015290318\":1478686804064,\"1020015290317\":1478686804064,\"1024735235218\":1509788667506,\"1020015290316\":1478686804064,\"4872370412\":1509788624161,\"1024735235228\":1509788667506,\"1024735235229\":1509788667506,\"1020789846455\":1478686417076,\"1025513791238\":1509788625131,\"1024154545722\":1509788667410,\"1020789846454\":1478686417076,\"1025513791232\":1509788625131,\"1025513791235\":1509788625131,\"1021972359216\":1478686417150,\"1023569169157\":1509788624516,\"1024735235205\":1509788667507,\"1024735235200\":1509788667506,\"1023569169155\":1509788624516,\"1007980440098\":1478686804015,\"1021972359224\":1478686417150,\"1025513791253\":1509788625169,\"1023569169166\":1509788624519,\"1025513791248\":1509788625131,\"1024735235209\":1509788667506,\"1024735235211\":1509788667506,\"1025771998859\":1509788624438,\"1025771998850\":1509788624438,\"1022240643100\":1478686417194,\"1020293993583\":1465470268279,\"1025513791308\":1509788624916,\"1024952433094\":1509788624554,\"1024952433095\":1509788624554,\"1019732047599\":1509788624315,\"1024952433099\":1509788624554,\"1025513791301\":1509788624917,\"1024952433096\":1509788624554,\"1024952433097\":1509788624554,\"1022282063586\":1478686417198,\"1022282063587\":1478686417198,\"1021036126275\":1478686417092,\"1025513791324\":1509788624838,\"1021237304386\":1478686416976,\"1024341058886\":1509788624423,\"1021489483697\":1478686417243,\"1025513791317\":1509788624826,\"1025513791319\":1509788624849,\"1025513791312\":1509788624864,\"1025513791315\":1509788624864,\"1025513791342\":1509788624838,\"1025513791336\":1509788624838,\"1025513791332\":1509788624838,\"1021340718754\":1465470268224,\"1022080099004\":1478686417178,\"1025513791328\":1509788624838,\"1025513791329\":1509788624838,\"1618885265\":1444487341729,\"1024552785414\":1509788624185,\"1020775559407\":1478686417029,\"1021743251134\":1478686417125,\"1025513791348\":1509788624838,\"4997149475\":1509788667397,\"1025513791349\":1509788624868,\"1022248376532\":1478686417196,\"1019204998988\":1478686804019,\"1025627035186\":1509788625022,\"1025796378066\":1509788624274,\"1025471191359\":1509788624307,\"1008809589340\":1509788625018,\"1008809589338\":1509788625018,\"1008809589339\":1509788625018,\"1023889653614\":1491634246528,\"1023889653612\":1491634246528,\"1023889653613\":1491634246528,\"1021585817738\":1478686417008,\"1291065281\":1478686417024,\"1023072299019\":1509788625072,\"1021770251756\":1478686417009,\"1023569169109\":1509788624516,\"1021770251751\":1478686417009,\"1021770251750\":1478686417009,\"1023569169119\":1509788624516,\"1023569169112\":1509788624516,\"1022251391309\":1478686417014,\"1022646698462\":1480585069078,\"1022628610772\":1509788625105,\"1022251391313\":1478686417014,\"1022628610775\":1509788625113,\"1016620443893\":1478686804049,\"1014872936605\":1509788624543,\"1022628610771\":1509788625122,\"1022628610781\":1509788625089,\"1022112604443\":1509788624944,\"1008809589302\":1509788625018,\"1023569169136\":1509788624516,\"1014872936620\":1509788624543,\"1021240057125\":1478686417039,\"1008809589304\":1509788625018,\"1022511303155\":1480585069128,\"1014872936633\":1509788624610,\"1025513791229\":1509788625131,\"1618885389\":1444487341732,\"1014872936635\":1509788624569,\"1025513791231\":1509788625131,\"1022511303158\":1480585069128,\"1023076364160\":1509788624557,\"1022646698470\":1480585069078,\"1023569169122\":1509788624516,\"1025513791226\":1509788625112,\"1014872936628\":1509788624543,\"1023076364168\":1509788624557,\"1022511303167\":1480585069128,\"1022511303164\":1480585069128,\"1025513791218\":1509788625246,\"1022646698479\":1480585069078,\"1025513791219\":1509788625244,\"4972901354\":1509788624162,\"1002085682074\":1478686804029,\"1801859296\":1444487341738,\"1021799349398\":1478686417052,\"1021645587894\":1478686417049,\"1023076364157\":1509788624557,\"1023076364159\":1509788624557,\"1023076364152\":1509788624557,\"1020998771492\":1465470268304,\"1021655811091\":1509788624523,\"1021164558682\":1478686417097,\"1021364049270\":1478686417104,\"1021655811095\":1509788624524,\"1021655811094\":1509788624524,\"1022484695982\":1478943089532,\"1021655811093\":1509788624524,\"1021927404772\":1478686417259,\"1021655811092\":1509788624524,\"1012277897989\":1478686804062,\"1023970783773\":1509788624982,\"1021655811097\":1509788624524,\"1021655811096\":1509788624524,\"1009118261079\":1478686804023,\"1020295959826\":1509788624321,\"1023228274280\":1509788624958,\"1022468314269\":1478686417299,\"1024489476874\":1509788624836,\"1801859284\":1444487341740,\"1024771015232\":1509788667537,\"1020998771482\":1465470268304,\"1024771015238\":1509788667537,\"1024771015239\":1509788667537,\"1020998771487\":1465470268304,\"1020438171022\":1478686804031,\"1020438171021\":1478686804031,\"1024771015216\":1509788667537,\"1024771015217\":1509788667537,\"1024771015220\":1509788667537,\"1024771015227\":1509788667537,\"1013138897143\":1478686804015,\"1022769527531\":1509788625056,\"1024771015210\":1509788667537,\"1024771015211\":1509788667537,\"1024771015214\":1509788667537,\"1024771015215\":1509788667537,\"4976833351\":1509788624162,\"1014872936480\":1509788624612,\"1014872936484\":1509788624612,\"1014872936486\":1509788624544,\"499271217\":1509788624369,\"1014872936508\":1509788624538,\"1014872936496\":1509788624544,\"1021349762596\":1478686417104,\"1021476900821\":1478686417045,\"1014872936501\":1509788624536,\"1022162936129\":1478686417186,\"1023476635420\":1509788625082,\"1025531484823\":1509788624335,\"1022078133372\":1478686417177,\"4972901497\":1509788624162,\"1022058736526\":1475218613699,\"1021605347477\":1509788625082,\"1021095764729\":1478686417094,\"1024161753145\":1509788667562,\"1022977667832\":1509788625050,\"1021583984612\":1478686417114,\"1303384448\":1444487341752,\"1021088948603\":1478686417036,\"1303384452\":1444487341734,\"1021587785657\":1478686417246,\"1000216247638\":1444487341749,\"1025796377314\":1509788624274,\"1019759571635\":1509788624281,\"1021773920943\":1478686417128,\"1025902149722\":1509788667459,\"1021995167608\":1509788624463,\"1025902149720\":1509788667461,\"1009715006239\":1491634246511,\"1022184170048\":1478686417187,\"1012157183467\":1478686417223,\"1023085406222\":1509788625047,\"1020516157222\":1465470268303,\"1022189937637\":1478686417188,\"1012895615469\":1478686804028,\"1022189937638\":1478686417188,\"1021693836556\":1509788624396,\"1016473908776\":1478686804069,\"1009715006219\":1491634246511,\"1018451492040\":1509788624427,\"1022199505760\":1478686417064,\"1009715006211\":1491634246511,\"1020294124276\":1465470268291,\"1024156379381\":1509788667463,\"1009715006254\":1491634246511,\"1022064110426\":1478686417270,\"1009715006247\":1491634246511,\"1017354159007\":1478686804049,\"1021955976509\":1509788624466,\"1024154544180\":1509788667658,\"126245643\":1444487341716,\"1024161753267\":1509788667562,\"4997150024\":1509788667397,\"1024420796490\":1509788624860,\"1021354086662\":1465470268228,\"1024420796491\":1509788624860,\"1021354086661\":1465470268228,\"1021354086660\":1465470268228,\"1024420796489\":1509788624860,\"1021354086659\":1465470268228,\"1024420796494\":1509788624860,\"1025098707157\":1509788624298,\"1024420796493\":1509788624860,\"1325929387\":1491634246519,\"1021890834731\":1478686417054,\"1025118368252\":1509788625022,\"1024837992752\":1509788624948,\"1016954002183\":1478686804069,\"1022112605836\":1509788624944,\"1024781895156\":1509788625021,\"1023502717366\":1509788624943,\"1022023084382\":1509788624463,\"1003491883213\":1478686417220,\"1009710812022\":1480585069062,\"4994790750\":1509788667397,\"1024195046093\":1509788624507,\"1024195046088\":1509788624507,\"1307054360\":1444487341721,\"1011278555385\":1480585069074,\"1021156957609\":1478686804031,\"178149263\":1444487341738,\"1021789387409\":1509788624993,\"297815257\":1444487341745,\"1022701224054\":1509788624525,\"1022701224055\":1509788624525,\"1022701224056\":1509788624525,\"1022701224058\":1509788624525,\"1022701224059\":1509788624525,\"1022701224061\":1509788624525,\"1022701224062\":1509788624525,\"1021629595659\":1478686417119,\"1021789387469\":1509788624993,\"4994790641\":1509788667398,\"1016936831881\":1478686804019,\"662993609\":1491634246507,\"1025274866330\":1509788624233,\"1025274866331\":1509788624234,\"1025274866333\":1509788624234,\"1025274866326\":1509788624234,\"4997543100\":1509788667397,\"1025274866325\":1509788624234,\"1077943584\":1491634246513,\"1025274866346\":1509788624233,\"1025274866347\":1509788624233,\"1025274866344\":1509788624233,\"1019525086694\":1509788625078,\"1020462679515\":1465470268259,\"1025274866349\":1509788624234,\"1021269939695\":1478686804038,\"1025274866342\":1509788624233,\"1021269939694\":1478686804038,\"1021269939693\":1478686804038,\"1021269939692\":1478686804038,\"1021865145975\":1509788624394,\"1021269939696\":1478686804038,\"1021900927901\":1480585069077,\"1022089143340\":1509788624439,\"1018513357130\":1509788624892,\"1016396314775\":1478686804017,\"1020447083036\":1478686804033,\"1025732939527\":1509788624957,\"1022043532233\":1478686417171,\"1016954002033\":1478686804069,\"1023784125201\":1491634246536,\"1020553511137\":1478686417074,\"1018517027075\":1478686804065,\"1024597611422\":1509788624939,\"1021491054796\":1478686416974,\"1021789387319\":1509788624993,\"1019204997237\":1478686804020,\"1022540531976\":1509788625064,\"1022701224064\":1509788624525,\"1002419010024\":1480585069061,\"1007198854323\":1478686804032,\"1017354158592\":1478686804049,\"1022484565471\":1478943089488,\"1022484565469\":1478943089488,\"456935125\":1444487341723,\"1021700521756\":1478686804046,\"1025061222249\":1509788624932,\"1022238678829\":1509788624947,\"1025712884829\":1509788624305,\"1022631233402\":1509788624434,\"1024774031266\":1509788624534,\"1017388646387\":1478686804034,\"1025607504924\":1509788624431,\"1022346679929\":1478686417289,\"1025607504925\":1509788624425,\"1025607504923\":1509788624428,\"1004329142345\":1444487341711,\"1021640867944\":1509788624404,\"1021738924700\":1478686417252,\"1020323483389\":1478686804023,\"1009965234272\":1491634246523,\"1018513357528\":1509788624906,\"1021891359629\":1478686417138,\"1016230494970\":1478686804031,\"1017354158591\":1478686804049,\"1024774031295\":1509788624195,\"854224074\":1491634246515,\"4997150715\":1509788667396,\"1021738924718\":1478686417252,\"1021897782037\":1478686417054,\"1016230494921\":1478686804017,\"1016396315447\":1478686804017,\"1016728184703\":1478686804056,\"1022357035003\":1509788624937,\"1000280079242\":1478686804027,\"1025607504928\":1509788624407,\"1007322716111\":1478686804022,\"1026232332002\":1514456869770,\"1021738924723\":1478686417252,\"1026232332004\":1514456869769,\"1026232332006\":1514456869770,\"1021738924720\":1478686417252,\"1026232332007\":1514456869768,\"1016728184604\":1478686804063,\"1024117189786\":1509788624525,\"1024117189787\":1509788624525,\"1021018433481\":1478686417090,\"1021928845581\":1478686804049,\"1016299060893\":1480585069065,\"1024774031357\":1509788625102,\"1023927138388\":1491634246530,\"1023754633738\":1509788625081,\"1023680579230\":1509788667538,\"1004731019322\":1478686804052,\"1022310111474\":1478686416982,\"4976834257\":1509788624160,\"1022449963090\":1478686417072,\"1004588284087\":1444487341763,\"1004731019467\":1478686804041,\"1004731019466\":1478686804041,\"1018513488461\":1509788624892,\"1004731019471\":1478686804041,\"1018513488459\":1509788624892,\"1004731019469\":1478686804041,\"1018513488456\":1509788624892,\"1018513488454\":1509788624892,\"1018513488449\":1509788624892,\"1004731019483\":1478686804041,\"1022511303698\":1480585069126,\"1004731019482\":1478686804041,\"1022511303699\":1480585069126,\"1022112605396\":1509788624944,\"1004731019481\":1478686804041,\"1022511303697\":1480585069126,\"1018513488476\":1509788624892,\"1022511303702\":1480585069126,\"1004731019486\":1478686804041,\"1022511303703\":1480585069126,\"1018513488474\":1509788624892,\"1022232518582\":1478686417193,\"1004731019485\":1478686804041,\"1022511303700\":1480585069126,\"883059253\":1491634246515,\"1018513488472\":1509788624892,\"1004731019473\":1478686804041,\"1022511303705\":1480585069126,\"1018513488468\":1509788624892,\"1022511303710\":1480585069126,\"1022511303711\":1480585069126,\"1018513488464\":1509788624892,\"1013028520828\":1478686416995,\"1022511303713\":1480585069126,\"1004731019490\":1478686804041,\"1021790697787\":1478686417052,\"1021977996512\":1478686417010,\"1025607505061\":1509788624799,\"1025607505058\":1509788624823,\"1004731019518\":1478686804041,\"1025607505056\":1509788624829,\"1004731019516\":1478686804041,\"1025607505057\":1509788624833,\"1021472311854\":1478686417045,\"4976834150\":1509788624160,\"1019166070056\":1478686804020,\"1018513357314\":1509788624892,\"1022307096698\":1478686417068,\"1022196490651\":1478686417189,\"1018513488430\":1509788624892,\"1021472705166\":1478686417109,\"1018513488423\":1509788624892,\"1022922093807\":1509788624932,\"1021789387110\":1509788624993,\"1022458483032\":1478686417298,\"1018513488445\":1509788624892,\"1021806818935\":1478686417255,\"1018513488441\":1509788624892,\"1018513488437\":1509788624892,\"1022631233408\":1509788624451,\"1018513488433\":1509788624892,\"1004731019592\":1478686804041,\"1024187050403\":1509788625034,\"1024576508526\":1509788667501,\"1004731019598\":1478686804041,\"1004731019596\":1478686804041,\"1024576508514\":1509788667500,\"1004731019586\":1478686804041,\"4976834476\":1509788624160,\"1004731019591\":1478686804041,\"1022859442380\":1509788625018,\"1004731019609\":1478686804041,\"1024576508536\":1509788667501,\"1023076363232\":1509788624854,\"1022356772557\":1478686417203,\"1023820971909\":1491634246535,\"1024576508528\":1509788667501,\"1023820971913\":1491634246535,\"1004731019606\":1478686804041,\"1025401344\":1478686417020,\"1004731019605\":1478686804041,\"1024576508533\":1509788667500,\"1022236974556\":1478686417065,\"1024154545045\":1509788667409,\"1023076363228\":1509788624854,\"1023076363229\":1509788624854,\"1020278919835\":1480585069076,\"1023076363230\":1509788624854,\"1023076363231\":1509788624854,\"1021976948051\":1478686417301,\"1016230495182\":1478686804031,\"1020136577825\":1480585069063,\"1022246542718\":1478686417195,\"1024576508511\":1509788667500,\"1025007614177\":1509788624977,\"1024576508499\":1509788667500,\"1024058732922\":1509788625016,\"1024576508502\":1509788667501,\"1016230495197\":1478686804017,\"1004731019531\":1478686804041,\"1004731019530\":1478686804041,\"1004731019528\":1478686804041,\"1025628083103\":1509788624828,\"1004731019535\":1478686804041,\"1004731019534\":1478686804041,\"1004731019533\":1478686804041,\"1004731019532\":1478686804041,\"1004731019523\":1478686804041,\"1004731019521\":1478686804041,\"1004731019520\":1478686804041,\"1004731019527\":1478686804041,\"1004731019525\":1478686804041,\"804155553\":1444487341726,\"1020923014268\":1478686417032,\"1016230495155\":1478686804016,\"1025607505223\":1509788624201,\"1004731019539\":1478686804041,\"1022026885691\":1478686417058,\"1004731019537\":1478686804041,\"1004731019536\":1478686804041,\"1021155647023\":1509788625020,\"1025607505227\":1509788624186,\"1025607505224\":1509788624204,\"1004731019540\":1478686804041,\"1025607505225\":1509788624198,\"4994791121\":1509788667396,\"1021715987585\":1509788624419,\"1925197227\":1444487341708,\"1077944108\":1491634246517,\"1004731019577\":1478686804041,\"1004731019576\":1478686804041,\"1004731019583\":1478686804041,\"1004731019582\":1478686804041,\"1016728184364\":1478686804051,\"1004731019570\":1478686804041,\"1016230495128\":1478686804018,\"1004731019568\":1478686804041,\"1025628083104\":1509788624833,\"1004731019574\":1478686804041,\"1025628083105\":1509788624823,\"1022621664912\":1509788625074,\"1004731019572\":1478686804041,\"1025628083107\":1509788624746,\"1024212347071\":1509788624238,\"1021655810048\":1509788624801,\"1024492230420\":1509788667888,\"1021223934682\":1478686417099,\"1016768815951\":1478686804049,\"1018725691308\":1509788624972,\"1018725691311\":1509788624972,\"1018725691310\":1509788624972,\"1021715987559\":1509788624816,\"1014163996545\":1465470268240,\"1020779885658\":1478686416982,\"1021231536472\":1478686417039,\"1021314896997\":1465470268208,\"1021314896996\":1465470268207,\"1018725691315\":1509788624972,\"1021314896998\":1465470268208,\"1021155647214\":1509788625021,\"1016728184566\":1478686804063,\"1020810293833\":1478686416998,\"1020923014273\":1478686417033,\"4994790938\":1509788667396,\"1020810293835\":1478686416998,\"1019596520429\":1509788624946,\"1019596520431\":1509788624946,\"1024453171575\":1509788625030,\"1021680598963\":1478686804028,\"1021928714469\":1478686417142,\"1019596520423\":1509788624942,\"1019596520417\":1509788624959,\"1019596520418\":1509788624959,\"1023821496225\":1491634246536,\"1013148466019\":1478686804062,\"1013148466021\":1478686804062,\"1013148466020\":1478686804062,\"1013148466023\":1478686804062,\"1013148466022\":1478686804062,\"1013148466025\":1478686804062,\"1021517924352\":1478686416977,\"1013148466026\":1478686804062,\"1013148466028\":1478686804062,\"1024576508555\":1509788667501,\"1024576508552\":1509788667500,\"1024576508553\":1509788667501,\"1024576508558\":1509788667500,\"1023134951571\":1509788624205,\"1024576508556\":1509788667501,\"1024576508557\":1509788667501,\"1024576508547\":1509788667501,\"1021680074726\":1478686804032,\"1023820971902\":1491634246535,\"1020006507067\":1509788625076,\"158357129\":1444487341704,\"1021341635492\":1509788624180,\"1014933499436\":1478686804018,\"1018513474767\":1509788624604,\"1022447873609\":1480585069106,\"1018513474764\":1509788624604,\"1023945737988\":1491634246517,\"1022447873613\":1480585069106,\"1018513474760\":1509788624604,\"1022447873601\":1480585069106,\"1018513474755\":1509788624604,\"1673135028\":1478686804054,\"1022447873604\":1480585069106,\"1014933499427\":1478686804031,\"1018513474782\":1509788624604,\"1018513474781\":1509788624603,\"1022447873630\":1480585069106,\"1018513474777\":1509788624603,\"1022447873629\":1480585069106,\"1022447873616\":1480585069106,\"1018513474770\":1509788624604,\"1018513474797\":1509788624603,\"1022447873646\":1480585069106,\"1022447873647\":1480585069106,\"1018513474794\":1509788624603,\"1022447873644\":1480585069106,\"1012418140190\":1478686417074,\"1018513474790\":1509788624603,\"1022447873632\":1480585069106,\"1022447873639\":1480585069106,\"1018513474786\":1509788624603,\"1020497164957\":1478686804033,\"1022447873637\":1480585069106,\"1024325459535\":1495284743424,\"1021112672215\":1478686417095,\"126248894\":1444487341736,\"1022447873651\":1480585069106,\"1022447873648\":1480585069106,\"1022447873649\":1480585069106,\"1018513474804\":1509788624604,\"1018513474802\":1509788624603,\"1016399709943\":1480585069069,\"1018513474800\":1509788624603,\"1022447873546\":1480585069105,\"1022447873544\":1480585069105,\"1001557479894\":1478686417023,\"1022447873551\":1480585069105,\"1022293075401\":1478686417198,\"1022447873543\":1480585069105,\"1022447873540\":1480585069105,\"1022447873562\":1480585069105,\"1022517998189\":1509788625075,\"1022086388135\":1478686417062,\"1022447873567\":1480585069105,\"1000531072254\":1478686804051,\"1025332402722\":1509788625019,\"1022447873557\":1480585069105,\"1025771090998\":1509788624523,\"1022427950585\":1478686417294,\"1025771090997\":1509788624537,\"1021969076882\":1478686417149,\"1022447873570\":1480585069105,\"1022447873568\":1480585069105,\"1022447873569\":1480585069105,\"1023821217794\":1509788624970,\"1004329154088\":1444487341740,\"1022447873595\":1480585069105,\"1000531072214\":1478686804051,\"1016301797584\":1480585069066,\"1022447873592\":1480585069105,\"1022447873598\":1480585069106,\"1022454296478\":1478686417216,\"1022447873590\":1480585069105,\"1022630721816\":1509788625074,\"1022447873588\":1480585069105,\"1018513474736\":1509788624604,\"1022447873739\":1480585069106,\"1022447873737\":1480585069106,\"1021272566008\":1509788624433,\"1022447873742\":1480585069106,\"1022447873741\":1480585069106,\"1022092548371\":1478686417061,\"1021272566003\":1509788624434,\"1022447873731\":1480585069106,\"1021272566002\":1509788624441,\"1022447873728\":1480585069106,\"1021272566007\":1509788624433,\"1023207824274\":1509788625043,\"1022447873735\":1480585069106,\"1021903146575\":1478686417139,\"1018364721976\":1509788624172,\"1022447873746\":1480585069106,\"1022447873748\":1480585069106,\"1021387124504\":1478686804027,\"1022447873749\":1480585069106,\"1022447873770\":1480585069106,\"1022447873771\":1480585069106,\"1022953409673\":1509788625073,\"1020819328476\":1509788624311,\"1021985461085\":1478686416975,\"1023066657740\":1509788625073,\"1025593748079\":1509788624844,\"1023947049031\":1491634246531,\"1023947049029\":1491634246531,\"1022233567645\":1478686417193,\"1022447873786\":1480585069106,\"1025772008600\":1509788625137,\"1022447873787\":1480585069106,\"1012749085909\":1478686416995,\"1022447873784\":1480585069106,\"1022447873785\":1480585069106,\"1022447873790\":1480585069106,\"1025772008604\":1509788625136,\"1025772008605\":1509788625136,\"1022447873789\":1480585069106,\"1025772008607\":1509788625136,\"4954802157\":1509788624164,\"1025593748080\":1509788624844,\"1022447873779\":1480585069106,\"1025593748082\":1509788624844,\"1004709252357\":1509788624972,\"1022447873777\":1480585069106,\"1025593748083\":1509788624844,\"1022447873782\":1480585069106,\"1025593748085\":1509788624844,\"1025593748086\":1509788624844,\"1022447873679\":1480585069106,\"1022447873690\":1480585069106,\"1022447873691\":1480585069106,\"1022447873689\":1480585069106,\"1001557479749\":1478686417023,\"1022451412706\":1478686417296,\"1022447873692\":1480585069106,\"1022447873682\":1480585069106,\"1022447873680\":1480585069106,\"1022447873681\":1480585069106,\"1022447873686\":1480585069106,\"1022447873687\":1480585069106,\"1022447873684\":1480585069106,\"1010091970086\":1491634246528,\"1020804910269\":1478686417077,\"1010091970092\":1491634246528,\"1022447873726\":1480585069106,\"1010091970096\":1491634246522,\"1019355870798\":1509788624316,\"1021089996199\":1478686417036,\"1022447873866\":1480585069106,\"1025671606052\":1509788624921,\"1022447873867\":1480585069106,\"1022447873864\":1480585069106,\"1024360898886\":1509788625016,\"1022447873865\":1480585069106,\"1022447873871\":1480585069106,\"1025671606061\":1509788624921,\"1025671606059\":1509788624921,\"1022447873881\":1480585069107,\"1022447873887\":1480585069107,\"1022447873885\":1480585069107,\"1020883292310\":1478686417227,\"1004847404128\":1478686804032,\"1020883292307\":1478686417227,\"1022447873877\":1480585069107,\"1020883292335\":1478686417227,\"1021965406254\":1478686417148,\"4954801783\":1509788624164,\"1012125189777\":1478686417025,\"1025671606018\":1509788624921,\"1022447873890\":1480585069107,\"1024460646234\":1509788624989,\"1024460646233\":1509788624988,\"1025671606024\":1509788624921,\"1001557479614\":1478686417023,\"1018644548145\":1478686804022,\"1024460646236\":1509788624987,\"1022447873893\":1480585069107,\"1024460646237\":1509788624987,\"1025671606036\":1509788624921,\"1021019871320\":1509788624971,\"1025671606045\":1509788624921,\"1021965406261\":1478686417148,\"1025671606043\":1509788624921,\"1022431357959\":1478686417212,\"1023431289069\":1509788625016,\"335705412\":1444487341743,\"1024899727713\":1509788624334,\"757091446\":1444487341728,\"1023431289072\":1509788625016,\"1024161748350\":1509788667562,\"1022447873834\":1480585069106,\"1022447873835\":1480585069106,\"1022447873833\":1480585069106,\"1022447873838\":1480585069106,\"1022447873839\":1480585069106,\"1022447873836\":1480585069106,\"1022447873837\":1480585069106,\"1022447873827\":1480585069106,\"1022447873824\":1480585069106,\"1022447873830\":1480585069106,\"1562262640\":1444487341719,\"1022447873828\":1480585069106,\"1021272566017\":1509788624433,\"1020605022554\":1478686417224,\"1000531072289\":1478686804051,\"1016719530064\":1478686804070,\"1016719530065\":1478686804070,\"1019697171415\":1509788624391,\"1008740777178\":1478686804030,\"1021558438105\":1478686417113,\"1016719530062\":1478686804070,\"1016719530063\":1478686804070,\"335705499\":1444487341743,\"1025880144463\":1509788667402,\"1022259520032\":1478686417196,\"1024840498187\":1509788624961,\"1025666756548\":1509788624393,\"1022346029527\":1478686804065,\"1025666756549\":1509788624393,\"1025666756546\":1509788624393,\"1025666756547\":1509788624393,\"1025666756544\":1509788624393,\"662980139\":1444487341733,\"1001557479484\":1478686417023,\"1025666756545\":1509788624393,\"1019865339368\":1509788625079,\"1022754963875\":1509788624182,\"1025666756542\":1509788624393,\"1025666756543\":1509788624393,\"1025666756540\":1509788624393,\"1025666756541\":1509788624393,\"1025548396107\":1509788625020,\"1016397350710\":1465470268265,\"1022184562627\":1478686417187,\"1000175484432\":1478950494932,\"1021387124334\":1478686804065,\"1025801631633\":1509788624945,\"1016284642899\":1480585069064,\"1023945737976\":1491634246517,\"1022108670844\":1478686417276,\"1018379795768\":1509788625079,\"1008317277836\":1478686804023,\"1022434373435\":1480585069078,\"1022434373436\":1480585069078,\"1022434373437\":1480585069078,\"1022434373438\":1480585069078,\"1023309914351\":1509788624233,\"1021173473359\":1465470268186,\"1022318371853\":1478686417200,\"1020245764480\":1509788625020,\"1021173473361\":1465470268186,\"1009745951565\":1491634246512,\"1024686356178\":1509788625150,\"1024686356176\":1509788625150,\"1024686356177\":1509788625150,\"1025593747704\":1509788625136,\"1024686356174\":1509788625150,\"1024686356175\":1509788625150,\"1024607972792\":1509788667589,\"1020743568336\":1478686417028,\"1025593747699\":1509788625136,\"1025593747700\":1509788625136,\"1025593747701\":1509788625136,\"1025593747702\":1509788625136,\"1025593747703\":1509788625136,\"1019552071848\":1480585069074,\"1023096543228\":1509788625046,\"1022434373464\":1480585069078,\"1022046934066\":1478686417171,\"1022434373466\":1480585069078,\"1022434373456\":1480585069078,\"1022087830446\":1478686417179,\"1022493619165\":1478943089536,\"1022434373461\":1480585069078,\"1001557480445\":1478686417023,\"1022434373462\":1480585069078,\"1022434373448\":1480585069078,\"1022434373449\":1480585069078,\"1022434373450\":1480585069078,\"1003695428210\":1478686417220,\"1022282589776\":1478686417286,\"1022434373453\":1480585069078,\"1022434373454\":1480585069078,\"1025044696052\":1509788624569,\"1022434373455\":1480585069078,\"1022434373440\":1480585069078,\"1003695428216\":1478686417220,\"1018085664822\":1478686804049,\"1003635134403\":1478686416993,\"1022434373442\":1480585069078,\"1022434373445\":1480585069078,\"1021501945041\":1478686416991,\"1022434373446\":1480585069078,\"1022434373447\":1480585069078,\"1022455475575\":1478686417297,\"1020419569618\":1478686804028,\"1025902165735\":1509788667450,\"1024471262552\":1509788624294,\"1022455475580\":1478686417298,\"1022455475576\":1478686417297,\"1020773976252\":1478686417029,\"1003695428241\":1478686417220,\"1003695428242\":1478686417220,\"1025593747547\":1509788624211,\"1016399709267\":1480585069069,\"1021814147758\":1509788624403,\"1021874834993\":1478686417136,\"2003310029\":1478950494931,\"1024313270175\":1509788624169,\"1022023866133\":1478686417163,\"1020987889119\":1478686417034,\"1021307037944\":1478686417238,\"2003310032\":1478950494931,\"1025289016751\":1509788624286,\"1011906312197\":1478686804064,\"1021491591051\":1509788624401,\"1023042015266\":1509788625079,\"1022013642474\":1478686417159,\"1025628089881\":1509788624428,\"1025628089882\":1509788624431,\"1025628089883\":1509788624425,\"1001557480283\":1478686417023,\"1025469489307\":1509788624973,\"1021732750849\":1478686417051,\"2003309959\":1478950494930,\"1021968945157\":1478686417149,\"1020210506580\":1509788624310,\"1022459538762\":1478686417217,\"2003309968\":1478950494930,\"1025628089889\":1509788624407,\"1022434373176\":1480585069095,\"1022434373177\":1480585069096,\"1022434373178\":1480585069096,\"1025234622290\":1509788624948,\"1022434373179\":1480585069096,\"1022434373181\":1480585069096,\"1025541973240\":1509788625082,\"1022434373183\":1480585069096,\"1020551953990\":1478686804027,\"1020551953987\":1478686804027,\"1020551953986\":1478686804027,\"1020551953984\":1478686804027,\"1002052791526\":1478950494935,\"1022434373175\":1480585069095,\"1023064821910\":1509788625048,\"1022095825491\":1478686417274,\"1022382860605\":1478686417205,\"1012476731298\":1444487341702,\"1010091970014\":1491634246522,\"1020551954000\":1478686804027,\"1008797385416\":1478686804025,\"1020841872677\":1478686417078,\"1012158876307\":1478686417025,\"1008797385422\":1478686804025,\"1024782432771\":1509788625020,\"1024686356424\":1509788624556,\"1024686356422\":1509788624556,\"1024686356423\":1509788624556,\"1024686356420\":1509788624556,\"1022095825534\":1478686417274,\"1024686356421\":1509788624556,\"1008797385385\":1478686804025,\"1024926728651\":1509788625089,\"1023162866414\":1509788625044,\"1008797385388\":1478686804025,\"1018451608539\":1509788624427,\"1024926728654\":1509788625090,\"1024926728652\":1509788625090,\"1015506932556\":1480585069068,\"1008797385400\":1478686804025,\"1008797385406\":1478686804025,\"1024926728658\":1509788625089,\"1020294131189\":1465470268292,\"1020841872731\":1478686417078,\"1008797385396\":1478686804025,\"1024926728660\":1509788625089,\"1021625024042\":1478686417117,\"1024926728683\":1509788625090,\"1022434373211\":1480585069096,\"1022434373212\":1480585069096,\"1024789248441\":1509788625090,\"1021387123951\":1478686804065,\"1022434373200\":1480585069096,\"1022434373201\":1480585069096,\"1022434373202\":1480585069096,\"1024926728672\":1509788625090,\"1018828969329\":1478686804028,\"1022434373205\":1480585069096,\"1022434373207\":1480585069096,\"1021151322846\":1509788624934,\"1024926728677\":1509788625089,\"1022434373195\":1480585069096,\"1022434373196\":1480585069096,\"1022434373198\":1480585069096,\"1022434373184\":1480585069096,\"1022184168827\":1478686417187,\"1022434373186\":1480585069096,\"1024926728689\":1509788625089,\"1022434373188\":1480585069096,\"1022434373191\":1480585069096,\"1017038548821\":1478686804042,\"1022447873483\":1480585069105,\"1017038548822\":1478686804042,\"1017038548823\":1478686804042,\"1019125312499\":1509788625080,\"1015594227019\":1478686804065,\"1022447873487\":1480585069105,\"1022447873485\":1480585069105,\"1022447873474\":1480585069105,\"1010091969871\":1491634246528,\"1022455868537\":1478686417072,\"1015599731987\":1478686804016,\"1022447873475\":1480585069105,\"1022447873473\":1480585069105,\"1017038548824\":1478686804042,\"1022447873478\":1480585069105,\"1010091969867\":1491634246528,\"1017038548825\":1478686804042,\"1017038548826\":1478686804043,\"1022447873476\":1480585069105,\"1017038548827\":1478686804043,\"1022447873477\":1480585069105,\"1022447873502\":1480585069105,\"1025801631217\":1509788624945,\"1022447873500\":1480585069105,\"413563697\":1478686417018,\"1022092548620\":1478686417061,\"1365783295\":1478686804024,\"1022447873501\":1480585069105,\"1022447873490\":1480585069105,\"1022447873489\":1480585069105,\"1444951484\":1444487341726,\"1017038548808\":1478686804042,\"1020400957394\":1465470268317,\"1017038548809\":1478686804042,\"1017038548810\":1478686804042,\"1021309135286\":1478686416988,\"1017038548811\":1478686804042,\"126247974\":1444487341742,\"1001557479986\":1478686417023,\"1021242680706\":1478686417236,\"1022447873515\":1480585069105,\"1020194122498\":1509788624354,\"1022447873506\":1480585069105,\"1022447873507\":1480585069105,\"1022447873504\":1480585069105,\"1022447873505\":1480585069105,\"1020194122504\":1509788625078,\"1022447873510\":1480585069105,\"1020807663522\":1478686417077,\"1022447873509\":1480585069105,\"1025279448116\":1509788624562,\"1025279448117\":1509788624562,\"1020419569377\":1478686804028,\"1025279448118\":1509788624562,\"1025279448113\":1509788624562,\"1020194122517\":1509788625078,\"1022447873520\":1480585069105,\"4954801390\":1509788624162,\"1020194122520\":1509788625078,\"1025279448121\":1509788624562,\"136604570\":1478686417017,\"1021506794974\":1478686417007,\"247753988\":1444487341749,\"1022095825551\":1478686417274,\"4937500038\":1509788624162,\"1025593747738\":1509788624548,\"1025593747739\":1509788624548,\"1022095825553\":1478686417274,\"1025593747740\":1509788624548,\"1021929360519\":1478686417142,\"1022434373344\":1480585069096,\"1022434373347\":1480585069096,\"1022434373350\":1480585069096,\"1023432075840\":1509788624523,\"1022434373337\":1480585069096,\"1022434373338\":1480585069096,\"1022434373339\":1480585069096,\"1022434373340\":1480585069096,\"1024644543128\":1509788625164,\"1022434373341\":1480585069096,\"1024644543129\":1509788625164,\"1022434373342\":1480585069096,\"1024644543130\":1509788625163,\"1022466878671\":1478686417072,\"1024644543131\":1509788625163,\"1022434373328\":1480585069096,\"1022434373329\":1480585069096,\"1022434373330\":1480585069096,\"1024644543126\":1509788625163,\"1022434373331\":1480585069096,\"1022434373332\":1480585069096,\"1022434373335\":1480585069096,\"1022434373320\":1480585069096,\"1022434373322\":1480585069096,\"1022434373323\":1480585069096,\"1022434373324\":1480585069096,\"1022434373325\":1480585069096,\"247754035\":1444487341743,\"1022434373327\":1480585069096,\"1018246756134\":1509788625020,\"1025026476869\":1509788624972,\"1001557480045\":1478686417023,\"1018364721239\":1509788624172,\"1021998044986\":1478686417301,\"1025344593825\":1509788624308,\"1024157290597\":1509788667856,\"1017403049242\":1478686804020,\"1022945020077\":1509788624977,\"1021513740817\":1509788624276,\"1021998044980\":1478686417301,\"1021513740822\":1509788624273,\"1021998044983\":1478686417301,\"1021998044982\":1478686417301,\"1021513740810\":1509788624273,\"1021513740809\":1509788624273,\"1021513740808\":1509788624273,\"1021941027991\":1509788624609,\"1021513740813\":1509788624273,\"1021513740803\":1509788624273,\"1021513740802\":1509788624273,\"1562261764\":1444487341740,\"1021513740801\":1509788624273,\"1021513740800\":1509788624273,\"1025018348335\":1509788625023,\"1021982578203\":1478686417057,\"1021513740804\":1509788624273,\"1021513740858\":1509788624811,\"1021513740857\":1509788624811,\"1016831990567\":1478686804028,\"1021513740856\":1509788624811,\"1021513740863\":1509788624811,\"1021513740861\":1509788624811,\"1021513740860\":1509788624811,\"1021513740851\":1509788624811,\"1021513740850\":1509788624811,\"1024846526808\":1509788624948,\"1021513740855\":1509788624811,\"1018364723076\":1509788624172,\"1021513740854\":1509788624811,\"1021513740852\":1509788624812,\"1022393216956\":1478686417291,\"1020612887964\":1478686417027,\"1021901966017\":1509788624394,\"1020430971583\":1465470268321,\"1022090059259\":1509788624439,\"1022036972173\":1509788624462,\"1024899728493\":1509788624334,\"1022609358049\":1509788625074,\"1025344593904\":1509788624307,\"1021513740873\":1509788624811,\"1021513740872\":1509788624811,\"1014573456882\":1478686804031,\"1022043394621\":1478686417059,\"1021513740867\":1509788624811,\"1021513740866\":1509788624811,\"1021513740865\":1509788624811,\"1021513740864\":1509788624811,\"1021513740871\":1509788624811,\"1021513740870\":1509788624811,\"1021513740868\":1509788624811,\"1020911212417\":1478686417080,\"1011715992176\":1478686804027,\"1024926729961\":1509788625090,\"1024926729966\":1509788625090,\"1020911212422\":1478686417080,\"1025714992636\":1509788624537,\"1025714992634\":1509788624540,\"1025609871239\":1509788624999,\"1021998044993\":1478686417301,\"1010628176560\":1478686804054,\"1024926729974\":1509788625089,\"1014573456859\":1478686804031,\"1025593880135\":1509788624540,\"1020314315549\":1478686804027,\"4937499333\":1509788624162,\"1025593880138\":1509788624524,\"1025593880136\":1509788624542,\"1025593880137\":1509788624537,\"1022409599013\":1478686417208,\"1017124140318\":1478686804024,\"1010044522262\":1480585069062,\"757090697\":1444487341728,\"2033065348\":1491634246510,\"1024005246757\":1491634246530,\"1022090059013\":1478686417180,\"1024005246760\":1491634246533,\"1022365167079\":1509788624957,\"1022021374229\":1509788624181,\"1161437691\":1478686804033,\"1022866375609\":1509788624467,\"1020294261359\":1465470268300,\"1022132789240\":1478686417276,\"1022866375605\":1509788624467,\"1022866375606\":1509788624467,\"1022346030246\":1478686804047,\"1022233568734\":1478686417193,\"1009797331097\":1478686804028,\"1020244848457\":1465470268278,\"1004787242479\":1480585069067,\"1022240122797\":1478686417014,\"1022240122795\":1478686417014,\"1018513473988\":1509788624603,\"1116481410\":1491634246508,\"1022835703869\":1509788624388,\"1022835703867\":1509788624388,\"1021893707885\":1478686417138,\"1018364722825\":1509788624172,\"1022420347083\":1478686417209,\"1022828495004\":1509788625074,\"1022254933741\":1478686416976,\"1023947574728\":1491634246532,\"1021425267820\":1478686417106,\"1022104739809\":1478686417275,\"1025646700771\":1509788624337,\"1022065676918\":1478686417175,\"1022051652283\":1478686417269,\"1022051652282\":1478686417269,\"1024411624975\":1509788624462,\"1018513473949\":1509788624603,\"1018513473944\":1509788624603,\"1018513473936\":1509788624603,\"1018513473965\":1509788624603,\"1198137871\":1491634246507,\"1018513473955\":1509788624603,\"1019767819109\":1509788624315,\"1018513473953\":1509788624603,\"1022090321110\":1509788624943,\"1021580722031\":1509788624404,\"1198137875\":1491634246507,\"1018513473974\":1509788624603,\"1008829106037\":1509788625081,\"4848502149\":1509788624163,\"1019703987849\":1509788624320,\"1022221247564\":1478686417281,\"1025015857885\":1509788624430,\"1023432469555\":1509788624516,\"1021622007820\":1478686417117,\"1020675146139\":1478686417075,\"1022490211403\":1478943089315,\"1022130036432\":1509788625082,\"1022130036431\":1509788625082,\"1567635681\":1491634246519,\"1022130036430\":1509788625082,\"1022130036429\":1509788625082,\"1020047792872\":1509788625077,\"1022130036428\":1509788625082,\"1022220592226\":1478686417192,\"1016854127683\":1478686804034,\"148008260\":1478686804039,\"1020047792871\":1509788625077,\"1021953479778\":1478686417146,\"1018513473900\":1509788624603,\"1021953479781\":1478686417146,\"1198138063\":1491634246507,\"1018513473897\":1509788624603,\"1016862909597\":1478686804016,\"1018513473918\":1509788624603,\"1018513473917\":1509788624603,\"1022049686448\":1509788624434,\"1523728228\":1478686417024,\"1020675146145\":1478686417075,\"1022271840638\":1478686417285,\"1018513473912\":1509788624603,\"1198138067\":1491634246507,\"1018513473908\":1509788624603,\"1018513473905\":1509788624603,\"1008689921999\":1478686804064,\"1018513473904\":1509788624603,\"1024460645298\":1509788624988,\"1021934998846\":1478686416982,\"1024460645299\":1509788624989,\"1021453973065\":1478686804043,\"1021453973064\":1478686804043,\"1024460645297\":1509788624987,\"1021240845206\":1465470268197,\"4937499527\":1509788624162,\"1025771090332\":1509788624428,\"1022238680841\":1478686417194,\"1025771090333\":1509788624431,\"1021453973063\":1478686804043,\"1021453973062\":1478686804043,\"1022455474744\":1478686417297,\"1021453973061\":1478686804043,\"1022455474745\":1478686417297,\"1024460645281\":1509788624989,\"1024460645286\":1509788624988,\"1021644290950\":1509788624404,\"1024460645290\":1509788624988,\"1024460645295\":1509788624987,\"1024460645292\":1509788624989,\"1010323840714\":1465470268245,\"1016854127665\":1478686804049,\"1022234092792\":1478686417065,\"1010812468228\":1509788624299,\"1024460645258\":1509788624988,\"1024460645259\":1509788624988,\"1018364722602\":1509788624172,\"1020950401921\":1478686417033,\"1022198323514\":1509788624928,\"1024634451509\":1509788667600,\"1021769842930\":1478686417127,\"1020665709231\":1478686417075,\"1024634451514\":1509788667594,\"1025513399170\":1509788624339,\"1024634451492\":1509788667599,\"1024634451489\":1509788667650,\"1020294260885\":1465470268300,\"1016399708406\":1480585069069,\"1024634451497\":1509788667603,\"1016366023310\":1465470268320,\"1022731909438\":1509788624379,\"1012115882086\":1478686417223,\"4954800401\":1509788624162,\"1022481036856\":1478943089315,\"1025711847317\":1509788624306,\"1021501944033\":1478686416991,\"1023066658105\":1509788625073,\"1024634451525\":1509788667649,\"1023032448968\":1509788624421,\"1023032448969\":1509788624421,\"1020747894755\":1478686417028,\"1021334170319\":1478686416983,\"1022040903916\":1478686417170,\"1021487526881\":1478686417110,\"1024313269077\":1509788624927,\"1025068027068\":1509788624293,\"1025331485928\":1509788624871,\"1023538112973\":1509788625004,\"1025068027064\":1509788624293,\"1021608377087\":1478686417008,\"1023538112966\":1509788625003,\"1025331485923\":1509788624871,\"1025068027060\":1509788624293,\"1025331485920\":1509788624871,\"1021020266474\":1478686416979,\"1025331485921\":1509788624871,\"1023538112965\":1509788625003,\"1025331485926\":1509788624871,\"1018659490486\":1478686804039,\"1025331485924\":1509788624871,\"1021419370282\":1478686804050,\"1023538112991\":1509788625003,\"1025201591482\":1509788624281,\"1010013589496\":1491634246521,\"1023538112986\":1509788625003,\"1022099103649\":1509788624530,\"1023538112985\":1509788625003,\"1023538112982\":1509788625003,\"1023538112980\":1509788625003,\"1025068027043\":1509788624293,\"1020850522396\":1478686417078,\"1025331485896\":1509788624871,\"1025331485890\":1509788624871,\"1025331485891\":1509788624871,\"1198137799\":1491634246507,\"1008054620920\":1478686804052,\"1025331485892\":1509788624872,\"1025331485912\":1509788624871,\"1025331485913\":1509788624871,\"1025331485918\":1509788624871,\"1025331485917\":1509788624871,\"1025331485907\":1509788624871,\"1025331485904\":1509788624871,\"1025331485910\":1509788624871,\"1020824701876\":1509788624934,\"1025331485908\":1509788624871,\"1001380921565\":1478686804051,\"1001380921560\":1478686804051,\"1001380921562\":1478686804051,\"1001380921556\":1478686804051,\"1024648738807\":1509788624515,\"1021513740500\":1509788624276,\"1025331485883\":1509788624872,\"1001380921550\":1478686804051,\"1025331485886\":1509788624871,\"1001380921544\":1478686804051,\"1025331485884\":1509788624871,\"1025331485872\":1509788624872,\"1025331485878\":1509788624872,\"1198137783\":1491634246507,\"1021782687948\":1509788624399,\"1023538112942\":1509788625003,\"1023538112940\":1509788625003,\"1023538112941\":1509788625003,\"1025772008130\":1509788624565,\"1012967849873\":1478686804034,\"1026832365049\":1523788103996,\"1022208665212\":1480585069087,\"1531592120\":1478686804054,\"1023538112953\":1509788625004,\"1001380921573\":1478686804051,\"1001380921572\":1478686804051,\"1017612634214\":1478686804066,\"1001380921569\":1478686804051,\"1023538112947\":1509788625003,\"1021261815822\":1478686804066,\"1021711385920\":1478686417250,\"1021250019524\":1478686804046,\"1022081670951\":1478686417178,\"1022346030939\":1478686804050,\"1021632100804\":1509788624352,\"1023637205588\":1509788624279,\"1598961789\":1444487341741,\"1022451804467\":1478686417215,\"1012259801270\":1478686417025,\"1325803590\":1444487341749,\"1020294130159\":1465470268292,\"1018364722401\":1509788624172,\"1025884208338\":1509788667465,\"1025884208339\":1509788667461,\"1022065676385\":1478686417175,\"1025270010212\":1509788624423,\"1292905030\":1478950494921,\"1025067634042\":1509788624292,\"1012967849500\":1478686804032,\"1021178455419\":1478686417234,\"1021562109506\":1509788624401,\"1021874834193\":1478686417136,\"1024869595541\":1509788624942,\"1020500966911\":1465470268303,\"1022138686288\":1478686417013,\"1021250019421\":1478686804046,\"1022921428385\":1509788624937,\"1025608035453\":1509788625107,\"1021940373265\":1478686417260,\"1021894494940\":1509788624465,\"1025910684231\":1509788667457,\"1024785055407\":1509788624197,\"1024899729301\":1509788624335,\"1021619255833\":1478686416981,\"1021619255835\":1478686416981,\"1025714861581\":1509788624420,\"1025902164955\":1509788667460,\"1025044696649\":1509788624870,\"1019865600924\":1509788625077,\"1020532554564\":1509788624324,\"1021020659362\":1478686417035,\"1021769842953\":1478686417127,\"1021513740795\":1509788624276,\"1021513740794\":1509788624273,\"1020824701672\":1509788624934,\"1021513740793\":1509788624273,\"1021513740796\":1509788624273,\"1021513740791\":1509788624273,\"1021513740789\":1509788624273,\"1021513740788\":1509788624273,\"1021124729050\":1478686416974,\"1023845074682\":1491634246537,\"1025331483242\":1509788624467,\"1025331483243\":1509788624467,\"1025331483247\":1509788624467,\"4937502283\":1509788624165,\"1025331483245\":1509788624467,\"1023491056692\":1509788624932,\"1025331483232\":1509788624467,\"1025331483258\":1509788624467,\"1024212344620\":1509788625184,\"1024212344619\":1509788625184,\"1025331483260\":1509788624467,\"1024212344616\":1509788625184,\"1022062927687\":1478686417174,\"1021139134551\":1478686417234,\"1024212344614\":1509788625184,\"1024212344612\":1509788625184,\"1025331483249\":1509788624467,\"1022133965592\":1509788625079,\"1024212344610\":1509788625184,\"1025331483253\":1509788624467,\"1021132712076\":1478686417037,\"1000307199549\":1478686804029,\"1024212344607\":1509788625184,\"1025331483215\":1509788624467,\"1025331483231\":1509788624467,\"1025331483218\":1509788625171,\"1021774564950\":1509788624193,\"1025331483216\":1509788624467,\"1013321074188\":1509788625020,\"1010091968129\":1491634246528,\"1023032449499\":1509788624820,\"1016092490611\":1509788624941,\"4938550799\":1509788624165,\"1023032449487\":1509788624820,\"1013321074192\":1509788625020,\"1022645662438\":1480585069137,\"1022645662439\":1480585069137,\"1022645662440\":1480585069137,\"1022645662441\":1480585069137,\"1022645662442\":1480585069137,\"1013321074210\":1509788625020,\"1022645662446\":1480585069137,\"1022645662448\":1480585069137,\"1024886241120\":1509788624880,\"1022645662453\":1480585069137,\"1022645662456\":1480585069137,\"1020891158861\":1478686416999,\"1022645662458\":1480585069137,\"4990058773\":1509788624163,\"1021286719992\":1478686417040,\"1022645662460\":1480585069137,\"1022447478286\":1478686804065,\"1022645662462\":1480585069137,\"4563957897\":1465469681386,\"1023829870954\":1509788667494,\"1023829870952\":1509788667494,\"1023829870958\":1509788667494,\"1023829870957\":1509788667494,\"1023829870945\":1509788667494,\"1024520675922\":1509788624444,\"1024520675923\":1509788624444,\"1024634452120\":1509788667599,\"1024520675921\":1509788624444,\"1023617023029\":1509788624969,\"1023829870949\":1509788667494,\"1024520675918\":1509788624444,\"1023330888504\":1509788625072,\"1024634452102\":1509788667649,\"1024520675919\":1509788624444,\"1021027209609\":1478686417035,\"1024634452104\":1509788667600,\"1015170348178\":1478686804053,\"1015170348179\":1478686804053,\"1010092492414\":1491634246517,\"1023829870923\":1509788667494,\"1023829870920\":1509788667494,\"1020797830148\":1478686417077,\"1022047329935\":1478686417171,\"1010092492409\":1491634246516,\"1010092492402\":1491634246516,\"1023829870917\":1509788667494,\"1022292946228\":1478686417286,\"1010092492396\":1491634246516,\"1010091968116\":1491634246522,\"1023829870943\":1509788667494,\"1024634452128\":1509788667600,\"1023829870930\":1509788667494,\"1010092492390\":1491634246516,\"1022292946237\":1478686417286,\"1010092492387\":1491634246516,\"1023829870935\":1509788667494,\"1022292946232\":1478686417286,\"1010755059101\":1444487341761,\"1008664490297\":1478686804030,\"1018771823522\":1509788624372,\"1022402388939\":1478686417292,\"1022136063022\":1478686417184,\"1020294260345\":1465470268300,\"1011515976498\":1480585069074,\"1025331483274\":1509788624467,\"1025331483272\":1509788624467,\"1025331483273\":1509788624467,\"1015536818877\":1478686804033,\"1025331483270\":1509788624467,\"1017431624612\":1509788624284,\"1021742582919\":1478686804039,\"1021742582926\":1478686804039,\"1021742582925\":1478686804039,\"1021742582924\":1478686804039,\"1022468581362\":1478686417299,\"1021742582923\":1478686804039,\"1021742582922\":1478686804039,\"1021742582921\":1478686804039,\"1021742582920\":1478686804039,\"4990058604\":1509788624163,\"1021526064731\":1478686417113,\"1022438434812\":1478686417213,\"1022413661562\":1478686417302,\"1022645662611\":1480585069138,\"1020437528360\":1478686804031,\"1021453974160\":1478686804065,\"1022645662620\":1480585069138,\"1022645662624\":1480585069138,\"1022242876323\":1478686417066,\"1023204676111\":1509788625043,\"1022645662626\":1480585069138,\"1022645662627\":1480585069138,\"1022645662631\":1480585069138,\"1021531435458\":1509788624461,\"1022645662636\":1480585069138,\"1022645662638\":1480585069138,\"1022645662643\":1480585069138,\"1022645662649\":1480585069138,\"1025299894645\":1509788624294,\"1020980551417\":1478686417087,\"1022645662654\":1480585069138,\"1022645662655\":1480585069138,\"1022645662658\":1480585069138,\"1021566825359\":1509788624397,\"1022645662660\":1480585069138,\"1022645662662\":1480585069138,\"1022645662663\":1480585069138,\"1022645662664\":1480585069138,\"1022645662667\":1480585069138,\"4938551059\":1509788624165,\"1024886884798\":1509788624460,\"4967121227\":1509788624163,\"1021733801382\":1478686417051,\"1022645662689\":1480585069138,\"1021453974249\":1478686804029,\"1022645662691\":1480585069138,\"1022645662692\":1480585069138,\"1022645662693\":1480585069138,\"1009845434100\":1509788625017,\"1022645662694\":1480585069138,\"1022193735419\":1478686417280,\"1022645662696\":1480585069138,\"1022645662699\":1480585069138,\"1022645662701\":1480585069138,\"1022645662702\":1480585069138,\"1025270013764\":1509788624197,\"1022645662706\":1480585069138,\"1020725871001\":1509788624393,\"1022645662710\":1480585069138,\"1022645662711\":1480585069138,\"1022645662716\":1480585069138,\"1023032449263\":1509788624196,\"1023032449260\":1509788624196,\"1022645662719\":1480585069138,\"1022645662470\":1480585069137,\"1022645662473\":1480585069137,\"1022645662476\":1480585069137,\"757089455\":1444487341716,\"1022645662479\":1480585069137,\"1022645662480\":1480585069137,\"1022645662481\":1480585069137,\"1022014037425\":1478686417160,\"1025907275170\":1509788667456,\"1021231804263\":1478686417003,\"1022468187792\":1478686417218,\"1023032449078\":1509788625103,\"1022645662505\":1480585069137,\"1022645662506\":1480585069137,\"1025373819990\":1509788624306,\"1022645662518\":1480585069137,\"1022014037407\":1478686417160,\"1025296748838\":1509788624871,\"1021781118902\":1478686804065,\"1022645662525\":1480585069137,\"1023032449071\":1509788625103,\"1022241303418\":1478686417014,\"1021453974091\":1478686804065,\"1022645662528\":1480585069137,\"1022645662529\":1480585069137,\"1022645662530\":1480585069138,\"1025703459229\":1509788624308,\"1022645662532\":1480585069138,\"1022645662533\":1480585069138,\"1022645662535\":1480585069138,\"1022645662536\":1480585069138,\"1024886884642\":1509788624460,\"1001380925396\":1478686804051,\"1022645662537\":1480585069138,\"1022645662538\":1480585069138,\"1001380925395\":1478686804051,\"1022645662542\":1480585069138,\"4960177769\":1509788624165,\"1001380925389\":1478686804051,\"1022645662545\":1480585069138,\"1001380925391\":1478686804051,\"1001380925385\":1478686804051,\"1022645662548\":1480585069138,\"1022478022985\":1478943089487,\"1022645662551\":1480585069138,\"1022645662554\":1480585069138,\"1019286928139\":1509788625077,\"1021418322036\":1509788624399,\"1021946534351\":1478686417144,\"1021946534350\":1478686417144,\"1021874832758\":1478686417136,\"1025533718423\":1509788624348,\"1025533718416\":1509788624348,\"1015536819127\":1478686804033,\"1020591535847\":1478686417027,\"1022270663949\":1509788624938,\"1022339473724\":1478686417202,\"1024641399693\":1509788624520,\"1021834461434\":1478686416973,\"1022645661827\":1480585069136,\"1022645661828\":1480585069136,\"1022093988711\":1478686417274,\"1022645661832\":1480585069136,\"1022645661835\":1480585069136,\"1021834461417\":1478686416973,\"1021251071411\":1478686417100,\"1022645661840\":1480585069136,\"1021933820671\":1478686804065,\"1022645661843\":1480585069136,\"1022645661845\":1480585069136,\"1024953995004\":1509788624254,\"1022245496930\":1478686417195,\"1022645661848\":1480585069136,\"1022645661851\":1480585069136,\"1022645661855\":1480585069136,\"1022645661856\":1480585069136,\"1022645661857\":1480585069136,\"1022645661858\":1480585069136,\"1022645661859\":1480585069136,\"1021763161874\":1509788624395,\"1024154541700\":1509788667658,\"1022245759040\":1478686417195,\"757090074\":1444487341731,\"1022645661882\":1480585069136,\"1022645661883\":1480585069136,\"1022645661887\":1480585069136,\"1022645661888\":1480585069137,\"1023829871531\":1509788667494,\"1023829871529\":1509788667494,\"1022645661892\":1480585069137,\"1022645661895\":1480585069137,\"1025561895657\":1509788624344,\"1020898367725\":1478686417032,\"1022645661898\":1480585069137,\"1021953219470\":1478686417146,\"1022645661899\":1480585069137,\"1022645661901\":1480585069137,\"1023829871527\":1509788667494,\"1022645661902\":1480585069137,\"1021915202631\":1509788624997,\"1022645661904\":1480585069137,\"1022645661907\":1480585069137,\"1022645661909\":1480585069137,\"1022645661910\":1480585069137,\"1022645661912\":1480585069137,\"1021334169334\":1478686416983,\"1022645661913\":1480585069137,\"1021334169333\":1478686416983,\"1023829871536\":1509788667494,\"1022645661915\":1480585069137,\"1020293997811\":1465470268279,\"1021334169331\":1478686416983,\"1022645661917\":1480585069137,\"1022645661919\":1480585069137,\"1023924636711\":1509788624961,\"1021453580773\":1478686417107,\"1021453580768\":1478686417107,\"1022465172783\":1478686417303,\"1007023955401\":1478686804033,\"1023044245680\":1509788625047,\"1020294259908\":1465470268300,\"1022457046440\":1478686417298,\"1019233314203\":1509788625077,\"1022645661950\":1480585069137,\"1022645661951\":1480585069137,\"1021062207074\":1478686417232,\"1022645661701\":1480585069136,\"1024743767316\":1509788624958,\"1024002752827\":1491634246532,\"1024002752823\":1491634246530,\"1022645661708\":1480585069136,\"1022238812237\":1509788624947,\"1019672920925\":1478686804051,\"1022238812238\":1509788624933,\"1022645661711\":1480585069136,\"1024002752819\":1491634246532,\"1022645661715\":1480585069136,\"1022645661717\":1480585069136,\"1022700713933\":1509788624973,\"1022645661719\":1480585069136,\"1004353008234\":1444487341756,\"1022645661721\":1480585069136,\"1018573245950\":1480585069072,\"1022645661750\":1480585069136,\"1022645661752\":1480585069136,\"1022645661753\":1480585069136,\"1022645661756\":1480585069136,\"1022645661759\":1480585069136,\"1022645661762\":1480585069136,\"1022645661765\":1480585069136,\"1022645661768\":1480585069136,\"1021208342244\":1478686804027,\"1022645661771\":1480585069136,\"228222795\":1444487341728,\"1022645661778\":1480585069136,\"1022645661782\":1480585069136,\"1022645661785\":1480585069136,\"4967121608\":1509788624164,\"1022645661786\":1480585069136,\"1022645661791\":1480585069136,\"4990059407\":1509788624164,\"1022645661793\":1480585069136,\"1022645661794\":1480585069136,\"1022645661795\":1480585069136,\"1022241302622\":1478686417014,\"1022645661797\":1480585069136,\"1023926865095\":1491634246528,\"1022645661799\":1480585069136,\"1021234424916\":1478686417039,\"1024782562253\":1509788625021,\"1016399318018\":1480585069070,\"1024370207526\":1509788624926,\"1022645661814\":1480585069136,\"1022645661815\":1480585069136,\"1022645661817\":1480585069136,\"1022645661818\":1480585069136,\"1019449324029\":1509788624286,\"1021219221374\":1465470268196,\"1022645661823\":1480585069136,\"1021626857048\":1478686417247,\"1024615441468\":1509788624810,\"1024154542004\":1509788667659,\"1021626857044\":1478686417247,\"1022303825390\":1478686417199,\"1021626857046\":1478686417247,\"1014730860880\":1465470268256,\"1021355533941\":1478686417006,\"1018513477599\":1509788624262,\"1021660542026\":1478686417050,\"1018513477596\":1509788624263,\"1018513477594\":1509788624263,\"1018513477592\":1509788624263,\"1018513477591\":1509788624263,\"1018513477589\":1509788624263,\"1021462231058\":1509788624405,\"1018513477587\":1509788624263,\"1016092489754\":1509788624941,\"1018513477612\":1509788624262,\"1022317718825\":1509788624938,\"1018513477609\":1509788624262,\"1018513477607\":1509788624262,\"1018513477606\":1509788624262,\"1018513477603\":1509788624262,\"1025192417784\":1509788667497,\"1019409609292\":1509788624312,\"1022317718819\":1509788625019,\"1018513477629\":1509788624263,\"1018513477627\":1509788624263,\"1022005125015\":1478686417266,\"1018513477621\":1509788624262,\"795755566\":1491634246535,\"1023821482792\":1491634246536,\"1023821482785\":1491634246536,\"4937501981\":1509788624163,\"1022217579344\":1478686417192,\"795755570\":1491634246508,\"1021619648204\":1478686417117,\"4990059014\":1509788624164,\"1025881452744\":1509788667467,\"1016937360818\":1478686804022,\"1022000535672\":1478686416972,\"795755545\":1491634246508,\"1016870381988\":1478686804025,\"1022645661952\":1480585069137,\"1013113456940\":1465470268252,\"1022645661956\":1480585069137,\"1021286720005\":1478686417040,\"1022645661962\":1480585069137,\"1022645661964\":1480585069137,\"1022645661965\":1480585069137,\"1023995937161\":1509788667538,\"1022645661966\":1480585069137,\"1021918479476\":1478686417141,\"1022645661969\":1480585069137,\"1022645661970\":1480585069137,\"1020814214714\":1478686417225,\"1022645661971\":1480585069137,\"1022645661972\":1480585069137,\"1022645661973\":1480585069137,\"1022645661974\":1480585069137,\"1022645661976\":1480585069137,\"1018334966281\":1478686804022,\"1022645661978\":1480585069137,\"1022645661980\":1480585069137,\"1022645661982\":1480585069137,\"1022645661983\":1480585069137,\"1022011547629\":1478686417057,\"4894771303\":1509788624163,\"4990059202\":1509788624163,\"1022233832098\":1478686417065,\"1020957875853\":1478686417000,\"1020957875854\":1478686417000,\"1023032449579\":1509788624535,\"1023032449576\":1509788624535,\"757090016\":1444487341715,\"1001797080299\":1478686804054,\"1020786294966\":1478686416997,\"4960177251\":1509788624163,\"1022645662021\":1480585069131,\"1022645662022\":1480585069131,\"1022645662024\":1480585069131,\"1022645662025\":1480585069131,\"1022645662026\":1480585069131,\"1022645662027\":1480585069131,\"1022645662029\":1480585069131,\"1022645662030\":1480585069131,\"1022645662031\":1480585069131,\"1022645662032\":1480585069131,\"1022645662033\":1480585069131,\"1022645662034\":1480585069131,\"1022645662038\":1480585069131,\"1022645662040\":1480585069131,\"1021946534900\":1478686417144,\"1022645662043\":1480585069131,\"1022645662046\":1480585069131,\"1020744614444\":1509788624321,\"1022645662050\":1480585069131,\"1022645662052\":1480585069131,\"1020814214720\":1478686417226,\"1020814214722\":1478686417226,\"1021789375608\":1509788624993,\"1024154541893\":1509788667659,\"1021737865027\":1478686417251,\"1024663288227\":1509788625069,\"1016966065397\":1478686804049,\"1021877452875\":1478686417053,\"1021877452877\":1478686417053,\"1021335740604\":1478686417103,\"1021594220323\":1509788625079,\"1023617022127\":1509788624969,\"1018364721079\":1509788624172,\"1019595589743\":1509788624317,\"1025637916678\":1509788624359,\"1019595589742\":1509788624313,\"1025637916679\":1509788624359,\"1025406849997\":1509788624441,\"1025637916676\":1509788624359,\"1025637916677\":1509788624359,\"1025406849999\":1509788624507,\"1025637916675\":1509788624359,\"1025406849995\":1509788624466,\"1025406849985\":1509788624512,\"1020962986751\":1478686417033,\"1021983497768\":1509788624463,\"1024595780220\":1509788624934,\"1024595780221\":1509788624934,\"1024595780222\":1509788624934,\"1024595780223\":1509788624934,\"1022018361819\":1478686417161,\"1022051785689\":1509788625066,\"1016719529369\":1478686804069,\"1016719529371\":1478686804069,\"1016719529372\":1478686804069,\"1016719529373\":1478686804069,\"1016719529374\":1478686804069,\"1024686356664\":1509788624219,\"1016719529375\":1478686804069,\"1024686356662\":1509788624219,\"1024686356663\":1509788624219,\"1024686356661\":1509788624219,\"1024686356659\":1509788624219,\"1025637916790\":1509788624359,\"1025757331289\":1509788624970,\"1025406849983\":1509788624511,\"1025757331293\":1509788624969,\"1013075446914\":1478686804066,\"1573269932\":1478686417024,\"1021335740611\":1478686417103,\"1021691464980\":1478686417050,\"1666191144\":1478686417024,\"1016719529376\":1478686804069,\"1016719529377\":1478686804069,\"1021334692061\":1478686417103,\"1016719529378\":1478686804069,\"1016719529379\":1478686804069,\"1018546113145\":1478686804017,\"1017402527113\":1478686804035,\"1022234488214\":1478686417282,\"1021277283479\":1478686417101,\"1020293997064\":1465470268279,\"1018364720897\":1509788624172,\"1025637916812\":1509788624359,\"1025637916813\":1509788624359,\"1025637916811\":1509788624359,\"1020419570173\":1478686804028,\"1023756480760\":1509788624945,\"1021763291528\":1478686417127,\"795755481\":1491634246508,\"1025628610668\":1509788624186,\"1021763291527\":1478686417127,\"1025628610665\":1509788624200,\"1025628610666\":1509788624203,\"1025628610667\":1509788624197,\"1022940954662\":1509788625052,\"1024727775906\":1509788624170,\"1024595780224\":1509788624934,\"1022485363915\":1478943089536,\"1022447477436\":1478686804071,\"1022447477437\":1478686804071,\"1017402527190\":1478686804035,\"1018517801049\":1480585069070,\"1017402527188\":1478686804035,\"1022050343628\":1478686417172,\"1017402527189\":1478686804035,\"1017402527186\":1478686804035,\"1017402527187\":1478686804035,\"1022050343625\":1478686417172,\"1017402527184\":1478686804035,\"1017402527185\":1478686804035,\"1022050343622\":1478686417172,\"1020744615187\":1509788624321,\"1022104213027\":1478686417182,\"1021528554463\":1509788624397,\"1021151325512\":1509788624960,\"1020741731554\":1478686417075,\"1022026356847\":1478686417011,\"1022339474887\":1478686417202,\"1012226375809\":1478686416994,\"1021740878204\":1478686417125,\"1025007995589\":1509788625007,\"1019309473376\":1509788624315,\"1022026356851\":1478686417011,\"1022026356853\":1478686417011,\"1018054075659\":1491634246514,\"1025908191520\":1509788667452,\"1025593747448\":1509788624437,\"1024686356942\":1509788624442,\"1025593747449\":1509788624437,\"1024686356943\":1509788624442,\"1024045350912\":1509788624378,\"1024686356940\":1509788624442,\"1024045350913\":1509788624378,\"1024686356941\":1509788624442,\"1024045350918\":1509788624377,\"1024045350919\":1509788624377,\"1024045350916\":1509788624378,\"1024686356936\":1509788624442,\"1024045350917\":1509788624377,\"1024045350922\":1509788624377,\"757088281\":1444487341730,\"1024045350923\":1509788624377,\"1024045350920\":1509788624377,\"1024045350921\":1509788624377,\"1023556074849\":1509788624382,\"1024045350924\":1509788624377,\"1023556074850\":1509788624382,\"1024045350925\":1509788624377,\"1025593747447\":1509788624437,\"1024086121957\":1509788624518,\"1025524411304\":1509788624418,\"1019771486902\":1509788624315,\"1019771486901\":1509788624317,\"1025524411303\":1509788624418,\"1025524411301\":1509788624418,\"424178712\":1444487341732,\"1363688476\":1491634246520,\"1023431812336\":1509788624521,\"1025606199122\":1509788624364,\"1021242157937\":1478686417100,\"1019825233892\":1509788624302,\"1025606199121\":1509788624363,\"1010755057671\":1444487341761,\"1022701236274\":1509788624525,\"1025879488163\":1509788667912,\"1025879488164\":1509788667917,\"616581541\":1478950494912,\"1025879488166\":1509788667892,\"1021832627325\":1478686417256,\"1025524411264\":1509788624418,\"1023556074800\":1509788624382,\"1025056753572\":1509788625007,\"1025637917014\":1509788624359,\"1023556074796\":1509788624382,\"1023556074797\":1509788624382,\"1025637917012\":1509788624359,\"1023556074798\":1509788624382,\"1025637917013\":1509788624359,\"1023556074799\":1509788624382,\"1025637917010\":1509788624359,\"1023556074792\":1509788624382,\"1025637917011\":1509788624359,\"1023556074793\":1509788624382,\"1025524411295\":1509788624418,\"1023556074794\":1509788624382,\"1025524411292\":1509788624418,\"1023121709910\":1509788625046,\"1025637917009\":1509788624359,\"1023556074795\":1509788624382,\"1022479858970\":1478943089488,\"1022701236264\":1509788624525,\"1017402526844\":1478686804056,\"1022701236266\":1509788624525,\"1017402526845\":1478686804056,\"1022701236267\":1509788624525,\"1022701236268\":1509788624525,\"1022701236269\":1509788624525,\"1020858253943\":1478686416983,\"1022701236270\":1509788624525,\"1022701236271\":1509788624525,\"1021976027114\":1478686417150,\"5001725858\":1509788667398,\"1022216531388\":1478686416973,\"1021948632449\":1509788624389,\"1025524411259\":1509788624418,\"1021738387747\":1478686417252,\"1025524411250\":1509788624418,\"1025524411252\":1509788624418,\"1022412874239\":1478686417070,\"1209673145\":1444487341707,\"1020709489229\":1509788624934,\"1023460255679\":1509788624311,\"1022092547114\":1478686417061,\"1020264636885\":1509788624960,\"1020419569896\":1478686804028,\"1024567206308\":1509788667496,\"1021453975092\":1478686804050,\"1025593747210\":1509788625022,\"1024686356794\":1509788624853,\"1020962986761\":1478686417034,\"1024686356792\":1509788624853,\"1023617022332\":1509788624969,\"1020962986760\":1478686417034,\"1020962986759\":1478686417033,\"1024686356790\":1509788624853,\"1024686356791\":1509788624853,\"1024686356787\":1509788624853,\"1022466089625\":1509788625079,\"4937501597\":1509788624163,\"1021933821195\":1478686804047,\"1017402526958\":1478686804056,\"1017402526959\":1478686804056,\"1024552788249\":1509788624185,\"1018364720730\":1509788624172,\"1021770107691\":1478686417009,\"1020854846117\":1478686417078,\"1022438302466\":1478686417071,\"1022079571549\":1478686417178,\"1000531073700\":1478686804054,\"1016719529944\":1478686804069,\"1016719529945\":1478686804070,\"1022645662849\":1480585069139,\"1022645662852\":1480585069139,\"1022645662853\":1480585069139,\"1022645662854\":1480585069139,\"1022645662855\":1480585069139,\"1022645662858\":1480585069139,\"1016719529941\":1478686804069,\"1021984284130\":1509788624463,\"1016719529942\":1478686804069,\"1016719529943\":1478686804069,\"1019220074632\":1509788624314,\"1023204676873\":1509788625043,\"1000531073677\":1478686804054,\"1000531073678\":1478686804054,\"1021358154614\":1478686417104,\"1000531073679\":1478686804054,\"1022645662892\":1480585069139,\"1000531073673\":1478686804054,\"1025551018329\":1509788624343,\"1012209336998\":1509788625017,\"1022645662894\":1480585069139,\"1000531073675\":1478686804054,\"1025551018331\":1509788624335,\"1000531073684\":1478686804054,\"1000531073680\":1478686804054,\"1022645662900\":1480585069139,\"1025608426973\":1509788624438,\"1025608426974\":1509788624438,\"1021998046467\":1478686417301,\"1025608426962\":1509788624438,\"1021998046466\":1478686417301,\"1000531073695\":1478686804054,\"1022645662908\":1480585069139,\"1000531073690\":1478686804054,\"1016625683760\":1478686804058,\"1022645662912\":1480585069139,\"1016625683761\":1478686804058,\"1016625683762\":1478686804058,\"1022645662922\":1480585069139,\"1022645662928\":1480585069139,\"1008251088586\":1478686804023,\"1010000741893\":1491634246516,\"1022645662931\":1480585069139,\"1022645662932\":1480585069139,\"1022645662933\":1480585069139,\"1022645662936\":1480585069139,\"1023132981708\":1509788625144,\"1022645662939\":1480585069139,\"1022645662941\":1480585069139,\"1009850806650\":1491634246514,\"1022346028579\":1478686804047,\"1016625683759\":1478686804058,\"1015506935389\":1480585069068,\"1022645662943\":1480585069139,\"1022645662945\":1480585069139,\"1019958662344\":1478686804021,\"1022645662948\":1480585069139,\"1022645662950\":1480585069139,\"1021715057789\":1509788624395,\"1022398194985\":1478686417292,\"1001644775469\":1444487341702,\"1022645662954\":1480585069139,\"1018517801698\":1480585069070,\"1023132981754\":1509788625168,\"1024055967969\":1509788624928,\"1021665513116\":1478686417120,\"1020790228300\":1478686417077,\"1004353009292\":1444487341756,\"1022645662724\":1480585069138,\"1022645662725\":1480585069138,\"1024244586458\":1509788624948,\"1022645662730\":1480585069138,\"1022645662731\":1480585069138,\"1023391312001\":1509788624385,\"1022365034453\":1509788624948,\"1025485745609\":1509788625136,\"1022645662747\":1480585069138,\"1242571916\":1478686804029,\"1022645662749\":1480585069138,\"1022675284547\":1480585069070,\"1022645662757\":1480585069138,\"1008956507199\":1465470268262,\"1022645662763\":1480585069138,\"1025322440633\":1509788624305,\"1022645662766\":1480585069138,\"1022645662774\":1480585069138,\"1022645662775\":1480585069138,\"1024205134139\":1509788625034,\"1022645662778\":1480585069138,\"1022645662779\":1480585069138,\"1022645662780\":1480585069138,\"1022645662781\":1480585069138,\"1025429253750\":1509788624407,\"1022254935307\":1478686416976,\"1022645662785\":1480585069138,\"1021453974857\":1478686804050,\"1022645662786\":1480585069138,\"1021453974856\":1478686804050,\"1022645662787\":1480585069138,\"1022011546251\":1478686417057,\"1022746447450\":1509788625017,\"1021358154648\":1478686417104,\"1022645662789\":1480585069138,\"1022645662790\":1480585069138,\"1022746447449\":1509788625017,\"1021358154645\":1478686417104,\"1022645662792\":1480585069138,\"1022645662793\":1480585069138,\"1021655691592\":1509788624813,\"1021358154647\":1478686417104,\"1022413660862\":1478686417302,\"1021453974855\":1478686804050,\"1018364720510\":1509788624172,\"1025429253742\":1509788624432,\"1025429253743\":1509788624426,\"1022443151465\":1478686417295,\"1025429253741\":1509788624429,\"1012562440038\":1478686417074,\"1022157558621\":1478686417278,\"1826750980\":1478686804029,\"1022645662826\":1480585069139,\"1022645662827\":1480585069139,\"1022645662828\":1480585069139,\"1021655298406\":1509788624610,\"1022645662830\":1480585069139,\"1022645662833\":1480585069139,\"1444952274\":1444487341733,\"1022645662835\":1480585069139,\"1025523887078\":1509788625003,\"1021721349452\":1478686804047,\"1022645662839\":1480585069139,\"1022645662841\":1480585069139,\"1021673115234\":1509788624544,\"1022645662843\":1480585069139,\"1022645662844\":1480585069139,\"1022645662845\":1480585069139,\"1022645662846\":1480585069139,\"1024752547820\":1509788667502,\"1022090581684\":1478686417062,\"1021832496666\":1478686417256,\"1022645663105\":1480585069139,\"1024752547821\":1509788667502,\"1022645663107\":1480585069139,\"1022645663109\":1480585069139,\"1022645663110\":1480585069139,\"1022645663115\":1480585069140,\"1022645663116\":1480585069140,\"1022645663117\":1480585069140,\"1022290717351\":1478686417068,\"1021334168511\":1478686416983,\"1018364720313\":1509788624172,\"1021455023240\":1509788624398,\"1021832496655\":1478686417256,\"1024752547828\":1509788667502,\"1024752547824\":1509788667502,\"1024287970209\":1509788625246,\"1001675315019\":1478686804029,\"1024287970202\":1509788624271,\"1024287970203\":1509788624614,\"1022645663148\":1480585069131,\"1020987889758\":1478686417034,\"1022645663149\":1480585069131,\"1022645663150\":1480585069131,\"1022645663152\":1480585069131,\"1022645663154\":1480585069131,\"1022645663158\":1480585069131,\"4959258798\":1509788624163,\"1022645663160\":1480585069131,\"1022645663161\":1480585069131,\"1022645663162\":1480585069132,\"1022645663165\":1480585069132,\"1022645663166\":1480585069132,\"1022645663169\":1480585069132,\"1022103688590\":1509788624190,\"1444952420\":1444487341748,\"1021993196588\":1509788624926,\"1021242681719\":1478686417236,\"1021242681722\":1478686417236,\"1012189021340\":1478686416994,\"1025548396739\":1509788625020,\"1021334168526\":1478686416983,\"1019915540538\":1478686804021,\"1021430906245\":1478686417106,\"1021334168512\":1478686416983,\"1021430906244\":1478686417106,\"1024576512538\":1509788667501,\"1021443620180\":1478686417107,\"1021452664013\":1478686417107,\"1024576512536\":1509788667501,\"1021626331841\":1509788624404,\"1020972030406\":1478686417034,\"1021742582767\":1478686804039,\"1021742582766\":1478686804039,\"1021742582765\":1478686804039,\"1022645663002\":1480585069139,\"1021742582764\":1478686804039,\"1021742582763\":1478686804039,\"1021742582762\":1478686804039,\"1020919995617\":1478686417032,\"1021742582761\":1478686804039,\"1022645663006\":1480585069139,\"1022645663009\":1480585069139,\"1019294662142\":1509788624323,\"1022645663010\":1480585069139,\"1022645663011\":1480585069139,\"1022645663012\":1480585069139,\"1022645663014\":1480585069139,\"1022645663015\":1480585069139,\"1022460583968\":1480585069075,\"1022645663017\":1480585069139,\"1022645663019\":1480585069139,\"1022645663020\":1480585069139,\"1022645663021\":1480585069139,\"1022645663023\":1480585069139,\"1024710474463\":1509788624997,\"1022645663029\":1480585069139,\"1022073542415\":1509788624280,\"1022324926471\":1478686417288,\"1022645663033\":1480585069139,\"1022645663035\":1480585069139,\"1021554505270\":1509788624405,\"1022645663043\":1480585069139,\"1022645663044\":1480585069139,\"1021757000286\":1478686417126,\"4954802320\":1509788624163,\"1022464647303\":1509788624318,\"1021408493448\":1478686417006,\"1021363396923\":1509788624394,\"1021945094051\":1478686417055,\"1022645663076\":1480585069139,\"1021125382360\":1478686417002,\"1022645663077\":1480585069139,\"1022645663078\":1480585069139,\"1022645663080\":1480585069139,\"1022645663081\":1480585069139,\"1022645663084\":1480585069139,\"1022645663087\":1480585069139,\"1022238158138\":1478686417065,\"1022645663089\":1480585069139,\"1022645663090\":1480585069139,\"519991563\":1478686417019,\"1022645663094\":1480585069139,\"1021396820201\":1478686804040,\"1022645663100\":1480585069139,\"1025902160998\":1509788667462,\"1024643621226\":1509788667496,\"1025902160999\":1509788667463,\"1025902160997\":1509788667461,\"1022098966835\":1509788624530,\"1021865663252\":1509788624402,\"1025902161004\":1509788667463,\"1025902161003\":1509788667457,\"1015535895114\":1478686804063,\"1025902161000\":1509788667462,\"1025902161001\":1509788667456,\"1022305007316\":1478686417015,\"1024661971566\":1509788625025,\"1025911467492\":1509788667450,\"134641689\":1444487341730,\"1025605155336\":1509788625126,\"1021781775965\":1478686417255,\"1018283189958\":1465470268271,\"1025547089911\":1509788625018,\"1025619049230\":1509788625124,\"1022058334152\":1478686417173,\"1023994108521\":1491634246518,\"1025619049231\":1509788625107,\"1025619049229\":1509788625116,\"1002728458239\":1478686804059,\"1002728458236\":1478686804059,\"1025619049237\":1509788625087,\"1002728458233\":1478686804059,\"1019527041079\":1509788624376,\"1002728458231\":1478686804059,\"1022101195086\":1478686417012,\"1019527041082\":1509788624316,\"1021352525270\":1478686417041,\"1021776664107\":1478686417128,\"1022025434623\":1478686417267,\"1021208343627\":1478686804027,\"1021693694261\":1478686804054,\"1021980869197\":1478686417056,\"1021693694259\":1478686804054,\"1020766378741\":1478686417028,\"1021760673073\":1478686417254,\"1000359107223\":1465470268262,\"1011737616602\":1478686804024,\"1020068294740\":1509788625081,\"1021206246454\":1478686417038,\"1021967893148\":1478686417149,\"1021345053817\":1478686804023,\"1021789378549\":1509788624993,\"1021776664113\":1478686417128,\"1021874838767\":1478686417136,\"1020622590283\":1509788625080,\"1021048048478\":1478686417093,\"1024576781793\":1509788624462,\"1018451611670\":1509788624427,\"1022013244639\":1478686417266,\"1025011668747\":1509788624462,\"1022444862989\":1478686417214,\"1017031474105\":1478686804019,\"1008054486257\":1478686804025,\"1000931228772\":1478686417021,\"1021614927038\":1478686417116,\"1021901839924\":1509788624399,\"1025513665865\":1509788624337,\"1024002890607\":1491634246532,\"1026507567271\":1515854751200,\"1021876411549\":1478686417136,\"1021876411550\":1478686417136,\"1021760279980\":1478686417127,\"1933050834\":1444487341750,\"1025528477269\":1509788624339,\"1022065673777\":1478686417012,\"1025619049029\":1509788624186,\"1025619049026\":1509788624197,\"1025619049024\":1509788624200,\"1025619049025\":1509788624204,\"1021517145802\":1509788624373,\"1021668659663\":1509788624396,\"922895888\":1491634246514,\"922895895\":1491634246514,\"1021985325798\":1478686417057,\"922895896\":1491634246514,\"922895901\":1491634246514,\"1013265242779\":1509788624353,\"1021817559260\":1478686416984,\"1025192412146\":1509788667497,\"1021810612588\":1478686417256,\"1022449712901\":1478686417295,\"1022087170277\":1478686417273,\"1021138481496\":1478686417002,\"922895916\":1491634246514,\"1019244985955\":1509788624316,\"1021817559243\":1478686416984,\"1022346426690\":1478686804071,\"1021566692294\":1509788624405,\"1025619049086\":1509788624540,\"1025619049087\":1509788624542,\"1021655297712\":1478686417008,\"1022098049049\":1478686417275,\"1025007474405\":1509788624978,\"1022383782772\":1478686417290,\"922895947\":1491634246514,\"1021925039837\":1478686417054,\"1022198320739\":1509788624959,\"1022198320741\":1509788624926,\"1021925039833\":1478686417054,\"1025911467190\":1509788667450,\"1018513479071\":1509788624263,\"1000850749152\":1478686417024,\"1018513479068\":1509788624263,\"1012108285927\":1478686417223,\"1018513479063\":1509788624263,\"1412310385\":1478686804029,\"1020893249653\":1478686417227,\"1022431099945\":1480585069095,\"1023994370904\":1491634246518,\"1021475726642\":1478686417109,\"1006883577711\":1478686804028,\"1018513478990\":1509788624263,\"1018513478987\":1509788624263,\"1021750449274\":1509788624395,\"1018513478981\":1509788624263,\"1023152114170\":1509788667538,\"1018513478977\":1509788624263,\"1024161744306\":1509788667562,\"1021980869559\":1478686417010,\"1022293603337\":1478686417198,\"1018513479001\":1509788624263,\"1018513478998\":1509788624263,\"1022293603334\":1478686417198,\"1018513478997\":1509788624263,\"1025513796631\":1509788624435,\"1022293603328\":1478686417198,\"1018513478994\":1509788624263,\"1018513479021\":1509788624263,\"1025629142280\":1509788624844,\"1018513479016\":1509788624263,\"1018513479012\":1509788624263,\"1022182723468\":1478686417187,\"1021789378101\":1509788624993,\"1018513479025\":1509788624263,\"1018513479024\":1509788624263,\"1022002496821\":1478686804049,\"1022002496820\":1478686804049,\"1022002496822\":1478686804049,\"1018702618182\":1509788624427,\"1025619049093\":1509788624523,\"1022002496817\":1478686804048,\"1022002496816\":1478686804048,\"1022002496819\":1478686804048,\"1025619049088\":1509788624537,\"1022038542106\":1478686417011,\"1025900326222\":1509788667462,\"4966603207\":1509788624164,\"1024612957840\":1509788624389,\"1025900326226\":1509788667463,\"1025900326225\":1509788667465,\"1022238814999\":1509788624947,\"1022002496815\":1478686804048,\"1019137767534\":1509788625016,\"4997142587\":1509788667398,\"166492175\":1444487341729,\"5001731012\":1509788667398,\"1022437785357\":1478686417071,\"1022437785358\":1478686417071,\"1021059844841\":1478686804043,\"1023924639657\":1509788624961,\"1022437785364\":1478686417071,\"1025772004830\":1509788624228,\"1022437785363\":1478686417071,\"1021904854867\":1478686417259,\"1021904854864\":1478686417259,\"1022988016693\":1509788624533,\"1008744574764\":1478686804030,\"1021297604836\":1478686417102,\"1021473498708\":1509788624816,\"1022988016662\":1509788624816,\"1022988016655\":1509788624194,\"570708027\":1478686804051,\"1020743048106\":1478686416996,\"1022368447299\":1478686417069,\"1025589820225\":1509788624352,\"1024383185752\":1509788624281,\"1020506728530\":1478686804039,\"1006884625855\":1478686804046,\"1024863038511\":1509788624342,\"4966603349\":1509788624164,\"1024383185743\":1509788624169,\"1016937362620\":1478686804022,\"1021463535990\":1478686417108,\"1022346033688\":1478686804066,\"1022346033689\":1478686804066,\"1022346033690\":1478686804067,\"1022346033691\":1478686804067,\"1010025388126\":1491634246527,\"1021976412390\":1509788625197,\"1021976412387\":1509788625197,\"1022392432944\":1478686417070,\"1021976412399\":1509788625197,\"1021976412395\":1509788625197,\"4997143382\":1509788667398,\"1021976412406\":1509788625197,\"1021976412404\":1509788625197,\"1021976412403\":1509788625197,\"1021976412402\":1509788625197,\"4894773591\":1509788624164,\"1022087301969\":1478686417062,\"1021976412413\":1509788625198,\"1021976412410\":1509788625198,\"1021976412408\":1509788625198,\"1021504955453\":1478686804035,\"1021504955452\":1478686804035,\"1021504955455\":1478686804035,\"1021504955454\":1478686804035,\"1021504955449\":1478686804035,\"1021504955451\":1478686804035,\"1021504955450\":1478686804035,\"1022988016784\":1509788624419,\"1021976412366\":1509788625198,\"1022227149624\":1478686417192,\"1021976412365\":1509788625198,\"1022227149625\":1478686417192,\"1021976412364\":1509788625198,\"1021976412361\":1509788625197,\"1024462877951\":1509788624990,\"1021976412375\":1509788625197,\"1021940761141\":1478686417143,\"1021976412373\":1509788625197,\"1021976412372\":1509788625197,\"1021976412368\":1509788625197,\"1021976412382\":1509788625197,\"1021976412379\":1509788625197,\"1021477168869\":1478686417045,\"1019449321922\":1509788624353,\"1229470595\":1444487341716,\"1021477168872\":1478686417045,\"1004334392519\":1444487341756,\"1021504955465\":1478686804035,\"1021504955464\":1478686804035,\"1021504955466\":1478686804035,\"1021504955463\":1478686804035,\"1023419890337\":1509788625084,\"1020878308121\":1509788624933,\"1020878308115\":1509788624933,\"1022293079917\":1478686417198,\"1022335546870\":1478686417201,\"1022087301926\":1478686417062,\"1020878308117\":1509788624934,\"1021634194470\":1478686417008,\"1020878308116\":1509788624933,\"1019186527838\":1509788624314,\"1022433853397\":1478686417294,\"1014152188469\":1465470268319,\"5001730271\":1509788667398,\"1021953344198\":1509788624607,\"1024294391643\":1509788625032,\"1021953344197\":1509788624607,\"1021953344195\":1509788624607,\"1021953344194\":1509788624607,\"1021953344193\":1509788624607,\"1021953344192\":1509788624607,\"1021953344207\":1509788624608,\"1021953344206\":1509788624608,\"1021037169001\":1478686417092,\"1016396437013\":1478686804017,\"1021953344201\":1509788624607,\"1021953344200\":1509788624607,\"1025585756757\":1509788624351,\"1021953344208\":1509788624607,\"1023431817916\":1509788624521,\"1021353967293\":1465469681398,\"1022478017465\":1478943089487,\"1024115999191\":1509788667890,\"1021432472001\":1478686804064,\"1021432472000\":1478686804064,\"4960179348\":1509788624164,\"1521232281\":1478686804033,\"4966603582\":1509788624165,\"1020257697741\":1465470268311,\"1021432471999\":1478686804064,\"1021976412457\":1509788625144,\"1000458722372\":1491634246511,\"1025721541241\":1509788624186,\"5001730425\":1509788667398,\"1025721541238\":1509788624203,\"1025721541239\":1509788624197,\"1023152114477\":1509788667538,\"1025721541237\":1509788624200,\"1002728457422\":1478686804059,\"1002728457421\":1478686804059,\"1025385614898\":1509788624408,\"1002728457420\":1478686804059,\"1025385614899\":1509788624408,\"1002728457419\":1478686804059,\"1025385614901\":1509788624408,\"1002728457417\":1478686804059,\"1025385614902\":1509788624408,\"1002728457415\":1478686804059,\"1002728457413\":1478686804059,\"1002728457411\":1478686804059,\"1002728457410\":1478686804059,\"1021953344181\":1509788624607,\"1023820567532\":1491634246535,\"1021953344191\":1509788624607,\"1021953344190\":1509788624607,\"1021953344189\":1509788624607,\"1021953344188\":1509788624608,\"1025385614892\":1509788624409,\"1021953344187\":1509788624608,\"1021897121344\":1478686417258,\"1025385614893\":1509788624409,\"1021953344186\":1509788624608,\"1021897121347\":1478686417259,\"1021953344184\":1509788624608,\"1021655297035\":1478686417008,\"1019974649939\":1509788624311,\"549344049\":1478686417019,\"1007430073575\":1478686804025,\"1025806476712\":1509788667447,\"5001730492\":1509788667398,\"1014765205451\":1478686804024,\"1023924639204\":1509788624961,\"1025033034742\":1509788624612,\"1021226038931\":1478686417099,\"1025033034746\":1509788624612,\"1018923470797\":1509788624301,\"1020560600436\":1478686417026,\"1023931978827\":1491634246530,\"1021332602631\":1478686417103,\"1021200086888\":1465470268193,\"1025784456879\":1509788624349,\"1020462689122\":1465470268260,\"1025148771503\":1509788667843,\"1025251395250\":1509788625007,\"1291075359\":1478686417024,\"1022016784365\":1509788625067,\"560616083\":1491634246514,\"1022121642021\":1478686417183,\"1025373817316\":1509788624305,\"1025796383445\":1509788624275,\"1025033034839\":1509788624916,\"1012117197325\":1478686417025,\"1025796383441\":1509788624275,\"1025796383454\":1509788624275,\"1021057748777\":1478686417093,\"1025033034840\":1509788624916,\"1025796383449\":1509788624274,\"1021790557076\":1509788624403,\"1025033034843\":1509788624835,\"1025796383428\":1509788624274,\"1025796383429\":1509788624275,\"1022930739093\":1509788625052,\"1021905771168\":1478686417259,\"1021905771172\":1478686417259,\"1025796383435\":1509788624275,\"1025796383479\":1509788624274,\"1025796383472\":1509788624274,\"1025796383484\":1509788624275,\"1025796383485\":1509788624275,\"1025796383480\":1509788624275,\"1025796383481\":1509788624274,\"1025796383482\":1509788624275,\"1025033034875\":1509788624868,\"1025796383462\":1509788624274,\"1025033034848\":1509788624825,\"1025796383458\":1509788624274,\"1025796383459\":1509788624274,\"1025796383469\":1509788624274,\"4997144032\":1509788667395,\"1025033034857\":1509788624835,\"1022389813246\":1478686417290,\"1025796383466\":1509788624274,\"1025796383383\":1509788624274,\"1025796383376\":1509788624274,\"1025331482158\":1509788624871,\"1021032058600\":1478686417035,\"1025796383377\":1509788624274,\"1025796383389\":1509788624274,\"1025796383391\":1509788624274,\"1024573503987\":1509788667472,\"1025033034777\":1509788624543,\"1025796383387\":1509788624274,\"1025033034779\":1509788624543,\"1025796383364\":1509788624274,\"1023251335734\":1509788625083,\"1025033034757\":1509788624552,\"1023251335735\":1509788625083,\"1025796383361\":1509788624274,\"1025033034753\":1509788624552,\"1025033034764\":1509788624543,\"1025796383373\":1509788624274,\"1021848886852\":1509788624993,\"1025796383374\":1509788624274,\"1022436604237\":1478686417213,\"1025796383368\":1509788624274,\"1023251335738\":1509788625083,\"1187656340\":1491634246519,\"1023251335736\":1509788625083,\"1025033034763\":1509788624538,\"1023251335737\":1509788625083,\"1025033034801\":1509788624536,\"1025033034802\":1509788624538,\"1021842202112\":1478686417053,\"1013122766416\":1478686804066,\"1024782429517\":1509788625019,\"1024771026331\":1509788667537,\"1022850257445\":1509788625074,\"1025796383397\":1509788624274,\"1025796383398\":1509788624274,\"1025033034790\":1509788624566,\"1022346034184\":1478686804067,\"1025368180782\":1509788624917,\"1025796383393\":1509788624274,\"1022346034181\":1478686804067,\"1025033034797\":1509788624548,\"1025033034798\":1509788624544,\"1021746253892\":1478686417126,\"1022346034183\":1478686804067,\"1025796383400\":1509788624274,\"1025033034792\":1509788624548,\"1025796383401\":1509788624274,\"1025368180775\":1509788624513,\"1025796383402\":1509788624274,\"1025368180773\":1509788624178,\"1025033034795\":1509788624566,\"1025033034962\":1509788624198,\"1008993212623\":1478686804030,\"4966603906\":1509788624165,\"1025721410976\":1509788624406,\"1025033034970\":1509788624205,\"1323842168\":1478950494922,\"1025033034948\":1509788624270,\"1025033034951\":1509788624205,\"1025033034947\":1509788624270,\"1025373817203\":1509788624307,\"1025528869438\":1509788624338,\"1025033034957\":1509788624215,\"1025528869436\":1509788624335,\"1025528869437\":1509788624339,\"1025026481187\":1509788624959,\"1025796383349\":1509788624274,\"1023734722327\":1509788624969,\"1025910810951\":1509788667579,\"1025033034995\":1509788624210,\"1024117048939\":1509788624325,\"1025033035005\":1509788624210,\"1025796383358\":1509788624274,\"1021088549341\":1478686416988,\"1025796383354\":1509788624274,\"1025721410972\":1509788624431,\"1020509220682\":1465470268322,\"1019449323446\":1509788624353,\"1022282592401\":1478686417286,\"1025721410970\":1509788624428,\"1025721410971\":1509788624425,\"1021721351943\":1478686804027,\"1025033034986\":1509788624205,\"1022005117038\":1478686417266,\"1018513477635\":1509788624263,\"1024381875656\":1509788624301,\"1025033034886\":1509788624822,\"5001731833\":1509788667396,\"1021754118526\":1478686417126,\"4985871862\":1509788624160,\"1022431099280\":1480585069095,\"1025619050396\":1509788624425,\"1025619050397\":1509788624406,\"1025619050394\":1509788624428,\"1025619050395\":1509788624431,\"1021261427679\":1478686416985,\"1025406847757\":1509788624466,\"1025902422150\":1509788667459,\"1025406847753\":1509788624512,\"1025406847755\":1509788624466,\"1025406847751\":1509788624511,\"1020856818636\":1478686416999,\"1023391314685\":1509788624368,\"1024489356367\":1509788624440,\"1025406847768\":1509788624441,\"1022238684727\":1509788624947,\"1021935649798\":1509788624465,\"1012968893879\":1478686804018,\"1022238684729\":1509788624931,\"1021025373642\":1478686417091,\"1021256709047\":1478686417100,\"1025406847762\":1509788624466,\"1020800063872\":1509788624945,\"1024087295414\":1509788667550,\"1022645661574\":1480585069135,\"1025796383709\":1509788624276,\"1024087295419\":1509788667551,\"1022645661578\":1480585069135,\"1025796383710\":1509788624276,\"1025796383711\":1509788624275,\"1025796383704\":1509788624275,\"1025796383705\":1509788624276,\"1022645661582\":1480585069135,\"1025796383707\":1509788624276,\"1253719976\":1444487341708,\"1022645661586\":1480585069135,\"1025033035072\":1509788624889,\"1021357242458\":1478686416989,\"1022645661589\":1480585069135,\"1022645661591\":1480585069135,\"1009211968586\":1478686804058,\"1021357242454\":1478686416989,\"1022645661594\":1480585069135,\"1022645661597\":1480585069135,\"1009211968626\":1478686804058,\"1025796383732\":1509788624276,\"1009211968627\":1478686804058,\"1022645661601\":1480585069135,\"1025033035125\":1509788624916,\"1009211968625\":1478686804058,\"1025796383735\":1509788624276,\"1022645661605\":1480585069135,\"1025796383729\":1509788624276,\"1025033035121\":1509788624916,\"1009211968628\":1478686804058,\"1025796383730\":1509788624275,\"1008317280681\":1478686804023,\"1025796383741\":1509788624275,\"1025033035133\":1509788624835,\"1022645661612\":1480585069135,\"1025796383737\":1509788624276,\"1025796383716\":1509788624275,\"1022645661617\":1480585069135,\"1025796383717\":1509788624275,\"1022645661618\":1480585069135,\"1022645661619\":1480585069135,\"1022645661621\":1480585069135,\"1025796383713\":1509788624276,\"1022645661623\":1480585069136,\"1025796383715\":1509788624275,\"1018245833204\":1509788625079,\"1022645661624\":1480585069136,\"1022645661625\":1480585069136,\"1025796383725\":1509788624275,\"1025796383726\":1509788624275,\"1025796383727\":1509788624275,\"1009211968623\":1478686804058,\"1025796383721\":1509788624275,\"1021789115059\":1509788624435,\"1022645661631\":1480585069136,\"1022402395712\":1478686417292,\"1024087295474\":1509788667550,\"1025796383638\":1509788624275,\"1024087295472\":1509788667551,\"1025796383639\":1509788624275,\"1022306972566\":1509788624923,\"1024087295477\":1509788667550,\"1024087295482\":1509788667551,\"1025796383645\":1509788624275,\"1024087295480\":1509788667550,\"1024087295486\":1509788667550,\"1024087295484\":1509788667550,\"4959261398\":1509788624164,\"1024087295463\":1509788667551,\"1024087295461\":1509788667551,\"1025032510726\":1509788624276,\"1024087295464\":1509788667550,\"1024087295465\":1509788667551,\"1024087295469\":1509788667550,\"1025796383670\":1509788624275,\"1025796383671\":1509788624275,\"1024087295446\":1509788667550,\"1022645661670\":1480585069136,\"1025796383666\":1509788624275,\"1022645661671\":1480585069136,\"1022373953466\":1478686417204,\"1022645661672\":1480585069136,\"1025796383676\":1509788624275,\"1025796383677\":1509788624275,\"1024087295451\":1509788667550,\"1022645661675\":1480585069136,\"1025796383672\":1509788624275,\"1022645661677\":1480585069136,\"1025796383673\":1509788624275,\"1025796383674\":1509788624275,\"1022645661679\":1480585069136,\"1024087295453\":1509788667551,\"1025796383652\":1509788624275,\"1024087295426\":1509788667551,\"1022645661682\":1480585069136,\"1025796383654\":1509788624275,\"4966604154\":1509788624165,\"1025796383655\":1509788624275,\"1025796383648\":1509788624275,\"1022645661686\":1480585069136,\"1022645661688\":1480585069136,\"1025796383661\":1509788624275,\"1024087295435\":1509788667551,\"1022645661690\":1480585069136,\"1025796383662\":1509788624275,\"1022645661691\":1480585069136,\"1025796383663\":1509788624275,\"1024087295438\":1509788667551,\"1025796383657\":1509788624275,\"1022645661694\":1480585069136,\"1025796383658\":1509788624275,\"1025796383574\":1509788624275,\"1021519635001\":1478686417007,\"1019795211745\":1509788624391,\"1025796383569\":1509788624275,\"1019795211744\":1509788624391,\"1025796383570\":1509788624275,\"1019795211746\":1509788624391,\"1025796383581\":1509788624275,\"1023924638671\":1509788624961,\"1022645661452\":1480585069135,\"1025796383578\":1509788624275,\"1022645661455\":1480585069135,\"1022645661456\":1480585069135,\"1022645661459\":1480585069135,\"1025715119129\":1509788624341,\"1025796383554\":1509788624275,\"1020649199124\":1478686417075,\"1022457444943\":1480585069111,\"1025796383555\":1509788624275,\"1025796383564\":1509788624275,\"1025796383560\":1509788624275,\"1022645661470\":1480585069135,\"1025796383604\":1509788624275,\"1025796383606\":1509788624275,\"1025796383601\":1509788624275,\"1022645661479\":1480585069135,\"1025033035251\":1509788624835,\"1022002495833\":1478686804065,\"1022645661485\":1480585069135,\"1024710467779\":1509788624997,\"1025033035238\":1509788624916,\"1022645661492\":1480585069135,\"1021755691066\":1478686417051,\"1022645661493\":1480585069135,\"1022645661494\":1480585069135,\"1025715119162\":1509788624439,\"1022645661495\":1480585069135,\"1025796383587\":1509788624275,\"1025033035245\":1509788624916,\"1022645661498\":1480585069135,\"1022645661500\":1480585069135,\"1025796383593\":1509788624275,\"1025796383595\":1509788624275,\"1022645661505\":1480585069135,\"1022988016635\":1509788625101,\"1025715119176\":1509788624345,\"1021848231884\":1509788624815,\"1022645661513\":1480585069135,\"1025796383519\":1509788624275,\"1025715119175\":1509788624335,\"1025033035167\":1509788624842,\"1022645661516\":1480585069135,\"1025033035160\":1509788624835,\"1025715119170\":1509788624346,\"1025033035162\":1509788624835,\"1022645661520\":1480585069135,\"1025033035140\":1509788624824,\"1021740618049\":1509788624932,\"1025033035141\":1509788624835,\"1022645661522\":1480585069135,\"1025796383488\":1509788624274,\"1022457444877\":1480585069111,\"1022645661526\":1480585069135,\"1022733740695\":1509788624540,\"1020438176749\":1478686804031,\"1022700710020\":1509788624973,\"1021098117891\":1509788624932,\"1025098308015\":1509788624293,\"1021279124983\":1509788624941,\"5001732034\":1509788667395,\"1025796383549\":1509788624275,\"1025796383550\":1509788624275,\"1021279124988\":1509788624941,\"1025531491184\":1509788624341,\"1013122766796\":1478686804066,\"1025033035180\":1509788624584,\"1025033035181\":1509788624825,\"1025796383535\":1509788624275,\"1025796383530\":1509788624275,\"1025033035179\":1509788624836,\"1021279125011\":1509788624941,\"243824783\":1444487341722,\"1025628748507\":1509788624846,\"1021826867009\":1478686417133,\"1021279125017\":1509788624940,\"1021199037142\":1478686417098,\"1021013184473\":1478686417231,\"1021279125001\":1509788624940,\"1867651442\":1444487341750,\"1025513796524\":1509788624511,\"1021279125044\":1509788624940,\"1025003016250\":1509788625006,\"1025003016251\":1509788625006,\"1023170727793\":1509788625072,\"1025003016248\":1509788625006,\"1022318768180\":1509788624931,\"1025003016246\":1509788625006,\"1022318768181\":1509788624931,\"1022432410492\":1478686417016,\"1021208343044\":1478686804027,\"142769836\":1444487341710,\"1022318768178\":1509788625016,\"1022318768179\":1509788624933,\"1022318768174\":1509788624942,\"1021953476596\":1478686417146,\"1000931228409\":1478686417021,\"1021279125024\":1509788624940,\"1022400298267\":1478686417292,\"1025513796528\":1509788624510,\"1025628748527\":1509788624846,\"1024207094063\":1509788625033,\"1021279125077\":1509788624940,\"1024519240886\":1509788667903,\"1025033035280\":1509788624835,\"1021279125074\":1509788624940,\"1025628748442\":1509788624846,\"1025033035295\":1509788624835,\"1021279125082\":1509788624940,\"1025513796572\":1509788624441,\"1021279125063\":1509788624940,\"1018513478302\":1509788624263,\"1025711581075\":1509788624345,\"1025033035269\":1509788624849,\"1025033035271\":1509788624849,\"1024453570698\":1509788625030,\"4937502744\":1509788624164,\"1025033035277\":1509788624835,\"1021279125070\":1509788624940,\"1453859059\":1478950494923,\"1025711581086\":1509788624345,\"1025033035273\":1509788624824,\"1025513796562\":1509788624451,\"1025881320954\":1509788667458,\"1002728456654\":1478686804059,\"1002728456652\":1478686804059,\"1024204079583\":1509788667509,\"1002728456651\":1478686804059,\"1002728456650\":1478686804059,\"1002728456649\":1478686804059,\"1018513478313\":1509788624263,\"1025513796587\":1509788624435,\"1019483007848\":1478686804047,\"1002728456646\":1478686804059,\"1018513478307\":1509788624263,\"1025033035320\":1509788624825,\"1002728456642\":1478686804059,\"1018513478306\":1509788624263,\"1019634258034\":1509788624933,\"1025710925756\":1509788624308,\"1025033035303\":1509788624835,\"1021279125088\":1509788624940,\"1025033035309\":1509788624843,\"1020709491089\":1509788624934,\"1018513478324\":1509788624263,\"1025033035305\":1509788624843,\"1021279125098\":1509788624941,\"1025033035307\":1509788624867,\"1018513478222\":1509788624263,\"1025033035477\":1509788625239,\"1025721411502\":1509788624211,\"1018513478221\":1509788624263,\"1020294264872\":1465470268300,\"1025721411503\":1509788624211,\"1025033035472\":1509788625239,\"1018513478216\":1509788624263,\"1025033035475\":1509788625240,\"1018513478213\":1509788624263,\"1025033035486\":1509788625239,\"1018513478212\":1509788624263,\"1025033035487\":1509788625239,\"1025033035480\":1509788625239,\"1025607646361\":1509788624455,\"1018513478209\":1509788624263,\"1025033035483\":1509788625239,\"1025033035462\":1509788625239,\"1018513478236\":1509788624263,\"1018513478235\":1509788624263,\"1025033035456\":1509788625239,\"1022282724023\":1478686417067,\"1018513478233\":1509788624263,\"1025721411508\":1509788624211,\"1025033035468\":1509788625240,\"1025721411509\":1509788624211,\"1018513478229\":1509788624263,\"1025033035470\":1509788625239,\"1025721411504\":1509788624211,\"1025721411505\":1509788624211,\"1018513478226\":1509788624263,\"1025721411506\":1509788624211,\"1025033035467\":1509788625239,\"1017770574230\":1478686804021,\"1023152770798\":1509788624227,\"1023152770796\":1509788624269,\"1023152770797\":1509788624270,\"1024087295491\":1509788667550,\"1023152770804\":1509788624227,\"1024087295493\":1509788667551,\"1024087295498\":1509788667551,\"1023152770815\":1509788624215,\"1024087295499\":1509788667551,\"1024087295497\":1509788667551,\"1024087295502\":1509788667551,\"1024087295503\":1509788667551,\"1024087295501\":1509788667551,\"1025033035413\":1509788625239,\"1023329580313\":1509788625040,\"1025033035410\":1509788625239,\"4959261015\":1509788624164,\"1025033035419\":1509788625239,\"1021774565567\":1509788624419,\"1025772004089\":1509788624211,\"1025772004091\":1509788624211,\"1020469243532\":1509788625077,\"1025033035395\":1509788625239,\"1025033035407\":1509788625240,\"1024204079463\":1509788667509,\"1025033035401\":1509788625240,\"1025772004087\":1509788624211,\"1025033035445\":1509788625239,\"1021387127138\":1478686804067,\"1025033035442\":1509788625239,\"1025902553738\":1509788667461,\"1025902553739\":1509788667459,\"1025902553741\":1509788667464,\"1025033035451\":1509788625239,\"1025902553743\":1509788667459,\"1025033035428\":1509788625240,\"1008351621227\":1478686804023,\"1831082961\":1478686804024,\"1025033035437\":1509788625239,\"1025033035432\":1509788625239,\"1022065672652\":1478686417175,\"1018309533719\":1478686804056,\"396648612\":1491634246533,\"1018309533718\":1478686804056,\"1018309533717\":1478686804056,\"1025629535141\":1509788624858,\"1021537333173\":1509788624397,\"1025629535150\":1509788624858,\"945573719\":1444487341747,\"1025629535146\":1509788624858,\"1018309533721\":1478686804056,\"1025629535144\":1509788624858,\"1018309533720\":1478686804056,\"1022780659099\":1509788624856,\"1025629535145\":1509788624858,\"1022241174956\":1509788624939,\"1019355341231\":1465470268236,\"1024087295904\":1509788667550,\"1025033035585\":1509788624210,\"1025033035586\":1509788624206,\"1025033035587\":1509788624197,\"245266822\":1478950494907,\"5001731385\":1509788667398,\"1015931796914\":1478686804025,\"1024087295891\":1509788667550,\"1017970717696\":1509788624372,\"1024087295895\":1509788667550,\"1024087295893\":1509788667550,\"1023939973203\":1509788667538,\"1024087295899\":1509788667550,\"1024087295896\":1509788667550,\"1022780659108\":1509788624856,\"1021181736176\":1465470268188,\"1024087295872\":1509788667550,\"1024087295873\":1509788667550,\"1022780659106\":1509788624856,\"1022780659107\":1509788624856,\"1024087295882\":1509788667550,\"1021958194852\":1478686417056,\"1024087295887\":1509788667550,\"1022780659115\":1509788624856,\"1025033035542\":1509788624215,\"1025033035537\":1509788624205,\"1025033035539\":1509788624205,\"1021774565672\":1509788624814,\"1025033035546\":1509788624215,\"1018105724023\":1509788625020,\"1022252840123\":1478686417196,\"1023152770837\":1509788624206,\"1018923600684\":1509788624282,\"225737250\":1478686804032,\"1025033035533\":1509788624270,\"1025033035534\":1509788624270,\"1023152770845\":1509788624206,\"1023152770842\":1509788624206,\"1023152770854\":1509788624424,\"1023152770852\":1509788625168,\"1025033035575\":1509788624205,\"1024689103799\":1509788624451,\"1022377098727\":1478686417204,\"1025067638093\":1509788624293,\"1025033035582\":1509788624229,\"1025033035578\":1509788624230,\"1025033035579\":1509788624210,\"1023152770857\":1509788624230,\"1018468521697\":1478686804031,\"1025033035565\":1509788624205,\"1012911874518\":1478686804062,\"1025033035732\":1509788624426,\"1021848886669\":1509788624993,\"1025429255974\":1509788625126,\"1025033035717\":1509788624437,\"1025429255975\":1509788625109,\"1025033035719\":1509788624454,\"1025628748609\":1509788624846,\"1025429255973\":1509788625117,\"1025033035712\":1509788624456,\"1025033035724\":1509788624437,\"1025033035727\":1509788624434,\"1018546114919\":1478686804017,\"5001731519\":1509788667395,\"1025911466599\":1509788667450,\"1021089073899\":1478686417002,\"1021089073898\":1478686417002,\"1022119414876\":1478686417183,\"1025607646647\":1509788624438,\"1025619049698\":1509788624823,\"1022462162998\":1478686417217,\"1025619049696\":1509788624828,\"1025619049697\":1509788624833,\"1022073671443\":1478686417012,\"1025607646652\":1509788624438,\"1025619049711\":1509788624746,\"1025607646654\":1509788624438,\"1025607646650\":1509788624438,\"1022418123679\":1478686417302,\"1025607646651\":1509788624438,\"1018805502679\":1509788624928,\"1000931228531\":1478686417021,\"1022015734704\":1509788625067,\"1025033035670\":1509788624440,\"1024087295856\":1509788667549,\"1025628748561\":1509788624846,\"1025033035666\":1509788624433,\"1026507569079\":1515854751199,\"1024087295861\":1509788667550,\"1023946395856\":1491634246531,\"1024087295866\":1509788667549,\"1024087295867\":1509788667549,\"1024087295865\":1509788667549,\"1024087295869\":1509788667550,\"1022245893540\":1478686417195,\"1024087295842\":1509788667550,\"1024087295843\":1509788667550,\"1021467206415\":1478686417045,\"1022245893542\":1478686417195,\"1023946395853\":1491634246529,\"1024087295847\":1509788667550,\"1023946395854\":1491634246531,\"1023946395855\":1491634246531,\"1020940960743\":1478686417033,\"1025033035660\":1509788624510,\"1024087295850\":1509788667550,\"1025033035663\":1509788624433,\"1024087295849\":1509788667550,\"1024087295852\":1509788667549,\"1025033035659\":1509788624511,\"1024087295853\":1509788667550,\"1018309533943\":1478686804056,\"1018309533942\":1478686804056,\"1025033035701\":1509788624432,\"1018309533941\":1478686804056,\"1019287184719\":1509788625079,\"1018309533940\":1478686804056,\"1025373817344\":1509788624306,\"1023337444514\":1509788625072,\"1298807437\":1478686804054,\"1020437520854\":1478686804031,\"1025033035711\":1509788624432,\"1024087295838\":1509788667550,\"1024087295839\":1509788667550,\"1024087295836\":1509788667550,\"1018309533944\":1478686804056,\"1024087295837\":1509788667550,\"1025033035685\":1509788624432,\"1020437520843\":1478686804031,\"1025628748581\":1509788624846,\"4985872086\":1509788624160,\"1022108929378\":1478686417276,\"1025234619472\":1509788624948,\"1025234619473\":1509788624948,\"1025234619474\":1509788624948,\"1025234619475\":1509788624948,\"1021789380490\":1509788624993,\"1025234619476\":1509788624948,\"1025234619477\":1509788624959,\"1020350622025\":1480585069074,\"1025234619479\":1509788624948,\"1024686353655\":1509788624533,\"1025234619458\":1509788624947,\"1025234619459\":1509788624948,\"1025234619461\":1509788624948,\"1025234619462\":1509788624948,\"1025234619463\":1509788624930,\"1025359791296\":1509788624319,\"1025234619466\":1509788624947,\"1025234619467\":1509788624947,\"1025234619468\":1509788624948,\"1025234619469\":1509788624948,\"1024232915449\":1509788625017,\"1021048701901\":1478686417093,\"1025234619470\":1509788624948,\"1000309825515\":1478686417018,\"1025234619471\":1509788624948,\"1019759564449\":1509788624311,\"1019721028821\":1509788624959,\"1021789380538\":1509788624993,\"1010091972337\":1491634246522,\"1020996534517\":1478686417230,\"1025617474372\":1509788624367,\"1021167975052\":1478686417038,\"1020654050154\":1478686804047,\"1022047456879\":1478686417171,\"1020462686456\":1465470268260,\"1021911537163\":1478686417140,\"1021226040688\":1478686417235,\"1022790359983\":1509788624565,\"1025771088898\":1509788624822,\"1025771088897\":1509788624832,\"1008480204457\":1478686804016,\"1520313029\":1478686804015,\"1022064234358\":1478686417174,\"1018658444405\":1509788624389,\"1025359791295\":1509788624280,\"1023074782342\":1509788625047,\"1021789380601\":1509788624993,\"1021673117929\":1509788624396,\"1021173479995\":1465470268186,\"1020994830491\":1480585069070,\"1020800455709\":1478686417077,\"1022457444177\":1480585069111,\"1022457444179\":1480585069111,\"1013362755909\":1478686804030,\"1021028778609\":1478686417091,\"1022457444170\":1480585069111,\"1022457444174\":1480585069111,\"1022457444175\":1480585069111,\"1022457444162\":1480585069111,\"1712725645\":1444487341733,\"1019795212538\":1509788624391,\"1022047456907\":1478686417171,\"1022047456906\":1478686417171,\"1016396438975\":1478686804017,\"1022047456911\":1478686417171,\"1025771089150\":1509788624203,\"1025771089149\":1509788624200,\"1022047456902\":1478686417171,\"1025169737911\":1509788624393,\"1011209078930\":1478686804022,\"1017650907371\":1478686804020,\"1020994830426\":1480585069070,\"1021789380425\":1509788624993,\"1021668005895\":1509788624435,\"1025532673704\":1509788624340,\"1021668005891\":1509788625020,\"1020786037683\":1509788624276,\"1024167775502\":1509788624420,\"1021695531496\":1509788624400,\"1025026478195\":1509788624959,\"1001733374925\":1478686417023,\"1008129196317\":1478686804034,\"1022457444154\":1480585069110,\"1022457444156\":1480585069110,\"1024686353434\":1509788624815,\"1022457444157\":1480585069110,\"1022457444158\":1480585069111,\"1014706354492\":1509788624944,\"1022457444159\":1480585069111,\"1020784595865\":1478686804046,\"886590498\":1478686417020,\"1020294133673\":1465470268292,\"1025208928985\":1509788624922,\"1025208928983\":1509788624922,\"1025910678763\":1509788667459,\"1021931197985\":1478686417055,\"1003954420135\":1480585069061,\"1291073001\":1478686417024,\"1020917369511\":1478686416976,\"1021931197972\":1478686417055,\"1112161134\":1478950494920,\"1021733936606\":1478686417124,\"1016301672844\":1480585069066,\"1021874836897\":1478686417136,\"1024686353856\":1509788625101,\"1022239996902\":1478686417194,\"1014249708632\":1478686804031,\"1021903411085\":1478686417139,\"1021692254247\":1509788625084,\"1025771089154\":1509788624186,\"1021113321129\":1478686416972,\"1025721411658\":1509788624228,\"1021963307075\":1478686417056,\"1018468522222\":1478686804034,\"1024244711464\":1509788624948,\"1022239996880\":1478686417194,\"1022239996881\":1478686417194,\"1020551816397\":1478686804047,\"1001877159397\":1478686804029,\"1001877159396\":1478686804029,\"1023927132086\":1491634246530,\"1023927132084\":1491634246528,\"1022213388746\":1478686417281,\"1001877159406\":1478686804029,\"1010011492377\":1491634246525,\"1001877159410\":1478686804033,\"1010011492380\":1491634246525,\"1010011492371\":1491634246525,\"1024263848852\":1509788667831,\"1010011492375\":1491634246525,\"225735914\":1478686804024,\"1021354619956\":1465470268233,\"1022369099967\":1478686417204,\"1022153360464\":1478686417063,\"1022153360458\":1478686417063,\"1022153360461\":1478686417063,\"1001877159383\":1478686804015,\"1022153360460\":1478686417063,\"1025017568919\":1509788625006,\"1023152112077\":1509788667538,\"1021700512587\":1478686804046,\"1023846914855\":1509788625079,\"1020790887107\":1478686417077,\"1023108206388\":1509788625046,\"1022103683862\":1509788625080,\"1016952176163\":1444487341761,\"1019125313961\":1509788625079,\"1024489484639\":1509788624843,\"1024453312292\":1509788624992,\"1024686353686\":1509788624194,\"1012701114528\":1478686804066,\"1023205327137\":1509788624569,\"1007592465372\":1478686804023,\"993280307\":1491634246508,\"1018700125604\":1465470268241,\"1019287185571\":1509788625079,\"1009456280236\":1480585069064,\"1025671607339\":1509788624921,\"1020878310388\":1509788624934,\"1021574946912\":1509788624397,\"1020878310376\":1509788624934,\"1022754970121\":1509788624393,\"1025671607345\":1509788624921,\"1025671607356\":1509788624921,\"1016819664345\":1478686804025,\"1021941549697\":1478686417260,\"1025671607358\":1509788624921,\"1025671607359\":1509788624921,\"1020878310375\":1509788624934,\"1020878310374\":1509788624934,\"662986151\":1444487341725,\"1022232001291\":1478686417193,\"1025385613174\":1509788624409,\"1021953477609\":1478686417010,\"1025385613177\":1509788624408,\"1024954392267\":1509788625021,\"1025385613153\":1509788624408,\"1018513350396\":1509788624499,\"1025385613156\":1509788624408,\"1025385613161\":1509788624408,\"1021323686157\":1465470268211,\"1023480444568\":1509788625081,\"1021340726787\":1465470268224,\"1022273683172\":1480585069094,\"1004329151505\":1444487341736,\"1021789380048\":1509788624993,\"784487582\":1509788625019,\"1021767621803\":1509788624400,\"1021323555116\":1478686417005,\"1020790231386\":1478686417077,\"1025910941569\":1509788667579,\"1025910941570\":1509788667579,\"1025671607367\":1509788624921,\"1025671607361\":1509788624921,\"1025910941573\":1509788667579,\"1025910941574\":1509788667578,\"1024653715607\":1509788667888,\"1021059842413\":1478686804045,\"1025910941576\":1509788667578,\"1021059842412\":1478686804045,\"1025910941577\":1509788667578,\"1021059842415\":1478686804045,\"1025910941578\":1509788667578,\"1021059842414\":1478686804045,\"1025910941579\":1509788667578,\"1006876365828\":1478686804028,\"1021059842409\":1478686804045,\"1025671607369\":1509788624921,\"1021059842411\":1478686804045,\"1021059842410\":1478686804045,\"1023336790329\":1509788625040,\"1025435810350\":1509788624915,\"1022193861904\":1478686417280,\"1021428017994\":1478686804026,\"1021840494819\":1478686417053,\"1020305273987\":1478686804026,\"1025713416996\":1509788624345,\"1020762181710\":1478686417028,\"1022058728722\":1475218613699,\"1021744946909\":1478686417126,\"1021098116175\":1509788624942,\"1021098116174\":1509788624940,\"1021098116169\":1509788624932,\"1025771089600\":1509788625106,\"1019482744722\":1509788624312,\"1021098116165\":1509788624932,\"1022079173339\":1478686417061,\"1021098116160\":1509788624930,\"1021985458522\":1478686417153,\"1021985458525\":1478686417153,\"1012651179246\":1478686417074,\"1025609740609\":1509788624866,\"1002277578293\":1478686804016,\"1021562495881\":1509788624865,\"1327248807\":1480585069060,\"1712725201\":1444487341729,\"1022075765331\":1509788624416,\"1022346031798\":1478686804050,\"1021464849966\":1478686417045,\"1021387126099\":1478686804065,\"1022252185795\":1478686417284,\"1025772007152\":1509788625166,\"1025385613195\":1509788624408,\"1025385613197\":1509788624408,\"1022024126288\":1478686417163,\"1025344586049\":1509788624308,\"1021098116153\":1509788624971,\"1021098116152\":1509788624971,\"1025771089598\":1509788625114,\"1025771089599\":1509788625123,\"1021098116151\":1509788624970,\"1016819664071\":1478686804025,\"1024107743857\":1509788624440,\"1023835118254\":1491634246536,\"1024107743853\":1509788624440,\"1020744618731\":1509788624321,\"1025779871473\":1509788624305,\"1025278921892\":1509788624516,\"1022736622621\":1509788624301,\"1021158144539\":1478686417097,\"1021812183839\":1478686417256,\"1022654308702\":1509788624462,\"1021874837468\":1478686417257,\"1025609740452\":1509788624438,\"1025609740453\":1509788624845,\"1025609740454\":1509788624438,\"1025609740455\":1509788624845,\"1024195038578\":1509788624507,\"1025609740450\":1509788624438,\"1025609740451\":1509788624845,\"1025609740456\":1509788624438,\"1021264442282\":1478686417237,\"1015145570537\":1478686804053,\"1015145570539\":1478686804053,\"1022525860033\":1509788667503,\"1020747895508\":1478686417028,\"1021013836456\":1478686417001,\"1021354620647\":1465470268233,\"1020320740422\":1509788625078,\"1021385028821\":1478686417239,\"1021639304677\":1478686417049,\"1022470288494\":1478686417073,\"1024313263684\":1509788624169,\"1021354620648\":1465470268233,\"1020278142525\":1480585069076,\"1008824523211\":1478686804052,\"1022041558275\":1478686417058,\"1021090907818\":1478686417002,\"1022041558276\":1478686417058,\"1008824523215\":1478686804052,\"1008824523212\":1478686804052,\"1024741534780\":1509788624342,\"1008824523201\":1478686804052,\"1008824523206\":1478686804052,\"1008824523204\":1478686804052,\"154694313\":1444487341723,\"1017113783289\":1478686804018,\"1019030157734\":1509788624935,\"1019945288255\":1509788624323,\"1019945288254\":1509788624323,\"1021151328792\":1509788624934,\"1019945288253\":1509788624323,\"1019945288252\":1509788624323,\"1021404031788\":1478686417240,\"1020932050697\":1478686417228,\"598235161\":1478686417019,\"1008317284149\":1478686804023,\"1024185863535\":1509788625071,\"341733344\":1517734758204,\"1021821489762\":1478686417053,\"1022445909419\":1478686417016,\"1025608429615\":1509788624212,\"1021821489771\":1478686417053,\"1022184687059\":1480585069083,\"4977873785\":1509788624165,\"1021821489774\":1478686417053,\"1025608429624\":1509788624212,\"1023354486675\":1509788625071,\"1019945288259\":1509788624323,\"1019945288258\":1509788624323,\"1025083756792\":1509788624178,\"1019945288257\":1509788624323,\"1019945288256\":1509788624323,\"1000531070844\":1478686804059,\"1025608429616\":1509788624212,\"1025608429617\":1509788624212,\"1025608429618\":1509788624212,\"1025608429622\":1509788624212,\"1025323090187\":1509788624304,\"1021164566824\":1478686417234,\"1021325914318\":1478686417005,\"1021164566817\":1478686417234,\"1021164566822\":1478686417234,\"1008824523195\":1478686804052,\"1022271979314\":1478686417197,\"1008824523198\":1478686804052,\"1008824523199\":1478686804052,\"1016689380465\":1509788624975,\"1025513406027\":1509788624344,\"1024107743873\":1509788624430,\"1020278142528\":1480585069076,\"1024107743879\":1509788624430,\"1024107743876\":1509788624430,\"1021369168571\":1478686417239,\"192313209\":1478950494906,\"1016172438620\":1509788624284,\"1021640352326\":1509788624200,\"1020294263455\":1465470268300,\"1022046669411\":1478686417171,\"1022457443300\":1480585069110,\"1016396437852\":1478686804017,\"1020891811137\":1509788624933,\"1019745145133\":1509788624316,\"1018513479810\":1509788624263,\"1019745145135\":1509788624317,\"1018513479808\":1509788624263,\"1023233114572\":1509788624958,\"1013075451016\":1478686804066,\"1022072620252\":1478686417060,\"1021369168578\":1478686417239,\"1019291774492\":1509788624282,\"1018513479759\":1509788624263,\"1025384169923\":1509788624835,\"1018513479752\":1509788624263,\"1021354619167\":1465470268233,\"1021354619164\":1465470268233,\"1018513479744\":1509788624263,\"1444948663\":1444487341716,\"1025772005567\":1509788624549,\"1018513479765\":1509788624263,\"1016819663708\":1478686804025,\"1001733375935\":1478686417023,\"1021455806409\":1509788624977,\"1021048702843\":1478686417093,\"1018513479806\":1509788624263,\"1018513479805\":1509788624263,\"1018513479804\":1509788624263,\"1021354619169\":1465470268233,\"1021680590002\":1478686804028,\"1021789379376\":1509788624993,\"1021594347412\":1509788624817,\"1016845876368\":1509788624366,\"1021428018683\":1478686804026,\"1844449569\":1478950494927,\"1018513479708\":1509788624263,\"1018513479698\":1509788624263,\"1018513479726\":1509788624263,\"1021867102217\":1509788624394,\"1025772005578\":1509788624549,\"1025772005580\":1509788624549,\"1025772005581\":1509788624549,\"1025772005568\":1509788624549,\"1018513479717\":1509788624263,\"1025772005570\":1509788624549,\"1018513479714\":1509788624263,\"1018513479712\":1509788624263,\"1018513479740\":1509788624263,\"1025056757296\":1509788624999,\"376466059\":1491634246507,\"1022208671116\":1480585069088,\"1022238687170\":1509788624947,\"1022457443033\":1480585069087,\"1022208671117\":1480585069088,\"1022457443034\":1480585069087,\"1022426902665\":1478686417211,\"1022208671119\":1480585069088,\"1022208671112\":1480585069088,\"1022457443038\":1480585069087,\"1022457443039\":1480585069087,\"1022208671115\":1480585069088,\"1022208671108\":1480585069088,\"1022208671109\":1480585069088,\"1022208671110\":1480585069088,\"1022208671111\":1480585069088,\"1022208671104\":1480585069088,\"1022208671105\":1480585069088,\"1022208671106\":1480585069088,\"134903045\":1444487341742,\"1022208671107\":1480585069088,\"1022208671133\":1480585069088,\"1022689829101\":1509788624394,\"1022208671128\":1480585069088,\"1022208671129\":1480585069088,\"1005988103276\":1478686804046,\"1022208671130\":1480585069088,\"1022484049204\":1480585069126,\"1016819663578\":1478686804025,\"1020874378539\":1478686416999,\"1022208671149\":1480585069088,\"1022208671151\":1480585069088,\"1022208671145\":1480585069088,\"1021394858534\":1478686417105,\"1022208671137\":1480585069088,\"1022346032466\":1478686804050,\"1022208671139\":1480585069088,\"1025608431303\":1509788625167,\"1022208671165\":1480585069088,\"1022208671167\":1480585069088,\"1022208671160\":1480585069088,\"1022208671162\":1480585069088,\"1021987163897\":1478686417057,\"1022208671159\":1480585069088,\"1022536216125\":1509788624392,\"1022208671152\":1480585069088,\"1022208671155\":1480585069088,\"1020433197856\":1478686804028,\"1019739639953\":1509788624173,\"1022956818768\":1509788624978,\"1022457442973\":1480585069110,\"1022457442974\":1480585069110,\"1022457442975\":1480585069110,\"1461332562\":1444487341724,\"1022054795915\":1478686417173,\"1022208671196\":1480585069088,\"1022208671197\":1480585069088,\"1022208671199\":1480585069088,\"1022208671192\":1480585069088,\"1022154932374\":1478686417013,\"1022054795917\":1478686417173,\"1022361367748\":1478686417289,\"1022457442944\":1480585069110,\"1022457442946\":1480585069110,\"1012388121279\":1478686416994,\"1022788919113\":1509788624183,\"1022208671212\":1480585069088,\"1022457443000\":1480585069110,\"1022208671213\":1480585069089,\"1022380373778\":1478686417205,\"1022208671209\":1480585069088,\"1012412761356\":1478686804028,\"1022208671211\":1480585069088,\"1022208671204\":1480585069088,\"1022208671206\":1480585069088,\"1022208671207\":1480585069088,\"1022457442995\":1480585069110,\"1022208671201\":1480585069088,\"1022457442998\":1480585069110,\"1012701115444\":1478686804066,\"1022457442999\":1480585069110,\"1022208671228\":1480585069089,\"1022457442984\":1480585069110,\"1022208671230\":1480585069089,\"1022208671231\":1480585069089,\"1022208671220\":1480585069089,\"1022457442976\":1480585069110,\"1022457442977\":1480585069110,\"1022457442978\":1480585069110,\"1022457442980\":1480585069110,\"1022457442981\":1480585069110,\"1021226039362\":1478686417003,\"1022457442983\":1480585069110,\"1020885650670\":1509788624940,\"1023846522748\":1491634246537,\"1021131013466\":1478686417233,\"1024256902916\":1509788625032,\"1021234559783\":1480585069071,\"1022457442880\":1480585069110,\"1022457442881\":1480585069110,\"1022457442882\":1480585069110,\"1022457442883\":1480585069110,\"1022457442884\":1480585069110,\"1022457442885\":1480585069110,\"1022457442886\":1480585069110,\"1022457442936\":1480585069110,\"1022457442937\":1480585069110,\"1022457442939\":1480585069110,\"1022457442940\":1480585069110,\"1022457442941\":1480585069110,\"1022457442943\":1480585069110,\"1024520943485\":1509788625028,\"1022457442930\":1480585069110,\"1021755693092\":1478686417126,\"1021594347161\":1509788624419,\"1022457442922\":1480585069110,\"1021440733122\":1478686417241,\"1024838000711\":1509788624948,\"1011231887169\":1480585069074,\"1022457442924\":1480585069110,\"1022457442925\":1480585069110,\"1023233114153\":1509788624958,\"1022457442926\":1480585069110,\"1022457442927\":1480585069110,\"1010025387875\":1491634246522,\"1008970274309\":1478686804023,\"1022457442840\":1480585069110,\"1024607973966\":1509788667589,\"1022457442832\":1480585069110,\"1022457442833\":1480585069110,\"1022457442834\":1480585069110,\"1022457442835\":1480585069110,\"1022457442836\":1480585069110,\"1022850521990\":1509788625053,\"1022457442837\":1480585069110,\"1022457442838\":1480585069110,\"1022457442839\":1480585069110,\"1022073537897\":1509788624928,\"1022457442826\":1480585069110,\"1022457442827\":1480585069110,\"1021718339089\":1478686417009,\"1022457442828\":1480585069110,\"1022457442829\":1480585069110,\"1024453966605\":1509788625070,\"1021718339090\":1478686417009,\"1022457442831\":1480585069110,\"1001733375685\":1478686417023,\"5001730042\":1509788667398,\"1022457442873\":1480585069110,\"1021379130366\":1478686804033,\"1022457442875\":1480585069110,\"1022457442877\":1480585069110,\"1022457442878\":1480585069110,\"1021874835830\":1478686417009,\"1022457442879\":1480585069110,\"1021236788081\":1478686417099,\"1016819663403\":1478686804025,\"1022457442868\":1480585069110,\"1001733375730\":1478686417023,\"1022457442870\":1480585069110,\"1021903409965\":1478686417139,\"1022208671100\":1480585069088,\"1022208671102\":1480585069088,\"1022208671098\":1480585069087,\"1021729087193\":1509788624403,\"1022208671372\":1480585069090,\"1022457442776\":1480585069109,\"1022457442777\":1480585069109,\"1022457442778\":1480585069109,\"1022208671375\":1480585069090,\"1022457442779\":1480585069109,\"1022457442780\":1480585069109,\"1022457442781\":1480585069109,\"1022208671370\":1480585069090,\"1022457442782\":1480585069109,\"1022208671371\":1480585069090,\"1022457442783\":1480585069110,\"1021432868032\":1478686417007,\"1022208671365\":1480585069090,\"1022121641429\":1478686417183,\"1022208671360\":1480585069089,\"1022457442772\":1480585069109,\"1022208671361\":1480585069089,\"1022457442773\":1480585069109,\"1022208671362\":1480585069089,\"1022457442774\":1480585069109,\"1022208671388\":1480585069090,\"1023821487736\":1491634246536,\"1022208671385\":1480585069090,\"1022208671386\":1480585069090,\"1022208671387\":1480585069090,\"1022457442752\":1480585069109,\"1022208671381\":1480585069090,\"1022457442753\":1480585069109,\"1010093936824\":1491634246528,\"1022898886513\":1509788625017,\"1022208671382\":1480585069090,\"1022457442754\":1480585069109,\"1024161745464\":1509788667562,\"1022457442755\":1480585069109,\"1010093936826\":1491634246522,\"1022457442756\":1480585069109,\"1006788810685\":1478686804029,\"1022208671377\":1480585069090,\"1021997124917\":1478686417156,\"1022208671378\":1480585069090,\"1022457442758\":1480585069109,\"1022267129104\":1478686417285,\"1022447874154\":1480585069107,\"1022447874155\":1480585069107,\"1022447874152\":1480585069107,\"1022447874153\":1480585069107,\"1024244582257\":1509788624948,\"1022447874158\":1480585069107,\"1022447874159\":1480585069107,\"1018513480425\":1509788625204,\"1022447874157\":1480585069107,\"1018513480422\":1509788625204,\"1024912056128\":1509788624926,\"1018513480419\":1509788625204,\"1024204081552\":1509788667509,\"1024492238525\":1509788667889,\"1022447874168\":1480585069107,\"1503274921\":1478950494923,\"1022457442784\":1480585069110,\"1022457442785\":1480585069110,\"1018513480438\":1509788625204,\"1022447874160\":1480585069107,\"1022457442786\":1480585069110,\"1022447874161\":1480585069107,\"229274519\":1478950494907,\"1022447874164\":1480585069107,\"1022457442712\":1480585069109,\"1022457442713\":1480585069109,\"1021048047003\":1478686417093,\"1020987885879\":1478686417034,\"1022457442704\":1480585069109,\"1022457442705\":1480585069109,\"1017193212886\":1465470268268,\"1023856221234\":1491634246537,\"1022457442707\":1480585069109,\"1022457442710\":1480585069109,\"1022457442711\":1480585069109,\"1023856221224\":1491634246537,\"1022457442697\":1480585069109,\"1022457442698\":1480585069109,\"1022457442699\":1480585069109,\"1022457442700\":1480585069109,\"1014688136857\":1465470268263,\"1022457442701\":1480585069109,\"1022457442702\":1480585069109,\"1022457442703\":1480585069109,\"1022457442747\":1480585069109,\"1022457442748\":1480585069109,\"1022457442749\":1480585069109,\"1022457442750\":1480585069109,\"1022457442751\":1480585069109,\"1024552792732\":1509788624185,\"1022349964875\":1480585069096,\"1022256119220\":1478686416990,\"1022457442740\":1480585069109,\"1008280059051\":1478686804052,\"1022457442741\":1480585069109,\"1022457442743\":1480585069109,\"1021597230441\":1478686417115,\"1022208671244\":1480585069089,\"1022208671245\":1480585069089,\"1022208671246\":1480585069089,\"1022208671247\":1480585069089,\"1021948628620\":1509788624355,\"1022282726054\":1478686417067,\"1022457442654\":1480585069109,\"1025608430958\":1509788625139,\"1025608430959\":1509788625139,\"1022457442632\":1480585069109,\"1019241443835\":1509788624315,\"1025902551792\":1509788667457,\"1022208671261\":1480585069089,\"1022457442633\":1480585069109,\"1025902551793\":1509788667458,\"1022457442634\":1480585069109,\"1022208671263\":1480585069089,\"1022457442635\":1480585069109,\"1025902551795\":1509788667464,\"1022208671256\":1480585069089,\"1022457442636\":1480585069109,\"1025902551796\":1509788667459,\"1022208671257\":1480585069089,\"1022208671258\":1480585069089,\"1022208671259\":1480585069089,\"1025560852041\":1509788624304,\"1022208671252\":1480585069089,\"1022208671253\":1480585069089,\"1025608430961\":1509788625139,\"1022208671254\":1480585069089,\"1022457442626\":1480585069109,\"1022457442627\":1480585069109,\"1025608430963\":1509788625139,\"1022208671248\":1480585069089,\"1022457442628\":1480585069109,\"1021225647034\":1478686417039,\"1022208671249\":1480585069089,\"1022457442629\":1480585069109,\"1022208671250\":1480585069089,\"1022457442630\":1480585069109,\"1022457442680\":1480585069109,\"1001733375422\":1478686417023,\"1022069605970\":1509788624943,\"1022457442672\":1480585069109,\"1022193729848\":1478686417280,\"1016819663212\":1478686804025,\"1022069605979\":1509788624944,\"1022457442665\":1480585069109,\"1022457442666\":1480585069109,\"1022208671295\":1480585069089,\"1022457442667\":1480585069109,\"1022457442670\":1480585069109,\"1022208671291\":1480585069089,\"1022457442671\":1480585069109,\"1022069605965\":1509788624944,\"1022457442658\":1480585069109,\"1022457442659\":1480585069109,\"1022069605966\":1509788624943,\"1022867429875\":1509788625053,\"1022457442660\":1480585069109,\"1022457442661\":1480585069109,\"1022457442662\":1480585069109,\"1022457442663\":1480585069109,\"1022208671309\":1480585069089,\"1022447874190\":1480585069107,\"1022447874191\":1480585069107,\"1022447874188\":1480585069107,\"1022447874189\":1480585069107,\"1022069605949\":1509788624944,\"1022069605950\":1509788624944,\"1022083761873\":1478686417179,\"1022083761872\":1478686417179,\"1022208671299\":1480585069089,\"1022447874202\":1480585069107,\"1024115870766\":1509788667473,\"1022208671326\":1480585069089,\"1022447874200\":1480585069107,\"1022399510015\":1478686417015,\"1022208671320\":1480585069089,\"1022447874205\":1480585069107,\"1022447874194\":1480585069107,\"1016444147452\":1478686804023,\"1022208671340\":1480585069089,\"1022457442616\":1480585069109,\"1022457442617\":1480585069109,\"1022457442619\":1480585069109,\"1022208671338\":1480585069089,\"1022208671339\":1480585069089,\"1022208671332\":1480585069089,\"1022447874210\":1480585069107,\"1022208671333\":1480585069089,\"1022208671334\":1480585069089,\"1022447874208\":1480585069107,\"1024779544475\":1509788625024,\"1022208671328\":1480585069089,\"1022208671329\":1480585069089,\"1022208671330\":1480585069089,\"1022447874212\":1480585069107,\"1022208671331\":1480585069089,\"1022457442615\":1480585069109,\"4977874500\":1509788624164,\"1020953152402\":1478686417229,\"1022873589273\":1509788624462,\"1021585040678\":1478686417114,\"886590427\":1478686417020,\"1020927331327\":1478686417082,\"1022365693506\":1478686417069,\"1022619707155\":1509788625075,\"1016819663072\":1478686804025,\"1014646325859\":1478686804052,\"1001733375025\":1478686417023,\"886590455\":1478686417020,\"1015658448437\":1478686804016,\"1023924640107\":1509788624961,\"192312395\":1478950494906,\"1020747896573\":1478686417028,\"938625203\":1491634246515,\"1022447874318\":1480585069105,\"1022447874319\":1480585069105,\"1024686353334\":1509788624419,\"1025608430752\":1509788624550,\"1025608430758\":1509788624549,\"1022447874330\":1480585069105,\"1015658448456\":1478686804017,\"1008317283292\":1478686804023,\"1022447874328\":1480585069105,\"1022447874329\":1480585069105,\"1022073538541\":1509788624280,\"1022447874323\":1480585069105,\"1022447874320\":1480585069105,\"1015658448449\":1478686804019,\"1022447874321\":1480585069105,\"1022447874326\":1480585069105,\"1022447874327\":1480585069105,\"1002452687199\":1491634246509,\"1021814937446\":1509788625014,\"1021059843175\":1478686804065,\"1025508817562\":1509788624344,\"1021814937444\":1509788625013,\"1025508817564\":1509788624339,\"1327116412\":1444487341727,\"1021814937454\":1509788625013,\"1022291376853\":1478686417286,\"1021814937452\":1509788625013,\"1025508817557\":1509788624340,\"1021814937449\":1509788625014,\"1017770575961\":1478686804022,\"1025508817559\":1509788624340,\"1024552792960\":1509788624185,\"1025608430748\":1509788624550,\"1025608430749\":1509788624550,\"1021814937458\":1509788625013,\"1023844949631\":1491634246537,\"1021814937466\":1509788625013,\"1021814937479\":1509788625013,\"1021814937478\":1509788625013,\"1021814937477\":1509788625013,\"1021814937476\":1509788625013,\"1021814937474\":1509788625013,\"1021814937473\":1509788625013,\"1001733375126\":1478686417023,\"1021264443260\":1478686417237,\"1021814937484\":1509788625013,\"1021814937481\":1509788625013,\"1021814937480\":1509788625013,\"1013075451771\":1478686804066,\"4977874725\":1509788624164,\"1022135403386\":1478686417184,\"1021814937490\":1509788625014,\"1021814937489\":1509788625014,\"1020294131978\":1465470268292,\"1003695427493\":1478686417220,\"1003695427492\":1478686417220,\"1021286725156\":1478686417004,\"1003695427497\":1478686417220,\"1003695427499\":1478686417220,\"1003695427498\":1478686417220,\"1000499744043\":1478686804059,\"1024926735675\":1509788624415,\"1022099097220\":1509788624416,\"1024926735678\":1509788624416,\"1024926735676\":1509788624416,\"1021015934495\":1478686416988,\"1020398726061\":1509788624319,\"1024926735690\":1509788624415,\"1018513480463\":1509788625204,\"1024926735689\":1509788624415,\"1022490603034\":1478943089490,\"1020398726059\":1509788624282,\"1024926735692\":1509788624415,\"1018513480456\":1509788625204,\"1024188877134\":1509788624490,\"1024926735681\":1509788624415,\"1022098966270\":1509788624924,\"1024926735687\":1509788624415,\"1025551022266\":1509788624344,\"1019237511286\":1509788624314,\"1024926735704\":1509788624415,\"1024926735705\":1509788624415,\"1021963308795\":1478686417056,\"1019237511283\":1509788624314,\"1024926735711\":1509788624415,\"1018513480474\":1509788625204,\"1021375328653\":1478686417104,\"1024926735709\":1509788624415,\"1023233114699\":1509788624958,\"1024926735698\":1509788624415,\"1018513480471\":1509788625204,\"1024926735699\":1509788624415,\"1024926735696\":1509788624415,\"1024926735697\":1509788624416,\"1010295129471\":1491634246522,\"1024926735702\":1509788624416,\"1021112008756\":1478686417037,\"1010295129470\":1491634246522,\"1024926735703\":1509788624415,\"1018513480466\":1509788625204,\"1018513480495\":1509788625204,\"1012129519767\":1509788625082,\"1022766505647\":1509788624824,\"1018513480487\":1509788625204,\"1024926735712\":1509788624415,\"1013952965457\":1509788625069,\"1018513480508\":1509788625204,\"1018513480505\":1509788625204,\"1022023862852\":1478686417163,\"1018513480502\":1509788625204,\"1020792198370\":1478686417077,\"1018513480500\":1509788625204,\"1018513480498\":1509788625204,\"1000526083305\":1444487341712,\"1025278883725\":1509788624484,\"1025278883727\":1509788624484,\"1024210958160\":1509788624266,\"1025278883720\":1509788624484,\"1025278883721\":1509788624484,\"1025278883722\":1509788624484,\"1025278883723\":1509788624484,\"1227016491\":1444487341728,\"1025278883717\":1509788624484,\"1025278883718\":1509788624484,\"1025278883719\":1509788624484,\"1002494683569\":1491634246520,\"1000526083303\":1444487341715,\"1025278883715\":1509788624484,\"1022721302033\":1509788624985,\"1022721302030\":1509788624984,\"1022721302028\":1509788624984,\"1025715229086\":1509788625166,\"1022191370145\":1478686417279,\"1019365348893\":1509788624316,\"1000526083313\":1444487341712,\"1019365348894\":1509788624312,\"1025278883728\":1509788624484,\"1025278883729\":1509788624484,\"1022721302019\":1509788624985,\"1025278883730\":1509788624483,\"1019365348891\":1509788625081,\"1025278883731\":1509788624484,\"1022429138250\":1478686417294,\"1024760486064\":1509788625021,\"1024002681751\":1491634246532,\"1025593854710\":1509788624828,\"1021874826400\":1478686417136,\"1025593854711\":1509788624746,\"1025593854708\":1509788624833,\"1025593854709\":1509788624823,\"1022084675621\":1509788624289,\"1022721302048\":1509788624986,\"1022721302108\":1509788624986,\"1020974085741\":1478686417229,\"1024156431579\":1509788667500,\"1024404489210\":1509788624417,\"1021599964320\":1478686417115,\"1021443986042\":1478686417044,\"1022957104206\":1509788624816,\"1022423240106\":1480585069071,\"1022721302134\":1509788624985,\"1017473558192\":1465470268256,\"1022721302117\":1509788624985,\"1000927169405\":1478686417021,\"1000237720248\":1444487341761,\"1024330366646\":1509788625007,\"1025278883597\":1509788624482,\"1025278883592\":1509788624483,\"1024330366643\":1509788625007,\"1025278883594\":1509788624483,\"1025278883588\":1509788624483,\"1024330366654\":1509788625007,\"1025278883589\":1509788624483,\"1025278883590\":1509788624483,\"1025278883591\":1509788624483,\"1024332463770\":1509788624544,\"1022043780846\":1478686417269,\"1024330366651\":1509788625007,\"1022423240012\":1480585069071,\"1025278883586\":1509788624482,\"1025278883612\":1509788624482,\"1021099523647\":1478686417002,\"1025278883608\":1509788624482,\"1025278883609\":1509788624482,\"1025278883610\":1509788624482,\"1022721302153\":1509788624985,\"1025278883605\":1509788624482,\"1025278883606\":1509788624482,\"1022721302149\":1509788624985,\"1021999215511\":1478686416991,\"1025278883600\":1509788624482,\"1016301756476\":1480585069066,\"1016301756477\":1480585069066,\"1025278883624\":1509788624482,\"1025278883625\":1509788624482,\"1025278883620\":1509788624483,\"1025278883621\":1509788624483,\"1025278883622\":1509788624483,\"1025278883623\":1509788624482,\"1025278883616\":1509788624482,\"1024950543248\":1509788625177,\"1025278883619\":1509788624483,\"1025278883645\":1509788624483,\"1021701677681\":1478686804039,\"1020560154228\":1478686417224,\"1022326507321\":1478686417200,\"1025278883660\":1509788624483,\"1025278883661\":1509788624483,\"1025278883662\":1509788624483,\"1025278883663\":1509788624483,\"1025278883656\":1509788624483,\"1023924430477\":1509788624969,\"1025278883658\":1509788624483,\"1025278883659\":1509788624483,\"1025278883653\":1509788624483,\"1018498818916\":1478686804037,\"1021099523687\":1478686417002,\"1018498818915\":1478686804037,\"1025278883648\":1509788624483,\"1018498818914\":1478686804037,\"1025278883649\":1509788624483,\"1018498818913\":1478686804037,\"1025278883650\":1509788624483,\"1025278883676\":1509788624483,\"1025278883677\":1509788624483,\"1025278883678\":1509788624483,\"1025278883673\":1509788624483,\"1022423239962\":1480585069071,\"1025278883668\":1509788624483,\"1025278883665\":1509788624483,\"1025278883666\":1509788624483,\"1024811080590\":1509788624311,\"1021955436867\":1509788624256,\"1021099523649\":1478686417002,\"1025278883686\":1509788624483,\"1025525302806\":1509788625083,\"1021939445840\":1478686417260,\"1025278883687\":1509788624483,\"1025278883680\":1509788624483,\"1025278883683\":1509788624483,\"1021492483503\":1509788624398,\"1025278883708\":1509788624483,\"1021787006812\":1509788624399,\"1002457458436\":1491634246518,\"1025278883711\":1509788624484,\"1020795169850\":1478686417029,\"1025278883705\":1509788624484,\"1025278883700\":1509788624484,\"1025278883701\":1509788624484,\"1025278883702\":1509788624484,\"1022490087741\":1478943089490,\"1025278883703\":1509788624484,\"1025278883697\":1509788624483,\"1025278883699\":1509788624484,\"1024287767968\":1509788624522,\"1016728008793\":1478686804017,\"1020811685110\":1478686417030,\"1025278883465\":1509788624485,\"1024287767973\":1509788624522,\"1021887016157\":1478686804027,\"1025278883466\":1509788624484,\"1025278883467\":1509788624485,\"1024287767975\":1509788624522,\"1022721302294\":1509788624984,\"1025278883462\":1509788624484,\"1024287767978\":1509788624522,\"1025278883463\":1509788624485,\"1024287767981\":1509788624522,\"1022150606094\":1478686417277,\"1022721302289\":1509788624984,\"1022721302286\":1509788624984,\"1022957104387\":1509788624194,\"1022737423899\":1509788624430,\"1025278883487\":1509788624484,\"1024287767987\":1509788624522,\"1024287767988\":1509788624522,\"1025278883481\":1509788624484,\"1024287767990\":1509788624522,\"1024287767992\":1509788624522,\"1024287767994\":1509788624522,\"1022721302274\":1509788624986,\"1025278883473\":1509788624484,\"1024287767999\":1509788624522,\"1025278883500\":1509788624485,\"1024287767936\":1509788624521,\"1021980734208\":1478686417151,\"1020505103124\":1478686804032,\"1025278883502\":1509788624485,\"1025278883503\":1509788624485,\"1024287767939\":1509788624521,\"1024330366739\":1509788625007,\"531275404\":1491634246520,\"1025278883498\":1509788624484,\"1012905169942\":1478950494940,\"1024287767943\":1509788624518,\"1025278883492\":1509788624484,\"1025798199184\":1509788625113,\"1025278883493\":1509788624484,\"1025798199185\":1509788625122,\"1025278883494\":1509788624484,\"1024287767946\":1509788624521,\"1025798199186\":1509788625105,\"1025278883495\":1509788624484,\"1025278883488\":1509788624484,\"1024287767948\":1509788624521,\"1025278883489\":1509788624484,\"1023730834143\":1509788624961,\"1025100361086\":1509788624273,\"1025278883490\":1509788624484,\"1024287767950\":1509788624518,\"1025798199190\":1509788625087,\"798797484\":1491634246517,\"1024287767953\":1509788624522,\"1022422322370\":1478686417293,\"1024287767954\":1509788624522,\"1024287767956\":1509788624522,\"1000116476488\":1478686804029,\"1025278883508\":1509788624484,\"1024287767960\":1509788624522,\"1022721302310\":1509788624983,\"1025874615090\":1509788667581,\"1846079281\":1444487341743,\"1024287767964\":1509788624522,\"1022721302306\":1509788624983,\"1024330366730\":1509788625007,\"1025278883505\":1509788624485,\"1022511322044\":1480585069126,\"1025278883506\":1509788624484,\"1025874615092\":1509788667581,\"1025278883507\":1509788624484,\"1024330366729\":1509788625007,\"1024490867131\":1509788625028,\"1025278883533\":1509788624481,\"1025278883534\":1509788624481,\"1024423495114\":1509788624936,\"1022721302364\":1509788624986,\"1022049941321\":1478686417172,\"1020068233577\":1478686804026,\"1025798199283\":1509788624540,\"1025798199284\":1509788624537,\"1023924430596\":1509788624969,\"1025798199285\":1509788624542,\"1025278883549\":1509788624481,\"1025278883550\":1509788624481,\"165447823\":1478686417023,\"1025278883545\":1509788624481,\"1025278883546\":1509788624481,\"1025278883547\":1509788624481,\"1025890867813\":1509788667404,\"1025278883540\":1509788624481,\"1024314899546\":1509788625016,\"1025278883541\":1509788624481,\"1025278883543\":1509788624481,\"1024314899545\":1509788625019,\"1025278883536\":1509788624481,\"1025278883538\":1509788624481,\"1025798592492\":1509788625102,\"1025278883539\":1509788624481,\"1025278883565\":1509788624481,\"1025278883566\":1509788624481,\"1025278883561\":1509788624481,\"1025890867799\":1509788667404,\"1025278883562\":1509788624481,\"1025278883563\":1509788624481,\"1024287768007\":1509788624522,\"1020235877192\":1465470268180,\"1025278883559\":1509788624481,\"1025278883552\":1509788624481,\"1024287768012\":1509788624522,\"1022721302386\":1509788624984,\"1025278883554\":1509788624481,\"1025890867805\":1509788667404,\"1801775636\":1444487341744,\"1003975622661\":1478686417221,\"1022721302382\":1509788624984,\"1003975622663\":1478686417221,\"1022171971500\":1478686417063,\"1022255727277\":1478686417066,\"1003975622657\":1478686417221,\"1022721302378\":1509788624984,\"1003975622656\":1478686417221,\"1022721302379\":1509788624983,\"1003975622659\":1478686417221,\"4947748767\":1509788624154,\"1022721302376\":1509788624984,\"1022721302374\":1509788624985,\"1003975622668\":1478686417221,\"1022721302375\":1509788624984,\"1025278883568\":1509788624481,\"1022721302370\":1509788624986,\"1003975622664\":1478686417221,\"1025278883569\":1509788624481,\"1025890867791\":1509788667404,\"1022721302368\":1509788624986,\"1023010058678\":1509788625048,\"1021706658788\":1478686417122,\"1003975622666\":1478686417221,\"1022721302369\":1509788624986,\"1023961131450\":1509788625037,\"1025100361175\":1509788624173,\"1025278883356\":1509788624250,\"1025278883357\":1509788624250,\"1020294205241\":1465470268296,\"1025278883359\":1509788624250,\"1011684084844\":1478686804064,\"1025278883344\":1509788624250,\"1024287767868\":1509788624521,\"1025171140998\":1509788624999,\"1016977967568\":1465470268267,\"1025278883374\":1509788624251,\"1025278883369\":1509788624251,\"1025278883365\":1509788624251,\"1025278883360\":1509788624250,\"1025278883362\":1509788624251,\"1021051025952\":1478686417036,\"1025278883384\":1509788624250,\"1025406942814\":1509788624456,\"1025278883380\":1509788624250,\"1025278883382\":1509788624250,\"1025278883378\":1509788624251,\"1021500741474\":1478686804031,\"1024287767906\":1509788624521,\"1024287767914\":1509788624522,\"1020526337341\":1465470268322,\"1008341107956\":1478686804052,\"1022957104576\":1509788624419,\"1025278883420\":1509788625198,\"1024287767921\":1509788624522,\"1023999404577\":1509788625017,\"4985891069\":1509788624153,\"1025278883422\":1509788625199,\"1025278883423\":1509788625199,\"1022041159517\":1478686417170,\"1024287767926\":1509788624522,\"1025880513030\":1509788667404,\"427858008\":1478950494910,\"1022027527328\":1478686417164,\"1024287767932\":1509788624521,\"1022192680540\":1509788625083,\"1024287767872\":1509788624522,\"1025278883437\":1509788625199,\"1025278883438\":1509788625199,\"1025278883439\":1509788625199,\"1024287767876\":1509788624521,\"1025278883432\":1509788625199,\"1025278883433\":1509788625199,\"1025278883434\":1509788625199,\"1022250615787\":1478686417066,\"1010025802550\":1478686804067,\"1025278883428\":1509788625199,\"1025278883429\":1509788625198,\"1025278883430\":1509788625199,\"1025278883431\":1509788625199,\"1024287767884\":1509788624521,\"1025278883424\":1509788625199,\"1025278883425\":1509788625199,\"1021504804717\":1478686417047,\"1025278883427\":1509788625199,\"1024287767889\":1509788624521,\"1025278883448\":1509788625198,\"1025278883449\":1509788625198,\"1000527787268\":1444487341711,\"1021890423921\":1478686417138,\"1024287767897\":1509788624522,\"1025278883445\":1509788625199,\"1025278883446\":1509788625199,\"1024287767900\":1509788624522,\"1023924430773\":1509788624969,\"1025278883441\":1509788625199,\"1025278883442\":1509788625199,\"1000927169278\":1478686417021,\"1020777343488\":1478686804039,\"1025278883443\":1509788625199,\"1006848372285\":1478686804040,\"1025278883213\":1509788624890,\"1025278883214\":1509788624890,\"1022464527695\":1509788624280,\"1025278883215\":1509788624890,\"1025278883208\":1509788624889,\"1025278883209\":1509788624889,\"1025278883210\":1509788624889,\"1025880512982\":1509788667404,\"1025278883211\":1509788624890,\"1022921582599\":1509788624298,\"1025278883205\":1509788624889,\"601661910\":1444487341750,\"1025278883206\":1509788624890,\"1025278883207\":1509788624890,\"1025278883200\":1509788624889,\"1025278883202\":1509788624889,\"1022127143289\":1509788624338,\"142772891\":1444487341710,\"1025278883216\":1509788624890,\"1020962813136\":1478686417033,\"1020799757976\":1478686417077,\"1025091055299\":1509788624307,\"1025278883217\":1509788624889,\"1025278883218\":1509788624889,\"1024687216366\":1509788625083,\"1022052169212\":1478686417172,\"1021907070106\":1509788624466,\"1025880513008\":1509788667404,\"1025278883245\":1509788624249,\"1025278883246\":1509788624249,\"1025278883240\":1509788624249,\"1025278883241\":1509788624249,\"1025278883242\":1509788624249,\"1025278883243\":1509788624249,\"1021906152606\":1478686417139,\"1025880513018\":1509788667404,\"1021762103045\":1478686417127,\"1025278883263\":1509788624249,\"1020526337732\":1465470268322,\"1025278883258\":1509788624249,\"1022021891988\":1478686417162,\"1025278883253\":1509788624249,\"4985891605\":1509788624154,\"1025278883249\":1509788624249,\"1025278883250\":1509788624249,\"1025278883276\":1509788624249,\"1025278883277\":1509788624249,\"1019023900705\":1480585069072,\"1025278883278\":1509788624249,\"1025278883279\":1509788624249,\"1025278883274\":1509788624249,\"1025278883275\":1509788624249,\"1023956150819\":1509788624519,\"1025278883270\":1509788624249,\"1025278883271\":1509788624249,\"1025278883267\":1509788624249,\"1009744387020\":1491634246512,\"1016301626100\":1480585069066,\"1022098045810\":1478686417275,\"1020913136031\":1478686417080,\"1025278883286\":1509788624249,\"1022073142008\":1478686416990,\"1025278883280\":1509788624249,\"1025278883282\":1509788624249,\"1022193728972\":1478686417280,\"1025278883308\":1509788624250,\"1025278883311\":1509788624251,\"1001016300478\":1478686417018,\"1025278883325\":1509788624251,\"1019833675853\":1478686804065,\"1000927168889\":1478686417021,\"1025278883317\":1509788624251,\"1025278883318\":1509788624250,\"1025278883319\":1509788624250,\"1025278883312\":1509788624251,\"1025278883313\":1509788624251,\"1025278883314\":1509788624251,\"1025278883315\":1509788624251,\"1004150345326\":1478686804052,\"1022468853129\":1478686804049,\"1004150345323\":1478686804052,\"1004150345322\":1478686804052,\"1004150345321\":1478686804052,\"1004150345320\":1478686804052,\"1003975623677\":1478686417221,\"1004150345319\":1478686804052,\"1003975623676\":1478686417221,\"1004150345318\":1478686804052,\"1020742216349\":1478686417075,\"1004150345317\":1478686804052,\"1004150345316\":1478686804052,\"1004150345313\":1478686804052,\"1003975623674\":1478686417221,\"1004150345312\":1478686804052,\"1025214657009\":1509788624424,\"1025323055225\":1509788624304,\"1000237719724\":1444487341761,\"1020776687987\":1478686416984,\"1021948621462\":1509788624390,\"1004023989813\":1478686417222,\"1022080482033\":1509788624928,\"1004023989823\":1478686417222,\"1004023989822\":1478686417222,\"1004023989821\":1478686417222,\"1004023989820\":1478686417222,\"1004023989819\":1478686417222,\"1004023989818\":1478686417222,\"1025278883132\":1509788624584,\"1004150345310\":1478686804052,\"1025278883133\":1509788624585,\"1004150345309\":1478686804051,\"1025278883134\":1509788624585,\"1025278883135\":1509788624585,\"1004150345306\":1478686804051,\"1004150345304\":1478686804051,\"1025278883148\":1509788624585,\"1025278883149\":1509788624585,\"1025278883150\":1509788624585,\"1025278883151\":1509788624585,\"1025278883144\":1509788624584,\"1025278883145\":1509788624584,\"1025278883146\":1509788624584,\"1025278883141\":1509788624584,\"1025278883142\":1509788624584,\"1025278883143\":1509788624585,\"1025278883137\":1509788624585,\"1025278883138\":1509788624584,\"1025278883139\":1509788624584,\"1004023989831\":1478686417222,\"1004023989830\":1478686417222,\"1004023989828\":1478686417222,\"1004023989826\":1478686417222,\"1004023989825\":1478686417222,\"1004023989824\":1478686417222,\"1004023989839\":1478686417222,\"1004023989838\":1478686417222,\"1004023989836\":1478686417222,\"1004023989835\":1478686417222,\"1025278883152\":1509788624585,\"1004023989834\":1478686417222,\"1025278883153\":1509788624584,\"1004023989833\":1478686417222,\"1004023989832\":1478686417222,\"1025278883155\":1509788624584,\"1021927517609\":1478686417142,\"1021980733641\":1478686417151,\"1021148283695\":1478686417037,\"1022470557183\":1478686804049,\"1025278883196\":1509788624890,\"1015657855985\":1478686804017,\"1025278883198\":1509788624890,\"1025278883199\":1509788624890,\"1025278883193\":1509788624890,\"1025278883194\":1509788624890,\"1018883913772\":1509788624311,\"1025278883195\":1509788624890,\"1025278883189\":1509788624889,\"1007806457829\":1478686804025,\"1024114225690\":1509788624606,\"1024114225692\":1509788624606,\"1024114225694\":1509788624606,\"1014342658156\":1465470268319,\"1024114225681\":1509788624606,\"1024114225683\":1509788624606,\"1024114225685\":1509788624606,\"1024735581409\":1509788624813,\"1024114225673\":1509788624606,\"1024114225677\":1509788624606,\"1024114225678\":1509788624606,\"1024114225679\":1509788624606,\"1024114225665\":1509788624606,\"1016655918748\":1480585069075,\"1020793991143\":1509788624960,\"2027224011\":1491634246513,\"1010025802226\":1478686804067,\"1024114225725\":1509788624606,\"1024114225726\":1509788624606,\"1022209065900\":1478686417191,\"1024156432315\":1509788667500,\"1024114225705\":1509788624606,\"1024114225710\":1509788624606,\"4985891352\":1509788624154,\"1025522026041\":1509788624295,\"1024114225700\":1509788624606,\"1024114225702\":1509788624606,\"1024114225703\":1509788624606,\"1019042643968\":1509788625079,\"1024735581352\":1509788624813,\"1024114225745\":1509788624606,\"1022338960257\":1509788624922,\"1024114225747\":1509788624606,\"1023956151080\":1509788624519,\"1024114225736\":1509788624606,\"1021769311630\":1478686417254,\"1025660702104\":1509788624393,\"1021769311628\":1478686417254,\"1024114225741\":1509788624606,\"1024114225729\":1509788624606,\"1025660702103\":1509788624393,\"1025607747954\":1509788625001,\"1021997248580\":1478686416987,\"1025607747959\":1509788624998,\"1022721301878\":1509788624985,\"1022721301879\":1509788624985,\"1021615038087\":1478686417116,\"1022379723024\":1478686417205,\"1022379723028\":1478686417205,\"1024719328649\":1509788624342,\"1022721301871\":1509788624985,\"1022721301868\":1509788624985,\"1022721301869\":1509788624985,\"1022379723010\":1478686417205,\"1021931973744\":1478686417010,\"1022379723015\":1478686417205,\"768913067\":1491634246534,\"1022931281944\":1509788625073,\"1025607747990\":1509788625084,\"1024735581285\":1509788624813,\"1021048010836\":1478686417093,\"1025660702043\":1509788624393,\"1022721301900\":1509788624983,\"1025607747975\":1509788625001,\"1025282684135\":1509788625158,\"1025660702044\":1509788624393,\"1021568112975\":1509788624401,\"1021048010830\":1478686417093,\"1025282684133\":1509788625158,\"1025282684136\":1509788625158,\"1025282684137\":1509788625158,\"1022721301891\":1509788624983,\"1022721301889\":1509788624986,\"1025282684141\":1509788625158,\"1021488289314\":1478686417046,\"1227016931\":1444487341738,\"1019963963832\":1478686804021,\"1018546791728\":1480585069063,\"1024735581229\":1509788624813,\"1021485012584\":1509788624814,\"1015242482184\":1480585069068,\"1022343154521\":1478686417288,\"1020173222953\":1509788624321,\"1001309643144\":1444487341755,\"1020173222952\":1509788624321,\"1020173222949\":1509788624321,\"1020173222948\":1509788624321,\"1010024491287\":1491634246521,\"1020173222951\":1509788624321,\"1020173222950\":1509788624321,\"1018546791725\":1480585069063,\"1020173222947\":1509788624320,\"4947748107\":1509788624153,\"1024153155397\":1509788667495,\"1227016904\":1444487341748,\"1022038930759\":1478686417268,\"1022721301993\":1509788624986,\"1022444866914\":1478686417214,\"1019218283209\":1509788625020,\"949009555\":1444487341742,\"1024735581163\":1509788624813,\"1022950156412\":1509788625051,\"1024789323474\":1509788624453,\"1024789323473\":1509788624459,\"1214958694\":1444487341741,\"1024789323478\":1509788624459,\"1024789323476\":1509788624458,\"1024789323467\":1509788624458,\"1024789323464\":1509788624458,\"1024789323465\":1509788624458,\"1024789323470\":1509788624458,\"1024789323469\":1509788624458,\"1024886315784\":1509788624185,\"1024789323462\":1509788624458,\"1024789323514\":1509788624233,\"1000526082249\":1444487341737,\"1022389030893\":1478686417205,\"1024789323515\":1509788624233,\"1024789323513\":1509788624233,\"1024789323506\":1509788624233,\"1024789323507\":1509788624233,\"1023835039122\":1491634246536,\"1024789323509\":1509788624233,\"1024577636673\":1509788624926,\"1021695255835\":1509788624396,\"1022287184321\":1478686417286,\"1024789323420\":1509788624458,\"1024156561620\":1509788667500,\"1022461119431\":1480585069076,\"1018700147687\":1465470268320,\"1024789323411\":1509788624459,\"1024789323409\":1509788624459,\"1024156561625\":1509788667500,\"1024789323406\":1509788624458,\"1022226367947\":1478686417192,\"1024789323407\":1509788624459,\"1682104341\":1491634246534,\"1024156561614\":1509788667500,\"1664411498\":1491634246519,\"1024156561612\":1509788667500,\"1021597998961\":1509788624909,\"1024789323448\":1509788624458,\"1024789323449\":1509788624458,\"1021239902765\":1478686417236,\"1021597998965\":1509788624909,\"1021597998967\":1509788624909,\"1024789323453\":1509788624458,\"1021597998966\":1509788624909,\"1021597998969\":1509788624909,\"142773483\":1444487341710,\"1022255728565\":1478686417067,\"1024789323441\":1509788624458,\"1024789323446\":1509788624458,\"1021597998973\":1509788624909,\"1021597998972\":1509788624909,\"1210109006\":1444487341743,\"1024789323444\":1509788624458,\"1021597998974\":1509788624909,\"1024789323433\":1509788624458,\"1024789323437\":1509788624458,\"1021597998957\":1509788624909,\"1024789323431\":1509788624458,\"1021597998956\":1509788624909,\"1024789323429\":1509788624458,\"4947747435\":1509788624153,\"1021597998977\":1509788624909,\"1021597998976\":1509788624909,\"1021597998979\":1509788624909,\"1010011647258\":1491634246525,\"1021597998981\":1509788624909,\"1022037619272\":1478686417167,\"1021597998980\":1509788624909,\"1021597998983\":1509788624909,\"1023537368044\":1509788667501,\"1021597998985\":1509788624909,\"1023537368034\":1509788667501,\"1021597998984\":1509788624909,\"1021597998986\":1509788624909,\"1021846122160\":1509788625077,\"1024587467353\":1509788625095,\"1021110794881\":1478686417095,\"1022074977319\":1478686804039,\"1023735029526\":1509788624970,\"1023537368018\":1509788667501,\"1021809552604\":1478686417256,\"1022273683462\":1480585069094,\"1016298349661\":1480585069073,\"1001517525853\":1444487341750,\"1021809552602\":1478686417256,\"1021196255317\":1478686417038,\"1024950544268\":1509788625178,\"1023537368014\":1509788667501,\"139627670\":1444487341738,\"601663252\":1444487341745,\"1023822193832\":1491634246536,\"1019272549697\":1509788624287,\"1019272549699\":1509788624287,\"1000237721320\":1444487341762,\"1016254437702\":1480585069075,\"1020941316334\":1465470268236,\"2006250356\":1491634246533,\"1012423605551\":1478686416994,\"4985892290\":1509788624156,\"1017230283696\":1478686804022,\"1021832096797\":1478686804027,\"1023858501460\":1509788624213,\"1022438181882\":1478686417295,\"486054399\":1444487341734,\"1143259437\":1491634246519,\"1023306417205\":1509788624406,\"1021491040381\":1478686417243,\"1022869676597\":1509788625144,\"1019384356351\":1480585069073,\"1021156148311\":1478686416975,\"1019384356347\":1480585069073,\"1023858501449\":1509788624213,\"1024578160727\":1509788624925,\"1024578160733\":1509788624925,\"1022146541939\":1478686417277,\"1006559223367\":1480585069064,\"1024578160690\":1509788624925,\"1018805399587\":1509788624929,\"1021082089600\":1478686417036,\"1021650426528\":1478686417049,\"1022065668706\":1478686417175,\"1019023247165\":1480585069072,\"1024578160678\":1509788624925,\"1022295048250\":1478686417286,\"1003975623701\":1478686417221,\"1003975623700\":1478686417221,\"1003975623702\":1478686417221,\"1003975623696\":1478686417221,\"1003975623699\":1478686417221,\"1003975623698\":1478686417221,\"1023438670900\":1509788625082,\"1003975623704\":1478686417221,\"1003975623684\":1478686417221,\"166497438\":1444487341732,\"1003975623686\":1478686417221,\"1003975623681\":1478686417221,\"1003975623680\":1478686417221,\"1023835432128\":1491634246536,\"1003975623693\":1478686417221,\"1003975623692\":1478686417221,\"1003975623688\":1478686417221,\"4985891922\":1509788624154,\"1025627670975\":1509788624430,\"1023353995721\":1509788624257,\"1024789323611\":1509788624568,\"1024789323608\":1509788624568,\"1023365529658\":1509788625040,\"1023353995723\":1509788624257,\"1024789323614\":1509788624568,\"1023353995725\":1509788624257,\"1024789323612\":1509788624568,\"1024789323613\":1509788624568,\"1021004758465\":1478686417089,\"1023353995716\":1509788624256,\"1024789323606\":1509788624568,\"1023353995717\":1509788624257,\"949009664\":1444487341746,\"1023353995738\":1509788624256,\"1024789323598\":1509788624568,\"1023353995741\":1509788624257,\"1024789323596\":1509788624568,\"1024789323597\":1509788624568,\"1023353995728\":1509788624257,\"1023353995731\":1509788624257,\"1023353995732\":1509788624257,\"371495866\":1444487341751,\"1023353995734\":1509788624257,\"1024973348957\":1509788624288,\"1023353995752\":1509788624256,\"1021995022056\":1509788624466,\"1023353995758\":1509788624257,\"1023353995744\":1509788624257,\"1023353995746\":1509788624257,\"1023353995747\":1509788624257,\"1023353995749\":1509788624257,\"1020803295681\":1509788624605,\"1023353995773\":1509788624256,\"1023353995760\":1509788624256,\"1024789323618\":1509788624568,\"1024789323616\":1509788624568,\"1023353995763\":1509788624257,\"1024789323617\":1509788624568,\"1023353995766\":1509788624256,\"1020803295667\":1509788624605,\"1020803295666\":1509788624605,\"1021161653460\":1478686417038,\"1022233183477\":1478686417065,\"1020803295664\":1509788624605,\"1024789323550\":1509788624233,\"1020803295670\":1509788624605,\"1016831949507\":1478686804058,\"1024789323538\":1509788624233,\"1020803295675\":1509788624605,\"1024789323539\":1509788624233,\"1020803295674\":1509788624605,\"1020803295672\":1509788624605,\"2006250073\":1491634246533,\"1020803295678\":1509788624605,\"1024789323540\":1509788624233,\"1020803295676\":1509788624605,\"1024789323530\":1509788624233,\"1020803295651\":1509788624605,\"1024789323534\":1509788624233,\"1024789323535\":1509788624233,\"1024789323533\":1509788624233,\"1024789323522\":1509788624233,\"1020803295659\":1509788624605,\"1021161653453\":1478686417038,\"1020803295657\":1509788624605,\"1020803295656\":1509788624605,\"1020803295663\":1509788624605,\"1024789323527\":1509788624233,\"1020803295662\":1509788624605,\"1020803295661\":1509788624605,\"1011943217546\":1509788624915,\"1024886315770\":1509788624185,\"1024789323570\":1509788624233,\"1019208452233\":1480585069068,\"1024106886279\":1509788667890,\"1024789323562\":1509788624233,\"1021836816165\":1509788625082,\"1024789323563\":1509788624233,\"1021836816167\":1509788625082,\"2006250087\":1491634246533,\"1024789323561\":1509788624233,\"1021836816166\":1509788625082,\"1024789323566\":1509788624233,\"1024789323567\":1509788624233,\"1024789323564\":1509788624233,\"1024886315749\":1509788624185,\"1024789323555\":1509788624233,\"1024789323558\":1509788624233,\"1021836816169\":1509788625082,\"1024789323559\":1509788624233,\"1021836816168\":1509788625082,\"1024789323556\":1509788624233,\"1022464526668\":1509788624280,\"1023536974178\":1509788624459,\"1022464526666\":1509788624300,\"1022464526667\":1509788624281,\"1022464526660\":1509788624319,\"1020294203554\":1465470268296,\"1022464526661\":1509788624319,\"1012144680551\":1478686417073,\"1022464526662\":1509788624281,\"1023536974187\":1509788624437,\"1024114226963\":1509788624835,\"1022464526656\":1509788624280,\"1022464526657\":1509788624299,\"1022464526659\":1509788624280,\"1023536974192\":1509788624459,\"1023536974193\":1509788624459,\"1022464526686\":1509788624299,\"379490438\":1444487341702,\"1022086381549\":1478686417062,\"1024114226945\":1509788624835,\"1022464526678\":1509788624311,\"1023864530400\":1509788624357,\"1011898130213\":1509788624366,\"1023864530401\":1509788624357,\"1022464526672\":1509788624319,\"1021832097539\":1478686804047,\"1023536974147\":1509788624459,\"1022464526696\":1509788624290,\"1023864530399\":1509788624357,\"1023536974151\":1509788624459,\"1022464526692\":1509788624299,\"1025671186432\":1509788624455,\"1020991254804\":1478686417034,\"1022464526688\":1509788624319,\"1024114226996\":1509788624835,\"1022464526689\":1509788624288,\"1023536974158\":1509788624459,\"1023536974163\":1509788624459,\"333485528\":1491634246508,\"1021468627603\":1509788624398,\"1024114226978\":1509788624835,\"1023536974174\":1509788624459,\"1062123791\":1478686804051,\"1025270755404\":1509788624553,\"1025732531396\":1509788624922,\"1025270755407\":1509788624553,\"1023536974121\":1509788624459,\"1021156148999\":1478686416975,\"1023536974126\":1509788624459,\"1024114227016\":1509788624843,\"1025270755417\":1509788624849,\"1025270755418\":1509788624849,\"1021647935560\":1478686804069,\"1024114227019\":1509788624843,\"1025270755419\":1509788624849,\"1025270755420\":1509788624849,\"1023536974133\":1509788624459,\"1025270755421\":1509788624849,\"1022165810031\":1478686417186,\"2006249923\":1491634246533,\"1025270755408\":1509788624553,\"1025270755409\":1509788624553,\"1021937219203\":1478686417055,\"1022474884852\":1478943089486,\"1025270755411\":1509788624553,\"1024114227011\":1509788624868,\"1022192548317\":1478686417188,\"1021647935559\":1478686804069,\"1024937829761\":1509788625170,\"1023536974083\":1509788624459,\"379490554\":1444487341702,\"1021912705080\":1478686417140,\"1022464526654\":1509788624281,\"1025523860327\":1509788625167,\"1023536974102\":1509788624459,\"1022395059693\":1478686417206,\"1022086119303\":1478686417272,\"1021432321166\":1478686416980,\"1022008652313\":1478686417158,\"1023821276908\":1491634246536,\"1023353995978\":1509788624260,\"1024937829730\":1509788625170,\"379490328\":1444487341702,\"1021647935635\":1478686804071,\"1023353995968\":1509788624260,\"1024937829737\":1509788625171,\"1021866306972\":1478686417136,\"1023353995971\":1509788624260,\"1024937829740\":1509788625171,\"1021647935637\":1478686804071,\"1021647935636\":1478686804071,\"1024937829746\":1509788625171,\"1021729203643\":1509788624395,\"1024937829752\":1509788625170,\"1023353995986\":1509788624260,\"1022169479290\":1509788624924,\"1024937829758\":1509788625171,\"1024937829759\":1509788625170,\"1019307021600\":1465470268273,\"1020930962036\":1478686417082,\"1020915365133\":1478686416999,\"1025767133758\":1509788624438,\"1024937829708\":1509788625170,\"1020930962041\":1478686417083,\"1024937829711\":1509788625170,\"1024937829715\":1509788625171,\"1024937829726\":1509788625171,\"1023353995912\":1509788624260,\"1020444152090\":1478686804033,\"1023353995914\":1509788624260,\"1022511322182\":1480585069126,\"1022770456564\":1509788624994,\"1010069711606\":1491634246534,\"1025627671044\":1509788624868,\"1023353995908\":1509788624260,\"1023353995909\":1509788624260,\"1023353995910\":1509788624260,\"1023353995928\":1509788624260,\"1025767133762\":1509788624438,\"1024936387782\":1509788625006,\"1023353995929\":1509788624260,\"1023353995930\":1509788624260,\"1023353995932\":1509788624260,\"1023353995933\":1509788624260,\"1023353995934\":1509788624260,\"1025767133764\":1509788624438,\"1023353995935\":1509788624260,\"1023353995920\":1509788624260,\"1025767133769\":1509788624438,\"1025883921728\":1509788667403,\"1023353995925\":1509788624260,\"1025767133773\":1509788624438,\"1019384356359\":1480585069073,\"1019384356355\":1480585069073,\"1019384356354\":1480585069073,\"1019384356353\":1480585069073,\"1023353995951\":1509788624260,\"1022073536094\":1509788624280,\"1023353995941\":1509788624260,\"1021197566466\":1495284743407,\"1021948622590\":1509788624390,\"1022453254379\":1478686417302,\"1000237720781\":1444487341762,\"1023353995966\":1509788624260,\"1025902402200\":1509788667465,\"1022067765738\":1509788624183,\"1025902402201\":1509788667457,\"1023353995958\":1509788624260,\"1021001088903\":1478686417089,\"1021949802271\":1478686417145,\"1022501492287\":1509788624538,\"1022301340180\":1478686417199,\"1024226688855\":1509788625032,\"1016399536592\":1480585069069,\"1025593069036\":1509788624929,\"1018379803630\":1509788625079,\"1023924429155\":1509788624969,\"1021832097321\":1478686804047,\"1021949802284\":1478686417145,\"1021949802287\":1478686417145,\"1021949802273\":1478686417145,\"1025520452126\":1509788624297,\"1019272550064\":1509788624287,\"1019272550066\":1509788624287,\"1025270755660\":1509788624215,\"1022607007626\":1509788624821,\"1025270755661\":1509788624215,\"1025270755662\":1509788624215,\"1025270755663\":1509788624215,\"1012238788992\":1458304307281,\"1012238788995\":1458304307281,\"1023927181684\":1491634246529,\"1012238788994\":1458304307281,\"225741368\":1478686804032,\"1025270755654\":1509788624215,\"1012238788998\":1458304307281,\"1022599270428\":1509788624569,\"1003127572644\":1478686804054,\"1019121553363\":1509788624314,\"1021903399355\":1478686417139,\"1022087691949\":1478686417012,\"1016963940422\":1478686804067,\"1016963940421\":1478686804067,\"1022086381186\":1478686417062,\"1023536974049\":1509788624459,\"1023536974050\":1509788624459,\"1021778092497\":1480585069073,\"1023536974053\":1509788624459,\"1020526336887\":1465470268322,\"1020785732857\":1509788624383,\"1021778092509\":1480585069073,\"1016101737217\":1509788624941,\"1023536974066\":1509788624459,\"1023536974068\":1509788624459,\"1022957104006\":1509788625101,\"1023536974076\":1509788624459,\"1021778092535\":1480585069073,\"1023995211156\":1491634246529,\"1021778092530\":1480585069073,\"1025530151194\":1509788624335,\"1025767134010\":1509788624453,\"1021778092537\":1480585069073,\"1000527917915\":1444487341714,\"1025703303151\":1509788624298,\"1023924429304\":1509788624969,\"1021778092516\":1480585069073,\"1023536974035\":1509788624459,\"1023536974038\":1509788624459,\"1020582041652\":1478686416995,\"1023536974040\":1509788624459,\"1021778092524\":1480585069073,\"1021778092526\":1480585069073,\"1023536974045\":1509788624459,\"1023536974046\":1509788624459,\"1009965244853\":1491634246523,\"1012155821593\":1478686417025,\"1024210956444\":1509788624915,\"1016681083341\":1478686804018,\"1021242262013\":1478686417003,\"1022072225652\":1478686417176,\"1023353996178\":1509788624214,\"1022957104077\":1509788624533,\"1021944559528\":1478686417010,\"1021778092468\":1480585069073,\"1021778092471\":1480585069073,\"1021687785049\":1509788624396,\"1024114226939\":1509788624916,\"1022543172447\":1509788625075,\"1021778092465\":1480585069073,\"1021778092467\":1480585069073,\"1024114226942\":1509788624835,\"1025569607600\":1509788624349,\"1025531068781\":1509788624338,\"1021778092472\":1480585069073,\"1022354951684\":1509788624928,\"1024114226922\":1509788624916,\"4985892572\":1509788624156,\"1021778092449\":1480585069073,\"1022354951683\":1509788624928,\"1021691455131\":1478686417009,\"1021778092460\":1480585069073,\"1025625443101\":1509788624915,\"1021807587181\":1478686417255,\"1022068031248\":1478686417176,\"1021807587178\":1478686417255,\"1024114227480\":1509788625233,\"1024114227481\":1509788625233,\"1012199334695\":1478686417223,\"1010864149725\":1478686804025,\"1025180318057\":1509788624225,\"1025180318053\":1509788624225,\"1024114227473\":1509788625235,\"1021096900345\":1478686804067,\"1025180318054\":1509788624225,\"1025180318055\":1509788624225,\"1024114227475\":1509788625234,\"1024114227477\":1509788625234,\"1025180318050\":1509788624225,\"1000526085370\":1444487341750,\"1001175290440\":1478950494934,\"1024114227467\":1509788625235,\"1015071038986\":1478686804062,\"1024631380017\":1509788624938,\"1024114227469\":1509788625234,\"1024114227471\":1509788625234,\"1022324674490\":1478686417200,\"1019184858322\":1509788624959,\"1024114227457\":1509788625234,\"1025569603650\":1509788624349,\"1024210960206\":1509788624608,\"1024114227460\":1509788625234,\"1024114227462\":1509788625234,\"1024293008465\":1509788667902,\"1024293008468\":1509788667902,\"1024293008469\":1509788667902,\"1021002657866\":1478686417089,\"1009663384672\":1478686804030,\"1018296836088\":1478686804053,\"1021816365506\":1478686417256,\"1024293008448\":1509788667903,\"1019444253508\":1509788624921,\"1024293008456\":1509788667903,\"362323417\":1444487341751,\"1020150156574\":1478686804031,\"362323423\":1444487341737,\"1020402342940\":1478686804028,\"1024293008444\":1509788667903,\"1024735584163\":1509788624508,\"1024293008446\":1509788667903,\"142770381\":1444487341710,\"1014753840311\":1465470268313,\"1020150156556\":1478686804057,\"1025019227991\":1509788625007,\"1021760662800\":1478686417254,\"1021848871496\":1509788624993,\"362323406\":1444487341744,\"1018739996949\":1509788624367,\"1020150156545\":1478686804023,\"1020150156544\":1478686804057,\"1024333510534\":1509788624468,\"1021096900248\":1478686804067,\"1024985410939\":1509788624279,\"1021037523466\":1478686417092,\"1024985410943\":1509788624279,\"1024985410941\":1509788624279,\"1022055055187\":1478686417173,\"1024985410944\":1509788624279,\"1021409908896\":1478686804065,\"1021259304876\":1465470268198,\"1024735584097\":1509788624508,\"1022469638028\":1478686417219,\"1021761973690\":1478686417127,\"1021761973688\":1478686417127,\"1021761973687\":1478686417127,\"1022164759984\":1478686417186,\"142770207\":1444487341711,\"1022895235328\":1509788624927,\"1022043389633\":1478686417170,\"1019033865070\":1509788624388,\"1022895235334\":1509788624927,\"1022895235336\":1509788624927,\"1023987868201\":1509788625036,\"1022895235340\":1509788624927,\"1019302566772\":1509788624312,\"1022895235347\":1509788624927,\"1022895235348\":1509788624942,\"1022895235350\":1509788624927,\"1022895235351\":1509788624927,\"1022895235354\":1509788624927,\"1022895235356\":1509788624927,\"1019082493532\":1509788625018,\"1020626086493\":1478686804071,\"1024333510488\":1509788624429,\"1022895235358\":1509788624927,\"1020294071912\":1465470268287,\"1012322417462\":1480585069061,\"1025524518444\":1509788624193,\"1023722050227\":1509788624384,\"1023722050228\":1509788624384,\"1020764365428\":1478686417076,\"1025296314455\":1509788624978,\"1022138545167\":1478686417184,\"1025627014165\":1509788625167,\"1022021893494\":1478686417162,\"1024114227704\":1509788625237,\"1020596856927\":1478686416976,\"1024114227706\":1509788625237,\"1024114227708\":1509788625237,\"1024114227709\":1509788625237,\"1024114227711\":1509788625237,\"1022231873987\":1478686417282,\"1024114227698\":1509788625238,\"1021243576029\":1478686417100,\"1024114227700\":1509788625237,\"1024114227702\":1509788625237,\"1024114227690\":1509788625237,\"1024114227694\":1509788625238,\"1025406940947\":1509788624507,\"1024735584020\":1509788624508,\"1024114227683\":1509788625237,\"1022255729442\":1478686417067,\"1024114227685\":1509788625238,\"1024114227686\":1509788625238,\"1022192940896\":1478686417279,\"1024114227687\":1509788625237,\"1019204519098\":1478686804038,\"1019204519097\":1478686804038,\"1019204519096\":1478686804038,\"1019204519095\":1478686804038,\"1022147065168\":1478686417013,\"1022511324047\":1480585069127,\"1022434378793\":1480585069097,\"1022895235252\":1509788624927,\"1022895235259\":1509788624927,\"1022434378788\":1480585069097,\"1022434378789\":1480585069097,\"1022434378790\":1480585069097,\"1023957066089\":1509788624519,\"1022434378776\":1480585069097,\"1022939931190\":1509788625052,\"1022434378780\":1480585069097,\"1022434378768\":1480585069097,\"1024157220160\":1509788624459,\"1024157220161\":1509788624459,\"1024157220163\":1509788624459,\"1022434378772\":1480585069097,\"1022434378761\":1480585069097,\"1022434378765\":1480585069097,\"1025585725559\":1509788624352,\"1024576717919\":1509788624439,\"1021999217201\":1478686417157,\"1022434378756\":1480585069097,\"1022895235302\":1509788624927,\"1564791820\":1444487341737,\"1022895235305\":1509788624927,\"1022238821258\":1509788624947,\"1022238821259\":1509788624930,\"1022895235308\":1509788624927,\"1020440092507\":1464448510787,\"1022895235310\":1509788624927,\"1003975624741\":1478686417222,\"1022434378856\":1480585069097,\"1003975624740\":1478686417222,\"1022434378858\":1480585069097,\"1003975624742\":1478686417222,\"1022895235315\":1509788624927,\"1003975624737\":1478686417222,\"1000935032285\":1509788624469,\"1024157220157\":1509788624459,\"1003975624739\":1478686417222,\"1022895235320\":1509788624927,\"1024735583924\":1509788624508,\"1003975624745\":1478686417222,\"1022895235324\":1509788624927,\"1003975624744\":1478686417222,\"1003975624747\":1478686417222,\"1021708888875\":1478686804046,\"1022434378842\":1480585069097,\"1024114227323\":1509788625232,\"1022895235270\":1509788624927,\"1024114227327\":1509788625233,\"1003975624732\":1478686417221,\"1022434378833\":1480585069097,\"1024114227313\":1509788625233,\"1003975624734\":1478686417221,\"1022895235275\":1509788624928,\"1003975624729\":1478686417221,\"1003975624728\":1478686417221,\"1022895235278\":1509788624927,\"1003975624730\":1478686417221,\"1022895235280\":1509788624927,\"1022434378825\":1480585069097,\"1022895235283\":1509788624927,\"1024114227307\":1509788625232,\"1022434378828\":1480585069097,\"1024114227308\":1509788625233,\"1019204519114\":1478686804038,\"1022434378829\":1480585069097,\"1019204519113\":1478686804038,\"1022895235286\":1509788624927,\"1019204519112\":1478686804038,\"1019204519111\":1478686804038,\"1019204519110\":1478686804038,\"1019204519109\":1478686804038,\"1019204519108\":1478686804038,\"1022895235291\":1509788624927,\"1019204519107\":1478686804038,\"1024244379690\":1509788624948,\"1019204519106\":1478686804038,\"1019204519105\":1478686804038,\"1021309895490\":1465470268202,\"1021293772872\":1478686416981,\"1019204519104\":1478686804038,\"1022434378823\":1480585069097,\"1021454998042\":1478686417107,\"1022245899253\":1478686417195,\"1021473218019\":1478686417045,\"1024114227354\":1509788625232,\"1020875651462\":1478686417031,\"1009785541253\":1478686804025,\"1024114227344\":1509788625232,\"1024114227349\":1509788625232,\"1024114227336\":1509788625232,\"1024114227339\":1509788625232,\"1024114227341\":1509788625232,\"1024114227329\":1509788625233,\"1024114227331\":1509788625233,\"1024114227334\":1509788625232,\"1020150156541\":1478686804031,\"1025214659264\":1509788624536,\"1024114227384\":1509788625233,\"1024189988660\":1509788667888,\"1022031723679\":1509788624466,\"1024114227388\":1509788625233,\"1024114227389\":1509788625233,\"1020937125331\":1478686417083,\"1024114227390\":1509788625232,\"1024114227378\":1509788625233,\"1024114227380\":1509788625233,\"1022511323951\":1480585069127,\"1020551763171\":1478686804035,\"1023730831964\":1509788624960,\"1024114227373\":1509788625233,\"1024114227361\":1509788625232,\"1020937125327\":1478686417083,\"1024114227365\":1509788625233,\"1021157591279\":1478686804064,\"1024028501492\":1509788624517,\"1024114227416\":1509788625233,\"1024937830945\":1509788625171,\"1024028501488\":1509788624517,\"1024114227420\":1509788625235,\"1024028501489\":1509788624517,\"1026223924881\":1514456869766,\"1024937830956\":1509788625171,\"1024653400890\":1509788624178,\"1021847299046\":1509788624510,\"1024937830964\":1509788625170,\"1024937830965\":1509788625170,\"1019300076094\":1509788624281,\"1024114227392\":1509788625232,\"1024028501486\":1509788624517,\"1024028501487\":1509788624517,\"1024028501480\":1509788624517,\"1024937830972\":1509788625171,\"1025627669788\":1509788624866,\"1024937830974\":1509788625171,\"1024028501483\":1509788624517,\"1021847299029\":1509788624510,\"1024114227449\":1509788625234,\"1020801721736\":1478686417030,\"1020763579214\":1478686417224,\"1019386712359\":1509788624317,\"1024114227453\":1509788625234,\"1024114227455\":1509788625234,\"1024028501471\":1509788624517,\"1024114227444\":1509788625234,\"1021229944592\":1478686416978,\"1021631550688\":1509788624396,\"1024937830930\":1509788625171,\"1024114227434\":1509788625234,\"1024114227435\":1509788625234,\"1024114227437\":1509788625233,\"1016298350849\":1480585069073,\"1022067769062\":1509788624183,\"1024735583769\":1509788624508,\"1024937830936\":1509788625171,\"1024114227424\":1509788625235,\"1022456661565\":1478686417016,\"1024114227425\":1509788625234,\"1024114227427\":1509788625234,\"1019033864759\":1509788624374,\"1024114227993\":1509788625238,\"1024114227995\":1509788625238,\"1025180580728\":1509788625163,\"1025180580729\":1509788625163,\"1025546276270\":1509788624523,\"1025180580730\":1509788625163,\"1025546276271\":1509788624517,\"1022132515105\":1478686417063,\"1025546276264\":1509788624523,\"1020925196569\":1478686417228,\"2069295425\":1444487341745,\"1025772117567\":1509788625114,\"1020833965189\":1478686417031,\"1024114227971\":1509788625238,\"1025180580724\":1509788625162,\"1020925196562\":1478686417228,\"1025546276257\":1509788624518,\"1024114227973\":1509788625238,\"1025546276258\":1509788624518,\"1021972871321\":1478686417150,\"1011803889397\":1478686804015,\"1024114228016\":1509788625239,\"1024114228017\":1509788625238,\"1024114228019\":1509788625238,\"1025019227434\":1509788625006,\"1024114228021\":1509788625238,\"1008521730640\":1478686804015,\"1024028501508\":1509788624517,\"1022896808889\":1509788625018,\"1024028501510\":1509788624517,\"1024114228011\":1509788625239,\"1024028501504\":1509788624517,\"1022502148922\":1509788624936,\"1022502148923\":1509788624936,\"1020294202525\":1465470268296,\"1024114228014\":1509788625239,\"1024028501507\":1509788624517,\"1022502148921\":1509788624935,\"1024114228015\":1509788625239,\"1024114228000\":1509788625238,\"1024028501518\":1509788624517,\"1024114228003\":1509788625239,\"1021746376197\":1478686417254,\"1024028501512\":1509788624517,\"1024028501514\":1509788624517,\"1024114228006\":1509788625239,\"1024028501515\":1509788624517,\"1022502148943\":1509788624935,\"1022239869074\":1478686416989,\"1022502148935\":1509788624935,\"1022502148930\":1509788624936,\"1022502148958\":1509788624936,\"1022502148959\":1509788624936,\"1022502148957\":1509788624936,\"1022502148954\":1509788624936,\"1022502148955\":1509788624936,\"1022502148952\":1509788624936,\"1248510013\":1491634246505,\"1022502148950\":1509788624936,\"1022502148949\":1509788624936,\"1025627670175\":1509788624845,\"1022502148947\":1509788624936,\"1025627670172\":1509788624845,\"1025627670178\":1509788624845,\"1025772117570\":1509788625106,\"1025772117571\":1509788625087,\"1025627670180\":1509788624845,\"1025627670181\":1509788624845,\"1010011382749\":1491634246525,\"1025627670185\":1509788624845,\"1022502148965\":1509788624936,\"1024587072676\":1509788667888,\"1022502148963\":1509788624936,\"1025627670188\":1509788624845,\"1022502148960\":1509788624936,\"1021644133411\":1509788624818,\"4957842932\":1509788624156,\"1025636058677\":1509788625019,\"1022197003556\":1478686417064,\"1025623736734\":1509788624366,\"1025623736735\":1509788624366,\"1025623736733\":1509788624366,\"1012905172921\":1478950494940,\"1022391255352\":1478686417070,\"1020801984243\":1478686417077,\"1025798200364\":1509788624203,\"1664412067\":1491634246519,\"1021981915307\":1478686417263,\"1022391255348\":1478686417070,\"1023856011484\":1491634246537,\"1023856011485\":1491634246533,\"1025623736764\":1509788624365,\"1025623736762\":1509788624365,\"1025623736763\":1509788624365,\"1023856011482\":1491634246537,\"1025623736760\":1509788624366,\"1025623736761\":1509788624365,\"1025623736758\":1509788624366,\"1025623736759\":1509788624366,\"1021981915289\":1478686417263,\"1021981915294\":1478686417263,\"1021981915293\":1478686417263,\"1021981915292\":1478686417263,\"1801773524\":1444487341739,\"1021011833681\":1478686416988,\"1023946452392\":1491634246531,\"1023946452394\":1491634246531,\"1023946452395\":1491634246531,\"1025027482161\":1509788624945,\"1023988523052\":1509788625036,\"1025523863465\":1509788624867,\"309106897\":1491634246533,\"1022384177395\":1478686417015,\"1021338732194\":1478686417005,\"1021860929932\":1509788624992,\"1012605143519\":1478686416994,\"1021755551553\":1478686417126,\"1021580038383\":1478686416992,\"1025180580743\":1509788625162,\"142770802\":1444487341710,\"1019146060745\":1509788624313,\"1021644133538\":1509788624420,\"4973437577\":1509788624154,\"1025623736806\":1509788624365,\"1008957153435\":1478686804030,\"1025623736807\":1509788624365,\"1025623736804\":1509788624365,\"1025623736805\":1509788624365,\"1025623736803\":1509788624365,\"1001517524239\":1444487341750,\"1022473706434\":1478943089223,\"1007103440868\":1478686804023,\"1021460633638\":1478686417108,\"1024114227729\":1509788625237,\"1024114227730\":1509788625237,\"1679879980\":1491634246510,\"1024114227720\":1509788625238,\"1020985621632\":1478686804039,\"1024114227721\":1509788625238,\"1024114227723\":1509788625238,\"1024114227724\":1509788625238,\"1024114227726\":1509788625238,\"1025772117809\":1509788624203,\"1024730733888\":1509788624507,\"1024114227713\":1509788625237,\"1024114227714\":1509788625238,\"1021467975630\":1478686417007,\"1024114227719\":1509788625238,\"328243376\":1478686804024,\"1021906675118\":1478686417140,\"1023856273755\":1491634246537,\"1018387142480\":1478686804066,\"1022252845249\":1478686417066,\"1021939448718\":1478686417260,\"1020933849021\":1478686417033,\"1021906675121\":1478686417140,\"1021906675120\":1478686417140,\"1025524518359\":1509788624193,\"1664411767\":1491634246519,\"1025524518317\":1509788624193,\"1022049680704\":1509788624439,\"1021681232725\":1509788624400,\"1019372821756\":1509788624354,\"1021012226739\":1465470268305,\"1021912704287\":1478686417140,\"1021647934805\":1478686804069,\"1025685101\":1478686417020,\"1021883213632\":1478686417137,\"1022213786372\":1478686417064,\"1021609662236\":1509788624404,\"1022154667685\":1478686417185,\"1012186882199\":1478686416994,\"1021865255038\":1509788624402,\"1024245166672\":1509788624948,\"1022473706427\":1478943089223,\"1022473706428\":1478943089223,\"1021291545131\":1478686417102,\"1022336992102\":1478686417201,\"1021700499825\":1478686804032,\"1022235282079\":1478686417193,\"1862329484\":1444487341727,\"1024167575144\":1509788667829,\"1021687786008\":1509788624396,\"1022072615693\":1478686417060,\"142770991\":1444487341710,\"1021663007902\":1509788624997,\"1025524518233\":1509788624193,\"1022450894217\":1478686417215,\"1021647934883\":1478686804069,\"1021157198565\":1478686417038,\"1022032772789\":1478686417166,\"1009983859951\":1478686804061,\"1021500480771\":1509788624398,\"1024114227932\":1509788625238,\"1227014885\":1444487341745,\"1021701417217\":1478686416989,\"1021701417220\":1478686416989,\"1862329555\":1444487341727,\"1021963565816\":1478686417148,\"1025007561741\":1509788624343,\"1025857311460\":1509788667843,\"1025857311461\":1509788667844,\"1021575188887\":1509788625084,\"1022236461316\":1478686417282,\"1024114227960\":1509788625239,\"1022236461318\":1478686417282,\"1024114227962\":1509788625239,\"1024114227963\":1509788625238,\"1024114227966\":1509788625238,\"1024114227967\":1509788625238,\"1024114227944\":1509788625238,\"1025798200649\":1509788624425,\"1024062580217\":1509788624326,\"1024114227949\":1509788625238,\"1024114227937\":1509788625239,\"1025524518164\":1509788624193,\"1000526085909\":1444487341712,\"1024114227941\":1509788625239,\"1023722051199\":1509788624384,\"1022400956199\":1478686417207,\"1025049371977\":1509788625097,\"1025049371982\":1509788625097,\"1021806797972\":1478686417131,\"1025646543290\":1509788624337,\"1025049371970\":1509788625097,\"1022400956207\":1478686417207,\"1025049371971\":1509788625097,\"1016502821052\":1478686804022,\"1022400956202\":1478686417207,\"1022178128476\":1478686417278,\"1022511324842\":1480585069127,\"1021920699390\":1509788625019,\"1022146539634\":1478686417277,\"1021385917431\":1478686417042,\"1025798200053\":1509788624827,\"1017545909973\":1480585069078,\"1019118797972\":1509788624317,\"1012582469163\":1478686417026,\"1020951280067\":1478686417085,\"1021428391250\":1478686417106,\"1021014717879\":1478686416987,\"1022400956226\":1478686417207,\"1023924431408\":1509788624969,\"1024024043526\":1509788624277,\"1017770572723\":1478686804022,\"1025627668548\":1509788624230,\"1022238690899\":1509788624947,\"1022238690900\":1509788624971,\"1022238690901\":1509788624930,\"1022295968224\":1478686417199,\"1021833143878\":1478686417134,\"1021833143872\":1478686417134,\"1023924431614\":1509788624969,\"1021385917196\":1478686417042,\"1022094243266\":1478686417274,\"1001056935822\":1478686804029,\"1021320120133\":1465470268210,\"1021952294194\":1478686417146,\"1022094243252\":1478686417274,\"1022094243254\":1478686417274,\"1021833143868\":1478686417134,\"1021833143870\":1478686417134,\"1021428522458\":1478686417044,\"1022237249056\":1509788624288,\"1022239739405\":1478686417014,\"1022237249048\":1509788624299,\"1022237249041\":1509788624300,\"1022237249042\":1509788624301,\"1022237249033\":1509788624300,\"1022237249036\":1509788624301,\"1023722051200\":1509788624384,\"1023722051201\":1509788624384,\"1023722051202\":1509788624384,\"1023722051203\":1509788624384,\"1023722051204\":1509788624384,\"1022237249029\":1509788624300,\"1023722051205\":1509788624384,\"1022237249031\":1509788624300,\"1022457447128\":1480585069105,\"1020136655117\":1480585069063,\"1023835040958\":1491634246533,\"1020616649872\":1478686417027,\"1022457447133\":1480585069105,\"1021501004767\":1478686804071,\"1022457447120\":1480585069105,\"1022457447121\":1480585069105,\"1022457447122\":1480585069105,\"1022718153508\":1509788624367,\"1022457447124\":1480585069105,\"1022457447125\":1480585069105,\"1022457447126\":1480585069105,\"1503581329\":1444487341717,\"1022457447116\":1480585069105,\"1022457447118\":1480585069105,\"1022457447119\":1480585069105,\"1021027431479\":1478686417231,\"1021561033733\":1509788624397,\"1024156432816\":1509788667500,\"1025489784380\":1509788625082,\"1021396140599\":1478686417240,\"1025879987945\":1509788667404,\"1021529578035\":1509788624912,\"1021501004769\":1478686804071,\"1021501004768\":1478686804071,\"1021501004771\":1478686804071,\"1020294071186\":1465470268287,\"1020783503014\":1478686417029,\"1021501004770\":1478686804071,\"1022457447139\":1480585069105,\"1021475969383\":1478686417109,\"1021647934246\":1478686804046,\"1022457447141\":1480585069105,\"1022457447143\":1480585069105,\"1022457447065\":1480585069112,\"1023937276613\":1509788667833,\"417109406\":1478950494909,\"1022457447066\":1480585069112,\"1022457447067\":1480585069112,\"1022457447068\":1480585069112,\"1022457447069\":1480585069112,\"1008959383302\":1478686804054,\"1022457447071\":1480585069112,\"1022457447059\":1480585069112,\"1022457447060\":1480585069112,\"1022457447061\":1480585069112,\"1021534557591\":1478686417113,\"1022457447062\":1480585069112,\"1021314221735\":1478686417102,\"1022457447042\":1480585069112,\"1022483537268\":1478943089488,\"1008733409465\":1444487341757,\"1776215226\":1478686417017,\"1008733409470\":1444487341757,\"1021529578092\":1509788624912,\"1021160868973\":1478686417038,\"1021641118476\":1509788624206,\"1021816366237\":1478686417256,\"1022457447083\":1480585069112,\"1022457447084\":1480585069112,\"1022457447085\":1480585069112,\"1022457447086\":1480585069112,\"1025772116305\":1509788624828,\"1024007792135\":1509788667830,\"1023577873514\":1509788624939,\"1000116606475\":1478686804033,\"1024002942657\":1491634246518,\"1022457447079\":1480585069112,\"1022331751122\":1509788625082,\"1022331751123\":1509788625082,\"1025627668804\":1509788624212,\"1022331751120\":1509788625082,\"1022331751121\":1509788625082,\"1025627668810\":1509788624212,\"1025627668812\":1509788624212,\"1022457446984\":1480585069112,\"1022457446985\":1480585069112,\"1021156805838\":1478686417234,\"1021160344732\":1478686417097,\"1018669473812\":1509788625017,\"1022457446977\":1480585069112,\"1022331751119\":1509788625082,\"1022457446979\":1480585069112,\"1009839805012\":1491634246518,\"1022457446980\":1480585069112,\"1024632823186\":1509788625008,\"1022457447032\":1480585069112,\"1022511324967\":1480585069127,\"1022457447038\":1480585069112,\"228229170\":1444487341748,\"1022457447024\":1480585069112,\"1022457447025\":1480585069112,\"1022457447026\":1480585069112,\"1012322418270\":1480585069061,\"1022457447027\":1480585069112,\"1022457447028\":1480585069112,\"1022457447029\":1480585069112,\"1022457447017\":1480585069112,\"1022457447019\":1480585069112,\"1022457447020\":1480585069112,\"1022096733421\":1478686417275,\"1022457447022\":1480585069112,\"4973438411\":1509788624153,\"1022078383567\":1478686417272,\"1022457447012\":1480585069112,\"1022457447013\":1480585069112,\"1022346036664\":1478686804042,\"1022346036665\":1478686804042,\"1021387489883\":1478686417006,\"1021160344781\":1478686417097,\"1022346036666\":1478686804042,\"1022346036667\":1478686804042,\"1022346036662\":1478686804042,\"1022404493613\":1478686417015,\"1022346036652\":1478686804042,\"1022346036653\":1478686804042,\"1000237723626\":1444487341762,\"1022346036654\":1478686804042,\"1022346036655\":1478686804042,\"1022346036648\":1478686804042,\"1022032771294\":1478686417166,\"1022346036649\":1478686804042,\"1022346036650\":1478686804042,\"1022032771292\":1478686417166,\"1022346036651\":1478686804042,\"1022346036645\":1478686804042,\"1022346036646\":1478686804042,\"1022346036647\":1478686804042,\"1022346036640\":1478686804042,\"1022346036641\":1478686804042,\"1023924431765\":1509788624969,\"1022346036642\":1478686804042,\"1022346036643\":1478686804042,\"1022346036636\":1478686804041,\"1022457446968\":1480585069112,\"1000527788307\":1444487341756,\"1022346036637\":1478686804041,\"1021469153602\":1478686804050,\"1022457446969\":1480585069112,\"1022346036638\":1478686804041,\"1022346036639\":1478686804041,\"1020857295583\":1478686417227,\"1022346036632\":1478686804041,\"1022346036633\":1478686804041,\"1022346036634\":1478686804041,\"1022346036635\":1478686804041,\"1022346036628\":1478686804041,\"1022457446960\":1480585069112,\"1022346036629\":1478686804041,\"1022346036630\":1478686804041,\"1022346036631\":1478686804041,\"1022457446963\":1480585069112,\"1022346036625\":1478686804041,\"1022346036626\":1478686804041,\"1022346036627\":1478686804041,\"1022457446967\":1480585069112,\"1022457446954\":1480585069112,\"1022346036617\":1478686804041,\"1025627668791\":1509788624212,\"1022346036618\":1478686804041,\"1022457446944\":1480585069112,\"1025627668794\":1509788624212,\"1022065146560\":1478686417174,\"1020573127665\":1478686417074,\"1022457446946\":1480585069112,\"1022346036615\":1478686804041,\"1025627668793\":1509788624212,\"1022457446948\":1480585069112,\"1025627668798\":1509788624212,\"1022457446951\":1480585069112,\"4985890605\":1509788624153,\"1021470726798\":1509788624405,\"1024632823298\":1509788625008,\"1021535737508\":1478686417113,\"1020945251305\":1478686417084,\"1020945251307\":1478686417084,\"1022470291719\":1478686417073,\"1020148845413\":1509788624302,\"1008375056682\":1478686804023,\"1020945251299\":1478686417084,\"1022457446904\":1480585069112,\"1025910789058\":1509788667579,\"1022457446906\":1480585069112,\"4973438546\":1509788624153,\"1022457446908\":1480585069112,\"1025798592660\":1509788624420,\"1025910789061\":1509788667579,\"1024461375598\":1509788624217,\"1022454825417\":1478686417297,\"1024461375599\":1509788624217,\"1021860930927\":1509788624992,\"1022457446900\":1480585069112,\"1022457446902\":1480585069112,\"1017143385275\":1465470268268,\"1022457446888\":1480585069111,\"1020853494083\":1478686417078,\"1022457446891\":1480585069111,\"1024461375602\":1509788624217,\"1022457446894\":1480585069111,\"1024461375600\":1509788624217,\"1022457446895\":1480585069112,\"1024461375601\":1509788624217,\"1022457446881\":1480585069111,\"1022457446883\":1480585069111,\"1022457446884\":1480585069111,\"1022457446885\":1480585069111,\"1022457446886\":1480585069111,\"1022457446887\":1480585069111,\"1019384223396\":1509788624933,\"1022434378619\":1480585069096,\"1022457446811\":1480585069111,\"1024735582637\":1509788624915,\"1022434378620\":1480585069097,\"1022434378623\":1480585069097,\"1022457446815\":1480585069111,\"1022457446804\":1480585069111,\"1024005170645\":1491634246533,\"1024005170646\":1491634246533,\"1776215953\":1478686417017,\"1022457446792\":1480585069111,\"225739558\":1478686804032,\"1022457446794\":1480585069111,\"1022251928650\":1509788624304,\"1022457446784\":1480585069111,\"1015982982136\":1478686804046,\"1022457446788\":1480585069111,\"1022384571473\":1478686417205,\"1021173451809\":1465470268184,\"1021173451808\":1465470268184,\"1024735582605\":1509788624915,\"1021173451814\":1465470268185,\"1021173451813\":1465470268184,\"1021173451816\":1465470268185,\"1022434378683\":1480585069097,\"1022343677450\":1478686417289,\"1024735582562\":1509788624915,\"1022248258754\":1478686417196,\"1022457446730\":1480585069111,\"1021769050193\":1509788624395,\"1022457446720\":1480585069111,\"1022457446721\":1480585069111,\"1022457446722\":1480585069111,\"1022457446723\":1480585069111,\"1022457446724\":1480585069111,\"1022457446725\":1480585069111,\"1000249126152\":1478950494932,\"1022457446727\":1480585069111,\"1022434378648\":1480585069097,\"1022457446777\":1480585069111,\"1021715311798\":1509788624395,\"1025214660037\":1509788624197,\"1022595602745\":1509788624384,\"1020833833013\":1478686416998,\"1022457446768\":1480585069111,\"1025798592538\":1509788624534,\"1022021892868\":1478686417162,\"1022434378641\":1480585069097,\"1022457446771\":1480585069111,\"1022434378645\":1480585069097,\"1022434378646\":1480585069097,\"1022457446774\":1480585069111,\"1020712462711\":1509788624363,\"1022434378632\":1480585069097,\"1022434378633\":1480585069097,\"1018546792513\":1480585069063,\"1022434378634\":1480585069097,\"1022457446762\":1480585069111,\"1022457446765\":1480585069111,\"1018599352088\":1509788624359,\"1022434378638\":1480585069097,\"1022434378626\":1480585069097,\"1025798199298\":1509788624523,\"1022457446757\":1480585069111,\"1022434378630\":1480585069097,\"1022457446759\":1480585069111,\"1024184219660\":1509788624551,\"1024735582510\":1509788624915,\"1801774501\":1444487341742,\"1022443159667\":1478686417295,\"1019949676432\":1509788624386,\"1016847945459\":1478686804018,\"1022457446683\":1480585069111,\"1021151432567\":1509788624933,\"1021151432566\":1509788624933,\"1022434378750\":1480585069097,\"1022434378751\":1480585069097,\"1021151432564\":1509788624933,\"1022457446672\":1480585069111,\"1801774509\":1444487341737,\"1006037021273\":1478686804049,\"1024194443418\":1509788625250,\"1022457446675\":1480585069111,\"1021151432568\":1509788624933,\"1022457446676\":1480585069111,\"1022457446677\":1480585069111,\"1022457446678\":1480585069111,\"1022457446679\":1480585069111,\"1022439489563\":1478686417214,\"1022457446665\":1480585069111,\"1025798592608\":1509788624195,\"1025497516626\":1509788624367,\"1022457446671\":1480585069111,\"1022457446658\":1480585069111,\"1022457446659\":1480585069111,\"1022457446660\":1480585069111,\"1022457446661\":1480585069111,\"1020883255121\":1478686417227,\"1022457446662\":1480585069111,\"1008054844149\":1480585069062,\"1022147064506\":1478686417013,\"1021869449766\":1478686804026,\"1022457446713\":1480585069111,\"1022434378714\":1480585069097,\"1022457446714\":1480585069111,\"1023830191876\":1509788667494,\"1022434378715\":1480585069097,\"1022434378716\":1480585069097,\"1022457446717\":1480585069111,\"1022434378718\":1480585069097,\"1022457446718\":1480585069111,\"1022434378719\":1480585069097,\"1022457446704\":1480585069111,\"1022457446706\":1480585069111,\"1022457446709\":1480585069111,\"1022434378711\":1480585069097,\"1022434378696\":1480585069097,\"1021860930999\":1509788624992,\"1021985324300\":1478686417057,\"1022434378703\":1480585069097,\"1022434378688\":1480585069097,\"1022434378692\":1480585069097,\"1022434378693\":1480585069097,\"1022434378695\":1480585069097,\"1025584678514\":1509788624297,\"1025465929062\":1509788624349,\"1021154446944\":1478686417002,\"1021906542991\":1509788624194,\"795254894\":1491634246517,\"795254893\":1491634246517,\"1022766394974\":1509788625056,\"1025605387558\":1509788625104,\"1010024621543\":1491634246521,\"1010024621542\":1491634246521,\"1021965008404\":1509788624997,\"795254848\":1491634246517,\"1025772116744\":1509788624540,\"1022087165688\":1478686417179,\"1021609923437\":1478686417246,\"1022224010896\":1509788624938,\"1021906543032\":1509788624817,\"1021154446936\":1478686417002,\"1021618836113\":1509788624401,\"1022594554051\":1480585069074,\"1021948362603\":1478686417145,\"1022470553674\":1478686417219,\"795254843\":1491634246517,\"1022065670254\":1478686417175,\"1017800062482\":1478686804016,\"1000814447290\":1478686804059,\"1000814447294\":1478686804059,\"1025879463079\":1509788667669,\"1022811483094\":1509788624389,\"1025879463080\":1509788667674,\"1022069602200\":1509788624943,\"1024782374486\":1509788625019,\"1024735582361\":1509788624915,\"1024451414409\":1509788624957,\"1022119539847\":1478686417183,\"1688005602\":1480585069060,\"1024194443740\":1509788625249,\"1024194443741\":1509788625249,\"1024194443742\":1509788625249,\"1024194443743\":1509788625249,\"1022998388744\":1509788625049,\"1018556230102\":1509788624309,\"1025607746948\":1509788625083,\"1021751224943\":1509788624395,\"1025772116923\":1509788624431,\"1023881440091\":1509788625038,\"1019033865324\":1509788624388,\"1024194443744\":1509788625249,\"1024194443745\":1509788625249,\"1024194443746\":1509788625249,\"1010024621430\":1491634246521,\"1010024621437\":1491634246527,\"1019949676161\":1509788624386,\"1021741525942\":1478686417125,\"1025473531339\":1509788624352,\"1022191366252\":1478686416976,\"1023096568385\":1509788625162,\"1023096568386\":1509788625162,\"1023096568387\":1509788625162,\"1023096568388\":1509788625162,\"143689594\":1444487341720,\"1023924431266\":1509788624969,\"1020654136486\":1478686804057,\"1025322399461\":1509788624309,\"887798557\":1444487341732,\"1022658253881\":1509788625074,\"1018989563795\":1509788624314,\"887798551\":1444487341726,\"1023008088295\":1509788624538,\"1024763627584\":1509788625069,\"1021153923437\":1478686417300,\"1023049376411\":1509788624358,\"1023049376413\":1509788624358,\"1023049376414\":1509788624358,\"1021346733563\":1478686417041,\"1013564468697\":1478686804030,\"1022543430822\":1509788625064,\"1021659598693\":1509788624615,\"1021659598695\":1509788624616,\"1021635350271\":1478686417049,\"1021966180646\":1509788624464,\"1024434247105\":1509788625216,\"1021659598700\":1509788624616,\"1022816728165\":1509788625074,\"1025815234463\":1509788667452,\"1021659598697\":1509788624616,\"1017583139951\":1478686804019,\"1021659598710\":1509788624616,\"1021997114143\":1478686417265,\"1021659598704\":1509788624616,\"1021774689886\":1509788624534,\"1021659598706\":1509788624616,\"1021659598716\":1509788624615,\"1021659598718\":1509788624615,\"1021659598713\":1509788624616,\"1022240920221\":1478686417066,\"1021537700022\":1509788624397,\"1025874610762\":1509788667581,\"1024434247077\":1509788625216,\"1021283555729\":1465469681395,\"1020734879781\":1509788624959,\"1024434247079\":1509788625216,\"1024434247072\":1509788625216,\"1025874610765\":1509788667581,\"1024434247085\":1509788625216,\"1025033910381\":1509788624451,\"1024434247087\":1509788625216,\"1025593858699\":1509788624566,\"1024434247083\":1509788625216,\"1024434247094\":1509788625217,\"1025487426411\":1509788624367,\"1025033910384\":1509788624427,\"1024434247090\":1509788625216,\"1020971197973\":1478686417086,\"1024434247097\":1509788625216,\"1020556873053\":1478686417017,\"1024215935158\":1509788625033,\"1024434247098\":1509788625217,\"1024434247099\":1509788625216,\"1020938429475\":1478686416975,\"1023846445707\":1491634246537,\"1023846445702\":1491634246520,\"1024434247052\":1509788625216,\"1024244640059\":1509788624948,\"1022067369840\":1478686417012,\"1023646680730\":1509788624817,\"1024434247062\":1509788625217,\"1024434247063\":1509788625217,\"1020176111525\":1509788624361,\"1024434247056\":1509788625217,\"1020176111524\":1509788624361,\"1024434247059\":1509788625217,\"1022177734175\":1478686417278,\"1024434247068\":1509788625216,\"1025033910367\":1509788624510,\"1524681371\":1444487341749,\"1025033910365\":1509788624509,\"1024434247064\":1509788625217,\"1024434247065\":1509788625216,\"1524681374\":1444487341723,\"1024434247066\":1509788625217,\"1024434247067\":1509788625216,\"1024557980673\":1509788624412,\"1024557980675\":1509788624412,\"1023207320459\":1509788625043,\"1025033910405\":1509788624434,\"1025033910400\":1509788624434,\"572175026\":1478950494911,\"329679628\":1509788625019,\"1025033910413\":1509788624434,\"1022164757895\":1478686417186,\"1025033910408\":1509788624434,\"1020854157307\":1478686416999,\"1020928992323\":1478686417082,\"1021933289383\":1509788624195,\"1025188307364\":1509788624273,\"1025530156548\":1509788624335,\"1025033910431\":1509788624456,\"1025033910426\":1509788624434,\"1021769315938\":1509788624395,\"1025023948899\":1509788624974,\"1021659598724\":1509788624615,\"1021659598726\":1509788624615,\"1022067763156\":1509788624183,\"1009012342270\":1478686804069,\"1025593858560\":1509788624550,\"1021659598722\":1509788624615,\"1025593858561\":1509788625000,\"1021659598733\":1509788624615,\"1021659598732\":1509788624615,\"1021659598734\":1509788624616,\"1020799499332\":1478686417030,\"1023630034234\":1491634246515,\"1021659598743\":1509788624616,\"1021659598737\":1509788624616,\"1021972865644\":1478686417150,\"1005946971930\":1480585069062,\"1018947481089\":1509788624282,\"1018908552110\":1509788624930,\"5025610620\":1514456869764,\"1022327428972\":1478686417200,\"1022469382142\":1478686417219,\"1024434246885\":1509788624497,\"1023919978382\":1509788624969,\"1024434246881\":1509788624497,\"1021659598413\":1509788624564,\"1021700371440\":1478686804046,\"1024434246895\":1509788624497,\"1022086375672\":1478686417062,\"1024434246890\":1509788624497,\"1021986890440\":1478686417154,\"1024434246900\":1509788624497,\"1021166244796\":1465470268184,\"1024434246901\":1509788624497,\"1024434246902\":1509788624497,\"1024689178054\":1509788624467,\"1023919978392\":1509788624969,\"1023919978393\":1509788624969,\"1024519576539\":1509788625027,\"1024434246898\":1509788624498,\"1024434246899\":1509788624497,\"1023919978388\":1509788624969,\"1021659598427\":1509788624552,\"1023919978386\":1509788624969,\"1024434246854\":1509788624497,\"1024434246861\":1509788624497,\"1024434246856\":1509788624497,\"1024434246857\":1509788624497,\"1024434246858\":1509788624497,\"1024434246868\":1509788624497,\"1024434246865\":1509788624497,\"1024154330498\":1509788667659,\"1021761975316\":1478686417127,\"1024434246873\":1509788624497,\"1021761975313\":1478686417127,\"5025610418\":1514456869765,\"1022208676295\":1478686804066,\"550023558\":1478686417019,\"1021659598356\":1509788624552,\"1025090796952\":1509788624959,\"1024434246847\":1509788624497,\"1024434246840\":1509788624497,\"1024434246841\":1509788624498,\"5000313685\":1509788667392,\"1024434246843\":1509788624498,\"1022233317463\":1478686416976,\"1016930391109\":1478686804016,\"1017955652479\":1509788624372,\"1025405759340\":1509788625020,\"1022470430304\":1478686417299,\"1020556872821\":1478686417017,\"1022389164721\":1478686417205,\"1022450245465\":1478686417296,\"1016847946164\":1478686804018,\"1021659598541\":1509788624564,\"1024154330428\":1509788667658,\"1024434771062\":1509788624465,\"1024154330430\":1509788667659,\"1025879984726\":1509788667404,\"1017828633133\":1509788625080,\"1022157024317\":1478686417185,\"1021659598554\":1509788624552,\"1024723650315\":1509788667888,\"1022016644524\":1509788624867,\"1020863455594\":1509788625002,\"1022069074250\":1478686417060,\"1021811784094\":1478686417131,\"1012144814504\":1478686417223,\"1021156544657\":1478686417038,\"1024154330469\":1509788667658,\"1021156544659\":1478686417038,\"1021156544662\":1478686417038,\"1020791634649\":1478686417077,\"1024154330477\":1509788667658,\"1024154330478\":1509788667659,\"1024154330475\":1509788667659,\"1024154330453\":1509788667659,\"1024154330454\":1509788667659,\"1021968540444\":1509788625068,\"1024154330451\":1509788667658,\"1025910918155\":1509788667579,\"1024154330463\":1509788667659,\"1025910918156\":1509788667579,\"1024154330456\":1509788667659,\"1025910918157\":1509788667579,\"1025910918158\":1509788667579,\"1024154330458\":1509788667658,\"1022208676195\":1478686804066,\"1025910918159\":1509788667579,\"1024154330459\":1509788667659,\"1024154330438\":1509788667659,\"1009714890410\":1491634246520,\"1024154330435\":1509788667658,\"1012144683413\":1478686417073,\"1009714890405\":1491634246520,\"1024999438249\":1509788624996,\"1024154330441\":1509788667658,\"1024154330443\":1509788667659,\"1018993103444\":1478686804053,\"1025509054454\":1509788667537,\"1020145178508\":1509788624276,\"1025509054451\":1509788667537,\"1023171537700\":1509788624254,\"1025509054456\":1509788667830,\"1021989904827\":1478686417155,\"1018597260227\":1509788624171,\"1025509054459\":1509788667537,\"1023171537722\":1509788624254,\"1024557981334\":1509788624412,\"1025714963350\":1509788625123,\"1004789588176\":1480585069067,\"1025714963349\":1509788625114,\"1025902661221\":1509788667466,\"327451032\":1444487341726,\"1021537700500\":1509788624401,\"1024557981338\":1509788624412,\"1022208676526\":1478686804066,\"1024557981351\":1509788624412,\"1022318646331\":1478686417200,\"1024557981346\":1509788624412,\"1022470816453\":1478686804065,\"1024557981358\":1509788624412,\"1000527783646\":1444487341712,\"1024557981354\":1509788624412,\"1024557981355\":1509788624412,\"1025556370739\":1509788624341,\"1021047220726\":1478686417036,\"1724052726\":1444487341754,\"1022005110425\":1478686417266,\"1023171537692\":1509788624254,\"1024557981361\":1509788624412,\"1023171537682\":1509788624254,\"1024557981374\":1509788624412,\"1024557981368\":1509788624412,\"1021409509996\":1509788624179,\"1024557981381\":1509788624412,\"1018850749072\":1509788625079,\"1021409509998\":1509788624179,\"1023171537771\":1509788624254,\"1024587996318\":1509788624170,\"1024557981378\":1509788624412,\"1023171537775\":1509788624254,\"1024434247587\":1509788624258,\"1024434247592\":1509788624258,\"1020735404594\":1478686416984,\"1023171537765\":1509788624254,\"1018993103365\":1478686804051,\"1018993103364\":1478686804051,\"1022208676573\":1478686804066,\"1018993103366\":1478686804051,\"1021409510014\":1509788624178,\"1023626626651\":1509788624552,\"1023171537789\":1509788624254,\"1018993103363\":1478686804051,\"1018993103362\":1478686804051,\"1021409510010\":1509788624179,\"1021659598098\":1509788624552,\"1023820624577\":1491634246535,\"1021409510004\":1509788624179,\"1021409510006\":1509788624179,\"1023171537779\":1509788624254,\"1018805397304\":1509788624929,\"1021409510003\":1509788624179,\"1023171537782\":1509788624254,\"1021409510002\":1509788624179,\"1024434247556\":1509788624258,\"1024434247558\":1509788624258,\"1021659598118\":1509788624567,\"1024434247552\":1509788624258,\"1021045385607\":1478686417092,\"1020863455935\":1509788625002,\"1023171537743\":1509788624254,\"1024434247564\":1509788624258,\"1018404441895\":1509788625076,\"1024434247566\":1509788624258,\"4798319722\":1509788624155,\"1024434247561\":1509788624258,\"1024434247563\":1509788624258,\"1024557981419\":1509788624412,\"1023171537752\":1509788624254,\"1024557981428\":1509788624412,\"1001517530496\":1444487341754,\"1013772753672\":1478686804068,\"1024557981424\":1509788624412,\"1023171537758\":1509788624254,\"1024434247570\":1509788624258,\"1013772753668\":1478686804068,\"1024557981436\":1509788624412,\"1013772753669\":1478686804068,\"1024434247581\":1509788624258,\"1013772753670\":1478686804068,\"1024557981438\":1509788624412,\"1013772753671\":1478686804068,\"1023171537747\":1509788624254,\"1024557981439\":1509788624412,\"1022470816402\":1478686804065,\"1013772753666\":1478686804068,\"1013772753667\":1478686804068,\"1022478156317\":1478943089487,\"1005686273531\":1478686804054,\"1023171537835\":1509788624893,\"1022492312352\":1478943089316,\"1023171537837\":1509788624893,\"1025593858126\":1509788624213,\"5025609989\":1514456869765,\"1021933288860\":1509788624819,\"597078300\":1478686417019,\"1024434247534\":1509788624258,\"1016799309713\":1478686804032,\"1022208676359\":1478686804066,\"1023171537831\":1509788624893,\"1022001571447\":1478686417265,\"1025593858134\":1509788624213,\"1024434247540\":1509788624258,\"1023171537848\":1509788624893,\"1023171537849\":1509788624893,\"1024434247543\":1509788624258,\"1024434247536\":1509788624258,\"1025593858131\":1509788624213,\"1024434247537\":1509788624258,\"1024434247538\":1509788624258,\"1023171537854\":1509788624893,\"1025593858129\":1509788624213,\"1024434247539\":1509788624258,\"1024434247548\":1509788624258,\"1023171537840\":1509788624893,\"1024434247551\":1509788624258,\"1023171537844\":1509788624893,\"1024434247545\":1509788624258,\"1020863455812\":1509788625002,\"1021822794513\":1478686417133,\"1024434247546\":1509788624258,\"1024434247492\":1509788624262,\"1021409510028\":1509788624179,\"1021409510025\":1509788624179,\"1021409510024\":1509788624178,\"1024434247489\":1509788624262,\"1024557981217\":1509788624412,\"1022474617460\":1478943089315,\"1021573089483\":1509788624388,\"1024557981218\":1509788624412,\"1024434247491\":1509788624262,\"1024557981219\":1509788624412,\"1021409510021\":1509788624178,\"1021409510022\":1509788624178,\"1024557981231\":1509788624412,\"1023171537796\":1509788624254,\"1024557981224\":1509788624412,\"1021409510016\":1509788624178,\"1024434247497\":1509788624262,\"1021409510019\":1509788624178,\"1024434247498\":1509788624262,\"1024557981226\":1509788624412,\"1022471209545\":1478686417219,\"1024434247499\":1509788624262,\"1024557981239\":1509788624412,\"1021659598326\":1509788624564,\"1024557981234\":1509788624412,\"1024557981244\":1509788624412,\"1016799309735\":1478686804032,\"1024434247460\":1509788624262,\"1024557981253\":1509788624412,\"1024434247456\":1509788624262,\"1024557981249\":1509788624412,\"1024434247458\":1509788624262,\"1024557981250\":1509788624412,\"1023310221346\":1509788624847,\"1021260223997\":1478686417040,\"1023171537891\":1509788624893,\"1024434247464\":1509788624262,\"1022490477326\":1478943089490,\"1024434247479\":1509788624262,\"1021475964557\":1478686417242,\"1023171537918\":1509788624893,\"1024434247475\":1509788624262,\"1024557981276\":1509788624412,\"1024434247485\":1509788624262,\"1019212390398\":1509788624316,\"1024557981277\":1509788624412,\"1024557981278\":1509788624412,\"1024225241760\":1509788624556,\"1024434247480\":1509788624262,\"1024225241766\":1509788624556,\"1024434247481\":1509788624262,\"1024557981273\":1509788624412,\"1024225241764\":1509788624217,\"1019680717753\":1509788624317,\"1024225241754\":1509788624556,\"1024225241755\":1509788624217,\"1021484615478\":1509788624402,\"1024557981280\":1509788624412,\"1024225241758\":1509788624556,\"1024225241759\":1509788624556,\"1023171537869\":1509788624893,\"1024225241756\":1509788624217,\"1024225241757\":1509788624217,\"1024557981283\":1509788624412,\"1023171537871\":1509788624893,\"1024557981292\":1509788624412,\"1023171537856\":1509788624893,\"1024434247437\":1509788624262,\"1023171537857\":1509788624893,\"1012769120191\":1478686417224,\"1025505384167\":1509788624336,\"1023171537859\":1509788624893,\"920429616\":1491634246517,\"1021620801368\":1478686416992,\"1024225241751\":1509788624217,\"1024434247434\":1509788624262,\"1023171537863\":1509788624893,\"1022777143365\":1509788625074,\"1024557981300\":1509788624412,\"1024557981301\":1509788624412,\"1024434247447\":1509788624262,\"1024557981296\":1509788624412,\"1024557981297\":1509788624412,\"1024434247442\":1509788624262,\"1024557981298\":1509788624412,\"1023171537873\":1509788624893,\"1024434247448\":1509788624262,\"1024434247449\":1509788624262,\"1024434247451\":1509788624262,\"1023064711302\":1509788624217,\"1023064711303\":1509788624217,\"1023064711300\":1509788624217,\"1022483530537\":1478943089531,\"1023064711301\":1509788624217,\"1010024626634\":1491634246527,\"1023064711305\":1509788624217,\"1024212657194\":1509788624575,\"5025609885\":1514456869765,\"1023049376129\":1509788624357,\"1023049376130\":1509788624357,\"1023049376131\":1509788624357,\"1023049376132\":1509788624357,\"1024212657198\":1509788624575,\"1025322396161\":1509788624305,\"1023049376133\":1509788624357,\"1024212657199\":1509788624575,\"1021984268537\":1478686417152,\"1023049376134\":1509788624358,\"1023049376135\":1509788624358,\"1024212657184\":1509788624575,\"1025289102347\":1509788624311,\"1025874348309\":1509788667833,\"1022470816752\":1478686804065,\"1024212657189\":1509788624575,\"1022018217668\":1478686417160,\"1024212657177\":1509788624575,\"1022018217667\":1478686417160,\"1019355907475\":1509788624313,\"1024212657181\":1509788624575,\"1021659597922\":1509788624849,\"915449276\":1491634246505,\"1524681166\":1444487341737,\"1025513772707\":1509788624427,\"1023005735995\":1509788624462,\"1024913977981\":1509788667845,\"1025593858558\":1509788625000,\"1023496478451\":1509788624363,\"1025593858556\":1509788624550,\"1025593858557\":1509788625000,\"1025593858555\":1509788624550,\"1025593858553\":1509788625000,\"1024255912377\":1509788667496,\"1021919001778\":1509788624921,\"1025714963148\":1509788624822,\"1025714963149\":1509788624616,\"1021919001776\":1509788624921,\"1021919001780\":1509788624921,\"1024557981644\":1509788624411,\"1024557981643\":1509788624411,\"1020505098596\":1478686804031,\"1024557981653\":1509788624411,\"1025779320460\":1509788624294,\"1024557981649\":1509788624411,\"1021919001766\":1509788624921,\"1021919001771\":1509788624921,\"1021919001773\":1509788624921,\"1020005641886\":1480585069151,\"1025767131121\":1509788624866,\"1021919001744\":1509788624921,\"1021937869751\":1478686804072,\"1021937869750\":1478686804072,\"1021919001750\":1509788624921,\"1021937869749\":1478686804072,\"1024557981666\":1509788624411,\"1021919001748\":1509788624921,\"1021937869755\":1478686804072,\"1022125172972\":1478686417183,\"1021594323008\":1509788624405,\"1024557981677\":1509788624411,\"1022490477228\":1478943089490,\"1024557981674\":1509788624411,\"1024557981675\":1509788624411,\"1021919001756\":1509788624921,\"1022985551153\":1509788625073,\"1021919001731\":1509788624921,\"1024557981685\":1509788624411,\"1025699103729\":1509788667576,\"1024557981687\":1509788624411,\"1021919001728\":1509788624921,\"1021722783991\":1478686417051,\"1021919001733\":1509788624921,\"1021919001739\":1509788624921,\"1022780944873\":1509788624194,\"1021919001737\":1509788624921,\"1024557981688\":1509788624411,\"1024557981689\":1509788624411,\"1013772753660\":1478686804068,\"1021919001715\":1509788624921,\"1024557981445\":1509788624412,\"1024557981446\":1509788624412,\"1021299939670\":1480585069071,\"1024557981440\":1509788624412,\"1013772753657\":1478686804068,\"1024557981442\":1509788624412,\"1013772753652\":1478686804068,\"1021919001722\":1509788624921,\"1013772753648\":1478686804068,\"1024557981448\":1509788624412,\"1024557981449\":1509788624412,\"1021919001725\":1509788624921,\"1013772753644\":1478686804068,\"1021919001700\":1509788624921,\"1013772753639\":1478686804068,\"1021919001704\":1509788624921,\"1024632554415\":1509788667473,\"1013772753634\":1478686804068,\"1024557981476\":1509788624411,\"1013772753629\":1478686804068,\"1024597695879\":1509788624937,\"1024557981479\":1509788624411,\"1024557981473\":1509788624411,\"1021958316605\":1478686417147,\"1024557981484\":1509788624411,\"1024557981485\":1509788624411,\"1024557981486\":1509788624411,\"1024736101451\":1509788625020,\"1024557981482\":1509788624411,\"1024557981483\":1509788624411,\"1024557981495\":1509788624411,\"1021958316591\":1478686417147,\"1024557981488\":1509788624411,\"1024557981490\":1509788624411,\"1024557981496\":1509788624411,\"1021700501812\":1478686804032,\"1022346304444\":1478686417202,\"1021262058719\":1478686804035,\"1021262058718\":1478686804035,\"1021262058717\":1478686804035,\"1017894038546\":1478686804053,\"1022249046510\":1478686417196,\"1017894038545\":1478686804053,\"1023171537636\":1509788624254,\"1025620728032\":1509788624946,\"1025620728033\":1509788624933,\"1022672539433\":1509788625019,\"4997167636\":1509788667392,\"1021958316619\":1478686417147,\"1021886496274\":1478686417054,\"1021958316618\":1478686417147,\"1018089216484\":1478686804026,\"1024313192173\":1509788624927,\"1025908297689\":1509788667448,\"1021958316617\":1478686417147,\"1016847422442\":1478686804018,\"1021958316623\":1478686417147,\"1023171537661\":1509788624254,\"1021958316614\":1478686417147,\"1001959381593\":1478686417023,\"1024313192148\":1509788624927,\"1017063956155\":1478686804032,\"1024313192144\":1509788624927,\"1017063956157\":1478686804023,\"1021958316651\":1478686417147,\"1022470816540\":1478686804039,\"1024212657355\":1509788624575,\"1023171537626\":1509788624254,\"1017063956135\":1478686804032,\"1021588031601\":1478686417246,\"1021271104404\":1478686417237,\"1021262058722\":1478686804035,\"1021262058721\":1478686804035,\"1021958316640\":1478686417147,\"1021262058720\":1478686804035,\"1021588031605\":1478686417246,\"1021294828812\":1478686417238,\"1021811784775\":1478686417131,\"1021848878604\":1509788624993,\"1025783120271\":1509788624999,\"1022183369240\":1478686417187,\"1712648756\":1444487341735,\"1021545040922\":1478686417245,\"1023820625085\":1491634246535,\"1004873212882\":1444487341757,\"1025767129279\":1509788624565,\"1009775579009\":1478686804025,\"1023444049616\":1509788624970,\"1021985712072\":1478686417153,\"1022292300275\":1478686804071,\"1022457453469\":1480585069112,\"1010093832943\":1491634246528,\"1025299983366\":1509788624297,\"602847163\":1444487341742,\"1020962939546\":1478686417001,\"1021700372135\":1478686804046,\"1009965249064\":1491634246523,\"1021014715830\":1478686416987,\"1020160774864\":1465470268316,\"1021767873182\":1509788624395,\"4798319220\":1509788624155,\"1020806051922\":1478686417030,\"1024144369499\":1509788624276,\"1019931454519\":1509788624312,\"1021283425622\":1465469681395,\"1024225242352\":1509788624445,\"1021028478572\":1478686417091,\"1024225242353\":1509788625149,\"1024225242346\":1509788624445,\"1024225242347\":1509788624445,\"1024225242345\":1509788624445,\"1024225242350\":1509788625149,\"1024225242351\":1509788624852,\"1024225242348\":1509788625149,\"1022986992319\":1509788624175,\"1024225242349\":1509788625149,\"1022169475704\":1509788624924,\"1024225242337\":1509788624445,\"1020863456322\":1509788625002,\"1024225242342\":1509788624852,\"1024225242343\":1509788624852,\"1024225242340\":1509788625149,\"1024225242341\":1509788624852,\"1024225242335\":1509788624852,\"1023254506227\":1509788625021,\"1021011438935\":1478686417035,\"1012407086207\":1478686417074,\"713604682\":1444487341701,\"1001959382340\":1478686417023,\"1022879120499\":1509788625052,\"1020556872140\":1478686417017,\"1021163099688\":1478686417234,\"1020007606538\":1478686804065,\"1022481826972\":1478943089315,\"1021163099684\":1478686417234,\"1018888367692\":1509788624930,\"1024785518025\":1509788624467,\"1012144684172\":1478686417073,\"1012225030488\":1478686804028,\"1022986992331\":1509788624175,\"1022986992325\":1509788624175,\"1025090795571\":1509788624959,\"1983570750\":1444487341722,\"1024206889620\":1509788625033,\"1983570749\":1444487341736,\"1024934426428\":1509788624402,\"1022273294809\":1478686417285,\"1021968017398\":1478686417149,\"1023171537977\":1509788625206,\"1022062125657\":1478686417060,\"1025900562829\":1509788667472,\"1023171537980\":1509788625206,\"1023171537982\":1509788625205,\"1022062125650\":1478686417060,\"1023171537969\":1509788625205,\"1012435790865\":1478686417074,\"1021492084827\":1478686417111,\"1001959382171\":1478686417023,\"1022062125653\":1478686417060,\"1023171537975\":1509788625206,\"1025883918012\":1509788667406,\"1001517529808\":1444487341750,\"1025883918013\":1509788667405,\"1025188308016\":1509788624273,\"1025883918014\":1509788667403,\"1011851985624\":1444487341758,\"1025883918004\":1509788667406,\"1025883918006\":1509788667440,\"1023171537926\":1509788624893,\"1021932894762\":1478686417055,\"1010812243143\":1509788624277,\"1021815192885\":1509788624403,\"1024752487899\":1509788667502,\"1021956220035\":1478686417147,\"1010812243145\":1509788624277,\"1012795333276\":1478686416995,\"1010812243144\":1509788624277,\"1022321529550\":1478686417015,\"1010093833187\":1491634246528,\"1023171538017\":1509788625205,\"1020810115232\":1478686417077,\"1023171538021\":1509788625206,\"1025068908387\":1509788624307,\"1025068908388\":1509788624307,\"1023171538044\":1509788625206,\"1025068908389\":1509788624307,\"1022451161954\":1478686417296,\"1025068908399\":1509788624307,\"1023171537992\":1509788625205,\"1023171537996\":1509788625205,\"1023171537998\":1509788625205,\"1025068908375\":1509788624307,\"1023171537999\":1509788625205,\"1023171537988\":1509788625206,\"1023171537989\":1509788625205,\"1024998781744\":1509788625020,\"1846999929\":1444487341740,\"1023171538011\":1509788625205,\"1025068908359\":1509788624307,\"1019273594084\":1509788624315,\"1023171538001\":1509788625205,\"1023171538003\":1509788625205,\"1025068908364\":1509788624307,\"1023171538006\":1509788625205,\"1025068908367\":1509788624295,\"1021972866852\":1478686417150,\"1021429171361\":1509788624827,\"1025120942259\":1509788624330,\"1021700372305\":1478686804046,\"1022379859914\":1478686417205,\"1021008555396\":1478686417231,\"1025880510051\":1509788667465,\"1024806620775\":1509788624816,\"1016506366417\":1509788624976,\"1001959382082\":1478686417023,\"1021933288157\":1509788624535,\"1022065664742\":1478686417174,\"1020556871897\":1478686417017,\"1016710311327\":1478686804051,\"1016710311329\":1478686804051,\"1021755813989\":1478686417051,\"1021755813991\":1478686417051,\"1015327552302\":1478686804058,\"1022472128251\":1478943089531,\"1025551389003\":1509788624341,\"1021545041463\":1478686417245,\"1023531997621\":1509788625039,\"1025533562978\":1509788625083,\"1022257960354\":1478686417067,\"1022697179981\":1509788625015,\"1024778571606\":1509788624441,\"1022697179975\":1509788625016,\"1025629379201\":1509788625087,\"1022697179972\":1509788625016,\"1024778571598\":1509788624452,\"1020116735337\":1509788625076,\"1025645370348\":1509788624428,\"1024778571590\":1509788624434,\"1025645370349\":1509788624431,\"1022697179991\":1509788625015,\"1025645370350\":1509788624425,\"1025645370351\":1509788624406,\"1024778571587\":1509788624440,\"1020956779368\":1478686417033,\"1021886626719\":1509788624465,\"1022697179949\":1509788625015,\"1020556872519\":1478686417017,\"1020924011897\":1478686417082,\"1024806620564\":1509788625100,\"1024778571575\":1509788624430,\"1023725325420\":1491634246523,\"1020978667953\":1478686417087,\"1024806620573\":1509788624533,\"1025900563153\":1509788667474,\"1021395360081\":1478686417240,\"1020956779379\":1478686417033,\"1021982696541\":1478686417152,\"1022697179953\":1509788625016,\"1025900563190\":1509788667474,\"1022921587815\":1509788624298,\"1024927085812\":1509788624182,\"1022697179932\":1509788625016,\"1023934001571\":1491634246529,\"1024927085820\":1509788624182,\"1022697179926\":1509788625016,\"1024927085821\":1509788624182,\"1024927085823\":1509788624182,\"1020562376915\":1509788624320,\"1024927085818\":1509788624182,\"1022697179920\":1509788625016,\"1016399540302\":1480585069069,\"338461357\":1444487341741,\"1020723868039\":1478686416996,\"1023995608199\":1491634246532,\"1024806620483\":1509788624194,\"1017973216667\":1509788624924,\"1021955565368\":1509788624464,\"1023150960381\":1509788624978,\"1019375698377\":1509788625076,\"1025062878406\":1509788624294,\"1021262057904\":1478686804065,\"1019375698375\":1509788625077,\"1019674165117\":1509788625076,\"1019674165118\":1509788625076,\"1023820625494\":1491634246535,\"1024352589324\":1509788624178,\"1019375698363\":1509788625076,\"1025394223231\":1509788624972,\"1025629379195\":1509788625114,\"1025629379196\":1509788625123,\"1025629379197\":1509788625107,\"1012225031014\":1478686804028,\"1025585471406\":1509788624351,\"1025033256635\":1509788624602,\"1025516262283\":1509788624337,\"1024672793948\":1509788624435,\"1010024496185\":1491634246526,\"1010024496184\":1491634246526,\"1010024496187\":1491634246521,\"1010024496186\":1491634246521,\"1019167694132\":1509788624287,\"1019167694128\":1509788624287,\"1019167694131\":1509788624287,\"1019167694130\":1509788624287,\"1024557980549\":1509788624414,\"1024557980545\":1509788624414,\"1025703167815\":1509788624828,\"1024557980556\":1509788624414,\"1024557980557\":1509788624414,\"1025703167819\":1509788624745,\"1024557980559\":1509788624414,\"1024557980552\":1509788624413,\"1024557980554\":1509788624413,\"1024557980560\":1509788624414,\"1024856295878\":1509788624949,\"1024557980582\":1509788624411,\"1019931193196\":1509788624373,\"1024557980579\":1509788624411,\"1024557980590\":1509788624411,\"1024557980586\":1509788624411,\"1024557980596\":1509788624411,\"1021809557319\":1509788624399,\"1024557980599\":1509788624411,\"1024557980593\":1509788624411,\"1024557980595\":1509788624411,\"1021075532555\":1478686417093,\"1024557980603\":1509788624411,\"1021127436381\":1478686417095,\"1024557980612\":1509788624411,\"1023637766717\":1509788624170,\"1024557980608\":1509788624411,\"1024557980611\":1509788624411,\"1021631941025\":1478686417119,\"1021631941024\":1478686417119,\"1022511318477\":1480585069126,\"1021955172088\":1509788624466,\"1024332720456\":1509788625032,\"1024557980639\":1509788624411,\"1000497898983\":1478686416993,\"1022354955924\":1509788624928,\"1024557980645\":1509788624412,\"1024557980647\":1509788624412,\"1024557980642\":1509788624412,\"1024557980650\":1509788624412,\"1024557980658\":1509788624412,\"1024557980659\":1509788624411,\"1024557980668\":1509788624411,\"1024557980669\":1509788624411,\"1024557980671\":1509788624411,\"1020663051218\":1478686804039,\"1020662919981\":1478686804027,\"1024927085828\":1509788624182,\"1025900563231\":1509788667474,\"1025703167936\":1509788624200,\"1025703167942\":1509788624186,\"1024927085826\":1509788624182,\"1022052163685\":1509788625066,\"1025901874156\":1509788667791,\"1024927085827\":1509788624182,\"1022161218284\":1478686417301,\"1025900563208\":1509788667474,\"1003975497444\":1478950494937,\"1020556872347\":1478686417017,\"1024557980446\":1509788624413,\"1024961295111\":1509788624970,\"1024557980442\":1509788624413,\"1024557980443\":1509788624413,\"1021795659912\":1509788624394,\"1025629379337\":1509788624540,\"1025629379338\":1509788624542,\"1025629379339\":1509788624537,\"1025629379340\":1509788624523,\"1024557980451\":1509788624413,\"1025900563257\":1509788667474,\"1024557980463\":1509788624413,\"1024557980458\":1509788624413,\"1022511318321\":1480585069126,\"1024557980471\":1509788624413,\"1024205840438\":1509788625033,\"1024557980473\":1509788624413,\"1024557980475\":1509788624413,\"1024557980485\":1509788624413,\"1024557980482\":1509788624413,\"1001517529146\":1444487341755,\"1023217281957\":1509788624336,\"1025900563285\":1509788667474,\"318014756\":1480585069064,\"318014752\":1480585069064,\"318014753\":1480585069064,\"318014754\":1480585069064,\"318014755\":1480585069064,\"1013015661383\":1478686417026,\"1016569800516\":1465470268266,\"1022390869049\":1478686417015,\"1024557980525\":1509788624413,\"1023526230511\":1509788624388,\"1024557980527\":1509788624414,\"1022860767299\":1509788624378,\"1022285878269\":1478686417198,\"1024557980532\":1509788624414,\"1024557980535\":1509788624414,\"1023217281944\":1509788624342,\"1021832098077\":1478686804064,\"1024687869126\":1509788624491,\"1019023252072\":1480585069072,\"1024687869127\":1509788624491,\"1022631117183\":1509788625061,\"1024687869124\":1509788624491,\"1021627745579\":1478686417247,\"1024687869122\":1509788624491,\"1021381466111\":1478686417006,\"1024687869121\":1509788624491,\"1021627745575\":1478686417247,\"1022395061145\":1478686417206,\"1024687869133\":1509788624491,\"1024687869131\":1509788624491,\"1024687869128\":1509788624491,\"1024687869129\":1509788624491,\"1024687869140\":1509788624491,\"1024687869141\":1509788624491,\"1023988789896\":1509788625036,\"1022237252326\":1478686417065,\"1024673188742\":1509788624854,\"1024673188740\":1509788624855,\"1024673188741\":1509788624855,\"1021736942732\":1478686417024,\"1024673188739\":1509788624854,\"1025349264211\":1504776656205,\"1023734891422\":1509788624932,\"1024673188744\":1509788624854,\"1016357469047\":1465470268254,\"1020703817318\":1478686416996,\"1022921585202\":1509788624292,\"1021046039494\":1478686417232,\"1024434249124\":1509788624596,\"1012128563002\":1478686417073,\"1024434249125\":1509788624596,\"1024434249127\":1509788624596,\"1021815189575\":1478686804046,\"1019655811217\":1509788624316,\"1024434249120\":1509788624596,\"1024434249122\":1509788624596,\"1024434249123\":1509788624596,\"1024434249132\":1509788624596,\"1024434249133\":1509788624596,\"1024434249134\":1509788624596,\"1021614113876\":1478686417116,\"1024434249135\":1509788624595,\"1024434249130\":1509788624596,\"1021736942841\":1478686417251,\"1021736942840\":1478686417251,\"1019208455474\":1480585069068,\"1024673188855\":1509788624558,\"1024673188852\":1509788624558,\"1024673188853\":1509788624558,\"1024673188850\":1509788624558,\"1024673188851\":1509788624558,\"1024434249137\":1509788624596,\"1021736942833\":1478686417251,\"1021736942832\":1478686417251,\"1021736942835\":1478686417251,\"1021736942834\":1478686417251,\"1021736942837\":1478686417251,\"1021736942836\":1478686417251,\"1021702208129\":1478686417122,\"1021736942839\":1478686417251,\"1021736942838\":1478686417251,\"1015291641003\":1480585069068,\"1018335101199\":1478686804022,\"1021167164097\":1478686804064,\"1024673188814\":1509788624219,\"1024673188812\":1509788624219,\"1024673188810\":1509788624219,\"1024673188811\":1509788624219,\"1024673188808\":1509788624219,\"1024434249108\":1509788624596,\"1025907115082\":1509788667463,\"1024687869111\":1509788624491,\"1024687869108\":1509788624491,\"1024434249110\":1509788624596,\"1021763812672\":1478686417127,\"1010002735172\":1491634246525,\"1024434249105\":1509788624595,\"1024687869104\":1509788624491,\"1024434249106\":1509788624596,\"1024434249107\":1509788624596,\"1024687869118\":1509788624491,\"1024434249116\":1509788624596,\"1024434249118\":1509788624596,\"1025009139677\":1509788624330,\"1024434249113\":1509788624596,\"1010001948763\":1491634246518,\"1024434249114\":1509788624596,\"1021239778864\":1480585069071,\"1024687869113\":1509788624491,\"1024434249115\":1509788624596,\"1022953043025\":1509788624610,\"1021087196651\":1478686417094,\"1021815189646\":1478686804046,\"1022700717526\":1509788624973,\"1016862890424\":1478686804016,\"1022215362751\":1478686417191,\"1024781582798\":1509788625020,\"1024434249031\":1509788624595,\"1024434249027\":1509788624595,\"1021702208119\":1478686417122,\"1024434249036\":1509788624595,\"1019365478061\":1509788624313,\"1024434249039\":1509788624595,\"1025703168238\":1509788625124,\"1024434249033\":1509788624595,\"1024434249035\":1509788624595,\"1020871977195\":1478686417031,\"1024434249044\":1509788624595,\"1020556871090\":1478686417017,\"1024434249045\":1509788624595,\"1024434249046\":1509788624595,\"1024434249047\":1509788624595,\"1024434249040\":1509788624595,\"1260573591\":1478686804029,\"1024434249041\":1509788624595,\"1024434249042\":1509788624595,\"1014828945616\":1478686804023,\"1024434249052\":1509788624595,\"1024434249053\":1509788624595,\"1024434249055\":1509788624595,\"1024244638185\":1509788624949,\"1024434249048\":1509788624595,\"1024434249050\":1509788624595,\"1019426947782\":1480585069091,\"1024434249051\":1509788624595,\"1021354595668\":1465470268233,\"1019824106094\":1509788625079,\"1025616139093\":1509788624929,\"1021244497611\":1478686417100,\"1020879186180\":1478686417227,\"1021244497621\":1478686417100,\"1024434249014\":1509788624595,\"1021815189722\":1478686804046,\"1024434249022\":1509788624595,\"1024434248964\":1509788624594,\"1024434248967\":1509788624594,\"1024434248960\":1509788624594,\"1012799657885\":1478686417026,\"1022184810226\":1478686417063,\"1024434248974\":1509788624594,\"1024434248969\":1509788624594,\"1024434248970\":1509788624594,\"1024434248971\":1509788624594,\"1024434248980\":1509788624594,\"1024434248981\":1509788624594,\"1024434248982\":1509788624594,\"1024434248976\":1509788624594,\"1024434248977\":1509788624594,\"1024434248979\":1509788624594,\"1024412228526\":1509788624462,\"1017133156400\":1478686804016,\"1025447581855\":1509788624369,\"1024434248948\":1509788624594,\"1024434248949\":1509788624595,\"1024434248951\":1509788624594,\"379490186\":1444487341702,\"1024434248945\":1509788624594,\"1021504802708\":1478686417047,\"1022065667625\":1478686417174,\"1024434248957\":1509788624594,\"379490180\":1444487341702,\"1024434248958\":1509788624594,\"1024434248952\":1509788624594,\"1024434248954\":1509788624594,\"1024434248955\":1509788624594,\"1024785383479\":1509788624481,\"1024785383476\":1509788624481,\"1024785383486\":1509788624480,\"1024785383485\":1509788624481,\"1024785383483\":1509788624481,\"1024785383481\":1509788624481,\"1024785383463\":1509788624480,\"1022244068263\":1478686417283,\"1024785383469\":1509788624481,\"1024785383467\":1509788624481,\"1024785383464\":1509788624481,\"1024673188582\":1509788624444,\"1024673188583\":1509788624444,\"1944251046\":1444487341719,\"1024785383519\":1509788624481,\"1024785383516\":1509788624481,\"1024673188586\":1509788624444,\"1024673188584\":1509788624444,\"1024673188585\":1509788624444,\"1022125695692\":1478686417276,\"1024785383495\":1509788624480,\"1024785383492\":1509788624481,\"1024785383493\":1509788624480,\"1024785383488\":1509788624480,\"1024785383489\":1509788624480,\"1024785383497\":1509788624480,\"1019524348384\":1509788624315,\"1024667814758\":1509788625213,\"1024785383529\":1509788624481,\"1021208321449\":1478686804027,\"1024785383583\":1509788624584,\"1024785383578\":1509788624584,\"1014828945894\":1478686804028,\"1025890861730\":1509788667404,\"1021622633484\":1478686417008,\"1025890861736\":1509788667404,\"1021224836296\":1478686417099,\"1025890861741\":1509788667404,\"1022197524213\":1478686417189,\"1024785383606\":1509788624584,\"1016357468911\":1465470268254,\"1024785383602\":1509788624584,\"1024785383600\":1509788624584,\"1024785383614\":1509788624584,\"1024785383615\":1509788624584,\"1021646096284\":1509788625084,\"1024785383610\":1509788624584,\"1024785383611\":1509788624584,\"4986679435\":1509788624156,\"1016399675259\":1480585069069,\"1021037257671\":1478686417092,\"1024735317934\":1509788667494,\"1024785383593\":1509788624584,\"1024785383638\":1509788624584,\"1020869749176\":1478686417227,\"1025394091887\":1509788667826,\"1024785383636\":1509788624584,\"1021906155379\":1478686417139,\"1025412834932\":1509788624442,\"1025412834933\":1509788624442,\"1021221952697\":1478686417038,\"1025412834934\":1509788624442,\"1024785383632\":1509788624584,\"1025412834935\":1509788624442,\"1024785383646\":1509788624584,\"1022066454223\":1478686417175,\"1021545038322\":1478686417245,\"1025412834939\":1509788624442,\"1024785383643\":1509788624584,\"1024785383640\":1509788624584,\"1024785383620\":1509788624584,\"1020117523076\":1465470268242,\"1021244235731\":1478686417100,\"1024785383630\":1509788624584,\"1024785383629\":1509788624584,\"1024785383627\":1509788624584,\"1024785383625\":1509788624584,\"379490174\":1444487341702,\"1021695391938\":1509788624404,\"1020915100226\":1478686417227,\"919646007\":1478686804024,\"1022472522011\":1478943089486,\"1019823188789\":1509788624354,\"1025714964605\":1509788624565,\"1021515288090\":1509788624401,\"1016473990017\":1478686804022,\"1025628198603\":1509788624430,\"1018364723642\":1509788624172,\"1021167163575\":1478686804065,\"1025712737224\":1509788624308,\"1025078604167\":1509788624292,\"1020940791324\":1478686417084,\"1024798097526\":1509788624473,\"1009785536807\":1478686804025,\"735228410\":1478950494915,\"707964956\":1444487341708,\"1025712737256\":1509788624307,\"1015291641549\":1480585069068,\"1016301632158\":1480585069066,\"1020556871484\":1478686417017,\"1024687869574\":1509788624901,\"1024565057146\":1509788667890,\"1025516527393\":1509788624343,\"1024687869570\":1509788624901,\"1024687869571\":1509788624900,\"1019868278343\":1478686804065,\"1024687869582\":1509788624901,\"1021290500876\":1478686417102,\"1024687869583\":1509788624901,\"1016942844964\":1465470268267,\"1024687869576\":1509788624901,\"1025048982286\":1509788625017,\"1025048982291\":1509788625017,\"1024687869584\":1509788624901,\"1024687869585\":1509788624901,\"1025879458200\":1509788667912,\"1022986990705\":1509788624175,\"1022986990706\":1509788624175,\"1025879458202\":1509788667909,\"1022986990707\":1509788624175,\"1022986990708\":1509788624175,\"1022986990709\":1509788624175,\"1022986990710\":1509788624175,\"1022270414494\":1480585069093,\"1021446867061\":1509788624399,\"1022270414491\":1480585069093,\"1020150161205\":1478686804021,\"1022270414486\":1480585069093,\"1022270414487\":1480585069093,\"1022270414485\":1480585069093,\"1022270414483\":1480585069093,\"1025412834752\":1509788624857,\"1025412834753\":1509788624858,\"1023711822693\":1509788624997,\"1025412834754\":1509788624858,\"1020294206680\":1465470268297,\"1025412834755\":1509788624858,\"1025412834756\":1509788624857,\"1021100696768\":1478686417095,\"1022242625777\":1478686417195,\"1000526081680\":1444487341714,\"1000526081684\":1444487341713,\"1021872338628\":1478686417257,\"1025862942813\":1509788667488,\"1025862942814\":1509788667488,\"1025862942815\":1509788667488,\"1025712737108\":1509788624306,\"1872950585\":1478686417021,\"1017869395955\":1509788624286,\"1025412834577\":1509788624561,\"1025412834578\":1509788624561,\"1023807899129\":1509788624206,\"1025412834579\":1509788624561,\"1025412834581\":1509788624561,\"1024687869551\":1509788624901,\"1024687869549\":1509788624900,\"1021900649563\":1478686417139,\"1024687869558\":1509788624900,\"1024687869559\":1509788624901,\"1017869395937\":1509788624284,\"1024687869557\":1509788624901,\"1024687869554\":1509788624901,\"1025879982444\":1509788667404,\"1021762895752\":1478686417127,\"1024687869553\":1509788624901,\"1024687869566\":1509788624901,\"1025862942821\":1509788667488,\"627097562\":1478686804024,\"1025862942822\":1509788667488,\"1024687869562\":1509788624901,\"1025862942816\":1509788667488,\"1744764227\":1491634246518,\"1025862942817\":1509788667488,\"1025412834575\":1509788624560,\"1025862942819\":1509788667488,\"1021493399534\":1509788624515,\"1868887486\":1444487341755,\"1025412834666\":1509788624221,\"1025412834668\":1509788624221,\"1021700372518\":1478686804046,\"1025412834669\":1509788624221,\"1023646682155\":1509788624419,\"1025412834670\":1509788624221,\"1020571419902\":1478686417026,\"1025412834671\":1509788624221,\"1872950599\":1478686417021,\"1022453257470\":1478686417215,\"1020636838061\":1478686416995,\"1025712868187\":1509788624345,\"1022775834663\":1509788624462,\"1025712737070\":1509788624306,\"1025712736977\":1509788624307,\"1025412834483\":1509788625155,\"1025412834484\":1509788625155,\"1025412834485\":1509788625155,\"1021860802637\":1509788624402,\"1025412834486\":1509788625155,\"1025412834488\":1509788625155,\"1025879458004\":1509788667596,\"1020241121489\":1478686804065,\"1019230344471\":1509788624367,\"1022238693867\":1509788624947,\"1022238693871\":1509788624941,\"1022238693869\":1509788624932,\"1022238693874\":1509788624931,\"1022238693875\":1509788624931,\"1022238693873\":1509788624931,\"1868887122\":1444487341756,\"1022467281941\":1478686417218,\"1022195557455\":1478686417189,\"1025153315894\":1509788625007,\"1018364723432\":1509788624172,\"1023830457007\":1509788625006,\"1021442541825\":1478686417107,\"1018509441116\":1509788624426,\"1025230778172\":1509788625007,\"1024798097716\":1509788624472,\"1024798097718\":1509788624472,\"1024798097712\":1509788624472,\"1024798097713\":1509788624472,\"1024798097714\":1509788624472,\"1024798097720\":1509788624472,\"1022472522655\":1478943089486,\"1022028705332\":1478686417267,\"1016092297292\":1509788624941,\"1025712736934\":1509788624309,\"1022353118058\":1478686417203,\"1024798097711\":1509788624472,\"1023239431745\":1509788625042,\"1025879457858\":1509788667408,\"1021631547026\":1478686417119,\"1022310391058\":1478686417200,\"1004731004382\":1478686804041,\"1019148947831\":1509788624366,\"1025015561413\":1509788624408,\"1022038666544\":1478686417168,\"1025015561408\":1509788624432,\"1025015561409\":1509788624426,\"1004731004395\":1478686804052,\"1022192411685\":1478686417279,\"1004731004393\":1478686804052,\"1004731004392\":1478686804052,\"1025009138691\":1509788624287,\"1004731004398\":1478686804052,\"1004731004397\":1478686804052,\"1025818905818\":1509788667443,\"1004731004387\":1478686804041,\"1004731004386\":1478686804041,\"1004731004384\":1478686804041,\"1004731004391\":1478686804041,\"1004731004389\":1478686804041,\"1004731004411\":1478686804052,\"1004731004410\":1478686804052,\"1016299273077\":1480585069062,\"1004731004409\":1478686804052,\"1004731004408\":1478686804052,\"1024687214404\":1509788625083,\"1004731004403\":1478686804052,\"1004731004401\":1478686804052,\"548190992\":1444487341738,\"1004731004407\":1478686804052,\"1020573124022\":1478686417074,\"1022501489285\":1509788624538,\"1004731004405\":1478686804052,\"1004731004404\":1478686804052,\"1024687869702\":1509788624590,\"4997165599\":1509788667392,\"1022414329743\":1478686417208,\"1024687869699\":1509788624590,\"1024687869696\":1509788624590,\"1024966410219\":1509788624419,\"1024687869710\":1509788624590,\"1024687869711\":1509788624590,\"1024687869708\":1509788624590,\"1024687869709\":1509788624590,\"1024687869706\":1509788624590,\"1024687869707\":1509788624590,\"1024687869704\":1509788624590,\"1024687869718\":1509788624590,\"1022766660248\":1509788624994,\"1022766660249\":1509788624994,\"1024687869715\":1509788624590,\"1024687869712\":1509788624590,\"1022766660252\":1509788624994,\"1024687869713\":1509788624590,\"1022766660253\":1509788624994,\"1022501489377\":1509788624538,\"1024687869720\":1509788624590,\"1022766660266\":1509788624994,\"1025015561407\":1509788624429,\"1022766660269\":1509788624994,\"1020393033514\":1465470268258,\"1018364723271\":1509788624172,\"1021490515599\":1509788624405,\"1021327331535\":1478686417005,\"1025629378384\":1509788624828,\"1022766660274\":1509788624994,\"1021561029340\":1509788624397,\"1025629378385\":1509788624832,\"1025629378386\":1509788624822,\"1021565485341\":1478686417114,\"1025629378388\":1509788624746,\"1024434248164\":1509788624903,\"1024510006626\":1509788667550,\"1025672106559\":1509788624942,\"1024510006627\":1509788667550,\"1025796360913\":1509788624274,\"1010024494789\":1491634246521,\"1010024494788\":1491634246526,\"1010024494790\":1491634246526,\"1025784301927\":1509788624349,\"1024434248169\":1509788624903,\"1021848876563\":1509788624993,\"1021848876562\":1509788624994,\"1024434248180\":1509788624903,\"1024434248182\":1509788624903,\"1021246200826\":1478686417100,\"1020015993161\":1465470268276,\"1024434248177\":1509788624903,\"1024434248190\":1509788624903,\"1024434248184\":1509788624902,\"1022501489959\":1509788624538,\"1024445258111\":1509788624830,\"1008662758451\":1478686804030,\"1020771055224\":1478686417076,\"1024434248143\":1509788624902,\"1021369930425\":1478686804031,\"1024434248148\":1509788624903,\"1024434248144\":1509788624903,\"1024434248159\":1509788624903,\"1024434248152\":1509788624903,\"1024434248153\":1509788624903,\"1024434248154\":1509788624903,\"1024434248155\":1509788624903,\"1024680136474\":1509788625070,\"1003661963855\":1478686417299,\"1021485140450\":1509788624402,\"1022321662893\":1478686417288,\"1022321662894\":1478686417288,\"1022109837047\":1478686417182,\"1021385921490\":1478686417042,\"1023947633804\":1491634246529,\"1009744381427\":1491634246512,\"1023947633803\":1491634246529,\"1010024494781\":1491634246526,\"1020970150653\":1478686417086,\"1020803166449\":1509788625230,\"1024062583437\":1509788624326,\"1020803166448\":1509788625230,\"1020803166451\":1509788625230,\"1020616391956\":1478686416980,\"1020803166450\":1509788625230,\"1025531075074\":1509788624336,\"1020803166455\":1509788625229,\"1022079558869\":1478686417178,\"1020803166457\":1509788625229,\"1020803166456\":1509788625229,\"1020803166459\":1509788625230,\"1020803166458\":1509788625229,\"1020803166461\":1509788625230,\"1020803166460\":1509788625230,\"1020803166463\":1509788625230,\"1024732957369\":1509788625081,\"1020803166462\":1509788625230,\"1025508268400\":1509788624340,\"1025508268401\":1509788624339,\"1024117501524\":1509788624186,\"1024117501525\":1509788624186,\"1025672106664\":1509788624942,\"1022264909767\":1478686417067,\"1023336570852\":1509788625072,\"1008849025121\":1478686804064,\"1020803166444\":1509788625230,\"1020803166446\":1509788625230,\"1021385921304\":1478686417042,\"1022296103362\":1478686417199,\"1025679708944\":1509788624349,\"1025585731067\":1509788624352,\"1025585731071\":1509788624350,\"1022178124469\":1478686417063,\"1022296103359\":1478686417199,\"1025523866075\":1509788624230,\"1022700978589\":1509788624973,\"1021457223614\":1478686417044,\"1022482746522\":1478943089223,\"1020294206073\":1465470268297,\"1021795924979\":1478686417130,\"1020526329882\":1465470268322,\"1021493529028\":1509788624398,\"1019208454543\":1480585069068,\"1021452504915\":1478686416983,\"1022482746529\":1478943089223,\"1008628288255\":1478686804030,\"1025767131245\":1509788624844,\"1023235235954\":1509788624354,\"1008628288273\":1478686804030,\"1020990728766\":1478686417088,\"1022464528977\":1509788624280,\"1018469203085\":1509788624428,\"1022032767009\":1478686417166,\"1024920272832\":1509788624489,\"1021273855349\":1478686416991,\"1730214426\":1444487341723,\"1022188872351\":1478686417188,\"1024920272811\":1509788624489,\"1024920272807\":1509788624489,\"1023947109794\":1491634246532,\"1021517253261\":1509788624398,\"1024920272800\":1509788624489,\"1024195488620\":1509788625034,\"1023947109793\":1491634246532,\"1021076054358\":1478686417002,\"1024920272818\":1509788624489,\"1022076020198\":1478686417061,\"1023947109791\":1491634246531,\"1020803166467\":1509788625230,\"1024920272799\":1509788624489,\"1020803166466\":1509788625230,\"1025672106824\":1509788624942,\"1022076020194\":1478686417061,\"1024920272793\":1509788624489,\"1024920272794\":1509788624489,\"1021563782247\":1478686417113,\"1021575841599\":1509788624401,\"1000237727559\":1444487341761,\"1022076020200\":1478686417061,\"1022188872358\":1478686417188,\"1025731743499\":1509788624297,\"1025712737367\":1509788624304,\"1019023253472\":1480585069072,\"1022700847327\":1509788624972,\"1021385921062\":1478686417042,\"1020801069317\":1478686417030,\"1010919195142\":1444487341761,\"1010024494938\":1491634246526,\"1010024494933\":1491634246526,\"1010024494932\":1491634246526,\"1025593857883\":1509788624229,\"1023646681942\":1509788624195,\"1022205271402\":1478686417191,\"1024887766359\":1509788625003,\"1022700847330\":1509788624972,\"1022700847331\":1509788624972,\"1025784301786\":1509788624349,\"1022700847328\":1509788624972,\"1022700847329\":1509788624972,\"1020556869817\":1478686417017,\"1010057392457\":1491634246534,\"1020962941698\":1478686417085,\"1020855464590\":1478686417078,\"1021188791977\":1465470268188,\"1022449718256\":1478686417295,\"1025672106979\":1509788624942,\"1023485727153\":1509788625038,\"1025509054470\":1509788667537,\"1022065666765\":1478686417270,\"1023235235968\":1509788624354,\"1021715054566\":1478686417123,\"1022426386511\":1478686417294,\"1022953042387\":1509788624915,\"947431019\":1444487341707,\"1022455091690\":1478686417216,\"947431009\":1444487341706,\"1003975499628\":1478950494937,\"1000526211785\":1444487341733,\"1016853061600\":1465470268266,\"1021179223492\":1478686417098,\"1022283782662\":1478686417286,\"947430979\":1444487341707,\"1025524521172\":1509788624418,\"1023853132982\":1491634246515,\"1023135361333\":1509788624445,\"1300812750\":1478686804029,\"1019023907877\":1480585069072,\"1023135361335\":1509788624445,\"1023135361336\":1509788624445,\"1023135361337\":1509788624445,\"1001517265328\":1444487341699,\"1023135361341\":1509788624445,\"1024360586780\":1509788624501,\"1021774690364\":1509788624817,\"1023988004040\":1509788625036,\"1001517527443\":1444487341753,\"1014797752362\":1509788624453,\"1021562472256\":1478686417113,\"1021974441207\":1509788624452,\"1022052952463\":1478686417172,\"1021974441211\":1509788624452,\"1021395882337\":1509788625083,\"1025524521110\":1509788624418,\"1020556870531\":1478686417017,\"1023646681202\":1509788624534,\"1021774690540\":1509788624420,\"1016928689099\":1478686804058,\"1016928689100\":1478686804058,\"1016928689101\":1478686804058,\"1023583898668\":1509788624434,\"1019194823375\":1478686804047,\"1021606511153\":1478686417008,\"1005662812261\":1480585069065,\"1020782064923\":1478686416997,\"1025524521050\":1509788624418,\"1021714922714\":1509788625082,\"1022953042662\":1509788625084,\"1020896357385\":1478686416987,\"1025524520970\":1509788624418,\"1026507710125\":1515854751199,\"1024434248455\":1509788624903,\"1024434248448\":1509788624903,\"1024434248451\":1509788624903,\"1024434248461\":1509788624903,\"1022084671224\":1509788624319,\"1024434248463\":1509788624904,\"1024434248459\":1509788624903,\"1022483271390\":1509788625149,\"1024781191076\":1509788624435,\"1024434248470\":1509788624904,\"1022483271388\":1509788625149,\"1022483271389\":1509788625149,\"1022483271387\":1509788625149,\"1024434248466\":1509788624903,\"1024434248472\":1509788624903,\"1022233845745\":1478686417014,\"1024434248473\":1509788624903,\"1024434248420\":1509788624904,\"1024434248421\":1509788624903,\"1022935479384\":1490882721866,\"1024434248419\":1509788624904,\"1006976166806\":1478686804025,\"1021618176725\":1509788624404,\"1024434248426\":1509788624903,\"1024434248437\":1509788624903,\"1024434248432\":1509788624903,\"1022953698097\":1509788624291,\"1024662441311\":1509788624471,\"1021460630583\":1478686417108,\"1022467149875\":1478686417218,\"1025784433265\":1509788624348,\"102406406\":1444487341736,\"1024434248440\":1509788624903,\"1001644796262\":1444487341753,\"1022407775113\":1478686417208,\"1019007393367\":1509788624314,\"1019007393365\":1509788624317,\"1019007393361\":1509788624317,\"1020556870188\":1478686417017,\"1022464528505\":1509788624311,\"1021553428111\":1509788624405,\"1024434248412\":1509788624904,\"1024434248415\":1509788624904,\"1024434248409\":1509788624903,\"1024434248411\":1509788624904,\"1021626565145\":1509788624941,\"1021695000188\":1480585069067,\"1016530743874\":1478686804016,\"1017612628422\":1478686804046,\"1006872883654\":1478686804025,\"1021468888004\":1478686416986,\"1025573148519\":1509788624336,\"1010919194870\":1444487341761,\"1022932071431\":1509788625051,\"1020800807929\":1478686416997,\"1000484531740\":1480585069061,\"1021468494810\":1509788624402,\"1024211347545\":1509788625033,\"1022919488854\":1509788624385,\"1023646681486\":1509788625101,\"1022919488853\":1509788624385,\"1460848748\":1491634246509,\"1024587469245\":1509788625095,\"1021974441218\":1509788624441,\"1021974441221\":1509788624436,\"1021974441224\":1509788624436,\"1022828395062\":1509788625074,\"1021974441226\":1509788624436,\"1021854381093\":1509788624402,\"1021974441229\":1509788624436,\"1021974441228\":1509788624436,\"1021974441231\":1509788624427,\"194286595\":1444487341724,\"1021485009463\":1478686417243,\"1021485009462\":1478686417243,\"1025910784583\":1509788667579,\"1025910784584\":1509788667579,\"1022039582988\":1478686417169,\"1016710309877\":1478686804063,\"1021928304769\":1478686417142,\"1021965790916\":1509788624464,\"1004731003279\":1478686804041,\"1024117894409\":1509788624325,\"1004731003291\":1478686804041,\"1020871192469\":1478686416989,\"1004731003289\":1478686804041,\"1024673188980\":1509788625153,\"1004731003288\":1478686804041,\"1024673188981\":1509788625153,\"1004731003295\":1478686804041,\"1025524521276\":1509788624418,\"1024673188978\":1509788625153,\"1004731003294\":1478686804041,\"1024673188979\":1509788625153,\"1004731003293\":1478686804041,\"1021744937860\":1478686417051,\"1004731003292\":1478686804041,\"1024673188977\":1509788625153,\"1004731003286\":1478686804041,\"1024434248197\":1509788624902,\"1024434248198\":1509788624903,\"1022208679791\":1478686417280,\"1024434248199\":1509788624902,\"1024434248192\":1509788624903,\"1024434248193\":1509788624903,\"1024434248195\":1509788624903,\"1004731003299\":1478686804041,\"1004731003298\":1478686804041,\"1004731003297\":1478686804041,\"1004731003296\":1478686804041,\"1024879231122\":1509788625162,\"1024434248201\":1509788624902,\"1004731003300\":1478686804041,\"1024879231118\":1509788625162,\"1024879231119\":1509788625162,\"1024879231116\":1509788625162,\"1024055636322\":1509788624330,\"1024879231113\":1509788625162,\"1024055636332\":1509788624327,\"1020401290171\":1509788624393,\"1018812732692\":1478686804038,\"1025322391829\":1509788624306,\"1023064707975\":1509788624533,\"1018812732689\":1478686804038,\"1018812732688\":1478686804038,\"1018812732691\":1478686804038,\"1018812732690\":1478686804038,\"1025265768051\":1509788624344,\"1025902410860\":1509788667406,\"1024462956065\":1509788625083,\"1025714581925\":1509788624453,\"1025714581926\":1509788624440,\"1018812732685\":1478686804038,\"1025714581932\":1509788624426,\"1018812732684\":1478686804038,\"1025714581933\":1509788624434,\"1018812732687\":1478686804038,\"1018812732686\":1478686804038,\"1018812732683\":1478686804038,\"1025714581911\":1509788624429,\"1025714581904\":1509788624429,\"4985882888\":1509788624156,\"1024798112380\":1509788625176,\"1021699310272\":1478686417122,\"1025714581914\":1509788624429,\"5001742865\":1509788667393,\"1025714581895\":1509788624440,\"1024462956059\":1509788625083,\"1025714581890\":1509788624511,\"1021699310300\":1478686417122,\"1025714581891\":1509788624509,\"1025714581903\":1509788624429,\"1025714581896\":1509788624440,\"1021185123275\":1478686417098,\"1025051068775\":1509788624457,\"1025051068776\":1509788624458,\"1025051068777\":1509788624458,\"1025714582013\":1509788624511,\"1025051068778\":1509788624458,\"1025051068780\":1509788624458,\"1019385804928\":1480585069073,\"4961241081\":1509788624158,\"1025051068783\":1509788624458,\"1021940355289\":1478686416987,\"1016779119743\":1478686804017,\"1025051068786\":1509788624458,\"1025714581984\":1509788624426,\"1021653450738\":1478686804026,\"1021653450737\":1478686804046,\"1025714581987\":1509788624434,\"1019728415800\":1509788624315,\"1025714581972\":1509788624429,\"1022054520766\":1478686417173,\"1025714581973\":1509788624429,\"1025714581974\":1509788624455,\"1022054520764\":1478686417173,\"1006923862495\":1478686804054,\"1025714581975\":1509788624427,\"1022423117216\":1478686417210,\"1025714581968\":1509788624429,\"1025714581969\":1509788624429,\"1017354157955\":1478686804049,\"1025714581980\":1509788624424,\"1025714581981\":1509788624438,\"1025714581976\":1509788624454,\"1025714581978\":1509788624440,\"1025714581979\":1509788624437,\"1022065923965\":1478686417012,\"1025714581956\":1509788624440,\"1025714581957\":1509788624440,\"1025714581958\":1509788624440,\"1022054520748\":1478686417173,\"1025714581959\":1509788624427,\"1021655810039\":1509788624616,\"1025714581953\":1509788624511,\"1025714581954\":1509788624509,\"1025714581955\":1509788624440,\"1021655810043\":1509788624801,\"1025714581965\":1509788624429,\"1025714581966\":1509788624429,\"1021655810041\":1509788624801,\"1021655810040\":1509788624801,\"1025714581961\":1509788624429,\"1021655810046\":1509788624801,\"1025714581963\":1509788624429,\"1021655810044\":1509788624801,\"1018673139146\":1509788625019,\"1023132735259\":1509788625144,\"1020748761403\":1478686417028,\"1024778975729\":1509788625024,\"1021323799493\":1478686417103,\"1020917453580\":1478686417081,\"1025714581796\":1509788624469,\"1025714581798\":1509788624469,\"1025714581799\":1509788624469,\"1025714581793\":1509788624469,\"1025714581805\":1509788624469,\"1025714581806\":1509788624469,\"1022421413221\":1509788624849,\"1025714581800\":1509788624469,\"1025714581801\":1509788624469,\"1025714581803\":1509788624469,\"1019932498170\":1509788624922,\"1022421413208\":1509788624436,\"1025714581778\":1509788624469,\"1021058358168\":1478686417036,\"1025714581788\":1509788624469,\"1025714581790\":1509788624469,\"1025714581791\":1509788624469,\"1025714581784\":1509788624469,\"1023132735285\":1509788625166,\"1025714581786\":1509788624469,\"1025714581764\":1509788624469,\"1020997015667\":1478686417088,\"1025714581773\":1509788624469,\"1025714581775\":1509788624469,\"1025714581768\":1509788624469,\"1025714581769\":1509788624469,\"1013026946359\":1478686804040,\"1025478124396\":1509788625116,\"1025478124397\":1509788625126,\"1025478124398\":1509788625109,\"1024798112406\":1509788625176,\"1024798112400\":1509788625177,\"1021566155326\":1478686417114,\"1024798112401\":1509788625177,\"1022866261940\":1509788624439,\"1018812732869\":1478686804038,\"1024798112388\":1509788625177,\"1018812732868\":1478686804038,\"1018812732871\":1478686804038,\"1018812732870\":1478686804038,\"1025714581863\":1509788624438,\"1025714581856\":1509788624427,\"1025714581857\":1509788624453,\"1018812732867\":1478686804038,\"1025714581858\":1509788624440,\"1024798112386\":1509788625177,\"1018812732866\":1478686804038,\"1021629595114\":1478686417119,\"1008297861903\":1478686804023,\"1018812732873\":1478686804038,\"1024798112392\":1509788625177,\"1008297861899\":1478686804032,\"1018812732872\":1478686804038,\"1025714581865\":1509788624426,\"929470392\":1478686804029,\"1018812732875\":1478686804038,\"1025478124402\":1509788625089,\"1018812732874\":1478686804038,\"1018517029973\":1478686804065,\"1025714581844\":1509788624429,\"1025714581846\":1509788624429,\"1025714581847\":1509788624429,\"1573190947\":1491634246509,\"1024134140705\":1509788667504,\"1025714581854\":1509788624429,\"1025714581828\":1509788624509,\"1025714581830\":1509788624440,\"1024322887293\":1509788667457,\"1025714581827\":1509788624511,\"1023064707967\":1509788625100,\"1020235885274\":1465470268181,\"1025714581833\":1509788624440,\"1025714581835\":1509788624427,\"1020235885358\":1465470268181,\"1024724973474\":1509788624290,\"1021869575637\":1478686804047,\"1024462956346\":1509788625083,\"1021869575639\":1478686804047,\"1021869575638\":1478686804047,\"1021869575641\":1478686804047,\"1021869575640\":1478686804047,\"1021869575643\":1478686804047,\"1021869575642\":1478686804047,\"1021869575645\":1478686804047,\"1021869575644\":1478686804047,\"1021869575647\":1478686804047,\"1021869575646\":1478686804047,\"1021869575649\":1478686804047,\"1024724973456\":1509788624289,\"1021869575648\":1478686804047,\"1021869575651\":1478686804047,\"1021869575650\":1478686804047,\"4950623805\":1509788624158,\"1025731752871\":1509788624181,\"1025524524996\":1509788625099,\"1021961326695\":1509788624899,\"1024724973442\":1509788624290,\"1025001522957\":1509788624465,\"1021428002827\":1478686804026,\"1021428002826\":1478686804026,\"1021428002824\":1478686804026,\"1024886702509\":1509788624472,\"1022511330246\":1480585069129,\"1016301617639\":1480585069066,\"1022112586498\":1509788624943,\"1025714581757\":1509788624469,\"1025714581759\":1509788624469,\"1025714581753\":1509788624469,\"1024886702497\":1509788624472,\"1022306985856\":1509788624959,\"1024886702525\":1509788624472,\"1021887138951\":1478686804069,\"1019601143107\":1478686804067,\"1019601143106\":1478686804067,\"1019601143105\":1478686804067,\"1019601143104\":1478686804067,\"1021582277306\":1509788624397,\"1019601143108\":1478686804067,\"1024886702478\":1509788624472,\"929469954\":1478686804029,\"1022229258261\":1478686417014,\"1017165148751\":1478686804020,\"1024706229447\":1509788624170,\"1024134140579\":1509788667504,\"1022713053168\":1509788624234,\"1025007027886\":1509788624334,\"1024745027088\":1509788624342,\"1025522033784\":1509788624296,\"1024886702484\":1509788624472,\"1025524524944\":1509788625099,\"1024886702485\":1509788624472,\"1024518007708\":1509788625028,\"1024886702487\":1509788624472,\"1025007027900\":1509788624334,\"1020463298877\":1480585069065,\"1021764846728\":1478686417127,\"1025874623387\":1509788667581,\"1025874623384\":1509788667581,\"1022021751883\":1509788625144,\"1410135443\":1478950494922,\"1022454443591\":1478686417216,\"1020463298846\":1480585069065,\"1022439108443\":1478686417071,\"1023783927559\":1491634246535,\"1025524524891\":1509788625099,\"1022021751904\":1509788625168,\"1025731752761\":1509788624273,\"1020894253858\":1478686417032,\"1006826867362\":1478686804022,\"1024724973437\":1509788624290,\"1021869575449\":1478686804047,\"1003127582243\":1478686804054,\"1021869575450\":1478686804047,\"1021869575453\":1478686804047,\"1021869575452\":1478686804047,\"1021869575455\":1478686804047,\"1021869575454\":1478686804047,\"1019023909820\":1480585069072,\"1021869575457\":1478686804047,\"1021869575456\":1478686804047,\"1025505388013\":1509788624336,\"1021869575459\":1478686804047,\"1021869575458\":1478686804047,\"1021869575460\":1478686804047,\"1021869575463\":1478686804047,\"1021869575462\":1478686804047,\"1022371605265\":1509788624362,\"1021869575465\":1478686804047,\"1021869575464\":1478686804047,\"1020463298909\":1480585069065,\"1021984003065\":1509788624565,\"1023443921667\":1509788624970,\"1025315969158\":1509788624376,\"1020542467080\":1509788625077,\"1025524524817\":1509788625099,\"1022438715145\":1478686417213,\"1009490634943\":1480585069065,\"1023002971479\":1509788624393,\"1025714582455\":1509788625245,\"1025714582462\":1509788625142,\"1020346643334\":1465470268247,\"1025714582457\":1509788625243,\"1020346643333\":1465470268247,\"1022540691148\":1509788625063,\"1025714582458\":1509788625141,\"1021722509715\":1509788624403,\"1870187874\":1444487341709,\"1023307473681\":1509788624534,\"1009326006863\":1478686804061,\"4950623540\":1509788624156,\"1021788308888\":1509788624399,\"1025714582421\":1509788625142,\"1021949923897\":1478686417145,\"1009326006861\":1478686804061,\"1025714582422\":1509788625136,\"1025714582416\":1509788625168,\"1025714582417\":1509788625111,\"1019006739266\":1509788624313,\"1025714582419\":1509788625167,\"1021065174781\":1478686417093,\"1025714582424\":1509788625138,\"1025714582427\":1509788625128,\"1023002971493\":1509788624393,\"1016682124324\":1465470268240,\"1000926652735\":1478686804033,\"1025714582402\":1509788625118,\"1025714582414\":1509788625119,\"1025714582410\":1509788625118,\"1024490089103\":1509788625028,\"1025714582517\":1509788625142,\"1021239780364\":1480585069071,\"1025688890747\":1509788624348,\"1025714582524\":1509788625118,\"1025714582525\":1509788625118,\"1025714582521\":1509788625118,\"1021645061239\":1478686417248,\"1021645061238\":1478686417248,\"1021645061237\":1478686417248,\"1021645061247\":1478686417248,\"1025714582508\":1509788625243,\"519486639\":1478686417019,\"1021645061246\":1478686417248,\"1008601954287\":1478686804030,\"1021645061245\":1478686417248,\"1021645061244\":1478686417248,\"1021645061243\":1478686417248,\"1021645061241\":1478686417248,\"1025714582506\":1509788625245,\"1021645061240\":1478686417248,\"1022432423735\":1478686417071,\"1025714582485\":1509788625111,\"1022432423733\":1478686417071,\"1025714582483\":1509788625118,\"1025714582488\":1509788625136,\"1022261108994\":1478686417067,\"1003655269378\":1478686417018,\"1022511329522\":1480585069129,\"1025714582469\":1509788625119,\"1025714582478\":1509788625118,\"1030659859\":1444487341750,\"1022432423723\":1478686417071,\"1022432423720\":1478686417071,\"1025714582475\":1509788625119,\"1025711174472\":1509788624345,\"1025849719558\":1509788667476,\"1025711174473\":1509788624345,\"1025849719559\":1509788667476,\"1025849719557\":1509788667476,\"1023042162810\":1509788625073,\"4560432475\":1465469681388,\"1025711174465\":1509788624345,\"1025714582333\":1509788625243,\"1025849719560\":1509788667476,\"1025714582331\":1509788625245,\"1870188010\":1444487341709,\"1022395329022\":1478686417302,\"1025714582310\":1509788625105,\"1025714582311\":1509788625138,\"1025714582304\":1509788625168,\"1025714582305\":1509788625112,\"1022089911092\":1478686417273,\"1025902542585\":1509788667464,\"1016682124424\":1465470268240,\"1021869575775\":1478686804047,\"1021869575774\":1478686804047,\"1021869575777\":1478686804047,\"1025714582292\":1509788625120,\"1021869575776\":1478686804047,\"1023816286843\":1509788624366,\"1025714582293\":1509788625119,\"1021869575779\":1478686804047,\"1021869575778\":1478686804047,\"1021869575781\":1478686804047,\"1021869575780\":1478686804047,\"1021869575783\":1478686804047,\"1025714582290\":1509788625120,\"1021869575782\":1478686804047,\"1021869575785\":1478686804047,\"1021330353740\":1478686417239,\"1021869575784\":1478686804047,\"1020797521409\":1478686417029,\"1021869575787\":1478686804047,\"1025714582302\":1509788625119,\"1021869575786\":1478686804047,\"1022498878443\":1480585069130,\"1025714582296\":1509788625119,\"1021869575788\":1478686804047,\"1019023909070\":1480585069072,\"1025714582297\":1509788625119,\"1025714582277\":1509788625243,\"1007647211048\":1478686804025,\"1007647211049\":1478686804034,\"1025714582275\":1509788625245,\"1025714582284\":1509788625142,\"1023999396144\":1509788625017,\"1022208811595\":1480585069075,\"1023307473869\":1509788625101,\"1025714582385\":1509788625245,\"1870187966\":1444487341709,\"1025714582387\":1509788625243,\"1311173870\":1491634246512,\"929469871\":1478686804033,\"1025714582393\":1509788625140,\"1025714582394\":1509788625142,\"1025714582395\":1509788625111,\"1025849719638\":1509788667475,\"1025849719636\":1509788667476,\"1025849719637\":1509788667475,\"1021791585715\":1478686417255,\"1025714582356\":1509788625167,\"1025714582357\":1509788625142,\"1025711174442\":1509788624345,\"1025714582352\":1509788625118,\"1025714582354\":1509788625168,\"1020194335320\":1509788625077,\"1025714582355\":1509788625111,\"1025714582364\":1509788625128,\"1025714582360\":1509788625137,\"1025714582361\":1509788625110,\"1025714582341\":1509788625141,\"1025714582336\":1509788625141,\"1025711174463\":1509788624345,\"1025714582339\":1509788625141,\"1025714582348\":1509788625119,\"1025714582345\":1509788625119,\"1016682124521\":1465470268240,\"1025478123689\":1509788624407,\"1025478123685\":1509788624429,\"1025714582205\":1509788625141,\"1025478123686\":1509788624431,\"1025478123687\":1509788624425,\"1025714582201\":1509788625245,\"1019023253863\":1480585069072,\"1025714582202\":1509788625243,\"1025714582181\":1509788624437,\"1025714582183\":1509788624424,\"1025714582177\":1509788624455,\"1025714582178\":1509788624427,\"1025714582179\":1509788624453,\"1021887139531\":1478686804069,\"1016322327108\":1509788624367,\"1021982560557\":1509788625198,\"5001742605\":1509788667393,\"1016682124600\":1465470268240,\"1021980332293\":1478686417151,\"1017973219380\":1509788624936,\"1021186433187\":1465469681393,\"1018805524060\":1509788624928,\"1025522034252\":1509788624295,\"4646025134\":1478686416965,\"1022932191273\":1509788625007,\"1025849719503\":1509788667476,\"1024028626814\":1509788624517,\"1017229505594\":1509788625076,\"1022432947808\":1478686417212,\"749244408\":1444487341724,\"1021887139461\":1478686804069,\"1024804403364\":1509788624211,\"1025714582244\":1509788625105,\"1025849719506\":1509788667476,\"1024056282426\":1509788624328,\"1025849719504\":1509788667476,\"1025849719505\":1509788667476,\"1025731752405\":1509788624178,\"1025714582251\":1509788625110,\"1025714582224\":1509788625120,\"1021803776964\":1478686417052,\"1025714582235\":1509788625142,\"1025714582215\":1509788625120,\"1025714582221\":1509788625120,\"1025714582219\":1509788625120,\"1016474896847\":1478686804023,\"999725074\":1444487341745,\"1016682124688\":1465470268241,\"1025714582072\":1509788624424,\"1021099253025\":1478686416985,\"1025714582075\":1509788624426,\"1025478123583\":1509788624201,\"1022047704496\":1478686417059,\"1025714582060\":1509788624429,\"1025714582062\":1509788624429,\"1025714582058\":1509788624429,\"1025714582059\":1509788624429,\"1024134139991\":1509788667504,\"1025714582033\":1509788624440,\"5001742724\":1509788667393,\"1025714582035\":1509788624427,\"1020898971927\":1478686417032,\"1025478123525\":1509788624800,\"1025714582040\":1509788624429,\"1025478123520\":1509788624829,\"1025714582041\":1509788624429,\"1025478123521\":1509788624834,\"1021982560680\":1509788625198,\"1025478123522\":1509788624824,\"1025714582043\":1509788624429,\"1025714582022\":1509788624440,\"1012802153710\":1465470268318,\"1019151313278\":1509788624316,\"1025714582018\":1509788624509,\"1021183156246\":1478686417003,\"1022511329595\":1480585069129,\"4994796046\":1509788667393,\"1025714582025\":1509788624440,\"1022220608054\":1478686417192,\"1025062734252\":1509788624294,\"1022770578125\":1509788624994,\"1025062734250\":1509788624294,\"1016474896777\":1478686804016,\"1025714582129\":1509788624429,\"1025062734248\":1509788624294,\"1019302965275\":1509788624317,\"1025714582130\":1509788624429,\"1021153927854\":1478686417097,\"1025714582131\":1509788624429,\"1019302965269\":1509788624315,\"1023976327834\":1509788624276,\"1023976327835\":1509788624276,\"1023976327836\":1509788624276,\"1023976327837\":1509788624276,\"1025062734243\":1509788624294,\"1014242379443\":1478686804064,\"1025714582118\":1509788624440,\"1020235885042\":1465470268181,\"1025714582112\":1509788624509,\"1025714582125\":1509788624429,\"1025714582122\":1509788624440,\"1025714582123\":1509788624427,\"1021472438152\":1478686417045,\"1015222172925\":1480585069068,\"1015222172927\":1480585069074,\"1021887139389\":1478686804069,\"1025714582111\":1509788624511,\"1025478123584\":1509788624205,\"1025478123585\":1509788624198,\"1020977746951\":1478686417230,\"1025478123586\":1509788624186,\"1024999818714\":1509788624859,\"1024999818710\":1509788624860,\"1009748327074\":1491634246511,\"1024999818711\":1509788624859,\"1024999818709\":1509788624860,\"1021763274439\":1509788624395,\"1024999818707\":1509788624859,\"1018513490127\":1509788624906,\"1018136799554\":1509788624299,\"1025714582967\":1509788624916,\"1025714582972\":1509788624847,\"1025714582973\":1509788624848,\"1022511330953\":1480585069129,\"1025714582975\":1509788624826,\"1021887007191\":1478686804027,\"1008869327274\":1509788625016,\"1025714582969\":1509788624915,\"1021661707051\":1509788624534,\"1025714582970\":1509788624847,\"1025714582950\":1509788624198,\"1021761962300\":1478686417051,\"1025714582944\":1509788624199,\"1025714582945\":1509788624229,\"1022462176135\":1478686416991,\"1025714582947\":1509788624211,\"1024098489843\":1509788625036,\"1021960803695\":1478686417056,\"1022382353997\":1478686417069,\"1025714582932\":1509788624201,\"1004352994514\":1444487341707,\"1020911687642\":1478686416974,\"1022258489239\":1478686417196,\"1025714582935\":1509788624201,\"1024491662523\":1509788624972,\"1025714582928\":1509788624213,\"1025714582940\":1509788624201,\"1021758161225\":1478686417009,\"1025714582936\":1509788624201,\"1023076372678\":1509788624533,\"1020870267971\":1509788624931,\"1020870267972\":1509788624930,\"1021470339258\":1478686416973,\"1020870267977\":1509788624930,\"1025714582926\":1509788624213,\"1020870267979\":1509788624941,\"1020870267978\":1509788624941,\"1025714582920\":1509788624270,\"1020870267981\":1509788624959,\"1020870267980\":1509788624941,\"1025714582922\":1509788624269,\"1021758161242\":1509788624395,\"1018513490063\":1509788624906,\"1022238697090\":1509788624932,\"1025902671932\":1509788667452,\"1022238697089\":1509788624971,\"1021794992914\":1509788624394,\"1018513490058\":1509788624906,\"1020870267961\":1509788624941,\"1022278672425\":1478686417198,\"1020870267963\":1509788624941,\"4968320104\":1509788624157,\"1020870267965\":1509788624941,\"1014886494035\":1478686804028,\"1022511331023\":1480585069129,\"1021833924271\":1478686417053,\"1020870267967\":1509788624971,\"1018513490079\":1509788624906,\"1023946572612\":1491634246531,\"1025714583008\":1509788624845,\"1018513490075\":1509788624906,\"1018513490074\":1509788624906,\"1024274915122\":1509788624294,\"1025714583010\":1509788624824,\"1018513490072\":1509788624906,\"1025902409781\":1509788667406,\"1018513490071\":1509788624906,\"1021635361410\":1478686417049,\"1021955429886\":1509788624256,\"1021955429883\":1509788624256,\"1018513490067\":1509788624906,\"1021955429882\":1509788624256,\"1025714582996\":1509788624866,\"1025714582999\":1509788624848,\"1025714582992\":1509788624868,\"621838715\":1478686417020,\"1023132734441\":1509788625144,\"1025714582982\":1509788624830,\"1022053864374\":1480585069084,\"1025714582983\":1509788624830,\"1021955429842\":1509788624565,\"1023995072074\":1491634246532,\"1025714582989\":1509788624830,\"1021661707103\":1509788624195,\"1025714582990\":1509788624830,\"1016502683684\":1478686804017,\"1025902672127\":1509788667466,\"1025714582839\":1509788624213,\"1025902672122\":1509788667465,\"1025902672123\":1509788667457,\"1025714582834\":1509788624214,\"1022149941383\":1478686417277,\"1025714582844\":1509788624202,\"1025714582841\":1509788624214,\"1025714582842\":1509788624199,\"1025714582828\":1509788624269,\"1025714582831\":1509788624214,\"1021661707193\":1509788624818,\"1025714582825\":1509788624270,\"1021068711938\":1478686417093,\"1024838089042\":1509788624949,\"1025714582805\":1509788624214,\"1008678895034\":1478686804030,\"1025714582807\":1509788624211,\"1025714582802\":1509788624199,\"1025714582803\":1509788624229,\"1025714582808\":1509788624197,\"1024370287992\":1509788624926,\"1025714582809\":1509788624212,\"1025714582789\":1509788624199,\"1025714582791\":1509788624202,\"1025714582787\":1509788624213,\"1022238697082\":1509788624947,\"1025714582799\":1509788624202,\"1025714582792\":1509788624202,\"1022238697086\":1509788624931,\"1025714582793\":1509788624202,\"1025714582794\":1509788624202,\"1022238697085\":1509788624930,\"1024737424185\":1509788625021,\"1025714582880\":1509788624206,\"1012655481550\":1478686417074,\"1021402313823\":1478686416981,\"1025714582868\":1509788624230,\"1025714582869\":1509788624199,\"1025714582870\":1509788624229,\"1025714582864\":1509788624202,\"1025714582865\":1509788624202,\"1025714582866\":1509788624201,\"1025714582877\":1509788624197,\"1025714582878\":1509788624212,\"1025714582879\":1509788624198,\"1025714582872\":1509788624214,\"1025714582875\":1509788624211,\"1019601141995\":1478686804050,\"1019601141994\":1478686804050,\"1025714582855\":1509788624201,\"1021049577301\":1478686417093,\"1025714582850\":1509788624201,\"1025714582862\":1509788624202,\"1006863567273\":1478686804030,\"1020988363701\":1478686417088,\"1025714582859\":1509788624201,\"1025902540959\":1509788667450,\"1024961282459\":1509788624969,\"1025714582711\":1509788624214,\"1025714582707\":1509788624199,\"1025714582718\":1509788624212,\"1021746233652\":1478686417126,\"1025714582719\":1509788624198,\"1023606322773\":1509788625144,\"1025714582694\":1509788624202,\"1023307473944\":1509788624818,\"1014742836884\":1480585069062,\"1025714582702\":1509788624202,\"1025714582703\":1509788624202,\"1025714582696\":1509788624202,\"1021865643521\":1509788624512,\"1021865643520\":1509788624512,\"1018513490386\":1509788624906,\"1025714582699\":1509788624202,\"1025714582676\":1509788624270,\"1025714582678\":1509788624269,\"1012210207137\":1478686417223,\"1013026945232\":1478686804028,\"1022945298819\":1509788625073,\"1153360278\":1444487341747,\"1023995203353\":1491634246529,\"4961239705\":1509788624157,\"1025714582683\":1509788624213,\"1022502679604\":1509788625007,\"1021848866602\":1509788624993,\"1025714582772\":1509788624214,\"1025714582775\":1509788624197,\"1025714582770\":1509788624199,\"1024576202790\":1509788667500,\"1025714582782\":1509788624270,\"1024576202788\":1509788667501,\"1025714582783\":1509788624269,\"4994796794\":1509788667393,\"1024576202787\":1509788667501,\"1015292543365\":1478686804067,\"1025269830502\":1509788624342,\"1022067757632\":1509788624183,\"1025714582758\":1509788624202,\"1021604952543\":1478686417116,\"1010024484760\":1491634246526,\"1025714582753\":1509788624202,\"1025714582755\":1509788624202,\"1025714582764\":1509788624202,\"1022921576279\":1509788624298,\"1016396382276\":1478686804017,\"1020542466211\":1509788625077,\"1016664690813\":1478686804042,\"1021865643644\":1509788624512,\"1016664690809\":1478686804063,\"1020294081487\":1465470268287,\"1025714582738\":1509788624270,\"1025714582739\":1509788624269,\"1025714582748\":1509788624213,\"1025714582750\":1509788624214,\"1000906460\":1444487341745,\"1025714582721\":1509788624206,\"1021921348311\":1478686417141,\"1021865643677\":1509788624513,\"1025714582583\":1509788624269,\"1021865643678\":1509788624513,\"1025714582577\":1509788624270,\"1025796371281\":1509788624274,\"1021865643672\":1509788624513,\"1021865643675\":1509788624513,\"1021865643674\":1509788624513,\"1020781268523\":1478686416997,\"1021865643669\":1509788624512,\"1021865643671\":1509788624513,\"1021865643665\":1509788624512,\"1021865643667\":1509788624512,\"1021865643663\":1509788624512,\"1021865643662\":1509788624512,\"1021865643656\":1509788624512,\"1021865643659\":1509788624513,\"1017181008333\":1478686804066,\"1021865643658\":1509788624513,\"1021865643654\":1509788624513,\"1025686923974\":1509788624304,\"1021865643649\":1509788624513,\"1021865643651\":1509788624513,\"1021865643650\":1509788624513,\"1025714582544\":1509788625136,\"1025714582546\":1509788625138,\"1008751115021\":1478686804030,\"1020781137421\":1478686417029,\"1025609199184\":1509788624746,\"1023307474110\":1509788624195,\"4994796551\":1509788667393,\"1025609199183\":1509788624833,\"1016682124194\":1465470268240,\"1022454835797\":1478686417016,\"1018513490296\":1509788624906,\"1025714582537\":1509788625168,\"1025714582645\":1509788624214,\"1025714582646\":1509788624211,\"1025714582640\":1509788624202,\"1025714582641\":1509788624230,\"1021195085535\":1478686417235,\"1025714582648\":1509788624212,\"1025714582629\":1509788624202,\"1025714582630\":1509788624202,\"1022038922110\":1478686417168,\"1022038922099\":1478686417168,\"1022644109154\":1480585069132,\"1022038922098\":1478686417168,\"1025714582639\":1509788624202,\"1021323800212\":1478686417103,\"1021114325537\":1478686416992,\"1022921576426\":1509788624298,\"1020294212428\":1465470268297,\"1018513490215\":1509788624906,\"1025714582621\":1509788624202,\"1025714582623\":1509788624202,\"1018513490209\":1509788624906,\"1022038922072\":1478686417168,\"1025782476924\":1509788624174,\"1008907731588\":1465470268235,\"1025714583473\":1509788624541,\"1025714583475\":1509788624541,\"1014496924255\":1478686804032,\"1022465059151\":1478686417299,\"1025714583487\":1509788624549,\"1862977799\":1444487341731,\"1025714583481\":1509788624541,\"5001743404\":1509788667393,\"1025714583482\":1509788624566,\"1025714583461\":1509788624541,\"1021031488710\":1478686416988,\"1023932154342\":1491634246529,\"1025714583457\":1509788624538,\"1024134141405\":1509788667504,\"1012810544835\":1478686804062,\"1025714583453\":1509788624551,\"1025714583454\":1509788624551,\"1020294211718\":1465470268297,\"1025714583449\":1509788624612,\"1025714583450\":1509788624611,\"1014070427021\":1478686804062,\"1021640472669\":1509788624819,\"1020389897504\":1478686804022,\"1022278672988\":1478686417197,\"1025620733200\":1509788624970,\"1017181008484\":1478686804066,\"1017181008411\":1478686804066,\"1012210207437\":1478686417223,\"1023596098992\":1509788624516,\"1023173238595\":1509788625083,\"1025714583524\":1509788624551,\"1018513490591\":1509788624906,\"1025620733309\":1509788624946,\"1025714583527\":1509788624541,\"1025620733311\":1509788624932,\"1012607247013\":1478686417026,\"1025714583523\":1509788624551,\"1025714583533\":1509788624541,\"1021342673522\":1478686417103,\"1025051070335\":1509788624568,\"4961239509\":1509788624157,\"1022866260253\":1509788624467,\"1025714583516\":1509788624612,\"1025714583519\":1509788624611,\"1022236206232\":1478686417065,\"1587738838\":1444487341727,\"1025714583490\":1509788624538,\"1022709119151\":1509788624349,\"1025714583491\":1509788624544,\"1022270153370\":1480585069091,\"1019324068578\":1509788624282,\"1018513490510\":1509788624906,\"1025714583356\":1509788624551,\"1025551393223\":1509788624343,\"1025714583357\":1509788624551,\"1021629594553\":1478686417119,\"1022511330319\":1480585069129,\"1025714583353\":1509788624612,\"1025607888031\":1509788624229,\"1025714583355\":1509788624611,\"1025714583333\":1509788624866,\"1025714583334\":1509788624848,\"1022943857231\":1509788624291,\"1022943857229\":1509788624291,\"1023122509997\":1509788625046,\"1022918036701\":1509788625052,\"1025051070336\":1509788624568,\"1025051070337\":1509788624568,\"1024779501521\":1509788624878,\"1020443898237\":1478686804047,\"1012810544767\":1478686804062,\"1025051070338\":1509788624568,\"1025051070339\":1509788624568,\"1025051070340\":1509788624568,\"261269815\":1444487341735,\"1025051070342\":1509788624568,\"4950622642\":1509788624157,\"1020437999773\":1478686804066,\"1025714583324\":1509788624830,\"1025714583320\":1509788624830,\"1025620733312\":1509788624941,\"1025714583321\":1509788624830,\"1025714583322\":1509788624830,\"1025714583323\":1509788624830,\"227453758\":1478950494906,\"1023173238719\":1509788625083,\"1025714583303\":1509788624916,\"1023064708402\":1509788624194,\"1025714583296\":1509788624836,\"1023064708403\":1509788624419,\"1025714583308\":1509788624847,\"1025714583304\":1509788624915,\"1025714583306\":1509788624847,\"1021938652696\":1478686417055,\"1025714583307\":1509788624847,\"1022488131361\":1478943089489,\"1025505125112\":1509788624342,\"1019601142481\":1478686804067,\"1025505125114\":1509788624346,\"1022270415410\":1480585069093,\"1025505125116\":1509788624343,\"1021510316258\":1478686417112,\"1022270415411\":1480585069093,\"1022270415408\":1480585069093,\"1018513490433\":1509788624906,\"1022270415409\":1480585069093,\"1021652531486\":1509788624867,\"1022270415403\":1480585069093,\"1022270415401\":1480585069093,\"1025714583405\":1509788624536,\"1025714583406\":1509788624549,\"1022234896320\":1478686417065,\"1021975352393\":1509788624464,\"1025714583402\":1509788624551,\"1025714583403\":1509788624549,\"1021865643517\":1509788624512,\"1024796933286\":1509788625024,\"1023173238766\":1509788625083,\"1021865643516\":1509788624512,\"1025714583381\":1509788624541,\"1021865643519\":1509788624512,\"1025478124878\":1509788624541,\"1021865643518\":1509788624512,\"1025478124879\":1509788624543,\"1021865643512\":1509788624512,\"1021865643515\":1509788624512,\"1021865643514\":1509788624512,\"1021865643508\":1509788624512,\"1025714583389\":1509788624538,\"1025714583391\":1509788624565,\"1025714583384\":1509788624541,\"1021865643504\":1509788624512,\"1025714583386\":1509788624541,\"1021865643506\":1509788624512,\"1025714583364\":1509788624551,\"1021959755664\":1478686417056,\"1021865643500\":1509788624512,\"1021822783356\":1478686417133,\"1021865643502\":1509788624512,\"1025714583360\":1509788624551,\"1021865643498\":1509788624512,\"1021865643493\":1509788624512,\"1012880405105\":1478686417224,\"1021865643495\":1509788624512,\"1025478124880\":1509788624537,\"1025478124881\":1509788624524,\"1025714583371\":1509788624541,\"1025714583220\":1509788624883,\"1025714583221\":1509788624883,\"1025714583222\":1509788624883,\"1025714583223\":1509788624883,\"1025714583218\":1509788624883,\"1024779501179\":1509788624878,\"1025714583224\":1509788624883,\"1016474766717\":1478686804034,\"1024779501183\":1509788624878,\"1025714583204\":1509788624883,\"1025714583205\":1509788624883,\"1025714583206\":1509788624883,\"1025714583207\":1509788624883,\"1023064708243\":1509788624815,\"1025714583201\":1509788624883,\"1025714583202\":1509788624883,\"1025714583203\":1509788624883,\"1025714583214\":1509788624883,\"1025714583215\":1509788624883,\"1025784312432\":1509788624349,\"1025714583208\":1509788624883,\"1025714583210\":1509788624883,\"1025714583188\":1509788624883,\"1025714583190\":1509788624883,\"1024919733815\":1509788624531,\"1023878284332\":1491634246512,\"1025714583184\":1509788624883,\"1024919733809\":1509788624531,\"1830865415\":1444487341711,\"1025714583198\":1509788624883,\"1024919733823\":1509788624531,\"1021652531452\":1509788624826,\"1025714583193\":1509788624883,\"1025505125120\":1509788624341,\"1025505125122\":1509788624345,\"1025714583175\":1509788624883,\"1025714583177\":1509788624884,\"1025714583179\":1509788624884,\"1025714583284\":1509788624825,\"1025714583285\":1509788624866,\"1025051070050\":1509788624232,\"1025714583286\":1509788624848,\"1022310654427\":1478686417287,\"1025714583280\":1509788624830,\"1025714583281\":1509788624830,\"1025628335007\":1509788624431,\"1025714583283\":1509788624868,\"1025714583295\":1509788624824,\"1024134141059\":1509788667504,\"1025714583290\":1509788624822,\"1024919733828\":1509788624531,\"1024028625763\":1509788624517,\"1024919733824\":1509788624531,\"1025714583276\":1509788624830,\"1025714583272\":1509788624830,\"1025714583255\":1509788624830,\"1025714583250\":1509788624848,\"1022018998929\":1478686417161,\"1006492512288\":1509788624310,\"1010766639588\":1478950494939,\"1020803681083\":1478686416971,\"1022270415756\":1480585069094,\"1016664691304\":1478686804051,\"1025051070036\":1509788624232,\"1022270415755\":1480585069094,\"1025051070037\":1509788624232,\"1014743098620\":1480585069067,\"1024460071180\":1509788625030,\"1025051070039\":1509788624232,\"1025628335008\":1509788624425,\"1025714583244\":1509788624847,\"1025628335009\":1509788624428,\"1025714583245\":1509788624847,\"1022270415749\":1480585069094,\"1025051070043\":1509788624232,\"1025628335011\":1509788624406,\"1022270415746\":1480585069094,\"1025051070045\":1509788624232,\"1022270415744\":1480585069094,\"1025051070046\":1509788624232,\"1025714583242\":1509788624916,\"1022270415745\":1480585069094,\"1025714583243\":1509788624916,\"1025714583088\":1509788624824,\"1025714583090\":1509788624836,\"1021955429920\":1509788624256,\"1021620681271\":1478686417247,\"1022943857493\":1509788624291,\"1022208812827\":1478686417191,\"1025714583077\":1509788624826,\"1025714583072\":1509788624830,\"1024117495123\":1509788624429,\"1021620681260\":1478686417247,\"1025714583075\":1509788624868,\"1025714583085\":1509788624822,\"1025714583086\":1509788624845,\"1021955429949\":1509788625166,\"1021955429894\":1509788624256,\"1025714583062\":1509788624830,\"1021955429892\":1509788624228,\"1025714583056\":1509788624848,\"1021955429889\":1509788624256,\"1025714583058\":1509788624830,\"1021955429888\":1509788624256,\"1021889366544\":1509788624394,\"1021955429902\":1509788624256,\"1021955429900\":1509788624256,\"1021955429899\":1509788624256,\"1025714583064\":1509788624830,\"1025714583066\":1509788624830,\"1021955429896\":1509788624256,\"1025714583044\":1509788624916,\"1022270153553\":1480585069092,\"1021955429908\":1509788624256,\"1021955429907\":1509788624256,\"1019815712409\":1509788624285,\"1021955429904\":1509788624256,\"1025714583043\":1509788624916,\"1021955429919\":1509788624256,\"1021955429918\":1509788624256,\"1025900313400\":1509788667457,\"1021955429916\":1509788624256,\"1025513775664\":1509788624451,\"1025714583048\":1509788624847,\"1021955429914\":1509788624256,\"1021955429913\":1509788624256,\"1021955429912\":1509788624256,\"1025714583156\":1509788624824,\"1025714583157\":1509788624836,\"1022347882372\":1478686417202,\"1025714583152\":1509788624848,\"1025714583154\":1509788624822,\"4968321003\":1509788624159,\"4994797182\":1509788667394,\"1022344867745\":1478686417202,\"1022943857429\":1509788624291,\"1022192932943\":1478686417279,\"1021955430006\":1509788624452,\"1207754794\":1491634246519,\"1025714583138\":1509788624830,\"1025714583139\":1509788624830,\"1025714583151\":1509788624866,\"1025714583145\":1509788624830,\"1025714583146\":1509788624868,\"1019601142779\":1478686804067,\"1019601142778\":1478686804067,\"1022457456697\":1480585069113,\"1019601142780\":1478686804067,\"1025714583123\":1509788624848,\"1022943857459\":1509788624291,\"1022270153487\":1480585069091,\"1025714583129\":1509788624830,\"1024779501185\":1509788624878,\"1021936949039\":1478686416989,\"1024779501186\":1509788624878,\"1024779501187\":1509788624878,\"1022943857455\":1509788624291,\"1020932395851\":1478686417083,\"1024779501190\":1509788624878,\"1022943857453\":1509788624291,\"1021936949029\":1478686416989,\"1025714583116\":1509788624916,\"1024779501193\":1509788624878,\"1025714583117\":1509788624916,\"1021936949030\":1478686416989,\"1022067757292\":1509788624183,\"1022426785164\":1478686417294,\"1022747379859\":1509788624222,\"1022747379863\":1509788624222,\"1022747379864\":1509788624222,\"1021340312644\":1478686417239,\"1022747379865\":1509788624222,\"1021713467964\":1509788624195,\"1023064710038\":1509788624447,\"1023064710039\":1509788624447,\"1023064710036\":1509788624447,\"1023064710037\":1509788624447,\"1024919734581\":1509788624192,\"1024919734576\":1509788624192,\"1024919734578\":1509788624192,\"1023064710048\":1509788624447,\"1025331434048\":1509788624852,\"1025331434052\":1509788624851,\"1024919734587\":1509788624192,\"1024919734565\":1509788624192,\"1024919734567\":1509788624192,\"1024919734572\":1509788624192,\"1026448184771\":1514827444365,\"1024919734575\":1509788624192,\"1021362201918\":1478686417239,\"1022747379887\":1509788624222,\"1021632476839\":1478686417248,\"1022343160013\":1478686417289,\"1019290778322\":1509788625079,\"1015242082692\":1480585069068,\"1025018826591\":1509788624886,\"1025331434046\":1509788624852,\"1024919734593\":1509788624192,\"1025331434047\":1509788624852,\"1024204922854\":1509788625034,\"1025331434045\":1509788624851,\"1016301619450\":1480585069066,\"1022058192858\":1478686417059,\"5001740924\":1509788667394,\"1024919734645\":1509788624418,\"1022747379955\":1509788624562,\"1020235883077\":1465470268181,\"1022747379956\":1509788624562,\"1022747379957\":1509788624562,\"1024919734642\":1509788624418,\"1022747379958\":1509788624562,\"1024919734652\":1509788624418,\"1022747379960\":1509788624562,\"1024919734648\":1509788624418,\"1024919734649\":1509788624418,\"1024919734628\":1509788624418,\"1021283557792\":1465469681396,\"1024244633895\":1509788624948,\"1024919734639\":1509788624418,\"1024919734632\":1509788624418,\"1024919734634\":1509788624418,\"1023064709895\":1509788624851,\"1023064709892\":1509788624851,\"1021775597305\":1478686417254,\"1022136177786\":1478686417276,\"1025331434210\":1509788624442,\"1024919734684\":1509788625098,\"1025331434208\":1509788624442,\"1024919734686\":1509788625098,\"1025331434209\":1509788624442,\"1023064709898\":1509788624851,\"1024919734680\":1509788625098,\"1024919734681\":1509788625098,\"1021652531039\":1509788624199,\"1025331434212\":1509788624442,\"1023064709896\":1509788624851,\"1024919734682\":1509788625098,\"1023064709897\":1509788624851,\"1023018178799\":1509788625100,\"1021713468054\":1509788624817,\"1023932026706\":1491634246530,\"1020542465367\":1509788625077,\"1024919734717\":1509788624531,\"1020542465366\":1509788625077,\"1024919734718\":1509788624531,\"1025513778467\":1509788624511,\"1024919734693\":1509788625098,\"1024919734688\":1509788625098,\"1024919734689\":1509788625098,\"1025331434204\":1509788624442,\"1024919734690\":1509788625098,\"1022609502239\":1509788625002,\"1021924755235\":1478686417141,\"1023932026702\":1491634246530,\"1021090862563\":1478686417036,\"1022432421275\":1478686417071,\"1021351060857\":1509788624178,\"1020364601924\":1478686804027,\"1025018826718\":1509788624886,\"1022074048611\":1509788624924,\"1024781988344\":1509788625021,\"1024919734720\":1509788624531,\"1024919734723\":1509788624531,\"1021786345219\":1509788624816,\"1024325244600\":1509788624811,\"1022467418052\":1478686417218,\"1025018826728\":1509788624886,\"1024930089619\":1509788624875,\"1025018826729\":1509788624886,\"1022467418054\":1478686417218,\"1024930089616\":1509788624875,\"1024930089617\":1509788624875,\"1025018826731\":1509788624886,\"1025018826725\":1509788624886,\"1020779168553\":1478686417225,\"1018034433939\":1478686804046,\"1025018826727\":1509788624886,\"1025018826722\":1509788624886,\"1021880845509\":1509788624433,\"1022432421281\":1478686417071,\"1024930089614\":1509788624875,\"1024930089615\":1509788624875,\"1024930089612\":1509788624875,\"1024930089613\":1509788624875,\"1010551939195\":1509788624277,\"1025608016616\":1509788625140,\"1025714583740\":1509788624551,\"1025714583742\":1509788624551,\"1025714583737\":1509788624612,\"1025714583738\":1509788624611,\"1025714583716\":1509788624537,\"1025714583712\":1509788624551,\"1025714583713\":1509788624548,\"1025608016632\":1509788625139,\"1025714583715\":1509788624549,\"1025608016633\":1509788625139,\"1022335299099\":1478686417201,\"1025714583700\":1509788624541,\"1025714583701\":1509788624541,\"1025714583703\":1509788624541,\"1024789328895\":1509788625090,\"1025714583698\":1509788624541,\"1025714583710\":1509788624538,\"1025714583704\":1509788624541,\"1025714583706\":1509788624541,\"1024789328884\":1509788625090,\"1025714583707\":1509788624541,\"1024225235273\":1509788625100,\"1024789328878\":1509788625090,\"1024460730181\":1509788625029,\"1023172055063\":1509788625044,\"1025714583695\":1509788624538,\"4976837017\":1509788624158,\"1022431765505\":1478686417294,\"1022638601135\":1509788624986,\"1012199195241\":1478686416982,\"1021195086417\":1478686417235,\"1021283557529\":1465469681396,\"1022579097549\":1480585069123,\"465351398\":1491634246534,\"1017648404766\":1478686804019,\"1024734543742\":1509788624342,\"1025714583764\":1509788624541,\"1025714583766\":1509788624566,\"1020235883333\":1465470268181,\"1025569481022\":1509788624351,\"1025714583773\":1509788624537,\"1025714583768\":1509788624565,\"1021014053038\":1478686417089,\"1024887228809\":1509788624435,\"1024225235221\":1509788624533,\"1025714583771\":1509788624536,\"1022356136115\":1478686417289,\"1024887228816\":1509788624452,\"1021775597319\":1478686417254,\"1022999037676\":1509788625049,\"1025714583754\":1509788624541,\"1023756531146\":1509788625038,\"1025331434475\":1509788624217,\"1025331434478\":1509788624217,\"1025331434476\":1509788624217,\"1025331434477\":1509788624217,\"1024930089969\":1509788624875,\"1025714583612\":1509788624550,\"1023064709646\":1509788624555,\"1008744559807\":1478686804030,\"1023064709647\":1509788624555,\"1022138275158\":1478686417184,\"1023064709645\":1509788624555,\"1025714583608\":1509788624612,\"1021831823500\":1478686417009,\"1025714583609\":1509788624611,\"1024546579164\":1509788624958,\"1016930921650\":1478686804019,\"1009715429059\":1491634246511,\"1021772189472\":1478686417128,\"1025714583584\":1509788624544,\"1023064709651\":1509788624555,\"1024679492307\":1509788624958,\"1023064709648\":1509788624555,\"1025331434481\":1509788624217,\"1021197708624\":1495284743407,\"1017318110638\":1465470268237,\"1021911648225\":1478686417140,\"1021786345080\":1509788624194,\"1025714583571\":1509788624565,\"1002896893969\":1478686804068,\"1025714583580\":1509788624549,\"1002896893968\":1478686804068,\"1022379729878\":1478686417205,\"1012042828588\":1478686804024,\"1009022551857\":1478686804030,\"1025524001957\":1509788625158,\"1025524001958\":1509788625158,\"1002896893966\":1478686804068,\"1025524001959\":1509788625158,\"1025524001960\":1509788625158,\"1025714583565\":1509788624566,\"1025524001962\":1509788625158,\"1021733260634\":1509788624395,\"1025714583561\":1509788624541,\"1025714583670\":1509788624612,\"1025714583671\":1509788624611,\"1010024743689\":1491634246527,\"1025714583673\":1509788624551,\"1022747380033\":1509788624562,\"1021786344969\":1509788624533,\"1022747380034\":1509788624562,\"1022747380035\":1509788624562,\"1022747380036\":1509788624562,\"1021790015062\":1509788624403,\"1022747380037\":1509788624562,\"1025714583636\":1509788624566,\"1021748989424\":1509788624508,\"1020911688219\":1478686416974,\"1025714583638\":1509788624565,\"1025714583633\":1509788624541,\"1021923837539\":1478686417301,\"1021652530744\":1509788624551,\"4994793564\":1509788667393,\"1025714583641\":1509788624536,\"1025714583643\":1509788624549,\"1025569612201\":1509788624349,\"1025714583623\":1509788624538,\"1022943855918\":1509788624291,\"1012261717661\":1478686416991,\"1024225235340\":1509788624815,\"1025714583619\":1509788624550,\"1025714583629\":1509788624541,\"1025714583624\":1509788624541,\"1025714583626\":1509788624541,\"1025714583627\":1509788624541,\"1025585734466\":1509788624351,\"1024535175651\":1509788625027,\"1025585734468\":1509788624350,\"1019001760726\":1480585069069,\"1015060298921\":1478686804022,\"1025585734473\":1509788624350,\"1020797126328\":1478686417029,\"1021984397808\":1478686417057,\"1022401618198\":1478686417070,\"1009555776710\":1509788624361,\"1012206667469\":1478686417223,\"1021806133929\":1478686417131,\"1021674408520\":1478686417120,\"1326507297\":1480585069060,\"1019826460862\":1465470268321,\"1024840316904\":1509788624969,\"273594996\":1444487341717,\"1018089218057\":1478686804026,\"5001740319\":1509788667393,\"1025798208767\":1509788625087,\"1021351847925\":1478686417104,\"1021411883585\":1509788624447,\"1021411883587\":1509788624447,\"1021411883586\":1509788624447,\"1025428843255\":1509788625171,\"1021411883589\":1509788624447,\"1025428843246\":1509788625171,\"1021370459346\":1478686417104,\"1025428843247\":1509788625171,\"1025428843238\":1509788625171,\"1025018826071\":1509788624480,\"1025428843239\":1509788625171,\"1022390346169\":1478686417206,\"1021288801025\":1478686416979,\"1024156557041\":1509788667500,\"1024156557051\":1509788667500,\"1024156557048\":1509788667500,\"1021118911982\":1478686417233,\"1023018179105\":1509788624533,\"1012353736295\":1478686804015,\"1024225235466\":1509788624194,\"149201553\":1444487341746,\"1021783461231\":1478686417128,\"1021499047026\":1478686417007,\"1021651481931\":1478686417120,\"1025428843058\":1509788624467,\"1021651481934\":1478686417120,\"1025428843053\":1509788624467,\"1025428843051\":1509788624466,\"1950408418\":1444487341761,\"1022427440942\":1478686417070,\"1023064709430\":1509788625146,\"1023064709431\":1509788625146,\"1022094365645\":1478686417274,\"1023064709429\":1509788625146,\"1024299816796\":1509788624293,\"1018746935387\":1509788624373,\"1023064709436\":1509788625146,\"1023064709432\":1509788625146,\"1018617823351\":1444487341760,\"1021397727777\":1509788624399,\"1025078985042\":1509788624280,\"1025078985040\":1509788624280,\"1023018179204\":1509788624815,\"1025078985051\":1509788624280,\"1019889507332\":1478686804021,\"1023878285785\":1491634246510,\"1023375634381\":1509788625084,\"1025078985027\":1509788624280,\"1022472665638\":1478943089486,\"1025078985025\":1509788624280,\"1025078985038\":1509788624280,\"1025078985037\":1509788624280,\"1025078985032\":1509788624280,\"1018250051169\":1509788624286,\"1024804401424\":1509788624548,\"1021073168040\":1478686417093,\"1024687750715\":1509788625024,\"1020627388473\":1478686416982,\"1025078985056\":1509788624280,\"1022633620387\":1480585069095,\"1022932189591\":1509788624569,\"1021001733022\":1478686416979,\"1022039055779\":1478686417169,\"1023396605137\":1509788625080,\"1023946443785\":1491634246531,\"1025215436902\":1509788624536,\"1018034433121\":1478686804046,\"1022039055794\":1478686417169,\"1024491660161\":1509788624971,\"1024491660162\":1509788624971,\"1024491660164\":1509788624972,\"1950408541\":1444487341761,\"1024491660165\":1509788624972,\"1021921739960\":1509788625166,\"1025473931468\":1509788624352,\"1022039055758\":1478686417168,\"1016243435286\":1465470268265,\"1022039055771\":1478686417168,\"1023018179452\":1509788624419,\"1021546361654\":1478686417300,\"1017229900809\":1509788624941,\"1021283951342\":1465469681396,\"1022324550883\":1478686417200,\"1022235814305\":1478686417193,\"1022452082011\":1478686417296,\"1025018825823\":1509788624480,\"1020815607522\":1478686417030,\"1022030274171\":1478686417058,\"1024496771919\":1509788625070,\"1950408487\":1444487341761,\"1022442120653\":1478686417295,\"1013328659584\":1465470268239,\"1020384786487\":1480585069079,\"1023602784273\":1509788624933,\"1021713467828\":1509788624534,\"1024156557056\":1509788667500,\"5001740726\":1509788667394,\"1025164057593\":1509788624329,\"1023602784306\":1509788624933,\"1022511331627\":1480585069130,\"1025428843280\":1509788625171,\"1021197709178\":1495284743407,\"1018617823502\":1444487341760,\"1022189130857\":1478686417064,\"1022700861162\":1509788624973,\"1023602784299\":1509788624933,\"1022747511726\":1509788624552,\"1021967620389\":1509788624464,\"1002896894569\":1478686804059,\"1002896894568\":1478686804059,\"1002896894571\":1478686804059,\"1023602784326\":1509788624933,\"1002896894570\":1478686804059,\"1025874227683\":1509788667406,\"1025597268331\":1509788624363,\"1002896894564\":1478686804059,\"1002896894567\":1478686804059,\"1021783854115\":1509788624400,\"1002896894566\":1478686804059,\"1005736984978\":1509788624383,\"1024491660152\":1509788624972,\"1024491660156\":1509788624972,\"1024491660159\":1509788624971,\"1024780153519\":1509788624436,\"1025597268312\":1509788624368,\"1024491660147\":1509788624972,\"1022511331694\":1480585069130,\"1024491660148\":1509788624971,\"1024491660151\":1509788624971,\"1020824651513\":1509788624971,\"1024491660137\":1509788624972,\"1024491660138\":1509788624972,\"1024491660139\":1509788624972,\"1024491660141\":1509788624972,\"1025597268293\":1509788624368,\"1025412830281\":1509788625101,\"1022324681817\":1478686417200,\"1025597268297\":1509788624368,\"1024491660132\":1509788624971,\"1836106097\":1478950494926,\"1023734773684\":1509788624969,\"1016949402119\":1478686804020,\"1024434514404\":1509788624465,\"1019932496990\":1509788624922,\"1019601143837\":1478686804067,\"1022074442881\":1478686417061,\"1024132440051\":1509788624304,\"1025018825502\":1509788624479,\"1022481972311\":1478943089531,\"1025018825499\":1509788624479,\"190621508\":1478686417023,\"1025018825492\":1509788624479,\"1025018825495\":1509788624479,\"1025906470970\":1509788667458,\"1025018825491\":1509788624479,\"1025754300279\":1509788624958,\"1021165334268\":1478686417097,\"1021213698527\":1478686417099,\"1025018825510\":1509788624479,\"1025018825506\":1509788624479,\"1020863454443\":1509788625002,\"1020863454445\":1509788625002,\"1020863454444\":1509788625002,\"1022238830328\":1509788624947,\"1778828863\":1491634246513,\"1021852141557\":1478686417009,\"1022107342472\":1478686417275,\"1019833671170\":1509788624363,\"1019833671169\":1509788624363,\"1019833671168\":1509788624363,\"1025202200186\":1509788624514,\"1022001174700\":1478686417157,\"1022001174691\":1478686417157,\"1025513777629\":1509788624510,\"1022080340995\":1478686417272,\"1014787533490\":1478686804028,\"1021189320472\":1478686417098,\"1021755935186\":1480585069067,\"1025713012169\":1509788624305,\"1022336347003\":1478686417201,\"1021189320482\":1478686417098,\"1020779169708\":1478686417225,\"1021554619876\":1509788624397,\"1023996642920\":1509788624439,\"1025910665622\":1509788667463,\"1015657321856\":1480585069068,\"1012812905533\":1478686417224,\"1022429929965\":1478686417211,\"1022026865147\":1478686417267,\"1022429929959\":1478686417211,\"1022373045871\":1478686417204,\"1022373045873\":1478686417204,\"1017171310716\":1478686804019,\"1022444872284\":1478686417214,\"1020016644496\":1478686804038,\"1016907851854\":1478686804063,\"1024557981769\":1509788624413,\"1021474273470\":1478686417045,\"1024557981781\":1509788624413,\"1020429613664\":1465470268317,\"1024557981777\":1509788624413,\"1024557981779\":1509788624413,\"1020016644495\":1478686804038,\"1020016644494\":1478686804038,\"1024557981789\":1509788624413,\"1020016644493\":1478686804038,\"1020016644492\":1478686804038,\"1020016644491\":1478686804038,\"1021981253349\":1509788624199,\"1020016644490\":1478686804038,\"1024557981785\":1509788624413,\"1021791587253\":1478686417255,\"1007384535239\":1478686804030,\"1024557981794\":1509788624413,\"1024557981806\":1509788624413,\"1024557981802\":1509788624413,\"1021981253323\":1509788624198,\"1022275659901\":1478686417285,\"1024752497695\":1509788667502,\"1024557981808\":1509788624413,\"1023018179764\":1509788624194,\"1651035793\":1444487341726,\"1009840730915\":1491634246520,\"1019867879729\":1478686804057,\"1025315968119\":1509788624381,\"1019495248712\":1465470268273,\"1021519100576\":1478686416974,\"1010091590603\":1491634246516,\"1010091590620\":1491634246516,\"1022407778700\":1478686417208,\"4843146633\":1509788624158,\"1010091590634\":1491634246516,\"1010091590630\":1491634246516,\"1021368099720\":1478686417104,\"1021368099723\":1478686417104,\"1010091590649\":1491634246516,\"1024116711366\":1509788625035,\"1022077195607\":1478686417061,\"1025522034745\":1509788624295,\"1010091590645\":1491634246516,\"1021395362367\":1478686417240,\"1010812384434\":1509788624299,\"1021197707654\":1495284743407,\"1022466499198\":1478686417299,\"1022475943406\":1478943089486,\"1021937343877\":1478686417055,\"1010047288887\":1478686804069,\"1000237715288\":1444487341761,\"1021403495915\":1478686417043,\"1023268262406\":1509788624916,\"1021173198626\":1478686417038,\"1021415292062\":1478686417106,\"1010057249178\":1491634246534,\"1025412829890\":1509788624194,\"1025516529684\":1509788624340,\"1021719236268\":1478686417123,\"1019071097035\":1509788624314,\"1019932497186\":1509788624922,\"1021887004836\":1478686804027,\"1025412829745\":1509788624533,\"1025412829750\":1509788624419,\"1021659869902\":1509788624396,\"1013150664961\":1478686804023,\"1022079292891\":1478686417061,\"1020834611978\":1478686416984,\"1022084928591\":1478686417062,\"1008522264023\":1478686804030,\"1022451164059\":1478686417296,\"1016569797888\":1465470268265,\"1016779116935\":1478686804017,\"1024435169375\":1509788624465,\"1008522264025\":1478686804030,\"1025477996063\":1509788624867,\"1022921836476\":1509788624294,\"1025796373357\":1509788624274,\"1022921836471\":1509788624294,\"1023144531204\":1509788625154,\"1022921836488\":1509788624294,\"1022271465741\":1478686417285,\"1023144531207\":1509788625154,\"5001742310\":1509788667392,\"1023144531213\":1509788625154,\"1023144531208\":1509788625154,\"1021793159870\":1478686417129,\"1023144531209\":1509788625154,\"1025902408109\":1509788667450,\"1021489215673\":1478686417110,\"1024342413993\":1509788625031,\"1024064406474\":1509788624920,\"1022921836497\":1509788624294,\"1077734872\":1444487341749,\"1021319210581\":1478686417102,\"1022479220106\":1478943089315,\"1022454047236\":1478686417297,\"1021319210584\":1478686417102,\"1461385969\":1491634246509,\"1001660783288\":1478686804029,\"327466618\":1444487341730,\"1021234800827\":1478686417099,\"1022204882636\":1480585069086,\"1022204882637\":1480585069086,\"1018539051849\":1478686804064,\"1022204882634\":1480585069086,\"1021865379086\":1478686417053,\"1022204882646\":1480585069086,\"1022204882647\":1480585069086,\"1022204882644\":1480585069086,\"1022204882645\":1480585069086,\"1022204882643\":1480585069086,\"1022204882640\":1480585069086,\"1022204882654\":1480585069086,\"1024535569888\":1509788625027,\"1022204882650\":1480585069086,\"1022204882658\":1480585069086,\"1022092007333\":1478686416975,\"1024225236545\":1509788624419,\"1016871939226\":1509788624976,\"1025118176097\":1509788667888,\"1021748726358\":1478686804069,\"1025412829684\":1509788624816,\"1022204882563\":1480585069086,\"734430593\":1444487341746,\"1022204882574\":1480585069086,\"1022204882573\":1480585069086,\"1022204882570\":1480585069086,\"1022204882582\":1480585069086,\"1025477996031\":1509788624867,\"1022204882580\":1480585069086,\"4994795493\":1509788667393,\"1022331627787\":1478686417068,\"1022204882581\":1480585069086,\"1022204882576\":1480585069086,\"1022204882577\":1480585069086,\"1022204882591\":1480585069086,\"4961241582\":1509788624158,\"1022204882587\":1480585069086,\"1021767469222\":1509788624395,\"1022204882584\":1480585069086,\"1025796372618\":1509788624274,\"1024889589429\":1509788625023,\"1023342079330\":1509788624975,\"1022928127447\":1509788624301,\"1022204882502\":1480585069085,\"1022204882500\":1480585069085,\"1022204882498\":1480585069085,\"1022204882510\":1480585069086,\"1025331434722\":1509788625147,\"1021118386434\":1465470268306,\"1025331434723\":1509788625147,\"1023451784221\":1509788667538,\"1022204882509\":1480585069086,\"1023451784223\":1509788667538,\"1022204882506\":1480585069086,\"1025331434726\":1509788625147,\"1023451784216\":1509788667538,\"1025331434724\":1509788625147,\"1025331434725\":1509788624555,\"1023451784219\":1509788667538,\"1022204882518\":1480585069086,\"1022204882513\":1480585069086,\"1022204882524\":1480585069086,\"1022204882522\":1480585069086,\"1022204882523\":1480585069086,\"1021963952063\":1478686417148,\"1018892293316\":1465470268272,\"1022204882521\":1480585069086,\"1023451784246\":1509788667538,\"1023451784240\":1509788667538,\"1021866296752\":1478686417136,\"1023451784243\":1509788667538,\"4950624700\":1509788624158,\"1018335115202\":1478686804022,\"734430582\":1444487341743,\"1023451784228\":1509788667538,\"1025331434715\":1509788624555,\"1021791586776\":1478686417255,\"1025331434718\":1509788624555,\"1023451784224\":1509788667538,\"1025331434719\":1509788624555,\"1025331434716\":1509788624555,\"1025331434717\":1509788625146,\"1022392837384\":1478686417291,\"1021925802411\":1478686804046,\"1021556324268\":1478686416978,\"1021612815093\":1478686417116,\"1021029389372\":1478686417091,\"1024273339721\":1509788624277,\"1024341889468\":1509788624276,\"1018393047803\":1478686804066,\"1323753487\":1444487341740,\"1323753485\":1444487341748,\"1025524525084\":1509788625099,\"4985882583\":1509788624157,\"1016930921435\":1478686804019,\"1022221004557\":1478686417192,\"1009746229124\":1491634246512,\"1021848863970\":1509788624993,\"1024625098628\":1509788625070,\"1021981252920\":1509788624438,\"1025477995689\":1509788624849,\"1022445789537\":1478686417016,\"1023946573848\":1491634246531,\"1019809685148\":1509788624353,\"1022445789555\":1478686417016,\"1020551901781\":1478686804071,\"1016243434269\":1465470268265,\"1026226536473\":1514456869772,\"1021652529402\":1509788624826,\"862362696\":1509788625016,\"1020886785606\":1509788624183,\"1021197708172\":1495284743407,\"1022390346907\":1478686417015,\"1022579096027\":1480585069123,\"1022511332807\":1480585069130,\"1019932497693\":1509788624930,\"1022074968020\":1509788624190,\"4994795244\":1509788667392,\"1025078985975\":1509788624280,\"1010321757277\":1491634246523,\"1025078985979\":1509788624280,\"1019728937748\":1509788624393,\"1021822781152\":1478686417132,\"1021713468737\":1509788624419,\"1021118386431\":1465470268306,\"1022394148071\":1478686417291,\"1010295281115\":1491634246523,\"1010321757263\":1491634246523,\"1022511332610\":1480585069130,\"1749075912\":1478686804035,\"1021870228305\":1478686417136,\"1021981253033\":1509788625128,\"1012999287822\":1478686804019,\"1012285185945\":1478686417074,\"1019194827716\":1478686804047,\"1169877543\":1480585069060,\"1017446288335\":1478686804066,\"1022085453387\":1478686417062,\"1021726182624\":1478686417051,\"1022932190431\":1509788624871,\"1024953944921\":1509788625069,\"1021371638058\":1509788624933,\"166372944\":1491634246515,\"1024237164132\":1509788624176,\"1019833671167\":1509788624363,\"1019833671165\":1509788624363,\"1024804402230\":1509788624437,\"1019833671164\":1509788624363,\"1019833671163\":1509788624363,\"1019833671162\":1509788624363,\"1024237164130\":1509788624176,\"1021941014349\":1478686417260,\"1025910796855\":1509788667579,\"1021941014357\":1478686417260,\"1021941014363\":1478686417260,\"1022149940183\":1478686417277,\"1013764367897\":1478686804016,\"1021941014377\":1478686417260,\"1021240306091\":1478686417100,\"1020649933927\":1478686417028,\"1008047102802\":1480585069065,\"1025522035450\":1509788624297,\"1008047102805\":1480585069065,\"1021240306105\":1478686417100,\"1022629947792\":1509788625074,\"1024953816299\":1509788625083,\"1016399009530\":1480585069069,\"1022879635586\":1509788624544,\"1025796892350\":1509788624406,\"1024501627378\":1509788624434,\"1025796892337\":1509788624428,\"1025796892338\":1509788624431,\"1025796892339\":1509788624425,\"1022232539394\":1478686417065,\"1022232539396\":1478686417065,\"1021249615857\":1478686417100,\"1024633217069\":1509788624991,\"1024633217070\":1509788624991,\"1023926916618\":1491634246530,\"1014876928933\":1478686804032,\"1022511325867\":1480585069128,\"1023926916617\":1491634246530,\"1023926916622\":1491634246530,\"1800330080\":1444487341735,\"1024633217085\":1509788624991,\"1024633217073\":1509788624991,\"1024633217076\":1509788624992,\"1024633217077\":1509788624991,\"1026227068726\":1514456869769,\"1025049368858\":1509788625097,\"1024633217098\":1509788624991,\"1024633217099\":1509788624992,\"1021713470071\":1509788624447,\"1025049368861\":1509788625097,\"1024633217088\":1509788624991,\"1021713470074\":1509788624447,\"1024633217089\":1509788624991,\"1021713470073\":1509788624447,\"1021713470072\":1509788624447,\"1024633217091\":1509788624991,\"1021173461519\":1465470268185,\"1021173461523\":1465470268185,\"1021173461521\":1465470268185,\"1021173461531\":1465470268185,\"1025049368835\":1509788625097,\"1021173461528\":1465470268185,\"1022226903501\":1478686417065,\"1025049368839\":1509788625097,\"1026227068776\":1514456869769,\"1023277068444\":1509788624889,\"1025797940959\":1509788624866,\"1008207662419\":1478686804023,\"1025530427112\":1509788624186,\"1014850189635\":1478686804028,\"1025530427110\":1509788624198,\"1025530427108\":1509788624201,\"1025530427109\":1509788624204,\"1022235685247\":1478686417193,\"1020891365699\":1478686416999,\"1022511325939\":1480585069128,\"1021469156574\":1478686804050,\"1025049368868\":1509788625097,\"1023834247464\":1491634246533,\"1585377018\":1444487341727,\"1023834247468\":1491634246533,\"1021242406560\":1478686417039,\"1021260625798\":1465470268200,\"1022491271519\":1478943089490,\"1023834247460\":1491634246533,\"1022223102302\":1478686417064,\"1008596444524\":1478686804030,\"248036934\":1491634246533,\"1026227068806\":1514456869769,\"1023471582167\":1509788625083,\"1026227068819\":1514456869769,\"1021461029793\":1478686417242,\"1021461029788\":1478686417242,\"1026227068832\":1514456869769,\"1009854222402\":1491634246533,\"1005149272009\":1478686804016,\"1021980066459\":1478686417263,\"1021979280102\":1478686417056,\"1008118139090\":1478686804030,\"1022334121869\":1478686417201,\"1021967745582\":1478686417149,\"1025530426946\":1509788624425,\"1025530426947\":1509788624407,\"1025530426944\":1509788624428,\"1022203310129\":1478686417190,\"1024177259929\":1509788624419,\"1025530426945\":1509788624431,\"1006011452110\":1478686804040,\"1021891337543\":1478686417054,\"1021590531003\":1478686417114,\"1025908567258\":1509788667458,\"1025908567259\":1509788667460,\"1025796892236\":1509788624827,\"1025505391854\":1509788624341,\"1025796892238\":1509788624822,\"1025505391855\":1509788624337,\"1010002729152\":1491634246525,\"1020117529505\":1465470268242,\"1021662621646\":1509788624396,\"1025874881264\":1509788667829,\"1009997093016\":1491634246520,\"1024912003472\":1509788624927,\"1025505391856\":1509788624344,\"1025796892240\":1509788624616,\"1016301621342\":1480585069066,\"1025513780365\":1509788624207,\"1019024044927\":1480585069072,\"1025513780362\":1509788624207,\"1016422340249\":1478686804019,\"1016422340254\":1478686804034,\"1021967089664\":1509788624215,\"1022297814094\":1478686417199,\"1025513780379\":1509788624230,\"1021088894032\":1478686417232,\"1021088894034\":1478686417232,\"1022060414529\":1478686417012,\"1021790672560\":1478686417255,\"1001517522626\":1444487341752,\"1021164286970\":1478686417038,\"1019882423394\":1509788624359,\"1024226412916\":1509788667463,\"1021527746147\":1478686417047,\"1011906259966\":1478686804049,\"1021912702745\":1478686417140,\"1021961715729\":1509788624452,\"1585377062\":1444487341745,\"1023821402416\":1491634246535,\"1025513780462\":1509788625113,\"1021671133654\":1478686417120,\"1025513780457\":1509788625165,\"1025513780459\":1509788625165,\"1022241584095\":1478686417066,\"1022324684491\":1478686417200,\"1025513780455\":1509788625244,\"1023961389400\":1509788625037,\"1025513780451\":1509788625246,\"1018274817143\":1478686804023,\"1024879111703\":1509788624442,\"1025513780475\":1509788625169,\"1025513780468\":1509788625131,\"1024879111705\":1509788624442,\"1025513780469\":1509788625131,\"1024879111706\":1509788624443,\"1024879111707\":1509788624442,\"1025513780464\":1509788625144,\"1024879111710\":1509788624442,\"1025513780466\":1509788625131,\"1025513780467\":1509788625131,\"1024752494995\":1509788667502,\"1025049368798\":1509788625097,\"1022375541565\":1480585069075,\"1025049368784\":1509788625097,\"1025049368788\":1509788625097,\"1020392252796\":1478686804028,\"1025049368778\":1509788625097,\"1026227068570\":1514456869768,\"1020918497800\":1478686416999,\"1020918497804\":1478686416999,\"1020918497807\":1478686416999,\"1022244336627\":1478686417195,\"1760483661\":1478686804024,\"578720729\":1478950494912,\"1025049368829\":1509788625097,\"1025049368818\":1509788625097,\"1024575683643\":1509788667836,\"1021229299521\":1478686417099,\"1025049368821\":1509788625097,\"1025049368810\":1509788625097,\"1025513780286\":1509788624270,\"1025513780287\":1509788624270,\"1025049368813\":1509788625097,\"1026227068594\":1514456869770,\"1021763409035\":1478686417051,\"1021734966537\":1509788624403,\"1021888191590\":1509788624466,\"1026227068610\":1514456869770,\"1025796892541\":1509788624537,\"1025796892543\":1509788624523,\"1000922856085\":1478686417021,\"1022232539387\":1478686417065,\"1026227068630\":1514456869770,\"1022232539391\":1478686417065,\"1256127294\":1491634246535,\"1256127292\":1491634246520,\"1022866265753\":1509788624439,\"1256127290\":1491634246520,\"1025513780330\":1509788624208,\"1026227068655\":1514456869768,\"1021602983244\":1509788624862,\"1021602983241\":1509788624862,\"1024660349831\":1509788624531,\"1021602983243\":1509788624862,\"1021602983242\":1509788624862,\"1022470307552\":1478686417299,\"1256127273\":1491634246520,\"1020654129834\":1478686804057,\"1021715173397\":1509788624918,\"1021715173396\":1509788624918,\"1021715173393\":1509788624918,\"1021715173395\":1509788624918,\"1021715173394\":1509788624918,\"1021715173405\":1509788624918,\"1021715173404\":1509788624918,\"1021715173407\":1509788624918,\"1021715173401\":1509788624918,\"1021715173403\":1509788624918,\"1021715173402\":1509788624918,\"1022238699730\":1509788624932,\"1023135352160\":1509788625073,\"1025712743362\":1509788624305,\"1022238699728\":1509788624947,\"1004352989920\":1444487341707,\"1021392485701\":1478686417105,\"1022238699734\":1509788624931,\"1022238699735\":1509788624941,\"1022238699733\":1509788624941,\"1016444230202\":1480585069061,\"1022238699736\":1509788624932,\"1021848868927\":1509788624993,\"1022468865327\":1478686804049,\"1022478820020\":1478943089531,\"1020742212155\":1478686417028,\"1021715173412\":1509788624918,\"1021715173414\":1509788624918,\"1021715173408\":1509788624918,\"1021715173411\":1509788624918,\"1021715173410\":1509788624918,\"1022268453156\":1478686417067,\"1022476460687\":1478943089315,\"1022397692274\":1478686417207,\"1022375671939\":1480585069075,\"1010057387723\":1491634246534,\"1021715173417\":1509788624918,\"1022375671941\":1480585172183,\"1021715173416\":1509788624918,\"1009158603871\":1478686804034,\"1018246768280\":1509788625020,\"1022237126838\":1478686417194,\"1021848082512\":1509788624402,\"1022108911815\":1478686417182,\"1021047605661\":1478686417092,\"1809766847\":1444487341729,\"182761606\":1478686417023,\"1022276712185\":1509788624958,\"1021713469530\":1509788624562,\"1022191095249\":1478686417188,\"1021713469529\":1509788624562,\"1021713469528\":1509788624562,\"1021392485695\":1478686417105,\"1021713469533\":1509788624562,\"1023821402653\":1491634246536,\"1020918497770\":1478686416999,\"1021743879873\":1509788624561,\"1021743879872\":1509788624561,\"1023121327269\":1509788624958,\"1018993111772\":1478686804067,\"1023821402849\":1491634246536,\"1021114453330\":1478686417037,\"1024134136157\":1509788667504,\"1025018828179\":1509788624578,\"227458863\":1478950494907,\"1021848475812\":1478686417135,\"1000922855910\":1478686417021,\"1009763002582\":1478686804025,\"1021783332133\":1509788624403,\"1022092004174\":1478686417180,\"1008091006166\":1478686804015,\"1025609070887\":1509788624547,\"1025609070884\":1509788624547,\"1010295015539\":1491634246522,\"1010295015538\":1491634246522,\"1025609070879\":1509788624547,\"1025609070875\":1509788624539,\"472690372\":1444487341748,\"1025609070871\":1509788624551,\"1022105110577\":1478686417182,\"1023405913530\":1509788625003,\"1021427999705\":1478686804026,\"1021694989254\":1478686416985,\"1025609070860\":1509788624564,\"1021743879871\":1509788624561,\"1021743879870\":1509788624561,\"1020975383823\":1478686417086,\"1021076049670\":1478686417002,\"1024134136007\":1509788667504,\"1022436097546\":1478686416975,\"1021861320794\":1509788624399,\"1020496980369\":1478686804053,\"1020496980368\":1478686804053,\"1024879111233\":1509788624220,\"1020496980371\":1478686804054,\"1020496980370\":1478686804054,\"1025609070813\":1509788624547,\"1020496980372\":1478686804054,\"1018888358322\":1509788624281,\"1025609070809\":1509788624547,\"1025609070806\":1509788624539,\"1025609070804\":1509788624539,\"1025609070799\":1509788624552,\"1021355392601\":1465469681399,\"1018993111906\":1478686804067,\"1025609070793\":1509788624564,\"1025609070788\":1509788624564,\"1020496980367\":1478686804053,\"1020496980366\":1478686804053,\"1025514960602\":1509788624338,\"1025514960603\":1509788624337,\"1024527972614\":1509788625027,\"1011906259446\":1478686804049,\"1024879111225\":1509788624220,\"1024879111227\":1509788624220,\"1024879111228\":1509788624220,\"1024879111229\":1509788624220,\"1023933994164\":1491634246531,\"1023933994162\":1491634246531,\"1021713469782\":1509788624222,\"1018156465502\":1509788624929,\"1022067754108\":1509788624337,\"1024879111185\":1509788624856,\"1024879111186\":1509788624856,\"1024879111187\":1509788624856,\"1024879111188\":1509788624856,\"1021746763586\":1478686417254,\"1024879111190\":1509788624856,\"1021713469774\":1509788624222,\"1021139776319\":1478686417096,\"1021713469773\":1509788624222,\"1021713469772\":1509788624222,\"1021828684334\":1509788624402,\"1025609070721\":1509788624547,\"1025018827891\":1509788625190,\"1025102323633\":1509788624307,\"1025609070713\":1509788624547,\"1025609070710\":1509788624539,\"1025609070711\":1509788624539,\"1021861320904\":1509788624399,\"1024444610253\":1509788625030,\"1025609070706\":1509788624564,\"1025007555671\":1509788624977,\"1025161298718\":1509788624180,\"1018559763864\":1478686804015,\"1025161298719\":1509788624180,\"1025609070703\":1509788624564,\"1025609070700\":1509788624564,\"1025161298717\":1509788624180,\"1025102323623\":1509788624307,\"1025161298710\":1509788624180,\"1022065132706\":1478686417174,\"1020294217013\":1465470268297,\"1020916138006\":1478686417032,\"1024028630933\":1509788624517,\"1021743749101\":1478686417125,\"1025161298722\":1509788624180,\"1025102323615\":1509788624307,\"1022601110661\":1509788625062,\"1022644496642\":1509788625061,\"1021684372085\":1478686416972,\"1019165866019\":1478686804020,\"1019165866018\":1478686804026,\"578720173\":1478950494912,\"1025609070637\":1509788624566,\"1025609070635\":1509788624547,\"1025609070633\":1509788624547,\"1021713469924\":1509788624801,\"1025609070628\":1509788624547,\"1022601241850\":1509788625075,\"1025609070624\":1509788624539,\"1022656030781\":1509788624462,\"1025609070622\":1509788624539,\"1009775454276\":1478686804025,\"1025609070617\":1509788624552,\"1020077290078\":1509788624375,\"1025609070610\":1509788624564,\"1020231956876\":1509788624376,\"1025609070607\":1509788624564,\"1019934723012\":1509788625078,\"1025589410558\":1509788624548,\"1018993111971\":1478686804067,\"1020231956875\":1509788624376,\"1020231956874\":1509788624376,\"1012821812210\":1478686417224,\"1017640665870\":1509788624284,\"1025609070593\":1509788624564,\"1024587086537\":1509788667888,\"1021344249912\":1478686417041,\"1024055630490\":1509788624329,\"1024055630489\":1509788624330,\"1025279656847\":1509788625161,\"1024660350584\":1509788624531,\"1025279656851\":1509788625162,\"1025279656852\":1509788625162,\"1025279656853\":1509788625161,\"1024055630464\":1509788624327,\"1025279656855\":1509788625161,\"1020915484601\":1478686417227,\"1020915484607\":1478686417227,\"1024055630474\":1509788624329,\"1020915484606\":1478686417227,\"1024055630518\":1509788624330,\"1022058841021\":1478686417173,\"1020770262637\":1478686417225,\"1020800014510\":1478686417030,\"1025018827582\":1509788624577,\"1020235890199\":1465470268182,\"1022208685236\":1480585069075,\"1024879111003\":1509788625156,\"1024879111004\":1509788625156,\"1024879111005\":1509788625156,\"1024879111006\":1509788625156,\"1024879111007\":1509788625156,\"1022208685263\":1480585069115,\"1024273338329\":1509788624277,\"1025018827594\":1509788624577,\"1024117491342\":1509788624441,\"1025018827588\":1509788624577,\"1025018827590\":1509788624577,\"1025018827585\":1509788624577,\"1025018827586\":1509788624577,\"1025018827587\":1509788624577,\"1024055630535\":1509788624329,\"1025100355586\":1509788624181,\"1024117491349\":1509788624408,\"1024055630528\":1509788624327,\"1021792637740\":1478881022015,\"1022466636661\":1478686417072,\"1024117491355\":1509788624509,\"1009132650570\":1478686804054,\"1009132650571\":1478686804054,\"1014720689821\":1444487341759,\"1020915484608\":1478686417228,\"1021666546835\":1478686417248,\"1020915484620\":1478686417228,\"1021398115465\":1509788624994,\"1022057268020\":1478686417173,\"1022421023085\":1478686417209,\"1022098951614\":1509788624416,\"1021136630814\":1478686417233,\"1021965125030\":1509788624269,\"1017064487345\":1478686804019,\"1021051670312\":1478686417093,\"1024879111072\":1509788624561,\"1021713602249\":1509788624533,\"1002912495122\":1478686417018,\"1021983737566\":1478686417152,\"1012880400450\":1478686417224,\"1025732535886\":1509788624922,\"1025018827740\":1509788625189,\"1025018827741\":1509788625189,\"1025018827743\":1509788625189,\"1021351065980\":1478686417104,\"1025018827738\":1509788625190,\"1025018827739\":1509788625190,\"1020294085236\":1465470268287,\"1025018827744\":1509788625189,\"1024055630459\":1509788624325,\"1025018827745\":1509788625189,\"1025098389691\":1509788624298,\"991334368\":1478686416992,\"1022057268038\":1478686417173,\"1024879111064\":1509788624561,\"1024879111066\":1509788624561,\"1023920493182\":1509788624972,\"1022057268042\":1478686417173,\"1024879111067\":1509788624561,\"1024879111068\":1509788624561,\"1010091989562\":1491634246522,\"1021968533499\":1478686417010,\"1012980281270\":1465470268252,\"1024780282958\":1509788624510,\"4994800829\":1509788667394,\"1025018827267\":1509788624246,\"2029047265\":1491634246513,\"1021197709791\":1495284743407,\"1021212127495\":1509788624171,\"1021928823361\":1509788624974,\"1021928823360\":1509788624974,\"1021928823363\":1509788624974,\"2029047275\":1491634246513,\"1021928823362\":1509788624974,\"1021928823365\":1509788624974,\"1019917681188\":1509788624361,\"1021928823364\":1509788624974,\"1021928823366\":1509788624974,\"1024333105907\":1509788625110,\"2029047254\":1491634246513,\"1022996028057\":1509788624815,\"1021249614589\":1478686804033,\"1021987276530\":1478686417057,\"1020067984662\":1509788625077,\"1022644105098\":1480585069133,\"1021693416575\":1478686804032,\"1021693416574\":1478686804032,\"1000526201262\":1444487341712,\"1019739691164\":1509788624173,\"1021623036100\":1509788624819,\"1021971810302\":1478686417010,\"1000526201267\":1444487341714,\"1016601249695\":1478686804031,\"1021928823359\":1509788624974,\"1021256561215\":1478686417040,\"578721541\":1478950494912,\"1022095674421\":1478686417274,\"1022241585097\":1478686417066,\"1021869316421\":1478686804032,\"1199239920\":1491634246508,\"1017973225103\":1509788624947,\"1021713602451\":1509788624194,\"1199239897\":1491634246507,\"1014983353597\":1478686804052,\"1014983353599\":1478686804052,\"1020985082423\":1478686804031,\"1021860929271\":1509788624992,\"1003079612773\":1478686804017,\"1019882422510\":1509788624362,\"1021940876602\":1478686417260,\"1021406635458\":1509788624816,\"1023735033457\":1509788624970,\"1012396196521\":1478686804028,\"1021388946083\":1478686417240,\"1024451425070\":1509788624931,\"1021138597270\":1478686417096,\"1017604102368\":1478686804022,\"1022668091074\":1509788624971,\"1023617065303\":1509788624969,\"1682756003\":1491634246518,\"1020996619580\":1478686417230,\"715693919\":1478686417020,\"1021388946069\":1478686417240,\"1021692105866\":1509788624304,\"1021336386187\":1478686417041,\"1000527905527\":1444487341713,\"1025513780106\":1509788624838,\"1022721042441\":1509788625058,\"1025513780096\":1509788624838,\"1021336386201\":1478686417041,\"227457950\":1478950494906,\"1021336386200\":1478686417041,\"1021336386199\":1478686417041,\"1024459681919\":1509788625029,\"1025561886349\":1509788624304,\"1024633218596\":1509788624991,\"1024633218597\":1509788624991,\"1024633218599\":1509788624991,\"1025018827068\":1509788624247,\"1020294084753\":1465470268287,\"1022491797398\":1478943089532,\"1019607962505\":1509788624317,\"1014669543850\":1478686804016,\"1019882423057\":1509788624353,\"1024660349987\":1509788624531,\"1021791064537\":1478686416976,\"1021707441158\":1509788624436,\"1002269240700\":1478686804023,\"1010069707335\":1491634246534,\"1025513779982\":1509788624546,\"1025513779976\":1509788624539,\"1025513779978\":1509788624552,\"1025521251261\":1509788624825,\"1024782249908\":1509788624456,\"1022428756989\":1478686417070,\"1025513779999\":1509788624546,\"1021965125543\":1509788624271,\"1025521251246\":1509788624847,\"1021946513081\":1478686417144,\"1025513779994\":1509788624546,\"1025513779988\":1509788624546,\"1025513779991\":1509788624546,\"1021252235562\":1478686416981,\"1022076407492\":1509788624924,\"1024332843198\":1509788624476,\"1025513780002\":1509788624545,\"1023210195526\":1509788624269,\"1022468602288\":1478686416979,\"1023844603846\":1509788624940,\"1023844603847\":1509788624940,\"1009715421568\":1491634246511,\"1025561230859\":1509788624523,\"1025513780058\":1509788624864,\"1025513780052\":1509788624916,\"1020200369823\":1509788624363,\"1025513780049\":1509788624916,\"1022201317824\":1478686417064,\"1020200369827\":1509788624363,\"1020200369826\":1509788624363,\"1025018827246\":1509788624247,\"1020200369825\":1509788624363,\"1025513780078\":1509788624826,\"1020200369824\":1509788624363,\"1021573885058\":1509788624814,\"1025513780079\":1509788624849,\"1020200369831\":1509788624363,\"1025513780072\":1509788624864,\"1020200369830\":1509788624363,\"1020200369829\":1509788624363,\"1020200369828\":1509788624363,\"1025671854279\":1509788624943,\"1020200369832\":1509788624363,\"1025018827256\":1509788624247,\"1025513780088\":1509788624838,\"1021252104518\":1465470268197,\"1025018827258\":1509788624247,\"1025018827259\":1509788624247,\"1025018827253\":1509788624247,\"1021807582825\":1478686417255,\"1025513780082\":1509788624838,\"1025018827251\":1509788624247,\"1020818758243\":1478686417226,\"578721147\":1478950494912,\"1021965125181\":1509788624269,\"1021860928595\":1509788624992,\"1025874619676\":1509788667581,\"1025874619677\":1509788667581,\"1021891336840\":1478686417054,\"1024365836038\":1495284743424,\"1021306109272\":1478686417041,\"1022242239911\":1478686417283,\"1025344277655\":1509788625016,\"1020818758239\":1478686417226,\"1868879967\":1444487341749,\"1023319536973\":1509788624926,\"1022996027523\":1509788625100,\"1022457460888\":1480585069112,\"1025372457816\":1509788624543,\"1022457460889\":1480585069112,\"1025372457817\":1509788624537,\"1025372457818\":1509788624524,\"1022397168691\":1478686417206,\"1022457460891\":1480585069112,\"1022457460893\":1480585069113,\"1022457460895\":1480585069113,\"1022457460880\":1480585069112,\"1021906147838\":1509788624465,\"1022457460882\":1480585069112,\"1022457460883\":1480585069112,\"1218772968\":1480585069060,\"1022457460884\":1480585069112,\"1019882422811\":1509788624362,\"1022457460885\":1480585069112,\"1020857423995\":1478686417227,\"1022457460886\":1480585069112,\"1025372457815\":1509788624541,\"1022457460875\":1480585069112,\"1022457460878\":1480585069112,\"1022996027622\":1509788624193,\"1018885475837\":1509788624301,\"1021910604051\":1478686417259,\"1025513779948\":1509788624613,\"1025513779951\":1509788624611,\"1024058906913\":1509788624290,\"1022020829883\":1478686417162,\"1024597702991\":1509788624937,\"1022454577289\":1478686417297,\"1025671854413\":1509788624942,\"1022020829874\":1478686417162,\"1014720689549\":1444487341759,\"1024660350235\":1509788624531,\"1022107340227\":1478686417275,\"1025513779956\":1509788624565,\"1025601207564\":1509788624178,\"1022457460899\":1480585069113,\"1022457460824\":1480585069116,\"1021736932136\":1478686417124,\"1022457460825\":1480585069116,\"1022457460827\":1480585069116,\"1025299976130\":1509788624292,\"1022457460818\":1480585069116,\"1022457460819\":1480585069116,\"1022457460822\":1480585069116,\"1021924235282\":1509788667538,\"1020918498309\":1478686417081,\"1020719272166\":1478686417028,\"1022857089137\":1509788625166,\"1019623821603\":1447944718215,\"1022457460848\":1480585069117,\"1022857089100\":1509788625141,\"1022457460851\":1480585069117,\"1022457460840\":1480585069117,\"1022457460841\":1480585069117,\"2010431589\":1491634246533,\"1022457460842\":1480585069117,\"1022956706724\":1509788624439,\"1022956706725\":1509788624439,\"1024660350428\":1509788624531,\"1022457460832\":1480585069117,\"1021154981571\":1478686417097,\"1022457460836\":1480585069117,\"1022457460837\":1480585069117,\"1022457460839\":1480585069117,\"1021693679261\":1478686804028,\"1021693679259\":1478686804028,\"1019827504465\":1509788624285,\"1019827504466\":1509788624285,\"1021049048167\":1478686417093,\"1006334966040\":1478686804017,\"1022996027504\":1509788624533,\"1023970303555\":1509788625037,\"1021693679245\":1478686804028,\"1022457460744\":1480585069116,\"1012241144191\":1478686416985,\"1022457460746\":1480585069116,\"1021981640164\":1478686417057,\"1021049048186\":1478686417093,\"1022457460748\":1480585069116,\"1011906260334\":1478686804049,\"1025689155823\":1509788624351,\"1002912494862\":1478686417018,\"1022457460737\":1480585069116,\"1022457460738\":1480585069116,\"1022457460740\":1480585069116,\"1004344336545\":1444487341756,\"1022457460743\":1480585069116,\"1022457460792\":1480585069116,\"1022457460794\":1480585069116,\"1022457460796\":1480585069116,\"1022457460784\":1480585069116,\"1022457460785\":1480585069116,\"1022457460787\":1480585069116,\"1025671854539\":1509788624942,\"1934279846\":1444487341748,\"1021965125343\":1509788624269,\"1022457460789\":1480585069116,\"1022457460776\":1480585069116,\"1022457460777\":1480585069116,\"1022457460778\":1480585069116,\"1000527905536\":1444487341714,\"1022457460780\":1480585069116,\"1022457460781\":1480585069116,\"1022457460783\":1480585069116,\"1021693679269\":1478686804028,\"1022457460774\":1480585069116,\"1022457460775\":1480585069116,\"1022511326589\":1480585069128,\"1022763112832\":1509788624379,\"1022457460697\":1480585069116,\"1022763112833\":1509788624379,\"1025289096979\":1509788624286,\"1022457460700\":1480585069116,\"1022457460701\":1480585069116,\"1022457460702\":1480585069116,\"1022457460688\":1480585069116,\"1022457460689\":1480585069116,\"1022457460691\":1480585069116,\"1022457460692\":1480585069116,\"1022457460693\":1480585069116,\"1023995597319\":1491634246532,\"1022457460694\":1480585069116,\"1022457460695\":1480585069116,\"1023995597317\":1491634246529,\"1025609069550\":1509788624840,\"1020437999142\":1478686804029,\"1025779592647\":1509788624349,\"1022457460684\":1480585069116,\"1022457460685\":1480585069116,\"1022457460686\":1480585069116,\"1022457460687\":1480585069116,\"1025609069545\":1509788624841,\"1022049668633\":1509788624474,\"1022457460728\":1480585069116,\"1022953690116\":1509788624291,\"1025609069534\":1509788624841,\"1022457460729\":1480585069116,\"1022457460731\":1480585069116,\"1025609069528\":1509788624826,\"772314657\":1444487341748,\"1021602456708\":1478686804046,\"1022457460723\":1480585069116,\"1022457460724\":1480585069116,\"1025609069522\":1509788624848,\"1022457460725\":1480585069116,\"1022457460726\":1480585069116,\"1022457460727\":1480585069116,\"1025609069518\":1509788624864,\"1025609069509\":1509788624864,\"1019427742221\":1478686804021,\"1022457460634\":1480585069116,\"1022457460636\":1480585069116,\"1022457460637\":1480585069116,\"1022457460638\":1480585069116,\"1022457460639\":1480585069116,\"1021965126009\":1509788624269,\"1022850145853\":1509788624437,\"1022457460616\":1480585069115,\"1020201545855\":1478686804053,\"1022457460618\":1480585069115,\"1022457460619\":1480585069115,\"1021007364209\":1478686417089,\"1022457460620\":1480585069115,\"1025902535732\":1509788667461,\"1025902535733\":1509788667457,\"1025902535734\":1509788667458,\"1021680572498\":1478686804028,\"1025902535735\":1509788667466,\"1022457460609\":1480585069115,\"1022457460611\":1480585069115,\"1022457460613\":1480585069115,\"1024028628079\":1509788624517,\"1022457460614\":1480585069115,\"1716313645\":1491634246534,\"1020194336989\":1509788625076,\"1022459426780\":1478686417217,\"1022071947446\":1478686417176,\"1022071947448\":1478686417176,\"1022457460657\":1480585069116,\"1022457460659\":1480585069116,\"1021490392336\":1478686416990,\"1006992805352\":1478686804030,\"1022457460648\":1480585069116,\"1022457460651\":1480585069116,\"1022457460652\":1480585069116,\"1022457460653\":1480585069116,\"1022457460654\":1480585069116,\"1022457460655\":1480585069116,\"1025609069447\":1509788624435,\"1022457460642\":1480585069116,\"1022457460645\":1480585069116,\"1020236673611\":1509788624287,\"1022457460568\":1480585069115,\"1022457460569\":1480585069115,\"1008304552905\":1509788624310,\"1987628794\":1444487341722,\"1022457460570\":1480585069115,\"1025609069436\":1509788624451,\"1022457460572\":1480585069115,\"1022457460574\":1480585069115,\"1022457460575\":1480585069115,\"1022457460563\":1480585069115,\"1025609069429\":1509788624451,\"1022457460564\":1480585069115,\"1022457460565\":1480585069115,\"1022457460567\":1480585069115,\"1021004349671\":1478686417089,\"1022457460600\":1480585069115,\"1022457460601\":1480585069115,\"1022215764098\":1478686417064,\"1022457460603\":1480585069115,\"1022457460604\":1480585069115,\"1024828515521\":1509788624925,\"1022457460606\":1480585069115,\"1019835370151\":1509788625076,\"1022457460596\":1480585069115,\"273590499\":1444487341723,\"1021004349657\":1478686417089,\"1022457460599\":1480585069115,\"1023926787733\":1491634246530,\"1022457460576\":1480585069115,\"1022457460577\":1480585069115,\"1022457460578\":1480585069115,\"1023926787736\":1491634246530,\"1022457460581\":1480585069115,\"1022457460582\":1480585069115,\"578722497\":1478950494912,\"1024094685411\":1509788624521,\"1022457460507\":1480585069115,\"1021965126135\":1509788624269,\"1021671790666\":1478686417050,\"1024094685413\":1509788624523,\"1022457460496\":1480585069115,\"1022457460497\":1480585069115,\"1025609069367\":1509788624547,\"1022457460498\":1480585069115,\"1025609069365\":1509788624547,\"1022238177798\":1478686417282,\"1022457460500\":1480585069115,\"1022457460502\":1480585069115,\"1022996027248\":1509788624419,\"1022457460503\":1480585069115,\"1021897889248\":1478686417010,\"1024028628195\":1509788624517,\"1022474496006\":1478943089531,\"1024117885458\":1509788624325,\"1025609069342\":1509788624552,\"1025609069340\":1509788624564,\"1022457460529\":1480585069115,\"1021885437214\":1478686417024,\"1025609069331\":1509788624564,\"1022139843669\":1478686417277,\"1021008412870\":1478686804040,\"1022457460523\":1480585069115,\"1009839548216\":1491634246520,\"1022457460525\":1480585069115,\"1022457460512\":1480585069115,\"1022457460516\":1480585069115,\"1022457460517\":1480585069115,\"1022457460519\":1480585069115,\"1021965125687\":1509788624269,\"1020021491682\":1465470268315,\"1022511328140\":1480585069128,\"1021669824934\":1478686417009,\"1020294215612\":1465470268297,\"1019000715480\":1480585069067,\"1024365836549\":1495284743424,\"4994797717\":1509788667394,\"1022377374650\":1478686804071,\"1021885437149\":1478686417024,\"1020437999365\":1478686804066,\"1025796894623\":1509788624185,\"1020942748981\":1478686417033,\"1025532264403\":1509788624338,\"1023198397135\":1509788624424,\"1012342197732\":1478686417026,\"1022072078736\":1509788624945,\"1016284456687\":1480585069064,\"1022511328202\":1480585069128,\"1023143215542\":1509788625045,\"1021721860835\":1509788624400,\"1008155755391\":1478686804030,\"1021844542239\":1478686417257,\"1016301623745\":1480585069065,\"1010024485806\":1491634246521,\"1021008413009\":1478686804026,\"1010024485803\":1491634246526,\"1021995141666\":1478686417156,\"1022202395035\":1480585069084,\"1021008413005\":1478686804022,\"1021653444319\":1509788624206,\"1020925577861\":1478686417082,\"1021871281455\":1509788624399,\"1025902667258\":1509788667460,\"1025902667255\":1509788667466,\"1025902667252\":1509788667464,\"1025902667250\":1509788667457,\"1025902667251\":1509788667461,\"1022039707443\":1478686417169,\"1004668867465\":1478686804052,\"1004668867464\":1478686804052,\"1021865775754\":1509788624402,\"1024880027367\":1509788624443,\"1022203181432\":1478686417280,\"1024880027370\":1509788624443,\"1024880027371\":1509788624443,\"1024880027369\":1509788624443,\"1024880027372\":1509788624443,\"1023995597717\":1491634246532,\"1021470338350\":1478686416973,\"4994797587\":1509788667394,\"4989817038\":1509788624159,\"1020824392894\":1509788624934,\"1021613598140\":1478686416991,\"4989817040\":1509788624159,\"4989817046\":1509788624159,\"4989817045\":1509788624159,\"4989817044\":1509788624159,\"1004668867527\":1478686804052,\"1004668867526\":1478686804052,\"1004668867525\":1478686804052,\"1021861057165\":1509788624465,\"1004668867532\":1478686804052,\"1004668867531\":1478686804052,\"1004668867530\":1478686804052,\"1004668867529\":1478686804052,\"1004668867528\":1478686804052,\"1010002727395\":1491634246524,\"1009997091259\":1491634246520,\"1010002727398\":1491634246524,\"1019006613682\":1509788624315,\"1021965125865\":1509788624269,\"1025855480051\":1509788667405,\"1024597702648\":1509788624937,\"1016839436629\":1478686804031,\"1022189782602\":1478686417279,\"1022008642922\":1478686417158,\"1020938816938\":1478686417033,\"1020437999552\":1478686804066,\"1022202394902\":1480585069085,\"1021938780836\":1509788624959,\"1022306860251\":1478686417199,\"1022306860249\":1478686417199,\"1025784704886\":1509788624349,\"1001813768763\":1478686804029,\"1022477118105\":1478943089531,\"1012210210463\":1478686417223,\"1024433995767\":1509788624818,\"1021965126417\":1509788624271,\"1024950540572\":1509788625178,\"1022074831526\":1509788624530,\"1021258005873\":1465470268198,\"1020254499116\":1509788625077,\"1021652788637\":1509788624396,\"1000368656451\":1478686416993,\"1022389563902\":1478686417015,\"1021195090218\":1478686417235,\"1022444877017\":1478686417214,\"1021924890071\":1478686416980,\"1024433995691\":1509788624534,\"1024365836892\":1495284743424,\"1021712423013\":1478686417050,\"1021712423019\":1478686417050,\"1022457460112\":1480585069113,\"1022457460114\":1480585069113,\"1021712423023\":1478686417051,\"1022457460116\":1480585069113,\"1022457460104\":1480585069113,\"1021712423026\":1478686417051,\"1022457460105\":1480585069113,\"1022457460106\":1480585069113,\"1022292443101\":1478686417198,\"1022457460108\":1480585069113,\"1022457460111\":1480585069113,\"1022457460099\":1480585069113,\"1022457460100\":1480585069113,\"1022457460102\":1480585069113,\"1022457460103\":1480585069113,\"1024950540638\":1509788625178,\"1022202395268\":1480585069085,\"1021156293430\":1478686417038,\"1001813768796\":1478686804029,\"1024273334752\":1509788624277,\"1012138119860\":1478686417025,\"1024950540608\":1509788625178,\"1553786595\":1444487341755,\"1022457460056\":1480585069115,\"1022457460057\":1480585069115,\"1022425610044\":1478686417070,\"1022457460058\":1480585069115,\"1022457460059\":1480585069115,\"1022457460062\":1480585069115,\"1022457460052\":1480585069115,\"1021713602689\":1509788624816,\"1022457460053\":1480585069115,\"1022457460054\":1480585069115,\"1022371606628\":1478686417204,\"1021736279621\":1478686417251,\"1021164157017\":1478686417097,\"1021736279616\":1478686417251,\"1022457460047\":1480585069115,\"1021164157012\":1478686417097,\"1023354928832\":1509788625040,\"1021317116238\":1478686417102,\"1020901853197\":1478686417227,\"1023933996406\":1491634246531,\"793286121\":1491634246506,\"1023933996400\":1491634246531,\"1023933996401\":1491634246529,\"1021990816034\":1509788624978,\"1020824393632\":1509788624945,\"1022511327281\":1480585069128,\"1021995141619\":1478686417156,\"1021995141618\":1478686417156,\"1022457460065\":1480585069115,\"1023933996399\":1491634246531,\"1022457460066\":1480585069115,\"1022457460067\":1480585069115,\"1022457460068\":1480585069115,\"1022457459999\":1480585069114,\"1020976696529\":1478686417087,\"1022457459976\":1480585069114,\"1022457459979\":1480585069114,\"1021965126631\":1509788624188,\"1022457459970\":1480585069114,\"1017808175146\":1478686804016,\"1022457459974\":1480585069114,\"1022457459975\":1480585069114,\"1022850145455\":1509788625074,\"1020626212891\":1478686804028,\"1021018506103\":1478686417090,\"1022457460016\":1480585069115,\"1021736279614\":1478686417251,\"1022457460009\":1480585069114,\"1022457460010\":1480585069114,\"1022457460011\":1480585069114,\"1022457460012\":1480585069114,\"1022233197506\":1509788624181,\"1022457460013\":1480585069115,\"1022233197507\":1509788624181,\"1022457460014\":1480585069115,\"1022457460000\":1480585069114,\"1022457460001\":1480585069114,\"1022457460002\":1480585069114,\"1022233197514\":1509788624181,\"1022233197515\":1509788624181,\"1022457460006\":1480585069114,\"1022233197512\":1509788624181,\"1022457460007\":1480585069114,\"1022233197513\":1509788624181,\"1022457459928\":1480585069114,\"1022457459929\":1480585069114,\"1022457459930\":1480585069114,\"1022457459922\":1480585069114,\"1022457459926\":1480585069114,\"1022298865187\":1478686417287,\"1022457459927\":1480585069114,\"1020999369650\":1478686416990,\"1022457459916\":1480585069114,\"1025100355396\":1509788624273,\"1022457459917\":1480585069114,\"1022457459918\":1480585069114,\"1024727854463\":1509788624170,\"1022457459909\":1480585069114,\"1022457459962\":1480585069114,\"1022457459953\":1480585069114,\"1022457459954\":1480585069114,\"1022457459955\":1480585069114,\"1022457459956\":1480585069114,\"1022457459957\":1480585069114,\"1024433995461\":1509788624195,\"1022457459947\":1480585069114,\"1021685422827\":1509788624396,\"1021670087568\":1478686417120,\"1022457459949\":1480585069114,\"1022057401587\":1478686417270,\"1020626213309\":1478686804028,\"1021810856704\":1478686417131,\"601659545\":1444487341743,\"1022457459856\":1480585069114,\"1023110319495\":1509788624299,\"1022151247696\":1478686417185,\"1022457459859\":1480585069114,\"1022457459860\":1480585069114,\"1023821536039\":1491634246523,\"1022457459848\":1480585069114,\"1022457459850\":1480585069114,\"1022185587899\":1478686417187,\"1022457459853\":1480585069114,\"1619057622\":1478950494926,\"1021351065342\":1478686417104,\"1022457459840\":1480585069114,\"1022457459841\":1480585069114,\"1024947525654\":1509788625069,\"1022060153918\":1478686804050,\"1022457459843\":1480585069114,\"1022457459844\":1480585069114,\"1022202395569\":1480585069085,\"1022457459847\":1480585069114,\"1020824393298\":1509788624945,\"1022457459896\":1480585069114,\"1022457459902\":1480585069114,\"572168562\":1478950494911,\"1021959621135\":1509788624466,\"1022073258964\":1478686417176,\"1022457459893\":1480585069114,\"1022426396357\":1478686417211,\"1020977745042\":1478686417087,\"1864291429\":1478950494927,\"1020712459430\":1509788624392,\"1025278872588\":1509788624461,\"1022457459801\":1480585069114,\"1025278872590\":1509788624461,\"1025278872591\":1509788624461,\"1022202395496\":1480585069085,\"1022457459805\":1480585069114,\"1025278872587\":1509788624461,\"1022457459794\":1480585069114,\"1024098880104\":1509788624534,\"1022457459797\":1480585069114,\"1553786642\":1444487341755,\"1021985966176\":1478686417153,\"1022457459786\":1480585069114,\"1022457459787\":1480585069114,\"1025278872600\":1509788624461,\"1022457459789\":1480585069114,\"1021985966182\":1478686417153,\"1020918892792\":1478686804031,\"1021985966185\":1478686417153,\"1022457459776\":1480585069114,\"1025278872597\":1509788624461,\"1022457459782\":1480585069114,\"1025278872594\":1509788624461,\"1025278872595\":1509788624461,\"1025530428718\":1509788624543,\"1025530428719\":1509788624537,\"1022457459835\":1480585069114,\"1025530428717\":1509788624541,\"1019872726638\":1478686804021,\"1024637676129\":1509788667503,\"1024950540440\":1509788625178,\"1022457459839\":1480585069114,\"1021985966175\":1478686417153,\"1024365837228\":1495284743424,\"1021965126279\":1509788624269,\"1025530428729\":1509788624524,\"1023210194753\":1509788624915,\"1020526339917\":1465470268323,\"1024950540419\":1509788625178,\"1024727854500\":1509788624170,\"1020073097777\":1509788624386,\"1008286857659\":1478686804030,\"1024727854497\":1509788624170,\"1021327339761\":1478686417005,\"1024727854498\":1509788624170,\"1006617814075\":1509788624386,\"1022457459730\":1480585069113,\"1010069706745\":1491634246534,\"1022457459732\":1480585069113,\"1016664690385\":1478686804042,\"1022457459733\":1480585069113,\"1024727854505\":1509788624170,\"1024950540529\":1509788625178,\"1022457459720\":1480585069113,\"1022457459723\":1480585069113,\"1024077255935\":1509788624518,\"1024880026790\":1509788624557,\"1020990328060\":1478686417088,\"1022457459725\":1480585069113,\"1025100355461\":1509788624173,\"1024880026791\":1509788624557,\"1025756260589\":1509788624969,\"1017808175395\":1478686804016,\"1022457459727\":1480585069113,\"1022457459712\":1480585069113,\"1024880026795\":1509788624557,\"1022457459714\":1480585069113,\"1024880026792\":1509788624557,\"1024880026793\":1509788624557,\"1022457459718\":1480585069113,\"1022202395405\":1480585069085,\"1022457459770\":1480585069113,\"1024727854470\":1509788624170,\"1024727854471\":1509788624170,\"1024727854465\":1509788624170,\"1022079812542\":1478686417272,\"1024727854467\":1509788624170,\"1022071292725\":1478686417012,\"1020526339866\":1465470268322,\"1022071292723\":1478686417012,\"1022457459764\":1480585069113,\"1022457459765\":1480585069113,\"1022457459767\":1480585069113,\"1024727854475\":1509788624170,\"1024727854485\":1509788624170,\"1024727854486\":1509788624169,\"1024727854480\":1509788624170,\"1024950540491\":1509788625178,\"1022502677232\":1509788625007,\"857245935\":1478686417020,\"1022260066411\":1478686417301,\"1022060154013\":1478686804050,\"857245922\":1478686417020,\"1024885531876\":1509788625023,\"1024727854495\":1509788624170,\"1024727854490\":1509788624169,\"1022457459672\":1480585069113,\"1022457459673\":1480585069113,\"1022457459674\":1480585069113,\"1022457459676\":1480585069113,\"1022457459678\":1480585069113,\"1022457459664\":1480585069113,\"1022457459665\":1480585069113,\"1021713604100\":1509788624220,\"1022457459667\":1480585069113,\"1022457459668\":1480585069113,\"1022457459656\":1480585069113,\"1023996909062\":1509788624430,\"1021462998796\":1478686417108,\"1022457459663\":1480585069113,\"1022457459648\":1480585069113,\"1024727853688\":1509788624168,\"1021482133988\":1478686417007,\"1022457459654\":1480585069113,\"1024779494736\":1509788624477,\"1022457459708\":1480585069113,\"1022457459709\":1480585069113,\"1022457459711\":1480585069113,\"1023730837466\":1509788624969,\"1024779494723\":1509788624477,\"1022457459680\":1480585069113,\"1021468371095\":1509788624405,\"1022457459681\":1480585069113,\"1024779494730\":1509788624477,\"1025609070532\":1509788624840,\"1025609070533\":1509788624840,\"1024779494732\":1509788624477,\"1023884712166\":1509788624258,\"1025609070524\":1509788624863,\"1021957262798\":1478686417147,\"1022291261925\":1478686804044,\"1022060153632\":1478686804050,\"1022291261926\":1478686804044,\"1023884712160\":1509788624258,\"1022291261927\":1478686804044,\"1024779494711\":1509788624477,\"1022291261928\":1478686804044,\"1022291261929\":1478686804044,\"1024779494713\":1509788624477,\"1024576467235\":1509788624507,\"1022291261930\":1478686804044,\"1023884712172\":1509788624258,\"1022291261931\":1478686804044,\"1022291261932\":1478686804044,\"1022291261933\":1478686804044,\"1022291261934\":1478686804044,\"1023884712168\":1509788624258,\"1024779494718\":1509788624477,\"1022291261935\":1478686804044,\"1022291261936\":1478686804044,\"1022291261937\":1478686804044,\"1022291261938\":1478686804044,\"1023884712180\":1509788624258,\"1021226023278\":1478686417099,\"1022291261940\":1478686804044,\"1023884712178\":1509788624258,\"1022291261941\":1478686804044,\"1021957262813\":1478686417147,\"1022291261942\":1478686804045,\"1023884712176\":1509788624258,\"1022291261943\":1478686804045,\"1022291261944\":1478686804045,\"1022291261945\":1478686804045,\"1022291261946\":1478686804045,\"1022291261947\":1478686804045,\"1021617660313\":1478686417117,\"1022291261948\":1478686804045,\"1022291261949\":1478686804045,\"1023884712184\":1509788624258,\"1022457459641\":1480585069113,\"1022457459642\":1480585069113,\"1022457459644\":1480585069113,\"1022457459645\":1480585069113,\"695768351\":1478686804024,\"1022457459647\":1480585069113,\"1023884712142\":1509788624258,\"1021957262821\":1478686417147,\"1218770132\":1480585069060,\"1023884712150\":1509788624258,\"1023884712148\":1509788624258,\"1023884712149\":1509788624258,\"1021523815176\":1478686417047,\"1023884712145\":1509788624258,\"1021934980232\":1509788624815,\"1012140741848\":1478686417073,\"1023884712159\":1509788624258,\"1023884712156\":1509788624258,\"1023884712157\":1509788624258,\"1023884712153\":1509788624258,\"1025609070461\":1509788624866,\"1022184800913\":1478686417013,\"1664933809\":1491634246534,\"1020496979489\":1478686804054,\"1000237719209\":1444487341761,\"1025609070447\":1509788624840,\"1021049440053\":1478686417232,\"1024779494885\":1509788624478,\"741511339\":1478686417020,\"1910558075\":1444487341730,\"1025609070437\":1509788624826,\"1013878666130\":1478686804015,\"1021684899174\":1509788624396,\"1022288771428\":1478686417067,\"1025609070428\":1509788624864,\"1023111105124\":1509788625045,\"1025609070422\":1509788624864,\"1020526338138\":1465470268322,\"1021687782676\":1509788624396,\"1022470304676\":1478686417073,\"1019000716665\":1480585069063,\"1021713604277\":1509788624857,\"1022347097334\":1478686417202,\"1021713604273\":1509788624857,\"1021713604275\":1509788624857,\"1021713604274\":1509788624857,\"1022173397601\":1478686417278,\"1012138120206\":1478686417025,\"1218770019\":1480585069060,\"1025620735972\":1509788624932,\"1025620735973\":1509788624946,\"1020654133149\":1478686804057,\"1022030662113\":1509788624463,\"1025620735974\":1509788624931,\"1025620735975\":1509788624941,\"1021755545920\":1509788624403,\"1025609070384\":1509788624840,\"1025620735970\":1509788624941,\"1025620735971\":1509788624930,\"1022879634521\":1509788625111,\"1019846119330\":1509788624282,\"1021500746301\":1478686804031,\"1025609070360\":1509788624826,\"2387620537\":1509976385181,\"1021327865854\":1465470268218,\"1021327865853\":1465470268218,\"1021327865852\":1465470268218,\"1023020403934\":1509788625049,\"1021327865850\":1465470268218,\"1021327865848\":1465470268218,\"336374004\":1444487341740,\"1024365837536\":1495284743424,\"1021327865846\":1465470268217,\"1022173397596\":1478686417278,\"1021327865845\":1465470268217,\"1024798107310\":1509788625176,\"1021327865844\":1465470268217,\"1025609070341\":1509788624864,\"1021327865842\":1465470268217,\"1022502677510\":1509788625007,\"1026226541105\":1514456869772,\"1018469194902\":1509788624428,\"1022697185387\":1509788625015,\"1022697185381\":1509788625015,\"1022697185378\":1509788625015,\"1022697185379\":1509788625015,\"1019369417413\":1509788624369,\"1023578927088\":1491634246536,\"1023578927089\":1491634246536,\"1023578927090\":1491634246536,\"1024028627232\":1509788624517,\"1023578927096\":1491634246536,\"4994798738\":1509788667394,\"1026226541079\":1514456869772,\"1025609070290\":1509788624866,\"1021676117351\":1478686417249,\"1022697185374\":1509788625015,\"1025609070284\":1509788624840,\"1022697185372\":1509788625015,\"1022697185370\":1509788625016,\"1025609070281\":1509788624840,\"1025609070278\":1509788624840,\"1019384227294\":1509788624933,\"1024098880732\":1509788624195,\"1025609070272\":1509788624826,\"1026226541070\":1514456869772,\"1025609070268\":1509788624826,\"1009844265671\":1509788624353,\"1025609070261\":1509788624848,\"1021934980529\":1509788624533,\"1025609070255\":1509788624864,\"1025609070250\":1509788624864,\"1022697185339\":1509788625016,\"1025609070249\":1509788624864,\"1021005792514\":1478686417231,\"1024919870579\":1509788624218,\"1021455789581\":1509788624977,\"1024919870577\":1509788624218,\"1024919870581\":1509788624218,\"1024919870584\":1509788624218,\"1026226541146\":1514456869772,\"1012138120615\":1478686417025,\"1023862824804\":1491634246520,\"1020842087282\":1509788625021,\"1026226541122\":1514456869772,\"1021934849418\":1478686417143,\"1021588825831\":1509788624437,\"1024919870574\":1509788624218,\"1025609070204\":1509788624229,\"1025609070194\":1509788624209,\"1025792174235\":1509788624349,\"1024954472819\":1509788625021,\"1025609070189\":1509788624199,\"1767691464\":1478950494926,\"749244720\":1444487341751,\"1012524778072\":1478686416991,\"1026226541200\":1514456869772,\"1024024039899\":1509788624277,\"1020082535648\":1465470268310,\"1000789556984\":1478686804059,\"1021092692122\":1478686417094,\"1024028627355\":1509788624517,\"1022086366303\":1478686417179,\"1021287494695\":1465470268201,\"1024919870626\":1509788625151,\"1024919870627\":1509788625151,\"1021287494692\":1465470268201,\"1024919870625\":1509788625151,\"1022359417860\":1478686417289,\"1024919870630\":1509788625151,\"1002035671205\":1478686417019,\"1024919870628\":1509788625151,\"1009865104887\":1478686804025,\"1009275388113\":1478686804024,\"1024723528474\":1509788667888,\"1024888151368\":1509788624342,\"1020988361355\":1478686416992,\"1020551897230\":1478686804047,\"1025609070131\":1509788624229,\"1021558678662\":1509788624401,\"1025609070124\":1509788624209,\"158381219\":1444487341704,\"1025609070121\":1509788624209,\"1022060153533\":1478686804050,\"1025609070118\":1509788624199,\"1025609070119\":1509788624199,\"1024098880568\":1509788624819,\"1022021355534\":1509788624420,\"1025609070110\":1509788624227,\"1021748730356\":1509788624615,\"1021748730353\":1509788624615,\"1022060153485\":1478686804050,\"1021748730367\":1509788624614,\"1021748730361\":1509788624615,\"1022424428576\":1509788624352,\"1021934980365\":1509788624194,\"1021748730349\":1509788624615,\"1012160009312\":1478686417025,\"1021748730350\":1509788624615,\"1021748730347\":1509788624614,\"1021172022388\":1478686417098,\"1021172022384\":1478686417098,\"1021748730387\":1509788624615,\"1021748730386\":1509788624615,\"1022346704507\":1478686417202,\"1025609070068\":1509788624209,\"1023288868389\":1509788625007,\"1021748730373\":1509788624615,\"1022701118274\":1509788624972,\"1018829375498\":1509788624929,\"1016284455352\":1480585069064,\"1021848867855\":1509788624993,\"1022611072674\":1509788625063,\"1021861057876\":1509788624467,\"1021748730374\":1509788624615,\"1022701118273\":1509788624972,\"1021748730369\":1509788624615,\"1021748730368\":1509788624615,\"1021748730370\":1509788624615,\"1021821867937\":1478686417132,\"1025902404218\":1509788667460,\"1012151227931\":1478686417223,\"1021748730383\":1509788624615,\"1025902404216\":1509788667461,\"1516299387\":1478950494924,\"1021748730382\":1509788624615,\"1025902404217\":1509788667459,\"1022127916386\":1478686417276,\"1021748730376\":1509788624615,\"1021329961712\":1465470268219,\"1021748730378\":1509788624615,\"1022060153156\":1478686804050,\"1025609070044\":1509788624199,\"1016444229127\":1480585069061,\"1025609070037\":1509788624214,\"1025609070034\":1509788624227,\"1025609070035\":1509788624227,\"1021716225480\":1509788624817,\"1020764230805\":1478686416996,\"1021962506083\":1478686417148,\"1022092003263\":1478686417180,\"1021962506086\":1478686417148,\"1024134139272\":1509788667503,\"1021470337739\":1478686416973,\"1021459459345\":1509788624398,\"1025569617425\":1509788624348,\"1025609069992\":1509788624229,\"1025609069990\":1509788624209,\"1022072080010\":1509788624921,\"1025609069988\":1509788624209,\"1025609069989\":1509788624209,\"1021296276621\":1478686417102,\"1022342903528\":1478686417069,\"1025609069978\":1509788624227,\"1022701118263\":1509788624972,\"1022701118267\":1509788624973,\"1025833985789\":1509788667452,\"1018829375604\":1509788624929,\"1000237718600\":1444487341761,\"1010024486073\":1491634246521,\"1025890215241\":1509788667442,\"1010024486068\":1491634246526,\"1024056283372\":1509788624328,\"1004522331225\":1478686804040,\"1010024485966\":1491634246516,\"1010024485961\":1491634246521,\"4994799411\":1509788667394,\"1026226540980\":1514456869772,\"1010024485963\":1491634246521,\"1328607679\":1491634246518,\"1583538413\":1491634246518,\"1026226540967\":1514456869772,\"1010024485974\":1491634246526,\"1021546358425\":1478686417300,\"1010002728620\":1491634246525,\"1025910793026\":1509788667579,\"1025910793024\":1509788667579,\"1025609069915\":1509788625134,\"1025910793031\":1509788667579,\"1025609069909\":1509788625111,\"1017446292166\":1478686804066,\"1025910793038\":1509788667579,\"1017446292167\":1478686804066,\"1017446292165\":1478686804066,\"1024680406504\":1509788624442,\"1024680406506\":1509788624442,\"1024680406507\":1509788624442,\"1021716225361\":1509788624194,\"1024680406508\":1509788624442,\"1024680406511\":1509788624442,\"1023330155885\":1509788625040,\"1025796892693\":1509788625114,\"1025796892695\":1509788625105,\"1025736600825\":1508316495865,\"1025609069886\":1509788625164,\"1024187222137\":1509788624236,\"1021392613786\":1478686417105,\"1021428002813\":1478686804026,\"1026226541055\":1514456869772,\"1021308859643\":1478686417005,\"1025910793022\":1509788667579,\"1026226541008\":1514456869772,\"1021934980637\":1509788625100,\"632462166\":1478686417024,\"1018187394747\":1509788624928,\"1026226541015\":1514456869772,\"1021960671132\":1509788624464,\"1022060153239\":1478686804050,\"1025609069835\":1509788625167,\"1023920494716\":1509788624972,\"1025609069831\":1509788625134,\"1022879635063\":1509788625245,\"1022147052192\":1478686417013,\"1026226541003\":1514456869772,\"1025609069822\":1509788625112,\"1025609069818\":1509788625143,\"1022291262118\":1478686804046,\"1022291262119\":1478686804046,\"1022291262120\":1478686804046,\"1022291262121\":1478686804046,\"1022202396645\":1480585069084,\"4994799294\":1509788667394,\"1022291262122\":1478686804046,\"1025609069812\":1509788625164,\"1021344248637\":1478686417041,\"1025609069810\":1509788625164,\"1022978068958\":1509788625136,\"1018690310481\":1509788624378,\"1021716225269\":1509788624533,\"1516299634\":1478950494924,\"925403198\":1478686417020,\"1021435342271\":1478686417241,\"1021474007916\":1478686417109,\"1022209605506\":1509788624938,\"1022221008622\":1478686417064,\"1022209605504\":1509788624938,\"1020834484661\":1478686804050,\"1020235887878\":1465470268181,\"1015513140874\":1509788624369,\"1020834484665\":1478686804050,\"1012304580043\":1509788624369,\"1021293917726\":1478686417004,\"1016159414289\":1478686804040,\"1025609069777\":1509788625005,\"1025609069774\":1509788625134,\"1024028627715\":1509788624517,\"1023748006909\":1509788667836,\"1022149018382\":1509788624949,\"1016670980484\":1478686804063,\"1025569486690\":1509788624351,\"1021967879644\":1509788624467,\"1025609069765\":1509788625112,\"1025609069763\":1509788625143,\"1016574381917\":1480585069080,\"1024028627825\":1509788624517,\"1021713603913\":1509788624560,\"1021713603912\":1509788624560,\"1022502678094\":1509788625007,\"1021713603911\":1509788624560,\"1021713603910\":1509788624560,\"1025627550622\":1509788624999,\"1022420366005\":1478686417209,\"1025627550619\":1509788625084,\"1534256144\":1444487341719,\"1023959422768\":1509788624825,\"1021323801642\":1478686417103,\"1021721730269\":1509788624403,\"920422835\":1491634246517,\"1023855353110\":1491634246520,\"1023855353106\":1491634246537,\"1025609069704\":1509788625134,\"1025609069702\":1509788625134,\"1019052751829\":1509788624315,\"1022204362572\":1478686417280,\"1021927641291\":1478686417142,\"1025609069691\":1509788625164,\"1021927641287\":1478686417142,\"1021168483612\":1478686417098,\"1007198813892\":1478686804017,\"1021488687630\":1478686417046,\"1021739555614\":1478686417051,\"1022263999717\":1478686417014,\"1022112450030\":1478686417182,\"1025609069651\":1509788624435,\"1025048975085\":1509788625017,\"1021047604333\":1478686417092,\"1025609069646\":1509788624427,\"1025609069640\":1509788624440,\"1022399657107\":1478686417292,\"1024153275167\":1509788667495,\"1025609069619\":1509788624451,\"1021491702423\":1478686416992,\"1022209605502\":1509788624938,\"1021489212044\":1478686417110,\"1021114449957\":1478686417037,\"1022209605500\":1509788624938,\"1021489212046\":1478686417110,\"1021489212042\":1478686417110,\"1021489212039\":1478686417110,\"1024187222357\":1509788624236,\"1024187222354\":1509788624236,\"1024187222355\":1509788624236,\"1024187222352\":1509788624236,\"1024187222353\":1509788624236,\"1021713604093\":1509788624220,\"1024187222350\":1509788624236,\"1021713604092\":1509788624220,\"1021713604094\":1509788624220,\"1024187222349\":1509788624236,\"168998378\":1444487341703,\"1709758994\":1478686417018,\"1023920494974\":1509788624972,\"1019615566531\":1509788624304,\"1021783189483\":1509788624395,\"1019388926140\":1480585069073,\"1025601047161\":1509788624520,\"1025601047162\":1509788624520,\"1025601047163\":1509788624520,\"1021564033310\":1478686417114,\"1000527901938\":1444487341713,\"1022278419554\":1478686417014,\"1019388926139\":1480585069073,\"1025601047155\":1509788624520,\"1025601047156\":1509788624520,\"1025601047157\":1509788624520,\"1025601047158\":1509788624520,\"1024687232255\":1509788624223,\"1025601047159\":1509788624520,\"1024687232224\":1509788624223,\"1022202396925\":1480585069085,\"1024687232227\":1509788624223,\"1024687232228\":1509788624224,\"1024687232229\":1509788624223,\"1022481977432\":1478943089531,\"1016952129503\":1444487341760,\"1021816351172\":1509788625014,\"1024637686260\":1509788667502,\"1021564033315\":1478686417114,\"1008040964927\":1478686804052,\"1021564033312\":1478686417114,\"1021564033318\":1478686417114,\"1021564033316\":1478686417114,\"1008058135647\":1480585069065,\"1020294221539\":1465470268298,\"4984203611\":1509788624159,\"1010092404374\":1491634246516,\"1019211976057\":1509788624316,\"1011625773346\":1478686804032,\"1021604666581\":1478686416974,\"1019211976053\":1509788624316,\"1022816085028\":1509788625110,\"1024687232144\":1509788624562,\"795668239\":1478950494916,\"1024489572572\":1509788625029,\"1021484078516\":1478686804038,\"1021484078515\":1478686804038,\"1021484078514\":1478686804038,\"1021484078513\":1478686804038,\"1021484078512\":1478686804038,\"1021484078511\":1478686804038,\"1025628310696\":1509788624204,\"1021484078510\":1478686804038,\"1025628310697\":1509788624197,\"1021616594311\":1478686417008,\"1021484078509\":1478686804038,\"1021484078508\":1478686804038,\"1021484078507\":1478686804038,\"1025628310702\":1509788624186,\"1024687232138\":1509788624562,\"1019727621142\":1509788624317,\"1024687232139\":1509788624562,\"1024687232140\":1509788624562,\"1024687232141\":1509788624562,\"1025628310695\":1509788624200,\"1024496519343\":1509788624441,\"1021740852448\":1478686417125,\"1026507718877\":1515854751198,\"294048021\":1478686417019,\"1021816351096\":1509788625013,\"1021895257551\":1509788624465,\"1022202396791\":1480585069084,\"1025797789215\":1509788624406,\"1024780294631\":1509788624511,\"1024780294624\":1509788624426,\"1025797789208\":1509788624431,\"1025797789209\":1509788624425,\"1025797789207\":1509788624428,\"1024780294637\":1509788624434,\"1024780294638\":1509788624426,\"1022281172209\":1478686417197,\"1021113040712\":1478686417037,\"1024780294645\":1509788624427,\"1024780294640\":1509788624456,\"1016737856022\":1478686804063,\"1025756107660\":1509788624970,\"1024780294652\":1509788624451,\"1024780294649\":1509788624454,\"1021693534595\":1509788624851,\"1021693534594\":1509788624851,\"1025879972633\":1509788667403,\"1021941657681\":1478686417143,\"1022023447921\":1478686417267,\"1022202396712\":1480585069085,\"1021693534596\":1509788624851,\"1025593313801\":1509788624929,\"1021693534600\":1509788624851,\"1014848326031\":1509788625017,\"1024687232034\":1509788625157,\"1019882419639\":1509788624361,\"1021933268983\":1478686417260,\"1024780294561\":1509788624441,\"1024687232028\":1509788625157,\"1024687232029\":1509788625157,\"1024687232030\":1509788625157,\"1016952129297\":1444487341760,\"1024687232031\":1509788625157,\"1023232900473\":1509788624277,\"1011599034856\":1478686804033,\"1025797789614\":1509788625087,\"1211795756\":1444487341716,\"1025797789608\":1509788625122,\"1025797789606\":1509788625114,\"1025797789607\":1509788625105,\"1021484078275\":1478686804038,\"1021484078274\":1478686804038,\"1021484078273\":1478686804038,\"1021484078272\":1478686804038,\"1022263214701\":1509788625019,\"1022263214699\":1509788625016,\"1021347368136\":1478686417005,\"1021606239675\":1509788624420,\"1022093441113\":1478686417180,\"1022264918625\":1478686417067,\"1021770082203\":1478686417127,\"1022941916580\":1509788624935,\"1020581142224\":1480585069077,\"1024678056482\":1509788624199,\"1021484078271\":1478686804038,\"1021484078270\":1478686804038,\"1021484078269\":1478686804038,\"1021484078268\":1478686804038,\"1021484078267\":1478686804038,\"1020744853675\":1509788624959,\"1021484078266\":1478686804038,\"1021484078265\":1478686804038,\"1021484078264\":1478686804038,\"1021484078263\":1478686804038,\"1021484078262\":1478686804038,\"1021484078261\":1478686804038,\"1021933268602\":1478686417143,\"1021286811882\":1478686417101,\"1022755135842\":1509788624393,\"1021286811879\":1478686417101,\"1022202397078\":1480585069084,\"1021391539768\":1478686417006,\"1024727865112\":1509788624279,\"1016952129140\":1444487341760,\"1025530922763\":1509788624345,\"1020374176374\":1478686804047,\"1021606239491\":1509788624817,\"1022021088335\":1478686417162,\"1025524893565\":1509788625008,\"1022111136715\":1478686417182,\"1019615552648\":1509788624315,\"1022737833658\":1509788625056,\"1012371060566\":1478686417026,\"1010001308051\":1491634246520,\"1024529681297\":1509788625027,\"1010755998948\":1509788625017,\"1024687232288\":1509788624859,\"1024098873394\":1509788625149,\"1024098873395\":1509788625149,\"1022018597937\":1478686417301,\"1024098873392\":1509788625148,\"1024098873393\":1509788624445,\"1024098873398\":1509788624445,\"1024098873399\":1509788624445,\"1024098873396\":1509788625149,\"1024098873397\":1509788624445,\"1025791104220\":1509788624418,\"1024098873402\":1509788625149,\"1025791104221\":1509788624418,\"1021747144151\":1478686417126,\"1024509102260\":1509788624935,\"1025791104223\":1509788624418,\"1024098873406\":1509788624445,\"1025791104218\":1509788624418,\"1025791104219\":1509788624418,\"1024687232272\":1509788624859,\"1025791104225\":1509788624418,\"1025791104226\":1509788624418,\"1025791104227\":1509788624418,\"1024687232286\":1509788624859,\"1021937332523\":1478686417055,\"1021937332522\":1478686417055,\"1021937332521\":1478686417055,\"1021602176290\":1478686417048,\"1021037935503\":1478686417001,\"1026225090266\":1514456869772,\"1024687232270\":1509788624859,\"1024687232271\":1509788624859,\"1024098874336\":1509788624218,\"1009999080015\":1491634246516,\"1021632322786\":1478686417119,\"1016952129009\":1444487341760,\"1019159152739\":1509788624312,\"1018884192453\":1509788624301,\"1019159152737\":1509788624315,\"1009848474960\":1491634246512,\"1020781947297\":1478686416997,\"1019159152741\":1509788624314,\"1024930373733\":1509788625021,\"1021727744379\":1509788624395,\"1012114154600\":1478686804024,\"1022202397396\":1480585069084,\"1024098874331\":1509788624218,\"1295552258\":1478950494922,\"1024098874334\":1509788624218,\"1024098874335\":1509788624218,\"1019299926482\":1509788624282,\"1016731040566\":1478686804056,\"1022112577659\":1509788624944,\"1024098874333\":1509788624218,\"1024637686663\":1509788667502,\"4984204114\":1509788624159,\"1389924498\":1444487341715,\"1024299810743\":1509788624293,\"1002050063453\":1444487341702,\"1023154780738\":1509788625044,\"1022034327394\":1478686417167,\"1019882420013\":1509788624368,\"1020626231416\":1478686804028,\"1210223287\":1444487341727,\"1022207377974\":1478686417013,\"1020792433026\":1478686417225,\"1019811115791\":1509788625080,\"1023927166119\":1491634246517,\"1020768446717\":1478686417029,\"1021259285949\":1465470268198,\"1022093441997\":1478686417180,\"1016952128847\":1444487341760,\"1021543324389\":1478686417047,\"1024678056399\":1509788624199,\"1021262169519\":1478686804047,\"1023627269797\":1509788624932,\"1021536901756\":1478686417245,\"1024096514760\":1509788624325,\"1021536901754\":1478686417245,\"1210223351\":1444487341731,\"1020576423200\":1478686416995,\"1210223354\":1444487341720,\"1016737855557\":1478686804063,\"1024678056321\":1509788624199,\"1021900368913\":1478686417054,\"1023377049071\":1509788624974,\"1025522009607\":1509788624342,\"1023377049057\":1509788624974,\"1023377049058\":1509788624973,\"1025522009605\":1509788624340,\"1023377049062\":1509788624973,\"1025522009601\":1509788624335,\"1021971804606\":1478686417010,\"1023377049073\":1509788624973,\"1022594700433\":1480585069076,\"1025675889858\":1509788624393,\"1023691234060\":1509788624392,\"1020922458225\":1478686417081,\"1019347768856\":1509788625079,\"1022443834790\":1478686417295,\"1022478046129\":1478943089315,\"1021693534835\":1509788624555,\"1023377049048\":1509788624973,\"1021693534838\":1509788624555,\"1021357198969\":1478686417006,\"1021693534837\":1509788624555,\"1021357198968\":1478686417006,\"1024687232970\":1509788624448,\"1021693534841\":1509788624555,\"1024687232971\":1509788624448,\"1023377049043\":1509788624973,\"1024687232972\":1509788624448,\"1024687232973\":1509788624448,\"1023377049046\":1509788624974,\"1024687232975\":1509788624448,\"1024780294660\":1509788624509,\"1016731040329\":1478686804063,\"1021988319468\":1509788624463,\"1024880696330\":1509788625023,\"1021693534727\":1509788624217,\"1016952128699\":1444487341760,\"1021693534726\":1509788624217,\"1021693534725\":1509788624217,\"1022323246239\":1478686417288,\"1024780294669\":1509788624438,\"1021693534728\":1509788624217,\"1011625773630\":1478686804032,\"1021680558934\":1478686804028,\"1021142106985\":1478686417002,\"1025459093915\":1509788624351,\"1022321542308\":1478686417015,\"1021445935447\":1478686417107,\"1022697201208\":1509788625016,\"1020985636040\":1478686804039,\"1021700874670\":1509788624303,\"1024780294690\":1509788624424,\"1024780294691\":1509788624438,\"1019360482569\":1509788624317,\"1016777572152\":1478686804016,\"1024727864603\":1509788624303,\"1021594572967\":1478686417114,\"1021741246435\":1478686417125,\"1021646085566\":1478686417008,\"1023561601633\":1509788624531,\"1021279079321\":1480585069097,\"1022396778725\":1478686417291,\"1022246699496\":1478686417195,\"1021405828035\":1478686417240,\"1025880365172\":1509788667450,\"1022022923797\":1509788624466,\"1025627656040\":1509788624509,\"1020790859965\":1478686417077,\"1020818124508\":1478686804022,\"1020818124505\":1478686804022,\"1020818124504\":1478686804022,\"1020818124503\":1478686804022,\"1022827619951\":1509788624990,\"1025593313543\":1509788624929,\"1007891540003\":1478686804023,\"1020997040919\":1478686417300,\"1022579103051\":1480585069125,\"1022470837048\":1478686417299,\"1021270297420\":1478686804034,\"1016731040477\":1478686804051,\"1021497448137\":1478686417007,\"1022827619957\":1509788624990,\"1016952128545\":1444487341760,\"1019427199383\":1478686804067,\"1009270013478\":1509788624386,\"1019427199382\":1478686804067,\"1019286819122\":1509788625076,\"1019427199384\":1478686804067,\"1011970366779\":1478686417299,\"1022233199301\":1509788624181,\"1011970366781\":1478686416993,\"1025412856904\":1509788624543,\"1022038652247\":1478686417168,\"1023095404073\":1509788624978,\"1025911692809\":1509788667818,\"1022038652243\":1478686417168,\"1022233199304\":1509788624181,\"1025407220760\":1509788624298,\"626581851\":1478686417020,\"1003634977196\":1478950494936,\"1021723420552\":1478686417123,\"1021245129229\":1478686417100,\"1021493121394\":1478686417111,\"1021673088183\":1478686417120,\"1009275386201\":1478686804024,\"1023947615448\":1491634246532,\"1023947615449\":1491634246532,\"335597633\":1444487341732,\"1013062048668\":1478686804064,\"1021900499616\":1478686417054,\"1021742424124\":1509788624395,\"1025508508076\":1509788624345,\"1025508508077\":1509788624338,\"1025508508072\":1509788624344,\"1025508508074\":1509788624336,\"1025508508071\":1509788624340,\"582149840\":1444487341747,\"1022238836390\":1509788624947,\"1022238836391\":1509788624941,\"1022238836392\":1509788624931,\"1019964079643\":1465470268315,\"1016952128396\":1444487341760,\"1022092000767\":1478686417180,\"1019489721027\":1509788624302,\"1024273334044\":1509788624277,\"1856416295\":1478686417020,\"1024273334046\":1509788624277,\"1024273334040\":1509788624277,\"1856416291\":1478686417020,\"1025034054818\":1509788667497,\"1020294220325\":1465470268298,\"1021308833442\":1509788625017,\"4984204677\":1509788624159,\"1022697200124\":1509788625015,\"1022441081409\":1478686417295,\"1049164315\":1491634246518,\"1025797657145\":1509788624865,\"1012995071870\":1478686804062,\"1023880634439\":1509788624939,\"1019263227034\":1509788624315,\"1012995071866\":1478686804062,\"1024638080366\":1509788667462,\"1022032228738\":1478686417166,\"1018994263186\":1509788624282,\"1022209082417\":1478686417191,\"1021055631357\":1478686417232,\"1024273334052\":1509788624277,\"1024273334053\":1509788624277,\"1024273334054\":1509788624277,\"1024273334048\":1509788624277,\"1009748336102\":1491634246511,\"1021501379176\":1509788624401,\"1021936415748\":1509788624465,\"1021259416550\":1465470268199,\"1021259416549\":1465470268199,\"1020090664449\":1509788624361,\"1019929214140\":1509788624322,\"1024435306796\":1509788624462,\"1025797788251\":1509788624616,\"261278585\":1444487341722,\"1025797788234\":1509788624831,\"1025797788235\":1509788624822,\"1024375014809\":1509788625031,\"1025797788233\":1509788624827,\"1021096000000\":1478686417094,\"1022169463788\":1509788624924,\"1020985635468\":1478686804039,\"1016952128224\":1444487341760,\"1021509899124\":1478686417244,\"1018279941117\":1465470268271,\"1022331765360\":1478686417068,\"1021509899128\":1478686417244,\"1024433995992\":1509788624420,\"1024985555001\":1509788624169,\"1021120772693\":1478686417002,\"1024985555003\":1509788624169,\"1013076338129\":1478686804033,\"1024985555004\":1509788624169,\"1021120772690\":1478686417002,\"1024985555007\":1509788624169,\"1009749646359\":1491634246514,\"1024673076884\":1509788624815,\"1020609586369\":1478686417075,\"1021109893943\":1478686417232,\"1024673076887\":1509788624533,\"1021071620400\":1478686417002,\"1020955226112\":1478686417033,\"1025811026614\":1509788667791,\"1022029082630\":1509788624466,\"1024615402097\":1509788624188,\"1021425226775\":1509788624977,\"1020875273545\":1478686417031,\"1023774726170\":1491634246535,\"1021308833657\":1509788625017,\"1021250765567\":1478686416984,\"1025412856534\":1509788624829,\"1025412856535\":1509788624834,\"1017868073007\":1478686804056,\"1017808175007\":1478686804016,\"1017868073012\":1478686804056,\"1025629358556\":1509788624565,\"1017868073011\":1478686804056,\"1017868073008\":1478686804056,\"1017868073009\":1478686804056,\"1022028820539\":1509788624433,\"1017868073156\":1478686804056,\"1017868073154\":1478686804056,\"1017868073155\":1478686804056,\"1017868073152\":1478686804056,\"1017868073153\":1478686804056,\"1022262953721\":1509788624957,\"1020435780558\":1480585069065,\"1021504131862\":1478686417007,\"1024673076752\":1509788625100,\"1022246569866\":1478686417195,\"1016952128060\":1444487341760,\"1021308833769\":1509788625018,\"1017770554099\":1478686804022,\"1022002475324\":1509788624466,\"1009712419501\":1491634246511,\"1022246569862\":1478686417195,\"1003284618568\":1478686804054,\"1025412856420\":1509788624429,\"1024433995836\":1509788625101,\"1025412856423\":1509788624408,\"1025278898772\":1509788624454,\"1022246569872\":1478686417195,\"1017165125362\":1478686804020,\"1017923552752\":1478686804021,\"1011850302452\":1478686804022,\"1024673076802\":1509788624419,\"1013618099890\":1480585069065,\"1022030918444\":1478686417267,\"1024673076666\":1509788624194,\"1024132298226\":1509788624328,\"1012283766316\":1478686417073,\"1022202398449\":1480585069085,\"1024303741839\":1509788624948,\"1025610485229\":1509788624520,\"1022065651995\":1478686417174,\"1023444290764\":1509788624960,\"1026225088781\":1514456869772,\"1025620708608\":1509788624970,\"1025620708609\":1509788624970,\"1022331633948\":1478686417068,\"1004071551473\":1478686804061,\"1024313178992\":1509788624926,\"1021274754584\":1478686417101,\"1004071551472\":1478686804061,\"1004071551469\":1478686804061,\"1012335146329\":1478686417223,\"1004071551470\":1478686804061,\"1004071551465\":1478686804061,\"1017517977207\":1478686804045,\"1004071551466\":1478686804061,\"1017517977208\":1478686804045,\"1017517977209\":1478686804045,\"1004071551460\":1478686804060,\"1017517977210\":1478686804045,\"1004071551463\":1478686804061,\"1017517977211\":1478686804045,\"1004071551462\":1478686804060,\"1017517977212\":1478686804045,\"1004071551457\":1478686804060,\"1024778723104\":1509788625024,\"1022268589383\":1478686417067,\"1017517977213\":1478686804045,\"1004071551456\":1478686804060,\"1017517977214\":1478686804045,\"1004071551459\":1478686804060,\"1017517977215\":1478686804045,\"1021238312960\":1478686416987,\"1021308832847\":1509788625017,\"1020970168345\":1478686417034,\"1012353626747\":1478686416972,\"1012284552783\":1478686417026,\"1021940872955\":1478686417143,\"1017974407830\":1509788624372,\"1025797787710\":1509788624540,\"1025797787711\":1509788624542,\"1022886080174\":1509788624996,\"1019908763945\":1509788624354,\"1021693405133\":1478686804031,\"1022579101717\":1480585069124,\"1019908763954\":1509788625076,\"1018974108143\":1509788624317,\"1016952127849\":1444487341760,\"1018974108140\":1509788624314,\"1025500906218\":1509788624269,\"1023394480485\":1509788625039,\"1022551315133\":1509788624504,\"1023877490066\":1491634246512,\"1022202398277\":1480585069085,\"294704931\":1444487341736,\"1021476868840\":1478686417109,\"1024540560715\":1509788667549,\"1023947222570\":1491634246532,\"1024540560712\":1509788667549,\"1023947222567\":1491634246529,\"1022551315185\":1509788624504,\"1024540560735\":1509788667549,\"1021429159891\":1478686417044,\"1024540560732\":1509788667549,\"1024540560728\":1509788667549,\"1024540560729\":1509788667549,\"1526111277\":1444487341741,\"1025372879564\":1509788625135,\"1024540560721\":1509788667549,\"1020626232348\":1478686804028,\"1019448434130\":1478686804020,\"1025508508436\":1509788624336,\"1024540560742\":1509788667549,\"1021549223696\":1478686417047,\"1024540560741\":1509788667549,\"1024540560738\":1509788667549,\"1025508508433\":1509788624339,\"1024540560739\":1509788667549,\"1025508508434\":1509788624341,\"1021994874279\":1509788624463,\"1025797787717\":1509788624523,\"1025797787712\":1509788624536,\"1021089577539\":1478686417094,\"1022086495989\":1478686417179,\"1022053462215\":1509788625066,\"1021578714423\":1468845634471,\"1016847927073\":1478686804018,\"1022389308637\":1478686417205,\"1020391871459\":1478686804027,\"1024283294706\":1509788624326,\"1020912104686\":1478686417080,\"1022430071392\":1478686804071,\"1022430071393\":1478686804071,\"1021308833072\":1509788625017,\"1022246831458\":1478686417195,\"1021933266993\":1478686417260,\"1022430071391\":1478686804071,\"1019427331408\":1478686804021,\"1016952127702\":1444487341760,\"1019489720727\":1509788624302,\"1022202398662\":1480585069085,\"1010482447028\":1509788625017,\"1019759995327\":1509788624283,\"1020076639901\":1509788624383,\"1019759995329\":1509788624283,\"1021763134077\":1509788624467,\"1025472726360\":1509788624201,\"1025472726358\":1509788624205,\"1025472726359\":1509788624198,\"1020782865600\":1478686416997,\"1025278898398\":1509788624438,\"1024094680952\":1509788624519,\"1022097112624\":1478686417275,\"1021038722351\":1478686417092,\"1022202398600\":1480585069084,\"1021733905309\":1509788624918,\"1009710846199\":1480585069062,\"1023031834358\":1509788625079,\"1025278898407\":1509788624438,\"1025278898402\":1509788624438,\"1021353265913\":1478686417104,\"1024587090365\":1509788625026,\"1021841911069\":1509788624394,\"1025843011223\":1509788667443,\"1021038722359\":1478686417092,\"1023305090606\":1509788624368,\"1021038722357\":1478686417092,\"1021933926247\":1509788624465,\"1022063685825\":1478686417060,\"1022063685824\":1478686417060,\"1024273333263\":1509788624277,\"4984204938\":1509788624161,\"1024094680961\":1509788624518,\"1022698379992\":1509788625059,\"1022120967267\":1478686417276,\"1022202398535\":1480585069085,\"1024094680974\":1509788624518,\"1024094680975\":1509788624521,\"1024094680972\":1509788624521,\"1024094680976\":1509788624517,\"1021960402632\":1478686417148,\"1018335518430\":1478686804064,\"1021040950685\":1478686417092,\"1022077190104\":1478686417271,\"1025472726434\":1509788624543,\"1022229661427\":1478686417282,\"1025472726433\":1509788624541,\"1021021028021\":1478686417035,\"1021308833254\":1509788625018,\"1017165124857\":1478686804020,\"1022276715343\":1509788624958,\"1025620708607\":1509788624970,\"1025078619211\":1509788624292,\"1012361228893\":1478686417026,\"1023995063786\":1491634246532,\"1023995063785\":1491634246532,\"1023094616578\":1509788624815,\"1020971479467\":1478686417086,\"1021316566058\":1478686417005,\"1016952127498\":1444487341760,\"1017040864433\":1478686804016,\"1023561341435\":1509788624191,\"1211793442\":1444487341738,\"1024680287043\":1509788624996,\"1021528252194\":1478686417244,\"1021327180565\":1465470268217,\"1025485310846\":1509788625109,\"1021327180564\":1465470268216,\"1025485310845\":1509788625125,\"1021327180561\":1465470268216,\"1006013182912\":1478686804046,\"1021327180563\":1465470268216,\"1021553152400\":1478686417047,\"1021937465574\":1478686417143,\"1022276586676\":1478686417285,\"1022430070082\":1478686804047,\"1022517107216\":1480585069099,\"1021327180558\":1465470268216,\"1021815955497\":1509788624394,\"1007172208783\":1478686804025,\"1024316454575\":1509788624368,\"1025722554722\":1509788624306,\"1020294219505\":1465470268297,\"1024316454576\":1509788624368,\"1021424965916\":1509788624978,\"1021680560219\":1478686804028,\"4984201547\":1509788624160,\"1024017343676\":1509788624610,\"1021739543778\":1478686417252,\"1021262172022\":1478686804039,\"1025486359370\":1509788624437,\"1022370824839\":1478686417204,\"1024017343673\":1509788624610,\"1022370824842\":1478686417204,\"1024017343665\":1509788624610,\"1021426014503\":1478686417043,\"1024017343656\":1509788624610,\"1024017343657\":1509788624610,\"1024017343655\":1509788624610,\"1024017343651\":1509788624610,\"1022537161575\":1479755120603,\"1024017343583\":1509788625237,\"1024017343581\":1509788625237,\"1024017343577\":1509788625237,\"1024017343572\":1509788625237,\"1021694978489\":1480585069067,\"1024017343564\":1509788625237,\"1024017343559\":1509788625237,\"1024017343552\":1509788625236,\"1022258498326\":1478686417196,\"1021955553539\":1509788624454,\"1019882421748\":1509788624355,\"1021955553541\":1509788624456,\"1021484080506\":1478686804066,\"1024017343607\":1509788625237,\"1014765227262\":1478686804024,\"1024017343604\":1509788625237,\"1024017343605\":1509788625237,\"1024017343602\":1509788625237,\"1024017343600\":1509788625237,\"1024017343598\":1509788625237,\"1021644248807\":1478686417008,\"1021295067574\":1478686417041,\"1021212101799\":1478686417038,\"1016399687294\":1480585069069,\"1024017343593\":1509788625237,\"1024017343590\":1509788625237,\"1022517107350\":1480585069099,\"1024017343586\":1509788625237,\"1024244625901\":1509788624949,\"1025521356281\":1509788624201,\"1025521356282\":1509788624205,\"1019241858985\":1509788624301,\"1025521356275\":1509788624829,\"464180090\":1480585069060,\"1016701415448\":1478686804049,\"1025485310855\":1509788625089,\"1208778989\":1444487341741,\"1021287334263\":1478686417040,\"1024017343549\":1509788625237,\"1024017343546\":1509788625237,\"1022189123379\":1478686417188,\"1023463555878\":1509788624419,\"1024017343542\":1509788625237,\"1019300190976\":1478686804018,\"1024017343541\":1509788625237,\"1024017343537\":1509788625237,\"1024017343533\":1509788625236,\"1010632656506\":1478686804064,\"1022480013463\":1478943089315,\"1022470571539\":1478686417219,\"1845404922\":1444487341754,\"1025513753756\":1509788625110,\"1025569325382\":1509788624341,\"1020469334341\":1509788625076,\"1024633624867\":1509788625026,\"1020455575083\":1509788624362,\"1024781209716\":1509788624423,\"1020455575082\":1509788624362,\"1025513753775\":1509788625133,\"1020455575085\":1509788624362,\"1025513753768\":1509788625133,\"1020455575084\":1509788624362,\"1020455575086\":1509788624362,\"1025513753771\":1509788625133,\"1023926906634\":1491634246530,\"1022235823047\":1478686417065,\"61000329\":1480585069059,\"1025513753761\":1509788625133,\"1025513753762\":1509788625133,\"1025902646607\":1509788667457,\"1022758545541\":1509788625057,\"1020923509359\":1478686417082,\"1021006606618\":1509788624921,\"1019874426109\":1509788624285,\"1021955553524\":1509788624441,\"1022121357973\":1478686416975,\"1019874426107\":1509788624285,\"1019874426106\":1509788624285,\"1023561341115\":1509788624812,\"1023463555739\":1509788624533,\"1021792628250\":1478881022015,\"1000526200195\":1444487341712,\"1025565000180\":1509788624337,\"1021673875741\":1478686804026,\"1018907259395\":1509788624282,\"1019380407893\":1509788625079,\"1020700422118\":1509788624454,\"1020295661512\":1509788625078,\"1020295661515\":1509788625076,\"1020295661514\":1509788625077,\"1020295661517\":1509788625077,\"1019710579438\":1478686804022,\"1021461011133\":1478686417242,\"1025513753628\":1509788624271,\"1025513753629\":1509788624271,\"1025513753627\":1509788624269,\"1000526200179\":1444487341740,\"1025513753644\":1509788624215,\"1022039441157\":1478686417169,\"1025513753640\":1509788624197,\"1022370038598\":1509788624300,\"1022039441162\":1478686417169,\"1025513753632\":1509788624227,\"1023453987804\":1509788624533,\"1025513753635\":1509788624227,\"1025513753660\":1509788624209,\"1025779571808\":1509788624341,\"1025513753658\":1509788624209,\"1025647051789\":1509788624337,\"1010812489806\":1509788624299,\"1025513753650\":1509788624197,\"1022537161383\":1479755120603,\"1019882421397\":1509788624368,\"1021632321313\":1509788624404,\"1021073454480\":1478686417093,\"1025513753666\":1509788624209,\"1025756109546\":1509788624970,\"1025513753694\":1509788625246,\"1025513753689\":1509788625244,\"1022966293692\":1509788624996,\"1022349722105\":1478686417069,\"1025513753709\":1509788625165,\"1023010994494\":1509788624389,\"1022040358738\":1478686417268,\"1025513753701\":1509788625246,\"1023251380104\":1509788625083,\"1025561198890\":1509788624523,\"1023463555635\":1509788624816,\"1023453987719\":1509788625101,\"1025513753719\":1509788625165,\"1025513753715\":1509788625165,\"1021089576769\":1478686417094,\"1019947037555\":1478686804021,\"1023463555543\":1509788624194,\"4576959188\":1478686416965,\"1023219005008\":1509788625042,\"1025607860280\":1509788624209,\"1022518155280\":1509788625065,\"1024462965762\":1509788624998,\"1024462965760\":1509788625001,\"1024261926917\":1509788624907,\"1026232171253\":1514456869769,\"1022537161002\":1479755120602,\"1009456300695\":1480585069064,\"1025607860264\":1509788624199,\"1019882422123\":1509788624353,\"1022072074898\":1509788624921,\"1025565786833\":1509788624304,\"1021938776805\":1478686417143,\"1022153078713\":1478686417185,\"1022153078712\":1478686417185,\"1021685279633\":1478686417050,\"1021684100029\":1478686417249,\"1025507856311\":1509788624341,\"1024462965883\":1509788625002,\"1016683986339\":1478686804063,\"1024462965876\":1509788625084,\"1025507856314\":1509788624338,\"1021931824466\":1478686417142,\"1025607860301\":1509788624229,\"1025507856313\":1509788624339,\"1021992385012\":1478686417156,\"1020975545447\":1478686417086,\"1024184073407\":1509788625035,\"1025508511624\":1509788624336,\"184074382\":1444487341731,\"1024462965840\":1509788625001,\"1023463555518\":1509788625101,\"1025516244961\":1509788624344,\"1025607860375\":1509788625164,\"1024462965927\":1509788624998,\"1021758156782\":1478686417009,\"1025078616336\":1509788624292,\"1025721375648\":1509788624437,\"115002453\":1444487341723,\"1025721375651\":1509788624437,\"1010024505437\":1491634246526,\"1025078616333\":1509788624292,\"1025078616334\":1509788624292,\"1010024505438\":1491634246526,\"1010024505433\":1491634246521,\"1020455574943\":1509788624361,\"1022537161145\":1479755120602,\"1022031576986\":1509788624463,\"1022131974554\":1478686417184,\"1020455574945\":1509788624361,\"1010024505444\":1491634246521,\"1020455574944\":1509788624361,\"1020455574946\":1509788624362,\"1025721375645\":1509788624437,\"1023299849011\":1509788624449,\"1022995260699\":1509788625050,\"1025607860386\":1509788625164,\"1025721375647\":1509788624437,\"1025721375640\":1509788624437,\"1023299849014\":1509788624449,\"1025721375641\":1509788624437,\"1023299849015\":1509788624449,\"1023299849012\":1509788624449,\"1023299849013\":1509788624449,\"1024283293276\":1509788624326,\"1025607860393\":1509788625143,\"1025721375639\":1509788624437,\"1016531674154\":1480585069067,\"1021395600846\":1478686417105,\"1023109430306\":1509788625072,\"1022430857131\":1478686417071,\"1022430857129\":1478686417071,\"1022430857126\":1478686417071,\"1020455575009\":1509788624362,\"1023561341700\":1509788624417,\"1022430857124\":1478686417071,\"1020455575011\":1509788624362,\"1025607860474\":1509788624451,\"1020455575010\":1509788624362,\"1025607860475\":1509788624451,\"1020455575013\":1509788624362,\"1022430857123\":1478686417071,\"1020455575012\":1509788624362,\"1020455575015\":1509788624362,\"61000013\":1480585069064,\"1020455575014\":1509788624362,\"1021694979024\":1480585069077,\"1018884190679\":1509788624281,\"1021961321033\":1509788624898,\"1021961321032\":1509788624898,\"1021961321035\":1509788624898,\"1021961321034\":1509788624898,\"1019696030071\":1478686804064,\"1019696030070\":1478686804064,\"1021961321036\":1509788624898,\"1019696030069\":1478686804064,\"1025607860502\":1509788624435,\"1021961321038\":1509788624898,\"1021961321024\":1509788624899,\"1021961321027\":1509788624898,\"1019696030072\":1478686804064,\"1021961321026\":1509788624898,\"1021961321028\":1509788624899,\"1021961321031\":1509788624898,\"1018884190680\":1509788624301,\"1021961321030\":1509788624898,\"1008040966166\":1478686804052,\"1021961321049\":1509788624899,\"1008040966167\":1478686804052,\"1025607860481\":1509788624440,\"1021961321048\":1509788624899,\"1025628047311\":1509788624523,\"1021961321050\":1509788624899,\"1025607860486\":1509788624427,\"1013442166304\":1478686804030,\"1021961321041\":1509788624898,\"1021961321043\":1509788624898,\"1021961321045\":1509788624899,\"1008040966168\":1478686804052,\"1021961321047\":1509788624898,\"1017311139762\":1509788624915,\"1010000782205\":1491634246535,\"1004244179548\":1480585069072,\"1022029872760\":1509788625019,\"1000528429052\":1444487341710,\"1021600733178\":1478686417048,\"1025521356300\":1509788624407,\"1022194365523\":1478686417189,\"1025521356289\":1509788624800,\"1021302276490\":1478686417102,\"1019241989155\":1480585069108,\"1021112251558\":1478686417037,\"1024435441335\":1509788624264,\"1021950573227\":1478686417056,\"1021507673392\":1478686417047,\"1024132298924\":1509788624328,\"1022437017178\":1478686417213,\"1022234380874\":1478686417282,\"1022202399676\":1480585069084,\"1012822448979\":1478686417224,\"1022234380880\":1478686417282,\"1021120508990\":1478686416980,\"1021120508988\":1478686416980,\"1022131581040\":1478686416986,\"1025749686464\":1509788624350,\"1021994612752\":1478686417156,\"1017119120012\":1465470268241,\"1025721375300\":1509788624453,\"1025514278637\":1509788624339,\"1009120853972\":1478686804030,\"1019766154580\":1509788624369,\"1021961321023\":1509788624899,\"1021961321022\":1509788624898,\"1008287222025\":1478686804025,\"1023561341590\":1509788625097,\"1335395559\":1444487341730,\"1010847092805\":1478686804022,\"937229407\":1478950494919,\"1004360045547\":1478686804061,\"115395941\":1444487341750,\"1004360045546\":1478686804061,\"1004360045544\":1478686804061,\"1004360045542\":1478686804061,\"1004360045540\":1478686804061,\"1004360045539\":1478686804061,\"1004360045538\":1478686804061,\"1004360045536\":1478686804061,\"1023143768959\":1509788625072,\"1021600864085\":1478686417115,\"1022061984985\":1478686417174,\"1022238706007\":1509788624947,\"1022238706010\":1509788624931,\"1022479752190\":1478943089531,\"1022238706009\":1509788624932,\"1022238706012\":1509788624931,\"1024501760604\":1509788625028,\"1022131581058\":1478686416986,\"1008693678491\":1478686804030,\"1021152463402\":1478686417097,\"1004360045535\":1478686804061,\"1004360045534\":1478686804061,\"1004360045531\":1478686804061,\"1022202399576\":1480585069084,\"1004360045529\":1478686804061,\"1004360045521\":1478686804061,\"1021540307873\":1478686417047,\"1022430070462\":1478686804071,\"1022430070463\":1478686804071,\"1022430070461\":1478686804071,\"1022085444137\":1478686417062,\"1845405229\":1444487341715,\"1025879969804\":1509788667405,\"1022537160896\":1479755120602,\"1022246701457\":1478686417195,\"1020293956979\":1465470268278,\"1022202399501\":1480585069084,\"1022039702873\":1478686417169,\"4984201957\":1509788624160,\"1020760449289\":1478686416996,\"1024012230902\":1509788667830,\"1021426670894\":1509788624399,\"1024685791456\":1509788624440,\"1020871736405\":1478686417031,\"1024002795440\":1491634246532,\"1022346314860\":1478686417069,\"1021688556955\":1509788624815,\"1142327299\":1491634246519,\"1020998350021\":1478686417034,\"1024540559279\":1509788667548,\"1022206463108\":1478686417064,\"1017497004882\":1478686804015,\"1024540559290\":1509788667549,\"1024540559288\":1509788667549,\"1021606105250\":1509788624401,\"1024540559287\":1509788667549,\"1019000819192\":1480585069063,\"1025750998868\":1509788624293,\"1024540559310\":1509788667549,\"1024540559307\":1509788667549,\"1021507803703\":1478686417112,\"1024540559299\":1509788667549,\"1025626079403\":1509788624393,\"1021668633739\":1509788624861,\"1024540559322\":1509788667548,\"1021311059545\":1465470268205,\"1025626079405\":1509788624393,\"1021668633736\":1509788624861,\"1021668633735\":1509788624861,\"1021668633734\":1509788624861,\"1024540559312\":1509788667549,\"1024685791362\":1509788624430,\"1021332160675\":1478686417103,\"1007920767042\":1478686804023,\"1024613827388\":1509788624923,\"1025505626215\":1509788624972,\"1024597443162\":1509788624937,\"1026232171688\":1514456869769,\"1021668633686\":1509788624226,\"1019882420702\":1509788624353,\"1021668633685\":1509788624226,\"1023316495880\":1509788624334,\"1021688556802\":1509788624194,\"1021484079441\":1478686804067,\"1021668633679\":1509788624226,\"1021680561297\":1478686804028,\"1021320103714\":1465470268209,\"1021320103719\":1465470268209,\"1021320103718\":1465470268209,\"1021320103721\":1465470268209,\"1022949253312\":1509788624291,\"1017092244265\":1478686804019,\"1020963224161\":1478686417229,\"1022430069206\":1478686804065,\"1022949253317\":1509788624291,\"1021668633696\":1509788624226,\"1022949253335\":1509788624291,\"172934790\":1509788625018,\"1016566283315\":1478686804024,\"1019041058731\":1509788624374,\"1019041058730\":1509788624374,\"1019041058733\":1509788624374,\"1019041058732\":1509788624374,\"1022034328015\":1478686417167,\"1023927167711\":1491634246530,\"1023927167709\":1491634246530,\"1022070764579\":1478686417060,\"1020988259246\":1478686417088,\"1020988259232\":1478686417088,\"1098157471\":1491634246513,\"1024096517357\":1509788624325,\"1021688556900\":1509788624533,\"1025053582838\":1509788624367,\"1022235823619\":1478686417282,\"1022165529037\":1478686417186,\"1024132300565\":1509788624328,\"1024134135612\":1509788667504,\"1022445142625\":1478686417295,\"1025056859709\":1509788625007,\"1021463240219\":1478686416985,\"1021476084055\":1478686417242,\"1023881554420\":1509788624259,\"1012905154617\":1478950494940,\"1023881554430\":1509788624259,\"1009787000344\":1491634246536,\"1023881554427\":1509788624259,\"1023881554425\":1509788624259,\"1023881554406\":1509788624259,\"1020848530092\":1478686417031,\"1023881554404\":1509788624259,\"1023881554402\":1509788624259,\"1023425807636\":1509788625079,\"1015831087547\":1509788625081,\"1023881554415\":1509788624259,\"1023881554412\":1509788624259,\"1023881554411\":1509788624259,\"1022082430225\":1480585069086,\"1023881554388\":1509788624259,\"1025908543782\":1509788667456,\"1023881554389\":1509788624259,\"1023881554386\":1509788624259,\"1025607599920\":1509788624548,\"1025607599921\":1509788624548,\"1025607599922\":1509788624548,\"1023881554385\":1509788624259,\"1020294087554\":1465470268288,\"1023881554397\":1509788624259,\"1023881554394\":1509788624259,\"1021948607803\":1509788624506,\"1021908624216\":1478686417259,\"1019882420334\":1509788624368,\"1023881554381\":1509788624259,\"1023881554379\":1509788624259,\"1023881554376\":1509788624259,\"1211794813\":1444487341742,\"1021630746709\":1478686417049,\"1021330719147\":1478686417239,\"1022451434360\":1478686417215,\"1020916825823\":1478686417080,\"321314430\":1478686804046,\"1019504267905\":1465470268274,\"1019504267906\":1465470268274,\"1022949253384\":1509788624291,\"1022949253376\":1509788624291,\"1023881554334\":1509788624424,\"1022949253379\":1509788624291,\"1024920285057\":1509788624259,\"1022949253381\":1509788624291,\"1021684755626\":1478686417121,\"1022630089758\":1509788624218,\"1023995586427\":1491634246532,\"1022630089759\":1509788625150,\"1023995586428\":1491634246532,\"1022630089752\":1509788625150,\"1025716788453\":1509788625004,\"1022630089753\":1509788625150,\"1022630089750\":1509788624218,\"1022202400149\":1480585069084,\"1022630089751\":1509788625150,\"1022630089748\":1509788624218,\"1020744852661\":1509788624318,\"1022630089749\":1509788624218,\"1022630089746\":1509788624218,\"1022630089747\":1509788625150,\"1024156809711\":1509788667856,\"4984202391\":1509788624160,\"1023561604203\":1509788625097,\"1019710580226\":1478686804022,\"227459101\":1478950494907,\"1024394809280\":1509788624973,\"1025756110490\":1509788624970,\"1017092244001\":1478686804019,\"1024141475536\":1509788624959,\"1021484079222\":1478686804050,\"1021039245289\":1478686417035,\"1021484079221\":1478686804050,\"1021062967629\":1478686417036,\"1025911296070\":1509788667464,\"1010024507147\":1491634246521,\"1022049270723\":1478686417172,\"1022598765187\":1509788624462,\"1025797266295\":1509788624831,\"1025083860735\":1509788624294,\"1021809796514\":1509788624394,\"1025585448082\":1509788624351,\"1025585448080\":1509788624352,\"1021929464463\":1478686417259,\"1025797266297\":1509788624616,\"1024804410900\":1509788625136,\"1011574786947\":1478686804033,\"387111675\":1491634246524,\"356178125\":1444487341718,\"1021890535542\":1478686417138,\"1022202400018\":1480585069084,\"1024334934543\":1509788625031,\"1025513753484\":1509788624546,\"1025513753485\":1509788624546,\"1025513753486\":1509788624550,\"1022209609364\":1480585069113,\"1023453987964\":1509788624816,\"1025756110133\":1509788624970,\"1021231892693\":1478686417039,\"1020745377747\":1478686417028,\"1760732880\":1444487341708,\"1147832904\":1478950494920,\"1021211445820\":1478686804033,\"1024727865411\":1509788624279,\"1016101100188\":1509788624941,\"1023000371543\":1509788624462,\"1025513753524\":1509788624917,\"1021092197122\":1478686417094,\"1671867804\":1478686417020,\"1025513753520\":1509788624916,\"1022183354445\":1478686417278,\"1025513753548\":1509788624864,\"1025513753550\":1509788624821,\"1009275384622\":1478686804024,\"1025513753544\":1509788624865,\"1025513753547\":1509788624865,\"1022485519941\":1478943089489,\"1023561342886\":1509788625098,\"1025513753543\":1509788624865,\"1309442112\":1491634246534,\"1025513753536\":1509788624917,\"1023881554598\":1509788624259,\"1021763529573\":1509788624403,\"1023881554595\":1509788624259,\"1025513753561\":1509788624839,\"1023453987876\":1509788624194,\"1025513753562\":1509788624839,\"1023881554593\":1509788624259,\"1025513753558\":1509788624821,\"1025513753559\":1509788624825,\"1025513753552\":1509788624849,\"1022291397598\":1478686417068,\"1018156859501\":1478686804056,\"1018156859500\":1478686804056,\"1018156859503\":1478686804056,\"1018156859502\":1478686804056,\"1025513753577\":1509788624840,\"1018156859499\":1478686804056,\"1023881554576\":1509788624259,\"1025513753578\":1509788624846,\"1016661703492\":1478686804042,\"1021613576813\":1509788624397,\"1023881554589\":1509788624259,\"1016661703490\":1478686804063,\"1025513753568\":1509788624839,\"1023881554585\":1509788624259,\"1021995793712\":1509788624932,\"1018156859517\":1478686804056,\"1018156859516\":1478686804056,\"1018156859519\":1478686804056,\"1023881554564\":1509788624259,\"1018156859518\":1478686804056,\"1020819956484\":1478686416998,\"1018156859512\":1478686804056,\"699197402\":1478686804054,\"1018156859515\":1478686804056,\"1018156859514\":1478686804056,\"1023881554561\":1509788624259,\"1018156859509\":1478686804056,\"1018156859508\":1478686804056,\"1018156859511\":1478686804056,\"1018156859510\":1478686804056,\"1023881554573\":1509788624259,\"1018156859505\":1478686804056,\"1018156859504\":1478686804056,\"1023881554571\":1509788624259,\"1000088409980\":1478686804046,\"1018156859507\":1478686804056,\"1023881554568\":1509788624259,\"1018156859506\":1478686804056,\"1023881554550\":1509788624259,\"1023881554551\":1509788624259,\"1018156859528\":1478686804056,\"1018156859530\":1478686804056,\"1018156859525\":1478686804056,\"1023881554558\":1509788624259,\"1018156859524\":1478686804056,\"1023881554559\":1509788624259,\"1023881554556\":1509788624259,\"1018156859526\":1478686804056,\"1018156859521\":1478686804056,\"1023881554554\":1509788624259,\"137938613\":1444487341701,\"1018156859520\":1478686804056,\"1018156859523\":1478686804056,\"1023881554552\":1509788624259,\"1018156859522\":1478686804056,\"1023881554553\":1509788624259,\"1020496073784\":1465470268322,\"1025078617405\":1509788624292,\"1025078617406\":1509788624292,\"1025078617400\":1509788624292,\"1022966293440\":1509788624996,\"1021475953406\":1478686417109,\"1025078617402\":1509788624292,\"1025078617398\":1509788624292,\"1025078617395\":1509788624292,\"1025270511804\":1509788624532,\"1021742164681\":1509788625001,\"1025270511805\":1509788624532,\"1025270511806\":1509788624532,\"1025270511797\":1509788624532,\"1025270511799\":1509788624532,\"1025270511794\":1509788624532,\"1025270511822\":1509788624532,\"1022966293414\":1509788624996,\"1025270511823\":1509788624532,\"1025270511817\":1509788624532,\"1024300593972\":1509788624298,\"1025270511812\":1509788624532,\"1021894861704\":1509788624465,\"1022966293423\":1509788624996,\"1021694980068\":1480585069067,\"1025270511809\":1509788624532,\"1024772953861\":1509788624853,\"1022966293429\":1509788624996,\"1022966293430\":1509788624996,\"1022966293431\":1509788624996,\"1024772953856\":1509788624853,\"1024772953857\":1509788624853,\"1020934388310\":1509788624971,\"1024772953858\":1509788624853,\"1019041058209\":1509788624391,\"1019041058208\":1509788624391,\"1022966293437\":1509788624996,\"1019041058211\":1509788624391,\"1019041058210\":1509788624391,\"1022966293439\":1509788624996,\"1019882421131\":1509788624353,\"1019041058213\":1509788624391,\"1022966293432\":1509788624996,\"1019041058212\":1509788624391,\"1022966293434\":1509788624996,\"1025513753448\":1509788624613,\"1025513753449\":1509788624613,\"1025513753451\":1509788624565,\"1021967089657\":1509788624215,\"1023561342726\":1509788624191,\"1025513753447\":1509788624611,\"1023143638553\":1509788625045,\"4984203257\":1509788624159,\"1021967089661\":1509788624215,\"1022357063481\":1478686417203,\"1021967089660\":1509788624215,\"1021972855880\":1478686417150,\"1022138004019\":1478686417276,\"1025513753459\":1509788624536,\"1021987929310\":1478686417154,\"1019013795336\":1478686804033,\"1024017343434\":1509788624268,\"1024017343433\":1509788624268,\"1024017343431\":1509788624268,\"1024017343429\":1509788624268,\"1024017343426\":1509788624268,\"1024017343427\":1509788624268,\"1019710579891\":1478686804022,\"1022474379258\":1478943089486,\"1024772953851\":1509788624853,\"1025762008057\":1509788667888,\"1024794056147\":1509788624989,\"1024017343388\":1509788624268,\"1023453988152\":1509788624419,\"1024017343379\":1509788624268,\"1024017343376\":1509788624268,\"1023881554854\":1509788624825,\"1021885817497\":1509788624859,\"1021885817496\":1509788624224,\"1021885817498\":1509788624859,\"1024017343370\":1509788624268,\"1024017343366\":1509788624267,\"1021600732049\":1478686417048,\"1021885817494\":1509788624859,\"1021604402131\":1478686417115,\"1024017343422\":1509788624268,\"1021885817513\":1509788624859,\"1021181299882\":1478686417098,\"1024017343423\":1509788624268,\"1021885817512\":1509788624562,\"1024017343420\":1509788624268,\"1024017343418\":1509788624268,\"1021885817517\":1509788624562,\"1021885817516\":1509788624562,\"1021885817519\":1509788624449,\"1021885817518\":1509788624224,\"1024017343414\":1509788624268,\"1024017343415\":1509788624268,\"1021885817504\":1509788624449,\"1021885817507\":1509788624225,\"1024017343412\":1509788624268,\"1021885817506\":1509788624225,\"1024017343408\":1509788624268,\"1021885817511\":1509788624449,\"1021885817510\":1509788624449,\"1016952129679\":1444487341760,\"1024017343407\":1509788624268,\"1024017343403\":1509788624267,\"1019300191377\":1478686804018,\"1024017343396\":1509788624267,\"1021885817522\":1509788624562,\"1025797790010\":1509788624185,\"1024017343322\":1509788624912,\"1024017343320\":1509788624912,\"1024017343319\":1509788624912,\"1024017343316\":1509788624912,\"1024017343317\":1509788624912,\"1024017343312\":1509788624912,\"4984202906\":1509788624159,\"1025797789998\":1509788624203,\"1025797789999\":1509788624197,\"1025797789997\":1509788624200,\"1021243951513\":1478686417100,\"1024017343305\":1509788624912,\"1024017343302\":1509788624912,\"1024017343303\":1509788624912,\"1024017343300\":1509788624912,\"1008116725510\":1478686804034,\"725804267\":1444487341720,\"1023561342529\":1509788624812,\"1023881554779\":1509788624825,\"1023918385418\":1509788624957,\"1022205677418\":1478686417280,\"1013061914729\":1478686804064,\"1023521751544\":1509788625071,\"1021385113621\":1478686417006,\"1024017343338\":1509788624912,\"1024017343339\":1509788624912,\"1024017343336\":1509788624912,\"1024017343332\":1509788624912,\"1023878540479\":1491634246506,\"1024017343330\":1509788624912,\"1024017343331\":1509788624912,\"1020394232597\":1509788624392,\"1021815039941\":1509788624394,\"1024132299816\":1509788624328,\"1012209181563\":1478686417073,\"61000812\":1480585069067,\"1024205699157\":1509788625033,\"1526109472\":1444487341721,\"1022021351949\":1478686417266,\"1021311059439\":1465470268205,\"1021165047074\":1478686417003,\"1024017343293\":1509788624912,\"1024017343285\":1509788624912,\"1024017343277\":1509788624912,\"1025607730657\":1509788625084,\"1024017343270\":1509788624912,\"1024017343268\":1509788624912,\"1024017343266\":1509788624912,\"1020786664624\":1478686417029,\"1024273593445\":1509788667496,\"1022447902286\":1480585069108,\"1022447902284\":1480585069108,\"1021565471462\":1478686417114,\"1022447902274\":1480585069108,\"1022021084624\":1478686417162,\"1022447902275\":1480585069108,\"1022447902273\":1480585069108,\"1025880755104\":1509788667811,\"1016694335319\":1478686804063,\"1022447902277\":1480585069108,\"1023989561961\":1509788624345,\"1020264340609\":1509788624959,\"1019325613183\":1478686804058,\"1012418766894\":1478686417026,\"1020858892058\":1478686417031,\"1021267024054\":1478686417101,\"1019325613181\":1478686804058,\"1019325613180\":1478686804058,\"1022447902289\":1480585069108,\"1019325613179\":1478686804058,\"1016673494663\":1478686804056,\"1019325613178\":1478686804058,\"1019325613177\":1478686804058,\"1022447902292\":1480585069108,\"1019325613176\":1478686804058,\"1021969572588\":1478686417149,\"1024578182483\":1509788624925,\"1025429213331\":1509788624432,\"1017558350832\":1509788624367,\"1025486099322\":1509788625108,\"1025486099323\":1509788625117,\"1025486099321\":1509788625125,\"1022447902330\":1480585069108,\"1022810715291\":1509788624420,\"1022447902328\":1480585069108,\"1022511334068\":1480585069131,\"1025715470782\":1509788624414,\"1020862685437\":1509788625084,\"1025715470783\":1509788624414,\"1025715470780\":1509788624414,\"1022447902326\":1480585069108,\"1025429213322\":1509788624432,\"1022447902327\":1480585069108,\"1025715470776\":1509788624414,\"1021892246826\":1478686417138,\"1022447902219\":1480585069108,\"1013290515579\":1509788624353,\"1025715470788\":1509788624414,\"1022447902220\":1480585069108,\"1021668896915\":1509788624396,\"1025715470799\":1509788624414,\"1021939687677\":1478686417143,\"1025715470796\":1509788624414,\"1025715470797\":1509788624414,\"1022447902212\":1480585069108,\"1025715470793\":1509788624414,\"1025715470805\":1509788624414,\"1025715470802\":1509788624414,\"1024779503908\":1509788624580,\"1022188859276\":1478686417187,\"1019932485633\":1509788624922,\"1025715470808\":1509788624414,\"1022447902250\":1480585069108,\"1022447902251\":1480585069108,\"1023097759212\":1509788624600,\"1022447902249\":1480585069108,\"1022447902255\":1480585069108,\"1022447902252\":1480585069108,\"1022447902253\":1480585069108,\"1025715470831\":1509788624415,\"1023097759207\":1509788624600,\"1025715470828\":1509788624414,\"1023097759204\":1509788624600,\"1023097759205\":1509788624599,\"1021990151133\":1478686417265,\"1023097759202\":1509788624600,\"1023097759201\":1509788624599,\"1022447902266\":1480585069108,\"1025715470838\":1509788624414,\"1025715470839\":1509788624414,\"1023097759231\":1509788624599,\"1022447902265\":1480585069108,\"1020014931256\":1509788624311,\"1025715470835\":1509788624415,\"1023097759227\":1509788624599,\"1022447902268\":1480585069108,\"1025715470832\":1509788624415,\"1025715470833\":1509788624415,\"1023097759225\":1509788624599,\"1022447902258\":1480585069108,\"1023097759222\":1509788624599,\"1022447902259\":1480585069108,\"1025715470844\":1509788624414,\"1023097759220\":1509788624599,\"1022447902257\":1480585069108,\"1025597250254\":1509788624359,\"1023097759218\":1509788624599,\"1025715470843\":1509788624414,\"1022447902260\":1480585069108,\"1025715470841\":1509788624414,\"1025429213238\":1509788625136,\"1025429213236\":1509788625171,\"1016673494559\":1478686804063,\"1021101633036\":1478686417232,\"1022067484573\":1509788624863,\"1021148270928\":1478686417002,\"1021217477942\":1478686417038,\"1022241329711\":1478686417194,\"1021918986084\":1509788624433,\"1020202342588\":1465470268243,\"1025429213224\":1509788625127,\"1021353663774\":1465469681398,\"1025429213225\":1509788625127,\"1020659397702\":1478686417075,\"1025429213207\":1509788625104,\"1024780290534\":1509788624440,\"1009433892543\":1478686804034,\"1025429213214\":1509788625127,\"1025879182189\":1509788667404,\"1025429213213\":1509788625127,\"1021281179974\":1478686417237,\"1025429213189\":1509788625245,\"1025429213184\":1509788625244,\"1024769935701\":1509788624289,\"1025429213199\":1509788625128,\"1021948862640\":1478686417145,\"1025429213195\":1509788625128,\"1022447902346\":1480585069108,\"1022447902347\":1480585069108,\"1009966315140\":1491634246524,\"1022330984320\":1478686417288,\"1022447902344\":1480585069108,\"1025429213300\":1509788624433,\"1009966315142\":1491634246524,\"1025429213301\":1509788624433,\"1022447902351\":1480585069108,\"1316789945\":1491634246505,\"1022447902348\":1480585069108,\"1022447902336\":1480585069108,\"1025429213308\":1509788624427,\"1025429213309\":1509788624432,\"1019160205967\":1509788624314,\"1025429213306\":1509788624434,\"1022447902343\":1480585069108,\"1025429213305\":1509788624424,\"1012184021733\":1478686417073,\"1022447902362\":1480585069108,\"1023145469958\":1509788624881,\"1022447902363\":1480585069108,\"1019504135954\":1509788624313,\"1022447902360\":1480585069108,\"1019160205969\":1509788624314,\"1025429213284\":1509788624510,\"1020123960345\":1465470268247,\"1025429213283\":1509788624510,\"1022447902364\":1480585069108,\"1022447902365\":1480585069108,\"1025486099333\":1509788625089,\"1022447902355\":1480585069108,\"1022447902352\":1480585069108,\"1012836991482\":1478686416981,\"1022447902353\":1480585069108,\"1024779504045\":1509788625194,\"1022447902356\":1480585069108,\"1021736137783\":1478686417124,\"1020202342594\":1465470268243,\"1020202342597\":1465470268243,\"1024145925072\":1509788625035,\"1019325613185\":1478686804058,\"1019325613184\":1478686804058,\"1022165003727\":1478686417186,\"1022069057553\":1478686417301,\"1022069057555\":1478686417301,\"1022511333996\":1480585069131,\"1022069057554\":1478686417301,\"1021415915831\":1478686417240,\"1021415915830\":1478686417240,\"1020202342618\":1465470268243,\"1021415915827\":1478686417240,\"1020005887227\":1509788625076,\"1020969248622\":1478686417001,\"1025067219755\":1509788624374,\"1025067219758\":1509788624374,\"1025067219759\":1509788624373,\"1025067219756\":1509788624374,\"1025067219757\":1509788624374,\"1025067219760\":1509788624373,\"1025067219761\":1509788624374,\"1025797261189\":1509788624197,\"1021156921467\":1478686417097,\"1022021084413\":1509788624179,\"1022238708710\":1509788624947,\"1021833264074\":1478686417053,\"1022398093927\":1478686417207,\"1022238708711\":1509788624931,\"1013328658143\":1465470268239,\"4572496315\":1478686416965,\"1021668635039\":1509788624564,\"1022608984464\":1509788624914,\"1021668635038\":1509788624564,\"1022608984465\":1509788624914,\"1022608984468\":1509788624914,\"1023403398707\":1509788625072,\"1022608984470\":1509788624914,\"1024966948207\":1509788624363,\"1022608984475\":1509788624914,\"1022608984477\":1509788624914,\"1020868190659\":1509788625017,\"1022608984451\":1509788624914,\"1022608984453\":1509788624914,\"1022608984456\":1509788624914,\"1022608984458\":1509788624914,\"1022608984460\":1509788624914,\"1022407007623\":1478686417208,\"1022608984461\":1509788624914,\"1022608984462\":1509788624914,\"1021469263317\":1478686417109,\"4919456843\":1509788624161,\"1021668635041\":1509788624564,\"1021668635040\":1509788624564,\"1023097758730\":1509788624908,\"1021327186608\":1465470268217,\"1018849716552\":1509788624309,\"1025703936476\":1509788625001,\"1023097758723\":1509788624908,\"1023097758720\":1509788624908,\"1021540829677\":1478686417113,\"1020375876189\":1509788625020,\"1023097758740\":1509788624908,\"1012476701984\":1444487341760,\"1021484860493\":1478686417007,\"1022608984433\":1509788624914,\"1022608984435\":1509788624914,\"1023097758762\":1509788624908,\"1022608984436\":1509788624914,\"1025879181920\":1509788667404,\"1023097758763\":1509788624908,\"1022827623437\":1509788624990,\"1023097758760\":1509788624908,\"1023097758761\":1509788624908,\"1022608984439\":1509788624914,\"1023097758758\":1509788624908,\"1022407007607\":1478686417208,\"1023097758753\":1509788624908,\"1022608984447\":1509788624914,\"1023097758780\":1509788624908,\"1023097758781\":1509788624908,\"1023097758779\":1509788624908,\"1021656174126\":1509788624404,\"1004167371809\":1444487341703,\"1025383885960\":1509788624869,\"1020294094702\":1465470268288,\"1322688285\":1444487341717,\"1022143376709\":1478686417184,\"1022827623537\":1509788624990,\"1022158580821\":1478686417185,\"1009388672329\":1478686804055,\"1022143376757\":1478686417184,\"1006873263952\":1478686804017,\"1016694335152\":1478686804069,\"1018667793492\":1478686804033,\"1021654208073\":1478686417120,\"1008105318107\":1509788624374,\"1024920285983\":1509788624488,\"1024509106325\":1509788624935,\"1022455504393\":1478686417298,\"1025715471238\":1509788625094,\"1025715471239\":1509788625094,\"1025715471236\":1509788625093,\"1025715471237\":1509788625094,\"1022014924348\":1509788624814,\"1010484680567\":1478686804061,\"1025715471246\":1509788625094,\"1025715471247\":1509788625094,\"1025715471244\":1509788625094,\"1025715471242\":1509788625093,\"1025715471243\":1509788625093,\"1025715471240\":1509788625094,\"725809488\":1444487341734,\"1024363090486\":1509788624278,\"1025715471248\":1509788625094,\"1020817997700\":1478686417226,\"1025715471249\":1509788625094,\"1023561335798\":1509788625098,\"1020817997709\":1478686417226,\"1023561335757\":1509788624531,\"1023561335754\":1509788624530,\"1023561335755\":1509788624531,\"1023561335748\":1509788624531,\"1023561335749\":1509788624530,\"1023561335750\":1509788624530,\"1023561335751\":1509788624530,\"1023930053694\":1509788624178,\"1023561335745\":1509788624531,\"1021211448881\":1478686804033,\"1025715471283\":1509788625164,\"1025098284614\":1509788624293,\"1025715471281\":1509788625164,\"1021603352219\":1478686804031,\"1022112573564\":1509788624944,\"1025715471295\":1509788625111,\"1023561335760\":1509788624531,\"1023561335761\":1509788624530,\"1025715471291\":1509788625111,\"1025715471288\":1509788625142,\"1021492856597\":1478686417111,\"1023561335726\":1509788624530,\"158260010\":1444487341723,\"1023561335723\":1509788624531,\"158260007\":1444487341727,\"1023561335719\":1509788624531,\"1023561335714\":1509788624530,\"1645523035\":1478686804024,\"1023561335715\":1509788624531,\"1023561335740\":1509788624530,\"1023561335743\":1509788624531,\"228646909\":1444487341754,\"1023561335731\":1509788624530,\"1025715471334\":1509788625095,\"1025715471335\":1509788625095,\"1025715471330\":1509788625094,\"1025636572732\":1509788624335,\"1025715471328\":1509788625094,\"1025715471342\":1509788625094,\"1025715471340\":1509788625094,\"1020933859040\":1478686416984,\"1023561335680\":1509788624417,\"1025715471338\":1509788625094,\"1023880640138\":1509788624969,\"1025715471336\":1509788625094,\"1025715471351\":1509788625094,\"1025715471347\":1509788625094,\"1025715471345\":1509788625094,\"1025270244430\":1509788624915,\"1025715471352\":1509788625095,\"1022882282008\":1509788625111,\"1023561335660\":1509788624417,\"1025514280709\":1509788624338,\"1023561335661\":1509788624417,\"1008797365098\":1444487341757,\"1022608984658\":1509788624265,\"1025270244530\":1509788624915,\"1008797365099\":1444487341757,\"1023561335656\":1509788624417,\"1023561335657\":1509788624417,\"1023561335658\":1509788624417,\"1008797365103\":1444487341757,\"1023561335659\":1509788624417,\"1022608984664\":1509788624265,\"1023561335652\":1509788624417,\"1025715471117\":1509788625092,\"1022897355533\":1509788624928,\"1023561335650\":1509788624417,\"1008797365112\":1444487341757,\"1023561335676\":1509788624417,\"1023561335677\":1509788624417,\"1008797365114\":1444487341757,\"1023561335678\":1509788624417,\"1022608984645\":1509788624265,\"1023561335673\":1509788624417,\"1025715471123\":1509788625092,\"1023561335674\":1509788624417,\"1025715471120\":1509788625092,\"1008797365104\":1444487341757,\"1021485516605\":1478686417046,\"1023561335668\":1509788624417,\"1025715471134\":1509788625092,\"1025715471135\":1509788625092,\"1008797365106\":1444487341757,\"1022608984650\":1509788624265,\"1023561335670\":1509788624417,\"1025715471133\":1509788625092,\"1008797365108\":1444487341757,\"1008797365110\":1444487341757,\"1023561335666\":1509788624417,\"1025715471128\":1509788625092,\"1012179302626\":1478686417073,\"1025715471140\":1509788625092,\"1022608984691\":1509788624265,\"1025715471141\":1509788625092,\"1025715471138\":1509788625092,\"1022608984694\":1509788624265,\"1025715471136\":1509788625092,\"1022608984695\":1509788624265,\"1025715471137\":1509788625092,\"1016694334961\":1478686804063,\"1023561335621\":1509788624812,\"1016694334962\":1478686804063,\"1021396786617\":1509788624394,\"1023561335622\":1509788624812,\"1023946569146\":1491634246531,\"1016694334965\":1478686804042,\"1023561335617\":1509788624812,\"1016694334966\":1478686804042,\"1022711483418\":1509788625058,\"1019391019565\":1509788624281,\"1025715471158\":1509788625093,\"1022608984673\":1509788624265,\"1022608984674\":1509788624265,\"1025715471156\":1509788625092,\"1025715471157\":1509788625093,\"1021899456428\":1478686417010,\"1022608984677\":1509788624265,\"1022608984678\":1509788624265,\"1019388922373\":1480585069072,\"1022608984680\":1509788624265,\"1021934838341\":1509788624869,\"1022482236132\":1478943089315,\"1025715471164\":1509788625092,\"1019388922374\":1480585069072,\"1025715471165\":1509788625092,\"1022608984684\":1509788624265,\"1025715471163\":1509788625093,\"1019388922371\":1480585069072,\"1025715471160\":1509788625093,\"1019388922370\":1480585069072,\"1025715471174\":1509788625092,\"1008906155349\":1509788624389,\"1023561335597\":1509788624812,\"1025715471172\":1509788625092,\"1023561335594\":1509788624812,\"1025715471168\":1509788625092,\"1023561335595\":1509788624812,\"1025715471180\":1509788625093,\"1023561335591\":1509788624812,\"1025715471181\":1509788625093,\"1021934838321\":1509788624849,\"1021191000473\":1478686417038,\"1023561335613\":1509788624812,\"1023561335614\":1509788624812,\"1023561335608\":1509788624812,\"1022188858639\":1478686417187,\"1021853972740\":1509788624394,\"1020809084611\":1478686416992,\"1021946503927\":1478686417144,\"1025288988107\":1509788624286,\"1023561335606\":1509788624812,\"1006734717990\":1478686804054,\"1023561335601\":1509788624812,\"1023561335602\":1509788624812,\"1023561335603\":1509788624812,\"1025715471206\":1509788625093,\"1022065649107\":1478686417060,\"1025715471204\":1509788625093,\"1022608984627\":1509788624266,\"1025879968059\":1509788667405,\"1021485516609\":1478686417046,\"1022608984631\":1509788624265,\"1025715471201\":1509788625093,\"1025715471214\":1509788625093,\"1025715471215\":1509788625093,\"1025715471213\":1509788625093,\"1025715471211\":1509788625093,\"1022608984638\":1509788624266,\"1025715471208\":1509788625093,\"1025715471209\":1509788625093,\"1023561335580\":1509788624812,\"1021051955564\":1478686804059,\"1023561335583\":1509788624812,\"1025715471218\":1509788625093,\"1025001288909\":1509788624462,\"1019797349043\":1465470268275,\"1025715471216\":1509788625093,\"1022608984615\":1509788624265,\"1023561335579\":1509788624812,\"1025715471217\":1509788625093,\"1024920285211\":1509788625218,\"1022608984617\":1509788624266,\"1021704810569\":1478686417050,\"1025715470983\":1509788624415,\"1025715470981\":1509788624415,\"1023561335528\":1509788624191,\"1025715470978\":1509788624415,\"1022608985044\":1509788625241,\"1025715470976\":1509788624415,\"1022998412434\":1509788624195,\"1022608985049\":1509788625241,\"1025715470988\":1509788624415,\"1023561335527\":1509788624191,\"1025715470989\":1509788624415,\"1025715470986\":1509788624415,\"1022608985052\":1509788625241,\"1023561335521\":1509788624191,\"1025715470987\":1509788624415,\"1025715470984\":1509788624415,\"1025422421009\":1509788624307,\"1025715470985\":1509788624415,\"1023844987412\":1491634246520,\"1022608985024\":1509788625241,\"1022608985025\":1509788625241,\"1022393637013\":1478686417291,\"1025270244643\":1509788624915,\"1022608985028\":1509788625241,\"1025627922374\":1509788624746,\"1022608985032\":1509788625241,\"1023946437636\":1491634246531,\"1025627922370\":1509788624823,\"1022608985036\":1509788625241,\"1503562371\":1444487341746,\"1023946437637\":1491634246531,\"1023946437638\":1491634246531,\"1025627922368\":1509788624828,\"1022447639889\":1480585069105,\"1025627922369\":1509788624832,\"1022608985072\":1509788625241,\"1016301777795\":1480585069066,\"1023561335502\":1509788624191,\"1022608985075\":1509788625241,\"4990368342\":1509788624161,\"1023561335497\":1509788624191,\"1016301777796\":1480585069066,\"1022608985078\":1509788625241,\"1023561335499\":1509788624191,\"1025715471022\":1509788624413,\"1020773169430\":1478686417029,\"1023561335493\":1509788624191,\"1025715471023\":1509788624413,\"1025715471021\":1509788624413,\"1025715471019\":1509788624412,\"1023561335490\":1509788624191,\"1023561335517\":1509788624191,\"1025715471031\":1509788624413,\"1025715471028\":1509788624412,\"1018515617693\":1509788624426,\"1022608985058\":1509788625241,\"1021887004399\":1478686804027,\"1025715471026\":1509788624412,\"1022447902079\":1480585069107,\"1022608985061\":1509788625241,\"1023561335514\":1509788624190,\"1025715471024\":1509788624413,\"1021064409076\":1478686417093,\"1025715471025\":1509788624412,\"1022608985066\":1509788625241,\"1023561335511\":1509788624190,\"1023561335504\":1509788624190,\"1025715471034\":1509788624413,\"1025715471035\":1509788624413,\"1022608985069\":1509788625241,\"1022608985070\":1509788625241,\"1025715471033\":1509788624413,\"1022056211680\":1478686417011,\"1023561335469\":1509788624190,\"1022608984977\":1509788624505,\"1022608984978\":1509788624505,\"1022608984980\":1509788624505,\"1022733765645\":1509788624544,\"1021690917413\":1478686417249,\"1025715471063\":1509788624413,\"1022608984962\":1509788624505,\"1025715471061\":1509788624413,\"1023561335480\":1509788624191,\"1022608984965\":1509788624505,\"1023097759448\":1509788624538,\"1023561335483\":1509788624190,\"1022608984968\":1509788624505,\"1023561335477\":1509788624191,\"1025715471069\":1509788624413,\"1023561335472\":1509788624191,\"1022608984972\":1509788624505,\"1025715471067\":1509788624413,\"1025715471079\":1509788624413,\"1025593579951\":1509788624201,\"1025715471075\":1509788624413,\"1016728414774\":1480585069087,\"1019029393769\":1509788624315,\"1025715471073\":1509788624413,\"1025715471086\":1509788624413,\"1022659184824\":1509788625059,\"1025715471085\":1509788624413,\"1025715471083\":1509788624413,\"1022608985021\":1509788625241,\"1022608985022\":1509788625241,\"1025715471094\":1509788624413,\"1025715471093\":1509788624413,\"1022046119207\":1478686417059,\"1025593579952\":1509788624204,\"1025538135362\":1509788624337,\"1022056211674\":1478686417011,\"1022965120744\":1509788625018,\"1025715470854\":1509788624415,\"1023097759246\":1509788624600,\"1025522013839\":1509788624295,\"1022447902158\":1480585069107,\"1019834966415\":1509788624301,\"1025715470850\":1509788624414,\"1022447902159\":1480585069107,\"1022447902156\":1480585069107,\"1022447902157\":1480585069107,\"1023097759241\":1509788624599,\"1024681459872\":1509788625213,\"1023097759239\":1509788624599,\"1021149581861\":1478686417097,\"1023097759235\":1509788624599,\"1023097759232\":1509788624599,\"1022447902168\":1480585069107,\"1016673494281\":1478686804051,\"1022447902173\":1480585069107,\"1022447902162\":1480585069107,\"1021459824820\":1509788624405,\"1019932486594\":1509788624922,\"1021051955207\":1478686804065,\"1023097759248\":1509788624599,\"1023097759249\":1509788624600,\"1022452358566\":1478686417296,\"1022447902186\":1480585069107,\"1022608984945\":1509788624505,\"1025270244754\":1509788624915,\"1022447902191\":1480585069107,\"1022447902188\":1480585069107,\"1020294094080\":1465470268288,\"1022608984953\":1509788624505,\"1022346845146\":1478686417202,\"1022447902176\":1480585069107,\"1022346845148\":1478686417202,\"1022447902183\":1480585069107,\"1022608984957\":1509788624505,\"1022447902180\":1480585069107,\"1022447902181\":1480585069107,\"1025715470889\":1509788624451,\"1022608984959\":1509788624505,\"1024681459866\":1509788624452,\"1022608984930\":1509788624505,\"1025715470901\":1509788624435,\"1022608984931\":1509788624505,\"1022447902207\":1480585069108,\"1022608984934\":1509788624505,\"1022447902205\":1480585069108,\"1022608984935\":1509788624505,\"327467068\":1444487341730,\"1022608984937\":1509788624505,\"1022346845131\":1478686417202,\"1022608984939\":1509788624505,\"1022608984940\":1509788624505,\"1022447902199\":1480585069108,\"1022447902196\":1480585069107,\"1022998412378\":1509788624419,\"1022447902091\":1480585069107,\"1022447902088\":1480585069107,\"1022447902089\":1480585069107,\"1025715470917\":1509788624435,\"1022447902094\":1480585069107,\"1022447902095\":1480585069107,\"1025270244853\":1509788624915,\"1022447902092\":1480585069107,\"1025715470912\":1509788624435,\"1022048609778\":1478686417171,\"1022447902082\":1480585069107,\"1022212625337\":1478686417191,\"1022447902080\":1480585069107,\"1022998412368\":1509788624817,\"1022447902081\":1480585069107,\"1022447902086\":1480585069107,\"1021442785695\":1478686417241,\"1022447902085\":1480585069107,\"1025715470921\":1509788624453,\"1022447902106\":1480585069107,\"1023946568902\":1491634246531,\"1022447902107\":1480585069107,\"1022447902104\":1480585069107,\"1022447902105\":1480585069107,\"1012186773559\":1478686416994,\"1022447902110\":1480585069107,\"1022447902108\":1480585069107,\"1022447902099\":1480585069107,\"1022882282369\":1509788624544,\"1012291232320\":1478686804019,\"1022447902112\":1480585069107,\"1025593579834\":1509788624800,\"1025715470967\":1509788624415,\"1021153776285\":1478686417097,\"1025593579833\":1509788624823,\"1024681459920\":1509788624335,\"1025715470975\":1509788624415,\"1025593579830\":1509788624829,\"1025593579831\":1509788624833,\"1025715471750\":1509788624803,\"1024727859813\":1509788624279,\"1022064206639\":1478686416975,\"1025715471746\":1509788624803,\"1024727859809\":1509788624279,\"1025715471747\":1509788624803,\"1024727859811\":1509788624279,\"1025715471759\":1509788624804,\"1025715471757\":1509788624803,\"1024727859816\":1509788624279,\"1025715471755\":1509788624803,\"1013077390563\":1478686804064,\"1025715471760\":1509788624805,\"1022195542895\":1509788624930,\"1022827622833\":1509788624990,\"1022432041336\":1478686417212,\"1025715471790\":1509788624808,\"1025715471791\":1509788624805,\"1025715471788\":1509788624809,\"1025715471786\":1509788624809,\"1025715471787\":1509788624809,\"1025715471785\":1509788624805,\"1025715471798\":1509788624805,\"1025715471796\":1509788624805,\"1025385982232\":1509788624915,\"1025715471795\":1509788624805,\"1025715471806\":1509788624805,\"1025715471803\":1509788624805,\"1020815505907\":1478686416998,\"1025715471808\":1509788624809,\"1025615994846\":1509788624929,\"1024212247410\":1509788625033,\"1012418767970\":1478686417026,\"1025715471838\":1509788624810,\"1024294168580\":1509788625032,\"1025715471837\":1509788624810,\"1021831953759\":1478686417053,\"1025715471834\":1509788624809,\"1025715471846\":1509788624809,\"1025715471847\":1509788624809,\"1020807379027\":1478686417030,\"1025715471844\":1509788624809,\"1025715471845\":1509788624809,\"1021690918159\":1478686417249,\"1025715471842\":1509788624809,\"1025715471840\":1509788624810,\"1022089637312\":1478686417273,\"1020792045430\":1478686804057,\"1025715471850\":1509788624810,\"1025715471848\":1509788624809,\"1025715471849\":1509788624809,\"1025715471619\":1509788624188,\"1025715471616\":1509788624188,\"1022044021494\":1478686417269,\"4998364516\":1509788667397,\"1025710884163\":1509788624305,\"1025715471638\":1509788624864,\"1025715471636\":1509788624864,\"1022444624395\":1478686417071,\"1025715471646\":1509788624826,\"1025715471647\":1509788624826,\"1025715471649\":1509788624840,\"1025715471671\":1509788624801,\"1833351668\":1491634246515,\"1024663111410\":1509788625025,\"1025715471678\":1509788624801,\"1025715471679\":1509788624801,\"1025715471676\":1509788624802,\"1025715471677\":1509788624802,\"1022440561254\":1478686417214,\"1025715471673\":1509788624802,\"1021892376997\":1478686417010,\"1025627789313\":1509788624281,\"1025715471685\":1509788624801,\"1025715471683\":1509788624801,\"1025715471680\":1509788624801,\"1025715471681\":1509788624801,\"1023716658786\":1491634246535,\"1024518413867\":1509788625008,\"1025715471688\":1509788624801,\"1025715471689\":1509788624802,\"1016943350457\":1478686804071,\"1022377909836\":1478686417069,\"1008678473190\":1478686804030,\"1025715471727\":1509788624803,\"417385485\":1444487341746,\"1008938532203\":1509788624371,\"1019330986179\":1509788624374,\"1025715471732\":1509788624805,\"1019330986181\":1509788624374,\"1025715471730\":1509788624804,\"1019330986180\":1509788624374,\"1025715471728\":1509788624804,\"1024727859859\":1509788624278,\"1021794333607\":1509788624394,\"1025715471738\":1509788624804,\"1025521357253\":1509788625125,\"1021427975625\":1478686804026,\"1025521357254\":1509788625108,\"1025715471494\":1509788624187,\"1024773606570\":1509788624876,\"1025715471495\":1509788624187,\"1025715471492\":1509788624187,\"598144673\":1478686804054,\"1025715471489\":1509788624187,\"1016612939582\":1465470268266,\"1025715471503\":1509788624187,\"1025715471499\":1509788624187,\"1025715471496\":1509788624187,\"1025715471497\":1509788624187,\"1025715471506\":1509788624187,\"1025715471507\":1509788624188,\"1016335726510\":1478686804016,\"1025715471504\":1509788624187,\"1024773606542\":1509788624876,\"1022816088401\":1509788624439,\"1010847092463\":1478686804022,\"1024773606554\":1509788624876,\"1006984798502\":1480585069067,\"1025521356806\":1509788624524,\"1022375419896\":1478686417290,\"1024461787908\":1509788624988,\"1016677425947\":1465470268261,\"1024461787909\":1509788624988,\"1009932628239\":1478686804025,\"1025715471567\":1509788624188,\"1025715471564\":1509788624188,\"1011113705138\":1480585069073,\"1025715471565\":1509788624188,\"1024773606625\":1509788624876,\"1025715471562\":1509788624188,\"1022816088372\":1509788624439,\"1025082031620\":1509788625007,\"1025715471563\":1509788624188,\"1025715471575\":1509788624188,\"1023097757919\":1509788625224,\"1023097757916\":1509788625224,\"1021288520755\":1465469681397,\"1012836992117\":1478686416981,\"1025715471570\":1509788624188,\"1023097757914\":1509788625224,\"1025715471571\":1509788624188,\"1025715471568\":1509788624188,\"1023097757912\":1509788625224,\"1025715471569\":1509788624188,\"1023097757913\":1509788625224,\"1025715471578\":1509788624188,\"1025715471577\":1509788624188,\"1023097757934\":1509788625224,\"1024773606603\":1509788624876,\"1023097757935\":1509788625224,\"1023097757932\":1509788625224,\"1023097757933\":1509788625224,\"1023097757928\":1509788625224,\"1023097757929\":1509788625224,\"1021484859579\":1478686417007,\"1021321682433\":1478686804034,\"1025715471598\":1509788624188,\"1024773606594\":1509788624876,\"1025715471599\":1509788624188,\"1008583049660\":1509788624383,\"1023097757924\":1509788625224,\"1025715471597\":1509788624188,\"1021321682437\":1478686804026,\"1023097757922\":1509788625224,\"1022435711092\":1478686417213,\"1025715471607\":1509788624188,\"1026507592960\":1515854751199,\"1025715471603\":1509788624188,\"1025715471600\":1509788624188,\"1025715471601\":1509788624188,\"1023097757945\":1509788625224,\"1025715471614\":1509788624188,\"1023097757942\":1509788625224,\"1017168266850\":1478686804040,\"1025715471613\":1509788624188,\"1023097757941\":1509788625224,\"1023097757938\":1509788625224,\"1025715471611\":1509788624188,\"1023097757939\":1509788625224,\"1023097757936\":1509788625224,\"1017168266907\":1478686804040,\"1018744726659\":1444487341701,\"1022061716170\":1478686417174,\"1017168266911\":1478686804057,\"1025715471374\":1509788624187,\"1022293233675\":1478686417198,\"1025715471375\":1509788624187,\"1020862686543\":1509788625084,\"1021120506598\":1478686416980,\"1019932487125\":1509788624922,\"1025715471383\":1509788624187,\"1025715471380\":1509788624187,\"1025715471378\":1509788624187,\"1025715471391\":1509788624187,\"1025715471386\":1509788624187,\"1021089573086\":1478686417094,\"1017168266886\":1478686804040,\"1025715471407\":1509788624187,\"1025715471405\":1509788624187,\"1025715471402\":1509788624187,\"1025715471400\":1509788624187,\"1025485313776\":1509788624425,\"1025715471401\":1509788624187,\"1025485313775\":1509788624431,\"1020850633257\":1478686804071,\"1020850633256\":1478686804071,\"1022501504143\":1509788625170,\"1020850633253\":1478686804071,\"1025715471422\":1509788624187,\"1020850633252\":1478686804071,\"1025715471423\":1509788624187,\"1020850633255\":1478686804071,\"1020850633254\":1478686804071,\"1025715471421\":1509788624187,\"1025715471430\":1509788624187,\"1025715471431\":1509788624187,\"1025715471429\":1509788624187,\"1025715471426\":1509788624187,\"1025715471427\":1509788624187,\"1025715471424\":1509788624187,\"1025715471434\":1509788624187,\"1025715471432\":1509788624187,\"1025715471433\":1509788624187,\"1020937396640\":1478686417229,\"1022002340143\":1478686804039,\"1022517102582\":1480585069099,\"1008592749029\":1478686804030,\"1023561335820\":1509788625097,\"1023561335823\":1509788625097,\"1025715471458\":1509788624199,\"1025715471459\":1509788624209,\"1025270244311\":1509788624915,\"1023097757801\":1509788625110,\"1022092127351\":1509788625020,\"1025715471466\":1509788624229,\"1023561335832\":1509788625097,\"1116116862\":1444487341756,\"1018279936801\":1465470268270,\"1023561335831\":1509788625097,\"1022897355900\":1509788624928,\"1025715471483\":1509788624187,\"1021680563716\":1478686804028,\"1025732641925\":1509788624922,\"115396842\":1444487341703,\"1025732641931\":1509788624922,\"1025459098818\":1509788624350,\"1025732641933\":1509788624922,\"1024283421378\":1509788624330,\"1018907258198\":1509788624282,\"715586691\":1509788625020,\"1022084919234\":1509788624416,\"1022078889594\":1478686417272,\"2078846426\":1478686804029,\"1022511334581\":1480585069131,\"1022238840055\":1509788624946,\"1022238840057\":1509788624932,\"1022238840058\":1509788624971,\"1022238840059\":1509788624971,\"1025811022263\":1509788667791,\"1008732474247\":1478686804019,\"1013425119868\":1465470268239,\"1024943879632\":1509788624408,\"1018200508364\":1465470268239,\"1023097758702\":1509788624908,\"1023097758703\":1509788624908,\"1025879182757\":1509788667404,\"4998365067\":1509788667393,\"149741189\":1509788625019,\"1022511334638\":1480585069131,\"1023097758719\":1509788624908,\"1597016387\":1491634246520,\"1023097758712\":1509788624908,\"4913951388\":1509788624160,\"1023097758708\":1509788624908,\"1022188464568\":1478686417013,\"1020976062588\":1478686417087,\"1012405268123\":1478686416994,\"1023097758705\":1509788624908,\"1021803118169\":1478686417130,\"1021845191889\":1480585069082,\"1023097758474\":1509788624264,\"1021803118163\":1478686417130,\"1023097758471\":1509788624264,\"1023097758469\":1509788624264,\"1023097758466\":1509788624264,\"1025486099935\":1509788624428,\"1021845191877\":1480585069082,\"1021321682427\":1478686804048,\"1009275382777\":1478686804024,\"1021845191878\":1480585069082,\"1021845191873\":1480585069082,\"1021321682428\":1478686804048,\"1021845191875\":1480585069082,\"1023087665840\":1509788624185,\"1023097758486\":1509788624264,\"1025715472158\":1509788624528,\"1021845191884\":1480585069082,\"1025715472159\":1509788624528,\"1021845191887\":1480585069082,\"1023097758484\":1509788624264,\"1025715472156\":1509788624528,\"1021845191886\":1480585069082,\"1023097758485\":1509788624264,\"1025715472154\":1509788624528,\"1021845191880\":1480585069082,\"1021845191882\":1480585069082,\"1021845191925\":1480585069082,\"1006011477183\":1478686804046,\"1021845191924\":1480585069082,\"1025715472167\":1509788624528,\"1024773607179\":1509788624877,\"1000037679278\":1478686417021,\"1021845191927\":1480585069082,\"1025715472164\":1509788624528,\"1025715472165\":1509788624528,\"551220863\":1478686417019,\"1021845191920\":1480585069082,\"1025715472160\":1509788624528,\"1021845191922\":1480585069082,\"1025715472161\":1509788624528,\"1021845191932\":1480585069082,\"1021845191929\":1480585069082,\"1021845191928\":1480585069082,\"1021845191930\":1480585069082,\"1025715472183\":1509788624528,\"1021845191911\":1480585069082,\"1025486099936\":1509788624425,\"551220847\":1478686417019,\"1021803118190\":1478686417130,\"1025593580671\":1509788624407,\"1021845191907\":1480585069082,\"1025486099940\":1509788624431,\"1021845191916\":1480585069082,\"1012418768525\":1478686417026,\"1021845191918\":1480585069082,\"1025486099945\":1509788624407,\"1023087665813\":1509788624185,\"1025715472184\":1509788624528,\"1021981893772\":1478686417057,\"1021845191914\":1480585069082,\"1025715472185\":1509788624528,\"1022126730669\":1478686417184,\"1025756104186\":1509788624970,\"1024453136389\":1509788624335,\"1010767396940\":1478950494939,\"1023845119944\":1491634246537,\"1023087665914\":1509788624185,\"1022074170982\":1478686417176,\"1025715472222\":1509788624528,\"1024435442472\":1509788624908,\"1025715472230\":1509788624528,\"1025715472231\":1509788624528,\"1025715472228\":1509788624528,\"1025715472229\":1509788624528,\"1025715472226\":1509788624528,\"1025715472227\":1509788624528,\"1025715472224\":1509788624528,\"1021845191869\":1480585069082,\"1025715472238\":1509788624528,\"1021845191868\":1480585069082,\"1025715472236\":1509788624528,\"1021845191870\":1480585069082,\"1021810982575\":1478686417256,\"1025715472234\":1509788624528,\"1021845191867\":1480585069081,\"1025715472232\":1509788624528,\"1021693409201\":1478686804034,\"1021693409203\":1478686804033,\"1021693409204\":1478686804031,\"1012172487731\":1478686804024,\"1023087665887\":1509788624185,\"1020963741757\":1478686417001,\"1021289176967\":1478686417040,\"1019948740541\":1509788624320,\"1019948740540\":1509788624320,\"1021918198016\":1509788624869,\"1018454931277\":1478686804040,\"1023087665954\":1509788624185,\"1018994136873\":1509788624282,\"1025715472023\":1509788624527,\"1006710338401\":1478686804028,\"1020294093233\":1465470268288,\"1025715472029\":1509788624527,\"1025715472024\":1509788624527,\"1025715472025\":1509788624527,\"1019300185291\":1478686804018,\"1025715472038\":1509788624527,\"1025715472039\":1509788624527,\"1025715472036\":1509788624527,\"1025715472037\":1509788624527,\"1021952403157\":1478686417146,\"1023097758379\":1509788624198,\"1023087665935\":1509788624185,\"1025715472042\":1509788624527,\"1025715472043\":1509788624527,\"1021865245737\":1478686417009,\"1025715472040\":1509788624527,\"1025715472041\":1509788624527,\"1022897356465\":1509788624928,\"1025715472062\":1509788624527,\"1025715472063\":1509788624527,\"1025715472060\":1509788624527,\"1025715472061\":1509788624528,\"1009715429485\":1491634246512,\"1025715472059\":1509788624527,\"1022259549380\":1478686417196,\"1025715472070\":1509788624527,\"1022259549381\":1478686417196,\"1022036156851\":1478686417267,\"1025715472066\":1509788624527,\"1025715472067\":1509788624527,\"1025715472064\":1509788624527,\"1025715472074\":1509788624527,\"1025715472075\":1509788624528,\"1022965250777\":1509788625051,\"1025715472072\":1509788624527,\"1023097758430\":1509788624264,\"1833351700\":1491634246515,\"1023097758428\":1509788624264,\"923852867\":1478950494918,\"1023097758429\":1509788624264,\"1018513257376\":1509788624837,\"1024667829570\":1509788624206,\"1025715472092\":1509788624564,\"1022231107124\":1509788624938,\"1023097758445\":1509788624264,\"1025715472101\":1509788624547,\"1022014923615\":1509788624532,\"1025715472098\":1509788624538,\"1025715472099\":1509788624546,\"1022231107120\":1509788624938,\"1021613312876\":1509788624397,\"1023097758439\":1509788624264,\"1833351723\":1491634246515,\"1023097758432\":1509788624264,\"1022021477029\":1509788624181,\"1025796342182\":1509788624274,\"1023097758461\":1509788624264,\"1023097758457\":1509788624264,\"1023097758454\":1509788624264,\"1019948740154\":1509788624323,\"1023097758453\":1509788624264,\"1023097758450\":1509788624264,\"1023097758451\":1509788624264,\"1000037679474\":1478686417021,\"1020819176190\":1478686416998,\"1019325613026\":1478686804058,\"1020800563986\":1509788624454,\"725810384\":1444487341732,\"1022085443189\":1478686417062,\"1025879182422\":1509788667404,\"1024453792077\":1509788624836,\"239786449\":1444487341707,\"1021661677753\":1509788625082,\"1022014923674\":1509788624193,\"1025715471911\":1509788624840,\"1025715471909\":1509788624840,\"1221762938\":1491634246508,\"1024773606912\":1509788624876,\"1021148272239\":1478686417002,\"1025715471913\":1509788624866,\"1021568224616\":1478686804065,\"1022035894606\":1478686417011,\"1020771466728\":1478686416996,\"1025715471950\":1509788624527,\"1023377051937\":1509788624974,\"1025715471947\":1509788624527,\"1025715471944\":1509788624526,\"1023561598503\":1509788624812,\"1025161324380\":1509788624179,\"1023377051962\":1509788624974,\"1022985173407\":1509788625049,\"1025715471960\":1509788624527,\"1021181301780\":1478686417098,\"1022188726331\":1478686417187,\"1025522012904\":1509788624296,\"1025715471983\":1509788624526,\"1025715471980\":1509788624527,\"1016531024612\":1478686804018,\"1025715471990\":1509788624526,\"1025715471991\":1509788624527,\"1025715471988\":1509788624526,\"1025715471989\":1509788624526,\"1016942825885\":1465470268261,\"1025715471987\":1509788624526,\"1023377051934\":1509788624974,\"1025715471992\":1509788624527,\"1021021675850\":1478686417090,\"1025627657415\":1509788624202,\"1021021675849\":1478686417090,\"1021021675848\":1478686417090,\"1025627657413\":1509788624202,\"1021654206387\":1478686417120,\"1025627657418\":1509788624202,\"1025585451343\":1509788624352,\"1021021675843\":1478686417090,\"1025627657421\":1509788624230,\"1025627657426\":1509788624214,\"1025627657424\":1509788624199,\"1025585451348\":1509788624351,\"851503827\":1444487341747,\"1025627657425\":1509788624229,\"1025585451349\":1509788624350,\"1025627657430\":1509788624212,\"1025585451346\":1509788624351,\"1025627657431\":1509788624198,\"1025585451347\":1509788624350,\"1025627657428\":1509788624211,\"1025627657429\":1509788624197,\"1025585451345\":1509788624350,\"1020743021043\":1478686417075,\"1023145468111\":1509788625182,\"1025627657432\":1509788624206,\"1023145468108\":1509788625182,\"1023145468109\":1509788625182,\"1025522015506\":1509788624295,\"1023145468106\":1509788625182,\"1023145468107\":1509788625182,\"1022221801946\":1478686417281,\"1023145468104\":1509788625182,\"1023145468105\":1509788625182,\"1025714817425\":1509788624540,\"1021217611167\":1478686417099,\"1025714817426\":1509788624542,\"1016870214392\":1478686804068,\"1016870214393\":1478686804068,\"1016870214394\":1478686804068,\"1020726767830\":1509788624389,\"1023561599453\":1509788624417,\"1021223247229\":1478686417003,\"1002762707342\":1480585069061,\"1008292993629\":1480585069074,\"1015292542093\":1478686804067,\"1024695094326\":1509788624291,\"1025627657362\":1509788624270,\"1020971478552\":1478686417086,\"1021958433223\":1478686417010,\"1008130351609\":1478686804034,\"1023821264957\":1491634246535,\"1025627657367\":1509788624269,\"1025627657369\":1509788624214,\"1021958433225\":1478686417010,\"1021958433224\":1478686417010,\"1021958433226\":1478686417010,\"1025627657376\":1509788624213,\"1025627657386\":1509788624214,\"1022425748945\":1478686417210,\"1025627657391\":1509788624199,\"1025714817475\":1509788624204,\"1025714817477\":1509788624185,\"1021174225441\":1478686417098,\"1025627657397\":1509788624203,\"1020965711579\":1478686417001,\"1006788850140\":1478686804046,\"1025627657405\":1509788624203,\"1016870214236\":1478686804068,\"1016870214237\":1478686804068,\"1025627657283\":1509788625121,\"1019932745940\":1480585069095,\"1016870214234\":1478686804068,\"1016870214235\":1478686804068,\"1025627657293\":1509788625121,\"1025627657298\":1509788625168,\"1024779502049\":1509788624244,\"1024779502050\":1509788624244,\"1024779502052\":1509788624244,\"1024779502053\":1509788624244,\"1024961313807\":1509788624970,\"1023145467982\":1509788624574,\"1025627657306\":1509788625167,\"1021716347774\":1478686417250,\"1023145467983\":1509788624574,\"1025627657307\":1509788625143,\"1024779502058\":1509788624244,\"1023145467980\":1509788624574,\"1024779502059\":1509788624244,\"1023145467981\":1509788624574,\"1025627657305\":1509788625111,\"1023145467978\":1509788624574,\"1024695094501\":1509788624291,\"1023145467979\":1509788624574,\"1016456966652\":1478686804040,\"1024779502062\":1509788624244,\"1025627657308\":1509788625105,\"1023145467977\":1509788624574,\"1025627657309\":1509788625138,\"1022318927546\":1478686417200,\"1025627657315\":1509788625129,\"1025627657312\":1509788625110,\"1022185186999\":1478686417063,\"1665842171\":1444487341741,\"1010013630937\":1491634246521,\"1025907098761\":1509788667459,\"1665842172\":1444487341750,\"1022024101176\":1478686417163,\"1024225878216\":1509788624990,\"1019819633069\":1509788624932,\"1025907098757\":1509788667463,\"1021140408477\":1478686417037,\"1025797262952\":1509788625086,\"1020243497855\":1465470268312,\"1023076658211\":1509788624378,\"1023076658212\":1509788624378,\"1021743873173\":1478686417009,\"1023145467904\":1509788624242,\"1019105812291\":1478686804020,\"1025627657248\":1509788625246,\"1025627657252\":1509788625243,\"1025627657259\":1509788625141,\"1025627657257\":1509788625141,\"1025627657263\":1509788625143,\"1025627657266\":1509788625111,\"1021681744100\":1509788624400,\"1019932483752\":1509788624922,\"1025627657270\":1509788625121,\"1025797262942\":1509788625123,\"1025797262943\":1509788625105,\"1021413689617\":1509788624816,\"1022249196253\":1509788624301,\"1024294561117\":1509788625032,\"1020900567948\":1509788625221,\"1024494031224\":1509788624228,\"1020900567957\":1509788625221,\"1008576629287\":1478686804030,\"1020900567965\":1509788625221,\"1019300186868\":1478686804018,\"1020900567975\":1509788625220,\"1024095332633\":1509788667459,\"1020900567996\":1509788625221,\"1015292542453\":1478686804067,\"1022202272175\":1480585069086,\"1009181273672\":1478686804030,\"1021632448439\":1509788624396,\"1022218787142\":1478686417281,\"1021345928515\":1478686416989,\"1020900568024\":1509788625221,\"1021117884122\":1465470268312,\"1024547246657\":1509788667496,\"1020900568040\":1509788625221,\"1022473587120\":1478943089531,\"1025528831966\":1509788624337,\"1025528831967\":1509788624339,\"1021292580958\":1478686417040,\"1025528831962\":1509788624341,\"1024460873672\":1509788625029,\"1025710884939\":1509788624306,\"1019891855136\":1509788624311,\"1020221214860\":1509788624374,\"1012395830811\":1478686804055,\"1020741185928\":1478686417028,\"1022184269714\":1478686417063,\"1022184269719\":1478686417063,\"1019908501042\":1509788624375,\"1022403334795\":1478686417207,\"1501855790\":1491634246534,\"1022929203722\":1509788625073,\"1025147303636\":1509788625171,\"1021816352857\":1509788625013,\"1022123057680\":1478686417183,\"1020954045633\":1478686416988,\"1025202482051\":1509788624515,\"1020918917845\":1478686804031,\"1019704422962\":1509788624354,\"1025627657473\":1509788624916,\"1020900567875\":1509788625221,\"1022301756616\":1478686417068,\"1020900567884\":1509788625221,\"1025627657487\":1509788624831,\"1025627657484\":1509788624848,\"1025627657485\":1509788624826,\"1021958301771\":1478686417147,\"1025402365824\":1509788625083,\"1020900567895\":1509788625221,\"1020726767927\":1478686416982,\"1025627657494\":1509788624831,\"1025627657495\":1509788624831,\"1020900567889\":1509788625221,\"1020900567903\":1509788625221,\"1021007520254\":1478686417089,\"1025627657502\":1509788624830,\"1025627657506\":1509788624868,\"1025627657505\":1509788624830,\"1025627657510\":1509788624844,\"1025627657511\":1509788624822,\"1025627657508\":1509788624866,\"1025627657509\":1509788624848,\"1025627657515\":1509788624824,\"1025627657513\":1509788624845,\"1025627657516\":1509788624836,\"1020900567913\":1509788625221,\"1009203290156\":1478686804054,\"1009203290153\":1478686804054,\"1020900567935\":1509788625221,\"1008603106425\":1478686804061,\"1022402286332\":1478686417070,\"1022402286333\":1478686417070,\"1020850632093\":1478686804050,\"1011890144177\":1478686804062,\"1020850632092\":1478686804050,\"1024281059588\":1509788624931,\"1011890144178\":1478686804062,\"1024281059586\":1509788624931,\"1007587967491\":1478686804030,\"1011890144180\":1478686804062,\"1025714817975\":1509788625106,\"1025714817977\":1509788625087,\"1024281059592\":1509788624931,\"1023561599994\":1509788624191,\"1873589690\":1444487341702,\"1011890144168\":1478686804062,\"1011890144171\":1478686804062,\"1011890144173\":1478686804062,\"1011890144175\":1478686804062,\"1024116566250\":1509788625035,\"1011890144145\":1478686804062,\"1021880710682\":1478686804069,\"1011890144146\":1478686804062,\"1022199473439\":1478686417280,\"1011890144149\":1478686804062,\"1011890144148\":1478686804062,\"1011890144151\":1478686804062,\"1011890144150\":1478686804062,\"1011890144152\":1478686804062,\"1021952142278\":1478686417146,\"1021663905076\":1478686417248,\"1011890144139\":1478686804062,\"1011890144143\":1478686804062,\"1011890144142\":1478686804062,\"1016399428744\":1480585069069,\"1021880710769\":1478686804069,\"115530929\":1444487341711,\"4828612010\":1509788624161,\"1025561203376\":1509788624523,\"1025561203377\":1509788624523,\"1021170030844\":1478686417098,\"1021729061210\":1478686417123,\"1023172993865\":1509788625044,\"1004684194213\":1509788624972,\"1020849321258\":1478686417078,\"1024554587770\":1509788624927,\"1021897881498\":1478686416979,\"1008873258959\":1444487341757,\"1008873258962\":1444487341757,\"1019601141419\":1478686804050,\"1019601141418\":1478686804050,\"1019601141417\":1478686804050,\"1208783551\":1444487341749,\"1019601141416\":1478686804050,\"1008873258966\":1444487341757,\"1019601141421\":1478686804050,\"1001052490046\":1478686417022,\"1019601141420\":1478686804050,\"1019601141415\":1478686804050,\"1019601141414\":1478686804050,\"1019601141413\":1478686804050,\"1011890144113\":1478686804062,\"1021390362032\":1478686417006,\"1011890144115\":1478686804062,\"1011890144114\":1478686804062,\"1021930780155\":1478686417142,\"1011890144117\":1478686804062,\"1009352759346\":1478686804055,\"1019227182217\":1509788625079,\"1025876164830\":1509788667402,\"1021880710902\":1478686804069,\"1025876164831\":1509788667402,\"1025896089104\":1509788667465,\"1011890144098\":1478686804062,\"1022409365090\":1478686417208,\"1019811375943\":1509788625017,\"1011890144100\":1478686804062,\"1011890144103\":1478686804062,\"1009352759342\":1478686804055,\"1011890144104\":1478686804062,\"1021880710881\":1478686804069,\"1011890144106\":1478686804062,\"1019811375944\":1509788625017,\"1011890144109\":1478686804062,\"1011890144108\":1478686804062,\"1011890144111\":1478686804062,\"1024779502510\":1509788624244,\"1011890144110\":1478686804062,\"1011890144080\":1478686804062,\"1011890144083\":1478686804062,\"1011890144084\":1478686804062,\"1011890144087\":1478686804062,\"1025876164853\":1509788667403,\"1011890144089\":1478686804062,\"1025876164859\":1509788667405,\"1025876164856\":1509788667402,\"1873589568\":1444487341754,\"1020294222939\":1465470268298,\"1010013631385\":1491634246521,\"1021303984238\":1478686417004,\"1010013631390\":1491634246521,\"1021452224854\":1509788624399,\"1025876164837\":1509788667406,\"1025876164842\":1509788667406,\"1021217873730\":1478686417099,\"1022076396176\":1478686417177,\"1010013631382\":1491634246526,\"1025876164847\":1509788667405,\"1025876164844\":1509788667403,\"1003709033041\":1478686804060,\"1003709033042\":1478686804060,\"1003709033045\":1478686804060,\"1021880710975\":1478686804069,\"1003709033047\":1478686804060,\"1003709033048\":1478686804060,\"1003709033051\":1478686804060,\"1003709033050\":1478686804060,\"1012599232633\":1478686417074,\"1003709033055\":1478686804060,\"1016810333564\":1509788625020,\"1025797262774\":1509788624424,\"1025797262772\":1509788624428,\"1003709033026\":1478686804060,\"1021880710947\":1478686804069,\"1025627789273\":1509788624999,\"1022254831825\":1478686417196,\"1870181468\":1478950494927,\"4563195094\":1465469681387,\"1022620123954\":1509788625075,\"1022160414298\":1478686417186,\"1003709033062\":1478686804060,\"1021880710924\":1478686804069,\"1003709033068\":1478686804060,\"1025627789311\":1509788624997,\"1021951879865\":1478686417146,\"1022094484024\":1478686417181,\"1020047696944\":1509788625078,\"1004035382926\":1478686804051,\"1020047696946\":1509788625077,\"1365412396\":1444487341741,\"1015292542852\":1478686804067,\"1024210938884\":1509788624608,\"1024210938885\":1509788624608,\"1024210938886\":1509788624608,\"1004035382929\":1478686804051,\"1024210938880\":1509788624608,\"240702733\":1478686804024,\"1004035382930\":1478686804051,\"1021906531792\":1509788624466,\"1020294092235\":1465470268288,\"1025627789222\":1509788625001,\"1024797720883\":1509788625069,\"1022360081130\":1478686417203,\"415548329\":1444487341743,\"1022022790871\":1478686417163,\"1021240548660\":1478686417003,\"1022412511004\":1478686417208,\"1025880752336\":1509788667811,\"1021866948460\":1509788624394,\"1021880711089\":1478686804069,\"1021832475285\":1478686804026,\"1021170030852\":1478686417098,\"1024398875027\":1509788624383,\"1024398875028\":1509788624383,\"1024398875029\":1509788624383,\"1024398875030\":1509788624383,\"1024398875031\":1509788624383,\"1024398875032\":1509788624383,\"1022631396065\":1509788624424,\"1024637684320\":1509788667503,\"1022202272582\":1480585069085,\"1016399428976\":1480585069069,\"499041911\":1444487341740,\"1022191477862\":1478686416989,\"1025662522703\":1509788625086,\"1021493776071\":1509788624398,\"1023440884426\":1509788625081,\"1020781948993\":1478686416997,\"1024281059571\":1509788624931,\"1024281059569\":1509788624946,\"1016531809553\":1480585069063,\"415548223\":1444487341743,\"1026223387456\":1514456869766,\"1016400083653\":1480585069069,\"1024210938694\":1509788625242,\"1025245342111\":1509788624937,\"1022208695449\":1480585069113,\"1024210938690\":1509788625242,\"1024210938691\":1509788625242,\"1024210938700\":1509788625241,\"1024210938702\":1509788625241,\"1021812814906\":1478686417132,\"1024210938697\":1509788625242,\"1022460089262\":1478686417217,\"1022648567402\":1509788624462,\"1024210938698\":1509788625242,\"1024210938740\":1509788624914,\"1024210938741\":1509788624915,\"1024210938743\":1509788624915,\"1024210938736\":1509788624915,\"1024210938739\":1509788624915,\"1024210938751\":1509788624914,\"1024210938746\":1509788624915,\"1020744594884\":1509788624389,\"1024210938734\":1509788624914,\"1024411459454\":1509788625070,\"1021812814946\":1478686417132,\"1021812814944\":1478686417132,\"1024210938643\":1509788625241,\"1024210938653\":1509788625242,\"1021121815355\":1478686417095,\"719910565\":1478950494915,\"1021475031051\":1478686417109,\"1024210938650\":1509788625242,\"1024210938630\":1509788625242,\"1024210938625\":1509788625242,\"1024210938626\":1509788625242,\"1025628704907\":1509788624507,\"1024210938639\":1509788625242,\"1024210938677\":1509788625241,\"1021812814927\":1478686417132,\"1024210938685\":1509788625242,\"1024210938687\":1509788625242,\"1022208695520\":1480585069115,\"1022067485561\":1509788624226,\"1024210938662\":1509788625242,\"1021735745708\":1509788624850,\"1021812814930\":1478686417132,\"1024210938657\":1509788625242,\"1025797262032\":1509788624537,\"1021735745705\":1509788624850,\"1021735745704\":1509788624850,\"1024210938668\":1509788625241,\"1021735745700\":1509788624850,\"1021812814938\":1478686417132,\"1024210938836\":1509788624608,\"776794830\":1491634246510,\"1024886865000\":1509788624460,\"1024210938846\":1509788624608,\"1024886864993\":1509788624461,\"1021887000918\":1478686804027,\"1024886864999\":1509788624461,\"1024210938843\":1509788624608,\"1024886865018\":1509788624460,\"1013010792538\":1465470268318,\"1024210938819\":1509788624608,\"1024210938828\":1509788624608,\"1024886865008\":1509788624460,\"1024210938830\":1509788624608,\"1024886865009\":1509788624460,\"1024210938831\":1509788624608,\"1008155780787\":1478686804030,\"1024210938825\":1509788624608,\"1024886865012\":1509788624461,\"1024210938827\":1509788624608,\"719910474\":1478950494915,\"1024210938870\":1509788624608,\"1024210938864\":1509788624608,\"1022072071286\":1509788624921,\"1024210938876\":1509788624608,\"1024886864963\":1509788624460,\"1025322411454\":1509788624306,\"1024886864960\":1509788624461,\"719910467\":1478950494915,\"1024886864961\":1509788624461,\"1024210938873\":1509788624608,\"1021990022937\":1478686417155,\"1022443835942\":1478686417295,\"1021340553465\":1465470268223,\"1022178108108\":1478686417278,\"719910489\":1478950494915,\"1024210938853\":1509788624608,\"1021340553467\":1465470268223,\"1024210938854\":1509788624608,\"1021340553466\":1465470268223,\"719910491\":1478950494915,\"1024210938848\":1509788624608,\"1021340553468\":1465470268223,\"1023939230675\":1509788624519,\"1025860044381\":1509788667462,\"1024210938860\":1509788624608,\"1024210938861\":1509788624608,\"1024210938857\":1509788624608,\"1024210938774\":1509788624915,\"1024210938768\":1509788624914,\"1024210938769\":1509788624914,\"1024210938770\":1509788624915,\"1024210938771\":1509788624915,\"1024210938780\":1509788624914,\"1009716218852\":1478686804032,\"1024210938781\":1509788624914,\"1025507858733\":1509788624340,\"1024210938776\":1509788624915,\"1024210938778\":1509788624915,\"1024210938779\":1509788624915,\"1017260934470\":1465470268269,\"1004910159211\":1478686804040,\"1024210938758\":1509788624914,\"1024210938754\":1509788624914,\"1021909938848\":1478686417140,\"1022370043447\":1509788624300,\"1024210938765\":1509788624914,\"1022239628814\":1478686417283,\"1025628704782\":1509788624507,\"1024210938760\":1509788624914,\"1024210938762\":1509788624914,\"1018478657024\":1509788624372,\"719910413\":1478950494914,\"1020650618752\":1478686416996,\"1020650618757\":1478686416996,\"1022208695394\":1480585069114,\"1025147827087\":1509788624929,\"1022030129575\":1509788624463,\"1003709033552\":1478686804060,\"1016317115605\":1509788624284,\"1003709033556\":1478686804060,\"1012791120608\":1478686804062,\"1022736646706\":1509788624301,\"1022208695691\":1480585069114,\"1022736646707\":1509788624301,\"1003709033563\":1478686804060,\"1020444166871\":1478686804033,\"1021501639621\":1509788624451,\"1022208695700\":1480585069113,\"1021899714612\":1509788625240,\"1208784174\":1444487341728,\"1024210938486\":1509788624266,\"1022114015095\":1478686417183,\"1003709033588\":1478686804060,\"1024210938481\":1509788624266,\"1003709033591\":1478686804060,\"1024210938483\":1509788624266,\"1003709033595\":1478686804060,\"1021885952231\":1478686417137,\"1024210938488\":1509788624266,\"1024210938489\":1509788624266,\"1298305100\":1478686804068,\"1024210938490\":1509788624266,\"1003709033598\":1478686804060,\"1021705207737\":1478686417050,\"1003709033572\":1478686804060,\"1022208695737\":1480585069113,\"1003709033577\":1478686804060,\"1024210938476\":1509788624266,\"1012791120607\":1478686804062,\"1024210938478\":1509788624266,\"1003709033580\":1478686804060,\"1021705207731\":1478686417050,\"1025669731198\":1509788667457,\"1021790403293\":1509788624399,\"1021705207744\":1478686417050,\"1298305079\":1478686804068,\"1014942700278\":1478686804028,\"1014617007702\":1465470268319,\"1023242724273\":1509788625102,\"1017168268921\":1478686804040,\"1021920817843\":1509788624466,\"1017770551888\":1478686804022,\"1021914919781\":1478686417054,\"1024773604551\":1509788624438,\"1021089570876\":1478686417094,\"1015334484942\":1478686804062,\"1021734173040\":1509788624395,\"1022208695558\":1480585069114,\"158389501\":1444487341754,\"1024210938560\":1509788624266,\"1024210938572\":1509788624266,\"1025880753716\":1509788667811,\"1024210938573\":1509788624266,\"1024210938574\":1509788624266,\"1191352991\":1444487341735,\"1022674780506\":1480585069068,\"1024210938571\":1509788624266,\"1024210938613\":1509788625241,\"1024210938614\":1509788625242,\"1015334484974\":1478686804062,\"1012822445474\":1478686417224,\"1001052491299\":1478686417022,\"1007646949680\":1478686804032,\"1020971477991\":1478686417086,\"1024210938619\":1509788625242,\"1022325086733\":1478686417288,\"1019676505133\":1509788624315,\"1020787455738\":1478686417029,\"1015334484977\":1478686804063,\"1022208695602\":1480585069113,\"1015334484874\":1478686804062,\"1021757765807\":1509788624993,\"1015334484875\":1478686804062,\"1015334484873\":1478686804062,\"512279372\":1491634246518,\"1024210938513\":1509788624266,\"1021786602000\":1509788624997,\"1012587306959\":1478686417074,\"1024210938522\":1509788624266,\"1003709033601\":1478686804060,\"1024210938500\":1509788624266,\"1003709033603\":1478686804060,\"268227119\":1478950494908,\"1024210938497\":1509788624266,\"1020812619801\":1478686417030,\"1022207384957\":1478686417013,\"1024210938505\":1509788624266,\"1010863341843\":1478686804049,\"1024210938550\":1509788624266,\"337693131\":1491634246518,\"1024210938559\":1509788624266,\"1024210938553\":1509788624266,\"1022208695651\":1480585069114,\"1024210938529\":1509788624266,\"1024210938537\":1509788624266,\"1021845189717\":1480585069080,\"1021845189718\":1480585069080,\"1021845189713\":1480585069080,\"1021984648675\":1478686417264,\"1021845189715\":1480585069080,\"1022628644739\":1509788624915,\"1021845189723\":1480585069080,\"1021742561895\":1478686804038,\"1021845189701\":1480585069080,\"1021742561894\":1478686804038,\"1021742561893\":1478686804038,\"1021845189703\":1480585069080,\"1021742561892\":1478686804038,\"1021742561891\":1478686804038,\"1023145469634\":1509788625183,\"1021742561890\":1478686804038,\"115398902\":1444487341756,\"1021742561889\":1478686804038,\"1021845189699\":1480585069080,\"1023242723580\":1509788624196,\"1021742561888\":1478686804038,\"1021845189709\":1480585069080,\"1021845189708\":1480585069080,\"1021845189711\":1480585069080,\"1021845189710\":1480585069080,\"1021845189704\":1480585069080,\"1021742561897\":1478686804038,\"1021845189707\":1480585069080,\"1021742561896\":1478686804038,\"1021845189706\":1480585069080,\"1021845189749\":1480585069081,\"1016399821035\":1480585069069,\"1021845189748\":1480585069081,\"1021845189750\":1480585069081,\"1021845189745\":1480585069081,\"1022713053368\":1509788624569,\"1021845189744\":1480585069080,\"1021845189747\":1480585069081,\"1021845189746\":1480585069081,\"1021845189756\":1480585069081,\"1021845189753\":1480585069081,\"1021845189752\":1480585069081,\"1021845189755\":1480585069081,\"1005797175541\":1480585069070,\"1022404514514\":1478686417207,\"1021937856228\":1478686804072,\"1021845189743\":1480585069080,\"1021288650533\":1465469681397,\"1021168590028\":1478686416977,\"1021742561831\":1478686804038,\"1021168590033\":1478686416977,\"1021742561835\":1478686804038,\"1023784812774\":1509788624960,\"1021742561834\":1478686804038,\"1021742561833\":1478686804038,\"1024695093798\":1509788624291,\"1021742561832\":1478686804038,\"1022966297348\":1509788624996,\"1022966297346\":1509788624996,\"1022211710480\":1478686417281,\"1016870214829\":1478686804018,\"1021865375091\":1509788624394,\"1022170243202\":1509788624924,\"1021996969299\":1478686417057,\"1021010536084\":1478686416991,\"1021036750049\":1478686417035,\"1021845189841\":1480585069081,\"1021845189840\":1480585069081,\"1024185772113\":1509788625071,\"1020900568065\":1509788625221,\"1022152811372\":1478686417277,\"1021036750070\":1478686417035,\"1021845189830\":1480585069081,\"1024481188267\":1509788667836,\"1021036750065\":1478686417035,\"1021845189825\":1480585069081,\"1021845189824\":1480585069081,\"935651665\":1509788624310,\"1021036750067\":1478686417035,\"1021908627707\":1478686417259,\"1023953647132\":1509788624437,\"1021845189826\":1480585069081,\"1021845189836\":1480585069081,\"1021036750079\":1478686417035,\"1021845189839\":1480585069081,\"935651678\":1509788624310,\"1021845189832\":1480585069081,\"1021845189834\":1480585069081,\"1018288457973\":1478686804053,\"1018288457975\":1478686804053,\"1018288457974\":1478686804053,\"1879748270\":1444487341709,\"1018288457969\":1478686804053,\"1018288457968\":1478686804053,\"1018288457971\":1478686804053,\"1018288457970\":1478686804053,\"935651694\":1509788624310,\"935651695\":1509788624311,\"1006011475122\":1478686804046,\"1018288457977\":1478686804053,\"1018288457976\":1478686804053,\"1018288457978\":1478686804053,\"1024780158953\":1509788624452,\"1022441082976\":1478686417295,\"1879748284\":1444487341709,\"1022185185449\":1478686417063,\"1023945128372\":1509788667535,\"1021036750044\":1478686417035,\"935651588\":1509788624310,\"1025891108303\":1509788667406,\"1012668307860\":1478686417224,\"1021135298118\":1480585069070,\"1019815833576\":1509788625081,\"1021845189761\":1480585069081,\"1021845189760\":1480585069081,\"1023161460503\":1509788625044,\"1024763774613\":1509788625069,\"1022284585680\":1478686417014,\"1021742561953\":1478686804039,\"1021845189763\":1480585069081,\"1021742561952\":1478686804039,\"115005442\":1444487341734,\"1022477520473\":1478943089487,\"1021845189821\":1480585069081,\"1021742561950\":1478686804039,\"1021845189820\":1480585069081,\"1021742561949\":1478686804039,\"1021845189823\":1480585069081,\"1021742561948\":1478686804039,\"1021742561947\":1478686804038,\"1024098873102\":1509788624555,\"1021845189816\":1480585069081,\"1024098873103\":1509788624556,\"1021845189819\":1480585069081,\"1024098873107\":1509788624556,\"1024098873104\":1509788624556,\"1024098873105\":1509788624556,\"1021483944750\":1509788624977,\"1007384023771\":1478686804032,\"935651645\":1509788624310,\"1007384023760\":1478686804032,\"1025627657154\":1509788624551,\"1025627657153\":1509788624551,\"1023393962208\":1509788624847,\"1025627657162\":1509788624541,\"1021540829042\":1478686417113,\"1025627657161\":1509788624538,\"1025627657164\":1509788624541,\"1024779503201\":1509788624580,\"1025627657168\":1509788624541,\"1024779503202\":1509788624580,\"1025627657169\":1509788624541,\"1024779503203\":1509788624580,\"1020626107895\":1478686417075,\"1024779503204\":1509788624580,\"1024779503209\":1509788624580,\"1024779503210\":1509788624580,\"1024779503211\":1509788624580,\"719910390\":1478950494914,\"1023957055318\":1509788624520,\"1019053251459\":1509788625019,\"1024454711690\":1509788625030,\"1022068008903\":1478686417175,\"1025627657192\":1509788624566,\"719910339\":1478950494914,\"1025627657199\":1509788624866,\"1016694335607\":1478686804068,\"1025627657197\":1509788624538,\"1025627657202\":1509788624536,\"1025627657203\":1509788624845,\"1025627657200\":1509788624848,\"1025627657201\":1509788624844,\"1023330000098\":1509788625072,\"1879748415\":1444487341751,\"1025627657204\":1509788624824,\"1025627657205\":1509788624544,\"1025784023720\":1509788624351,\"1021460745241\":1478686417045,\"1025784023726\":1509788624351,\"1879748419\":1444487341753,\"935651476\":1509788624310,\"1021742431014\":1478686417253,\"1879748444\":1444487341751,\"1016677427464\":1465470268261,\"1022811110387\":1509788624363,\"1021742431022\":1478686417253,\"1020997822341\":1478686417230,\"1023145469832\":1509788624242,\"1021604135912\":1478686804046,\"1021845189941\":1480585069081,\"1021845189940\":1480585069081,\"719910282\":1478950494914,\"1021845189943\":1480585069081,\"1021845189942\":1480585069081,\"1024244622903\":1509788624949,\"1021845189939\":1480585069081,\"1002497191\":1444487341744,\"719910273\":1478950494914,\"1021845189948\":1480585069081,\"1022415262519\":1478686417292,\"1021845189950\":1480585069081,\"1021845189945\":1480585069081,\"1021845189944\":1480585069081,\"1021845189946\":1480585069081,\"1022579100151\":1480585069124,\"1001052491001\":1478686417022,\"1021845189933\":1480585069081,\"1024098872986\":1509788624852,\"1021845189932\":1480585069081,\"1024098872987\":1509788624852,\"1019932485410\":1509788624922,\"1021845189935\":1480585069081,\"1021845189929\":1480585069081,\"1025627657150\":1509788624612,\"1024098872990\":1509788624852,\"1021845189928\":1480585069081,\"1025627657151\":1509788624611,\"1879748468\":1444487341753,\"1024098872988\":1509788624852,\"1024098872989\":1509788624852,\"1879748480\":1444487341751,\"1024779503328\":1509788625193,\"1024779503329\":1509788625194,\"1024779503331\":1509788625194,\"1022966297331\":1509788624996,\"1024779503335\":1509788625193,\"1024779503336\":1509788625193,\"1024779503337\":1509788625193,\"1021557212926\":1478686417048,\"1023152154606\":1509788625045,\"1879748526\":1444487341754,\"1879748527\":1444487341752,\"1023076658006\":1509788624358,\"1023076658008\":1509788624358,\"1023076658009\":1509788624358,\"935651433\":1509788624310,\"1024779503325\":1509788625193,\"1013077393219\":1478686804064,\"1007838722179\":1509788624386,\"1022007061256\":1478686417057,\"1021304509736\":1478686417238,\"1021625107148\":1509788624815,\"935651448\":1509788624310,\"1021018662487\":1478686417231,\"1025593840904\":1509788625022,\"1879748549\":1444487341752,\"1025525160238\":1509788624523,\"1022067484867\":1509788625083,\"1008058133442\":1480585069065,\"935651354\":1509788624310,\"1022446195076\":1478686417214,\"1022713053561\":1509788625171,\"1025711541797\":1509788624307,\"1018767928394\":1509788624366,\"935651381\":1509788624310,\"1023141799706\":1509788624453,\"1012111669661\":1478686416993,\"1021721066567\":1509788625084,\"1023145469743\":1509788624574,\"1022128039042\":1478686417184,\"1021985166331\":1478686417057,\"1020597518525\":1478686804026,\"1021990802328\":1478686417155,\"1022282359870\":1478686417286,\"1022473597148\":1478943089531,\"1020810644931\":1509788624359,\"1021674782797\":1478686416984,\"1023752191164\":1509788624926,\"1022244872790\":1478686417284,\"1017112178756\":1509788624300,\"1025068911109\":1509788624307,\"1023442987308\":1509788625081,\"1009708496780\":1491634246511,\"1021976121939\":1478686417056,\"1013247249132\":1465470268319,\"1021885550066\":1509788624465,\"1021490246961\":1509788624977,\"1021819226520\":1478686417053,\"1021983724150\":1509788624417,\"1021983724144\":1509788624417,\"1025607608932\":1509788624542,\"1025607608933\":1509788624537,\"1025607608934\":1509788624524,\"1021971927775\":1478686417150,\"1013100970264\":1478686804066,\"1025607608931\":1509788624540,\"1021744907482\":1478686416972,\"1022008759323\":1509788624424,\"1020807367825\":1478686417030,\"1021854223119\":1478686417135,\"1020943684775\":1478686417000,\"1022111652544\":1478686417182,\"1018245739641\":1509788625079,\"1021925527510\":1478686417055,\"1021831416247\":1478686417053,\"1022421429566\":1478686417209,\"1023242722859\":1509788624819,\"1024442787235\":1509788624925,\"1024442787232\":1509788624925,\"1024442787237\":1509788624925,\"1021424972172\":1509788624978,\"1025532896896\":1509788624341,\"1012641703457\":1478686417074,\"1024086544466\":1509788667495,\"1022236090896\":1478686417193,\"1025176654168\":1509788625079,\"1024690517438\":1509788624486,\"1024690517439\":1509788624487,\"1024690517436\":1509788624487,\"1024690517434\":1509788624487,\"1024690517433\":1509788624487,\"1024690517431\":1509788624486,\"1022712545166\":1509788625058,\"1016634168806\":1478686804058,\"1016634168807\":1478686804058,\"1016634168804\":1478686804058,\"1016634168805\":1478686804058,\"1016634168810\":1478686804058,\"1016634168811\":1478686804058,\"1016634168808\":1478686804058,\"1016634168809\":1478686804058,\"1020781808287\":1478686417076,\"1011856733855\":1478686804024,\"1021500995573\":1478686804040,\"1025902525773\":1509788667461,\"1025902525774\":1509788667462,\"1021747791159\":1478686804066,\"1022442925953\":1478686416984,\"1019716733440\":1509788624316,\"1024690517378\":1509788624486,\"1021683302593\":1478686417249,\"1024690517376\":1509788624486,\"1022426147977\":1478686417294,\"4818402931\":1509788624156,\"1021955674342\":1478686417056,\"1021955674348\":1478686417056,\"1016399677336\":1480585069069,\"1020960592966\":1478686417000,\"1024690517478\":1509788624487,\"1021606510024\":1478686417048,\"1013100970038\":1478686804066,\"1021693788163\":1480585069064,\"1024536242860\":1509788625026,\"1024690517472\":1509788624486,\"1021750805652\":1509788624395,\"1020960593009\":1478686417000,\"1024690517468\":1509788624486,\"1024690517469\":1509788624486,\"1022700878901\":1509788624973,\"1016847933782\":1478686804018,\"1024690517465\":1509788624486,\"1022169325455\":1478686417013,\"1024690517458\":1509788624486,\"1020960593022\":1478686417000,\"1016098354611\":1478686804026,\"1024690517452\":1509788624486,\"1016098354609\":1478686804019,\"1024690517453\":1509788624486,\"1022371490701\":1480585069097,\"1024690517449\":1509788624486,\"1024690517447\":1509788624486,\"1024966411606\":1509788625100,\"1024690517445\":1509788624486,\"1020960593006\":1478686417000,\"1024690517440\":1509788624486,\"1025237210505\":1509788624268,\"1020886667512\":1509788624177,\"1021659594435\":1509788624199,\"1016779136419\":1478686804017,\"1023836454921\":1491634246536,\"1020960593030\":1478686417000,\"1021682122822\":1478686417121,\"1022280001010\":1478686417067,\"1024690517372\":1509788624486,\"1024690517371\":1509788624486,\"1022269252310\":1478686417285,\"1022269252311\":1478686417285,\"1023048209221\":1509788625079,\"1022269252312\":1478686417285,\"1024690517367\":1509788624486,\"1024690517362\":1509788624486,\"1024690517356\":1509788624486,\"1024690517352\":1509788624486,\"1016254200899\":1480585069062,\"1020900823897\":1480585069064,\"1024690517346\":1509788624486,\"1023932007977\":1491634246530,\"1024690517343\":1509788624486,\"1024690517340\":1509788624486,\"1024690517341\":1509788624486,\"1016092455647\":1509788624941,\"1021396004599\":1478686416986,\"1021396004598\":1478686416986,\"1024690517332\":1509788624486,\"1024690517331\":1509788624486,\"1024690517329\":1509788624486,\"1024690517326\":1509788624486,\"1000984079956\":1478686417022,\"1024690517327\":1509788624486,\"1024690517325\":1509788624486,\"1573698617\":1491634246509,\"1021680550393\":1478686804028,\"1025364745616\":1509788624294,\"1309453324\":1491634246534,\"1022882269812\":1509788624553,\"1019022712962\":1509788625019,\"1021243565092\":1480585069071,\"1024596274240\":1509788624299,\"1023612335870\":1509788624952,\"1021659594084\":1509788624919,\"1021659594087\":1509788624920,\"1021545036314\":1478686417245,\"171239441\":1444487341725,\"1392554279\":1480585069072,\"1021659594095\":1509788624920,\"1023721650261\":1509788625110,\"1021659594089\":1509788624920,\"1021659594101\":1509788624920,\"1021659594102\":1509788624919,\"1021659594096\":1509788624920,\"1021659594099\":1509788624919,\"1566621527\":1444487341702,\"1021659594098\":1509788624920,\"1021659594111\":1509788624919,\"1021886992352\":1478686804027,\"1021659594110\":1509788624919,\"1021659594105\":1509788624919,\"1025667116118\":1508010983409,\"1025101942394\":1509788624308,\"1023612335782\":1509788624952,\"1022458523118\":1478686417217,\"1025101942387\":1509788624307,\"1021680550472\":1478686804028,\"1023612335788\":1509788624952,\"1024383148895\":1509788624330,\"1025101942377\":1509788624308,\"1021885812632\":1509788624818,\"1023612335793\":1509788624952,\"1024690517738\":1509788625201,\"1023612335799\":1509788624952,\"1022264271114\":1478686417067,\"1024690517737\":1509788625200,\"1025101942368\":1509788624308,\"1023612335802\":1509788624952,\"1024690517734\":1509788625200,\"1024690517732\":1509788625200,\"1024690517730\":1509788625200,\"1024690517731\":1509788625200,\"1024030838350\":1509788624521,\"1407627705\":1444487341729,\"1021962228480\":1478686417148,\"1024690517729\":1509788625200,\"1024690517727\":1509788625200,\"1024690517724\":1509788625200,\"1024690517725\":1509788625200,\"1024690517722\":1509788625200,\"1024690517723\":1509788625200,\"1023612335748\":1509788624952,\"1024690517721\":1509788625201,\"1022263484704\":1478686417285,\"1021292456770\":1478686417238,\"1024690517719\":1509788625201,\"1023612335753\":1509788624952,\"1024690517717\":1509788625201,\"1024690517714\":1509788625201,\"1023612335759\":1509788624952,\"1023612335757\":1509788624952,\"1024690517713\":1509788625201,\"1022037464243\":1509788625066,\"1024690517711\":1509788625200,\"1025322408807\":1509788624305,\"1023612335761\":1509788624952,\"1021703618769\":1478686417250,\"1025874606206\":1509788667581,\"1023612335767\":1509788624952,\"1023612335771\":1509788624952,\"1023612335773\":1509788624952,\"1020943685265\":1478686417000,\"1000984079649\":1478686417022,\"1021885812556\":1509788624195,\"1021600611904\":1478686416984,\"1025874606208\":1509788667580,\"1022444366873\":1478686417214,\"1021796156856\":1509788624399,\"1020927956603\":1478686417082,\"1021693658054\":1478686417121,\"1021257328095\":1478686417100,\"1020927956606\":1478686417082,\"1023612335683\":1509788624955,\"1023612335680\":1509788624955,\"1023612335686\":1509788624955,\"1023612335690\":1509788624955,\"1023612335688\":1509788624955,\"1022165000072\":1478686417186,\"1021680550570\":1478686804028,\"1023612335698\":1509788624955,\"1023612335699\":1509788624955,\"1023612335696\":1509788624955,\"1023612335700\":1509788624955,\"1022238842999\":1509788624947,\"1023612335701\":1509788624955,\"1021885812593\":1509788624420,\"1022238843002\":1509788624932,\"1025101942403\":1509788624308,\"1022238843004\":1509788624941,\"1022238843006\":1509788624941,\"1023612335650\":1509788624954,\"1021659594118\":1509788624919,\"1021659594113\":1509788624920,\"1023612335654\":1509788624955,\"1020605252347\":1478686417075,\"1021659594115\":1509788624919,\"1356902951\":1491634246513,\"1021659594114\":1509788624920,\"1021659594121\":1509788624920,\"1021659594122\":1509788624920,\"1023612335674\":1509788624955,\"1022158053206\":1478686417185,\"1025569467058\":1509788624350,\"1021786588479\":1509788624997,\"1022882269837\":1509788624567,\"1024054430819\":1509788624941,\"1025672228055\":1509788624921,\"1024237935433\":1509788667493,\"1003909963689\":1478686804046,\"1025569467055\":1509788624350,\"1024237935439\":1509788667493,\"1021098482724\":1478686417095,\"1021680550650\":1478686804028,\"1004352977907\":1444487341712,\"1016549887219\":1509788624944,\"1020574596383\":1509788624353,\"4985899581\":1509788624162,\"1022053979346\":1478686417059,\"1022355630815\":1478686417289,\"1013079868341\":1478686416995,\"1021980709183\":1478686417151,\"1023612336067\":1509788624952,\"1016914257688\":1478686804053,\"1021269912486\":1478686804033,\"1016914257689\":1478686804053,\"1013100970568\":1478686804066,\"1023612336069\":1509788624952,\"1023612336074\":1509788624952,\"1023612336077\":1509788624952,\"1020817723064\":1509788625021,\"1020937918332\":1478686417084,\"1021733767116\":1478686417124,\"1024690517897\":1509788624252,\"1021455249582\":1509788624399,\"1023730694349\":1509788624961,\"1024690517893\":1509788624252,\"1012180994406\":1478686417223,\"1024690517889\":1509788624252,\"1023612336038\":1509788624952,\"1021714760026\":1478686417123,\"1023612336042\":1509788624952,\"1023612336040\":1509788624952,\"1023612336051\":1509788624952,\"1023612336048\":1509788624952,\"1020808941386\":1478686417030,\"1573699231\":1491634246534,\"1023612336049\":1509788624952,\"1023612336054\":1509788624952,\"1023612336053\":1509788624952,\"1021680550748\":1478686804028,\"1023612336062\":1509788624952,\"1025721643595\":1509788624492,\"1025629630414\":1509788624428,\"1025629630415\":1509788624431,\"1025221873785\":1509788624999,\"1573699235\":1491634246509,\"1025629630416\":1509788624425,\"1025629630418\":1509788624406,\"1014992777692\":1509788624300,\"1025767127018\":1509788625137,\"1025767127017\":1509788625137,\"1025767127020\":1509788625137,\"1025767127021\":1509788625137,\"1011253809158\":1478686804066,\"1021531405160\":1509788624397,\"1023995054513\":1491634246529,\"1021609918427\":1478686417246,\"1021802842963\":1478686804065,\"1019596539853\":1509788624934,\"1025010451485\":1509788624461,\"1021094157956\":1478686417094,\"1023612335939\":1509788624952,\"1012126598203\":1478686417299,\"1023612335946\":1509788624952,\"1022241595674\":1509788624920,\"1023612335951\":1509788624952,\"1021885812342\":1509788624534,\"1024690517886\":1509788624252,\"1023612335904\":1509788624952,\"1023612335911\":1509788624952,\"1024690517881\":1509788624252,\"1023612335909\":1509788624952,\"1024690517878\":1509788624252,\"1024690517876\":1509788624252,\"1023612335918\":1509788624952,\"1022030517990\":1478686417058,\"1024690517873\":1509788624252,\"1024690517870\":1509788624252,\"1373811251\":1491634246518,\"1024690517868\":1509788624252,\"1024690517869\":1509788624252,\"1023612335921\":1509788624952,\"1024690517866\":1509788624252,\"1016092455148\":1509788624941,\"1023612335926\":1509788624952,\"1021693788806\":1480585069064,\"1024690517863\":1509788624252,\"1022026454704\":1478686417058,\"1024690517861\":1509788624252,\"1024690517858\":1509788624252,\"1024588672269\":1509788624169,\"1024690517855\":1509788624252,\"1023612335875\":1509788624952,\"1004244185749\":1480585069072,\"1307880982\":1491634246505,\"1024690517853\":1509788624252,\"1024690517850\":1509788624252,\"1008105313486\":1509788624389,\"1021739272052\":1478686417252,\"1023612335891\":1509788624952,\"1021680550897\":1478686804034,\"1000984079443\":1478686417021,\"1023612335898\":1509788624952,\"1024055872878\":1509788624328,\"1463464762\":1491634246509,\"1022009544815\":1509788624463,\"1023242722018\":1509788624535,\"1024783449403\":1509788625021,\"1024588671693\":1509788624279,\"1021749625333\":1509788624395,\"1020985365426\":1478686804039,\"1022419462203\":1509788624972,\"1021747789869\":1478686804029,\"1022419462198\":1509788624940,\"1022419462199\":1509788624972,\"1021544119301\":1478686417113,\"1025679174545\":1509788624352,\"1024157323303\":1509788667884,\"1025679174548\":1509788624352,\"1018980129622\":1509788624317,\"1023129867240\":1490882721866,\"1021921725416\":1478686417010,\"1018559775313\":1478686804071,\"1020264343755\":1509788624945,\"1022444366558\":1478686417214,\"1025147816730\":1509788624929,\"1018513637550\":1509788625229,\"1022235043177\":1478686417014,\"1021262177134\":1478686804039,\"1021992507368\":1478686416978,\"1025514283277\":1509788624337,\"1022963927301\":1509788625051,\"1009211809231\":1480585069074,\"1021685925195\":1478686417249,\"1021659593688\":1509788624826,\"1021526684656\":1478686417113,\"1021526684659\":1478686417113,\"1021138314439\":1478686417096,\"1021138314436\":1478686417096,\"1020907902711\":1478686804041,\"1020907902710\":1478686804041,\"1020907902719\":1478686804041,\"1020907902718\":1478686804041,\"1022827610465\":1509788624990,\"1020907902717\":1478686804041,\"1020907902716\":1478686804041,\"1020907902715\":1478686804041,\"1020907902713\":1478686804041,\"1008601936249\":1478686804030,\"1020907902712\":1478686804041,\"1024370304262\":1509788624927,\"1014669564682\":1478686804016,\"1022201043945\":1478686417280,\"1014669564679\":1478686804016,\"1014669564698\":1478686804016,\"1014669564700\":1478686804016,\"1020580756290\":1478686417027,\"1021791175572\":1478686417129,\"1020134056109\":1509788625076,\"1022967859639\":1509788625051,\"1020134056106\":1509788625078,\"1023145467351\":1509788624881,\"1016681091845\":1478686804018,\"1023145467349\":1509788624881,\"1022149007677\":1478686417185,\"1022460095156\":1478686417217,\"1024920274920\":1509788625217,\"1023145467344\":1509788624881,\"1023145467358\":1509788624881,\"1024920274917\":1509788625217,\"1024920274918\":1509788625218,\"1024920274919\":1509788625217,\"1023145467354\":1509788624881,\"1024920274912\":1509788625218,\"1023145467355\":1509788624881,\"1022921461565\":1509788624937,\"1024920274913\":1509788625218,\"1024920274942\":1509788625212,\"1024920274929\":1509788625211,\"1024920274930\":1509788625212,\"1022235305015\":1478686417193,\"1024920274891\":1509788625217,\"1024920274884\":1509788625217,\"1024920274885\":1509788625217,\"1021979268983\":1478686417151,\"1024920274880\":1509788625218,\"1024920274881\":1509788625218,\"1024920274882\":1509788625217,\"1022015443202\":1478686417160,\"1020907902726\":1478686804041,\"1024920274909\":1509788625217,\"1020907902725\":1478686804041,\"1020907902724\":1478686804041,\"1020907902723\":1478686804041,\"1019347775493\":1509788625080,\"1020907902722\":1478686804041,\"1020907902721\":1478686804041,\"1020907902720\":1478686804041,\"1023145467361\":1509788624881,\"1024920274900\":1509788625217,\"1019001742568\":1480585069068,\"1022131445279\":1478686417276,\"1020927562197\":1478686417228,\"1020927562196\":1478686417228,\"1023129866980\":1490882721866,\"1025023036813\":1509788625021,\"1021659593222\":1509788624515,\"1021914254200\":1509788625009,\"1021914254206\":1509788625008,\"1021659593219\":1509788624515,\"1021914254204\":1509788625008,\"1021659593229\":1509788624515,\"1021914254195\":1509788625008,\"1024920274853\":1509788625210,\"1024920274854\":1509788625210,\"1021914254192\":1509788625008,\"1025036012874\":1509788624233,\"1021914254199\":1509788625009,\"1024920274848\":1509788625211,\"1021914254197\":1509788625009,\"1024920274850\":1509788625210,\"1024920274851\":1509788625211,\"1024920274876\":1509788625218,\"1021914254186\":1509788625009,\"1024920274878\":1509788625218,\"1021914254184\":1509788625009,\"1021914254191\":1509788625008,\"1024920274873\":1509788625218,\"1021914254189\":1509788625009,\"1024920274874\":1509788625218,\"1021914254188\":1509788625009,\"1024920274875\":1509788625218,\"1021659593245\":1509788624515,\"1021914254179\":1509788625008,\"1024920274868\":1509788625217,\"1024920274869\":1509788625218,\"1024920274870\":1509788625218,\"1021914254183\":1509788625009,\"318830173\":1444487341731,\"1021914254182\":1509788625009,\"1021914254181\":1509788625009,\"1019065311369\":1509788624933,\"1024920274830\":1509788625210,\"1025796354999\":1509788624274,\"1024920274825\":1509788625211,\"1021659593251\":1509788624515,\"1020821653564\":1478686417078,\"1022452755303\":1478686417215,\"1021659593250\":1509788624515,\"1021659593261\":1509788624515,\"1024920274820\":1509788625211,\"1021659593260\":1509788624515,\"1024920274821\":1509788625211,\"1021659593263\":1509788624515,\"1021659593262\":1509788624515,\"1024920274823\":1509788625211,\"1024920274819\":1509788625209,\"1021659593269\":1509788624515,\"1024920274844\":1509788625210,\"1021659593265\":1509788624515,\"1024920274840\":1509788625210,\"1024383149157\":1509788624330,\"1021659593264\":1509788624515,\"1024920274841\":1509788625210,\"1021659593267\":1509788624515,\"1024920274842\":1509788625210,\"1021659593266\":1509788624515,\"1024920274843\":1509788625210,\"1021659593277\":1509788624515,\"1024920274836\":1509788625210,\"1024920274838\":1509788625210,\"1024920274832\":1509788625210,\"1024920274833\":1509788625210,\"1024920274834\":1509788625210,\"1024920274835\":1509788625210,\"1018972264980\":1509788624945,\"1024920274792\":1509788624487,\"1024920274793\":1509788624488,\"1024920274794\":1509788624487,\"1024920274795\":1509788624487,\"1022009414119\":1509788625075,\"1024920274789\":1509788624488,\"1024920274791\":1509788624488,\"1024920274784\":1509788624487,\"1024920274786\":1509788624487,\"1018509444742\":1509788624426,\"1024920274787\":1509788624487,\"1022967204078\":1509788625051,\"818730321\":1444487341744,\"1020862682456\":1509788625002,\"1021678716351\":1478686417120,\"1024920274764\":1509788624488,\"1024920274766\":1509788624488,\"1025508515928\":1509788624346,\"1024920274760\":1509788624488,\"1025508515929\":1509788624341,\"1024920274761\":1509788624488,\"1022095793379\":1478686417274,\"1025508515931\":1509788624343,\"1024920274763\":1509788624488,\"1024920274755\":1509788624487,\"1021914254218\":1509788625009,\"1024920274782\":1509788624487,\"1024920274783\":1509788624487,\"1024920274777\":1509788624488,\"1024920274779\":1509788624488,\"1024920274774\":1509788624488,\"1021914254208\":1509788625009,\"1024920274768\":1509788624488,\"1024920274771\":1509788624488,\"1024920274732\":1509788624255,\"1024920274734\":1509788624255,\"1024540569165\":1509788667549,\"1024920274728\":1509788624256,\"1024920274729\":1509788624255,\"1024920274731\":1509788624255,\"1024920274726\":1509788624255,\"1024920274720\":1509788624255,\"1009003137150\":1478686804023,\"1017091730011\":1465470268246,\"1025715614812\":1509788624832,\"1013100971188\":1478686804066,\"1025715614813\":1509788624822,\"1019042637466\":1509788625079,\"1025715614811\":1509788624828,\"1021967603465\":1478686417262,\"1024920274703\":1509788624255,\"1024920274696\":1509788624256,\"1025715614816\":1509788624616,\"1024920274697\":1509788624255,\"1024920274698\":1509788624255,\"1024481190622\":1509788667836,\"1024920274694\":1509788624255,\"1024920274695\":1509788624256,\"1024451437329\":1509788624328,\"1024920274717\":1509788624255,\"1024920274718\":1509788624255,\"1024920274712\":1509788624255,\"1021967603487\":1478686417149,\"1024920274714\":1509788624255,\"1022082555332\":1478686416981,\"1024920274715\":1509788624255,\"1024920274708\":1509788624255,\"1021551197222\":1478686417047,\"1024920274709\":1509788624255,\"1022408452447\":1478686417208,\"1024920274711\":1509788624255,\"1024920274706\":1509788624255,\"1463464645\":1491634246509,\"1021615291374\":1478686417116,\"1025192645850\":1509788667497,\"1025192645851\":1509788667497,\"1018706970955\":1509788624321,\"1025192645852\":1509788667497,\"1025192645853\":1509788667497,\"1025192645854\":1509788667497,\"1025192645855\":1509788667497,\"1023502887800\":1509788624943,\"1021936539345\":1509788624464,\"1022009414263\":1509788625075,\"1025270239279\":1509788624532,\"1008054850063\":1480585069062,\"1021832466227\":1478686416978,\"1022337150670\":1478686417015,\"1023995186202\":1491634246532,\"1025192645856\":1509788667497,\"1025192645857\":1509788667497,\"1008054850072\":1480585069062,\"1020985627052\":1478686804039,\"1008054850071\":1480585069062,\"1021823422401\":1478686417133,\"1022276592323\":1478686417197,\"1012260686303\":1478686417025,\"1356641940\":1491634246508,\"1023129866733\":1490882721866,\"1022551323245\":1509788624610,\"1022337150642\":1478686417015,\"1008877699952\":1478686804025,\"1019489728744\":1509788624301,\"1008877699964\":1478686804025,\"1008877699963\":1478686804025,\"1025879457184\":1509788667517,\"1022551323205\":1509788624610,\"1009965908011\":1491634246523,\"715705538\":1478686417020,\"1022484739667\":1478943089488,\"1022224558027\":1478686417013,\"1022321025416\":1478686417200,\"1021269913332\":1478686804033,\"1024245407581\":1509788624948,\"1020805270231\":1478686417225,\"1022323253599\":1478686417200,\"1025796354116\":1509788624274,\"1000476120956\":1478686417017,\"1025270239405\":1509788624532,\"1020998475314\":1478686417088,\"1017403017147\":1478686804020,\"1008877699980\":1478686804025,\"1024575433526\":1509788667903,\"1024966410905\":1509788624194,\"1008877699995\":1478686804025,\"1022202406482\":1478686417280,\"1008877699993\":1478686804025,\"1022472156743\":1478943089486,\"1000476120876\":1478686417017,\"1529003498\":1444487341699,\"1021786587423\":1509788624997,\"1012311675992\":1478686804062,\"1012311675995\":1478686804062,\"1012311675997\":1478686804062,\"1025023954450\":1509788624973,\"1021294817224\":1478686416985,\"1012311675998\":1478686804062,\"1024780304273\":1509788624511,\"1018468812623\":1478686804031,\"1529003513\":1444487341707,\"1021914253520\":1509788624427,\"1021354322806\":1465470268230,\"1012311676001\":1478686804062,\"1012311676000\":1478686804062,\"1012311676002\":1478686804062,\"1012311676005\":1478686804062,\"1024901662460\":1509788625016,\"1012311676004\":1478686804062,\"1021561814988\":1509788624821,\"1018938186597\":1509788624317,\"1025270239538\":1509788624532,\"1020857829410\":1478686416999,\"1020857829409\":1478686416999,\"1020857829415\":1478686416999,\"1020943684357\":1478686417000,\"1020857829412\":1478686416999,\"1019932483395\":1509788624922,\"1021341870922\":1478686417103,\"1561508402\":1478686417024,\"1021322472540\":1478686417102,\"1023145467892\":1509788624242,\"1022073642904\":1478686416988,\"1023145467888\":1509788624242,\"1023145467900\":1509788624242,\"1023145467898\":1509788624242,\"1022359563936\":1478686417203,\"1020167741793\":1509788625077,\"1010331999141\":1478686804052,\"1023145467886\":1509788624242,\"1023145467883\":1509788624242,\"1021522096347\":1478686417047,\"1000527893431\":1444487341713,\"1022202275757\":1480585069084,\"1020886668856\":1509788624177,\"1022148483941\":1478686417185,\"1024763526914\":1509788625219,\"1014249734747\":1478686804048,\"1022112570638\":1509788624944,\"1021295734360\":1478686417004,\"1019482258014\":1509788624315,\"1014742820050\":1480585069062,\"1022018065033\":1478686417160,\"1023129866433\":1490882721866,\"1022804673633\":1509788624511,\"1022018065024\":1478686417160,\"1020774075745\":1478686416997,\"1022008759290\":1509788624441,\"1025569074994\":1509788624344,\"1022611881974\":1509788624388,\"1022611881975\":1509788624388,\"1024186552796\":1509788625071,\"1020615476985\":1509788624353,\"4560316589\":1465469681389,\"1024303995438\":1509788624972,\"1023605388491\":1509788625144,\"1009848482007\":1491634246513,\"1022018065020\":1478686417160,\"1023565805070\":1491634246523,\"1020087527102\":1509788625078,\"1021747790763\":1478686804066,\"1025270239645\":1509788624532,\"1022190688269\":1478686417188,\"1022121483370\":1478686417276,\"1022202275673\":1480585069084,\"1021021150927\":1478686417090,\"1021021150926\":1478686417090,\"1021021150925\":1478686417090,\"1003237831302\":1480585069064,\"529856583\":1478950494910,\"1021845048719\":1478686417009,\"1021928933516\":1478686417142,\"1023866340415\":1509788624931,\"1021125220544\":1478686417095,\"1022138391353\":1478686417184,\"1023752190827\":1509788624926,\"1021287476861\":1478686417040,\"1021946632153\":1478686417055,\"1025909472231\":1509788667406,\"1024966411224\":1509788624533,\"1022202275605\":1480585069084,\"1019186555729\":1509788624315,\"1019496150617\":1478686804066,\"1019496150616\":1478686804066,\"1309451790\":1491634246534,\"1023702512000\":1509788625008,\"1019496150618\":1478686804066,\"1019529168968\":1509788624315,\"1020626225911\":1478686804028,\"1019767588355\":1509788624317,\"944820319\":1491634246515,\"1008869313970\":1509788624276,\"944820298\":1491634246515,\"1023888755828\":1491634246517,\"1020825453824\":1478686417078,\"1019300199414\":1478686804018,\"1021581734900\":1509788624397,\"1026225080123\":1514456869772,\"1023767000500\":1509788667834,\"1022076653686\":1509788624417,\"1023097757102\":1509788624496,\"1023097757098\":1509788624496,\"1023097757095\":1509788624496,\"1023097757093\":1509788624496,\"1019314617123\":1509788624376,\"1023097757091\":1509788624496,\"1020984713138\":1478686417088,\"1023097757117\":1509788624496,\"1022485788735\":1478943089489,\"1021112113106\":1478686417002,\"1023097757108\":1509788624496,\"1025796357864\":1509788624274,\"1022712673983\":1509788624538,\"1025627530372\":1509788624832,\"1023097757135\":1509788624496,\"1023097757132\":1509788624496,\"1025627530374\":1509788624823,\"1023097757129\":1509788624496,\"1025627530371\":1509788624828,\"1022485788736\":1478943089489,\"1023097757125\":1509788624496,\"1025627530378\":1509788624746,\"1256891066\":1444487341706,\"1023097757150\":1509788624496,\"1023097757148\":1509788624496,\"1023097757139\":1509788624496,\"944820238\":1491634246515,\"1022608601225\":1509788624994,\"1020862683300\":1509788624998,\"261285873\":1444487341733,\"1322690226\":1444487341735,\"1020862683299\":1509788624998,\"766428617\":1491634246507,\"1023097757161\":1509788624496,\"1023097757155\":1509788624496,\"1023097757152\":1509788624496,\"1021502176965\":1509788624983,\"1019529168955\":1509788624313,\"1019298757276\":1509788625079,\"1021789474574\":1509788624394,\"1022517902004\":1509788625064,\"1021099267617\":1478686417036,\"160882969\":1444487341762,\"1001249634118\":1444487341749,\"1025634608362\":1509788624359,\"1025634608364\":1509788624359,\"1025634608365\":1509788624359,\"1025634608366\":1509788624359,\"1025634608352\":1509788624359,\"1025634608353\":1509788624359,\"1025634608354\":1509788624359,\"1022401897364\":1509788624389,\"1022081634467\":1478686417062,\"1009851758484\":1491634246520,\"1021051163424\":1478686417036,\"1010827833929\":1478686804064,\"1009965256388\":1491634246523,\"1021809656006\":1509788624896,\"1021809656001\":1509788624896,\"1021660379105\":1478686416974,\"1021786591083\":1509788624997,\"1019638746980\":1478686804028,\"1021809656010\":1509788624896,\"1021729573881\":1509788624218,\"1021809655991\":1509788624895,\"1021729573880\":1509788624218,\"1021788426106\":1509788624403,\"1021809655990\":1509788624896,\"1021809655989\":1509788624896,\"1021809655988\":1509788624896,\"1021809655987\":1509788624896,\"1021809655986\":1509788624896,\"1021809655985\":1509788624895,\"1025634608304\":1509788624359,\"1021809655999\":1509788624896,\"1021809655998\":1509788624896,\"1022180857501\":1478686417063,\"1025634608306\":1509788624359,\"1021809655997\":1509788624896,\"1025634608307\":1509788624359,\"1021809655996\":1509788624896,\"1025634608308\":1509788624359,\"1021809655995\":1509788624896,\"1021809655994\":1509788624895,\"1021729573879\":1509788624218,\"1021809655993\":1509788624895,\"1021729573878\":1509788624218,\"1021809655992\":1509788624896,\"1019314617307\":1509788624376,\"1019314617306\":1509788624376,\"1024785412558\":1509788625198,\"1021885678894\":1478686417257,\"1021885678891\":1478686417137,\"1023173906922\":1509788624996,\"1021885678898\":1478686417137,\"1022453540586\":1478686804072,\"108195698\":1444487341726,\"1022747527529\":1509788624394,\"1022071411158\":1478686417176,\"1022071411168\":1478686417176,\"1022192522938\":1478686416984,\"1022191474424\":1478686416989,\"1020615477450\":1509788624353,\"1021908617016\":1509788625166,\"1020936084793\":1478686417083,\"1001517532847\":1444487341755,\"1019932479793\":1509788624922,\"1024334009997\":1509788625071,\"923852388\":1478950494918,\"1022998398701\":1509788624362,\"1021428775051\":1478686417007,\"490140852\":1444487341729,\"1022442006310\":1478686416984,\"1021137922533\":1465470268307,\"1021653562883\":1509788624396,\"1021259034246\":1465470268198,\"1021137922526\":1465470268306,\"1024862615509\":1509788624948,\"1023946559151\":1491634246529,\"1021873489220\":1478686417136,\"1008144896823\":1465470268318,\"1021873489222\":1478686417136,\"1021708995495\":1478686417122,\"1021708995502\":1478686417122,\"1021708995500\":1478686417122,\"1020825453820\":1478686417078,\"123662013\":1444487341737,\"1022064467650\":1478686417012,\"1022850551718\":1509788625053,\"1021087863938\":1478686417002,\"123661986\":1444487341735,\"1022349730349\":1478686417069,\"1018498828730\":1478686804066,\"1021832200964\":1509788624220,\"1024920275148\":1509788624489,\"1021259296000\":1465470268198,\"1021156141930\":1478686416975,\"1024920275149\":1509788624489,\"1024920275150\":1509788624489,\"1024920275140\":1509788624489,\"1024106863424\":1509788667472,\"1024223253168\":1509788667496,\"1024920275143\":1509788624489,\"1024920275136\":1509788624489,\"1024920275137\":1509788624489,\"1024920275138\":1509788624489,\"1022466516252\":1478686417299,\"1024223253165\":1509788667496,\"1024223253153\":1509788667496,\"1022998398368\":1509788624362,\"1024223253157\":1509788667496,\"1022105620717\":1478686417275,\"1022047558753\":1478686417171,\"1025017793913\":1509788624908,\"1020841051259\":1478686417031,\"1021997619561\":1478686417011,\"1024920275133\":1509788624489,\"1020555196266\":1478686416995,\"1024920275128\":1509788624489,\"1024920275130\":1509788624489,\"1021267550973\":1478686417040,\"1024920275120\":1509788624489,\"1025625433732\":1509788624871,\"1020935036656\":1478686417000,\"1025625433731\":1509788624843,\"1021610178266\":1478686417008,\"1025569465048\":1509788624351,\"1022485658249\":1480585069127,\"235332738\":1491634246512,\"1024920275049\":1509788624488,\"1024920275046\":1509788624489,\"1022394425616\":1509788624957,\"1024920275047\":1509788624488,\"1024920275040\":1509788624489,\"1025569465047\":1509788624352,\"1024920275042\":1509788624488,\"1022917918920\":1509788624825,\"1022425622321\":1478686417070,\"1021610178255\":1478686417008,\"1022700746693\":1509788624973,\"1021747793561\":1478686804066,\"1021316047196\":1478686416972,\"1024920275021\":1509788624488,\"1024920275022\":1509788624488,\"1024920275023\":1509788624488,\"1024920275017\":1509788624489,\"1024132290882\":1509788624327,\"1024920275018\":1509788624488,\"1021852385644\":1478686417135,\"1024920275019\":1509788624488,\"1024920275013\":1509788624488,\"1024920275014\":1509788624489,\"1023316764720\":1509788624301,\"1024920275036\":1509788624488,\"1024920275032\":1509788624488,\"1024920275033\":1509788624488,\"1020830696474\":1478686417226,\"1024920275028\":1509788624488,\"1012311676971\":1478686804062,\"1024920275030\":1509788624488,\"1024920275031\":1509788624488,\"1012311676973\":1478686804062,\"1012311676972\":1478686804062,\"1024920275025\":1509788624488,\"1012311676975\":1478686804062,\"1024920275026\":1509788624488,\"1020661091958\":1478686417075,\"1024920275027\":1509788624488,\"1024920274988\":1509788625211,\"1024920274985\":1509788625212,\"1024920274987\":1509788625211,\"1024920274982\":1509788625211,\"1024920274976\":1509788625212,\"1024920274978\":1509788625212,\"1022046903452\":1478686417269,\"1019917147630\":1509788624361,\"1019496150152\":1478686804066,\"1019314616797\":1509788624376,\"1020934643326\":1478686417000,\"1024920274959\":1509788625212,\"1022226525048\":1478686417192,\"1024920274954\":1509788625212,\"1023730692380\":1509788624960,\"1024920274948\":1509788625212,\"1024920274944\":1509788625212,\"1024920274972\":1509788625212,\"1024920274973\":1509788625211,\"1024920274975\":1509788625211,\"1024920274968\":1509788625211,\"1024920274969\":1509788625211,\"1022021082927\":1509788625066,\"1024920274971\":1509788625211,\"1024920274966\":1509788625211,\"1024920274967\":1509788625211,\"1023821777560\":1491634246536,\"1000309787915\":1478686417018,\"1024920274963\":1509788625212,\"1021606508443\":1509788624815,\"1018889163107\":1509788625018,\"1022252345627\":1509788624175,\"1022463501430\":1478686417072,\"1020615477901\":1509788624353,\"1018889163109\":1509788624366,\"1025767128989\":1509788625166,\"1024459828589\":1509788625030,\"1021046837466\":1478686417036,\"1023145333756\":1509788624475,\"1022780950972\":1509788624816,\"1025288985661\":1509788624286,\"1008037025893\":1478686804025,\"148562843\":1444487341705,\"1016956726524\":1478686804016,\"1021948861250\":1478686417145,\"444658121\":1478950494910,\"1021948861249\":1478686417145,\"1012471453607\":1478686417223,\"1022100247119\":1478686417277,\"1023978668632\":1509788624392,\"1021747793758\":1478686804066,\"1022594186473\":1480585069076,\"1023978668631\":1509788624392,\"1025090799517\":1509788624959,\"1021490511390\":1478686417110,\"1023391477094\":1509788625079,\"1021586714831\":1478686417114,\"1022349206445\":1478686417202,\"1022046248412\":1478686804047,\"1023097757195\":1509788624496,\"1023097757190\":1509788624496,\"1022292979212\":1478686417068,\"1023097757187\":1509788624496,\"1023850088795\":1509788624972,\"1020776562788\":1478686416992,\"1024430862263\":1509788667890,\"4914597759\":1509788624164,\"1025589387930\":1509788624569,\"1025593975127\":1509788624998,\"1025593975134\":1509788624997,\"1019560888800\":1509788624316,\"1025593975130\":1509788625084,\"1021726034129\":1478686416972,\"1021726034133\":1478686416972,\"1025593975138\":1509788624426,\"1023145333617\":1509788624475,\"1023924801001\":1509788624325,\"1023145333608\":1509788624475,\"1023145333609\":1509788624475,\"1023145333611\":1509788624475,\"1023145333612\":1509788624475,\"1022088057450\":1478686417179,\"1023145333613\":1509788624475,\"1022088057449\":1478686417179,\"1023145333615\":1509788624475,\"1022088057447\":1478686417179,\"1021770337554\":1478686417254,\"1021594448114\":1509788624397,\"1720356182\":1478686804033,\"1020294096247\":1465470268289,\"1021211455487\":1478686804033,\"1022222592569\":1478686417192,\"1021832200957\":1509788624220,\"1021832200955\":1509788624220,\"1020057119521\":1465470268276,\"1021832200948\":1509788624220,\"1015591509754\":1478686804016,\"1020057119536\":1465470268277,\"1025593975101\":1509788624998,\"1025593975098\":1509788625007,\"1024690518207\":1509788624891,\"1024690518205\":1509788624891,\"1024690518202\":1509788624890,\"1025006914501\":1509788624332,\"1024690518198\":1509788624890,\"1024690518196\":1509788624891,\"1024690518197\":1509788624890,\"1021886988759\":1478686804027,\"1024690518195\":1509788624891,\"1024690518192\":1509788624891,\"1025270241855\":1509788624269,\"1022192128923\":1478686417064,\"1022072460473\":1478686417271,\"1024690518190\":1509788624891,\"1024690518189\":1509788624891,\"1022016493584\":1509788625076,\"1024690518186\":1509788624890,\"1025767127173\":1509788624549,\"1024690518181\":1509788624891,\"1024690518177\":1509788624891,\"1023612336323\":1509788624953,\"1024690518172\":1509788624891,\"1023612336321\":1509788624953,\"158393684\":1444487341703,\"1024690518170\":1509788624891,\"1023612336327\":1509788624953,\"1023612336324\":1509788624953,\"1023612336325\":1509788624953,\"1023612336330\":1509788624953,\"1022271482087\":1478686417285,\"1023612336334\":1509788624953,\"1024690518163\":1509788624891,\"1023612336335\":1509788624953,\"1020526358751\":1465470268323,\"1025767127202\":1509788624549,\"1024690518158\":1509788624890,\"1023612336339\":1509788624953,\"1023612336336\":1509788624953,\"1023431976337\":1509788624521,\"1009999332473\":1491634246516,\"1000090908366\":1478686417021,\"1024936005163\":1509788625006,\"1023612336346\":1509788624953,\"1023612336347\":1509788624953,\"1023612336349\":1509788624953,\"1023211131020\":1509788624578,\"1023211131016\":1509788624578,\"1023211131013\":1509788624578,\"1019105422284\":1478686804027,\"1025801599528\":1509788624304,\"1023502885156\":1509788624943,\"1023211131009\":1509788624578,\"1024690518257\":1509788624587,\"1024690518254\":1509788624587,\"1024690518255\":1509788624587,\"1023211131038\":1509788624578,\"1023211131032\":1509788624578,\"1024690518251\":1509788624587,\"1024690518248\":1509788624587,\"1024690518249\":1509788624587,\"1024690518246\":1509788624587,\"1024690518247\":1509788624587,\"1024690518244\":1509788624587,\"1023211131024\":1509788624578,\"1024690518242\":1509788624587,\"1024690518243\":1509788624587,\"1024690518240\":1509788624587,\"1024690518241\":1509788624587,\"1021496932730\":1478686417112,\"1024690518237\":1509788624587,\"1023612336257\":1509788624953,\"1024690518235\":1509788624587,\"1023612336263\":1509788624953,\"1023612336260\":1509788624953,\"1023211131051\":1509788624578,\"1024690518233\":1509788624587,\"1023612336261\":1509788624953,\"1023612336266\":1509788624953,\"1023211131045\":1509788624578,\"1024690518231\":1509788624587,\"1023211131040\":1509788624578,\"1023612336270\":1509788624953,\"1022229015832\":1509788624939,\"1023612336268\":1509788624953,\"1025767127272\":1509788624211,\"1023211131057\":1509788624578,\"1024690518208\":1509788624891,\"1021942832153\":1509788625019,\"756072815\":1444487341729,\"1015640265843\":1465470268264,\"1000090908284\":1478686417021,\"1023211130953\":1509788624578,\"1023211130948\":1509788624578,\"1025009142575\":1509788624178,\"1023612336243\":1509788624953,\"1023211130974\":1509788624578,\"1023612336246\":1509788624953,\"1023211130969\":1509788624578,\"1023612336245\":1509788624953,\"1023211130964\":1509788624578,\"1023612336250\":1509788624953,\"1023612336251\":1509788624953,\"1021289178595\":1478686417040,\"1020805791922\":1478686416998,\"1010057396331\":1491634246534,\"1023612336255\":1509788624953,\"1023211130988\":1509788624578,\"1019932480763\":1509788624922,\"1021517118309\":1478686417047,\"1023211130991\":1509788624578,\"1021859596253\":1478686417135,\"1023211130984\":1509788624578,\"1021859596254\":1478686417135,\"1023211130980\":1509788624578,\"1001517531992\":1444487341751,\"1023211130976\":1509788624578,\"1022551324816\":1509788625236,\"1023211131005\":1509788624578,\"1008833269631\":1480585069066,\"1022112569084\":1509788624943,\"1023211130999\":1509788624578,\"341899484\":1444487341751,\"1023211130994\":1509788624578,\"1000090908219\":1478686417021,\"1022229015989\":1509788624939,\"1015589411312\":1478686804065,\"1025533553339\":1509788625083,\"1023612336164\":1509788624953,\"1025068910327\":1509788624295,\"1023612336170\":1509788624953,\"1023612336171\":1509788624953,\"1023612336168\":1509788624953,\"1021632721454\":1509788624818,\"1022551324909\":1509788625236,\"1023612336172\":1509788624953,\"1019932480651\":1509788624922,\"1021501258252\":1478686417112,\"1024153000008\":1509788667495,\"1023612336134\":1509788624953,\"1023612336138\":1509788624953,\"1023612336139\":1509788624953,\"1023612336136\":1509788624953,\"1023612336142\":1509788624953,\"1020294095449\":1465470268289,\"1023612336144\":1509788624953,\"1023612336150\":1509788624953,\"1022882268304\":1509788624553,\"1025270241996\":1509788624269,\"1021048936274\":1478686417093,\"1023612336156\":1509788624953,\"1025270242097\":1509788624269,\"1018513639882\":1509788625229,\"1024254187428\":1509788624948,\"1018513639885\":1509788625229,\"1018513639887\":1509788625229,\"1018513639873\":1509788625229,\"1018513639874\":1509788625229,\"1019496149847\":1478686804066,\"1018513639878\":1509788625229,\"1018513639898\":1509788625229,\"1023612336631\":1509788624951,\"1018513639900\":1509788625229,\"1018513639902\":1509788625229,\"1018513639888\":1509788625229,\"1023612336632\":1509788624951,\"1018513639891\":1509788625229,\"1023612336633\":1509788624951,\"1018513639893\":1509788625229,\"1023612336639\":1509788624951,\"309002059\":1491634246533,\"1023612336579\":1509788624951,\"1018513639912\":1509788625229,\"1021616337115\":1478686417117,\"1023612336577\":1509788624951,\"1023612336582\":1509788624951,\"1022434402333\":1478686417212,\"1022340556278\":1480585069071,\"1023612336580\":1509788624951,\"1018513639918\":1509788625229,\"1023612336586\":1509788624951,\"1018513639905\":1509788625229,\"1021507287891\":1478686417244,\"1019932480880\":1509788624922,\"1021826303065\":1509788624403,\"1022483561732\":1478943089531,\"1023612336589\":1509788624951,\"1023612336595\":1509788624951,\"1023612336592\":1509788624951,\"1022631801927\":1509788624439,\"1022483561744\":1478943089532,\"1021594580582\":1478686417115,\"1021153913898\":1478686417300,\"1025679827685\":1509788624351,\"1023612336556\":1509788624951,\"1016092458600\":1509788624941,\"1023612336561\":1509788624951,\"1021750806689\":1509788624507,\"1023612336566\":1509788624951,\"1021750806688\":1509788624507,\"1021750806691\":1509788624507,\"1023612336564\":1509788624951,\"1021750806690\":1509788624507,\"1023612336570\":1509788624951,\"1016092458598\":1509788624941,\"1016092458599\":1509788624941,\"179759063\":1444487341754,\"1022631801886\":1509788624429,\"1022046247733\":1478686804047,\"179759064\":1444487341752,\"1021803496895\":1509788624403,\"1021060601448\":1478686417002,\"1018513639870\":1509788625229,\"1022429159444\":1478686417294,\"1024132292198\":1509788624327,\"1025466576895\":1509788624361,\"1023612336481\":1509788624951,\"1018404204784\":1509788625019,\"1025508255850\":1509788624340,\"1011676897729\":1478686804049,\"1022032222370\":1478686417166,\"1021624070388\":1509788625081,\"1025466576872\":1509788624361,\"1025466576873\":1509788624361,\"1025466576871\":1509788624361,\"1019330738581\":1509788624316,\"1023612336450\":1509788624951,\"1023087663499\":1509788624185,\"1023087663500\":1509788624185,\"1022001944922\":1509788624463,\"1022008760636\":1509788624868,\"1023612336459\":1509788624951,\"1021677407742\":1478686417050,\"1021303727924\":1478686417102,\"1023087663491\":1509788624185,\"1023612336457\":1509788624951,\"341899724\":1444487341753,\"1023087663492\":1509788624185,\"1023612336462\":1509788624951,\"1023612336460\":1509788624951,\"1023087663495\":1509788624185,\"1023612336466\":1509788624951,\"1020890340503\":1509788624986,\"1025767127332\":1509788624211,\"1021677407727\":1478686417050,\"1023612336476\":1509788624951,\"226680893\":1478686417024,\"1023612336477\":1509788624951,\"1012128565944\":1478686417073,\"706136026\":1478686804019,\"1022974149437\":1490882721866,\"1000090908461\":1478686417021,\"1025767127367\":1509788624211,\"1023612336437\":1509788624951,\"1023612336443\":1509788624951,\"1012126599746\":1478686417299,\"1023612336447\":1509788624951,\"1021886595074\":1478686417258,\"1023612336445\":1509788624951,\"1022364279972\":1478686417069,\"1024010127049\":1509788667538,\"1022200255209\":1478686417190,\"1023567510633\":1509788624304,\"1021349339183\":1478686416974,\"1020615478379\":1509788624353,\"1022200255224\":1478686417190,\"1022476221762\":1478943089315,\"1018498829908\":1478686804066,\"1021006337448\":1478686417231,\"1022042970215\":1478686417269,\"1021757754213\":1509788624993,\"1024781350725\":1509788625149,\"1022057912734\":1478686417059,\"1024781350721\":1509788625149,\"1024781350722\":1509788625149,\"1022057912732\":1478686417059,\"1024781350723\":1509788625149,\"1025441411044\":1509788624407,\"1022320241146\":1478686417200,\"1016284606904\":1480585069064,\"1025441411040\":1509788624428,\"1025441411041\":1509788624431,\"1025441411042\":1509788624425,\"1022057912747\":1478686417059,\"1022057912749\":1478686417059,\"1025017792788\":1509788624497,\"341899853\":1444487341751,\"1022057912740\":1478686417059,\"1024726169777\":1509788624342,\"1022042970206\":1478686417269,\"1020754544495\":1478686417076,\"1020805268076\":1478686416997,\"1012402510144\":1478686417026,\"1021269911249\":1478686804047,\"1024018776827\":1509788667493,\"1024018776828\":1509788667493,\"1024018776831\":1509788667493,\"1021638488275\":1478686417119,\"1022455636396\":1478686417216,\"1021680553565\":1478686804028,\"1024018776823\":1509788667493,\"1020698052822\":1509788625018,\"1022295862034\":1478686417068,\"1022191210974\":1478686417064,\"1024781350719\":1509788625149,\"1020698052825\":1509788625017,\"341899789\":1444487341755,\"1020984449514\":1478686417034,\"1019575700973\":1509788624315,\"1021283542951\":1478686417040,\"1024686586511\":1509788625083,\"1022241598664\":1509788624920,\"1024781350869\":1509788624218,\"1021500995675\":1478686804040,\"1024781350870\":1509788624218,\"1024781350871\":1509788624218,\"1021747792514\":1478686804066,\"1021116174629\":1478686417233,\"1024781350872\":1509788624218,\"1021922640181\":1478686417259,\"1024781350874\":1509788624218,\"1021886595915\":1478686417258,\"1210230453\":1444487341716,\"1023730824558\":1509788624960,\"1022249200769\":1509788624300,\"1024132291933\":1509788624327,\"1021894460412\":1509788624423,\"1011676898037\":1478686804049,\"1021034386484\":1478686417091,\"1024434006824\":1509788624447,\"1020862684677\":1509788625016,\"1023926896867\":1491634246528,\"1025628054040\":1509788624823,\"1023612336678\":1509788624951,\"1025628054042\":1509788624746,\"1025628054036\":1509788624828,\"1025628054037\":1509788624832,\"1025074152713\":1509788625007,\"1024434006820\":1509788624447,\"1024434006821\":1509788624447,\"1024434006822\":1509788624447,\"1024434006823\":1509788624447,\"1022255754511\":1478686417284,\"1024840200967\":1509788625016,\"1023730693422\":1509788624961,\"245162051\":1444487341747,\"1021741763260\":1509788624395,\"1023612336643\":1509788624951,\"209642138\":1444487341739,\"1023612336646\":1509788624951,\"1023612336650\":1509788624951,\"1024567173876\":1509788624408,\"1024567173877\":1509788624408,\"1023612336655\":1509788624951,\"1024567173878\":1509788624408,\"1024567173879\":1509788624408,\"1023612336653\":1509788624951,\"1019960136768\":1509788624518,\"1023612336662\":1509788624951,\"1023612336661\":1509788624951,\"1013467322699\":1478686804071,\"1023612336670\":1509788624951,\"1021729573945\":1509788624555,\"1021729573944\":1509788624555,\"1021729573946\":1509788624555,\"1022313294196\":1478686417287,\"1024576873064\":1509788624465,\"1021729573943\":1509788624555,\"1020662139848\":1478686804050,\"1019396798260\":1509788624316,\"1021729573928\":1509788624851,\"1021729573930\":1509788624851,\"1021729573927\":1509788624851,\"1021729573926\":1509788624851,\"1004790750712\":1480585069067,\"1016655927980\":1480585069075,\"1000090908119\":1478686417021,\"1025270241538\":1509788624269,\"1870168139\":1478686417021,\"1025430059\":1444487341724,\"1022082029326\":1478686417012,\"1020924025866\":1478686417033,\"4551270526\":1465469681388,\"1025745894633\":1509788625020,\"1020948404970\":1478686417085,\"1022034319957\":1478686417167,\"1022701662816\":1509788625059,\"1018669744851\":1509788625017,\"1020662926304\":1478686804034,\"1022229016121\":1509788624939,\"1024535848096\":1509788667463,\"1025270241642\":1509788624269,\"892000881\":1478686804029,\"1022280133398\":1478686417014,\"1020937526035\":1478686417033,\"1025188715908\":1509788624225,\"1025188715904\":1509788624225,\"1025188715905\":1509788624225,\"1025188715906\":1509788624225,\"1025188715907\":1509788624225,\"1020662926303\":1478686804032,\"1002456909962\":1491634246520,\"1021384204368\":1478686417042,\"1021854221354\":1478686417135,\"1014669561952\":1478686804016,\"1022148481965\":1478686417185,\"1022068397945\":1509788624944,\"1014669561979\":1478686804032,\"1022812539671\":1509788625074,\"1022068397943\":1509788624944,\"1014669561974\":1478686804028,\"1014669561975\":1478686804028,\"1021802841920\":1478686804065,\"4818399378\":1509788624163,\"1021356679890\":1478686417239,\"1025406947407\":1509788624423,\"1021390364891\":1478686417105,\"1023243243871\":1509788624367,\"1003127595071\":1478686804054,\"1017239451407\":1465470268268,\"1024781350534\":1509788624555,\"1024781350535\":1509788624555,\"1024781350531\":1509788624555,\"1001517531176\":1444487341752,\"1024781350536\":1509788624555,\"1024781350539\":1509788624555,\"1025270241744\":1509788624269,\"1022424834638\":1478686417293,\"1021009352686\":1478686417089,\"1021693791930\":1480585069064,\"1021009352685\":1478686417089,\"1016676899254\":1480585069076,\"1016676899255\":1480585069076,\"1025784298142\":1509788624348,\"1025784298143\":1509788624349,\"1021680553982\":1478686804028,\"1015591246567\":1478686804018,\"1021603622079\":1478686417048,\"1021603622078\":1478686417048,\"1025715216779\":1509788624909,\"888194291\":1444487341744,\"1022076782688\":1478686417177,\"1025715216774\":1509788624910,\"1025715216794\":1509788624910,\"1025715216792\":1509788624910,\"1025715216799\":1509788624910,\"1025902652520\":1509788667460,\"1025902652517\":1509788667460,\"1025902652515\":1509788667464,\"1025902652512\":1509788667460,\"1025715216789\":1509788624910,\"1025715216810\":1509788624910,\"1025902652510\":1509788667464,\"1025715216808\":1509788624910,\"1025902652508\":1509788667459,\"1025715216813\":1509788624910,\"1025017796373\":1509788624595,\"1025715216805\":1509788624910,\"1025715216827\":1509788624910,\"1013059956685\":1478686804052,\"1025715216824\":1509788624910,\"1013059956684\":1478686804052,\"1025715216825\":1509788624909,\"1022086351297\":1478686417273,\"1022898002338\":1509788624439,\"1013059956682\":1478686804052,\"1013059956681\":1478686804052,\"1025715216819\":1509788624910,\"1025715216817\":1509788624910,\"1025715216823\":1509788624910,\"1025715216820\":1509788624910,\"1019932477541\":1509788624922,\"1025715216821\":1509788624910,\"1023251369561\":1509788625083,\"1019486056122\":1478686804047,\"1025715216863\":1509788624848,\"1021467960455\":1478686417108,\"1025715216861\":1509788624835,\"1025715216851\":1509788624916,\"1025715216849\":1509788624916,\"1025715216874\":1509788624834,\"1025715216878\":1509788624834,\"1025715216877\":1509788624834,\"1025715216868\":1509788624824,\"1021923041217\":1478686417054,\"1025715216894\":1509788624868,\"1021923041220\":1478686417054,\"1020870541365\":1478686417031,\"1025715216886\":1509788624834,\"1025023957155\":1509788624973,\"1021603622080\":1478686417048,\"1022190948153\":1478686417279,\"1025715216650\":1509788624543,\"1022190948152\":1478686417279,\"1022190948155\":1478686417279,\"1022190948154\":1478686417279,\"1021786855257\":1478686417128,\"1022190948147\":1478686417279,\"1022190948146\":1478686417279,\"1022190948149\":1478686417279,\"1025715216646\":1509788624543,\"1021786855262\":1478686417128,\"1022190948148\":1478686417279,\"1022190948151\":1478686417279,\"1022190948150\":1478686417279,\"1025715216645\":1509788624543,\"1021896695218\":1478686417258,\"1021709390552\":1509788624918,\"1008704432906\":1444487341761,\"1025715216656\":1509788624566,\"1022245663459\":1478686417195,\"1022245663460\":1478686417195,\"1019932477639\":1509788624922,\"231144795\":1514795417100,\"1025715216660\":1509788624548,\"1022400986007\":1478686417292,\"1019917141893\":1509788624361,\"1025715216685\":1509788624548,\"1021088386522\":1478686417036,\"1025715216698\":1509788624538,\"1012179819204\":1478686417073,\"1020294102554\":1465470268289,\"1021786855264\":1478686417128,\"1016866156970\":1478686804034,\"1025715216690\":1509788624544,\"1025507865862\":1509788624343,\"1025715216745\":1509788624910,\"1025715216750\":1509788624910,\"1022044800662\":1478686417171,\"1022551319752\":1509788624912,\"1013131383636\":1444487341758,\"1020160538186\":1509788625081,\"1025507865868\":1509788624337,\"1025507865867\":1509788624337,\"1025507865864\":1509788624336,\"1025715216740\":1509788624909,\"1025507865865\":1509788624342,\"1025715216741\":1509788624910,\"1025715216760\":1509788624910,\"1025715216765\":1509788624910,\"1020444043044\":1478686804027,\"1025715216522\":1509788624607,\"1025715216520\":1509788624607,\"1023211130318\":1509788625190,\"1025715216521\":1509788624607,\"1023211130319\":1509788625190,\"1025715216524\":1509788624607,\"1023211130315\":1509788625191,\"1023211130311\":1509788625191,\"1025715216518\":1509788624607,\"1025715216516\":1509788624606,\"1025715216539\":1509788624607,\"1023211130333\":1509788625190,\"1023211130335\":1509788625190,\"1025715216542\":1509788624607,\"1023211130331\":1509788625190,\"1023211130325\":1509788625190,\"1023211130326\":1509788625190,\"1025715216529\":1509788624607,\"1023211130327\":1509788625190,\"1022457347782\":1478686417217,\"1052299172\":1478686804033,\"1023211130320\":1509788625190,\"1025715216535\":1509788624607,\"1023211130322\":1509788625190,\"1025715216554\":1509788624607,\"1024794061747\":1509788624989,\"1022551319810\":1509788624912,\"1023211130350\":1509788625191,\"1025715216558\":1509788624607,\"1023211130344\":1509788625191,\"1023211130345\":1509788625190,\"1023211130347\":1509788625191,\"1022391286402\":1478686417206,\"1022240945033\":1478686417194,\"1023211130342\":1509788625190,\"1025715216545\":1509788624607,\"1023211130343\":1509788625191,\"1025715216551\":1509788624607,\"1025883777712\":1509788667451,\"1025715216549\":1509788624607,\"1023211130339\":1509788625191,\"1022240945040\":1478686417194,\"1025715216570\":1509788624607,\"231144695\":1444487341698,\"1025715216575\":1509788624607,\"1025715216573\":1509788624607,\"1025715216563\":1509788624607,\"1021666398657\":1509788624421,\"1025715216565\":1509788624607,\"1025715216584\":1509788624607,\"1025715216585\":1509788624607,\"1023211130249\":1509788624476,\"1023211130250\":1509788624476,\"1022099589192\":1478686417063,\"1025715216578\":1509788624607,\"1023211130245\":1509788624476,\"1023211130246\":1509788624475,\"1023211130240\":1509788624476,\"1025715216582\":1509788624607,\"1023211130241\":1509788624476,\"1022245663542\":1478686417195,\"1023211130242\":1509788624475,\"1023211130243\":1509788624476,\"1025781015791\":1509788624299,\"1024938234542\":1509788624548,\"1025715216606\":1509788624612,\"1025715216607\":1509788624612,\"1023211130285\":1509788625191,\"1022745170385\":1509788624989,\"1023211130280\":1509788625190,\"1022417501535\":1478686417070,\"1023561343104\":1509788624417,\"1025715216615\":1509788624544,\"1023220829495\":1509788624825,\"1019724864971\":1509788624315,\"1025715216635\":1509788624543,\"1023211130302\":1509788625191,\"1023211130296\":1509788625191,\"1021959471122\":1478686417010,\"1023211130288\":1509788625191,\"1025715216631\":1509788624543,\"1025715216628\":1509788624538,\"1022608599390\":1509788624994,\"1023211130205\":1509788624475,\"1020834504452\":1478686804031,\"1024106856700\":1509788667889,\"1023946430095\":1491634246531,\"1016549891683\":1509788624944,\"1021965500561\":1478686417262,\"1012432652482\":1478686417074,\"1016549891694\":1509788624944,\"1016549891689\":1509788624944,\"1023241145500\":1509788624462,\"1021745304968\":1478686417051,\"1022394825270\":1478686417291,\"1019932477944\":1509788624922,\"1024332435379\":1509788624434,\"1023211130219\":1509788624476,\"1023211130213\":1509788624476,\"1023211130214\":1509788624476,\"1023211130215\":1509788624476,\"1023211130208\":1509788624476,\"1023211130210\":1509788624476,\"1025017796243\":1509788625226,\"1023211130236\":1509788624475,\"1023211130237\":1509788624475,\"1023211130239\":1509788624476,\"1024134120059\":1509788667503,\"1023211130232\":1509788624475,\"1023211130233\":1509788624475,\"1023211130234\":1509788624475,\"1020783778337\":1478686804065,\"1023211130230\":1509788624475,\"1019922385229\":1509788624354,\"1023211130224\":1509788624475,\"1020090676087\":1509788624361,\"1023211130227\":1509788624475,\"1021780826079\":1509788624403,\"1022261392057\":1478686417197,\"1022191603306\":1478686417188,\"1020605780457\":1478686417075,\"1020796099843\":1478686417077,\"1023122655188\":1509788625046,\"1021272144273\":1509788624433,\"1023132485231\":1509788625111,\"1019873100853\":1478686804032,\"1021663260408\":1478686417248,\"1021272144266\":1509788624433,\"1025715217291\":1509788625240,\"1025715217288\":1509788625240,\"1021764310798\":1478686417009,\"1025715217295\":1509788625240,\"1025505113655\":1509788624344,\"1025505113656\":1509788624341,\"1025715217282\":1509788625241,\"1012116902972\":1478686416993,\"1025505113657\":1509788624337,\"1022848324709\":1509788624393,\"1025505113658\":1509788624342,\"1025715217280\":1509788625240,\"1025505113659\":1509788624338,\"1025505113660\":1509788624336,\"1022453414939\":1478686417215,\"1025715217306\":1509788625240,\"1025715217311\":1509788625240,\"1025715217301\":1509788625240,\"1009270001639\":1509788624386,\"1019036610970\":1478686804029,\"1025466576980\":1509788624361,\"1025715217314\":1509788625240,\"1025715217316\":1509788625240,\"1025715217340\":1509788625128,\"1025715217332\":1509788625245,\"1025715217333\":1509788625244,\"1021961437963\":1509788625011,\"1021961437962\":1509788625011,\"1021624069926\":1509788625081,\"1021961437961\":1509788625011,\"1021961437960\":1509788625011,\"1025466576952\":1509788624361,\"1021961437967\":1509788625011,\"1025466576953\":1509788624361,\"1025715217359\":1509788625126,\"1025466576954\":1509788624361,\"1025715217356\":1509788625127,\"1025715217357\":1509788625126,\"1021961437955\":1509788625011,\"1025715217346\":1509788625142,\"1021961437954\":1509788625011,\"1021961437952\":1509788625011,\"1022525628900\":1480585069091,\"1021961437959\":1509788625011,\"1768201002\":1491634246533,\"1023186487306\":1509788624551,\"1021961437957\":1509788625011,\"1021961437956\":1509788625011,\"1025715217370\":1509788625136,\"1021693793037\":1480585069064,\"1016549891494\":1509788624944,\"1025715217369\":1509788625168,\"1016549891488\":1509788624944,\"1016549891500\":1509788624944,\"1022248284169\":1478686417196,\"1018486116404\":1480585069063,\"1016549891501\":1509788624944,\"1021925530933\":1478686417055,\"1022248284170\":1478686417196,\"1011676904981\":1478686804049,\"1023776304998\":1509788624920,\"1022074030829\":1509788625019,\"1021925530930\":1478686417055,\"1021693530909\":1478686804033,\"1025715217364\":1509788625126,\"1021222991632\":1478686417235,\"1025715217365\":1509788625126,\"1025466576924\":1509788624361,\"1025466576925\":1509788624361,\"1025466576926\":1509788624361,\"1021638749412\":1478686417119,\"1022525628876\":1480585069091,\"1025466576921\":1509788624361,\"1025466576922\":1509788624361,\"1025466576923\":1509788624361,\"1022252085375\":1478686417066,\"1021967074168\":1509788624983,\"1025715217379\":1509788625128,\"1025715217376\":1509788625135,\"1025715217377\":1509788625136,\"1025715217381\":1509788625110,\"1021528778057\":1478686417244,\"1025466576900\":1509788624361,\"1025466576896\":1509788624361,\"1025466576897\":1509788624361,\"1025466576898\":1509788624361,\"1022525628887\":1480585069091,\"1025466576899\":1509788624361,\"1025715217162\":1509788624265,\"1021961962435\":1509788624466,\"1024434927486\":1509788624435,\"1025715217164\":1509788624265,\"1012179818749\":1478686417073,\"1024434927474\":1509788624435,\"1024434927475\":1509788624435,\"1024434927472\":1509788624435,\"1024434927478\":1509788624435,\"1019638748502\":1478686804028,\"1025715217157\":1509788624265,\"1025712726848\":1509788624304,\"1025459105886\":1509788624351,\"1025715217176\":1509788624265,\"1024434927464\":1509788624452,\"1022037853258\":1478686417058,\"1024434927470\":1509788624435,\"1025715217183\":1509788624265,\"1022941912685\":1509788625018,\"1725207618\":1444487341737,\"1025715217180\":1509788624265,\"1024434927458\":1509788624452,\"1012794801463\":1478686417224,\"1025715217169\":1509788624265,\"1024434927457\":1509788624509,\"1025715217175\":1509788624265,\"1024434927463\":1509788624452,\"1025715217172\":1509788624265,\"1024434927455\":1509788624510,\"1022436245428\":1478686417295,\"1021886078831\":1509788624465,\"1025459105888\":1509788624350,\"4984200122\":1509788624165,\"1025715217215\":1509788625240,\"1021603622406\":1478686417008,\"881247803\":1509788625017,\"1021654609167\":1478686417050,\"1023251369176\":1509788625083,\"1025412713842\":1509788624456,\"1025715217226\":1509788625240,\"1022075865681\":1509788624190,\"1025715217231\":1509788625240,\"1025715217218\":1509788625241,\"1953662651\":1444487341707,\"1025715217216\":1509788625241,\"1018051754684\":1478686804031,\"1025569471127\":1509788624351,\"1025715217223\":1509788625240,\"1025715217221\":1509788625240,\"1016399680536\":1480585069069,\"1024742810968\":1509788624342,\"1025715217236\":1509788625240,\"1025715217237\":1509788625240,\"1025715217257\":1509788625240,\"1022710705220\":1509788624983,\"1025715217248\":1509788625240,\"1003280165418\":1478686804054,\"1021624070024\":1509788625081,\"1025715217274\":1509788625240,\"1025715217264\":1509788625240,\"1024917263300\":1509788624978,\"1025715217268\":1509788625240,\"1019712542838\":1478686804027,\"1012209180595\":1478686417073,\"1022769943090\":1509788624994,\"1020922183766\":1478686417228,\"4984199685\":1509788624164,\"1021592086613\":1478686417048,\"1021718827206\":1478686417051,\"1422567382\":1478686416993,\"1020649296003\":1478686417075,\"1019596543810\":1509788624942,\"1025715217065\":1509788624265,\"1025715217071\":1509788624265,\"1022045848932\":1478686417059,\"1021592086631\":1478686417048,\"1023946560575\":1491634246531,\"1023450331552\":1509788625082,\"1023946560573\":1491634246531,\"1025715217063\":1509788624265,\"1025715217061\":1509788624265,\"1022052140242\":1478686417270,\"1025715217081\":1509788624265,\"1025715217086\":1509788624265,\"1016866157088\":1478686804034,\"1025715217098\":1509788624265,\"1023211130764\":1509788624887,\"1019208449569\":1480585069068,\"1021465470904\":1478686417045,\"1023211130760\":1509788624887,\"1025715217103\":1509788624265,\"1023211130761\":1509788624887,\"1023211130756\":1509788624887,\"1023211130757\":1509788624887,\"1020966487545\":1478686417034,\"1023211130752\":1509788624887,\"1025715217093\":1509788624265,\"1023211130755\":1509788624887,\"1023211130780\":1509788624887,\"1021778072836\":1480585069064,\"1023946560580\":1491634246533,\"1024655253898\":1509788624345,\"1023211130783\":1509788624887,\"1025715217118\":1509788624265,\"1023211130776\":1509788624887,\"1023211130773\":1509788624887,\"1023211130774\":1509788624887,\"1025715217110\":1509788624265,\"1023211130769\":1509788624887,\"1025715217131\":1509788624265,\"1025715217135\":1509788624265,\"1025715217145\":1509788624265,\"292479511\":1444487341723,\"1025715217141\":1509788624265,\"1023211130700\":1509788624247,\"1020783777816\":1478686804040,\"1021778073047\":1480585069064,\"1025715216905\":1509788624843,\"1023211130696\":1509788624247,\"1025715216910\":1509788624821,\"1024917263038\":1509788624978,\"1023211130697\":1509788624247,\"1021974544646\":1509788624463,\"1023211130698\":1509788624247,\"1023211130692\":1509788624248,\"1025715216898\":1509788624843,\"1023211130694\":1509788624247,\"1023211130695\":1509788624248,\"1021249598555\":1478686804028,\"1012226481667\":1478686804028,\"1023211130690\":1509788624247,\"1023211130716\":1509788624887,\"1021199791928\":1465470268192,\"1023211130714\":1509788624887,\"1023211130715\":1509788624887,\"1025715216914\":1509788624825,\"1023211130733\":1509788624887,\"1022674792294\":1480585069068,\"1025715216936\":1509788624214,\"1020180198452\":1509788624321,\"1020180198451\":1509788624321,\"1023211130728\":1509788624887,\"1021961437935\":1509788625010,\"1025715216943\":1509788624198,\"1020180198450\":1509788624321,\"1020180198449\":1509788624321,\"1022332040437\":1478686417201,\"1020180198448\":1509788624321,\"1025715216930\":1509788624270,\"1025715216931\":1509788624270,\"1023211130720\":1509788624887,\"1025715216932\":1509788624205,\"1025715216933\":1509788624205,\"1023211130723\":1509788624887,\"1025715216955\":1509788624205,\"1023211130749\":1509788624887,\"1021961437944\":1509788625011,\"836289132\":1478950494916,\"1021961437950\":1509788625011,\"1023211130746\":1509788624887,\"1018546541901\":1480585069070,\"1021961437937\":1509788625012,\"1023211130743\":1509788624887,\"1022332040431\":1478686417201,\"1023211130737\":1509788624887,\"1021961437942\":1509788625011,\"1025715216948\":1509788624205,\"1021568493928\":1509788624401,\"1021961437940\":1509788625012,\"1023211130639\":1509788624247,\"1025715216962\":1509788624205,\"1023211130653\":1509788624248,\"1021624069813\":1509788625081,\"1020783777866\":1478686804065,\"1012570534613\":1478686417223,\"1019079735000\":1509788625076,\"1023211130645\":1509788624248,\"1023211130668\":1509788624247,\"1482468286\":1478950494923,\"1023211130664\":1509788624247,\"1021991583866\":1478686417265,\"1025214660742\":1509788625104,\"1012128568476\":1478686417073,\"1025715216994\":1509788624210,\"1025715216995\":1509788624211,\"1023211130662\":1509788624248,\"1023211130663\":1509788624248,\"1025715216998\":1509788624206,\"1023211130659\":1509788624248,\"1023211130684\":1509788624247,\"1023211130686\":1509788624247,\"1023211130682\":1509788624247,\"1023211130676\":1509788624247,\"1021620399686\":1509788624401,\"1023211130678\":1509788624247,\"1025715217014\":1509788624199,\"1023211130672\":1509788624247,\"1023211130673\":1509788624247,\"1020940797890\":1478686417084,\"1023211130675\":1509788624247,\"1020654409554\":1478686417028,\"1021340170353\":1478686417103,\"1023371686232\":1509788624445,\"1024184451790\":1509788624480,\"1022213813337\":1478686417191,\"1023371686237\":1509788624445,\"1023371686226\":1509788624446,\"1023371686227\":1509788624446,\"1015843680743\":1478686804065,\"1024184451781\":1509788624480,\"1023657419359\":1509788624863,\"1024184451782\":1509788624480,\"1024184451783\":1509788624480,\"1024184451801\":1509788624480,\"1023371686223\":1509788624445,\"1024184451806\":1509788624480,\"1024184451792\":1509788624480,\"1013059955684\":1478686804052,\"1022144284797\":1478686417184,\"1024184451797\":1509788624480,\"1013131384731\":1444487341758,\"1022882929754\":1509788624553,\"4984200509\":1509788624165,\"245168818\":1444487341741,\"1023657419362\":1509788624863,\"1023657419363\":1509788624863,\"1023657419361\":1509788624863,\"1012174184085\":1478686417073,\"1021434406630\":1478686417241,\"1021716338640\":1478686417250,\"1020374181854\":1478686804047,\"1022077832257\":1478686417061,\"1023657419368\":1509788624863,\"1023406289681\":1509788625040,\"1025772101657\":1509788625022,\"1022037852831\":1478686417058,\"1024184451738\":1509788624480,\"1024184451741\":1509788624480,\"1024184451733\":1509788624480,\"1019873100193\":1478686804031,\"1024669935512\":1509788624199,\"1020180198391\":1509788624321,\"1020180198390\":1509788624321,\"1024184451754\":1509788624480,\"1024184451756\":1509788624480,\"1020180198397\":1509788624321,\"1022977432240\":1509788624559,\"1020180198396\":1509788624321,\"1020180198395\":1509788624321,\"1020180198394\":1509788624321,\"1024184451749\":1509788624480,\"1020180198393\":1509788624321,\"1021663259490\":1478686417248,\"1020180198392\":1509788624321,\"1024184451751\":1509788624480,\"1024184451770\":1509788624480,\"1024184451775\":1509788624480,\"1024184451760\":1509788624480,\"1025508258201\":1509788624337,\"1022977432227\":1509788624559,\"1024785411439\":1509788624584,\"1022977432225\":1509788624559,\"1012102353559\":1478686417073,\"1022977432228\":1509788624559,\"1020612466092\":1478686417027,\"1024184451767\":1509788624480,\"1022977432229\":1509788624559,\"1022281052376\":1478686417197,\"1022281052377\":1478686417197,\"1022470192031\":1478686417219,\"1025406946147\":1509788624512,\"1021188782055\":1465470268188,\"1022599029723\":1509788624462,\"1021606242318\":1509788624449,\"1021606242317\":1509788624449,\"1021606242316\":1509788624449,\"1021606242315\":1509788624449,\"1017168275334\":1478686804027,\"815973380\":1444487341736,\"1022152280397\":1478686417277,\"1020294101534\":1465470268289,\"1002628220185\":1491634246510,\"1019932478619\":1509788624921,\"1025627666439\":1509788624566,\"1021680555210\":1478686804028,\"1023730560806\":1509788624970,\"1023474843619\":1509788625082,\"1021513835212\":1509788624405,\"1023305233804\":1509788625041,\"1021778072248\":1480585069064,\"1023721647758\":1509788625166,\"841533151\":1491634246535,\"1021606242711\":1509788624859,\"1021606242709\":1509788624859,\"1021299933136\":1480585069071,\"1022247761747\":1478686417195,\"1021606242713\":1509788624859,\"1021606242712\":1509788624859,\"1010024505309\":1491634246526,\"1010024505308\":1491634246521,\"1010024505306\":1491634246526,\"1010024505303\":1491634246521,\"1010024505315\":1491634246521,\"1012205509110\":1478686417223,\"1011943237968\":1509788624842,\"1022447647503\":1480585069105,\"1608821411\":1444487341733,\"1008549504927\":1478686804032,\"1024992498674\":1509788625018,\"1022335316559\":1478686417015,\"1022643990511\":1509788624368,\"1021688419547\":1509788624396,\"1009340970205\":1478686804055,\"1248509705\":1491634246505,\"1014754750879\":1478686804071,\"1024794062841\":1509788624989,\"1020995980677\":1478686417088,\"1025278755341\":1509788625171,\"1022041260801\":1478686417170,\"1023007447700\":1509788624264,\"1023007447703\":1509788624264,\"1025715217410\":1509788624510,\"1023007447705\":1509788624264,\"1025715217411\":1509788624510,\"4976467219\":1509788624165,\"1025715217414\":1509788624433,\"1021924612628\":1478686417141,\"1022470584990\":1478686804065,\"1023007447710\":1509788624264,\"1023007447711\":1509788624264,\"1025715217413\":1509788624433,\"1004386922329\":1478686804061,\"1004386922328\":1478686804061,\"1025715217435\":1509788624432,\"1004386922331\":1478686804061,\"1004386922330\":1478686804061,\"1021278043539\":1478686416988,\"1004386922333\":1478686804061,\"1004386922332\":1478686804061,\"1004386922335\":1478686804061,\"1004386922334\":1478686804061,\"1004386922321\":1478686804061,\"1021278043550\":1478686416988,\"1004386922325\":1478686804061,\"1023007447692\":1509788624264,\"1025715217430\":1509788624432,\"1004386922324\":1478686804061,\"1004386922327\":1478686804061,\"1025715217428\":1509788624432,\"1004386922326\":1478686804061,\"1023007447695\":1509788624264,\"1021778072565\":1480585069064,\"1025715217450\":1509788624455,\"1004386922337\":1478686804061,\"1004386922336\":1478686804061,\"1004386922339\":1478686804061,\"1023007447739\":1509788624264,\"1004386922340\":1478686804061,\"1023007447715\":1509788624264,\"1023007447719\":1509788624264,\"1025715217459\":1509788624437,\"1025715217456\":1509788624453,\"1022986738583\":1509788624175,\"1025715217457\":1509788624437,\"1025715217462\":1509788624426,\"1021455509037\":1509788624398,\"1025715217460\":1509788624434,\"1023007447727\":1509788624264,\"1025715217461\":1509788624424,\"1025715217482\":1509788624505,\"1023007447764\":1509788624264,\"1024352351502\":1509788624179,\"1022477657422\":1478943089223,\"1013131384428\":1444487341758,\"1008898019897\":1480585069067,\"1023007447745\":1509788624264,\"1025715217499\":1509788624505,\"1025715217496\":1509788624505,\"1025715217497\":1509788624505,\"1025715217503\":1509788624505,\"1022394564173\":1509788624958,\"1021848199132\":1509788624394,\"1025715217490\":1509788624506,\"1022183607248\":1478686417187,\"1025715217491\":1509788624505,\"1025632647500\":1509788624348,\"1025632647501\":1509788624348,\"1025715217489\":1509788624506,\"1025715217495\":1509788624506,\"1025715217492\":1509788624505,\"1025715217493\":1509788624506,\"836289592\":1478950494916,\"1023007447792\":1509788624264,\"1022238717730\":1509788624930,\"1025715217515\":1509788624505,\"1022238717731\":1509788624941,\"1025715217512\":1509788624506,\"1022238717728\":1509788624947,\"1025715217513\":1509788624505,\"1022238717729\":1509788624932,\"1025715217518\":1509788624505,\"1012151901690\":1478686804067,\"1018923633052\":1509788624282,\"1025715217519\":1509788624505,\"1025715217516\":1509788624506,\"1023007447799\":1509788624264,\"1025715217517\":1509788624505,\"1025715217506\":1509788624505,\"1023007447801\":1509788624264,\"1023007447802\":1509788624264,\"1025715217504\":1509788624505,\"1025715217510\":1509788624505,\"1023007447806\":1509788624264,\"1025715217508\":1509788624505,\"1023007447807\":1509788624264,\"1023007447781\":1509788624264,\"1025001542594\":1509788624996,\"1020570659797\":1509788624353,\"1025715217520\":1509788624505,\"1025715217521\":1509788624505,\"1023007447788\":1509788624264,\"1021734949583\":1478686804047,\"1021153916773\":1478686417300,\"1022477788815\":1478943089487,\"1024518290677\":1509788625027,\"1023957048941\":1509788624519,\"1022341217931\":1478686417202,\"1023957048921\":1509788624520,\"1020180197799\":1509788624286,\"1007156365801\":1478686804025,\"1006848219661\":1478686804040,\"1020982608279\":1478686417087,\"1020180197801\":1509788624286,\"1636997078\":1478686417024,\"1021776105523\":1509788624400,\"1022449743976\":1478686417296,\"1025278755269\":1509788624569,\"132837818\":1444487341728,\"1022837445473\":1509788625054,\"1021413566021\":1509788624818,\"446754045\":1478686804024,\"1021014724490\":1478686417035,\"1009748340539\":1491634246511,\"1008335205374\":1478686804046,\"1019017999549\":1509788624367,\"1017827560906\":1478686804032,\"1025629371072\":1509788625022,\"1022933130496\":1509788624384,\"1022035492994\":1478686417167,\"123662805\":1444487341740,\"1021014200140\":1478686417089,\"1021014200142\":1478686417231,\"1019841381695\":1509788624285,\"1025278755090\":1509788624870,\"1023730691433\":1509788624960,\"1025756112295\":1509788624970,\"1020612466546\":1478686417027,\"1021896694660\":1478686417139,\"1025017794968\":1509788624261,\"1010768453688\":1478950494939,\"1020764380176\":1478686417028,\"1021928806884\":1509788624974,\"132837666\":1444487341733,\"1023371686804\":1509788624556,\"1023371686795\":1509788624556,\"1022595359061\":1480585069076,\"1023371686796\":1509788624556,\"1023371686797\":1509788624556,\"1023371686787\":1509788624556,\"1020982608248\":1478686417087,\"1016335717477\":1478686804016,\"1012151246563\":1478686804068,\"123662781\":1444487341737,\"1012151246567\":1478686804068,\"1012151246570\":1478686804068,\"1024205947250\":1509788624185,\"1024058366143\":1509788624353,\"1001042404571\":1444487341752,\"1018468816736\":1509788624427,\"1025712727846\":1509788624306,\"1012226481013\":1478686804028,\"1012151246586\":1478686804068,\"1012151246588\":1478686804068,\"1021839023176\":1478686416983,\"1012151246590\":1478686804068,\"1025147295845\":1509788625133,\"1012151246595\":1478686804068,\"1012151246597\":1478686804068,\"1012151246600\":1478686804068,\"1012151246603\":1478686804068,\"1012151246602\":1478686804068,\"1021384865972\":1478686417006,\"1021678851897\":1509788624396,\"1000526185418\":1444487341712,\"1025147295813\":1509788625165,\"1025147295808\":1509788625166,\"1025147295809\":1509788625166,\"1021424969318\":1509788624978,\"1000526185409\":1444487341731,\"1025147295823\":1509788625104,\"1025147295831\":1509788625110,\"1021425231463\":1509788625014,\"1025147295839\":1509788625133,\"1025147295832\":1509788625133,\"1025147295833\":1509788625133,\"1025147295834\":1509788625133,\"1025784291885\":1509788624349,\"132837548\":1444487341717,\"1021257461774\":1478686417004,\"1020626228649\":1478686804028,\"1025147295804\":1509788625246,\"1025147295805\":1509788625246,\"1022233081444\":1478686417282,\"1025147295800\":1509788625244,\"1025756111965\":1509788624970,\"4984200829\":1509788624160,\"1024205947115\":1509788624184,\"1022233081428\":1478686417282,\"1024205947117\":1509788624184,\"1022337941377\":1478686417069,\"1022469404796\":1478686417219,\"1022484080554\":1478943089532,\"1012660973612\":1478686804016,\"1024981357289\":1509788624924,\"1021042249113\":1478686417092,\"1012110086453\":1478686417223,\"944820217\":1491634246515,\"1024005282879\":1491634246530,\"1022235702953\":1478686417193,\"1019873100300\":1478686804032,\"1024818048201\":1509788624929,\"1013131383916\":1444487341758,\"1023888757693\":1491634246517,\"1021429425864\":1509788624861,\"1001042404857\":1444487341751,\"1021429425866\":1509788624861,\"1021429425863\":1509788624861,\"1021429425862\":1509788624861,\"873645047\":1478686804024,\"1023623865276\":1509788624178,\"1022319063533\":1478686416978,\"1022438078746\":1478686417071,\"4914598672\":1509788624164,\"1021354325402\":1465470268230,\"1021896693028\":1478686417258,\"1020821656912\":1478686417078,\"1025636578382\":1509788624337,\"1016728011087\":1478686804017,\"1017436183317\":1478686804025,\"1021882143779\":1478686417137,\"1019960132243\":1509788624518,\"1021778075238\":1480585069064,\"1023932014543\":1491634246529,\"1020805141610\":1478686417030,\"1025714694642\":1509788624915,\"1021885945224\":1478686417054,\"1025714694641\":1509788624835,\"1009388682490\":1478686804066,\"1022787377748\":1509788624379,\"1025714694632\":1509788624822,\"1022243830473\":1478686417283,\"1025714694637\":1509788624835,\"1025714694613\":1509788624836,\"1025714694616\":1509788624842,\"1023176000150\":1509788625079,\"1017581671438\":1478686804020,\"1021164665409\":1478686417038,\"1025714956555\":1509788624229,\"1004390982193\":1478686804033,\"1024154438712\":1509788667409,\"1021748714651\":1478686804068,\"1025714956572\":1509788624745,\"1024154438688\":1509788667409,\"1025714956570\":1509788624832,\"1024154438695\":1509788667409,\"1022241208868\":1509788624920,\"1022084382862\":1478686417272,\"1024154438699\":1509788667410,\"1024794059278\":1509788624989,\"1022451316392\":1478686416992,\"1024527200996\":1509788624281,\"1024154438674\":1509788667409,\"1021666400348\":1509788624195,\"1024527200987\":1509788624280,\"1024527200990\":1509788624281,\"1025067471490\":1509788624294,\"1024687238228\":1509788624420,\"1020294100492\":1465470268289,\"1021774405313\":1509788625231,\"1024154438684\":1509788667409,\"1024154438658\":1509788667409,\"1017312847050\":1478686804019,\"1024154438661\":1509788667410,\"1021852128115\":1478686417053,\"1024154438669\":1509788667410,\"1025041649936\":1509788624430,\"1025041649938\":1509788624430,\"1022908617271\":1509788624304,\"1025041649939\":1509788624456,\"1025041649940\":1509788624427,\"1024527200959\":1509788624337,\"1025041649942\":1509788624454,\"1025041649943\":1509788624441,\"1025041649944\":1509788624438,\"1025041649945\":1509788624424,\"1038140716\":1444487341717,\"1025041649948\":1509788624438,\"1020913273612\":1478686416978,\"1025041649949\":1509788624426,\"1019739673882\":1509788624173,\"1025041649920\":1509788624440,\"1024154438754\":1509788667409,\"1021395482581\":1478686417105,\"678219967\":1509788625020,\"1025041649925\":1509788624430,\"1025041649926\":1509788624430,\"1832424929\":1491634246509,\"1025041649930\":1509788624430,\"1020853245865\":1478686417031,\"1021685930251\":1478686417249,\"1025041649935\":1509788624430,\"1024154438765\":1509788667409,\"1021259431879\":1465470268200,\"1024985554400\":1509788624279,\"1024985554401\":1509788624279,\"1024985554402\":1509788624279,\"1024154438744\":1509788667409,\"1019674136912\":1509788624366,\"1021259431885\":1465470268200,\"1024985554406\":1509788624279,\"1024154438723\":1509788667409,\"1025041649956\":1509788624434,\"1024154438725\":1509788667409,\"1019861961879\":1509788625081,\"1024154438734\":1509788667409,\"1001042406097\":1444487341753,\"1022240815709\":1478686417283,\"1016634166770\":1478686804053,\"1016634166771\":1478686804053,\"1016634166768\":1478686804053,\"1016634166769\":1478686804053,\"1022679377298\":1509788624462,\"1016634166767\":1478686804053,\"1017168276026\":1478686804021,\"1021229416394\":1478686417099,\"1023316769701\":1509788624301,\"1021112370881\":1478686417232,\"1025041649913\":1509788624511,\"1025041649917\":1509788624509,\"1025041649919\":1509788624440,\"1016930647060\":1478686804019,\"1025223708100\":1509788624272,\"1021521571509\":1509788624398,\"1025715611836\":1509788624431,\"1025715611837\":1509788624425,\"1025715611838\":1509788624406,\"1025715611834\":1509788624428,\"1024797729560\":1509788624241,\"1017162639926\":1478686804053,\"1024017339800\":1509788624610,\"1024017339799\":1509788624610,\"1024017339795\":1509788624610,\"1024017339793\":1509788624610,\"1021693663245\":1478686804028,\"1024017339789\":1509788624610,\"1024017339786\":1509788624610,\"1024632842587\":1509788624461,\"1024017339784\":1509788624610,\"1024017339783\":1509788624610,\"1024017339776\":1509788624610,\"1021698907022\":1478686417122,\"1016092453467\":1509788624941,\"1024017339828\":1509788624610,\"1008938651881\":1509788624353,\"1025719805994\":1509788624348,\"1024017339825\":1509788624610,\"1019761563419\":1509788624362,\"1019761563418\":1509788624362,\"1019761563417\":1509788624362,\"1019761563416\":1509788624362,\"1024017339821\":1509788624610,\"1015545236142\":1478686804065,\"1024017339818\":1509788624610,\"1019761563420\":1509788624362,\"1020936211743\":1478686417083,\"1024797729568\":1509788624241,\"1019489724355\":1509788624301,\"1022108238837\":1478686417182,\"1024797729573\":1509788624241,\"1019761563412\":1509788624362,\"1021721451062\":1478686804047,\"1021721451059\":1478686804047,\"1019021146894\":1509788624313,\"1021470715139\":1478686417045,\"1021721451069\":1478686804047,\"1022622097504\":1509788624836,\"1024479887008\":1509788624934,\"1021721451064\":1478686804047,\"1024479887011\":1509788624934,\"1021846229936\":1509788625076,\"1022421431401\":1478686417209,\"544659946\":1478686417019,\"1020985626125\":1478686804039,\"1022468093590\":1478686417218,\"1024017339774\":1509788624610,\"1025558196551\":1509788624336,\"1012599372520\":1478686416994,\"1024662465506\":1509788625025,\"1024017339767\":1509788624610,\"1024479887004\":1509788624934,\"1024479887006\":1509788624934,\"1024479887007\":1509788624934,\"1025270239117\":1509788624532,\"1023657422738\":1509788624564,\"1023657422736\":1509788624563,\"1023877487351\":1491634246512,\"1023657422737\":1509788624564,\"1023657422740\":1509788624563,\"1012842375984\":1478686417026,\"5000319948\":1509788667399,\"1023657422744\":1509788624563,\"1012321634859\":1478686804062,\"1016857638991\":1509788624976,\"1013389855624\":1444487341759,\"1017165130487\":1478686804020,\"1832424679\":1491634246509,\"1022403343091\":1478686417207,\"1025270239187\":1509788624532,\"1021989489242\":1478686417155,\"917294921\":1509788625019,\"1018471700655\":1478686804031,\"1020612466740\":1478686417027,\"1021667055901\":1478686416979,\"1020744192030\":1478686416996,\"1025784425601\":1509788624349,\"1023560296937\":1509788625039,\"1021721451075\":1478686804047,\"1021622756455\":1478686417049,\"1021108176858\":1465470268306,\"1021611877936\":1478686417049,\"1010024632547\":1491634246521,\"1013131385244\":1444487341758,\"1024146573611\":1509788667505,\"1021767720149\":1509788624533,\"1022824603605\":1509788624510,\"1017378642614\":1478686804016,\"1016993428289\":1509788624353,\"1024146573615\":1509788667504,\"1022543851156\":1509788625063,\"1020747338638\":1478686416996,\"1024146573607\":1509788667504,\"1024146573604\":1509788667504,\"1021971925145\":1478686417149,\"1021767720131\":1509788624194,\"1024146573631\":1509788667505,\"1017168275758\":1478686804031,\"1020948402065\":1478686417085,\"1024146573618\":1509788667505,\"1024146573623\":1509788667505,\"1023958356480\":1509788625037,\"1017168275803\":1478686804031,\"1024146573641\":1509788667504,\"1021778074640\":1480585069064,\"1021767720123\":1509788624815,\"1010023059638\":1491634246518,\"1024146573659\":1509788667505,\"1024146573656\":1509788667505,\"1022421432235\":1478686417210,\"1024727870513\":1509788624927,\"1024146573663\":1509788667505,\"1024146573652\":1509788667505,\"1022350783083\":1478686417203,\"1025568682521\":1509788624336,\"1024146573677\":1509788667505,\"1024470056363\":1509788624522,\"1020391878303\":1478686804027,\"1024470056361\":1509788624522,\"1021307662382\":1478686417005,\"1024470056367\":1509788624522,\"1024146573668\":1509788667505,\"1017168275831\":1478686804040,\"1023716139168\":1491634246523,\"1024146573689\":1509788667505,\"1024146573694\":1509788667505,\"1022082155072\":1509788624944,\"1024146573683\":1509788667505,\"1024146573686\":1509788667505,\"1022177182738\":1478686417278,\"1017168275870\":1478686804027,\"1012476692023\":1444487341701,\"4818396606\":1509788624165,\"1022442009652\":1478686416984,\"1007839894914\":1509788624389,\"1017168275845\":1478686804040,\"1018470521818\":1509788624837,\"1021275681421\":1478686417101,\"1210233483\":1444487341732,\"1021288657866\":1465469681397,\"1022030516100\":1478686417058,\"1004243135447\":1478686804052,\"1004243135446\":1478686804052,\"1004243135445\":1478686804052,\"1004243135444\":1478686804052,\"1004243135443\":1478686804052,\"1016655925043\":1480585069075,\"1011676903161\":1478686804049,\"1004243135454\":1478686804052,\"1004243135453\":1478686804052,\"1024736914752\":1509788624520,\"1021952789364\":1478686417146,\"1004243135452\":1478686804052,\"1021001089593\":1478686417089,\"1004243135451\":1478686804052,\"1004243135450\":1478686804052,\"1004243135449\":1478686804052,\"1004243135448\":1478686804052,\"1727437878\":1444487341755,\"1025509048116\":1509788667537,\"1025509048117\":1509788667537,\"1021390108087\":1478686417042,\"1025041650451\":1509788624539,\"1010024632326\":1491634246521,\"1025509048113\":1509788667537,\"1025509048124\":1509788667537,\"1025509048127\":1509788667537,\"1025041650462\":1509788624542,\"1025627665938\":1509788625139,\"1025041650435\":1509788624551,\"1025627665937\":1509788625138,\"1025627665942\":1509788625138,\"1025509048097\":1509788667538,\"1025509048098\":1509788667537,\"1021783579958\":1509788624395,\"1025627665941\":1509788625138,\"1025509048099\":1509788667537,\"1021953575706\":1478686417146,\"1017168275905\":1478686804031,\"1022046243968\":1478686804047,\"1025627665947\":1509788625138,\"1727437868\":1444487341708,\"1025627665944\":1509788625138,\"1019849378292\":1509788624285,\"1019849378291\":1509788624285,\"1025509048106\":1509788667537,\"1021395482072\":1478686417105,\"1022827618120\":1509788624990,\"1022320246021\":1478686417200,\"1025041650483\":1509788624536,\"1025627665953\":1509788625138,\"1021663258088\":1478686417248,\"1740545366\":1444487341724,\"1020385192375\":1509788625080,\"1025041650489\":1509788624537,\"1021426936781\":1509788624405,\"1022320246027\":1478686417200,\"1022320246024\":1478686417200,\"1022460097887\":1478686417217,\"1025041650464\":1509788624542,\"1025041650466\":1509788624542,\"1025041650468\":1509788624542,\"1017168275951\":1478686804031,\"1022435063799\":1478686417294,\"1025041650473\":1509788624566,\"1018797543164\":1478686804038,\"1023957046133\":1509788624520,\"1018797543161\":1478686804038,\"1018797543160\":1478686804037,\"1018797543163\":1478686804038,\"1018797543162\":1478686804038,\"1018797543156\":1478686804037,\"1020662276049\":1478686804039,\"1018797543155\":1478686804037,\"1023957046119\":1509788624519,\"1022544375710\":1509788625075,\"1022238849494\":1509788624946,\"1021744127815\":1509788624403,\"1021668629446\":1509788624814,\"1022238849498\":1509788624931,\"1023957046125\":1509788624520,\"1023957046122\":1509788624519,\"1017168275461\":1478686804029,\"1021051027601\":1465470268305,\"1021051027600\":1465470268305,\"1020913273054\":1478686416978,\"1020856521734\":1478686417079,\"1023657422195\":1509788624226,\"1023657422192\":1509788624226,\"1023657422193\":1509788624226,\"1023957046101\":1509788624520,\"1023957046110\":1509788624519,\"1021711489287\":1478686417050,\"1025041650427\":1509788624613,\"1025041650429\":1509788624611,\"1018797543117\":1478686804057,\"1018797543116\":1478686804057,\"1018797543119\":1478686804057,\"1018797543118\":1478686804057,\"1021711489305\":1478686417050,\"1018797543113\":1478686804057,\"1018797543112\":1478686804057,\"1018797543115\":1478686804057,\"1018797543109\":1478686804057,\"1022350783246\":1478686417203,\"1018797543111\":1478686804057,\"5000319281\":1509788667399,\"1018797543110\":1478686804057,\"1023657422191\":1509788624226,\"1023657422189\":1509788624226,\"1023957046069\":1509788624519,\"1017168275541\":1478686804040,\"1023957046055\":1509788624519,\"1023957046062\":1509788624520,\"1022261524487\":1478686417284,\"1019930772243\":1509788624386,\"1023957046046\":1509788624519,\"1021693532717\":1509788624533,\"1020971207997\":1478686417086,\"4818396233\":1509788624165,\"1022021340759\":1478686417011,\"1021735870303\":1509788624395,\"1018797543029\":1478686804057,\"1018797543028\":1478686804057,\"1018797543025\":1478686804057,\"1018797543024\":1478686804057,\"1018797543027\":1478686804057,\"1018797543026\":1478686804057,\"1010756267680\":1509788624276,\"1020979727455\":1478686417034,\"1018797543021\":1478686804057,\"1018797543020\":1478686804057,\"1018797543023\":1478686804057,\"1018797543022\":1478686804057,\"1020612467271\":1478686417027,\"124058866\":1444487341742,\"1022021340749\":1478686417011,\"1022147561418\":1478686417185,\"1021288657659\":1465469681397,\"725799129\":1444487341718,\"1022021340745\":1478686417011,\"1015061589264\":1478686804018,\"1013109496189\":1478686804062,\"725799136\":1444487341728,\"1015061589289\":1478686804027,\"1021900363074\":1478686417054,\"1025714956862\":1509788625123,\"1025714956861\":1509788625115,\"1022517242268\":1509788625065,\"1018071413392\":1509788625076,\"1013110282565\":1478686417074,\"1021693532924\":1509788624815,\"1018797542968\":1478686804057,\"1004333968855\":1444487341756,\"1023877880008\":1491634246506,\"1025607086554\":1509788624368,\"1021742292914\":1478686417253,\"1018797542967\":1478686804057,\"1018797542966\":1478686804057,\"1018797542959\":1478686804057,\"1023520454051\":1509788625039,\"292481675\":1444487341741,\"1021693532844\":1509788624193,\"1365420690\":1444487341730,\"1023957046150\":1509788624520,\"1017168275695\":1478686804031,\"1018844859639\":1478686804064,\"1021044867088\":1478686417092,\"1018844859638\":1478686804064,\"1018844859637\":1478686804064,\"1018844859636\":1478686804064,\"1018844859635\":1478686804064,\"1008341104954\":1478686804052,\"1008341104955\":1478686804052,\"1008341104952\":1478686804052,\"1008341104953\":1478686804052,\"1024961304729\":1509788624970,\"1008341104956\":1478686804052,\"1008341104946\":1478686804052,\"1025629630638\":1509788625087,\"1008341104945\":1478686804052,\"1008341104951\":1478686804052,\"1025629630633\":1509788625115,\"1008341104948\":1478686804052,\"1025629630634\":1509788625124,\"1008341104949\":1478686804052,\"1025629630635\":1509788625106,\"1008341104943\":1478686804052,\"1008341104941\":1478686804052,\"1021668629703\":1509788624193,\"1018517706902\":1480585069070,\"1022154244565\":1478686417185,\"1025672229413\":1509788624921,\"1021398232285\":1478686417043,\"1001056956265\":1478686804033,\"1021398232286\":1478686417043,\"1021367300861\":1478686417006,\"1585095246\":1444487341742,\"1023186486908\":1509788624894,\"1023186486909\":1509788624894,\"1023186486910\":1509788624894,\"1021706903211\":1478686417122,\"1023186486907\":1509788624894,\"1574609297\":1491634246509,\"1025714695650\":1509788624910,\"1025714695651\":1509788624910,\"1022755134536\":1509788624393,\"1025714695648\":1509788624910,\"1025714695649\":1509788624910,\"1025907105902\":1509788667456,\"1025714695655\":1509788624910,\"1025714695652\":1509788624910,\"1025907105900\":1509788667457,\"1025714695653\":1509788624910,\"1025907105901\":1509788667458,\"1025715613148\":1509788624185,\"1025714695658\":1509788624910,\"1025714695659\":1509788624910,\"1020435393030\":1465470268318,\"1025714695657\":1509788624910,\"1025715613144\":1509788624200,\"1025715613145\":1509788624203,\"1025715613146\":1509788624197,\"1025714695660\":1509788624910,\"1025714695661\":1509788624910,\"1021664699259\":1478686417120,\"1021295736176\":1478686417004,\"1025628844213\":1509788624540,\"1025628844215\":1509788624537,\"1025628844217\":1509788624523,\"1025714695643\":1509788624910,\"1004769250408\":1478686804064,\"1025714695647\":1509788624910,\"1025714695645\":1509788624910,\"1021207656485\":1478686804026,\"1021207656480\":1478686804026,\"1007164359475\":1478686804032,\"1022370313875\":1478686417204,\"1022364939740\":1509788624957,\"1021278041222\":1478686417004,\"1023186486983\":1509788624894,\"1023186486977\":1509788624894,\"1022364939737\":1509788624958,\"1022364939738\":1509788624957,\"1022364939739\":1509788624958,\"1020804354251\":1478686417030,\"1020795572300\":1478686417029,\"1022364939733\":1509788624957,\"1017591238988\":1478686804025,\"1022364939734\":1509788624959,\"1022364939735\":1509788624958,\"1022364939728\":1509788624958,\"4818396094\":1509788624165,\"1019314614172\":1509788624375,\"1012759802190\":1478686417074,\"1022364939722\":1509788624957,\"1021778074306\":1480585069064,\"1022364939713\":1509788624957,\"1021906391596\":1478686417140,\"1022364939715\":1509788624958,\"1022364939772\":1509788624957,\"1016930646405\":1478686804067,\"1024785409461\":1509788624481,\"1026231897210\":1514456869769,\"1022364939767\":1509788624958,\"1019802324151\":1509788624931,\"1021129276494\":1478686417233,\"224850391\":1491634246512,\"1022364939752\":1509788624958,\"1023186487026\":1509788624493,\"1023186487036\":1509788624494,\"1022364939748\":1509788624957,\"1022364939744\":1509788624958,\"1022364939745\":1509788624957,\"1022067739567\":1478686417175,\"1022364939746\":1509788624958,\"1023186486917\":1509788624894,\"1023186486912\":1509788624894,\"1019802324191\":1509788624309,\"1022434275837\":1478686417071,\"1021236230729\":1509788624172,\"1023186486932\":1509788624894,\"1023186486933\":1509788624894,\"1023186486928\":1509788624894,\"1223603257\":1478686804016,\"1020783777603\":1478686804064,\"1020783777605\":1478686804064,\"1020783777604\":1478686804064,\"1020783777606\":1478686804064,\"1023186486948\":1509788624894,\"1023186486950\":1509788624894,\"1023186486951\":1509788624894,\"1022364939711\":1509788624958,\"1023186486944\":1509788624894,\"1023186486946\":1509788624894,\"1023186486947\":1509788624894,\"1022364939700\":1509788624957,\"1022364939696\":1509788624958,\"1023186486953\":1509788624894,\"1022364939697\":1509788624958,\"1022076650630\":1509788624928,\"1023186486964\":1509788624894,\"1021354586470\":1465470268232,\"1023830039835\":1509788624969,\"1023830039836\":1509788624969,\"1022192255856\":1509788624176,\"1025406944018\":1509788624511,\"1025672229570\":1509788624942,\"1023830039825\":1509788624969,\"1023186486974\":1509788624894,\"1023186486970\":1509788624894,\"1021354586472\":1465470268232,\"1021506235241\":1478686416981,\"1022357992623\":1509788625018,\"1024685402598\":1509788624438,\"1022357992619\":1509788625016,\"1017403022350\":1478686804020,\"1025480212123\":1509788624306,\"1022283151655\":1478686417286,\"1021465602525\":1478686417108,\"1021630750775\":1478686417049,\"1023186487044\":1509788624494,\"1023186487046\":1509788624494,\"1023186487042\":1509788624494,\"1021622755548\":1478686417049,\"1023186487054\":1509788624494,\"490659957\":1444487341732,\"1023186487050\":1509788624494,\"1023186487060\":1509788624494,\"1022095655961\":1478686417012,\"1023186487062\":1509788624494,\"1023186487063\":1509788624494,\"1023186487058\":1509788624494,\"1023186487059\":1509788624494,\"1023186487068\":1509788624494,\"1023186487064\":1509788624494,\"1025911300262\":1509788667458,\"1023186487065\":1509788624494,\"1023186487066\":1509788624494,\"1025911300261\":1509788667464,\"1023309954954\":1509788624417,\"1023186487078\":1509788624494,\"1024687237523\":1509788625102,\"1023309954956\":1509788624416,\"1021434539957\":1478686417241,\"1023015833078\":1509788624389,\"1023186487074\":1509788624494,\"1021273584940\":1478686417101,\"1023309954959\":1509788624416,\"1020933851619\":1478686417083,\"1023186487084\":1509788624493,\"1023309954945\":1509788624416,\"1023186487085\":1509788624494,\"1021694975042\":1480585069067,\"1023309954947\":1509788624417,\"1023309954948\":1509788624417,\"1023186487080\":1509788624494,\"1023309954950\":1509788624417,\"1023309954951\":1509788624417,\"1023309954968\":1509788624416,\"1023309954971\":1509788624417,\"1019070953671\":1509788624314,\"1023309954961\":1509788624416,\"1019070953674\":1509788624314,\"1023309954963\":1509788624416,\"1019070953677\":1509788624315,\"1023309954964\":1509788624416,\"1023309954967\":1509788624416,\"1021680557446\":1478686804028,\"1021138320895\":1478686417037,\"1024780428486\":1509788624567,\"1024780428485\":1509788624567,\"1024780428490\":1509788624567,\"1025509832768\":1509788625082,\"4984198300\":1509788624165,\"1012685223391\":1478686417026,\"1024780428488\":1509788624567,\"1021781875604\":1478686417009,\"1021781875602\":1478686417009,\"1021411339711\":1478686417043,\"1022129604305\":1478686417063,\"1019314613913\":1509788624323,\"1019314613912\":1509788624323,\"1019314613911\":1509788624323,\"1022340429134\":1478686417288,\"1021288658175\":1465469681397,\"1020997682503\":1478686417230,\"1557963075\":1444487341752,\"1038139458\":1444487341724,\"1025607743419\":1509788624829,\"1020254385825\":1509788625077,\"1025607743420\":1509788624823,\"1557963038\":1444487341753,\"1024334660145\":1509788624997,\"1025607743444\":1509788624833,\"1025607743445\":1509788624799,\"1025607743450\":1509788624428,\"1020294099808\":1465470268289,\"1025607743448\":1509788624431,\"1025607743449\":1509788624425,\"1025607743453\":1509788624407,\"1025607743426\":1509788624198,\"1025607743427\":1509788624186,\"1025607743424\":1509788624201,\"1025607743425\":1509788624204,\"1022053321241\":1478686417172,\"1022053321242\":1478686417172,\"1021668629766\":1509788624532,\"1022053321232\":1478686417172,\"1021425101991\":1478686417043,\"1024780428458\":1509788624567,\"1024780428459\":1509788624567,\"1024780428462\":1509788624567,\"1557963058\":1444487341750,\"1024780428465\":1509788624567,\"1024780428470\":1509788624567,\"1024780428471\":1509788624567,\"1021411339721\":1478686417043,\"1010076274735\":1491634246534,\"1021411339722\":1478686417043,\"1024780428476\":1509788624567,\"1557963043\":1444487341755,\"1018471702344\":1478686804031,\"1021038969923\":1478686417092,\"1025284524369\":1509788624945,\"1022608467657\":1509788624366,\"1019391026825\":1509788624302,\"1022075340424\":1478686417061,\"1021289051997\":1478686417040,\"1024936008767\":1509788625007,\"1021997616402\":1478686417011,\"1022400328980\":1478686417292,\"4984198945\":1509788624164,\"1022112564336\":1509788624943,\"1025672228986\":1509788624921,\"1024936008798\":1509788625006,\"1019932476952\":1509788624922,\"1024785409873\":1509788624250,\"1024936008791\":1509788625006,\"1024936008784\":1509788625006,\"1021597066579\":1509788624492,\"1020294230257\":1465470268298,\"1022273977074\":1478686417067,\"1024936008768\":1509788625007,\"1019674007549\":1509788624315,\"1025278757329\":1509788624234,\"1022646478065\":1509788624368,\"1021157326652\":1478686417234,\"1025058034852\":1509788624330,\"1022579108076\":1480585069125,\"1021138189836\":1478686417096,\"1021983853671\":1509788625067,\"1024936008805\":1509788625006,\"1022033791840\":1478686417267,\"1012121360820\":1478686417073,\"1024936008803\":1509788625007,\"1003975622645\":1478686417221,\"1019345021919\":1509788624302,\"1003975622644\":1478686417221,\"1019345021918\":1509788624282,\"1003975622641\":1478686417221,\"1003975622643\":1478686417221,\"1003975622642\":1478686417221,\"1021776763086\":1509788624399,\"1025883907355\":1509788667402,\"1025714695994\":1509788624822,\"1003975622652\":1478686417221,\"1025714695995\":1509788624842,\"1003975622655\":1478686417221,\"1025714695992\":1509788624915,\"1003975622654\":1478686417221,\"1003975622649\":1478686417221,\"1025714695998\":1509788624836,\"1003975622651\":1478686417221,\"1003975622650\":1478686417221,\"1025714695997\":1509788624835,\"1025714695970\":1509788624914,\"1025714695968\":1509788624914,\"1025714695969\":1509788624914,\"1025714695974\":1509788624914,\"1022314346710\":1478686417068,\"1022551321270\":1509788624267,\"1025714695972\":1509788624914,\"1022314346712\":1478686417068,\"1025910776698\":1509788667579,\"1025910776699\":1509788667579,\"1025910776696\":1509788667579,\"1025714695977\":1509788624914,\"1025910776697\":1509788667578,\"1025714695983\":1509788624914,\"1025714695980\":1509788624914,\"1025910776700\":1509788667579,\"1010057400919\":1491634246534,\"1025714695962\":1509788624914,\"1025714695963\":1509788624914,\"1025714695961\":1509788624914,\"1025714695966\":1509788624914,\"1025714695967\":1509788624914,\"1025714695964\":1509788624914,\"1025714695965\":1509788624914,\"1025012029732\":1509788624436,\"1025714695939\":1509788624914,\"1025714695937\":1509788624914,\"1025714695942\":1509788624914,\"1025714695943\":1509788624914,\"1024642412329\":1509788667536,\"1025714695940\":1509788624914,\"1024642412330\":1509788667536,\"1025714695941\":1509788624914,\"1024642412331\":1509788667536,\"1025714695944\":1509788624914,\"1025714695945\":1509788624914,\"5000320183\":1509788667399,\"1025714695949\":1509788624914,\"1025714696050\":1509788624836,\"1025714696051\":1509788624836,\"1025714696048\":1509788624915,\"1025714696049\":1509788624836,\"1021680557761\":1478686804028,\"1025714696054\":1509788624836,\"1025714696058\":1509788624836,\"1832424435\":1491634246509,\"1025714696062\":1509788624836,\"1025714696061\":1509788624836,\"1020919827881\":1478686417081,\"1025714696016\":1509788624846,\"1025784032118\":1509788624350,\"1021694975937\":1480585069067,\"1025714696002\":1509788624836,\"1021927100804\":1478686417142,\"1025714696008\":1509788624836,\"1022551321307\":1509788624267,\"1025714696014\":1509788624836,\"1025714696015\":1509788624836,\"1025784032110\":1509788624352,\"1025714696012\":1509788624836,\"1832423997\":1491634246524,\"1022816082801\":1509788624439,\"1038140139\":1444487341747,\"1025714695870\":1509788624913,\"1021042378046\":1478686417092,\"1025714695843\":1509788624913,\"1025593849300\":1509788624425,\"1025714695840\":1509788624913,\"1025783769735\":1509788624367,\"1025593849301\":1509788624407,\"1025714695841\":1509788624913,\"1025593849298\":1509788624428,\"1025714695846\":1509788624913,\"1025593849299\":1509788624431,\"1025714695844\":1509788624913,\"1019018788282\":1509788624317,\"1022430212704\":1478686417211,\"1025714695850\":1509788624913,\"1025714695848\":1509788624913,\"1018144944605\":1509788625081,\"1025714695849\":1509788624913,\"1025628058561\":1509788624453,\"1025714695852\":1509788624913,\"1025714695853\":1509788624913,\"1020428446090\":1509788624371,\"1025715613357\":1509788625114,\"1025715613358\":1509788625123,\"1025714695833\":1509788624913,\"1025715613359\":1509788625106,\"1025714695838\":1509788624913,\"1025714695839\":1509788624913,\"1025714695836\":1509788624913,\"1025714695837\":1509788624913,\"1025714695808\":1509788624911,\"1022747533149\":1509788624402,\"1025714695809\":1509788624911,\"1025715613360\":1509788625087,\"1025672229133\":1509788624921,\"1019455513497\":1478686804021,\"1013135055911\":1478686804046,\"1025714695927\":1509788624914,\"1025714695930\":1509788624914,\"1021764442703\":1478686417052,\"1020778534018\":1478686417076,\"1025714695929\":1509788624914,\"1025714695934\":1509788624914,\"1025714695935\":1509788624914,\"1025714695932\":1509788624914,\"1019720537005\":1509788624276,\"1024214730831\":1509788625070,\"1021435719147\":1478686417241,\"1024527594799\":1509788625027,\"1025179012833\":1509788624536,\"1025714695888\":1509788624913,\"1025714695889\":1509788624914,\"1021721976041\":1509788624403,\"1022041917946\":1478686417170,\"1021901934994\":1509788624394,\"1023933847728\":1491634246529,\"1020824277592\":1478686417226,\"1022041917936\":1478686417170,\"1025714695874\":1509788624914,\"1025714695875\":1509788624913,\"408086304\":1509788624366,\"1025714695872\":1509788624914,\"1023933847724\":1491634246529,\"1025714695879\":1509788624913,\"1023933847726\":1491634246529,\"1025714695876\":1509788624914,\"1025714695877\":1509788624913,\"1025714695883\":1509788624913,\"1021710179643\":1478686417122,\"1025714695880\":1509788624913,\"1025714695881\":1509788624913,\"1025714695886\":1509788624913,\"1025714695887\":1509788624913,\"1025714695884\":1509788624913,\"1022708605250\":1509788625058,\"1025714695734\":1509788624822,\"1025714695732\":1509788624915,\"1016732337811\":1478686804049,\"1025714695733\":1509788624915,\"1025672229298\":1509788624942,\"1025714695737\":1509788624842,\"1025714695742\":1509788624836,\"5000320391\":1509788667399,\"1025714695743\":1509788624836,\"1025714695740\":1509788624836,\"1025714695741\":1509788624836,\"1025627665229\":1509788624845,\"1025714695714\":1509788624911,\"1024633237402\":1509788624991,\"1025714695713\":1509788624910,\"1025714695718\":1509788624911,\"1025714695719\":1509788624911,\"1025714695716\":1509788624911,\"1016092454062\":1509788624941,\"1025627665237\":1509788624549,\"1025714695717\":1509788624911,\"1022038640948\":1478686416991,\"1021899313797\":1478686417139,\"1020185311423\":1478686804023,\"1008818724152\":1509788624372,\"1025627665241\":1509788624549,\"1025627665246\":1509788624549,\"1022007708440\":1478686417158,\"1025627665247\":1509788624549,\"1019300195445\":1478686804018,\"1025714695698\":1509788624910,\"1025627665251\":1509788624845,\"1025714695699\":1509788624911,\"1025627665248\":1509788624549,\"1025714695696\":1509788624911,\"1025714695697\":1509788624911,\"1025714695703\":1509788624911,\"1025714695701\":1509788624910,\"1020826243771\":1478686417031,\"1025714695704\":1509788624911,\"1018767920138\":1465470268272,\"1025714695708\":1509788624911,\"1022194090200\":1478686417013,\"1025879975017\":1509788667403,\"1022427984422\":1478686417211,\"1016937199998\":1478686804022,\"1025714695693\":1509788624910,\"1025714695794\":1509788624911,\"1022159618650\":1478686417186,\"1025714695795\":1509788624911,\"1007156363290\":1478686804025,\"1025714695793\":1509788624911,\"1022159618655\":1478686417186,\"1021964062436\":1478686417010,\"1025714695797\":1509788624911,\"1000873064335\":1478686804022,\"1025714695803\":1509788624911,\"1022154244610\":1478686417185,\"1025714695806\":1509788624911,\"1025714695804\":1509788624911,\"1022079797129\":1478686417061,\"1025714695782\":1509788624911,\"1022024223324\":1509788624466,\"1025714695781\":1509788624911,\"1025714695786\":1509788624911,\"1025714695787\":1509788624911,\"1021778073999\":1480585069064,\"1025714695790\":1509788624911,\"1025714695791\":1509788624911,\"1020985624693\":1478686804039,\"1016335719773\":1478686804016,\"1025459109158\":1509788624350,\"1017390571057\":1478686804016,\"1022962750032\":1509788625050,\"1021606241126\":1478686417116,\"1025714695744\":1509788624836,\"1010076275234\":1491634246534,\"1025714695748\":1509788624836,\"1021329552614\":1478686417239,\"1025714695754\":1509788624836,\"1025714695752\":1509788624836,\"1021226138305\":1478686417235,\"1022827616854\":1509788624990,\"1025050913063\":1509788624568,\"1022242783880\":1478686417195,\"1025593821915\":1509788624848,\"1025593821914\":1509788624847,\"1025593821919\":1509788624831,\"1020882039230\":1478686416999,\"1025593821909\":1509788624916,\"1025593821908\":1509788624917,\"1021564279088\":1478686417048,\"1018969145219\":1480585069065,\"1024954574021\":1509788624923,\"1025552140130\":1509788624337,\"1025593821934\":1509788624831,\"1025517143376\":1509788624308,\"1025593821922\":1509788624831,\"1025593821945\":1509788624822,\"1018477880029\":1478686804033,\"1025593821946\":1509788624846,\"1025593821948\":1509788624836,\"1023319818821\":1509788624288,\"1019835413046\":1509788624354,\"1025593821936\":1509788624868,\"1025593821939\":1509788624826,\"1025593821940\":1509788624867,\"1009328390268\":1478686804024,\"1025593821943\":1509788624848,\"1025593821833\":1509788624917,\"1022387489699\":1478686417205,\"1025593821838\":1509788624916,\"1024638423452\":1509788667502,\"1023453383220\":1509788624869,\"1016399636126\":1480585069069,\"1021969429159\":1478686417056,\"1025593821852\":1509788624831,\"1025593821854\":1509788624831,\"1024638423436\":1509788667502,\"635118979\":1491634246506,\"1025593821843\":1509788624847,\"1025593821844\":1509788624848,\"1025593821847\":1509788624831,\"1014050003620\":1478686804064,\"1025593821846\":1509788624831,\"1025593821865\":1509788624824,\"1025593821864\":1509788625000,\"1025593821867\":1509788624999,\"1025593821857\":1509788624831,\"1025593821859\":1509788624998,\"1025593821858\":1509788624868,\"1025593821860\":1509788625005,\"1025593821863\":1509788624822,\"1025593821862\":1509788625000,\"1022897891816\":1509788624850,\"1022897891820\":1509788624850,\"1023000260355\":1509788624462,\"1022897891812\":1509788624850,\"1022897891815\":1509788624850,\"1024638423461\":1509788667502,\"1022897891814\":1509788624850,\"1025593821769\":1509788624917,\"1025593821773\":1509788624916,\"1025593821775\":1509788624847,\"1025879956316\":1509788667403,\"1024954573930\":1509788624923,\"1025593821786\":1509788624831,\"1021494023600\":1478686417243,\"1022220894566\":1478686417281,\"1025593821788\":1509788624831,\"1025593821790\":1509788624831,\"1025593821776\":1509788624847,\"1025593821779\":1509788624826,\"1020946527574\":1478686416990,\"1025593821781\":1509788624831,\"1025593821780\":1509788624831,\"1025593821782\":1509788624831,\"1007134408107\":1509788624374,\"1021249308541\":1478686417100,\"1025593821806\":1509788624868,\"1023808724872\":1509788625071,\"4818411419\":1509788624159,\"1020202289290\":1465470268243,\"1020016950782\":1509788624280,\"1020202289289\":1465470268243,\"1025593821816\":1509788624824,\"1019630020341\":1509788624933,\"1021494023580\":1478686417243,\"1025593821809\":1509788624826,\"1025593821811\":1509788624867,\"1025593821813\":1509788624844,\"1025593821815\":1509788624846,\"1020946527605\":1478686416990,\"1025593821705\":1509788624542,\"1024164984019\":1509788624925,\"1024954573860\":1509788624923,\"1025593821698\":1509788624538,\"1025593821700\":1509788624541,\"1025593821702\":1509788624541,\"1019111360498\":1509788624320,\"4981598257\":1509788624154,\"1025593821718\":1509788624542,\"1022897891705\":1509788624216,\"1022708489763\":1509788624546,\"1022897891704\":1509788624216,\"1022897891706\":1509788624216,\"1022897891709\":1509788624216,\"1022708489764\":1509788624564,\"1022897891699\":1509788624216,\"1025593821730\":1509788624542,\"1025593821733\":1509788624566,\"1025593821735\":1509788624566,\"1022708489778\":1509788624538,\"1021631651297\":1509788624819,\"1022042044013\":1478686416974,\"1025593821744\":1509788624550,\"1022267950078\":1478686417197,\"1017020795710\":1478686804023,\"1021397815323\":1509788624509,\"1025593821748\":1509788624544,\"1025593822152\":1509788624197,\"1019675371663\":1509788624321,\"1019941189845\":1478686804026,\"1021927878208\":1509788624432,\"1024453347279\":1509788624992,\"1025593822148\":1509788624214,\"1024453347276\":1509788624992,\"1024453347282\":1509788624992,\"1021931023914\":1478686417010,\"1021931023915\":1478686417010,\"1024453347280\":1509788624992,\"1024453347286\":1509788624992,\"1024453347290\":1509788624992,\"1024453347289\":1509788624992,\"1025593822162\":1509788624206,\"1024840277192\":1509788624970,\"1025499710843\":1509788624369,\"1024453347293\":1509788624992,\"1022202282446\":1478686417190,\"1025593822189\":1509788624269,\"1019034026721\":1509788624317,\"1024300121295\":1509788624519,\"1025593822182\":1509788624270,\"1021952127179\":1478686416973,\"1025593822193\":1509788624214,\"4834402586\":1509788624154,\"1025593822199\":1509788624214,\"1022096701466\":1478686417275,\"1025593822091\":1509788624229,\"1025593822090\":1509788624199,\"1022238720902\":1509788624932,\"1025593822092\":1509788625001,\"1022238720901\":1509788624947,\"1025593822094\":1509788624197,\"1022238720906\":1509788624931,\"1022238720905\":1509788624941,\"1003850546050\":1478686417220,\"1003850546051\":1478686417221,\"1022238720910\":1509788624941,\"1003850546048\":1478686417220,\"1022880721361\":1509788625144,\"1025593822086\":1509788624230,\"1022238720908\":1509788624931,\"1022120032935\":1478686417013,\"1022099060832\":1509788624190,\"1020992140907\":1478686417088,\"1025593822096\":1509788624198,\"1025593822121\":1509788624269,\"1025593822120\":1509788624270,\"1025593822123\":1509788624214,\"1025593822127\":1509788624214,\"1022262051352\":1480585069113,\"1016301593037\":1480585069066,\"1022487236989\":1478943089489,\"1025593822136\":1509788624203,\"1023298977987\":1509788625072,\"1015102962\":1444487341752,\"1025593822138\":1509788624230,\"1025593822141\":1509788624199,\"1020294041563\":1465470268283,\"1021700465536\":1478686804046,\"1025593822133\":1509788624203,\"1025593822135\":1509788624203,\"1025593822134\":1509788624203,\"1023532289577\":1509788624430,\"1025593822025\":1509788624866,\"1023532289581\":1509788624454,\"1025593822029\":1509788624846,\"1021208282537\":1478686804027,\"1023532289582\":1509788624438,\"1025593822030\":1509788624824,\"1023532289569\":1509788624430,\"1022917946319\":1509788624467,\"1015159676254\":1478686804029,\"1025593822016\":1509788624831,\"1022118198173\":1478686417183,\"1023532289574\":1509788624430,\"1025593822022\":1509788624868,\"1025593822045\":1509788624270,\"1024322797342\":1509788667508,\"1025593822046\":1509788624269,\"1023532289584\":1509788624426,\"1017239558469\":1478686804022,\"1023532289587\":1509788624424,\"1023532289586\":1509788624434,\"1003850546030\":1478686417220,\"1025784009779\":1509788624351,\"1003850546031\":1478686417220,\"1025593822056\":1509788624199,\"1003850546028\":1478686417220,\"1003850546026\":1478686417220,\"1025784009782\":1509788624350,\"1024322797358\":1509788667508,\"1025784009781\":1509788624350,\"1003850546025\":1478686417220,\"1025784009780\":1509788624351,\"1025593822053\":1509788624214,\"1018778301098\":1509788624367,\"1024322797351\":1509788667508,\"1025593822052\":1509788624214,\"1003850546046\":1478686417220,\"1025593822073\":1509788624203,\"1023532289560\":1509788624429,\"1885172207\":1478686417021,\"1024322797368\":1509788667508,\"1003850546042\":1478686417220,\"1025593822077\":1509788624203,\"1003850546040\":1478686417220,\"1003850546041\":1478686417220,\"1025593822078\":1509788624203,\"1003850546038\":1478686417220,\"1023532289553\":1509788624440,\"1003850546039\":1478686417220,\"1023836381232\":1491634246536,\"1003850546037\":1478686417220,\"1003850546034\":1478686417220,\"1003850546035\":1478686417220,\"1025593822068\":1509788624203,\"1023532289556\":1509788624441,\"1024322797386\":1509788667508,\"1024322797385\":1509788667508,\"1025593821967\":1509788624917,\"1022430743734\":1478686417294,\"1023453383604\":1509788624870,\"1022450405359\":1478686417302,\"1024322797377\":1509788667508,\"1022430743741\":1478686417294,\"1024322797383\":1509788667508,\"1024322797382\":1509788667508,\"1022450405355\":1478686417215,\"1016421000778\":1480585069070,\"1025593821976\":1509788624847,\"1025560660247\":1509788624308,\"1022450405362\":1478686417302,\"1025593821970\":1509788624915,\"1025593821994\":1509788624848,\"1018923662748\":1509788624301,\"1025593821999\":1509788624831,\"911947699\":1478950494918,\"1021769672497\":1478686417052,\"1022079269293\":1478686417061,\"1025593821986\":1509788624847,\"1025499710857\":1509788624370,\"1025499710856\":1509788624369,\"1025499710858\":1509788624370,\"1021769672491\":1478686417052,\"1021769672494\":1478686417052,\"1023670572703\":1509788624915,\"1025593822014\":1509788624831,\"1022917946302\":1509788624467,\"1025593822000\":1509788624831,\"1022917946297\":1509788624467,\"1021848447994\":1509788624534,\"1021330443547\":1478686416981,\"1009548857127\":1491634246510,\"1021700464889\":1478686804046,\"764227467\":1478686417020,\"1021987779024\":1509788624463,\"1021981749306\":1509788625168,\"1023961950723\":1509788625005,\"1022415933020\":1480585069074,\"1021456798060\":1478686417108,\"1025505609243\":1509788624972,\"1023961950749\":1509788625005,\"1020738120270\":1478686417075,\"1022249730085\":1478686417284,\"1023961950764\":1509788625004,\"1023961950767\":1509788625005,\"1025688718610\":1509788624336,\"1022190943625\":1478686417188,\"1001388189107\":1480585069061,\"1021618020348\":1509788624397,\"1021411578480\":1478686417043,\"1021445132406\":1478686417007,\"1021411578484\":1478686417043,\"1003850545288\":1478686417220,\"1024786798757\":1509788624438,\"1021411578485\":1478686417043,\"1025281996088\":1509788667889,\"1003850545286\":1478686417220,\"1003850545282\":1478686417220,\"1023317721311\":1509788624196,\"1021500970123\":1478686804028,\"1022355245991\":1478686417203,\"1024687314601\":1509788625084,\"1022788575303\":1509788624824,\"1021411578478\":1478686417043,\"1021411578479\":1478686417043,\"1021138027037\":1478686417096,\"1021686047671\":1478686417249,\"1022788575348\":1509788624821,\"1025472708719\":1509788624829,\"1025472708720\":1509788624834,\"1023317721312\":1509788624196,\"1022788575342\":1509788624867,\"1021138027016\":1478686417096,\"1011947511387\":1478686804030,\"1021331885700\":1509788624976,\"1022259429872\":1478686417196,\"1022788575338\":1509788624827,\"1022788575332\":1509788624869,\"1021804014293\":1478686417131,\"1021610024483\":1478686417116,\"1018182963965\":1465470268237,\"1021792085476\":1478686416977,\"1025908924037\":1509788667456,\"1025628950102\":1509788624233,\"1021932072322\":1478686417055,\"1025628950106\":1509788624232,\"1022126848480\":1478686417184,\"1020792514969\":1478686417077,\"1020777179500\":1478686417029,\"1025628950082\":1509788624232,\"1025628950086\":1509788624232,\"1021490092027\":1478686417110,\"1022281975474\":1478686417198,\"1025628950092\":1509788624233,\"1020917690653\":1478686417081,\"1025628950094\":1509788624232,\"1022677556763\":1509788624850,\"1021841762511\":1478686417135,\"1022677556761\":1509788624850,\"1022677556760\":1509788624850,\"1019097597110\":1509788624389,\"1022677556754\":1509788624850,\"1022677556759\":1509788624850,\"1021729300878\":1509788624993,\"1021494417292\":1478686417244,\"1022803386773\":1509788625055,\"1003850545276\":1478686417220,\"1022338599548\":1478686417069,\"1025628950114\":1509788624233,\"1003850545268\":1478686417220,\"1003850545267\":1478686417220,\"1003850545265\":1478686417220,\"664741208\":1478950494913,\"1021631651807\":1478686417248,\"1022261395851\":1478686417197,\"1025628950071\":1509788624232,\"1025628950075\":1509788624232,\"1025628950077\":1509788624233,\"1025628950076\":1509788624233,\"1020822532032\":1478686417226,\"1023154666181\":1509788625044,\"1025628950078\":1509788624233,\"1024352551484\":1509788624178,\"1022168530923\":1478686417278,\"1024687314445\":1509788624998,\"1023319818382\":1509788624289,\"1024687314444\":1509788625007,\"1023994980555\":1491634246517,\"1025050913755\":1509788624568,\"1025593821647\":1509788624542,\"1022241604017\":1509788624920,\"1018335009429\":1478686804022,\"1000753398381\":1478686804068,\"1021782385949\":1509788624228,\"1025593821634\":1509788624611,\"1019922840542\":1478686804026,\"1025593821657\":1509788624542,\"1025593821658\":1509788624542,\"1025593821661\":1509788624541,\"1019922840532\":1478686804026,\"1000753398392\":1478686804068,\"1025593821653\":1509788624542,\"1022677557146\":1509788624216,\"1019922840556\":1478686804026,\"1022677557145\":1509788624216,\"1022677557144\":1509788624216,\"1020294040970\":1465470268283,\"1025472708901\":1509788624407,\"1022677557150\":1509788624216,\"1025593821665\":1509788624551,\"1575444174\":1491634246515,\"1024667783473\":1509788624199,\"1025593821667\":1509788624536,\"1025593821666\":1509788624548,\"1025593821669\":1509788624538,\"1020294172037\":1465470268295,\"1022677557142\":1509788624216,\"1025593821668\":1509788625000,\"1025593821670\":1509788624544,\"1025593821689\":1509788624551,\"1025593821691\":1509788624551,\"1018928119559\":1509788624368,\"1019922840571\":1478686804026,\"1025593821694\":1509788624551,\"1021938758559\":1478686417010,\"1022441754000\":1478686417214,\"1021740836782\":1478686417125,\"1000753398360\":1478686804068,\"1025593821685\":1509788624612,\"1019922840561\":1478686804026,\"1025593821686\":1509788624611,\"1025593821577\":1509788624542,\"1025593821569\":1509788624551,\"1025593821571\":1509788624551,\"1025593821570\":1509788624551,\"1025593821573\":1509788624539,\"1021630602829\":1509788624815,\"642721024\":1478950494913,\"1020016950787\":1509788624300,\"1025593821595\":1509788624542,\"906966362\":1491634246511,\"1010812541612\":1509788624299,\"1022788575556\":1509788624198,\"1025593821608\":1509788624552,\"1020653969464\":1478686804057,\"1025593821615\":1509788624538,\"1021927484443\":1478686417145,\"1025593821600\":1509788624542,\"1025593821604\":1509788624542,\"1025593821606\":1509788624539,\"4644738989\":1478686416965,\"1022788575594\":1509788624197,\"1025593821630\":1509788624613,\"1025593821616\":1509788624544,\"1022788575591\":1509788624199,\"1024785881709\":1509788625198,\"1022788575587\":1509788624230,\"1024256473368\":1509788624991,\"1012325134370\":1478686417223,\"1021613563795\":1509788624401,\"1022629190199\":1509788624462,\"1001660691705\":1478686417024,\"1012117120440\":1478686417025,\"1025593821565\":1509788624613,\"1022788575656\":1509788624538,\"1025593821566\":1509788624611,\"1022291412487\":1478686417068,\"1022050825645\":1478686417269,\"1000307811758\":1478686417018,\"1020876534699\":1478686417227,\"1024597396882\":1509788624937,\"1022897891929\":1509788624446,\"1000753398437\":1478686804068,\"1021975720272\":1509788625011,\"1021440807349\":1478686417107,\"1022897891921\":1509788624446,\"1022897891920\":1509788624446,\"1020438222332\":1478686804047,\"1022897891923\":1509788624446,\"1020878500414\":1509788624934,\"1022897891922\":1509788624446,\"1000753398454\":1478686804068,\"1022362323632\":1478686417289,\"1022788575685\":1509788624540,\"1025906171893\":1509788667450,\"1021743720356\":1478686416988,\"1000753398407\":1478686804068,\"1000753398402\":1478686804068,\"1022241472848\":1478686417066,\"1021981749727\":1509788624566,\"1021981749724\":1509788624538,\"1024481133776\":1509788624282,\"1000753398411\":1478686804068,\"1024718378723\":1509788624371,\"1000753398417\":1478686804068,\"1022228234906\":1478686417065,\"1016711330720\":1478686804063,\"1020810341914\":1480585069080,\"1021622737304\":1478686417049,\"1019788227824\":1478686804070,\"1019971469284\":1480585069076,\"1022191205307\":1478686417188,\"1012572341993\":1478686804056,\"1019788227825\":1478686804070,\"1019971469285\":1480585069076,\"1012572341994\":1478686804056,\"1019788227826\":1478686804070,\"1019788227827\":1478686804070,\"1008774798151\":1478686804023,\"1012572341996\":1478686804056,\"1019788227828\":1478686804070,\"1012572341997\":1478686804056,\"1019788227829\":1478686804070,\"1025524613868\":1509788624997,\"1019788227830\":1478686804070,\"1012572341999\":1478686804056,\"1019788227831\":1478686804070,\"1019971469283\":1480585069076,\"1012572341984\":1478686804055,\"1019788227832\":1478686804070,\"1012572341985\":1478686804055,\"1019788227833\":1478686804070,\"1012572341986\":1478686804055,\"1019788227834\":1478686804070,\"1024462520925\":1509788624988,\"1012572341987\":1478686804055,\"1019788227835\":1478686804070,\"1025593822914\":1509788624430,\"1012572341988\":1478686804055,\"1019788227836\":1478686804070,\"1022462331746\":1478686417217,\"1012572341989\":1478686804055,\"1019788227837\":1478686804070,\"1025593822916\":1509788624455,\"1019788227838\":1478686804070,\"1012572341991\":1478686804056,\"1019788227839\":1478686804070,\"1012572342008\":1478686804056,\"1012572342011\":1478686804056,\"1012572342012\":1478686804056,\"1012572342001\":1478686804056,\"1012572342002\":1478686804056,\"1025593822931\":1509788624437,\"1012572342003\":1478686804056,\"1019788227820\":1478686804070,\"1025593822933\":1509788624438,\"1019788227821\":1478686804070,\"1025593822932\":1509788624424,\"1012572342006\":1478686804056,\"1019788227822\":1478686804070,\"1019788227823\":1478686804070,\"1012572341961\":1478686804055,\"1012572341962\":1478686804055,\"1012572341963\":1478686804055,\"1022827897217\":1509788625054,\"1012572341965\":1478686804055,\"1012572341966\":1478686804055,\"1012572341967\":1478686804055,\"1015382764864\":1478686804019,\"1012572341955\":1478686804055,\"1022244226626\":1478686417195,\"1012572341957\":1478686804055,\"1012572341958\":1478686804055,\"1015382764868\":1478686804016,\"1012572341959\":1478686804055,\"1025593822969\":1509788624511,\"1024686264528\":1509788625024,\"1025593822973\":1509788624509,\"1012572341982\":1478686804055,\"1019971469276\":1480585069076,\"1023835071877\":1491634246533,\"1021602551958\":1509788624420,\"1024912106832\":1509788624927,\"1023731916673\":1509788625082,\"1025285010194\":1509788624329,\"1025050914147\":1509788624232,\"1025285010199\":1509788624329,\"1012572341920\":1478686804055,\"1012572341922\":1478686804055,\"1025285010202\":1509788624329,\"1022076648483\":1509788624216,\"1022076648480\":1509788624216,\"1025285010207\":1509788624329,\"1025285010177\":1509788624328,\"1025593822875\":1509788624511,\"1025593822876\":1509788624509,\"1021253108704\":1465469681395,\"1012572341896\":1478686804055,\"1021166339789\":1465470268184,\"1023021757526\":1509788624992,\"1025529070279\":1509788624336,\"1012572341899\":1478686804055,\"1012572341901\":1478686804055,\"1012572341902\":1478686804055,\"1020836162071\":1478686416976,\"1025593822885\":1509788624440,\"1026232415415\":1514456869770,\"1012572341912\":1478686804055,\"1025593822905\":1509788624429,\"1022076648479\":1509788624216,\"1012572341914\":1478686804055,\"1012572341915\":1478686804055,\"1022076648477\":1509788624216,\"1012572341916\":1478686804055,\"1012572341917\":1478686804055,\"1013728608886\":1478686804068,\"1025285010212\":1509788624329,\"1012572341918\":1478686804055,\"1012572341919\":1478686804055,\"1025593822910\":1509788624430,\"1013743420229\":1478686804048,\"1012572341904\":1478686804055,\"1013728608891\":1478686804068,\"1025593822897\":1509788624430,\"1012572341905\":1478686804055,\"1025593822896\":1509788624430,\"1012572341906\":1478686804055,\"1013728608889\":1478686804068,\"1012572341907\":1478686804055,\"1013728608888\":1478686804068,\"1012572341908\":1478686804055,\"1025285010221\":1509788624328,\"1012572341911\":1478686804055,\"1019922840654\":1478686804026,\"1021928270788\":1509788624465,\"1021376842404\":1478686417042,\"1011127906181\":1478686804019,\"1012572341870\":1478686804055,\"1019922840646\":1478686804026,\"790309776\":1444487341730,\"1022437165666\":1478686417071,\"1019922840643\":1478686804026,\"1025593822809\":1509788624440,\"1025593822811\":1509788624427,\"1025593822810\":1509788624440,\"1022084250764\":1478686417179,\"1025593822814\":1509788624430,\"1032010010\":1478686804024,\"1025593822803\":1509788624511,\"1023932588886\":1491634246530,\"1025593822804\":1509788624509,\"1025593822807\":1509788624440,\"1012572341832\":1478686804055,\"1025593822825\":1509788624430,\"1012572341833\":1478686804055,\"1012572341834\":1478686804055,\"1025593822827\":1509788625005,\"1012572341835\":1478686804055,\"1025593822826\":1509788624430,\"1012572341836\":1478686804055,\"1025593822828\":1509788624427,\"1012572341838\":1478686804055,\"1012572341839\":1478686804055,\"1025593822830\":1509788624454,\"1024280461208\":1509788625076,\"1012572341826\":1478686804055,\"1012572341827\":1478686804055,\"1012572341829\":1478686804055,\"1021210902698\":1465470268195,\"1012572341830\":1478686804055,\"1025593822823\":1509788624430,\"1012572341831\":1478686804055,\"1024840276322\":1509788624970,\"1024280461188\":1509788625021,\"1025715066168\":1509788624197,\"1024056191704\":1509788624289,\"1012572341840\":1478686804055,\"1024056191703\":1509788624289,\"1025593822833\":1509788624424,\"1012572341841\":1478686804055,\"1025593822832\":1509788624438,\"1012572341842\":1478686804055,\"1025593822835\":1509788624998,\"1012572341843\":1478686804055,\"1025630521346\":1509788624309,\"1025593822834\":1509788624438,\"1012572341844\":1478686804055,\"1012572341845\":1478686804055,\"1025593822836\":1509788624434,\"1012572341846\":1478686804055,\"1019922840590\":1478686804026,\"1012572341800\":1478686804055,\"1012572341801\":1478686804055,\"1012572341802\":1478686804055,\"1012572341803\":1478686804055,\"1019922840586\":1478686804026,\"1012572341804\":1478686804055,\"1012572341805\":1478686804055,\"1025593822732\":1509788624511,\"1012572341806\":1478686804055,\"1012572341807\":1478686804055,\"1025593822734\":1509788624509,\"1011821285660\":1478686804051,\"1012572341792\":1478686804055,\"1012572341793\":1478686804055,\"1021502411373\":1509788624977,\"1019922840580\":1478686804026,\"1011821285662\":1478686804051,\"1011821285663\":1478686804051,\"1011821285656\":1478686804051,\"1020294171238\":1465470268295,\"1022029197708\":1478686417164,\"1019922840606\":1478686804026,\"1019922840607\":1478686804026,\"1025593822744\":1509788624430,\"1021356001712\":1478686417042,\"1019922840604\":1478686804026,\"1021356001713\":1478686417042,\"1022086217004\":1478686417062,\"1021356001719\":1478686417042,\"1019922840598\":1478686804026,\"1012572341808\":1478686804055,\"1012572341809\":1478686804055,\"1012572341810\":1478686804055,\"1025593822739\":1509788624440,\"1025593822738\":1509788624440,\"1025593822740\":1509788624427,\"1024840276238\":1509788624970,\"1025593822742\":1509788624430,\"1022185569036\":1478686417187,\"1020294040143\":1465470268283,\"1025593822760\":1509788624455,\"1021924469630\":1478686417141,\"1019922840620\":1478686804026,\"1019922840621\":1478686804026,\"1025593822762\":1509788624454,\"1025593822765\":1509788625000,\"1025715066218\":1509788624431,\"1025593822767\":1509788625000,\"1021384837965\":1478686417239,\"1025593822766\":1509788624424,\"1012572341760\":1478686804055,\"1025593822753\":1509788624430,\"1008475032008\":1478686804030,\"1012572341761\":1478686804055,\"1012572341762\":1478686804055,\"1012572341763\":1478686804055,\"1025593822757\":1509788624430,\"1019922840611\":1478686804026,\"1019922840608\":1478686804026,\"1012572341786\":1478686804055,\"1023580788279\":1509788625078,\"1019922840635\":1478686804026,\"1011821285665\":1478686804051,\"1012572341789\":1478686804055,\"1012572341790\":1478686804055,\"1023580788275\":1509788625017,\"1025593822769\":1509788624434,\"1025593822768\":1509788624426,\"1019922840629\":1478686804026,\"1025715066224\":1509788624406,\"1021231219698\":1478686417235,\"1515544405\":1491634246505,\"1515544406\":1491634246505,\"165743856\":1478686804024,\"1021283126477\":1478686417004,\"1022247896896\":1478686417066,\"1538875042\":1444487341702,\"1016831916567\":1478686804017,\"1016399635408\":1480585069069,\"1021286403237\":1478686417040,\"1012125508270\":1478686804055,\"1012125508268\":1478686804055,\"1021286403242\":1478686417040,\"4975701409\":1509788624156,\"1017363814986\":1478686804040,\"1021926959674\":1478686417142,\"1021472526638\":1478686417045,\"1021472526634\":1478686417045,\"1024332233553\":1509788625086,\"1012125508293\":1478686804055,\"1025431946556\":1509788624176,\"1025431946555\":1509788624176,\"1025431946554\":1509788624176,\"1025431946553\":1509788624176,\"1025431946552\":1509788624176,\"1016956437223\":1478686804051,\"1016956437222\":1478686804051,\"1016956437221\":1478686804051,\"1016956437220\":1478686804051,\"1016956437219\":1478686804051,\"1016956437218\":1478686804051,\"1016956437217\":1478686804051,\"1016956437216\":1478686804051,\"1016956437215\":1478686804051,\"1025788465231\":1509788624186,\"1016956437214\":1478686804051,\"1016956437213\":1478686804051,\"1016956437212\":1478686804051,\"1016956437211\":1478686804051,\"1021592067625\":1478686417114,\"1016956437210\":1478686804051,\"1025788465224\":1509788624197,\"1025788465223\":1509788624203,\"1025788465222\":1509788624200,\"1024840276157\":1509788624970,\"1020066891051\":1465470268308,\"1021973362482\":1478686417150,\"1021645413287\":1509788625017,\"1021973362480\":1478686417150,\"1025714803775\":1509788624469,\"198905429\":1491634246512,\"1005848179777\":1509788624373,\"1008550139706\":1478686804025,\"1020878500968\":1509788624934,\"1019788227920\":1478686804070,\"1008058479037\":1480585069062,\"1019788227921\":1478686804070,\"1025285010162\":1509788624329,\"1025285010165\":1509788624329,\"1018928118175\":1509788624368,\"1023317722943\":1509788624820,\"1025285010172\":1509788624329,\"1019788227904\":1478686804070,\"1019788227905\":1478686804070,\"1019788227906\":1478686804070,\"1019788227907\":1478686804070,\"1019788227908\":1478686804070,\"1012287255643\":1478686416994,\"1019788227909\":1478686804070,\"1019788227910\":1478686804070,\"1019788227911\":1478686804070,\"1025285010150\":1509788624329,\"1019788227912\":1478686804070,\"1023382078212\":1509788625084,\"1025285010156\":1509788624329,\"1019788227919\":1478686804070,\"1019788227888\":1478686804070,\"1019788227889\":1478686804070,\"1021244982238\":1478686417039,\"1019788227890\":1478686804070,\"1021817252899\":1478686417053,\"1019788227891\":1478686804070,\"1019788227892\":1478686804070,\"1019788227896\":1478686804070,\"1019788227897\":1478686804070,\"1019788227898\":1478686804070,\"1019788227899\":1478686804070,\"1025593822978\":1509788624440,\"1019788227900\":1478686804070,\"1022487369181\":1478943089489,\"1019788227901\":1478686804070,\"1019788227902\":1478686804070,\"1019788227903\":1478686804070,\"1019788227872\":1478686804070,\"1019788227873\":1478686804070,\"1025593823000\":1509788624430,\"1023317722946\":1509788624820,\"1019788227874\":1478686804070,\"1019788227875\":1478686804070,\"1019788227876\":1478686804070,\"1019788227877\":1478686804070,\"1019788227878\":1478686804070,\"1025593823007\":1509788624430,\"1019788227879\":1478686804070,\"1021985945134\":1478686417153,\"1019788227880\":1478686804070,\"1025593822993\":1509788624440,\"1019788227881\":1478686804070,\"1019788227882\":1478686804070,\"1025593822995\":1509788624440,\"1022297047186\":1478686417287,\"1019788227883\":1478686804070,\"1019788227884\":1478686804070,\"1025593822997\":1509788624440,\"1019788227885\":1478686804070,\"1019788227886\":1478686804070,\"1025593822999\":1509788624427,\"1019788227887\":1478686804070,\"1019788227856\":1478686804070,\"1019788227857\":1478686804070,\"1012357902385\":1509788625080,\"1019788227858\":1478686804070,\"1025593823019\":1509788624826,\"1019788227859\":1478686804070,\"1025593823018\":1509788624455,\"1019788227860\":1478686804070,\"1025593823021\":1509788624454,\"1019788227861\":1478686804070,\"1019788227862\":1478686804070,\"1025593823023\":1509788624437,\"1019788227863\":1478686804070,\"1025593823022\":1509788624440,\"1019788227864\":1478686804070,\"1025593823009\":1509788624430,\"1019788227865\":1478686804070,\"1019788227866\":1478686804070,\"1019788227867\":1478686804070,\"1019788227868\":1478686804070,\"1020850711153\":1478686804057,\"1019788227869\":1478686804070,\"1019788227870\":1478686804070,\"1019788227871\":1478686804070,\"1025593823014\":1509788624429,\"1019788227840\":1478686804070,\"1019788227841\":1478686804070,\"1019788227842\":1478686804070,\"1025714803777\":1509788624469,\"1019788227843\":1478686804070,\"1025909709286\":1509788667461,\"1019788227844\":1478686804070,\"1025714803783\":1509788624469,\"1025714803782\":1509788624469,\"1019788227846\":1478686804070,\"1019788227847\":1478686804070,\"1025714803780\":1509788624469,\"1019788227848\":1478686804070,\"1019788227849\":1478686804070,\"1019788227850\":1478686804070,\"1025714803785\":1509788624469,\"1025593823027\":1509788624846,\"1019788227851\":1478686804070,\"1025714803784\":1509788624469,\"1025593823026\":1509788624822,\"1019788227852\":1478686804070,\"1025593823029\":1509788624434,\"1019788227853\":1478686804070,\"1025593823028\":1509788624824,\"1019788227854\":1478686804070,\"1023042467589\":1509788625073,\"1019788227855\":1478686804070,\"1025164031591\":1509788624327,\"1022052790762\":1478686804045,\"1022052790763\":1478686804045,\"1025593822424\":1509788625243,\"1022052790760\":1478686804045,\"1022052790761\":1478686804045,\"1022052790766\":1478686804045,\"1025593822429\":1509788625141,\"1022052790767\":1478686804045,\"1025593822428\":1509788625141,\"1022052790764\":1478686804045,\"1025593822431\":1509788625143,\"1022052790765\":1478686804045,\"1022052790754\":1478686804045,\"1022052790755\":1478686804045,\"1022052790752\":1478686804045,\"1022052790753\":1478686804045,\"1022052790758\":1478686804045,\"1022052790759\":1478686804045,\"1022052790756\":1478686804045,\"1025593822423\":1509788625245,\"1022052790757\":1478686804045,\"1025593822441\":1509788625122,\"1024667784250\":1509788625220,\"1024667784248\":1509788625220,\"1022052790750\":1478686804045,\"1024667784255\":1509788625220,\"1022052790751\":1478686804045,\"1024667784254\":1509788625220,\"1022052790748\":1478686804045,\"1022052790749\":1478686804045,\"1025593822446\":1509788625121,\"1024667784252\":1509788625220,\"1024667784241\":1509788625220,\"1025593822437\":1509788625112,\"1024667784247\":1509788625220,\"1024667784239\":1509788625220,\"1015102132\":1444487341754,\"1025593822462\":1509788625168,\"1025593822451\":1509788625121,\"1020102673419\":1509788624353,\"1022203332287\":1478686417013,\"1024667784280\":1509788625220,\"1021428094832\":1478686804026,\"1024667784275\":1509788625220,\"1023220595222\":1509788624434,\"1024667784272\":1509788625220,\"1025593822341\":1509788625141,\"1020118402408\":1509788624299,\"1024667784277\":1509788625220,\"1024667784266\":1509788625220,\"1024667784265\":1509788625220,\"1024667784264\":1509788625220,\"1025630915303\":1509788624373,\"1024667784270\":1509788625220,\"1025593822367\":1509788625122,\"1024667784268\":1509788625220,\"1024667784258\":1509788625220,\"1019061289598\":1478686804022,\"1024667784256\":1509788625220,\"1018567533035\":1478686804032,\"1024667784261\":1509788625220,\"1021257957637\":1465470268198,\"1016539490506\":1478686804023,\"1025593822380\":1509788625143,\"1023442243439\":1509788625082,\"777857072\":1444487341740,\"1000920386821\":1478686417219,\"1025593822375\":1509788625169,\"1022461020656\":1478686417016,\"1025593822387\":1509788625110,\"1025593822386\":1509788625140,\"1025593822389\":1509788625129,\"1021166339281\":1465470268184,\"1022039683295\":1478686417169,\"1025756091712\":1509788624958,\"1021646198967\":1509788624974,\"1025593822283\":1509788624202,\"1021646198964\":1509788624974,\"1007618202833\":1509788624986,\"1021646198962\":1509788624974,\"1024667784350\":1509788625207,\"1024912107501\":1509788624926,\"1025593822273\":1509788624203,\"1021663369604\":1509788624616,\"1021646198974\":1509788624974,\"1024667784339\":1509788625207,\"1024667784338\":1509788625208,\"1025593822275\":1509788624202,\"1021646198972\":1509788624974,\"1024667784336\":1509788625208,\"1021646198968\":1509788624974,\"1024667784341\":1509788625207,\"1022076649185\":1509788624850,\"1025470612657\":1509788625016,\"1025593822296\":1509788624229,\"1024667784330\":1509788625208,\"1021744767684\":1478686417126,\"1025593822298\":1509788625136,\"1024667784328\":1509788625208,\"1024667784334\":1509788625208,\"1022184519819\":1478686417187,\"1025593822302\":1509788624213,\"1021646198958\":1509788624974,\"1024667784323\":1509788625208,\"1022067995019\":1478686804035,\"1024667784321\":1509788625207,\"1022067995017\":1478686804035,\"1025593822290\":1509788624202,\"1021646198957\":1509788624974,\"1025593822292\":1509788624203,\"1025069264016\":1509788625019,\"1022067995020\":1478686804035,\"1020066891467\":1465470268308,\"1021646198953\":1509788624974,\"1025291566701\":1509788624948,\"1019061289600\":1478686804022,\"1025608240457\":1509788624915,\"1019930312415\":1509788624390,\"1024667784371\":1509788625207,\"1024667784369\":1509788625208,\"1021757088567\":1509788624395,\"1024667784374\":1509788625208,\"1021288239046\":1478686417101,\"1024997302488\":1509788625020,\"1025593822329\":1509788625246,\"1024667784362\":1509788625207,\"1025593822332\":1509788625243,\"1024667784365\":1509788625207,\"1024667784353\":1509788625207,\"1024667784359\":1509788625207,\"1024667784358\":1509788625207,\"1024667784356\":1509788625207,\"1024363169506\":1509788624927,\"1025608240431\":1509788624822,\"1025593822221\":1509788624203,\"1022249731324\":1478686417284,\"1004158175839\":1478686804052,\"1025593822232\":1509788624197,\"1025593822234\":1509788624198,\"1025608240437\":1509788624837,\"1025593822227\":1509788624199,\"1025593822226\":1509788624230,\"1025608240434\":1509788624835,\"1025593822253\":1509788624269,\"1025593822252\":1509788624270,\"1025593822254\":1509788624214,\"1021410006721\":1478686417043,\"1004158175844\":1478686804052,\"1016709758593\":1478686804023,\"1025593822269\":1509788624203,\"1004158175841\":1478686804052,\"1004158175842\":1478686804052,\"1021646198976\":1509788624974,\"1004158175843\":1478686804052,\"1025453836246\":1509788624945,\"1021693519801\":1478686804033,\"1025593822256\":1509788624214,\"1012572341736\":1478686804055,\"1024667784475\":1509788625208,\"1012572341738\":1478686804055,\"1025593822667\":1509788624509,\"1024667784473\":1509788625208,\"1012572341739\":1478686804055,\"1025593822666\":1509788624511,\"1024667784472\":1509788625208,\"1012572341740\":1478686804055,\"1024667784479\":1509788625208,\"1012572341741\":1478686804055,\"1012572341742\":1478686804055,\"1024667784477\":1509788625208,\"1024667784476\":1509788625208,\"1023317722523\":1509788624518,\"1021484716765\":1509788624398,\"1024667784470\":1509788625209,\"1024667784468\":1509788625208,\"1012572341752\":1478686804055,\"1012572341753\":1478686804055,\"1022273455040\":1509788624268,\"1025593822680\":1509788624430,\"1012572341754\":1478686804055,\"1024785882629\":1509788624250,\"1012572341757\":1478686804055,\"1012572341758\":1478686804055,\"1025593822687\":1509788624430,\"1024667784460\":1509788625209,\"1012572341744\":1478686804055,\"1024667784451\":1509788625208,\"1012572341746\":1478686804055,\"1012572341748\":1478686804055,\"1012572341750\":1478686804055,\"1012572341751\":1478686804055,\"1024667784452\":1509788625209,\"1021592722535\":1478686417048,\"1022395878471\":1478686417070,\"1952019327\":1458304307281,\"1025593822702\":1509788624440,\"1952019313\":1458304307281,\"1024667784499\":1509788625209,\"1025593822691\":1509788624430,\"1024667784497\":1509788625208,\"1025593822692\":1509788624430,\"1024954573773\":1509788624923,\"1024667784501\":1509788625209,\"1022395878474\":1478686417070,\"1024667784500\":1509788625208,\"1024667784488\":1509788625208,\"1024112817722\":1509788624325,\"1024667784492\":1509788625208,\"1025593822705\":1509788624438,\"1022383033616\":1478686417069,\"1025593822704\":1509788624424,\"1024667784482\":1509788625208,\"1024667784487\":1509788625208,\"1024667784484\":1509788625208,\"1020726456228\":1480585069079,\"1009893058042\":1491634246523,\"1024248348250\":1495284743421,\"1023527831717\":1509788624325,\"1016474611001\":1478686804016,\"1022032998987\":1478686417267,\"1025593822617\":1509788625143,\"1023605822486\":1509788624551,\"1843751600\":1444487341724,\"1014811934779\":1478686804018,\"1025593822611\":1509788625246,\"1025593822612\":1509788625243,\"1025593822615\":1509788625141,\"1021257826360\":1478686417237,\"1022076649226\":1509788624850,\"1022076649225\":1509788624850,\"1025593822624\":1509788625121,\"170724679\":1491634246515,\"1007159834877\":1478686804030,\"1025593822650\":1509788625139,\"1022076649243\":1509788624850,\"1021960254985\":1509788624464,\"1022044533003\":1509788625066,\"1025593822536\":1509788625243,\"1025593822540\":1509788625141,\"1025593822533\":1509788625245,\"542713805\":1478686417020,\"4786297567\":1509788624153,\"1843751548\":1444487341727,\"1025050914494\":1509788624232,\"1025593822548\":1509788625141,\"1019720330076\":1509788624313,\"1025593822568\":1509788625121,\"1025593822571\":1509788625120,\"1025593822570\":1509788625122,\"1016530447015\":1478686804056,\"1025593822573\":1509788625120,\"1016530447014\":1478686804056,\"1016530447013\":1478686804056,\"1016530447019\":1478686804056,\"1016530447018\":1478686804056,\"1016530447017\":1478686804056,\"1016530447016\":1478686804056,\"1016530447023\":1478686804056,\"1016530447022\":1478686804056,\"1023319819742\":1509788624288,\"1016530447021\":1478686804056,\"1025593822567\":1509788625121,\"1016530447020\":1478686804056,\"1022631550678\":1480585069131,\"1025593822566\":1509788625121,\"1016530447027\":1478686804056,\"1025593822585\":1509788625139,\"1016530447026\":1478686804056,\"1025593822584\":1509788625105,\"1016530447025\":1478686804056,\"1016530447024\":1478686804056,\"1021958420013\":1478686417147,\"1020826069677\":1478686417226,\"1021729301659\":1509788624986,\"1025593822576\":1509788625168,\"1025593822581\":1509788625143,\"1025042919038\":1509788624498,\"1025593822465\":1509788625167,\"1001660690562\":1478686417024,\"1021428225787\":1509788624827,\"1025593822466\":1509788625143,\"1025593822468\":1509788625136,\"1025628162828\":1509788624186,\"1022185568312\":1478686417187,\"1025628162825\":1509788624204,\"1025628162824\":1509788624200,\"1025628162827\":1509788624198,\"1952019330\":1458304307281,\"1952019334\":1458304307281,\"1025593822486\":1509788625139,\"1059403983\":1444487341746,\"1021049683018\":1478686417001,\"1024937403397\":1509788625006,\"1021513814506\":1478686417244,\"1021523775633\":1509788624398,\"1022081368019\":1478686417012,\"1021811224481\":1478686417131,\"1022368616186\":1478686417069,\"1022471117032\":1478686417219,\"1025593426635\":1509788624435,\"1022471117036\":1478686417219,\"1022073368756\":1478686417176,\"1025593426631\":1509788624435,\"1022897889684\":1509788624419,\"1025593426626\":1509788624435,\"1025593426624\":1509788624435,\"270735411\":1444487341741,\"1025365488757\":1509788624186,\"1023031982473\":1509788624610,\"1025365488753\":1509788624201,\"1023031982479\":1509788624610,\"1025365488755\":1509788624198,\"1025365488754\":1509788624205,\"1025593426647\":1509788624434,\"1025593426646\":1509788624424,\"1012550846538\":1478686416977,\"1025593426644\":1509788624454,\"1025593426642\":1509788624427,\"1025593426641\":1509788624455,\"1022471117046\":1478686417219,\"1025529597591\":1509788624336,\"1021403846825\":1478686417043,\"4561504212\":1465469681389,\"1020917693364\":1478686417081,\"1021982145076\":1509788625068,\"1025593426678\":1509788624564,\"1025593426674\":1509788624565,\"1025593426673\":1509788624611,\"1025593426672\":1509788624611,\"1025593426573\":1509788624436,\"1022245538360\":1478686417014,\"1021959993633\":1478686417147,\"1023031982552\":1509788625084,\"1025593426571\":1509788624436,\"1023031982558\":1509788625084,\"1025593426565\":1509788624436,\"1025593426563\":1509788624436,\"1025593426589\":1509788624454,\"1022129337113\":1478686417184,\"1025593426586\":1509788624427,\"1025593426585\":1509788624455,\"1025505610845\":1509788624933,\"1020653054739\":1478686417028,\"1025569439754\":1509788624352,\"1025593426582\":1509788624436,\"1021872563439\":1478686417136,\"1025593426580\":1509788624436,\"1025627636888\":1509788624431,\"1021926958884\":1478686417141,\"1025593426576\":1509788624436,\"1021914244702\":1509788625142,\"4994834896\":1509788667392,\"1022112821814\":1478686417013,\"1024794268385\":1509788624427,\"1025593426622\":1509788624435,\"1025593426619\":1509788624440,\"1021849100906\":1509788624561,\"1021849100904\":1509788624561,\"1021849100902\":1509788624561,\"1025593426614\":1509788624452,\"1021849100903\":1509788624561,\"209782011\":1444487341752,\"1022489074061\":1478943089489,\"1025593426613\":1509788624509,\"1025593426611\":1509788624509,\"1021959993631\":1478686417147,\"1020938665155\":1478686417084,\"1024887072879\":1509788625004,\"1021395978129\":1478686417106,\"1019608001824\":1509788625078,\"1021395978123\":1478686417106,\"1025365488893\":1509788625109,\"1025365488892\":1509788625126,\"1018928116910\":1509788624368,\"1025365488895\":1509788625089,\"1025365488891\":1509788625117,\"1020938665186\":1478686417084,\"1025593426543\":1509788624452,\"1025365488837\":1509788624524,\"1025593426539\":1509788624509,\"1025365488833\":1509788624541,\"1025365488835\":1509788624537,\"1518031580\":1444487341735,\"1025365488834\":1509788624543,\"1025593426533\":1509788624509,\"1021995645934\":1509788624426,\"1021743983852\":1509788624403,\"1025508101463\":1509788624346,\"1025508101462\":1509788624343,\"1025593426554\":1509788624440,\"1025593426550\":1509788624451,\"1000307814063\":1478686417018,\"1021592720378\":1478686417048,\"1025593426545\":1509788624452,\"1021964057057\":1478686417010,\"1025593426444\":1509788624270,\"1022897889631\":1509788624193,\"1025593426440\":1509788624269,\"1024462392977\":1509788624855,\"1021937842201\":1478686804072,\"1024462392976\":1509788624855,\"1021937842202\":1478686804072,\"1024462392978\":1509788624855,\"1025593426462\":1509788624215,\"1024462392975\":1509788624855,\"1024462392974\":1509788624855,\"1021849100999\":1509788624221,\"1021849100996\":1509788624221,\"1025593426452\":1509788624228,\"1021849100994\":1509788624221,\"1021849100995\":1509788624221,\"1013139762142\":1478686804027,\"1025593426473\":1509788624210,\"1025593426470\":1509788624210,\"4994834778\":1509788667392,\"1025593426466\":1509788624215,\"1021354558842\":1465470268232,\"1025365488789\":1509788624426,\"1025365488788\":1509788624432,\"1021937842212\":1478686804072,\"1025593426491\":1509788624229,\"1021937842213\":1478686804072,\"1025365488787\":1509788624429,\"1021937842216\":1478686804072,\"1018850652205\":1509788625079,\"1025593426483\":1509788624210,\"1025365488792\":1509788624408,\"1018850652203\":1509788625079,\"1025593426481\":1509788624210,\"1025593426480\":1509788624210,\"1025628554710\":1509788624435,\"1025628554709\":1509788624435,\"1025100326231\":1509788624273,\"1025100326230\":1509788624273,\"1025100326229\":1509788624273,\"1025593426889\":1509788624864,\"1025628554704\":1509788624440,\"1025593426887\":1509788624865,\"1021279584486\":1478686417040,\"1025593426885\":1509788624865,\"1025100326232\":1509788624273,\"1691053509\":1509788624374,\"1025593426881\":1509788624916,\"1025593426906\":1509788624841,\"1025628554702\":1509788624451,\"1025593426901\":1509788624840,\"1025593426897\":1509788624841,\"1023970205841\":1509788625037,\"1021234368386\":1478686417235,\"1021849101118\":1509788624859,\"1025628554742\":1509788624863,\"1025593426925\":1509788624841,\"1021849101114\":1509788624859,\"1021849101115\":1509788624859,\"1021849101112\":1509788624859,\"1020653972086\":1478686804057,\"1025593426914\":1509788624841,\"1021234368397\":1478686417235,\"1025902499148\":1509788667462,\"1020817286315\":1478686417078,\"1021890782389\":1478686417300,\"1025593426935\":1509788624866,\"1022008753571\":1509788624426,\"1025593426932\":1509788624868,\"1025630913933\":1509788624371,\"1025365488933\":1509788624834,\"1025365488932\":1509788624829,\"1025365488934\":1509788624824,\"1022067998298\":1478686804035,\"1022293904592\":1478686417068,\"1022067998299\":1478686804035,\"1024132348588\":1509788624324,\"1025593426821\":1509788624907,\"1025593426820\":1509788624907,\"1022067998302\":1478686804035,\"1025593426819\":1509788624907,\"1020668128559\":1478686417028,\"1025365488936\":1509788624800,\"1025593426818\":1509788624907,\"1025593426817\":1509788624908,\"1025593426816\":1509788624907,\"1022008753610\":1509788624427,\"1024132348592\":1509788624324,\"1021982145370\":1478686417263,\"1022008753613\":1509788624456,\"1024132348605\":1509788624324,\"1024132348606\":1509788624324,\"1012970672246\":1480585069077,\"1024132348601\":1509788624324,\"1024132348600\":1509788624324,\"1024132348602\":1509788624324,\"1025628554673\":1509788624440,\"1025628554672\":1509788624451,\"1014840115373\":1478686804028,\"1023745675873\":1509788624517,\"1021354296553\":1465470268230,\"1025593426878\":1509788624916,\"1022067998304\":1478686804035,\"1021729565261\":1509788624533,\"1021550514352\":1478686417245,\"1025100326355\":1509788624173,\"1025593426767\":1509788624455,\"1025100326353\":1509788624172,\"1025593426765\":1509788624435,\"1024730570718\":1509788624923,\"1021988960802\":1478686417264,\"1025100326357\":1509788624173,\"1025100326356\":1509788624173,\"1025593426756\":1509788624435,\"1021023465694\":1478686417091,\"1021715016585\":1509788624426,\"1022046240710\":1478686804047,\"1023820785935\":1491634246535,\"1025593426774\":1509788624434,\"1025593426771\":1509788624424,\"1025593426770\":1509788624454,\"1025593426768\":1509788624427,\"1025593426799\":1509788624908,\"1025593426798\":1509788624908,\"1025593426797\":1509788624907,\"1024730570751\":1509788624924,\"1021261762229\":1478686804026,\"1024576292038\":1509788667504,\"1021356393682\":1465469681398,\"1025593426815\":1509788624907,\"1024730570732\":1509788624923,\"1025593426813\":1509788624907,\"1025593426812\":1509788624907,\"1024730570734\":1509788624923,\"1025593426811\":1509788624907,\"1025593426810\":1509788624907,\"1024730570728\":1509788624923,\"1025593426809\":1509788624907,\"1024730570731\":1509788624923,\"1024730570730\":1509788624923,\"1025593426807\":1509788624907,\"1024730570725\":1509788624923,\"1021928007411\":1509788624461,\"1025593426806\":1509788624907,\"1018899149384\":1509788624367,\"1025593426805\":1509788624907,\"1025593426804\":1509788624907,\"1024730570726\":1509788624923,\"1025593426802\":1509788624907,\"1024730570720\":1509788624924,\"1025593426801\":1509788624907,\"1025593426800\":1509788624907,\"1024730570722\":1509788624924,\"1025593426701\":1509788624566,\"1019533158854\":1509788625079,\"1025593426696\":1509788624547,\"1025507970095\":1509788624339,\"1025593426694\":1509788624547,\"1025507970092\":1509788624340,\"1025507970091\":1509788624343,\"1022071795992\":1509788624945,\"1025593426690\":1509788624547,\"1024928885690\":1509788667497,\"1025378333810\":1509788624304,\"1023798367769\":1509788624444,\"1024928885695\":1509788667497,\"1023798367771\":1509788624444,\"1024928885693\":1509788667496,\"1025507970096\":1509788624338,\"1023798367770\":1509788624444,\"1024928885692\":1509788667497,\"1013940165310\":1478686804030,\"1025593426710\":1509788624544,\"1024928885682\":1509788667497,\"1023798367767\":1509788624444,\"1024928885681\":1509788667497,\"1025593426708\":1509788624536,\"1021234368383\":1478686417235,\"1024928885685\":1509788667496,\"1025593426704\":1509788624539,\"1021624702110\":1478686417117,\"1025593426735\":1509788624509,\"1025593426731\":1509788624509,\"1007134405871\":1509788624373,\"1021234368331\":1478686417235,\"1019177943739\":1509788624314,\"1020974317519\":1478686417034,\"1023798367776\":1509788624444,\"1012178068358\":1478686417025,\"1021234368339\":1478686417235,\"1025593426749\":1509788624436,\"1020294170459\":1465470268295,\"1025593426748\":1509788624440,\"1024928885656\":1509788667496,\"1021234368340\":1478686417235,\"1025593426744\":1509788624440,\"1024928885660\":1509788667497,\"1013146316075\":1478686804027,\"1025593426742\":1509788624451,\"1021151397962\":1509788624931,\"1024928885649\":1509788667496,\"1025593426740\":1509788624452,\"1025593426739\":1509788624452,\"1024928885655\":1509788667496,\"1021151397966\":1509788624920,\"1025862389958\":1509788667578,\"1021513817112\":1478686417244,\"4994835381\":1509788667392,\"1025862389956\":1509788667578,\"1025862389955\":1509788667578,\"1025702484554\":1509788624545,\"1025862389954\":1509788667578,\"1023730864629\":1509788624960,\"1023730864628\":1509788624960,\"1021862863136\":1478686417257,\"1025792007952\":1509788624419,\"1022241605822\":1509788624920,\"1024056059037\":1509788624928,\"1025862389961\":1509788667578,\"1025862389960\":1509788667578,\"1022022385596\":1478686417266,\"1023821441659\":1491634246536,\"1021183642047\":1478686417098,\"1020076592060\":1480585069142,\"1021726681431\":1478686417123,\"1023730864622\":1509788624960,\"1025702484561\":1509788624545,\"1025702484560\":1509788624545,\"1022711764115\":1509788624465,\"1022633382778\":1509788625074,\"1021581578688\":1478686804045,\"1021581578689\":1478686804045,\"1021413546559\":1509788624406,\"1021052170668\":1478686804038,\"1022029201265\":1478686417164,\"1025276100074\":1509788625017,\"1021052170666\":1478686804038,\"1021052170667\":1478686804038,\"1021052170664\":1478686804038,\"1021739265725\":1478686417252,\"1021052170665\":1478686804038,\"1021052170662\":1478686804038,\"1021052170663\":1478686804038,\"1021052170660\":1478686804038,\"1021052170661\":1478686804038,\"1022332570903\":1509788624277,\"1021341582944\":1509788624180,\"1021325066512\":1465470268214,\"673129043\":1444487341745,\"1021729565042\":1509788624194,\"1019720591029\":1509788624312,\"1021325066507\":1465470268213,\"1021581578685\":1478686804045,\"1021581578686\":1478686804045,\"1025601945631\":1509788624309,\"1021581578687\":1478686804045,\"1021581578680\":1478686804045,\"1021325066511\":1465470268214,\"1021581578681\":1478686804045,\"1021325066508\":1465470268213,\"1021581578682\":1478686804045,\"1021325066509\":1465470268213,\"1021581578683\":1478686804045,\"1021581578676\":1478686804045,\"1018546564270\":1480585069070,\"1021581578677\":1478686804045,\"1021581578678\":1478686804045,\"1021581578679\":1478686804045,\"1021581578672\":1478686804045,\"1021581578673\":1478686804045,\"1021581578674\":1478686804045,\"1021581578675\":1478686804045,\"1025100326449\":1509788624181,\"1025100326448\":1509788624181,\"1025702484522\":1509788624612,\"1016877926435\":1478686804019,\"1025792008051\":1509788624419,\"1025702484543\":1509788624539,\"1021641217040\":1509788624818,\"1025702484535\":1509788624565,\"1025702484532\":1509788624611,\"1023808591146\":1509788625071,\"1025100326447\":1509788624181,\"1021577252911\":1478686416985,\"1025100326445\":1509788624181,\"1025628554838\":1509788624526,\"1022223911716\":1509788624938,\"1020294169642\":1465470268295,\"1025628554836\":1509788624526,\"1025628554835\":1509788624526,\"1025628554834\":1509788624526,\"1025628554833\":1509788624526,\"1025628554832\":1509788624526,\"1025628554823\":1509788624526,\"1022185567613\":1478686417187,\"1025628554821\":1509788624526,\"1025628554820\":1509788624526,\"1025628554819\":1509788624526,\"1021259271603\":1478686417040,\"1025628554831\":1509788624526,\"4646706799\":1478881022010,\"1022037851202\":1478686417058,\"1025628554827\":1509788624526,\"1021459814906\":1478686417108,\"1024555058812\":1509788624928,\"4563999420\":1465469681387,\"1021959076824\":1478686417261,\"1022486321856\":1478943089532,\"1019971596590\":1509788624369,\"1020600756911\":1478686417027,\"1023820786270\":1491634246535,\"1025711921940\":1509788624345,\"1022837600252\":1509788625074,\"1025792008151\":1509788624419,\"1025628554759\":1509788624840,\"4994835299\":1509788667392,\"1020600756912\":1478686417027,\"1016682101964\":1465470268314,\"1025628554763\":1509788624866,\"1025628554761\":1509788624840,\"1025628554760\":1509788624840,\"1021263069703\":1478686417237,\"1025628554791\":1509788624199,\"1025628554789\":1509788624227,\"1023031982953\":1509788624507,\"1022093554587\":1478686417274,\"1025628554788\":1509788624227,\"1025628554787\":1509788624227,\"1022093554589\":1478686417274,\"1102924616\":1509788625019,\"1023031982946\":1509788624507,\"1025628554797\":1509788624211,\"1025628554796\":1509788624209,\"1023317723247\":1509788624535,\"1025628554794\":1509788624209,\"1023317723246\":1509788624535,\"1025628554793\":1509788624209,\"1021782650133\":1509788624214,\"1023820786585\":1491634246535,\"1022453286155\":1478686417215,\"1022371234286\":1478686417069,\"4981597174\":1509788624154,\"1023031982720\":1509788624915,\"1013095328484\":1478686417023,\"1350785967\":1444487341751,\"1021483540214\":1478686417110,\"1020596562837\":1478686417027,\"1023387061572\":1509788625040,\"1023087427348\":1509788624987,\"1022074549170\":1509788624507,\"1021379331361\":1478686804026,\"1020167687446\":1509788625077,\"1023946353752\":1491634246531,\"1021236465099\":1478686417003,\"1023946353751\":1491634246531,\"1023946353750\":1491634246531,\"1021893666341\":1478686417138,\"1022464951325\":1478686417298,\"1006207585579\":1478686804052,\"4910821337\":1509788624155,\"1019310331967\":1509788624313,\"1018928117580\":1509788624368,\"1021613299571\":1478686417116,\"4994835146\":1509788667392,\"1021381690503\":1478686417042,\"1011826794233\":1509788624945,\"1023820786448\":1491634246535,\"1024120420657\":1509788667495,\"1023087427470\":1509788624987,\"1022754368418\":1509788624185,\"4981596996\":1509788624154,\"1019365514670\":1509788624315,\"1022066949298\":1478686417271,\"1020891085441\":1478686417032,\"1019365514672\":1509788625081,\"1024112818866\":1509788624325,\"1024161710053\":1509788667562,\"1021714360769\":1478686417300,\"1021782650331\":1509788624229,\"1021641217459\":1509788624420,\"1022957135812\":1509788624509,\"1021160966874\":1478686417097,\"1021094770382\":1478686417232,\"1022460757094\":1480585069076,\"1020956884682\":1478686417033,\"1020677959215\":1478686417028,\"1023031982706\":1509788624915,\"1019029572066\":1509788624314,\"1022340301630\":1478686417069,\"4994835035\":1509788667392,\"1021729564880\":1509788624815,\"1022377787766\":1478686417069,\"1020850316402\":1509788624940,\"1020605344709\":1478686417075,\"1016566758647\":1478686804042,\"1016566758653\":1478686804042,\"1016566758652\":1478686804042,\"1016566758655\":1478686804042,\"1000526182626\":1444487341713,\"1016566758654\":1478686804042,\"1016566758648\":1478686804042,\"1016566758651\":1478686804042,\"1016566758650\":1478686804042,\"1021932462869\":1478686417142,\"1017020794833\":1478686804046,\"1021961567580\":1509788624464,\"1024020668565\":1509788624378,\"1024020668566\":1509788624378,\"1022038506228\":1478686417058,\"393419605\":1444487341717,\"168363566\":1444487341722,\"1021646066204\":1509788625084,\"1021882916898\":1478686416986,\"1022226795937\":1478686417065,\"1023173276979\":1509788625083,\"1024020668609\":1509788624378,\"1024020668608\":1509788624378,\"1024020668610\":1509788624378,\"1000526182585\":1444487341713,\"1025164033078\":1509788624327,\"1009158978052\":1478686804030,\"1024244544820\":1509788624949,\"1024887860383\":1509788625023,\"1025507182709\":1509788624338,\"1025507182708\":1509788624336,\"1024453741233\":1509788625030,\"1024020668660\":1509788624378,\"1018923397127\":1509788625019,\"1020339919982\":1465470268324,\"1020339919983\":1465470268324,\"1024020668659\":1509788624378,\"1020339919981\":1465470268324,\"1011826792952\":1509788624945,\"1021685919062\":1478686417249,\"1583436526\":1491634246510,\"124062711\":1444487341743,\"1021719998270\":1509788624919,\"1025810094967\":1509788667448,\"1021719998271\":1509788624918,\"1021719998266\":1509788624918,\"1021719998267\":1509788624919,\"1018311283812\":1478686804031,\"1021695749512\":1478686804071,\"1025507445084\":1509788624341,\"1024020668473\":1509788624378,\"1024020668472\":1509788624378,\"1025507445080\":1509788624344,\"1024954574939\":1509788624924,\"1024020668471\":1509788624378,\"1024020668470\":1509788624378,\"1025507445075\":1509788624340,\"1021498219098\":1478686417112,\"1023820786729\":1491634246535,\"1024146767798\":1509788625071,\"1350786117\":1444487341741,\"1021675039926\":1478686416980,\"1016399636992\":1480585069069,\"1021719998307\":1509788624918,\"1021719998285\":1509788624918,\"1021719998286\":1509788624918,\"1019192885422\":1509788624971,\"1022138904631\":1478686417184,\"1025505609960\":1509788624972,\"1021719998281\":1509788624918,\"1021719998282\":1509788624918,\"1021719998283\":1509788624918,\"1024020668517\":1509788624378,\"1021719998276\":1509788624918,\"1024020668516\":1509788624378,\"1021719998277\":1509788624919,\"1021719998278\":1509788624918,\"1021719998279\":1509788624918,\"1021719998272\":1509788624919,\"1024020668515\":1509788624378,\"1025627766834\":1509788624540,\"1021719998301\":1509788624918,\"1021719998297\":1509788624919,\"1025497483376\":1509788624367,\"1025627766836\":1509788624542,\"1025627766840\":1509788624523,\"1021719998288\":1509788624919,\"1022385129206\":1478686417290,\"1021719998291\":1509788624918,\"1025285012048\":1509788624329,\"1025285012051\":1509788624328,\"1025285012050\":1509788624328,\"1025285012053\":1509788624328,\"1024686922226\":1509788625160,\"1022240690083\":1478686417283,\"1024686922224\":1509788625160,\"1025285012057\":1509788624327,\"1025285012059\":1509788624328,\"1025285012058\":1509788624327,\"1022304521211\":1478686417068,\"1025285012060\":1509788624328,\"1017177037210\":1478686804016,\"1024510755943\":1509788667830,\"1024056058756\":1509788624928,\"1665101352\":1444487341708,\"1024686922222\":1509788625160,\"1024686922221\":1509788625160,\"1021785926361\":1509788625020,\"1025285012045\":1509788624329,\"1024686922219\":1509788625160,\"1025515702449\":1509788624344,\"1024687446508\":1509788624534,\"1022060132943\":1478686417012,\"1025285012065\":1509788624329,\"1025285012067\":1509788624329,\"4994835588\":1509788667392,\"1025285012071\":1509788624329,\"1025285012073\":1509788624329,\"1025609287360\":1509788625107,\"1025609287362\":1509788625088,\"1024670015161\":1509788625025,\"1025609287358\":1509788625116,\"1020855689749\":1478686416978,\"1020855689753\":1478686416978,\"1020855689755\":1478686416978,\"1020855689756\":1478686416978,\"1021362946119\":1509788624394,\"4994835683\":1509788667392,\"1020878372003\":1509788624934,\"1022258253525\":1478686417067,\"1025711791278\":1509788624346,\"1007588054390\":1478686804032,\"1008238572076\":1478686804018,\"1021740837348\":1478686417125,\"777855776\":1444487341738,\"4994835509\":1509788667392,\"1022125274626\":1478686417276,\"1012152902754\":1478686417025,\"1018928116158\":1509788624368,\"1001519653440\":1478686417022,\"1024487556426\":1509788624920,\"1022316579747\":1478686417200,\"1022879147286\":1509788624558,\"1019195244938\":1480585069068,\"1022879147285\":1509788624558,\"1019477971158\":1478686804021,\"1021824984266\":1509788624394,\"1022879147283\":1509788624558,\"1022879147281\":1509788624558,\"1019833974685\":1478686804021,\"1025042916369\":1509788624498,\"1022879147289\":1509788624558,\"4564000167\":1465469681389,\"1022102468436\":1478686416976,\"1021953571961\":1478686417146,\"1024112819380\":1509788624325,\"1021574240192\":1509788624397,\"1021681593823\":1478686417249,\"1023031983184\":1509788625020,\"1000307813339\":1478686417018,\"1023031983176\":1509788625020,\"4890373793\":1509788624155,\"1020710464038\":1478686416996,\"168364008\":1444487341726,\"1022341350726\":1509788624291,\"1024487556413\":1509788624920,\"1021797722859\":1478686417255,\"1024487556412\":1509788624920,\"1022341350723\":1509788624290,\"1022425759829\":1478686417210,\"1022341350733\":1509788624290,\"1022341350735\":1509788624290,\"1022086476831\":1478686417062,\"1022341350734\":1509788624290,\"1022425759825\":1478686417210,\"1022341350728\":1509788624291,\"255001309\":1444487341747,\"1022425759827\":1478686417210,\"1022341350731\":1509788624290,\"1022341350741\":1509788624290,\"1022341350743\":1509788624291,\"1022341350737\":1509788624290,\"1022341350736\":1509788624290,\"1022341350739\":1509788624290,\"1022341350738\":1509788624290,\"1021044045792\":1478686417036,\"1022219717657\":1478686417192,\"1020438222902\":1478686804046,\"1025593427148\":1509788624210,\"1022072714926\":1478686417176,\"1024686922483\":1509788624223,\"1025593427144\":1509788624210,\"1012034023169\":1509788624929,\"1021350757338\":1509788624843,\"1022072714915\":1478686417176,\"1020966844602\":1478686417086,\"1020469155412\":1509788625077,\"1025593427140\":1509788624209,\"1025593427139\":1509788624209,\"1025593427137\":1509788624215,\"1025593427136\":1509788624227,\"1024686922469\":1509788624223,\"1024686922468\":1509788624223,\"1024686922467\":1509788624223,\"1025593427160\":1509788624197,\"1025593427159\":1509788624229,\"1025593427157\":1509788624230,\"1022091851677\":1478686417273,\"1009893059736\":1491634246520,\"1022037588193\":1478686417058,\"1019782455563\":1509788624312,\"1020963305708\":1478686417229,\"1025902760533\":1509788667449,\"1024686922459\":1509788624223,\"1021833111358\":1509788624815,\"1020294168709\":1465470268295,\"1009893059733\":1491634246520,\"1025052616484\":1509788667843,\"4981597916\":1509788624153,\"1022041520309\":1478686417058,\"1019941582744\":1509788624320,\"1019941582745\":1509788624320,\"1019941582746\":1509788624320,\"1024056058023\":1509788624928,\"1019941582747\":1509788624320,\"1016399636726\":1480585069069,\"1021886981091\":1478686804027,\"1008664303556\":1478686804030,\"1019782455573\":1509788624313,\"1020984932828\":1478686417230,\"1022089754594\":1478686417273,\"1025593427083\":1509788624227,\"1021833111380\":1509788624193,\"1025593427079\":1509788624228,\"1021602550500\":1509788624420,\"1025593427078\":1509788624270,\"1025593427077\":1509788624269,\"1024342716725\":1509788625070,\"1021143010912\":1478686417096,\"1025593427100\":1509788624209,\"1022416323192\":1478686417292,\"1025593427098\":1509788624209,\"1020047487274\":1509788625076,\"1025593427096\":1509788624210,\"1024984984420\":1509788624279,\"1020047487275\":1509788625076,\"1022464950559\":1478686417218,\"1025593427095\":1509788624210,\"1020047487260\":1509788625078,\"1020047487261\":1509788625077,\"1021768362157\":1478686417052,\"1020047487263\":1509788625076,\"1020047487256\":1509788625076,\"1020047487257\":1509788625076,\"1025593427112\":1509788624229,\"1012171908258\":1478686416992,\"1025593427107\":1509788624199,\"1021925515521\":1478686417054,\"1021143010910\":1478686417096,\"1023106825066\":1509788624269,\"1024687446688\":1509788625102,\"1025593427135\":1509788624228,\"1025593427133\":1509788624270,\"1025593427131\":1509788624269,\"1025050912604\":1509788624568,\"1022319987089\":1478686417068,\"1021768362165\":1478686417052,\"1025593427020\":1509788624210,\"1025593427019\":1509788624210,\"1025068475581\":1509788625223,\"1001519653205\":1478686417022,\"1022928037160\":1509788624300,\"1025593427017\":1509788624210,\"1024112820104\":1509788624325,\"1025593427015\":1509788624215,\"1025593427013\":1509788624215,\"1009997522668\":1491634246520,\"1025593427039\":1509788624229,\"1021599011447\":1478686417048,\"1025593427037\":1509788624199,\"1025593427035\":1509788624230,\"1021646065825\":1509788625084,\"1025593427033\":1509788624210,\"1019941582644\":1509788624319,\"1025414508803\":1509788624294,\"1019941582646\":1509788624319,\"1025593427042\":1509788624206,\"1025593427040\":1509788624197,\"860962188\":1491634246514,\"1025593426990\":1509788624270,\"1025593426989\":1509788624269,\"1009015317503\":1478686804054,\"1024687446565\":1509788624195,\"1020439795957\":1465470268312,\"1022228238220\":1478686417192,\"1025593427007\":1509788624227,\"1025593427005\":1509788624228,\"1021561657290\":1478686804040,\"4981597723\":1509788624153,\"1022632859582\":1509788625061,\"1020587774422\":1478686417027,\"1023017827980\":1509788624509,\"1021480131359\":1478686417243,\"1024056189285\":1509788624289,\"1022330341446\":1478686417201,\"1024056189283\":1509788624289,\"1022447649090\":1478686804027,\"1024056189280\":1509788624289,\"1021749357305\":1478686417126,\"1022098535975\":1478686417063,\"1020896460262\":1478686417032,\"1021886980857\":1478686804027,\"1020444776694\":1478686417026,\"1024056189258\":1509788624289,\"1018905703494\":1509788624311,\"1024056189254\":1509788624289,\"1020391824341\":1478686804033,\"1023262798058\":1509788625041,\"1024056189274\":1509788624289,\"1022044010820\":1509788625066,\"1021260580875\":1465470268200,\"1021480131361\":1478686417243,\"1022020025076\":1478686417161,\"1024056189269\":1509788624289,\"1021480131363\":1478686417243,\"1020806144795\":1478686417077,\"1021764692550\":1478686417052,\"1024686922677\":1509788624448,\"1012145956660\":1478686417073,\"1022239903126\":1478686417194,\"1024686922672\":1509788624448,\"1021619458791\":1478686417049,\"1022239903128\":1478686417194,\"1023579348401\":1491634246515,\"642722048\":1478950494913,\"1024056189246\":1509788624289,\"1024056189245\":1509788624289,\"1022238723478\":1509788624931,\"1022238723477\":1509788624931,\"1022238723476\":1509788624947,\"1024686922671\":1509788624448,\"1024686922670\":1509788624448,\"1024686922668\":1509788624448,\"1024056189234\":1509788624289,\"1009997522688\":1491634246520,\"1024056058364\":1509788624928,\"1022239903136\":1478686417194,\"1022239903138\":1478686417194,\"1009997522707\":1491634246533,\"1012126034166\":1478686417073,\"139659045\":1444487341740,\"1009997522712\":1491634246520,\"4981598059\":1509788624153,\"1025901974497\":1509788667450,\"1025901974496\":1509788667450,\"1021932069017\":1478686417055,\"1021748702080\":1478686804068,\"1021646066094\":1509788625084,\"1023734797356\":1509788624970,\"1021079827049\":1509788624279,\"1024143097059\":1509788667499,\"1008095443045\":1478686804032,\"1024462260732\":1509788624988,\"1022242262333\":1480585069113,\"1022242262335\":1480585069113,\"1351180080\":1491634246512,\"1016489419822\":1478686804022,\"1025009231972\":1509788624332,\"1024686922545\":1509788624859,\"1021490354868\":1478686417046,\"1022242262338\":1480585069113,\"1024686922543\":1509788624859,\"1019817459439\":1509788624302,\"1021833111243\":1509788624533,\"1024686922542\":1509788624859,\"1024686922541\":1509788624859,\"1019817459437\":1509788624281,\"1024686922538\":1509788624859,\"1021739264878\":1478686417252,\"494867087\":1478686804029,\"1023537004688\":1509788624459,\"1021796280541\":1509788624394,\"1021886980647\":1478686804027,\"1022466662184\":1478686417299,\"1025737343568\":1509788624331,\"1021559294292\":1478686417008,\"1025737343567\":1509788624331,\"1025737343566\":1509788624331,\"1025737343565\":1509788624331,\"1025737343564\":1509788624331,\"1022044399202\":1478686417171,\"1023612372162\":1509788624950,\"1021948452884\":1478686417055,\"1021782915018\":1509788624395,\"1025737343603\":1509788624331,\"140843087\":1444487341729,\"1020819127625\":1478686417078,\"1025737343604\":1509788624331,\"1020073972218\":1465470268310,\"1021973619338\":1478686417150,\"1021973619339\":1478686417150,\"1022431272307\":1509788624292,\"1020258131151\":1464448510787,\"1025737343519\":1509788624331,\"1023612372135\":1509788624950,\"1025737343518\":1509788624331,\"1025737343517\":1509788624331,\"1025737343516\":1509788624331,\"4818407290\":1509788624155,\"1022066550613\":1478686417175,\"1023612372146\":1509788624950,\"1022455390125\":1478686417016,\"1022221947290\":1478686417281,\"1020819127615\":1478686417078,\"1023612372100\":1509788624950,\"1023612372104\":1509788624950,\"1535200237\":1444487341738,\"1024961393910\":1509788624969,\"1023612372114\":1509788624950,\"1020752673031\":1478686417076,\"1025628953764\":1509788624233,\"1001645483560\":1444487341709,\"1025737343521\":1509788624331,\"1025737343520\":1509788624331,\"1023612372125\":1509788624950,\"1021581577107\":1478686804065,\"1023612372067\":1509788624950,\"1023961954445\":1509788625005,\"1025406906220\":1509788624455,\"1023612372066\":1509788624950,\"1021350894895\":1509788624917,\"1023612372064\":1509788624950,\"1021350894888\":1509788624917,\"1023612372070\":1509788624950,\"1025406906213\":1509788624441,\"1021647507082\":1509788624533,\"1021350894884\":1509788624917,\"1023612372073\":1509788624950,\"1024223569951\":1509788625128,\"1025406906214\":1509788624507,\"1022412397797\":1478686417208,\"1021350894882\":1509788624917,\"1025406906210\":1509788624441,\"1022486053012\":1509788625065,\"1021350894910\":1509788624917,\"1021629549987\":1509788624401,\"1024223569921\":1509788625171,\"1023612372086\":1509788624950,\"1021350894906\":1509788624917,\"1025737343683\":1509788624330,\"1021350894902\":1509788624917,\"1025737343685\":1509788624330,\"1021350894898\":1509788624917,\"1025737343684\":1509788624330,\"1024223569970\":1509788625243,\"1021350894852\":1509788624918,\"1021948453023\":1478686417055,\"1025441386832\":1509788624198,\"1013091266730\":1478686804040,\"1021515122518\":1509788624860,\"1025406906204\":1509788624466,\"1021515122519\":1509788624860,\"1024223569956\":1509788625128,\"1025901972698\":1509788667460,\"1025406906207\":1509788624423,\"1021350894878\":1509788624917,\"1025901972697\":1509788667461,\"1025406906206\":1509788624466,\"1021515122517\":1509788624860,\"1021350894872\":1509788624917,\"1025406906203\":1509788624512,\"1025901972701\":1509788667459,\"1025406906202\":1509788624511,\"1021350894875\":1509788624917,\"1025901972700\":1509788667460,\"1021350894864\":1509788624918,\"1024223569960\":1509788625104,\"1021515122520\":1509788624860,\"1024223569962\":1509788625242,\"1025737343643\":1509788624331,\"1024370118937\":1509788624927,\"1025737343642\":1509788624331,\"1025737343641\":1509788624331,\"1025737343647\":1509788624331,\"1021695619557\":1478686804043,\"1025737343646\":1509788624331,\"1021695619558\":1478686804043,\"1025737343645\":1509788624331,\"1005848174869\":1509788624390,\"1021695619559\":1478686804043,\"1021695619560\":1478686804043,\"1020904055483\":1478686417032,\"1015188377046\":1465470268263,\"1020827516462\":1478686417031,\"1022452244185\":1478686417215,\"1021351943533\":1478686417005,\"1021729305588\":1509788624986,\"1021351943531\":1478686417005,\"1020294045302\":1465470268284,\"1021129773094\":1478686417233,\"1025642716448\":1509788624455,\"1021350894923\":1509788624917,\"1023612371972\":1509788624950,\"1023612371979\":1509788624950,\"1021350894917\":1509788624917,\"1023987513964\":1509788624915,\"1023612371976\":1509788624950,\"1023612371983\":1509788624950,\"1021350894914\":1509788624917,\"1023612371980\":1509788624950,\"1023612371987\":1509788624950,\"1023612371986\":1509788624950,\"1023612371990\":1509788624950,\"1023612371989\":1509788624950,\"1023612371988\":1509788624950,\"1025737343650\":1509788624331,\"1023612371994\":1509788624950,\"1025737343649\":1509788624331,\"1023670568849\":1509788624847,\"1023612371993\":1509788624950,\"1020856090581\":1478686417079,\"1025737343648\":1509788624331,\"1023612371992\":1509788624950,\"1024008879038\":1509788667493,\"1025737343835\":1509788624330,\"1021719999148\":1509788624514,\"1025875888921\":1509788667402,\"1025737343834\":1509788624330,\"1021647507200\":1509788624194,\"1025737343833\":1509788624330,\"1022966971512\":1509788624195,\"1025737343832\":1509788624330,\"1025737343837\":1509788624330,\"1021719999146\":1509788624514,\"1025737343836\":1509788624330,\"1021719999147\":1509788624514,\"1025737343831\":1509788624330,\"1025609423606\":1509788624455,\"1021388906087\":1478686804026,\"1021719999164\":1509788624514,\"1013139763756\":1478686804027,\"1021719999160\":1509788624514,\"1021719999162\":1509788624514,\"1022074546585\":1478686417061,\"1021719999163\":1509788624514,\"1021719999158\":1509788624514,\"1021719999159\":1509788624514,\"1024248342535\":1495284743422,\"1020258131436\":1464448510787,\"1021719999155\":1509788624514,\"1021719999116\":1509788624513,\"1021719999117\":1509788624513,\"1024735414066\":1509788667507,\"1025188405297\":1509788624319,\"1024735414065\":1509788667507,\"1025530648494\":1509788624509,\"1021719999115\":1509788624514,\"1021867064768\":1478686417257,\"1021847665434\":1509788625078,\"1021719999111\":1509788624513,\"1021719999104\":1509788624513,\"1021847665437\":1509788625077,\"1021719999106\":1509788624514,\"1025188405308\":1509788624280,\"1022260220584\":1478686417196,\"1025530648506\":1509788624452,\"1024735414052\":1509788667507,\"1025530648503\":1509788624510,\"1013979219059\":1478686804028,\"1025530648524\":1509788624436,\"1023612372386\":1509788624950,\"1023612372385\":1509788624950,\"1023612372391\":1509788624950,\"1025530648520\":1509788624436,\"1025530648523\":1509788624436,\"1012615075116\":1478686804049,\"1025530648517\":1509788624436,\"1023612372395\":1509788624950,\"1025530648516\":1509788624436,\"1023612372394\":1509788624950,\"1025530648519\":1509788624436,\"1025530648515\":1509788624440,\"1024735414083\":1509788667507,\"1025737343753\":1509788624330,\"1024735414081\":1509788667507,\"1025188405312\":1509788624300,\"1025737343752\":1509788624331,\"1024735414080\":1509788667508,\"1021867064765\":1478686417257,\"1025530648536\":1509788624434,\"1021867064767\":1478686417257,\"1025188405316\":1509788624281,\"1025737343751\":1509788624331,\"1025737343750\":1509788624331,\"1025530648528\":1509788624427,\"1024480482939\":1509788624283,\"1021719999182\":1509788624514,\"1019423837163\":1478686804028,\"1024374706416\":1509788625086,\"1000813434029\":1478950494933,\"1021719999178\":1509788624514,\"1021719999172\":1509788624514,\"1024362385735\":1509788667467,\"1021719999173\":1509788624514,\"1025406905991\":1509788624455,\"1021719999175\":1509788624514,\"1023844905067\":1491634246533,\"1021719999168\":1509788624514,\"1021647507311\":1509788624815,\"1024780372010\":1509788624567,\"1023612372364\":1509788624950,\"1023612372370\":1509788624950,\"1021486154959\":1509788624402,\"1025737343791\":1509788624330,\"1021719999192\":1509788624514,\"1023612372375\":1509788624950,\"1025737343790\":1509788624330,\"1025737343789\":1509788624330,\"1021719999194\":1509788624514,\"1025530648571\":1509788625243,\"1025737343788\":1509788624330,\"1023612372372\":1509788624950,\"1025892403818\":1509788667443,\"1023612372379\":1509788624950,\"1021719999189\":1509788624514,\"1025441386630\":1509788624537,\"1025441386629\":1509788624543,\"1023612372377\":1509788624950,\"1021054134791\":1478686417001,\"1021719999191\":1509788624514,\"1023612372382\":1509788624950,\"1023612372381\":1509788624950,\"1025406905965\":1509788624511,\"1022456438347\":1478686417016,\"1025406905967\":1509788624466,\"1025406905966\":1509788624512,\"1021685919839\":1478686417249,\"1021988954665\":1478686417154,\"1022632986828\":1509788625062,\"1025406905977\":1509788624507,\"1021865622164\":1478686417136,\"1025406905979\":1509788624507,\"1022355249254\":1478686417203,\"1025406905972\":1509788624441,\"1021966147739\":1478686417262,\"1024928887754\":1509788667496,\"1024187787029\":1509788624566,\"1019775385104\":1509788625084,\"1024928887758\":1509788667496,\"1025513083920\":1509788624335,\"1019166153294\":1478686804026,\"1024928887751\":1509788667497,\"1016444074378\":1478686804017,\"1024928887768\":1509788667497,\"1024928887761\":1509788667496,\"1020850716199\":1478686804057,\"1024928887767\":1509788667496,\"1024928887766\":1509788667497,\"1020928566584\":1478686417082,\"1020928566586\":1478686417082,\"1023612372257\":1509788624950,\"1021719999087\":1509788624513,\"1022966971576\":1509788624818,\"1008818975588\":1509788624372,\"1021719999081\":1509788624514,\"1023612372262\":1509788624950,\"1022455127610\":1478686417216,\"1023612372260\":1509788624950,\"1025737343891\":1509788624330,\"1021459415708\":1509788624817,\"1025737343890\":1509788624330,\"1021719999077\":1509788624513,\"1023612372266\":1509788624950,\"1020928566578\":1478686417082,\"1025737343889\":1509788624330,\"1021719999078\":1509788624514,\"1020928566579\":1478686417082,\"1025737343895\":1509788624330,\"1023612372271\":1509788624950,\"1020928566581\":1478686417082,\"1025737343894\":1509788624330,\"1025737343893\":1509788624330,\"1025737343892\":1509788624330,\"1021719999100\":1509788624513,\"1024450467647\":1509788624957,\"1023612372274\":1509788624950,\"1021719999103\":1509788624513,\"1021719999096\":1509788624513,\"1021719999098\":1509788624513,\"1021719999099\":1509788624513,\"1022966971564\":1509788624534,\"1023612372276\":1509788624950,\"1020507556810\":1509788624375,\"1021620243576\":1509788624401,\"1021719999094\":1509788624513,\"1021719999095\":1509788624513,\"1023612372280\":1509788624950,\"1021719999088\":1509788624514,\"1021719999091\":1509788624513,\"1022470594292\":1478686417073,\"1025671946180\":1509788624942,\"1023612372228\":1509788624950,\"1020898157376\":1478686417080,\"1023612372233\":1509788624950,\"1021738218836\":1478686417251,\"1023612372243\":1509788624950,\"1025608505882\":1509788624746,\"1013091267052\":1478686804028,\"1022470594283\":1478686417073,\"1025608505875\":1509788624828,\"1023612372248\":1509788624950,\"1025608505877\":1509788624833,\"1025608505876\":1509788624823,\"1023612372253\":1509788624950,\"1017124078525\":1478686804024,\"1020930008772\":1478686417082,\"1022438743285\":1480585069098,\"1022001014511\":1478686417057,\"1022438743283\":1480585069098,\"1022438743282\":1480585069098,\"1021987643871\":1478686417154,\"1022438743280\":1480585069098,\"1022270183146\":1480585069091,\"1024727811182\":1509788624169,\"1023612372714\":1509788624949,\"1022270183145\":1480585069091,\"1022438743293\":1480585069098,\"1011254649241\":1478686804030,\"1022270183144\":1480585069091,\"1023612372712\":1509788624949,\"1020438217786\":1478686804047,\"1026223242569\":1514456869775,\"1022270183149\":1480585069091,\"1024803572205\":1509788625023,\"1022370060512\":1509788625018,\"1022270183155\":1480585069091,\"1022438743271\":1480585069098,\"1024727811189\":1509788624170,\"1025693172463\":1509788667463,\"1022438743268\":1480585069098,\"1023612372720\":1509788624949,\"4818406695\":1509788624155,\"1022270183163\":1480585069091,\"1022438743279\":1480585069098,\"1022270183162\":1480585069091,\"1022438743278\":1480585069098,\"1022438743277\":1480585069098,\"1023612372729\":1509788624949,\"1022270183160\":1480585069091,\"1022438743276\":1480585069098,\"1022438743275\":1480585069098,\"1022041777311\":1478686417268,\"1022270183166\":1480585069091,\"1022438743274\":1480585069098,\"1022487364111\":1478943089489,\"1022438743273\":1480585069098,\"1022438743272\":1480585069098,\"1022438743253\":1480585069098,\"1022438743251\":1480585069098,\"1820294746\":1478686417024,\"1022438743250\":1480585069098,\"1820294745\":1478686417024,\"1022438743249\":1480585069098,\"1022438743248\":1480585069098,\"1022438743259\":1480585069098,\"1022438743257\":1480585069098,\"1022438743239\":1480585069098,\"1022438743236\":1480585069097,\"1020919128415\":1478686804032,\"1022438743232\":1480585069097,\"1024838045634\":1509788624948,\"1022438743246\":1480585069098,\"1022438743245\":1480585069098,\"1022438743243\":1480585069098,\"1024727811163\":1509788624168,\"1020183811356\":1465470268277,\"1021143011952\":1478686417096,\"1022438743223\":1480585069097,\"1023612372643\":1509788624950,\"1022438743221\":1480585069097,\"1019714566423\":1478686804066,\"1020986369314\":1478686417088,\"1022438743231\":1480585069097,\"1022438743229\":1480585069097,\"1022438743227\":1480585069097,\"1022438743226\":1480585069097,\"1022438743225\":1480585069097,\"1022438743224\":1480585069097,\"1019000869778\":1480585069067,\"1019945380810\":1509788624392,\"1023612372611\":1509788624951,\"1023233175549\":1509788624957,\"1025710736274\":1509788624304,\"1023612372615\":1509788624950,\"1023612372618\":1509788624950,\"1021143011930\":1478686417096,\"1023612372621\":1509788624950,\"1023612372626\":1509788624950,\"1023612372629\":1509788624950,\"1023612372635\":1509788624950,\"1023612372639\":1509788624950,\"1023612372636\":1509788624950,\"1010402022088\":1478686804067,\"1021985022312\":1478686417152,\"1023612372587\":1509788624950,\"1022377793552\":1478686417290,\"1022776520775\":1509788624465,\"1023612372593\":1509788624951,\"1022063928767\":1478686417174,\"1010091899989\":1491634246527,\"1010091899991\":1491634246522,\"1010091899993\":1491634246522,\"1021343555232\":1478686417005,\"1023612372606\":1509788624951,\"1023612372545\":1509788624950,\"4997856072\":1509788667392,\"1020953864140\":1478686417085,\"1020101234925\":1465470268257,\"1023612372518\":1509788624950,\"1024519936002\":1509788624854,\"1023612372522\":1509788624950,\"1024519936001\":1509788624854,\"1024519936000\":1509788624854,\"1014706426640\":1509788624944,\"1023612372520\":1509788624950,\"1023612372527\":1509788624950,\"1024519936004\":1509788624854,\"1021391134104\":1478686417240,\"1020993447370\":1478686417230,\"1023612372535\":1509788624950,\"1023612372534\":1509788624950,\"1023612372532\":1509788624950,\"1023612372539\":1509788624950,\"1023612372537\":1509788624950,\"1020050632183\":1509788624375,\"1023612372536\":1509788624950,\"1023612372543\":1509788624950,\"1023612372540\":1509788624950,\"1021729305034\":1509788624986,\"1019533030113\":1509788624317,\"1020438217923\":1478686804047,\"1024727811217\":1509788624169,\"1024687966150\":1509788667833,\"1023738464377\":1491634246523,\"1021353516683\":1478686417005,\"1019355940261\":1509788624314,\"1021807164298\":1478686417131,\"1023065268361\":1509788625047,\"1021714362654\":1478686417300,\"1021695619642\":1478686804067,\"1021695619643\":1478686804067,\"1021695619644\":1478686804067,\"1021695619645\":1478686804067,\"1025876281613\":1509788667406,\"1018928115478\":1509788624368,\"1024055934391\":1509788624928,\"1021678711555\":1478686417120,\"1021048760565\":1478686417001,\"1024669483212\":1509788625025,\"1024884050946\":1509788624439,\"1022478713775\":1478943089487,\"1022632987263\":1509788625060,\"1021667046327\":1478686416979,\"165747364\":1478686804022,\"1022223913706\":1509788624938,\"1021637414368\":1509788624404,\"1022724213888\":1509788624394,\"1024547592278\":1509788667496,\"1024547592274\":1509788667496,\"1024547592284\":1509788667496,\"1022400338011\":1478686804067,\"1020938135350\":1478686417084,\"1024547592281\":1509788667496,\"1022466661550\":1478686417299,\"1022438743409\":1480585069098,\"1022438743408\":1480585069098,\"1021043255695\":1478686417092,\"1025048820436\":1509788624273,\"1022438743396\":1480585069098,\"1022438743395\":1480585069098,\"1022438743406\":1480585069098,\"1022438743405\":1480585069098,\"1022438743404\":1480585069098,\"1022438743403\":1480585069098,\"1022438743400\":1480585069098,\"1022438743383\":1480585069098,\"1025737343480\":1509788624331,\"1025737343475\":1509788624331,\"1022897109549\":1509788625052,\"1022438743390\":1480585069098,\"1025737343474\":1509788624331,\"1025737343473\":1509788624331,\"1025737343479\":1509788624331,\"1025737343478\":1509788624331,\"1022438743385\":1480585069098,\"1025507448385\":1509788624335,\"1022438743384\":1480585069098,\"1021581576285\":1478686804066,\"1024781552359\":1509788625019,\"1025910885975\":1509788667579,\"1025910885974\":1509788667579,\"1021088083648\":1478686417002,\"1024055934249\":1509788624969,\"1001660687605\":1478686417024,\"1023612372774\":1509788624949,\"1020258131764\":1464448510787,\"1011024754409\":1478686804030,\"1023612372779\":1509788624949,\"1010091900169\":1491634246527,\"1010091900177\":1491634246527,\"1025507448381\":1509788624339,\"1025507448378\":1509788624343,\"1022948753223\":1509788624929,\"1025608505393\":1509788624428,\"1025608505395\":1509788624425,\"1025608505394\":1509788624431,\"1021645802980\":1509788624535,\"1025608505397\":1509788625088,\"1025608505399\":1509788624407,\"1022270183169\":1480585069091,\"1022438743317\":1480585069098,\"1022270183168\":1480585069091,\"1022438743314\":1480585069098,\"1022270183173\":1480585069091,\"1023612372747\":1509788624949,\"1023612372745\":1509788624949,\"1018242334975\":1509788624372,\"1023612372751\":1509788624949,\"1022438743322\":1480585069098,\"1022438743321\":1480585069098,\"1023612372749\":1509788624949,\"1023612372753\":1509788624949,\"1025737343407\":1509788624331,\"1025608505373\":1509788625116,\"1022438743298\":1480585069098,\"1023612372758\":1509788624949,\"1021975716199\":1509788625011,\"1025608505375\":1509788625107,\"1025608505374\":1509788625125,\"1022438743306\":1480585069098,\"1024529505881\":1509788625175,\"1020771024477\":1478686416996,\"1024529505883\":1509788625175,\"1024529505882\":1509788625175,\"1024529505885\":1509788625175,\"1022050034181\":1509788624435,\"1021350893993\":1509788624513,\"1024529505884\":1509788625175,\"1008793416745\":1478686804054,\"1024529505887\":1509788625175,\"1024529505886\":1509788625175,\"1021350893989\":1509788624513,\"1021350893990\":1509788624513,\"1025883361164\":1509788667462,\"662385527\":1478686804029,\"1025050787115\":1509788624461,\"1021350893984\":1509788624513,\"1024529505877\":1509788625175,\"1021350893985\":1509788624513,\"1021350893986\":1509788624513,\"1024529505879\":1509788625175,\"1021350893987\":1509788624513,\"1024529505878\":1509788625175,\"1021350894012\":1509788624513,\"1022400339763\":1478686804054,\"1022400339762\":1478686804042,\"1022400339765\":1478686804054,\"1022400339764\":1478686804054,\"1025050787122\":1509788624461,\"1021350894010\":1509788624513,\"1021350894011\":1509788624513,\"1021350894005\":1509788624513,\"1021350894006\":1509788624513,\"1021350894000\":1509788624513,\"1025050787129\":1509788624461,\"1021695620415\":1478686804050,\"1024529505913\":1509788625175,\"1021964707099\":1478686417056,\"1024529505912\":1509788625175,\"1024529505915\":1509788625175,\"1024529505917\":1509788625175,\"1025050918144\":1509788624457,\"1024529505916\":1509788625175,\"1024529505919\":1509788625175,\"1021969950432\":1478686416984,\"1025104132146\":1509788624585,\"1024313223441\":1509788624327,\"1024529505909\":1509788625175,\"1012341907585\":1478686417026,\"1021350893980\":1509788624513,\"1024529505896\":1509788625175,\"1021350893972\":1509788624513,\"1024529505888\":1509788625175,\"1024529505891\":1509788625175,\"1021350893975\":1509788624513,\"1021393230612\":1478686417042,\"1022089096594\":1478686417062,\"1021350893971\":1509788624513,\"1019971465120\":1480585069076,\"1020898158305\":1478686417080,\"1019971465133\":1480585069076,\"1019971465134\":1480585069076,\"1025050787181\":1509788624461,\"1020891866434\":1509788624930,\"1019971465130\":1480585069076,\"1020258130082\":1464448510787,\"1025050787190\":1509788624461,\"1019971465142\":1480585069076,\"1019971465143\":1480585069076,\"1019971465136\":1480585069076,\"1019971465138\":1480585069076,\"1019971465148\":1480585069076,\"1019971465151\":1480585069076,\"1019971465145\":1480585069076,\"1019971465147\":1480585069076,\"1023627051106\":1509788624917,\"1023627051111\":1509788624917,\"1012108997353\":1478686417023,\"1023627051114\":1509788624847,\"1022239905469\":1478686417014,\"1025050787147\":1509788624461,\"1023627051123\":1509788624847,\"1023627051125\":1509788624849,\"1008833787824\":1480585069066,\"1022467709766\":1478686417299,\"1025050787164\":1509788624461,\"1025050787161\":1509788624461,\"1023627051133\":1509788624827,\"1024529506009\":1509788624477,\"1024529506008\":1509788624477,\"1024529506011\":1509788624476,\"1024529506010\":1509788624477,\"1023627051143\":1509788624827,\"1024529506012\":1509788624476,\"1025050787233\":1509788624461,\"1024529506015\":1509788624476,\"1024529506014\":1509788624476,\"1025050787243\":1509788624461,\"1024529506006\":1509788624476,\"1023627051155\":1509788624846,\"1025721353662\":1509788624822,\"1025721353661\":1509788624832,\"1025721353660\":1509788624828,\"1021699815030\":1478686417009,\"1021654190894\":1478686417120,\"1025050787249\":1509788624461,\"1024529505984\":1509788624236,\"1024529506043\":1509788624476,\"1024529506045\":1509788624476,\"1024529506044\":1509788624476,\"1025050787201\":1509788624461,\"1024529506047\":1509788624477,\"1024529506046\":1509788624476,\"1024529506035\":1509788624476,\"1023035123168\":1509788624175,\"1024529506039\":1509788624476,\"1024529506025\":1509788624476,\"1024529506024\":1509788624476,\"1024529506027\":1509788624476,\"1024529506026\":1509788624476,\"1025050787219\":1509788624461,\"1025050787230\":1509788624461,\"1024529506016\":1509788624476,\"1024529506019\":1509788624476,\"1024529506023\":1509788624476,\"1022400339937\":1478686804042,\"1022400339936\":1478686804042,\"1022400339939\":1478686804042,\"1022400339938\":1478686804042,\"1024529505949\":1509788624236,\"1022400339940\":1478686804042,\"1021925522342\":1478686417054,\"1021198323720\":1465470268191,\"1023627051219\":1509788624875,\"1022094994852\":1478686417274,\"1022094994853\":1478686417274,\"1023627051223\":1509788624875,\"1024529505921\":1509788625175,\"1024529505920\":1509788625175,\"1022223914367\":1509788624939,\"1024529505922\":1509788625175,\"1023627051231\":1509788624875,\"1023627051229\":1509788624875,\"1023627051235\":1509788624875,\"1024529505976\":1509788624236,\"1024529505979\":1509788624236,\"1021264649235\":1465469681395,\"1024529505978\":1509788624236,\"1024529505981\":1509788624236,\"1021583150864\":1509788624397,\"1023627051239\":1509788624875,\"1024529505980\":1509788624236,\"1021729437657\":1509788624403,\"1023730863894\":1509788624929,\"1023627051237\":1509788624875,\"1024529505969\":1509788624236,\"1024529505968\":1509788624236,\"1023627051242\":1509788624875,\"1024529505971\":1509788624236,\"1024529505970\":1509788624236,\"1021727602612\":1478686804065,\"1024529505973\":1509788624236,\"1023627051247\":1509788624875,\"1023627051245\":1509788624875,\"1024529505974\":1509788624236,\"1025721353664\":1509788624616,\"1023627051244\":1509788624875,\"1023627051250\":1509788624875,\"1024529505962\":1509788624236,\"1024529505965\":1509788624236,\"1024529505964\":1509788624236,\"1023627051253\":1509788624875,\"1024529505966\":1509788624236,\"1023627051252\":1509788624875,\"1023627051259\":1509788624875,\"1022400339931\":1478686804042,\"1024529505955\":1509788624237,\"1024529505954\":1509788624237,\"1022400339933\":1478686804042,\"1024529505957\":1509788624237,\"1022400339932\":1478686804042,\"4997856537\":1509788667392,\"1022400339935\":1478686804042,\"1024529505959\":1509788624236,\"1023627051261\":1509788624875,\"1022400339934\":1478686804042,\"1024529505958\":1509788624236,\"1023627051260\":1509788624875,\"1013139764796\":1478686804027,\"1023627051271\":1509788624875,\"1023402398306\":1509788624222,\"1022244493164\":1478686417066,\"1022400339501\":1478686804071,\"1024528457543\":1509788624237,\"1022021198027\":1509788625236,\"1024528457558\":1509788625175,\"1024529506173\":1509788624456,\"1021041422087\":1465470268237,\"1024529506175\":1509788624414,\"1022460631719\":1478686417298,\"1022074809765\":1478686417061,\"1021894719606\":1478686804048,\"1023402398292\":1509788624221,\"1012211890516\":1478686417073,\"1023402398298\":1509788624222,\"1023402398297\":1509788624222,\"1023402398296\":1509788624222,\"1020616357072\":1478686417027,\"1025332719409\":1509788624281,\"1025332719408\":1509788624311,\"1025332719411\":1509788624283,\"1021695620212\":1478686804050,\"1024529506048\":1509788624476,\"1025608769215\":1509788625083,\"1012497360958\":1478686417223,\"1021484318909\":1509788624398,\"1022398111269\":1478686417291,\"1021854219974\":1478686417135,\"1011803718070\":1478686804015,\"1022238988192\":1478686417283,\"1016779745703\":1478686804063,\"1016779745702\":1478686804063,\"1022227715304\":1478686417014,\"1024008093381\":1509788667462,\"1016779745706\":1478686804063,\"1016779745705\":1478686804063,\"1016779745704\":1478686804063,\"1024008093378\":1509788667499,\"4806478826\":1509788624155,\"1019835672509\":1509788625078,\"1015291670867\":1480585069068,\"1021729306250\":1509788624986,\"1025901971905\":1509788667450,\"1023728111530\":1491634246523,\"1019372585474\":1509788624302,\"1019193940383\":1478686804049,\"1019689008923\":1509788624284,\"1025879952919\":1509788667403,\"1017092233815\":1478686804019,\"1020916115055\":1478686417032,\"1025909705155\":1509788667459,\"1025901971895\":1509788667451,\"1023627051494\":1509788624917,\"1021354301566\":1465470268230,\"1023627051499\":1509788624847,\"1023627051497\":1509788624917,\"1023627051505\":1509788624847,\"1023627051512\":1509788624849,\"1019193940384\":1478686804049,\"1019193940385\":1478686804049,\"1019193940386\":1478686804049,\"1019193940387\":1478686804049,\"1023627051516\":1509788624827,\"1023627051523\":1509788624827,\"1025569447516\":1509788624351,\"1023612371680\":1509788624951,\"1023627051525\":1509788624827,\"1023605818688\":1509788625142,\"1023627051534\":1509788624868,\"1023627051533\":1509788624827,\"1023627051532\":1509788624827,\"1022966971243\":1509788625102,\"1021311048733\":1465470268203,\"1021311048735\":1465470268203,\"1021311048729\":1465470268203,\"1020998037196\":1478686417088,\"1006864923417\":1509788624380,\"1021603728031\":1509788624816,\"1023612371653\":1509788624951,\"1019067454434\":1509788624315,\"1023576721199\":1491634246536,\"1023576721198\":1491634246536,\"1023612371662\":1509788624951,\"4997857225\":1509788667398,\"1016779745815\":1478686804063,\"1023576721202\":1491634246536,\"1023576721200\":1491634246536,\"1019256194745\":1509788624312,\"1021301742729\":1480585069071,\"1023612371668\":1509788624951,\"1016779745823\":1478686804063,\"1016779745822\":1478686804063,\"1016779745821\":1478686804063,\"1016779745820\":1478686804063,\"1023612371672\":1509788624951,\"1016779745819\":1478686804063,\"1023612371679\":1509788624951,\"1016779745818\":1478686804063,\"1025569447520\":1509788624350,\"1016779745816\":1478686804063,\"1023612371676\":1509788624951,\"1023612371622\":1509788624951,\"1021337262800\":1478686804045,\"1021337262801\":1478686804045,\"1021337262802\":1478686804045,\"1021337262803\":1478686804045,\"1021603728113\":1509788624419,\"1023612371628\":1509788624951,\"1000037269607\":1478686417021,\"1021337262798\":1478686804045,\"1023612371633\":1509788624951,\"1024632915547\":1509788624467,\"1021337262794\":1478686804045,\"1023612371637\":1509788624951,\"1021337262795\":1478686804045,\"1023612371641\":1509788624951,\"1022072844024\":1478686417271,\"1020987941167\":1478686416984,\"1023612371645\":1509788624951,\"1025815593454\":1509788667452,\"1022400339265\":1478686804042,\"1021581577613\":1478686804028,\"1022479762948\":1478943089487,\"1022400339267\":1478686804054,\"1022400339266\":1478686804042,\"1022400339269\":1478686804054,\"1022400339268\":1478686804054,\"1021990790639\":1478686417155,\"1022089752530\":1478686417273,\"1024753897102\":1509788624949,\"1021768364111\":1478686417052,\"1021768364108\":1478686417052,\"1001351492445\":1444487341700,\"635122524\":1491634246517,\"1022044659936\":1509788625065,\"1012418588334\":1478686417074,\"1021583019358\":1509788624397,\"1025772733079\":1509788624998,\"1024977253152\":1509788624938,\"1016779745943\":1478686804058,\"666972532\":1491634246534,\"666972536\":1491634246534,\"1016779745948\":1478686804058,\"1016779745947\":1478686804058,\"1016779745946\":1478686804058,\"1022966971334\":1509788624420,\"1016779745945\":1478686804058,\"1016779745944\":1478686804058,\"1021969949707\":1478686416984,\"1021117704567\":1478686417095,\"787167269\":1491634246509,\"1021699814449\":1478686417009,\"1016779746047\":1478686804058,\"1016779746046\":1478686804058,\"1016779746045\":1478686804058,\"1020294043765\":1465470268284,\"1016779746044\":1478686804058,\"1024838044462\":1509788624948,\"1016779746043\":1478686804058,\"1020258130448\":1464448510787,\"1021076810477\":1478686417094,\"1022476879453\":1478943089487,\"1025120517107\":1509788624935,\"1017827552551\":1478686804021,\"1020258130931\":1464448510787,\"1001212414722\":1478686417220,\"1024977253018\":1509788624938,\"1021723145353\":1478686417009,\"1024977253020\":1509788624938,\"1025636555591\":1509788624308,\"1022392343716\":1478686417291,\"1023612371910\":1509788624952,\"1016779746048\":1478686804058,\"1023612371915\":1509788624952,\"1023612371916\":1509788624952,\"1024838044356\":1509788624948,\"1023612371879\":1509788624952,\"1023612371890\":1509788624952,\"1021379074391\":1478686417239,\"1023612371893\":1509788624952,\"1023612371899\":1509788624952,\"1023612371902\":1509788624952,\"1007542174085\":1478686804033,\"1023612371847\":1509788624952,\"1023612371845\":1509788624952,\"1021138163478\":1478686417037,\"1021914773852\":1478686417054,\"1021535047610\":1509788624509,\"1023612371855\":1509788624952,\"1010093865427\":1491634246528,\"1022044266764\":1478686417171,\"1021356399117\":1465469681398,\"1015291671424\":1480585069068,\"1023612371862\":1509788624952,\"1010093865434\":1491634246522,\"1021451945170\":1509788624179,\"1021105514806\":1478686417095,\"1010093865433\":1491634246522,\"1022483302228\":1509788624217,\"1022483302227\":1509788624217,\"1022483302226\":1509788624217,\"1023612371870\":1509788624952,\"1022483302225\":1509788624217,\"1025200858590\":1509788625082,\"1021968377214\":1509788625068,\"1023612371779\":1509788624951,\"1023612371777\":1509788624951,\"1017714828236\":1478686804056,\"1023612371785\":1509788624951,\"1002289056343\":1444487341751,\"1023995510176\":1491634246532,\"1019824399621\":1509788624281,\"1023612371790\":1509788624951,\"1023612371792\":1509788624951,\"1023122153864\":1509788624977,\"1021931550859\":1478686416984,\"1022983879109\":1509788625050,\"1025120516770\":1509788624935,\"1000970197330\":1478686804039,\"1023612371755\":1509788624951,\"1017246240676\":1478686804023,\"1023612371760\":1509788624952,\"1023612371767\":1509788624952,\"1022440970499\":1478686417071,\"1023612371764\":1509788624952,\"1023612371770\":1509788624951,\"1023612371769\":1509788624951,\"1023612371775\":1509788624951,\"1023612371772\":1509788624951,\"1021290208942\":1478686417102,\"1020741271522\":1478686417075,\"1023820789630\":1491634246535,\"1018165663841\":1478686804023,\"1021645801939\":1509788624196,\"1024838044166\":1509788624948,\"1010813062715\":1509788624276,\"1022067990763\":1478686804035,\"1020258130697\":1464448510787,\"1021767053593\":1478686417052,\"1021806247796\":1478686416987,\"1020294174380\":1465470268296,\"1022395880289\":1478686417070,\"1021741497440\":1509788624841,\"1000094155429\":1478686804029,\"1023537010542\":1509788624459,\"1022278311030\":1478686417197,\"1025295753368\":1509788624945,\"1413958744\":1444487341719,\"1025736559207\":1508316495865,\"1026232412413\":1514456869770,\"1026232412414\":1514456869769,\"1024936098356\":1509788624437,\"1021982534183\":1509788624614,\"1021741497428\":1509788624863,\"1021741497429\":1509788624863,\"1021741497430\":1509788624825,\"1021741497431\":1509788624848,\"1022848876113\":1509788624326,\"1021741497427\":1509788624863,\"1018923525190\":1509788624282,\"1021741497436\":1509788624842,\"1021741497437\":1509788624841,\"1021741497438\":1509788624841,\"1021741497439\":1509788624841,\"1021741497432\":1509788624842,\"1021741497433\":1509788624842,\"1021741497434\":1509788624842,\"1022247115281\":1478686417195,\"1021074580594\":1478686417093,\"1004730185259\":1444487341756,\"1024919976271\":1509788624987,\"1020940495946\":1478686417084,\"1017808020105\":1478686804026,\"1021545922673\":1478686417113,\"1021608444937\":1478686417116,\"1021713840776\":1509788624400,\"1024481140663\":1509788624298,\"1021245644441\":1478686417100,\"1016779351221\":1478686804065,\"1020258128976\":1464448510786,\"1020811392339\":1478686416998,\"1021871387676\":1509788624394,\"1021715675819\":1478686417123,\"1021715675817\":1478686417123,\"1025295753264\":1509788624945,\"1025839448291\":1509788667844,\"1021629810115\":1509788624396,\"1001015150874\":1478686417022,\"1022052790062\":1478686804068,\"1020881381745\":1478686417079,\"1086806045\":1491634246517,\"1023319825064\":1509788624183,\"1022454994713\":1478686417072,\"1022454994703\":1478686417216,\"1025647039815\":1509788624342,\"1022341353563\":1509788624290,\"1005848176940\":1509788624381,\"1023021754679\":1509788624992,\"1023021754675\":1509788624992,\"1025711261900\":1509788624306,\"1022018710766\":1478686417161,\"1023021754681\":1509788624992,\"1023373827115\":1509788625040,\"1022296267872\":1478686417199,\"1021271986553\":1478686804046,\"1021273821530\":1478686417040,\"1021792091713\":1478686417052,\"1021741497669\":1509788624214,\"1021741497665\":1509788624227,\"1021741497666\":1509788624200,\"1022120026835\":1478686417276,\"1021741497677\":1509788624209,\"1021750541524\":1509788624400,\"1021741497679\":1509788624209,\"1021741497672\":1509788624209,\"4935859997\":1509788624163,\"1021741497684\":1509788624210,\"1025459084224\":1509788624351,\"1021741497686\":1509788624210,\"1021741497687\":1509788624211,\"1021741497680\":1509788624209,\"1021741497681\":1509788624209,\"1021741497682\":1509788624209,\"1017808020430\":1478686804026,\"1021741497689\":1509788624228,\"1021741497690\":1509788624230,\"4935860091\":1509788624163,\"1021984369316\":1478686417263,\"1021984369317\":1478686417264,\"1020898421737\":1478686417032,\"1022848614183\":1509788624393,\"1019386610063\":1509788624320,\"1047078713\":1478686417024,\"1019386610068\":1509788624315,\"1019599748437\":1465470268274,\"1021741497661\":1509788624227,\"1024463052658\":1509788625070,\"1021741497659\":1509788624227,\"1020258129303\":1464448510786,\"1025569575217\":1509788624349,\"1025569575216\":1509788624348,\"1016931015774\":1478686804019,\"1023485761005\":1509788625148,\"1023485761004\":1509788625148,\"1023485761003\":1509788625148,\"1023485761001\":1509788625148,\"1021338178826\":1478686417005,\"1021685921865\":1478686417249,\"1023485761009\":1509788625148,\"1021925521139\":1478686417054,\"1019809982491\":1509788624353,\"1021863391883\":1478686417053,\"1021863391884\":1478686417053,\"1010601514444\":1509788625017,\"1013364025442\":1478686804064,\"1021014941805\":1478686417090,\"1021967067307\":1509788625068,\"1021014941801\":1478686417090,\"4910824715\":1509788624156,\"1021987252739\":1478686417154,\"1018762308573\":1509788624378,\"1022052789813\":1478686804066,\"1023946358472\":1491634246531,\"1026232412417\":1514456869770,\"1026232412419\":1514456869770,\"1022491953271\":1478943089315,\"1023946358470\":1491634246531,\"1026232412420\":1514456869769,\"1023946358469\":1491634246531,\"1025629869736\":1509788624178,\"1025880605149\":1509788667784,\"1022471113444\":1478686417219,\"1019820468459\":1509788625079,\"1018490075200\":1478686804056,\"1022293516173\":1478686417068,\"1025591726327\":1509788625019,\"1025626855123\":1509788624441,\"1021432547542\":1478686804067,\"1025626855124\":1509788624437,\"1004385059015\":1478686804048,\"1016071686216\":1465470268265,\"1025626855108\":1509788624565,\"1023453384776\":1509788624870,\"1022052789708\":1478686804066,\"1023485761071\":1509788624555,\"1025626855088\":1509788624437,\"1023485761070\":1509788624555,\"1025626855091\":1509788624551,\"1023485761069\":1509788624555,\"1023485761064\":1509788624555,\"1023485761084\":1509788624555,\"1022081360497\":1478686417012,\"1025626855081\":1509788624511,\"1025626855057\":1509788625007,\"1017808019615\":1478686804026,\"1025626855068\":1509788624436,\"1018490075199\":1478686804056,\"1020469543460\":1509788624283,\"1020469543461\":1509788624283,\"1020469543462\":1509788624283,\"1020469543463\":1509788624284,\"1020469543459\":1509788624283,\"1459309702\":1444487341729,\"1023485761263\":1509788624854,\"1843754852\":1444487341720,\"1023485761262\":1509788624854,\"1021514468718\":1478686417112,\"1023485761261\":1509788624854,\"1021514468712\":1478686417112,\"1023485761259\":1509788624854,\"1020258129527\":1464448510786,\"1843754861\":1444487341735,\"1020294173729\":1465470268296,\"1843754863\":1444487341744,\"1843754856\":1444487341731,\"1025626855038\":1509788624511,\"1020620946375\":1478686416989,\"1843754866\":1444487341719,\"1459309667\":1444487341747,\"1023485761268\":1509788624854,\"1022326021395\":1478686417068,\"1020780589327\":1478686416991,\"1025758316984\":1509788624343,\"1020891868075\":1509788624930,\"1022299021197\":1478686417287,\"1008833788256\":1480585069066,\"1018636611891\":1509788624971,\"1021339490007\":1509788624437,\"1021917525318\":1478686417054,\"1025906296454\":1509788667448,\"1025508106068\":1509788624340,\"1024134572400\":1509788625016,\"1022066552242\":1478686417175,\"1025508106072\":1509788624339,\"1017808019505\":1478686804026,\"1008667837291\":1478686804026,\"1024362912502\":1509788667460,\"1021025821657\":1478686417035,\"1024362912507\":1509788667820,\"1022156203848\":1509788624959,\"1020294042696\":1465470268284,\"1025608241413\":1509788624837,\"1023485761183\":1509788624218,\"1021982533882\":1509788624271,\"1016760213945\":1478686804016,\"1022244231322\":1478686417195,\"1023485761176\":1509788624218,\"1023485761175\":1509788624218,\"1025428675161\":1509788625109,\"1023485761173\":1509788624218,\"1025428675162\":1509788625117,\"1023485761171\":1509788624218,\"1025608241427\":1509788624837,\"1020469543764\":1509788624284,\"1020469543760\":1509788624284,\"1020469543761\":1509788624284,\"1020469543762\":1509788624284,\"1020469543763\":1509788624284,\"1022052789491\":1478686804066,\"1025608241407\":1509788624837,\"1021729306676\":1509788624986,\"115416571\":1444487341705,\"1017808019930\":1478686804026,\"1021512502570\":1478686416974,\"1021736517628\":1509788624195,\"1018907402308\":1509788624313,\"1025788464665\":1509788624406,\"1025788464664\":1509788624425,\"1025788464663\":1509788624431,\"1022242003336\":1478686417195,\"1025788464662\":1509788624428,\"1022242003338\":1478686417195,\"1007798959785\":1478686804025,\"1021013762693\":1478686417231,\"1021982533966\":1509788624271,\"1021327167612\":1465470268215,\"1022483303266\":1509788624853,\"1021934693251\":1509788624849,\"1022620271462\":1509788625062,\"1018546699674\":1480585069063,\"1025628952507\":1509788624233,\"1021124256803\":1478686417002,\"1022483303260\":1509788624853,\"1022483303259\":1509788624853,\"1022483303258\":1509788624852,\"1021934693271\":1509788624869,\"1019596603169\":1509788624933,\"1020258129777\":1464448510787,\"1022233221808\":1478686417282,\"1018044420941\":1509788624372,\"1024797147613\":1509788625020,\"1022138902345\":1478686417184,\"1021627057912\":1478686417247,\"1023485761485\":1509788624446,\"1023485761484\":1509788624446,\"1023485761483\":1509788624446,\"1023485761482\":1509788624446,\"1022315797901\":1478686417068,\"1023485761481\":1509788624446,\"1021918049355\":1509788624864,\"1022315797913\":1478686417068,\"1018850911072\":1509788625079,\"1021918049361\":1509788624849,\"1025702480892\":1509788667778,\"1025702480891\":1509788667779,\"1022315797918\":1478686417068,\"1021747527606\":1478686417254,\"1024929544609\":1509788624426,\"1021211434965\":1478686804033,\"1022235712220\":1478686417193,\"1015868267860\":1465470268314,\"1459702994\":1444487341733,\"1022848875961\":1509788624326,\"1016845818763\":1509788624367,\"1022227847863\":1478686417282,\"4564126698\":1465469681390,\"1520910662\":1478686804029,\"1021982534114\":1509788624614,\"1021303443817\":1509788624171,\"1022456566827\":1478686417216,\"1025784139388\":1509788624351,\"1025221699832\":1509788625007,\"1020882037328\":1478686417227,\"1023861684725\":1491634246533,\"1021029490944\":1478686416980,\"1017808019727\":1478686804026,\"1021980174803\":1478686417151,\"1021980174800\":1478686417151,\"1024187788616\":1509788625168,\"1022400337697\":1478686804067,\"1021692345716\":1509788624920,\"1022883214458\":1509788624381,\"1025702480970\":1509788667416,\"1025530649226\":1509788624867,\"1022052789235\":1478686804066,\"1025702480965\":1509788667415,\"1025702480962\":1509788667417,\"1022701273439\":1509788624972,\"1025702480961\":1509788667413,\"1021791173507\":1478686417129,\"1025702480990\":1509788667422,\"1025702480987\":1509788667416,\"1014261955139\":1480585069073,\"1021791173509\":1478686417129,\"1025702480984\":1509788667416,\"1021581576183\":1478686804066,\"1023846350131\":1491634246537,\"1021771643547\":1480585069071,\"1018490076790\":1478686804059,\"1018490076791\":1478686804059,\"1023021755419\":1509788624992,\"1024008877933\":1509788667493,\"1021768366817\":1478686417052,\"4997854667\":1509788667392,\"1025702481023\":1509788667575,\"1025530649276\":1509788624865,\"1025702481022\":1509788667575,\"1021709647485\":1509788624814,\"1025530649278\":1509788624864,\"1023444080351\":1509788624960,\"1025530649272\":1509788624916,\"1025530649269\":1509788624916,\"1023878725438\":1491634246530,\"1025530649292\":1509788624841,\"1025702480910\":1509788667679,\"1025530649289\":1509788624848,\"1025702480906\":1509788667679,\"1025702480905\":1509788667691,\"1025702480903\":1509788667668,\"1025530649287\":1509788624848,\"1009380171547\":1509788624353,\"1025702480926\":1509788667719,\"1025702480925\":1509788667678,\"1009120700664\":1478686804025,\"1025702480920\":1509788667679,\"1025530649297\":1509788624841,\"1025702480912\":1509788667679,\"1025530649325\":1509788624826,\"1025530649324\":1509788624868,\"1025530649327\":1509788624822,\"1025530649326\":1509788624867,\"1025530649321\":1509788624841,\"1025530649319\":1509788624841,\"1025530649312\":1509788624841,\"1021709647392\":1509788624193,\"1025702480957\":1509788667435,\"1025702480956\":1509788667436,\"1024597398101\":1509788624939,\"1013235447064\":1478686804034,\"1025530649329\":1509788624836,\"1018908583743\":1509788625019,\"1014873020233\":1509788625127,\"1025530649100\":1509788624565,\"1012721636992\":1478686417074,\"1025508366690\":1509788624177,\"1025530649097\":1509788624611,\"1021253114630\":1465469681395,\"1014873020225\":1509788625127,\"1025530649091\":1509788624611,\"1025530649117\":1509788624552,\"1022441493055\":1478686417295,\"1012615076080\":1478686804049,\"1014873020254\":1509788625127,\"1021259406267\":1478686417101,\"1014873020242\":1509788625127,\"1025593562705\":1509788624833,\"1022775737948\":1509788624825,\"1025593562704\":1509788624829,\"1021610541256\":1478686417116,\"1025593562707\":1509788624800,\"1025593562706\":1509788624824,\"1025530649132\":1509788624547,\"1014873020264\":1509788625242,\"1014873020267\":1509788625171,\"1025530649130\":1509788624547,\"1025593562725\":1509788624198,\"1025593562724\":1509788624204,\"1025593562727\":1509788624186,\"1018656534766\":1509788624321,\"1025593562726\":1509788624201,\"1014873020258\":1509788625127,\"1014873020260\":1509788625127,\"1025530649123\":1509788624547,\"1020878499162\":1509788624934,\"1025530649149\":1509788624539,\"1022400337814\":1478686804067,\"1025530649142\":1509788624547,\"1025344251669\":1509788624183,\"1022341354521\":1509788624290,\"1025572983995\":1509788624304,\"1025530649136\":1509788624547,\"1021928797152\":1509788624974,\"1019916282861\":1478686804057,\"1025609815860\":1509788624341,\"1020258127920\":1464448510786,\"1025702481035\":1509788667523,\"1025702481031\":1509788667523,\"1025702481030\":1509788667523,\"1022115702512\":1478686416973,\"1025702481028\":1509788667517,\"1025530649153\":1509788624536,\"1025530649152\":1509788624566,\"1026232151059\":1514456869770,\"1025702481024\":1509788667534,\"1008568749914\":1478686804030,\"1021242104570\":1478686417100,\"1021242104572\":1478686417100,\"1025702481048\":1509788667540,\"1020469544076\":1509788624283,\"1021495593429\":1478686417111,\"1020469544077\":1509788624283,\"1025009236858\":1509788624332,\"1020220118507\":1478686804018,\"1020469544073\":1509788624283,\"1020649652038\":1478686417028,\"1020469544074\":1509788624283,\"1025702481041\":1509788667523,\"1020469544075\":1509788624283,\"1014873020201\":1509788625128,\"1025530649199\":1509788624848,\"1022179533482\":1509788624920,\"1025530649188\":1509788624916,\"1014873020192\":1509788625245,\"1025530649191\":1509788624865,\"1014873020195\":1509788625244,\"1025530649185\":1509788624916,\"1021559948712\":1478686417113,\"1021581575966\":1478686804066,\"1025530649214\":1509788624841,\"1025530649208\":1509788624841,\"1019835412214\":1509788625077,\"1025530649210\":1509788624841,\"1014873020222\":1509788625110,\"1021981748942\":1509788624456,\"1020878499086\":1509788624934,\"1022296398216\":1478686417068,\"1014873020213\":1509788625128,\"1021514468113\":1478686417047,\"1021354299750\":1465470268230,\"1021453782667\":1509788624399,\"1025593563077\":1509788624425,\"1025593563076\":1509788624431,\"1025593563078\":1509788624407,\"1025593563075\":1509788624428,\"1020469544260\":1509788624285,\"1020006588636\":1509788625076,\"1024187788196\":1509788624229,\"1020469544256\":1509788624285,\"1022883214701\":1509788624385,\"1020469544257\":1509788624285,\"1022883214700\":1509788624385,\"1020469544258\":1509788624285,\"1020469544259\":1509788624285,\"1025400087406\":1509788624293,\"148575687\":1444487341703,\"1022270183875\":1480585069091,\"1022270183874\":1480585069091,\"1022270183873\":1480585069091,\"1022270183879\":1480585069092,\"1023670569551\":1509788625001,\"1022270183878\":1480585069091,\"1022270183877\":1480585069091,\"1022270183876\":1480585069091,\"1022270183882\":1480585069092,\"1022270183881\":1480585069092,\"1022270183887\":1480585069092,\"1022270183886\":1480585069092,\"1022270183885\":1480585069092,\"1019164972842\":1465470268273,\"1024519935999\":1509788624854,\"1020615048368\":1478686417027,\"1025507187026\":1509788624344,\"1025507187025\":1509788624338,\"1025702481163\":1509788667993,\"1021194264128\":1478686416987,\"1025507187028\":1509788624337,\"1025702481157\":1509788667994,\"1025702481182\":1509788667922,\"1025702481179\":1509788667922,\"1025702481178\":1509788667922,\"1025702481176\":1509788667931,\"1025702481173\":1509788667912,\"1025702481171\":1509788667948,\"1021290468394\":1478686416982,\"1021503458260\":1478686417046,\"1022367831123\":1478686417289,\"1021981749076\":1509788624198,\"1024767264111\":1509788667499,\"1025702481190\":1509788667951,\"1022044924696\":1478686417171,\"1021626400823\":1509788624396,\"1021950553451\":1478686417056,\"1016530448506\":1478686804020,\"1017124080839\":1478686804024,\"1021950553455\":1478686417056,\"1024767264112\":1509788667499,\"1019287523115\":1509788624312,\"1021137640942\":1478686417096,\"1004787330204\":1480585069067,\"1020087868548\":1509788624389,\"1019953505419\":1509788624323,\"1025593562964\":1509788624524,\"1025593562961\":1509788624540,\"1025593562963\":1509788624537,\"1025593562962\":1509788624543,\"1022466921099\":1478686417299,\"1025530649391\":1509788624865,\"1020258128215\":1464448510786,\"1025530649384\":1509788624916,\"1025530649387\":1509788624865,\"1025530649382\":1509788624916,\"1024193162229\":1509788625034,\"1025530649406\":1509788624841,\"1025530649395\":1509788624848,\"1022780456742\":1509788624462,\"1023572135048\":1509788624974,\"1025530649417\":1509788624841,\"1018246793503\":1509788625020,\"1023201584802\":1509788624406,\"1024108620944\":1509788624427,\"1000603116948\":1478686804023,\"1024136408651\":1509788667499,\"1024136408650\":1509788667499,\"1022254194177\":1509788624363,\"1025810090514\":1509788667447,\"1012615076451\":1478686804049,\"1025530648704\":1509788625129,\"1025608504825\":1509788624540,\"1022085556215\":1478686417062,\"1025608504827\":1509788624537,\"1012165621565\":1478686417025,\"1025608504826\":1509788624542,\"1025608504828\":1509788624523,\"1017038623426\":1478686804040,\"1025876280332\":1509788667406,\"1025530648751\":1509788624611,\"1022327724478\":1478686417288,\"275713627\":1478686804024,\"1025530648759\":1509788624565,\"1025530648753\":1509788624611,\"1012165621523\":1478686417025,\"1019419378826\":1465470268273,\"1025608504751\":1509788624204,\"1025608504750\":1509788624200,\"1025530648774\":1509788624552,\"1021441723414\":1478686417241,\"1021441723415\":1478686417241,\"1021441723412\":1478686417241,\"1021441723413\":1478686417241,\"1021441723411\":1478686417241,\"1020294172912\":1465470268295,\"1025608504752\":1509788624198,\"1021441723420\":1478686417241,\"1025608504755\":1509788624186,\"1025530648790\":1509788624547,\"1021441723418\":1478686417241,\"1021441723419\":1478686417241,\"1021441723416\":1478686417241,\"1021441723417\":1478686417241,\"1025530648813\":1509788624548,\"1021703617736\":1478686417050,\"1025530648809\":1509788624548,\"1025530648808\":1509788624548,\"1025530648804\":1509788624547,\"1025530648800\":1509788624547,\"492766001\":1478686804029,\"1025530648829\":1509788624566,\"1025911407498\":1509788667466,\"1025530648831\":1509788624539,\"844573731\":1491634246511,\"1025762118329\":1509788667888,\"1022104822951\":1478686417182,\"1022314747942\":1478686417287,\"1024778668026\":1509788625166,\"1025788464038\":1509788624745,\"1025788464036\":1509788624822,\"1021889475386\":1478686417258,\"1025788464035\":1509788624831,\"1025530648577\":1509788625244,\"1025788464034\":1509788624827,\"1023329787209\":1509788625040,\"1025530648607\":1509788625134,\"1025530648603\":1509788625134,\"1025530648602\":1509788625134,\"278859271\":1478686804054,\"1020258128488\":1464448510786,\"1024196831379\":1509788624273,\"1022775999612\":1509788624439,\"1025530648623\":1509788625129,\"1025530648622\":1509788625105,\"1021653926169\":1478686417050,\"1025530648619\":1509788625169,\"1012615076558\":1478686804049,\"1025530648614\":1509788625135,\"1023308292015\":1509788624193,\"1025530648611\":1509788625134,\"1024735414433\":1509788667507,\"1021709647096\":1509788624419,\"1024735414436\":1509788667507,\"1018948034653\":1509788624313,\"1012968966128\":1478686417224,\"1025530648653\":1509788625244,\"1025530648652\":1509788625243,\"1025530648654\":1509788625166,\"1022453682389\":1478686417297,\"1021963792364\":1478686417148,\"1025788464101\":1509788625087,\"1017168252372\":1478686804040,\"1002079604412\":1478686804033,\"1025788464099\":1509788625106,\"1017876832270\":1478686804017,\"1025788464098\":1509788625122,\"1025788464097\":1509788625114,\"1025530648669\":1509788625134,\"1024031028028\":1509788624467,\"1025530648667\":1509788625134,\"1025530648661\":1509788625143,\"1021323629974\":1465470268210,\"1021323629975\":1465470268211,\"1025530648656\":1509788625166,\"1025530648659\":1509788625144,\"1025530648658\":1509788625164,\"1025530648685\":1509788625112,\"1025530648684\":1509788625169,\"1021301740636\":1480585069071,\"1025530648687\":1509788625167,\"1024132476167\":1509788624327,\"1025530648680\":1509788625134,\"1022238858279\":1509788624946,\"1022238858281\":1509788624930,\"1025530648677\":1509788625134,\"1021445917932\":1478686417107,\"1022238858283\":1509788624930,\"1022238858282\":1509788624930,\"1025530648673\":1509788625134,\"1022144537228\":1478686417277,\"1021730618877\":1478686417051,\"1022363899832\":1478686417203,\"1021681598191\":1509788624404,\"1022144537237\":1478686417277,\"1022179532977\":1509788624920,\"1022453682414\":1478686417297,\"1025530648688\":1509788625105,\"1500071528\":1444487341741,\"1018974249078\":1509788624313,\"1025645335262\":1509788624431,\"1022067992606\":1478686804035,\"1021398339572\":1509788624399,\"1022067992607\":1478686804035,\"1025530648991\":1509788624510,\"1025530648987\":1509788624509,\"1023791939891\":1509788624960,\"1021514074379\":1509788624398,\"1025530649006\":1509788624440,\"1025530649001\":1509788624451,\"1022238727655\":1509788624947,\"1021662052357\":1478686417120,\"1022238727658\":1509788624931,\"1025169796901\":1509788624393,\"1022238727657\":1509788624931,\"1022238727660\":1509788624941,\"1022067992610\":1478686804072,\"1025530649021\":1509788624436,\"1022447915386\":1480585069095,\"4818403331\":1509788624156,\"1022067992608\":1478686804035,\"1024187787652\":1509788624867,\"1022447915391\":1480585069095,\"1022447915390\":1480585069095,\"1022447915389\":1480585069095,\"1022447915388\":1480585069095,\"1025645335264\":1509788624406,\"1021015991965\":1478686417090,\"1022447915376\":1480585069095,\"1022447915383\":1480585069095,\"1022447915381\":1480585069095,\"1012615076699\":1478686804049,\"1022447915380\":1480585069095,\"1025530649010\":1509788624436,\"1025530649037\":1509788624427,\"1025530649036\":1509788624455,\"1025530649039\":1509788624454,\"1021237516762\":1478686417099,\"1025530649028\":1509788624436,\"1016299503501\":1480585069062,\"1025530649030\":1509788624436,\"1025530649025\":1509788624436,\"1021559293455\":1478686417008,\"1021303182802\":1465470268202,\"1025907737445\":1509788667460,\"1025907737444\":1509788667464,\"1025596839393\":1509788624929,\"1025596839392\":1509788624929,\"1025530649040\":1509788624424,\"1022042302917\":1478686417170,\"1020258128787\":1464448510786,\"1023419832089\":1509788625039,\"1020997511087\":1478686417088,\"1025788463703\":1509788624523,\"1025788463702\":1509788624537,\"1025788463701\":1509788624542,\"1025788463700\":1509788624540,\"1023716312401\":1491634246528,\"1025628951376\":1509788624232,\"1024283337572\":1509788624326,\"1021301740860\":1480585069071,\"1025530648840\":1509788624544,\"1025010677772\":1509788624506,\"1025530648836\":1509788624566,\"1025530648838\":1509788624536,\"1022204518208\":1478686417190,\"1015391679858\":1509788625083,\"1025628951362\":1509788624232,\"1025628951364\":1509788624232,\"1022052788332\":1478686804065,\"1025628951367\":1509788624232,\"1025628951368\":1509788624232,\"1025628951372\":1509788624232,\"1021741497284\":1509788624840,\"1025530648876\":1509788624509,\"1021741497281\":1509788624840,\"1021741497292\":1509788624841,\"1021741497293\":1509788624842,\"1021741497294\":1509788624843,\"1021741497289\":1509788624840,\"1021741497290\":1509788624840,\"1025109635604\":1509788624308,\"1025278715907\":1509788624461,\"1021741497303\":1509788624868,\"1025530648888\":1509788624452,\"1025048819443\":1509788624276,\"1021741497299\":1509788624866,\"693319400\":1444487341708,\"1020971166158\":1478686417086,\"1025109635609\":1509788624308,\"1025530648881\":1509788624510,\"1020971166157\":1478686417086,\"1025109635610\":1509788624308,\"1022447915403\":1480585069095,\"1022447915402\":1480585069095,\"1022447915401\":1480585069095,\"1022447915400\":1480585069095,\"1022447915407\":1480585069095,\"1018468712031\":1478686804034,\"1022447915404\":1480585069095,\"1021208288228\":1478686804027,\"1025714802299\":1509788624469,\"1022447915393\":1480585069095,\"139663256\":1444487341736,\"1025530648902\":1509788624440,\"1022447915399\":1480585069095,\"1025530648897\":1509788624451,\"1022447915396\":1480585069095,\"1021741497270\":1509788624863,\"1025530648926\":1509788624436,\"1021741497271\":1509788624863,\"1025530648920\":1509788624436,\"1012165621494\":1478686417025,\"1022447915408\":1480585069095,\"1021741497279\":1509788624840,\"1021741497272\":1509788624863,\"1000927466713\":1478686804028,\"1021741497273\":1509788624825,\"1021741497274\":1509788624848,\"1021741497275\":1509788624840,\"1021976767872\":1478686417263,\"1022359049813\":1478686417289,\"1025530648942\":1509788624455,\"1025628951349\":1509788624233,\"1025628951353\":1509788624233,\"1025628951352\":1509788624233,\"1025530648932\":1509788624436,\"1025628951354\":1509788624232,\"1025628951356\":1509788624232,\"1015969584002\":1480585069071,\"1025628951358\":1509788624232,\"1025530648930\":1509788624436,\"1025530648952\":1509788624434,\"1025530648949\":1509788624424,\"1021325202605\":1478686417238,\"1021325202606\":1478686417238,\"1021778983380\":1478686417052,\"1021325202602\":1478686417238,\"1021088865610\":1478686417094,\"1025709568487\":1509788667888,\"1025709568486\":1509788667888,\"1018085452405\":1480585069073,\"1024186996403\":1509788624470,\"1024781171023\":1509788624452,\"1024292904047\":1509788667902,\"1021445272124\":1478686417107,\"1023958141047\":1509788667535,\"1021221135707\":1478686417235,\"1021741089883\":1478686417125,\"1022241743500\":1478686417066,\"1025003193892\":1509788624462,\"1022241743502\":1478686417066,\"1021340281906\":1478686417103,\"1021340281915\":1478686417103,\"1021340281913\":1478686417103,\"1021376458337\":1478686417105,\"1021340281918\":1478686417103,\"1021340281916\":1478686417103,\"1021745677419\":1478686417126,\"1363112301\":1478686417020,\"1016301584624\":1480585069066,\"1020294049524\":1465470268284,\"1025891236693\":1509788667458,\"1021340281901\":1478686417103,\"1021429674305\":1509788624399,\"1024579054874\":1509788624925,\"1363112282\":1478686417020,\"1023062381506\":1509788624533,\"1025607199348\":1509788624915,\"1022143225062\":1478686417184,\"1021589060582\":1509788624397,\"1025607199328\":1509788624836,\"1025627122765\":1509788624553,\"360265208\":1478686417018,\"1025627122764\":1509788624441,\"1024879476732\":1509788624478,\"1025627122767\":1509788624553,\"1024879476734\":1509788624478,\"1025627122766\":1509788624553,\"1024879476729\":1509788624478,\"1024879476728\":1509788624478,\"1021389828088\":1478686417105,\"1025627122763\":1509788624553,\"1024879476725\":1509788624478,\"1024879476727\":1509788624478,\"1022235320732\":1478686417193,\"1024073879533\":1491634246514,\"1025880750883\":1509788667811,\"1021165036110\":1478686417003,\"1025407164263\":1509788624461,\"1021934030975\":1478686804039,\"1025627122777\":1509788624553,\"1025627122778\":1509788624441,\"1025627122769\":1509788624441,\"1025881537343\":1509788667466,\"1025627122771\":1509788624441,\"1020258135149\":1464448510787,\"1025627122770\":1509788624441,\"1024687060053\":1509788624448,\"1024687060048\":1509788624448,\"1024687060051\":1509788624448,\"1024687060050\":1509788624448,\"1013150630945\":1478686804032,\"1025908931763\":1509788667465,\"1024687060047\":1509788624448,\"1022060124073\":1509788624958,\"1019448490998\":1478686804020,\"1021944123575\":1478686417144,\"1021121634225\":1478686417233,\"1024412984293\":1509788624430,\"1021709238945\":1478686417122,\"1021121634223\":1478686417233,\"1710048570\":1478686417024,\"1020007505183\":1478686804050,\"1020007505184\":1478686804050,\"1025881537345\":1509788667443,\"1017064058293\":1478686804019,\"1021300828737\":1478686417004,\"1015868270198\":1465470268314,\"1363112402\":1478686417020,\"1020801682566\":1478686417031,\"1024528460472\":1509788624237,\"1023932057345\":1491634246530,\"1023932057344\":1491634246530,\"1021813180629\":1478686417052,\"1024528460470\":1509788624237,\"1025018267191\":1509788624474,\"1025018267189\":1509788624473,\"1025018267188\":1509788624473,\"1023561658605\":1509788624530,\"1025018267186\":1509788624474,\"1025018267185\":1509788624474,\"1023561658607\":1509788624530,\"1025018267184\":1509788624474,\"1025018267199\":1509788624473,\"1023932057340\":1491634246529,\"1025018267198\":1509788624474,\"1022423411915\":1478686417210,\"1025018267197\":1509788624473,\"1025018267196\":1509788624474,\"1022304397301\":1478686417287,\"1025018267195\":1509788624474,\"1025018267194\":1509788624474,\"1022021850332\":1509788624463,\"1025018267192\":1509788624473,\"1023561658598\":1509788624530,\"1024687453663\":1509788624563,\"1024687453662\":1509788624563,\"1025018267173\":1509788624474,\"1024687453661\":1509788624563,\"1025018267172\":1509788624474,\"1024687453660\":1509788624563,\"1025018267171\":1509788624474,\"1025018267170\":1509788624474,\"1024687453658\":1509788624563,\"1024460302191\":1509788625070,\"1022633654350\":1480585069131,\"1025018267183\":1509788624473,\"1023561658609\":1509788624530,\"1025018267181\":1509788624473,\"1025018267180\":1509788624473,\"147794387\":1444487341749,\"1025018267179\":1509788624473,\"1025018267178\":1509788624474,\"1025018267176\":1509788624474,\"1017876832225\":1478686804018,\"1022966041675\":1509788625073,\"1009848499809\":1491634246513,\"1018346552293\":1478686804026,\"1025018267167\":1509788624473,\"1018346552297\":1478686804020,\"1025896611318\":1509788667443,\"1022342539678\":1509788625018,\"1025018267143\":1509788624479,\"1025018267142\":1509788624479,\"1020907852550\":1478686417080,\"1025018267140\":1509788624479,\"1024547990027\":1509788625070,\"1025702490490\":1509788624864,\"1025018267137\":1509788624479,\"1025702490488\":1509788624864,\"1025702490487\":1509788624916,\"1023251390301\":1509788625083,\"1017876832248\":1478686804015,\"1025702490483\":1509788624916,\"1020907852553\":1478686417080,\"1017990030652\":1478686804031,\"1025018267145\":1509788624479,\"1025018267144\":1509788624479,\"1025018267255\":1509788624474,\"1024688108933\":1509788624503,\"1025018267254\":1509788624474,\"1024687453582\":1509788625160,\"1022458015379\":1478686417072,\"1022633654298\":1480585069131,\"1025018267251\":1509788624474,\"1025018267250\":1509788624474,\"1024687453578\":1509788625160,\"1025018267249\":1509788624474,\"1024687453577\":1509788625160,\"1025018267248\":1509788624474,\"1024687453576\":1509788625160,\"1025018267263\":1509788624474,\"1024687453575\":1509788625160,\"1025018267262\":1509788624474,\"1025018267261\":1509788624474,\"1024597667683\":1509788624938,\"1021275793766\":1478686417004,\"1025018267259\":1509788624474,\"1025018267258\":1509788624474,\"1025018267257\":1509788624474,\"1025018267256\":1509788624474,\"1022633654280\":1480585069117,\"1023308292176\":1509788624814,\"1025018267247\":1509788624474,\"1024215307849\":1509788624587,\"1022633654274\":1480585069149,\"1022270317953\":1480585069092,\"1022270317955\":1480585069092,\"1022270317957\":1480585069092,\"1022270317956\":1480585069092,\"1022633654332\":1480585069131,\"1022633654321\":1480585069117,\"1021248792236\":1478686417236,\"1009931715866\":1478686804025,\"1022633654313\":1480585069131,\"1022453428069\":1478686417296,\"1022633654319\":1480585069131,\"1025018267200\":1509788624474,\"1019935152458\":1509788624393,\"1590919087\":1478686804029,\"1020258135410\":1464448510787,\"360264953\":1478686417044,\"1022010709497\":1478686417159,\"1024895713764\":1509788624303,\"1024895713766\":1509788624303,\"1024895713761\":1509788624303,\"1025810101856\":1509788667449,\"1024895713763\":1509788624303,\"1022939957917\":1509788624992,\"1025702490590\":1509788624269,\"1025702490589\":1509788624270,\"1022010709483\":1478686417159,\"1022474531137\":1478943089536,\"1023109699439\":1509788625046,\"1020554362045\":1478686416995,\"1022270317947\":1480585069092,\"1022270317948\":1480585069092,\"870257279\":1478686417020,\"1021248792164\":1478686417236,\"1025702490605\":1509788624215,\"1024688108903\":1509788624503,\"1025906048399\":1509788667444,\"1025018267283\":1509788624474,\"1025018267282\":1509788624474,\"1026318652432\":1514456869766,\"1012160366648\":1478686416994,\"1025018267281\":1509788624474,\"1024895713741\":1509788624303,\"1024688108908\":1509788624503,\"1025702490595\":1509788624227,\"1024895713737\":1509788624303,\"1025018267271\":1509788624474,\"1025702490622\":1509788624207,\"1025018267270\":1509788624474,\"1025018267269\":1509788624474,\"1024688108912\":1509788624503,\"1024895713746\":1509788624303,\"870257254\":1478686417020,\"1025702490614\":1509788624207,\"1025018267278\":1509788624474,\"1024895713758\":1509788624303,\"1025018267274\":1509788624474,\"1025018267273\":1509788624474,\"1025018267272\":1509788624474,\"1020870889869\":1465469681399,\"1020615557190\":1478686417027,\"1023308292293\":1509788624419,\"1021817374763\":1478686417132,\"1021603609964\":1478686417008,\"1025702490524\":1509788624838,\"1024363176442\":1509788624278,\"1025782576208\":1509788624294,\"1025702490518\":1509788624838,\"1025702490516\":1509788624838,\"1021568744246\":1478686417114,\"1022040856420\":1478686417170,\"1025702490533\":1509788624868,\"1022040856419\":1478686417170,\"1025702490528\":1509788624838,\"1016758770323\":1465470268315,\"1025042384979\":1509788625204,\"1022196309694\":1478686417280,\"1025702490700\":1509788625165,\"1025702490698\":1509788625244,\"1025702490697\":1509788625245,\"1000526173921\":1444487341714,\"1025784018843\":1509788624350,\"1025018266943\":1509788625188,\"1022455393776\":1478686417016,\"1023855378542\":1491634246537,\"1025018266941\":1509788625188,\"4786306884\":1509788624162,\"1025018266939\":1509788625187,\"1025784018845\":1509788624350,\"1012335350045\":1509788625017,\"1022455393774\":1478686417016,\"1021493114742\":1478686417111,\"1025018266903\":1509788625179,\"1025018266901\":1509788625178,\"1012126287267\":1478686417073,\"1025018266898\":1509788625179,\"1021974270124\":1509788624994,\"1025702490727\":1509788625130,\"1021743973995\":1478686417126,\"1025702490723\":1509788625130,\"1021974270121\":1509788624994,\"1021743973997\":1478686417126,\"1021974270123\":1509788624994,\"1022876257011\":1509788625079,\"1020907196435\":1478686417032,\"1025018266886\":1509788625178,\"1020907196433\":1478686417032,\"1022159478701\":1478686417278,\"1021137379934\":1478686417095,\"1024781171565\":1509788624452,\"1025018266883\":1509788625180,\"1025784018852\":1509788624350,\"1025018266894\":1509788625178,\"1025018266892\":1509788625179,\"1022370064594\":1478686417069,\"1025018266890\":1509788625179,\"1021716578782\":1509788624396,\"1025018266889\":1509788625179,\"1009849285985\":1509788624986,\"1025018266998\":1509788625187,\"1013781440699\":1478686804019,\"1025702490637\":1509788624230,\"1012134544709\":1478686417223,\"4998761399\":1509788667393,\"1025018266993\":1509788625187,\"1024363176548\":1509788624278,\"1025018267007\":1509788625188,\"1025018267006\":1509788625187,\"1025018267005\":1509788625188,\"1025018267004\":1509788625188,\"1025702490627\":1509788624207,\"1025018267003\":1509788625188,\"1025018267002\":1509788625187,\"1025018267001\":1509788625188,\"1025018266982\":1509788625187,\"1022338476707\":1478686417202,\"1020258135713\":1464448510787,\"1022517784690\":1509788624827,\"1025018266976\":1509788625187,\"1016399627415\":1480585069069,\"1025018266990\":1509788625188,\"1025018266989\":1509788625188,\"1025880750581\":1509788667811,\"1025018266966\":1509788625187,\"1010024515759\":1491634246521,\"1025018266964\":1509788625187,\"1025018266963\":1509788625188,\"1025018266960\":1509788625188,\"1025018266975\":1509788625187,\"1011579724867\":1478950494939,\"1025018266950\":1509788625188,\"1025018266945\":1509788625188,\"117384323\":1444487341703,\"1010024515761\":1491634246521,\"1025018267063\":1509788625189,\"1025018267061\":1509788625189,\"1025323276394\":1509788624304,\"1025018267060\":1509788625189,\"1025018267059\":1509788625188,\"1016957363467\":1478686804031,\"1025018267057\":1509788625189,\"1022723702140\":1509788624394,\"1025018267071\":1509788625188,\"1025018267069\":1509788625189,\"1019527774961\":1509788624317,\"1025018267068\":1509788625190,\"1025018267067\":1509788625190,\"1025018267065\":1509788625188,\"1025018267064\":1509788625190,\"1024363176627\":1509788624278,\"1025018267047\":1509788625190,\"360265706\":1478686417018,\"1025018267044\":1509788625190,\"1022020409168\":1478686417266,\"1019527774956\":1509788624313,\"1025018267041\":1509788625190,\"1021927476709\":1478686417142,\"1025018267054\":1509788625189,\"1025018267053\":1509788625189,\"1025792276361\":1509788624349,\"1025018267049\":1509788625189,\"1690781272\":1444487341744,\"1012160367361\":1478686416994,\"1025018267048\":1509788625188,\"1022849123520\":1509788624325,\"1021774775498\":1478686416983,\"1021974269996\":1509788624983,\"1025018267039\":1509788625190,\"1020542697297\":1509788624321,\"1021974269997\":1509788624983,\"1025018267038\":1509788625190,\"1025018267037\":1509788625190,\"1021974269999\":1509788624983,\"444938280\":1444487341745,\"1022414106337\":1478686417070,\"1022594856231\":1509788624383,\"1021974269995\":1509788624983,\"1025018267032\":1509788625188,\"1022226408238\":1478686416981,\"1021974270005\":1509788624983,\"1021974270007\":1509788624983,\"1021974270001\":1509788624983,\"1021974270002\":1509788624983,\"1025018267009\":1509788625188,\"1021974270003\":1509788624983,\"1025018267008\":1509788625187,\"1024215307691\":1509788624587,\"1022226408226\":1478686416981,\"1021974270011\":1509788624983,\"1025018267127\":1509788624479,\"1021974270020\":1509788624983,\"1025018267126\":1509788624479,\"1025018267125\":1509788624479,\"1021974270022\":1509788624983,\"1025018267123\":1509788624479,\"1021974270017\":1509788624983,\"1025018267121\":1509788624479,\"1025018267134\":1509788624480,\"1008666016524\":1478686804034,\"1025018267132\":1509788624479,\"1021974270024\":1509788624983,\"1016779087584\":1478686804017,\"1025018267129\":1509788624480,\"1022849123502\":1509788624325,\"1025018267111\":1509788624479,\"1025018267109\":1509788624479,\"1023431109379\":1509788625084,\"1022849123506\":1509788624326,\"1025018267108\":1509788624479,\"1025018267106\":1509788624479,\"1025018267105\":1509788624479,\"1025018267104\":1509788624479,\"1022457752844\":1480585069117,\"1025018267115\":1509788624479,\"1022849123516\":1509788624329,\"1021719855372\":1478686417123,\"1025018267103\":1509788624479,\"1025018267102\":1509788624480,\"1025018267101\":1509788624480,\"1025018267100\":1509788624479,\"1024299851527\":1509788624295,\"4564136677\":1465469681387,\"1025018267076\":1509788625189,\"1025018267075\":1509788625188,\"1003492181719\":1478686417220,\"1025018267074\":1509788625189,\"1025018266679\":1509788624245,\"1022457752788\":1480585069117,\"1025018266678\":1509788624245,\"1025018266677\":1509788624245,\"4998761206\":1509788667393,\"1025018266673\":1509788624245,\"1025627123659\":1509788624433,\"1025018266687\":1509788624245,\"1025018266686\":1509788624245,\"1025018266682\":1509788624246,\"1025018266680\":1509788624246,\"1021259408438\":1465470268199,\"1025018266657\":1509788624246,\"1025627123674\":1509788624433,\"1021259408440\":1465470268199,\"1021934425084\":1509788624464,\"1025018266670\":1509788624245,\"1020917944510\":1478686417081,\"1025018266644\":1509788624246,\"1025018266642\":1509788624246,\"1025018266640\":1509788624246,\"1363112471\":1478686417020,\"1025018266655\":1509788624246,\"1019761085883\":1509788624315,\"1022426558111\":1478686417294,\"1010024516093\":1491634246526,\"678628166\":1444487341748,\"1024897942388\":1509788625023,\"1023995103499\":1491634246532,\"1025018266639\":1509788624246,\"1025018266638\":1509788624245,\"1025018266743\":1509788624247,\"1024274815015\":1509788624281,\"1008672176673\":1509788624361,\"1025018266741\":1509788624247,\"1025018266737\":1509788624247,\"1021817375397\":1478686417132,\"1024528460033\":1509788624237,\"1025018266751\":1509788624246,\"1019073095385\":1465470268236,\"1025018266750\":1509788624246,\"1022393264327\":1478686417206,\"1024528460035\":1509788624237,\"1025018266748\":1509788624246,\"1023453391153\":1509788625170,\"1024528460036\":1509788624237,\"1025018266746\":1509788624246,\"1025018266744\":1509788624247,\"1021122026528\":1478686417233,\"1022723833004\":1509788624399,\"1020580838638\":1478686417027,\"1025018266735\":1509788624247,\"1025018266734\":1509788624247,\"1020580838637\":1478686417027,\"1025018266730\":1509788624246,\"1020258135952\":1464448510787,\"1025322359411\":1509788624306,\"1025018266706\":1509788624246,\"1025628958646\":1509788624460,\"1481079592\":1491634246533,\"1025018266695\":1509788624245,\"1025018266694\":1509788624246,\"1025018266693\":1509788624246,\"1025018266692\":1509788624246,\"1021331238796\":1478686417103,\"1025018266690\":1509788624245,\"1025018266689\":1509788624246,\"1023958141744\":1509788667535,\"1025018266703\":1509788624245,\"1022155284133\":1478686417063,\"1025018266700\":1509788624246,\"1014617020559\":1465470268319,\"1001962433268\":1478686417024,\"360265464\":1478686417018,\"1025018266802\":1509788624246,\"1021309741478\":1478686417041,\"1025018266801\":1509788624246,\"1024991921444\":1509788625023,\"1024273242127\":1509788624277,\"1025018266790\":1509788624247,\"1022437043846\":1478686417213,\"1025018266798\":1509788624247,\"1025018266797\":1509788624246,\"1025018266796\":1509788624246,\"1025018266795\":1509788624247,\"1025018266794\":1509788624247,\"1025018266792\":1509788624246,\"1023567426065\":1509788624381,\"1023567426064\":1509788624381,\"1025018266773\":1509788624246,\"1023567426067\":1509788624381,\"1023567426066\":1509788624381,\"1023567426068\":1509788624381,\"1025018266769\":1509788624246,\"1023567426071\":1509788624381,\"1023567426070\":1509788624381,\"1025018266783\":1509788624246,\"1023567426073\":1509788624381,\"1010848856075\":1478686804061,\"1025627123556\":1509788624335,\"1023567426072\":1509788624381,\"1021934424909\":1509788624465,\"1023567426075\":1509788624381,\"1023567426074\":1509788624381,\"1010848856079\":1478686804061,\"1025628958590\":1509788624460,\"1010848856090\":1478686804061,\"1025018266763\":1509788624246,\"1023567426061\":1509788624381,\"1023567426060\":1509788624381,\"1025018266761\":1509788624246,\"1023567426063\":1509788624381,\"1023567426062\":1509788624381,\"1021086637742\":1478686417094,\"1025018266868\":1509788625179,\"1025018266879\":1509788625179,\"1025018266874\":1509788625179,\"1025018266855\":1509788625179,\"1025018266854\":1509788625179,\"1025018266853\":1509788625179,\"1025018266851\":1509788625179,\"1025018266848\":1509788625178,\"1025018266858\":1509788625179,\"1025018266837\":1509788625179,\"1024588098872\":1509788624168,\"1023630472746\":1509788667538,\"1025018266832\":1509788625179,\"1024687453989\":1509788624448,\"1024687453988\":1509788624448,\"1024687453987\":1509788624448,\"1025018266843\":1509788625179,\"1022188706865\":1478686417279,\"1024687453986\":1509788624448,\"1025018266842\":1509788625179,\"1021990654049\":1478686417057,\"1021949760497\":1478686417145,\"1024687453984\":1509788624448,\"1025018266821\":1509788625180,\"1025018266820\":1509788625178,\"1021974794596\":1509788624484,\"1017720330189\":1509788624367,\"1025018266827\":1509788625180,\"1025018266423\":1509788624885,\"1016539089566\":1478686804017,\"1025018266422\":1509788624885,\"1016539089565\":1478686804018,\"1025627121871\":1509788624215,\"1025018266421\":1509788624885,\"1025018266420\":1509788624885,\"1025679158231\":1509788624350,\"1025679158230\":1509788624351,\"1025679158229\":1509788624352,\"1025018266416\":1509788624885,\"1019315975955\":1509788624302,\"1025679158233\":1509788624350,\"1019315975953\":1509788624282,\"1025018266428\":1509788624885,\"1025018266425\":1509788624885,\"1025018266407\":1509788624885,\"1022459456430\":1478686417016,\"1012517542465\":1478686417074,\"1025018266402\":1509788624884,\"1835878779\":1491634246515,\"1835878778\":1491634246515,\"1835878773\":1491634246515,\"1025627121877\":1509788624215,\"1023408169751\":1509788625040,\"1025627121876\":1509788624216,\"1025018266414\":1509788624885,\"1025018266413\":1509788624885,\"1835878774\":1491634246515,\"1025018266412\":1509788624885,\"1000928653067\":1444487341754,\"1025627121872\":1509788624216,\"1025018266410\":1509788624885,\"1024145708836\":1509788625035,\"1025018266409\":1509788624885,\"1025627121874\":1509788624216,\"1025018266408\":1509788624885,\"1010024648424\":1491634246521,\"1022081358858\":1478686417012,\"1021211435058\":1478686804033,\"4559678441\":1465469681386,\"1015969589314\":1480585069071,\"1021881600060\":1509788624436,\"1025018266369\":1509788624884,\"1025469310575\":1509788624362,\"1025018266487\":1509788624886,\"1004334871469\":1444487341756,\"1025018266485\":1509788624886,\"1025018266483\":1509788624885,\"1025018266495\":1509788624886,\"1025018266493\":1509788624886,\"1025018266492\":1509788624886,\"1025569451024\":1509788624308,\"1025018266488\":1509788624886,\"1017808019112\":1478686804026,\"1021250233343\":1478686417100,\"1025710093729\":1509788624294,\"1023537015613\":1509788624870,\"1020501671443\":1480585069077,\"1023949884582\":1509788667501,\"1021680665698\":1478686804032,\"1018908581668\":1509788624315,\"1025018266449\":1509788624885,\"1023949884589\":1509788667501,\"1025153403744\":1509788625007,\"1023949884591\":1509788667501,\"1023949884584\":1509788667502,\"1023949884587\":1509788667501,\"1023949884586\":1509788667501,\"1016847918151\":1478686804018,\"1025018266439\":1509788624885,\"1020258134147\":1464448510787,\"1021928131381\":1478686416979,\"1025018266437\":1509788624885,\"1025018266435\":1509788624885,\"1023949884593\":1509788667502,\"1023949884592\":1509788667501,\"1021309742678\":1478686417005,\"1025018266433\":1509788624885,\"1023949884595\":1509788667501,\"1023949884594\":1509788667502,\"1021614356576\":1478686417049,\"1022674679999\":1480585069070,\"1025018266447\":1509788624884,\"1025018266446\":1509788624885,\"1025018266445\":1509788624884,\"1025018266444\":1509788624885,\"1021600594099\":1478686417048,\"1025018266442\":1509788624885,\"1023949884602\":1509788667501,\"1025018266559\":1509788624245,\"1523547718\":1478950494924,\"1025018266557\":1509788624245,\"1025018266554\":1509788624244,\"1009310620643\":1478686804055,\"1025018266533\":1509788624886,\"1025018266532\":1509788624885,\"1025018266531\":1509788624886,\"1025018266530\":1509788624885,\"1025018266529\":1509788624886,\"1025018266528\":1509788624886,\"1023062382387\":1509788625100,\"1025018266518\":1509788624886,\"1020962247257\":1478686417001,\"1025018266515\":1509788624885,\"1012131529715\":1478686416994,\"1021211435193\":1478686804033,\"1025018266513\":1509788624886,\"1025018266526\":1509788624886,\"1025018266524\":1509788624885,\"1025018266522\":1509788624886,\"1025018266520\":1509788624886,\"1022397853687\":1478686417291,\"1025018266501\":1509788624886,\"1017092238130\":1478686804019,\"1025018266498\":1509788624885,\"1021359679900\":1509788624467,\"1025018266510\":1509788624886,\"1020911916865\":1478686417227,\"368259400\":1478686804029,\"1025018266507\":1509788624886,\"1020911916868\":1478686417227,\"1007886110436\":1509788624390,\"1025018266504\":1509788624886,\"1022270316577\":1480585069091,\"1022270316576\":1480585069091,\"1022270316578\":1480585069091,\"1021971387924\":1478686417149,\"1021938750560\":1478686417143,\"1025018266598\":1509788624245,\"1025018266595\":1509788624244,\"1025018266604\":1509788624245,\"1025018266601\":1509788624244,\"1019237722944\":1509788624314,\"1021564026361\":1478686417114,\"1022480954514\":1478943089254,\"1025018266581\":1509788624245,\"1025018266580\":1509788624245,\"1025018266578\":1509788624245,\"1021564026366\":1478686417114,\"1025018266577\":1509788624245,\"1025018266576\":1509788624245,\"1025018266591\":1509788624245,\"1025018266590\":1509788624245,\"1025018266589\":1509788624245,\"1025018266588\":1509788624244,\"1021600593954\":1478686417048,\"1025018266587\":1509788624245,\"1025018266585\":1509788624245,\"1025018266584\":1509788624245,\"1835878815\":1491634246515,\"1025018266565\":1509788624245,\"1835878814\":1491634246515,\"1025018266564\":1509788624245,\"1025018266562\":1509788624245,\"1025018266575\":1509788624245,\"1020878230784\":1509788624960,\"1025018266574\":1509788624245,\"1025796338221\":1509788624274,\"1025018266571\":1509788624245,\"1022270316575\":1480585069091,\"1022270316574\":1480585069091,\"1025018266164\":1509788624572,\"1025010270907\":1509788624567,\"1021729556018\":1478686417051,\"163261611\":1478686804029,\"1835878527\":1491634246515,\"1021387729549\":1478686416979,\"1025018266148\":1509788624571,\"1025018266147\":1509788624572,\"1025018266145\":1509788624572,\"1025018266144\":1509788624572,\"1025018266158\":1509788624571,\"1021955003571\":1478686417261,\"1025018266154\":1509788624572,\"219883579\":1478686804029,\"1021668738553\":1478686417248,\"1025018266128\":1509788624571,\"1025018266143\":1509788624571,\"1010000661881\":1491634246516,\"1025018266140\":1509788624572,\"1025018266136\":1509788624571,\"1024096425254\":1509788624970,\"1025018266117\":1509788624571,\"1025593831419\":1509788624846,\"1022074150275\":1509788625019,\"1022338346439\":1478686417069,\"1024687059393\":1509788624563,\"1025593831421\":1509788625000,\"1021337659823\":1478686417041,\"1024687059392\":1509788624563,\"1025018266114\":1509788624571,\"1025593831420\":1509788624846,\"1025018266113\":1509788624571,\"1025593831423\":1509788624846,\"1025593831422\":1509788624846,\"1025811018444\":1509788667791,\"1025018266123\":1509788624572,\"1020787527293\":1478686417029,\"1024779730034\":1509788625024,\"1025018266121\":1509788624572,\"1025018266120\":1509788624571,\"1025018266231\":1509788624572,\"1025018266228\":1509788624572,\"1025018266227\":1509788624572,\"1021759045693\":1478686417009,\"1025018266225\":1509788624572,\"1025018266224\":1509788624572,\"1022285652319\":1478686417286,\"1025018266239\":1509788624572,\"1024687059388\":1509788624563,\"1025018266238\":1509788624572,\"1024687059391\":1509788624563,\"1024687059390\":1509788624563,\"1025018266236\":1509788624572,\"1025018266232\":1509788624572,\"1025018266213\":1509788624572,\"1025018266210\":1509788624573,\"1025018266209\":1509788624573,\"1025882980058\":1509788667463,\"1025018266223\":1509788624572,\"1025018266222\":1509788624572,\"1025882980052\":1509788667461,\"1017808019362\":1478686804026,\"1025882980054\":1509788667447,\"1022474139014\":1478943089486,\"1025882980051\":1509788667465,\"1025018266216\":1509788624572,\"1025018266207\":1509788624572,\"1021925902849\":1478686417055,\"1018927585609\":1509788624312,\"1021080475831\":1478686417232,\"1021885532297\":1478686417044,\"1018927585603\":1509788624312,\"1025018266293\":1509788624577,\"1025018266292\":1509788624577,\"1025018266291\":1509788624577,\"1025018266289\":1509788624577,\"1000526172526\":1444487341724,\"1025018266288\":1509788624577,\"1025018266301\":1509788624884,\"1000526172517\":1444487341739,\"1012184223622\":1478686417025,\"1020258134396\":1464448510787,\"1706377253\":1444487341737,\"1025018266279\":1509788624577,\"1025018266277\":1509788624577,\"1025018266275\":1509788624577,\"1025018266274\":1509788624577,\"1025018266273\":1509788624577,\"1025018266272\":1509788624577,\"1000526172529\":1444487341715,\"1008818964281\":1509788624372,\"1025018266287\":1509788624578,\"1021436884757\":1509788624438,\"1025018266285\":1509788624578,\"1025018266283\":1509788624577,\"1025018266282\":1509788624578,\"1025018266280\":1509788624577,\"1016399627119\":1480585069069,\"1025018266263\":1509788624576,\"1025018266271\":1509788624577,\"1017050163628\":1478686804021,\"1025018266270\":1509788624577,\"1025018266269\":1509788624578,\"1022474138992\":1478943089486,\"1025018266268\":1509788624578,\"1025018266267\":1509788624577,\"1025018266266\":1509788624577,\"1025018266265\":1509788624578,\"1025018266264\":1509788624578,\"1025018266247\":1509788624572,\"1025018266246\":1509788624572,\"1025018266244\":1509788624572,\"1025018266241\":1509788624572,\"1025018266240\":1509788624572,\"1022269138602\":1478686417197,\"1025018266253\":1509788624572,\"1515290602\":1478950494924,\"1025018266252\":1509788624572,\"1025018266249\":1509788624572,\"1025018266248\":1509788624572,\"1023535442470\":1509788625221,\"1025018266359\":1509788624884,\"1025018266356\":1509788624884,\"1024687059248\":1509788625156,\"1017808019248\":1478686804026,\"1025018266366\":1509788624884,\"1025018266363\":1509788624884,\"1025018266360\":1509788624884,\"1025018266343\":1509788624884,\"1025018266340\":1509788624884,\"1025018266336\":1509788624884,\"1024687059245\":1509788625156,\"1025018266350\":1509788624884,\"1024687059244\":1509788625156,\"1024687059247\":1509788625156,\"1024687059246\":1509788625156,\"1025018266346\":1509788624884,\"1025018266325\":1509788624884,\"1025018266324\":1509788624884,\"1025018266323\":1509788624884,\"1021923936866\":1478686417141,\"1025018266320\":1509788624884,\"1835878529\":1491634246515,\"1025018266331\":1509788624884,\"1025018266330\":1509788624884,\"1835878531\":1491634246515,\"1025018266329\":1509788624884,\"1025018266328\":1509788624884,\"1021685777449\":1509788624400,\"1025018266308\":1509788624884,\"1025018266305\":1509788624884,\"1025896085811\":1509788667463,\"1025018266304\":1509788624884,\"1025018266316\":1509788624884,\"1025018266313\":1509788624884,\"1021221135209\":1478686417235,\"1018994320935\":1509788624282,\"1018469091227\":1509788624199,\"1020806662693\":1478686416991,\"1025879965120\":1509788667405,\"1021221135221\":1478686417235,\"1006617852397\":1509788624386,\"1023062381963\":1509788624419,\"1017808018648\":1478686804026,\"1023958142564\":1509788667535,\"1025607724083\":1509788625084,\"1025607724082\":1509788625084,\"1025902639692\":1509788667460,\"409681499\":1491634246510,\"1021730604340\":1478686417124,\"1021730604341\":1478686417124,\"1021730604338\":1478686417124,\"1020852799804\":1478686417078,\"1024529247261\":1509788624905,\"1024142693639\":1509788667499,\"1024529247260\":1509788624904,\"1022270317219\":1480585069092,\"1024529247263\":1509788624905,\"1022270317218\":1480585069092,\"1024529247262\":1509788624904,\"1022270317221\":1480585069092,\"1024529247257\":1509788624904,\"1022270317220\":1480585069092,\"1024529247256\":1509788624904,\"1022270317223\":1480585069092,\"1024529247259\":1509788624904,\"1022270317225\":1480585069092,\"1024529247252\":1509788624904,\"1024529247255\":1509788624904,\"1024529247254\":1509788624904,\"1024529247249\":1509788624904,\"1024529247248\":1509788624904,\"1013389710367\":1444487341759,\"1024529247250\":1509788624904,\"1024529247246\":1509788624904,\"1024142693652\":1509788667499,\"1024529247241\":1509788624904,\"1024529247237\":1509788624905,\"1024529247239\":1509788624905,\"1024529247238\":1509788624904,\"1018513654421\":1509788624825,\"1024529247232\":1509788624904,\"1022943890054\":1509788625104,\"1024529247235\":1509788624905,\"1023535442426\":1509788625221,\"1000307802224\":1478686417018,\"1025770910251\":1509788624521,\"1021892610836\":1478686417138,\"1021600594618\":1478686417048,\"1022299677526\":1478686417015,\"1021001309948\":1478686417230,\"1024529247264\":1509788624904,\"1020258134668\":1464448510787,\"1020007504828\":1478686804050,\"409681428\":1491634246510,\"1024529247266\":1509788624904,\"1022306754644\":1478686417015,\"1022188181829\":1478686417187,\"4563613330\":1465469681386,\"1025909848707\":1509788667443,\"1060051390\":1444487341718,\"228272901\":1444487341728,\"1021809512154\":1509788624399,\"1022506513519\":1509788667538,\"1021120584140\":1478686417037,\"1008044315218\":1478686804030,\"1021283921668\":1465469681396,\"1020819377104\":1509788624311,\"1016444194454\":1478686804023,\"1022306754665\":1478686417015,\"4994830089\":1509788667394,\"1025018266101\":1509788624572,\"1021644241042\":1509788624815,\"1025018266110\":1509788624571,\"1025018266109\":1509788624572,\"1026232407571\":1514456869770,\"1025018266108\":1509788624572,\"1026232407573\":1514456869770,\"1026232407572\":1514456869769,\"1026232407575\":1514456869769,\"1026232407574\":1514456869768,\"1025018266087\":1509788624572,\"1025018266084\":1509788624571,\"1835879349\":1491634246515,\"1025018266095\":1509788624572,\"1023537015224\":1509788624233,\"1025531830338\":1509788624346,\"1022237549614\":1478686417065,\"1835879350\":1491634246515,\"1023453392038\":1509788625170,\"1025018266090\":1509788624572,\"1835879346\":1491634246515,\"1019827541112\":1509788624322,\"1021926164871\":1509788624465,\"1021221135233\":1478686417235,\"1022033777653\":1478686417267,\"1002453942510\":1491634246518,\"1022033777655\":1478686417267,\"1022352895716\":1478686417203,\"1023453392011\":1509788625170,\"1021398743031\":1478686417043,\"1020007504579\":1478686804050,\"1020007504580\":1478686804050,\"1020667593568\":1478686417075,\"1024597666087\":1509788624939,\"1020570089806\":1509788624386,\"1020570089807\":1509788624386,\"1022021849804\":1509788624180,\"1021920790778\":1509788625019,\"1025629612937\":1509788625021,\"1020294048158\":1465470268284,\"1022080311143\":1509788624416,\"1024273243308\":1509788624277,\"1025507451611\":1509788624339,\"1025507451609\":1509788624339,\"1025507451608\":1509788624341,\"1022280934175\":1478686417285,\"1025494475652\":1509788624337,\"1021743579926\":1478686417125,\"1022141258726\":1478686417277,\"1020966834666\":1478686417086,\"1021986854042\":1509788624509,\"1020074632871\":1465470268315,\"1024783400529\":1509788625019,\"1020258134939\":1464448510787,\"1021817376400\":1478686417132,\"1024993100225\":1509788624904,\"1023152824113\":1509788625045,\"1020904052210\":1478686417032,\"1024687059829\":1509788624223,\"1024687059828\":1509788624859,\"1024687059831\":1509788624859,\"1024687059825\":1509788624223,\"1022106787111\":1478686417182,\"1024687059824\":1509788624223,\"1024687059827\":1509788624859,\"1024687059826\":1509788624859,\"1021654071350\":1509788624818,\"1023535441933\":1509788625221,\"1020904052203\":1478686417032,\"1024687059820\":1509788624223,\"1024687059823\":1509788624223,\"1024687059822\":1509788624859,\"1022111505892\":1509788624944,\"135606198\":1478686417023,\"1022629068340\":1509788624434,\"1024142693622\":1509788667499,\"1024142693621\":1509788667500,\"1024142693618\":1509788667500,\"1024142693631\":1509788667499,\"1025569451933\":1509788624350,\"1025569451931\":1509788624351,\"1025508106796\":1509788624338,\"1021348670014\":1478686417041,\"1025508106793\":1509788624341,\"1025879964694\":1509788667405,\"1025508106795\":1509788624342,\"1025508106794\":1509788624337,\"340472729\":1444487341753,\"1015810204725\":1478686804016,\"1022073495399\":1509788624280,\"1018546553130\":1480585069070,\"1024362915834\":1509788667509,\"1024362915832\":1509788667508,\"1022038102331\":1478686417168,\"340472749\":1444487341752,\"1024145708243\":1509788625035,\"1024804371480\":1509788624426,\"1021342510047\":1478686417103,\"1023821170530\":1509788624960,\"1025880620071\":1509788667811,\"1016244714487\":1480585069063,\"1020007504445\":1478686804050,\"1025569451938\":1509788624351,\"1002069387030\":1478686804059,\"1024303257046\":1509788624177,\"1015969588328\":1480585069071,\"1021301744312\":1480585069071,\"1021955529132\":1509788624464,\"1024303257049\":1509788624177,\"1024303257048\":1509788624176,\"1021741223032\":1478686417125,\"1017092237203\":1478686804019,\"1176596021\":1478686804033,\"1024304698794\":1509788624277,\"1024304698791\":1509788624277,\"1025497492635\":1509788624367,\"1024362915852\":1509788667508,\"1024362915851\":1509788667508,\"1024362915850\":1509788667509,\"1022020017632\":1478686417161,\"1024444706153\":1509788625030,\"1024362915849\":1509788667508,\"1021839000197\":1478686417135,\"1024362915862\":1509788667508,\"1024183852736\":1509788624517,\"1016217842581\":1480585069069,\"1024183852741\":1509788624517,\"1024362915857\":1509788667508,\"1024566469693\":1509788624520,\"1024566469695\":1509788624520,\"1024566469691\":1509788624520,\"423047432\":1491634246508,\"1024183852723\":1509788624516,\"1024566469701\":1509788624520,\"1024518365856\":1509788624563,\"1025296666843\":1509788624507,\"1024566469697\":1509788624520,\"1024183852726\":1509788624517,\"1024566469696\":1509788624520,\"1025296666841\":1509788624507,\"1024566469699\":1509788624520,\"1020878231998\":1509788624945,\"1024566469709\":1509788624520,\"1024183852730\":1509788624517,\"1024566469708\":1509788624520,\"1024566469710\":1509788624520,\"1024566469707\":1509788624520,\"1022517394025\":1509788625064,\"1024566469717\":1509788624520,\"1006074140170\":1478686804025,\"1024183852704\":1509788624517,\"1022192244702\":1478686417279,\"1024566469714\":1509788624520,\"1024566469721\":1509788624520,\"1022081486974\":1478686417178,\"1024183852717\":1509788624516,\"1024183852690\":1509788624516,\"1019963855388\":1478686804021,\"1025507191907\":1509788624344,\"1025507191906\":1509788624335,\"1024183852674\":1509788624517,\"1025507191905\":1509788624341,\"1025507191910\":1509788624339,\"1020025591512\":1509788624300,\"1025507191908\":1509788624339,\"1016571730161\":1480585069075,\"1024518365850\":1509788624563,\"1024183852687\":1509788624517,\"1024518365855\":1509788624563,\"1024518365854\":1509788624563,\"1020258133132\":1464448510787,\"1021740174566\":1478686417124,\"1024518365853\":1509788624563,\"1024183852663\":1509788624516,\"1022238861895\":1509788624946,\"1024183852660\":1509788624516,\"1022238861897\":1509788624933,\"1025532882662\":1509788624336,\"1025629479992\":1509788625022,\"1021051376409\":1478686417036,\"1023389560510\":1509788624273,\"1016771351615\":1465470268255,\"1024183852651\":1509788624517,\"1016771351614\":1465470268255,\"1016771351612\":1465470268255,\"1023947784313\":1491634246532,\"1016771351608\":1465470268255,\"199041919\":1444487341719,\"1024183852624\":1509788624517,\"1020477813118\":1465470268302,\"1021300302453\":1478686417102,\"1024183852633\":1509788624517,\"1022479644887\":1478943089487,\"1022024342846\":1509788624466,\"1024183852621\":1509788624516,\"1021300302447\":1478686417102,\"270481630\":1444487341746,\"1022921605838\":1509788624294,\"1023617105018\":1509788624970,\"1023389560553\":1509788624273,\"1021517627161\":1509788624815,\"1021427972594\":1478686804026,\"1020982697834\":1478686417001,\"1023389560547\":1509788624273,\"1023389560546\":1509788624273,\"1021839000190\":1478686417134,\"1026232277009\":1514456869769,\"1023389560551\":1509788624273,\"1026232277013\":1514456869769,\"1023389560548\":1509788624273,\"1014765284493\":1478686804024,\"1023389560562\":1509788624273,\"1023389560561\":1509788624273,\"1021688662355\":1509788624404,\"1023389560523\":1509788624273,\"1023389560522\":1509788624273,\"1024687455277\":1509788624223,\"1016771351620\":1465470268256,\"1021984103153\":1478686417152,\"1024687455276\":1509788624223,\"1023389560520\":1509788624273,\"1016771351619\":1465470268256,\"1024687455275\":1509788624223,\"1023389560527\":1509788624273,\"1024687455274\":1509788624223,\"1016771351617\":1465470268255,\"1024687455273\":1509788624223,\"1023389560525\":1509788624273,\"606014708\":1491634246506,\"1023389560512\":1509788624273,\"1023389560518\":1509788624273,\"1023389560539\":1509788624273,\"1025590419949\":1509788624344,\"1022907712023\":1509788624298,\"1023389560542\":1509788624273,\"1021944125575\":1478686416992,\"1021722086267\":1509788624403,\"1026232277027\":1514456869769,\"1019248994285\":1509788624313,\"1026232277031\":1514456869769,\"1023389560534\":1509788624273,\"1000037678837\":1478686417021,\"270481632\":1444487341743,\"1023389560532\":1509788624273,\"2006146709\":1491634246533,\"1015242115267\":1480585069068,\"1020999864757\":1478686417230,\"1021969030137\":1509788624194,\"1019264989458\":1478686804023,\"1022305972185\":1478686417287,\"1022073491876\":1509788624300,\"1022111765357\":1478686417013,\"1025373869305\":1509788624307,\"1025593435114\":1509788624566,\"1022909285348\":1509788624999,\"1020852930127\":1478686416976,\"1002079353162\":1478686804033,\"1021985020631\":1478686417152,\"1021985413830\":1478686417153,\"1005987762269\":1478686804033,\"1024672250603\":1509788624801,\"1024672250602\":1509788624801,\"1025627121030\":1509788624850,\"1025627121024\":1509788624850,\"1012413600040\":1478686417223,\"1000037678941\":1478686417021,\"1021502160895\":1478686417244,\"1019384263045\":1509788624933,\"1020898155467\":1478686417079,\"1020898155468\":1478686417080,\"1024459124483\":1509788625000,\"1007146325786\":1509788624375,\"1024459124480\":1509788625005,\"1020898155461\":1478686417079,\"1020025591745\":1509788624300,\"1007886107435\":1509788624373,\"1020258133376\":1464448510787,\"1021311050612\":1465470268203,\"1021311050614\":1465470268203,\"1021311050615\":1465470268204,\"1023444083606\":1509788624969,\"1007910356406\":1478686804023,\"1025068467131\":1509788625221,\"1025068467133\":1509788625223,\"1025068467132\":1509788625223,\"1022450411426\":1478686417296,\"1024520463178\":1509788625028,\"1021654070828\":1509788624195,\"1024481144483\":1509788624298,\"1025593434982\":1509788625167,\"4998365253\":1509788667393,\"1025627121021\":1509788624850,\"1017974697305\":1509788624363,\"1025627121023\":1509788624850,\"1017857692756\":1465470268241,\"1025627121022\":1509788624850,\"1020900383549\":1465470268303,\"1024518365987\":1509788625161,\"1024518365986\":1509788625161,\"1024518365985\":1509788625161,\"1024518365984\":1509788625160,\"1024669760057\":1509788625150,\"1020900383564\":1465470268303,\"1024669760059\":1509788625150,\"1024518365988\":1509788625161,\"1024669760053\":1509788625150,\"1024669760055\":1509788625150,\"1024669760054\":1509788625150,\"1017092236883\":1478686804019,\"1017260798030\":1465470268269,\"1025068467169\":1509788625221,\"1025068467171\":1509788625221,\"1025068467170\":1509788625222,\"1025068467174\":1509788625221,\"1016522572923\":1478686804046,\"1025068467160\":1509788625222,\"1025068467162\":1509788625222,\"1025068467165\":1509788625222,\"1025068467164\":1509788625222,\"1025068467167\":1509788625223,\"1025068467153\":1509788625222,\"1025068467152\":1509788625222,\"1022170093331\":1478686417063,\"4821038774\":1509788624157,\"1025068467157\":1509788625222,\"1025068467156\":1509788625222,\"1023453389714\":1509788624569,\"1025068467158\":1509788625222,\"1000037679099\":1478686417021,\"1020821603498\":1478686417078,\"1025068467147\":1509788625222,\"1025068467146\":1509788625222,\"1025068467150\":1509788625222,\"1025068467140\":1509788625222,\"1022073491776\":1509788624300,\"1023774521179\":1491634246535,\"1022292995979\":1478686417068,\"1022082667071\":1478686417272,\"4808979637\":1509788624157,\"1021654070694\":1509788624534,\"1024115431678\":1509788667538,\"1025910896577\":1509788667579,\"1024459123784\":1509788624998,\"1025910896576\":1509788667579,\"1009848497510\":1491634246513,\"1024459123778\":1509788625005,\"1020087348016\":1509788625078,\"1022077948503\":1478686417272,\"1020087348017\":1509788624354,\"1024459123781\":1509788624999,\"1020087348018\":1509788625078,\"1022482397810\":1478943089488,\"1020087348012\":1509788625077,\"1020087348013\":1509788625078,\"1020850701737\":1478686804057,\"1021377111050\":1478686416980,\"1020087348006\":1509788625076,\"1020087348007\":1509788625078,\"1024566470221\":1509788667536,\"1025609163190\":1509788625242,\"1024566470229\":1509788667536,\"1024579053335\":1509788624932,\"1024566470231\":1509788667536,\"1024566470224\":1509788667536,\"1023033547573\":1509788625073,\"1024566470227\":1509788667536,\"5000724552\":1509788667393,\"1024566470237\":1509788667536,\"1024566470238\":1509788667536,\"1025910896574\":1509788667579,\"1024566470235\":1509788667536,\"1024566470244\":1509788667536,\"1024566470247\":1509788667536,\"1022460372457\":1480585069075,\"1024566470253\":1509788667536,\"1021138823706\":1478686417002,\"1024566470261\":1509788667536,\"1024566470260\":1509788667536,\"1024566470263\":1509788667536,\"1024566470257\":1509788667536,\"1020258133636\":1464448510787,\"1024566470265\":1509788667536,\"1020874562224\":1478686416999,\"1024225530612\":1509788624969,\"1024183852158\":1509788624516,\"1022411482649\":1478686417208,\"1020923189693\":1478686417081,\"1022361412363\":1478686417203,\"1022361412360\":1478686417203,\"1023958139611\":1509788667535,\"4998366066\":1509788667393,\"1022262323678\":1478686417067,\"1025593434215\":1509788624866,\"1024241783762\":1509788624473,\"1270309145\":1444487341731,\"1021724051745\":1478686417051,\"1025090750077\":1509788624292,\"1020923189648\":1478686417081,\"1001886150463\":1478686804032,\"1024459123875\":1509788624259,\"1021233589348\":1478686417099,\"1024459123873\":1509788624426,\"1025050903535\":1509788624457,\"1024459123876\":1509788624259,\"1025823604197\":1509788667449,\"1025823604196\":1509788667447,\"1025823604194\":1509788667441,\"1025394054153\":1509788667826,\"1020923189706\":1478686417081,\"1024459123865\":1509788624456,\"1023862327534\":1491634246520,\"1024459123870\":1509788624438,\"1020973915357\":1478686417034,\"1024782218195\":1509788625069,\"1020978240738\":1478686417230,\"4562298107\":1465469681388,\"1024991923633\":1509788624939,\"1023795098886\":1509788624373,\"1023062382775\":1509788624194,\"1022068118466\":1478686417060,\"1024528458111\":1509788624237,\"1025627121549\":1509788625145,\"1025627121548\":1509788625145,\"1025627121551\":1509788625145,\"1025627121550\":1509788625145,\"1021613176651\":1478686417247,\"1023018212104\":1509788624439,\"1022201287771\":1478686417190,\"1022460765376\":1480585069077,\"1025295750086\":1509788624946,\"1022068118463\":1478686417060,\"1024241783339\":1509788624883,\"1020961070525\":1478686417085,\"1025796341135\":1509788624274,\"1025627121556\":1509788625145,\"1023062382792\":1509788624815,\"1022188704954\":1478686417278,\"1022188704955\":1478686417278,\"1021600593844\":1478686417048,\"1020258133878\":1464448510787,\"1022483839906\":1478943089231,\"1023821827041\":1491634246536,\"1022483839904\":1478943089231,\"1021011530336\":1478686417231,\"1024161701812\":1509788667562,\"1022078342121\":1478686417177,\"1000527486813\":1444487341710,\"1024798339571\":1509788624211,\"1022483839878\":1478943089231,\"1025907750802\":1509788667464,\"1020294046988\":1465470268284,\"1021540168643\":1478686417047,\"1022483839888\":1478943089231,\"1022483839900\":1478943089231,\"1022483839897\":1478943089231,\"1610052681\":1509788624380,\"1025907750796\":1509788667461,\"1025070170583\":1509788624293,\"1025269669353\":1509788624359,\"1020799453015\":1478686417029,\"1021161368315\":1478686417097,\"1304782374\":1491634246508,\"1024528458146\":1509788625175,\"1021439506838\":1478686417107,\"1022931173473\":1509788624461,\"1025911289344\":1509788667463,\"1024528458167\":1509788624237,\"1025671946785\":1509788624942,\"1615285318\":1478686804029,\"1021011793376\":1478686417231,\"1021767305973\":1509788624533,\"1023018212440\":1509788624565,\"1021937835206\":1478686804072,\"1024983927099\":1509788624924,\"1024983927103\":1509788624924,\"1021311051308\":1465470268204,\"1021311051309\":1465470268204,\"1022488559070\":1478943089254,\"1021311051304\":1465470268204,\"1021311051305\":1465470268204,\"1021311051306\":1465470268204,\"1021311051307\":1465470268204,\"1022526570379\":1509788625083,\"1020967492281\":1478686417229,\"1019778646865\":1509788624366,\"1022526570371\":1509788624393,\"1009158969948\":1478686804040,\"1022526570374\":1509788624393,\"1021880418425\":1478686417053,\"4625088485\":1478686416965,\"1025529998078\":1509788624337,\"1025608902570\":1509788624929,\"1010848856046\":1478686804061,\"1032393169\":1444487341716,\"1021772679889\":1478686417128,\"1032393171\":1444487341754,\"1017229998867\":1509788624941,\"1017229998866\":1509788624941,\"1024983927106\":1509788624924,\"1020793290890\":1478686416976,\"1020793290891\":1478686416976,\"1024687454378\":1509788624859,\"1024687454377\":1509788624859,\"1024687454376\":1509788624859,\"1024983927108\":1509788624924,\"1021937835192\":1478686804072,\"1024687454375\":1509788624859,\"1024687454374\":1509788624859,\"1022868785978\":1509788625054,\"1012149486676\":1478686417025,\"1025050903901\":1509788624457,\"1021195579243\":1478881022015,\"1023021751478\":1509788624992,\"1020258132087\":1464448510787,\"1013127958351\":1478686804058,\"1024973310272\":1509788624288,\"1021006025947\":1509788624920,\"1017229999051\":1509788624941,\"1020244502309\":1465470268316,\"1008997875862\":1478686804030,\"1025283038147\":1509788624363,\"1018989341727\":1509788624312,\"4560593733\":1465469681388,\"1022618580138\":1509788625062,\"1025906307213\":1509788667463,\"1025906307214\":1509788667461,\"1022417248404\":1478686417209,\"1022417248403\":1478686417209,\"1021743712498\":1478686416972,\"1008828927666\":1509788624372,\"1022526570367\":1509788624393,\"1021088731530\":1478686417002,\"1016897466341\":1478686804053,\"1020057332738\":1509788624369,\"1023958140044\":1509788667535,\"1018121232611\":1478686804018,\"1021827597719\":1509788624590,\"1021630476757\":1478686417049,\"1024096427226\":1509788624972,\"1024945000269\":1509788624406,\"1021827597726\":1509788624591,\"1021827597727\":1509788624590,\"1021827597724\":1509788624591,\"1021827597725\":1509788624591,\"1021827597722\":1509788624591,\"1021827597723\":1509788624591,\"1021827597720\":1509788624592,\"1025295750227\":1509788624946,\"1021827597721\":1509788624592,\"1000527878161\":1444487341713,\"1021827597733\":1509788624591,\"1021827597730\":1509788624591,\"1022270187526\":1480585069092,\"1021827597731\":1509788624591,\"1022270187525\":1480585069092,\"1021827597728\":1509788624591,\"1021827597729\":1509788624591,\"1022270187531\":1480585069092,\"1022608487473\":1509788624994,\"1022270187530\":1480585069092,\"1021827597743\":1509788624591,\"1022270187529\":1480585069092,\"1022270187535\":1480585069092,\"1021827597738\":1509788624590,\"1021840705139\":1509788624394,\"1021827597736\":1509788624590,\"1022270187532\":1480585069092,\"1022270187539\":1480585069092,\"1022270187538\":1480585069092,\"1022454604560\":1478686417072,\"1013127958335\":1478686804058,\"1022270187541\":1480585069092,\"1021827597744\":1509788624592,\"1000527878148\":1444487341715,\"1022270187546\":1480585069092,\"1022270187544\":1480585069092,\"1012994405\":1444487341726,\"1021120582254\":1478686417037,\"803537632\":1509788625081,\"1006898594359\":1509788624388,\"1021120582246\":1478686417037,\"1013020881241\":1478686804024,\"1021926949480\":1478686417141,\"1011857078936\":1478686804024,\"1009382141475\":1478686804046,\"1022667077196\":1509788625060,\"1021628248126\":1478686417008,\"1021885530348\":1478686417044,\"1022269140530\":1478686417197,\"1021005370727\":1478686417231,\"1019527515479\":1509788624375,\"1022417903903\":1478686417302,\"803537611\":1509788625081,\"1021120582236\":1478686417037,\"559615084\":1478686804033,\"1022053833469\":1509788625075,\"803537618\":1509788625081,\"1021133188496\":1465470268251,\"1021257181817\":1495284743408,\"1010024515465\":1491634246521,\"1021743712522\":1478686416972,\"1021476600070\":1478686417109,\"1022414758160\":1478686417208,\"1023791821576\":1509788624177,\"1021767306151\":1509788624817,\"1025067812728\":1509788624304,\"1021628248135\":1478686417008,\"1000087483478\":1478686804024,\"1017119112323\":1465470268241,\"139273510\":1491634246512,\"2006145788\":1491634246533,\"803537552\":1509788625081,\"1021122941502\":1478686417095,\"1022436778093\":1478686417213,\"1022436778094\":1478686417213,\"1021551703208\":1509788624865,\"803537562\":1509788625081,\"1009106017807\":1478686804054,\"1025142260305\":1509788624424,\"1009106017806\":1478686804054,\"1008055720367\":1480585069062,\"1022398244555\":1478686417070,\"1025042383926\":1509788624495,\"803537527\":1509788625081,\"1021353517079\":1478686417006,\"1002080009698\":1478686804029,\"1021767306086\":1509788624194,\"1020258132332\":1464448510787,\"1020911918692\":1478686417032,\"1017176389920\":1478686804070,\"1021236603699\":1478686417003,\"1021633622855\":1509788624404,\"1022202204838\":1480585069084,\"1021551703138\":1509788624865,\"1000307805102\":1478686417018,\"1006332633934\":1478686417018,\"1019963856817\":1478686804021,\"1024672251420\":1509788624801,\"1018168025783\":1509788625017,\"1018168025778\":1509788625017,\"1017949663164\":1478686804046,\"1018168025786\":1509788625080,\"1012341905742\":1478686417026,\"1016779084241\":1478686804017,\"1024167861187\":1509788625035,\"1023021751857\":1509788624992,\"1023021751856\":1509788624992,\"1577414667\":1491634246513,\"1023958140489\":1509788667535,\"1023021751854\":1509788624992,\"1023021751853\":1509788624992,\"1023021751852\":1509788624992,\"1013389712460\":1444487341759,\"1021246958035\":1478686417003,\"1010000660071\":1491634246516,\"1025671946339\":1509788624942,\"1022081357413\":1478686417012,\"1021605704408\":1478686417048,\"1021605704406\":1478686417048,\"1017168264526\":1478686804022,\"1021042988121\":1478686417001,\"1017168264520\":1478686804040,\"1021969030313\":1509788624816,\"1007910355606\":1478686804023,\"1022491836367\":1478943089315,\"1409252764\":1444487341755,\"1022067988849\":1478686804035,\"1585541351\":1478686804033,\"1023173662565\":1509788625044,\"1018673169215\":1509788625019,\"1021143281270\":1465470268252,\"1828012687\":1491634246508,\"1021865477498\":1509788624394,\"1021071299073\":1478686417093,\"1020258132622\":1464448510787,\"1025495919299\":1509788624307,\"1022067988847\":1478686804035,\"1024096034447\":1509788624522,\"1024096034444\":1509788624522,\"1024096034439\":1509788624523,\"1021841884411\":1509788625003,\"1021841884415\":1509788625003,\"1024096034455\":1509788624522,\"1024096034453\":1509788624522,\"1017176390172\":1478686804070,\"1024096034476\":1509788624522,\"1024096034475\":1509788624522,\"1024096034472\":1509788624522,\"1526297680\":1444487341748,\"1019723465221\":1478686804021,\"1021120582106\":1478686417037,\"1024096034495\":1509788624522,\"1021606490658\":1509788624397,\"1022336902750\":1478686417201,\"1025796339808\":1509788624274,\"1022336902739\":1478686417201,\"1024096034485\":1509788624522,\"1024096034481\":1509788624522,\"1019146102762\":1509788624316,\"1024688110101\":1509788624503,\"1162308502\":1478686804029,\"1021969030177\":1509788624533,\"1024688110099\":1509788624503,\"1024167861017\":1509788625035,\"1021465852420\":1478686417242,\"1024840807249\":1509788624174,\"1022398506406\":1478686417207,\"1023626935035\":1509788624553,\"1020999473057\":1509788624934,\"1021484202713\":1478686804039,\"4667947305\":1478686416965,\"1023173006886\":1509788624507,\"1023173006890\":1509788624507,\"1025671946556\":1509788624942,\"1023310261752\":1509788625041,\"1021721562259\":1478686417123,\"1019730674550\":1509788624960,\"1025614800060\":1509788624824,\"1025218157588\":1509788624922,\"1021143281463\":1465470268252,\"1021734144944\":1478686417124,\"1022077949738\":1478686417177,\"1023319829795\":1509788624182,\"1023995102565\":1491634246532,\"1018905695287\":1509788624282,\"1304257254\":1444487341738,\"1021841884424\":1509788625003,\"1021138824979\":1478686417233,\"1021841884428\":1509788625003,\"1022077949727\":1478686417177,\"1020378201282\":1465470268321,\"1021841884419\":1509788625003,\"1021841884421\":1509788625003,\"1022383170888\":1478686417205,\"1021841884423\":1509788625003,\"1021841884436\":1509788625003,\"1406499923\":1478686417024,\"1025127973131\":1509788624183,\"1020258132842\":1464448510787,\"1538880541\":1444487341703,\"1023932188756\":1491634246531,\"1023932188762\":1491634246531,\"1022233357978\":1509788624175,\"1021514086821\":1478686416973,\"1021886579318\":1478686417054,\"1026232409965\":1514456869769,\"1026232409964\":1514456869770,\"1021279070114\":1509788624940,\"1010011670079\":1491634246525,\"1010011670092\":1491634246526,\"1024430812157\":1509788667890,\"1010011670084\":1491634246526,\"1024264852945\":1509788624408,\"1024264852944\":1509788624426,\"1024264852943\":1509788624432,\"1012173604101\":1478686417025,\"1024264852942\":1509788624429,\"1523414303\":1478950494924,\"1021842015676\":1509788624394,\"1022257736822\":1478686417196,\"1001813798856\":1478686804054,\"1021148917308\":1478686417234,\"1025172151814\":1509788624226,\"1022148727762\":1478686417277,\"1012399970465\":1478686416994,\"1022633260712\":1509788625060,\"1021969030414\":1509788624419,\"1025565910894\":1509788624335,\"1019416245986\":1480585069074,\"1019416245987\":1480585069074,\"1024587316933\":1509788624248,\"1024265112095\":1509788624224,\"1024587316931\":1509788624248,\"1024587316929\":1509788624248,\"1024587316928\":1509788624248,\"1021515655158\":1478686417112,\"1022904572216\":1509788624250,\"4994832825\":1509788667394,\"1020443338708\":1478686417224,\"1020243065804\":1478686804049,\"1022051206667\":1478686417174,\"1024528202348\":1509788625027,\"1024727819845\":1509788624278,\"1022836806936\":1509788624535,\"1024433829316\":1509788624474,\"1022836806935\":1509788624535,\"1021048753122\":1478686417001,\"1025643118025\":1509788624365,\"1025643118024\":1509788624365,\"1025643118027\":1509788624365,\"1025643118026\":1509788624365,\"1022051206694\":1478686417174,\"1025643118028\":1509788624365,\"1024265112099\":1509788624224,\"1024265112098\":1509788624224,\"1024265112097\":1509788624224,\"1022051206697\":1478686417174,\"1024265112096\":1509788624224,\"1020740868171\":1478686417028,\"1021997466478\":1478686417156,\"1024587316879\":1509788624248,\"1024495564823\":1509788624935,\"1024587316878\":1509788624248,\"1024587316877\":1509788624248,\"1024495564819\":1509788624935,\"1024495564817\":1509788624935,\"1024495564816\":1509788624935,\"1024495564812\":1509788624935,\"1024985503071\":1509788624279,\"1024587316882\":1509788624248,\"1024495564809\":1509788624935,\"1024587316880\":1509788624248,\"1024587316895\":1509788624248,\"1020900639453\":1478686417080,\"1024587316892\":1509788624248,\"1024587316888\":1509788624248,\"1024495564800\":1509788624935,\"1024495564863\":1509788624935,\"1024495564862\":1509788624935,\"1024195118661\":1509788624184,\"1024495564861\":1509788624935,\"1024587316898\":1509788624248,\"1016968247436\":1478686804024,\"1024195118656\":1509788624184,\"1024587316911\":1509788624248,\"1022904572251\":1509788624250,\"1024587316909\":1509788624248,\"1024967939165\":1509788624342,\"1024587316908\":1509788624248,\"1025901980679\":1509788667450,\"1024495564850\":1509788624935,\"1198487297\":1444487341746,\"1024495564849\":1509788624935,\"1024587316904\":1509788624248,\"1023328351134\":1509788624589,\"1021481706896\":1478686417110,\"1024195118678\":1509788624184,\"1024587316918\":1509788624248,\"1024587316917\":1509788624248,\"1021951328661\":1478686417261,\"1022228246807\":1478686417065,\"1024587316915\":1509788624248,\"1021141446749\":1478686417096,\"1024195118674\":1509788624184,\"1024495564842\":1509788624935,\"1024195118687\":1509788624185,\"1019386489023\":1509788624316,\"1024587316924\":1509788624248,\"1024587316923\":1509788624248,\"1024587316922\":1509788624248,\"1024495564834\":1509788624935,\"1021935206534\":1509788624464,\"1025372687507\":1509788625110,\"1025372687506\":1509788625126,\"1020241099632\":1478686804039,\"1025372687505\":1509788625117,\"1024587316814\":1509788624244,\"1024587316813\":1509788624244,\"1024587316812\":1509788624243,\"1025372687514\":1509788625089,\"1024587316820\":1509788624244,\"1024587316819\":1509788624244,\"1024587316818\":1509788624244,\"1024587316817\":1509788624244,\"1024587316830\":1509788624244,\"1024587316826\":1509788624244,\"1024587316824\":1509788624244,\"1024587316839\":1509788624244,\"1025407029067\":1509788624546,\"1024587316837\":1509788624244,\"1024587316835\":1509788624244,\"1025407029070\":1509788624546,\"1023612249152\":1509788624955,\"1024587316832\":1509788624244,\"1025407029068\":1509788624546,\"1024587316846\":1509788624244,\"1003408699282\":1478686804054,\"1018967297896\":1509788624453,\"1024587316844\":1509788624244,\"1024587316842\":1509788624244,\"1025407029061\":1509788624539,\"1024587316840\":1509788624244,\"1024587316854\":1509788624243,\"1017558326126\":1509788624372,\"1024587316853\":1509788624244,\"1001519652708\":1478686417022,\"1024587316850\":1509788624243,\"1024587316848\":1509788624244,\"1020558814815\":1478686416995,\"1000968371720\":1478686804028,\"1023529942897\":1509788624424,\"1024444315120\":1509788624440,\"1024587316857\":1509788624243,\"1003408699271\":1478686804054,\"1025407029076\":1509788624546,\"1022078339248\":1478686417177,\"1025643117883\":1509788624365,\"1025643117882\":1509788624365,\"1025643117885\":1509788624365,\"1021981344508\":1509788624466,\"1025643117884\":1509788624365,\"1025643117887\":1509788624365,\"1023612249123\":1509788624955,\"1022674152456\":1480585069077,\"1025643117886\":1509788624365,\"1024444315018\":1509788624435,\"1024587316751\":1509788625194,\"1024587316750\":1509788625194,\"1024587316749\":1509788625194,\"1024587316748\":1509788625194,\"1024535280429\":1509788625027,\"115684904\":1444487341751,\"1021797849029\":1509788624269,\"1024587316746\":1509788625192,\"1023612249130\":1509788624955,\"1024587316759\":1509788625194,\"1023612249140\":1509788624955,\"1024587316758\":1509788625194,\"1025407029048\":1509788624611,\"1023612249142\":1509788624955,\"1024587316755\":1509788625194,\"1023612249136\":1509788624955,\"1826053121\":1444487341704,\"1021537413220\":1509788624397,\"1023612249138\":1509788624955,\"1020956214670\":1478686417085,\"1023612249149\":1509788624955,\"1024587316767\":1509788625193,\"1023612249148\":1509788624955,\"1024587316765\":1509788625193,\"1025407029046\":1509788624612,\"1024587316762\":1509788625193,\"1024587316775\":1509788625193,\"1024587316772\":1509788625193,\"1024587316782\":1509788625193,\"1024587316781\":1509788625194,\"1024587316780\":1509788625194,\"1024587316779\":1509788625192,\"1021742797982\":1509788624395,\"1024587316777\":1509788625192,\"1024587316776\":1509788625193,\"1024587316791\":1509788625192,\"1020294053468\":1465470268285,\"1023612249110\":1509788624955,\"1024587316786\":1509788625193,\"1024587316784\":1509788625192,\"1024587316799\":1509788625192,\"1023612249119\":1509788624955,\"1023612249118\":1509788624955,\"1023612249114\":1509788624955,\"1023877927437\":1491634246506,\"1022836806713\":1509788624820,\"1022836806715\":1509788624820,\"1015241199863\":1480585069068,\"1022090528948\":1478686417180,\"1052708785\":1478950494920,\"1023306723380\":1509788625157,\"1024002710191\":1491634246532,\"1024002710190\":1491634246532,\"1023306723370\":1509788625157,\"1023306723368\":1509788625157,\"1826053581\":1444487341701,\"1023306723367\":1509788625157,\"1023306723365\":1509788625157,\"1023626667300\":1509788624552,\"1016952125139\":1444487341759,\"1013855502241\":1478686804027,\"1020443338483\":1478686417224,\"1024587317244\":1509788624876,\"1024964138317\":1509788624915,\"1025407028907\":1509788625144,\"1022857909945\":1509788625074,\"1025407028905\":1509788625113,\"1024529513242\":1509788624236,\"1025407028911\":1509788625131,\"1021024634980\":1478686417091,\"1025407028909\":1509788625131,\"1025407028908\":1509788625132,\"1024587317135\":1509788624239,\"1021926956592\":1478686417141,\"1024587317132\":1509788624239,\"1012233510006\":1478686417073,\"1024587317130\":1509788624238,\"1025407028902\":1509788625165,\"1023924721419\":1509788624970,\"1008082454464\":1478686804023,\"1024587317143\":1509788624239,\"1024587317142\":1509788624239,\"1024587317141\":1509788624239,\"1024587317140\":1509788624239,\"1025407028920\":1509788625169,\"1024587317137\":1509788624239,\"1024587317150\":1509788624239,\"4994832623\":1509788667394,\"1024587317149\":1509788624239,\"1025407028913\":1509788625132,\"1024587317148\":1509788624239,\"1024587317147\":1509788624239,\"1022032069739\":1478686417165,\"1001519652494\":1478686417022,\"1021332159888\":1478686417103,\"1024587317145\":1509788624239,\"1024587317159\":1509788624239,\"1024587317157\":1509788624239,\"1024587317156\":1509788624239,\"1024587317155\":1509788624239,\"1024587317154\":1509788624239,\"1024587317153\":1509788624239,\"1024587317152\":1509788624239,\"1016677500727\":1480585069076,\"1022423022765\":1478686417210,\"1024587317163\":1509788624239,\"1024587317162\":1509788624238,\"1024587317160\":1509788624239,\"1021962862630\":1478686417148,\"1025407028891\":1509788625244,\"1021949100407\":1509788624354,\"1025407028893\":1509788625165,\"1022416207187\":1478686804069,\"1025407028887\":1509788625246,\"1021324294712\":1478686416984,\"1022415683037\":1478686417070,\"1024597409722\":1509788624939,\"1017504061060\":1478686804053,\"1025798563605\":1509788624200,\"1024291327435\":1509788624517,\"1008057288109\":1478686804030,\"1025798563607\":1509788624197,\"1025798563606\":1509788624203,\"1021794047726\":1509788624394,\"1024291327426\":1509788624516,\"1024291327431\":1509788624517,\"1000526037670\":1444487341703,\"1022836806789\":1509788624535,\"1016952124996\":1444487341759,\"1022836806790\":1509788624535,\"1022159473746\":1478686417186,\"811532689\":1478686804029,\"1024291327418\":1509788624516,\"1022055400964\":1478686417173,\"1022480294308\":1478943089254,\"1022836806877\":1509788624535,\"1022836806876\":1509788624535,\"1024195119055\":1509788624184,\"1023821828493\":1491634246536,\"1024195119052\":1509788624184,\"1024195119062\":1509788624184,\"1021917912594\":1509788624916,\"1024195119059\":1509788624185,\"1024195119057\":1509788624184,\"1024195119068\":1509788624183,\"1022265602772\":1509788625083,\"1024265111579\":1509788624450,\"1024265111576\":1509788624450,\"1024459125864\":1509788624998,\"1024265111582\":1509788624450,\"1024265111581\":1509788624450,\"1024265111580\":1509788624450,\"1021949100552\":1509788624354,\"1022077291125\":1478686417061,\"1022078339685\":1478686417177,\"1025557263667\":1509788624343,\"1025636957808\":1509788624339,\"1001519652348\":1478686417022,\"1024304697230\":1509788624923,\"1024304697229\":1509788624923,\"1018967297524\":1509788624453,\"1332051237\":1478686804024,\"1024195118181\":1509788624185,\"1024195118180\":1509788624184,\"1024195118178\":1509788624184,\"1016952124853\":1444487341759,\"1024587316367\":1509788625192,\"1024587316366\":1509788625191,\"1024587316375\":1509788625192,\"1024587316374\":1509788625192,\"1022825666453\":1509788624375,\"1024587316373\":1509788625192,\"1023364921334\":1509788624534,\"1024587316370\":1509788625192,\"1023105369965\":1509788624462,\"1019931347487\":1509788624386,\"1024587316368\":1509788625192,\"1024587316383\":1509788625191,\"1024587316382\":1509788625192,\"1024587316381\":1509788625192,\"1024587316376\":1509788625192,\"1024587316391\":1509788625191,\"1024587316390\":1509788625191,\"1018546558101\":1480585069070,\"1024587316384\":1509788625191,\"1024587316399\":1509788625192,\"1021239620635\":1478686417099,\"1024587316398\":1509788625192,\"1022067590526\":1478686417175,\"1024587316397\":1509788625192,\"1022067590527\":1478686417175,\"1021679096407\":1509788624400,\"1024587316396\":1509788625191,\"1024587316395\":1509788625191,\"1024195118166\":1509788624184,\"1022200368508\":1478686417064,\"1024195118164\":1509788624184,\"1024587316404\":1509788625191,\"1024587316403\":1509788625191,\"1024587316402\":1509788625192,\"1024587316401\":1509788625191,\"1025792010080\":1509788624814,\"1019247033676\":1509788624316,\"4994833356\":1509788667394,\"1019340089332\":1509788624390,\"1022553564769\":1509788624937,\"1022067590545\":1478686417175,\"1021343170217\":1478686416982,\"1013735961916\":1478686804033,\"1024587316310\":1509788624472,\"1021508707542\":1478686417244,\"1022067590535\":1478686417175,\"1024587316307\":1509788624472,\"1024587316306\":1509788624472,\"1022067590530\":1478686417175,\"1024587316319\":1509788624472,\"1023364921147\":1509788625100,\"5056307193\":1517735696201,\"1021814364822\":1478686417052,\"1024587316317\":1509788624472,\"1024587316315\":1509788624472,\"1024587316312\":1509788624472,\"1024587316326\":1509788624472,\"1024587316323\":1509788624472,\"1024587316321\":1509788624472,\"1024587316335\":1509788624472,\"1024587316334\":1509788624472,\"1024587316333\":1509788624472,\"1024241781717\":1509788624473,\"1024241781716\":1509788624473,\"1024459388107\":1509788625070,\"1020917154087\":1478686417081,\"1024587316330\":1509788624472,\"4994833179\":1509788667394,\"1024587316329\":1509788624472,\"1024241781712\":1509788624473,\"1017170355791\":1478686804035,\"1024587316343\":1509788624472,\"1017170355790\":1478686804035,\"1024587316342\":1509788624472,\"1024241781710\":1509788624473,\"1017170355789\":1478686804035,\"1024587316341\":1509788624472,\"1017170355788\":1478686804035,\"1024241781708\":1509788624473,\"1017170355787\":1478686804035,\"1024587316339\":1509788624472,\"1024241781707\":1509788624473,\"1017170355786\":1478686804035,\"1024587316338\":1509788624472,\"1017170355785\":1478686804035,\"1017170355784\":1478686804035,\"1024587316336\":1509788624472,\"1022123297054\":1478686417183,\"1017170355783\":1478686804035,\"1017170355782\":1478686804035,\"1024587316346\":1509788624472,\"1021800864323\":1509788625078,\"1024587316344\":1509788624472,\"1023660352711\":1509788624198,\"1018707910033\":1465470268320,\"1024241781690\":1509788624473,\"1021756299073\":1509788624919,\"1024587316239\":1509788624471,\"1025607727324\":1509788625084,\"1000970206299\":1478686804039,\"1024587316236\":1509788624472,\"1024587316233\":1509788624471,\"1025607727322\":1509788625084,\"1021307648144\":1478686417238,\"1019340089178\":1509788624391,\"1019340089179\":1509788624391,\"1025792010187\":1509788624814,\"1019340089177\":1509788624391,\"1025791485909\":1509788624428,\"1024587316243\":1509788624471,\"1024587316242\":1509788624471,\"1019340089180\":1509788624391,\"1025791485911\":1509788624425,\"1019340089181\":1509788624391,\"1025791485910\":1509788624431,\"1024587316240\":1509788624471,\"1024587316255\":1509788624471,\"1025791485912\":1509788624406,\"1024587316252\":1509788624471,\"1021236212826\":1478686417003,\"1024587316249\":1509788624471,\"1025627520537\":1509788625022,\"1024587316260\":1509788624471,\"1024587316258\":1509788624471,\"1024587316257\":1509788624471,\"1008546078730\":1478686804054,\"1024587316271\":1509788624471,\"1024587316268\":1509788624471,\"1024587316265\":1509788624471,\"1018707910052\":1465470268320,\"1024587316277\":1509788624471,\"1024587316275\":1509788624471,\"1024869379299\":1509788624949,\"1023062245721\":1509788625048,\"1024587316272\":1509788624471,\"1024587316285\":1509788624471,\"1012415040179\":1478686417074,\"1024587316284\":1509788624471,\"1024587316282\":1509788624471,\"1024587316281\":1509788624471,\"1024587316280\":1509788624471,\"1021360864821\":1478686417042,\"1025407028458\":1509788624208,\"1024272713860\":1509788624949,\"1025407028451\":1509788624208,\"1022443208124\":1478686417295,\"1023605825621\":1509788624229,\"1025407028472\":1509788624208,\"1023444089290\":1509788624970,\"1025407028425\":1509788624228,\"1025407028431\":1509788624208,\"1022599701625\":1480585069131,\"1012133368853\":1478686417073,\"1021964435993\":1478686417148,\"1025407028418\":1509788624270,\"1025407028417\":1509788624270,\"1021325604990\":1478686417103,\"1025407028423\":1509788624228,\"1024983930381\":1509788624924,\"1025407028420\":1509788624228,\"1025407028445\":1509788624208,\"1022599701603\":1480585069131,\"1020957394461\":1478686417085,\"1014007145560\":1478686804022,\"1013189039379\":1478686804062,\"1025407028436\":1509788624208,\"1024490453965\":1509788624990,\"1021353524935\":1478686417006,\"1013735961844\":1478686804033,\"1024444315140\":1509788624426,\"1006773033983\":1491634246510,\"1023324418397\":1509788624925,\"1023736768712\":1509788625019,\"1023253351704\":1509788625042,\"1022394710211\":1478686417070,\"1018182968279\":1465470268237,\"1024490453976\":1509788624990,\"1025643118241\":1509788624365,\"1025643118240\":1509788624365,\"1024241781283\":1509788624882,\"1024241781280\":1509788624882,\"1024241781278\":1509788624882,\"1021668742077\":1478686417248,\"1020614775528\":1478686416995,\"1025643118237\":1509788624365,\"1024241781275\":1509788624882,\"1025643118236\":1509788624365,\"1025643118239\":1509788624365,\"1025875896703\":1509788667404,\"1025643118238\":1509788624365,\"1024241781272\":1509788624882,\"1023617624027\":1509788624325,\"1024241781271\":1509788624882,\"1024490453985\":1509788624990,\"1022482391856\":1478943089488,\"1024241781266\":1509788624882,\"1024265111915\":1509788624860,\"1022443208128\":1478686417295,\"873269118\":1478686804024,\"1024265111919\":1509788624861,\"1024265111918\":1509788624861,\"1016897466453\":1478686804053,\"1024265111917\":1509788624861,\"1024265111916\":1509788624861,\"359081706\":1478686417023,\"1021881081765\":1478686417137,\"1020782155809\":1478686416997,\"1021464668030\":1478686417108,\"1021129388923\":1478686417233,\"1021881081770\":1478686417137,\"1025593702741\":1509788624566,\"1020977710153\":1478686417087,\"1000456314007\":1478686804064,\"1023427705423\":1509788624516,\"1016847922055\":1478686804018,\"1021926956238\":1478686417141,\"1025791485627\":1509788624827,\"1022302828202\":1478686417199,\"1025791485629\":1509788624822,\"1025791485628\":1509788624832,\"1025791485630\":1509788624616,\"1025169654769\":1509788624333,\"1025169654768\":1509788624333,\"1025643118136\":1509788624365,\"1021325605008\":1478686417103,\"1025169654771\":1509788624333,\"1025169654770\":1509788624333,\"1025169654773\":1509788624333,\"1025169654772\":1509788624333,\"1020203088892\":1465470268277,\"1025169654775\":1509788624333,\"1025169654774\":1509788624333,\"1025169654777\":1509788624333,\"1025169654776\":1509788624333,\"1025169654779\":1509788624333,\"1025643118131\":1509788624365,\"1025169654778\":1509788624333,\"1025169654781\":1509788624333,\"1025643118133\":1509788624365,\"1025169654780\":1509788624333,\"1025643118132\":1509788624365,\"1024869379546\":1509788624949,\"1025169654783\":1509788624333,\"1025643118135\":1509788624365,\"1025169654782\":1509788624333,\"1025643118134\":1509788624365,\"1022081616880\":1478686417012,\"1025169654761\":1509788624333,\"1025626079012\":1509788624364,\"1025169654763\":1509788624333,\"1025169654762\":1509788624333,\"1025169654765\":1509788624333,\"1025626079009\":1509788624364,\"1025169654764\":1509788624333,\"1025626079008\":1509788624364,\"1025169654767\":1509788624333,\"1025626079011\":1509788624364,\"1025169654766\":1509788624333,\"1025626079010\":1509788624364,\"1025626079005\":1509788624364,\"1025626079004\":1509788624364,\"1025626079007\":1509788624364,\"1025626079006\":1509788624364,\"1025626079001\":1509788624364,\"1020102554065\":1509788624361,\"1025626079002\":1509788624364,\"4818414810\":1509788624158,\"1024670015505\":1509788625069,\"1022430494366\":1478686417294,\"1008546079007\":1478686804054,\"1019001795106\":1480585069070,\"1021988290593\":1478686417154,\"1022534033629\":1480585069076,\"1019001795111\":1480585069070,\"1019001795115\":1480585069070,\"4994832970\":1509788667394,\"1024985503477\":1509788624169,\"1024362918949\":1509788667509,\"1022029316447\":1478686417267,\"1021639518878\":1478686417119,\"1024362918945\":1509788667509,\"1022491305436\":1478943089315,\"1022646103697\":1509788625061,\"1022192503691\":1478686417188,\"1022491305432\":1478943089315,\"1023612248310\":1509788624949,\"1024362918964\":1509788667508,\"1023612248317\":1509788624949,\"1023612248319\":1509788624949,\"1024362918973\":1509788667508,\"1022836805920\":1509788624421,\"1023612248312\":1509788624949,\"1022836805923\":1509788624421,\"1024587315942\":1509788624478,\"1023612248260\":1509788624949,\"1024587315941\":1509788624477,\"1023612248263\":1509788624949,\"1023612248262\":1509788624949,\"1021964436762\":1478686417148,\"1023612248257\":1509788624949,\"1024587315950\":1509788624477,\"1019963330123\":1478686804026,\"1023612248270\":1509788624949,\"1024587315947\":1509788624477,\"1024587315946\":1509788624478,\"1023612248264\":1509788624949,\"1025169654785\":1509788624333,\"1024587315959\":1509788624477,\"1025169654784\":1509788624333,\"1024587315958\":1509788624477,\"1025169654787\":1509788624333,\"1021437535925\":1478686417241,\"1025169654786\":1509788624333,\"1025169654789\":1509788624333,\"1024587315955\":1509788624477,\"1023612248273\":1509788624949,\"1022491305440\":1478943089315,\"1025169654788\":1509788624333,\"1023612248275\":1509788624949,\"1024587315967\":1509788624477,\"1023612248285\":1509788624949,\"1024362918942\":1509788667509,\"1024587315962\":1509788624477,\"1024587315961\":1509788624477,\"1023612248283\":1509788624949,\"1022204523762\":1478686417190,\"1024195117670\":1509788624183,\"1022231917934\":1478686417193,\"1024195117678\":1509788624183,\"1022544388290\":1509788625075,\"1024195117673\":1509788624183,\"1009561582132\":1491634246511,\"1023612248246\":1509788624949,\"1022231917951\":1478686417193,\"1023612248243\":1509788624949,\"1020917942213\":1478686417032,\"573904488\":1478950494911,\"1023612248251\":1509788624949,\"573904490\":1478950494911,\"1024195117639\":1509788624184,\"1022836805980\":1509788624421,\"573904471\":1478950494911,\"865535988\":1478950494917,\"1024362918978\":1509788667508,\"1024195117633\":1509788624184,\"1022836805978\":1509788624421,\"1020802471957\":1478686417030,\"1025407028098\":1509788624838,\"1024195117643\":1509788624184,\"1025407028103\":1509788624838,\"1024195117642\":1509788624184,\"1018242344827\":1509788624363,\"1025407028100\":1509788624838,\"1024195117649\":1509788624184,\"1024136529874\":1509788624972,\"1021595873102\":1478686417115,\"1021595873101\":1478686417115,\"1021595873099\":1478686417115,\"1025407028075\":1509788624917,\"1024749446077\":1509788625020,\"1021700462201\":1478686804046,\"1025407028078\":1509788624865,\"1025407028076\":1509788624916,\"1019811153183\":1509788625077,\"1025407028091\":1509788624838,\"1025601699553\":1509788625019,\"1025407028089\":1509788624838,\"1025407028095\":1509788624838,\"1025407028083\":1509788624826,\"1025407028080\":1509788624865,\"1021981476511\":1478686417263,\"133116738\":1491634246510,\"1022231917957\":1478686417193,\"1022458805013\":1478686417217,\"1022836806027\":1509788625103,\"1022836806026\":1509788625103,\"1001519651692\":1478686417022,\"1022084631726\":1509788624530,\"1022292472143\":1478686804029,\"1012348453005\":1478686417074,\"1022238864920\":1509788624947,\"1022836806116\":1509788625103,\"1022238864923\":1509788624941,\"1022238864922\":1509788624932,\"1024512867724\":1509788625028,\"1022836806118\":1509788625103,\"1022238864925\":1509788624931,\"1022238864924\":1509788624931,\"1022238864926\":1509788624931,\"1025068474075\":1509788624598,\"1020933275738\":1478686417000,\"1023330318137\":1509788625040,\"1016851068189\":1509788624376,\"1000526038557\":1444487341706,\"1025295748483\":1509788624945,\"1020444254922\":1478686804033,\"1021147215077\":1478686417096,\"1026232403395\":1514456869769,\"1009652803124\":1478686804051,\"1009652803126\":1478686804051,\"1023612248518\":1509788624949,\"1009652803122\":1478686804051,\"1023612248515\":1509788624949,\"1394828804\":1478686804033,\"1009652803123\":1478686804051,\"1009652803128\":1478686804051,\"1021740175798\":1478686417253,\"1023612248522\":1509788624949,\"1009652803117\":1478686804051,\"1009652803119\":1478686804051,\"1020339922223\":1465470268236,\"1009652803115\":1478686804051,\"1826052503\":1444487341700,\"1826052506\":1444487341704,\"1023612248488\":1509788624949,\"1826052504\":1444487341701,\"1022200891987\":1478686417190,\"1023612248499\":1509788624949,\"1024445100054\":1509788625070,\"1025792008263\":1509788624419,\"1021568479156\":1478686804040,\"1444504440\":1444487341721,\"1021568479157\":1478686804040,\"1023612248452\":1509788624950,\"1021568479158\":1478686804040,\"1021568479159\":1478686804040,\"1023612248449\":1509788624950,\"1022639550362\":1509788624388,\"1021662194247\":1509788624534,\"1021568479154\":1478686804040,\"1021568479155\":1478686804040,\"1023076925866\":1509788625047,\"1021568479164\":1478686804040,\"1021568479165\":1478686804040,\"1021568479166\":1478686804040,\"1826052540\":1444487341700,\"1826052539\":1444487341704,\"1021568479160\":1478686804040,\"1023612248457\":1509788624950,\"1826052538\":1444487341701,\"1021568479161\":1478686804040,\"1826052537\":1444487341699,\"1021568479162\":1478686804040,\"1021568479163\":1478686804040,\"1023612248471\":1509788624950,\"1021849100139\":1509788624533,\"1023612248464\":1509788624950,\"1022639550345\":1509788624388,\"1023612248478\":1509788624949,\"1023612248475\":1509788624949,\"1826052439\":1444487341703,\"1826052438\":1444487341699,\"1021500580673\":1478686804034,\"1826052437\":1444487341700,\"1020504813500\":1478686804031,\"1021500580674\":1478686804031,\"1020504813501\":1478686804031,\"1024735028124\":1509788667494,\"1024735028127\":1509788667494,\"710614998\":1478686804064,\"1024529514452\":1509788625175,\"1022050288530\":1478686417172,\"1021849100175\":1509788624194,\"1022836805806\":1509788624421,\"1025607860096\":1509788624539,\"1025607860103\":1509788624539,\"1022449892280\":1478686417302,\"1022836805802\":1509788624421,\"1025607860107\":1509788624547,\"1023612248446\":1509788624949,\"1001519651448\":1478686417022,\"1023572141304\":1509788624974,\"1025784012838\":1509788624352,\"1025784012842\":1509788624350,\"1025792008357\":1509788624419,\"1018085457869\":1480585069073,\"1024587315975\":1509788624477,\"1024587315974\":1509788624478,\"1021841629102\":1509788624394,\"1024587315973\":1509788624478,\"1024587315972\":1509788624477,\"1015058227975\":1478686804062,\"1025607860183\":1509788624826,\"1024587315970\":1509788624477,\"1024587315969\":1509788624477,\"1024587315968\":1509788624477,\"1024587315980\":1509788624477,\"1826052379\":1444487341700,\"1024587315979\":1509788624477,\"1023042324272\":1509788625048,\"1024587315977\":1509788624477,\"1024587315976\":1509788624477,\"1024887985451\":1509788624439,\"1018741720197\":1478686804056,\"1018741720198\":1478686804056,\"1018741720199\":1478686804056,\"1018741720200\":1478686804056,\"1025607860171\":1509788624864,\"4998765610\":1509788667394,\"1018741720201\":1478686804056,\"1022071655680\":1478686417177,\"1018741720202\":1478686804056,\"1018741720203\":1478686804056,\"1025607860168\":1509788624864,\"1018741720204\":1478686804056,\"1018741720205\":1478686804056,\"1021667955991\":1509788624352,\"1018741720206\":1478686804056,\"1023612248325\":1509788624949,\"1023612248324\":1509788624949,\"1023612248327\":1509788624949,\"1023612248326\":1509788624949,\"1021849100278\":1509788624817,\"1023612248333\":1509788624949,\"1021165041452\":1478686417003,\"1023612248329\":1509788624949,\"1023612248331\":1509788624949,\"1020352636124\":1509788624467,\"1826052390\":1444487341701,\"1024708288576\":1509788624512,\"1826052389\":1444487341699,\"1021500580659\":1478686804026,\"1020574411745\":1478686417026,\"1021047967275\":1478686417092,\"1023612248336\":1509788624949,\"1024190006115\":1509788667888,\"1021500580663\":1478686804032,\"1023612248338\":1509788624949,\"1826052396\":1444487341700,\"1023095930960\":1509788624996,\"1021561662657\":1478686804041,\"1025607860206\":1509788624866,\"1025911285760\":1509788667462,\"1020504813505\":1478686804031,\"1025142266323\":1509788624461,\"1023612248805\":1509788624956,\"1023612248807\":1509788624956,\"1022449891371\":1478686417302,\"1023612248809\":1509788624956,\"1021027520281\":1478686417035,\"1023612248810\":1509788624956,\"1023612248821\":1509788624956,\"1023612248823\":1509788624956,\"1023612248817\":1509788624956,\"1023612248816\":1509788624956,\"1021986981343\":1478686417057,\"1023612248830\":1509788624956,\"1008903508386\":1478686804068,\"1023612248824\":1509788624956,\"1001519651278\":1478686417022,\"1024195117112\":1509788624184,\"1021700986073\":1478686804065,\"209664587\":1444487341736,\"1021208293908\":1478686804027,\"1024265112611\":1509788624563,\"1024265112610\":1509788624563,\"1023612248796\":1509788624956,\"1021302144141\":1509788625019,\"709565553\":1478686804064,\"1024265112609\":1509788624563,\"1023453920335\":1509788625072,\"1024265112608\":1509788624563,\"1023612248798\":1509788624956,\"1024265112613\":1509788624563,\"1020391826106\":1478686804033,\"1024954569378\":1509788624923,\"1020784647470\":1478686417076,\"1021886978973\":1478686804027,\"1022241486079\":1478686417066,\"1013058103381\":1444487341758,\"1024730570757\":1509788624923,\"1024730570756\":1509788624924,\"1021734146734\":1478686416973,\"1024730570759\":1509788624924,\"1024730570758\":1509788624924,\"1022043471928\":1478686417011,\"1024730570753\":1509788624924,\"1021679097442\":1509788624400,\"1024730570755\":1509788624924,\"1024730570754\":1509788624923,\"1023612248709\":1509788624956,\"1022399561039\":1509788624454,\"1024195117124\":1509788624184,\"1022836806489\":1509788624820,\"1024195117122\":1509788624184,\"1023612248704\":1509788624956,\"1023612248706\":1509788624956,\"1024195117134\":1509788624184,\"1023612248716\":1509788624956,\"1022836806487\":1509788624820,\"1024195117131\":1509788624185,\"1023612248713\":1509788624956,\"1023612248712\":1509788624956,\"1023612248714\":1509788624956,\"1023612248725\":1509788624956,\"1023612248727\":1509788624956,\"1023612248726\":1509788624956,\"1023612248723\":1509788624956,\"1023612248722\":1509788624956,\"1020922529065\":1478686417081,\"1009848625602\":1491634246513,\"1021673461265\":1478686417248,\"1009848625607\":1491634246513,\"1024637642574\":1509788667502,\"1021426657213\":1478686417241,\"1023931928928\":1491634246517,\"1021673461262\":1478686417248,\"1024926782483\":1509788624510,\"1447518430\":1444487341704,\"1447518429\":1444487341700,\"1447518428\":1444487341701,\"481896997\":1444487341737,\"1024926782487\":1509788624511,\"1023612248698\":1509788624956,\"1017554656439\":1478686804063,\"1025032429311\":1509788624976,\"1017554656438\":1478686804063,\"1024761900766\":1509788624459,\"1023612248644\":1509788624956,\"1017554656437\":1478686804063,\"1009848625634\":1491634246513,\"1017554656436\":1478686804063,\"1017554656435\":1478686804063,\"1020309256547\":1465470268300,\"1017554656434\":1478686804063,\"1017554656433\":1478686804063,\"1017554656432\":1478686804063,\"1021746205332\":1478686417126,\"1017554656447\":1478686804064,\"1017554656446\":1478686804064,\"1017554656445\":1478686804064,\"1017554656444\":1478686804064,\"1023612248654\":1509788624956,\"1017554656443\":1478686804064,\"1017554656442\":1478686804064,\"1017554656441\":1478686804063,\"1023612248651\":1509788624956,\"1017554656440\":1478686804063,\"1017554656430\":1478686804063,\"1017554656429\":1478686804063,\"1017554656428\":1478686804063,\"1017554656427\":1478686804063,\"1017554656426\":1478686804063,\"1021662194076\":1509788624195,\"1843747620\":1444487341720,\"1023306725370\":1509788624858,\"1023612248612\":1509788624956,\"1021885537073\":1478686417044,\"1023306725375\":1509788624858,\"1020895921163\":1478686417079,\"1023306725374\":1509788624858,\"1023306725373\":1509788624858,\"1023306725363\":1509788624221,\"1023612248621\":1509788624956,\"1023306725362\":1509788624562,\"1017408640102\":1509788624286,\"1024265112790\":1509788625164,\"1023612248618\":1509788624956,\"1013058103500\":1444487341758,\"1023306725355\":1509788624221,\"1022836806637\":1509788624820,\"1024265112779\":1509788625164,\"1023306725354\":1509788624221,\"1023612248628\":1509788624956,\"1024265112778\":1509788625164,\"1020869314226\":1478686416999,\"1025295748697\":1509788624945,\"1017554656450\":1478686804064,\"1023306725357\":1509788624221,\"1017554656448\":1478686804064,\"1023306725356\":1509788624221,\"1024265112780\":1509788625164,\"1023306725347\":1509788624562,\"1023306725345\":1509788624562,\"1022836806630\":1509788624820,\"1023612248638\":1509788624956,\"1023612248633\":1509788624956,\"1024265112775\":1509788625164,\"1023306725349\":1509788624562,\"1026222709139\":1514456869775,\"1023306725348\":1509788624562,\"1021281304341\":1478686417004,\"1001388183918\":1480585069061,\"1020802210441\":1478686417225,\"1020908242140\":1478686417032,\"1023612248597\":1509788624956,\"1023612248596\":1509788624956,\"1023612248599\":1509788624956,\"1023612248604\":1509788624956,\"1021949101822\":1509788624357,\"1022516077728\":1509788624392,\"1018901630120\":1509788624301,\"1023961947918\":1509788625004,\"1020897756630\":1478686417032,\"1022291817150\":1478686417198,\"1023612249058\":1509788624957,\"1023612249068\":1509788624957,\"1023612249071\":1509788624957,\"1023612249070\":1509788624957,\"1023612249064\":1509788624957,\"1023612249067\":1509788624957,\"1022071787457\":1478686417060,\"1023961947930\":1509788625005,\"1023961947925\":1509788625004,\"1023961947927\":1509788625005,\"1023961947920\":1509788625004,\"1022836806176\":1509788625103,\"1023961947923\":1509788625004,\"1022836806179\":1509788625103,\"1021406078841\":1478686417006,\"1017318075177\":1465470268237,\"1023961947944\":1509788625004,\"1023961947947\":1509788625004,\"1023612249037\":1509788624957,\"1023612249038\":1509788624957,\"1023961947937\":1509788625005,\"1023961947936\":1509788625005,\"1023612249045\":1509788624957,\"1023612249047\":1509788624957,\"1023612249043\":1509788624957,\"1023961947962\":1509788625004,\"1018268951130\":1478686804020,\"1023612249053\":1509788624957,\"1023961947959\":1509788625005,\"1023961947953\":1509788625004,\"1023612249050\":1509788624957,\"1017554656599\":1478686804064,\"1017554656598\":1478686804064,\"1826053013\":1444487341705,\"1017554656597\":1478686804064,\"1025032429341\":1509788624976,\"1017554656596\":1478686804064,\"1017554656595\":1478686804064,\"1017554656594\":1478686804064,\"1001519650967\":1478686417022,\"1017554656607\":1478686804064,\"1017554656606\":1478686804064,\"1017554656605\":1478686804064,\"1017554656604\":1478686804064,\"1017554656603\":1478686804064,\"1017554656602\":1478686804064,\"1017554656601\":1478686804064,\"1023961947971\":1509788625005,\"1023961947970\":1509788625005,\"1006923892461\":1478686804054,\"1022836806252\":1509788624196,\"1022339792777\":1478686417288,\"1022836806251\":1509788624196,\"578753826\":1478686417023,\"1025032429314\":1509788624976,\"1023612248964\":1509788624957,\"1023612248966\":1509788624957,\"1023612248961\":1509788624957,\"1022897889020\":1509788624814,\"1023612248960\":1509788624957,\"1023612248973\":1509788624957,\"1023612248972\":1509788624957,\"1023612248969\":1509788624957,\"1023612248968\":1509788624957,\"1023612248970\":1509788624957,\"1023612248982\":1509788624957,\"1023612248977\":1509788624957,\"1023612248976\":1509788624957,\"1021561663050\":1478686804042,\"1023612248979\":1509788624957,\"1017554656608\":1478686804064,\"1019949567535\":1509788624386,\"1025032429350\":1509788624976,\"1022836806209\":1509788624196,\"1022836806208\":1509788624196,\"1025032429345\":1509788624976,\"1021647382921\":1509788624400,\"1022836806323\":1509788624196,\"1022836806319\":1509788624196,\"1021068937997\":1478686417093,\"1021468730162\":1478686417007,\"1020362990892\":1478686804057,\"1024985502356\":1509788624169,\"1021381703768\":1478686417042,\"1024462533107\":1509788624989,\"1024462533106\":1509788624989,\"1024462533105\":1509788624989,\"1023572141806\":1509788624974,\"1024462533104\":1509788624989,\"1020850706486\":1478686804057,\"1022836806295\":1509788624196,\"1023612248910\":1509788624956,\"1022836806289\":1509788624196,\"1022067982525\":1509788624937,\"1023612248916\":1509788624956,\"1023612248913\":1509788624956,\"1023612248912\":1509788624956,\"1024462533103\":1509788624989,\"1024462533102\":1509788624989,\"1024462533101\":1509788624989,\"1024462533099\":1509788624989,\"1022067982508\":1509788624291,\"1016012585021\":1480585069078,\"1023612248869\":1509788624956,\"1025284604055\":1509788624971,\"1025284604054\":1509788624945,\"1023612248868\":1509788624956,\"1025284604053\":1509788624940,\"1023612248871\":1509788624956,\"1021561663224\":1478686804045,\"1025284604050\":1509788624946,\"1025284604063\":1509788624932,\"1023612248876\":1509788624956,\"1021795225754\":1509788624403,\"1025284604059\":1509788624946,\"1025284604058\":1509788624945,\"1023612248874\":1509788624956,\"1023612248884\":1509788624956,\"1020782681181\":1478686417076,\"1023612248881\":1509788624956,\"1022231787256\":1478686417282,\"1023572141713\":1509788624974,\"1022385405400\":1478686417205,\"1023612248888\":1509788624956,\"1023612248891\":1509788624956,\"1025284604086\":1509788624946,\"1020797229902\":1478686417077,\"1025284604082\":1509788624945,\"1023612248832\":1509788624956,\"1025284604081\":1509788624945,\"1020797229895\":1478686417077,\"1025284604070\":1509788624946,\"1025284604069\":1509788624945,\"1012454231521\":1478686417074,\"1023737687199\":1491634246512,\"1025284604066\":1509788624940,\"1025284604064\":1509788624946,\"1025284604079\":1509788624971,\"1025284604078\":1509788624930,\"1025284604077\":1509788624946,\"1025284604076\":1509788624940,\"1025284604075\":1509788624945,\"1025284604072\":1509788624946,\"1023066311535\":1509788625181,\"1018468833693\":1478686804031,\"1018178250947\":1509788624453,\"1021949102088\":1509788624357,\"1021906114233\":1509788624465,\"1023066311551\":1509788625182,\"2015051791\":1478686804029,\"1023066311547\":1509788625182,\"1023066311544\":1509788625182,\"1023066311540\":1509788625183,\"1025593701076\":1509788624455,\"1023066311536\":1509788625183,\"725816161\":1444487341728,\"1025322352944\":1509788624305,\"1021802172641\":1509788625082,\"1022426822050\":1478686417211,\"725816178\":1444487341718,\"1024146361150\":1509788625102,\"1021291131236\":1478686417102,\"1023939665752\":1509788624970,\"1008047328409\":1478686804022,\"1020935507152\":1465470268182,\"1023995630157\":1491634246532,\"1021385242601\":1478686417105,\"1020935507139\":1465470268182,\"1015583559111\":1465470268313,\"1021571621585\":1478686417114,\"1020935507146\":1465470268182,\"1022451594856\":1478686417296,\"1021623264752\":1478686417049,\"1024313214301\":1509788624926,\"1002430356747\":1478686804059,\"1025322353011\":1509788624309,\"1024557692140\":1509788624453,\"1022028139806\":1478686416976,\"1020962246280\":1478686417001,\"1025792011628\":1509788624193,\"1019022899944\":1480585069072,\"1021235691008\":1465469681394,\"1025817308935\":1509788667793,\"1019995177993\":1509788624287,\"1020917943046\":1478686417032,\"1012124852004\":1478686417223,\"1016952127332\":1444487341760,\"1025458043459\":1509788624361,\"1022758689126\":1509788624426,\"1023066311621\":1509788625181,\"1023066311619\":1509788625181,\"1024134957937\":1509788667499,\"1023066311617\":1509788625182,\"1023066311616\":1509788625181,\"1022238603893\":1509788624946,\"1024134957933\":1509788667498,\"1022238603895\":1509788624941,\"1024134957935\":1509788667499,\"1022238603894\":1509788624932,\"1024134957934\":1509788667499,\"1024134957930\":1509788667499,\"1024134957927\":1509788667499,\"1022238603897\":1509788624941,\"1022238603896\":1509788624933,\"1024134957920\":1509788667499,\"1021440551604\":1478686417107,\"1023066311598\":1509788625183,\"1024255935044\":1509788667496,\"1023066311595\":1509788625182,\"1020068083936\":1509788625076,\"1020068083937\":1509788625078,\"1024255935040\":1509788667829,\"1024313214453\":1509788624927,\"349645855\":1517734758204,\"1024313214452\":1509788624927,\"1016944918144\":1478686804015,\"1023066311614\":1509788625182,\"1024529773184\":1509788624467,\"1023066311609\":1509788625183,\"1023066311567\":1509788625181,\"1023066311566\":1509788625181,\"4994830676\":1509788667394,\"1024687057949\":1509788624818,\"1021037478551\":1465470268183,\"1023066311557\":1509788625181,\"1022473480238\":1478943089486,\"1023066311554\":1509788625182,\"1024624404572\":1509788667890,\"1023066311553\":1509788625182,\"1023066311582\":1509788625181,\"1021992881050\":1478686417011,\"1021992881052\":1478686417011,\"1022473480241\":1478943089486,\"1021992881053\":1478686417011,\"1021992881054\":1478686417011,\"1025458043415\":1509788624361,\"1023066311577\":1509788625181,\"1025458043417\":1509788624361,\"1025792011744\":1509788624193,\"1025458043416\":1509788624361,\"1025458043418\":1509788624361,\"1025322353130\":1509788624307,\"1023066311570\":1509788625181,\"1023066311569\":1509788625181,\"1021888812220\":1478686804044,\"1021888812221\":1478686804044,\"1021888812222\":1478686804044,\"1021469126051\":1478686417007,\"1021888812223\":1478686804044,\"1024785883154\":1509788624481,\"1021888812217\":1478686804044,\"1021888812218\":1478686804044,\"1021888812219\":1478686804044,\"1025322352665\":1509788624306,\"1025245285534\":1509788624937,\"1025245285532\":1509788624937,\"1021888812200\":1478686804044,\"1025245285531\":1509788624937,\"1021888812201\":1478686804044,\"1025245285530\":1509788624937,\"1025245285528\":1509788624937,\"1021888812196\":1478686804044,\"1021888812197\":1478686804044,\"1021888812198\":1478686804044,\"1021888812199\":1478686804044,\"599988952\":1478950494912,\"1021888812192\":1478686804044,\"1024412465743\":1509788625070,\"1021888812193\":1478686804044,\"1021888812194\":1478686804044,\"1021888812195\":1478686804044,\"1021888812188\":1478686804044,\"1025245285551\":1509788624937,\"1021888812189\":1478686804044,\"1025245285550\":1509788624937,\"1021888812190\":1478686804044,\"1021888812191\":1478686804044,\"1021888812184\":1478686804044,\"1025245285547\":1509788624937,\"1021888812185\":1478686804044,\"1021888812186\":1478686804044,\"1021888812187\":1478686804044,\"1009744421046\":1491634246512,\"1022291819664\":1478686417198,\"1022291819667\":1478686417198,\"1021888812182\":1478686804044,\"1021888812183\":1478686804044,\"1025245285540\":1509788624937,\"725815918\":1444487341726,\"1025245285562\":1509788624937,\"1024936352556\":1509788624997,\"1009561581394\":1491634246511,\"1025245285561\":1509788624937,\"1023306725379\":1509788624858,\"1024517714901\":1509788625028,\"1025245285558\":1509788624937,\"1025245285556\":1509788624937,\"1025245285553\":1509788624937,\"1021888812280\":1478686804044,\"1021888812276\":1478686804044,\"1025896080781\":1509788667450,\"1021888812277\":1478686804044,\"1024743943896\":1509788624958,\"1022193551068\":1478686417189,\"1021888812278\":1478686804044,\"1021888812279\":1478686804044,\"1021888812272\":1478686804044,\"1021888812273\":1478686804044,\"1021888812274\":1478686804044,\"1021888812275\":1478686804044,\"1024136530666\":1509788624972,\"1021888812268\":1478686804044,\"1021888812269\":1478686804044,\"1021888812270\":1478686804044,\"1021888812271\":1478686804044,\"1013058103112\":1444487341758,\"1021888812264\":1478686804044,\"1021888812265\":1478686804044,\"1025322352706\":1509788624307,\"1021888812266\":1478686804044,\"1021888812260\":1478686804044,\"1021888812261\":1478686804044,\"1016952127143\":1444487341760,\"1021888812262\":1478686804044,\"1021888812263\":1478686804044,\"1019320167814\":1509788624315,\"1012160368890\":1478686416994,\"1021531251072\":1509788624397,\"1025284607547\":1509788624945,\"1020823704661\":1478686417226,\"1017885738806\":1478686804015,\"1025284607545\":1509788624945,\"1021888812236\":1478686804044,\"1025284607526\":1509788624945,\"1024639609050\":1509788667503,\"1021888812232\":1478686804044,\"1021888812233\":1478686804044,\"1021888812234\":1478686804044,\"1021888812235\":1478686804044,\"1021888812228\":1478686804044,\"1025284607535\":1509788624945,\"1021888812229\":1478686804044,\"1025284607534\":1509788624945,\"1021888812230\":1478686804044,\"1021888812231\":1478686804044,\"1021888812224\":1478686804044,\"1021888812225\":1478686804044,\"1021888812226\":1478686804044,\"1022292737269\":1509788624317,\"1021888812227\":1478686804044,\"1022251842459\":1478686416991,\"1021088859330\":1478686417094,\"1002430356734\":1478686804059,\"1026504997122\":1515854751199,\"1019074673891\":1480585069084,\"1022096687352\":1478686417274,\"1021396907705\":1509788624433,\"725816044\":1444487341732,\"1022096687351\":1478686417274,\"1021947267472\":1478686417144,\"1019074804938\":1509788624314,\"1025269927814\":1509788625008,\"1019578505923\":1465470268274,\"1020975878076\":1478686417087,\"1024370129007\":1509788624927,\"1021914371981\":1509788624989,\"1022051209131\":1478686417172,\"1022454085206\":1478686417216,\"1000526171437\":1444487341739,\"1020832094070\":1478686417031,\"1021888812140\":1478686804044,\"1019477976227\":1478686804021,\"1021888812141\":1478686804044,\"1020919122619\":1478686804034,\"1021888812136\":1478686804044,\"1022274125170\":1478686417197,\"1021888812137\":1478686804044,\"1021888812138\":1478686804044,\"1022364954763\":1509788624958,\"1021888812139\":1478686804044,\"1022364954762\":1509788624957,\"1013058103236\":1444487341758,\"1021888812132\":1478686804044,\"1021888812133\":1478686804044,\"725815961\":1444487341716,\"1021888812134\":1478686804044,\"1021888812131\":1478686804044,\"1025792011517\":1509788624193,\"1012124851802\":1478686417223,\"4994830416\":1509788667394,\"1020858832617\":1478686417079,\"1021789462116\":1478686416991,\"1022327471724\":1478686417200,\"1021396907751\":1509788624433,\"1024360823216\":1509788667843,\"1022199711438\":1478686417190,\"1024797156287\":1509788625024,\"1023066311022\":1509788624474,\"1025017486625\":1509788624433,\"1021621692303\":1478686417117,\"1023066311015\":1509788624475,\"1023066311014\":1509788624475,\"1023066311013\":1509788624475,\"1016952126961\":1444487341760,\"1023066311009\":1509788624475,\"1022074012345\":1509788624439,\"1023066311039\":1509788624475,\"1023066311038\":1509788624475,\"1023066311033\":1509788624475,\"1017436952833\":1478686804031,\"1023066311028\":1509788624474,\"1023066311024\":1509788624474,\"1023066311005\":1509788624475,\"1023066311004\":1509788624475,\"1023066311003\":1509788624475,\"1023066311000\":1509788624475,\"1024637643773\":1509788667503,\"1023066310995\":1509788624475,\"1023066310993\":1509788624474,\"1017250701936\":1465470268235,\"1024313214837\":1509788624926,\"1026504997588\":1515854751198,\"1024313214828\":1509788624927,\"167719849\":1444487341746,\"1021949102675\":1509788624357,\"1012160369605\":1478686416994,\"1012126031332\":1478686417073,\"1010091889841\":1491634246527,\"1021049536990\":1478686417036,\"1022601014610\":1509788624430,\"1022088168352\":1478686417180,\"1010024517709\":1491634246526,\"1010024517705\":1491634246526,\"1600349668\":1478686804024,\"1010024517707\":1491634246526,\"1021938747956\":1478686417144,\"123289035\":1507213829619,\"1022234147741\":1478686417065,\"1021793918418\":1478686804071,\"1010024517717\":1491634246521,\"1021777665216\":1478686417128,\"1020596558395\":1478686804022,\"1010024517713\":1491634246526,\"1023250859213\":1509788625042,\"1025284607472\":1509788624945,\"1024567523005\":1509788624283,\"1025607200948\":1509788624837,\"1024567523007\":1509788624283,\"1021235559484\":1478686417236,\"1021835202626\":1509788624394,\"1025017486737\":1509788624432,\"1025607200937\":1509788624837,\"1025607200938\":1509788624837,\"1025607200934\":1509788624836,\"1025907091198\":1509788667461,\"1025372686035\":1509788624524,\"1025372686033\":1509788624537,\"1025372686032\":1509788624543,\"1014836720349\":1478686804028,\"1019991508509\":1509788624335,\"1025593831426\":1509788625000,\"1025593831430\":1509788625000,\"1024529510537\":1509788624476,\"1025372686031\":1509788624541,\"1024567523016\":1509788624283,\"1024567523018\":1509788624283,\"1023066311053\":1509788624474,\"1023066311051\":1509788624475,\"1023066311050\":1509788624475,\"1016952126740\":1444487341760,\"1018797035277\":1465470268180,\"1023066311043\":1509788624475,\"1021841756291\":1509788624394,\"1021335041616\":1478686417041,\"1011876995726\":1478686804034,\"1021407652535\":1478686417043,\"1023066311062\":1509788624474,\"1025270713584\":1509788625243,\"1018624676051\":1478686804023,\"1023066311058\":1509788624474,\"1023066311056\":1509788624475,\"1022091707029\":1478686417062,\"1025458043331\":1509788624361,\"1025458043333\":1509788624361,\"1025458043332\":1509788624361,\"1025458043334\":1509788624361,\"1013855499704\":1478686804046,\"1021793918072\":1478686804071,\"1019174547547\":1509788624320,\"1021016769279\":1478686417231,\"1021832843846\":1478686417134,\"1021700463022\":1478686804046,\"1020860402622\":1478686417031,\"1021793917977\":1478686804071,\"1021832843849\":1478686417134,\"1021576339768\":1509788624401,\"1023666515150\":1509788624419,\"1021016769227\":1478686417231,\"1020942061437\":1478686417000,\"1000928653408\":1444487341755,\"1025906698069\":1509788667464,\"1021016769229\":1478686417231,\"1025906698068\":1509788667462,\"1025792011873\":1509788624193,\"1000527875981\":1444487341713,\"1021016769221\":1478686417231,\"1021955787299\":1478686417146,\"1024313214655\":1509788624927,\"1022459982902\":1478686417298,\"1003242106498\":1478686804054,\"1023869147196\":1509788625082,\"1003242106500\":1478686804054,\"1025458043249\":1509788624360,\"1023141806974\":1509788624454,\"1024265634178\":1509788625032,\"1025458043251\":1509788624360,\"1025458043250\":1509788624360,\"1000527875943\":1444487341739,\"1025458043252\":1509788624361,\"4994830881\":1509788667394,\"1016952126564\":1444487341760,\"1021793918181\":1478686804071,\"1021793918182\":1478686804071,\"530261049\":1478950494910,\"1025792011944\":1509788624193,\"1018922207019\":1509788624309,\"1025712974446\":1509788624304,\"1021920662559\":1478686417259,\"519906614\":1444487341753,\"1021885666817\":1478686417137,\"1021932066008\":1478686417259,\"1019362766332\":1509788624315,\"315435294\":1444487341706,\"1009595263913\":1478686804030,\"1020935114560\":1478686417083,\"352137003\":1444487341732,\"1022334549210\":1478686417015,\"1022334549203\":1478686417015,\"1022201808114\":1478686417190,\"1022201808115\":1478686417190,\"1021848965618\":1509788624493,\"1022083056632\":1478686417272,\"1025458043161\":1509788624360,\"1010057418511\":1491634246535,\"1025458043160\":1509788624360,\"1025458043162\":1509788624360,\"1021854470227\":1509788624402,\"1024313214656\":1509788624927,\"1022083056630\":1478686417272,\"1021646201399\":1509788624974,\"1022123165606\":1478686417183,\"1023949100276\":1509788667493,\"1023949100278\":1509788667493,\"1022233361725\":1509788624177,\"1022149378104\":1478686417185,\"1023949100285\":1509788667493,\"1022149378106\":1478686417185,\"1023949100287\":1509788667493,\"1021308434011\":1478686417041,\"1008243965175\":1478686804032,\"1025879959491\":1509788667405,\"1016335933090\":1478686804017,\"1020258136302\":1464448510787,\"1016952126430\":1444487341760,\"1023567424919\":1509788624392,\"1023567424918\":1509788624392,\"1025270712876\":1509788625243,\"1023567424920\":1509788624392,\"4818412400\":1509788624159,\"4818412401\":1509788624159,\"1022190404591\":1478686417279,\"1024983931240\":1509788624924,\"1023066312481\":1509788624881,\"1023066312480\":1509788624880,\"1020622773625\":1509788625080,\"1025269926499\":1509788625008,\"1024793880259\":1509788625021,\"1000216321332\":1444487341710,\"4818412399\":1509788624159,\"1013720496895\":1478686804068,\"1023066312463\":1509788624881,\"1010091889314\":1491634246522,\"1013720496892\":1478686804068,\"1023066312459\":1509788624881,\"1023066312456\":1509788624881,\"1021308433981\":1478686417041,\"1023066312453\":1509788624881,\"1010091889325\":1491634246522,\"1023066312450\":1509788624881,\"1023066312479\":1509788624881,\"1023066312478\":1509788624880,\"1022677557450\":1509788625146,\"1023066312477\":1509788624881,\"1022677557449\":1509788625146,\"1023066312476\":1509788624881,\"1022677557448\":1509788625146,\"1019159344697\":1509788624312,\"1023066312474\":1509788624881,\"1022389598131\":1478686417290,\"1023066312472\":1509788624881,\"1022677557452\":1509788625145,\"1023066312471\":1509788624881,\"1023066312470\":1509788624881,\"1023066312469\":1509788624881,\"1023066312467\":1509788624881,\"1022677557446\":1509788625145,\"1020892646809\":1478686417079,\"1020622773683\":1509788625080,\"1023099078941\":1509788624178,\"1023066312675\":1509788624573,\"1023066312674\":1509788624573,\"1025817307929\":1509788667793,\"1020856079294\":1478686417079,\"1025593701977\":1509788624454,\"1020856079287\":1478686417079,\"1022928164661\":1509788624300,\"1021909258948\":1478686417140,\"1023066312655\":1509788624574,\"1025270713003\":1509788625243,\"1023066312654\":1509788624574,\"1024983931265\":1509788624924,\"1006011483835\":1478686804046,\"1021552616719\":1478686417113,\"1021909258945\":1478686417140,\"1023066312649\":1509788624574,\"1021909258947\":1478686417140,\"1023066312645\":1509788624574,\"1011876996305\":1478686804034,\"1023066312644\":1509788624574,\"1024292896984\":1509788667830,\"1016952126289\":1444487341759,\"1023066312643\":1509788624574,\"1023066312642\":1509788624573,\"1023066312670\":1509788624574,\"1023066312669\":1509788624573,\"1023066312668\":1509788624574,\"1023066312667\":1509788624574,\"1023066312666\":1509788624574,\"1023066312665\":1509788624574,\"1023066312664\":1509788624574,\"1023066312663\":1509788624574,\"1021552616723\":1478686417113,\"1023066312662\":1509788624574,\"1023066312661\":1509788624573,\"1021552616721\":1478686417113,\"1023066312660\":1509788624573,\"1023066312659\":1509788624573,\"1024292896975\":1509788667509,\"1023066312658\":1509788624573,\"1021552616724\":1478686417113,\"1023066312657\":1509788624574,\"1025593832969\":1509788625000,\"1025593832968\":1509788625000,\"1025593832970\":1509788625000,\"1025593832975\":1509788624438,\"1021988294427\":1478686417154,\"1021242112738\":1478686417003,\"1021344477433\":1478686804067,\"1025593832967\":1509788625000,\"1021909258932\":1478686417140,\"1016662559219\":1478686804018,\"1024782476789\":1509788625020,\"1023926426354\":1491634246530,\"1023926426353\":1491634246530,\"1025593832978\":1509788625000,\"1025593832981\":1509788624438,\"1021888811363\":1478686804050,\"1011826796952\":1509788624945,\"1021456674688\":1478686417242,\"1011826796956\":1509788624944,\"1011826796957\":1509788624944,\"1016600301084\":1509788624274,\"1025910890762\":1509788667579,\"1020622773725\":1509788625080,\"1025910890766\":1509788667579,\"1025910890764\":1509788667579,\"1025910890770\":1509788667579,\"1025910890768\":1509788667579,\"1020856079316\":1478686417079,\"1025910890776\":1509788667579,\"1023329926950\":1509788624491,\"1022149640500\":1478686417185,\"1019714557520\":1478686804053,\"1017518347576\":1478686804031,\"1019714557521\":1478686804053,\"1020855554641\":1478686417226,\"1017518347575\":1478686804031,\"1024186993583\":1509788624470,\"1024186993585\":1509788624470,\"1024186993590\":1509788624470,\"1024186993589\":1509788624470,\"1024186993593\":1509788624470,\"1019714557519\":1478686804053,\"1024186993592\":1509788624470,\"1024186993596\":1509788624470,\"1025792010301\":1509788624814,\"1025322353712\":1509788624294,\"1025322353711\":1509788624294,\"1025322353710\":1509788624294,\"1025322353706\":1509788624294,\"1021427969143\":1478686804026,\"1016952126137\":1444487341759,\"1025715072199\":1509788624822,\"1025508505782\":1509788624339,\"1025715072198\":1509788624832,\"1025508505780\":1509788624342,\"1025508505779\":1509788624346,\"1025508505778\":1509788624340,\"1025572861277\":1509788624309,\"1023929965389\":1509788624287,\"1023929965388\":1509788624287,\"1023929965391\":1509788624287,\"1023929965390\":1509788624287,\"1000977281873\":1444487341753,\"1021629423723\":1509788624401,\"1538877145\":1444487341702,\"1017518347614\":1478686804018,\"1017518347610\":1478686804016,\"1022165368905\":1478686417186,\"1017518347601\":1478686804034,\"1017518347600\":1478686804020,\"1023364921554\":1509788624420,\"1017518347598\":1478686804016,\"1023196464857\":1509788624511,\"1024687057293\":1509788625102,\"1017518347585\":1478686804031,\"1022608614825\":1509788624994,\"1013720496927\":1478686804068,\"1013720496925\":1478686804068,\"1025032426972\":1509788624976,\"4994831413\":1509788667394,\"1021948317110\":1478686417145,\"1023066312425\":1509788624881,\"1409117819\":1509788625020,\"1021948317111\":1478686417145,\"1021721304624\":1478686804047,\"1023066312421\":1509788624881,\"1022233361598\":1509788624178,\"1023066312420\":1509788624882,\"1023066312419\":1509788624880,\"1025792010388\":1509788624814,\"1013720496912\":1478686804068,\"1024461355993\":1509788625029,\"1025901978106\":1509788667457,\"1025901978104\":1509788667460,\"1023066312443\":1509788624881,\"1000526170492\":1444487341712,\"1023946349198\":1491634246531,\"1023946349196\":1491634246531,\"1000526170480\":1444487341714,\"1021888811045\":1478686804065,\"1025156287847\":1509788624512,\"1025528691504\":1509788624345,\"1010091889503\":1491634246527,\"1023066312432\":1509788624881,\"1023364921346\":1509788624195,\"1025032427006\":1509788624976,\"1025270713258\":1509788625243,\"1025032427001\":1509788624976,\"1025500379612\":1509788625020,\"1025032426999\":1509788624976,\"1025032426996\":1509788624976,\"1025032426993\":1509788624976,\"1021688273920\":1478686417050,\"1013720496942\":1478686804068,\"1025032426990\":1509788624976,\"1013720496940\":1478686804068,\"1025032426988\":1509788624976,\"1013720496939\":1478686804068,\"1009848492788\":1491634246513,\"1013720496936\":1478686804068,\"1024597406611\":1509788624939,\"1023995500466\":1491634246532,\"1012596997714\":1458304307281,\"1021729300198\":1509788624993,\"1021700464434\":1478686804046,\"1024983931119\":1509788624924,\"1021102228301\":1478686417002,\"1021616840740\":1478686417117,\"1021616840738\":1478686417117,\"1024688105745\":1509788624503,\"1024164972998\":1509788624972,\"1023364921461\":1509788624819,\"1023910566114\":1509788624175,\"1022455394843\":1478686417016,\"1012268765924\":1478686416994,\"1024725068638\":1509788624290,\"1020739032534\":1478686417028,\"1023949100291\":1509788667493,\"1025792010474\":1509788624814,\"1016952125963\":1444487341759,\"1021369906034\":1480585069064,\"1023195940308\":1509788625043,\"1025864885408\":1509788667831,\"1025864885410\":1509788667829,\"1025864885415\":1509788667465,\"4984215321\":1509788624158,\"1021602030276\":1478686416984,\"1025864885424\":1509788667463,\"1021678968369\":1509788624396,\"1009595919974\":1465470268262,\"1024334709219\":1509788624423,\"1020881375157\":1478686417031,\"1022228643676\":1478686417282,\"1023354698366\":1509788625040,\"1024264979516\":1509788625102,\"135345717\":1444487341728,\"1024264979515\":1509788624195,\"1019991638774\":1509788624959,\"1023877930277\":1491634246506,\"1025864885389\":1509788667836,\"1022108877999\":1478686417182,\"1024687057627\":1509788624534,\"1025864885390\":1509788667836,\"1025864885394\":1509788667465,\"1025864885396\":1509788667459,\"1003593503755\":1480585069064,\"1025864885404\":1509788667836,\"1025864885407\":1509788667465,\"1024264979544\":1509788624534,\"1017238251198\":1465470268268,\"1008593267315\":1478686804040,\"1025032427025\":1509788624976,\"1014724918514\":1478686804022,\"1025032427023\":1509788624976,\"1025032427022\":1509788624976,\"1025032427015\":1509788624976,\"1843745724\":1444487341751,\"1012415038994\":1478686417074,\"1025032427013\":1509788624976,\"1843745720\":1444487341747,\"1025864885441\":1509788667463,\"1021700463771\":1478686804046,\"1008593267295\":1478686804040,\"1025864885445\":1509788667463,\"1008593267288\":1478686804040,\"1016335932636\":1478686804016,\"1021938749134\":1478686417143,\"1022331402550\":1478686417201,\"1025864885453\":1509788667830,\"1008593267282\":1478686804071,\"1016070646815\":1465470268246,\"1021938749138\":1478686417143,\"1022134961511\":1478686417184,\"1020567199773\":1478686417074,\"1023066312175\":1509788624241,\"1023066312174\":1509788624242,\"1017064584107\":1478686804022,\"1023066312173\":1509788624242,\"1023066312172\":1509788624242,\"1021397560928\":1509788624399,\"1023066312170\":1509788624242,\"1023066312167\":1509788624242,\"1023066312166\":1509788624242,\"1023066312165\":1509788624242,\"1020741654156\":1478686417028,\"1025772612277\":1509788625084,\"1025772612276\":1509788625003,\"1021142892192\":1478686417096,\"1008593267364\":1478686804049,\"1020626050169\":1478686804057,\"1023268291071\":1509788624839,\"1023066312178\":1509788624242,\"1023066312143\":1509788624242,\"1022827633416\":1509788624990,\"1021719731571\":1478686417123,\"1020851228976\":1478686417031,\"1023066312135\":1509788624242,\"1024055660607\":1509788624329,\"1021719731577\":1478686417123,\"1021719731579\":1478686417123,\"1023066312132\":1509788624242,\"1016952125777\":1444487341759,\"1021719731580\":1478686417123,\"1023066312130\":1509788624242,\"1023066312128\":1509788624241,\"1025041078132\":1509788625022,\"1008593267342\":1478686804040,\"1023066312156\":1509788624242,\"1021852374397\":1478686417135,\"1023066312153\":1509788624242,\"1023066312151\":1509788624242,\"1023066312150\":1509788624242,\"1023066312149\":1509788624242,\"1023066312148\":1509788624242,\"1023066312147\":1509788624242,\"1023066312146\":1509788624242,\"1023066312145\":1509788624242,\"1025772612254\":1509788624999,\"1019931346570\":1509788624385,\"1019957036035\":1509788625076,\"1008593267433\":1478686804048,\"1022553565898\":1509788624932,\"1020626050102\":1478686804057,\"1001660811686\":1478686804029,\"1019812990869\":1480585069061,\"4994832206\":1509788667394,\"1023926556883\":1491634246530,\"1023926556884\":1491634246530,\"965281654\":1444487341700,\"4994832054\":1509788667394,\"1025864885665\":1509788667829,\"1012846292409\":1478686417026,\"1022193287327\":1478686417064,\"1025593832896\":1509788624866,\"1011943318372\":1509788624821,\"1024490452870\":1509788624990,\"1025864885677\":1509788667829,\"1024490452867\":1509788624990,\"1024490452866\":1509788624990,\"1025864885683\":1509788667460,\"1021885534950\":1478686417044,\"1022270323652\":1480585069092,\"1022154490604\":1478686417063,\"1008593267473\":1478686804048,\"1023996417331\":1509788624503,\"1021885928165\":1478686417258,\"1022756331224\":1509788625057,\"1025864885651\":1509788667462,\"1025864885650\":1509788667832,\"1020938783593\":1509788624353,\"1024264979752\":1509788624819,\"701568666\":1478950494914,\"1025817307356\":1509788667793,\"1002457225406\":1491634246520,\"1015159677848\":1478686804029,\"1020443338900\":1478686417224,\"1020443338901\":1478686417224,\"4972549939\":1509788624158,\"1020443338902\":1478686417224,\"1020443338903\":1478686417224,\"1024116477344\":1509788625036,\"1020443338908\":1478686417224,\"1020443338909\":1478686417224,\"1020443338910\":1478686417224,\"1020443338911\":1478686417224,\"1020443338904\":1478686417224,\"1020443338905\":1478686417224,\"1020443338906\":1478686417224,\"1020443338907\":1478686417224,\"1020443338912\":1478686417224,\"1020443338913\":1478686417224,\"1009561579778\":1491634246511,\"1025864885704\":1509788667836,\"1025864885708\":1509788667457,\"1012882205695\":1478686417074,\"1021739653889\":1478686417124,\"1024227493850\":1509788625032,\"1025864885541\":1509788667833,\"1025864885542\":1509788667462,\"1022907454827\":1509788624298,\"1025864885553\":1509788667830,\"1025864885554\":1509788667830,\"1025864885557\":1509788667457,\"1025864885556\":1509788667830,\"1025864885560\":1509788667457,\"1021649739879\":1478686417248,\"1024495564797\":1509788624935,\"1024687057750\":1509788624420,\"1024495564796\":1509788624935,\"1024687057758\":1509788624195,\"1025295746851\":1509788624945,\"1838633504\":1444487341739,\"1009893055747\":1491634246533,\"1016952125504\":1444487341759,\"1025864885606\":1509788667462,\"1021739129664\":1478686417051,\"1025864885612\":1509788667836,\"1024490452830\":1509788624990,\"1021511592416\":1509788624869,\"1835881101\":1491634246516,\"1835881100\":1491634246516,\"1835881102\":1491634246516,\"1018395304478\":1465470268236,\"1024490452841\":1509788624990,\"1021989080142\":1478686417057,\"1835881093\":1491634246516,\"1024490452837\":1509788624990,\"1021989080141\":1478686417057,\"1024490452838\":1509788624990,\"1025864885578\":1509788667457,\"1025593701670\":1509788624229,\"1024490452832\":1509788624990,\"1025864885582\":1509788667829,\"1025864885585\":1509788667457,\"1021734411010\":1509788624400,\"1024490452858\":1509788624990,\"1017914408823\":1509788625080,\"1008593267652\":1478686804016,\"1024490452855\":1509788624990,\"1012134942945\":1478686417025,\"1024490452849\":1509788624990,\"1835881104\":1491634246516,\"1835881106\":1491634246516,\"1020971447885\":1478686417086,\"1022224974270\":1478686417192,\"1022464315233\":1478686417218,\"1022511501970\":1509788624990,\"1018553656946\":1478686804023,\"1022000870158\":1478686417265,\"1024203765692\":1509788625034,\"1022196301674\":1478686417280,\"1025665633961\":1509788624612,\"1025314257337\":1509788624329,\"1022416473115\":1478686417209,\"1020241103814\":1478686804065,\"1025665633969\":1509788624611,\"1022031410447\":1509788624463,\"1025665633979\":1509788624565,\"1025665633984\":1509788624565,\"1021438431958\":1509788624817,\"1025665633990\":1509788624538,\"1025665633993\":1509788624545,\"1022848886316\":1509788624328,\"1021554432448\":1509788624405,\"1025665633999\":1509788624545,\"1006788749804\":1478686804029,\"1001790341091\":1478686417023,\"1007146319394\":1509788624374,\"1021957747154\":1478686417147,\"1025665634003\":1509788624545,\"121849626\":1444487341754,\"1022443343597\":1478686417214,\"1025665634012\":1509788624545,\"1022205182108\":1478686417190,\"1025665634018\":1509788624545,\"1025665634024\":1509788624545,\"1025056959155\":1509788624999,\"1012348220622\":1478686417223,\"1022370204270\":1509788624300,\"1021436989961\":1509788624977,\"1020006448510\":1509788625076,\"1020556860817\":1478686417017,\"1619206160\":1478686417020,\"1021793511385\":1478686417255,\"1021857999629\":1478686417257,\"1021793511376\":1478686417255,\"1022229430737\":1478686417282,\"1022229430740\":1478686417282,\"1018961034889\":1478686804027,\"1024936370866\":1509788625006,\"1020824907174\":1478686416982,\"1024685888585\":1509788624346,\"1021028596317\":1478686416977,\"1020294057491\":1465470268285,\"1022229430735\":1478686417282,\"1016858640685\":1509788624976,\"1024283327578\":1509788624326,\"1001264996398\":1478686417024,\"1021793511322\":1478686417255,\"1021793511321\":1478686417255,\"1025863424565\":1509788667580,\"1024097202424\":1509788624969,\"1025779537215\":1509788625087,\"1025779537213\":1509788625106,\"1025779537212\":1509788625122,\"1025779537211\":1509788625114,\"1021793511354\":1478686417255,\"1021793511353\":1478686417255,\"1021477229788\":1478686417110,\"1020966204995\":1509788624369,\"1022042027932\":1478686417268,\"1017923453208\":1509788624311,\"1022042027931\":1478686417268,\"1025610582732\":1509788624521,\"1025665634183\":1509788624837,\"1022042027929\":1478686417268,\"1025610582734\":1509788624521,\"1025665634182\":1509788624838,\"1018805449838\":1509788624929,\"1025610582722\":1509788624521,\"1025610582727\":1509788624520,\"1025610582726\":1509788624520,\"1025665634190\":1509788624837,\"1022450814767\":1478686417072,\"1025665634197\":1509788624868,\"1021385871023\":1478686417042,\"1021460582963\":1478686417045,\"1021619051717\":1478686804046,\"1013148001711\":1478686804017,\"1025610582736\":1509788624520,\"1021014964428\":1478686417001,\"1022042027908\":1478686417268,\"1021573700473\":1509788624814,\"1022042027904\":1478686417268,\"1021250340492\":1478686417039,\"1024471975553\":1509788624170,\"1025779537149\":1509788624523,\"1018919878042\":1509788624361,\"1020016802941\":1509788624320,\"1025779537146\":1509788624537,\"1025779537145\":1509788624542,\"1025779537144\":1509788624540,\"1025900256694\":1509788667463,\"1025665634233\":1509788625246,\"1021958008997\":1478686417261,\"1023932180170\":1491634246531,\"1023932180169\":1491634246529,\"1021958008999\":1478686417261,\"1023932180168\":1491634246529,\"1019884549130\":1478686804065,\"1025665634236\":1509788625244,\"1023161759969\":1509788625044,\"1025665634238\":1509788625165,\"4813447078\":1509788624165,\"1025665634240\":1509788625165,\"1025665634243\":1509788625112,\"1025665634251\":1509788625131,\"1025665634250\":1509788625131,\"1025665634257\":1509788625131,\"1025665634256\":1509788625131,\"1023877522018\":1491634246512,\"1021554825432\":1478686417048,\"1021801507247\":1478686417130,\"1019283313547\":1509788624391,\"1025610582701\":1509788624521,\"1025779537083\":1509788624197,\"1025779537081\":1509788624200,\"1025610582714\":1509788624520,\"1021227926645\":1478686417003,\"1025610582718\":1509788624521,\"1023144327603\":1509788625045,\"1022041634811\":1478686417058,\"1025610582706\":1509788624521,\"1022104681283\":1478686417182,\"1025050929312\":1509788624458,\"1023958133185\":1509788667535,\"1750542810\":1444487341722,\"1025665634071\":1509788624270,\"1025665634070\":1509788624270,\"1025665634073\":1509788624227,\"1025279653403\":1509788624429,\"1025665634074\":1509788624227,\"1025279653405\":1509788624426,\"1025279653404\":1509788624432,\"1025779537015\":1509788624831,\"1025779537014\":1509788624828,\"1025665634082\":1509788624199,\"1020776540748\":1478686417076,\"1025665634086\":1509788624215,\"1019852042926\":1478686804043,\"1025665634089\":1509788624207,\"1022015419801\":1478686417160,\"1025279653418\":1509788624408,\"1019852042924\":1478686804043,\"1025665634091\":1509788624207,\"1019852042925\":1478686804043,\"1025665634093\":1509788624207,\"1025779537017\":1509788624745,\"1025779537016\":1509788624822,\"1025665634099\":1509788624207,\"1025665634103\":1509788624207,\"1019745086685\":1509788624312,\"1750542827\":1444487341720,\"1025665634108\":1509788624230,\"1750542825\":1444487341720,\"1021738067206\":1478686417251,\"1022293656668\":1478686416977,\"1022238868227\":1509788624946,\"1025402077076\":1509788624972,\"1022238868229\":1509788624932,\"1022238868231\":1509788624931,\"1021175366625\":1465470268188,\"1022238868232\":1509788624930,\"1022238868235\":1509788624941,\"1000526165285\":1444487341710,\"1022238868236\":1509788624931,\"1024471975551\":1509788624171,\"1024471975550\":1509788624171,\"1024471975549\":1509788624171,\"1024471975548\":1509788624170,\"1024852614346\":1509788624925,\"1021764674791\":1478686417009,\"1022042027903\":1478686417170,\"1021680656870\":1478686804029,\"1022042027901\":1478686417170,\"1012901844143\":1478686804020,\"1022140595539\":1478686417013,\"1021258335911\":1478686417040,\"1025665634166\":1509788624916,\"1025665634169\":1509788624916,\"1211173320\":1444487341750,\"1025665634172\":1509788624864,\"1025665634175\":1509788624826,\"1025665634174\":1509788624864,\"1025011082629\":1509788624997,\"1021803997869\":1509788624403,\"1021292153636\":1478686417102,\"1025508083694\":1509788624296,\"1025540588568\":1509788624303,\"1025508083701\":1509788624296,\"1023088227889\":1509788624439,\"1025508083699\":1509788624296,\"1021235135649\":1478686417039,\"1024313212701\":1509788624926,\"1018961034240\":1478686804040,\"1019129039373\":1509788624302,\"1024375767901\":1509788625070,\"1021693895453\":1478686804033,\"1021663092084\":1478686417050,\"1021693895450\":1478686804032,\"1021693895448\":1478686804032,\"1021538573012\":1478686417245,\"1021439741997\":1478686417007,\"1021971902693\":1478686417149,\"1021531757237\":1509788624397,\"1023088227956\":1509788624439,\"1025042934762\":1509788624498,\"1023969274849\":1509788624294,\"1025902353920\":1509788667448,\"1023088227911\":1509788624439,\"1021310896218\":1465469681397,\"1021938873032\":1478686417260,\"1021938873044\":1478686417260,\"1018920009412\":1509788624940,\"1019608246267\":1509788625076,\"1025791596393\":1509788624409,\"1021938873052\":1478686417260,\"1022919403729\":1509788624393,\"1022919403732\":1509788624393,\"1019283312742\":1509788624390,\"4834419380\":1509788624159,\"1020556861347\":1478686417017,\"1021934940755\":1509788624464,\"1010954347471\":1478686804030,\"1024313212804\":1509788624926,\"1025540588718\":1509788624303,\"1022323017059\":1478686417200,\"1021328460238\":1478686417005,\"1021161210829\":1478686417003,\"1023626647272\":1509788625144,\"1013855505524\":1478686804046,\"1002086798086\":1478686417024,\"1020393281067\":1480585069076,\"1021611450064\":1509788624397,\"1021613547263\":1478686417116,\"1021541194379\":1478686417047,\"1024142422091\":1509788667500,\"1024142422090\":1509788667499,\"1025350301775\":1509788624305,\"1021608566643\":1478686417008,\"1017038606301\":1478686804032,\"1024142422082\":1509788667499,\"1024142422085\":1509788667499,\"1018920009663\":1509788624940,\"1022401267755\":1478686417292,\"1021668598727\":1509788624396,\"1021742131031\":1478686417125,\"1018310384581\":1478686804023,\"1021701366264\":1478686417250,\"1016930993682\":1478686804019,\"1010403181414\":1478686804025,\"1021967839696\":1478686417149,\"1023097140871\":1509788625046,\"1025100607342\":1509788624181,\"1024095499125\":1509788624459,\"1024095499123\":1509788624459,\"1408307380\":1478686804024,\"1024095499120\":1509788624459,\"1024095499135\":1509788624459,\"1024095499134\":1509788624459,\"1025353447540\":1509788624514,\"1024142422018\":1509788667499,\"1024095499132\":1509788624459,\"1024095499130\":1509788624459,\"1024095499128\":1509788624459,\"1024142422043\":1509788667499,\"1024095499107\":1509788624459,\"1025453818485\":1509788624971,\"1021338030022\":1465470268222,\"1025540588867\":1509788624303,\"1024095499105\":1509788624459,\"1024095499119\":1509788624459,\"1025453818488\":1509788624933,\"1022078335789\":1478686417177,\"1024095499112\":1509788624459,\"1024095499094\":1509788624460,\"1024095499090\":1509788624459,\"1024142422062\":1509788667500,\"1024095499100\":1509788624459,\"1024142422048\":1509788667499,\"1016298202007\":1480585069065,\"1019413076544\":1509788624389,\"1024142422077\":1509788667499,\"1021378923895\":1478686417105,\"1021378923896\":1478686417105,\"1024095499085\":1509788624459,\"1024142422065\":1509788667499,\"1024095499082\":1509788624459,\"1022021973550\":1478686417266,\"4997868135\":1509788667395,\"1022028134142\":1478686417164,\"1022102321515\":1478686417181,\"1022028134141\":1478686417164,\"1021881593755\":1509788624433,\"4834419643\":1509788624159,\"1025900257062\":1509788667463,\"1024095499153\":1509788624459,\"1022457760892\":1478686417016,\"1022001657674\":1478686417011,\"1023688383447\":1509788625082,\"1024095499162\":1509788624459,\"1021859702998\":1478686416973,\"1022193155127\":1478686416992,\"1024095499141\":1509788624459,\"1022437969233\":1509788625079,\"1021757990620\":1478686417300,\"1024095499138\":1509788624459,\"1024095499137\":1509788624459,\"1024095499150\":1509788624459,\"1021558889200\":1478686417245,\"1022456187917\":1478686804045,\"1022456187916\":1478686804045,\"1021873073999\":1478686804032,\"1022456187913\":1478686804045,\"1020284227205\":1465470268317,\"1022456187912\":1478686804045,\"1022456187915\":1478686804045,\"1022456187909\":1478686804045,\"1021512881614\":1478686417047,\"1022456187911\":1478686804045,\"1022456187910\":1478686804045,\"1025791596243\":1509788624409,\"1025700238144\":1509788624933,\"1025100607482\":1509788624273,\"1024313212641\":1509788624926,\"1227033340\":1444487341732,\"1020946675253\":1478686417084,\"1020946675261\":1478686417084,\"1023146425171\":1509788624424,\"1012482701376\":1478686417074,\"1021185591178\":1478686417098,\"1024134952927\":1509788667499,\"1025609535484\":1509788625001,\"1024134952920\":1509788667499,\"1024134952923\":1509788667498,\"1025609535486\":1509788625001,\"1024134952917\":1509788667499,\"1022491055575\":1478943089490,\"1024334707685\":1509788624997,\"1024134952909\":1509788667499,\"1021796655919\":1478686417130,\"1021185591192\":1478686417098,\"1024153039039\":1509788667495,\"1024134952906\":1509788667499,\"1024153039024\":1509788667495,\"1020946018799\":1478686417084,\"1024134952898\":1509788667499,\"1020447413162\":1509788625076,\"1020447413163\":1509788625077,\"1023958133867\":1509788667535,\"1024153038980\":1509788667495,\"1024134952944\":1509788667499,\"1021356771654\":1478686417239,\"1021757464994\":1509788624403,\"1024134952943\":1509788667498,\"1024134952942\":1509788667499,\"1024134952936\":1509788667499,\"1024134952939\":1509788667498,\"1024458736297\":1509788625030,\"1024134952932\":1509788667498,\"1024134952929\":1509788667499,\"1021356771659\":1478686417239,\"1020335608943\":1465470268182,\"1022246471282\":1478686417195,\"1022491055590\":1478943089490,\"1018889207338\":1509788624366,\"1020556859715\":1478686417017,\"1025791594838\":1509788624409,\"1025315962163\":1509788624391,\"1025628145809\":1509788624931,\"1006923888115\":1478686804022,\"1025791594828\":1509788624409,\"1025791594825\":1509788624409,\"1025791594823\":1509788624409,\"1021765067077\":1478686417254,\"1022460513258\":1478686417016,\"1024134952889\":1509788667499,\"1021681443965\":1509788624400,\"1024265109116\":1509788624819,\"1023537253137\":1509788624446,\"1023537253133\":1509788624446,\"1023537253132\":1509788624446,\"1569266171\":1444487341730,\"1025791594860\":1509788624409,\"1023537253134\":1509788625151,\"1023537253129\":1509788625152,\"1024265109102\":1509788624420,\"1023537253128\":1509788625152,\"1023537253131\":1509788624446,\"1023537253130\":1509788625151,\"1024134952868\":1509788667498,\"1023537253127\":1509788624446,\"1025791594852\":1509788624409,\"1023537253126\":1509788625151,\"1021846204074\":1509788624455,\"1009758199333\":1491634246511,\"1022111760127\":1509788624959,\"1009758199329\":1491634246511,\"1025043983646\":1509788624192,\"1001061177246\":1478686417022,\"1024557303842\":1509788624414,\"1022424598843\":1478686417293,\"1022111760086\":1509788624928,\"1024334707540\":1509788624997,\"1019611128259\":1509788625076,\"1022040322583\":1478686417058,\"1025043983660\":1509788624191,\"761620928\":1444487341716,\"1025043983657\":1509788624191,\"1019611128260\":1509788625078,\"1025043983653\":1509788624191,\"1025043983652\":1509788624191,\"209668307\":1444487341724,\"1025043983651\":1509788624192,\"1021588381483\":1509788624818,\"1022179523320\":1509788624920,\"1021873072185\":1478686804033,\"1025043983673\":1509788624191,\"1009758199316\":1491634246511,\"1025043983671\":1509788624191,\"1024362923166\":1509788667509,\"1022069554246\":1478686417301,\"1025727895050\":1509788625083,\"1021493481967\":1478686804040,\"234965706\":1444487341742,\"1024153038949\":1509788667495,\"1022756087075\":1509788625074,\"1024153038951\":1509788667495,\"1024153038973\":1509788667495,\"1021289663907\":1478686417238,\"1021341304986\":1478686417103,\"1022220387613\":1478686417281,\"1002037774868\":1478686804029,\"1022428399997\":1478686417070,\"1021713557211\":1509788624396,\"1019447943112\":1509788624369,\"1019447943113\":1509788624369,\"1022088166696\":1478686417180,\"1022214751398\":1478686417013,\"1021376301776\":1478686417105,\"1023366201716\":1509788625164,\"1021526381479\":1478686417047,\"1021350873425\":1509788624513,\"1002037774860\":1478686804029,\"1024799792955\":1509788625207,\"1024799792949\":1509788625206,\"1024799792950\":1509788625207,\"1024799792946\":1509788625207,\"1024799792941\":1509788625207,\"1024799792936\":1509788625207,\"1020752817248\":1478686417028,\"1023135150691\":1509788624218,\"1023135150690\":1509788624218,\"1024799792932\":1509788625206,\"1024799792934\":1509788625206,\"1021475918148\":1478686417242,\"1024799792928\":1509788625206,\"1024799792930\":1509788625206,\"1023262423806\":1509788625042,\"1021627701262\":1478686417119,\"1024799792927\":1509788625206,\"1024799792926\":1509788625207,\"1838753981\":1478950494927,\"1024799792921\":1509788625207,\"1020827134913\":1478686417078,\"1024799792923\":1509788625207,\"1024799792922\":1509788625207,\"1023135150685\":1509788624218,\"1024799792917\":1509788625207,\"1023135150687\":1509788624218,\"1012117267235\":1478686417025,\"1023135150686\":1509788624218,\"1024799792918\":1509788625207,\"1019583604278\":1480585069074,\"1024799792911\":1509788625206,\"1021421130921\":1509788624405,\"1016495206012\":1509788624941,\"1021680526686\":1478686804026,\"255019627\":1444487341730,\"1019723459060\":1478686804021,\"1025712952564\":1509788624306,\"1023096877280\":1509788625162,\"1023096877283\":1509788625162,\"1023096877279\":1509788625162,\"1023096877278\":1509788625162,\"1023096877275\":1509788625162,\"1014142425629\":1465470268245,\"1024244792376\":1509788624317,\"1022111760157\":1509788624439,\"465657517\":1478686804023,\"1020907485006\":1478686417032,\"483744165\":1491634246533,\"1021840568094\":1509788624394,\"1022048580540\":1478686417059,\"1022338747719\":1478686417069,\"1838753814\":1478950494927,\"1022375448365\":1480585069075,\"1000309105256\":1478686417018,\"483744068\":1491634246533,\"1017582168545\":1478686804031,\"1021246407289\":1478686417003,\"1023829812345\":1509788624940,\"255019686\":1444487341741,\"1021863636650\":1478686417135,\"1024283326835\":1509788624326,\"1023135150828\":1509788624445,\"1023135150831\":1509788624445,\"1023135150824\":1509788624445,\"1023135150827\":1509788624445,\"1023135150826\":1509788624445,\"756771006\":1444487341716,\"1017171382632\":1478686804019,\"1020941431170\":1478686417084,\"1022207935759\":1478686417191,\"1025540588450\":1509788624303,\"1012120674885\":1478686416994,\"1022059328084\":1478686417173,\"1021472379222\":1478686417109,\"1014876933725\":1478686804032,\"1022196693651\":1478686417189,\"1020988617380\":1478686417230,\"1022470605553\":1478686804048,\"1022470605552\":1478686804048,\"1022470605555\":1478686804048,\"1022470605554\":1478686804048,\"1022470605557\":1478686804048,\"1022470605556\":1478686804048,\"4997868545\":1509788667395,\"1022470605559\":1478686804048,\"1022470605558\":1478686804048,\"1022470605561\":1478686804048,\"1022470605560\":1478686804048,\"1024586402588\":1509788625026,\"1017168893691\":1478686804025,\"1022470605563\":1478686804048,\"1022470605562\":1478686804048,\"1024264847332\":1509788624419,\"1022470605549\":1478686804048,\"1021822610510\":1509788624394,\"1022470605551\":1478686804048,\"1022470605550\":1478686804048,\"1023773579448\":1509788624970,\"1021494137638\":1509788624515,\"1021334882979\":1478686417239,\"1021494137637\":1509788624515,\"1021494137632\":1509788624515,\"1024661509244\":1509788625026,\"1012652933170\":1478686417224,\"1021494137647\":1509788624515,\"1025626966726\":1509788625002,\"1021494137644\":1509788624515,\"1025902353006\":1509788667449,\"1025626966722\":1509788624441,\"1021494137653\":1509788624515,\"1021458879816\":1478686417007,\"1022407953081\":1478686417292,\"1021494137663\":1509788624515,\"1021494137660\":1509788624515,\"1021494137661\":1509788624515,\"1021494137658\":1509788624515,\"1021494137656\":1509788624515,\"1025626966736\":1509788624440,\"1021060578623\":1478686416976,\"1025626966762\":1509788624433,\"1009850472715\":1491634246514,\"1021858000317\":1478686417135,\"1021460583703\":1478686417045,\"1025626966775\":1509788624454,\"1025626966773\":1509788624453,\"1025626966769\":1509788624433,\"1019949563670\":1509788624385,\"1010924329322\":1478686804052,\"1021243261040\":1478686417039,\"1022898564901\":1509788624402,\"1022416996980\":1478686417209,\"1021494137671\":1509788624515,\"1018961033280\":1478686804065,\"1021494137666\":1509788624515,\"1021494137667\":1509788624515,\"1021494137664\":1509788624515,\"1021494137665\":1509788624515,\"1020267579947\":1480585069076,\"1012108878050\":1478686417025,\"1020267579944\":1480585069076,\"1020267579945\":1480585069076,\"1022871560544\":1509788624381,\"1025050931018\":1509788624232,\"1025779536806\":1509788624406,\"1014283464346\":1478686804016,\"1025626966712\":1509788624433,\"1025626966706\":1509788624433,\"1021493220305\":1478686417111,\"1021743571660\":1478686417125,\"1023537252845\":1509788624219,\"1015242106714\":1480585069068,\"1023537252841\":1509788624219,\"1022209115666\":1478686417013,\"1021493220293\":1478686417111,\"1023537252840\":1509788624220,\"1004353068644\":1444487341707,\"1021493220294\":1478686417111,\"1021493220295\":1478686417111,\"1023537252842\":1509788624219,\"1024462930118\":1509788625083,\"1022022366000\":1478686417163,\"1023845934989\":1491634246537,\"1023845934986\":1491634246537,\"1025698534934\":1509788625082,\"1023537252835\":1509788624219,\"1010541858484\":1509788624277,\"1022193547568\":1478686417189,\"1021873072676\":1478686804026,\"1025779536767\":1509788624425,\"1025779536766\":1509788624431,\"1025779536765\":1509788624428,\"1022220781402\":1478686417281,\"1021947262615\":1478686417144,\"1025711118192\":1509788624295,\"1019788211747\":1478686804023,\"1025896585738\":1509788667442,\"1022356180763\":1478686804069,\"1025700238920\":1509788624940,\"1018509485524\":1509788624837,\"1025482917252\":1509788624515,\"1021828771763\":1478686417133,\"1022124604753\":1478686417277,\"1025482917261\":1509788624272,\"1022022366017\":1478686417163,\"1025482917262\":1509788624615,\"1025482917259\":1509788624919,\"1017171382847\":1478686804019,\"1024638048050\":1509788667463,\"1025482917265\":1509788625248,\"1022479259285\":1478943089487,\"1024498454223\":1509788625070,\"1022283039548\":1509788624945,\"1022096686678\":1478686417012,\"1021881461533\":1509788624508,\"1021881461530\":1509788624436,\"1749888858\":1444487341737,\"1022019875542\":1478686417058,\"1001385189570\":1480585069061,\"325014592\":1478686804033,\"1022069555164\":1478686417301,\"1022360768180\":1478686417203,\"1024985260581\":1509788667846,\"1016971104243\":1478686804067,\"1022277010346\":1478686417197,\"1020243594392\":1465470268312,\"1022121983213\":1478686417013,\"1022332715024\":1509788624292,\"1019283314129\":1509788624390,\"1024527813961\":1509788625027,\"1021600439282\":1478686417008,\"1024265108824\":1509788624195,\"1013170676232\":1478686804049,\"1022381083921\":1478686417290,\"1021925370053\":1478686417259,\"1025900256229\":1509788667463,\"1022277010428\":1478686417285,\"1018721433350\":1509788624287,\"1749888824\":1444487341738,\"1022815986435\":1509788625055,\"1021350873639\":1509788624917,\"1023310366056\":1509788625041,\"1021878447049\":1478686417136,\"1022487778928\":1478943089489,\"1022428138043\":1478686417294,\"1019831596530\":1509788624302,\"1024265108919\":1509788624534,\"1020796726119\":1478686417031,\"1021652736100\":1509788624815,\"483744621\":1491634246533,\"1024265108896\":1509788625102,\"1020863969131\":1478686417031,\"1020900144458\":1509788625220,\"1017260777053\":1465470268268,\"1004353068836\":1444487341707,\"1023926411760\":1491634246530,\"1025628146435\":1509788624931,\"1019540743762\":1509788624315,\"4997869069\":1509788667397,\"1022516745658\":1480585069090,\"1021661255874\":1478686804033,\"1016971104039\":1478686804058,\"1024579062461\":1509788624932,\"1018923547527\":1509788624301,\"1021652736046\":1509788624194,\"1015710037473\":1465470268246,\"1017026675563\":1509788624367,\"1023926545966\":1491634246528,\"1022135612668\":1478686417063,\"1019930292321\":1509788624385,\"1016245638201\":1458304307281,\"1016245638200\":1458304307281,\"1022540733666\":1509788625063,\"1012321483718\":1478686804062,\"1016245638202\":1458304307281,\"1016245638204\":1458304307281,\"1021627700491\":1478686417119,\"1021829030155\":1509788624394,\"1001082281446\":1478686417022,\"1012321483725\":1478686804062,\"1025533775444\":1509788624347,\"1025533775447\":1509788624347,\"1022076760133\":1509788624417,\"1021730859812\":1478686417251,\"1025533775443\":1509788624347,\"1022076760134\":1509788624417,\"1021627700483\":1478686417119,\"1021659682677\":1478686417050,\"1025533775439\":1509788624346,\"1025784388958\":1509788624348,\"1021723388888\":1509788624400,\"1023431999974\":1509788624519,\"1570182609\":1444487341721,\"1024926411488\":1509788624182,\"1024926411491\":1509788624182,\"1019434308541\":1509788624319,\"1022331277065\":1478686417288,\"1016443691129\":1478686804017,\"1022375838447\":1509788624945,\"1018961032775\":1478686804050,\"1024926411479\":1509788624182,\"1020443746219\":1478686804032,\"1021932840822\":1478686417301,\"1024926411483\":1509788624182,\"1024926411485\":1509788624182,\"1024926411487\":1509788624182,\"1024926411460\":1509788624182,\"1088620693\":1444487341701,\"1022015421511\":1509788624463,\"1024926411467\":1509788624182,\"1024926411469\":1509788624182,\"1001082281395\":1478686417022,\"1025428785210\":1509788625079,\"1025749654293\":1509788624350,\"1025749654292\":1509788624350,\"1022055399262\":1478686417173,\"1021782634114\":1509788624847,\"1022121980738\":1478686417013,\"1020850333482\":1478686417031,\"1218773000\":1480585069060,\"1023773185530\":1491634246535,\"1007295516457\":1478686804015,\"1025732221494\":1509788624942,\"1021456653218\":1478686417108,\"1024556909686\":1509788624408,\"1024579061126\":1509788624932,\"1021955782978\":1478686417146,\"1021612102876\":1478686417246,\"1021955782983\":1478686417146,\"1021955782980\":1478686417146,\"1021955782981\":1478686417146,\"1021262139389\":1478686804039,\"1021686294837\":1509788624396,\"1021955782986\":1478686417146,\"1021955782984\":1478686417146,\"282155071\":1478686417019,\"1021612102864\":1478686417246,\"1022089474394\":1478686417180,\"1021456653211\":1478686417108,\"1838753120\":1478950494927,\"1022002707466\":1478686804066,\"1022454744814\":1478686417072,\"1022371120114\":1509788624291,\"1021981342506\":1478686416986,\"1022273605048\":1478686417014,\"1022056447672\":1478686417012,\"1021143124271\":1478686417096,\"1022209116568\":1478686417013,\"1025749654206\":1509788624351,\"1021258862090\":1478686417101,\"1025749654205\":1509788624351,\"1025033494794\":1509788624402,\"1019283315672\":1509788624391,\"1022297852955\":1478686417199,\"1012079521048\":1478686804029,\"1021857604292\":1478686417053,\"1021613151598\":1478686417247,\"1021613151596\":1478686417247,\"1024226308399\":1509788624983,\"1019238745813\":1509788624312,\"1021562294353\":1509788624405,\"1021894960168\":1509788624465,\"1021797445194\":1478686417130,\"1022134825582\":1478686417276,\"1017261428755\":1509788625080,\"1020365626344\":1509788624362,\"1020365626338\":1509788624362,\"1020551484671\":1478686804035,\"1020365626339\":1509788624362,\"1020365626336\":1509788624362,\"1020365626337\":1509788624362,\"1022418961801\":1478686417016,\"1020365626342\":1509788624363,\"1020365626343\":1509788624362,\"1022479129087\":1478943089253,\"1020945628256\":1478686417229,\"1022431806679\":1478686417071,\"1019272697875\":1509788624315,\"1021548269632\":1478686417113,\"1020945628255\":1478686417229,\"1020945628251\":1478686417229,\"1020365626335\":1509788624362,\"1002086799444\":1478686417024,\"1021652735592\":1509788624533,\"1025485933206\":1509788624436,\"1025485933204\":1509788624436,\"1025485933203\":1509788624437,\"1025485933202\":1509788624437,\"1021548269600\":1478686417113,\"1001082280964\":1478686417022,\"1021174057876\":1465470268186,\"1021627700478\":1478686417119,\"1021548269630\":1478686417113,\"1021627700469\":1478686417119,\"1019302844955\":1509788624312,\"1025628144902\":1509788624929,\"1021627700465\":1478686417119,\"1020767101766\":1478686416996,\"1022467458755\":1478686417218,\"1021939792213\":1478686417143,\"1021939792209\":1478686417143,\"1025652131003\":1509788625019,\"1021939792204\":1478686417143,\"1022128403086\":1478686417184,\"1021939792205\":1478686417143,\"1022052646370\":1478686417270,\"1025289092364\":1509788624286,\"1025679656328\":1509788624349,\"1022052646367\":1478686417270,\"1021968627919\":1509788625246,\"1022052646349\":1478686417270,\"1025270217734\":1509788624508,\"1021968627915\":1509788625096,\"1022292479921\":1478686804029,\"1021968627897\":1509788625246,\"1021582741940\":1478686417114,\"1025732221125\":1509788624942,\"1009744040905\":1491634246510,\"1023393992106\":1509788625071,\"1021968627891\":1509788625090,\"1021262138696\":1478686804065,\"1021968627885\":1509788625089,\"1021968627882\":1509788625242,\"1021968627880\":1509788625242,\"1021783158196\":1478686417128,\"1021968627875\":1509788625096,\"1021968627872\":1509788625242,\"1021968627870\":1509788625242,\"1021968627871\":1509788625090,\"1000309108127\":1478686417018,\"1021700843677\":1478686804027,\"1001673028314\":1478686804029,\"1529549147\":1444487341707,\"1529549146\":1444487341706,\"1529549145\":1444487341706,\"1021435287766\":1478686417044,\"1529549144\":1444487341707,\"1018922759697\":1509788624282,\"1025270217807\":1509788624508,\"1021953293124\":1509788624355,\"421876644\":1478686417019,\"1021953293125\":1509788624355,\"1021953293126\":1509788624355,\"1021953293127\":1509788624354,\"421876640\":1478686417019,\"1021979506908\":1478686417010,\"1021953293128\":1509788624354,\"209667819\":1444487341730,\"1022611771920\":1509788625075,\"1025270217898\":1509788624508,\"209667805\":1444487341733,\"1025485933045\":1509788625135,\"1020443745633\":1478686804066,\"1025485933044\":1509788625135,\"1025485933043\":1509788625135,\"421876630\":1478686417019,\"1021166192744\":1478686417234,\"1023408016779\":1509788625040,\"421876638\":1478686417019,\"1024528466057\":1509788624471,\"1024528466056\":1509788624471,\"1024528466059\":1509788624471,\"1024528466058\":1509788624471,\"1025386346478\":1509788624521,\"1024528466052\":1509788624471,\"1024528466055\":1509788624471,\"1024528466054\":1509788624471,\"1021624031163\":1509788624396,\"1832200146\":1491634246517,\"1022479784589\":1478943089487,\"1021102257259\":1478686417095,\"1024192625824\":1509788625034,\"1021776735392\":1509788624395,\"255018437\":1444487341731,\"1021753143083\":1478686417126,\"1022857014548\":1509788624997,\"1014687009309\":1478686804015,\"1019283314710\":1509788624390,\"1019283315173\":1509788624390,\"1021953293012\":1509788624355,\"1022490794696\":1478943089490,\"1021953293009\":1509788624354,\"1021953293010\":1509788624355,\"1020133887820\":1509788625076,\"1021953293011\":1509788624355,\"1019724375995\":1509788624313,\"1021797444654\":1478686417130,\"1666656329\":1478686416993,\"1021311942941\":1465469681397,\"1025270218004\":1509788624508,\"1016779110151\":1478686804017,\"1020086307361\":1509788624383,\"1022279896957\":1478686417285,\"1021966924320\":1478686417148,\"1021352707718\":1465470268227,\"1021352707720\":1465470268227,\"1021352707721\":1465470268227,\"1025188035107\":1509788624288,\"1022896464590\":1509788624382,\"4971914010\":1509788624160,\"1019865677599\":1509788625077,\"2051617052\":1478686804051,\"1021491256869\":1478686417111,\"1022868024351\":1509788625074,\"1022631039493\":1509788624456,\"1001732665448\":1478686417023,\"1021551809213\":1509788624401,\"1019739580066\":1509788624173,\"1013274222667\":1509788625016,\"1024501203568\":1509788625070,\"1015415250948\":1480585069067,\"1025607565751\":1509788624564,\"1021055987939\":1478686416984,\"1021218754088\":1478686416991,\"1009017529698\":1478686804054,\"1025607565758\":1509788624539,\"1025607565756\":1509788624552,\"1021727451378\":1478686804046,\"1025607565755\":1509788624564,\"1025607565754\":1509788624564,\"1009017529700\":1478686804054,\"1021491388154\":1478686417111,\"1022128402632\":1478686417184,\"1023220610974\":1509788624251,\"1019260771206\":1509788624313,\"1021619050007\":1478686416979,\"1023220610970\":1509788624251,\"1023220610964\":1509788624251,\"1023220610967\":1509788624251,\"1023220610962\":1509788624251,\"1025607565784\":1509788624566,\"1023220610957\":1509788624251,\"1023220610959\":1509788624251,\"1025607565765\":1509788624547,\"1023220610958\":1509788624251,\"1020925704407\":1509788624937,\"1023220610952\":1509788624251,\"1025607565761\":1509788624539,\"1023220610954\":1509788624251,\"1023220610948\":1509788624251,\"1024528466320\":1509788624471,\"1025607565774\":1509788624547,\"1023220610951\":1509788624251,\"1023220610950\":1509788624251,\"1023220610945\":1509788624251,\"1025607565771\":1509788624547,\"1023220610947\":1509788624251,\"1025732221282\":1509788624942,\"1023220610989\":1509788624251,\"1023220610984\":1509788624251,\"1023220610987\":1509788624251,\"1023220610986\":1509788624251,\"1008611598077\":1478686804030,\"1023220610980\":1509788624251,\"1024452316424\":1509788667888,\"866220124\":1478950494918,\"1023220610976\":1509788624251,\"1021330030830\":1465470268219,\"1024294465626\":1509788624583,\"1006734879484\":1478686804032,\"1021330030825\":1465470268219,\"1020789122849\":1478686417076,\"1024294465618\":1509788624583,\"1022611510428\":1509788625062,\"1024579060056\":1509788624926,\"1024294465605\":1509788624582,\"1024294465659\":1509788624582,\"1022536146731\":1509788624383,\"1018389418099\":1465470268312,\"1022536146730\":1509788624383,\"1021173796474\":1478686417098,\"1022536146733\":1509788624383,\"1024998894203\":1509788624915,\"1022536146732\":1509788624383,\"1022536146734\":1509788624383,\"1024294465660\":1509788624582,\"1024294465651\":1509788624582,\"1024294465643\":1509788624582,\"350443729\":1444487341725,\"1024294465640\":1509788624582,\"1025732222650\":1509788624942,\"1024192625278\":1509788625071,\"1024294465646\":1509788624582,\"1024294465644\":1509788624582,\"350443739\":1444487341745,\"1025791596839\":1509788624409,\"1024294465633\":1509788624583,\"1024587318012\":1509788624434,\"1024587318011\":1509788624426,\"1024294465639\":1509788624583,\"1024998894179\":1509788624836,\"1024294465638\":1509788624583,\"1024294465563\":1509788624888,\"1024294465560\":1509788624888,\"1022040718070\":1478686417268,\"1024294465567\":1509788624888,\"1024341390121\":1509788625031,\"1024294465555\":1509788624888,\"1024587317901\":1509788624581,\"1024587317900\":1509788624580,\"1024294465552\":1509788624888,\"1022473624718\":1478943089253,\"1024294465558\":1509788624888,\"1024587317911\":1509788624581,\"1024587317910\":1509788624581,\"1024294465546\":1509788624888,\"1024587317909\":1509788624581,\"1024294465545\":1509788624888,\"1024587317908\":1509788624581,\"1024294465544\":1509788624888,\"1024587317907\":1509788624581,\"1024587317906\":1509788624581,\"1024587317905\":1509788624581,\"1025642824106\":1509788624745,\"1025642824101\":1509788624832,\"1025642824100\":1509788624828,\"1024294465537\":1509788624888,\"1022040718057\":1478686417268,\"1025642824102\":1509788624823,\"1024546686728\":1509788624959,\"1024587317915\":1509788624581,\"1024587317927\":1509788624581,\"1024167459244\":1509788625035,\"1024587317924\":1509788624581,\"1021270000871\":1478686804033,\"1024587317922\":1509788624581,\"1024587317934\":1509788624581,\"1025628143793\":1509788624929,\"1024444188963\":1509788625031,\"1024587317930\":1509788624581,\"1024294465579\":1509788624888,\"1022389077948\":1478686417069,\"1024587317942\":1509788624580,\"1024294465578\":1509788624888,\"1024587317941\":1509788624581,\"1024294465577\":1509788624888,\"1024294465576\":1509788624889,\"1024587317939\":1509788624581,\"1024587317938\":1509788624581,\"1024587317937\":1509788624581,\"1024294465571\":1509788624889,\"1024587317949\":1509788624580,\"1024294465569\":1509788624888,\"1024587317947\":1509788624580,\"1024294465574\":1509788624889,\"1024587317945\":1509788624581,\"1025732222479\":1509788624942,\"1024587317839\":1509788624580,\"1022475983926\":1478943089487,\"1024587317838\":1509788624580,\"1024587317837\":1509788624580,\"1024587317836\":1509788624580,\"1022611379206\":1509788625062,\"1025784519143\":1509788624349,\"1024587317835\":1509788624579,\"1022413717752\":1478686417208,\"1022475983922\":1478943089487,\"1022536146841\":1509788624386,\"1022536146840\":1509788624386,\"1024587317846\":1509788624580,\"1022536146843\":1509788624386,\"1024587317845\":1509788624580,\"1022536146842\":1509788624386,\"1022536146844\":1509788624386,\"1024587317842\":1509788624580,\"1024587317841\":1509788624580,\"1016622612246\":1478686804024,\"1024587317840\":1509788624580,\"1024546686916\":1509788624959,\"1024587317855\":1509788624579,\"1024587317854\":1509788624580,\"1024587317852\":1509788624580,\"1022536146837\":1509788624386,\"1020865805351\":1478686417031,\"1022536146836\":1509788624386,\"1022021712205\":1509788624463,\"1024587317850\":1509788624580,\"1022536146839\":1509788624386,\"1023340384166\":1509788624175,\"1022536146838\":1509788624386,\"1024587317848\":1509788624580,\"1024587317861\":1509788624580,\"1023606333434\":1509788624270,\"1011397244853\":1480585069074,\"1024587317856\":1509788624579,\"1024587317869\":1509788624579,\"1024587317867\":1509788624580,\"1024587317864\":1509788624580,\"1024587317878\":1509788624579,\"1024587317874\":1509788624580,\"1018797848911\":1478686804032,\"1020805374187\":1478686417030,\"1024587317880\":1509788624579,\"1024587317766\":1509788624579,\"1024587317764\":1509788624579,\"1024294465688\":1509788624583,\"1024587317763\":1509788624579,\"1024294465695\":1509788624582,\"1024294465694\":1509788624582,\"1024587317761\":1509788624579,\"1024294465693\":1509788624582,\"1024294465683\":1509788624583,\"1025861195313\":1509788667450,\"1024587317774\":1509788624579,\"669739809\":1478686804029,\"1024587317773\":1509788624579,\"1024587317772\":1509788624579,\"1024294465680\":1509788624583,\"1021653390191\":1509788624864,\"1024998894228\":1509788624871,\"1024587317771\":1509788624579,\"1024587317769\":1509788624579,\"1024294465673\":1509788624582,\"1024587317778\":1509788624579,\"1024294465677\":1509788624583,\"1024294465664\":1509788624582,\"1024587317787\":1509788624579,\"1024294465671\":1509788624582,\"1006890197857\":1478686804025,\"1024587317784\":1509788624579,\"1024587317799\":1509788624579,\"1024587317798\":1509788624579,\"1023947514891\":1491634246532,\"1012108880491\":1478686417025,\"1024587317796\":1509788624579,\"1024587317795\":1509788624579,\"1024587317792\":1509788624579,\"1024587317805\":1509788624579,\"1024587317804\":1509788624579,\"1024587317803\":1509788624579,\"1021512358625\":1478686417300,\"1024587317802\":1509788624579,\"1024587317801\":1509788624579,\"1022438490638\":1478686417213,\"1024998894247\":1509788624915,\"1024998894243\":1509788624842,\"1023844232653\":1509788625081,\"1024998894242\":1509788624835,\"1022291298655\":1478686417015,\"1025063118485\":1509788624292,\"1021936516548\":1509788624609,\"1012404712940\":1478686417026,\"1021936516544\":1509788624609,\"1021936516545\":1509788624609,\"1021936516546\":1509788624609,\"1021936516547\":1509788624609,\"1021341696336\":1509788624181,\"1021341696337\":1509788624180,\"1022536146457\":1509788624373,\"1022536146456\":1509788624373,\"1022536146459\":1509788624373,\"1022536146458\":1509788624373,\"1022536146461\":1509788624373,\"1022536146460\":1509788624373,\"1021668077010\":1478686417248,\"1021341696335\":1509788624180,\"1022536146462\":1509788624373,\"1024780653654\":1509788624487,\"1022082004263\":1478686417178,\"1021686426763\":1478686417121,\"1025515817027\":1509788624345,\"1022111102802\":1478686417012,\"1001061178914\":1478686417022,\"1024961276338\":1509788624330,\"1021505149867\":1478686417112,\"1021610791269\":1478686417116,\"1020294054805\":1465470268285,\"1019113441844\":1509788625079,\"1022088164493\":1478686417179,\"1021944249641\":1478686417260,\"1021774637875\":1509788624400,\"1022941946265\":1509788624935,\"1022076106231\":1478686417012,\"1025508083841\":1509788624295,\"1022941946269\":1509788624935,\"1021936516524\":1509788624609,\"1021936516525\":1509788624609,\"1021936516526\":1509788624609,\"1024153041347\":1509788667495,\"1021936516527\":1509788624609,\"1021700845468\":1478686804027,\"1021936516522\":1509788624608,\"1022941946263\":1509788624935,\"1021603058123\":1478686804022,\"1009909984983\":1478686804028,\"1021936516523\":1509788624609,\"1022368367737\":1478686417204,\"1025270217539\":1509788624508,\"1021936516532\":1509788624608,\"1021936516533\":1509788624609,\"1021936516534\":1509788624609,\"1022941946251\":1509788624935,\"1021936516535\":1509788624609,\"1021936516528\":1509788624609,\"1021936516529\":1509788624608,\"1021936516530\":1509788624608,\"1021936516531\":1509788624608,\"1021468711379\":1478686417007,\"1022536146544\":1509788624383,\"1021936516541\":1509788624608,\"772236157\":1444487341741,\"1021936516542\":1509788624609,\"1021936516538\":1509788624609,\"1025299969481\":1509788624294,\"1025508083829\":1509788624295,\"1025423936893\":1509788624293,\"1000094144306\":1478686804016,\"1025508083834\":1509788624295,\"1025508083781\":1509788624295,\"1024668196790\":1509788625025,\"1021901906768\":1509788624402,\"1025270217627\":1509788624508,\"1025791596725\":1509788624409,\"1025508083790\":1509788624295,\"1025508083787\":1509788624295,\"1022536146619\":1509788624377,\"1006923889669\":1478686804054,\"1024847106295\":1509788624970,\"1021974265667\":1509788624995,\"1019957294864\":1480585069076,\"1021282976790\":1478686417101,\"1025609270834\":1509788625000,\"1023796515385\":1509788625071,\"1019957294862\":1480585069076,\"1019957294863\":1480585069076,\"777872265\":1444487341723,\"1024822464801\":1509788624925,\"1021686033461\":1509788624396,\"1021637792592\":1478686417049,\"1021063328030\":1478686417036,\"1021282976813\":1478686417101,\"1021983703021\":1478686417152,\"1018556147777\":1509788624366,\"1022073353919\":1478686417176,\"1022216326716\":1480585069092,\"1022216326711\":1480585069092,\"350444274\":1444487341719,\"1022073353903\":1478686417176,\"1023878442266\":1491634246504,\"1022073353870\":1478686417176,\"1024024060490\":1509788624277,\"1025732222138\":1509788624942,\"1023149176486\":1509788624509,\"1018850539246\":1509788624320,\"1024587317383\":1509788624877,\"1021852755332\":1509788624394,\"1024587317381\":1509788624878,\"1022073353983\":1478686417176,\"1024587317379\":1509788624878,\"1014142423344\":1465470268245,\"1022073353977\":1478686417176,\"1024587317378\":1509788624878,\"1024587317376\":1509788624878,\"1024587317389\":1509788624878,\"1024587317388\":1509788624878,\"1024587317386\":1509788624877,\"1024587317385\":1509788624877,\"1022073353966\":1478686417176,\"1024587317397\":1509788624877,\"1025759222458\":1509788624304,\"1024587317407\":1509788624878,\"1024587317405\":1509788624877,\"1024587317402\":1509788624877,\"1024587317415\":1509788624877,\"1024587317414\":1509788624877,\"1024587317413\":1509788624878,\"1022061558035\":1478686417173,\"1024587317412\":1509788624877,\"1024587317410\":1509788624878,\"1024587317409\":1509788624878,\"1021558888224\":1478686417245,\"1019739579306\":1509788624173,\"1021986061700\":1478686417153,\"1025042933700\":1509788624498,\"1016301612581\":1480585069066,\"1001082280793\":1478686417022,\"1024911994869\":1509788624197,\"1024911994868\":1509788624203,\"1021716442491\":1478686417123,\"1006825841958\":1478686804023,\"1024587317375\":1509788624878,\"1025876268202\":1509788667405,\"1024587317372\":1509788624878,\"1024587317371\":1509788624878,\"1023932049736\":1491634246529,\"1024947514866\":1509788624993,\"554528691\":1491634246534,\"1024587317369\":1509788624877,\"1024642637658\":1509788624485,\"1024587317253\":1509788624877,\"1024642637656\":1509788624485,\"1017715997361\":1480585069072,\"1024215823916\":1509788624408,\"1024215823907\":1509788624429,\"1024587317263\":1509788624877,\"1024642637650\":1509788624485,\"1024642637649\":1509788624485,\"1024587317261\":1509788624877,\"1024642637648\":1509788624485,\"1024587317260\":1509788624876,\"1989490776\":1491634246510,\"1021921698151\":1509788624465,\"1024642637654\":1509788624485,\"1024215823909\":1509788624426,\"1024587317257\":1509788624877,\"1024215823908\":1509788624432,\"1024642637652\":1509788624485,\"1024587317270\":1509788624876,\"1024587317269\":1509788624876,\"1024587317268\":1509788624876,\"1024642637646\":1509788624485,\"1024587317266\":1509788624877,\"1024587317264\":1509788624877,\"1017715997359\":1480585069072,\"1024587317277\":1509788624876,\"1024587317274\":1509788624876,\"1024587317273\":1509788624876,\"1007804738530\":1478686804015,\"1024587317272\":1509788624876,\"1024587317286\":1509788624876,\"1024587317285\":1509788624877,\"1024587317284\":1509788624877,\"1016971101753\":1478686804058,\"1024587317281\":1509788624876,\"1022073353813\":1478686417176,\"1024642637682\":1509788624485,\"1020017193922\":1509788624389,\"1024587317291\":1509788624876,\"1024587317290\":1509788624876,\"1024587317289\":1509788624876,\"1024587317288\":1509788624876,\"1024642637675\":1509788624485,\"1023846460446\":1491634246537,\"1024642637674\":1509788624485,\"1024642637673\":1509788624485,\"1024642637679\":1509788624485,\"1024642637676\":1509788624485,\"1024642637665\":1509788624485,\"1024642637664\":1509788624485,\"1024642637671\":1509788624485,\"1024248329753\":1495284743423,\"1022262725750\":1509788624424,\"1026231877570\":1514456869774,\"1019300093167\":1509788624282,\"1025642824428\":1509788625124,\"1025642824430\":1509788625087,\"1023897971432\":1509788625019,\"1021627830840\":1478686417119,\"1025642824427\":1509788625106,\"1025642824426\":1509788625115,\"1021627830839\":1478686417119,\"1010319062084\":1478686804055,\"1021687344831\":1480585069077,\"1025732222359\":1509788624942,\"1021222685272\":1478686417099,\"1024781702783\":1509788624554,\"1025642824402\":1509788624406,\"1021446298924\":1478686417107,\"1021502658966\":1478686417046,\"1025642824395\":1509788624431,\"1025642824394\":1509788624428,\"1022315940113\":1478686417287,\"1024587317757\":1509788624578,\"1016677267838\":1465470268261,\"1001082280691\":1478686417022,\"1022315940118\":1478686417287,\"1022436262489\":1478686417213,\"1024587317647\":1509788624879,\"1021662433399\":1509788624396,\"1021888799478\":1478686417138,\"1025791597141\":1509788624409,\"1024587317645\":1509788624879,\"1024587317644\":1509788624879,\"1024587317642\":1509788624878,\"1021974396360\":1478686417262,\"1024587317654\":1509788624879,\"1024587317653\":1509788624879,\"1024587317652\":1509788624879,\"1021638185432\":1478686417008,\"1024487966599\":1509788624299,\"1024587317650\":1509788624879,\"1024587317649\":1509788624879,\"1024587317662\":1509788624879,\"1024587317661\":1509788624879,\"1024587317660\":1509788624879,\"1024587317659\":1509788624879,\"1024587317658\":1509788624879,\"1024587317657\":1509788624879,\"1024587317656\":1509788624879,\"1020323422094\":1509788625078,\"1024587317670\":1509788624879,\"1021783419014\":1509788624395,\"1024587317669\":1509788624878,\"1024587317668\":1509788624879,\"1024737532048\":1509788625021,\"1024587317667\":1509788624878,\"1006923890392\":1478686804054,\"1024587317666\":1509788624879,\"1021756287712\":1478686417126,\"1024587317665\":1509788624879,\"1024587317664\":1509788624879,\"1052209630\":1478686804033,\"1021192277085\":1478686417003,\"1008896026999\":1478686804061,\"1020323422096\":1509788625076,\"220807849\":1478686417019,\"1022073354041\":1478686417176,\"1017063768787\":1478686804069,\"1021848167823\":1509788624897,\"1024587317581\":1509788624888,\"1007979069276\":1478686804023,\"1025642824304\":1509788624523,\"1024587317577\":1509788624888,\"1024587317576\":1509788624888,\"1025642824301\":1509788624540,\"1021851837537\":1509788624402,\"1024587317590\":1509788624887,\"1021848167833\":1509788624897,\"1025642824303\":1509788624537,\"1025642824302\":1509788624542,\"1024587317586\":1509788624888,\"1021848167838\":1509788624897,\"1024587317584\":1509788624887,\"1021848167825\":1509788624897,\"1019740103246\":1509788625077,\"1020378209335\":1465470268302,\"1024587317594\":1509788624887,\"1021059527824\":1478686417232,\"1020979574864\":1478686417087,\"1021848167850\":1509788624897,\"1025524075187\":1509788625022,\"1021848167854\":1509788624897,\"1021434895620\":1478686417044,\"1021848167843\":1509788624897,\"1021848167846\":1509788624897,\"1021848167867\":1509788624897,\"1021612233613\":1478686417049,\"1021848167869\":1509788624897,\"1021612233615\":1478686417049,\"1021848167871\":1509788624897,\"1022377674018\":1509788624352,\"1021848167857\":1509788624897,\"1020979574863\":1478686417087,\"1021848167861\":1509788624897,\"1020979574861\":1478686417087,\"1021848167863\":1509788624897,\"1021848167881\":1509788624897,\"1020979574833\":1478686417087,\"1019001769492\":1480585069069,\"1025043981898\":1509788624191,\"1025043981895\":1509788624191,\"1024587317519\":1509788624887,\"1021848167875\":1509788624897,\"1076170728\":1509788625018,\"1026728215271\":1523788103987,\"1020979574845\":1478686417087,\"1025043981919\":1509788624191,\"1024781702785\":1509788624555,\"1024587317527\":1509788624888,\"1024781702784\":1509788624555,\"1021848167897\":1509788624897,\"1024781702787\":1509788624554,\"1024781702786\":1509788624555,\"1021088101038\":1478686417036,\"1025043981915\":1509788624191,\"1021733874476\":1509788624918,\"1021873726291\":1478686417257,\"1024587317522\":1509788624888,\"1025043981909\":1509788624191,\"1025043981908\":1509788624191,\"1024587317532\":1509788624888,\"1020916137063\":1478686417032,\"1025043981906\":1509788624191,\"1024587317530\":1509788624888,\"1024587317529\":1509788624888,\"1025642824221\":1509788624186,\"1024973335077\":1509788624288,\"1024587317543\":1509788624888,\"1024587317542\":1509788624888,\"1024587317539\":1509788624888,\"1025642824213\":1509788624197,\"1025642824212\":1509788624204,\"1021848167905\":1509788624897,\"1024587317549\":1509788624888,\"1025043981924\":1509788624192,\"1024587317547\":1509788624888,\"1020796724026\":1478686417029,\"1025043981921\":1509788624191,\"1025043981920\":1509788624191,\"1025642824210\":1509788624200,\"1024587317556\":1509788624887,\"1025791597290\":1509788624409,\"1024587317552\":1509788624887,\"1024587317566\":1509788624887,\"1024587317564\":1509788624887,\"1024587317562\":1509788624887,\"1001385195484\":1480585069061,\"1025297737837\":1509788624209,\"1025050933543\":1509788624568,\"1012131952427\":1478686417025,\"1021015091667\":1478686417090,\"1020649665437\":1480585069099,\"1025297737828\":1509788624208,\"1023537258353\":1509788624559,\"1023537258352\":1509788624559,\"1023537258355\":1509788624559,\"1021787486136\":1478686417129,\"1023537258351\":1509788624559,\"1023537258350\":1509788624559,\"1025297737850\":1509788624208,\"1022019085806\":1478686417011,\"331039660\":1444487341755,\"1024936374786\":1509788625006,\"1025297737807\":1509788624271,\"1025685299029\":1509788624382,\"1023372105077\":1509788625071,\"1025685299028\":1509788624382,\"1025685299031\":1509788624382,\"1025685299030\":1509788624382,\"1025685299027\":1509788624383,\"1021827201378\":1509788624394,\"1022767362411\":1509788625074,\"1025685299032\":1509788624382,\"1925915365\":1444487341712,\"1021530441514\":1478686417244,\"1025685299015\":1509788624383,\"1024812632909\":1509788624972,\"1022432468321\":1478686417212,\"1021530441518\":1478686417244,\"1025297737817\":1509788624215,\"1021530441506\":1478686417244,\"1025297737813\":1509788624228,\"1025297737812\":1509788624228,\"1025685299017\":1509788624383,\"1012277960865\":1478686804022,\"1025685299016\":1509788624383,\"1025297737809\":1509788624270,\"4984502616\":1509788624160,\"1021594798949\":1509788624817,\"1144984699\":1478686804022,\"1024780650757\":1509788667508,\"1025685299005\":1509788624382,\"1025685299004\":1509788624382,\"1025685299001\":1509788624382,\"1025685299003\":1509788624382,\"1025685299002\":1509788624382,\"1021974258388\":1509788624994,\"1021974258389\":1509788624994,\"1022121061265\":1478686417183,\"1017629622218\":1509788624363,\"1022062995209\":1478686417012,\"1021063457962\":1478686417093,\"1021974258396\":1509788624994,\"1021974258398\":1509788624994,\"1021974258399\":1509788624994,\"1021974258394\":1509788624995,\"1021974258395\":1509788624994,\"1020322373502\":1465470268301,\"1021974258400\":1509788624994,\"1021974258401\":1509788624994,\"1021974258402\":1509788624994,\"1025297737737\":1509788625113,\"1021344980066\":1478686417041,\"213212381\":1491634246512,\"1925915297\":1444487341709,\"1025297737733\":1509788625165,\"1925915323\":1444487341709,\"1020748626373\":1478686416996,\"1025902349328\":1509788667448,\"1025297737750\":1509788625133,\"1025297737749\":1509788625133,\"1025297737748\":1509788625133,\"1025297737747\":1509788625133,\"1016587215165\":1478686804042,\"1016587215164\":1478686804042,\"1016587215167\":1478686804042,\"1016587215166\":1478686804042,\"1016587215161\":1478686804042,\"1016587215160\":1478686804042,\"1001004810470\":1478686417022,\"1016587215163\":1478686804042,\"1016587215162\":1478686804042,\"1016587215157\":1478686804042,\"1224939915\":1491634246519,\"1016587215156\":1478686804042,\"1016587215159\":1478686804042,\"1016587215158\":1478686804042,\"1016587215153\":1478686804042,\"1016587215152\":1478686804042,\"1022060373992\":1478686417173,\"1016587215155\":1478686804042,\"1016587215154\":1478686804042,\"1016587215149\":1478686804042,\"1016587215148\":1478686804042,\"1016587215150\":1478686804042,\"1025297737976\":1509788624270,\"1024574741776\":1509788624925,\"1021881597079\":1509788624510,\"1025297737972\":1509788624270,\"1023901644094\":1509788624847,\"1019596453091\":1509788624971,\"420956596\":1444487341738,\"1023095563637\":1509788625145,\"1023095563639\":1509788625145,\"1023095563641\":1509788625145,\"1023095563640\":1509788625145,\"1023095563647\":1509788625145,\"1021348388160\":1478686417041,\"1021201060989\":1509788624977,\"1021201060983\":1509788624977,\"1021201060980\":1509788624977,\"1021201060981\":1509788624977,\"1024333000483\":1509788625031,\"1025703379086\":1509788624295,\"1025685299108\":1509788624297,\"1024215820346\":1509788624560,\"1021396885440\":1478686417106,\"1024215820345\":1509788624560,\"1024215820344\":1509788624560,\"1024215820349\":1509788624560,\"1024215820343\":1509788624560,\"1025685299093\":1509788624377,\"1025685299095\":1509788624377,\"1025685299094\":1509788624377,\"1025685299101\":1509788624377,\"1025685299100\":1509788624377,\"1025685299102\":1509788624377,\"1025685299097\":1509788624377,\"1025297737858\":1509788624208,\"1025685299096\":1509788624377,\"1025685299099\":1509788624377,\"1025685299098\":1509788624377,\"930047901\":1491634246515,\"123819927\":1491634246515,\"1016587215172\":1478686804042,\"1001004810394\":1478686417022,\"1025297737876\":1509788624230,\"1016587215169\":1478686804042,\"1016587215168\":1478686804042,\"1016587215171\":1478686804042,\"1016587215170\":1478686804042,\"1025297737872\":1509788624208,\"1022463794809\":1480585069117,\"1022463794811\":1480585069117,\"1025297738093\":1509788624839,\"1022463794810\":1480585069117,\"1025297738092\":1509788624839,\"1022463794813\":1480585069117,\"1022463794812\":1480585069117,\"1025297738089\":1509788624839,\"1001113732841\":1478686417024,\"1022463794814\":1480585069117,\"1022240838569\":1478686417065,\"1025297738082\":1509788624839,\"1022371126255\":1509788624290,\"1021900078128\":1478686417054,\"1022255387373\":1509788624280,\"1021501605882\":1478686417007,\"1025297738078\":1509788624865,\"1020755703832\":1478686417076,\"1025297738076\":1509788624865,\"1020012997723\":1478686804069,\"1025297738074\":1509788624916,\"1022463794753\":1480585069121,\"1025297738070\":1509788624917,\"1022460780220\":1478686417217,\"1022460780216\":1478686417217,\"1022463794744\":1480585069121,\"1022463794746\":1480585069121,\"1022463794748\":1480585069121,\"1022463794737\":1480585069121,\"1025297738022\":1509788624230,\"1925915521\":1444487341709,\"1022463794739\":1480585069121,\"1021757600985\":1509788624395,\"1022463794741\":1480585069121,\"1022463794743\":1480585069121,\"1025297738017\":1509788624208,\"1925915524\":1444487341710,\"1022463794742\":1480585069121,\"1025297738016\":1509788624208,\"1022463794728\":1480585069121,\"1022463794730\":1480585069121,\"1022463794733\":1480585069121,\"1022463794732\":1480585069121,\"1025607965511\":1509788624213,\"1022463794734\":1480585069121,\"1012172716930\":1478686417025,\"1022132595309\":1478686417276,\"1022463794723\":1480585069121,\"1022463794722\":1480585069121,\"1001004810556\":1478686417022,\"1025593285549\":1509788624929,\"1020294062067\":1465470268286,\"1022463794724\":1480585069121,\"1022463794727\":1480585069121,\"1025297737998\":1509788624199,\"1021152563424\":1478686417037,\"1020392228243\":1478686804028,\"1022463794719\":1480585069121,\"1025297737992\":1509788624228,\"1022344387070\":1478686417202,\"1025297737988\":1509788624228,\"1016587215056\":1478686804069,\"1016587215053\":1478686804069,\"1016587215052\":1478686804069,\"1016587215055\":1478686804069,\"1021537651196\":1509788624401,\"1016587215054\":1478686804069,\"1016587215049\":1478686804069,\"1016587215051\":1478686804069,\"1016587215050\":1478686804069,\"1016587215045\":1478686804069,\"1025297738007\":1509788624208,\"1016587215044\":1478686804069,\"1022463794688\":1480585069121,\"1016587215047\":1478686804069,\"1016587215046\":1478686804069,\"1022463794690\":1480585069121,\"1022463794693\":1480585069121,\"1022463794692\":1480585069121,\"1025297738002\":1509788624215,\"1016587215043\":1478686804069,\"1022463794694\":1480585069121,\"1016670447400\":1478686804018,\"1019283309419\":1509788624374,\"1025607965597\":1509788624212,\"1025318840480\":1509788624598,\"1001385195091\":1480585069061,\"1010013534213\":1491634246526,\"1025297738235\":1509788625165,\"1025297738230\":1509788625244,\"1020796730697\":1478686417029,\"1025297738226\":1509788625246,\"1023220608451\":1509788624585,\"1025297738182\":1509788624546,\"653883219\":1444487341716,\"1025297738181\":1509788624546,\"1025297738178\":1509788624546,\"1025297738176\":1509788624546,\"1002386174854\":1478686416993,\"1025318840478\":1509788624548,\"331039247\":1444487341726,\"1021912006635\":1478686417140,\"1021912006630\":1478686417140,\"1001004810718\":1478686417022,\"1021040126870\":1478686417036,\"4985420007\":1509788624160,\"1022302835923\":1478686417199,\"1021040126869\":1478686417036,\"1022302835922\":1478686417199,\"1021594798821\":1509788624419,\"1021040126866\":1478686417035,\"1021040126867\":1478686417036,\"1925915405\":1444487341709,\"1025508611125\":1509788624336,\"1022076758432\":1509788624417,\"1025508611124\":1509788624343,\"1025297738150\":1509788624565,\"1025607965658\":1509788624212,\"1023946864351\":1491634246531,\"1025297738147\":1509788624612,\"1025508611120\":1509788624341,\"1025297738145\":1509788624613,\"1025593547545\":1509788624425,\"1025593547544\":1509788624431,\"1025297738169\":1509788624546,\"1025593547546\":1509788624407,\"1025297738168\":1509788624546,\"1025297738166\":1509788624546,\"1022245950383\":1478686417195,\"1025593547543\":1509788624428,\"1025731953495\":1509788624922,\"1025792378056\":1509788624975,\"1025297738163\":1509788624565,\"1022463794841\":1480585069118,\"1001004810626\":1478686417022,\"1022463794843\":1480585069118,\"1022463794842\":1480585069118,\"1022463794844\":1480585069118,\"1022463794832\":1480585069117,\"1022463794834\":1480585069118,\"1925915430\":1444487341709,\"1022463794836\":1480585069118,\"1016719599671\":1478686804063,\"1022463794839\":1480585069118,\"1023946864355\":1491634246531,\"1021848173560\":1509788624493,\"1021848173561\":1509788624492,\"1022463794827\":1480585069117,\"1021848173562\":1509788624492,\"1021848173563\":1509788624492,\"1022463794829\":1480585069117,\"1021848173564\":1509788624492,\"1022463794831\":1480585069117,\"1022076758430\":1509788624417,\"1021848173566\":1509788624492,\"1022076758431\":1509788624417,\"1021848173567\":1509788624492,\"1021848173552\":1509788624492,\"1021848173553\":1509788624493,\"1021848173555\":1509788624493,\"1021848173556\":1509788624493,\"1022463794820\":1480585069117,\"1021848173557\":1509788624493,\"1022348319141\":1478686417202,\"1021848173558\":1509788624493,\"1021848173559\":1509788624493,\"1022235202330\":1478686417065,\"1022996217272\":1509788625050,\"1022984289377\":1509788625073,\"1022235202319\":1478686417065,\"1022376892574\":1478686804040,\"592146769\":1444487341721,\"1022024984487\":1478686416974,\"1021797446936\":1478686417130,\"1025318841089\":1509788625223,\"1025318841088\":1509788625136,\"1019294974057\":1509788625078,\"4986731278\":1509788624161,\"1023751556744\":1509788624926,\"1755134682\":1444487341744,\"1021290191646\":1465470268202,\"1025297738255\":1509788625132,\"1021970325665\":1478686417010,\"1024055655674\":1509788624329,\"1025297738240\":1509788625113,\"1025297738271\":1509788625169,\"1021071978040\":1478686417232,\"1025710850999\":1509788624305,\"1025297738257\":1509788625133,\"1023172504388\":1509788625044,\"1755134493\":1444487341719,\"1022463794681\":1480585069121,\"1021039995093\":1478686417232,\"1022463794680\":1480585069121,\"1022463794683\":1480585069121,\"1025710850893\":1509788624305,\"1755134494\":1444487341721,\"1022463794685\":1480585069121,\"1022463794684\":1480585069121,\"1022463794686\":1480585069121,\"1016719600465\":1478686804069,\"1022463794672\":1480585069121,\"1001495822254\":1478686417022,\"1022463794674\":1480585069121,\"1022463794676\":1480585069121,\"1020175308108\":1478686804031,\"4986731444\":1509788624161,\"1020175308114\":1478686804034,\"1024147005844\":1509788667462,\"1022463794667\":1480585069120,\"1001385194831\":1480585069061,\"1022463794666\":1480585069120,\"1022463794669\":1480585069121,\"1022463794668\":1480585069120,\"1022463794671\":1480585069121,\"1020878250863\":1509788624960,\"1023856160999\":1491634246537,\"1023856160996\":1491634246537,\"1024294465274\":1509788624249,\"1022463794651\":1480585069120,\"1024294465273\":1509788624249,\"1024294465272\":1509788624249,\"1024294465279\":1509788624249,\"1023856160990\":1491634246537,\"1024294465278\":1509788624249,\"1024294465277\":1509788624249,\"1022463794641\":1480585069120,\"1020294061063\":1465470268286,\"1024294465266\":1509788624249,\"1022463794642\":1480585069120,\"1022463794645\":1480585069120,\"1022463794647\":1480585069120,\"1022463794632\":1480585069120,\"1022463794635\":1480585069120,\"1022463794634\":1480585069120,\"1022463794636\":1480585069120,\"1024294465262\":1509788624249,\"1022463794639\":1480585069120,\"1024294465261\":1509788624249,\"1022463794638\":1480585069120,\"1022463794625\":1480585069120,\"1022463794624\":1480585069120,\"1022463794627\":1480585069120,\"1022463794629\":1480585069120,\"1022463794616\":1480585069120,\"1025791854554\":1509788624814,\"1025051589625\":1509788624435,\"1025791854553\":1509788624814,\"1022463794618\":1480585069120,\"1025791854559\":1509788624814,\"1001004810917\":1478686417022,\"1022463794620\":1480585069120,\"1022463794623\":1480585069120,\"1025051589629\":1509788624435,\"1025791854557\":1509788624814,\"1025051589628\":1509788624435,\"1025051589619\":1509788624452,\"1024538171672\":1509788624436,\"1025051589620\":1509788624440,\"1025051589615\":1509788624509,\"1025791854543\":1509788624814,\"1025051589614\":1509788624509,\"1025051589612\":1509788624509,\"1021669257742\":1478686417120,\"1025629593213\":1509788625166,\"1022348188290\":1478686417202,\"1020175308066\":1478686804031,\"1025791854578\":1509788624814,\"1021850925326\":1480585069075,\"1025791854570\":1509788624814,\"1025791854572\":1509788624814,\"1025791854561\":1509788624814,\"1025791854560\":1509788624814,\"1022234153974\":1509788624932,\"1024294465370\":1509788625196,\"1077482298\":1478950494920,\"1024294465368\":1509788625196,\"1024294465375\":1509788625196,\"1007871982134\":1478686804023,\"1024294465373\":1509788625196,\"1001004811111\":1478686417022,\"1024294465372\":1509788625196,\"1024294465363\":1509788625196,\"1025546753213\":1509788625007,\"1024294465365\":1509788625196,\"1024294465354\":1509788625196,\"1024294465353\":1509788625196,\"1024294465358\":1509788625196,\"1024294465357\":1509788625196,\"1017973788672\":1509788624372,\"1024294465344\":1509788625196,\"1024294465351\":1509788625196,\"1021261616161\":1478686417101,\"1022046086516\":1478686417269,\"1019876812449\":1509788624391,\"1025710850789\":1509788624308,\"1022046086515\":1478686417269,\"1024294465384\":1509788625196,\"1024730973539\":1509788624467,\"1021261616180\":1478686417101,\"1024294465388\":1509788625196,\"1024294465379\":1509788625196,\"1024294465378\":1509788625196,\"1024294465377\":1509788625196,\"1024294465383\":1509788625196,\"1012117402928\":1478686417223,\"1024294465380\":1509788625196,\"1021691802174\":1509788624299,\"1016719600280\":1478686804042,\"1012142439371\":1478686417025,\"1021712642431\":1478686417122,\"1020235864419\":1465470268180,\"1024294465310\":1509788624249,\"1024294465299\":1509788624249,\"1021412082502\":1478686417106,\"1024294465302\":1509788624249,\"1012211908387\":1478686416977,\"1024294465290\":1509788624249,\"1024294465295\":1509788624249,\"1022129711130\":1478686417013,\"1024294465281\":1509788624249,\"1022746391517\":1509788625021,\"1024294465286\":1509788624249,\"1024294465285\":1509788624249,\"1022746391520\":1509788625008,\"1022746391522\":1509788625017,\"1025607965044\":1509788624229,\"1022746391524\":1509788625016,\"1024294465342\":1509788625196,\"1020771563826\":1478686417029,\"1024294465341\":1509788625196,\"1024294465340\":1509788625196,\"1023821165563\":1509788624960,\"1023297917643\":1509788624969,\"522538059\":1478950494910,\"1022746391534\":1509788624997,\"1022746391537\":1509788625017,\"1021821565648\":1478686417132,\"1024294465321\":1509788624249,\"1024294465320\":1509788624249,\"1024294465314\":1509788624249,\"1024294465319\":1509788624249,\"1024294465317\":1509788624249,\"1024294465316\":1509788624249,\"1021813963700\":1478686416984,\"1022919408084\":1509788624393,\"1025593547073\":1509788624834,\"1025593547072\":1509788624829,\"1022919408095\":1509788624393,\"1025593547075\":1509788624800,\"1025593547074\":1509788624823,\"1024090907625\":1495284743424,\"1022919408072\":1509788624393,\"1022630906616\":1509788624456,\"1024294465529\":1509788624888,\"1786591705\":1444487341748,\"1024294465523\":1509788624888,\"1024294465521\":1509788624889,\"1024294465520\":1509788624889,\"1025315957448\":1509788624393,\"1024294465518\":1509788624888,\"1022919408108\":1509788624393,\"1021832313558\":1478686417134,\"1021769397526\":1509788624395,\"1021832313557\":1478686417134,\"1021832313555\":1478686417134,\"1019283308860\":1509788624374,\"1021961020069\":1478686417262,\"1019102565391\":1509788624317,\"1011251224689\":1478686804015,\"1024926413141\":1509788624182,\"1016539250047\":1478686804065,\"1024926413143\":1509788624182,\"1024926413147\":1509788624182,\"1025000862241\":1509788624996,\"1023572116819\":1509788624974,\"1021653650313\":1509788624534,\"1023251409495\":1509788625084,\"1025509003720\":1509788624292,\"1022943787165\":1509788624291,\"1022943787166\":1509788624291,\"1021346945441\":1478686417041,\"1023730716607\":1509788624970,\"1020924782438\":1478686417000,\"1017128387882\":1478686804020,\"1001113732023\":1478686417024,\"1023428337058\":1509788624286,\"1023428337057\":1509788624286,\"1025593286315\":1509788624929,\"1023428337056\":1509788624286,\"1021558885672\":1478686417245,\"1023428337055\":1509788624286,\"1023428337054\":1509788624286,\"1023428337053\":1509788624286,\"1018946218344\":1478686804043,\"1018946218345\":1478686804043,\"1018946218346\":1478686804043,\"1018946218347\":1478686804043,\"1018946218349\":1478686804043,\"1018946218350\":1478686804043,\"1018946218351\":1478686804043,\"1022269542557\":1478686417067,\"1018946218352\":1478686804043,\"1022269542554\":1478686417014,\"1022943787174\":1509788624291,\"1022746391806\":1509788625017,\"1012639175063\":1478686417026,\"1021938345003\":1478686417260,\"1021797970830\":1509788624834,\"1021797970831\":1509788624801,\"1021797970829\":1509788624829,\"2004951817\":1491634246533,\"1023981076064\":1509788624199,\"1021583134591\":1509788624429,\"1021938344996\":1478686417260,\"1021352712510\":1465470268227,\"1021938344998\":1478686417260,\"1024973336907\":1509788624288,\"1022397341658\":1478686417070,\"1024500948341\":1509788624436,\"1012514155263\":1478686417223,\"1022027735506\":1478686417164,\"1021339867357\":1478686417041,\"1022409136148\":1480585069077,\"1023032517948\":1509788624213,\"1024906491256\":1509788624342,\"1015966062620\":1465470268264,\"1019455277164\":1478686804021,\"1209736406\":1478950494921,\"2004951886\":1491634246533,\"1020040391453\":1509788624335,\"1025710851347\":1509788624309,\"310986336\":1444487341738,\"1018946218477\":1478686804040,\"1025295773059\":1509788624946,\"1023691263294\":1509788624937,\"1023958138197\":1509788667535,\"1022304670690\":1478686417068,\"1019150016484\":1465470268272,\"1021166852024\":1478686417234,\"1016826161791\":1509788624171,\"1022485284112\":1478943089488,\"1019150016476\":1465470268272,\"1000526160333\":1444487341713,\"1024008076905\":1509788667551,\"1024008076906\":1509788667551,\"1000526160320\":1444487341736,\"1023878444590\":1509788624385,\"1023878444589\":1509788624385,\"1023878444588\":1509788624385,\"1024008076902\":1509788667551,\"1020779167471\":1478686417225,\"1021999294011\":1478686417157,\"1025051589642\":1509788624467,\"1023919338374\":1509788624957,\"1000987777631\":1478686417022,\"1025051589640\":1509788624456,\"1025051589647\":1509788624424,\"1025051589646\":1509788624461,\"1019455277471\":1478686804021,\"1025051589644\":1509788624454,\"1024008076922\":1509788667551,\"1022485284107\":1478943089488,\"1023919338380\":1509788624292,\"1025051589638\":1509788624435,\"1023919338378\":1509788624957,\"1022485284111\":1478943089488,\"1024008076915\":1509788667551,\"1022485284110\":1478943089488,\"1025051589636\":1509788624435,\"1024008076914\":1509788667551,\"1020878251193\":1509788624945,\"1021653650172\":1509788624195,\"1012069822854\":1478686804067,\"1721709561\":1491634246520,\"1021653650126\":1509788624818,\"1024687456703\":1509788624420,\"1025533514515\":1509788624348,\"1024688112063\":1509788624503,\"1021971376043\":1478686417056,\"1025810072217\":1509788667451,\"1022746391809\":1509788625017,\"1023878444681\":1509788624385,\"1023878444680\":1509788624385,\"1000987777791\":1478686417022,\"1022646636288\":1509788624920,\"1021496361108\":1478686417007,\"1021496361111\":1478686417007,\"1023946470017\":1491634246531,\"1591806785\":1491634246513,\"1025533514700\":1509788624348,\"1021773984569\":1509788624815,\"423054467\":1491634246514,\"1021970327418\":1478686417010,\"1021230027611\":1478686417003,\"1021797970614\":1509788624543,\"1021797970615\":1509788624524,\"1021797970613\":1509788624541,\"1024008076941\":1509788667551,\"1024008076943\":1509788667552,\"1009865029003\":1478686804025,\"1024008076936\":1509788667552,\"1024008076939\":1509788667551,\"1024008076938\":1509788667551,\"1024008076935\":1509788667551,\"1024008076930\":1509788667551,\"1000987777724\":1478686417022,\"1024008076952\":1509788667551,\"1024008076955\":1509788667552,\"1024008076949\":1509788667551,\"1021366082330\":1478686416976,\"1024786550533\":1509788624512,\"1010813307939\":1509788624276,\"1021797970670\":1509788624205,\"1021797970671\":1509788624186,\"1021797970669\":1509788624201,\"1012228028543\":1478686417223,\"1022038745922\":1478686417058,\"1001573672810\":1478686417023,\"1023032517741\":1509788625140,\"1021597551900\":1478686417115,\"1545538073\":1478950494925,\"1022490134464\":1509788625065,\"1021848173568\":1509788624492,\"1021848173569\":1509788624492,\"1025607965723\":1509788624212,\"1024723632301\":1509788667888,\"1009848502601\":1491634246513,\"1021848173571\":1509788624493,\"1021848173572\":1509788624493,\"1022463793513\":1480585069120,\"1022463793512\":1480585069120,\"1020311099833\":1509788624437,\"1022463793505\":1480585069120,\"1022463793497\":1480585069120,\"1021895097214\":1478686804048,\"1022463793499\":1480585069120,\"1012514154564\":1478686417223,\"1022463793501\":1480585069120,\"1025178986404\":1509788624550,\"1020294060167\":1465470268285,\"1022463793488\":1480585069120,\"1022463793491\":1480585069120,\"1020965937295\":1478686417086,\"1020965937292\":1478686417086,\"1022463793494\":1480585069120,\"1012286088744\":1478686417026,\"1020311099803\":1509788624452,\"1009987711277\":1491634246533,\"1022316728334\":1509788624384,\"1022463793485\":1480585069120,\"1020311099806\":1509788624586,\"1276713519\":1478686416992,\"1021040258150\":1478686417092,\"1022463793487\":1480585069120,\"1022463793486\":1480585069120,\"1021782634535\":1509788624868,\"1019455277712\":1478686804021,\"1022463793473\":1480585069120,\"1022463793472\":1480585069120,\"1021615901658\":1478686417116,\"1022463793476\":1480585069120,\"1022463793479\":1480585069120,\"1020954665740\":1478686417085,\"1022463793467\":1480585069120,\"1023855899709\":1491634246537,\"1022463793469\":1480585069120,\"1022463793468\":1480585069120,\"1021920524702\":1478686417054,\"1022463793471\":1480585069120,\"1022463793470\":1480585069120,\"1020954665730\":1478686417085,\"1021974389972\":1509788624421,\"1021848173659\":1509788625014,\"1021058870626\":1478686417232,\"1021848173662\":1509788625014,\"1021848173663\":1509788625014,\"1021848173649\":1509788625014,\"1021848173650\":1509788625015,\"1021848173651\":1509788625015,\"1021848173652\":1509788625015,\"1021848173653\":1509788625015,\"1021848173654\":1509788625015,\"1021848173655\":1509788625014,\"1021643163680\":1478686417119,\"1019166137732\":1478686804020,\"1022463793433\":1480585069120,\"1019166137733\":1478686804020,\"1022463793435\":1480585069120,\"1022463793434\":1480585069120,\"1021848173675\":1509788625015,\"1022128401681\":1478686417184,\"1019166137729\":1478686804020,\"1022463793436\":1480585069120,\"1024688112288\":1509788624503,\"1019166137730\":1478686804020,\"1022463793438\":1480585069120,\"1022463793425\":1480585069119,\"1021848173664\":1509788625014,\"1023432138696\":1509788624518,\"1022463793427\":1480585069119,\"1021848173666\":1509788625014,\"1021058870623\":1478686417232,\"1023432138698\":1509788624516,\"1021848173667\":1509788625014,\"1022463793429\":1480585069120,\"1023432138701\":1509788624517,\"1021848173668\":1509788625014,\"1021175370827\":1465470268188,\"1002086795139\":1478686417024,\"1021848173669\":1509788625014,\"1022463793431\":1480585069120,\"1023432138702\":1509788624518,\"1021848173671\":1509788625014,\"1022463793416\":1480585069119,\"1022463793419\":1480585069119,\"1022463793418\":1480585069119,\"1022463793421\":1480585069119,\"1010085755730\":1491634246512,\"1022463793409\":1480585069119,\"1022463793408\":1480585069119,\"1022463793411\":1480585069119,\"1022463793410\":1480585069119,\"1022463793413\":1480585069119,\"1022463793412\":1480585069119,\"1022463793415\":1480585069119,\"1022463793414\":1480585069119,\"1023730847091\":1509788624970,\"1024597416111\":1509788624939,\"1021797446074\":1478686417130,\"1024687456836\":1509788624818,\"1022376893449\":1478686804050,\"1000116555248\":1478686804029,\"1020258015847\":1465470268311,\"1019166137727\":1478686804020,\"1024998895811\":1509788624836,\"1022442428441\":1478686417016,\"1022463793617\":1480585069117,\"1022463793618\":1480585069117,\"1022418442914\":1478686417015,\"1022463793608\":1480585069117,\"1019356053506\":1478686804020,\"1022463793615\":1480585069117,\"1022463793603\":1480585069117,\"1022463793602\":1480585069117,\"1022463793605\":1480585069117,\"1021599124061\":1478686417008,\"1022463793607\":1480585069117,\"1022463793606\":1480585069117,\"1025412819313\":1509788624426,\"1022463793594\":1480585069117,\"1025412819312\":1509788624431,\"1022463793598\":1480585069117,\"1022463793587\":1480585069117,\"1022463793588\":1480585069117,\"1023958138505\":1509788667535,\"1022463793590\":1480585069117,\"1022463793568\":1480585069120,\"1022079250076\":1478686417012,\"1022463793571\":1480585069120,\"1022599053715\":1509788624462,\"1022463793572\":1480585069120,\"1021685643013\":1509788624396,\"1012069822980\":1478686804067,\"1022463793561\":1480585069120,\"1024998895807\":1509788624836,\"1025908247275\":1509788667464,\"1021520609619\":1478686417113,\"1022463793560\":1480585069120,\"1024998895806\":1509788624836,\"1024998895804\":1509788624842,\"1022463793565\":1480585069120,\"1024261696715\":1509788624298,\"1022463793564\":1480585069120,\"1025908247278\":1509788667458,\"1024998895801\":1509788624835,\"1022463793566\":1480585069120,\"1025589878754\":1509788624351,\"1022463793553\":1480585069120,\"1022463793552\":1480585069120,\"1022463793555\":1480585069120,\"1022463793557\":1480585069120,\"1022463793556\":1480585069120,\"1022463793558\":1480585069120,\"1022463793545\":1480585069120,\"1021950535392\":1478686417055,\"1022463793547\":1480585069120,\"1022463793549\":1480585069120,\"1008297809191\":1478686804030,\"1022463793551\":1480585069120,\"1022463793550\":1480585069120,\"1024998895784\":1509788624871,\"1025908247283\":1509788667464,\"1024998895780\":1509788624871,\"1024688112184\":1509788624503,\"1022463793543\":1480585069120,\"1022463793542\":1480585069120,\"1022463793273\":1480585069119,\"1022909185485\":1509788624248,\"1022463793275\":1480585069119,\"1022909185487\":1509788624248,\"1022463793274\":1480585069119,\"1022463793277\":1480585069119,\"1022909185481\":1509788624248,\"1022463793276\":1480585069119,\"1022909185480\":1509788624248,\"1022909185482\":1509788624248,\"1022909185477\":1509788624249,\"1022463793264\":1480585069119,\"1022909185476\":1509788624249,\"1022463793267\":1480585069119,\"1022909185479\":1509788624248,\"1022463793268\":1480585069119,\"1022463793271\":1480585069119,\"1022909185475\":1509788624248,\"1022463793257\":1480585069118,\"1022909185501\":1509788624249,\"1022463793256\":1480585069118,\"1022463793259\":1480585069118,\"1023861536027\":1491634246533,\"1022909185503\":1509788624249,\"1022463793258\":1480585069118,\"1022463793260\":1480585069118,\"1022909185496\":1509788624248,\"1022463793262\":1480585069118,\"1022909185498\":1509788624248,\"1022463793249\":1480585069118,\"1022909185492\":1509788624248,\"1022463793251\":1480585069118,\"1022909185495\":1509788624248,\"1022463793250\":1480585069118,\"1022909185494\":1509788624248,\"1023821166474\":1509788624960,\"1022463793253\":1480585069118,\"1022447671633\":1478686804027,\"1022463793255\":1480585069118,\"1022909185491\":1509788624248,\"1025713079987\":1509788624305,\"1005578450641\":1509788624392,\"1022463793254\":1480585069118,\"1022909185490\":1509788624248,\"1024688112614\":1509788624503,\"1025172301518\":1509788624942,\"1022909185509\":1509788624248,\"1024557964207\":1509788624437,\"1022909185508\":1509788624248,\"1022909185510\":1509788624248,\"1022909185505\":1509788624249,\"1022909185507\":1509788624249,\"1023032518307\":1509788624847,\"1025906150169\":1509788667457,\"1024557964212\":1509788624428,\"1025906150168\":1509788667461,\"1025533776200\":1509788624347,\"1022415559534\":1478686417209,\"1025906150172\":1509788667460,\"1012213349199\":1478686417025,\"4986732035\":1509788624157,\"1021458220145\":1478686417108,\"1025533776194\":1509788624347,\"1025284890643\":1509788624328,\"1024668452177\":1509788625025,\"1025533776181\":1509788624347,\"1009854412706\":1478686804064,\"1025533776177\":1509788624347,\"1025533776178\":1509788624347,\"1024557964232\":1509788624434,\"1024557964246\":1509788624451,\"1021363984822\":1478686416990,\"1003255218454\":1478686804060,\"1003255218456\":1478686804060,\"1021498327485\":1478686417046,\"1023116534256\":1509788624282,\"1024557964262\":1509788624408,\"1022105857487\":1478686417275,\"1021969278359\":1478686417262,\"1024688112546\":1509788624503,\"1021881596775\":1509788624510,\"1024557964268\":1509788624508,\"1024998895924\":1509788624836,\"1023325836668\":1509788625008,\"1021757862428\":1509788624395,\"1024998895917\":1509788624836,\"1022463793153\":1480585069118,\"1022463793152\":1480585069118,\"1022463793154\":1480585069118,\"1022463793156\":1480585069118,\"1022463793158\":1480585069118,\"1005925786291\":1509788624390,\"1021942933474\":1478686417260,\"1021140768723\":1478686417037,\"1022463793385\":1480585069119,\"1022463793384\":1480585069119,\"1024688112470\":1509788624503,\"1025569431497\":1509788624352,\"1021646703002\":1509788624836,\"1025569431496\":1509788624351,\"1024502390368\":1509788625028,\"1022463793377\":1480585069119,\"1022463793376\":1480585069119,\"1018584465193\":1509788624367,\"1022463793379\":1480585069119,\"1025569431494\":1509788624352,\"1022463793381\":1480585069119,\"1558514554\":1478686804029,\"1022463793368\":1480585069119,\"1022463793371\":1480585069119,\"1022463793370\":1480585069119,\"1022463793373\":1480585069119,\"1022463793372\":1480585069119,\"1022463793374\":1480585069119,\"1025295773482\":1509788624946,\"1022463793361\":1480585069119,\"1144984470\":1478686804022,\"1022463793360\":1480585069119,\"1021605808951\":1509788624397,\"1022463793363\":1480585069119,\"1022463793362\":1480585069119,\"1021775032776\":1478686804047,\"1022463793365\":1480585069119,\"1022463793364\":1480585069119,\"1022463793366\":1480585069119,\"1021955778066\":1478686417146,\"1021955778067\":1478686417146,\"1023859701137\":1509788625038,\"1022463793359\":1480585069119,\"1022463793358\":1480585069119,\"1024783404685\":1509788625021,\"554530486\":1491634246534,\"1023929430435\":1509788625006,\"1024688112390\":1509788624503,\"1021519167592\":1478686417047,\"1022463793321\":1480585069119,\"1022463793320\":1480585069119,\"1022463793323\":1480585069119,\"1022463793325\":1480585069119,\"1019283309884\":1509788624374,\"1022463793324\":1480585069119,\"1021386135661\":1478686417300,\"1022463793316\":1480585069119,\"865690694\":1478950494918,\"1022463793318\":1480585069119,\"1022463793305\":1480585069119,\"1022463793304\":1480585069119,\"1022463793307\":1480585069119,\"1022463793306\":1480585069119,\"1025540592118\":1509788624311,\"1022463793309\":1480585069119,\"1022463793308\":1480585069119,\"1022463793311\":1480585069119,\"1022463793296\":1480585069119,\"1015324029185\":1465470268246,\"1022463793299\":1480585069119,\"1022376893804\":1478686804050,\"1022463793301\":1480585069119,\"1022463793300\":1480585069119,\"1022463793302\":1480585069119,\"1022463793290\":1480585069119,\"1022463793293\":1480585069119,\"1010142636507\":1444487341757,\"1006580204607\":1478686804025,\"1021828772168\":1478686417133,\"1024274670452\":1509788624957,\"1006954687449\":1478686804054,\"1022370468545\":1478686417290,\"1019596455025\":1509788624959,\"1020882053527\":1478686417079,\"1021144307754\":1478686417096,\"1021315486705\":1465470268209,\"1023561763289\":1509788624812,\"1021691935047\":1509788624311,\"1021643163138\":1478686417119,\"1025512283623\":1509788624392,\"1025512283622\":1509788624392,\"116088482\":1444487341753,\"1025512283625\":1509788624392,\"1025512283624\":1509788624392,\"1025512283626\":1509788624392,\"289098094\":1444487341734,\"1021438167803\":1509788624817,\"1021201063128\":1509788624977,\"1021873075428\":1478686804032,\"1023859571279\":1509788625038,\"1021873075429\":1478686804032,\"1021201063124\":1509788624977,\"1006868182686\":1509788624386,\"1021460581205\":1478686417045,\"1024619563139\":1509788624299,\"1019246876493\":1509788624312,\"1019857939666\":1509788625017,\"1024007811851\":1509788667829,\"1022463793144\":1480585069118,\"1022463793149\":1480585069118,\"1022463793148\":1480585069118,\"1022463793151\":1480585069118,\"1022463793150\":1480585069118,\"1022463793139\":1480585069118,\"1022463793142\":1480585069118,\"1022463793129\":1480585069118,\"1022463793130\":1480585069118,\"1022463793133\":1480585069118,\"1022463793135\":1480585069118,\"1022463793120\":1480585069118,\"1023354543320\":1509788624195,\"1022463793123\":1480585069118,\"1022463793122\":1480585069118,\"1022463793127\":1480585069118,\"1022463793126\":1480585069118,\"1023821297869\":1491634246535,\"1022463793096\":1480585069118,\"1015478171497\":1480585069075,\"1022463793098\":1480585069118,\"307841773\":1444487341750,\"1022463793089\":1480585069118,\"1022849810127\":1509788625074,\"1022463793091\":1480585069118,\"1022463793090\":1480585069118,\"1022463793092\":1480585069118,\"1006890202881\":1478686804025,\"1022463793080\":1480585069118,\"1023032518994\":1509788624550,\"1022463793082\":1480585069118,\"1022463793084\":1480585069118,\"1022463793087\":1480585069118,\"1023354543239\":1509788624420,\"1022463793073\":1480585069118,\"1021685905693\":1478686417121,\"1021188086697\":1478686417235,\"1022463793072\":1480585069118,\"1022463793075\":1480585069118,\"1022463793077\":1480585069118,\"1022463793076\":1480585069118,\"964518323\":1509788625019,\"1022463793078\":1480585069118,\"1022987302644\":1509788625049,\"1022463793067\":1480585069118,\"1022463793068\":1480585069118,\"1022463793070\":1480585069118,\"4935614198\":1509788624157,\"1022463793058\":1480585069118,\"1021530181569\":1478686417244,\"1022463793063\":1480585069118,\"1022966068612\":1509788624419,\"1020796728366\":1478686417029,\"1022438496252\":1478686417213,\"1022447409012\":1478686417215,\"1021729290794\":1478686417124,\"1025508613357\":1509788624340,\"4899962140\":1509788624161,\"1021318369948\":1465470268209,\"1022966068297\":1509788624816,\"1021318369951\":1465470268209,\"1021954992269\":1478686417261,\"1021729290758\":1478686417123,\"974873406\":1444487341739,\"1021729290766\":1478686417123,\"1020820583527\":1478686417030,\"1021729290778\":1478686417123,\"1025731955637\":1509788624922,\"1021729290776\":1478686417123,\"1004390941577\":1478686804029,\"1023596366517\":1509788624519,\"1022966068267\":1509788625101,\"1021882250563\":1478686416975,\"1021882250565\":1478686416975,\"1023354543371\":1509788624818,\"1023596366523\":1509788624519,\"1545536850\":1478950494925,\"2004954830\":1491634246533,\"1023596366497\":1509788624519,\"1023596366496\":1509788624519,\"1023596366511\":1509788624519,\"1021354284228\":1465470268229,\"1021354284229\":1465470268229,\"1021354284230\":1465470268229,\"1021386135273\":1478686417300,\"1023596366487\":1509788624519,\"1023596366486\":1509788624519,\"1021881595242\":1509788624434,\"1021387970303\":1478686417006,\"1022488955028\":1478943089315,\"1007979063720\":1478686804023,\"1023251408668\":1509788625083,\"1020786373129\":1478686416997,\"1023218771435\":1509788625072,\"1021617472606\":1478686417117,\"1020867635460\":1478686417031,\"1022364963070\":1509788624958,\"1022381085677\":1478686417290,\"1024267199063\":1509788625016,\"1021318631939\":1478686417041,\"1019356188431\":1509788624321,\"1020665527624\":1478686417028,\"1021981731835\":1478686417151,\"1021470805336\":1478686417109,\"1022486858186\":1478943089532,\"1025803128732\":1509788667814,\"1025803128728\":1509788667814,\"1021981731823\":1478686417151,\"1020750458949\":1478686416996,\"1022293793917\":1478686417199,\"1023530702374\":1509788625082,\"1022966068355\":1509788624533,\"2004954734\":1491634246533,\"1022293793899\":1478686417199,\"1007458175037\":1444487341699,\"1022966068369\":1509788624194,\"1022293793888\":1478686417199,\"1021902959812\":1478686417139,\"1022301527814\":1478686417015,\"1021902959809\":1478686417139,\"1016399002864\":1480585069069,\"1021887363024\":1478686804065,\"1001573673119\":1478686417023,\"1023845022472\":1491634246537,\"1024961281678\":1509788624932,\"1020831724726\":1478686416998,\"1025610584540\":1509788624520,\"1019524758169\":1509788625077,\"1021733748449\":1478686417124,\"1025629197965\":1509788624846,\"1025629197967\":1509788624846,\"1025629197960\":1509788624846,\"1022035340486\":1478686417058,\"1020389476663\":1465470268321,\"1025610584544\":1509788624521,\"1010013533118\":1491634246526,\"1000308981195\":1478686417018,\"1025610584569\":1509788624521,\"1016862841701\":1478686804016,\"1022238611708\":1509788624932,\"1025610584564\":1509788624521,\"1025629197970\":1509788624846,\"1022238611706\":1509788624947,\"1020909054029\":1478686417032,\"1021320073685\":1509788624171,\"1010013533120\":1491634246530,\"1022769593186\":1509788624439,\"1023209727676\":1509788625042,\"1018265161690\":1509788624286,\"1019590164166\":1509788624309,\"1025515167742\":1509788624371,\"1005577796484\":1509788624392,\"1023958135345\":1509788667535,\"4824319240\":1509788624161,\"1021895882719\":1478686417139,\"4899962526\":1509788624157,\"1008244202096\":1478686804030,\"1025847165753\":1509788667888,\"1020815734561\":1478686417077,\"1019283310705\":1509788624375,\"1019835394204\":1509788625077,\"1025629591096\":1509788624866,\"1002314335451\":1478686416993,\"1022050282672\":1478686417172,\"1022398910950\":1478686417207,\"507200640\":1444487341744,\"1001573672999\":1478686417023,\"1021713692879\":1509788624400,\"1022769593326\":1509788624439,\"1025515167563\":1509788624371,\"1025500618404\":1509788625004,\"1025515167565\":1509788624371,\"1025515167564\":1509788624371,\"1025515167567\":1509788624371,\"1025515167566\":1509788624371,\"1021729290750\":1478686417123,\"1001644715176\":1444487341702,\"1020389214701\":1465470268317,\"2004954478\":1491634246533,\"1021354284905\":1465470268229,\"1001573673065\":1478686417023,\"1022090519369\":1478686417180,\"1020796728876\":1478686417029,\"1024672778580\":1509788625069,\"1021354284903\":1465470268229,\"1023958135629\":1509788667535,\"1024056440190\":1509788624289,\"1015273568497\":1478686804067,\"1008100043910\":1478686804030,\"1021797448722\":1478686417130,\"1025791856186\":1509788624419,\"1025791856190\":1509788624418,\"1025791856189\":1509788624418,\"1025791856188\":1509788624418,\"1022197605501\":1478686417189,\"1021881595687\":1509788624433,\"1025791856183\":1509788624419,\"1025791856180\":1509788624419,\"2004954288\":1491634246533,\"1025791856175\":1509788624418,\"1025791856172\":1509788624418,\"1025791856163\":1509788624418,\"1025791856167\":1509788624418,\"1022961612518\":1509788624435,\"1021867308969\":1509788624394,\"1022578871763\":1509788625062,\"1021654041841\":1509788624396,\"1022790039733\":1509788624200,\"1022984680728\":1509788625050,\"1025791856204\":1509788624419,\"1024780648985\":1509788624472,\"1025791856194\":1509788624418,\"1025791856192\":1509788624419,\"1025791856198\":1509788624418,\"1024215688075\":1509788625033,\"1021831918202\":1478686417053,\"1024087501773\":1509788624523,\"1021744103203\":1478686417253,\"1025791856281\":1509788624193,\"1025791856286\":1509788624193,\"1025791856285\":1509788624193,\"1025791856284\":1509788624193,\"1025791856275\":1509788624193,\"1025791856274\":1509788624193,\"1022790039662\":1509788624198,\"1025791856278\":1509788624193,\"1025791856276\":1509788624193,\"1025791856267\":1509788624193,\"1020995429225\":1478686417001,\"1022438495597\":1478686417213,\"1025791856269\":1509788624193,\"1024967442345\":1509788625023,\"1025791856268\":1509788624193,\"1025791856256\":1509788624193,\"1025791856263\":1509788624193,\"1022085538425\":1478686417179,\"1025791856260\":1509788624193,\"1025791856315\":1509788624814,\"1025791856319\":1509788624814,\"1025050931843\":1509788624568,\"1021961153276\":1478686417148,\"1025609535564\":1509788625007,\"1025609535552\":1509788624999,\"1020973280745\":1478686417034,\"1025791856288\":1509788624193,\"1025609535554\":1509788624998,\"1025609535557\":1509788624998,\"1022194984126\":1478686417189,\"1022238611718\":1509788624931,\"1022238611713\":1509788624930,\"1025609535549\":1509788625084,\"1025609535548\":1509788624998,\"1009433927134\":1478686804055,\"1022238611715\":1509788624931,\"1025609535539\":1509788625003,\"1025609535540\":1509788625003,\"1025791856331\":1509788624814,\"1025609535531\":1509788625002,\"1025791856321\":1509788624814,\"1018052957081\":1465470268320,\"1025791856324\":1509788624814,\"1025609535510\":1509788624999,\"1025609535499\":1509788624999,\"1012754913273\":1478686804024,\"1021828772520\":1478686417256,\"1021340522423\":1465470268223,\"1022776146209\":1509788625056,\"307842635\":1444487341755,\"1021185859485\":1478686417098,\"1024215819471\":1509788624857,\"1024215819469\":1509788624857,\"1024215819468\":1509788624857,\"1022477946024\":1478943089315,\"1022005192835\":1478686417158,\"1022002571461\":1478686417266,\"1024374857125\":1509788625084,\"1024677891927\":1509788625070,\"1024215819473\":1509788624857,\"1024215819472\":1509788624857,\"1024273622949\":1509788624176,\"1024273622950\":1509788624176,\"1025068758644\":1509788624606,\"1025591973547\":1509788624335,\"1019788209317\":1478686804053,\"1019788209318\":1478686804053,\"1019788209319\":1478686804053,\"1019788209320\":1478686804053,\"1021940444369\":1478686417260,\"1019788209321\":1478686804053,\"1019788209322\":1478686804053,\"1019788209323\":1478686804053,\"1019788209324\":1478686804053,\"1019788209325\":1478686804053,\"1019788209326\":1478686804053,\"1023902169571\":1509788625037,\"1022381086247\":1478686417290,\"1001309961788\":1444487341753,\"1021494135121\":1509788624515,\"1009848894268\":1491634246514,\"1021937036454\":1509788624466,\"1009987713888\":1491634246520,\"1023821823001\":1491634246536,\"1025040446906\":1509788624185,\"1025486069546\":1509788624436,\"1022023280958\":1478686417163,\"1022493412668\":1478943089490,\"1022493412671\":1478943089490,\"1022493412667\":1478943089490,\"1023999424353\":1509788625017,\"1000975717045\":1478686417021,\"1021643162321\":1478686417119,\"1023999424352\":1509788625017,\"1023999424355\":1509788625017,\"1022475455495\":1478943089253,\"1024215819339\":1509788624219,\"1024215819336\":1509788624219,\"1024215819341\":1509788624219,\"1024215819340\":1509788624219,\"1025331553987\":1509788625171,\"1025593546337\":1509788624540,\"1025331553991\":1509788625172,\"1025331553990\":1509788625172,\"1025331553988\":1509788625172,\"1025792379296\":1509788624974,\"1024215819344\":1509788624219,\"1020612443502\":1478686417027,\"1021514058455\":1478686417112,\"1021514058462\":1478686417112,\"1021514058460\":1478686417112,\"1408307003\":1478686804024,\"1022577298041\":1509788667889,\"1021514058457\":1478686417112,\"1022020004140\":1478686417161,\"1022364964283\":1509788624958,\"1021386134353\":1478686417300,\"1021847385796\":1509788624402,\"1024261695191\":1509788624298,\"1022283045061\":1478686417014,\"1021658366854\":1478686417050,\"1022216854835\":1478686417064,\"1016115611861\":1509788625082,\"1021341438284\":1478686417005,\"1018041554430\":1478686804043,\"1018041554431\":1478686804043,\"1021402647983\":1478686417106,\"1025656197164\":1508010983420,\"1025508612316\":1509788624340,\"957703223\":1444487341754,\"1025508612319\":1509788624339,\"1021483256058\":1478686417045,\"1000975717148\":1478686417021,\"1019165873878\":1478686804026,\"1002290217201\":1478686416993,\"1022029179005\":1509788624434,\"1025771800943\":1509788624408,\"1025771800936\":1509788624408,\"1025771800939\":1509788624408,\"1025771800933\":1509788624408,\"1008545664935\":1478686804061,\"1019724640754\":1509788625077,\"1025771800957\":1509788624408,\"1025771800956\":1509788624408,\"1020919803444\":1478686417228,\"1022769593449\":1509788624439,\"670005937\":1478950494913,\"1025771800947\":1509788624408,\"1007458176164\":1444487341701,\"1022932514317\":1509788624585,\"1025331554063\":1509788624871,\"1025331554061\":1509788624871,\"1025050932301\":1509788624457,\"1022241103827\":1478686417283,\"1021341438255\":1478686417005,\"1025331554072\":1509788624871,\"1022769593417\":1509788624439,\"1025331554067\":1509788624871,\"1022465364538\":1478686416988,\"1025449499679\":1509788624337,\"1023820512740\":1491634246535,\"1021828773072\":1478686417133,\"1023220605404\":1509788624585,\"1022941950333\":1509788624935,\"1023220605400\":1509788624585,\"1008907696888\":1465470268235,\"1023220605397\":1509788624586,\"1025297737188\":1509788624546,\"1025297737187\":1509788624546,\"1021858002457\":1478686417009,\"1023220605394\":1509788624586,\"1023220605391\":1509788624585,\"1021602136387\":1478686417008,\"1021847386019\":1509788624402,\"1025507956862\":1509788624343,\"1011857082903\":1478686804024,\"1021016794138\":1478686417090,\"1025297737167\":1509788624553,\"1023220605437\":1509788624585,\"1024936378297\":1509788625006,\"1025297737166\":1509788624539,\"1024434362438\":1509788624462,\"1023220605438\":1509788624585,\"1021604364564\":1478686417115,\"1025297737163\":1509788624565,\"1025297737160\":1509788624612,\"1023220605429\":1509788624585,\"1025297737159\":1509788624613,\"1023220605431\":1509788624585,\"1022420799554\":1478686417016,\"1025771800961\":1509788624408,\"1023220605424\":1509788624585,\"1017171380577\":1478686804019,\"1023220605426\":1509788624585,\"1025297737183\":1509788624546,\"1023220605421\":1509788624585,\"1022769593485\":1509788624439,\"1025297737179\":1509788624546,\"1023220605419\":1509788624585,\"1023220605418\":1509788624585,\"1025458413379\":1509788624351,\"1025458413378\":1509788624350,\"1023220605412\":1509788624585,\"1025458413377\":1509788624350,\"1023220605415\":1509788624585,\"1025458413376\":1509788624352,\"1023220605414\":1509788624585,\"1023220605408\":1509788624585,\"1026187047120\":1514456869767,\"1023220605411\":1509788624585,\"1022562879569\":1509788625063,\"1007540620082\":1509788624375,\"1025331554223\":1509788624467,\"1022106249060\":1478686417182,\"1025331554235\":1509788624467,\"1020962138926\":1478686417085,\"1023855116221\":1491634246537,\"1025331554236\":1509788624467,\"1023995492310\":1491634246532,\"1022296807569\":1478686417287,\"1025331554229\":1509788624467,\"1001384016416\":1480585069061,\"1021507767194\":1509788624405,\"1022018824210\":1478686417266,\"1023325839335\":1509788625008,\"1025665634434\":1509788624511,\"1025665634437\":1509788624509,\"1709128664\":1444487341729,\"1021409988128\":1478686417006,\"1016444352045\":1478686804025,\"1025629590184\":1509788624455,\"1025665634449\":1509788624435,\"1024632933916\":1509788624567,\"1017506674407\":1478686804047,\"1017506674406\":1478686804047,\"1025665634452\":1509788624435,\"1021781850122\":1478686417300,\"1025525127415\":1509788624523,\"1017506674411\":1478686804047,\"1025525127417\":1509788624523,\"1025665634456\":1509788624435,\"1025665634459\":1509788624435,\"1025525127418\":1509788624523,\"1025665634460\":1509788624435,\"1025525127420\":1509788624523,\"1017506674412\":1478686804047,\"1023902170000\":1509788625037,\"1021881594431\":1509788624426,\"1022608492264\":1509788624994,\"1022234681154\":1478686417065,\"1019596454410\":1509788624942,\"1022376891596\":1478686804065,\"1026232135312\":1514456869770,\"1023309061977\":1509788624368,\"1023171585913\":1509788624589,\"1007458176916\":1444487341699,\"1023171585917\":1509788624589,\"1025902740002\":1509788667458,\"1020932909796\":1478686417083,\"1023171585911\":1509788624589,\"1025902740001\":1509788667460,\"1020932909797\":1478686417083,\"4985419641\":1509788624160,\"1024375643909\":1509788624478,\"1024375643908\":1509788624478,\"1025902739998\":1509788667463,\"1024375643911\":1509788624478,\"670005644\":1478950494913,\"1024375643910\":1509788624478,\"1024375643905\":1509788624479,\"1024375643904\":1509788624478,\"1024375643907\":1509788624478,\"1024670944673\":1509788667503,\"1024375643912\":1509788624478,\"1020932909771\":1478686417083,\"1020241106304\":1478686804065,\"1024921697422\":1509788624279,\"1022232846149\":1478686417193,\"1022232846148\":1478686417193,\"1022238874693\":1509788624947,\"1023171585954\":1509788624589,\"1024327360714\":1509788625086,\"1020932516396\":1478686417228,\"1019930289899\":1509788624373,\"1025594463307\":1509788624507,\"1025792379785\":1509788625005,\"1023171585970\":1509788624589,\"1023171585974\":1509788624589,\"4935612552\":1509788624161,\"1025050933123\":1509788624232,\"1023171585923\":1509788624589,\"1023171585922\":1509788624589,\"1023171585926\":1509788624589,\"1023171585947\":1509788624589,\"1023171585949\":1509788624589,\"1023171585951\":1509788624589,\"1022396028372\":1478686417070,\"1021643161848\":1478686417119,\"1023171585939\":1509788624589,\"1017171380851\":1478686804019,\"1016758396374\":1478686804023,\"1023171585942\":1509788624589,\"1025407050026\":1509788625132,\"1025407050024\":1509788625132,\"1025407050029\":1509788625132,\"1022343861843\":1478686417289,\"1022343861842\":1478686417289,\"1025524996149\":1509788624523,\"1077616354\":1444487341731,\"1012109408347\":1478686804051,\"1021513795780\":1478686417047,\"1019523841623\":1509788624315,\"1023171585992\":1509788624589,\"1019523841621\":1509788624317,\"1023171585994\":1509788624589,\"1023171585999\":1509788624589,\"1022470737414\":1478686417219,\"1023171585987\":1509788624589,\"1018041554432\":1478686804043,\"1024602525971\":1509788624389,\"1019283311620\":1509788624390,\"1018041554433\":1478686804043,\"1024602525970\":1509788624389,\"1018041554434\":1478686804043,\"1024602525969\":1509788624389,\"1025407050010\":1509788625165,\"1025407050009\":1509788625165,\"1021753146145\":1478686417126,\"1025407050002\":1509788625246,\"1000975716570\":1478686417021,\"1025407050005\":1509788625244,\"1023150876512\":1509788624977,\"1024210839647\":1509788625033,\"1021881594625\":1509788624427,\"1003686588313\":1478686804060,\"1003686588315\":1478686804060,\"1003686588316\":1478686804060,\"1003686588317\":1478686804060,\"1023835061931\":1491634246536,\"1003686588319\":1478686804060,\"1024783402539\":1509788625020,\"1024879476828\":1509788624478,\"1023150876493\":1509788624978,\"1003686588323\":1478686804060,\"1003686588324\":1478686804060,\"1022122370193\":1478686417013,\"1021146537661\":1478686417234,\"1020955191808\":1478686417033,\"1025034024820\":1509788625023,\"1023150876477\":1509788624977,\"1022066927705\":1478686417175,\"1022066927708\":1478686417175,\"1019283312011\":1509788624390,\"1010013533949\":1491634246521,\"1010013533950\":1491634246521,\"1020294058437\":1465470268285,\"1010013533945\":1491634246526,\"1010013533946\":1491634246521,\"1023354542899\":1509788624534,\"1024879476739\":1509788624478,\"1024375643877\":1509788624478,\"1023150876645\":1509788624977,\"1024375643879\":1509788624478,\"1024375643878\":1509788624478,\"1024375643873\":1509788624479,\"1023150876641\":1509788624978,\"1024375643872\":1509788624478,\"1024375643875\":1509788624479,\"1018690236865\":1509788624378,\"1000526162789\":1444487341750,\"1022395897064\":1478686417070,\"1024375643883\":1509788624478,\"1024375643882\":1509788624478,\"1025297737727\":1509788625244,\"1022628677140\":1509788624842,\"1025297737726\":1509788625246,\"1022001392504\":1478686417157,\"1024375643894\":1509788624478,\"1024375643889\":1509788624478,\"1000975716785\":1478686417021,\"1024375643891\":1509788624478,\"1024375643901\":1509788624478,\"1024375643900\":1509788624478,\"1021727325376\":1478686417251,\"1024375643897\":1509788624478,\"1021885526636\":1478686417044,\"1024375643899\":1509788624478,\"1023150876667\":1509788624977,\"1021955255816\":1509788624466,\"1023150876614\":1509788624977,\"1024602525786\":1509788624392,\"1019817832103\":1509788625019,\"169301432\":1478686417019,\"1022250802619\":1478686417014,\"1022435087039\":1478686417213,\"1024215820123\":1509788625153,\"1024215820122\":1509788625153,\"1023150876631\":1509788624978,\"1024215820121\":1509788625153,\"1024215820125\":1509788625153,\"1022250802620\":1478686417014,\"1023150876626\":1509788624978,\"1024215820119\":1509788625153,\"1002454071743\":1491634246519,\"1023150876635\":1509788624978,\"1024579064452\":1509788624932,\"1016808464815\":1509788625018,\"1022082263031\":1478686417272,\"1025507957295\":1509788624297,\"1021773723987\":1478686417009,\"1020822811366\":1478686417031,\"1025507957301\":1509788624297,\"1025507957298\":1509788624297,\"1023150876592\":1509788624978,\"1020822811379\":1478686417031,\"1025507957310\":1509788624297,\"1020822811376\":1478686417031,\"116087094\":1444487341733,\"1018041554737\":1478686804058,\"1022082263017\":1509788624943,\"1018041554738\":1478686804058,\"1018041554739\":1478686804058,\"1025507957304\":1509788624297,\"1025525127424\":1509788624523,\"1019739583028\":1509788624173,\"1021828773537\":1478686417133,\"1022388163594\":1478686417290,\"1016719599146\":1478686804063,\"1025508612622\":1509788624344,\"1019739583021\":1509788624173,\"1021543417775\":1478686417047,\"1022254472202\":1478686417196,\"1023354543036\":1509788625100,\"1021039991381\":1478686417035,\"1022645598850\":1480585069133,\"1022645598849\":1480585069133,\"1022645598856\":1480585069133,\"1021841476253\":1478686417257,\"1022645598869\":1480585069133,\"1022645598873\":1480585069133,\"1024302063069\":1509788624521,\"1012136265969\":1478686417073,\"1022645598876\":1480585069133,\"1022207025286\":1478686417280,\"1022646909518\":1480585069080,\"1022646909516\":1480585069080,\"1022646909514\":1480585069080,\"1022464716652\":1478686417298,\"1022646909511\":1480585069080,\"1150756030\":1478950494920,\"1022646909510\":1480585069080,\"1024752482497\":1509788667502,\"1024985384226\":1509788625069,\"1021980807700\":1478686416983,\"1022646909526\":1480585069080,\"1022646909522\":1480585069080,\"1022645598910\":1480585069094,\"1024145560325\":1509788624453,\"1022646909520\":1480585069080,\"1022645598913\":1480585069094,\"1022645598918\":1480585069094,\"1022645598922\":1480585069094,\"1022646909478\":1480585069141,\"1022645598927\":1480585069094,\"1022646909475\":1480585069141,\"1022646909473\":1480585069141,\"1022775739023\":1509788624538,\"1016301601011\":1480585069065,\"1022645598935\":1480585069094,\"1022390397836\":1478686417291,\"1022645598933\":1480585069094,\"349926531\":1444487341728,\"1009230518881\":1478686804030,\"1022645598936\":1480585069094,\"1022646909455\":1480585069141,\"1022645598946\":1480585069094,\"1022645598944\":1480585069094,\"1022646909451\":1480585069141,\"1022645598950\":1480585069094,\"1022646909450\":1480585069141,\"1022646909448\":1480585069141,\"1022645598954\":1480585069094,\"1022646909445\":1480585069141,\"1021998764894\":1478686417157,\"1022645598959\":1480585069094,\"1022645598958\":1480585069094,\"1022646909442\":1480585069141,\"1025261164240\":1509788624279,\"1025214632718\":1509788624437,\"1022645598957\":1480585069094,\"1022041233125\":1478686417268,\"1022646909471\":1480585069141,\"1022645598961\":1480585069094,\"1022645598960\":1480585069094,\"1022646909464\":1480585069141,\"1020243602389\":1465470268321,\"1024327360063\":1509788625086,\"1022646909459\":1480585069141,\"1007253316718\":1478686804057,\"1025507960164\":1509788624339,\"1025593682511\":1509788624204,\"1021993391085\":1478686417265,\"1021986706265\":1478686417057,\"1021986706271\":1478686417057,\"1021770303034\":1478686417127,\"1022645598747\":1480585069132,\"1025593682514\":1509788624200,\"1021387058974\":1478686417006,\"1025593682512\":1509788624198,\"1022645598750\":1480585069132,\"1025593682518\":1509788624186,\"1021986706260\":1478686417057,\"1021770303026\":1478686417127,\"1022645598748\":1480585069132,\"1022645598755\":1480585069132,\"1022645598754\":1480585069132,\"1022645598752\":1480585069132,\"1020812316014\":1478686417225,\"1022645598758\":1480585069132,\"1022645598756\":1480585069132,\"1022802215818\":1509788624819,\"1022645598763\":1480585069133,\"1022645598762\":1480585069132,\"1022645598760\":1480585069132,\"1022645598766\":1480585069133,\"1022645598765\":1480585069133,\"1022645598764\":1480585069133,\"1022645598771\":1480585069133,\"1022645598770\":1480585069133,\"1022645598768\":1480585069133,\"1021616176457\":1478686417116,\"1022645598773\":1480585069133,\"1025515824594\":1509788624336,\"1025261164154\":1509788624279,\"1021021641090\":1478686417090,\"1019596440732\":1509788624930,\"1022645598817\":1480585069133,\"1022272562235\":1478686417285,\"1022645598822\":1480585069133,\"1020638249677\":1478686416987,\"1022645598827\":1480585069133,\"1017128399251\":1478686804016,\"1024936362741\":1509788625006,\"1294282187\":1444487341755,\"1022645598829\":1480585069133,\"1012406016029\":1478686417074,\"1022645598833\":1480585069133,\"1024597552863\":1509788624939,\"1022645598838\":1480585069133,\"1022645598836\":1480585069133,\"1018516816960\":1478686804066,\"1022645598843\":1480585069133,\"1025261164101\":1509788624280,\"1022645598842\":1480585069133,\"1294282206\":1444487341749,\"1022645598847\":1480585069133,\"1022645598845\":1480585069133,\"1022645598844\":1480585069133,\"1022100215816\":1478686417275,\"1021905964970\":1509788624858,\"1021905964971\":1509788624859,\"1022058403476\":1478686417060,\"1021905964975\":1509788624859,\"1021905964972\":1509788624859,\"1022216331566\":1478686417281,\"307852097\":1444487341751,\"1021214696686\":1478686417038,\"1022879680938\":1509788625017,\"1022473761254\":1478943089253,\"1022091040923\":1478686417273,\"1025540597562\":1509788624302,\"1022072297883\":1509788624453,\"1026225049105\":1514456869774,\"1020294197225\":1465470268296,\"1020556868692\":1478686417017,\"1022479397173\":1478943089531,\"1016284053170\":1480585069064,\"1217079779\":1478950494921,\"1003721577460\":1478686804060,\"1003721577458\":1478686804060,\"1003721577459\":1478686804060,\"1022802215488\":1509788625102,\"1003721577456\":1478686804060,\"1003721577457\":1478686804060,\"1003721577454\":1478686804060,\"1003721577455\":1478686804060,\"1022315947866\":1478686417287,\"1003721577453\":1478686804060,\"1025593682879\":1509788624524,\"1003721577451\":1478686804060,\"1025593682878\":1509788624542,\"1003721577448\":1478686804060,\"1025593682877\":1509788624537,\"1022315947870\":1478686417288,\"1003721577449\":1478686804060,\"1025593682876\":1509788624540,\"1021603331545\":1478686416980,\"1003721577447\":1478686804060,\"1021603331546\":1478686416980,\"1003721577444\":1478686804060,\"1022450298716\":1478686417302,\"1003721577445\":1478686804060,\"1021603331551\":1478686416980,\"1003721577441\":1478686804060,\"1018405289152\":1478686804026,\"1018908465871\":1509788624930,\"1021264898395\":1478686417237,\"1025832237333\":1509788667452,\"1023995612064\":1491634246532,\"1007871969436\":1478686804023,\"1021975696164\":1509788624464,\"1021712368615\":1478686417122,\"1022056306288\":1478686417173,\"1022775739152\":1509788624538,\"4997859378\":1509788667398,\"1022566167688\":1509788625002,\"1021344591341\":1478686804040,\"1022416088499\":1478686804071,\"1021959966848\":1509788624898,\"1022416088498\":1478686804071,\"1135551048\":1444487341739,\"1021370019695\":1478686804040,\"1025796323131\":1509788624274,\"1021721281097\":1478686804050,\"1021344591344\":1478686804040,\"1021344591345\":1478686804040,\"1021344591346\":1478686804040,\"1025714663498\":1509788624342,\"1021886435270\":1478686417137,\"1022646909032\":1480585069140,\"1022646909031\":1480585069140,\"1021550508998\":1478686416982,\"1009990585053\":1491634246515,\"1022072298171\":1509788624453,\"1021692183406\":1509788625003,\"1022646909001\":1480585069140,\"1022646909023\":1480585069140,\"1022646909015\":1480585069140,\"1022646909010\":1480585069140,\"1875709427\":1444487341754,\"1022646908971\":1480585069140,\"1024887997118\":1509788624423,\"1022646908969\":1480585069140,\"1008818815204\":1509788624372,\"1022646908967\":1480585069140,\"1022646908964\":1480585069140,\"1022646908963\":1480585069140,\"1021831121729\":1478686417256,\"1022646908960\":1480585069140,\"1025607444566\":1509788624866,\"761614133\":1444487341740,\"1022646908991\":1480585069140,\"1023164373987\":1509788624373,\"1023164373986\":1509788624373,\"1023164373985\":1509788624373,\"1023164373984\":1509788624373,\"4997860285\":1509788667398,\"1022646908980\":1480585069140,\"1024879230209\":1509788624564,\"1024879230208\":1509788624564,\"1024879230210\":1509788624564,\"1022196030757\":1478686417189,\"1009849957689\":1478686804067,\"1023856017423\":1491634246537,\"1010024532148\":1491634246527,\"1010024532146\":1491634246521,\"1022646909166\":1480585069140,\"1022072298030\":1509788624190,\"1022646909161\":1480585069140,\"1022072298026\":1509788624190,\"936990032\":1478950494919,\"1022072298016\":1509788624190,\"1022072298044\":1509788624190,\"1022646909181\":1480585069141,\"1022072298047\":1509788624190,\"1022646909178\":1480585069140,\"1022072298042\":1509788624190,\"1022072298043\":1509788624190,\"1022646909175\":1480585069140,\"1022072298037\":1509788624190,\"1022072298038\":1509788624190,\"1022072298039\":1509788624190,\"1022072298032\":1509788624190,\"1022072298034\":1509788624190,\"1008808330204\":1444487341757,\"1022466813321\":1478686417218,\"1022442564629\":1478686417016,\"1022072298015\":1509788624190,\"1021843310784\":1478686417257,\"1022646909103\":1480585069140,\"1108287694\":1444487341725,\"1022646909102\":1480585069140,\"1022646909101\":1480585069140,\"1008629560620\":1478686804030,\"1022646909095\":1480585069140,\"1022646909091\":1480585069140,\"1022646909089\":1480585069140,\"1025593288766\":1509788624929,\"1021947908843\":1478686417260,\"1025607968964\":1509788624550,\"1022646909111\":1480585069140,\"1012136266295\":1478686417073,\"1025607968968\":1509788624550,\"1022646909108\":1480585069140,\"1012754919122\":1478686804024,\"1025607968973\":1509788624550,\"1022646909106\":1480585069140,\"1022072298057\":1509788624190,\"1021002504823\":1478686417089,\"1022072298059\":1509788624190,\"1024597683398\":1509788624938,\"1022646909087\":1480585069140,\"1022646909086\":1480585069140,\"1022646909084\":1480585069140,\"1021721280844\":1478686804050,\"1022646909082\":1480585069140,\"1207772427\":1444487341742,\"1022646909079\":1480585069140,\"1025784002409\":1509788624351,\"1023095821999\":1509788624995,\"1016930215467\":1478686804016,\"1022646909291\":1480585069141,\"1023095821992\":1509788624995,\"1022646909289\":1480585069141,\"1022646909287\":1480585069141,\"1025428399023\":1509788624423,\"1022645598607\":1480585069132,\"1010812402424\":1509788624299,\"1025428399019\":1509788624423,\"1022645598610\":1480585069132,\"1022646909310\":1480585069141,\"1022645598608\":1480585069132,\"1023095822009\":1509788624995,\"1022645598614\":1480585069132,\"1020596831156\":1478686804031,\"1022645598613\":1480585069132,\"1022645598612\":1480585069132,\"1022645598619\":1480585069132,\"1022646909303\":1480585069141,\"1022645598617\":1480585069132,\"1022645598616\":1480585069132,\"1022646909300\":1480585069141,\"1022645598622\":1480585069132,\"1023095822002\":1509788624995,\"1025428398980\":1509788624423,\"1023095821966\":1509788624995,\"1022645598631\":1480585069132,\"1023095821960\":1509788624995,\"1025428398978\":1509788624423,\"1022645598635\":1480585069132,\"1022645598634\":1480585069132,\"1022645598633\":1480585069132,\"1006962544740\":1478686804025,\"4997860047\":1509788667398,\"1022645598637\":1480585069132,\"1022453574971\":1509788624937,\"1022645598636\":1480585069132,\"1022409273224\":1480585069097,\"1022409273227\":1480585069097,\"1022645598641\":1480585069132,\"1007384522514\":1478686804025,\"1022645598647\":1480585069132,\"1021922872460\":1478686417010,\"1021922872462\":1478686417010,\"1022409273219\":1480585069097,\"1022409273221\":1480585069097,\"1022409273220\":1480585069097,\"1025474011344\":1509788624945,\"1022409273222\":1480585069097,\"1024597683478\":1509788624938,\"1023670563880\":1509788624199,\"1025428399075\":1509788624423,\"1025428399074\":1509788624423,\"1021983035722\":1478686417152,\"1022097857121\":1478686417181,\"1022646909219\":1480585069141,\"120677503\":1444487341760,\"1022646909217\":1480585069141,\"1020556869200\":1478686417017,\"1021595334763\":1509788624397,\"1025713484528\":1509788624305,\"1020092311\":1444487341735,\"1022453574985\":1509788624937,\"1022645598685\":1480585069132,\"1022453574987\":1509788624937,\"1022645598684\":1480585069132,\"1022645598691\":1480585069132,\"1025042926303\":1509788624498,\"1021849078142\":1509788625015,\"1022645598689\":1480585069132,\"1022646909197\":1480585069141,\"1025428399047\":1509788624423,\"1025428399046\":1509788624423,\"1023095822030\":1509788624995,\"1022645598694\":1480585069132,\"1022645598693\":1480585069132,\"1022646909193\":1480585069141,\"1023095822027\":1509788624995,\"1022645598692\":1480585069132,\"1022645598699\":1480585069132,\"1024156571643\":1509788667500,\"1022645598698\":1480585069132,\"1022646909190\":1480585069141,\"1599683635\":1444487341737,\"1022645598696\":1480585069132,\"1024879229962\":1509788624863,\"1022645598703\":1480585069132,\"1023095822017\":1509788624995,\"1022646909186\":1480585069141,\"1022645598707\":1480585069132,\"1024879229969\":1509788624863,\"1022645598706\":1480585069132,\"1022645598705\":1480585069132,\"1024879229971\":1509788624863,\"1024879229970\":1509788624863,\"1024879229973\":1509788624863,\"1022097857119\":1478686417181,\"1022645598710\":1480585069132,\"1022646909210\":1480585069141,\"1022645598709\":1480585069132,\"1022645598708\":1480585069132,\"1022645598712\":1480585069132,\"1022646909204\":1480585069141,\"1025261163971\":1509788624280,\"974870884\":1444487341738,\"1022646909200\":1480585069141,\"1022030485156\":1478686417165,\"1022646909433\":1480585069141,\"1020391585641\":1478686804071,\"1022646909431\":1480585069141,\"738545566\":1478686417020,\"1021976089075\":1478686417056,\"1019241770234\":1509788624301,\"1024879230207\":1509788624564,\"1024879230206\":1509788624564,\"1022646909391\":1480585069141,\"1022646909388\":1480585069141,\"1022646909387\":1480585069141,\"1022646909386\":1480585069141,\"1022646909385\":1480585069141,\"1024597683598\":1509788624938,\"4971908080\":1509788624162,\"1022646909379\":1480585069141,\"1022646909377\":1480585069141,\"1022646909406\":1480585069141,\"1025529062676\":1509788624340,\"1022646909402\":1480585069141,\"1022646909400\":1480585069141,\"1022646909396\":1480585069141,\"1022646909394\":1480585069141,\"1022459603975\":1478686417072,\"1022646909392\":1480585069141,\"1025275581441\":1509788624331,\"1025275581440\":1509788624331,\"1025275581443\":1509788624331,\"1023095821935\":1509788624995,\"1025275581442\":1509788624331,\"1020172821536\":1509788624320,\"1025275581445\":1509788624331,\"1025428398945\":1509788624423,\"1020172821537\":1509788624320,\"1025275581444\":1509788624331,\"1025275581447\":1509788624331,\"1023095821931\":1509788624995,\"1025275581446\":1509788624331,\"1025428398946\":1509788624423,\"1022645598538\":1480585069132,\"1025275581448\":1509788624331,\"1012136266532\":1478686417073,\"1022645598537\":1480585069132,\"1016514334660\":1478686804053,\"1025607444936\":1509788624846,\"1022645598545\":1480585069132,\"1022646909373\":1480585069141,\"1022645598544\":1480585069132,\"309686694\":1491634246534,\"1016514334657\":1478686804053,\"1025607444941\":1509788624845,\"1016514334659\":1478686804053,\"1022645598549\":1480585069132,\"1022352911298\":1478686417069,\"1016514334658\":1478686804053,\"1025275581465\":1509788624331,\"1022645598554\":1480585069132,\"1023095821940\":1509788624995,\"1025275581467\":1509788624331,\"1022645598552\":1480585069132,\"1025275581466\":1509788624331,\"1022645598559\":1480585069132,\"1025275581469\":1509788624331,\"1025275581468\":1509788624331,\"1025275581470\":1509788624331,\"1022645598562\":1480585069132,\"1022646909325\":1480585069141,\"1022646909324\":1480585069141,\"1025275581477\":1509788624331,\"1025428398913\":1509788624423,\"1022645598566\":1480585069132,\"1022645598565\":1480585069132,\"1022646909321\":1480585069141,\"1022646909320\":1480585069141,\"1025275581478\":1509788624331,\"1025428398914\":1509788624423,\"1022645598571\":1480585069132,\"1022646909319\":1480585069141,\"1019067573805\":1509788625079,\"1022645598569\":1480585069132,\"1022646909317\":1480585069141,\"1022646909315\":1480585069141,\"1022645598574\":1480585069132,\"1022645598579\":1480585069132,\"1021626662573\":1509788624930,\"1025864874320\":1509788667590,\"1022645598577\":1480585069132,\"1022645598580\":1480585069132,\"1009701713402\":1478686804052,\"1020172821533\":1509788624320,\"1020172821534\":1509788624320,\"1020172821535\":1509788624320,\"1022646909328\":1480585069141,\"1026224786642\":1514456869768,\"1022069546238\":1478686417301,\"1022633803103\":1480585069117,\"1021930736437\":1478686417142,\"1025269158447\":1509788624343,\"1025711519189\":1509788624305,\"1022093925751\":1478686417181,\"1022633803078\":1480585069117,\"1021752869325\":1478686417051,\"1025275581401\":1509788624332,\"4964959223\":1509788624162,\"1025275581400\":1509788624332,\"1025275581403\":1509788624332,\"1025275581402\":1509788624332,\"1023605815129\":1509788625142,\"1025447929278\":1509788624537,\"1025275581419\":1509788624332,\"1025275581418\":1509788624332,\"1021093730604\":1478686417094,\"1025275581421\":1509788624331,\"1022645599918\":1480585069133,\"1025275581420\":1509788624332,\"1022645599916\":1480585069133,\"1022645599923\":1480585069133,\"1022645599922\":1480585069133,\"1022633803109\":1480585069149,\"1025428399255\":1509788624423,\"1021976876623\":1509788625080,\"1022645599927\":1480585069133,\"1022633803106\":1480585069117,\"1022645599924\":1480585069133,\"1022645599931\":1480585069133,\"1022645599930\":1480585069133,\"1022645599929\":1480585069133,\"1022645599935\":1480585069133,\"1022645599933\":1480585069133,\"1017165100816\":1478686804020,\"1022645599932\":1480585069133,\"1025428399258\":1509788624423,\"1024973455745\":1509788624174,\"1025428399335\":1509788624423,\"1022645599936\":1480585069133,\"1022767219975\":1509788625074,\"4997860771\":1509788667399,\"1025515168209\":1509788624371,\"1025515168208\":1509788624371,\"1025515168211\":1509788624371,\"1014925306596\":1478950494940,\"1025515168210\":1509788624371,\"1025515168213\":1509788624371,\"1025428399337\":1509788624423,\"1025515168212\":1509788624371,\"1025515168215\":1509788624371,\"1025515168214\":1509788624371,\"1025447929288\":1509788624524,\"1016910946341\":1465470268246,\"1024577235253\":1509788667501,\"1016910946343\":1465470268267,\"1025275581335\":1509788624332,\"1025515168207\":1509788624371,\"1025275581337\":1509788624332,\"1022645599962\":1480585069133,\"1025275581336\":1509788624332,\"1022645599960\":1480585069133,\"1025275581338\":1509788624333,\"1025275581341\":1509788624333,\"1022645599966\":1480585069133,\"1025275581340\":1509788624333,\"1025275581343\":1509788624332,\"1022645599964\":1480585069133,\"1025275581342\":1509788624332,\"1025792914059\":1509788624182,\"1025275581345\":1509788624332,\"1025428399301\":1509788624423,\"1025275581344\":1509788624332,\"1025275581347\":1509788624332,\"1022633803060\":1480585069117,\"1025275581346\":1509788624332,\"1022645599975\":1480585069133,\"1025792914063\":1509788624182,\"1025275581349\":1509788624332,\"1021663361896\":1509788624515,\"1025275581348\":1509788624332,\"1022645599973\":1480585069133,\"1025275581351\":1509788624332,\"1025275581350\":1509788624332,\"1022645599979\":1480585069133,\"1025275581353\":1509788624332,\"1025275581352\":1509788624332,\"1022645599977\":1480585069133,\"1025275581355\":1509788624332,\"1025275581354\":1509788624332,\"1022633803067\":1480585069149,\"1025275581357\":1509788624332,\"1025428399305\":1509788624423,\"1021976876560\":1509788625080,\"1025275581356\":1509788624332,\"1022645599981\":1480585069133,\"1022645599980\":1480585069133,\"1025792914075\":1509788624182,\"1022645599986\":1480585069133,\"1025792914074\":1509788624182,\"1022645599985\":1480585069133,\"1025792914073\":1509788624182,\"1021976876558\":1509788625080,\"1022645599984\":1480585069133,\"1021918415756\":1509788624916,\"1025792914067\":1509788624182,\"1025792914064\":1509788624182,\"1025792914071\":1509788624182,\"1022269546640\":1509788624940,\"1021623122192\":1509788624861,\"1012641669696\":1478686417074,\"1025373886827\":1509788624309,\"1021623122182\":1509788624861,\"1021976876780\":1509788625080,\"1021688513821\":1509788624404,\"1025593683546\":1509788624425,\"1025593683545\":1509788624428,\"1025593683544\":1509788624431,\"1025906292927\":1509788667461,\"1024615639968\":1509788624199,\"1025906292926\":1509788667463,\"1021623122188\":1509788624861,\"1022193146627\":1478686416992,\"1018980424577\":1509788624439,\"1021350881584\":1509788624918,\"1021623122187\":1509788624861,\"1022030614966\":1509788624847,\"1025428399109\":1509788624423,\"1025428399106\":1509788624423,\"1610679465\":1444487341756,\"1025593683555\":1509788624407,\"1024973455727\":1509788624174,\"1024973455726\":1509788624174,\"1022507841140\":1509788624935,\"1024253566470\":1509788624948,\"1021614471348\":1478686417116,\"1024973455725\":1509788624174,\"1025078972215\":1509788624280,\"1020436804252\":1478686804026,\"1021721282316\":1478686804050,\"1020294064667\":1465470268286,\"1021721282317\":1478686804050,\"1024973455734\":1509788624174,\"1021721282318\":1478686804050,\"1021721282319\":1478686804050,\"1015291641932\":1480585069068,\"1025428399129\":1509788624422,\"1025428399131\":1509788624422,\"1021976876732\":1509788625080,\"1025428399206\":1509788624423,\"1021721282428\":1478686804050,\"1021721282429\":1478686804050,\"1025428399200\":1509788624423,\"1021721282430\":1478686804050,\"1021976876731\":1509788625080,\"1024782761450\":1509788625080,\"1022269024197\":1478686804065,\"1022633803142\":1480585069117,\"1022238877209\":1509788624933,\"201158436\":1491634246513,\"1023730859816\":1509788624961,\"1025428399225\":1509788624423,\"1009832262278\":1509788625081,\"1022029566341\":1478686417165,\"1025428399226\":1509788624423,\"1025428399169\":1509788624422,\"1021976876696\":1509788625080,\"1025428399170\":1509788624423,\"1017781001340\":1509788624284,\"1025906292928\":1509788667457,\"4935860952\":1509788624162,\"1020810348815\":1478686417030,\"1025901967512\":1509788667460,\"1021515117331\":1509788624819,\"936989472\":1478950494919,\"1025901967511\":1509788667459,\"1023087562966\":1509788624820,\"1025901967510\":1509788667464,\"1020857535434\":1478686417227,\"1023087562965\":1509788624820,\"1025901967509\":1509788667461,\"1025783738519\":1509788624343,\"1022645600135\":1480585069134,\"1022645600133\":1480585069134,\"1022645600138\":1480585069134,\"1025796322270\":1509788624274,\"1025783738525\":1509788624343,\"1022645600143\":1480585069134,\"1022645600142\":1480585069134,\"1021976876913\":1509788625081,\"1022645600141\":1480585069134,\"1025783738520\":1509788624346,\"1025428399541\":1509788624422,\"1022645600146\":1480585069134,\"1021509612361\":1478686417007,\"1022645600151\":1480585069134,\"1025428399537\":1509788624422,\"1022645600149\":1480585069134,\"1022645600155\":1480585069134,\"1022078459240\":1478686417177,\"4971908418\":1509788624163,\"1021435819943\":1478686417107,\"1022645600158\":1480585069134,\"1023819318672\":1491634246533,\"1022645600156\":1480585069134,\"1022645600161\":1480585069134,\"1022645600164\":1480585069134,\"1021976876876\":1509788625081,\"1009038101122\":1478686804054,\"1025783738530\":1509788624343,\"1021330434515\":1478686416984,\"1022206240235\":1480585069087,\"1009038101128\":1478686804054,\"1022701303915\":1509788624972,\"1021978974055\":1478686417151,\"1020556867646\":1478686417017,\"1020801698135\":1478686417030,\"1024869399336\":1509788624949,\"1020900267976\":1478686417080,\"1025798550517\":1509788624430,\"1024117905280\":1509788624326,\"1025798550516\":1509788624428,\"1025798550518\":1509788624425,\"1016819735179\":1478686804063,\"370635613\":1478950494908,\"1016819735181\":1478686804063,\"1022645600207\":1480585069134,\"1016819735180\":1478686804063,\"1022645600206\":1480585069134,\"1016819735183\":1478686804063,\"1016819735182\":1478686804063,\"1016819735185\":1478686804063,\"1022645600211\":1480585069134,\"1016819735184\":1478686804063,\"1016819735187\":1478686804063,\"1022645600209\":1480585069134,\"1016819735186\":1478686804063,\"1022645600213\":1480585069134,\"1022645600218\":1480585069134,\"1021976876839\":1509788625080,\"1022270464419\":1509788624938,\"1022645600222\":1480585069134,\"1022270464418\":1509788624938,\"1024007802412\":1509788667834,\"1022645600227\":1480585069134,\"1022645600226\":1480585069134,\"4964958860\":1509788624162,\"1022645600224\":1480585069134,\"1022645600229\":1480585069134,\"1022060106253\":1509788624958,\"1021855633106\":1478686417135,\"1022645600235\":1480585069134,\"1021574102803\":1509788624814,\"1025515167979\":1509788624371,\"1022645600247\":1480585069134,\"1025515167981\":1509788624371,\"1025515167980\":1509788624371,\"1021855633100\":1478686417135,\"1022645600245\":1480585069134,\"1025428399581\":1509788624422,\"1025428399580\":1509788624422,\"1025628023206\":1509788624523,\"1025628023202\":1509788624537,\"1025628023201\":1509788624542,\"1022286323858\":1478686417198,\"1025628023200\":1509788624540,\"1025428399399\":1509788624422,\"1025428399401\":1509788624422,\"1021976877040\":1509788625081,\"1023210903932\":1509788625042,\"1007983777254\":1509788624373,\"1022927916605\":1509788624439,\"1021976877039\":1509788625081,\"1022645600022\":1480585069133,\"1022645600021\":1480585069133,\"1022212400610\":1478686417281,\"1022645600026\":1480585069133,\"1023821415924\":1491634246536,\"1019879297279\":1509788624369,\"1025515167744\":1509788624371,\"1025515167747\":1509788624371,\"1025515167746\":1509788624371,\"1022645600029\":1480585069133,\"1022645600028\":1480585069133,\"1025713091596\":1509788624306,\"1018559808430\":1478686804015,\"1025428399368\":1509788624423,\"1025428399371\":1509788624423,\"1022643896077\":1509788624420,\"1021154796751\":1478686416981,\"1022080949660\":1478686417178,\"1021976877002\":1509788625081,\"1025058787098\":1509788624367,\"1021905963780\":1509788624533,\"1022484641156\":1478943089254,\"1022270333217\":1480585069093,\"1022270333216\":1480585069093,\"1022270333218\":1480585069093,\"1016992738397\":1478686804063,\"1022645600079\":1480585069133,\"1019761331106\":1509788625077,\"1025879948823\":1509788667405,\"1022645600087\":1480585069133,\"1022645600085\":1480585069133,\"1022645600091\":1480585069133,\"1025428399484\":1509788624422,\"1022645600088\":1480585069133,\"1025428399486\":1509788624422,\"1020194844015\":1509788625016,\"1022645600095\":1480585069133,\"1022039004021\":1478686417011,\"1022645600099\":1480585069134,\"1022645600098\":1480585069134,\"1025027198318\":1509788624329,\"1022927916621\":1509788624439,\"1022645600096\":1480585069133,\"1022927916620\":1509788624439,\"1021976876952\":1509788625081,\"1021976876953\":1509788625081,\"1838745714\":1478950494926,\"1021976876951\":1509788625081,\"1022927916611\":1509788624439,\"1014068248110\":1478686804064,\"1025428399445\":1509788624422,\"1021604903289\":1478686417116,\"1022206240033\":1480585069086,\"1022270333205\":1480585069092,\"1010295201623\":1491634246523,\"1022270333206\":1480585069092,\"1025428399442\":1509788624422,\"1024637531198\":1509788667502,\"1022270333209\":1480585069092,\"1022270333208\":1480585069092,\"1022270333211\":1480585069092,\"1022270333210\":1480585069092,\"1022270333212\":1480585069092,\"1022270333215\":1480585069093,\"1022270333214\":1480585069092,\"1020597094075\":1478686804031,\"1021721281964\":1478686804050,\"1021016137656\":1478686417035,\"1023734791595\":1509788624969,\"1023094772675\":1509788624439,\"1024780795712\":1509788624973,\"1021261881663\":1465470268201,\"1025428399751\":1509788624422,\"1024785383230\":1509788624250,\"1024785383217\":1509788624250,\"1024785383219\":1509788624250,\"1024785383221\":1509788624250,\"1025428399753\":1509788624422,\"1024785383223\":1509788624250,\"1008738614107\":1444487341761,\"1024785383209\":1509788624250,\"1022199437578\":1478686417189,\"1012680732326\":1478686416994,\"1025515168687\":1509788624371,\"1022206240484\":1480585069087,\"1022044639311\":1478686417171,\"1022044639307\":1478686417171,\"1021138150976\":1478686417037,\"1022471403173\":1478686417219,\"1024785383256\":1509788624250,\"1023858508821\":1509788624199,\"1022045556737\":1478686417171,\"1024785383262\":1509788624250,\"1024785383251\":1509788624250,\"1022045556756\":1478686417171,\"1024785383241\":1509788624250,\"1022045556759\":1478686417171,\"1024785383245\":1509788624250,\"1025428399857\":1509788624422,\"1025428399856\":1509788624422,\"1024785383233\":1509788624250,\"1012136267406\":1478686417073,\"1009317799564\":1509788624369,\"1025428399813\":1509788624422,\"1024780795710\":1509788624973,\"1024785383292\":1509788624250,\"1021948958316\":1478686417055,\"1018947524740\":1509788624315,\"1020339680892\":1465470268323,\"1024785383285\":1509788624250,\"1024785383287\":1509788624250,\"1025428399819\":1509788624422,\"1024785383273\":1509788624250,\"1019113578874\":1509788624287,\"1011852112271\":1444487341712,\"1019113578875\":1509788624287,\"1019113578872\":1509788624287,\"1019113578873\":1509788624287,\"1024785383279\":1509788624250,\"1019113578876\":1509788624287,\"1025428399837\":1509788624422,\"1025428399836\":1509788624422,\"604455547\":1444487341744,\"1024785383268\":1509788624250,\"1022478874129\":1478943089487,\"1025261162559\":1509788624280,\"1024096016013\":1509788624522,\"1020339680914\":1465470268324,\"1021976089836\":1509788625142,\"1025318707113\":1509788625168,\"1025318707112\":1509788625166,\"1022026421216\":1478686417011,\"1000211842848\":1478686804068,\"1025318707106\":1509788625129,\"1025447929610\":1509788624198,\"1024797965512\":1509788624241,\"1024096016030\":1509788624522,\"1025447929609\":1509788624201,\"1024797965515\":1509788624241,\"1025447929608\":1509788624204,\"1024797965514\":1509788624241,\"1024096016028\":1509788624522,\"1024797965517\":1509788624241,\"1024096016027\":1509788624522,\"1020052707738\":1509788624281,\"1024797965505\":1509788624241,\"1020339680911\":1465470268323,\"1024797965507\":1509788624241,\"1024096016020\":1509788624522,\"1000211842865\":1478686804068,\"1024797965509\":1509788624241,\"1024096016018\":1509788624522,\"1024785383353\":1509788625198,\"1025318707085\":1509788625129,\"1024785383355\":1509788625198,\"1025593683048\":1509788624746,\"1025318707084\":1509788625110,\"1018829033657\":1478686804020,\"1025318707082\":1509788625144,\"1000211842827\":1478686804068,\"1025318707079\":1509788625164,\"1024785383345\":1509788625198,\"1025318707078\":1509788625164,\"1024096016037\":1509788624523,\"1024096016036\":1509788624522,\"1025318707076\":1509788625164,\"1024096016035\":1509788624522,\"1025593683046\":1509788624823,\"1024785383348\":1509788625198,\"1025593683045\":1509788624833,\"1025593683044\":1509788624828,\"1025318707103\":1509788625129,\"1025428399636\":1509788624421,\"1023094772588\":1509788624439,\"1025318707101\":1509788625129,\"1024785383341\":1509788625198,\"1025318707098\":1509788625129,\"1025428399635\":1509788624421,\"1024096016057\":1509788624523,\"1025318707096\":1509788625129,\"1021272501952\":1509788624433,\"1024096016054\":1509788624522,\"1021272501955\":1509788624433,\"1024096016052\":1509788624522,\"604455611\":1444487341720,\"1025126025239\":1509788624308,\"1025318707090\":1509788625129,\"1024096016049\":1509788624522,\"1025318707088\":1509788625129,\"1025428399717\":1509788624422,\"1021272501944\":1509788624433,\"1023006296515\":1509788624466,\"1024785383385\":1509788625198,\"1024785383387\":1509788625198,\"1025428399718\":1509788624422,\"1024785383386\":1509788625198,\"1024096016075\":1509788624523,\"1837042616\":1491634246516,\"1024434234144\":1509788624198,\"1024096016072\":1509788624522,\"1025665640521\":1509788667649,\"1025665640520\":1509788667650,\"1837042613\":1491634246516,\"1025665640523\":1509788667617,\"1022189738336\":1478686417013,\"1021272501940\":1509788624441,\"1024096016066\":1509788624522,\"1025665640524\":1509788667617,\"4935860476\":1509788624162,\"1024785383383\":1509788625198,\"1021272501943\":1509788624433,\"1024785383382\":1509788625198,\"463961463\":1491634246534,\"1837042606\":1491634246516,\"1837042605\":1491634246516,\"1837042603\":1491634246516,\"1024785383373\":1509788625198,\"1024785383363\":1509788625198,\"1837042596\":1491634246516,\"1022083178196\":1478686417272,\"1024785383367\":1509788625198,\"1011886194454\":1478686804062,\"1025665640545\":1509788667600,\"1011886194455\":1478686804062,\"1011886194452\":1478686804062,\"1025428399687\":1509788624422,\"1011886194453\":1478686804062,\"1025428399686\":1509788624422,\"1026224785870\":1514456869772,\"1011886194450\":1478686804062,\"1023946457597\":1491634246529,\"1011886194451\":1478686804062,\"1021721281886\":1478686804050,\"1011886194449\":1478686804062,\"1025665640553\":1509788667601,\"1000211842887\":1478686804068,\"1024785383411\":1509788625198,\"1010295200841\":1491634246522,\"1025665640554\":1509788667601,\"1021978186936\":1478686417056,\"1023670563227\":1509788624825,\"1011579740355\":1478686417220,\"1024785383400\":1509788625198,\"1024785383403\":1509788625198,\"1600731550\":1444487341750,\"1024785383406\":1509788625198,\"1022170339341\":1478686417013,\"1024434234142\":1509788624206,\"1024434234141\":1509788624198,\"1024785383395\":1509788625198,\"1024785383397\":1509788625198,\"1022328136081\":1478686417201,\"1011826815878\":1509788624944,\"1018172237860\":1478686804058,\"1018172237859\":1478686804058,\"4997861101\":1509788667399,\"1021914089780\":1509788624986,\"1025686874198\":1509788624309,\"1024127341917\":1509788624363,\"1021025312314\":1509788624933,\"1020437066037\":1478686804029,\"1409626898\":1509788625020,\"1021905963427\":1509788624817,\"1025908390672\":1509788667459,\"1026223474776\":1514456869766,\"1021354289794\":1465470268229,\"1025508614886\":1509788624339,\"1022340329416\":1478686417069,\"1025508614880\":1509788624346,\"1022089862846\":1478686416976,\"1022042935628\":1478686417170,\"1022075707319\":1478686417177,\"1021594287134\":1478686417246,\"1022075707305\":1478686417177,\"1020886636098\":1478686416999,\"1020890437217\":1509788624986,\"1025515168477\":1509788624371,\"1025515168476\":1509788624371,\"1025318706794\":1509788624538,\"1025515168479\":1509788624371,\"1025515692758\":1509788624340,\"1025515168478\":1509788624371,\"1022076624681\":1509788624928,\"1025318706791\":1509788624553,\"1025318706788\":1509788624564,\"1025318706785\":1509788624564,\"1025318706813\":1509788624544,\"1021981463913\":1478686417151,\"1025318706810\":1509788624544,\"1022200617052\":1478686417190,\"1021115881605\":1478686417095,\"1025318706806\":1509788624544,\"1024773193352\":1509788625069,\"1022069546919\":1478686417301,\"1025318706802\":1509788624544,\"1022089862857\":1478686416976,\"1022089862862\":1478686416976,\"1022089862863\":1478686416976,\"1020832893411\":1478686416998,\"1025318706781\":1509788624564,\"1025593683389\":1509788625088,\"1025593683379\":1509788625116,\"1022192752889\":1478686417279,\"1022372048269\":1480585069105,\"1025593683383\":1509788625108,\"1025593683381\":1509788625124,\"1022812570382\":1509788625110,\"1025791734428\":1509788667921,\"1022372048242\":1480585069098,\"1021987624028\":1478686417154,\"1025791734427\":1509788667921,\"1021290458816\":1478686417040,\"1021148112458\":1478686417037,\"1023734791227\":1509788624969,\"1021290458820\":1478686417040,\"1025791734419\":1509788667921,\"1021097662804\":1478686417002,\"1022316470704\":1478686417200,\"1025791734412\":1509788667911,\"1025791734409\":1509788667948,\"1021097662802\":1478686417002,\"1009566181801\":1480585069061,\"1022461437957\":1478686417303,\"1025791734407\":1509788667993,\"1025791734406\":1509788667993,\"1021905963300\":1509788624195,\"1025318706831\":1509788624566,\"1021097662821\":1478686417002,\"4890379485\":1509788624162,\"1021097662822\":1478686417002,\"1025318706828\":1509788624565,\"1021794287844\":1478686416981,\"1021688776224\":1478686417121,\"1025318706823\":1509788624544,\"1025318706822\":1509788624544,\"1019449392303\":1509788625084,\"1025318706819\":1509788624544,\"1018546700637\":1480585069063,\"1025318706818\":1509788624544,\"1021976876493\":1509788625080,\"1025428399895\":1509788624421,\"1025428399894\":1509788624421,\"1025791734433\":1509788667921,\"1022418185201\":1478686417293,\"1008287196594\":1478686804030,\"1008287196593\":1478686804025,\"1025428399969\":1509788624422,\"1024961266523\":1509788624933,\"1018516816767\":1478686804066,\"1025428399970\":1509788624422,\"1021680519106\":1509788624854,\"1024961266517\":1509788624933,\"1023087563746\":1509788624536,\"1023087563745\":1509788624536,\"1024961266513\":1509788624922,\"1021680519111\":1509788624854,\"1021680519108\":1509788624854,\"1021680519109\":1509788624854,\"1022088158730\":1478686417062,\"1022156970613\":1478686417278,\"1021688514137\":1509788624404,\"1022088158728\":1478686417062,\"1022156970620\":1478686417278,\"1021828370106\":1509788624205,\"1021828370105\":1509788624201,\"1020940243918\":1478686417033,\"1021948958702\":1478686417055,\"1021828370109\":1509788624186,\"1025428399949\":1509788624422,\"1025428399950\":1509788624422,\"1024587065632\":1509788667888,\"4935860701\":1509788624162,\"1021680519162\":1509788624219,\"1020167840162\":1509788625077,\"1021680519161\":1509788624219,\"1021680519164\":1509788624219,\"1021097662781\":1478686417002,\"1021680519159\":1509788624219,\"1023946854163\":1491634246531,\"1021154666851\":1478686417097,\"1025628939475\":1509788624431,\"1025628939474\":1509788624428,\"1020924779315\":1478686417000,\"1023946854166\":1491634246531,\"1025628939476\":1509788624425,\"1023095823784\":1509788624996,\"1023095823780\":1509788624996,\"1025628939483\":1509788624406,\"1022631047530\":1509788624231,\"1023095823782\":1509788624996,\"1021154666862\":1478686417097,\"1022370210529\":1509788624300,\"1022454622184\":1478686417072,\"1021154666863\":1478686417097,\"1021154666867\":1478686417097,\"1022945477810\":1509788625051,\"1021154666870\":1478686417097,\"1023084551265\":1509788624430,\"1022453573173\":1509788624937,\"1023095823757\":1509788624996,\"1022453573174\":1509788624936,\"1480011795\":1478686804024,\"1021680519214\":1509788624557,\"1021032387213\":1478686417091,\"1023095823752\":1509788624996,\"1022453573171\":1509788624937,\"1022453573181\":1509788624937,\"1022453573180\":1509788624937,\"1022453573177\":1509788624937,\"1023094644210\":1509788624533,\"1020932512915\":1509788624930,\"1023095823746\":1509788624996,\"1020567746125\":1478686417224,\"1021404887207\":1478686417240,\"1023095823774\":1509788624995,\"1023095823768\":1509788624995,\"1022453573165\":1509788624936,\"1022453573164\":1509788624936,\"1021680519216\":1509788624558,\"1021680519217\":1509788624558,\"1022453573166\":1509788624937,\"1025011470243\":1509788625084,\"1025011470242\":1509788625084,\"1021680519220\":1509788624557,\"1023095823763\":1509788624996,\"1022453573162\":1509788624937,\"1021500702339\":1478686417007,\"1023095823855\":1509788624996,\"1020582164422\":1478686417027,\"1025593287349\":1509788624929,\"1023095823851\":1509788624996,\"1022458029977\":1478686417072,\"1022001650862\":1478686417265,\"1017165101926\":1478686804020,\"1022458029978\":1478686417072,\"1021770305250\":1478686417127,\"1023094644113\":1509788625100,\"1021770305251\":1478686417127,\"1023095823869\":1509788624996,\"1022453573188\":1509788624937,\"1022453573187\":1509788624937,\"1023095823861\":1509788624996,\"1023095823860\":1509788624996,\"1023095823857\":1509788624996,\"772097627\":1491634246519,\"1023095823859\":1509788624996,\"1023502918918\":1509788624971,\"1025628021855\":1509788625088,\"1025628021854\":1509788625115,\"1025628021853\":1509788625107,\"1025628021852\":1509788625124,\"1020482644\":1478950494919,\"1022479268067\":1478943089487,\"1002055870288\":1478686417024,\"1021272236267\":1478686417101,\"1022417921168\":1478686417302,\"1022429849033\":1478686417071,\"1021925754846\":1478686804066,\"1023572130185\":1509788624974,\"1023020194031\":1509788625083,\"1020294063724\":1465470268286,\"1021719972719\":1509788624434,\"1023627050183\":1509788624612,\"1023627050182\":1509788624612,\"1021185600323\":1478686417098,\"1023627050186\":1509788624550,\"1023627050185\":1509788624550,\"1019699725041\":1509788624312,\"1023095823718\":1509788624996,\"1023627050191\":1509788624540,\"1023627050190\":1509788624540,\"1023627050199\":1509788624540,\"1023627050197\":1509788624540,\"1023095823739\":1509788624996,\"1024002687848\":1491634246532,\"1016927595951\":1478686804024,\"1021729672160\":1509788624563,\"1024002687845\":1491634246532,\"1021982513878\":1509788625067,\"1023020194035\":1509788625083,\"1024002687842\":1491634246532,\"1023095823731\":1509788624996,\"1023020194033\":1509788625083,\"1000037269226\":1478686417021,\"1023020194032\":1509788625083,\"1024370272566\":1509788624926,\"1021729672155\":1509788624563,\"1024094968027\":1509788625036,\"1025709553927\":1509788667888,\"1021729672157\":1509788624563,\"1022401012689\":1478686417207,\"1021729672158\":1509788624563,\"1024096016610\":1509788624522,\"1021276299479\":1480585069070,\"1021183765342\":1465469681394,\"1021183765343\":1465469681394,\"1023095823700\":1509788624996,\"1022849011353\":1509788624325,\"1023095823697\":1509788624995,\"1018335031663\":1478686804022,\"1000526159329\":1444487341714,\"1022376895375\":1478686804066,\"1019310455366\":1509788624315,\"1021606868324\":1509788624397,\"1000526159333\":1444487341735,\"1025712830687\":1509788624304,\"1022360772754\":1478686417203,\"1022376895376\":1478686804066,\"1021331875282\":1509788624975,\"1021331875283\":1509788624975,\"1022757521621\":1509788624352,\"1021331875280\":1509788624975,\"1021331875286\":1509788624976,\"1021331875287\":1509788624976,\"1021331875284\":1509788624975,\"1021331875285\":1509788624976,\"1021331875288\":1509788624975,\"1021331875289\":1509788624976,\"1021331875295\":1509788624975,\"1021747629348\":1478686417126,\"1021331875292\":1509788624976,\"1000526159320\":1444487341740,\"1021338166695\":1478686417041,\"1021006041448\":1509788624933,\"1020136647995\":1480585069063,\"1021331875274\":1509788624975,\"1021331875275\":1509788624975,\"1021331875273\":1509788624975,\"1021331875278\":1509788624975,\"1021331875279\":1509788624975,\"1021331875277\":1509788624975,\"1021260574322\":1478686804035,\"1021490871348\":1509788624398,\"1021260574323\":1478686804035,\"1021722987203\":1509788624395,\"1012606807480\":1478686416972,\"1021260574321\":1478686804035,\"1022220921008\":1480585069090,\"1021260574326\":1478686804035,\"1018515639786\":1509788624426,\"1021260574327\":1478686804035,\"1021260574324\":1478686804035,\"1021260574325\":1478686804035,\"1025517136946\":1509788624308,\"1021260574328\":1478686804035,\"1016688533240\":1478686804063,\"1021170658110\":1478686417098,\"1021260574310\":1478686804035,\"1021260574311\":1478686804035,\"1021260574309\":1478686804035,\"1021260574314\":1478686804035,\"1021260574315\":1478686804035,\"1017165101685\":1478686804020,\"1022022753530\":1509788624463,\"1021260574318\":1478686804035,\"1021260574319\":1478686804035,\"1019963970340\":1478686804021,\"1021260574316\":1478686804035,\"1021260574317\":1478686804035,\"1022172436407\":1478686417013,\"1021700443036\":1478686804046,\"1023627050350\":1509788624612,\"1023627050349\":1509788624612,\"1023627050354\":1509788624550,\"1023627050358\":1509788624553,\"1023627050356\":1509788624550,\"1023627050370\":1509788624540,\"1023627050369\":1509788624540,\"1023627050374\":1509788624540,\"1023627050373\":1509788624540,\"1021354288146\":1465470268229,\"1021354288148\":1465470268229,\"1023627050383\":1509788624567,\"1023627050382\":1509788624540,\"1023627050380\":1509788624540,\"1023502918911\":1509788624940,\"1022004927840\":1478686417158,\"1022220920899\":1480585069090,\"1021831643325\":1478686417256,\"1021831643327\":1478686417256,\"1021330040146\":1465470268219,\"1021330040145\":1465470268219,\"1025322373333\":1509788624309,\"1022897111110\":1509788667836,\"1022897111106\":1509788667889,\"1021990640197\":1478686417301,\"1022105064213\":1478686417012,\"1025620157082\":1509788624431,\"1025627890977\":1509788624866,\"1023094644703\":1509788624419,\"1025367332426\":1509788624304,\"1005662850250\":1480585069065,\"1021976877164\":1509788625080,\"1021951581175\":1478686417010,\"1021976877162\":1509788625080,\"1024185408707\":1509788624183,\"1024185408709\":1509788624184,\"1023095824267\":1509788624995,\"267740626\":1478686804050,\"1023095824257\":1509788624995,\"1743850945\":1444487341740,\"1021976877129\":1509788625080,\"4890380618\":1509788624163,\"1021976877130\":1509788625080,\"1023095824272\":1509788624995,\"1021848944675\":1509788624399,\"1024185408666\":1509788624184,\"1012134169932\":1478686417025,\"1021588910558\":1509788624397,\"1021782363222\":1509788624399,\"1024185408664\":1509788624184,\"1021049950713\":1478686417232,\"1023939120428\":1509788625006,\"1020918225372\":1509788624940,\"1024185408668\":1509788624184,\"1022491196318\":1478943089490,\"1024185408657\":1509788624185,\"1024887999153\":1509788624426,\"1021925885217\":1478686417055,\"1024185408662\":1509788624184,\"1024185408661\":1509788624185,\"1024185408655\":1509788624183,\"1025090111130\":1509788624292,\"1021976877092\":1509788625081,\"1021976877093\":1509788625081,\"1020136648278\":1480585069064,\"1017228148020\":1478686804049,\"1010024530092\":1491634246527,\"1022169158795\":1478686417063,\"1024313202524\":1509788624926,\"1010024530095\":1491634246527,\"1024185408696\":1509788624183,\"1025798552785\":1509788625113,\"1024185408701\":1509788624184,\"1025798552787\":1509788625106,\"1025798552786\":1509788625122,\"1024185408691\":1509788624184,\"1024185408690\":1509788624184,\"1024185408688\":1509788624184,\"1024185408693\":1509788624185,\"1023020194368\":1509788625083,\"1024185408683\":1509788624184,\"1024185408681\":1509788624184,\"1024185408680\":1509788624184,\"1022312803340\":1478686417287,\"1024185408685\":1509788624184,\"1021019542293\":1478686417035,\"1024185408679\":1509788624184,\"1017165101392\":1478686804020,\"1024185408676\":1509788624184,\"1021260574130\":1478686804054,\"1021260574131\":1478686804054,\"1022066531719\":1478686417060,\"1004773415747\":1478686804027,\"1021260574132\":1478686804054,\"1017228148194\":1478686804049,\"1016688532796\":1478686804063,\"1021976877296\":1509788625080,\"1000037268666\":1478686417021,\"1021976877294\":1509788625080,\"1022266665368\":1478686417197,\"1021184157982\":1478686417098,\"1023095824132\":1509788624995,\"1021860348376\":1509788624394,\"1023095824135\":1509788624995,\"1023095824128\":1509788624995,\"1019761067069\":1509788624315,\"1023095824153\":1509788624995,\"1023095824152\":1509788624995,\"1021976877252\":1509788625080,\"1019192878837\":1509788624298,\"1023095824148\":1509788624995,\"1021976877253\":1509788625080,\"1023095824150\":1509788624995,\"1023095824144\":1509788624995,\"1021902423052\":1509788625082,\"1021902423053\":1509788625082,\"1009848513920\":1491634246513,\"1025050788837\":1509788624461,\"1021902423054\":1509788625082,\"1025385420695\":1509788625169,\"1021902423055\":1509788625082,\"1024785249246\":1509788624434,\"1025792916514\":1509788624182,\"1025050788845\":1509788624461,\"1025050788843\":1509788624461,\"1017228148134\":1478686804033,\"1024785249227\":1509788624440,\"1025447930703\":1509788624824,\"1025050788849\":1509788624461,\"1008738613180\":1444487341761,\"1025050788862\":1509788624461,\"1021118764378\":1478686417233,\"1021902423056\":1509788625082,\"1025792916532\":1509788624182,\"1021967833097\":1478686417010,\"1021967833101\":1478686417010,\"1025524084729\":1509788624431,\"1024785249267\":1509788624510,\"1025721613251\":1509788624822,\"1025524084728\":1509788624428,\"1025721613250\":1509788624832,\"1025721613249\":1509788624828,\"1025524084730\":1509788624425,\"1021354551160\":1465470268231,\"1025524084733\":1509788624407,\"1021976877200\":1509788625080,\"1021354551162\":1465470268232,\"1021354551163\":1465470268232,\"1025721613252\":1509788624616,\"1021779086554\":1478686417052,\"1017228148121\":1478686804033,\"1024785249259\":1509788624453,\"1022459602250\":1478686417072,\"1010024529976\":1491634246521,\"1024785249263\":1509788624453,\"1025050788819\":1509788624461,\"1022342029902\":1478686417069,\"1025792916510\":1509788624182,\"1010024529978\":1491634246521,\"1024785249261\":1509788624452,\"1024785249260\":1509788624510,\"1025524084713\":1509788624542,\"1025524084712\":1509788624541,\"1025524084715\":1509788624524,\"1025524084714\":1509788624537,\"1022252378386\":1509788624175,\"1022252378391\":1509788624175,\"1022252378389\":1509788624176,\"1022252378392\":1509788624176,\"1021357696593\":1478686417104,\"1021976877418\":1509788625080,\"1022252378372\":1509788624175,\"1021976877419\":1509788625080,\"1022252378377\":1509788624175,\"1025332859245\":1509788667581,\"1022252378376\":1509788624175,\"1022252378381\":1509788624175,\"1023095824011\":1509788624993,\"1017165101059\":1478686804020,\"1023095824001\":1509788624993,\"1021495721507\":1478686417046,\"1022002569177\":1478686417265,\"2086475634\":1478686417024,\"1012406014912\":1478686417074,\"1021976877387\":1509788625080,\"1023095824021\":1509788624993,\"1022754376510\":1509788624185,\"1022269024299\":1478686804065,\"1019527629638\":1509788624315,\"1025515826733\":1509788624340,\"1023095824111\":1509788624995,\"1021939260410\":1478686417143,\"1021431757240\":1478686417241,\"1023605815297\":1509788625168,\"1023095824106\":1509788624995,\"1025569563410\":1509788624349,\"1023095824100\":1509788624995,\"1023210903485\":1509788625042,\"1000037268837\":1478686417021,\"1023095824125\":1509788624995,\"1020823979623\":1478686416989,\"1023095824118\":1509788624995,\"1157967451\":1478950494921,\"1022754376537\":1509788624185,\"1023095824115\":1509788624995,\"1021558239762\":1509788624405,\"1024934529367\":1509788624418,\"1024934529366\":1509788624418,\"1024934529361\":1509788624418,\"4780160911\":1509788624162,\"1024934529368\":1509788624418,\"1021976877331\":1509788625080,\"1023095824093\":1509788624995,\"1023791936861\":1509788624961,\"1019963838731\":1478686804021,\"1023932042369\":1491634246530,\"1023932042368\":1491634246530,\"1022442300887\":1478686417214,\"1024934529354\":1509788624418,\"1010024530251\":1491634246521,\"1021623908077\":1509788624396,\"1021680520066\":1509788624421,\"1023932042366\":1491634246530,\"1016301734704\":1480585069065,\"1024313464490\":1509788624926,\"1008734156354\":1478686804034,\"1022014758824\":1478686417160,\"1008734156353\":1478686804034,\"1022014758825\":1478686417160,\"1021437786394\":1509788624399,\"1023949079405\":1509788667493,\"1023095823885\":1509788624996,\"1023095823884\":1509788624996,\"1022103490901\":1478686417181,\"1023095823880\":1509788624996,\"1023095823883\":1509788624996,\"1021976877531\":1509788625080,\"1023095823876\":1509788624996,\"1023095823878\":1509788624996,\"1021197922147\":1509788624171,\"1012716642777\":1509788624366,\"1023095823874\":1509788624996,\"1025540599201\":1509788624302,\"1025285020907\":1509788624329,\"1023094644321\":1509788624193,\"1025798552949\":1509788624542,\"1025798552948\":1509788624537,\"1025711258122\":1509788624345,\"1023095823982\":1509788624993,\"1023095823976\":1509788624993,\"1025798552947\":1509788624540,\"1023095823972\":1509788624993,\"1023095823997\":1509788624992,\"1023095823994\":1509788624992,\"1023095823985\":1509788624992,\"1001351761409\":1444487341700,\"1665206434\":1444487341729,\"1021966392059\":1478686417056,\"1023095823946\":1509788624993,\"1008734156351\":1478686804034,\"1023095823941\":1509788624993,\"1008891170202\":1478686804025,\"1020816901738\":1478686417078,\"1022220921369\":1480585069090,\"1023095823936\":1509788624992,\"1018992339886\":1509788624353,\"1021925753991\":1478686804057,\"1023095823964\":1509788624993,\"1023095823967\":1509788624993,\"1023095823953\":1509788624993,\"1024934530613\":1509788624531,\"1024934530615\":1509788624531,\"1024934530609\":1509788624531,\"1024934530608\":1509788624531,\"1024934530611\":1509788624531,\"1024934530610\":1509788624531,\"1024934530618\":1509788624531,\"1021901767404\":1509788624394,\"1024887082238\":1509788625023,\"1024934530605\":1509788624531,\"1024934530604\":1509788624531,\"1022315817527\":1478686417287,\"1023572131159\":1509788624974,\"1024961267900\":1509788624970,\"1010091901671\":1491634246522,\"1318658736\":1509788625016,\"1021500832497\":1478686417112,\"1025573233710\":1509788624338,\"1021500832495\":1478686417112,\"309689926\":1491634246534,\"1025517136204\":1509788624293,\"1013050749521\":1478686804064,\"1001845501452\":1478686417018,\"1001845501454\":1478686417018,\"1001845501449\":1478686417018,\"1001845501451\":1478686417018,\"557141375\":1444487341736,\"1001845501446\":1478686417018,\"1019592640723\":1478686804064,\"1001845501440\":1478686417018,\"1024134553487\":1509788625015,\"1001845501441\":1478686417018,\"1019592640725\":1478686804064,\"1019592640726\":1478686804064,\"1001845501443\":1478686417018,\"1001845501465\":1478686417018,\"1001845501467\":1478686417018,\"1001845501458\":1478686417018,\"1025469296139\":1509788624362,\"1022203620505\":1509788624325,\"1022203620504\":1509788624325,\"1001845501480\":1478686417018,\"1021014955454\":1478686417001,\"1001845501476\":1478686417018,\"1022203620498\":1509788624325,\"1016866516337\":1478686804019,\"1022203620497\":1509788624325,\"1022203620496\":1509788624325,\"1001845501472\":1478686417018,\"1022203620502\":1509788624325,\"1022203620501\":1509788624325,\"1022203620500\":1509788624325,\"1022203620491\":1509788624325,\"1022203620488\":1509788624326,\"1022203620495\":1509788624325,\"1022203620494\":1509788624325,\"1022203620493\":1509788624326,\"1024887082143\":1509788624467,\"1022203620492\":1509788624325,\"1022203620483\":1509788624326,\"1022203620482\":1509788624326,\"1022203620486\":1509788624325,\"1022203620485\":1509788624325,\"1022203620484\":1509788624325,\"1021983039106\":1478686417152,\"1022203620474\":1509788624325,\"1021663359885\":1509788624515,\"1013170670018\":1478686804049,\"1022203620479\":1509788624325,\"267740019\":1478686804050,\"1022203620477\":1509788624325,\"1022203620476\":1509788624325,\"1022203620466\":1509788624325,\"1022203620464\":1509788624324,\"1024528082626\":1509788625027,\"1022287898977\":1478686417286,\"1024673185596\":1509788624419,\"1024673185585\":1509788624816,\"1024383774324\":1509788624327,\"1000051555326\":1478686417021,\"1022240976390\":1478686417066,\"1022240976393\":1478686417066,\"1021925753792\":1478686804057,\"1025515825628\":1509788624339,\"1022240976407\":1478686417066,\"1021707914912\":1478686417122,\"1021295044039\":1478686417102,\"1024934530813\":1509788624418,\"1021182193424\":1478686417098,\"1025374015801\":1509788624305,\"1024205986655\":1509788624185,\"1021426777589\":1478686417044,\"1021922739032\":1478686417141,\"1018397028664\":1480585069072,\"1024393342611\":1509788667496,\"1021386662761\":1478686417006,\"1022452654820\":1478686417296,\"1021922739027\":1478686417141,\"1022292486500\":1478686804040,\"1025796323876\":1509788624274,\"1021707914899\":1478686417122,\"1021779479256\":1478686417128,\"1322197557\":1478686804029,\"1021707914907\":1478686417122,\"1022646908781\":1480585069140,\"1017055125724\":1465470268267,\"1024235607253\":1509788624484,\"1020556865545\":1478686417017,\"1022646908771\":1480585069140,\"1024370142420\":1509788624278,\"1020891880473\":1509788624971,\"1022951899477\":1509788625051,\"1022646908794\":1480585069140,\"1012822293780\":1478686804056,\"1022385284880\":1478686417205,\"1022646908791\":1480585069140,\"767246500\":1491634246508,\"1025050788871\":1509788624461,\"1024785249338\":1509788624508,\"1021438312379\":1509788624817,\"1022293403811\":1478686417068,\"1025050788869\":1509788624461,\"1022438499288\":1478686417213,\"1025050788868\":1509788624461,\"1025485942385\":1509788625088,\"1022220528862\":1478686417281,\"767246483\":1491634246508,\"1024017498613\":1509788667890,\"1022220528851\":1478686417281,\"1024785249329\":1509788624467,\"1007474573293\":1478686804015,\"4649351217\":1478686416965,\"1018553649989\":1478686804065,\"1024673185414\":1509788624194,\"1024934530821\":1509788624418,\"1022370473944\":1478686417290,\"767246473\":1491634246508,\"1024934530823\":1509788624418,\"1024785249320\":1509788624441,\"1024934530817\":1509788624418,\"1025485942383\":1509788625125,\"1025485942382\":1509788625117,\"1022132983304\":1478686417013,\"1024785249312\":1509788624480,\"1024673185515\":1509788624533,\"1021202115018\":1478686417099,\"1024965462296\":1509788624379,\"1024965462298\":1509788624379,\"1000526158241\":1444487341712,\"1024965462295\":1509788624379,\"1024383774629\":1509788624327,\"1017726212233\":1478686804059,\"1008897723206\":1478686804033,\"1021651563158\":1478686417120,\"1024965462277\":1509788624379,\"1024965462276\":1509788624379,\"1021651563164\":1478686417120,\"1024965462275\":1509788624379,\"1024965462274\":1509788624379,\"1024529524536\":1509788624477,\"1024529524541\":1509788624476,\"1024529524540\":1509788624477,\"1024529524529\":1509788624476,\"1024529524531\":1509788624477,\"1021623120124\":1509788624818,\"1024529524533\":1509788624477,\"1022493162708\":1478943089532,\"1000037268315\":1478686417021,\"1024529524525\":1509788624476,\"1022493162703\":1478943089532,\"1024663748398\":1509788625026,\"1022493162691\":1478943089532,\"1023121775451\":1509788625046,\"1010044454592\":1480585069062,\"1022493162694\":1478943089532,\"1021937818961\":1478686804071,\"1008058227099\":1480585069066,\"1025407046249\":1509788624865,\"1025407046248\":1509788624865,\"1010091901764\":1491634246522,\"1021937818967\":1478686804071,\"1025407046252\":1509788624849,\"1021289407730\":1478686417040,\"1022646908903\":1480585069140,\"1022646908902\":1480585069140,\"1025407046241\":1509788624917,\"1022646908900\":1480585069140,\"1021937818972\":1478686804071,\"1008058227093\":1480585069066,\"1022646908899\":1480585069140,\"1025407046247\":1509788624865,\"1023094380623\":1509788625047,\"1025407046246\":1509788624916,\"1021937818974\":1478686804071,\"1022646908897\":1480585069140,\"1008058227083\":1480585069066,\"1021289407727\":1478686417040,\"1008058227087\":1480585069066,\"1023572131025\":1509788624974,\"1025407046258\":1509788624838,\"1000037268399\":1478686417021,\"1021728886462\":1509788624271,\"1021728886463\":1509788624271,\"1025407046256\":1509788624838,\"1021728886457\":1509788624271,\"1021728886458\":1509788624271,\"1025407046260\":1509788624838,\"1019592640824\":1478686804053,\"1019592640825\":1478686804053,\"4971906553\":1509788624162,\"1022646908877\":1480585069140,\"1020294062859\":1465470268286,\"1022646908874\":1480585069140,\"1024333517376\":1509788624570,\"1022646908871\":1480585069140,\"1022646908870\":1480585069140,\"1024973457514\":1509788624173,\"1022646908867\":1480585069140,\"1022243991358\":1478686417283,\"1021680520615\":1509788624535,\"1022257098245\":1478686417067,\"1016819733103\":1478686804039,\"1019254226187\":1509788625079,\"1021721415178\":1478686804047,\"1022646908895\":1480585069140,\"105737215\":1444487341755,\"1021937818978\":1478686804072,\"1021937818979\":1478686804072,\"1022646908892\":1480585069140,\"1022075835694\":1509788624530,\"1021937818982\":1478686804072,\"1024673185310\":1509788625101,\"1021831644348\":1478686417134,\"1021937818985\":1478686804072,\"1021486282756\":1478686417007,\"1021937818987\":1478686804072,\"1022646908883\":1480585069140,\"1021937818989\":1478686804072,\"1025806416892\":1509788667449,\"1010024531726\":1491634246521,\"1024333517348\":1509788624570,\"1024333517347\":1509788624571,\"1024333517346\":1509788624571,\"1016702293254\":1478686804063,\"1021408165262\":1478686417106,\"1024333517359\":1509788624570,\"1024383774496\":1509788624327,\"1024333517358\":1509788624570,\"1017726212115\":1478686804059,\"1024333517357\":1509788624570,\"1020919144099\":1478686417081,\"1024333517356\":1509788624570,\"1010024531714\":1491634246521,\"1025407046203\":1509788624230,\"1024333517366\":1509788624571,\"1025407046200\":1509788624208,\"1024333517363\":1509788624570,\"1010091901717\":1491634246522,\"1013285093698\":1480585069065,\"1024333517361\":1509788624570,\"1021480516033\":1478686417110,\"1024333517360\":1509788624570,\"1024333517375\":1509788624570,\"1024333517374\":1509788624570,\"1025407046193\":1509788624207,\"1024333517372\":1509788624570,\"1025407046199\":1509788624207,\"1024333517371\":1509788624570,\"1024333517370\":1509788624571,\"1025407046155\":1509788624270,\"1021728886468\":1509788624271,\"1021728886469\":1509788624271,\"1025407046153\":1509788624270,\"1021728886470\":1509788624271,\"1022646908812\":1480585069140,\"1021728886471\":1509788624271,\"1021728886464\":1509788624271,\"1022646908810\":1480585069140,\"1021728886465\":1509788624271,\"1025485942450\":1509788624407,\"1024333517314\":1509788624570,\"1024333517313\":1509788624570,\"1021728886467\":1509788624271,\"1024333517312\":1509788624570,\"1021728886476\":1509788624271,\"1020782036573\":1478686416997,\"1022646908806\":1480585069140,\"1021728886478\":1509788624271,\"1022646908804\":1480585069140,\"1021728886472\":1509788624271,\"1016587344978\":1478686804053,\"1021728886473\":1509788624271,\"1022646908801\":1480585069140,\"1021728886474\":1509788624271,\"1022646908800\":1480585069140,\"1021728886475\":1509788624271,\"1025407046171\":1509788624207,\"1024333517335\":1509788624571,\"1025407046170\":1509788624215,\"1009832260523\":1509788625081,\"1024333517332\":1509788624571,\"1021728886480\":1509788624271,\"1024333517329\":1509788624570,\"1022646908824\":1480585069140,\"1025407046163\":1509788624228,\"1025485942447\":1509788624431,\"1021891280995\":1478686417009,\"1022646908822\":1480585069140,\"1024798095278\":1509788624472,\"1024333517341\":1509788624570,\"1022646908818\":1480585069140,\"1024333517338\":1509788624570,\"1024798095273\":1509788624473,\"1012108741493\":1478686417025,\"1024333517336\":1509788624570,\"1024333517287\":1509788624570,\"1024333517283\":1509788624570,\"1018999418867\":1509788624282,\"1024333517280\":1509788624570,\"1024333517295\":1509788624570,\"1024333517294\":1509788624570,\"1024333517293\":1509788624570,\"1024333517291\":1509788624570,\"1020798288561\":1478686417029,\"1024333517289\":1509788624570,\"1024333517303\":1509788624570,\"1024333517302\":1509788624570,\"1024333517301\":1509788624570,\"1022270335730\":1480585069093,\"1024333517297\":1509788624570,\"1024333517296\":1509788624570,\"1024333517310\":1509788624570,\"1024333517306\":1509788624570,\"1024333517305\":1509788624570,\"1024333517304\":1509788624570,\"1021329384759\":1478686804050,\"1022422508518\":1478686417070,\"1022517672978\":1509788625075,\"1022410056379\":1478686417292,\"1022410056373\":1478686417292,\"1024333517278\":1509788624570,\"1024333517277\":1509788624570,\"1024333517276\":1509788624570,\"1020802220581\":1478686417030,\"1019820842154\":1509788624315,\"1021348651960\":1478686417041,\"1020999489260\":1509788624175,\"1021240911889\":1478686417236,\"1023607651684\":1509788625081,\"1021240911887\":1478686417236,\"1024925748463\":1509788624926,\"1024973458330\":1509788624174,\"1024973458328\":1509788624174,\"1021502929118\":1509788624398,\"1020437461057\":1478686804029,\"1021809493534\":1478686417131,\"1021363986562\":1478686416990,\"1021985922461\":1478686416979,\"1022376895732\":1478686804066,\"1022376895731\":1478686804066,\"1020243600859\":1465470268318,\"1024603972030\":1509788624930,\"1025285019947\":1509788624328,\"1022264700373\":1478686417285,\"1022264700370\":1478686417285,\"1023431878441\":1509788624519,\"1014965812948\":1509788624352,\"1024333517127\":1509788624569,\"1024333517126\":1509788624569,\"1024333517124\":1509788624569,\"1024333517123\":1509788624570,\"1024333517122\":1509788624570,\"1024333517129\":1509788624569,\"1024333517128\":1509788624569,\"1025508092758\":1509788624344,\"1020924779913\":1478686417000,\"1024333517095\":1509788624570,\"1024333517093\":1509788624570,\"1024333517092\":1509788624570,\"1024333517091\":1509788624570,\"1024333517090\":1509788624569,\"1022212009661\":1478686417191,\"1024333517103\":1509788624569,\"1024333517101\":1509788624569,\"1024333517100\":1509788624569,\"1024333517099\":1509788624570,\"1014935396604\":1480585069074,\"1021888660332\":1478686417138,\"1024333517097\":1509788624570,\"1021741337253\":1478686417125,\"1024333517096\":1509788624570,\"1024333517111\":1509788624569,\"1025627890192\":1509788624231,\"1024333517110\":1509788624569,\"1021329384903\":1478686804050,\"1024333517107\":1509788624569,\"1025883878728\":1509788667405,\"1022293404507\":1478686417068,\"1024333517117\":1509788624569,\"1020556866523\":1478686417017,\"1021709487255\":1478686417122,\"1016702293532\":1478686804063,\"1021782231237\":1478686417300,\"1024333517112\":1509788624569,\"1024333517060\":1509788624874,\"1025530898541\":1509788624431,\"1025530898540\":1509788624428,\"1022102311936\":1478686417181,\"1025530898543\":1509788624407,\"1025530898542\":1509788624425,\"1024333517071\":1509788624874,\"1024333517070\":1509788624874,\"1024333517069\":1509788624874,\"1024333517068\":1509788624874,\"1018828904686\":1478686804020,\"1024333517067\":1509788624874,\"1006896611760\":1509788624392,\"1024333517066\":1509788624874,\"1024333517065\":1509788624874,\"1024333517064\":1509788624874,\"1024333517072\":1509788624874,\"1021208275671\":1478686804026,\"1016007352613\":1480585069075,\"1019637991629\":1509788624315,\"1024333517038\":1509788624874,\"1024925748658\":1509788624926,\"1024198908134\":1509788667888,\"1024333517034\":1509788624875,\"1024333517033\":1509788624874,\"1024333517046\":1509788624874,\"1024333517045\":1509788624874,\"974869775\":1491634246507,\"1019637991632\":1509788624312,\"1024333517043\":1509788624874,\"1024333517042\":1509788624874,\"392394869\":1444487341730,\"1024333517041\":1509788624874,\"1024333517040\":1509788624874,\"1024333517054\":1509788624874,\"4964960500\":1509788624163,\"1024333517053\":1509788624874,\"1024333517051\":1509788624874,\"1021016790692\":1478686417090,\"1021955776188\":1478686417146,\"1021955776189\":1478686417146,\"1024333517048\":1509788624874,\"1025398788429\":1509788624380,\"1025398788431\":1509788624380,\"1025398788430\":1509788624380,\"1020830138865\":1478686417078,\"1025398788433\":1509788624380,\"1025398788432\":1509788624380,\"1025398788434\":1509788624380,\"1022248185104\":1478686804046,\"1015415243992\":1480585069062,\"1025398788399\":1509788624381,\"1025398788398\":1509788624381,\"1021969145278\":1478686417149,\"1021969145276\":1478686417149,\"1021091893879\":1478686417036,\"1025428140007\":1509788625135,\"1025529588204\":1509788624339,\"1025398788401\":1509788624380,\"1025398788400\":1509788624380,\"1025398788402\":1509788624380,\"1016702293916\":1478686804063,\"1024333516935\":1509788624873,\"1025428139977\":1509788625129,\"1025398788360\":1509788624380,\"1024333516934\":1509788624873,\"1025428139976\":1509788625104,\"1025607443835\":1509788624213,\"1025428139979\":1509788625127,\"1019697104161\":1478686804033,\"1025428139978\":1509788625112,\"1025607443837\":1509788624213,\"1024333516931\":1509788624873,\"1025428139981\":1509788625127,\"1024333516930\":1509788624873,\"1024333516928\":1509788624873,\"1025428139982\":1509788625127,\"1025607443825\":1509788624213,\"1024333516943\":1509788624873,\"1024333516942\":1509788624873,\"1025398788355\":1509788624380,\"1024333516941\":1509788624873,\"1021729016909\":1509788624395,\"1025398788357\":1509788624380,\"1025428139973\":1509788625245,\"1022376895978\":1478686804066,\"1025398788356\":1509788624380,\"1024333516938\":1509788624873,\"1025428139972\":1509788625244,\"1022376895977\":1478686804066,\"1025398788359\":1509788624380,\"1024333516937\":1509788624873,\"1025428139975\":1509788625128,\"1025398788358\":1509788624380,\"1024333516936\":1509788624873,\"1025428139974\":1509788625128,\"1009712068637\":1491634246518,\"1009749030434\":1491634246512,\"1025428139995\":1509788625127,\"1024333516946\":1509788624873,\"1025428139996\":1509788625127,\"1024333516944\":1509788624873,\"1025428139998\":1509788625171,\"1021953941156\":1478686417261,\"1025428139986\":1509788625127,\"1024798094633\":1509788625177,\"1024333516952\":1509788624873,\"1025428139990\":1509788625127,\"1024333516909\":1509788624874,\"1020556866187\":1478686417017,\"1024333516908\":1509788624874,\"1022999871721\":1509788624465,\"1024333516906\":1509788624873,\"1024333516918\":1509788624873,\"1024333516916\":1509788624873,\"1024333516913\":1509788624873,\"1024333516912\":1509788624873,\"1025607443840\":1509788624213,\"1024333516926\":1509788624873,\"1021922738214\":1478686417141,\"1025607443844\":1509788624213,\"1024333516922\":1509788624873,\"1025607443846\":1509788624212,\"1024055378180\":1509788624326,\"1024333516871\":1509788624872,\"1024333516870\":1509788624872,\"1024333516868\":1509788624872,\"1024333516867\":1509788624872,\"1024333516866\":1509788624872,\"1024333516865\":1509788624872,\"1022270335816\":1480585069093,\"1024333516878\":1509788624872,\"1024333516872\":1509788624872,\"1024205461560\":1509788625034,\"1001845501438\":1478686417018,\"1001845501433\":1478686417018,\"1024333516882\":1509788624872,\"1001845501434\":1478686417018,\"1024333516881\":1509788624872,\"1001845501435\":1478686417018,\"1001845501430\":1478686417018,\"1001845501431\":1478686417018,\"1021418126865\":1509788624399,\"1025398788523\":1509788624380,\"1025398788522\":1509788624380,\"1017621610961\":1478686804067,\"1021154799289\":1478686416981,\"1017621610960\":1478686804067,\"1025398788524\":1509788624380,\"1024333516846\":1509788624872,\"1024333516845\":1509788624872,\"1024333516844\":1509788624873,\"1980438983\":1478950494928,\"1024333516843\":1509788624873,\"1024333516840\":1509788624872,\"1024333516855\":1509788624872,\"1024333516854\":1509788624872,\"1024333516852\":1509788624872,\"1024333516851\":1509788624872,\"1022609553276\":1509788625074,\"1024333516849\":1509788624872,\"1017621610957\":1478686804067,\"1024333516863\":1509788624872,\"1017621610956\":1478686804067,\"1017621610959\":1478686804067,\"1017621610958\":1478686804067,\"1024333516860\":1509788624872,\"1022999347377\":1509788624996,\"1021427302140\":1509788624405,\"1024333516857\":1509788624872,\"1025398788483\":1509788624380,\"1025398788484\":1509788624380,\"1020887817893\":1478686417079,\"1021749201891\":1509788624395,\"1024188029250\":1509788624441,\"1022061811903\":1478686417012,\"1021923786877\":1478686417141,\"1024188029258\":1509788624441,\"1024434238949\":1509788624497,\"1024434238947\":1509788624496,\"1024434238944\":1509788624496,\"1023022284808\":1509788625048,\"1024434238959\":1509788624497,\"1024840297947\":1509788624969,\"1024434238954\":1509788624496,\"1024797436494\":1509788625024,\"1024434238964\":1509788624497,\"1024434238962\":1509788624496,\"1025428140223\":1509788624432,\"1024434238960\":1509788624497,\"4935603766\":1509788624165,\"1025428140209\":1509788624511,\"1025428140208\":1509788624510,\"1025771938864\":1509788624503,\"1024434238919\":1509788624497,\"1022270338240\":1480585069093,\"1024556530844\":1509788667843,\"1022270338243\":1480585069093,\"1022928051087\":1509788624301,\"1022270338242\":1480585069093,\"1024434238916\":1509788624497,\"1025428140170\":1509788625136,\"1012134172458\":1478686417223,\"1022270338245\":1480585069093,\"1022270338244\":1480585069093,\"1024434238914\":1509788624497,\"1022270338247\":1480585069093,\"1022270338246\":1480585069093,\"1024434238912\":1509788624496,\"1024434238927\":1509788624497,\"1024501610955\":1509788624851,\"1024212535060\":1509788624276,\"1024434238926\":1509788624497,\"1025428140160\":1509788625127,\"1024556530839\":1509788667830,\"1025428140165\":1509788625127,\"1024501610958\":1509788624851,\"1024501610957\":1509788624851,\"1024501610956\":1509788624851,\"1024434238934\":1509788624496,\"1024501610960\":1509788624851,\"1020790954808\":1478686417077,\"742612085\":1478686417020,\"1024434238929\":1509788624497,\"1024434238943\":1509788624496,\"1024434238941\":1509788624496,\"1008678971682\":1478686804030,\"1024434238940\":1509788624496,\"1024434238938\":1509788624497,\"1021477233762\":1478686417110,\"1022270338235\":1480585069093,\"1022270338234\":1480585069093,\"1020805635184\":1478686416997,\"1020819660070\":1478686417030,\"1022270338237\":1480585069093,\"1022270338236\":1480585069093,\"1022270338239\":1480585069093,\"1025576384922\":1509788624349,\"1021683011978\":1478686417050,\"1025428140226\":1509788624432,\"1182873328\":1478686804033,\"1022422252935\":1478686417210,\"1025428140241\":1509788624432,\"1025428140242\":1509788624432,\"1025428140247\":1509788624437,\"651646548\":1444487341735,\"1024333516643\":1509788624235,\"1024333516640\":1509788624235,\"1024333516655\":1509788624235,\"1024333516653\":1509788624235,\"1024333516648\":1509788624235,\"1024333516663\":1509788624235,\"1024333516662\":1509788624235,\"1025428140088\":1509788625127,\"1025428140091\":1509788625171,\"1020836306667\":1478686417031,\"1022454497140\":1478686417297,\"1024333516660\":1509788624235,\"1020836306669\":1478686417031,\"1024333516657\":1509788624235,\"1024333516670\":1509788624235,\"1024333516669\":1509788624235,\"1008601638182\":1478686804030,\"1024333516667\":1509788624235,\"1025533785825\":1509788624348,\"1025533785824\":1509788624348,\"1024333516664\":1509788624235,\"1025533785826\":1509788624348,\"1025628945520\":1509788624460,\"1021962322431\":1509788624978,\"1025428140040\":1509788625128,\"1025628945523\":1509788624460,\"1025628945522\":1509788624460,\"1021962322426\":1509788624978,\"1025628945524\":1509788624460,\"1021962322424\":1509788624978,\"1025628945526\":1509788624460,\"1025628945529\":1509788624460,\"1024333516622\":1509788624235,\"1025628945528\":1509788624460,\"1024333516621\":1509788624235,\"1025628945531\":1509788624460,\"1021962322420\":1509788624978,\"1025428140035\":1509788625244,\"1024333516620\":1509788624235,\"1021962322421\":1509788624978,\"1020662895742\":1478686804032,\"1024333516619\":1509788624235,\"1020662895743\":1478686804034,\"1020662895740\":1478686804031,\"1024333516617\":1509788624235,\"1025428140038\":1509788625245,\"1021234886152\":1465470268323,\"1021680521400\":1509788624819,\"1024333516628\":1509788624235,\"1024333516624\":1509788624235,\"1024333516638\":1509788624235,\"1025628945512\":1509788624460,\"1024333516637\":1509788624235,\"1025628945515\":1509788624460,\"1545546916\":1478950494925,\"1024333516636\":1509788624235,\"1025628945519\":1509788624460,\"1024333516581\":1509788624235,\"1024333516580\":1509788624235,\"1012840505808\":1478686804062,\"1022240715360\":1478686417194,\"1024333516578\":1509788624235,\"1025428140140\":1509788625127,\"1020880994581\":1478686417079,\"1024333516591\":1509788624235,\"1025428140129\":1509788625128,\"1025428140128\":1509788625245,\"1024333516589\":1509788624235,\"1021208278240\":1478686804026,\"1024333516587\":1509788624235,\"1024333516585\":1509788624235,\"1022768796153\":1509788624304,\"1021207884930\":1478686417038,\"1024333516595\":1509788624235,\"1017582165158\":1478686804020,\"1024333516592\":1509788624235,\"1025428140158\":1509788625127,\"1020294200945\":1465470268296,\"1012840505807\":1478686804062,\"1025428140146\":1509788625127,\"1024333516603\":1509788624235,\"1024333516602\":1509788624235,\"1024848817551\":1509788624959,\"1024333516600\":1509788624235,\"1025902619777\":1509788667452,\"1022451089119\":1478686417296,\"1022047913669\":1478686417011,\"1022292227414\":1478686417068,\"1025864870473\":1509788667410,\"1024237439308\":1509788624176,\"1024237439311\":1509788624176,\"1022240715348\":1478686417194,\"1025428140124\":1509788625244,\"1024333516574\":1509788624235,\"1022240715358\":1478686417194,\"1024333516570\":1509788624235,\"1024333516568\":1509788624235,\"1023569371283\":1509788624516,\"1025767482735\":1509788624844,\"1012134172175\":1478686417223,\"1025628814801\":1509788624548,\"1024002693819\":1491634246532,\"1024002693818\":1491634246532,\"1021263854068\":1478686417101,\"1024333516527\":1509788624235,\"1024333516526\":1509788624235,\"1025428402600\":1509788624422,\"1025428402602\":1509788624422,\"1024333516535\":1509788624235,\"1021598346748\":1509788624401,\"1022238618581\":1509788624946,\"1024333516533\":1509788624235,\"1024333516532\":1509788624235,\"1025767482748\":1509788624844,\"1017168634369\":1478686804016,\"1024333516531\":1509788624235,\"1024333516530\":1509788624235,\"1025767482739\":1509788624844,\"1024333516536\":1509788624235,\"1025749656253\":1509788624350,\"4883173927\":1509788624165,\"1019787936195\":1478686804015,\"1027387770061\":1523788103996,\"1012103763910\":1478686417223,\"1000527726028\":1444487341714,\"1020991882760\":1478686417088,\"1022630914083\":1509788624869,\"1021887618195\":1478686417137,\"1024333516454\":1509788624234,\"1022243861462\":1478686417066,\"1025428402657\":1509788624422,\"1025428402656\":1509788624422,\"149256611\":1444487341731,\"1024333516448\":1509788624234,\"1019093137163\":1509788624373,\"1024333516460\":1509788624234,\"1012134172226\":1478686417223,\"1024333516458\":1509788624234,\"1024333516456\":1509788624234,\"1024333516471\":1509788624234,\"1024333516470\":1509788624234,\"1024333516469\":1509788624235,\"1024333516467\":1509788624235,\"1024333516466\":1509788624234,\"1024028515680\":1509788624517,\"1008057304409\":1478686804034,\"1024333516465\":1509788624234,\"1024333516464\":1509788624234,\"1024333516476\":1509788624234,\"1022430379051\":1478686417211,\"1024333516474\":1509788624234,\"1024333516472\":1509788624234,\"1024333516423\":1509788624234,\"1025428402625\":1509788624422,\"1025428402626\":1509788624422,\"1012134172260\":1478686417223,\"1020640482154\":1478686417028,\"1024333516425\":1509788624235,\"1009848512050\":1491634246513,\"1024333516439\":1509788624235,\"1024333516437\":1509788624235,\"1021143265663\":1478686417234,\"1024333516436\":1509788624234,\"1024333516435\":1509788624235,\"1024333516434\":1509788624234,\"1024333516432\":1509788624235,\"1021631376490\":1509788624440,\"1021143265676\":1478686417234,\"1025428402464\":1509788624422,\"1023933093452\":1491634246517,\"1024352579916\":1509788624177,\"1023251927030\":1509788624479,\"1021143265671\":1478686417037,\"1021143265666\":1478686417234,\"1025100602784\":1509788624172,\"1019723455807\":1478686804022,\"1021287184387\":1478686417101,\"1012134172305\":1478686417223,\"1022438113150\":1478686417295,\"1005848182898\":1509788624385,\"1020850462245\":1478686417031,\"1012134172331\":1478686417223,\"1022127606475\":1478686417063,\"1021665972552\":1478686417248,\"1021312744376\":1509788624940,\"1024300747860\":1509788624279,\"1025749656110\":1509788624350,\"1025626979710\":1509788625005,\"1025428402461\":1509788624422,\"1026506584541\":1515854751199,\"1021166990183\":1465470268307,\"1012134172360\":1478686417223,\"1019356063614\":1509788624313,\"1018797835314\":1478686804032,\"1025428402543\":1509788624422,\"1022754378188\":1509788624185,\"1025428402542\":1509788624422,\"1023749074194\":1491634246518,\"1023527829052\":1509788624325,\"1024293014947\":1509788667903,\"1024313461994\":1509788624176,\"1025627766037\":1509788625115,\"1025627766043\":1509788625087,\"1025732223830\":1509788624942,\"1012134172397\":1478686417223,\"1022229704875\":1478686417065,\"1465067194\":1444487341727,\"1025636810163\":1509788624338,\"1025428402510\":1509788624422,\"1025428402507\":1509788624422,\"1009994783099\":1491634246520,\"1025428402852\":1509788624422,\"1025428402854\":1509788624422,\"1022074129085\":1478686417060,\"1021451936179\":1509788624179,\"1022426972049\":1478686417211,\"1024752478963\":1509788667502,\"1023149034145\":1509788624373,\"1023149034146\":1509788624373,\"1024167708653\":1509788624441,\"1024167708652\":1509788624441,\"1024167708655\":1509788624441,\"1024167708654\":1509788624441,\"1025428402831\":1509788624422,\"1024805169633\":1509788625021,\"1021795210622\":1478686417130,\"1000100702306\":1478686417021,\"1012139285228\":1478686417223,\"1025428402832\":1509788624422,\"1021845018734\":1478686417135,\"1006748898356\":1478686804054,\"1024167708656\":1509788624441,\"2244212610\":1495284743407,\"1025607448664\":1509788624454,\"1022381619222\":1478686417205,\"1018144717982\":1509788625081,\"1025428402943\":1509788624422,\"1020531961597\":1480585069077,\"1022941945499\":1509788624935,\"1022941945501\":1509788624935,\"1020940764740\":1478686417000,\"1020531961594\":1480585069077,\"1022941945488\":1509788624935,\"1020531961590\":1480585069077,\"1020924248403\":1478686417228,\"1020531961587\":1480585069077,\"1025428402901\":1509788624422,\"1020531961583\":1480585069077,\"1025428402896\":1509788624422,\"1020673250892\":1478686804026,\"1021356392440\":1465469681398,\"1006590570259\":1478686804064,\"1022303237225\":1478686417199,\"1024434239331\":1509788624206,\"1022941945470\":1509788624935,\"1000100702402\":1478686417021,\"1024434239336\":1509788624230,\"1021451936056\":1509788624179,\"1023796653427\":1509788625038,\"1021728887228\":1509788624614,\"1022879423019\":1509788625053,\"1021728887229\":1509788624613,\"1015982980923\":1478686804046,\"1021728887230\":1509788624613,\"1025428402745\":1509788624422,\"1021728887225\":1509788624613,\"1021728887226\":1509788624614,\"1025428402692\":1509788624422,\"1025428402689\":1509788624422,\"1020744424272\":1478686417028,\"1024434239310\":1509788624206,\"1022002562655\":1478686417265,\"1024383774786\":1509788624327,\"1021009578665\":1478686417231,\"1024789309555\":1509788624233,\"1021929561570\":1478686417142,\"1024434239317\":1509788624206,\"1025428402711\":1509788624518,\"1022238879862\":1509788624946,\"1024434239325\":1509788624206,\"1021929561577\":1478686417142,\"1022238879866\":1509788624931,\"1025026546181\":1509788624329,\"1022238879868\":1509788624930,\"1021865859546\":1478686417136,\"1019430643942\":1478686804065,\"1019042935194\":1509788624317,\"1012548743863\":1478686804062,\"1021832698846\":1509788624556,\"1024434239276\":1509788624227,\"1021473695407\":1509788624816,\"1025732223064\":1509788624942,\"1021422576568\":1478686417106,\"1021943186101\":1509788624464,\"1012163271570\":1478686417223,\"1025428402813\":1509788624422,\"1024434239294\":1509788624214,\"1025428402812\":1509788624422,\"1021091893216\":1478686417094,\"1021728887236\":1509788624613,\"1021728887237\":1509788624613,\"1025428402759\":1509788624422,\"1021728887238\":1509788624613,\"1021728887232\":1509788624613,\"1021121383835\":1478686417095,\"1021728887233\":1509788624613,\"1021728887234\":1509788624613,\"1021728887235\":1509788624613,\"1021728887244\":1509788624613,\"1022041752683\":1478686417058,\"1021728887245\":1509788624613,\"1000527857176\":1444487341712,\"1022093265793\":1478686417063,\"1020791609835\":1478686417077,\"1021728887241\":1509788624613,\"1021728887243\":1509788624613,\"1019277419442\":1509788624376,\"1021728887248\":1509788624614,\"1021728887249\":1509788624614,\"1021832698850\":1509788624557,\"1024142934453\":1509788667499,\"1021832698851\":1509788624557,\"1021199234594\":1478686417235,\"1025428402782\":1509788624422,\"1025428402776\":1509788624422,\"1021832698858\":1509788624556,\"1022270339040\":1480585069094,\"1021962322527\":1509788624982,\"1012094326381\":1478686417223,\"1021962322525\":1509788624982,\"1021962322521\":1509788624982,\"1001845502276\":1478686417019,\"1025134157095\":1509788624384,\"1001845502277\":1478686417019,\"1025134157094\":1509788624384,\"1021962322519\":1509788624982,\"1001845502278\":1478686417019,\"1025134157093\":1509788624384,\"1021962322516\":1509788624982,\"1001845502279\":1478686417019,\"1021395975191\":1478686417240,\"1025134157092\":1509788624384,\"1021962322517\":1509788624982,\"1001845502275\":1478686417019,\"1023233183373\":1509788624958,\"1013121126726\":1478686804058,\"1022473102302\":1478943089231,\"1025428403120\":1509788624421,\"1025428403122\":1509788624421,\"1298087495\":1478686417024,\"1025134157111\":1509788624384,\"1025134157110\":1509788624384,\"1021962322500\":1509788624182,\"1023606333509\":1509788624215,\"1025134157109\":1509788624384,\"1021962322498\":1509788624183,\"1009994783636\":1491634246520,\"1021962322496\":1509788624182,\"1021962322497\":1509788624182,\"651646454\":1444487341731,\"1009611006537\":1478686804064,\"1025607448892\":1509788624438,\"1022392891546\":1478686417015,\"1025607448880\":1509788624438,\"1023606333557\":1509788624200,\"1021962322542\":1509788624982,\"1019687934461\":1509788624389,\"1022270339029\":1480585069093,\"1025428403089\":1509788624422,\"1022270339028\":1480585069093,\"1025607448876\":1509788624438,\"1022270339031\":1480585069093,\"1021962322536\":1509788624982,\"1022270339030\":1480585069093,\"1025428403090\":1509788624422,\"1025607448878\":1509788624438,\"1022270339033\":1480585069093,\"1022270339032\":1480585069093,\"1021962322535\":1509788624982,\"1022270339035\":1480585069093,\"1022270339034\":1480585069093,\"1022270339037\":1480585069093,\"1021962322531\":1509788624982,\"1022270339039\":1480585069094,\"1022270339038\":1480585069093,\"1013121126675\":1478686804058,\"1024333515940\":1509788625174,\"1826955169\":1444487341749,\"1016871891427\":1509788624977,\"1025428403181\":1509788624421,\"1024333515951\":1509788625174,\"1024333515950\":1509788625173,\"1025428403183\":1509788624421,\"1024333515949\":1509788625174,\"1023606333459\":1509788624213,\"1024333515946\":1509788625174,\"1022056826102\":1478686417173,\"1022284887884\":1478686417198,\"1021962322446\":1509788624978,\"1021962322444\":1509788624978,\"1024453375383\":1509788624975,\"1021962322442\":1509788624978,\"1021286398674\":1478686417004,\"1021962322440\":1509788624978,\"1024333515953\":1509788625173,\"1024333515952\":1509788625173,\"4670842175\":1478686416965,\"1023606333444\":1509788624271,\"1021962322437\":1509788624978,\"1021962322435\":1509788624979,\"1826955141\":1444487341705,\"1001845502252\":1478686417019,\"1021962322494\":1509788624183,\"1024333515911\":1509788625174,\"1021962322495\":1509788624182,\"1025147526146\":1509788624512,\"1001845502255\":1478686417019,\"1021962322493\":1509788624183,\"1025147526144\":1509788624511,\"1001845502248\":1478686417019,\"1021962322490\":1509788624182,\"1001845502249\":1478686417019,\"1023606333498\":1509788624213,\"1023734786258\":1509788624969,\"1024333515904\":1509788625174,\"1025147526155\":1509788624423,\"1001845502245\":1478686417019,\"1024333515918\":1509788625174,\"1021962322485\":1509788624182,\"1024333515916\":1509788625174,\"1001845502241\":1478686417018,\"1025147526158\":1509788624441,\"1024333515914\":1509788625174,\"1001845502243\":1478686417018,\"1001845502268\":1478686417019,\"1025428403157\":1509788624421,\"1024333515927\":1509788625174,\"1001845502269\":1478686417019,\"1021962322479\":1509788624182,\"1025147526162\":1509788624507,\"1024333515926\":1509788625173,\"1001845502270\":1478686417019,\"1025147526161\":1509788624441,\"1024333515925\":1509788625173,\"1001845502264\":1478686417019,\"1024333515923\":1509788625174,\"1001845502266\":1478686417019,\"1025428403155\":1509788624421,\"1025147526164\":1509788624507,\"1001845502260\":1478686417019,\"1001845502263\":1478686417019,\"1025147526168\":1509788624507,\"1001845502258\":1478686417019,\"1021834664325\":1478686417053,\"1025732223478\":1509788624942,\"1024333515928\":1509788625174,\"1024333515878\":1509788625173,\"1025283966147\":1509788624272,\"1025283966146\":1509788624272,\"1025283966149\":1509788624272,\"1021351935547\":1478686417041,\"1025283966153\":1509788624272,\"1022470873958\":1478686417299,\"1025283966156\":1509788624272,\"1024333515882\":1509788625174,\"1020791085185\":1478686804065,\"1023606333648\":1509788624213,\"1024333515880\":1509788625174,\"1025428402997\":1509788624422,\"1024333515892\":1509788625174,\"1021617876562\":1478686417117,\"1023946986629\":1491634246531,\"1024333515891\":1509788625174,\"1021617876563\":1478686417117,\"1023946986628\":1491634246531,\"1025283966166\":1509788624272,\"1024701228938\":1509788625025,\"1021501744458\":1509788624434,\"1025428403006\":1509788624422,\"1023606333635\":1509788624230,\"1024333515896\":1509788625174,\"1021907541282\":1509788624434,\"1024333515846\":1509788625172,\"1025428402945\":1509788624422,\"1024333515843\":1509788625173,\"1024333515842\":1509788625172,\"1023404094698\":1509788624929,\"1024333515840\":1509788625172,\"1024333515855\":1509788625173,\"1024333515854\":1509788625173,\"1024333515852\":1509788625173,\"1022940108985\":1509788624550,\"1024333515851\":1509788625172,\"1025732223271\":1509788624942,\"1011344411543\":1478686804022,\"1025908912049\":1509788667462,\"1025283966192\":1509788624272,\"1025283966194\":1509788624272,\"1024333515860\":1509788625172,\"1024333515858\":1509788625172,\"1024333515857\":1509788625173,\"1020049427701\":1509788624972,\"1024333515856\":1509788625172,\"1022092741204\":1478686417062,\"1021962322589\":1509788624982,\"1021962322584\":1509788624982,\"1021962322583\":1509788624982,\"1024333515822\":1509788625173,\"1021962322581\":1509788624982,\"1024333515820\":1509788625173,\"1020798820216\":1478686417029,\"1023606333586\":1509788624200,\"1021962322579\":1509788624982,\"1011950153675\":1509788625018,\"1024333515818\":1509788625173,\"1024333515817\":1509788625172,\"1021962322574\":1509788624983,\"1024333515831\":1509788625173,\"1025627766546\":1509788624425,\"1025627766545\":1509788624431,\"1024333515829\":1509788625173,\"1021962322573\":1509788624982,\"1024333515828\":1509788625173,\"1021962322571\":1509788624982,\"1021795996914\":1478686417052,\"1021962322568\":1509788624982,\"1024333515824\":1509788625173,\"1024333515839\":1509788625172,\"1025458417954\":1509788624350,\"1024333515838\":1509788625172,\"1025627766552\":1509788624407,\"1024333515836\":1509788625172,\"1021962322562\":1509788624982,\"1021962322563\":1509788624982,\"1025458417946\":1509788624352,\"1021962322621\":1509788624982,\"1025458417951\":1509788624350,\"1025458417948\":1509788624351,\"1021962322617\":1509788624982,\"1826955023\":1444487341749,\"1024210961594\":1509788625242,\"1016977931136\":1478686804049,\"1025428403037\":1509788624422,\"1021962322599\":1509788624983,\"1025283966139\":1509788624272,\"1025428403039\":1509788624422,\"1025749655652\":1509788624351,\"1023606333603\":1509788624200,\"1024333515751\":1509788624468,\"1025428403364\":1509788624421,\"1024333515749\":1509788624469,\"1025428141226\":1509788624433,\"1024333515748\":1509788624469,\"1025428403361\":1509788624421,\"1024333515746\":1509788624469,\"1024333515744\":1509788624469,\"1020776538080\":1478686416997,\"1024333515755\":1509788624468,\"1025428141220\":1509788624433,\"1024333515754\":1509788624468,\"1024333515752\":1509788624469,\"1025428141241\":1509788624432,\"1021540936814\":1478686417047,\"1022195108712\":1478686417189,\"1022098246967\":1478686417181,\"1022098246968\":1478686417181,\"1022098246969\":1478686417181,\"1022356323803\":1478686804071,\"1025399704161\":1509788624298,\"1022356323804\":1478686804071,\"1022195108704\":1478686417189,\"1025428141238\":1509788624427,\"1024333515719\":1509788624469,\"1024333515717\":1509788624469,\"1024333515715\":1509788624468,\"1025003344445\":1509788624346,\"1024333515727\":1509788624469,\"1024333515726\":1509788624469,\"886784240\":1444487341717,\"1024333515724\":1509788624469,\"1021582356428\":1478686417114,\"1024333515722\":1509788624469,\"1024333515720\":1509788624469,\"1024333515732\":1509788624469,\"1024333515731\":1509788624469,\"1022435227960\":1478686417213,\"1024333515730\":1509788624469,\"1025428141212\":1509788624510,\"4883175224\":1509788624165,\"1025428141215\":1509788624510,\"1024333515728\":1509788624469,\"1024333515742\":1509788624469,\"1024333515739\":1509788624469,\"886784229\":1444487341729,\"1022600635247\":1509788624200,\"1024333515736\":1509788624468,\"1024333515686\":1509788624468,\"1024333515685\":1509788624468,\"1022600635154\":1509788624200,\"1024333515683\":1509788624468,\"1024333515680\":1509788624468,\"1020891874626\":1509788624971,\"1021691532594\":1478686417121,\"1021691532595\":1478686417121,\"1020986508080\":1478686417088,\"1013178274451\":1478686804049,\"1021660998410\":1509788624815,\"1024333515655\":1509788624468,\"1024333515653\":1509788624468,\"1021660998451\":1509788624419,\"1024333515652\":1509788624468,\"1024333515651\":1509788624468,\"1024333515649\":1509788624468,\"1025749657592\":1509788624350,\"1024333515648\":1509788624468,\"1024333515659\":1509788624468,\"1838750198\":1478950494926,\"1016491925307\":1465470268235,\"1025428141276\":1509788624437,\"1024333515666\":1509788624468,\"1023306708302\":1509788625101,\"1024333515665\":1509788624468,\"1025428141265\":1509788624432,\"1025428403420\":1509788624421,\"1025428403422\":1509788624421,\"1020918482922\":1478686417081,\"1024333515675\":1509788624468,\"1025428141268\":1509788624466,\"1024333515674\":1509788624468,\"1022075833572\":1509788624530,\"1008869020114\":1509788624928,\"1025270071989\":1509788624532,\"1024313199037\":1509788624927,\"1025270071988\":1509788624532,\"1019422912056\":1478686804019,\"1023995485839\":1491634246529,\"1025270071990\":1509788624531,\"1022416091349\":1478686804071,\"1025270071985\":1509788624532,\"1022416091348\":1478686804071,\"1025270071987\":1509788624532,\"1025270071986\":1509788624532,\"1025270071996\":1509788624531,\"1024333515629\":1509788624468,\"1025270071998\":1509788624532,\"1025270071993\":1509788624531,\"1024333515626\":1509788624468,\"1025270071992\":1509788624531,\"1024333515625\":1509788624468,\"1946353811\":1444487341727,\"1022072425534\":1478686417271,\"1024333515639\":1509788624468,\"1009331041450\":1509788624929,\"1025428403254\":1509788624422,\"1024333515632\":1509788624468,\"1024333515647\":1509788624468,\"1025270071983\":1509788624532,\"1024333515644\":1509788624468,\"1025270071982\":1509788624531,\"1022272958532\":1478686417285,\"1023995485840\":1491634246529,\"1025428403256\":1509788624422,\"1024333515641\":1509788624468,\"1018089143962\":1478686804026,\"1025428403204\":1509788624421,\"1025428403208\":1509788624421,\"1023934010214\":1491634246531,\"1022424873246\":1478686417070,\"1023995485872\":1491634246532,\"1025428403227\":1509788624421,\"1025428403226\":1509788624421,\"1022654115520\":1509788625101,\"1025270072055\":1509788624915,\"1025270072054\":1509788624915,\"1025270072049\":1509788624915,\"1025270072061\":1509788624871,\"1025270072060\":1509788624871,\"1025270072062\":1509788624821,\"1021420479814\":1478686417007,\"1025270072057\":1509788624871,\"1008906769341\":1465470268235,\"1025507963191\":1509788624339,\"1025507963188\":1509788624341,\"1025507963187\":1509788624346,\"1021416809754\":1478686417007,\"1022049092332\":1478686804072,\"1025507963193\":1509788624336,\"1025507963192\":1509788624343,\"405892305\":1478686804029,\"1009994783848\":1491634246520,\"1018546704926\":1480585069063,\"1923810885\":1491634246517,\"1025715578231\":1509788625107,\"1025270072004\":1509788624531,\"1025715578230\":1509788625123,\"1025715578229\":1509788625114,\"1022486734056\":1478943089489,\"1025428403293\":1509788624421,\"1025270072012\":1509788624532,\"1021803076644\":1478686416986,\"395797354\":1444487341706,\"1025428403290\":1509788624421,\"1025270072010\":1509788624531,\"1025715578232\":1509788625087,\"1025428141480\":1509788624510,\"1021260575287\":1478686804046,\"1025428141484\":1509788624510,\"1025428141487\":1509788624433,\"992169514\":1444487341701,\"1021892335717\":1478686417138,\"1019916517921\":1509788624932,\"1021502268346\":1478686417244,\"1022454495991\":1478686417297,\"1020465507718\":1509788624309,\"1020465507719\":1509788624309,\"1020465507717\":1509788624309,\"1025428141498\":1509788624434,\"1020944826615\":1478686417229,\"1025428141489\":1509788624433,\"1021964026939\":1478686417148,\"1022047912766\":1478686417011,\"1020465507720\":1509788624309,\"1020465507721\":1509788624309,\"1025428141494\":1509788624424,\"1021542509920\":1478686417047,\"1021542509925\":1478686417047,\"1022076882255\":1478686417061,\"1022128524880\":1478686417063,\"1015188629552\":1465470268313,\"1019739576566\":1509788624173,\"1025270072068\":1509788624915,\"1025270072071\":1509788624871,\"1025270072070\":1509788624824,\"1025270072064\":1509788624835,\"1025270072067\":1509788624821,\"1025270072066\":1509788624835,\"1022076882258\":1478686417061,\"1022076882262\":1478686417061,\"1025270072074\":1509788624915,\"1025428141548\":1509788624437,\"1025270072179\":1509788624269,\"1020999486954\":1478686417088,\"1025270072189\":1509788624269,\"1025428141536\":1509788624432,\"1020999486952\":1478686417088,\"1025270072190\":1509788624234,\"1025428141538\":1509788624432,\"1025270072185\":1509788624269,\"1025428141541\":1509788624466,\"1024327355144\":1509788625086,\"1020999486956\":1478686417089,\"1001061181021\":1478686417022,\"1025428141513\":1509788624432,\"1024333515397\":1509788624468,\"4887500339\":1509788624165,\"1024333515396\":1509788624468,\"1024333515395\":1509788624468,\"1025428141519\":1509788624432,\"1024333515393\":1509788624468,\"1018509481583\":1509788624426,\"1024333515392\":1509788624468,\"1025428141505\":1509788624427,\"1024333515407\":1509788624468,\"1024333515406\":1509788624468,\"1024333515401\":1509788624468,\"1025428141529\":1509788624432,\"1298085933\":1478686417024,\"1025428141533\":1509788624432,\"1019810350327\":1509788624321,\"1022097722462\":1478686417275,\"1022416091433\":1478686804071,\"1022416091432\":1478686804071,\"1022192880359\":1478686417188,\"1025428141526\":1509788624432,\"1024333515366\":1509788624468,\"1025715577861\":1509788624185,\"1025715577860\":1509788624197,\"1024333515364\":1509788624468,\"1021583011454\":1478686417114,\"1025715577859\":1509788624203,\"1021902953281\":1478686417010,\"1025715577858\":1509788624200,\"1024333515361\":1509788624468,\"1024333515374\":1509788624468,\"1025270072252\":1509788624508,\"1006890195509\":1478686804064,\"1024459535343\":1509788625029,\"1025270072254\":1509788624508,\"1024333515370\":1509788624468,\"1024333515368\":1509788624468,\"1024333515383\":1509788624468,\"1020914550336\":1478686417032,\"1024333515381\":1509788624468,\"1024333515380\":1509788624468,\"1020914550342\":1478686417032,\"1021617875026\":1478686417117,\"1025270072224\":1509788624269,\"1021278272920\":1478686804039,\"1024333515391\":1509788624468,\"1025428403516\":1509788624421,\"1024333515387\":1509788624468,\"1025428403512\":1509788624421,\"1024333515386\":1509788624468,\"1025270072211\":1509788624197,\"1020853082846\":1509788625068,\"1025270072220\":1509788624198,\"1025428403468\":1509788624421,\"1025270072223\":1509788624269,\"1022879423769\":1509788625053,\"1025270072222\":1509788624234,\"1025428403470\":1509788624421,\"1025270072216\":1509788624269,\"1021465436488\":1478686417045,\"1025019335351\":1509788625006,\"1025270072199\":1509788624234,\"1025270072193\":1509788624234,\"1022193797669\":1478686416975,\"1021660998375\":1509788624194,\"1025607450542\":1509788624455,\"1024333515359\":1509788624468,\"888226120\":1478686804051,\"1024333515358\":1509788624468,\"1533882070\":1478686417020,\"1025270072206\":1509788624206,\"1022100212922\":1478686417275,\"1025270072201\":1509788624206,\"1025270072200\":1509788624197,\"1021465436487\":1478686417045,\"1024116066109\":1509788667890,\"1025609416250\":1509788625129,\"1025609416248\":1509788625105,\"1022416091541\":1478686804071,\"1025428403552\":1509788624421,\"1022416091543\":1478686804071,\"1022416091542\":1478686804071,\"1025428403554\":1509788624421,\"1022416091544\":1478686804071,\"1025609416235\":1509788625168,\"1024370275331\":1509788624926,\"1025609416239\":1509788625171,\"1024014227769\":1509788667884,\"1023018354065\":1509788625048,\"1025609416231\":1509788625130,\"1022195370651\":1478686417280,\"1025609416212\":1509788625131,\"1025609416202\":1509788625131,\"1025270072263\":1509788624433,\"1021967828760\":1509788624464,\"1025270072257\":1509788624461,\"1025270072258\":1509788624461,\"1008849096965\":1478686804025,\"951668034\":1478686417020,\"1019899478953\":1509788624353,\"1020294200148\":1465470268296,\"1019174665881\":1509788624375,\"1022212404854\":1478686417191,\"1025399703665\":1509788624294,\"1022406916822\":1478686417207,\"1022212404857\":1478686417191,\"1022507836631\":1509788624936,\"1025876405279\":1509788667478,\"1022406916861\":1478686417208,\"1023319815250\":1509788624288,\"1020972744824\":1509788624940,\"1021885520854\":1478686417044,\"1022406916858\":1478686417208,\"1009220947075\":1478686804030,\"1025876405305\":1509788667478,\"1022406916852\":1478686417208,\"1025609416145\":1509788625143,\"1025876405307\":1509788667478,\"1019206908849\":1464448510786,\"1009220947072\":1478686804025,\"1025876405306\":1509788667478,\"1012153049055\":1478686417073,\"1025607449643\":1509788624229,\"1020896462078\":1478686417032,\"1022406916837\":1478686417208,\"1023319815243\":1509788624288,\"1023319815242\":1509788624289,\"1021847378958\":1478686417135,\"1023319815241\":1509788624288,\"1025876405291\":1509788667478,\"1025876405293\":1509788667478,\"1025876405292\":1509788667478,\"1023319815245\":1509788624280,\"1025876405294\":1509788667478,\"1025609416123\":1509788625165,\"1009862661672\":1491634246513,\"1021260575096\":1478686804046,\"1025609416116\":1509788625165,\"1025876405313\":1509788667478,\"1023306708841\":1509788624534,\"1025609416105\":1509788625243,\"1025876405314\":1509788667478,\"1025428141821\":1509788625244,\"1019380441461\":1509788625018,\"1025428141822\":1509788625245,\"1025876405321\":1509788667400,\"4670578747\":1478686416965,\"1025609416098\":1509788625243,\"1025876405323\":1509788667400,\"1025876405322\":1509788667400,\"1021693105941\":1509788624400,\"1025609416090\":1509788625244,\"1020967502057\":1478686417086,\"1025788060464\":1509788624972,\"1022030873411\":1509788625066,\"1006004685837\":1478686804046,\"1023537002762\":1509788624459,\"1009862661639\":1491634246514,\"1011889860558\":1478686804064,\"1025560657589\":1509788624344,\"1023306708812\":1509788624195,\"1025399703553\":1509788624294,\"1025908386423\":1509788667460,\"1025732224002\":1509788624942,\"1017534324647\":1444487341760,\"1022415174348\":1478686417209,\"1021831913368\":1478686417009,\"1021831913371\":1478686417009,\"1022447679698\":1478686804027,\"1020465507894\":1509788624309,\"1020465507895\":1509788624309,\"1020465507893\":1509788624309,\"1021660998134\":1509788624533,\"1020006828896\":1509788624361,\"1020465507896\":1509788624309,\"1020465507897\":1509788624309,\"1001061180860\":1478686417022,\"1023846454367\":1491634246537,\"1025627765362\":1509788624828,\"1022236521552\":1478686417193,\"372072596\":1491634246519,\"1000363105380\":1478686417024,\"1022452791492\":1478686804067,\"1023306708979\":1509788624818,\"1021885520672\":1478686417044,\"1021600180778\":1478686417048,\"1021616827179\":1478686417117,\"1008351686777\":1478686804023,\"1022079241888\":1478686417178,\"1022966979467\":1509788624224,\"1022966979466\":1509788624224,\"1022966979465\":1509788624224,\"1022966979469\":1509788624224,\"1022966979468\":1509788624224,\"1021739766665\":1478686417124,\"1021684848336\":1478686417050,\"1023753661326\":1509788625082,\"1024313199135\":1509788624927,\"1024096536352\":1509788624325,\"1025428141952\":1509788624437,\"1020756090383\":1478686417076,\"1015638593298\":1465470268314,\"1022645071281\":1509788625061,\"1024313199231\":1509788624927,\"514025959\":1478686417019,\"514025963\":1478686417019,\"1022356323985\":1478686804071,\"1016800594357\":1509788624976,\"1022240847344\":1478686417065,\"1024913954332\":1509788624342,\"1025525133748\":1509788624523,\"1022803137641\":1509788625055,\"1025907731301\":1509788667460,\"514025972\":1478686417019,\"1018044710795\":1509788625080,\"1018706876447\":1465470268242,\"1023995092335\":1491634246529,\"1013081282541\":1478686416978,\"1016800594305\":1509788624976,\"1016800594325\":1509788624976,\"1019607847622\":1509788624315,\"1019607847624\":1509788624313,\"1016800594276\":1509788624976,\"1021941876510\":1478686417260,\"1016800594287\":1509788624976,\"1022356323917\":1478686804071,\"1022425266728\":1478686417070,\"1021721416750\":1478686804047,\"1001061180566\":1478686417022,\"4945432923\":1509788624164,\"1025428141836\":1509788625127,\"1025428141825\":1509788625104,\"1021123873022\":1478686417095,\"1025428141829\":1509788625112,\"1025428141851\":1509788625127,\"1025428141850\":1509788625127,\"4886451444\":1509788624164,\"1025009242133\":1509788624287,\"1022433655452\":1478686417212,\"1022439291252\":1478686417016,\"1020556864201\":1478686417017,\"1001061180637\":1478686417022,\"1022406916876\":1478686417208,\"1022416092037\":1478686804067,\"1025428141948\":1509788624437,\"828327561\":1444487341742,\"1021550505500\":1478686416982,\"1022406916869\":1478686417208,\"1022356323869\":1478686804071,\"1022406916864\":1478686417208,\"1022406916867\":1478686417208,\"1022406916866\":1478686417208,\"1022356323870\":1478686804071,\"1020235873732\":1465470268180,\"1025428141899\":1509788624510,\"1025428141903\":1509788624510,\"1022461311093\":1478686416990,\"1022100213483\":1478686417275,\"4558125148\":1465469681390,\"1025428141914\":1509788624432,\"1012641673530\":1478686417074,\"1002821716938\":1478686417299,\"1025428141918\":1509788624432,\"1025428141907\":1509788624433,\"1025428141908\":1509788624424,\"1022608502564\":1509788624994,\"1025428141911\":1509788624434,\"1024433978851\":1509788624462,\"1020986249057\":1478686416985,\"1003127568369\":1478686804054,\"1020323293384\":1509788625078,\"1019739575793\":1509788624173,\"1000038837809\":1478686417021,\"334851033\":1478686417023,\"1021660997480\":1478686417050,\"1021655885762\":1509788624396,\"1025530511055\":1509788625116,\"1025508097452\":1509788624343,\"1025508097450\":1509788624340,\"1025635496990\":1509788624306,\"1021966256469\":1478686416983,\"1025790291306\":1509788624348,\"1021588120530\":1478686804050,\"1021588120531\":1478686804050,\"1025530511059\":1509788625088,\"1025530511057\":1509788625108,\"1025530511056\":1509788625125,\"1025906025544\":1509788667449,\"1022056304586\":1478686417173,\"1021501746872\":1509788624451,\"1002300974414\":1478686417018,\"1020993326960\":1478686417034,\"1022998829050\":1509788624434,\"1009117662345\":1478686804023,\"1020791083916\":1478686804050,\"1001385189209\":1480585069061,\"1008678969750\":1478686804030,\"1012490159461\":1478686417026,\"122257375\":1444487341748,\"1024681438134\":1509788625025,\"1022477690917\":1509788624513,\"1022966978003\":1509788625159,\"1021354554685\":1465470268232,\"1022966978002\":1509788625159,\"1021354554686\":1465470268232,\"1022395904975\":1478686417070,\"1022966978001\":1509788625159,\"1022966978000\":1509788625159,\"1021354554682\":1465470268232,\"1022477690932\":1509788624271,\"1022477690934\":1509788624613,\"1022477690929\":1509788624918,\"1022966977999\":1509788625159,\"1021312086748\":1509788624942,\"1023317719635\":1509788625103,\"1025473100511\":1509788624360,\"1025473100510\":1509788624360,\"1025473100509\":1509788624360,\"1025473100508\":1509788624360,\"1021312086747\":1509788624940,\"1022541261840\":1509788625063,\"1021354554689\":1465470268232,\"1022018030899\":1478686417057,\"1023317719631\":1509788625103,\"4971909254\":1509788624165,\"1022282267851\":1478686417014,\"1023317719667\":1509788625103,\"1019028126400\":1509788624316,\"1023317719665\":1509788625103,\"1008155738818\":1478686804030,\"1019281353185\":1509788624388,\"1012134174688\":1478686417223,\"1025473100522\":1509788624359,\"1025473100521\":1509788624359,\"1025473100520\":1509788624359,\"1000038837989\":1478686417021,\"1025473100515\":1509788624360,\"1025473100514\":1509788624360,\"1025473100513\":1509788624360,\"1025473100512\":1509788624360,\"1022068097047\":1509788624924,\"1025473100519\":1509788624360,\"1024670952247\":1509788667503,\"1025473100518\":1509788624360,\"1025473100517\":1509788624360,\"1025906025683\":1509788667449,\"1025473100516\":1509788624360,\"1022344786326\":1478686417202,\"1407920883\":1491634246505,\"1012134174225\":1478686417223,\"1021588120236\":1478686804050,\"1021588120237\":1478686804050,\"1020922546808\":1478686417081,\"1023306708995\":1509788624420,\"1021455870549\":1509788624398,\"1020781384351\":1509788624319,\"1010295194594\":1491634246522,\"1021885519027\":1478686417044,\"1022769584246\":1509788624439,\"1018987624901\":1509788624312,\"1023317720003\":1509788625104,\"1020825818186\":1478686417226,\"1025530511317\":1509788624800,\"1023317720009\":1509788625104,\"1025530511314\":1509788624823,\"1025530511313\":1509788624833,\"1024961273342\":1509788624304,\"1021438176252\":1478686417007,\"1021022683181\":1478686417090,\"1023143526791\":1509788625045,\"1021233053602\":1478686417235,\"262895150\":1478686417024,\"1025529593656\":1509788624339,\"1017612572427\":1478686804053,\"1017612572426\":1478686804053,\"1017612572425\":1478686804053,\"1017612572431\":1478686804053,\"1018279849813\":1465470268270,\"1017612572430\":1478686804053,\"1017612572429\":1478686804053,\"1017612572428\":1478686804053,\"1017612572435\":1478686804053,\"1016514336133\":1478686804063,\"1023855369207\":1491634246537,\"1017612572434\":1478686804053,\"1016514336132\":1478686804063,\"1025593291619\":1509788624929,\"1017612572432\":1478686804053,\"1016514336134\":1478686804063,\"1017612572438\":1478686804053,\"1016514336128\":1478686804063,\"1017612572437\":1478686804053,\"1016514336131\":1478686804063,\"1016514336130\":1478686804063,\"1016514336141\":1478686804063,\"1025569436101\":1509788624350,\"1016514336140\":1478686804063,\"1025569436100\":1509788624350,\"1025569436102\":1509788624350,\"1016514336137\":1478686804063,\"1016514336136\":1478686804063,\"1021562691729\":1509788624401,\"1016514336139\":1478686804063,\"1025314111499\":1509788624327,\"1025569436099\":1509788624351,\"1018279849799\":1465470268270,\"1016514336138\":1478686804063,\"1016284046962\":1480585069064,\"1025569173984\":1509788624335,\"1022811135245\":1509788624352,\"1022811921680\":1509788624436,\"1024973462647\":1509788624174,\"1022452791220\":1478686804067,\"4813449052\":1509788624165,\"1025783999528\":1509788624352,\"1016514336209\":1478686804063,\"1016514336208\":1478686804063,\"1016514336211\":1478686804063,\"1016514336210\":1478686804063,\"1022274403698\":1478686417285,\"1016514336196\":1478686804063,\"1016514336199\":1478686804063,\"1016514336198\":1478686804063,\"1016514336195\":1478686804063,\"1016514336194\":1478686804063,\"1016514336205\":1478686804063,\"1016514336204\":1478686804063,\"1016514336207\":1478686804063,\"1016514336206\":1478686804063,\"1016514336201\":1478686804063,\"1016514336200\":1478686804063,\"1020194451808\":1509788625078,\"1016514336202\":1478686804063,\"1020823721179\":1478686417226,\"1020805240251\":1478686417077,\"1021372118940\":1478686417006,\"1021837153066\":1478686416979,\"1025569567323\":1509788624349,\"1025628944080\":1509788624460,\"1021155326838\":1465469681393,\"1021155326844\":1465469681394,\"1000307792925\":1478686417018,\"1025628944090\":1509788624460,\"1019908787627\":1509788625077,\"1025628944093\":1509788624460,\"1363487562\":1444487341738,\"1021155326843\":1465469681394,\"1014487928527\":1478686804016,\"1020984151451\":1478686417034,\"1025373620218\":1509788624304,\"1020891089697\":1478686417032,\"1025628944068\":1509788624460,\"1025628944070\":1509788624460,\"1021421529997\":1509788624817,\"1025628944073\":1509788624460,\"1020984151447\":1478686417034,\"1020984151470\":1478686417034,\"1020984151457\":1478686417034,\"1000038837298\":1478686417021,\"1012120673740\":1478686416993,\"1022198908176\":1478686804049,\"1020984151472\":1478686417034,\"1025628944105\":1509788624460,\"1020984151473\":1478686417034,\"1025394066667\":1509788667826,\"1025628944108\":1509788624460,\"1025428142828\":1509788625244,\"1025428142830\":1509788625245,\"1022966978355\":1509788624860,\"1024313460592\":1509788624179,\"1022966978354\":1509788624860,\"1020917565898\":1478686417081,\"1022966978353\":1509788624860,\"1022966978352\":1509788624860,\"1022966978357\":1509788624860,\"1025428142842\":1509788625113,\"1025428142844\":1509788625127,\"1025428142835\":1509788625128,\"1025428142838\":1509788625129,\"1019324083965\":1509788624302,\"1025628944050\":1509788624460,\"1025628944053\":1509788624460,\"1022517143630\":1480585069099,\"1022517143629\":1480585069099,\"1025628944061\":1509788624460,\"1025628944060\":1509788624460,\"1021680654954\":1478686804027,\"1025628944063\":1509788624460,\"1021524421894\":1478686417113,\"1022231673693\":1478686417193,\"1022517143640\":1480585069099,\"1021312086120\":1509788624932,\"1021312086123\":1509788624940,\"1022517143635\":1480585069099,\"1022897116157\":1509788667843,\"1022897116156\":1509788667843,\"1022517143632\":1480585069099,\"1022517143639\":1480585069099,\"1022517143637\":1480585069099,\"1021281678259\":1478686416972,\"1022517143636\":1480585069099,\"1022015278758\":1509788625067,\"1024245040062\":1509788625016,\"1020599851526\":1478686416979,\"1023835839270\":1491634246504,\"1021417204549\":1478686417241,\"1025524612161\":1509788624973,\"1025524612160\":1509788624998,\"1017132592017\":1478686804021,\"1022966978496\":1509788624449,\"1022966978491\":1509788624449,\"1022192354630\":1478686417188,\"1022966978494\":1509788624449,\"1022966978493\":1509788624449,\"1024737013053\":1509788624520,\"1022966978492\":1509788624449,\"1022966978482\":1509788624563,\"1022452790474\":1478686804067,\"1022966978475\":1509788624563,\"1022462358971\":1478686417218,\"1022966978479\":1509788624563,\"1363487635\":1444487341740,\"1025524612159\":1509788624999,\"1022966978476\":1509788624563,\"1025524612158\":1509788624998,\"1022966978467\":1509788624563,\"1363487641\":1444487341739,\"1478435523\":1478686417020,\"1021841477748\":1478686417257,\"1012312557724\":1478686417026,\"1021920515360\":1509788624465,\"1022435227150\":1478686417213,\"1022032318012\":1478686417166,\"1000038837518\":1478686417021,\"1018829032708\":1478686804023,\"1020738523958\":1478686417075,\"1015430715284\":1480585069075,\"1019908525243\":1509788624321,\"1023934012661\":1491634246531,\"1020882176671\":1478686417079,\"1022029696638\":1478686417058,\"1023626653487\":1509788625144,\"1023819455399\":1509788625082,\"1021956819613\":1478686417147,\"1022466815002\":1478686417218,\"1022323162345\":1478686417200,\"1025791471155\":1509788624428,\"1023317719463\":1509788624197,\"1025791471157\":1509788624425,\"1023317719462\":1509788624197,\"1025791471156\":1509788624431,\"1025791471159\":1509788624406,\"1025533525334\":1509788624347,\"1020851770452\":1478686417078,\"1022210964308\":1478686417191,\"1022296292912\":1478686417199,\"1022384238975\":1478686417290,\"4887500826\":1509788624165,\"1022384238971\":1478686417290,\"1020496962042\":1509788625076,\"1025507442360\":1509788624337,\"1025507442359\":1509788624338,\"1025513078496\":1509788624340,\"1027792909961\":1528271775279,\"1025513078489\":1509788624335,\"1025513078495\":1509788624337,\"1021530844283\":1478686417047,\"1298085425\":1478686417024,\"1022871559288\":1509788624381,\"1023931784332\":1491634246530,\"1023931784334\":1491634246530,\"1010624181877\":1509788625017,\"360279557\":1444487341719,\"651648427\":1444487341745,\"1000038837602\":1478686417021,\"1010581188801\":1478686804034,\"1025297728492\":1509788624566,\"4997861997\":1509788667399,\"1025297728484\":1509788624546,\"1025297728483\":1509788624546,\"1025515831009\":1509788624346,\"1025428142908\":1509788624510,\"248739141\":1478950494908,\"1025507180431\":1509788624339,\"1025507180430\":1509788624340,\"1025428142857\":1509788625127,\"1025297728457\":1509788624612,\"1025297728453\":1509788624613,\"1021920515187\":1509788624465,\"1025428142872\":1509788625135,\"1025297728477\":1509788624546,\"1025297728473\":1509788624553,\"1020851770587\":1478686417078,\"1016758255830\":1478686804031,\"1025428142864\":1509788625127,\"1022265489553\":1478686417285,\"1001061181617\":1478686417022,\"1025297728465\":1509788624565,\"1009321605987\":1478686804064,\"1025428142944\":1509788624436,\"1022369952475\":1509788624300,\"1025428142951\":1509788624437,\"1022089462373\":1478686417180,\"1023877519587\":1491634246512,\"1016871893363\":1509788624977,\"1012641676566\":1478686417074,\"1025841275859\":1509788667452,\"1020688850685\":1509788624933,\"1021502664061\":1478686417046,\"1021803074361\":1478686416986,\"1022252382706\":1509788624176,\"1022245960080\":1478686417066,\"1022252382710\":1509788624176,\"1024330368479\":1509788625007,\"1025428142912\":1509788624510,\"1022125637737\":1478686417183,\"1025428142937\":1509788624432,\"1023299238521\":1509788625041,\"1025428142940\":1509788624432,\"1025428142943\":1509788624466,\"1022317002190\":1478686417068,\"1022452790777\":1478686804067,\"1022245960076\":1478686417066,\"1025428142928\":1509788624427,\"1025428142931\":1509788624432,\"1025428142932\":1509788624432,\"1022737999100\":1509788625057,\"1024501609955\":1509788624443,\"1024434239974\":1509788624262,\"1024501609954\":1509788624443,\"1025297728622\":1509788625246,\"1024501609953\":1509788624443,\"1024434239972\":1509788624262,\"1024501609952\":1509788624443,\"1024434239969\":1509788624262,\"1024434239983\":1509788624262,\"1024434239982\":1509788624262,\"1024434239981\":1509788624262,\"1024434239980\":1509788624262,\"1024434239979\":1509788624262,\"1024434239977\":1509788624262,\"1025478082464\":1509788624543,\"1021354291592\":1465470268230,\"1024434239991\":1509788624262,\"1021354291593\":1465470268230,\"1024434239990\":1509788624262,\"1025297728637\":1509788625133,\"1024434239988\":1509788624262,\"1012163794260\":1478686416994,\"1021354291588\":1465470268230,\"1025297728626\":1509788625244,\"1020922548042\":1478686417081,\"543251524\":1478686417019,\"1026224788253\":1514456869768,\"1013113527967\":1465470268252,\"1024434239958\":1509788624262,\"1024434239957\":1509788624262,\"1024434239956\":1509788624262,\"1024434239955\":1509788624262,\"1024434239954\":1509788624262,\"1024434239967\":1509788624262,\"1358638274\":1491634246519,\"1024434239966\":1509788624262,\"1024434239963\":1509788624262,\"1024501609951\":1509788624443,\"651647720\":1444487341725,\"1019423041163\":1478686804026,\"1021828371738\":1509788624541,\"1025297728555\":1509788624208,\"1025297728552\":1509788624208,\"1025478082536\":1509788625089,\"1025478082533\":1509788625126,\"1025297728547\":1509788624208,\"1022780858049\":1509788624983,\"1020969339450\":1478686804066,\"1024501609911\":1509788624554,\"1024633465939\":1509788625026,\"1022350029940\":1478686417069,\"1020969339451\":1478686804066,\"1024501609910\":1509788624554,\"1020969339448\":1478686804066,\"1025297728569\":1509788624230,\"1024501609909\":1509788624554,\"1326265178\":1444487341731,\"1020969339446\":1478686804066,\"1024501609914\":1509788624554,\"1020969339445\":1478686804066,\"1024501609912\":1509788624554,\"1024856285824\":1509788624949,\"1025478082501\":1509788624429,\"1025297728543\":1509788624208,\"1024322896633\":1509788667836,\"1025297728538\":1509788624209,\"1025297728537\":1509788624215,\"1025297728535\":1509788624228,\"1025297728532\":1509788624228,\"1025297728531\":1509788624270,\"1025297728530\":1509788624271,\"1021678296234\":1509788625199,\"1021348524403\":1478686417104,\"1021678296235\":1509788625200,\"1021362811294\":1478686417042,\"1021678296236\":1509788625200,\"1021678296238\":1509788625200,\"1025478082339\":1509788624824,\"1022077142251\":1478686417271,\"1025478082337\":1509788624829,\"1023728494232\":1509788625082,\"1021678296248\":1509788625200,\"1022118299264\":1478686417276,\"1022454100862\":1478686417297,\"1021678296251\":1509788625199,\"1021678296252\":1509788625199,\"1021678296253\":1509788625199,\"1025050924466\":1509788624457,\"1022359074095\":1478686417203,\"1023725086387\":1491634246523,\"1024501609851\":1509788624216,\"1024935583389\":1509788625006,\"1021678296241\":1509788625200,\"1021678296243\":1509788625200,\"1024501609855\":1509788624216,\"1024501609854\":1509788624216,\"1025285016524\":1509788624328,\"1021678296245\":1509788625199,\"1021356388838\":1465469681398,\"1024501609853\":1509788624216,\"1021678296246\":1509788625200,\"1024501609852\":1509788624216,\"1021678296247\":1509788625200,\"1024935583397\":1509788625006,\"1025297728713\":1509788624868,\"1022263263207\":1478686417067,\"1025297728704\":1509788624839,\"1019596577011\":1509788624940,\"1024935583414\":1509788625006,\"1024935583408\":1509788625006,\"1024935583422\":1509788625006,\"1020136650931\":1480585069064,\"1025869850292\":1509788667715,\"1025297728683\":1509788624865,\"1025297728682\":1509788624916,\"1025297728680\":1509788624917,\"1024935583426\":1509788625007,\"1025478082404\":1509788624186,\"1025478082403\":1509788624205,\"1024935583447\":1509788625006,\"1025297728699\":1509788624839,\"1024935583442\":1509788625006,\"1025297728695\":1509788624839,\"1020805369995\":1478686417030,\"1025297728691\":1509788624839,\"1021510920953\":1478686417047,\"1025297728688\":1509788624849,\"1024935583460\":1509788625006,\"1021678296265\":1509788625200,\"1021678296266\":1509788625200,\"1022416089266\":1478686804065,\"1022454493955\":1478686417297,\"1021476841675\":1478686417109,\"1021678296256\":1509788625200,\"1022312807056\":1478686417200,\"1024935583470\":1509788625007,\"1025593292317\":1509788624929,\"1025297728642\":1509788625133,\"1021678296261\":1509788625200,\"1021678296262\":1509788625200,\"1025810082571\":1509788667457,\"1021979627193\":1478686417151,\"1022055779143\":1478686417270,\"1021678296263\":1509788625200,\"1025297728666\":1509788625169,\"1021476841687\":1478686417109,\"1022182785728\":1478686417063,\"1022055779154\":1478686417270,\"1025142281001\":1509788624566,\"1025297728656\":1509788625133,\"1024434239719\":1509788624261,\"1022092739733\":1478686417062,\"1024434239716\":1509788624261,\"1024434239715\":1509788624261,\"1024434239714\":1509788624261,\"1024434239713\":1509788624261,\"1024434239712\":1509788624261,\"1024434239727\":1509788624262,\"1024434239726\":1509788624261,\"1021301864370\":1478686417238,\"1024434239725\":1509788624261,\"1012544290231\":1478686417223,\"1024434239723\":1509788624261,\"1024434239722\":1509788624261,\"1021120070300\":1478686417037,\"1024434239720\":1509788624261,\"1020831847343\":1478686416998,\"918768592\":1491634246511,\"1022416089412\":1478686804065,\"1000687283\":1491634246518,\"1024434239729\":1509788624262,\"1024434239728\":1509788624261,\"1021509610360\":1478686417007,\"1011851979485\":1444487341758,\"1021113647808\":1465469681399,\"1024434239703\":1509788624261,\"1024434239711\":1509788624262,\"1023317721003\":1509788624421,\"1024434239709\":1509788624262,\"1024434239707\":1509788624262,\"1024973330680\":1509788624288,\"1024434239705\":1509788624262,\"1023317721005\":1509788624421,\"1024434239704\":1509788624262,\"1016433857920\":1478686804017,\"1016433857925\":1478686804017,\"1021606207952\":1509788624817,\"1021183246059\":1478686417098,\"1016433857926\":1478686804019,\"1023418905900\":1509788624285,\"1016433857931\":1478686804016,\"1009744438472\":1491634246512,\"1016433857942\":1478686804016,\"1019241771581\":1509788624282,\"1021608567085\":1478686417008,\"4997862533\":1509788667399,\"1019260644652\":1509788624316,\"1016433857962\":1478686804019,\"1022389614251\":1478686417070,\"1023947117953\":1491634246532,\"1023947117952\":1491634246532,\"1023386925825\":1509788624440,\"811027748\":1509788625016,\"1025906286941\":1509788667461,\"1025906286943\":1509788667461,\"1025906286942\":1509788667463,\"1025530510085\":1509788624428,\"1023829810272\":1509788624940,\"1023947117951\":1491634246532,\"1023947117949\":1491634246532,\"1021059516049\":1478686417002,\"1021445124013\":1478686417242,\"1024434239559\":1509788625215,\"1023829810254\":1509788624940,\"1025530510123\":1509788624524,\"1024434239554\":1509788625215,\"1024332465072\":1509788624206,\"1025530510120\":1509788624543,\"1024434239552\":1509788625215,\"1024434239567\":1509788625216,\"1024434239566\":1509788625215,\"1024434239565\":1509788625215,\"1024434239564\":1509788625215,\"1021989064214\":1478686417154,\"1024919723175\":1509788624432,\"1023829810269\":1509788624939,\"1024919723174\":1509788624429,\"1021879751070\":1478686417136,\"1018546707273\":1480585069063,\"1021989064221\":1478686417154,\"1024919723176\":1509788624426,\"1023829810258\":1509788624940,\"1024434239527\":1509788625215,\"1024434239526\":1509788625215,\"1024434239524\":1509788625216,\"1024434239522\":1509788625216,\"1021988933219\":1478686417154,\"1024434239520\":1509788625215,\"1024434239534\":1509788625215,\"1020616105042\":1478686417075,\"1020616105044\":1478686417075,\"1021857601109\":1478686417053,\"1024434239530\":1509788625215,\"1024208341683\":1509788667888,\"1018928120315\":1509788624368,\"1022374016771\":1478686417069,\"1024434239541\":1509788625215,\"1024434239539\":1509788625215,\"1024434239537\":1509788625215,\"1025818995364\":1509788667457,\"1019454365959\":1478686804021,\"1024434239546\":1509788625215,\"1024434239545\":1509788625215,\"1024434239544\":1509788625215,\"1025472708584\":1509788625126,\"1016959711874\":1478686804063,\"1023324405734\":1509788624925,\"1021627179172\":1478686417049,\"1022452134910\":1478686417215,\"1025530510199\":1509788624201,\"1021854455208\":1509788625012,\"1021854455210\":1509788625012,\"1021384831406\":1478686417006,\"1021854455212\":1509788625012,\"1021854455215\":1509788625012,\"1025627894473\":1509788624210,\"1021854455203\":1509788625012,\"1021854455204\":1509788625013,\"1021854455205\":1509788625013,\"1021854455206\":1509788625012,\"1021854455207\":1509788625012,\"1021854455226\":1509788625012,\"1021854455227\":1509788625012,\"1021854455229\":1509788625012,\"1021854455218\":1509788625012,\"1025883743645\":1509788667451,\"1025010817431\":1509788624461,\"420570929\":1478950494909,\"1021821425539\":1478686417053,\"1022231805710\":1478686417193,\"1020150152046\":1478686804031,\"1022092740519\":1478686417062,\"1022466814228\":1478686417218,\"1021905965306\":1509788624561,\"1021905965307\":1509788624561,\"1020918222297\":1478686417228,\"1021905965305\":1509788624561,\"1021905965309\":1509788624561,\"1009848508684\":1491634246513,\"1025630384875\":1509788624304,\"1023606336778\":1509788624552,\"4997863347\":1509788667398,\"1024501610427\":1509788625148,\"1022039656699\":1478686416990,\"1025283967259\":1509788624272,\"1024501610425\":1509788625148,\"1025283967261\":1509788624272,\"1024501610431\":1509788625148,\"1024501610429\":1509788625148,\"1024501610428\":1509788625148,\"1025283967264\":1509788624272,\"1021287184380\":1478686417101,\"1021854455244\":1509788625012,\"1023946332540\":1491634246531,\"1021854455247\":1509788625012,\"1021854455235\":1509788625012,\"1023064624610\":1509788625073,\"1021854455236\":1509788625012,\"1021854455238\":1509788625012,\"1022701822810\":1509788625059,\"1021287184359\":1478686417101,\"1008612256662\":1478686804030,\"1021468060246\":1478686417108,\"1021468060253\":1478686417108,\"1022871558533\":1509788624378,\"1024529528023\":1509788625175,\"1022259330333\":1478686417067,\"1018893255869\":1509788624971,\"1022124328232\":1478686417276,\"1022076880586\":1478686417061,\"1022076880587\":1478686417061,\"1024529528056\":1509788625175,\"1022076880584\":1478686417061,\"1022076880585\":1478686417061,\"1022076880590\":1478686417061,\"1024256836656\":1509788624491,\"1022202969678\":1478686417280,\"1024256836658\":1509788624491,\"1022076880582\":1478686417061,\"1022076880583\":1478686417061,\"1021468060256\":1478686417108,\"1021468060258\":1478686417108,\"1025515698978\":1509788624336,\"1022452789437\":1478686804027,\"858869235\":1491634246515,\"1021786560786\":1509788624997,\"1021991423308\":1478686417265,\"1020614664038\":1478686417027,\"1021991423318\":1478686417265,\"1021905965147\":1509788624220,\"1021905965150\":1509788624220,\"1021294655468\":1478686416981,\"1021905965148\":1509788624221,\"1022287117062\":1478686417067,\"1021905965149\":1509788624221,\"1023000138128\":1509788624462,\"1010295194715\":1491634246522,\"1020791084037\":1478686804067,\"1025791470093\":1509788624832,\"1025791470092\":1509788624827,\"1025791470095\":1509788624616,\"1025791470094\":1509788624822,\"1022909961680\":1509788624298,\"1024577237581\":1509788667501,\"1021608567621\":1478686417008,\"1023251398994\":1509788625083,\"1024247531071\":1495284743423,\"1022462357585\":1478686417217,\"1022452789578\":1478686804027,\"1619206107\":1478686417020,\"1619206104\":1478686417020,\"1619206115\":1478686417020,\"1024918412905\":1509788624844,\"1021588120811\":1478686804065,\"1021683408537\":1478686417249,\"1020556862057\":1478686417017,\"1009712982030\":1491634246533,\"1008667829803\":1478686804022,\"1021768341828\":1509788624400,\"1020808123270\":1478686417030,\"1025607972255\":1509788625136,\"1021513935239\":1478686417112,\"1021363073677\":1509788624394,\"1025632744240\":1509788624349,\"1024918412972\":1509788625000,\"1020991883418\":1478686417088,\"1012141119333\":1478686416994,\"1020909440479\":1478686416999,\"1021699661093\":1478686417250,\"1708857884\":1444487341748,\"1021300553067\":1478686416982,\"1333866570\":1444487341741,\"1016578166752\":1478686804022,\"1022031399658\":1478686417165,\"1020918221947\":1478686417228,\"1021699661071\":1478686417250,\"1018969669704\":1509788624313,\"1021850653713\":1480585172195,\"1021797046477\":1478686417130,\"1020909440480\":1478686416999,\"1021935456009\":1509788624465,\"1708857892\":1444487341717,\"1024512297310\":1509788624443,\"1024512297309\":1509788624443,\"1024512297308\":1509788624443,\"1024512297307\":1509788624443,\"1025626950859\":1509788624544,\"1024512297306\":1509788624443,\"1025626950856\":1509788624544,\"1025626950849\":1509788624544,\"1025626950848\":1509788624544,\"1021392015178\":1478686416984,\"1024785586435\":1509788624436,\"1025798264485\":1509788624866,\"1014535927747\":1478686804052,\"1024529730167\":1509788624440,\"1021117546384\":1465470268306,\"1014535927748\":1478686804052,\"1025626950885\":1509788624548,\"1024253622912\":1509788624178,\"1022451355160\":1478686417296,\"1025626950880\":1509788625005,\"1021398831280\":1509788624394,\"1021682868645\":1478686417121,\"1021682868642\":1478686417121,\"1021901631165\":1509788624817,\"1023638754619\":1509788624964,\"1022850868746\":1509788625053,\"1021514307142\":1509788624815,\"1021698466126\":1478686417121,\"1022056691682\":1478686417270,\"1010024557230\":1491634246521,\"1006574492675\":1478686804025,\"1020194785503\":1509788625020,\"1025626950846\":1509788624551,\"1021544454228\":1509788624977,\"1025626950845\":1509788625002,\"1022056691654\":1478686417270,\"1025626950839\":1509788624544,\"1025626950837\":1509788624612,\"1022471409816\":1478686417219,\"1025626950832\":1509788624612,\"1021901631094\":1509788624195,\"1024895688950\":1509788624303,\"1021022910924\":1478686417091,\"1024895688945\":1509788624303,\"1019981069293\":1465470268236,\"1021803063418\":1478686804046,\"1022034540104\":1478686417167,\"1021341289710\":1478686417005,\"1024607981370\":1509788667589,\"1019761126944\":1509788624315,\"1022455418692\":1478686417216,\"1021575256717\":1478686417245,\"1021575256719\":1478686417245,\"1021661241312\":1478686804032,\"1021096312373\":1478686417036,\"1021901631030\":1509788624534,\"1023821603005\":1491634246536,\"4951877631\":1509788624154,\"1021575256720\":1478686417245,\"1021575256723\":1478686417246,\"1023638754704\":1509788624964,\"1499060663\":1478686417023,\"1003492156627\":1478686417220,\"1021721404233\":1478686804047,\"1023638754698\":1509788624964,\"1021688857\":1478950494920,\"1022433659942\":1478686417016,\"1025219441212\":1509788625230,\"1025219441215\":1509788625230,\"1024280492598\":1509788625080,\"1022074780035\":1478686417271,\"1025219441203\":1509788625230,\"1021793232510\":1478686417129,\"1022074780039\":1478686417271,\"1025219441195\":1509788625230,\"1025219441197\":1509788625230,\"1025219441199\":1509788625230,\"1022135729651\":1478686417013,\"1025219441184\":1509788625230,\"1025219441187\":1509788625230,\"1025219441189\":1509788625230,\"1025219441191\":1509788625230,\"1021980930877\":1478686417056,\"1025219441190\":1509788625230,\"1020770200424\":1478686417076,\"1021468300684\":1478686417109,\"4959479480\":1509788624155,\"1025219441178\":1509788625230,\"1025219441181\":1509788625230,\"1012492876937\":1478686417026,\"1021468300681\":1478686417108,\"1006867967950\":1509788624388,\"1025219441180\":1509788625230,\"1021315468014\":1465470268208,\"1010024557546\":1491634246521,\"1021315468015\":1465470268208,\"1025219441182\":1509788625230,\"1018182996394\":1465470268238,\"1021468300679\":1478686417108,\"1025219441173\":1509788625230,\"1025219441175\":1509788625230,\"1022073862555\":1509788624426,\"1016092496396\":1509788624941,\"1025626951161\":1509788624270,\"1023149586862\":1509788625044,\"1021315468016\":1465470268208,\"1021260678708\":1478686417101,\"837398736\":1444487341736,\"1021315468017\":1465470268208,\"1016870290407\":1478686804028,\"1025626951157\":1509788624270,\"1025596803969\":1509788624930,\"1024895688996\":1509788624303,\"1017558166174\":1509788624366,\"1024895688993\":1509788624303,\"1022339156354\":1509788624922,\"1022458564334\":1478686417217,\"1025626951048\":1509788624835,\"1024781129745\":1509788624442,\"1022339156367\":1509788624959,\"1024781129744\":1509788624442,\"1022339156366\":1509788624922,\"1024781129747\":1509788624442,\"1024781129746\":1509788624442,\"1022339156363\":1509788624922,\"1024895689000\":1509788624303,\"1022339156362\":1509788624922,\"1024781129750\":1509788624442,\"1022339156371\":1509788624923,\"1025626951065\":1509788624843,\"1022339156368\":1509788624923,\"1012127704624\":1478686417025,\"1012583711488\":1478686417223,\"1024895688965\":1509788624303,\"1024895688973\":1509788624303,\"1020777278101\":1478686417076,\"1022394600176\":1509788624957,\"1024895688981\":1509788624303,\"1024895688989\":1509788624303,\"1021655473668\":1509788624404,\"1021497923435\":1478686417046,\"1022467346080\":1478686417299,\"1021901631355\":1509788625101,\"1503254537\":1444487341706,\"1010024557404\":1491634246521,\"1010024557405\":1491634246527,\"1025626951004\":1509788624998,\"1010024557403\":1491634246527,\"1019863102950\":1509788625076,\"1010024557397\":1491634246527,\"1025626950998\":1509788625002,\"1010024557398\":1491634246521,\"1023791849419\":1509788624177,\"1019863102947\":1509788625076,\"1025626950993\":1509788625002,\"1000527721812\":1444487341714,\"1021410496901\":1478686417106,\"1022339156332\":1509788624922,\"1019863102929\":1509788624354,\"1022339156328\":1509788624923,\"1021175350166\":1465470268187,\"1019009286386\":1509788624389,\"1020362822401\":1465470268302,\"1019009286387\":1509788624314,\"1022339156342\":1509788624923,\"1022339156340\":1509788624922,\"1022339156338\":1509788624922,\"1022339156336\":1509788624923,\"1022054332024\":1478686416977,\"1303366676\":1444487341742,\"1022339156348\":1509788624922,\"1022339156346\":1509788624923,\"1023659464587\":1509788625110,\"1022339156344\":1509788624922,\"1012132816632\":1478686417025,\"1022450962414\":1478686417215,\"1603264092\":1478686804024,\"1024244578445\":1509788624948,\"1023150373263\":1509788625045,\"1020876501503\":1509788624390,\"4891976312\":1509788624154,\"1023969585225\":1509788624176,\"1023969585224\":1509788624176,\"1025626950973\":1509788624916,\"1023969585226\":1509788624176,\"1022074780030\":1478686417271,\"1023969585229\":1509788624176,\"1023969585228\":1509788625016,\"1023969585230\":1509788624176,\"1020876501486\":1509788624390,\"1020876501487\":1509788624390,\"1025626950966\":1509788624916,\"1020876501484\":1509788624390,\"1020876501485\":1509788624390,\"1020876501483\":1509788624390,\"1023969585223\":1509788624177,\"1023638755185\":1509788624965,\"1023638755189\":1509788624965,\"1025882151357\":1509788667406,\"1022204412618\":1509788624920,\"1023638755190\":1509788624965,\"1021698466588\":1478686417121,\"1025626951364\":1509788625128,\"1025626951361\":1509788625128,\"1025882151350\":1509788667465,\"1025626951391\":1509788625167,\"1023638755168\":1509788624965,\"1023638755171\":1509788624964,\"1010076200900\":1491634246534,\"1021714849802\":1509788624193,\"1023638755173\":1509788624964,\"1020831149247\":1478686416998,\"1020876501504\":1509788624390,\"1025626951385\":1509788625136,\"1023638755179\":1509788624964,\"1023638755178\":1509788624964,\"1019934407203\":1478686804053,\"1022457384388\":1480585069113,\"1023638755155\":1509788624964,\"1022136385242\":1478686417184,\"1023638755156\":1509788624965,\"1022719007748\":1509788624268,\"1023638755158\":1509788624965,\"1000860386605\":1478686804059,\"1021690471352\":1478686417121,\"1023638755165\":1509788624965,\"1023638755166\":1509788624965,\"1020876501538\":1509788624390,\"1022150934053\":1478686417063,\"1021831768888\":1478686417134,\"1025219441016\":1509788624501,\"1025219441019\":1509788624501,\"1025219441018\":1509788624501,\"1010472306296\":1444487341757,\"1025219441021\":1509788624501,\"1025219441020\":1509788624501,\"1010472306299\":1444487341757,\"1025219441022\":1509788624501,\"1021948555845\":1478686417145,\"1025219441008\":1509788624501,\"1019704371642\":1509788624354,\"1598283023\":1444487341738,\"1010472306289\":1444487341757,\"1025219441012\":1509788624501,\"1000860386634\":1478686804059,\"1025219441015\":1509788624501,\"1000860386644\":1478686804059,\"1023638755105\":1509788624964,\"1000860386645\":1478686804059,\"1023638755104\":1509788624964,\"1025626951325\":1509788625244,\"1023638755106\":1509788624964,\"1023638755108\":1509788624964,\"1000860386642\":1478686804059,\"1023638755111\":1509788624964,\"1025626951321\":1509788625245,\"1023638755110\":1509788624964,\"1024719000757\":1509788624342,\"1025219440992\":1509788624501,\"1000860386655\":1478686804059,\"1000860386648\":1478686804059,\"1025219440997\":1509788624501,\"1000860386651\":1478686804059,\"1025219440984\":1509788624501,\"1023638755091\":1509788624964,\"1023638755090\":1509788624964,\"1023638755093\":1509788624964,\"1025219440988\":1509788624501,\"1023638755095\":1509788624964,\"1020991059275\":1478686417088,\"1024132379023\":1509788624324,\"1023638755098\":1509788624964,\"1023638755101\":1509788624964,\"1023638755100\":1509788624964,\"1025219440983\":1509788624501,\"1009704867229\":1478686804046,\"1025219440982\":1509788624501,\"1025626951356\":1509788625128,\"1025626951353\":1509788625110,\"1025626951348\":1509788625002,\"1023900510123\":1491634246510,\"1023638755313\":1509788624963,\"1023638755312\":1509788624963,\"1023638755315\":1509788624963,\"1018182996486\":1465470268238,\"1021811845840\":1478686417131,\"1025626951241\":1509788624210,\"1006890249528\":1478686804015,\"1021714849945\":1509788624419,\"1015231800035\":1480585069068,\"1021831506819\":1478686417256,\"1025626951238\":1509788624229,\"1023638755320\":1509788624963,\"1021917883754\":1509788624827,\"1021253207318\":1478686417237,\"1023638755309\":1509788624963,\"1023638755311\":1509788624963,\"1021714849982\":1509788624814,\"1023638755283\":1509788624963,\"1023638755286\":1509788624963,\"1023638755289\":1509788624963,\"1021743556329\":1509788624400,\"1021497922630\":1478686417244,\"1010472306316\":1444487341757,\"1025219441033\":1509788624501,\"1023638755265\":1509788624963,\"1010472306318\":1444487341758,\"1025219441034\":1509788624501,\"1010472306315\":1444487341757,\"1023638755270\":1509788624963,\"1022733950434\":1509788625074,\"1010472306306\":1444487341757,\"1023638755279\":1509788624963,\"1025191522306\":1509788624971,\"1023638755251\":1509788624963,\"1025626951178\":1509788624214,\"1022988627195\":1509788624544,\"1013065014593\":1478686416977,\"1025626951171\":1509788624214,\"1020294007907\":1465470268280,\"1023638755233\":1509788624963,\"1023638755232\":1509788624963,\"1023638755234\":1509788624963,\"1021638827090\":1478686417049,\"123831735\":1508316495865,\"1023638755239\":1509788624963,\"1019166050621\":1478686804027,\"1023638755238\":1509788624963,\"1025626951191\":1509788624998,\"1021736478217\":1509788624395,\"1021278374627\":1478686417237,\"4861174623\":1509788624154,\"1022107678803\":1478686417275,\"1012132816338\":1478686417025,\"1760160257\":1478686804024,\"1025626951206\":1509788624205,\"1025798263893\":1509788624848,\"1023638755229\":1509788624963,\"1025626951200\":1509788624205,\"1018182996595\":1465470268238,\"982628454\":1491634246505,\"1025626951218\":1509788624205,\"1024388825531\":1509788624383,\"1024388825530\":1509788624383,\"1024512297553\":1509788624560,\"1023638754913\":1509788624964,\"1021262251014\":1478686804039,\"657695776\":1444487341716,\"1024512297548\":1509788624560,\"1023638754914\":1509788624964,\"1024512297547\":1509788624560,\"1023638754917\":1509788624964,\"1024512297546\":1509788624560,\"1023638754916\":1509788624964,\"1024512297544\":1509788624560,\"1023638754925\":1509788624964,\"1023638754924\":1509788624964,\"1023638754897\":1509788624964,\"1021661109371\":1478686804054,\"1023638754906\":1509788624964,\"1024067235051\":1509788667496,\"1023638754911\":1509788624964,\"1020868637505\":1478686417227,\"1021102472618\":1509788624309,\"1022757937864\":1509788625057,\"1021922208924\":1509788624466,\"1023638754894\":1509788624964,\"1013800208542\":1478686804068,\"1013800208534\":1478686804068,\"4951876717\":1509788624153,\"1024597626210\":1509788624938,\"1022719008110\":1509788624269,\"1023927117173\":1491634246530,\"1023927117172\":1491634246530,\"1021610123013\":1509788624401,\"1022204412846\":1509788624920,\"1022273882061\":1478686417197,\"137857872\":1444487341747,\"1020557860479\":1478686417026,\"1013800208560\":1478686804069,\"1013800208559\":1478686804069,\"1013800208558\":1478686804068,\"1016092495944\":1509788624941,\"1013800208555\":1478686804068,\"1020788680743\":1478686417225,\"1013800208553\":1478686804068,\"1013800208552\":1478686804068,\"1022454107287\":1478686417216,\"1013800208548\":1478686804068,\"1013800208545\":1478686804068,\"1023638755057\":1509788624964,\"1023786343684\":1509788624301,\"1023638755056\":1509788624964,\"1020605834166\":1478686417075,\"1023638755061\":1509788624964,\"1023638755060\":1509788624964,\"1023638755063\":1509788624964,\"1025896701778\":1509788667463,\"1025896701781\":1509788667460,\"1021968085366\":1509788624390,\"1023638755040\":1509788624964,\"1022230758095\":1478686417282,\"1023638755043\":1509788624964,\"1024321125687\":1509788667494,\"1025896701775\":1509788667456,\"1023638755047\":1509788624964,\"1025896701773\":1509788667460,\"1023638755046\":1509788624964,\"1024321125695\":1509788667494,\"1023638755050\":1509788624964,\"1021226075809\":1478686417003,\"1023638755052\":1509788624964,\"1023638755055\":1509788624964,\"1024132378700\":1509788624324,\"1023324307874\":1509788624344,\"1023638755039\":1509788624964,\"1021289646784\":1478686417238,\"1017573371721\":1478686804028,\"1023638754994\":1509788624964,\"1023638754998\":1509788624964,\"1021355708073\":1478686417006,\"1021693223563\":1478686804046,\"1023638754976\":1509788624964,\"1023638754979\":1509788624964,\"1023638754978\":1509788624964,\"1023638754982\":1509788624964,\"1022303110453\":1478686417287,\"1023638754985\":1509788624964,\"1012184459732\":1478686417073,\"1023638754989\":1509788624964,\"1021015833156\":1478686417035,\"1023638754963\":1509788624964,\"1023638754965\":1509788624964,\"1024783489744\":1509788625021,\"1023638754966\":1509788624964,\"1023009469209\":1509788625073,\"1024887825174\":1509788624867,\"1023638754970\":1509788624964,\"1023638754973\":1509788624964,\"1020973888982\":1478686417086,\"1022079499191\":1478686417061,\"1024512297638\":1509788625153,\"1024512297637\":1509788625153,\"1024512297636\":1509788625154,\"1024512297635\":1509788625154,\"1024512297634\":1509788625153,\"1023242648301\":1509788624907,\"1023638753648\":1509788624964,\"1023242648303\":1509788624907,\"1023242648302\":1509788624907,\"1023638753650\":1509788624964,\"1023638753653\":1509788624964,\"1023242648299\":1509788624907,\"1022068096234\":1509788624924,\"1023242648298\":1509788624906,\"1023638753656\":1509788624964,\"1025560628424\":1509788624344,\"1023242648317\":1509788624907,\"1023638753633\":1509788624964,\"1023242648316\":1509788624907,\"1019761650296\":1509788624315,\"1023242648318\":1509788624907,\"1019761650302\":1509788624313,\"1023242648313\":1509788624907,\"1023242648315\":1509788624906,\"1023638753639\":1509788624964,\"1023242648314\":1509788624906,\"1023638753638\":1509788624964,\"1021251896239\":1478686417100,\"1023638753640\":1509788624964,\"1023242648311\":1509788624907,\"1023638753643\":1509788624964,\"1023242648310\":1509788624907,\"1023638753642\":1509788624964,\"1023242648305\":1509788624907,\"1023242648304\":1509788624907,\"1023638753644\":1509788624964,\"1023242648307\":1509788624907,\"1023638753647\":1509788624964,\"1023242648306\":1509788624907,\"1023638753646\":1509788624964,\"1229442407\":1478686417020,\"1016399733480\":1480585069069,\"1229442401\":1478686417020,\"1022079106146\":1478686417177,\"1012100702500\":1509788625016,\"1024625153199\":1509788625163,\"1024088077474\":1509788624467,\"1024625153198\":1509788625163,\"1025993303348\":1514456869773,\"1025593265886\":1509788624929,\"1023638753601\":1509788624966,\"1023638753600\":1509788624966,\"1024625153201\":1509788625163,\"1229442418\":1478686417020,\"1024625153200\":1509788625163,\"1024625153203\":1509788625163,\"1021011115476\":1478686417089,\"1020365313621\":1478686804022,\"1025796952721\":1509788624537,\"1024568527321\":1509788625026,\"1023638753589\":1509788624966,\"4810578675\":1509788624154,\"1023638753592\":1509788624966,\"1021965989196\":1478686417262,\"1023638753595\":1509788624965,\"1021544455276\":1509788625014,\"1022204413060\":1509788624920,\"1023638753597\":1509788624965,\"1023638753596\":1509788624965,\"1021059088254\":1478686417093,\"1023638753599\":1509788624966,\"1023638753598\":1509788624965,\"1020365313599\":1478686804028,\"1023638753570\":1509788624965,\"1023638753572\":1509788624966,\"1023638753577\":1509788624966,\"1020912023464\":1478686417032,\"1025629047026\":1509788624423,\"1023638753582\":1509788624966,\"1021345745021\":1478686417005,\"1022241507034\":1478686417195,\"1523703479\":1478686804024,\"1001544725554\":1478686804064,\"1023638753541\":1509788624965,\"1022646656531\":1480585069087,\"1025593658955\":1509788625001,\"1021770424877\":1478686417052,\"1022719007398\":1509788624268,\"1025593658958\":1509788624428,\"1023062554403\":1509788625048,\"1019203799329\":1478686804032,\"1020419576286\":1478686804028,\"1022185274013\":1478686417278,\"1022248978089\":1509788624485,\"1022646656540\":1480585069087,\"1022646656515\":1480585069087,\"1022646656512\":1480585069087,\"1020805720248\":1478686417030,\"1025593658972\":1509788624847,\"1022646656522\":1480585069087,\"1024161738940\":1509788667562,\"1022021169476\":1509788624824,\"1022646656524\":1480585069154,\"1005500995788\":1478686804061,\"1005500995790\":1478686804061,\"1005500995785\":1478686804061,\"1005500995784\":1478686804061,\"1005500995786\":1478686804061,\"1023043941997\":1509788625048,\"1760160832\":1478686804024,\"1005500995780\":1478686804061,\"1005500995782\":1478686804061,\"1005500995777\":1478686804061,\"1005500995778\":1478686804061,\"1018517757985\":1480585069070,\"1022646656547\":1480585069087,\"1025593659002\":1509788624998,\"1025593659000\":1509788624998,\"1025593659004\":1509788624826,\"1005500995797\":1478686804061,\"137858190\":1444487341743,\"1005500995795\":1478686804061,\"1021672514628\":1509788624400,\"1022442310244\":1478686417214,\"1022238623232\":1509788624941,\"1005500995773\":1478686804061,\"1005500995775\":1478686804061,\"1005500995768\":1478686804061,\"1005500995765\":1478686804061,\"1024662771359\":1509788624862,\"1021340502167\":1465470268223,\"1021191079818\":1478686417098,\"1025530741355\":1509788624834,\"1025530741353\":1509788624829,\"1024662771364\":1509788624862,\"1024662771362\":1509788624862,\"1024662771361\":1509788624863,\"1022282924230\":1478686417198,\"1025530741356\":1509788624823,\"1024662771360\":1509788624862,\"1021958518140\":1509788624178,\"1021933876252\":1478686804068,\"1021933876248\":1478686804068,\"1025710970169\":1509788624307,\"1021933876242\":1478686804068,\"1025530741364\":1509788624800,\"1022238885824\":1509788624931,\"1022238885826\":1509788624933,\"1023561815273\":1509788624531,\"1025616072325\":1509788624929,\"1021831900182\":1478686417134,\"1021831900186\":1478686417134,\"1022185143050\":1478686417013,\"1021831900193\":1478686417134,\"1021860474479\":1478686417053,\"1023638753365\":1509788624965,\"1020063843648\":1509788625081,\"1021122394726\":1478686417095,\"1023638753369\":1509788624965,\"1020444611321\":1478686804066,\"1023638753371\":1509788624965,\"1022051578563\":1478686417269,\"1023638753372\":1509788624965,\"1023638753374\":1509788624965,\"1023638753344\":1509788624965,\"1023638753347\":1509788624965,\"1023638753346\":1509788624965,\"1025628785127\":1509788624186,\"1023638753349\":1509788624965,\"1020613305491\":1478686417027,\"1021179283167\":1478686417098,\"1025628785125\":1509788624197,\"1024625153471\":1509788624225,\"1023638753355\":1509788624965,\"1024625153470\":1509788624225,\"1023638753354\":1509788624965,\"1023638753359\":1509788624965,\"1023638753358\":1509788624965,\"1025909283163\":1509788667456,\"1015231800618\":1480585069068,\"1024625153473\":1509788624225,\"1024625153472\":1509788624225,\"1024625153475\":1509788624225,\"1022518073207\":1509788625065,\"1023638753313\":1509788624965,\"1023638753312\":1509788624965,\"1023638753315\":1509788624965,\"1023638753314\":1509788624965,\"1023638753316\":1509788624965,\"1023638753319\":1509788624965,\"1023638753320\":1509788624965,\"1023638753324\":1509788624965,\"1022207821285\":1478686417191,\"1022956775797\":1509788624194,\"1023638753298\":1509788624965,\"1023638753301\":1509788624965,\"1024461308719\":1509788625029,\"1760161166\":1478686804024,\"1023638753305\":1509788624965,\"1009893091283\":1491634246518,\"1022956775806\":1509788624816,\"1023638753304\":1509788624965,\"1023638753309\":1509788624965,\"1008722336019\":1478686804033,\"1021014260911\":1478686417089,\"1024256376829\":1509788625070,\"1124976243\":1444487341743,\"1022238885823\":1509788624946,\"1022197856976\":1478686417280,\"1023638753520\":1509788624965,\"1023638753522\":1509788624965,\"1022204413256\":1509788624920,\"1013413671240\":1478686804054,\"1023638753531\":1509788624965,\"1024381879435\":1509788624304,\"1023638753505\":1509788624965,\"1023638753507\":1509788624965,\"1023638753506\":1509788624965,\"1023638753509\":1509788624965,\"1023638753513\":1509788624965,\"1021311405975\":1478686417102,\"1023638753516\":1509788624965,\"1023638753519\":1509788624965,\"1022435231917\":1478686417294,\"1009990610283\":1491634246512,\"1009990610286\":1491634246520,\"1009990610285\":1491634246520,\"1024161739149\":1509788667562,\"1023638753501\":1509788624965,\"1009990610279\":1491634246520,\"1023638753502\":1509788624965,\"149785948\":1444487341705,\"1009990610288\":1491634246520,\"1022287118426\":1478686417067,\"1009990610289\":1491634246520,\"1023946384091\":1491634246531,\"1025037512145\":1509788624453,\"1025037512144\":1509788624453,\"1023638753456\":1509788624965,\"1023638753459\":1509788624965,\"1020963533573\":1478686417034,\"1025037512146\":1509788624452,\"1023638753458\":1509788624965,\"1025037512149\":1509788624452,\"1023638753461\":1509788624965,\"1023946384094\":1491634246529,\"1023638753463\":1509788624965,\"1025037512155\":1509788624452,\"1024625153359\":1509788624564,\"1025037512154\":1509788624452,\"1024625153358\":1509788624564,\"1023638753466\":1509788624965,\"1025037512157\":1509788624453,\"1025037512159\":1509788624453,\"1025037512158\":1509788624453,\"1024625153354\":1509788624564,\"1024625153364\":1509788624564,\"1023638753440\":1509788624965,\"1023638753442\":1509788624965,\"1024625153360\":1509788624564,\"1023638753446\":1509788624965,\"1025037512137\":1509788624452,\"1023638753448\":1509788624965,\"1025037512139\":1509788624453,\"1023638753451\":1509788624965,\"1025373845566\":1509788624309,\"1025037512143\":1509788624453,\"1023638753432\":1509788624965,\"1023638753435\":1509788624965,\"1019027638209\":1509788624935,\"1010002144725\":1491634246518,\"1025037512161\":1509788624452,\"1025037512162\":1509788624452,\"1022202182374\":1478686417190,\"1022202182373\":1478686417190,\"1002077279591\":1478686417024,\"1012721208350\":1478686804054,\"1025589989144\":1509788624350,\"1022611136172\":1509788625062,\"1022448076909\":1480585069079,\"866760077\":1491634246508,\"1023132283301\":1509788625144,\"1022448076908\":1480585069079,\"1022448076911\":1480585069079,\"1022448076910\":1480585069079,\"1022392110487\":1478686417291,\"1303366530\":1444487341723,\"1025711101925\":1509788624304,\"1022448076920\":1480585069079,\"1022448076923\":1480585069079,\"1022448076927\":1480585069079,\"1022451484684\":1478686416985,\"1022448076912\":1480585069079,\"1024625153727\":1509788624450,\"1022448076914\":1480585069079,\"1024625153726\":1509788624450,\"1022448076918\":1480585069079,\"1004353052342\":1444487341707,\"1024625153729\":1509788624450,\"1024625153728\":1509788624450,\"1024625153730\":1509788624450,\"1025900370628\":1509788667460,\"1207550380\":1491634246505,\"1022282269308\":1478686417014,\"1021661108535\":1478686804033,\"1303366601\":1444487341753,\"1022059049458\":1509788624562,\"1019823781055\":1509788624282,\"1022059049459\":1509788624562,\"1022489237407\":1478943089315,\"1025711101856\":1509788624306,\"1022059049457\":1509788624562,\"1022059049461\":1509788624562,\"1016758615317\":1478686804017,\"1016758615319\":1478686804031,\"1021498445979\":1478686417112,\"1024662770884\":1509788624442,\"1022038339667\":1478686417168,\"1024662770882\":1509788624442,\"1024662770881\":1509788624442,\"1024662770880\":1509788624442,\"4959478039\":1509788624154,\"1021958387466\":1478686417147,\"1020323239551\":1509788625076,\"1021958387468\":1478686417147,\"1021958387469\":1478686417147,\"1024662770911\":1509788625146,\"1005646619519\":1509788624389,\"1024662770915\":1509788625146,\"1024662770914\":1509788625146,\"1024662770913\":1509788625146,\"1024662770912\":1509788625146,\"1021126982060\":1478686417037,\"1015868227630\":1465470268264,\"1024625153597\":1509788624862,\"1024625153596\":1509788624862,\"1024625153598\":1509788624862,\"1024625153595\":1509788624862,\"1024625153594\":1509788624862,\"1022448076937\":1480585069079,\"1022448076936\":1480585069079,\"1022448076942\":1480585069079,\"1004773406477\":1478686804027,\"1022448076932\":1480585069079,\"1022448076935\":1480585069079,\"866760057\":1491634246508,\"1024088077913\":1509788624467,\"1018509501915\":1509788624426,\"1022448076947\":1480585069079,\"1022448076946\":1480585069079,\"1021354527615\":1465470268231,\"1023927378134\":1491634246529,\"1025537556680\":1509788624344,\"1021903333422\":1478686417139,\"1013413671468\":1478686804054,\"1025849778039\":1509788667458,\"1024662770878\":1509788624441,\"1024662771021\":1509788624226,\"1024662771020\":1509788624226,\"1024662771019\":1509788624226,\"1024662771017\":1509788624226,\"1024135263432\":1509788667494,\"1022719007031\":1509788624268,\"1024135263436\":1509788667494,\"1024662771025\":1509788624226,\"1015231801212\":1480585069068,\"1022238623216\":1509788624946,\"1006492962932\":1478686804028,\"1022238623230\":1509788624931,\"1023196511376\":1509788625042,\"1024785849903\":1509788624250,\"1022069538757\":1478686417301,\"1022238623226\":1509788624932,\"1025796952558\":1509788625123,\"1022444538325\":1478686417295,\"1022240589302\":1478686417065,\"1020073936538\":1465470268309,\"1022432741894\":1478686417212,\"1015811343525\":1480585069075,\"1022646656460\":1480585069087,\"1015375457948\":1509788624976,\"1022646656507\":1480585069087,\"1020116665396\":1509788625079,\"1025797345737\":1509788624455,\"4786854463\":1509788624153,\"1021605272563\":1478686417048,\"1024737218688\":1509788624517,\"1022379789571\":1478686417290,\"1022646656489\":1480585069087,\"1023820556263\":1491634246509,\"1021888522974\":1478686417138,\"1025523663511\":1509788624506,\"1025523663510\":1509788624506,\"1025523663509\":1509788624506,\"1025523663508\":1509788624506,\"1024737218687\":1509788624517,\"1025628785499\":1509788624832,\"1021175350703\":1465470268187,\"1022059048976\":1509788624221,\"1022421863026\":1478686417293,\"1025523663515\":1509788624506,\"1024737218683\":1509788624517,\"1025523663514\":1509788624506,\"1025628785502\":1509788624746,\"1025523663513\":1509788624506,\"1024737218681\":1509788624517,\"1025523663512\":1509788624506,\"1025628785500\":1509788624823,\"1022059048974\":1509788624221,\"1021413119887\":1478686417007,\"1022059048972\":1509788624221,\"1022059048973\":1509788624221,\"1022069145443\":1478686417271,\"581674251\":1478686417018,\"1019816572545\":1509788624282,\"245205305\":1444487341736,\"1023154044927\":1509788624325,\"1022008849209\":1509788624463,\"1020961698124\":1478686417085,\"1021569359109\":1478686417008,\"1018017055189\":1465470268235,\"840414639\":1478950494917,\"1025009197083\":1509788624330,\"1021730579634\":1478686417051,\"1021776847246\":1478686417128,\"1022700657296\":1509788624973,\"1016661881592\":1478686804042,\"1018899184672\":1509788624366,\"1022700657295\":1509788624973,\"1020202389494\":1478686804065,\"1022081335280\":1509788624924,\"1022700657293\":1509788624973,\"1022700657292\":1509788624973,\"1012442938744\":1478686417026,\"1016661881590\":1478686804063,\"1021273132944\":1478686417040,\"1020840323548\":1478686417299,\"4990414485\":1509788624156,\"4990414488\":1509788624156,\"1025509114373\":1509788667537,\"1025509114371\":1509788667537,\"1022059049058\":1509788624857,\"1012266248407\":1478686417073,\"1022059049059\":1509788624857,\"1022059049057\":1509788624857,\"1024620566320\":1509788624938,\"1022059049061\":1509788624857,\"1018214324897\":1478686804037,\"1023638756720\":1509788624962,\"1018214324898\":1478686804037,\"1021734251764\":1509788624400,\"1018214324899\":1478686804037,\"840415764\":1478950494917,\"1018214324900\":1478686804037,\"1018214324901\":1478686804037,\"1018214324902\":1478686804037,\"1023638756727\":1509788624962,\"1018214324904\":1478686804037,\"1018214324905\":1478686804037,\"1018214324906\":1478686804037,\"1023638756731\":1509788624962,\"1018214324907\":1478686804037,\"1023638756730\":1509788624962,\"1018214324908\":1478686804037,\"1018214324909\":1478686804037,\"1020202385454\":1465470268244,\"1018214324910\":1478686804037,\"1018214324911\":1478686804037,\"1018214324912\":1478686804037,\"1021892453748\":1478686804071,\"1023638756705\":1509788624962,\"1020202385457\":1465470268244,\"1018214324913\":1478686804037,\"1021892453749\":1478686804071,\"1018214324914\":1478686804037,\"1021892453750\":1478686804071,\"1009328687189\":1478686804015,\"1018214324915\":1478686804037,\"1023638756706\":1509788624962,\"1020202385460\":1465470268244,\"1018214324916\":1478686804037,\"1018214324917\":1478686804037,\"1023638756708\":1509788624962,\"1018214324918\":1478686804037,\"1023638756711\":1509788624962,\"1018214324919\":1478686804037,\"1021892453747\":1478686804071,\"1018214324920\":1478686804037,\"1025050878269\":1509788624231,\"1018214324921\":1478686804037,\"1025050878268\":1509788624231,\"1020202385466\":1465470268244,\"1018214324922\":1478686804037,\"1018214324923\":1478686804037,\"1025050878270\":1509788624232,\"1018214324924\":1478686804037,\"1018214324925\":1478686804037,\"1023638756716\":1509788624962,\"1018214324926\":1478686804037,\"1023638756719\":1509788624962,\"1018214324927\":1478686804037,\"1023638756718\":1509788624962,\"1018214324864\":1478686804036,\"1018214324865\":1478686804036,\"1018214324866\":1478686804036,\"1018214324867\":1478686804036,\"1018214324868\":1478686804036,\"1018214324869\":1478686804036,\"1018214324870\":1478686804036,\"1018214324871\":1478686804036,\"1018214324872\":1478686804036,\"1018214324873\":1478686804036,\"1018214324874\":1478686804036,\"1025525108427\":1509788624523,\"1024688200937\":1509788624901,\"1018214324875\":1478686804036,\"1018214324876\":1478686804036,\"1010528534774\":1478686804055,\"1018214324877\":1478686804036,\"1025525108428\":1509788624523,\"1024688200942\":1509788624902,\"1018214324878\":1478686804036,\"1024688200941\":1509788624902,\"1018214324879\":1478686804037,\"1018214324880\":1478686804037,\"1024688200947\":1509788624901,\"1018214324881\":1478686804037,\"1024688200946\":1509788624902,\"1023638756672\":1509788624962,\"1018214324882\":1478686804037,\"1025373844951\":1509788624309,\"1018214324883\":1478686804037,\"1024688200944\":1509788624901,\"1023638756674\":1509788624962,\"1018214324884\":1478686804037,\"1018214324885\":1478686804037,\"1024688200950\":1509788624901,\"1018214324886\":1478686804037,\"1018214324887\":1478686804037,\"1024688200948\":1509788624901,\"1018214324888\":1478686804037,\"1024688200955\":1509788624901,\"1018214324889\":1478686804037,\"1018214324890\":1478686804037,\"1018214324891\":1478686804037,\"1018214324892\":1478686804037,\"1024688200959\":1509788624901,\"1018214324893\":1478686804037,\"1024688200958\":1509788624901,\"1018214324894\":1478686804037,\"1024688200957\":1509788624901,\"1018214324895\":1478686804037,\"1018214324960\":1478686804037,\"1024688200835\":1509788624592,\"1023638756657\":1509788624962,\"1018214324961\":1478686804037,\"1024688200834\":1509788624592,\"1024688200833\":1509788624592,\"1023638756658\":1509788624962,\"1023638756660\":1509788624962,\"1020748046840\":1478686417075,\"1023638756663\":1509788624962,\"1025103438916\":1509788624281,\"1009673149844\":1478686804064,\"1020878469560\":1509788624934,\"1023638756671\":1509788624962,\"1023638756670\":1509788624962,\"1022083166298\":1478686417062,\"1021250195452\":1478686804032,\"1021250195453\":1478686804031,\"1021250195454\":1478686804034,\"1023638756642\":1509788624962,\"1022357242246\":1478686417069,\"1023638756648\":1509788624962,\"1025053368645\":1509788624945,\"1025053368644\":1509788624930,\"1022577974999\":1509788624200,\"1025216690975\":1509788667495,\"1021040865911\":1478686417232,\"1025053368642\":1509788624930,\"1023638756655\":1509788624962,\"1025053368640\":1509788624930,\"1023638756654\":1509788624962,\"1018214324928\":1478686804037,\"1018214324929\":1478686804037,\"1025216690978\":1509788667495,\"1018214324930\":1478686804037,\"1025216690977\":1509788667495,\"1018214324931\":1478686804037,\"1025216690976\":1509788667495,\"1011344863318\":1478686804022,\"1018214324933\":1478686804037,\"1018214324934\":1478686804037,\"1018214324935\":1478686804037,\"1025216690980\":1509788667495,\"1018214324936\":1478686804037,\"1018214324937\":1478686804037,\"1018214324938\":1478686804037,\"1018214324939\":1478686804037,\"1025050878286\":1509788624232,\"1018214324940\":1478686804037,\"1018214324941\":1478686804037,\"1018214324942\":1478686804037,\"1025050878283\":1509788624231,\"1018214324943\":1478686804037,\"1023638756638\":1509788624962,\"1018214324944\":1478686804037,\"1022369825122\":1478686417289,\"1018214324945\":1478686804037,\"1018214324946\":1478686804037,\"1025050878295\":1509788624232,\"1018214324947\":1478686804037,\"1018214324948\":1478686804037,\"1022031527243\":1478686417011,\"1018214324949\":1478686804037,\"1018214324950\":1478686804037,\"1025531793133\":1509788624296,\"1018214324952\":1478686804037,\"1018214324953\":1478686804037,\"1018214324954\":1478686804037,\"1018214324955\":1478686804037,\"1018214324956\":1478686804037,\"1025050878297\":1509788624232,\"1018214324957\":1478686804037,\"1025050878299\":1509788624231,\"1018214324959\":1478686804037,\"1018214324768\":1478686804035,\"1018214324769\":1478686804035,\"1018214324770\":1478686804035,\"1024688200769\":1509788624592,\"1018214324771\":1478686804035,\"1018214324772\":1478686804035,\"1024688200775\":1509788624592,\"1018214324773\":1478686804035,\"1023638756852\":1509788624962,\"1021795332052\":1478686417009,\"1018214324774\":1478686804035,\"1023638756855\":1509788624963,\"1018214324775\":1478686804035,\"1023638756854\":1509788624963,\"1018214324776\":1478686804035,\"1023638756857\":1509788624963,\"1021257797585\":1478686417237,\"1018214324777\":1478686804035,\"1018214324778\":1478686804035,\"1024688200777\":1509788624592,\"1023638756859\":1509788624963,\"1018214324779\":1478686804035,\"1024688200776\":1509788624592,\"1018214324780\":1478686804035,\"1024840504611\":1509788624972,\"1018214324781\":1478686804035,\"1024688200782\":1509788624592,\"1018214324782\":1478686804036,\"1024688200781\":1509788624592,\"1023638756863\":1509788624963,\"1018214324783\":1478686804036,\"1024688200780\":1509788624592,\"1018214324784\":1478686804036,\"1015231801595\":1480585069068,\"1018214324785\":1478686804036,\"1024688200786\":1509788624592,\"1018214324786\":1478686804036,\"1018214324787\":1478686804036,\"1023638756834\":1509788624962,\"1018214324788\":1478686804036,\"1023638756837\":1509788624962,\"1018214324789\":1478686804036,\"1018214324790\":1478686804036,\"1023638756839\":1509788624962,\"1018214324791\":1478686804036,\"1023638756838\":1509788624962,\"1018214324792\":1478686804036,\"1018214324793\":1478686804036,\"1018214324794\":1478686804036,\"1018214324795\":1478686804036,\"1018214324796\":1478686804036,\"1018214324797\":1478686804036,\"1024688200798\":1509788624592,\"1018214324798\":1478686804036,\"1018214324799\":1478686804036,\"1021087266246\":1478686417036,\"1023638756817\":1509788624962,\"1022422779242\":1478686417210,\"1024688200802\":1509788624592,\"1021418232074\":1509788624508,\"1022422779240\":1478686417210,\"1025050878336\":1509788624232,\"1024688200806\":1509788624592,\"1023638756820\":1509788624962,\"1023638756823\":1509788624962,\"1024688200804\":1509788624592,\"1025050878351\":1509788624232,\"1021087266253\":1478686417036,\"1023638756826\":1509788624962,\"1025050878345\":1509788624232,\"1022161548753\":1478686417063,\"1024688200819\":1509788624592,\"1025050878359\":1509788624232,\"1024688200817\":1509788624592,\"1023638756803\":1509788624962,\"1018214324756\":1478686804035,\"1023638756805\":1509788624962,\"1018214324757\":1478686804035,\"1025050878352\":1509788624231,\"1023638756804\":1509788624962,\"1018214324758\":1478686804035,\"1018214324759\":1478686804035,\"1025050878354\":1509788624231,\"1018214324760\":1478686804035,\"1023638756809\":1509788624962,\"1018214324761\":1478686804035,\"1024688200826\":1509788624592,\"1018214324762\":1478686804035,\"1018214324763\":1478686804035,\"1018214324764\":1478686804035,\"1023638756813\":1509788624962,\"1018214324765\":1478686804035,\"1024688200830\":1509788624592,\"1018214324767\":1478686804035,\"1018214324832\":1478686804036,\"1018214324833\":1478686804036,\"1024688200706\":1509788624259,\"1018214324834\":1478686804036,\"1024688200705\":1509788624258,\"1018214324835\":1478686804036,\"1018214324836\":1478686804036,\"1024688200711\":1509788624259,\"1021125670909\":1478686417037,\"1018214324837\":1478686804036,\"1024688200710\":1509788624259,\"1018214324838\":1478686804036,\"1018214324839\":1478686804036,\"1018214324840\":1478686804036,\"1024688200715\":1509788624259,\"1020202385641\":1465470268244,\"1018214324841\":1478686804036,\"1024688200714\":1509788624259,\"1018214324842\":1478686804036,\"1018214324843\":1478686804036,\"1018214324844\":1478686804036,\"1016930848237\":1478686804063,\"1018214324845\":1478686804036,\"1009837774627\":1491634246513,\"1018214324846\":1478686804036,\"1024688200717\":1509788624259,\"1018214324847\":1478686804036,\"1018214324848\":1478686804036,\"1018214324849\":1478686804036,\"1018214324850\":1478686804036,\"1024688200721\":1509788624259,\"1018214324851\":1478686804036,\"1018214324852\":1478686804036,\"1018214324853\":1478686804036,\"1024688200726\":1509788624259,\"1018214324854\":1478686804036,\"1024688200725\":1509788624259,\"1018214324855\":1478686804036,\"1018214324856\":1478686804036,\"1024688200731\":1509788624259,\"1018214324857\":1478686804036,\"1021223456158\":1478686416985,\"1018214324858\":1478686804036,\"1018214324859\":1478686804036,\"1024688200728\":1509788624259,\"1018214324860\":1478686804036,\"1018214324861\":1478686804036,\"1024688200734\":1509788624258,\"1018214324862\":1478686804036,\"1024688200733\":1509788624258,\"1024597624567\":1509788624939,\"1018214324863\":1478686804036,\"1024688200732\":1509788624258,\"1022437721607\":1478686417071,\"1018214324800\":1478686804036,\"1024688200739\":1509788624259,\"1020305147617\":1478686804033,\"1018214324801\":1478686804036,\"1023638756752\":1509788624962,\"1022051057394\":1478686417172,\"1018214324802\":1478686804036,\"1025875596031\":1509788667406,\"1018214324803\":1478686804036,\"1024688200736\":1509788624258,\"1025875596030\":1509788667406,\"1025791712766\":1509788667523,\"1018214324804\":1478686804036,\"1024688200743\":1509788624258,\"1018214324805\":1478686804036,\"1024688200742\":1509788624259,\"1018214324806\":1478686804036,\"1024688200741\":1509788624258,\"1018214324807\":1478686804036,\"1019853798415\":1509788624286,\"1018214324808\":1478686804036,\"1018214324809\":1478686804036,\"1021691783575\":1509788624287,\"1018214324810\":1478686804036,\"1024688200745\":1509788624258,\"1018214324811\":1478686804036,\"1018214324812\":1478686804036,\"1018214324813\":1478686804036,\"1025791712752\":1509788667523,\"1018214324814\":1478686804036,\"1018214324815\":1478686804036,\"1023253395110\":1509788625083,\"1025791712754\":1509788667523,\"1018214324816\":1478686804036,\"1018214324817\":1478686804036,\"1021892453781\":1478686804065,\"1018214324818\":1478686804036,\"1018214324819\":1478686804036,\"1018214324820\":1478686804036,\"1025791712745\":1509788667534,\"1023638756740\":1509788624962,\"1025791712744\":1509788667534,\"1018214324822\":1478686804036,\"1018214324823\":1478686804036,\"1018214324824\":1478686804036,\"1025791712741\":1509788667534,\"1018214324825\":1478686804036,\"1018214324826\":1478686804036,\"1022450566872\":1478686417296,\"1018214324827\":1478686804036,\"1018214324828\":1478686804036,\"1024688200767\":1509788624592,\"1025791712737\":1509788667575,\"1018214324829\":1478686804036,\"1018214324830\":1478686804036,\"1024688200765\":1509788624592,\"1018214324831\":1478686804036,\"1025791712738\":1509788667575,\"1022266280509\":1478686417197,\"1020961570793\":1478686416978,\"1014429497687\":1444487341759,\"1003894551871\":1478686417221,\"1023638756450\":1509788624963,\"1021584036572\":1478686417114,\"1023638756454\":1509788624963,\"1023638756456\":1509788624963,\"1021594128951\":1509788624419,\"1023638756458\":1509788624964,\"1024244576329\":1509788624949,\"1023638756461\":1509788624964,\"1025875596033\":1509788667402,\"1025875596035\":1509788667402,\"1025875596034\":1509788667402,\"1023638756432\":1509788624964,\"1023638756434\":1509788624964,\"1018626155280\":1465470268271,\"1020202385670\":1465470268244,\"1023638756440\":1509788624963,\"1020202385678\":1465470268244,\"1009490822035\":1480585069065,\"1023638756446\":1509788624963,\"1023638756416\":1509788624963,\"1023638756418\":1509788624964,\"1020202385684\":1465470268244,\"1020961570773\":1478686416978,\"1025732729780\":1509788624942,\"1023638756425\":1509788624964,\"1021749587154\":1478686417126,\"1021749587156\":1478686417126,\"1023638756429\":1509788624964,\"1014712879179\":1480585069073,\"1021351249129\":1478686417104,\"1018990938425\":1509788624391,\"1024797381378\":1509788625024,\"1024688201092\":1509788624255,\"1003894551907\":1478686417221,\"1025343697567\":1509788624293,\"1003894551905\":1478686417221,\"1024688201100\":1509788624255,\"1024688201104\":1509788624255,\"1024688201111\":1509788624254,\"1013319952173\":1480585069065,\"1024688201109\":1509788624254,\"1024688201114\":1509788624255,\"1024688201119\":1509788624255,\"1024688201117\":1509788624255,\"1024688201123\":1509788624255,\"1024688201121\":1509788624255,\"1003894551885\":1478686417221,\"1024688201120\":1509788624255,\"1021329884553\":1478686417041,\"1011230964609\":1480585069074,\"1024688201125\":1509788624254,\"1022998849267\":1509788624509,\"1012143038945\":1478686417025,\"1003894551881\":1478686417221,\"1024204078808\":1509788667509,\"1024688201129\":1509788624254,\"1003894551877\":1478686417221,\"1024688201128\":1509788624255,\"1024985476198\":1509788624279,\"1024688201132\":1509788624254,\"1022162990128\":1478686417186,\"1003894551899\":1478686417221,\"1003894551897\":1478686417221,\"1003894551894\":1478686417221,\"1006603720658\":1444487341757,\"1021647607653\":1509788624534,\"1020991979082\":1478686416978,\"1003894551891\":1478686417221,\"1003894551888\":1478686417221,\"1021047681725\":1478686417092,\"1003894551889\":1478686417221,\"1024688201027\":1509788624895,\"1022372053872\":1478686417204,\"1022448076744\":1480585069108,\"1023638756592\":1509788624962,\"1022448076747\":1480585069109,\"1024688201025\":1509788624895,\"1024688201024\":1509788624895,\"1024607979016\":1509788667589,\"1024688201030\":1509788624895,\"1025732729607\":1509788624942,\"1022448076750\":1480585069109,\"1024688201028\":1509788624895,\"1022448076737\":1480585069108,\"1022448076736\":1480585069108,\"1024688201033\":1509788624895,\"1021619557411\":1478686804028,\"1024688201032\":1509788624894,\"1022448076741\":1480585069108,\"1022448076740\":1480585069108,\"1022448076743\":1480585069108,\"1022448076742\":1480585069108,\"1024435489890\":1509788624437,\"1021082940471\":1478686417094,\"1023638756581\":1509788624962,\"1023638756580\":1509788624962,\"1021980933044\":1478686417056,\"1023638756583\":1509788624962,\"1023638756585\":1509788624962,\"1021506314226\":1478686417112,\"1023638756590\":1509788624962,\"1022297738494\":1478686417199,\"1024688201058\":1509788624255,\"1024688201057\":1509788624254,\"1023638756563\":1509788624962,\"1023638756565\":1509788624962,\"1023638756567\":1509788624962,\"1021042307992\":1478686417092,\"1021497925440\":1478686417112,\"1023638756569\":1509788624962,\"1023638756570\":1509788624962,\"1022136251728\":1509788624945,\"1023638756572\":1509788624962,\"1023638756575\":1509788624962,\"1024688201068\":1509788624255,\"1024688201072\":1509788624255,\"1021573682129\":1478686417114,\"1954676023\":1444487341745,\"1024688201076\":1509788624255,\"1024688201081\":1509788624255,\"1024688201087\":1509788624255,\"1023496012876\":1509788625082,\"1024688200962\":1509788624901,\"1023638756528\":1509788624962,\"1022407968107\":1478686417208,\"1024688200964\":1509788624901,\"1024688200969\":1509788624901,\"1024688200979\":1509788624902,\"1024688200978\":1509788624901,\"1009712078527\":1491634246518,\"1024688200976\":1509788624901,\"1024688200983\":1509788624902,\"1023638756517\":1509788624962,\"1010528534799\":1478686804055,\"1023638756516\":1509788624962,\"1025319317747\":1509788624182,\"1024688200981\":1509788624901,\"1025035411945\":1509788624210,\"1024688200987\":1509788624901,\"1023638756520\":1509788624962,\"1024688200985\":1509788624901,\"1023638756523\":1509788624962,\"1021685753863\":1478686417121,\"1023638756524\":1509788624962,\"1021698468084\":1478686417121,\"1024832378315\":1509788624948,\"1023638756497\":1509788624962,\"1012126002787\":1478686417073,\"1023638756499\":1509788624962,\"1020924738261\":1478686417228,\"1023638756500\":1509788624962,\"1023638756503\":1509788624962,\"1023638756502\":1509788624962,\"1024688201001\":1509788624894,\"1023638756507\":1509788624962,\"1023638756506\":1509788624962,\"1024688201007\":1509788624895,\"1024688201006\":1509788624895,\"1024688201004\":1509788624895,\"1022448076729\":1480585069108,\"1022448076728\":1480585069108,\"1022847463274\":1509788624383,\"1024688201010\":1509788624895,\"1022448076731\":1480585069108,\"1025319317719\":1509788624182,\"1024688201009\":1509788624895,\"1022448076730\":1480585069108,\"1024688201008\":1509788624895,\"1022448076733\":1480585069108,\"1024688201015\":1509788624895,\"1022448076732\":1480585069108,\"1024688201013\":1509788624895,\"1024688201012\":1509788624895,\"1022461970029\":1478686417217,\"1009850226384\":1478686804024,\"1024688201018\":1509788624895,\"1020638866374\":1478686416995,\"1022448076723\":1480585069108,\"1024688201017\":1509788624895,\"1024688201016\":1509788624895,\"1022448076725\":1480585069108,\"1022448076724\":1480585069108,\"463966810\":1491634246534,\"1024688201022\":1509788624895,\"1022448076727\":1480585069108,\"1025319317723\":1509788624182,\"1013319296100\":1509788625016,\"4559832515\":1465469681387,\"1016301693615\":1480585069066,\"4990411618\":1509788624154,\"1016301693616\":1480585069066,\"4990411617\":1509788624154,\"1020878470112\":1509788624934,\"1021485342602\":1509788624977,\"1008558757888\":1465470268313,\"1025538608144\":1509788624281,\"1022896481194\":1509788624299,\"1009249644853\":1478686804023,\"1025906923031\":1509788667460,\"1025902728790\":1509788667463,\"1025902728789\":1509788667460,\"1022998848953\":1509788624434,\"1020937322073\":1478686417084,\"1022345970252\":1478686417015,\"1019137737609\":1509788624366,\"1022270738127\":1478686417285,\"1025538608138\":1509788624282,\"1023092047838\":1509788625047,\"1025538608137\":1509788624311,\"1372445686\":1478686804024,\"171278344\":1444487341720,\"1024688201346\":1509788625212,\"1021984864677\":1478686417057,\"1024688201344\":1509788625213,\"1024688201351\":1509788625212,\"1024688201348\":1509788625212,\"1024688201355\":1509788625213,\"1024688201354\":1509788625213,\"1022427498441\":1478686417211,\"1024688201353\":1509788625213,\"1024688201359\":1509788625212,\"1024688201360\":1509788625212,\"1021323985194\":1465470268212,\"1021323985193\":1465470268212,\"1021323985196\":1465470268212,\"1022577974498\":1509788624200,\"1021323985190\":1465470268212,\"1021323985189\":1465470268212,\"1021776456705\":1509788624403,\"1022701311781\":1509788624972,\"1024186514654\":1509788624825,\"1008969933277\":1478686804064,\"1021513653351\":1509788624419,\"1021277979270\":1478686417040,\"1020918053136\":1478686417081,\"1016866491282\":1478686804018,\"1025512918826\":1509788624344,\"1020918053133\":1478686417081,\"1022162859997\":1509788624958,\"1012338343521\":1478686804022,\"1016936483947\":1478686804019,\"1025731942440\":1509788624931,\"1024460786907\":1509788625070,\"1021894420452\":1478686417138,\"1024688201335\":1509788625213,\"1024688201334\":1509788625212,\"1024566429363\":1509788625079,\"1024688201339\":1509788625213,\"1024688201338\":1509788625213,\"1024688201336\":1509788625213,\"1024688201343\":1509788625213,\"1024688201341\":1509788625213,\"1021037850812\":1509788624933,\"1021120689577\":1478686417095,\"1000527724048\":1444487341711,\"1018644636154\":1478686804026,\"1022311369859\":1478686417068,\"1022311369858\":1478686417068,\"1011502876739\":1480585069074,\"1022311369857\":1478686417068,\"1021698075627\":1478686417121,\"1021698075625\":1478686417121,\"1012209362826\":1509788625017,\"1021323722824\":1478686417005,\"1020653938775\":1478686804057,\"1025883852946\":1509788667449,\"1004353049596\":1444487341756,\"1023638756991\":1509788624961,\"1021323722817\":1478686417005,\"1018926184281\":1509788624932,\"1023638756961\":1509788624961,\"1021962320462\":1509788624982,\"1025883852943\":1509788667449,\"1021962320463\":1509788624982,\"1023638756967\":1509788624961,\"1023638756966\":1509788624961,\"1021962320454\":1509788624982,\"1023638756971\":1509788624961,\"1021962320452\":1509788624982,\"1025791712775\":1509788667523,\"1021962320453\":1509788624982,\"1021326737440\":1465470268214,\"1021962320450\":1509788624982,\"1023638756972\":1509788624961,\"1021962320451\":1509788624982,\"1021326737436\":1465470268214,\"1021326737437\":1465470268214,\"1023638756947\":1509788624961,\"1023638756949\":1509788624961,\"1016839359376\":1478686804022,\"1023638756954\":1509788624961,\"1022601042973\":1480585069140,\"1023638756935\":1509788624961,\"1023638756937\":1509788624961,\"1023638756938\":1509788624961,\"1003320578372\":1509788624372,\"1023638756940\":1509788624961,\"1021175351577\":1465470268187,\"1023638756942\":1509788624961,\"1022467343467\":1478686417072,\"1022467343471\":1478686417072,\"1022293020363\":1478686417286,\"1022467343474\":1478686417072,\"1023638756896\":1509788624963,\"1842603648\":1444487341711,\"1005848214151\":1509788624387,\"1020924213351\":1478686417033,\"1025533496634\":1509788624347,\"1023638756881\":1509788624962,\"1021962320446\":1509788624982,\"1021962320445\":1509788624982,\"1021962320443\":1509788624982,\"1023638756886\":1509788624962,\"1022375461335\":1480585172184,\"1021301965270\":1478686417238,\"1023638756892\":1509788624963,\"1024384240020\":1509788624329,\"1025842303855\":1509788667443,\"1023970894589\":1509788625037,\"1023638756872\":1509788624962,\"1025892503650\":1509788667466,\"1023638756874\":1509788624962,\"1021425310240\":1509788624977,\"1024070509768\":1491634246520,\"1023638756878\":1509788624962,\"1021726517450\":1478686417123,\"1025531792669\":1509788624295,\"1022457381980\":1480585069086,\"1022457381971\":1480585069086,\"1024244445919\":1509788624948,\"1022457381970\":1480585069086,\"1022028644036\":1478686417011,\"1020294137150\":1465470268292,\"1022446765536\":1478686417016,\"1016609323495\":1478686804018,\"1649928699\":1444487341744,\"1021325951108\":1478686417005,\"1019309578452\":1509788624317,\"1022457381994\":1480585069086,\"1022457381992\":1480585069086,\"1022457381999\":1480585069087,\"1022701311717\":1509788624972,\"1022457381997\":1480585069087,\"1024781783703\":1509788625021,\"1022457381985\":1480585069086,\"1020294006034\":1465470268280,\"1023924628870\":1509788624920,\"1024634461137\":1509788667620,\"1022086312499\":1478686417062,\"1000053366006\":1478686417021,\"1022086312500\":1478686417062,\"1022086312501\":1478686417062,\"1000527724321\":1444487341713,\"1017165076731\":1478686804019,\"1022185534518\":1478686417187,\"1023268205754\":1509788624839,\"1021346924040\":1478686417103,\"1023638757009\":1509788624961,\"1023638757008\":1509788624961,\"1020878469654\":1509788624934,\"1022073729887\":1478686417176,\"1023638757014\":1509788624961,\"1023638757017\":1509788624961,\"1499976333\":1444487341751,\"1024381881071\":1509788624301,\"1023638757019\":1509788624961,\"1019915533493\":1478686804034,\"1649928634\":1444487341738,\"1023638757022\":1509788624961,\"1025504792518\":1509788624336,\"1025504792517\":1509788624341,\"1023638756994\":1509788624961,\"1020861823745\":1478686417079,\"1023638757000\":1509788624961,\"419009283\":1491634246520,\"1023638757002\":1509788624961,\"1025504792523\":1509788624346,\"1023638757005\":1509788624961,\"1025504792522\":1509788624344,\"1023638757004\":1509788624961,\"1000527724303\":1444487341715,\"1649928616\":1444487341729,\"1025504792520\":1509788624337,\"1023638757006\":1509788624961,\"1022250552843\":1478686417066,\"1021037852272\":1509788624933,\"1021049911217\":1478686417232,\"837402104\":1444487341741,\"1025487753000\":1509788624927,\"1021049911211\":1478686417232,\"1021049911205\":1478686417232,\"1023075006709\":1509788625047,\"1021040080500\":1478686417092,\"1025487752984\":1509788624927,\"1025487752989\":1509788624927,\"1021049911191\":1478686417232,\"1020045554613\":1509788625020,\"4891979704\":1509788624155,\"1024752555229\":1509788667502,\"1024752555230\":1509788667502,\"1024752555227\":1509788667502,\"1024752555226\":1509788667502,\"1020294005398\":1465470268280,\"1023288265838\":1509788624183,\"1022700786021\":1509788624973,\"1011663964017\":1478686804061,\"1011663964018\":1478686804061,\"1023638755617\":1509788624963,\"1023638755619\":1509788624963,\"1023638755618\":1509788624963,\"1023638755621\":1509788624963,\"1025732730587\":1509788624922,\"1021725208348\":1478686417123,\"1009004667351\":1478686804023,\"1023638755603\":1509788624963,\"1023638755602\":1509788624963,\"1023638755605\":1509788624963,\"1023638755604\":1509788624963,\"1023638755608\":1509788624963,\"1022438507153\":1478686417213,\"1023638755611\":1509788624963,\"1019704371079\":1509788625077,\"1019704371081\":1509788625077,\"1023638755597\":1509788624963,\"1023638755599\":1509788624963,\"1023638755598\":1509788624963,\"1021004297460\":1478686417034,\"1020992240525\":1478686416986,\"1021544584355\":1478686417113,\"1020596530213\":1478686804057,\"1018796947822\":1478686804057,\"1023222853823\":1509788624957,\"1021544584357\":1478686417113,\"1018796947823\":1478686804057,\"1018796947820\":1478686804057,\"1021544584361\":1478686417113,\"1022472854598\":1478943089486,\"1022472854597\":1478943089486,\"1021544584363\":1478686417113,\"1021544584364\":1478686417113,\"1021424131583\":1478686417043,\"1784145607\":1444487341743,\"1021885505890\":1478686417044,\"1018796947834\":1478686804057,\"1018796947835\":1478686804057,\"1022479932658\":1478943089488,\"1012628539684\":1478686417026,\"1018796947832\":1478686804057,\"1018796947833\":1478686804057,\"1018796947826\":1478686804057,\"1018796947824\":1478686804057,\"1021424131561\":1478686417043,\"1018796947825\":1478686804057,\"1018796947830\":1478686804057,\"1018796947831\":1478686804057,\"1020653940679\":1478686804057,\"1025732730401\":1509788624942,\"1021495826860\":1478686417046,\"1022075302955\":1509788624924,\"1022072812640\":1509788624451,\"1023288265869\":1509788624990,\"1023995012847\":1491634246517,\"1024403902223\":1509788625100,\"1015231802504\":1480585069068,\"1020822102453\":1478686417030,\"1016681282282\":1478686804018,\"1025295725666\":1509788624946,\"1024374672738\":1509788625100,\"1023820557417\":1491634246535,\"1024435489024\":1509788624465,\"1020878470412\":1509788624934,\"1019029475084\":1509788624282,\"1018796947694\":1478686804056,\"1018796947695\":1478686804056,\"1007660634275\":1478686804030,\"1022209527185\":1509788624933,\"1018796947704\":1478686804057,\"1022076482943\":1478686417177,\"1025893029383\":1509788667405,\"1018796947708\":1478686804057,\"1022080939327\":1478686417301,\"1018796947698\":1478686804056,\"1022209527193\":1509788624938,\"1018796947699\":1478686804056,\"1018796947696\":1478686804056,\"1025328363425\":1509788624306,\"1021611036980\":1509788624397,\"1022209527195\":1509788624938,\"1018796947697\":1478686804056,\"1022209527194\":1509788624938,\"1018796947702\":1478686804056,\"1018796947703\":1478686804056,\"1018796947700\":1478686804056,\"1018796947701\":1478686804056,\"1023638755409\":1509788624963,\"1023638755412\":1509788624963,\"1023638755414\":1509788624963,\"1021664252458\":1478686417050,\"1018889353032\":1509788624932,\"1022657926890\":1509788625061,\"1023638755392\":1509788624963,\"1022577974201\":1509788624827,\"1023638755397\":1509788624963,\"1023638755403\":1509788624963,\"1023638755404\":1509788624963,\"1023638755406\":1509788624963,\"1023638755381\":1509788624963,\"1023638755387\":1509788624963,\"1023638755386\":1509788624963,\"1023638755389\":1509788624963,\"1023638755388\":1509788624963,\"1024403902085\":1509788624193,\"1303363838\":1444487341727,\"1021913031551\":1509788624465,\"1021757188294\":1509788624400,\"1023638755346\":1509788624963,\"1023638755349\":1509788624963,\"1022396827154\":1478686417206,\"1022080939328\":1478686417301,\"1022080939329\":1478686417301,\"1024469568164\":1509788624522,\"1023638755328\":1509788624963,\"1023638755333\":1509788624963,\"1023638755332\":1509788624963,\"1023638755337\":1509788624963,\"1023638755341\":1509788624963,\"1021385851435\":1478686417042,\"1023638755554\":1509788624963,\"1023638755557\":1509788624963,\"1021513653121\":1509788624815,\"1022185272203\":1478686417278,\"1018683433778\":1509788625018,\"1021463584438\":1478686417108,\"1023638755539\":1509788624963,\"1021490321631\":1478686417110,\"1192479415\":1444487341730,\"1021700435805\":1478686804046,\"1023638755545\":1509788624963,\"1020891708583\":1478686417227,\"1023638755551\":1509788624963,\"1023638755520\":1509788624963,\"1023638755523\":1509788624963,\"1022356194416\":1478686804064,\"1023638755522\":1509788624963,\"1021121475276\":1478686417037,\"1023638755525\":1509788624963,\"1023638755528\":1509788624963,\"1021617328245\":1478686417300,\"1021340500466\":1465470268222,\"1019037076996\":1509788624366,\"1021340500465\":1465470268222,\"1022204808459\":1480585069084,\"1006617874997\":1509788624386,\"1023638755510\":1509788624963,\"1023638755513\":1509788624963,\"1023638755516\":1509788624963,\"1026223465100\":1514456869766,\"1025531792207\":1509788624295,\"1025319318721\":1509788624182,\"1022350558684\":1478686417289,\"1018989104483\":1509788624313,\"1021226076988\":1478686417039,\"1025607943185\":1509788624833,\"1025607943184\":1509788624823,\"1026223464772\":1514456869766,\"1025607943190\":1509788624746,\"1025791712016\":1509788667779,\"1021514307612\":1509788624419,\"1025791712019\":1509788667778,\"1015231803001\":1480585069068,\"1009017250021\":1509788625020,\"1021980802107\":1478686417056,\"1023480677057\":1509788625082,\"1022029036381\":1478686417164,\"1025607943183\":1509788624828,\"1024781129595\":1509788625148,\"1009017250004\":1509788625020,\"1024781129597\":1509788625148,\"1010084455287\":1478686804061,\"1024781129596\":1509788625148,\"1024781129599\":1509788625148,\"1024781129598\":1509788625148,\"1021736610555\":1478686417124,\"1025791712052\":1509788667678,\"1009017250013\":1509788625020,\"1021007574541\":1478686417089,\"1025791712048\":1509788667678,\"1010084455292\":1478686804061,\"1025791712050\":1509788667678,\"1024781129579\":1509788624557,\"1023347509918\":1509788624894,\"1024781129581\":1509788624557,\"1024781129580\":1509788624557,\"1025791712040\":1509788667679,\"1024781129583\":1509788624557,\"1024781129582\":1509788624557,\"1025791712036\":1509788667691,\"1025791712033\":1509788667668,\"962443039\":1509788625020,\"1025791712095\":1509788667435,\"1021240231944\":1478686417039,\"1021892453160\":1478686804054,\"1021240231952\":1478686417039,\"1021980802112\":1478686417056,\"1025732730082\":1509788624942,\"1025791712123\":1509788667415,\"1025082074401\":1509788625007,\"1025791712119\":1509788667415,\"1025791712118\":1509788667415,\"1025791712115\":1509788667415,\"1025791712114\":1509788667415,\"1025791712108\":1509788667413,\"1025791712107\":1509788667421,\"1020926049653\":1478686417082,\"1025791712097\":1509788667435,\"1021421117214\":1478686417106,\"1024412683693\":1509788625082,\"1024374673158\":1509788624815,\"1025883854089\":1509788667452,\"1021587445036\":1478686417114,\"1012739818894\":1478686804025,\"1025875596469\":1509788667406,\"1021814597306\":1509788624394,\"1008036298234\":1478686804025,\"1004641150741\":1509788624972,\"1022781402283\":1509788624402,\"1022031133665\":1478686417165,\"1019074694075\":1509788624313,\"1025732729924\":1509788624942,\"1024781129617\":1509788624218,\"1024781129616\":1509788624218,\"1024781129618\":1509788624218,\"1024781129620\":1509788624218,\"1021208251135\":1478686804026,\"1010084455297\":1478686804061,\"1010084455302\":1478686804061,\"1010091663385\":1478686804020,\"1023106464734\":1509788624466,\"1010084455300\":1478686804061,\"1024781129615\":1509788624218,\"176260184\":1478686417023,\"1010084455304\":1478686804061,\"1010069381851\":1491634246534,\"1020963534894\":1478686417034,\"1022291053387\":1478686417198,\"1009998603909\":1491634246520,\"1023297179477\":1509788625019,\"1012123380051\":1478686417073,\"1021018715800\":1478686417090,\"1021776849224\":1478686417128,\"1024688200641\":1509788624492,\"1021018715805\":1478686417090,\"1024688200645\":1509788624492,\"1021300000211\":1480585069071,\"1024688200651\":1509788624492,\"1024688200650\":1509788624492,\"1025732730251\":1509788624942,\"1024688200648\":1509788624492,\"518754791\":1478686417019,\"1024688200655\":1509788624492,\"518754789\":1478686417019,\"1024688200653\":1509788624492,\"1024688200652\":1509788624492,\"1021603173302\":1478686804040,\"1024688200657\":1509788624492,\"657696807\":1444487341745,\"1024688200662\":1509788624492,\"1025428115391\":1509788624511,\"1016820871364\":1465470268261,\"1024688200660\":1509788624492,\"1025428115390\":1509788624510,\"1024342880353\":1509788625031,\"1024688200664\":1509788624492,\"1005946517729\":1480585069065,\"1024688200669\":1509788624492,\"1024688200675\":1509788624492,\"1024663428479\":1509788625003,\"1024688200678\":1509788624491,\"1024663428475\":1509788625003,\"1022369957433\":1478686417290,\"1022207954832\":1478686417191,\"1022681125708\":1509788624394,\"1024688200682\":1509788624491,\"1024688200681\":1509788624491,\"1024688200680\":1509788624492,\"1022207954837\":1478686417191,\"1007394816685\":1509788624374,\"4959479989\":1509788624154,\"1181337945\":1480585069060,\"1022207954827\":1478686417191,\"1218561938\":1478686417020,\"1022207954826\":1478686417191,\"1021458603124\":1478686417108,\"1218561945\":1478686417020,\"1021906215307\":1478686417140,\"1022207954823\":1478686417191,\"1025428115432\":1509788624437,\"1024153746429\":1509788667495,\"1021594129519\":1509788624817,\"1024153746426\":1509788667495,\"1022423433866\":1478686417302,\"1025428115428\":1509788624437,\"1014686797749\":1478686804016,\"1024487262095\":1509788624920,\"1015912269487\":1480585069075,\"1024374673095\":1509788624419,\"1024153746411\":1509788667495,\"1000363222518\":1478686804059,\"1024487262091\":1509788624920,\"1576129190\":1491634246512,\"1024487262085\":1509788624920,\"1024153746402\":1509788667495,\"1022384244072\":1478686417290,\"1025909019519\":1509788667462,\"1025428115402\":1509788624433,\"1025428115404\":1509788624432,\"1025585792549\":1509788624350,\"1025585792548\":1509788624350,\"1025428115392\":1509788624433,\"1025428115395\":1509788624424,\"1025428115394\":1509788624433,\"1025428115397\":1509788624427,\"1025428115396\":1509788624434,\"1025428115417\":1509788624432,\"1024688200627\":1509788624491,\"1024688200630\":1509788624492,\"1024688200635\":1509788624492,\"1025115628085\":1509788624970,\"1024487262045\":1509788624920,\"1003643937471\":1478686804060,\"1003643937468\":1478686804060,\"1003643937469\":1478686804060,\"1009269961283\":1509788624389,\"1003643937467\":1478686804060,\"1003643937464\":1478686804060,\"1003643937465\":1478686804060,\"1021559002819\":1509788624397,\"1003643937462\":1478686804060,\"1024374672921\":1509788624533,\"1025901286174\":1509788667788,\"1024487262032\":1509788624920,\"1025876252062\":1509788667406,\"1021914603943\":1478686417141,\"1021888258623\":1478686417137,\"1018901673014\":1509788624282,\"1025883853825\":1509788667451,\"1026223464670\":1514456869766,\"1024487262077\":1509788624920,\"1022029298429\":1478686417164,\"1024487262079\":1509788624920,\"1024487262073\":1509788624920,\"1017311351600\":1478686804019,\"1024487262069\":1509788624920,\"1024487262068\":1509788624920,\"1023005532325\":1509788624389,\"1024487262071\":1509788624920,\"1024487262070\":1509788624920,\"1024487262065\":1509788624920,\"1022456856687\":1509788625018,\"1024487262061\":1509788624920,\"1024487262057\":1509788624920,\"1024487262052\":1509788624920,\"1021254518958\":1478686416979,\"1025791711964\":1509788667606,\"1020944529959\":1478686417084,\"1024663428510\":1509788625003,\"1025791711966\":1509788667600,\"1024663428505\":1509788625003,\"1025791711960\":1509788667617,\"1025791711962\":1509788667595,\"1024374672991\":1509788624194,\"1025791711952\":1509788667649,\"1024663428498\":1509788625003,\"1025791711954\":1509788667617,\"1024663428492\":1509788625003,\"1024663428495\":1509788625003,\"1025791711951\":1509788667650,\"1021885768221\":1478686417257,\"1001644734865\":1444487341702,\"1669852240\":1478686804029,\"1024663428486\":1509788625003,\"1021381787689\":1478686417105,\"1024663428480\":1509788625003,\"1017554363900\":1465470268315,\"1021941481329\":1478686417143,\"1021329883906\":1478686417041,\"1021885768225\":1478686417258,\"1003643937487\":1478686804060,\"1025035020228\":1509788625023,\"1025791711976\":1509788667600,\"1003643937480\":1478686804060,\"1003643937478\":1478686804060,\"1024663428517\":1509788625003,\"1003643937479\":1478686804060,\"1024663428516\":1509788625003,\"1025791711972\":1509788667600,\"1021309961670\":1465470268202,\"1024663428519\":1509788625003,\"1021309961671\":1465470268202,\"1003643937477\":1478686804060,\"1003643937475\":1478686804060,\"1022461575269\":1478686417072,\"1003643937472\":1478686804060,\"1024663428515\":1509788625003,\"1025791711971\":1509788667600,\"1021301840570\":1480585069071,\"1021247838200\":1478686416986,\"1019612755268\":1509788624354,\"1021623356804\":1509788624404,\"941729851\":1491634246519,\"1020257967339\":1465470268311,\"1025428115593\":1509788625128,\"1026225045261\":1514456869772,\"1025428115599\":1509788625128,\"1021994558296\":1478686417156,\"1025428115586\":1509788625128,\"1022038992516\":1478686417168,\"1025428115589\":1509788625104,\"1025428115588\":1509788625128,\"1025428115591\":1509788625112,\"1025428115590\":1509788625129,\"1021515089879\":1509788624401,\"1025428115611\":1509788625136,\"1025428115610\":1509788625135,\"1025428115612\":1509788625135,\"1021581412900\":1509788624401,\"1020667311193\":1478686804022,\"1025428115601\":1509788625127,\"1025428115600\":1509788625127,\"1025428115603\":1509788625127,\"1025428115605\":1509788625127,\"1024244574568\":1509788624949,\"1025428115606\":1509788625127,\"1002930508784\":1478686804059,\"1002930508778\":1478686804059,\"1023319724583\":1509788625019,\"1002930508779\":1478686804059,\"1002930508780\":1478686804059,\"1002930508782\":1478686804059,\"1023319724579\":1509788624926,\"1002930508783\":1478686804059,\"1012116174432\":1478686416993,\"1024847056144\":1509788624969,\"1023830651322\":1509788625016,\"1002930508773\":1478686804059,\"1023319724565\":1509788624926,\"1009710761980\":1480585069062,\"840409712\":1478950494917,\"1022092863996\":1478686417180,\"1023319724549\":1509788624926,\"1022463549196\":1478686804067,\"1021937148076\":1478686417143,\"1022089849300\":1478686417062,\"1023319724545\":1509788624926,\"1023319724559\":1509788624957,\"1023319724553\":1509788624925,\"1022240854563\":1478686417283,\"1023638750707\":1509788624326,\"1022286861676\":1478686417198,\"1022240854568\":1478686417283,\"1023638750694\":1509788624326,\"1021787993909\":1509788624394,\"1019287290427\":1509788625079,\"1023988070919\":1509788624494,\"1023638750703\":1509788624326,\"1025070807733\":1509788624305,\"1023638750674\":1509788624326,\"1021300005488\":1480585069071,\"1023638750679\":1509788624326,\"1021768988262\":1509788624395,\"1021539731656\":1509788624902,\"1021539731657\":1509788624902,\"1025216685028\":1509788667495,\"989309535\":1478950494919,\"1023638750681\":1509788624326,\"1021539731654\":1509788624902,\"1021539731655\":1509788624902,\"1021539731652\":1509788624902,\"1020925387683\":1478686417082,\"1023638750682\":1509788624326,\"1021539731653\":1509788624902,\"1023638750685\":1509788624326,\"1021539731650\":1509788624902,\"1023638750684\":1509788624326,\"1021539731651\":1509788624902,\"1021539731648\":1509788624902,\"1023638750686\":1509788624326,\"1021539731649\":1509788624902,\"1021770036838\":1509788624194,\"1023638750663\":1509788624326,\"1021033654796\":1478686417091,\"360285632\":1444487341743,\"1023638750667\":1509788624326,\"1023638750669\":1509788624326,\"1021539731664\":1509788624902,\"1020531772477\":1480585069077,\"1021539731630\":1509788624902,\"1020531772483\":1480585069077,\"1021539731628\":1509788624902,\"1021539731626\":1509788624902,\"1018674789781\":1478686804024,\"1020531772485\":1480585069077,\"1021539731625\":1509788624902,\"1020531772490\":1480585069077,\"1020531772489\":1480585069077,\"1020531772494\":1480585069077,\"1020531772492\":1480585069077,\"1020531772493\":1480585069077,\"1020531772499\":1480585069077,\"1023638750624\":1509788624968,\"1020531772496\":1480585069077,\"1021539731642\":1509788624902,\"1025428115580\":1509788625245,\"1023638750631\":1509788624968,\"1025428115583\":1509788625245,\"1020531772501\":1480585069077,\"1021539731641\":1509788624902,\"1023638750630\":1509788624968,\"1023638750632\":1509788624968,\"1022826624256\":1509788625054,\"1021363707442\":1509788624433,\"1022454374152\":1478686417216,\"1023638750608\":1509788624968,\"1023638750611\":1509788624968,\"1022454374156\":1478686417216,\"1023638750612\":1509788624968,\"1023638750615\":1509788624968,\"1018553677453\":1478686804019,\"1023638750614\":1509788624968,\"1023638750617\":1509788624968,\"1023638750620\":1509788624968,\"1019817222607\":1509788624302,\"1016301563999\":1480585069066,\"1022454374160\":1478686417216,\"1022454374163\":1478686417216,\"1022454374162\":1478686417216,\"1023638750605\":1509788624968,\"1023638750607\":1509788624968,\"1024342224502\":1509788625031,\"407603537\":1478950494909,\"1021797561872\":1509788624394,\"1022463549012\":1478686804067,\"1025592875980\":1509788624930,\"548385263\":1478686417019,\"1022352922960\":1478686417203,\"1022316877683\":1478686417068,\"1019287290852\":1509788625080,\"1022316877686\":1478686417068,\"1021076122946\":1478686417093,\"1022316877684\":1478686417068,\"1024244574218\":1509788624949,\"1021611953503\":1509788625080,\"1021793236502\":1478686417129,\"1020960646268\":1478686417033,\"1010770757434\":1478950494939,\"1615851826\":1444487341730,\"1020542520428\":1509788624354,\"848667398\":1478950494917,\"1369161740\":1478686804054,\"1407828593\":1491634246505,\"1019448511151\":1478686804021,\"1025400057812\":1509788624293,\"1022197853938\":1478686417189,\"1025400057814\":1509788624293,\"1025731937066\":1509788624922,\"1020462696725\":1465470268260,\"1021513648050\":1478686416980,\"1021513648051\":1478686416981,\"1025400057817\":1509788624293,\"1025400057819\":1509788624293,\"1021584034405\":1478686417114,\"1021508011977\":1509788624974,\"1021513648037\":1478686416980,\"1010091671309\":1478686804046,\"1020605837811\":1478686417224,\"1021512075256\":1478686417244,\"1023995149311\":1491634246529,\"1024953759011\":1509788624269,\"1021992723107\":1478686417156,\"1024953759010\":1509788624192,\"1022178455477\":1509788624935,\"1021530818245\":1478686417244,\"1021530818243\":1478686417244,\"1021247837738\":1478686417039,\"1009673143296\":1478686804064,\"1579798477\":1444487341726,\"1021175354304\":1465470268188,\"1021175354305\":1465470268188,\"1024194373560\":1509788625071,\"1021374455740\":1478686417104,\"1022045284274\":1478686417171,\"1022645602434\":1480585069134,\"1024454235348\":1509788624989,\"1022645602433\":1480585069134,\"1022645602439\":1480585069134,\"1022645602438\":1480585069134,\"1021517579737\":1509788624398,\"1024454235344\":1509788624989,\"1022645602437\":1480585069134,\"1022645602436\":1480585069134,\"1024454235357\":1509788624990,\"1024454235359\":1509788624990,\"1022645602447\":1480585069134,\"1024454235352\":1509788624990,\"1022645602445\":1480585069134,\"1023638751073\":1509788624968,\"1022645602450\":1480585069134,\"1023638751072\":1509788624968,\"1024454235334\":1509788624990,\"1023638751076\":1509788624968,\"1023638751079\":1509788624968,\"1023638751083\":1509788624969,\"1024454235342\":1509788624990,\"1023638751084\":1509788624968,\"1022076218033\":1509788625019,\"1022076218034\":1509788625016,\"1023638751061\":1509788624968,\"1022645602470\":1480585069134,\"1021982105641\":1509788624821,\"1023638751063\":1509788624969,\"1023638751062\":1509788624969,\"1023638751065\":1509788624969,\"1022645602474\":1480585069134,\"1023638751067\":1509788624969,\"1022645602472\":1480585069134,\"1024186639490\":1509788625166,\"1022645602479\":1480585069134,\"1022645602478\":1480585069134,\"1023638751068\":1509788624969,\"1024244706173\":1509788624948,\"1022645602476\":1480585069134,\"1023638751070\":1509788624968,\"1022645602483\":1480585069134,\"1022645733555\":1509788624434,\"1022645602480\":1480585069134,\"1022645602486\":1480585069134,\"1022645602485\":1480585069134,\"1022645602484\":1480585069134,\"1022645602491\":1480585069134,\"1022645602488\":1480585069134,\"1022645602495\":1480585069135,\"1022645602494\":1480585069134,\"1022645602498\":1480585069135,\"1022645602497\":1480585069135,\"1022645602496\":1480585069135,\"1022645602503\":1480585069135,\"1023638751028\":1509788624968,\"1022645602501\":1480585069135,\"1023638751031\":1509788624968,\"1023638751030\":1509788624968,\"1025050884972\":1509788624457,\"1022645602505\":1480585069135,\"1023638751034\":1509788624968,\"1023638751036\":1509788624968,\"1021965853514\":1509788624536,\"1022043317310\":1478686417058,\"1023638751013\":1509788624968,\"1002288828323\":1478686417024,\"1021925752117\":1478686804065,\"1025050884987\":1509788624457,\"1023638751023\":1509788624968,\"1022566827786\":1509788625075,\"1025050884935\":1509788624457,\"1023638750996\":1509788624968,\"1024454235315\":1509788624990,\"1021631745909\":1478686417248,\"1024454235314\":1509788624990,\"1023638751001\":1509788624968,\"1022079625782\":1478686417178,\"1023638751003\":1509788624968,\"1025050884942\":1509788624458,\"1023638751002\":1509788624968,\"1025050884937\":1509788624458,\"1023638751005\":1509788624968,\"941730382\":1491634246519,\"1022201916774\":1478686417280,\"1025050884949\":1509788624457,\"1025050884944\":1509788624458,\"1025050884957\":1509788624457,\"1024454235308\":1509788624990,\"1024454235310\":1509788624990,\"1023638750988\":1509788624968,\"1024454235307\":1509788624990,\"1025050884954\":1509788624458,\"1023638751217\":1509788624966,\"1023638751221\":1509788624966,\"1023638751225\":1509788624966,\"1023638751224\":1509788624966,\"1023638751227\":1509788624966,\"1025050885033\":1509788624457,\"1021307476168\":1480585069071,\"1023638751231\":1509788624966,\"1025050885045\":1509788624457,\"1022187105639\":1478686417064,\"1023638751205\":1509788624966,\"1023638751206\":1509788624966,\"1021483894619\":1478686417046,\"1021483894616\":1478686417046,\"1025050885054\":1509788624457,\"1023638751212\":1509788624966,\"1023638751215\":1509788624966,\"1022866339300\":1509788624439,\"1022866339291\":1509788624439,\"1022866339295\":1509788624439,\"1427228600\":1444487341742,\"1025050885004\":1509788624457,\"1025050885000\":1509788624457,\"1025050885015\":1509788624457,\"1025715553072\":1509788625021,\"1021700436026\":1478686804046,\"1024045350902\":1509788624378,\"1023638751154\":1509788624966,\"1025050885089\":1509788624457,\"1023638751159\":1509788624966,\"1025050885090\":1509788624457,\"1024045350909\":1509788624377,\"1022129170817\":1478686417184,\"1024045350911\":1509788624378,\"1024045350910\":1509788624378,\"1024045350905\":1509788624378,\"1024045350904\":1509788624378,\"1022054327564\":1478686416977,\"1024045350907\":1509788624378,\"1024045350906\":1509788624378,\"1023638751141\":1509788624966,\"1023638751145\":1509788624966,\"1021925752241\":1478686804032,\"1023638751144\":1509788624966,\"1023638751147\":1509788624966,\"1021549169442\":1478686417008,\"1008821039198\":1509788624388,\"1023638751121\":1509788624966,\"1023638751122\":1509788624966,\"1022645602407\":1480585069134,\"1023638751127\":1509788624966,\"1025050885058\":1509788624457,\"1023638751126\":1509788624966,\"1022645602410\":1480585069134,\"1023638751131\":1509788624966,\"1021168537701\":1478686417098,\"1022645602408\":1480585069134,\"1025050885070\":1509788624457,\"1023638751130\":1509788624966,\"1023638751132\":1509788624966,\"1022645602413\":1480585069134,\"1022645602419\":1480585069134,\"1022645602416\":1480585069134,\"1022645602423\":1480585069134,\"1022645602422\":1480585069134,\"1020646732114\":1478686417028,\"1022645602421\":1480585069134,\"1022645602420\":1480585069134,\"1022645602427\":1480585069134,\"1025050885085\":1509788624457,\"1022645602426\":1480585069134,\"1025050885087\":1509788624457,\"1025050885081\":1509788624457,\"1022645602430\":1480585069134,\"989309430\":1478950494919,\"1020896158152\":1478686417079,\"1016936486343\":1478686804021,\"1024403902687\":1509788624419,\"1024737477881\":1509788625021,\"1023319724409\":1509788624925,\"1023638750817\":1509788624968,\"1008992747356\":1465470268313,\"1025007498440\":1509788624977,\"1023638750821\":1509788624968,\"1023638750820\":1509788624968,\"1023638750823\":1509788624968,\"1023638750822\":1509788624968,\"1023638750825\":1509788624968,\"1023032140417\":1509788667889,\"1023638750827\":1509788624968,\"1025564957594\":1509788624306,\"1023638750829\":1509788624968,\"1020973098319\":1478686417086,\"1023638750830\":1509788624968,\"1023032140472\":1509788667843,\"1023638750802\":1509788624968,\"1023638750805\":1509788624968,\"1021116099723\":1478686417095,\"1023638750808\":1509788624968,\"1023638750810\":1509788624968,\"1020257705944\":1465470268311,\"1022290531993\":1478686417068,\"1020261900168\":1478686804039,\"1025278944432\":1509788625002,\"1025876248878\":1509788667406,\"1021770036719\":1509788624533,\"1024403902615\":1509788624819,\"1021317830893\":1478686417041,\"1014746697784\":1478686804022,\"1021376552302\":1478686417105,\"1021411148667\":1478686417043,\"1025278944476\":1509788624999,\"1025278944472\":1509788624997,\"1025278944474\":1509788624997,\"1025040530074\":1509788624183,\"1025040530073\":1509788624183,\"1025278944470\":1509788624997,\"1023638750737\":1509788624968,\"1023638750736\":1509788624968,\"1023638750739\":1509788624968,\"1021597927541\":1509788624397,\"1023638750741\":1509788624968,\"1023638750743\":1509788624968,\"1023638750744\":1509788624968,\"1025278944484\":1509788625083,\"1000143539888\":1478686804029,\"1023638750749\":1509788624968,\"1023638750748\":1509788624968,\"1025386032731\":1509788624467,\"1025386032730\":1509788624467,\"1025386032729\":1509788624467,\"1023638750723\":1509788624968,\"1025386032728\":1509788624467,\"1023638750724\":1509788624968,\"1025386032732\":1509788624467,\"1023638750726\":1509788624968,\"1025386032727\":1509788624467,\"1025386032726\":1509788624467,\"1023638750732\":1509788624968,\"1025386032725\":1509788624467,\"1023638750735\":1509788624968,\"1022645602563\":1480585069135,\"1022088800849\":1478686417012,\"1022645602562\":1480585069135,\"1022645602567\":1480585069135,\"1022156959269\":1478686417063,\"1020871254979\":1478686417227,\"1022645602564\":1480585069135,\"1023319724530\":1509788624925,\"1022645602571\":1480585069135,\"1021485073956\":1509788624863,\"1025278944261\":1509788624999,\"1021485073957\":1509788624863,\"1023277519728\":1509788625041,\"1022645602569\":1480585069135,\"1021485073958\":1509788624863,\"1021485073959\":1509788624863,\"1022645602573\":1480585069135,\"1023319724538\":1509788624933,\"1023319724517\":1509788624957,\"1022645602578\":1480585069135,\"1022455159918\":1478686417297,\"1023319724518\":1509788624925,\"1020604920754\":1478686417075,\"1025278944281\":1509788624999,\"1022645602584\":1480585069135,\"1022645602591\":1480585069135,\"1023319724520\":1509788624925,\"1022645602595\":1480585069135,\"1023319724501\":1509788624926,\"1023638750929\":1509788624968,\"1022645602594\":1480585069135,\"1025278944300\":1509788625002,\"1023638750930\":1509788624968,\"1022645602599\":1480585069135,\"1023638750933\":1509788624968,\"1022645602598\":1480585069135,\"1022645602597\":1480585069135,\"1023638750935\":1509788624968,\"1023319724498\":1509788624925,\"1021967425862\":1509788624464,\"1025619089645\":1509788625107,\"1023638750938\":1509788624968,\"1025619089644\":1509788625124,\"1025619089643\":1509788625115,\"1025040530030\":1509788624183,\"1022463548627\":1478686804067,\"1022471799633\":1480585069127,\"1022471799629\":1480585069127,\"1022645602609\":1480585069135,\"1023319724487\":1509788624926,\"1025278944318\":1509788625084,\"1025619089649\":1509788625087,\"1023638750918\":1509788624968,\"1022645602619\":1480585069135,\"1023088240537\":1509788624439,\"1022471799621\":1480585069121,\"1022645602617\":1480585069135,\"1023638750925\":1509788624968,\"543798231\":1478950494911,\"1023088240609\":1509788624439,\"1013285093205\":1480585069065,\"1022471799614\":1480585069127,\"1022645602626\":1480585069135,\"1025516983998\":1509788624308,\"1023638750898\":1509788624968,\"1022645602630\":1480585069135,\"1023432448632\":1509788624519,\"1023638750902\":1509788624968,\"1023638750905\":1509788624968,\"1022645602634\":1480585069135,\"1023638750907\":1509788624968,\"1023638750911\":1509788624968,\"1025793410355\":1509788624519,\"1023319724454\":1509788624926,\"1025278944350\":1509788625084,\"1023088240629\":1509788624439,\"1023319724448\":1509788624925,\"1021919198235\":1509788624548,\"1024403902477\":1509788624533,\"1023638750893\":1509788624968,\"1023319724456\":1509788624925,\"1023319724459\":1509788624933,\"1023319724458\":1509788624932,\"1023319724437\":1509788624926,\"1023319724439\":1509788624926,\"1023319724438\":1509788624925,\"1023032140415\":1509788667890,\"1023319724434\":1509788624925,\"1023319724444\":1509788624925,\"1025736524205\":1508316495865,\"1023032140392\":1509788667843,\"1019013747432\":1478686804049,\"1019013747433\":1478686804049,\"1019013747430\":1478686804049,\"1021581281769\":1478686417246,\"1019013747431\":1478686804049,\"1019013747428\":1478686804049,\"1019013747429\":1478686804049,\"1019013747427\":1478686804049,\"1023319724426\":1509788624925,\"1022438775543\":1480585069099,\"1021650619379\":1478686417049,\"1022438775542\":1480585069099,\"1022608772308\":1509788625075,\"1022438775541\":1480585069099,\"1023924630085\":1509788624961,\"1022438775540\":1480585069099,\"1025428116650\":1509788624434,\"1019977920389\":1509788625018,\"1022438775538\":1480585069099,\"1022524491742\":1509788625064,\"1022438775537\":1480585069099,\"1022438775549\":1480585069099,\"1022438775548\":1480585069099,\"1025428116642\":1509788624510,\"1022438775547\":1480585069099,\"1019977920394\":1509788625018,\"1025428116644\":1509788624511,\"1022438775545\":1480585069099,\"1025428116647\":1509788624424,\"1022438775544\":1480585069099,\"1025428116646\":1509788624433,\"1019977920407\":1509788625017,\"122262362\":1444487341747,\"1022438775522\":1480585069099,\"1022438775520\":1480585069099,\"1025428116670\":1509788624432,\"1001645515339\":1444487341708,\"1019977920411\":1509788625018,\"1022438775510\":1480585069099,\"1025869958737\":1509788667582,\"1025869958736\":1509788667653,\"1019977920418\":1509788625018,\"1021395426080\":1509788625082,\"1022438775506\":1480585069099,\"1022438775518\":1480585069099,\"1022438775517\":1480585069099,\"1019977920429\":1509788625018,\"1022438775514\":1480585069099,\"1021303021240\":1465469681397,\"1022438775503\":1480585069099,\"1025869958731\":1509788667596,\"1022438775502\":1480585069099,\"1025869958730\":1509788667665,\"1002930509698\":1478686804059,\"1022438775501\":1480585069099,\"1025869958729\":1509788667674,\"1002930509699\":1478686804059,\"1025869958728\":1509788667669,\"1022036107976\":1478686416973,\"1002930509700\":1478686804059,\"1022438775499\":1480585069099,\"1002930509701\":1478686804059,\"1019977920440\":1509788625018,\"1025869958733\":1509788667593,\"1025869958732\":1509788667598,\"1020861818038\":1478686804058,\"1020861818039\":1478686804058,\"1022438775478\":1480585069099,\"1020861818036\":1478686804058,\"1022438775477\":1480585069099,\"1020861818037\":1478686804058,\"1022438775476\":1480585069099,\"1020861818034\":1478686804058,\"1022438775475\":1480585069099,\"1020861818035\":1478686804058,\"1022438775474\":1480585069099,\"1016858629594\":1509788624976,\"1020861818040\":1478686804058,\"1020861818041\":1478686804058,\"1022438775480\":1480585069099,\"1022438775463\":1480585069099,\"1023149845701\":1509788625045,\"1022438775462\":1480585069099,\"1022438775461\":1480585069098,\"1025869958695\":1509788667414,\"1025869958698\":1509788667408,\"1022438775469\":1480585069099,\"1025869958697\":1509788667412,\"1025869958696\":1509788667413,\"1022337588385\":1478686417201,\"1022438775465\":1480585069099,\"1025428116686\":1509788624432,\"1025278944234\":1509788625001,\"1025428116672\":1509788624432,\"1025278944231\":1509788625084,\"1022438775431\":1480585069098,\"1025869958659\":1509788667913,\"1022438775429\":1480585069098,\"1022438775427\":1480585069098,\"1022438775426\":1480585069098,\"1025428116700\":1509788624467,\"1025869958662\":1509788667909,\"1022438775425\":1480585069098,\"1025278944245\":1509788624999,\"1025869958666\":1509788667892,\"1021248099255\":1478686417236,\"1022438775436\":1480585069098,\"1025869958664\":1509788667917,\"1022438775435\":1480585069098,\"1022438775434\":1480585069098,\"1022438775433\":1480585069098,\"1022438775432\":1480585069098,\"1023730896780\":1509788624960,\"1021885512050\":1478686417044,\"1022148044960\":1509788624944,\"4564026497\":1465469681387,\"1014743422728\":1480585069067,\"1025458394731\":1509788624351,\"1010002279577\":1491634246524,\"1022127075273\":1509788624338,\"1022127075275\":1509788624338,\"1024943798051\":1509788624563,\"1019977920290\":1509788625018,\"1022079495399\":1478686417061,\"1021263305804\":1478686417004,\"1022204810337\":1480585069085,\"1024943798063\":1509788624563,\"1021955630345\":1509788624464,\"1019977920301\":1509788625018,\"1024943798059\":1509788624563,\"1024943798057\":1509788624563,\"1024943798056\":1509788624563,\"1019977920307\":1509788625018,\"1019977920304\":1509788625017,\"1021311671998\":1465470268206,\"1021311671999\":1465470268206,\"1021311671996\":1465470268206,\"1021311671997\":1465470268206,\"1021311671994\":1465470268205,\"1024132376411\":1509788624326,\"1019977920313\":1509788625018,\"1002930509690\":1478686804059,\"1021323599752\":1465470268210,\"1021323599753\":1465470268210,\"1002930509693\":1478686804059,\"1002930509694\":1478686804059,\"1020262815821\":1465470268236,\"1002930509695\":1478686804059,\"1019977920335\":1509788625018,\"1019977920333\":1509788625018,\"1020295584378\":1509788625077,\"1022532618124\":1509788667501,\"1019977920339\":1509788625020,\"1016092493807\":1509788624941,\"1019977920350\":1509788625018,\"1019977920344\":1509788625018,\"1019977920358\":1509788625018,\"1022011203731\":1478686417159,\"1024586357265\":1509788624409,\"1019977920354\":1509788625018,\"1024586357267\":1509788624409,\"1019977920367\":1509788625018,\"1019977920364\":1509788625018,\"1024586357253\":1509788624409,\"1021734907965\":1478686417051,\"1019977920371\":1509788625018,\"1019977920368\":1509788625018,\"1024586357250\":1509788624409,\"1024586357260\":1509788624409,\"1024586357262\":1509788624409,\"1024586357256\":1509788624409,\"1024586357258\":1509788624409,\"1025050885158\":1509788624568,\"1021584035535\":1478686417114,\"1025279468170\":1509788624222,\"1020878464224\":1509788624934,\"1020878464225\":1509788624934,\"1025050885171\":1509788624568,\"1025050885124\":1509788624567,\"1012265990664\":1478686417025,\"1021770691470\":1478686417009,\"1016758742592\":1465470268315,\"1020878464222\":1509788624934,\"1020878464223\":1509788624934,\"1021242331915\":1478686417236,\"1015048421444\":1478686804040,\"1023796038437\":1509788624448,\"1024764349805\":1509788625024,\"1023796038436\":1509788624448,\"1023796038439\":1509788624448,\"1023796038438\":1509788624448,\"1023796038443\":1509788624448,\"1023110128591\":1509788624299,\"1025050885223\":1509788624567,\"1022035583928\":1478686417167,\"1020977161043\":1478686804039,\"1025050885218\":1509788624568,\"1025050885229\":1509788624567,\"1025050885228\":1509788624567,\"1021438019540\":1478686417241,\"1025050885231\":1509788624567,\"1008048087523\":1478686804025,\"1008048087522\":1478686804030,\"1025050885238\":1509788624567,\"1025050885233\":1509788624567,\"1025906133375\":1509788667458,\"1010002279789\":1491634246524,\"1023924630290\":1509788624961,\"1025050885235\":1509788624568,\"1025050885244\":1509788624568,\"1499843643\":1478686417023,\"1025050885243\":1509788624567,\"1025050885189\":1509788624568,\"1022438775701\":1480585069100,\"1025050885191\":1509788624568,\"1022438775697\":1480585069100,\"1022438775696\":1480585069100,\"1025050885194\":1509788624568,\"1022438775687\":1480585069100,\"1022438775686\":1480585069100,\"1025050885204\":1509788624567,\"1025050885200\":1509788624567,\"1024587406258\":1509788625070,\"1022438775695\":1480585069100,\"1025050885212\":1509788624567,\"1025050885215\":1509788624567,\"1022438775692\":1480585069100,\"1022438775691\":1480585069100,\"1022438775690\":1480585069100,\"1025050885208\":1509788624567,\"1022438775689\":1480585069100,\"1022438775688\":1480585069100,\"1025050885210\":1509788624568,\"1021646031796\":1478686417248,\"1022438775671\":1480585069100,\"1022438775670\":1480585069100,\"1022438775668\":1480585069100,\"1022053540429\":1509788625075,\"1025428116778\":1509788625127,\"1022438775667\":1480585069100,\"1025428116781\":1509788625127,\"1001385210458\":1480585069061,\"1022438775665\":1480585069100,\"1025050885290\":1509788624232,\"1022438775655\":1480585069099,\"1022438775653\":1480585069099,\"1025050885303\":1509788624232,\"1022438775651\":1480585069099,\"1022438775650\":1480585069099,\"1025428116796\":1509788625135,\"1025050885298\":1509788624232,\"1025050885309\":1509788624232,\"1025050885308\":1509788624232,\"1023988989704\":1509788625037,\"1021537504535\":1509788624397,\"1022438775659\":1480585069100,\"1025050885305\":1509788624232,\"1025050885304\":1509788624232,\"1025428116788\":1509788625127,\"1025428116791\":1509788625127,\"1022438775656\":1480585069099,\"1025050885306\":1509788624232,\"1022438775633\":1480585069099,\"1018016142137\":1509788624372,\"1025428116763\":1509788625244,\"1022438775619\":1480585069099,\"1025428116764\":1509788625245,\"1022438775616\":1480585069099,\"1025428116766\":1509788625128,\"1022438775628\":1480585069099,\"1022438775607\":1480585069099,\"1022438775612\":1480585069099,\"1022438775609\":1480585069099,\"1022438775608\":1480585069099,\"1020861818150\":1478686804034,\"1020861818151\":1478686804034,\"1020861818148\":1478686804034,\"1020861818149\":1478686804034,\"1020861818146\":1478686804034,\"1020861818147\":1478686804034,\"1020805331334\":1478686417030,\"1020861818144\":1478686804034,\"1020861818145\":1478686804034,\"1020861818152\":1478686804034,\"1020861818153\":1478686804034,\"1022438775573\":1480585069099,\"1021749325832\":1509788624403,\"1022438775570\":1480585069099,\"1020861818142\":1478686804034,\"1020861818143\":1478686804034,\"1020861818140\":1478686804034,\"1020861818141\":1478686804034,\"1020861818138\":1478686804034,\"1020861818139\":1478686804034,\"1022438775577\":1480585069099,\"1022438775559\":1480585069099,\"1025279468148\":1509788624222,\"1022438775557\":1480585069099,\"1022438775556\":1480585069099,\"1025619091122\":1509788624425,\"1012039890778\":1478686417025,\"1025619091121\":1509788624428,\"1025619091120\":1509788624431,\"1022438775567\":1480585069099,\"1025619091135\":1509788624406,\"1022438775564\":1480585069099,\"1025279468153\":1509788624222,\"1022438775562\":1480585069099,\"1022438775561\":1480585069099,\"1025279468155\":1509788624222,\"1022438775560\":1480585069099,\"1025279468154\":1509788624222,\"1024586356983\":1509788624410,\"1020987253116\":1478686417088,\"1022010024547\":1478686417159,\"1021053054315\":1478686417036,\"1024586356978\":1509788624410,\"1024586356989\":1509788624410,\"1009269959630\":1509788624389,\"1024586356988\":1509788624410,\"1022622404591\":1480585069131,\"1024586356991\":1509788624410,\"1022010024554\":1478686417159,\"1024586356985\":1509788624410,\"1024607984006\":1509788667589,\"1024586356987\":1509788624410,\"1001645514847\":1444487341708,\"1024586356986\":1509788624410,\"1025551192426\":1509788624341,\"1024586356972\":1509788624410,\"1024586356974\":1509788624410,\"1023769693084\":1509788624969,\"1024586356946\":1509788625092,\"1022386871749\":1478686417290,\"1024586356935\":1509788625091,\"1024586356928\":1509788625091,\"1022010024543\":1478686417159,\"1024586356943\":1509788625091,\"1025017590047\":1509788624437,\"1021387430333\":1478686417300,\"1010681235359\":1480585069072,\"1024586356938\":1509788625091,\"1024586356918\":1509788625091,\"1018024923562\":1509788624372,\"1010681235429\":1480585069072,\"1024586356915\":1509788625091,\"1021584035202\":1478686417114,\"1013285092060\":1480585069065,\"1024586356921\":1509788625091,\"1024586356923\":1509788625091,\"1022255666574\":1478686417196,\"1018209338558\":1478686804066,\"1021053054271\":1478686417036,\"1018209338559\":1478686804066,\"1025415522618\":1509788624346,\"1016863217533\":1478686804018,\"1021261861195\":1478686804039,\"1024586356905\":1509788625091,\"1024586356904\":1509788625091,\"1024586356906\":1509788625091,\"1024586356881\":1509788625091,\"1025585798950\":1509788624350,\"1023692361304\":1509788624325,\"1013185867799\":1478686804025,\"1025585798952\":1509788624351,\"1022071893668\":1478686417176,\"1024586356870\":1509788625091,\"1024586356864\":1509788625091,\"1024586356876\":1509788625091,\"1024586356878\":1509788625091,\"1021156349752\":1478686417038,\"1020294142167\":1465470268292,\"1023924629560\":1509788624961,\"1024586356874\":1509788625091,\"1024586356853\":1509788625091,\"1022256715092\":1478686417284,\"1026232378975\":1514456869770,\"1024586356850\":1509788625091,\"1011694246863\":1478686804061,\"1011694246860\":1478686804061,\"1011694246858\":1478686804061,\"431984433\":1491634246504,\"1025599429634\":1509788624437,\"1020961038461\":1478686417033,\"1009525430809\":1478686804015,\"1011694246867\":1478686804061,\"1011279323788\":1480585069074,\"1021574597868\":1509788624492,\"1024586356835\":1509788625091,\"1024586356834\":1509788625091,\"1024586356845\":1509788625091,\"1303370550\":1444487341717,\"229874476\":1478950494907,\"1024586356842\":1509788625091,\"1303370511\":1444487341723,\"1022190905630\":1478686417188,\"1021873453608\":1478686417053,\"1022190905628\":1478686417188,\"1242815670\":1478686417020,\"1023796037815\":1509788625160,\"1023796037814\":1509788625160,\"1023796037817\":1509788625160,\"1023796037816\":1509788625160,\"1242815673\":1478686417020,\"1023796037818\":1509788625160,\"1242815678\":1478686417020,\"1021249671525\":1478686417100,\"1022232205205\":1478686417193,\"1023687380702\":1509788625082,\"1025592876110\":1509788624930,\"1022065729930\":1478686417175,\"1023453420739\":1509788625008,\"1022232205208\":1478686417193,\"1023453420733\":1509788625008,\"1024953758252\":1509788624192,\"1023453420734\":1509788625008,\"1023453420728\":1509788625008,\"1024953758247\":1509788624192,\"1022847463506\":1509788624392,\"1023453420724\":1509788625008,\"1024953758245\":1509788624192,\"1022847463505\":1509788624392,\"1024953758270\":1509788624192,\"1024953758268\":1509788624192,\"1024953758267\":1509788624192,\"1023453420715\":1509788625008,\"1022059045197\":1509788624816,\"1024953758263\":1509788624192,\"1023453420711\":1509788625008,\"1011694246811\":1478686804061,\"1023453420707\":1509788625008,\"1022182648039\":1478686416975,\"1022145424017\":1478686417185,\"1011694246820\":1478686804061,\"1003492160193\":1478686417220,\"1020994334219\":1478686417088,\"1016858630008\":1509788624976,\"1021953402666\":1509788624466,\"1242815713\":1478686417020,\"1010681235282\":1480585069072,\"1024953758235\":1509788624192,\"1023924629683\":1509788624961,\"1024953758232\":1509788624192,\"1017230213552\":1478686804065,\"1023791843498\":1509788624173,\"1024953758227\":1509788624192,\"1022145424014\":1478686417184,\"1021491495502\":1478686417111,\"1024586357236\":1509788624409,\"1024586357238\":1509788624409,\"1025607687446\":1509788624973,\"1022866337916\":1509788624439,\"1024586357244\":1509788624409,\"288458299\":1478686417023,\"1016690319504\":1478686804063,\"1016690319499\":1478686804063,\"1016690319498\":1478686804063,\"1016690319497\":1478686804063,\"1016690319496\":1478686804063,\"1016690319503\":1478686804063,\"1016690319502\":1478686804063,\"1016690319501\":1478686804063,\"1016690319500\":1478686804063,\"1024936326402\":1509788625006,\"1013185868130\":1478686804025,\"1016690319495\":1478686804063,\"1019783673892\":1465470268236,\"1024895694714\":1509788624943,\"1016858629819\":1509788624976,\"1025146435769\":1509788624414,\"1023796037946\":1509788624562,\"4810574230\":1509788624155,\"1025146435775\":1509788624414,\"1025146435773\":1509788624414,\"1023796037951\":1509788624563,\"1023796037950\":1509788624563,\"1024586357189\":1509788624414,\"1024586357191\":1509788624414,\"1022238627318\":1509788624946,\"1021999408176\":1478686417157,\"1024586357185\":1509788624414,\"1022238627325\":1509788624931,\"1022238627324\":1509788624930,\"1024586357199\":1509788624414,\"1024586357198\":1509788624414,\"1024586357192\":1509788624414,\"1024586357195\":1509788624414,\"1024586357194\":1509788624414,\"1022059045029\":1509788624533,\"1022238627322\":1509788624932,\"1021049908476\":1478686417232,\"1022298264085\":1478686417199,\"1025146435793\":1509788624414,\"1021229093457\":1478686417039,\"1024586357180\":1509788624414,\"1022059045073\":1509788624194,\"1024586357182\":1509788624414,\"1025146435807\":1509788624414,\"1023891600146\":1509788624377,\"1024586357176\":1509788624414,\"1024586357179\":1509788624414,\"1023796037952\":1509788624563,\"1022196541462\":1478686417280,\"1023796037954\":1509788624563,\"1025146435785\":1509788624414,\"1025146435791\":1509788624414,\"1012495756028\":1478686804064,\"1025146435831\":1509788624414,\"1025146435830\":1509788624414,\"1025146435828\":1509788624414,\"1010010406602\":1491634246530,\"1024586357125\":1509788624411,\"1024586357127\":1509788624411,\"1025146435809\":1509788624414,\"1024586357121\":1509788624411,\"1025146435815\":1509788624414,\"1025146435814\":1509788624414,\"1024586357123\":1509788624411,\"1025146435813\":1509788624414,\"1025146435812\":1509788624414,\"1022201522277\":1478686417190,\"1024586357128\":1509788624411,\"1025146435821\":1509788624414,\"1021932042377\":1478686417010,\"1024586357111\":1509788624411,\"1024586357110\":1509788624411,\"1024586357117\":1509788624411,\"1024586357116\":1509788624411,\"1024586357118\":1509788624411,\"1024586357113\":1509788624411,\"1024586357112\":1509788624411,\"1020925650071\":1478686417000,\"1018030034986\":1509788624929,\"1020861818721\":1478686804057,\"1020925650073\":1478686417000,\"1023796038065\":1509788624223,\"1021931911340\":1478686417010,\"1013185868252\":1478686804032,\"1024586357073\":1509788624411,\"1012791203914\":1478686417224,\"1024586357063\":1509788624410,\"1021597666473\":1478686417115,\"1024586357057\":1509788624410,\"1024586357059\":1509788624410,\"1020667311065\":1478686804022,\"1022940134562\":1509788624508,\"1024586357069\":1509788624411,\"1023796038058\":1509788624223,\"1023796038061\":1509788624223,\"1023796038060\":1509788624223,\"1023796038062\":1509788624223,\"1014509052510\":1509788625017,\"1024586357047\":1509788624411,\"1024586357043\":1509788624410,\"1024586357053\":1509788624411,\"1025619090574\":1509788624746,\"1024586357055\":1509788624410,\"1024586357054\":1509788624411,\"1025619090572\":1509788624833,\"1024005241941\":1491634246533,\"1025619090571\":1509788624823,\"1024586357048\":1509788624411,\"1025619090570\":1509788624828,\"1024586357050\":1509788624411,\"1129174189\":1478686804029,\"1021394901225\":1509788624394,\"1023924629935\":1509788624961,\"1024586356997\":1509788624410,\"1025869958535\":1509788667515,\"1025869958534\":1509788667520,\"1025869958533\":1509788667517,\"1025869958537\":1509788667487,\"1024586357000\":1509788624410,\"1022021168600\":1509788624266,\"1022021168601\":1509788624267,\"1024055965332\":1509788624928,\"1008662691865\":1478686804030,\"1022021168592\":1509788624266,\"1021925750625\":1478686804048,\"1022021168593\":1509788624266,\"1021925750626\":1478686804048,\"1022021168594\":1509788624266,\"1021925750627\":1478686804048,\"1022811946162\":1509788624535,\"1021925750628\":1478686804048,\"1022021168596\":1509788624266,\"1021925750629\":1478686804048,\"1022021168597\":1509788624266,\"1022036504316\":1478686417267,\"1019421901477\":1478686804018,\"1022021168599\":1509788624266,\"1022811946166\":1509788624535,\"1022021168585\":1509788624267,\"1022021168586\":1509788624267,\"1018980050703\":1509788624315,\"1022021168589\":1509788624267,\"1022021168590\":1509788624266,\"1022021168591\":1509788624266,\"1003675006784\":1478686804060,\"1003675006785\":1478686804060,\"1022021168577\":1509788624267,\"1022021168578\":1509788624267,\"1022021168583\":1509788624266,\"1025609651157\":1509788624845,\"1025609651156\":1509788624845,\"1446366739\":1444487341752,\"1025609651152\":1509788624845,\"1022459090826\":1478686417217,\"1022459090829\":1478686417217,\"1025609651163\":1509788624845,\"1022021168617\":1509788624267,\"1025035415552\":1509788624269,\"1022292893114\":1478686417198,\"1021925750620\":1478686804048,\"1021925750621\":1478686804048,\"1021925750622\":1478686804048,\"1021295284517\":1478686417238,\"1022021168609\":1509788624267,\"1022021168610\":1509788624267,\"1022021168611\":1509788624267,\"1022021168613\":1509788624267,\"1025513971124\":1509788624344,\"1022021168536\":1509788625235,\"364219895\":1478686804024,\"1024586356407\":1509788624410,\"1022021168541\":1509788625235,\"1024586356403\":1509788624410,\"1024586356413\":1509788624410,\"1022811946225\":1509788624535,\"1022294203868\":1478686417015,\"1022811946224\":1509788624535,\"1022021168530\":1509788625235,\"1024586356414\":1509788624410,\"1022021168531\":1509788625235,\"1024586356409\":1509788624410,\"1022021168532\":1509788625235,\"1024586356411\":1509788624410,\"1024625150155\":1509788625100,\"1022021168534\":1509788625235,\"1022021168535\":1509788625235,\"1019524544728\":1509788624320,\"1024586356389\":1509788624410,\"1022021168521\":1509788625235,\"1024586356391\":1509788624410,\"1020610034081\":1509788624353,\"1022021168525\":1509788625235,\"1002155920794\":1478686804023,\"1024586356397\":1509788624410,\"1024586356396\":1509788624410,\"1022021168513\":1509788625235,\"1024586356393\":1509788624410,\"1022021168516\":1509788625236,\"1022021168517\":1509788625235,\"1024586356395\":1509788624410,\"1022021168518\":1509788625235,\"1022021168519\":1509788625235,\"1003675006776\":1478686804060,\"1003675006777\":1478686804060,\"1021925750539\":1478686804048,\"1021925750540\":1478686804048,\"1003675006780\":1478686804060,\"1021925750541\":1478686804048,\"1022021168573\":1509788624266,\"1024621217958\":1509788624939,\"1003675006768\":1478686804060,\"1003675006769\":1478686804060,\"1000526146691\":1444487341710,\"1025018773349\":1509788624462,\"1021925750532\":1478686804048,\"1021925750533\":1478686804048,\"1003675006773\":1478686804060,\"1000526146695\":1444487341721,\"1003675006760\":1478686804060,\"1022021168552\":1509788625235,\"1020770857520\":1478686417225,\"1003675006763\":1478686804060,\"1022021168555\":1509788625236,\"1003675006764\":1478686804060,\"1022021168556\":1509788625235,\"1003675006765\":1478686804060,\"1003675006766\":1478686804060,\"1022339551416\":1478686417069,\"1003675006754\":1478686804060,\"1022021168546\":1509788625235,\"1020933778676\":1478686417083,\"1003675006756\":1478686804060,\"1021938854108\":1509788624986,\"1022021168548\":1509788625235,\"1003675006757\":1478686804060,\"1003675006759\":1478686804060,\"1022152631652\":1478686417185,\"1022152631651\":1478686417185,\"1025179986197\":1509788624213,\"1022934496204\":1509788625052,\"1020436876964\":1478686804033,\"1021902288483\":1509788624465,\"1009849960385\":1478686804067,\"1021918410592\":1509788624827,\"1018199640345\":1509788625080,\"1024132377467\":1509788624326,\"1022021168506\":1509788625235,\"1022021168508\":1509788625236,\"1025628656755\":1509788624433,\"1022021168510\":1509788625236,\"1022062587885\":1478686417174,\"1022811945997\":1509788624535,\"1022455158603\":1478686417297,\"1022811945984\":1509788624535,\"1022274542619\":1478686417014,\"1025628656751\":1509788625001,\"1025628656750\":1509788625001,\"1007973119925\":1478686804032,\"1015591595474\":1478686804016,\"4979798042\":1509788624156,\"1023531013907\":1509788625082,\"1021850252083\":1509788625078,\"1025540579061\":1509788624302,\"1025540579062\":1509788624302,\"1022811946074\":1509788624535,\"1025540579059\":1509788624302,\"1020940332237\":1478686417084,\"1025540579068\":1509788624302,\"1022075822192\":1509788624416,\"1025540579070\":1509788624302,\"1020612655425\":1478686416982,\"1025540579064\":1509788624302,\"1025540579067\":1509788624302,\"1021681301745\":1509788624396,\"1022811946070\":1509788624535,\"1021661104036\":1509788624396,\"1021252558704\":1478686417236,\"1021252558705\":1478686417237,\"1025540579055\":1509788624303,\"1025540579051\":1509788624303,\"1024625150341\":1509788624533,\"1022811946417\":1509788624819,\"1024547689002\":1509788625070,\"1022013173084\":1478686417159,\"1022013173085\":1478686417159,\"1025540579097\":1509788624303,\"1022811946421\":1509788624819,\"1024625150344\":1509788624193,\"1021374453578\":1478686417104,\"1024586356709\":1509788625090,\"1024586356711\":1509788625090,\"1019105894031\":1478686804023,\"1024586356710\":1509788625090,\"1015242160348\":1480585069068,\"1019105894027\":1478686804032,\"1012392734396\":1478686417074,\"1024586356716\":1509788625091,\"1024586356713\":1509788625090,\"1022075036056\":1478686417012,\"1024586356715\":1509788625090,\"1024586356714\":1509788625090,\"1024586356693\":1509788625090,\"1024586356701\":1509788625090,\"1024586356703\":1509788625090,\"1024586356702\":1509788625090,\"1024586356697\":1509788625090,\"1024625150388\":1509788624819,\"1025909933349\":1509788667463,\"1022811946368\":1509788624819,\"821406132\":1491634246517,\"1025319313513\":1509788624181,\"1025319313524\":1509788624182,\"1022811946475\":1509788624819,\"1022811946474\":1509788624819,\"1020605184372\":1478686417224,\"1021113607848\":1478686417233,\"1021934266803\":1478686417055,\"1021934266800\":1478686417055,\"1022431302679\":1478686417212,\"1021589406411\":1478686417114,\"370773830\":1491634246519,\"1025319313477\":1509788624181,\"1025319313479\":1509788624182,\"1025319313473\":1509788624182,\"4979798453\":1509788624156,\"1025319313474\":1509788624182,\"1021784063635\":1478686417255,\"1025319313480\":1509788624182,\"1020982013650\":1478686417087,\"1025796952023\":1509788624406,\"1021477604770\":1478686417242,\"1010681235489\":1480585069072,\"1021244825487\":1478686417100,\"1018517765379\":1480585069070,\"1022240070463\":1478686417283,\"1025796951865\":1509788624185,\"1024973421653\":1509788624173,\"1025796951861\":1509788624203,\"1022811946273\":1509788624535,\"1024005239302\":1491634246533,\"1022811946267\":1509788624535,\"1023820560696\":1491634246535,\"1022469707441\":1478686417219,\"1024132377171\":1509788624326,\"1021925750443\":1478686804048,\"1021925750444\":1478686804048,\"1021925750445\":1478686804048,\"1021925750446\":1478686804048,\"1021925750447\":1478686804048,\"1022811946366\":1509788624819,\"1023220098448\":1509788625042,\"1025796951930\":1509788624832,\"1021925750448\":1478686804048,\"1021925750449\":1478686804048,\"1020653943427\":1478686804057,\"1021925750450\":1478686804048,\"1021925750451\":1478686804048,\"1021041255362\":1478686417092,\"1025301881293\":1509788624932,\"1022240070471\":1478686417283,\"1021041255372\":1478686417092,\"1021497921287\":1478686417244,\"1021918410263\":1509788624916,\"1021316649513\":1478686417238,\"1019028167638\":1509788624314,\"1020291258114\":1465470268317,\"1020438187982\":1478686804031,\"1021640525714\":1509788624815,\"1020438187981\":1478686804031,\"1022811946306\":1509788624819,\"1012120370692\":1478686417025,\"1022811946310\":1509788624819,\"1021061702935\":1509788624933,\"1019364101177\":1509788624312,\"1022811946683\":1509788624820,\"1023638753143\":1509788624966,\"1022811946686\":1509788624820,\"1023638753145\":1509788624966,\"1022146733653\":1478686417185,\"1023638753147\":1509788624966,\"1019166183919\":1478686804020,\"1023638753146\":1509788624966,\"1023638753149\":1509788624966,\"1023638753150\":1509788624966,\"1016609712212\":1478686804022,\"1024204074409\":1509788667509,\"1018447903434\":1509788624933,\"1009849959800\":1478686804067,\"1023820561079\":1491634246535,\"1022204812004\":1480585069084,\"1020951998372\":1478686417085,\"1024529731686\":1509788624428,\"1021885511620\":1478686417044,\"1022191822261\":1478686417279,\"1022029950827\":1478686416985,\"1016399740148\":1480585069069,\"1024529731691\":1509788624436,\"1022227356590\":1478686417013,\"1022524492260\":1509788624413,\"1023638753073\":1509788624966,\"1023638753072\":1509788624966,\"1023638753075\":1509788624966,\"1023638753074\":1509788624966,\"1022811946749\":1509788624820,\"1022811946751\":1509788624820,\"1023638753079\":1509788624966,\"1021558866691\":1509788624397,\"1022177141797\":1509788624868,\"1023638753080\":1509788624966,\"1023638753082\":1509788624966,\"1023638753084\":1509788624966,\"1022227356612\":1478686417014,\"1022227356615\":1478686417014,\"1023638753063\":1509788624966,\"1015599721678\":1478686804016,\"122264849\":1444487341730,\"1023638753064\":1509788624966,\"370773059\":1491634246519,\"1023638753067\":1509788624966,\"1023638753066\":1509788624966,\"1022227356623\":1478686417014,\"1022004260480\":1478686417157,\"1023638753070\":1509788624966,\"1021550085037\":1478686417245,\"1000333079293\":1478686804050,\"1025551850786\":1509788624336,\"1021597401456\":1478686417048,\"1024520294570\":1509788625028,\"610123308\":1478686417017,\"1021179025814\":1478686417098,\"1025731938547\":1509788624922,\"4964466073\":1509788624163,\"912370915\":1478686416992,\"1023638753267\":1509788624965,\"1023638753269\":1509788624965,\"1023638753268\":1509788624965,\"1023638753271\":1509788624965,\"1023638753270\":1509788624965,\"1446366396\":1444487341755,\"1023638753272\":1509788624965,\"1018135287786\":1509788624298,\"1022645600279\":1480585069095,\"1023638753253\":1509788624965,\"1023638753255\":1509788624965,\"1023638753254\":1509788624965,\"1023638753257\":1509788624965,\"1023638753256\":1509788624965,\"1446366383\":1444487341751,\"1023638753259\":1509788624965,\"1022645600286\":1480585069095,\"1023638753263\":1509788624965,\"1022645600284\":1480585069095,\"1021740416563\":1478686417125,\"1022645600298\":1480585069095,\"1022092206902\":1478686417274,\"1022811946517\":1509788624819,\"1025790267294\":1509788624348,\"1022645600301\":1480585069095,\"1022811946519\":1509788624819,\"1022223686428\":1509788624946,\"1023638753201\":1509788624966,\"1023638753200\":1509788624966,\"1023638753203\":1509788624966,\"1022811946618\":1509788624820,\"1018335691680\":1478686804065,\"1022811946621\":1509788624820,\"1023638753205\":1509788624967,\"1023638753207\":1509788624966,\"1021622962014\":1509788624404,\"1022309407814\":1478686417199,\"309692581\":1491634246534,\"1023638753185\":1509788624967,\"1023638753184\":1509788624967,\"1023638753187\":1509788624968,\"1021650617638\":1478686417049,\"1023638753189\":1509788624967,\"1023638753188\":1509788624967,\"1023638753191\":1509788624966,\"1023638753190\":1509788624966,\"1024625150553\":1509788624419,\"1022484122305\":1509788624394,\"1021380089076\":1478686417006,\"1023638753183\":1509788624966,\"1020927618565\":1478686417082,\"1023638753153\":1509788624966,\"1023638753152\":1509788624966,\"1025365452439\":1509788624205,\"1025365452438\":1509788624201,\"1023638753154\":1509788624966,\"1023638753157\":1509788624966,\"1021380089060\":1478686417006,\"1023638753161\":1509788624966,\"1021380089067\":1478686417006,\"1022811946560\":1509788624819,\"1022386999575\":1478686417205,\"1023638753163\":1509788624966,\"1023638753162\":1509788624966,\"1025365452441\":1509788624186,\"1025365452440\":1509788624198,\"1022811946564\":1509788624820,\"1021625714254\":1478686417117,\"1012120370425\":1478686417025,\"1009849959517\":1478686804067,\"1023730893026\":1509788624960,\"1021321498750\":1478686804039,\"1023843891747\":1509788624940,\"1303369402\":1444487341725,\"1021471182746\":1478686417045,\"1021471182749\":1478686417045,\"1022207826843\":1478686417191,\"1024512299647\":1509788624855,\"1020968644018\":1478686417086,\"1022058785974\":1475218613699,\"1649932647\":1444487341720,\"1024132376785\":1509788624326,\"1364052602\":1478950494922,\"1024607982768\":1509788667589,\"1022479141677\":1478943089254,\"1012618059536\":1509788625017,\"1021565288872\":1478686417114,\"1021641573673\":1478686417008,\"1014129460589\":1478686804019,\"1024194637179\":1509788625034,\"1019872800412\":1478686804021,\"1021095781815\":1478686417094,\"1021054623791\":1478686417036,\"1022811946969\":1509788624195,\"1025034105670\":1509788624454,\"1020294141390\":1465470268292,\"1022811946961\":1509788624195,\"1024983907922\":1509788624924,\"1024194374956\":1509788624184,\"4979798864\":1509788624156,\"1022811946809\":1509788624820,\"1019552069991\":1480585069074,\"1000333079312\":1478686804051,\"1019552069996\":1480585069074,\"1019552069998\":1480585069074,\"1019552069999\":1480585069074,\"1022811946805\":1509788624820,\"1019552069995\":1480585069074,\"1000333079301\":1478686804050,\"1019552070000\":1480585069074,\"1000333079298\":1478686804050,\"1019552070001\":1480585069074,\"1024936327564\":1509788625006,\"1000333079296\":1478686804050,\"1024195030448\":1509788625034,\"1000333079308\":1478686804050,\"1022294203912\":1478686417015,\"1000333079305\":1478686804050,\"1024586356053\":1509788624410,\"1024586356055\":1509788624410,\"1021159496337\":1478686417097,\"1021778820491\":1478686417128,\"1024586356050\":1509788624410,\"1020705586569\":1478686416996,\"1024586356058\":1509788624410,\"1019719972694\":1509788624313,\"1024586356037\":1509788624410,\"1024586356032\":1509788624410,\"1025470060959\":1509788624309,\"1024586356045\":1509788624409,\"1024586356041\":1509788624410,\"1022365897362\":1509788624925,\"4954373362\":1509788624156,\"1024586356042\":1509788624409,\"1021219266117\":1478686416974,\"1022074512204\":1509788624213,\"1021219266119\":1478686416975,\"1019787209512\":1509788624316,\"1024586356028\":1509788624410,\"1023821478816\":1491634246536,\"1020785799344\":1478686417029,\"1024586356027\":1509788624410,\"1024586356026\":1509788624409,\"1019787209520\":1509788624312,\"1021219266135\":1478686416975,\"1022811946858\":1509788624195,\"1024634457027\":1509788667618,\"1020785799337\":1478686417029,\"1446366703\":1444487341754,\"1002035730120\":1478686417024,\"1024512299653\":1509788624855,\"1024512299650\":1509788624855,\"1022811946855\":1509788624195,\"1024512299649\":1509788624855,\"1025074081821\":1509788625007,\"1024512299648\":1509788624855,\"1021500542242\":1478686417046,\"1021556376206\":1478686417113,\"1021500542244\":1478686417046,\"1021602645830\":1478686417008,\"1026225042629\":1514456869772,\"1016363038955\":1478686804071,\"1021918409743\":1509788624826,\"1021300004571\":1480585069071,\"1021091979564\":1478686417036,\"1023088240641\":1509788624439,\"1008664528345\":1478686804030,\"1021716692933\":1509788624396,\"1021468297347\":1478686417108,\"1021114262520\":1478686417037,\"1024538515346\":1509788624433,\"1019560853026\":1509788624316,\"1021539075287\":1478686417007,\"1021655860161\":1478686417120,\"1019037343741\":1480585069070,\"1019871357356\":1478686804057,\"1019871357357\":1478686804057,\"1019622324869\":1509788624316,\"1019871357358\":1478686804057,\"1019871357359\":1478686804057,\"1019871357352\":1478686804057,\"1019871357353\":1478686804057,\"1019871357354\":1478686804057,\"1019871357355\":1478686804057,\"1025301881974\":1509788624932,\"1022882984996\":1509788625053,\"1019871357351\":1478686804057,\"1019149014705\":1509788625080,\"1009849959231\":1478686804067,\"1025270688380\":1509788625242,\"1022161805819\":1509788624935,\"1022161805816\":1509788624935,\"1024030929042\":1509788624517,\"1021138394364\":1478686417037,\"1022811813939\":1509788624183,\"1020878466428\":1509788624934,\"1020878466431\":1509788624934,\"1022089848110\":1478686417062,\"1020878466426\":1509788624934,\"1020878466427\":1509788624934,\"1008713156487\":1509788624283,\"1022161805795\":1509788624935,\"1022161805793\":1509788624935,\"1021837145676\":1509788624324,\"1022161805798\":1509788624935,\"1022244921083\":1478686416978,\"1022161805797\":1509788624935,\"1022161805786\":1509788624935,\"1022161805787\":1509788624935,\"1022161805784\":1509788624935,\"1013319955164\":1480585069065,\"1022161805790\":1509788624935,\"1018283133484\":1465470268271,\"1022161805776\":1509788624935,\"1021573809869\":1478686417114,\"1010025346675\":1491634246516,\"1022161805782\":1509788624935,\"1022161805780\":1509788624935,\"1022161805781\":1509788624935,\"1024030929057\":1509788624517,\"1024375987663\":1509788624858,\"1024375987662\":1509788624858,\"1022161805771\":1509788624935,\"1024375987661\":1509788624858,\"1022161805768\":1509788624935,\"1024375987660\":1509788624858,\"1016758609873\":1478686804022,\"1024375987659\":1509788624858,\"1010025346669\":1491634246527,\"1010025346671\":1491634246521,\"1022737351602\":1509788625074,\"1925836403\":1444487341709,\"1022161805764\":1509788624935,\"1022161805755\":1509788624935,\"1022327102301\":1478686417015,\"1022161805753\":1509788624935,\"1024342614967\":1509788624413,\"1024774440305\":1509788624473,\"1023031356747\":1509788625048,\"1021681433798\":1509788624958,\"1022272837691\":1478686416976,\"1022079362228\":1478686417301,\"1016779055319\":1478686804017,\"1023821479062\":1491634246536,\"1021492414883\":1478686417046,\"1024194636591\":1509788625071,\"1024132378348\":1509788624324,\"1021208254754\":1478686804026,\"1024333832950\":1509788625032,\"1015242161375\":1480585069068,\"1021281785044\":1478686417004,\"1012120369891\":1478686417025,\"1024030929166\":1509788624523,\"192517722\":1478686417019,\"1024030929185\":1509788624521,\"1023638751296\":1509788624966,\"1021721280139\":1478686804040,\"1022435889204\":1478686417213,\"1024030929190\":1509788624523,\"1022204812785\":1480585069084,\"1023638751280\":1509788624966,\"1022052100775\":1478686417269,\"1023638751286\":1509788624966,\"1023638751289\":1509788624966,\"1023638751292\":1509788624966,\"1023638751295\":1509788624966,\"1023638751265\":1509788624966,\"1023638751264\":1509788624966,\"1023638751267\":1509788624966,\"1009849958919\":1478686804067,\"1023638751269\":1509788624966,\"1020604136708\":1478686417027,\"1023638751271\":1509788624966,\"1023638751277\":1509788624966,\"1023638751276\":1509788624966,\"1023638751248\":1509788624966,\"1013103295542\":1478686804016,\"1023638751236\":1509788624966,\"1023638751244\":1509788624966,\"1022278867200\":1478686417014,\"4999197819\":1509788667392,\"4999197820\":1509788667392,\"1744958855\":1444487341722,\"1022199423679\":1478686417064,\"1016661878958\":1478686804063,\"1021803066704\":1478686804069,\"1022707467130\":1509788625057,\"1021602644280\":1509788624404,\"1016661878962\":1478686804042,\"1021061702004\":1478686417093,\"1021338014003\":1465470268220,\"1021338014004\":1465470268220,\"1021338014005\":1465470268220,\"1021338014007\":1465470268220,\"1025447779386\":1509788624455,\"1021338014008\":1465470268221,\"1021338014009\":1465470268221,\"1025823558285\":1509788667843,\"1025115500681\":1509788624373,\"1025115500680\":1509788624373,\"1024652414765\":1509788624213,\"1022079231380\":1478686417012,\"1649934212\":1444487341734,\"1025115500702\":1509788624392,\"1002077277511\":1478686417024,\"1022354756645\":1478686416990,\"1022363800745\":1480585069075,\"1021265007913\":1478686417237,\"1020551823526\":1478686804027,\"1021886951474\":1478686804048,\"1021742119301\":1478686417125,\"1022196277942\":1478686417280,\"1025665618048\":1509788625131,\"1020606103090\":1478686417061,\"1018967204290\":1480585069065,\"1022091945860\":1478686417180,\"1025365451383\":1509788624543,\"1025365451382\":1509788624541,\"1024343269733\":1509788625070,\"1021385724320\":1478686417300,\"1022866340193\":1509788624439,\"1016399870160\":1480585069069,\"1022866340199\":1509788624439,\"1025365451385\":1509788624524,\"1025365451384\":1509788624537,\"1020999444106\":1478686416990,\"1020999444107\":1478686416990,\"1021007963667\":1509788624921,\"1022092601262\":1478686417012,\"1022562503587\":1509788625063,\"1025646613397\":1509788624306,\"1017124310917\":1478686804018,\"1016092495111\":1509788624941,\"1022312028199\":1509788625078,\"1024132378016\":1509788624324,\"1024030929494\":1509788624521,\"1025665618125\":1509788624270,\"1025665618127\":1509788624270,\"1025665618129\":1509788624227,\"1022811945705\":1509788624534,\"1025665618131\":1509788624227,\"1025665618130\":1509788624227,\"1022982336709\":1509788624982,\"1025665618132\":1509788624199,\"1020748445666\":1478686417028,\"1025665618134\":1509788624215,\"1025665618138\":1509788624207,\"1025665618141\":1509788624207,\"1022811945701\":1509788624534,\"1009100484006\":1478686804052,\"1025665618144\":1509788624207,\"1025665618149\":1509788624207,\"1021158842180\":1478686417097,\"1022078838318\":1478686417272,\"1022292368346\":1478686417068,\"1023988069617\":1509788624257,\"1020804543027\":1478686417030,\"1020804543020\":1478686417030,\"1024370089896\":1509788624169,\"1025665618173\":1509788624230,\"1025007499686\":1509788624977,\"343247605\":1444487341726,\"1023151023842\":1509788624978,\"1021010454172\":1478686417089,\"1024124906721\":1509788625071,\"1022501425063\":1509788624211,\"1022138606203\":1478686417063,\"1013319954654\":1480585069065,\"1022469575078\":1478686417219,\"1025365451469\":1509788625089,\"1025365451468\":1509788625109,\"1025365451467\":1509788625126,\"1025365451466\":1509788625117,\"1001673696828\":1478686804029,\"1019061328528\":1478686804039,\"1020976638121\":1478686417087,\"1022078576374\":1478686417177,\"1025616205100\":1509788624929,\"1021708827825\":1478686417122,\"1023848479802\":1509788667535,\"1022475865712\":1478943089486,\"1021483895576\":1478686417046,\"1025665618017\":1509788625246,\"4985829326\":1508316495865,\"1025665618019\":1509788625244,\"1025665618021\":1509788625165,\"1024481106384\":1509788624294,\"1022078576288\":1478686417177,\"1021631349752\":1509788624400,\"1021848417525\":1509788624394,\"1025665618032\":1509788625165,\"1025665618035\":1509788625112,\"1025665618034\":1509788625165,\"1021863097823\":1478686417053,\"1021770693035\":1478686417009,\"1025565874065\":1509788624372,\"1025365451628\":1509788624824,\"1025365451631\":1509788624800,\"1019434878188\":1509788624390,\"1019434878189\":1509788624391,\"1019434878190\":1509788624391,\"1025365451627\":1509788624834,\"1019434878191\":1509788624391,\"1025365451626\":1509788624829,\"1019434878192\":1509788624391,\"1019434878193\":1509788624391,\"1006867968505\":1509788624388,\"1019434878194\":1509788624391,\"1025879524563\":1509788667511,\"1019434878195\":1509788624391,\"1019434878196\":1509788624391,\"1019434878197\":1509788624391,\"1020365311353\":1478686804021,\"1020726687741\":1509788624375,\"1022811945881\":1509788624535,\"1022811945887\":1509788624535,\"1015479922832\":1509788624171,\"1025365451612\":1509788624408,\"1025365451609\":1509788624429,\"1025365451611\":1509788624426,\"1025365451610\":1509788624432,\"1020606103410\":1478686417027,\"1019704374453\":1509788625077,\"1024936328531\":1509788625006,\"1025891058779\":1509788667448,\"1025879524523\":1509788667663,\"1009832263976\":1509788625081,\"1024935017848\":1509788624851,\"1024935017850\":1509788624851,\"1024935017847\":1509788624851,\"1022811945922\":1509788624535,\"1024935017846\":1509788624851,\"1022811945925\":1509788624535,\"1024935017843\":1509788624851,\"1025879524419\":1509788667907,\"1021924569117\":1478686417141,\"1012685952935\":1478686416995,\"1021540124641\":1478686417047,\"1022185267606\":1478686417064,\"1022092469778\":1509788624416,\"1022811945769\":1509788624535,\"1022811945772\":1509788624535,\"1022185267592\":1478686417064,\"1025879524453\":1509788667592,\"1004349245606\":1478686804039,\"1023463511155\":1509788625039,\"1021476162535\":1478686417109,\"1022962020881\":1509788624509,\"1025879524471\":1509788667411,\"1020294009111\":1465470268280,\"1023946389723\":1491634246531,\"1012392732774\":1478686417074,\"1019817881291\":1465470268275,\"1022079362955\":1478686417301,\"1021901631795\":1509788624420,\"1021354529348\":1465470268231,\"1022811945833\":1509788624535,\"1021354529350\":1465470268231,\"1020806771692\":1478686417030,\"1022811945835\":1509788624535,\"1024244573831\":1509788624949,\"1579794928\":1444487341747,\"1025301882828\":1509788624932,\"1009965971878\":1491634246523,\"1022204813090\":1480585069084,\"1021193051328\":1478686417038,\"1022054328373\":1478686416977,\"1025618957488\":1509788624848,\"1025100418133\":1509788624273,\"1025703374918\":1509788624297,\"1023970757004\":1509788625037,\"1021578672693\":1478686417008,\"1024597503546\":1509788624938,\"1025040386512\":1509788624548,\"1025040386525\":1509788624539,\"1022231421259\":1509788624931,\"1025040386526\":1509788624566,\"1021913288246\":1478686417259,\"1025040386520\":1509788624567,\"1025040386534\":1509788624544,\"1025040386529\":1509788624536,\"1023164782997\":1509788625044,\"1025791718712\":1509788625165,\"1025791718714\":1509788625165,\"1009862672451\":1491634246513,\"1025791718708\":1509788625245,\"1025791718710\":1509788625244,\"1020744632769\":1509788624322,\"1021232244468\":1478686417099,\"1025301878806\":1509788624932,\"1024302374393\":1509788625080,\"1024132371417\":1509788624327,\"1021736207517\":1509788624400,\"1022375471853\":1478686417290,\"1025791718733\":1509788625168,\"1009862672440\":1491634246514,\"1021983150666\":1478686417152,\"1025791718731\":1509788625130,\"1025791718730\":1509788625130,\"1025040386461\":1509788624612,\"1025040386460\":1509788624611,\"1025040386463\":1509788624565,\"1025791718726\":1509788625130,\"1024607989718\":1509788667589,\"1025791718722\":1509788625130,\"1021027359092\":1478686417091,\"1025040386468\":1509788624552,\"1025040386470\":1509788624548,\"1025040386465\":1509788624565,\"1025040386467\":1509788624552,\"1025040386466\":1509788624564,\"1024211408712\":1509788625032,\"1016779054151\":1478686804017,\"1021664395120\":1478686417120,\"1023820415212\":1509788624969,\"1025040386481\":1509788624548,\"1025040386480\":1509788624548,\"1022412696605\":1478686417292,\"1021514053270\":1509788625018,\"1022457392986\":1480585069111,\"1025735881459\":1508316495865,\"1020925514636\":1478686417082,\"1022041216525\":1478686417268,\"1020744632693\":1509788624322,\"1020784872421\":1478686417076,\"1022457392981\":1480585069087,\"1020925514651\":1478686417082,\"1021638573595\":1478686417119,\"1025283397592\":1509788624598,\"1020834549252\":1478686804031,\"1020925514649\":1478686417082,\"1021054622691\":1478686417036,\"1025540581005\":1509788624302,\"1020925514643\":1478686417082,\"1019160423109\":1480585069078,\"1020925514646\":1478686417082,\"1020657730433\":1478686804057,\"1869467598\":1478686417021,\"1869467591\":1478686417020,\"1022381501177\":1478686417290,\"1869467606\":1478686417021,\"1021716284248\":1509788624403,\"1869467602\":1478686417021,\"1021042432759\":1478686417092,\"1025040386304\":1509788624841,\"1019899401877\":1509788624971,\"1023844925889\":1491634246536,\"1025040386306\":1509788624841,\"1025322457567\":1509788624305,\"1019310240702\":1509788624314,\"1025040386325\":1509788624841,\"1025040386322\":1509788624841,\"1025040386329\":1509788624868,\"1025040386330\":1509788624826,\"1011737636938\":1478686804024,\"1010093493834\":1478686804055,\"1016857715070\":1509788624977,\"1020744632599\":1509788624322,\"1021700555294\":1478686804047,\"1024132371173\":1509788624327,\"1023309504538\":1509788624376,\"1022058780305\":1475218613699,\"1023032529026\":1509788624508,\"1020595732932\":1478686416972,\"1020744632559\":1509788624322,\"1022070708706\":1478686417060,\"1021138395485\":1478686417037,\"1025100418422\":1509788624173,\"1021794797170\":1509788624399,\"1025246172329\":1509788624931,\"1025040386280\":1509788624916,\"1025040386282\":1509788624916,\"1025040386292\":1509788624865,\"1022042003370\":1478686417170,\"1025040386303\":1509788624849,\"1023820415393\":1509788624960,\"1025040386299\":1509788624865,\"1019728350508\":1509788624312,\"1021815245138\":1509788624850,\"1021815245139\":1509788624850,\"1021815245137\":1509788624849,\"1021815245141\":1509788624850,\"1022457917071\":1478686417072,\"153331784\":1491634246512,\"1022029681698\":1478686417165,\"1021460574810\":1478686417044,\"1019303031457\":1509788624316,\"1022029681700\":1478686417165,\"1015070717823\":1478686804053,\"1015070717822\":1478686804053,\"1015070717825\":1478686804053,\"1021919317583\":1509788625069,\"1015070717827\":1478686804053,\"1015070717828\":1478686804053,\"1023106847884\":1509788624466,\"1023402960617\":1509788625071,\"724011652\":1444487341753,\"1025100418554\":1509788624181,\"1025731949345\":1509788624922,\"1021733586248\":1509788624395,\"1016690316891\":1478686804069,\"1025040386053\":1509788624210,\"1016690316890\":1478686804069,\"1025040386052\":1509788624210,\"1021248759300\":1478686416988,\"1016690316889\":1478686804069,\"1025040386055\":1509788624210,\"1016690316888\":1478686804069,\"1021743678850\":1478686417253,\"1016690316895\":1478686804069,\"1024460138431\":1509788624451,\"1016690316894\":1478686804069,\"1016690316893\":1478686804069,\"1016690316892\":1478686804069,\"1016690316883\":1478686804069,\"1023020208615\":1509788625083,\"1016690316882\":1478686804069,\"1016690316887\":1478686804069,\"1025040386057\":1509788624210,\"1016690316886\":1478686804069,\"1016690316885\":1478686804069,\"1016690316884\":1478686804069,\"1022400506603\":1478686417207,\"1021828089995\":1478686417133,\"1025040386064\":1509788624210,\"1021182566924\":1478686417098,\"1010013538420\":1491634246521,\"225684626\":1444487341746,\"1025040386084\":1509788624210,\"1010013538422\":1491634246521,\"1025040386081\":1509788624210,\"1010013538419\":1491634246526,\"1025040386090\":1509788624230,\"1024270522968\":1509788624340,\"1025040386098\":1509788624206,\"1016690316896\":1478686804069,\"1020264656277\":1509788624945,\"1024270522962\":1509788625019,\"1024270522965\":1509788624335,\"1024270522964\":1509788625001,\"1024270522967\":1509788624337,\"1024270522966\":1509788624336,\"1025061226631\":1509788624940,\"1018947542253\":1509788624276,\"1022238630093\":1509788624946,\"1001385199061\":1480585069061,\"1016779054625\":1478686804017,\"1022646925411\":1480585069146,\"1022646925410\":1480585069146,\"1022646925408\":1480585069146,\"1022238630101\":1509788624931,\"1022238630100\":1509788624941,\"1025629974197\":1509788624174,\"1025629974196\":1509788624174,\"1025629974199\":1509788624174,\"1022238630098\":1509788624931,\"1025629974201\":1509788624174,\"1022238630110\":1509788624931,\"1025629974205\":1509788624174,\"1022409289380\":1480585069098,\"109290654\":1500459286943,\"1025629974207\":1509788624175,\"1022238630107\":1509788624932,\"1025212092841\":1509788624269,\"1025212092840\":1509788624268,\"1025212092843\":1509788624268,\"1024937624007\":1509788625006,\"1022646925388\":1480585069146,\"1025212092842\":1509788624269,\"1022646925387\":1480585069146,\"1022646925385\":1480585069146,\"1025212092847\":1509788624268,\"1024937624003\":1509788625006,\"1022646925384\":1480585069146,\"1025212092833\":1509788624269,\"1021776577637\":1478686417128,\"1025212092832\":1509788624268,\"1025212092835\":1509788624269,\"1025212092837\":1509788624269,\"1018665340910\":1509788624377,\"1024937624011\":1509788625006,\"1022646925407\":1480585069146,\"1025212092857\":1509788624268,\"1022646925405\":1480585069146,\"1021708681291\":1478686417122,\"1023431273372\":1509788625079,\"1021708681292\":1478686417122,\"1022646925401\":1480585069146,\"1025212092863\":1509788624269,\"1022646925400\":1480585069146,\"1024937624018\":1509788625006,\"1022646925399\":1480585069146,\"1025212092848\":1509788624268,\"1022646925397\":1480585069146,\"1025212092850\":1509788624268,\"1024906429434\":1509788624938,\"1025212092853\":1509788624268,\"1022646925394\":1480585069146,\"1022646925359\":1480585069145,\"1025212092872\":1509788624268,\"1025212092875\":1509788624269,\"1022600918382\":1480585069134,\"1022646925356\":1480585069145,\"1025791719262\":1509788625165,\"1022646925355\":1480585069145,\"1025791719259\":1509788625165,\"1020117328152\":1465470268310,\"1025791719251\":1509788625244,\"1025212092870\":1509788624268,\"1025791719250\":1509788625245,\"1022646925375\":1480585069146,\"1025212092889\":1509788624268,\"1025212092888\":1509788624268,\"1022646925373\":1480585069146,\"1025283396891\":1509788625222,\"1025773631074\":1509788624289,\"1025773631077\":1509788624289,\"1025849654237\":1509788667467,\"1022646925370\":1480585069146,\"1022646925368\":1480585069146,\"1024132370866\":1509788624327,\"1025773631081\":1509788624289,\"1022918232091\":1509788624915,\"1022646925366\":1480585069146,\"1025773631080\":1509788624289,\"1022646925365\":1480585069146,\"1025773631083\":1509788624289,\"1022646925364\":1480585069146,\"1025212092882\":1509788624268,\"1022646925363\":1480585069146,\"1025773631085\":1509788624289,\"1022933567781\":1509788624311,\"1025773631084\":1509788624289,\"1025773631087\":1509788624289,\"1022646925360\":1480585069145,\"1025629974209\":1509788624175,\"1022646925326\":1480585069145,\"1025629974208\":1509788624174,\"1024211801416\":1509788625033,\"1012152076923\":1478686804022,\"1022646925319\":1480585069145,\"1025791719285\":1509788625168,\"1025629974216\":1509788624174,\"1004243088142\":1480585069072,\"1025629974219\":1509788624174,\"1022646925316\":1480585069145,\"1022646925314\":1480585069145,\"1025791719280\":1509788625130,\"1025629974225\":1509788624174,\"1024186766550\":1509788624272,\"1025791719276\":1509788625129,\"1025791719279\":1509788625129,\"1004243088144\":1480585069072,\"1025791719274\":1509788625130,\"1025791719268\":1509788625144,\"1022646925333\":1480585069145,\"1025791719271\":1509788625130,\"1022646925332\":1480585069145,\"1022646925331\":1480585069145,\"1024840908757\":1509788624174,\"1022316487845\":1478686417200,\"1012759359307\":1478686417074,\"1025629318715\":1509788624186,\"1025061226519\":1509788624932,\"1025629318714\":1509788624197,\"1025629318713\":1509788624204,\"1025629318712\":1509788624200,\"1025616341255\":1509788624929,\"1022646925519\":1480585069146,\"1022646925516\":1480585069146,\"1024186766339\":1509788624920,\"1015237821098\":1478686804053,\"1021442617586\":1478686417044,\"1022646925511\":1480585069146,\"1022646925508\":1480585069146,\"1022646925507\":1480585069146,\"1022646925504\":1480585069146,\"1021956805380\":1478686417056,\"1022092204839\":1478686417274,\"1022646925522\":1480585069146,\"1022646925520\":1480585069146,\"1022646925487\":1480585069146,\"1022646925486\":1480585069146,\"1025791719388\":1509788624227,\"1022646925482\":1480585069146,\"1022646925480\":1480585069146,\"1025791719381\":1509788624270,\"1025485922718\":1509788625136,\"1022646925476\":1480585069146,\"1025791719382\":1509788624270,\"1020756691957\":1478686417076,\"1022646925472\":1480585069146,\"1017436914126\":1478686804015,\"1022646925496\":1480585069146,\"1021509334153\":1509788624398,\"1022646925494\":1480585069146,\"1022047900924\":1478686417059,\"1020902838462\":1478686417227,\"1022646925489\":1480585069146,\"1022646925488\":1480585069146,\"1024384245760\":1509788624329,\"1021850765575\":1478686417257,\"1022646925448\":1480585069146,\"1022646925445\":1480585069146,\"1021613276902\":1480585069071,\"1022646925470\":1480585069146,\"1010002660035\":1491634246524,\"1022646925469\":1480585069146,\"1022646925467\":1480585069146,\"109290612\":1500459286943,\"1025791719402\":1509788624206,\"1022646925463\":1480585069146,\"1025791719397\":1509788624215,\"1010002660043\":1491634246524,\"1025791719399\":1509788624206,\"1025791719398\":1509788624206,\"1022646925459\":1480585069146,\"1022646925456\":1480585069146,\"1023612286949\":1509788624955,\"1023612286951\":1509788624955,\"1023612286950\":1509788624955,\"1023612286944\":1509788624955,\"1023612286947\":1509788624955,\"1021700555256\":1478686804047,\"1023612286953\":1509788624955,\"1022416105311\":1480585069075,\"1023612286955\":1509788624955,\"1022003075011\":1478686417011,\"1023165569685\":1509788624216,\"1023165569684\":1509788624216,\"1022700666442\":1509788624973,\"1023165569687\":1509788624216,\"1023165569686\":1509788624216,\"1023165569681\":1509788624216,\"1022418202408\":1478686417293,\"1021700555245\":1478686804047,\"1021700555242\":1478686804047,\"1022418202387\":1478686417293,\"1016779054857\":1478686804017,\"1456731637\":1444487341753,\"1022646925640\":1480585069079,\"1456731643\":1444487341750,\"1022126151862\":1478686417276,\"1022646925635\":1480585069079,\"1023612286932\":1509788624955,\"1023612286935\":1509788624955,\"1023612286931\":1509788624955,\"1482423148\":1478686804024,\"1023612286940\":1509788624955,\"1023612286936\":1509788624955,\"1022418202383\":1478686417293,\"1023612286938\":1509788624955,\"1022646925612\":1480585069079,\"1022646925607\":1480585069079,\"1021500552585\":1478686804031,\"1021315475611\":1465470268208,\"1022646925626\":1480585069079,\"1021966897731\":1478686417056,\"1022646925621\":1480585069079,\"1021616422563\":1478686417117,\"1022646925616\":1480585069079,\"1022646925577\":1480585069079,\"1021054752797\":1478686417232,\"1020497181151\":1478686804034,\"1024186766793\":1509788625248,\"1024225827587\":1509788625032,\"1022646925596\":1480585069079,\"1022646925591\":1480585069079,\"1022646925588\":1480585069079,\"1022646925587\":1480585069079,\"1022192606208\":1478686417188,\"1021578148264\":1478686417048,\"1021934785389\":1509788625069,\"1020878459494\":1509788624280,\"1022079228891\":1478686417012,\"1025485922506\":1509788624437,\"1024132370502\":1509788624327,\"1022457392254\":1480585069110,\"1022092204598\":1478686417273,\"1023994349955\":1491634246518,\"1023612286757\":1509788624955,\"1023612286764\":1509788624955,\"1024343006375\":1509788624991,\"1023612286772\":1509788624955,\"1023612286769\":1509788624955,\"1024343006377\":1509788624991,\"1021857450049\":1478686417053,\"1022941957926\":1509788624325,\"1018509492460\":1509788624214,\"1007394827883\":1509788624379,\"1023612286732\":1509788624955,\"1023612286735\":1509788624955,\"1007840462072\":1509788624376,\"1023612286729\":1509788624955,\"1023612286728\":1509788624955,\"1024343006360\":1509788624991,\"1021869903660\":1478686416983,\"1023612286741\":1509788624955,\"1022127069337\":1509788624338,\"1023612286740\":1509788624955,\"1023932089344\":1491634246530,\"1023612286736\":1509788624955,\"1023612286749\":1509788624955,\"1023612286751\":1509788624955,\"1021541186447\":1478686417007,\"1018916085552\":1478686804032,\"1023171599657\":1509788624493,\"1025243943331\":1509788624999,\"1024688730328\":1509788624199,\"1022646926955\":1480585069148,\"1023171599662\":1509788624493,\"1020437541424\":1478686804065,\"1023171599652\":1509788624493,\"1020437541426\":1478686804065,\"1022646926945\":1480585069148,\"1023171599655\":1509788624493,\"1022415710276\":1478686417209,\"1024375072120\":1509788625155,\"1022646926969\":1480585069148,\"1010011442594\":1491634246525,\"1022037807817\":1478686417011,\"1024375072122\":1509788625155,\"1021516542932\":1478686417047,\"1022646926966\":1480585069148,\"1024375072116\":1509788625155,\"1022102429434\":1478686417181,\"1022646926965\":1480585069148,\"1024375072119\":1509788625155,\"1024375072118\":1509788625155,\"1023242377484\":1509788624462,\"1022646926961\":1480585069148,\"1021516542931\":1478686417047,\"1010011442580\":1491634246525,\"1022086438357\":1478686417062,\"1023171599626\":1509788624493,\"1022646926921\":1480585069148,\"1022724652010\":1509788624998,\"1025711240686\":1509788625019,\"1023994351127\":1491634246518,\"1024906429929\":1509788624938,\"1022646926918\":1480585069148,\"1010011442590\":1491634246525,\"1010011442591\":1491634246525,\"1024906429930\":1509788624938,\"1026226604826\":1514456869770,\"1021344966694\":1478686804023,\"1022646926915\":1480585069148,\"1010011442584\":1491634246525,\"1022921641507\":1509788624293,\"1025372919871\":1509788624541,\"193310632\":1478686417019,\"1021143508024\":1478686417096,\"1022292894137\":1478686417198,\"1023171599640\":1509788624493,\"1022646926941\":1480585069148,\"1022646926938\":1480585069148,\"1022646926937\":1480585069148,\"1022646926936\":1480585069148,\"1023171599646\":1509788624493,\"1022374162155\":1478686417204,\"1022646926933\":1480585069148,\"1023171599634\":1509788624493,\"1022646926930\":1480585069148,\"1023171599636\":1509788624493,\"1022646926928\":1480585069148,\"1023171599638\":1509788624493,\"1022154725764\":1478686416975,\"1022646926883\":1480585069147,\"1025372919875\":1509788624524,\"1022646926910\":1480585069148,\"1025372919873\":1509788624537,\"1022471419062\":1478686417299,\"1022646926908\":1480585069148,\"1025372919872\":1509788624543,\"1022646926906\":1480585069147,\"1025349459756\":1504776656202,\"1022646926902\":1480585069147,\"1022415710263\":1478686417209,\"1024132372357\":1509788624324,\"1023171599689\":1509788624493,\"1023171599691\":1509788624493,\"1019167109022\":1509788624316,\"1023171599693\":1509788624493,\"1023171599684\":1509788624493,\"1024244571429\":1509788624948,\"1022886120540\":1509788625053,\"1444278881\":1444487341752,\"1022646926874\":1480585069147,\"1023171599708\":1509788624493,\"1022415710255\":1478686417209,\"1023171599697\":1509788624493,\"1022646926869\":1480585069147,\"1022646926867\":1480585069147,\"1023171599700\":1509788624493,\"1023171599703\":1509788624493,\"1022502090169\":1509788624330,\"1444278937\":1444487341754,\"1024797916887\":1509788625024,\"1021512217263\":1478686417047,\"1444278922\":1444487341752,\"1025470719647\":1509788624304,\"1021597679547\":1478686417048,\"1022646927050\":1480585069080,\"1023995006608\":1491634246532,\"1022054323045\":1478686416977,\"1022646927048\":1480585069080,\"1022341786645\":1509788625007,\"1022341786644\":1509788625007,\"1022341786639\":1509788625007,\"1022020374901\":1478686417266,\"1022646927065\":1480585069080,\"1022646927061\":1480585069080,\"1008664542534\":1478686804030,\"1022646927058\":1480585069080,\"1444278955\":1444487341751,\"1022646927023\":1480585069080,\"1025731950157\":1509788624922,\"1022646927021\":1480585069079,\"1025791717854\":1509788624837,\"1025791717848\":1509788624849,\"1025791717846\":1509788624825,\"1025900378184\":1509788667457,\"1023596427064\":1509788624519,\"1025791717842\":1509788624864,\"1022646927039\":1480585069080,\"1025791717833\":1509788624916,\"1022646927034\":1480585069080,\"790334413\":1444487341749,\"1025791717835\":1509788624916,\"1022646927032\":1480585069080,\"1022646927027\":1480585069080,\"1022646927026\":1480585069080,\"1022444939896\":1478686417214,\"1022185265906\":1478686417278,\"1025791717887\":1509788624270,\"1022359219538\":1478686417203,\"1022444939889\":1478686417214,\"1025372920033\":1509788625110,\"1022646927001\":1480585069079,\"1025857387973\":1509788667463,\"1021256491957\":1478686417040,\"1022646926998\":1480585069079,\"1025791717863\":1509788624837,\"1025791717859\":1509788624837,\"1014741854016\":1478686804022,\"1025791717858\":1509788624837,\"1021729523260\":1509788624514,\"1023336638065\":1509788624990,\"1024343005813\":1509788624991,\"1025533502311\":1509788624347,\"1025533502310\":1509788624347,\"1025533502313\":1509788624347,\"1025616211611\":1509788624929,\"1025533502315\":1509788624347,\"590579256\":1478686804024,\"1024343005820\":1509788624991,\"1024343005819\":1509788624991,\"1023336638077\":1509788624991,\"1024343005817\":1509788624991,\"1025533502318\":1509788624346,\"1025533502320\":1509788624347,\"1023336638050\":1509788624990,\"1024343005798\":1509788624991,\"1021403166112\":1478686417043,\"1021200130491\":1465470268194,\"1023336638048\":1509788624990,\"1025533502325\":1509788624347,\"1025512923299\":1509788624338,\"1025593667539\":1509788624833,\"1023336638059\":1509788624990,\"1025593667538\":1509788624829,\"1024343005804\":1509788624991,\"1025512923302\":1509788624339,\"1025593667541\":1509788624800,\"1023994351392\":1491634246518,\"1025512923300\":1509788624336,\"1025593667540\":1509788624823,\"1023336638033\":1509788624991,\"1014208848\":1444487341726,\"1023336638039\":1509788624990,\"1020264655175\":1509788624971,\"1023336638018\":1509788624991,\"1025593667583\":1509788624537,\"1025593667582\":1509788624542,\"1025593667581\":1509788624541,\"1023336638031\":1509788624990,\"1022264583780\":1478686417067,\"1025784508501\":1509788624349,\"1023336638029\":1509788624990,\"1023336638000\":1509788624991,\"1022134279769\":1478686417276,\"1025593667458\":1509788624407,\"1025593667456\":1509788624425,\"1023431798007\":1509788624519,\"1023431798006\":1509788624519,\"1023336637986\":1509788624990,\"1022431176729\":1480585069077,\"1023431798005\":1509788624519,\"1025806398318\":1509788667447,\"1022431176735\":1480585069077,\"1023431798003\":1509788624518,\"1025593667475\":1509788624198,\"1022431176722\":1480585069077,\"1025593667474\":1509788624204,\"1021551279239\":1509788624397,\"1023336637994\":1509788624990,\"1025593667473\":1509788624200,\"1024384247738\":1509788624329,\"1025593667476\":1509788624186,\"1022456867492\":1478686417216,\"1022431176743\":1480585069077,\"1020233985839\":1465470268316,\"1021472371197\":1478686417109,\"1022431176740\":1480585069077,\"1015394586530\":1465470268313,\"1024030656917\":1509788624853,\"1021262258837\":1478686417101,\"1023266888223\":1509788624354,\"1023221406165\":1509788625072,\"1020774387584\":1478686417029,\"1024030656925\":1509788624853,\"1024030656924\":1509788624853,\"1025797354286\":1509788624866,\"1023336638202\":1509788624992,\"1020878853240\":1478686417079,\"1023336638207\":1509788624992,\"1233120498\":1509788625019,\"1024030656923\":1509788624853,\"1023336638204\":1509788624992,\"1020617622780\":1478686804035,\"1023336638189\":1509788624992,\"1009169683048\":1478686804028,\"1021981841281\":1509788624996,\"1025593667455\":1509788624431,\"416005502\":1478950494909,\"1025593667454\":1509788624428,\"1024030656930\":1509788624853,\"1021176670090\":1478686416974,\"1021738697072\":1478686417252,\"1022565920906\":1480585069141,\"1021386123900\":1478686417300,\"1021744333203\":1478686417254,\"1010091920140\":1491634246522,\"1010091920144\":1491634246522,\"1021354534982\":1465470268231,\"1021354534983\":1465470268231,\"1010091920147\":1491634246522,\"1010091920150\":1491634246522,\"1023054813160\":1509788624825,\"1022096399492\":1478686417181,\"1024030657013\":1509788624444,\"1024030657012\":1509788624445,\"1024030657015\":1509788624444,\"1020257708305\":1465470268311,\"1024030657011\":1509788624444,\"1009994796386\":1491634246520,\"1024607988320\":1509788667589,\"1020807547330\":1478686417077,\"1024343005828\":1509788624991,\"1024343005827\":1509788624991,\"1024343005825\":1509788624991,\"1024132371986\":1509788624324,\"1024343005824\":1509788624991,\"1024030657007\":1509788624444,\"1021978040243\":1478686417150,\"1024343005833\":1509788624991,\"724143394\":1444487341728,\"1024906430421\":1509788624938,\"1003504337785\":1478686804017,\"1025748727195\":1509788624290,\"1002457252325\":1491634246520,\"1003504337783\":1478686804017,\"1003504337779\":1478686804017,\"1025791718207\":1509788624207,\"1020974534680\":1478686417086,\"1025791718195\":1509788624215,\"1023995530301\":1491634246532,\"1024783630083\":1509788625024,\"1025791718188\":1509788624227,\"1025791718190\":1509788624227,\"1016689660340\":1465470268266,\"1025791718184\":1509788624227,\"1025791718183\":1509788624270,\"1022029157241\":1478686417164,\"1024005229989\":1491634246533,\"1025791718179\":1509788624270,\"4964188587\":1509788624157,\"1019778156832\":1509788624315,\"1023947689655\":1491634246532,\"1016911979029\":1478686804031,\"1025784116171\":1509788624352,\"1022304166051\":1478686417199,\"245213378\":1444487341718,\"1023947689656\":1491634246532,\"1019958779082\":1478686804034,\"1025791718269\":1509788625130,\"1019958779083\":1478686804034,\"1021975024889\":1509788625144,\"1019958779080\":1478686804034,\"1021309185099\":1478686417102,\"1019958779081\":1478686804034,\"1019958779086\":1478686804034,\"1024454238385\":1509788624990,\"1025791718265\":1509788625130,\"1019958779087\":1478686804034,\"1025791718264\":1509788625130,\"1019958779084\":1478686804034,\"1019958779085\":1478686804034,\"1024454238386\":1509788624990,\"1025791718260\":1509788625130,\"1022342835941\":1478686417202,\"1019958779078\":1478686804034,\"1025791718257\":1509788625144,\"1019958779079\":1478686804034,\"1025791718256\":1509788625111,\"1019958779096\":1478686804034,\"1019958779097\":1478686804034,\"1019958779103\":1478686804034,\"1024912066333\":1509788624926,\"1019958779090\":1478686804034,\"1025791718245\":1509788625244,\"1019958779088\":1478686804034,\"1024454238383\":1509788624990,\"1019958779089\":1478686804034,\"1025791718246\":1509788625165,\"1019958779094\":1478686804034,\"1019958779092\":1478686804034,\"1019958779093\":1478686804034,\"1025791718242\":1509788625245,\"1019166059883\":1478686804020,\"1022362234851\":1478686417289,\"1021460575671\":1478686417045,\"1023924617428\":1509788624961,\"1018644630918\":1478686804026,\"1025791718273\":1509788625130,\"1025791718333\":1509788624207,\"1020772813953\":1478686417029,\"1025791718334\":1509788624207,\"1024687420009\":1509788624999,\"1006742388935\":1478686804032,\"1025791718327\":1509788624215,\"1025791718323\":1509788624227,\"1018912021920\":1509788624283,\"1025791718316\":1509788624270,\"1009198390960\":1478686804054,\"1025791718318\":1509788624270,\"1024687420026\":1509788624998,\"1024687420025\":1509788625001,\"724143506\":1444487341726,\"1022711674888\":1509788624466,\"1025703376638\":1509788624295,\"1009094579350\":1509788624389,\"1023324316873\":1509788624926,\"1025791718353\":1509788624230,\"1009994796632\":1491634246520,\"1025791718344\":1509788624207,\"1025791718347\":1509788624207,\"1023324316889\":1509788624925,\"1022221199128\":1478686417281,\"1023454604444\":1509788625039,\"1021606591050\":1509788624397,\"4935614706\":1509788624157,\"1022191819118\":1478686417013,\"1021435016271\":1478686417044,\"1022393691499\":1478686417015,\"1010830670900\":1478686804064,\"1015299031697\":1478686804064,\"1022646926703\":1480585069146,\"1025791717917\":1509788624207,\"1025044844160\":1509788624389,\"1022646926701\":1480585069146,\"1022646926700\":1480585069146,\"1022646926699\":1480585069146,\"1022646926697\":1480585069146,\"1022966860411\":1509788624996,\"1022646926694\":1480585069146,\"1021184664766\":1478686417235,\"1022646926692\":1480585069146,\"1022966860406\":1509788624996,\"1025791717905\":1509788624207,\"1022646926689\":1480585069146,\"1025791717907\":1509788624207,\"1022966860402\":1509788624996,\"1021534240722\":1478686417113,\"1022646926718\":1480585069147,\"1025791717903\":1509788624207,\"1022966860398\":1509788624996,\"1022966860393\":1509788624996,\"1022646926714\":1480585069147,\"1025791717898\":1509788624207,\"228305539\":1444487341745,\"1023924617567\":1509788624961,\"1022646926709\":1480585069146,\"1025791717889\":1509788624270,\"1025791717891\":1509788624227,\"1024375072333\":1509788624858,\"1024375072332\":1509788624858,\"1021831630374\":1478686417133,\"1020657730622\":1478686804058,\"1024375072335\":1509788624858,\"1301539504\":1491634246513,\"1024375072334\":1509788624858,\"1023324316970\":1509788624926,\"1021188727889\":1478686417003,\"1021188727895\":1478686417003,\"1023324316961\":1509788624926,\"1023324316960\":1509788624926,\"1022646926687\":1480585069146,\"1025441359565\":1509788625161,\"1022646926682\":1480585069146,\"1025441359560\":1509788625161,\"1021726508144\":1478686417051,\"1025441359559\":1509788625161,\"1025441359558\":1509788625161,\"1022646926677\":1480585069146,\"1022278869828\":1478686417014,\"1022278869827\":1478686417014,\"1025441359555\":1509788625161,\"1024375072336\":1509788624858,\"1022646926673\":1480585069146,\"1023324316977\":1509788624926,\"1022073462782\":1509788624280,\"1025791717980\":1509788625130,\"1022112914691\":1478686417276,\"1025791717977\":1509788625144,\"1022378618148\":1509788624300,\"1025791717965\":1509788625244,\"1025791717967\":1509788625165,\"1021736207239\":1509788624400,\"1025791717963\":1509788625245,\"1023835883241\":1491634246504,\"1023994350946\":1491634246518,\"1021006520112\":1509788624921,\"1025791717997\":1509788625130,\"1025791717998\":1509788625130,\"1020777794688\":1478686417029,\"1025791717988\":1509788625130,\"1025791717985\":1509788625130,\"1018633096401\":1465470268271,\"1025791718045\":1509788624864,\"1021280218727\":1478686417040,\"1021096958320\":1478686417094,\"1020610152052\":1509788624940,\"1021975024914\":1509788625166,\"1025191515471\":1509788624930,\"1022025880093\":1478686416975,\"1025791718035\":1509788624916,\"1025009188910\":1509788624334,\"1025791718030\":1509788624916,\"1020117460165\":1465470268321,\"1024444277456\":1509788624991,\"1022646926798\":1480585069147,\"1022025880116\":1478686416975,\"1016444161932\":1478686804023,\"1016444161930\":1478686804023,\"1025791718067\":1509788624837,\"1022646926784\":1480585069147,\"1022646926813\":1480585069147,\"1022646926812\":1480585069147,\"1023110123840\":1509788624299,\"1024375072473\":1509788624561,\"1024375072472\":1509788624561,\"1016444161937\":1478686804034,\"1022646926809\":1480585069147,\"1025791718058\":1509788624837,\"1024375072469\":1509788624561,\"1022646926806\":1480585069147,\"1024375072471\":1509788624561,\"1022670519485\":1509788625060,\"1024375072470\":1509788624561,\"1021033913615\":1478686417091,\"1023110123827\":1509788624299,\"1024375072429\":1509788624443,\"1024375072428\":1509788624443,\"1022646926765\":1480585069147,\"1023110123825\":1509788624299,\"1024375072431\":1509788624443,\"1022646926763\":1480585069147,\"1025791718105\":1509788624837,\"1022646926762\":1480585069147,\"1023110123830\":1509788624299,\"1022646926761\":1480585069147,\"1024375072427\":1509788624443,\"1022646926760\":1480585069147,\"1024375072426\":1509788624443,\"1022646926759\":1480585069147,\"1022646926758\":1480585069147,\"1025791718100\":1509788624837,\"1022646926757\":1480585069147,\"1023110123832\":1509788624299,\"1025703376780\":1509788624295,\"1022646926752\":1480585069147,\"1025791718098\":1509788624837,\"1022646926782\":1480585069147,\"1013272890620\":1509788624372,\"1024115856693\":1509788667888,\"1022646926778\":1480585069147,\"405258224\":1491634246533,\"1022917447064\":1509788624298,\"1022646926774\":1480585069147,\"1022917447060\":1509788624298,\"1023110123823\":1509788624299,\"1023110123822\":1509788624299,\"1022646926768\":1480585069147,\"1022646926732\":1480585069147,\"1022646926730\":1480585069147,\"1022917447082\":1509788624298,\"1022646926729\":1480585069147,\"4899963880\":1509788624156,\"1022646926728\":1480585069147,\"1022646926727\":1480585069147,\"1025797353807\":1509788624848,\"1022646926725\":1480585069147,\"1022646926723\":1480585069147,\"1021287558779\":1478686416990,\"1022646926722\":1480585069147,\"1021735027492\":1509788624997,\"1022646926720\":1480585069147,\"1025791718125\":1509788624868,\"1022646926750\":1480585069147,\"1022646926749\":1480585069147,\"1022917447101\":1509788624298,\"1016857716335\":1509788624977,\"1013208531191\":1478686804062,\"1022646926748\":1480585069147,\"1022646926747\":1480585069147,\"1021722575984\":1509788624395,\"1022646926745\":1480585069147,\"1021097220406\":1478686417232,\"1022917447095\":1509788624293,\"1025044844155\":1509788624388,\"1025044844157\":1509788624388,\"1025044844156\":1509788624388,\"1025044844159\":1509788624389,\"1022917447088\":1509788624298,\"1025044844158\":1509788624389,\"1020748693941\":1509788624440,\"1025791589656\":1509788624409,\"1024132373480\":1509788624324,\"1019455599806\":1478686804021,\"1022390674404\":1478686417015,\"1024637614471\":1509788667502,\"1023088237673\":1509788624439,\"1024331732554\":1509788667536,\"1022286081117\":1478686417198,\"1023088237677\":1509788624439,\"1023088237676\":1509788624439,\"1024637614474\":1509788667503,\"1023088237679\":1509788624439,\"1023088237681\":1509788624439,\"1022984554015\":1509788624915,\"1024680082190\":1509788625213,\"1019455599814\":1478686804021,\"1021975157497\":1509788624464,\"1019455599820\":1478686804021,\"1019455599817\":1478686804021,\"1024818099062\":1509788624929,\"1024818099077\":1509788624929,\"1025703377091\":1509788624295,\"1021425187268\":1478686804065,\"1020966411824\":1509788624369,\"1021704620598\":1478686417050,\"1015659090306\":1480585069068,\"1024637614422\":1509788667503,\"1021983021712\":1478686417152,\"1015659090312\":1480585069069,\"1550185668\":1478686417020,\"1024637614433\":1509788667502,\"1024818099106\":1509788624929,\"1456733792\":1444487341723,\"1022098887049\":1509788624190,\"1022440744556\":1478686417295,\"1024818099122\":1509788624929,\"1021774876324\":1478686804066,\"1021551931648\":1509788624405,\"1024637614359\":1509788667502,\"1010321691623\":1478686804049,\"1025609917218\":1509788624915,\"1025376326923\":1509788624305,\"1021438556746\":1509788624817,\"1024637614360\":1509788667502,\"1024637614373\":1509788667503,\"1024637614372\":1509788667503,\"1021968996893\":1509788624463,\"1024637614381\":1509788667502,\"1024637614378\":1509788667503,\"1024637614377\":1509788667503,\"1024637614391\":1509788667503,\"1024375073177\":1509788624220,\"1021774089827\":1478686417128,\"1024375073176\":1509788624220,\"1024375073179\":1509788624220,\"1024637614385\":1509788667503,\"1020975718143\":1478686417229,\"1024375073175\":1509788624220,\"1024375073174\":1509788624220,\"1024637614395\":1509788667503,\"1024403385120\":1509788624279,\"1025477143331\":1509788625248,\"1024194895572\":1509788625034,\"1024637614392\":1509788667502,\"1021494393891\":1509788624398,\"1025429301684\":1509788624433,\"1025429301682\":1509788624433,\"1025429301681\":1509788624510,\"1025429301680\":1509788624510,\"1021175360298\":1465470268188,\"1020391407088\":1478686804071,\"1025429301691\":1509788624432,\"1025429301690\":1509788624427,\"1020064246131\":1465470268277,\"1022403125767\":1478686417207,\"1021692168298\":1478686417121,\"1022075818426\":1509788624550,\"1024680082047\":1509788624597,\"1025881502340\":1509788667403,\"1019294645102\":1509788624312,\"1025429301637\":1509788625171,\"1021774876505\":1478686804066,\"1025429301636\":1509788625127,\"1025429301634\":1509788625127,\"1025429301633\":1509788625127,\"1025881502357\":1509788667403,\"1023071590918\":1509788624533,\"1023071590917\":1509788625101,\"1022307577749\":1478686417199,\"1022478891475\":1478943089487,\"1025710848143\":1509788624305,\"1022478891476\":1478943089487,\"1021781036864\":1509788624395,\"1022074769882\":1478686417271,\"1021913941860\":1509788624465,\"1021539086792\":1478686417245,\"4976116219\":1509788624158,\"1025569546552\":1509788624351,\"1022069526943\":1478686417301,\"1025429301712\":1509788624466,\"1025429301724\":1509788624437,\"1021925606912\":1478686416979,\"1025429301703\":1509788624432,\"1025429301706\":1509788624432,\"1024680082143\":1509788624589,\"1024412691119\":1509788667829,\"1025710848076\":1509788624306,\"1024680082140\":1509788624589,\"1009999905216\":1491634246516,\"1024680082136\":1509788624590,\"1025428121888\":1509788624359,\"1024680082134\":1509788624590,\"1024680082133\":1509788624589,\"1019022797595\":1480585069072,\"1024680082131\":1509788624590,\"1024680082129\":1509788624590,\"1010391574908\":1478686804071,\"1024680082127\":1509788624590,\"1024680082124\":1509788624590,\"1024680082121\":1509788624589,\"1024412691123\":1509788667830,\"1021774876663\":1478686804066,\"1024412691122\":1509788667456,\"4649237634\":1478686416965,\"1025906144692\":1509788667460,\"1012272535918\":1478686417073,\"1020763112308\":1478686417076,\"245212991\":1444487341715,\"1019775272470\":1509788624376,\"1024412691103\":1509788667465,\"1021546033592\":1478686417300,\"1024680082151\":1509788624590,\"1024680082150\":1509788624590,\"1012321426014\":1478686804062,\"1024680082148\":1509788624590,\"1020975587250\":1478686416974,\"1024680082147\":1509788624590,\"1016244549044\":1509788624309,\"1024680082146\":1509788624590,\"1025296503103\":1509788624371,\"1024680082145\":1509788624589,\"1024680082144\":1509788624589,\"1024680082078\":1509788624597,\"1012174750585\":1478686417073,\"1024680082076\":1509788624597,\"1024680082073\":1509788624597,\"1024680082070\":1509788624597,\"1025429301629\":1509788625127,\"1024680082066\":1509788624597,\"1020673723846\":1478686804022,\"1025881502317\":1509788667403,\"1024680082062\":1509788624597,\"1024723730295\":1509788667889,\"1025429301603\":1509788625128,\"1024680082058\":1509788624597,\"1019018734341\":1509788624315,\"1025429301600\":1509788625128,\"1023946378947\":1491634246531,\"1025429301615\":1509788625127,\"1023946378946\":1491634246531,\"1023946378945\":1491634246529,\"1025710848021\":1509788624305,\"1024680082053\":1509788624597,\"1025881502329\":1509788667403,\"1024680082051\":1509788624597,\"1023946378948\":1491634246531,\"1014487948604\":1478686804046,\"1025429301590\":1509788625244,\"1025429301597\":1509788625245,\"1023110127388\":1509788624299,\"1024680082092\":1509788624598,\"1024680082091\":1509788624597,\"1022191818361\":1478686417013,\"1024680082089\":1509788624597,\"1024680082084\":1509788624597,\"1024680082082\":1509788624597,\"1024680082081\":1509788624597,\"1024680082080\":1509788624597,\"1016399727819\":1480585069069,\"1024187686077\":1509788624502,\"1024187686076\":1509788624502,\"1024187686079\":1509788624502,\"1024187686065\":1509788624502,\"1024187686071\":1509788624502,\"1024215864059\":1509788624220,\"1021793095012\":1478686417129,\"1024215864063\":1509788624220,\"1024187686060\":1509788624502,\"1021793095014\":1478686417129,\"1024215864061\":1509788624220,\"1024187686063\":1509788624502,\"1024215864060\":1509788624220,\"1024187686049\":1509788624502,\"1021928752455\":1509788624974,\"1021997177137\":1478686417265,\"1024187686053\":1509788624502,\"1024187686052\":1509788624502,\"1024215864053\":1509788624220,\"1024187686055\":1509788624502,\"1023009856211\":1509788625049,\"1025906144821\":1509788667459,\"1024187686040\":1509788624502,\"1024187686043\":1509788624502,\"1021793094995\":1478686417129,\"1024187686044\":1509788624502,\"1981144115\":1478950494930,\"1981144114\":1478950494930,\"1021793095000\":1478686417129,\"1519120545\":1491634246505,\"1024187686035\":1509788624502,\"1519120544\":1491634246505,\"1021793095004\":1478686417129,\"1024187686037\":1509788624502,\"1024187686025\":1509788624502,\"1024187686030\":1509788624502,\"1022517557277\":1509788625064,\"1020294145170\":1465470268293,\"1022251477057\":1478686417196,\"1024215863979\":1509788624850,\"1024187686136\":1509788624503,\"1024215863978\":1509788624851,\"1024215863977\":1509788624851,\"1021944355343\":1478686417144,\"1024187686138\":1509788624503,\"1024187686141\":1509788624503,\"1024215863981\":1509788624850,\"1519120577\":1491634246505,\"1024187686131\":1509788624503,\"1021708421168\":1478686804043,\"1021708421169\":1478686804043,\"1024215863974\":1509788624850,\"1021708421164\":1478686804043,\"1021708421165\":1478686804043,\"1021774875707\":1478686804065,\"1021708421166\":1478686804043,\"1021708421167\":1478686804043,\"1021708421160\":1478686804043,\"1021708421161\":1478686804043,\"1021708421162\":1478686804043,\"1021708421163\":1478686804043,\"1021708421156\":1478686804043,\"1021708421157\":1478686804043,\"1024187686112\":1509788624503,\"1021708421158\":1478686804043,\"1024187686115\":1509788624503,\"1021708421159\":1478686804043,\"1021708421152\":1478686804043,\"1024187686117\":1509788624503,\"1021708421153\":1478686804043,\"1008828762198\":1478686804064,\"1021708421154\":1478686804043,\"1021708421148\":1478686804043,\"1025375934373\":1509788625019,\"1021708421150\":1478686804043,\"1020933512943\":1478686417083,\"1021708421151\":1478686804043,\"1024187686106\":1509788624503,\"1021695445829\":1509788624818,\"1014742772196\":1480585069062,\"1024187686099\":1509788624502,\"1021700294804\":1478686804027,\"1024187686101\":1509788624503,\"1024187686100\":1509788624503,\"1021695445854\":1509788624195,\"1024187686080\":1509788624502,\"1024187686085\":1509788624502,\"1016399858869\":1480585069069,\"1025906144853\":1509788667459,\"1021998356925\":1478686417156,\"1022143321603\":1480585069083,\"1023979406224\":1509788625017,\"1022392639786\":1478686417206,\"1021770026101\":1509788624395,\"1021326352768\":1478686417103,\"1025671783556\":1509788624943,\"1001732936106\":1478686417023,\"1018938496822\":1509788624386,\"1024786509909\":1509788624512,\"986026097\":1478686804024,\"1007973107123\":1478686804033,\"1023071590787\":1509788624194,\"1018469124911\":1509788624825,\"1016930988001\":1478686804019,\"1024187686011\":1509788624502,\"1019552843835\":1478686804015,\"1024187686010\":1509788624502,\"1010813629187\":1509788624277,\"1024187686014\":1509788624502,\"4935617766\":1509788624157,\"1021020017577\":1478686417001,\"1024752562722\":1509788667502,\"1506800413\":1444487341752,\"1021708421288\":1478686804064,\"1023381466239\":1509788624393,\"1021708421287\":1478686804064,\"1023716225039\":1491634246528,\"1024879310238\":1509788624226,\"1024879310237\":1509788624226,\"1024879310236\":1509788624226,\"1024879310235\":1509788624226,\"1024879310232\":1509788624226,\"1021981579482\":1478686417151,\"1001732936169\":1478686417023,\"1024752562717\":1509788667502,\"1020117330343\":1465470268310,\"1021695445975\":1509788624420,\"1024752562719\":1509788667502,\"1024752562712\":1509788667502,\"1023150887576\":1509788624977,\"2001984595\":1478686417021,\"2001984593\":1478686417021,\"2001984597\":1478686417021,\"1021507894646\":1509788624398,\"2001984596\":1478686417021,\"1024688209860\":1509788624895,\"1024132372716\":1509788624324,\"1022014349097\":1509788624949,\"1025191516628\":1509788624930,\"1021338019720\":1465470268221,\"1021338019722\":1465470268221,\"1024953092101\":1509788625023,\"1021757705800\":1478686417126,\"1019128963865\":1509788624298,\"1023835884183\":1491634246504,\"1021757705798\":1478686417126,\"1026226603009\":1514456869768,\"1022461846693\":1478686417298,\"1022204816382\":1480585069084,\"1025733523880\":1509788624959,\"1011857571005\":1478686804024,\"1018517753803\":1480585069070,\"1003492151144\":1478686417220,\"1021727164428\":1478686417123,\"1021395952713\":1478686417043,\"1022288834194\":1478686417286,\"461746399\":1444487341740,\"1022282280782\":1478686417014,\"1022288834220\":1478686417286,\"1021400808379\":1478686417006,\"1001732935784\":1478686417023,\"1584133380\":1491634246508,\"1024786510231\":1509788624466,\"1024786510230\":1509788624461,\"1024786510229\":1509788624512,\"1023377403286\":1509788624367,\"149791641\":1444487341753,\"1025619091507\":1509788624537,\"1025619091506\":1509788624542,\"1025619091505\":1509788624540,\"1021038760242\":1478686417092,\"1025619091514\":1509788624523,\"1021648663658\":1509788625082,\"1016704734007\":1478686804051,\"1023844928141\":1491634246537,\"1021885499007\":1478686417044,\"1025856729776\":1509788667459,\"1025733523727\":1509788624959,\"1024124377571\":1509788625071,\"1012276730640\":1478686804064,\"1025246174751\":1509788624931,\"1024215864139\":1509788625153,\"1024215864138\":1509788625153,\"1020784607439\":1509788624385,\"1024215864140\":1509788625153,\"1020257707868\":1465470268311,\"1024187686161\":1509788624503,\"1024187686160\":1509788624503,\"1022429079232\":1509788624177,\"1024187686162\":1509788624503,\"1024215864134\":1509788625153,\"1024161734538\":1509788667562,\"1025619091703\":1509788624204,\"1024187686153\":1509788624503,\"1025619091702\":1509788624200,\"1024187686155\":1509788624503,\"1024187686154\":1509788624503,\"1024187686156\":1509788624503,\"1024187686158\":1509788624503,\"1024215864147\":1509788625153,\"1024187686144\":1509788624503,\"1023845059262\":1491634246537,\"1021343393694\":1478686417103,\"1022089318932\":1478686417180,\"1024187686148\":1509788624503,\"1025619091705\":1509788624186,\"1024187686151\":1509788624503,\"1001732935865\":1478686417023,\"1025619091704\":1509788624197,\"1024215864110\":1509788624560,\"1021695445738\":1509788624534,\"1024215864103\":1509788624560,\"1024215864102\":1509788624560,\"1024215864101\":1509788624560,\"1024215864100\":1509788624560,\"1007584490383\":1478950494938,\"1021698460365\":1478686417121,\"1010919142514\":1495284743424,\"1009094580667\":1509788624389,\"1020438068702\":1478686804039,\"1018990947216\":1509788624392,\"1022364197540\":1478686417203,\"1022270353178\":1480585069093,\"1022270353180\":1480585069093,\"1001897455274\":1478686804029,\"1022646924909\":1480585069144,\"1024680083291\":1509788625209,\"1024680083290\":1509788625209,\"1024461318735\":1509788624852,\"1024680083288\":1509788625209,\"1022646924903\":1480585069144,\"1024680083287\":1509788625209,\"1024680083286\":1509788625209,\"1022646924901\":1480585069144,\"1024680083285\":1509788625209,\"1024680083283\":1509788625209,\"1024680083281\":1509788625209,\"1022646924896\":1480585069144,\"1024680083280\":1509788625209,\"1024680083279\":1509788625209,\"1025906667571\":1509788667459,\"1024680083278\":1509788625209,\"1021687713194\":1509788624404,\"1024680083277\":1509788625209,\"1025906667569\":1509788667462,\"1025423928573\":1509788624292,\"1024680083275\":1509788625209,\"4899964955\":1509788624158,\"1024680083274\":1509788625209,\"1024680083273\":1509788625209,\"1025906667573\":1509788667460,\"1024680083272\":1509788625209,\"1025906667572\":1509788667459,\"1021979614799\":1478686417263,\"1024461318739\":1509788624852,\"1024461318738\":1509788624852,\"1022226050457\":1478686417064,\"1022646924915\":1480585069144,\"1024461318741\":1509788624852,\"1022646924914\":1480585069144,\"1024461318740\":1509788624852,\"1023612287175\":1509788624956,\"1022646924875\":1480585069144,\"1023612287171\":1509788624956,\"1023612287180\":1509788624956,\"1023612287183\":1509788624956,\"1025523935551\":1509788624428,\"1025115619685\":1509788624970,\"1022646924865\":1480585069144,\"1023612287179\":1509788624956,\"1022737363749\":1509788624989,\"1021708422739\":1478686804065,\"1018310931666\":1478686804028,\"1022646924893\":1480585069144,\"1022646924892\":1480585069144,\"1022646924888\":1480585069144,\"1009094581860\":1509788624389,\"1022646924886\":1480585069144,\"1001732937529\":1478686417023,\"1024734607904\":1509788624939,\"1023612287141\":1509788624956,\"1022646924846\":1480585069144,\"1021835429512\":1478686416982,\"1022646924841\":1480585069144,\"1010023630516\":1491634246516,\"1022646924839\":1480585069144,\"1021244172864\":1509788624342,\"1023612287145\":1509788624956,\"1023612287144\":1509788624956,\"1023612287146\":1509788624956,\"1025523935554\":1509788624425,\"1022646924861\":1480585069144,\"1025523935553\":1509788624431,\"1023612287158\":1509788624956,\"1023890147360\":1491634246506,\"1025523935557\":1509788624407,\"1023612287155\":1509788624956,\"1022646924855\":1480585069144,\"1023612287164\":1509788624956,\"1021944486932\":1478686417144,\"1022646924850\":1480585069144,\"1023612287163\":1509788624956,\"1023540716406\":1509788625008,\"1022646924813\":1480585069144,\"1000090465922\":1478950494931,\"1022646924812\":1480585069144,\"1021352960491\":1465469681398,\"1021993770770\":1478686417156,\"1021993770768\":1478686417156,\"1022646924831\":1480585069144,\"1023636797725\":1509788624948,\"1022646924825\":1480585069144,\"1021488364006\":1478686417243,\"1022646924823\":1480585069144,\"1022646924819\":1480585069144,\"1022646924818\":1480585069144,\"1021488364000\":1478686417243,\"1022646924816\":1480585069144,\"1023612287077\":1509788624956,\"1023612287076\":1509788624956,\"1023612287073\":1509788624956,\"1022646925033\":1480585069144,\"1022646925031\":1480585069144,\"1022316620470\":1478686417288,\"1023612287084\":1509788624956,\"1022646925028\":1480585069144,\"1022285293713\":1478686417198,\"1023612287081\":1509788624956,\"1023612287080\":1509788624956,\"1022646925024\":1480585069144,\"1023612287082\":1509788624956,\"1021937540166\":1478686417143,\"1023612287094\":1509788624956,\"1022096397769\":1478686417181,\"1023612287088\":1509788624956,\"1023612287091\":1509788624956,\"1013175896462\":1478686804015,\"1021937540173\":1478686417143,\"1023612287100\":1509788624956,\"1022331562951\":1478686417201,\"1023612287097\":1509788624956,\"1021937540170\":1478686417143,\"1023612287098\":1509788624956,\"1023612287043\":1509788624955,\"1022646924998\":1480585069144,\"1022646924994\":1480585069144,\"1022646924993\":1480585069144,\"1022646925023\":1480585069144,\"1020744631620\":1509788624321,\"1024781399522\":1509788624472,\"1022646925013\":1480585069144,\"1022646925011\":1480585069144,\"1022316489374\":1478686417200,\"1022646925008\":1480585069144,\"1021017527630\":1478686417300,\"1023612287013\":1509788624955,\"1021017527631\":1478686417300,\"1025711111434\":1509788624306,\"1022646924973\":1480585069144,\"1024133816075\":1509788624416,\"1023612287009\":1509788624956,\"1024518202912\":1509788624219,\"1022646924969\":1480585069144,\"1021856008055\":1478686417135,\"1022646924968\":1480585069144,\"1022646924967\":1480585069144,\"1021017527623\":1478686417300,\"1022646924966\":1480585069144,\"1022646924965\":1480585069144,\"1020234639007\":1465470268316,\"1022646924963\":1480585069144,\"1022646924962\":1480585069144,\"1023612287016\":1509788624955,\"1022646924961\":1480585069144,\"1023612287019\":1509788624955,\"1012940110795\":1478686417074,\"1022079227028\":1478686417012,\"1023612287030\":1509788624955,\"1023612287025\":1509788624955,\"1023612287024\":1509788624955,\"1022646924985\":1480585069144,\"1024133816089\":1509788624416,\"1023612287026\":1509788624955,\"1024133816085\":1509788624416,\"1023612287039\":1509788624955,\"1022646924980\":1480585069144,\"1021017527632\":1478686417300,\"1022646924976\":1480585069144,\"1024454109745\":1509788625030,\"1012320509699\":1478686804062,\"1023612286991\":1509788624955,\"1012320509702\":1478686804062,\"840802033\":1491634246512,\"1022700663223\":1509788624973,\"1025301877952\":1509788624932,\"1023612286997\":1509788624956,\"1022646924954\":1480585069144,\"1022646924952\":1480585069144,\"1022646924951\":1480585069144,\"1024518202909\":1509788624219,\"1024518202908\":1509788624219,\"1024518202911\":1509788624219,\"1024518202910\":1509788624219,\"1023612287003\":1509788624956,\"1021708422787\":1478686804065,\"1025001720627\":1509788667497,\"1023612287460\":1509788624954,\"1022086305022\":1478686417179,\"1001495822381\":1478686417022,\"1022646925182\":1480585069145,\"1025791719436\":1509788624230,\"1025001720609\":1509788667497,\"1023612287473\":1509788624954,\"1025001720615\":1509788667497,\"1001732937235\":1478686417023,\"1025001720614\":1509788667497,\"1022200992278\":1478686417013,\"1023612287475\":1509788624954,\"1025791719429\":1509788624206,\"1025001720617\":1509788667497,\"1025791719425\":1509788624206,\"1025791719424\":1509788624206,\"1025001720621\":1509788667497,\"1022238633956\":1509788624947,\"1022646925133\":1480585069145,\"1023612287431\":1509788624954,\"1024518203335\":1509788625154,\"1022646925132\":1480585069145,\"1022646925130\":1480585069145,\"1022646925128\":1480585069145,\"1025001720596\":1509788667497,\"1023612287437\":1509788624954,\"1022646925126\":1480585069145,\"1022646925124\":1480585069145,\"1024518203342\":1509788625154,\"1024518203337\":1509788625154,\"1025791719472\":1509788624849,\"1024518203336\":1509788625154,\"1023612287435\":1509788624954,\"1022646925120\":1480585069145,\"1024518203338\":1509788625154,\"1025001720604\":1509788667497,\"1023612287445\":1509788624954,\"1025791719468\":1509788624864,\"1024133816061\":1509788624416,\"1025791719471\":1509788624825,\"1000368719684\":1478686416993,\"1025791719470\":1509788624864,\"1025791719465\":1509788624916,\"1023612287441\":1509788624954,\"1018923159893\":1509788624314,\"1018923159894\":1509788624311,\"1024133816057\":1509788624416,\"1023612287443\":1509788624954,\"1023612287453\":1509788624954,\"1025791719463\":1509788624916,\"1023612287448\":1509788624954,\"1025001720590\":1509788667497,\"1022646925103\":1480585069144,\"1021554029808\":1509788624397,\"1021759670323\":1478686417009,\"1022646925102\":1480585069144,\"1022646925100\":1480585069144,\"1024680082969\":1509788625213,\"1012523012799\":1478686417223,\"1022646925096\":1480585069144,\"1022646925095\":1480585069144,\"1022646925091\":1480585069144,\"1023845846103\":1491634246533,\"1022646925117\":1480585069145,\"1012153779374\":1478686417073,\"1022646925112\":1480585069145,\"1021831627868\":1478686417133,\"1023612287421\":1509788624954,\"1023612287423\":1509788624954,\"1022646925108\":1480585069145,\"1021247842988\":1478686417039,\"1022646925107\":1480585069145,\"1022646925106\":1480585069145,\"1025791719488\":1509788624837,\"1021759670316\":1478686417009,\"1022646925105\":1480585069145,\"1022646925104\":1480585069145,\"1024535111356\":1509788624436,\"1023612287365\":1509788624954,\"1023612287367\":1509788624954,\"1022646925068\":1480585069144,\"1025791719550\":1509788624611,\"1025246173413\":1509788624941,\"1022646925066\":1480585069144,\"1023612287360\":1509788624954,\"1025791719546\":1509788624612,\"1021225429058\":1478686417038,\"1021250988745\":1478686417100,\"1023612287368\":1509788624954,\"1022646925085\":1480585069144,\"1022646925080\":1480585069144,\"1022646925077\":1480585069144,\"1025671783256\":1509788624942,\"1022646925072\":1480585069144,\"1022359217204\":1478686417203,\"1022646925294\":1480585069145,\"1022646925293\":1480585069145,\"1025902735869\":1509788667464,\"1022646925292\":1480585069145,\"1023011167578\":1509788624384,\"1023612287334\":1509788624954,\"1025902735868\":1509788667461,\"1022646925291\":1480585069145,\"1022646925290\":1480585069145,\"1023820549406\":1491634246535,\"1022646925289\":1480585069145,\"1025791719579\":1509788624566,\"1022646925288\":1480585069145,\"1025791719578\":1509788624545,\"1023612287330\":1509788624953,\"1023612287341\":1509788624954,\"1022646925286\":1480585069145,\"1025791719575\":1509788624545,\"1022646925282\":1480585069145,\"1023612287336\":1509788624954,\"1022646925281\":1480585069145,\"1023612287339\":1509788624954,\"1022646925280\":1480585069145,\"1025791719570\":1509788624545,\"1023612287338\":1509788624954,\"1022646925310\":1480585069145,\"1021698460807\":1478686417121,\"1023612287346\":1509788624954,\"1022646925303\":1480585069145,\"1022646925302\":1480585069145,\"1022646925301\":1480585069145,\"1022646925299\":1480585069145,\"1023612287353\":1509788624954,\"1023612287352\":1509788624954,\"1022646925297\":1480585069145,\"1022646925296\":1480585069145,\"1021578147713\":1478686417048,\"1022148563334\":1478686417185,\"1016301817092\":1480585069065,\"1022646662971\":1480585069080,\"1024818099885\":1509788624929,\"1022646925250\":1480585069145,\"1024818099880\":1509788624929,\"1022646925249\":1480585069145,\"1022646662972\":1480585069080,\"1024818099893\":1509788624929,\"1022646662951\":1480585069094,\"1016097487227\":1478686804032,\"1019302641278\":1509788624316,\"1117646631\":1444487341739,\"1025795259259\":1509788624342,\"1019166058071\":1478686804020,\"1024818099899\":1509788624929,\"1022646662956\":1480585069080,\"1022646662995\":1480585069080,\"1022646925228\":1480585069145,\"1024818099910\":1509788624929,\"1023612287265\":1509788624953,\"1022646662998\":1480585069150,\"1022646925225\":1480585069145,\"1024818099917\":1509788624929,\"1022646925222\":1480585069145,\"1022646925221\":1480585069145,\"1022646925220\":1480585069145,\"1022646925218\":1480585069145,\"1022646925217\":1480585069145,\"1022646925247\":1480585069145,\"1022646925246\":1480585069145,\"1024818099924\":1509788624929,\"1022646925245\":1480585069145,\"1022646925244\":1480585069145,\"1024818099920\":1509788624929,\"1024818099934\":1509788624929,\"1024818099929\":1509788624929,\"1022646925234\":1480585069145,\"1023612287236\":1509788624953,\"1020809380341\":1478686417225,\"1023612287238\":1509788624953,\"1023612287235\":1509788624953,\"1023612287234\":1509788624953,\"1023612287245\":1509788624953,\"1022646925190\":1480585069145,\"1023612287247\":1509788624953,\"1022646925187\":1480585069145,\"1022646925186\":1480585069145,\"1023612287240\":1509788624953,\"1008583014719\":1509788624381,\"1023612287243\":1509788624953,\"1022646925184\":1480585069145,\"1023612287242\":1509788624953,\"1022646925215\":1480585069145,\"1023612287254\":1509788624953,\"1022646925211\":1480585069145,\"1022646925207\":1480585069145,\"1023612287260\":1509788624953,\"1022646925205\":1480585069145,\"1022646925204\":1480585069145,\"1022646925202\":1480585069145,\"1022646925200\":1480585069145,\"1025671783388\":1509788624942,\"1023612287258\":1509788624953,\"1022646924398\":1480585069142,\"1025219435835\":1509788625128,\"1023612287713\":1509788624954,\"1001355709343\":1478950494934,\"1021870949034\":1478686417136,\"1023612287715\":1509788624954,\"1025219435839\":1509788625113,\"1015889078609\":1480585069075,\"1023612287724\":1509788624954,\"1022519131140\":1509788625075,\"1022646924388\":1480585069142,\"1025219435829\":1509788625245,\"1023612287720\":1509788624954,\"1025219435831\":1509788625245,\"1014730845266\":1465470268256,\"1023612287730\":1509788624954,\"1022363805520\":1480585172189,\"1023612287738\":1509788624954,\"1018246838991\":1509788625020,\"1024680082815\":1509788624260,\"1023612287684\":1509788624954,\"1024680082812\":1509788624260,\"1022646924363\":1480585069142,\"1024680082811\":1509788624260,\"1024680082810\":1509788624260,\"1024680082809\":1509788624260,\"1025040386019\":1509788624269,\"1021567137007\":1509788624397,\"1023612287693\":1509788624954,\"1024680082805\":1509788624260,\"1024680082804\":1509788624260,\"1022646924355\":1480585069142,\"1024680082802\":1509788624260,\"1024680082801\":1509788624260,\"1024680082800\":1509788624260,\"1025040386026\":1509788624270,\"1024680082799\":1509788624260,\"1025219435785\":1509788624437,\"1023612287701\":1509788624954,\"1025040386036\":1509788624228,\"1022646924381\":1480585069142,\"1025040386039\":1509788624227,\"1024680082796\":1509788624260,\"1022646924379\":1480585069142,\"1025040386033\":1509788624228,\"1023612287697\":1509788624954,\"1025219435788\":1509788624437,\"1024680082792\":1509788624260,\"1022646924375\":1480585069142,\"1021205113413\":1478686417038,\"1024680082790\":1509788624260,\"1023612287708\":1509788624954,\"1024680082789\":1509788624260,\"1021981711370\":1509788624426,\"1022646924369\":1480585069142,\"1025219435782\":1509788624467,\"1022646924334\":1480585069142,\"1025652122381\":1509788624337,\"1022646924330\":1480585069142,\"1022646924328\":1480585069142,\"1025531799772\":1509788624339,\"1020802957886\":1509788625229,\"1024809711054\":1509788624925,\"1021460577640\":1478686417242,\"1022646924321\":1480585069142,\"1022341785329\":1509788625007,\"1022116058208\":1478686417183,\"1018891441175\":1509788624301,\"1022341785324\":1509788625007,\"1022341785322\":1509788625007,\"1022341785321\":1509788625008,\"1022341785320\":1509788625007,\"1022341785319\":1509788625008,\"1164700466\":1478686804033,\"1022646924341\":1480585069142,\"1022341785317\":1509788625007,\"1017063891724\":1478686804034,\"1023612287678\":1509788624954,\"1022341785315\":1509788625007,\"1022646924338\":1480585069142,\"1022646924337\":1480585069142,\"1023612287675\":1509788624954,\"1020294013169\":1465470268280,\"1022646924303\":1480585069142,\"1022341785311\":1509788625008,\"1024558441214\":1509788667473,\"1022341785309\":1509788625007,\"1022341785307\":1509788625007,\"1025710849961\":1509788624304,\"1022341785305\":1509788625007,\"1023947294341\":1491634246529,\"1022646924319\":1480585069142,\"1022646924318\":1480585069142,\"1025219435848\":1509788625127,\"1025219435851\":1509788625136,\"1022646924314\":1480585069142,\"1024667892846\":1509788625025,\"1025219435843\":1509788625127,\"1022646924308\":1480585069142,\"1025219435845\":1509788625127,\"1025219435846\":1509788625127,\"1021054621172\":1478686417093,\"1021054621173\":1478686417093,\"1228924862\":1478686804029,\"1022646924526\":1480585069142,\"1025001457844\":1509788625021,\"1021688237877\":1478686804032,\"1023612287586\":1509788624954,\"1023612287597\":1509788624954,\"1025802991867\":1509788667814,\"1022646924512\":1480585069142,\"1023612287594\":1509788624954,\"1023612287601\":1509788624954,\"1022247808204\":1478686417196,\"1020865617454\":1480585069077,\"1022646924531\":1480585069142,\"1021992721907\":1478686417265,\"1022646924530\":1480585069142,\"1025366758124\":1509788624293,\"1021667790421\":1509788624404,\"1022646924529\":1480585069142,\"1022646924528\":1480585069142,\"1025731951634\":1509788624922,\"1022646924493\":1480585069142,\"1024518202439\":1509788624443,\"1024518202438\":1509788624443,\"1023612287558\":1509788624954,\"1022646924491\":1480585069142,\"1022646924489\":1480585069142,\"1021721922836\":1509788624395,\"1022361315122\":1478686417289,\"1025703378664\":1509788624295,\"1023612287567\":1509788624954,\"1024518202441\":1509788624443,\"1022646924482\":1480585069142,\"1024518202440\":1509788624444,\"1022646924481\":1480585069142,\"1024518202443\":1509788624443,\"1023612287562\":1509788624954,\"1023612287572\":1509788624954,\"1021688237828\":1478686804032,\"1022646924505\":1480585069142,\"1022646924504\":1480585069142,\"1022646924503\":1480585069142,\"1023612287582\":1509788624954,\"1022646924498\":1480585069142,\"1022646924496\":1480585069142,\"1023612287578\":1509788624954,\"1022646924463\":1480585069142,\"1015591590868\":1478686804016,\"1022646924461\":1480585069142,\"1024987171795\":1509788667581,\"1022057601359\":1478686417173,\"1022646924460\":1480585069142,\"1025040385798\":1509788625166,\"1022646924459\":1480585069142,\"1025040385793\":1509788625243,\"1025040385794\":1509788625244,\"1025040385804\":1509788625143,\"1025040385807\":1509788625135,\"1022385693903\":1478686417205,\"1025040385803\":1509788625144,\"1014764923535\":1480585069067,\"1022646924478\":1480585069142,\"1012410553958\":1478686417223,\"1023612287543\":1509788624954,\"1013063184765\":1478686804015,\"1022646924476\":1480585069142,\"1025618961822\":1509788624847,\"1022646924471\":1480585069142,\"1025040385821\":1509788625135,\"1023612287548\":1509788624954,\"1022646924467\":1480585069142,\"1023612287545\":1509788624954,\"1022646924465\":1480585069142,\"1022656492835\":1509788624462,\"1022646924464\":1480585069142,\"1024680082816\":1509788624260,\"1025040385830\":1509788625135,\"1020802957983\":1509788624604,\"1022646924419\":1480585069142,\"1025040385833\":1509788625169,\"1022646924417\":1480585069142,\"1025040385835\":1509788625113,\"1009746950025\":1491634246512,\"1021016610627\":1478686417231,\"1022282279639\":1478686417014,\"1021196069864\":1478686417098,\"1024680082524\":1509788624905,\"1025040385734\":1509788625144,\"1022646924651\":1480585069143,\"1024680082523\":1509788624905,\"1024680082522\":1509788624905,\"1024680082520\":1509788624905,\"1024680082519\":1509788624905,\"1022646924646\":1480585069143,\"1024680082518\":1509788624905,\"1024680082517\":1509788624905,\"1024680082516\":1509788624905,\"1024680082514\":1509788624905,\"1024680082513\":1509788624905,\"1008704386194\":1444487341757,\"1025040385738\":1509788625135,\"1022646924671\":1480585069143,\"1025040385748\":1509788625135,\"1022646924668\":1480585069143,\"1025040385750\":1509788625135,\"1025040385744\":1509788625135,\"1022646924664\":1480585069143,\"1022091810449\":1509788624439,\"1023071591464\":1509788624816,\"1024310235740\":1509788624971,\"1025040385757\":1509788625167,\"1022646924661\":1480585069143,\"1024680082501\":1509788624905,\"1025040385753\":1509788625169,\"1022646924658\":1480585069143,\"1025040385761\":1509788625105,\"1024680082554\":1509788624900,\"1024680082553\":1509788624900,\"1022646924616\":1480585069143,\"1024680082552\":1509788624900,\"1024680082551\":1509788624900,\"1024680082550\":1509788624900,\"1024680082549\":1509788624900,\"1023957780327\":1509788625037,\"1024680082548\":1509788624900,\"1024680082547\":1509788624900,\"1024680082546\":1509788624900,\"1022646924609\":1480585069143,\"1024680082545\":1509788624900,\"1024680082544\":1509788624900,\"1024680082543\":1509788624899,\"1024680082542\":1509788624900,\"1022646924637\":1480585069143,\"1024680082541\":1509788624900,\"1023306886667\":1509788625072,\"1024680082539\":1509788624900,\"1022646924634\":1480585069143,\"1024680082538\":1509788624900,\"1024680082537\":1509788624899,\"1021721398413\":1478686804047,\"1022646924632\":1480585069143,\"964925108\":1491634246509,\"1022646924628\":1480585069143,\"1019608025743\":1509788625078,\"1022646924586\":1480585069143,\"1022646924584\":1480585069143,\"1022646924582\":1480585069142,\"1022646924581\":1480585069142,\"1025040385679\":1509788624454,\"1025040385673\":1509788624427,\"1025523935811\":1509788624823,\"1025523935810\":1509788624833,\"1022646924605\":1480585069143,\"1025523935809\":1509788624829,\"1022646924604\":1480585069143,\"1022275726299\":1478686417067,\"1022646924603\":1480585069143,\"1021688237798\":1478686804032,\"1022196666385\":1478686417189,\"1022646924600\":1480585069143,\"1025523935812\":1509788624800,\"1025792375364\":1509788625008,\"1022646924597\":1480585069143,\"280477676\":1517734758204,\"1020294144501\":1465470268293,\"1022646924593\":1480585069143,\"1020975585647\":1478686416974,\"1009590190027\":1478686804030,\"1024680082492\":1509788624905,\"670009480\":1478950494913,\"1024680082488\":1509788624905,\"1024680082486\":1509788624905,\"1024680082481\":1509788624905,\"1024680082480\":1509788624905,\"1025523935843\":1509788624204,\"1024680082479\":1509788624905,\"1025523935842\":1509788624201,\"1025040385718\":1509788625243,\"1025523935845\":1509788624186,\"1025523935844\":1509788624198,\"1025040385721\":1509788625244,\"1022646924783\":1480585069144,\"1022646924782\":1480585069144,\"1025040385607\":1509788624441,\"1024680082651\":1509788624900,\"1022646924778\":1480585069143,\"1021871342380\":1509788624437,\"1025040385602\":1509788624451,\"1024680082647\":1509788624900,\"1025040385615\":1509788624436,\"1025040385614\":1509788624436,\"1024680082642\":1509788624900,\"1021906207032\":1478686417140,\"1025040385611\":1509788624441,\"1021912498649\":1478686417140,\"1024680082640\":1509788624900,\"1016780493739\":1478686804022,\"155428563\":1478950494906,\"1024680082639\":1509788624900,\"1024680082638\":1509788624900,\"1020605829030\":1478686417075,\"1025040385616\":1509788624436,\"1021871342387\":1509788624437,\"1025040385631\":1509788624436,\"1023835885098\":1491634246503,\"1021871342385\":1509788624437,\"1022646924751\":1480585069143,\"1025523935923\":1509788624524,\"1022646924750\":1480585069143,\"1022646924749\":1480585069143,\"1025040385638\":1509788624436,\"1025523935920\":1509788624537,\"1022646924746\":1480585069143,\"1024734607801\":1509788624939,\"1024734607799\":1509788624939,\"1022646924742\":1480585069143,\"1022646924739\":1480585069143,\"1022967251675\":1509788624426,\"1025040385641\":1509788624436,\"1024273273905\":1509788624277,\"1025040385643\":1509788624436,\"1561719482\":1444487341703,\"1022646924767\":1480585069143,\"1022646924764\":1480585069143,\"1024680082668\":1509788624900,\"1006821950493\":1478686804040,\"1024680082666\":1509788624900,\"1024680082665\":1509788624900,\"1024680082664\":1509788624900,\"1024680082663\":1509788624900,\"1024680082661\":1509788624900,\"1024680082660\":1509788624900,\"1025523935919\":1509788624542,\"1024680082659\":1509788624900,\"1022519131569\":1509788625064,\"1025523935918\":1509788624541,\"1024680082658\":1509788624900,\"1024680082657\":1509788624900,\"1022646924752\":1480585069143,\"1024680082656\":1509788624900,\"1022646924719\":1480585069143,\"1023798014003\":1509788625038,\"1022646924718\":1480585069143,\"1024518202663\":1509788624855,\"1022646924716\":1480585069143,\"1025219435770\":1509788624433,\"1024518202657\":1509788624855,\"1022646924713\":1480585069143,\"1024518202659\":1509788624855,\"1024518202658\":1509788624855,\"1022646924710\":1480585069143,\"1021973978435\":1478686417056,\"1025219435767\":1509788624433,\"1021946978292\":1478686417144,\"1009353075994\":1478686804061,\"1022646924735\":1480585069143,\"1025219435753\":1509788624434,\"1022921639389\":1509788624293,\"1021632803120\":1509788624818,\"1025714650727\":1509788624828,\"1022646924732\":1480585069143,\"1022646924730\":1480585069143,\"1009353075996\":1478686804061,\"1022646924729\":1480585069143,\"1022646924728\":1480585069143,\"1025219435758\":1509788624432,\"602377279\":1491634246514,\"1022646924726\":1480585069143,\"1025714650729\":1509788624822,\"1009353075991\":1478686804061,\"1022646924722\":1480585069143,\"1025219435748\":1509788624433,\"1025714650728\":1509788624832,\"1022646924721\":1480585069143,\"1021688237679\":1478686804032,\"1025219435750\":1509788624424,\"1025714650730\":1509788624745,\"1017124322905\":1478686804031,\"1022217007087\":1509788624938,\"1025219435736\":1509788624510,\"1022312032647\":1478686417015,\"1020831924572\":1478686417078,\"1022453981196\":1478686417297,\"1011301734735\":1480585069074,\"1025219435740\":1509788624511,\"1022646924679\":1480585069143,\"1022967251614\":1509788624352,\"1022646924676\":1480585069143,\"1025703378860\":1509788624295,\"1022646924673\":1480585069143,\"1022646924701\":1480585069143,\"1025040385590\":1509788624509,\"1025523935975\":1509788625088,\"1025523935974\":1509788625125,\"1021795977426\":1478686417052,\"1025523935973\":1509788625108,\"1017124322894\":1478686804031,\"1025523935972\":1509788625117,\"1024518202653\":1509788624855,\"1020827205919\":1509788624320,\"1025040385596\":1509788624452,\"1025040385593\":1509788624510,\"1021867285751\":1478686417257,\"1021258463044\":1478686417100,\"1022108191377\":1478686417182,\"1022097705269\":1478686417275,\"1020042137549\":1478686804031,\"1024669721561\":1509788625025,\"1020916466585\":1509788624352,\"1022203900125\":1478686417280,\"1022518600196\":1509788625065,\"1037667818\":1478686417020,\"1021708423753\":1478686804043,\"1021708423748\":1478686804043,\"1021708423749\":1478686804043,\"1021721006982\":1478686417051,\"1022456872953\":1478686417216,\"1021708423750\":1478686804043,\"1021708423744\":1478686804043,\"1022456872958\":1478686417216,\"1021708423745\":1478686804043,\"1021708423746\":1478686804043,\"1021708423747\":1478686804043,\"1021986292616\":1478686417153,\"1023835886069\":1491634246504,\"1024983897447\":1509788624924,\"1021986292618\":1478686417153,\"1021986292619\":1478686417153,\"1024983897449\":1509788624924,\"1024983897448\":1509788624924,\"1022255412105\":1509788624280,\"1024983897455\":1509788624924,\"1020087841092\":1509788625077,\"1014712889636\":1480585069072,\"1024983897458\":1509788624924,\"1020087841093\":1509788625076,\"1021462143836\":1509788624402,\"1020087841095\":1509788625078,\"1000977448537\":1478686417021,\"1025909943368\":1509788667462,\"1024983897465\":1509788624924,\"1024107069752\":1509788625019,\"1020294151880\":1465470268293,\"1009862676495\":1491634246514,\"1020870852667\":1509788624304,\"1022463426315\":1478686417072,\"1009077141809\":1478686804023,\"1024184403646\":1509788624548,\"1024983897507\":1509788624925,\"1024942871347\":1509788624904,\"1024983897514\":1509788624924,\"1021688238395\":1478686804067,\"1024983897512\":1509788624933,\"1001300922953\":1478686417024,\"1022511653392\":1509788624434,\"1024983897516\":1509788624924,\"1022417681577\":1478686417209,\"1024942871329\":1509788624904,\"1021994550247\":1478686417057,\"1024942871330\":1509788624904,\"1021960208868\":1478686417148,\"1024942871343\":1509788624904,\"1024942871336\":1509788624904,\"1024942871339\":1509788624904,\"1024942871338\":1509788624904,\"1021688238352\":1478686804067,\"1024942871316\":1509788624904,\"1024942871314\":1509788624904,\"1021914603166\":1478686417141,\"1024942871325\":1509788624904,\"1024983897483\":1509788624924,\"1024942871324\":1509788624904,\"1024942871327\":1509788624904,\"1021396746172\":1478686804043,\"1024942871321\":1509788624904,\"1021396746174\":1478686804043,\"1021396746175\":1478686804043,\"1024983897484\":1509788624924,\"1024942871301\":1509788624904,\"1024942871300\":1509788624904,\"1024983897493\":1509788624924,\"1001385203556\":1480585069061,\"1024942871309\":1509788624904,\"1024942871308\":1509788624904,\"1024942871311\":1509788624904,\"1024983897496\":1509788624924,\"1024942871305\":1509788624904,\"1024983897500\":1509788624924,\"1016858636631\":1509788624976,\"1024375075243\":1509788624816,\"1022196928401\":1478686417189,\"1021925875645\":1478686804046,\"1012476742752\":1464448510787,\"1025283393431\":1509788624211,\"1021967811080\":1509788624434,\"1021688238423\":1478686804067,\"1022518600409\":1509788625064,\"1021708423820\":1478686804043,\"1021708423821\":1478686804043,\"1021708423816\":1478686804043,\"1021708423817\":1478686804043,\"1021708423818\":1478686804043,\"1021708423819\":1478686804043,\"1021708423812\":1478686804043,\"1021708423813\":1478686804043,\"1021708423814\":1478686804043,\"1022366300626\":1478686417069,\"1021708423815\":1478686804043,\"1022452678398\":1478686417215,\"1024735520529\":1509788624813,\"1024735520531\":1509788624813,\"1022452678400\":1478686417215,\"1024735520533\":1509788624813,\"1024735520535\":1509788624813,\"1024735520534\":1509788624813,\"1024735520537\":1509788624813,\"1021688238267\":1478686804067,\"1024735520538\":1509788624813,\"1023820550548\":1491634246535,\"1025597209511\":1509788624363,\"1024735520515\":1509788624813,\"1024735520517\":1509788624813,\"1024735520516\":1509788624813,\"1025597209507\":1509788624334,\"1024735520519\":1509788624813,\"1024735520518\":1509788624813,\"1024735520520\":1509788624813,\"1024735520523\":1509788624813,\"1025597209513\":1509788624363,\"1021385866919\":1478686417042,\"1024735520527\":1509788624813,\"1024735520565\":1509788624461,\"1024735520566\":1509788624461,\"1024735520568\":1509788624461,\"1021995598440\":1478686417156,\"1025597209503\":1509788624334,\"1024735520571\":1509788624508,\"1025597209502\":1509788624334,\"1024735520574\":1509788624508,\"1020653933160\":1478686804057,\"1023615952280\":1509788624960,\"1024780347397\":1509788624973,\"1024942871287\":1509788624904,\"1024780347393\":1509788624973,\"872252088\":1491634246514,\"1024780347394\":1509788624973,\"1022021682330\":1478686417162,\"1024735520603\":1509788624871,\"1024942871294\":1509788624904,\"1023924623116\":1509788624961,\"1024735520605\":1509788624871,\"1022240863214\":1478686417194,\"1024735520607\":1509788624915,\"1024735520606\":1509788624871,\"1024735520577\":1509788624508,\"1024735520579\":1509788624433,\"1024735520578\":1509788624433,\"1021497927612\":1478686417244,\"1021708423976\":1478686804050,\"1024735520581\":1509788624423,\"1021708423977\":1478686804050,\"1020275801237\":1509788624287,\"1024735520582\":1509788624507,\"1024735520585\":1509788624461,\"1024735520584\":1509788624426,\"1024735520587\":1509788624508,\"1024653075355\":1509788624177,\"1004790825915\":1480585069067,\"1024653075354\":1509788624177,\"1025246168288\":1509788624930,\"1024653075353\":1509788624177,\"1025576368273\":1509788624349,\"1024653075352\":1509788624177,\"1024780347430\":1509788624973,\"1476257433\":1478686804024,\"1025283393068\":1509788625136,\"1021688238295\":1478686804067,\"1024780347426\":1509788624973,\"1024653075351\":1509788624177,\"1024887951753\":1509788624456,\"1024735520611\":1509788624915,\"1024735520610\":1509788624915,\"1024780347446\":1509788624973,\"1024780347441\":1509788624973,\"1024735520612\":1509788624835,\"1025576368271\":1509788624349,\"1000977448819\":1478686417021,\"1024780347448\":1509788624973,\"1024887951749\":1509788624430,\"1024341167638\":1509788624518,\"872252017\":1491634246514,\"1020275801166\":1509788624287,\"1020275801168\":1509788624287,\"1022608124238\":1509788624467,\"1192883850\":1491634246507,\"1024375075070\":1509788624419,\"1866456731\":1478686417020,\"1866456728\":1478686417020,\"1866456723\":1478686417020,\"1021409452515\":1509788624437,\"1020275801202\":1509788624287,\"1020275801204\":1509788624287,\"1020275801205\":1509788624287,\"1024341167659\":1509788624518,\"1022293685284\":1478686417198,\"220314781\":1478686417019,\"1021602524432\":1478686804046,\"1025703240191\":1509788624431,\"1025703240190\":1509788624428,\"1037667430\":1478686417020,\"1022091675717\":1478686417012,\"1021623102534\":1509788624397,\"1708250121\":1444487341731,\"1021251778156\":1478686417039,\"1024341167691\":1509788624423,\"1021702132485\":1478686417250,\"1024341167690\":1509788624423,\"1022255411742\":1509788624277,\"1708250124\":1444487341718,\"1013147850079\":1478686804025,\"1012476743004\":1444487341761,\"1024341167717\":1509788624421,\"1024341167716\":1509788624421,\"1021387964005\":1478686804024,\"1018990948989\":1509788624393,\"1017039650477\":1478686804031,\"1024142721357\":1509788667499,\"1024142721364\":1509788667499,\"1024142721363\":1509788667499,\"1024341167494\":1509788624421,\"1024341167493\":1509788624421,\"1022091807632\":1509788624439,\"1001338672799\":1444487341729,\"1025703371361\":1509788624296,\"1021629919020\":1509788624397,\"1021708423257\":1478686804046,\"1024142721376\":1509788667499,\"1021330161346\":1478686416983,\"1022470634811\":1478686417219,\"1020653932913\":1478686804057,\"1022049731627\":1509788624434,\"1021646433282\":1509788624827,\"1016420701626\":1480585069070,\"1021330161360\":1478686416983,\"1025053367134\":1509788624932,\"1025703240192\":1509788624425,\"1025703240198\":1509788624406,\"1021330161312\":1478686416983,\"1020271869524\":1509788624353,\"1021330161340\":1478686416983,\"4649232196\":1478686416965,\"1021330161328\":1478686416983,\"1001385203075\":1480585069061,\"1002264848683\":1478686417017,\"1025791715193\":1509788624545,\"1025791715195\":1509788624545,\"1025791715194\":1509788624545,\"1024341167611\":1509788624421,\"1025791715190\":1509788624538,\"1025791715185\":1509788624565,\"1023054938192\":1509788625073,\"1024341167613\":1509788624421,\"1021330161304\":1478686416983,\"1025791715180\":1509788624565,\"1024206554603\":1509788624439,\"1025791715183\":1509788624565,\"1024341167591\":1509788624423,\"1025791715177\":1509788624611,\"1059556690\":1444487341740,\"1019260822069\":1509788624312,\"1025791715176\":1509788624612,\"1025906142814\":1509788667460,\"1001644721202\":1444487341702,\"1025906142813\":1509788667461,\"1022003857081\":1478686417157,\"1024341167592\":1509788624423,\"1025053367140\":1509788624932,\"1016957597175\":1478686804022,\"1023791983791\":1509788624174,\"1024942870838\":1509788624548,\"1022417682110\":1478686417209,\"1024942870844\":1509788624548,\"1025791715220\":1509788624566,\"1003662023816\":1478686417025,\"1024942870846\":1509788624548,\"1024341167391\":1509788624423,\"1024341167389\":1509788624423,\"1022198369723\":1509788624971,\"1024341167365\":1509788624423,\"1025791715210\":1509788624545,\"1024942870818\":1509788624552,\"1022094429158\":1478686417181,\"1303379766\":1444487341731,\"1025791715206\":1509788624545,\"1007085406339\":1478686804025,\"1025791715203\":1509788624545,\"1021166972985\":1465470268307,\"4965635418\":1509788624158,\"1025791715263\":1509788624837,\"1025791715256\":1509788624837,\"1025791715259\":1509788624837,\"1023845061549\":1491634246537,\"1021022243818\":1478686417090,\"1025791715250\":1509788624825,\"1025791715244\":1509788624916,\"1023845061552\":1491634246537,\"1021368040479\":1509788624439,\"1025791715243\":1509788624916,\"1027718904457\":1527346641968,\"1012115379349\":1478686417025,\"1024942870796\":1509788624611,\"1023924622590\":1509788624961,\"1024942870798\":1509788624565,\"1024942870792\":1509788624611,\"1021695710176\":1478686804039,\"1025791715268\":1509788624837,\"1025791715271\":1509788624837,\"1020966405217\":1478686417001,\"1024341167439\":1509788624423,\"1001556640601\":1478686417022,\"1024341167437\":1509788624423,\"1025791715267\":1509788624837,\"1022476132953\":1478943089315,\"507489493\":1444487341732,\"1021796636114\":1478686417255,\"1024942870873\":1509788624544,\"1024607993188\":1509788667589,\"1024942870854\":1509788624567,\"1024942870860\":1509788624566,\"1020823674818\":1478686416998,\"1024942870857\":1509788624539,\"1019295031460\":1509788625078,\"1019295031461\":1509788625077,\"1025703240523\":1509788624197,\"1021708423541\":1478686804027,\"1025703240522\":1509788624204,\"1025703240521\":1509788624200,\"1021311285508\":1465470268205,\"1025703371597\":1509788624295,\"1025703240525\":1509788624186,\"1022198369336\":1509788624936,\"1019596494679\":1509788624933,\"1022198369332\":1509788624933,\"1022198369333\":1509788624932,\"349939653\":1444487341755,\"1009860711340\":1491634246520,\"1021311547693\":1465470268205,\"1022236930514\":1478686417194,\"1021907918262\":1509788624465,\"1003492153114\":1478686417220,\"507489659\":1444487341744,\"1017554360656\":1465470268262,\"1097593383\":1478686804032,\"1018772422697\":1509788624373,\"1021244175710\":1509788624971,\"1024906039952\":1509788624938,\"1024341167305\":1509788624423,\"1024341167304\":1509788624423,\"1021804370937\":1478686417131,\"1021903986103\":1478686417054,\"1019179825233\":1509788624940,\"1024341167359\":1509788624423,\"155564607\":1509788625019,\"1024942870734\":1509788624566,\"1024942870731\":1509788625203,\"1024341167122\":1509788624423,\"1024341167120\":1509788624423,\"1013101056745\":1465470268318,\"1025017844917\":1509788624334,\"1025219428529\":1509788624543,\"1025017844916\":1509788624333,\"1008404101874\":1509788625081,\"1025017844919\":1509788624333,\"1025017844918\":1509788624334,\"1025219428530\":1509788624543,\"1025017844913\":1509788624333,\"1025219428533\":1509788624543,\"1025017844912\":1509788624332,\"1025017844915\":1509788624333,\"1025017844914\":1509788624333,\"1025219428534\":1509788624543,\"1025219428520\":1509788624544,\"1025017844911\":1509788624332,\"1025219428523\":1509788624539,\"1022282282936\":1478686417014,\"1025017844910\":1509788624332,\"1020781991968\":1478686417225,\"1025219428513\":1509788624612,\"1025219428515\":1509788624612,\"1022004119367\":1478686417157,\"1025219428516\":1509788624544,\"1025219428519\":1509788624536,\"1864621187\":1444487341719,\"1025017844894\":1509788624332,\"1020817776178\":1478686417078,\"1021408797692\":1478686804039,\"1024341167163\":1509788624421,\"1022302074550\":1478686417287,\"1025703371757\":1509788624295,\"1024341167166\":1509788624421,\"1020817776184\":1478686417078,\"1019302371448\":1509788624313,\"1022080666518\":1478686417061,\"1021258593424\":1478686417040,\"1021782087132\":1478686417128,\"1020653932688\":1478686804057,\"1020447106112\":1478686804054,\"1022093773494\":1478686417063,\"1059556595\":1444487341720,\"1022092200518\":1478686417273,\"1021631884598\":1509788624396,\"1022302074561\":1478686417287,\"1022265635060\":1478686417285,\"1024341167182\":1509788624421,\"1024341167181\":1509788624421,\"1020888023714\":1478686417299,\"1001556640355\":1478686417022,\"1022469324014\":1478686417218,\"1023919510874\":1509788624969,\"1023453428110\":1509788624517,\"1024341167210\":1509788624421,\"1022218449893\":1478686417192,\"1018517886837\":1480585069063,\"1622004563\":1478686804051,\"1024341167213\":1509788624421,\"1022270353635\":1480585069094,\"1022198369066\":1509788624932,\"1021497926379\":1478686417112,\"1022270353634\":1480585069094,\"1022198369067\":1509788624935,\"1020442911710\":1509788624361,\"1020442911711\":1509788624361,\"1020442911708\":1509788624361,\"1020442911709\":1509788624361,\"1001556641169\":1478686417023,\"1020442911707\":1509788624361,\"1024341166982\":1509788624421,\"1024956764375\":1509788624335,\"1024341166987\":1509788624421,\"1022950742096\":1509788625051,\"1020442911716\":1509788624361,\"1020442911714\":1509788624361,\"1020442911715\":1509788624361,\"1020442911712\":1509788624361,\"1020442911713\":1509788624361,\"1023354990698\":1509788624533,\"1021352704387\":1465470268226,\"1021352704388\":1465470268226,\"1021352704389\":1465470268226,\"1021352704390\":1465470268226,\"1021352704391\":1465470268226,\"1021352704393\":1465470268227,\"1001556641223\":1478686417023,\"240237079\":1478686417017,\"1024479671065\":1509788624437,\"1024463417957\":1509788625070,\"1024341167043\":1509788624515,\"1023354990602\":1509788624816,\"1022436555087\":1478686417213,\"1024341167044\":1509788624516,\"1022239028927\":1478686417194,\"1024341167091\":1509788624421,\"1021646432849\":1509788624200,\"1023173692781\":1509788625083,\"1024341167092\":1509788624421,\"1023354990642\":1509788625101,\"1022934228799\":1509788625051,\"1024906040757\":1509788624937,\"1022157998533\":1478686417185,\"1022079880238\":1478686416980,\"1009270081981\":1509788624384,\"1025019155314\":1509788625069,\"1009269950907\":1509788624389,\"1021307879135\":1478686417005,\"175750911\":1444487341705,\"1025033051346\":1509788624867,\"1020486561245\":1465470268302,\"1021124479904\":1478686417037,\"1021124479905\":1478686417037,\"4965634920\":1509788624158,\"1023354990799\":1509788624194,\"1037666627\":1478686417020,\"1020801521871\":1478686804040,\"1020389173164\":1465470268302,\"1022075817004\":1509788624550,\"1012127699887\":1478686417025,\"1021040987875\":1478686417092,\"1016930988486\":1478686804019,\"1021152949616\":1465470268184,\"1001732935659\":1478686417023,\"1001556641130\":1478686417023,\"1022092201324\":1478686417273,\"1022426593607\":1478686417211,\"1021465944074\":1478686417045,\"1872485018\":1478950494927,\"1022646923118\":1480585069142,\"1022646923116\":1480585069142,\"1022047896357\":1478686417059,\"1022646923114\":1480585069142,\"1022646923113\":1480585069142,\"1010002664756\":1491634246524,\"1022646923109\":1480585069141,\"1022646923107\":1480585069141,\"1022646923104\":1480585069141,\"1022646923135\":1480585069142,\"1024132368118\":1509788624326,\"1022646923129\":1480585069142,\"1020847528629\":1478686417226,\"1022646923126\":1480585069142,\"1021666612708\":1478686417050,\"1021932427804\":1478686417142,\"1022646923125\":1480585069142,\"1022646923124\":1480585069142,\"1022646923122\":1480585069142,\"1022646923120\":1480585069142,\"1024886254132\":1509788624436,\"1022074375592\":1478686417061,\"1021364239302\":1478686417239,\"1022646923081\":1480585069141,\"1021362534457\":1509788624977,\"1021364239304\":1478686417239,\"1022074375591\":1478686417060,\"1022646923101\":1480585069141,\"1022646923100\":1480585069141,\"1022646923098\":1480585069141,\"1024886254112\":1509788624428,\"1019729271107\":1509788625020,\"1025003033379\":1509788624866,\"1022646923089\":1480585069141,\"1022451235711\":1478686417215,\"1021364239284\":1478686417239,\"1023065294537\":1509788624553,\"1023065294536\":1509788624554,\"1009611547706\":1478686804033,\"1023065294535\":1509788624554,\"1022429214768\":1478686417071,\"1023065294534\":1509788624554,\"1022406277533\":1478686417071,\"1023065294532\":1509788624553,\"1024463418226\":1509788625029,\"1024886254153\":1509788624435,\"1019596493087\":1509788624959,\"1021646433133\":1509788624200,\"1024886254197\":1509788624424,\"1024886254207\":1509788624423,\"1021902281625\":1478686417139,\"1021948937575\":1478686417260,\"1008183478768\":1480585069074,\"1020801521945\":1478686804065,\"1008662703465\":1478686804026,\"1021093021834\":1478686417232,\"1021344840091\":1478686804023,\"1023526960015\":1509788624373,\"1021890877449\":1478686417054,\"1020654065346\":1478686416996,\"1001556640796\":1478686417023,\"4562074231\":1465469681386,\"1022646923212\":1480585069095,\"134593952\":1444487341749,\"1022646923208\":1480585069095,\"1024384251718\":1509788624327,\"1025529049858\":1509788624338,\"1021992715974\":1478686417011,\"1012129141464\":1478686417073,\"1022646923205\":1480585069095,\"1000157309766\":1478686804024,\"1022646923200\":1480585069095,\"1022646923227\":1480585069095,\"1502342194\":1491634246509,\"1022646923221\":1480585069095,\"1016930988191\":1478686804019,\"1502342196\":1491634246509,\"1022646923183\":1480585069094,\"1022646923181\":1480585069094,\"1022430787762\":1478686417071,\"1022646923180\":1480585069094,\"1024185451292\":1509788625035,\"1023354990999\":1509788624419,\"1020987900582\":1478686417034,\"1021774877628\":1478686804066,\"1022646923189\":1480585069095,\"1021914733547\":1478686417259,\"1022646923186\":1480585069095,\"1022697121913\":1509788625058,\"1022646923141\":1480585069142,\"1021226217685\":1465470268196,\"1022646923139\":1480585069142,\"1023183654780\":1509788625043,\"1526984432\":1491634246511,\"1001556640895\":1478686417023,\"1022273761967\":1478686417014,\"1022387273195\":1478686417069,\"1024787688694\":1509788624272,\"1024787688689\":1509788624273,\"1025703241287\":1509788624537,\"1025703241286\":1509788624542,\"1025703241285\":1509788624540,\"1024787688700\":1509788624272,\"1025703241288\":1509788624523,\"187677984\":1444487341704,\"1024787688698\":1509788624272,\"1024186630329\":1509788624236,\"1024186630331\":1509788624236,\"1022446647404\":1478686417214,\"1022446647400\":1478686417214,\"1024787688684\":1509788624273,\"1024787688687\":1509788624272,\"1024787688682\":1509788624272,\"1025608613318\":1509788625001,\"1024331728935\":1509788667535,\"1024331728933\":1509788667536,\"1024331728936\":1509788667536,\"1008723913329\":1509788625020,\"872252870\":1491634246514,\"1024186630368\":1509788624236,\"1018990949935\":1509788624392,\"1021253611974\":1478686417100,\"1024186630345\":1509788624236,\"1024186630344\":1509788624236,\"1022406277797\":1478686417070,\"1024186630347\":1509788624236,\"1024186630349\":1509788624236,\"1024186630351\":1509788624236,\"1024186630350\":1509788624236,\"1024186630337\":1509788624236,\"1024186630341\":1509788624236,\"1024186630340\":1509788624236,\"1021336189666\":1478686417239,\"1024186630343\":1509788624236,\"1024186630361\":1509788624236,\"1024186630360\":1509788624236,\"1024663430188\":1509788625003,\"1024186630363\":1509788624236,\"1024186630365\":1509788624236,\"1024186630364\":1509788624236,\"1024186630367\":1509788624236,\"1024186630366\":1509788624236,\"1024186630352\":1509788624236,\"1024186630355\":1509788624236,\"2298166912\":1509976385181,\"1024186630358\":1509788624236,\"1021709735112\":1509788624817,\"1018468865812\":1509788624825,\"1022287000417\":1478686417286,\"1018298474808\":1509788624369,\"1021774876911\":1478686804066,\"1021735948881\":1509788624216,\"1021735948874\":1509788624216,\"1020823411625\":1478686417078,\"1021735948877\":1509788624216,\"1021735948878\":1509788624216,\"1021967157129\":1478686417149,\"1022360796930\":1478686417015,\"1835523015\":1491634246515,\"1024735518897\":1509788624821,\"1835523014\":1491634246515,\"1025270153362\":1509788624559,\"1024735518896\":1509788624915,\"1022302860211\":1478686417287,\"1025270153361\":1509788624559,\"1835523012\":1491634246515,\"1025270153360\":1509788624559,\"1025270153367\":1509788624559,\"1001556641569\":1478686417023,\"1022255412576\":1509788624280,\"1021709735149\":1509788624534,\"1024735518900\":1509788624835,\"1020653934077\":1478686804057,\"134594221\":1444487341722,\"1024735518909\":1509788624870,\"1024735518885\":1509788624915,\"1021604751928\":1478686416977,\"1022302860201\":1478686417287,\"1024735518891\":1509788624824,\"1021709735155\":1509788624195,\"1017124316933\":1478686804018,\"1025270153358\":1509788624559,\"1024735518895\":1509788624915,\"1025431926480\":1509788624174,\"1020985803099\":1478686417088,\"1025845587723\":1509788667443,\"1025246167894\":1509788624931,\"1835523006\":1491634246515,\"1835523005\":1491634246515,\"1024479670666\":1509788625070,\"1835523001\":1491634246515,\"1864620483\":1444487341717,\"1022402608637\":1478686417015,\"1022070836771\":1478686417176,\"1018644635131\":1478686804026,\"1021780644053\":1509788624395,\"1024886254076\":1509788624337,\"1022070836776\":1478686417176,\"1025114708867\":1509788667497,\"1017808636941\":1478686804016,\"1025908239115\":1509788667460,\"1020884747926\":1509788624177,\"1025908239112\":1509788667458,\"1021604752266\":1478686416977,\"1001556641409\":1478686417023,\"1020884747922\":1509788624177,\"1019166063843\":1478686804020,\"1025665628558\":1509788624612,\"1025665628560\":1509788624611,\"175750508\":1444487341705,\"1025665628564\":1509788624565,\"1018513298407\":1509788624837,\"1025665628572\":1509788624565,\"1025665628574\":1509788624565,\"1023710981667\":1509788624444,\"1023710981670\":1509788624444,\"1023710981669\":1509788624444,\"1025665628583\":1509788624545,\"1023710981668\":1509788624444,\"1025665628585\":1509788624545,\"1021358471794\":1478686417042,\"1023710981672\":1509788624444,\"1025665628591\":1509788624545,\"1021014773479\":1478686417089,\"1025665628594\":1509788624545,\"1022328025254\":1478686417288,\"1022021550828\":1509788624179,\"1008304747635\":1478686804020,\"1025665628605\":1509788624545,\"1024794373457\":1509788624237,\"1016857720483\":1509788624977,\"1025665628611\":1509788624566,\"1024803679397\":1509788625023,\"1021233295775\":1478686417003,\"1021233295773\":1478686417003,\"1025246167761\":1509788624931,\"1025270153575\":1509788625152,\"1025033051907\":1509788625234,\"1009480613384\":1509788625017,\"1023939956773\":1509788667538,\"1025270153578\":1509788625152,\"1025270153577\":1509788625152,\"1025270153576\":1509788625152,\"1025270153580\":1509788625152,\"1020878849682\":1478686417079,\"1025703241507\":1509788625124,\"1022282281802\":1478686417014,\"1021881572207\":1509788624511,\"1025703241506\":1509788624823,\"1025703241505\":1509788624832,\"1025703241504\":1509788624828,\"1025703241510\":1509788625087,\"1025703241509\":1509788625106,\"1025703241508\":1509788625115,\"1001556641517\":1478686417023,\"1021976986893\":1478686417056,\"1021700953477\":1478686417009,\"1019817477711\":1509788624282,\"1016845793068\":1509788624367,\"1020486561326\":1465470268303,\"1016845793065\":1509788624366,\"1019596493774\":1509788624933,\"1022008967943\":1478686417158,\"1025665628432\":1509788624916,\"1025665628436\":1509788624916,\"1021239587300\":1478686417039,\"1024555694899\":1509788624972,\"1001556641311\":1478686417023,\"1025246167581\":1509788624931,\"1021774877175\":1478686804066,\"1025665628449\":1509788624864,\"1024607991850\":1509788667589,\"1020584077506\":1478686417027,\"1025665628461\":1509788624826,\"1025665628465\":1509788624838,\"1020948972055\":1478686417085,\"1023220616165\":1509788624251,\"1025665628473\":1509788624838,\"1021831634622\":1478686417133,\"1025665628476\":1509788624838,\"1021012807222\":1478686417035,\"1025665628481\":1509788624838,\"1021831634624\":1478686417134,\"1024106022483\":1509788667495,\"1025627486991\":1509788624844,\"1025627486989\":1509788624844,\"1025665628490\":1509788624838,\"1025665628493\":1509788624838,\"4899967957\":1509788624158,\"1021709735339\":1509788624420,\"1024787688721\":1509788624272,\"1025791845105\":1509788624532,\"1021981836764\":1478686417011,\"1024787688708\":1509788624272,\"1025791845097\":1509788624532,\"1025791845103\":1509788624532,\"1024787688704\":1509788624272,\"1025791845101\":1509788624532,\"1025791845091\":1509788624532,\"1025791845090\":1509788624532,\"1022241912137\":1478686417066,\"1024787688718\":1509788624272,\"1025791845095\":1509788624532,\"1024787688715\":1509788624272,\"1037666854\":1478686417020,\"1025791845092\":1509788624532,\"1022008970391\":1478686417159,\"1024375863651\":1509788624600,\"1024375863650\":1509788624600,\"1024375863653\":1509788624600,\"1024375863652\":1509788624601,\"1024375863655\":1509788624600,\"1024375863657\":1509788624600,\"1022430786936\":1478686417071,\"1024375863656\":1509788624600,\"1024375863659\":1509788624600,\"1024375863658\":1509788624600,\"1024375863661\":1509788624600,\"1022451234359\":1478686417215,\"1024375863663\":1509788624600,\"1025219431209\":1509788624437,\"1024375863665\":1509788624600,\"1022802631478\":1509788625056,\"1024375863667\":1509788624600,\"1024375863666\":1509788624600,\"1024375863669\":1509788624600,\"1024375863670\":1509788624600,\"1024375863673\":1509788624600,\"1025219431200\":1509788624432,\"1024375863672\":1509788624600,\"1019810793857\":1509788625078,\"1024375863675\":1509788624600,\"1024375863674\":1509788624600,\"1024375863676\":1509788624600,\"1025219431207\":1509788624437,\"1025219431206\":1509788624437,\"1025219431193\":1509788624432,\"1020831143563\":1478686416998,\"1025219431196\":1509788624432,\"1012132814611\":1478686417025,\"1025219431191\":1509788624432,\"1025219431177\":1509788624432,\"1025219431176\":1509788624427,\"1025219431179\":1509788624432,\"1020657867562\":1478686804071,\"1025219431183\":1509788624432,\"1025219431169\":1509788624433,\"1018517757108\":1480585069070,\"1025219431173\":1509788624433,\"1022479018156\":1478943089531,\"1025219431175\":1509788624434,\"1025219431174\":1509788624424,\"1022239029915\":1478686417194,\"1021602653438\":1478686417008,\"1021396875085\":1478686417240,\"1021700430501\":1478686804046,\"1025791716733\":1509788624837,\"1021903197859\":1478686417139,\"1025791716729\":1509788624825,\"1025791716731\":1509788624849,\"1025791716725\":1509788624864,\"1022148035652\":1478686417277,\"1021692172569\":1509788625003,\"379956951\":1478686417017,\"1025791716710\":1509788624916,\"1025791716704\":1509788624916,\"1022289886551\":1478686417198,\"1010091923009\":1491634246522,\"1021513658009\":1509788624853,\"1022417679547\":1478686417209,\"1021513658010\":1509788624853,\"1010091923011\":1491634246522,\"1021513658011\":1509788624853,\"1021513658012\":1509788624853,\"1010091923015\":1491634246527,\"1023331138349\":1509788624183,\"1024375863789\":1509788624601,\"1024375863790\":1509788624601,\"1024375863792\":1509788624601,\"1024375863796\":1509788624601,\"1023937732362\":1509788667538,\"1024375863799\":1509788624601,\"1025791716747\":1509788624837,\"1024375863798\":1509788624601,\"1023032527108\":1509788624610,\"1023937732360\":1509788667538,\"1025009327911\":1509788624330,\"1024375863801\":1509788624601,\"1024375863800\":1509788624601,\"1022289886541\":1478686417198,\"1062045654\":1478686417020,\"1025791716737\":1509788624837,\"1024375863804\":1509788624601,\"1025791716739\":1509788624837,\"1021208394929\":1478686417099,\"1024798171892\":1509788625069,\"1017770364831\":1478686804022,\"1018899170136\":1509788624367,\"1021843690210\":1478686417053,\"1022375866887\":1478686417204,\"1022086299976\":1478686417179,\"1021975022118\":1478686417150,\"1024383203758\":1509788624329,\"1022023126398\":1478686417266,\"1007777815571\":1478686804071,\"1025533509291\":1509788624347,\"1022050782938\":1478686417172,\"1022039641708\":1478686417268,\"984318587\":1491634246533,\"1020116548502\":1509788625076,\"1020116548501\":1509788625077,\"1022039641723\":1478686417268,\"1020116548504\":1509788625078,\"1020116548505\":1509788625076,\"549165159\":1444487341735,\"1019819837902\":1509788624934,\"1346627741\":1491634246505,\"1021943302300\":1509788624464,\"1018288254651\":1478686804020,\"1006208024239\":1478686804022,\"1020116548531\":1509788625076,\"1020116548535\":1509788625078,\"1024461323966\":1509788625029,\"1025902732423\":1509788667463,\"1025902732422\":1509788667459,\"1025902732418\":1509788667461,\"1009744453984\":1491634246512,\"1000145380513\":1478686804039,\"1012127702624\":1478686417025,\"1021872002482\":1478686417136,\"1021048324806\":1478686417093,\"1025844404458\":1509788667448,\"1024764223823\":1509788625025,\"1021495831581\":1478686417046,\"1021499240418\":1478686417007,\"1024132500213\":1509788624327,\"1022285954315\":1478686417014,\"1022285954318\":1478686417015,\"4951875131\":1509788624154,\"1024785850382\":1509788624481,\"1012093099185\":1509788625020,\"1019802798371\":1509788624317,\"1308488907\":1444487341755,\"1022191289992\":1478686417013,\"1022070833539\":1478686417176,\"1012172526477\":1478686417299,\"1023970627776\":1509788625071,\"1019974107792\":1480585069076,\"1021427673205\":1478686417241,\"1010002661757\":1491634246524,\"1022459623144\":1478686417217,\"1021835039651\":1509788624221,\"1022545472975\":1509788625063,\"1022459623150\":1478686417217,\"1012129144365\":1478686417073,\"1023937732351\":1509788667539,\"1021750893717\":1509788624395,\"1023937732349\":1509788667539,\"1025791716474\":1509788624545,\"1021835039644\":1509788624221,\"1024002740946\":1491634246532,\"1021835039645\":1509788624221,\"1025791716464\":1509788624538,\"1021835039646\":1509788624221,\"1022849425171\":1509788624381,\"1025791716456\":1509788624565,\"1025791716459\":1509788624565,\"1025791716458\":1509788624565,\"810518839\":1444487341733,\"1025791716455\":1509788624611,\"1025791716454\":1509788624612,\"1022276517372\":1478686417067,\"1022315577251\":1478686417068,\"1021148624979\":1478686417097,\"1022397625051\":1478686417207,\"1022397625049\":1478686417206,\"1022397625048\":1478686417206,\"1025791716494\":1509788624545,\"1018923025909\":1509788625019,\"1022033349782\":1478686417166,\"1018620777470\":1478686804065,\"1025791716489\":1509788624545,\"355577005\":1444487341735,\"1021491375315\":1478686417111,\"1025791716540\":1509788624612,\"1021216652296\":1478686417099,\"1019344579822\":1509788624376,\"1019344579823\":1509788624376,\"1018990950867\":1509788624392,\"1021602653445\":1478686417008,\"1019344579821\":1509788624376,\"1025513978917\":1509788624998,\"1024797123562\":1509788625020,\"1021609338363\":1478686417049,\"1021951952953\":1478686417261,\"1025219431167\":1509788624511,\"1025219431166\":1509788624510,\"1021951952949\":1478686417261,\"1025791716552\":1509788624538,\"1025791716554\":1509788624553,\"1025791716548\":1509788624565,\"1025791716551\":1509788624564,\"1025791716545\":1509788624611,\"1025796829041\":1509788624197,\"1025906927073\":1509788667459,\"1025906927071\":1509788667459,\"1025906927070\":1509788667458,\"1021156620453\":1478686417002,\"1025791716597\":1509788624566,\"1025791716596\":1509788624545,\"1025791716593\":1509788624545,\"1021299880759\":1478686417004,\"1025791716591\":1509788624545,\"1022458312275\":1478686417016,\"1022191289778\":1478686416979,\"1037666257\":1478686417020,\"1024633940501\":1509788624523,\"1020959985416\":1478686417085,\"1022674577113\":1509788625060,\"1020959985422\":1478686417085,\"1025771138672\":1509788624406,\"1023994351637\":1491634246518,\"1021073884799\":1478686417093,\"1009862679111\":1491634246513,\"1023583840410\":1509788625038,\"1025188236076\":1509788624273,\"1025771138669\":1509788624425,\"1025771138668\":1509788624431,\"1025771138667\":1509788624428,\"1020324162271\":1509788624451,\"1024376388404\":1509788625031,\"1025533639725\":1509788624370,\"1025533639724\":1509788624370,\"1025533639723\":1509788624370,\"1020616448960\":1478686416995,\"1750061614\":1444487341732,\"1020969290767\":1478686417086,\"311535856\":1478686804033,\"1022628701167\":1509788624842,\"1025330708732\":1509788624526,\"1025806265425\":1509788667443,\"228308970\":1444487341747,\"1024785851235\":1509788625198,\"1022372982967\":1478686417204,\"1024624896759\":1509788624819,\"1020925774215\":1478686417033,\"1022022078255\":1509788624463,\"1023955423763\":1509788624389,\"1023955423765\":1509788624389,\"1750061770\":1444487341745,\"1023955423764\":1509788624389,\"1023955423767\":1509788624389,\"1023955423766\":1509788624389,\"1022323572060\":1478686417288,\"1018901528866\":1509788624283,\"1018901528864\":1509788624301,\"1014365132451\":1465470268319,\"1002327893276\":1478686416993,\"1020613827371\":1478686416995,\"1009263134392\":1478686804015,\"1025771138761\":1509788624832,\"1021680638630\":1478686804028,\"1012132814233\":1478686417025,\"1021141023478\":1478686417096,\"1021992847822\":1478686417265,\"1021680638638\":1478686804028,\"1021680638632\":1478686804028,\"1021746831000\":1478686417126,\"1021287428903\":1478686417101,\"1021680638642\":1478686804028,\"1023020206830\":1509788625083,\"1023020206829\":1509788625083,\"1023020206828\":1509788625083,\"1023825795820\":1509788624940,\"1025771138704\":1509788625106,\"1025300038275\":1509788624308,\"1025593667586\":1509788624523,\"1023825795810\":1509788624939,\"1023825795813\":1509788624940,\"1023919381602\":1509788624959,\"1022198498800\":1509788624177,\"1024867640558\":1509788624325,\"1021092628445\":1480585069070,\"1021491638201\":1509788624977,\"1023825795800\":1509788624940,\"1016538666101\":1478686804046,\"1023825795882\":1509788624940,\"1021301846458\":1480585069071,\"1022113562974\":1478686417183,\"1025771138899\":1509788624523,\"1021485477551\":1509788624402,\"1023825795886\":1509788624939,\"1021827699271\":1509788624897,\"1023825795873\":1509788624940,\"1023825795878\":1509788624940,\"1022016179978\":1509788625075,\"1025771138887\":1509788624537,\"1022253185268\":1478686417014,\"1024375863927\":1509788624593,\"1019037350062\":1480585069070,\"1021485739710\":1509788624398,\"1024375863929\":1509788624594,\"1024469318869\":1509788624522,\"1024375863930\":1509788624594,\"1022069523430\":1478686417301,\"1024375863932\":1509788624594,\"1024375863935\":1509788624594,\"1023825795850\":1509788624940,\"1023995531566\":1491634246532,\"1023825795852\":1509788624940,\"1022312037705\":1509788625078,\"1023825795844\":1509788624940,\"1023995531573\":1491634246529,\"1023995531572\":1491634246532,\"1024624896944\":1509788624419,\"421896735\":1491634246510,\"1023825795940\":1509788624940,\"1021141023490\":1478686417096,\"1025771138821\":1509788624203,\"1024839591558\":1509788624304,\"1023340312667\":1509788624380,\"1024375863809\":1509788624601,\"1023340312666\":1509788624380,\"1024375863808\":1509788624601,\"1023340312665\":1509788624380,\"1023340312664\":1509788624380,\"1024375863813\":1509788624601,\"1021099705794\":1478686417095,\"1023340312668\":1509788624380,\"1024375863814\":1509788624601,\"1023825795916\":1509788624940,\"1023340312659\":1509788624380,\"1024375863816\":1509788624601,\"1022065069140\":1478686416990,\"1024375863819\":1509788624601,\"1023825795905\":1509788624940,\"1023340312663\":1509788624380,\"1023340312662\":1509788624380,\"1024375863820\":1509788624601,\"421896779\":1491634246510,\"1023340312661\":1509788624380,\"1024375863823\":1509788624601,\"1022544687081\":1509788625075,\"1023340312660\":1509788624380,\"1024375863822\":1509788624601,\"1023825795908\":1509788624940,\"1024375863825\":1509788624601,\"1024375863824\":1509788624601,\"1024375863826\":1509788624601,\"1023825795933\":1509788624940,\"1023825795925\":1509788624940,\"1021288477211\":1478686417040,\"886804316\":1444487341748,\"1020560876865\":1478686417026,\"1021602522918\":1478686417008,\"1025798532408\":1509788624818,\"1024469318720\":1509788624522,\"1024688729931\":1509788624434,\"1025796828478\":1509788624406,\"1024688729930\":1509788624434,\"1012197429458\":1478686417025,\"1025796828477\":1509788624425,\"1024688729929\":1509788624434,\"1025796828476\":1509788624428,\"1025796828475\":1509788624431,\"1021827699431\":1509788624592,\"1022608515952\":1509788624994,\"886804336\":1444487341744,\"1020648560676\":1478686416995,\"1022608515946\":1509788624994,\"1024002871300\":1491634246532,\"1025884119077\":1509788667466,\"1023453426114\":1509788625008,\"1024375863969\":1509788624593,\"1025629976416\":1509788624174,\"1022430262963\":1509788624288,\"1022928195687\":1509788624301,\"1023453426097\":1509788625008,\"1025593667847\":1509788625088,\"1025593667846\":1509788625108,\"1025593667845\":1509788625124,\"1022393692232\":1478686417015,\"1025593667844\":1509788625116,\"1022458836084\":1478686417217,\"1022701971190\":1509788625059,\"1021257415830\":1478686417004,\"1021460572358\":1478686417044,\"1024375863937\":1509788624594,\"1024688729913\":1509788624427,\"1024624896874\":1509788624533,\"1024375863938\":1509788624593,\"1024375863941\":1509788624593,\"1023263736910\":1509788624352,\"1024375863940\":1509788624594,\"1024375863943\":1509788624593,\"1024375863947\":1509788624593,\"1024375863946\":1509788624593,\"1024375863949\":1509788624593,\"1022002286358\":1478686804039,\"1024375863954\":1509788624593,\"1024375863957\":1509788624593,\"1024375863959\":1509788624593,\"1022079615915\":1478686417178,\"1025629976409\":1509788624175,\"1024375863961\":1509788624593,\"1025679258664\":1509788624351,\"1024375863963\":1509788624594,\"1019067498033\":1509788625076,\"1020560876858\":1478686417026,\"1024375863965\":1509788624593,\"1024375863967\":1509788624593,\"1024375863966\":1509788624594,\"1024375864674\":1509788624908,\"1024375864679\":1509788624908,\"1025791715604\":1509788624565,\"1025791715607\":1509788624545,\"1024375864683\":1509788624908,\"1024375864682\":1509788624908,\"1025791715601\":1509788624565,\"1024375864685\":1509788624908,\"1024375864687\":1509788624908,\"1025791715602\":1509788624565,\"1024375864686\":1509788624908,\"1025791715599\":1509788624611,\"1024375864693\":1509788624908,\"1024375864692\":1509788624908,\"1025791715594\":1509788624612,\"1024375864694\":1509788624908,\"1025713073589\":1509788624305,\"1024375864697\":1509788624908,\"1024375864696\":1509788624908,\"1021034694296\":1478686417091,\"1024375864701\":1509788624908,\"1022279006304\":1478686417197,\"1024375864700\":1509788624908,\"1000920430454\":1478686417219,\"1024375864703\":1509788624908,\"1024375864702\":1509788624908,\"1024732768785\":1509788624169,\"1021084631456\":1478686417232,\"1020391532751\":1478686804071,\"1025791715626\":1509788624566,\"1025791715620\":1509788624545,\"1024375864667\":1509788624908,\"1022373508832\":1478686417290,\"1024375864669\":1509788624908,\"1025791715616\":1509788624545,\"1024375864671\":1509788624908,\"1024375864670\":1509788624908,\"1024375864608\":1509788624261,\"1024375864615\":1509788624261,\"1022274812150\":1478686416978,\"1024375864618\":1509788624261,\"1024375864620\":1509788624261,\"1024375864623\":1509788624261,\"1024375864622\":1509788624261,\"1022468141927\":1478686417218,\"1024375864625\":1509788624261,\"1024375864624\":1509788624261,\"1024375864627\":1509788624261,\"1021208262783\":1478686804026,\"1024375864626\":1509788624261,\"541826076\":1509788625018,\"1025536785014\":1509788624869,\"1020938356765\":1478686417033,\"1012387351113\":1478686417074,\"1025552120614\":1509788624339,\"1024375864583\":1509788624261,\"1023521583659\":1509788625039,\"1024375864582\":1509788624261,\"1024375864585\":1509788624261,\"1024375864587\":1509788624261,\"1024375864589\":1509788624261,\"1024375864588\":1509788624261,\"1023835889118\":1491634246504,\"1024375864593\":1509788624261,\"1025629319387\":1509788624431,\"1024375864592\":1509788624261,\"1023032528354\":1509788624269,\"1025629319386\":1509788624428,\"1024375864597\":1509788624261,\"1024375864599\":1509788624261,\"1025629319389\":1509788624406,\"1025629319388\":1509788624425,\"461744125\":1444487341753,\"1022848113385\":1509788625018,\"1024375864602\":1509788624261,\"1024375864604\":1509788624261,\"1010091921985\":1491634246527,\"1018546592382\":1480585069070,\"1022097049052\":1478686417012,\"1001790341920\":1478686417023,\"1021755742488\":1478686417126,\"1010091922006\":1491634246527,\"1025796827704\":1509788624523,\"1007402037668\":1478686804023,\"1025796827702\":1509788624537,\"1025796827701\":1509788624542,\"1020610026863\":1509788624353,\"1022156947773\":1478686417278,\"1016871616052\":1478686804065,\"1020673726614\":1478686804047,\"1022965027128\":1509788624515,\"1022016047273\":1509788625067,\"1021500549734\":1478686804031,\"1022965027135\":1509788624272,\"1022965027134\":1509788624919,\"1021311678122\":1465470268206,\"1021311678123\":1465470268206,\"1022553467055\":1480585069118,\"1022553467059\":1480585069118,\"1023996974754\":1509788624479,\"1022553467062\":1480585069118,\"1022553467068\":1480585069118,\"1011826764219\":1509788624944,\"1024331727562\":1509788667535,\"1022545602646\":1509788625063,\"1024331727571\":1509788667536,\"1024331727568\":1509788667536,\"1024331727572\":1509788667535,\"1021890351453\":1478686417138,\"1022965027136\":1509788624615,\"1024375864705\":1509788624908,\"1024624897131\":1509788625100,\"1024331727585\":1509788667535,\"1024331727595\":1509788667535,\"1021495831014\":1478686417046,\"1024331727597\":1509788667535,\"1022217010428\":1509788624938,\"1024331727600\":1509788667535,\"1024331727607\":1509788667536,\"1024331727606\":1509788667536,\"1024331727609\":1509788667535,\"1024375864423\":1509788624261,\"1024375864422\":1509788624260,\"1024375864424\":1509788624261,\"1024375864426\":1509788624261,\"1021854570145\":1509788625013,\"1022262492789\":1480585069113,\"1024375864432\":1509788624261,\"1021877899604\":1478686417257,\"1024375864435\":1509788624261,\"1024375864434\":1509788624261,\"1024375864437\":1509788624261,\"1021886288082\":1509788624465,\"1024781526087\":1509788625021,\"1024375864436\":1509788624261,\"1024375864439\":1509788624261,\"1021877899601\":1478686417257,\"1024375864441\":1509788624261,\"1024375864440\":1509788624261,\"1024375864443\":1509788624261,\"1024375864445\":1509788624261,\"1024375864444\":1509788624261,\"1023032528014\":1509788624915,\"1024375864446\":1509788624261,\"1020935211447\":1478686417083,\"1021948677420\":1509788624354,\"1021345100073\":1478686804023,\"1020935211449\":1478686417083,\"1018183003571\":1465470268238,\"1025582527654\":1509788624837,\"1020935211426\":1478686417083,\"1025533639490\":1509788624370,\"1025533639489\":1509788624370,\"1025533639488\":1509788624370,\"1025582527658\":1509788624434,\"1025533639487\":1509788624370,\"1021371577309\":1478686417006,\"1021371577310\":1478686417006,\"1012926081725\":1478686804024,\"1021341692168\":1509788624180,\"1021444845415\":1478686417107,\"1021341692170\":1509788624179,\"1020935211461\":1478686417083,\"1021341692172\":1509788624181,\"1025582527681\":1509788624434,\"1022448743176\":1478686417215,\"1021341692164\":1509788624179,\"1008281157513\":1480585069073,\"1021736868337\":1478686417251,\"1021341692167\":1509788624179,\"1021307221800\":1478686417041,\"1021789559532\":1509788624394,\"105233186\":1444487341754,\"1009999779114\":1491634246518,\"1018771377664\":1509788624372,\"1022155899053\":1509788624958,\"503686011\":1478686804033,\"1022236016493\":1478686416985,\"1025750953705\":1509788624309,\"1023890151923\":1491634246506,\"1025796827941\":1509788625123,\"1025796827940\":1509788625114,\"1001790341694\":1478686417023,\"1018183003415\":1465470268238,\"1025628664128\":1509788624426,\"1214510580\":1478686804033,\"1022263934682\":1478686417067,\"1025791715519\":1509788624270,\"1021458345698\":1478686417044,\"4804158462\":1509788624158,\"1025703374310\":1509788624297,\"1022849424346\":1509788624381,\"1025771006449\":1509788624455,\"1022669989541\":1509788625060,\"1022107797277\":1478686417275,\"647207740\":1491634246511,\"1000287066264\":1478686417027,\"1019166062168\":1478686804020,\"1021497928539\":1478686417112,\"518497105\":1478950494910,\"1019287170922\":1509788625080,\"1022459621895\":1478686417072,\"1025034884601\":1509788624203,\"1025034884603\":1509788624230,\"1024624897354\":1509788624193,\"1025034884604\":1509788624199,\"1025791715547\":1509788624207,\"1025034884607\":1509788624211,\"1025034884606\":1509788624215,\"1025034884592\":1509788624203,\"1022046981016\":1478686417301,\"1025034884595\":1509788624203,\"1025791715539\":1509788624215,\"1018183003474\":1465470268238,\"4959476298\":1509788624159,\"1025034884585\":1509788624214,\"1023071719150\":1509788625072,\"1025034884589\":1509788624199,\"1025791715529\":1509788624227,\"1025791715524\":1509788624227,\"1025791715526\":1509788624227,\"1025034884581\":1509788624270,\"1025034884582\":1509788624269,\"1025791715522\":1509788624269,\"1021869379876\":1478686804047,\"1024375864451\":1509788624261,\"1025533639581\":1509788624370,\"1024375864450\":1509788624261,\"1025533639580\":1509788624370,\"1024375864453\":1509788624261,\"1025533639579\":1509788624370,\"1025533639578\":1509788624370,\"1024375864455\":1509788624261,\"1024375864454\":1509788624261,\"1020917386856\":1478686417081,\"1021573818248\":1509788624397,\"1022155898912\":1509788624958,\"1025791715561\":1509788624230,\"1025540586464\":1509788624303,\"1022944448806\":1509788625052,\"1005662870321\":1480585069065,\"1018183003514\":1465470268238,\"1025791715557\":1509788624207,\"1025791715556\":1509788624207,\"1025791715559\":1509788624207,\"1011647199178\":1478686804052,\"1021608682097\":1509788624257,\"1021696892682\":1478686417121,\"1025166741083\":1509788624999,\"1021203413652\":1478686417099,\"1021608682082\":1509788624257,\"1023152981591\":1509788624228,\"1021608682081\":1509788624257,\"1021608682087\":1509788624257,\"1021608682084\":1509788624257,\"1021608682091\":1509788624257,\"1021608682088\":1509788624257,\"1021608682089\":1509788624257,\"1021696892688\":1478686417121,\"1021608682094\":1509788624257,\"1021608682092\":1509788624257,\"1021608682093\":1509788624257,\"1021608682066\":1509788624257,\"1021595706646\":1478686417115,\"1019344579428\":1509788624374,\"1021432786157\":1478686417044,\"1021608682065\":1509788624257,\"1019344579429\":1509788624374,\"1019344579426\":1509788624374,\"1019344579427\":1509788624374,\"1021608682068\":1509788624257,\"1019344579425\":1509788624374,\"1021608682072\":1509788624257,\"1025710976993\":1509788624293,\"1021595706649\":1478686417115,\"1021608682079\":1509788624257,\"1021608682077\":1509788624257,\"1021763214089\":1478686417127,\"1021763214091\":1478686417127,\"1025034884609\":1509788624213,\"1020363877560\":1509788624931,\"1019596495482\":1509788624933,\"1025034884608\":1509788624197,\"1021763214084\":1478686417127,\"1021432786163\":1478686417044,\"1020363877566\":1509788624932,\"1021432786161\":1478686417044,\"1025034884614\":1509788624206,\"1022409290492\":1480585069098,\"1021555206098\":1478686417245,\"1022409290473\":1480585069098,\"1022409290472\":1480585069098,\"1001790341600\":1478686417023,\"1021608682017\":1509788625204,\"1021608682022\":1509788625205,\"1021608682020\":1509788625205,\"1022058908097\":1509788625065,\"1021608682024\":1509788625205,\"1020363877595\":1509788624940,\"1021608682030\":1509788625205,\"1022044358695\":1509788625066,\"1022409290470\":1480585069098,\"1021020407555\":1478686417090,\"1021608682003\":1509788625205,\"1021608682000\":1509788625205,\"1019775275481\":1509788624313,\"1021608682006\":1509788625205,\"1021608682007\":1509788625204,\"1021034038484\":1478686417091,\"1021608682005\":1509788625205,\"1021608682010\":1509788625205,\"1021608682008\":1509788625205,\"1021608682015\":1509788625205,\"1023035150117\":1509788624392,\"1021608682013\":1509788625205,\"1021835039872\":1509788624562,\"1021835039873\":1509788624561,\"1025069356146\":1509788624308,\"1021608681998\":1509788625205,\"1021608681999\":1509788625205,\"1021608681996\":1509788625204,\"1025533638911\":1509788624371,\"1023150884582\":1509788624978,\"1023150884577\":1509788624978,\"1021698465688\":1478686417121,\"1021835039868\":1509788624561,\"1023150884587\":1509788624978,\"1021835039871\":1509788624562,\"1022273763848\":1478686417014,\"1022754266813\":1509788624185,\"1021034038279\":1478686417091,\"1001790341387\":1478686417023,\"1024780347391\":1509788624973,\"1024003921229\":1509788624930,\"1004353054259\":1444487341707,\"1025533638830\":1509788624371,\"1025533638829\":1509788624371,\"1025533638828\":1509788624371,\"1025533638827\":1509788624370,\"1025533638826\":1509788624370,\"1022754266847\":1509788624185,\"1025533638825\":1509788624370,\"1025533638824\":1509788624370,\"1025533638823\":1509788624370,\"1025533638822\":1509788624370,\"1023032528712\":1509788625242,\"1018546591767\":1480585069070,\"1848103108\":1478950494927,\"379299954\":1478686417017,\"1025796827202\":1509788624832,\"228307608\":1444487341748,\"1025703374675\":1509788624297,\"1023924623699\":1509788624961,\"1025533639013\":1509788624370,\"1025533639012\":1509788624370,\"1025533639011\":1509788624370,\"1025533639010\":1509788624370,\"1025533639009\":1509788624370,\"1025533639008\":1509788624370,\"1025533639007\":1509788624370,\"1022246239568\":1478686417066,\"1021575914860\":1509788624397,\"1001675654997\":1478686804029,\"1022020373246\":1478686417266,\"1023150884644\":1509788624977,\"1020477253249\":1465470268318,\"1020561531291\":1478686417224,\"1020561531293\":1478686417224,\"1022227365595\":1478686417281,\"1023150884649\":1509788624977,\"1021368824302\":1478686417006,\"1022367610471\":1478686417204,\"1000979804348\":1478950494933,\"1025796303241\":1509788624273,\"1021338022897\":1465470268221,\"1012127701001\":1478686417025,\"1021338022901\":1465470268222,\"1024944970980\":1509788624531,\"1023150884631\":1509788624978,\"1024944970982\":1509788624531,\"1025533638916\":1509788624370,\"1021338022892\":1465470268221,\"1025533638915\":1509788624370,\"1025533638914\":1509788624370,\"1024944970984\":1509788624531,\"1025533638913\":1509788624371,\"1021338022895\":1465470268221,\"1025533638912\":1509788624371,\"1025283393728\":1509788624548,\"1009385716585\":1491634246510,\"1012129143013\":1478686417073,\"1019160425924\":1480585069078,\"225686227\":1444487341746,\"1001790341138\":1478686417023,\"1022195744985\":1478686417280,\"1024444283623\":1509788625030,\"1020822622854\":1478686417030,\"1021608682434\":1509788624593,\"1019552849225\":1478686804026,\"1021608682435\":1509788624593,\"1022409290506\":1480585069098,\"1021608682438\":1509788624593,\"1021608682439\":1509788624593,\"1022409290511\":1480585069098,\"1021608682436\":1509788624593,\"1021608682437\":1509788624593,\"1021700300096\":1478686804046,\"1021608682442\":1509788624593,\"1021608682441\":1509788624593,\"1022409290502\":1480585069098,\"1021608682418\":1509788624593,\"1022406275846\":1478686417070,\"1021608682416\":1509788624593,\"1021608682417\":1509788624593,\"1021608682423\":1509788624593,\"1022045276558\":1478686417059,\"1021608682426\":1509788624593,\"1021608682427\":1509788624592,\"1021608682431\":1509788624593,\"1025533639087\":1509788624370,\"1025713466998\":1509788624295,\"1025533639086\":1509788624370,\"1021763214058\":1478686417127,\"1025533639085\":1509788624370,\"1025533639084\":1509788624370,\"1025533639083\":1509788624370,\"1021608682406\":1509788624592,\"1021354537537\":1465470268231,\"1022329469089\":1478686417015,\"1021608682414\":1509788624593,\"1021455068282\":1509788624857,\"1021455068281\":1509788624857,\"1021455068286\":1509788624857,\"1021835040023\":1509788624857,\"1021835040024\":1509788624857,\"1022045276577\":1478686417059,\"1021835040025\":1509788624857,\"1021835040027\":1509788624857,\"1021455068277\":1509788624857,\"1022255414327\":1509788624311,\"1021510642128\":1509788624401,\"1019282952466\":1509788624313,\"1144620088\":1444487341743,\"1024786782944\":1509788624241,\"1024786782950\":1509788624241,\"1021838699199\":1509788624352,\"1021001955473\":1478686417034,\"1012641236734\":1478686417074,\"1024786782953\":1509788624241,\"1022007129278\":1478686417158,\"1022019974595\":1478686417161,\"1021250176952\":1478686804031,\"1024786782914\":1509788624241,\"1024786782917\":1509788624241,\"1024786782916\":1509788624241,\"1019272597926\":1478686804021,\"1021716145088\":1509788624448,\"1024786782926\":1509788624241,\"1021032626836\":1478686417091,\"1021767657158\":1509788624195,\"1024786782929\":1509788624241,\"1021094362409\":1478686417094,\"1021032626835\":1478686417091,\"1024786782939\":1509788624241,\"1024786782937\":1509788624241,\"1021747995710\":1478686416977,\"1024375865633\":1509788625214,\"1016301576422\":1480585069066,\"1024375865632\":1509788625214,\"1024375865635\":1509788625214,\"1024184399496\":1509788624438,\"1024375865634\":1509788625214,\"1024375865637\":1509788625214,\"1001003012289\":1444487341756,\"1021166158487\":1478686417098,\"1024375865640\":1509788625214,\"1020233992718\":1465470268316,\"1024375865644\":1509788625214,\"1024375865649\":1509788625214,\"1025810306992\":1509788667452,\"1024375865651\":1509788625214,\"1021427781993\":1478686417106,\"1021958762947\":1478686417147,\"1021716145086\":1509788624448,\"1024375865653\":1509788625214,\"1024375865652\":1509788625215,\"1021716145084\":1509788624448,\"1021716145085\":1509788624448,\"1024375865654\":1509788625215,\"1019842507756\":1509788625078,\"1024375865657\":1509788625214,\"1024375865656\":1509788625214,\"1024528566811\":1509788624183,\"1024528566810\":1509788624183,\"1022257120245\":1478686417284,\"1024528566831\":1509788624183,\"1024926769890\":1509788624415,\"1024528566829\":1509788624183,\"1024375865611\":1509788625213,\"1024375865613\":1509788625215,\"1024375865612\":1509788625215,\"1021959155968\":1478686417010,\"1024375865614\":1509788625215,\"1022019974590\":1478686417161,\"1024375865619\":1509788625215,\"1024528566836\":1509788624183,\"1024008891189\":1509788667493,\"1024528566834\":1509788624183,\"1024375865623\":1509788625214,\"1024528566832\":1509788624183,\"1024375865625\":1509788625214,\"1024528566845\":1509788624183,\"1024375865628\":1509788625214,\"1021477196891\":1478686417109,\"1013563866481\":1478686804016,\"1020542410089\":1509788625078,\"1690412123\":1444487341724,\"1022978027124\":1509788624548,\"1021845252860\":1480585069083,\"1047002828\":1444487341722,\"950794240\":1478686417023,\"1022340483192\":1478686417202,\"1021428044187\":1478686804026,\"1025407024966\":1509788624566,\"1000528491619\":1444487341710,\"1022454386503\":1509788624923,\"1025881348880\":1509788667464,\"1022073452552\":1509788624338,\"1021941985319\":1478686417143,\"1021653491487\":1478686417248,\"1022317807309\":1509788624292,\"1021716144939\":1509788624218,\"1021716144937\":1509788624218,\"1025407024936\":1509788624539,\"1025407024942\":1509788624546,\"1021716144940\":1509788624218,\"1021716144941\":1509788624218,\"1025407024931\":1509788624565,\"1023135053758\":1509788625073,\"1025407024929\":1509788624611,\"1025407024928\":1509788624612,\"1021716144954\":1509788624856,\"1020903781031\":1478686417080,\"1025556154326\":1509788624384,\"1021716144955\":1509788624856,\"1047002805\":1444487341742,\"1025407024959\":1509788624546,\"1025407024957\":1509788624546,\"1021716144956\":1509788624856,\"1025407024956\":1509788624546,\"1021716144957\":1509788624856,\"1025407024947\":1509788624546,\"1025289189321\":1509788624821,\"1022293689666\":1478686417199,\"1021189096347\":1465470268190,\"1022456876847\":1478686417072,\"1023483939943\":1509788624947,\"1022229201286\":1509788624938,\"1021014276387\":1478686417035,\"1025407024873\":1509788624838,\"1022169923576\":1478686804049,\"1022396844656\":1478686417291,\"1008898090726\":1480585069067,\"1025407024882\":1509788624838,\"1022463430239\":1478686417072,\"1567988820\":1444487341730,\"1003913051179\":1478686804060,\"1003913051181\":1478686804060,\"1003913051182\":1478686804060,\"1003913051183\":1478686804060,\"1021767657436\":1509788624817,\"1025441333454\":1509788624861,\"1022301815859\":1478686417199,\"1025441333451\":1509788624861,\"1025441333450\":1509788624861,\"1025441333449\":1509788624861,\"187681304\":1444487341705,\"1003913051184\":1478686804060,\"1003913051185\":1478686804060,\"1025441333446\":1509788624861,\"1024926770097\":1509788624189,\"1025416724045\":1509788624335,\"1003913051187\":1478686804060,\"1003913051188\":1478686804060,\"1003913051189\":1478686804060,\"1025407024811\":1509788624917,\"1024375865376\":1509788625225,\"1024375865378\":1509788625225,\"4965656242\":1509788624160,\"1024375865388\":1509788625226,\"1024375865391\":1509788625225,\"1025429406181\":1509788624407,\"1024375865395\":1509788625225,\"1024375865394\":1509788625226,\"1001797058172\":1478686804054,\"1025429406177\":1509788624431,\"1008170400284\":1478686804022,\"1025429406176\":1509788624428,\"1024375865396\":1509788625225,\"1016839733732\":1478686804031,\"1025429406178\":1509788624426,\"1023947286964\":1491634246517,\"1025407024816\":1509788624916,\"1025407024823\":1509788624865,\"1025407024821\":1509788624865,\"1024375865345\":1509788625226,\"1024375865344\":1509788625225,\"1024375865346\":1509788625226,\"1022190632646\":1478686417064,\"1024375865349\":1509788625226,\"1003492173124\":1478686417220,\"1024375865351\":1509788625226,\"1024375865354\":1509788625226,\"1021425029164\":1509788624978,\"1024375865357\":1509788625225,\"1024375865356\":1509788625225,\"1024375865358\":1509788625225,\"1024375865363\":1509788625225,\"4969982281\":1509788624159,\"1024375865365\":1509788625225,\"1022433152091\":1478686417016,\"1021824018657\":1478686416982,\"1024375865368\":1509788625225,\"1024375865372\":1509788625225,\"1024375865375\":1509788625225,\"1024786783078\":1509788624879,\"1021767657330\":1509788624533,\"1024786783076\":1509788624880,\"1021797672585\":1509788625084,\"1024786783087\":1509788624879,\"1024786783088\":1509788624880,\"1021937922383\":1478686804072,\"4968540602\":1509788624159,\"1024786783043\":1509788624880,\"1019618239666\":1509788624971,\"1024786783046\":1509788624879,\"1019833987996\":1478686804021,\"1024786783045\":1509788624880,\"1024786783044\":1509788624880,\"1024786783049\":1509788624880,\"1016092512915\":1509788624941,\"1024786783048\":1509788624880,\"1009848934121\":1491634246514,\"1025441333330\":1509788624224,\"1016967005865\":1478686804023,\"1025441333327\":1509788624224,\"1025441333326\":1509788624224,\"1024786783058\":1509788624880,\"1025441333325\":1509788624224,\"1025441333324\":1509788624224,\"1024786783056\":1509788624880,\"1024786783062\":1509788624879,\"1024786783061\":1509788624879,\"1024786783060\":1509788624880,\"1020798397703\":1478686417077,\"1022428564520\":1509788624363,\"1024786783064\":1509788624880,\"1016967005861\":1478686804025,\"1024786783071\":1509788624880,\"1024786783070\":1509788624879,\"1016967005863\":1478686804032,\"1024786783069\":1509788624880,\"1003279833344\":1478686804054,\"840823761\":1478686804054,\"1010091945742\":1491634246522,\"1010091945744\":1491634246522,\"1693427005\":1444487341747,\"1024786783037\":1509788624880,\"1023054836698\":1509788624228,\"1024786782980\":1509788624879,\"1025722749137\":1509788624308,\"1023731145254\":1509788624960,\"1024786783000\":1509788624880,\"1021398290695\":1478686417106,\"1024786783004\":1509788624880,\"1021981962288\":1509788624272,\"1024786782433\":1509788625180,\"1021966627613\":1509788624464,\"249547993\":1478686417019,\"1021981962292\":1509788624271,\"1021981962293\":1509788624271,\"1021848266755\":1478686417135,\"1021981962297\":1509788624271,\"1021981962301\":1509788624271,\"1021981962286\":1509788624272,\"1021981962285\":1509788624271,\"1020401374820\":1478686804028,\"1000622865167\":1478686804059,\"1024786782401\":1509788625180,\"1024786782407\":1509788625180,\"1022392256923\":1478686417206,\"1024786782404\":1509788625180,\"1024786782415\":1509788625180,\"1000622865152\":1478686804059,\"1024786782419\":1509788625180,\"1000622865180\":1478686804059,\"1024253868182\":1509788624948,\"1024786782418\":1509788625180,\"1000622865183\":1478686804059,\"1022029412202\":1478686417165,\"1000622865177\":1478686804059,\"1000622865176\":1478686804059,\"1022119328212\":1509788624943,\"1024786782420\":1509788625180,\"1024786782427\":1509788625180,\"1024918905658\":1509788624994,\"1024786782426\":1509788625181,\"1000622865175\":1478686804059,\"1024786782425\":1509788625180,\"1024786782424\":1509788625181,\"1024918905663\":1509788624994,\"1021147939833\":1478686417097,\"1024918905662\":1509788624994,\"1024786782430\":1509788625180,\"1024918905661\":1509788624994,\"1024786782429\":1509788625180,\"1024918905660\":1509788624994,\"1024918905666\":1509788624994,\"1024918905665\":1509788624994,\"1024918905664\":1509788624994,\"1025911627698\":1509788667466,\"187681129\":1444487341705,\"1024786782379\":1509788625180,\"1024786782383\":1509788625181,\"1024786782382\":1509788625181,\"1024686380721\":1509788624510,\"1024786782381\":1509788625181,\"1021981962338\":1509788624271,\"1024686380719\":1509788624509,\"1024786782387\":1509788625181,\"1024954951340\":1509788624924,\"1021981962343\":1509788624271,\"1024954951339\":1509788624924,\"1022192336349\":1478686416985,\"1024786782394\":1509788625181,\"1022126406093\":1478686417184,\"1024786782392\":1509788625181,\"1018957659176\":1509788624362,\"1024786782397\":1509788625180,\"1024786782396\":1509788625180,\"1023946499450\":1491634246531,\"1021981962321\":1509788624271,\"1021981962324\":1509788624271,\"1022026397441\":1478686417058,\"1021848266851\":1480585069071,\"1021981962334\":1509788624271,\"1019618240377\":1509788624971,\"1021981962306\":1509788624271,\"169724012\":1478686804024,\"1021981962307\":1509788624271,\"1021981962304\":1509788624271,\"1021704872131\":1478686417122,\"1021981962309\":1509788624271,\"1021981962315\":1509788624271,\"1021981962312\":1509788624271,\"187681108\":1444487341705,\"1021981962316\":1509788624271,\"1021733709438\":1509788624395,\"1021329213855\":1478686417041,\"1021176774793\":1478686417098,\"1025035430583\":1509788624210,\"1021310077113\":1478686417005,\"1024664096985\":1509788625026,\"1021494368169\":1509788624398,\"1017239902787\":1509788624286,\"1022553085599\":1480585069123,\"758640535\":1444487341752,\"1022553085607\":1480585069123,\"187681165\":1444487341705,\"1009850506638\":1478686804024,\"1024254392349\":1509788625017,\"1021741180620\":1478686417253,\"1021446918323\":1509788624429,\"1025407024450\":1509788624208,\"1021316630896\":1478686417041,\"1025407024454\":1509788624208,\"1022553085618\":1480585069123,\"1025407024464\":1509788624208,\"1021992186154\":1478686417155,\"1022553085624\":1480585069123,\"1025407024468\":1509788624208,\"1021446918358\":1509788624439,\"1021094363099\":1478686417094,\"1025407024424\":1509788624270,\"1025407024428\":1509788624270,\"1021189882253\":1478686417038,\"1025407024440\":1509788624199,\"1023596400930\":1509788624519,\"1025407024438\":1509788624228,\"1025616185717\":1509788624929,\"1024926769250\":1509788624189,\"1024926769253\":1509788624189,\"1009518627298\":1478686804067,\"1016779079386\":1478686804017,\"1021238772870\":1478686416979,\"1021981962546\":1509788624614,\"1021981962544\":1509788624614,\"1021981962545\":1509788624614,\"1005447797431\":1478686804061,\"1022021547743\":1509788624179,\"1022313743687\":1478686417287,\"1021981962558\":1509788624614,\"1021981962556\":1509788624614,\"1020294024609\":1465470268281,\"1021886934743\":1478686804027,\"1021981962557\":1509788624614,\"1025593903575\":1509788625125,\"1021981962531\":1509788624614,\"1025593903574\":1509788625115,\"1021981962534\":1509788624614,\"1397461084\":1444487341732,\"1021981962533\":1509788624614,\"1022065718312\":1478686417271,\"1021981962538\":1509788624614,\"1021981962539\":1509788624614,\"1021981962537\":1509788624614,\"1021981962542\":1509788624614,\"1022155898573\":1509788624958,\"1004588312022\":1444487341762,\"1025593903577\":1509788625088,\"1021981962541\":1509788624614,\"1025593903576\":1509788625107,\"1021981962513\":1509788624614,\"1024527124830\":1509788624930,\"1025295743915\":1509788624946,\"1024527124826\":1509788624930,\"1021981962522\":1509788624614,\"1021981962526\":1509788624614,\"1021981962524\":1509788624614,\"1024527124814\":1509788624930,\"1018515679131\":1509788624426,\"1021595949063\":1478686417115,\"1181189456\":1478686804033,\"1024527124805\":1509788624945,\"1021981962510\":1509788624614,\"1025429406704\":1509788625089,\"1018918338534\":1509788624353,\"1021152789200\":1478686417037,\"1021820349086\":1478686417053,\"1012702841456\":1478686417026,\"1024527124783\":1509788624972,\"1024527124782\":1509788624925,\"1024527124778\":1509788624345,\"1024527124773\":1509788625019,\"1025429406701\":1509788625125,\"1025429406700\":1509788625117,\"1025429406702\":1509788625109,\"1022455434394\":1478686417216,\"1015132297491\":1480585069067,\"1021715358072\":1509788624433,\"1025284600888\":1509788624946,\"1021446918502\":1509788624427,\"758640198\":1444487341733,\"1021446918499\":1509788624440,\"1025513686543\":1509788624511,\"1024607996939\":1509788667589,\"1025513686542\":1509788624511,\"1024786782560\":1509788624470,\"1022963609099\":1509788625050,\"1009862960104\":1491634246523,\"1024786782565\":1509788624470,\"1024786782571\":1509788624471,\"1021680624526\":1478686804028,\"1024786782569\":1509788624470,\"1024786782568\":1509788624470,\"1024786782575\":1509788624470,\"1024206418967\":1509788625034,\"1024786782574\":1509788624471,\"1024786782572\":1509788624470,\"1024786782579\":1509788624470,\"1024786782578\":1509788624470,\"1024786782577\":1509788624470,\"1025732710675\":1509788624942,\"1024786782576\":1509788624470,\"1025513686554\":1509788624507,\"1021928484060\":1478686417010,\"1811130477\":1478950494926,\"1003913051817\":1478686804060,\"1003913051818\":1478686804060,\"1020063335372\":1509788624386,\"1022154063471\":1478686417185,\"1003913051820\":1478686804060,\"1003913051821\":1478686804060,\"1003913051822\":1478686804060,\"1003913051823\":1478686804060,\"1024786782532\":1509788624470,\"1024786782539\":1509788624470,\"1025513686565\":1509788624455,\"1024786782537\":1509788624470,\"1024786782543\":1509788624470,\"1069284374\":1444487341732,\"1003913051814\":1478686804060,\"1024786782541\":1509788624471,\"1024786782547\":1509788624470,\"1024786782550\":1509788624470,\"1003913051824\":1478686804060,\"1003913051825\":1478686804060,\"1003913051826\":1478686804060,\"1024786782552\":1509788624470,\"1003913051828\":1478686804060,\"1003913051829\":1478686804060,\"1024786782556\":1509788624470,\"1022124963916\":1478686417013,\"1018901690476\":1509788624301,\"1020954900099\":1478686417085,\"1025414233175\":1509788624293,\"1025414233174\":1509788624293,\"1021936349958\":1509788624978,\"1025414233168\":1509788624293,\"1020954900100\":1478686417085,\"1025414233171\":1509788624293,\"1020954900101\":1478686417085,\"1024896492458\":1509788624303,\"1021356740259\":1478686417104,\"1025414233159\":1509788624293,\"1022170316079\":1478686417063,\"1023018136468\":1509788625073,\"1021012310562\":1478686417001,\"1024786782525\":1509788624471,\"1025407024131\":1509788625144,\"1025407024128\":1509788625165,\"1021836208431\":1478686417134,\"1024926769510\":1509788624415,\"1025407024133\":1509788625132,\"1025407024132\":1509788625132,\"1021836208435\":1478686417134,\"1025407024152\":1509788625169,\"1021836208438\":1478686417134,\"1021270100841\":1478686804027,\"479321956\":1478686804029,\"1021836208437\":1478686417134,\"1024926769523\":1509788624415,\"1022998211686\":1509788625050,\"1024786782488\":1509788624470,\"1024786782493\":1509788624471,\"1838918043\":1444487341748,\"1838918040\":1444487341726,\"1014777872799\":1478686804028,\"1021396323089\":1478686417043,\"1025530462852\":1509788624537,\"1021396323094\":1478686417043,\"1025530462851\":1509788624543,\"1021396323095\":1478686417043,\"1025530462849\":1509788624540,\"1021396323093\":1478686417043,\"1021715884001\":1509788624447,\"1024597510692\":1509788624939,\"1022457662407\":1478686417072,\"1025407024123\":1509788625244,\"1025407024122\":1509788625246,\"1021396323085\":1478686417043,\"1022457662410\":1478686417072,\"1727111889\":1478686804027,\"1022784956021\":1509788624554,\"1022784956030\":1509788624554,\"1022784956025\":1509788624554,\"187682562\":1444487341703,\"1022784956024\":1509788624554,\"1022784956026\":1509788624554,\"1021618887142\":1478686804067,\"1021679969282\":1509788624396,\"1021715883998\":1509788624447,\"1021715883999\":1509788624448,\"1021715883996\":1509788624447,\"1021618887141\":1478686804067,\"1025798509185\":1509788624428,\"1025616187303\":1509788624929,\"1025798509184\":1509788624425,\"1025798509187\":1509788624406,\"1022956922965\":1509788624419,\"1021715883936\":1509788624853,\"1010812558752\":1509788624300,\"1025530462938\":1509788625108,\"1022258169825\":1478686417196,\"1025516044598\":1509788624338,\"1025516044597\":1509788624336,\"1020294023884\":1465470268281,\"1021346515061\":1478686417005,\"1009423073998\":1478686804022,\"1025407024002\":1509788625132,\"1021346515064\":1478686417005,\"1025407024005\":1509788625169,\"1025407024004\":1509788625132,\"1021715883934\":1509788624853,\"1021715883935\":1509788624853,\"1021715883932\":1509788624853,\"1021485584848\":1478686417046,\"1022307058340\":1478686417199,\"1025007510446\":1509788624978,\"1021183723473\":1478686417234,\"1022309942013\":1478686417068,\"1022457662381\":1478686417072,\"1025407023979\":1509788625165,\"1025407023978\":1509788625244,\"1025407023977\":1509788625246,\"1025530462732\":1509788624800,\"1021721388863\":1478686804040,\"1019552048751\":1480585069074,\"1020519866328\":1509788624320,\"4980206661\":1509788624159,\"1025407023999\":1509788625132,\"1025407023997\":1509788625132,\"1022210983164\":1478686417064,\"1021944476889\":1478686417144,\"1000526131313\":1444487341714,\"1019552048764\":1480585069074,\"1022233527722\":1478686416980,\"1025407023991\":1509788625132,\"1010023788141\":1491634246516,\"1025407023990\":1509788625132,\"1019552048762\":1480585069074,\"4969983140\":1509788624159,\"1025407023989\":1509788625144,\"1019552048763\":1480585069074,\"1022071749751\":1509788624970,\"1025407023948\":1509788624868,\"1023933916017\":1491634246529,\"1025407023939\":1509788624839,\"1022233527706\":1478686416980,\"1025407023941\":1509788624839,\"1022233527708\":1478686416980,\"1000526131288\":1444487341714,\"1010023788111\":1491634246516,\"1021807242328\":1478686417131,\"1021807242331\":1478686417131,\"1025530462794\":1509788624198,\"1025530462793\":1509788624204,\"1021647854288\":1478686417119,\"1021618886943\":1478686804067,\"1025798509183\":1509788624431,\"150850609\":1444487341728,\"1021465268273\":1478686417300,\"1021716539185\":1478686417123,\"1025407023929\":1509788624839,\"1025407023935\":1509788624839,\"1025407023921\":1509788624839,\"1023995653867\":1491634246532,\"1021715883790\":1509788624556,\"1020976788217\":1478686417229,\"1021715883791\":1509788624556,\"1021715883789\":1509788624556,\"1023995653868\":1491634246530,\"1021934121989\":1509788625069,\"4968541397\":1509788624159,\"1025407023903\":1509788624916,\"1021618886944\":1478686804067,\"1025407023901\":1509788624917,\"1012322105098\":1478686804064,\"1025732974181\":1509788624957,\"1014743140215\":1480585069067,\"1021715883792\":1509788624556,\"1021865045518\":1509788624513,\"1025407023842\":1509788624546,\"1022435379227\":1478686417294,\"1025407023858\":1509788624546,\"1019287017418\":1509788624314,\"2005512875\":1491634246533,\"1025407023816\":1509788624565,\"1025407023820\":1509788624565,\"1025407023815\":1509788624611,\"1025407023814\":1509788624613,\"1025407023834\":1509788624546,\"1021715883738\":1509788624218,\"1025407023839\":1509788624546,\"1025407023838\":1509788624546,\"1021715883736\":1509788624218,\"1021715883737\":1509788624218,\"1021392521832\":1478686417006,\"1021715883735\":1509788624218,\"1025407023826\":1509788624565,\"1021392521834\":1478686417006,\"1025407023831\":1509788624552,\"1021701335031\":1478686417009,\"1025372289375\":1509788624305,\"1021270101471\":1478686804027,\"1021574061863\":1509788624397,\"1021515862711\":1478686417244,\"1021272722747\":1478686417101,\"1025896683914\":1509788667458,\"1025896683912\":1509788667465,\"1022294212812\":1478686417015,\"1021157508109\":1478686417097,\"1021006806286\":1478686417089,\"1025896683910\":1509788667461,\"1021352675545\":1465470268226,\"1017124295890\":1478686804018,\"1022987201365\":1509788624509,\"1021568294829\":1478686804046,\"1021989697217\":1478686417155,\"816051679\":1444487341755,\"1021455963671\":1509788624398,\"1011395182259\":1478686804061,\"1021865045646\":1509788624512,\"1021595295413\":1478686417115,\"1021595295411\":1478686417115,\"179818285\":1444487341749,\"1021865045654\":1509788624512,\"1022330258129\":1478686417288,\"4969983396\":1509788624161,\"1022848787449\":1509788624352,\"1024685723981\":1509788624451,\"1009987740343\":1491634246533,\"1021865045667\":1509788624512,\"1021568294681\":1478686804046,\"1021211378136\":1478686804066,\"1020823693557\":1478686417031,\"1024688607504\":1509788624229,\"1020441088548\":1465470268258,\"1021841321822\":1509788624977,\"1023031112786\":1509788625048,\"1018515153215\":1509788624426,\"1024008892083\":1509788667493,\"1023904030836\":1509788624290,\"1025591283472\":1509788624341,\"1022331699549\":1478686417288,\"1021562527522\":1478686417113,\"1022331699533\":1478686417288,\"1024341162379\":1509788624820,\"1018918337204\":1509788624353,\"1024341162380\":1509788624820,\"1019448499478\":1478686804021,\"1022238639331\":1509788624947,\"1021235757219\":1509788624930,\"1024880236895\":1509788625023,\"1022050381873\":1478686417172,\"1022064013599\":1478686417060,\"1024987194146\":1509788667581,\"1024987194148\":1509788667581,\"598599061\":1444487341728,\"1017436251449\":1478686804015,\"1024135247257\":1509788667494,\"1024135247261\":1509788667494,\"1024135247262\":1509788667494,\"1006268812522\":1478686804052,\"1023017875007\":1509788624439,\"1024135247253\":1509788667494,\"1006268812527\":1478686804052,\"1022620458573\":1509788625061,\"1006268812526\":1478686804052,\"1006268812528\":1478686804052,\"1021037476909\":1465470268183,\"1006268812530\":1478686804052,\"1020831951080\":1478686417031,\"1006268812535\":1478686804052,\"1021763724139\":1478686416991,\"1022091018220\":1478686417180,\"1024734089304\":1509788624342,\"1024135247293\":1509788667494,\"1024135247292\":1509788667494,\"1022194170126\":1478686417189,\"1024135247281\":1509788667494,\"1022097702722\":1478686417275,\"1024135247283\":1509788667494,\"1024135247286\":1509788667494,\"1025532035300\":1509788624295,\"1025798508736\":1509788624542,\"1025532035297\":1509788624295,\"1024135247279\":1509788667494,\"1024135247278\":1509788667494,\"1019093286948\":1509788624315,\"1024135247265\":1509788667494,\"1024135247264\":1509788667494,\"1024135247267\":1509788667494,\"1025532035306\":1509788624295,\"1872210207\":1444487341737,\"1025532035103\":1509788624295,\"1024341162242\":1509788624820,\"1024341162240\":1509788624820,\"1024734613642\":1509788624939,\"1021769752642\":1478686417052,\"1024734613640\":1509788624939,\"1022220814189\":1478686417013,\"1008082448407\":1478686804023,\"1017808239724\":1478686804016,\"1021044292747\":1478686417036,\"1304267554\":1444487341748,\"1021939496472\":1478686417145,\"1025532035124\":1509788624295,\"1021298019408\":1478686417041,\"1022039109635\":1478686417169,\"1022328947146\":1478686417288,\"1016964120972\":1478686804019,\"1025532035109\":1509788624295,\"1024341162273\":1509788624821,\"1024341162276\":1509788624821,\"1022039109648\":1478686417169,\"1025532035115\":1509788624295,\"1025880038757\":1509788667403,\"1017168598485\":1478686804016,\"1021710640285\":1478686417250,\"1017168598483\":1478686804016,\"1018651601526\":1478686804018,\"4834977512\":1491745484345,\"1024341162307\":1509788624821,\"1018023624913\":1478686804027,\"1024341162309\":1509788624821,\"1017168598477\":1478686804016,\"1019909353824\":1509788625076,\"1017168598479\":1478686804016,\"1020073953043\":1465470268308,\"1024002731364\":1491634246532,\"1022422928148\":1478686417293,\"1021345467104\":1465470268224,\"1021345467105\":1465470268224,\"1024341162352\":1509788624820,\"4673228910\":1478943089212,\"1021345467108\":1465470268225,\"1002377290841\":1478686417024,\"1022998604139\":1509788625049,\"1012702842838\":1478686417026,\"1022956923629\":1509788624816,\"1006891149685\":1478686804025,\"1024341162351\":1509788624820,\"1021865045493\":1509788624512,\"1004790691291\":1480585069067,\"187681827\":1444487341706,\"1008897696025\":1478686804030,\"1024341162141\":1509788624518,\"1024341162118\":1509788624821,\"1024341162116\":1509788624821,\"1021943035769\":1509788624464,\"1023092716245\":1509788625046,\"1010295242121\":1491634246528,\"1018023625017\":1478686804022,\"1021029875151\":1478686417231,\"1024734613854\":1509788624939,\"1022784955677\":1509788625147,\"1024341162202\":1509788624820,\"1024341162200\":1509788624820,\"1021003005733\":1478686416982,\"214158222\":1478686417019,\"1022238901647\":1509788624932,\"1022238901646\":1509788624946,\"1022238901649\":1509788624941,\"1019723492349\":1478686804021,\"1022238901648\":1509788624931,\"1025530462684\":1509788624431,\"1024341162176\":1509788624518,\"1025530462683\":1509788624428,\"1022455957673\":1478686417298,\"1021510095119\":1509788624398,\"1009857456004\":1491634246520,\"1021618887348\":1478686804067,\"1021618887349\":1478686804067,\"1021618887347\":1478686804067,\"1025530462688\":1509788624407,\"1022784955681\":1509788625147,\"1022784955680\":1509788625147,\"1021387802862\":1478686417239,\"1024341162213\":1509788624821,\"1022784955683\":1509788625147,\"1024341162218\":1509788624821,\"1022784955692\":1509788625147,\"1021925599251\":1478686417141,\"1020233993532\":1465470268316,\"1021886933671\":1478686804027,\"1024943940613\":1509788624977,\"1025407023208\":1509788624839,\"1025007116354\":1509788667497,\"1025407023212\":1509788624839,\"1022453074324\":1478686417296,\"1024341161991\":1509788624821,\"1024341161990\":1509788624821,\"1025407023221\":1509788624839,\"1022643920163\":1509788625102,\"1025407023183\":1509788624865,\"1021607353295\":1478686417049,\"1025407023170\":1509788624917,\"1025407023175\":1509788624916,\"1016444448659\":1478686804069,\"1025407023194\":1509788624839,\"1009518628000\":1478686804067,\"1021609188351\":1478686417116,\"1025407023197\":1509788624839,\"1025407023186\":1509788624849,\"1021786529898\":1509788625068,\"1025565331288\":1509788624337,\"1021289238205\":1478686417102,\"1004588310784\":1444487341762,\"1021355821740\":1478686416978,\"1024341162079\":1509788624820,\"1024341162078\":1509788624820,\"1024341162051\":1509788624821,\"1024341162050\":1509788624821,\"1022415719301\":1478686417209,\"1021510619635\":1478686417112,\"1018850574089\":1509788624373,\"1021662271685\":1509788624396,\"313906504\":1444487341738,\"4654357862\":1478686416965,\"1018518695056\":1480585069063,\"1024186629816\":1509788625250,\"1024186629819\":1509788625250,\"1024341161863\":1509788624821,\"1024186629821\":1509788625249,\"1024186629820\":1509788625249,\"1024186629822\":1509788625249,\"207602757\":1491634246513,\"1015599971982\":1465470268257,\"1024341161864\":1509788624821,\"1010002288678\":1491634246524,\"1024186629815\":1509788625248,\"1024786780865\":1509788624573,\"1021097768677\":1478686417036,\"1024809718694\":1509788624925,\"1024786780871\":1509788624573,\"1024786780870\":1509788624573,\"1024786780869\":1509788624573,\"1018981222598\":1509788624316,\"1024786780875\":1509788624573,\"1024786780873\":1509788624573,\"1024786780872\":1509788624573,\"1024794382915\":1509788624576,\"1024794382914\":1509788624576,\"1024794382912\":1509788624576,\"1024341161898\":1509788624518,\"1022646932014\":1480585069153,\"1021235105524\":1465470268196,\"1024786780833\":1509788624573,\"1022646932011\":1480585069153,\"1024786780839\":1509788624573,\"1022646932009\":1480585069153,\"1024786780837\":1509788624573,\"1022472214718\":1478943089486,\"1024786780836\":1509788624573,\"1022646932007\":1480585069153,\"1024341161947\":1509788624843,\"1156418724\":1444487341727,\"1025909527646\":1509788667461,\"1022646932005\":1480585069153,\"1024786780847\":1509788624573,\"1019220428517\":1509788625020,\"1022646932000\":1480585069153,\"1024186629862\":1509788624440,\"1021838566126\":1478686417009,\"1024794382911\":1509788624576,\"1018981222591\":1509788624315,\"1024786780850\":1509788624573,\"1024794382910\":1509788624576,\"1024341161922\":1509788624821,\"1024341161921\":1509788624821,\"1024186629882\":1509788624430,\"1024786780855\":1509788624573,\"1024186629884\":1509788624430,\"1021215575434\":1478686417038,\"1024186629887\":1509788624430,\"1024786780853\":1509788624573,\"1024794382905\":1509788624576,\"1001796531976\":1478686417017,\"1024186629873\":1509788624441,\"1024186629872\":1509788624441,\"1024794382902\":1509788624576,\"1024186629875\":1509788624430,\"1025609761711\":1509788624566,\"1024786780857\":1509788624573,\"1024186629877\":1509788624430,\"1024186629876\":1509788624430,\"1022646932017\":1480585069153,\"1024786780861\":1509788624573,\"1023854095099\":1491634246514,\"1024186629833\":1509788625248,\"1024186629832\":1509788625248,\"1024186629835\":1509788625248,\"1024186629834\":1509788625248,\"1024186629837\":1509788625250,\"1021716540293\":1478686417123,\"1024186629836\":1509788625248,\"1021226061146\":1478686417003,\"1022646931977\":1480585069153,\"1022646931976\":1480585069153,\"1024186629825\":1509788625250,\"1024186629824\":1509788625249,\"1022646931973\":1480585069153,\"1024186629827\":1509788625248,\"1022646931971\":1480585069153,\"1024786780814\":1509788624573,\"1024186629828\":1509788625249,\"1021858096126\":1478686417135,\"1021399996589\":1478686417240,\"1024186629830\":1509788625248,\"1021849051758\":1509788624437,\"1024786780819\":1509788624573,\"1024186629849\":1509788625248,\"1021864256327\":1478686417053,\"1024186629848\":1509788625249,\"1022646931997\":1480585069153,\"1024186629851\":1509788625248,\"1025909527652\":1509788667464,\"1022436033909\":1478686417071,\"1022646931995\":1480585069153,\"1024786780823\":1509788624573,\"1025796808408\":1509788625086,\"1025909527648\":1509788667464,\"1022646931991\":1480585069153,\"1024786780827\":1509788624573,\"1024186629841\":1509788625250,\"1024786780825\":1509788624573,\"1025796808405\":1509788625114,\"1022002412678\":1478686417157,\"1024786780831\":1509788624573,\"1024341161967\":1509788624820,\"1024186629845\":1509788625248,\"1022646931986\":1480585069153,\"1024341161966\":1509788624820,\"1024186629844\":1509788625249,\"1024786780829\":1509788624573,\"1024341161745\":1509788624820,\"1024579028423\":1509788624925,\"1024341161744\":1509788624820,\"1024211140566\":1509788625071,\"1009840281423\":1491634246520,\"1025458375274\":1509788624352,\"1022061395940\":1478686417060,\"1022061395938\":1478686417060,\"1083410440\":1444487341736,\"1022307061361\":1478686417199,\"1024341161777\":1509788624821,\"1022285827254\":1478686417301,\"1024341161776\":1509788624821,\"1022469064608\":1478686417218,\"1024809718575\":1509788624925,\"1022469064612\":1478686417218,\"1022061395928\":1478686417060,\"1021996121070\":1478686417156,\"1022020763001\":1478686417058,\"1021350315375\":1478686417239,\"1025710823695\":1509788624339,\"1022646932141\":1480585069117,\"1024341161809\":1509788624821,\"1022646932133\":1480585069117,\"1022646932129\":1480585069117,\"1021025415652\":1478686417001,\"1022827818356\":1509788624198,\"1022646932155\":1480585069117,\"1021025415649\":1478686417001,\"1025567817890\":1509788624936,\"1022646932151\":1480585069117,\"1022995195764\":1509788624206,\"1022646932149\":1480585069117,\"1024341161806\":1509788624821,\"1024341161843\":1509788624821,\"1022646932109\":1480585069117,\"1024341161845\":1509788624821,\"1023829846283\":1509788667494,\"1022646932101\":1480585069117,\"1022721513201\":1509788624985,\"1022646932124\":1480585069117,\"1022646932117\":1480585069117,\"1022202464751\":1509788624939,\"1024809718406\":1509788624925,\"1022202464750\":1509788624937,\"1014508420225\":1465470268246,\"1022202464747\":1509788624939,\"1022202464746\":1509788624938,\"1022202464740\":1509788624939,\"1022202464743\":1509788624939,\"1022202464742\":1509788624939,\"1024786781166\":1509788624240,\"1024786781171\":1509788624240,\"1024786781170\":1509788624241,\"1024786781169\":1509788624241,\"1024786781175\":1509788624240,\"1022202464761\":1509788624938,\"1024341161605\":1509788624518,\"1024786781179\":1509788624240,\"407621970\":1478950494909,\"1024786781177\":1509788624240,\"1022202464759\":1509788624939,\"1016399884240\":1480585069069,\"1024786781183\":1509788624240,\"1024786781182\":1509788624240,\"1024786781181\":1509788624240,\"1024786781180\":1509788624240,\"1024341161651\":1509788624919,\"1022202464716\":1509788624939,\"1022202464718\":1509788624937,\"1022202464712\":1509788624939,\"476566849\":1444487341724,\"1022202464714\":1509788624938,\"1019463570694\":1509788624314,\"1008058203440\":1480585069066,\"1022468539930\":1478686417073,\"1022398808690\":1478686417292,\"1022578384808\":1509788624539,\"1008058203435\":1480585069066,\"595192394\":1444487341718,\"1022982350759\":1509788624982,\"1008058203438\":1480585069066,\"1022202464724\":1509788624938,\"1022202464727\":1509788624937,\"1008058203429\":1480585069066,\"1024341161647\":1509788624919,\"1025646724253\":1509788625004,\"1021756255416\":1509788624400,\"1022202464722\":1509788624938,\"1024786781091\":1509788624237,\"1022202464684\":1509788624939,\"1024786781089\":1509788624237,\"1022202464687\":1509788624939,\"1024786781095\":1509788624237,\"1024786781099\":1509788624237,\"1024786781102\":1509788624237,\"1022202464700\":1509788624938,\"1024786781105\":1509788624237,\"1024786781104\":1509788624237,\"1022202464697\":1509788624939,\"1024786781108\":1509788624237,\"1024786781114\":1509788624237,\"1024786781112\":1509788624237,\"1020865247742\":1478686417079,\"1024786781118\":1509788624237,\"1024786781117\":1509788624237,\"1022202464691\":1509788624939,\"1022202464690\":1509788624939,\"1020858951267\":1478686417031,\"1024341161714\":1509788624820,\"1024341161712\":1509788624820,\"1012315552571\":1478686417223,\"1023947026044\":1491634246531,\"1024786781069\":1509788624237,\"1024786781075\":1509788624237,\"1024786781074\":1509788624237,\"1024786781072\":1509788624237,\"1024786781077\":1509788624237,\"1024786781082\":1509788624237,\"1024786781081\":1509788624237,\"1024786781080\":1509788624237,\"1025428228572\":1509788624332,\"1022987200348\":1509788624509,\"1024786781087\":1509788624237,\"1024786781086\":1509788624237,\"1024786781085\":1509788624237,\"1022280060360\":1478686416986,\"1007384479145\":1478686804023,\"1001528092377\":1478686417022,\"1022280060353\":1478686416986,\"1022280060354\":1478686416986,\"1022850625476\":1509788624434,\"1019876981787\":1509788624321,\"1024781406407\":1509788624576,\"1013208919688\":1478686804015,\"1020616599561\":1478686417027,\"1022850625494\":1509788624451,\"1022290807808\":1478686417015,\"262260234\":1478950494908,\"1021974887221\":1509788624389,\"1024186629892\":1509788624456,\"1022280060413\":1478686416986,\"1022280060412\":1478686416986,\"1022280060415\":1478686416987,\"1024469323388\":1509788624522,\"1011783653930\":1478686804062,\"1020640193481\":1478686417027,\"1011783653931\":1478686804062,\"1019842771570\":1509788624282,\"1022457136667\":1478686417072,\"1011783653934\":1478686804062,\"1011783653932\":1478686804062,\"1011783653933\":1478686804062,\"1011783653927\":1478686804062,\"1022215834095\":1478686417191,\"1209106881\":1444487341701,\"1022215834099\":1478686417191,\"4834978300\":1491745484344,\"1022215834101\":1478686417192,\"1024453594891\":1509788624992,\"1023820802369\":1491634246535,\"1024008888986\":1509788667493,\"1022280060349\":1478686416986,\"1021006672290\":1478686417035,\"1017554346988\":1465470268261,\"1024786780391\":1509788624571,\"1024786780390\":1509788624571,\"1024786780389\":1509788624571,\"1024786780388\":1509788624571,\"1024786780394\":1509788624571,\"1024786780393\":1509788624571,\"1024633821706\":1509788624299,\"1024786780399\":1509788624571,\"1024786780398\":1509788624571,\"1024856642772\":1509788624949,\"1021995202890\":1478686417057,\"1024786780396\":1509788624571,\"1024786780403\":1509788624571,\"1021917865456\":1509788624869,\"1024786780402\":1509788624571,\"1024786780407\":1509788624571,\"1024786780406\":1509788624571,\"1021995202899\":1478686417057,\"1024786780404\":1509788624571,\"1024786780408\":1509788624571,\"1024786780415\":1509788624571,\"1024786780412\":1509788624571,\"1025890914578\":1509788667456,\"1016538817713\":1478686804066,\"1021917865434\":1509788624849,\"1023627730521\":1509788624278,\"1023627730524\":1509788624278,\"1023627730527\":1509788624277,\"1499304730\":1478686804024,\"1019276139314\":1509788624311,\"1023627730514\":1509788624278,\"1022280060417\":1478686416987,\"1023627730505\":1509788624277,\"1025509232546\":1509788624344,\"1023627730510\":1509788624278,\"1012204660392\":1478686417223,\"1022057856490\":1478686417059,\"1022421747614\":1478686417210,\"1023627730544\":1509788624278,\"1023627730547\":1509788624278,\"1023627730548\":1509788624278,\"1021801603718\":1509788624222,\"1020322334056\":1465470268301,\"1021801603716\":1509788624222,\"1028171082076\":1532526019715,\"1021801603717\":1509788624222,\"1023627730542\":1509788624278,\"1021801603720\":1509788624222,\"1347263025\":1478686804032,\"1024607995380\":1509788667589,\"1025269922999\":1509788624461,\"1022646931691\":1480585069152,\"1022646931689\":1480585069152,\"1019355962428\":1509788624312,\"1022759267159\":1509788624394,\"1025269923005\":1509788624424,\"1022849707251\":1509788625054,\"1022646931684\":1480585069152,\"1025269922983\":1509788624423,\"1023627730568\":1509788624278,\"1022646931709\":1480585069152,\"1022646931708\":1480585069152,\"1025269922980\":1509788624507,\"1013020169931\":1478686804028,\"1022646931701\":1480585069152,\"1023627730563\":1509788624277,\"378788872\":1491634246507,\"1025772166844\":1509788625003,\"1024304461631\":1509788624311,\"1022646931697\":1480585069152,\"1008898092406\":1480585069067,\"1025269922984\":1509788624433,\"1022646931662\":1480585069152,\"1025269922965\":1509788624508,\"1022336942656\":1478686417201,\"1019834906786\":1509788624375,\"1025269922968\":1509788624426,\"1024313243535\":1509788624342,\"595192269\":1444487341721,\"595192268\":1444487341725,\"1022646931673\":1480585069152,\"1022646931669\":1480585069152,\"1022646931666\":1480585069152,\"1021856391500\":1478686417300,\"1022759267099\":1509788624393,\"1011760454589\":1478686804034,\"1012289600264\":1478686417026,\"1022209673798\":1478686417191,\"595192217\":1444487341725,\"1020960930823\":1478686417033,\"1024779572123\":1509788624452,\"1020960930821\":1478686417033,\"1025269923014\":1509788624508,\"1025269923010\":1509788624461,\"1022646931823\":1480585069152,\"1022646931819\":1480585069152,\"1022646931818\":1480585069152,\"1024716922376\":1509788624342,\"1024794382698\":1509788625186,\"1022646931817\":1480585069152,\"744220508\":1478686804029,\"1022646931815\":1480585069152,\"1022646931814\":1480585069152,\"1022646931813\":1480585069152,\"1024794382691\":1509788625186,\"1022646931810\":1480585069152,\"1022646931809\":1480585069152,\"1020907190573\":1478686416999,\"1024794382688\":1509788625186,\"1020907190583\":1478686416999,\"1020907190584\":1478686416999,\"1020907190528\":1478686416999,\"1022646931786\":1480585069152,\"1020907190532\":1478686416999,\"1020907190533\":1478686416999,\"1022646931780\":1480585069152,\"1021900563910\":1478686417139,\"1011869242335\":1509788624944,\"1022646931807\":1480585069152,\"1022646931803\":1480585069152,\"1024794382683\":1509788625186,\"1022646931800\":1480585069152,\"1024794382679\":1509788625186,\"1022646931797\":1480585069152,\"1024794382676\":1509788625186,\"1022646931795\":1480585069152,\"1024794382675\":1509788625186,\"1024794382674\":1509788625186,\"1022646931793\":1480585069152,\"1024786780579\":1509788624581,\"1014687435707\":1478686804019,\"1024786780576\":1509788624582,\"1024786780582\":1509788624582,\"1024786780586\":1509788624581,\"1024786780589\":1509788624582,\"1022646931774\":1480585069152,\"1024132495538\":1509788624327,\"1022326459613\":1478686417015,\"1022646931770\":1480585069152,\"1024132495490\":1509788624327,\"1024132495488\":1509788624328,\"1024786780551\":1509788624582,\"1022646931722\":1480585069152,\"1024132495494\":1509788624328,\"1024786780549\":1509788624582,\"1019532782441\":1509788624313,\"1024132495499\":1509788624327,\"1024688742322\":1509788624199,\"1024786780554\":1509788624581,\"1022646931717\":1480585069152,\"1024786780559\":1509788624581,\"1022646931714\":1480585069152,\"1024786780558\":1509788624581,\"1022646931712\":1480585069152,\"1024786780556\":1509788624581,\"1024632642396\":1509788625026,\"1022646931741\":1480585069152,\"1006318880478\":1478686804035,\"1022646931739\":1480585069152,\"1024132495510\":1509788624327,\"1022646931736\":1480585069152,\"1024786780570\":1509788624582,\"1022646931732\":1480585069152,\"1020021683606\":1509788624320,\"1020021683607\":1509788624320,\"1024786780574\":1509788624582,\"1024786780573\":1509788624581,\"1020021683605\":1509788624320,\"1025533480417\":1509788624348,\"1021166160209\":1465470268307,\"1024132495463\":1509788624328,\"1025533480421\":1509788624348,\"1024786780519\":1509788624582,\"1019744986849\":1509788624386,\"1024786780518\":1509788624581,\"1025533480423\":1509788624348,\"1025533480427\":1509788624348,\"1025533480426\":1509788624348,\"1021000250170\":1465470268305,\"1025533480429\":1509788624348,\"1024786780526\":1509788624582,\"1025533480430\":1509788624348,\"1024786780524\":1509788624582,\"1022646931967\":1480585069153,\"1024786780531\":1509788624582,\"1025533480432\":1509788624347,\"1022759266892\":1509788624393,\"1022646931965\":1480585069153,\"1024786780528\":1509788624582,\"1024132495479\":1509788624327,\"1024186629437\":1509788624469,\"1024786780534\":1509788624582,\"1022646931961\":1480585069153,\"1024186629438\":1509788624470,\"1022646931959\":1480585069153,\"1024786780538\":1509788624582,\"1024786780536\":1509788624581,\"1024786780541\":1509788624582,\"1022155896398\":1509788624957,\"1004588313960\":1444487341762,\"1022646931919\":1480585069152,\"1024786780483\":1509788624473,\"1022827818500\":1509788624199,\"1022646931915\":1480585069152,\"1024786780486\":1509788624472,\"1024132495429\":1509788624328,\"1022646931912\":1480585069152,\"1022646931909\":1480585069152,\"1022646931908\":1480585069152,\"1024786780493\":1509788624472,\"1022646931904\":1480585069152,\"1020764578066\":1478686417028,\"1021471825706\":1478686417045,\"1024132495443\":1509788624330,\"1020800624425\":1478686417030,\"1022646931923\":1480585069153,\"1022646931885\":1480585069152,\"1024186629483\":1509788624470,\"1009857456921\":1491634246520,\"1024186629482\":1509788624470,\"1022646931883\":1480585069152,\"1024186629485\":1509788624470,\"1022646931882\":1480585069152,\"1024186629484\":1509788624469,\"1022646931881\":1480585069152,\"1021201026937\":1478686417099,\"1024186629486\":1509788624469,\"1022646931879\":1480585069152,\"1022646931878\":1480585069152,\"1024186629472\":1509788624470,\"1024786780457\":1509788624472,\"1022646931876\":1480585069152,\"1024186629477\":1509788624470,\"1024186629479\":1509788624470,\"1013171302035\":1478686804017,\"1024411650192\":1509788624436,\"1020775981505\":1478686804039,\"1024132495409\":1509788624328,\"1022646931900\":1480585069152,\"1024132495415\":1509788624327,\"1022646931897\":1480585069152,\"1024132495413\":1509788624328,\"1022646931895\":1480585069152,\"1024186629488\":1509788624470,\"1022174770539\":1478686417063,\"1024132495423\":1509788624330,\"1022646931890\":1480585069152,\"1013868512375\":1465470268239,\"1009860864848\":1491634246535,\"1024132495421\":1509788624327,\"1022646931888\":1480585069152,\"1024786780418\":1509788624571,\"1024186629451\":1509788624470,\"1024786780417\":1509788624571,\"1024786780423\":1509788624571,\"1024186629455\":1509788624470,\"1024786780421\":1509788624571,\"1024186629454\":1509788624470,\"1024186629441\":1509788624470,\"1021754158671\":1478686417009,\"1024786780426\":1509788624571,\"1024767251428\":1509788667499,\"1023534531692\":1509788625083,\"1021166160191\":1465470268307,\"1024186629444\":1509788624470,\"1024186629466\":1509788624470,\"1024186629469\":1509788624470,\"1024186629471\":1509788624470,\"1024186629457\":1509788624470,\"1024186629456\":1509788624470,\"1024186629459\":1509788624470,\"1024186629462\":1509788624470,\"1001040895558\":1478686804033,\"1021887717804\":1478686804043,\"1022460674953\":1480585069075,\"1021025285429\":1478686417091,\"1021887717805\":1478686804043,\"1021887717806\":1478686804043,\"1021887717800\":1478686804043,\"1021887717801\":1478686804043,\"1021887717802\":1478686804043,\"1021887717803\":1478686804043,\"1021887717796\":1478686804043,\"1021887717797\":1478686804043,\"1021887717798\":1478686804043,\"1021887717799\":1478686804043,\"1021887717792\":1478686804043,\"1021887717793\":1478686804043,\"1021025285434\":1478686417091,\"1021887717794\":1478686804043,\"1021887717795\":1478686804043,\"1013631667677\":1480585069072,\"519951069\":1478950494910,\"1008369339316\":1509788624310,\"1023627728954\":1509788624278,\"1025910837696\":1509788667460,\"538700862\":1478686417019,\"1021609316449\":1478686417049,\"1008369339314\":1509788624310,\"1021887717788\":1478686804043,\"1021887717789\":1478686804043,\"1021887717790\":1478686804043,\"1021502888591\":1478686417112,\"1021887717791\":1478686804043,\"1000286005615\":1478686804024,\"1021887717787\":1478686804043,\"4980204694\":1509788624160,\"1025405973076\":1509788624276,\"1022032034169\":1509788624462,\"1016760989457\":1478686804042,\"1025405973067\":1509788624276,\"1024997288487\":1509788625020,\"1016760989456\":1478686804042,\"1025405973071\":1509788624276,\"1024856642191\":1509788624949,\"1000977449559\":1478686417021,\"1008369339340\":1509788624310,\"1016760989467\":1478686804042,\"1016760989469\":1478686804042,\"1016760989468\":1478686804042,\"1016860839187\":1465470268266,\"1016760989471\":1478686804042,\"1008369339339\":1509788624310,\"1016760989470\":1478686804042,\"1016760989473\":1478686804042,\"1016760989475\":1478686804042,\"1016760989474\":1478686804042,\"1016760989477\":1478686804042,\"1016760989476\":1478686804042,\"1009921159024\":1480585069071,\"1021733709977\":1509788624400,\"1021098160813\":1478686417095,\"1021098160803\":1478686417094,\"1024786781795\":1509788625195,\"1024786781794\":1509788625195,\"1024786781798\":1509788625195,\"1022252011167\":1478686416987,\"1024786781796\":1509788625194,\"1357749351\":1491634246514,\"1024786781801\":1509788625194,\"1024786781800\":1509788625195,\"1024880235517\":1509788624576,\"1024786781807\":1509788625195,\"1024786781806\":1509788625195,\"1710336383\":1444487341741,\"1024786781804\":1509788625195,\"1024786781810\":1509788625195,\"1022430527974\":1478686417211,\"1024786781808\":1509788625195,\"1024786781815\":1509788625195,\"1024786781814\":1509788625195,\"1024786781813\":1509788625194,\"1024786781812\":1509788625196,\"1024786781818\":1509788625194,\"1024786781817\":1509788625195,\"1024786781816\":1509788625194,\"1024786781821\":1509788625195,\"1024786781763\":1509788625195,\"1024786781762\":1509788625196,\"1024786781761\":1509788625196,\"1024786781760\":1509788625194,\"1024055943735\":1509788624928,\"1020604804225\":1478686416995,\"1024786781766\":1509788625195,\"1021226846615\":1478686417099,\"1020437027469\":1478686804051,\"1021845251837\":1480585069083,\"1021845251833\":1480585069083,\"1024023830717\":1509788624277,\"1018153779864\":1465470268308,\"1022474181652\":1478943089315,\"1009959561852\":1480585069074,\"1019042697104\":1509788625079,\"1020953328048\":1478686417033,\"1012551585023\":1478686417223,\"1022267740125\":1478686417197,\"116247089\":1444487341710,\"1020936681628\":1478686417229,\"1024786781699\":1509788625186,\"1020936681629\":1478686417229,\"1024786781698\":1509788625185,\"1024786781696\":1509788625187,\"1024393825963\":1509788624300,\"1779017452\":1491634246509,\"1024786781702\":1509788625186,\"1020936681626\":1478686417229,\"1024786781707\":1509788625185,\"1024786781706\":1509788625186,\"1024786781704\":1509788625186,\"1024786781711\":1509788625185,\"1024786781709\":1509788625185,\"1023846362622\":1491634246537,\"1024786781708\":1509788625185,\"1016780124367\":1478686804016,\"1024786781713\":1509788625187,\"1020936681615\":1478686417229,\"1024786781719\":1509788625185,\"1024786781718\":1509788625186,\"1024786781717\":1509788625187,\"1019802402031\":1509788624393,\"1024786781716\":1509788625185,\"1024136036181\":1509788625036,\"1024786781723\":1509788625186,\"1024786781722\":1509788625185,\"1020437420760\":1478686804027,\"1024786781720\":1509788625186,\"407622839\":1478950494909,\"1021618884907\":1478686804046,\"1022849051292\":1509788624325,\"1022439179249\":1478686417214,\"1022311385967\":1478686417302,\"1025628635605\":1509788625022,\"1022311385966\":1478686417301,\"1019448497713\":1478686804021,\"1022454514404\":1478686417297,\"1024809719436\":1509788624925,\"1022454514408\":1478686417297,\"1022311385983\":1478686417302,\"1021234842537\":1478686416985,\"1022311385979\":1478686417302,\"1023961965844\":1509788625005,\"1863688718\":1478686417020,\"1019760976800\":1509788625077,\"1022454514389\":1478686417297,\"1022454514399\":1478686417297,\"4553425500\":1465469681389,\"1024632642825\":1509788625219,\"1018153780066\":1465470268308,\"1023765614846\":1509788624958,\"1021845251861\":1480585069083,\"1023276322218\":1509788625041,\"1022721512284\":1509788625074,\"1024786782114\":1509788625176,\"1021845251862\":1480585069083,\"1019272600782\":1509788624313,\"1021631205470\":1509788624396,\"1024786782118\":1509788625176,\"1021845251869\":1480585069083,\"1024786782121\":1509788625176,\"1021845251864\":1480585069083,\"1024786782127\":1509788625176,\"1021845251866\":1480585069083,\"1021845251867\":1480585069083,\"1024786782124\":1509788625176,\"1024786782131\":1509788625176,\"1024786782129\":1509788625177,\"1021845251847\":1480585069083,\"1021729517165\":1509788624918,\"1021845251841\":1480585069083,\"1021845251842\":1480585069083,\"1024786782133\":1509788625177,\"1022311385912\":1478686417301,\"1022658729602\":1509788625059,\"1024786782137\":1509788625175,\"1021845251848\":1480585069083,\"1024786782143\":1509788625176,\"1024786782141\":1509788625175,\"1021259483715\":1465470268200,\"1024786782086\":1509788625175,\"1008532659383\":1478686804015,\"1024786782091\":1509788625177,\"1024786782095\":1509788625177,\"1024786782093\":1509788625177,\"1024786782092\":1509788625177,\"1024786782099\":1509788625176,\"1024786782098\":1509788625177,\"1024786782096\":1509788625177,\"1022088524963\":1478686417180,\"1022472215950\":1478943089486,\"1024786782100\":1509788625176,\"1024786782104\":1509788625176,\"378788844\":1491634246507,\"1024786782108\":1509788625176,\"1024341160467\":1509788624196,\"1024341160465\":1509788624196,\"1002347671037\":1478686417024,\"1022060215028\":1478686417060,\"1019956934486\":1509788625078,\"1019956934487\":1509788625076,\"1021329213064\":1478686417041,\"1024341160449\":1509788624518,\"1024460934109\":1509788625029,\"1024809719318\":1509788624925,\"1020898279231\":1478686417080,\"1023483937052\":1509788624947,\"1026318219298\":1514456869773,\"1021153971442\":1478686417038,\"1021153971445\":1478686417038,\"1019956934488\":1509788625077,\"1019956934497\":1509788625076,\"1023483937058\":1509788624947,\"1019956934505\":1509788625077,\"1011767664470\":1478686804062,\"1011767664468\":1478686804062,\"1011767664469\":1478686804062,\"538701231\":1478686417019,\"1011767664466\":1478686804061,\"1024786782039\":1509788624880,\"1011767664467\":1478686804061,\"1011767664465\":1478686804061,\"1021856392758\":1478686417300,\"1024341160491\":1509788624518,\"1024661741519\":1509788624604,\"1011767664477\":1478686804062,\"1011767664474\":1478686804062,\"1011767664475\":1478686804062,\"1011767664473\":1478686804062,\"1021592671878\":1478686417246,\"1021592671879\":1478686417246,\"1008601864304\":1478686804030,\"1021592671876\":1478686417246,\"1021592671877\":1478686417246,\"1021592671874\":1478686417246,\"1025453788389\":1509788624930,\"1021592671875\":1478686417246,\"1022452810692\":1509788624525,\"1021592671872\":1478686417246,\"1021592671873\":1478686417246,\"1022452810697\":1509788624525,\"1022452810696\":1509788624525,\"1022452810699\":1509788624525,\"1022452810698\":1509788624525,\"1022452810701\":1509788624525,\"1022452810700\":1509788624525,\"1021592671880\":1478686417246,\"1022452810703\":1509788624525,\"1021592671881\":1478686417246,\"1022474312969\":1478943089486,\"1024341160514\":1509788624196,\"1022452810704\":1509788624525,\"1024341160513\":1509788624196,\"1022452810709\":1509788624525,\"1023092324405\":1509788625046,\"1022021679112\":1478686417162,\"1016780124640\":1478686804016,\"1022253846037\":1509788624352,\"1021251881561\":1478686416990,\"1020898279237\":1478686417080,\"1020898279259\":1478686417080,\"1020898279249\":1478686417080,\"1025585775807\":1509788624349,\"1021791119762\":1478686417129,\"1024786781409\":1509788624241,\"1021259352355\":1465470268199,\"1024786781408\":1509788624241,\"1022465917277\":1478686417218,\"1024786781415\":1509788624241,\"1024786781414\":1509788624241,\"1021815105029\":1509788624553,\"1022101501716\":1478686417012,\"1021815105030\":1509788624553,\"1021259352359\":1465470268199,\"1022465917278\":1478686417218,\"1021815105031\":1509788624553,\"1021815105032\":1509788624553,\"1025861162225\":1509788667470,\"1025861162224\":1509788667470,\"1025861162226\":1509788667470,\"1024786781423\":1509788624241,\"1024786781420\":1509788624241,\"1024786781425\":1509788624241,\"1025861162219\":1509788667470,\"1024341160320\":1509788624196,\"1024786781424\":1509788624241,\"790356239\":1444487341742,\"1025861162221\":1509788667470,\"1024341160326\":1509788624196,\"1025861162220\":1509788667470,\"1022456218075\":1478686417298,\"1024786781429\":1509788624241,\"1025861162223\":1509788667470,\"1022252010510\":1478686416987,\"1024809719186\":1509788624925,\"1025861162222\":1509788667470,\"1008532135873\":1478686804025,\"1024786781434\":1509788624241,\"1024786781433\":1509788624241,\"1024786781439\":1509788624241,\"1024786781438\":1509788624241,\"1024786781437\":1509788624241,\"1024786781436\":1509788624241,\"1022238641383\":1509788624932,\"1023626811941\":1509788625144,\"1024727799875\":1509788624279,\"1025295742633\":1509788624946,\"1022238641379\":1509788624947,\"1024727799882\":1509788624278,\"1022238641387\":1509788624931,\"1024727799880\":1509788624279,\"1024786781393\":1509788624241,\"1317634236\":1444487341747,\"1024786781398\":1509788624241,\"1020896443632\":1478686417032,\"1024786781403\":1509788624241,\"1024786781402\":1509788624241,\"1024786781407\":1509788624241,\"1022465917284\":1478686417218,\"1024786781406\":1509788624241,\"1024786781405\":1509788624241,\"1024786781404\":1509788624241,\"1024786781347\":1509788624239,\"1018532850661\":1478686804043,\"1024786781345\":1509788624239,\"1020673747533\":1478686417075,\"1024786781350\":1509788624239,\"1021301949692\":1478686417102,\"1024786781348\":1509788624239,\"1024786781355\":1509788624240,\"1024341160410\":1509788624196,\"1024786781354\":1509788624240,\"1025485770000\":1509788624437,\"1024341160409\":1509788624196,\"1024786781353\":1509788624239,\"1024727799853\":1509788624279,\"1024786781352\":1509788624240,\"1024786781359\":1509788624239,\"1024727799851\":1509788624278,\"1024727799849\":1509788624279,\"1024786781356\":1509788624239,\"1024727799863\":1509788624278,\"1024341160386\":1509788624518,\"1025861162152\":1509788667470,\"1024786781360\":1509788624240,\"1025485769997\":1509788624436,\"1018651468514\":1509788625019,\"519950507\":1478950494910,\"1024727799856\":1509788624279,\"1025485769998\":1509788624436,\"1024727799871\":1509788624279,\"1025861162145\":1509788667470,\"1025861162144\":1509788667470,\"1025861162147\":1509788667470,\"1025861162146\":1509788667470,\"1025861162149\":1509788667470,\"1025445007354\":1509788624369,\"1025861162148\":1509788667470,\"1024727799865\":1509788624278,\"1025861162151\":1509788667470,\"1024727799864\":1509788624278,\"1025861162150\":1509788667470,\"1025861162143\":1509788667470,\"1024786781327\":1509788624240,\"1024786781326\":1509788624240,\"1024786781325\":1509788624239,\"1024786781331\":1509788624240,\"1024786781328\":1509788624240,\"1024786781335\":1509788624240,\"1024786781339\":1509788624239,\"1024341160426\":1509788624518,\"1024786781337\":1509788624240,\"1024786781343\":1509788624239,\"1024786781342\":1509788624239,\"1016098413245\":1478686804034,\"1024786781341\":1509788624239,\"1024786781340\":1509788624239,\"1083411985\":1444487341744,\"1023094029123\":1509788625047,\"935328044\":1491634246512,\"1022412571385\":1478686417292,\"1024341160204\":1509788624211,\"1022183682216\":1509788624554,\"1022183682217\":1509788624554,\"1022183682223\":1509788624554,\"1022183682208\":1509788624554,\"1007588562614\":1478686804030,\"1025874793636\":1509788667834,\"1020122712670\":1509788624300,\"1025407021355\":1509788624839,\"1006807393356\":1478686804025,\"1024341160279\":1509788624197,\"1024341160278\":1509788624197,\"1025407021358\":1509788624839,\"1021901742131\":1478686417054,\"1022269573670\":1478686417197,\"1025407021370\":1509788624868,\"1022280977037\":1478686417286,\"1024444418969\":1509788625030,\"1024341160261\":1509788624196,\"1021647589578\":1509788624396,\"1024341160260\":1509788624196,\"1025407021363\":1509788624839,\"1025407021360\":1509788624839,\"1025407021366\":1509788624839,\"1018820950086\":1478686804029,\"1025407021365\":1509788624839,\"1025798510676\":1509788624200,\"1021595162077\":1509788624433,\"1024786781185\":1509788624240,\"1024786781184\":1509788624240,\"1024184268846\":1509788625035,\"1022083413728\":1478686417272,\"1024786781189\":1509788624240,\"1024786781192\":1509788624240,\"1024786781198\":1509788624241,\"1024786781197\":1509788624240,\"1024786781203\":1509788624240,\"1025909920481\":1509788667460,\"1024786781202\":1509788624240,\"1024786781201\":1509788624240,\"1025407021336\":1509788624865,\"1024786781206\":1509788624240,\"1021700811782\":1478686417122,\"1024786781204\":1509788624240,\"1020390496791\":1478686804016,\"1024786781210\":1509788624240,\"1024786781209\":1509788624240,\"1025407021335\":1509788624916,\"1025407021332\":1509788624917,\"1025216707651\":1509788667495,\"1025533479264\":1509788624347,\"1025533479267\":1509788624348,\"1023995520265\":1491634246532,\"1025216707655\":1509788667495,\"1018988171141\":1509788624316,\"1025533479268\":1509788624348,\"1021632385505\":1509788624971,\"1020437027106\":1478686804050,\"1025216707653\":1509788667495,\"1022064015401\":1478686417174,\"1025533479270\":1509788624347,\"1025216707652\":1509788667495,\"1024973957842\":1509788624288,\"1022897022606\":1509788625084,\"1025216707657\":1509788667495,\"1024973957840\":1509788624288,\"1022897022603\":1509788624973,\"1024973957834\":1509788624288,\"1024973957832\":1509788624288,\"1024786781680\":1509788625185,\"1024786781686\":1509788625187,\"1024973957837\":1509788624288,\"1024786781685\":1509788625187,\"1023833386688\":1491634246536,\"1024341160075\":1509788624196,\"1024786781690\":1509788625187,\"1024341160073\":1509788624196,\"1024973957825\":1509788624288,\"1024786781689\":1509788625187,\"4943112636\":1509788624160,\"1024973957829\":1509788624288,\"1024786781693\":1509788625187,\"1024973957828\":1509788624288,\"1025533479232\":1509788624348,\"1025533479234\":1509788624348,\"1001962440272\":1478686417024,\"1025533479236\":1509788624348,\"1025533479241\":1509788624348,\"1021337863103\":1478686417239,\"1008639088720\":1478686804030,\"1000038406445\":1478686417021,\"1019386763240\":1509788625076,\"1025533479242\":1509788624348,\"1022036097496\":1478686417167,\"1025533479244\":1509788624347,\"1020838764921\":1478686417031,\"1025533479248\":1509788624348,\"1025533479253\":1509788624348,\"1021420183227\":1478686417043,\"1025533479252\":1509788624347,\"1025533479255\":1509788624348,\"1021420183225\":1478686417043,\"1025533479257\":1509788624348,\"1025533479259\":1509788624348,\"1025533479258\":1509788624348,\"1021869892576\":1478686416983,\"1021374562682\":1478686417104,\"1012158391936\":1478686417223,\"1024322810315\":1509788667508,\"1021491092019\":1478686417046,\"1021965844044\":1478686417056,\"1025533479221\":1509788624347,\"1012647528898\":1478686804024,\"1021337863105\":1478686417239,\"1024341160143\":1509788624196,\"1024341160141\":1509788624196,\"1021831882338\":1478686417134,\"1004787154545\":1480585069067,\"1021668044707\":1509788624817,\"1021831882344\":1478686417134,\"476566284\":1444487341748,\"1022012242732\":1478686417184,\"1024341160166\":1509788624196,\"1024341160165\":1509788624196,\"1021732269161\":1478686417251,\"1021887717932\":1478686804044,\"1021887717933\":1478686804044,\"1021668044613\":1509788624534,\"1021887717934\":1478686804044,\"1023738877179\":1491634246528,\"1021887717935\":1478686804044,\"1000038406531\":1478686417021,\"1021887717928\":1478686804043,\"1021887717929\":1478686804044,\"1021887717930\":1478686804044,\"1024144686255\":1509788667472,\"1021887717931\":1478686804044,\"1002626203203\":1491634246534,\"1538888753\":1444487341703,\"1024341159963\":1509788624196,\"1024263566779\":1509788624327,\"1024341159962\":1509788624196,\"1024780359372\":1509788625004,\"1013058834531\":1478686417074,\"1021887717927\":1478686804043,\"1024780359368\":1509788625004,\"1021944479681\":1478686417144,\"1024008889550\":1509788667493,\"1021887717944\":1478686804044,\"1021887717945\":1478686804044,\"1021887717946\":1478686804044,\"961935043\":1509788625020,\"1021887717940\":1478686804044,\"1021887717941\":1478686804044,\"1022065719466\":1478686417175,\"1021887717942\":1478686804044,\"1021887717943\":1478686804044,\"1021887717936\":1478686804044,\"1021887717937\":1478686804044,\"1021887717938\":1478686804044,\"1021887717939\":1478686804044,\"1022418994085\":1478686417302,\"1009883410162\":1478686804052,\"1024633823142\":1509788624299,\"1020294152448\":1465470268293,\"1025407021123\":1509788624208,\"1021607089091\":1509788624369,\"4968540041\":1509788624159,\"1022386881600\":1478686417290,\"1024458705187\":1509788624437,\"1021329212585\":1478686417041,\"1710336582\":1444487341741,\"1021668044667\":1509788624195,\"1000977449422\":1478686417021,\"1024615727350\":1509788624860,\"1012145285026\":1478950494940,\"1024615727357\":1509788624860,\"1024615727356\":1509788624860,\"1024615727353\":1509788624860,\"1024341160030\":1509788624196,\"1024615727355\":1509788624860,\"1021374562697\":1478686417104,\"1024341160028\":1509788624196,\"1022020368917\":1478686417266,\"1024780359316\":1509788625004,\"1022451237355\":1478686417215,\"1024780359313\":1509788625004,\"1227982564\":1478950494921,\"1024780359327\":1509788625004,\"1023092718118\":1509788625047,\"1010025358598\":1491634246521,\"1018888582478\":1509788624283,\"1024780359322\":1509788625004,\"1024469321775\":1509788624522,\"1025861162265\":1509788667470,\"1021848266219\":1480585069071,\"1024786781442\":1509788624241,\"1025861162264\":1509788667470,\"1025861162266\":1509788667470,\"1021492271780\":1478686417046,\"1020925279465\":1478686417000,\"1024462375344\":1509788625150,\"1024780359343\":1509788625004,\"1022028757679\":1478686417267,\"1015696831288\":1478686804063,\"1025407021060\":1509788624208,\"1020984916076\":1478686804043,\"1024780359349\":1509788625004,\"1020984916077\":1478686804043,\"1020984916078\":1478686804043,\"1024462375339\":1509788625149,\"1020984916079\":1478686804043,\"1024780359350\":1509788625004,\"1022112773554\":1478686416974,\"1024462375341\":1509788625150,\"1022112773555\":1478686416974,\"4969981903\":1509788624159,\"1020940221404\":1478686417084,\"1020984916074\":1478686804043,\"1024462375343\":1509788625150,\"1020984916075\":1478686804043,\"1024780359346\":1509788625004,\"1024462375342\":1509788625150,\"1024780359357\":1509788625004,\"1024780359359\":1509788625004,\"1018988171131\":1509788624316,\"1015393920288\":1478686804053,\"1024780359355\":1509788625004,\"1022194036590\":1478686417064,\"1022194036591\":1478686417064,\"1021084659087\":1509788624975,\"1025407021039\":1509788624228,\"1025407021030\":1509788624270,\"1025407021028\":1509788624270,\"1025407021049\":1509788624215,\"1028517210\":1478686417020,\"1025407021043\":1509788624228,\"1024341159818\":1509788624196,\"1024341159817\":1509788624196,\"1025407021041\":1509788624228,\"1021692162411\":1478686417300,\"1025890913068\":1509788667456,\"1010002688022\":1491634246524,\"1018923445336\":1509788624302,\"1025007122404\":1509788667497,\"1025530730157\":1509788625022,\"1021161443635\":1478686417038,\"1021084659107\":1509788624975,\"1024341159869\":1509788624197,\"1024341159868\":1509788624197,\"1011593729908\":1478686417220,\"1019126716531\":1509788624932,\"1024341159846\":1509788624196,\"1024341159845\":1509788624196,\"1021907386044\":1509788624465,\"1223792846\":1444487341739,\"1024341159898\":1509788624196,\"1022367357299\":1478686417204,\"1024341159897\":1509788624196,\"1022094551337\":1478686417181,\"1021283867129\":1465469681396,\"1022461337542\":1478686417298,\"866640893\":1478950494918,\"1022052083644\":1509788625066,\"1021084659153\":1509788624975,\"1025407020939\":1509788624546,\"1025407020943\":1509788624546,\"1025407020942\":1509788624546,\"1025407020929\":1509788624552,\"1025407020935\":1509788624546,\"1021084659170\":1509788624975,\"1024341159907\":1509788624196,\"1021084659198\":1509788624975,\"1025407020953\":1509788624546,\"1024341159908\":1509788624196,\"1021052021735\":1478686417093,\"1025890913096\":1509788667456,\"1025407020951\":1509788624546,\"1083412498\":1444487341747,\"1022037403201\":1509788624899,\"1025407020911\":1509788624611,\"1022037403204\":1509788624899,\"187685802\":1444487341703,\"1022646930153\":1480585069151,\"4974835715\":1509788624160,\"1025407020908\":1509788624613,\"1022037403207\":1509788624899,\"1022646930151\":1480585069151,\"1022037403208\":1509788624899,\"1022035961459\":1478686417167,\"1022646930148\":1480585069151,\"1022037403211\":1509788624899,\"1022646930147\":1480585069151,\"1022646930146\":1480585069151,\"1022646930145\":1480585069151,\"1021742626022\":1478686417253,\"1025407020923\":1509788624565,\"1022208364578\":1478686804046,\"1022037403217\":1509788624899,\"1022037403219\":1509788624899,\"1022646930169\":1480585069151,\"1022646930168\":1480585069151,\"1022646930167\":1480585069151,\"1022037403224\":1509788624899,\"1022037403225\":1509788624899,\"1022037403226\":1509788624899,\"1025407020919\":1509788624565,\"1021854563125\":1509788624394,\"1025407020916\":1509788624565,\"1025407020865\":1509788625132,\"1025407020864\":1509788625132,\"1022247555824\":1478686417284,\"1016882074296\":1478686804063,\"1022518215297\":1509788625075,\"1020962235966\":1478686417000,\"1022079871132\":1478686417178,\"4879020555\":1509788624161,\"1021881564360\":1478686417137,\"1024341159771\":1509788624196,\"1024341159770\":1509788624196,\"1021602892896\":1478686804046,\"1025524962856\":1509788667890,\"1022079871124\":1478686417178,\"1009848930196\":1491634246514,\"1025407020859\":1509788625133,\"1025407020858\":1509788625133,\"1025407020857\":1509788625133,\"1025407020863\":1509788625132,\"1025407020861\":1509788625133,\"1022079871119\":1478686417178,\"1025407020850\":1509788625144,\"1022037403163\":1509788624899,\"1019718384578\":1478686804039,\"1022079871109\":1478686417178,\"1021736072199\":1509788624395,\"1022037403165\":1509788624899,\"1021668044837\":1509788624420,\"1021344160978\":1478686417005,\"1022037403172\":1509788624899,\"1021084659051\":1509788624975,\"1022037403175\":1509788624899,\"1022037403176\":1509788624899,\"1013029997897\":1478686804066,\"1022037403177\":1509788624899,\"1024192915104\":1509788625071,\"1024615735260\":1509788625159,\"1022037403179\":1509788624899,\"1024615735257\":1509788625159,\"1024615735256\":1509788625159,\"1024341159805\":1509788624272,\"1024615735259\":1509788625159,\"1021900570119\":1478686417139,\"1024341159804\":1509788624272,\"1024615735258\":1509788625159,\"1084854361\":1444487341718,\"1223792640\":1444487341740,\"1025577523504\":1509788624343,\"1022079871148\":1478686417178,\"1022037403188\":1509788624899,\"1025407020831\":1509788625244,\"1022037403189\":1509788624899,\"1025407020828\":1509788625246,\"1022037403193\":1509788624899,\"1022037403199\":1509788624899,\"1022646930287\":1480585069152,\"1025216700995\":1509788667495,\"1022646930286\":1480585069152,\"1025216700994\":1509788667495,\"1022646930285\":1480585069151,\"1022646930284\":1480585069151,\"1024938963698\":1509788625202,\"1025216700992\":1509788667495,\"1021455041180\":1509788624817,\"1025216700997\":1509788667495,\"1020969314153\":1478686804039,\"1024283356642\":1509788624960,\"1025216700996\":1509788667495,\"1022646930277\":1480585069151,\"1022646930272\":1480585069151,\"1018559723294\":1478686804015,\"1022646930301\":1480585069152,\"1022646930299\":1480585069152,\"1024938963685\":1509788625201,\"1024938963684\":1509788625201,\"1022646930297\":1480585069152,\"1024938963687\":1509788625201,\"1024938963686\":1509788625201,\"1022646930295\":1480585069152,\"1024938963689\":1509788625201,\"1022646930294\":1480585069152,\"1024938963691\":1509788625201,\"1024938963690\":1509788625201,\"1024938963693\":1509788625201,\"1022646930290\":1480585069152,\"1024938963692\":1509788625201,\"1024938963694\":1509788625201,\"1024938963671\":1509788625202,\"1024938963670\":1509788625201,\"1020949128331\":1478686417085,\"1024938963672\":1509788625202,\"1022297887863\":1478686417068,\"1022646930245\":1480585069151,\"1024938963675\":1509788625201,\"1022457798398\":1478686416977,\"1022065714716\":1478686417271,\"1016947873553\":1478686804053,\"1024938963677\":1509788625201,\"1021993493071\":1478686417156,\"1022238774254\":1509788624931,\"1022238774253\":1509788624941,\"1024938963679\":1509788625201,\"1022238774252\":1509788624947,\"1024938963648\":1509788624252,\"1024938963650\":1509788624252,\"1024461330298\":1509788624556,\"1025512641673\":1509788624341,\"1024461330288\":1509788624556,\"1024461330293\":1509788624556,\"1024461330295\":1509788624556,\"1024461330294\":1509788624556,\"367641769\":1444487341750,\"1021283866863\":1465469681396,\"1022646930222\":1480585069151,\"1019717597771\":1509788625078,\"1022646930221\":1480585069151,\"1019717597768\":1509788625078,\"1022646930220\":1480585069151,\"1025445007588\":1509788624369,\"1022646930216\":1480585069151,\"1024938963638\":1509788624252,\"1019717597773\":1509788625078,\"1024938963640\":1509788624252,\"1022646930213\":1480585069151,\"1024938963643\":1509788624252,\"1022646930211\":1480585069151,\"1024938963644\":1509788624252,\"1022284780875\":1478686417067,\"1022646930209\":1480585069151,\"1024938963647\":1509788624252,\"1024938963646\":1509788624252,\"1024938963619\":1509788624253,\"1024938963621\":1509788624252,\"1022646930234\":1480585069151,\"1025284597250\":1509788624946,\"1024938963623\":1509788624252,\"1025126924266\":1509788624306,\"1020294029302\":1465470268282,\"1016159487591\":1478686804031,\"1024938963625\":1509788624252,\"1019717597779\":1509788625078,\"1022646930229\":1480585069151,\"1024938963629\":1509788624252,\"1024938963628\":1509788624252,\"1022646930225\":1480585069151,\"1024938963631\":1509788624252,\"1025906511173\":1509788667464,\"1025906511181\":1509788667462,\"1024938963611\":1509788624252,\"1022646930180\":1480585069151,\"1024938963613\":1509788624253,\"1025906511179\":1509788667458,\"1013631668388\":1480585069072,\"1022435253373\":1478686417071,\"1021550594229\":1478686804071,\"1022646930206\":1480585069151,\"1021550594230\":1478686804071,\"1022827427039\":1509788625054,\"1021550594231\":1478686804071,\"1025909132654\":1509788667458,\"1025909132651\":1509788667464,\"1021550594236\":1478686804071,\"1025216700987\":1509788667495,\"1021550594237\":1478686804071,\"1021550594238\":1478686804071,\"1024442323985\":1509788624926,\"1021550594232\":1478686804071,\"1021550594233\":1478686804071,\"1021550594234\":1478686804071,\"4974836218\":1509788624161,\"1021550594235\":1478686804071,\"1020925272718\":1478686417033,\"1025890912944\":1509788667456,\"1007972482741\":1478686804025,\"1006088089319\":1509788624369,\"1013029997618\":1478686804066,\"1024938963557\":1509788624588,\"1023143045480\":1509788625046,\"1024938963559\":1509788624588,\"1024938963558\":1509788624588,\"1025890912932\":1509788667455,\"1024938963561\":1509788624588,\"1024938963560\":1509788624588,\"1024938963563\":1509788624588,\"1024938963565\":1509788624588,\"1022816286187\":1509788625055,\"1025890912943\":1509788667456,\"1025890912942\":1509788667455,\"1025890912941\":1509788667456,\"1022646930383\":1480585069084,\"1018271876343\":1509788624354,\"1022646930380\":1480585069084,\"1024938963541\":1509788624588,\"1024938963542\":1509788624588,\"1024938963545\":1509788624588,\"1022646930374\":1480585069084,\"1024938963547\":1509788624588,\"1024273787451\":1509788624327,\"1024938963549\":1509788624588,\"1022770016404\":1509788624267,\"1024938963548\":1509788624588,\"1022646930369\":1480585069084,\"1024938963550\":1509788624588,\"4995151883\":1509788667396,\"1025890912903\":1509788667455,\"1025890912901\":1509788667455,\"1021895589102\":1509788624465,\"1024055951145\":1509788624969,\"1024938963533\":1509788624588,\"1022646930351\":1480585069084,\"1025732051790\":1509788624942,\"1024002734713\":1491634246532,\"1022215836145\":1478686417192,\"1022215836144\":1478686417192,\"1022215836146\":1478686417192,\"1022646930364\":1480585069084,\"1022215836149\":1478686417192,\"1022646930362\":1480585069084,\"1022646930361\":1480585069084,\"1022646930360\":1480585069084,\"1022646930359\":1480585069084,\"1023364928635\":1509788625163,\"1023364928634\":1509788625163,\"1022646930357\":1480585069084,\"1023364928633\":1509788625163,\"1023364928639\":1509788625163,\"1020990678777\":1478686417230,\"1022646930354\":1480585069084,\"1010024708895\":1491634246521,\"1023364928636\":1509788625163,\"1022270625044\":1478686417067,\"1024938963484\":1509788624588,\"1022646930304\":1480585069152,\"1024938963464\":1509788624588,\"1025647124411\":1509788624364,\"1021037471871\":1465470268183,\"1025647124410\":1509788624364,\"1021177303046\":1478686417234,\"1025647124409\":1509788624364,\"1015902722666\":1480585069075,\"1025647124408\":1509788624364,\"1025647124415\":1509788624364,\"1025647124414\":1509788624364,\"1025647124413\":1509788624364,\"1015902722670\":1480585069075,\"1025647124412\":1509788624364,\"1015902722658\":1480585069069,\"1015902722660\":1480585069063,\"1015902722662\":1480585069063,\"1021052021129\":1478686417093,\"1015902722673\":1480585069069,\"1015902722674\":1480585069075,\"1015902722677\":1480585069063,\"1020241205741\":1478686804039,\"1024055950476\":1509788624969,\"1021471164067\":1478686417242,\"1023569396656\":1509788624516,\"1021471164068\":1478686417242,\"1015902722636\":1480585069062,\"1025606883369\":1509788625083,\"816046735\":1444487341725,\"1021440491611\":1478686417107,\"1015902722648\":1480585069075,\"1015902722650\":1480585069069,\"1022628580276\":1509788624462,\"1024938963396\":1509788624891,\"1334681018\":1491634246519,\"1015902722643\":1480585069075,\"1021828086628\":1509788624940,\"1015902722644\":1480585069075,\"1015902722646\":1480585069075,\"1024938963378\":1509788624891,\"1022438268091\":1478686417071,\"1025439765074\":1509788624293,\"1024938963380\":1509788624891,\"1020581072372\":1478686417027,\"1024938963382\":1509788624891,\"1024938963387\":1509788624891,\"1020437283950\":1480585069097,\"1025439765080\":1509788624293,\"1022065059182\":1478686417174,\"1022519263322\":1509788624507,\"1024938963365\":1509788624891,\"1801304331\":1444487341729,\"1021501703300\":1478686804022,\"1024938963369\":1509788624891,\"1024938963371\":1509788624891,\"1023765614490\":1509788624958,\"726006043\":1478686417023,\"1024938963351\":1509788624891,\"1024577593108\":1509788624925,\"1021471164144\":1478686417242,\"1025647124427\":1509788624364,\"1025647124426\":1509788624364,\"1025647124425\":1509788624364,\"1021471164147\":1478686417242,\"1025647124424\":1509788624364,\"1022069648000\":1478686417271,\"1024938963332\":1509788624891,\"1024938963335\":1509788624891,\"1025647124419\":1509788624364,\"1025647124418\":1509788624364,\"1025647124417\":1509788624364,\"1024938963339\":1509788624891,\"1025647124416\":1509788624364,\"1022452817018\":1509788624525,\"1025647124423\":1509788624364,\"1025647124422\":1509788624364,\"1025647124421\":1509788624364,\"1025647124420\":1509788624364,\"1022519263371\":1509788624441,\"1024938963312\":1509788624891,\"1024938963316\":1509788624891,\"1024938963319\":1509788624891,\"1022402615704\":1478686417207,\"1024127115481\":1509788624363,\"1024938963325\":1509788624891,\"1001351804751\":1444487341700,\"1019934386856\":1478686804015,\"1018335710194\":1478686804065,\"1019934386857\":1478686804015,\"1018335710195\":1478686804065,\"1019934386854\":1478686804015,\"1019934386855\":1478686804015,\"1024938963307\":1509788624891,\"1025533482239\":1509788624325,\"1022455307612\":1478686417216,\"1018088511625\":1478686804053,\"1014129478804\":1478686804019,\"1021618884474\":1478686804057,\"1021618884475\":1478686804057,\"1021618884472\":1478686804057,\"1021618884473\":1478686804057,\"1850719476\":1444487341717,\"1010057346636\":1491634246534,\"1019963877573\":1478686804021,\"1021626355584\":1478686417117,\"1021626355587\":1478686417117,\"1021626355589\":1478686417119,\"1020391540279\":1478686804071,\"1025042381681\":1509788624254,\"1012918322325\":1478686417074,\"1021618884360\":1478686804069,\"1022052345116\":1478686417172,\"1025445008195\":1509788624369,\"1021928750518\":1509788624974,\"1021928750516\":1509788624974,\"1021928750517\":1509788624974,\"1021928750514\":1509788624974,\"1021618884408\":1478686804069,\"1021928750512\":1509788624974,\"1021928750513\":1509788624974,\"1021928750511\":1509788624974,\"1023751720519\":1509788624281,\"1021928750508\":1509788624974,\"1021983924451\":1509788624536,\"1021928750509\":1509788624974,\"1021928750507\":1509788624974,\"1021597256161\":1509788624405,\"1022543251381\":1509788625063,\"1020977964259\":1478686417087,\"1024576675427\":1509788624462,\"1021514286338\":1509788624405,\"1021471426447\":1478686417045,\"1025592859094\":1509788624352,\"1021952991969\":1478686417146,\"1024895316824\":1509788624439,\"1021729517578\":1509788624919,\"1019860068284\":1509788625079,\"1020437415194\":1478686804027,\"1010002688777\":1491634246524,\"1021599354817\":1478686417115,\"1021964001821\":1478686417148,\"1024781797999\":1509788625024,\"1018330073746\":1478686804053,\"1016620474605\":1478686804063,\"1018330073744\":1478686804053,\"1018330073745\":1478686804053,\"1016620474606\":1478686804063,\"1022050379084\":1478686417172,\"1021694915197\":1480585069064,\"1000490607196\":1444487341712,\"1004588316048\":1444487341763,\"1021601320859\":1478686804065,\"1022257123569\":1478686417067,\"1024688211868\":1509788624492,\"1021618884278\":1478686804069,\"1021709332755\":1509788624918,\"1016231186327\":1478686804017,\"1024055950833\":1509788624969,\"1022092192500\":1509788625020,\"4995152594\":1509788667396,\"1012124054730\":1478686417073,\"1024782453326\":1509788625019,\"1024782453322\":1509788625021,\"1021876322055\":1478686417136,\"927327295\":1478950494918,\"398836804\":1478686804029,\"1022461991959\":1509788624243,\"1022461991958\":1509788624243,\"1022461991953\":1509788624243,\"1022461991952\":1509788624243,\"1024886928238\":1509788624571,\"1022461991955\":1509788624243,\"1022461991954\":1509788624242,\"1022461991965\":1509788624243,\"1021471164169\":1478686417242,\"1022461991967\":1509788624243,\"1025445007917\":1509788624369,\"1024608001024\":1509788667590,\"156883669\":1478686417019,\"1022461991961\":1509788624243,\"1022461991960\":1509788624243,\"1017337023841\":1478686804065,\"1022461991962\":1509788624243,\"1021084659228\":1509788624975,\"1022461991949\":1509788624243,\"1022461991948\":1509788624242,\"1022461991951\":1509788624243,\"1022491869707\":1478943089254,\"1801304304\":1444487341736,\"1022461991973\":1509788624243,\"1108578722\":1491634246517,\"1022461991972\":1509788624243,\"1022461991975\":1509788624243,\"1022461991974\":1509788624242,\"1022461991968\":1509788624243,\"1021084659259\":1509788624975,\"1022461991970\":1509788624242,\"1022461991977\":1509788624243,\"1021084659250\":1509788624975,\"1022461991976\":1509788624243,\"1025773733809\":1509788624288,\"1021084659278\":1509788624975,\"1021084659274\":1509788624975,\"1021983924694\":1509788624552,\"1021831625411\":1478686417133,\"1021084659268\":1509788624975,\"1021951418924\":1478686417056,\"1021698323157\":1478686417250,\"1025485770888\":1509788625135,\"1018330073612\":1478686804053,\"1018330073610\":1478686804053,\"1018330073611\":1478686804053,\"1018330073609\":1478686804053,\"1020254443734\":1509788625077,\"1025485770887\":1509788625135,\"1020294159735\":1465470268294,\"1025485770886\":1509788625135,\"1020294028623\":1465470268281,\"1016780124124\":1478686804016,\"1021960725136\":1478686417056,\"1025509234202\":1509788624340,\"1025509234206\":1509788624344,\"1025911492116\":1509788667404,\"519949587\":1478686417017,\"1022021281332\":1509788624463,\"810673060\":1444487341742,\"1022090619457\":1478686417062,\"1024678510721\":1509788625025,\"1026226601158\":1514456869770,\"1021881040840\":1478686417053,\"1021425026368\":1509788624978,\"1021425026369\":1509788624978,\"1021425026371\":1509788624978,\"1021425026372\":1509788624978,\"1021425026373\":1509788624978,\"1021981566514\":1478686417151,\"1021425026375\":1509788624978,\"1025902446699\":1509788667444,\"1022215836712\":1478686417192,\"1022107004599\":1478686417275,\"1025902446698\":1509788667442,\"1021425026381\":1509788624978,\"1022107004592\":1478686417275,\"1021425026382\":1509788624978,\"1021425026383\":1509788624978,\"1025902446700\":1509788667443,\"1020117342023\":1465470268310,\"1025313041821\":1509788624385,\"1025313041820\":1509788624385,\"1023364927930\":1509788624450,\"1025313041823\":1509788624385,\"1025313041822\":1509788624385,\"1009571191767\":1478686804030,\"1023364927934\":1509788624450,\"1025313041819\":1509788624385,\"1023364927933\":1509788624450,\"1025313041818\":1509788624385,\"1023364927932\":1509788624450,\"1848097287\":1444487341725,\"1025313041825\":1509788624385,\"1025313041824\":1509788624385,\"1025313041837\":1509788624385,\"1025313041836\":1509788624385,\"1025313041838\":1509788624385,\"1022044873311\":1478686417171,\"1025313041835\":1509788624385,\"1025313041845\":1509788624385,\"1022329606984\":1478686417201,\"1025313041844\":1509788624385,\"1025313041847\":1509788624385,\"1004588315387\":1444487341762,\"1025313041846\":1509788624385,\"1025313041841\":1509788624385,\"1025313041840\":1509788624385,\"1025313041843\":1509788624385,\"1025313041842\":1509788624385,\"1025313041848\":1509788624385,\"1021975668397\":1478686417150,\"1025732052660\":1509788624942,\"1021786796945\":1509788624395,\"1009965855243\":1491634246523,\"1022700931359\":1509788624973,\"1021765038417\":1478686417127,\"1022238906001\":1509788624932,\"1022238906000\":1509788624946,\"1022238906002\":1509788624933,\"1022238906004\":1509788624941,\"1003492175988\":1478686417220,\"1022827819461\":1509788624825,\"1022850626088\":1509788625080,\"1022219769217\":1478686417281,\"1023364927943\":1509788624450,\"1017364548396\":1480585069151,\"1021514810240\":1478686417112,\"1020073956772\":1465470268309,\"1000920440580\":1478686417220,\"1022850626086\":1509788625078,\"1013029997006\":1478686804066,\"1023890141210\":1491634246506,\"1086690485\":1480585069071,\"1021514810265\":1478686417112,\"1021514810270\":1478686417112,\"1013644645754\":1458304307281,\"1013644645759\":1458304307281,\"1021425026366\":1509788624978,\"1013644645758\":1458304307281,\"1021425026367\":1509788624978,\"1013644645762\":1458304307281,\"1020979798858\":1478686417087,\"1025890914229\":1509788667456,\"1025050901922\":1509788624232,\"1012124054314\":1478686417073,\"1018898018169\":1509788624367,\"1025445008701\":1509788624369,\"1084855351\":1444487341718,\"1020657629090\":1478686804043,\"1020657629091\":1478686804043,\"1020657629089\":1478686804043,\"1020657629094\":1478686804043,\"1020657629092\":1478686804043,\"1020657629093\":1478686804043,\"1024107587031\":1509788625036,\"1020052745123\":1509788624280,\"1019596484850\":1509788624298,\"1022156941594\":1478686417013,\"1017337023059\":1478686804065,\"1020657629119\":1478686804065,\"4998823245\":1509788667397,\"1543866568\":1491634246505,\"1023020885244\":1509788624382,\"1023020885243\":1509788624382,\"1023413165098\":1509788624386,\"1022029406644\":1478686417165,\"1020294027842\":1465470268281,\"1023413165101\":1509788624292,\"1013043104268\":1478686804066,\"1020117342126\":1465470268311,\"4995153216\":1509788667397,\"1021603678274\":1478686417115,\"1021888247972\":1478686417054,\"1021888247975\":1478686417054,\"1024341158555\":1509788624536,\"1022199278135\":1478686417189,\"1021888247976\":1478686417054,\"1024341158556\":1509788624536,\"1020160988072\":1465470268316,\"1024341158537\":1509788624536,\"1022922063634\":1509788624926,\"1024341158541\":1509788624536,\"1008644325929\":1478686804030,\"1024341158577\":1509788624518,\"1024794382155\":1509788624237,\"1022306931700\":1478686417199,\"1021988120314\":1478686417264,\"1024794382147\":1509788624237,\"1024183083987\":1509788624923,\"1022185253693\":1478686417064,\"1024183083981\":1509788624923,\"1020073956604\":1465470268309,\"1018867084524\":1509788625077,\"1018867084525\":1509788625078,\"1022478894501\":1478943089487,\"1024183083977\":1509788624923,\"1024183083969\":1509788624923,\"1021599353276\":1478686417115,\"1024794382127\":1509788624237,\"1024341158610\":1509788624536,\"1024183083966\":1509788624923,\"1020911773370\":1478686416975,\"1024341158609\":1509788624536,\"1274781368\":1480585069071,\"1024183083958\":1509788624923,\"1024183083955\":1509788624923,\"1024183083952\":1509788624923,\"1024794382143\":1509788624237,\"1021599353263\":1478686417115,\"1024794382138\":1509788624237,\"1024794382135\":1509788624237,\"1021272857903\":1478686417101,\"1023020885375\":1509788624382,\"1024794382132\":1509788624237,\"1024794382128\":1509788624237,\"1020824352850\":1509788624945,\"1021420963046\":1478686417106,\"1024316123253\":1509788625016,\"1012512418813\":1444487341761,\"1021599353243\":1478686417115,\"1021599353235\":1478686417115,\"1024341158633\":1509788624536,\"1024341158632\":1509788624536,\"1025407019627\":1509788624546,\"1019940023366\":1509788624393,\"1025407019630\":1509788624546,\"137092515\":1444487341743,\"1025407019617\":1509788624546,\"1008538813694\":1478686804030,\"1025407019622\":1509788624546,\"1024116631396\":1509788624215,\"1024341158402\":1509788624518,\"137092541\":1444487341752,\"1025890913961\":1509788667456,\"1025407019637\":1509788624566,\"1025407019595\":1509788624611,\"1022155892848\":1509788624959,\"1025407019593\":1509788624613,\"1025407019599\":1509788624565,\"1020776513088\":1478686417076,\"1024341158434\":1509788624518,\"1021956137996\":1509788624464,\"1025407019603\":1509788624539,\"451923793\":1491634246504,\"1025407019604\":1509788624552,\"1024341158483\":1509788624535,\"4998822964\":1509788667397,\"1013631669251\":1480585069072,\"1024341158488\":1509788624536,\"1021958628441\":1478686417147,\"1024341158466\":1509788624536,\"1023020885495\":1509788624379,\"1009007802544\":1509788624368,\"1024341158468\":1509788624536,\"1022700669063\":1509788624973,\"137092598\":1444487341752,\"1023020885496\":1509788624379,\"4980210998\":1509788624161,\"1022147373492\":1478686417277,\"1024055950198\":1509788624969,\"1025732052832\":1509788624942,\"1009250412829\":1478686804055,\"1009250412828\":1478686804054,\"836494369\":1491634246515,\"1022248212398\":1478686417066,\"1024341158290\":1509788624536,\"1025417898308\":1509788667581,\"1025890913585\":1509788667456,\"1024341158288\":1509788624536,\"1023162576852\":1509788624977,\"1020553939766\":1478686417026,\"1023162576841\":1509788624977,\"1023162576845\":1509788624977,\"1021439706239\":1478686417107,\"1021951682524\":1478686417146,\"1025407019467\":1509788624208,\"1024341158323\":1509788624536,\"1021727159648\":1478686417123,\"1025407019465\":1509788624208,\"187686152\":1444487341704,\"1024341158324\":1509788624536,\"1025407019459\":1509788624208,\"1023364928395\":1509788624564,\"1024107587415\":1509788625036,\"1023364928394\":1509788624564,\"1025732052130\":1509788624942,\"1025407019457\":1509788624208,\"1023364928393\":1509788624564,\"1023364928392\":1509788624564,\"1025407019462\":1509788624208,\"1023364928396\":1509788624564,\"1025890913537\":1509788667456,\"1021880908291\":1478686417137,\"1022311387224\":1478686417302,\"1024134325759\":1509788625036,\"1022311387221\":1478686417302,\"1022311387219\":1478686417287,\"1022311387217\":1478686417302,\"1022311387216\":1478686417302,\"1021681284698\":1478686417120,\"1006559006009\":1480585069065,\"1025407019439\":1509788624228,\"1025407019438\":1509788624228,\"1025407019436\":1509788624270,\"1024341158367\":1509788624535,\"1024341158366\":1509788624535,\"1025407019429\":1509788624270,\"1022325150184\":1478686417288,\"1025407019453\":1509788624208,\"1020073957279\":1465470268310,\"1025407019443\":1509788624228,\"1022490691459\":1478943089490,\"1025407019445\":1509788624199,\"1005501008397\":1478686804061,\"1023162576819\":1509788624977,\"1025445009350\":1509788624368,\"1005501008399\":1478686804061,\"1020928156294\":1478686417228,\"1005501008392\":1478686804061,\"1005501008395\":1478686804061,\"1005501008394\":1478686804061,\"1019724544724\":1509788625077,\"1019724544725\":1509788625076,\"1005501008390\":1478686804061,\"1016301582028\":1480585069066,\"1025883835891\":1509788667402,\"1019724544722\":1509788625077,\"1023162576828\":1509788624977,\"1021464216222\":1478686417108,\"1005501008412\":1478686804061,\"1021464216221\":1478686417108,\"1005501008409\":1478686804061,\"1019724544712\":1509788624354,\"1005501008408\":1478686804061,\"1018271875875\":1509788624286,\"1005501008411\":1478686804061,\"1005501008404\":1478686804061,\"1019724544709\":1509788625077,\"758643533\":1444487341748,\"1005501008406\":1478686804061,\"1005501008401\":1478686804061,\"1024341158383\":1509788624536,\"1021596601719\":1478686416987,\"1024341158382\":1509788624536,\"516540490\":1478686804033,\"1022030848928\":1509788624466,\"1025732051969\":1509788624942,\"1156420192\":1444487341721,\"1024341158147\":1509788624536,\"1024341158146\":1509788624536,\"1022208366113\":1478686804041,\"1021791908341\":1478686417009,\"1022208366112\":1478686804041,\"1024055949321\":1509788624928,\"1021592931813\":1478686416972,\"1022208366107\":1478686804040,\"1024341158203\":1509788624536,\"1025628772987\":1509788625022,\"1022208366106\":1478686804040,\"1022208366111\":1478686804040,\"1019889295458\":1509788625080,\"1022208366110\":1478686804040,\"1022208366109\":1478686804040,\"1022208366108\":1478686804040,\"1024341158204\":1509788624536,\"1022435646397\":1478686417294,\"1024912095190\":1509788624926,\"1025792476113\":1509788624418,\"1025792476112\":1509788624418,\"1025796800621\":1509788624616,\"1025792476114\":1509788624418,\"1025796800617\":1509788624822,\"4998823733\":1509788667393,\"1025796800615\":1509788624827,\"1022459763070\":1478686417217,\"1022260925791\":1478686417014,\"1025792476107\":1509788624418,\"1024967406308\":1509788624937,\"1025792476109\":1509788624418,\"1025792476108\":1509788624418,\"1023328359727\":1509788624254,\"1025792476111\":1509788624418,\"1021075483365\":1465470268250,\"1025792476110\":1509788624418,\"1004588314664\":1444487341763,\"1019272595311\":1478686804021,\"1021465264662\":1478686417300,\"1022367358930\":1478686417204,\"1024341158245\":1509788625136,\"1014713128838\":1480585069072,\"1021888248670\":1478686417054,\"516540468\":1478686804033,\"1024936211686\":1509788625006,\"1021757829736\":1478686417127,\"1014803304726\":1478686804051,\"1021757829735\":1478686417127,\"1014803304728\":1478686804051,\"1025513689734\":1509788624507,\"1021757829732\":1478686417127,\"1014803304730\":1478686804051,\"1021723227285\":1509788624403,\"1025513689732\":1509788624507,\"1025513689731\":1509788624441,\"1014803304732\":1478686804051,\"1025513689730\":1509788624441,\"1014803304735\":1478686804051,\"1025513689729\":1509788624423,\"1014803304734\":1478686804051,\"1023364928179\":1509788624225,\"1023364928178\":1509788624225,\"1023364928181\":1509788624225,\"1023364928180\":1509788624225,\"1011593728092\":1478686417220,\"150855652\":1444487341751,\"1023364928185\":1509788624225,\"1021602892682\":1478686804046,\"1725673976\":1444487341705,\"1021103925580\":1478686417095,\"1024341158075\":1509788624536,\"1024341158074\":1509788624536,\"1021606431673\":1509788624815,\"1025445009032\":1509788624369,\"1014803304737\":1478686804051,\"1022204303297\":1509788624920,\"1022204303296\":1509788624920,\"1014803304739\":1478686804051,\"1021716149464\":1509788624557,\"1022204303299\":1509788624920,\"1021716149465\":1509788624557,\"1022204303301\":1509788624920,\"1022600921113\":1509788625062,\"1021716149468\":1509788624557,\"1022204303303\":1509788624920,\"1022204303302\":1509788624920,\"1021723227299\":1509788624395,\"1021716149463\":1509788624557,\"1021758091860\":1509788624395,\"1019767535948\":1509788624316,\"1210031965\":1444487341725,\"1022204303284\":1509788624920,\"1022204303287\":1509788624920,\"1024341158100\":1509788624535,\"1022204303286\":1509788624920,\"1022204303289\":1509788624920,\"1024341158105\":1509788624535,\"1022204303291\":1509788624920,\"1022204303290\":1509788624920,\"1021032885740\":1478686417091,\"1022204303292\":1509788624920,\"1022204303295\":1509788624920,\"1022204303294\":1509788624920,\"1022328164413\":1478686417015,\"1025732052447\":1509788624942,\"1013631669905\":1480585069072,\"1024341158128\":1509788624536,\"1024341158132\":1509788624536,\"1020073957024\":1465470268309,\"1024794381807\":1509788624470,\"1024794381806\":1509788624470,\"1024794381804\":1509788624470,\"1024794381802\":1509788624470,\"1025069383041\":1509788667497,\"1024794381796\":1509788624470,\"1024794381795\":1509788624470,\"4980211526\":1509788624157,\"1024341157894\":1509788624615,\"1024341157897\":1509788624615,\"1210032000\":1444487341740,\"1024794381808\":1509788624470,\"1021567896956\":1509788624456,\"1024055949616\":1509788624928,\"1006548913587\":1478686804028,\"1021653485580\":1478686417120,\"4968546191\":1509788624157,\"1023186955764\":1509788625080,\"1022253061191\":1478686417284,\"1022253061190\":1478686417284,\"1024794381789\":1509788624470,\"1019767929278\":1509788625077,\"1024985494206\":1509788624279,\"1019767929276\":1509788625077,\"1021500129654\":1478686417007,\"1025890913521\":1509788667456,\"1019767929289\":1509788625078,\"1019767929294\":1509788624354,\"1009230491124\":1478686804030,\"1024540630082\":1509788667549,\"1024341157962\":1509788624536,\"1025890913519\":1509788667456,\"1020294158709\":1465470268294,\"1025890913518\":1509788667455,\"1025732052309\":1509788624942,\"1025890913517\":1509788667456,\"1024341157964\":1509788624536,\"1025890913516\":1509788667456,\"1022432107199\":1478686417212,\"1025042382405\":1509788624498,\"1021997688006\":1478686417156,\"1021989430362\":1478686417057,\"1024341158005\":1509788624518,\"1020835887502\":1478686416998,\"1023364928079\":1509788624862,\"1022489904699\":1478943089254,\"1023364928083\":1509788624862,\"1018236093573\":1478686804046,\"1024341157986\":1509788624536,\"1023364928082\":1509788624862,\"1021242053082\":1478686417100,\"1025513689725\":1509788624466,\"1025513689724\":1509788624466,\"1024341157984\":1509788624536,\"1024688210736\":1509788625213,\"1023364928085\":1509788624862,\"1025513689720\":1509788624511,\"1023364928084\":1509788624862,\"168943080\":1444487341755,\"1014713128584\":1480585069072,\"1025513689715\":1509788624511,\"1022416247763\":1509788625016,\"1025630344379\":1509788624293,\"1871165318\":1444487341718,\"1025630344377\":1509788624293,\"1025630344376\":1509788624293,\"1025630344383\":1509788624293,\"1000456271674\":1478686804064,\"1004342415255\":1444487341756,\"1025069380101\":1509788667497,\"1002035713282\":1478686417023,\"1871165332\":1444487341749,\"1021847745063\":1509788624446,\"1021847745066\":1509788624446,\"1021847745064\":1509788624446,\"1021847745065\":1509788624446,\"1022759008737\":1509788625056,\"1025907295257\":1509788667465,\"1022646927948\":1480585069148,\"1025907295258\":1509788667462,\"1022002539729\":1478686417157,\"1021274951792\":1478686417101,\"1021274951793\":1478686417101,\"1022646927944\":1480585069148,\"1022169786068\":1478686417186,\"1025295736997\":1509788624945,\"1022646927940\":1480585069148,\"1012084735030\":1478686804069,\"1025689065218\":1509788624335,\"1022472210626\":1480585069122,\"1024055948974\":1509788624928,\"1022472210617\":1480585069122,\"1022472210616\":1480585069122,\"1022646927918\":1480585069148,\"1023820806358\":1491634246535,\"1022472210619\":1480585069122,\"1022472210618\":1480585069122,\"1022646927916\":1480585069148,\"1022472210621\":1480585069122,\"1022472210620\":1480585069122,\"1022646927912\":1480585069148,\"1022472210609\":1480585069122,\"1022472210608\":1480585069122,\"1009043715857\":1478686804030,\"1022472210611\":1480585069122,\"1022646927909\":1480585069148,\"1022472210610\":1480585069122,\"1022472210613\":1480585069122,\"1022472210612\":1480585069122,\"1022472210615\":1480585069122,\"1021390427967\":1478686417042,\"1022472210614\":1480585069122,\"1022646927904\":1480585069148,\"1022646927935\":1480585069148,\"1022472210600\":1480585069122,\"1022472210603\":1480585069122,\"1022472210602\":1480585069122,\"1022472210605\":1480585069122,\"1022472210604\":1480585069122,\"1022472210607\":1480585069122,\"1022646927929\":1480585069148,\"1022472210606\":1480585069122,\"1022646927925\":1480585069148,\"1022472210594\":1480585069121,\"1022472210597\":1480585069121,\"1024938310566\":1509788667503,\"1022472210599\":1480585069122,\"1022646927921\":1480585069148,\"1019596225560\":1509788624946,\"1022472210598\":1480585069121,\"1022472210585\":1480585069121,\"1021847745105\":1509788624220,\"1022646927883\":1480585069148,\"1024341157878\":1509788624535,\"1024341157877\":1509788624535,\"1022472210590\":1480585069121,\"1022646927879\":1480585069148,\"1022046187060\":1478686804027,\"1022646927876\":1480585069148,\"1022646927873\":1480585069148,\"1022051823508\":1478686417269,\"1017286689694\":1509788624928,\"1020944805266\":1478686417000,\"1022015253571\":1478686417160,\"1021961644338\":1478686417262,\"1022646927897\":1480585069148,\"1021847745098\":1509788624220,\"1019612609841\":1509788625079,\"1022646927893\":1480585069148,\"1016301713629\":1480585069066,\"1021847745102\":1509788624220,\"1022957057135\":1509788624406,\"1016301713628\":1480585069066,\"1022051823515\":1478686417269,\"1022646927888\":1480585069148,\"1021847745101\":1509788624220,\"1022956926101\":1509788624446,\"1023286810827\":1509788624536,\"1023485777134\":1509788624586,\"1022956926097\":1509788624446,\"1023485777131\":1509788624586,\"1022956926096\":1509788624446,\"1022435644801\":1478686417294,\"1023485777128\":1509788624586,\"1023485777127\":1509788624586,\"1023924616911\":1509788624961,\"1023485777125\":1509788624586,\"1023485777123\":1509788624586,\"1022051823467\":1478686417269,\"1022051823476\":1478686417269,\"1022051823478\":1478686417269,\"1022051823473\":1478686417269,\"1023485777145\":1509788624586,\"1018490124999\":1478686804066,\"1022543252522\":1509788625075,\"1022956926092\":1509788624446,\"1022956926095\":1509788624446,\"1023485777139\":1509788624586,\"1021119915828\":1478686417233,\"1022646928073\":1480585069149,\"1021270102070\":1478686804027,\"1022460155678\":1478686417298,\"1023485777118\":1509788624586,\"1022461990689\":1509788624586,\"1021921802001\":1509788624466,\"1022646928085\":1480585069149,\"1023485777109\":1509788624586,\"1022699357684\":1509788624399,\"1023485777108\":1509788624586,\"1021581525840\":1509788624397,\"1023485777107\":1509788624586,\"1022646928081\":1480585069149,\"1022646928046\":1480585069149,\"1022646928043\":1480585069148,\"1021254246231\":1478686417237,\"1022646928041\":1480585069148,\"1022646928037\":1480585069148,\"4941413965\":1509788624157,\"1021847745278\":1509788624557,\"1021847745279\":1509788624557,\"1021847745277\":1509788624557,\"1023994999524\":1491634246532,\"1022646928060\":1480585069149,\"1022469461975\":1478686417073,\"1022646928058\":1480585069149,\"1023994999522\":1491634246532,\"658898845\":1444487341699,\"1022646928055\":1480585069149,\"1022982747827\":1509788624175,\"1025593250345\":1509788624931,\"1022646928050\":1480585069149,\"1022646928049\":1480585069149,\"1879029533\":1478686804029,\"1022646928013\":1480585069148,\"1022646928011\":1480585069148,\"1022646928009\":1480585069148,\"1724497454\":1444487341723,\"1022646928008\":1480585069148,\"1022646928004\":1480585069148,\"1022646928001\":1480585069148,\"1022646928031\":1480585069148,\"1022646928029\":1480585069148,\"1022646928025\":1480585069148,\"1022646928017\":1480585069148,\"1022472210937\":1480585069124,\"1022646928239\":1480585069149,\"1022472210936\":1480585069124,\"1022472210939\":1480585069124,\"1022646928237\":1480585069149,\"1023485777260\":1509788624905,\"1021550592192\":1478686804029,\"1022472210941\":1480585069124,\"1022472210940\":1480585069124,\"1023485777258\":1509788624905,\"1022472210943\":1480585069124,\"1022646928233\":1480585069149,\"1022472210942\":1480585069124,\"1025445009583\":1509788624369,\"1022472210928\":1480585069124,\"1023485777254\":1509788624905,\"1022472210931\":1480585069124,\"1022646928229\":1480585069149,\"1022472210930\":1480585069124,\"1022472210933\":1480585069124,\"1023485777249\":1509788624905,\"1022646928224\":1480585069149,\"1022646928253\":1480585069149,\"1023485777277\":1509788624905,\"1022472210922\":1480585069124,\"1022472210925\":1480585069124,\"1022472210924\":1480585069124,\"1023485777274\":1509788624905,\"1022472210927\":1480585069124,\"1022646928249\":1480585069149,\"1022472210926\":1480585069124,\"1022472210913\":1480585069124,\"1023485777271\":1509788624905,\"1022472210914\":1480585069124,\"1023485777268\":1509788624905,\"1022472210917\":1480585069124,\"1022472210919\":1480585069124,\"1023485777265\":1509788624905,\"1022472210918\":1480585069124,\"1022646928204\":1480585069149,\"1025295737259\":1509788624945,\"1022646928199\":1480585069149,\"1020657629741\":1478686804050,\"1015213033130\":1480585069070,\"1021567239162\":1509788624861,\"1023485777247\":1509788624905,\"1021567239163\":1509788624861,\"1021847745280\":1509788624557,\"1021567239160\":1509788624861,\"1021567239161\":1509788624861,\"1023485777244\":1509788624905,\"1023485777241\":1509788624905,\"1022646928216\":1480585069149,\"1012835879019\":1478686417224,\"1022472210883\":1480585069124,\"1022472210882\":1480585069124,\"1022646928209\":1480585069149,\"1022472210872\":1480585069123,\"1022472210875\":1480585069123,\"1022472210874\":1480585069123,\"1022646928172\":1480585069149,\"1022472210877\":1480585069123,\"1021921933026\":1509788624465,\"1022472210879\":1480585069124,\"1022472210865\":1480585069123,\"1022472210864\":1480585069123,\"1022646928166\":1480585069149,\"1022472210867\":1480585069123,\"1022472210866\":1480585069123,\"1022646928164\":1480585069149,\"1022472210868\":1480585069123,\"1023485777185\":1509788624586,\"1022472210870\":1480585069123,\"1022472210859\":1480585069123,\"1022472210861\":1480585069123,\"1022472210863\":1480585069123,\"1019956143012\":1509788625076,\"1022646928184\":1480585069149,\"1022472210849\":1480585069123,\"1022472210850\":1480585069123,\"1022472210855\":1480585069123,\"1022472210841\":1480585069123,\"1022472210840\":1480585069123,\"4980208055\":1509788624162,\"1025007386300\":1509788667506,\"4673228776\":1478943089213,\"1025007386303\":1509788667506,\"1022472210842\":1480585069123,\"1019956142993\":1509788625077,\"1025007386302\":1509788667506,\"1022472210845\":1480585069123,\"1023485777163\":1509788624586,\"1025007386297\":1509788667506,\"1025007386296\":1509788667506,\"1022472210847\":1480585069123,\"1022472210846\":1480585069123,\"1025007386298\":1509788667506,\"1025007386293\":1509788667506,\"1022472210832\":1480585069123,\"1025512905938\":1509788624341,\"1021994150430\":1478686417156,\"1022472210835\":1480585069123,\"1019956143001\":1509788625076,\"1025007386294\":1509788667506,\"1022472210839\":1480585069123,\"1023485777153\":1509788624586,\"1022472210838\":1480585069123,\"1008629649040\":1478686804030,\"1022472210816\":1480585069123,\"1023485777173\":1509788624586,\"1023485777170\":1509788624586,\"1083414802\":1444487341742,\"1019148997484\":1509788625078,\"1022472210810\":1480585069123,\"1022472210815\":1480585069123,\"1022472210801\":1480585069123,\"1020938251725\":1478686417084,\"1022472210800\":1480585069123,\"1022472210802\":1480585069123,\"1025556029060\":1509788624341,\"1023783569185\":1491634246535,\"1021832671364\":1478686804035,\"1022472210793\":1480585069123,\"1021794008790\":1509788624394,\"1022389113436\":1478686417205,\"1021832671365\":1478686804035,\"1022472210792\":1480585069123,\"1022646928381\":1480585069149,\"1021832671367\":1478686804035,\"1022472210794\":1480585069123,\"1022472210797\":1480585069123,\"1022472210796\":1480585069123,\"1022389113435\":1478686417205,\"1022472210799\":1480585069123,\"1022646928376\":1480585069149,\"1022472210785\":1480585069123,\"1025900348699\":1509788667463,\"1022472210784\":1480585069123,\"1025900348698\":1509788667461,\"1022472210787\":1480585069123,\"1022646928373\":1480585069149,\"1022472210786\":1480585069123,\"113368925\":1444487341703,\"1022472210789\":1480585069123,\"1025900348703\":1509788667457,\"1021832671369\":1478686804035,\"1021832671371\":1478686804035,\"1022472210790\":1480585069123,\"1022646928368\":1480585069149,\"1025900348700\":1509788667462,\"1022472210776\":1480585069123,\"1022472210779\":1480585069123,\"1023121420161\":1509788624957,\"1022472210782\":1480585069123,\"1023572150510\":1509788624974,\"1012352118176\":1478686417074,\"1022472210769\":1480585069123,\"1022472210768\":1480585069123,\"1022472210771\":1480585069123,\"1022472210770\":1480585069123,\"1022472210773\":1480585069123,\"1022472210772\":1480585069123,\"1022472210774\":1480585069123,\"1021940541754\":1478686416973,\"1022472210754\":1480585069123,\"1023939952323\":1509788667538,\"1012625906718\":1478686804049,\"1022472210745\":1480585069123,\"1022472210744\":1480585069123,\"1022472210747\":1480585069123,\"1025987786895\":1514456869767,\"1021487418443\":1478686416985,\"1022472210750\":1480585069123,\"1025987786890\":1514456869767,\"1022472210736\":1480585069123,\"1022472210741\":1480585069123,\"1022472210742\":1480585069123,\"1022165591272\":1478686417278,\"1022472210720\":1480585069122,\"1022472210723\":1480585069122,\"1025987786903\":1514456869767,\"1022472210722\":1480585069122,\"1025987786897\":1514456869767,\"1022472210724\":1480585069123,\"1025987786896\":1514456869767,\"1022472210713\":1480585069122,\"1022472210712\":1480585069122,\"1022472210715\":1480585069122,\"1022472210714\":1480585069122,\"1022646928268\":1480585069149,\"1023485777291\":1509788624905,\"1022472210719\":1480585069122,\"1021390427799\":1478686417042,\"1022222653489\":1478686417192,\"1022472210705\":1480585069122,\"1023485777287\":1509788624905,\"1022646928262\":1480585069149,\"1021286879350\":1478686417237,\"1023485777285\":1509788624905,\"1022472210706\":1480585069122,\"1022472210709\":1480585069122,\"1022472210708\":1480585069122,\"1022646928257\":1480585069149,\"1023485777281\":1509788624905,\"1021286879347\":1478686417237,\"1022472210710\":1480585069122,\"1021792829060\":1478686417052,\"1019472479318\":1509788624368,\"1019472479319\":1509788624368,\"1022472210699\":1480585069122,\"1019472479316\":1509788624368,\"1022472210698\":1480585069122,\"1019472479317\":1509788624368,\"1022472210701\":1480585069122,\"1022472210700\":1480585069122,\"1022472210703\":1480585069122,\"1022472210702\":1480585069122,\"1022646928279\":1480585069149,\"1022646928276\":1480585069149,\"1012172944162\":1478686804028,\"1022472210695\":1480585069122,\"1019472479320\":1509788624368,\"1022646928272\":1480585069149,\"1023485777296\":1509788624905,\"1022904496950\":1509788624482,\"1025791692574\":1509788624507,\"1025791692570\":1509788624441,\"1025796803750\":1509788624523,\"1021993625974\":1478686417011,\"1025796803748\":1509788624537,\"1025796803746\":1509788624540,\"1022904496932\":1509788624482,\"1025791692559\":1509788624466,\"1022904496929\":1509788624482,\"1025791692553\":1509788624511,\"1025791692555\":1509788624466,\"1022904496941\":1509788624482,\"1022904496943\":1509788624482,\"1025791692551\":1509788624511,\"1022929007010\":1509788625052,\"1009954979060\":1491634246524,\"1022400254213\":1478686417207,\"1008897702961\":1478686804034,\"1021843681380\":1478686417053,\"1025401250923\":1509788624377,\"1025401250922\":1509788624377,\"1025401250927\":1509788624377,\"1025401250926\":1509788624377,\"1022904496920\":1509788624482,\"1025401250925\":1509788624377,\"1022904496923\":1509788624482,\"1025401250924\":1509788624377,\"1025401250931\":1509788624377,\"1025401250930\":1509788624377,\"1022904496900\":1509788624482,\"1025401250929\":1509788624377,\"1021886937067\":1478686804027,\"1025401250928\":1509788624377,\"1022904496911\":1509788624482,\"1023485777455\":1509788624251,\"1023485777453\":1509788624251,\"1023485777452\":1509788624251,\"1025791692638\":1509788624423,\"1023485777451\":1509788624251,\"1025791692632\":1509788624466,\"1020657629509\":1478686804050,\"1025791692634\":1509788624466,\"1022472211121\":1480585069126,\"1023485777447\":1509788624251,\"1025791692629\":1509788624511,\"1022472211120\":1480585069126,\"1023485777446\":1509788624251,\"1951378949\":1444487341746,\"1023485777444\":1509788624251,\"1025791692630\":1509788624511,\"1024786645166\":1509788624512,\"1020978752947\":1478686417087,\"1023485777441\":1509788624251,\"1021345470029\":1465470268225,\"1022472211113\":1480585069126,\"1022472211112\":1480585069126,\"1022472211117\":1480585069126,\"1023995654239\":1491634246530,\"1022472211116\":1480585069126,\"1023835880420\":1491634246504,\"1022472211119\":1480585069126,\"1013029996535\":1478686804066,\"1022472211118\":1480585069126,\"1022199670115\":1509788624933,\"1021782998454\":1509788624395,\"1022472211104\":1480585069126,\"1022472211107\":1480585069126,\"1022472211106\":1480585069126,\"1022472211109\":1480585069126,\"1022904497001\":1509788624482,\"1022472211108\":1480585069126,\"1023485777458\":1509788624251,\"1022472211111\":1480585069126,\"1022904497003\":1509788624482,\"1022472211110\":1480585069126,\"1023485777456\":1509788624251,\"1022904496981\":1509788624482,\"1022472211096\":1480585069125,\"1023485777422\":1509788624252,\"1022472211099\":1480585069125,\"1021968591004\":1509788624355,\"1022472211101\":1480585069125,\"1023485777419\":1509788624251,\"1021968591002\":1509788624355,\"1022904496977\":1509788624482,\"1021968591003\":1509788624355,\"1022472211103\":1480585069126,\"1022472211102\":1480585069125,\"1021968591001\":1509788624355,\"1022472211089\":1480585069125,\"1022472211088\":1480585069125,\"1022472211091\":1480585069125,\"1023995654241\":1491634246532,\"1022472211090\":1480585069125,\"1022904496990\":1509788624482,\"1022472211095\":1480585069125,\"1022904496987\":1509788624482,\"1022904496986\":1509788624482,\"1023195603380\":1509788625043,\"1023485777438\":1509788624251,\"1022904496964\":1509788624482,\"1023485777436\":1509788624251,\"1025607274600\":1509788624823,\"1021951945612\":1478686417261,\"1022472211085\":1480585069125,\"1025791692649\":1509788624507,\"1025607274607\":1509788624799,\"1021951945613\":1478686417261,\"1022472211084\":1480585069125,\"1022472211087\":1480585069125,\"1023485777433\":1509788624251,\"1021951945615\":1478686417261,\"1022472211086\":1480585069125,\"1023485777431\":1509788624251,\"1025791692644\":1509788624507,\"1025791692647\":1509788624507,\"1025791692641\":1509788624441,\"1025607274599\":1509788624833,\"1025607274598\":1509788624829,\"1025791692643\":1509788624441,\"1023485777424\":1509788624252,\"1022472211064\":1480585069125,\"1022904497078\":1509788625197,\"1021951945597\":1478686417261,\"1022149338803\":1478686417277,\"1022472211057\":1480585069125,\"1022472211059\":1480585069125,\"1022472211058\":1480585069125,\"1022904497086\":1509788625197,\"1022472211061\":1480585069125,\"557054910\":1444487341738,\"1022472211060\":1480585069125,\"1022472211062\":1480585069125,\"1022472211049\":1480585069125,\"1022472211048\":1480585069125,\"1022472211050\":1480585069125,\"1022472211053\":1480585069125,\"1020805740219\":1478686417030,\"1022472211055\":1480585069125,\"1021951945583\":1478686417261,\"1022472211041\":1480585069125,\"1022472211040\":1480585069125,\"1022472211043\":1480585069125,\"1022472211045\":1480585069125,\"1022472211044\":1480585069125,\"1022904497064\":1509788625196,\"1022472211033\":1480585069125,\"1024017938038\":1509788624517,\"1024752566860\":1509788667502,\"1022472211035\":1480585069125,\"1022472211034\":1480585069125,\"1022472211037\":1480585069125,\"1022472211036\":1480585069125,\"1022472211039\":1480585069125,\"1022472211025\":1480585069125,\"1024752566853\":1509788667502,\"1022472211027\":1480585069125,\"1023397829895\":1509788625039,\"1022472211026\":1480585069125,\"1020984913200\":1478686804039,\"1022472211029\":1480585069125,\"1021390427613\":1478686417042,\"1024752566848\":1509788667502,\"1022472211031\":1480585069125,\"1022472211030\":1480585069125,\"1025714752263\":1509788624822,\"1025714752262\":1509788624832,\"1025714752261\":1509788624828,\"1020167412973\":1509788624389,\"1017286689112\":1509788624939,\"1025818693081\":1509788667843,\"1018476624827\":1478686804029,\"1025818693080\":1509788667844,\"1012905217932\":1478686417018,\"1025818693084\":1509788667843,\"1025714752268\":1509788624745,\"1022472211001\":1480585069124,\"1022472211000\":1480585069124,\"1020264404563\":1509788624971,\"1022472211002\":1480585069124,\"1022472211004\":1480585069124,\"1022472211007\":1480585069125,\"1010010157926\":1491634246520,\"1022472210993\":1480585069124,\"1010010157928\":1491634246521,\"1022472210992\":1480585069124,\"1010010157929\":1491634246521,\"1022904497151\":1509788625197,\"1020657629641\":1478686804050,\"1022472210994\":1480585069124,\"1022472210997\":1480585069124,\"1022472210996\":1480585069124,\"1022904497144\":1509788625197,\"1021304311896\":1478686417004,\"1022472210999\":1480585069124,\"1022904497147\":1509788625197,\"1022472210998\":1480585069124,\"1022472210985\":1480585069124,\"1024752566845\":1509788667502,\"1022472210984\":1480585069124,\"1021656368456\":1509788624396,\"1022904497127\":1509788625197,\"1022472210986\":1480585069124,\"1022472210989\":1480585069124,\"1022472210988\":1480585069124,\"1022472210991\":1480585069124,\"1022472210990\":1480585069124,\"1022472210977\":1480585069124,\"1022472210976\":1480585069124,\"1020934581830\":1478686417033,\"1021898995674\":1478686417054,\"1022472210979\":1480585069124,\"1022904497135\":1509788625197,\"1022472210978\":1480585069124,\"1022472210980\":1480585069124,\"1022472210983\":1480585069124,\"1022472210982\":1480585069124,\"1022904497108\":1509788625196,\"1022472210973\":1480585069124,\"1023927106757\":1491634246530,\"1022472210972\":1480585069124,\"1022472210974\":1480585069124,\"1022904497113\":1509788625197,\"1021666343436\":1478686417248,\"1019008097152\":1509788624301,\"1022472210952\":1480585069124,\"1025585255354\":1509788624336,\"1022904497094\":1509788625197,\"370265317\":1491634246519,\"1022065716677\":1478686417271,\"1022904497088\":1509788625197,\"1022904497090\":1509788625197,\"1022472210945\":1480585069124,\"1022472210944\":1480585069124,\"1022472210946\":1480585069124,\"1022472210949\":1480585069124,\"1025585255351\":1509788625019,\"1022904497097\":1509788625197,\"1022472210948\":1480585069124,\"1022472210951\":1480585069124,\"1022472210950\":1480585069124,\"1022549282624\":1509788624427,\"1019195528999\":1478686804054,\"1020657629192\":1478686804065,\"1024055948697\":1509788624928,\"1022155892417\":1509788624959,\"1021425027668\":1509788624978,\"1020754752072\":1478686417076,\"1022220688070\":1478686804049,\"1025485379694\":1509788624360,\"1025485379693\":1509788624360,\"1025485379692\":1509788624360,\"1025485379691\":1509788624360,\"1025485379690\":1509788624361,\"1025485379689\":1509788624361,\"1025485379688\":1509788624361,\"1020984913060\":1478686804022,\"1025485379687\":1509788624360,\"1025485379686\":1509788624360,\"1025485379685\":1509788624360,\"1025485379684\":1509788624361,\"1010769431847\":1478950494939,\"1025784483368\":1509788624349,\"1019766093153\":1509788624315,\"1020657629256\":1478686804050,\"1022549282572\":1509788624434,\"1022452815180\":1509788624525,\"1022455305385\":1478686417297,\"1025010924755\":1509788624332,\"113368476\":1444487341703,\"1022452815207\":1509788624525,\"1022452815208\":1509788624525,\"1021982484833\":1478686417057,\"1024529748259\":1509788624538,\"1017286688919\":1509788624939,\"1021517696167\":1509788624401,\"1009965071860\":1491634246523,\"1020657629319\":1478686804050,\"1022096384724\":1478686417181,\"1019398947723\":1480585069073,\"1023946374282\":1491634246531,\"1017505592177\":1478686804016,\"1022646927869\":1480585069148,\"1023946374281\":1491634246517,\"1022646927867\":1480585069148,\"1022646927865\":1480585069148,\"1021974227245\":1509788624463,\"1019455571815\":1478686804021,\"1025331519912\":1509788624467,\"1025331519918\":1509788624467,\"1023483942720\":1509788624947,\"1023958168460\":1509788667535,\"1025331519910\":1509788624467,\"1021254376637\":1478686417237,\"1022904496867\":1509788624482,\"4980208385\":1509788624162,\"1022904496855\":1509788624482,\"1020996051731\":1478686417230,\"1021886019111\":1478686417258,\"1025485379758\":1509788624360,\"1025485379757\":1509788624360,\"1025331519897\":1509788624467,\"1025485379756\":1509788624360,\"1025485379755\":1509788624360,\"1025331519903\":1509788624467,\"1025485379754\":1509788624360,\"1025485379753\":1509788624360,\"1025331519901\":1509788624467,\"1025485379752\":1509788624360,\"1022904496834\":1509788624482,\"1025485379751\":1509788624360,\"1019724674886\":1509788625078,\"1025485379750\":1509788624360,\"1012557355534\":1478686417026,\"1022904496847\":1509788624482,\"1022904496840\":1509788624482,\"1023634148938\":1509788624948,\"1022904497460\":1509788624889,\"1022646929005\":1480585069150,\"1024383737583\":1509788624329,\"1022390032344\":1478686417290,\"1022646929000\":1480585069150,\"1022904497468\":1509788624889,\"1022898075037\":1509788624402,\"1021941722270\":1509788624464,\"1022646928992\":1480585069150,\"1020984912782\":1478686804022,\"1014882415\":1478686804024,\"1022646929018\":1480585069150,\"1022646929016\":1480585069150,\"1022646929015\":1480585069150,\"1022904497451\":1509788624889,\"1021342584846\":1478686417103,\"1021441543781\":1478686417107,\"1022646928970\":1480585069150,\"1024383737550\":1509788624329,\"1021425028458\":1509788624978,\"1016957049729\":1478686804031,\"1022904497414\":1509788624889,\"1022478765217\":1478943089487,\"1022478765216\":1478943089487,\"1022646928986\":1480585069150,\"1022904497421\":1509788624889,\"1022646928980\":1480585069150,\"1021087539551\":1478686416981,\"1022904497416\":1509788624889,\"1022646928976\":1480585069150,\"1022646928942\":1480585069150,\"1022904497521\":1509788624889,\"1022646928938\":1480585069150,\"1022646928931\":1480585069150,\"1022646928954\":1480585069150,\"1019166037938\":1478686804020,\"1005989389587\":1480585069062,\"1022646928909\":1480585069150,\"1018271877428\":1509788624354,\"1021721526236\":1509788624403,\"1022646928900\":1480585069150,\"1022646928898\":1480585069150,\"1284346080\":1509788625020,\"1021646799463\":1509788624195,\"1022904497477\":1509788624889,\"1022646928926\":1480585069150,\"1022887982150\":1509788625018,\"1024383737488\":1509788624329,\"1016543277605\":1478686804021,\"1016543277604\":1478686804034,\"1021603807428\":1478686417246,\"1022904497481\":1509788624889,\"1020895784625\":1478686417079,\"1022646928914\":1480585069150,\"1012910328509\":1478686417026,\"1022904497482\":1509788624889,\"1024688736346\":1509788624427,\"1024984054179\":1509788624924,\"1024984054178\":1509788624924,\"1022646929130\":1480585069150,\"1022904497584\":1509788624889,\"1025172925818\":1509788624922,\"1025172925817\":1509788624922,\"1025172925816\":1509788624922,\"1024984054182\":1509788624924,\"1022646929127\":1480585069150,\"1022262108150\":1478686804065,\"1025172925814\":1509788624922,\"4974834703\":1509788624162,\"1022646929123\":1480585069150,\"1025172925811\":1509788624922,\"1025172925810\":1509788624922,\"1025172925809\":1509788624922,\"1025172925808\":1509788624922,\"1020073958745\":1465470268310,\"1022646929149\":1480585069151,\"1025172925804\":1509788624922,\"1022904497569\":1509788624889,\"1025172925803\":1509788624922,\"1025172925802\":1509788624922,\"1022646929145\":1480585069151,\"1025172925800\":1509788624922,\"1022904497580\":1509788624889,\"1025172925798\":1509788624922,\"1021498559096\":1478686417112,\"1022904497583\":1509788624889,\"1025815808791\":1509788667405,\"1022646929138\":1480585069150,\"1025172925794\":1509788624922,\"1022646929136\":1480585069150,\"1025172925792\":1509788624922,\"1025172925791\":1509788624922,\"1025172925790\":1509788624922,\"1025172925787\":1509788624922,\"833481992\":1478686804064,\"1024383737423\":1509788624329,\"1019299598013\":1509788624281,\"1022646929119\":1480585069150,\"1022904497538\":1509788624889,\"1022904497549\":1509788624889,\"1022646929110\":1480585069150,\"1024984054168\":1509788624924,\"1021594371986\":1478686417048,\"1022646929105\":1480585069150,\"1024984054175\":1509788624924,\"1024577851848\":1509788624925,\"1023133084501\":1509788625152,\"1023133084497\":1509788625152,\"1023133084499\":1509788625152,\"1022904497650\":1509788624889,\"1023133084498\":1509788625152,\"1021602496612\":1509788624408,\"1022904497656\":1509788624889,\"1010057343039\":1491634246534,\"1022083409106\":1478686417178,\"1023133084492\":1509788625152,\"1016957049707\":1478686804034,\"1019166037812\":1478686804020,\"1022904497622\":1509788624889,\"1008744595920\":1478686804019,\"1019025923756\":1509788624324,\"1022904497606\":1509788624889,\"1020741776619\":1478686417028,\"1022904497201\":1509788625196,\"1573880010\":1491634246506,\"1024341156502\":1509788624518,\"1021345075468\":1478686804023,\"1021644702500\":1478686417248,\"1021981962046\":1509788625248,\"1022904497210\":1509788625196,\"1021981962045\":1509788625246,\"1022904497190\":1509788625197,\"1022904497196\":1509788625197,\"1022904497192\":1509788625197,\"1024567628080\":1509788667495,\"1022904497171\":1509788625197,\"1021865571877\":1509788624513,\"1019448493596\":1478686804021,\"1022904497176\":1509788625197,\"1022904497155\":1509788625197,\"1022904497167\":1509788625197,\"1023926450967\":1491634246530,\"1023926450966\":1491634246530,\"1022472211897\":1480585069121,\"1022472211896\":1480585069121,\"1021439840032\":1478686416986,\"1022472211899\":1480585069121,\"1022472211898\":1480585069121,\"1022646929196\":1480585069151,\"1021981962102\":1509788625247,\"1022472211889\":1480585069121,\"1021439840043\":1478686416986,\"1022472211888\":1480585069121,\"1021981962107\":1509788625247,\"1022296971265\":1478686417068,\"1022904497279\":1509788624249,\"1021981962104\":1509788625246,\"1022472211890\":1480585069121,\"1022472211893\":1480585069121,\"1022472211892\":1480585069121,\"1022646929184\":1480585069151,\"1334678237\":1491634246519,\"1022909216669\":1509788624402,\"1021981962083\":1509788625247,\"1022472211883\":1480585069121,\"1022472211882\":1480585069121,\"1022472211884\":1480585069121,\"1022646929210\":1480585069151,\"1022472211887\":1480585069121,\"1016930965620\":1478686804019,\"1022472211886\":1480585069121,\"1022472211873\":1480585069121,\"1022472211875\":1480585069121,\"1022472211874\":1480585069121,\"1022472211877\":1480585069121,\"1022472211876\":1480585069121,\"1022646929202\":1480585069151,\"1021318993640\":1478686417102,\"1022472211879\":1480585069121,\"1025516443653\":1509788624336,\"1021981962067\":1509788625247,\"1025516443655\":1509788624338,\"1025516443654\":1509788624339,\"1021981962071\":1509788625247,\"1022254112401\":1478686417196,\"1022646929159\":1480585069151,\"1022646929157\":1480585069151,\"1022646929155\":1480585069151,\"1021981962077\":1509788625247,\"1021981962050\":1509788625247,\"1021981962051\":1509788625247,\"1014585353313\":1480585069074,\"1021981962049\":1509788625248,\"1022646929179\":1480585069151,\"1021981962054\":1509788625247,\"1021981962055\":1509788625246,\"1021981962052\":1509788625247,\"1022646929176\":1480585069151,\"1021981962053\":1509788625247,\"1024300392601\":1509788624292,\"1021981962059\":1509788625247,\"1021981962057\":1509788625246,\"1022646929171\":1480585069151,\"1021981962063\":1509788625247,\"187684433\":1444487341703,\"1022646929168\":1480585069151,\"1022646929391\":1480585069091,\"1022904497332\":1509788624250,\"1022646929388\":1480585069091,\"1022904497334\":1509788624250,\"1022646929387\":1480585069091,\"1022904497331\":1509788624250,\"1022646929381\":1480585069091,\"1021040224219\":1478686417036,\"1022904497336\":1509788624250,\"1274123903\":1478950494921,\"1022904497338\":1509788624250,\"1021075481003\":1465470268250,\"1022904497316\":1509788624250,\"1022646929404\":1480585069091,\"1022646929401\":1480585069091,\"1022904497314\":1509788624250,\"1019723493684\":1478686804021,\"1022646929399\":1480585069091,\"1024341156363\":1509788625136,\"1020390492535\":1478686804047,\"1022646929398\":1480585069091,\"1022646929393\":1480585069091,\"1020294157065\":1465470268294,\"1022904497302\":1509788624250,\"1022813927736\":1509788625055,\"1022904497299\":1509788624249,\"1022904497309\":1509788624250,\"1022904497308\":1509788624250,\"1022904497305\":1509788624250,\"1022904497307\":1509788624250,\"1007244630320\":1478686804033,\"1022904497285\":1509788624250,\"1022646929373\":1480585069091,\"1022416245146\":1478686804039,\"1022646929370\":1480585069091,\"1022904497280\":1509788624250,\"1022646929369\":1480585069091,\"1022904497283\":1509788624250,\"1021650731636\":1478686417049,\"1024607998515\":1509788667590,\"1022904497295\":1509788624250,\"1022904497289\":1509788624250,\"1024341156399\":1509788625104,\"1024341156398\":1509788625104,\"1022904497291\":1509788624250,\"1021498297126\":1478686417007,\"1021248477707\":1478686417039,\"1022646929323\":1480585069151,\"1022646929321\":1480585069151,\"1022646929319\":1480585069151,\"1024341156442\":1509788625104,\"1022646929317\":1480585069151,\"1022904497407\":1509788624889,\"1022646929316\":1480585069151,\"1024341156440\":1509788625104,\"1022646929315\":1480585069151,\"1021212170716\":1509788624171,\"1022646929313\":1480585069151,\"1022904497403\":1509788624889,\"1022646929312\":1480585069151,\"1274123811\":1478950494921,\"1001689834599\":1478686417018,\"1022646929340\":1480585069151,\"1022646929339\":1480585069151,\"1022646929336\":1480585069151,\"124377779\":1444487341704,\"1025589843167\":1509788624351,\"1024341156424\":1509788624518,\"1011987071511\":1478686804040,\"1022646929294\":1480585069151,\"1024341156465\":1509788625103,\"1022646929291\":1480585069151,\"1022646929289\":1480585069151,\"1023572151471\":1509788624974,\"1024341156468\":1509788625103,\"1022646929285\":1480585069151,\"1022646929282\":1480585069151,\"1009745118329\":1491634246512,\"1024616911596\":1498657040078,\"1022646929311\":1480585069151,\"1022646929309\":1480585069151,\"1024136425044\":1509788624600,\"1022904497345\":1509788624249,\"1020927110887\":1478686417082,\"1022646929306\":1480585069151,\"1011987071549\":1478686804026,\"1022646929304\":1480585069151,\"1022904497346\":1509788624249,\"1018651472205\":1509788625019,\"1020900634490\":1478686417080,\"1022646929299\":1480585069151,\"1020962237191\":1478686417001,\"407618998\":1478950494909,\"1022646929296\":1480585069151,\"1022646928493\":1480585069149,\"1021749574637\":1478686417126,\"1022646928490\":1480585069149,\"1022646928488\":1480585069149,\"1020657630472\":1478686804058,\"1022646928484\":1480585069149,\"1022646928481\":1480585069149,\"1022646928507\":1480585069149,\"1801303367\":1444487341739,\"1024341156239\":1509788624548,\"1022646928497\":1480585069149,\"1025399677019\":1509788624298,\"1024577852241\":1509788624925,\"1022646928454\":1480585069149,\"1021602497180\":1509788624408,\"1025504778758\":1509788624338,\"1024341156258\":1509788624518,\"1025504778757\":1509788624340,\"1022646928476\":1480585069149,\"1021852595696\":1509788624399,\"1021602497179\":1509788624408,\"4981126876\":1509788624160,\"1025278699913\":1509788667580,\"1022646928466\":1480585069149,\"1020294156438\":1465470268293,\"1022646928431\":1480585069149,\"1022827559914\":1509788625054,\"1017022322153\":1478686804016,\"1009959565537\":1480585069071,\"1022646928418\":1480585069149,\"1021627794303\":1478686417119,\"1022646928446\":1480585069149,\"1538885099\":1444487341702,\"1024341156289\":1509788625103,\"1024341156292\":1509788625103,\"1022646928437\":1480585069149,\"1021847745619\":1509788624856,\"1021847745616\":1509788624856,\"1021084656619\":1509788624975,\"1016608156699\":1478686804034,\"1020657630564\":1478686804058,\"1021847745620\":1509788624856,\"1021847745621\":1509788624856,\"1021646798944\":1509788624534,\"1022646928388\":1480585069149,\"1010013697818\":1491634246526,\"1012625906607\":1478686804049,\"1022646928410\":1480585069149,\"1011987071421\":1478686804040,\"1024341156324\":1509788624518,\"1025120891751\":1509788625023,\"1012512415771\":1444487341761,\"1025792608366\":1509788624409,\"1022646928621\":1480585069149,\"1025792608363\":1509788624409,\"1022646928616\":1480585069149,\"1025792608359\":1509788624409,\"1022646928613\":1480585069149,\"1022646928637\":1480585069149,\"1022646928629\":1480585069149,\"1025792608373\":1509788624409,\"1025792608372\":1509788624409,\"1025792608371\":1509788624409,\"1022646928625\":1480585069149,\"1025792608369\":1509788624409,\"1011618633567\":1478686804064,\"1025792608368\":1509788624409,\"1528268214\":1458304307281,\"1019364346011\":1509788624315,\"1528268198\":1458304307281,\"1022646928603\":1480585069149,\"1020294025239\":1465470268281,\"1022422668145\":1478686417293,\"1022646928595\":1480585069149,\"1021865571779\":1509788624433,\"1024341156182\":1509788625103,\"1024577852350\":1509788624925,\"1024341156186\":1509788625103,\"1003492178670\":1478686417220,\"1022344418885\":1478686417202,\"1515291779\":1478950494924,\"1019744596922\":1465470268275,\"1024341156171\":1509788625103,\"1528268236\":1458304307281,\"1021865571804\":1509788624433,\"1024341156172\":1509788625103,\"1021974883450\":1509788624389,\"1024341156215\":1509788625103,\"1022646928519\":1480585069149,\"1025712918342\":1509788624309,\"1022037403690\":1509788625144,\"1021988252991\":1478686417154,\"1022646928514\":1480585069149,\"1024341156220\":1509788625103,\"1023692342991\":1509788624325,\"1021895717794\":1478686417258,\"1022238776375\":1509788624947,\"1022238776379\":1509788624931,\"1022238776377\":1509788624932,\"1022646928749\":1480585069150,\"1022021544656\":1509788624181,\"1021041927485\":1478686417092,\"1022904497725\":1509788624583,\"1025007122632\":1509788667497,\"1024577852028\":1509788624925,\"1022646928766\":1480585069150,\"1012625906380\":1478686804049,\"1020219971105\":1509788625081,\"1022646928761\":1480585069150,\"1024341155979\":1509788625103,\"1022021806795\":1478686417266,\"1024341155978\":1509788625103,\"1022646928757\":1480585069150,\"4981127162\":1509788624160,\"1023845449265\":1491634246520,\"1022646928732\":1480585069150,\"1022646928728\":1480585069150,\"1019193955171\":1478686804020,\"1329696772\":1491634246534,\"1022646928679\":1480585069150,\"1022646928677\":1480585069150,\"1019704358074\":1509788624354,\"1022646928674\":1480585069150,\"1022904497784\":1509788624583,\"1019484668325\":1509788625021,\"1223792574\":1444487341754,\"1022904497764\":1509788624583,\"1016644332288\":1478686804031,\"1022904497774\":1509788624583,\"1022079346460\":1478686417301,\"1024528569627\":1509788624183,\"1223792556\":1444487341739,\"1024528569626\":1509788624183,\"1022904497748\":1509788624583,\"1022646928652\":1480585069150,\"1024528569636\":1509788624183,\"1024528569635\":1509788624183,\"1024341156086\":1509788625103,\"1024528569633\":1509788624183,\"1024341156085\":1509788625103,\"1022646928648\":1480585069149,\"1024528569632\":1509788624183,\"1024577851935\":1509788624925,\"1022646928644\":1480585069149,\"1022904497755\":1509788624583,\"1022262107151\":1478686804050,\"1022646928670\":1480585069150,\"1021041927497\":1478686417092,\"1022646928668\":1480585069150,\"1021041927502\":1478686417092,\"1022646928667\":1480585069150,\"1022646928666\":1480585069150,\"1021137461010\":1478686417233,\"1022904497731\":1509788624584,\"142202625\":1444487341711,\"1022646928663\":1480585069150,\"1022646928660\":1480585069150,\"1022904497845\":1509788624583,\"1021390426353\":1478686417042,\"1020916886543\":1478686417080,\"1021142310847\":1478686417234,\"1021390426355\":1478686417042,\"1022904497841\":1509788624583,\"1021646799247\":1509788624818,\"1021960859387\":1480585069071,\"1022904497854\":1509788624583,\"1021425028812\":1509788624978,\"1022904497848\":1509788624583,\"1022904497850\":1509788624583,\"1022904497829\":1509788624583,\"1021918392424\":1509788624869,\"1022646928893\":1480585069150,\"1022646928891\":1480585069150,\"1021679452077\":1478686417249,\"1022904497826\":1509788624583,\"1022646928887\":1480585069150,\"1022904497839\":1509788624583,\"1024341155855\":1509788625103,\"1022904497832\":1509788624583,\"1024577852136\":1509788624925,\"1024341155852\":1509788625103,\"1022423454310\":1478686417210,\"1021226064535\":1478686417099,\"1022375875867\":1509788624945,\"1024341155903\":1509788625103,\"1024341155901\":1509788625103,\"1021687053847\":1478686417009,\"1024341155872\":1509788624518,\"1020657630388\":1478686804058,\"1022904497795\":1509788624583,\"1020657630389\":1478686804058,\"1022904497794\":1509788624583,\"1022543252227\":1509788625064,\"1022904497802\":1509788624583,\"1022646928812\":1480585069150,\"1024341155926\":1509788625104,\"1021572482396\":1478686417048,\"1022646928809\":1480585069150,\"1024341155925\":1509788625104,\"1022646928807\":1480585069150,\"1018490125723\":1478686804066,\"1022646928804\":1480585069150,\"1020977702944\":1478686417087,\"1022646928800\":1480585069150,\"1022646928826\":1480585069150,\"1021426208388\":1478686417044,\"1021974883657\":1509788624389,\"1022646928823\":1480585069150,\"1022646928821\":1480585069150,\"1022646928817\":1480585069150,\"1022646928783\":1480585069150,\"1020791190761\":1478686417077,\"1022646928777\":1480585069150,\"1022904497860\":1509788624583,\"1022956925924\":1509788624857,\"1022904497857\":1509788624583,\"1022956925921\":1509788624857,\"1024341155943\":1509788625103,\"407619518\":1478950494909,\"1022646928794\":1480585069150,\"1022956925920\":1509788624857,\"1022956925923\":1509788624857,\"1022956925922\":1509788624857,\"1024341155940\":1509788625102,\"1022904497868\":1509788624583,\"1022646928789\":1480585069150,\"1022646928786\":1480585069150,\"1022904497864\":1509788624583,\"1024188066125\":1509788624454,\"1022065715407\":1478686417012,\"1024341155730\":1509788625248,\"1010919128963\":1444487341758,\"1010919128966\":1444487341758,\"1012208061631\":1478686417073,\"1022811948199\":1509788625102,\"1024341155725\":1509788625248,\"478936212\":1444487341749,\"1021825452359\":1509788624995,\"1012689479734\":1478686416995,\"1023751732374\":1509788624926,\"1022021539314\":1509788624181,\"1022021539312\":1509788624180,\"1022428835139\":1478686417294,\"1022811948170\":1509788625102,\"1021402886274\":1478686417043,\"1022811948173\":1509788625102,\"1021047823339\":1478686417092,\"1016400135935\":1480585069068,\"1022451904078\":1478686417296,\"1024341155799\":1509788625104,\"1024341155800\":1509788625104,\"249556620\":1478950494908,\"1021390434085\":1478686417042,\"1021677338630\":1478686417120,\"1024188061397\":1509788624229,\"1024442328333\":1509788624926,\"1020840070728\":1478686417031,\"1008347719349\":1478686804015,\"1009302839204\":1509788625017,\"1023771917586\":1491634246535,\"1022566987040\":1509788624567,\"1021919694779\":1509788624465,\"1022811948230\":1509788625102,\"1022081308838\":1478686417061,\"1022015378608\":1478686417266,\"1022015378613\":1478686417266,\"1021176914569\":1478686416977,\"1022472220791\":1480585069121,\"1025608592247\":1509788624999,\"1022780752390\":1509788624462,\"1022361069839\":1478686417203,\"1023959599306\":1509788624538,\"1022015378606\":1478686417266,\"1025608592248\":1509788624997,\"1022811948057\":1509788625102,\"1017190888709\":1478686804058,\"1017190888708\":1478686804058,\"1022065711003\":1478686417270,\"1022015378589\":1478686417266,\"1022811948052\":1509788625102,\"1025007109999\":1509788667497,\"1021030652521\":1478686417091,\"1022427524406\":1478686417294,\"1015658420652\":1478686804031,\"1022046574228\":1478686417269,\"1021684023601\":1478686417249,\"1020907967220\":1478686417080,\"1021684023602\":1478686417249,\"1022460817221\":1480585069074,\"1021687562621\":1480585069059,\"1022460817219\":1480585069074,\"1021687824754\":1509788624195,\"1022262109108\":1478686804050,\"1022262109107\":1478686804050,\"688245205\":1478950494913,\"4965648169\":1509788624164,\"1021443650290\":1478686417107,\"1022046574216\":1478686417269,\"1083416653\":1444487341723,\"1021912092346\":1509788624451,\"1022811948124\":1509788625102,\"1022811948127\":1509788625102,\"1024341155707\":1509788625103,\"4973119617\":1509788624162,\"1010919128959\":1444487341758,\"1009163507409\":1478686804054,\"1024341155708\":1509788625103,\"1022262108796\":1478686804050,\"1025331518309\":1509788625171,\"1014730826576\":1465470268256,\"1025650666610\":1509788624429,\"1015472295697\":1509788624171,\"1021390433875\":1478686417042,\"1020858945068\":1478686417031,\"154396673\":1444487341748,\"1020257856962\":1465470268311,\"840422179\":1478950494917,\"1021881552187\":1509788624437,\"1024459237212\":1509788625029,\"1021687824512\":1509788624534,\"1021848259382\":1478686417053,\"1022476284411\":1478943089487,\"1022476284412\":1478943089487,\"1024434332844\":1509788624465,\"1022331315731\":1478686417288,\"1022261453351\":1478686417197,\"1024055939011\":1509788624969,\"1022165195893\":1478686417013,\"1021341281567\":1478686417041,\"1024449668166\":1509788624972,\"1021341281565\":1478686417041,\"1022331315712\":1478686417288,\"1021949317473\":1478686417145,\"1021145981060\":1478686417096,\"1024156472806\":1509788667500,\"1022192983787\":1478686417281,\"1020597060041\":1478686804031,\"1024014257557\":1509788667857,\"1024953763217\":1509788624192,\"1022368409741\":1478686417204,\"1022172536659\":1509788624611,\"1018095856218\":1465470268270,\"1018215920386\":1509788624284,\"1022463176428\":1478686417298,\"172223455\":1444487341728,\"1022811948316\":1509788625102,\"4965647958\":1509788624164,\"1007394843702\":1509788624378,\"1022435650751\":1478686417294,\"1022811948292\":1509788625102,\"1021765682389\":1478686417127,\"1022849042343\":1509788624282,\"1025270568900\":1509788625104,\"1884000645\":1509788625017,\"1025521427689\":1509788624431,\"1024936330183\":1509788625006,\"1022311393166\":1478686417302,\"1025896693050\":1509788667465,\"1016558603923\":1478686804024,\"1025896693048\":1509788667461,\"1021250971213\":1478686417236,\"1022424902744\":1478686417070,\"1021672620411\":1509788624396,\"1024520841432\":1509788624990,\"1025429021362\":1509788625126,\"1024281516309\":1509788624932,\"1021925461365\":1478686417141,\"430701450\":1491634246514,\"1020916093331\":1478686417032,\"1024145330454\":1509788625169,\"1025512646546\":1509788624343,\"1022262108497\":1478686804050,\"1024145330449\":1509788625129,\"1024145330444\":1509788625129,\"1024145330443\":1509788625129,\"1024145330442\":1509788625129,\"1024145330440\":1509788625129,\"1022238646524\":1509788624930,\"1024145330435\":1509788625144,\"1023949114061\":1509788667493,\"1022238646522\":1509788624932,\"1017127842593\":1478686804019,\"1010002283120\":1491634246524,\"1018762612826\":1509788624372,\"1004588303493\":1444487341762,\"1025585261317\":1509788624304,\"1021234062583\":1478686417039,\"1024134451600\":1509788625036,\"1023275031880\":1509788624392,\"430701555\":1491634246514,\"1021400265351\":1478686417106,\"1021400265345\":1478686417106,\"1025711354798\":1509788624305,\"1022811948744\":1509788625102,\"1025902198288\":1509788667452,\"1022811948736\":1509788625102,\"1021687825204\":1509788624818,\"1022217937561\":1478686417192,\"1018517767702\":1480585069070,\"1021981561005\":1478686416984,\"1022030190579\":1478686417058,\"1021554932515\":1478686417245,\"1022811948561\":1509788625102,\"1007947959330\":1478686804023,\"1018889361614\":1509788624945,\"1022811948565\":1509788625102,\"845140205\":1491634246514,\"1022019049282\":1478686417161,\"1023995644085\":1491634246532,\"1303359248\":1444487341735,\"1022019049274\":1478686417161,\"1025596401762\":1509788624843,\"430701420\":1491634246514,\"1022811948657\":1509788625102,\"1022262108594\":1478686804050,\"1022811948660\":1509788625102,\"179824743\":1444487341744,\"1023529954590\":1509788624821,\"1021501060108\":1478686417112,\"1022307066884\":1478686417015,\"1021775512741\":1509788624994,\"1021775512736\":1509788624994,\"1021733832219\":1509788624514,\"1015472295126\":1509788624172,\"1021687563087\":1480585069060,\"1020294032815\":1465470268282,\"1019739606751\":1509788624173,\"1025900363654\":1509788667464,\"1022172536272\":1509788624611,\"1012216975158\":1478686804024,\"1025900363658\":1509788667462,\"603046140\":1444487341729,\"1025099517775\":1509788624304,\"1025745825987\":1509788624972,\"1022477726618\":1478943089487,\"1021502633407\":1509788625004,\"1022811948953\":1509788624421,\"1021460557827\":1478686417044,\"1022811948956\":1509788624421,\"1020271882036\":1465470268317,\"1024661746010\":1509788624604,\"1024005212343\":1491634246533,\"1024273258664\":1509788624277,\"118088753\":1444487341725,\"1021943681858\":1478686417144,\"1021951546072\":1478686417145,\"1021501453718\":1478686417244,\"1021877882628\":1478686417053,\"1022472221628\":1480585069121,\"1010002283376\":1491634246524,\"1022811949041\":1509788624421,\"1019862161190\":1509788624283,\"1021985624232\":1478686417264,\"1021328435289\":1478686416978,\"1022811949021\":1509788624421,\"1021197887400\":1464448510787,\"1023932073117\":1491634246530,\"1021974876658\":1509788624453,\"1021396462701\":1478686417006,\"1010378595539\":1509788624380,\"1025720660703\":1509788625007,\"1021560699559\":1509788624401,\"1020906525107\":1478686417080,\"1021859268862\":1509788625080,\"1022811948839\":1509788624420,\"1022811948838\":1509788624420,\"1015496413953\":1478686804028,\"1019748388594\":1509788624324,\"1025720660731\":1509788624345,\"1025720660732\":1509788624346,\"1021127646388\":1478686417095,\"1025429545753\":1509788624437,\"1019166042180\":1478686804020,\"1002491316836\":1478950494935,\"1022811948804\":1509788624420,\"1022811948807\":1509788624420,\"1024145330428\":1509788625166,\"1024145330427\":1509788625166,\"1024145330424\":1509788625244,\"1024145330421\":1509788625246,\"1015599961433\":1465470268264,\"1021352554106\":1478686416978,\"1021687562862\":1480585069059,\"1021425955459\":1478686417007,\"1021971730809\":1478686417149,\"1022262108322\":1478686804050,\"1310436857\":1478686804024,\"1015472295382\":1509788624172,\"1021626367663\":1509788624933,\"1022260928611\":1478686417014,\"1022811948875\":1509788624421,\"1021626367667\":1509788624931,\"1022811948878\":1509788624421,\"1022185119213\":1478686417187,\"1023878727427\":1491634246530,\"1025407146985\":1509788624435,\"1020991722292\":1509788624930,\"1025407146984\":1509788624435,\"1023878727425\":1491634246530,\"1020991722294\":1509788624930,\"1023878727424\":1491634246530,\"1796574994\":1509788624310,\"1020991722301\":1509788624946,\"1025270567431\":1509788625104,\"1020991722296\":1509788624942,\"1020991722297\":1509788624946,\"1020991722298\":1509788624946,\"1020805728289\":1478686417077,\"1022811947180\":1509788624195,\"1022811947183\":1509788624195,\"1020991722286\":1509788624942,\"1025407146952\":1509788624512,\"1025407146954\":1509788624512,\"1019028284953\":1480585069072,\"1025407146956\":1509788624451,\"1025407146948\":1509788624509,\"1021418616200\":1478686417043,\"1022065709855\":1478686417175,\"1025407146968\":1509788624424,\"1025407146973\":1509788624435,\"1022231831833\":1509788624921,\"1022811947137\":1509788624195,\"1025407146960\":1509788624452,\"1022811947140\":1509788624195,\"1021605263544\":1478686417246,\"1003312873136\":1478686804054,\"1012493539833\":1478686417223,\"1003312873137\":1478686804054,\"1021605263554\":1478686417246,\"1012265995130\":1478686417026,\"1022811947233\":1509788624196,\"1003312873134\":1478686804054,\"1022811947231\":1509788624195,\"1020610037144\":1509788624353,\"1020991722308\":1509788624932,\"1020991722309\":1509788624940,\"1021502632662\":1509788625004,\"1025906915401\":1509788667462,\"1022376144589\":1478686417290,\"1010091936321\":1491634246522,\"1021925460971\":1478686417141,\"1022811947056\":1509788624195,\"1023949114490\":1509788667493,\"1019196057777\":1509788624946,\"118088603\":1444487341742,\"1021388204803\":1478686804024,\"1021704734243\":1478686417050,\"1022811947046\":1509788624195,\"1025331519176\":1509788625172,\"1025331519183\":1509788625171,\"1025331519182\":1509788625171,\"1025331519180\":1509788625172,\"1025331519171\":1509788625171,\"1025331519169\":1509788625171,\"1025331519174\":1509788625171,\"1025331519173\":1509788625171,\"1025331519172\":1509788625171,\"1023751731204\":1509788624926,\"1021409047783\":1478686804050,\"1000527695942\":1444487341732,\"1025331519187\":1509788625172,\"1025331519186\":1509788625172,\"1025331519185\":1509788625172,\"1021271944411\":1478686804066,\"1025331519151\":1509788625172,\"1025331519150\":1509788625172,\"1025331519149\":1509788625172,\"1022248216216\":1478686417066,\"1012889891018\":1478686804020,\"1025331519163\":1509788625172,\"1020309498643\":1465470268301,\"1025331519162\":1509788625172,\"1022081703145\":1478686417272,\"1025331519165\":1509788625172,\"1025331519155\":1509788625172,\"1025331519154\":1509788625172,\"1023018783903\":1509788625049,\"1025331519153\":1509788625172,\"1020309498654\":1465470268258,\"1025331519157\":1509788625172,\"1025429021796\":1509788624407,\"1025429021786\":1509788624429,\"1020309498657\":1465470268301,\"1020309498662\":1465470268258,\"1020294031941\":1465470268282,\"840423143\":1478950494917,\"1022248216231\":1478686417066,\"1022248216230\":1478686417066,\"1022930308990\":1509788625073,\"1022248216233\":1478686417066,\"1025214207592\":1509788624936,\"1021527798307\":1509788624912,\"1021527798309\":1509788624912,\"1025214207596\":1509788624936,\"1024663844689\":1509788624417,\"1025214207599\":1509788624936,\"1024663844688\":1509788624417,\"1021527798311\":1509788624912,\"1025214207598\":1509788624936,\"1021527798312\":1509788624912,\"1017230209600\":1478686804065,\"1021527798313\":1509788624912,\"1021527798314\":1509788624912,\"1025214207587\":1509788624936,\"1021527798315\":1509788624912,\"1021627152472\":1478686417300,\"1024663844699\":1509788624417,\"1021527798317\":1509788624912,\"1021527798319\":1509788624912,\"1021527798320\":1509788624912,\"1021527798321\":1509788624912,\"1021527798322\":1509788624912,\"1021527798324\":1509788624912,\"1025214207612\":1509788624936,\"1024663844673\":1509788624417,\"1024663844687\":1509788624417,\"1021527798328\":1509788624912,\"1024663844686\":1509788624417,\"1021527798330\":1509788624912,\"4553566837\":1465469681389,\"1010076207309\":1491634246534,\"1025214207604\":1509788624936,\"1025214207607\":1509788624936,\"1021527798335\":1509788624912,\"1025214207560\":1509788624936,\"1022226195617\":1478686417064,\"1025214207563\":1509788624936,\"1025214207564\":1509788624936,\"1025214207566\":1509788624936,\"1024661616478\":1509788625069,\"1019599749414\":1465470268274,\"430701696\":1491634246514,\"1022811947410\":1509788624196,\"1000038413099\":1478686417021,\"1024661747545\":1509788624906,\"1025214207559\":1509788624936,\"1025214207558\":1509788624936,\"1025214207577\":1509788624936,\"1024663844709\":1509788624417,\"1021311266622\":1465470268205,\"1022811947406\":1509788624196,\"1025214207582\":1509788624936,\"1025214207570\":1509788624936,\"1025214207573\":1509788624936,\"1021943682372\":1478686417144,\"1021527798303\":1509788624912,\"1025214207574\":1509788624969,\"1023926305647\":1491634246528,\"1023949770115\":1509788667501,\"1023926305640\":1491634246528,\"1023949770123\":1509788667502,\"1025901148632\":1509788667789,\"1021026589776\":1509788624932,\"1023949770130\":1509788667502,\"1015150919183\":1480585069068,\"1024663844622\":1509788624417,\"1023949770142\":1509788667501,\"1020770864926\":1478686417029,\"1023949770151\":1509788667502,\"1024735408995\":1509788667507,\"1023926305631\":1491634246530,\"1021925460511\":1478686417141,\"1023926305630\":1491634246530,\"1021990475513\":1478686417155,\"1018335591455\":1478686804054,\"1021619550251\":1478686804050,\"1024983908523\":1509788624924,\"1018674792665\":1478686804024,\"1021750739057\":1509788624403,\"1024535391855\":1509788625027,\"1021258965634\":1478686417101,\"1023949770095\":1509788667501,\"1022811947280\":1509788624196,\"1022811947285\":1509788624196,\"1021258965637\":1478686417101,\"1023949770099\":1509788667501,\"1021581672023\":1478686417114,\"1023949770110\":1509788667502,\"1021083998216\":1478686417002,\"1023949770107\":1509788667502,\"1022428309544\":1478686417302,\"230418553\":1444487341725,\"1004329317279\":1444487341711,\"1021687563381\":1480585069060,\"1023888949675\":1491634246517,\"1022021799943\":1478686417266,\"1825802500\":1478686804033,\"1022811947352\":1509788624196,\"1023751731548\":1509788624926,\"1000038413292\":1478686417021,\"1022975265553\":1509788625018,\"1024469328446\":1509788624522,\"1022811947343\":1509788624196,\"1021409047980\":1478686804050,\"1021731604196\":1478686417124,\"1012037142284\":1478686804019,\"1008601870411\":1478686804030,\"1022239434532\":1478686417065,\"1015472294860\":1509788624172,\"1021473534589\":1509788624398,\"1015868252318\":1465470268260,\"1018311343859\":1478686804031,\"1022055616955\":1478686417173,\"1021365659860\":1478686417104,\"1024944194971\":1509788624406,\"1021365659859\":1478686417104,\"1021365659878\":1478686417104,\"1022331576693\":1478686417068,\"1022468548868\":1478686417303,\"1021365659892\":1478686417104,\"1022238778499\":1509788624935,\"1021406295587\":1509788624406,\"1022238778497\":1509788624947,\"1026232358545\":1514456869770,\"1026232358544\":1514456869770,\"1026232358546\":1514456869769,\"1022535791939\":1480585069131,\"1026232358549\":1514456869769,\"1026232358548\":1514456869768,\"1024653096105\":1509788624177,\"1019125280289\":1509788625079,\"1022038446214\":1509788624899,\"1026232358543\":1514456869770,\"1020251958641\":1478686804021,\"1021428053864\":1478686804026,\"1016832416093\":1478686804058,\"1021714170980\":1509788624404,\"1016301569734\":1480585069066,\"1022647991326\":1509788624978,\"1022172534964\":1478686417186,\"1019197631085\":1509788625086,\"1026223442219\":1514456869766,\"1025913207725\":1509788667818,\"1021982610545\":1478686417152,\"1023958158911\":1509788667535,\"647217384\":1491634246511,\"1022148155985\":1509788624408,\"1023751731912\":1509788624926,\"1022361071389\":1478686417203,\"1023919358002\":1509788624948,\"1021825454063\":1509788624995,\"1021825454070\":1509788624995,\"1021825454068\":1509788624995,\"1021825454064\":1509788624995,\"1023888950000\":1491634246517,\"1021825454078\":1509788624995,\"1022566986698\":1509788624200,\"4965646690\":1509788624162,\"1021852192085\":1509788624394,\"1021825454077\":1509788624995,\"1021825454072\":1509788624995,\"1008036959716\":1478686804018,\"1021465408082\":1478686417045,\"1019852723634\":1509788624285,\"1019852723635\":1509788624285,\"1008036959721\":1478686804018,\"1019852723636\":1509788624285,\"1022566986734\":1509788624230,\"1010741916351\":1509788624276,\"1019612464014\":1509788624312,\"1010741916356\":1509788624276,\"5208527028\":1532526019715,\"1020785020323\":1478686416990,\"1022429621161\":1478686417016,\"1021687564138\":1480585069060,\"5026467139\":1514456869765,\"1019612464019\":1509788624312,\"1021356878739\":1478686417042,\"1023153528505\":1509788624958,\"1022474188349\":1478943089315,\"1019271558994\":1509788624312,\"1022433946577\":1478686417071,\"1020294162519\":1465470268294,\"1864337888\":1491634246534,\"1024222928480\":1509788667495,\"1021733831679\":1509788624513,\"4994616992\":1509788667399,\"1021755458213\":1478686417051,\"1021736453104\":1478686417124,\"1019612856933\":1509788625076,\"1020976124195\":1478686417087,\"1022262109271\":1478686804050,\"1022372867575\":1478686417204,\"1022221346552\":1478686417281,\"1025680156821\":1509788624351,\"1023627735854\":1509788624278,\"1021396199519\":1478686417106,\"5026467028\":1514456869765,\"1022566986269\":1509788625168,\"1019197631307\":1509788625086,\"1024661746977\":1509788624454,\"1022811948000\":1509788625102,\"1007161022665\":1478686804030,\"1022811948003\":1509788625102,\"1023958683396\":1509788625037,\"1021968192956\":1478686804029,\"1021276008266\":1478686416985,\"1017072265659\":1478686804031,\"1024294755128\":1509788625032,\"1012354339486\":1478686804021,\"1023153528619\":1509788624958,\"464125139\":1491634246534,\"1021502894535\":1478686417112,\"1020953842183\":1478686417000,\"185855121\":1444487341722,\"1025538597306\":1509788624311,\"1016863336125\":1478686804015,\"1010091936090\":1491634246528,\"1019971476600\":1480585069076,\"1022016689024\":1509788625067,\"1000527696750\":1444487341731,\"1020940473223\":1478686417084,\"1024198938697\":1509788667888,\"1021091207820\":1478686417094,\"1022384795049\":1478686417290,\"1024576547533\":1509788624462,\"1022566986466\":1509788624827,\"1022228424402\":1478686417065,\"1006580251525\":1478686804025,\"1023549618020\":1509788624817,\"1024486240007\":1509788624334,\"1021049527400\":1478686417036,\"1007313317815\":1478686804033,\"1019859931997\":1509788624322,\"1022002533166\":1478686417157,\"1012883207099\":1478686417074,\"5026466884\":1514456869765,\"1021971862863\":1478686417056,\"4973121421\":1509788624165,\"1022600802501\":1509788624206,\"1021483889198\":1478686417046,\"1021475763122\":1478686417242,\"1022566986429\":1509788624844,\"5026466934\":1514456869765,\"1025538597315\":1509788624300,\"1025538597314\":1509788624300,\"1025538597312\":1509788624282,\"1025310678618\":1509788624294,\"1022069645058\":1478686416979,\"1021483889204\":1478686417046,\"1514651056\":1491634246505,\"1025538597316\":1509788624281,\"1022566986411\":1509788624827,\"1021483889208\":1478686417046,\"1021483889213\":1478686417046,\"1022451509706\":1478686417302,\"1022030191958\":1478686417058,\"1021417437663\":1478686417106,\"1019963871860\":1478686804021,\"1022002404586\":1478686417157,\"1025521429795\":1509788624829,\"1025521429797\":1509788624824,\"1025521429796\":1509788624833,\"1022002404572\":1478686417157,\"1022420051004\":1478686417293,\"1024233411017\":1509788625017,\"1019037068163\":1509788625080,\"123858721\":1444487341727,\"1021938440427\":1478686417143,\"1021938440418\":1478686417143,\"1021938440423\":1478686417143,\"1022081699953\":1478686417178,\"1012493538805\":1478686417223,\"1004329319944\":1444487341711,\"1022420051018\":1478686417293,\"1021926377222\":1478686417010,\"1019760576252\":1465470268315,\"1024926763769\":1509788624530,\"1024926763773\":1509788624530,\"1022365655339\":1478686417204,\"1021075477569\":1465470268250,\"1021234065117\":1478686417039,\"1023173579125\":1509788625083,\"1025627727036\":1509788625022,\"1002029295089\":1478686417024,\"1021687564603\":1480585069060,\"1018991978688\":1509788624392,\"1018991978715\":1509788624391,\"1021782724224\":1509788624395,\"1015835225088\":1478686804065,\"1025512910114\":1509788624341,\"4861577575\":1509788624163,\"1015592361549\":1480585069063,\"1025512910108\":1509788624336,\"1020074486122\":1509788625081,\"1542566723\":1444487341700,\"1019448505221\":1478686804021,\"363199763\":1478686417018,\"1024577856961\":1509788624925,\"1024661748429\":1509788624500,\"1024735411923\":1509788667508,\"1024735411922\":1509788667507,\"1025446979914\":1509788624359,\"1025446979919\":1509788624359,\"1024735411925\":1509788667507,\"1025446979918\":1509788624359,\"1024735411924\":1509788667507,\"1024735411931\":1509788667507,\"1024840529252\":1509788624970,\"1024735411935\":1509788667507,\"1023567444321\":1509788624345,\"1024454389253\":1509788624975,\"1022046183045\":1478686804027,\"1025521429976\":1509788624201,\"1024735411956\":1509788667507,\"1024608003942\":1509788667589,\"1024735411939\":1509788667507,\"1024735411938\":1509788667507,\"1024735411943\":1509788667507,\"1024183082502\":1509788624923,\"1024895699100\":1509788624944,\"1024535913230\":1509788625070,\"1024735411946\":1509788667507,\"1021604738165\":1478686417246,\"1024735411944\":1509788667509,\"970445015\":1491634246519,\"1024262771519\":1509788624938,\"1021929391698\":1478686416981,\"1024608003721\":1509788667589,\"1019166040809\":1478686804020,\"1024403794644\":1509788624419,\"1021353993364\":1465470268228,\"1022291209384\":1478686417286,\"1021353993360\":1465470268227,\"1021353993361\":1465470268227,\"1021353993362\":1465470268228,\"1022044348276\":1478686417059,\"1021353993363\":1465470268228,\"1024735411971\":1509788667507,\"1021618107603\":1478686417117,\"1024735411970\":1509788667507,\"1021618107600\":1478686417117,\"1024735411969\":1509788667507,\"1021353993359\":1465470268227,\"1021618107606\":1478686417117,\"1024735411974\":1509788667507,\"1024735411973\":1509788667507,\"1023054568244\":1509788625048,\"1026227111443\":1514456869768,\"1022181185394\":1478686417187,\"1004588306415\":1444487341762,\"1616873835\":1478686804029,\"1024737377996\":1509788625018,\"2373674053\":1509976385181,\"2373674052\":1509976385181,\"1019852200514\":1509788625080,\"1023994987382\":1491634246532,\"1021326729844\":1465470268214,\"1012265993826\":1478686417025,\"1021502636013\":1509788625004,\"1024403794585\":1509788624819,\"1021326729843\":1465470268214,\"1023994987386\":1491634246532,\"1012684103956\":1478686417074,\"1024403794569\":1509788624193,\"1012111855388\":1478686417025,\"1019028286299\":1480585069073,\"1303356615\":1444487341722,\"1017553159011\":1509788624284,\"1011344314709\":1478686804022,\"1004329320225\":1444487341711,\"1022850224113\":1509788624234,\"1022850224115\":1509788624234,\"1023286815176\":1509788624869,\"1022850224117\":1509788624234,\"1023286815183\":1509788624869,\"1022850224118\":1509788624234,\"1023286815180\":1509788624869,\"1021773156103\":1509788625083,\"1022850224121\":1509788624234,\"1022850224123\":1509788624234,\"1023286815169\":1509788624869,\"1022850224124\":1509788624234,\"1022850224127\":1509788624234,\"1023286815197\":1509788624869,\"1023286815186\":1509788624869,\"1023286815184\":1509788624869,\"1023286815190\":1509788624869,\"1021967932228\":1509788624464,\"1023286815211\":1509788624869,\"1022155887729\":1509788624957,\"1020551984365\":1478686804031,\"1024663845876\":1509788624417,\"1023286815215\":1509788624869,\"1019417703247\":1509788624315,\"1023835867158\":1491634246504,\"1023286815212\":1509788624869,\"1020861962586\":1478686804039,\"1022030847118\":1509788624466,\"1022081831317\":1478686417062,\"1023286815205\":1509788624869,\"1024663845880\":1509788624417,\"1008287165382\":1478686804025,\"1023286815218\":1509788624869,\"1024663845869\":1509788624417,\"1022253197914\":1478686417196,\"1023286815222\":1509788624870,\"1020551984368\":1478686804031,\"1022045265803\":1478686417059,\"1021838164835\":1478686417134,\"1022238649101\":1509788624947,\"1024403794462\":1509788624533,\"462287430\":1491634246533,\"1022238649102\":1509788624931,\"1022238649104\":1509788624932,\"1019562396567\":1480585069070,\"1023286815147\":1509788624869,\"1018674791600\":1478686804024,\"1023286815150\":1509788624870,\"1021821517897\":1478686417132,\"1021368411983\":1478686417042,\"1023286815163\":1509788624869,\"1022482053554\":1478943089531,\"1024597649371\":1509788624939,\"1023286815160\":1509788624869,\"1023286815166\":1509788624869,\"1023286815165\":1509788624869,\"428077179\":1509788624366,\"1025596400473\":1509788624507,\"1023286815154\":1509788624870,\"851958590\":1509788625019,\"1025477913131\":1509788624369,\"1025596400475\":1509788624824,\"1023286815153\":1509788624870,\"1023286815152\":1509788624870,\"1023286815156\":1509788624869,\"1023286815307\":1509788624568,\"1025267424350\":1509788624999,\"1023286815309\":1509788624568,\"1023286815297\":1509788624568,\"1023286815303\":1509788624568,\"1021390431614\":1478686417042,\"1023286815300\":1509788624568,\"1023286815322\":1509788624569,\"1021668297430\":1478686416989,\"1023286815325\":1509788624569,\"1023484733064\":1509788624355,\"1585165411\":1444487341735,\"1023484733063\":1509788624355,\"1023286815315\":1509788624569,\"1023484733062\":1509788624355,\"1585165409\":1444487341715,\"1019430940710\":1478686804048,\"1023484733061\":1509788624355,\"1023484733060\":1509788624355,\"1023484733059\":1509788624355,\"1023286815319\":1509788624569,\"1023484733058\":1509788624355,\"1023286815317\":1509788624569,\"1025516973918\":1509788624308,\"1021468688013\":1509788624918,\"1023484733103\":1509788624355,\"1023484733102\":1509788624355,\"1022065712386\":1478686417270,\"1023484733101\":1509788624355,\"367656922\":1444487341725,\"1023484733100\":1509788624355,\"1019364228102\":1509788624315,\"1023484733151\":1509788624355,\"1023484733150\":1509788624355,\"1023484733149\":1509788624355,\"1019767391344\":1509788625081,\"1019767391345\":1509788624317,\"1022460683725\":1478686417298,\"1025533750330\":1509788624347,\"1024913787704\":1509788624375,\"1022535792961\":1480585069131,\"1008898084262\":1480585069067,\"1024403794311\":1509788625099,\"1023286815258\":1509788624569,\"1021982087262\":1509788624834,\"1023286815263\":1509788624569,\"1022487296582\":1478943089315,\"1023561808830\":1509788624191,\"1022848912446\":1509788624325,\"1023286815253\":1509788624568,\"1023286815274\":1509788624569,\"1023286815279\":1509788624569,\"4994614231\":1509788667398,\"1023286815277\":1509788624569,\"1024661747729\":1509788624906,\"1023286815268\":1509788624569,\"1001797309788\":1478686417023,\"1023286815290\":1509788624568,\"1018922391064\":1509788624309,\"1023286815295\":1509788624568,\"1023286815293\":1509788624569,\"1023286815282\":1509788624569,\"1023286815281\":1509788624569,\"1020312643023\":1465470268317,\"1023484733154\":1509788624355,\"1023286815286\":1509788624568,\"1023484733153\":1509788624355,\"1023286815285\":1509788624568,\"1023484733152\":1509788624355,\"1022466319827\":1478686417072,\"1025372542617\":1509788624307,\"1021741960956\":1509788624816,\"1021771451450\":1478686417128,\"1022378893551\":1509788624393,\"1000526126690\":1444487341713,\"1020878084976\":1509788624175,\"1025269914808\":1509788625008,\"1021721512228\":1478686804047,\"1022378893562\":1509788625017,\"584697921\":1491634246514,\"1022378893553\":1509788624393,\"1022378893554\":1509788624393,\"1022378893557\":1509788624393,\"1022378893558\":1509788624393,\"1024384526425\":1509788667499,\"1012117228718\":1478686417223,\"1017322616675\":1465470268241,\"1015382508485\":1465470268246,\"1024384526423\":1509788667499,\"1021626365933\":1509788624930,\"1021234064392\":1478686417039,\"1024384526411\":1509788667499,\"1000526126686\":1444487341739,\"1025120487333\":1509788624294,\"1024632650381\":1509788624990,\"1022081045227\":1478686417061,\"1023286815375\":1509788625170,\"1023286815374\":1509788625169,\"1023286815386\":1509788625170,\"4994614115\":1509788667398,\"1023286815390\":1509788625170,\"1010093900916\":1491634246522,\"1010093900917\":1491634246528,\"1023286815379\":1509788625170,\"1023286815378\":1509788625170,\"1010093900920\":1491634246528,\"1023286815376\":1509788625170,\"1023286815380\":1509788625170,\"1023286815403\":1509788625169,\"1023286815401\":1509788625169,\"1023286815400\":1509788625169,\"1021036023924\":1478686417300,\"1023286815407\":1509788625170,\"1023286815406\":1509788625170,\"1023286815404\":1509788625170,\"1023286815395\":1509788625169,\"1023286815394\":1509788625169,\"1023286815393\":1509788625169,\"1023286815392\":1509788625170,\"1023286815399\":1509788625169,\"451932161\":1491634246505,\"1023286815397\":1509788625170,\"1021049917772\":1478686417232,\"1022421755656\":1478686417210,\"1023286815416\":1509788625170,\"1023286815423\":1509788625170,\"1023286815421\":1509788625170,\"1023286815411\":1509788625170,\"1025521430073\":1509788624524,\"1021929129045\":1509788624465,\"1020391423999\":1478686804071,\"1024183082492\":1509788624923,\"1024183082489\":1509788624923,\"1026226586683\":1514456869793,\"1025521430069\":1509788624543,\"1023995642117\":1491634246530,\"1025521430071\":1509788624537,\"1024183082481\":1509788624923,\"1024183082478\":1509788624923,\"1024183082476\":1509788624923,\"1024183082475\":1509788624923,\"1024183082462\":1509788624923,\"1024454389239\":1509788624975,\"1024183082458\":1509788624923,\"1024454389236\":1509788624975,\"1024454389242\":1509788624975,\"1024454389241\":1509788624975,\"1022142125992\":1478686416975,\"1024454389244\":1509788624975,\"1025521561093\":1509788624800,\"1021881288454\":1509788624426,\"1025521561091\":1509788624824,\"1015346072717\":1478686804058,\"1025521561089\":1509788624829,\"1021478649605\":1478686417045,\"1019102604523\":1509788624314,\"1021925459030\":1478686417141,\"1021902128587\":1509788624399,\"1024183082435\":1509788624923,\"1015868255653\":1465470268260,\"1021199855592\":1465470268193,\"1024608003279\":1509788667589,\"1021199855595\":1465470268193,\"1022880236480\":1509788624542,\"1024183082424\":1509788624923,\"1024183082422\":1509788624923,\"1021199855584\":1465470268192,\"1021345474382\":1465470268225,\"1024183082417\":1509788624923,\"1022454916273\":1478686417072,\"1021390431266\":1478686417042,\"1024183082412\":1509788624923,\"1024183082411\":1509788624923,\"1021881026401\":1478686417137,\"1021771451870\":1478686417128,\"1024183082398\":1509788624923,\"1024183082397\":1509788624923,\"1020865108931\":1478686416988,\"1016400137634\":1480585069069,\"1021881026384\":1478686417137,\"1024183082393\":1509788624923,\"1000936957946\":1444487341754,\"1000936957947\":1444487341749,\"1021199855583\":1465470268192,\"1022480743172\":1478943089488,\"1021199855576\":1465470268192,\"1021881026379\":1478686417137,\"1574680154\":1491634246506,\"1021137333225\":1478686417002,\"1024895831015\":1509788624944,\"1021137333228\":1478686417002,\"1023484733206\":1509788624355,\"1023484733205\":1509788624355,\"1023484733204\":1509788624355,\"4994613817\":1509788667398,\"1022670139521\":1509788625074,\"1020998800166\":1478686417034,\"1025521430185\":1509788625108,\"1025521430187\":1509788625088,\"1019028285863\":1480585069073,\"1574680133\":1491634246506,\"1022028881624\":1509788624427,\"1024913787601\":1509788624375,\"1020884900404\":1478686417032,\"1021390431444\":1478686417042,\"1020884900403\":1478686417032,\"1022235241131\":1478686417193,\"1021974878508\":1509788624453,\"1574680172\":1491634246506,\"1008904768564\":1509788624388,\"1024300258907\":1509788624292,\"1020742550441\":1478686417028,\"1024895831000\":1509788624943,\"1024895831005\":1509788624944,\"1024087006068\":1509788624518,\"1005662752015\":1480585069065,\"1021137333181\":1478686417002,\"1021515480098\":1478686417047,\"1021076789208\":1478686417094,\"1020888177313\":1478686417032,\"1021140085684\":1478686417037,\"1024608003171\":1509788667589,\"1021278233577\":1478686417004,\"1007095484564\":1478686804023,\"1023926570459\":1491634246528,\"1023926570460\":1491634246528,\"1020392472378\":1478686804065,\"1024615736117\":1509788624224,\"1019436971968\":1509788624315,\"1025783052672\":1509788624295,\"1021742745714\":1478686804032,\"1021018723739\":1478686417090,\"1018554337919\":1509788624389,\"1021742745717\":1478686804032,\"1025372147737\":1509788624305,\"1025685922626\":1509788624309,\"1024615736121\":1509788624224,\"1024615736120\":1509788624224,\"1024615736123\":1509788624224,\"1021018723735\":1478686417090,\"1024615736122\":1509788624224,\"1021390431074\":1478686417042,\"1024608002968\":1509788667589,\"1022811949217\":1509788624421,\"1022364738904\":1480585069075,\"1022811949220\":1509788624421,\"4961586065\":1509788624163,\"1024140746580\":1509788624281,\"1019298692662\":1509788625078,\"1019298692663\":1509788625076,\"1024140746578\":1509788624281,\"1019298692664\":1509788625078,\"1021468686487\":1509788624918,\"1025909928016\":1509788667456,\"1022421754297\":1478686417210,\"1025681859532\":1509788624343,\"1021226068347\":1478686417003,\"1005490272068\":1478686417222,\"1024140746559\":1509788624926,\"1024140746553\":1509788625019,\"1022956650612\":1509788624420,\"1021832660327\":1478686804035,\"1022811949261\":1509788624420,\"1022811949263\":1509788624420,\"1021997686613\":1478686417156,\"1021832660328\":1478686804035,\"1019436971967\":1509788624313,\"1022811949116\":1509788624421,\"1023175546472\":1509788625043,\"1021985234806\":1478686417153,\"1022811949106\":1509788624421,\"1022160867818\":1478686417186,\"1025720270288\":1509788624346,\"1021906190894\":1509788624465,\"1022579440143\":1509788624424,\"1024132489025\":1509788624328,\"1019195269259\":1509788624321,\"1299816909\":1444487341748,\"1022254378829\":1509788624368,\"1022254378830\":1509788624368,\"1021331972108\":1509788624976,\"1021331972111\":1509788624976,\"1021331972106\":1509788624976,\"1022811949169\":1509788624421,\"1021331972100\":1509788624976,\"1021278233801\":1478686417004,\"1021331972101\":1509788624976,\"1024572744044\":1509788667537,\"1021331972102\":1509788624976,\"4870885017\":1509788624164,\"1021331972103\":1509788624976,\"1024572744053\":1509788667536,\"1022453867207\":1478686417215,\"1022811949166\":1509788624421,\"1021278233817\":1478686417004,\"1024132489018\":1509788624328,\"1020769683114\":1478686417029,\"1021331972113\":1509788624976,\"1024572744056\":1509788667536,\"1024132489021\":1509788624328,\"1024615736277\":1509788624563,\"1024615736273\":1509788624563,\"1024615736272\":1509788624563,\"1016417438522\":1509788624941,\"1021461479365\":1478686416980,\"1025331517087\":1509788624467,\"1024615736269\":1509788624563,\"1024615736271\":1509788624563,\"1023145268263\":1509788625045,\"1023901927589\":1509788625086,\"1023901927594\":1509788625085,\"1010091934669\":1491634246522,\"1023901927596\":1509788625085,\"1023901927601\":1509788625086,\"1023901927600\":1509788625086,\"1010091934674\":1491634246527,\"1022397507166\":1478686417070,\"1020739798315\":1478686417075,\"1021992181389\":1478686417155,\"1018740464729\":1509788624366,\"1022633964618\":1480585069095,\"1016949582630\":1478686804031,\"1021325813263\":1478686804040,\"1021344162065\":1478686417041,\"1012961719546\":1458304307281,\"1021775121228\":1478686804033,\"1022397507168\":1478686417070,\"1021729902084\":1509788624400,\"1023901927569\":1509788625086,\"1021858743896\":1478686417257,\"1021858743900\":1478686417257,\"1022633964564\":1480585069095,\"102493020\":1444487341733,\"1025007504028\":1509788624978,\"1022633964573\":1480585069095,\"684311936\":1478686804029,\"1022633964569\":1480585069095,\"1021400530324\":1478686417240,\"1007370856031\":1478686804025,\"1025721449597\":1509788624425,\"1020294161401\":1465470268294,\"1017436900938\":1478686804015,\"1016558600739\":1478686804024,\"1025721449595\":1509788624428,\"1024983910521\":1509788624924,\"1022633964597\":1480585069095,\"1021386367696\":1478686417006,\"1022633964592\":1480585069095,\"1023549750739\":1509788624858,\"1023549750736\":1509788624858,\"1004329319208\":1444487341711,\"1023549750735\":1509788624858,\"1023549750734\":1509788624858,\"1023549750733\":1509788624858,\"1021386367681\":1478686417006,\"1022633964576\":1480585069095,\"1022288848966\":1478686417068,\"1024926764814\":1509788624530,\"1025300059587\":1509788624298,\"1019066820733\":1509788624309,\"1024926764806\":1509788624530,\"1022811949355\":1509788624183,\"1004329319362\":1444487341711,\"1024186751801\":1509788624616,\"1000526125379\":1444487341731,\"1021694281\":1478950494920,\"1025721449601\":1509788624406,\"1022209551667\":1509788624938,\"1022209551672\":1509788624938,\"1021613650363\":1478686417008,\"1023602572836\":1509788624949,\"1025737310106\":1509788624346,\"1025504389625\":1509788624295,\"1021136809303\":1478686417037,\"1021283476501\":1478686417040,\"1025504389624\":1509788624295,\"1022176858967\":1478686417187,\"1025504389626\":1509788624295,\"1020052738756\":1509788624281,\"1022873421095\":1509788624426,\"1025300059522\":1509788624297,\"4994614368\":1509788667398,\"1021022655624\":1478686417035,\"1008020840331\":1478686804023,\"1008287035293\":1478686804030,\"1025504389595\":1509788624295,\"1019132486668\":1509788624313,\"1025504389591\":1509788624295,\"1025504389590\":1509788624295,\"1021390430876\":1478686417042,\"1020294030144\":1465470268282,\"1019717715701\":1509788625077,\"1025504389579\":1509788624296,\"1025504389578\":1509788624295,\"1021460561631\":1478686417108,\"1022155886633\":1509788624957,\"1009120778590\":1478686804030,\"1019310358195\":1509788625078,\"1025504389693\":1509788624296,\"1025504389692\":1509788624296,\"1025504389695\":1509788624296,\"1022390560211\":1478686417206,\"1025504389673\":1509788624296,\"1013667458483\":1478686804016,\"1025504389668\":1509788624296,\"1024608002453\":1509788667589,\"4994615213\":1509788667398,\"1025504389663\":1509788624296,\"1020305301543\":1478686804049,\"1025504389655\":1509788624297,\"1025504389654\":1509788624296,\"1022043822162\":1478686417059,\"1021570790536\":1478686417245,\"1025504389754\":1509788624297,\"1025504389749\":1509788624297,\"4561166739\":1465469681389,\"1024663845895\":1509788624417,\"1024663845894\":1509788624417,\"1024663845893\":1509788624417,\"1025504389742\":1509788624297,\"1024663845891\":1509788624417,\"1007584507400\":1478950494939,\"1022328957241\":1478686417288,\"1025504389729\":1509788624297,\"1025504389728\":1509788624297,\"1021978549286\":1478686417150,\"1012593798622\":1478686416977,\"1021990739211\":1478686417155,\"154396602\":1444487341746,\"1021052802331\":1478686417036,\"856939928\":1491634246514,\"1021037466866\":1465470268183,\"1012418434736\":1478686417074,\"1009710790933\":1480585069062,\"720356448\":1478950494915,\"1024334467438\":1509788625032,\"1024608002332\":1509788667589,\"1022181183730\":1478686417187,\"1025504389788\":1509788624297,\"1024615735700\":1509788624449,\"1024615735703\":1509788624449,\"1024615735702\":1509788624449,\"1025504389784\":1509788624297,\"1025504389783\":1509788624297,\"1024615735711\":1509788624449,\"1024615735704\":1509788624449,\"4994615069\":1509788667398,\"1988991036\":1444487341745,\"1019230265476\":1509788624373,\"1293525979\":1444487341754,\"1009744475997\":1491634246512,\"1021261851096\":1478686804047,\"1021647204545\":1509788625020,\"1001366865954\":1480585069061,\"1022410613343\":1478686417292,\"4965648665\":1509788624163,\"1021487954786\":1478686417046,\"1021594252748\":1478686417114,\"1021481794311\":1478686417110,\"1025504389848\":1509788624295,\"1022412579477\":1478686417208,\"134604541\":1444487341721,\"1025504389831\":1509788624295,\"1025504389830\":1509788624295,\"1021974879330\":1509788624426,\"1012037144055\":1478686804015,\"1021288851044\":1478686417004,\"1021739207557\":1478686417124,\"1020865372073\":1478686416999,\"1024779712085\":1509788625003,\"1020865372071\":1478686416999,\"1020865372064\":1478686416999,\"1024270505143\":1509788624174,\"1020865372067\":1478686416999,\"1021379158332\":1478686804033,\"1020865372062\":1478686416999,\"1026225012748\":1514456869772,\"1026225012750\":1514456869772,\"1022033336880\":1478686417166,\"1433647688\":1444487341721,\"1021769353697\":1478686417254,\"1022032419407\":1478686417166,\"1017113296644\":1480585069063,\"1022038972911\":1478686417011,\"1022956651350\":1509788624818,\"1025284331529\":1509788624249,\"1825801093\":1478686804033,\"1012166379108\":1478686417223,\"1021182946488\":1478686417003,\"1015835225086\":1478686804065,\"1019704345759\":1509788624367,\"1024917851714\":1509788624926,\"1000526125980\":1444487341713,\"1021827810874\":1478686417256,\"1021557421574\":1478686417245,\"1021557421570\":1478686417245,\"1025152204979\":1509788624269,\"1020667317223\":1478686804059,\"1024579035852\":1509788624925,\"1025152204982\":1509788624268,\"1025152204981\":1509788624269,\"1000526125944\":1444487341714,\"1007161544959\":1478686804023,\"1021622956557\":1478686417247,\"1000526125939\":1444487341718,\"1025628513100\":1509788625087,\"1021391479004\":1478686416979,\"1025628513099\":1509788625107,\"1025628513098\":1509788625124,\"1025628513097\":1509788625115,\"1015365338894\":1465470268263,\"4982687587\":1509788624162,\"1025002391982\":1509788624462,\"1024088055610\":1509788624467,\"1022045919735\":1478686417269,\"1021871850348\":1509788624402,\"1021546936264\":1509788624397,\"1022173581690\":1478686417186,\"1024664239549\":1509788625025,\"1022032419554\":1478686417166,\"1021234063698\":1478686417039,\"1022329088151\":1478686417201,\"1024686384383\":1509788625005,\"1011593738054\":1478686417220,\"1001087165843\":1478686417022,\"1016538816143\":1478686804069,\"1016538816142\":1478686804069,\"1024926765701\":1509788624530,\"1021588351883\":1509788624397,\"1016538816147\":1478686804069,\"1016538816146\":1478686804069,\"1016538816145\":1478686804069,\"1016538816144\":1478686804069,\"1016538816151\":1478686804069,\"1016538816150\":1478686804069,\"1016538816149\":1478686804069,\"1016538816148\":1478686804069,\"1016538816155\":1478686804069,\"1019903838196\":1509788625019,\"1016538816154\":1478686804069,\"1016538816153\":1478686804069,\"1016538816152\":1478686804069,\"1016538816159\":1478686804069,\"1016538816158\":1478686804069,\"1016538816157\":1478686804069,\"1024687695081\":1509788625212,\"1024300256721\":1509788624298,\"4968536081\":1509788624164,\"1025100438631\":1509788624173,\"1025133600360\":1509788624307,\"1021965173113\":1478686417148,\"1022460821461\":1480585069117,\"1012118410820\":1478686416993,\"1022460821469\":1480585069117,\"1021362257245\":1478686416981,\"1000307758666\":1478686417018,\"1022460821464\":1480585069117,\"1026232352953\":1514456869769,\"1022460821478\":1480585069117,\"1018814514847\":1509788624929,\"1026232352952\":1514456869770,\"772267621\":1444487341735,\"1022460821477\":1480585069117,\"1026232352955\":1514456869769,\"1022460821476\":1480585069117,\"1024936333946\":1509788625006,\"1026232352954\":1514456869769,\"1026232352957\":1514456869768,\"1012148033591\":1478686417223,\"1026232352956\":1514456869769,\"1016092517214\":1509788624941,\"1022455316371\":1478686417216,\"1024686908570\":1509788625102,\"1021626232117\":1478686417008,\"1021966745964\":1478686417262,\"1022338136200\":1478686417069,\"1020294037055\":1465470268283,\"1021987062611\":1478686417264,\"1019581535157\":1509788624354,\"1013504084467\":1478686804054,\"1009446156250\":1478686804055,\"1009446156251\":1478686804055,\"1024652698185\":1509788624171,\"1020438079129\":1478686804027,\"1021226071439\":1478686417003,\"1022186426193\":1478686417278,\"1022431460862\":1478686417212,\"1024055942700\":1509788624928,\"1023627732185\":1509788624278,\"1025219445755\":1509788624433,\"1023627732189\":1509788624278,\"1023627732191\":1509788624278,\"1025219445759\":1509788624434,\"1025219445758\":1509788624424,\"1023627732183\":1509788624278,\"1025219445751\":1509788624510,\"1023627732182\":1509788624278,\"1025219445750\":1509788624510,\"1021323590552\":1465470268210,\"100660521\":1444487341704,\"1021323590549\":1465470268210,\"1021323590547\":1465470268210,\"1022486241509\":1509788625075,\"1023627732208\":1509788624277,\"1023627732212\":1509788624278,\"1022096247218\":1478686417181,\"1023627732203\":1509788624278,\"1023924606645\":1509788624960,\"1023627732207\":1509788624277,\"1023627732198\":1509788624278,\"1019125283190\":1509788625080,\"1017142125445\":1478686804022,\"916834217\":1478950494918,\"1012148033864\":1478686417223,\"1021825456198\":1509788624995,\"1001087165625\":1478686417022,\"1021825456196\":1509788624995,\"1024300256452\":1509788624298,\"1017190884493\":1478686804015,\"1012800896614\":1478686417074,\"1021825456201\":1509788624995,\"4556586670\":1465469681388,\"1021398294977\":1478686417106,\"1021605391803\":1509788624860,\"1009775405722\":1478686804025,\"1021605391806\":1509788624860,\"1025711481082\":1509788624346,\"1021605391807\":1509788624860,\"1018739933196\":1509788624367,\"1021605391810\":1509788624860,\"1020437030759\":1478686804029,\"1019166177964\":1478686804020,\"1013102481469\":1478686804016,\"1014038522054\":1478686804016,\"1012148033792\":1478686417223,\"1585557465\":1444487341733,\"1000145759452\":1478686804029,\"1009078435915\":1478686804023,\"1020975859565\":1478686417087,\"1021483099325\":1478686417110,\"1024096960886\":1509788624325,\"1021206410545\":1478686417038,\"1538894393\":1444487341702,\"1025010259488\":1509788624598,\"1025010259491\":1509788624598,\"1025010259492\":1509788624598,\"1001087165454\":1478686417022,\"1025010259494\":1509788624598,\"1021471827202\":1478686417045,\"1025010259497\":1509788624598,\"1025010259496\":1509788624598,\"1024782198967\":1509788625021,\"1016877888489\":1478686804019,\"1011767665478\":1478686804051,\"1025010259472\":1509788624598,\"1011767665474\":1478686804051,\"1025010259477\":1509788624598,\"1011767665472\":1478686804051,\"1011767665484\":1478686804051,\"1025010259483\":1509788624598,\"1025010259485\":1509788624598,\"1025010259484\":1509788624598,\"1011767665480\":1478686804051,\"1025010259486\":1509788624598,\"1025010259457\":1509788624598,\"1028052069874\":1532526019715,\"1025010259459\":1509788624598,\"1020923036315\":1478686417033,\"1020923036310\":1478686417033,\"1025010259467\":1509788624598,\"1025010259469\":1509788624598,\"1021721383431\":1478686804047,\"1025010259468\":1509788624598,\"1025010259471\":1509788624598,\"1025010259470\":1509788624598,\"1005848215571\":1509788624373,\"1025010259568\":1509788624494,\"1020783581781\":1478686417225,\"1025100438913\":1509788624273,\"1025010259552\":1509788624494,\"1025010259555\":1509788624494,\"1025010259561\":1509788624494,\"1025010259563\":1509788624495,\"1025010259564\":1509788624494,\"1025010259567\":1509788624494,\"1025010259566\":1509788624495,\"1025010259537\":1509788624495,\"1025010259536\":1509788624495,\"1025010259540\":1509788624495,\"1021742749078\":1478686804032,\"1025010259543\":1509788624495,\"1021742749079\":1478686804032,\"1025010259547\":1509788624495,\"1025010259546\":1509788624495,\"1021887716416\":1478686804049,\"1025010259549\":1509788624494,\"1025010259551\":1509788624494,\"271049174\":1478686416992,\"1025010259525\":1509788624494,\"1025010259530\":1509788624495,\"1025010259532\":1509788624495,\"1025010259535\":1509788624495,\"1025010259534\":1509788624495,\"1020880831440\":1478686417079,\"715774123\":1444487341746,\"1024055942289\":1509788624928,\"1024313495354\":1509788624926,\"1022461607327\":1478686417298,\"1024322800770\":1509788667508,\"1024322800769\":1509788667508,\"1021413762023\":1478686417106,\"1020880831455\":1478686417079,\"1021647465488\":1509788624396,\"1022461607311\":1478686417298,\"1024470382026\":1509788625003,\"1022549288537\":1509788624386,\"1022549288536\":1509788624386,\"1025911631854\":1509788667466,\"1024008886618\":1509788667494,\"1020880831436\":1478686417079,\"1024528447573\":1509788625175,\"1021693465437\":1478686417121,\"1021811300985\":1478686417052,\"1001087166371\":1478686417022,\"1025874798647\":1509788667683,\"120321386\":1506424601447,\"1020878472113\":1509788624934,\"1022075931352\":1509788624416,\"1025010259453\":1509788624598,\"1025010259452\":1509788624598,\"1025010259455\":1509788624598,\"1021251368433\":1478686417236,\"1021530285388\":1509788624433,\"1022200712535\":1478686416978,\"1024895832628\":1509788624943,\"1025593653395\":1509788624201,\"1021990470102\":1509788625067,\"1024895832632\":1509788624943,\"1021462782300\":1478686417108,\"1022037918853\":1478686417167,\"1025593653398\":1509788624186,\"1025593653397\":1509788624198,\"1008495574448\":1478686804064,\"1025593653396\":1509788624204,\"4994620397\":1509788667399,\"1021251368413\":1478686417236,\"1021251368411\":1478686417236,\"1018421832750\":1480585069059,\"1022384797797\":1478686417290,\"1021755070431\":1478686417051,\"1366270720\":1491634246520,\"1025296648943\":1509788624511,\"1021989028311\":1478686416976,\"1022112761911\":1478686417182,\"1022458330585\":1478686417072,\"1021530285413\":1509788624423,\"1022112761913\":1478686417182,\"1021827685313\":1509788624897,\"1021832666006\":1478686804035,\"1021832666007\":1478686804035,\"1021827685315\":1509788624897,\"1021827685317\":1509788624896,\"1021827685318\":1509788624897,\"1025300056771\":1509788624297,\"1021827685320\":1509788624897,\"1024055942171\":1509788624928,\"1021827685321\":1509788624896,\"1019006530530\":1509788624316,\"1021827685322\":1509788624896,\"1021967139739\":1478686417148,\"1021827685323\":1509788624896,\"1021827685324\":1509788624896,\"1021827685325\":1509788624896,\"1025902325480\":1509788667449,\"1021827685326\":1509788624896,\"1021827685328\":1509788624896,\"1021827685329\":1509788624896,\"1021827685330\":1509788624896,\"1021827685331\":1509788624896,\"1022166765466\":1478686417186,\"1023864967520\":1509788624927,\"1021827685334\":1509788624897,\"1021827685335\":1509788624897,\"1021501318216\":1478686416982,\"1021206542063\":1478686417099,\"1020878472025\":1509788624934,\"1021206542072\":1478686417099,\"1024538147175\":1509788624429,\"1021974872107\":1509788624435,\"1021206542066\":1478686417099,\"1021206542064\":1478686417099,\"1024538147177\":1509788624426,\"1024538147176\":1509788624432,\"1024538147178\":1509788624408,\"1025864968192\":1509788667512,\"1024016883207\":1509788625147,\"1015868257369\":1465470268260,\"1022021535518\":1509788624181,\"1024016883212\":1509788625147,\"1022021535515\":1509788624179,\"1024016883210\":1509788625147,\"1024016883209\":1509788625147,\"1024016883208\":1509788625147,\"1025524970547\":1509788624523,\"1025524970550\":1509788624523,\"1025524970549\":1509788624523,\"1025524970548\":1509788624523,\"1021589530959\":1478686417246,\"1018814514215\":1509788624929,\"1018509513171\":1509788624426,\"1025609775400\":1509788624824,\"1022339447325\":1478686417015,\"1022410227307\":1478686417070,\"1022351768294\":1478686417203,\"1024454390832\":1509788624975,\"1022410227308\":1478686417070,\"1001544204972\":1478686804029,\"1022351768298\":1478686417203,\"540791498\":1509788624362,\"1024322800762\":1509788667508,\"1024454390817\":1509788624975,\"1024454390816\":1509788624975,\"1024322800767\":1509788667508,\"1024454390822\":1509788624975,\"1024322800765\":1509788667508,\"1022410227314\":1478686417070,\"1024454390826\":1509788624975,\"1022195076484\":1509788624820,\"1021231969338\":1478686417099,\"1024454390831\":1509788624975,\"1021827685310\":1509788624896,\"1024055942545\":1509788624928,\"1020850691224\":1478686804057,\"1019811431069\":1465470268320,\"1022172532164\":1509788625231,\"1022172532165\":1509788625232,\"1022172532162\":1509788625231,\"1409787678\":1509788625020,\"1024247171604\":1509788625070,\"1022451514644\":1478686417215,\"1025628651510\":1509788624540,\"1022371166683\":1478686417069,\"1022371166681\":1478686417069,\"1021329883096\":1478686417041,\"1022491091594\":1478943089490,\"1025300056854\":1509788624297,\"1022172532150\":1509788625231,\"1022172532151\":1509788625231,\"1023730886801\":1509788624960,\"1022172532148\":1509788625231,\"1022172532149\":1509788625231,\"1022172532144\":1509788625231,\"1022220169879\":1478686417192,\"1002455536768\":1491634246518,\"1022058759415\":1475218613699,\"1022172532159\":1509788625232,\"1022172532156\":1509788625231,\"1022172532157\":1509788625231,\"1022172532155\":1509788625231,\"1022172532135\":1509788625232,\"1022172532133\":1509788625231,\"1023384991207\":1509788624969,\"1022172532142\":1509788625232,\"1022172532140\":1509788625232,\"1022172532141\":1509788625232,\"4994620105\":1509788667398,\"1022544308208\":1509788625063,\"1022172532136\":1509788625231,\"1022172532137\":1509788625232,\"1019541557766\":1509788625077,\"1012972071604\":1478686804025,\"1023071600819\":1509788624220,\"1023071600817\":1509788624220,\"1023071600816\":1509788624220,\"1021984833654\":1478686417264,\"1023071600815\":1509788624220,\"1022486242194\":1478943089489,\"1023071600813\":1509788624220,\"1021984833653\":1478686417264,\"1020784761083\":1478686804040,\"1023549350717\":1509788625158,\"1023549350716\":1509788625157,\"1023549350718\":1509788625157,\"1024055942414\":1509788624928,\"1023549350715\":1509788625157,\"1022142517052\":1478686417277,\"1012413713354\":1478686417074,\"4994619906\":1509788667398,\"1025628651375\":1509788624746,\"1024002725891\":1491634246532,\"1025628651369\":1509788624828,\"1024002725889\":1491634246532,\"1025628651370\":1509788624832,\"1021901741372\":1478686417054,\"1024273254486\":1509788624277,\"1024686384942\":1509788624997,\"1024686384940\":1509788625005,\"1020610040336\":1509788624353,\"1023549350721\":1509788625157,\"1021314021387\":1478686417041,\"1021869891382\":1478686416983,\"1024221875044\":1509788624925,\"1009998093434\":1491634246524,\"1024936334865\":1509788625006,\"1024008888137\":1509788667493,\"1025532048029\":1509788624297,\"1024786132705\":1509788624406,\"1021289512292\":1478686417237,\"1025607941632\":1509788624407,\"1021887715769\":1478686804065,\"1020935487620\":1478686417228,\"1021239439979\":1478686417003,\"1532997503\":1491634246519,\"1024016881903\":1509788624444,\"1024016881910\":1509788624444,\"1024016881909\":1509788624444,\"1024016881908\":1509788624444,\"1019448504068\":1478686804021,\"1025532048035\":1509788624297,\"1024016881907\":1509788624444,\"1025532048032\":1509788624297,\"1020850690980\":1478686804057,\"1126414111\":1491634246535,\"1021609322500\":1478686417049,\"1021609322501\":1478686417049,\"1025428108527\":1509788624511,\"1021609322510\":1478686417049,\"1021609322511\":1478686417049,\"1021609322506\":1478686417049,\"1021388078022\":1478686417240,\"1025428108539\":1509788624424,\"1025428108538\":1509788624433,\"1025428108542\":1509788624434,\"1025428108531\":1509788624433,\"1025428108530\":1509788624510,\"1024528449042\":1509788625175,\"1002035722575\":1478686417024,\"1022498956575\":1509788624969,\"1021740388597\":1509788624395,\"1020884239846\":1478686417032,\"1022646677014\":1480585069091,\"1024686907506\":1509788624420,\"1022646677019\":1480585069150,\"1020294167073\":1465470268295,\"1022646677023\":1480585069091,\"1021887715619\":1478686804050,\"1022646677020\":1480585069091,\"1022646676996\":1480585069150,\"1022646677003\":1480585069090,\"1022501447072\":1509788624538,\"1004039516451\":1480585069064,\"1020953706941\":1478686417085,\"1023071602681\":1509788624856,\"1020953706930\":1478686417085,\"1023071602677\":1509788624856,\"1021869627403\":1478686804033,\"1023071602676\":1509788624856,\"1023071602675\":1509788624856,\"1020953706934\":1478686417085,\"1023071602672\":1509788624856,\"1022455577381\":1478686417072,\"1022501447150\":1509788624538,\"1023949118509\":1509788667493,\"1023973760420\":1509788625017,\"1021435258490\":1478686417044,\"1021175346886\":1465470268187,\"1021175346882\":1465470268187,\"1025405700859\":1509788624387,\"1025405700858\":1509788624387,\"1021789410157\":1509788624815,\"1025405700857\":1509788624387,\"1025405700856\":1509788624387,\"1025405700855\":1509788624387,\"1025405700854\":1509788624387,\"1025405700853\":1509788624387,\"1025405700851\":1509788624387,\"1025405700850\":1509788624387,\"1025405700849\":1509788624387,\"1021175346889\":1465470268187,\"1025405700848\":1509788624387,\"1025329811050\":1509788625099,\"1012945595480\":1478686417074,\"1025405700847\":1509788624387,\"1025405700846\":1509788624387,\"1023958162614\":1509788667535,\"1025405700845\":1509788624387,\"1025405700844\":1509788624387,\"1025405700843\":1509788624387,\"1025405700842\":1509788624387,\"1025405700841\":1509788624387,\"1025405700840\":1509788624387,\"1025405700839\":1509788624387,\"1025405700895\":1509788624387,\"1025405700894\":1509788624387,\"1025405700893\":1509788624387,\"1025405700892\":1509788624387,\"1025405700891\":1509788624387,\"1025405700890\":1509788624387,\"1025405700889\":1509788624387,\"1025405700888\":1509788624387,\"1025405700887\":1509788624387,\"1024462386001\":1509788624558,\"1025405700886\":1509788624387,\"1025405700885\":1509788624387,\"1024462386003\":1509788624558,\"1025405700884\":1509788624387,\"1024462386002\":1509788624558,\"1025405700883\":1509788624387,\"1024462386005\":1509788624558,\"1024462386004\":1509788624558,\"1025911630052\":1509788667467,\"1020390498808\":1478686804071,\"1021962028117\":1478686417262,\"1024300386558\":1509788624292,\"1022127050316\":1509788624338,\"1024016882159\":1509788624554,\"1020547655847\":1509788624934,\"1025314213055\":1509788624308,\"1009269934324\":1509788624390,\"1024016882163\":1509788624554,\"1024016882162\":1509788624554,\"1024016882161\":1509788624554,\"1024016882160\":1509788624554,\"1025405700902\":1509788624386,\"1025405700901\":1509788624387,\"1025405700900\":1509788624387,\"1025405700899\":1509788624387,\"1025405700898\":1509788624387,\"1025405700897\":1509788624386,\"1025405700896\":1509788624386,\"1024016882055\":1509788624217,\"1024016882054\":1509788624217,\"1025791696991\":1509788624511,\"331081469\":1478686804046,\"1024016882061\":1509788624217,\"1024016882057\":1509788624217,\"1024016882056\":1509788624217,\"117961297\":1500459286943,\"1020504797030\":1478686804031,\"1021119122112\":1478686417095,\"1022431459367\":1478686417016,\"1024132351620\":1509788624326,\"1011593736739\":1478686417220,\"1025791697013\":1509788624507,\"1024132351628\":1509788624326,\"1024132351631\":1509788624326,\"1024132351630\":1509788624326,\"1024132351625\":1509788624326,\"1025791697001\":1509788624441,\"1024132351635\":1509788624326,\"1009162453846\":1509788624388,\"1025791696999\":1509788624423,\"1025791696998\":1509788624466,\"1022746416637\":1509788625016,\"1021789410037\":1509788624194,\"1025791696992\":1509788624511,\"1025428108584\":1509788624437,\"1021004303862\":1478686417035,\"1021004303858\":1478686417035,\"1021004303859\":1478686417035,\"1025428108576\":1509788624432,\"1022191274558\":1478686417188,\"1025428108579\":1509788624432,\"1025671248800\":1509788624186,\"1023830103138\":1509788625038,\"1025428108580\":1509788624432,\"1025428108583\":1509788624437,\"1019118599499\":1509788624314,\"1015155109519\":1444487341759,\"1020884239371\":1478686417032,\"295429120\":1444487341727,\"1020234006489\":1465470268312,\"1025428108555\":1509788624432,\"1007298114281\":1478686804015,\"1022589657695\":1509788625062,\"1025428108545\":1509788624427,\"1022886010247\":1509788625018,\"1021992306236\":1478686417057,\"1008286775252\":1478686804030,\"1025485780727\":1509788624431,\"1022235243702\":1478686417193,\"1019297507231\":1509788624376,\"1025485780726\":1509788624429,\"1025671248794\":1509788624197,\"1025671248793\":1509788624204,\"1025671248792\":1509788624200,\"1025428108570\":1509788624432,\"1025671248797\":1509788625087,\"1024341281323\":1509788625071,\"1025428108565\":1509788624432,\"1024884828854\":1509788625024,\"1025671248790\":1509788625106,\"1025671248789\":1509788625124,\"1025428108566\":1509788624432,\"1025671248788\":1509788625115,\"1022238783234\":1509788624947,\"1021681276381\":1478686417120,\"1022238783237\":1509788624931,\"1025428108640\":1509788625126,\"1025428108645\":1509788625136,\"1015563911538\":1478686804027,\"4994620541\":1509788667399,\"1022338923803\":1478686417015,\"1021681669569\":1509788624426,\"450752260\":1444487341748,\"1025512648805\":1509788624337,\"1025512648804\":1509788624340,\"1022021402632\":1509788624179,\"1025428108621\":1509788625245,\"1025428108622\":1509788625245,\"1021689009262\":1478686417121,\"1014712874137\":1480585069067,\"1022230262952\":1478686417065,\"1025428108633\":1509788625126,\"1025428108632\":1509788625126,\"1025428108637\":1509788625126,\"1025428108636\":1509788625126,\"1025428108638\":1509788625126,\"1025428108625\":1509788625128,\"1025428108624\":1509788625128,\"1025428108626\":1509788625104,\"1025428108629\":1509788625112,\"1025428108628\":1509788625129,\"1025428108630\":1509788625126,\"1008898085348\":1480585069067,\"1021789409690\":1509788624533,\"1021962946374\":1478686417148,\"1025074879944\":1509788624999,\"1021359766276\":1478686417006,\"1022444173477\":1478686417295,\"1023796029491\":1509788625102,\"1019102867853\":1509788624317,\"4839560796\":1509788624165,\"1021081766899\":1478686417094,\"1021550604265\":1478686804067,\"1025671247898\":1509788624537,\"1025671247897\":1509788624542,\"1025671247896\":1509788624540,\"1025671247903\":1509788624523,\"1021460555038\":1478686417044,\"1021311269937\":1465470268205,\"1023071602047\":1509788624561,\"1023071602046\":1509788624561,\"1024453079174\":1509788625030,\"1023071602044\":1509788624561,\"1024879192359\":1509788625069,\"1022850224161\":1509788624234,\"1022850224160\":1509788624234,\"1022850224163\":1509788624234,\"1022850224162\":1509788624234,\"1022850224164\":1509788624234,\"1020963274909\":1478686417085,\"1021962946352\":1478686417148,\"1022850224144\":1509788624234,\"1022850224150\":1509788624234,\"1022850224154\":1509788624234,\"1022850224158\":1509788624234,\"1022850224129\":1509788624234,\"1022850224131\":1509788624234,\"1022850224132\":1509788624234,\"1022850224134\":1509788624234,\"1020288793449\":1509788624436,\"1022850224136\":1509788624234,\"1025521562445\":1509788624524,\"1022850224138\":1509788624234,\"1023093359502\":1509788624385,\"1023093359501\":1509788624385,\"1021962946351\":1478686417148,\"1022059413779\":1478686417060,\"1017142125581\":1478686804022,\"1025035427508\":1509788624269,\"1025906649765\":1509788667461,\"1021311794313\":1478686804018,\"1010091939921\":1491634246522,\"1010091939925\":1491634246522,\"1024686908014\":1509788624818,\"1021189109200\":1465470268190,\"1019297506448\":1509788624375,\"1021189109201\":1465470268190,\"1019297506449\":1509788624375,\"1021189109202\":1465470268191,\"1019297506450\":1509788624375,\"1019899511030\":1509788624940,\"1022400789917\":1478686804071,\"1024688349807\":1509788624592,\"1025485780457\":1509788625125,\"1022470519202\":1478686804049,\"1025485780456\":1509788625117,\"1025485780458\":1509788625109,\"1025485780461\":1509788625088,\"1020886730700\":1478686417227,\"1023796029611\":1509788624534,\"1001087165220\":1478686417022,\"1023071602050\":1509788624561,\"1019297506446\":1509788624375,\"1019297506447\":1509788624375,\"1023071602048\":1509788624561,\"1024098797351\":1509788625036,\"1013902075754\":1478686804071,\"1025296649813\":1509788624512,\"1010538626795\":1478686804024,\"1022226200399\":1478686416985,\"1022226200398\":1478686416985,\"1025900358239\":1509788667461,\"1021953509152\":1478686417146,\"1020390498831\":1478686804016,\"1025900358241\":1509788667460,\"1023796029685\":1509788624195,\"1021413762825\":1478686417106,\"1022309560423\":1478686417199,\"1021606177388\":1480585069071,\"1019611550597\":1509788624392,\"1019611550598\":1509788624392,\"1021304192400\":1478686417102,\"1019360944449\":1465470268242,\"1019360944451\":1465470268273,\"1022501447216\":1509788624538,\"1019360944453\":1465470268242,\"449965532\":1491634246519,\"1024686908391\":1509788624534,\"1020858947607\":1478686417031,\"1025219445790\":1509788624437,\"1025428109185\":1509788624373,\"1023958163307\":1509788667535,\"1012583708023\":1478686417223,\"1021741306714\":1478686417253,\"1021632784855\":1509788624401,\"1025219445774\":1509788624432,\"1025219445761\":1509788624427,\"1025219445763\":1509788624432,\"1025219445762\":1509788624432,\"1024517832111\":1509788625028,\"1024008887312\":1509788667494,\"1025608072380\":1509788624186,\"1025809129798\":1509788667443,\"1020773358945\":1478686417076,\"1025608072372\":1509788624204,\"1025608072371\":1509788624200,\"482864025\":1478686804068,\"1022646676979\":1480585069117,\"1025219445850\":1509788625135,\"1022646676981\":1480585069090,\"1025219445840\":1509788625126,\"1024273255669\":1509788624277,\"1025219445845\":1509788625126,\"1025604271431\":1509788625084,\"1025219445846\":1509788625126,\"1020790529092\":1478686417029,\"1025219445835\":1509788625129,\"1023821453081\":1491634246536,\"1025521562179\":1509788624205,\"1022646676966\":1480585069090,\"1025219445839\":1509788625126,\"4985839195\":1508316495865,\"1025219445825\":1509788625245,\"1022646676969\":1480585069090,\"1021425296935\":1509788624977,\"1025219445829\":1509788625245,\"1022055874775\":1478686417059,\"1022646676973\":1480585069090,\"1017142125835\":1478686804022,\"1023540312236\":1509788625008,\"1024452292983\":1509788667888,\"1019612598991\":1509788624366,\"4994620981\":1509788667395,\"1025874800014\":1509788667684,\"1025874800002\":1509788667684,\"1022068723560\":1478686417060,\"1022073311027\":1478686417012,\"1021831880335\":1478686417134,\"1024016882517\":1509788624852,\"1024016882516\":1509788624852,\"1024528448986\":1509788625175,\"1024016882515\":1509788624852,\"1024016882513\":1509788624852,\"1024016882527\":1509788624852,\"1024462254591\":1509788624973,\"1024943936545\":1509788624978,\"1024183861588\":1509788624517,\"1024183861594\":1509788624517,\"1021906196760\":1478686417140,\"1004787009214\":1480585069067,\"1021887715868\":1478686804065,\"1021501448549\":1478686417007,\"4968538003\":1509788624160,\"1021285056005\":1465469681396,\"1012739030181\":1478686804017,\"1024528448905\":1509788624471,\"1024528448904\":1509788624471,\"1023071601918\":1509788625155,\"1024528448907\":1509788624471,\"1024528448906\":1509788624471,\"1021890599492\":1478686417054,\"1024528448909\":1509788624471,\"1024528448908\":1509788624471,\"1024528448911\":1509788624471,\"1024530415084\":1509788624477,\"1023071601912\":1509788625155,\"1024528448897\":1509788624471,\"1023071601911\":1509788625156,\"1023071601910\":1509788625156,\"1025428109154\":1509788624363,\"1024528448898\":1509788624471,\"1024528448901\":1509788624471,\"1025428109156\":1509788624367,\"1023071601906\":1509788625155,\"1000356388549\":1478950494932,\"1024528448903\":1509788624471,\"1024528448902\":1509788624471,\"1024528448923\":1509788624471,\"1024530415091\":1509788624413,\"1024528448913\":1509788624471,\"1021359766270\":1478686417006,\"1006898616547\":1509788624388,\"1024528448919\":1509788624471,\"1024528448918\":1509788624471,\"1024528448936\":1509788624471,\"1025607941619\":1509788624428,\"1024528448938\":1509788624471,\"1022092316282\":1478686417012,\"482863907\":1478686804068,\"1021776040336\":1509788624395,\"1025607941621\":1509788624425,\"1024528448941\":1509788624471,\"1025607941620\":1509788624431,\"1024528448940\":1509788624471,\"1024528448943\":1509788624471,\"1024528448942\":1509788624471,\"1024528448928\":1509788624471,\"1010812694048\":1509788624276,\"1023821453213\":1491634246536,\"1024745627780\":1509788624342,\"1025100438438\":1509788624181,\"1022073311040\":1478686417012,\"1025191527743\":1509788624922,\"1025874800117\":1509788667845,\"1021025272118\":1509788624276,\"1024333154286\":1509788625031,\"472245281\":1478686804033,\"1021000237235\":1478686417230,\"1022080254045\":1509788624190,\"1022053388244\":1478686417172,\"1022646936135\":1480585069154,\"1022646936131\":1480585069154,\"1024161713163\":1509788667562,\"1700896078\":1491634246508,\"1021936339080\":1509788624978,\"1022646936106\":1480585069154,\"1023926574702\":1491634246528,\"1022646936098\":1480585069154,\"1022291213814\":1478686417286,\"1022646936119\":1480585069154,\"1021709720084\":1509788624396,\"1022646936112\":1480585069154,\"1022646936077\":1480585069154,\"1022646936075\":1480585069154,\"1008058190972\":1480585069066,\"1008058190974\":1480585069066,\"1023821453317\":1491634246536,\"1022000302966\":1478686417157,\"1022646936066\":1480585069154,\"1022646936065\":1480585069154,\"1022646936094\":1480585069154,\"1022646936092\":1480585069154,\"1021882209399\":1478686417137,\"1022646936084\":1480585069154,\"1020995911816\":1478686417088,\"1022646936082\":1480585069154,\"1021750615429\":1509788624395,\"1022000302949\":1478686417157,\"1022646936080\":1480585069154,\"1022646936299\":1480585069155,\"1022460688140\":1478686417298,\"1021696219580\":1509788624404,\"1022646936295\":1480585069155,\"1022646936293\":1480585069155,\"1022646936288\":1480585069155,\"1022646936316\":1480585069155,\"1025910842736\":1509788667459,\"1021977103085\":1478686417010,\"1022646936313\":1480585069155,\"1024462520001\":1509788624987,\"1024502100333\":1509788625070,\"1022646936310\":1480585069155,\"1025500724460\":1509788624295,\"1022646936308\":1480585069155,\"1022646936307\":1480585069155,\"1021195533199\":1464448510787,\"1022646936305\":1480585069155,\"1024132352833\":1509788624324,\"1024132352832\":1509788624324,\"1024132352844\":1509788624324,\"1020836009687\":1478686417078,\"1024132352841\":1509788624324,\"1021226073489\":1478686417003,\"1020251829219\":1465470268317,\"1022646936284\":1480585069155,\"1021576028917\":1509788624401,\"1022646936281\":1480585069155,\"1022646936280\":1480585069155,\"1022711162380\":1509788624349,\"1025296646181\":1509788624507,\"1022646936239\":1480585069154,\"1020087728603\":1509788625078,\"1020087728600\":1509788625078,\"1022646936236\":1480585069154,\"1022646936235\":1480585069154,\"1022646936234\":1480585069154,\"1022646936233\":1480585069154,\"1022646936229\":1480585069154,\"5208526527\":1532526019715,\"1021299995162\":1480585069071,\"1022646936225\":1480585069154,\"1020792492999\":1478686804039,\"1024132352822\":1509788624325,\"1021846819567\":1509788625084,\"1024132352818\":1509788624324,\"1022646936247\":1480585069155,\"1022646936246\":1480585069155,\"1018179348483\":1509788624284,\"1024132352828\":1509788624325,\"1022646936244\":1480585069155,\"1299428782\":1444487341747,\"1022646936242\":1480585069155,\"1009839499049\":1491634246520,\"1022646936241\":1480585069155,\"1022646936205\":1480585069154,\"1023277905943\":1509788625041,\"1024161713357\":1509788667562,\"1022646936197\":1480585069154,\"1025596797527\":1509788624930,\"4965654280\":1509788624159,\"1024926767739\":1509788624189,\"1017230733235\":1465470268315,\"1022646936221\":1480585069154,\"1024926767740\":1509788624189,\"1023165841787\":1509788625044,\"1022646936212\":1480585069154,\"1022646936431\":1480585069155,\"1021195532816\":1464448510787,\"1021152934042\":1465470268183,\"1009264952585\":1478686804055,\"1023154045270\":1509788624325,\"1022065708597\":1478686417175,\"1022646936422\":1480585069155,\"1022646936419\":1480585069155,\"1018194946244\":1509788624284,\"1022646936416\":1480585069155,\"1020886730859\":1509788624176,\"1020886730862\":1509788624177,\"1020886730860\":1509788624177,\"1020886730861\":1509788624177,\"1022646936434\":1480585069155,\"1025671247627\":1509788624428,\"1025671247630\":1509788624406,\"1025671247629\":1509788624425,\"1022646936392\":1480585069155,\"1025671247628\":1509788624431,\"1021944990061\":1478686417144,\"1022646936388\":1480585069155,\"1023949115866\":1509788667493,\"1021872248213\":1478686417136,\"1024926768037\":1509788624415,\"1022646936414\":1480585069155,\"1022646936413\":1480585069155,\"1022646936411\":1480585069155,\"1022646936410\":1480585069155,\"1022646936406\":1480585069155,\"1024926768049\":1509788624415,\"1025632187811\":1509788624999,\"1022646936402\":1480585069155,\"1022646936400\":1480585069155,\"1021950495058\":1478686417145,\"1023154045205\":1509788624325,\"1021786529437\":1509788625068,\"1024055941080\":1509788624969,\"1023252612920\":1509788625042,\"1022038445982\":1509788624899,\"1022646936379\":1480585069155,\"1025671247743\":1509788624823,\"1025671247742\":1509788624832,\"1025671247741\":1509788624828,\"1022646936374\":1480585069155,\"1021941058008\":1478686417055,\"1377938301\":1478686804029,\"1016565811641\":1478686804046,\"1022646936332\":1480585069155,\"1022646936328\":1480585069155,\"1025530740711\":1509788624407,\"1022646936322\":1480585069155,\"1025530740710\":1509788624431,\"1022711162837\":1509788624349,\"1025530740709\":1509788624425,\"1025530740708\":1509788624428,\"1021825454089\":1509788624995,\"1023483426242\":1509788625081,\"1021060268657\":1478686417093,\"1022243896291\":1478686417066,\"1018763397789\":1478686804022,\"1023154045227\":1509788624325,\"1022566984915\":1509788624539,\"1021150574650\":1478686417097,\"1021971991340\":1478686417150,\"1002276365618\":1478686416993,\"1021971991328\":1478686417150,\"1021971991335\":1478686417150,\"1022519143324\":1509788625064,\"1024161713591\":1509788667562,\"1414507987\":1491634246533,\"1021971991348\":1478686417150,\"1022447056870\":1478686417071,\"1020957510785\":1478686417085,\"1025671247744\":1509788624745,\"1020745830512\":1509788624285,\"1021037462483\":1478686417035,\"1020745830513\":1509788624285,\"1020745830514\":1509788624285,\"1020745830515\":1509788624285,\"1020745830509\":1509788624285,\"1020745830510\":1509788624285,\"1020745830511\":1509788624285,\"1018553688031\":1478686804033,\"1020745830506\":1509788624285,\"1020745830507\":1509788624285,\"1020745830500\":1509788624285,\"1020745830501\":1509788624285,\"1020745830502\":1509788624285,\"1020745830503\":1509788624285,\"1021984836186\":1478686417264,\"1020745830499\":1509788624285,\"1021096052533\":1465470268251,\"1023949115704\":1509788667493,\"1021199203600\":1465470268191,\"1021195533017\":1464448510787,\"1024008884874\":1509788667493,\"1021096052528\":1465470268251,\"1009004123250\":1478686804032,\"1022646936481\":1480585069087,\"1022646936480\":1480585069087,\"1025792355520\":1509788625007,\"4563400232\":1465469681386,\"1023154045321\":1509788624325,\"1021096052510\":1465470268251,\"1025521564884\":1509788624426,\"1025596797778\":1509788624930,\"1020294166339\":1465470268294,\"1022646936479\":1480585069087,\"1024278364835\":1509788624441,\"1024278364834\":1509788624441,\"1024278364837\":1509788624441,\"1024278364836\":1509788624441,\"1024278364838\":1509788624441,\"1022646936468\":1480585069087,\"1022646936467\":1480585069087,\"1022458328659\":1478686417016,\"1022646935660\":1480585069153,\"1022646935656\":1480585069153,\"1020504793142\":1478686804035,\"1025879384523\":1509788667715,\"1020525504235\":1478686804033,\"1020504793140\":1478686804032,\"1022646935678\":1480585069153,\"1022646935676\":1480585069153,\"1024116754656\":1509788625036,\"1024161713714\":1509788667562,\"1022646935668\":1480585069153,\"1022646935664\":1480585069153,\"1020295607465\":1509788625078,\"1022646935631\":1480585069153,\"210630313\":1478686416992,\"1510842408\":1444487341722,\"1020921334114\":1478686417081,\"1022472219346\":1480585069121,\"1000038149165\":1478686417021,\"1836816201\":1478950494926,\"1021729380617\":1478686417124,\"1022646935642\":1480585069153,\"1022425167760\":1478686417210,\"1022646935640\":1480585069153,\"1022646935636\":1480585069153,\"1022646935633\":1480585069153,\"1023008164568\":1509788625049,\"1021751271347\":1478686417051,\"1021974874331\":1509788624510,\"1021906195710\":1478686417140,\"1022208506623\":1478686804065,\"1021195532637\":1464448510787,\"1012555529138\":1478686417074,\"124386613\":1444487341752,\"4994618348\":1509788667399,\"1021928084776\":1509788624565,\"1016861375272\":1478686804066,\"1013894867535\":1478686804052,\"1024652437659\":1509788624213,\"1019297507406\":1509788624376,\"1019297507407\":1509788624376,\"1025596796988\":1509788624929,\"1000038149261\":1478686417021,\"1022646935806\":1480585069153,\"1021010985606\":1478686416987,\"1019187672616\":1480585069078,\"1022646935802\":1480585069153,\"1022646935799\":1480585069153,\"1000777316489\":1478686417018,\"1020903901423\":1478686417227,\"1022646935758\":1480585069153,\"1022646935755\":1480585069153,\"1022646935753\":1480585069153,\"1022646935748\":1480585069153,\"1022646935774\":1480585069153,\"1022646935773\":1480585069153,\"1019166044505\":1478686804020,\"1022646935771\":1480585069153,\"1022646935770\":1480585069153,\"1022646935768\":1480585069153,\"1022646935766\":1480585069153,\"1022646935762\":1480585069153,\"1025792356270\":1509788625004,\"1021721385339\":1478686804047,\"1009998222012\":1491634246514,\"1025540570326\":1509788624302,\"1022871199223\":1509788625018,\"1025540570322\":1509788624303,\"1025540570331\":1509788624302,\"1020903901375\":1478686417227,\"1022646935741\":1480585069153,\"1019297507556\":1509788624376,\"1019297507557\":1509788624376,\"1022646935737\":1480585069153,\"1022646935733\":1480585069153,\"1022646935732\":1480585069153,\"1022646935731\":1480585069153,\"1025875583169\":1509788667406,\"1025540570314\":1509788624303,\"1022646935692\":1480585069153,\"1022646935690\":1480585069153,\"1022646935686\":1480585069153,\"1024274825613\":1509788624330,\"1022646935684\":1480585069153,\"1025540570366\":1509788624302,\"1025540570361\":1509788624303,\"1022646935682\":1480585069153,\"1024668035322\":1509788625025,\"1025540570341\":1509788624302,\"1025540570340\":1509788624302,\"1025627993644\":1509788624186,\"1025627993643\":1509788624197,\"1025627993642\":1509788624204,\"1025627993641\":1509788624200,\"1021984180500\":1478686417152,\"1293400041\":1478950494922,\"1024132352228\":1509788624327,\"1022646935916\":1480585069154,\"124386412\":1444487341753,\"1024132352224\":1509788624327,\"1022646935913\":1480585069154,\"1024132352226\":1509788624327,\"1007404283418\":1478686804015,\"1021398297586\":1478686417106,\"1021298553285\":1465470268202,\"1024132352233\":1509788624327,\"1024132352232\":1509788624327,\"1022646935905\":1480585069154,\"1025540570373\":1509788624302,\"1022646935934\":1480585069154,\"1025540570372\":1509788624303,\"1022646935933\":1480585069154,\"1025540570374\":1509788624302,\"1022646935931\":1480585069154,\"1022646935927\":1480585069154,\"1022139369393\":1478686417184,\"1022646935920\":1480585069154,\"1025540570378\":1509788624303,\"1022646935885\":1480585069154,\"4968534790\":1509788624165,\"1021713652009\":1478686417250,\"1022646935882\":1480585069154,\"1022417041171\":1478686417293,\"1022646935899\":1480585069154,\"1024132352220\":1509788624326,\"1015472297228\":1509788624172,\"1022646935888\":1480585069154,\"1022646935855\":1480585069154,\"1006891144392\":1478686804025,\"1022646935852\":1480585069154,\"1022918250752\":1509788625052,\"1024008884230\":1509788667493,\"1022646935847\":1480585069154,\"1022646935844\":1480585069154,\"1022646935843\":1480585069154,\"1009264953158\":1478686804055,\"1021498305961\":1478686417007,\"1022646935840\":1480585069154,\"1012118412615\":1478686416993,\"1022646935857\":1480585069154,\"1021502631422\":1509788625004,\"1025792355917\":1509788625007,\"139457327\":1478950494905,\"1024278364211\":1509788625145,\"1024278364210\":1509788625145,\"1024278364213\":1509788625145,\"1022646935818\":1480585069153,\"1024278364212\":1509788625145,\"1025604268367\":1509788625084,\"1022646935816\":1480585069153,\"1022646935814\":1480585069153,\"1024278364216\":1509788625145,\"1022646935810\":1480585069153,\"1022208637920\":1480585069087,\"1020962622850\":1478686417033,\"1023796028773\":1509788624420,\"1022646935834\":1480585069153,\"1022646935827\":1480585069153,\"1025596797383\":1509788624930,\"1022015115080\":1509788625067,\"1017801671385\":1444487341760,\"1025033196499\":1509788625203,\"1019889683776\":1509788624369,\"1023638744825\":1509788624948,\"1025033196507\":1509788625203,\"1022646936037\":1480585069154,\"1022646936036\":1480585069154,\"1025033196504\":1509788625203,\"1025033196511\":1509788625203,\"1021917729896\":1509788624535,\"1025033196481\":1509788625204,\"1021411011500\":1478686417043,\"1025033196485\":1509788625204,\"1008117564160\":1478686804030,\"1015912297057\":1480585069075,\"1025879384159\":1509788667689,\"1025033196492\":1509788625204,\"1022090871313\":1478686417062,\"1021237345586\":1478686417039,\"1021471043365\":1509788624405,\"1025033196528\":1509788625203,\"1022646936011\":1480585069154,\"1010194173709\":1478686804055,\"1025033196534\":1509788625203,\"1022090871318\":1478686417062,\"1022646936009\":1480585069154,\"1021195532469\":1464448510787,\"1025033196532\":1509788625203,\"1025033196538\":1509788625204,\"1022646936004\":1480585069154,\"1025033196536\":1509788625203,\"1022646936003\":1480585069154,\"1025033196543\":1509788625203,\"1022646936002\":1480585069154,\"1025033196542\":1509788625204,\"1022646936001\":1480585069154,\"1022646936000\":1480585069154,\"1022646936031\":1480585069154,\"1021998467207\":1478686417157,\"1021998467204\":1478686417156,\"1020964719972\":1478686417086,\"1025033196519\":1509788625203,\"1022392659970\":1509788624354,\"1025033196518\":1509788625203,\"1022392659969\":1509788624354,\"1022646936023\":1480585069154,\"1010194173715\":1478686804055,\"1022392659978\":1509788624354,\"1025033196524\":1509788625203,\"1020777025576\":1478686417018,\"1024278364313\":1509788624216,\"585881889\":1444487341729,\"1024278364317\":1509788624553,\"1021531595556\":1478686417113,\"1024278364289\":1509788624553,\"1022646935997\":1480585069154,\"1022646935995\":1480585069154,\"1018858947456\":1509788625081,\"1022646935994\":1480585069154,\"1022646935993\":1480585069154,\"1022396068027\":1478686417015,\"1022646935991\":1480585069154,\"1024278364301\":1509788624553,\"1024278364300\":1509788624553,\"1024278364302\":1509788624553,\"1022646935948\":1480585069154,\"1022646935947\":1480585069154,\"1025891705058\":1509788667452,\"1025033196475\":1509788625204,\"1025033196473\":1509788625202,\"1022646935939\":1480585069154,\"1025033196478\":1509788625204,\"1022646935936\":1480585069154,\"1022230133431\":1478686417065,\"1021404326766\":1478686417106,\"1024278364323\":1509788624216,\"1024278364325\":1509788624216,\"1024278364324\":1509788624216,\"1016301837146\":1480585069066,\"1024278364328\":1509788624216,\"1022230133433\":1478686417065,\"1019820214550\":1509788624376,\"1022776958633\":1509788625056,\"1021928084308\":1509788624228,\"1025557869823\":1509788624336,\"1015720018267\":1478686804046,\"1021952724435\":1478686417056,\"1024116625109\":1509788624525,\"1021653361541\":1509788624195,\"1024116625108\":1509788624525,\"1024116625105\":1509788624525,\"4982691033\":1509788624166,\"1377938955\":1478686804033,\"1025033196670\":1509788624498,\"1024116625092\":1509788624525,\"1024116625094\":1509788624525,\"4994618762\":1509788667399,\"1023222857729\":1509788624957,\"1024116625097\":1509788624525,\"1024116625096\":1509788624525,\"1024116625099\":1509788624525,\"1024002725887\":1491634246530,\"1021528845169\":1478686417007,\"1024116625079\":1509788624525,\"1021653361639\":1509788624534,\"1024116625073\":1509788624525,\"1024116625075\":1509788624525,\"1024116625085\":1509788624525,\"1015472296571\":1509788624171,\"1024116625086\":1509788624525,\"1025033196545\":1509788625203,\"1022238785175\":1509788624941,\"745656356\":1444487341724,\"1022238785174\":1509788624931,\"1022238785173\":1509788624932,\"1022238785172\":1509788624947,\"1022238785178\":1509788624972,\"1022238785176\":1509788624932,\"1025296647363\":1509788624466,\"1024661745175\":1509788624604,\"1022065707862\":1478686417175,\"1021167091406\":1478686417038,\"1024919821669\":1509788624533,\"1024116625029\":1509788624801,\"1024008886065\":1509788667494,\"1021120693013\":1478686417095,\"1024116625028\":1509788624801,\"1021120693014\":1478686417095,\"1024116625030\":1509788624801,\"1024116625027\":1509788624801,\"1024116625026\":1509788624801,\"1024116625036\":1509788624801,\"1024116625033\":1509788624801,\"1024840786391\":1509788624926,\"1024116625032\":1509788624801,\"1024116625034\":1509788624801,\"1024116625013\":1509788624801,\"1022633829846\":1480585069087,\"1024116625012\":1509788624801,\"1021919564616\":1478686417259,\"1020566659818\":1478686417074,\"1024116625011\":1509788624801,\"1023833775448\":1491634246536,\"1024116625023\":1509788624801,\"1022633829850\":1480585069079,\"1025033196739\":1509788624498,\"1025033196743\":1509788624498,\"1019125282017\":1509788625079,\"1020850426646\":1478686417078,\"1022633829838\":1480585069079,\"1022472219747\":1480585069121,\"1025033196745\":1509788624498,\"1025792354696\":1509788625007,\"1022633829834\":1480585069079,\"1025033196748\":1509788624498,\"1021027632563\":1478686417091,\"1022014982297\":1509788625068,\"1021027632564\":1478686417091,\"1303359753\":1444487341716,\"1021027632566\":1478686417091,\"1022633829873\":1480585069079,\"1021551781233\":1478686804029,\"1025033196795\":1509788624254,\"1025033196794\":1509788624254,\"1025033196793\":1509788624253,\"1025033196798\":1509788624254,\"1020850426672\":1478686417078,\"1024278366176\":1509788624850,\"1024278366179\":1509788624850,\"1022633829859\":1480585069079,\"1024278366181\":1509788624850,\"1024278366180\":1509788624850,\"123337710\":1509788624168,\"1018468752674\":1478686804037,\"1024278366184\":1509788624850,\"1018468752673\":1478686804037,\"1022633829867\":1480585069079,\"1022633829866\":1480585069079,\"1025551186894\":1509788624341,\"1018468752676\":1478686804037,\"1018468752677\":1478686804037,\"1025832723508\":1509788667443,\"1021427002854\":1509788624399,\"1025033196691\":1509788624498,\"4982690877\":1509788624165,\"1024116624945\":1509788624187,\"1025033196695\":1509788624498,\"1022633829790\":1480585069079,\"1025033196700\":1509788624498,\"1024116624935\":1509788624187,\"1025033196679\":1509788624498,\"1020999713899\":1478686417089,\"1025033196678\":1509788624498,\"1024686909473\":1509788624195,\"1024116624930\":1509788624187,\"1022107387500\":1478686417012,\"1023486177456\":1509788625038,\"1025033196681\":1509788624498,\"1004382922193\":1478686804061,\"1025033196680\":1509788624498,\"1025033196687\":1509788624498,\"1024116624917\":1509788624187,\"1025033196723\":1509788624498,\"1024116624919\":1509788624187,\"1025033196721\":1509788624498,\"1025033196727\":1509788624498,\"1024116624912\":1509788624187,\"1024116624915\":1509788624187,\"1025033196725\":1509788624498,\"1022633829808\":1480585069079,\"1025033196724\":1509788624498,\"1024116624924\":1509788624187,\"1025033196730\":1509788624498,\"1023020223686\":1509788625083,\"1024116624926\":1509788624187,\"1024116624921\":1509788624187,\"1025033196735\":1509788624498,\"1024116624920\":1509788624187,\"1024116624923\":1509788624187,\"1024116624922\":1509788624187,\"1004382922237\":1478686804061,\"1025033196715\":1509788624498,\"1020850426746\":1478686417078,\"1025033196712\":1509788624498,\"1022221483208\":1478686417192,\"1022439584719\":1478686417295,\"1024184781761\":1509788625035,\"1022439584718\":1478686417295,\"1026227114498\":1514456869793,\"1022075667863\":1478686417177,\"1023210930669\":1509788624987,\"1022784954229\":1509788624217,\"1022784954228\":1509788624217,\"1022784954231\":1509788624217,\"1022784954227\":1509788624217,\"1022784954226\":1509788624217,\"1022421889233\":1478686417293,\"1019267624148\":1509788624292,\"1022408389009\":1478686417292,\"1020294165407\":1465470268294,\"1020950563016\":1478686417033,\"1025033196819\":1509788624253,\"1001087166681\":1478686417022,\"1025033196817\":1509788624253,\"1025033196823\":1509788624253,\"1025033196820\":1509788624253,\"1025033196827\":1509788624253,\"1024248349777\":1495284743422,\"1025033196830\":1509788624254,\"1025033196803\":1509788624254,\"1019605260425\":1480585069076,\"1025033196801\":1509788624253,\"1025033196800\":1509788624254,\"1000038148951\":1478686417021,\"1025033196806\":1509788624253,\"1024313229416\":1509788624926,\"1025033196804\":1509788624253,\"1775735950\":1444487341709,\"1303359734\":1444487341734,\"1016927565867\":1478686804024,\"1025033196813\":1509788624253,\"1025033196812\":1509788624253,\"1024661745448\":1509788624604,\"1022784954165\":1509788624852,\"1022784954164\":1509788624852,\"1022784954167\":1509788624852,\"1024632646998\":1509788667473,\"1022784954163\":1509788624852,\"1022472220055\":1480585069121,\"1025033196834\":1509788624253,\"1016669883296\":1478686804053,\"1025033196839\":1509788624253,\"1025033196838\":1509788624254,\"1019704088204\":1509788624312,\"1003492170075\":1478686417220,\"1025033196841\":1509788624253,\"1022784954159\":1509788624852,\"1021595297468\":1478686417246,\"1021595297466\":1478686417246,\"1021493061855\":1478686417111,\"1021493061853\":1478686417111,\"1022394365449\":1509788624384,\"1022394365448\":1509788624384,\"1022394365445\":1509788624384,\"1022394365444\":1509788624384,\"1022394365447\":1509788624384,\"1022394365446\":1509788624384,\"1022394365443\":1509788624384,\"1021831746727\":1478686417053,\"1015016173285\":1478686804052,\"1015016173287\":1478686804053,\"1024919821491\":1509788625100,\"1019264347561\":1478686804021,\"1015016173286\":1478686804052,\"1015016173289\":1478686804053,\"1015016173288\":1478686804053,\"1015016173291\":1478686804053,\"542105060\":1478686417019,\"1015455649923\":1480585069075,\"1022059285024\":1478686417270,\"1016936479503\":1478686804067,\"1009857060102\":1491634246513,\"1022460949071\":1478686417217,\"1020068593141\":1480585069078,\"1019255827776\":1478686804047,\"1015472296956\":1509788624172,\"1000038149075\":1478686417021,\"1014712876197\":1480585069072,\"1022749564330\":1509788624379,\"1022037920516\":1478686417167,\"1009593216376\":1509788624372,\"1020390500619\":1478686804071,\"4968535491\":1509788624164,\"1019930838425\":1509788624353,\"1020390500613\":1478686804031,\"1023994992580\":1491634246529,\"1021773159281\":1509788625083,\"1018587501971\":1509788624940,\"1021653361244\":1509788624818,\"665836117\":1478686804033,\"1020390500626\":1478686804016,\"1024161712677\":1509788667562,\"1025033197137\":1509788624601,\"1015472295986\":1509788624171,\"1025033197136\":1509788624601,\"1016936478919\":1478686804067,\"1016936478918\":1478686804067,\"1021594772778\":1509788624405,\"1022711161013\":1509788624349,\"1024614035775\":1509788624923,\"1025033197120\":1509788624601,\"1022003055327\":1509788624978,\"1016444180019\":1478686804023,\"1025033197127\":1509788624602,\"1025033197124\":1509788624602,\"1025033197131\":1509788624601,\"1022429098866\":1478686417070,\"1025033197130\":1509788624602,\"1025033197135\":1509788624602,\"1021948005929\":1478686417055,\"1022472220388\":1480585069121,\"1022429098869\":1478686417071,\"1020791182624\":1478686417077,\"1021984837069\":1478686417264,\"1016927697754\":1478686804024,\"1021982477370\":1478686417151,\"1022471433943\":1478686417299,\"1025003051052\":1509788624462,\"1021885223870\":1478686417257,\"1025033197083\":1509788624601,\"1016284275173\":1480585069064,\"1022394234317\":1478686417206,\"1015513976802\":1478686804028,\"1022519143510\":1509788625064,\"1020185508219\":1478686804024,\"1024352550564\":1509788624178,\"1025033197106\":1509788624602,\"1025792355185\":1509788625008,\"1025033197111\":1509788624602,\"1025033197109\":1509788624602,\"1025033197108\":1509788624602,\"1025033197114\":1509788624602,\"1012527481302\":1478686417026,\"1025033197119\":1509788624602,\"1025033197116\":1509788624602,\"1021948005956\":1478686417055,\"1025033197090\":1509788624602,\"1024412843358\":1509788625007,\"1025033197093\":1509788624602,\"1025033197098\":1509788624602,\"1020294164691\":1465470268294,\"1025033197096\":1509788624602,\"1025033197103\":1509788624602,\"1025033197101\":1509788624602,\"1025512651582\":1509788624344,\"1004329314524\":1444487341711,\"267252075\":1491634246534,\"1015658416030\":1478686804016,\"1024161712802\":1509788667562,\"1020803371768\":1478686417030,\"1021915107460\":1478686417141,\"1021527796141\":1509788624437,\"1025596798005\":1509788624930,\"1022052338034\":1509788625075,\"1024132353398\":1509788624326,\"1007394845463\":1509788624378,\"1024917462958\":1509788624519,\"1006821938484\":1478686804040,\"1021646282899\":1478686417008,\"1020824736687\":1509788624972,\"1021660963323\":1509788624400,\"1525130313\":1478950494925,\"1024055939166\":1509788624969,\"1021989948771\":1478686417057,\"1022129800603\":1478686417013,\"1021343904481\":1478686804050,\"4657507141\":1478686416965,\"1021138124446\":1478686417233,\"1022273911370\":1478686417014,\"1021789935969\":1478686417255,\"1020900363372\":1478686417080,\"1021246912785\":1478686417100,\"1025585788854\":1509788624352,\"1025585788856\":1509788624351,\"1025512651586\":1509788624344,\"1015472296252\":1509788624171,\"1024730425682\":1509788624439,\"1024116624868\":1509788624186,\"1024116624871\":1509788624186,\"1024055939463\":1509788624969,\"1022111319395\":1478686417182,\"1024161712953\":1509788667562,\"1013208913923\":1478686804015,\"1024116624872\":1509788624186,\"1024116624853\":1509788624186,\"1022370903494\":1478686417290,\"1024116624851\":1509788624186,\"1024116624850\":1509788624186,\"1020294033799\":1465470268283,\"1024116624860\":1509788624186,\"1024919821882\":1509788624194,\"1024116624839\":1509788624186,\"1012148033383\":1478686417223,\"1024116624845\":1509788624187,\"1024116624844\":1509788624186,\"1021841446315\":1509788624394,\"1023928932668\":1509788624519,\"1020547654325\":1509788624934,\"1024116624846\":1509788624186,\"1024116624841\":1509788624187,\"1024116624843\":1509788624187,\"1024055939548\":1509788624969,\"1024116624804\":1509788624524,\"1024116624806\":1509788624524,\"1021982608720\":1478686417152,\"1024116624801\":1509788624524,\"1022033726019\":1478686417166,\"1024116624808\":1509788624524,\"1022294096585\":1478686417068,\"1024116624810\":1509788624524,\"1024116624789\":1509788624525,\"1022472220571\":1480585069121,\"1719900640\":1491634246519,\"1024116624790\":1509788624525,\"1020437686618\":1478686804065,\"1020437686617\":1478686804065,\"1024116624786\":1509788624525,\"1022129800234\":1478686417013,\"1021153984002\":1478686417038,\"1024116624798\":1509788624524,\"1024116624794\":1509788624525,\"1019996242714\":1509788624386,\"1024116624769\":1509788624525,\"1024116624768\":1509788624524,\"1019380344919\":1509788625080,\"1010026272210\":1491634246516,\"1024116624782\":1509788624525,\"1024055939345\":1509788624969,\"1024720857463\":1506339176699,\"1024402881613\":1509788624282,\"1024402881612\":1509788624300,\"1024402881614\":1509788624300,\"1012148033472\":1478686417223,\"1004789632351\":1480585069067,\"1023973627621\":1509788625017,\"1021974875393\":1509788624441,\"1023973627620\":1509788625017,\"1023731147887\":1509788624960,\"1026505572145\":1515854751199,\"1024332890550\":1509788625031,\"1022358320654\":1478686416973,\"1022358320653\":1478686416973,\"1021428051608\":1478686804026,\"1022358320652\":1478686416973,\"1023336627395\":1509788624992,\"1023336627394\":1509788624992,\"1023336627393\":1509788624992,\"1021655195707\":1509788624272,\"1021990603837\":1509788625067,\"1000356386494\":1478950494932,\"1021655195709\":1509788624272,\"1023336627398\":1509788624992,\"1021655195710\":1509788624272,\"1021655195711\":1509788624272,\"1023336627396\":1509788624992,\"1020925922491\":1478686417082,\"1025593652599\":1509788624407,\"1025593652598\":1509788624425,\"1023336627406\":1509788624992,\"1025593652597\":1509788624431,\"1936690384\":1444487341746,\"1025593652596\":1509788624428,\"1021655195721\":1509788624272,\"1023336627377\":1509788624992,\"1017244886954\":1478686804025,\"1021630030540\":1509788624397,\"1023336627382\":1509788624992,\"1023336627381\":1509788624992,\"1021655195727\":1509788624272,\"1025593652483\":1509788624823,\"1021655195713\":1509788624272,\"1025593652482\":1509788624833,\"1025593652481\":1509788624829,\"1021655195715\":1509788624272,\"1025593652487\":1509788624800,\"1021655195717\":1509788624272,\"1021655195718\":1509788624272,\"1021655195719\":1509788624272,\"1021655195736\":1509788624272,\"1025593652507\":1509788625108,\"1025593652506\":1509788625125,\"1021655195738\":1509788624272,\"1025593652505\":1509788625116,\"1023625898977\":1509788624937,\"1025593652509\":1509788625088,\"1025365328831\":1509788624456,\"1023336627371\":1509788624992,\"1021655195729\":1509788624272,\"1021655195731\":1509788624272,\"1023336627368\":1509788624992,\"1021655195732\":1509788624272,\"1021211786180\":1478686417235,\"1021655195734\":1509788624272,\"1025596798299\":1509788624929,\"1023845834488\":1491634246533,\"1025593652524\":1509788624523,\"1021655195748\":1509788624272,\"1025593652519\":1509788624537,\"1025593652518\":1509788624541,\"1024919822075\":1509788624419,\"1025593652517\":1509788624542,\"1021247961117\":1478686416992,\"1207547917\":1444487341706,\"1012689483744\":1478686416995,\"1024206276712\":1509788625034,\"1012118411748\":1478686416993,\"1022616528803\":1509788624384}"
  },
  {
    "path": "src/test/resources/everefblueprint.json",
    "content": "{\r\n  \"blueprint_type_id\": 10,\r\n  \"activities\": {\r\n    \"additionalProp1\": {\r\n      \"time\": 10,\r\n      \"materials\": {\r\n        \"additionalProp1\": {\r\n          \"type_id\": 10,\r\n          \"quantity\": 10,\r\n          \"probability\": 10\r\n        },\r\n        \"additionalProp2\": {\r\n          \"type_id\": 10,\r\n          \"quantity\": 10,\r\n          \"probability\": 10\r\n        },\r\n        \"additionalProp3\": {\r\n          \"type_id\": 10,\r\n          \"quantity\": 10,\r\n          \"probability\": 10\r\n        }\r\n      },\r\n      \"products\": {\r\n        \"additionalProp1\": {\r\n          \"type_id\": 10,\r\n          \"quantity\": 10,\r\n          \"probability\": 10\r\n        },\r\n        \"additionalProp2\": {\r\n          \"type_id\": 10,\r\n          \"quantity\": 10,\r\n          \"probability\": 10\r\n        },\r\n        \"additionalProp3\": {\r\n          \"type_id\": 10,\r\n          \"quantity\": 10,\r\n          \"probability\": 10\r\n        }\r\n      },\r\n      \"required_skills\": {\r\n        \"additionalProp1\": 10,\r\n        \"additionalProp2\": 10,\r\n        \"additionalProp3\": 10\r\n      }\r\n    },\r\n    \"additionalProp2\": {\r\n      \"time\": 10,\r\n      \"materials\": {\r\n        \"additionalProp1\": {\r\n          \"type_id\": 10,\r\n          \"quantity\": 10,\r\n          \"probability\": 10\r\n        },\r\n        \"additionalProp2\": {\r\n          \"type_id\": 10,\r\n          \"quantity\": 10,\r\n          \"probability\": 10\r\n        },\r\n        \"additionalProp3\": {\r\n          \"type_id\": 10,\r\n          \"quantity\": 10,\r\n          \"probability\": 10\r\n        }\r\n      },\r\n      \"products\": {\r\n        \"additionalProp1\": {\r\n          \"type_id\": 10,\r\n          \"quantity\": 10,\r\n          \"probability\": 10\r\n        },\r\n        \"additionalProp2\": {\r\n          \"type_id\": 10,\r\n          \"quantity\": 10,\r\n          \"probability\": 10\r\n        },\r\n        \"additionalProp3\": {\r\n          \"type_id\": 10,\r\n          \"quantity\": 10,\r\n          \"probability\": 10\r\n        }\r\n      },\r\n      \"required_skills\": {\r\n        \"additionalProp1\": 10,\r\n        \"additionalProp2\": 10,\r\n        \"additionalProp3\": 10\r\n      }\r\n    },\r\n    \"additionalProp3\": {\r\n      \"time\": 10,\r\n      \"materials\": {\r\n        \"additionalProp1\": {\r\n          \"type_id\": 10,\r\n          \"quantity\": 10,\r\n          \"probability\": 10\r\n        },\r\n        \"additionalProp2\": {\r\n          \"type_id\": 10,\r\n          \"quantity\": 10,\r\n          \"probability\": 10\r\n        },\r\n        \"additionalProp3\": {\r\n          \"type_id\": 10,\r\n          \"quantity\": 10,\r\n          \"probability\": 10\r\n        }\r\n      },\r\n      \"products\": {\r\n        \"additionalProp1\": {\r\n          \"type_id\": 10,\r\n          \"quantity\": 10,\r\n          \"probability\": 10\r\n        },\r\n        \"additionalProp2\": {\r\n          \"type_id\": 10,\r\n          \"quantity\": 10,\r\n          \"probability\": 10\r\n        },\r\n        \"additionalProp3\": {\r\n          \"type_id\": 10,\r\n          \"quantity\": 10,\r\n          \"probability\": 10\r\n        }\r\n      },\r\n      \"required_skills\": {\r\n        \"additionalProp1\": 10,\r\n        \"additionalProp2\": 10,\r\n        \"additionalProp3\": 10\r\n      }\r\n    }\r\n  },\r\n  \"max_production_limit\": 10\r\n}"
  },
  {
    "path": "src/test/resources/evereftype.json",
    "content": "{\r\n  \"type_id\": 10,\r\n  \"base_price\": 10,\r\n  \"capacity\": 10,\r\n  \"description\": {\r\n    \"additionalProp1\": \"string\",\r\n    \"additionalProp2\": \"string\",\r\n    \"additionalProp3\": \"string\"\r\n  },\r\n  \"dogma_attributes\": {\r\n    \"additionalProp1\": {\r\n      \"attribute_id\": 10,\r\n      \"value\": 10\r\n    },\r\n    \"additionalProp2\": {\r\n      \"attribute_id\": 10,\r\n      \"value\": 10\r\n    },\r\n    \"additionalProp3\": {\r\n      \"attribute_id\": 10,\r\n      \"value\": 10\r\n    }\r\n  },\r\n  \"dogma_effects\": {\r\n    \"additionalProp1\": {\r\n      \"effect_id\": 10,\r\n      \"is_default\": true\r\n    },\r\n    \"additionalProp2\": {\r\n      \"effect_id\": 10,\r\n      \"is_default\": true\r\n    },\r\n    \"additionalProp3\": {\r\n      \"effect_id\": 10,\r\n      \"is_default\": true\r\n    }\r\n  },\r\n  \"faction_id\": 10,\r\n  \"graphic_id\": 10,\r\n  \"group_id\": 10,\r\n  \"icon_id\": 10,\r\n  \"market_group_id\": 10,\r\n  \"mass\": 10,\r\n  \"masteries\": {\r\n    \"additionalProp1\": [\r\n      10\r\n    ],\r\n    \"additionalProp2\": [\r\n      10\r\n    ],\r\n    \"additionalProp3\": [\r\n      10\r\n    ]\r\n  },\r\n  \"meta_group_id\": 10,\r\n  \"name\": {\r\n    \"additionalProp1\": \"string\",\r\n    \"additionalProp2\": \"string\",\r\n    \"additionalProp3\": \"string\"\r\n  },\r\n  \"packaged_volume\": 10,\r\n  \"portion_size\": 10,\r\n  \"published\": true,\r\n  \"race_id\": 10,\r\n  \"radius\": 10,\r\n  \"sof_faction_name\": \"string\",\r\n  \"sof_material_set_id\": 10,\r\n  \"sound_id\": 10,\r\n  \"traits\": {\r\n    \"misc_bonuses\": {\r\n      \"additionalProp1\": {\r\n        \"bonus\": 10,\r\n        \"bonus_text\": {\r\n          \"additionalProp1\": \"string\",\r\n          \"additionalProp2\": \"string\",\r\n          \"additionalProp3\": \"string\"\r\n        },\r\n        \"importance\": 10,\r\n        \"is_positive\": true,\r\n        \"unit_id\": 10\r\n      },\r\n      \"additionalProp2\": {\r\n        \"bonus\": 10,\r\n        \"bonus_text\": {\r\n          \"additionalProp1\": \"string\",\r\n          \"additionalProp2\": \"string\",\r\n          \"additionalProp3\": \"string\"\r\n        },\r\n        \"importance\": 10,\r\n        \"is_positive\": true,\r\n        \"unit_id\": 10\r\n      },\r\n      \"additionalProp3\": {\r\n        \"bonus\": 10,\r\n        \"bonus_text\": {\r\n          \"additionalProp1\": \"string\",\r\n          \"additionalProp2\": \"string\",\r\n          \"additionalProp3\": \"string\"\r\n        },\r\n        \"importance\": 10,\r\n        \"is_positive\": true,\r\n        \"unit_id\": 10\r\n      }\r\n    },\r\n    \"role_bonuses\": {\r\n      \"additionalProp1\": {\r\n        \"bonus\": 10,\r\n        \"bonus_text\": {\r\n          \"additionalProp1\": \"string\",\r\n          \"additionalProp2\": \"string\",\r\n          \"additionalProp3\": \"string\"\r\n        },\r\n        \"importance\": 10,\r\n        \"is_positive\": true,\r\n        \"unit_id\": 10\r\n      },\r\n      \"additionalProp2\": {\r\n        \"bonus\": 10,\r\n        \"bonus_text\": {\r\n          \"additionalProp1\": \"string\",\r\n          \"additionalProp2\": \"string\",\r\n          \"additionalProp3\": \"string\"\r\n        },\r\n        \"importance\": 10,\r\n        \"is_positive\": true,\r\n        \"unit_id\": 10\r\n      },\r\n      \"additionalProp3\": {\r\n        \"bonus\": 10,\r\n        \"bonus_text\": {\r\n          \"additionalProp1\": \"string\",\r\n          \"additionalProp2\": \"string\",\r\n          \"additionalProp3\": \"string\"\r\n        },\r\n        \"importance\": 10,\r\n        \"is_positive\": true,\r\n        \"unit_id\": 10\r\n      }\r\n    },\r\n    \"types\": {\r\n      \"additionalProp1\": {\r\n        \"additionalProp1\": {\r\n          \"bonus\": 10,\r\n          \"bonus_text\": {\r\n            \"additionalProp1\": \"string\",\r\n            \"additionalProp2\": \"string\",\r\n            \"additionalProp3\": \"string\"\r\n          },\r\n          \"importance\": 10,\r\n          \"is_positive\": true,\r\n          \"unit_id\": 10\r\n        },\r\n        \"additionalProp2\": {\r\n          \"bonus\": 10,\r\n          \"bonus_text\": {\r\n            \"additionalProp1\": \"string\",\r\n            \"additionalProp2\": \"string\",\r\n            \"additionalProp3\": \"string\"\r\n          },\r\n          \"importance\": 10,\r\n          \"is_positive\": true,\r\n          \"unit_id\": 10\r\n        },\r\n        \"additionalProp3\": {\r\n          \"bonus\": 10,\r\n          \"bonus_text\": {\r\n            \"additionalProp1\": \"string\",\r\n            \"additionalProp2\": \"string\",\r\n            \"additionalProp3\": \"string\"\r\n          },\r\n          \"importance\": 10,\r\n          \"is_positive\": true,\r\n          \"unit_id\": 10\r\n        }\r\n      },\r\n      \"additionalProp2\": {\r\n        \"additionalProp1\": {\r\n          \"bonus\": 10,\r\n          \"bonus_text\": {\r\n            \"additionalProp1\": \"string\",\r\n            \"additionalProp2\": \"string\",\r\n            \"additionalProp3\": \"string\"\r\n          },\r\n          \"importance\": 10,\r\n          \"is_positive\": true,\r\n          \"unit_id\": 10\r\n        },\r\n        \"additionalProp2\": {\r\n          \"bonus\": 10,\r\n          \"bonus_text\": {\r\n            \"additionalProp1\": \"string\",\r\n            \"additionalProp2\": \"string\",\r\n            \"additionalProp3\": \"string\"\r\n          },\r\n          \"importance\": 10,\r\n          \"is_positive\": true,\r\n          \"unit_id\": 10\r\n        },\r\n        \"additionalProp3\": {\r\n          \"bonus\": 10,\r\n          \"bonus_text\": {\r\n            \"additionalProp1\": \"string\",\r\n            \"additionalProp2\": \"string\",\r\n            \"additionalProp3\": \"string\"\r\n          },\r\n          \"importance\": 10,\r\n          \"is_positive\": true,\r\n          \"unit_id\": 10\r\n        }\r\n      },\r\n      \"additionalProp3\": {\r\n        \"additionalProp1\": {\r\n          \"bonus\": 10,\r\n          \"bonus_text\": {\r\n            \"additionalProp1\": \"string\",\r\n            \"additionalProp2\": \"string\",\r\n            \"additionalProp3\": \"string\"\r\n          },\r\n          \"importance\": 10,\r\n          \"is_positive\": true,\r\n          \"unit_id\": 10\r\n        },\r\n        \"additionalProp2\": {\r\n          \"bonus\": 10,\r\n          \"bonus_text\": {\r\n            \"additionalProp1\": \"string\",\r\n            \"additionalProp2\": \"string\",\r\n            \"additionalProp3\": \"string\"\r\n          },\r\n          \"importance\": 10,\r\n          \"is_positive\": true,\r\n          \"unit_id\": 10\r\n        },\r\n        \"additionalProp3\": {\r\n          \"bonus\": 10,\r\n          \"bonus_text\": {\r\n            \"additionalProp1\": \"string\",\r\n            \"additionalProp2\": \"string\",\r\n            \"additionalProp3\": \"string\"\r\n          },\r\n          \"importance\": 10,\r\n          \"is_positive\": true,\r\n          \"unit_id\": 10\r\n        }\r\n      }\r\n    },\r\n    \"icon_id\": 10\r\n  },\r\n  \"variation_parent_type_id\": 10,\r\n  \"volume\": 10,\r\n  \"required_skills\": {\r\n    \"additionalProp1\": 10,\r\n    \"additionalProp2\": 10,\r\n    \"additionalProp3\": 10\r\n  },\r\n  \"applicable_mutaplasmid_type_ids\": [\r\n    10\r\n  ],\r\n  \"creating_mutaplasmid_type_ids\": [\r\n    10\r\n  ],\r\n  \"type_variations\": {\r\n    \"additionalProp1\": [\r\n      10\r\n    ],\r\n    \"additionalProp2\": [\r\n      10\r\n    ],\r\n    \"additionalProp3\": [\r\n      10\r\n    ]\r\n  },\r\n  \"ore_variations\": {\r\n    \"additionalProp1\": [\r\n      10\r\n    ],\r\n    \"additionalProp2\": [\r\n      10\r\n    ],\r\n    \"additionalProp3\": [\r\n      10\r\n    ]\r\n  },\r\n  \"is_ore\": true,\r\n  \"produced_by_blueprints\": {\r\n    \"additionalProp1\": {\r\n      \"blueprint_type_id\": 10,\r\n      \"blueprint_activity\": \"string\"\r\n    },\r\n    \"additionalProp2\": {\r\n      \"blueprint_type_id\": 10,\r\n      \"blueprint_activity\": \"string\"\r\n    },\r\n    \"additionalProp3\": {\r\n      \"blueprint_type_id\": 10,\r\n      \"blueprint_activity\": \"string\"\r\n    }\r\n  },\r\n  \"type_materials\": {\r\n    \"additionalProp1\": {\r\n      \"material_type_id\": 10,\r\n      \"quantity\": 10\r\n    },\r\n    \"additionalProp2\": {\r\n      \"material_type_id\": 10,\r\n      \"quantity\": 10\r\n    },\r\n    \"additionalProp3\": {\r\n      \"material_type_id\": 10,\r\n      \"quantity\": 10\r\n    }\r\n  },\r\n  \"can_fit_types\": [\r\n    10\r\n  ],\r\n  \"can_be_fitted_with_types\": [\r\n    10\r\n  ],\r\n  \"is_skill\": true,\r\n  \"is_mutaplasmid\": true,\r\n  \"is_dynamic_item\": true,\r\n  \"is_blueprint\": true\r\n}"
  },
  {
    "path": "src/test/resources/tracker_empty.json",
    "content": "{}"
  },
  {
    "path": "src/test/resources/tracker_filters.json",
    "content": "{\"TEST-NAME\":[{\"date\":1552492124589,\"assets\":9.0,\"escrows\":5.0,\"escrowstocover\":6.0,\"sellorders\":8.0,\"walletbalance\":10.0,\"manufacturing\":7.0,\"contractcollateral\":3.0,\"contractvalue\":4.0,\"skillpoints\":11,\"balance\":[{\"id\":\"balence-id\",\"value\":10.0}],\"asset\":[{\"location\":\"location\",\"locationid\":1000,\"flag\":\"flag\",\"value\":9.0}]}]}"
  },
  {
    "path": "src/test/resources/tracker_total.json",
    "content": "{\"TEST-NAME\":[{\"date\":1552492124589,\"assets\":1.0,\"escrows\":5.0,\"escrowstocover\":6.0,\"sellorders\":8.0,\"walletbalance\":2.0,\"manufacturing\":7.0,\"contractcollateral\":3.0,\"contractvalue\":4.0,\"skillpoints\":11}]}"
  },
  {
    "path": "tools/bugs/conn.php",
    "content": "<?php\r\nfunction con() {\r\n\treturn new PDO('mysql:host=localhost;dbname=database', 'user', 'pass');\r\n}\r\nfunction table() {\r\n\treturn \"jeveasset\";\r\n}\r\nfunction name() {\r\n\treturn \"jEveAssets\";\r\n}\r\nfunction buglink() {\r\n\treturn 'https://localhost';\r\n}\r\nfunction password() {\r\n\treturn \"pass\";\r\n}\r\n?>"
  },
  {
    "path": "tools/bugs/index.php",
    "content": "<?php\r\ninclude 'conn.php';\r\n\r\n//Get versions\r\n$dbh = con();\r\n$version_array = getArray($dbh, 'version', true);\r\n$java_array = getArray($dbh, 'java');\r\n$os_array = getArray($dbh, 'os');\r\n\r\n$admin = null !== filter_input(INPUT_GET, 'admin');\r\n\r\n$order_in = filter_input(INPUT_GET, 'order');\r\n$order = makeSafe(strtolower($order_in), array(\"date\", \"count\", \"id\", \"status\"), 'date');\r\n\r\n$desc_in = filter_input(INPUT_GET, 'desc');\r\n$desc = makeSafe(strtoupper($desc_in), array(\"DESC\", \"ASC\"), 'DESC');\r\n\r\n$version_in = filter_input(INPUT_GET, 'version');\r\n$version = makeSafe($version_in, $version_array, 'All');\r\n\r\n$java_in = filter_input(INPUT_GET, 'java');\r\n$java = makeSafe($java_in, $java_array, 'All');\r\n\r\n$os_in = filter_input(INPUT_GET, 'os');\r\n$os = makeSafe($os_in, $os_array, 'All');\r\n\r\n$wontfix = \"hide\" === filter_input(INPUT_GET, 'wontfix');\r\n$reopened = \"hide\" === filter_input(INPUT_GET, 'reopened');\r\n$new = \"hide\" === filter_input(INPUT_GET, 'new');\r\n$accepted = \"hide\" === filter_input(INPUT_GET, 'accepted');\r\n$started = \"hide\" === filter_input(INPUT_GET, 'started');\r\n$fixed = \"hide\" === filter_input(INPUT_GET, 'fixed');\r\n$fixreleased = \"hide\" === filter_input(INPUT_GET, 'fixreleased');\r\n$compact = \"hide\" === filter_input(INPUT_GET, 'compact');\r\n$javabug = \"hide\" === filter_input(INPUT_GET, 'javabug');\r\n\r\n$edit = filter_input(INPUT_POST, 'edit');\r\nif ($edit == password()) {\r\n\t$id = filter_input(INPUT_POST, 'id');\r\n\t$status = filter_input(INPUT_POST, 'status');\r\n\tupdate($dbh, $id, $status);\r\n\theader(\"Location: .?\".$_SERVER['QUERY_STRING'].\"#bugid\".$id);\r\n}\r\n\r\n$delete = filter_input(INPUT_POST, 'delete');\r\nif ($delete == password()) {\r\n\t$id = filter_input(INPUT_POST, 'id');\r\n\tdelete($dbh, $id, $status);\r\n\theader(\"Location: .?\".$_SERVER['QUERY_STRING']);\r\n}\r\n\r\n?><!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\r\n<html>\r\n<head>\r\n\t<meta http-equiv=\"cache-control\" content=\"max-age=0\" />\r\n\t<meta http-equiv=\"cache-control\" content=\"no-cache\" />\r\n\t<meta http-equiv=\"expires\" content=\"0\" />\r\n\t<meta http-equiv=\"expires\" content=\"Tue, 01 Jan 1980 1:00:00 GMT\" />\r\n\t<meta http-equiv=\"pragma\" content=\"no-cache\" />\r\n\t<title><?php echo name() . ' Bug Database' ?></title>\r\n\t<link rel=\"icon\" type=\"image/png\" href=\"favicon.ico\" />\r\n\t<link href=\"https://fonts.googleapis.com/css?family=Jura\" rel=\"stylesheet\"> \r\n\t<link href=\"https://fonts.googleapis.com/css?family=Press+Start+2P\" rel=\"stylesheet\"> \r\n\t<style>\r\n\t\th1 {\r\n\t\t\tfont-family: 'Press Start 2P', cursive;\r\n\t\t}\r\n\t\tlabel, .status {\r\n\t\t\tfont-family: 'Jura', sans-serif;\r\n\t\t}\r\n\t</style>\r\n\t<script> \r\n\tfunction toggle(id, name) {\r\n\t\tvar otherName;\r\n\t\tif (name === 'delete') {\r\n\t\t\totherName = 'edit';\r\n\t\t} else {\r\n\t\t\totherName = 'delete';\r\n\t\t}\r\n\t\tvar ele = document.getElementById(name + id);\r\n\t\tif(document.getElementById(name + id).style.display === \"inline\") {\r\n\t\t\t//Hide span\r\n\t\t\tdocument.getElementById(name + id).style.display = \"none\";\r\n\t\t\t//Update text\r\n\t\t\tdocument.getElementById('button' + name + id).value = document.getElementById('button' + name + id).value.toString().replace(\"Hide\", \"Show\");\r\n\t\t\t//Enable both buttons\r\n\t\t\tdocument.getElementById('button' + name + id).disabled = false;\r\n\t\t\tdocument.getElementById('button' + otherName + id).disabled = false;\r\n\t\t\t//document.getElementById('button' + name + id).style.display = \"inline\";\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t//document.getElementById('button' + otherName + id).style.display = \"inline\";\r\n\t\t} else {\r\n\t\t\t//Show span\r\n\t\t\tdocument.getElementById(name + id).style.display = \"inline\";\r\n\t\t\t\r\n\t\t\tdocument.getElementById('button' + name + id).value = document.getElementById('button' + name + id).value.toString().replace(\"Show\", \"Hide\");\r\n\t\t\t//Hide other span\r\n\t\t\tdocument.getElementById(otherName + id).style.display = \"none\";\r\n\t\t\t//Disable other button\r\n\t\t\t//document.getElementById('button' + otherName + id).style.display = \"none\";\r\n\t\t\tdocument.getElementById('button' + otherName + id).disabled = true;\r\n\t\t}\r\n\t}\r\n\tfunction showhide(elementId) {\r\n\t\tif(document.getElementById(elementId).style.display === \"inline\") {\r\n\t\t\t//Hide span\r\n\t\t\tdocument.getElementById(elementId).style.display = \"none\";\r\n\t\t} else {\r\n\t\t\t//Show span\r\n\t\t\tdocument.getElementById(elementId).style.display = \"inline\";\r\n\t\t}\r\n\t}\r\n\tfunction admin() {\r\n\t\tif (window.location.search.indexOf(\"admin\") < 0) {\r\n\t\t\twindow.location.search += \"&admin=admin\";\r\n\t\t} else {\r\n\t\t\twindow.location.search = window.location.search.replace(\"?admin=admin\", \"\").replace(\"&admin=admin\", \"\");\r\n\t\t}\r\n\t}\r\n\twindow.onkeyup = function(e) {\r\n\t\tvar key = e.keyCode ? e.keyCode : e.which;\r\n\t\tif (key === 65 && e.altKey) {\r\n\t\t\tadmin();\r\n\t\t}\r\n\t};\r\n \r\nwindow.addEventListener('load', function(){\r\n \tvar box1 = document.getElementById('title');\r\n\tvar startx = 0;\r\n\tvar dist = 0;\r\n\tvar minus = 0;\r\n\tvar plus = 0;\r\n\r\n\tbox1.addEventListener('touchstart', function(e){\r\n\t\tvar touchobj = e.changedTouches[0]; // reference first touch point (ie: first finger)\r\n\t\tstartx = parseInt(touchobj.clientX); // get x position of touch point relative to left edge of browser\r\n\t\tdist = 0;\r\n\t\tminus = 0;\r\n\t\tplus = 0;\r\n\t\te.preventDefault();\r\n\t}, false);\r\n\r\n\tbox1.addEventListener('touchmove', function(e){\r\n\t\tvar touchobj = e.changedTouches[0]; // reference first touch point for this event\r\n\t\tvar travled = parseInt(touchobj.clientX) - startx;\r\n\t\tif (travled < 0) {\r\n\t\t\tminus = Math.min(minus, travled);\r\n\t\t} else {\r\n\t\t\tplus = Math.max(plus, travled);\r\n\t\t}\r\n\t\tdist = Math.abs(minus) + plus;\r\n\t\te.preventDefault();\r\n\t}, false);\r\n\r\n\tbox1.addEventListener('touchend', function(e){\r\n\t\tif (Math.abs(dist) > 100) {\r\n\t\t\tadmin();\r\n\t\t}\r\n\t\te.preventDefault();\r\n\t}, false);\r\n \r\n}, false);\r\n \r\n</script>\r\n</head>\r\n<body>\r\n\t<h1 id=\"title\"><?php echo name() . ' Bug Database' ?></h1>\r\n\t<hr>\r\n<?php\r\necho '<form method=\"get\" action=\".\" style=\"display: inline;\">'.PHP_EOL;\r\necho '<input type=\"submit\" value=\"Reset\">'.PHP_EOL;\r\necho '</form>'.PHP_EOL;\r\n\r\necho '<form method=\"get\" action=\"\" style=\"display: inline;\">'.PHP_EOL;\r\n\r\necho '&nbsp;&nbsp;&nbsp;<label>'.PHP_EOL;\r\necho 'Version'.PHP_EOL;\r\nselect($version_array, 'version', $version);\r\necho '</label>'.PHP_EOL;\r\n\r\necho '&nbsp;&nbsp;&nbsp;<label>'.PHP_EOL;\r\necho 'Java'.PHP_EOL;\r\nselect($java_array, 'java', $java);\r\necho '</label>'.PHP_EOL;\r\n\r\necho '&nbsp;&nbsp;&nbsp;<label>'.PHP_EOL;\r\necho 'OS'.PHP_EOL;\r\nselect($os_array, 'os', $os);\r\necho '</label>'.PHP_EOL;\r\n\r\necho '&nbsp;&nbsp;&nbsp;<label>'.PHP_EOL;\r\necho 'Order By'.PHP_EOL;\r\nselect(array(\"Date\", \"Count\", \"ID\", \"Status\"), 'order', $order);\r\nselect(array(\"DESC\", \"ASC\"), 'desc', $desc);\r\necho '</label>'.PHP_EOL;\r\n\r\nif ($admin) {\r\n\techo '<input type=\"hidden\" name=\"admin\" value=\"admin\">'.PHP_EOL;\r\n}\r\ncheckbox($compact, 'compact', \"Compact\");\r\necho '<hr>'.PHP_EOL;\r\necho '<div>'.PHP_EOL;\r\ncheckbox($wontfix, 'wontfix', \"Won't Fix\");\r\ncheckbox($reopened, 'reopened', \"Re-Opened\");\r\ncheckbox($new, 'new', \"New\");\r\ncheckbox($accepted, 'accepted', \"Accepted\");\r\ncheckbox($started, 'started', \"Started\");\r\ncheckbox($fixed, 'fixed', \"Fixed\");\r\ncheckbox($fixreleased, 'fixreleased', \"Fix Released\");\r\ncheckbox($javabug, 'javabug', \"Java Bugs\");\r\necho '</div>'.PHP_EOL;\r\n//echo '<input type=\"submit\" value=\"Submit\">'.PHP_EOL;\r\necho '</form>'.PHP_EOL;\r\necho \"<hr>\".PHP_EOL;\r\n\r\n$sql = \"SELECT * FROM \".table();\r\n$and = false;\r\nif ($version != 'All' || $java != 'All' || $os != 'All' || $wontfix || $reopened || $new || $accepted || $started || $fixed || $fixreleased || $javabug) {\r\n\t$sql = $sql . \" WHERE \";\r\n}\r\nadd_where($sql, $and, $version, 'version');\r\nadd_where($sql, $and, $java, 'java');\r\nadd_where($sql, $and, $os, 'os');\r\ncheckbox_where($sql, $and, $wontfix, '-2');\r\ncheckbox_where($sql, $and, $reopened, '-1');\r\ncheckbox_where($sql, $and, $new, '0');\r\ncheckbox_where($sql, $and, $accepted, '1');\r\ncheckbox_where($sql, $and, $started, '2');\r\ncheckbox_where($sql, $and, $fixed, '3');\r\ncheckbox_where($sql, $and, $fixreleased, '4');\r\nsearch_where($sql, $and, $javabug, 'log', 'net.nikr');\r\n$sql = $sql.\" ORDER BY $order $desc\";\r\n\r\n$statement = $dbh->prepare($sql);\r\n$statement->execute();\r\n$rows = $statement->fetchAll(PDO::FETCH_ASSOC);\r\nforeach ($rows as &$row) {\r\n\techo '<div style=\"width: 400px; float: left;\">'.PHP_EOL;\r\n\tswitch ($row['status']) {\r\n\t\tcase -2:\r\n\t\t\techo '<span class=\"status\" style=\"background: Gainsboro;\">&nbsp;Won\\'t Fix&nbsp;</span>';\r\n\t\t\tbreak;\r\n\t\tcase -1:\r\n\t\t\techo '<span class=\"status\" style=\"background: #ff33ff;\">&nbsp;Re-Opened&nbsp;</span>';\r\n\t\t\tbreak;\r\n\t\tcase 0:\r\n\t\t\techo '<span class=\"status\" style=\"background: #cc3300;\">&nbsp;New&nbsp;</span>';\r\n\t\t\tbreak;\r\n\t\tcase 1:\r\n\t\t\techo '<span class=\"status\" style=\"background: #ff9933;\">&nbsp;Accepted&nbsp;</span>';\r\n\t\t\tbreak;\r\n\t\tcase 2:\r\n\t\t\techo '<span class=\"status\" style=\"background: #ffcc33;\">&nbsp;Started&nbsp;</span>';\r\n\t\t\tbreak;\r\n\t\tcase 3:\r\n\t\t\techo '<span class=\"status\" style=\"background: LightSkyBlue ;\">&nbsp;Fixed&nbsp;</span>';\r\n\t\t\tbreak;\r\n\t\tcase 4:\r\n\t\t\techo '<span class=\"status\" style=\"background: LimeGreen  ;\">&nbsp;Fix Released&nbsp;</span>';\r\n\t\t\tbreak;\r\n\t}\r\n\tif (strpos(format($row['log']), 'net.nikr') === false) {\r\n\t\techo ' <span class=\"status\" style=\"color: #cc3300;\">&nbsp;Java&nbsp;Bug&nbsp;</span>';\r\n\t}\r\n\techo \" <b>Date:</b> \".formatDate($row['date']);\r\n\techo \" <b>Count:</b> \";\r\n\tif ($row['count'] > 10) {\r\n\t\techo '<span style=\"border: 3px #cc3300 solid; padding: 0px 1px 0px 1px\">';\r\n\t} elseif ($row['count'] > 6) {\r\n\t\techo '<span style=\"border: 3px #ff9933 solid; padding: 0px 1px 0px 1px\">';\r\n\t} elseif ($row['count'] > 2) {\r\n\t\techo '<span style=\"border: 3px #ffcc33 solid; padding: 0px 1px 0px 1px\">';\r\n\t} else {\r\n\t\techo \"<span>\";\r\n\t}\r\n\techo format($row['count']);\r\n\techo \"</span>\";\r\n\techo ' <b>BugId:</b> <a href=\"#bugid'.format($row['id']).'\" id=\"bugid'.format($row['id']).'\">'.format($row['id']).'</a>';\r\n\techo \"</div>\".PHP_EOL;\r\n\tif ($admin) {\r\n\t\techo '<div>';\r\n\t\t//Edit\r\n\t\techo ' <input type=\"button\" onclick=\"toggle(\\''.$row['id'].'\\', \\'edit\\')\" id=\"buttonedit'.$row['id'].'\" value=\"Show Edit\" style=\"width: 110px;\"><span id=\"edit'.$row['id'].'\" style=\"display:none\">';\r\n\t\techo '<form method=\"post\" action=\"\" style=\"display: inline;\">';\r\n\t\techo ' <select name=\"status\">';\r\n\t\tif ($row['status'] == -2) {\r\n\t\t\techo '<option value=\"-2\" selected>Won\\'t Fix</option>';\r\n\t\t} else {\r\n\t\t\techo '<option value=\"-2\">Won\\'t Fix</option>';\r\n\t\t}\r\n\t\tif ($row['status'] == -1) {\r\n\t\t\techo '<option value=\"-1\" selected>Re-Opened</option>';\r\n\t\t} else {\r\n\t\t\techo '<option value=\"-1\">Re-Opened</option>';\r\n\t\t}\r\n\t\tif ($row['status'] == 0) {\r\n\t\t\techo '<option value=\"0\" selected>New</option>';\r\n\t\t} else {\r\n\t\t\techo '<option value=\"0\">New</option>';\r\n\t\t}\r\n\t\tif ($row['status'] == 1) {\r\n\t\t\techo '<option value=\"1\" selected>Accepted</option>';\r\n\t\t} else {\r\n\t\t\techo '<option value=\"1\">Accepted</option>';\r\n\t\t}\r\n\t\tif ($row['status'] == 2) {\r\n\t\t\techo '<option value=\"2\" selected>Started</option>';\r\n\t\t} else {\r\n\t\t\techo '<option value=\"2\">Started</option>';\r\n\t\t}\r\n\t\tif ($row['status'] == 3) {\r\n\t\t\techo '<option value=\"3\" selected>Fixed</option>';\r\n\t\t} else {\r\n\t\t\techo '<option value=\"3\">Fixed</option>';\r\n\t\t}\r\n\t\tif ($row['status'] == 4) {\r\n\t\t\techo '<option value=\"4\" selected>Fix Released</option>';\r\n\t\t} else {\r\n\t\t\techo '<option value=\"4\">Fix Released</option>';\r\n\t\t}\r\n\t\techo '</select>';\r\n\t\techo '<input type=\"hidden\" name=\"id\" value=\"'.$row['id'].'\">';\r\n\t\techo ' <input type=\"password\" name=\"edit\">';\r\n\t\techo ' <input type=\"submit\" value=\"Update\" style=\"display: inline;\">';\r\n\t\techo '</form>';\r\n\t\techo '</span>';\r\n\t\t//Delete\r\n\t\techo ' <input type=\"button\" onclick=\"toggle(\\''.$row['id'].'\\', \\'delete\\')\" id=\"buttondelete'.$row['id'].'\" value=\"Show Delete\" style=\"width: 110px;\"><span id=\"delete'.$row['id'].'\" style=\"display:none\">';\r\n\t\techo '<form method=\"post\" action=\"\" style=\"display: inline;\">';\r\n\t\techo '<input type=\"hidden\" name=\"id\" value=\"'.$row['id'].'\">';\r\n\t\techo ' <input type=\"password\" name=\"delete\">';\r\n\t\techo ' <input type=\"submit\" value=\"Delete\" style=\"display: inline;\">';\r\n\t\techo '</form>';\r\n\t\techo '</span>';\r\n\t\techo \"</div>\";\r\n\t}\r\n\techo '<div style=\"clear: both;\">';\r\n\techo \"<b>OS:</b> \".format_list($row['os']).\"<br>\";\r\n\techo \"<b>Java:</b> \".format_list($row['java']).\"<br>\";\r\n\techo \"<b>Version:</b> \".format_list($row['version']).\"<br>\";\r\n\tif ($compact) {\r\n\t\techo \"<b>Bug:</b><br>\";\r\n\t\techo format($row['log']);\r\n\t} else {\r\n\t\techo \"<b>Bug:</b> \".strtok($row['log'], \"\\n\").\"<br>\";\r\n\t\techo \"<button type=\\\"button\\\" onclick=\\\"showhide('log\".$row['id'].\"')\\\">Show Log</button><br><div id=\\\"log\".$row['id'].\"\\\" style=\\\"display:none\\\">\".format($row['log']).\"</div><br>\";\r\n\t}\r\n\techo \"<hr>\";\r\n\techo \"</div>\";\r\n}\r\n\r\nfunction format_space($string) {\r\n\t$string = preg_replace('/[\\r\\n]+/', '<br>', $string);\r\n\t$string = preg_replace('/\\t/', '&nbsp;&nbsp;&nbsp;&nbsp;', $string);\r\n\t$string = preg_replace('/\\s/', '&nbsp;', $string);\r\n\treturn $string;\r\n}\r\n\r\nfunction format($string) {\r\n\t$string = htmlentities($string);\r\n\t$string = format_space($string);\r\n\treturn $string;\r\n}\r\nfunction formatDate($string) {\r\n\t$db_date = new DateTime($string);\r\n    $today = new DateTime();\r\n    $interval = $db_date->diff($today);\r\n\t$string = $interval->format('%a days ago');\r\n\tif ($string == '0 days ago') {\r\n\t\treturn 'Today';\r\n\t} else {\r\n\t\treturn $string;\r\n\t}\r\n}\r\nfunction format_list($string) {\r\n\t$string = str_replace(\";\", \"&nbsp;&nbsp;&nbsp;&nbsp;\", $string);\r\n\treturn format_space($string); \r\n}\r\nfunction select($values, $name, $selected) {\r\n\techo '<select name=\"'.$name.'\" onchange=\"this.form.submit()\">'.PHP_EOL;\r\n\tforeach ($values as &$value) {\r\n\t\t$select = '';\r\n\t\tif (strtolower($selected) == strtolower($value)) {\r\n\t\t\t$select = ' selected=\"selected\"';\r\n\t\t}\r\n\t\techo '\t<option value=\"'.$value.'\"'.$select.'>'.$value.' </option>'.PHP_EOL;\r\n\t}\r\n\techo \"</select>\".PHP_EOL;\r\n}\r\nfunction makeSafe($find, $in, $default) {\r\n\t$key = array_search($find, $in);\r\n\t$value = $in[$key];\r\n\tif (empty($value)) {\r\n\t\treturn $default;\r\n\t} else {\r\n\t\treturn $value;\r\n\t}\r\n}\r\nfunction getArray($dbh, $column, $revers = false) {\r\n\t$statement = $dbh->prepare(\"SELECT $column FROM \".table());\r\n\t$statement->execute();\r\n\t$rows = $statement->fetchAll(PDO::FETCH_ASSOC);\r\n\t$array = array();\r\n\tforeach ($rows as &$row) {\r\n\t\t$temp = explode(';', $row[$column]);\r\n\t\t$temp = array_merge($temp, $array);\r\n\t\t$array = array_unique($temp);\r\n\t}\r\n\tif ($revers) {\r\n\t\trsort($array);\r\n\t} else {\r\n\t\tsort($array);\r\n\t}\r\n\tarray_unshift($array, \"All\");\r\n\treturn $array;\r\n}\r\nfunction update($dbh, $id, $status) {\r\n\t$statement = $dbh->prepare(\"UPDATE \".table().\" SET status=$status WHERE id=$id\");\r\n\t$statement->execute();\r\n}\r\nfunction delete($dbh, $id) {\r\n\t$statement = $dbh->prepare(\"DELETE FROM \".table().\" WHERE id=$id\");\r\n\t$statement->execute();\r\n}\r\nfunction add_where(&$sql, &$and, $value, $column) {\r\n\tif ($value != 'All') {\r\n\t\tif ($and) {\r\n\t\t\t$sql = $sql . \" AND \";\r\n\t\t}\r\n\t\t$sql = $sql . \" $column regexp '(^|;)$value(;|$)' \";\r\n\t\t$and = true;\r\n\t}\r\n}\r\nfunction checkbox($ignore, $value, $name) {\r\n\techo '<input type=\"hidden\" name=\"'.$value.'\" value=\"hide\">'.PHP_EOL;\r\n\t$fg = 'Black';\r\n\tswitch ($value) {\r\n\t\tcase 'wontfix':\r\n\t\t\t$bg = 'Gainsboro';\r\n\t\t\tbreak;\r\n\t\tcase 'reopened':\r\n\t\t\t$bg = '#ff33ff';\r\n\t\t\tbreak;\r\n\t\tcase 'new':\r\n\t\t\t$bg = '#cc3300';\r\n\t\t\tbreak;\r\n\t\tcase 'accepted':\r\n\t\t\t$bg = '#ff9933';\r\n\t\t\tbreak;\r\n\t\tcase 'started':\r\n\t\t\t$bg = '#ffcc33';\r\n\t\t\tbreak;\r\n\t\tcase 'fixed':\r\n\t\t\t$bg = 'LightSkyBlue';\r\n\t\t\tbreak;\r\n\t\tcase 'fixreleased':\r\n\t\t\t$bg = 'LimeGreen';\r\n\t\t\tbreak;\r\n\t\tcase 'javabug':\r\n\t\t\tif (!$ignore) {\r\n\t\t\t\t$fg = '#cc3300';\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\tif (isset($bg)) {\r\n\t\tif ($ignore) {\r\n\t\t\t//echo '<label style=\"color: '.$bg.'; border: 1px '.$bg.' solid; padding: 1px 3px 1px 3px;\"><input type=\"checkbox\" name=\"'.$value.'\" value=\"show\" onchange=\"this.form.submit()\">'.$name.'</label>'.PHP_EOL;\r\n\t\t\techo '<label style=\"border: 1px '.$bg.' solid; padding: 1px 3px 1px 3px; color: '.$fg.'\"><input type=\"checkbox\" name=\"'.$value.'\" value=\"show\" onchange=\"this.form.submit()\">'.$name.'</label>'.PHP_EOL;\r\n\t\t} else {\r\n\t\t\techo '<label style=\"background: '.$bg.'; border: 1px '.$bg.' solid; padding: 1px 3px 1px 3px; color: '.$fg.'\"\"><input type=\"checkbox\" name=\"'.$value.'\" value=\"show\" checked=\"checked\" onchange=\"this.form.submit()\">'.$name.'</label>'.PHP_EOL;\r\n\t\t}\r\n\t} else {\r\n\t\tif ($ignore) {\r\n\t\t\techo '<label style=\"padding: 2px 4px 2px 4px; color: '.$fg.'\"\"><input type=\"checkbox\" name=\"'.$value.'\" value=\"show\" onchange=\"this.form.submit()\">'.$name.'</label>'.PHP_EOL;\r\n\t\t} else {\r\n\t\t\techo '<label style=\"padding: 2px 4px 2px 4px; color: '.$fg.'\"\"><input type=\"checkbox\" name=\"'.$value.'\" value=\"show\" checked=\"checked\" onchange=\"this.form.submit()\">'.$name.'</label>'.PHP_EOL;\r\n\t\t}\r\n\t}\r\n}\r\nfunction checkbox_where(&$sql, &$and, $ignore, $value) {\r\n\tif ($ignore) {\r\n\t\tif ($and) {\r\n\t\t\t$sql = $sql . \" AND \";\r\n\t\t}\r\n\t\t$sql = $sql . \" status != $value \";\r\n\t\t$and = true;\r\n\t}\r\n}\r\nfunction search_where(&$sql, &$and, $ignore, $column, $value) {\r\n\tif ($ignore) {\r\n\t\tif ($and) {\r\n\t\t\t$sql = $sql . \" AND \";\r\n\t\t}\r\n\t\t$sql = $sql . \" $column LIKE '%$value%' \";\r\n\t\t$and = true;\r\n\t}\r\n}\r\n?>\r\n</body>\r\n</html>"
  },
  {
    "path": "tools/bugs/jeveasset.sql",
    "content": "SET SQL_MODE = \"NO_AUTO_VALUE_ON_ZERO\";\nSET time_zone = \"+00:00\";\n\n/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;\n/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;\n/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;\n/*!40101 SET NAMES utf8 */;\n\n\nCREATE TABLE IF NOT EXISTS `jeveasset` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,\n  `os` tinytext NOT NULL,\n  `java` tinytext NOT NULL,\n  `version` tinytext NOT NULL,\n  `log` text NOT NULL,\n  `count` int(11) NOT NULL,\n  `status` int(11) NOT NULL DEFAULT '0',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB  DEFAULT CHARSET=utf8;\n\n/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;\n/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;\n/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;\n"
  },
  {
    "path": "tools/bugs/submit.php",
    "content": "<?php\r\ninclude 'conn.php';\r\n\r\n$os_in = filter_input(INPUT_POST, 'os');\r\n$java_in = filter_input(INPUT_POST, 'java');\r\n$version_in = filter_input(INPUT_POST, 'version');\r\n$log_in = filter_input(INPUT_POST, 'log');\r\n\r\n//Find existing bug report\r\n$dbh = con(); //Get connection\r\n$stmt = $dbh->prepare(\"SELECT * FROM \".table().\" where log = ?\");\r\nif ($stmt->execute(array($log_in))) {\r\n\twhile ($row = $stmt->fetch()) {\r\n\t\t$foundRow = $row;\r\n\t\tbreak;\r\n\t}\r\n}\r\n\r\nif (empty($foundRow)) { //New bug report\r\n\t$count = '1';\r\n\t$stmt = $dbh->prepare(\"INSERT INTO \".table().\" (os,java,version,log,count) VALUES (:os, :java, :version, :log, :count)\");\r\n\t$stmt->bindParam(':os', $os_in);\r\n\t$stmt->bindParam(':java', $java_in);\r\n\t$stmt->bindParam(':version', $version_in);\r\n\t$stmt->bindParam(':log', $log_in);\r\n\t$stmt->bindParam(':count', $count);\r\n\t$stmt->execute();\r\n\t$id = $dbh->lastInsertId();\r\n\r\n\tprint $id;\r\n\r\n\t$to_nkr      = \"nkr@niklaskr.dk\";\r\n\t$subject_nkr = \"New \" . name() . \" bug report (BugID: \" . $id . \")\";\r\n\t$message_nkr = name() . \" bug report\\r\\n\"\r\n\t\t\t\t. \"BugID: \" . $id . \"\\r\\n\"\r\n\t\t\t\t. buglink() . \"#bugid\" . $id . \"\\r\\n\"\r\n\t\t\t\t. \"\\r\\n\"\r\n\t\t\t\t. $log_in\r\n\t\t\t\t;\r\n\t$log_fixed = str_replace(array(\"\\r\\n\", \"\\r\", \"\\n\"), \"\\n\", $log_in);\r\n\t$log_first_line = strstr($log_fixed, \"\\n\", true);\r\n\t$to_zapie      = \"jeveassets.oae2vi@zapiermail.com\";\r\n\t$subject_zapie = $log_first_line . \" (BugID: \" . $id . \")\";\r\n\t$message_zapie = name() . \" bug report\\r\\n\"\r\n\t\t\t\t. $log_first_line. \"\\r\\n\"\r\n\t\t\t\t. \"BugID: \" . $id . \"\\r\\n\"\r\n\t\t\t\t. buglink() . \"#bugid\" . $id . \"\\r\\n\"\r\n\t\t\t\t;\r\n\t$headers = \"From: nkr@niklaskr.dk\" . \"\\r\\n\" .\r\n\t\t\t \"X-Mailer: PHP/\" . phpversion();\r\n\t\r\n\tmail($to_nkr, $subject_nkr, $message_nkr, $headers);\r\n\tmail($to_zapie, $subject_zapie, $message_zapie, $headers);\r\n} else { //Old bug report - Add: count, os, java, version - Update: status\r\n\t$count = $foundRow['count'];\r\n\t$count++;\r\n\t$id = $foundRow['id'];\r\n\tif ($foundRow['status'] == 4) {\r\n\t\t$status = -1;\r\n\t} else {\r\n\t\t$status = $foundRow['status'];\r\n\t}\r\n\t$os = add($foundRow['os'], $os_in);\r\n\t$java = add($foundRow['java'], $java_in);\r\n\t$version = add($foundRow['version'], $version_in);\r\n\t$stmt = $dbh->prepare(\"UPDATE \".table().\" SET os=:os,java=:java,version=:version,count=:count,status=:status,date=current_timestamp WHERE id=:id\");\r\n\t$stmt->bindParam(':os', $os);\r\n\t$stmt->bindParam(':java', $java);\r\n\t$stmt->bindParam(':version', $version);\r\n\t$stmt->bindParam(':count', $count);\r\n\t$stmt->bindParam(':id', $id);\r\n\t$stmt->bindParam(':status', $status);\r\n\t$stmt->execute();\r\n\t\r\n\tprint $id;\r\n}\r\n\r\nfunction add($in, $add) {\r\n\t$out = explode(\";\", $in); //Split to array\r\n\t$out[] = $add; //Add new\r\n\t$out = array_unique($out); //Remove dubs\r\n\treturn implode(\";\", $out); //Return string\r\n}\r\n?>"
  },
  {
    "path": "tools/citadel/index.php",
    "content": "<?php\r\n\r\ndefine(\"FILE\", \"citadel.json\");\r\n\r\nfunction fetchURL() {\r\n\t//Update\r\n\tif (isset($_GET[\"update\"])) { //Cron job\r\n\t\tlogToFile(\"Updating CRON\");\r\n\t\tdownloadPage();\r\n\t} elseif (!file_exists(FILE)) { //New\r\n\t\tlogToFile(\"Updating NEW\");\r\n\t\tdownloadPage();\r\n\t} elseif (file_exists(FILE) && ((filemtime(FILE) + 4500) < time())) { // Update every 4500 seconds (1 hour and 15 minutes)\r\n\t\tlogToFile(\"Updating CACHE\");\r\n\t\tdownloadPage();\r\n\t}\r\n\t//Serve\r\n\tif (file_exists(FILE)) { // If cache exist\r\n\t\tob_start(); //Object: start\r\n\t\tob_start(\"ob_gzhandler\"); //GZip: start\r\n\t\techo file_get_contents(FILE); // Echo the file from cache.\r\n\t\tob_end_flush(); //GZip: end\r\n\t\theader('Content-Length: '.ob_get_length()); //Set content length of the GZip object\r\n\t\tob_end_flush(); //Object: end\r\n\t} else { // If all else fails: Redirect to the API\r\n\t\theader('Location: https://stop.hammerti.me.uk/api/citadel/all');\r\n\t}\r\n}\r\nfunction downloadPage() {\r\n\tini_set('default_socket_timeout', 20); // 20 Seconds timeout\r\n\t$url = \"https://stop.hammerti.me.uk/api/citadel/all\";\r\n\t$file = file_get_contents($url); // Fetch the file\r\n\tif ($file !== false) { //Download successful \r\n\t\tlogToFile(\"Update SUCCESSFUL\");\r\n\t\tfile_put_contents(FILE, $file, LOCK_EX); // Save the cache\r\n\t} else { //Download failed\r\n\t\tlogToFile(\"Update FAILED\");\r\n\t\ttouch(FILE); //Lets try again later\r\n\t}\r\n}\r\nfunction logToFile($log) {\r\n\tfile_put_contents('log-'.date(\"Y-m-d\").'.txt', date(\"Y-m-d H:i\").\": \".$log.PHP_EOL, FILE_APPEND);\r\n}\r\n\r\nfetchURL(); // Execute the function"
  },
  {
    "path": "tools/izpack/ProcessPanel.Spec.xml",
    "content": "<processing>\n  <job name=\"run\" final=\"true\">\n\t<os family=\"windows\" />\n    <executeclass name=\"net.nikr.izpack.RunJava\">\n        <arg>javaw</arg>\n        <arg>-jar</arg>\n        <arg>$INSTALL_PATH/jeveassets.jar</arg>\n    </executeclass>\n  </job>\n  <job name=\"run\" final=\"true\">\n\t<os family=\"unix\" />\n    <executeclass name=\"net.nikr.izpack.RunJava\">\n        <arg>java</arg>\n        <arg>-jar</arg>\n        <arg>$INSTALL_PATH/jeveassets.jar</arg>\n    </executeclass>\n  </job>\n  <job name=\"run\" final=\"true\">\n\t<os family=\"mac\" />\n    <executeclass name=\"net.nikr.izpack.RunJava\">\n        <arg>java</arg>\n        <arg>-jar</arg>\n        <arg>$INSTALL_PATH/jeveassets.jar</arg>\n    </executeclass>\n  </job>\n</processing>"
  },
  {
    "path": "tools/izpack/install.xml",
    "content": "<izpack:installation version=\"5.0\"\n\t\t\t\t\t xmlns:izpack=\"http://izpack.org/schema/installation\"\n\t\t\t\t\t xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\t\t\t\t\t xsi:schemaLocation=\"http://izpack.org/schema/installation http://izpack.org/schema/5.0/izpack-installation-5.0.xsd\">\n\t<info>\n\t\t<appname>jEveAssets</appname>\n\t\t<appversion>${project.version}</appversion>\n\t\t<appsubpath>jEveAssets</appsubpath>\n\t\t<url>https://eve.nikr.net/jeveasset</url>\n\t\t<javaversion>1.6</javaversion>\n\t\t<requiresjdk>no</requiresjdk>\n\t\t<run-privileged/>\n\t\t<uninstaller write=\"no\" />\n\t\t<writeinstallationinformation>no</writeinstallationinformation>\n\t</info>\n\n\t<dynamicvariables>\n\t\t<variable name=\"runOnExit\" value=\"${SYSTEM[runOnExit]}\"/>\n\t</dynamicvariables>\n\n\t<resources>\n\t\t<res id=\"ProcessPanel.Spec.xml\" src=\"izpack/ProcessPanel.Spec.xml\"/>\n\t</resources>\n\n\t<jar src=\"izpack/izpack-util.jar\" stage=\"install\"/>\n \n\t<conditions>\n\t\t<condition type=\"variable\" id=\"isRunOnExit\">\n\t\t\t<name>runOnExit</name>\n\t\t\t<value>true</value>\n\t\t</condition>\n\t</conditions>\n \n\t<guiprefs width=\"640\" height=\"480\" resizable=\"no\" />\n \n\t<locale>\n\t\t<langpack iso3=\"eng\" />\n\t</locale>\n \n\t<panels>\n\t\t<!--<panel classname=\"HelloPanel\" />-->\n\t\t<panel classname=\"TargetPanel\"/>\n\t\t<panel classname=\"InstallPanel\"/>\n\t\t<panel classname=\"ProcessPanel\" condition=\"isRunOnExit\"/>\n\t\t<panel classname=\"SimpleFinishPanel\" />\n\t</panels>\n \n\t<packs>\n\t\t<pack name=\"Core\" required=\"yes\" uninstall=\"no\">\n\t\t\t<description>Core installation files</description>\n\t\t\t<fileset dir=\"lib\" targetdir=\"${INSTALL_PATH}/lib\" override=\"true\">\n\t\t\t\t<include name=\"*.jar\" />\n\t\t\t</fileset>\n\t\t\t<fileset dir=\"\" targetdir=\"${INSTALL_PATH}\" override=\"true\">\n\t\t\t\t<include name=\"jeveassets.jar\" />\n\t\t\t\t<include name=\"jmemory.jar\" />\n\t\t\t\t<include name=\"*.txt\" />\n\t\t\t\t<include name=\"*.properties\" />\n\t\t\t</fileset>\n\t\t\t<updatecheck>\n\t\t\t\t<include name=\"lib/*.jar\" />\n\t\t\t\t<include name=\"log.txt\" />\n\t\t\t\t<include name=\"jeveassets.log\" />\n\t\t\t\t<include name=\"jeveassets.log.1\" />\n\t\t\t</updatecheck>\n\t\t</pack>\n\t</packs>\n</izpack:installation>\n"
  },
  {
    "path": "tools/jarfile.properties",
    "content": "jarfile=jeveassets.jar"
  },
  {
    "path": "tools/packagemanager.properties",
    "content": "### packagemanager.properties Example ###\r\n# Add this file to the jEveAssets directory,\r\n# to disable all program and static data all updates.\r\n# Allowing the package manager full control of updates\r\n\r\n# Comma separated list of package maintainers\r\nmaintainers=DenSpirit, NovaMoon\r\n\r\n#notify users of new updates on startup  [values: true|false]\r\nnotifyUpdates=true"
  },
  {
    "path": "tools/update/.htaccess",
    "content": "#\n# Disable Caching\n#\nHeader add \"Cache-Control\" \"no-cache\""
  },
  {
    "path": "tools/update/github.update",
    "content": "https://github.com/GoldenGnu/jeveassets/releases/latest/download/jeveassets-${project.version}.zip\r\ndata/"
  },
  {
    "path": "tools/update/list.php",
    "content": "<?php\r\n\r\ndirToArray(__DIR__);\r\n\r\nfunction dirToArray($dir, $fix = \"\", &$first = true) {\r\n\t$handle = opendir($dir);\r\n\twhile (($file = readdir($handle)) !== false) {\r\n\t\tif ($file == '.' || $file == '..') {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\t\tif (is_dir($dir . DIRECTORY_SEPARATOR . $file)) {\r\n\t\t\tdirToArray($dir . DIRECTORY_SEPARATOR . $file, $fix . $file . \"/\", $first);\r\n\t\t} elseif (!str_ends_with($file, \".php\") \r\n\t\t\t\t&& !str_ends_with($file, \".md5\")\r\n\t\t\t\t&& (!str_ends_with($file, \".dat\") || $file == \"data.dat\")\r\n\t\t\t\t&& !str_starts_with($file, \"installer\")\r\n\t\t\t\t&& !str_starts_with($file, \".\")\r\n\t\t\t\t&& $file != \"github.update\"\r\n\t\t\t\t) {\r\n\t\t\tif ($first) {\r\n\t\t\t\t$first = false;\r\n\t\t\t} else {\r\n\t\t\t\tprint \"\\r\\n\";\r\n\t\t\t}\r\n\t\t\tprint $fix . $file;\r\n\t\t}\r\n\t}\r\n\tclosedir($handle);\r\n}\r\n\r\n?>"
  }
]